@budibase/pro 3.8.5 → 3.8.6

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/index.js CHANGED
@@ -1,31 +1,31 @@
1
- "use strict";var jI=Object.create;var Sn=Object.defineProperty;var WI=Object.getOwnPropertyDescriptor;var $I=Object.getOwnPropertyNames;var VI=Object.getPrototypeOf,KI=Object.prototype.hasOwnProperty;var u=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),S=(e,t)=>{for(var r in t)Sn(e,r,{get:t[r],enumerable:!0})},tu=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of $I(t))!KI.call(e,a)&&a!==r&&Sn(e,a,{get:()=>t[a],enumerable:!(n=WI(t,a))||n.enumerable});return e};var O=(e,t,r)=>(r=e!=null?jI(VI(e)):{},tu(t||!e||!e.__esModule?Sn(r,"default",{value:e,enumerable:!0}):r,e)),HI=e=>tu(Sn({},"__esModule",{value:!0}),e);var Nn=u((l0,Fu)=>{"use strict";function Vb(e,t){for(var r=-1,n=t.length,a=e.length;++r<n;)e[a+r]=t[r];return e}Fu.exports=Vb});var no=u((d0,Qu)=>{"use strict";var Kb=typeof global=="object"&&global&&global.Object===Object&&global;Qu.exports=Kb});var re=u((f0,ju)=>{"use strict";var Hb=no(),Yb=typeof self=="object"&&self&&self.Object===Object&&self,Jb=Hb||Yb||Function("return this")();ju.exports=Jb});var bt=u((g0,Wu)=>{"use strict";var zb=re(),Xb=zb.Symbol;Wu.exports=Xb});var Hu=u((m0,Ku)=>{"use strict";var $u=bt(),Vu=Object.prototype,Zb=Vu.hasOwnProperty,eS=Vu.toString,kr=$u?$u.toStringTag:void 0;function tS(e){var t=Zb.call(e,kr),r=e[kr];try{e[kr]=void 0;var n=!0}catch{}var a=eS.call(e);return n&&(t?e[kr]=r:delete e[kr]),a}Ku.exports=tS});var Ju=u((y0,Yu)=>{"use strict";var rS=Object.prototype,nS=rS.toString;function aS(e){return nS.call(e)}Yu.exports=aS});var st=u((A0,Zu)=>{"use strict";var zu=bt(),oS=Hu(),sS=Ju(),iS="[object Null]",uS="[object Undefined]",Xu=zu?zu.toStringTag:void 0;function pS(e){return e==null?e===void 0?uS:iS:Xu&&Xu in Object(e)?oS(e):sS(e)}Zu.exports=pS});var ce=u((h0,ep)=>{"use strict";function cS(e){return e!=null&&typeof e=="object"}ep.exports=cS});var rp=u((I0,tp)=>{"use strict";var lS=st(),dS=ce(),fS="[object Arguments]";function gS(e){return dS(e)&&lS(e)==fS}tp.exports=gS});var Fr=u((b0,op)=>{"use strict";var np=rp(),mS=ce(),ap=Object.prototype,yS=ap.hasOwnProperty,AS=ap.propertyIsEnumerable,hS=np(function(){return arguments}())?np:function(e){return mS(e)&&yS.call(e,"callee")&&!AS.call(e,"callee")};op.exports=hS});var J=u((S0,sp)=>{"use strict";var IS=Array.isArray;sp.exports=IS});var cp=u((w0,pp)=>{"use strict";var ip=bt(),bS=Fr(),SS=J(),up=ip?ip.isConcatSpreadable:void 0;function wS(e){return SS(e)||bS(e)||!!(up&&e&&e[up])}pp.exports=wS});var ao=u((v0,dp)=>{"use strict";var vS=Nn(),ES=cp();function lp(e,t,r,n,a){var o=-1,i=e.length;for(r||(r=ES),a||(a=[]);++o<i;){var s=e[o];t>0&&r(s)?t>1?lp(s,t-1,r,n,a):vS(a,s):n||(a[a.length]=s)}return a}dp.exports=lp});var Qr=u((E0,fp)=>{"use strict";function RS(e){return e}fp.exports=RS});var Gn=u((R0,gp)=>{"use strict";function _S(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}gp.exports=_S});var oo=u((_0,yp)=>{"use strict";var xS=Gn(),mp=Math.max;function TS(e,t,r){return t=mp(t===void 0?e.length-1:t,0),function(){for(var n=arguments,a=-1,o=mp(n.length-t,0),i=Array(o);++a<o;)i[a]=n[t+a];a=-1;for(var s=Array(t+1);++a<t;)s[a]=n[a];return s[t]=r(i),xS(e,this,s)}}yp.exports=TS});var hp=u((x0,Ap)=>{"use strict";function PS(e){return function(){return e}}Ap.exports=PS});var Se=u((T0,Ip)=>{"use strict";function OS(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}Ip.exports=OS});var jr=u((P0,bp)=>{"use strict";var CS=st(),qS=Se(),LS="[object AsyncFunction]",US="[object Function]",DS="[object GeneratorFunction]",BS="[object Proxy]";function NS(e){if(!qS(e))return!1;var t=CS(e);return t==US||t==DS||t==LS||t==BS}bp.exports=NS});var wp=u((O0,Sp)=>{"use strict";var GS=re(),MS=GS["__core-js_shared__"];Sp.exports=MS});var Rp=u((C0,Ep)=>{"use strict";var so=wp(),vp=function(){var e=/[^.]+$/.exec(so&&so.keys&&so.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function kS(e){return!!vp&&vp in e}Ep.exports=kS});var io=u((q0,_p)=>{"use strict";var FS=Function.prototype,QS=FS.toString;function jS(e){if(e!=null){try{return QS.call(e)}catch{}try{return e+""}catch{}}return""}_p.exports=jS});var Tp=u((L0,xp)=>{"use strict";var WS=jr(),$S=Rp(),VS=Se(),KS=io(),HS=/[\\^$.*+?()[\]{}|]/g,YS=/^\[object .+?Constructor\]$/,JS=Function.prototype,zS=Object.prototype,XS=JS.toString,ZS=zS.hasOwnProperty,ew=RegExp("^"+XS.call(ZS).replace(HS,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function tw(e){if(!VS(e)||$S(e))return!1;var t=WS(e)?ew:YS;return t.test(KS(e))}xp.exports=tw});var Op=u((U0,Pp)=>{"use strict";function rw(e,t){return e?.[t]}Pp.exports=rw});var it=u((D0,Cp)=>{"use strict";var nw=Tp(),aw=Op();function ow(e,t){var r=aw(e,t);return nw(r)?r:void 0}Cp.exports=ow});var uo=u((B0,qp)=>{"use strict";var sw=it(),iw=function(){try{var e=sw(Object,"defineProperty");return e({},"",{}),e}catch{}}();qp.exports=iw});var Dp=u((N0,Up)=>{"use strict";var uw=hp(),Lp=uo(),pw=Qr(),cw=Lp?function(e,t){return Lp(e,"toString",{configurable:!0,enumerable:!1,value:uw(t),writable:!0})}:pw;Up.exports=cw});var po=u((G0,Bp)=>{"use strict";var lw=800,dw=16,fw=Date.now;function gw(e){var t=0,r=0;return function(){var n=fw(),a=dw-(n-r);if(r=n,a>0){if(++t>=lw)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}Bp.exports=gw});var Mn=u((M0,Np)=>{"use strict";var mw=Dp(),yw=po(),Aw=yw(mw);Np.exports=Aw});var co=u((k0,Gp)=>{"use strict";var hw=Qr(),Iw=oo(),bw=Mn();function Sw(e,t){return bw(Iw(e,t,hw),e+"")}Gp.exports=Sw});var Wr=u((F0,Mp)=>{"use strict";var ww=it(),vw=ww(Object,"create");Mp.exports=vw});var Qp=u((Q0,Fp)=>{"use strict";var kp=Wr();function Ew(){this.__data__=kp?kp(null):{},this.size=0}Fp.exports=Ew});var Wp=u((j0,jp)=>{"use strict";function Rw(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}jp.exports=Rw});var Vp=u((W0,$p)=>{"use strict";var _w=Wr(),xw="__lodash_hash_undefined__",Tw=Object.prototype,Pw=Tw.hasOwnProperty;function Ow(e){var t=this.__data__;if(_w){var r=t[e];return r===xw?void 0:r}return Pw.call(t,e)?t[e]:void 0}$p.exports=Ow});var Hp=u(($0,Kp)=>{"use strict";var Cw=Wr(),qw=Object.prototype,Lw=qw.hasOwnProperty;function Uw(e){var t=this.__data__;return Cw?t[e]!==void 0:Lw.call(t,e)}Kp.exports=Uw});var Jp=u((V0,Yp)=>{"use strict";var Dw=Wr(),Bw="__lodash_hash_undefined__";function Nw(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=Dw&&t===void 0?Bw:t,this}Yp.exports=Nw});var Xp=u((K0,zp)=>{"use strict";var Gw=Qp(),Mw=Wp(),kw=Vp(),Fw=Hp(),Qw=Jp();function Qt(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}Qt.prototype.clear=Gw;Qt.prototype.delete=Mw;Qt.prototype.get=kw;Qt.prototype.has=Fw;Qt.prototype.set=Qw;zp.exports=Qt});var ec=u((H0,Zp)=>{"use strict";function jw(){this.__data__=[],this.size=0}Zp.exports=jw});var jt=u((Y0,tc)=>{"use strict";function Ww(e,t){return e===t||e!==e&&t!==t}tc.exports=Ww});var $r=u((J0,rc)=>{"use strict";var $w=jt();function Vw(e,t){for(var r=e.length;r--;)if($w(e[r][0],t))return r;return-1}rc.exports=Vw});var ac=u((z0,nc)=>{"use strict";var Kw=$r(),Hw=Array.prototype,Yw=Hw.splice;function Jw(e){var t=this.__data__,r=Kw(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():Yw.call(t,r,1),--this.size,!0}nc.exports=Jw});var sc=u((X0,oc)=>{"use strict";var zw=$r();function Xw(e){var t=this.__data__,r=zw(t,e);return r<0?void 0:t[r][1]}oc.exports=Xw});var uc=u((Z0,ic)=>{"use strict";var Zw=$r();function ev(e){return Zw(this.__data__,e)>-1}ic.exports=ev});var cc=u((ek,pc)=>{"use strict";var tv=$r();function rv(e,t){var r=this.__data__,n=tv(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}pc.exports=rv});var Vr=u((tk,lc)=>{"use strict";var nv=ec(),av=ac(),ov=sc(),sv=uc(),iv=cc();function Wt(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}Wt.prototype.clear=nv;Wt.prototype.delete=av;Wt.prototype.get=ov;Wt.prototype.has=sv;Wt.prototype.set=iv;lc.exports=Wt});var kn=u((rk,dc)=>{"use strict";var uv=it(),pv=re(),cv=uv(pv,"Map");dc.exports=cv});var mc=u((nk,gc)=>{"use strict";var fc=Xp(),lv=Vr(),dv=kn();function fv(){this.size=0,this.__data__={hash:new fc,map:new(dv||lv),string:new fc}}gc.exports=fv});var Ac=u((ak,yc)=>{"use strict";function gv(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}yc.exports=gv});var Kr=u((ok,hc)=>{"use strict";var mv=Ac();function yv(e,t){var r=e.__data__;return mv(t)?r[typeof t=="string"?"string":"hash"]:r.map}hc.exports=yv});var bc=u((sk,Ic)=>{"use strict";var Av=Kr();function hv(e){var t=Av(this,e).delete(e);return this.size-=t?1:0,t}Ic.exports=hv});var wc=u((ik,Sc)=>{"use strict";var Iv=Kr();function bv(e){return Iv(this,e).get(e)}Sc.exports=bv});var Ec=u((uk,vc)=>{"use strict";var Sv=Kr();function wv(e){return Sv(this,e).has(e)}vc.exports=wv});var _c=u((pk,Rc)=>{"use strict";var vv=Kr();function Ev(e,t){var r=vv(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}Rc.exports=Ev});var Fn=u((ck,xc)=>{"use strict";var Rv=mc(),_v=bc(),xv=wc(),Tv=Ec(),Pv=_c();function $t(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}$t.prototype.clear=Rv;$t.prototype.delete=_v;$t.prototype.get=xv;$t.prototype.has=Tv;$t.prototype.set=Pv;xc.exports=$t});var Pc=u((lk,Tc)=>{"use strict";var Ov="__lodash_hash_undefined__";function Cv(e){return this.__data__.set(e,Ov),this}Tc.exports=Cv});var Cc=u((dk,Oc)=>{"use strict";function qv(e){return this.__data__.has(e)}Oc.exports=qv});var lo=u((fk,qc)=>{"use strict";var Lv=Fn(),Uv=Pc(),Dv=Cc();function Qn(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new Lv;++t<r;)this.add(e[t])}Qn.prototype.add=Qn.prototype.push=Uv;Qn.prototype.has=Dv;qc.exports=Qn});var Uc=u((gk,Lc)=>{"use strict";function Bv(e,t,r,n){for(var a=e.length,o=r+(n?1:-1);n?o--:++o<a;)if(t(e[o],o,e))return o;return-1}Lc.exports=Bv});var Bc=u((mk,Dc)=>{"use strict";function Nv(e){return e!==e}Dc.exports=Nv});var Gc=u((yk,Nc)=>{"use strict";function Gv(e,t,r){for(var n=r-1,a=e.length;++n<a;)if(e[n]===t)return n;return-1}Nc.exports=Gv});var kc=u((Ak,Mc)=>{"use strict";var Mv=Uc(),kv=Bc(),Fv=Gc();function Qv(e,t,r){return t===t?Fv(e,t,r):Mv(e,kv,r)}Mc.exports=Qv});var fo=u((hk,Fc)=>{"use strict";var jv=kc();function Wv(e,t){var r=e==null?0:e.length;return!!r&&jv(e,t,0)>-1}Fc.exports=Wv});var jc=u((Ik,Qc)=>{"use strict";function $v(e,t,r){for(var n=-1,a=e==null?0:e.length;++n<a;)if(r(t,e[n]))return!0;return!1}Qc.exports=$v});var go=u((bk,Wc)=>{"use strict";function Vv(e,t){return e.has(t)}Wc.exports=Vv});var mo=u((Sk,$c)=>{"use strict";var Kv=it(),Hv=re(),Yv=Kv(Hv,"Set");$c.exports=Yv});var yo=u((wk,Vc)=>{"use strict";function Jv(){}Vc.exports=Jv});var jn=u((vk,Kc)=>{"use strict";function zv(e){var t=-1,r=Array(e.size);return e.forEach(function(n){r[++t]=n}),r}Kc.exports=zv});var Yc=u((Ek,Hc)=>{"use strict";var Ao=mo(),Xv=yo(),Zv=jn(),eE=1/0,tE=Ao&&1/Zv(new Ao([,-0]))[1]==eE?function(e){return new Ao(e)}:Xv;Hc.exports=tE});var zc=u((Rk,Jc)=>{"use strict";var rE=lo(),nE=fo(),aE=jc(),oE=go(),sE=Yc(),iE=jn(),uE=200;function pE(e,t,r){var n=-1,a=nE,o=e.length,i=!0,s=[],l=s;if(r)i=!1,a=aE;else if(o>=uE){var f=t?null:sE(e);if(f)return iE(f);i=!1,a=oE,l=new rE}else l=t?[]:s;e:for(;++n<o;){var m=e[n],g=t?t(m):m;if(m=r||m!==0?m:0,i&&g===g){for(var y=l.length;y--;)if(l[y]===g)continue e;t&&l.push(g),s.push(m)}else a(l,g,r)||(l!==s&&l.push(g),s.push(m))}return s}Jc.exports=pE});var Wn=u((_k,Xc)=>{"use strict";var cE=9007199254740991;function lE(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=cE}Xc.exports=lE});var Vt=u((xk,Zc)=>{"use strict";var dE=jr(),fE=Wn();function gE(e){return e!=null&&fE(e.length)&&!dE(e)}Zc.exports=gE});var ho=u((Tk,el)=>{"use strict";var mE=Vt(),yE=ce();function AE(e){return yE(e)&&mE(e)}el.exports=AE});var rl=u((Pk,tl)=>{"use strict";var hE=ao(),IE=co(),bE=zc(),SE=ho(),wE=IE(function(e){return bE(hE(e,1,SE,!0))});tl.exports=wE});var al=u((Ok,nl)=>{"use strict";var vE=Vr();function EE(){this.__data__=new vE,this.size=0}nl.exports=EE});var sl=u((Ck,ol)=>{"use strict";function RE(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}ol.exports=RE});var ul=u((qk,il)=>{"use strict";function _E(e){return this.__data__.get(e)}il.exports=_E});var cl=u((Lk,pl)=>{"use strict";function xE(e){return this.__data__.has(e)}pl.exports=xE});var dl=u((Uk,ll)=>{"use strict";var TE=Vr(),PE=kn(),OE=Fn(),CE=200;function qE(e,t){var r=this.__data__;if(r instanceof TE){var n=r.__data__;if(!PE||n.length<CE-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new OE(n)}return r.set(e,t),this.size=r.size,this}ll.exports=qE});var Hr=u((Dk,fl)=>{"use strict";var LE=Vr(),UE=al(),DE=sl(),BE=ul(),NE=cl(),GE=dl();function Kt(e){var t=this.__data__=new LE(e);this.size=t.size}Kt.prototype.clear=UE;Kt.prototype.delete=DE;Kt.prototype.get=BE;Kt.prototype.has=NE;Kt.prototype.set=GE;fl.exports=Kt});var Yr=u((Bk,ml)=>{"use strict";var gl=uo();function ME(e,t,r){t=="__proto__"&&gl?gl(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}ml.exports=ME});var Io=u((Nk,yl)=>{"use strict";var kE=Yr(),FE=jt();function QE(e,t,r){(r!==void 0&&!FE(e[t],r)||r===void 0&&!(t in e))&&kE(e,t,r)}yl.exports=QE});var hl=u((Gk,Al)=>{"use strict";function jE(e){return function(t,r,n){for(var a=-1,o=Object(t),i=n(t),s=i.length;s--;){var l=i[e?s:++a];if(r(o[l],l,o)===!1)break}return t}}Al.exports=jE});var bo=u((Mk,Il)=>{"use strict";var WE=hl(),$E=WE();Il.exports=$E});var So=u((Jr,Ht)=>{"use strict";var VE=re(),vl=typeof Jr=="object"&&Jr&&!Jr.nodeType&&Jr,bl=vl&&typeof Ht=="object"&&Ht&&!Ht.nodeType&&Ht,KE=bl&&bl.exports===vl,Sl=KE?VE.Buffer:void 0,wl=Sl?Sl.allocUnsafe:void 0;function HE(e,t){if(t)return e.slice();var r=e.length,n=wl?wl(r):new e.constructor(r);return e.copy(n),n}Ht.exports=HE});var wo=u((kk,El)=>{"use strict";var YE=re(),JE=YE.Uint8Array;El.exports=JE});var $n=u((Fk,_l)=>{"use strict";var Rl=wo();function zE(e){var t=new e.constructor(e.byteLength);return new Rl(t).set(new Rl(e)),t}_l.exports=zE});var vo=u((Qk,xl)=>{"use strict";var XE=$n();function ZE(e,t){var r=t?XE(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}xl.exports=ZE});var Yt=u((jk,Tl)=>{"use strict";function eR(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t}Tl.exports=eR});var zr=u((Wk,Ol)=>{"use strict";var tR=Se(),Pl=Object.create,rR=function(){function e(){}return function(t){if(!tR(t))return{};if(Pl)return Pl(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();Ol.exports=rR});var Eo=u(($k,Cl)=>{"use strict";function nR(e,t){return function(r){return e(t(r))}}Cl.exports=nR});var Vn=u((Vk,ql)=>{"use strict";var aR=Eo(),oR=aR(Object.getPrototypeOf,Object);ql.exports=oR});var Kn=u((Kk,Ll)=>{"use strict";var sR=Object.prototype;function iR(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||sR;return e===r}Ll.exports=iR});var Ro=u((Hk,Ul)=>{"use strict";var uR=zr(),pR=Vn(),cR=Kn();function lR(e){return typeof e.constructor=="function"&&!cR(e)?uR(pR(e)):{}}Ul.exports=lR});var Bl=u((Yk,Dl)=>{"use strict";function dR(){return!1}Dl.exports=dR});var Zr=u((Xr,Jt)=>{"use strict";var fR=re(),gR=Bl(),Ml=typeof Xr=="object"&&Xr&&!Xr.nodeType&&Xr,Nl=Ml&&typeof Jt=="object"&&Jt&&!Jt.nodeType&&Jt,mR=Nl&&Nl.exports===Ml,Gl=mR?fR.Buffer:void 0,yR=Gl?Gl.isBuffer:void 0,AR=yR||gR;Jt.exports=AR});var _o=u((Jk,Fl)=>{"use strict";var hR=st(),IR=Vn(),bR=ce(),SR="[object Object]",wR=Function.prototype,vR=Object.prototype,kl=wR.toString,ER=vR.hasOwnProperty,RR=kl.call(Object);function _R(e){if(!bR(e)||hR(e)!=SR)return!1;var t=IR(e);if(t===null)return!0;var r=ER.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&kl.call(r)==RR}Fl.exports=_R});var jl=u((zk,Ql)=>{"use strict";var xR=st(),TR=Wn(),PR=ce(),OR="[object Arguments]",CR="[object Array]",qR="[object Boolean]",LR="[object Date]",UR="[object Error]",DR="[object Function]",BR="[object Map]",NR="[object Number]",GR="[object Object]",MR="[object RegExp]",kR="[object Set]",FR="[object String]",QR="[object WeakMap]",jR="[object ArrayBuffer]",WR="[object DataView]",$R="[object Float32Array]",VR="[object Float64Array]",KR="[object Int8Array]",HR="[object Int16Array]",YR="[object Int32Array]",JR="[object Uint8Array]",zR="[object Uint8ClampedArray]",XR="[object Uint16Array]",ZR="[object Uint32Array]",L={};L[$R]=L[VR]=L[KR]=L[HR]=L[YR]=L[JR]=L[zR]=L[XR]=L[ZR]=!0;L[OR]=L[CR]=L[jR]=L[qR]=L[WR]=L[LR]=L[UR]=L[DR]=L[BR]=L[NR]=L[GR]=L[MR]=L[kR]=L[FR]=L[QR]=!1;function e_(e){return PR(e)&&TR(e.length)&&!!L[xR(e)]}Ql.exports=e_});var Hn=u((Xk,Wl)=>{"use strict";function t_(e){return function(t){return e(t)}}Wl.exports=t_});var Yn=u((en,zt)=>{"use strict";var r_=no(),$l=typeof en=="object"&&en&&!en.nodeType&&en,tn=$l&&typeof zt=="object"&&zt&&!zt.nodeType&&zt,n_=tn&&tn.exports===$l,xo=n_&&r_.process,a_=function(){try{var e=tn&&tn.require&&tn.require("util").types;return e||xo&&xo.binding&&xo.binding("util")}catch{}}();zt.exports=a_});var Jn=u((Zk,Hl)=>{"use strict";var o_=jl(),s_=Hn(),Vl=Yn(),Kl=Vl&&Vl.isTypedArray,i_=Kl?s_(Kl):o_;Hl.exports=i_});var To=u((eF,Yl)=>{"use strict";function u_(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}Yl.exports=u_});var Po=u((tF,Jl)=>{"use strict";var p_=Yr(),c_=jt(),l_=Object.prototype,d_=l_.hasOwnProperty;function f_(e,t,r){var n=e[t];(!(d_.call(e,t)&&c_(n,r))||r===void 0&&!(t in e))&&p_(e,t,r)}Jl.exports=f_});var Xt=u((rF,zl)=>{"use strict";var g_=Po(),m_=Yr();function y_(e,t,r,n){var a=!r;r||(r={});for(var o=-1,i=t.length;++o<i;){var s=t[o],l=n?n(r[s],e[s],s,r,e):void 0;l===void 0&&(l=e[s]),a?m_(r,s,l):g_(r,s,l)}return r}zl.exports=y_});var Zl=u((nF,Xl)=>{"use strict";function A_(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}Xl.exports=A_});var rn=u((aF,ed)=>{"use strict";var h_=9007199254740991,I_=/^(?:0|[1-9]\d*)$/;function b_(e,t){var r=typeof e;return t=t??h_,!!t&&(r=="number"||r!="symbol"&&I_.test(e))&&e>-1&&e%1==0&&e<t}ed.exports=b_});var Oo=u((oF,td)=>{"use strict";var S_=Zl(),w_=Fr(),v_=J(),E_=Zr(),R_=rn(),__=Jn(),x_=Object.prototype,T_=x_.hasOwnProperty;function P_(e,t){var r=v_(e),n=!r&&w_(e),a=!r&&!n&&E_(e),o=!r&&!n&&!a&&__(e),i=r||n||a||o,s=i?S_(e.length,String):[],l=s.length;for(var f in e)(t||T_.call(e,f))&&!(i&&(f=="length"||a&&(f=="offset"||f=="parent")||o&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||R_(f,l)))&&s.push(f);return s}td.exports=P_});var nd=u((sF,rd)=>{"use strict";function O_(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}rd.exports=O_});var od=u((iF,ad)=>{"use strict";var C_=Se(),q_=Kn(),L_=nd(),U_=Object.prototype,D_=U_.hasOwnProperty;function B_(e){if(!C_(e))return L_(e);var t=q_(e),r=[];for(var n in e)n=="constructor"&&(t||!D_.call(e,n))||r.push(n);return r}ad.exports=B_});var Zt=u((uF,sd)=>{"use strict";var N_=Oo(),G_=od(),M_=Vt();function k_(e){return M_(e)?N_(e,!0):G_(e)}sd.exports=k_});var ud=u((pF,id)=>{"use strict";var F_=Xt(),Q_=Zt();function j_(e){return F_(e,Q_(e))}id.exports=j_});var gd=u((cF,fd)=>{"use strict";var pd=Io(),W_=So(),$_=vo(),V_=Yt(),K_=Ro(),cd=Fr(),ld=J(),H_=ho(),Y_=Zr(),J_=jr(),z_=Se(),X_=_o(),Z_=Jn(),dd=To(),ex=ud();function tx(e,t,r,n,a,o,i){var s=dd(e,r),l=dd(t,r),f=i.get(l);if(f){pd(e,r,f);return}var m=o?o(s,l,r+"",e,t,i):void 0,g=m===void 0;if(g){var y=ld(l),h=!y&&Y_(l),E=!y&&!h&&Z_(l);m=l,y||h||E?ld(s)?m=s:H_(s)?m=V_(s):h?(g=!1,m=W_(l,!0)):E?(g=!1,m=$_(l,!0)):m=[]:X_(l)||cd(l)?(m=s,cd(s)?m=ex(s):(!z_(s)||J_(s))&&(m=K_(l))):g=!1}g&&(i.set(l,m),a(m,l,n,o,i),i.delete(l)),pd(e,r,m)}fd.exports=tx});var Ad=u((lF,yd)=>{"use strict";var rx=Hr(),nx=Io(),ax=bo(),ox=gd(),sx=Se(),ix=Zt(),ux=To();function md(e,t,r,n,a){e!==t&&ax(t,function(o,i){if(a||(a=new rx),sx(o))ox(e,t,i,r,md,n,a);else{var s=n?n(ux(e,i),o,i+"",e,t,a):void 0;s===void 0&&(s=o),nx(e,i,s)}},ix)}yd.exports=md});var Id=u((dF,hd)=>{"use strict";var px=jt(),cx=Vt(),lx=rn(),dx=Se();function fx(e,t,r){if(!dx(r))return!1;var n=typeof t;return(n=="number"?cx(r)&&lx(t,r.length):n=="string"&&t in r)?px(r[t],e):!1}hd.exports=fx});var Sd=u((fF,bd)=>{"use strict";var gx=co(),mx=Id();function yx(e){return gx(function(t,r){var n=-1,a=r.length,o=a>1?r[a-1]:void 0,i=a>2?r[2]:void 0;for(o=e.length>3&&typeof o=="function"?(a--,o):void 0,i&&mx(r[0],r[1],i)&&(o=a<3?void 0:o,a=1),t=Object(t);++n<a;){var s=r[n];s&&e(t,s,n,o)}return t})}bd.exports=yx});var Co=u((gF,wd)=>{"use strict";var Ax=Ad(),hx=Sd(),Ix=hx(function(e,t,r){Ax(e,t,r)});wd.exports=Ix});var vf=u(oe=>{"use strict";oe.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"};oe.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"],4:["fill","setWith","updateWith"]};oe.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};oe.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2};oe.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};oe.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]};oe.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}};oe.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}};oe.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=oe.aliasToReal,r={};for(var n in t){var a=t[n];e.call(r,a)?r[a].push(n):r[a]=[n]}return r}();oe.remap={assignAll:"assign",assignAllWith:"assignWith",assignInAll:"assignIn",assignInAllWith:"assignInWith",curryN:"curry",curryRightN:"curryRight",defaultsAll:"defaults",defaultsDeepAll:"defaultsDeep",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",mergeAll:"merge",mergeAllWith:"mergeWith",padChars:"pad",padCharsEnd:"padEnd",padCharsStart:"padStart",propertyOf:"get",rangeStep:"range",rangeStepRight:"rangeRight",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart",zipAll:"zip"};oe.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};oe.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}});var Ts=u((BQ,Ef)=>{"use strict";Ef.exports={}});var Tf=u((NQ,xf)=>{"use strict";var $=vf(),tP=Ts(),Rf=Array.prototype.push;function rP(e,t){return t==2?function(r,n){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}function Ps(e,t){return t==2?function(r,n){return e(r,n)}:function(r){return e(r)}}function _f(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}function nP(e){return function(t){return e({},t)}}function aP(e,t){return function(){for(var r=arguments.length,n=r-1,a=Array(r);r--;)a[r]=arguments[r];var o=a[t],i=a.slice(0,t);return o&&Rf.apply(i,o),t!=n&&Rf.apply(i,a.slice(t+1)),e.apply(this,i)}}function Os(e,t){return function(){var r=arguments.length;if(r){for(var n=Array(r);r--;)n[r]=arguments[r];var a=n[0]=t.apply(void 0,n);return e.apply(void 0,n),a}}}function Cs(e,t,r,n){var a=typeof t=="function",o=t===Object(t);if(o&&(n=r,r=t,t=void 0),r==null)throw new TypeError;n||(n={});var i={cap:"cap"in n?n.cap:!0,curry:"curry"in n?n.curry:!0,fixed:"fixed"in n?n.fixed:!0,immutable:"immutable"in n?n.immutable:!0,rearg:"rearg"in n?n.rearg:!0},s=a?r:tP,l="curry"in n&&n.curry,f="fixed"in n&&n.fixed,m="rearg"in n&&n.rearg,g=a?r.runInContext():void 0,y=a?r:{ary:e.ary,assign:e.assign,clone:e.clone,curry:e.curry,forEach:e.forEach,isArray:e.isArray,isError:e.isError,isFunction:e.isFunction,isWeakMap:e.isWeakMap,iteratee:e.iteratee,keys:e.keys,rearg:e.rearg,toInteger:e.toInteger,toPath:e.toPath},h=y.ary,E=y.assign,T=y.clone,_=y.curry,R=y.forEach,U=y.isArray,et=y.isError,Ae=y.isFunction,tt=y.isWeakMap,Dt=y.keys,gr=y.rearg,mr=y.toInteger,UI=y.toPath,Hi=Dt($.aryMethod),DI={castArray:function(b){return function(){var A=arguments[0];return U(A)?b(_f(A)):b.apply(void 0,arguments)}},iteratee:function(b){return function(){var A=arguments[0],I=arguments[1],w=b(A,I),x=w.length;return i.cap&&typeof I=="number"?(I=I>2?I-2:1,x&&x<=I?w:Ps(w,I)):w}},mixin:function(b){return function(A){var I=this;if(!Ae(I))return b(I,Object(A));var w=[];return R(Dt(A),function(x){Ae(A[x])&&w.push([x,I.prototype[x]])}),b(I,Object(A)),R(w,function(x){var Z=x[1];Ae(Z)?I.prototype[x[0]]=Z:delete I.prototype[x[0]]}),I}},nthArg:function(b){return function(A){var I=A<0?1:mr(A)+1;return _(b(A),I)}},rearg:function(b){return function(A,I){var w=I?I.length:0;return _(b(A,I),w)}},runInContext:function(b){return function(A){return Cs(e,b(A),n)}}};function BI(b,A){if(i.cap){var I=$.iterateeRearg[b];if(I)return FI(A,I);var w=!a&&$.iterateeAry[b];if(w)return kI(A,w)}return A}function NI(b,A,I){return l||i.curry&&I>1?_(A,I):A}function Yi(b,A,I){if(i.fixed&&(f||!$.skipFixed[b])){var w=$.methodSpread[b],x=w&&w.start;return x===void 0?h(A,I):aP(A,x)}return A}function Ji(b,A,I){return i.rearg&&I>1&&(m||!$.skipRearg[b])?gr(A,$.methodRearg[b]||$.aryRearg[I]):A}function GI(b,A){A=UI(A);for(var I=-1,w=A.length,x=w-1,Z=T(Object(b)),Le=Z;Le!=null&&++I<w;){var he=A[I],Ue=Le[he];Ue!=null&&!(Ae(Ue)||et(Ue)||tt(Ue))&&(Le[he]=T(I==x?Ue:Object(Ue))),Le=Le[he]}return Z}function MI(b){return ue.runInContext.convert(b)(void 0)}function zi(b,A){var I=$.aliasToReal[b]||b,w=$.remap[I]||I,x=n;return function(Z){var Le=a?g:y,he=a?g[w]:A,Ue=E(E({},x),Z);return Cs(Le,I,he,Ue)}}function kI(b,A){return Xi(b,function(I){return typeof I=="function"?Ps(I,A):I})}function FI(b,A){return Xi(b,function(I){var w=A.length;return rP(gr(Ps(I,w),A),w)})}function Xi(b,A){return function(){var I=arguments.length;if(!I)return b();for(var w=Array(I);I--;)w[I]=arguments[I];var x=i.rearg?0:I-1;return w[x]=A(w[x]),b.apply(void 0,w)}}function Zi(b,A,I){var w,x=$.aliasToReal[b]||b,Z=A,Le=DI[x];return Le?Z=Le(A):i.immutable&&($.mutate.array[x]?Z=Os(A,_f):$.mutate.object[x]?Z=Os(A,nP(A)):$.mutate.set[x]&&(Z=Os(A,GI))),R(Hi,function(he){return R($.aryMethod[he],function(Ue){if(x==Ue){var eu=$.methodSpread[x],QI=eu&&eu.afterRearg;return w=QI?Yi(x,Ji(x,Z,he),he):Ji(x,Yi(x,Z,he),he),w=BI(x,w),w=NI(x,w,he),!1}}),!w}),w||(w=Z),w==A&&(w=l?_(w,1):function(){return A.apply(this,arguments)}),w.convert=zi(x,A),w.placeholder=A.placeholder=I,w}if(!o)return Zi(t,r,s);var ue=r,yr=[];return R(Hi,function(b){R($.aryMethod[b],function(A){var I=ue[$.remap[A]||A];I&&yr.push([A,Zi(A,I,ue)])})}),R(Dt(ue),function(b){var A=ue[b];if(typeof A=="function"){for(var I=yr.length;I--;)if(yr[I][0]==b)return;A.convert=zi(b,A),yr.push([b,A])}}),R(yr,function(b){ue[b[0]]=b[1]}),ue.convert=MI,ue.placeholder=ue,R(Dt(ue),function(b){R($.realToAlias[b]||[],function(A){ue[A]=ue[b]})}),ue}xf.exports=Cs});var qs=u((GQ,Pf)=>{"use strict";var oP=it(),sP=re(),iP=oP(sP,"WeakMap");Pf.exports=iP});var Ls=u((MQ,Cf)=>{"use strict";var Of=qs(),uP=Of&&new Of;Cf.exports=uP});var Us=u((kQ,Lf)=>{"use strict";var pP=Qr(),qf=Ls(),cP=qf?function(e,t){return qf.set(e,t),e}:pP;Lf.exports=cP});var mn=u((FQ,Uf)=>{"use strict";var lP=zr(),dP=Se();function fP(e){return function(){var t=arguments;switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3]);case 5:return new e(t[0],t[1],t[2],t[3],t[4]);case 6:return new e(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var r=lP(e.prototype),n=e.apply(r,t);return dP(n)?n:r}}Uf.exports=fP});var Bf=u((QQ,Df)=>{"use strict";var gP=mn(),mP=re(),yP=1;function AP(e,t,r){var n=t&yP,a=gP(e);function o(){var i=this&&this!==mP&&this instanceof o?a:e;return i.apply(n?r:this,arguments)}return o}Df.exports=AP});var Ds=u((jQ,Nf)=>{"use strict";var hP=Math.max;function IP(e,t,r,n){for(var a=-1,o=e.length,i=r.length,s=-1,l=t.length,f=hP(o-i,0),m=Array(l+f),g=!n;++s<l;)m[s]=t[s];for(;++a<i;)(g||a<o)&&(m[r[a]]=e[a]);for(;f--;)m[s++]=e[a++];return m}Nf.exports=IP});var Bs=u((WQ,Gf)=>{"use strict";var bP=Math.max;function SP(e,t,r,n){for(var a=-1,o=e.length,i=-1,s=r.length,l=-1,f=t.length,m=bP(o-s,0),g=Array(m+f),y=!n;++a<m;)g[a]=e[a];for(var h=a;++l<f;)g[h+l]=t[l];for(;++i<s;)(y||a<o)&&(g[h+r[i]]=e[a++]);return g}Gf.exports=SP});var kf=u(($Q,Mf)=>{"use strict";function wP(e,t){for(var r=e.length,n=0;r--;)e[r]===t&&++n;return n}Mf.exports=wP});var da=u((VQ,Ff)=>{"use strict";function vP(){}Ff.exports=vP});var ga=u((KQ,Qf)=>{"use strict";var EP=zr(),RP=da(),_P=4294967295;function fa(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=_P,this.__views__=[]}fa.prototype=EP(RP.prototype);fa.prototype.constructor=fa;Qf.exports=fa});var Ns=u((HQ,Wf)=>{"use strict";var jf=Ls(),xP=yo(),TP=jf?function(e){return jf.get(e)}:xP;Wf.exports=TP});var Vf=u((YQ,$f)=>{"use strict";var PP={};$f.exports=PP});var Yf=u((JQ,Hf)=>{"use strict";var Kf=Vf(),OP=Object.prototype,CP=OP.hasOwnProperty;function qP(e){for(var t=e.name+"",r=Kf[t],n=CP.call(Kf,t)?r.length:0;n--;){var a=r[n],o=a.func;if(o==null||o==e)return a.name}return t}Hf.exports=qP});var Gs=u((zQ,Jf)=>{"use strict";var LP=zr(),UP=da();function ma(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}ma.prototype=LP(UP.prototype);ma.prototype.constructor=ma;Jf.exports=ma});var Xf=u((XQ,zf)=>{"use strict";var DP=ga(),BP=Gs(),NP=Yt();function GP(e){if(e instanceof DP)return e.clone();var t=new BP(e.__wrapped__,e.__chain__);return t.__actions__=NP(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}zf.exports=GP});var tg=u((ZQ,eg)=>{"use strict";var MP=ga(),Zf=Gs(),kP=da(),FP=J(),QP=ce(),jP=Xf(),WP=Object.prototype,$P=WP.hasOwnProperty;function ya(e){if(QP(e)&&!FP(e)&&!(e instanceof MP)){if(e instanceof Zf)return e;if($P.call(e,"__wrapped__"))return jP(e)}return new Zf(e)}ya.prototype=kP.prototype;ya.prototype.constructor=ya;eg.exports=ya});var ng=u((ej,rg)=>{"use strict";var VP=ga(),KP=Ns(),HP=Yf(),YP=tg();function JP(e){var t=HP(e),r=YP[t];if(typeof r!="function"||!(t in VP.prototype))return!1;if(e===r)return!0;var n=KP(r);return!!n&&e===n[0]}rg.exports=JP});var Ms=u((tj,ag)=>{"use strict";var zP=Us(),XP=po(),ZP=XP(zP);ag.exports=ZP});var sg=u((rj,og)=>{"use strict";var eO=/\{\n\/\* \[wrapped with (.+)\] \*/,tO=/,? & /;function rO(e){var t=e.match(eO);return t?t[1].split(tO):[]}og.exports=rO});var ug=u((nj,ig)=>{"use strict";var nO=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function aO(e,t){var r=t.length;if(!r)return e;var n=r-1;return t[n]=(r>1?"& ":"")+t[n],t=t.join(r>2?", ":" "),e.replace(nO,`{
1
+ "use strict";var $b=Object.create;var wa=Object.defineProperty;var Vb=Object.getOwnPropertyDescriptor;var Kb=Object.getOwnPropertyNames;var Yb=Object.getPrototypeOf,Hb=Object.prototype.hasOwnProperty;var u=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),S=(e,t)=>{for(var r in t)wa(e,r,{get:t[r],enumerable:!0})},ru=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Kb(t))!Hb.call(e,n)&&n!==r&&wa(e,n,{get:()=>t[n],enumerable:!(a=Vb(t,n))||a.enumerable});return e};var C=(e,t,r)=>(r=e!=null?$b(Yb(e)):{},ru(t||!e||!e.__esModule?wa(r,"default",{value:e,enumerable:!0}):r,e)),Jb=e=>ru(wa({},"__esModule",{value:!0}),e);var Ga=u((f0,Qu)=>{"use strict";function KI(e,t){for(var r=-1,a=t.length,n=e.length;++r<a;)e[n+r]=t[r];return e}Qu.exports=KI});var no=u((g0,ju)=>{"use strict";var YI=typeof global=="object"&&global&&global.Object===Object&&global;ju.exports=YI});var re=u((m0,Wu)=>{"use strict";var HI=no(),JI=typeof self=="object"&&self&&self.Object===Object&&self,zI=HI||JI||Function("return this")();Wu.exports=zI});var It=u((y0,$u)=>{"use strict";var XI=re(),ZI=XI.Symbol;$u.exports=ZI});var Hu=u((A0,Yu)=>{"use strict";var Vu=It(),Ku=Object.prototype,eS=Ku.hasOwnProperty,tS=Ku.toString,Fr=Vu?Vu.toStringTag:void 0;function rS(e){var t=eS.call(e,Fr),r=e[Fr];try{e[Fr]=void 0;var a=!0}catch{}var n=tS.call(e);return a&&(t?e[Fr]=r:delete e[Fr]),n}Yu.exports=rS});var zu=u((h0,Ju)=>{"use strict";var aS=Object.prototype,nS=aS.toString;function oS(e){return nS.call(e)}Ju.exports=oS});var st=u((b0,ep)=>{"use strict";var Xu=It(),sS=Hu(),iS=zu(),uS="[object Null]",pS="[object Undefined]",Zu=Xu?Xu.toStringTag:void 0;function cS(e){return e==null?e===void 0?pS:uS:Zu&&Zu in Object(e)?sS(e):iS(e)}ep.exports=cS});var ce=u((I0,tp)=>{"use strict";function lS(e){return e!=null&&typeof e=="object"}tp.exports=lS});var ap=u((S0,rp)=>{"use strict";var dS=st(),fS=ce(),gS="[object Arguments]";function mS(e){return fS(e)&&dS(e)==gS}rp.exports=mS});var Qr=u((w0,sp)=>{"use strict";var np=ap(),yS=ce(),op=Object.prototype,AS=op.hasOwnProperty,hS=op.propertyIsEnumerable,bS=np(function(){return arguments}())?np:function(e){return yS(e)&&AS.call(e,"callee")&&!hS.call(e,"callee")};sp.exports=bS});var X=u((v0,ip)=>{"use strict";var IS=Array.isArray;ip.exports=IS});var lp=u((E0,cp)=>{"use strict";var up=It(),SS=Qr(),wS=X(),pp=up?up.isConcatSpreadable:void 0;function vS(e){return wS(e)||SS(e)||!!(pp&&e&&e[pp])}cp.exports=vS});var oo=u((R0,fp)=>{"use strict";var ES=Ga(),RS=lp();function dp(e,t,r,a,n){var o=-1,i=e.length;for(r||(r=RS),n||(n=[]);++o<i;){var s=e[o];t>0&&r(s)?t>1?dp(s,t-1,r,a,n):ES(n,s):a||(n[n.length]=s)}return n}fp.exports=dp});var jr=u((_0,gp)=>{"use strict";function _S(e){return e}gp.exports=_S});var Ma=u((x0,mp)=>{"use strict";function xS(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}mp.exports=xS});var so=u((T0,Ap)=>{"use strict";var TS=Ma(),yp=Math.max;function PS(e,t,r){return t=yp(t===void 0?e.length-1:t,0),function(){for(var a=arguments,n=-1,o=yp(a.length-t,0),i=Array(o);++n<o;)i[n]=a[t+n];n=-1;for(var s=Array(t+1);++n<t;)s[n]=a[n];return s[t]=r(i),TS(e,this,s)}}Ap.exports=PS});var bp=u((P0,hp)=>{"use strict";function CS(e){return function(){return e}}hp.exports=CS});var Se=u((C0,Ip)=>{"use strict";function OS(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}Ip.exports=OS});var Wr=u((O0,Sp)=>{"use strict";var qS=st(),LS=Se(),US="[object AsyncFunction]",DS="[object Function]",BS="[object GeneratorFunction]",NS="[object Proxy]";function GS(e){if(!LS(e))return!1;var t=qS(e);return t==DS||t==BS||t==US||t==NS}Sp.exports=GS});var vp=u((q0,wp)=>{"use strict";var MS=re(),kS=MS["__core-js_shared__"];wp.exports=kS});var _p=u((L0,Rp)=>{"use strict";var io=vp(),Ep=function(){var e=/[^.]+$/.exec(io&&io.keys&&io.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function FS(e){return!!Ep&&Ep in e}Rp.exports=FS});var uo=u((U0,xp)=>{"use strict";var QS=Function.prototype,jS=QS.toString;function WS(e){if(e!=null){try{return jS.call(e)}catch{}try{return e+""}catch{}}return""}xp.exports=WS});var Pp=u((D0,Tp)=>{"use strict";var $S=Wr(),VS=_p(),KS=Se(),YS=uo(),HS=/[\\^$.*+?()[\]{}|]/g,JS=/^\[object .+?Constructor\]$/,zS=Function.prototype,XS=Object.prototype,ZS=zS.toString,ew=XS.hasOwnProperty,tw=RegExp("^"+ZS.call(ew).replace(HS,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function rw(e){if(!KS(e)||VS(e))return!1;var t=$S(e)?tw:JS;return t.test(YS(e))}Tp.exports=rw});var Op=u((B0,Cp)=>{"use strict";function aw(e,t){return e?.[t]}Cp.exports=aw});var it=u((N0,qp)=>{"use strict";var nw=Pp(),ow=Op();function sw(e,t){var r=ow(e,t);return nw(r)?r:void 0}qp.exports=sw});var po=u((G0,Lp)=>{"use strict";var iw=it(),uw=function(){try{var e=iw(Object,"defineProperty");return e({},"",{}),e}catch{}}();Lp.exports=uw});var Bp=u((M0,Dp)=>{"use strict";var pw=bp(),Up=po(),cw=jr(),lw=Up?function(e,t){return Up(e,"toString",{configurable:!0,enumerable:!1,value:pw(t),writable:!0})}:cw;Dp.exports=lw});var co=u((k0,Np)=>{"use strict";var dw=800,fw=16,gw=Date.now;function mw(e){var t=0,r=0;return function(){var a=gw(),n=fw-(a-r);if(r=a,n>0){if(++t>=dw)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}Np.exports=mw});var ka=u((F0,Gp)=>{"use strict";var yw=Bp(),Aw=co(),hw=Aw(yw);Gp.exports=hw});var lo=u((Q0,Mp)=>{"use strict";var bw=jr(),Iw=so(),Sw=ka();function ww(e,t){return Sw(Iw(e,t,bw),e+"")}Mp.exports=ww});var $r=u((j0,kp)=>{"use strict";var vw=it(),Ew=vw(Object,"create");kp.exports=Ew});var jp=u((W0,Qp)=>{"use strict";var Fp=$r();function Rw(){this.__data__=Fp?Fp(null):{},this.size=0}Qp.exports=Rw});var $p=u(($0,Wp)=>{"use strict";function _w(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}Wp.exports=_w});var Kp=u((V0,Vp)=>{"use strict";var xw=$r(),Tw="__lodash_hash_undefined__",Pw=Object.prototype,Cw=Pw.hasOwnProperty;function Ow(e){var t=this.__data__;if(xw){var r=t[e];return r===Tw?void 0:r}return Cw.call(t,e)?t[e]:void 0}Vp.exports=Ow});var Hp=u((K0,Yp)=>{"use strict";var qw=$r(),Lw=Object.prototype,Uw=Lw.hasOwnProperty;function Dw(e){var t=this.__data__;return qw?t[e]!==void 0:Uw.call(t,e)}Yp.exports=Dw});var zp=u((Y0,Jp)=>{"use strict";var Bw=$r(),Nw="__lodash_hash_undefined__";function Gw(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=Bw&&t===void 0?Nw:t,this}Jp.exports=Gw});var Zp=u((H0,Xp)=>{"use strict";var Mw=jp(),kw=$p(),Fw=Kp(),Qw=Hp(),jw=zp();function Qt(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var a=e[t];this.set(a[0],a[1])}}Qt.prototype.clear=Mw;Qt.prototype.delete=kw;Qt.prototype.get=Fw;Qt.prototype.has=Qw;Qt.prototype.set=jw;Xp.exports=Qt});var tc=u((J0,ec)=>{"use strict";function Ww(){this.__data__=[],this.size=0}ec.exports=Ww});var jt=u((z0,rc)=>{"use strict";function $w(e,t){return e===t||e!==e&&t!==t}rc.exports=$w});var Vr=u((X0,ac)=>{"use strict";var Vw=jt();function Kw(e,t){for(var r=e.length;r--;)if(Vw(e[r][0],t))return r;return-1}ac.exports=Kw});var oc=u((Z0,nc)=>{"use strict";var Yw=Vr(),Hw=Array.prototype,Jw=Hw.splice;function zw(e){var t=this.__data__,r=Yw(t,e);if(r<0)return!1;var a=t.length-1;return r==a?t.pop():Jw.call(t,r,1),--this.size,!0}nc.exports=zw});var ic=u((ek,sc)=>{"use strict";var Xw=Vr();function Zw(e){var t=this.__data__,r=Xw(t,e);return r<0?void 0:t[r][1]}sc.exports=Zw});var pc=u((tk,uc)=>{"use strict";var ev=Vr();function tv(e){return ev(this.__data__,e)>-1}uc.exports=tv});var lc=u((rk,cc)=>{"use strict";var rv=Vr();function av(e,t){var r=this.__data__,a=rv(r,e);return a<0?(++this.size,r.push([e,t])):r[a][1]=t,this}cc.exports=av});var Kr=u((ak,dc)=>{"use strict";var nv=tc(),ov=oc(),sv=ic(),iv=pc(),uv=lc();function Wt(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var a=e[t];this.set(a[0],a[1])}}Wt.prototype.clear=nv;Wt.prototype.delete=ov;Wt.prototype.get=sv;Wt.prototype.has=iv;Wt.prototype.set=uv;dc.exports=Wt});var Fa=u((nk,fc)=>{"use strict";var pv=it(),cv=re(),lv=pv(cv,"Map");fc.exports=lv});var yc=u((ok,mc)=>{"use strict";var gc=Zp(),dv=Kr(),fv=Fa();function gv(){this.size=0,this.__data__={hash:new gc,map:new(fv||dv),string:new gc}}mc.exports=gv});var hc=u((sk,Ac)=>{"use strict";function mv(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}Ac.exports=mv});var Yr=u((ik,bc)=>{"use strict";var yv=hc();function Av(e,t){var r=e.__data__;return yv(t)?r[typeof t=="string"?"string":"hash"]:r.map}bc.exports=Av});var Sc=u((uk,Ic)=>{"use strict";var hv=Yr();function bv(e){var t=hv(this,e).delete(e);return this.size-=t?1:0,t}Ic.exports=bv});var vc=u((pk,wc)=>{"use strict";var Iv=Yr();function Sv(e){return Iv(this,e).get(e)}wc.exports=Sv});var Rc=u((ck,Ec)=>{"use strict";var wv=Yr();function vv(e){return wv(this,e).has(e)}Ec.exports=vv});var xc=u((lk,_c)=>{"use strict";var Ev=Yr();function Rv(e,t){var r=Ev(this,e),a=r.size;return r.set(e,t),this.size+=r.size==a?0:1,this}_c.exports=Rv});var Qa=u((dk,Tc)=>{"use strict";var _v=yc(),xv=Sc(),Tv=vc(),Pv=Rc(),Cv=xc();function $t(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var a=e[t];this.set(a[0],a[1])}}$t.prototype.clear=_v;$t.prototype.delete=xv;$t.prototype.get=Tv;$t.prototype.has=Pv;$t.prototype.set=Cv;Tc.exports=$t});var Cc=u((fk,Pc)=>{"use strict";var Ov="__lodash_hash_undefined__";function qv(e){return this.__data__.set(e,Ov),this}Pc.exports=qv});var qc=u((gk,Oc)=>{"use strict";function Lv(e){return this.__data__.has(e)}Oc.exports=Lv});var fo=u((mk,Lc)=>{"use strict";var Uv=Qa(),Dv=Cc(),Bv=qc();function ja(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new Uv;++t<r;)this.add(e[t])}ja.prototype.add=ja.prototype.push=Dv;ja.prototype.has=Bv;Lc.exports=ja});var Dc=u((yk,Uc)=>{"use strict";function Nv(e,t,r,a){for(var n=e.length,o=r+(a?1:-1);a?o--:++o<n;)if(t(e[o],o,e))return o;return-1}Uc.exports=Nv});var Nc=u((Ak,Bc)=>{"use strict";function Gv(e){return e!==e}Bc.exports=Gv});var Mc=u((hk,Gc)=>{"use strict";function Mv(e,t,r){for(var a=r-1,n=e.length;++a<n;)if(e[a]===t)return a;return-1}Gc.exports=Mv});var Fc=u((bk,kc)=>{"use strict";var kv=Dc(),Fv=Nc(),Qv=Mc();function jv(e,t,r){return t===t?Qv(e,t,r):kv(e,Fv,r)}kc.exports=jv});var go=u((Ik,Qc)=>{"use strict";var Wv=Fc();function $v(e,t){var r=e==null?0:e.length;return!!r&&Wv(e,t,0)>-1}Qc.exports=$v});var Wc=u((Sk,jc)=>{"use strict";function Vv(e,t,r){for(var a=-1,n=e==null?0:e.length;++a<n;)if(r(t,e[a]))return!0;return!1}jc.exports=Vv});var mo=u((wk,$c)=>{"use strict";function Kv(e,t){return e.has(t)}$c.exports=Kv});var yo=u((vk,Vc)=>{"use strict";var Yv=it(),Hv=re(),Jv=Yv(Hv,"Set");Vc.exports=Jv});var Ao=u((Ek,Kc)=>{"use strict";function zv(){}Kc.exports=zv});var Wa=u((Rk,Yc)=>{"use strict";function Xv(e){var t=-1,r=Array(e.size);return e.forEach(function(a){r[++t]=a}),r}Yc.exports=Xv});var Jc=u((_k,Hc)=>{"use strict";var ho=yo(),Zv=Ao(),eE=Wa(),tE=1/0,rE=ho&&1/eE(new ho([,-0]))[1]==tE?function(e){return new ho(e)}:Zv;Hc.exports=rE});var Xc=u((xk,zc)=>{"use strict";var aE=fo(),nE=go(),oE=Wc(),sE=mo(),iE=Jc(),uE=Wa(),pE=200;function cE(e,t,r){var a=-1,n=nE,o=e.length,i=!0,s=[],l=s;if(r)i=!1,n=oE;else if(o>=pE){var f=t?null:iE(e);if(f)return uE(f);i=!1,n=sE,l=new aE}else l=t?[]:s;e:for(;++a<o;){var m=e[a],g=t?t(m):m;if(m=r||m!==0?m:0,i&&g===g){for(var y=l.length;y--;)if(l[y]===g)continue e;t&&l.push(g),s.push(m)}else n(l,g,r)||(l!==s&&l.push(g),s.push(m))}return s}zc.exports=cE});var $a=u((Tk,Zc)=>{"use strict";var lE=9007199254740991;function dE(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=lE}Zc.exports=dE});var Vt=u((Pk,el)=>{"use strict";var fE=Wr(),gE=$a();function mE(e){return e!=null&&gE(e.length)&&!fE(e)}el.exports=mE});var bo=u((Ck,tl)=>{"use strict";var yE=Vt(),AE=ce();function hE(e){return AE(e)&&yE(e)}tl.exports=hE});var al=u((Ok,rl)=>{"use strict";var bE=oo(),IE=lo(),SE=Xc(),wE=bo(),vE=IE(function(e){return SE(bE(e,1,wE,!0))});rl.exports=vE});var ol=u((qk,nl)=>{"use strict";var EE=Kr();function RE(){this.__data__=new EE,this.size=0}nl.exports=RE});var il=u((Lk,sl)=>{"use strict";function _E(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}sl.exports=_E});var pl=u((Uk,ul)=>{"use strict";function xE(e){return this.__data__.get(e)}ul.exports=xE});var ll=u((Dk,cl)=>{"use strict";function TE(e){return this.__data__.has(e)}cl.exports=TE});var fl=u((Bk,dl)=>{"use strict";var PE=Kr(),CE=Fa(),OE=Qa(),qE=200;function LE(e,t){var r=this.__data__;if(r instanceof PE){var a=r.__data__;if(!CE||a.length<qE-1)return a.push([e,t]),this.size=++r.size,this;r=this.__data__=new OE(a)}return r.set(e,t),this.size=r.size,this}dl.exports=LE});var Hr=u((Nk,gl)=>{"use strict";var UE=Kr(),DE=ol(),BE=il(),NE=pl(),GE=ll(),ME=fl();function Kt(e){var t=this.__data__=new UE(e);this.size=t.size}Kt.prototype.clear=DE;Kt.prototype.delete=BE;Kt.prototype.get=NE;Kt.prototype.has=GE;Kt.prototype.set=ME;gl.exports=Kt});var Jr=u((Gk,yl)=>{"use strict";var ml=po();function kE(e,t,r){t=="__proto__"&&ml?ml(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}yl.exports=kE});var Io=u((Mk,Al)=>{"use strict";var FE=Jr(),QE=jt();function jE(e,t,r){(r!==void 0&&!QE(e[t],r)||r===void 0&&!(t in e))&&FE(e,t,r)}Al.exports=jE});var bl=u((kk,hl)=>{"use strict";function WE(e){return function(t,r,a){for(var n=-1,o=Object(t),i=a(t),s=i.length;s--;){var l=i[e?s:++n];if(r(o[l],l,o)===!1)break}return t}}hl.exports=WE});var So=u((Fk,Il)=>{"use strict";var $E=bl(),VE=$E();Il.exports=VE});var wo=u((zr,Yt)=>{"use strict";var KE=re(),El=typeof zr=="object"&&zr&&!zr.nodeType&&zr,Sl=El&&typeof Yt=="object"&&Yt&&!Yt.nodeType&&Yt,YE=Sl&&Sl.exports===El,wl=YE?KE.Buffer:void 0,vl=wl?wl.allocUnsafe:void 0;function HE(e,t){if(t)return e.slice();var r=e.length,a=vl?vl(r):new e.constructor(r);return e.copy(a),a}Yt.exports=HE});var vo=u((Qk,Rl)=>{"use strict";var JE=re(),zE=JE.Uint8Array;Rl.exports=zE});var Va=u((jk,xl)=>{"use strict";var _l=vo();function XE(e){var t=new e.constructor(e.byteLength);return new _l(t).set(new _l(e)),t}xl.exports=XE});var Eo=u((Wk,Tl)=>{"use strict";var ZE=Va();function eR(e,t){var r=t?ZE(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}Tl.exports=eR});var Ht=u(($k,Pl)=>{"use strict";function tR(e,t){var r=-1,a=e.length;for(t||(t=Array(a));++r<a;)t[r]=e[r];return t}Pl.exports=tR});var Xr=u((Vk,Ol)=>{"use strict";var rR=Se(),Cl=Object.create,aR=function(){function e(){}return function(t){if(!rR(t))return{};if(Cl)return Cl(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();Ol.exports=aR});var Ro=u((Kk,ql)=>{"use strict";function nR(e,t){return function(r){return e(t(r))}}ql.exports=nR});var Ka=u((Yk,Ll)=>{"use strict";var oR=Ro(),sR=oR(Object.getPrototypeOf,Object);Ll.exports=sR});var Ya=u((Hk,Ul)=>{"use strict";var iR=Object.prototype;function uR(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||iR;return e===r}Ul.exports=uR});var _o=u((Jk,Dl)=>{"use strict";var pR=Xr(),cR=Ka(),lR=Ya();function dR(e){return typeof e.constructor=="function"&&!lR(e)?pR(cR(e)):{}}Dl.exports=dR});var Nl=u((zk,Bl)=>{"use strict";function fR(){return!1}Bl.exports=fR});var ea=u((Zr,Jt)=>{"use strict";var gR=re(),mR=Nl(),kl=typeof Zr=="object"&&Zr&&!Zr.nodeType&&Zr,Gl=kl&&typeof Jt=="object"&&Jt&&!Jt.nodeType&&Jt,yR=Gl&&Gl.exports===kl,Ml=yR?gR.Buffer:void 0,AR=Ml?Ml.isBuffer:void 0,hR=AR||mR;Jt.exports=hR});var xo=u((Xk,Ql)=>{"use strict";var bR=st(),IR=Ka(),SR=ce(),wR="[object Object]",vR=Function.prototype,ER=Object.prototype,Fl=vR.toString,RR=ER.hasOwnProperty,_R=Fl.call(Object);function xR(e){if(!SR(e)||bR(e)!=wR)return!1;var t=IR(e);if(t===null)return!0;var r=RR.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Fl.call(r)==_R}Ql.exports=xR});var Wl=u((Zk,jl)=>{"use strict";var TR=st(),PR=$a(),CR=ce(),OR="[object Arguments]",qR="[object Array]",LR="[object Boolean]",UR="[object Date]",DR="[object Error]",BR="[object Function]",NR="[object Map]",GR="[object Number]",MR="[object Object]",kR="[object RegExp]",FR="[object Set]",QR="[object String]",jR="[object WeakMap]",WR="[object ArrayBuffer]",$R="[object DataView]",VR="[object Float32Array]",KR="[object Float64Array]",YR="[object Int8Array]",HR="[object Int16Array]",JR="[object Int32Array]",zR="[object Uint8Array]",XR="[object Uint8ClampedArray]",ZR="[object Uint16Array]",e_="[object Uint32Array]",L={};L[VR]=L[KR]=L[YR]=L[HR]=L[JR]=L[zR]=L[XR]=L[ZR]=L[e_]=!0;L[OR]=L[qR]=L[WR]=L[LR]=L[$R]=L[UR]=L[DR]=L[BR]=L[NR]=L[GR]=L[MR]=L[kR]=L[FR]=L[QR]=L[jR]=!1;function t_(e){return CR(e)&&PR(e.length)&&!!L[TR(e)]}jl.exports=t_});var Ha=u((eF,$l)=>{"use strict";function r_(e){return function(t){return e(t)}}$l.exports=r_});var Ja=u((ta,zt)=>{"use strict";var a_=no(),Vl=typeof ta=="object"&&ta&&!ta.nodeType&&ta,ra=Vl&&typeof zt=="object"&&zt&&!zt.nodeType&&zt,n_=ra&&ra.exports===Vl,To=n_&&a_.process,o_=function(){try{var e=ra&&ra.require&&ra.require("util").types;return e||To&&To.binding&&To.binding("util")}catch{}}();zt.exports=o_});var za=u((tF,Hl)=>{"use strict";var s_=Wl(),i_=Ha(),Kl=Ja(),Yl=Kl&&Kl.isTypedArray,u_=Yl?i_(Yl):s_;Hl.exports=u_});var Po=u((rF,Jl)=>{"use strict";function p_(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}Jl.exports=p_});var Co=u((aF,zl)=>{"use strict";var c_=Jr(),l_=jt(),d_=Object.prototype,f_=d_.hasOwnProperty;function g_(e,t,r){var a=e[t];(!(f_.call(e,t)&&l_(a,r))||r===void 0&&!(t in e))&&c_(e,t,r)}zl.exports=g_});var Xt=u((nF,Xl)=>{"use strict";var m_=Co(),y_=Jr();function A_(e,t,r,a){var n=!r;r||(r={});for(var o=-1,i=t.length;++o<i;){var s=t[o],l=a?a(r[s],e[s],s,r,e):void 0;l===void 0&&(l=e[s]),n?y_(r,s,l):m_(r,s,l)}return r}Xl.exports=A_});var ed=u((oF,Zl)=>{"use strict";function h_(e,t){for(var r=-1,a=Array(e);++r<e;)a[r]=t(r);return a}Zl.exports=h_});var aa=u((sF,td)=>{"use strict";var b_=9007199254740991,I_=/^(?:0|[1-9]\d*)$/;function S_(e,t){var r=typeof e;return t=t??b_,!!t&&(r=="number"||r!="symbol"&&I_.test(e))&&e>-1&&e%1==0&&e<t}td.exports=S_});var Oo=u((iF,rd)=>{"use strict";var w_=ed(),v_=Qr(),E_=X(),R_=ea(),__=aa(),x_=za(),T_=Object.prototype,P_=T_.hasOwnProperty;function C_(e,t){var r=E_(e),a=!r&&v_(e),n=!r&&!a&&R_(e),o=!r&&!a&&!n&&x_(e),i=r||a||n||o,s=i?w_(e.length,String):[],l=s.length;for(var f in e)(t||P_.call(e,f))&&!(i&&(f=="length"||n&&(f=="offset"||f=="parent")||o&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||__(f,l)))&&s.push(f);return s}rd.exports=C_});var nd=u((uF,ad)=>{"use strict";function O_(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}ad.exports=O_});var sd=u((pF,od)=>{"use strict";var q_=Se(),L_=Ya(),U_=nd(),D_=Object.prototype,B_=D_.hasOwnProperty;function N_(e){if(!q_(e))return U_(e);var t=L_(e),r=[];for(var a in e)a=="constructor"&&(t||!B_.call(e,a))||r.push(a);return r}od.exports=N_});var Zt=u((cF,id)=>{"use strict";var G_=Oo(),M_=sd(),k_=Vt();function F_(e){return k_(e)?G_(e,!0):M_(e)}id.exports=F_});var pd=u((lF,ud)=>{"use strict";var Q_=Xt(),j_=Zt();function W_(e){return Q_(e,j_(e))}ud.exports=W_});var md=u((dF,gd)=>{"use strict";var cd=Io(),$_=wo(),V_=Eo(),K_=Ht(),Y_=_o(),ld=Qr(),dd=X(),H_=bo(),J_=ea(),z_=Wr(),X_=Se(),Z_=xo(),ex=za(),fd=Po(),tx=pd();function rx(e,t,r,a,n,o,i){var s=fd(e,r),l=fd(t,r),f=i.get(l);if(f){cd(e,r,f);return}var m=o?o(s,l,r+"",e,t,i):void 0,g=m===void 0;if(g){var y=dd(l),h=!y&&J_(l),v=!y&&!h&&ex(l);m=l,y||h||v?dd(s)?m=s:H_(s)?m=K_(s):h?(g=!1,m=$_(l,!0)):v?(g=!1,m=V_(l,!0)):m=[]:Z_(l)||ld(l)?(m=s,ld(s)?m=tx(s):(!X_(s)||z_(s))&&(m=Y_(l))):g=!1}g&&(i.set(l,m),n(m,l,a,o,i),i.delete(l)),cd(e,r,m)}gd.exports=rx});var hd=u((fF,Ad)=>{"use strict";var ax=Hr(),nx=Io(),ox=So(),sx=md(),ix=Se(),ux=Zt(),px=Po();function yd(e,t,r,a,n){e!==t&&ox(t,function(o,i){if(n||(n=new ax),ix(o))sx(e,t,i,r,yd,a,n);else{var s=a?a(px(e,i),o,i+"",e,t,n):void 0;s===void 0&&(s=o),nx(e,i,s)}},ux)}Ad.exports=yd});var Id=u((gF,bd)=>{"use strict";var cx=jt(),lx=Vt(),dx=aa(),fx=Se();function gx(e,t,r){if(!fx(r))return!1;var a=typeof t;return(a=="number"?lx(r)&&dx(t,r.length):a=="string"&&t in r)?cx(r[t],e):!1}bd.exports=gx});var wd=u((mF,Sd)=>{"use strict";var mx=lo(),yx=Id();function Ax(e){return mx(function(t,r){var a=-1,n=r.length,o=n>1?r[n-1]:void 0,i=n>2?r[2]:void 0;for(o=e.length>3&&typeof o=="function"?(n--,o):void 0,i&&yx(r[0],r[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++a<n;){var s=r[a];s&&e(t,s,a,o)}return t})}Sd.exports=Ax});var qo=u((yF,vd)=>{"use strict";var hx=hd(),bx=wd(),Ix=bx(function(e,t,r){hx(e,t,r)});vd.exports=Ix});var Ef=u(oe=>{"use strict";oe.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"};oe.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"],4:["fill","setWith","updateWith"]};oe.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};oe.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2};oe.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};oe.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]};oe.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}};oe.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}};oe.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=oe.aliasToReal,r={};for(var a in t){var n=t[a];e.call(r,n)?r[n].push(a):r[n]=[a]}return r}();oe.remap={assignAll:"assign",assignAllWith:"assignWith",assignInAll:"assignIn",assignInAllWith:"assignInWith",curryN:"curry",curryRightN:"curryRight",defaultsAll:"defaults",defaultsDeepAll:"defaultsDeep",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",mergeAll:"merge",mergeAllWith:"mergeWith",padChars:"pad",padCharsEnd:"padEnd",padCharsStart:"padStart",propertyOf:"get",rangeStep:"range",rangeStepRight:"rangeRight",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart",zipAll:"zip"};oe.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};oe.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}});var Ps=u((GQ,Rf)=>{"use strict";Rf.exports={}});var Pf=u((MQ,Tf)=>{"use strict";var $=Ef(),aP=Ps(),_f=Array.prototype.push;function nP(e,t){return t==2?function(r,a){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}function Cs(e,t){return t==2?function(r,a){return e(r,a)}:function(r){return e(r)}}function xf(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}function oP(e){return function(t){return e({},t)}}function sP(e,t){return function(){for(var r=arguments.length,a=r-1,n=Array(r);r--;)n[r]=arguments[r];var o=n[t],i=n.slice(0,t);return o&&_f.apply(i,o),t!=a&&_f.apply(i,n.slice(t+1)),e.apply(this,i)}}function Os(e,t){return function(){var r=arguments.length;if(r){for(var a=Array(r);r--;)a[r]=arguments[r];var n=a[0]=t.apply(void 0,a);return e.apply(void 0,a),n}}}function qs(e,t,r,a){var n=typeof t=="function",o=t===Object(t);if(o&&(a=r,r=t,t=void 0),r==null)throw new TypeError;a||(a={});var i={cap:"cap"in a?a.cap:!0,curry:"curry"in a?a.curry:!0,fixed:"fixed"in a?a.fixed:!0,immutable:"immutable"in a?a.immutable:!0,rearg:"rearg"in a?a.rearg:!0},s=n?r:aP,l="curry"in a&&a.curry,f="fixed"in a&&a.fixed,m="rearg"in a&&a.rearg,g=n?r.runInContext():void 0,y=n?r:{ary:e.ary,assign:e.assign,clone:e.clone,curry:e.curry,forEach:e.forEach,isArray:e.isArray,isError:e.isError,isFunction:e.isFunction,isWeakMap:e.isWeakMap,iteratee:e.iteratee,keys:e.keys,rearg:e.rearg,toInteger:e.toInteger,toPath:e.toPath},h=y.ary,v=y.assign,T=y.clone,_=y.curry,E=y.forEach,U=y.isArray,et=y.isError,Ae=y.isFunction,tt=y.isWeakMap,Dt=y.keys,mr=y.rearg,yr=y.toInteger,Bb=y.toPath,Hi=Dt($.aryMethod),Nb={castArray:function(I){return function(){var A=arguments[0];return U(A)?I(xf(A)):I.apply(void 0,arguments)}},iteratee:function(I){return function(){var A=arguments[0],b=arguments[1],w=I(A,b),x=w.length;return i.cap&&typeof b=="number"?(b=b>2?b-2:1,x&&x<=b?w:Cs(w,b)):w}},mixin:function(I){return function(A){var b=this;if(!Ae(b))return I(b,Object(A));var w=[];return E(Dt(A),function(x){Ae(A[x])&&w.push([x,b.prototype[x]])}),I(b,Object(A)),E(w,function(x){var Z=x[1];Ae(Z)?b.prototype[x[0]]=Z:delete b.prototype[x[0]]}),b}},nthArg:function(I){return function(A){var b=A<0?1:yr(A)+1;return _(I(A),b)}},rearg:function(I){return function(A,b){var w=b?b.length:0;return _(I(A,b),w)}},runInContext:function(I){return function(A){return qs(e,I(A),a)}}};function Gb(I,A){if(i.cap){var b=$.iterateeRearg[I];if(b)return jb(A,b);var w=!n&&$.iterateeAry[I];if(w)return Qb(A,w)}return A}function Mb(I,A,b){return l||i.curry&&b>1?_(A,b):A}function Ji(I,A,b){if(i.fixed&&(f||!$.skipFixed[I])){var w=$.methodSpread[I],x=w&&w.start;return x===void 0?h(A,b):sP(A,x)}return A}function zi(I,A,b){return i.rearg&&b>1&&(m||!$.skipRearg[I])?mr(A,$.methodRearg[I]||$.aryRearg[b]):A}function kb(I,A){A=Bb(A);for(var b=-1,w=A.length,x=w-1,Z=T(Object(I)),Ue=Z;Ue!=null&&++b<w;){var he=A[b],De=Ue[he];De!=null&&!(Ae(De)||et(De)||tt(De))&&(Ue[he]=T(b==x?De:Object(De))),Ue=Ue[he]}return Z}function Fb(I){return ue.runInContext.convert(I)(void 0)}function Xi(I,A){var b=$.aliasToReal[I]||I,w=$.remap[b]||b,x=a;return function(Z){var Ue=n?g:y,he=n?g[w]:A,De=v(v({},x),Z);return qs(Ue,b,he,De)}}function Qb(I,A){return Zi(I,function(b){return typeof b=="function"?Cs(b,A):b})}function jb(I,A){return Zi(I,function(b){var w=A.length;return nP(mr(Cs(b,w),A),w)})}function Zi(I,A){return function(){var b=arguments.length;if(!b)return I();for(var w=Array(b);b--;)w[b]=arguments[b];var x=i.rearg?0:b-1;return w[x]=A(w[x]),I.apply(void 0,w)}}function eu(I,A,b){var w,x=$.aliasToReal[I]||I,Z=A,Ue=Nb[x];return Ue?Z=Ue(A):i.immutable&&($.mutate.array[x]?Z=Os(A,xf):$.mutate.object[x]?Z=Os(A,oP(A)):$.mutate.set[x]&&(Z=Os(A,kb))),E(Hi,function(he){return E($.aryMethod[he],function(De){if(x==De){var tu=$.methodSpread[x],Wb=tu&&tu.afterRearg;return w=Wb?Ji(x,zi(x,Z,he),he):zi(x,Ji(x,Z,he),he),w=Gb(x,w),w=Mb(x,w,he),!1}}),!w}),w||(w=Z),w==A&&(w=l?_(w,1):function(){return A.apply(this,arguments)}),w.convert=Xi(x,A),w.placeholder=A.placeholder=b,w}if(!o)return eu(t,r,s);var ue=r,Ar=[];return E(Hi,function(I){E($.aryMethod[I],function(A){var b=ue[$.remap[A]||A];b&&Ar.push([A,eu(A,b,ue)])})}),E(Dt(ue),function(I){var A=ue[I];if(typeof A=="function"){for(var b=Ar.length;b--;)if(Ar[b][0]==I)return;A.convert=Xi(I,A),Ar.push([I,A])}}),E(Ar,function(I){ue[I[0]]=I[1]}),ue.convert=Fb,ue.placeholder=ue,E(Dt(ue),function(I){E($.realToAlias[I]||[],function(A){ue[A]=ue[I]})}),ue}Tf.exports=qs});var Ls=u((kQ,Cf)=>{"use strict";var iP=it(),uP=re(),pP=iP(uP,"WeakMap");Cf.exports=pP});var Us=u((FQ,qf)=>{"use strict";var Of=Ls(),cP=Of&&new Of;qf.exports=cP});var Ds=u((QQ,Uf)=>{"use strict";var lP=jr(),Lf=Us(),dP=Lf?function(e,t){return Lf.set(e,t),e}:lP;Uf.exports=dP});var ma=u((jQ,Df)=>{"use strict";var fP=Xr(),gP=Se();function mP(e){return function(){var t=arguments;switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3]);case 5:return new e(t[0],t[1],t[2],t[3],t[4]);case 6:return new e(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var r=fP(e.prototype),a=e.apply(r,t);return gP(a)?a:r}}Df.exports=mP});var Nf=u((WQ,Bf)=>{"use strict";var yP=ma(),AP=re(),hP=1;function bP(e,t,r){var a=t&hP,n=yP(e);function o(){var i=this&&this!==AP&&this instanceof o?n:e;return i.apply(a?r:this,arguments)}return o}Bf.exports=bP});var Bs=u(($Q,Gf)=>{"use strict";var IP=Math.max;function SP(e,t,r,a){for(var n=-1,o=e.length,i=r.length,s=-1,l=t.length,f=IP(o-i,0),m=Array(l+f),g=!a;++s<l;)m[s]=t[s];for(;++n<i;)(g||n<o)&&(m[r[n]]=e[n]);for(;f--;)m[s++]=e[n++];return m}Gf.exports=SP});var Ns=u((VQ,Mf)=>{"use strict";var wP=Math.max;function vP(e,t,r,a){for(var n=-1,o=e.length,i=-1,s=r.length,l=-1,f=t.length,m=wP(o-s,0),g=Array(m+f),y=!a;++n<m;)g[n]=e[n];for(var h=n;++l<f;)g[h+l]=t[l];for(;++i<s;)(y||n<o)&&(g[h+r[i]]=e[n++]);return g}Mf.exports=vP});var Ff=u((KQ,kf)=>{"use strict";function EP(e,t){for(var r=e.length,a=0;r--;)e[r]===t&&++a;return a}kf.exports=EP});var gn=u((YQ,Qf)=>{"use strict";function RP(){}Qf.exports=RP});var yn=u((HQ,jf)=>{"use strict";var _P=Xr(),xP=gn(),TP=4294967295;function mn(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=TP,this.__views__=[]}mn.prototype=_P(xP.prototype);mn.prototype.constructor=mn;jf.exports=mn});var Gs=u((JQ,$f)=>{"use strict";var Wf=Us(),PP=Ao(),CP=Wf?function(e){return Wf.get(e)}:PP;$f.exports=CP});var Kf=u((zQ,Vf)=>{"use strict";var OP={};Vf.exports=OP});var Jf=u((XQ,Hf)=>{"use strict";var Yf=Kf(),qP=Object.prototype,LP=qP.hasOwnProperty;function UP(e){for(var t=e.name+"",r=Yf[t],a=LP.call(Yf,t)?r.length:0;a--;){var n=r[a],o=n.func;if(o==null||o==e)return n.name}return t}Hf.exports=UP});var Ms=u((ZQ,zf)=>{"use strict";var DP=Xr(),BP=gn();function An(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}An.prototype=DP(BP.prototype);An.prototype.constructor=An;zf.exports=An});var Zf=u((ej,Xf)=>{"use strict";var NP=yn(),GP=Ms(),MP=Ht();function kP(e){if(e instanceof NP)return e.clone();var t=new GP(e.__wrapped__,e.__chain__);return t.__actions__=MP(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}Xf.exports=kP});var rg=u((tj,tg)=>{"use strict";var FP=yn(),eg=Ms(),QP=gn(),jP=X(),WP=ce(),$P=Zf(),VP=Object.prototype,KP=VP.hasOwnProperty;function hn(e){if(WP(e)&&!jP(e)&&!(e instanceof FP)){if(e instanceof eg)return e;if(KP.call(e,"__wrapped__"))return $P(e)}return new eg(e)}hn.prototype=QP.prototype;hn.prototype.constructor=hn;tg.exports=hn});var ng=u((rj,ag)=>{"use strict";var YP=yn(),HP=Gs(),JP=Jf(),zP=rg();function XP(e){var t=JP(e),r=zP[t];if(typeof r!="function"||!(t in YP.prototype))return!1;if(e===r)return!0;var a=HP(r);return!!a&&e===a[0]}ag.exports=XP});var ks=u((aj,og)=>{"use strict";var ZP=Ds(),eC=co(),tC=eC(ZP);og.exports=tC});var ig=u((nj,sg)=>{"use strict";var rC=/\{\n\/\* \[wrapped with (.+)\] \*/,aC=/,? & /;function nC(e){var t=e.match(rC);return t?t[1].split(aC):[]}sg.exports=nC});var pg=u((oj,ug)=>{"use strict";var oC=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function sC(e,t){var r=t.length;if(!r)return e;var a=r-1;return t[a]=(r>1?"& ":"")+t[a],t=t.join(r>2?", ":" "),e.replace(oC,`{
2
2
  /* [wrapped with `+t+`] */
3
- `)}ig.exports=aO});var Aa=u((aj,pg)=>{"use strict";function oO(e,t){for(var r=-1,n=e==null?0:e.length;++r<n&&t(e[r],r,e)!==!1;);return e}pg.exports=oO});var lg=u((oj,cg)=>{"use strict";var sO=Aa(),iO=fo(),uO=1,pO=2,cO=8,lO=16,dO=32,fO=64,gO=128,mO=256,yO=512,AO=[["ary",gO],["bind",uO],["bindKey",pO],["curry",cO],["curryRight",lO],["flip",yO],["partial",dO],["partialRight",fO],["rearg",mO]];function hO(e,t){return sO(AO,function(r){var n="_."+r[0];t&r[1]&&!iO(e,n)&&e.push(n)}),e.sort()}cg.exports=hO});var ks=u((sj,dg)=>{"use strict";var IO=sg(),bO=ug(),SO=Mn(),wO=lg();function vO(e,t,r){var n=t+"";return SO(e,bO(n,wO(IO(n),r)))}dg.exports=vO});var Fs=u((ij,mg)=>{"use strict";var EO=ng(),RO=Ms(),_O=ks(),xO=1,TO=2,PO=4,OO=8,fg=32,gg=64;function CO(e,t,r,n,a,o,i,s,l,f){var m=t&OO,g=m?i:void 0,y=m?void 0:i,h=m?o:void 0,E=m?void 0:o;t|=m?fg:gg,t&=~(m?gg:fg),t&PO||(t&=~(xO|TO));var T=[e,t,a,h,g,E,y,s,l,f],_=r.apply(void 0,T);return EO(e)&&RO(_,T),_.placeholder=n,_O(_,e,t)}mg.exports=CO});var Qs=u((uj,yg)=>{"use strict";function qO(e){var t=e;return t.placeholder}yg.exports=qO});var hg=u((pj,Ag)=>{"use strict";var LO=Yt(),UO=rn(),DO=Math.min;function BO(e,t){for(var r=e.length,n=DO(t.length,r),a=LO(e);n--;){var o=t[n];e[n]=UO(o,r)?a[o]:void 0}return e}Ag.exports=BO});var ha=u((cj,bg)=>{"use strict";var Ig="__lodash_placeholder__";function NO(e,t){for(var r=-1,n=e.length,a=0,o=[];++r<n;){var i=e[r];(i===t||i===Ig)&&(e[r]=Ig,o[a++]=r)}return o}bg.exports=NO});var Ws=u((lj,vg)=>{"use strict";var GO=Ds(),MO=Bs(),kO=kf(),Sg=mn(),FO=Fs(),QO=Qs(),jO=hg(),WO=ha(),$O=re(),VO=1,KO=2,HO=8,YO=16,JO=128,zO=512;function wg(e,t,r,n,a,o,i,s,l,f){var m=t&JO,g=t&VO,y=t&KO,h=t&(HO|YO),E=t&zO,T=y?void 0:Sg(e);function _(){for(var R=arguments.length,U=Array(R),et=R;et--;)U[et]=arguments[et];if(h)var Ae=QO(_),tt=kO(U,Ae);if(n&&(U=GO(U,n,a,h)),o&&(U=MO(U,o,i,h)),R-=tt,h&&R<f){var Dt=WO(U,Ae);return FO(e,t,wg,_.placeholder,r,U,Dt,s,l,f-R)}var gr=g?r:this,mr=y?gr[e]:e;return R=U.length,s?U=jO(U,s):E&&R>1&&U.reverse(),m&&l<R&&(U.length=l),this&&this!==$O&&this instanceof _&&(mr=T||Sg(mr)),mr.apply(gr,U)}return _}vg.exports=wg});var Rg=u((dj,Eg)=>{"use strict";var XO=Gn(),ZO=mn(),eC=Ws(),tC=Fs(),rC=Qs(),nC=ha(),aC=re();function oC(e,t,r){var n=ZO(e);function a(){for(var o=arguments.length,i=Array(o),s=o,l=rC(a);s--;)i[s]=arguments[s];var f=o<3&&i[0]!==l&&i[o-1]!==l?[]:nC(i,l);if(o-=f.length,o<r)return tC(e,t,eC,a.placeholder,void 0,i,f,void 0,void 0,r-o);var m=this&&this!==aC&&this instanceof a?n:e;return XO(m,this,i)}return a}Eg.exports=oC});var xg=u((fj,_g)=>{"use strict";var sC=Gn(),iC=mn(),uC=re(),pC=1;function cC(e,t,r,n){var a=t&pC,o=iC(e);function i(){for(var s=-1,l=arguments.length,f=-1,m=n.length,g=Array(m+l),y=this&&this!==uC&&this instanceof i?o:e;++f<m;)g[f]=n[f];for(;l--;)g[f++]=arguments[++s];return sC(y,a?r:this,g)}return i}_g.exports=cC});var Lg=u((gj,qg)=>{"use strict";var lC=Ds(),dC=Bs(),Tg=ha(),Pg="__lodash_placeholder__",$s=1,fC=2,gC=4,Og=8,yn=128,Cg=256,mC=Math.min;function yC(e,t){var r=e[1],n=t[1],a=r|n,o=a<($s|fC|yn),i=n==yn&&r==Og||n==yn&&r==Cg&&e[7].length<=t[8]||n==(yn|Cg)&&t[7].length<=t[8]&&r==Og;if(!(o||i))return e;n&$s&&(e[2]=t[2],a|=r&$s?0:gC);var s=t[3];if(s){var l=e[3];e[3]=l?lC(l,s,t[4]):s,e[4]=l?Tg(e[3],Pg):t[4]}return s=t[5],s&&(l=e[5],e[5]=l?dC(l,s,t[6]):s,e[6]=l?Tg(e[5],Pg):t[6]),s=t[7],s&&(e[7]=s),n&yn&&(e[8]=e[8]==null?t[8]:mC(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=a,e}qg.exports=yC});var Dg=u((mj,Ug)=>{"use strict";var AC=/\s/;function hC(e){for(var t=e.length;t--&&AC.test(e.charAt(t)););return t}Ug.exports=hC});var Ng=u((yj,Bg)=>{"use strict";var IC=Dg(),bC=/^\s+/;function SC(e){return e&&e.slice(0,IC(e)+1).replace(bC,"")}Bg.exports=SC});var ir=u((Aj,Gg)=>{"use strict";var wC=st(),vC=ce(),EC="[object Symbol]";function RC(e){return typeof e=="symbol"||vC(e)&&wC(e)==EC}Gg.exports=RC});var Qg=u((hj,Fg)=>{"use strict";var _C=Ng(),Mg=Se(),xC=ir(),kg=0/0,TC=/^[-+]0x[0-9a-f]+$/i,PC=/^0b[01]+$/i,OC=/^0o[0-7]+$/i,CC=parseInt;function qC(e){if(typeof e=="number")return e;if(xC(e))return kg;if(Mg(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=Mg(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=_C(e);var r=PC.test(e);return r||OC.test(e)?CC(e.slice(2),r?2:8):TC.test(e)?kg:+e}Fg.exports=qC});var $g=u((Ij,Wg)=>{"use strict";var LC=Qg(),jg=1/0,UC=17976931348623157e292;function DC(e){if(!e)return e===0?e:0;if(e=LC(e),e===jg||e===-jg){var t=e<0?-1:1;return t*UC}return e===e?e:0}Wg.exports=DC});var Vs=u((bj,Vg)=>{"use strict";var BC=$g();function NC(e){var t=BC(e),r=t%1;return t===t?r?t-r:t:0}Vg.exports=NC});var Ia=u((Sj,zg)=>{"use strict";var GC=Us(),MC=Bf(),kC=Rg(),FC=Ws(),QC=xg(),jC=Ns(),WC=Lg(),$C=Ms(),VC=ks(),Kg=Vs(),KC="Expected a function",Hg=1,HC=2,Ks=8,Hs=16,Ys=32,Yg=64,Jg=Math.max;function YC(e,t,r,n,a,o,i,s){var l=t&HC;if(!l&&typeof e!="function")throw new TypeError(KC);var f=n?n.length:0;if(f||(t&=~(Ys|Yg),n=a=void 0),i=i===void 0?i:Jg(Kg(i),0),s=s===void 0?s:Kg(s),f-=a?a.length:0,t&Yg){var m=n,g=a;n=a=void 0}var y=l?void 0:jC(e),h=[e,t,r,n,a,m,g,o,i,s];if(y&&WC(h,y),e=h[0],t=h[1],r=h[2],n=h[3],a=h[4],s=h[9]=h[9]===void 0?l?0:e.length:Jg(h[9]-f,0),!s&&t&(Ks|Hs)&&(t&=~(Ks|Hs)),!t||t==Hg)var E=MC(e,t,r);else t==Ks||t==Hs?E=kC(e,t,s):(t==Ys||t==(Hg|Ys))&&!a.length?E=QC(e,t,r,n):E=FC.apply(void 0,h);var T=y?GC:$C;return VC(T(E,h),e,t)}zg.exports=YC});var Zg=u((wj,Xg)=>{"use strict";var JC=Ia(),zC=128;function XC(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,JC(e,zC,void 0,void 0,void 0,void 0,t)}Xg.exports=XC});var tm=u((vj,em)=>{"use strict";var ZC=Eo(),eq=ZC(Object.keys,Object);em.exports=eq});var Js=u((Ej,rm)=>{"use strict";var tq=Kn(),rq=tm(),nq=Object.prototype,aq=nq.hasOwnProperty;function oq(e){if(!tq(e))return rq(e);var t=[];for(var r in Object(e))aq.call(e,r)&&r!="constructor"&&t.push(r);return t}rm.exports=oq});var ur=u((Rj,nm)=>{"use strict";var sq=Oo(),iq=Js(),uq=Vt();function pq(e){return uq(e)?sq(e):iq(e)}nm.exports=pq});var zs=u((_j,am)=>{"use strict";var cq=Xt(),lq=ur();function dq(e,t){return e&&cq(t,lq(t),e)}am.exports=dq});var sm=u((xj,om)=>{"use strict";var fq=Xt(),gq=Zt();function mq(e,t){return e&&fq(t,gq(t),e)}om.exports=mq});var um=u((Tj,im)=>{"use strict";function yq(e,t){for(var r=-1,n=e==null?0:e.length,a=0,o=[];++r<n;){var i=e[r];t(i,r,e)&&(o[a++]=i)}return o}im.exports=yq});var Xs=u((Pj,pm)=>{"use strict";function Aq(){return[]}pm.exports=Aq});var ba=u((Oj,lm)=>{"use strict";var hq=um(),Iq=Xs(),bq=Object.prototype,Sq=bq.propertyIsEnumerable,cm=Object.getOwnPropertySymbols,wq=cm?function(e){return e==null?[]:(e=Object(e),hq(cm(e),function(t){return Sq.call(e,t)}))}:Iq;lm.exports=wq});var fm=u((Cj,dm)=>{"use strict";var vq=Xt(),Eq=ba();function Rq(e,t){return vq(e,Eq(e),t)}dm.exports=Rq});var Zs=u((qj,gm)=>{"use strict";var _q=Nn(),xq=Vn(),Tq=ba(),Pq=Xs(),Oq=Object.getOwnPropertySymbols,Cq=Oq?function(e){for(var t=[];e;)_q(t,Tq(e)),e=xq(e);return t}:Pq;gm.exports=Cq});var ym=u((Lj,mm)=>{"use strict";var qq=Xt(),Lq=Zs();function Uq(e,t){return qq(e,Lq(e),t)}mm.exports=Uq});var ei=u((Uj,Am)=>{"use strict";var Dq=Nn(),Bq=J();function Nq(e,t,r){var n=t(e);return Bq(e)?n:Dq(n,r(e))}Am.exports=Nq});var ti=u((Dj,hm)=>{"use strict";var Gq=ei(),Mq=ba(),kq=ur();function Fq(e){return Gq(e,kq,Mq)}hm.exports=Fq});var bm=u((Bj,Im)=>{"use strict";var Qq=ei(),jq=Zs(),Wq=Zt();function $q(e){return Qq(e,Wq,jq)}Im.exports=$q});var wm=u((Nj,Sm)=>{"use strict";var Vq=it(),Kq=re(),Hq=Vq(Kq,"DataView");Sm.exports=Hq});var Em=u((Gj,vm)=>{"use strict";var Yq=it(),Jq=re(),zq=Yq(Jq,"Promise");vm.exports=zq});var cr=u((Mj,Cm)=>{"use strict";var ri=wm(),ni=kn(),ai=Em(),oi=mo(),si=qs(),Om=st(),pr=io(),Rm="[object Map]",Xq="[object Object]",_m="[object Promise]",xm="[object Set]",Tm="[object WeakMap]",Pm="[object DataView]",Zq=pr(ri),eL=pr(ni),tL=pr(ai),rL=pr(oi),nL=pr(si),Pt=Om;(ri&&Pt(new ri(new ArrayBuffer(1)))!=Pm||ni&&Pt(new ni)!=Rm||ai&&Pt(ai.resolve())!=_m||oi&&Pt(new oi)!=xm||si&&Pt(new si)!=Tm)&&(Pt=function(e){var t=Om(e),r=t==Xq?e.constructor:void 0,n=r?pr(r):"";if(n)switch(n){case Zq:return Pm;case eL:return Rm;case tL:return _m;case rL:return xm;case nL:return Tm}return t});Cm.exports=Pt});var Lm=u((kj,qm)=>{"use strict";var aL=Object.prototype,oL=aL.hasOwnProperty;function sL(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&oL.call(e,"index")&&(r.index=e.index,r.input=e.input),r}qm.exports=sL});var Dm=u((Fj,Um)=>{"use strict";var iL=$n();function uL(e,t){var r=t?iL(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}Um.exports=uL});var Nm=u((Qj,Bm)=>{"use strict";var pL=/\w*$/;function cL(e){var t=new e.constructor(e.source,pL.exec(e));return t.lastIndex=e.lastIndex,t}Bm.exports=cL});var Qm=u((jj,Fm)=>{"use strict";var Gm=bt(),Mm=Gm?Gm.prototype:void 0,km=Mm?Mm.valueOf:void 0;function lL(e){return km?Object(km.call(e)):{}}Fm.exports=lL});var Wm=u((Wj,jm)=>{"use strict";var dL=$n(),fL=Dm(),gL=Nm(),mL=Qm(),yL=vo(),AL="[object Boolean]",hL="[object Date]",IL="[object Map]",bL="[object Number]",SL="[object RegExp]",wL="[object Set]",vL="[object String]",EL="[object Symbol]",RL="[object ArrayBuffer]",_L="[object DataView]",xL="[object Float32Array]",TL="[object Float64Array]",PL="[object Int8Array]",OL="[object Int16Array]",CL="[object Int32Array]",qL="[object Uint8Array]",LL="[object Uint8ClampedArray]",UL="[object Uint16Array]",DL="[object Uint32Array]";function BL(e,t,r){var n=e.constructor;switch(t){case RL:return dL(e);case AL:case hL:return new n(+e);case _L:return fL(e,r);case xL:case TL:case PL:case OL:case CL:case qL:case LL:case UL:case DL:return yL(e,r);case IL:return new n;case bL:case vL:return new n(e);case SL:return gL(e);case wL:return new n;case EL:return mL(e)}}jm.exports=BL});var Vm=u(($j,$m)=>{"use strict";var NL=cr(),GL=ce(),ML="[object Map]";function kL(e){return GL(e)&&NL(e)==ML}$m.exports=kL});var Jm=u((Vj,Ym)=>{"use strict";var FL=Vm(),QL=Hn(),Km=Yn(),Hm=Km&&Km.isMap,jL=Hm?QL(Hm):FL;Ym.exports=jL});var Xm=u((Kj,zm)=>{"use strict";var WL=cr(),$L=ce(),VL="[object Set]";function KL(e){return $L(e)&&WL(e)==VL}zm.exports=KL});var ry=u((Hj,ty)=>{"use strict";var HL=Xm(),YL=Hn(),Zm=Yn(),ey=Zm&&Zm.isSet,JL=ey?YL(ey):HL;ty.exports=JL});var ii=u((Yj,sy)=>{"use strict";var zL=Hr(),XL=Aa(),ZL=Po(),eU=zs(),tU=sm(),rU=So(),nU=Yt(),aU=fm(),oU=ym(),sU=ti(),iU=bm(),uU=cr(),pU=Lm(),cU=Wm(),lU=Ro(),dU=J(),fU=Zr(),gU=Jm(),mU=Se(),yU=ry(),AU=ur(),hU=Zt(),IU=1,bU=2,SU=4,ny="[object Arguments]",wU="[object Array]",vU="[object Boolean]",EU="[object Date]",RU="[object Error]",ay="[object Function]",_U="[object GeneratorFunction]",xU="[object Map]",TU="[object Number]",oy="[object Object]",PU="[object RegExp]",OU="[object Set]",CU="[object String]",qU="[object Symbol]",LU="[object WeakMap]",UU="[object ArrayBuffer]",DU="[object DataView]",BU="[object Float32Array]",NU="[object Float64Array]",GU="[object Int8Array]",MU="[object Int16Array]",kU="[object Int32Array]",FU="[object Uint8Array]",QU="[object Uint8ClampedArray]",jU="[object Uint16Array]",WU="[object Uint32Array]",C={};C[ny]=C[wU]=C[UU]=C[DU]=C[vU]=C[EU]=C[BU]=C[NU]=C[GU]=C[MU]=C[kU]=C[xU]=C[TU]=C[oy]=C[PU]=C[OU]=C[CU]=C[qU]=C[FU]=C[QU]=C[jU]=C[WU]=!0;C[RU]=C[ay]=C[LU]=!1;function Sa(e,t,r,n,a,o){var i,s=t&IU,l=t&bU,f=t&SU;if(r&&(i=a?r(e,n,a,o):r(e)),i!==void 0)return i;if(!mU(e))return e;var m=dU(e);if(m){if(i=pU(e),!s)return nU(e,i)}else{var g=uU(e),y=g==ay||g==_U;if(fU(e))return rU(e,s);if(g==oy||g==ny||y&&!a){if(i=l||y?{}:lU(e),!s)return l?oU(e,tU(i,e)):aU(e,eU(i,e))}else{if(!C[g])return a?e:{};i=cU(e,g,s)}}o||(o=new zL);var h=o.get(e);if(h)return h;o.set(e,i),yU(e)?e.forEach(function(_){i.add(Sa(_,t,r,_,e,o))}):gU(e)&&e.forEach(function(_,R){i.set(R,Sa(_,t,r,R,e,o))});var E=f?l?iU:sU:l?hU:AU,T=m?void 0:E(e);return XL(T||e,function(_,R){T&&(R=_,_=e[R]),ZL(i,R,Sa(_,t,r,R,e,o))}),i}sy.exports=Sa});var uy=u((Jj,iy)=>{"use strict";var $U=ii(),VU=4;function KU(e){return $U(e,VU)}iy.exports=KU});var cy=u((zj,py)=>{"use strict";var HU=Ia(),YU=8;function ui(e,t,r){t=r?void 0:t;var n=HU(e,YU,void 0,void 0,void 0,void 0,void 0,t);return n.placeholder=ui.placeholder,n}ui.placeholder={};py.exports=ui});var dy=u((Xj,ly)=>{"use strict";var JU=st(),zU=ce(),XU=_o(),ZU="[object DOMException]",eD="[object Error]";function tD(e){if(!zU(e))return!1;var t=JU(e);return t==eD||t==ZU||typeof e.message=="string"&&typeof e.name=="string"&&!XU(e)}ly.exports=tD});var gy=u((Zj,fy)=>{"use strict";var rD=cr(),nD=ce(),aD="[object WeakMap]";function oD(e){return nD(e)&&rD(e)==aD}fy.exports=oD});var yy=u((eW,my)=>{"use strict";function sD(e,t){for(var r=-1,n=e==null?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}my.exports=sD});var pi=u((tW,Ay)=>{"use strict";var iD=lo(),uD=yy(),pD=go(),cD=1,lD=2;function dD(e,t,r,n,a,o){var i=r&cD,s=e.length,l=t.length;if(s!=l&&!(i&&l>s))return!1;var f=o.get(e),m=o.get(t);if(f&&m)return f==t&&m==e;var g=-1,y=!0,h=r&lD?new iD:void 0;for(o.set(e,t),o.set(t,e);++g<s;){var E=e[g],T=t[g];if(n)var _=i?n(T,E,g,t,e,o):n(E,T,g,e,t,o);if(_!==void 0){if(_)continue;y=!1;break}if(h){if(!uD(t,function(R,U){if(!pD(h,U)&&(E===R||a(E,R,r,n,o)))return h.push(U)})){y=!1;break}}else if(!(E===T||a(E,T,r,n,o))){y=!1;break}}return o.delete(e),o.delete(t),y}Ay.exports=dD});var Iy=u((rW,hy)=>{"use strict";function fD(e){var t=-1,r=Array(e.size);return e.forEach(function(n,a){r[++t]=[a,n]}),r}hy.exports=fD});var Ey=u((nW,vy)=>{"use strict";var by=bt(),Sy=wo(),gD=jt(),mD=pi(),yD=Iy(),AD=jn(),hD=1,ID=2,bD="[object Boolean]",SD="[object Date]",wD="[object Error]",vD="[object Map]",ED="[object Number]",RD="[object RegExp]",_D="[object Set]",xD="[object String]",TD="[object Symbol]",PD="[object ArrayBuffer]",OD="[object DataView]",wy=by?by.prototype:void 0,ci=wy?wy.valueOf:void 0;function CD(e,t,r,n,a,o,i){switch(r){case OD:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case PD:return!(e.byteLength!=t.byteLength||!o(new Sy(e),new Sy(t)));case bD:case SD:case ED:return gD(+e,+t);case wD:return e.name==t.name&&e.message==t.message;case RD:case xD:return e==t+"";case vD:var s=yD;case _D:var l=n&hD;if(s||(s=AD),e.size!=t.size&&!l)return!1;var f=i.get(e);if(f)return f==t;n|=ID,i.set(e,t);var m=mD(s(e),s(t),n,a,o,i);return i.delete(e),m;case TD:if(ci)return ci.call(e)==ci.call(t)}return!1}vy.exports=CD});var xy=u((aW,_y)=>{"use strict";var Ry=ti(),qD=1,LD=Object.prototype,UD=LD.hasOwnProperty;function DD(e,t,r,n,a,o){var i=r&qD,s=Ry(e),l=s.length,f=Ry(t),m=f.length;if(l!=m&&!i)return!1;for(var g=l;g--;){var y=s[g];if(!(i?y in t:UD.call(t,y)))return!1}var h=o.get(e),E=o.get(t);if(h&&E)return h==t&&E==e;var T=!0;o.set(e,t),o.set(t,e);for(var _=i;++g<l;){y=s[g];var R=e[y],U=t[y];if(n)var et=i?n(U,R,y,t,e,o):n(R,U,y,e,t,o);if(!(et===void 0?R===U||a(R,U,r,n,o):et)){T=!1;break}_||(_=y=="constructor")}if(T&&!_){var Ae=e.constructor,tt=t.constructor;Ae!=tt&&"constructor"in e&&"constructor"in t&&!(typeof Ae=="function"&&Ae instanceof Ae&&typeof tt=="function"&&tt instanceof tt)&&(T=!1)}return o.delete(e),o.delete(t),T}_y.exports=DD});var Dy=u((oW,Uy)=>{"use strict";var li=Hr(),BD=pi(),ND=Ey(),GD=xy(),Ty=cr(),Py=J(),Oy=Zr(),MD=Jn(),kD=1,Cy="[object Arguments]",qy="[object Array]",wa="[object Object]",FD=Object.prototype,Ly=FD.hasOwnProperty;function QD(e,t,r,n,a,o){var i=Py(e),s=Py(t),l=i?qy:Ty(e),f=s?qy:Ty(t);l=l==Cy?wa:l,f=f==Cy?wa:f;var m=l==wa,g=f==wa,y=l==f;if(y&&Oy(e)){if(!Oy(t))return!1;i=!0,m=!1}if(y&&!m)return o||(o=new li),i||MD(e)?BD(e,t,r,n,a,o):ND(e,t,l,r,n,a,o);if(!(r&kD)){var h=m&&Ly.call(e,"__wrapped__"),E=g&&Ly.call(t,"__wrapped__");if(h||E){var T=h?e.value():e,_=E?t.value():t;return o||(o=new li),a(T,_,r,n,o)}}return y?(o||(o=new li),GD(e,t,r,n,a,o)):!1}Uy.exports=QD});var di=u((sW,Gy)=>{"use strict";var jD=Dy(),By=ce();function Ny(e,t,r,n,a){return e===t?!0:e==null||t==null||!By(e)&&!By(t)?e!==e&&t!==t:jD(e,t,r,n,Ny,a)}Gy.exports=Ny});var ky=u((iW,My)=>{"use strict";var WD=Hr(),$D=di(),VD=1,KD=2;function HD(e,t,r,n){var a=r.length,o=a,i=!n;if(e==null)return!o;for(e=Object(e);a--;){var s=r[a];if(i&&s[2]?s[1]!==e[s[0]]:!(s[0]in e))return!1}for(;++a<o;){s=r[a];var l=s[0],f=e[l],m=s[1];if(i&&s[2]){if(f===void 0&&!(l in e))return!1}else{var g=new WD;if(n)var y=n(f,m,l,e,t,g);if(!(y===void 0?$D(m,f,VD|KD,n,g):y))return!1}}return!0}My.exports=HD});var fi=u((uW,Fy)=>{"use strict";var YD=Se();function JD(e){return e===e&&!YD(e)}Fy.exports=JD});var jy=u((pW,Qy)=>{"use strict";var zD=fi(),XD=ur();function ZD(e){for(var t=XD(e),r=t.length;r--;){var n=t[r],a=e[n];t[r]=[n,a,zD(a)]}return t}Qy.exports=ZD});var gi=u((cW,Wy)=>{"use strict";function eB(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}Wy.exports=eB});var Vy=u((lW,$y)=>{"use strict";var tB=ky(),rB=jy(),nB=gi();function aB(e){var t=rB(e);return t.length==1&&t[0][2]?nB(t[0][0],t[0][1]):function(r){return r===e||tB(r,e,t)}}$y.exports=aB});var va=u((dW,Ky)=>{"use strict";var oB=J(),sB=ir(),iB=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,uB=/^\w*$/;function pB(e,t){if(oB(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||sB(e)?!0:uB.test(e)||!iB.test(e)||t!=null&&e in Object(t)}Ky.exports=pB});var Jy=u((fW,Yy)=>{"use strict";var Hy=Fn(),cB="Expected a function";function mi(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(cB);var r=function(){var n=arguments,a=t?t.apply(this,n):n[0],o=r.cache;if(o.has(a))return o.get(a);var i=e.apply(this,n);return r.cache=o.set(a,i)||o,i};return r.cache=new(mi.Cache||Hy),r}mi.Cache=Hy;Yy.exports=mi});var Xy=u((gW,zy)=>{"use strict";var lB=Jy(),dB=500;function fB(e){var t=lB(e,function(n){return r.size===dB&&r.clear(),n}),r=t.cache;return t}zy.exports=fB});var yi=u((mW,Zy)=>{"use strict";var gB=Xy(),mB=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,yB=/\\(\\)?/g,AB=gB(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(mB,function(r,n,a,o){t.push(a?o.replace(yB,"$1"):n||r)}),t});Zy.exports=AB});var Ai=u((yW,eA)=>{"use strict";function hB(e,t){for(var r=-1,n=e==null?0:e.length,a=Array(n);++r<n;)a[r]=t(e[r],r,e);return a}eA.exports=hB});var sA=u((AW,oA)=>{"use strict";var tA=bt(),IB=Ai(),bB=J(),SB=ir(),wB=1/0,rA=tA?tA.prototype:void 0,nA=rA?rA.toString:void 0;function aA(e){if(typeof e=="string")return e;if(bB(e))return IB(e,aA)+"";if(SB(e))return nA?nA.call(e):"";var t=e+"";return t=="0"&&1/e==-wB?"-0":t}oA.exports=aA});var hi=u((hW,iA)=>{"use strict";var vB=sA();function EB(e){return e==null?"":vB(e)}iA.exports=EB});var Ii=u((IW,uA)=>{"use strict";var RB=J(),_B=va(),xB=yi(),TB=hi();function PB(e,t){return RB(e)?e:_B(e,t)?[e]:xB(TB(e))}uA.exports=PB});var lr=u((bW,pA)=>{"use strict";var OB=ir(),CB=1/0;function qB(e){if(typeof e=="string"||OB(e))return e;var t=e+"";return t=="0"&&1/e==-CB?"-0":t}pA.exports=qB});var bi=u((SW,cA)=>{"use strict";var LB=Ii(),UB=lr();function DB(e,t){t=LB(t,e);for(var r=0,n=t.length;e!=null&&r<n;)e=e[UB(t[r++])];return r&&r==n?e:void 0}cA.exports=DB});var dA=u((wW,lA)=>{"use strict";var BB=bi();function NB(e,t,r){var n=e==null?void 0:BB(e,t);return n===void 0?r:n}lA.exports=NB});var gA=u((vW,fA)=>{"use strict";function GB(e,t){return e!=null&&t in Object(e)}fA.exports=GB});var yA=u((EW,mA)=>{"use strict";var MB=Ii(),kB=Fr(),FB=J(),QB=rn(),jB=Wn(),WB=lr();function $B(e,t,r){t=MB(t,e);for(var n=-1,a=t.length,o=!1;++n<a;){var i=WB(t[n]);if(!(o=e!=null&&r(e,i)))break;e=e[i]}return o||++n!=a?o:(a=e==null?0:e.length,!!a&&jB(a)&&QB(i,a)&&(FB(e)||kB(e)))}mA.exports=$B});var hA=u((RW,AA)=>{"use strict";var VB=gA(),KB=yA();function HB(e,t){return e!=null&&KB(e,t,VB)}AA.exports=HB});var bA=u((_W,IA)=>{"use strict";var YB=di(),JB=dA(),zB=hA(),XB=va(),ZB=fi(),eN=gi(),tN=lr(),rN=1,nN=2;function aN(e,t){return XB(e)&&ZB(t)?eN(tN(e),t):function(r){var n=JB(r,e);return n===void 0&&n===t?zB(r,e):YB(t,n,rN|nN)}}IA.exports=aN});var wA=u((xW,SA)=>{"use strict";function oN(e){return function(t){return t?.[e]}}SA.exports=oN});var EA=u((TW,vA)=>{"use strict";var sN=bi();function iN(e){return function(t){return sN(t,e)}}vA.exports=iN});var _A=u((PW,RA)=>{"use strict";var uN=wA(),pN=EA(),cN=va(),lN=lr();function dN(e){return cN(e)?uN(lN(e)):pN(e)}RA.exports=dN});var Si=u((OW,xA)=>{"use strict";var fN=Vy(),gN=bA(),mN=Qr(),yN=J(),AN=_A();function hN(e){return typeof e=="function"?e:e==null?mN:typeof e=="object"?yN(e)?gN(e[0],e[1]):fN(e):AN(e)}xA.exports=hN});var PA=u((CW,TA)=>{"use strict";var IN=ii(),bN=Si(),SN=1;function wN(e){return bN(typeof e=="function"?e:IN(e,SN))}TA.exports=wN});var CA=u((qW,OA)=>{"use strict";var vN=ao();function EN(e){var t=e==null?0:e.length;return t?vN(e,1):[]}OA.exports=EN});var LA=u((LW,qA)=>{"use strict";var RN=CA(),_N=oo(),xN=Mn();function TN(e){return xN(_N(e,void 0,RN),e+"")}qA.exports=TN});var DA=u((UW,UA)=>{"use strict";var PN=Ia(),ON=LA(),CN=256,qN=ON(function(e,t){return PN(e,CN,void 0,void 0,void 0,t)});UA.exports=qN});var NA=u((DW,BA)=>{"use strict";var LN=Ai(),UN=Yt(),DN=J(),BN=ir(),NN=yi(),GN=lr(),MN=hi();function kN(e){return DN(e)?LN(e,GN):BN(e)?[e]:UN(NN(MN(e)))}BA.exports=kN});var MA=u((BW,GA)=>{"use strict";GA.exports={ary:Zg(),assign:zs(),clone:uy(),curry:cy(),forEach:Aa(),isArray:J(),isError:dy(),isFunction:jr(),isWeakMap:gy(),iteratee:PA(),keys:Js(),rearg:DA(),toInteger:Vs(),toPath:NA()}});var FA=u((NW,kA)=>{"use strict";var FN=Tf(),QN=MA();function jN(e,t,r){return FN(QN,e,t,r)}kA.exports=jN});var wi=u((GW,jA)=>{"use strict";var WN=FA(),QA=WN("merge",Co());QA.placeholder=Ts();jA.exports=QA});var nI=u((fV,rI)=>{"use strict";function hG(e,t,r,n){for(var a=-1,o=e==null?0:e.length;++a<o;){var i=e[a];t(n,i,r(i),e)}return n}rI.exports=hG});var oI=u((gV,aI)=>{"use strict";var IG=bo(),bG=ur();function SG(e,t){return e&&IG(e,t,bG)}aI.exports=SG});var iI=u((mV,sI)=>{"use strict";var wG=Vt();function vG(e,t){return function(r,n){if(r==null)return r;if(!wG(r))return e(r,n);for(var a=r.length,o=t?a:-1,i=Object(r);(t?o--:++o<a)&&n(i[o],o,i)!==!1;);return r}}sI.exports=vG});var pI=u((yV,uI)=>{"use strict";var EG=oI(),RG=iI(),_G=RG(EG);uI.exports=_G});var lI=u((AV,cI)=>{"use strict";var xG=pI();function TG(e,t,r,n){return xG(e,function(a,o,i){t(n,a,r(a),i)}),n}cI.exports=TG});var fI=u((hV,dI)=>{"use strict";var PG=nI(),OG=lI(),CG=Si(),qG=J();function LG(e,t){return function(r,n){var a=qG(r)?PG:OG,o=t?t():{};return a(r,e,CG(n,2),o)}}dI.exports=LG});var mI=u((IV,gI)=>{"use strict";var UG=Yr(),DG=fI(),BG=Object.prototype,NG=BG.hasOwnProperty,GG=DG(function(e,t,r){NG.call(e,r)?e[r].push(t):UG(e,r,[t])});gI.exports=GG});var JG={};S(JG,{Method:()=>Ga,ai:()=>Li,api:()=>$i,auditLogs:()=>ct,automations:()=>sa,backups:()=>ve,branding:()=>ta,constants:()=>Dr,environmentVariables:()=>je,features:()=>we,groups:()=>G,init:()=>wf,licensing:()=>Ge,logger:()=>Ot,mappers:()=>Q,middleware:()=>Ti,plugins:()=>ia,publicApi:()=>ca,quotas:()=>Fe,scimGroups:()=>dr,scimUsers:()=>se,sdk:()=>Ei,users:()=>Je,utils:()=>Ft});module.exports=HI(JG);var Ga=(o=>(o.POST="POST",o.GET="GET",o.PATCH="PATCH",o.DELETE="DELETE",o.PUT="PUT",o))(Ga||{});var Ei={};S(Ei,{ai:()=>Ho,auditLogs:()=>ct,automations:()=>sa,backups:()=>ve,branding:()=>ta,environmentVariables:()=>je,features:()=>we,groups:()=>G,init:()=>wf,licensing:()=>Ge,logger:()=>Ot,plugins:()=>ia,publicApi:()=>ca,quotas:()=>Fe,scimGroups:()=>dr,scimUsers:()=>se,users:()=>Je,utils:()=>Ft});var ta={};S(ta,{getBrandingConfig:()=>Gx});var we={};S(we,{checkBackups:()=>le,checkFeature:()=>Zn,checkFeatures:()=>Qo,checkSCIM:()=>Vo,isAICustomConfigsEnabled:()=>Ko,isAppBuildersEnabled:()=>vt,isAuditLogsEnabled:()=>ea,isBackupsEnabled:()=>jo,isBrandingEnabled:()=>Wo,isBudibaseAIEnabled:()=>sn,isEnforceableSSO:()=>Bd,isExpandedPublicApiEnabled:()=>Ye,isSSOEnforced:()=>Ux,isSyncAutomationsEnabled:()=>qx,isTriggerAutomationRunEnabled:()=>Lx,isUserGroupsEnabled:()=>$o,isViewPermissionEnabled:()=>Dx,isViewReadonlyColumnsEnabled:()=>Bx});var z=require("@budibase/types"),He=require("@budibase/backend-core");var Ge={};S(Ge,{cache:()=>xe,client:()=>ot,features:()=>Dn,getFreeLicense:()=>Mo,getLicense:()=>No,getLicenseFromKey:()=>Go,keys:()=>Fo,offline:()=>zn,quotas:()=>Bn});var xe={};S(xe,{getCachedLicense:()=>Ud,invalidate:()=>Dd,refresh:()=>St});var Ma=require("@budibase/backend-core"),Ar,YI=async()=>{Ar=await new Ma.redis.Client(Ma.redis.utils.Databases.LICENSES).init()},JI=async()=>{Ar&&await Ar.finish()};process.on("exit",async()=>{await JI()});var ka=async()=>(Ar||await YI(),Ar);var ot={};S(ot,{activateLicenseKey:()=>Za,getLicense:()=>Mt,getLicenseFromKey:()=>Xa,triggerQuota:()=>Bb});var ru=O(require("node-fetch"));var nu=require("@budibase/backend-core"),Fa=class{constructor(t){this.apiCall=t=>async(r="",n={})=>{n.headers||(n.headers={}),n.headers["Content-Type"]||(n.headers={"Content-Type":"application/json",Accept:"application/json",...n.headers});let a=n.headers["Content-Type"]==="application/json";nu.logging.correlation.setHeader(n.headers);let o={method:t,body:a?JSON.stringify(n.body):n.body,headers:n.headers,credentials:"include"};return(0,ru.default)(`${this.host}${r}`,o)};this.post=this.apiCall("POST");this.get=this.apiCall("GET");this.patch=this.apiCall("PATCH");this.del=this.apiCall("DELETE");this.put=this.apiCall("PUT");this.host=t}},Qa=Fa;var qn=require("@budibase/types"),P=require("@budibase/backend-core");var De={};S(De,{bustCache:()=>pu,getCurrentUsageValues:()=>fu,getQuotaUsage:()=>yt,setAllUsage:()=>Va,setAppUsageValue:()=>$a,setUsage:()=>cu,setUsagePerApp:()=>lu,utils:()=>Ir});var ee=require("@budibase/types"),H=require("@budibase/backend-core");var Ir={};S(Ir,{generateBaseQuotaUsage:()=>vn,generateNewMonthlyQuotas:()=>hr,generateNewQuotaUsage:()=>Wa,getBreakdownName:()=>Rn,getCurrentMonthString:()=>rt,setCurrentMonth:()=>En,setQuotaReset:()=>ja});var V=require("@budibase/types"),wn=require("@budibase/backend-core"),au=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},ja=e=>{e.quotaReset=au()},rt=()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},vn=()=>({usageQuota:{[V.StaticQuotaName.APPS]:0,[V.StaticQuotaName.ROWS]:0,[V.StaticQuotaName.PLUGINS]:0,[V.StaticQuotaName.USERS]:0,[V.StaticQuotaName.CREATORS]:0,[V.StaticQuotaName.USER_GROUPS]:0,[V.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[rt()]:hr()}}),Wa=()=>{let e={_id:wn.db.StaticDatabases.GLOBAL.docs.usageQuota,quotaReset:au(),...vn(),apps:{}};return En(e),e},hr=()=>({[V.MonthlyQuotaName.QUERIES]:0,[V.MonthlyQuotaName.AUTOMATIONS]:0,[V.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,triggers:{}}),En=e=>{let t=rt();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=hr()),e.monthly.current=e.monthly[t]},Rn=(e,t)=>{if(!(!t||!e))switch(e){case V.MonthlyQuotaName.AUTOMATIONS:return V.BreakdownQuotaName.AUTOMATIONS;case V.MonthlyQuotaName.QUERIES:return wn.db.isTableId(t)?V.BreakdownQuotaName.ROW_QUERIES:wn.db.isDatasourceId(t)?V.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}};var ou=H.Duration.fromSeconds(60).toMs(),{Writethrough:su}=H.cache.writethrough;function XI(e){return delete e.usageLimits,delete e.usageQuota.automationRuns,delete e.usageQuota.emails,delete e.usageQuota.storage,delete e.usageQuota.views,delete e.usageQuota.publishedApps,delete e.usageQuota.developers,e}var _n=()=>H.tenancy.isSelfHostUsingCloud()?new su(H.tenancy.getSelfHostCloudDB(),ou):new su(H.tenancy.getGlobalDB(),ou),uu=()=>H.tenancy.isSelfHostUsingCloud()?`quota_usage_${H.context.getTenantId()}`:H.db.StaticDatabases.GLOBAL.docs.usageQuota,pu=async()=>{let e=_n(),t=uu(),r=await e.tryGet(t);!r||!r._rev||await e.remove(t,r._rev)},yt=async()=>{let e=_n(),t=await e.tryGet(uu());if(!t){t=Wa();let{rev:r}=await e.put(t);t._rev=r}return En(t),ja(t),XI(t)},cu=async(e,t,r)=>Va({name:t,type:r,values:{total:e}}),lu=async(e,t,r)=>{let n=_n(),a=await yt(),o=Object.values(e).reduce((s,l)=>s+l,0);for(let[s,l]of Object.entries(e))a=du(a,t,r,{total:o,app:l},{appId:s});let i=await n.put(a);return a._rev=i.rev,a},ZI=(e,t,r,n)=>{let a=Rn(t,r);if(!a||!n?.breakdown)return e;e.breakdown||(e.breakdown={}),e.breakdown[a]||(e.breakdown[a]={parent:t,values:{}});let o=e.breakdown[a];return o.values[r]=n.breakdown,e},$a=(e,t,r,n={},a)=>{let o;try{o=H.db.getProdAppID(n?.appId||H.context.getAppId())}catch{}if(!o||!a.app||!ee.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[o]||(e.apps={...e.apps,[o]:vn()});let i=e.apps[o];switch(r){case ee.QuotaUsageType.STATIC:i.usageQuota[t]=a.app;break;case ee.QuotaUsageType.MONTHLY:{let s=rt(),l=t,f=i.monthly[s];f||(i.monthly[s]=hr(),f=i.monthly[s]),f[l]=a.app,ee.BREAKDOWN_QUOTA_NAMES.includes(l)&&n?.id&&(f=ZI(f,l,n.id,a));break}}return e},iu=(e,t,r,n)=>{if(!ee.APP_QUOTA_NAMES.includes(r))return{};let a;try{a=H.db.getProdAppID(H.context.getAppId())}catch{}if(!a||!e.apps||!e.apps[a])return{app:0};let o=e.apps[a];switch(t){case ee.QuotaUsageType.STATIC:if(o.usageQuota?.[r])return{app:o.usageQuota[r]};break;case ee.QuotaUsageType.MONTHLY:{let i=rt(),s=r;if(!o.monthly?.[i]?.[s])break;let l=o.monthly[i],f=l[s],m,g=Rn(s,n);return g&&n&&l.breakdown?.[g]&&(m=l.breakdown[g]?.values[n]),{app:f,breakdown:m||0}}}return{app:0}},eb=(e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},tb=(e,t,r,n)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),n&&(r.monthly[t].triggers[e]=n)},du=(e,t,r,n,a={})=>{if(r===ee.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=n.total,eb(t,e,n.triggers);else if(r===ee.QuotaUsageType.MONTHLY){t=t;let o=rt();e.monthly[o][t]=n.total,tb(t,o,e,n.triggers)}else throw new Error(`Invalid usage type: ${r}`);return $a(e,t,r,a,n)},Va=async e=>{let t=Array.isArray(e)?e:[e],r=_n(),n=await yt();for(let o of t)n=du(n,o.name,o.type,o.values,o.opts);let a=await r.put(n,0);return n._rev=a.rev,n},fu=async(e,t,r)=>{let n=await yt(),a=0,o={};switch(e){case ee.QuotaUsageType.STATIC:if(n.usageQuota[t]){let i=t;a=n.usageQuota[i],o=iu(n,e,t,r)}break;case ee.QuotaUsageType.MONTHLY:{let i=rt(),s=t;n.monthly[i][s]&&(a=n.monthly[i][s],o=iu(n,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return ee.APP_QUOTA_NAMES.includes(t)&&!(o.app||o.breakdown)&&(o.app=o.app||0,o.breakdown=o.breakdown||0),{total:a,app:o.app,breakdown:o.breakdown}};var Ie={};S(Ie,{destroy:()=>ab,get:()=>Ka,save:()=>nb});var nt=require("@budibase/backend-core"),rb=()=>({_id:nt.StaticDatabases.GLOBAL.docs.licenseInfo}),nb=async e=>{let t=await Ka();t={...t,...e};let n=await nt.tenancy.getGlobalDB().put(t);return t._rev=n.rev,t},Ka=async()=>{let e=nt.tenancy.getGlobalDB();try{return await e.get(nt.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return rb();throw t}},ab=async()=>{let e=nt.tenancy.getGlobalDB(),t=await Ka();t&&t._rev&&await e.remove(nt.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)};var D={};S(D,{bulkSave:()=>Ab,destroy:()=>hb,fetch:()=>fb,generateUserGroupID:()=>cb,get:()=>gb,getBulk:()=>mb,getByName:()=>Ha,getGroupUsers:()=>Tn,getGroupUsersParams:()=>hu,getUserGroupsParams:()=>Au,save:()=>yb});var q=require("@budibase/backend-core");var _e=require("@budibase/types"),Bt=require("@budibase/backend-core");async function gu(){let e=Bt.sql.designDoc.base("type");e.sql.tables={[_e.AUDIT_LOG_TYPE]:{fields:{appId:_e.SQLiteType.TEXT,event:_e.SQLiteType.TEXT,userId:_e.SQLiteType.TEXT,timestamp:_e.SQLiteType.TEXT,metadata:_e.SQLiteType.TEXT,name:_e.SQLiteType.TEXT,type:_e.SQLiteType.TEXT,fallback:_e.SQLiteType.TEXT}}};let t=Bt.context.getAuditLogsDB(),r;try{r=await t.get(Bt.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(n){if(n.status===404)r=e;else throw n}await t.put(r)}var xn=require("@budibase/backend-core"),{ViewName:ob,SEPARATOR:sb,DocumentType:ib,createView:ub}=xn.db,pb=ib.USER+sb;async function mu(){let e=xn.tenancy.getGlobalDB(),t=`function(doc) {
4
- if (doc._id.startsWith("${pb}") && Array.isArray(doc.userGroups)) {
3
+ `)}ug.exports=sC});var bn=u((sj,cg)=>{"use strict";function iC(e,t){for(var r=-1,a=e==null?0:e.length;++r<a&&t(e[r],r,e)!==!1;);return e}cg.exports=iC});var dg=u((ij,lg)=>{"use strict";var uC=bn(),pC=go(),cC=1,lC=2,dC=8,fC=16,gC=32,mC=64,yC=128,AC=256,hC=512,bC=[["ary",yC],["bind",cC],["bindKey",lC],["curry",dC],["curryRight",fC],["flip",hC],["partial",gC],["partialRight",mC],["rearg",AC]];function IC(e,t){return uC(bC,function(r){var a="_."+r[0];t&r[1]&&!pC(e,a)&&e.push(a)}),e.sort()}lg.exports=IC});var Fs=u((uj,fg)=>{"use strict";var SC=ig(),wC=pg(),vC=ka(),EC=dg();function RC(e,t,r){var a=t+"";return vC(e,wC(a,EC(SC(a),r)))}fg.exports=RC});var Qs=u((pj,yg)=>{"use strict";var _C=ng(),xC=ks(),TC=Fs(),PC=1,CC=2,OC=4,qC=8,gg=32,mg=64;function LC(e,t,r,a,n,o,i,s,l,f){var m=t&qC,g=m?i:void 0,y=m?void 0:i,h=m?o:void 0,v=m?void 0:o;t|=m?gg:mg,t&=~(m?mg:gg),t&OC||(t&=~(PC|CC));var T=[e,t,n,h,g,v,y,s,l,f],_=r.apply(void 0,T);return _C(e)&&xC(_,T),_.placeholder=a,TC(_,e,t)}yg.exports=LC});var Ws=u((cj,Ag)=>{"use strict";function UC(e){var t=e;return t.placeholder}Ag.exports=UC});var bg=u((lj,hg)=>{"use strict";var DC=Ht(),BC=aa(),NC=Math.min;function GC(e,t){for(var r=e.length,a=NC(t.length,r),n=DC(e);a--;){var o=t[a];e[a]=BC(o,r)?n[o]:void 0}return e}hg.exports=GC});var In=u((dj,Sg)=>{"use strict";var Ig="__lodash_placeholder__";function MC(e,t){for(var r=-1,a=e.length,n=0,o=[];++r<a;){var i=e[r];(i===t||i===Ig)&&(e[r]=Ig,o[n++]=r)}return o}Sg.exports=MC});var $s=u((fj,Eg)=>{"use strict";var kC=Bs(),FC=Ns(),QC=Ff(),wg=ma(),jC=Qs(),WC=Ws(),$C=bg(),VC=In(),KC=re(),YC=1,HC=2,JC=8,zC=16,XC=128,ZC=512;function vg(e,t,r,a,n,o,i,s,l,f){var m=t&XC,g=t&YC,y=t&HC,h=t&(JC|zC),v=t&ZC,T=y?void 0:wg(e);function _(){for(var E=arguments.length,U=Array(E),et=E;et--;)U[et]=arguments[et];if(h)var Ae=WC(_),tt=QC(U,Ae);if(a&&(U=kC(U,a,n,h)),o&&(U=FC(U,o,i,h)),E-=tt,h&&E<f){var Dt=VC(U,Ae);return jC(e,t,vg,_.placeholder,r,U,Dt,s,l,f-E)}var mr=g?r:this,yr=y?mr[e]:e;return E=U.length,s?U=$C(U,s):v&&E>1&&U.reverse(),m&&l<E&&(U.length=l),this&&this!==KC&&this instanceof _&&(yr=T||wg(yr)),yr.apply(mr,U)}return _}Eg.exports=vg});var _g=u((gj,Rg)=>{"use strict";var eO=Ma(),tO=ma(),rO=$s(),aO=Qs(),nO=Ws(),oO=In(),sO=re();function iO(e,t,r){var a=tO(e);function n(){for(var o=arguments.length,i=Array(o),s=o,l=nO(n);s--;)i[s]=arguments[s];var f=o<3&&i[0]!==l&&i[o-1]!==l?[]:oO(i,l);if(o-=f.length,o<r)return aO(e,t,rO,n.placeholder,void 0,i,f,void 0,void 0,r-o);var m=this&&this!==sO&&this instanceof n?a:e;return eO(m,this,i)}return n}Rg.exports=iO});var Tg=u((mj,xg)=>{"use strict";var uO=Ma(),pO=ma(),cO=re(),lO=1;function dO(e,t,r,a){var n=t&lO,o=pO(e);function i(){for(var s=-1,l=arguments.length,f=-1,m=a.length,g=Array(m+l),y=this&&this!==cO&&this instanceof i?o:e;++f<m;)g[f]=a[f];for(;l--;)g[f++]=arguments[++s];return uO(y,n?r:this,g)}return i}xg.exports=dO});var Ug=u((yj,Lg)=>{"use strict";var fO=Bs(),gO=Ns(),Pg=In(),Cg="__lodash_placeholder__",Vs=1,mO=2,yO=4,Og=8,ya=128,qg=256,AO=Math.min;function hO(e,t){var r=e[1],a=t[1],n=r|a,o=n<(Vs|mO|ya),i=a==ya&&r==Og||a==ya&&r==qg&&e[7].length<=t[8]||a==(ya|qg)&&t[7].length<=t[8]&&r==Og;if(!(o||i))return e;a&Vs&&(e[2]=t[2],n|=r&Vs?0:yO);var s=t[3];if(s){var l=e[3];e[3]=l?fO(l,s,t[4]):s,e[4]=l?Pg(e[3],Cg):t[4]}return s=t[5],s&&(l=e[5],e[5]=l?gO(l,s,t[6]):s,e[6]=l?Pg(e[5],Cg):t[6]),s=t[7],s&&(e[7]=s),a&ya&&(e[8]=e[8]==null?t[8]:AO(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=n,e}Lg.exports=hO});var Bg=u((Aj,Dg)=>{"use strict";var bO=/\s/;function IO(e){for(var t=e.length;t--&&bO.test(e.charAt(t)););return t}Dg.exports=IO});var Gg=u((hj,Ng)=>{"use strict";var SO=Bg(),wO=/^\s+/;function vO(e){return e&&e.slice(0,SO(e)+1).replace(wO,"")}Ng.exports=vO});var ir=u((bj,Mg)=>{"use strict";var EO=st(),RO=ce(),_O="[object Symbol]";function xO(e){return typeof e=="symbol"||RO(e)&&EO(e)==_O}Mg.exports=xO});var jg=u((Ij,Qg)=>{"use strict";var TO=Gg(),kg=Se(),PO=ir(),Fg=0/0,CO=/^[-+]0x[0-9a-f]+$/i,OO=/^0b[01]+$/i,qO=/^0o[0-7]+$/i,LO=parseInt;function UO(e){if(typeof e=="number")return e;if(PO(e))return Fg;if(kg(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=kg(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=TO(e);var r=OO.test(e);return r||qO.test(e)?LO(e.slice(2),r?2:8):CO.test(e)?Fg:+e}Qg.exports=UO});var Vg=u((Sj,$g)=>{"use strict";var DO=jg(),Wg=1/0,BO=17976931348623157e292;function NO(e){if(!e)return e===0?e:0;if(e=DO(e),e===Wg||e===-Wg){var t=e<0?-1:1;return t*BO}return e===e?e:0}$g.exports=NO});var Ks=u((wj,Kg)=>{"use strict";var GO=Vg();function MO(e){var t=GO(e),r=t%1;return t===t?r?t-r:t:0}Kg.exports=MO});var Sn=u((vj,Xg)=>{"use strict";var kO=Ds(),FO=Nf(),QO=_g(),jO=$s(),WO=Tg(),$O=Gs(),VO=Ug(),KO=ks(),YO=Fs(),Yg=Ks(),HO="Expected a function",Hg=1,JO=2,Ys=8,Hs=16,Js=32,Jg=64,zg=Math.max;function zO(e,t,r,a,n,o,i,s){var l=t&JO;if(!l&&typeof e!="function")throw new TypeError(HO);var f=a?a.length:0;if(f||(t&=~(Js|Jg),a=n=void 0),i=i===void 0?i:zg(Yg(i),0),s=s===void 0?s:Yg(s),f-=n?n.length:0,t&Jg){var m=a,g=n;a=n=void 0}var y=l?void 0:$O(e),h=[e,t,r,a,n,m,g,o,i,s];if(y&&VO(h,y),e=h[0],t=h[1],r=h[2],a=h[3],n=h[4],s=h[9]=h[9]===void 0?l?0:e.length:zg(h[9]-f,0),!s&&t&(Ys|Hs)&&(t&=~(Ys|Hs)),!t||t==Hg)var v=FO(e,t,r);else t==Ys||t==Hs?v=QO(e,t,s):(t==Js||t==(Hg|Js))&&!n.length?v=WO(e,t,r,a):v=jO.apply(void 0,h);var T=y?kO:KO;return YO(T(v,h),e,t)}Xg.exports=zO});var em=u((Ej,Zg)=>{"use strict";var XO=Sn(),ZO=128;function eq(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,XO(e,ZO,void 0,void 0,void 0,void 0,t)}Zg.exports=eq});var rm=u((Rj,tm)=>{"use strict";var tq=Ro(),rq=tq(Object.keys,Object);tm.exports=rq});var zs=u((_j,am)=>{"use strict";var aq=Ya(),nq=rm(),oq=Object.prototype,sq=oq.hasOwnProperty;function iq(e){if(!aq(e))return nq(e);var t=[];for(var r in Object(e))sq.call(e,r)&&r!="constructor"&&t.push(r);return t}am.exports=iq});var ur=u((xj,nm)=>{"use strict";var uq=Oo(),pq=zs(),cq=Vt();function lq(e){return cq(e)?uq(e):pq(e)}nm.exports=lq});var Xs=u((Tj,om)=>{"use strict";var dq=Xt(),fq=ur();function gq(e,t){return e&&dq(t,fq(t),e)}om.exports=gq});var im=u((Pj,sm)=>{"use strict";var mq=Xt(),yq=Zt();function Aq(e,t){return e&&mq(t,yq(t),e)}sm.exports=Aq});var pm=u((Cj,um)=>{"use strict";function hq(e,t){for(var r=-1,a=e==null?0:e.length,n=0,o=[];++r<a;){var i=e[r];t(i,r,e)&&(o[n++]=i)}return o}um.exports=hq});var Zs=u((Oj,cm)=>{"use strict";function bq(){return[]}cm.exports=bq});var wn=u((qj,dm)=>{"use strict";var Iq=pm(),Sq=Zs(),wq=Object.prototype,vq=wq.propertyIsEnumerable,lm=Object.getOwnPropertySymbols,Eq=lm?function(e){return e==null?[]:(e=Object(e),Iq(lm(e),function(t){return vq.call(e,t)}))}:Sq;dm.exports=Eq});var gm=u((Lj,fm)=>{"use strict";var Rq=Xt(),_q=wn();function xq(e,t){return Rq(e,_q(e),t)}fm.exports=xq});var ei=u((Uj,mm)=>{"use strict";var Tq=Ga(),Pq=Ka(),Cq=wn(),Oq=Zs(),qq=Object.getOwnPropertySymbols,Lq=qq?function(e){for(var t=[];e;)Tq(t,Cq(e)),e=Pq(e);return t}:Oq;mm.exports=Lq});var Am=u((Dj,ym)=>{"use strict";var Uq=Xt(),Dq=ei();function Bq(e,t){return Uq(e,Dq(e),t)}ym.exports=Bq});var ti=u((Bj,hm)=>{"use strict";var Nq=Ga(),Gq=X();function Mq(e,t,r){var a=t(e);return Gq(e)?a:Nq(a,r(e))}hm.exports=Mq});var ri=u((Nj,bm)=>{"use strict";var kq=ti(),Fq=wn(),Qq=ur();function jq(e){return kq(e,Qq,Fq)}bm.exports=jq});var Sm=u((Gj,Im)=>{"use strict";var Wq=ti(),$q=ei(),Vq=Zt();function Kq(e){return Wq(e,Vq,$q)}Im.exports=Kq});var vm=u((Mj,wm)=>{"use strict";var Yq=it(),Hq=re(),Jq=Yq(Hq,"DataView");wm.exports=Jq});var Rm=u((kj,Em)=>{"use strict";var zq=it(),Xq=re(),Zq=zq(Xq,"Promise");Em.exports=Zq});var cr=u((Fj,qm)=>{"use strict";var ai=vm(),ni=Fa(),oi=Rm(),si=yo(),ii=Ls(),Om=st(),pr=uo(),_m="[object Map]",eL="[object Object]",xm="[object Promise]",Tm="[object Set]",Pm="[object WeakMap]",Cm="[object DataView]",tL=pr(ai),rL=pr(ni),aL=pr(oi),nL=pr(si),oL=pr(ii),Pt=Om;(ai&&Pt(new ai(new ArrayBuffer(1)))!=Cm||ni&&Pt(new ni)!=_m||oi&&Pt(oi.resolve())!=xm||si&&Pt(new si)!=Tm||ii&&Pt(new ii)!=Pm)&&(Pt=function(e){var t=Om(e),r=t==eL?e.constructor:void 0,a=r?pr(r):"";if(a)switch(a){case tL:return Cm;case rL:return _m;case aL:return xm;case nL:return Tm;case oL:return Pm}return t});qm.exports=Pt});var Um=u((Qj,Lm)=>{"use strict";var sL=Object.prototype,iL=sL.hasOwnProperty;function uL(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&iL.call(e,"index")&&(r.index=e.index,r.input=e.input),r}Lm.exports=uL});var Bm=u((jj,Dm)=>{"use strict";var pL=Va();function cL(e,t){var r=t?pL(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}Dm.exports=cL});var Gm=u((Wj,Nm)=>{"use strict";var lL=/\w*$/;function dL(e){var t=new e.constructor(e.source,lL.exec(e));return t.lastIndex=e.lastIndex,t}Nm.exports=dL});var jm=u(($j,Qm)=>{"use strict";var Mm=It(),km=Mm?Mm.prototype:void 0,Fm=km?km.valueOf:void 0;function fL(e){return Fm?Object(Fm.call(e)):{}}Qm.exports=fL});var $m=u((Vj,Wm)=>{"use strict";var gL=Va(),mL=Bm(),yL=Gm(),AL=jm(),hL=Eo(),bL="[object Boolean]",IL="[object Date]",SL="[object Map]",wL="[object Number]",vL="[object RegExp]",EL="[object Set]",RL="[object String]",_L="[object Symbol]",xL="[object ArrayBuffer]",TL="[object DataView]",PL="[object Float32Array]",CL="[object Float64Array]",OL="[object Int8Array]",qL="[object Int16Array]",LL="[object Int32Array]",UL="[object Uint8Array]",DL="[object Uint8ClampedArray]",BL="[object Uint16Array]",NL="[object Uint32Array]";function GL(e,t,r){var a=e.constructor;switch(t){case xL:return gL(e);case bL:case IL:return new a(+e);case TL:return mL(e,r);case PL:case CL:case OL:case qL:case LL:case UL:case DL:case BL:case NL:return hL(e,r);case SL:return new a;case wL:case RL:return new a(e);case vL:return yL(e);case EL:return new a;case _L:return AL(e)}}Wm.exports=GL});var Km=u((Kj,Vm)=>{"use strict";var ML=cr(),kL=ce(),FL="[object Map]";function QL(e){return kL(e)&&ML(e)==FL}Vm.exports=QL});var zm=u((Yj,Jm)=>{"use strict";var jL=Km(),WL=Ha(),Ym=Ja(),Hm=Ym&&Ym.isMap,$L=Hm?WL(Hm):jL;Jm.exports=$L});var Zm=u((Hj,Xm)=>{"use strict";var VL=cr(),KL=ce(),YL="[object Set]";function HL(e){return KL(e)&&VL(e)==YL}Xm.exports=HL});var ay=u((Jj,ry)=>{"use strict";var JL=Zm(),zL=Ha(),ey=Ja(),ty=ey&&ey.isSet,XL=ty?zL(ty):JL;ry.exports=XL});var ui=u((zj,iy)=>{"use strict";var ZL=Hr(),eU=bn(),tU=Co(),rU=Xs(),aU=im(),nU=wo(),oU=Ht(),sU=gm(),iU=Am(),uU=ri(),pU=Sm(),cU=cr(),lU=Um(),dU=$m(),fU=_o(),gU=X(),mU=ea(),yU=zm(),AU=Se(),hU=ay(),bU=ur(),IU=Zt(),SU=1,wU=2,vU=4,ny="[object Arguments]",EU="[object Array]",RU="[object Boolean]",_U="[object Date]",xU="[object Error]",oy="[object Function]",TU="[object GeneratorFunction]",PU="[object Map]",CU="[object Number]",sy="[object Object]",OU="[object RegExp]",qU="[object Set]",LU="[object String]",UU="[object Symbol]",DU="[object WeakMap]",BU="[object ArrayBuffer]",NU="[object DataView]",GU="[object Float32Array]",MU="[object Float64Array]",kU="[object Int8Array]",FU="[object Int16Array]",QU="[object Int32Array]",jU="[object Uint8Array]",WU="[object Uint8ClampedArray]",$U="[object Uint16Array]",VU="[object Uint32Array]",O={};O[ny]=O[EU]=O[BU]=O[NU]=O[RU]=O[_U]=O[GU]=O[MU]=O[kU]=O[FU]=O[QU]=O[PU]=O[CU]=O[sy]=O[OU]=O[qU]=O[LU]=O[UU]=O[jU]=O[WU]=O[$U]=O[VU]=!0;O[xU]=O[oy]=O[DU]=!1;function vn(e,t,r,a,n,o){var i,s=t&SU,l=t&wU,f=t&vU;if(r&&(i=n?r(e,a,n,o):r(e)),i!==void 0)return i;if(!AU(e))return e;var m=gU(e);if(m){if(i=lU(e),!s)return oU(e,i)}else{var g=cU(e),y=g==oy||g==TU;if(mU(e))return nU(e,s);if(g==sy||g==ny||y&&!n){if(i=l||y?{}:fU(e),!s)return l?iU(e,aU(i,e)):sU(e,rU(i,e))}else{if(!O[g])return n?e:{};i=dU(e,g,s)}}o||(o=new ZL);var h=o.get(e);if(h)return h;o.set(e,i),hU(e)?e.forEach(function(_){i.add(vn(_,t,r,_,e,o))}):yU(e)&&e.forEach(function(_,E){i.set(E,vn(_,t,r,E,e,o))});var v=f?l?pU:uU:l?IU:bU,T=m?void 0:v(e);return eU(T||e,function(_,E){T&&(E=_,_=e[E]),tU(i,E,vn(_,t,r,E,e,o))}),i}iy.exports=vn});var py=u((Xj,uy)=>{"use strict";var KU=ui(),YU=4;function HU(e){return KU(e,YU)}uy.exports=HU});var ly=u((Zj,cy)=>{"use strict";var JU=Sn(),zU=8;function pi(e,t,r){t=r?void 0:t;var a=JU(e,zU,void 0,void 0,void 0,void 0,void 0,t);return a.placeholder=pi.placeholder,a}pi.placeholder={};cy.exports=pi});var fy=u((eW,dy)=>{"use strict";var XU=st(),ZU=ce(),eD=xo(),tD="[object DOMException]",rD="[object Error]";function aD(e){if(!ZU(e))return!1;var t=XU(e);return t==rD||t==tD||typeof e.message=="string"&&typeof e.name=="string"&&!eD(e)}dy.exports=aD});var my=u((tW,gy)=>{"use strict";var nD=cr(),oD=ce(),sD="[object WeakMap]";function iD(e){return oD(e)&&nD(e)==sD}gy.exports=iD});var Ay=u((rW,yy)=>{"use strict";function uD(e,t){for(var r=-1,a=e==null?0:e.length;++r<a;)if(t(e[r],r,e))return!0;return!1}yy.exports=uD});var ci=u((aW,hy)=>{"use strict";var pD=fo(),cD=Ay(),lD=mo(),dD=1,fD=2;function gD(e,t,r,a,n,o){var i=r&dD,s=e.length,l=t.length;if(s!=l&&!(i&&l>s))return!1;var f=o.get(e),m=o.get(t);if(f&&m)return f==t&&m==e;var g=-1,y=!0,h=r&fD?new pD:void 0;for(o.set(e,t),o.set(t,e);++g<s;){var v=e[g],T=t[g];if(a)var _=i?a(T,v,g,t,e,o):a(v,T,g,e,t,o);if(_!==void 0){if(_)continue;y=!1;break}if(h){if(!cD(t,function(E,U){if(!lD(h,U)&&(v===E||n(v,E,r,a,o)))return h.push(U)})){y=!1;break}}else if(!(v===T||n(v,T,r,a,o))){y=!1;break}}return o.delete(e),o.delete(t),y}hy.exports=gD});var Iy=u((nW,by)=>{"use strict";function mD(e){var t=-1,r=Array(e.size);return e.forEach(function(a,n){r[++t]=[n,a]}),r}by.exports=mD});var Ry=u((oW,Ey)=>{"use strict";var Sy=It(),wy=vo(),yD=jt(),AD=ci(),hD=Iy(),bD=Wa(),ID=1,SD=2,wD="[object Boolean]",vD="[object Date]",ED="[object Error]",RD="[object Map]",_D="[object Number]",xD="[object RegExp]",TD="[object Set]",PD="[object String]",CD="[object Symbol]",OD="[object ArrayBuffer]",qD="[object DataView]",vy=Sy?Sy.prototype:void 0,li=vy?vy.valueOf:void 0;function LD(e,t,r,a,n,o,i){switch(r){case qD:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case OD:return!(e.byteLength!=t.byteLength||!o(new wy(e),new wy(t)));case wD:case vD:case _D:return yD(+e,+t);case ED:return e.name==t.name&&e.message==t.message;case xD:case PD:return e==t+"";case RD:var s=hD;case TD:var l=a&ID;if(s||(s=bD),e.size!=t.size&&!l)return!1;var f=i.get(e);if(f)return f==t;a|=SD,i.set(e,t);var m=AD(s(e),s(t),a,n,o,i);return i.delete(e),m;case CD:if(li)return li.call(e)==li.call(t)}return!1}Ey.exports=LD});var Ty=u((sW,xy)=>{"use strict";var _y=ri(),UD=1,DD=Object.prototype,BD=DD.hasOwnProperty;function ND(e,t,r,a,n,o){var i=r&UD,s=_y(e),l=s.length,f=_y(t),m=f.length;if(l!=m&&!i)return!1;for(var g=l;g--;){var y=s[g];if(!(i?y in t:BD.call(t,y)))return!1}var h=o.get(e),v=o.get(t);if(h&&v)return h==t&&v==e;var T=!0;o.set(e,t),o.set(t,e);for(var _=i;++g<l;){y=s[g];var E=e[y],U=t[y];if(a)var et=i?a(U,E,y,t,e,o):a(E,U,y,e,t,o);if(!(et===void 0?E===U||n(E,U,r,a,o):et)){T=!1;break}_||(_=y=="constructor")}if(T&&!_){var Ae=e.constructor,tt=t.constructor;Ae!=tt&&"constructor"in e&&"constructor"in t&&!(typeof Ae=="function"&&Ae instanceof Ae&&typeof tt=="function"&&tt instanceof tt)&&(T=!1)}return o.delete(e),o.delete(t),T}xy.exports=ND});var By=u((iW,Dy)=>{"use strict";var di=Hr(),GD=ci(),MD=Ry(),kD=Ty(),Py=cr(),Cy=X(),Oy=ea(),FD=za(),QD=1,qy="[object Arguments]",Ly="[object Array]",En="[object Object]",jD=Object.prototype,Uy=jD.hasOwnProperty;function WD(e,t,r,a,n,o){var i=Cy(e),s=Cy(t),l=i?Ly:Py(e),f=s?Ly:Py(t);l=l==qy?En:l,f=f==qy?En:f;var m=l==En,g=f==En,y=l==f;if(y&&Oy(e)){if(!Oy(t))return!1;i=!0,m=!1}if(y&&!m)return o||(o=new di),i||FD(e)?GD(e,t,r,a,n,o):MD(e,t,l,r,a,n,o);if(!(r&QD)){var h=m&&Uy.call(e,"__wrapped__"),v=g&&Uy.call(t,"__wrapped__");if(h||v){var T=h?e.value():e,_=v?t.value():t;return o||(o=new di),n(T,_,r,a,o)}}return y?(o||(o=new di),kD(e,t,r,a,n,o)):!1}Dy.exports=WD});var fi=u((uW,My)=>{"use strict";var $D=By(),Ny=ce();function Gy(e,t,r,a,n){return e===t?!0:e==null||t==null||!Ny(e)&&!Ny(t)?e!==e&&t!==t:$D(e,t,r,a,Gy,n)}My.exports=Gy});var Fy=u((pW,ky)=>{"use strict";var VD=Hr(),KD=fi(),YD=1,HD=2;function JD(e,t,r,a){var n=r.length,o=n,i=!a;if(e==null)return!o;for(e=Object(e);n--;){var s=r[n];if(i&&s[2]?s[1]!==e[s[0]]:!(s[0]in e))return!1}for(;++n<o;){s=r[n];var l=s[0],f=e[l],m=s[1];if(i&&s[2]){if(f===void 0&&!(l in e))return!1}else{var g=new VD;if(a)var y=a(f,m,l,e,t,g);if(!(y===void 0?KD(m,f,YD|HD,a,g):y))return!1}}return!0}ky.exports=JD});var gi=u((cW,Qy)=>{"use strict";var zD=Se();function XD(e){return e===e&&!zD(e)}Qy.exports=XD});var Wy=u((lW,jy)=>{"use strict";var ZD=gi(),eB=ur();function tB(e){for(var t=eB(e),r=t.length;r--;){var a=t[r],n=e[a];t[r]=[a,n,ZD(n)]}return t}jy.exports=tB});var mi=u((dW,$y)=>{"use strict";function rB(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}$y.exports=rB});var Ky=u((fW,Vy)=>{"use strict";var aB=Fy(),nB=Wy(),oB=mi();function sB(e){var t=nB(e);return t.length==1&&t[0][2]?oB(t[0][0],t[0][1]):function(r){return r===e||aB(r,e,t)}}Vy.exports=sB});var Rn=u((gW,Yy)=>{"use strict";var iB=X(),uB=ir(),pB=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,cB=/^\w*$/;function lB(e,t){if(iB(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||uB(e)?!0:cB.test(e)||!pB.test(e)||t!=null&&e in Object(t)}Yy.exports=lB});var zy=u((mW,Jy)=>{"use strict";var Hy=Qa(),dB="Expected a function";function yi(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(dB);var r=function(){var a=arguments,n=t?t.apply(this,a):a[0],o=r.cache;if(o.has(n))return o.get(n);var i=e.apply(this,a);return r.cache=o.set(n,i)||o,i};return r.cache=new(yi.Cache||Hy),r}yi.Cache=Hy;Jy.exports=yi});var Zy=u((yW,Xy)=>{"use strict";var fB=zy(),gB=500;function mB(e){var t=fB(e,function(a){return r.size===gB&&r.clear(),a}),r=t.cache;return t}Xy.exports=mB});var Ai=u((AW,eA)=>{"use strict";var yB=Zy(),AB=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,hB=/\\(\\)?/g,bB=yB(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(AB,function(r,a,n,o){t.push(n?o.replace(hB,"$1"):a||r)}),t});eA.exports=bB});var hi=u((hW,tA)=>{"use strict";function IB(e,t){for(var r=-1,a=e==null?0:e.length,n=Array(a);++r<a;)n[r]=t(e[r],r,e);return n}tA.exports=IB});var iA=u((bW,sA)=>{"use strict";var rA=It(),SB=hi(),wB=X(),vB=ir(),EB=1/0,aA=rA?rA.prototype:void 0,nA=aA?aA.toString:void 0;function oA(e){if(typeof e=="string")return e;if(wB(e))return SB(e,oA)+"";if(vB(e))return nA?nA.call(e):"";var t=e+"";return t=="0"&&1/e==-EB?"-0":t}sA.exports=oA});var bi=u((IW,uA)=>{"use strict";var RB=iA();function _B(e){return e==null?"":RB(e)}uA.exports=_B});var Ii=u((SW,pA)=>{"use strict";var xB=X(),TB=Rn(),PB=Ai(),CB=bi();function OB(e,t){return xB(e)?e:TB(e,t)?[e]:PB(CB(e))}pA.exports=OB});var lr=u((wW,cA)=>{"use strict";var qB=ir(),LB=1/0;function UB(e){if(typeof e=="string"||qB(e))return e;var t=e+"";return t=="0"&&1/e==-LB?"-0":t}cA.exports=UB});var Si=u((vW,lA)=>{"use strict";var DB=Ii(),BB=lr();function NB(e,t){t=DB(t,e);for(var r=0,a=t.length;e!=null&&r<a;)e=e[BB(t[r++])];return r&&r==a?e:void 0}lA.exports=NB});var fA=u((EW,dA)=>{"use strict";var GB=Si();function MB(e,t,r){var a=e==null?void 0:GB(e,t);return a===void 0?r:a}dA.exports=MB});var mA=u((RW,gA)=>{"use strict";function kB(e,t){return e!=null&&t in Object(e)}gA.exports=kB});var AA=u((_W,yA)=>{"use strict";var FB=Ii(),QB=Qr(),jB=X(),WB=aa(),$B=$a(),VB=lr();function KB(e,t,r){t=FB(t,e);for(var a=-1,n=t.length,o=!1;++a<n;){var i=VB(t[a]);if(!(o=e!=null&&r(e,i)))break;e=e[i]}return o||++a!=n?o:(n=e==null?0:e.length,!!n&&$B(n)&&WB(i,n)&&(jB(e)||QB(e)))}yA.exports=KB});var bA=u((xW,hA)=>{"use strict";var YB=mA(),HB=AA();function JB(e,t){return e!=null&&HB(e,t,YB)}hA.exports=JB});var SA=u((TW,IA)=>{"use strict";var zB=fi(),XB=fA(),ZB=bA(),eN=Rn(),tN=gi(),rN=mi(),aN=lr(),nN=1,oN=2;function sN(e,t){return eN(e)&&tN(t)?rN(aN(e),t):function(r){var a=XB(r,e);return a===void 0&&a===t?ZB(r,e):zB(t,a,nN|oN)}}IA.exports=sN});var vA=u((PW,wA)=>{"use strict";function iN(e){return function(t){return t?.[e]}}wA.exports=iN});var RA=u((CW,EA)=>{"use strict";var uN=Si();function pN(e){return function(t){return uN(t,e)}}EA.exports=pN});var xA=u((OW,_A)=>{"use strict";var cN=vA(),lN=RA(),dN=Rn(),fN=lr();function gN(e){return dN(e)?cN(fN(e)):lN(e)}_A.exports=gN});var wi=u((qW,TA)=>{"use strict";var mN=Ky(),yN=SA(),AN=jr(),hN=X(),bN=xA();function IN(e){return typeof e=="function"?e:e==null?AN:typeof e=="object"?hN(e)?yN(e[0],e[1]):mN(e):bN(e)}TA.exports=IN});var CA=u((LW,PA)=>{"use strict";var SN=ui(),wN=wi(),vN=1;function EN(e){return wN(typeof e=="function"?e:SN(e,vN))}PA.exports=EN});var qA=u((UW,OA)=>{"use strict";var RN=oo();function _N(e){var t=e==null?0:e.length;return t?RN(e,1):[]}OA.exports=_N});var UA=u((DW,LA)=>{"use strict";var xN=qA(),TN=so(),PN=ka();function CN(e){return PN(TN(e,void 0,xN),e+"")}LA.exports=CN});var BA=u((BW,DA)=>{"use strict";var ON=Sn(),qN=UA(),LN=256,UN=qN(function(e,t){return ON(e,LN,void 0,void 0,void 0,t)});DA.exports=UN});var GA=u((NW,NA)=>{"use strict";var DN=hi(),BN=Ht(),NN=X(),GN=ir(),MN=Ai(),kN=lr(),FN=bi();function QN(e){return NN(e)?DN(e,kN):GN(e)?[e]:BN(MN(FN(e)))}NA.exports=QN});var kA=u((GW,MA)=>{"use strict";MA.exports={ary:em(),assign:Xs(),clone:py(),curry:ly(),forEach:bn(),isArray:X(),isError:fy(),isFunction:Wr(),isWeakMap:my(),iteratee:CA(),keys:zs(),rearg:BA(),toInteger:Ks(),toPath:GA()}});var QA=u((MW,FA)=>{"use strict";var jN=Pf(),WN=kA();function $N(e,t,r){return jN(WN,e,t,r)}FA.exports=$N});var vi=u((kW,WA)=>{"use strict";var VN=QA(),jA=VN("merge",qo());jA.placeholder=Ps();WA.exports=jA});var nb=u((mV,ab)=>{"use strict";function IG(e,t,r,a){for(var n=-1,o=e==null?0:e.length;++n<o;){var i=e[n];t(a,i,r(i),e)}return a}ab.exports=IG});var sb=u((yV,ob)=>{"use strict";var SG=So(),wG=ur();function vG(e,t){return e&&SG(e,t,wG)}ob.exports=vG});var ub=u((AV,ib)=>{"use strict";var EG=Vt();function RG(e,t){return function(r,a){if(r==null)return r;if(!EG(r))return e(r,a);for(var n=r.length,o=t?n:-1,i=Object(r);(t?o--:++o<n)&&a(i[o],o,i)!==!1;);return r}}ib.exports=RG});var cb=u((hV,pb)=>{"use strict";var _G=sb(),xG=ub(),TG=xG(_G);pb.exports=TG});var fb=u((bV,lb)=>{"use strict";var PG=cb();function CG(e,t,r,a){return PG(e,function(n,o,i){t(a,n,r(n),i)}),a}lb.exports=CG});var mb=u((IV,gb)=>{"use strict";var OG=nb(),qG=fb(),LG=wi(),UG=X();function DG(e,t){return function(r,a){var n=UG(r)?OG:qG,o=t?t():{};return n(r,e,LG(a,2),o)}}gb.exports=DG});var Ab=u((SV,yb)=>{"use strict";var BG=Jr(),NG=mb(),GG=Object.prototype,MG=GG.hasOwnProperty,kG=NG(function(e,t,r){MG.call(e,r)?e[r].push(t):BG(e,r,[t])});yb.exports=kG});var XG={};S(XG,{Method:()=>Mn,ai:()=>Ui,api:()=>Vi,auditLogs:()=>ct,automations:()=>un,backups:()=>ve,branding:()=>rn,constants:()=>Br,environmentVariables:()=>We,features:()=>we,groups:()=>G,init:()=>vf,licensing:()=>Me,logger:()=>Ct,mappers:()=>Q,middleware:()=>Pi,plugins:()=>pn,publicApi:()=>dn,quotas:()=>Qe,scimGroups:()=>dr,scimUsers:()=>se,sdk:()=>Ri,users:()=>Je,utils:()=>Ft});module.exports=Jb(XG);var Mn=(o=>(o.POST="POST",o.GET="GET",o.PATCH="PATCH",o.DELETE="DELETE",o.PUT="PUT",o))(Mn||{});var Ri={};S(Ri,{ai:()=>Ho,auditLogs:()=>ct,automations:()=>un,backups:()=>ve,branding:()=>rn,environmentVariables:()=>We,features:()=>we,groups:()=>G,init:()=>vf,licensing:()=>Me,logger:()=>Ct,plugins:()=>pn,publicApi:()=>dn,quotas:()=>Qe,scimGroups:()=>dr,scimUsers:()=>se,users:()=>Je,utils:()=>Ft});var rn={};S(rn,{getBrandingConfig:()=>kx});var we={};S(we,{checkBackups:()=>le,checkFeature:()=>en,checkFeatures:()=>jo,checkSCIM:()=>Ko,isAICustomConfigsEnabled:()=>Yo,isAppBuildersEnabled:()=>vt,isAuditLogsEnabled:()=>tn,isBackupsEnabled:()=>Wo,isBrandingEnabled:()=>$o,isBudibaseAIEnabled:()=>ia,isEnforceableSSO:()=>Nd,isExpandedPublicApiEnabled:()=>He,isPWAEnabled:()=>Dx,isSSOEnforced:()=>Bx,isSyncAutomationsEnabled:()=>Lx,isTriggerAutomationRunEnabled:()=>Ux,isUserGroupsEnabled:()=>Vo,isViewPermissionEnabled:()=>Nx,isViewReadonlyColumnsEnabled:()=>Gx});var H=require("@budibase/types"),Pe=require("@budibase/backend-core");var Me={};S(Me,{cache:()=>xe,client:()=>ot,features:()=>Ba,getFreeLicense:()=>ko,getLicense:()=>Go,getLicenseFromKey:()=>Mo,keys:()=>Qo,offline:()=>Xa,quotas:()=>Na});var xe={};S(xe,{getCachedLicense:()=>Dd,invalidate:()=>Bd,refresh:()=>St});var kn=require("@budibase/backend-core"),hr,zb=async()=>{hr=await new kn.redis.Client(kn.redis.utils.Databases.LICENSES).init()},Xb=async()=>{hr&&await hr.finish()};process.on("exit",async()=>{await Xb()});var Fn=async()=>(hr||await zb(),hr);var ot={};S(ot,{activateLicenseKey:()=>eo,getLicense:()=>Mt,getLicenseFromKey:()=>Zn,triggerQuota:()=>NI});var au=C(require("node-fetch"));var nu=require("@budibase/backend-core"),Qn=class{constructor(t){this.apiCall=t=>async(r="",a={})=>{a.headers||(a.headers={}),a.headers["Content-Type"]||(a.headers={"Content-Type":"application/json",Accept:"application/json",...a.headers});let n=a.headers["Content-Type"]==="application/json";nu.logging.correlation.setHeader(a.headers);let o={method:t,body:n?JSON.stringify(a.body):a.body,headers:a.headers,credentials:"include"};return(0,au.default)(`${this.host}${r}`,o)};this.post=this.apiCall("POST");this.get=this.apiCall("GET");this.patch=this.apiCall("PATCH");this.del=this.apiCall("DELETE");this.put=this.apiCall("PUT");this.host=t}},jn=Qn;var La=require("@budibase/types"),P=require("@budibase/backend-core");var Be={};S(Be,{bustCache:()=>cu,getCurrentUsageValues:()=>gu,getQuotaUsage:()=>yt,setAllUsage:()=>Kn,setAppUsageValue:()=>Vn,setUsage:()=>lu,setUsagePerApp:()=>du,utils:()=>Ir});var ee=require("@budibase/types"),Y=require("@budibase/backend-core");var Ir={};S(Ir,{generateBaseQuotaUsage:()=>Ea,generateNewMonthlyQuotas:()=>br,generateNewQuotaUsage:()=>$n,getBreakdownName:()=>_a,getCurrentMonthString:()=>rt,setCurrentMonth:()=>Ra,setQuotaReset:()=>Wn});var V=require("@budibase/types"),va=require("@budibase/backend-core"),ou=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},Wn=e=>{e.quotaReset=ou()},rt=()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},Ea=()=>({usageQuota:{[V.StaticQuotaName.APPS]:0,[V.StaticQuotaName.ROWS]:0,[V.StaticQuotaName.PLUGINS]:0,[V.StaticQuotaName.USERS]:0,[V.StaticQuotaName.CREATORS]:0,[V.StaticQuotaName.USER_GROUPS]:0,[V.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[rt()]:br()}}),$n=()=>{let e={_id:va.db.StaticDatabases.GLOBAL.docs.usageQuota,quotaReset:ou(),...Ea(),apps:{}};return Ra(e),e},br=()=>({[V.MonthlyQuotaName.QUERIES]:0,[V.MonthlyQuotaName.AUTOMATIONS]:0,[V.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,triggers:{}}),Ra=e=>{let t=rt();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=br()),e.monthly.current=e.monthly[t]},_a=(e,t)=>{if(!(!t||!e))switch(e){case V.MonthlyQuotaName.AUTOMATIONS:return V.BreakdownQuotaName.AUTOMATIONS;case V.MonthlyQuotaName.QUERIES:return va.db.isTableId(t)?V.BreakdownQuotaName.ROW_QUERIES:va.db.isDatasourceId(t)?V.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}};var su=Y.Duration.fromSeconds(60).toMs(),{Writethrough:iu}=Y.cache.writethrough;function eI(e){return delete e.usageLimits,delete e.usageQuota.automationRuns,delete e.usageQuota.emails,delete e.usageQuota.storage,delete e.usageQuota.views,delete e.usageQuota.publishedApps,delete e.usageQuota.developers,e}var xa=()=>Y.tenancy.isSelfHostUsingCloud()?new iu(Y.tenancy.getSelfHostCloudDB(),su):new iu(Y.tenancy.getGlobalDB(),su),pu=()=>Y.tenancy.isSelfHostUsingCloud()?`quota_usage_${Y.context.getTenantId()}`:Y.db.StaticDatabases.GLOBAL.docs.usageQuota,cu=async()=>{let e=xa(),t=pu(),r=await e.tryGet(t);!r||!r._rev||await e.remove(t,r._rev)},yt=async()=>{let e=xa(),t=await e.tryGet(pu());if(!t){t=$n();let{rev:r}=await e.put(t);t._rev=r}return Ra(t),Wn(t),eI(t)},lu=async(e,t,r)=>Kn({name:t,type:r,values:{total:e}}),du=async(e,t,r)=>{let a=xa(),n=await yt(),o=Object.values(e).reduce((s,l)=>s+l,0);for(let[s,l]of Object.entries(e))n=fu(n,t,r,{total:o,app:l},{appId:s});let i=await a.put(n);return n._rev=i.rev,n},tI=(e,t,r,a)=>{let n=_a(t,r);if(!n||!a?.breakdown)return e;e.breakdown||(e.breakdown={}),e.breakdown[n]||(e.breakdown[n]={parent:t,values:{}});let o=e.breakdown[n];return o.values[r]=a.breakdown,e},Vn=(e,t,r,a={},n)=>{let o;try{o=Y.db.getProdAppID(a?.appId||Y.context.getAppId())}catch{}if(!o||!n.app||!ee.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[o]||(e.apps={...e.apps,[o]:Ea()});let i=e.apps[o];switch(r){case ee.QuotaUsageType.STATIC:i.usageQuota[t]=n.app;break;case ee.QuotaUsageType.MONTHLY:{let s=rt(),l=t,f=i.monthly[s];f||(i.monthly[s]=br(),f=i.monthly[s]),f[l]=n.app,ee.BREAKDOWN_QUOTA_NAMES.includes(l)&&a?.id&&(f=tI(f,l,a.id,n));break}}return e},uu=(e,t,r,a)=>{if(!ee.APP_QUOTA_NAMES.includes(r))return{};let n;try{n=Y.db.getProdAppID(Y.context.getAppId())}catch{}if(!n||!e.apps||!e.apps[n])return{app:0};let o=e.apps[n];switch(t){case ee.QuotaUsageType.STATIC:if(o.usageQuota?.[r])return{app:o.usageQuota[r]};break;case ee.QuotaUsageType.MONTHLY:{let i=rt(),s=r;if(!o.monthly?.[i]?.[s])break;let l=o.monthly[i],f=l[s],m,g=_a(s,a);return g&&a&&l.breakdown?.[g]&&(m=l.breakdown[g]?.values[a]),{app:f,breakdown:m||0}}}return{app:0}},rI=(e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},aI=(e,t,r,a)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),a&&(r.monthly[t].triggers[e]=a)},fu=(e,t,r,a,n={})=>{if(r===ee.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=a.total,rI(t,e,a.triggers);else if(r===ee.QuotaUsageType.MONTHLY){t=t;let o=rt();e.monthly[o][t]=a.total,aI(t,o,e,a.triggers)}else throw new Error(`Invalid usage type: ${r}`);return Vn(e,t,r,n,a)},Kn=async e=>{let t=Array.isArray(e)?e:[e],r=xa(),a=await yt();for(let o of t)a=fu(a,o.name,o.type,o.values,o.opts);let n=await r.put(a,0);return a._rev=n.rev,a},gu=async(e,t,r)=>{let a=await yt(),n=0,o={};switch(e){case ee.QuotaUsageType.STATIC:if(a.usageQuota[t]){let i=t;n=a.usageQuota[i],o=uu(a,e,t,r)}break;case ee.QuotaUsageType.MONTHLY:{let i=rt(),s=t;a.monthly[i][s]&&(n=a.monthly[i][s],o=uu(a,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return ee.APP_QUOTA_NAMES.includes(t)&&!(o.app||o.breakdown)&&(o.app=o.app||0,o.breakdown=o.breakdown||0),{total:n,app:o.app,breakdown:o.breakdown}};var be={};S(be,{destroy:()=>sI,get:()=>Yn,save:()=>oI});var at=require("@budibase/backend-core"),nI=()=>({_id:at.StaticDatabases.GLOBAL.docs.licenseInfo}),oI=async e=>{let t=await Yn();t={...t,...e};let a=await at.tenancy.getGlobalDB().put(t);return t._rev=a.rev,t},Yn=async()=>{let e=at.tenancy.getGlobalDB();try{return await e.get(at.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return nI();throw t}},sI=async()=>{let e=at.tenancy.getGlobalDB(),t=await Yn();t&&t._rev&&await e.remove(at.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)};var D={};S(D,{bulkSave:()=>hI,destroy:()=>bI,fetch:()=>gI,generateUserGroupID:()=>dI,get:()=>mI,getBulk:()=>yI,getByName:()=>Hn,getGroupUsers:()=>Pa,getGroupUsersParams:()=>bu,getUserGroupsParams:()=>hu,save:()=>AI});var q=require("@budibase/backend-core");var _e=require("@budibase/types"),Bt=require("@budibase/backend-core");async function mu(){let e=Bt.sql.designDoc.base("type");e.sql.tables={[_e.AUDIT_LOG_TYPE]:{fields:{appId:_e.SQLiteType.TEXT,event:_e.SQLiteType.TEXT,userId:_e.SQLiteType.TEXT,timestamp:_e.SQLiteType.TEXT,metadata:_e.SQLiteType.TEXT,name:_e.SQLiteType.TEXT,type:_e.SQLiteType.TEXT,fallback:_e.SQLiteType.TEXT}}};let t=Bt.context.getAuditLogsDB(),r;try{r=await t.get(Bt.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(a){if(a.status===404)r=e;else throw a}await t.put(r)}var Ta=require("@budibase/backend-core"),{ViewName:iI,SEPARATOR:uI,DocumentType:pI,createView:cI}=Ta.db,lI=pI.USER+uI;async function yu(){let e=Ta.tenancy.getGlobalDB(),t=`function(doc) {
4
+ if (doc._id.startsWith("${lI}") && Array.isArray(doc.userGroups)) {
5
5
  for (let groupId of doc.userGroups) {
6
6
  emit("g_" + groupId, { email: doc.email, userId: doc._id })
7
7
  emit("e_" + groupId + doc.email, { email: doc.email, userId: doc._id })
8
8
  }
9
9
  }
10
- }`;await ub(e,t,ob.USER_BY_GROUP)}var yu=`${q.DocumentType.GROUP}${q.SEPARATOR}`;function Au(e,t={}){e||(e="");let r=e?.startsWith(q.DocumentType.GROUP)?"":yu;return{...t,startkey:`${r}${e}`,endkey:`${r}${e}${q.UNICODE_MAX}`}}function hu(e,t={}){e||(e="");let{emailSearch:r,bookmark:n,...a}=t;return r?{...a,startkey:`e_${e}${n||r}`,endkey:`e_${e}${r}${q.UNICODE_MAX}`}:{...t,startkey:`g_${e}`,endkey:`g_${e}${q.UNICODE_MAX}`,startkey_docid:n}}function cb(){return`${yu}${q.utils.newid()}`}async function Tn(e,t){let r=q.tenancy.getGlobalDB();return(await q.db.queryView(q.db.ViewName.USER_BY_GROUP,hu(e,t),r,mu,{arrayResponse:!0})).map(a=>({_id:a.userId,email:a.email}))||[]}async function br(e){return e.users=await Tn(e._id),e}async function lb(e){let r=(await br(e)).users?.map(o=>o._id),n=await q.users.bulkGetGlobalUsersById(r),a=[];for(let o of n){if(!o.userGroups)continue;let i=o.userGroups.length;o.userGroups=o.userGroups.filter(s=>s!==e._id),o.userGroups.length!==i&&a.push(o)}a.length&&await q.users.bulkUpdateGlobalUsers(a)}async function Iu(){return(await q.tenancy.getGlobalDB().allDocs(Au(null,{include_docs:!0}))).rows.map(t=>t.doc)}async function fb(){let e=await Iu(),t=[];for(let r of e)t.push(br(r));return await Promise.all(t)}async function gb(e){let r=await q.tenancy.getGlobalDB().get(e);return await br(r)}async function mb(e,t={enriched:!0}){let n=await q.tenancy.getGlobalDB().getMultiple(e,{allowMissing:!0});if(t?.enriched){let a=[];for(let o of n)a.push(br(o));return await Promise.all(a)}else return n}async function yb(e){return await q.tenancy.getGlobalDB().put(e)}async function Ab(e){return await q.tenancy.getGlobalDB().bulkDocs(e)}async function hb(e,t){let r=q.tenancy.getGlobalDB(),n=await r.get(e),a=await r.remove(e,t);return await lb(n),a}async function Ha(e){let t=e.toLowerCase(),n=(await Iu()).find(a=>a.name.toLowerCase()===t);if(n)return await br(n)}var be={};S(be,{deleteAppBackupMetadata:()=>Cb,fetchAppBackups:()=>Tb,generateAppBackupID:()=>Lu,getAppBackupMetadata:()=>qb,oldestBackupDate:()=>Cu,storeAppBackupMetadata:()=>Pb,updateAppBackupMetadata:()=>Ob});var N=require("@budibase/backend-core"),Ou=require("@budibase/types");function Sr(e,t){let r=e.rows.map(a=>a.doc?a.doc:a);if(!t?.paginate)return{data:r,hasNextPage:!1};let n=r.length>t?.pageSize;return{data:r.slice(0,t?.pageSize),hasNextPage:n,nextPage:n?e.rows[t?.pageSize]?.key:void 0}}var Nt=require("@budibase/backend-core"),{ViewName:Su,AutomationViewMode:Ya,SEPARATOR:Be,DocumentType:wu,createView:vu}=Nt.db,Ib=wu.AUTOMATION_LOG+Be,bu=wu.APP_BACKUP+Be;async function Eu(){let e=Nt.context.getProdAppDB(),t=`function(doc) {
11
- if (doc._id.startsWith("${Ib}")) {
12
- let autoId = doc.automationId + "${Be}"
13
- let status = doc.status + "${Be}"
14
- let autoKey = "${Ya.AUTOMATION}${Be}" + autoId + doc.createdAt
15
- let statusKey = "${Ya.STATUS}${Be}" + status + doc.createdAt
16
- let allKey = "${Ya.ALL}${Be}" + status + autoId + doc.createdAt
10
+ }`;await cI(e,t,iI.USER_BY_GROUP)}var Au=`${q.DocumentType.GROUP}${q.SEPARATOR}`;function hu(e,t={}){e||(e="");let r=e?.startsWith(q.DocumentType.GROUP)?"":Au;return{...t,startkey:`${r}${e}`,endkey:`${r}${e}${q.UNICODE_MAX}`}}function bu(e,t={}){e||(e="");let{emailSearch:r,bookmark:a,...n}=t;return r?{...n,startkey:`e_${e}${a||r}`,endkey:`e_${e}${r}${q.UNICODE_MAX}`}:{...t,startkey:`g_${e}`,endkey:`g_${e}${q.UNICODE_MAX}`,startkey_docid:a}}function dI(){return`${Au}${q.utils.newid()}`}async function Pa(e,t){let r=q.tenancy.getGlobalDB();return(await q.db.queryView(q.db.ViewName.USER_BY_GROUP,bu(e,t),r,yu,{arrayResponse:!0})).map(n=>({_id:n.userId,email:n.email}))||[]}async function Sr(e){return e.users=await Pa(e._id),e}async function fI(e){let r=(await Sr(e)).users?.map(o=>o._id),a=await q.users.bulkGetGlobalUsersById(r),n=[];for(let o of a){if(!o.userGroups)continue;let i=o.userGroups.length;o.userGroups=o.userGroups.filter(s=>s!==e._id),o.userGroups.length!==i&&n.push(o)}n.length&&await q.users.bulkUpdateGlobalUsers(n)}async function Iu(){return(await q.tenancy.getGlobalDB().allDocs(hu(null,{include_docs:!0}))).rows.map(t=>t.doc)}async function gI(){let e=await Iu(),t=[];for(let r of e)t.push(Sr(r));return await Promise.all(t)}async function mI(e){let r=await q.tenancy.getGlobalDB().get(e);return await Sr(r)}async function yI(e,t={enriched:!0}){let a=await q.tenancy.getGlobalDB().getMultiple(e,{allowMissing:!0});if(t?.enriched){let n=[];for(let o of a)n.push(Sr(o));return await Promise.all(n)}else return a}async function AI(e){return await q.tenancy.getGlobalDB().put(e)}async function hI(e){return await q.tenancy.getGlobalDB().bulkDocs(e)}async function bI(e,t){let r=q.tenancy.getGlobalDB(),a=await r.get(e),n=await r.remove(e,t);return await fI(a),n}async function Hn(e){let t=e.toLowerCase(),a=(await Iu()).find(n=>n.name.toLowerCase()===t);if(a)return await Sr(a)}var Ie={};S(Ie,{deleteAppBackupMetadata:()=>qI,fetchAppBackups:()=>PI,generateAppBackupID:()=>Uu,getAppBackupMetadata:()=>LI,oldestBackupDate:()=>qu,storeAppBackupMetadata:()=>CI,updateAppBackupMetadata:()=>OI});var N=require("@budibase/backend-core"),Ou=require("@budibase/types");function wr(e,t){let r=e.rows.map(n=>n.doc?n.doc:n);if(!t?.paginate)return{data:r,hasNextPage:!1};let a=r.length>t?.pageSize;return{data:r.slice(0,t?.pageSize),hasNextPage:a,nextPage:a?e.rows[t?.pageSize]?.key:void 0}}var Nt=require("@budibase/backend-core"),{ViewName:wu,AutomationViewMode:Jn,SEPARATOR:Ne,DocumentType:vu,createView:Eu}=Nt.db,II=vu.AUTOMATION_LOG+Ne,Su=vu.APP_BACKUP+Ne;async function Ru(){let e=Nt.context.getProdAppDB(),t=`function(doc) {
11
+ if (doc._id.startsWith("${II}")) {
12
+ let autoId = doc.automationId + "${Ne}"
13
+ let status = doc.status + "${Ne}"
14
+ let autoKey = "${Jn.AUTOMATION}${Ne}" + autoId + doc.createdAt
15
+ let statusKey = "${Jn.STATUS}${Ne}" + status + doc.createdAt
16
+ let allKey = "${Jn.ALL}${Ne}" + status + autoId + doc.createdAt
17
17
  emit(statusKey)
18
18
  emit(autoKey)
19
19
  emit(allKey)
20
20
  }
21
- }`;await vu(e,t,Su.AUTOMATION_LOGS)}async function Ru(){let e=Nt.tenancy.getGlobalDB(),t=`function(doc) {
22
- if (doc._id.startsWith("${bu}") && doc.type && doc.trigger) {
23
- let full = doc.appId + "${Be}"
24
- full += doc.trigger.toLowerCase() + "${Be}"
25
- full += doc.type.toLowerCase() + "${Be}"
26
- emit("${bu}" + full + doc.timestamp)
21
+ }`;await Eu(e,t,wu.AUTOMATION_LOGS)}async function _u(){let e=Nt.tenancy.getGlobalDB(),t=`function(doc) {
22
+ if (doc._id.startsWith("${Su}") && doc.type && doc.trigger) {
23
+ let full = doc.appId + "${Ne}"
24
+ full += doc.trigger.toLowerCase() + "${Ne}"
25
+ full += doc.type.toLowerCase() + "${Ne}"
26
+ emit("${Su}" + full + doc.timestamp)
27
27
  }
28
- }`;await vu(e,t,Su.APP_BACKUP_BY_TRIGGER)}var Pu=require("@budibase/types");var Dr={};S(Dr,{GENERIC_PAGE_SIZE:()=>Ne,auditLogs:()=>Gt,licenses:()=>pe,quotas:()=>Ke,versions:()=>Ur});var pe={};S(pe,{CLOUD_FREE_LICENSE:()=>Sb,SELF_FREE_LICENSE:()=>Ja,UNLIMITED:()=>k,UNLIMITED_LICENSE:()=>wb});var at=require("@budibase/types");var Ke={};S(Ke,{UNLIMITED:()=>bb,appBackupRetentionDays:()=>qr,apps:()=>vr,automationLogRetentionDays:()=>Cr,automations:()=>Pr,budibaseAICredits:()=>Or,creators:()=>Rr,customAIConfigurations:()=>Lr,plugins:()=>xr,queries:()=>Tr,rows:()=>wr,userGroups:()=>_r,users:()=>Er});var te=require("@budibase/types"),bb=-1,wr=e=>({[te.StaticQuotaName.ROWS]:{name:"Rows",value:e,triggers:[90,100]}}),vr=e=>({[te.StaticQuotaName.APPS]:{name:"Apps",value:e,triggers:[100]}}),Er=e=>({[te.StaticQuotaName.USERS]:{name:"Users",value:e,triggers:[80,100]}}),Rr=e=>({[te.StaticQuotaName.CREATORS]:{name:"Creators",value:e,triggers:[]}}),_r=e=>({[te.StaticQuotaName.USER_GROUPS]:{name:"User Groups",value:e,triggers:[80,100]}}),xr=e=>({[te.StaticQuotaName.PLUGINS]:{name:"Plugins",value:e,triggers:[90,100]}}),Tr=e=>({[te.MonthlyQuotaName.QUERIES]:{name:"Queries",value:e,triggers:[]}}),Pr=e=>({[te.MonthlyQuotaName.AUTOMATIONS]:{name:"Automations",value:e,triggers:[80,90,100]}}),Or=e=>({[te.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:{name:"Budibase AI Credits",value:e,triggers:[80,90,100]}}),Cr=e=>({[te.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS]:{name:"Automation Logs",value:e,triggers:[]}}),qr=e=>({[te.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS]:{name:"App Backups",value:e,triggers:[]}}),Lr=e=>({[te.StaticQuotaName.AI_CUSTOM_CONFIGS]:{name:"Custom AI Configuration",value:e,triggers:[]}});var k=-1,Sb={features:[],quotas:{usage:{monthly:{...Tr(k),...Pr(200),...Or(0)},static:{...vr(k),...wr(2e3),...Er(5),...Rr(5),..._r(0),...xr(10),...Lr(0)}},constant:{...Cr(1),...qr(0)}},plan:{type:at.PlanType.FREE,usesInvoicing:!1,model:at.PlanModel.PER_USER}},Ja={features:[],quotas:{usage:{monthly:{...Tr(k),...Pr(k),...Or(0)},static:{...wr(k),...vr(k),...Er(20),...Rr(k),..._r(0),...xr(10),...Lr(0)}},constant:{...Cr(1),...qr(0)}},plan:{type:at.PlanType.FREE,usesInvoicing:!1,model:at.PlanModel.PER_USER}},wb={features:[],quotas:{usage:{monthly:{...Tr(k),...Pr(k),...Or(k)},static:{...vr(k),...wr(k),...Er(k),...Rr(k),..._r(k),...xr(k),...Lr(k)}},constant:{...Cr(k),...qr(k)}},plan:{type:at.PlanType.FREE,usesInvoicing:!1,model:at.PlanModel.PER_USER}};var Ur={};S(Ur,{getLicenseVersion:()=>vb,getProVersion:()=>xu});var At=require("@budibase/backend-core"),Pn=O(require("fs")),_u=O(require("path")),vb=()=>{if(At.env.isDev()){let e="dev-version.txt",t=_u.default.join(At.objectStore.budibaseTempDir(),e);if(Pn.default.existsSync(t))return Pn.default.readFileSync(t,"utf8");{let r=At.utils.newid();return Pn.default.writeFileSync(t,r),r}}else return xu()},xu=()=>{let e=At.env.VERSION;if(!e)throw new Error("No budibase pro version was specified");return e};var Gt={};S(Gt,{searchTable:()=>Eb});var ht=require("@budibase/types"),Tu=require("@budibase/backend-core");function Eb(){return{type:"table",sourceType:ht.TableSourceType.INTERNAL,name:ht.AUDIT_LOG_TYPE,sourceId:Tu.SQS_DATASOURCE_INTERNAL,primary:["_id"],schema:{metadata:{name:"metadata",type:ht.FieldType.JSON},fallback:{name:"fallback",type:ht.FieldType.JSON}}}}var Ne=9;var Rb=new Date(864e13).toISOString(),_b=1e3*60*60*24;async function On(e){let r=(await xe.getCachedLicense()).quotas?.[Pu.QuotaType.CONSTANT]?.[e]?.value||0;return r===pe.UNLIMITED?new Date(Rb).toISOString():new Date(new Date().getTime()-_b*r).toISOString()}async function Cu(){return On(Ou.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS)}var za=`${N.db.DocumentType.APP_BACKUP}${N.db.SEPARATOR}`;async function xb(e,t,r={}){let n=await Cu(),a=N.db.getProdAppID(e),o=a,i=a;if(t.trigger&&t.type){let s=`${N.db.SEPARATOR}${t.trigger}`;s+=`${N.db.SEPARATOR}${t.type}`,o+=s,i+=s}return(!t.startDate||t.startDate<n)&&(t.startDate=n),t.startDate&&(i+=`${N.db.SEPARATOR}${t.startDate}`),t.endDate&&(o+=`${N.db.SEPARATOR}${t.endDate}`),{...r,descending:!0,startkey:`${za}${o}${N.db.UNICODE_MAX}`,endkey:`${za}${i}`}}async function qu(e,t){try{let r=N.db.getQueryIndex(N.db.ViewName.APP_BACKUP_BY_TRIGGER);return await e.query(r,t)}catch(r){if(r!=null&&r.error==="not_found")return await Ru(),qu(e,t);throw r}}function Lu(e,t){return`${za}${e}${N.db.SEPARATOR}${t}`}async function Tb(e,t={}){let r=N.tenancy.getGlobalDB(),n,a=t.limit||9,o=await xb(e,t,{include_docs:!0,limit:a+1});t.page&&(o.startkey=t.page),!t.trigger||!t.type?n=await r.allDocs(o):n=await qu(r,o);let i=Sr(n,{paginate:t.paginate,pageSize:a}),s=[...new Set(i.data.filter(f=>f.createdBy).map(f=>f.createdBy))],l=await N.users.bulkGetGlobalUsersById(s,{cleanup:!0});for(let f of l)for(let m of i.data)f?._id===m.createdBy&&(m.createdBy=f);return i}async function Pb(e,t={}){let r=N.tenancy.getGlobalDB(),n=N.db.getProdAppID(e.appId),a=Lu(n,e.timestamp),o={...e,_id:a,appId:n,name:e.name};return o._id=t.docId||o._id,o._rev=t.docRev||o._rev,t.filename&&(o.filename=t.filename),e.createdBy&&(o.createdBy=N.db.getGlobalIDFromUserMetadataID(e.createdBy)),await r.put(o)}async function Ob(e,t){let r=N.tenancy.getGlobalDB(),n=await r.get(e);return n.name=t,await r.put(n)}async function Cb(e){let t=N.tenancy.getGlobalDB(),r=await t.get(e);await t.remove(r._id,r._rev)}async function qb(e){return await N.tenancy.getGlobalDB().get(e)}var It={};S(It,{get:()=>Ub,getCacheEnvVarID:()=>Bu,getEnvVarID:()=>Cn,update:()=>Db});var Te=require("@budibase/backend-core"),Du=O(require("lru-cache")),Lb=1e3,Uu=new Du.default({max:Lb});function Cn(){return Te.StaticDatabases.GLOBAL.docs.environmentVariables}function Bu(e){return`${Te.tenancy.getTenantId()}/${Cn()}/${e||""}`}async function Ub(){let e=Cn(),t=Te.tenancy.getGlobalDB(),r,n=!1;try{r=await t.get(e)}catch(s){if(s.status==404)n=!0;else throw s}let a=Bu(r?._rev),o=Uu.get(a);if(o)return o;let i;return!n&&r?i={...r,variables:JSON.parse(Te.encryption.decrypt(r.variables,Te.encryption.SecretOption.ENCRYPTION))}:i={_id:e,variables:{}},Uu.set(a,i),i}async function Db(e){let t=Cn();return await Te.tenancy.getGlobalDB().put({_id:e._id||t,_rev:e._rev||void 0,variables:Te.encryption.encrypt(JSON.stringify(e.variables),Te.encryption.SecretOption.ENCRYPTION)})}var Ln=new Qa(P.env.ACCOUNT_PORTAL_URL),Un=async e=>{try{let t=await e.json();if(t.message)return t.message}catch{}try{let t=await e.text();if(t)return t}catch{}},Nu=async e=>{let t,r;if(P.env.SELF_HOSTED){if(t=await Ie.get(),!t.licenseKey)return;r={[P.constants.Header.LICENSE_KEY]:t.licenseKey}}else{let n=P.tenancy.getTenantId();r={[P.constants.Header.API_KEY]:P.env.ACCOUNT_PORTAL_API_KEY,[P.constants.Header.TENANT_ID]:n}}return e(r)},Gu=async()=>Nu(async e=>{let t=await De.getQuotaUsage();if(t.usageQuota.users==null){let s=await P.users.getUserCount();console.info(`Syncing user count quota to ${s}`),t.usageQuota.users=s,await De.setUsage(s,qn.StaticQuotaName.USERS,qn.QuotaUsageType.STATIC)}let r=await P.installation.getInstallFromDB(),n=P.tenancy.getTenantId(),a=await P.events.identification.getUniqueTenantId(n),o=Ur.getProVersion(),i={quotaUsage:t,tenantId:n,install:{id:r.installId,tenantId:a,version:o}};try{let s=await Ln.post("/api/license",{headers:{...e},body:i});if(s.status===404||s.status===403)return;if(s.status!==200){let l=await Un(s);throw new P.HTTPError(`Error getting license: ${l}`,s.status)}return s.json()}catch(s){if(P.env.DISABLE_ACCOUNT_PORTAL)return;throw s}});P.env.isJest()&&(Gu=jest.fn());var Mt=Gu;async function Xa(e){let t;try{t=await Ln.get("/api/license",{headers:{[P.constants.Header.LICENSE_KEY]:e}})}catch(r){if(P.env.DISABLE_ACCOUNT_PORTAL)return;throw r}if(!(t.status===404||t.status===403)){if(t.status!==200){let r=await Un(t);throw new P.HTTPError(`Error getting license: ${r}`,t.status)}return t.json()}}var Bb=e=>Nu(async t=>{let r=await Ln.post("/api/license/usage/triggered",{headers:{...t},body:e});if(r.status!==200){let n=await Un(r);P.logging.logAlert(`Error triggering quota usage: ${n}`)}}),Za=async e=>{let t=await P.installation.getInstall(),r={installVersion:t.version,installId:t.installId},n=await Ln.post("/api/license/activate",{headers:{[P.constants.Header.LICENSE_KEY]:e},body:r});if(n.status===403)throw new P.HTTPError("Invalid license key",400);if(n.status!==200){let a=await Un(n);throw new P.HTTPError(`Error activating license key: ${a}`,n.status)}return n.json()};var Bo=require("@budibase/backend-core");var zn={};S(zn,{activateOfflineLicenseToken:()=>bx,deleteOfflineLicenseToken:()=>Sx,dev:()=>an,enrichLicense:()=>Pd,getIdentifier:()=>qo,getIdentifierBase64:()=>wx,getIdentifierFromBase64:()=>vx,getOfflineLicense:()=>Lo,getOfflineLicenseToken:()=>_d,signing:()=>Gr,verifyExpiry:()=>xd,verifyInstallation:()=>Td});var Gr={};S(Gr,{sign:()=>Gb,verifyLicenseToken:()=>Nr});var eo=O(require("jsonwebtoken")),Nb=`-----BEGIN PUBLIC KEY-----
28
+ }`;await Eu(e,t,wu.APP_BACKUP_BY_TRIGGER)}var Cu=require("@budibase/types");var Br={};S(Br,{GENERIC_PAGE_SIZE:()=>Ge,auditLogs:()=>Gt,licenses:()=>pe,quotas:()=>Ye,versions:()=>Dr});var pe={};S(pe,{CLOUD_FREE_LICENSE:()=>wI,SELF_FREE_LICENSE:()=>zn,UNLIMITED:()=>k,UNLIMITED_LICENSE:()=>vI});var nt=require("@budibase/types");var Ye={};S(Ye,{UNLIMITED:()=>SI,appBackupRetentionDays:()=>Lr,apps:()=>Er,automationLogRetentionDays:()=>qr,automations:()=>Cr,budibaseAICredits:()=>Or,creators:()=>_r,customAIConfigurations:()=>Ur,plugins:()=>Tr,queries:()=>Pr,rows:()=>vr,userGroups:()=>xr,users:()=>Rr});var te=require("@budibase/types"),SI=-1,vr=e=>({[te.StaticQuotaName.ROWS]:{name:"Rows",value:e,triggers:[90,100]}}),Er=e=>({[te.StaticQuotaName.APPS]:{name:"Apps",value:e,triggers:[100]}}),Rr=e=>({[te.StaticQuotaName.USERS]:{name:"Users",value:e,triggers:[80,100]}}),_r=e=>({[te.StaticQuotaName.CREATORS]:{name:"Creators",value:e,triggers:[]}}),xr=e=>({[te.StaticQuotaName.USER_GROUPS]:{name:"User Groups",value:e,triggers:[80,100]}}),Tr=e=>({[te.StaticQuotaName.PLUGINS]:{name:"Plugins",value:e,triggers:[90,100]}}),Pr=e=>({[te.MonthlyQuotaName.QUERIES]:{name:"Queries",value:e,triggers:[]}}),Cr=e=>({[te.MonthlyQuotaName.AUTOMATIONS]:{name:"Automations",value:e,triggers:[80,90,100]}}),Or=e=>({[te.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:{name:"Budibase AI Credits",value:e,triggers:[80,90,100]}}),qr=e=>({[te.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS]:{name:"Automation Logs",value:e,triggers:[]}}),Lr=e=>({[te.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS]:{name:"App Backups",value:e,triggers:[]}}),Ur=e=>({[te.StaticQuotaName.AI_CUSTOM_CONFIGS]:{name:"Custom AI Configuration",value:e,triggers:[]}});var k=-1,wI={features:[],quotas:{usage:{monthly:{...Pr(k),...Cr(200),...Or(0)},static:{...Er(k),...vr(2e3),...Rr(5),..._r(5),...xr(0),...Tr(10),...Ur(0)}},constant:{...qr(1),...Lr(0)}},plan:{type:nt.PlanType.FREE,usesInvoicing:!1,model:nt.PlanModel.PER_USER}},zn={features:[],quotas:{usage:{monthly:{...Pr(k),...Cr(k),...Or(0)},static:{...vr(k),...Er(k),...Rr(20),..._r(k),...xr(0),...Tr(10),...Ur(0)}},constant:{...qr(1),...Lr(0)}},plan:{type:nt.PlanType.FREE,usesInvoicing:!1,model:nt.PlanModel.PER_USER}},vI={features:[],quotas:{usage:{monthly:{...Pr(k),...Cr(k),...Or(k)},static:{...Er(k),...vr(k),...Rr(k),..._r(k),...xr(k),...Tr(k),...Ur(k)}},constant:{...qr(k),...Lr(k)}},plan:{type:nt.PlanType.FREE,usesInvoicing:!1,model:nt.PlanModel.PER_USER}};var Dr={};S(Dr,{getLicenseVersion:()=>EI,getProVersion:()=>Tu});var At=require("@budibase/backend-core"),Ca=C(require("fs")),xu=C(require("path")),EI=()=>{if(At.env.isDev()){let e="dev-version.txt",t=xu.default.join(At.objectStore.budibaseTempDir(),e);if(Ca.default.existsSync(t))return Ca.default.readFileSync(t,"utf8");{let r=At.utils.newid();return Ca.default.writeFileSync(t,r),r}}else return Tu()},Tu=()=>{let e=At.env.VERSION;if(!e)throw new Error("No budibase pro version was specified");return e};var Gt={};S(Gt,{searchTable:()=>RI});var ht=require("@budibase/types"),Pu=require("@budibase/backend-core");function RI(){return{type:"table",sourceType:ht.TableSourceType.INTERNAL,name:ht.AUDIT_LOG_TYPE,sourceId:Pu.SQS_DATASOURCE_INTERNAL,primary:["_id"],schema:{metadata:{name:"metadata",type:ht.FieldType.JSON},fallback:{name:"fallback",type:ht.FieldType.JSON}}}}var Ge=9;var _I=new Date(864e13).toISOString(),xI=1e3*60*60*24;async function Oa(e){let r=(await xe.getCachedLicense()).quotas?.[Cu.QuotaType.CONSTANT]?.[e]?.value||0;return r===pe.UNLIMITED?new Date(_I).toISOString():new Date(new Date().getTime()-xI*r).toISOString()}async function qu(){return Oa(Ou.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS)}var Xn=`${N.db.DocumentType.APP_BACKUP}${N.db.SEPARATOR}`;async function TI(e,t,r={}){let a=await qu(),n=N.db.getProdAppID(e),o=n,i=n;if(t.trigger&&t.type){let s=`${N.db.SEPARATOR}${t.trigger}`;s+=`${N.db.SEPARATOR}${t.type}`,o+=s,i+=s}return(!t.startDate||t.startDate<a)&&(t.startDate=a),t.startDate&&(i+=`${N.db.SEPARATOR}${t.startDate}`),t.endDate&&(o+=`${N.db.SEPARATOR}${t.endDate}`),{...r,descending:!0,startkey:`${Xn}${o}${N.db.UNICODE_MAX}`,endkey:`${Xn}${i}`}}async function Lu(e,t){try{let r=N.db.getQueryIndex(N.db.ViewName.APP_BACKUP_BY_TRIGGER);return await e.query(r,t)}catch(r){if(r!=null&&r.error==="not_found")return await _u(),Lu(e,t);throw r}}function Uu(e,t){return`${Xn}${e}${N.db.SEPARATOR}${t}`}async function PI(e,t={}){let r=N.tenancy.getGlobalDB(),a,n=t.limit||9,o=await TI(e,t,{include_docs:!0,limit:n+1});t.page&&(o.startkey=t.page),!t.trigger||!t.type?a=await r.allDocs(o):a=await Lu(r,o);let i=wr(a,{paginate:t.paginate,pageSize:n}),s=[...new Set(i.data.filter(f=>f.createdBy).map(f=>f.createdBy))],l=await N.users.bulkGetGlobalUsersById(s,{cleanup:!0});for(let f of l)for(let m of i.data)f?._id===m.createdBy&&(m.createdBy=f);return i}async function CI(e,t={}){let r=N.tenancy.getGlobalDB(),a=N.db.getProdAppID(e.appId),n=Uu(a,e.timestamp),o={...e,_id:n,appId:a,name:e.name};return o._id=t.docId||o._id,o._rev=t.docRev||o._rev,t.filename&&(o.filename=t.filename),e.createdBy&&(o.createdBy=N.db.getGlobalIDFromUserMetadataID(e.createdBy)),await r.put(o)}async function OI(e,t){let r=N.tenancy.getGlobalDB(),a=await r.get(e);return a.name=t,await r.put(a)}async function qI(e){let t=N.tenancy.getGlobalDB(),r=await t.get(e);await t.remove(r._id,r._rev)}async function LI(e){return await N.tenancy.getGlobalDB().get(e)}var bt={};S(bt,{get:()=>DI,getCacheEnvVarID:()=>Nu,getEnvVarID:()=>qa,update:()=>BI});var Te=require("@budibase/backend-core"),Bu=C(require("lru-cache")),UI=1e3,Du=new Bu.default({max:UI});function qa(){return Te.StaticDatabases.GLOBAL.docs.environmentVariables}function Nu(e){return`${Te.tenancy.getTenantId()}/${qa()}/${e||""}`}async function DI(){let e=qa(),t=Te.tenancy.getGlobalDB(),r,a=!1;try{r=await t.get(e)}catch(s){if(s.status==404)a=!0;else throw s}let n=Nu(r?._rev),o=Du.get(n);if(o)return o;let i;return!a&&r?i={...r,variables:JSON.parse(Te.encryption.decrypt(r.variables,Te.encryption.SecretOption.ENCRYPTION))}:i={_id:e,variables:{}},Du.set(n,i),i}async function BI(e){let t=qa();return await Te.tenancy.getGlobalDB().put({_id:e._id||t,_rev:e._rev||void 0,variables:Te.encryption.encrypt(JSON.stringify(e.variables),Te.encryption.SecretOption.ENCRYPTION)})}var Ua=new jn(P.env.ACCOUNT_PORTAL_URL),Da=async e=>{try{let t=await e.json();if(t.message)return t.message}catch{}try{let t=await e.text();if(t)return t}catch{}},Gu=async e=>{let t,r;if(P.env.SELF_HOSTED){if(t=await be.get(),!t.licenseKey)return;r={[P.constants.Header.LICENSE_KEY]:t.licenseKey}}else{let a=P.tenancy.getTenantId();r={[P.constants.Header.API_KEY]:P.env.ACCOUNT_PORTAL_API_KEY,[P.constants.Header.TENANT_ID]:a}}return e(r)},Mu=async()=>Gu(async e=>{let t=await Be.getQuotaUsage();if(t.usageQuota.users==null){let s=await P.users.getUserCount();console.info(`Syncing user count quota to ${s}`),t.usageQuota.users=s,await Be.setUsage(s,La.StaticQuotaName.USERS,La.QuotaUsageType.STATIC)}let r=await P.installation.getInstallFromDB(),a=P.tenancy.getTenantId(),n=await P.events.identification.getUniqueTenantId(a),o=Dr.getProVersion(),i={quotaUsage:t,tenantId:a,install:{id:r.installId,tenantId:n,version:o}};try{let s=await Ua.post("/api/license",{headers:{...e},body:i});if(s.status===404||s.status===403)return;if(s.status!==200){let l=await Da(s);throw new P.HTTPError(`Error getting license: ${l}`,s.status)}return s.json()}catch(s){if(P.env.DISABLE_ACCOUNT_PORTAL)return;throw s}});P.env.isJest()&&(Mu=jest.fn());var Mt=Mu;async function Zn(e){let t;if(!P.env.INTERNAL_API_KEY)throw new Error("getLicenseFromKey requires INTERNAL_API_KEY to be set");try{t=await Ua.get(`/api/license/${e}`,{headers:{[P.constants.Header.API_KEY]:P.env.INTERNAL_API_KEY}})}catch(r){if(P.env.DISABLE_ACCOUNT_PORTAL)return;throw r}if(!(t.status===404||t.status===403)){if(t.status!==200){let r=await Da(t);throw new P.HTTPError(`Error getting license: ${r}`,t.status)}return t.json()}}var NI=e=>Gu(async t=>{let r=await Ua.post("/api/license/usage/triggered",{headers:{...t},body:e});if(r.status!==200){let a=await Da(r);P.logging.logAlert(`Error triggering quota usage: ${a}`)}}),eo=async e=>{let t=await P.installation.getInstall(),r={installVersion:t.version,installId:t.installId},a=await Ua.post("/api/license/activate",{headers:{[P.constants.Header.LICENSE_KEY]:e},body:r});if(a.status===403)throw new P.HTTPError("Invalid license key",400);if(a.status!==200){let n=await Da(a);throw new P.HTTPError(`Error activating license key: ${n}`,a.status)}return a.json()};var No=require("@budibase/backend-core");var Xa={};S(Xa,{activateOfflineLicenseToken:()=>Sx,deleteOfflineLicenseToken:()=>wx,dev:()=>oa,enrichLicense:()=>Cd,getIdentifier:()=>Lo,getIdentifierBase64:()=>vx,getIdentifierFromBase64:()=>Ex,getOfflineLicense:()=>Uo,getOfflineLicenseToken:()=>xd,signing:()=>Mr,verifyExpiry:()=>Td,verifyInstallation:()=>Pd});var Mr={};S(Mr,{sign:()=>MI,verifyLicenseToken:()=>Gr});var to=C(require("jsonwebtoken")),GI=`-----BEGIN PUBLIC KEY-----
29
29
  MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvz3jePLCFBXZ19c8Dpkv
30
30
  XtSgOhKFOcvQdo/LV0KJRUzQWDPWuO4ILtBtnqhjtIzZH4CH0qCYBet5L6Qr4CM1
31
31
  l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
@@ -34,16 +34,16 @@ l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
34
34
  d/o3ZWE1TTj1zYwlCLN5qRKr3hU8nC3xEYNEbkB9SfTRaOq9Q7P8WmfLkoCPm3pR
35
35
  mwIDAQAB
36
36
  -----END PUBLIC KEY-----
37
- `;function Nr(e){return eo.default.verify(e,Nb,{algorithms:["RS256"]})}function Gb(e,t){return eo.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}var Dn={};S(Dn,{getFeatures:()=>to});var c=require("@budibase/types");var Mb={[c.PlanType.FREE]:[...pe.SELF_FREE_LICENSE.features],[c.PlanType.PREMIUM]:void 0,[c.PlanType.PREMIUM_PLUS]:[c.Feature.APP_BACKUPS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.PDF],[c.PlanType.PREMIUM_PLUS_TRIAL]:[c.Feature.APP_BACKUPS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.PDF],[c.PlanType.PRO]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS],[c.PlanType.TEAM]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS],[c.PlanType.BUSINESS]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.PDF],[c.PlanType.ENTERPRISE_BASIC]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.OFFLINE,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF],[c.PlanType.ENTERPRISE_BASIC_TRIAL]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF],[c.PlanType.ENTERPRISE]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.OFFLINE,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF]},kb={[c.PlanType.FREE]:[...pe.CLOUD_FREE_LICENSE.features],[c.PlanType.PREMIUM]:[c.Feature.APP_BACKUPS,c.Feature.BRANDING,c.Feature.APP_BUILDERS,c.Feature.VIEW_PERMISSIONS,c.Feature.PDF],[c.PlanType.PREMIUM_PLUS]:[c.Feature.APP_BACKUPS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.BUDIBASE_AI,c.Feature.PDF],[c.PlanType.PREMIUM_PLUS_TRIAL]:[c.Feature.APP_BACKUPS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.BUDIBASE_AI,c.Feature.PDF],[c.PlanType.PRO]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.BRANDING],[c.PlanType.TEAM]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.BRANDING],[c.PlanType.BUSINESS]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.BUDIBASE_AI,c.Feature.PDF],[c.PlanType.ENTERPRISE_BASIC]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.OFFLINE,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.BUDIBASE_AI,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF],[c.PlanType.ENTERPRISE_BASIC_TRIAL]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.BUDIBASE_AI,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF],[c.PlanType.ENTERPRISE]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.BUDIBASE_AI,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF]};function to(e,t){let r=[];function n(a){let o=a[t];if(!o)throw new Error(`Features do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case c.Hosting.SELF:r=n(Mb);break;case c.Hosting.CLOUD:r=n(kb);break}return r}var Bn={};S(Bn,{UNLIMITED:()=>d,getQuotas:()=>ro});var B=require("@budibase/types");var p=Ke,Mu=pe,d=-1,Mr=e=>e*1e6,Fb={[B.PlanType.FREE]:{...Mu.CLOUD_FREE_LICENSE.quotas},[B.PlanType.PREMIUM]:{usage:{monthly:{...p.queries(d),...p.automations(1e3),...p.budibaseAICredits(0)},static:{...p.rows(1e4),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(0),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[B.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...p.queries(d),...p.automations(5e3),...p.budibaseAICredits(Mr(2))},static:{...p.rows(25e3),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(0),...p.plugins(d),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[B.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...p.queries(d),...p.automations(5e3),...p.budibaseAICredits(Mr(2))},static:{...p.rows(25e3),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(0),...p.plugins(d),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[B.PlanType.PRO]:{usage:{monthly:{...p.queries(d),...p.automations(1e3),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(5),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[B.PlanType.TEAM]:{usage:{monthly:{...p.queries(d),...p.automations(5e3),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(10),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(90)}},[B.PlanType.BUSINESS]:{usage:{monthly:{...p.queries(d),...p.automations(1e4),...p.budibaseAICredits(0)},static:{...p.rows(5e4),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(50),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(365),...p.appBackupRetentionDays(365)}},[B.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(Mr(4))},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(d),...p.plugins(d),...p.customAIConfigurations(d)}},constant:{...p.automationLogRetentionDays(d),...p.appBackupRetentionDays(d)}},[B.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(Mr(4))},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(d),...p.plugins(d),...p.customAIConfigurations(d)}},constant:{...p.automationLogRetentionDays(15),...p.appBackupRetentionDays(15)}},[B.PlanType.ENTERPRISE]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(Mr(4))},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(d),...p.plugins(d),...p.customAIConfigurations(d)}},constant:{...p.automationLogRetentionDays(d),...p.appBackupRetentionDays(d)}}},Qb={[B.PlanType.FREE]:{...Mu.SELF_FREE_LICENSE.quotas},[B.PlanType.PREMIUM]:void 0,[B.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(0),...p.plugins(d),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[B.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(0),...p.plugins(d),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[B.PlanType.PRO]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(5),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[B.PlanType.TEAM]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(10),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(90)}},[B.PlanType.BUSINESS]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(50),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(90),...p.appBackupRetentionDays(365)}},[B.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(d),...p.plugins(d),...p.customAIConfigurations(d)}},constant:{...p.automationLogRetentionDays(d),...p.appBackupRetentionDays(d)}},[B.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(d),...p.plugins(d),...p.customAIConfigurations(d)}},constant:{...p.automationLogRetentionDays(15),...p.appBackupRetentionDays(15)}},[B.PlanType.ENTERPRISE]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(d),...p.plugins(d),...p.customAIConfigurations(d)}},constant:{...p.automationLogRetentionDays(d),...p.appBackupRetentionDays(d)}}};function ro(e,t){let r;function n(a){let o=a[t];if(!o)throw new Error(`Quotas do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case B.Hosting.SELF:r=n(Qb);break;case B.Hosting.CLOUD:r=n(Fb);break}return JSON.parse(JSON.stringify(r))}var Ft={};S(Ft,{appExists:()=>jb,encoding:()=>kt});var ku=require("@budibase/backend-core");async function jb(e){return(await ku.db.getAllApps({all:!0,idsOnly:!0})).includes(e)}var kt={};S(kt,{base64ToObject:()=>$b,objectToBase64:()=>Wb});function Wb(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}function $b(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}var vd=require("@budibase/types"),er=require("@budibase/backend-core"),Ed=O(rl()),Rd=O(Co());async function bx(e){await Ie.save({offlineLicenseToken:e}),await St()}async function Sx(){await Ie.save({offlineLicenseToken:void 0}),await St()}async function _d(){return(await Ie.get()).offlineLicenseToken}async function qo(){let t=(await er.installation.getInstall()).installId,r=er.context.getTenantId(),n=await er.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:n}}async function wx(){let e=await qo();return kt.objectToBase64(e)}function vx(e){return kt.base64ToObject(e)}function xd(e){let t=Date.now(),r=new Date(e.expireAt).getTime();if(t>r)throw new Error(`Offline license has expired. expireAt=${e.expireAt}`)}async function Td(e){let t=await qo();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}function Pd(e){let t=e.plan.type,r=vd.Hosting.SELF,n=to(r,t),a=ro(r,t);return e.features=(0,Ed.default)(e.features,n),e.quotas=(0,Rd.default)(e.quotas,a),e}async function Lo(){try{let e=await _d();if(e){let t=await Nr(e);return xd(t),await Td(t),Pd(t)}}catch(e){console.error("Error retrieving offline license",e)}}var an={};S(an,{deleteDevLicense:()=>Tx,getOfflineLicense:()=>_x,writeDevLicenseToDisk:()=>xx});var Od=require("@budibase/backend-core"),Do=require("path"),Cd=require("os"),wt=O(require("fs"));var Ex=Od.env.isTest()?".budibase-test":".budibase",Uo=(0,Do.join)((0,Cd.tmpdir)(),Ex),Rx="dev_license.txt",nn=(0,Do.join)(Uo,Rx);if(!wt.default.existsSync(Uo))try{wt.default.mkdirSync(Uo)}catch{}function _x(){try{if(wt.default.existsSync(nn)){let e=wt.default.readFileSync(nn,{encoding:"utf-8"});return Nr(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}function xx(e){console.log(`Writing license to: ${nn}`),wt.default.writeFileSync(nn,e,{encoding:"utf-8"})}function Tx(){wt.default.rmSync(nn,{force:!0})}var No=async()=>{if(Bo.env.OFFLINE_MODE)return Lo();let e=await Mt();return e||(e=an.getOfflineLicense()),e},Go=e=>Xa(e),Mo=()=>Bo.env.SELF_HOSTED?pe.SELF_FREE_LICENSE:pe.CLOUD_FREE_LICENSE;var Fo={};S(Fo,{activateLicenseKey:()=>Px,deleteLicenseKey:()=>Ox,getLicenseKey:()=>ko});async function Px(e){await Za(e),await Ie.save({licenseKey:e}),await St()}async function ko(){return(await Ie.get()).licenseKey}async function Ox(){await Ie.save({licenseKey:void 0}),await St()}var on=require("@budibase/backend-core"),Xn=O(require("dd-trace")),qd=3600,St=async()=>{await Dd(),await Ud()},Ld=async(e,t)=>{let{populateLicense:r=No,populateFreeLicense:n=Mo}=t||{};return await Xn.default.trace("getCachedLicense",async a=>{let o=on.tenancy.getTenantId(),i=await ka(),s=await i.get(o);return a.addTags({tenantId:o,foundInCache:!!s}),s||(s=await Xn.default.trace("populateLicense",async()=>await r(o)),a.addTags({populatedLicense:!!s}),s||(s=Xn.default.trace("populateFreeLicense",()=>n(e,o)),a.addTags({populatedFreeLicense:!!s})),s.refreshedAt=new Date().toISOString(),a.addTags({refreshedAt:s.refreshedAt,expirySeconds:qd}),await i.store(o,s,qd),s)})};on.env.isJest()&&(Ld=jest.fn());var Ud=Ld,Dd=async()=>{let e=on.tenancy.getTenantId();await(await ka()).delete(e)};async function X(e,t){Array.isArray(e)||(e=[e]),t||(t=await xe.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}async function Zn(e,t){if(!await X(e,t))throw new He.FeatureDisabledError(`${e} is not currently enabled`,e)}async function Qo(e,t){if(!await X(e,t)){let r=e.join(", ");throw new He.FeatureDisabledError(`${r} are not currently enabled`,r)}}function le(e){return async(...t)=>(await Zn(z.Feature.APP_BACKUPS),e(...t))}async function jo(){return X(z.Feature.APP_BACKUPS)}async function Wo(){return X(z.Feature.BRANDING)}async function Bd(){return X(z.Feature.ENFORCEABLE_SSO)}async function qx(){return X(z.Feature.SYNC_AUTOMATIONS)}async function Lx(){return X(z.Feature.TRIGGER_AUTOMATION_RUN)}async function vt(){return X(z.Feature.APP_BUILDERS)}async function ea(){return X(z.Feature.AUDIT_LOGS)}async function $o(){return X(z.Feature.USER_GROUPS)}async function Ye(){return X(z.Feature.EXPANDED_PUBLIC_API)}async function Ux(e){if(He.env.ENABLE_SSO_MAINTENANCE_MODE||!await Bd())return!1;let r;return e?.config?r=e.config:r=await He.configs.getSettingsConfig(),!!r.isSSOEnforced}var Vo=async()=>{let e=z.Feature.SCIM,t=await X(e),r=await He.configs.getSCIMConfig();if(!t||!r?.enabled)throw new He.FeatureDisabledError(`${e} is not currently enabled`,e);return!0};async function Dx(){return X(z.Feature.VIEW_PERMISSIONS)}async function Bx(){return X(z.Feature.VIEW_READONLY_COLUMNS)}async function sn(){return X(z.Feature.BUDIBASE_AI)}async function Ko(){return X(z.Feature.AI_CUSTOM_CONFIGS)}var Nx={faviconUrl:void 0,faviconUrlEtag:void 0,emailBrandingEnabled:!0,testimonialsEnabled:!0,platformTitle:void 0,loginHeading:void 0,loginButton:void 0,metaDescription:void 0,metaImageUrl:void 0,metaTitle:void 0};async function Gx(e){return await Wo()?{faviconUrl:e.faviconUrl,faviconUrlEtag:e.faviconUrlEtag,emailBrandingEnabled:e.emailBrandingEnabled,testimonialsEnabled:e.testimonialsEnabled,platformTitle:e.platformTitle,loginHeading:e.loginHeading,loginButton:e.loginButton,metaDescription:e.metaDescription,metaImageUrl:e.metaImageUrl,metaTitle:e.metaTitle}:Nx}var Ho={};S(Ho,{enrichAIConfig:()=>kx});var Mx="budibase_ai";async function kx(e){return await sn()&&(e.config[Mx]={provider:"OpenAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),isBudibaseAI:!0,defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-4o-mini",apiKey:process.env.OPENAI_API_KEY,name:"Budibase AI"}),e}var Fe={};S(Fe,{addApp:()=>$x,addAutomation:()=>zx,addCustomAIConfig:()=>Xx,addGroup:()=>Jo,addPlugin:()=>Xo,addRow:()=>Kx,addRows:()=>Yx,addUsers:()=>na,bustCache:()=>pu,decrement:()=>Pe,decrementMany:()=>Rt,getCurrentUsageValues:()=>fu,getLicensedQuota:()=>Gd,getQuotaUsage:()=>yt,increment:()=>fe,incrementBudibaseAICredits:()=>ts,incrementMany:()=>Et,removeApp:()=>Vx,removeCustomAIConfig:()=>Zx,removeCustomAIConfigs:()=>eT,removeGroup:()=>zo,removePlugin:()=>Zo,removeRow:()=>Hx,removeRows:()=>Jx,removeUsers:()=>ar,set:()=>Yo,setAllUsage:()=>Va,setAppUsageValue:()=>$a,setUsage:()=>cu,setUsagePerApp:()=>lu,updatePluginCount:()=>es,updateUsage:()=>tr,usageLimitIsExceeded:()=>Wx,utils:()=>Ir});var Y=require("@budibase/types");var de=require("@budibase/backend-core");var fe=(e,t,r)=>Nd({change:1,name:e,type:t,opts:r}),Et=e=>Nd(e),Nd=async e=>{let t=Array.isArray(e)?e:[e];await tr(t.map(n=>({usageChange:n.change,name:n.name,type:n.type,opts:{dryRun:!0,suppressErrorLog:n.opts?.suppressErrorLog,id:n.opts?.id}})));let r=[];for(let n of t){let a=n.opts?.fn;a&&r.push(await a())}return await tr(t.map(n=>({usageChange:n.change,name:n.name,type:n.type,opts:{dryRun:!1,valueFn:n.opts?.valueFn,suppressErrorLog:n.opts?.suppressErrorLog,id:n.opts?.id}}))),r[0]},Pe=(e,t,r={})=>tr({usageChange:-1,name:e,type:t,opts:r}),Rt=e=>{let t=Array.isArray(e)?e:[e];return tr(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},Yo=async(e,t,r)=>De.setUsage(r,e,t),Fx=(e,t,r)=>{if(e==Y.QuotaUsageType.STATIC){let n=r.usageQuota.triggers;return n?n[t]||{}:{}}else{let n=De.utils.getCurrentMonthString(),a=r.monthly[n].triggers;return a?a[t]||{}:{}}},Qx=async(e,t,r,n)=>{try{await de.locks.doWithLock({type:Y.LockType.TRY_ONCE,name:Y.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let a={percentage:r,name:t.name};n&&(a.resetDate=n),await ot.triggerQuota(a)})}catch(a){de.logging.logAlert("Error triggering quota",a)}},jx=async(e,t,r,n)=>{let a=await yt(),o=e===Y.QuotaUsageType.MONTHLY?a.quotaReset:void 0,i=await Fx(e,t,a),s=n.triggers,l=r/n.value*100;l>100&&(l=100);for(let[f,m]of s.entries())if(l>=m&&n.value!==Ke.UNLIMITED){if(!i[m]){i[m]=new Date().toISOString();let y=s[f+1]||100;(!(l>=y)||l===m)&&await Qx(t,n,l,o)}}else i[m]=void 0;return i},tr=async e=>{let t=de.tenancy.getTenantId(),r=Array.isArray(e)?e:[e],n=null,a,o=[],i={},s={},l={},f={};for(let g of r){try{n=de.context.getAppId()}catch{}if(Y.APP_QUOTA_NAMES.includes(g.name)&&!n)throw new Error("App context required for quota update");try{a=await Gd(Y.QuotaType.USAGE,g.name,g.type),o.push(a);let{total:h,app:E,breakdown:T}=await De.getCurrentUsageValues(g.type,g.name,g.opts?.id);h+=g.usageChange,E!=null&&(E+=g.usageChange),T!=null&&(T+=g.usageChange);let _={};if(g.opts?.dryRun||(_=await jx(g.type,g.name,h,a),f={...f,[g.name]:_}),a.value!==Ke.UNLIMITED&&h>a.value&&g.usageChange>0)throw new de.UsageLimitError(`Licensed ${a.name} of ${a.value} has been exceeded`,a.name);if(h=Math.max(0,h),E&&(E=Math.max(0,E)),T&&(T=Math.max(0,T),l={...l,[g.name]:T}),!g.opts?.dryRun){let R=g.opts?.valueFn;R&&(h=await R(),E=h),i={...i,[g.name]:h},s={...s,[g.name]:E}}}catch(h){throw g.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${g.name}`,h),h}}let m=r.filter(g=>!g.opts?.dryRun).map(g=>({name:g.name,type:g.type,values:{total:i[g.name],app:s[g.name],breakdown:l[g.name],triggers:f[g.name]},opts:{...g.opts,tenantId:t}}));m.length>0&&await De.setAllUsage(m)},Gd=async(e,t,r)=>{let n=await xe.getCachedLicense();if(!n){let a=de.tenancy.getTenantId();throw new Error("License not found for tenant id "+a)}if(r&&(0,Y.isStaticQuota)(e,r,t))return n.quotas[e][r][t];if(r&&(0,Y.isMonthlyQuota)(e,r,t))return n.quotas[e][r][t];if((0,Y.isConstantQuota)(e,t))return n.quotas[e][t];throw new Error("Invalid quota type")},Wx=async(e,t)=>{try{return await tr({usageChange:1,name:e,type:t,opts:{dryRun:!0}}),!1}catch(r){if(r.code===de.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw r}};var rr=require("@budibase/types"),Md=require("@budibase/backend-core"),kd=async()=>{let e=await Md.db.getAllApps({dev:!0});return e?e.length:0},$x=async(e,{appId:t}={})=>fe(rr.StaticQuotaName.APPS,rr.QuotaUsageType.STATIC,{fn:e,valueFn:kd,id:t}),Vx=async({appId:e}={})=>Pe(rr.StaticQuotaName.APPS,rr.QuotaUsageType.STATIC,{valueFn:kd,id:e});var Me=require("@budibase/types"),Kx=async(e,{tableId:t}={})=>fe(Me.StaticQuotaName.ROWS,Me.QuotaUsageType.STATIC,{fn:e,id:t}),Hx=async({tableId:e}={})=>Pe(Me.StaticQuotaName.ROWS,Me.QuotaUsageType.STATIC,{id:e}),Yx=async(e,t,{tableId:r}={})=>Et({change:e,name:Me.StaticQuotaName.ROWS,type:Me.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),Jx=async(e,{tableId:t}={})=>Rt({change:e,name:Me.StaticQuotaName.ROWS,type:Me.QuotaUsageType.STATIC,opts:{id:t}});var ra=require("@budibase/types"),zx=async(e,{automationId:t}={})=>fe(ra.MonthlyQuotaName.AUTOMATIONS,ra.QuotaUsageType.MONTHLY,{fn:e,id:t});var nr=require("@budibase/types"),Jo=async e=>fe(nr.StaticQuotaName.USER_GROUPS,nr.QuotaUsageType.STATIC,{fn:e}),zo=async()=>Pe(nr.StaticQuotaName.USER_GROUPS,nr.QuotaUsageType.STATIC);var ut=require("@budibase/types"),Xo=async e=>fe(ut.StaticQuotaName.PLUGINS,ut.QuotaUsageType.STATIC,{fn:e}),Zo=async()=>Pe(ut.StaticQuotaName.PLUGINS,ut.QuotaUsageType.STATIC),es=async e=>Yo(ut.StaticQuotaName.PLUGINS,ut.QuotaUsageType.STATIC,e);var ke=require("@budibase/types"),un=require("@budibase/backend-core");var na=async(e,t,r)=>{let n=[{change:e,name:ke.StaticQuotaName.USERS,type:ke.QuotaUsageType.STATIC,opts:{fn:r,valueFn:un.users.getUserCount}}];t>0&&n.push({change:t,name:ke.StaticQuotaName.CREATORS,type:ke.QuotaUsageType.STATIC,opts:{valueFn:un.users.getCreatorCount}});let a=await Et(n);return await Mt(),a},ar=async(e,t)=>{let r=[{change:e,name:ke.StaticQuotaName.USERS,type:ke.QuotaUsageType.STATIC,opts:{valueFn:un.users.getUserCount}}];t>0&&r.push({change:t,name:ke.StaticQuotaName.CREATORS,type:ke.QuotaUsageType.STATIC,opts:{valueFn:un.users.getCreatorCount}}),await Rt(r),await Mt()};var Oe=require("@budibase/types"),ts=async e=>Et({change:e,name:Oe.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:Oe.QuotaUsageType.MONTHLY}),Xx=async()=>fe(Oe.StaticQuotaName.AI_CUSTOM_CONFIGS,Oe.QuotaUsageType.STATIC),Zx=async()=>Pe(Oe.StaticQuotaName.AI_CUSTOM_CONFIGS,Oe.QuotaUsageType.STATIC),eT=async e=>Rt({change:e,name:Oe.StaticQuotaName.AI_CUSTOM_CONFIGS,type:Oe.QuotaUsageType.STATIC});var Je={};S(Je,{addAppBuilder:()=>oT,db:()=>Qe,removeAppBuilder:()=>sT});var cn=require("@budibase/backend-core");var G={};S(G,{addAppBuilder:()=>ss,addUsers:()=>ns,adjustGroupCreatorsQuotas:()=>aT,cleanupApp:()=>nT,enrichUserRolesFromGroups:()=>rT,fetch:()=>pn,get:()=>xt,getBulk:()=>Kd,getGroupBuilderAppIds:()=>Vd,getGroupRoleId:()=>tT,remove:()=>rs,removeAppBuilder:()=>is,removeUsers:()=>as,save:()=>or,updateGroupApps:()=>os});var v=require("@budibase/backend-core");var Fd=require("@budibase/backend-core"),aa=class extends Fd.HTTPError{constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function Wd(e,t){try{let r=[];for(let s of e)if(s.roles){let l=s.roles[v.db.getProdAppID(t)];l&&r.push(l)}let n=await Promise.all(r.map(async s=>({[s]:await v.roles.roleToNumber(s)}))),a,o,i={};n.forEach(s=>{let[l,f]=Object.entries(s)[0];i[l]={roleId:l,roleNum:f}});for(let{roleId:s,roleNum:l}of Object.values(i))(o===void 0||l>o)&&(o=l,a=s);return a}catch(r){throw v.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}async function $d(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await D.getBulk(e,{enriched:!1}),t}async function Vd(e,t){if(!e.userGroups)return[];let r=await $d(e.userGroups,t?.groups),n=t?.appId?v.db.getProdAppID(t?.appId):null,a=[];for(let o of r){let i=o.builder?.apps;n&&i?.includes(n)?a.push(n):n||(a=a.concat(i||[]))}return[...new Set(a)]}async function tT(e,t,r){if(!e.userGroups)return null;let n=await $d(e.userGroups,r?.groups),a=v.db.getProdAppID(t);return e.roles?.[a]?e.roles[a]:(n=n.filter(o=>o?.roles?Object.keys(o.roles).includes(a):!1),await Wd(n,t))}async function rT(e){if(!e||!e.userGroups)return e;let t=await Kd(e.userGroups,{enriched:!1}),r=[];for(let a of t)a?.roles&&(r=r.concat(Object.keys(a.roles)));r=[...new Set(r)];for(let a of r)await v.context.doInAppContext(a,async()=>{if(e.roles[a])return;let o=await Wd(t,a);o&&(e.roles[a]=o)});let n=await Vd(e,{groups:t});if(n.length&&!e.builder?.global){let a=e.builder?.apps||[];e.builder={apps:a.concat(n)}}return e}async function pn(){return await D.fetch()}async function xt(e){return await D.get(e)}async function Kd(e,t={enriched:!0}){return await D.getBulk(e,t)}async function Qd(e){if(await D.getByName(e))throw new aa(e)}async function jd(e){let t=await D.getGroupUsers(e._id);if(!t.length)return 0;let n=await v.tenancy.getGlobalDB().getMultiple(t.map(o=>o._id));return(await v.userUtils.creatorsInList(n)).filter(o=>o).length}async function or(e){let t=[],r=!e._id,n=0;if(delete e.users,!e._id)e._id=D.generateUserGroupID(),await Qd(e.name),t.push(v.events.group.created(e));else{let o=await D.get(e._id);if(o.name!==e.name&&await Qd(e.name),t.push(v.events.group.updated(e)),JSON.stringify(o.roles)!==JSON.stringify(e.roles)){let i=o.users?.length||0,s=0;i>0&&(s=await jd(o)),Object.values(e.roles).includes(v.roles.BUILTIN_ROLE_IDS.ADMIN)?n=i-s:n=-i,t.push(v.events.group.permissionsEdited(e))}}await Promise.all(t);let a=()=>D.save(e);if(r)return await Jo(a);{let o=await a();if(n>0)await na(0,n);else if(n<0){let i=await jd(e),s=Math.abs(n)-i;s>0&&await ar(0,s)}return o}}async function rs(e,t){let r;try{r=await D.get(e)}catch{throw new Error("Group not found")}let n=Object.values(r.roles||{}).includes(v.roles.BUILTIN_ROLE_IDS.ADMIN),a=()=>{};if(n){let i=v.tenancy.getGlobalDB(),s=await D.getGroupUsers(e),f=(await Promise.all(s.map(h=>i.get(h._id)))).map(h=>({...h,userGroups:h.userGroups.filter(E=>E!==e)})),g=(await v.userUtils.creatorsInList(f)).filter(h=>h).length,y=s.length-g;y&&(a=()=>ar(0,y))}let o=await D.destroy(e,t);return await v.events.group.deleted(r),await zo(),await a(),o}async function ns(e,t){let r=await D.get(e),n=await v.users.bulkGetGlobalUsersById(t),a=[];for(let l of n)l.userGroups||(l.userGroups=[]),l.userGroups.includes(e)||a.push(l);if(!a.length)return a;let o=a.map(l=>({...l,userGroups:[...l?.userGroups||[],e]}));if(await v.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes(v.roles.BUILTIN_ROLE_IDS.ADMIN)){let f=(await v.userUtils.creatorsInList(a)).filter(g=>g).length,m=a.length-f;m&&await na(0,m)}let s=[];for(let l of t)s.push(v.cache.user.invalidateUser(l));return await Promise.all(s),await v.events.group.usersAdded(o.length,r),o}async function as(e,t){let r=await D.get(e),n=await v.users.bulkGetGlobalUsersById(t),a=[];for(let s of n){if(!s.userGroups||!s.userGroups.includes(e))continue;let l=s.userGroups.indexOf(e);s.userGroups.splice(l,1),a.push(s)}if(await v.users.bulkUpdateGlobalUsers(a),Object.values(r.roles||{}).includes(v.roles.BUILTIN_ROLE_IDS.ADMIN)){let l=(await v.userUtils.creatorsInList(a)).filter(m=>m).length,f=a.length-l;f&&await ar(0,f)}let i=[];for(let s of t)i.push(v.cache.user.invalidateUser(s));return await Promise.all(i),a.length&&await v.events.group.usersDeleted(a.length,r),a}async function os(e,t){let r=await xt(e);if(r.roles||(r.roles={}),t.appsToAdd)for(let n of t.appsToAdd)r.roles[n.appId]=n.roleId;if(t.appsToRemove)for(let n of t.appsToRemove)delete r.roles[n.appId];return await or(r)}async function nT(e){let t=await pn(),r=[];for(let n of t)!n.roles||!n.roles[e]||(delete n.roles[e],r.push(n));return await D.bulkSave(r)}async function ss(e,t){if(!await vt())throw new Error("Feature not enabled, please check license");let r=v.db.getProdAppID(t),n=await xt(e);n.builder??={apps:[]},n.builder.apps.includes(t)||(n.builder.apps.push(r),await or(n))}async function is(e,t){if(!await vt())throw new Error("Feature not enabled, please check license");let r=v.db.getProdAppID(t),n=await xt(e);n.builder?.apps.includes(t)&&(n.builder.apps=n.builder.apps.filter(a=>a!==r),await or(n))}async function aT(){if(!await $o()){let e=v.tenancy.getGlobalDB(),r=(await pn()||[]).filter(n=>Object.values(n?.roles||{}).includes(v.roles.BUILTIN_ROLE_IDS.ADMIN));for(let n of r){let a=await D.getGroupUsers(n._id),i=(await Promise.all(a.map(m=>e.get(m._id)))).map(m=>({...m,userGroups:m.userGroups.filter(g=>g!==n._id)})),l=(await v.userUtils.creatorsInList(i)).filter(m=>m).length,f=a.length-l;await D.save({...n,roles:{}}),f&&await ar(0,f)}}}cn.users.UserDB.init(Fe,G,we);var Qe=cn.users.UserDB;async function oT(e,t){if(!await vt())throw new Error("Feature not enabled, please check license");await cn.users.addAppBuilder(e,t)}async function sT(e,t){if(!await vt())throw new Error("Feature not enabled, please check license");await cn.users.removeAppBuilder(e,t)}var sa={};S(sa,{logs:()=>ms});var ms={};S(ms,{logSearch:()=>mT,oldestLogDate:()=>ef,storeLog:()=>yT});var Zd=require("@budibase/types"),oa=require("@budibase/backend-core");var pt=require("@budibase/types");var K=require("@budibase/backend-core");var Hd=require("@budibase/backend-core");async function Yd(e,t){let r,n=5,a=!1,o,i=!0;for(;n>0;n--)try{i?o=await e():o=await exports.randomDelay(e),a=!0;break}catch(s){r=s}return a||Hd.logging.logWarn(`Failed to backoff: ${t}`,r),o}var{SEPARATOR:ze,UNICODE_MAX:iT,DocumentType:Jd,AutomationViewMode:us,ViewName:uT,getQueryIndex:pT}=K.db,cT=new Date(0).toISOString(),lT=100,ps=async()=>On(pt.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS);function zd(e,t,{status:r,automationId:n}={},a={}){let o=n?`${n}${ze}`:"",i=r?`${r}${ze}`:"",s;return r&&n?s=`${us.ALL}${ze}${i}${o}`:r?s=`${us.STATUS}${ze}${i}`:n?s=`${us.AUTOMATION}${ze}${o}`:s=`${Jd.AUTOMATION_LOG}${ze}`,{...a,descending:!0,startkey:`${s}${t}${iT}`,endkey:`${s}${e}`}}function cs(e){let t=pt.AutomationStatus.SUCCESS,r=!0;for(let n of e.steps){let a=n.outputs?.status?.toLowerCase(),o=a==="stopped_error";if(r&&!o){r=!1;continue}if(o){t=pt.AutomationStatus.STOPPED_ERROR;break}else if(n.outputs?.success){if(a==="stopped"){t=pt.AutomationStatus.STOPPED;break}}else{t=pt.AutomationStatus.ERROR;break}}return t}function dT(e,t,r){return`${Jd.AUTOMATION_LOG}${ze}${e}${ze}${r}${ze}${t}`}async function ls(e,t,r={docs:!0}){let n=K.context.getProdAppDB();await n.exists()||(n=K.context.getDevAppDB());let a={status:r.status},o=r?.limit?r.limit:r?.paginate?9+1:void 0,i=zd(e,t,a,{include_docs:r.docs,limit:o});r?.page&&(i.startkey=r.page);let s=await n.allDocs(i);return Sr(s,{paginate:r?.paginate,pageSize:9})}async function ds(e,t,r={}){let n=K.context.getProdAppDB();await n.exists()||(n=K.context.getDevAppDB());let a;try{let o={automationId:r?.automationId,status:r?.status},i=zd(e,t,o,{include_docs:!0,limit:9+1});r?.page&&(i.startkey=r.page),a=await n.query(pT(uT.AUTOMATION_LOGS),i)}catch(o){if(o!=null&&(o.name==="not_found"||o.error==="not_found"))return await Eu(),ds(e,t,r);throw o}return Sr(a,{paginate:!0,pageSize:9})}async function Xd(e,t){let r=K.context.getProdAppDB(),n=e._id,a=e.name,o=cs(t),i=new Date().toISOString(),s=dT(i,o,n),l={...t,automationId:n,status:o,automationName:a,createdAt:i,_id:s};return await r.put(l),s}async function fs(e,{clearing:t}={clearing:!1}){let r=K.context.getProdAppDB();await Yd(async()=>{let n=await r.get(K.db.DocumentType.APP_METADATA);for(let a of e){let o=a.split(K.db.SEPARATOR),i=`${o[o.length-3]}${K.db.SEPARATOR}${o[o.length-2]}`,s={};n.automationErrors&&(s=n.automationErrors),Array.isArray(s[i])||(s[i]=[]);let l=s[i].indexOf(a);t&&l!==-1?s[i].splice(l,1):s[i].push(a),s[i].length===0&&delete s[i],n.automationErrors=s}await r.put(n),await K.cache.app.invalidateAppMetadata(n.appId,n)},"Failed to update app metadata with automation log error")}async function fT(){let e=await ps();try{return await ls(cT,e,{docs:!1,paginate:!1,limit:lT})}catch{return{data:[],hasNextPage:!1}}}async function gs(){let e=K.context.getProdAppDB();try{let t=await fT();if(!t.data||t.data.length===0)return;let r=t.data.map(a=>({_id:a.id,_rev:a.value.rev,_deleted:!0})),n=t.data.filter(a=>{let o=a.id.split(K.db.SEPARATOR);return o[o.length-1]===pt.AutomationStatus.ERROR}).map(a=>a.id);await e.bulkDocs(r),n.length&&await fs(n,{clearing:!0})}catch(t){K.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}var ef=ps;async function gT(e,t,r,n){let a,o=new Date().toISOString(),i=await ef();return(!e||e<i)&&(e=i),r||t?a=await ds(e,o,{automationId:r,status:t,page:n}):a=await ls(e,o,{status:t,page:n,docs:!0,paginate:!0}),a}async function mT(e){return await gs(),await gT(e.startDate,e.status,e.automationId,e.page)}async function yT(e,t){if(!oa.db.isProdAppID(oa.context.getAppId()))return;let r=cs(t),n=await Xd(e,t);r===Zd.AutomationStatus.ERROR&&await fs([n]),await gs()}var ia={};S(ia,{checkPluginQuotas:()=>IT,deletePlugin:()=>hT,storePlugin:()=>AT});var af=require("@budibase/types"),j=require("@budibase/backend-core");var tf=O(require("fs")),rf=require("path");function nf(e,t){return tf.default.readFileSync((0,rf.join)(e,t),"utf8")}async function AT(metadata,directory,source){let db=j.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=j.objectStore.getPluginS3Dir(name),files=await j.objectStore.uploadDirectory(j.objectStore.ObjectStoreBuckets.PLUGINS,directory,bucketPath),jsFile=files.find(e=>e.name.endsWith(".js")),iconFile=files.find(e=>e.name.endsWith(".svg"));if(!jsFile)throw new Error("Plugin missing .js file.");if(metadata.schema.type===af.PluginType.DATASOURCE){let js=nf(directory,jsFile.name);try{eval(js)}catch(e){let t=e?.message?e.message:JSON.stringify(e);throw new Error(`JS invalid: ${t}`)}}let iconFileName=iconFile?iconFile.name:null,pluginId=j.db.generatePluginID(name),rev;try{rev=(await db.get(pluginId))._rev}catch(e){rev=void 0}let doc={_id:pluginId,_rev:rev,...metadata,name,version,hash,description,source};iconFileName&&(doc.iconFileName=iconFileName),source&&(doc={...doc,source});let write=async()=>{let e=await db.put(doc);return await j.events.plugin.imported(doc),{...doc,_rev:e.rev}};return rev?await write():await Xo(write)}async function hT(e){let t=j.tenancy.getGlobalDB();try{let r=await t.get(e),n=j.objectStore.getPluginS3Dir(r.name);await j.objectStore.deleteFolder(j.objectStore.ObjectStoreBuckets.PLUGINS,n),await t.remove(e,r._rev),await j.events.plugin.deleted(r),await Zo()}catch(r){let n=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${n}`)}}async function IT(){let e=j.tenancy.getGlobalDB();try{let r=(await e.allDocs(j.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await es(r)}catch(t){j.logging.logAlert("Unable to retrieve plugins for quota check",t)}}var je={};S(je,{fetch:()=>ST,fetchValues:()=>wT,isEncryptionKeyAvailable:()=>bT,isValid:()=>uf,remove:()=>ET,update:()=>vT});var ln=require("@budibase/types"),of=require("@budibase/backend-core");function bT(){return!!of.env.ENCRYPTION_KEY}async function ST(){let e=await It.get();return Object.keys(e.variables)}async function wT(e){let r=(await It.get()).variables,n={};for(let[a,o]of Object.entries(r))switch(e){case ln.AppEnvironment.DEVELOPMENT:n[a]=o.development;break;case ln.AppEnvironment.PRODUCTION:default:n[a]=o.production;break}return n}async function sf(e){if(!(await Ge.cache.getCachedLicense()).features.includes(ln.Feature.ENVIRONMENT_VARIABLES))throw new Error("User does not have access to environment variables feature.");let r=await It.get();r.variables=e(r.variables),await It.update(r)}async function vT(e,t){if(uf(e))await sf(n=>(n[e]=t,n));else throw new Error("Variable name has characters that are not allowed")}async function ET(e){await sf(t=>(delete t[e],t))}function uf(e){return/^[a-zA-Z0-9-_]+$/.test(e)}var ct={};S(ct,{definitions:()=>DT,download:()=>UT,fetch:()=>LT,write:()=>CT});var pa=require("@budibase/types");var F=require("@budibase/backend-core"),Ce=require("@budibase/types");var pf=require("memorystream"),cf=new F.sql.Sql(Ce.SqlClient.SQL_LITE);async function RT(e,t,r){let n={operation:Ce.Operation.READ,table:Gt.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:Ce.SortOrder.DESCENDING,type:Ce.SortType.STRING}}},a=cf._query(n);if(Array.isArray(a))throw new Error("Cannot execute multiple queries for audit log search");return{sql:a.sql,bindings:a.bindings}}function _T(e){return`${F.DocumentType.AUDIT_LOG}${F.SEPARATOR}${e}${F.SEPARATOR}${F.utils.newid()}`}async function lf(e){e._id||(e._id=_T(e.timestamp)),e.type||(e.type=Ce.AUDIT_LOG_TYPE);try{let r=await F.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){F.logging.logAlert("Failed to write audit log",t)}}async function ys(e,t,r){t||(t=1);let n=F.context.getAuditLogsDB();try{let a=9+1,o=await RT(e,t,a),i=Gt.searchTable(),s=cf.convertJsonStringColumns(i,await n.sql(o.sql,o.bindings)),l;s.length>a&&(l=s.pop());let f={rows:s,hasNextPage:!!l};return f.hasNextPage&&(f.bookmark=t+1),f}catch(a){if(a.status===404&&!r?.isRetry)return await xT(),await gu(),await ys(e,t,{isRetry:!0});throw a}}async function xT(){let e=F.context.getAuditLogsDB(),r=(await e.allDocs(F.db.getDocParams(F.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(n=>n.doc).filter(n=>n&&!n.type).map(n=>({...n,type:Ce.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}function df(e){let t=F.context.getAuditLogsDB(),r=new pf,n=t.dump(r,{filter:o=>{let i=o;if(!i._id?.startsWith(F.DocumentType.AUDIT_LOG))return!1;let s=!0,l=(f,m)=>{!f||f.length===0||(s=!!(s&&m&&f.includes(m)))};if(l(e.userIds,i.userId),l(e.appIds,i.appId),l(e.events,i.event),(e.startDate||e.endDate)&&(s=s&&i.timestamp>=e.startDate&&i.timestamp<=e.endDate),e.fullSearch){let f=JSON.stringify(o);s=s&&f.includes(e.fullSearch)}return s}}),a=new pf;return r.on("data",o=>{let i=JSON.parse(Buffer.from(o).toString());if(Array.isArray(i.docs)){let s="";for(let l of i.docs)s+=JSON.stringify(l)+`
38
- `;a.write(s)}}),r.on("end",()=>{a.end()}),{promise:n,stream:a}}var ae=require("@budibase/backend-core");var ua=require("@budibase/types"),dn=require("@budibase/string-templates"),fn=require("@budibase/backend-core"),PT=fn.constants.MIN_VALID_DATE.toISOString(),OT=fn.constants.MAX_VALID_DATE.toISOString();function As(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||PT,e.endDate=e.endDate||OT),e}async function ff(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(n=>fn.db.getProdAppID(n)));let t={};function r(n,a){a?.length&&(t.oneOf={...t.oneOf,[n]:a})}return r("userId",e.userIds),r("appId",e.appIds),r("event",e.events),e.fullSearch&&(t.fuzzyOr=!0,t.fuzzy={name:e.fullSearch,fallback:e.fullSearch}),(e.startDate||e.endDate)&&(e=As(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}function hs(e,t,r){let n={_id:e,status:ua.AuditLogResourceStatus.DELETED};switch(t){case"app":n.name=r?.appName;break;case"user":n.email=r?.email;break}return n}function Is(e){let t=(0,dn.findHBSBlocks)(e);for(let r of t){let n=` "${r}"`;e=e.replace(e.includes(n)?n:` ${r}`,""),e=(0,dn.processStringSync)(e,{})}return e}function gf(e,t){let r=ua.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let n=(0,dn.processStringSync)(r,t);return n.includes('""')&&(n=Is(r)),n}async function CT(e,t,r){if(!await ea()||!ae.utils.isAudited(e))return;let n=gf(e,t),a=new Date;r?.timestamp&&(a=new Date(r.timestamp));let o={timestamp:a.toISOString(),event:e,name:n,userId:r?.userId||pa.AuditLogSystemUser,metadata:{...t,...r?.hostInfo}},i={};try{if(r?.appId){o.appId=ae.db.getProdAppID(r.appId);let s=await ae.cache.app.getAppMetadata(r.appId);"name"in s&&(i.appName=s.name)}if(r?.userId){let s=await ae.users.getById(r?.userId);i.email=s.email}}catch(s){ae.logging.logAlert("Failed to retrieve fallback information for audit log",s)}return o.fallback=i,await lf(o)}async function qT(e){let t=e.map(s=>s.userId),n=e.filter(s=>s.appId).map(s=>ae.db.getDevAppID(s.appId)),a=await ae.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),o=await ae.db.getAppsByIDs([...new Set(n)]),i=[];for(let s of e){let l=a.find(g=>g?._id===s.userId),f=o.find(g=>ae.db.isSameAppID(g?.appId,s.appId)),m={event:s.event,timestamp:s.timestamp,name:s.name,metadata:s.metadata,user:l||hs(s.userId,"user",s.fallback)};s.appId&&(m.app=f||hs(s.appId,"app",s.fallback)),i.push(m)}return i}async function LT(e){if(!await ea())throw new Error("Audit logs not available - license required.");let t=await ff(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await ys(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await qT(r.rows)}}function UT(e){return e=As(e),df(e)}function DT(){let e=Object.entries(pa.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=Is(r[1]);return t}var ca={};S(ca,{applications:()=>vs,roles:()=>Ss,users:()=>bs});var bs={};S(bs,{roleCheck:()=>NT});function BT(e,t){let r=e.request.body;return r.builder&&(r.builder=t?.builder||void 0),r.admin&&(r.admin=t?.admin||void 0),r.roles&&(r.roles=t?.roles||{}),e.request.body=r,e}async function NT(e,t){return await Ye()||BT(e,t),e}var Ss={};S(Ss,{assign:()=>GT,unAssign:()=>MT});var gn=require("@budibase/backend-core");async function GT(e,t){if(!await Ye())throw new Error("Unable to assign roles - license required.");let r=await Qe.bulkGet(e);for(let n of r){if(t.role&&t.role.roleId){let a=gn.db.getProdAppID(t.role.appId);n.roles[a]=t.role.roleId}if(t.appBuilder){let a=gn.db.getProdAppID(t.appBuilder.appId),o=n.builder?.apps||[];n.builder={apps:o.concat([a])}}t.builder&&(n.builder={global:!0}),t.admin&&(n.admin={global:!0}),n.roles}await Qe.bulkUpdate(r)}async function MT(e,t){if(!await Ye())throw new Error("Unable to un-assign roles - license required.");let r=await Qe.bulkGet(e);for(let n of r){if(t.role){let a=gn.db.getProdAppID(t.role?.appId);n.roles[a]===t.role.roleId&&delete n.roles[a]}if(t.appBuilder&&n.builder?.apps){let a=gn.db.getProdAppID(t.appBuilder.appId);n.builder.apps=n.builder.apps.filter(o=>o!==a)}t.builder&&n.builder&&delete n.builder,t.admin&&n.admin&&delete n.admin}}var vs={};S(vs,{buildExportFn:()=>FT,buildImportFn:()=>kT});var ws=require("@budibase/backend-core");function kT(e){return async(t,r)=>{await Ye()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await ws.context.doInAppContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}function FT(e){return async(t,r)=>{await Ye()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:n,excludeRows:a}=t.request.body;await ws.context.doInAppContext(t.params.appId,async()=>{t.request.body={encryptPassword:n,excludeRows:a},t.query.appId=t.params.appId,await e(t),await r()})}}var We=require("@budibase/backend-core"),ne=require("@budibase/types");var Es=require("@budibase/backend-core"),mf;function yf(){mf=new Es.queue.BudibaseQueue(Es.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}function Tt(){return mf}var Af=require("path"),hf=O(require("fs"));async function Rs(e,t={}){return be.storeAppBackupMetadata(e,t)}function If(e){let t=new Date().toISOString();switch(e){case ne.AppBackupStatus.COMPLETE:case ne.AppBackupStatus.FAILED:return{timestamp:t,finishedAt:t};case ne.AppBackupStatus.STARTED:return{timestamp:t,startedAt:t};case ne.AppBackupStatus.PENDING:return{timestamp:t,createdAt:t}}}async function QT(e,t,r,n){let a=await la(e);return await be.storeAppBackupMetadata({...a,...If(t),contents:r,status:t,type:ne.AppBackupType.BACKUP},{filename:n,docId:e})}async function jT(e,t,r){let n=await la(e);return await be.storeAppBackupMetadata({...n,...If(r),status:r,type:ne.AppBackupType.RESTORE,trigger:ne.AppBackupTrigger.MANUAL},{docId:e,docRev:t})}async function la(e){return be.getAppBackupMetadata(e)}async function WT(e,t){return be.updateAppBackupMetadata(e,t)}async function $T(e){let t=await be.getAppBackupMetadata(e);return t.filename&&await We.objectStore.deleteFile(We.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),be.deleteAppBackupMetadata(e)}async function VT(e,t){return be.fetchAppBackups(e,t)}async function bf(e){let t=await be.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let r=await We.objectStore.getReadStream(We.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}async function KT(e){let{stream:t}=await bf(e),r=(0,Af.join)(We.objectStore.budibaseTempDir(),We.utils.newid()),n=hf.default.createWriteStream(r);return new Promise((a,o)=>{t.on("error",o),n.on("error",o),t.pipe(n).on("close",()=>a(r))})}async function HT(e,t,r={}){let n;try{n=await Rs({appId:e,trigger:t,timestamp:new Date().toISOString(),status:ne.AppBackupStatus.PENDING,type:ne.AppBackupType.BACKUP,...r})}catch(a){if(a.status===409)return;throw a}return await Tt().add({docId:n.id,docRev:n.rev,appId:e,export:{trigger:t,...r}}),await We.events.backup.appBackupTriggered(e,n.id,ne.AppBackupType.BACKUP,t,r?.name),n.id}async function YT(e,t,r,n){let a=await la(t),o;try{o=await Rs({appId:e,timestamp:new Date().toISOString(),status:ne.AppBackupStatus.PENDING,type:ne.AppBackupType.RESTORE,createdBy:n})}catch(i){if(i?.status===409)return;throw i}return await Tt().add({appId:e,docId:o.id,docRev:o.rev,import:{nameForBackup:r,backupId:t,createdBy:n}}),{restoreId:o.id,metadata:a}}var JT={isEnabled:jo,triggerAppRestore:le(YT),triggerAppBackup:le(HT),getBackupDownloadStream:le(bf),downloadAppBackup:le(KT),fetchAppBackups:le(VT),storeAppBackupMetadata:le(Rs),updateBackupStatus:le(QT),updateRestoreStatus:le(jT),getAppBackup:le(la),updateAppBackup:le(WT),deleteAppBackup:le($T)},Xe=JT;var xs={};S(xs,{init:()=>_s});var W=require("@budibase/backend-core");var qe=require("@budibase/types");var sr=O(require("fs"));async function _s(e){Tt().process(async t=>{let r=t.data;try{if(r.export)return ZT(t,e);if(r.import)return XT(t,e)}catch(n){W.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,n)}})}async function zT(e){await W.db.getDB(e,{skip_setup:!0}).destroy()}async function Sf(e,t,r,n){let a=W.db.getDevAppID(r),o=W.db.getProdAppID(r),i=new Date().toISOString(),s=async(l,f)=>{n?.doc?await Xe.updateBackupStatus(n.doc.id,l,f?.contents,f?.filename):await Xe.storeAppBackupMetadata({appId:o,timestamp:i,trigger:e,status:l,name:n?.name,type:qe.AppBackupType.BACKUP,contents:f?.contents,createdBy:n?.createdBy},{filename:f?.filename})};try{let l=await n.processing.exportAppFn(a,{tar:!0}),f=await n.processing.statsFn(a),m=`${o}/backup-${i}.tar.gz`,g=W.objectStore.ObjectStoreBuckets.BACKUPS,y=sr.default.createReadStream(l);await W.objectStore.streamUpload({bucket:g,filename:m,stream:y,extra:{type:"application/gzip",metadata:{name:n?.name,trigger:e,timestamp:i,appId:o}}}),await s(qe.AppBackupStatus.COMPLETE,{filename:m,contents:f}),sr.default.existsSync(l)&&sr.default.rmSync(l)}catch(l){W.logging.logAlert("App backup error",l),await s(qe.AppBackupStatus.FAILED)}}async function XT(e,t){let r=e.data,n=r.appId,a=r.import.backupId,o=r.import.nameForBackup,i=r.import.createdBy,s=W.tenancy.getTenantIDFromAppID(n);return W.tenancy.doInTenant(s,async()=>{let l=W.db.getDevAppID(n),{rev:f}=await Xe.updateRestoreStatus(r.docId,r.docRev,qe.AppBackupStatus.STARTED);await Sf(qe.AppBackupTrigger.RESTORING,s,n,{processing:t,createdBy:i,name:o});let m=await Xe.downloadAppBackup(a);await zT(l);let g=qe.AppBackupStatus.COMPLETE;try{await t.importAppFn(l,W.db.getDB(l),{file:{type:"application/gzip",path:m},key:m})}catch(y){W.logging.logAlert("App restore error",y),g=qe.AppBackupStatus.FAILED}await Xe.updateRestoreStatus(r.docId,f,g),sr.default.existsSync(m)&&sr.default.rmSync(m,{force:!0})})}async function ZT(e,t){let r=e.data,n=r.appId,a=r.export.trigger,o=r.export.name,i=W.tenancy.getTenantIDFromAppID(n);await W.tenancy.doInTenant(i,async()=>{try{let{rev:s}=await Xe.updateBackupStatus(r.docId,qe.AppBackupStatus.STARTED);return Sf(a,i,n,{processing:t,doc:{id:r.docId,rev:s},name:o})}catch(s){W.logging.logAlert("App backup error",s)}})}var eP=async e=>{yf(),await _s(e.processing)},ve={...Xe,processing:xs,init:eP,getBackupQueue:Tt};var wf=async e=>{e.backups&&await ve.init(e.backups)};var se={};S(se,{create:()=>KN,find:()=>VN,get:()=>$N,remove:()=>YN,update:()=>HN});var WA=O(wi()),Ze=require("@budibase/backend-core");var $A=require("@budibase/types");async function $N(e){let t=Ze.tenancy.getGlobalDB(),r=new Ze.db.QueryBuilder(t.name,$A.SearchIndex.USER);r.setIndexBuilder(Ze.db.searchIndexes.createUserIndex),r.setLimit(e.pageSize),r.addEqual("scimInfo.isSync",!0);for(let[a,o]of Object.entries(e.filters?.equal??{}))r.addEqual(a,o);r.setSort("_id"),r.setSkip(e.skip);let n=await r.run();return{users:n.rows,total:n.totalRows}}async function VN(e){return await Ze.users.getById(e)}async function KN(e){let t=await Qe.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new Ze.HTTPError("User is already synched",409);e={...t,scimInfo:(0,WA.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await Qe.save(e,{requirePassword:!1})}async function HN(e,t){return await Qe.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}async function YN(e){return await Qe.destroy(e)}var dr={};S(dr,{create:()=>JN});var VA=O(wi());var KA=require("@budibase/backend-core");async function JN(e){let t=await Ha(e.name),r;if(!t)r=(await G.save(e)).id;else{if(t.scimInfo?.isSync)throw new KA.HTTPError("Group is already synched",409);r=t._id,t.users&&(await G.removeUsers(r,t.users.map(a=>a._id)),delete t.users),t.scimInfo=(0,VA.default)(t.scimInfo,e.scimInfo),await G.save(t)}return await G.get(r)}var Ot={};S(Ot,{logRequest:()=>zN,logResponse:()=>XN});var vi=require("@budibase/backend-core");async function zN(e){vi.logging.logWarn("SCIM request log",e)}async function XN(e){vi.logging.logWarn("SCIM response error",e)}var Ti={};S(Ti,{doInScimContext:()=>Ri,feature:()=>M,internalGroupOnly:()=>_a,licensing:()=>HA,requireSCIM:()=>_i,scimGroupOnly:()=>hn,scimUserOnly:()=>An});var lt=require("@budibase/backend-core");var Ea=require("@budibase/types"),ZN=(e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(lt.env.SELF_HOSTED&&lt.env.DEFAULT_LICENSE)return t.user.license=Ja,r();t.user.license=await Ge.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(lt.utils.isServingApp(t)||lt.utils.isServingBuilder(t)||lt.utils.isServingBuilderPreview(t)||lt.utils.isPublicApiRequest(t))&&await Fe.usageLimitIsExceeded(Ea.StaticQuotaName.USERS,Ea.QuotaUsageType.STATIC)}return r()},HA=ZN;var M={};S(M,{requireFeature:()=>eG,requireFeatures:()=>tG});var eG=e=>async(t,r)=>{await Zn(e),await r()},tG=(...e)=>async(t,r)=>{await Qo(e),await r()};var Ra=require("@budibase/backend-core");var Ri=async(e,t)=>(Ra.env.DISABLE_SCIM_CALLS||await Ot.logRequest({...e.request.toJSON(),body:e.request.body}),await Ra.context.doInScimContext(async()=>{let r=await t();return await Ot.logResponse({...e.response.toJSON(),body:e.response.body}),r}));var _i=async(e,t)=>{await Vo(),await t()};var YA=require("@budibase/backend-core");var An=e=>xi(YA.users.getById,e,!0),hn=e=>xi(D.get,e,!0),_a=e=>xi(D.get,e,!1);function xi(e,t,r){return async(n,a)=>{let o=n.params[t];return typeof o!="string"&&n.throw(404),!!(await e(o)).scimInfo?.isSync!==r&&n.throw(404),a()}}var $i={};S($i,{ai:()=>ch,appBackups:()=>Yh,auditLogs:()=>Mh,environmentVariables:()=>Ch,groups:()=>wh,scim:()=>RI,users:()=>OI});var Ui=require("@budibase/types");var Li={};S(Li,{getLLM:()=>Oa});var ge=require("@budibase/backend-core"),ah=require("@budibase/types");var Ci=O(require("openai"));var dt=require("@budibase/types");var ie=class e{constructor(t){this.messages=t}user(t){return this.messages.push({role:"user",content:t}),this}system(t){return this.messages.push({role:"system",content:t}),this}static user(t){return new e([{role:"user",content:t}])}static system(t){return new e([{role:"system",content:t}])}static fromRequest(t){return new e(t.messages)}};function Pi(e){return ie.user(`Summarize this text:
37
+ `;function Gr(e){return to.default.verify(e,GI,{algorithms:["RS256"]})}function MI(e,t){return to.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}var Ba={};S(Ba,{getFeatures:()=>ro});var c=require("@budibase/types");var kI={[c.PlanType.FREE]:[...pe.SELF_FREE_LICENSE.features],[c.PlanType.PREMIUM]:void 0,[c.PlanType.PREMIUM_PLUS]:[c.Feature.APP_BACKUPS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.PDF],[c.PlanType.PREMIUM_PLUS_TRIAL]:[c.Feature.APP_BACKUPS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.PDF],[c.PlanType.PRO]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS],[c.PlanType.TEAM]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS],[c.PlanType.BUSINESS]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.PDF],[c.PlanType.ENTERPRISE_BASIC]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.OFFLINE,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.PWA,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF],[c.PlanType.ENTERPRISE_BASIC_TRIAL]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.PWA,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF],[c.PlanType.ENTERPRISE]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.OFFLINE,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.PWA,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF]},FI={[c.PlanType.FREE]:[...pe.CLOUD_FREE_LICENSE.features],[c.PlanType.PREMIUM]:[c.Feature.APP_BACKUPS,c.Feature.BRANDING,c.Feature.APP_BUILDERS,c.Feature.VIEW_PERMISSIONS,c.Feature.PDF],[c.PlanType.PREMIUM_PLUS]:[c.Feature.APP_BACKUPS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.BUDIBASE_AI,c.Feature.PDF],[c.PlanType.PREMIUM_PLUS_TRIAL]:[c.Feature.APP_BACKUPS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.BUDIBASE_AI,c.Feature.PDF],[c.PlanType.PRO]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.BRANDING],[c.PlanType.TEAM]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.BRANDING],[c.PlanType.BUSINESS]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.BUDIBASE_AI,c.Feature.PDF],[c.PlanType.ENTERPRISE_BASIC]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.OFFLINE,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.BUDIBASE_AI,c.Feature.PWA,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF],[c.PlanType.ENTERPRISE_BASIC_TRIAL]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.BUDIBASE_AI,c.Feature.PWA,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF],[c.PlanType.ENTERPRISE]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.BUDIBASE_AI,c.Feature.PWA,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF]};function ro(e,t){let r=[];function a(n){let o=n[t];if(!o)throw new Error(`Features do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case c.Hosting.SELF:r=a(kI);break;case c.Hosting.CLOUD:r=a(FI);break}return r}var Na={};S(Na,{UNLIMITED:()=>d,getQuotas:()=>ao});var B=require("@budibase/types");var p=Ye,ku=pe,d=-1,kr=e=>e*1e6,QI={[B.PlanType.FREE]:{...ku.CLOUD_FREE_LICENSE.quotas},[B.PlanType.PREMIUM]:{usage:{monthly:{...p.queries(d),...p.automations(1e3),...p.budibaseAICredits(0)},static:{...p.rows(1e4),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(0),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[B.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...p.queries(d),...p.automations(5e3),...p.budibaseAICredits(kr(2))},static:{...p.rows(25e3),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(0),...p.plugins(d),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[B.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...p.queries(d),...p.automations(5e3),...p.budibaseAICredits(kr(2))},static:{...p.rows(25e3),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(0),...p.plugins(d),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[B.PlanType.PRO]:{usage:{monthly:{...p.queries(d),...p.automations(1e3),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(5),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[B.PlanType.TEAM]:{usage:{monthly:{...p.queries(d),...p.automations(5e3),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(10),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(90)}},[B.PlanType.BUSINESS]:{usage:{monthly:{...p.queries(d),...p.automations(1e4),...p.budibaseAICredits(0)},static:{...p.rows(5e4),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(50),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(365),...p.appBackupRetentionDays(365)}},[B.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(kr(4))},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(d),...p.plugins(d),...p.customAIConfigurations(d)}},constant:{...p.automationLogRetentionDays(d),...p.appBackupRetentionDays(d)}},[B.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(kr(4))},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(d),...p.plugins(d),...p.customAIConfigurations(d)}},constant:{...p.automationLogRetentionDays(15),...p.appBackupRetentionDays(15)}},[B.PlanType.ENTERPRISE]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(kr(4))},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(d),...p.plugins(d),...p.customAIConfigurations(d)}},constant:{...p.automationLogRetentionDays(d),...p.appBackupRetentionDays(d)}}},jI={[B.PlanType.FREE]:{...ku.SELF_FREE_LICENSE.quotas},[B.PlanType.PREMIUM]:void 0,[B.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(0),...p.plugins(d),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[B.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(0),...p.plugins(d),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[B.PlanType.PRO]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(5),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[B.PlanType.TEAM]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(10),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(90)}},[B.PlanType.BUSINESS]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(50),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(90),...p.appBackupRetentionDays(365)}},[B.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(d),...p.plugins(d),...p.customAIConfigurations(d)}},constant:{...p.automationLogRetentionDays(d),...p.appBackupRetentionDays(d)}},[B.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(d),...p.plugins(d),...p.customAIConfigurations(d)}},constant:{...p.automationLogRetentionDays(15),...p.appBackupRetentionDays(15)}},[B.PlanType.ENTERPRISE]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(d),...p.plugins(d),...p.customAIConfigurations(d)}},constant:{...p.automationLogRetentionDays(d),...p.appBackupRetentionDays(d)}}};function ao(e,t){let r;function a(n){let o=n[t];if(!o)throw new Error(`Quotas do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case B.Hosting.SELF:r=a(jI);break;case B.Hosting.CLOUD:r=a(QI);break}return JSON.parse(JSON.stringify(r))}var Ft={};S(Ft,{appExists:()=>WI,encoding:()=>kt});var Fu=require("@budibase/backend-core");async function WI(e){return(await Fu.db.getAllApps({all:!0,idsOnly:!0})).includes(e)}var kt={};S(kt,{base64ToObject:()=>VI,objectToBase64:()=>$I});function $I(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}function VI(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}var Ed=require("@budibase/types"),er=require("@budibase/backend-core"),Rd=C(al()),_d=C(qo());async function Sx(e){await be.save({offlineLicenseToken:e}),await St()}async function wx(){await be.save({offlineLicenseToken:void 0}),await St()}async function xd(){return(await be.get()).offlineLicenseToken}async function Lo(){let t=(await er.installation.getInstall()).installId,r=er.context.getTenantId(),a=await er.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:a}}async function vx(){let e=await Lo();return kt.objectToBase64(e)}function Ex(e){return kt.base64ToObject(e)}function Td(e){let t=Date.now(),r=new Date(e.expireAt).getTime();if(t>r)throw new Error(`Offline license has expired. expireAt=${e.expireAt}`)}async function Pd(e){let t=await Lo();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}function Cd(e){let t=e.plan.type,r=Ed.Hosting.SELF,a=ro(r,t),n=ao(r,t);return e.features=(0,Rd.default)(e.features,a),e.quotas=(0,_d.default)(e.quotas,n),e}async function Uo(){try{let e=await xd();if(e){let t=await Gr(e);return Td(t),await Pd(t),Cd(t)}}catch(e){console.error("Error retrieving offline license",e)}}var oa={};S(oa,{deleteDevLicense:()=>Px,getOfflineLicense:()=>xx,writeDevLicenseToDisk:()=>Tx});var Od=require("@budibase/backend-core"),Bo=require("path"),qd=require("os"),wt=C(require("fs"));var Rx=Od.env.isTest()?".budibase-test":".budibase",Do=(0,Bo.join)((0,qd.tmpdir)(),Rx),_x="dev_license.txt",na=(0,Bo.join)(Do,_x);if(!wt.default.existsSync(Do))try{wt.default.mkdirSync(Do)}catch{}function xx(){try{if(wt.default.existsSync(na)){let e=wt.default.readFileSync(na,{encoding:"utf-8"});return Gr(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}function Tx(e){console.log(`Writing license to: ${na}`),wt.default.writeFileSync(na,e,{encoding:"utf-8"})}function Px(){wt.default.rmSync(na,{force:!0})}var Go=async()=>{if(No.env.OFFLINE_MODE)return Uo();let e=await Mt();return e||(e=oa.getOfflineLicense()),e},Mo=e=>Zn(e),ko=()=>No.env.SELF_HOSTED?pe.SELF_FREE_LICENSE:pe.CLOUD_FREE_LICENSE;var Qo={};S(Qo,{activateLicenseKey:()=>Cx,deleteLicenseKey:()=>Ox,getLicenseKey:()=>Fo});async function Cx(e){await eo(e),await be.save({licenseKey:e}),await St()}async function Fo(){return(await be.get()).licenseKey}async function Ox(){await be.save({licenseKey:void 0}),await St()}var sa=require("@budibase/backend-core"),Za=C(require("dd-trace")),Ld=3600,St=async()=>{await Bd(),await Dd()},Ud=async(e,t)=>{let{populateLicense:r=Go,populateFreeLicense:a=ko}=t||{};return await Za.default.trace("getCachedLicense",async n=>{let o=sa.tenancy.getTenantId(),i=await Fn(),s=await i.get(o);return n.addTags({tenantId:o,foundInCache:!!s}),s?(n.addTags({refreshedAt:s.refreshedAt,features:s.features,plan:s.plan,quotas:s.quotas}),s):(s=await Za.default.trace("populateLicense",async()=>await r(o)),n.addTags({populatedLicense:!!s}),s||(s=Za.default.trace("populateFreeLicense",()=>a(e,o)),n.addTags({populatedFreeLicense:!!s})),s.refreshedAt=new Date().toISOString(),n.addTags({refreshedAt:s.refreshedAt,features:s.features,plan:s.plan,quotas:s.quotas,expirySeconds:Ld}),await i.store(o,s,Ld),s)})};sa.env.isJest()&&(Ud=jest.fn());var Dd=Ud,Bd=async()=>{let e=sa.tenancy.getTenantId();await(await Fn()).delete(e)};async function J(e,t){Array.isArray(e)||(e=[e]),t||(t=Pe.context.getLicense()),t||(t=await xe.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}async function en(e,t){if(!await J(e,t))throw new Pe.FeatureDisabledError(`${e} is not currently enabled`,e)}async function jo(e,t){if(!await J(e,t)){let r=e.join(", ");throw new Pe.FeatureDisabledError(`${r} are not currently enabled`,r)}}function le(e){return async(...t)=>(await en(H.Feature.APP_BACKUPS),e(...t))}async function Wo(){return J(H.Feature.APP_BACKUPS)}async function $o(){return J(H.Feature.BRANDING)}async function Nd(){return J(H.Feature.ENFORCEABLE_SSO)}async function Lx(){return J(H.Feature.SYNC_AUTOMATIONS)}async function Ux(){return J(H.Feature.TRIGGER_AUTOMATION_RUN)}async function vt(){return J(H.Feature.APP_BUILDERS)}async function tn(){return J(H.Feature.AUDIT_LOGS)}async function Vo(){return J(H.Feature.USER_GROUPS)}function Dx(){return J(H.Feature.PWA)}async function He(){return J(H.Feature.EXPANDED_PUBLIC_API)}async function Bx(e){if(Pe.env.ENABLE_SSO_MAINTENANCE_MODE||!await Nd())return!1;let r;return e?.config?r=e.config:r=await Pe.configs.getSettingsConfig(),!!r.isSSOEnforced}var Ko=async()=>{let e=H.Feature.SCIM,t=await J(e),r=await Pe.configs.getSCIMConfig();if(!t||!r?.enabled)throw new Pe.FeatureDisabledError(`${e} is not currently enabled`,e);return!0};async function Nx(){return J(H.Feature.VIEW_PERMISSIONS)}async function Gx(){return J(H.Feature.VIEW_READONLY_COLUMNS)}async function ia(){return J(H.Feature.BUDIBASE_AI)}async function Yo(){return J(H.Feature.AI_CUSTOM_CONFIGS)}var Mx={faviconUrl:void 0,faviconUrlEtag:void 0,emailBrandingEnabled:!0,testimonialsEnabled:!0,platformTitle:void 0,loginHeading:void 0,loginButton:void 0,metaDescription:void 0,metaImageUrl:void 0,metaTitle:void 0};async function kx(e){return await $o()?{faviconUrl:e.faviconUrl,faviconUrlEtag:e.faviconUrlEtag,emailBrandingEnabled:e.emailBrandingEnabled,testimonialsEnabled:e.testimonialsEnabled,platformTitle:e.platformTitle,loginHeading:e.loginHeading,loginButton:e.loginButton,metaDescription:e.metaDescription,metaImageUrl:e.metaImageUrl,metaTitle:e.metaTitle}:Mx}var Ho={};S(Ho,{enrichAIConfig:()=>Qx});var Fx="budibase_ai";async function Qx(e){return await ia()&&(e.config[Fx]={provider:"OpenAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),isBudibaseAI:!0,defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-4o-mini",apiKey:process.env.OPENAI_API_KEY,name:"Budibase AI"}),e}var Qe={};S(Qe,{addApp:()=>Kx,addAutomation:()=>Zx,addCustomAIConfig:()=>eT,addGroup:()=>zo,addPlugin:()=>Zo,addRow:()=>Hx,addRows:()=>zx,addUsers:()=>nn,bustCache:()=>cu,decrement:()=>Ce,decrementMany:()=>Rt,getCurrentUsageValues:()=>gu,getLicensedQuota:()=>Md,getQuotaUsage:()=>yt,increment:()=>fe,incrementBudibaseAICredits:()=>rs,incrementMany:()=>Et,removeApp:()=>Yx,removeCustomAIConfig:()=>tT,removeCustomAIConfigs:()=>rT,removeGroup:()=>Xo,removePlugin:()=>es,removeRow:()=>Jx,removeRows:()=>Xx,removeUsers:()=>nr,set:()=>Jo,setAllUsage:()=>Kn,setAppUsageValue:()=>Vn,setUsage:()=>lu,setUsagePerApp:()=>du,updatePluginCount:()=>ts,updateUsage:()=>tr,usageLimitIsExceeded:()=>Vx,utils:()=>Ir});var z=require("@budibase/types");var de=require("@budibase/backend-core");var fe=(e,t,r)=>Gd({change:1,name:e,type:t,opts:r}),Et=e=>Gd(e),Gd=async e=>{let t=Array.isArray(e)?e:[e];await tr(t.map(a=>({usageChange:a.change,name:a.name,type:a.type,opts:{dryRun:!0,suppressErrorLog:a.opts?.suppressErrorLog,id:a.opts?.id}})));let r=[];for(let a of t){let n=a.opts?.fn;n&&r.push(await n())}return await tr(t.map(a=>({usageChange:a.change,name:a.name,type:a.type,opts:{dryRun:!1,valueFn:a.opts?.valueFn,suppressErrorLog:a.opts?.suppressErrorLog,id:a.opts?.id}}))),r[0]},Ce=(e,t,r={})=>tr({usageChange:-1,name:e,type:t,opts:r}),Rt=e=>{let t=Array.isArray(e)?e:[e];return tr(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},Jo=async(e,t,r)=>Be.setUsage(r,e,t),jx=(e,t,r)=>{if(e==z.QuotaUsageType.STATIC){let a=r.usageQuota.triggers;return a?a[t]||{}:{}}else{let a=Be.utils.getCurrentMonthString(),n=r.monthly[a].triggers;return n?n[t]||{}:{}}},Wx=async(e,t,r,a)=>{try{await de.locks.doWithLock({type:z.LockType.TRY_ONCE,name:z.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let n={percentage:r,name:t.name};a&&(n.resetDate=a),await ot.triggerQuota(n)})}catch(n){de.logging.logAlert("Error triggering quota",n)}},$x=async(e,t,r,a)=>{let n=await yt(),o=e===z.QuotaUsageType.MONTHLY?n.quotaReset:void 0,i=await jx(e,t,n),s=a.triggers,l=r/a.value*100;l>100&&(l=100);for(let[f,m]of s.entries())if(l>=m&&a.value!==Ye.UNLIMITED){if(!i[m]){i[m]=new Date().toISOString();let y=s[f+1]||100;(!(l>=y)||l===m)&&await Wx(t,a,l,o)}}else i[m]=void 0;return i},tr=async e=>{let t=de.tenancy.getTenantId(),r=Array.isArray(e)?e:[e],a=null,n,o=[],i={},s={},l={},f={};for(let g of r){try{a=de.context.getAppId()}catch{}if(z.APP_QUOTA_NAMES.includes(g.name)&&!a)throw new Error("App context required for quota update");try{n=await Md(z.QuotaType.USAGE,g.name,g.type),o.push(n);let{total:h,app:v,breakdown:T}=await Be.getCurrentUsageValues(g.type,g.name,g.opts?.id);h+=g.usageChange,v!=null&&(v+=g.usageChange),T!=null&&(T+=g.usageChange);let _={};if(g.opts?.dryRun||(_=await $x(g.type,g.name,h,n),f={...f,[g.name]:_}),n.value!==Ye.UNLIMITED&&h>n.value&&g.usageChange>0)throw new de.UsageLimitError(`Licensed ${n.name} of ${n.value} has been exceeded`,n.name);if(h=Math.max(0,h),v&&(v=Math.max(0,v)),T&&(T=Math.max(0,T),l={...l,[g.name]:T}),!g.opts?.dryRun){let E=g.opts?.valueFn;E&&(h=await E(),v=h),i={...i,[g.name]:h},s={...s,[g.name]:v}}}catch(h){throw g.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${g.name}`,h),h}}let m=r.filter(g=>!g.opts?.dryRun).map(g=>({name:g.name,type:g.type,values:{total:i[g.name],app:s[g.name],breakdown:l[g.name],triggers:f[g.name]},opts:{...g.opts,tenantId:t}}));m.length>0&&await Be.setAllUsage(m)},Md=async(e,t,r)=>{let a=await xe.getCachedLicense();if(!a){let n=de.tenancy.getTenantId();throw new Error("License not found for tenant id "+n)}if(r&&(0,z.isStaticQuota)(e,r,t))return a.quotas[e][r][t];if(r&&(0,z.isMonthlyQuota)(e,r,t))return a.quotas[e][r][t];if((0,z.isConstantQuota)(e,t))return a.quotas[e][t];throw new Error("Invalid quota type")},Vx=async(e,t)=>{try{return await tr({usageChange:1,name:e,type:t,opts:{dryRun:!0}}),!1}catch(r){if(r.code===de.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw r}};var rr=require("@budibase/types"),kd=require("@budibase/backend-core"),Fd=async()=>{let e=await kd.db.getAllApps({dev:!0});return e?e.length:0},Kx=async(e,{appId:t}={})=>fe(rr.StaticQuotaName.APPS,rr.QuotaUsageType.STATIC,{fn:e,valueFn:Fd,id:t}),Yx=async({appId:e}={})=>Ce(rr.StaticQuotaName.APPS,rr.QuotaUsageType.STATIC,{valueFn:Fd,id:e});var ke=require("@budibase/types"),Hx=async(e,{tableId:t}={})=>fe(ke.StaticQuotaName.ROWS,ke.QuotaUsageType.STATIC,{fn:e,id:t}),Jx=async({tableId:e}={})=>Ce(ke.StaticQuotaName.ROWS,ke.QuotaUsageType.STATIC,{id:e}),zx=async(e,t,{tableId:r}={})=>Et({change:e,name:ke.StaticQuotaName.ROWS,type:ke.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),Xx=async(e,{tableId:t}={})=>Rt({change:e,name:ke.StaticQuotaName.ROWS,type:ke.QuotaUsageType.STATIC,opts:{id:t}});var an=require("@budibase/types"),Zx=async(e,{automationId:t}={})=>fe(an.MonthlyQuotaName.AUTOMATIONS,an.QuotaUsageType.MONTHLY,{fn:e,id:t});var ar=require("@budibase/types"),zo=async e=>fe(ar.StaticQuotaName.USER_GROUPS,ar.QuotaUsageType.STATIC,{fn:e}),Xo=async()=>Ce(ar.StaticQuotaName.USER_GROUPS,ar.QuotaUsageType.STATIC);var ut=require("@budibase/types"),Zo=async e=>fe(ut.StaticQuotaName.PLUGINS,ut.QuotaUsageType.STATIC,{fn:e}),es=async()=>Ce(ut.StaticQuotaName.PLUGINS,ut.QuotaUsageType.STATIC),ts=async e=>Jo(ut.StaticQuotaName.PLUGINS,ut.QuotaUsageType.STATIC,e);var Fe=require("@budibase/types"),ua=require("@budibase/backend-core");var nn=async(e,t,r)=>{let a=[{change:e,name:Fe.StaticQuotaName.USERS,type:Fe.QuotaUsageType.STATIC,opts:{fn:r,valueFn:ua.users.getUserCount}}];t>0&&a.push({change:t,name:Fe.StaticQuotaName.CREATORS,type:Fe.QuotaUsageType.STATIC,opts:{valueFn:ua.users.getCreatorCount}});let n=await Et(a);return await Mt(),n},nr=async(e,t)=>{let r=[{change:e,name:Fe.StaticQuotaName.USERS,type:Fe.QuotaUsageType.STATIC,opts:{valueFn:ua.users.getUserCount}}];t>0&&r.push({change:t,name:Fe.StaticQuotaName.CREATORS,type:Fe.QuotaUsageType.STATIC,opts:{valueFn:ua.users.getCreatorCount}}),await Rt(r),await Mt()};var Oe=require("@budibase/types"),rs=async e=>Et({change:e,name:Oe.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:Oe.QuotaUsageType.MONTHLY}),eT=async()=>fe(Oe.StaticQuotaName.AI_CUSTOM_CONFIGS,Oe.QuotaUsageType.STATIC),tT=async()=>Ce(Oe.StaticQuotaName.AI_CUSTOM_CONFIGS,Oe.QuotaUsageType.STATIC),rT=async e=>Rt({change:e,name:Oe.StaticQuotaName.AI_CUSTOM_CONFIGS,type:Oe.QuotaUsageType.STATIC});var Je={};S(Je,{addAppBuilder:()=>iT,db:()=>je,removeAppBuilder:()=>uT});var ca=require("@budibase/backend-core");var G={};S(G,{addAppBuilder:()=>is,addUsers:()=>ns,adjustGroupCreatorsQuotas:()=>sT,cleanupApp:()=>oT,enrichUserRolesFromGroups:()=>nT,fetch:()=>pa,get:()=>xt,getBulk:()=>Yd,getGroupBuilderAppIds:()=>Kd,getGroupRoleId:()=>aT,remove:()=>as,removeAppBuilder:()=>us,removeUsers:()=>os,save:()=>or,updateGroupApps:()=>ss});var R=require("@budibase/backend-core");var Qd=require("@budibase/backend-core"),on=class extends Qd.HTTPError{constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function $d(e,t){try{let r=[];for(let s of e)if(s.roles){let l=s.roles[R.db.getProdAppID(t)];l&&r.push(l)}let a=await Promise.all(r.map(async s=>({[s]:await R.roles.roleToNumber(s)}))),n,o,i={};a.forEach(s=>{let[l,f]=Object.entries(s)[0];i[l]={roleId:l,roleNum:f}});for(let{roleId:s,roleNum:l}of Object.values(i))(o===void 0||l>o)&&(o=l,n=s);return n}catch(r){throw R.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}async function Vd(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await D.getBulk(e,{enriched:!1}),t}async function Kd(e,t){if(!e.userGroups)return[];let r=await Vd(e.userGroups,t?.groups),a=t?.appId?R.db.getProdAppID(t?.appId):null,n=[];for(let o of r){let i=o.builder?.apps;a&&i?.includes(a)?n.push(a):a||(n=n.concat(i||[]))}return[...new Set(n)]}async function aT(e,t,r){if(!e.userGroups)return null;let a=await Vd(e.userGroups,r?.groups),n=R.db.getProdAppID(t);return e.roles?.[n]?e.roles[n]:(a=a.filter(o=>o?.roles?Object.keys(o.roles).includes(n):!1),await $d(a,t))}async function nT(e){if(!e||!e.userGroups)return e;let t=await Yd(e.userGroups,{enriched:!1}),r=[];for(let n of t)n?.roles&&(r=r.concat(Object.keys(n.roles)));r=[...new Set(r)];for(let n of r)await R.context.doInAppContext(n,async()=>{if(e.roles[n])return;let o=await $d(t,n);o&&(e.roles[n]=o)});let a=await Kd(e,{groups:t});if(a.length&&!e.builder?.global){let n=e.builder?.apps||[];e.builder={apps:n.concat(a)}}return e}async function pa(){return await D.fetch()}async function xt(e){return await D.get(e)}async function Yd(e,t={enriched:!0}){return await D.getBulk(e,t)}async function jd(e){if(await D.getByName(e))throw new on(e)}async function Wd(e){let t=await D.getGroupUsers(e._id);if(!t.length)return 0;let a=await R.tenancy.getGlobalDB().getMultiple(t.map(o=>o._id));return(await R.userUtils.creatorsInList(a)).filter(o=>o).length}async function or(e){let t=[],r=!e._id,a=0;if(delete e.users,!e._id)e._id=D.generateUserGroupID(),await jd(e.name),t.push(R.events.group.created(e));else{let o=await D.get(e._id);if(o.name!==e.name&&await jd(e.name),t.push(R.events.group.updated(e)),JSON.stringify(o.roles)!==JSON.stringify(e.roles)){let i=o.users?.length||0,s=0;i>0&&(s=await Wd(o)),Object.values(e.roles).includes("CREATOR")?a=i-s:a=-i,t.push(R.events.group.permissionsEdited(e))}}await Promise.all(t);let n=()=>D.save(e);if(r)return await zo(n);{let o=await n();if(a>0)await nn(0,a);else if(a<0){let i=await Wd(e),s=Math.abs(a)-i;s>0&&await nr(0,s)}return o}}async function as(e,t){let r;try{r=await D.get(e)}catch{throw new Error("Group not found")}let a=Object.values(r.roles||{}).includes("CREATOR"),n=()=>{};if(a){let i=R.tenancy.getGlobalDB(),s=await D.getGroupUsers(e),f=(await Promise.all(s.map(h=>i.get(h._id)))).map(h=>({...h,userGroups:h.userGroups.filter(v=>v!==e)})),g=(await R.userUtils.creatorsInList(f)).filter(h=>h).length,y=s.length-g;y&&(n=()=>nr(0,y))}let o=await D.destroy(e,t);return await R.events.group.deleted(r),await Xo(),await n(),o}async function ns(e,t){let r=await D.get(e),a=await R.users.bulkGetGlobalUsersById(t),n=[];for(let l of a)l.userGroups||(l.userGroups=[]),l.userGroups.includes(e)||n.push(l);if(!n.length)return n;let o=n.map(l=>({...l,userGroups:[...l?.userGroups||[],e]}));if(await R.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes("CREATOR")){let f=(await R.userUtils.creatorsInList(n)).filter(g=>g).length,m=n.length-f;m&&await nn(0,m)}let s=[];for(let l of t)s.push(R.cache.user.invalidateUser(l));return await Promise.all(s),await R.events.group.usersAdded(o.length,r),o}async function os(e,t){let r=await D.get(e),a=await R.users.bulkGetGlobalUsersById(t),n=[];for(let s of a){if(!s.userGroups||!s.userGroups.includes(e))continue;let l=s.userGroups.indexOf(e);s.userGroups.splice(l,1),n.push(s)}if(await R.users.bulkUpdateGlobalUsers(n),Object.values(r.roles||{}).includes("CREATOR")){let l=(await R.userUtils.creatorsInList(n)).filter(m=>m).length,f=n.length-l;f&&await nr(0,f)}let i=[];for(let s of t)i.push(R.cache.user.invalidateUser(s));return await Promise.all(i),n.length&&await R.events.group.usersDeleted(n.length,r),n}async function ss(e,t){let r=await xt(e);if(r.roles||(r.roles={}),t.appsToAdd)for(let a of t.appsToAdd)r.roles[a.appId]=a.roleId;if(t.appsToRemove)for(let a of t.appsToRemove)delete r.roles[a.appId];return await or(r)}async function oT(e){let t=await pa(),r=[];for(let a of t)!a.roles||!a.roles[e]||(delete a.roles[e],r.push(a));return await D.bulkSave(r)}async function is(e,t){if(!await vt())throw new Error("Feature not enabled, please check license");let r=R.db.getProdAppID(t),a=await xt(e);a.builder??={apps:[]},a.builder.apps.includes(t)||(a.builder.apps.push(r),await or(a))}async function us(e,t){if(!await vt())throw new Error("Feature not enabled, please check license");let r=R.db.getProdAppID(t),a=await xt(e);a.builder?.apps.includes(t)&&(a.builder.apps=a.builder.apps.filter(n=>n!==r),await or(a))}async function sT(){if(!await Vo()){let e=R.tenancy.getGlobalDB(),r=(await pa()||[]).filter(a=>Object.values(a?.roles||{}).includes("CREATOR"));for(let a of r){let n=await D.getGroupUsers(a._id),i=(await Promise.all(n.map(m=>e.get(m._id)))).map(m=>({...m,userGroups:m.userGroups.filter(g=>g!==a._id)})),l=(await R.userUtils.creatorsInList(i)).filter(m=>m).length,f=n.length-l;await D.save({...a,roles:{}}),f&&await nr(0,f)}}}ca.users.UserDB.init(Qe,G,we);var je=ca.users.UserDB;async function iT(e,t){if(!await vt())throw new Error("Feature not enabled, please check license");await ca.users.addAppBuilder(e,t)}async function uT(e,t){if(!await vt())throw new Error("Feature not enabled, please check license");await ca.users.removeAppBuilder(e,t)}var un={};S(un,{logs:()=>ys});var ys={};S(ys,{logSearch:()=>AT,oldestLogDate:()=>tf,storeLog:()=>hT});var ef=require("@budibase/types"),sn=require("@budibase/backend-core");var pt=require("@budibase/types");var K=require("@budibase/backend-core");var Hd=require("@budibase/backend-core");async function Jd(e,t){let r,a=5,n=!1,o,i=!0;for(;a>0;a--)try{i?o=await e():o=await exports.randomDelay(e),n=!0;break}catch(s){r=s}return n||Hd.logging.logWarn(`Failed to backoff: ${t}`,r),o}var{SEPARATOR:ze,UNICODE_MAX:pT,DocumentType:zd,AutomationViewMode:ps,ViewName:cT,getQueryIndex:lT}=K.db,dT=new Date(0).toISOString(),fT=100,cs=async()=>Oa(pt.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS);function Xd(e,t,{status:r,automationId:a}={},n={}){let o=a?`${a}${ze}`:"",i=r?`${r}${ze}`:"",s;return r&&a?s=`${ps.ALL}${ze}${i}${o}`:r?s=`${ps.STATUS}${ze}${i}`:a?s=`${ps.AUTOMATION}${ze}${o}`:s=`${zd.AUTOMATION_LOG}${ze}`,{...n,descending:!0,startkey:`${s}${t}${pT}`,endkey:`${s}${e}`}}function ls(e){let t=pt.AutomationStatus.SUCCESS,r=!0;for(let a of e.steps){let n=a.outputs?.status?.toLowerCase(),o=n==="stopped_error";if(r&&!o){r=!1;continue}if(o){t=pt.AutomationStatus.STOPPED_ERROR;break}else if(a.outputs?.success){if(n==="stopped"){t=pt.AutomationStatus.STOPPED;break}}else{t=pt.AutomationStatus.ERROR;break}}return t}function gT(e,t,r){return`${zd.AUTOMATION_LOG}${ze}${e}${ze}${r}${ze}${t}`}async function ds(e,t,r={docs:!0}){let a=K.context.getProdAppDB();await a.exists()||(a=K.context.getDevAppDB());let n={status:r.status},o=r?.limit?r.limit:r?.paginate?9+1:void 0,i=Xd(e,t,n,{include_docs:r.docs,limit:o});r?.page&&(i.startkey=r.page);let s=await a.allDocs(i);return wr(s,{paginate:r?.paginate,pageSize:9})}async function fs(e,t,r={}){let a=K.context.getProdAppDB();await a.exists()||(a=K.context.getDevAppDB());let n;try{let o={automationId:r?.automationId,status:r?.status},i=Xd(e,t,o,{include_docs:!0,limit:9+1});r?.page&&(i.startkey=r.page),n=await a.query(lT(cT.AUTOMATION_LOGS),i)}catch(o){if(o!=null&&(o.name==="not_found"||o.error==="not_found"))return await Ru(),fs(e,t,r);throw o}return wr(n,{paginate:!0,pageSize:9})}async function Zd(e,t){let r=K.context.getProdAppDB(),a=e._id,n=e.name,o=ls(t),i=new Date().toISOString(),s=gT(i,o,a),l={...t,automationId:a,status:o,automationName:n,createdAt:i,_id:s};return await r.put(l),s}async function gs(e,{clearing:t}={clearing:!1}){let r=K.context.getProdAppDB();await Jd(async()=>{let a=await r.get(K.db.DocumentType.APP_METADATA);for(let n of e){let o=n.split(K.db.SEPARATOR),i=`${o[o.length-3]}${K.db.SEPARATOR}${o[o.length-2]}`,s={};a.automationErrors&&(s=a.automationErrors),Array.isArray(s[i])||(s[i]=[]);let l=s[i].indexOf(n);t&&l!==-1?s[i].splice(l,1):s[i].push(n),s[i].length===0&&delete s[i],a.automationErrors=s}await r.put(a),await K.cache.app.invalidateAppMetadata(a.appId,a)},"Failed to update app metadata with automation log error")}async function mT(){let e=await cs();try{return await ds(dT,e,{docs:!1,paginate:!1,limit:fT})}catch{return{data:[],hasNextPage:!1}}}async function ms(){let e=K.context.getProdAppDB();try{let t=await mT();if(!t.data||t.data.length===0)return;let r=t.data.map(n=>({_id:n.id,_rev:n.value.rev,_deleted:!0})),a=t.data.filter(n=>{let o=n.id.split(K.db.SEPARATOR);return o[o.length-1]===pt.AutomationStatus.ERROR}).map(n=>n.id);await e.bulkDocs(r),a.length&&await gs(a,{clearing:!0})}catch(t){K.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}var tf=cs;async function yT(e,t,r,a){let n,o=new Date().toISOString(),i=await tf();return(!e||e<i)&&(e=i),r||t?n=await fs(e,o,{automationId:r,status:t,page:a}):n=await ds(e,o,{status:t,page:a,docs:!0,paginate:!0}),n}async function AT(e){return await ms(),await yT(e.startDate,e.status,e.automationId,e.page)}async function hT(e,t){if(!sn.db.isProdAppID(sn.context.getAppId()))return;let r=ls(t),a=await Zd(e,t);r===ef.AutomationStatus.ERROR&&await gs([a]),await ms()}var pn={};S(pn,{checkPluginQuotas:()=>ST,deletePlugin:()=>IT,storePlugin:()=>bT});var of=require("@budibase/types"),j=require("@budibase/backend-core");var rf=C(require("fs")),af=require("path");function nf(e,t){return rf.default.readFileSync((0,af.join)(e,t),"utf8")}async function bT(metadata,directory,source){let db=j.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=j.objectStore.getPluginS3Dir(name),files=await j.objectStore.uploadDirectory(j.objectStore.ObjectStoreBuckets.PLUGINS,directory,bucketPath),jsFile=files.find(e=>e.name.endsWith(".js")),iconFile=files.find(e=>e.name.endsWith(".svg"));if(!jsFile)throw new Error("Plugin missing .js file.");if(metadata.schema.type===of.PluginType.DATASOURCE){let js=nf(directory,jsFile.name);try{eval(js)}catch(e){let t=e?.message?e.message:JSON.stringify(e);throw new Error(`JS invalid: ${t}`)}}let iconFileName=iconFile?iconFile.name:null,pluginId=j.db.generatePluginID(name),rev;try{rev=(await db.get(pluginId))._rev}catch(e){rev=void 0}let doc={_id:pluginId,_rev:rev,...metadata,name,version,hash,description,source};iconFileName&&(doc.iconFileName=iconFileName),source&&(doc={...doc,source});let write=async()=>{let e=await db.put(doc);return await j.events.plugin.imported(doc),{...doc,_rev:e.rev}};return rev?await write():await Zo(write)}async function IT(e){let t=j.tenancy.getGlobalDB();try{let r=await t.get(e),a=j.objectStore.getPluginS3Dir(r.name);await j.objectStore.deleteFolder(j.objectStore.ObjectStoreBuckets.PLUGINS,a),await t.remove(e,r._rev),await j.events.plugin.deleted(r),await es()}catch(r){let a=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${a}`)}}async function ST(){let e=j.tenancy.getGlobalDB();try{let r=(await e.allDocs(j.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await ts(r)}catch(t){j.logging.logAlert("Unable to retrieve plugins for quota check",t)}}var We={};S(We,{fetch:()=>vT,fetchValues:()=>ET,isEncryptionKeyAvailable:()=>wT,isValid:()=>pf,remove:()=>_T,update:()=>RT});var la=require("@budibase/types"),sf=require("@budibase/backend-core");function wT(){return!!sf.env.ENCRYPTION_KEY}async function vT(){let e=await bt.get();return Object.keys(e.variables)}async function ET(e){let r=(await bt.get()).variables,a={};for(let[n,o]of Object.entries(r))switch(e){case la.AppEnvironment.DEVELOPMENT:a[n]=o.development;break;case la.AppEnvironment.PRODUCTION:default:a[n]=o.production;break}return a}async function uf(e){if(!(await Me.cache.getCachedLicense()).features.includes(la.Feature.ENVIRONMENT_VARIABLES))throw new Error("User does not have access to environment variables feature.");let r=await bt.get();r.variables=e(r.variables),await bt.update(r)}async function RT(e,t){if(pf(e))await uf(a=>(a[e]=t,a));else throw new Error("Variable name has characters that are not allowed")}async function _T(e){await uf(t=>(delete t[e],t))}function pf(e){return/^[a-zA-Z0-9-_]+$/.test(e)}var ct={};S(ct,{definitions:()=>NT,download:()=>BT,fetch:()=>DT,write:()=>LT});var ln=require("@budibase/types");var F=require("@budibase/backend-core"),qe=require("@budibase/types");var cf=require("memorystream"),lf=new F.sql.Sql(qe.SqlClient.SQL_LITE);async function xT(e,t,r){let a={operation:qe.Operation.READ,table:Gt.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:qe.SortOrder.DESCENDING,type:qe.SortType.STRING}}},n=lf._query(a);if(Array.isArray(n))throw new Error("Cannot execute multiple queries for audit log search");return{sql:n.sql,bindings:n.bindings}}function TT(e){return`${F.DocumentType.AUDIT_LOG}${F.SEPARATOR}${e}${F.SEPARATOR}${F.utils.newid()}`}async function df(e){e._id||(e._id=TT(e.timestamp)),e.type||(e.type=qe.AUDIT_LOG_TYPE);try{let r=await F.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){F.logging.logAlert("Failed to write audit log",t)}}async function As(e,t,r){t||(t=1);let a=F.context.getAuditLogsDB();try{let n=9+1,o=await xT(e,t,n),i=Gt.searchTable(),s=lf.convertJsonStringColumns(i,await a.sql(o.sql,o.bindings)),l;s.length>n&&(l=s.pop());let f={rows:s,hasNextPage:!!l};return f.hasNextPage&&(f.bookmark=t+1),f}catch(n){if(n.status===404&&!r?.isRetry)return await PT(),await mu(),await As(e,t,{isRetry:!0});throw n}}async function PT(){let e=F.context.getAuditLogsDB(),r=(await e.allDocs(F.db.getDocParams(F.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(a=>a.doc).filter(a=>a&&!a.type).map(a=>({...a,type:qe.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}function ff(e){let t=F.context.getAuditLogsDB(),r=new cf,a=t.dump(r,{filter:o=>{let i=o;if(!i._id?.startsWith(F.DocumentType.AUDIT_LOG))return!1;let s=!0,l=(f,m)=>{!f||f.length===0||(s=!!(s&&m&&f.includes(m)))};if(l(e.userIds,i.userId),l(e.appIds,i.appId),l(e.events,i.event),(e.startDate||e.endDate)&&(s=s&&i.timestamp>=e.startDate&&i.timestamp<=e.endDate),e.fullSearch){let f=JSON.stringify(o);s=s&&f.includes(e.fullSearch)}return s}}),n=new cf;return r.on("data",o=>{let i=JSON.parse(Buffer.from(o).toString());if(Array.isArray(i.docs)){let s="";for(let l of i.docs)s+=JSON.stringify(l)+`
38
+ `;n.write(s)}}),r.on("end",()=>{n.end()}),{promise:a,stream:n}}var ne=require("@budibase/backend-core");var cn=require("@budibase/types"),da=require("@budibase/string-templates"),fa=require("@budibase/backend-core"),OT=fa.constants.MIN_VALID_DATE.toISOString(),qT=fa.constants.MAX_VALID_DATE.toISOString();function hs(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||OT,e.endDate=e.endDate||qT),e}async function gf(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(a=>fa.db.getProdAppID(a)));let t={};function r(a,n){n?.length&&(t.oneOf={...t.oneOf,[a]:n})}return r("userId",e.userIds),r("appId",e.appIds),r("event",e.events),e.fullSearch&&(t.fuzzyOr=!0,t.fuzzy={name:e.fullSearch,fallback:e.fullSearch}),(e.startDate||e.endDate)&&(e=hs(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}function bs(e,t,r){let a={_id:e,status:cn.AuditLogResourceStatus.DELETED};switch(t){case"app":a.name=r?.appName;break;case"user":a.email=r?.email;break}return a}function Is(e){let t=(0,da.findHBSBlocks)(e);for(let r of t){let a=` "${r}"`;e=e.replace(e.includes(a)?a:` ${r}`,""),e=(0,da.processStringSync)(e,{})}return e}function mf(e,t){let r=cn.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let a=(0,da.processStringSync)(r,t);return a.includes('""')&&(a=Is(r)),a}async function LT(e,t,r){if(!await tn()||!ne.utils.isAudited(e))return;let a=mf(e,t),n=new Date;r?.timestamp&&(n=new Date(r.timestamp));let o={timestamp:n.toISOString(),event:e,name:a,userId:r?.userId||ln.AuditLogSystemUser,metadata:{...t,...r?.hostInfo}},i={};try{if(r?.appId){o.appId=ne.db.getProdAppID(r.appId);let s=await ne.cache.app.getAppMetadata(r.appId);"name"in s&&(i.appName=s.name)}if(r?.userId){let s=await ne.users.getById(r?.userId);i.email=s.email}}catch(s){ne.logging.logAlert("Failed to retrieve fallback information for audit log",s)}return o.fallback=i,await df(o)}async function UT(e){let t=e.map(s=>s.userId),a=e.filter(s=>s.appId).map(s=>ne.db.getDevAppID(s.appId)),n=await ne.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),o=await ne.db.getAppsByIDs([...new Set(a)]),i=[];for(let s of e){let l=n.find(g=>g?._id===s.userId),f=o.find(g=>ne.db.isSameAppID(g?.appId,s.appId)),m={event:s.event,timestamp:s.timestamp,name:s.name,metadata:s.metadata,user:l||bs(s.userId,"user",s.fallback)};s.appId&&(m.app=f||bs(s.appId,"app",s.fallback)),i.push(m)}return i}async function DT(e){if(!await tn())throw new Error("Audit logs not available - license required.");let t=await gf(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await As(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await UT(r.rows)}}function BT(e){return e=hs(e),ff(e)}function NT(){let e=Object.entries(ln.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=Is(r[1]);return t}var dn={};S(dn,{applications:()=>Es,roles:()=>ws,users:()=>Ss});var Ss={};S(Ss,{roleCheck:()=>MT});function GT(e,t){let r=e.request.body;return r.builder&&(r.builder=t?.builder||void 0),r.admin&&(r.admin=t?.admin||void 0),r.roles&&(r.roles=t?.roles||{}),e.request.body=r,e}async function MT(e,t){return await He()||GT(e,t),e}var ws={};S(ws,{assign:()=>kT,unAssign:()=>FT});var ga=require("@budibase/backend-core");async function kT(e,t){if(!await He())throw new Error("Unable to assign roles - license required.");let r=await je.bulkGet(e);for(let a of r){if(t.role&&t.role.roleId){let n=ga.db.getProdAppID(t.role.appId);a.roles[n]=t.role.roleId}if(t.appBuilder){let n=ga.db.getProdAppID(t.appBuilder.appId),o=a.builder?.apps||[];a.builder={apps:o.concat([n])}}t.builder&&(a.builder={global:!0}),t.admin&&(a.admin={global:!0}),a.roles}await je.bulkUpdate(r)}async function FT(e,t){if(!await He())throw new Error("Unable to un-assign roles - license required.");let r=await je.bulkGet(e);for(let a of r){if(t.role){let n=ga.db.getProdAppID(t.role?.appId);a.roles[n]===t.role.roleId&&delete a.roles[n]}if(t.appBuilder&&a.builder?.apps){let n=ga.db.getProdAppID(t.appBuilder.appId);a.builder.apps=a.builder.apps.filter(o=>o!==n)}t.builder&&a.builder&&delete a.builder,t.admin&&a.admin&&delete a.admin}}var Es={};S(Es,{buildExportFn:()=>jT,buildImportFn:()=>QT});var vs=require("@budibase/backend-core");function QT(e){return async(t,r)=>{await He()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await vs.context.doInAppContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}function jT(e){return async(t,r)=>{await He()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:a,excludeRows:n}=t.request.body;await vs.context.doInAppContext(t.params.appId,async()=>{t.request.body={encryptPassword:a,excludeRows:n},t.query.appId=t.params.appId,await e(t),await r()})}}var $e=require("@budibase/backend-core"),ae=require("@budibase/types");var Rs=require("@budibase/backend-core"),yf;function Af(){yf=new Rs.queue.BudibaseQueue(Rs.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}function Tt(){return yf}var hf=require("path"),bf=C(require("fs"));async function _s(e,t={}){return Ie.storeAppBackupMetadata(e,t)}function If(e){let t=new Date().toISOString();switch(e){case ae.AppBackupStatus.COMPLETE:case ae.AppBackupStatus.FAILED:return{timestamp:t,finishedAt:t};case ae.AppBackupStatus.STARTED:return{timestamp:t,startedAt:t};case ae.AppBackupStatus.PENDING:return{timestamp:t,createdAt:t}}}async function WT(e,t,r,a){let n=await fn(e);return await Ie.storeAppBackupMetadata({...n,...If(t),contents:r,status:t,type:ae.AppBackupType.BACKUP},{filename:a,docId:e})}async function $T(e,t,r){let a=await fn(e);return await Ie.storeAppBackupMetadata({...a,...If(r),status:r,type:ae.AppBackupType.RESTORE,trigger:ae.AppBackupTrigger.MANUAL},{docId:e,docRev:t})}async function fn(e){return Ie.getAppBackupMetadata(e)}async function VT(e,t){return Ie.updateAppBackupMetadata(e,t)}async function KT(e){let t=await Ie.getAppBackupMetadata(e);return t.filename&&await $e.objectStore.deleteFile($e.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),Ie.deleteAppBackupMetadata(e)}async function YT(e,t){return Ie.fetchAppBackups(e,t)}async function Sf(e){let t=await Ie.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let r=await $e.objectStore.getReadStream($e.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}async function HT(e){let{stream:t}=await Sf(e),r=(0,hf.join)($e.objectStore.budibaseTempDir(),$e.utils.newid()),a=bf.default.createWriteStream(r);return new Promise((n,o)=>{t.on("error",o),a.on("error",o),t.pipe(a).on("close",()=>n(r))})}async function JT(e,t,r={}){let a;try{a=await _s({appId:e,trigger:t,timestamp:new Date().toISOString(),status:ae.AppBackupStatus.PENDING,type:ae.AppBackupType.BACKUP,...r})}catch(n){if(n.status===409)return;throw n}return await Tt().add({docId:a.id,docRev:a.rev,appId:e,export:{trigger:t,...r}}),await $e.events.backup.appBackupTriggered(e,a.id,ae.AppBackupType.BACKUP,t,r?.name),a.id}async function zT(e,t,r,a){let n=await fn(t),o;try{o=await _s({appId:e,timestamp:new Date().toISOString(),status:ae.AppBackupStatus.PENDING,type:ae.AppBackupType.RESTORE,createdBy:a})}catch(i){if(i?.status===409)return;throw i}return await Tt().add({appId:e,docId:o.id,docRev:o.rev,import:{nameForBackup:r,backupId:t,createdBy:a}}),{restoreId:o.id,metadata:n}}var XT={isEnabled:Wo,triggerAppRestore:le(zT),triggerAppBackup:le(JT),getBackupDownloadStream:le(Sf),downloadAppBackup:le(HT),fetchAppBackups:le(YT),storeAppBackupMetadata:le(_s),updateBackupStatus:le(WT),updateRestoreStatus:le($T),getAppBackup:le(fn),updateAppBackup:le(VT),deleteAppBackup:le(KT)},Xe=XT;var Ts={};S(Ts,{init:()=>xs});var W=require("@budibase/backend-core");var Le=require("@budibase/types");var sr=C(require("fs"));async function xs(e){Tt().process(async t=>{let r=t.data;try{if(r.export)return tP(t,e);if(r.import)return eP(t,e)}catch(a){W.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,a)}})}async function ZT(e){await W.db.getDB(e,{skip_setup:!0}).destroy()}async function wf(e,t,r,a){let n=W.db.getDevAppID(r),o=W.db.getProdAppID(r),i=new Date().toISOString(),s=async(l,f)=>{a?.doc?await Xe.updateBackupStatus(a.doc.id,l,f?.contents,f?.filename):await Xe.storeAppBackupMetadata({appId:o,timestamp:i,trigger:e,status:l,name:a?.name,type:Le.AppBackupType.BACKUP,contents:f?.contents,createdBy:a?.createdBy},{filename:f?.filename})};try{let l=await a.processing.exportAppFn(n,{tar:!0}),f=await a.processing.statsFn(n),m=`${o}/backup-${i}.tar.gz`,g=W.objectStore.ObjectStoreBuckets.BACKUPS,y=sr.default.createReadStream(l);await W.objectStore.streamUpload({bucket:g,filename:m,stream:y,extra:{type:"application/gzip",metadata:{name:a?.name,trigger:e,timestamp:i,appId:o}}}),await s(Le.AppBackupStatus.COMPLETE,{filename:m,contents:f}),sr.default.existsSync(l)&&sr.default.rmSync(l)}catch(l){W.logging.logAlert("App backup error",l),await s(Le.AppBackupStatus.FAILED)}}async function eP(e,t){let r=e.data,a=r.appId,n=r.import.backupId,o=r.import.nameForBackup,i=r.import.createdBy,s=W.tenancy.getTenantIDFromAppID(a);return W.tenancy.doInTenant(s,async()=>{let l=W.db.getDevAppID(a),{rev:f}=await Xe.updateRestoreStatus(r.docId,r.docRev,Le.AppBackupStatus.STARTED);await wf(Le.AppBackupTrigger.RESTORING,s,a,{processing:t,createdBy:i,name:o});let m=await Xe.downloadAppBackup(n);await ZT(l);let g=Le.AppBackupStatus.COMPLETE;try{await t.importAppFn(l,W.db.getDB(l),{file:{type:"application/gzip",path:m},key:m})}catch(y){W.logging.logAlert("App restore error",y),g=Le.AppBackupStatus.FAILED}await Xe.updateRestoreStatus(r.docId,f,g),sr.default.existsSync(m)&&sr.default.rmSync(m,{force:!0})})}async function tP(e,t){let r=e.data,a=r.appId,n=r.export.trigger,o=r.export.name,i=W.tenancy.getTenantIDFromAppID(a);await W.tenancy.doInTenant(i,async()=>{try{let{rev:s}=await Xe.updateBackupStatus(r.docId,Le.AppBackupStatus.STARTED);return wf(n,i,a,{processing:t,doc:{id:r.docId,rev:s},name:o})}catch(s){W.logging.logAlert("App backup error",s)}})}var rP=async e=>{Af(),await xs(e.processing)},ve={...Xe,processing:Ts,init:rP,getBackupQueue:Tt};var vf=async e=>{e.backups&&await ve.init(e.backups)};var se={};S(se,{create:()=>HN,find:()=>YN,get:()=>KN,remove:()=>zN,update:()=>JN});var $A=C(vi()),Ze=require("@budibase/backend-core");var VA=require("@budibase/types");async function KN(e){let t=Ze.tenancy.getGlobalDB(),r=new Ze.db.QueryBuilder(t.name,VA.SearchIndex.USER);r.setIndexBuilder(Ze.db.searchIndexes.createUserIndex),r.setLimit(e.pageSize),r.addEqual("scimInfo.isSync",!0);for(let[n,o]of Object.entries(e.filters?.equal??{}))r.addEqual(n,o);r.setSort("_id"),r.setSkip(e.skip);let a=await r.run();return{users:a.rows,total:a.totalRows}}async function YN(e){return await Ze.users.getById(e)}async function HN(e){let t=await je.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new Ze.HTTPError("User is already synched",409);e={...t,scimInfo:(0,$A.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await je.save(e,{requirePassword:!1})}async function JN(e,t){return await je.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}async function zN(e){return await je.destroy(e)}var dr={};S(dr,{create:()=>XN});var KA=C(vi());var YA=require("@budibase/backend-core");async function XN(e){let t=await Hn(e.name),r;if(!t)r=(await G.save(e)).id;else{if(t.scimInfo?.isSync)throw new YA.HTTPError("Group is already synched",409);r=t._id,t.users&&(await G.removeUsers(r,t.users.map(n=>n._id)),delete t.users),t.scimInfo=(0,KA.default)(t.scimInfo,e.scimInfo),await G.save(t)}return await G.get(r)}var Ct={};S(Ct,{logRequest:()=>ZN,logResponse:()=>eG});var Ei=require("@budibase/backend-core");async function ZN(e){Ei.logging.logWarn("SCIM request log",e)}async function eG(e){Ei.logging.logWarn("SCIM response error",e)}var Pi={};S(Pi,{doInScimContext:()=>_i,feature:()=>M,internalGroupOnly:()=>Tn,licensing:()=>HA,requireSCIM:()=>xi,scimGroupOnly:()=>ha,scimUserOnly:()=>Aa});var lt=require("@budibase/backend-core");var _n=require("@budibase/types"),tG=(e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(lt.env.SELF_HOSTED&&lt.env.DEFAULT_LICENSE)return t.user.license=zn,r();t.user.license=await Me.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(lt.utils.isServingApp(t)||lt.utils.isServingBuilder(t)||lt.utils.isServingBuilderPreview(t)||lt.utils.isPublicApiRequest(t))&&await Qe.usageLimitIsExceeded(_n.StaticQuotaName.USERS,_n.QuotaUsageType.STATIC)}return r()},HA=tG;var M={};S(M,{requireFeature:()=>rG,requireFeatures:()=>aG});var rG=e=>async(t,r)=>{await en(e),await r()},aG=(...e)=>async(t,r)=>{await jo(e),await r()};var xn=require("@budibase/backend-core");var _i=async(e,t)=>(xn.env.DISABLE_SCIM_CALLS||await Ct.logRequest({...e.request.toJSON(),body:e.request.body}),await xn.context.doInScimContext(async()=>{let r=await t();return await Ct.logResponse({...e.response.toJSON(),body:e.response.body}),r}));var xi=async(e,t)=>{await Ko(),await t()};var JA=require("@budibase/backend-core");var Aa=e=>Ti(JA.users.getById,e,!0),ha=e=>Ti(D.get,e,!0),Tn=e=>Ti(D.get,e,!1);function Ti(e,t,r){return async(a,n)=>{let o=a.params[t];return typeof o!="string"&&a.throw(404),!!(await e(o)).scimInfo?.isSync!==r&&a.throw(404),n()}}var Vi={};S(Vi,{ai:()=>lh,appBackups:()=>Jh,auditLogs:()=>kh,environmentVariables:()=>qh,groups:()=>vh,scim:()=>xb,users:()=>qb});var Di=require("@budibase/types");var Ui={};S(Ui,{getLLM:()=>qn});var ge=require("@budibase/backend-core"),oh=require("@budibase/types");var qi=C(require("openai"));var dt=require("@budibase/types");var ie=class e{constructor(t){this.messages=t}user(t){return this.messages.push({role:"user",content:t}),this}system(t){return this.messages.push({role:"system",content:t}),this}static user(t){return new e([{role:"user",content:t}])}static system(t){return new e([{role:"system",content:t}])}static fromRequest(t){return new e(t.messages)}};function Ci(e){return ie.user(`Summarize this text:
39
39
  ${e}.
40
- Only return the summary.`)}function JA(e,t){return ie.user(`Return the category of this text: "${e}". Based on these categories: ${t.join(", ")}. Only return the category.`)}function zA(e){return ie.user(`Clean the following string: "${e}". Remove any spelling mistakes or data issues. Only return the cleaned string itself and nothing else.`)}function XA(e){return ie.user(`Generate a node-cron compatible expression based on the following prompt. Return only the cron expression (without backticks), and if not possible return only 'Error generating cron' with a short explanation:
41
- ${e}`)}function ZA(e,t){return ie.user(`Translate the following text: "${e}" into ${t}. Only return the translation.`)}function eh(e){return ie.user(`Return the sentiment of this text: "${e}". Only return the sentiment.`)}function th(e){return ie.user(`Search the web for the following: "${e}". Only return the top results.`)}function rh(e,t){let r="You do not have access to any bindings in this request.";e&&e.length>0&&(r=`The bindings you have access to are:
40
+ Only return the summary.`)}function zA(e,t){return ie.user(`Return the category of this text: "${e}". Based on these categories: ${t.join(", ")}. Only return the category.`)}function XA(e){return ie.user(`Clean the following string: "${e}". Remove any spelling mistakes or data issues. Only return the cleaned string itself and nothing else.`)}function ZA(e){return ie.user(`Generate a node-cron compatible expression based on the following prompt. Return only the cron expression (without backticks), and if not possible return only 'Error generating cron' with a short explanation:
41
+ ${e}`)}function eh(e,t){return ie.user(`Translate the following text: "${e}" into ${t}. Only return the translation.`)}function th(e){return ie.user(`Return the sentiment of this text: "${e}". Only return the sentiment.`)}function rh(e){return ie.user(`Search the web for the following: "${e}". Only return the top results.`)}function ah(e,t){let r="You do not have access to any bindings in this request.";e&&e.length>0&&(r=`The bindings you have access to are:
42
42
 
43
- ${e.map(({readableBinding:a})=>`- $("${a}")`).join(`
44
- `)}`);let n="You do not have access to any snippets in this request.";return t.length>0&&(n=`The snippets you have access to are:
43
+ ${e.map(({readableBinding:n})=>`- $("${n}")`).join(`
44
+ `)}`);let a="You do not have access to any snippets in this request.";return t.length>0&&(a=`The snippets you have access to are:
45
45
 
46
- ${t.map(({name:a,code:o})=>{let i=o.replace(/^\s*return /g,"");return`- snippets.${a} = ${i.trim()}`}).join(`
46
+ ${t.map(({name:n,code:o})=>{let i=o.replace(/^\s*return /g,"");return`- snippets.${n} = ${i.trim()}`}).join(`
47
47
  `)}`),ie.system(`
48
48
  You are a helpful expert in writing JavaScript. A user is asking you for help
49
49
  writing some JavaScript for their application.
@@ -131,6 +131,6 @@ This is incorrect because it references an undefined variable "amount". It is
131
131
  important that you never reference a variable that is not defined. If you need
132
132
  a variable, it will be provided to you as a binding.
133
133
 
134
- ${n}
134
+ ${a}
135
135
 
136
- ${r}`)}var nh=require("@budibase/shared-core");function Oi(e,t){return t.map(r=>e[r]).join(" ")}var ft=class{constructor({model:t,apiKey:r,measureUsage:n}){this.model=t,this.apiKey=r,this.measureUsage=n,this.maxTokens=parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"300")}async prompt(t){typeof t=="string"&&(t=ie.user(t));let r=await this.chatCompletion(t);return this.measureUsage&&r.tokensUsed!==void 0&&r.tokensUsed>0&&await ts(r.tokensUsed),r}async summarizeText(t){return this.prompt(Pi(t))}async generateCronExpression(t){return this.prompt(XA(t))}async operation(t,r){let n=this.promptForOperation(t,r);return this.prompt(n)}promptForOperation(t,r){let{operation:n,column:a,columns:o,language:i,categories:s,prompt:l}=t;switch(n){case dt.AIOperationEnum.SUMMARISE_TEXT:return Pi(Oi(r,o));case dt.AIOperationEnum.CLEAN_DATA:return zA(r[a]);case dt.AIOperationEnum.TRANSLATE:return ZA(r[a],i);case dt.AIOperationEnum.CATEGORISE_TEXT:if(!s)throw Error("No categories provided for categorise text operation. Please provide categories.");return JA(Oi(r,o),s.split(","));case dt.AIOperationEnum.SENTIMENT_ANALYSIS:return eh(r[a]);case dt.AIOperationEnum.PROMPT:return l;case dt.AIOperationEnum.SEARCH_WEB:return th(Oi(r,o));default:throw nh.utils.unreachable(n)}}async generateJs(t,r){let{bindings:n=[],snippets:a=[]}=r||{};return await this.prompt(rh(n,a).user(t))}};var Ct=class extends ft{constructor({model:r,apiKey:n,measureUsage:a}){super({model:r,apiKey:n,measureUsage:a});this.client=new Ci.default({apiKey:n})}measureTokenUsage(r){if(!r)return 0;let n=r.prompt_tokens;return r.completion_tokens*3+n}async chatCompletion(r){try{let n=await this.client.chat.completions.create({model:this.model,messages:r.messages,max_tokens:this.maxTokens}),a=this.measureTokenUsage(n.usage);return{message:n.choices[0]?.message.content||void 0,tokensUsed:a}}catch(n){throw n instanceof Ci.default.APIError&&console.error(`OpenAI Prompt failed with error of type ${n.type} and status: ${n.status}:${n.code} - ${n.message}`),n}}};var qi=O(require("@anthropic-ai/sdk"));var xa=class extends ft{constructor(r){super(r);this.client=new qi.default({apiKey:r.apiKey})}firstTextBlock(r){for(let n of r.content)if(n.type==="text")return n.text}async chatCompletion(r){try{let n=await this.client.messages.create({model:this.model,messages:r.messages.map(({content:o})=>({role:"user",content:o})),max_tokens:this.maxTokens});return{message:this.firstTextBlock(n)}}catch(n){throw n instanceof qi.default.APIError&&console.error(`Anthropic Prompt failed with error ${n.name} and status: ${n.status}`),n}}};var gt=require("@budibase/backend-core"),Ta=class extends ft{constructor(t){if(super(t),!gt.env.SELF_HOSTED)throw new Error("BudibaseAI LLM provider is only for use in self-host environments.");if(!gt.env.BUDICLOUD_URL)throw new Error("BUDICLOUD_URL is not set");if(!this.apiKey)throw new Error("BudibaseAI API key is not set")}async chatCompletion(t){let r=await fetch(`${gt.env.BUDICLOUD_URL}/api/ai/chat`,{method:"POST",headers:{"Content-Type":"application/json",[gt.constants.Header.LICENSE_KEY]:this.apiKey},body:JSON.stringify({messages:t.messages})});if(!r.ok)throw new gt.HTTPError(r.statusText,r.status);return{message:(await r.json()).message}}};var Pa="gpt-4o-mini",rG={OpenAI:Ct,Anthropic:xa,TogetherAI:Ct,AzureOpenAI:Ct,Custom:Ct,BudibaseAI:Ta};function nG(e){for(let t in e)if(e[t].isDefault)return e[t]}async function aG(){if(!await Ko()||ge.context.isSelfHostUsingCloud())return;let e=await ge.configs.getAIConfig();if(!e)return;let t=nG(e.config);if(!(!t||!t.apiKey))return{provider:t.provider,model:t.defaultModel||Pa,apiKey:t.apiKey,measureUsage:!1}}function oG(){if(!(!ge.env.SELF_HOSTED||!ge.env.OPENAI_API_KEY))return{provider:"OpenAI",model:Pa,apiKey:ge.env.OPENAI_API_KEY,measureUsage:!1}}async function sG(){if(await sn()&&ge.env.OPENAI_API_KEY)return{provider:"OpenAI",apiKey:ge.env.OPENAI_API_KEY,model:Pa,measureUsage:!0}}async function iG(){if(!await ge.features.isEnabled(ah.FeatureFlag.AI_JS_GENERATION)||ge.context.isSelfHostUsingCloud())return;let e=await ko();if(e)return{provider:"BudibaseAI",apiKey:e,model:Pa,measureUsage:!1}}async function Oa(e){let t=await aG()||oG()||await sG()||await iG();if(!t)return;e&&(t.model=e);let r=rG[t.provider];if(r)return new r(t)}var $e=require("@budibase/backend-core");var uG=/```(?:\w+)?\n([\s\S]+?)\n```/;async function Di(){let e=await Oa();if(!e)throw new $e.HTTPError("No available LLM configurations",500);return e}async function oh(e){let t=await Di(),{prompt:r}=e.request.body,{message:n}=await t.generateCronExpression(r);n?.startsWith("Error generating cron:")?e.throw(400,n):e.body={message:n}}async function sh(e){await $e.features.isEnabled(Ui.FeatureFlag.AI_JS_GENERATION)||e.throw(500,"AI JS generation is disabled");let t=await Di();await $e.context.ensureSnippetContext();let n=$e.context.getCurrentContext()?.snippets||[],{prompt:a,bindings:o=[]}=e.request.body,i=(await t.generateJs(a,{bindings:o,snippets:n})).message||"",s=i.match(uG);s&&(i=s[1]),e.body={code:i}}async function ih(e){await $e.features.isEnabled(Ui.FeatureFlag.AI_JS_GENERATION)||e.throw(500,"AI JS generation is disabled"),$e.env.SELF_HOSTED&&e.throw(500,"Budibase AI endpoints are not available in self-host");let t=await Di(),r=ie.fromRequest(e.request.body),{message:n}=await t.prompt(r);e.body={message:n}}var ph=O(require("@koa/router")),Bi=require("@budibase/backend-core");var Ca=require("@budibase/backend-core");async function uh(e,t){let r=e.request.headers[Ca.constants.Header.LICENSE_KEY];Array.isArray(r)&&(r=r[0]),r||e.throw(403,"License key not provided");let n=await Go(r);n||e.throw(403,"License not found or invalid"),n.tenantId||e.throw(403,"License does not have a tenant ID"),await Ca.context.doInSelfHostTenantUsingCloud(n.tenantId,async()=>{await t()})}var qa=new ph.default;qa.post("/api/ai/cron",Bi.auth.builderOrAdmin,oh);qa.post("/api/ai/js",Bi.auth.builderOrAdmin,sh);qa.post("/api/ai/chat",uh,ih);var ch=qa;async function lh(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let n=await xt(t._id);t.roles=n.roles,t.scimInfo=n.scimInfo}let r=await or(t);e.body={_id:r.id,_rev:r.rev}}async function dh(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of users to add or to remove");let a,o;r&&(a=await ns(t,r)),n&&(o=await as(t,n)),e.body={added:a,removed:o}}async function fh(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of objects, with appId and roleId to add or remove"),e.body=await os(t,{appsToAdd:r,appsToRemove:n})}async function gh(e){e.body={data:await pn()}}async function mh(e){let{groupId:t,rev:r}=e.params;try{await rs(t,r),e.body={message:"Group deleted successfully"}}catch(n){e.throw(n.status,n)}}async function yh(e){try{e.body=await xt(e.params.groupId)}catch(t){e.throw(t.status,t)}}async function Ah(e){let{pageSize:t=10,bookmark:r,emailSearch:n}=e.request.query,a=e.params.groupId,o={limit:t+1},i=await Tn(a,{...o,emailSearch:n,bookmark:r}),s=n?i[t]?.email:i[t]?._id,l=!!s;e.body={users:i.slice(0,t),bookmark:s,hasNextPage:l}}async function hh(e){let{groupId:t,appId:r}=e.params;await ss(t,r),e.body={message:"Group app builder access updated."}}async function Ih(e){let{groupId:t,appId:r}=e.params;await is(t,r),e.body={message:"group app builder access removed."}}var bh=O(require("@koa/router")),me=O(require("joi"));var Ee=require("@budibase/types"),Ve=require("@budibase/backend-core"),Sh=new bh.default;function lG(){return Ve.auth.joiValidator.body(me.default.object({_id:me.default.string().optional(),_rev:me.default.string().optional(),color:me.default.string().required(),icon:me.default.string().required(),name:me.default.string().trim().required().max(50),role:me.default.string().optional(),users:me.default.array().optional(),apps:me.default.array().optional(),roles:me.default.object().optional(),createdAt:me.default.string().optional(),updatedAt:me.default.string().optional()}).required())}Sh.post("/api/global/groups",Ve.auth.adminOnly,M.requireFeature(Ee.Feature.USER_GROUPS),lG(),lh).get("/api/global/groups",M.requireFeature(Ee.Feature.USER_GROUPS),gh).delete("/api/global/groups/:groupId/:rev",M.requireFeature(Ee.Feature.USER_GROUPS),Ve.auth.adminOnly,_a("groupId"),mh).get("/api/global/groups/:groupId",M.requireFeature(Ee.Feature.USER_GROUPS),Ve.auth.builderOrAdmin,yh).get("/api/global/groups/:groupId/users",M.requireFeature(Ee.Feature.USER_GROUPS),Ve.auth.builderOrAdmin,Ah).post("/api/global/groups/:groupId/users",Ve.auth.adminOnly,M.requireFeature(Ee.Feature.USER_GROUPS),_a("groupId"),dh).post("/api/global/groups/:groupId/apps",Ve.auth.builderOrAdmin,M.requireFeature(Ee.Feature.USER_GROUPS),fh).post("/api/global/groups/:groupId/app/:appId/builder",Ve.auth.builderOrAdmin,M.requireFeatures(Ee.Feature.USER_GROUPS,Ee.Feature.APP_BUILDERS),hh).delete("/api/global/groups/:groupId/app/:appId/builder",Ve.auth.builderOrAdmin,M.requireFeatures(Ee.Feature.USER_GROUPS,Ee.Feature.APP_BUILDERS),Ih);var wh=Sh;var Ni=require("@budibase/types");var Gi=require("@budibase/backend-core");async function vh(e){e.body={encryptionKeyAvailable:je.isEncryptionKeyAvailable()}}async function Eh(e){e.body={variables:await je.fetch()}}async function Rh(e){let{name:t,production:r,development:n}=e.request.body;await je.update(t,{production:r,development:n});let a=[Ni.AppEnvironment.PRODUCTION];r!==n&&a.push(Ni.AppEnvironment.DEVELOPMENT),await Gi.events.environmentVariable.created(t,a),e.body={message:`Environment variable "${t}" created.`}}async function _h(e){let{production:t,development:r}=e.request.body,n=e.params.varName;await je.update(n,{production:t,development:r}),e.body={message:`Environment variable "${n}" updated.`}}async function xh(e){let t=e.params.varName;await je.remove(t),await Gi.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}var qt=require("@budibase/backend-core"),Ph=O(require("@koa/router")),In=O(require("joi")),Oh=new Ph.default;function Th(){return qt.auth.joiValidator.body(In.default.object({name:In.default.string().optional(),production:In.default.string().required(),development:In.default.string().required()}))}Oh.get("/api/env/variables/status",qt.auth.builderOrAdmin,vh).get("/api/env/variables",qt.auth.builderOrAdmin,Eh).post("/api/env/variables",qt.auth.builderOrAdmin,Th(),Rh).patch("/api/env/variables/:varName",qt.auth.builderOrAdmin,Th(),_h).delete("/api/env/variables/:varName",qt.auth.builderOrAdmin,xh);var Ch=Oh;var Mi=require("@budibase/backend-core");async function qh(e){let t=e.request.body,r=await ct.fetch(t);await Mi.events.auditLog.filtered(t),e.body=r}async function Lh(e){let t=e.request.body,{stream:r}=ct.download(t);await Mi.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}async function Uh(e){e.body={events:ct.definitions()}}var Bh=require("@budibase/types"),Lt=require("@budibase/backend-core"),Nh=O(require("@koa/router")),Re=O(require("joi"));function Dh(){return Lt.auth.joiValidator.body(Re.default.object({userIds:Re.default.array().items(Re.default.string()).optional(),appIds:Re.default.array().items(Re.default.string()).optional(),events:Re.default.array().items(Re.default.string().valid(...Object.values(Bh.Event))).optional(),startDate:Re.default.string().optional().allow(""),endDate:Re.default.string().optional().allow(""),fullSearch:Re.default.string().optional().allow(""),bookmark:Re.default.number()}))}var Gh=new Nh.default;Gh.post("/api/global/auditlogs/search",Lt.auth.adminOnly,Dh(),qh).get("/api/global/auditlogs/download",Lt.auth.adminOnly,Lt.middleware.querystringToBody,Dh(),Lh).get("/api/global/auditlogs/definitions",Lt.auth.adminOnly,Uh);var Mh=Gh;var ki=require("@budibase/types");var kh=require("@budibase/backend-core");async function fr(e,t){await Ft.appExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}async function Fh(e){let t=e.params.appId;await fr(e,t);let r=e.request.body,n=e.user?._id,a=await ve.triggerAppBackup(t,ki.AppBackupTrigger.MANUAL,{name:r.name,createdBy:n});a||e.throw(500,"Unable to start backup."),e.body={backupId:a,message:"Backup triggered - process starting."}}async function Qh(e){let t=e.params.appId;await fr(e,t);let r=e.params.backupId,n=e.request.body.name,a=await ve.triggerAppRestore(t,r,n,e.user?._id);a||e.throw(500,"Unable to start restore."),await kh.events.backup.appBackupRestored(a.metadata),e.body={restoredId:a?.restoreId,message:"Restore triggered - process starting."}}async function jh(e){let t=e.params.appId;await fr(e,t);let r=e.params.backupId;await ve.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}async function Wh(e){let t=e.params.appId;await fr(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(ki.AppBackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await ve.fetchAppBackups(t,{paginate:!0,...r})}async function $h(e){let t=e.params.appId;await fr(e,t);let r=e.params.backupId,n=e.request.body;e.body=await ve.updateAppBackup(r,n.name)}async function Vh(e){let t=e.params.appId;await fr(e,t);let r=e.params.backupId,{metadata:n,stream:a}=await ve.getBackupDownloadStream(r);e.attachment(`backup-${n.timestamp}.tar.gz`),e.body=a}var Kh=O(require("@koa/router")),Ut=O(require("joi")),La=require("@budibase/types"),mt=require("@budibase/backend-core"),Hh=new Kh.default;function mG(){return mt.auth.joiValidator.body(Ut.default.object({trigger:Ut.default.string().valid(...Object.values(La.AppBackupTrigger)),type:Ut.default.string().valid(...Object.values(La.AppBackupType)),startDate:Ut.default.date(),endDate:Ut.default.date(),page:Ut.default.string()}))}Hh.post("/api/apps/:appId/backups",mt.auth.builderOrAdmin,Fh).post("/api/apps/:appId/backups/search",mt.auth.builderOrAdmin,mG(),Wh).get("/api/apps/:appId/backups/:backupId/file",mt.auth.builderOrAdmin,Vh).patch("/api/apps/:appId/backups/:backupId",mt.auth.builderOrAdmin,$h).delete("/api/apps/:appId/backups/:backupId",mt.auth.builderOrAdmin,jh).post("/api/apps/:appId/backups/:backupId/import",mt.auth.builderOrAdmin,Qh);var Yh=Hh;var EI=O(require("@koa/router"));var Ua=require("scim-patch");var zh=require("@budibase/backend-core");function Jh(e,t){let r=e.request.query[t];if(r!==void 0)return+r}var Xh=async e=>{let t=Jh(e,"pageSize")??20,r=Jh(e,"startIndex"),n;e.request.query.filter&&(n=Q.user.userFilters(e.request.query.filter));let a=await se.get({pageSize:t,skip:r,filters:n});e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:a.total,Resources:a.users.map(Q.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},Zh=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await se.find(t);e.body=Q.user.toScimUserResponse(r)},eI=async e=>{let t=Q.user.fromScimUser(e.request.body);try{let r=await se.create(t);e.body=Q.user.toScimUserResponse(r)}catch(r){throw r instanceof zh.EmailUnavailableError&&e.throw(409,"Email already in use"),r}};function yG(e){let t=e.Operations.find(r=>(r.op==="Replace"||r.op==="replace")&&r.path==="active");return t?t.value===!1||t.value?.toLowerCase?.()==="false":!1}var tI=async e=>{let t=await se.find(e.params.id);t||e.throw(404);let r=Q.user.toScimUserResponse(t),n=e.request.body;try{(0,Ua.patchBodyValidation)(n)}catch{}if(yG(n))return Fi(e);let a;try{a=(0,Ua.scimPatch)(r,n.Operations)}catch{}a||e.throw(500);let o=Q.user.fromScimUser(a);await se.update(o,{allowChangingEmail:!0}),e.body=Q.user.toScimUserResponse(o)},Fi=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await se.remove(t),e.status=204};var yI=O(mI()),AI=require("@budibase/shared-core"),Da=require("scim-patch");var Ba=require("scim2-parse-filter");function hI(e,t){for(let r of t.split(","))delete e[r]}var II=async e=>{let r=(await G.fetch()).filter(o=>o.scimInfo?.isSync).map(Q.group.toScimGroupResponse),{filter:n,excludedAttributes:a}=e.request.query;if(n){let o=(0,Ba.filter)((0,Ba.parse)(n));r=r.filter(o)}a&&r.forEach(o=>{hI(o,a)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},bI=async e=>{let t=Q.group.fromScimGroup(e.request.body),r=await dr.create(t);e.body=Q.group.toScimGroupResponse(r)},SI=async e=>{let{id:t}=e.params,r=await G.get(t),n=Q.group.toScimGroupResponse(r),{excludedAttributes:a}=e.request.query;a&&hI(n,a),e.body=n},wI=async e=>{let{id:t}=e.params,r=await G.get(t);await G.remove(t,r._rev),e.status=204},vI=async e=>{let{id:t}=e.params,r=await G.get(t),n=Q.group.toScimGroupResponse(r),a=e.request.body;try{(0,Da.patchBodyValidation)(a)}catch{e.throw(400)}let{true:o,false:i}=(0,yI.default)(a.Operations,s=>s.path==="members");if(i?.length){let s=(0,Da.scimPatch)(n,i);s||e.throw(500);let l={...Q.group.fromScimGroup(s),_rev:r._rev};await G.save(l)}if(o?.length){let s=[],l=[];for(let{op:f,value:m}of o)switch(f){case"add":case"Add":for(let g of m)s.push(await se.find(g.value));break;case"remove":case"Remove":for(let g of m)l.push(await se.find(g.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:AI.utils.unreachable(f)}s.length&&await G.addUsers(t,s.map(f=>f._id)),l.length&&await G.removeUsers(t,l.map(f=>f._id))}e.body=Q.group.toScimGroupResponse(await G.get(t))};var bn=require("@budibase/types"),ye=new EI.default({prefix:"/api/global/scim/v2"});ye.use(_i);ye.use(Ri);ye.get("/users",Xh);ye.get("/users/:id",An("id"),Zh);ye.post("/users",eI);ye.patch("/users/:id",An("id"),tI);ye.delete("/users/:id",An("id"),Fi);ye.get("/groups",II);ye.post("/groups",M.requireFeature(bn.Feature.USER_GROUPS),bI);ye.get("/groups/:id",M.requireFeature(bn.Feature.USER_GROUPS),hn("id"),SI);ye.delete("/groups/:id",M.requireFeature(bn.Feature.USER_GROUPS),hn("id"),wI);ye.patch("/groups/:id",M.requireFeature(bn.Feature.USER_GROUPS),hn("id"),vI);var RI=ye;var TI=O(require("@koa/router"));var Qi=require("@budibase/backend-core");async function _I(e){let{userId:t,appId:r}=e.params,n=await Je.db.getUser(t);if(Qi.users.isGlobalBuilder(n)){e.body={message:"User already admin - no permissions updated."};return}await Je.addAppBuilder(n,r),e.body={message:`User "${n.email}" app builder access updated.`}}async function xI(e){let{userId:t,appId:r}=e.params,n=await Je.db.getUser(t);if(Qi.users.isGlobalBuilder(n)){e.body={message:"User already admin - no permissions removed."};return}await Je.removeAppBuilder(n,r),e.body={message:`User "${n.email}" app builder access removed.`}}var ji=require("@budibase/types"),Wi=require("@budibase/backend-core"),PI=new TI.default;PI.post("/api/global/users/:userId/app/:appId/builder",Wi.auth.builderOrAdmin,M.requireFeatures(ji.Feature.APP_BUILDERS),_I).delete("/api/global/users/:userId/app/:appId/builder",Wi.auth.builderOrAdmin,M.requireFeatures(ji.Feature.APP_BUILDERS),xI);var OI=PI;var Q={};S(Q,{group:()=>Ki,user:()=>Vi});var Vi={};S(Vi,{fromScimUser:()=>$G,toScimUserResponse:()=>QG,userFilters:()=>VG});var Na=require("@budibase/types"),CI=require("scim2-parse-filter"),qI=require("@budibase/backend-core"),LI=require("@budibase/shared-core"),{unreachable:FG}=LI.utils,QG=e=>{let{isSync:t,roles:r,...n}=e.scimInfo||{},a={...n,schemas:["urn:ietf:params:scim:schemas:core:2.0:User"],id:e._id,meta:{resourceType:"User",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},active:e.status===Na.UserStatus.ACTIVE};return(e.firstName||e.lastName)&&(a.name={formatted:[e.firstName,e.lastName].filter(o=>o).join(" "),familyName:e.lastName,givenName:e.firstName}),a},jG=e=>!!e?.id;function WG(e){if(qI.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}var $G=e=>{let t=jG(e)?e:void 0,r=WG(e);if(!r)throw new Error("Email is required");let n;switch(e.active){case"True":case"true":case!0:n=!0;break;case"False":case"false":case!1:n=!1;break;default:FG(e.active)}let a,o;return e.name?.givenName?(a=e.name?.givenName,o=e.name?.familyName):a=e.displayName,{tenantId:"",_id:t?.id,userId:t?.id,email:r,firstName:a,lastName:o,scimInfo:{...e,isSync:!0},roles:{},status:n?Na.UserStatus.ACTIVE:Na.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},VG=e=>{let t={equal:{}},r=(0,CI.parse)(e);function n(a){switch(a.op){case"eq":{let o=a.attrPath,i;switch(o){case"emails.value":i="email";break;default:i=`scimInfo.${o}`}t.equal[i]=a.compValue;break}case"and":for(let o of a.filters)n(o);break;default:console.warn("Filter not handled",{filter:a})}}return n(r),t};var Ki={};S(Ki,{fromScimGroup:()=>YG,toScimGroupResponse:()=>KG});var KG=e=>({schemas:["urn:ietf:params:scim:schemas:core:2.0:Group"],id:e._id,externalId:e.scimInfo.externalId,meta:{resourceType:"Group",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},displayName:e.name,members:e.users?.map(t=>({value:t._id}))}),HG=e=>!!e?.id,YG=e=>{let t=HG(e)?e:void 0;return{_id:t?.id,name:e.displayName,scimInfo:{externalId:e.externalId,isSync:!0},icon:"UserGroup",color:"var(--spectrum-global-color-blue-600)",createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}};0&&(module.exports={Method,ai,api,auditLogs,automations,backups,branding,constants,environmentVariables,features,groups,init,licensing,logger,mappers,middleware,plugins,publicApi,quotas,scimGroups,scimUsers,sdk,users,utils});
136
+ ${r}`)}var nh=require("@budibase/shared-core");function Oi(e,t){return t.map(r=>e[r]).join(" ")}var ft=class{constructor({model:t,apiKey:r,measureUsage:a}){this.model=t,this.apiKey=r,this.measureUsage=a,this.maxTokens=parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"300")}async prompt(t){typeof t=="string"&&(t=ie.user(t));let r=await this.chatCompletion(t);return this.measureUsage&&r.tokensUsed!==void 0&&r.tokensUsed>0&&await rs(r.tokensUsed),r}async summarizeText(t){return this.prompt(Ci(t))}async generateCronExpression(t){return this.prompt(ZA(t))}async operation(t,r){let a=this.promptForOperation(t,r);return this.prompt(a)}promptForOperation(t,r){let{operation:a,column:n,columns:o,language:i,categories:s,prompt:l}=t;switch(a){case dt.AIOperationEnum.SUMMARISE_TEXT:return Ci(Oi(r,o));case dt.AIOperationEnum.CLEAN_DATA:return XA(r[n]);case dt.AIOperationEnum.TRANSLATE:return eh(r[n],i);case dt.AIOperationEnum.CATEGORISE_TEXT:if(!s)throw Error("No categories provided for categorise text operation. Please provide categories.");return zA(Oi(r,o),s.split(","));case dt.AIOperationEnum.SENTIMENT_ANALYSIS:return th(r[n]);case dt.AIOperationEnum.PROMPT:return l;case dt.AIOperationEnum.SEARCH_WEB:return rh(Oi(r,o));default:throw nh.utils.unreachable(a)}}async generateJs(t,r){let{bindings:a=[],snippets:n=[]}=r||{};return await this.prompt(ah(a,n).user(t))}};var Ot=class extends ft{constructor({model:r,apiKey:a,measureUsage:n}){super({model:r,apiKey:a,measureUsage:n});this.client=new qi.default({apiKey:a})}measureTokenUsage(r){if(!r)return 0;let a=r.prompt_tokens;return r.completion_tokens*3+a}async chatCompletion(r){try{let a=await this.client.chat.completions.create({model:this.model,messages:r.messages,max_tokens:this.maxTokens}),n=this.measureTokenUsage(a.usage);return{message:a.choices[0]?.message.content||void 0,tokensUsed:n}}catch(a){throw a instanceof qi.default.APIError&&console.error(`OpenAI Prompt failed with error of type ${a.type} and status: ${a.status}:${a.code} - ${a.message}`),a}}};var Li=C(require("@anthropic-ai/sdk"));var Pn=class extends ft{constructor(r){super(r);this.client=new Li.default({apiKey:r.apiKey})}firstTextBlock(r){for(let a of r.content)if(a.type==="text")return a.text}async chatCompletion(r){try{let a=await this.client.messages.create({model:this.model,messages:r.messages.map(({content:o})=>({role:"user",content:o})),max_tokens:this.maxTokens});return{message:this.firstTextBlock(a)}}catch(a){throw a instanceof Li.default.APIError&&console.error(`Anthropic Prompt failed with error ${a.name} and status: ${a.status}`),a}}};var gt=require("@budibase/backend-core"),Cn=class extends ft{constructor(t){if(super(t),!gt.env.SELF_HOSTED)throw new Error("BudibaseAI LLM provider is only for use in self-host environments.");if(!gt.env.BUDICLOUD_URL)throw new Error("BUDICLOUD_URL is not set");if(!this.apiKey)throw new Error("BudibaseAI API key is not set")}async chatCompletion(t){let r=await fetch(`${gt.env.BUDICLOUD_URL}/api/ai/chat`,{method:"POST",headers:{"Content-Type":"application/json",[gt.constants.Header.LICENSE_KEY]:this.apiKey},body:JSON.stringify({messages:t.messages})});if(!r.ok)throw new gt.HTTPError(r.statusText,r.status);return{message:(await r.json()).message}}};var fr=require("dd-trace"),On="gpt-4o-mini",nG={OpenAI:Ot,Anthropic:Pn,TogetherAI:Ot,AzureOpenAI:Ot,Custom:Ot,BudibaseAI:Cn};function oG(e){for(let t in e)if(e[t].isDefault)return e[t]}async function sG(){return await fr.tracer.trace("getAICustomConfig",async e=>{if(!await Yo()){e.addTags({enabled:!1,reason:"feature flag disabled"});return}if(ge.context.isSelfHostUsingCloud()){e.addTags({enabled:!1,reason:"is self host using cloud"});return}let t=await ge.configs.getAIConfig();if(!t){e.addTags({enabled:!1,reason:"no config found"});return}let r=oG(t.config);if(!r){e.addTags({enabled:!1,reason:"no provider found"});return}if(!r.apiKey){e.addTags({enabled:!1,reason:"no api key found"});return}return e.addTags({enabled:!0}),{provider:r.provider,model:r.defaultModel||On,apiKey:r.apiKey,measureUsage:!1}})}function iG(){return fr.tracer.trace("getSelfHostOpenAIKeyConfig",e=>{if(!ge.env.SELF_HOSTED||!ge.env.OPENAI_API_KEY){e.addTags({enabled:!1,reason:"not self host or no api key"});return}return e.addTags({enabled:!0}),{provider:"OpenAI",model:On,apiKey:ge.env.OPENAI_API_KEY,measureUsage:!1}})}async function uG(){return await fr.tracer.trace("getBudibaseAIConfig",async e=>{if(!await ia()){e.addTags({enabled:!1,reason:"feature flag disabled"});return}if(!ge.env.OPENAI_API_KEY){e.addTags({enabled:!1,reason:"no api key found"});return}return e.addTags({enabled:!0}),{provider:"OpenAI",apiKey:ge.env.OPENAI_API_KEY,model:On,measureUsage:!0}})}async function pG(){return await fr.tracer.trace("getSelfHostBudibaseAIConfig",async e=>{if(!await ge.features.isEnabled(oh.FeatureFlag.AI_JS_GENERATION)){e.addTags({enabled:!1,reason:"feature flag disabled"});return}if(ge.context.isSelfHostUsingCloud()){e.addTags({enabled:!1,reason:"is self host using cloud"});return}let t=await Fo();if(!t){e.addTags({enabled:!1,reason:"no license key found"});return}return e.addTags({enabled:!0}),{provider:"BudibaseAI",apiKey:t,model:On,measureUsage:!1}})}async function qn(e){return await fr.tracer.trace("getLLM",async t=>{let r=await sG()||iG()||await uG()||await pG();if(!r){t.addTags({enabled:!1,reason:"no config found"});return}e&&(r.model=e);let a=nG[r.provider];if(!a){t.addTags({enabled:!1,reason:"no provider found",provider:r.provider});return}return new a(r)})}var Ve=require("@budibase/backend-core");var cG=/```(?:\w+)?\n([\s\S]+?)\n```/;async function Bi(){let e=await qn();if(!e)throw new Ve.HTTPError("No available LLM configurations",500);return e}async function sh(e){let t=await Bi(),{prompt:r}=e.request.body,{message:a}=await t.generateCronExpression(r);a?.startsWith("Error generating cron:")?e.throw(400,a):e.body={message:a}}async function ih(e){await Ve.features.isEnabled(Di.FeatureFlag.AI_JS_GENERATION)||e.throw(500,"AI JS generation is disabled");let t=await Bi();await Ve.context.ensureSnippetContext();let a=Ve.context.getCurrentContext()?.snippets||[],{prompt:n,bindings:o=[]}=e.request.body,i=(await t.generateJs(n,{bindings:o,snippets:a})).message||"",s=i.match(cG);s&&(i=s[1]),e.body={code:i}}async function uh(e){await Ve.features.isEnabled(Di.FeatureFlag.AI_JS_GENERATION)||e.throw(500,"AI JS generation is disabled"),Ve.env.SELF_HOSTED&&e.throw(500,"Budibase AI endpoints are not available in self-host");let t=await Bi(),r=ie.fromRequest(e.request.body),{message:a}=await t.prompt(r);e.body={message:a}}var ch=C(require("@koa/router")),Ni=require("@budibase/backend-core");var ba=require("@budibase/backend-core");async function ph(e,t){let r=e.request.headers[ba.constants.Header.LICENSE_KEY];Array.isArray(r)&&(r=r[0]),r||e.throw(403,"License key not provided");let a=await Mo(r);a||e.throw(403,"License not found or invalid"),a.tenantId||e.throw(403,"License does not have a tenant ID"),await ba.context.doInSelfHostTenantUsingCloud(a.tenantId,async()=>{await ba.context.doInLicenseContext(a,async()=>{await t()})})}var Ln=new ch.default;Ln.post("/api/ai/cron",Ni.auth.builderOrAdmin,sh);Ln.post("/api/ai/js",Ni.auth.builderOrAdmin,ih);Ln.post("/api/ai/chat",ph,uh);var lh=Ln;async function dh(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let a=await xt(t._id);t.roles=a.roles,t.scimInfo=a.scimInfo}let r=await or(t);e.body={_id:r.id,_rev:r.rev}}async function fh(e){let t=e.params.groupId,r=e.request.body.add,a=e.request.body.remove;(r&&!Array.isArray(r)||a&&!Array.isArray(a))&&e.throw(400,"Must supply a list of users to add or to remove");let n,o;r&&(n=await ns(t,r)),a&&(o=await os(t,a)),e.body={added:n,removed:o}}async function gh(e){let t=e.params.groupId,r=e.request.body.add,a=e.request.body.remove;(r&&!Array.isArray(r)||a&&!Array.isArray(a))&&e.throw(400,"Must supply a list of objects, with appId and roleId to add or remove"),e.body=await ss(t,{appsToAdd:r,appsToRemove:a})}async function mh(e){e.body={data:await pa()}}async function yh(e){let{groupId:t,rev:r}=e.params;try{await as(t,r),e.body={message:"Group deleted successfully"}}catch(a){e.throw(a.status,a)}}async function Ah(e){try{e.body=await xt(e.params.groupId)}catch(t){e.throw(t.status,t)}}async function hh(e){let{pageSize:t=10,bookmark:r,emailSearch:a}=e.request.query,n=e.params.groupId,o={limit:t+1},i=await Pa(n,{...o,emailSearch:a,bookmark:r}),s=a?i[t]?.email:i[t]?._id,l=!!s;e.body={users:i.slice(0,t),bookmark:s,hasNextPage:l}}async function bh(e){let{groupId:t,appId:r}=e.params;await is(t,r),e.body={message:"Group app builder access updated."}}async function Ih(e){let{groupId:t,appId:r}=e.params;await us(t,r),e.body={message:"group app builder access removed."}}var Sh=C(require("@koa/router")),me=C(require("joi"));var Ee=require("@budibase/types"),Ke=require("@budibase/backend-core"),wh=new Sh.default;function fG(){return Ke.auth.joiValidator.body(me.default.object({_id:me.default.string().optional(),_rev:me.default.string().optional(),color:me.default.string().required(),icon:me.default.string().required(),name:me.default.string().trim().required().max(50),role:me.default.string().optional(),users:me.default.array().optional(),apps:me.default.array().optional(),roles:me.default.object().optional(),createdAt:me.default.string().optional(),updatedAt:me.default.string().optional()}).required())}wh.post("/api/global/groups",Ke.auth.adminOnly,M.requireFeature(Ee.Feature.USER_GROUPS),fG(),dh).get("/api/global/groups",M.requireFeature(Ee.Feature.USER_GROUPS),mh).delete("/api/global/groups/:groupId/:rev",M.requireFeature(Ee.Feature.USER_GROUPS),Ke.auth.adminOnly,Tn("groupId"),yh).get("/api/global/groups/:groupId",M.requireFeature(Ee.Feature.USER_GROUPS),Ke.auth.builderOrAdmin,Ah).get("/api/global/groups/:groupId/users",M.requireFeature(Ee.Feature.USER_GROUPS),Ke.auth.builderOrAdmin,hh).post("/api/global/groups/:groupId/users",Ke.auth.adminOnly,M.requireFeature(Ee.Feature.USER_GROUPS),Tn("groupId"),fh).post("/api/global/groups/:groupId/apps",Ke.auth.builderOrAdmin,M.requireFeature(Ee.Feature.USER_GROUPS),gh).post("/api/global/groups/:groupId/app/:appId/builder",Ke.auth.builderOrAdmin,M.requireFeatures(Ee.Feature.USER_GROUPS,Ee.Feature.APP_BUILDERS),bh).delete("/api/global/groups/:groupId/app/:appId/builder",Ke.auth.builderOrAdmin,M.requireFeatures(Ee.Feature.USER_GROUPS,Ee.Feature.APP_BUILDERS),Ih);var vh=wh;var Gi=require("@budibase/types");var Mi=require("@budibase/backend-core");async function Eh(e){e.body={encryptionKeyAvailable:We.isEncryptionKeyAvailable()}}async function Rh(e){e.body={variables:await We.fetch()}}async function _h(e){let{name:t,production:r,development:a}=e.request.body;await We.update(t,{production:r,development:a});let n=[Gi.AppEnvironment.PRODUCTION];r!==a&&n.push(Gi.AppEnvironment.DEVELOPMENT),await Mi.events.environmentVariable.created(t,n),e.body={message:`Environment variable "${t}" created.`}}async function xh(e){let{production:t,development:r}=e.request.body,a=e.params.varName;await We.update(a,{production:t,development:r}),e.body={message:`Environment variable "${a}" updated.`}}async function Th(e){let t=e.params.varName;await We.remove(t),await Mi.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}var qt=require("@budibase/backend-core"),Ch=C(require("@koa/router")),Ia=C(require("joi")),Oh=new Ch.default;function Ph(){return qt.auth.joiValidator.body(Ia.default.object({name:Ia.default.string().optional(),production:Ia.default.string().required(),development:Ia.default.string().required()}))}Oh.get("/api/env/variables/status",qt.auth.builderOrAdmin,Eh).get("/api/env/variables",qt.auth.builderOrAdmin,Rh).post("/api/env/variables",qt.auth.builderOrAdmin,Ph(),_h).patch("/api/env/variables/:varName",qt.auth.builderOrAdmin,Ph(),xh).delete("/api/env/variables/:varName",qt.auth.builderOrAdmin,Th);var qh=Oh;var ki=require("@budibase/backend-core");async function Lh(e){let t=e.request.body,r=await ct.fetch(t);await ki.events.auditLog.filtered(t),e.body=r}async function Uh(e){let t=e.request.body,{stream:r}=ct.download(t);await ki.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}async function Dh(e){e.body={events:ct.definitions()}}var Nh=require("@budibase/types"),Lt=require("@budibase/backend-core"),Gh=C(require("@koa/router")),Re=C(require("joi"));function Bh(){return Lt.auth.joiValidator.body(Re.default.object({userIds:Re.default.array().items(Re.default.string()).optional(),appIds:Re.default.array().items(Re.default.string()).optional(),events:Re.default.array().items(Re.default.string().valid(...Object.values(Nh.Event))).optional(),startDate:Re.default.string().optional().allow(""),endDate:Re.default.string().optional().allow(""),fullSearch:Re.default.string().optional().allow(""),bookmark:Re.default.number()}))}var Mh=new Gh.default;Mh.post("/api/global/auditlogs/search",Lt.auth.adminOnly,Bh(),Lh).get("/api/global/auditlogs/download",Lt.auth.adminOnly,Lt.middleware.querystringToBody,Bh(),Uh).get("/api/global/auditlogs/definitions",Lt.auth.adminOnly,Dh);var kh=Mh;var Fi=require("@budibase/types");var Fh=require("@budibase/backend-core");async function gr(e,t){await Ft.appExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}async function Qh(e){let t=e.params.appId;await gr(e,t);let r=e.request.body,a=e.user?._id,n=await ve.triggerAppBackup(t,Fi.AppBackupTrigger.MANUAL,{name:r.name,createdBy:a});n||e.throw(500,"Unable to start backup."),e.body={backupId:n,message:"Backup triggered - process starting."}}async function jh(e){let t=e.params.appId;await gr(e,t);let r=e.params.backupId,a=e.request.body.name,n=await ve.triggerAppRestore(t,r,a,e.user?._id);n||e.throw(500,"Unable to start restore."),await Fh.events.backup.appBackupRestored(n.metadata),e.body={restoredId:n?.restoreId,message:"Restore triggered - process starting."}}async function Wh(e){let t=e.params.appId;await gr(e,t);let r=e.params.backupId;await ve.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}async function $h(e){let t=e.params.appId;await gr(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(Fi.AppBackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await ve.fetchAppBackups(t,{paginate:!0,...r})}async function Vh(e){let t=e.params.appId;await gr(e,t);let r=e.params.backupId,a=e.request.body;e.body=await ve.updateAppBackup(r,a.name)}async function Kh(e){let t=e.params.appId;await gr(e,t);let r=e.params.backupId,{metadata:a,stream:n}=await ve.getBackupDownloadStream(r);e.attachment(`backup-${a.timestamp}.tar.gz`),e.body=n}var Yh=C(require("@koa/router")),Ut=C(require("joi")),Un=require("@budibase/types"),mt=require("@budibase/backend-core"),Hh=new Yh.default;function AG(){return mt.auth.joiValidator.body(Ut.default.object({trigger:Ut.default.string().valid(...Object.values(Un.AppBackupTrigger)),type:Ut.default.string().valid(...Object.values(Un.AppBackupType)),startDate:Ut.default.date(),endDate:Ut.default.date(),page:Ut.default.string()}))}Hh.post("/api/apps/:appId/backups",mt.auth.builderOrAdmin,Qh).post("/api/apps/:appId/backups/search",mt.auth.builderOrAdmin,AG(),$h).get("/api/apps/:appId/backups/:backupId/file",mt.auth.builderOrAdmin,Kh).patch("/api/apps/:appId/backups/:backupId",mt.auth.builderOrAdmin,Vh).delete("/api/apps/:appId/backups/:backupId",mt.auth.builderOrAdmin,Wh).post("/api/apps/:appId/backups/:backupId/import",mt.auth.builderOrAdmin,jh);var Jh=Hh;var _b=C(require("@koa/router"));var Dn=require("scim-patch");var Xh=require("@budibase/backend-core");function zh(e,t){let r=e.request.query[t];if(r!==void 0)return+r}var Zh=async e=>{let t=zh(e,"pageSize")??20,r=zh(e,"startIndex"),a;e.request.query.filter&&(a=Q.user.userFilters(e.request.query.filter));let n=await se.get({pageSize:t,skip:r,filters:a});e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:n.total,Resources:n.users.map(Q.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},eb=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await se.find(t);e.body=Q.user.toScimUserResponse(r)},tb=async e=>{let t=Q.user.fromScimUser(e.request.body);try{let r=await se.create(t);e.body=Q.user.toScimUserResponse(r)}catch(r){throw r instanceof Xh.EmailUnavailableError&&e.throw(409,"Email already in use"),r}};function hG(e){let t=e.Operations.find(r=>(r.op==="Replace"||r.op==="replace")&&r.path==="active");return t?t.value===!1||t.value?.toLowerCase?.()==="false":!1}var rb=async e=>{let t=await se.find(e.params.id);t||e.throw(404);let r=Q.user.toScimUserResponse(t),a=e.request.body;try{(0,Dn.patchBodyValidation)(a)}catch{}if(hG(a))return Qi(e);let n;try{n=(0,Dn.scimPatch)(r,a.Operations)}catch{}n||e.throw(500);let o=Q.user.fromScimUser(n);await se.update(o,{allowChangingEmail:!0}),e.body=Q.user.toScimUserResponse(o)},Qi=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await se.remove(t),e.status=204};var hb=C(Ab()),bb=require("@budibase/shared-core"),Bn=require("scim-patch");var Nn=require("scim2-parse-filter");function Ib(e,t){for(let r of t.split(","))delete e[r]}var Sb=async e=>{let r=(await G.fetch()).filter(o=>o.scimInfo?.isSync).map(Q.group.toScimGroupResponse),{filter:a,excludedAttributes:n}=e.request.query;if(a){let o=(0,Nn.filter)((0,Nn.parse)(a));r=r.filter(o)}n&&r.forEach(o=>{Ib(o,n)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},wb=async e=>{let t=Q.group.fromScimGroup(e.request.body),r=await dr.create(t);e.body=Q.group.toScimGroupResponse(r)},vb=async e=>{let{id:t}=e.params,r=await G.get(t),a=Q.group.toScimGroupResponse(r),{excludedAttributes:n}=e.request.query;n&&Ib(a,n),e.body=a},Eb=async e=>{let{id:t}=e.params,r=await G.get(t);await G.remove(t,r._rev),e.status=204},Rb=async e=>{let{id:t}=e.params,r=await G.get(t),a=Q.group.toScimGroupResponse(r),n=e.request.body;try{(0,Bn.patchBodyValidation)(n)}catch{e.throw(400)}let{true:o,false:i}=(0,hb.default)(n.Operations,s=>s.path==="members");if(i?.length){let s=(0,Bn.scimPatch)(a,i);s||e.throw(500);let l={...Q.group.fromScimGroup(s),_rev:r._rev};await G.save(l)}if(o?.length){let s=[],l=[];for(let{op:f,value:m}of o)switch(f){case"add":case"Add":for(let g of m)s.push(await se.find(g.value));break;case"remove":case"Remove":for(let g of m)l.push(await se.find(g.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:bb.utils.unreachable(f)}s.length&&await G.addUsers(t,s.map(f=>f._id)),l.length&&await G.removeUsers(t,l.map(f=>f._id))}e.body=Q.group.toScimGroupResponse(await G.get(t))};var Sa=require("@budibase/types"),ye=new _b.default({prefix:"/api/global/scim/v2"});ye.use(xi);ye.use(_i);ye.get("/users",Zh);ye.get("/users/:id",Aa("id"),eb);ye.post("/users",tb);ye.patch("/users/:id",Aa("id"),rb);ye.delete("/users/:id",Aa("id"),Qi);ye.get("/groups",Sb);ye.post("/groups",M.requireFeature(Sa.Feature.USER_GROUPS),wb);ye.get("/groups/:id",M.requireFeature(Sa.Feature.USER_GROUPS),ha("id"),vb);ye.delete("/groups/:id",M.requireFeature(Sa.Feature.USER_GROUPS),ha("id"),Eb);ye.patch("/groups/:id",M.requireFeature(Sa.Feature.USER_GROUPS),ha("id"),Rb);var xb=ye;var Cb=C(require("@koa/router"));var ji=require("@budibase/backend-core");async function Tb(e){let{userId:t,appId:r}=e.params,a=await Je.db.getUser(t);if(ji.users.isGlobalBuilder(a)){e.body={message:"User already admin - no permissions updated."};return}await Je.addAppBuilder(a,r),e.body={message:`User "${a.email}" app builder access updated.`}}async function Pb(e){let{userId:t,appId:r}=e.params,a=await Je.db.getUser(t);if(ji.users.isGlobalBuilder(a)){e.body={message:"User already admin - no permissions removed."};return}await Je.removeAppBuilder(a,r),e.body={message:`User "${a.email}" app builder access removed.`}}var Wi=require("@budibase/types"),$i=require("@budibase/backend-core"),Ob=new Cb.default;Ob.post("/api/global/users/:userId/app/:appId/builder",$i.auth.builderOrAdmin,M.requireFeatures(Wi.Feature.APP_BUILDERS),Tb).delete("/api/global/users/:userId/app/:appId/builder",$i.auth.builderOrAdmin,M.requireFeatures(Wi.Feature.APP_BUILDERS),Pb);var qb=Ob;var Q={};S(Q,{group:()=>Yi,user:()=>Ki});var Ki={};S(Ki,{fromScimUser:()=>KG,toScimUserResponse:()=>WG,userFilters:()=>YG});var Gn=require("@budibase/types"),Lb=require("scim2-parse-filter"),Ub=require("@budibase/backend-core"),Db=require("@budibase/shared-core"),{unreachable:jG}=Db.utils,WG=e=>{let{isSync:t,roles:r,...a}=e.scimInfo||{},n={...a,schemas:["urn:ietf:params:scim:schemas:core:2.0:User"],id:e._id,meta:{resourceType:"User",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},active:e.status===Gn.UserStatus.ACTIVE};return(e.firstName||e.lastName)&&(n.name={formatted:[e.firstName,e.lastName].filter(o=>o).join(" "),familyName:e.lastName,givenName:e.firstName}),n},$G=e=>!!e?.id;function VG(e){if(Ub.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}var KG=e=>{let t=$G(e)?e:void 0,r=VG(e);if(!r)throw new Error("Email is required");let a;switch(e.active){case"True":case"true":case!0:a=!0;break;case"False":case"false":case!1:a=!1;break;default:jG(e.active)}let n,o;return e.name?.givenName?(n=e.name?.givenName,o=e.name?.familyName):n=e.displayName,{tenantId:"",_id:t?.id,userId:t?.id,email:r,firstName:n,lastName:o,scimInfo:{...e,isSync:!0},roles:{},status:a?Gn.UserStatus.ACTIVE:Gn.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},YG=e=>{let t={equal:{}},r=(0,Lb.parse)(e);function a(n){switch(n.op){case"eq":{let o=n.attrPath,i;switch(o){case"emails.value":i="email";break;default:i=`scimInfo.${o}`}t.equal[i]=n.compValue;break}case"and":for(let o of n.filters)a(o);break;default:console.warn("Filter not handled",{filter:n})}}return a(r),t};var Yi={};S(Yi,{fromScimGroup:()=>zG,toScimGroupResponse:()=>HG});var HG=e=>({schemas:["urn:ietf:params:scim:schemas:core:2.0:Group"],id:e._id,externalId:e.scimInfo.externalId,meta:{resourceType:"Group",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},displayName:e.name,members:e.users?.map(t=>({value:t._id}))}),JG=e=>!!e?.id,zG=e=>{let t=JG(e)?e:void 0;return{_id:t?.id,name:e.displayName,scimInfo:{externalId:e.externalId,isSync:!0},icon:"UserGroup",color:"var(--spectrum-global-color-blue-600)",createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}};0&&(module.exports={Method,ai,api,auditLogs,automations,backups,branding,constants,environmentVariables,features,groups,init,licensing,logger,mappers,middleware,plugins,publicApi,quotas,scimGroups,scimUsers,sdk,users,utils});
@@ -10,6 +10,7 @@ export declare function isTriggerAutomationRunEnabled(): Promise<boolean>;
10
10
  export declare function isAppBuildersEnabled(): Promise<boolean>;
11
11
  export declare function isAuditLogsEnabled(): Promise<boolean>;
12
12
  export declare function isUserGroupsEnabled(): Promise<boolean>;
13
+ export declare function isPWAEnabled(): Promise<boolean>;
13
14
  export declare function isExpandedPublicApiEnabled(): Promise<boolean>;
14
15
  export declare function isSSOEnforced(opts?: {
15
16
  config: SettingsInnerConfig;
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "dist"
5
5
  ],
6
6
  "license": "UNLICENSED",
7
- "version": "3.8.5",
7
+ "version": "3.8.6",
8
8
  "description": "Budibase Pro (Backend)",
9
9
  "main": "dist/index.js",
10
10
  "types": "dist/index.d.ts",
@@ -72,5 +72,5 @@
72
72
  }
73
73
  }
74
74
  },
75
- "gitHead": "94bb88bdbacb72211ea052e76e2e713722794a7f"
75
+ "gitHead": "74dd49640111c5d634c8a8417ce4019cdc1a77b0"
76
76
  }