@budibase/pro 3.12.9 → 3.12.10

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 TI=Object.create;var qa=Object.defineProperty;var vI=Object.getOwnPropertyDescriptor;var EI=Object.getOwnPropertyNames;var RI=Object.getPrototypeOf,_I=Object.prototype.hasOwnProperty;var u=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),w=(e,t)=>{for(var r in t)qa(e,r,{get:t[r],enumerable:!0})},Du=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of EI(t))!_I.call(e,n)&&n!==r&&qa(e,n,{get:()=>t[n],enumerable:!(a=vI(t,n))||a.enumerable});return e};var P=(e,t,r)=>(r=e!=null?TI(RI(e)):{},Du(t||!e||!e.__esModule?qa(r,"default",{value:e,enumerable:!0}):r,e)),xI=e=>Du(qa({},"__esModule",{value:!0}),e);var za=u((Kk,Ip)=>{"use strict";function ES(e,t){for(var r=-1,a=t.length,n=e.length;++r<a;)e[n+r]=t[r];return e}Ip.exports=ES});var To=u((Vk,Sp)=>{"use strict";var RS=typeof global=="object"&&global&&global.Object===Object&&global;Sp.exports=RS});var oe=u((Yk,wp)=>{"use strict";var _S=To(),xS=typeof self=="object"&&self&&self.Object===Object&&self,CS=_S||xS||Function("return this")();wp.exports=CS});var _t=u((Hk,Tp)=>{"use strict";var LS=oe(),OS=LS.Symbol;Tp.exports=OS});var _p=u((zk,Rp)=>{"use strict";var vp=_t(),Ep=Object.prototype,PS=Ep.hasOwnProperty,US=Ep.toString,Hr=vp?vp.toStringTag:void 0;function qS(e){var t=PS.call(e,Hr),r=e[Hr];try{e[Hr]=void 0;var a=!0}catch{}var n=US.call(e);return a&&(t?e[Hr]=r:delete e[Hr]),n}Rp.exports=qS});var Cp=u((Jk,xp)=>{"use strict";var DS=Object.prototype,NS=DS.toString;function BS(e){return NS.call(e)}xp.exports=BS});var mt=u((Xk,Pp)=>{"use strict";var Lp=_t(),MS=_p(),GS=Cp(),kS="[object Null]",FS="[object Undefined]",Op=Lp?Lp.toStringTag:void 0;function QS(e){return e==null?e===void 0?FS:kS:Op&&Op in Object(e)?MS(e):GS(e)}Pp.exports=QS});var he=u((Zk,Up)=>{"use strict";function jS(e){return e!=null&&typeof e=="object"}Up.exports=jS});var Dp=u((e0,qp)=>{"use strict";var WS=mt(),$S=he(),KS="[object Arguments]";function VS(e){return $S(e)&&WS(e)==KS}qp.exports=VS});var zr=u((t0,Mp)=>{"use strict";var Np=Dp(),YS=he(),Bp=Object.prototype,HS=Bp.hasOwnProperty,zS=Bp.propertyIsEnumerable,JS=Np(function(){return arguments}())?Np:function(e){return YS(e)&&HS.call(e,"callee")&&!zS.call(e,"callee")};Mp.exports=JS});var re=u((r0,Gp)=>{"use strict";var XS=Array.isArray;Gp.exports=XS});var jp=u((a0,Qp)=>{"use strict";var kp=_t(),ZS=zr(),ew=re(),Fp=kp?kp.isConcatSpreadable:void 0;function tw(e){return ew(e)||ZS(e)||!!(Fp&&e&&e[Fp])}Qp.exports=tw});var vo=u((n0,$p)=>{"use strict";var rw=za(),aw=jp();function Wp(e,t,r,a,n){var o=-1,s=e.length;for(r||(r=aw),n||(n=[]);++o<s;){var i=e[o];t>0&&r(i)?t>1?Wp(i,t-1,r,a,n):rw(n,i):a||(n[n.length]=i)}return n}$p.exports=Wp});var Jr=u((o0,Kp)=>{"use strict";function nw(e){return e}Kp.exports=nw});var Ja=u((s0,Vp)=>{"use strict";function ow(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)}Vp.exports=ow});var Eo=u((i0,Hp)=>{"use strict";var sw=Ja(),Yp=Math.max;function iw(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),s=Array(o);++n<o;)s[n]=a[t+n];n=-1;for(var i=Array(t+1);++n<t;)i[n]=a[n];return i[t]=r(s),sw(e,this,i)}}Hp.exports=iw});var Jp=u((u0,zp)=>{"use strict";function uw(e){return function(){return e}}zp.exports=uw});var ve=u((p0,Xp)=>{"use strict";function pw(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}Xp.exports=pw});var Xr=u((c0,Zp)=>{"use strict";var cw=mt(),lw=ve(),dw="[object AsyncFunction]",fw="[object Function]",mw="[object GeneratorFunction]",gw="[object Proxy]";function hw(e){if(!lw(e))return!1;var t=cw(e);return t==fw||t==mw||t==dw||t==gw}Zp.exports=hw});var tc=u((l0,ec)=>{"use strict";var yw=oe(),Aw=yw["__core-js_shared__"];ec.exports=Aw});var nc=u((d0,ac)=>{"use strict";var Ro=tc(),rc=function(){var e=/[^.]+$/.exec(Ro&&Ro.keys&&Ro.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function bw(e){return!!rc&&rc in e}ac.exports=bw});var _o=u((f0,oc)=>{"use strict";var Iw=Function.prototype,Sw=Iw.toString;function ww(e){if(e!=null){try{return Sw.call(e)}catch{}try{return e+""}catch{}}return""}oc.exports=ww});var ic=u((m0,sc)=>{"use strict";var Tw=Xr(),vw=nc(),Ew=ve(),Rw=_o(),_w=/[\\^$.*+?()[\]{}|]/g,xw=/^\[object .+?Constructor\]$/,Cw=Function.prototype,Lw=Object.prototype,Ow=Cw.toString,Pw=Lw.hasOwnProperty,Uw=RegExp("^"+Ow.call(Pw).replace(_w,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function qw(e){if(!Ew(e)||vw(e))return!1;var t=Tw(e)?Uw:xw;return t.test(Rw(e))}sc.exports=qw});var pc=u((g0,uc)=>{"use strict";function Dw(e,t){return e?.[t]}uc.exports=Dw});var gt=u((h0,cc)=>{"use strict";var Nw=ic(),Bw=pc();function Mw(e,t){var r=Bw(e,t);return Nw(r)?r:void 0}cc.exports=Mw});var xo=u((y0,lc)=>{"use strict";var Gw=gt(),kw=function(){try{var e=Gw(Object,"defineProperty");return e({},"",{}),e}catch{}}();lc.exports=kw});var mc=u((A0,fc)=>{"use strict";var Fw=Jp(),dc=xo(),Qw=Jr(),jw=dc?function(e,t){return dc(e,"toString",{configurable:!0,enumerable:!1,value:Fw(t),writable:!0})}:Qw;fc.exports=jw});var Co=u((b0,gc)=>{"use strict";var Ww=800,$w=16,Kw=Date.now;function Vw(e){var t=0,r=0;return function(){var a=Kw(),n=$w-(a-r);if(r=a,n>0){if(++t>=Ww)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}gc.exports=Vw});var Xa=u((I0,hc)=>{"use strict";var Yw=mc(),Hw=Co(),zw=Hw(Yw);hc.exports=zw});var Lo=u((S0,yc)=>{"use strict";var Jw=Jr(),Xw=Eo(),Zw=Xa();function eT(e,t){return Zw(Xw(e,t,Jw),e+"")}yc.exports=eT});var Zr=u((w0,Ac)=>{"use strict";var tT=gt(),rT=tT(Object,"create");Ac.exports=rT});var Sc=u((T0,Ic)=>{"use strict";var bc=Zr();function aT(){this.__data__=bc?bc(null):{},this.size=0}Ic.exports=aT});var Tc=u((v0,wc)=>{"use strict";function nT(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}wc.exports=nT});var Ec=u((E0,vc)=>{"use strict";var oT=Zr(),sT="__lodash_hash_undefined__",iT=Object.prototype,uT=iT.hasOwnProperty;function pT(e){var t=this.__data__;if(oT){var r=t[e];return r===sT?void 0:r}return uT.call(t,e)?t[e]:void 0}vc.exports=pT});var _c=u((R0,Rc)=>{"use strict";var cT=Zr(),lT=Object.prototype,dT=lT.hasOwnProperty;function fT(e){var t=this.__data__;return cT?t[e]!==void 0:dT.call(t,e)}Rc.exports=fT});var Cc=u((_0,xc)=>{"use strict";var mT=Zr(),gT="__lodash_hash_undefined__";function hT(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=mT&&t===void 0?gT:t,this}xc.exports=hT});var Oc=u((x0,Lc)=>{"use strict";var yT=Sc(),AT=Tc(),bT=Ec(),IT=_c(),ST=Cc();function Yt(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])}}Yt.prototype.clear=yT;Yt.prototype.delete=AT;Yt.prototype.get=bT;Yt.prototype.has=IT;Yt.prototype.set=ST;Lc.exports=Yt});var Uc=u((C0,Pc)=>{"use strict";function wT(){this.__data__=[],this.size=0}Pc.exports=wT});var Ht=u((L0,qc)=>{"use strict";function TT(e,t){return e===t||e!==e&&t!==t}qc.exports=TT});var ea=u((O0,Dc)=>{"use strict";var vT=Ht();function ET(e,t){for(var r=e.length;r--;)if(vT(e[r][0],t))return r;return-1}Dc.exports=ET});var Bc=u((P0,Nc)=>{"use strict";var RT=ea(),_T=Array.prototype,xT=_T.splice;function CT(e){var t=this.__data__,r=RT(t,e);if(r<0)return!1;var a=t.length-1;return r==a?t.pop():xT.call(t,r,1),--this.size,!0}Nc.exports=CT});var Gc=u((U0,Mc)=>{"use strict";var LT=ea();function OT(e){var t=this.__data__,r=LT(t,e);return r<0?void 0:t[r][1]}Mc.exports=OT});var Fc=u((q0,kc)=>{"use strict";var PT=ea();function UT(e){return PT(this.__data__,e)>-1}kc.exports=UT});var jc=u((D0,Qc)=>{"use strict";var qT=ea();function DT(e,t){var r=this.__data__,a=qT(r,e);return a<0?(++this.size,r.push([e,t])):r[a][1]=t,this}Qc.exports=DT});var ta=u((N0,Wc)=>{"use strict";var NT=Uc(),BT=Bc(),MT=Gc(),GT=Fc(),kT=jc();function zt(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])}}zt.prototype.clear=NT;zt.prototype.delete=BT;zt.prototype.get=MT;zt.prototype.has=GT;zt.prototype.set=kT;Wc.exports=zt});var Za=u((B0,$c)=>{"use strict";var FT=gt(),QT=oe(),jT=FT(QT,"Map");$c.exports=jT});var Yc=u((M0,Vc)=>{"use strict";var Kc=Oc(),WT=ta(),$T=Za();function KT(){this.size=0,this.__data__={hash:new Kc,map:new($T||WT),string:new Kc}}Vc.exports=KT});var zc=u((G0,Hc)=>{"use strict";function VT(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}Hc.exports=VT});var ra=u((k0,Jc)=>{"use strict";var YT=zc();function HT(e,t){var r=e.__data__;return YT(t)?r[typeof t=="string"?"string":"hash"]:r.map}Jc.exports=HT});var Zc=u((F0,Xc)=>{"use strict";var zT=ra();function JT(e){var t=zT(this,e).delete(e);return this.size-=t?1:0,t}Xc.exports=JT});var tl=u((Q0,el)=>{"use strict";var XT=ra();function ZT(e){return XT(this,e).get(e)}el.exports=ZT});var al=u((j0,rl)=>{"use strict";var ev=ra();function tv(e){return ev(this,e).has(e)}rl.exports=tv});var ol=u((W0,nl)=>{"use strict";var rv=ra();function av(e,t){var r=rv(this,e),a=r.size;return r.set(e,t),this.size+=r.size==a?0:1,this}nl.exports=av});var en=u(($0,sl)=>{"use strict";var nv=Yc(),ov=Zc(),sv=tl(),iv=al(),uv=ol();function Jt(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])}}Jt.prototype.clear=nv;Jt.prototype.delete=ov;Jt.prototype.get=sv;Jt.prototype.has=iv;Jt.prototype.set=uv;sl.exports=Jt});var ul=u((K0,il)=>{"use strict";var pv="__lodash_hash_undefined__";function cv(e){return this.__data__.set(e,pv),this}il.exports=cv});var cl=u((V0,pl)=>{"use strict";function lv(e){return this.__data__.has(e)}pl.exports=lv});var Oo=u((Y0,ll)=>{"use strict";var dv=en(),fv=ul(),mv=cl();function tn(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new dv;++t<r;)this.add(e[t])}tn.prototype.add=tn.prototype.push=fv;tn.prototype.has=mv;ll.exports=tn});var fl=u((H0,dl)=>{"use strict";function gv(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}dl.exports=gv});var gl=u((z0,ml)=>{"use strict";function hv(e){return e!==e}ml.exports=hv});var yl=u((J0,hl)=>{"use strict";function yv(e,t,r){for(var a=r-1,n=e.length;++a<n;)if(e[a]===t)return a;return-1}hl.exports=yv});var bl=u((X0,Al)=>{"use strict";var Av=fl(),bv=gl(),Iv=yl();function Sv(e,t,r){return t===t?Iv(e,t,r):Av(e,bv,r)}Al.exports=Sv});var Po=u((Z0,Il)=>{"use strict";var wv=bl();function Tv(e,t){var r=e==null?0:e.length;return!!r&&wv(e,t,0)>-1}Il.exports=Tv});var wl=u((eF,Sl)=>{"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}Sl.exports=vv});var Uo=u((tF,Tl)=>{"use strict";function Ev(e,t){return e.has(t)}Tl.exports=Ev});var qo=u((rF,vl)=>{"use strict";var Rv=gt(),_v=oe(),xv=Rv(_v,"Set");vl.exports=xv});var Do=u((aF,El)=>{"use strict";function Cv(){}El.exports=Cv});var rn=u((nF,Rl)=>{"use strict";function Lv(e){var t=-1,r=Array(e.size);return e.forEach(function(a){r[++t]=a}),r}Rl.exports=Lv});var xl=u((oF,_l)=>{"use strict";var No=qo(),Ov=Do(),Pv=rn(),Uv=1/0,qv=No&&1/Pv(new No([,-0]))[1]==Uv?function(e){return new No(e)}:Ov;_l.exports=qv});var Ll=u((sF,Cl)=>{"use strict";var Dv=Oo(),Nv=Po(),Bv=wl(),Mv=Uo(),Gv=xl(),kv=rn(),Fv=200;function Qv(e,t,r){var a=-1,n=Nv,o=e.length,s=!0,i=[],p=i;if(r)s=!1,n=Bv;else if(o>=Fv){var m=t?null:Gv(e);if(m)return kv(m);s=!1,n=Mv,p=new Dv}else p=t?[]:i;e:for(;++a<o;){var f=e[a],h=t?t(f):f;if(f=r||f!==0?f:0,s&&h===h){for(var g=p.length;g--;)if(p[g]===h)continue e;t&&p.push(h),i.push(f)}else n(p,h,r)||(p!==i&&p.push(h),i.push(f))}return i}Cl.exports=Qv});var an=u((iF,Ol)=>{"use strict";var jv=9007199254740991;function Wv(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=jv}Ol.exports=Wv});var Xt=u((uF,Pl)=>{"use strict";var $v=Xr(),Kv=an();function Vv(e){return e!=null&&Kv(e.length)&&!$v(e)}Pl.exports=Vv});var Bo=u((pF,Ul)=>{"use strict";var Yv=Xt(),Hv=he();function zv(e){return Hv(e)&&Yv(e)}Ul.exports=zv});var Dl=u((cF,ql)=>{"use strict";var Jv=vo(),Xv=Lo(),Zv=Ll(),eE=Bo(),tE=Xv(function(e){return Zv(Jv(e,1,eE,!0))});ql.exports=tE});var Bl=u((lF,Nl)=>{"use strict";var rE=ta();function aE(){this.__data__=new rE,this.size=0}Nl.exports=aE});var Gl=u((dF,Ml)=>{"use strict";function nE(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}Ml.exports=nE});var Fl=u((fF,kl)=>{"use strict";function oE(e){return this.__data__.get(e)}kl.exports=oE});var jl=u((mF,Ql)=>{"use strict";function sE(e){return this.__data__.has(e)}Ql.exports=sE});var $l=u((gF,Wl)=>{"use strict";var iE=ta(),uE=Za(),pE=en(),cE=200;function lE(e,t){var r=this.__data__;if(r instanceof iE){var a=r.__data__;if(!uE||a.length<cE-1)return a.push([e,t]),this.size=++r.size,this;r=this.__data__=new pE(a)}return r.set(e,t),this.size=r.size,this}Wl.exports=lE});var aa=u((hF,Kl)=>{"use strict";var dE=ta(),fE=Bl(),mE=Gl(),gE=Fl(),hE=jl(),yE=$l();function Zt(e){var t=this.__data__=new dE(e);this.size=t.size}Zt.prototype.clear=fE;Zt.prototype.delete=mE;Zt.prototype.get=gE;Zt.prototype.has=hE;Zt.prototype.set=yE;Kl.exports=Zt});var na=u((yF,Yl)=>{"use strict";var Vl=xo();function AE(e,t,r){t=="__proto__"&&Vl?Vl(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}Yl.exports=AE});var Mo=u((AF,Hl)=>{"use strict";var bE=na(),IE=Ht();function SE(e,t,r){(r!==void 0&&!IE(e[t],r)||r===void 0&&!(t in e))&&bE(e,t,r)}Hl.exports=SE});var Jl=u((bF,zl)=>{"use strict";function wE(e){return function(t,r,a){for(var n=-1,o=Object(t),s=a(t),i=s.length;i--;){var p=s[e?i:++n];if(r(o[p],p,o)===!1)break}return t}}zl.exports=wE});var Go=u((IF,Xl)=>{"use strict";var TE=Jl(),vE=TE();Xl.exports=vE});var ko=u((oa,er)=>{"use strict";var EE=oe(),rd=typeof oa=="object"&&oa&&!oa.nodeType&&oa,Zl=rd&&typeof er=="object"&&er&&!er.nodeType&&er,RE=Zl&&Zl.exports===rd,ed=RE?EE.Buffer:void 0,td=ed?ed.allocUnsafe:void 0;function _E(e,t){if(t)return e.slice();var r=e.length,a=td?td(r):new e.constructor(r);return e.copy(a),a}er.exports=_E});var Fo=u((SF,ad)=>{"use strict";var xE=oe(),CE=xE.Uint8Array;ad.exports=CE});var nn=u((wF,od)=>{"use strict";var nd=Fo();function LE(e){var t=new e.constructor(e.byteLength);return new nd(t).set(new nd(e)),t}od.exports=LE});var Qo=u((TF,sd)=>{"use strict";var OE=nn();function PE(e,t){var r=t?OE(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}sd.exports=PE});var tr=u((vF,id)=>{"use strict";function UE(e,t){var r=-1,a=e.length;for(t||(t=Array(a));++r<a;)t[r]=e[r];return t}id.exports=UE});var sa=u((EF,pd)=>{"use strict";var qE=ve(),ud=Object.create,DE=function(){function e(){}return function(t){if(!qE(t))return{};if(ud)return ud(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();pd.exports=DE});var jo=u((RF,cd)=>{"use strict";function NE(e,t){return function(r){return e(t(r))}}cd.exports=NE});var on=u((_F,ld)=>{"use strict";var BE=jo(),ME=BE(Object.getPrototypeOf,Object);ld.exports=ME});var sn=u((xF,dd)=>{"use strict";var GE=Object.prototype;function kE(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||GE;return e===r}dd.exports=kE});var Wo=u((CF,fd)=>{"use strict";var FE=sa(),QE=on(),jE=sn();function WE(e){return typeof e.constructor=="function"&&!jE(e)?FE(QE(e)):{}}fd.exports=WE});var gd=u((LF,md)=>{"use strict";function $E(){return!1}md.exports=$E});var ua=u((ia,rr)=>{"use strict";var KE=oe(),VE=gd(),Ad=typeof ia=="object"&&ia&&!ia.nodeType&&ia,hd=Ad&&typeof rr=="object"&&rr&&!rr.nodeType&&rr,YE=hd&&hd.exports===Ad,yd=YE?KE.Buffer:void 0,HE=yd?yd.isBuffer:void 0,zE=HE||VE;rr.exports=zE});var $o=u((OF,Id)=>{"use strict";var JE=mt(),XE=on(),ZE=he(),eR="[object Object]",tR=Function.prototype,rR=Object.prototype,bd=tR.toString,aR=rR.hasOwnProperty,nR=bd.call(Object);function oR(e){if(!ZE(e)||JE(e)!=eR)return!1;var t=XE(e);if(t===null)return!0;var r=aR.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&bd.call(r)==nR}Id.exports=oR});var wd=u((PF,Sd)=>{"use strict";var sR=mt(),iR=an(),uR=he(),pR="[object Arguments]",cR="[object Array]",lR="[object Boolean]",dR="[object Date]",fR="[object Error]",mR="[object Function]",gR="[object Map]",hR="[object Number]",yR="[object Object]",AR="[object RegExp]",bR="[object Set]",IR="[object String]",SR="[object WeakMap]",wR="[object ArrayBuffer]",TR="[object DataView]",vR="[object Float32Array]",ER="[object Float64Array]",RR="[object Int8Array]",_R="[object Int16Array]",xR="[object Int32Array]",CR="[object Uint8Array]",LR="[object Uint8ClampedArray]",OR="[object Uint16Array]",PR="[object Uint32Array]",B={};B[vR]=B[ER]=B[RR]=B[_R]=B[xR]=B[CR]=B[LR]=B[OR]=B[PR]=!0;B[pR]=B[cR]=B[wR]=B[lR]=B[TR]=B[dR]=B[fR]=B[mR]=B[gR]=B[hR]=B[yR]=B[AR]=B[bR]=B[IR]=B[SR]=!1;function UR(e){return uR(e)&&iR(e.length)&&!!B[sR(e)]}Sd.exports=UR});var un=u((UF,Td)=>{"use strict";function qR(e){return function(t){return e(t)}}Td.exports=qR});var pn=u((pa,ar)=>{"use strict";var DR=To(),vd=typeof pa=="object"&&pa&&!pa.nodeType&&pa,ca=vd&&typeof ar=="object"&&ar&&!ar.nodeType&&ar,NR=ca&&ca.exports===vd,Ko=NR&&DR.process,BR=function(){try{var e=ca&&ca.require&&ca.require("util").types;return e||Ko&&Ko.binding&&Ko.binding("util")}catch{}}();ar.exports=BR});var cn=u((qF,_d)=>{"use strict";var MR=wd(),GR=un(),Ed=pn(),Rd=Ed&&Ed.isTypedArray,kR=Rd?GR(Rd):MR;_d.exports=kR});var Vo=u((DF,xd)=>{"use strict";function FR(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}xd.exports=FR});var Yo=u((NF,Cd)=>{"use strict";var QR=na(),jR=Ht(),WR=Object.prototype,$R=WR.hasOwnProperty;function KR(e,t,r){var a=e[t];(!($R.call(e,t)&&jR(a,r))||r===void 0&&!(t in e))&&QR(e,t,r)}Cd.exports=KR});var nr=u((BF,Ld)=>{"use strict";var VR=Yo(),YR=na();function HR(e,t,r,a){var n=!r;r||(r={});for(var o=-1,s=t.length;++o<s;){var i=t[o],p=a?a(r[i],e[i],i,r,e):void 0;p===void 0&&(p=e[i]),n?YR(r,i,p):VR(r,i,p)}return r}Ld.exports=HR});var Pd=u((MF,Od)=>{"use strict";function zR(e,t){for(var r=-1,a=Array(e);++r<e;)a[r]=t(r);return a}Od.exports=zR});var la=u((GF,Ud)=>{"use strict";var JR=9007199254740991,XR=/^(?:0|[1-9]\d*)$/;function ZR(e,t){var r=typeof e;return t=t??JR,!!t&&(r=="number"||r!="symbol"&&XR.test(e))&&e>-1&&e%1==0&&e<t}Ud.exports=ZR});var Ho=u((kF,qd)=>{"use strict";var e_=Pd(),t_=zr(),r_=re(),a_=ua(),n_=la(),o_=cn(),s_=Object.prototype,i_=s_.hasOwnProperty;function u_(e,t){var r=r_(e),a=!r&&t_(e),n=!r&&!a&&a_(e),o=!r&&!a&&!n&&o_(e),s=r||a||n||o,i=s?e_(e.length,String):[],p=i.length;for(var m in e)(t||i_.call(e,m))&&!(s&&(m=="length"||n&&(m=="offset"||m=="parent")||o&&(m=="buffer"||m=="byteLength"||m=="byteOffset")||n_(m,p)))&&i.push(m);return i}qd.exports=u_});var Nd=u((FF,Dd)=>{"use strict";function p_(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}Dd.exports=p_});var Md=u((QF,Bd)=>{"use strict";var c_=ve(),l_=sn(),d_=Nd(),f_=Object.prototype,m_=f_.hasOwnProperty;function g_(e){if(!c_(e))return d_(e);var t=l_(e),r=[];for(var a in e)a=="constructor"&&(t||!m_.call(e,a))||r.push(a);return r}Bd.exports=g_});var or=u((jF,Gd)=>{"use strict";var h_=Ho(),y_=Md(),A_=Xt();function b_(e){return A_(e)?h_(e,!0):y_(e)}Gd.exports=b_});var Fd=u((WF,kd)=>{"use strict";var I_=nr(),S_=or();function w_(e){return I_(e,S_(e))}kd.exports=w_});var Vd=u(($F,Kd)=>{"use strict";var Qd=Mo(),T_=ko(),v_=Qo(),E_=tr(),R_=Wo(),jd=zr(),Wd=re(),__=Bo(),x_=ua(),C_=Xr(),L_=ve(),O_=$o(),P_=cn(),$d=Vo(),U_=Fd();function q_(e,t,r,a,n,o,s){var i=$d(e,r),p=$d(t,r),m=s.get(p);if(m){Qd(e,r,m);return}var f=o?o(i,p,r+"",e,t,s):void 0,h=f===void 0;if(h){var g=Wd(p),S=!g&&x_(p),L=!g&&!S&&P_(p);f=p,g||S||L?Wd(i)?f=i:__(i)?f=E_(i):S?(h=!1,f=T_(p,!0)):L?(h=!1,f=v_(p,!0)):f=[]:O_(p)||jd(p)?(f=i,jd(i)?f=U_(i):(!L_(i)||C_(i))&&(f=R_(p))):h=!1}h&&(s.set(p,f),n(f,p,a,o,s),s.delete(p)),Qd(e,r,f)}Kd.exports=q_});var zd=u((KF,Hd)=>{"use strict";var D_=aa(),N_=Mo(),B_=Go(),M_=Vd(),G_=ve(),k_=or(),F_=Vo();function Yd(e,t,r,a,n){e!==t&&B_(t,function(o,s){if(n||(n=new D_),G_(o))M_(e,t,s,r,Yd,a,n);else{var i=a?a(F_(e,s),o,s+"",e,t,n):void 0;i===void 0&&(i=o),N_(e,s,i)}},k_)}Hd.exports=Yd});var Xd=u((VF,Jd)=>{"use strict";var Q_=Ht(),j_=Xt(),W_=la(),$_=ve();function K_(e,t,r){if(!$_(r))return!1;var a=typeof t;return(a=="number"?j_(r)&&W_(t,r.length):a=="string"&&t in r)?Q_(r[t],e):!1}Jd.exports=K_});var ef=u((YF,Zd)=>{"use strict";var V_=Lo(),Y_=Xd();function H_(e){return V_(function(t,r){var a=-1,n=r.length,o=n>1?r[n-1]:void 0,s=n>2?r[2]:void 0;for(o=e.length>3&&typeof o=="function"?(n--,o):void 0,s&&Y_(r[0],r[1],s)&&(o=n<3?void 0:o,n=1),t=Object(t);++a<n;){var i=r[a];i&&e(t,i,a,o)}return t})}Zd.exports=H_});var zo=u((HF,tf)=>{"use strict";var z_=zd(),J_=ef(),X_=J_(function(e,t,r){z_(e,t,r)});tf.exports=X_});var am=u(de=>{"use strict";de.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"};de.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"]};de.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};de.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};de.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};de.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]};de.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}};de.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}};de.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=de.aliasToReal,r={};for(var a in t){var n=t[a];e.call(r,n)?r[n].push(a):r[n]=[a]}return r}();de.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"};de.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};de.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 Ks=u((yj,nm)=>{"use strict";nm.exports={}});var um=u((Aj,im)=>{"use strict";var X=am(),OC=Ks(),om=Array.prototype.push;function PC(e,t){return t==2?function(r,a){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}function Vs(e,t){return t==2?function(r,a){return e(r,a)}:function(r){return e(r)}}function sm(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}function UC(e){return function(t){return e({},t)}}function qC(e,t){return function(){for(var r=arguments.length,a=r-1,n=Array(r);r--;)n[r]=arguments[r];var o=n[t],s=n.slice(0,t);return o&&om.apply(s,o),t!=a&&om.apply(s,n.slice(t+1)),e.apply(this,s)}}function Ys(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 Hs(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 s={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},i=n?r:OC,p="curry"in a&&a.curry,m="fixed"in a&&a.fixed,f="rearg"in a&&a.rearg,h=n?r.runInContext():void 0,g=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},S=g.ary,L=g.assign,_=g.clone,R=g.curry,E=g.forEach,U=g.isArray,Ce=g.isError,Ie=g.isFunction,pt=g.isWeakMap,Ft=g.keys,Sr=g.rearg,wr=g.toInteger,mI=g.toPath,xu=Ft(X.aryMethod),gI={castArray:function(I){return function(){var y=arguments[0];return U(y)?I(sm(y)):I.apply(void 0,arguments)}},iteratee:function(I){return function(){var y=arguments[0],b=arguments[1],v=I(y,b),C=v.length;return s.cap&&typeof b=="number"?(b=b>2?b-2:1,C&&C<=b?v:Vs(v,b)):v}},mixin:function(I){return function(y){var b=this;if(!Ie(b))return I(b,Object(y));var v=[];return E(Ft(y),function(C){Ie(y[C])&&v.push([C,b.prototype[C]])}),I(b,Object(y)),E(v,function(C){var ae=C[1];Ie(ae)?b.prototype[C[0]]=ae:delete b.prototype[C[0]]}),b}},nthArg:function(I){return function(y){var b=y<0?1:wr(y)+1;return R(I(y),b)}},rearg:function(I){return function(y,b){var v=b?b.length:0;return R(I(y,b),v)}},runInContext:function(I){return function(y){return Hs(e,I(y),a)}}};function hI(I,y){if(s.cap){var b=X.iterateeRearg[I];if(b)return SI(y,b);var v=!n&&X.iterateeAry[I];if(v)return II(y,v)}return y}function yI(I,y,b){return p||s.curry&&b>1?R(y,b):y}function Cu(I,y,b){if(s.fixed&&(m||!X.skipFixed[I])){var v=X.methodSpread[I],C=v&&v.start;return C===void 0?S(y,b):qC(y,C)}return y}function Lu(I,y,b){return s.rearg&&b>1&&(f||!X.skipRearg[I])?Sr(y,X.methodRearg[I]||X.aryRearg[b]):y}function AI(I,y){y=mI(y);for(var b=-1,v=y.length,C=v-1,ae=_(Object(I)),Me=ae;Me!=null&&++b<v;){var Se=y[b],Ge=Me[Se];Ge!=null&&!(Ie(Ge)||Ce(Ge)||pt(Ge))&&(Me[Se]=_(b==C?Ge:Object(Ge))),Me=Me[Se]}return ae}function bI(I){return me.runInContext.convert(I)(void 0)}function Ou(I,y){var b=X.aliasToReal[I]||I,v=X.remap[b]||b,C=a;return function(ae){var Me=n?h:g,Se=n?h[v]:y,Ge=L(L({},C),ae);return Hs(Me,b,Se,Ge)}}function II(I,y){return Pu(I,function(b){return typeof b=="function"?Vs(b,y):b})}function SI(I,y){return Pu(I,function(b){var v=y.length;return PC(Sr(Vs(b,v),y),v)})}function Pu(I,y){return function(){var b=arguments.length;if(!b)return I();for(var v=Array(b);b--;)v[b]=arguments[b];var C=s.rearg?0:b-1;return v[C]=y(v[C]),I.apply(void 0,v)}}function Uu(I,y,b){var v,C=X.aliasToReal[I]||I,ae=y,Me=gI[C];return Me?ae=Me(y):s.immutable&&(X.mutate.array[C]?ae=Ys(y,sm):X.mutate.object[C]?ae=Ys(y,UC(y)):X.mutate.set[C]&&(ae=Ys(y,AI))),E(xu,function(Se){return E(X.aryMethod[Se],function(Ge){if(C==Ge){var qu=X.methodSpread[C],wI=qu&&qu.afterRearg;return v=wI?Cu(C,Lu(C,ae,Se),Se):Lu(C,Cu(C,ae,Se),Se),v=hI(C,v),v=yI(C,v,Se),!1}}),!v}),v||(v=ae),v==y&&(v=p?R(v,1):function(){return y.apply(this,arguments)}),v.convert=Ou(C,y),v.placeholder=y.placeholder=b,v}if(!o)return Uu(t,r,i);var me=r,Tr=[];return E(xu,function(I){E(X.aryMethod[I],function(y){var b=me[X.remap[y]||y];b&&Tr.push([y,Uu(y,b,me)])})}),E(Ft(me),function(I){var y=me[I];if(typeof y=="function"){for(var b=Tr.length;b--;)if(Tr[b][0]==I)return;y.convert=Ou(I,y),Tr.push([I,y])}}),E(Tr,function(I){me[I[0]]=I[1]}),me.convert=bI,me.placeholder=me,E(Ft(me),function(I){E(X.realToAlias[I]||[],function(y){me[y]=me[I]})}),me}im.exports=Hs});var zs=u((bj,pm)=>{"use strict";var DC=gt(),NC=oe(),BC=DC(NC,"WeakMap");pm.exports=BC});var Js=u((Ij,lm)=>{"use strict";var cm=zs(),MC=cm&&new cm;lm.exports=MC});var Xs=u((Sj,fm)=>{"use strict";var GC=Jr(),dm=Js(),kC=dm?function(e,t){return dm.set(e,t),e}:GC;fm.exports=kC});var wa=u((wj,mm)=>{"use strict";var FC=sa(),QC=ve();function jC(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=FC(e.prototype),a=e.apply(r,t);return QC(a)?a:r}}mm.exports=jC});var hm=u((Tj,gm)=>{"use strict";var WC=wa(),$C=oe(),KC=1;function VC(e,t,r){var a=t&KC,n=WC(e);function o(){var s=this&&this!==$C&&this instanceof o?n:e;return s.apply(a?r:this,arguments)}return o}gm.exports=VC});var Zs=u((vj,ym)=>{"use strict";var YC=Math.max;function HC(e,t,r,a){for(var n=-1,o=e.length,s=r.length,i=-1,p=t.length,m=YC(o-s,0),f=Array(p+m),h=!a;++i<p;)f[i]=t[i];for(;++n<s;)(h||n<o)&&(f[r[n]]=e[n]);for(;m--;)f[i++]=e[n++];return f}ym.exports=HC});var ei=u((Ej,Am)=>{"use strict";var zC=Math.max;function JC(e,t,r,a){for(var n=-1,o=e.length,s=-1,i=r.length,p=-1,m=t.length,f=zC(o-i,0),h=Array(f+m),g=!a;++n<f;)h[n]=e[n];for(var S=n;++p<m;)h[S+p]=t[p];for(;++s<i;)(g||n<o)&&(h[S+r[s]]=e[n++]);return h}Am.exports=JC});var Im=u((Rj,bm)=>{"use strict";function XC(e,t){for(var r=e.length,a=0;r--;)e[r]===t&&++a;return a}bm.exports=XC});var Ln=u((_j,Sm)=>{"use strict";function ZC(){}Sm.exports=ZC});var Pn=u((xj,wm)=>{"use strict";var eL=sa(),tL=Ln(),rL=4294967295;function On(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=rL,this.__views__=[]}On.prototype=eL(tL.prototype);On.prototype.constructor=On;wm.exports=On});var ti=u((Cj,vm)=>{"use strict";var Tm=Js(),aL=Do(),nL=Tm?function(e){return Tm.get(e)}:aL;vm.exports=nL});var Rm=u((Lj,Em)=>{"use strict";var oL={};Em.exports=oL});var Cm=u((Oj,xm)=>{"use strict";var _m=Rm(),sL=Object.prototype,iL=sL.hasOwnProperty;function uL(e){for(var t=e.name+"",r=_m[t],a=iL.call(_m,t)?r.length:0;a--;){var n=r[a],o=n.func;if(o==null||o==e)return n.name}return t}xm.exports=uL});var ri=u((Pj,Lm)=>{"use strict";var pL=sa(),cL=Ln();function Un(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}Un.prototype=pL(cL.prototype);Un.prototype.constructor=Un;Lm.exports=Un});var Pm=u((Uj,Om)=>{"use strict";var lL=Pn(),dL=ri(),fL=tr();function mL(e){if(e instanceof lL)return e.clone();var t=new dL(e.__wrapped__,e.__chain__);return t.__actions__=fL(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}Om.exports=mL});var Dm=u((qj,qm)=>{"use strict";var gL=Pn(),Um=ri(),hL=Ln(),yL=re(),AL=he(),bL=Pm(),IL=Object.prototype,SL=IL.hasOwnProperty;function qn(e){if(AL(e)&&!yL(e)&&!(e instanceof gL)){if(e instanceof Um)return e;if(SL.call(e,"__wrapped__"))return bL(e)}return new Um(e)}qn.prototype=hL.prototype;qn.prototype.constructor=qn;qm.exports=qn});var Bm=u((Dj,Nm)=>{"use strict";var wL=Pn(),TL=ti(),vL=Cm(),EL=Dm();function RL(e){var t=vL(e),r=EL[t];if(typeof r!="function"||!(t in wL.prototype))return!1;if(e===r)return!0;var a=TL(r);return!!a&&e===a[0]}Nm.exports=RL});var ai=u((Nj,Mm)=>{"use strict";var _L=Xs(),xL=Co(),CL=xL(_L);Mm.exports=CL});var km=u((Bj,Gm)=>{"use strict";var LL=/\{\n\/\* \[wrapped with (.+)\] \*/,OL=/,? & /;function PL(e){var t=e.match(LL);return t?t[1].split(OL):[]}Gm.exports=PL});var Qm=u((Mj,Fm)=>{"use strict";var UL=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function qL(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(UL,`{
1
+ "use strict";var vI=Object.create;var qa=Object.defineProperty;var EI=Object.getOwnPropertyDescriptor;var RI=Object.getOwnPropertyNames;var _I=Object.getPrototypeOf,xI=Object.prototype.hasOwnProperty;var u=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),w=(e,t)=>{for(var r in t)qa(e,r,{get:t[r],enumerable:!0})},Nu=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of RI(t))!xI.call(e,n)&&n!==r&&qa(e,n,{get:()=>t[n],enumerable:!(a=EI(t,n))||a.enumerable});return e};var P=(e,t,r)=>(r=e!=null?vI(_I(e)):{},Nu(t||!e||!e.__esModule?qa(r,"default",{value:e,enumerable:!0}):r,e)),CI=e=>Nu(qa({},"__esModule",{value:!0}),e);var za=u((Yk,Sp)=>{"use strict";function RS(e,t){for(var r=-1,a=t.length,n=e.length;++r<a;)e[n+r]=t[r];return e}Sp.exports=RS});var vo=u((Hk,wp)=>{"use strict";var _S=typeof global=="object"&&global&&global.Object===Object&&global;wp.exports=_S});var oe=u((zk,Tp)=>{"use strict";var xS=vo(),CS=typeof self=="object"&&self&&self.Object===Object&&self,OS=xS||CS||Function("return this")();Tp.exports=OS});var xt=u((Jk,vp)=>{"use strict";var LS=oe(),PS=LS.Symbol;vp.exports=PS});var xp=u((Xk,_p)=>{"use strict";var Ep=xt(),Rp=Object.prototype,US=Rp.hasOwnProperty,qS=Rp.toString,Hr=Ep?Ep.toStringTag:void 0;function DS(e){var t=US.call(e,Hr),r=e[Hr];try{e[Hr]=void 0;var a=!0}catch{}var n=qS.call(e);return a&&(t?e[Hr]=r:delete e[Hr]),n}_p.exports=DS});var Op=u((Zk,Cp)=>{"use strict";var NS=Object.prototype,BS=NS.toString;function MS(e){return BS.call(e)}Cp.exports=MS});var mt=u((e0,Up)=>{"use strict";var Lp=xt(),GS=xp(),kS=Op(),FS="[object Null]",QS="[object Undefined]",Pp=Lp?Lp.toStringTag:void 0;function jS(e){return e==null?e===void 0?QS:FS:Pp&&Pp in Object(e)?GS(e):kS(e)}Up.exports=jS});var he=u((t0,qp)=>{"use strict";function WS(e){return e!=null&&typeof e=="object"}qp.exports=WS});var Np=u((r0,Dp)=>{"use strict";var $S=mt(),KS=he(),VS="[object Arguments]";function YS(e){return KS(e)&&$S(e)==VS}Dp.exports=YS});var zr=u((a0,Gp)=>{"use strict";var Bp=Np(),HS=he(),Mp=Object.prototype,zS=Mp.hasOwnProperty,JS=Mp.propertyIsEnumerable,XS=Bp(function(){return arguments}())?Bp:function(e){return HS(e)&&zS.call(e,"callee")&&!JS.call(e,"callee")};Gp.exports=XS});var re=u((n0,kp)=>{"use strict";var ZS=Array.isArray;kp.exports=ZS});var Wp=u((o0,jp)=>{"use strict";var Fp=xt(),ew=zr(),tw=re(),Qp=Fp?Fp.isConcatSpreadable:void 0;function rw(e){return tw(e)||ew(e)||!!(Qp&&e&&e[Qp])}jp.exports=rw});var Eo=u((s0,Kp)=>{"use strict";var aw=za(),nw=Wp();function $p(e,t,r,a,n){var o=-1,s=e.length;for(r||(r=nw),n||(n=[]);++o<s;){var i=e[o];t>0&&r(i)?t>1?$p(i,t-1,r,a,n):aw(n,i):a||(n[n.length]=i)}return n}Kp.exports=$p});var Jr=u((i0,Vp)=>{"use strict";function ow(e){return e}Vp.exports=ow});var Ja=u((u0,Yp)=>{"use strict";function sw(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)}Yp.exports=sw});var Ro=u((p0,zp)=>{"use strict";var iw=Ja(),Hp=Math.max;function uw(e,t,r){return t=Hp(t===void 0?e.length-1:t,0),function(){for(var a=arguments,n=-1,o=Hp(a.length-t,0),s=Array(o);++n<o;)s[n]=a[t+n];n=-1;for(var i=Array(t+1);++n<t;)i[n]=a[n];return i[t]=r(s),iw(e,this,i)}}zp.exports=uw});var Xp=u((c0,Jp)=>{"use strict";function pw(e){return function(){return e}}Jp.exports=pw});var Ee=u((l0,Zp)=>{"use strict";function cw(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}Zp.exports=cw});var Xr=u((d0,ec)=>{"use strict";var lw=mt(),dw=Ee(),fw="[object AsyncFunction]",mw="[object Function]",gw="[object GeneratorFunction]",hw="[object Proxy]";function yw(e){if(!dw(e))return!1;var t=lw(e);return t==mw||t==gw||t==fw||t==hw}ec.exports=yw});var rc=u((f0,tc)=>{"use strict";var Aw=oe(),bw=Aw["__core-js_shared__"];tc.exports=bw});var oc=u((m0,nc)=>{"use strict";var _o=rc(),ac=function(){var e=/[^.]+$/.exec(_o&&_o.keys&&_o.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function Iw(e){return!!ac&&ac in e}nc.exports=Iw});var xo=u((g0,sc)=>{"use strict";var Sw=Function.prototype,ww=Sw.toString;function Tw(e){if(e!=null){try{return ww.call(e)}catch{}try{return e+""}catch{}}return""}sc.exports=Tw});var uc=u((h0,ic)=>{"use strict";var vw=Xr(),Ew=oc(),Rw=Ee(),_w=xo(),xw=/[\\^$.*+?()[\]{}|]/g,Cw=/^\[object .+?Constructor\]$/,Ow=Function.prototype,Lw=Object.prototype,Pw=Ow.toString,Uw=Lw.hasOwnProperty,qw=RegExp("^"+Pw.call(Uw).replace(xw,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Dw(e){if(!Rw(e)||Ew(e))return!1;var t=vw(e)?qw:Cw;return t.test(_w(e))}ic.exports=Dw});var cc=u((y0,pc)=>{"use strict";function Nw(e,t){return e?.[t]}pc.exports=Nw});var gt=u((A0,lc)=>{"use strict";var Bw=uc(),Mw=cc();function Gw(e,t){var r=Mw(e,t);return Bw(r)?r:void 0}lc.exports=Gw});var Co=u((b0,dc)=>{"use strict";var kw=gt(),Fw=function(){try{var e=kw(Object,"defineProperty");return e({},"",{}),e}catch{}}();dc.exports=Fw});var gc=u((I0,mc)=>{"use strict";var Qw=Xp(),fc=Co(),jw=Jr(),Ww=fc?function(e,t){return fc(e,"toString",{configurable:!0,enumerable:!1,value:Qw(t),writable:!0})}:jw;mc.exports=Ww});var Oo=u((S0,hc)=>{"use strict";var $w=800,Kw=16,Vw=Date.now;function Yw(e){var t=0,r=0;return function(){var a=Vw(),n=Kw-(a-r);if(r=a,n>0){if(++t>=$w)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}hc.exports=Yw});var Xa=u((w0,yc)=>{"use strict";var Hw=gc(),zw=Oo(),Jw=zw(Hw);yc.exports=Jw});var Lo=u((T0,Ac)=>{"use strict";var Xw=Jr(),Zw=Ro(),eT=Xa();function tT(e,t){return eT(Zw(e,t,Xw),e+"")}Ac.exports=tT});var Zr=u((v0,bc)=>{"use strict";var rT=gt(),aT=rT(Object,"create");bc.exports=aT});var wc=u((E0,Sc)=>{"use strict";var Ic=Zr();function nT(){this.__data__=Ic?Ic(null):{},this.size=0}Sc.exports=nT});var vc=u((R0,Tc)=>{"use strict";function oT(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}Tc.exports=oT});var Rc=u((_0,Ec)=>{"use strict";var sT=Zr(),iT="__lodash_hash_undefined__",uT=Object.prototype,pT=uT.hasOwnProperty;function cT(e){var t=this.__data__;if(sT){var r=t[e];return r===iT?void 0:r}return pT.call(t,e)?t[e]:void 0}Ec.exports=cT});var xc=u((x0,_c)=>{"use strict";var lT=Zr(),dT=Object.prototype,fT=dT.hasOwnProperty;function mT(e){var t=this.__data__;return lT?t[e]!==void 0:fT.call(t,e)}_c.exports=mT});var Oc=u((C0,Cc)=>{"use strict";var gT=Zr(),hT="__lodash_hash_undefined__";function yT(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=gT&&t===void 0?hT:t,this}Cc.exports=yT});var Pc=u((O0,Lc)=>{"use strict";var AT=wc(),bT=vc(),IT=Rc(),ST=xc(),wT=Oc();function Yt(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])}}Yt.prototype.clear=AT;Yt.prototype.delete=bT;Yt.prototype.get=IT;Yt.prototype.has=ST;Yt.prototype.set=wT;Lc.exports=Yt});var qc=u((L0,Uc)=>{"use strict";function TT(){this.__data__=[],this.size=0}Uc.exports=TT});var Ht=u((P0,Dc)=>{"use strict";function vT(e,t){return e===t||e!==e&&t!==t}Dc.exports=vT});var ea=u((U0,Nc)=>{"use strict";var ET=Ht();function RT(e,t){for(var r=e.length;r--;)if(ET(e[r][0],t))return r;return-1}Nc.exports=RT});var Mc=u((q0,Bc)=>{"use strict";var _T=ea(),xT=Array.prototype,CT=xT.splice;function OT(e){var t=this.__data__,r=_T(t,e);if(r<0)return!1;var a=t.length-1;return r==a?t.pop():CT.call(t,r,1),--this.size,!0}Bc.exports=OT});var kc=u((D0,Gc)=>{"use strict";var LT=ea();function PT(e){var t=this.__data__,r=LT(t,e);return r<0?void 0:t[r][1]}Gc.exports=PT});var Qc=u((N0,Fc)=>{"use strict";var UT=ea();function qT(e){return UT(this.__data__,e)>-1}Fc.exports=qT});var Wc=u((B0,jc)=>{"use strict";var DT=ea();function NT(e,t){var r=this.__data__,a=DT(r,e);return a<0?(++this.size,r.push([e,t])):r[a][1]=t,this}jc.exports=NT});var ta=u((M0,$c)=>{"use strict";var BT=qc(),MT=Mc(),GT=kc(),kT=Qc(),FT=Wc();function zt(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])}}zt.prototype.clear=BT;zt.prototype.delete=MT;zt.prototype.get=GT;zt.prototype.has=kT;zt.prototype.set=FT;$c.exports=zt});var Za=u((G0,Kc)=>{"use strict";var QT=gt(),jT=oe(),WT=QT(jT,"Map");Kc.exports=WT});var Hc=u((k0,Yc)=>{"use strict";var Vc=Pc(),$T=ta(),KT=Za();function VT(){this.size=0,this.__data__={hash:new Vc,map:new(KT||$T),string:new Vc}}Yc.exports=VT});var Jc=u((F0,zc)=>{"use strict";function YT(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}zc.exports=YT});var ra=u((Q0,Xc)=>{"use strict";var HT=Jc();function zT(e,t){var r=e.__data__;return HT(t)?r[typeof t=="string"?"string":"hash"]:r.map}Xc.exports=zT});var el=u((j0,Zc)=>{"use strict";var JT=ra();function XT(e){var t=JT(this,e).delete(e);return this.size-=t?1:0,t}Zc.exports=XT});var rl=u((W0,tl)=>{"use strict";var ZT=ra();function ev(e){return ZT(this,e).get(e)}tl.exports=ev});var nl=u(($0,al)=>{"use strict";var tv=ra();function rv(e){return tv(this,e).has(e)}al.exports=rv});var sl=u((K0,ol)=>{"use strict";var av=ra();function nv(e,t){var r=av(this,e),a=r.size;return r.set(e,t),this.size+=r.size==a?0:1,this}ol.exports=nv});var en=u((V0,il)=>{"use strict";var ov=Hc(),sv=el(),iv=rl(),uv=nl(),pv=sl();function Jt(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])}}Jt.prototype.clear=ov;Jt.prototype.delete=sv;Jt.prototype.get=iv;Jt.prototype.has=uv;Jt.prototype.set=pv;il.exports=Jt});var pl=u((Y0,ul)=>{"use strict";var cv="__lodash_hash_undefined__";function lv(e){return this.__data__.set(e,cv),this}ul.exports=lv});var ll=u((H0,cl)=>{"use strict";function dv(e){return this.__data__.has(e)}cl.exports=dv});var Po=u((z0,dl)=>{"use strict";var fv=en(),mv=pl(),gv=ll();function tn(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new fv;++t<r;)this.add(e[t])}tn.prototype.add=tn.prototype.push=mv;tn.prototype.has=gv;dl.exports=tn});var ml=u((J0,fl)=>{"use strict";function hv(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}fl.exports=hv});var hl=u((X0,gl)=>{"use strict";function yv(e){return e!==e}gl.exports=yv});var Al=u((Z0,yl)=>{"use strict";function Av(e,t,r){for(var a=r-1,n=e.length;++a<n;)if(e[a]===t)return a;return-1}yl.exports=Av});var Il=u((eF,bl)=>{"use strict";var bv=ml(),Iv=hl(),Sv=Al();function wv(e,t,r){return t===t?Sv(e,t,r):bv(e,Iv,r)}bl.exports=wv});var Uo=u((tF,Sl)=>{"use strict";var Tv=Il();function vv(e,t){var r=e==null?0:e.length;return!!r&&Tv(e,t,0)>-1}Sl.exports=vv});var Tl=u((rF,wl)=>{"use strict";function Ev(e,t,r){for(var a=-1,n=e==null?0:e.length;++a<n;)if(r(t,e[a]))return!0;return!1}wl.exports=Ev});var qo=u((aF,vl)=>{"use strict";function Rv(e,t){return e.has(t)}vl.exports=Rv});var Do=u((nF,El)=>{"use strict";var _v=gt(),xv=oe(),Cv=_v(xv,"Set");El.exports=Cv});var No=u((oF,Rl)=>{"use strict";function Ov(){}Rl.exports=Ov});var rn=u((sF,_l)=>{"use strict";function Lv(e){var t=-1,r=Array(e.size);return e.forEach(function(a){r[++t]=a}),r}_l.exports=Lv});var Cl=u((iF,xl)=>{"use strict";var Bo=Do(),Pv=No(),Uv=rn(),qv=1/0,Dv=Bo&&1/Uv(new Bo([,-0]))[1]==qv?function(e){return new Bo(e)}:Pv;xl.exports=Dv});var Ll=u((uF,Ol)=>{"use strict";var Nv=Po(),Bv=Uo(),Mv=Tl(),Gv=qo(),kv=Cl(),Fv=rn(),Qv=200;function jv(e,t,r){var a=-1,n=Bv,o=e.length,s=!0,i=[],p=i;if(r)s=!1,n=Mv;else if(o>=Qv){var m=t?null:kv(e);if(m)return Fv(m);s=!1,n=Gv,p=new Nv}else p=t?[]:i;e:for(;++a<o;){var f=e[a],h=t?t(f):f;if(f=r||f!==0?f:0,s&&h===h){for(var g=p.length;g--;)if(p[g]===h)continue e;t&&p.push(h),i.push(f)}else n(p,h,r)||(p!==i&&p.push(h),i.push(f))}return i}Ol.exports=jv});var an=u((pF,Pl)=>{"use strict";var Wv=9007199254740991;function $v(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=Wv}Pl.exports=$v});var Xt=u((cF,Ul)=>{"use strict";var Kv=Xr(),Vv=an();function Yv(e){return e!=null&&Vv(e.length)&&!Kv(e)}Ul.exports=Yv});var Mo=u((lF,ql)=>{"use strict";var Hv=Xt(),zv=he();function Jv(e){return zv(e)&&Hv(e)}ql.exports=Jv});var Nl=u((dF,Dl)=>{"use strict";var Xv=Eo(),Zv=Lo(),eE=Ll(),tE=Mo(),rE=Zv(function(e){return eE(Xv(e,1,tE,!0))});Dl.exports=rE});var Ml=u((fF,Bl)=>{"use strict";var aE=ta();function nE(){this.__data__=new aE,this.size=0}Bl.exports=nE});var kl=u((mF,Gl)=>{"use strict";function oE(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}Gl.exports=oE});var Ql=u((gF,Fl)=>{"use strict";function sE(e){return this.__data__.get(e)}Fl.exports=sE});var Wl=u((hF,jl)=>{"use strict";function iE(e){return this.__data__.has(e)}jl.exports=iE});var Kl=u((yF,$l)=>{"use strict";var uE=ta(),pE=Za(),cE=en(),lE=200;function dE(e,t){var r=this.__data__;if(r instanceof uE){var a=r.__data__;if(!pE||a.length<lE-1)return a.push([e,t]),this.size=++r.size,this;r=this.__data__=new cE(a)}return r.set(e,t),this.size=r.size,this}$l.exports=dE});var aa=u((AF,Vl)=>{"use strict";var fE=ta(),mE=Ml(),gE=kl(),hE=Ql(),yE=Wl(),AE=Kl();function Zt(e){var t=this.__data__=new fE(e);this.size=t.size}Zt.prototype.clear=mE;Zt.prototype.delete=gE;Zt.prototype.get=hE;Zt.prototype.has=yE;Zt.prototype.set=AE;Vl.exports=Zt});var na=u((bF,Hl)=>{"use strict";var Yl=Co();function bE(e,t,r){t=="__proto__"&&Yl?Yl(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}Hl.exports=bE});var Go=u((IF,zl)=>{"use strict";var IE=na(),SE=Ht();function wE(e,t,r){(r!==void 0&&!SE(e[t],r)||r===void 0&&!(t in e))&&IE(e,t,r)}zl.exports=wE});var Xl=u((SF,Jl)=>{"use strict";function TE(e){return function(t,r,a){for(var n=-1,o=Object(t),s=a(t),i=s.length;i--;){var p=s[e?i:++n];if(r(o[p],p,o)===!1)break}return t}}Jl.exports=TE});var ko=u((wF,Zl)=>{"use strict";var vE=Xl(),EE=vE();Zl.exports=EE});var Fo=u((oa,er)=>{"use strict";var RE=oe(),ad=typeof oa=="object"&&oa&&!oa.nodeType&&oa,ed=ad&&typeof er=="object"&&er&&!er.nodeType&&er,_E=ed&&ed.exports===ad,td=_E?RE.Buffer:void 0,rd=td?td.allocUnsafe:void 0;function xE(e,t){if(t)return e.slice();var r=e.length,a=rd?rd(r):new e.constructor(r);return e.copy(a),a}er.exports=xE});var Qo=u((TF,nd)=>{"use strict";var CE=oe(),OE=CE.Uint8Array;nd.exports=OE});var nn=u((vF,sd)=>{"use strict";var od=Qo();function LE(e){var t=new e.constructor(e.byteLength);return new od(t).set(new od(e)),t}sd.exports=LE});var jo=u((EF,id)=>{"use strict";var PE=nn();function UE(e,t){var r=t?PE(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}id.exports=UE});var tr=u((RF,ud)=>{"use strict";function qE(e,t){var r=-1,a=e.length;for(t||(t=Array(a));++r<a;)t[r]=e[r];return t}ud.exports=qE});var sa=u((_F,cd)=>{"use strict";var DE=Ee(),pd=Object.create,NE=function(){function e(){}return function(t){if(!DE(t))return{};if(pd)return pd(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();cd.exports=NE});var Wo=u((xF,ld)=>{"use strict";function BE(e,t){return function(r){return e(t(r))}}ld.exports=BE});var on=u((CF,dd)=>{"use strict";var ME=Wo(),GE=ME(Object.getPrototypeOf,Object);dd.exports=GE});var sn=u((OF,fd)=>{"use strict";var kE=Object.prototype;function FE(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||kE;return e===r}fd.exports=FE});var $o=u((LF,md)=>{"use strict";var QE=sa(),jE=on(),WE=sn();function $E(e){return typeof e.constructor=="function"&&!WE(e)?QE(jE(e)):{}}md.exports=$E});var hd=u((PF,gd)=>{"use strict";function KE(){return!1}gd.exports=KE});var ua=u((ia,rr)=>{"use strict";var VE=oe(),YE=hd(),bd=typeof ia=="object"&&ia&&!ia.nodeType&&ia,yd=bd&&typeof rr=="object"&&rr&&!rr.nodeType&&rr,HE=yd&&yd.exports===bd,Ad=HE?VE.Buffer:void 0,zE=Ad?Ad.isBuffer:void 0,JE=zE||YE;rr.exports=JE});var Ko=u((UF,Sd)=>{"use strict";var XE=mt(),ZE=on(),eR=he(),tR="[object Object]",rR=Function.prototype,aR=Object.prototype,Id=rR.toString,nR=aR.hasOwnProperty,oR=Id.call(Object);function sR(e){if(!eR(e)||XE(e)!=tR)return!1;var t=ZE(e);if(t===null)return!0;var r=nR.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Id.call(r)==oR}Sd.exports=sR});var Td=u((qF,wd)=>{"use strict";var iR=mt(),uR=an(),pR=he(),cR="[object Arguments]",lR="[object Array]",dR="[object Boolean]",fR="[object Date]",mR="[object Error]",gR="[object Function]",hR="[object Map]",yR="[object Number]",AR="[object Object]",bR="[object RegExp]",IR="[object Set]",SR="[object String]",wR="[object WeakMap]",TR="[object ArrayBuffer]",vR="[object DataView]",ER="[object Float32Array]",RR="[object Float64Array]",_R="[object Int8Array]",xR="[object Int16Array]",CR="[object Int32Array]",OR="[object Uint8Array]",LR="[object Uint8ClampedArray]",PR="[object Uint16Array]",UR="[object Uint32Array]",B={};B[ER]=B[RR]=B[_R]=B[xR]=B[CR]=B[OR]=B[LR]=B[PR]=B[UR]=!0;B[cR]=B[lR]=B[TR]=B[dR]=B[vR]=B[fR]=B[mR]=B[gR]=B[hR]=B[yR]=B[AR]=B[bR]=B[IR]=B[SR]=B[wR]=!1;function qR(e){return pR(e)&&uR(e.length)&&!!B[iR(e)]}wd.exports=qR});var un=u((DF,vd)=>{"use strict";function DR(e){return function(t){return e(t)}}vd.exports=DR});var pn=u((pa,ar)=>{"use strict";var NR=vo(),Ed=typeof pa=="object"&&pa&&!pa.nodeType&&pa,ca=Ed&&typeof ar=="object"&&ar&&!ar.nodeType&&ar,BR=ca&&ca.exports===Ed,Vo=BR&&NR.process,MR=function(){try{var e=ca&&ca.require&&ca.require("util").types;return e||Vo&&Vo.binding&&Vo.binding("util")}catch{}}();ar.exports=MR});var cn=u((NF,xd)=>{"use strict";var GR=Td(),kR=un(),Rd=pn(),_d=Rd&&Rd.isTypedArray,FR=_d?kR(_d):GR;xd.exports=FR});var Yo=u((BF,Cd)=>{"use strict";function QR(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}Cd.exports=QR});var Ho=u((MF,Od)=>{"use strict";var jR=na(),WR=Ht(),$R=Object.prototype,KR=$R.hasOwnProperty;function VR(e,t,r){var a=e[t];(!(KR.call(e,t)&&WR(a,r))||r===void 0&&!(t in e))&&jR(e,t,r)}Od.exports=VR});var nr=u((GF,Ld)=>{"use strict";var YR=Ho(),HR=na();function zR(e,t,r,a){var n=!r;r||(r={});for(var o=-1,s=t.length;++o<s;){var i=t[o],p=a?a(r[i],e[i],i,r,e):void 0;p===void 0&&(p=e[i]),n?HR(r,i,p):YR(r,i,p)}return r}Ld.exports=zR});var Ud=u((kF,Pd)=>{"use strict";function JR(e,t){for(var r=-1,a=Array(e);++r<e;)a[r]=t(r);return a}Pd.exports=JR});var la=u((FF,qd)=>{"use strict";var XR=9007199254740991,ZR=/^(?:0|[1-9]\d*)$/;function e_(e,t){var r=typeof e;return t=t??XR,!!t&&(r=="number"||r!="symbol"&&ZR.test(e))&&e>-1&&e%1==0&&e<t}qd.exports=e_});var zo=u((QF,Dd)=>{"use strict";var t_=Ud(),r_=zr(),a_=re(),n_=ua(),o_=la(),s_=cn(),i_=Object.prototype,u_=i_.hasOwnProperty;function p_(e,t){var r=a_(e),a=!r&&r_(e),n=!r&&!a&&n_(e),o=!r&&!a&&!n&&s_(e),s=r||a||n||o,i=s?t_(e.length,String):[],p=i.length;for(var m in e)(t||u_.call(e,m))&&!(s&&(m=="length"||n&&(m=="offset"||m=="parent")||o&&(m=="buffer"||m=="byteLength"||m=="byteOffset")||o_(m,p)))&&i.push(m);return i}Dd.exports=p_});var Bd=u((jF,Nd)=>{"use strict";function c_(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}Nd.exports=c_});var Gd=u((WF,Md)=>{"use strict";var l_=Ee(),d_=sn(),f_=Bd(),m_=Object.prototype,g_=m_.hasOwnProperty;function h_(e){if(!l_(e))return f_(e);var t=d_(e),r=[];for(var a in e)a=="constructor"&&(t||!g_.call(e,a))||r.push(a);return r}Md.exports=h_});var or=u(($F,kd)=>{"use strict";var y_=zo(),A_=Gd(),b_=Xt();function I_(e){return b_(e)?y_(e,!0):A_(e)}kd.exports=I_});var Qd=u((KF,Fd)=>{"use strict";var S_=nr(),w_=or();function T_(e){return S_(e,w_(e))}Fd.exports=T_});var Yd=u((VF,Vd)=>{"use strict";var jd=Go(),v_=Fo(),E_=jo(),R_=tr(),__=$o(),Wd=zr(),$d=re(),x_=Mo(),C_=ua(),O_=Xr(),L_=Ee(),P_=Ko(),U_=cn(),Kd=Yo(),q_=Qd();function D_(e,t,r,a,n,o,s){var i=Kd(e,r),p=Kd(t,r),m=s.get(p);if(m){jd(e,r,m);return}var f=o?o(i,p,r+"",e,t,s):void 0,h=f===void 0;if(h){var g=$d(p),S=!g&&C_(p),O=!g&&!S&&U_(p);f=p,g||S||O?$d(i)?f=i:x_(i)?f=R_(i):S?(h=!1,f=v_(p,!0)):O?(h=!1,f=E_(p,!0)):f=[]:P_(p)||Wd(p)?(f=i,Wd(i)?f=q_(i):(!L_(i)||O_(i))&&(f=__(p))):h=!1}h&&(s.set(p,f),n(f,p,a,o,s),s.delete(p)),jd(e,r,f)}Vd.exports=D_});var Jd=u((YF,zd)=>{"use strict";var N_=aa(),B_=Go(),M_=ko(),G_=Yd(),k_=Ee(),F_=or(),Q_=Yo();function Hd(e,t,r,a,n){e!==t&&M_(t,function(o,s){if(n||(n=new N_),k_(o))G_(e,t,s,r,Hd,a,n);else{var i=a?a(Q_(e,s),o,s+"",e,t,n):void 0;i===void 0&&(i=o),B_(e,s,i)}},F_)}zd.exports=Hd});var Zd=u((HF,Xd)=>{"use strict";var j_=Ht(),W_=Xt(),$_=la(),K_=Ee();function V_(e,t,r){if(!K_(r))return!1;var a=typeof t;return(a=="number"?W_(r)&&$_(t,r.length):a=="string"&&t in r)?j_(r[t],e):!1}Xd.exports=V_});var tf=u((zF,ef)=>{"use strict";var Y_=Lo(),H_=Zd();function z_(e){return Y_(function(t,r){var a=-1,n=r.length,o=n>1?r[n-1]:void 0,s=n>2?r[2]:void 0;for(o=e.length>3&&typeof o=="function"?(n--,o):void 0,s&&H_(r[0],r[1],s)&&(o=n<3?void 0:o,n=1),t=Object(t);++a<n;){var i=r[a];i&&e(t,i,a,o)}return t})}ef.exports=z_});var Jo=u((JF,rf)=>{"use strict";var J_=Jd(),X_=tf(),Z_=X_(function(e,t,r){J_(e,t,r)});rf.exports=Z_});var nm=u(de=>{"use strict";de.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"};de.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"]};de.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};de.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};de.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};de.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]};de.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}};de.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}};de.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=de.aliasToReal,r={};for(var a in t){var n=t[a];e.call(r,n)?r[n].push(a):r[n]=[a]}return r}();de.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"};de.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};de.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 Vs=u((Sj,om)=>{"use strict";om.exports={}});var pm=u((wj,um)=>{"use strict";var X=nm(),UC=Vs(),sm=Array.prototype.push;function qC(e,t){return t==2?function(r,a){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}function Ys(e,t){return t==2?function(r,a){return e(r,a)}:function(r){return e(r)}}function im(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}function DC(e){return function(t){return e({},t)}}function NC(e,t){return function(){for(var r=arguments.length,a=r-1,n=Array(r);r--;)n[r]=arguments[r];var o=n[t],s=n.slice(0,t);return o&&sm.apply(s,o),t!=a&&sm.apply(s,n.slice(t+1)),e.apply(this,s)}}function Hs(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 zs(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 s={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},i=n?r:UC,p="curry"in a&&a.curry,m="fixed"in a&&a.fixed,f="rearg"in a&&a.rearg,h=n?r.runInContext():void 0,g=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},S=g.ary,O=g.assign,_=g.clone,R=g.curry,E=g.forEach,U=g.isArray,Oe=g.isError,Se=g.isFunction,pt=g.isWeakMap,Ft=g.keys,Sr=g.rearg,wr=g.toInteger,gI=g.toPath,Cu=Ft(X.aryMethod),hI={castArray:function(I){return function(){var y=arguments[0];return U(y)?I(im(y)):I.apply(void 0,arguments)}},iteratee:function(I){return function(){var y=arguments[0],b=arguments[1],v=I(y,b),C=v.length;return s.cap&&typeof b=="number"?(b=b>2?b-2:1,C&&C<=b?v:Ys(v,b)):v}},mixin:function(I){return function(y){var b=this;if(!Se(b))return I(b,Object(y));var v=[];return E(Ft(y),function(C){Se(y[C])&&v.push([C,b.prototype[C]])}),I(b,Object(y)),E(v,function(C){var ae=C[1];Se(ae)?b.prototype[C[0]]=ae:delete b.prototype[C[0]]}),b}},nthArg:function(I){return function(y){var b=y<0?1:wr(y)+1;return R(I(y),b)}},rearg:function(I){return function(y,b){var v=b?b.length:0;return R(I(y,b),v)}},runInContext:function(I){return function(y){return zs(e,I(y),a)}}};function yI(I,y){if(s.cap){var b=X.iterateeRearg[I];if(b)return wI(y,b);var v=!n&&X.iterateeAry[I];if(v)return SI(y,v)}return y}function AI(I,y,b){return p||s.curry&&b>1?R(y,b):y}function Ou(I,y,b){if(s.fixed&&(m||!X.skipFixed[I])){var v=X.methodSpread[I],C=v&&v.start;return C===void 0?S(y,b):NC(y,C)}return y}function Lu(I,y,b){return s.rearg&&b>1&&(f||!X.skipRearg[I])?Sr(y,X.methodRearg[I]||X.aryRearg[b]):y}function bI(I,y){y=gI(y);for(var b=-1,v=y.length,C=v-1,ae=_(Object(I)),Me=ae;Me!=null&&++b<v;){var we=y[b],Ge=Me[we];Ge!=null&&!(Se(Ge)||Oe(Ge)||pt(Ge))&&(Me[we]=_(b==C?Ge:Object(Ge))),Me=Me[we]}return ae}function II(I){return me.runInContext.convert(I)(void 0)}function Pu(I,y){var b=X.aliasToReal[I]||I,v=X.remap[b]||b,C=a;return function(ae){var Me=n?h:g,we=n?h[v]:y,Ge=O(O({},C),ae);return zs(Me,b,we,Ge)}}function SI(I,y){return Uu(I,function(b){return typeof b=="function"?Ys(b,y):b})}function wI(I,y){return Uu(I,function(b){var v=y.length;return qC(Sr(Ys(b,v),y),v)})}function Uu(I,y){return function(){var b=arguments.length;if(!b)return I();for(var v=Array(b);b--;)v[b]=arguments[b];var C=s.rearg?0:b-1;return v[C]=y(v[C]),I.apply(void 0,v)}}function qu(I,y,b){var v,C=X.aliasToReal[I]||I,ae=y,Me=hI[C];return Me?ae=Me(y):s.immutable&&(X.mutate.array[C]?ae=Hs(y,im):X.mutate.object[C]?ae=Hs(y,DC(y)):X.mutate.set[C]&&(ae=Hs(y,bI))),E(Cu,function(we){return E(X.aryMethod[we],function(Ge){if(C==Ge){var Du=X.methodSpread[C],TI=Du&&Du.afterRearg;return v=TI?Ou(C,Lu(C,ae,we),we):Lu(C,Ou(C,ae,we),we),v=yI(C,v),v=AI(C,v,we),!1}}),!v}),v||(v=ae),v==y&&(v=p?R(v,1):function(){return y.apply(this,arguments)}),v.convert=Pu(C,y),v.placeholder=y.placeholder=b,v}if(!o)return qu(t,r,i);var me=r,Tr=[];return E(Cu,function(I){E(X.aryMethod[I],function(y){var b=me[X.remap[y]||y];b&&Tr.push([y,qu(y,b,me)])})}),E(Ft(me),function(I){var y=me[I];if(typeof y=="function"){for(var b=Tr.length;b--;)if(Tr[b][0]==I)return;y.convert=Pu(I,y),Tr.push([I,y])}}),E(Tr,function(I){me[I[0]]=I[1]}),me.convert=II,me.placeholder=me,E(Ft(me),function(I){E(X.realToAlias[I]||[],function(y){me[y]=me[I]})}),me}um.exports=zs});var Js=u((Tj,cm)=>{"use strict";var BC=gt(),MC=oe(),GC=BC(MC,"WeakMap");cm.exports=GC});var Xs=u((vj,dm)=>{"use strict";var lm=Js(),kC=lm&&new lm;dm.exports=kC});var Zs=u((Ej,mm)=>{"use strict";var FC=Jr(),fm=Xs(),QC=fm?function(e,t){return fm.set(e,t),e}:FC;mm.exports=QC});var wa=u((Rj,gm)=>{"use strict";var jC=sa(),WC=Ee();function $C(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=jC(e.prototype),a=e.apply(r,t);return WC(a)?a:r}}gm.exports=$C});var ym=u((_j,hm)=>{"use strict";var KC=wa(),VC=oe(),YC=1;function HC(e,t,r){var a=t&YC,n=KC(e);function o(){var s=this&&this!==VC&&this instanceof o?n:e;return s.apply(a?r:this,arguments)}return o}hm.exports=HC});var ei=u((xj,Am)=>{"use strict";var zC=Math.max;function JC(e,t,r,a){for(var n=-1,o=e.length,s=r.length,i=-1,p=t.length,m=zC(o-s,0),f=Array(p+m),h=!a;++i<p;)f[i]=t[i];for(;++n<s;)(h||n<o)&&(f[r[n]]=e[n]);for(;m--;)f[i++]=e[n++];return f}Am.exports=JC});var ti=u((Cj,bm)=>{"use strict";var XC=Math.max;function ZC(e,t,r,a){for(var n=-1,o=e.length,s=-1,i=r.length,p=-1,m=t.length,f=XC(o-i,0),h=Array(f+m),g=!a;++n<f;)h[n]=e[n];for(var S=n;++p<m;)h[S+p]=t[p];for(;++s<i;)(g||n<o)&&(h[S+r[s]]=e[n++]);return h}bm.exports=ZC});var Sm=u((Oj,Im)=>{"use strict";function eO(e,t){for(var r=e.length,a=0;r--;)e[r]===t&&++a;return a}Im.exports=eO});var Ln=u((Lj,wm)=>{"use strict";function tO(){}wm.exports=tO});var Un=u((Pj,Tm)=>{"use strict";var rO=sa(),aO=Ln(),nO=4294967295;function Pn(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=nO,this.__views__=[]}Pn.prototype=rO(aO.prototype);Pn.prototype.constructor=Pn;Tm.exports=Pn});var ri=u((Uj,Em)=>{"use strict";var vm=Xs(),oO=No(),sO=vm?function(e){return vm.get(e)}:oO;Em.exports=sO});var _m=u((qj,Rm)=>{"use strict";var iO={};Rm.exports=iO});var Om=u((Dj,Cm)=>{"use strict";var xm=_m(),uO=Object.prototype,pO=uO.hasOwnProperty;function cO(e){for(var t=e.name+"",r=xm[t],a=pO.call(xm,t)?r.length:0;a--;){var n=r[a],o=n.func;if(o==null||o==e)return n.name}return t}Cm.exports=cO});var ai=u((Nj,Lm)=>{"use strict";var lO=sa(),dO=Ln();function qn(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}qn.prototype=lO(dO.prototype);qn.prototype.constructor=qn;Lm.exports=qn});var Um=u((Bj,Pm)=>{"use strict";var fO=Un(),mO=ai(),gO=tr();function hO(e){if(e instanceof fO)return e.clone();var t=new mO(e.__wrapped__,e.__chain__);return t.__actions__=gO(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}Pm.exports=hO});var Nm=u((Mj,Dm)=>{"use strict";var yO=Un(),qm=ai(),AO=Ln(),bO=re(),IO=he(),SO=Um(),wO=Object.prototype,TO=wO.hasOwnProperty;function Dn(e){if(IO(e)&&!bO(e)&&!(e instanceof yO)){if(e instanceof qm)return e;if(TO.call(e,"__wrapped__"))return SO(e)}return new qm(e)}Dn.prototype=AO.prototype;Dn.prototype.constructor=Dn;Dm.exports=Dn});var Mm=u((Gj,Bm)=>{"use strict";var vO=Un(),EO=ri(),RO=Om(),_O=Nm();function xO(e){var t=RO(e),r=_O[t];if(typeof r!="function"||!(t in vO.prototype))return!1;if(e===r)return!0;var a=EO(r);return!!a&&e===a[0]}Bm.exports=xO});var ni=u((kj,Gm)=>{"use strict";var CO=Zs(),OO=Oo(),LO=OO(CO);Gm.exports=LO});var Fm=u((Fj,km)=>{"use strict";var PO=/\{\n\/\* \[wrapped with (.+)\] \*/,UO=/,? & /;function qO(e){var t=e.match(PO);return t?t[1].split(UO):[]}km.exports=qO});var jm=u((Qj,Qm)=>{"use strict";var DO=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function NO(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(DO,`{
2
2
  /* [wrapped with `+t+`] */
3
- `)}Fm.exports=qL});var Dn=u((Gj,jm)=>{"use strict";function DL(e,t){for(var r=-1,a=e==null?0:e.length;++r<a&&t(e[r],r,e)!==!1;);return e}jm.exports=DL});var $m=u((kj,Wm)=>{"use strict";var NL=Dn(),BL=Po(),ML=1,GL=2,kL=8,FL=16,QL=32,jL=64,WL=128,$L=256,KL=512,VL=[["ary",WL],["bind",ML],["bindKey",GL],["curry",kL],["curryRight",FL],["flip",KL],["partial",QL],["partialRight",jL],["rearg",$L]];function YL(e,t){return NL(VL,function(r){var a="_."+r[0];t&r[1]&&!BL(e,a)&&e.push(a)}),e.sort()}Wm.exports=YL});var ni=u((Fj,Km)=>{"use strict";var HL=km(),zL=Qm(),JL=Xa(),XL=$m();function ZL(e,t,r){var a=t+"";return JL(e,zL(a,XL(HL(a),r)))}Km.exports=ZL});var oi=u((Qj,Hm)=>{"use strict";var eO=Bm(),tO=ai(),rO=ni(),aO=1,nO=2,oO=4,sO=8,Vm=32,Ym=64;function iO(e,t,r,a,n,o,s,i,p,m){var f=t&sO,h=f?s:void 0,g=f?void 0:s,S=f?o:void 0,L=f?void 0:o;t|=f?Vm:Ym,t&=~(f?Ym:Vm),t&oO||(t&=~(aO|nO));var _=[e,t,n,S,h,L,g,i,p,m],R=r.apply(void 0,_);return eO(e)&&tO(R,_),R.placeholder=a,rO(R,e,t)}Hm.exports=iO});var si=u((jj,zm)=>{"use strict";function uO(e){var t=e;return t.placeholder}zm.exports=uO});var Xm=u((Wj,Jm)=>{"use strict";var pO=tr(),cO=la(),lO=Math.min;function dO(e,t){for(var r=e.length,a=lO(t.length,r),n=pO(e);a--;){var o=t[a];e[a]=cO(o,r)?n[o]:void 0}return e}Jm.exports=dO});var Nn=u(($j,eg)=>{"use strict";var Zm="__lodash_placeholder__";function fO(e,t){for(var r=-1,a=e.length,n=0,o=[];++r<a;){var s=e[r];(s===t||s===Zm)&&(e[r]=Zm,o[n++]=r)}return o}eg.exports=fO});var ii=u((Kj,ag)=>{"use strict";var mO=Zs(),gO=ei(),hO=Im(),tg=wa(),yO=oi(),AO=si(),bO=Xm(),IO=Nn(),SO=oe(),wO=1,TO=2,vO=8,EO=16,RO=128,_O=512;function rg(e,t,r,a,n,o,s,i,p,m){var f=t&RO,h=t&wO,g=t&TO,S=t&(vO|EO),L=t&_O,_=g?void 0:tg(e);function R(){for(var E=arguments.length,U=Array(E),Ce=E;Ce--;)U[Ce]=arguments[Ce];if(S)var Ie=AO(R),pt=hO(U,Ie);if(a&&(U=mO(U,a,n,S)),o&&(U=gO(U,o,s,S)),E-=pt,S&&E<m){var Ft=IO(U,Ie);return yO(e,t,rg,R.placeholder,r,U,Ft,i,p,m-E)}var Sr=h?r:this,wr=g?Sr[e]:e;return E=U.length,i?U=bO(U,i):L&&E>1&&U.reverse(),f&&p<E&&(U.length=p),this&&this!==SO&&this instanceof R&&(wr=_||tg(wr)),wr.apply(Sr,U)}return R}ag.exports=rg});var og=u((Vj,ng)=>{"use strict";var xO=Ja(),CO=wa(),LO=ii(),OO=oi(),PO=si(),UO=Nn(),qO=oe();function DO(e,t,r){var a=CO(e);function n(){for(var o=arguments.length,s=Array(o),i=o,p=PO(n);i--;)s[i]=arguments[i];var m=o<3&&s[0]!==p&&s[o-1]!==p?[]:UO(s,p);if(o-=m.length,o<r)return OO(e,t,LO,n.placeholder,void 0,s,m,void 0,void 0,r-o);var f=this&&this!==qO&&this instanceof n?a:e;return xO(f,this,s)}return n}ng.exports=DO});var ig=u((Yj,sg)=>{"use strict";var NO=Ja(),BO=wa(),MO=oe(),GO=1;function kO(e,t,r,a){var n=t&GO,o=BO(e);function s(){for(var i=-1,p=arguments.length,m=-1,f=a.length,h=Array(f+p),g=this&&this!==MO&&this instanceof s?o:e;++m<f;)h[m]=a[m];for(;p--;)h[m++]=arguments[++i];return NO(g,n?r:this,h)}return s}sg.exports=kO});var fg=u((Hj,dg)=>{"use strict";var FO=Zs(),QO=ei(),ug=Nn(),pg="__lodash_placeholder__",ui=1,jO=2,WO=4,cg=8,Ta=128,lg=256,$O=Math.min;function KO(e,t){var r=e[1],a=t[1],n=r|a,o=n<(ui|jO|Ta),s=a==Ta&&r==cg||a==Ta&&r==lg&&e[7].length<=t[8]||a==(Ta|lg)&&t[7].length<=t[8]&&r==cg;if(!(o||s))return e;a&ui&&(e[2]=t[2],n|=r&ui?0:WO);var i=t[3];if(i){var p=e[3];e[3]=p?FO(p,i,t[4]):i,e[4]=p?ug(e[3],pg):t[4]}return i=t[5],i&&(p=e[5],e[5]=p?QO(p,i,t[6]):i,e[6]=p?ug(e[5],pg):t[6]),i=t[7],i&&(e[7]=i),a&Ta&&(e[8]=e[8]==null?t[8]:$O(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=n,e}dg.exports=KO});var gg=u((zj,mg)=>{"use strict";var VO=/\s/;function YO(e){for(var t=e.length;t--&&VO.test(e.charAt(t)););return t}mg.exports=YO});var yg=u((Jj,hg)=>{"use strict";var HO=gg(),zO=/^\s+/;function JO(e){return e&&e.slice(0,HO(e)+1).replace(zO,"")}hg.exports=JO});var mr=u((Xj,Ag)=>{"use strict";var XO=mt(),ZO=he(),eP="[object Symbol]";function tP(e){return typeof e=="symbol"||ZO(e)&&XO(e)==eP}Ag.exports=tP});var wg=u((Zj,Sg)=>{"use strict";var rP=yg(),bg=ve(),aP=mr(),Ig=0/0,nP=/^[-+]0x[0-9a-f]+$/i,oP=/^0b[01]+$/i,sP=/^0o[0-7]+$/i,iP=parseInt;function uP(e){if(typeof e=="number")return e;if(aP(e))return Ig;if(bg(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=bg(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=rP(e);var r=oP.test(e);return r||sP.test(e)?iP(e.slice(2),r?2:8):nP.test(e)?Ig:+e}Sg.exports=uP});var Eg=u((eW,vg)=>{"use strict";var pP=wg(),Tg=1/0,cP=17976931348623157e292;function lP(e){if(!e)return e===0?e:0;if(e=pP(e),e===Tg||e===-Tg){var t=e<0?-1:1;return t*cP}return e===e?e:0}vg.exports=lP});var pi=u((tW,Rg)=>{"use strict";var dP=Eg();function fP(e){var t=dP(e),r=t%1;return t===t?r?t-r:t:0}Rg.exports=fP});var Bn=u((rW,Og)=>{"use strict";var mP=Xs(),gP=hm(),hP=og(),yP=ii(),AP=ig(),bP=ti(),IP=fg(),SP=ai(),wP=ni(),_g=pi(),TP="Expected a function",xg=1,vP=2,ci=8,li=16,di=32,Cg=64,Lg=Math.max;function EP(e,t,r,a,n,o,s,i){var p=t&vP;if(!p&&typeof e!="function")throw new TypeError(TP);var m=a?a.length:0;if(m||(t&=~(di|Cg),a=n=void 0),s=s===void 0?s:Lg(_g(s),0),i=i===void 0?i:_g(i),m-=n?n.length:0,t&Cg){var f=a,h=n;a=n=void 0}var g=p?void 0:bP(e),S=[e,t,r,a,n,f,h,o,s,i];if(g&&IP(S,g),e=S[0],t=S[1],r=S[2],a=S[3],n=S[4],i=S[9]=S[9]===void 0?p?0:e.length:Lg(S[9]-m,0),!i&&t&(ci|li)&&(t&=~(ci|li)),!t||t==xg)var L=gP(e,t,r);else t==ci||t==li?L=hP(e,t,i):(t==di||t==(xg|di))&&!n.length?L=AP(e,t,r,a):L=yP.apply(void 0,S);var _=g?mP:SP;return wP(_(L,S),e,t)}Og.exports=EP});var Ug=u((aW,Pg)=>{"use strict";var RP=Bn(),_P=128;function xP(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,RP(e,_P,void 0,void 0,void 0,void 0,t)}Pg.exports=xP});var Dg=u((nW,qg)=>{"use strict";var CP=jo(),LP=CP(Object.keys,Object);qg.exports=LP});var fi=u((oW,Ng)=>{"use strict";var OP=sn(),PP=Dg(),UP=Object.prototype,qP=UP.hasOwnProperty;function DP(e){if(!OP(e))return PP(e);var t=[];for(var r in Object(e))qP.call(e,r)&&r!="constructor"&&t.push(r);return t}Ng.exports=DP});var gr=u((sW,Bg)=>{"use strict";var NP=Ho(),BP=fi(),MP=Xt();function GP(e){return MP(e)?NP(e):BP(e)}Bg.exports=GP});var mi=u((iW,Mg)=>{"use strict";var kP=nr(),FP=gr();function QP(e,t){return e&&kP(t,FP(t),e)}Mg.exports=QP});var kg=u((uW,Gg)=>{"use strict";var jP=nr(),WP=or();function $P(e,t){return e&&jP(t,WP(t),e)}Gg.exports=$P});var Qg=u((pW,Fg)=>{"use strict";function KP(e,t){for(var r=-1,a=e==null?0:e.length,n=0,o=[];++r<a;){var s=e[r];t(s,r,e)&&(o[n++]=s)}return o}Fg.exports=KP});var gi=u((cW,jg)=>{"use strict";function VP(){return[]}jg.exports=VP});var Mn=u((lW,$g)=>{"use strict";var YP=Qg(),HP=gi(),zP=Object.prototype,JP=zP.propertyIsEnumerable,Wg=Object.getOwnPropertySymbols,XP=Wg?function(e){return e==null?[]:(e=Object(e),YP(Wg(e),function(t){return JP.call(e,t)}))}:HP;$g.exports=XP});var Vg=u((dW,Kg)=>{"use strict";var ZP=nr(),eU=Mn();function tU(e,t){return ZP(e,eU(e),t)}Kg.exports=tU});var hi=u((fW,Yg)=>{"use strict";var rU=za(),aU=on(),nU=Mn(),oU=gi(),sU=Object.getOwnPropertySymbols,iU=sU?function(e){for(var t=[];e;)rU(t,nU(e)),e=aU(e);return t}:oU;Yg.exports=iU});var zg=u((mW,Hg)=>{"use strict";var uU=nr(),pU=hi();function cU(e,t){return uU(e,pU(e),t)}Hg.exports=cU});var yi=u((gW,Jg)=>{"use strict";var lU=za(),dU=re();function fU(e,t,r){var a=t(e);return dU(e)?a:lU(a,r(e))}Jg.exports=fU});var Ai=u((hW,Xg)=>{"use strict";var mU=yi(),gU=Mn(),hU=gr();function yU(e){return mU(e,hU,gU)}Xg.exports=yU});var eh=u((yW,Zg)=>{"use strict";var AU=yi(),bU=hi(),IU=or();function SU(e){return AU(e,IU,bU)}Zg.exports=SU});var rh=u((AW,th)=>{"use strict";var wU=gt(),TU=oe(),vU=wU(TU,"DataView");th.exports=vU});var nh=u((bW,ah)=>{"use strict";var EU=gt(),RU=oe(),_U=EU(RU,"Promise");ah.exports=_U});var yr=u((IW,lh)=>{"use strict";var bi=rh(),Ii=Za(),Si=nh(),wi=qo(),Ti=zs(),ch=mt(),hr=_o(),oh="[object Map]",xU="[object Object]",sh="[object Promise]",ih="[object Set]",uh="[object WeakMap]",ph="[object DataView]",CU=hr(bi),LU=hr(Ii),OU=hr(Si),PU=hr(wi),UU=hr(Ti),Nt=ch;(bi&&Nt(new bi(new ArrayBuffer(1)))!=ph||Ii&&Nt(new Ii)!=oh||Si&&Nt(Si.resolve())!=sh||wi&&Nt(new wi)!=ih||Ti&&Nt(new Ti)!=uh)&&(Nt=function(e){var t=ch(e),r=t==xU?e.constructor:void 0,a=r?hr(r):"";if(a)switch(a){case CU:return ph;case LU:return oh;case OU:return sh;case PU:return ih;case UU:return uh}return t});lh.exports=Nt});var fh=u((SW,dh)=>{"use strict";var qU=Object.prototype,DU=qU.hasOwnProperty;function NU(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&DU.call(e,"index")&&(r.index=e.index,r.input=e.input),r}dh.exports=NU});var gh=u((wW,mh)=>{"use strict";var BU=nn();function MU(e,t){var r=t?BU(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}mh.exports=MU});var yh=u((TW,hh)=>{"use strict";var GU=/\w*$/;function kU(e){var t=new e.constructor(e.source,GU.exec(e));return t.lastIndex=e.lastIndex,t}hh.exports=kU});var wh=u((vW,Sh)=>{"use strict";var Ah=_t(),bh=Ah?Ah.prototype:void 0,Ih=bh?bh.valueOf:void 0;function FU(e){return Ih?Object(Ih.call(e)):{}}Sh.exports=FU});var vh=u((EW,Th)=>{"use strict";var QU=nn(),jU=gh(),WU=yh(),$U=wh(),KU=Qo(),VU="[object Boolean]",YU="[object Date]",HU="[object Map]",zU="[object Number]",JU="[object RegExp]",XU="[object Set]",ZU="[object String]",eq="[object Symbol]",tq="[object ArrayBuffer]",rq="[object DataView]",aq="[object Float32Array]",nq="[object Float64Array]",oq="[object Int8Array]",sq="[object Int16Array]",iq="[object Int32Array]",uq="[object Uint8Array]",pq="[object Uint8ClampedArray]",cq="[object Uint16Array]",lq="[object Uint32Array]";function dq(e,t,r){var a=e.constructor;switch(t){case tq:return QU(e);case VU:case YU:return new a(+e);case rq:return jU(e,r);case aq:case nq:case oq:case sq:case iq:case uq:case pq:case cq:case lq:return KU(e,r);case HU:return new a;case zU:case ZU:return new a(e);case JU:return WU(e);case XU:return new a;case eq:return $U(e)}}Th.exports=dq});var Rh=u((RW,Eh)=>{"use strict";var fq=yr(),mq=he(),gq="[object Map]";function hq(e){return mq(e)&&fq(e)==gq}Eh.exports=hq});var Lh=u((_W,Ch)=>{"use strict";var yq=Rh(),Aq=un(),_h=pn(),xh=_h&&_h.isMap,bq=xh?Aq(xh):yq;Ch.exports=bq});var Ph=u((xW,Oh)=>{"use strict";var Iq=yr(),Sq=he(),wq="[object Set]";function Tq(e){return Sq(e)&&Iq(e)==wq}Oh.exports=Tq});var Nh=u((CW,Dh)=>{"use strict";var vq=Ph(),Eq=un(),Uh=pn(),qh=Uh&&Uh.isSet,Rq=qh?Eq(qh):vq;Dh.exports=Rq});var vi=u((LW,kh)=>{"use strict";var _q=aa(),xq=Dn(),Cq=Yo(),Lq=mi(),Oq=kg(),Pq=ko(),Uq=tr(),qq=Vg(),Dq=zg(),Nq=Ai(),Bq=eh(),Mq=yr(),Gq=fh(),kq=vh(),Fq=Wo(),Qq=re(),jq=ua(),Wq=Lh(),$q=ve(),Kq=Nh(),Vq=gr(),Yq=or(),Hq=1,zq=2,Jq=4,Bh="[object Arguments]",Xq="[object Array]",Zq="[object Boolean]",eD="[object Date]",tD="[object Error]",Mh="[object Function]",rD="[object GeneratorFunction]",aD="[object Map]",nD="[object Number]",Gh="[object Object]",oD="[object RegExp]",sD="[object Set]",iD="[object String]",uD="[object Symbol]",pD="[object WeakMap]",cD="[object ArrayBuffer]",lD="[object DataView]",dD="[object Float32Array]",fD="[object Float64Array]",mD="[object Int8Array]",gD="[object Int16Array]",hD="[object Int32Array]",yD="[object Uint8Array]",AD="[object Uint8ClampedArray]",bD="[object Uint16Array]",ID="[object Uint32Array]",D={};D[Bh]=D[Xq]=D[cD]=D[lD]=D[Zq]=D[eD]=D[dD]=D[fD]=D[mD]=D[gD]=D[hD]=D[aD]=D[nD]=D[Gh]=D[oD]=D[sD]=D[iD]=D[uD]=D[yD]=D[AD]=D[bD]=D[ID]=!0;D[tD]=D[Mh]=D[pD]=!1;function Gn(e,t,r,a,n,o){var s,i=t&Hq,p=t&zq,m=t&Jq;if(r&&(s=n?r(e,a,n,o):r(e)),s!==void 0)return s;if(!$q(e))return e;var f=Qq(e);if(f){if(s=Gq(e),!i)return Uq(e,s)}else{var h=Mq(e),g=h==Mh||h==rD;if(jq(e))return Pq(e,i);if(h==Gh||h==Bh||g&&!n){if(s=p||g?{}:Fq(e),!i)return p?Dq(e,Oq(s,e)):qq(e,Lq(s,e))}else{if(!D[h])return n?e:{};s=kq(e,h,i)}}o||(o=new _q);var S=o.get(e);if(S)return S;o.set(e,s),Kq(e)?e.forEach(function(R){s.add(Gn(R,t,r,R,e,o))}):Wq(e)&&e.forEach(function(R,E){s.set(E,Gn(R,t,r,E,e,o))});var L=m?p?Bq:Nq:p?Yq:Vq,_=f?void 0:L(e);return xq(_||e,function(R,E){_&&(E=R,R=e[E]),Cq(s,E,Gn(R,t,r,E,e,o))}),s}kh.exports=Gn});var Qh=u((OW,Fh)=>{"use strict";var SD=vi(),wD=4;function TD(e){return SD(e,wD)}Fh.exports=TD});var Wh=u((PW,jh)=>{"use strict";var vD=Bn(),ED=8;function Ei(e,t,r){t=r?void 0:t;var a=vD(e,ED,void 0,void 0,void 0,void 0,void 0,t);return a.placeholder=Ei.placeholder,a}Ei.placeholder={};jh.exports=Ei});var Kh=u((UW,$h)=>{"use strict";var RD=mt(),_D=he(),xD=$o(),CD="[object DOMException]",LD="[object Error]";function OD(e){if(!_D(e))return!1;var t=RD(e);return t==LD||t==CD||typeof e.message=="string"&&typeof e.name=="string"&&!xD(e)}$h.exports=OD});var Yh=u((qW,Vh)=>{"use strict";var PD=yr(),UD=he(),qD="[object WeakMap]";function DD(e){return UD(e)&&PD(e)==qD}Vh.exports=DD});var zh=u((DW,Hh)=>{"use strict";function ND(e,t){for(var r=-1,a=e==null?0:e.length;++r<a;)if(t(e[r],r,e))return!0;return!1}Hh.exports=ND});var Ri=u((NW,Jh)=>{"use strict";var BD=Oo(),MD=zh(),GD=Uo(),kD=1,FD=2;function QD(e,t,r,a,n,o){var s=r&kD,i=e.length,p=t.length;if(i!=p&&!(s&&p>i))return!1;var m=o.get(e),f=o.get(t);if(m&&f)return m==t&&f==e;var h=-1,g=!0,S=r&FD?new BD:void 0;for(o.set(e,t),o.set(t,e);++h<i;){var L=e[h],_=t[h];if(a)var R=s?a(_,L,h,t,e,o):a(L,_,h,e,t,o);if(R!==void 0){if(R)continue;g=!1;break}if(S){if(!MD(t,function(E,U){if(!GD(S,U)&&(L===E||n(L,E,r,a,o)))return S.push(U)})){g=!1;break}}else if(!(L===_||n(L,_,r,a,o))){g=!1;break}}return o.delete(e),o.delete(t),g}Jh.exports=QD});var Zh=u((BW,Xh)=>{"use strict";function jD(e){var t=-1,r=Array(e.size);return e.forEach(function(a,n){r[++t]=[n,a]}),r}Xh.exports=jD});var ny=u((MW,ay)=>{"use strict";var ey=_t(),ty=Fo(),WD=Ht(),$D=Ri(),KD=Zh(),VD=rn(),YD=1,HD=2,zD="[object Boolean]",JD="[object Date]",XD="[object Error]",ZD="[object Map]",eN="[object Number]",tN="[object RegExp]",rN="[object Set]",aN="[object String]",nN="[object Symbol]",oN="[object ArrayBuffer]",sN="[object DataView]",ry=ey?ey.prototype:void 0,_i=ry?ry.valueOf:void 0;function iN(e,t,r,a,n,o,s){switch(r){case sN:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case oN:return!(e.byteLength!=t.byteLength||!o(new ty(e),new ty(t)));case zD:case JD:case eN:return WD(+e,+t);case XD:return e.name==t.name&&e.message==t.message;case tN:case aN:return e==t+"";case ZD:var i=KD;case rN:var p=a&YD;if(i||(i=VD),e.size!=t.size&&!p)return!1;var m=s.get(e);if(m)return m==t;a|=HD,s.set(e,t);var f=$D(i(e),i(t),a,n,o,s);return s.delete(e),f;case nN:if(_i)return _i.call(e)==_i.call(t)}return!1}ay.exports=iN});var iy=u((GW,sy)=>{"use strict";var oy=Ai(),uN=1,pN=Object.prototype,cN=pN.hasOwnProperty;function lN(e,t,r,a,n,o){var s=r&uN,i=oy(e),p=i.length,m=oy(t),f=m.length;if(p!=f&&!s)return!1;for(var h=p;h--;){var g=i[h];if(!(s?g in t:cN.call(t,g)))return!1}var S=o.get(e),L=o.get(t);if(S&&L)return S==t&&L==e;var _=!0;o.set(e,t),o.set(t,e);for(var R=s;++h<p;){g=i[h];var E=e[g],U=t[g];if(a)var Ce=s?a(U,E,g,t,e,o):a(E,U,g,e,t,o);if(!(Ce===void 0?E===U||n(E,U,r,a,o):Ce)){_=!1;break}R||(R=g=="constructor")}if(_&&!R){var Ie=e.constructor,pt=t.constructor;Ie!=pt&&"constructor"in e&&"constructor"in t&&!(typeof Ie=="function"&&Ie instanceof Ie&&typeof pt=="function"&&pt instanceof pt)&&(_=!1)}return o.delete(e),o.delete(t),_}sy.exports=lN});var gy=u((kW,my)=>{"use strict";var xi=aa(),dN=Ri(),fN=ny(),mN=iy(),uy=yr(),py=re(),cy=ua(),gN=cn(),hN=1,ly="[object Arguments]",dy="[object Array]",kn="[object Object]",yN=Object.prototype,fy=yN.hasOwnProperty;function AN(e,t,r,a,n,o){var s=py(e),i=py(t),p=s?dy:uy(e),m=i?dy:uy(t);p=p==ly?kn:p,m=m==ly?kn:m;var f=p==kn,h=m==kn,g=p==m;if(g&&cy(e)){if(!cy(t))return!1;s=!0,f=!1}if(g&&!f)return o||(o=new xi),s||gN(e)?dN(e,t,r,a,n,o):fN(e,t,p,r,a,n,o);if(!(r&hN)){var S=f&&fy.call(e,"__wrapped__"),L=h&&fy.call(t,"__wrapped__");if(S||L){var _=S?e.value():e,R=L?t.value():t;return o||(o=new xi),n(_,R,r,a,o)}}return g?(o||(o=new xi),mN(e,t,r,a,n,o)):!1}my.exports=AN});var Ci=u((FW,Ay)=>{"use strict";var bN=gy(),hy=he();function yy(e,t,r,a,n){return e===t?!0:e==null||t==null||!hy(e)&&!hy(t)?e!==e&&t!==t:bN(e,t,r,a,yy,n)}Ay.exports=yy});var Iy=u((QW,by)=>{"use strict";var IN=aa(),SN=Ci(),wN=1,TN=2;function vN(e,t,r,a){var n=r.length,o=n,s=!a;if(e==null)return!o;for(e=Object(e);n--;){var i=r[n];if(s&&i[2]?i[1]!==e[i[0]]:!(i[0]in e))return!1}for(;++n<o;){i=r[n];var p=i[0],m=e[p],f=i[1];if(s&&i[2]){if(m===void 0&&!(p in e))return!1}else{var h=new IN;if(a)var g=a(m,f,p,e,t,h);if(!(g===void 0?SN(f,m,wN|TN,a,h):g))return!1}}return!0}by.exports=vN});var Li=u((jW,Sy)=>{"use strict";var EN=ve();function RN(e){return e===e&&!EN(e)}Sy.exports=RN});var Ty=u((WW,wy)=>{"use strict";var _N=Li(),xN=gr();function CN(e){for(var t=xN(e),r=t.length;r--;){var a=t[r],n=e[a];t[r]=[a,n,_N(n)]}return t}wy.exports=CN});var Oi=u(($W,vy)=>{"use strict";function LN(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}vy.exports=LN});var Ry=u((KW,Ey)=>{"use strict";var ON=Iy(),PN=Ty(),UN=Oi();function qN(e){var t=PN(e);return t.length==1&&t[0][2]?UN(t[0][0],t[0][1]):function(r){return r===e||ON(r,e,t)}}Ey.exports=qN});var Fn=u((VW,_y)=>{"use strict";var DN=re(),NN=mr(),BN=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,MN=/^\w*$/;function GN(e,t){if(DN(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||NN(e)?!0:MN.test(e)||!BN.test(e)||t!=null&&e in Object(t)}_y.exports=GN});var Ly=u((YW,Cy)=>{"use strict";var xy=en(),kN="Expected a function";function Pi(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(kN);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 s=e.apply(this,a);return r.cache=o.set(n,s)||o,s};return r.cache=new(Pi.Cache||xy),r}Pi.Cache=xy;Cy.exports=Pi});var Py=u((HW,Oy)=>{"use strict";var FN=Ly(),QN=500;function jN(e){var t=FN(e,function(a){return r.size===QN&&r.clear(),a}),r=t.cache;return t}Oy.exports=jN});var Ui=u((zW,Uy)=>{"use strict";var WN=Py(),$N=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,KN=/\\(\\)?/g,VN=WN(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace($N,function(r,a,n,o){t.push(n?o.replace(KN,"$1"):a||r)}),t});Uy.exports=VN});var qi=u((JW,qy)=>{"use strict";function YN(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}qy.exports=YN});var ky=u((XW,Gy)=>{"use strict";var Dy=_t(),HN=qi(),zN=re(),JN=mr(),XN=1/0,Ny=Dy?Dy.prototype:void 0,By=Ny?Ny.toString:void 0;function My(e){if(typeof e=="string")return e;if(zN(e))return HN(e,My)+"";if(JN(e))return By?By.call(e):"";var t=e+"";return t=="0"&&1/e==-XN?"-0":t}Gy.exports=My});var Di=u((ZW,Fy)=>{"use strict";var ZN=ky();function eB(e){return e==null?"":ZN(e)}Fy.exports=eB});var Ni=u((e$,Qy)=>{"use strict";var tB=re(),rB=Fn(),aB=Ui(),nB=Di();function oB(e,t){return tB(e)?e:rB(e,t)?[e]:aB(nB(e))}Qy.exports=oB});var Ar=u((t$,jy)=>{"use strict";var sB=mr(),iB=1/0;function uB(e){if(typeof e=="string"||sB(e))return e;var t=e+"";return t=="0"&&1/e==-iB?"-0":t}jy.exports=uB});var Bi=u((r$,Wy)=>{"use strict";var pB=Ni(),cB=Ar();function lB(e,t){t=pB(t,e);for(var r=0,a=t.length;e!=null&&r<a;)e=e[cB(t[r++])];return r&&r==a?e:void 0}Wy.exports=lB});var Ky=u((a$,$y)=>{"use strict";var dB=Bi();function fB(e,t,r){var a=e==null?void 0:dB(e,t);return a===void 0?r:a}$y.exports=fB});var Yy=u((n$,Vy)=>{"use strict";function mB(e,t){return e!=null&&t in Object(e)}Vy.exports=mB});var zy=u((o$,Hy)=>{"use strict";var gB=Ni(),hB=zr(),yB=re(),AB=la(),bB=an(),IB=Ar();function SB(e,t,r){t=gB(t,e);for(var a=-1,n=t.length,o=!1;++a<n;){var s=IB(t[a]);if(!(o=e!=null&&r(e,s)))break;e=e[s]}return o||++a!=n?o:(n=e==null?0:e.length,!!n&&bB(n)&&AB(s,n)&&(yB(e)||hB(e)))}Hy.exports=SB});var Xy=u((s$,Jy)=>{"use strict";var wB=Yy(),TB=zy();function vB(e,t){return e!=null&&TB(e,t,wB)}Jy.exports=vB});var eA=u((i$,Zy)=>{"use strict";var EB=Ci(),RB=Ky(),_B=Xy(),xB=Fn(),CB=Li(),LB=Oi(),OB=Ar(),PB=1,UB=2;function qB(e,t){return xB(e)&&CB(t)?LB(OB(e),t):function(r){var a=RB(r,e);return a===void 0&&a===t?_B(r,e):EB(t,a,PB|UB)}}Zy.exports=qB});var rA=u((u$,tA)=>{"use strict";function DB(e){return function(t){return t?.[e]}}tA.exports=DB});var nA=u((p$,aA)=>{"use strict";var NB=Bi();function BB(e){return function(t){return NB(t,e)}}aA.exports=BB});var sA=u((c$,oA)=>{"use strict";var MB=rA(),GB=nA(),kB=Fn(),FB=Ar();function QB(e){return kB(e)?MB(FB(e)):GB(e)}oA.exports=QB});var Mi=u((l$,iA)=>{"use strict";var jB=Ry(),WB=eA(),$B=Jr(),KB=re(),VB=sA();function YB(e){return typeof e=="function"?e:e==null?$B:typeof e=="object"?KB(e)?WB(e[0],e[1]):jB(e):VB(e)}iA.exports=YB});var pA=u((d$,uA)=>{"use strict";var HB=vi(),zB=Mi(),JB=1;function XB(e){return zB(typeof e=="function"?e:HB(e,JB))}uA.exports=XB});var lA=u((f$,cA)=>{"use strict";var ZB=vo();function eM(e){var t=e==null?0:e.length;return t?ZB(e,1):[]}cA.exports=eM});var fA=u((m$,dA)=>{"use strict";var tM=lA(),rM=Eo(),aM=Xa();function nM(e){return aM(rM(e,void 0,tM),e+"")}dA.exports=nM});var gA=u((g$,mA)=>{"use strict";var oM=Bn(),sM=fA(),iM=256,uM=sM(function(e,t){return oM(e,iM,void 0,void 0,void 0,t)});mA.exports=uM});var yA=u((h$,hA)=>{"use strict";var pM=qi(),cM=tr(),lM=re(),dM=mr(),fM=Ui(),mM=Ar(),gM=Di();function hM(e){return lM(e)?pM(e,mM):dM(e)?[e]:cM(fM(gM(e)))}hA.exports=hM});var bA=u((y$,AA)=>{"use strict";AA.exports={ary:Ug(),assign:mi(),clone:Qh(),curry:Wh(),forEach:Dn(),isArray:re(),isError:Kh(),isFunction:Xr(),isWeakMap:Yh(),iteratee:pA(),keys:fi(),rearg:gA(),toInteger:pi(),toPath:yA()}});var SA=u((A$,IA)=>{"use strict";var yM=um(),AM=bA();function bM(e,t,r){return yM(AM,e,t,r)}IA.exports=bM});var Gi=u((b$,TA)=>{"use strict";var IM=SA(),wA=IM("merge",zo());wA.placeholder=Ks();TA.exports=wA});var vb=u((lK,Tb)=>{"use strict";function kM(e,t,r,a){for(var n=-1,o=e==null?0:e.length;++n<o;){var s=e[n];t(a,s,r(s),e)}return a}Tb.exports=kM});var Rb=u((dK,Eb)=>{"use strict";var FM=Go(),QM=gr();function jM(e,t){return e&&FM(e,t,QM)}Eb.exports=jM});var xb=u((fK,_b)=>{"use strict";var WM=Xt();function $M(e,t){return function(r,a){if(r==null)return r;if(!WM(r))return e(r,a);for(var n=r.length,o=t?n:-1,s=Object(r);(t?o--:++o<n)&&a(s[o],o,s)!==!1;);return r}}_b.exports=$M});var Lb=u((mK,Cb)=>{"use strict";var KM=Rb(),VM=xb(),YM=VM(KM);Cb.exports=YM});var Pb=u((gK,Ob)=>{"use strict";var HM=Lb();function zM(e,t,r,a){return HM(e,function(n,o,s){t(a,n,r(n),s)}),a}Ob.exports=zM});var qb=u((hK,Ub)=>{"use strict";var JM=vb(),XM=Pb(),ZM=Mi(),eG=re();function tG(e,t){return function(r,a){var n=eG(r)?JM:XM,o=t?t():{};return n(r,e,ZM(a,2),o)}}Ub.exports=tG});var Nb=u((yK,Db)=>{"use strict";var rG=na(),aG=qb(),nG=Object.prototype,oG=nG.hasOwnProperty,sG=aG(function(e,t,r){oG.call(e,r)?e[r].push(t):rG(e,r,[t])});Db.exports=sG});var LG={};w(LG,{Method:()=>ao,ai:()=>_u,api:()=>tu,auditLogs:()=>yt,automations:()=>vn,backups:()=>Ee,branding:()=>hn,constants:()=>Wr,environmentVariables:()=>Ye,features:()=>Ue,groups:()=>j,init:()=>rm,licensing:()=>je,logger:()=>Bt,mappers:()=>V,middleware:()=>Ki,plugins:()=>En,publicApi:()=>xn,quotas:()=>Ke,scimGroups:()=>br,scimUsers:()=>fe,sdk:()=>Fi,users:()=>at,utils:()=>Vt});module.exports=xI(LG);var ao=(o=>(o.POST="POST",o.GET="GET",o.PATCH="PATCH",o.DELETE="DELETE",o.PUT="PUT",o))(ao||{});var Fi={};w(Fi,{ai:()=>fs,auditLogs:()=>yt,automations:()=>vn,backups:()=>Ee,branding:()=>hn,environmentVariables:()=>Ye,features:()=>Ue,groups:()=>j,init:()=>rm,licensing:()=>je,logger:()=>Bt,plugins:()=>En,publicApi:()=>xn,quotas:()=>Ke,scimGroups:()=>br,scimUsers:()=>fe,users:()=>at,utils:()=>Vt});var hn={};w(hn,{getBrandingConfig:()=>Ax});var Ue={};w(Ue,{checkBackups:()=>ye,checkFeature:()=>mn,checkFeatures:()=>is,checkSCIM:()=>ls,isAppBuildersEnabled:()=>Ot,isAuditLogsEnabled:()=>gn,isBackupsEnabled:()=>us,isBrandingEnabled:()=>ps,isEnforceableSSO:()=>hf,isExpandedPublicApiEnabled:()=>tt,isPWAEnabled:()=>fx,isSSOEnforced:()=>mx,isSyncAutomationsEnabled:()=>lx,isTriggerAutomationRunEnabled:()=>dx,isUserGroupsEnabled:()=>cs,isViewPermissionEnabled:()=>gx,isViewReadonlyColumnsEnabled:()=>hx});var se=require("@budibase/types"),et=require("@budibase/backend-core");var je={};w(je,{cache:()=>Oe,client:()=>ft,features:()=>Ya,getFreeLicense:()=>ns,getLicense:()=>rs,getLicenseFromKey:()=>as,keys:()=>ss,offline:()=>ln,quotas:()=>Ha});var Oe={};w(Oe,{getCachedLicense:()=>mf,invalidate:()=>gf,refresh:()=>xt});var Da=require("@budibase/backend-core"),vr,CI=async()=>{vr=await Da.RedisClient.init(Da.redis.utils.Databases.LICENSES)},LI=async()=>{vr&&await vr.finish()};process.on("exit",async()=>{await LI()});var no=async()=>(vr||await CI(),vr);var ft={};w(ft,{activateLicenseKey:()=>bo,getLicense:()=>$t,getLicenseFromKey:()=>Ao,triggerQuota:()=>gS});var Nu=P(require("node-fetch"));var Bu=require("@budibase/backend-core"),oo=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";Bu.logging.correlation.setHeader(a.headers);let o={method:t,body:n?JSON.stringify(a.body):a.body,headers:a.headers,credentials:"include"};return(0,Nu.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}},so=oo;var $a=require("@budibase/types"),O=require("@budibase/backend-core");var ke={};w(ke,{bustCache:()=>po,getCurrentUsageValues:()=>$u,getQuotaUsage:()=>Tt,setAllUsage:()=>lo,setAppUsageValue:()=>co,setUsage:()=>Qu,setUsagePerApp:()=>ju,utils:()=>_r});var ne=require("@budibase/types"),ce=require("@budibase/backend-core");var _r={};w(_r,{generateBaseQuotaUsage:()=>Na,generateNewMonthlyQuotas:()=>Rr,generateNewQuotaUsage:()=>uo,getBreakdownName:()=>Ma,getCurrentMonthString:()=>ct,getQuotaDocId:()=>Er,setCurrentMonth:()=>Ba,setQuotaReset:()=>io});var Y=require("@budibase/types"),wt=require("@budibase/backend-core"),Er=()=>wt.context.isSelfHostUsingCloud()?`quota_usage_${wt.context.getTenantId()}`:wt.db.StaticDatabases.GLOBAL.docs.usageQuota,Mu=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},io=e=>{e.quotaReset=Mu()},ct=()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},Na=()=>({usageQuota:{[Y.StaticQuotaName.APPS]:0,[Y.StaticQuotaName.ROWS]:0,[Y.StaticQuotaName.PLUGINS]:0,[Y.StaticQuotaName.USERS]:0,[Y.StaticQuotaName.CREATORS]:0,[Y.StaticQuotaName.USER_GROUPS]:0,[Y.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[ct()]:Rr()}}),uo=()=>{let e={_id:Er(),quotaReset:Mu(),...Na(),apps:{}};return Ba(e),e},Rr=()=>({[Y.MonthlyQuotaName.QUERIES]:0,[Y.MonthlyQuotaName.AUTOMATIONS]:0,[Y.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,[Y.MonthlyQuotaName.ACTIONS]:0,triggers:{}}),Ba=e=>{let t=ct();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=Rr()),e.monthly.current=e.monthly[t]},Ma=(e,t)=>{if(!(!t||!e))switch(e){case Y.MonthlyQuotaName.AUTOMATIONS:return Y.BreakdownQuotaName.AUTOMATIONS;case Y.MonthlyQuotaName.QUERIES:return wt.db.isTableId(t)?Y.BreakdownQuotaName.ROW_QUERIES:wt.db.isDatasourceId(t)?Y.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}};var Gu=ce.Duration.fromSeconds(60).toMs(),{Writethrough:ku}=ce.cache.writethrough;function PI(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 Ga=()=>ce.tenancy.isSelfHostUsingCloud()?new ku(ce.tenancy.getSelfHostCloudDB(),Gu):new ku(ce.tenancy.getGlobalDB(),Gu);async function po(e=0){let r=Ga(),a=Er(),n=await r.tryGet(a);n&&n._rev&&await r.remove(a,n._rev).catch(async o=>{if(e<1)return await po(e+1);throw o})}var Tt=async()=>{let e=Ga(),t=await e.tryGet(Er());if(!t){t=uo();let{rev:r}=await e.put(t);t._rev=r}return Ba(t),io(t),PI(t)},Qu=async(e,t,r)=>lo({name:t,type:r,values:{total:e}}),ju=async(e,t,r)=>{let a=Ga(),n=await Tt(),o=Object.values(e).reduce((i,p)=>i+p,0);for(let[i,p]of Object.entries(e))n=Wu(n,t,r,{total:o,app:p},{appId:i});let s=await a.put(n);return n._rev=s.rev,n},UI=(e,t,r,a)=>{let n=Ma(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},co=(e,t,r,a={},n)=>{let o;try{o=ce.db.getProdAppID(a?.appId||ce.context.getAppId())}catch{}if(!o||!n.app||!ne.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[o]||(e.apps={...e.apps,[o]:Na()});let s=e.apps[o];switch(r){case ne.QuotaUsageType.STATIC:s.usageQuota[t]=n.app;break;case ne.QuotaUsageType.MONTHLY:{let i=ct(),p=t,m=s.monthly[i];m||(s.monthly[i]=Rr(),m=s.monthly[i]),m[p]=n.app,ne.BREAKDOWN_QUOTA_NAMES.includes(p)&&a?.id&&(m=UI(m,p,a.id,n));break}}return e},Fu=(e,t,r,a)=>{if(!ne.APP_QUOTA_NAMES.includes(r))return{};let n;try{n=ce.db.getProdAppID(ce.context.getAppId())}catch{}if(!n||!e.apps||!e.apps[n])return{app:0};let o=e.apps[n];switch(t){case ne.QuotaUsageType.STATIC:if(o.usageQuota?.[r])return{app:o.usageQuota[r]};break;case ne.QuotaUsageType.MONTHLY:{let s=ct(),i=r;if(!o.monthly?.[s]?.[i])break;let p=o.monthly[s],m=p[i],f,h=Ma(i,a);return h&&a&&p.breakdown?.[h]&&(f=p.breakdown[h]?.values[a]),{app:m,breakdown:f||0}}}return{app:0}},qI=(e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},DI=(e,t,r,a)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),a&&(r.monthly[t].triggers[e]=a)},Wu=(e,t,r,a,n={})=>{if(r===ne.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=a.total,qI(t,e,a.triggers);else if(r===ne.QuotaUsageType.MONTHLY){t=t;let o=ct();e.monthly[o][t]=a.total,DI(t,o,e,a.triggers)}else throw new Error(`Invalid usage type: ${r}`);return co(e,t,r,n,a)},lo=async e=>{let t=Array.isArray(e)?e:[e],r=Ga(),a=await Tt();for(let o of t)a=Wu(a,o.name,o.type,o.values,o.opts);let n=await r.put(a,0);return a._rev=n.rev,a},$u=async(e,t,r)=>{let a=await Tt(),n=0,o={};switch(e){case ne.QuotaUsageType.STATIC:if(a.usageQuota[t]){let s=t;n=a.usageQuota[s],o=Fu(a,e,t,r)}break;case ne.QuotaUsageType.MONTHLY:{let s=ct(),i=t;a.monthly[s][i]&&(n=a.monthly[s][i],o=Fu(a,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return ne.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 we={};w(we,{destroy:()=>MI,get:()=>fo,save:()=>BI});var lt=require("@budibase/backend-core"),NI=()=>({_id:lt.StaticDatabases.GLOBAL.docs.licenseInfo}),BI=async e=>{let t=await fo();t={...t,...e};let a=await lt.tenancy.getGlobalDB().put(t);return t._rev=a.rev,t},fo=async()=>{let e=lt.tenancy.getGlobalDB();try{return await e.get(lt.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return NI();throw t}},MI=async()=>{let e=lt.tenancy.getGlobalDB(),t=await fo();t&&t._rev&&await e.remove(lt.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)};var M={};w(M,{bulkSave:()=>zI,destroy:()=>JI,fetch:()=>KI,generateUserGroupID:()=>WI,get:()=>VI,getBulk:()=>YI,getByName:()=>mo,getGroupUsers:()=>Fa,getGroupUsersParams:()=>zu,getUserGroupsParams:()=>Hu,save:()=>HI});var N=require("@budibase/backend-core");var Le=require("@budibase/types"),Qt=require("@budibase/backend-core");async function Ku(){let e=Qt.sql.designDoc.base("type");e.sql.tables={[Le.AUDIT_LOG_TYPE]:{fields:{appId:Le.SQLiteType.TEXT,event:Le.SQLiteType.TEXT,userId:Le.SQLiteType.TEXT,timestamp:Le.SQLiteType.TEXT,metadata:Le.SQLiteType.TEXT,name:Le.SQLiteType.TEXT,type:Le.SQLiteType.TEXT,fallback:Le.SQLiteType.TEXT}}};let t=Qt.context.getAuditLogsDB(),r;try{r=await t.get(Qt.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(a){if(a.status===404)r=e;else throw a}await t.put(r)}var ka=require("@budibase/backend-core"),{ViewName:GI,SEPARATOR:kI,DocumentType:FI,createView:QI}=ka.db,jI=FI.USER+kI;async function Vu(){let e=ka.tenancy.getGlobalDB(),t=`function(doc) {
4
- if (doc._id.startsWith("${jI}") && Array.isArray(doc.userGroups)) {
3
+ `)}Qm.exports=NO});var Nn=u((jj,Wm)=>{"use strict";function BO(e,t){for(var r=-1,a=e==null?0:e.length;++r<a&&t(e[r],r,e)!==!1;);return e}Wm.exports=BO});var Km=u((Wj,$m)=>{"use strict";var MO=Nn(),GO=Uo(),kO=1,FO=2,QO=8,jO=16,WO=32,$O=64,KO=128,VO=256,YO=512,HO=[["ary",KO],["bind",kO],["bindKey",FO],["curry",QO],["curryRight",jO],["flip",YO],["partial",WO],["partialRight",$O],["rearg",VO]];function zO(e,t){return MO(HO,function(r){var a="_."+r[0];t&r[1]&&!GO(e,a)&&e.push(a)}),e.sort()}$m.exports=zO});var oi=u(($j,Vm)=>{"use strict";var JO=Fm(),XO=jm(),ZO=Xa(),eL=Km();function tL(e,t,r){var a=t+"";return ZO(e,XO(a,eL(JO(a),r)))}Vm.exports=tL});var si=u((Kj,zm)=>{"use strict";var rL=Mm(),aL=ni(),nL=oi(),oL=1,sL=2,iL=4,uL=8,Ym=32,Hm=64;function pL(e,t,r,a,n,o,s,i,p,m){var f=t&uL,h=f?s:void 0,g=f?void 0:s,S=f?o:void 0,O=f?void 0:o;t|=f?Ym:Hm,t&=~(f?Hm:Ym),t&iL||(t&=~(oL|sL));var _=[e,t,n,S,h,O,g,i,p,m],R=r.apply(void 0,_);return rL(e)&&aL(R,_),R.placeholder=a,nL(R,e,t)}zm.exports=pL});var ii=u((Vj,Jm)=>{"use strict";function cL(e){var t=e;return t.placeholder}Jm.exports=cL});var Zm=u((Yj,Xm)=>{"use strict";var lL=tr(),dL=la(),fL=Math.min;function mL(e,t){for(var r=e.length,a=fL(t.length,r),n=lL(e);a--;){var o=t[a];e[a]=dL(o,r)?n[o]:void 0}return e}Xm.exports=mL});var Bn=u((Hj,tg)=>{"use strict";var eg="__lodash_placeholder__";function gL(e,t){for(var r=-1,a=e.length,n=0,o=[];++r<a;){var s=e[r];(s===t||s===eg)&&(e[r]=eg,o[n++]=r)}return o}tg.exports=gL});var ui=u((zj,ng)=>{"use strict";var hL=ei(),yL=ti(),AL=Sm(),rg=wa(),bL=si(),IL=ii(),SL=Zm(),wL=Bn(),TL=oe(),vL=1,EL=2,RL=8,_L=16,xL=128,CL=512;function ag(e,t,r,a,n,o,s,i,p,m){var f=t&xL,h=t&vL,g=t&EL,S=t&(RL|_L),O=t&CL,_=g?void 0:rg(e);function R(){for(var E=arguments.length,U=Array(E),Oe=E;Oe--;)U[Oe]=arguments[Oe];if(S)var Se=IL(R),pt=AL(U,Se);if(a&&(U=hL(U,a,n,S)),o&&(U=yL(U,o,s,S)),E-=pt,S&&E<m){var Ft=wL(U,Se);return bL(e,t,ag,R.placeholder,r,U,Ft,i,p,m-E)}var Sr=h?r:this,wr=g?Sr[e]:e;return E=U.length,i?U=SL(U,i):O&&E>1&&U.reverse(),f&&p<E&&(U.length=p),this&&this!==TL&&this instanceof R&&(wr=_||rg(wr)),wr.apply(Sr,U)}return R}ng.exports=ag});var sg=u((Jj,og)=>{"use strict";var OL=Ja(),LL=wa(),PL=ui(),UL=si(),qL=ii(),DL=Bn(),NL=oe();function BL(e,t,r){var a=LL(e);function n(){for(var o=arguments.length,s=Array(o),i=o,p=qL(n);i--;)s[i]=arguments[i];var m=o<3&&s[0]!==p&&s[o-1]!==p?[]:DL(s,p);if(o-=m.length,o<r)return UL(e,t,PL,n.placeholder,void 0,s,m,void 0,void 0,r-o);var f=this&&this!==NL&&this instanceof n?a:e;return OL(f,this,s)}return n}og.exports=BL});var ug=u((Xj,ig)=>{"use strict";var ML=Ja(),GL=wa(),kL=oe(),FL=1;function QL(e,t,r,a){var n=t&FL,o=GL(e);function s(){for(var i=-1,p=arguments.length,m=-1,f=a.length,h=Array(f+p),g=this&&this!==kL&&this instanceof s?o:e;++m<f;)h[m]=a[m];for(;p--;)h[m++]=arguments[++i];return ML(g,n?r:this,h)}return s}ig.exports=QL});var mg=u((Zj,fg)=>{"use strict";var jL=ei(),WL=ti(),pg=Bn(),cg="__lodash_placeholder__",pi=1,$L=2,KL=4,lg=8,Ta=128,dg=256,VL=Math.min;function YL(e,t){var r=e[1],a=t[1],n=r|a,o=n<(pi|$L|Ta),s=a==Ta&&r==lg||a==Ta&&r==dg&&e[7].length<=t[8]||a==(Ta|dg)&&t[7].length<=t[8]&&r==lg;if(!(o||s))return e;a&pi&&(e[2]=t[2],n|=r&pi?0:KL);var i=t[3];if(i){var p=e[3];e[3]=p?jL(p,i,t[4]):i,e[4]=p?pg(e[3],cg):t[4]}return i=t[5],i&&(p=e[5],e[5]=p?WL(p,i,t[6]):i,e[6]=p?pg(e[5],cg):t[6]),i=t[7],i&&(e[7]=i),a&Ta&&(e[8]=e[8]==null?t[8]:VL(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=n,e}fg.exports=YL});var hg=u((eW,gg)=>{"use strict";var HL=/\s/;function zL(e){for(var t=e.length;t--&&HL.test(e.charAt(t)););return t}gg.exports=zL});var Ag=u((tW,yg)=>{"use strict";var JL=hg(),XL=/^\s+/;function ZL(e){return e&&e.slice(0,JL(e)+1).replace(XL,"")}yg.exports=ZL});var mr=u((rW,bg)=>{"use strict";var eP=mt(),tP=he(),rP="[object Symbol]";function aP(e){return typeof e=="symbol"||tP(e)&&eP(e)==rP}bg.exports=aP});var Tg=u((aW,wg)=>{"use strict";var nP=Ag(),Ig=Ee(),oP=mr(),Sg=0/0,sP=/^[-+]0x[0-9a-f]+$/i,iP=/^0b[01]+$/i,uP=/^0o[0-7]+$/i,pP=parseInt;function cP(e){if(typeof e=="number")return e;if(oP(e))return Sg;if(Ig(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=Ig(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=nP(e);var r=iP.test(e);return r||uP.test(e)?pP(e.slice(2),r?2:8):sP.test(e)?Sg:+e}wg.exports=cP});var Rg=u((nW,Eg)=>{"use strict";var lP=Tg(),vg=1/0,dP=17976931348623157e292;function fP(e){if(!e)return e===0?e:0;if(e=lP(e),e===vg||e===-vg){var t=e<0?-1:1;return t*dP}return e===e?e:0}Eg.exports=fP});var ci=u((oW,_g)=>{"use strict";var mP=Rg();function gP(e){var t=mP(e),r=t%1;return t===t?r?t-r:t:0}_g.exports=gP});var Mn=u((sW,Pg)=>{"use strict";var hP=Zs(),yP=ym(),AP=sg(),bP=ui(),IP=ug(),SP=ri(),wP=mg(),TP=ni(),vP=oi(),xg=ci(),EP="Expected a function",Cg=1,RP=2,li=8,di=16,fi=32,Og=64,Lg=Math.max;function _P(e,t,r,a,n,o,s,i){var p=t&RP;if(!p&&typeof e!="function")throw new TypeError(EP);var m=a?a.length:0;if(m||(t&=~(fi|Og),a=n=void 0),s=s===void 0?s:Lg(xg(s),0),i=i===void 0?i:xg(i),m-=n?n.length:0,t&Og){var f=a,h=n;a=n=void 0}var g=p?void 0:SP(e),S=[e,t,r,a,n,f,h,o,s,i];if(g&&wP(S,g),e=S[0],t=S[1],r=S[2],a=S[3],n=S[4],i=S[9]=S[9]===void 0?p?0:e.length:Lg(S[9]-m,0),!i&&t&(li|di)&&(t&=~(li|di)),!t||t==Cg)var O=yP(e,t,r);else t==li||t==di?O=AP(e,t,i):(t==fi||t==(Cg|fi))&&!n.length?O=IP(e,t,r,a):O=bP.apply(void 0,S);var _=g?hP:TP;return vP(_(O,S),e,t)}Pg.exports=_P});var qg=u((iW,Ug)=>{"use strict";var xP=Mn(),CP=128;function OP(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,xP(e,CP,void 0,void 0,void 0,void 0,t)}Ug.exports=OP});var Ng=u((uW,Dg)=>{"use strict";var LP=Wo(),PP=LP(Object.keys,Object);Dg.exports=PP});var mi=u((pW,Bg)=>{"use strict";var UP=sn(),qP=Ng(),DP=Object.prototype,NP=DP.hasOwnProperty;function BP(e){if(!UP(e))return qP(e);var t=[];for(var r in Object(e))NP.call(e,r)&&r!="constructor"&&t.push(r);return t}Bg.exports=BP});var gr=u((cW,Mg)=>{"use strict";var MP=zo(),GP=mi(),kP=Xt();function FP(e){return kP(e)?MP(e):GP(e)}Mg.exports=FP});var gi=u((lW,Gg)=>{"use strict";var QP=nr(),jP=gr();function WP(e,t){return e&&QP(t,jP(t),e)}Gg.exports=WP});var Fg=u((dW,kg)=>{"use strict";var $P=nr(),KP=or();function VP(e,t){return e&&$P(t,KP(t),e)}kg.exports=VP});var jg=u((fW,Qg)=>{"use strict";function YP(e,t){for(var r=-1,a=e==null?0:e.length,n=0,o=[];++r<a;){var s=e[r];t(s,r,e)&&(o[n++]=s)}return o}Qg.exports=YP});var hi=u((mW,Wg)=>{"use strict";function HP(){return[]}Wg.exports=HP});var Gn=u((gW,Kg)=>{"use strict";var zP=jg(),JP=hi(),XP=Object.prototype,ZP=XP.propertyIsEnumerable,$g=Object.getOwnPropertySymbols,eU=$g?function(e){return e==null?[]:(e=Object(e),zP($g(e),function(t){return ZP.call(e,t)}))}:JP;Kg.exports=eU});var Yg=u((hW,Vg)=>{"use strict";var tU=nr(),rU=Gn();function aU(e,t){return tU(e,rU(e),t)}Vg.exports=aU});var yi=u((yW,Hg)=>{"use strict";var nU=za(),oU=on(),sU=Gn(),iU=hi(),uU=Object.getOwnPropertySymbols,pU=uU?function(e){for(var t=[];e;)nU(t,sU(e)),e=oU(e);return t}:iU;Hg.exports=pU});var Jg=u((AW,zg)=>{"use strict";var cU=nr(),lU=yi();function dU(e,t){return cU(e,lU(e),t)}zg.exports=dU});var Ai=u((bW,Xg)=>{"use strict";var fU=za(),mU=re();function gU(e,t,r){var a=t(e);return mU(e)?a:fU(a,r(e))}Xg.exports=gU});var bi=u((IW,Zg)=>{"use strict";var hU=Ai(),yU=Gn(),AU=gr();function bU(e){return hU(e,AU,yU)}Zg.exports=bU});var th=u((SW,eh)=>{"use strict";var IU=Ai(),SU=yi(),wU=or();function TU(e){return IU(e,wU,SU)}eh.exports=TU});var ah=u((wW,rh)=>{"use strict";var vU=gt(),EU=oe(),RU=vU(EU,"DataView");rh.exports=RU});var oh=u((TW,nh)=>{"use strict";var _U=gt(),xU=oe(),CU=_U(xU,"Promise");nh.exports=CU});var yr=u((vW,dh)=>{"use strict";var Ii=ah(),Si=Za(),wi=oh(),Ti=Do(),vi=Js(),lh=mt(),hr=xo(),sh="[object Map]",OU="[object Object]",ih="[object Promise]",uh="[object Set]",ph="[object WeakMap]",ch="[object DataView]",LU=hr(Ii),PU=hr(Si),UU=hr(wi),qU=hr(Ti),DU=hr(vi),Nt=lh;(Ii&&Nt(new Ii(new ArrayBuffer(1)))!=ch||Si&&Nt(new Si)!=sh||wi&&Nt(wi.resolve())!=ih||Ti&&Nt(new Ti)!=uh||vi&&Nt(new vi)!=ph)&&(Nt=function(e){var t=lh(e),r=t==OU?e.constructor:void 0,a=r?hr(r):"";if(a)switch(a){case LU:return ch;case PU:return sh;case UU:return ih;case qU:return uh;case DU:return ph}return t});dh.exports=Nt});var mh=u((EW,fh)=>{"use strict";var NU=Object.prototype,BU=NU.hasOwnProperty;function MU(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&BU.call(e,"index")&&(r.index=e.index,r.input=e.input),r}fh.exports=MU});var hh=u((RW,gh)=>{"use strict";var GU=nn();function kU(e,t){var r=t?GU(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}gh.exports=kU});var Ah=u((_W,yh)=>{"use strict";var FU=/\w*$/;function QU(e){var t=new e.constructor(e.source,FU.exec(e));return t.lastIndex=e.lastIndex,t}yh.exports=QU});var Th=u((xW,wh)=>{"use strict";var bh=xt(),Ih=bh?bh.prototype:void 0,Sh=Ih?Ih.valueOf:void 0;function jU(e){return Sh?Object(Sh.call(e)):{}}wh.exports=jU});var Eh=u((CW,vh)=>{"use strict";var WU=nn(),$U=hh(),KU=Ah(),VU=Th(),YU=jo(),HU="[object Boolean]",zU="[object Date]",JU="[object Map]",XU="[object Number]",ZU="[object RegExp]",eq="[object Set]",tq="[object String]",rq="[object Symbol]",aq="[object ArrayBuffer]",nq="[object DataView]",oq="[object Float32Array]",sq="[object Float64Array]",iq="[object Int8Array]",uq="[object Int16Array]",pq="[object Int32Array]",cq="[object Uint8Array]",lq="[object Uint8ClampedArray]",dq="[object Uint16Array]",fq="[object Uint32Array]";function mq(e,t,r){var a=e.constructor;switch(t){case aq:return WU(e);case HU:case zU:return new a(+e);case nq:return $U(e,r);case oq:case sq:case iq:case uq:case pq:case cq:case lq:case dq:case fq:return YU(e,r);case JU:return new a;case XU:case tq:return new a(e);case ZU:return KU(e);case eq:return new a;case rq:return VU(e)}}vh.exports=mq});var _h=u((OW,Rh)=>{"use strict";var gq=yr(),hq=he(),yq="[object Map]";function Aq(e){return hq(e)&&gq(e)==yq}Rh.exports=Aq});var Lh=u((LW,Oh)=>{"use strict";var bq=_h(),Iq=un(),xh=pn(),Ch=xh&&xh.isMap,Sq=Ch?Iq(Ch):bq;Oh.exports=Sq});var Uh=u((PW,Ph)=>{"use strict";var wq=yr(),Tq=he(),vq="[object Set]";function Eq(e){return Tq(e)&&wq(e)==vq}Ph.exports=Eq});var Bh=u((UW,Nh)=>{"use strict";var Rq=Uh(),_q=un(),qh=pn(),Dh=qh&&qh.isSet,xq=Dh?_q(Dh):Rq;Nh.exports=xq});var Ei=u((qW,Fh)=>{"use strict";var Cq=aa(),Oq=Nn(),Lq=Ho(),Pq=gi(),Uq=Fg(),qq=Fo(),Dq=tr(),Nq=Yg(),Bq=Jg(),Mq=bi(),Gq=th(),kq=yr(),Fq=mh(),Qq=Eh(),jq=$o(),Wq=re(),$q=ua(),Kq=Lh(),Vq=Ee(),Yq=Bh(),Hq=gr(),zq=or(),Jq=1,Xq=2,Zq=4,Mh="[object Arguments]",eD="[object Array]",tD="[object Boolean]",rD="[object Date]",aD="[object Error]",Gh="[object Function]",nD="[object GeneratorFunction]",oD="[object Map]",sD="[object Number]",kh="[object Object]",iD="[object RegExp]",uD="[object Set]",pD="[object String]",cD="[object Symbol]",lD="[object WeakMap]",dD="[object ArrayBuffer]",fD="[object DataView]",mD="[object Float32Array]",gD="[object Float64Array]",hD="[object Int8Array]",yD="[object Int16Array]",AD="[object Int32Array]",bD="[object Uint8Array]",ID="[object Uint8ClampedArray]",SD="[object Uint16Array]",wD="[object Uint32Array]",D={};D[Mh]=D[eD]=D[dD]=D[fD]=D[tD]=D[rD]=D[mD]=D[gD]=D[hD]=D[yD]=D[AD]=D[oD]=D[sD]=D[kh]=D[iD]=D[uD]=D[pD]=D[cD]=D[bD]=D[ID]=D[SD]=D[wD]=!0;D[aD]=D[Gh]=D[lD]=!1;function kn(e,t,r,a,n,o){var s,i=t&Jq,p=t&Xq,m=t&Zq;if(r&&(s=n?r(e,a,n,o):r(e)),s!==void 0)return s;if(!Vq(e))return e;var f=Wq(e);if(f){if(s=Fq(e),!i)return Dq(e,s)}else{var h=kq(e),g=h==Gh||h==nD;if($q(e))return qq(e,i);if(h==kh||h==Mh||g&&!n){if(s=p||g?{}:jq(e),!i)return p?Bq(e,Uq(s,e)):Nq(e,Pq(s,e))}else{if(!D[h])return n?e:{};s=Qq(e,h,i)}}o||(o=new Cq);var S=o.get(e);if(S)return S;o.set(e,s),Yq(e)?e.forEach(function(R){s.add(kn(R,t,r,R,e,o))}):Kq(e)&&e.forEach(function(R,E){s.set(E,kn(R,t,r,E,e,o))});var O=m?p?Gq:Mq:p?zq:Hq,_=f?void 0:O(e);return Oq(_||e,function(R,E){_&&(E=R,R=e[E]),Lq(s,E,kn(R,t,r,E,e,o))}),s}Fh.exports=kn});var jh=u((DW,Qh)=>{"use strict";var TD=Ei(),vD=4;function ED(e){return TD(e,vD)}Qh.exports=ED});var $h=u((NW,Wh)=>{"use strict";var RD=Mn(),_D=8;function Ri(e,t,r){t=r?void 0:t;var a=RD(e,_D,void 0,void 0,void 0,void 0,void 0,t);return a.placeholder=Ri.placeholder,a}Ri.placeholder={};Wh.exports=Ri});var Vh=u((BW,Kh)=>{"use strict";var xD=mt(),CD=he(),OD=Ko(),LD="[object DOMException]",PD="[object Error]";function UD(e){if(!CD(e))return!1;var t=xD(e);return t==PD||t==LD||typeof e.message=="string"&&typeof e.name=="string"&&!OD(e)}Kh.exports=UD});var Hh=u((MW,Yh)=>{"use strict";var qD=yr(),DD=he(),ND="[object WeakMap]";function BD(e){return DD(e)&&qD(e)==ND}Yh.exports=BD});var Jh=u((GW,zh)=>{"use strict";function MD(e,t){for(var r=-1,a=e==null?0:e.length;++r<a;)if(t(e[r],r,e))return!0;return!1}zh.exports=MD});var _i=u((kW,Xh)=>{"use strict";var GD=Po(),kD=Jh(),FD=qo(),QD=1,jD=2;function WD(e,t,r,a,n,o){var s=r&QD,i=e.length,p=t.length;if(i!=p&&!(s&&p>i))return!1;var m=o.get(e),f=o.get(t);if(m&&f)return m==t&&f==e;var h=-1,g=!0,S=r&jD?new GD:void 0;for(o.set(e,t),o.set(t,e);++h<i;){var O=e[h],_=t[h];if(a)var R=s?a(_,O,h,t,e,o):a(O,_,h,e,t,o);if(R!==void 0){if(R)continue;g=!1;break}if(S){if(!kD(t,function(E,U){if(!FD(S,U)&&(O===E||n(O,E,r,a,o)))return S.push(U)})){g=!1;break}}else if(!(O===_||n(O,_,r,a,o))){g=!1;break}}return o.delete(e),o.delete(t),g}Xh.exports=WD});var ey=u((FW,Zh)=>{"use strict";function $D(e){var t=-1,r=Array(e.size);return e.forEach(function(a,n){r[++t]=[n,a]}),r}Zh.exports=$D});var oy=u((QW,ny)=>{"use strict";var ty=xt(),ry=Qo(),KD=Ht(),VD=_i(),YD=ey(),HD=rn(),zD=1,JD=2,XD="[object Boolean]",ZD="[object Date]",eN="[object Error]",tN="[object Map]",rN="[object Number]",aN="[object RegExp]",nN="[object Set]",oN="[object String]",sN="[object Symbol]",iN="[object ArrayBuffer]",uN="[object DataView]",ay=ty?ty.prototype:void 0,xi=ay?ay.valueOf:void 0;function pN(e,t,r,a,n,o,s){switch(r){case uN:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case iN:return!(e.byteLength!=t.byteLength||!o(new ry(e),new ry(t)));case XD:case ZD:case rN:return KD(+e,+t);case eN:return e.name==t.name&&e.message==t.message;case aN:case oN:return e==t+"";case tN:var i=YD;case nN:var p=a&zD;if(i||(i=HD),e.size!=t.size&&!p)return!1;var m=s.get(e);if(m)return m==t;a|=JD,s.set(e,t);var f=VD(i(e),i(t),a,n,o,s);return s.delete(e),f;case sN:if(xi)return xi.call(e)==xi.call(t)}return!1}ny.exports=pN});var uy=u((jW,iy)=>{"use strict";var sy=bi(),cN=1,lN=Object.prototype,dN=lN.hasOwnProperty;function fN(e,t,r,a,n,o){var s=r&cN,i=sy(e),p=i.length,m=sy(t),f=m.length;if(p!=f&&!s)return!1;for(var h=p;h--;){var g=i[h];if(!(s?g in t:dN.call(t,g)))return!1}var S=o.get(e),O=o.get(t);if(S&&O)return S==t&&O==e;var _=!0;o.set(e,t),o.set(t,e);for(var R=s;++h<p;){g=i[h];var E=e[g],U=t[g];if(a)var Oe=s?a(U,E,g,t,e,o):a(E,U,g,e,t,o);if(!(Oe===void 0?E===U||n(E,U,r,a,o):Oe)){_=!1;break}R||(R=g=="constructor")}if(_&&!R){var Se=e.constructor,pt=t.constructor;Se!=pt&&"constructor"in e&&"constructor"in t&&!(typeof Se=="function"&&Se instanceof Se&&typeof pt=="function"&&pt instanceof pt)&&(_=!1)}return o.delete(e),o.delete(t),_}iy.exports=fN});var hy=u((WW,gy)=>{"use strict";var Ci=aa(),mN=_i(),gN=oy(),hN=uy(),py=yr(),cy=re(),ly=ua(),yN=cn(),AN=1,dy="[object Arguments]",fy="[object Array]",Fn="[object Object]",bN=Object.prototype,my=bN.hasOwnProperty;function IN(e,t,r,a,n,o){var s=cy(e),i=cy(t),p=s?fy:py(e),m=i?fy:py(t);p=p==dy?Fn:p,m=m==dy?Fn:m;var f=p==Fn,h=m==Fn,g=p==m;if(g&&ly(e)){if(!ly(t))return!1;s=!0,f=!1}if(g&&!f)return o||(o=new Ci),s||yN(e)?mN(e,t,r,a,n,o):gN(e,t,p,r,a,n,o);if(!(r&AN)){var S=f&&my.call(e,"__wrapped__"),O=h&&my.call(t,"__wrapped__");if(S||O){var _=S?e.value():e,R=O?t.value():t;return o||(o=new Ci),n(_,R,r,a,o)}}return g?(o||(o=new Ci),hN(e,t,r,a,n,o)):!1}gy.exports=IN});var Oi=u(($W,by)=>{"use strict";var SN=hy(),yy=he();function Ay(e,t,r,a,n){return e===t?!0:e==null||t==null||!yy(e)&&!yy(t)?e!==e&&t!==t:SN(e,t,r,a,Ay,n)}by.exports=Ay});var Sy=u((KW,Iy)=>{"use strict";var wN=aa(),TN=Oi(),vN=1,EN=2;function RN(e,t,r,a){var n=r.length,o=n,s=!a;if(e==null)return!o;for(e=Object(e);n--;){var i=r[n];if(s&&i[2]?i[1]!==e[i[0]]:!(i[0]in e))return!1}for(;++n<o;){i=r[n];var p=i[0],m=e[p],f=i[1];if(s&&i[2]){if(m===void 0&&!(p in e))return!1}else{var h=new wN;if(a)var g=a(m,f,p,e,t,h);if(!(g===void 0?TN(f,m,vN|EN,a,h):g))return!1}}return!0}Iy.exports=RN});var Li=u((VW,wy)=>{"use strict";var _N=Ee();function xN(e){return e===e&&!_N(e)}wy.exports=xN});var vy=u((YW,Ty)=>{"use strict";var CN=Li(),ON=gr();function LN(e){for(var t=ON(e),r=t.length;r--;){var a=t[r],n=e[a];t[r]=[a,n,CN(n)]}return t}Ty.exports=LN});var Pi=u((HW,Ey)=>{"use strict";function PN(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}Ey.exports=PN});var _y=u((zW,Ry)=>{"use strict";var UN=Sy(),qN=vy(),DN=Pi();function NN(e){var t=qN(e);return t.length==1&&t[0][2]?DN(t[0][0],t[0][1]):function(r){return r===e||UN(r,e,t)}}Ry.exports=NN});var Qn=u((JW,xy)=>{"use strict";var BN=re(),MN=mr(),GN=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,kN=/^\w*$/;function FN(e,t){if(BN(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||MN(e)?!0:kN.test(e)||!GN.test(e)||t!=null&&e in Object(t)}xy.exports=FN});var Ly=u((XW,Oy)=>{"use strict";var Cy=en(),QN="Expected a function";function Ui(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(QN);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 s=e.apply(this,a);return r.cache=o.set(n,s)||o,s};return r.cache=new(Ui.Cache||Cy),r}Ui.Cache=Cy;Oy.exports=Ui});var Uy=u((ZW,Py)=>{"use strict";var jN=Ly(),WN=500;function $N(e){var t=jN(e,function(a){return r.size===WN&&r.clear(),a}),r=t.cache;return t}Py.exports=$N});var qi=u((e$,qy)=>{"use strict";var KN=Uy(),VN=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,YN=/\\(\\)?/g,HN=KN(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(VN,function(r,a,n,o){t.push(n?o.replace(YN,"$1"):a||r)}),t});qy.exports=HN});var Di=u((t$,Dy)=>{"use strict";function zN(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}Dy.exports=zN});var Fy=u((r$,ky)=>{"use strict";var Ny=xt(),JN=Di(),XN=re(),ZN=mr(),eB=1/0,By=Ny?Ny.prototype:void 0,My=By?By.toString:void 0;function Gy(e){if(typeof e=="string")return e;if(XN(e))return JN(e,Gy)+"";if(ZN(e))return My?My.call(e):"";var t=e+"";return t=="0"&&1/e==-eB?"-0":t}ky.exports=Gy});var Ni=u((a$,Qy)=>{"use strict";var tB=Fy();function rB(e){return e==null?"":tB(e)}Qy.exports=rB});var Bi=u((n$,jy)=>{"use strict";var aB=re(),nB=Qn(),oB=qi(),sB=Ni();function iB(e,t){return aB(e)?e:nB(e,t)?[e]:oB(sB(e))}jy.exports=iB});var Ar=u((o$,Wy)=>{"use strict";var uB=mr(),pB=1/0;function cB(e){if(typeof e=="string"||uB(e))return e;var t=e+"";return t=="0"&&1/e==-pB?"-0":t}Wy.exports=cB});var Mi=u((s$,$y)=>{"use strict";var lB=Bi(),dB=Ar();function fB(e,t){t=lB(t,e);for(var r=0,a=t.length;e!=null&&r<a;)e=e[dB(t[r++])];return r&&r==a?e:void 0}$y.exports=fB});var Vy=u((i$,Ky)=>{"use strict";var mB=Mi();function gB(e,t,r){var a=e==null?void 0:mB(e,t);return a===void 0?r:a}Ky.exports=gB});var Hy=u((u$,Yy)=>{"use strict";function hB(e,t){return e!=null&&t in Object(e)}Yy.exports=hB});var Jy=u((p$,zy)=>{"use strict";var yB=Bi(),AB=zr(),bB=re(),IB=la(),SB=an(),wB=Ar();function TB(e,t,r){t=yB(t,e);for(var a=-1,n=t.length,o=!1;++a<n;){var s=wB(t[a]);if(!(o=e!=null&&r(e,s)))break;e=e[s]}return o||++a!=n?o:(n=e==null?0:e.length,!!n&&SB(n)&&IB(s,n)&&(bB(e)||AB(e)))}zy.exports=TB});var Zy=u((c$,Xy)=>{"use strict";var vB=Hy(),EB=Jy();function RB(e,t){return e!=null&&EB(e,t,vB)}Xy.exports=RB});var tA=u((l$,eA)=>{"use strict";var _B=Oi(),xB=Vy(),CB=Zy(),OB=Qn(),LB=Li(),PB=Pi(),UB=Ar(),qB=1,DB=2;function NB(e,t){return OB(e)&&LB(t)?PB(UB(e),t):function(r){var a=xB(r,e);return a===void 0&&a===t?CB(r,e):_B(t,a,qB|DB)}}eA.exports=NB});var aA=u((d$,rA)=>{"use strict";function BB(e){return function(t){return t?.[e]}}rA.exports=BB});var oA=u((f$,nA)=>{"use strict";var MB=Mi();function GB(e){return function(t){return MB(t,e)}}nA.exports=GB});var iA=u((m$,sA)=>{"use strict";var kB=aA(),FB=oA(),QB=Qn(),jB=Ar();function WB(e){return QB(e)?kB(jB(e)):FB(e)}sA.exports=WB});var Gi=u((g$,uA)=>{"use strict";var $B=_y(),KB=tA(),VB=Jr(),YB=re(),HB=iA();function zB(e){return typeof e=="function"?e:e==null?VB:typeof e=="object"?YB(e)?KB(e[0],e[1]):$B(e):HB(e)}uA.exports=zB});var cA=u((h$,pA)=>{"use strict";var JB=Ei(),XB=Gi(),ZB=1;function eM(e){return XB(typeof e=="function"?e:JB(e,ZB))}pA.exports=eM});var dA=u((y$,lA)=>{"use strict";var tM=Eo();function rM(e){var t=e==null?0:e.length;return t?tM(e,1):[]}lA.exports=rM});var mA=u((A$,fA)=>{"use strict";var aM=dA(),nM=Ro(),oM=Xa();function sM(e){return oM(nM(e,void 0,aM),e+"")}fA.exports=sM});var hA=u((b$,gA)=>{"use strict";var iM=Mn(),uM=mA(),pM=256,cM=uM(function(e,t){return iM(e,pM,void 0,void 0,void 0,t)});gA.exports=cM});var AA=u((I$,yA)=>{"use strict";var lM=Di(),dM=tr(),fM=re(),mM=mr(),gM=qi(),hM=Ar(),yM=Ni();function AM(e){return fM(e)?lM(e,hM):mM(e)?[e]:dM(gM(yM(e)))}yA.exports=AM});var IA=u((S$,bA)=>{"use strict";bA.exports={ary:qg(),assign:gi(),clone:jh(),curry:$h(),forEach:Nn(),isArray:re(),isError:Vh(),isFunction:Xr(),isWeakMap:Hh(),iteratee:cA(),keys:mi(),rearg:hA(),toInteger:ci(),toPath:AA()}});var wA=u((w$,SA)=>{"use strict";var bM=pm(),IM=IA();function SM(e,t,r){return bM(IM,e,t,r)}SA.exports=SM});var ki=u((T$,vA)=>{"use strict";var wM=wA(),TA=wM("merge",Jo());TA.placeholder=Vs();vA.exports=TA});var Eb=u((gK,vb)=>{"use strict";function QM(e,t,r,a){for(var n=-1,o=e==null?0:e.length;++n<o;){var s=e[n];t(a,s,r(s),e)}return a}vb.exports=QM});var _b=u((hK,Rb)=>{"use strict";var jM=ko(),WM=gr();function $M(e,t){return e&&jM(e,t,WM)}Rb.exports=$M});var Cb=u((yK,xb)=>{"use strict";var KM=Xt();function VM(e,t){return function(r,a){if(r==null)return r;if(!KM(r))return e(r,a);for(var n=r.length,o=t?n:-1,s=Object(r);(t?o--:++o<n)&&a(s[o],o,s)!==!1;);return r}}xb.exports=VM});var Lb=u((AK,Ob)=>{"use strict";var YM=_b(),HM=Cb(),zM=HM(YM);Ob.exports=zM});var Ub=u((bK,Pb)=>{"use strict";var JM=Lb();function XM(e,t,r,a){return JM(e,function(n,o,s){t(a,n,r(n),s)}),a}Pb.exports=XM});var Db=u((IK,qb)=>{"use strict";var ZM=Eb(),eG=Ub(),tG=Gi(),rG=re();function aG(e,t){return function(r,a){var n=rG(r)?ZM:eG,o=t?t():{};return n(r,e,tG(a,2),o)}}qb.exports=aG});var Bb=u((SK,Nb)=>{"use strict";var nG=na(),oG=Db(),sG=Object.prototype,iG=sG.hasOwnProperty,uG=oG(function(e,t,r){iG.call(e,r)?e[r].push(t):nG(e,r,[t])});Nb.exports=uG});var PG={};w(PG,{Method:()=>no,ai:()=>xu,api:()=>ru,auditLogs:()=>At,automations:()=>En,backups:()=>Re,branding:()=>hn,constants:()=>Wr,environmentVariables:()=>Ye,features:()=>qe,groups:()=>j,init:()=>am,licensing:()=>je,logger:()=>Bt,mappers:()=>V,middleware:()=>Vi,plugins:()=>Rn,publicApi:()=>Cn,quotas:()=>Ke,scimGroups:()=>br,scimUsers:()=>fe,sdk:()=>Qi,users:()=>at,utils:()=>Vt});module.exports=CI(PG);var no=(o=>(o.POST="POST",o.GET="GET",o.PATCH="PATCH",o.DELETE="DELETE",o.PUT="PUT",o))(no||{});var Qi={};w(Qi,{ai:()=>ms,auditLogs:()=>At,automations:()=>En,backups:()=>Re,branding:()=>hn,environmentVariables:()=>Ye,features:()=>qe,groups:()=>j,init:()=>am,licensing:()=>je,logger:()=>Bt,plugins:()=>Rn,publicApi:()=>Cn,quotas:()=>Ke,scimGroups:()=>br,scimUsers:()=>fe,users:()=>at,utils:()=>Vt});var hn={};w(hn,{getBrandingConfig:()=>bx});var qe={};w(qe,{checkBackups:()=>ye,checkFeature:()=>mn,checkFeatures:()=>us,checkSCIM:()=>ds,isAppBuildersEnabled:()=>Pt,isAuditLogsEnabled:()=>gn,isBackupsEnabled:()=>ps,isBrandingEnabled:()=>cs,isEnforceableSSO:()=>yf,isExpandedPublicApiEnabled:()=>tt,isPWAEnabled:()=>mx,isSSOEnforced:()=>gx,isSyncAutomationsEnabled:()=>dx,isTriggerAutomationRunEnabled:()=>fx,isUserGroupsEnabled:()=>ls,isViewPermissionEnabled:()=>hx,isViewReadonlyColumnsEnabled:()=>yx});var se=require("@budibase/types"),et=require("@budibase/backend-core");var je={};w(je,{cache:()=>Pe,client:()=>ft,features:()=>Ya,getFreeLicense:()=>os,getLicense:()=>as,getLicenseFromKey:()=>ns,keys:()=>is,offline:()=>ln,quotas:()=>Ha});var Pe={};w(Pe,{getCachedLicense:()=>gf,invalidate:()=>hf,refresh:()=>Ct});var Da=require("@budibase/backend-core"),vr,OI=async()=>{vr=await Da.RedisClient.init(Da.redis.utils.Databases.LICENSES)},LI=async()=>{vr&&await vr.finish()};process.on("exit",async()=>{await LI()});var oo=async()=>(vr||await OI(),vr);var ft={};w(ft,{activateLicenseKey:()=>Io,getLicense:()=>$t,getLicenseFromKey:()=>bo,triggerQuota:()=>hS});var Bu=P(require("node-fetch"));var Mu=require("@budibase/backend-core"),so=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";Mu.logging.correlation.setHeader(a.headers);let o={method:t,body:n?JSON.stringify(a.body):a.body,headers:a.headers,credentials:"include"};return(0,Bu.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}},io=so;var $a=require("@budibase/types"),L=require("@budibase/backend-core");var ke={};w(ke,{bustCache:()=>co,getCurrentUsageValues:()=>Ku,getQuotaUsage:()=>vt,setAllUsage:()=>fo,setAppUsageValue:()=>lo,setUsage:()=>ju,setUsagePerApp:()=>Wu,utils:()=>_r});var ne=require("@budibase/types"),ce=require("@budibase/backend-core");var _r={};w(_r,{generateBaseQuotaUsage:()=>Na,generateNewMonthlyQuotas:()=>Rr,generateNewQuotaUsage:()=>po,getBreakdownName:()=>Ma,getCurrentMonthString:()=>ct,getQuotaDocId:()=>Er,setCurrentMonth:()=>Ba,setQuotaReset:()=>uo});var Y=require("@budibase/types"),Tt=require("@budibase/backend-core"),Er=()=>Tt.context.isSelfHostUsingCloud()?`quota_usage_${Tt.context.getTenantId()}`:Tt.db.StaticDatabases.GLOBAL.docs.usageQuota,Gu=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},uo=e=>{e.quotaReset=Gu()},ct=()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},Na=()=>({usageQuota:{[Y.StaticQuotaName.APPS]:0,[Y.StaticQuotaName.ROWS]:0,[Y.StaticQuotaName.PLUGINS]:0,[Y.StaticQuotaName.USERS]:0,[Y.StaticQuotaName.CREATORS]:0,[Y.StaticQuotaName.USER_GROUPS]:0,[Y.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[ct()]:Rr()}}),po=()=>{let e={_id:Er(),quotaReset:Gu(),...Na(),apps:{}};return Ba(e),e},Rr=()=>({[Y.MonthlyQuotaName.QUERIES]:0,[Y.MonthlyQuotaName.AUTOMATIONS]:0,[Y.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,[Y.MonthlyQuotaName.ACTIONS]:0,triggers:{}}),Ba=e=>{let t=ct();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=Rr()),e.monthly.current=e.monthly[t]},Ma=(e,t)=>{if(!(!t||!e))switch(e){case Y.MonthlyQuotaName.AUTOMATIONS:return Y.BreakdownQuotaName.AUTOMATIONS;case Y.MonthlyQuotaName.QUERIES:return Tt.db.isTableId(t)?Y.BreakdownQuotaName.ROW_QUERIES:Tt.db.isDatasourceId(t)?Y.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}};var ku=ce.Duration.fromSeconds(60).toMs(),{Writethrough:Fu}=ce.cache.writethrough;function UI(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 Ga=()=>ce.tenancy.isSelfHostUsingCloud()?new Fu(ce.tenancy.getSelfHostCloudDB(),ku):new Fu(ce.tenancy.getGlobalDB(),ku);async function co(e=0){let r=Ga(),a=Er(),n=await r.tryGet(a);n&&n._rev&&await r.remove(a,n._rev).catch(async o=>{if(e<1)return await co(e+1);throw o})}var vt=async()=>{let e=Ga(),t=await e.tryGet(Er());if(!t){t=po();let{rev:r}=await e.put(t);t._rev=r}return Ba(t),uo(t),UI(t)},ju=async(e,t,r)=>fo({name:t,type:r,values:{total:e}}),Wu=async(e,t,r)=>{let a=Ga(),n=await vt(),o=Object.values(e).reduce((i,p)=>i+p,0);for(let[i,p]of Object.entries(e))n=$u(n,t,r,{total:o,app:p},{appId:i});let s=await a.put(n);return n._rev=s.rev,n},qI=(e,t,r,a)=>{let n=Ma(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},lo=(e,t,r,a={},n)=>{let o;try{o=ce.db.getProdAppID(a?.appId||ce.context.getAppId())}catch{}if(!o||!n.app||!ne.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[o]||(e.apps={...e.apps,[o]:Na()});let s=e.apps[o];switch(r){case ne.QuotaUsageType.STATIC:s.usageQuota[t]=n.app;break;case ne.QuotaUsageType.MONTHLY:{let i=ct(),p=t,m=s.monthly[i];m||(s.monthly[i]=Rr(),m=s.monthly[i]),m[p]=n.app,ne.BREAKDOWN_QUOTA_NAMES.includes(p)&&a?.id&&(m=qI(m,p,a.id,n));break}}return e},Qu=(e,t,r,a)=>{if(!ne.APP_QUOTA_NAMES.includes(r))return{};let n;try{n=ce.db.getProdAppID(ce.context.getAppId())}catch{}if(!n||!e.apps||!e.apps[n])return{app:0};let o=e.apps[n];switch(t){case ne.QuotaUsageType.STATIC:if(o.usageQuota?.[r])return{app:o.usageQuota[r]};break;case ne.QuotaUsageType.MONTHLY:{let s=ct(),i=r;if(!o.monthly?.[s]?.[i])break;let p=o.monthly[s],m=p[i],f,h=Ma(i,a);return h&&a&&p.breakdown?.[h]&&(f=p.breakdown[h]?.values[a]),{app:m,breakdown:f||0}}}return{app:0}},DI=(e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},NI=(e,t,r,a)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),a&&(r.monthly[t].triggers[e]=a)},$u=(e,t,r,a,n={})=>{if(r===ne.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=a.total,DI(t,e,a.triggers);else if(r===ne.QuotaUsageType.MONTHLY){t=t;let o=ct();e.monthly[o][t]=a.total,NI(t,o,e,a.triggers)}else throw new Error(`Invalid usage type: ${r}`);return lo(e,t,r,n,a)},fo=async e=>{let t=Array.isArray(e)?e:[e],r=Ga(),a=await vt();for(let o of t)a=$u(a,o.name,o.type,o.values,o.opts);let n=await r.put(a,0);return a._rev=n.rev,a},Ku=async(e,t,r)=>{let a=await vt(),n=0,o={};switch(e){case ne.QuotaUsageType.STATIC:if(a.usageQuota[t]){let s=t;n=a.usageQuota[s],o=Qu(a,e,t,r)}break;case ne.QuotaUsageType.MONTHLY:{let s=ct(),i=t;a.monthly[s][i]&&(n=a.monthly[s][i],o=Qu(a,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return ne.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 Te={};w(Te,{destroy:()=>GI,get:()=>mo,save:()=>MI});var lt=require("@budibase/backend-core"),BI=()=>({_id:lt.StaticDatabases.GLOBAL.docs.licenseInfo}),MI=async e=>{let t=await mo();t={...t,...e};let a=await lt.tenancy.getGlobalDB().put(t);return t._rev=a.rev,t},mo=async()=>{let e=lt.tenancy.getGlobalDB();try{return await e.get(lt.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return BI();throw t}},GI=async()=>{let e=lt.tenancy.getGlobalDB(),t=await mo();t&&t._rev&&await e.remove(lt.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)};var M={};w(M,{bulkSave:()=>JI,destroy:()=>XI,fetch:()=>VI,generateUserGroupID:()=>$I,get:()=>YI,getBulk:()=>HI,getByName:()=>go,getGroupUsers:()=>Fa,getGroupUsersParams:()=>Ju,getUserGroupsParams:()=>zu,save:()=>zI});var N=require("@budibase/backend-core");var Le=require("@budibase/types"),Qt=require("@budibase/backend-core");async function Vu(){let e=Qt.sql.designDoc.base("type");e.sql.tables={[Le.AUDIT_LOG_TYPE]:{fields:{appId:Le.SQLiteType.TEXT,event:Le.SQLiteType.TEXT,userId:Le.SQLiteType.TEXT,timestamp:Le.SQLiteType.TEXT,metadata:Le.SQLiteType.TEXT,name:Le.SQLiteType.TEXT,type:Le.SQLiteType.TEXT,fallback:Le.SQLiteType.TEXT}}};let t=Qt.context.getAuditLogsDB(),r;try{r=await t.get(Qt.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(a){if(a.status===404)r=e;else throw a}await t.put(r)}var ka=require("@budibase/backend-core"),{ViewName:kI,SEPARATOR:FI,DocumentType:QI,createView:jI}=ka.db,WI=QI.USER+FI;async function Yu(){let e=ka.tenancy.getGlobalDB(),t=`function(doc) {
4
+ if (doc._id.startsWith("${WI}") && 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 QI(e,t,GI.USER_BY_GROUP)}var Yu=`${N.DocumentType.GROUP}${N.SEPARATOR}`;function Hu(e,t={}){e||(e="");let r=e?.startsWith(N.DocumentType.GROUP)?"":Yu;return{...t,startkey:`${r}${e}`,endkey:`${r}${e}${N.UNICODE_MAX}`}}function zu(e,t={}){e||(e="");let{emailSearch:r,bookmark:a,...n}=t;return r?{...n,startkey:`e_${e}${a||r}`,endkey:`e_${e}${r}${N.UNICODE_MAX}`}:{...t,startkey:`g_${e}`,endkey:`g_${e}${N.UNICODE_MAX}`,startkey_docid:a}}function WI(){return`${Yu}${N.utils.newid()}`}async function Fa(e,t){let r=N.tenancy.getGlobalDB();return(await N.db.queryView(N.db.ViewName.USER_BY_GROUP,zu(e,t),r,Vu,{arrayResponse:!0})).map(n=>({_id:n.userId,email:n.email}))||[]}async function xr(e){return e.users=await Fa(e._id),e}async function $I(e){let r=(await xr(e)).users?.map(o=>o._id),a=await N.users.bulkGetGlobalUsersById(r),n=[];for(let o of a){if(!o.userGroups)continue;let s=o.userGroups.length;o.userGroups=o.userGroups.filter(i=>i!==e._id),o.userGroups.length!==s&&n.push(o)}n.length&&await N.users.bulkUpdateGlobalUsers(n)}async function Ju(){return(await N.tenancy.getGlobalDB().allDocs(Hu(null,{include_docs:!0}))).rows.map(t=>t.doc)}async function KI(){let e=await Ju(),t=[];for(let r of e)t.push(xr(r));return await Promise.all(t)}async function VI(e){let r=await N.tenancy.getGlobalDB().get(e);return await xr(r)}async function YI(e,t={enriched:!0}){let a=await N.tenancy.getGlobalDB().getMultiple(e,{allowMissing:!0});if(t?.enriched){let n=[];for(let o of a)n.push(xr(o));return await Promise.all(n)}else return a}async function HI(e){return await N.tenancy.getGlobalDB().put(e)}async function zI(e){return await N.tenancy.getGlobalDB().bulkDocs(e)}async function JI(e,t){let r=N.tenancy.getGlobalDB(),a=await r.get(e),n=await r.remove(e,t);return await $I(a),n}async function mo(e){let t=e.toLowerCase(),a=(await Ju()).find(n=>n.name.toLowerCase()===t);if(a)return await xr(a)}var Te={};w(Te,{deleteAppBackupMetadata:()=>cS,fetchAppBackups:()=>iS,generateAppBackupID:()=>lp,getAppBackupMetadata:()=>lS,oldestBackupDate:()=>pp,storeAppBackupMetadata:()=>uS,updateAppBackupMetadata:()=>pS});var Q=require("@budibase/backend-core"),up=require("@budibase/types");function Cr(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 jt=require("@budibase/backend-core"),{ViewName:Zu,AutomationViewMode:go,SEPARATOR:Fe,DocumentType:ep,createView:tp}=jt.db,XI=ep.AUTOMATION_LOG+Fe,Xu=ep.APP_BACKUP+Fe;async function rp(){let e=jt.context.getProdAppDB(),t=`function(doc) {
11
- if (doc._id.startsWith("${XI}")) {
10
+ }`;await jI(e,t,kI.USER_BY_GROUP)}var Hu=`${N.DocumentType.GROUP}${N.SEPARATOR}`;function zu(e,t={}){e||(e="");let r=e?.startsWith(N.DocumentType.GROUP)?"":Hu;return{...t,startkey:`${r}${e}`,endkey:`${r}${e}${N.UNICODE_MAX}`}}function Ju(e,t={}){e||(e="");let{emailSearch:r,bookmark:a,...n}=t;return r?{...n,startkey:`e_${e}${a||r}`,endkey:`e_${e}${r}${N.UNICODE_MAX}`}:{...t,startkey:`g_${e}`,endkey:`g_${e}${N.UNICODE_MAX}`,startkey_docid:a}}function $I(){return`${Hu}${N.utils.newid()}`}async function Fa(e,t){let r=N.tenancy.getGlobalDB();return(await N.db.queryView(N.db.ViewName.USER_BY_GROUP,Ju(e,t),r,Yu,{arrayResponse:!0})).map(n=>({_id:n.userId,email:n.email}))||[]}async function xr(e){return e.users=await Fa(e._id),e}async function KI(e){let r=(await xr(e)).users?.map(o=>o._id),a=await N.users.bulkGetGlobalUsersById(r),n=[];for(let o of a){if(!o.userGroups)continue;let s=o.userGroups.length;o.userGroups=o.userGroups.filter(i=>i!==e._id),o.userGroups.length!==s&&n.push(o)}n.length&&await N.users.bulkUpdateGlobalUsers(n)}async function Xu(){return(await N.tenancy.getGlobalDB().allDocs(zu(null,{include_docs:!0}))).rows.map(t=>t.doc)}async function VI(){let e=await Xu(),t=[];for(let r of e)t.push(xr(r));return await Promise.all(t)}async function YI(e){let r=await N.tenancy.getGlobalDB().get(e);return await xr(r)}async function HI(e,t={enriched:!0}){let a=await N.tenancy.getGlobalDB().getMultiple(e,{allowMissing:!0});if(t?.enriched){let n=[];for(let o of a)n.push(xr(o));return await Promise.all(n)}else return a}async function zI(e){return await N.tenancy.getGlobalDB().put(e)}async function JI(e){return await N.tenancy.getGlobalDB().bulkDocs(e)}async function XI(e,t){let r=N.tenancy.getGlobalDB(),a=await r.get(e),n=await r.remove(e,t);return await KI(a),n}async function go(e){let t=e.toLowerCase(),a=(await Xu()).find(n=>n.name.toLowerCase()===t);if(a)return await xr(a)}var ve={};w(ve,{deleteAppBackupMetadata:()=>lS,fetchAppBackups:()=>uS,generateAppBackupID:()=>dp,getAppBackupMetadata:()=>dS,oldestBackupDate:()=>cp,storeAppBackupMetadata:()=>pS,updateAppBackupMetadata:()=>cS});var Q=require("@budibase/backend-core"),pp=require("@budibase/types");function Cr(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 jt=require("@budibase/backend-core"),{ViewName:ep,AutomationViewMode:ho,SEPARATOR:Fe,DocumentType:tp,createView:rp}=jt.db,ZI=tp.AUTOMATION_LOG+Fe,Zu=tp.APP_BACKUP+Fe;async function ap(){let e=jt.context.getProdAppDB(),t=`function(doc) {
11
+ if (doc._id.startsWith("${ZI}")) {
12
12
  let autoId = doc.automationId + "${Fe}"
13
13
  let status = doc.status + "${Fe}"
14
- let autoKey = "${go.AUTOMATION}${Fe}" + autoId + doc.createdAt
15
- let statusKey = "${go.STATUS}${Fe}" + status + doc.createdAt
16
- let allKey = "${go.ALL}${Fe}" + status + autoId + doc.createdAt
14
+ let autoKey = "${ho.AUTOMATION}${Fe}" + autoId + doc.createdAt
15
+ let statusKey = "${ho.STATUS}${Fe}" + status + doc.createdAt
16
+ let allKey = "${ho.ALL}${Fe}" + status + autoId + doc.createdAt
17
17
  emit(statusKey)
18
18
  emit(autoKey)
19
19
  emit(allKey)
20
20
  }
21
- }`;await tp(e,t,Zu.AUTOMATION_LOGS)}async function ap(){let e=jt.tenancy.getGlobalDB(),t=`function(doc) {
22
- if (doc._id.startsWith("${Xu}") && doc.type && doc.trigger) {
21
+ }`;await rp(e,t,ep.AUTOMATION_LOGS)}async function np(){let e=jt.tenancy.getGlobalDB(),t=`function(doc) {
22
+ if (doc._id.startsWith("${Zu}") && doc.type && doc.trigger) {
23
23
  let full = doc.appId + "${Fe}"
24
24
  full += doc.trigger.toLowerCase() + "${Fe}"
25
25
  full += doc.type.toLowerCase() + "${Fe}"
26
- emit("${Xu}" + full + doc.timestamp)
26
+ emit("${Zu}" + full + doc.timestamp)
27
27
  }
28
- }`;await tp(e,t,Zu.APP_BACKUP_BY_TRIGGER)}var ip=require("@budibase/types");var Wr={};w(Wr,{GENERIC_PAGE_SIZE:()=>Qe,auditLogs:()=>Wt,licenses:()=>ge,quotas:()=>Ze,versions:()=>jr});var ge={};w(ge,{CLOUD_FREE_LICENSE:()=>eS,SELF_FREE_LICENSE:()=>ho,UNLIMITED:()=>F,UNLIMITED_LICENSE:()=>tS});var dt=require("@budibase/types");var Ze={};w(Ze,{UNLIMITED:()=>ZI,actions:()=>Gr,appBackupRetentionDays:()=>Fr,apps:()=>Or,automationLogRetentionDays:()=>kr,automations:()=>Br,budibaseAICredits:()=>Mr,creators:()=>Ur,customAIConfigurations:()=>Qr,plugins:()=>Dr,queries:()=>Nr,rows:()=>Lr,userGroups:()=>qr,users:()=>Pr});var te=require("@budibase/types"),ZI=-1,Lr=e=>({[te.StaticQuotaName.ROWS]:{name:"Rows",value:e,triggers:[90,100]}}),Or=e=>({[te.StaticQuotaName.APPS]:{name:"Apps",value:e,triggers:[100]}}),Pr=e=>({[te.StaticQuotaName.USERS]:{name:"Users",value:e,triggers:[80,100]}}),Ur=e=>({[te.StaticQuotaName.CREATORS]:{name:"Creators",value:e,triggers:[]}}),qr=e=>({[te.StaticQuotaName.USER_GROUPS]:{name:"User Groups",value:e,triggers:[80,100]}}),Dr=e=>({[te.StaticQuotaName.PLUGINS]:{name:"Plugins",value:e,triggers:[90,100]}}),Nr=e=>({[te.MonthlyQuotaName.QUERIES]:{name:"Queries",value:e,triggers:[]}}),Br=e=>({[te.MonthlyQuotaName.AUTOMATIONS]:{name:"Automations",value:e,triggers:[80,90,100]}}),Mr=e=>({[te.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:{name:"Budibase AI Credits",value:e,triggers:[80,90,100]}}),Gr=e=>({[te.MonthlyQuotaName.ACTIONS]:{name:"Actions",value:e,triggers:[80,90,100]}}),kr=e=>({[te.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS]:{name:"Automation Logs",value:e,triggers:[]}}),Fr=e=>({[te.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS]:{name:"App Backups",value:e,triggers:[]}}),Qr=e=>({[te.StaticQuotaName.AI_CUSTOM_CONFIGS]:{name:"Custom AI Configuration",value:e,triggers:[]}});var F=-1,eS={features:[],quotas:{usage:{monthly:{...Nr(F),...Br(200),...Mr(5e4),...Gr(F)},static:{...Or(F),...Lr(2e3),...Pr(5),...Ur(5),...qr(0),...Dr(10),...Qr(0)}},constant:{...kr(1),...Fr(0)}},plan:{type:dt.PlanType.FREE,usesInvoicing:!1,model:dt.PlanModel.PER_USER}},ho={features:[],quotas:{usage:{monthly:{...Nr(F),...Br(F),...Mr(5e4),...Gr(F)},static:{...Lr(F),...Or(F),...Pr(20),...Ur(F),...qr(0),...Dr(10),...Qr(0)}},constant:{...kr(1),...Fr(0)}},plan:{type:dt.PlanType.FREE,usesInvoicing:!1,model:dt.PlanModel.PER_USER}},tS={features:[],quotas:{usage:{monthly:{...Nr(F),...Br(F),...Mr(F),...Gr(F)},static:{...Or(F),...Lr(F),...Pr(F),...Ur(F),...qr(F),...Dr(F),...Qr(F)}},constant:{...kr(F),...Fr(F)}},plan:{type:dt.PlanType.FREE,usesInvoicing:!1,model:dt.PlanModel.PER_USER}};var jr={};w(jr,{getLicenseVersion:()=>rS,getProVersion:()=>op});var vt=require("@budibase/backend-core"),Qa=P(require("fs")),np=P(require("path")),rS=()=>{if(vt.env.isDev()){let e="dev-version.txt",t=np.default.join(vt.objectStore.budibaseTempDir(),e);if(Qa.default.existsSync(t))return Qa.default.readFileSync(t,"utf8");{let r=vt.utils.newid();return Qa.default.writeFileSync(t,r),r}}else return op()},op=()=>{let e=vt.env.VERSION;if(!e)throw new Error("No budibase pro version was specified");return e};var Wt={};w(Wt,{searchTable:()=>aS});var Et=require("@budibase/types"),sp=require("@budibase/backend-core");function aS(){return{type:"table",sourceType:Et.TableSourceType.INTERNAL,name:Et.AUDIT_LOG_TYPE,sourceId:sp.SQS_DATASOURCE_INTERNAL,primary:["_id"],schema:{metadata:{name:"metadata",type:Et.FieldType.JSON},fallback:{name:"fallback",type:Et.FieldType.JSON}}}}var Qe=9;var nS=new Date(864e13).toISOString(),oS=1e3*60*60*24;async function ja(e){let r=(await Oe.getCachedLicense()).quotas?.[ip.QuotaType.CONSTANT]?.[e]?.value||0;return r===ge.UNLIMITED?new Date(nS).toISOString():new Date(new Date().getTime()-oS*r).toISOString()}async function pp(){return ja(up.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS)}var yo=`${Q.db.DocumentType.APP_BACKUP}${Q.db.SEPARATOR}`;async function sS(e,t,r={}){let a=await pp(),n=Q.db.getProdAppID(e),o=n,s=n;if(t.trigger&&t.type){let i=`${Q.db.SEPARATOR}${t.trigger}`;i+=`${Q.db.SEPARATOR}${t.type}`,o+=i,s+=i}return(!t.startDate||t.startDate<a)&&(t.startDate=a),t.startDate&&(s+=`${Q.db.SEPARATOR}${t.startDate}`),t.endDate&&(o+=`${Q.db.SEPARATOR}${t.endDate}`),{...r,descending:!0,startkey:`${yo}${o}${Q.db.UNICODE_MAX}`,endkey:`${yo}${s}`}}async function cp(e,t){try{let r=Q.db.getQueryIndex(Q.db.ViewName.APP_BACKUP_BY_TRIGGER);return await e.query(r,t)}catch(r){if(r!=null&&r.error==="not_found")return await ap(),cp(e,t);throw r}}function lp(e,t){return`${yo}${e}${Q.db.SEPARATOR}${t}`}async function iS(e,t={}){let r=Q.tenancy.getGlobalDB(),a,n=t.limit||9,o=await sS(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 cp(r,o);let s=Cr(a,{paginate:t.paginate,pageSize:n}),i=[...new Set(s.data.filter(m=>m.createdBy).map(m=>m.createdBy))],p=await Q.users.bulkGetGlobalUsersById(i,{cleanup:!0});for(let m of p)for(let f of s.data)m?._id===f.createdBy&&(f.createdBy=m);return s}async function uS(e,t={}){let r=Q.tenancy.getGlobalDB(),a=Q.db.getProdAppID(e.appId),n=lp(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=Q.db.getGlobalIDFromUserMetadataID(e.createdBy)),await r.put(o)}async function pS(e,t){let r=Q.tenancy.getGlobalDB(),a=await r.get(e);return a.name=t,await r.put(a)}async function cS(e){let t=Q.tenancy.getGlobalDB(),r=await t.get(e);await t.remove(r._id,r._rev)}async function lS(e){return await Q.tenancy.getGlobalDB().get(e)}var Rt={};w(Rt,{get:()=>fS,getCacheEnvVarID:()=>mp,getEnvVarID:()=>Wa,update:()=>mS});var Pe=require("@budibase/backend-core"),fp=P(require("lru-cache")),dS=1e3,dp=new fp.default({max:dS});function Wa(){return Pe.StaticDatabases.GLOBAL.docs.environmentVariables}function mp(e){return`${Pe.tenancy.getTenantId()}/${Wa()}/${e||""}`}async function fS(){let e=Wa(),t=Pe.tenancy.getGlobalDB(),r,a=!1;try{r=await t.get(e)}catch(i){if(i.status==404)a=!0;else throw i}let n=mp(r?._rev),o=dp.get(n);if(o)return o;let s;return!a&&r?s={...r,variables:JSON.parse(Pe.encryption.decrypt(r.variables,Pe.encryption.SecretOption.ENCRYPTION))}:s={_id:e,variables:{}},dp.set(n,s),s}async function mS(e){let t=Wa();return await Pe.tenancy.getGlobalDB().put({_id:e._id||t,_rev:e._rev||void 0,variables:Pe.encryption.encrypt(JSON.stringify(e.variables),Pe.encryption.SecretOption.ENCRYPTION)})}var gp=require("dd-trace"),Ka=new so(O.env.ACCOUNT_PORTAL_URL),Va=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{}},hp=async e=>{let t,r;if(O.env.SELF_HOSTED){if(t=await we.get(),!t.licenseKey)return;r={[O.constants.Header.LICENSE_KEY]:t.licenseKey}}else{let a=O.tenancy.getTenantId();r={[O.constants.Header.API_KEY]:O.env.ACCOUNT_PORTAL_API_KEY,[O.constants.Header.TENANT_ID]:a}}return e(r)},yp=async()=>hp(async e=>{let t=await ke.getQuotaUsage();if(t.usageQuota.users==null){let i=await O.users.getUserCount();console.info(`Syncing user count quota to ${i}`),t.usageQuota.users=i,await ke.setUsage(i,$a.StaticQuotaName.USERS,$a.QuotaUsageType.STATIC)}let r=await O.installation.getInstallFromDB(),a=O.tenancy.getTenantId(),n=await O.events.identification.getUniqueTenantId(a),o=jr.getProVersion(),s={quotaUsage:t,tenantId:a,install:{id:r.installId,tenantId:n,version:o}};try{let i=await Ka.post("/api/license",{headers:{...e},body:s});if(i.status===404||i.status===403)return;if(i.status!==200){let p=await Va(i);throw new O.HTTPError(`Error getting license: ${p}`,i.status)}return i.json()}catch(i){if(O.env.DISABLE_ACCOUNT_PORTAL)return;throw i}});O.env.isJest()&&(yp=jest.fn());var $t=yp;async function Ao(e){return await gp.tracer.trace("getLicenseFromKey",async t=>{let r;if(!O.env.ACCOUNT_PORTAL_API_KEY)throw new Error("getLicenseFromKey requires ACCOUNT_PORTAL_API_KEY to be set");try{r=await Ka.get(`/api/license/${e}`,{headers:{[O.constants.Header.API_KEY]:O.env.ACCOUNT_PORTAL_API_KEY}})}catch(a){if(O.env.DISABLE_ACCOUNT_PORTAL)return;throw a}if(r.status===404||r.status===403){t.addTags({licenseFound:!1});return}if(r.status!==200){let a=await Va(r);throw new O.HTTPError(`Error getting license: ${a}`,r.status)}return r.json()})}var gS=e=>hp(async t=>{let r=await Ka.post("/api/license/usage/triggered",{headers:{...t},body:e});if(r.status!==200){let a=await Va(r);O.logging.logAlert(`Error triggering quota usage: ${a}`)}}),bo=async e=>{let t=await O.installation.getInstall(),r={installVersion:t.version,installId:t.installId},a=await Ka.post("/api/license/activate",{headers:{[O.constants.Header.LICENSE_KEY]:e},body:r});if(a.status===403)throw new O.HTTPError("Invalid license key",400);if(a.status===409)throw new O.HTTPError("License key has already been activated",409);if(a.status!==200){let n=await Va(a);throw new O.HTTPError(`Error activating license key: ${n}`,a.status)}return a.json()};var ts=require("@budibase/backend-core");var ln={};w(ln,{activateOfflineLicenseToken:()=>Z_,deleteOfflineLicenseToken:()=>ex,dev:()=>fa,enrichLicense:()=>pf,getIdentifier:()=>Jo,getIdentifierBase64:()=>tx,getIdentifierFromBase64:()=>rx,getOfflineLicense:()=>Xo,getOfflineLicenseToken:()=>of,signing:()=>Vr,verifyExpiry:()=>sf,verifyInstallation:()=>uf});var Vr={};w(Vr,{sign:()=>yS,verifyLicenseToken:()=>Kr});var Io=P(require("jsonwebtoken")),hS=`-----BEGIN PUBLIC KEY-----
28
+ }`;await rp(e,t,ep.APP_BACKUP_BY_TRIGGER)}var up=require("@budibase/types");var Wr={};w(Wr,{GENERIC_PAGE_SIZE:()=>Qe,auditLogs:()=>Wt,licenses:()=>ge,quotas:()=>Ze,versions:()=>jr});var ge={};w(ge,{CLOUD_FREE_LICENSE:()=>tS,SELF_FREE_LICENSE:()=>yo,UNLIMITED:()=>F,UNLIMITED_LICENSE:()=>rS});var dt=require("@budibase/types");var Ze={};w(Ze,{UNLIMITED:()=>eS,actions:()=>Gr,appBackupRetentionDays:()=>Fr,apps:()=>Lr,automationLogRetentionDays:()=>kr,automations:()=>Br,budibaseAICredits:()=>Mr,creators:()=>Ur,customAIConfigurations:()=>Qr,plugins:()=>Dr,queries:()=>Nr,rows:()=>Or,userGroups:()=>qr,users:()=>Pr});var te=require("@budibase/types"),eS=-1,Or=e=>({[te.StaticQuotaName.ROWS]:{name:"Rows",value:e,triggers:[90,100]}}),Lr=e=>({[te.StaticQuotaName.APPS]:{name:"Apps",value:e,triggers:[100]}}),Pr=e=>({[te.StaticQuotaName.USERS]:{name:"Users",value:e,triggers:[80,100]}}),Ur=e=>({[te.StaticQuotaName.CREATORS]:{name:"Creators",value:e,triggers:[]}}),qr=e=>({[te.StaticQuotaName.USER_GROUPS]:{name:"User Groups",value:e,triggers:[80,100]}}),Dr=e=>({[te.StaticQuotaName.PLUGINS]:{name:"Plugins",value:e,triggers:[90,100]}}),Nr=e=>({[te.MonthlyQuotaName.QUERIES]:{name:"Queries",value:e,triggers:[]}}),Br=e=>({[te.MonthlyQuotaName.AUTOMATIONS]:{name:"Automations",value:e,triggers:[80,90,100]}}),Mr=e=>({[te.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:{name:"Budibase AI Credits",value:e,triggers:[80,90,100]}}),Gr=e=>({[te.MonthlyQuotaName.ACTIONS]:{name:"Actions",value:e,triggers:[80,90,100]}}),kr=e=>({[te.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS]:{name:"Automation Logs",value:e,triggers:[]}}),Fr=e=>({[te.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS]:{name:"App Backups",value:e,triggers:[]}}),Qr=e=>({[te.StaticQuotaName.AI_CUSTOM_CONFIGS]:{name:"Custom AI Configuration",value:e,triggers:[]}});var F=-1,tS={features:[],quotas:{usage:{monthly:{...Nr(F),...Br(200),...Mr(5e4),...Gr(F)},static:{...Lr(F),...Or(2e3),...Pr(5),...Ur(5),...qr(0),...Dr(10),...Qr(0)}},constant:{...kr(1),...Fr(0)}},plan:{type:dt.PlanType.FREE,usesInvoicing:!1,model:dt.PlanModel.PER_USER}},yo={features:[],quotas:{usage:{monthly:{...Nr(F),...Br(F),...Mr(5e4),...Gr(F)},static:{...Or(F),...Lr(F),...Pr(20),...Ur(F),...qr(0),...Dr(10),...Qr(0)}},constant:{...kr(1),...Fr(0)}},plan:{type:dt.PlanType.FREE,usesInvoicing:!1,model:dt.PlanModel.PER_USER}},rS={features:[],quotas:{usage:{monthly:{...Nr(F),...Br(F),...Mr(F),...Gr(F)},static:{...Lr(F),...Or(F),...Pr(F),...Ur(F),...qr(F),...Dr(F),...Qr(F)}},constant:{...kr(F),...Fr(F)}},plan:{type:dt.PlanType.FREE,usesInvoicing:!1,model:dt.PlanModel.PER_USER}};var jr={};w(jr,{getLicenseVersion:()=>aS,getProVersion:()=>sp});var Et=require("@budibase/backend-core"),Qa=P(require("fs")),op=P(require("path")),aS=()=>{if(Et.env.isDev()){let e="dev-version.txt",t=op.default.join(Et.objectStore.budibaseTempDir(),e);if(Qa.default.existsSync(t))return Qa.default.readFileSync(t,"utf8");{let r=Et.utils.newid();return Qa.default.writeFileSync(t,r),r}}else return sp()},sp=()=>{let e=Et.env.VERSION;if(!e)throw new Error("No budibase pro version was specified");return e};var Wt={};w(Wt,{searchTable:()=>nS});var Rt=require("@budibase/types"),ip=require("@budibase/backend-core");function nS(){return{type:"table",sourceType:Rt.TableSourceType.INTERNAL,name:Rt.AUDIT_LOG_TYPE,sourceId:ip.SQS_DATASOURCE_INTERNAL,primary:["_id"],schema:{metadata:{name:"metadata",type:Rt.FieldType.JSON},fallback:{name:"fallback",type:Rt.FieldType.JSON}}}}var Qe=9;var oS=new Date(864e13).toISOString(),sS=1e3*60*60*24;async function ja(e){let r=(await Pe.getCachedLicense()).quotas?.[up.QuotaType.CONSTANT]?.[e]?.value||0;return r===ge.UNLIMITED?new Date(oS).toISOString():new Date(new Date().getTime()-sS*r).toISOString()}async function cp(){return ja(pp.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS)}var Ao=`${Q.db.DocumentType.APP_BACKUP}${Q.db.SEPARATOR}`;async function iS(e,t,r={}){let a=await cp(),n=Q.db.getProdAppID(e),o=n,s=n;if(t.trigger&&t.type){let i=`${Q.db.SEPARATOR}${t.trigger}`;i+=`${Q.db.SEPARATOR}${t.type}`,o+=i,s+=i}return(!t.startDate||t.startDate<a)&&(t.startDate=a),t.startDate&&(s+=`${Q.db.SEPARATOR}${t.startDate}`),t.endDate&&(o+=`${Q.db.SEPARATOR}${t.endDate}`),{...r,descending:!0,startkey:`${Ao}${o}${Q.db.UNICODE_MAX}`,endkey:`${Ao}${s}`}}async function lp(e,t){try{let r=Q.db.getQueryIndex(Q.db.ViewName.APP_BACKUP_BY_TRIGGER);return await e.query(r,t)}catch(r){if(r!=null&&r.error==="not_found")return await np(),lp(e,t);throw r}}function dp(e,t){return`${Ao}${e}${Q.db.SEPARATOR}${t}`}async function uS(e,t={}){let r=Q.tenancy.getGlobalDB(),a,n=t.limit||9,o=await iS(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 lp(r,o);let s=Cr(a,{paginate:t.paginate,pageSize:n}),i=[...new Set(s.data.filter(m=>m.createdBy).map(m=>m.createdBy))],p=await Q.users.bulkGetGlobalUsersById(i,{cleanup:!0});for(let m of p)for(let f of s.data)m?._id===f.createdBy&&(f.createdBy=m);return s}async function pS(e,t={}){let r=Q.tenancy.getGlobalDB(),a=Q.db.getProdAppID(e.appId),n=dp(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=Q.db.getGlobalIDFromUserMetadataID(e.createdBy)),await r.put(o)}async function cS(e,t){let r=Q.tenancy.getGlobalDB(),a=await r.get(e);return a.name=t,await r.put(a)}async function lS(e){let t=Q.tenancy.getGlobalDB(),r=await t.get(e);await t.remove(r._id,r._rev)}async function dS(e){return await Q.tenancy.getGlobalDB().get(e)}var _t={};w(_t,{get:()=>mS,getCacheEnvVarID:()=>gp,getEnvVarID:()=>Wa,update:()=>gS});var Ue=require("@budibase/backend-core"),mp=P(require("lru-cache")),fS=1e3,fp=new mp.default({max:fS});function Wa(){return Ue.StaticDatabases.GLOBAL.docs.environmentVariables}function gp(e){return`${Ue.tenancy.getTenantId()}/${Wa()}/${e||""}`}async function mS(){let e=Wa(),t=Ue.tenancy.getGlobalDB(),r,a=!1;try{r=await t.get(e)}catch(i){if(i.status==404)a=!0;else throw i}let n=gp(r?._rev),o=fp.get(n);if(o)return o;let s;return!a&&r?s={...r,variables:JSON.parse(Ue.encryption.decrypt(r.variables,Ue.encryption.SecretOption.ENCRYPTION))}:s={_id:e,variables:{}},fp.set(n,s),s}async function gS(e){let t=Wa();return await Ue.tenancy.getGlobalDB().put({_id:e._id||t,_rev:e._rev||void 0,variables:Ue.encryption.encrypt(JSON.stringify(e.variables),Ue.encryption.SecretOption.ENCRYPTION)})}var hp=require("dd-trace"),Ka=new io(L.env.ACCOUNT_PORTAL_URL),Va=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{}},yp=async e=>{let t,r;if(L.env.SELF_HOSTED){if(t=await Te.get(),!t.licenseKey)return;r={[L.constants.Header.LICENSE_KEY]:t.licenseKey}}else{let a=L.tenancy.getTenantId();r={[L.constants.Header.API_KEY]:L.env.ACCOUNT_PORTAL_API_KEY,[L.constants.Header.TENANT_ID]:a}}return e(r)},Ap=async()=>yp(async e=>{let t=await ke.getQuotaUsage();if(t.usageQuota.users==null){let i=await L.users.getUserCount();console.info(`Syncing user count quota to ${i}`),t.usageQuota.users=i,await ke.setUsage(i,$a.StaticQuotaName.USERS,$a.QuotaUsageType.STATIC)}let r=await L.installation.getInstallFromDB(),a=L.tenancy.getTenantId(),n=await L.events.identification.getUniqueTenantId(a),o=jr.getProVersion(),s={quotaUsage:t,tenantId:a,install:{id:r.installId,tenantId:n,version:o}};try{let i=await Ka.post("/api/license",{headers:{...e},body:s});if(i.status===404||i.status===403)return;if(i.status!==200){let p=await Va(i);throw new L.HTTPError(`Error getting license: ${p}`,i.status)}return i.json()}catch(i){if(L.env.DISABLE_ACCOUNT_PORTAL)return;throw i}});L.env.isJest()&&(Ap=jest.fn());var $t=Ap;async function bo(e){return await hp.tracer.trace("getLicenseFromKey",async t=>{let r;if(!L.env.ACCOUNT_PORTAL_API_KEY)throw new Error("getLicenseFromKey requires ACCOUNT_PORTAL_API_KEY to be set");try{r=await Ka.get(`/api/license/${e}`,{headers:{[L.constants.Header.API_KEY]:L.env.ACCOUNT_PORTAL_API_KEY}})}catch(a){if(L.env.DISABLE_ACCOUNT_PORTAL)return;throw a}if(r.status===404||r.status===403){t.addTags({licenseFound:!1});return}if(r.status!==200){let a=await Va(r);throw new L.HTTPError(`Error getting license: ${a}`,r.status)}return r.json()})}var hS=e=>yp(async t=>{let r=await Ka.post("/api/license/usage/triggered",{headers:{...t},body:e});if(r.status!==200){let a=await Va(r);L.logging.logAlert(`Error triggering quota usage: ${a}`)}}),Io=async e=>{let t=await L.installation.getInstall(),r={installVersion:t.version,installId:t.installId},a=await Ka.post("/api/license/activate",{headers:{[L.constants.Header.LICENSE_KEY]:e},body:r});if(a.status===403)throw new L.HTTPError("Invalid license key",400);if(a.status===409)throw new L.HTTPError("License key has already been activated",409);if(a.status!==200){let n=await Va(a);throw new L.HTTPError(`Error activating license key: ${n}`,a.status)}return a.json()};var rs=require("@budibase/backend-core");var ln={};w(ln,{activateOfflineLicenseToken:()=>ex,deleteOfflineLicenseToken:()=>tx,dev:()=>fa,enrichLicense:()=>cf,getIdentifier:()=>Xo,getIdentifierBase64:()=>rx,getIdentifierFromBase64:()=>ax,getOfflineLicense:()=>Zo,getOfflineLicenseToken:()=>sf,signing:()=>Vr,verifyExpiry:()=>uf,verifyInstallation:()=>pf});var Vr={};w(Vr,{sign:()=>AS,verifyLicenseToken:()=>Kr});var So=P(require("jsonwebtoken")),yS=`-----BEGIN PUBLIC KEY-----
29
29
  MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvz3jePLCFBXZ19c8Dpkv
30
30
  XtSgOhKFOcvQdo/LV0KJRUzQWDPWuO4ILtBtnqhjtIzZH4CH0qCYBet5L6Qr4CM1
31
31
  l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
@@ -34,22 +34,22 @@ l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
34
34
  d/o3ZWE1TTj1zYwlCLN5qRKr3hU8nC3xEYNEbkB9SfTRaOq9Q7P8WmfLkoCPm3pR
35
35
  mwIDAQAB
36
36
  -----END PUBLIC KEY-----
37
- `;function Kr(e){return Io.default.verify(e,hS,{algorithms:["RS256"]})}function yS(e,t){return Io.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}var Ya={};w(Ya,{getFeatures:()=>So});var l=require("@budibase/types");var AS={[l.PlanType.FREE]:[...ge.SELF_FREE_LICENSE.features],[l.PlanType.PREMIUM]:void 0,[l.PlanType.PREMIUM_PLUS]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.BUDIBASE_AI]},bS={[l.PlanType.FREE]:[...ge.CLOUD_FREE_LICENSE.features],[l.PlanType.PREMIUM]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.PDF],[l.PlanType.PREMIUM_PLUS]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.BUDIBASE_AI,l.Feature.PDF],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.BUDIBASE_AI,l.Feature.PDF],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.BRANDING],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.BRANDING],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.BUDIBASE_AI,l.Feature.PDF],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF]};function So(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 l.Hosting.SELF:r=a(AS);break;case l.Hosting.CLOUD:r=a(bS);break}return r}var Ha={};w(Ha,{UNLIMITED:()=>d,getQuotas:()=>wo});var G=require("@budibase/types");var c=Ze,Ap=ge,d=-1,Yr=e=>e*1e6,IS={[G.PlanType.FREE]:{...Ap.CLOUD_FREE_LICENSE.quotas},[G.PlanType.PREMIUM]:{usage:{monthly:{...c.queries(d),...c.automations(1e3),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(1e4),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(0),...c.plugins(d),...c.customAIConfigurations(0)}},constant:{...c.automationLogRetentionDays(7),...c.appBackupRetentionDays(7)}},[G.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...c.queries(d),...c.automations(5e3),...c.budibaseAICredits(Yr(2)),...c.actions(d)},static:{...c.rows(25e3),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(0),...c.plugins(d),...c.customAIConfigurations(1)}},constant:{...c.automationLogRetentionDays(30),...c.appBackupRetentionDays(30)}},[G.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...c.queries(d),...c.automations(5e3),...c.budibaseAICredits(Yr(2)),...c.actions(d)},static:{...c.rows(25e3),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(0),...c.plugins(d),...c.customAIConfigurations(1)}},constant:{...c.automationLogRetentionDays(30),...c.appBackupRetentionDays(30)}},[G.PlanType.PRO]:{usage:{monthly:{...c.queries(d),...c.automations(1e3),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(5),...c.plugins(d),...c.customAIConfigurations(0)}},constant:{...c.automationLogRetentionDays(7),...c.appBackupRetentionDays(7)}},[G.PlanType.TEAM]:{usage:{monthly:{...c.queries(d),...c.automations(5e3),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(10),...c.plugins(d),...c.customAIConfigurations(0)}},constant:{...c.automationLogRetentionDays(30),...c.appBackupRetentionDays(90)}},[G.PlanType.BUSINESS]:{usage:{monthly:{...c.queries(d),...c.automations(1e4),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(5e4),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(50),...c.plugins(d),...c.customAIConfigurations(0)}},constant:{...c.automationLogRetentionDays(365),...c.appBackupRetentionDays(365)}},[G.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(Yr(4)),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(d),...c.plugins(d),...c.customAIConfigurations(d)}},constant:{...c.automationLogRetentionDays(d),...c.appBackupRetentionDays(d)}},[G.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(Yr(4)),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(d),...c.plugins(d),...c.customAIConfigurations(d)}},constant:{...c.automationLogRetentionDays(15),...c.appBackupRetentionDays(15)}},[G.PlanType.ENTERPRISE]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(Yr(4)),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(d),...c.plugins(d),...c.customAIConfigurations(d)}},constant:{...c.automationLogRetentionDays(d),...c.appBackupRetentionDays(d)}}},SS={[G.PlanType.FREE]:{...Ap.SELF_FREE_LICENSE.quotas},[G.PlanType.PREMIUM]:void 0,[G.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(0),...c.plugins(d),...c.customAIConfigurations(1)}},constant:{...c.automationLogRetentionDays(30),...c.appBackupRetentionDays(30)}},[G.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(0),...c.plugins(d),...c.customAIConfigurations(1)}},constant:{...c.automationLogRetentionDays(30),...c.appBackupRetentionDays(30)}},[G.PlanType.PRO]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(5),...c.plugins(d),...c.customAIConfigurations(0)}},constant:{...c.automationLogRetentionDays(7),...c.appBackupRetentionDays(7)}},[G.PlanType.TEAM]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(10),...c.plugins(d),...c.customAIConfigurations(0)}},constant:{...c.automationLogRetentionDays(30),...c.appBackupRetentionDays(90)}},[G.PlanType.BUSINESS]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(50),...c.plugins(d),...c.customAIConfigurations(0)}},constant:{...c.automationLogRetentionDays(90),...c.appBackupRetentionDays(365)}},[G.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(d),...c.plugins(d),...c.customAIConfigurations(d)}},constant:{...c.automationLogRetentionDays(d),...c.appBackupRetentionDays(d)}},[G.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(d),...c.plugins(d),...c.customAIConfigurations(d)}},constant:{...c.automationLogRetentionDays(15),...c.appBackupRetentionDays(15)}},[G.PlanType.ENTERPRISE]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(d),...c.plugins(d),...c.customAIConfigurations(d)}},constant:{...c.automationLogRetentionDays(d),...c.appBackupRetentionDays(d)}}};function wo(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 G.Hosting.SELF:r=a(SS);break;case G.Hosting.CLOUD:r=a(IS);break}return JSON.parse(JSON.stringify(r))}var Vt={};w(Vt,{appExists:()=>wS,encoding:()=>Kt});var bp=require("@budibase/backend-core");async function wS(e){return(await bp.db.getAllApps({all:!0,idsOnly:!0})).includes(e)}var Kt={};w(Kt,{base64ToObject:()=>vS,objectToBase64:()=>TS});function TS(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}function vS(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}var rf=require("@budibase/types"),sr=require("@budibase/backend-core"),af=P(Dl()),nf=P(zo());async function Z_(e){await we.save({offlineLicenseToken:e}),await xt()}async function ex(){await we.save({offlineLicenseToken:void 0}),await xt()}async function of(){return(await we.get()).offlineLicenseToken}async function Jo(){let t=(await sr.installation.getInstall()).installId,r=sr.context.getTenantId(),a=await sr.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:a}}async function tx(){let e=await Jo();return Kt.objectToBase64(e)}function rx(e){return Kt.base64ToObject(e)}function sf(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 uf(e){let t=await Jo();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}function pf(e){let t=e.plan.type,r=rf.Hosting.SELF,a=So(r,t),n=wo(r,t);return e.features=(0,af.default)(e.features,a),e.quotas=(0,nf.default)(e.quotas,n),e}async function Xo(){try{let e=await of();if(e){let t=await Kr(e);return sf(t),await uf(t),pf(t)}}catch(e){console.error("Error retrieving offline license",e)}}var fa={};w(fa,{deleteDevLicense:()=>ix,getOfflineLicense:()=>ox,writeDevLicenseToDisk:()=>sx});var cf=require("@budibase/backend-core"),es=require("path"),lf=require("os"),Ct=P(require("fs"));var ax=cf.env.isTest()?".budibase-test":".budibase",Zo=(0,es.join)((0,lf.tmpdir)(),ax),nx="dev_license.txt",da=(0,es.join)(Zo,nx);if(!Ct.default.existsSync(Zo))try{Ct.default.mkdirSync(Zo)}catch{}function ox(){try{if(Ct.default.existsSync(da)){let e=Ct.default.readFileSync(da,{encoding:"utf-8"});return Kr(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}function sx(e){console.log(`Writing license to: ${da}`),Ct.default.writeFileSync(da,e,{encoding:"utf-8"})}function ix(){Ct.default.rmSync(da,{force:!0})}var rs=async()=>{if(ts.env.OFFLINE_MODE)return Xo();let e=await $t();return e||(e=fa.getOfflineLicense()),e},as=e=>Ao(e),ns=()=>ts.env.SELF_HOSTED?ge.SELF_FREE_LICENSE:ge.CLOUD_FREE_LICENSE;var ss={};w(ss,{activateLicenseKey:()=>ux,deleteLicenseKey:()=>px,getLicenseKey:()=>dn});var os=P(require("dd-trace"));async function ux(e){await bo(e),await we.save({licenseKey:e}),await xt()}async function dn(){return await os.default.trace("getLicenseKey",async e=>{let t=await we.get();return e.addTags({licenseKey:t.licenseKey}),t.licenseKey})}async function px(){return await os.default.trace("deleteLicenseKey",async()=>{await we.save({licenseKey:void 0}),await xt()})}var Lt=require("@budibase/backend-core"),fn=P(require("dd-trace")),df=3600,xt=async()=>{await gf(),await mf()},ff=async(e,t)=>{let{populateLicense:r=rs,populateFreeLicense:a=ns}=t||{};return await fn.default.trace("getCachedLicense",async n=>{let o=Lt.context.getLicense();if(o)return n.addTags({foundInContext:!0,features:o.features,plan:o.plan,quotas:o.quotas}),o;let s=Lt.tenancy.getTenantId(),i=await no(),p=await i.get(s);return n.addTags({tenantId:s,foundInCache:!!p}),p?(n.addTags({foundInCache:!0,refreshedAt:p.refreshedAt,features:p.features,plan:p.plan,quotas:p.quotas}),p):(p=await fn.default.trace("populateLicense",async()=>await r(s)),n.addTags({populatedLicense:!!p}),p||(p=fn.default.trace("populateFreeLicense",()=>a(e,s)),n.addTags({populatedFreeLicense:!!p})),p.refreshedAt=new Date().toISOString(),n.addTags({refreshedAt:p.refreshedAt,features:p.features,plan:p.plan,quotas:p.quotas,expirySeconds:df}),await i.store(s,p,df),p)})};Lt.env.isJest()&&(ff=jest.fn());var mf=ff,gf=async()=>{let e=Lt.tenancy.getTenantId();await(await no()).delete(e)};async function ie(e,t){Array.isArray(e)||(e=[e]),t||(t=await Oe.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}async function mn(e,t){if(!await ie(e,t))throw new et.FeatureDisabledError(`${e} is not currently enabled`,e)}async function is(e,t){if(!await ie(e,t)){let r=e.join(", ");throw new et.FeatureDisabledError(`${r} are not currently enabled`,r)}}function ye(e){return async(...t)=>(await mn(se.Feature.APP_BACKUPS),e(...t))}async function us(){return ie(se.Feature.APP_BACKUPS)}async function ps(){return ie(se.Feature.BRANDING)}async function hf(){return ie(se.Feature.ENFORCEABLE_SSO)}async function lx(){return ie(se.Feature.SYNC_AUTOMATIONS)}async function dx(){return ie(se.Feature.TRIGGER_AUTOMATION_RUN)}async function Ot(){return ie(se.Feature.APP_BUILDERS)}async function gn(){return ie(se.Feature.AUDIT_LOGS)}async function cs(){return ie(se.Feature.USER_GROUPS)}function fx(){return ie(se.Feature.PWA)}async function tt(){return ie(se.Feature.EXPANDED_PUBLIC_API)}async function mx(e){if(et.env.ENABLE_SSO_MAINTENANCE_MODE||!await hf())return!1;let r;return e?.config?r=e.config:r=await et.configs.getSettingsConfig(),!!r.isSSOEnforced}var ls=async()=>{let e=se.Feature.SCIM,t=await ie(e),r=await et.configs.getSCIMConfig();if(!t||!r?.enabled)throw new et.FeatureDisabledError(`${e} is not currently enabled`,e);return!0};async function gx(){return ie(se.Feature.VIEW_PERMISSIONS)}async function hx(){return ie(se.Feature.VIEW_READONLY_COLUMNS)}var yx={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 Ax(e){return await ps()?{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}:yx}var fs={};w(fs,{enrichAIConfig:()=>ds});var yf=require("@budibase/backend-core"),bx="budibase_ai";async function ds(e){if(yf.env.SELF_HOSTED)return e;for(let t of Object.values(e.config))if(t.provider==="BudibaseAI")return e;return e.config[bx]={provider:"BudibaseAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-4o-mini",name:"Budibase AI"},e}var Ke={};w(Ke,{addApp:()=>vx,addAutomation:()=>Lx,addGroup:()=>gs,addPlugin:()=>ys,addRow:()=>Rx,addRows:()=>xx,addUsers:()=>An,bustCache:()=>po,decrement:()=>rt,decrementMany:()=>ma,getCurrentUsageValues:()=>$u,getLicensedQuota:()=>bf,getQuotaUsage:()=>Tt,increment:()=>De,incrementBudibaseAICredits:()=>In,incrementMany:()=>Pt,removeApp:()=>Ex,removeGroup:()=>hs,removePlugin:()=>As,removeRow:()=>_x,removeRows:()=>Cx,removeUsers:()=>lr,set:()=>ms,setAllUsage:()=>lo,setAppUsageValue:()=>co,setUsage:()=>Qu,setUsagePerApp:()=>ju,updatePluginCount:()=>bs,updateUsage:()=>ur,usageLimitIsExceeded:()=>Tx,utils:()=>_r});var H=require("@budibase/types");var qe=require("@budibase/backend-core");var ir=require("dd-trace"),De=(e,t,r)=>Af({change:1,name:e,type:t,opts:r}),Pt=e=>ir.tracer.trace("quotas.incrementMany",async()=>Af(e)),Af=async e=>await ir.tracer.trace("quotas.tryIncrement",async t=>{let r=Array.isArray(e)?e:[e];t.addTags({numActions:r.length}),await ur(r.map(n=>({usageChange:n.change,name:n.name,type:n.type,opts:{dryRun:!0,suppressErrorLog:n.opts?.suppressErrorLog,id:n.opts?.id}})));let a=[];for(let n of r)await ir.tracer.trace("quotas.incrementMany.fn",async o=>{o.addTags({actionName:n.name,actionType:n.type,actionChange:n.change});let s=n.opts?.fn;s&&a.push(await s())});return await ur(r.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}}))),a[0]}),rt=(e,t,r={})=>ur({usageChange:-1,name:e,type:t,opts:r}),ma=e=>{let t=Array.isArray(e)?e:[e];return ur(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},ms=async(e,t,r)=>ke.setUsage(r,e,t),Ix=(e,t,r)=>{if(e==H.QuotaUsageType.STATIC){let a=r.usageQuota.triggers;return a?a[t]||{}:{}}else{let a=ke.utils.getCurrentMonthString(),n=r.monthly[a].triggers;return n?n[t]||{}:{}}},Sx=async(e,t,r,a)=>{try{await qe.locks.doWithLock({type:H.LockType.TRY_ONCE,name:H.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let n={percentage:r,name:t.name};a&&(n.resetDate=a),await ft.triggerQuota(n)})}catch(n){qe.logging.logAlert("Error triggering quota",n)}},wx=async(e,t,r,a)=>{let n=await Tt(),o=e===H.QuotaUsageType.MONTHLY?n.quotaReset:void 0,s=await Ix(e,t,n),i=a.triggers,p=r/a.value*100;p>100&&(p=100);for(let[m,f]of i.entries())if(p>=f&&a.value!==Ze.UNLIMITED){if(!s[f]){s[f]=new Date().toISOString();let g=i[m+1]||100;(!(p>=g)||p===f)&&await Sx(t,a,p,o)}}else s[f]=void 0;return s},ur=async e=>{await ir.tracer.trace("quotas.updateUsage",async t=>{let r=qe.tenancy.getTenantId(),a=Array.isArray(e)?e:[e];t.addTags({numActions:a.length,tenantId:r});let n,o,s=[],i={},p={},m={},f={};for(let g of a)await ir.tracer.trace("quotas.updateUsage.action",async S=>{S.addTags({actionName:g.name,actionType:g.type,actionUsageChange:g.usageChange});try{n=qe.context.getAppId()}catch{}if(H.APP_QUOTA_NAMES.includes(g.name)&&!n)throw new Error("App context required for quota update");try{o=await bf(H.QuotaType.USAGE,g.name,g.type),s.push(o);let{total:_,app:R,breakdown:E}=await ke.getCurrentUsageValues(g.type,g.name,g.opts?.id);_+=g.usageChange,R!=null&&(R+=g.usageChange),E!=null&&(E+=g.usageChange);let U={};if(g.opts?.dryRun||(U=await wx(g.type,g.name,_,o),f={...f,[g.name]:U}),o.value!==Ze.UNLIMITED&&_>o.value&&g.usageChange>0)throw new qe.UsageLimitError(`Licensed ${o.name} of ${o.value} has been exceeded`,o.name);if(_=Math.max(0,_),R&&(R=Math.max(0,R)),E&&(E=Math.max(0,E),m={...m,[g.name]:E}),!g.opts?.dryRun){let Ce=g.opts?.valueFn;Ce&&(_=await Ce(),R=_),i={...i,[g.name]:_},p={...p,[g.name]:R}}}catch(_){throw g.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${g.name}`,_),_}});let h=a.filter(g=>!g.opts?.dryRun).map(g=>({name:g.name,type:g.type,values:{total:i[g.name],app:p[g.name],breakdown:m[g.name],triggers:f[g.name]},opts:{...g.opts,tenantId:r}}));h.length>0&&await ke.setAllUsage(h)})},bf=async(e,t,r)=>{let a=await Oe.getCachedLicense();if(!a){let n=qe.tenancy.getTenantId();throw new Error("License not found for tenant id "+n)}if(r&&(0,H.isStaticQuota)(e,r,t))return a.quotas[e][r][t];if(r&&(0,H.isMonthlyQuota)(e,r,t))return a.quotas[e][r][t];if((0,H.isConstantQuota)(e,t))return a.quotas[e][t];throw new Error("Invalid quota type")},Tx=async(e,t)=>{try{return await ur({usageChange:1,name:e,type:t,opts:{dryRun:!0}}),!1}catch(r){if(r.code===H.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw r}};var pr=require("@budibase/types"),If=require("@budibase/backend-core"),Sf=async()=>{let e=await If.db.getAllApps({dev:!0});return e?e.length:0},vx=async(e,{appId:t}={})=>De(pr.StaticQuotaName.APPS,pr.QuotaUsageType.STATIC,{fn:e,valueFn:Sf,id:t}),Ex=async({appId:e}={})=>rt(pr.StaticQuotaName.APPS,pr.QuotaUsageType.STATIC,{valueFn:Sf,id:e});var We=require("@budibase/types"),Rx=async(e,{tableId:t}={})=>De(We.StaticQuotaName.ROWS,We.QuotaUsageType.STATIC,{fn:e,id:t}),_x=async({tableId:e}={})=>rt(We.StaticQuotaName.ROWS,We.QuotaUsageType.STATIC,{id:e}),xx=async(e,t,{tableId:r}={})=>Pt({change:e,name:We.StaticQuotaName.ROWS,type:We.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),Cx=async(e,{tableId:t}={})=>ma({change:e,name:We.StaticQuotaName.ROWS,type:We.QuotaUsageType.STATIC,opts:{id:t}});var yn=require("@budibase/types"),Lx=async(e,{automationId:t}={})=>De(yn.MonthlyQuotaName.AUTOMATIONS,yn.QuotaUsageType.MONTHLY,{fn:e,id:t});var cr=require("@budibase/types"),gs=async e=>De(cr.StaticQuotaName.USER_GROUPS,cr.QuotaUsageType.STATIC,{fn:e}),hs=async()=>rt(cr.StaticQuotaName.USER_GROUPS,cr.QuotaUsageType.STATIC);var ht=require("@budibase/types"),ys=async e=>De(ht.StaticQuotaName.PLUGINS,ht.QuotaUsageType.STATIC,{fn:e}),As=async()=>rt(ht.StaticQuotaName.PLUGINS,ht.QuotaUsageType.STATIC),bs=async e=>ms(ht.StaticQuotaName.PLUGINS,ht.QuotaUsageType.STATIC,e);var $e=require("@budibase/types"),ga=require("@budibase/backend-core");var An=async(e,t,r)=>{let a=[{change:e,name:$e.StaticQuotaName.USERS,type:$e.QuotaUsageType.STATIC,opts:{fn:r,valueFn:ga.users.getUserCount}}];t>0&&a.push({change:t,name:$e.StaticQuotaName.CREATORS,type:$e.QuotaUsageType.STATIC,opts:{valueFn:ga.users.getCreatorCount}});let n=await Pt(a);return await $t(),n},lr=async(e,t)=>{let r=[{change:e,name:$e.StaticQuotaName.USERS,type:$e.QuotaUsageType.STATIC,opts:{valueFn:ga.users.getUserCount}}];t>0&&r.push({change:t,name:$e.StaticQuotaName.CREATORS,type:$e.QuotaUsageType.STATIC,opts:{valueFn:ga.users.getCreatorCount}}),await ma(r),await $t()};var bn=require("@budibase/types"),In=async e=>Pt({change:e,name:bn.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:bn.QuotaUsageType.MONTHLY});var at={};w(at,{addAppBuilder:()=>Dx,db:()=>Ve,removeAppBuilder:()=>Nx});var ya=require("@budibase/backend-core");var j={};w(j,{addAppBuilder:()=>vs,addUsers:()=>Ss,adjustGroupCreatorsQuotas:()=>qx,cleanupApp:()=>Ux,enrichUserRolesFromGroups:()=>Px,fetch:()=>ha,get:()=>qt,getBulk:()=>xf,getGroupBuilderAppIds:()=>_f,getGroupRoleId:()=>Ox,remove:()=>Is,removeAppBuilder:()=>Es,removeUsers:()=>ws,save:()=>dr,updateGroupApps:()=>Ts});var x=require("@budibase/backend-core");var wf=require("@budibase/backend-core"),Sn=class extends wf.HTTPError{constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function Ef(e,t){try{let r=[];for(let i of e)if(i.roles){let p=i.roles[x.db.getProdAppID(t)];p&&r.push(p)}let a=await Promise.all(r.map(async i=>({[i]:await x.roles.roleToNumber(i)}))),n,o,s={};a.forEach(i=>{let[p,m]=Object.entries(i)[0];s[p]={roleId:p,roleNum:m}});for(let{roleId:i,roleNum:p}of Object.values(s))(o===void 0||p>o)&&(o=p,n=i);return n}catch(r){throw x.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}async function Rf(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await M.getBulk(e,{enriched:!1}),t}async function _f(e,t){if(!e.userGroups)return[];let r=await Rf(e.userGroups,t?.groups),a=t?.appId?x.db.getProdAppID(t?.appId):null,n=[];for(let o of r){let s=o.builder?.apps;a&&s?.includes(a)?n.push(a):a||(n=n.concat(s||[]))}return[...new Set(n)]}async function Ox(e,t,r){if(!e.userGroups)return null;let a=await Rf(e.userGroups,r?.groups),n=x.db.getProdAppID(t);return e.roles?.[n]?e.roles[n]:(a=a.filter(o=>o?.roles?Object.keys(o.roles).includes(n):!1),await Ef(a,t))}async function Px(e){if(!e||!e.userGroups)return e;let t=await xf(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 x.context.doInAppContext(n,async()=>{if(e.roles[n])return;let o=await Ef(t,n);o&&(e.roles[n]=o)});let a=await _f(e,{groups:t});if(a.length&&!e.builder?.global){let n=e.builder?.apps||[];e.builder={apps:n.concat(a)}}return e}async function ha(){return await M.fetch()}async function qt(e){return await M.get(e)}async function xf(e,t={enriched:!0}){return await M.getBulk(e,t)}async function Tf(e){if(await M.getByName(e))throw new Sn(e)}async function vf(e){let t=await M.getGroupUsers(e._id);if(!t.length)return 0;let a=await x.tenancy.getGlobalDB().getMultiple(t.map(o=>o._id));return(await x.userUtils.creatorsInList(a)).filter(o=>o).length}async function dr(e){let t=[],r=!e._id,a=0;if(delete e.users,!e._id)e._id=M.generateUserGroupID(),await Tf(e.name),t.push(x.events.group.created(e));else{let o=await M.get(e._id);if(o.name!==e.name&&await Tf(e.name),t.push(x.events.group.updated(e)),JSON.stringify(o.roles)!==JSON.stringify(e.roles)){let s=o.users?.length||0,i=0;s>0&&(i=await vf(o)),Object.values(e.roles).includes("CREATOR")?a=s-i:a=-s,t.push(x.events.group.permissionsEdited(e))}}await Promise.all(t);let n=()=>M.save(e);if(r)return await gs(n);{let o=await n();if(a>0)await An(0,a);else if(a<0){let s=await vf(e),i=Math.abs(a)-s;i>0&&await lr(0,i)}return o}}async function Is(e,t){let r;try{r=await M.get(e)}catch{throw new Error("Group not found")}let a=Object.values(r.roles||{}).includes("CREATOR"),n=()=>{};if(a){let s=x.tenancy.getGlobalDB(),i=await M.getGroupUsers(e),m=(await Promise.all(i.map(S=>s.get(S._id)))).map(S=>({...S,userGroups:S.userGroups.filter(L=>L!==e)})),h=(await x.userUtils.creatorsInList(m)).filter(S=>S).length,g=i.length-h;g&&(n=()=>lr(0,g))}let o=await M.destroy(e,t);return await x.events.group.deleted(r),await hs(),await n(),o}async function Ss(e,t){let r=await M.get(e),a=await x.users.bulkGetGlobalUsersById(t),n=[];for(let p of a)p.userGroups||(p.userGroups=[]),p.userGroups.includes(e)||n.push(p);if(!n.length)return n;let o=n.map(p=>({...p,userGroups:[...p?.userGroups||[],e]}));if(await x.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes("CREATOR")){let m=(await x.userUtils.creatorsInList(n)).filter(h=>h).length,f=n.length-m;f&&await An(0,f)}let i=[];for(let p of t)i.push(x.cache.user.invalidateUser(p));return await Promise.all(i),await x.events.group.usersAdded(o.length,r),o}async function ws(e,t){let r=await M.get(e),a=await x.users.bulkGetGlobalUsersById(t),n=[];for(let i of a){if(!i.userGroups||!i.userGroups.includes(e))continue;let p=i.userGroups.indexOf(e);i.userGroups.splice(p,1),n.push(i)}if(await x.users.bulkUpdateGlobalUsers(n),Object.values(r.roles||{}).includes("CREATOR")){let p=(await x.userUtils.creatorsInList(n)).filter(f=>f).length,m=n.length-p;m&&await lr(0,m)}let s=[];for(let i of t)s.push(x.cache.user.invalidateUser(i));return await Promise.all(s),n.length&&await x.events.group.usersDeleted(n.length,r),n}async function Ts(e,t){let r=await qt(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 dr(r)}async function Ux(e){let t=await ha(),r=[];for(let a of t)!a.roles||!a.roles[e]||(delete a.roles[e],r.push(a));return await M.bulkSave(r)}async function vs(e,t){if(!await Ot())throw new Error("Feature not enabled, please check license");let r=x.db.getProdAppID(t),a=await qt(e);a.builder??={apps:[]},a.builder.apps.includes(t)||(a.builder.apps.push(r),await dr(a))}async function Es(e,t){if(!await Ot())throw new Error("Feature not enabled, please check license");let r=x.db.getProdAppID(t),a=await qt(e);a.builder?.apps.includes(t)&&(a.builder.apps=a.builder.apps.filter(n=>n!==r),await dr(a))}async function qx(){if(!await cs()){let e=x.tenancy.getGlobalDB(),r=(await ha()||[]).filter(a=>Object.values(a?.roles||{}).includes("CREATOR"));for(let a of r){let n=await M.getGroupUsers(a._id),s=(await Promise.all(n.map(f=>e.get(f._id)))).map(f=>({...f,userGroups:f.userGroups.filter(h=>h!==a._id)})),p=(await x.userUtils.creatorsInList(s)).filter(f=>f).length,m=n.length-p;await M.save({...a,roles:{}}),m&&await lr(0,m)}}}ya.users.UserDB.init(Ke,j,Ue);var Ve=ya.users.UserDB;async function Dx(e,t){if(!await Ot())throw new Error("Feature not enabled, please check license");await ya.users.addAppBuilder(e,t)}async function Nx(e,t){if(!await Ot())throw new Error("Feature not enabled, please check license");await ya.users.removeAppBuilder(e,t)}var vn={};w(vn,{logs:()=>Ps});var Ps={};w(Ps,{logSearch:()=>$x,oldestLogDate:()=>Df,storeLog:()=>Kx});var qf=require("@budibase/types"),Tn=require("@budibase/backend-core");var wn=require("@budibase/types");var Z=require("@budibase/backend-core");var Cf=require("@budibase/backend-core");async function Lf(e,t){let r,a=5,n=!1,o,s=!0;for(;a>0;a--)try{s?o=await e():o=await exports.randomDelay(e),n=!0;break}catch(i){r=i}return n||Cf.logging.logWarn(`Failed to backoff: ${t}`,r),o}var{SEPARATOR:nt,UNICODE_MAX:Bx,DocumentType:Of,AutomationViewMode:Rs,ViewName:Mx,getQueryIndex:Gx}=Z.db,kx=new Date(0).toISOString(),Fx=100,_s=async()=>ja(wn.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS);function Pf(e,t,{status:r,automationId:a}={},n={}){let o=a?`${a}${nt}`:"",s=r?`${r}${nt}`:"",i;return r&&a?i=`${Rs.ALL}${nt}${s}${o}`:r?i=`${Rs.STATUS}${nt}${s}`:a?i=`${Rs.AUTOMATION}${nt}${o}`:i=`${Of.AUTOMATION_LOG}${nt}`,{...n,descending:!0,startkey:`${i}${t}${Bx}`,endkey:`${i}${e}`}}function Qx(e,t,r){return`${Of.AUTOMATION_LOG}${nt}${e}${nt}${r}${nt}${t}`}async function xs(e,t,r={docs:!0}){let a=Z.context.getProdAppDB();await a.exists()||(a=Z.context.getDevAppDB());let n={status:r.status},o=r?.limit?r.limit:r?.paginate?9+1:void 0,s=Pf(e,t,n,{include_docs:r.docs,limit:o});r?.page&&(s.startkey=r.page);let i=await a.allDocs(s);return Cr(i,{paginate:r?.paginate,pageSize:9})}async function Cs(e,t,r={}){let a=Z.context.getProdAppDB();await a.exists()||(a=Z.context.getDevAppDB());let n;try{let o={automationId:r?.automationId,status:r?.status},s=Pf(e,t,o,{include_docs:!0,limit:9+1});r?.page&&(s.startkey=r.page),n=await a.query(Gx(Mx.AUTOMATION_LOGS),s)}catch(o){if(o!=null&&(o.name==="not_found"||o.error==="not_found"))return await rp(),Cs(e,t,r);throw o}return Cr(n,{paginate:!0,pageSize:9})}async function Uf(e,t){let r=Z.context.getProdAppDB(),a=e._id,n=e.name,o=new Date().toISOString(),s=Qx(o,t.status,a),i={...t,automationId:a,status:t.status,automationName:n,createdAt:o,_id:s};return await r.put(i),s}async function Ls(e,{clearing:t}={clearing:!1}){let r=Z.context.getProdAppDB();await Lf(async()=>{let a=await r.get(Z.db.DocumentType.APP_METADATA);for(let n of e){let o=n.split(Z.db.SEPARATOR),s=`${o[o.length-3]}${Z.db.SEPARATOR}${o[o.length-2]}`,i={};a.automationErrors&&(i=a.automationErrors),Array.isArray(i[s])||(i[s]=[]);let p=i[s].indexOf(n);t&&p!==-1?i[s].splice(p,1):i[s].push(n),i[s].length===0&&delete i[s],a.automationErrors=i}await r.put(a),await Z.cache.app.invalidateAppMetadata(a.appId,a)},"Failed to update app metadata with automation log error")}async function jx(){let e=await _s();try{return await xs(kx,e,{docs:!1,paginate:!1,limit:Fx})}catch{return{data:[],hasNextPage:!1}}}async function Os(){let e=Z.context.getProdAppDB();try{let t=await jx();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(Z.db.SEPARATOR);return o[o.length-1]===wn.AutomationStatus.ERROR}).map(n=>n.id);await e.bulkDocs(r),a.length&&await Ls(a,{clearing:!0})}catch(t){Z.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}var Df=_s;async function Wx(e,t,r,a){let n,o=new Date().toISOString(),s=await Df();return(!e||e<s)&&(e=s),r||t?n=await Cs(e,o,{automationId:r,status:t,page:a}):n=await xs(e,o,{status:t,page:a,docs:!0,paginate:!0}),n}async function $x(e){return await Os(),await Wx(e.startDate,e.status,e.automationId,e.page)}async function Kx(e,t){if(!Tn.db.isProdAppID(Tn.context.getAppId()))return;let r=await Uf(e,t);t.status===qf.AutomationStatus.ERROR&&await Ls([r]),await Os()}var En={};w(En,{checkPluginQuotas:()=>Hx,deletePlugin:()=>Yx,storePlugin:()=>Vx});var Gf=require("@budibase/types"),z=require("@budibase/backend-core");var Nf=P(require("fs")),Bf=require("path");function Mf(e,t){return Nf.default.readFileSync((0,Bf.join)(e,t),"utf8")}async function Vx(metadata,directory,source){let db=z.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=z.objectStore.getPluginS3Dir(name),files=await z.objectStore.uploadDirectory(z.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===Gf.PluginType.DATASOURCE){let js=Mf(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=z.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 z.events.plugin.imported(doc),{...doc,_rev:e.rev}};return rev?await write():await ys(write)}async function Yx(e){let t=z.tenancy.getGlobalDB();try{let r=await t.get(e),a=z.objectStore.getPluginS3Dir(r.name);await z.objectStore.deleteFolder(z.objectStore.ObjectStoreBuckets.PLUGINS,a),await t.remove(e,r._rev),await z.events.plugin.deleted(r),await As()}catch(r){let a=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${a}`)}}async function Hx(){let e=z.tenancy.getGlobalDB();try{let r=(await e.allDocs(z.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await bs(r)}catch(t){z.logging.logAlert("Unable to retrieve plugins for quota check",t)}}var Ye={};w(Ye,{fetch:()=>Jx,fetchValues:()=>Xx,isEncryptionKeyAvailable:()=>zx,isValid:()=>Qf,remove:()=>eC,update:()=>Zx});var Aa=require("@budibase/types"),kf=require("@budibase/backend-core");function zx(){return!!kf.env.ENCRYPTION_KEY}async function Jx(){let e=await Rt.get();return Object.keys(e.variables)}async function Xx(e){let r=(await Rt.get()).variables,a={};for(let[n,o]of Object.entries(r))switch(e){case Aa.AppEnvironment.DEVELOPMENT:a[n]=o.development;break;case Aa.AppEnvironment.PRODUCTION:default:a[n]=o.production;break}return a}async function Ff(e){if(!(await je.cache.getCachedLicense()).features.includes(Aa.Feature.ENVIRONMENT_VARIABLES))throw new Error("User does not have access to environment variables feature.");let r=await Rt.get();r.variables=e(r.variables),await Rt.update(r)}async function Zx(e,t){if(Qf(e))await Ff(a=>(a[e]=t,a));else throw new Error("Variable name has characters that are not allowed")}async function eC(e){await Ff(t=>(delete t[e],t))}function Qf(e){return/^[a-zA-Z0-9-_]+$/.test(e)}var yt={};w(yt,{definitions:()=>lC,download:()=>cC,fetch:()=>pC,write:()=>iC});var _n=require("@budibase/types");var K=require("@budibase/backend-core"),Ne=require("@budibase/types");var jf=require("memorystream"),Wf=new K.sql.Sql(Ne.SqlClient.SQL_LITE);async function tC(e,t,r){let a={operation:Ne.Operation.READ,table:Wt.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:Ne.SortOrder.DESCENDING,type:Ne.SortType.STRING}}},n=Wf._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 rC(e){return`${K.DocumentType.AUDIT_LOG}${K.SEPARATOR}${e}${K.SEPARATOR}${K.utils.newid()}`}async function $f(e){e._id||(e._id=rC(e.timestamp)),e.type||(e.type=Ne.AUDIT_LOG_TYPE);try{let r=await K.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){K.logging.logAlert("Failed to write audit log",t)}}async function Us(e,t,r){t||(t=1);let a=K.context.getAuditLogsDB();try{let n=9+1,o=await tC(e,t,n),s=Wt.searchTable(),i=Wf.convertJsonStringColumns(s,await a.sql(o.sql,o.bindings)),p;i.length>n&&(p=i.pop());let m={rows:i,hasNextPage:!!p};return m.hasNextPage&&(m.bookmark=t+1),m}catch(n){if(n.status===404&&!r?.isRetry)return await aC(),await Ku(),await Us(e,t,{isRetry:!0});throw n}}async function aC(){let e=K.context.getAuditLogsDB(),r=(await e.allDocs(K.db.getDocParams(K.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(a=>a.doc).filter(a=>a&&!a.type).map(a=>({...a,type:Ne.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}function Kf(e){let t=K.context.getAuditLogsDB(),r=new jf,a=t.dump(r,{filter:o=>{let s=o;if(!s._id?.startsWith(K.DocumentType.AUDIT_LOG))return!1;let i=!0,p=(m,f)=>{!m||m.length===0||(i=!!(i&&f&&m.includes(f)))};if(p(e.userIds,s.userId),p(e.appIds,s.appId),p(e.events,s.event),(e.startDate||e.endDate)&&(i=i&&s.timestamp>=e.startDate&&s.timestamp<=e.endDate),e.fullSearch){let m=JSON.stringify(o);i=i&&m.includes(e.fullSearch)}return i}}),n=new jf;return r.on("data",o=>{let s=JSON.parse(Buffer.from(o).toString());if(Array.isArray(s.docs)){let i="";for(let p of s.docs)i+=JSON.stringify(p)+`
38
- `;n.write(i)}}),r.on("end",()=>{n.end()}),{promise:a,stream:n}}var le=require("@budibase/backend-core");var Rn=require("@budibase/types"),ba=require("@budibase/string-templates"),Ia=require("@budibase/backend-core"),oC=Ia.constants.MIN_VALID_DATE.toISOString(),sC=Ia.constants.MAX_VALID_DATE.toISOString();function qs(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||oC,e.endDate=e.endDate||sC),e}async function Vf(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(a=>Ia.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=qs(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}function Ds(e,t,r){let a={_id:e,status:Rn.AuditLogResourceStatus.DELETED};switch(t){case"app":a.name=r?.appName;break;case"user":a.email=r?.email;break}return a}function Ns(e){let t=(0,ba.findHBSBlocks)(e);for(let r of t){let a=` "${r}"`;e=e.replace(e.includes(a)?a:` ${r}`,""),e=(0,ba.processStringSync)(e,{})}return e}function Yf(e,t){let r=Rn.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let a=(0,ba.processStringSync)(r,t);return a.includes('""')&&(a=Ns(r)),a}async function iC(e,t,r){if(!await gn()||!le.utils.isAudited(e))return;let a=Yf(e,t),n=new Date;r?.timestamp&&(n=new Date(r.timestamp));let o={timestamp:n.toISOString(),event:e,name:a,userId:r?.userId||_n.AuditLogSystemUser,metadata:{...t,...r?.hostInfo}},s={};try{if(r?.appId){o.appId=le.db.getProdAppID(r.appId);let i=await le.cache.app.getAppMetadata(r.appId);"name"in i&&(s.appName=i.name)}if(r?.userId){let i=await le.users.getById(r?.userId);s.email=i.email}}catch(i){le.logging.logAlert("Failed to retrieve fallback information for audit log",i)}return o.fallback=s,await $f(o)}async function uC(e){let t=e.map(i=>i.userId),a=e.filter(i=>i.appId).map(i=>le.db.getDevAppID(i.appId)),n=await le.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),o=await le.db.getAppsByIDs([...new Set(a)]),s=[];for(let i of e){let p=n.find(h=>h?._id===i.userId),m=o.find(h=>le.db.isSameAppID(h?.appId,i.appId)),f={event:i.event,timestamp:i.timestamp,name:i.name,metadata:i.metadata,user:p||Ds(i.userId,"user",i.fallback)};i.appId&&(f.app=m||Ds(i.appId,"app",i.fallback)),s.push(f)}return s}async function pC(e){if(!await gn())throw new Error("Audit logs not available - license required.");let t=await Vf(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await Us(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await uC(r.rows)}}function cC(e){return e=qs(e),Kf(e)}function lC(){let e=Object.entries(_n.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=Ns(r[1]);return t}var xn={};w(xn,{applications:()=>ks,roles:()=>Ms,users:()=>Bs});var Bs={};w(Bs,{roleCheck:()=>fC});function dC(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 fC(e,t){return await tt()||dC(e,t),e}var Ms={};w(Ms,{assign:()=>mC,unAssign:()=>gC});var Sa=require("@budibase/backend-core");async function mC(e,t){if(!await tt())throw new Error("Unable to assign roles - license required.");let r=await Ve.bulkGet(e);for(let a of r){if(t.role&&t.role.roleId){let n=Sa.db.getProdAppID(t.role.appId);a.roles[n]=t.role.roleId}if(t.appBuilder){let n=Sa.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 Ve.bulkUpdate(r)}async function gC(e,t){if(!await tt())throw new Error("Unable to un-assign roles - license required.");let r=await Ve.bulkGet(e);for(let a of r){if(t.role){let n=Sa.db.getProdAppID(t.role?.appId);a.roles[n]===t.role.roleId&&delete a.roles[n]}if(t.appBuilder&&a.builder?.apps){let n=Sa.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 ks={};w(ks,{buildExportFn:()=>yC,buildImportFn:()=>hC});var Gs=require("@budibase/backend-core");function hC(e){return async(t,r)=>{await tt()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await Gs.context.doInAppContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}function yC(e){return async(t,r)=>{await tt()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:a,excludeRows:n}=t.request.body;await Gs.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 He=require("@budibase/backend-core"),ue=require("@budibase/types");var Fs=require("@budibase/backend-core"),Hf;function zf(){Hf=new Fs.queue.BudibaseQueue(Fs.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}function Dt(){return Hf}var Jf=require("path"),Xf=P(require("fs"));async function Qs(e,t={}){return Te.storeAppBackupMetadata(e,t)}function Zf(e){let t=new Date().toISOString();switch(e){case ue.AppBackupStatus.COMPLETE:case ue.AppBackupStatus.FAILED:return{timestamp:t,finishedAt:t};case ue.AppBackupStatus.STARTED:return{timestamp:t,startedAt:t};case ue.AppBackupStatus.PENDING:return{timestamp:t,createdAt:t}}}async function AC(e,t,r,a){let n=await Cn(e);return await Te.storeAppBackupMetadata({...n,...Zf(t),contents:r,status:t,type:ue.AppBackupType.BACKUP},{filename:a,docId:e})}async function bC(e,t,r){let a=await Cn(e);return await Te.storeAppBackupMetadata({...a,...Zf(r),status:r,type:ue.AppBackupType.RESTORE,trigger:ue.AppBackupTrigger.MANUAL},{docId:e,docRev:t})}async function Cn(e){return Te.getAppBackupMetadata(e)}async function IC(e,t){return Te.updateAppBackupMetadata(e,t)}async function SC(e){let t=await Te.getAppBackupMetadata(e);return t.filename&&await He.objectStore.deleteFile(He.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),Te.deleteAppBackupMetadata(e)}async function wC(e,t){return Te.fetchAppBackups(e,t)}async function em(e){let t=await Te.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let r=await He.objectStore.getReadStream(He.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}async function TC(e){let{stream:t}=await em(e),r=(0,Jf.join)(He.objectStore.budibaseTempDir(),He.utils.newid()),a=Xf.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 vC(e,t,r={}){let a;try{a=await Qs({appId:e,trigger:t,timestamp:new Date().toISOString(),status:ue.AppBackupStatus.PENDING,type:ue.AppBackupType.BACKUP,...r})}catch(n){if(n.status===409)return;throw n}return await Dt().add({docId:a.id,docRev:a.rev,appId:e,export:{trigger:t,...r}}),await He.events.backup.appBackupTriggered(e,a.id,ue.AppBackupType.BACKUP,t,r?.name),a.id}async function EC(e,t,r,a){let n=await Cn(t),o;try{o=await Qs({appId:e,timestamp:new Date().toISOString(),status:ue.AppBackupStatus.PENDING,type:ue.AppBackupType.RESTORE,createdBy:a})}catch(s){if(s?.status===409)return;throw s}return await Dt().add({appId:e,docId:o.id,docRev:o.rev,import:{nameForBackup:r,backupId:t,createdBy:a}}),{restoreId:o.id,metadata:n}}var RC={isEnabled:us,triggerAppRestore:ye(EC),triggerAppBackup:ye(vC),getBackupDownloadStream:ye(em),downloadAppBackup:ye(TC),fetchAppBackups:ye(wC),storeAppBackupMetadata:ye(Qs),updateBackupStatus:ye(AC),updateRestoreStatus:ye(bC),getAppBackup:ye(Cn),updateAppBackup:ye(IC),deleteAppBackup:ye(SC)},ot=RC;var $s={};w($s,{init:()=>Ws});var J=require("@budibase/backend-core");var Be=require("@budibase/types");var fr=P(require("fs"));async function Ws(e){Dt().process(async t=>{let r=t.data;try{if(r.export)return CC(t,e);if(r.import)return xC(t,e)}catch(a){J.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,a)}})}async function _C(e){await J.db.getDB(e,{skip_setup:!0}).destroy()}async function tm(e,t,r,a){let n=J.db.getDevAppID(r),o=J.db.getProdAppID(r),s=new Date().toISOString(),i=async(p,m)=>{a?.doc?await ot.updateBackupStatus(a.doc.id,p,m?.contents,m?.filename):await ot.storeAppBackupMetadata({appId:o,timestamp:s,trigger:e,status:p,name:a?.name,type:Be.AppBackupType.BACKUP,contents:m?.contents,createdBy:a?.createdBy},{filename:m?.filename})};try{let p=await a.processing.exportAppFn(n,{tar:!0}),m=await a.processing.statsFn(n),f=`${o}/backup-${s}.tar.gz`,h=J.objectStore.ObjectStoreBuckets.BACKUPS,g=fr.default.createReadStream(p);await J.objectStore.streamUpload({bucket:h,filename:f,stream:g,extra:{type:"application/gzip",metadata:{name:a?.name,trigger:e,timestamp:s,appId:o}}}),await i(Be.AppBackupStatus.COMPLETE,{filename:f,contents:m}),fr.default.existsSync(p)&&fr.default.rmSync(p)}catch(p){J.logging.logAlert("App backup error",p),await i(Be.AppBackupStatus.FAILED)}}async function xC(e,t){let r=e.data,a=r.appId,n=r.import.backupId,o=r.import.nameForBackup,s=r.import.createdBy,i=J.tenancy.getTenantIDFromAppID(a);return J.tenancy.doInTenant(i,async()=>{let p=J.db.getDevAppID(a),{rev:m}=await ot.updateRestoreStatus(r.docId,r.docRev,Be.AppBackupStatus.STARTED);await tm(Be.AppBackupTrigger.RESTORING,i,a,{processing:t,createdBy:s,name:o});let f=await ot.downloadAppBackup(n);await _C(p);let h=Be.AppBackupStatus.COMPLETE;try{await t.importAppFn(p,J.db.getDB(p),{file:{type:"application/gzip",path:f},key:f})}catch(g){J.logging.logAlert("App restore error",g),h=Be.AppBackupStatus.FAILED}await ot.updateRestoreStatus(r.docId,m,h),fr.default.existsSync(f)&&fr.default.rmSync(f,{force:!0})})}async function CC(e,t){let r=e.data,a=r.appId,n=r.export.trigger,o=r.export.name,s=J.tenancy.getTenantIDFromAppID(a);await J.tenancy.doInTenant(s,async()=>{try{let{rev:i}=await ot.updateBackupStatus(r.docId,Be.AppBackupStatus.STARTED);return tm(n,s,a,{processing:t,doc:{id:r.docId,rev:i},name:o})}catch(i){J.logging.logAlert("App backup error",i)}})}var LC=async e=>{zf(),await Ws(e.processing)},Ee={...ot,processing:$s,init:LC,getBackupQueue:Dt};var rm=async e=>{e.backups&&await Ee.init(e.backups)};var fe={};w(fe,{create:()=>TM,find:()=>wM,get:()=>SM,remove:()=>EM,update:()=>vM});var vA=P(Gi()),st=require("@budibase/backend-core");var EA=require("@budibase/types");async function SM(e){let t=st.tenancy.getGlobalDB(),r=new st.db.QueryBuilder(t.name,EA.SearchIndex.USER);r.setIndexBuilder(st.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 wM(e){return await st.users.getById(e)}async function TM(e){let t=await Ve.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new st.HTTPError("User is already synched",409);e={...t,scimInfo:(0,vA.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await Ve.save(e,{requirePassword:!1})}async function vM(e,t){return await Ve.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}async function EM(e){return await Ve.destroy(e)}var br={};w(br,{create:()=>RM});var RA=P(Gi());var _A=require("@budibase/backend-core");async function RM(e){let t=await mo(e.name),r;if(!t)r=(await j.save(e)).id;else{if(t.scimInfo?.isSync)throw new _A.HTTPError("Group is already synched",409);r=t._id,t.users&&(await j.removeUsers(r,t.users.map(n=>n._id)),delete t.users),t.scimInfo=(0,RA.default)(t.scimInfo,e.scimInfo),await j.save(t)}return await j.get(r)}var Bt={};w(Bt,{logRequest:()=>_M,logResponse:()=>xM});var ki=require("@budibase/backend-core");async function _M(e){ki.logging.logWarn("SCIM request log",e)}async function xM(e){ki.logging.logWarn("SCIM response error",e)}var Ki={};w(Ki,{doInScimContext:()=>Qi,feature:()=>W,internalGroupOnly:()=>Wn,licenseAuth:()=>LA,licensing:()=>xA,requireSCIM:()=>ji,scimGroupOnly:()=>Ea,scimUserOnly:()=>va});var At=require("@budibase/backend-core");var Qn=require("@budibase/types"),CM=(e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(At.env.SELF_HOSTED&&At.env.DEFAULT_LICENSE)return t.user.license=ho,r();t.user.license=await je.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(At.utils.isServingApp(t)||At.utils.isServingBuilder(t)||At.utils.isServingBuilderPreview(t)||At.utils.isPublicApiRequest(t))&&await Ke.usageLimitIsExceeded(Qn.StaticQuotaName.USERS,Qn.QuotaUsageType.STATIC)}return r()},xA=CM;var W={};w(W,{requireFeature:()=>LM,requireFeatures:()=>OM});var LM=e=>async(t,r)=>{await mn(e),await r()},OM=(...e)=>async(t,r)=>{await is(e),await r()};var jn=require("@budibase/backend-core");var Qi=async(e,t)=>(jn.env.DISABLE_SCIM_CALLS||await Bt.logRequest({...e.request.toJSON(),body:e.request.body}),await jn.context.doInScimContext(async()=>{let r=await t();return await Bt.logResponse({...e.response.toJSON(),body:e.response.body}),r}));var ji=async(e,t)=>{await ls(),await t()};var CA=require("@budibase/backend-core");var va=e=>Wi(CA.users.getById,e,!0),Ea=e=>Wi(M.get,e,!0),Wn=e=>Wi(M.get,e,!1);function Wi(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 Ra=require("@budibase/backend-core");var $i=require("dd-trace");async function LA(e,t){await $i.tracer.trace("licenseAuth",async r=>{let a=e.request.headers[Ra.constants.Header.LICENSE_KEY];Array.isArray(a)&&(a=a[0]),r.addTags({licenseKey:a}),a||e.throw(403,"License key not provided");let n=await as(a);n||(r.addTags({licenseFound:!1}),e.throw(403,"License not found or invalid")),n.tenantId||e.throw(403,"License does not have a tenant ID"),$i.tracer.setUser({id:"anonymous",tenantId:n.tenantId}),await Ra.context.doInSelfHostTenantUsingCloud(n.tenantId,async()=>{await Ra.context.doInLicenseContext(n,async()=>{await t()})})})}var tu={};w(tu,{appBackups:()=>hb,auditLogs:()=>ob,environmentVariables:()=>JA,groups:()=>QA,scim:()=>Kb,users:()=>Jb});async function OA(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let a=await qt(t._id);t.roles=a.roles,t.scimInfo=a.scimInfo}let r=await dr(t);e.body={_id:r.id,_rev:r.rev}}async function PA(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 Ss(t,r)),a&&(o=await ws(t,a)),e.body={added:n,removed:o}}async function UA(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 Ts(t,{appsToAdd:r,appsToRemove:a})}async function qA(e){e.body={data:await ha()}}async function DA(e){let{groupId:t,rev:r}=e.params;try{await Is(t,r),e.body={message:"Group deleted successfully"}}catch(a){e.throw(a.status,a)}}async function NA(e){try{e.body=await qt(e.params.groupId)}catch(t){e.throw(t.status,t)}}async function BA(e){let{pageSize:t=10,bookmark:r,emailSearch:a}=e.request.query,n=e.params.groupId,o={limit:t+1},s=await Fa(n,{...o,emailSearch:a,bookmark:r}),i=a?s[t]?.email:s[t]?._id,p=!!i;e.body={users:s.slice(0,t),bookmark:i,hasNextPage:p}}async function MA(e){let{groupId:t,appId:r}=e.params;await vs(t,r),e.body={message:"Group app builder access updated."}}async function GA(e){let{groupId:t,appId:r}=e.params;await Es(t,r),e.body={message:"group app builder access removed."}}var kA=P(require("@koa/router")),Ae=P(require("joi"));var Re=require("@budibase/types"),ze=require("@budibase/backend-core"),FA=new kA.default;function UM(){return ze.auth.joiValidator.body(Ae.default.object({_id:Ae.default.string().optional(),_rev:Ae.default.string().optional(),color:Ae.default.string().required(),icon:Ae.default.string().required(),name:Ae.default.string().trim().required().max(50),role:Ae.default.string().optional(),users:Ae.default.array().optional(),apps:Ae.default.array().optional(),roles:Ae.default.object().optional(),createdAt:Ae.default.string().optional(),updatedAt:Ae.default.string().optional()}).required())}FA.post("/api/global/groups",ze.auth.adminOnly,W.requireFeature(Re.Feature.USER_GROUPS),UM(),OA).get("/api/global/groups",W.requireFeature(Re.Feature.USER_GROUPS),qA).delete("/api/global/groups/:groupId/:rev",W.requireFeature(Re.Feature.USER_GROUPS),ze.auth.adminOnly,Wn("groupId"),DA).get("/api/global/groups/:groupId",W.requireFeature(Re.Feature.USER_GROUPS),ze.auth.builderOrAdmin,NA).get("/api/global/groups/:groupId/users",W.requireFeature(Re.Feature.USER_GROUPS),ze.auth.builderOrAdmin,BA).post("/api/global/groups/:groupId/users",ze.auth.adminOnly,W.requireFeature(Re.Feature.USER_GROUPS),Wn("groupId"),PA).post("/api/global/groups/:groupId/apps",ze.auth.builderOrAdmin,W.requireFeature(Re.Feature.USER_GROUPS),UA).post("/api/global/groups/:groupId/app/:appId/builder",ze.auth.builderOrAdmin,W.requireFeatures(Re.Feature.USER_GROUPS,Re.Feature.APP_BUILDERS),MA).delete("/api/global/groups/:groupId/app/:appId/builder",ze.auth.builderOrAdmin,W.requireFeatures(Re.Feature.USER_GROUPS,Re.Feature.APP_BUILDERS),GA);var QA=FA;var Vi=require("@budibase/types");var Yi=require("@budibase/backend-core");async function jA(e){e.body={encryptionKeyAvailable:Ye.isEncryptionKeyAvailable()}}async function WA(e){e.body={variables:await Ye.fetch()}}async function $A(e){let{name:t,production:r,development:a}=e.request.body;await Ye.update(t,{production:r,development:a});let n=[Vi.AppEnvironment.PRODUCTION];r!==a&&n.push(Vi.AppEnvironment.DEVELOPMENT),await Yi.events.environmentVariable.created(t,n),e.body={message:`Environment variable "${t}" created.`}}async function KA(e){let{production:t,development:r}=e.request.body,a=e.params.varName;await Ye.update(a,{production:t,development:r}),e.body={message:`Environment variable "${a}" updated.`}}async function VA(e){let t=e.params.varName;await Ye.remove(t),await Yi.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}var Mt=require("@budibase/backend-core"),HA=P(require("@koa/router")),_a=P(require("joi")),zA=new HA.default;function YA(){return Mt.auth.joiValidator.body(_a.default.object({name:_a.default.string().optional(),production:_a.default.string().required(),development:_a.default.string().required()}))}zA.get("/api/env/variables/status",Mt.auth.builderOrAdmin,jA).get("/api/env/variables",Mt.auth.builderOrAdmin,WA).post("/api/env/variables",Mt.auth.builderOrAdmin,YA(),$A).patch("/api/env/variables/:varName",Mt.auth.builderOrAdmin,YA(),KA).delete("/api/env/variables/:varName",Mt.auth.builderOrAdmin,VA);var JA=zA;var Hi=require("@budibase/backend-core");async function XA(e){let t=e.request.body,r=await yt.fetch(t);await Hi.events.auditLog.filtered(t),e.body=r}async function ZA(e){let t=e.request.body,{stream:r}=yt.download(t);await Hi.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}async function eb(e){e.body={events:yt.definitions()}}var rb=require("@budibase/types"),Gt=require("@budibase/backend-core"),ab=P(require("@koa/router")),_e=P(require("joi"));function tb(){return Gt.auth.joiValidator.body(_e.default.object({userIds:_e.default.array().items(_e.default.string()).optional(),appIds:_e.default.array().items(_e.default.string()).optional(),events:_e.default.array().items(_e.default.string().valid(...Object.values(rb.Event))).optional(),startDate:_e.default.string().optional().allow(""),endDate:_e.default.string().optional().allow(""),fullSearch:_e.default.string().optional().allow(""),bookmark:_e.default.number()}))}var nb=new ab.default;nb.post("/api/global/auditlogs/search",Gt.auth.adminOnly,tb(),XA).get("/api/global/auditlogs/download",Gt.auth.adminOnly,Gt.middleware.querystringToBody,tb(),ZA).get("/api/global/auditlogs/definitions",Gt.auth.adminOnly,eb);var ob=nb;var zi=require("@budibase/types");var sb=require("@budibase/backend-core");async function Ir(e,t){await Vt.appExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}async function ib(e){let t=e.params.appId;await Ir(e,t);let r=e.request.body,a=e.user?._id,n=await Ee.triggerAppBackup(t,zi.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 ub(e){let t=e.params.appId;await Ir(e,t);let r=e.params.backupId,a=e.request.body.name,n=await Ee.triggerAppRestore(t,r,a,e.user?._id);n||e.throw(500,"Unable to start restore."),await sb.events.backup.appBackupRestored(n.metadata),e.body={restoredId:n?.restoreId,message:"Restore triggered - process starting."}}async function pb(e){let t=e.params.appId;await Ir(e,t);let r=e.params.backupId;await Ee.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}async function cb(e){let t=e.params.appId;await Ir(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(zi.AppBackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await Ee.fetchAppBackups(t,{paginate:!0,...r})}async function lb(e){let t=e.params.appId;await Ir(e,t);let r=e.params.backupId,a=e.request.body;e.body=await Ee.updateAppBackup(r,a.name)}async function fb(e){let t=e.params.appId;await Ir(e,t);let r=e.params.backupId,{metadata:a,stream:n}=await Ee.getBackupDownloadStream(r);e.attachment(`backup-${a.timestamp}.tar.gz`),e.body=n}var mb=P(require("@koa/router")),kt=P(require("joi")),$n=require("@budibase/types"),bt=require("@budibase/backend-core"),gb=new mb.default;function BM(){return bt.auth.joiValidator.body(kt.default.object({trigger:kt.default.string().valid(...Object.values($n.AppBackupTrigger)),type:kt.default.string().valid(...Object.values($n.AppBackupType)),startDate:kt.default.date(),endDate:kt.default.date(),page:kt.default.string()}))}gb.post("/api/apps/:appId/backups",bt.auth.builderOrAdmin,ib).post("/api/apps/:appId/backups/search",bt.auth.builderOrAdmin,BM(),cb).get("/api/apps/:appId/backups/:backupId/file",bt.auth.builderOrAdmin,fb).patch("/api/apps/:appId/backups/:backupId",bt.auth.builderOrAdmin,lb).delete("/api/apps/:appId/backups/:backupId",bt.auth.builderOrAdmin,pb).post("/api/apps/:appId/backups/:backupId/import",bt.auth.builderOrAdmin,ub);var hb=gb;var $b=P(require("@koa/router"));var Kn=require("scim-patch");var Ab=require("@budibase/backend-core");function yb(e,t){let r=e.request.query[t];if(r!==void 0)return+r}var bb=async e=>{let t=yb(e,"pageSize")??20,r=yb(e,"startIndex"),a;e.request.query.filter&&(a=V.user.userFilters(e.request.query.filter));let n=await fe.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(V.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},Ib=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await fe.find(t);e.body=V.user.toScimUserResponse(r)},Sb=async e=>{let t=V.user.fromScimUser(e.request.body);try{let r=await fe.create(t);e.body=V.user.toScimUserResponse(r)}catch(r){throw r instanceof Ab.EmailUnavailableError&&e.throw(409,"Email already in use"),r}};function MM(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 wb=async e=>{let t=await fe.find(e.params.id);t||e.throw(404);let r=V.user.toScimUserResponse(t),a=e.request.body;try{(0,Kn.patchBodyValidation)(a)}catch{}if(MM(a))return Ji(e);let n;try{n=(0,Kn.scimPatch)(r,a.Operations)}catch{}n||e.throw(500);let o=V.user.fromScimUser(n);await fe.update(o,{allowChangingEmail:!0}),e.body=V.user.toScimUserResponse(o)},Ji=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await fe.remove(t),e.status=204};var Bb=P(Nb()),Mb=require("@budibase/shared-core"),Vn=require("scim-patch");var Yn=require("scim2-parse-filter");function Gb(e,t){for(let r of t.split(","))delete e[r]}var kb=async e=>{let r=(await j.fetch()).filter(o=>o.scimInfo?.isSync).map(V.group.toScimGroupResponse),{filter:a,excludedAttributes:n}=e.request.query;if(a){let o=(0,Yn.filter)((0,Yn.parse)(a));r=r.filter(o)}n&&r.forEach(o=>{Gb(o,n)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},Fb=async e=>{let t=V.group.fromScimGroup(e.request.body),r=await br.create(t);e.body=V.group.toScimGroupResponse(r)},Qb=async e=>{let{id:t}=e.params,r=await j.get(t),a=V.group.toScimGroupResponse(r),{excludedAttributes:n}=e.request.query;n&&Gb(a,n),e.body=a},jb=async e=>{let{id:t}=e.params,r=await j.get(t);await j.remove(t,r._rev),e.status=204},Wb=async e=>{let{id:t}=e.params,r=await j.get(t),a=V.group.toScimGroupResponse(r),n=e.request.body;try{(0,Vn.patchBodyValidation)(n)}catch{e.throw(400)}let{true:o,false:s}=(0,Bb.default)(n.Operations,i=>i.path==="members");if(s?.length){let i=(0,Vn.scimPatch)(a,s);i||e.throw(500);let p={...V.group.fromScimGroup(i),_rev:r._rev};await j.save(p)}if(o?.length){let i=[],p=[];for(let{op:m,value:f}of o)switch(m){case"add":case"Add":for(let h of f)i.push(await fe.find(h.value));break;case"remove":case"Remove":for(let h of f)p.push(await fe.find(h.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:Mb.utils.unreachable(m)}i.length&&await j.addUsers(t,i.map(m=>m._id)),p.length&&await j.removeUsers(t,p.map(m=>m._id))}e.body=V.group.toScimGroupResponse(await j.get(t))};var xa=require("@budibase/types"),be=new $b.default({prefix:"/api/global/scim/v2"});be.use(ji);be.use(Qi);be.get("/users",bb);be.get("/users/:id",va("id"),Ib);be.post("/users",Sb);be.patch("/users/:id",va("id"),wb);be.delete("/users/:id",va("id"),Ji);be.get("/groups",kb);be.post("/groups",W.requireFeature(xa.Feature.USER_GROUPS),Fb);be.get("/groups/:id",W.requireFeature(xa.Feature.USER_GROUPS),Ea("id"),Qb);be.delete("/groups/:id",W.requireFeature(xa.Feature.USER_GROUPS),Ea("id"),jb);be.patch("/groups/:id",W.requireFeature(xa.Feature.USER_GROUPS),Ea("id"),Wb);var Kb=be;var Hb=P(require("@koa/router"));var Xi=require("@budibase/backend-core");async function Vb(e){let{userId:t,appId:r}=e.params,a=await at.db.getUser(t);if(Xi.users.isGlobalBuilder(a)){e.body={message:"User already admin - no permissions updated."};return}await at.addAppBuilder(a,r),e.body={message:`User "${a.email}" app builder access updated.`}}async function Yb(e){let{userId:t,appId:r}=e.params,a=await at.db.getUser(t);if(Xi.users.isGlobalBuilder(a)){e.body={message:"User already admin - no permissions removed."};return}await at.removeAppBuilder(a,r),e.body={message:`User "${a.email}" app builder access removed.`}}var Zi=require("@budibase/types"),eu=require("@budibase/backend-core"),zb=new Hb.default;zb.post("/api/global/users/:userId/app/:appId/builder",eu.auth.builderOrAdmin,W.requireFeatures(Zi.Feature.APP_BUILDERS),Vb).delete("/api/global/users/:userId/app/:appId/builder",eu.auth.builderOrAdmin,W.requireFeatures(Zi.Feature.APP_BUILDERS),Yb);var Jb=zb;var V={};w(V,{group:()=>au,user:()=>ru});var ru={};w(ru,{fromScimUser:()=>fG,toScimUserResponse:()=>cG,userFilters:()=>mG});var Hn=require("@budibase/types"),Xb=require("scim2-parse-filter"),Zb=require("@budibase/backend-core"),eI=require("@budibase/shared-core"),{unreachable:pG}=eI.utils,cG=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===Hn.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},lG=e=>!!e?.id;function dG(e){if(Zb.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}var fG=e=>{let t=lG(e)?e:void 0,r=dG(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:pG(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?Hn.UserStatus.ACTIVE:Hn.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},mG=e=>{let t={equal:{}},r=(0,Xb.parse)(e);function a(n){switch(n.op){case"eq":{let o=n.attrPath,s;switch(o){case"emails.value":s="email";break;default:s=`scimInfo.${o}`}t.equal[s]=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 au={};w(au,{fromScimGroup:()=>yG,toScimGroupResponse:()=>gG});var gG=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()}};var _u={};w(_u,{LLM:()=>Je,LLMRequest:()=>$,TableGeneration:()=>Ru,agentHistoryTitleSystemPrompt:()=>xG,agentSystemPrompt:()=>_G,aiColumnSchemas:()=>vu,aiTableResponseToTableSchema:()=>Iu,appendAIColumns:()=>Su,classifyText:()=>su,cleanData:()=>iu,extractFileData:()=>TG,generateAIColumns:()=>Au,generateCode:()=>RG,generateCronExpression:()=>uu,generateData:()=>bu,generateJs:()=>du,generateSQL:()=>EG,generateTables:()=>yu,generationStructure:()=>Tu,getLLM:()=>Oa,getLLMConfig:()=>hu,getLLMOrThrow:()=>cI,normalizeContentType:()=>nu,parseResponseFormat:()=>Jn,sanitiseToolName:()=>AG,searchWeb:()=>lu,sentimentAnalysis:()=>cu,summarizeText:()=>zn,tableDataStructuredOutput:()=>Eu,translate:()=>pu});var Ca=require("@budibase/types");function AG(e){if(e.length>64)throw new Error("Tool name must be under 64 characters long");return e.replace(/[^a-zA-Z0-9_-]/g,"_")}function nu(e){return e?e.includes("/")?e:{[Ca.SupportedFileType.PDF]:"application/pdf",[Ca.SupportedFileType.JPG]:"image/jpeg",[Ca.SupportedFileType.JPEG]:"image/jpeg",[Ca.SupportedFileType.PNG]:"image/png"}[e.toLowerCase()]||"application/octet-stream":"application/octet-stream"}var ro=require("@budibase/types");var Xe=require("@budibase/backend-core"),sI=require("@budibase/types");var Xn=P(require("openai"));var It=require("@budibase/types");var tI=require("@budibase/shared-core");var St=P(require("dd-trace"));function ou(e,t){return t.map(r=>e[r]).join(" ")}var Je=class{constructor({model:t,apiKey:r,maxTokens:a}){this._model=t,this._apiKey=r,this._maxTokens=a??parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"300")}get model(){return this._model}get apiKey(){return this._apiKey}get maxTokens(){return this._maxTokens}async prompt(t){return await St.default.trace("prompt",async()=>{let r=typeof t=="string"?new $().addUserMessage(t):t,{messages:a,tokensUsed:n}=await St.default.trace("chatCompletion",()=>this.chatCompletion(r));return!a||a.length===0?{message:"",tokensUsed:n}:{message:a[a.length-1].content||"",tokensUsed:n}})}async chat(t){return await St.default.trace("chat",async()=>await this.chatCompletion(t))}async*chatStream(t){yield*this.chatCompletionStream(t)}async summarizeText(t){return St.default.trace("summarizeText",()=>this.prompt(zn(t)))}async generateCronExpression(t){return St.default.trace("generateCronExpression",()=>this.prompt(uu(t)))}async operation(t,r){return St.default.trace("operation",a=>{a.addTags({operation:t.operation,rowId:r.id});let n=this.promptForOperation(t,r);return this.prompt(n)})}promptForOperation(t,r){let{operation:a,column:n,columns:o,language:s,categories:i,prompt:p}=t;switch(a){case It.AIOperationEnum.SUMMARISE_TEXT:return zn(ou(r,o));case It.AIOperationEnum.CLEAN_DATA:return iu(r[n]);case It.AIOperationEnum.TRANSLATE:return pu(r[n],s);case It.AIOperationEnum.CATEGORISE_TEXT:if(!i)throw Error("No categories provided for categorise text operation. Please provide categories.");return su(ou(r,o),i.split(","));case It.AIOperationEnum.SENTIMENT_ANALYSIS:return cu(r[n]);case It.AIOperationEnum.PROMPT:return p;case It.AIOperationEnum.SEARCH_WEB:return lu(ou(r,o));default:throw tI.utils.unreachable(a)}}async generateJs(t,r){return await St.default.trace("generateJs",async()=>{let{bindings:a=[],snippets:n=[]}=r||{};return await this.prompt(du(a,n).addUserMessage(t))})}};var aI=require("@budibase/types"),fu=require("openai/helpers/zod");function Jn(e){if(e)return e==="text"?{type:"text"}:e==="json"?{type:"json_object"}:e}function rI(e){if(!e)return 0;let t=e.prompt_tokens;return e.completion_tokens*3+t}var xe=class extends Je{constructor(r){super(r);this.client=this.getClient(r)}getClient(r){if(!r.apiKey)throw new Error("No OpenAI API key found");return new Xn.default({apiKey:r.apiKey})}async uploadFile(r,a,n){let o=nu(n);if(aI.ImageContentTypes.includes(o.toLowerCase())){let p;if(Buffer.isBuffer(r))p=r;else{let f=[];for await(let h of r)f.push(h);p=Buffer.concat(f)}let m=p.toString("base64");return`data:${o};base64,${m}`}let s=await(0,Xn.toFile)(r,a);return(await this.client.files.create({file:s,purpose:"assistants"})).id}async chatCompletion(r){let a={model:this.model,messages:r.messages,max_tokens:this.maxTokens,response_format:Jn(r.format)};r.tools&&r.tools.length>0&&(a.tool_choice="auto",a.tools=r.tools.map(fu.zodFunction));let n=await this.client.chat.completions.create(a),o=n.choices[0]?.message;if(o?.tool_calls){r.addMessage(o);let s=[];for(let i of o.tool_calls){let p=r.findTool(i.function.name);if(!p)throw new Error(`Tool ${i.function.name} not found in prompt tools`);let m=JSON.parse(i.function.arguments);s.push(p.handler(m).then(f=>({role:"tool",tool_call_id:i.id,content:f})).catch(f=>(console.error(`[OPENAI TOOL ERROR] Tool ${i.function.name} failed in OpenAI handler:`,f),{role:"tool",tool_call_id:i.id,content:`Error: ${f.message}`})))}return r.addMessages(await Promise.all(s)),this.chatCompletion(r)}else{if(o?.content)return{messages:[...r.messages,{role:o.role,content:o.content}],tokensUsed:rI(n.usage)};throw new Error("No response found")}}async*chatCompletionStream(r){let a={model:this.model,messages:r.messages,max_tokens:this.maxTokens,response_format:Jn(r.format),stream:!0};r.tools&&r.tools.length>0&&(a.tool_choice="auto",a.tools=r.tools.map(fu.zodFunction));try{let n=await this.client.chat.completions.create(a),o=null,s="",i=null;for await(let m of n){let f=m.choices[0]?.delta;if(f){if(f.content&&(s+=f.content,yield{type:"content",content:f.content}),f.tool_calls&&f.tool_calls.length>0){let h=f.tool_calls[0];h.id?(o={id:h.id,name:h.function?.name||"",arguments:h.function?.arguments||""},yield{type:"tool_call_start",toolCall:{id:o.id,name:o.name,arguments:o.arguments}}):o&&h.function?.arguments&&(o.arguments+=h.function.arguments,yield{type:"tool_call_start",toolCall:{id:o.id,name:o.name,arguments:o.arguments}})}m.usage&&(i=m.usage)}}let p=i?rI(i):0;if(o){r.addMessage({role:"assistant",content:"",tool_calls:[{id:o.id,type:"function",function:{name:o.name,arguments:o.arguments}}]});let m=r.findTool(o.name);if(m)try{let f=JSON.parse(o.arguments),h=await m.handler(f);yield{type:"tool_call_result",toolResult:{id:o.id,result:h}},r.addMessage({role:"tool",tool_call_id:o.id,content:h}),yield*this.chatCompletionStream(r);return}catch(f){yield{type:"tool_call_result",toolResult:{id:o.id,result:`Error: ${f.message}`,error:f.message}},r.addMessage({role:"tool",tool_call_id:o.id,content:`Error: ${f.message}`}),yield*this.chatCompletionStream(r);return}else{let f=`Tool '${o.name}' not found`;yield{type:"tool_call_result",toolResult:{id:o.id,result:f,error:f}},r.addMessage({role:"tool",tool_call_id:o.id,content:f}),yield*this.chatCompletionStream(r);return}}s&&r.addMessage({role:"assistant",content:s}),yield{type:"done",messages:r.messages,tokensUsed:p}}catch(n){yield{type:"error",content:n.message}}}};var ee=require("@budibase/backend-core"),nI=require("@budibase/types");var mu=require("dd-trace"),Zn=class extends Je{async prompt(t){let r=await super.prompt(t);return r.tokensUsed&&await In(r.tokensUsed),r}async chat(t){let r=await super.chat(t);return r.tokensUsed&&await In(r.tokensUsed),r}async uploadFile(t,r,a){return ee.env.SELF_HOSTED?this.uploadFileSelfHost(t,r,a):this.uploadFileCloud(t,r,a)}async uploadFileCloud(t,r,a){return new xe({apiKey:ee.env.OPENAI_API_KEY,model:this.model,maxTokens:this.maxTokens}).uploadFile(t,r,a)}async uploadFileSelfHost(t,r,a){let n;if(Buffer.isBuffer(t))n=t;else{let p=[];for await(let m of t)p.push(m);n=Buffer.concat(p)}let o=n.toString("base64");if(a&&nI.ImageContentTypes.includes(a.toLowerCase()))return`data:image/jpeg;base64,${o}`;if(!ee.env.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(!this._apiKey){let p=await dn();if(!p)throw new Error("No license key found");this._apiKey=p}let s=await fetch(`${ee.env.BUDICLOUD_URL}/api/ai/upload-file`,{method:"POST",headers:{"Content-Type":"application/json",[ee.constants.Header.LICENSE_KEY]:this._apiKey},body:JSON.stringify({data:o,filename:r,contentType:a})});if(!s.ok)throw await ee.HTTPError.fromResponse(s);return(await s.json()).fileId}async chatCompletion(t){return ee.env.SELF_HOSTED?this.chatCompletionSelfHost(t):this.chatCompletionCloud(t)}async chatCompletionCloud(t){return await mu.tracer.trace("chatCompletionCloud",async()=>await new xe({apiKey:ee.env.OPENAI_API_KEY,model:this.model,maxTokens:this.maxTokens}).chatCompletion(t))}async chatCompletionSelfHost(t){return await mu.tracer.trace("chatCompletionSelfHost",async r=>{if(!ee.env.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(r.addTags({budicloudUrl:ee.env.BUDICLOUD_URL}),!this._apiKey){let o=await dn();if(!o)throw new Error("No license key found");this._apiKey=o,r.addTags({licenseKey:this._apiKey})}let a={messages:t.messages,format:t.format,useTools:t.tools.length>0},n=await fetch(`${ee.env.BUDICLOUD_URL}/api/ai/chat`,{method:"POST",headers:{"Content-Type":"application/json",[ee.constants.Header.LICENSE_KEY]:this._apiKey},body:JSON.stringify(a)});if(!n.ok)throw await ee.HTTPError.fromResponse(n);return await n.json()})}async*chatCompletionStream(t){ee.env.SELF_HOSTED?yield*this.chatCompletionStreamSelfHost(t):yield*this.chatCompletionStreamCloud(t)}async*chatCompletionStreamCloud(t){yield*new xe({apiKey:ee.env.OPENAI_API_KEY,model:this.model,maxTokens:this.maxTokens}).chatCompletionStream(t)}async*chatCompletionStreamSelfHost(t){try{let r=await this.chatCompletionSelfHost(t);if(r.messages.length>0){let a=r.messages[r.messages.length-1];a.content&&(yield{type:"content",content:a.content})}yield{type:"done",messages:r.messages,tokensUsed:r.tokensUsed}}catch(r){yield{type:"error",content:r.message}}}};var La=require("dd-trace");var gu=P(require("@anthropic-ai/sdk"));function bG(e){if(!e)return 0;let t=e.input_tokens;return e.output_tokens*3+t}var eo=class extends Je{constructor(r){super(r);this.client=new gu.default({apiKey:r.apiKey})}firstTextBlock(r){for(let a of r.content)if(a.type==="text")return a.text}async uploadFile(r,a,n){throw new Error("File upload not supported for this LLM provider")}async chatCompletion(r){try{let a=await this.client.messages.create({model:this.model,messages:r.messages.map(({content:o})=>{if(o==null)return{role:"user",content:""};if(typeof o=="string")return{role:"user",content:o};let s="";for(let i of o)i.type==="text"?s+=i.text:["image_url","input_audio","file"].includes(i.type);return{role:"user",content:s}}),max_tokens:this.maxTokens}),n=this.firstTextBlock(a)||"";return{messages:[...r.messages,{role:"assistant",content:n}],tokensUsed:bG(a.usage)}}catch(a){throw a instanceof gu.default.APIError&&console.error(`Anthropic Prompt failed with error ${a.name} and status: ${a.status}`),a}}async*chatCompletionStream(r){try{let a=await this.chatCompletion(r);if(a.messages.length>0){let n=a.messages[a.messages.length-1];n.content&&(yield{type:"content",content:n.content})}yield{type:"done",messages:a.messages,tokensUsed:a.tokensUsed}}catch(a){yield{type:"error",content:a.message}}}};var iI=require("zod"),uI=require("openai/helpers/zod");var oI=require("openai"),to=class extends xe{getClient(t){if(!t.apiKey)throw new Error("No Azure OpenAI API key found");if(!t.model)throw new Error("No Azure OpenAI model specified");return new oI.AzureOpenAI({apiKey:t.apiKey,apiVersion:"2024-10-01-preview",deployment:t.model,baseURL:t.baseUrl})}};var pI="gpt-4o-mini",IG={OpenAI:xe,TogetherAI:xe,AzureOpenAI:to,Custom:xe,Anthropic:eo,BudibaseAI:Zn};async function SG(){return await La.tracer.trace("getAIConfig",async e=>{let t={type:sI.ConfigType.AI,config:{}};if(!Xe.context.isSelfHostUsingCloud()){let a=await Xe.configs.getAIConfig();a&&(t=a)}await ds(t);let r=Object.values(t.config).find(a=>a.active&&a.isDefault);if(!r){e.addTags({enabled:!1,reason:"no provider found"});return}return e.addTags({enabled:!0}),{provider:r.provider,model:r.defaultModel||pI,apiKey:r.apiKey,baseUrl:r.baseUrl}})}async function wG(){return La.tracer.trace("getSelfHostOpenAIKeyConfig",e=>{if(!Xe.env.SELF_HOSTED){e.addTags({enabled:!1,reason:"not self host"});return}if(!Xe.env.OPENAI_API_KEY){e.addTags({enabled:!1,reason:"no OPENAI_API_KEY"});return}return e.addTags({enabled:!0}),{provider:"OpenAI",model:pI,apiKey:Xe.env.OPENAI_API_KEY}})}async function hu(){return La.tracer.trace("getLLMConfig",async()=>await SG()||await wG())}async function Oa(e){return await La.tracer.trace("getLLM",async t=>{let{model:r,maxTokens:a}=e||{},n=await hu();if(!n){t.addTags({enabled:!1,reason:"no config found"});return}r&&(n.model=r),a&&(n.maxTokens=a);let o=IG[n.provider];if(!o){t.addTags({enabled:!1,reason:"no provider found",provider:n.provider});return}return new o(n)})}async function cI(){let e=await Oa();if(!e)throw new Xe.HTTPError("No available LLM configurations",500);return e}var $=class e{constructor(){this.messages=[];this.tools=[]}addTool(t){return this.tools.push(t),this}addTools(t){return this.tools.push(...t),this}findTool(t){return this.tools.find(r=>r.name===t)}withFormat(t){return t instanceof iI.z.ZodType?this.format=(0,uI.zodResponseFormat)(t,"key"):this.format=t,this}addMessage(t){return this.messages.push(t),this}addMessages(t){return this.messages.push(...t),this}addUserMessage(t){return this.messages.push({role:"user",content:t}),this}addSystemMessage(t){return this.messages.push({role:"system",content:t}),this}static fromRequest(t){let r=new e;return t.messages&&r.addMessages(t.messages),t.format&&r.withFormat(t.format),r}};var it=require("zod");function zn(e,t){let r=`Summarize this text:
39
- ${e}`,a="";if(t)switch(t){case ro.SummariseLength.SHORT:a="In 1-2 concise sentences, ";break;case ro.SummariseLength.MEDIUM:a="In 2-3 paragraphs, ";break;case ro.SummariseLength.LONG:a="In multiple detailed paragraphs, ";break}return new $().addUserMessage(`${a}${r}.
40
- Only return the summary.`)}function TG(e,t){let r=["You are a data extraction assistant.","Extract data from the attached document/image that matches the provided schema.","The schema defines the structure where values like 'string', 'number', 'boolean' indicate the expected data types.","Extract all items that match the schema from the document.","Return the data in json format","If no matching data is found, return an empty data array."].join(`
37
+ `;function Kr(e){return So.default.verify(e,yS,{algorithms:["RS256"]})}function AS(e,t){return So.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}var Ya={};w(Ya,{getFeatures:()=>wo});var l=require("@budibase/types");var bS={[l.PlanType.FREE]:[...ge.SELF_FREE_LICENSE.features],[l.PlanType.PREMIUM]:void 0,[l.PlanType.PREMIUM_PLUS]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.BUDIBASE_AI]},IS={[l.PlanType.FREE]:[...ge.CLOUD_FREE_LICENSE.features],[l.PlanType.PREMIUM]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.PDF],[l.PlanType.PREMIUM_PLUS]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.BUDIBASE_AI,l.Feature.PDF],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.BUDIBASE_AI,l.Feature.PDF],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.BRANDING],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.BRANDING],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.BUDIBASE_AI,l.Feature.PDF],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF]};function wo(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 l.Hosting.SELF:r=a(bS);break;case l.Hosting.CLOUD:r=a(IS);break}return r}var Ha={};w(Ha,{UNLIMITED:()=>d,getQuotas:()=>To});var G=require("@budibase/types");var c=Ze,bp=ge,d=-1,Yr=e=>e*1e6,SS={[G.PlanType.FREE]:{...bp.CLOUD_FREE_LICENSE.quotas},[G.PlanType.PREMIUM]:{usage:{monthly:{...c.queries(d),...c.automations(1e3),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(1e4),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(0),...c.plugins(d),...c.customAIConfigurations(0)}},constant:{...c.automationLogRetentionDays(7),...c.appBackupRetentionDays(7)}},[G.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...c.queries(d),...c.automations(5e3),...c.budibaseAICredits(Yr(2)),...c.actions(d)},static:{...c.rows(25e3),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(0),...c.plugins(d),...c.customAIConfigurations(1)}},constant:{...c.automationLogRetentionDays(30),...c.appBackupRetentionDays(30)}},[G.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...c.queries(d),...c.automations(5e3),...c.budibaseAICredits(Yr(2)),...c.actions(d)},static:{...c.rows(25e3),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(0),...c.plugins(d),...c.customAIConfigurations(1)}},constant:{...c.automationLogRetentionDays(30),...c.appBackupRetentionDays(30)}},[G.PlanType.PRO]:{usage:{monthly:{...c.queries(d),...c.automations(1e3),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(5),...c.plugins(d),...c.customAIConfigurations(0)}},constant:{...c.automationLogRetentionDays(7),...c.appBackupRetentionDays(7)}},[G.PlanType.TEAM]:{usage:{monthly:{...c.queries(d),...c.automations(5e3),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(10),...c.plugins(d),...c.customAIConfigurations(0)}},constant:{...c.automationLogRetentionDays(30),...c.appBackupRetentionDays(90)}},[G.PlanType.BUSINESS]:{usage:{monthly:{...c.queries(d),...c.automations(1e4),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(5e4),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(50),...c.plugins(d),...c.customAIConfigurations(0)}},constant:{...c.automationLogRetentionDays(365),...c.appBackupRetentionDays(365)}},[G.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(Yr(4)),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(d),...c.plugins(d),...c.customAIConfigurations(d)}},constant:{...c.automationLogRetentionDays(d),...c.appBackupRetentionDays(d)}},[G.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(Yr(4)),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(d),...c.plugins(d),...c.customAIConfigurations(d)}},constant:{...c.automationLogRetentionDays(15),...c.appBackupRetentionDays(15)}},[G.PlanType.ENTERPRISE]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(Yr(4)),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(d),...c.plugins(d),...c.customAIConfigurations(d)}},constant:{...c.automationLogRetentionDays(d),...c.appBackupRetentionDays(d)}}},wS={[G.PlanType.FREE]:{...bp.SELF_FREE_LICENSE.quotas},[G.PlanType.PREMIUM]:void 0,[G.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(0),...c.plugins(d),...c.customAIConfigurations(1)}},constant:{...c.automationLogRetentionDays(30),...c.appBackupRetentionDays(30)}},[G.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(0),...c.plugins(d),...c.customAIConfigurations(1)}},constant:{...c.automationLogRetentionDays(30),...c.appBackupRetentionDays(30)}},[G.PlanType.PRO]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(5),...c.plugins(d),...c.customAIConfigurations(0)}},constant:{...c.automationLogRetentionDays(7),...c.appBackupRetentionDays(7)}},[G.PlanType.TEAM]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(10),...c.plugins(d),...c.customAIConfigurations(0)}},constant:{...c.automationLogRetentionDays(30),...c.appBackupRetentionDays(90)}},[G.PlanType.BUSINESS]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(50),...c.plugins(d),...c.customAIConfigurations(0)}},constant:{...c.automationLogRetentionDays(90),...c.appBackupRetentionDays(365)}},[G.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(d),...c.plugins(d),...c.customAIConfigurations(d)}},constant:{...c.automationLogRetentionDays(d),...c.appBackupRetentionDays(d)}},[G.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(d),...c.plugins(d),...c.customAIConfigurations(d)}},constant:{...c.automationLogRetentionDays(15),...c.appBackupRetentionDays(15)}},[G.PlanType.ENTERPRISE]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(d),...c.plugins(d),...c.customAIConfigurations(d)}},constant:{...c.automationLogRetentionDays(d),...c.appBackupRetentionDays(d)}}};function To(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 G.Hosting.SELF:r=a(wS);break;case G.Hosting.CLOUD:r=a(SS);break}return JSON.parse(JSON.stringify(r))}var Vt={};w(Vt,{appExists:()=>TS,encoding:()=>Kt});var Ip=require("@budibase/backend-core");async function TS(e){return(await Ip.db.getAllApps({all:!0,idsOnly:!0})).includes(e)}var Kt={};w(Kt,{base64ToObject:()=>ES,objectToBase64:()=>vS});function vS(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}function ES(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}var af=require("@budibase/types"),sr=require("@budibase/backend-core"),nf=P(Nl()),of=P(Jo());async function ex(e){await Te.save({offlineLicenseToken:e}),await Ct()}async function tx(){await Te.save({offlineLicenseToken:void 0}),await Ct()}async function sf(){return(await Te.get()).offlineLicenseToken}async function Xo(){let t=(await sr.installation.getInstall()).installId,r=sr.context.getTenantId(),a=await sr.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:a}}async function rx(){let e=await Xo();return Kt.objectToBase64(e)}function ax(e){return Kt.base64ToObject(e)}function uf(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 pf(e){let t=await Xo();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}function cf(e){let t=e.plan.type,r=af.Hosting.SELF,a=wo(r,t),n=To(r,t);return e.features=(0,nf.default)(e.features,a),e.quotas=(0,of.default)(e.quotas,n),e}async function Zo(){try{let e=await sf();if(e){let t=await Kr(e);return uf(t),await pf(t),cf(t)}}catch(e){console.error("Error retrieving offline license",e)}}var fa={};w(fa,{deleteDevLicense:()=>ux,getOfflineLicense:()=>sx,writeDevLicenseToDisk:()=>ix});var lf=require("@budibase/backend-core"),ts=require("path"),df=require("os"),Ot=P(require("fs"));var nx=lf.env.isTest()?".budibase-test":".budibase",es=(0,ts.join)((0,df.tmpdir)(),nx),ox="dev_license.txt",da=(0,ts.join)(es,ox);if(!Ot.default.existsSync(es))try{Ot.default.mkdirSync(es)}catch{}function sx(){try{if(Ot.default.existsSync(da)){let e=Ot.default.readFileSync(da,{encoding:"utf-8"});return Kr(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}function ix(e){console.log(`Writing license to: ${da}`),Ot.default.writeFileSync(da,e,{encoding:"utf-8"})}function ux(){Ot.default.rmSync(da,{force:!0})}var as=async()=>{if(rs.env.OFFLINE_MODE)return Zo();let e=await $t();return e||(e=fa.getOfflineLicense()),e},ns=e=>bo(e),os=()=>rs.env.SELF_HOSTED?ge.SELF_FREE_LICENSE:ge.CLOUD_FREE_LICENSE;var is={};w(is,{activateLicenseKey:()=>px,deleteLicenseKey:()=>cx,getLicenseKey:()=>dn});var ss=P(require("dd-trace"));async function px(e){await Io(e),await Te.save({licenseKey:e}),await Ct()}async function dn(){return await ss.default.trace("getLicenseKey",async e=>{let t=await Te.get();return e.addTags({licenseKey:t.licenseKey}),t.licenseKey})}async function cx(){return await ss.default.trace("deleteLicenseKey",async()=>{await Te.save({licenseKey:void 0}),await Ct()})}var Lt=require("@budibase/backend-core"),fn=P(require("dd-trace")),ff=3600,Ct=async()=>{await hf(),await gf()},mf=async(e,t)=>{let{populateLicense:r=as,populateFreeLicense:a=os}=t||{};return await fn.default.trace("getCachedLicense",async n=>{let o=Lt.context.getLicense();if(o)return n.addTags({foundInContext:!0,features:o.features,plan:o.plan,quotas:o.quotas}),o;let s=Lt.tenancy.getTenantId(),i=await oo(),p=await i.get(s);return n.addTags({tenantId:s,foundInCache:!!p}),p?(n.addTags({foundInCache:!0,refreshedAt:p.refreshedAt,features:p.features,plan:p.plan,quotas:p.quotas}),p):(p=await fn.default.trace("populateLicense",async()=>await r(s)),n.addTags({populatedLicense:!!p}),p||(p=fn.default.trace("populateFreeLicense",()=>a(e,s)),n.addTags({populatedFreeLicense:!!p})),p.refreshedAt=new Date().toISOString(),n.addTags({refreshedAt:p.refreshedAt,features:p.features,plan:p.plan,quotas:p.quotas,expirySeconds:ff}),await i.store(s,p,ff),p)})};Lt.env.isJest()&&(mf=jest.fn());var gf=mf,hf=async()=>{let e=Lt.tenancy.getTenantId();await(await oo()).delete(e)};async function ie(e,t){Array.isArray(e)||(e=[e]),t||(t=await Pe.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}async function mn(e,t){if(!await ie(e,t))throw new et.FeatureDisabledError(`${e} is not currently enabled`,e)}async function us(e,t){if(!await ie(e,t)){let r=e.join(", ");throw new et.FeatureDisabledError(`${r} are not currently enabled`,r)}}function ye(e){return async(...t)=>(await mn(se.Feature.APP_BACKUPS),e(...t))}async function ps(){return ie(se.Feature.APP_BACKUPS)}async function cs(){return ie(se.Feature.BRANDING)}async function yf(){return ie(se.Feature.ENFORCEABLE_SSO)}async function dx(){return ie(se.Feature.SYNC_AUTOMATIONS)}async function fx(){return ie(se.Feature.TRIGGER_AUTOMATION_RUN)}async function Pt(){return ie(se.Feature.APP_BUILDERS)}async function gn(){return ie(se.Feature.AUDIT_LOGS)}async function ls(){return ie(se.Feature.USER_GROUPS)}function mx(){return ie(se.Feature.PWA)}async function tt(){return ie(se.Feature.EXPANDED_PUBLIC_API)}async function gx(e){if(et.env.ENABLE_SSO_MAINTENANCE_MODE||!await yf())return!1;let r;return e?.config?r=e.config:r=await et.configs.getSettingsConfig(),!!r.isSSOEnforced}var ds=async()=>{let e=se.Feature.SCIM,t=await ie(e),r=await et.configs.getSCIMConfig();if(!t||!r?.enabled)throw new et.FeatureDisabledError(`${e} is not currently enabled`,e);return!0};async function hx(){return ie(se.Feature.VIEW_PERMISSIONS)}async function yx(){return ie(se.Feature.VIEW_READONLY_COLUMNS)}var Ax={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 bx(e){return await cs()?{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}:Ax}var ms={};w(ms,{enrichAIConfig:()=>fs});var Af=require("@budibase/backend-core"),Ix="budibase_ai";async function fs(e){if(Af.env.SELF_HOSTED)return e;for(let t of Object.values(e.config))if(t.provider==="BudibaseAI")return e;return e.config[Ix]={provider:"BudibaseAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-4o-mini",name:"Budibase AI"},e}var Ke={};w(Ke,{addAction:()=>Ex,addApp:()=>Rx,addAutomation:()=>Px,addGroup:()=>hs,addPlugin:()=>As,addRow:()=>xx,addRows:()=>Ox,addUsers:()=>bn,bustCache:()=>co,decrement:()=>rt,decrementMany:()=>ma,getCurrentUsageValues:()=>Ku,getLicensedQuota:()=>If,getQuotaUsage:()=>vt,increment:()=>Ae,incrementBudibaseAICredits:()=>Sn,incrementMany:()=>Ut,removeApp:()=>_x,removeGroup:()=>ys,removePlugin:()=>bs,removeRow:()=>Cx,removeRows:()=>Lx,removeUsers:()=>lr,set:()=>gs,setAllUsage:()=>fo,setAppUsageValue:()=>lo,setUsage:()=>ju,setUsagePerApp:()=>Wu,updatePluginCount:()=>Is,updateUsage:()=>ur,usageLimitIsExceeded:()=>vx,utils:()=>_r});var yn=require("@budibase/types");var H=require("@budibase/types");var De=require("@budibase/backend-core");var ir=require("dd-trace"),Ae=(e,t,r)=>bf({change:1,name:e,type:t,opts:r}),Ut=e=>ir.tracer.trace("quotas.incrementMany",async()=>bf(e)),bf=async e=>await ir.tracer.trace("quotas.tryIncrement",async t=>{let r=Array.isArray(e)?e:[e];t.addTags({numActions:r.length}),await ur(r.map(n=>({usageChange:n.change,name:n.name,type:n.type,opts:{dryRun:!0,suppressErrorLog:n.opts?.suppressErrorLog,id:n.opts?.id}})));let a=[];for(let n of r)await ir.tracer.trace("quotas.incrementMany.fn",async o=>{o.addTags({actionName:n.name,actionType:n.type,actionChange:n.change});let s=n.opts?.fn;s&&a.push(await s())});return await ur(r.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}}))),a[0]}),rt=(e,t,r={})=>ur({usageChange:-1,name:e,type:t,opts:r}),ma=e=>{let t=Array.isArray(e)?e:[e];return ur(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},gs=async(e,t,r)=>ke.setUsage(r,e,t),Sx=(e,t,r)=>{if(e==H.QuotaUsageType.STATIC){let a=r.usageQuota.triggers;return a?a[t]||{}:{}}else{let a=ke.utils.getCurrentMonthString(),n=r.monthly[a].triggers;return n?n[t]||{}:{}}},wx=async(e,t,r,a)=>{try{await De.locks.doWithLock({type:H.LockType.TRY_ONCE,name:H.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let n={percentage:r,name:t.name};a&&(n.resetDate=a),await ft.triggerQuota(n)})}catch(n){De.logging.logAlert("Error triggering quota",n)}},Tx=async(e,t,r,a)=>{let n=await vt(),o=e===H.QuotaUsageType.MONTHLY?n.quotaReset:void 0,s=await Sx(e,t,n),i=a.triggers,p=r/a.value*100;p>100&&(p=100);for(let[m,f]of i.entries())if(p>=f&&a.value!==Ze.UNLIMITED){if(!s[f]){s[f]=new Date().toISOString();let g=i[m+1]||100;(!(p>=g)||p===f)&&await wx(t,a,p,o)}}else s[f]=void 0;return s},ur=async e=>{await ir.tracer.trace("quotas.updateUsage",async t=>{let r=De.tenancy.getTenantId(),a=Array.isArray(e)?e:[e];t.addTags({numActions:a.length,tenantId:r});let n,o,s=[],i={},p={},m={},f={};for(let g of a)await ir.tracer.trace("quotas.updateUsage.action",async S=>{S.addTags({actionName:g.name,actionType:g.type,actionUsageChange:g.usageChange});try{n=De.context.getAppId()}catch{}if(H.APP_QUOTA_NAMES.includes(g.name)&&!n)throw new Error("App context required for quota update");try{o=await If(H.QuotaType.USAGE,g.name,g.type),s.push(o);let{total:_,app:R,breakdown:E}=await ke.getCurrentUsageValues(g.type,g.name,g.opts?.id);_+=g.usageChange,R!=null&&(R+=g.usageChange),E!=null&&(E+=g.usageChange);let U={};if(g.opts?.dryRun||(U=await Tx(g.type,g.name,_,o),f={...f,[g.name]:U}),o.value!==Ze.UNLIMITED&&_>o.value&&g.usageChange>0)throw new De.UsageLimitError(`Licensed ${o.name} of ${o.value} has been exceeded`,o.name);if(_=Math.max(0,_),R&&(R=Math.max(0,R)),E&&(E=Math.max(0,E),m={...m,[g.name]:E}),!g.opts?.dryRun){let Oe=g.opts?.valueFn;Oe&&(_=await Oe(),R=_),i={...i,[g.name]:_},p={...p,[g.name]:R}}}catch(_){throw g.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${g.name}`,_),_}});let h=a.filter(g=>!g.opts?.dryRun).map(g=>({name:g.name,type:g.type,values:{total:i[g.name],app:p[g.name],breakdown:m[g.name],triggers:f[g.name]},opts:{...g.opts,tenantId:r}}));h.length>0&&await ke.setAllUsage(h)})},If=async(e,t,r)=>{let a=await Pe.getCachedLicense();if(!a){let n=De.tenancy.getTenantId();throw new Error("License not found for tenant id "+n)}if(r&&(0,H.isStaticQuota)(e,r,t))return a.quotas[e][r][t];if(r&&(0,H.isMonthlyQuota)(e,r,t))return a.quotas[e][r][t];if((0,H.isConstantQuota)(e,t))return a.quotas[e][t];throw new Error("Invalid quota type")},vx=async(e,t)=>{try{return await ur({usageChange:1,name:e,type:t,opts:{dryRun:!0}}),!1}catch(r){if(r.code===H.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw r}};var Ex=async e=>Ae(yn.MonthlyQuotaName.ACTIONS,yn.QuotaUsageType.MONTHLY,{fn:e});var pr=require("@budibase/types"),Sf=require("@budibase/backend-core"),wf=async()=>{let e=await Sf.db.getAllApps({dev:!0});return e?e.length:0},Rx=async(e,{appId:t}={})=>Ae(pr.StaticQuotaName.APPS,pr.QuotaUsageType.STATIC,{fn:e,valueFn:wf,id:t}),_x=async({appId:e}={})=>rt(pr.StaticQuotaName.APPS,pr.QuotaUsageType.STATIC,{valueFn:wf,id:e});var We=require("@budibase/types"),xx=async(e,{tableId:t}={})=>Ae(We.StaticQuotaName.ROWS,We.QuotaUsageType.STATIC,{fn:e,id:t}),Cx=async({tableId:e}={})=>rt(We.StaticQuotaName.ROWS,We.QuotaUsageType.STATIC,{id:e}),Ox=async(e,t,{tableId:r}={})=>Ut({change:e,name:We.StaticQuotaName.ROWS,type:We.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),Lx=async(e,{tableId:t}={})=>ma({change:e,name:We.StaticQuotaName.ROWS,type:We.QuotaUsageType.STATIC,opts:{id:t}});var An=require("@budibase/types"),Px=async(e,{automationId:t}={})=>Ae(An.MonthlyQuotaName.AUTOMATIONS,An.QuotaUsageType.MONTHLY,{fn:e,id:t});var cr=require("@budibase/types"),hs=async e=>Ae(cr.StaticQuotaName.USER_GROUPS,cr.QuotaUsageType.STATIC,{fn:e}),ys=async()=>rt(cr.StaticQuotaName.USER_GROUPS,cr.QuotaUsageType.STATIC);var yt=require("@budibase/types"),As=async e=>Ae(yt.StaticQuotaName.PLUGINS,yt.QuotaUsageType.STATIC,{fn:e}),bs=async()=>rt(yt.StaticQuotaName.PLUGINS,yt.QuotaUsageType.STATIC),Is=async e=>gs(yt.StaticQuotaName.PLUGINS,yt.QuotaUsageType.STATIC,e);var $e=require("@budibase/types"),ga=require("@budibase/backend-core");var bn=async(e,t,r)=>{let a=[{change:e,name:$e.StaticQuotaName.USERS,type:$e.QuotaUsageType.STATIC,opts:{fn:r,valueFn:ga.users.getUserCount}}];t>0&&a.push({change:t,name:$e.StaticQuotaName.CREATORS,type:$e.QuotaUsageType.STATIC,opts:{valueFn:ga.users.getCreatorCount}});let n=await Ut(a);return await $t(),n},lr=async(e,t)=>{let r=[{change:e,name:$e.StaticQuotaName.USERS,type:$e.QuotaUsageType.STATIC,opts:{valueFn:ga.users.getUserCount}}];t>0&&r.push({change:t,name:$e.StaticQuotaName.CREATORS,type:$e.QuotaUsageType.STATIC,opts:{valueFn:ga.users.getCreatorCount}}),await ma(r),await $t()};var In=require("@budibase/types"),Sn=async e=>Ut({change:e,name:In.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:In.QuotaUsageType.MONTHLY});var at={};w(at,{addAppBuilder:()=>Bx,db:()=>Ve,removeAppBuilder:()=>Mx});var ya=require("@budibase/backend-core");var j={};w(j,{addAppBuilder:()=>Es,addUsers:()=>ws,adjustGroupCreatorsQuotas:()=>Nx,cleanupApp:()=>Dx,enrichUserRolesFromGroups:()=>qx,fetch:()=>ha,get:()=>qt,getBulk:()=>Cf,getGroupBuilderAppIds:()=>xf,getGroupRoleId:()=>Ux,remove:()=>Ss,removeAppBuilder:()=>Rs,removeUsers:()=>Ts,save:()=>dr,updateGroupApps:()=>vs});var x=require("@budibase/backend-core");var Tf=require("@budibase/backend-core"),wn=class extends Tf.HTTPError{constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function Rf(e,t){try{let r=[];for(let i of e)if(i.roles){let p=i.roles[x.db.getProdAppID(t)];p&&r.push(p)}let a=await Promise.all(r.map(async i=>({[i]:await x.roles.roleToNumber(i)}))),n,o,s={};a.forEach(i=>{let[p,m]=Object.entries(i)[0];s[p]={roleId:p,roleNum:m}});for(let{roleId:i,roleNum:p}of Object.values(s))(o===void 0||p>o)&&(o=p,n=i);return n}catch(r){throw x.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}async function _f(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await M.getBulk(e,{enriched:!1}),t}async function xf(e,t){if(!e.userGroups)return[];let r=await _f(e.userGroups,t?.groups),a=t?.appId?x.db.getProdAppID(t?.appId):null,n=[];for(let o of r){let s=o.builder?.apps;a&&s?.includes(a)?n.push(a):a||(n=n.concat(s||[]))}return[...new Set(n)]}async function Ux(e,t,r){if(!e.userGroups)return null;let a=await _f(e.userGroups,r?.groups),n=x.db.getProdAppID(t);return e.roles?.[n]?e.roles[n]:(a=a.filter(o=>o?.roles?Object.keys(o.roles).includes(n):!1),await Rf(a,t))}async function qx(e){if(!e||!e.userGroups)return e;let t=await Cf(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 x.context.doInAppContext(n,async()=>{if(e.roles[n])return;let o=await Rf(t,n);o&&(e.roles[n]=o)});let a=await xf(e,{groups:t});if(a.length&&!e.builder?.global){let n=e.builder?.apps||[];e.builder={apps:n.concat(a)}}return e}async function ha(){return await M.fetch()}async function qt(e){return await M.get(e)}async function Cf(e,t={enriched:!0}){return await M.getBulk(e,t)}async function vf(e){if(await M.getByName(e))throw new wn(e)}async function Ef(e){let t=await M.getGroupUsers(e._id);if(!t.length)return 0;let a=await x.tenancy.getGlobalDB().getMultiple(t.map(o=>o._id));return(await x.userUtils.creatorsInList(a)).filter(o=>o).length}async function dr(e){let t=[],r=!e._id,a=0;if(delete e.users,!e._id)e._id=M.generateUserGroupID(),await vf(e.name),t.push(x.events.group.created(e));else{let o=await M.get(e._id);if(o.name!==e.name&&await vf(e.name),t.push(x.events.group.updated(e)),JSON.stringify(o.roles)!==JSON.stringify(e.roles)){let s=o.users?.length||0,i=0;s>0&&(i=await Ef(o)),Object.values(e.roles).includes("CREATOR")?a=s-i:a=-s,t.push(x.events.group.permissionsEdited(e))}}await Promise.all(t);let n=()=>M.save(e);if(r)return await hs(n);{let o=await n();if(a>0)await bn(0,a);else if(a<0){let s=await Ef(e),i=Math.abs(a)-s;i>0&&await lr(0,i)}return o}}async function Ss(e,t){let r;try{r=await M.get(e)}catch{throw new Error("Group not found")}let a=Object.values(r.roles||{}).includes("CREATOR"),n=()=>{};if(a){let s=x.tenancy.getGlobalDB(),i=await M.getGroupUsers(e),m=(await Promise.all(i.map(S=>s.get(S._id)))).map(S=>({...S,userGroups:S.userGroups.filter(O=>O!==e)})),h=(await x.userUtils.creatorsInList(m)).filter(S=>S).length,g=i.length-h;g&&(n=()=>lr(0,g))}let o=await M.destroy(e,t);return await x.events.group.deleted(r),await ys(),await n(),o}async function ws(e,t){let r=await M.get(e),a=await x.users.bulkGetGlobalUsersById(t),n=[];for(let p of a)p.userGroups||(p.userGroups=[]),p.userGroups.includes(e)||n.push(p);if(!n.length)return n;let o=n.map(p=>({...p,userGroups:[...p?.userGroups||[],e]}));if(await x.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes("CREATOR")){let m=(await x.userUtils.creatorsInList(n)).filter(h=>h).length,f=n.length-m;f&&await bn(0,f)}let i=[];for(let p of t)i.push(x.cache.user.invalidateUser(p));return await Promise.all(i),await x.events.group.usersAdded(o.length,r),o}async function Ts(e,t){let r=await M.get(e),a=await x.users.bulkGetGlobalUsersById(t),n=[];for(let i of a){if(!i.userGroups||!i.userGroups.includes(e))continue;let p=i.userGroups.indexOf(e);i.userGroups.splice(p,1),n.push(i)}if(await x.users.bulkUpdateGlobalUsers(n),Object.values(r.roles||{}).includes("CREATOR")){let p=(await x.userUtils.creatorsInList(n)).filter(f=>f).length,m=n.length-p;m&&await lr(0,m)}let s=[];for(let i of t)s.push(x.cache.user.invalidateUser(i));return await Promise.all(s),n.length&&await x.events.group.usersDeleted(n.length,r),n}async function vs(e,t){let r=await qt(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 dr(r)}async function Dx(e){let t=await ha(),r=[];for(let a of t)!a.roles||!a.roles[e]||(delete a.roles[e],r.push(a));return await M.bulkSave(r)}async function Es(e,t){if(!await Pt())throw new Error("Feature not enabled, please check license");let r=x.db.getProdAppID(t),a=await qt(e);a.builder??={apps:[]},a.builder.apps.includes(t)||(a.builder.apps.push(r),await dr(a))}async function Rs(e,t){if(!await Pt())throw new Error("Feature not enabled, please check license");let r=x.db.getProdAppID(t),a=await qt(e);a.builder?.apps.includes(t)&&(a.builder.apps=a.builder.apps.filter(n=>n!==r),await dr(a))}async function Nx(){if(!await ls()){let e=x.tenancy.getGlobalDB(),r=(await ha()||[]).filter(a=>Object.values(a?.roles||{}).includes("CREATOR"));for(let a of r){let n=await M.getGroupUsers(a._id),s=(await Promise.all(n.map(f=>e.get(f._id)))).map(f=>({...f,userGroups:f.userGroups.filter(h=>h!==a._id)})),p=(await x.userUtils.creatorsInList(s)).filter(f=>f).length,m=n.length-p;await M.save({...a,roles:{}}),m&&await lr(0,m)}}}ya.users.UserDB.init(Ke,j,qe);var Ve=ya.users.UserDB;async function Bx(e,t){if(!await Pt())throw new Error("Feature not enabled, please check license");await ya.users.addAppBuilder(e,t)}async function Mx(e,t){if(!await Pt())throw new Error("Feature not enabled, please check license");await ya.users.removeAppBuilder(e,t)}var En={};w(En,{logs:()=>Us});var Us={};w(Us,{logSearch:()=>Vx,oldestLogDate:()=>Nf,storeLog:()=>Yx});var Df=require("@budibase/types"),vn=require("@budibase/backend-core");var Tn=require("@budibase/types");var Z=require("@budibase/backend-core");var Of=require("@budibase/backend-core");async function Lf(e,t){let r,a=5,n=!1,o,s=!0;for(;a>0;a--)try{s?o=await e():o=await exports.randomDelay(e),n=!0;break}catch(i){r=i}return n||Of.logging.logWarn(`Failed to backoff: ${t}`,r),o}var{SEPARATOR:nt,UNICODE_MAX:Gx,DocumentType:Pf,AutomationViewMode:_s,ViewName:kx,getQueryIndex:Fx}=Z.db,Qx=new Date(0).toISOString(),jx=100,xs=async()=>ja(Tn.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS);function Uf(e,t,{status:r,automationId:a}={},n={}){let o=a?`${a}${nt}`:"",s=r?`${r}${nt}`:"",i;return r&&a?i=`${_s.ALL}${nt}${s}${o}`:r?i=`${_s.STATUS}${nt}${s}`:a?i=`${_s.AUTOMATION}${nt}${o}`:i=`${Pf.AUTOMATION_LOG}${nt}`,{...n,descending:!0,startkey:`${i}${t}${Gx}`,endkey:`${i}${e}`}}function Wx(e,t,r){return`${Pf.AUTOMATION_LOG}${nt}${e}${nt}${r}${nt}${t}`}async function Cs(e,t,r={docs:!0}){let a=Z.context.getProdAppDB();await a.exists()||(a=Z.context.getDevAppDB());let n={status:r.status},o=r?.limit?r.limit:r?.paginate?9+1:void 0,s=Uf(e,t,n,{include_docs:r.docs,limit:o});r?.page&&(s.startkey=r.page);let i=await a.allDocs(s);return Cr(i,{paginate:r?.paginate,pageSize:9})}async function Os(e,t,r={}){let a=Z.context.getProdAppDB();await a.exists()||(a=Z.context.getDevAppDB());let n;try{let o={automationId:r?.automationId,status:r?.status},s=Uf(e,t,o,{include_docs:!0,limit:9+1});r?.page&&(s.startkey=r.page),n=await a.query(Fx(kx.AUTOMATION_LOGS),s)}catch(o){if(o!=null&&(o.name==="not_found"||o.error==="not_found"))return await ap(),Os(e,t,r);throw o}return Cr(n,{paginate:!0,pageSize:9})}async function qf(e,t){let r=Z.context.getProdAppDB(),a=e._id,n=e.name,o=new Date().toISOString(),s=Wx(o,t.status,a),i={...t,automationId:a,status:t.status,automationName:n,createdAt:o,_id:s};return await r.put(i),s}async function Ls(e,{clearing:t}={clearing:!1}){let r=Z.context.getProdAppDB();await Lf(async()=>{let a=await r.get(Z.db.DocumentType.APP_METADATA);for(let n of e){let o=n.split(Z.db.SEPARATOR),s=`${o[o.length-3]}${Z.db.SEPARATOR}${o[o.length-2]}`,i={};a.automationErrors&&(i=a.automationErrors),Array.isArray(i[s])||(i[s]=[]);let p=i[s].indexOf(n);t&&p!==-1?i[s].splice(p,1):i[s].push(n),i[s].length===0&&delete i[s],a.automationErrors=i}await r.put(a),await Z.cache.app.invalidateAppMetadata(a.appId,a)},"Failed to update app metadata with automation log error")}async function $x(){let e=await xs();try{return await Cs(Qx,e,{docs:!1,paginate:!1,limit:jx})}catch{return{data:[],hasNextPage:!1}}}async function Ps(){let e=Z.context.getProdAppDB();try{let t=await $x();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(Z.db.SEPARATOR);return o[o.length-1]===Tn.AutomationStatus.ERROR}).map(n=>n.id);await e.bulkDocs(r),a.length&&await Ls(a,{clearing:!0})}catch(t){Z.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}var Nf=xs;async function Kx(e,t,r,a){let n,o=new Date().toISOString(),s=await Nf();return(!e||e<s)&&(e=s),r||t?n=await Os(e,o,{automationId:r,status:t,page:a}):n=await Cs(e,o,{status:t,page:a,docs:!0,paginate:!0}),n}async function Vx(e){return await Ps(),await Kx(e.startDate,e.status,e.automationId,e.page)}async function Yx(e,t){if(!vn.db.isProdAppID(vn.context.getAppId()))return;let r=await qf(e,t);t.status===Df.AutomationStatus.ERROR&&await Ls([r]),await Ps()}var Rn={};w(Rn,{checkPluginQuotas:()=>Jx,deletePlugin:()=>zx,storePlugin:()=>Hx});var kf=require("@budibase/types"),z=require("@budibase/backend-core");var Bf=P(require("fs")),Mf=require("path");function Gf(e,t){return Bf.default.readFileSync((0,Mf.join)(e,t),"utf8")}async function Hx(metadata,directory,source){let db=z.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=z.objectStore.getPluginS3Dir(name),files=await z.objectStore.uploadDirectory(z.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===kf.PluginType.DATASOURCE){let js=Gf(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=z.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 z.events.plugin.imported(doc),{...doc,_rev:e.rev}};return rev?await write():await As(write)}async function zx(e){let t=z.tenancy.getGlobalDB();try{let r=await t.get(e),a=z.objectStore.getPluginS3Dir(r.name);await z.objectStore.deleteFolder(z.objectStore.ObjectStoreBuckets.PLUGINS,a),await t.remove(e,r._rev),await z.events.plugin.deleted(r),await bs()}catch(r){let a=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${a}`)}}async function Jx(){let e=z.tenancy.getGlobalDB();try{let r=(await e.allDocs(z.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await Is(r)}catch(t){z.logging.logAlert("Unable to retrieve plugins for quota check",t)}}var Ye={};w(Ye,{fetch:()=>Zx,fetchValues:()=>eC,isEncryptionKeyAvailable:()=>Xx,isValid:()=>jf,remove:()=>rC,update:()=>tC});var Aa=require("@budibase/types"),Ff=require("@budibase/backend-core");function Xx(){return!!Ff.env.ENCRYPTION_KEY}async function Zx(){let e=await _t.get();return Object.keys(e.variables)}async function eC(e){let r=(await _t.get()).variables,a={};for(let[n,o]of Object.entries(r))switch(e){case Aa.AppEnvironment.DEVELOPMENT:a[n]=o.development;break;case Aa.AppEnvironment.PRODUCTION:default:a[n]=o.production;break}return a}async function Qf(e){if(!(await je.cache.getCachedLicense()).features.includes(Aa.Feature.ENVIRONMENT_VARIABLES))throw new Error("User does not have access to environment variables feature.");let r=await _t.get();r.variables=e(r.variables),await _t.update(r)}async function tC(e,t){if(jf(e))await Qf(a=>(a[e]=t,a));else throw new Error("Variable name has characters that are not allowed")}async function rC(e){await Qf(t=>(delete t[e],t))}function jf(e){return/^[a-zA-Z0-9-_]+$/.test(e)}var At={};w(At,{definitions:()=>fC,download:()=>dC,fetch:()=>lC,write:()=>pC});var xn=require("@budibase/types");var K=require("@budibase/backend-core"),Ne=require("@budibase/types");var Wf=require("memorystream"),$f=new K.sql.Sql(Ne.SqlClient.SQL_LITE);async function aC(e,t,r){let a={operation:Ne.Operation.READ,table:Wt.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:Ne.SortOrder.DESCENDING,type:Ne.SortType.STRING}}},n=$f._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 nC(e){return`${K.DocumentType.AUDIT_LOG}${K.SEPARATOR}${e}${K.SEPARATOR}${K.utils.newid()}`}async function Kf(e){e._id||(e._id=nC(e.timestamp)),e.type||(e.type=Ne.AUDIT_LOG_TYPE);try{let r=await K.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){K.logging.logAlert("Failed to write audit log",t)}}async function qs(e,t,r){t||(t=1);let a=K.context.getAuditLogsDB();try{let n=9+1,o=await aC(e,t,n),s=Wt.searchTable(),i=$f.convertJsonStringColumns(s,await a.sql(o.sql,o.bindings)),p;i.length>n&&(p=i.pop());let m={rows:i,hasNextPage:!!p};return m.hasNextPage&&(m.bookmark=t+1),m}catch(n){if(n.status===404&&!r?.isRetry)return await oC(),await Vu(),await qs(e,t,{isRetry:!0});throw n}}async function oC(){let e=K.context.getAuditLogsDB(),r=(await e.allDocs(K.db.getDocParams(K.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(a=>a.doc).filter(a=>a&&!a.type).map(a=>({...a,type:Ne.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}function Vf(e){let t=K.context.getAuditLogsDB(),r=new Wf,a=t.dump(r,{filter:o=>{let s=o;if(!s._id?.startsWith(K.DocumentType.AUDIT_LOG))return!1;let i=!0,p=(m,f)=>{!m||m.length===0||(i=!!(i&&f&&m.includes(f)))};if(p(e.userIds,s.userId),p(e.appIds,s.appId),p(e.events,s.event),(e.startDate||e.endDate)&&(i=i&&s.timestamp>=e.startDate&&s.timestamp<=e.endDate),e.fullSearch){let m=JSON.stringify(o);i=i&&m.includes(e.fullSearch)}return i}}),n=new Wf;return r.on("data",o=>{let s=JSON.parse(Buffer.from(o).toString());if(Array.isArray(s.docs)){let i="";for(let p of s.docs)i+=JSON.stringify(p)+`
38
+ `;n.write(i)}}),r.on("end",()=>{n.end()}),{promise:a,stream:n}}var le=require("@budibase/backend-core");var _n=require("@budibase/types"),ba=require("@budibase/string-templates"),Ia=require("@budibase/backend-core"),iC=Ia.constants.MIN_VALID_DATE.toISOString(),uC=Ia.constants.MAX_VALID_DATE.toISOString();function Ds(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||iC,e.endDate=e.endDate||uC),e}async function Yf(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(a=>Ia.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=Ds(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}function Ns(e,t,r){let a={_id:e,status:_n.AuditLogResourceStatus.DELETED};switch(t){case"app":a.name=r?.appName;break;case"user":a.email=r?.email;break}return a}function Bs(e){let t=(0,ba.findHBSBlocks)(e);for(let r of t){let a=` "${r}"`;e=e.replace(e.includes(a)?a:` ${r}`,""),e=(0,ba.processStringSync)(e,{})}return e}function Hf(e,t){let r=_n.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let a=(0,ba.processStringSync)(r,t);return a.includes('""')&&(a=Bs(r)),a}async function pC(e,t,r){if(!await gn()||!le.utils.isAudited(e))return;let a=Hf(e,t),n=new Date;r?.timestamp&&(n=new Date(r.timestamp));let o={timestamp:n.toISOString(),event:e,name:a,userId:r?.userId||xn.AuditLogSystemUser,metadata:{...t,...r?.hostInfo}},s={};try{if(r?.appId){o.appId=le.db.getProdAppID(r.appId);let i=await le.cache.app.getAppMetadata(r.appId);"name"in i&&(s.appName=i.name)}if(r?.userId){let i=await le.users.getById(r?.userId);s.email=i.email}}catch(i){le.logging.logAlert("Failed to retrieve fallback information for audit log",i)}return o.fallback=s,await Kf(o)}async function cC(e){let t=e.map(i=>i.userId),a=e.filter(i=>i.appId).map(i=>le.db.getDevAppID(i.appId)),n=await le.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),o=await le.db.getAppsByIDs([...new Set(a)]),s=[];for(let i of e){let p=n.find(h=>h?._id===i.userId),m=o.find(h=>le.db.isSameAppID(h?.appId,i.appId)),f={event:i.event,timestamp:i.timestamp,name:i.name,metadata:i.metadata,user:p||Ns(i.userId,"user",i.fallback)};i.appId&&(f.app=m||Ns(i.appId,"app",i.fallback)),s.push(f)}return s}async function lC(e){if(!await gn())throw new Error("Audit logs not available - license required.");let t=await Yf(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await qs(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await cC(r.rows)}}function dC(e){return e=Ds(e),Vf(e)}function fC(){let e=Object.entries(xn.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=Bs(r[1]);return t}var Cn={};w(Cn,{applications:()=>Fs,roles:()=>Gs,users:()=>Ms});var Ms={};w(Ms,{roleCheck:()=>gC});function mC(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 gC(e,t){return await tt()||mC(e,t),e}var Gs={};w(Gs,{assign:()=>hC,unAssign:()=>yC});var Sa=require("@budibase/backend-core");async function hC(e,t){if(!await tt())throw new Error("Unable to assign roles - license required.");let r=await Ve.bulkGet(e);for(let a of r){if(t.role&&t.role.roleId){let n=Sa.db.getProdAppID(t.role.appId);a.roles[n]=t.role.roleId}if(t.appBuilder){let n=Sa.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 Ve.bulkUpdate(r)}async function yC(e,t){if(!await tt())throw new Error("Unable to un-assign roles - license required.");let r=await Ve.bulkGet(e);for(let a of r){if(t.role){let n=Sa.db.getProdAppID(t.role?.appId);a.roles[n]===t.role.roleId&&delete a.roles[n]}if(t.appBuilder&&a.builder?.apps){let n=Sa.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 Fs={};w(Fs,{buildExportFn:()=>bC,buildImportFn:()=>AC});var ks=require("@budibase/backend-core");function AC(e){return async(t,r)=>{await tt()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await ks.context.doInAppContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}function bC(e){return async(t,r)=>{await tt()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:a,excludeRows:n}=t.request.body;await ks.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 He=require("@budibase/backend-core"),ue=require("@budibase/types");var Qs=require("@budibase/backend-core"),zf;function Jf(){zf=new Qs.queue.BudibaseQueue(Qs.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}function Dt(){return zf}var Xf=require("path"),Zf=P(require("fs"));async function Ws(e,t={}){return ve.storeAppBackupMetadata(e,t)}function em(e){let t=new Date().toISOString();switch(e){case ue.AppBackupStatus.COMPLETE:case ue.AppBackupStatus.FAILED:return{timestamp:t,finishedAt:t};case ue.AppBackupStatus.STARTED:return{timestamp:t,startedAt:t};case ue.AppBackupStatus.PENDING:return{timestamp:t,createdAt:t}}}async function IC(e,t,r,a){let n=await On(e);return await ve.storeAppBackupMetadata({...n,...em(t),contents:r,status:t,type:ue.AppBackupType.BACKUP},{filename:a,docId:e})}async function SC(e,t,r){let a=await On(e);return await ve.storeAppBackupMetadata({...a,...em(r),status:r,type:ue.AppBackupType.RESTORE,trigger:ue.AppBackupTrigger.MANUAL},{docId:e,docRev:t})}async function On(e){return ve.getAppBackupMetadata(e)}async function wC(e,t){return ve.updateAppBackupMetadata(e,t)}async function TC(e){let t=await ve.getAppBackupMetadata(e);return t.filename&&await He.objectStore.deleteFile(He.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),ve.deleteAppBackupMetadata(e)}async function vC(e,t){return ve.fetchAppBackups(e,t)}async function tm(e){let t=await ve.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let r=await He.objectStore.getReadStream(He.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}async function EC(e){let{stream:t}=await tm(e),r=(0,Xf.join)(He.objectStore.budibaseTempDir(),He.utils.newid()),a=Zf.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 RC(e,t,r={}){let a;try{a=await Ws({appId:e,trigger:t,timestamp:new Date().toISOString(),status:ue.AppBackupStatus.PENDING,type:ue.AppBackupType.BACKUP,...r})}catch(n){if(n.status===409)return;throw n}return await Dt().add({docId:a.id,docRev:a.rev,appId:e,export:{trigger:t,...r}}),await He.events.backup.appBackupTriggered(e,a.id,ue.AppBackupType.BACKUP,t,r?.name),a.id}async function _C(e,t,r,a){let n=await On(t),o;try{o=await Ws({appId:e,timestamp:new Date().toISOString(),status:ue.AppBackupStatus.PENDING,type:ue.AppBackupType.RESTORE,createdBy:a})}catch(s){if(s?.status===409)return;throw s}return await Dt().add({appId:e,docId:o.id,docRev:o.rev,import:{nameForBackup:r,backupId:t,createdBy:a}}),{restoreId:o.id,metadata:n}}var xC={isEnabled:ps,triggerAppRestore:ye(_C),triggerAppBackup:ye(RC),getBackupDownloadStream:ye(tm),downloadAppBackup:ye(EC),fetchAppBackups:ye(vC),storeAppBackupMetadata:ye(Ws),updateBackupStatus:ye(IC),updateRestoreStatus:ye(SC),getAppBackup:ye(On),updateAppBackup:ye(wC),deleteAppBackup:ye(TC)},ot=xC;var Ks={};w(Ks,{init:()=>$s});var J=require("@budibase/backend-core");var Be=require("@budibase/types");var fr=P(require("fs"));async function $s(e){Dt().process(async t=>{let r=t.data;try{if(r.export)return LC(t,e);if(r.import)return OC(t,e)}catch(a){J.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,a)}})}async function CC(e){await J.db.getDB(e,{skip_setup:!0}).destroy()}async function rm(e,t,r,a){let n=J.db.getDevAppID(r),o=J.db.getProdAppID(r),s=new Date().toISOString(),i=async(p,m)=>{a?.doc?await ot.updateBackupStatus(a.doc.id,p,m?.contents,m?.filename):await ot.storeAppBackupMetadata({appId:o,timestamp:s,trigger:e,status:p,name:a?.name,type:Be.AppBackupType.BACKUP,contents:m?.contents,createdBy:a?.createdBy},{filename:m?.filename})};try{let p=await a.processing.exportAppFn(n,{tar:!0}),m=await a.processing.statsFn(n),f=`${o}/backup-${s}.tar.gz`,h=J.objectStore.ObjectStoreBuckets.BACKUPS,g=fr.default.createReadStream(p);await J.objectStore.streamUpload({bucket:h,filename:f,stream:g,extra:{type:"application/gzip",metadata:{name:a?.name,trigger:e,timestamp:s,appId:o}}}),await i(Be.AppBackupStatus.COMPLETE,{filename:f,contents:m}),fr.default.existsSync(p)&&fr.default.rmSync(p)}catch(p){J.logging.logAlert("App backup error",p),await i(Be.AppBackupStatus.FAILED)}}async function OC(e,t){let r=e.data,a=r.appId,n=r.import.backupId,o=r.import.nameForBackup,s=r.import.createdBy,i=J.tenancy.getTenantIDFromAppID(a);return J.tenancy.doInTenant(i,async()=>{let p=J.db.getDevAppID(a),{rev:m}=await ot.updateRestoreStatus(r.docId,r.docRev,Be.AppBackupStatus.STARTED);await rm(Be.AppBackupTrigger.RESTORING,i,a,{processing:t,createdBy:s,name:o});let f=await ot.downloadAppBackup(n);await CC(p);let h=Be.AppBackupStatus.COMPLETE;try{await t.importAppFn(p,J.db.getDB(p),{file:{type:"application/gzip",path:f},key:f})}catch(g){J.logging.logAlert("App restore error",g),h=Be.AppBackupStatus.FAILED}await ot.updateRestoreStatus(r.docId,m,h),fr.default.existsSync(f)&&fr.default.rmSync(f,{force:!0})})}async function LC(e,t){let r=e.data,a=r.appId,n=r.export.trigger,o=r.export.name,s=J.tenancy.getTenantIDFromAppID(a);await J.tenancy.doInTenant(s,async()=>{try{let{rev:i}=await ot.updateBackupStatus(r.docId,Be.AppBackupStatus.STARTED);return rm(n,s,a,{processing:t,doc:{id:r.docId,rev:i},name:o})}catch(i){J.logging.logAlert("App backup error",i)}})}var PC=async e=>{Jf(),await $s(e.processing)},Re={...ot,processing:Ks,init:PC,getBackupQueue:Dt};var am=async e=>{e.backups&&await Re.init(e.backups)};var fe={};w(fe,{create:()=>EM,find:()=>vM,get:()=>TM,remove:()=>_M,update:()=>RM});var EA=P(ki()),st=require("@budibase/backend-core");var RA=require("@budibase/types");async function TM(e){let t=st.tenancy.getGlobalDB(),r=new st.db.QueryBuilder(t.name,RA.SearchIndex.USER);r.setIndexBuilder(st.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 vM(e){return await st.users.getById(e)}async function EM(e){let t=await Ve.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new st.HTTPError("User is already synched",409);e={...t,scimInfo:(0,EA.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await Ve.save(e,{requirePassword:!1})}async function RM(e,t){return await Ve.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}async function _M(e){return await Ve.destroy(e)}var br={};w(br,{create:()=>xM});var _A=P(ki());var xA=require("@budibase/backend-core");async function xM(e){let t=await go(e.name),r;if(!t)r=(await j.save(e)).id;else{if(t.scimInfo?.isSync)throw new xA.HTTPError("Group is already synched",409);r=t._id,t.users&&(await j.removeUsers(r,t.users.map(n=>n._id)),delete t.users),t.scimInfo=(0,_A.default)(t.scimInfo,e.scimInfo),await j.save(t)}return await j.get(r)}var Bt={};w(Bt,{logRequest:()=>CM,logResponse:()=>OM});var Fi=require("@budibase/backend-core");async function CM(e){Fi.logging.logWarn("SCIM request log",e)}async function OM(e){Fi.logging.logWarn("SCIM response error",e)}var Vi={};w(Vi,{doInScimContext:()=>ji,feature:()=>W,internalGroupOnly:()=>$n,licenseAuth:()=>LA,licensing:()=>CA,requireSCIM:()=>Wi,scimGroupOnly:()=>Ea,scimUserOnly:()=>va});var bt=require("@budibase/backend-core");var jn=require("@budibase/types"),LM=(e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(bt.env.SELF_HOSTED&&bt.env.DEFAULT_LICENSE)return t.user.license=yo,r();t.user.license=await je.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(bt.utils.isServingApp(t)||bt.utils.isServingBuilder(t)||bt.utils.isServingBuilderPreview(t)||bt.utils.isPublicApiRequest(t))&&await Ke.usageLimitIsExceeded(jn.StaticQuotaName.USERS,jn.QuotaUsageType.STATIC)}return r()},CA=LM;var W={};w(W,{requireFeature:()=>PM,requireFeatures:()=>UM});var PM=e=>async(t,r)=>{await mn(e),await r()},UM=(...e)=>async(t,r)=>{await us(e),await r()};var Wn=require("@budibase/backend-core");var ji=async(e,t)=>(Wn.env.DISABLE_SCIM_CALLS||await Bt.logRequest({...e.request.toJSON(),body:e.request.body}),await Wn.context.doInScimContext(async()=>{let r=await t();return await Bt.logResponse({...e.response.toJSON(),body:e.response.body}),r}));var Wi=async(e,t)=>{await ds(),await t()};var OA=require("@budibase/backend-core");var va=e=>$i(OA.users.getById,e,!0),Ea=e=>$i(M.get,e,!0),$n=e=>$i(M.get,e,!1);function $i(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 Ra=require("@budibase/backend-core");var Ki=require("dd-trace");async function LA(e,t){await Ki.tracer.trace("licenseAuth",async r=>{let a=e.request.headers[Ra.constants.Header.LICENSE_KEY];Array.isArray(a)&&(a=a[0]),r.addTags({licenseKey:a}),a||e.throw(403,"License key not provided");let n=await ns(a);n||(r.addTags({licenseFound:!1}),e.throw(403,"License not found or invalid")),n.tenantId||e.throw(403,"License does not have a tenant ID"),Ki.tracer.setUser({id:"anonymous",tenantId:n.tenantId}),await Ra.context.doInSelfHostTenantUsingCloud(n.tenantId,async()=>{await Ra.context.doInLicenseContext(n,async()=>{await t()})})})}var ru={};w(ru,{appBackups:()=>yb,auditLogs:()=>sb,environmentVariables:()=>XA,groups:()=>jA,scim:()=>Vb,users:()=>Xb});async function PA(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let a=await qt(t._id);t.roles=a.roles,t.scimInfo=a.scimInfo}let r=await dr(t);e.body={_id:r.id,_rev:r.rev}}async function UA(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 ws(t,r)),a&&(o=await Ts(t,a)),e.body={added:n,removed:o}}async function qA(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 vs(t,{appsToAdd:r,appsToRemove:a})}async function DA(e){e.body={data:await ha()}}async function NA(e){let{groupId:t,rev:r}=e.params;try{await Ss(t,r),e.body={message:"Group deleted successfully"}}catch(a){e.throw(a.status,a)}}async function BA(e){try{e.body=await qt(e.params.groupId)}catch(t){e.throw(t.status,t)}}async function MA(e){let{pageSize:t=10,bookmark:r,emailSearch:a}=e.request.query,n=e.params.groupId,o={limit:t+1},s=await Fa(n,{...o,emailSearch:a,bookmark:r}),i=a?s[t]?.email:s[t]?._id,p=!!i;e.body={users:s.slice(0,t),bookmark:i,hasNextPage:p}}async function GA(e){let{groupId:t,appId:r}=e.params;await Es(t,r),e.body={message:"Group app builder access updated."}}async function kA(e){let{groupId:t,appId:r}=e.params;await Rs(t,r),e.body={message:"group app builder access removed."}}var FA=P(require("@koa/router")),be=P(require("joi"));var _e=require("@budibase/types"),ze=require("@budibase/backend-core"),QA=new FA.default;function DM(){return ze.auth.joiValidator.body(be.default.object({_id:be.default.string().optional(),_rev:be.default.string().optional(),color:be.default.string().required(),icon:be.default.string().required(),name:be.default.string().trim().required().max(50),role:be.default.string().optional(),users:be.default.array().optional(),apps:be.default.array().optional(),roles:be.default.object().optional(),createdAt:be.default.string().optional(),updatedAt:be.default.string().optional()}).required())}QA.post("/api/global/groups",ze.auth.adminOnly,W.requireFeature(_e.Feature.USER_GROUPS),DM(),PA).get("/api/global/groups",W.requireFeature(_e.Feature.USER_GROUPS),DA).delete("/api/global/groups/:groupId/:rev",W.requireFeature(_e.Feature.USER_GROUPS),ze.auth.adminOnly,$n("groupId"),NA).get("/api/global/groups/:groupId",W.requireFeature(_e.Feature.USER_GROUPS),ze.auth.builderOrAdmin,BA).get("/api/global/groups/:groupId/users",W.requireFeature(_e.Feature.USER_GROUPS),ze.auth.builderOrAdmin,MA).post("/api/global/groups/:groupId/users",ze.auth.adminOnly,W.requireFeature(_e.Feature.USER_GROUPS),$n("groupId"),UA).post("/api/global/groups/:groupId/apps",ze.auth.builderOrAdmin,W.requireFeature(_e.Feature.USER_GROUPS),qA).post("/api/global/groups/:groupId/app/:appId/builder",ze.auth.builderOrAdmin,W.requireFeatures(_e.Feature.USER_GROUPS,_e.Feature.APP_BUILDERS),GA).delete("/api/global/groups/:groupId/app/:appId/builder",ze.auth.builderOrAdmin,W.requireFeatures(_e.Feature.USER_GROUPS,_e.Feature.APP_BUILDERS),kA);var jA=QA;var Yi=require("@budibase/types");var Hi=require("@budibase/backend-core");async function WA(e){e.body={encryptionKeyAvailable:Ye.isEncryptionKeyAvailable()}}async function $A(e){e.body={variables:await Ye.fetch()}}async function KA(e){let{name:t,production:r,development:a}=e.request.body;await Ye.update(t,{production:r,development:a});let n=[Yi.AppEnvironment.PRODUCTION];r!==a&&n.push(Yi.AppEnvironment.DEVELOPMENT),await Hi.events.environmentVariable.created(t,n),e.body={message:`Environment variable "${t}" created.`}}async function VA(e){let{production:t,development:r}=e.request.body,a=e.params.varName;await Ye.update(a,{production:t,development:r}),e.body={message:`Environment variable "${a}" updated.`}}async function YA(e){let t=e.params.varName;await Ye.remove(t),await Hi.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}var Mt=require("@budibase/backend-core"),zA=P(require("@koa/router")),_a=P(require("joi")),JA=new zA.default;function HA(){return Mt.auth.joiValidator.body(_a.default.object({name:_a.default.string().optional(),production:_a.default.string().required(),development:_a.default.string().required()}))}JA.get("/api/env/variables/status",Mt.auth.builderOrAdmin,WA).get("/api/env/variables",Mt.auth.builderOrAdmin,$A).post("/api/env/variables",Mt.auth.builderOrAdmin,HA(),KA).patch("/api/env/variables/:varName",Mt.auth.builderOrAdmin,HA(),VA).delete("/api/env/variables/:varName",Mt.auth.builderOrAdmin,YA);var XA=JA;var zi=require("@budibase/backend-core");async function ZA(e){let t=e.request.body,r=await At.fetch(t);await zi.events.auditLog.filtered(t),e.body=r}async function eb(e){let t=e.request.body,{stream:r}=At.download(t);await zi.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}async function tb(e){e.body={events:At.definitions()}}var ab=require("@budibase/types"),Gt=require("@budibase/backend-core"),nb=P(require("@koa/router")),xe=P(require("joi"));function rb(){return Gt.auth.joiValidator.body(xe.default.object({userIds:xe.default.array().items(xe.default.string()).optional(),appIds:xe.default.array().items(xe.default.string()).optional(),events:xe.default.array().items(xe.default.string().valid(...Object.values(ab.Event))).optional(),startDate:xe.default.string().optional().allow(""),endDate:xe.default.string().optional().allow(""),fullSearch:xe.default.string().optional().allow(""),bookmark:xe.default.number()}))}var ob=new nb.default;ob.post("/api/global/auditlogs/search",Gt.auth.adminOnly,rb(),ZA).get("/api/global/auditlogs/download",Gt.auth.adminOnly,Gt.middleware.querystringToBody,rb(),eb).get("/api/global/auditlogs/definitions",Gt.auth.adminOnly,tb);var sb=ob;var Ji=require("@budibase/types");var ib=require("@budibase/backend-core");async function Ir(e,t){await Vt.appExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}async function ub(e){let t=e.params.appId;await Ir(e,t);let r=e.request.body,a=e.user?._id,n=await Re.triggerAppBackup(t,Ji.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 pb(e){let t=e.params.appId;await Ir(e,t);let r=e.params.backupId,a=e.request.body.name,n=await Re.triggerAppRestore(t,r,a,e.user?._id);n||e.throw(500,"Unable to start restore."),await ib.events.backup.appBackupRestored(n.metadata),e.body={restoredId:n?.restoreId,message:"Restore triggered - process starting."}}async function cb(e){let t=e.params.appId;await Ir(e,t);let r=e.params.backupId;await Re.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}async function lb(e){let t=e.params.appId;await Ir(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(Ji.AppBackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await Re.fetchAppBackups(t,{paginate:!0,...r})}async function fb(e){let t=e.params.appId;await Ir(e,t);let r=e.params.backupId,a=e.request.body;e.body=await Re.updateAppBackup(r,a.name)}async function mb(e){let t=e.params.appId;await Ir(e,t);let r=e.params.backupId,{metadata:a,stream:n}=await Re.getBackupDownloadStream(r);e.attachment(`backup-${a.timestamp}.tar.gz`),e.body=n}var gb=P(require("@koa/router")),kt=P(require("joi")),Kn=require("@budibase/types"),It=require("@budibase/backend-core"),hb=new gb.default;function GM(){return It.auth.joiValidator.body(kt.default.object({trigger:kt.default.string().valid(...Object.values(Kn.AppBackupTrigger)),type:kt.default.string().valid(...Object.values(Kn.AppBackupType)),startDate:kt.default.date(),endDate:kt.default.date(),page:kt.default.string()}))}hb.post("/api/apps/:appId/backups",It.auth.builderOrAdmin,ub).post("/api/apps/:appId/backups/search",It.auth.builderOrAdmin,GM(),lb).get("/api/apps/:appId/backups/:backupId/file",It.auth.builderOrAdmin,mb).patch("/api/apps/:appId/backups/:backupId",It.auth.builderOrAdmin,fb).delete("/api/apps/:appId/backups/:backupId",It.auth.builderOrAdmin,cb).post("/api/apps/:appId/backups/:backupId/import",It.auth.builderOrAdmin,pb);var yb=hb;var Kb=P(require("@koa/router"));var Vn=require("scim-patch");var bb=require("@budibase/backend-core");function Ab(e,t){let r=e.request.query[t];if(r!==void 0)return+r}var Ib=async e=>{let t=Ab(e,"pageSize")??20,r=Ab(e,"startIndex"),a;e.request.query.filter&&(a=V.user.userFilters(e.request.query.filter));let n=await fe.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(V.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},Sb=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await fe.find(t);e.body=V.user.toScimUserResponse(r)},wb=async e=>{let t=V.user.fromScimUser(e.request.body);try{let r=await fe.create(t);e.body=V.user.toScimUserResponse(r)}catch(r){throw r instanceof bb.EmailUnavailableError&&e.throw(409,"Email already in use"),r}};function kM(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 Tb=async e=>{let t=await fe.find(e.params.id);t||e.throw(404);let r=V.user.toScimUserResponse(t),a=e.request.body;try{(0,Vn.patchBodyValidation)(a)}catch{}if(kM(a))return Xi(e);let n;try{n=(0,Vn.scimPatch)(r,a.Operations)}catch{}n||e.throw(500);let o=V.user.fromScimUser(n);await fe.update(o,{allowChangingEmail:!0}),e.body=V.user.toScimUserResponse(o)},Xi=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await fe.remove(t),e.status=204};var Mb=P(Bb()),Gb=require("@budibase/shared-core"),Yn=require("scim-patch");var Hn=require("scim2-parse-filter");function kb(e,t){for(let r of t.split(","))delete e[r]}var Fb=async e=>{let r=(await j.fetch()).filter(o=>o.scimInfo?.isSync).map(V.group.toScimGroupResponse),{filter:a,excludedAttributes:n}=e.request.query;if(a){let o=(0,Hn.filter)((0,Hn.parse)(a));r=r.filter(o)}n&&r.forEach(o=>{kb(o,n)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},Qb=async e=>{let t=V.group.fromScimGroup(e.request.body),r=await br.create(t);e.body=V.group.toScimGroupResponse(r)},jb=async e=>{let{id:t}=e.params,r=await j.get(t),a=V.group.toScimGroupResponse(r),{excludedAttributes:n}=e.request.query;n&&kb(a,n),e.body=a},Wb=async e=>{let{id:t}=e.params,r=await j.get(t);await j.remove(t,r._rev),e.status=204},$b=async e=>{let{id:t}=e.params,r=await j.get(t),a=V.group.toScimGroupResponse(r),n=e.request.body;try{(0,Yn.patchBodyValidation)(n)}catch{e.throw(400)}let{true:o,false:s}=(0,Mb.default)(n.Operations,i=>i.path==="members");if(s?.length){let i=(0,Yn.scimPatch)(a,s);i||e.throw(500);let p={...V.group.fromScimGroup(i),_rev:r._rev};await j.save(p)}if(o?.length){let i=[],p=[];for(let{op:m,value:f}of o)switch(m){case"add":case"Add":for(let h of f)i.push(await fe.find(h.value));break;case"remove":case"Remove":for(let h of f)p.push(await fe.find(h.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:Gb.utils.unreachable(m)}i.length&&await j.addUsers(t,i.map(m=>m._id)),p.length&&await j.removeUsers(t,p.map(m=>m._id))}e.body=V.group.toScimGroupResponse(await j.get(t))};var xa=require("@budibase/types"),Ie=new Kb.default({prefix:"/api/global/scim/v2"});Ie.use(Wi);Ie.use(ji);Ie.get("/users",Ib);Ie.get("/users/:id",va("id"),Sb);Ie.post("/users",wb);Ie.patch("/users/:id",va("id"),Tb);Ie.delete("/users/:id",va("id"),Xi);Ie.get("/groups",Fb);Ie.post("/groups",W.requireFeature(xa.Feature.USER_GROUPS),Qb);Ie.get("/groups/:id",W.requireFeature(xa.Feature.USER_GROUPS),Ea("id"),jb);Ie.delete("/groups/:id",W.requireFeature(xa.Feature.USER_GROUPS),Ea("id"),Wb);Ie.patch("/groups/:id",W.requireFeature(xa.Feature.USER_GROUPS),Ea("id"),$b);var Vb=Ie;var zb=P(require("@koa/router"));var Zi=require("@budibase/backend-core");async function Yb(e){let{userId:t,appId:r}=e.params,a=await at.db.getUser(t);if(Zi.users.isGlobalBuilder(a)){e.body={message:"User already admin - no permissions updated."};return}await at.addAppBuilder(a,r),e.body={message:`User "${a.email}" app builder access updated.`}}async function Hb(e){let{userId:t,appId:r}=e.params,a=await at.db.getUser(t);if(Zi.users.isGlobalBuilder(a)){e.body={message:"User already admin - no permissions removed."};return}await at.removeAppBuilder(a,r),e.body={message:`User "${a.email}" app builder access removed.`}}var eu=require("@budibase/types"),tu=require("@budibase/backend-core"),Jb=new zb.default;Jb.post("/api/global/users/:userId/app/:appId/builder",tu.auth.builderOrAdmin,W.requireFeatures(eu.Feature.APP_BUILDERS),Yb).delete("/api/global/users/:userId/app/:appId/builder",tu.auth.builderOrAdmin,W.requireFeatures(eu.Feature.APP_BUILDERS),Hb);var Xb=Jb;var V={};w(V,{group:()=>nu,user:()=>au});var au={};w(au,{fromScimUser:()=>gG,toScimUserResponse:()=>dG,userFilters:()=>hG});var zn=require("@budibase/types"),Zb=require("scim2-parse-filter"),eI=require("@budibase/backend-core"),tI=require("@budibase/shared-core"),{unreachable:lG}=tI.utils,dG=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===zn.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},fG=e=>!!e?.id;function mG(e){if(eI.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}var gG=e=>{let t=fG(e)?e:void 0,r=mG(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:lG(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?zn.UserStatus.ACTIVE:zn.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},hG=e=>{let t={equal:{}},r=(0,Zb.parse)(e);function a(n){switch(n.op){case"eq":{let o=n.attrPath,s;switch(o){case"emails.value":s="email";break;default:s=`scimInfo.${o}`}t.equal[s]=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 nu={};w(nu,{fromScimGroup:()=>bG,toScimGroupResponse:()=>yG});var yG=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}))}),AG=e=>!!e?.id,bG=e=>{let t=AG(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()}};var xu={};w(xu,{LLM:()=>Je,LLMRequest:()=>$,TableGeneration:()=>_u,agentHistoryTitleSystemPrompt:()=>OG,agentSystemPrompt:()=>CG,aiColumnSchemas:()=>Eu,aiTableResponseToTableSchema:()=>Su,appendAIColumns:()=>wu,classifyText:()=>iu,cleanData:()=>uu,extractFileData:()=>EG,generateAIColumns:()=>bu,generateCode:()=>xG,generateCronExpression:()=>pu,generateData:()=>Iu,generateJs:()=>fu,generateSQL:()=>_G,generateTables:()=>Au,generationStructure:()=>vu,getLLM:()=>La,getLLMConfig:()=>yu,getLLMOrThrow:()=>lI,normalizeContentType:()=>ou,parseResponseFormat:()=>Xn,sanitiseToolName:()=>IG,searchWeb:()=>du,sentimentAnalysis:()=>lu,summarizeText:()=>Jn,tableDataStructuredOutput:()=>Ru,translate:()=>cu});var Ca=require("@budibase/types");function IG(e){if(e.length>64)throw new Error("Tool name must be under 64 characters long");return e.replace(/[^a-zA-Z0-9_-]/g,"_")}function ou(e){return e?e.includes("/")?e:{[Ca.SupportedFileType.PDF]:"application/pdf",[Ca.SupportedFileType.JPG]:"image/jpeg",[Ca.SupportedFileType.JPEG]:"image/jpeg",[Ca.SupportedFileType.PNG]:"image/png"}[e.toLowerCase()]||"application/octet-stream":"application/octet-stream"}var ao=require("@budibase/types");var Xe=require("@budibase/backend-core"),iI=require("@budibase/types");var Zn=P(require("openai"));var St=require("@budibase/types");var rI=require("@budibase/shared-core");var wt=P(require("dd-trace"));function su(e,t){return t.map(r=>e[r]).join(" ")}var Je=class{constructor({model:t,apiKey:r,maxTokens:a}){this._model=t,this._apiKey=r,this._maxTokens=a??parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"300")}get model(){return this._model}get apiKey(){return this._apiKey}get maxTokens(){return this._maxTokens}async prompt(t){return await wt.default.trace("prompt",async()=>{let r=typeof t=="string"?new $().addUserMessage(t):t,{messages:a,tokensUsed:n}=await wt.default.trace("chatCompletion",()=>this.chatCompletion(r));return!a||a.length===0?{message:"",tokensUsed:n}:{message:a[a.length-1].content||"",tokensUsed:n}})}async chat(t){return await wt.default.trace("chat",async()=>await this.chatCompletion(t))}async*chatStream(t){yield*this.chatCompletionStream(t)}async summarizeText(t){return wt.default.trace("summarizeText",()=>this.prompt(Jn(t)))}async generateCronExpression(t){return wt.default.trace("generateCronExpression",()=>this.prompt(pu(t)))}async operation(t,r){return wt.default.trace("operation",a=>{a.addTags({operation:t.operation,rowId:r.id});let n=this.promptForOperation(t,r);return this.prompt(n)})}promptForOperation(t,r){let{operation:a,column:n,columns:o,language:s,categories:i,prompt:p}=t;switch(a){case St.AIOperationEnum.SUMMARISE_TEXT:return Jn(su(r,o));case St.AIOperationEnum.CLEAN_DATA:return uu(r[n]);case St.AIOperationEnum.TRANSLATE:return cu(r[n],s);case St.AIOperationEnum.CATEGORISE_TEXT:if(!i)throw Error("No categories provided for categorise text operation. Please provide categories.");return iu(su(r,o),i.split(","));case St.AIOperationEnum.SENTIMENT_ANALYSIS:return lu(r[n]);case St.AIOperationEnum.PROMPT:return p;case St.AIOperationEnum.SEARCH_WEB:return du(su(r,o));default:throw rI.utils.unreachable(a)}}async generateJs(t,r){return await wt.default.trace("generateJs",async()=>{let{bindings:a=[],snippets:n=[]}=r||{};return await this.prompt(fu(a,n).addUserMessage(t))})}};var nI=require("@budibase/types"),mu=require("openai/helpers/zod");function Xn(e){if(e)return e==="text"?{type:"text"}:e==="json"?{type:"json_object"}:e}function aI(e){if(!e)return 0;let t=e.prompt_tokens;return e.completion_tokens*3+t}var Ce=class extends Je{constructor(r){super(r);this.client=this.getClient(r)}getClient(r){if(!r.apiKey)throw new Error("No OpenAI API key found");return new Zn.default({apiKey:r.apiKey})}async uploadFile(r,a,n){let o=ou(n);if(nI.ImageContentTypes.includes(o.toLowerCase())){let p;if(Buffer.isBuffer(r))p=r;else{let f=[];for await(let h of r)f.push(h);p=Buffer.concat(f)}let m=p.toString("base64");return`data:${o};base64,${m}`}let s=await(0,Zn.toFile)(r,a);return(await this.client.files.create({file:s,purpose:"assistants"})).id}async chatCompletion(r){let a={model:this.model,messages:r.messages,max_tokens:this.maxTokens,response_format:Xn(r.format)};r.tools&&r.tools.length>0&&(a.tool_choice="auto",a.tools=r.tools.map(mu.zodFunction));let n=await this.client.chat.completions.create(a),o=n.choices[0]?.message;if(o?.tool_calls){r.addMessage(o);let s=[];for(let i of o.tool_calls){let p=r.findTool(i.function.name);if(!p)throw new Error(`Tool ${i.function.name} not found in prompt tools`);let m=JSON.parse(i.function.arguments);s.push(p.handler(m).then(f=>({role:"tool",tool_call_id:i.id,content:f})).catch(f=>(console.error(`[OPENAI TOOL ERROR] Tool ${i.function.name} failed in OpenAI handler:`,f),{role:"tool",tool_call_id:i.id,content:`Error: ${f.message}`})))}return r.addMessages(await Promise.all(s)),this.chatCompletion(r)}else{if(o?.content)return{messages:[...r.messages,{role:o.role,content:o.content}],tokensUsed:aI(n.usage)};throw new Error("No response found")}}async*chatCompletionStream(r){let a={model:this.model,messages:r.messages,max_tokens:this.maxTokens,response_format:Xn(r.format),stream:!0};r.tools&&r.tools.length>0&&(a.tool_choice="auto",a.tools=r.tools.map(mu.zodFunction));try{let n=await this.client.chat.completions.create(a),o=null,s="",i=null;for await(let m of n){let f=m.choices[0]?.delta;if(f){if(f.content&&(s+=f.content,yield{type:"content",content:f.content}),f.tool_calls&&f.tool_calls.length>0){let h=f.tool_calls[0];h.id?(o={id:h.id,name:h.function?.name||"",arguments:h.function?.arguments||""},yield{type:"tool_call_start",toolCall:{id:o.id,name:o.name,arguments:o.arguments}}):o&&h.function?.arguments&&(o.arguments+=h.function.arguments,yield{type:"tool_call_start",toolCall:{id:o.id,name:o.name,arguments:o.arguments}})}m.usage&&(i=m.usage)}}let p=i?aI(i):0;if(o){r.addMessage({role:"assistant",content:"",tool_calls:[{id:o.id,type:"function",function:{name:o.name,arguments:o.arguments}}]});let m=r.findTool(o.name);if(m)try{let f=JSON.parse(o.arguments),h=await m.handler(f);yield{type:"tool_call_result",toolResult:{id:o.id,result:h}},r.addMessage({role:"tool",tool_call_id:o.id,content:h}),yield*this.chatCompletionStream(r);return}catch(f){yield{type:"tool_call_result",toolResult:{id:o.id,result:`Error: ${f.message}`,error:f.message}},r.addMessage({role:"tool",tool_call_id:o.id,content:`Error: ${f.message}`}),yield*this.chatCompletionStream(r);return}else{let f=`Tool '${o.name}' not found`;yield{type:"tool_call_result",toolResult:{id:o.id,result:f,error:f}},r.addMessage({role:"tool",tool_call_id:o.id,content:f}),yield*this.chatCompletionStream(r);return}}s&&r.addMessage({role:"assistant",content:s}),yield{type:"done",messages:r.messages,tokensUsed:p}}catch(n){yield{type:"error",content:n.message}}}};var ee=require("@budibase/backend-core"),oI=require("@budibase/types");var gu=require("dd-trace"),eo=class extends Je{async prompt(t){let r=await super.prompt(t);return r.tokensUsed&&await Sn(r.tokensUsed),r}async chat(t){let r=await super.chat(t);return r.tokensUsed&&await Sn(r.tokensUsed),r}async uploadFile(t,r,a){return ee.env.SELF_HOSTED?this.uploadFileSelfHost(t,r,a):this.uploadFileCloud(t,r,a)}async uploadFileCloud(t,r,a){return new Ce({apiKey:ee.env.OPENAI_API_KEY,model:this.model,maxTokens:this.maxTokens}).uploadFile(t,r,a)}async uploadFileSelfHost(t,r,a){let n;if(Buffer.isBuffer(t))n=t;else{let p=[];for await(let m of t)p.push(m);n=Buffer.concat(p)}let o=n.toString("base64");if(a&&oI.ImageContentTypes.includes(a.toLowerCase()))return`data:image/jpeg;base64,${o}`;if(!ee.env.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(!this._apiKey){let p=await dn();if(!p)throw new Error("No license key found");this._apiKey=p}let s=await fetch(`${ee.env.BUDICLOUD_URL}/api/ai/upload-file`,{method:"POST",headers:{"Content-Type":"application/json",[ee.constants.Header.LICENSE_KEY]:this._apiKey},body:JSON.stringify({data:o,filename:r,contentType:a})});if(!s.ok)throw await ee.HTTPError.fromResponse(s);return(await s.json()).fileId}async chatCompletion(t){return ee.env.SELF_HOSTED?this.chatCompletionSelfHost(t):this.chatCompletionCloud(t)}async chatCompletionCloud(t){return await gu.tracer.trace("chatCompletionCloud",async()=>await new Ce({apiKey:ee.env.OPENAI_API_KEY,model:this.model,maxTokens:this.maxTokens}).chatCompletion(t))}async chatCompletionSelfHost(t){return await gu.tracer.trace("chatCompletionSelfHost",async r=>{if(!ee.env.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(r.addTags({budicloudUrl:ee.env.BUDICLOUD_URL}),!this._apiKey){let o=await dn();if(!o)throw new Error("No license key found");this._apiKey=o,r.addTags({licenseKey:this._apiKey})}let a={messages:t.messages,format:t.format,useTools:t.tools.length>0},n=await fetch(`${ee.env.BUDICLOUD_URL}/api/ai/chat`,{method:"POST",headers:{"Content-Type":"application/json",[ee.constants.Header.LICENSE_KEY]:this._apiKey},body:JSON.stringify(a)});if(!n.ok)throw await ee.HTTPError.fromResponse(n);return await n.json()})}async*chatCompletionStream(t){ee.env.SELF_HOSTED?yield*this.chatCompletionStreamSelfHost(t):yield*this.chatCompletionStreamCloud(t)}async*chatCompletionStreamCloud(t){yield*new Ce({apiKey:ee.env.OPENAI_API_KEY,model:this.model,maxTokens:this.maxTokens}).chatCompletionStream(t)}async*chatCompletionStreamSelfHost(t){try{let r=await this.chatCompletionSelfHost(t);if(r.messages.length>0){let a=r.messages[r.messages.length-1];a.content&&(yield{type:"content",content:a.content})}yield{type:"done",messages:r.messages,tokensUsed:r.tokensUsed}}catch(r){yield{type:"error",content:r.message}}}};var Oa=require("dd-trace");var hu=P(require("@anthropic-ai/sdk"));function SG(e){if(!e)return 0;let t=e.input_tokens;return e.output_tokens*3+t}var to=class extends Je{constructor(r){super(r);this.client=new hu.default({apiKey:r.apiKey})}firstTextBlock(r){for(let a of r.content)if(a.type==="text")return a.text}async uploadFile(r,a,n){throw new Error("File upload not supported for this LLM provider")}async chatCompletion(r){try{let a=await this.client.messages.create({model:this.model,messages:r.messages.map(({content:o})=>{if(o==null)return{role:"user",content:""};if(typeof o=="string")return{role:"user",content:o};let s="";for(let i of o)i.type==="text"?s+=i.text:["image_url","input_audio","file"].includes(i.type);return{role:"user",content:s}}),max_tokens:this.maxTokens}),n=this.firstTextBlock(a)||"";return{messages:[...r.messages,{role:"assistant",content:n}],tokensUsed:SG(a.usage)}}catch(a){throw a instanceof hu.default.APIError&&console.error(`Anthropic Prompt failed with error ${a.name} and status: ${a.status}`),a}}async*chatCompletionStream(r){try{let a=await this.chatCompletion(r);if(a.messages.length>0){let n=a.messages[a.messages.length-1];n.content&&(yield{type:"content",content:n.content})}yield{type:"done",messages:a.messages,tokensUsed:a.tokensUsed}}catch(a){yield{type:"error",content:a.message}}}};var uI=require("zod"),pI=require("openai/helpers/zod");var sI=require("openai"),ro=class extends Ce{getClient(t){if(!t.apiKey)throw new Error("No Azure OpenAI API key found");if(!t.model)throw new Error("No Azure OpenAI model specified");return new sI.AzureOpenAI({apiKey:t.apiKey,apiVersion:"2024-10-01-preview",deployment:t.model,baseURL:t.baseUrl})}};var cI="gpt-4o-mini",wG={OpenAI:Ce,TogetherAI:Ce,AzureOpenAI:ro,Custom:Ce,Anthropic:to,BudibaseAI:eo};async function TG(){return await Oa.tracer.trace("getAIConfig",async e=>{let t={type:iI.ConfigType.AI,config:{}};if(!Xe.context.isSelfHostUsingCloud()){let a=await Xe.configs.getAIConfig();a&&(t=a)}await fs(t);let r=Object.values(t.config).find(a=>a.active&&a.isDefault);if(!r){e.addTags({enabled:!1,reason:"no provider found"});return}return e.addTags({enabled:!0}),{provider:r.provider,model:r.defaultModel||cI,apiKey:r.apiKey,baseUrl:r.baseUrl}})}async function vG(){return Oa.tracer.trace("getSelfHostOpenAIKeyConfig",e=>{if(!Xe.env.SELF_HOSTED){e.addTags({enabled:!1,reason:"not self host"});return}if(!Xe.env.OPENAI_API_KEY){e.addTags({enabled:!1,reason:"no OPENAI_API_KEY"});return}return e.addTags({enabled:!0}),{provider:"OpenAI",model:cI,apiKey:Xe.env.OPENAI_API_KEY}})}async function yu(){return Oa.tracer.trace("getLLMConfig",async()=>await TG()||await vG())}async function La(e){return await Oa.tracer.trace("getLLM",async t=>{let{model:r,maxTokens:a}=e||{},n=await yu();if(!n){t.addTags({enabled:!1,reason:"no config found"});return}r&&(n.model=r),a&&(n.maxTokens=a);let o=wG[n.provider];if(!o){t.addTags({enabled:!1,reason:"no provider found",provider:n.provider});return}return new o(n)})}async function lI(){let e=await La();if(!e)throw new Xe.HTTPError("No available LLM configurations",500);return e}var $=class e{constructor(){this.messages=[];this.tools=[]}addTool(t){return this.tools.push(t),this}addTools(t){return this.tools.push(...t),this}findTool(t){return this.tools.find(r=>r.name===t)}withFormat(t){return t instanceof uI.z.ZodType?this.format=(0,pI.zodResponseFormat)(t,"key"):this.format=t,this}addMessage(t){return this.messages.push(t),this}addMessages(t){return this.messages.push(...t),this}addUserMessage(t){return this.messages.push({role:"user",content:t}),this}addSystemMessage(t){return this.messages.push({role:"system",content:t}),this}static fromRequest(t){let r=new e;return t.messages&&r.addMessages(t.messages),t.format&&r.withFormat(t.format),r}};var it=require("zod");function Jn(e,t){let r=`Summarize this text:
39
+ ${e}`,a="";if(t)switch(t){case ao.SummariseLength.SHORT:a="In 1-2 concise sentences, ";break;case ao.SummariseLength.MEDIUM:a="In 2-3 paragraphs, ";break;case ao.SummariseLength.LONG:a="In multiple detailed paragraphs, ";break}return new $().addUserMessage(`${a}${r}.
40
+ Only return the summary.`)}function EG(e,t){let r=["You are a data extraction assistant.","Extract data from the attached document/image that matches the provided schema.","The schema defines the structure where values like 'string', 'number', 'boolean' indicate the expected data types.","Extract all items that match the schema from the document.","Return the data in json format","If no matching data is found, return an empty data array."].join(`
41
41
 
42
42
  `),n=t.startsWith("data:")?[{type:"image_url",image_url:{url:t}},{type:"text",text:r}]:[{type:"text",text:`${r}
43
43
 
44
- File ID: ${t}`}],o=vG(e),s=it.z.object({data:it.z.array(o)});return new $().addMessages([{role:"user",content:n}]).withFormat(s)}function vG(e){let t={};for(let[r,a]of Object.entries(e))if(typeof a=="string")switch(a.toLowerCase()){case"string":t[r]=it.z.string();break;case"number":t[r]=it.z.number();break;case"boolean":t[r]=it.z.boolean();break;default:t[r]=it.z.string()}else t[r]=it.z.string();return it.z.object(t)}function su(e,t){return new $().addUserMessage(`Return the category of this text: "${e}". Based on these categories: ${t.join(", ")}. Only return the category. Do not add any extra punctuation or fix spelling mistakes. It should exactly match one of the categories. `)}function iu(e){return new $().addUserMessage(`Clean the following string: "${e}". Remove any spelling mistakes or data issues. Only return the cleaned string itself and nothing else.`)}function EG(e,t){return new $().addUserMessage(`Given the table schema:
44
+ File ID: ${t}`}],o=RG(e),s=it.z.object({data:it.z.array(o)});return new $().addMessages([{role:"user",content:n}]).withFormat(s)}function RG(e){let t={};for(let[r,a]of Object.entries(e))if(typeof a=="string")switch(a.toLowerCase()){case"string":t[r]=it.z.string();break;case"number":t[r]=it.z.number();break;case"boolean":t[r]=it.z.boolean();break;default:t[r]=it.z.string()}else t[r]=it.z.string();return it.z.object(t)}function iu(e,t){return new $().addUserMessage(`Return the category of this text: "${e}". Based on these categories: ${t.join(", ")}. Only return the category. Do not add any extra punctuation or fix spelling mistakes. It should exactly match one of the categories. `)}function uu(e){return new $().addUserMessage(`Clean the following string: "${e}". Remove any spelling mistakes or data issues. Only return the cleaned string itself and nothing else.`)}function _G(e,t){return new $().addUserMessage(`Given the table schema:
45
45
  ${t}
46
46
 
47
47
  Generate a SQL query for the following request:
48
48
  ${e}.
49
- Only provide the SQL.`)}function RG(e){return new $().addUserMessage(`Generate JavaScript code for the following request:
49
+ Only provide the SQL.`)}function xG(e){return new $().addUserMessage(`Generate JavaScript code for the following request:
50
50
  ${e}.
51
- Only provide the JS and nothing else.`)}function uu(e){return new $().addUserMessage(`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:
52
- ${e}`)}function pu(e,t){return new $().addUserMessage(`Translate the following text: "${e}" into ${t}. Only return the translation.`)}function cu(e){return new $().addUserMessage(`Return the sentiment of this text: "${e}". Only return the sentiment.`)}function lu(e){return new $().addUserMessage(`Search the web for the following: "${e}". Only return the top results.`)}function du(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:
51
+ Only provide the JS and nothing else.`)}function pu(e){return new $().addUserMessage(`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:
52
+ ${e}`)}function cu(e,t){return new $().addUserMessage(`Translate the following text: "${e}" into ${t}. Only return the translation.`)}function lu(e){return new $().addUserMessage(`Return the sentiment of this text: "${e}". Only return the sentiment.`)}function du(e){return new $().addUserMessage(`Search the web for the following: "${e}". Only return the top results.`)}function fu(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:
53
53
 
54
54
  ${e.map(({readableBinding:n})=>`- $("${n}")`).join(`
55
55
  `)}`);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:
@@ -144,7 +144,7 @@ a variable, it will be provided to you as a binding.
144
144
 
145
145
  ${a}
146
146
 
147
- ${r}`)}function yu(){let e=`
147
+ ${r}`)}function Au(){let e=`
148
148
  You are generating Budibase table schemas from user prompts.
149
149
  Always return at least 2 tables, and define only one side of relationships using a link field.
150
150
  Exclude id, created_at, and updated_at (Budibase adds them).
@@ -152,10 +152,10 @@ Include a variety of column types: text, dropdown, date, number.
152
152
  Add at least one formula column, one attachment, and one multi-attachment column across the tables.
153
153
  Budibase handles reverse relationships and many-to-many links \u2014 never define join tables or reverse fields.
154
154
  You may specify foreignColumnName, but do not create that field manually.
155
- `;return new $().addSystemMessage(e)}function Au(){let e='Given the generated schema, add only one field of type "AI" to relevant tables to add value to the Budibase user.';return new $().addSystemMessage(e)}function bu(){let e=`
155
+ `;return new $().addSystemMessage(e)}function bu(){let e='Given the generated schema, add only one field of type "AI" to relevant tables to add value to the Budibase user.';return new $().addSystemMessage(e)}function Iu(){let e=`
156
156
  For each table, populate the data field with realistic-looking sample records.
157
157
  Avoid placeholder values like "foo" or "bar". Use real names, emails, etc., and ensure values are unique across rows.
158
- `;return new $().addSystemMessage(e)}function _G(e){return`You are a helpful support agent who uses workflows to resolve user issues efficiently.
158
+ `;return new $().addSystemMessage(e)}function CG(e){return`You are a helpful support agent who uses workflows to resolve user issues efficiently.
159
159
 
160
160
  - The user will ask support queries.
161
161
  - Your replies MUST be short, concise, and directly answer the user's question as quickly and clearly as possible.
@@ -169,15 +169,15 @@ Avoid placeholder values like "foo" or "bar". Use real names, emails, etc., and
169
169
 
170
170
  \`\`\`
171
171
  ${JSON.stringify(e)}
172
- \`\`\``}function xG(){return`You will be provided with a set of history, a conversation between a user and an AI. Using this
172
+ \`\`\``}function OG(){return`You will be provided with a set of history, a conversation between a user and an AI. Using this
173
173
  information generate a title for the conversation, this should start with a capital letter and MUST be
174
- less than five words.`}var Pa=require("@budibase/backend-core"),fI=require("@budibase/shared-core");var ut=require("@budibase/types"),lI=require("@budibase/backend-core");function Iu(e){let t=[],r=[];for(let a of e.tables){let n=a.schema.reduce((o,s)=>{if(s.type===ut.FieldType.LINK){if(!r.includes(s.relationshipId)){let i={[ut.RelationshipType.MANY_TO_ONE]:ut.RelationshipType.ONE_TO_MANY,[ut.RelationshipType.ONE_TO_MANY]:ut.RelationshipType.MANY_TO_ONE,[ut.RelationshipType.MANY_TO_MANY]:ut.RelationshipType.MANY_TO_MANY},{reverseFieldName:p,relationshipId:m,...f}=s;o[s.name]={...f,fieldName:p,relationshipType:i[s.relationshipType]},r.push(m)}}else o[s.name]=s;return o},{});t.push({_id:lI.docIds.generateTableID(),name:a.name,primaryDisplay:a.primaryDisplay,schema:n})}return t}function Su(e,t){let r=[];for(let a of e)r.push({...a,schema:{...a.schema,...t[a.name]?.reduce((n,o)=>(n[o.name]=o,n),{})}});return r}var T=require("@budibase/types"),A=require("zod"),pe=A.z.object({name:A.z.string().describe("A human readable name for the field. It MUST be alpha-numeric and capitalised.")}),wu=pe.extend({type:A.z.literal(T.FieldType.LINK),tableId:A.z.string().describe("This must match one of the generated table names"),reverseFieldName:A.z.string().describe("Only the *name* of the field that will appear in the foreign table. Budibase creates this automatically. Do not define the column yourself."),relationshipId:A.z.string().describe("The ID of the relationship. It must be used in pairs, paring many-to-ones and one-to-manys, or many-to-manys with each other.")}),CG=A.z.array(A.z.union([pe.extend({type:A.z.enum([T.FieldType.STRING,T.FieldType.NUMBER,T.FieldType.BOOLEAN,T.FieldType.LONGFORM]),constraints:A.z.object({presence:A.z.boolean()}).optional()}),wu.extend({relationshipType:A.z.enum([T.RelationshipType.MANY_TO_ONE])}).describe("Many-to-one relationship, where the current table is the 'many' side. Defines the initiating side of the relationship. Only this side should be defined. The reverse column will be created automatically."),wu.extend({relationshipType:A.z.enum([T.RelationshipType.ONE_TO_MANY])}).describe("One-to-many relationship, where the current table is the 'one' side. Defines the initiating side of the relationship. Only this side should be defined. The reverse column will be created automatically."),wu.extend({relationshipType:A.z.enum([T.RelationshipType.MANY_TO_MANY])}).describe("Many to many relationship. Defines the initiating side of the relationship. Only this side should be defined. The reverse column will be created automatically."),pe.extend({type:A.z.literal(T.FieldType.OPTIONS),constraints:A.z.object({inclusion:A.z.array(A.z.string()).describe("The options for the field"),presence:A.z.boolean()})}).describe("A single option from closed set of options"),pe.extend({type:A.z.literal(T.FieldType.ARRAY),constraints:A.z.object({inclusion:A.z.array(A.z.string()).describe("The options for the field"),presence:A.z.boolean(),type:A.z.literal(T.JsonFieldSubType.ARRAY)}).describe("Multiple selected options from closed set of options")}),pe.extend({type:A.z.literal(T.FieldType.FORMULA),formula:A.z.string().describe(`
174
+ less than five words.`}var Pa=require("@budibase/backend-core"),mI=require("@budibase/shared-core");var ut=require("@budibase/types"),dI=require("@budibase/backend-core");function Su(e){let t=[],r=[];for(let a of e.tables){let n=a.schema.reduce((o,s)=>{if(s.type===ut.FieldType.LINK){if(!r.includes(s.relationshipId)){let i={[ut.RelationshipType.MANY_TO_ONE]:ut.RelationshipType.ONE_TO_MANY,[ut.RelationshipType.ONE_TO_MANY]:ut.RelationshipType.MANY_TO_ONE,[ut.RelationshipType.MANY_TO_MANY]:ut.RelationshipType.MANY_TO_MANY},{reverseFieldName:p,relationshipId:m,...f}=s;o[s.name]={...f,fieldName:p,relationshipType:i[s.relationshipType]},r.push(m)}}else o[s.name]=s;return o},{});t.push({_id:dI.docIds.generateTableID(),name:a.name,primaryDisplay:a.primaryDisplay,schema:n})}return t}function wu(e,t){let r=[];for(let a of e)r.push({...a,schema:{...a.schema,...t[a.name]?.reduce((n,o)=>(n[o.name]=o,n),{})}});return r}var T=require("@budibase/types"),A=require("zod"),pe=A.z.object({name:A.z.string().describe("A human readable name for the field. It MUST be alpha-numeric and capitalised.")}),Tu=pe.extend({type:A.z.literal(T.FieldType.LINK),tableId:A.z.string().describe("This must match one of the generated table names"),reverseFieldName:A.z.string().describe("Only the *name* of the field that will appear in the foreign table. Budibase creates this automatically. Do not define the column yourself."),relationshipId:A.z.string().describe("The ID of the relationship. It must be used in pairs, paring many-to-ones and one-to-manys, or many-to-manys with each other.")}),LG=A.z.array(A.z.union([pe.extend({type:A.z.enum([T.FieldType.STRING,T.FieldType.NUMBER,T.FieldType.BOOLEAN,T.FieldType.LONGFORM]),constraints:A.z.object({presence:A.z.boolean()}).optional()}),Tu.extend({relationshipType:A.z.enum([T.RelationshipType.MANY_TO_ONE])}).describe("Many-to-one relationship, where the current table is the 'many' side. Defines the initiating side of the relationship. Only this side should be defined. The reverse column will be created automatically."),Tu.extend({relationshipType:A.z.enum([T.RelationshipType.ONE_TO_MANY])}).describe("One-to-many relationship, where the current table is the 'one' side. Defines the initiating side of the relationship. Only this side should be defined. The reverse column will be created automatically."),Tu.extend({relationshipType:A.z.enum([T.RelationshipType.MANY_TO_MANY])}).describe("Many to many relationship. Defines the initiating side of the relationship. Only this side should be defined. The reverse column will be created automatically."),pe.extend({type:A.z.literal(T.FieldType.OPTIONS),constraints:A.z.object({inclusion:A.z.array(A.z.string()).describe("The options for the field"),presence:A.z.boolean()})}).describe("A single option from closed set of options"),pe.extend({type:A.z.literal(T.FieldType.ARRAY),constraints:A.z.object({inclusion:A.z.array(A.z.string()).describe("The options for the field"),presence:A.z.boolean(),type:A.z.literal(T.JsonFieldSubType.ARRAY)}).describe("Multiple selected options from closed set of options")}),pe.extend({type:A.z.literal(T.FieldType.FORMULA),formula:A.z.string().describe(`
175
175
  A JavaScript expression using only previously defined fields.
176
176
  Reference fields using $("Field name"). Must end with: return ...
177
177
  Example: return $("Score") + $("Weight")
178
- `),responseType:A.z.enum([T.FieldType.STRING,T.FieldType.NUMBER,T.FieldType.BOOLEAN,T.FieldType.DATETIME])}).describe("Define these types after the other types"),pe.extend({type:A.z.literal(T.FieldType.DATETIME),ignoreTimezones:A.z.boolean()}).describe("A datetime field, storing date and time"),pe.extend({type:A.z.literal(T.FieldType.DATETIME),ignoreTimezones:A.z.boolean(),timeOnly:A.z.literal(!0)}).describe("A time only field"),pe.extend({type:A.z.literal(T.FieldType.DATETIME),ignoreTimezones:A.z.boolean(),dateOnly:A.z.literal(!0)}).describe("A date only field"),pe.extend({type:A.z.literal(T.FieldType.ATTACHMENT_SINGLE),subtype:A.z.literal(T.AttachmentSubType.IMAGE)}).describe("Single image column"),pe.extend({type:A.z.literal(T.FieldType.ATTACHMENT_SINGLE)}).describe("Single attachment column. It stores a single document: pdf, word, etc. Use an appropriate name for the column, like 'Invoice', 'Document', etc."),pe.extend({type:A.z.literal(T.FieldType.ATTACHMENTS),subtype:A.z.literal(T.AttachmentSubType.IMAGE)}).describe("Multiple images column. Use an appropiate name for the columns, like 'Gallery', 'Photos', etc."),pe.extend({type:A.z.literal(T.FieldType.ATTACHMENTS)}).describe("Multiple attachments column. It might hold different kind of documents mixed up: pdf, txt, etc. Use an appropiate name for the columns, like 'Invoices', 'Documents', 'Attachments', etc.")])),Tu=A.z.object({tables:A.z.array(A.z.object({name:A.z.string(),schema:CG,primaryDisplay:A.z.string().describe("The column will be used as display, so pick the clearer option. This must match EXACTLY one of the created fields names in the schema.")}))});function vu(e){let t=A.z.object({});for(let r of e){let a=Object.values(r.schema),n=[pe.extend({type:A.z.literal(T.FieldType.AI),operation:A.z.literal(T.AIOperationEnum.TRANSLATE),column:A.z.enum(a.filter(o=>[T.FieldType.STRING,T.FieldType.LONGFORM].includes(o.type)).map(o=>o.name)).describe("The columns to translate"),language:A.z.string()}).describe("This column will be autogenerated via AI to translate one column. Use it for reasonable cases, like translating descriptions or similar."),pe.extend({type:A.z.literal(T.FieldType.AI),operation:A.z.literal(T.AIOperationEnum.CATEGORISE_TEXT),columns:A.z.array(A.z.enum(a.filter(o=>[T.FieldType.STRING,T.FieldType.LONGFORM,T.FieldType.BOOLEAN,T.FieldType.NUMBER,T.FieldType.DATETIME].includes(o.type)).map(o=>o.name))).describe("The columns to be used as context"),categories:A.z.string().describe("CSV list of categories")}).describe("This column will be autogenerated via AI to categorise a row based on one or many columns.")];a.some(o=>o.type===T.FieldType.LONGFORM)&&n.push(pe.extend({type:A.z.literal(T.FieldType.AI),operation:A.z.literal(T.AIOperationEnum.SUMMARISE_TEXT),columns:A.z.array(A.z.enum(a.filter(o=>[T.FieldType.STRING,T.FieldType.LONGFORM].includes(o.type)).map(o=>o.name))).describe("Columns, from the current table, to be passed in the context. Use at least one.")}).describe("This column will be autogenerated via AI to summarise one or many columns.")),t=t.extend({[r.name]:A.z.array(A.z.union(n))})}return t}var k=require("zod"),dI=require("@budibase/shared-core"),q=require("@budibase/types");function Eu(e){let t=k.z.object({});for(let r of e){let a={_id:k.z.string().describe("Unique ID for the row")},n=k.z.union([k.z.literal("https://picsum.photos/600/600").describe("For profile pictures and similar"),k.z.literal("https://picsum.photos/1920/1080").describe("For anything else")]),o=k.z.object({fileName:k.z.string(),extension:k.z.enum([".pdf",".txt"]),content:k.z.string().describe("Random content for the file")});for(let s of Object.values(r.schema)){let{type:i}=s;switch(i){case q.FieldType.STRING:case q.FieldType.LONGFORM:a[s.name]=k.z.string();break;case q.FieldType.NUMBER:case q.FieldType.BIGINT:a[s.name]=k.z.number();break;case q.FieldType.BOOLEAN:a[s.name]=k.z.boolean();break;case q.FieldType.DATETIME:a[s.name]=k.z.string().describe(`ISO datetime. Use realistic dates, based on today's date, ${new Date().toISOString()}`);break;case q.FieldType.ATTACHMENT_SINGLE:s.subtype===q.AttachmentSubType.IMAGE?a[s.name]=n:a[s.name]=o;break;case q.FieldType.ATTACHMENTS:s.subtype===q.AttachmentSubType.IMAGE?a[s.name]=k.z.array(n):a[s.name]=k.z.array(o),a[s.name]=a[s.name].describe("Between 2 and 5 items.");break;case q.FieldType.OPTIONS:a[s.name]=k.z.enum(s.constraints.inclusion);break;case q.FieldType.LINK:{let p=k.z.string().describe(`Match one of the _ids created for table "${s.tableId}"`);s.relationshipType===q.RelationshipType.ONE_TO_MANY?a[s.name]=k.z.array(p).describe("Array with a single item"):s.relationshipType===q.RelationshipType.MANY_TO_MANY&&(a[s.name]=k.z.array(p).describe("Array with a one or many items. You can repeat the same ids between rows"))}break;case q.FieldType.ARRAY:a[s.name]=k.z.array(k.z.enum(s.constraints.inclusion));break;case q.FieldType.AI:case q.FieldType.AUTO:case q.FieldType.SIGNATURE_SINGLE:case q.FieldType.BB_REFERENCE:case q.FieldType.JSON:case q.FieldType.FORMULA:case q.FieldType.INTERNAL:case q.FieldType.BARCODEQR:case q.FieldType.BB_REFERENCE_SINGLE:break;default:throw dI.utils.unreachable(i)}}t=t.extend({[r.name]:k.z.array(k.z.object(a))}).describe(`Each table should include at least a few items (min 3, max 18). The number of items should not be evenly distributed. Instead, follow natural relationships and usage patterns based on the tables nature. For example:
178
+ `),responseType:A.z.enum([T.FieldType.STRING,T.FieldType.NUMBER,T.FieldType.BOOLEAN,T.FieldType.DATETIME])}).describe("Define these types after the other types"),pe.extend({type:A.z.literal(T.FieldType.DATETIME),ignoreTimezones:A.z.boolean()}).describe("A datetime field, storing date and time"),pe.extend({type:A.z.literal(T.FieldType.DATETIME),ignoreTimezones:A.z.boolean(),timeOnly:A.z.literal(!0)}).describe("A time only field"),pe.extend({type:A.z.literal(T.FieldType.DATETIME),ignoreTimezones:A.z.boolean(),dateOnly:A.z.literal(!0)}).describe("A date only field"),pe.extend({type:A.z.literal(T.FieldType.ATTACHMENT_SINGLE),subtype:A.z.literal(T.AttachmentSubType.IMAGE)}).describe("Single image column"),pe.extend({type:A.z.literal(T.FieldType.ATTACHMENT_SINGLE)}).describe("Single attachment column. It stores a single document: pdf, word, etc. Use an appropriate name for the column, like 'Invoice', 'Document', etc."),pe.extend({type:A.z.literal(T.FieldType.ATTACHMENTS),subtype:A.z.literal(T.AttachmentSubType.IMAGE)}).describe("Multiple images column. Use an appropiate name for the columns, like 'Gallery', 'Photos', etc."),pe.extend({type:A.z.literal(T.FieldType.ATTACHMENTS)}).describe("Multiple attachments column. It might hold different kind of documents mixed up: pdf, txt, etc. Use an appropiate name for the columns, like 'Invoices', 'Documents', 'Attachments', etc.")])),vu=A.z.object({tables:A.z.array(A.z.object({name:A.z.string(),schema:LG,primaryDisplay:A.z.string().describe("The column will be used as display, so pick the clearer option. This must match EXACTLY one of the created fields names in the schema.")}))});function Eu(e){let t=A.z.object({});for(let r of e){let a=Object.values(r.schema),n=[pe.extend({type:A.z.literal(T.FieldType.AI),operation:A.z.literal(T.AIOperationEnum.TRANSLATE),column:A.z.enum(a.filter(o=>[T.FieldType.STRING,T.FieldType.LONGFORM].includes(o.type)).map(o=>o.name)).describe("The columns to translate"),language:A.z.string()}).describe("This column will be autogenerated via AI to translate one column. Use it for reasonable cases, like translating descriptions or similar."),pe.extend({type:A.z.literal(T.FieldType.AI),operation:A.z.literal(T.AIOperationEnum.CATEGORISE_TEXT),columns:A.z.array(A.z.enum(a.filter(o=>[T.FieldType.STRING,T.FieldType.LONGFORM,T.FieldType.BOOLEAN,T.FieldType.NUMBER,T.FieldType.DATETIME].includes(o.type)).map(o=>o.name))).describe("The columns to be used as context"),categories:A.z.string().describe("CSV list of categories")}).describe("This column will be autogenerated via AI to categorise a row based on one or many columns.")];a.some(o=>o.type===T.FieldType.LONGFORM)&&n.push(pe.extend({type:A.z.literal(T.FieldType.AI),operation:A.z.literal(T.AIOperationEnum.SUMMARISE_TEXT),columns:A.z.array(A.z.enum(a.filter(o=>[T.FieldType.STRING,T.FieldType.LONGFORM].includes(o.type)).map(o=>o.name))).describe("Columns, from the current table, to be passed in the context. Use at least one.")}).describe("This column will be autogenerated via AI to summarise one or many columns.")),t=t.extend({[r.name]:A.z.array(A.z.union(n))})}return t}var k=require("zod"),fI=require("@budibase/shared-core"),q=require("@budibase/types");function Ru(e){let t=k.z.object({});for(let r of e){let a={_id:k.z.string().describe("Unique ID for the row")},n=k.z.union([k.z.literal("https://picsum.photos/600/600").describe("For profile pictures and similar"),k.z.literal("https://picsum.photos/1920/1080").describe("For anything else")]),o=k.z.object({fileName:k.z.string(),extension:k.z.enum([".pdf",".txt"]),content:k.z.string().describe("Random content for the file")});for(let s of Object.values(r.schema)){let{type:i}=s;switch(i){case q.FieldType.STRING:case q.FieldType.LONGFORM:a[s.name]=k.z.string();break;case q.FieldType.NUMBER:case q.FieldType.BIGINT:a[s.name]=k.z.number();break;case q.FieldType.BOOLEAN:a[s.name]=k.z.boolean();break;case q.FieldType.DATETIME:a[s.name]=k.z.string().describe(`ISO datetime. Use realistic dates, based on today's date, ${new Date().toISOString()}`);break;case q.FieldType.ATTACHMENT_SINGLE:s.subtype===q.AttachmentSubType.IMAGE?a[s.name]=n:a[s.name]=o;break;case q.FieldType.ATTACHMENTS:s.subtype===q.AttachmentSubType.IMAGE?a[s.name]=k.z.array(n):a[s.name]=k.z.array(o),a[s.name]=a[s.name].describe("Between 2 and 5 items.");break;case q.FieldType.OPTIONS:a[s.name]=k.z.enum(s.constraints.inclusion);break;case q.FieldType.LINK:{let p=k.z.string().describe(`Match one of the _ids created for table "${s.tableId}"`);s.relationshipType===q.RelationshipType.ONE_TO_MANY?a[s.name]=k.z.array(p).describe("Array with a single item"):s.relationshipType===q.RelationshipType.MANY_TO_MANY&&(a[s.name]=k.z.array(p).describe("Array with a one or many items. You can repeat the same ids between rows"))}break;case q.FieldType.ARRAY:a[s.name]=k.z.array(k.z.enum(s.constraints.inclusion));break;case q.FieldType.AI:case q.FieldType.AUTO:case q.FieldType.SIGNATURE_SINGLE:case q.FieldType.BB_REFERENCE:case q.FieldType.JSON:case q.FieldType.FORMULA:case q.FieldType.INTERNAL:case q.FieldType.BARCODEQR:case q.FieldType.BB_REFERENCE_SINGLE:break;default:throw fI.utils.unreachable(i)}}t=t.extend({[r.name]:k.z.array(k.z.object(a))}).describe(`Each table should include at least a few items (min 3, max 18). The number of items should not be evenly distributed. Instead, follow natural relationships and usage patterns based on the tables nature. For example:
179
179
  1. If we have posts and comments, there should be more posts than users, and more comments than posts.
180
180
  2. If it's a ticketing system, there may be more tickets than users, and some users may have submitted several tickets.
181
181
  3. In a CRM, there are fewer users than customers, and customers may have many deals.
182
- 4. In a project management tool, projects might have many tasks, and tasks might have multiple comments.`)}return t}var Ua=P(require("dd-trace")),Ru=class e{constructor(t,r){this.llmFunctions={getTableStructure:async t=>Ua.default.trace("llm.getTableStructure",async()=>{let r=await this.llm.prompt(yu().addUserMessage(t).withFormat(Tu));try{let a=JSON.parse(r.message);return Iu(a)}catch{throw new Pa.HTTPError("Error generating tables",500)}}),generateAIColumns:(t,r)=>Ua.default.trace("llm.generateAIColumns",async()=>this.generateAIColumns(t,r)),generateData:async(t,r)=>Ua.default.trace("llm.generateData",async()=>{let a=await this.llm.prompt(bu().addUserMessage(t).withFormat(Eu(r)));try{return JSON.parse(a.message)}catch{throw new Pa.HTTPError("Error generating data",500)}})};this.llm=t,this.delegates=r}static async init(t){let r=await Oa({model:"gpt-4o",maxTokens:2e3});if(!r)throw new Pa.HTTPError("LLM not available",422);return new e(r,t)}async generate(t,r){return Ua.default.trace("tableGeneration.generate",async a=>{let n=await this.generateTables(t,r);return a.addTags({table_count:n.length}),n})}async generateTables(t,r){let a=await this.llmFunctions.getTableStructure(t),n=this.llmFunctions.generateAIColumns(t,a).then(i=>this.delegates.generateTablesDelegate(Su(a,i))),o=await this.llmFunctions.generateData(t,a),s=await n;return await this.delegates.generateDataDelegate(o,r,fI.utils.toMap("name",a)),s}async generateAIColumns(t,r){let a=await this.llm.prompt(Au().addUserMessage(`This is the initial user prompt that generated the given schema:
183
- "${t}"`).withFormat(vu(r)));try{return JSON.parse(a.message)}catch{throw new Pa.HTTPError("Error generating columns",500)}}};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});
182
+ 4. In a project management tool, projects might have many tasks, and tasks might have multiple comments.`)}return t}var Ua=P(require("dd-trace")),_u=class e{constructor(t,r){this.llmFunctions={getTableStructure:async t=>Ua.default.trace("llm.getTableStructure",async()=>{let r=await this.llm.prompt(Au().addUserMessage(t).withFormat(vu));try{let a=JSON.parse(r.message);return Su(a)}catch{throw new Pa.HTTPError("Error generating tables",500)}}),generateAIColumns:(t,r)=>Ua.default.trace("llm.generateAIColumns",async()=>this.generateAIColumns(t,r)),generateData:async(t,r)=>Ua.default.trace("llm.generateData",async()=>{let a=await this.llm.prompt(Iu().addUserMessage(t).withFormat(Ru(r)));try{return JSON.parse(a.message)}catch{throw new Pa.HTTPError("Error generating data",500)}})};this.llm=t,this.delegates=r}static async init(t){let r=await La({model:"gpt-4o",maxTokens:2e3});if(!r)throw new Pa.HTTPError("LLM not available",422);return new e(r,t)}async generate(t,r){return Ua.default.trace("tableGeneration.generate",async a=>{let n=await this.generateTables(t,r);return a.addTags({table_count:n.length}),n})}async generateTables(t,r){let a=await this.llmFunctions.getTableStructure(t),n=this.llmFunctions.generateAIColumns(t,a).then(i=>this.delegates.generateTablesDelegate(wu(a,i))),o=await this.llmFunctions.generateData(t,a),s=await n;return await this.delegates.generateDataDelegate(o,r,mI.utils.toMap("name",a)),s}async generateAIColumns(t,r){let a=await this.llm.prompt(bu().addUserMessage(`This is the initial user prompt that generated the given schema:
183
+ "${t}"`).withFormat(Eu(r)));try{return JSON.parse(a.message)}catch{throw new Pa.HTTPError("Error generating columns",500)}}};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});
@@ -0,0 +1 @@
1
+ export declare const addAction: <T>(addActionFn: () => Promise<T>) => Promise<T>;
@@ -1,3 +1,4 @@
1
+ export * from "./actions";
1
2
  export * from "./apps";
2
3
  export * from "./rows";
3
4
  export * from "./automations";
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "dist"
5
5
  ],
6
6
  "license": "UNLICENSED",
7
- "version": "3.12.9",
7
+ "version": "3.12.10",
8
8
  "description": "Budibase Pro (Backend)",
9
9
  "main": "dist/index.js",
10
10
  "types": "dist/index.d.ts",
@@ -73,5 +73,5 @@
73
73
  }
74
74
  }
75
75
  },
76
- "gitHead": "549f9e9ee4b8ecd936f5df25bcf2dad85de09b2d"
76
+ "gitHead": "9de98cbeb3441ce32f5cc05573fff655c7c758e9"
77
77
  }