@budibase/pro 3.18.9 → 3.18.11

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,13 +1,13 @@
1
- "use strict";var qI=Object.create;var Na=Object.defineProperty;var DI=Object.getOwnPropertyDescriptor;var NI=Object.getOwnPropertyNames;var BI=Object.getPrototypeOf,MI=Object.prototype.hasOwnProperty;var u=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),w=(e,t)=>{for(var r in t)Na(e,r,{get:t[r],enumerable:!0})},Fu=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of NI(t))!MI.call(e,n)&&n!==r&&Na(e,n,{get:()=>t[n],enumerable:!(a=DI(t,n))||a.enumerable});return e};var P=(e,t,r)=>(r=e!=null?qI(BI(e)):{},Fu(t||!e||!e.__esModule?Na(r,"default",{value:e,enumerable:!0}):r,e)),kI=e=>Fu(Na({},"__esModule",{value:!0}),e);var Za=u((i0,vc)=>{"use strict";function NS(e,t){for(var r=-1,a=t.length,n=e.length;++r<a;)e[n+r]=t[r];return e}vc.exports=NS});var Oo=u((u0,_c)=>{"use strict";var BS=typeof global=="object"&&global&&global.Object===Object&&global;_c.exports=BS});var ce=u((c0,xc)=>{"use strict";var MS=Oo(),kS=typeof self=="object"&&self&&self.Object===Object&&self,GS=MS||kS||Function("return this")();xc.exports=GS});var xt=u((p0,Cc)=>{"use strict";var FS=ce(),WS=FS.Symbol;Cc.exports=WS});var Uc=u((l0,Pc)=>{"use strict";var Oc=xt(),Lc=Object.prototype,jS=Lc.hasOwnProperty,QS=Lc.toString,zr=Oc?Oc.toStringTag:void 0;function $S(e){var t=jS.call(e,zr),r=e[zr];try{e[zr]=void 0;var a=!0}catch{}var n=QS.call(e);return a&&(t?e[zr]=r:delete e[zr]),n}Pc.exports=$S});var Dc=u((d0,qc)=>{"use strict";var KS=Object.prototype,VS=KS.toString;function YS(e){return VS.call(e)}qc.exports=YS});var gt=u((f0,Mc)=>{"use strict";var Nc=xt(),HS=Uc(),zS=Dc(),JS="[object Null]",XS="[object Undefined]",Bc=Nc?Nc.toStringTag:void 0;function ZS(e){return e==null?e===void 0?XS:JS:Bc&&Bc in Object(e)?HS(e):zS(e)}Mc.exports=ZS});var be=u((m0,kc)=>{"use strict";function ew(e){return e!=null&&typeof e=="object"}kc.exports=ew});var Fc=u((g0,Gc)=>{"use strict";var tw=gt(),rw=be(),aw="[object Arguments]";function nw(e){return rw(e)&&tw(e)==aw}Gc.exports=nw});var Jr=u((y0,Qc)=>{"use strict";var Wc=Fc(),ow=be(),jc=Object.prototype,sw=jc.hasOwnProperty,iw=jc.propertyIsEnumerable,uw=Wc(function(){return arguments}())?Wc:function(e){return ow(e)&&sw.call(e,"callee")&&!iw.call(e,"callee")};Qc.exports=uw});var se=u((h0,$c)=>{"use strict";var cw=Array.isArray;$c.exports=cw});var Hc=u((A0,Yc)=>{"use strict";var Kc=xt(),pw=Jr(),lw=se(),Vc=Kc?Kc.isConcatSpreadable:void 0;function dw(e){return lw(e)||pw(e)||!!(Vc&&e&&e[Vc])}Yc.exports=dw});var Lo=u((b0,Jc)=>{"use strict";var fw=Za(),mw=Hc();function zc(e,t,r,a,n){var o=-1,s=e.length;for(r||(r=mw),n||(n=[]);++o<s;){var i=e[o];t>0&&r(i)?t>1?zc(i,t-1,r,a,n):fw(n,i):a||(n[n.length]=i)}return n}Jc.exports=zc});var Xr=u((I0,Xc)=>{"use strict";function gw(e){return e}Xc.exports=gw});var en=u((S0,Zc)=>{"use strict";function yw(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)}Zc.exports=yw});var Po=u((w0,tp)=>{"use strict";var hw=en(),ep=Math.max;function Aw(e,t,r){return t=ep(t===void 0?e.length-1:t,0),function(){for(var a=arguments,n=-1,o=ep(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),hw(e,this,i)}}tp.exports=Aw});var ap=u((T0,rp)=>{"use strict";function bw(e){return function(){return e}}rp.exports=bw});var xe=u((E0,np)=>{"use strict";function Iw(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}np.exports=Iw});var Zr=u((R0,op)=>{"use strict";var Sw=gt(),ww=xe(),Tw="[object AsyncFunction]",Ew="[object Function]",Rw="[object GeneratorFunction]",vw="[object Proxy]";function _w(e){if(!ww(e))return!1;var t=Sw(e);return t==Ew||t==Rw||t==Tw||t==vw}op.exports=_w});var ip=u((v0,sp)=>{"use strict";var xw=ce(),Cw=xw["__core-js_shared__"];sp.exports=Cw});var pp=u((_0,cp)=>{"use strict";var Uo=ip(),up=function(){var e=/[^.]+$/.exec(Uo&&Uo.keys&&Uo.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function Ow(e){return!!up&&up in e}cp.exports=Ow});var qo=u((x0,lp)=>{"use strict";var Lw=Function.prototype,Pw=Lw.toString;function Uw(e){if(e!=null){try{return Pw.call(e)}catch{}try{return e+""}catch{}}return""}lp.exports=Uw});var fp=u((C0,dp)=>{"use strict";var qw=Zr(),Dw=pp(),Nw=xe(),Bw=qo(),Mw=/[\\^$.*+?()[\]{}|]/g,kw=/^\[object .+?Constructor\]$/,Gw=Function.prototype,Fw=Object.prototype,Ww=Gw.toString,jw=Fw.hasOwnProperty,Qw=RegExp("^"+Ww.call(jw).replace(Mw,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function $w(e){if(!Nw(e)||Dw(e))return!1;var t=qw(e)?Qw:kw;return t.test(Bw(e))}dp.exports=$w});var gp=u((O0,mp)=>{"use strict";function Kw(e,t){return e?.[t]}mp.exports=Kw});var yt=u((L0,yp)=>{"use strict";var Vw=fp(),Yw=gp();function Hw(e,t){var r=Yw(e,t);return Vw(r)?r:void 0}yp.exports=Hw});var Do=u((P0,hp)=>{"use strict";var zw=yt(),Jw=function(){try{var e=zw(Object,"defineProperty");return e({},"",{}),e}catch{}}();hp.exports=Jw});var Ip=u((U0,bp)=>{"use strict";var Xw=ap(),Ap=Do(),Zw=Xr(),eT=Ap?function(e,t){return Ap(e,"toString",{configurable:!0,enumerable:!1,value:Xw(t),writable:!0})}:Zw;bp.exports=eT});var No=u((q0,Sp)=>{"use strict";var tT=800,rT=16,aT=Date.now;function nT(e){var t=0,r=0;return function(){var a=aT(),n=rT-(a-r);if(r=a,n>0){if(++t>=tT)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}Sp.exports=nT});var tn=u((D0,wp)=>{"use strict";var oT=Ip(),sT=No(),iT=sT(oT);wp.exports=iT});var Bo=u((N0,Tp)=>{"use strict";var uT=Xr(),cT=Po(),pT=tn();function lT(e,t){return pT(cT(e,t,uT),e+"")}Tp.exports=lT});var ea=u((B0,Ep)=>{"use strict";var dT=yt(),fT=dT(Object,"create");Ep.exports=fT});var _p=u((M0,vp)=>{"use strict";var Rp=ea();function mT(){this.__data__=Rp?Rp(null):{},this.size=0}vp.exports=mT});var Cp=u((k0,xp)=>{"use strict";function gT(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}xp.exports=gT});var Lp=u((G0,Op)=>{"use strict";var yT=ea(),hT="__lodash_hash_undefined__",AT=Object.prototype,bT=AT.hasOwnProperty;function IT(e){var t=this.__data__;if(yT){var r=t[e];return r===hT?void 0:r}return bT.call(t,e)?t[e]:void 0}Op.exports=IT});var Up=u((F0,Pp)=>{"use strict";var ST=ea(),wT=Object.prototype,TT=wT.hasOwnProperty;function ET(e){var t=this.__data__;return ST?t[e]!==void 0:TT.call(t,e)}Pp.exports=ET});var Dp=u((W0,qp)=>{"use strict";var RT=ea(),vT="__lodash_hash_undefined__";function _T(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=RT&&t===void 0?vT:t,this}qp.exports=_T});var Bp=u((j0,Np)=>{"use strict";var xT=_p(),CT=Cp(),OT=Lp(),LT=Up(),PT=Dp();function Ht(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])}}Ht.prototype.clear=xT;Ht.prototype.delete=CT;Ht.prototype.get=OT;Ht.prototype.has=LT;Ht.prototype.set=PT;Np.exports=Ht});var kp=u((Q0,Mp)=>{"use strict";function UT(){this.__data__=[],this.size=0}Mp.exports=UT});var zt=u(($0,Gp)=>{"use strict";function qT(e,t){return e===t||e!==e&&t!==t}Gp.exports=qT});var ta=u((K0,Fp)=>{"use strict";var DT=zt();function NT(e,t){for(var r=e.length;r--;)if(DT(e[r][0],t))return r;return-1}Fp.exports=NT});var jp=u((V0,Wp)=>{"use strict";var BT=ta(),MT=Array.prototype,kT=MT.splice;function GT(e){var t=this.__data__,r=BT(t,e);if(r<0)return!1;var a=t.length-1;return r==a?t.pop():kT.call(t,r,1),--this.size,!0}Wp.exports=GT});var $p=u((Y0,Qp)=>{"use strict";var FT=ta();function WT(e){var t=this.__data__,r=FT(t,e);return r<0?void 0:t[r][1]}Qp.exports=WT});var Vp=u((H0,Kp)=>{"use strict";var jT=ta();function QT(e){return jT(this.__data__,e)>-1}Kp.exports=QT});var Hp=u((z0,Yp)=>{"use strict";var $T=ta();function KT(e,t){var r=this.__data__,a=$T(r,e);return a<0?(++this.size,r.push([e,t])):r[a][1]=t,this}Yp.exports=KT});var ra=u((J0,zp)=>{"use strict";var VT=kp(),YT=jp(),HT=$p(),zT=Vp(),JT=Hp();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=VT;Jt.prototype.delete=YT;Jt.prototype.get=HT;Jt.prototype.has=zT;Jt.prototype.set=JT;zp.exports=Jt});var rn=u((X0,Jp)=>{"use strict";var XT=yt(),ZT=ce(),eE=XT(ZT,"Map");Jp.exports=eE});var el=u((Z0,Zp)=>{"use strict";var Xp=Bp(),tE=ra(),rE=rn();function aE(){this.size=0,this.__data__={hash:new Xp,map:new(rE||tE),string:new Xp}}Zp.exports=aE});var rl=u((eF,tl)=>{"use strict";function nE(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}tl.exports=nE});var aa=u((tF,al)=>{"use strict";var oE=rl();function sE(e,t){var r=e.__data__;return oE(t)?r[typeof t=="string"?"string":"hash"]:r.map}al.exports=sE});var ol=u((rF,nl)=>{"use strict";var iE=aa();function uE(e){var t=iE(this,e).delete(e);return this.size-=t?1:0,t}nl.exports=uE});var il=u((aF,sl)=>{"use strict";var cE=aa();function pE(e){return cE(this,e).get(e)}sl.exports=pE});var cl=u((nF,ul)=>{"use strict";var lE=aa();function dE(e){return lE(this,e).has(e)}ul.exports=dE});var ll=u((oF,pl)=>{"use strict";var fE=aa();function mE(e,t){var r=fE(this,e),a=r.size;return r.set(e,t),this.size+=r.size==a?0:1,this}pl.exports=mE});var an=u((sF,dl)=>{"use strict";var gE=el(),yE=ol(),hE=il(),AE=cl(),bE=ll();function Xt(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])}}Xt.prototype.clear=gE;Xt.prototype.delete=yE;Xt.prototype.get=hE;Xt.prototype.has=AE;Xt.prototype.set=bE;dl.exports=Xt});var ml=u((iF,fl)=>{"use strict";var IE="__lodash_hash_undefined__";function SE(e){return this.__data__.set(e,IE),this}fl.exports=SE});var yl=u((uF,gl)=>{"use strict";function wE(e){return this.__data__.has(e)}gl.exports=wE});var Mo=u((cF,hl)=>{"use strict";var TE=an(),EE=ml(),RE=yl();function nn(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new TE;++t<r;)this.add(e[t])}nn.prototype.add=nn.prototype.push=EE;nn.prototype.has=RE;hl.exports=nn});var bl=u((pF,Al)=>{"use strict";function vE(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}Al.exports=vE});var Sl=u((lF,Il)=>{"use strict";function _E(e){return e!==e}Il.exports=_E});var Tl=u((dF,wl)=>{"use strict";function xE(e,t,r){for(var a=r-1,n=e.length;++a<n;)if(e[a]===t)return a;return-1}wl.exports=xE});var Rl=u((fF,El)=>{"use strict";var CE=bl(),OE=Sl(),LE=Tl();function PE(e,t,r){return t===t?LE(e,t,r):CE(e,OE,r)}El.exports=PE});var ko=u((mF,vl)=>{"use strict";var UE=Rl();function qE(e,t){var r=e==null?0:e.length;return!!r&&UE(e,t,0)>-1}vl.exports=qE});var xl=u((gF,_l)=>{"use strict";function DE(e,t,r){for(var a=-1,n=e==null?0:e.length;++a<n;)if(r(t,e[a]))return!0;return!1}_l.exports=DE});var Go=u((yF,Cl)=>{"use strict";function NE(e,t){return e.has(t)}Cl.exports=NE});var Fo=u((hF,Ol)=>{"use strict";var BE=yt(),ME=ce(),kE=BE(ME,"Set");Ol.exports=kE});var Wo=u((AF,Ll)=>{"use strict";function GE(){}Ll.exports=GE});var on=u((bF,Pl)=>{"use strict";function FE(e){var t=-1,r=Array(e.size);return e.forEach(function(a){r[++t]=a}),r}Pl.exports=FE});var ql=u((IF,Ul)=>{"use strict";var jo=Fo(),WE=Wo(),jE=on(),QE=1/0,$E=jo&&1/jE(new jo([,-0]))[1]==QE?function(e){return new jo(e)}:WE;Ul.exports=$E});var Nl=u((SF,Dl)=>{"use strict";var KE=Mo(),VE=ko(),YE=xl(),HE=Go(),zE=ql(),JE=on(),XE=200;function ZE(e,t,r){var a=-1,n=VE,o=e.length,s=!0,i=[],c=i;if(r)s=!1,n=YE;else if(o>=XE){var f=t?null:zE(e);if(f)return JE(f);s=!1,n=HE,c=new KE}else c=t?[]:i;e:for(;++a<o;){var m=e[a],g=t?t(m):m;if(m=r||m!==0?m:0,s&&g===g){for(var y=c.length;y--;)if(c[y]===g)continue e;t&&c.push(g),i.push(m)}else n(c,g,r)||(c!==i&&c.push(g),i.push(m))}return i}Dl.exports=ZE});var sn=u((wF,Bl)=>{"use strict";var eR=9007199254740991;function tR(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=eR}Bl.exports=tR});var Zt=u((TF,Ml)=>{"use strict";var rR=Zr(),aR=sn();function nR(e){return e!=null&&aR(e.length)&&!rR(e)}Ml.exports=nR});var Qo=u((EF,kl)=>{"use strict";var oR=Zt(),sR=be();function iR(e){return sR(e)&&oR(e)}kl.exports=iR});var Fl=u((RF,Gl)=>{"use strict";var uR=Lo(),cR=Bo(),pR=Nl(),lR=Qo(),dR=cR(function(e){return pR(uR(e,1,lR,!0))});Gl.exports=dR});var jl=u((vF,Wl)=>{"use strict";var fR=ra();function mR(){this.__data__=new fR,this.size=0}Wl.exports=mR});var $l=u((_F,Ql)=>{"use strict";function gR(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}Ql.exports=gR});var Vl=u((xF,Kl)=>{"use strict";function yR(e){return this.__data__.get(e)}Kl.exports=yR});var Hl=u((CF,Yl)=>{"use strict";function hR(e){return this.__data__.has(e)}Yl.exports=hR});var Jl=u((OF,zl)=>{"use strict";var AR=ra(),bR=rn(),IR=an(),SR=200;function wR(e,t){var r=this.__data__;if(r instanceof AR){var a=r.__data__;if(!bR||a.length<SR-1)return a.push([e,t]),this.size=++r.size,this;r=this.__data__=new IR(a)}return r.set(e,t),this.size=r.size,this}zl.exports=wR});var na=u((LF,Xl)=>{"use strict";var TR=ra(),ER=jl(),RR=$l(),vR=Vl(),_R=Hl(),xR=Jl();function er(e){var t=this.__data__=new TR(e);this.size=t.size}er.prototype.clear=ER;er.prototype.delete=RR;er.prototype.get=vR;er.prototype.has=_R;er.prototype.set=xR;Xl.exports=er});var oa=u((PF,ed)=>{"use strict";var Zl=Do();function CR(e,t,r){t=="__proto__"&&Zl?Zl(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}ed.exports=CR});var $o=u((UF,td)=>{"use strict";var OR=oa(),LR=zt();function PR(e,t,r){(r!==void 0&&!LR(e[t],r)||r===void 0&&!(t in e))&&OR(e,t,r)}td.exports=PR});var ad=u((qF,rd)=>{"use strict";function UR(e){return function(t,r,a){for(var n=-1,o=Object(t),s=a(t),i=s.length;i--;){var c=s[e?i:++n];if(r(o[c],c,o)===!1)break}return t}}rd.exports=UR});var Ko=u((DF,nd)=>{"use strict";var qR=ad(),DR=qR();nd.exports=DR});var Vo=u((sa,tr)=>{"use strict";var NR=ce(),ud=typeof sa=="object"&&sa&&!sa.nodeType&&sa,od=ud&&typeof tr=="object"&&tr&&!tr.nodeType&&tr,BR=od&&od.exports===ud,sd=BR?NR.Buffer:void 0,id=sd?sd.allocUnsafe:void 0;function MR(e,t){if(t)return e.slice();var r=e.length,a=id?id(r):new e.constructor(r);return e.copy(a),a}tr.exports=MR});var Yo=u((NF,cd)=>{"use strict";var kR=ce(),GR=kR.Uint8Array;cd.exports=GR});var un=u((BF,ld)=>{"use strict";var pd=Yo();function FR(e){var t=new e.constructor(e.byteLength);return new pd(t).set(new pd(e)),t}ld.exports=FR});var Ho=u((MF,dd)=>{"use strict";var WR=un();function jR(e,t){var r=t?WR(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}dd.exports=jR});var rr=u((kF,fd)=>{"use strict";function QR(e,t){var r=-1,a=e.length;for(t||(t=Array(a));++r<a;)t[r]=e[r];return t}fd.exports=QR});var ia=u((GF,gd)=>{"use strict";var $R=xe(),md=Object.create,KR=function(){function e(){}return function(t){if(!$R(t))return{};if(md)return md(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();gd.exports=KR});var zo=u((FF,yd)=>{"use strict";function VR(e,t){return function(r){return e(t(r))}}yd.exports=VR});var cn=u((WF,hd)=>{"use strict";var YR=zo(),HR=YR(Object.getPrototypeOf,Object);hd.exports=HR});var pn=u((jF,Ad)=>{"use strict";var zR=Object.prototype;function JR(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||zR;return e===r}Ad.exports=JR});var Jo=u((QF,bd)=>{"use strict";var XR=ia(),ZR=cn(),ev=pn();function tv(e){return typeof e.constructor=="function"&&!ev(e)?XR(ZR(e)):{}}bd.exports=tv});var Sd=u(($F,Id)=>{"use strict";function rv(){return!1}Id.exports=rv});var ca=u((ua,ar)=>{"use strict";var av=ce(),nv=Sd(),Ed=typeof ua=="object"&&ua&&!ua.nodeType&&ua,wd=Ed&&typeof ar=="object"&&ar&&!ar.nodeType&&ar,ov=wd&&wd.exports===Ed,Td=ov?av.Buffer:void 0,sv=Td?Td.isBuffer:void 0,iv=sv||nv;ar.exports=iv});var Xo=u((KF,vd)=>{"use strict";var uv=gt(),cv=cn(),pv=be(),lv="[object Object]",dv=Function.prototype,fv=Object.prototype,Rd=dv.toString,mv=fv.hasOwnProperty,gv=Rd.call(Object);function yv(e){if(!pv(e)||uv(e)!=lv)return!1;var t=cv(e);if(t===null)return!0;var r=mv.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Rd.call(r)==gv}vd.exports=yv});var xd=u((VF,_d)=>{"use strict";var hv=gt(),Av=sn(),bv=be(),Iv="[object Arguments]",Sv="[object Array]",wv="[object Boolean]",Tv="[object Date]",Ev="[object Error]",Rv="[object Function]",vv="[object Map]",_v="[object Number]",xv="[object Object]",Cv="[object RegExp]",Ov="[object Set]",Lv="[object String]",Pv="[object WeakMap]",Uv="[object ArrayBuffer]",qv="[object DataView]",Dv="[object Float32Array]",Nv="[object Float64Array]",Bv="[object Int8Array]",Mv="[object Int16Array]",kv="[object Int32Array]",Gv="[object Uint8Array]",Fv="[object Uint8ClampedArray]",Wv="[object Uint16Array]",jv="[object Uint32Array]",B={};B[Dv]=B[Nv]=B[Bv]=B[Mv]=B[kv]=B[Gv]=B[Fv]=B[Wv]=B[jv]=!0;B[Iv]=B[Sv]=B[Uv]=B[wv]=B[qv]=B[Tv]=B[Ev]=B[Rv]=B[vv]=B[_v]=B[xv]=B[Cv]=B[Ov]=B[Lv]=B[Pv]=!1;function Qv(e){return bv(e)&&Av(e.length)&&!!B[hv(e)]}_d.exports=Qv});var ln=u((YF,Cd)=>{"use strict";function $v(e){return function(t){return e(t)}}Cd.exports=$v});var dn=u((pa,nr)=>{"use strict";var Kv=Oo(),Od=typeof pa=="object"&&pa&&!pa.nodeType&&pa,la=Od&&typeof nr=="object"&&nr&&!nr.nodeType&&nr,Vv=la&&la.exports===Od,Zo=Vv&&Kv.process,Yv=function(){try{var e=la&&la.require&&la.require("util").types;return e||Zo&&Zo.binding&&Zo.binding("util")}catch{}}();nr.exports=Yv});var fn=u((HF,Ud)=>{"use strict";var Hv=xd(),zv=ln(),Ld=dn(),Pd=Ld&&Ld.isTypedArray,Jv=Pd?zv(Pd):Hv;Ud.exports=Jv});var es=u((zF,qd)=>{"use strict";function Xv(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}qd.exports=Xv});var ts=u((JF,Dd)=>{"use strict";var Zv=oa(),e_=zt(),t_=Object.prototype,r_=t_.hasOwnProperty;function a_(e,t,r){var a=e[t];(!(r_.call(e,t)&&e_(a,r))||r===void 0&&!(t in e))&&Zv(e,t,r)}Dd.exports=a_});var or=u((XF,Nd)=>{"use strict";var n_=ts(),o_=oa();function s_(e,t,r,a){var n=!r;r||(r={});for(var o=-1,s=t.length;++o<s;){var i=t[o],c=a?a(r[i],e[i],i,r,e):void 0;c===void 0&&(c=e[i]),n?o_(r,i,c):n_(r,i,c)}return r}Nd.exports=s_});var Md=u((ZF,Bd)=>{"use strict";function i_(e,t){for(var r=-1,a=Array(e);++r<e;)a[r]=t(r);return a}Bd.exports=i_});var da=u((e1,kd)=>{"use strict";var u_=9007199254740991,c_=/^(?:0|[1-9]\d*)$/;function p_(e,t){var r=typeof e;return t=t??u_,!!t&&(r=="number"||r!="symbol"&&c_.test(e))&&e>-1&&e%1==0&&e<t}kd.exports=p_});var rs=u((t1,Gd)=>{"use strict";var l_=Md(),d_=Jr(),f_=se(),m_=ca(),g_=da(),y_=fn(),h_=Object.prototype,A_=h_.hasOwnProperty;function b_(e,t){var r=f_(e),a=!r&&d_(e),n=!r&&!a&&m_(e),o=!r&&!a&&!n&&y_(e),s=r||a||n||o,i=s?l_(e.length,String):[],c=i.length;for(var f in e)(t||A_.call(e,f))&&!(s&&(f=="length"||n&&(f=="offset"||f=="parent")||o&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||g_(f,c)))&&i.push(f);return i}Gd.exports=b_});var Wd=u((r1,Fd)=>{"use strict";function I_(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}Fd.exports=I_});var Qd=u((a1,jd)=>{"use strict";var S_=xe(),w_=pn(),T_=Wd(),E_=Object.prototype,R_=E_.hasOwnProperty;function v_(e){if(!S_(e))return T_(e);var t=w_(e),r=[];for(var a in e)a=="constructor"&&(t||!R_.call(e,a))||r.push(a);return r}jd.exports=v_});var sr=u((n1,$d)=>{"use strict";var __=rs(),x_=Qd(),C_=Zt();function O_(e){return C_(e)?__(e,!0):x_(e)}$d.exports=O_});var Vd=u((o1,Kd)=>{"use strict";var L_=or(),P_=sr();function U_(e){return L_(e,P_(e))}Kd.exports=U_});var Zd=u((s1,Xd)=>{"use strict";var Yd=$o(),q_=Vo(),D_=Ho(),N_=rr(),B_=Jo(),Hd=Jr(),zd=se(),M_=Qo(),k_=ca(),G_=Zr(),F_=xe(),W_=Xo(),j_=fn(),Jd=es(),Q_=Vd();function $_(e,t,r,a,n,o,s){var i=Jd(e,r),c=Jd(t,r),f=s.get(c);if(f){Yd(e,r,f);return}var m=o?o(i,c,r+"",e,t,s):void 0,g=m===void 0;if(g){var y=zd(c),I=!y&&k_(c),C=!y&&!I&&j_(c);m=c,y||I||C?zd(i)?m=i:M_(i)?m=N_(i):I?(g=!1,m=q_(c,!0)):C?(g=!1,m=D_(c,!0)):m=[]:W_(c)||Hd(c)?(m=i,Hd(i)?m=Q_(i):(!F_(i)||G_(i))&&(m=B_(c))):g=!1}g&&(s.set(c,m),n(m,c,a,o,s),s.delete(c)),Yd(e,r,m)}Xd.exports=$_});var rf=u((i1,tf)=>{"use strict";var K_=na(),V_=$o(),Y_=Ko(),H_=Zd(),z_=xe(),J_=sr(),X_=es();function ef(e,t,r,a,n){e!==t&&Y_(t,function(o,s){if(n||(n=new K_),z_(o))H_(e,t,s,r,ef,a,n);else{var i=a?a(X_(e,s),o,s+"",e,t,n):void 0;i===void 0&&(i=o),V_(e,s,i)}},J_)}tf.exports=ef});var nf=u((u1,af)=>{"use strict";var Z_=zt(),ex=Zt(),tx=da(),rx=xe();function ax(e,t,r){if(!rx(r))return!1;var a=typeof t;return(a=="number"?ex(r)&&tx(t,r.length):a=="string"&&t in r)?Z_(r[t],e):!1}af.exports=ax});var sf=u((c1,of)=>{"use strict";var nx=Bo(),ox=nf();function sx(e){return nx(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&&ox(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})}of.exports=sx});var as=u((p1,uf)=>{"use strict";var ix=rf(),ux=sf(),cx=ux(function(e,t,r){ix(e,t,r)});uf.exports=cx});var lm=u(ge=>{"use strict";ge.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"};ge.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"]};ge.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};ge.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};ge.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};ge.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]};ge.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}};ge.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}};ge.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=ge.aliasToReal,r={};for(var a in t){var n=t[a];e.call(r,n)?r[n].push(a):r[n]=[a]}return r}();ge.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"};ge.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};ge.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 Xs=u((Dj,dm)=>{"use strict";dm.exports={}});var ym=u((Nj,gm)=>{"use strict";var X=lm(),KC=Xs(),fm=Array.prototype.push;function VC(e,t){return t==2?function(r,a){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}function Zs(e,t){return t==2?function(r,a){return e(r,a)}:function(r){return e(r)}}function mm(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}function YC(e){return function(t){return e({},t)}}function HC(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&&fm.apply(s,o),t!=a&&fm.apply(s,n.slice(t+1)),e.apply(this,s)}}function ei(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 ti(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:KC,c="curry"in a&&a.curry,f="fixed"in a&&a.fixed,m="rearg"in a&&a.rearg,g=n?r.runInContext():void 0,y=n?r:{ary:e.ary,assign:e.assign,clone:e.clone,curry:e.curry,forEach:e.forEach,isArray:e.isArray,isError:e.isError,isFunction:e.isFunction,isWeakMap:e.isWeakMap,iteratee:e.iteratee,keys:e.keys,rearg:e.rearg,toInteger:e.toInteger,toPath:e.toPath},I=y.ary,C=y.assign,_=y.clone,v=y.curry,R=y.forEach,U=y.isArray,qe=y.isError,Ee=y.isFunction,pt=y.isWeakMap,Wt=y.keys,Ir=y.rearg,Sr=y.toInteger,RI=y.toPath,qu=Wt(X.aryMethod),vI={castArray:function(S){return function(){var h=arguments[0];return U(h)?S(mm(h)):S.apply(void 0,arguments)}},iteratee:function(S){return function(){var h=arguments[0],b=arguments[1],E=S(h,b),O=E.length;return s.cap&&typeof b=="number"?(b=b>2?b-2:1,O&&O<=b?E:Zs(E,b)):E}},mixin:function(S){return function(h){var b=this;if(!Ee(b))return S(b,Object(h));var E=[];return R(Wt(h),function(O){Ee(h[O])&&E.push([O,b.prototype[O]])}),S(b,Object(h)),R(E,function(O){var ie=O[1];Ee(ie)?b.prototype[O[0]]=ie:delete b.prototype[O[0]]}),b}},nthArg:function(S){return function(h){var b=h<0?1:Sr(h)+1;return v(S(h),b)}},rearg:function(S){return function(h,b){var E=b?b.length:0;return v(S(h,b),E)}},runInContext:function(S){return function(h){return ti(e,S(h),a)}}};function _I(S,h){if(s.cap){var b=X.iterateeRearg[S];if(b)return PI(h,b);var E=!n&&X.iterateeAry[S];if(E)return LI(h,E)}return h}function xI(S,h,b){return c||s.curry&&b>1?v(h,b):h}function Du(S,h,b){if(s.fixed&&(f||!X.skipFixed[S])){var E=X.methodSpread[S],O=E&&E.start;return O===void 0?I(h,b):HC(h,O)}return h}function Nu(S,h,b){return s.rearg&&b>1&&(m||!X.skipRearg[S])?Ir(h,X.methodRearg[S]||X.aryRearg[b]):h}function CI(S,h){h=RI(h);for(var b=-1,E=h.length,O=E-1,ie=_(Object(S)),We=ie;We!=null&&++b<E;){var Re=h[b],je=We[Re];je!=null&&!(Ee(je)||qe(je)||pt(je))&&(We[Re]=_(b==O?je:Object(je))),We=We[Re]}return ie}function OI(S){return he.runInContext.convert(S)(void 0)}function Bu(S,h){var b=X.aliasToReal[S]||S,E=X.remap[b]||b,O=a;return function(ie){var We=n?g:y,Re=n?g[E]:h,je=C(C({},O),ie);return ti(We,b,Re,je)}}function LI(S,h){return Mu(S,function(b){return typeof b=="function"?Zs(b,h):b})}function PI(S,h){return Mu(S,function(b){var E=h.length;return VC(Ir(Zs(b,E),h),E)})}function Mu(S,h){return function(){var b=arguments.length;if(!b)return S();for(var E=Array(b);b--;)E[b]=arguments[b];var O=s.rearg?0:b-1;return E[O]=h(E[O]),S.apply(void 0,E)}}function ku(S,h,b){var E,O=X.aliasToReal[S]||S,ie=h,We=vI[O];return We?ie=We(h):s.immutable&&(X.mutate.array[O]?ie=ei(h,mm):X.mutate.object[O]?ie=ei(h,YC(h)):X.mutate.set[O]&&(ie=ei(h,CI))),R(qu,function(Re){return R(X.aryMethod[Re],function(je){if(O==je){var Gu=X.methodSpread[O],UI=Gu&&Gu.afterRearg;return E=UI?Du(O,Nu(O,ie,Re),Re):Nu(O,Du(O,ie,Re),Re),E=_I(O,E),E=xI(O,E,Re),!1}}),!E}),E||(E=ie),E==h&&(E=c?v(E,1):function(){return h.apply(this,arguments)}),E.convert=Bu(O,h),E.placeholder=h.placeholder=b,E}if(!o)return ku(t,r,i);var he=r,wr=[];return R(qu,function(S){R(X.aryMethod[S],function(h){var b=he[X.remap[h]||h];b&&wr.push([h,ku(h,b,he)])})}),R(Wt(he),function(S){var h=he[S];if(typeof h=="function"){for(var b=wr.length;b--;)if(wr[b][0]==S)return;h.convert=Bu(S,h),wr.push([S,h])}}),R(wr,function(S){he[S[0]]=S[1]}),he.convert=OI,he.placeholder=he,R(Wt(he),function(S){R(X.realToAlias[S]||[],function(h){he[h]=he[S]})}),he}gm.exports=ti});var ri=u((Bj,hm)=>{"use strict";var zC=yt(),JC=ce(),XC=zC(JC,"WeakMap");hm.exports=XC});var ai=u((Mj,bm)=>{"use strict";var Am=ri(),ZC=Am&&new Am;bm.exports=ZC});var ni=u((kj,Sm)=>{"use strict";var eO=Xr(),Im=ai(),tO=Im?function(e,t){return Im.set(e,t),e}:eO;Sm.exports=tO});var Ta=u((Gj,wm)=>{"use strict";var rO=ia(),aO=xe();function nO(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=rO(e.prototype),a=e.apply(r,t);return aO(a)?a:r}}wm.exports=nO});var Em=u((Fj,Tm)=>{"use strict";var oO=Ta(),sO=ce(),iO=1;function uO(e,t,r){var a=t&iO,n=oO(e);function o(){var s=this&&this!==sO&&this instanceof o?n:e;return s.apply(a?r:this,arguments)}return o}Tm.exports=uO});var oi=u((Wj,Rm)=>{"use strict";var cO=Math.max;function pO(e,t,r,a){for(var n=-1,o=e.length,s=r.length,i=-1,c=t.length,f=cO(o-s,0),m=Array(c+f),g=!a;++i<c;)m[i]=t[i];for(;++n<s;)(g||n<o)&&(m[r[n]]=e[n]);for(;f--;)m[i++]=e[n++];return m}Rm.exports=pO});var si=u((jj,vm)=>{"use strict";var lO=Math.max;function dO(e,t,r,a){for(var n=-1,o=e.length,s=-1,i=r.length,c=-1,f=t.length,m=lO(o-i,0),g=Array(m+f),y=!a;++n<m;)g[n]=e[n];for(var I=n;++c<f;)g[I+c]=t[c];for(;++s<i;)(y||n<o)&&(g[I+r[s]]=e[n++]);return g}vm.exports=dO});var xm=u((Qj,_m)=>{"use strict";function fO(e,t){for(var r=e.length,a=0;r--;)e[r]===t&&++a;return a}_m.exports=fO});var Dn=u(($j,Cm)=>{"use strict";function mO(){}Cm.exports=mO});var Bn=u((Kj,Om)=>{"use strict";var gO=ia(),yO=Dn(),hO=4294967295;function Nn(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=hO,this.__views__=[]}Nn.prototype=gO(yO.prototype);Nn.prototype.constructor=Nn;Om.exports=Nn});var ii=u((Vj,Pm)=>{"use strict";var Lm=ai(),AO=Wo(),bO=Lm?function(e){return Lm.get(e)}:AO;Pm.exports=bO});var qm=u((Yj,Um)=>{"use strict";var IO={};Um.exports=IO});var Bm=u((Hj,Nm)=>{"use strict";var Dm=qm(),SO=Object.prototype,wO=SO.hasOwnProperty;function TO(e){for(var t=e.name+"",r=Dm[t],a=wO.call(Dm,t)?r.length:0;a--;){var n=r[a],o=n.func;if(o==null||o==e)return n.name}return t}Nm.exports=TO});var ui=u((zj,Mm)=>{"use strict";var EO=ia(),RO=Dn();function Mn(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}Mn.prototype=EO(RO.prototype);Mn.prototype.constructor=Mn;Mm.exports=Mn});var Gm=u((Jj,km)=>{"use strict";var vO=Bn(),_O=ui(),xO=rr();function CO(e){if(e instanceof vO)return e.clone();var t=new _O(e.__wrapped__,e.__chain__);return t.__actions__=xO(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}km.exports=CO});var jm=u((Xj,Wm)=>{"use strict";var OO=Bn(),Fm=ui(),LO=Dn(),PO=se(),UO=be(),qO=Gm(),DO=Object.prototype,NO=DO.hasOwnProperty;function kn(e){if(UO(e)&&!PO(e)&&!(e instanceof OO)){if(e instanceof Fm)return e;if(NO.call(e,"__wrapped__"))return qO(e)}return new Fm(e)}kn.prototype=LO.prototype;kn.prototype.constructor=kn;Wm.exports=kn});var $m=u((Zj,Qm)=>{"use strict";var BO=Bn(),MO=ii(),kO=Bm(),GO=jm();function FO(e){var t=kO(e),r=GO[t];if(typeof r!="function"||!(t in BO.prototype))return!1;if(e===r)return!0;var a=MO(r);return!!a&&e===a[0]}Qm.exports=FO});var ci=u((eQ,Km)=>{"use strict";var WO=ni(),jO=No(),QO=jO(WO);Km.exports=QO});var Ym=u((tQ,Vm)=>{"use strict";var $O=/\{\n\/\* \[wrapped with (.+)\] \*/,KO=/,? & /;function VO(e){var t=e.match($O);return t?t[1].split(KO):[]}Vm.exports=VO});var zm=u((rQ,Hm)=>{"use strict";var YO=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function HO(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(YO,`{
1
+ "use strict";var qI=Object.create;var ka=Object.defineProperty;var DI=Object.getOwnPropertyDescriptor;var kI=Object.getOwnPropertyNames;var NI=Object.getPrototypeOf,BI=Object.prototype.hasOwnProperty;var u=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),w=(e,t)=>{for(var r in t)ka(e,r,{get:t[r],enumerable:!0})},Fu=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of kI(t))!BI.call(e,n)&&n!==r&&ka(e,n,{get:()=>t[n],enumerable:!(a=DI(t,n))||a.enumerable});return e};var P=(e,t,r)=>(r=e!=null?qI(NI(e)):{},Fu(t||!e||!e.__esModule?ka(r,"default",{value:e,enumerable:!0}):r,e)),MI=e=>Fu(ka({},"__esModule",{value:!0}),e);var Za=u((i0,vc)=>{"use strict";function kS(e,t){for(var r=-1,a=t.length,n=e.length;++r<a;)e[n+r]=t[r];return e}vc.exports=kS});var Oo=u((u0,_c)=>{"use strict";var NS=typeof global=="object"&&global&&global.Object===Object&&global;_c.exports=NS});var ce=u((c0,xc)=>{"use strict";var BS=Oo(),MS=typeof self=="object"&&self&&self.Object===Object&&self,GS=BS||MS||Function("return this")();xc.exports=GS});var xt=u((p0,Cc)=>{"use strict";var FS=ce(),WS=FS.Symbol;Cc.exports=WS});var Uc=u((l0,Pc)=>{"use strict";var Oc=xt(),Lc=Object.prototype,jS=Lc.hasOwnProperty,QS=Lc.toString,zr=Oc?Oc.toStringTag:void 0;function $S(e){var t=jS.call(e,zr),r=e[zr];try{e[zr]=void 0;var a=!0}catch{}var n=QS.call(e);return a&&(t?e[zr]=r:delete e[zr]),n}Pc.exports=$S});var Dc=u((d0,qc)=>{"use strict";var KS=Object.prototype,VS=KS.toString;function YS(e){return VS.call(e)}qc.exports=YS});var gt=u((f0,Bc)=>{"use strict";var kc=xt(),HS=Uc(),zS=Dc(),JS="[object Null]",XS="[object Undefined]",Nc=kc?kc.toStringTag:void 0;function ZS(e){return e==null?e===void 0?XS:JS:Nc&&Nc in Object(e)?HS(e):zS(e)}Bc.exports=ZS});var be=u((m0,Mc)=>{"use strict";function ew(e){return e!=null&&typeof e=="object"}Mc.exports=ew});var Fc=u((g0,Gc)=>{"use strict";var tw=gt(),rw=be(),aw="[object Arguments]";function nw(e){return rw(e)&&tw(e)==aw}Gc.exports=nw});var Jr=u((y0,Qc)=>{"use strict";var Wc=Fc(),ow=be(),jc=Object.prototype,sw=jc.hasOwnProperty,iw=jc.propertyIsEnumerable,uw=Wc(function(){return arguments}())?Wc:function(e){return ow(e)&&sw.call(e,"callee")&&!iw.call(e,"callee")};Qc.exports=uw});var se=u((h0,$c)=>{"use strict";var cw=Array.isArray;$c.exports=cw});var Hc=u((A0,Yc)=>{"use strict";var Kc=xt(),pw=Jr(),lw=se(),Vc=Kc?Kc.isConcatSpreadable:void 0;function dw(e){return lw(e)||pw(e)||!!(Vc&&e&&e[Vc])}Yc.exports=dw});var Lo=u((b0,Jc)=>{"use strict";var fw=Za(),mw=Hc();function zc(e,t,r,a,n){var o=-1,s=e.length;for(r||(r=mw),n||(n=[]);++o<s;){var i=e[o];t>0&&r(i)?t>1?zc(i,t-1,r,a,n):fw(n,i):a||(n[n.length]=i)}return n}Jc.exports=zc});var Xr=u((I0,Xc)=>{"use strict";function gw(e){return e}Xc.exports=gw});var en=u((S0,Zc)=>{"use strict";function yw(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)}Zc.exports=yw});var Po=u((w0,tp)=>{"use strict";var hw=en(),ep=Math.max;function Aw(e,t,r){return t=ep(t===void 0?e.length-1:t,0),function(){for(var a=arguments,n=-1,o=ep(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),hw(e,this,i)}}tp.exports=Aw});var ap=u((E0,rp)=>{"use strict";function bw(e){return function(){return e}}rp.exports=bw});var xe=u((T0,np)=>{"use strict";function Iw(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}np.exports=Iw});var Zr=u((R0,op)=>{"use strict";var Sw=gt(),ww=xe(),Ew="[object AsyncFunction]",Tw="[object Function]",Rw="[object GeneratorFunction]",vw="[object Proxy]";function _w(e){if(!ww(e))return!1;var t=Sw(e);return t==Tw||t==Rw||t==Ew||t==vw}op.exports=_w});var ip=u((v0,sp)=>{"use strict";var xw=ce(),Cw=xw["__core-js_shared__"];sp.exports=Cw});var pp=u((_0,cp)=>{"use strict";var Uo=ip(),up=function(){var e=/[^.]+$/.exec(Uo&&Uo.keys&&Uo.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function Ow(e){return!!up&&up in e}cp.exports=Ow});var qo=u((x0,lp)=>{"use strict";var Lw=Function.prototype,Pw=Lw.toString;function Uw(e){if(e!=null){try{return Pw.call(e)}catch{}try{return e+""}catch{}}return""}lp.exports=Uw});var fp=u((C0,dp)=>{"use strict";var qw=Zr(),Dw=pp(),kw=xe(),Nw=qo(),Bw=/[\\^$.*+?()[\]{}|]/g,Mw=/^\[object .+?Constructor\]$/,Gw=Function.prototype,Fw=Object.prototype,Ww=Gw.toString,jw=Fw.hasOwnProperty,Qw=RegExp("^"+Ww.call(jw).replace(Bw,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function $w(e){if(!kw(e)||Dw(e))return!1;var t=qw(e)?Qw:Mw;return t.test(Nw(e))}dp.exports=$w});var gp=u((O0,mp)=>{"use strict";function Kw(e,t){return e?.[t]}mp.exports=Kw});var yt=u((L0,yp)=>{"use strict";var Vw=fp(),Yw=gp();function Hw(e,t){var r=Yw(e,t);return Vw(r)?r:void 0}yp.exports=Hw});var Do=u((P0,hp)=>{"use strict";var zw=yt(),Jw=function(){try{var e=zw(Object,"defineProperty");return e({},"",{}),e}catch{}}();hp.exports=Jw});var Ip=u((U0,bp)=>{"use strict";var Xw=ap(),Ap=Do(),Zw=Xr(),eE=Ap?function(e,t){return Ap(e,"toString",{configurable:!0,enumerable:!1,value:Xw(t),writable:!0})}:Zw;bp.exports=eE});var ko=u((q0,Sp)=>{"use strict";var tE=800,rE=16,aE=Date.now;function nE(e){var t=0,r=0;return function(){var a=aE(),n=rE-(a-r);if(r=a,n>0){if(++t>=tE)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}Sp.exports=nE});var tn=u((D0,wp)=>{"use strict";var oE=Ip(),sE=ko(),iE=sE(oE);wp.exports=iE});var No=u((k0,Ep)=>{"use strict";var uE=Xr(),cE=Po(),pE=tn();function lE(e,t){return pE(cE(e,t,uE),e+"")}Ep.exports=lE});var ea=u((N0,Tp)=>{"use strict";var dE=yt(),fE=dE(Object,"create");Tp.exports=fE});var _p=u((B0,vp)=>{"use strict";var Rp=ea();function mE(){this.__data__=Rp?Rp(null):{},this.size=0}vp.exports=mE});var Cp=u((M0,xp)=>{"use strict";function gE(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}xp.exports=gE});var Lp=u((G0,Op)=>{"use strict";var yE=ea(),hE="__lodash_hash_undefined__",AE=Object.prototype,bE=AE.hasOwnProperty;function IE(e){var t=this.__data__;if(yE){var r=t[e];return r===hE?void 0:r}return bE.call(t,e)?t[e]:void 0}Op.exports=IE});var Up=u((F0,Pp)=>{"use strict";var SE=ea(),wE=Object.prototype,EE=wE.hasOwnProperty;function TE(e){var t=this.__data__;return SE?t[e]!==void 0:EE.call(t,e)}Pp.exports=TE});var Dp=u((W0,qp)=>{"use strict";var RE=ea(),vE="__lodash_hash_undefined__";function _E(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=RE&&t===void 0?vE:t,this}qp.exports=_E});var Np=u((j0,kp)=>{"use strict";var xE=_p(),CE=Cp(),OE=Lp(),LE=Up(),PE=Dp();function Ht(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])}}Ht.prototype.clear=xE;Ht.prototype.delete=CE;Ht.prototype.get=OE;Ht.prototype.has=LE;Ht.prototype.set=PE;kp.exports=Ht});var Mp=u((Q0,Bp)=>{"use strict";function UE(){this.__data__=[],this.size=0}Bp.exports=UE});var zt=u(($0,Gp)=>{"use strict";function qE(e,t){return e===t||e!==e&&t!==t}Gp.exports=qE});var ta=u((K0,Fp)=>{"use strict";var DE=zt();function kE(e,t){for(var r=e.length;r--;)if(DE(e[r][0],t))return r;return-1}Fp.exports=kE});var jp=u((V0,Wp)=>{"use strict";var NE=ta(),BE=Array.prototype,ME=BE.splice;function GE(e){var t=this.__data__,r=NE(t,e);if(r<0)return!1;var a=t.length-1;return r==a?t.pop():ME.call(t,r,1),--this.size,!0}Wp.exports=GE});var $p=u((Y0,Qp)=>{"use strict";var FE=ta();function WE(e){var t=this.__data__,r=FE(t,e);return r<0?void 0:t[r][1]}Qp.exports=WE});var Vp=u((H0,Kp)=>{"use strict";var jE=ta();function QE(e){return jE(this.__data__,e)>-1}Kp.exports=QE});var Hp=u((z0,Yp)=>{"use strict";var $E=ta();function KE(e,t){var r=this.__data__,a=$E(r,e);return a<0?(++this.size,r.push([e,t])):r[a][1]=t,this}Yp.exports=KE});var ra=u((J0,zp)=>{"use strict";var VE=Mp(),YE=jp(),HE=$p(),zE=Vp(),JE=Hp();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=VE;Jt.prototype.delete=YE;Jt.prototype.get=HE;Jt.prototype.has=zE;Jt.prototype.set=JE;zp.exports=Jt});var rn=u((X0,Jp)=>{"use strict";var XE=yt(),ZE=ce(),eT=XE(ZE,"Map");Jp.exports=eT});var el=u((Z0,Zp)=>{"use strict";var Xp=Np(),tT=ra(),rT=rn();function aT(){this.size=0,this.__data__={hash:new Xp,map:new(rT||tT),string:new Xp}}Zp.exports=aT});var rl=u((eF,tl)=>{"use strict";function nT(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}tl.exports=nT});var aa=u((tF,al)=>{"use strict";var oT=rl();function sT(e,t){var r=e.__data__;return oT(t)?r[typeof t=="string"?"string":"hash"]:r.map}al.exports=sT});var ol=u((rF,nl)=>{"use strict";var iT=aa();function uT(e){var t=iT(this,e).delete(e);return this.size-=t?1:0,t}nl.exports=uT});var il=u((aF,sl)=>{"use strict";var cT=aa();function pT(e){return cT(this,e).get(e)}sl.exports=pT});var cl=u((nF,ul)=>{"use strict";var lT=aa();function dT(e){return lT(this,e).has(e)}ul.exports=dT});var ll=u((oF,pl)=>{"use strict";var fT=aa();function mT(e,t){var r=fT(this,e),a=r.size;return r.set(e,t),this.size+=r.size==a?0:1,this}pl.exports=mT});var an=u((sF,dl)=>{"use strict";var gT=el(),yT=ol(),hT=il(),AT=cl(),bT=ll();function Xt(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])}}Xt.prototype.clear=gT;Xt.prototype.delete=yT;Xt.prototype.get=hT;Xt.prototype.has=AT;Xt.prototype.set=bT;dl.exports=Xt});var ml=u((iF,fl)=>{"use strict";var IT="__lodash_hash_undefined__";function ST(e){return this.__data__.set(e,IT),this}fl.exports=ST});var yl=u((uF,gl)=>{"use strict";function wT(e){return this.__data__.has(e)}gl.exports=wT});var Bo=u((cF,hl)=>{"use strict";var ET=an(),TT=ml(),RT=yl();function nn(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new ET;++t<r;)this.add(e[t])}nn.prototype.add=nn.prototype.push=TT;nn.prototype.has=RT;hl.exports=nn});var bl=u((pF,Al)=>{"use strict";function vT(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}Al.exports=vT});var Sl=u((lF,Il)=>{"use strict";function _T(e){return e!==e}Il.exports=_T});var El=u((dF,wl)=>{"use strict";function xT(e,t,r){for(var a=r-1,n=e.length;++a<n;)if(e[a]===t)return a;return-1}wl.exports=xT});var Rl=u((fF,Tl)=>{"use strict";var CT=bl(),OT=Sl(),LT=El();function PT(e,t,r){return t===t?LT(e,t,r):CT(e,OT,r)}Tl.exports=PT});var Mo=u((mF,vl)=>{"use strict";var UT=Rl();function qT(e,t){var r=e==null?0:e.length;return!!r&&UT(e,t,0)>-1}vl.exports=qT});var xl=u((gF,_l)=>{"use strict";function DT(e,t,r){for(var a=-1,n=e==null?0:e.length;++a<n;)if(r(t,e[a]))return!0;return!1}_l.exports=DT});var Go=u((yF,Cl)=>{"use strict";function kT(e,t){return e.has(t)}Cl.exports=kT});var Fo=u((hF,Ol)=>{"use strict";var NT=yt(),BT=ce(),MT=NT(BT,"Set");Ol.exports=MT});var Wo=u((AF,Ll)=>{"use strict";function GT(){}Ll.exports=GT});var on=u((bF,Pl)=>{"use strict";function FT(e){var t=-1,r=Array(e.size);return e.forEach(function(a){r[++t]=a}),r}Pl.exports=FT});var ql=u((IF,Ul)=>{"use strict";var jo=Fo(),WT=Wo(),jT=on(),QT=1/0,$T=jo&&1/jT(new jo([,-0]))[1]==QT?function(e){return new jo(e)}:WT;Ul.exports=$T});var kl=u((SF,Dl)=>{"use strict";var KT=Bo(),VT=Mo(),YT=xl(),HT=Go(),zT=ql(),JT=on(),XT=200;function ZT(e,t,r){var a=-1,n=VT,o=e.length,s=!0,i=[],c=i;if(r)s=!1,n=YT;else if(o>=XT){var f=t?null:zT(e);if(f)return JT(f);s=!1,n=HT,c=new KT}else c=t?[]:i;e:for(;++a<o;){var m=e[a],g=t?t(m):m;if(m=r||m!==0?m:0,s&&g===g){for(var y=c.length;y--;)if(c[y]===g)continue e;t&&c.push(g),i.push(m)}else n(c,g,r)||(c!==i&&c.push(g),i.push(m))}return i}Dl.exports=ZT});var sn=u((wF,Nl)=>{"use strict";var eR=9007199254740991;function tR(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=eR}Nl.exports=tR});var Zt=u((EF,Bl)=>{"use strict";var rR=Zr(),aR=sn();function nR(e){return e!=null&&aR(e.length)&&!rR(e)}Bl.exports=nR});var Qo=u((TF,Ml)=>{"use strict";var oR=Zt(),sR=be();function iR(e){return sR(e)&&oR(e)}Ml.exports=iR});var Fl=u((RF,Gl)=>{"use strict";var uR=Lo(),cR=No(),pR=kl(),lR=Qo(),dR=cR(function(e){return pR(uR(e,1,lR,!0))});Gl.exports=dR});var jl=u((vF,Wl)=>{"use strict";var fR=ra();function mR(){this.__data__=new fR,this.size=0}Wl.exports=mR});var $l=u((_F,Ql)=>{"use strict";function gR(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}Ql.exports=gR});var Vl=u((xF,Kl)=>{"use strict";function yR(e){return this.__data__.get(e)}Kl.exports=yR});var Hl=u((CF,Yl)=>{"use strict";function hR(e){return this.__data__.has(e)}Yl.exports=hR});var Jl=u((OF,zl)=>{"use strict";var AR=ra(),bR=rn(),IR=an(),SR=200;function wR(e,t){var r=this.__data__;if(r instanceof AR){var a=r.__data__;if(!bR||a.length<SR-1)return a.push([e,t]),this.size=++r.size,this;r=this.__data__=new IR(a)}return r.set(e,t),this.size=r.size,this}zl.exports=wR});var na=u((LF,Xl)=>{"use strict";var ER=ra(),TR=jl(),RR=$l(),vR=Vl(),_R=Hl(),xR=Jl();function er(e){var t=this.__data__=new ER(e);this.size=t.size}er.prototype.clear=TR;er.prototype.delete=RR;er.prototype.get=vR;er.prototype.has=_R;er.prototype.set=xR;Xl.exports=er});var oa=u((PF,ed)=>{"use strict";var Zl=Do();function CR(e,t,r){t=="__proto__"&&Zl?Zl(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}ed.exports=CR});var $o=u((UF,td)=>{"use strict";var OR=oa(),LR=zt();function PR(e,t,r){(r!==void 0&&!LR(e[t],r)||r===void 0&&!(t in e))&&OR(e,t,r)}td.exports=PR});var ad=u((qF,rd)=>{"use strict";function UR(e){return function(t,r,a){for(var n=-1,o=Object(t),s=a(t),i=s.length;i--;){var c=s[e?i:++n];if(r(o[c],c,o)===!1)break}return t}}rd.exports=UR});var Ko=u((DF,nd)=>{"use strict";var qR=ad(),DR=qR();nd.exports=DR});var Vo=u((sa,tr)=>{"use strict";var kR=ce(),ud=typeof sa=="object"&&sa&&!sa.nodeType&&sa,od=ud&&typeof tr=="object"&&tr&&!tr.nodeType&&tr,NR=od&&od.exports===ud,sd=NR?kR.Buffer:void 0,id=sd?sd.allocUnsafe:void 0;function BR(e,t){if(t)return e.slice();var r=e.length,a=id?id(r):new e.constructor(r);return e.copy(a),a}tr.exports=BR});var Yo=u((kF,cd)=>{"use strict";var MR=ce(),GR=MR.Uint8Array;cd.exports=GR});var un=u((NF,ld)=>{"use strict";var pd=Yo();function FR(e){var t=new e.constructor(e.byteLength);return new pd(t).set(new pd(e)),t}ld.exports=FR});var Ho=u((BF,dd)=>{"use strict";var WR=un();function jR(e,t){var r=t?WR(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}dd.exports=jR});var rr=u((MF,fd)=>{"use strict";function QR(e,t){var r=-1,a=e.length;for(t||(t=Array(a));++r<a;)t[r]=e[r];return t}fd.exports=QR});var ia=u((GF,gd)=>{"use strict";var $R=xe(),md=Object.create,KR=function(){function e(){}return function(t){if(!$R(t))return{};if(md)return md(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();gd.exports=KR});var zo=u((FF,yd)=>{"use strict";function VR(e,t){return function(r){return e(t(r))}}yd.exports=VR});var cn=u((WF,hd)=>{"use strict";var YR=zo(),HR=YR(Object.getPrototypeOf,Object);hd.exports=HR});var pn=u((jF,Ad)=>{"use strict";var zR=Object.prototype;function JR(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||zR;return e===r}Ad.exports=JR});var Jo=u((QF,bd)=>{"use strict";var XR=ia(),ZR=cn(),ev=pn();function tv(e){return typeof e.constructor=="function"&&!ev(e)?XR(ZR(e)):{}}bd.exports=tv});var Sd=u(($F,Id)=>{"use strict";function rv(){return!1}Id.exports=rv});var ca=u((ua,ar)=>{"use strict";var av=ce(),nv=Sd(),Td=typeof ua=="object"&&ua&&!ua.nodeType&&ua,wd=Td&&typeof ar=="object"&&ar&&!ar.nodeType&&ar,ov=wd&&wd.exports===Td,Ed=ov?av.Buffer:void 0,sv=Ed?Ed.isBuffer:void 0,iv=sv||nv;ar.exports=iv});var Xo=u((KF,vd)=>{"use strict";var uv=gt(),cv=cn(),pv=be(),lv="[object Object]",dv=Function.prototype,fv=Object.prototype,Rd=dv.toString,mv=fv.hasOwnProperty,gv=Rd.call(Object);function yv(e){if(!pv(e)||uv(e)!=lv)return!1;var t=cv(e);if(t===null)return!0;var r=mv.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Rd.call(r)==gv}vd.exports=yv});var xd=u((VF,_d)=>{"use strict";var hv=gt(),Av=sn(),bv=be(),Iv="[object Arguments]",Sv="[object Array]",wv="[object Boolean]",Ev="[object Date]",Tv="[object Error]",Rv="[object Function]",vv="[object Map]",_v="[object Number]",xv="[object Object]",Cv="[object RegExp]",Ov="[object Set]",Lv="[object String]",Pv="[object WeakMap]",Uv="[object ArrayBuffer]",qv="[object DataView]",Dv="[object Float32Array]",kv="[object Float64Array]",Nv="[object Int8Array]",Bv="[object Int16Array]",Mv="[object Int32Array]",Gv="[object Uint8Array]",Fv="[object Uint8ClampedArray]",Wv="[object Uint16Array]",jv="[object Uint32Array]",N={};N[Dv]=N[kv]=N[Nv]=N[Bv]=N[Mv]=N[Gv]=N[Fv]=N[Wv]=N[jv]=!0;N[Iv]=N[Sv]=N[Uv]=N[wv]=N[qv]=N[Ev]=N[Tv]=N[Rv]=N[vv]=N[_v]=N[xv]=N[Cv]=N[Ov]=N[Lv]=N[Pv]=!1;function Qv(e){return bv(e)&&Av(e.length)&&!!N[hv(e)]}_d.exports=Qv});var ln=u((YF,Cd)=>{"use strict";function $v(e){return function(t){return e(t)}}Cd.exports=$v});var dn=u((pa,nr)=>{"use strict";var Kv=Oo(),Od=typeof pa=="object"&&pa&&!pa.nodeType&&pa,la=Od&&typeof nr=="object"&&nr&&!nr.nodeType&&nr,Vv=la&&la.exports===Od,Zo=Vv&&Kv.process,Yv=function(){try{var e=la&&la.require&&la.require("util").types;return e||Zo&&Zo.binding&&Zo.binding("util")}catch{}}();nr.exports=Yv});var fn=u((HF,Ud)=>{"use strict";var Hv=xd(),zv=ln(),Ld=dn(),Pd=Ld&&Ld.isTypedArray,Jv=Pd?zv(Pd):Hv;Ud.exports=Jv});var es=u((zF,qd)=>{"use strict";function Xv(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}qd.exports=Xv});var ts=u((JF,Dd)=>{"use strict";var Zv=oa(),e_=zt(),t_=Object.prototype,r_=t_.hasOwnProperty;function a_(e,t,r){var a=e[t];(!(r_.call(e,t)&&e_(a,r))||r===void 0&&!(t in e))&&Zv(e,t,r)}Dd.exports=a_});var or=u((XF,kd)=>{"use strict";var n_=ts(),o_=oa();function s_(e,t,r,a){var n=!r;r||(r={});for(var o=-1,s=t.length;++o<s;){var i=t[o],c=a?a(r[i],e[i],i,r,e):void 0;c===void 0&&(c=e[i]),n?o_(r,i,c):n_(r,i,c)}return r}kd.exports=s_});var Bd=u((ZF,Nd)=>{"use strict";function i_(e,t){for(var r=-1,a=Array(e);++r<e;)a[r]=t(r);return a}Nd.exports=i_});var da=u((eW,Md)=>{"use strict";var u_=9007199254740991,c_=/^(?:0|[1-9]\d*)$/;function p_(e,t){var r=typeof e;return t=t??u_,!!t&&(r=="number"||r!="symbol"&&c_.test(e))&&e>-1&&e%1==0&&e<t}Md.exports=p_});var rs=u((tW,Gd)=>{"use strict";var l_=Bd(),d_=Jr(),f_=se(),m_=ca(),g_=da(),y_=fn(),h_=Object.prototype,A_=h_.hasOwnProperty;function b_(e,t){var r=f_(e),a=!r&&d_(e),n=!r&&!a&&m_(e),o=!r&&!a&&!n&&y_(e),s=r||a||n||o,i=s?l_(e.length,String):[],c=i.length;for(var f in e)(t||A_.call(e,f))&&!(s&&(f=="length"||n&&(f=="offset"||f=="parent")||o&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||g_(f,c)))&&i.push(f);return i}Gd.exports=b_});var Wd=u((rW,Fd)=>{"use strict";function I_(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}Fd.exports=I_});var Qd=u((aW,jd)=>{"use strict";var S_=xe(),w_=pn(),E_=Wd(),T_=Object.prototype,R_=T_.hasOwnProperty;function v_(e){if(!S_(e))return E_(e);var t=w_(e),r=[];for(var a in e)a=="constructor"&&(t||!R_.call(e,a))||r.push(a);return r}jd.exports=v_});var sr=u((nW,$d)=>{"use strict";var __=rs(),x_=Qd(),C_=Zt();function O_(e){return C_(e)?__(e,!0):x_(e)}$d.exports=O_});var Vd=u((oW,Kd)=>{"use strict";var L_=or(),P_=sr();function U_(e){return L_(e,P_(e))}Kd.exports=U_});var Zd=u((sW,Xd)=>{"use strict";var Yd=$o(),q_=Vo(),D_=Ho(),k_=rr(),N_=Jo(),Hd=Jr(),zd=se(),B_=Qo(),M_=ca(),G_=Zr(),F_=xe(),W_=Xo(),j_=fn(),Jd=es(),Q_=Vd();function $_(e,t,r,a,n,o,s){var i=Jd(e,r),c=Jd(t,r),f=s.get(c);if(f){Yd(e,r,f);return}var m=o?o(i,c,r+"",e,t,s):void 0,g=m===void 0;if(g){var y=zd(c),I=!y&&M_(c),C=!y&&!I&&j_(c);m=c,y||I||C?zd(i)?m=i:B_(i)?m=k_(i):I?(g=!1,m=q_(c,!0)):C?(g=!1,m=D_(c,!0)):m=[]:W_(c)||Hd(c)?(m=i,Hd(i)?m=Q_(i):(!F_(i)||G_(i))&&(m=N_(c))):g=!1}g&&(s.set(c,m),n(m,c,a,o,s),s.delete(c)),Yd(e,r,m)}Xd.exports=$_});var rf=u((iW,tf)=>{"use strict";var K_=na(),V_=$o(),Y_=Ko(),H_=Zd(),z_=xe(),J_=sr(),X_=es();function ef(e,t,r,a,n){e!==t&&Y_(t,function(o,s){if(n||(n=new K_),z_(o))H_(e,t,s,r,ef,a,n);else{var i=a?a(X_(e,s),o,s+"",e,t,n):void 0;i===void 0&&(i=o),V_(e,s,i)}},J_)}tf.exports=ef});var nf=u((uW,af)=>{"use strict";var Z_=zt(),ex=Zt(),tx=da(),rx=xe();function ax(e,t,r){if(!rx(r))return!1;var a=typeof t;return(a=="number"?ex(r)&&tx(t,r.length):a=="string"&&t in r)?Z_(r[t],e):!1}af.exports=ax});var sf=u((cW,of)=>{"use strict";var nx=No(),ox=nf();function sx(e){return nx(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&&ox(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})}of.exports=sx});var as=u((pW,uf)=>{"use strict";var ix=rf(),ux=sf(),cx=ux(function(e,t,r){ix(e,t,r)});uf.exports=cx});var lm=u(ge=>{"use strict";ge.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"};ge.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"]};ge.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};ge.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};ge.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};ge.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]};ge.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}};ge.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}};ge.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=ge.aliasToReal,r={};for(var a in t){var n=t[a];e.call(r,n)?r[n].push(a):r[n]=[a]}return r}();ge.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"};ge.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};ge.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 Xs=u((Dj,dm)=>{"use strict";dm.exports={}});var ym=u((kj,gm)=>{"use strict";var X=lm(),KC=Xs(),fm=Array.prototype.push;function VC(e,t){return t==2?function(r,a){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}function Zs(e,t){return t==2?function(r,a){return e(r,a)}:function(r){return e(r)}}function mm(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}function YC(e){return function(t){return e({},t)}}function HC(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&&fm.apply(s,o),t!=a&&fm.apply(s,n.slice(t+1)),e.apply(this,s)}}function ei(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 ti(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:KC,c="curry"in a&&a.curry,f="fixed"in a&&a.fixed,m="rearg"in a&&a.rearg,g=n?r.runInContext():void 0,y=n?r:{ary:e.ary,assign:e.assign,clone:e.clone,curry:e.curry,forEach:e.forEach,isArray:e.isArray,isError:e.isError,isFunction:e.isFunction,isWeakMap:e.isWeakMap,iteratee:e.iteratee,keys:e.keys,rearg:e.rearg,toInteger:e.toInteger,toPath:e.toPath},I=y.ary,C=y.assign,_=y.clone,v=y.curry,R=y.forEach,U=y.isArray,qe=y.isError,Te=y.isFunction,pt=y.isWeakMap,Wt=y.keys,Ir=y.rearg,Sr=y.toInteger,RI=y.toPath,qu=Wt(X.aryMethod),vI={castArray:function(S){return function(){var h=arguments[0];return U(h)?S(mm(h)):S.apply(void 0,arguments)}},iteratee:function(S){return function(){var h=arguments[0],b=arguments[1],T=S(h,b),O=T.length;return s.cap&&typeof b=="number"?(b=b>2?b-2:1,O&&O<=b?T:Zs(T,b)):T}},mixin:function(S){return function(h){var b=this;if(!Te(b))return S(b,Object(h));var T=[];return R(Wt(h),function(O){Te(h[O])&&T.push([O,b.prototype[O]])}),S(b,Object(h)),R(T,function(O){var ie=O[1];Te(ie)?b.prototype[O[0]]=ie:delete b.prototype[O[0]]}),b}},nthArg:function(S){return function(h){var b=h<0?1:Sr(h)+1;return v(S(h),b)}},rearg:function(S){return function(h,b){var T=b?b.length:0;return v(S(h,b),T)}},runInContext:function(S){return function(h){return ti(e,S(h),a)}}};function _I(S,h){if(s.cap){var b=X.iterateeRearg[S];if(b)return PI(h,b);var T=!n&&X.iterateeAry[S];if(T)return LI(h,T)}return h}function xI(S,h,b){return c||s.curry&&b>1?v(h,b):h}function Du(S,h,b){if(s.fixed&&(f||!X.skipFixed[S])){var T=X.methodSpread[S],O=T&&T.start;return O===void 0?I(h,b):HC(h,O)}return h}function ku(S,h,b){return s.rearg&&b>1&&(m||!X.skipRearg[S])?Ir(h,X.methodRearg[S]||X.aryRearg[b]):h}function CI(S,h){h=RI(h);for(var b=-1,T=h.length,O=T-1,ie=_(Object(S)),We=ie;We!=null&&++b<T;){var Re=h[b],je=We[Re];je!=null&&!(Te(je)||qe(je)||pt(je))&&(We[Re]=_(b==O?je:Object(je))),We=We[Re]}return ie}function OI(S){return he.runInContext.convert(S)(void 0)}function Nu(S,h){var b=X.aliasToReal[S]||S,T=X.remap[b]||b,O=a;return function(ie){var We=n?g:y,Re=n?g[T]:h,je=C(C({},O),ie);return ti(We,b,Re,je)}}function LI(S,h){return Bu(S,function(b){return typeof b=="function"?Zs(b,h):b})}function PI(S,h){return Bu(S,function(b){var T=h.length;return VC(Ir(Zs(b,T),h),T)})}function Bu(S,h){return function(){var b=arguments.length;if(!b)return S();for(var T=Array(b);b--;)T[b]=arguments[b];var O=s.rearg?0:b-1;return T[O]=h(T[O]),S.apply(void 0,T)}}function Mu(S,h,b){var T,O=X.aliasToReal[S]||S,ie=h,We=vI[O];return We?ie=We(h):s.immutable&&(X.mutate.array[O]?ie=ei(h,mm):X.mutate.object[O]?ie=ei(h,YC(h)):X.mutate.set[O]&&(ie=ei(h,CI))),R(qu,function(Re){return R(X.aryMethod[Re],function(je){if(O==je){var Gu=X.methodSpread[O],UI=Gu&&Gu.afterRearg;return T=UI?Du(O,ku(O,ie,Re),Re):ku(O,Du(O,ie,Re),Re),T=_I(O,T),T=xI(O,T,Re),!1}}),!T}),T||(T=ie),T==h&&(T=c?v(T,1):function(){return h.apply(this,arguments)}),T.convert=Nu(O,h),T.placeholder=h.placeholder=b,T}if(!o)return Mu(t,r,i);var he=r,wr=[];return R(qu,function(S){R(X.aryMethod[S],function(h){var b=he[X.remap[h]||h];b&&wr.push([h,Mu(h,b,he)])})}),R(Wt(he),function(S){var h=he[S];if(typeof h=="function"){for(var b=wr.length;b--;)if(wr[b][0]==S)return;h.convert=Nu(S,h),wr.push([S,h])}}),R(wr,function(S){he[S[0]]=S[1]}),he.convert=OI,he.placeholder=he,R(Wt(he),function(S){R(X.realToAlias[S]||[],function(h){he[h]=he[S]})}),he}gm.exports=ti});var ri=u((Nj,hm)=>{"use strict";var zC=yt(),JC=ce(),XC=zC(JC,"WeakMap");hm.exports=XC});var ai=u((Bj,bm)=>{"use strict";var Am=ri(),ZC=Am&&new Am;bm.exports=ZC});var ni=u((Mj,Sm)=>{"use strict";var eO=Xr(),Im=ai(),tO=Im?function(e,t){return Im.set(e,t),e}:eO;Sm.exports=tO});var Ea=u((Gj,wm)=>{"use strict";var rO=ia(),aO=xe();function nO(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=rO(e.prototype),a=e.apply(r,t);return aO(a)?a:r}}wm.exports=nO});var Tm=u((Fj,Em)=>{"use strict";var oO=Ea(),sO=ce(),iO=1;function uO(e,t,r){var a=t&iO,n=oO(e);function o(){var s=this&&this!==sO&&this instanceof o?n:e;return s.apply(a?r:this,arguments)}return o}Em.exports=uO});var oi=u((Wj,Rm)=>{"use strict";var cO=Math.max;function pO(e,t,r,a){for(var n=-1,o=e.length,s=r.length,i=-1,c=t.length,f=cO(o-s,0),m=Array(c+f),g=!a;++i<c;)m[i]=t[i];for(;++n<s;)(g||n<o)&&(m[r[n]]=e[n]);for(;f--;)m[i++]=e[n++];return m}Rm.exports=pO});var si=u((jj,vm)=>{"use strict";var lO=Math.max;function dO(e,t,r,a){for(var n=-1,o=e.length,s=-1,i=r.length,c=-1,f=t.length,m=lO(o-i,0),g=Array(m+f),y=!a;++n<m;)g[n]=e[n];for(var I=n;++c<f;)g[I+c]=t[c];for(;++s<i;)(y||n<o)&&(g[I+r[s]]=e[n++]);return g}vm.exports=dO});var xm=u((Qj,_m)=>{"use strict";function fO(e,t){for(var r=e.length,a=0;r--;)e[r]===t&&++a;return a}_m.exports=fO});var Dn=u(($j,Cm)=>{"use strict";function mO(){}Cm.exports=mO});var Nn=u((Kj,Om)=>{"use strict";var gO=ia(),yO=Dn(),hO=4294967295;function kn(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=hO,this.__views__=[]}kn.prototype=gO(yO.prototype);kn.prototype.constructor=kn;Om.exports=kn});var ii=u((Vj,Pm)=>{"use strict";var Lm=ai(),AO=Wo(),bO=Lm?function(e){return Lm.get(e)}:AO;Pm.exports=bO});var qm=u((Yj,Um)=>{"use strict";var IO={};Um.exports=IO});var Nm=u((Hj,km)=>{"use strict";var Dm=qm(),SO=Object.prototype,wO=SO.hasOwnProperty;function EO(e){for(var t=e.name+"",r=Dm[t],a=wO.call(Dm,t)?r.length:0;a--;){var n=r[a],o=n.func;if(o==null||o==e)return n.name}return t}km.exports=EO});var ui=u((zj,Bm)=>{"use strict";var TO=ia(),RO=Dn();function Bn(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}Bn.prototype=TO(RO.prototype);Bn.prototype.constructor=Bn;Bm.exports=Bn});var Gm=u((Jj,Mm)=>{"use strict";var vO=Nn(),_O=ui(),xO=rr();function CO(e){if(e instanceof vO)return e.clone();var t=new _O(e.__wrapped__,e.__chain__);return t.__actions__=xO(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}Mm.exports=CO});var jm=u((Xj,Wm)=>{"use strict";var OO=Nn(),Fm=ui(),LO=Dn(),PO=se(),UO=be(),qO=Gm(),DO=Object.prototype,kO=DO.hasOwnProperty;function Mn(e){if(UO(e)&&!PO(e)&&!(e instanceof OO)){if(e instanceof Fm)return e;if(kO.call(e,"__wrapped__"))return qO(e)}return new Fm(e)}Mn.prototype=LO.prototype;Mn.prototype.constructor=Mn;Wm.exports=Mn});var $m=u((Zj,Qm)=>{"use strict";var NO=Nn(),BO=ii(),MO=Nm(),GO=jm();function FO(e){var t=MO(e),r=GO[t];if(typeof r!="function"||!(t in NO.prototype))return!1;if(e===r)return!0;var a=BO(r);return!!a&&e===a[0]}Qm.exports=FO});var ci=u((eQ,Km)=>{"use strict";var WO=ni(),jO=ko(),QO=jO(WO);Km.exports=QO});var Ym=u((tQ,Vm)=>{"use strict";var $O=/\{\n\/\* \[wrapped with (.+)\] \*/,KO=/,? & /;function VO(e){var t=e.match($O);return t?t[1].split(KO):[]}Vm.exports=VO});var zm=u((rQ,Hm)=>{"use strict";var YO=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function HO(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(YO,`{
2
2
  /* [wrapped with `+t+`] */
3
- `)}Hm.exports=HO});var Gn=u((aQ,Jm)=>{"use strict";function zO(e,t){for(var r=-1,a=e==null?0:e.length;++r<a&&t(e[r],r,e)!==!1;);return e}Jm.exports=zO});var Zm=u((nQ,Xm)=>{"use strict";var JO=Gn(),XO=ko(),ZO=1,eL=2,tL=8,rL=16,aL=32,nL=64,oL=128,sL=256,iL=512,uL=[["ary",oL],["bind",ZO],["bindKey",eL],["curry",tL],["curryRight",rL],["flip",iL],["partial",aL],["partialRight",nL],["rearg",sL]];function cL(e,t){return JO(uL,function(r){var a="_."+r[0];t&r[1]&&!XO(e,a)&&e.push(a)}),e.sort()}Xm.exports=cL});var pi=u((oQ,eg)=>{"use strict";var pL=Ym(),lL=zm(),dL=tn(),fL=Zm();function mL(e,t,r){var a=t+"";return dL(e,lL(a,fL(pL(a),r)))}eg.exports=mL});var li=u((sQ,ag)=>{"use strict";var gL=$m(),yL=ci(),hL=pi(),AL=1,bL=2,IL=4,SL=8,tg=32,rg=64;function wL(e,t,r,a,n,o,s,i,c,f){var m=t&SL,g=m?s:void 0,y=m?void 0:s,I=m?o:void 0,C=m?void 0:o;t|=m?tg:rg,t&=~(m?rg:tg),t&IL||(t&=~(AL|bL));var _=[e,t,n,I,g,C,y,i,c,f],v=r.apply(void 0,_);return gL(e)&&yL(v,_),v.placeholder=a,hL(v,e,t)}ag.exports=wL});var di=u((iQ,ng)=>{"use strict";function TL(e){var t=e;return t.placeholder}ng.exports=TL});var sg=u((uQ,og)=>{"use strict";var EL=rr(),RL=da(),vL=Math.min;function _L(e,t){for(var r=e.length,a=vL(t.length,r),n=EL(e);a--;){var o=t[a];e[a]=RL(o,r)?n[o]:void 0}return e}og.exports=_L});var Fn=u((cQ,ug)=>{"use strict";var ig="__lodash_placeholder__";function xL(e,t){for(var r=-1,a=e.length,n=0,o=[];++r<a;){var s=e[r];(s===t||s===ig)&&(e[r]=ig,o[n++]=r)}return o}ug.exports=xL});var fi=u((pQ,lg)=>{"use strict";var CL=oi(),OL=si(),LL=xm(),cg=Ta(),PL=li(),UL=di(),qL=sg(),DL=Fn(),NL=ce(),BL=1,ML=2,kL=8,GL=16,FL=128,WL=512;function pg(e,t,r,a,n,o,s,i,c,f){var m=t&FL,g=t&BL,y=t&ML,I=t&(kL|GL),C=t&WL,_=y?void 0:cg(e);function v(){for(var R=arguments.length,U=Array(R),qe=R;qe--;)U[qe]=arguments[qe];if(I)var Ee=UL(v),pt=LL(U,Ee);if(a&&(U=CL(U,a,n,I)),o&&(U=OL(U,o,s,I)),R-=pt,I&&R<f){var Wt=DL(U,Ee);return PL(e,t,pg,v.placeholder,r,U,Wt,i,c,f-R)}var Ir=g?r:this,Sr=y?Ir[e]:e;return R=U.length,i?U=qL(U,i):C&&R>1&&U.reverse(),m&&c<R&&(U.length=c),this&&this!==NL&&this instanceof v&&(Sr=_||cg(Sr)),Sr.apply(Ir,U)}return v}lg.exports=pg});var fg=u((lQ,dg)=>{"use strict";var jL=en(),QL=Ta(),$L=fi(),KL=li(),VL=di(),YL=Fn(),HL=ce();function zL(e,t,r){var a=QL(e);function n(){for(var o=arguments.length,s=Array(o),i=o,c=VL(n);i--;)s[i]=arguments[i];var f=o<3&&s[0]!==c&&s[o-1]!==c?[]:YL(s,c);if(o-=f.length,o<r)return KL(e,t,$L,n.placeholder,void 0,s,f,void 0,void 0,r-o);var m=this&&this!==HL&&this instanceof n?a:e;return jL(m,this,s)}return n}dg.exports=zL});var gg=u((dQ,mg)=>{"use strict";var JL=en(),XL=Ta(),ZL=ce(),eP=1;function tP(e,t,r,a){var n=t&eP,o=XL(e);function s(){for(var i=-1,c=arguments.length,f=-1,m=a.length,g=Array(m+c),y=this&&this!==ZL&&this instanceof s?o:e;++f<m;)g[f]=a[f];for(;c--;)g[f++]=arguments[++i];return JL(y,n?r:this,g)}return s}mg.exports=tP});var Sg=u((fQ,Ig)=>{"use strict";var rP=oi(),aP=si(),yg=Fn(),hg="__lodash_placeholder__",mi=1,nP=2,oP=4,Ag=8,Ea=128,bg=256,sP=Math.min;function iP(e,t){var r=e[1],a=t[1],n=r|a,o=n<(mi|nP|Ea),s=a==Ea&&r==Ag||a==Ea&&r==bg&&e[7].length<=t[8]||a==(Ea|bg)&&t[7].length<=t[8]&&r==Ag;if(!(o||s))return e;a&mi&&(e[2]=t[2],n|=r&mi?0:oP);var i=t[3];if(i){var c=e[3];e[3]=c?rP(c,i,t[4]):i,e[4]=c?yg(e[3],hg):t[4]}return i=t[5],i&&(c=e[5],e[5]=c?aP(c,i,t[6]):i,e[6]=c?yg(e[5],hg):t[6]),i=t[7],i&&(e[7]=i),a&Ea&&(e[8]=e[8]==null?t[8]:sP(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=n,e}Ig.exports=iP});var Tg=u((mQ,wg)=>{"use strict";var uP=/\s/;function cP(e){for(var t=e.length;t--&&uP.test(e.charAt(t)););return t}wg.exports=cP});var Rg=u((gQ,Eg)=>{"use strict";var pP=Tg(),lP=/^\s+/;function dP(e){return e&&e.slice(0,pP(e)+1).replace(lP,"")}Eg.exports=dP});var mr=u((yQ,vg)=>{"use strict";var fP=gt(),mP=be(),gP="[object Symbol]";function yP(e){return typeof e=="symbol"||mP(e)&&fP(e)==gP}vg.exports=yP});var Og=u((hQ,Cg)=>{"use strict";var hP=Rg(),_g=xe(),AP=mr(),xg=0/0,bP=/^[-+]0x[0-9a-f]+$/i,IP=/^0b[01]+$/i,SP=/^0o[0-7]+$/i,wP=parseInt;function TP(e){if(typeof e=="number")return e;if(AP(e))return xg;if(_g(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=_g(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=hP(e);var r=IP.test(e);return r||SP.test(e)?wP(e.slice(2),r?2:8):bP.test(e)?xg:+e}Cg.exports=TP});var Ug=u((AQ,Pg)=>{"use strict";var EP=Og(),Lg=1/0,RP=17976931348623157e292;function vP(e){if(!e)return e===0?e:0;if(e=EP(e),e===Lg||e===-Lg){var t=e<0?-1:1;return t*RP}return e===e?e:0}Pg.exports=vP});var gi=u((bQ,qg)=>{"use strict";var _P=Ug();function xP(e){var t=_P(e),r=t%1;return t===t?r?t-r:t:0}qg.exports=xP});var Wn=u((IQ,kg)=>{"use strict";var CP=ni(),OP=Em(),LP=fg(),PP=fi(),UP=gg(),qP=ii(),DP=Sg(),NP=ci(),BP=pi(),Dg=gi(),MP="Expected a function",Ng=1,kP=2,yi=8,hi=16,Ai=32,Bg=64,Mg=Math.max;function GP(e,t,r,a,n,o,s,i){var c=t&kP;if(!c&&typeof e!="function")throw new TypeError(MP);var f=a?a.length:0;if(f||(t&=~(Ai|Bg),a=n=void 0),s=s===void 0?s:Mg(Dg(s),0),i=i===void 0?i:Dg(i),f-=n?n.length:0,t&Bg){var m=a,g=n;a=n=void 0}var y=c?void 0:qP(e),I=[e,t,r,a,n,m,g,o,s,i];if(y&&DP(I,y),e=I[0],t=I[1],r=I[2],a=I[3],n=I[4],i=I[9]=I[9]===void 0?c?0:e.length:Mg(I[9]-f,0),!i&&t&(yi|hi)&&(t&=~(yi|hi)),!t||t==Ng)var C=OP(e,t,r);else t==yi||t==hi?C=LP(e,t,i):(t==Ai||t==(Ng|Ai))&&!n.length?C=UP(e,t,r,a):C=PP.apply(void 0,I);var _=y?CP:NP;return BP(_(C,I),e,t)}kg.exports=GP});var Fg=u((SQ,Gg)=>{"use strict";var FP=Wn(),WP=128;function jP(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,FP(e,WP,void 0,void 0,void 0,void 0,t)}Gg.exports=jP});var jg=u((wQ,Wg)=>{"use strict";var QP=zo(),$P=QP(Object.keys,Object);Wg.exports=$P});var bi=u((TQ,Qg)=>{"use strict";var KP=pn(),VP=jg(),YP=Object.prototype,HP=YP.hasOwnProperty;function zP(e){if(!KP(e))return VP(e);var t=[];for(var r in Object(e))HP.call(e,r)&&r!="constructor"&&t.push(r);return t}Qg.exports=zP});var gr=u((EQ,$g)=>{"use strict";var JP=rs(),XP=bi(),ZP=Zt();function eU(e){return ZP(e)?JP(e):XP(e)}$g.exports=eU});var Ii=u((RQ,Kg)=>{"use strict";var tU=or(),rU=gr();function aU(e,t){return e&&tU(t,rU(t),e)}Kg.exports=aU});var Yg=u((vQ,Vg)=>{"use strict";var nU=or(),oU=sr();function sU(e,t){return e&&nU(t,oU(t),e)}Vg.exports=sU});var zg=u((_Q,Hg)=>{"use strict";function iU(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}Hg.exports=iU});var Si=u((xQ,Jg)=>{"use strict";function uU(){return[]}Jg.exports=uU});var jn=u((CQ,Zg)=>{"use strict";var cU=zg(),pU=Si(),lU=Object.prototype,dU=lU.propertyIsEnumerable,Xg=Object.getOwnPropertySymbols,fU=Xg?function(e){return e==null?[]:(e=Object(e),cU(Xg(e),function(t){return dU.call(e,t)}))}:pU;Zg.exports=fU});var ty=u((OQ,ey)=>{"use strict";var mU=or(),gU=jn();function yU(e,t){return mU(e,gU(e),t)}ey.exports=yU});var wi=u((LQ,ry)=>{"use strict";var hU=Za(),AU=cn(),bU=jn(),IU=Si(),SU=Object.getOwnPropertySymbols,wU=SU?function(e){for(var t=[];e;)hU(t,bU(e)),e=AU(e);return t}:IU;ry.exports=wU});var ny=u((PQ,ay)=>{"use strict";var TU=or(),EU=wi();function RU(e,t){return TU(e,EU(e),t)}ay.exports=RU});var Ti=u((UQ,oy)=>{"use strict";var vU=Za(),_U=se();function xU(e,t,r){var a=t(e);return _U(e)?a:vU(a,r(e))}oy.exports=xU});var Ei=u((qQ,sy)=>{"use strict";var CU=Ti(),OU=jn(),LU=gr();function PU(e){return CU(e,LU,OU)}sy.exports=PU});var uy=u((DQ,iy)=>{"use strict";var UU=Ti(),qU=wi(),DU=sr();function NU(e){return UU(e,DU,qU)}iy.exports=NU});var py=u((NQ,cy)=>{"use strict";var BU=yt(),MU=ce(),kU=BU(MU,"DataView");cy.exports=kU});var dy=u((BQ,ly)=>{"use strict";var GU=yt(),FU=ce(),WU=GU(FU,"Promise");ly.exports=WU});var hr=u((MQ,by)=>{"use strict";var Ri=py(),vi=rn(),_i=dy(),xi=Fo(),Ci=ri(),Ay=gt(),yr=qo(),fy="[object Map]",jU="[object Object]",my="[object Promise]",gy="[object Set]",yy="[object WeakMap]",hy="[object DataView]",QU=yr(Ri),$U=yr(vi),KU=yr(_i),VU=yr(xi),YU=yr(Ci),Nt=Ay;(Ri&&Nt(new Ri(new ArrayBuffer(1)))!=hy||vi&&Nt(new vi)!=fy||_i&&Nt(_i.resolve())!=my||xi&&Nt(new xi)!=gy||Ci&&Nt(new Ci)!=yy)&&(Nt=function(e){var t=Ay(e),r=t==jU?e.constructor:void 0,a=r?yr(r):"";if(a)switch(a){case QU:return hy;case $U:return fy;case KU:return my;case VU:return gy;case YU:return yy}return t});by.exports=Nt});var Sy=u((kQ,Iy)=>{"use strict";var HU=Object.prototype,zU=HU.hasOwnProperty;function JU(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&zU.call(e,"index")&&(r.index=e.index,r.input=e.input),r}Iy.exports=JU});var Ty=u((GQ,wy)=>{"use strict";var XU=un();function ZU(e,t){var r=t?XU(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}wy.exports=ZU});var Ry=u((FQ,Ey)=>{"use strict";var eq=/\w*$/;function tq(e){var t=new e.constructor(e.source,eq.exec(e));return t.lastIndex=e.lastIndex,t}Ey.exports=tq});var Oy=u((WQ,Cy)=>{"use strict";var vy=xt(),_y=vy?vy.prototype:void 0,xy=_y?_y.valueOf:void 0;function rq(e){return xy?Object(xy.call(e)):{}}Cy.exports=rq});var Py=u((jQ,Ly)=>{"use strict";var aq=un(),nq=Ty(),oq=Ry(),sq=Oy(),iq=Ho(),uq="[object Boolean]",cq="[object Date]",pq="[object Map]",lq="[object Number]",dq="[object RegExp]",fq="[object Set]",mq="[object String]",gq="[object Symbol]",yq="[object ArrayBuffer]",hq="[object DataView]",Aq="[object Float32Array]",bq="[object Float64Array]",Iq="[object Int8Array]",Sq="[object Int16Array]",wq="[object Int32Array]",Tq="[object Uint8Array]",Eq="[object Uint8ClampedArray]",Rq="[object Uint16Array]",vq="[object Uint32Array]";function _q(e,t,r){var a=e.constructor;switch(t){case yq:return aq(e);case uq:case cq:return new a(+e);case hq:return nq(e,r);case Aq:case bq:case Iq:case Sq:case wq:case Tq:case Eq:case Rq:case vq:return iq(e,r);case pq:return new a;case lq:case mq:return new a(e);case dq:return oq(e);case fq:return new a;case gq:return sq(e)}}Ly.exports=_q});var qy=u((QQ,Uy)=>{"use strict";var xq=hr(),Cq=be(),Oq="[object Map]";function Lq(e){return Cq(e)&&xq(e)==Oq}Uy.exports=Lq});var My=u(($Q,By)=>{"use strict";var Pq=qy(),Uq=ln(),Dy=dn(),Ny=Dy&&Dy.isMap,qq=Ny?Uq(Ny):Pq;By.exports=qq});var Gy=u((KQ,ky)=>{"use strict";var Dq=hr(),Nq=be(),Bq="[object Set]";function Mq(e){return Nq(e)&&Dq(e)==Bq}ky.exports=Mq});var Qy=u((VQ,jy)=>{"use strict";var kq=Gy(),Gq=ln(),Fy=dn(),Wy=Fy&&Fy.isSet,Fq=Wy?Gq(Wy):kq;jy.exports=Fq});var Oi=u((YQ,Yy)=>{"use strict";var Wq=na(),jq=Gn(),Qq=ts(),$q=Ii(),Kq=Yg(),Vq=Vo(),Yq=rr(),Hq=ty(),zq=ny(),Jq=Ei(),Xq=uy(),Zq=hr(),eD=Sy(),tD=Py(),rD=Jo(),aD=se(),nD=ca(),oD=My(),sD=xe(),iD=Qy(),uD=gr(),cD=sr(),pD=1,lD=2,dD=4,$y="[object Arguments]",fD="[object Array]",mD="[object Boolean]",gD="[object Date]",yD="[object Error]",Ky="[object Function]",hD="[object GeneratorFunction]",AD="[object Map]",bD="[object Number]",Vy="[object Object]",ID="[object RegExp]",SD="[object Set]",wD="[object String]",TD="[object Symbol]",ED="[object WeakMap]",RD="[object ArrayBuffer]",vD="[object DataView]",_D="[object Float32Array]",xD="[object Float64Array]",CD="[object Int8Array]",OD="[object Int16Array]",LD="[object Int32Array]",PD="[object Uint8Array]",UD="[object Uint8ClampedArray]",qD="[object Uint16Array]",DD="[object Uint32Array]",N={};N[$y]=N[fD]=N[RD]=N[vD]=N[mD]=N[gD]=N[_D]=N[xD]=N[CD]=N[OD]=N[LD]=N[AD]=N[bD]=N[Vy]=N[ID]=N[SD]=N[wD]=N[TD]=N[PD]=N[UD]=N[qD]=N[DD]=!0;N[yD]=N[Ky]=N[ED]=!1;function Qn(e,t,r,a,n,o){var s,i=t&pD,c=t&lD,f=t&dD;if(r&&(s=n?r(e,a,n,o):r(e)),s!==void 0)return s;if(!sD(e))return e;var m=aD(e);if(m){if(s=eD(e),!i)return Yq(e,s)}else{var g=Zq(e),y=g==Ky||g==hD;if(nD(e))return Vq(e,i);if(g==Vy||g==$y||y&&!n){if(s=c||y?{}:rD(e),!i)return c?zq(e,Kq(s,e)):Hq(e,$q(s,e))}else{if(!N[g])return n?e:{};s=tD(e,g,i)}}o||(o=new Wq);var I=o.get(e);if(I)return I;o.set(e,s),iD(e)?e.forEach(function(v){s.add(Qn(v,t,r,v,e,o))}):oD(e)&&e.forEach(function(v,R){s.set(R,Qn(v,t,r,R,e,o))});var C=f?c?Xq:Jq:c?cD:uD,_=m?void 0:C(e);return jq(_||e,function(v,R){_&&(R=v,v=e[R]),Qq(s,R,Qn(v,t,r,R,e,o))}),s}Yy.exports=Qn});var zy=u((HQ,Hy)=>{"use strict";var ND=Oi(),BD=4;function MD(e){return ND(e,BD)}Hy.exports=MD});var Xy=u((zQ,Jy)=>{"use strict";var kD=Wn(),GD=8;function Li(e,t,r){t=r?void 0:t;var a=kD(e,GD,void 0,void 0,void 0,void 0,void 0,t);return a.placeholder=Li.placeholder,a}Li.placeholder={};Jy.exports=Li});var eh=u((JQ,Zy)=>{"use strict";var FD=gt(),WD=be(),jD=Xo(),QD="[object DOMException]",$D="[object Error]";function KD(e){if(!WD(e))return!1;var t=FD(e);return t==$D||t==QD||typeof e.message=="string"&&typeof e.name=="string"&&!jD(e)}Zy.exports=KD});var rh=u((XQ,th)=>{"use strict";var VD=hr(),YD=be(),HD="[object WeakMap]";function zD(e){return YD(e)&&VD(e)==HD}th.exports=zD});var nh=u((ZQ,ah)=>{"use strict";function JD(e,t){for(var r=-1,a=e==null?0:e.length;++r<a;)if(t(e[r],r,e))return!0;return!1}ah.exports=JD});var Pi=u((e$,oh)=>{"use strict";var XD=Mo(),ZD=nh(),eN=Go(),tN=1,rN=2;function aN(e,t,r,a,n,o){var s=r&tN,i=e.length,c=t.length;if(i!=c&&!(s&&c>i))return!1;var f=o.get(e),m=o.get(t);if(f&&m)return f==t&&m==e;var g=-1,y=!0,I=r&rN?new XD:void 0;for(o.set(e,t),o.set(t,e);++g<i;){var C=e[g],_=t[g];if(a)var v=s?a(_,C,g,t,e,o):a(C,_,g,e,t,o);if(v!==void 0){if(v)continue;y=!1;break}if(I){if(!ZD(t,function(R,U){if(!eN(I,U)&&(C===R||n(C,R,r,a,o)))return I.push(U)})){y=!1;break}}else if(!(C===_||n(C,_,r,a,o))){y=!1;break}}return o.delete(e),o.delete(t),y}oh.exports=aN});var ih=u((t$,sh)=>{"use strict";function nN(e){var t=-1,r=Array(e.size);return e.forEach(function(a,n){r[++t]=[n,a]}),r}sh.exports=nN});var dh=u((r$,lh)=>{"use strict";var uh=xt(),ch=Yo(),oN=zt(),sN=Pi(),iN=ih(),uN=on(),cN=1,pN=2,lN="[object Boolean]",dN="[object Date]",fN="[object Error]",mN="[object Map]",gN="[object Number]",yN="[object RegExp]",hN="[object Set]",AN="[object String]",bN="[object Symbol]",IN="[object ArrayBuffer]",SN="[object DataView]",ph=uh?uh.prototype:void 0,Ui=ph?ph.valueOf:void 0;function wN(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 IN:return!(e.byteLength!=t.byteLength||!o(new ch(e),new ch(t)));case lN:case dN:case gN:return oN(+e,+t);case fN:return e.name==t.name&&e.message==t.message;case yN:case AN:return e==t+"";case mN:var i=iN;case hN:var c=a&cN;if(i||(i=uN),e.size!=t.size&&!c)return!1;var f=s.get(e);if(f)return f==t;a|=pN,s.set(e,t);var m=sN(i(e),i(t),a,n,o,s);return s.delete(e),m;case bN:if(Ui)return Ui.call(e)==Ui.call(t)}return!1}lh.exports=wN});var gh=u((a$,mh)=>{"use strict";var fh=Ei(),TN=1,EN=Object.prototype,RN=EN.hasOwnProperty;function vN(e,t,r,a,n,o){var s=r&TN,i=fh(e),c=i.length,f=fh(t),m=f.length;if(c!=m&&!s)return!1;for(var g=c;g--;){var y=i[g];if(!(s?y in t:RN.call(t,y)))return!1}var I=o.get(e),C=o.get(t);if(I&&C)return I==t&&C==e;var _=!0;o.set(e,t),o.set(t,e);for(var v=s;++g<c;){y=i[g];var R=e[y],U=t[y];if(a)var qe=s?a(U,R,y,t,e,o):a(R,U,y,e,t,o);if(!(qe===void 0?R===U||n(R,U,r,a,o):qe)){_=!1;break}v||(v=y=="constructor")}if(_&&!v){var Ee=e.constructor,pt=t.constructor;Ee!=pt&&"constructor"in e&&"constructor"in t&&!(typeof Ee=="function"&&Ee instanceof Ee&&typeof pt=="function"&&pt instanceof pt)&&(_=!1)}return o.delete(e),o.delete(t),_}mh.exports=vN});var Th=u((n$,wh)=>{"use strict";var qi=na(),_N=Pi(),xN=dh(),CN=gh(),yh=hr(),hh=se(),Ah=ca(),ON=fn(),LN=1,bh="[object Arguments]",Ih="[object Array]",$n="[object Object]",PN=Object.prototype,Sh=PN.hasOwnProperty;function UN(e,t,r,a,n,o){var s=hh(e),i=hh(t),c=s?Ih:yh(e),f=i?Ih:yh(t);c=c==bh?$n:c,f=f==bh?$n:f;var m=c==$n,g=f==$n,y=c==f;if(y&&Ah(e)){if(!Ah(t))return!1;s=!0,m=!1}if(y&&!m)return o||(o=new qi),s||ON(e)?_N(e,t,r,a,n,o):xN(e,t,c,r,a,n,o);if(!(r&LN)){var I=m&&Sh.call(e,"__wrapped__"),C=g&&Sh.call(t,"__wrapped__");if(I||C){var _=I?e.value():e,v=C?t.value():t;return o||(o=new qi),n(_,v,r,a,o)}}return y?(o||(o=new qi),CN(e,t,r,a,n,o)):!1}wh.exports=UN});var Di=u((o$,vh)=>{"use strict";var qN=Th(),Eh=be();function Rh(e,t,r,a,n){return e===t?!0:e==null||t==null||!Eh(e)&&!Eh(t)?e!==e&&t!==t:qN(e,t,r,a,Rh,n)}vh.exports=Rh});var xh=u((s$,_h)=>{"use strict";var DN=na(),NN=Di(),BN=1,MN=2;function kN(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 c=i[0],f=e[c],m=i[1];if(s&&i[2]){if(f===void 0&&!(c in e))return!1}else{var g=new DN;if(a)var y=a(f,m,c,e,t,g);if(!(y===void 0?NN(m,f,BN|MN,a,g):y))return!1}}return!0}_h.exports=kN});var Ni=u((i$,Ch)=>{"use strict";var GN=xe();function FN(e){return e===e&&!GN(e)}Ch.exports=FN});var Lh=u((u$,Oh)=>{"use strict";var WN=Ni(),jN=gr();function QN(e){for(var t=jN(e),r=t.length;r--;){var a=t[r],n=e[a];t[r]=[a,n,WN(n)]}return t}Oh.exports=QN});var Bi=u((c$,Ph)=>{"use strict";function $N(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}Ph.exports=$N});var qh=u((p$,Uh)=>{"use strict";var KN=xh(),VN=Lh(),YN=Bi();function HN(e){var t=VN(e);return t.length==1&&t[0][2]?YN(t[0][0],t[0][1]):function(r){return r===e||KN(r,e,t)}}Uh.exports=HN});var Kn=u((l$,Dh)=>{"use strict";var zN=se(),JN=mr(),XN=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,ZN=/^\w*$/;function eB(e,t){if(zN(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||JN(e)?!0:ZN.test(e)||!XN.test(e)||t!=null&&e in Object(t)}Dh.exports=eB});var Mh=u((d$,Bh)=>{"use strict";var Nh=an(),tB="Expected a function";function Mi(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(tB);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(Mi.Cache||Nh),r}Mi.Cache=Nh;Bh.exports=Mi});var Gh=u((f$,kh)=>{"use strict";var rB=Mh(),aB=500;function nB(e){var t=rB(e,function(a){return r.size===aB&&r.clear(),a}),r=t.cache;return t}kh.exports=nB});var ki=u((m$,Fh)=>{"use strict";var oB=Gh(),sB=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,iB=/\\(\\)?/g,uB=oB(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(sB,function(r,a,n,o){t.push(n?o.replace(iB,"$1"):a||r)}),t});Fh.exports=uB});var Gi=u((g$,Wh)=>{"use strict";function cB(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}Wh.exports=cB});var Yh=u((y$,Vh)=>{"use strict";var jh=xt(),pB=Gi(),lB=se(),dB=mr(),fB=1/0,Qh=jh?jh.prototype:void 0,$h=Qh?Qh.toString:void 0;function Kh(e){if(typeof e=="string")return e;if(lB(e))return pB(e,Kh)+"";if(dB(e))return $h?$h.call(e):"";var t=e+"";return t=="0"&&1/e==-fB?"-0":t}Vh.exports=Kh});var Fi=u((h$,Hh)=>{"use strict";var mB=Yh();function gB(e){return e==null?"":mB(e)}Hh.exports=gB});var Wi=u((A$,zh)=>{"use strict";var yB=se(),hB=Kn(),AB=ki(),bB=Fi();function IB(e,t){return yB(e)?e:hB(e,t)?[e]:AB(bB(e))}zh.exports=IB});var Ar=u((b$,Jh)=>{"use strict";var SB=mr(),wB=1/0;function TB(e){if(typeof e=="string"||SB(e))return e;var t=e+"";return t=="0"&&1/e==-wB?"-0":t}Jh.exports=TB});var ji=u((I$,Xh)=>{"use strict";var EB=Wi(),RB=Ar();function vB(e,t){t=EB(t,e);for(var r=0,a=t.length;e!=null&&r<a;)e=e[RB(t[r++])];return r&&r==a?e:void 0}Xh.exports=vB});var eA=u((S$,Zh)=>{"use strict";var _B=ji();function xB(e,t,r){var a=e==null?void 0:_B(e,t);return a===void 0?r:a}Zh.exports=xB});var rA=u((w$,tA)=>{"use strict";function CB(e,t){return e!=null&&t in Object(e)}tA.exports=CB});var nA=u((T$,aA)=>{"use strict";var OB=Wi(),LB=Jr(),PB=se(),UB=da(),qB=sn(),DB=Ar();function NB(e,t,r){t=OB(t,e);for(var a=-1,n=t.length,o=!1;++a<n;){var s=DB(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&&qB(n)&&UB(s,n)&&(PB(e)||LB(e)))}aA.exports=NB});var sA=u((E$,oA)=>{"use strict";var BB=rA(),MB=nA();function kB(e,t){return e!=null&&MB(e,t,BB)}oA.exports=kB});var uA=u((R$,iA)=>{"use strict";var GB=Di(),FB=eA(),WB=sA(),jB=Kn(),QB=Ni(),$B=Bi(),KB=Ar(),VB=1,YB=2;function HB(e,t){return jB(e)&&QB(t)?$B(KB(e),t):function(r){var a=FB(r,e);return a===void 0&&a===t?WB(r,e):GB(t,a,VB|YB)}}iA.exports=HB});var pA=u((v$,cA)=>{"use strict";function zB(e){return function(t){return t?.[e]}}cA.exports=zB});var dA=u((_$,lA)=>{"use strict";var JB=ji();function XB(e){return function(t){return JB(t,e)}}lA.exports=XB});var mA=u((x$,fA)=>{"use strict";var ZB=pA(),eM=dA(),tM=Kn(),rM=Ar();function aM(e){return tM(e)?ZB(rM(e)):eM(e)}fA.exports=aM});var Qi=u((C$,gA)=>{"use strict";var nM=qh(),oM=uA(),sM=Xr(),iM=se(),uM=mA();function cM(e){return typeof e=="function"?e:e==null?sM:typeof e=="object"?iM(e)?oM(e[0],e[1]):nM(e):uM(e)}gA.exports=cM});var hA=u((O$,yA)=>{"use strict";var pM=Oi(),lM=Qi(),dM=1;function fM(e){return lM(typeof e=="function"?e:pM(e,dM))}yA.exports=fM});var bA=u((L$,AA)=>{"use strict";var mM=Lo();function gM(e){var t=e==null?0:e.length;return t?mM(e,1):[]}AA.exports=gM});var SA=u((P$,IA)=>{"use strict";var yM=bA(),hM=Po(),AM=tn();function bM(e){return AM(hM(e,void 0,yM),e+"")}IA.exports=bM});var TA=u((U$,wA)=>{"use strict";var IM=Wn(),SM=SA(),wM=256,TM=SM(function(e,t){return IM(e,wM,void 0,void 0,void 0,t)});wA.exports=TM});var RA=u((q$,EA)=>{"use strict";var EM=Gi(),RM=rr(),vM=se(),_M=mr(),xM=ki(),CM=Ar(),OM=Fi();function LM(e){return vM(e)?EM(e,CM):_M(e)?[e]:RM(xM(OM(e)))}EA.exports=LM});var _A=u((D$,vA)=>{"use strict";vA.exports={ary:Fg(),assign:Ii(),clone:zy(),curry:Xy(),forEach:Gn(),isArray:se(),isError:eh(),isFunction:Zr(),isWeakMap:rh(),iteratee:hA(),keys:bi(),rearg:TA(),toInteger:gi(),toPath:RA()}});var CA=u((N$,xA)=>{"use strict";var PM=ym(),UM=_A();function qM(e,t,r){return PM(UM,e,t,r)}xA.exports=qM});var $i=u((B$,LA)=>{"use strict";var DM=CA(),OA=DM("merge",as());OA.placeholder=Xs();LA.exports=OA});var qb=u((PK,Ub)=>{"use strict";function tk(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}Ub.exports=tk});var Nb=u((UK,Db)=>{"use strict";var rk=Ko(),ak=gr();function nk(e,t){return e&&rk(e,t,ak)}Db.exports=nk});var Mb=u((qK,Bb)=>{"use strict";var ok=Zt();function sk(e,t){return function(r,a){if(r==null)return r;if(!ok(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}}Bb.exports=sk});var Gb=u((DK,kb)=>{"use strict";var ik=Nb(),uk=Mb(),ck=uk(ik);kb.exports=ck});var Wb=u((NK,Fb)=>{"use strict";var pk=Gb();function lk(e,t,r,a){return pk(e,function(n,o,s){t(a,n,r(n),s)}),a}Fb.exports=lk});var Qb=u((BK,jb)=>{"use strict";var dk=qb(),fk=Wb(),mk=Qi(),gk=se();function yk(e,t){return function(r,a){var n=gk(r)?dk:fk,o=t?t():{};return n(r,e,mk(a,2),o)}}jb.exports=yk});var Kb=u((MK,$b)=>{"use strict";var hk=oa(),Ak=Qb(),bk=Object.prototype,Ik=bk.hasOwnProperty,Sk=Ak(function(e,t,r){Ik.call(e,r)?e[r].push(t):hk(e,r,[t])});$b.exports=Sk});var $k={};w($k,{Method:()=>uo,ai:()=>Uu,api:()=>iu,auditLogs:()=>It,automations:()=>Cn,backups:()=>Se,branding:()=>bn,constants:()=>Qr,environmentVariables:()=>Je,features:()=>Me,groups:()=>j,init:()=>pm,licensing:()=>Ke,logger:()=>Bt,mappers:()=>Y,middleware:()=>Xi,plugins:()=>On,publicApi:()=>Un,quotas:()=>ze,scimGroups:()=>br,scimUsers:()=>ye,sdk:()=>Vi,users:()=>nt,utils:()=>Yt});module.exports=kI($k);var uo=(o=>(o.POST="POST",o.GET="GET",o.PATCH="PATCH",o.DELETE="DELETE",o.PUT="PUT",o))(uo||{});var Vi={};w(Vi,{ai:()=>Is,auditLogs:()=>It,automations:()=>Cn,backups:()=>Se,branding:()=>bn,environmentVariables:()=>Je,features:()=>Me,groups:()=>j,init:()=>pm,licensing:()=>Ke,logger:()=>Bt,plugins:()=>On,publicApi:()=>Un,quotas:()=>ze,scimGroups:()=>br,scimUsers:()=>ye,users:()=>nt,utils:()=>Yt});var bn={};w(bn,{getBrandingConfig:()=>Lx});var Me={};w(Me,{checkBackups:()=>pe,checkFeature:()=>hn,checkFeatures:()=>ms,checkSCIM:()=>As,isAppBuildersEnabled:()=>Pt,isAuditLogsEnabled:()=>An,isBackupsEnabled:()=>gs,isBrandingEnabled:()=>ys,isEnforceableSSO:()=>Tf,isExpandedPublicApiEnabled:()=>rt,isPWAEnabled:()=>Ex,isPkceOidcEnabled:()=>vx,isRecaptchaEnabled:()=>Rx,isSSOEnforced:()=>_x,isSyncAutomationsEnabled:()=>wx,isTriggerAutomationRunEnabled:()=>Tx,isUserGroupsEnabled:()=>hs,isViewPermissionEnabled:()=>xx,isViewReadonlyColumnsEnabled:()=>Cx});var te=require("@budibase/types"),tt=require("@budibase/backend-core");var Ke={};w(Ke,{cache:()=>Ne,client:()=>mt,features:()=>Ja,getFreeLicense:()=>ls,getLicense:()=>cs,getLicenseFromKey:()=>ps,keys:()=>fs,offline:()=>mn,quotas:()=>Xa});var Ne={};w(Ne,{getCachedLicense:()=>Sf,invalidate:()=>wf,refresh:()=>Ct});var Ba=require("@budibase/backend-core"),Tr,GI=async()=>{Tr=await Ba.RedisClient.init(Ba.redis.utils.Databases.LICENSES)},FI=async()=>{Tr&&await Tr.finish()};process.on("exit",async()=>{await FI()});var co=async()=>(Tr||await GI(),Tr);var mt={};w(mt,{activateLicenseKey:()=>vo,getLicense:()=>Kt,getLicenseFromKey:()=>Ro,triggerQuota:()=>vS});var Wu=P(require("node-fetch"));var ju=require("@budibase/backend-core"),po=require("dd-trace"),Qu=require("dd-trace/ext/formats"),lo=class{constructor(t){this.apiCall=t=>async(r="",a={})=>await po.tracer.trace(`api.${t}`,async n=>{n.setTag("url",r);let o={...a.headers};o["Content-Type"]||(o["Content-Type"]="application/json",o.Accept="application/json");let s=o["Content-Type"]==="application/json";ju.logging.correlation.setHeader(o),po.tracer.inject(n,Qu.HTTP_HEADERS,o);let i={method:t,body:s?JSON.stringify(a.body):a.body,headers:o,credentials:"include"};return(0,Wu.default)(`${this.host}${r}`,i)});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}},fo=lo;var Ya=require("@budibase/types"),L=require("@budibase/backend-core");var Qe={};w(Qe,{bustCache:()=>yo,getCurrentUsageValues:()=>Xu,getQuotaUsage:()=>Et,setAllUsage:()=>Ao,setAppUsageValue:()=>ho,setUsage:()=>Hu,setUsagePerApp:()=>zu,utils:()=>_r});var fe=require("@budibase/backend-core"),ue=require("@budibase/types");var _r={};w(_r,{generateBaseQuotaUsage:()=>ka,generateNewMonthlyQuotas:()=>vr,generateNewQuotaUsage:()=>go,getBreakdownName:()=>Fa,getCurrentMonthString:()=>lt,getQuotaDocId:()=>Rr,setCurrentMonth:()=>Ga,setQuotaReset:()=>mo});var H=require("@budibase/types"),Er=require("@budibase/backend-core"),Ma=require("@budibase/shared-core"),Rr=()=>Er.context.isSelfHostUsingCloud()?`quota_usage_${Er.context.getTenantId()}`:Er.db.StaticDatabases.GLOBAL.docs.usageQuota,$u=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},mo=e=>{e.quotaReset=$u()},lt=()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},ka=()=>({usageQuota:{[H.StaticQuotaName.APPS]:0,[H.StaticQuotaName.ROWS]:0,[H.StaticQuotaName.PLUGINS]:0,[H.StaticQuotaName.USERS]:0,[H.StaticQuotaName.CREATORS]:0,[H.StaticQuotaName.USER_GROUPS]:0,[H.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[lt()]:vr()}}),go=()=>{let e={_id:Rr(),quotaReset:$u(),...ka(),apps:{}};return Ga(e),e},vr=()=>({[H.MonthlyQuotaName.QUERIES]:0,[H.MonthlyQuotaName.AUTOMATIONS]:0,[H.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,[H.MonthlyQuotaName.ACTIONS]:0,triggers:{}}),Ga=e=>{let t=lt();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=vr()),e.monthly.current=e.monthly[t]},Fa=(e,t)=>{if(!(!t||!e))switch(e){case H.MonthlyQuotaName.AUTOMATIONS:return H.BreakdownQuotaName.AUTOMATIONS;case H.MonthlyQuotaName.QUERIES:return(0,Ma.isTableIdOrExternalTableId)(t)?H.BreakdownQuotaName.ROW_QUERIES:(0,Ma.isDatasourceOrDatasourcePlusId)(t)?H.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}};var Ku=fe.Duration.fromSeconds(60).toMs(),{Writethrough:Vu}=fe.cache.writethrough;function jI(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 Wa=()=>fe.tenancy.isSelfHostUsingCloud()?new Vu(fe.tenancy.getSelfHostCloudDB(),Ku):new Vu(fe.tenancy.getGlobalDB(),Ku);async function yo(e=0){let r=Wa(),a=Rr(),n=await r.tryGet(a);n&&n._rev&&await r.remove(a,n._rev).catch(async o=>{if(e<1)return await yo(e+1);throw o})}var Et=async()=>{let e=Wa(),t=await e.tryGet(Rr());if(!t){t=go();let{rev:r}=await e.put(t);t._rev=r}return Ga(t),mo(t),jI(t)},Hu=async(e,t,r)=>Ao({name:t,type:r,values:{total:e}}),zu=async(e,t,r)=>{let a=Wa(),n=await Et(),o=Object.values(e).reduce((i,c)=>i+c,0);for(let[i,c]of Object.entries(e))n=Ju(n,t,r,{total:o,app:c},{appId:i});let s=await a.put(n);return n._rev=s.rev,n},QI=(e,t,r,a)=>{let n=Fa(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},ho=(e,t,r,a={},n)=>{let o;try{o=fe.db.getProdWorkspaceID(a?.appId||fe.context.getWorkspaceId())}catch{}if(!o||!n.app||!ue.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[o]||(e.apps={...e.apps,[o]:ka()});let s=e.apps[o];switch(r){case ue.QuotaUsageType.STATIC:s.usageQuota[t]=n.app;break;case ue.QuotaUsageType.MONTHLY:{let i=lt(),c=t,f=s.monthly[i];f||(s.monthly[i]=vr(),f=s.monthly[i]),f[c]=n.app,ue.BREAKDOWN_QUOTA_NAMES.includes(c)&&a?.id&&(f=QI(f,c,a.id,n));break}}return e},Yu=(e,t,r,a)=>{if(!ue.APP_QUOTA_NAMES.includes(r))return{};let n;try{n=fe.db.getProdWorkspaceID(fe.context.getWorkspaceId())}catch{}if(!n||!e.apps||!e.apps[n])return{app:0};let o=e.apps[n];switch(t){case ue.QuotaUsageType.STATIC:if(o.usageQuota?.[r])return{app:o.usageQuota[r]};break;case ue.QuotaUsageType.MONTHLY:{let s=lt(),i=r;if(!o.monthly?.[s]?.[i])break;let c=o.monthly[s],f=c[i],m,g=Fa(i,a);return g&&a&&c.breakdown?.[g]&&(m=c.breakdown[g]?.values[a]),{app:f,breakdown:m||0}}}return{app:0}},$I=(e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},KI=(e,t,r,a)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),a&&(r.monthly[t].triggers[e]=a)},Ju=(e,t,r,a,n={})=>{if(r===ue.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=a.total,$I(t,e,a.triggers);else if(r===ue.QuotaUsageType.MONTHLY){t=t;let o=lt();e.monthly[o][t]=a.total,KI(t,o,e,a.triggers)}else throw new Error(`Invalid usage type: ${r}`);return ho(e,t,r,n,a)},Ao=async e=>{let t=Array.isArray(e)?e:[e],r=Wa(),a=await Et();for(let o of t)a=Ju(a,o.name,o.type,o.values,o.opts);let n=await r.put(a,0);return a._rev=n.rev,a},Xu=async(e,t,r)=>{let a=await Et(),n=0,o={};switch(e){case ue.QuotaUsageType.STATIC:if(a.usageQuota[t]){let s=t;n=a.usageQuota[s],o=Yu(a,e,t,r)}break;case ue.QuotaUsageType.MONTHLY:{let s=lt(),i=t;a.monthly[s][i]&&(n=a.monthly[s][i],o=Yu(a,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return ue.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 ve={};w(ve,{destroy:()=>HI,get:()=>bo,save:()=>YI});var dt=require("@budibase/backend-core"),VI=()=>({_id:dt.StaticDatabases.GLOBAL.docs.licenseInfo}),YI=async e=>{let t=await bo();t={...t,...e};let a=await dt.tenancy.getGlobalDB().put(t);return t._rev=a.rev,t},bo=async()=>{let e=dt.tenancy.getGlobalDB();try{return await e.get(dt.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return VI();throw t}},HI=async()=>{let e=dt.tenancy.getGlobalDB(),t=await bo();t&&t._rev&&await e.remove(dt.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)};var M={};w(M,{bulkSave:()=>iS,destroy:()=>uS,fetch:()=>aS,generateUserGroupID:()=>tS,get:()=>nS,getBulk:()=>oS,getByName:()=>Io,getGroupUsers:()=>Qa,getGroupUsersParams:()=>ac,getUserGroupsParams:()=>rc,save:()=>sS});var q=require("@budibase/backend-core");var De=require("@budibase/types"),jt=require("@budibase/backend-core");async function Zu(){let e=jt.sql.designDoc.base("type");e.sql.tables={[De.AUDIT_LOG_TYPE]:{fields:{appId:De.SQLiteType.TEXT,event:De.SQLiteType.TEXT,userId:De.SQLiteType.TEXT,timestamp:De.SQLiteType.TEXT,metadata:De.SQLiteType.TEXT,name:De.SQLiteType.TEXT,type:De.SQLiteType.TEXT,fallback:De.SQLiteType.TEXT}}};let t=jt.context.getAuditLogsDB(),r;try{r=await t.get(jt.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(a){if(a.status===404)r=e;else throw a}await t.put(r)}var ja=require("@budibase/backend-core"),{ViewName:zI,SEPARATOR:JI,DocumentType:XI,createView:ZI}=ja.db,eS=XI.USER+JI;async function ec(){let e=ja.tenancy.getGlobalDB(),t=`function(doc) {
3
+ `)}Hm.exports=HO});var Gn=u((aQ,Jm)=>{"use strict";function zO(e,t){for(var r=-1,a=e==null?0:e.length;++r<a&&t(e[r],r,e)!==!1;);return e}Jm.exports=zO});var Zm=u((nQ,Xm)=>{"use strict";var JO=Gn(),XO=Mo(),ZO=1,eL=2,tL=8,rL=16,aL=32,nL=64,oL=128,sL=256,iL=512,uL=[["ary",oL],["bind",ZO],["bindKey",eL],["curry",tL],["curryRight",rL],["flip",iL],["partial",aL],["partialRight",nL],["rearg",sL]];function cL(e,t){return JO(uL,function(r){var a="_."+r[0];t&r[1]&&!XO(e,a)&&e.push(a)}),e.sort()}Xm.exports=cL});var pi=u((oQ,eg)=>{"use strict";var pL=Ym(),lL=zm(),dL=tn(),fL=Zm();function mL(e,t,r){var a=t+"";return dL(e,lL(a,fL(pL(a),r)))}eg.exports=mL});var li=u((sQ,ag)=>{"use strict";var gL=$m(),yL=ci(),hL=pi(),AL=1,bL=2,IL=4,SL=8,tg=32,rg=64;function wL(e,t,r,a,n,o,s,i,c,f){var m=t&SL,g=m?s:void 0,y=m?void 0:s,I=m?o:void 0,C=m?void 0:o;t|=m?tg:rg,t&=~(m?rg:tg),t&IL||(t&=~(AL|bL));var _=[e,t,n,I,g,C,y,i,c,f],v=r.apply(void 0,_);return gL(e)&&yL(v,_),v.placeholder=a,hL(v,e,t)}ag.exports=wL});var di=u((iQ,ng)=>{"use strict";function EL(e){var t=e;return t.placeholder}ng.exports=EL});var sg=u((uQ,og)=>{"use strict";var TL=rr(),RL=da(),vL=Math.min;function _L(e,t){for(var r=e.length,a=vL(t.length,r),n=TL(e);a--;){var o=t[a];e[a]=RL(o,r)?n[o]:void 0}return e}og.exports=_L});var Fn=u((cQ,ug)=>{"use strict";var ig="__lodash_placeholder__";function xL(e,t){for(var r=-1,a=e.length,n=0,o=[];++r<a;){var s=e[r];(s===t||s===ig)&&(e[r]=ig,o[n++]=r)}return o}ug.exports=xL});var fi=u((pQ,lg)=>{"use strict";var CL=oi(),OL=si(),LL=xm(),cg=Ea(),PL=li(),UL=di(),qL=sg(),DL=Fn(),kL=ce(),NL=1,BL=2,ML=8,GL=16,FL=128,WL=512;function pg(e,t,r,a,n,o,s,i,c,f){var m=t&FL,g=t&NL,y=t&BL,I=t&(ML|GL),C=t&WL,_=y?void 0:cg(e);function v(){for(var R=arguments.length,U=Array(R),qe=R;qe--;)U[qe]=arguments[qe];if(I)var Te=UL(v),pt=LL(U,Te);if(a&&(U=CL(U,a,n,I)),o&&(U=OL(U,o,s,I)),R-=pt,I&&R<f){var Wt=DL(U,Te);return PL(e,t,pg,v.placeholder,r,U,Wt,i,c,f-R)}var Ir=g?r:this,Sr=y?Ir[e]:e;return R=U.length,i?U=qL(U,i):C&&R>1&&U.reverse(),m&&c<R&&(U.length=c),this&&this!==kL&&this instanceof v&&(Sr=_||cg(Sr)),Sr.apply(Ir,U)}return v}lg.exports=pg});var fg=u((lQ,dg)=>{"use strict";var jL=en(),QL=Ea(),$L=fi(),KL=li(),VL=di(),YL=Fn(),HL=ce();function zL(e,t,r){var a=QL(e);function n(){for(var o=arguments.length,s=Array(o),i=o,c=VL(n);i--;)s[i]=arguments[i];var f=o<3&&s[0]!==c&&s[o-1]!==c?[]:YL(s,c);if(o-=f.length,o<r)return KL(e,t,$L,n.placeholder,void 0,s,f,void 0,void 0,r-o);var m=this&&this!==HL&&this instanceof n?a:e;return jL(m,this,s)}return n}dg.exports=zL});var gg=u((dQ,mg)=>{"use strict";var JL=en(),XL=Ea(),ZL=ce(),eP=1;function tP(e,t,r,a){var n=t&eP,o=XL(e);function s(){for(var i=-1,c=arguments.length,f=-1,m=a.length,g=Array(m+c),y=this&&this!==ZL&&this instanceof s?o:e;++f<m;)g[f]=a[f];for(;c--;)g[f++]=arguments[++i];return JL(y,n?r:this,g)}return s}mg.exports=tP});var Sg=u((fQ,Ig)=>{"use strict";var rP=oi(),aP=si(),yg=Fn(),hg="__lodash_placeholder__",mi=1,nP=2,oP=4,Ag=8,Ta=128,bg=256,sP=Math.min;function iP(e,t){var r=e[1],a=t[1],n=r|a,o=n<(mi|nP|Ta),s=a==Ta&&r==Ag||a==Ta&&r==bg&&e[7].length<=t[8]||a==(Ta|bg)&&t[7].length<=t[8]&&r==Ag;if(!(o||s))return e;a&mi&&(e[2]=t[2],n|=r&mi?0:oP);var i=t[3];if(i){var c=e[3];e[3]=c?rP(c,i,t[4]):i,e[4]=c?yg(e[3],hg):t[4]}return i=t[5],i&&(c=e[5],e[5]=c?aP(c,i,t[6]):i,e[6]=c?yg(e[5],hg):t[6]),i=t[7],i&&(e[7]=i),a&Ta&&(e[8]=e[8]==null?t[8]:sP(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=n,e}Ig.exports=iP});var Eg=u((mQ,wg)=>{"use strict";var uP=/\s/;function cP(e){for(var t=e.length;t--&&uP.test(e.charAt(t)););return t}wg.exports=cP});var Rg=u((gQ,Tg)=>{"use strict";var pP=Eg(),lP=/^\s+/;function dP(e){return e&&e.slice(0,pP(e)+1).replace(lP,"")}Tg.exports=dP});var mr=u((yQ,vg)=>{"use strict";var fP=gt(),mP=be(),gP="[object Symbol]";function yP(e){return typeof e=="symbol"||mP(e)&&fP(e)==gP}vg.exports=yP});var Og=u((hQ,Cg)=>{"use strict";var hP=Rg(),_g=xe(),AP=mr(),xg=0/0,bP=/^[-+]0x[0-9a-f]+$/i,IP=/^0b[01]+$/i,SP=/^0o[0-7]+$/i,wP=parseInt;function EP(e){if(typeof e=="number")return e;if(AP(e))return xg;if(_g(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=_g(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=hP(e);var r=IP.test(e);return r||SP.test(e)?wP(e.slice(2),r?2:8):bP.test(e)?xg:+e}Cg.exports=EP});var Ug=u((AQ,Pg)=>{"use strict";var TP=Og(),Lg=1/0,RP=17976931348623157e292;function vP(e){if(!e)return e===0?e:0;if(e=TP(e),e===Lg||e===-Lg){var t=e<0?-1:1;return t*RP}return e===e?e:0}Pg.exports=vP});var gi=u((bQ,qg)=>{"use strict";var _P=Ug();function xP(e){var t=_P(e),r=t%1;return t===t?r?t-r:t:0}qg.exports=xP});var Wn=u((IQ,Mg)=>{"use strict";var CP=ni(),OP=Tm(),LP=fg(),PP=fi(),UP=gg(),qP=ii(),DP=Sg(),kP=ci(),NP=pi(),Dg=gi(),BP="Expected a function",kg=1,MP=2,yi=8,hi=16,Ai=32,Ng=64,Bg=Math.max;function GP(e,t,r,a,n,o,s,i){var c=t&MP;if(!c&&typeof e!="function")throw new TypeError(BP);var f=a?a.length:0;if(f||(t&=~(Ai|Ng),a=n=void 0),s=s===void 0?s:Bg(Dg(s),0),i=i===void 0?i:Dg(i),f-=n?n.length:0,t&Ng){var m=a,g=n;a=n=void 0}var y=c?void 0:qP(e),I=[e,t,r,a,n,m,g,o,s,i];if(y&&DP(I,y),e=I[0],t=I[1],r=I[2],a=I[3],n=I[4],i=I[9]=I[9]===void 0?c?0:e.length:Bg(I[9]-f,0),!i&&t&(yi|hi)&&(t&=~(yi|hi)),!t||t==kg)var C=OP(e,t,r);else t==yi||t==hi?C=LP(e,t,i):(t==Ai||t==(kg|Ai))&&!n.length?C=UP(e,t,r,a):C=PP.apply(void 0,I);var _=y?CP:kP;return NP(_(C,I),e,t)}Mg.exports=GP});var Fg=u((SQ,Gg)=>{"use strict";var FP=Wn(),WP=128;function jP(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,FP(e,WP,void 0,void 0,void 0,void 0,t)}Gg.exports=jP});var jg=u((wQ,Wg)=>{"use strict";var QP=zo(),$P=QP(Object.keys,Object);Wg.exports=$P});var bi=u((EQ,Qg)=>{"use strict";var KP=pn(),VP=jg(),YP=Object.prototype,HP=YP.hasOwnProperty;function zP(e){if(!KP(e))return VP(e);var t=[];for(var r in Object(e))HP.call(e,r)&&r!="constructor"&&t.push(r);return t}Qg.exports=zP});var gr=u((TQ,$g)=>{"use strict";var JP=rs(),XP=bi(),ZP=Zt();function eU(e){return ZP(e)?JP(e):XP(e)}$g.exports=eU});var Ii=u((RQ,Kg)=>{"use strict";var tU=or(),rU=gr();function aU(e,t){return e&&tU(t,rU(t),e)}Kg.exports=aU});var Yg=u((vQ,Vg)=>{"use strict";var nU=or(),oU=sr();function sU(e,t){return e&&nU(t,oU(t),e)}Vg.exports=sU});var zg=u((_Q,Hg)=>{"use strict";function iU(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}Hg.exports=iU});var Si=u((xQ,Jg)=>{"use strict";function uU(){return[]}Jg.exports=uU});var jn=u((CQ,Zg)=>{"use strict";var cU=zg(),pU=Si(),lU=Object.prototype,dU=lU.propertyIsEnumerable,Xg=Object.getOwnPropertySymbols,fU=Xg?function(e){return e==null?[]:(e=Object(e),cU(Xg(e),function(t){return dU.call(e,t)}))}:pU;Zg.exports=fU});var ty=u((OQ,ey)=>{"use strict";var mU=or(),gU=jn();function yU(e,t){return mU(e,gU(e),t)}ey.exports=yU});var wi=u((LQ,ry)=>{"use strict";var hU=Za(),AU=cn(),bU=jn(),IU=Si(),SU=Object.getOwnPropertySymbols,wU=SU?function(e){for(var t=[];e;)hU(t,bU(e)),e=AU(e);return t}:IU;ry.exports=wU});var ny=u((PQ,ay)=>{"use strict";var EU=or(),TU=wi();function RU(e,t){return EU(e,TU(e),t)}ay.exports=RU});var Ei=u((UQ,oy)=>{"use strict";var vU=Za(),_U=se();function xU(e,t,r){var a=t(e);return _U(e)?a:vU(a,r(e))}oy.exports=xU});var Ti=u((qQ,sy)=>{"use strict";var CU=Ei(),OU=jn(),LU=gr();function PU(e){return CU(e,LU,OU)}sy.exports=PU});var uy=u((DQ,iy)=>{"use strict";var UU=Ei(),qU=wi(),DU=sr();function kU(e){return UU(e,DU,qU)}iy.exports=kU});var py=u((kQ,cy)=>{"use strict";var NU=yt(),BU=ce(),MU=NU(BU,"DataView");cy.exports=MU});var dy=u((NQ,ly)=>{"use strict";var GU=yt(),FU=ce(),WU=GU(FU,"Promise");ly.exports=WU});var hr=u((BQ,by)=>{"use strict";var Ri=py(),vi=rn(),_i=dy(),xi=Fo(),Ci=ri(),Ay=gt(),yr=qo(),fy="[object Map]",jU="[object Object]",my="[object Promise]",gy="[object Set]",yy="[object WeakMap]",hy="[object DataView]",QU=yr(Ri),$U=yr(vi),KU=yr(_i),VU=yr(xi),YU=yr(Ci),kt=Ay;(Ri&&kt(new Ri(new ArrayBuffer(1)))!=hy||vi&&kt(new vi)!=fy||_i&&kt(_i.resolve())!=my||xi&&kt(new xi)!=gy||Ci&&kt(new Ci)!=yy)&&(kt=function(e){var t=Ay(e),r=t==jU?e.constructor:void 0,a=r?yr(r):"";if(a)switch(a){case QU:return hy;case $U:return fy;case KU:return my;case VU:return gy;case YU:return yy}return t});by.exports=kt});var Sy=u((MQ,Iy)=>{"use strict";var HU=Object.prototype,zU=HU.hasOwnProperty;function JU(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&zU.call(e,"index")&&(r.index=e.index,r.input=e.input),r}Iy.exports=JU});var Ey=u((GQ,wy)=>{"use strict";var XU=un();function ZU(e,t){var r=t?XU(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}wy.exports=ZU});var Ry=u((FQ,Ty)=>{"use strict";var eq=/\w*$/;function tq(e){var t=new e.constructor(e.source,eq.exec(e));return t.lastIndex=e.lastIndex,t}Ty.exports=tq});var Oy=u((WQ,Cy)=>{"use strict";var vy=xt(),_y=vy?vy.prototype:void 0,xy=_y?_y.valueOf:void 0;function rq(e){return xy?Object(xy.call(e)):{}}Cy.exports=rq});var Py=u((jQ,Ly)=>{"use strict";var aq=un(),nq=Ey(),oq=Ry(),sq=Oy(),iq=Ho(),uq="[object Boolean]",cq="[object Date]",pq="[object Map]",lq="[object Number]",dq="[object RegExp]",fq="[object Set]",mq="[object String]",gq="[object Symbol]",yq="[object ArrayBuffer]",hq="[object DataView]",Aq="[object Float32Array]",bq="[object Float64Array]",Iq="[object Int8Array]",Sq="[object Int16Array]",wq="[object Int32Array]",Eq="[object Uint8Array]",Tq="[object Uint8ClampedArray]",Rq="[object Uint16Array]",vq="[object Uint32Array]";function _q(e,t,r){var a=e.constructor;switch(t){case yq:return aq(e);case uq:case cq:return new a(+e);case hq:return nq(e,r);case Aq:case bq:case Iq:case Sq:case wq:case Eq:case Tq:case Rq:case vq:return iq(e,r);case pq:return new a;case lq:case mq:return new a(e);case dq:return oq(e);case fq:return new a;case gq:return sq(e)}}Ly.exports=_q});var qy=u((QQ,Uy)=>{"use strict";var xq=hr(),Cq=be(),Oq="[object Map]";function Lq(e){return Cq(e)&&xq(e)==Oq}Uy.exports=Lq});var By=u(($Q,Ny)=>{"use strict";var Pq=qy(),Uq=ln(),Dy=dn(),ky=Dy&&Dy.isMap,qq=ky?Uq(ky):Pq;Ny.exports=qq});var Gy=u((KQ,My)=>{"use strict";var Dq=hr(),kq=be(),Nq="[object Set]";function Bq(e){return kq(e)&&Dq(e)==Nq}My.exports=Bq});var Qy=u((VQ,jy)=>{"use strict";var Mq=Gy(),Gq=ln(),Fy=dn(),Wy=Fy&&Fy.isSet,Fq=Wy?Gq(Wy):Mq;jy.exports=Fq});var Oi=u((YQ,Yy)=>{"use strict";var Wq=na(),jq=Gn(),Qq=ts(),$q=Ii(),Kq=Yg(),Vq=Vo(),Yq=rr(),Hq=ty(),zq=ny(),Jq=Ti(),Xq=uy(),Zq=hr(),eD=Sy(),tD=Py(),rD=Jo(),aD=se(),nD=ca(),oD=By(),sD=xe(),iD=Qy(),uD=gr(),cD=sr(),pD=1,lD=2,dD=4,$y="[object Arguments]",fD="[object Array]",mD="[object Boolean]",gD="[object Date]",yD="[object Error]",Ky="[object Function]",hD="[object GeneratorFunction]",AD="[object Map]",bD="[object Number]",Vy="[object Object]",ID="[object RegExp]",SD="[object Set]",wD="[object String]",ED="[object Symbol]",TD="[object WeakMap]",RD="[object ArrayBuffer]",vD="[object DataView]",_D="[object Float32Array]",xD="[object Float64Array]",CD="[object Int8Array]",OD="[object Int16Array]",LD="[object Int32Array]",PD="[object Uint8Array]",UD="[object Uint8ClampedArray]",qD="[object Uint16Array]",DD="[object Uint32Array]",k={};k[$y]=k[fD]=k[RD]=k[vD]=k[mD]=k[gD]=k[_D]=k[xD]=k[CD]=k[OD]=k[LD]=k[AD]=k[bD]=k[Vy]=k[ID]=k[SD]=k[wD]=k[ED]=k[PD]=k[UD]=k[qD]=k[DD]=!0;k[yD]=k[Ky]=k[TD]=!1;function Qn(e,t,r,a,n,o){var s,i=t&pD,c=t&lD,f=t&dD;if(r&&(s=n?r(e,a,n,o):r(e)),s!==void 0)return s;if(!sD(e))return e;var m=aD(e);if(m){if(s=eD(e),!i)return Yq(e,s)}else{var g=Zq(e),y=g==Ky||g==hD;if(nD(e))return Vq(e,i);if(g==Vy||g==$y||y&&!n){if(s=c||y?{}:rD(e),!i)return c?zq(e,Kq(s,e)):Hq(e,$q(s,e))}else{if(!k[g])return n?e:{};s=tD(e,g,i)}}o||(o=new Wq);var I=o.get(e);if(I)return I;o.set(e,s),iD(e)?e.forEach(function(v){s.add(Qn(v,t,r,v,e,o))}):oD(e)&&e.forEach(function(v,R){s.set(R,Qn(v,t,r,R,e,o))});var C=f?c?Xq:Jq:c?cD:uD,_=m?void 0:C(e);return jq(_||e,function(v,R){_&&(R=v,v=e[R]),Qq(s,R,Qn(v,t,r,R,e,o))}),s}Yy.exports=Qn});var zy=u((HQ,Hy)=>{"use strict";var kD=Oi(),ND=4;function BD(e){return kD(e,ND)}Hy.exports=BD});var Xy=u((zQ,Jy)=>{"use strict";var MD=Wn(),GD=8;function Li(e,t,r){t=r?void 0:t;var a=MD(e,GD,void 0,void 0,void 0,void 0,void 0,t);return a.placeholder=Li.placeholder,a}Li.placeholder={};Jy.exports=Li});var eh=u((JQ,Zy)=>{"use strict";var FD=gt(),WD=be(),jD=Xo(),QD="[object DOMException]",$D="[object Error]";function KD(e){if(!WD(e))return!1;var t=FD(e);return t==$D||t==QD||typeof e.message=="string"&&typeof e.name=="string"&&!jD(e)}Zy.exports=KD});var rh=u((XQ,th)=>{"use strict";var VD=hr(),YD=be(),HD="[object WeakMap]";function zD(e){return YD(e)&&VD(e)==HD}th.exports=zD});var nh=u((ZQ,ah)=>{"use strict";function JD(e,t){for(var r=-1,a=e==null?0:e.length;++r<a;)if(t(e[r],r,e))return!0;return!1}ah.exports=JD});var Pi=u((e$,oh)=>{"use strict";var XD=Bo(),ZD=nh(),ek=Go(),tk=1,rk=2;function ak(e,t,r,a,n,o){var s=r&tk,i=e.length,c=t.length;if(i!=c&&!(s&&c>i))return!1;var f=o.get(e),m=o.get(t);if(f&&m)return f==t&&m==e;var g=-1,y=!0,I=r&rk?new XD:void 0;for(o.set(e,t),o.set(t,e);++g<i;){var C=e[g],_=t[g];if(a)var v=s?a(_,C,g,t,e,o):a(C,_,g,e,t,o);if(v!==void 0){if(v)continue;y=!1;break}if(I){if(!ZD(t,function(R,U){if(!ek(I,U)&&(C===R||n(C,R,r,a,o)))return I.push(U)})){y=!1;break}}else if(!(C===_||n(C,_,r,a,o))){y=!1;break}}return o.delete(e),o.delete(t),y}oh.exports=ak});var ih=u((t$,sh)=>{"use strict";function nk(e){var t=-1,r=Array(e.size);return e.forEach(function(a,n){r[++t]=[n,a]}),r}sh.exports=nk});var dh=u((r$,lh)=>{"use strict";var uh=xt(),ch=Yo(),ok=zt(),sk=Pi(),ik=ih(),uk=on(),ck=1,pk=2,lk="[object Boolean]",dk="[object Date]",fk="[object Error]",mk="[object Map]",gk="[object Number]",yk="[object RegExp]",hk="[object Set]",Ak="[object String]",bk="[object Symbol]",Ik="[object ArrayBuffer]",Sk="[object DataView]",ph=uh?uh.prototype:void 0,Ui=ph?ph.valueOf:void 0;function wk(e,t,r,a,n,o,s){switch(r){case Sk:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case Ik:return!(e.byteLength!=t.byteLength||!o(new ch(e),new ch(t)));case lk:case dk:case gk:return ok(+e,+t);case fk:return e.name==t.name&&e.message==t.message;case yk:case Ak:return e==t+"";case mk:var i=ik;case hk:var c=a&ck;if(i||(i=uk),e.size!=t.size&&!c)return!1;var f=s.get(e);if(f)return f==t;a|=pk,s.set(e,t);var m=sk(i(e),i(t),a,n,o,s);return s.delete(e),m;case bk:if(Ui)return Ui.call(e)==Ui.call(t)}return!1}lh.exports=wk});var gh=u((a$,mh)=>{"use strict";var fh=Ti(),Ek=1,Tk=Object.prototype,Rk=Tk.hasOwnProperty;function vk(e,t,r,a,n,o){var s=r&Ek,i=fh(e),c=i.length,f=fh(t),m=f.length;if(c!=m&&!s)return!1;for(var g=c;g--;){var y=i[g];if(!(s?y in t:Rk.call(t,y)))return!1}var I=o.get(e),C=o.get(t);if(I&&C)return I==t&&C==e;var _=!0;o.set(e,t),o.set(t,e);for(var v=s;++g<c;){y=i[g];var R=e[y],U=t[y];if(a)var qe=s?a(U,R,y,t,e,o):a(R,U,y,e,t,o);if(!(qe===void 0?R===U||n(R,U,r,a,o):qe)){_=!1;break}v||(v=y=="constructor")}if(_&&!v){var Te=e.constructor,pt=t.constructor;Te!=pt&&"constructor"in e&&"constructor"in t&&!(typeof Te=="function"&&Te instanceof Te&&typeof pt=="function"&&pt instanceof pt)&&(_=!1)}return o.delete(e),o.delete(t),_}mh.exports=vk});var Eh=u((n$,wh)=>{"use strict";var qi=na(),_k=Pi(),xk=dh(),Ck=gh(),yh=hr(),hh=se(),Ah=ca(),Ok=fn(),Lk=1,bh="[object Arguments]",Ih="[object Array]",$n="[object Object]",Pk=Object.prototype,Sh=Pk.hasOwnProperty;function Uk(e,t,r,a,n,o){var s=hh(e),i=hh(t),c=s?Ih:yh(e),f=i?Ih:yh(t);c=c==bh?$n:c,f=f==bh?$n:f;var m=c==$n,g=f==$n,y=c==f;if(y&&Ah(e)){if(!Ah(t))return!1;s=!0,m=!1}if(y&&!m)return o||(o=new qi),s||Ok(e)?_k(e,t,r,a,n,o):xk(e,t,c,r,a,n,o);if(!(r&Lk)){var I=m&&Sh.call(e,"__wrapped__"),C=g&&Sh.call(t,"__wrapped__");if(I||C){var _=I?e.value():e,v=C?t.value():t;return o||(o=new qi),n(_,v,r,a,o)}}return y?(o||(o=new qi),Ck(e,t,r,a,n,o)):!1}wh.exports=Uk});var Di=u((o$,vh)=>{"use strict";var qk=Eh(),Th=be();function Rh(e,t,r,a,n){return e===t?!0:e==null||t==null||!Th(e)&&!Th(t)?e!==e&&t!==t:qk(e,t,r,a,Rh,n)}vh.exports=Rh});var xh=u((s$,_h)=>{"use strict";var Dk=na(),kk=Di(),Nk=1,Bk=2;function Mk(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 c=i[0],f=e[c],m=i[1];if(s&&i[2]){if(f===void 0&&!(c in e))return!1}else{var g=new Dk;if(a)var y=a(f,m,c,e,t,g);if(!(y===void 0?kk(m,f,Nk|Bk,a,g):y))return!1}}return!0}_h.exports=Mk});var ki=u((i$,Ch)=>{"use strict";var Gk=xe();function Fk(e){return e===e&&!Gk(e)}Ch.exports=Fk});var Lh=u((u$,Oh)=>{"use strict";var Wk=ki(),jk=gr();function Qk(e){for(var t=jk(e),r=t.length;r--;){var a=t[r],n=e[a];t[r]=[a,n,Wk(n)]}return t}Oh.exports=Qk});var Ni=u((c$,Ph)=>{"use strict";function $k(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}Ph.exports=$k});var qh=u((p$,Uh)=>{"use strict";var Kk=xh(),Vk=Lh(),Yk=Ni();function Hk(e){var t=Vk(e);return t.length==1&&t[0][2]?Yk(t[0][0],t[0][1]):function(r){return r===e||Kk(r,e,t)}}Uh.exports=Hk});var Kn=u((l$,Dh)=>{"use strict";var zk=se(),Jk=mr(),Xk=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Zk=/^\w*$/;function eN(e,t){if(zk(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||Jk(e)?!0:Zk.test(e)||!Xk.test(e)||t!=null&&e in Object(t)}Dh.exports=eN});var Bh=u((d$,Nh)=>{"use strict";var kh=an(),tN="Expected a function";function Bi(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(tN);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(Bi.Cache||kh),r}Bi.Cache=kh;Nh.exports=Bi});var Gh=u((f$,Mh)=>{"use strict";var rN=Bh(),aN=500;function nN(e){var t=rN(e,function(a){return r.size===aN&&r.clear(),a}),r=t.cache;return t}Mh.exports=nN});var Mi=u((m$,Fh)=>{"use strict";var oN=Gh(),sN=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,iN=/\\(\\)?/g,uN=oN(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(sN,function(r,a,n,o){t.push(n?o.replace(iN,"$1"):a||r)}),t});Fh.exports=uN});var Gi=u((g$,Wh)=>{"use strict";function cN(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}Wh.exports=cN});var Yh=u((y$,Vh)=>{"use strict";var jh=xt(),pN=Gi(),lN=se(),dN=mr(),fN=1/0,Qh=jh?jh.prototype:void 0,$h=Qh?Qh.toString:void 0;function Kh(e){if(typeof e=="string")return e;if(lN(e))return pN(e,Kh)+"";if(dN(e))return $h?$h.call(e):"";var t=e+"";return t=="0"&&1/e==-fN?"-0":t}Vh.exports=Kh});var Fi=u((h$,Hh)=>{"use strict";var mN=Yh();function gN(e){return e==null?"":mN(e)}Hh.exports=gN});var Wi=u((A$,zh)=>{"use strict";var yN=se(),hN=Kn(),AN=Mi(),bN=Fi();function IN(e,t){return yN(e)?e:hN(e,t)?[e]:AN(bN(e))}zh.exports=IN});var Ar=u((b$,Jh)=>{"use strict";var SN=mr(),wN=1/0;function EN(e){if(typeof e=="string"||SN(e))return e;var t=e+"";return t=="0"&&1/e==-wN?"-0":t}Jh.exports=EN});var ji=u((I$,Xh)=>{"use strict";var TN=Wi(),RN=Ar();function vN(e,t){t=TN(t,e);for(var r=0,a=t.length;e!=null&&r<a;)e=e[RN(t[r++])];return r&&r==a?e:void 0}Xh.exports=vN});var eA=u((S$,Zh)=>{"use strict";var _N=ji();function xN(e,t,r){var a=e==null?void 0:_N(e,t);return a===void 0?r:a}Zh.exports=xN});var rA=u((w$,tA)=>{"use strict";function CN(e,t){return e!=null&&t in Object(e)}tA.exports=CN});var nA=u((E$,aA)=>{"use strict";var ON=Wi(),LN=Jr(),PN=se(),UN=da(),qN=sn(),DN=Ar();function kN(e,t,r){t=ON(t,e);for(var a=-1,n=t.length,o=!1;++a<n;){var s=DN(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&&qN(n)&&UN(s,n)&&(PN(e)||LN(e)))}aA.exports=kN});var sA=u((T$,oA)=>{"use strict";var NN=rA(),BN=nA();function MN(e,t){return e!=null&&BN(e,t,NN)}oA.exports=MN});var uA=u((R$,iA)=>{"use strict";var GN=Di(),FN=eA(),WN=sA(),jN=Kn(),QN=ki(),$N=Ni(),KN=Ar(),VN=1,YN=2;function HN(e,t){return jN(e)&&QN(t)?$N(KN(e),t):function(r){var a=FN(r,e);return a===void 0&&a===t?WN(r,e):GN(t,a,VN|YN)}}iA.exports=HN});var pA=u((v$,cA)=>{"use strict";function zN(e){return function(t){return t?.[e]}}cA.exports=zN});var dA=u((_$,lA)=>{"use strict";var JN=ji();function XN(e){return function(t){return JN(t,e)}}lA.exports=XN});var mA=u((x$,fA)=>{"use strict";var ZN=pA(),eB=dA(),tB=Kn(),rB=Ar();function aB(e){return tB(e)?ZN(rB(e)):eB(e)}fA.exports=aB});var Qi=u((C$,gA)=>{"use strict";var nB=qh(),oB=uA(),sB=Xr(),iB=se(),uB=mA();function cB(e){return typeof e=="function"?e:e==null?sB:typeof e=="object"?iB(e)?oB(e[0],e[1]):nB(e):uB(e)}gA.exports=cB});var hA=u((O$,yA)=>{"use strict";var pB=Oi(),lB=Qi(),dB=1;function fB(e){return lB(typeof e=="function"?e:pB(e,dB))}yA.exports=fB});var bA=u((L$,AA)=>{"use strict";var mB=Lo();function gB(e){var t=e==null?0:e.length;return t?mB(e,1):[]}AA.exports=gB});var SA=u((P$,IA)=>{"use strict";var yB=bA(),hB=Po(),AB=tn();function bB(e){return AB(hB(e,void 0,yB),e+"")}IA.exports=bB});var EA=u((U$,wA)=>{"use strict";var IB=Wn(),SB=SA(),wB=256,EB=SB(function(e,t){return IB(e,wB,void 0,void 0,void 0,t)});wA.exports=EB});var RA=u((q$,TA)=>{"use strict";var TB=Gi(),RB=rr(),vB=se(),_B=mr(),xB=Mi(),CB=Ar(),OB=Fi();function LB(e){return vB(e)?TB(e,CB):_B(e)?[e]:RB(xB(OB(e)))}TA.exports=LB});var _A=u((D$,vA)=>{"use strict";vA.exports={ary:Fg(),assign:Ii(),clone:zy(),curry:Xy(),forEach:Gn(),isArray:se(),isError:eh(),isFunction:Zr(),isWeakMap:rh(),iteratee:hA(),keys:bi(),rearg:EA(),toInteger:gi(),toPath:RA()}});var CA=u((k$,xA)=>{"use strict";var PB=ym(),UB=_A();function qB(e,t,r){return PB(UB,e,t,r)}xA.exports=qB});var $i=u((N$,LA)=>{"use strict";var DB=CA(),OA=DB("merge",as());OA.placeholder=Xs();LA.exports=OA});var qb=u((DK,Ub)=>{"use strict";function tM(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}Ub.exports=tM});var kb=u((kK,Db)=>{"use strict";var rM=Ko(),aM=gr();function nM(e,t){return e&&rM(e,t,aM)}Db.exports=nM});var Bb=u((NK,Nb)=>{"use strict";var oM=Zt();function sM(e,t){return function(r,a){if(r==null)return r;if(!oM(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}}Nb.exports=sM});var Gb=u((BK,Mb)=>{"use strict";var iM=kb(),uM=Bb(),cM=uM(iM);Mb.exports=cM});var Wb=u((MK,Fb)=>{"use strict";var pM=Gb();function lM(e,t,r,a){return pM(e,function(n,o,s){t(a,n,r(n),s)}),a}Fb.exports=lM});var Qb=u((GK,jb)=>{"use strict";var dM=qb(),fM=Wb(),mM=Qi(),gM=se();function yM(e,t){return function(r,a){var n=gM(r)?dM:fM,o=t?t():{};return n(r,e,mM(a,2),o)}}jb.exports=yM});var Kb=u((FK,$b)=>{"use strict";var hM=oa(),AM=Qb(),bM=Object.prototype,IM=bM.hasOwnProperty,SM=AM(function(e,t,r){IM.call(e,r)?e[r].push(t):hM(e,r,[t])});$b.exports=SM});var $M={};w($M,{Method:()=>uo,ai:()=>Uu,api:()=>iu,auditLogs:()=>It,automations:()=>Cn,backups:()=>Se,branding:()=>bn,constants:()=>Qr,environmentVariables:()=>Je,features:()=>Be,groups:()=>j,init:()=>pm,licensing:()=>Ke,logger:()=>Nt,mappers:()=>Y,middleware:()=>Xi,plugins:()=>On,publicApi:()=>Un,quotas:()=>ze,scimGroups:()=>br,scimUsers:()=>ye,sdk:()=>Vi,users:()=>nt,utils:()=>Yt});module.exports=MI($M);var uo=(o=>(o.POST="POST",o.GET="GET",o.PATCH="PATCH",o.DELETE="DELETE",o.PUT="PUT",o))(uo||{});var Vi={};w(Vi,{ai:()=>Is,auditLogs:()=>It,automations:()=>Cn,backups:()=>Se,branding:()=>bn,environmentVariables:()=>Je,features:()=>Be,groups:()=>j,init:()=>pm,licensing:()=>Ke,logger:()=>Nt,plugins:()=>On,publicApi:()=>Un,quotas:()=>ze,scimGroups:()=>br,scimUsers:()=>ye,users:()=>nt,utils:()=>Yt});var bn={};w(bn,{getBrandingConfig:()=>Lx});var Be={};w(Be,{checkBackups:()=>pe,checkFeature:()=>hn,checkFeatures:()=>ms,checkSCIM:()=>As,isAppBuildersEnabled:()=>Pt,isAuditLogsEnabled:()=>An,isBackupsEnabled:()=>gs,isBrandingEnabled:()=>ys,isEnforceableSSO:()=>Ef,isExpandedPublicApiEnabled:()=>rt,isPWAEnabled:()=>Tx,isPkceOidcEnabled:()=>vx,isRecaptchaEnabled:()=>Rx,isSSOEnforced:()=>_x,isSyncAutomationsEnabled:()=>wx,isTriggerAutomationRunEnabled:()=>Ex,isUserGroupsEnabled:()=>hs,isViewPermissionEnabled:()=>xx,isViewReadonlyColumnsEnabled:()=>Cx});var tt=require("@budibase/backend-core"),te=require("@budibase/types");var Ke={};w(Ke,{cache:()=>ke,client:()=>mt,features:()=>Ja,getFreeLicense:()=>ls,getLicense:()=>cs,getLicenseFromKey:()=>ps,keys:()=>fs,offline:()=>mn,quotas:()=>Xa});var ke={};w(ke,{getCachedLicense:()=>Sf,invalidate:()=>wf,refresh:()=>Ct});var Na=require("@budibase/backend-core"),Er,GI=async()=>{Er=await Na.RedisClient.init(Na.redis.utils.Databases.LICENSES)},FI=async()=>{Er&&await Er.finish()};process.on("exit",async()=>{await FI()});var co=async()=>(Er||await GI(),Er);var mt={};w(mt,{activateLicenseKey:()=>vo,getLicense:()=>Kt,getLicenseFromKey:()=>Ro,triggerQuota:()=>vS});var Wu=P(require("node-fetch"));var ju=require("@budibase/backend-core"),po=require("dd-trace"),Qu=require("dd-trace/ext/formats"),lo=class{constructor(t){this.apiCall=t=>async(r="",a={})=>await po.tracer.trace(`api.${t}`,async n=>{n.setTag("url",r);let o={...a.headers};o["Content-Type"]||(o["Content-Type"]="application/json",o.Accept="application/json");let s=o["Content-Type"]==="application/json";ju.logging.correlation.setHeader(o),po.tracer.inject(n,Qu.HTTP_HEADERS,o);let i={method:t,body:s?JSON.stringify(a.body):a.body,headers:o,credentials:"include"};return(0,Wu.default)(`${this.host}${r}`,i)});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}},fo=lo;var Ya=require("@budibase/types"),L=require("@budibase/backend-core");var Qe={};w(Qe,{bustCache:()=>yo,getCurrentUsageValues:()=>Xu,getQuotaUsage:()=>Tt,setAllUsage:()=>Ao,setAppUsageValue:()=>ho,setUsage:()=>Hu,setUsagePerApp:()=>zu,utils:()=>_r});var fe=require("@budibase/backend-core"),ue=require("@budibase/types");var _r={};w(_r,{generateBaseQuotaUsage:()=>Ma,generateNewMonthlyQuotas:()=>vr,generateNewQuotaUsage:()=>go,getBreakdownName:()=>Fa,getCurrentMonthString:()=>lt,getQuotaDocId:()=>Rr,setCurrentMonth:()=>Ga,setQuotaReset:()=>mo});var Tr=require("@budibase/backend-core"),Ba=require("@budibase/shared-core"),H=require("@budibase/types"),Rr=()=>Tr.context.isSelfHostUsingCloud()?`quota_usage_${Tr.context.getTenantId()}`:Tr.db.StaticDatabases.GLOBAL.docs.usageQuota,$u=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},mo=e=>{e.quotaReset=$u()},lt=()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},Ma=()=>({usageQuota:{[H.StaticQuotaName.WORKSPACES]:0,[H.StaticQuotaName.ROWS]:0,[H.StaticQuotaName.PLUGINS]:0,[H.StaticQuotaName.USERS]:0,[H.StaticQuotaName.CREATORS]:0,[H.StaticQuotaName.USER_GROUPS]:0,[H.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[lt()]:vr()}}),go=()=>{let e={_id:Rr(),quotaReset:$u(),...Ma(),apps:{}};return Ga(e),e},vr=()=>({[H.MonthlyQuotaName.QUERIES]:0,[H.MonthlyQuotaName.AUTOMATIONS]:0,[H.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,[H.MonthlyQuotaName.ACTIONS]:0,triggers:{}}),Ga=e=>{let t=lt();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=vr()),e.monthly.current=e.monthly[t]},Fa=(e,t)=>{if(!(!t||!e))switch(e){case H.MonthlyQuotaName.AUTOMATIONS:return H.BreakdownQuotaName.AUTOMATIONS;case H.MonthlyQuotaName.QUERIES:return(0,Ba.isTableIdOrExternalTableId)(t)?H.BreakdownQuotaName.ROW_QUERIES:(0,Ba.isDatasourceOrDatasourcePlusId)(t)?H.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}};var Ku=fe.Duration.fromSeconds(60).toMs(),{Writethrough:Vu}=fe.cache.writethrough;function jI(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 Wa=()=>fe.tenancy.isSelfHostUsingCloud()?new Vu(fe.tenancy.getSelfHostCloudDB(),Ku):new Vu(fe.tenancy.getGlobalDB(),Ku);async function yo(e=0){let r=Wa(),a=Rr(),n=await r.tryGet(a);n&&n._rev&&await r.remove(a,n._rev).catch(async o=>{if(e<1)return await yo(e+1);throw o})}var Tt=async()=>{let e=Wa(),t=await e.tryGet(Rr());if(!t){t=go();let{rev:r}=await e.put(t);t._rev=r}return Ga(t),mo(t),jI(t)},Hu=async(e,t,r)=>Ao({name:t,type:r,values:{total:e}}),zu=async(e,t,r)=>{let a=Wa(),n=await Tt(),o=Object.values(e).reduce((i,c)=>i+c,0);for(let[i,c]of Object.entries(e))n=Ju(n,t,r,{total:o,app:c},{appId:i});let s=await a.put(n);return n._rev=s.rev,n},QI=(e,t,r,a)=>{let n=Fa(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},ho=(e,t,r,a={},n)=>{let o;try{o=fe.db.getProdWorkspaceID(a?.appId||fe.context.getWorkspaceId())}catch{}if(!o||!n.app||!ue.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[o]||(e.apps={...e.apps,[o]:Ma()});let s=e.apps[o];switch(r){case ue.QuotaUsageType.STATIC:s.usageQuota[t]=n.app;break;case ue.QuotaUsageType.MONTHLY:{let i=lt(),c=t,f=s.monthly[i];f||(s.monthly[i]=vr(),f=s.monthly[i]),f[c]=n.app,ue.BREAKDOWN_QUOTA_NAMES.includes(c)&&a?.id&&(f=QI(f,c,a.id,n));break}}return e},Yu=(e,t,r,a)=>{if(!ue.APP_QUOTA_NAMES.includes(r))return{};let n;try{n=fe.db.getProdWorkspaceID(fe.context.getWorkspaceId())}catch{}if(!n||!e.apps||!e.apps[n])return{app:0};let o=e.apps[n];switch(t){case ue.QuotaUsageType.STATIC:if(o.usageQuota?.[r])return{app:o.usageQuota[r]};break;case ue.QuotaUsageType.MONTHLY:{let s=lt(),i=r;if(!o.monthly?.[s]?.[i])break;let c=o.monthly[s],f=c[i],m,g=Fa(i,a);return g&&a&&c.breakdown?.[g]&&(m=c.breakdown[g]?.values[a]),{app:f,breakdown:m||0}}}return{app:0}},$I=(e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},KI=(e,t,r,a)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),a&&(r.monthly[t].triggers[e]=a)},Ju=(e,t,r,a,n={})=>{if(r===ue.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=a.total,$I(t,e,a.triggers);else if(r===ue.QuotaUsageType.MONTHLY){t=t;let o=lt();e.monthly[o][t]=a.total,KI(t,o,e,a.triggers)}else throw new Error(`Invalid usage type: ${r}`);return ho(e,t,r,n,a)},Ao=async e=>{let t=Array.isArray(e)?e:[e],r=Wa(),a=await Tt();for(let o of t)a=Ju(a,o.name,o.type,o.values,o.opts);let n=await r.put(a,0);return a._rev=n.rev,a},Xu=async(e,t,r)=>{let a=await Tt(),n=0,o={};switch(e){case ue.QuotaUsageType.STATIC:if(a.usageQuota[t]){let s=t;n=a.usageQuota[s],o=Yu(a,e,t,r)}break;case ue.QuotaUsageType.MONTHLY:{let s=lt(),i=t;a.monthly[s][i]&&(n=a.monthly[s][i],o=Yu(a,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return ue.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 ve={};w(ve,{destroy:()=>HI,get:()=>bo,save:()=>YI});var dt=require("@budibase/backend-core"),VI=()=>({_id:dt.StaticDatabases.GLOBAL.docs.licenseInfo}),YI=async e=>{let t=await bo();t={...t,...e};let a=await dt.tenancy.getGlobalDB().put(t);return t._rev=a.rev,t},bo=async()=>{let e=dt.tenancy.getGlobalDB();try{return await e.get(dt.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return VI();throw t}},HI=async()=>{let e=dt.tenancy.getGlobalDB(),t=await bo();t&&t._rev&&await e.remove(dt.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)};var B={};w(B,{bulkSave:()=>iS,destroy:()=>uS,fetch:()=>aS,generateUserGroupID:()=>tS,get:()=>nS,getBulk:()=>oS,getByName:()=>Io,getGroupUsers:()=>Qa,getGroupUsersParams:()=>ac,getUserGroupsParams:()=>rc,save:()=>sS});var q=require("@budibase/backend-core");var De=require("@budibase/types"),jt=require("@budibase/backend-core");async function Zu(){let e=jt.sql.designDoc.base("type");e.sql.tables={[De.AUDIT_LOG_TYPE]:{fields:{appId:De.SQLiteType.TEXT,event:De.SQLiteType.TEXT,userId:De.SQLiteType.TEXT,timestamp:De.SQLiteType.TEXT,metadata:De.SQLiteType.TEXT,name:De.SQLiteType.TEXT,type:De.SQLiteType.TEXT,fallback:De.SQLiteType.TEXT}}};let t=jt.context.getAuditLogsDB(),r;try{r=await t.get(jt.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(a){if(a.status===404)r=e;else throw a}await t.put(r)}var ja=require("@budibase/backend-core"),{ViewName:zI,SEPARATOR:JI,DocumentType:XI,createView:ZI}=ja.db,eS=XI.USER+JI;async function ec(){let e=ja.tenancy.getGlobalDB(),t=`function(doc) {
4
4
  if (doc._id.startsWith("${eS}") && 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 ZI(e,t,zI.USER_BY_GROUP)}var tc=`${q.DocumentType.GROUP}${q.SEPARATOR}`,xr=async()=>(await q.db.getAllWorkspaces({dev:!0,efficient:!0,idsOnly:!0})).map(t=>q.db.getProdWorkspaceID(t));function rc(e,t={}){e||(e="");let r=e?.startsWith(q.DocumentType.GROUP)?"":tc;return{...t,startkey:`${r}${e}`,endkey:`${r}${e}${q.UNICODE_MAX}`}}function ac(e,t={}){e||(e="");let{emailSearch:r,bookmark:a,...n}=t;return r?{...n,startkey:`e_${e}${a||r}`,endkey:`e_${e}${r}${q.UNICODE_MAX}`}:{...t,startkey:`g_${e}`,endkey:`g_${e}${q.UNICODE_MAX}`,startkey_docid:a}}function tS(){return`${tc}${q.utils.newid()}`}async function Qa(e,t){let r=q.tenancy.getGlobalDB();return(await q.db.queryView(q.db.ViewName.USER_BY_GROUP,ac(e,t),r,ec,{arrayResponse:!0})).map(n=>({_id:n.userId,email:n.email}))||[]}async function Cr(e,t){return e.users=await Qa(e._id),e.roles&&(e.roles=Object.fromEntries(Object.entries(e.roles).filter(([r])=>t.includes(r)))),e}async function rS(e){let r=(await Cr(e,await xr())).users?.map(o=>o._id),a=await q.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 q.users.bulkUpdateGlobalUsers(n)}async function nc(){return(await q.tenancy.getGlobalDB().allDocs(rc(null,{include_docs:!0}))).rows.map(t=>t.doc)}async function aS(){let[e,t]=await Promise.all([nc(),xr()]),r=[];for(let a of e)r.push(Cr(a,t));return await Promise.all(r)}async function nS(e){let t=q.tenancy.getGlobalDB(),[r,a]=await Promise.all([t.get(e),xr()]);return await Cr(r,a)}async function oS(e,t={enriched:!0}){let r=q.tenancy.getGlobalDB(),[a,n]=await Promise.all([r.getMultiple(e,{allowMissing:!0}),xr()]);if(t?.enriched){let o=[];for(let s of a)o.push(Cr(s,n));return await Promise.all(o)}else return a}async function sS(e){return await q.tenancy.getGlobalDB().put(e)}async function iS(e){return await q.tenancy.getGlobalDB().bulkDocs(e)}async function uS(e,t){let r=q.tenancy.getGlobalDB(),a=await r.get(e),n=await r.remove(e,t);return await rS(a),n}async function Io(e){let t=e.toLowerCase(),[r,a]=await Promise.all([nc(),xr()]),n=r.find(o=>o.name.toLowerCase()===t);if(n)return await Cr(n,a)}var _e={};w(_e,{deleteAppBackupMetadata:()=>SS,fetchAppBackups:()=>AS,generateAppBackupID:()=>Ac,getAppBackupMetadata:()=>wS,oldestBackupDate:()=>yc,storeAppBackupMetadata:()=>bS,updateAppBackupMetadata:()=>IS});var W=require("@budibase/backend-core"),gc=require("@budibase/types");var Qr={};w(Qr,{GENERIC_PAGE_SIZE:()=>$e,auditLogs:()=>Qt,licenses:()=>Ae,quotas:()=>et,versions:()=>jr});var Ae={};w(Ae,{CLOUD_FREE_LICENSE:()=>pS,SELF_FREE_LICENSE:()=>So,UNLIMITED:()=>F,UNLIMITED_LICENSE:()=>lS});var ft=require("@budibase/types");var et={};w(et,{UNLIMITED:()=>cS,actions:()=>kr,appBackupRetentionDays:()=>Fr,apps:()=>Lr,automationLogRetentionDays:()=>Gr,automations:()=>Br,budibaseAICredits:()=>Mr,creators:()=>Ur,customAIConfigurations:()=>Wr,plugins:()=>Dr,queries:()=>Nr,rows:()=>Or,userGroups:()=>qr,users:()=>Pr});var oe=require("@budibase/types"),cS=-1,Or=e=>({[oe.StaticQuotaName.ROWS]:{name:"Rows",value:e,triggers:[90,100]}}),Lr=e=>({[oe.StaticQuotaName.APPS]:{name:"Workspaces",value:e,triggers:[100]}}),Pr=e=>({[oe.StaticQuotaName.USERS]:{name:"Users",value:e,triggers:[80,100]}}),Ur=e=>({[oe.StaticQuotaName.CREATORS]:{name:"Creators",value:e,triggers:[]}}),qr=e=>({[oe.StaticQuotaName.USER_GROUPS]:{name:"User Groups",value:e,triggers:[80,100]}}),Dr=e=>({[oe.StaticQuotaName.PLUGINS]:{name:"Plugins",value:e,triggers:[90,100]}}),Nr=e=>({[oe.MonthlyQuotaName.QUERIES]:{name:"Queries",value:e,triggers:[]}}),Br=e=>({[oe.MonthlyQuotaName.AUTOMATIONS]:{name:"Automations",value:e,triggers:[80,90,100]}}),Mr=e=>({[oe.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:{name:"Budibase AI Credits",value:e,triggers:[80,90,100]}}),kr=e=>({[oe.MonthlyQuotaName.ACTIONS]:{name:"Actions",value:e,triggers:[80,90,100]}}),Gr=e=>({[oe.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS]:{name:"Automation Logs",value:e,triggers:[]}}),Fr=e=>({[oe.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS]:{name:"App Backups",value:e,triggers:[]}}),Wr=e=>({[oe.StaticQuotaName.AI_CUSTOM_CONFIGS]:{name:"Custom AI Configuration",value:e,triggers:[]}});var F=-1,pS={features:[],quotas:{usage:{monthly:{...Nr(F),...Br(200),...Mr(5e4),...kr(F)},static:{...Lr(F),...Or(2e3),...Pr(5),...Ur(5),...qr(0),...Dr(10),...Wr(0)}},constant:{...Gr(1),...Fr(0)}},plan:{type:ft.PlanType.FREE,usesInvoicing:!1,model:ft.PlanModel.PER_USER}},So={features:[],quotas:{usage:{monthly:{...Nr(F),...Br(F),...Mr(5e4),...kr(F)},static:{...Or(F),...Lr(F),...Pr(20),...Ur(F),...qr(0),...Dr(10),...Wr(0)}},constant:{...Gr(1),...Fr(0)}},plan:{type:ft.PlanType.FREE,usesInvoicing:!1,model:ft.PlanModel.PER_USER}},lS={features:[],quotas:{usage:{monthly:{...Nr(F),...Br(F),...Mr(F),...kr(F)},static:{...Lr(F),...Or(F),...Pr(F),...Ur(F),...qr(F),...Dr(F),...Wr(F)}},constant:{...Gr(F),...Fr(F)}},plan:{type:ft.PlanType.FREE,usesInvoicing:!1,model:ft.PlanModel.PER_USER}};var jr={};w(jr,{getLicenseVersion:()=>dS,getProVersion:()=>sc});var Rt=require("@budibase/backend-core"),$a=P(require("fs")),oc=P(require("path")),dS=()=>{if(Rt.env.isDev()){let e="dev-version.txt",t=oc.default.join(Rt.objectStore.budibaseTempDir(),e);if($a.default.existsSync(t))return $a.default.readFileSync(t,"utf8");{let r=Rt.utils.newid();return $a.default.writeFileSync(t,r),r}}else return sc()},sc=()=>{let e=Rt.env.VERSION;if(!e)throw new Error("No budibase pro version was specified");return e};var Qt={};w(Qt,{searchTable:()=>fS});var vt=require("@budibase/types"),ic=require("@budibase/backend-core");function fS(){return{type:"table",sourceType:vt.TableSourceType.INTERNAL,name:vt.AUDIT_LOG_TYPE,sourceId:ic.SQS_DATASOURCE_INTERNAL,primary:["_id"],schema:{metadata:{name:"metadata",type:vt.FieldType.JSON},fallback:{name:"fallback",type:vt.FieldType.JSON}}}}var $e=9;function $r(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 uc=require("@budibase/types");var mS=new Date(864e13).toISOString(),gS=1e3*60*60*24;async function Ka(e){let r=(await Ne.getCachedLicense()).quotas?.[uc.QuotaType.CONSTANT]?.[e]?.value||0;return r===Ae.UNLIMITED?new Date(mS).toISOString():new Date(new Date().getTime()-gS*r).toISOString()}var $t=require("@budibase/backend-core"),{ViewName:pc,AutomationViewMode:wo,SEPARATOR:Ve,DocumentType:lc,createView:dc}=$t.db,yS=lc.AUTOMATION_LOG+Ve,cc=lc.APP_BACKUP+Ve;async function fc(){let e=$t.context.getProdWorkspaceDB(),t=`function(doc) {
10
+ }`;await ZI(e,t,zI.USER_BY_GROUP)}var tc=`${q.DocumentType.GROUP}${q.SEPARATOR}`,xr=async()=>(await q.db.getAllWorkspaces({dev:!0,efficient:!0,idsOnly:!0})).map(t=>q.db.getProdWorkspaceID(t));function rc(e,t={}){e||(e="");let r=e?.startsWith(q.DocumentType.GROUP)?"":tc;return{...t,startkey:`${r}${e}`,endkey:`${r}${e}${q.UNICODE_MAX}`}}function ac(e,t={}){e||(e="");let{emailSearch:r,bookmark:a,...n}=t;return r?{...n,startkey:`e_${e}${a||r}`,endkey:`e_${e}${r}${q.UNICODE_MAX}`}:{...t,startkey:`g_${e}`,endkey:`g_${e}${q.UNICODE_MAX}`,startkey_docid:a}}function tS(){return`${tc}${q.utils.newid()}`}async function Qa(e,t){let r=q.tenancy.getGlobalDB();return(await q.db.queryView(q.db.ViewName.USER_BY_GROUP,ac(e,t),r,ec,{arrayResponse:!0})).map(n=>({_id:n.userId,email:n.email}))||[]}async function Cr(e,t){return e.users=await Qa(e._id),e.roles&&(e.roles=Object.fromEntries(Object.entries(e.roles).filter(([r])=>t.includes(r)))),e}async function rS(e){let r=(await Cr(e,await xr())).users?.map(o=>o._id),a=await q.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 q.users.bulkUpdateGlobalUsers(n)}async function nc(){return(await q.tenancy.getGlobalDB().allDocs(rc(null,{include_docs:!0}))).rows.map(t=>t.doc)}async function aS(){let[e,t]=await Promise.all([nc(),xr()]),r=[];for(let a of e)r.push(Cr(a,t));return await Promise.all(r)}async function nS(e){let t=q.tenancy.getGlobalDB(),[r,a]=await Promise.all([t.get(e),xr()]);return await Cr(r,a)}async function oS(e,t={enriched:!0}){let r=q.tenancy.getGlobalDB(),[a,n]=await Promise.all([r.getMultiple(e,{allowMissing:!0}),xr()]);if(t?.enriched){let o=[];for(let s of a)o.push(Cr(s,n));return await Promise.all(o)}else return a}async function sS(e){return await q.tenancy.getGlobalDB().put(e)}async function iS(e){return await q.tenancy.getGlobalDB().bulkDocs(e)}async function uS(e,t){let r=q.tenancy.getGlobalDB(),a=await r.get(e),n=await r.remove(e,t);return await rS(a),n}async function Io(e){let t=e.toLowerCase(),[r,a]=await Promise.all([nc(),xr()]),n=r.find(o=>o.name.toLowerCase()===t);if(n)return await Cr(n,a)}var _e={};w(_e,{deleteAppBackupMetadata:()=>SS,fetchAppBackups:()=>AS,generateAppBackupID:()=>Ac,getAppBackupMetadata:()=>wS,oldestBackupDate:()=>yc,storeAppBackupMetadata:()=>bS,updateAppBackupMetadata:()=>IS});var W=require("@budibase/backend-core"),gc=require("@budibase/types");var Qr={};w(Qr,{GENERIC_PAGE_SIZE:()=>$e,auditLogs:()=>Qt,licenses:()=>Ae,quotas:()=>et,versions:()=>jr});var Ae={};w(Ae,{CLOUD_FREE_LICENSE:()=>pS,SELF_FREE_LICENSE:()=>So,UNLIMITED:()=>F,UNLIMITED_LICENSE:()=>lS});var ft=require("@budibase/types");var et={};w(et,{UNLIMITED:()=>cS,actions:()=>Mr,appBackupRetentionDays:()=>Fr,apps:()=>Lr,automationLogRetentionDays:()=>Gr,automations:()=>Nr,budibaseAICredits:()=>Br,creators:()=>Ur,customAIConfigurations:()=>Wr,plugins:()=>Dr,queries:()=>kr,rows:()=>Or,userGroups:()=>qr,users:()=>Pr});var oe=require("@budibase/types"),cS=-1,Or=e=>({[oe.StaticQuotaName.ROWS]:{name:"Rows",value:e,triggers:[90,100]}}),Lr=e=>({[oe.StaticQuotaName.WORKSPACES]:{name:"Workspaces",value:e,triggers:[100]}}),Pr=e=>({[oe.StaticQuotaName.USERS]:{name:"Users",value:e,triggers:[80,100]}}),Ur=e=>({[oe.StaticQuotaName.CREATORS]:{name:"Creators",value:e,triggers:[]}}),qr=e=>({[oe.StaticQuotaName.USER_GROUPS]:{name:"User Groups",value:e,triggers:[80,100]}}),Dr=e=>({[oe.StaticQuotaName.PLUGINS]:{name:"Plugins",value:e,triggers:[90,100]}}),kr=e=>({[oe.MonthlyQuotaName.QUERIES]:{name:"Queries",value:e,triggers:[]}}),Nr=e=>({[oe.MonthlyQuotaName.AUTOMATIONS]:{name:"Automations",value:e,triggers:[80,90,100]}}),Br=e=>({[oe.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:{name:"Budibase AI Credits",value:e,triggers:[80,90,100]}}),Mr=e=>({[oe.MonthlyQuotaName.ACTIONS]:{name:"Actions",value:e,triggers:[80,90,100]}}),Gr=e=>({[oe.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS]:{name:"Automation Logs",value:e,triggers:[]}}),Fr=e=>({[oe.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS]:{name:"App Backups",value:e,triggers:[]}}),Wr=e=>({[oe.StaticQuotaName.AI_CUSTOM_CONFIGS]:{name:"Custom AI Configuration",value:e,triggers:[]}});var F=-1,pS={features:[],quotas:{usage:{monthly:{...kr(F),...Nr(200),...Br(5e4),...Mr(F)},static:{...Lr(F),...Or(2e3),...Pr(5),...Ur(5),...qr(0),...Dr(10),...Wr(0)}},constant:{...Gr(1),...Fr(0)}},plan:{type:ft.PlanType.FREE,usesInvoicing:!1,model:ft.PlanModel.PER_USER}},So={features:[],quotas:{usage:{monthly:{...kr(F),...Nr(F),...Br(5e4),...Mr(F)},static:{...Or(F),...Lr(F),...Pr(20),...Ur(F),...qr(0),...Dr(10),...Wr(0)}},constant:{...Gr(1),...Fr(0)}},plan:{type:ft.PlanType.FREE,usesInvoicing:!1,model:ft.PlanModel.PER_USER}},lS={features:[],quotas:{usage:{monthly:{...kr(F),...Nr(F),...Br(F),...Mr(F)},static:{...Lr(F),...Or(F),...Pr(F),...Ur(F),...qr(F),...Dr(F),...Wr(F)}},constant:{...Gr(F),...Fr(F)}},plan:{type:ft.PlanType.FREE,usesInvoicing:!1,model:ft.PlanModel.PER_USER}};var jr={};w(jr,{getLicenseVersion:()=>dS,getProVersion:()=>sc});var Rt=require("@budibase/backend-core"),$a=P(require("fs")),oc=P(require("path")),dS=()=>{if(Rt.env.isDev()){let e="dev-version.txt",t=oc.default.join(Rt.objectStore.budibaseTempDir(),e);if($a.default.existsSync(t))return $a.default.readFileSync(t,"utf8");{let r=Rt.utils.newid();return $a.default.writeFileSync(t,r),r}}else return sc()},sc=()=>{let e=Rt.env.VERSION;if(!e)throw new Error("No budibase pro version was specified");return e};var Qt={};w(Qt,{searchTable:()=>fS});var vt=require("@budibase/types"),ic=require("@budibase/backend-core");function fS(){return{type:"table",sourceType:vt.TableSourceType.INTERNAL,name:vt.AUDIT_LOG_TYPE,sourceId:ic.SQS_DATASOURCE_INTERNAL,primary:["_id"],schema:{metadata:{name:"metadata",type:vt.FieldType.JSON},fallback:{name:"fallback",type:vt.FieldType.JSON}}}}var $e=9;function $r(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 uc=require("@budibase/types");var mS=new Date(864e13).toISOString(),gS=1e3*60*60*24;async function Ka(e){let r=(await ke.getCachedLicense()).quotas?.[uc.QuotaType.CONSTANT]?.[e]?.value||0;return r===Ae.UNLIMITED?new Date(mS).toISOString():new Date(new Date().getTime()-gS*r).toISOString()}var $t=require("@budibase/backend-core"),{ViewName:pc,AutomationViewMode:wo,SEPARATOR:Ve,DocumentType:lc,createView:dc}=$t.db,yS=lc.AUTOMATION_LOG+Ve,cc=lc.APP_BACKUP+Ve;async function fc(){let e=$t.context.getProdWorkspaceDB(),t=`function(doc) {
11
11
  if (doc._id.startsWith("${yS}")) {
12
12
  let autoId = doc.automationId + "${Ve}"
13
13
  let status = doc.status + "${Ve}"
@@ -25,7 +25,7 @@
25
25
  full += doc.type.toLowerCase() + "${Ve}"
26
26
  emit("${cc}" + full + doc.timestamp)
27
27
  }
28
- }`;await dc(e,t,pc.WORKSPACE_BACKUP_BY_TRIGGER)}async function yc(){return Ka(gc.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS)}var To=`${W.db.DocumentType.APP_BACKUP}${W.db.SEPARATOR}`;async function hS(e,t,r={}){let a=await yc(),n=W.db.getProdWorkspaceID(e),o=n,s=n;if(t.trigger&&t.type){let i=`${W.db.SEPARATOR}${t.trigger}`;i+=`${W.db.SEPARATOR}${t.type}`,o+=i,s+=i}return(!t.startDate||t.startDate<a)&&(t.startDate=a),t.startDate&&(s+=`${W.db.SEPARATOR}${t.startDate}`),t.endDate&&(o+=`${W.db.SEPARATOR}${t.endDate}`),{...r,descending:!0,startkey:`${To}${o}${W.db.UNICODE_MAX}`,endkey:`${To}${s}`}}async function hc(e,t){try{let r=W.db.getQueryIndex(W.db.ViewName.WORKSPACE_BACKUP_BY_TRIGGER);return await e.query(r,t)}catch(r){if(r!=null&&r.error==="not_found")return await mc(),hc(e,t);throw r}}function Ac(e,t){return`${To}${e}${W.db.SEPARATOR}${t}`}async function AS(e,t={}){let r=W.tenancy.getGlobalDB(),a,n=t.limit||9,o=await hS(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 hc(r,o);let s=$r(a,{paginate:t.paginate,pageSize:n}),i=[...new Set(s.data.filter(f=>f.createdBy).map(f=>f.createdBy))],c=await W.users.bulkGetGlobalUsersById(i,{cleanup:!0});for(let f of c)for(let m of s.data)f?._id===m.createdBy&&(m.createdBy=f);return s}async function bS(e,t={}){let r=W.tenancy.getGlobalDB(),a=W.db.getProdWorkspaceID(e.appId),n=Ac(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=W.db.getGlobalIDFromUserMetadataID(e.createdBy)),await r.put(o)}async function IS(e,t){let r=W.tenancy.getGlobalDB(),a=await r.get(e);return a.name=t,await r.put(a)}async function SS(e){let t=W.tenancy.getGlobalDB(),r=await t.get(e);await t.remove(r._id,r._rev)}async function wS(e){return await W.tenancy.getGlobalDB().get(e)}var _t={};w(_t,{get:()=>ES,getCacheEnvVarID:()=>Sc,getEnvVarID:()=>Va,update:()=>RS});var Be=require("@budibase/backend-core"),Ic=P(require("lru-cache")),TS=1e3,bc=new Ic.default({max:TS});function Va(){return Be.StaticDatabases.GLOBAL.docs.environmentVariables}function Sc(e){return`${Be.tenancy.getTenantId()}/${Va()}/${e||""}`}async function ES(){let e=Va(),t=Be.tenancy.getGlobalDB(),r,a=!1;try{r=await t.get(e)}catch(i){if(i.status==404)a=!0;else throw i}let n=Sc(r?._rev),o=bc.get(n);if(o)return o;let s;return!a&&r?s={...r,variables:JSON.parse(Be.encryption.decrypt(r.variables,Be.encryption.SecretOption.ENCRYPTION))}:s={_id:e,variables:{}},bc.set(n,s),s}async function RS(e){let t=Va();return await Be.tenancy.getGlobalDB().put({_id:e._id||t,_rev:e._rev||void 0,variables:Be.encryption.encrypt(JSON.stringify(e.variables),Be.encryption.SecretOption.ENCRYPTION)})}var Eo=require("dd-trace"),Ha=new fo(L.env.INTERNAL_ACCOUNT_PORTAL_URL),za=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{}},wc=async e=>{let t,r;if(L.env.SELF_HOSTED){if(t=await ve.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)},Tc=async()=>await Eo.tracer.trace("_getLicense",async()=>await wc(async e=>{let t=await Qe.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 Qe.setUsage(i,Ya.StaticQuotaName.USERS,Ya.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 Ha.post("/api/license",{headers:{...e},body:s});if(i.status===404||i.status===403)return;if(i.status!==200){let c=await za(i);throw new L.HTTPError(`Error getting license: ${c}`,i.status)}return i.json()}catch(i){if(L.env.DISABLE_ACCOUNT_PORTAL)return;throw i}}));L.env.isJest()&&(Tc=jest.fn());var Kt=Tc;async function Ro(e){return await Eo.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 Ha.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 za(r);throw new L.HTTPError(`Error getting license: ${a}`,r.status)}return r.json()})}var vS=e=>wc(async t=>{let r=await Ha.post("/api/license/usage/triggered",{headers:{...t},body:e});if(r.status!==200){let a=await za(r);L.logging.logAlert(`Error triggering quota usage: ${a}`)}}),vo=async e=>{let t=await L.installation.getInstall(),r={installVersion:t.version,installId:t.installId},a=await Ha.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 za(a);throw new L.HTTPError(`Error activating license key: ${n}`,a.status)}return a.json()};var us=require("@budibase/backend-core");var mn={};w(mn,{activateOfflineLicenseToken:()=>px,deleteOfflineLicenseToken:()=>lx,dev:()=>ma,enrichLicense:()=>gf,getIdentifier:()=>ns,getIdentifierBase64:()=>dx,getIdentifierFromBase64:()=>fx,getOfflineLicense:()=>os,getOfflineLicenseToken:()=>df,signing:()=>Yr,verifyExpiry:()=>ff,verifyInstallation:()=>mf});var Yr={};w(Yr,{sign:()=>xS,verifyLicenseToken:()=>Vr});var _o=P(require("jsonwebtoken")),_S=`-----BEGIN PUBLIC KEY-----
28
+ }`;await dc(e,t,pc.WORKSPACE_BACKUP_BY_TRIGGER)}async function yc(){return Ka(gc.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS)}var Eo=`${W.db.DocumentType.APP_BACKUP}${W.db.SEPARATOR}`;async function hS(e,t,r={}){let a=await yc(),n=W.db.getProdWorkspaceID(e),o=n,s=n;if(t.trigger&&t.type){let i=`${W.db.SEPARATOR}${t.trigger}`;i+=`${W.db.SEPARATOR}${t.type}`,o+=i,s+=i}return(!t.startDate||t.startDate<a)&&(t.startDate=a),t.startDate&&(s+=`${W.db.SEPARATOR}${t.startDate}`),t.endDate&&(o+=`${W.db.SEPARATOR}${t.endDate}`),{...r,descending:!0,startkey:`${Eo}${o}${W.db.UNICODE_MAX}`,endkey:`${Eo}${s}`}}async function hc(e,t){try{let r=W.db.getQueryIndex(W.db.ViewName.WORKSPACE_BACKUP_BY_TRIGGER);return await e.query(r,t)}catch(r){if(r!=null&&r.error==="not_found")return await mc(),hc(e,t);throw r}}function Ac(e,t){return`${Eo}${e}${W.db.SEPARATOR}${t}`}async function AS(e,t={}){let r=W.tenancy.getGlobalDB(),a,n=t.limit||9,o=await hS(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 hc(r,o);let s=$r(a,{paginate:t.paginate,pageSize:n}),i=[...new Set(s.data.filter(f=>f.createdBy).map(f=>f.createdBy))],c=await W.users.bulkGetGlobalUsersById(i,{cleanup:!0});for(let f of c)for(let m of s.data)f?._id===m.createdBy&&(m.createdBy=f);return s}async function bS(e,t={}){let r=W.tenancy.getGlobalDB(),a=W.db.getProdWorkspaceID(e.appId),n=Ac(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=W.db.getGlobalIDFromUserMetadataID(e.createdBy)),await r.put(o)}async function IS(e,t){let r=W.tenancy.getGlobalDB(),a=await r.get(e);return a.name=t,await r.put(a)}async function SS(e){let t=W.tenancy.getGlobalDB(),r=await t.get(e);await t.remove(r._id,r._rev)}async function wS(e){return await W.tenancy.getGlobalDB().get(e)}var _t={};w(_t,{get:()=>TS,getCacheEnvVarID:()=>Sc,getEnvVarID:()=>Va,update:()=>RS});var Ne=require("@budibase/backend-core"),Ic=P(require("lru-cache")),ES=1e3,bc=new Ic.default({max:ES});function Va(){return Ne.StaticDatabases.GLOBAL.docs.environmentVariables}function Sc(e){return`${Ne.tenancy.getTenantId()}/${Va()}/${e||""}`}async function TS(){let e=Va(),t=Ne.tenancy.getGlobalDB(),r,a=!1;try{r=await t.get(e)}catch(i){if(i.status==404)a=!0;else throw i}let n=Sc(r?._rev),o=bc.get(n);if(o)return o;let s;return!a&&r?s={...r,variables:JSON.parse(Ne.encryption.decrypt(r.variables,Ne.encryption.SecretOption.ENCRYPTION))}:s={_id:e,variables:{}},bc.set(n,s),s}async function RS(e){let t=Va();return await Ne.tenancy.getGlobalDB().put({_id:e._id||t,_rev:e._rev||void 0,variables:Ne.encryption.encrypt(JSON.stringify(e.variables),Ne.encryption.SecretOption.ENCRYPTION)})}var To=require("dd-trace"),Ha=new fo(L.env.INTERNAL_ACCOUNT_PORTAL_URL),za=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{}},wc=async e=>{let t,r;if(L.env.SELF_HOSTED){if(t=await ve.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)},Ec=async()=>await To.tracer.trace("_getLicense",async()=>await wc(async e=>{let t=await Qe.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 Qe.setUsage(i,Ya.StaticQuotaName.USERS,Ya.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 Ha.post("/api/license",{headers:{...e},body:s});if(i.status===404||i.status===403)return;if(i.status!==200){let c=await za(i);throw new L.HTTPError(`Error getting license: ${c}`,i.status)}return i.json()}catch(i){if(L.env.DISABLE_ACCOUNT_PORTAL)return;throw i}}));L.env.isJest()&&(Ec=jest.fn());var Kt=Ec;async function Ro(e){return await To.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 Ha.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 za(r);throw new L.HTTPError(`Error getting license: ${a}`,r.status)}return r.json()})}var vS=e=>wc(async t=>{let r=await Ha.post("/api/license/usage/triggered",{headers:{...t},body:e});if(r.status!==200){let a=await za(r);L.logging.logAlert(`Error triggering quota usage: ${a}`)}}),vo=async e=>{let t=await L.installation.getInstall(),r={installVersion:t.version,installId:t.installId},a=await Ha.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 za(a);throw new L.HTTPError(`Error activating license key: ${n}`,a.status)}return a.json()};var us=require("@budibase/backend-core");var mn={};w(mn,{activateOfflineLicenseToken:()=>px,deleteOfflineLicenseToken:()=>lx,dev:()=>ma,enrichLicense:()=>gf,getIdentifier:()=>ns,getIdentifierBase64:()=>dx,getIdentifierFromBase64:()=>fx,getOfflineLicense:()=>os,getOfflineLicenseToken:()=>df,signing:()=>Yr,verifyExpiry:()=>ff,verifyInstallation:()=>mf});var Yr={};w(Yr,{sign:()=>xS,verifyLicenseToken:()=>Vr});var _o=P(require("jsonwebtoken")),_S=`-----BEGIN PUBLIC KEY-----
29
29
  MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvz3jePLCFBXZ19c8Dpkv
30
30
  XtSgOhKFOcvQdo/LV0KJRUzQWDPWuO4ILtBtnqhjtIzZH4CH0qCYBet5L6Qr4CM1
31
31
  l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
@@ -34,19 +34,19 @@ l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
34
34
  d/o3ZWE1TTj1zYwlCLN5qRKr3hU8nC3xEYNEbkB9SfTRaOq9Q7P8WmfLkoCPm3pR
35
35
  mwIDAQAB
36
36
  -----END PUBLIC KEY-----
37
- `;function Vr(e){return _o.default.verify(e,_S,{algorithms:["RS256"]})}function xS(e,t){return _o.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}var Ja={};w(Ja,{getFeatures:()=>xo});var p=require("@budibase/types");var CS={[p.PlanType.FREE]:[...Ae.SELF_FREE_LICENSE.features],[p.PlanType.PREMIUM]:void 0,[p.PlanType.PREMIUM_PLUS]:[p.Feature.APP_BACKUPS,p.Feature.BRANDING,p.Feature.SYNC_AUTOMATIONS,p.Feature.APP_BUILDERS,p.Feature.VIEW_PERMISSIONS,p.Feature.TRIGGER_AUTOMATION_RUN,p.Feature.VIEW_READONLY_COLUMNS,p.Feature.AI_CUSTOM_CONFIGS,p.Feature.PDF,p.Feature.BUDIBASE_AI],[p.PlanType.PREMIUM_PLUS_TRIAL]:[p.Feature.APP_BACKUPS,p.Feature.BRANDING,p.Feature.SYNC_AUTOMATIONS,p.Feature.APP_BUILDERS,p.Feature.VIEW_PERMISSIONS,p.Feature.TRIGGER_AUTOMATION_RUN,p.Feature.VIEW_READONLY_COLUMNS,p.Feature.AI_CUSTOM_CONFIGS,p.Feature.PDF,p.Feature.BUDIBASE_AI],[p.PlanType.PRO]:[p.Feature.USER_GROUPS,p.Feature.APP_BACKUPS],[p.PlanType.TEAM]:[p.Feature.USER_GROUPS,p.Feature.APP_BACKUPS],[p.PlanType.BUSINESS]:[p.Feature.USER_GROUPS,p.Feature.APP_BACKUPS,p.Feature.ENVIRONMENT_VARIABLES,p.Feature.AUDIT_LOGS,p.Feature.BRANDING,p.Feature.SYNC_AUTOMATIONS,p.Feature.APP_BUILDERS,p.Feature.EXPANDED_PUBLIC_API,p.Feature.VIEW_PERMISSIONS,p.Feature.PDF,p.Feature.BUDIBASE_AI],[p.PlanType.ENTERPRISE_BASIC]:[p.Feature.USER_GROUPS,p.Feature.APP_BACKUPS,p.Feature.ENVIRONMENT_VARIABLES,p.Feature.ENFORCEABLE_SSO,p.Feature.AUDIT_LOGS,p.Feature.BRANDING,p.Feature.SYNC_AUTOMATIONS,p.Feature.OFFLINE,p.Feature.APP_BUILDERS,p.Feature.EXPANDED_PUBLIC_API,p.Feature.VIEW_PERMISSIONS,p.Feature.TRIGGER_AUTOMATION_RUN,p.Feature.SCIM,p.Feature.VIEW_READONLY_COLUMNS,p.Feature.AI_CUSTOM_CONFIGS,p.Feature.PWA,p.Feature.CUSTOM_APP_SCRIPTS,p.Feature.PDF,p.Feature.BUDIBASE_AI,p.Feature.RECAPTCHA,p.Feature.PKCE_OIDC],[p.PlanType.ENTERPRISE_BASIC_TRIAL]:[p.Feature.USER_GROUPS,p.Feature.APP_BACKUPS,p.Feature.ENVIRONMENT_VARIABLES,p.Feature.ENFORCEABLE_SSO,p.Feature.BRANDING,p.Feature.SYNC_AUTOMATIONS,p.Feature.APP_BUILDERS,p.Feature.EXPANDED_PUBLIC_API,p.Feature.VIEW_PERMISSIONS,p.Feature.TRIGGER_AUTOMATION_RUN,p.Feature.SCIM,p.Feature.VIEW_READONLY_COLUMNS,p.Feature.AI_CUSTOM_CONFIGS,p.Feature.PWA,p.Feature.CUSTOM_APP_SCRIPTS,p.Feature.PDF,p.Feature.BUDIBASE_AI,p.Feature.RECAPTCHA,p.Feature.PKCE_OIDC],[p.PlanType.ENTERPRISE]:[p.Feature.USER_GROUPS,p.Feature.APP_BACKUPS,p.Feature.ENVIRONMENT_VARIABLES,p.Feature.ENFORCEABLE_SSO,p.Feature.AUDIT_LOGS,p.Feature.BRANDING,p.Feature.SYNC_AUTOMATIONS,p.Feature.OFFLINE,p.Feature.APP_BUILDERS,p.Feature.EXPANDED_PUBLIC_API,p.Feature.VIEW_PERMISSIONS,p.Feature.TRIGGER_AUTOMATION_RUN,p.Feature.SCIM,p.Feature.VIEW_READONLY_COLUMNS,p.Feature.AI_CUSTOM_CONFIGS,p.Feature.PWA,p.Feature.CUSTOM_APP_SCRIPTS,p.Feature.PDF,p.Feature.BUDIBASE_AI,p.Feature.RECAPTCHA,p.Feature.PKCE_OIDC]},OS={[p.PlanType.FREE]:[...Ae.CLOUD_FREE_LICENSE.features],[p.PlanType.PREMIUM]:[p.Feature.APP_BACKUPS,p.Feature.BRANDING,p.Feature.APP_BUILDERS,p.Feature.VIEW_PERMISSIONS,p.Feature.PDF],[p.PlanType.PREMIUM_PLUS]:[p.Feature.APP_BACKUPS,p.Feature.BRANDING,p.Feature.SYNC_AUTOMATIONS,p.Feature.APP_BUILDERS,p.Feature.VIEW_PERMISSIONS,p.Feature.TRIGGER_AUTOMATION_RUN,p.Feature.VIEW_READONLY_COLUMNS,p.Feature.BUDIBASE_AI,p.Feature.PDF],[p.PlanType.PREMIUM_PLUS_TRIAL]:[p.Feature.APP_BACKUPS,p.Feature.BRANDING,p.Feature.SYNC_AUTOMATIONS,p.Feature.APP_BUILDERS,p.Feature.VIEW_PERMISSIONS,p.Feature.TRIGGER_AUTOMATION_RUN,p.Feature.VIEW_READONLY_COLUMNS,p.Feature.BUDIBASE_AI,p.Feature.PDF],[p.PlanType.PRO]:[p.Feature.USER_GROUPS,p.Feature.APP_BACKUPS,p.Feature.BRANDING],[p.PlanType.TEAM]:[p.Feature.USER_GROUPS,p.Feature.APP_BACKUPS,p.Feature.BRANDING],[p.PlanType.BUSINESS]:[p.Feature.USER_GROUPS,p.Feature.APP_BACKUPS,p.Feature.ENVIRONMENT_VARIABLES,p.Feature.AUDIT_LOGS,p.Feature.BRANDING,p.Feature.SYNC_AUTOMATIONS,p.Feature.APP_BUILDERS,p.Feature.EXPANDED_PUBLIC_API,p.Feature.VIEW_PERMISSIONS,p.Feature.BUDIBASE_AI,p.Feature.PDF],[p.PlanType.ENTERPRISE_BASIC]:[p.Feature.USER_GROUPS,p.Feature.APP_BACKUPS,p.Feature.ENVIRONMENT_VARIABLES,p.Feature.ENFORCEABLE_SSO,p.Feature.AUDIT_LOGS,p.Feature.BRANDING,p.Feature.SYNC_AUTOMATIONS,p.Feature.OFFLINE,p.Feature.APP_BUILDERS,p.Feature.EXPANDED_PUBLIC_API,p.Feature.VIEW_PERMISSIONS,p.Feature.TRIGGER_AUTOMATION_RUN,p.Feature.SCIM,p.Feature.VIEW_READONLY_COLUMNS,p.Feature.AI_CUSTOM_CONFIGS,p.Feature.BUDIBASE_AI,p.Feature.PWA,p.Feature.CUSTOM_APP_SCRIPTS,p.Feature.PDF,p.Feature.RECAPTCHA,p.Feature.PKCE_OIDC],[p.PlanType.ENTERPRISE_BASIC_TRIAL]:[p.Feature.USER_GROUPS,p.Feature.APP_BACKUPS,p.Feature.ENVIRONMENT_VARIABLES,p.Feature.ENFORCEABLE_SSO,p.Feature.BRANDING,p.Feature.SYNC_AUTOMATIONS,p.Feature.APP_BUILDERS,p.Feature.EXPANDED_PUBLIC_API,p.Feature.VIEW_PERMISSIONS,p.Feature.TRIGGER_AUTOMATION_RUN,p.Feature.SCIM,p.Feature.VIEW_READONLY_COLUMNS,p.Feature.AI_CUSTOM_CONFIGS,p.Feature.BUDIBASE_AI,p.Feature.PWA,p.Feature.CUSTOM_APP_SCRIPTS,p.Feature.PDF,p.Feature.RECAPTCHA,p.Feature.PKCE_OIDC],[p.PlanType.ENTERPRISE]:[p.Feature.USER_GROUPS,p.Feature.APP_BACKUPS,p.Feature.ENVIRONMENT_VARIABLES,p.Feature.ENFORCEABLE_SSO,p.Feature.AUDIT_LOGS,p.Feature.BRANDING,p.Feature.SYNC_AUTOMATIONS,p.Feature.APP_BUILDERS,p.Feature.EXPANDED_PUBLIC_API,p.Feature.VIEW_PERMISSIONS,p.Feature.TRIGGER_AUTOMATION_RUN,p.Feature.SCIM,p.Feature.VIEW_READONLY_COLUMNS,p.Feature.AI_CUSTOM_CONFIGS,p.Feature.BUDIBASE_AI,p.Feature.PWA,p.Feature.CUSTOM_APP_SCRIPTS,p.Feature.PDF,p.Feature.RECAPTCHA,p.Feature.PKCE_OIDC]};function xo(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 p.Hosting.SELF:r=a(CS);break;case p.Hosting.CLOUD:r=a(OS);break}return r}var Xa={};w(Xa,{UNLIMITED:()=>d,getQuotas:()=>Co});var k=require("@budibase/types");var l=et,Ec=Ae,d=-1,Hr=e=>e*1e6,LS={[k.PlanType.FREE]:{...Ec.CLOUD_FREE_LICENSE.quotas},[k.PlanType.PREMIUM]:{usage:{monthly:{...l.queries(d),...l.automations(1e3),...l.budibaseAICredits(0),...l.actions(d)},static:{...l.rows(1e4),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(0),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(7),...l.appBackupRetentionDays(7)}},[k.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...l.queries(d),...l.automations(5e3),...l.budibaseAICredits(Hr(2)),...l.actions(d)},static:{...l.rows(25e3),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(0),...l.plugins(d),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[k.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...l.queries(d),...l.automations(5e3),...l.budibaseAICredits(Hr(2)),...l.actions(d)},static:{...l.rows(25e3),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(0),...l.plugins(d),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[k.PlanType.PRO]:{usage:{monthly:{...l.queries(d),...l.automations(1e3),...l.budibaseAICredits(0),...l.actions(d)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(5),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(7),...l.appBackupRetentionDays(7)}},[k.PlanType.TEAM]:{usage:{monthly:{...l.queries(d),...l.automations(5e3),...l.budibaseAICredits(0),...l.actions(d)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(10),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(90)}},[k.PlanType.BUSINESS]:{usage:{monthly:{...l.queries(d),...l.automations(1e4),...l.budibaseAICredits(0),...l.actions(d)},static:{...l.rows(5e4),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(50),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(365),...l.appBackupRetentionDays(365)}},[k.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(Hr(4)),...l.actions(d)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(d),...l.appBackupRetentionDays(d)}},[k.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(Hr(4)),...l.actions(d)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(15),...l.appBackupRetentionDays(15)}},[k.PlanType.ENTERPRISE]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(Hr(4)),...l.actions(d)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(d),...l.appBackupRetentionDays(d)}}},PS={[k.PlanType.FREE]:{...Ec.SELF_FREE_LICENSE.quotas},[k.PlanType.PREMIUM]:void 0,[k.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0),...l.actions(d)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(0),...l.plugins(d),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[k.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0),...l.actions(d)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(0),...l.plugins(d),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[k.PlanType.PRO]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0),...l.actions(d)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(5),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(7),...l.appBackupRetentionDays(7)}},[k.PlanType.TEAM]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0),...l.actions(d)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(10),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(90)}},[k.PlanType.BUSINESS]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0),...l.actions(d)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(50),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(90),...l.appBackupRetentionDays(365)}},[k.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0),...l.actions(d)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(d),...l.appBackupRetentionDays(d)}},[k.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0),...l.actions(d)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(15),...l.appBackupRetentionDays(15)}},[k.PlanType.ENTERPRISE]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0),...l.actions(d)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(d),...l.appBackupRetentionDays(d)}}};function Co(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 k.Hosting.SELF:r=a(PS);break;case k.Hosting.CLOUD:r=a(LS);break}return JSON.parse(JSON.stringify(r))}var Yt={};w(Yt,{encoding:()=>Vt,workspaceExists:()=>US});var Rc=require("@budibase/backend-core");async function US(e){return(await Rc.db.getAllWorkspaces({all:!0,idsOnly:!0})).includes(e)}var Vt={};w(Vt,{base64ToObject:()=>DS,objectToBase64:()=>qS});function qS(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}function DS(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}var cf=require("@budibase/types"),ir=require("@budibase/backend-core"),pf=P(Fl()),lf=P(as());async function px(e){await ve.save({offlineLicenseToken:e}),await Ct()}async function lx(){await ve.save({offlineLicenseToken:void 0}),await Ct()}async function df(){return(await ve.get()).offlineLicenseToken}async function ns(){let t=(await ir.installation.getInstall()).installId,r=ir.context.getTenantId(),a=await ir.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:a}}async function dx(){let e=await ns();return Vt.objectToBase64(e)}function fx(e){return Vt.base64ToObject(e)}function ff(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 mf(e){let t=await ns();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}function gf(e){let t=e.plan.type,r=cf.Hosting.SELF,a=xo(r,t),n=Co(r,t);return e.features=(0,pf.default)(e.features,a),e.quotas=(0,lf.default)(e.quotas,n),e}async function os(){try{let e=await df();if(e){let t=await Vr(e);return ff(t),await mf(t),gf(t)}}catch(e){console.error("Error retrieving offline license",e)}}var ma={};w(ma,{deleteDevLicense:()=>Ax,getOfflineLicense:()=>yx,writeDevLicenseToDisk:()=>hx});var yf=require("@budibase/backend-core"),is=require("path"),hf=require("os"),Ot=P(require("fs"));var mx=yf.env.isTest()?".budibase-test":".budibase",ss=(0,is.join)((0,hf.tmpdir)(),mx),gx="dev_license.txt",fa=(0,is.join)(ss,gx);if(!Ot.default.existsSync(ss))try{Ot.default.mkdirSync(ss)}catch{}function yx(){try{if(Ot.default.existsSync(fa)){let e=Ot.default.readFileSync(fa,{encoding:"utf-8"});return Vr(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}function hx(e){console.log(`Writing license to: ${fa}`),Ot.default.writeFileSync(fa,e,{encoding:"utf-8"})}function Ax(){Ot.default.rmSync(fa,{force:!0})}var Af=require("dd-trace"),cs=async()=>await Af.tracer.trace("getLicense",async e=>{if(us.env.OFFLINE_MODE)return e.addTags({offline:!0}),os();let t=await Kt();return t||(e.addTags({offlineFallback:!0}),t=ma.getOfflineLicense()),t}),ps=e=>Ro(e),ls=()=>us.env.SELF_HOSTED?Ae.SELF_FREE_LICENSE:Ae.CLOUD_FREE_LICENSE;var fs={};w(fs,{activateLicenseKey:()=>bx,deleteLicenseKey:()=>Ix,getLicenseKey:()=>gn});var ds=P(require("dd-trace"));async function bx(e){await vo(e),await ve.save({licenseKey:e}),await Ct()}async function gn(){return await ds.default.trace("getLicenseKey",async e=>{let t=await ve.get();return e.addTags({licenseKey:t.licenseKey}),t.licenseKey})}async function Ix(){return await ds.default.trace("deleteLicenseKey",async()=>{await ve.save({licenseKey:void 0}),await Ct()})}var Lt=require("@budibase/backend-core"),yn=P(require("dd-trace")),bf=3600,Ct=async()=>{await wf(),await Sf()},If=async(e,t)=>{let{populateLicense:r=cs,populateFreeLicense:a=ls}=t||{};return await yn.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 co(),c=await i.get(s);return n.addTags({tenantId:s,foundInCache:!!c}),c?(n.addTags({foundInCache:!0,refreshedAt:c.refreshedAt,features:c.features,plan:c.plan,quotas:c.quotas}),c):(c=await yn.default.trace("populateLicense",async()=>await r(s)),n.addTags({populatedLicense:!!c}),c||(c=yn.default.trace("populateFreeLicense",()=>a(e,s)),n.addTags({populatedFreeLicense:!!c})),c.refreshedAt=new Date().toISOString(),n.addTags({refreshedAt:c.refreshedAt,features:c.features,plan:c.plan,quotas:c.quotas,expirySeconds:bf}),await i.store(s,c,bf),c)})};Lt.env.isJest()&&(If=jest.fn());var Sf=If,wf=async()=>{let e=Lt.tenancy.getTenantId();await(await co()).delete(e)};async function re(e,t){Array.isArray(e)||(e=[e]),t||(t=await Ne.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}async function hn(e,t){if(!await re(e,t))throw new tt.FeatureDisabledError(`${e} is not currently enabled`,e)}async function ms(e,t){if(!await re(e,t)){let r=e.join(", ");throw new tt.FeatureDisabledError(`${r} are not currently enabled`,r)}}function pe(e){return async(...t)=>(await hn(te.Feature.APP_BACKUPS),e(...t))}async function gs(){return re(te.Feature.APP_BACKUPS)}async function ys(){return re(te.Feature.BRANDING)}async function Tf(){return re(te.Feature.ENFORCEABLE_SSO)}async function wx(){return re(te.Feature.SYNC_AUTOMATIONS)}async function Tx(){return re(te.Feature.TRIGGER_AUTOMATION_RUN)}async function Pt(){return re(te.Feature.APP_BUILDERS)}async function An(){return re(te.Feature.AUDIT_LOGS)}async function hs(){return re(te.Feature.USER_GROUPS)}function Ex(){return re(te.Feature.PWA)}function Rx(){return re(te.Feature.RECAPTCHA)}var vx=()=>re(te.Feature.PKCE_OIDC);async function rt(){return re(te.Feature.EXPANDED_PUBLIC_API)}async function _x(e){if(tt.env.ENABLE_SSO_MAINTENANCE_MODE||!await Tf())return!1;let r;return e?.config?r=e.config:r=await tt.configs.getSettingsConfig(),!!r.isSSOEnforced}var As=async()=>{let e=te.Feature.SCIM,t=await re(e),r=await tt.configs.getSCIMConfig();if(!t||!r?.enabled)throw new tt.FeatureDisabledError(`${e} is not currently enabled`,e);return!0};async function xx(){return re(te.Feature.VIEW_PERMISSIONS)}async function Cx(){return re(te.Feature.VIEW_READONLY_COLUMNS)}var Ox={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 Lx(e){return await ys()?{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}:Ox}var Is={};w(Is,{enrichAIConfig:()=>bs});var Ef=require("@budibase/backend-core"),Px="budibase_ai";async function bs(e){if(Ef.env.SELF_HOSTED)return e;for(let t of Object.values(e.config))if(t.provider==="BudibaseAI")return e;return e.config[Px]={provider:"BudibaseAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-5-mini",name:"Budibase AI"},e}var ze={};w(ze,{addAction:()=>Bx,addApp:()=>Mx,addAutomation:()=>Qx,addGroup:()=>ws,addPlugin:()=>Es,addRow:()=>Gx,addRows:()=>Wx,addUsers:()=>wn,bustCache:()=>yo,decrement:()=>at,decrementMany:()=>ga,getCurrentUsageValues:()=>Xu,getLicensedQuota:()=>vf,getQuotaUsage:()=>Et,increment:()=>Ie,incrementBudibaseAICredits:()=>En,incrementMany:()=>qt,removeApp:()=>kx,removeGroup:()=>Ts,removePlugin:()=>Rs,removeRow:()=>Fx,removeRows:()=>jx,removeUsers:()=>lr,set:()=>Ss,setAllUsage:()=>Ao,setAppUsageValue:()=>ho,setUsage:()=>Hu,setUsagePerApp:()=>zu,updatePluginCount:()=>vs,updateUsage:()=>ur,usageLimitIsExceeded:()=>Nx,utils:()=>_r});var In=require("@budibase/types");var ke=require("@budibase/backend-core"),z=require("@budibase/types"),Ut=require("dd-trace");var Ie=async(e,t,r)=>await Ut.tracer.trace("quotas.increment",async a=>(a.addTags({name:e,type:t}),await Rf({change:1,name:e,type:t,opts:r}))),qt=e=>Ut.tracer.trace("quotas.incrementMany",async()=>Rf(e)),Rf=async e=>await Ut.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 Ut.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]}),at=(e,t,r={})=>ur({usageChange:-1,name:e,type:t,opts:r}),ga=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})))},Ss=async(e,t,r)=>Qe.setUsage(r,e,t),Ux=(e,t,r)=>{if(e==z.QuotaUsageType.STATIC){let a=r.usageQuota.triggers;return a?a[t]||{}:{}}else{let a=Qe.utils.getCurrentMonthString(),n=r.monthly[a].triggers;return n?n[t]||{}:{}}},qx=async(e,t,r,a)=>{try{await ke.locks.doWithLock({type:z.LockType.TRY_ONCE,name:z.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let n={percentage:r,name:t.name};a&&(n.resetDate=a),await mt.triggerQuota(n)})}catch(n){ke.logging.logAlert("Error triggering quota",n)}},Dx=async(e,t,r,a)=>{let n=await Et(),o=e===z.QuotaUsageType.MONTHLY?n.quotaReset:void 0,s=await Ux(e,t,n),i=a.triggers,c=r/a.value*100;c>100&&(c=100);for(let[f,m]of i.entries())if(c>=m&&a.value!==et.UNLIMITED){if(!s[m]){s[m]=new Date().toISOString();let y=i[f+1]||100;(!(c>=y)||c===m)&&await qx(t,a,c,o)}}else s[m]=void 0;return s},ur=async e=>{await Ut.tracer.trace("quotas.updateUsage",async t=>{let r=ke.tenancy.getTenantId(),a=Array.isArray(e)?e:[e];t.addTags({numActions:a.length,tenantId:r});let n,o,s=[],i={},c={},f={},m={};for(let y of a)await Ut.tracer.trace("quotas.updateUsage.action",async I=>{I.addTags({actionName:y.name,actionType:y.type,actionUsageChange:y.usageChange});try{n=ke.context.getWorkspaceId()}catch{}if(z.APP_QUOTA_NAMES.includes(y.name)&&!n)throw new Error("App context required for quota update");try{o=await vf(z.QuotaType.USAGE,y.name,y.type),s.push(o);let{total:_,app:v,breakdown:R}=await Qe.getCurrentUsageValues(y.type,y.name,y.opts?.id);_+=y.usageChange,v!=null&&(v+=y.usageChange),R!=null&&(R+=y.usageChange);let U={};if(y.opts?.dryRun||(U=await Dx(y.type,y.name,_,o),m={...m,[y.name]:U}),o.value!==et.UNLIMITED&&_>o.value&&y.usageChange>0)throw new ke.UsageLimitError(`Licensed ${o.name} of ${o.value} has been exceeded`,o.name);if(_=Math.max(0,_),v&&(v=Math.max(0,v)),R&&(R=Math.max(0,R),f={...f,[y.name]:R}),!y.opts?.dryRun){let qe=y.opts?.valueFn;qe&&(_=await qe(),v=_),i={...i,[y.name]:_},c={...c,[y.name]:v}}}catch(_){throw y.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${y.name}`,_),_}});let g=a.filter(y=>!y.opts?.dryRun).map(y=>({name:y.name,type:y.type,values:{total:i[y.name],app:c[y.name],breakdown:f[y.name],triggers:m[y.name]},opts:{...y.opts,tenantId:r}}));g.length>0&&await Qe.setAllUsage(g)})},vf=async(e,t,r)=>{let a=await Ne.getCachedLicense();if(!a){let n=ke.tenancy.getTenantId();throw new Error("License not found for tenant id "+n)}if(r&&(0,z.isStaticQuota)(e,r,t))return a.quotas[e][r][t];if(r&&(0,z.isMonthlyQuota)(e,r,t))return a.quotas[e][r][t];if((0,z.isConstantQuota)(e,t))return a.quotas[e][t];throw new Error("Invalid quota type")},Nx=async({name:e,type:t,usageChange:r})=>{try{return await ur({usageChange:r,name:e,type:t,opts:{dryRun:!0}}),!1}catch(a){if(a.code===z.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw a}};var Bx=async e=>Ie(In.MonthlyQuotaName.ACTIONS,In.QuotaUsageType.MONTHLY,{fn:e});var _f=require("@budibase/backend-core"),cr=require("@budibase/types");var xf=async()=>{let e=await _f.db.getAllWorkspaces({dev:!0});return e?e.length:0},Mx=async(e,{appId:t}={})=>Ie(cr.StaticQuotaName.APPS,cr.QuotaUsageType.STATIC,{fn:e,valueFn:xf,id:t}),kx=async({appId:e}={})=>at(cr.StaticQuotaName.APPS,cr.QuotaUsageType.STATIC,{valueFn:xf,id:e});var Ye=require("@budibase/types"),Gx=async(e,{tableId:t}={})=>Ie(Ye.StaticQuotaName.ROWS,Ye.QuotaUsageType.STATIC,{fn:e,id:t}),Fx=async({tableId:e}={})=>at(Ye.StaticQuotaName.ROWS,Ye.QuotaUsageType.STATIC,{id:e}),Wx=async(e,t,{tableId:r}={})=>qt({change:e,name:Ye.StaticQuotaName.ROWS,type:Ye.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),jx=async(e,{tableId:t}={})=>ga({change:e,name:Ye.StaticQuotaName.ROWS,type:Ye.QuotaUsageType.STATIC,opts:{id:t}});var Sn=require("@budibase/types"),Qx=async(e,{automationId:t}={})=>Ie(Sn.MonthlyQuotaName.AUTOMATIONS,Sn.QuotaUsageType.MONTHLY,{fn:e,id:t});var pr=require("@budibase/types"),ws=async e=>Ie(pr.StaticQuotaName.USER_GROUPS,pr.QuotaUsageType.STATIC,{fn:e}),Ts=async()=>at(pr.StaticQuotaName.USER_GROUPS,pr.QuotaUsageType.STATIC);var At=require("@budibase/types"),Es=async e=>Ie(At.StaticQuotaName.PLUGINS,At.QuotaUsageType.STATIC,{fn:e}),Rs=async()=>at(At.StaticQuotaName.PLUGINS,At.QuotaUsageType.STATIC),vs=async e=>Ss(At.StaticQuotaName.PLUGINS,At.QuotaUsageType.STATIC,e);var He=require("@budibase/types"),ya=require("@budibase/backend-core");var wn=async(e,t,r)=>{let a=[{change:e,name:He.StaticQuotaName.USERS,type:He.QuotaUsageType.STATIC,opts:{fn:r,valueFn:ya.users.getUserCount}}];t>0&&a.push({change:t,name:He.StaticQuotaName.CREATORS,type:He.QuotaUsageType.STATIC,opts:{valueFn:ya.users.getCreatorCount}});let n=await qt(a);return await Kt(),n},lr=async(e,t)=>{let r=[{change:e,name:He.StaticQuotaName.USERS,type:He.QuotaUsageType.STATIC,opts:{valueFn:ya.users.getUserCount}}];t>0&&r.push({change:t,name:He.StaticQuotaName.CREATORS,type:He.QuotaUsageType.STATIC,opts:{valueFn:ya.users.getCreatorCount}}),await ga(r),await Kt()};var Tn=require("@budibase/types"),En=async e=>qt({change:e,name:Tn.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:Tn.QuotaUsageType.MONTHLY});var nt={};w(nt,{addAppBuilder:()=>Hx,db:()=>Ce,removeAppBuilder:()=>zx});var Aa=require("@budibase/backend-core");var j={};w(j,{addAppBuilder:()=>Os,addUsers:()=>vn,adjustGroupCreatorsQuotas:()=>Yx,cleanupApp:()=>Vx,enrichUserRolesFromGroups:()=>Kx,fetch:()=>ha,get:()=>bt,getBulk:()=>Df,getGroupBuilderAppIds:()=>qf,getGroupRoleId:()=>$x,remove:()=>_s,removeAppBuilder:()=>Ls,removeUsers:()=>xs,save:()=>dr,updateGroupApps:()=>Cs});var x=require("@budibase/backend-core");var Cf=require("@budibase/backend-core"),Rn=class extends Cf.HTTPError{constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function Pf(e,t){try{let r=[];for(let i of e)if(i.roles){let c=i.roles[x.db.getProdWorkspaceID(t)];c&&r.push(c)}let a=await Promise.all(r.map(async i=>({[i]:await x.roles.roleToNumber(i)}))),n,o,s={};a.forEach(i=>{let[c,f]=Object.entries(i)[0];s[c]={roleId:c,roleNum:f}});for(let{roleId:i,roleNum:c}of Object.values(s))(o===void 0||c>o)&&(o=c,n=i);return n}catch(r){throw x.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}async function Uf(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await M.getBulk(e,{enriched:!1}),t}async function qf(e,t){if(!e.userGroups)return[];let r=await Uf(e.userGroups,t?.groups),a=t?.appId?x.db.getProdWorkspaceID(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 $x(e,t,r){if(!e.userGroups)return null;let a=await Uf(e.userGroups,r?.groups),n=x.db.getProdWorkspaceID(t);return e.roles?.[n]?e.roles[n]:(a=a.filter(o=>o?.roles?Object.keys(o.roles).includes(n):!1),await Pf(a,t))}async function Kx(e){if(!e||!e.userGroups)return e;let t=await Df(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.doInWorkspaceContext(n,async()=>{if(e.roles[n])return;let o=await Pf(t,n);o&&(e.roles[n]=o)});let a=await qf(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 bt(e){return await M.get(e)}async function Df(e,t={enriched:!0}){return await M.getBulk(e,t)}async function Of(e){if(await M.getByName(e))throw new Rn(e)}async function Lf(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 Of(e.name),t.push(x.events.group.created(e));else{let o=await M.get(e._id);if(o.name!==e.name&&await Of(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 Lf(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 ws(n);{let o=await n();if(a>0)await wn(0,a);else if(a<0){let s=await Lf(e),i=Math.abs(a)-s;i>0&&await lr(0,i)}return o}}async function _s(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),f=(await Promise.all(i.map(I=>s.get(I._id)))).map(I=>({...I,userGroups:I.userGroups.filter(C=>C!==e)})),g=(await x.userUtils.creatorsInList(f)).filter(I=>I).length,y=i.length-g;y&&(n=()=>lr(0,y))}let o=await M.destroy(e,t);return await x.events.group.deleted(r),await Ts(),await n(),o}async function vn(e,t){let r=await M.get(e),a=await x.users.bulkGetGlobalUsersById(t),n=[];for(let c of a)c.userGroups||(c.userGroups=[]),c.userGroups.includes(e)||n.push(c);if(!n.length)return n;let o=n.map(c=>({...c,userGroups:[...c?.userGroups||[],e]}));if(await x.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes("CREATOR")){let f=(await x.userUtils.creatorsInList(n)).filter(g=>g).length,m=n.length-f;m&&await wn(0,m)}let i=[];for(let c of t)i.push(x.cache.user.invalidateUser(c));return await Promise.all(i),await x.events.group.usersAdded(o.length,r),o}async function xs(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 c=i.userGroups.indexOf(e);i.userGroups.splice(c,1),n.push(i)}if(await x.users.bulkUpdateGlobalUsers(n),Object.values(r.roles||{}).includes("CREATOR")){let c=(await x.userUtils.creatorsInList(n)).filter(m=>m).length,f=n.length-c;f&&await lr(0,f)}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 Cs(e,t){let r=await bt(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 Vx(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 Os(e,t){if(!await Pt())throw new Error("Feature not enabled, please check license");let r=x.db.getProdWorkspaceID(t),a=await bt(e);a.builder??={apps:[]},a.builder.apps.includes(t)||(a.builder.apps.push(r),await dr(a))}async function Ls(e,t){if(!await Pt())throw new Error("Feature not enabled, please check license");let r=x.db.getProdWorkspaceID(t),a=await bt(e);a.builder?.apps.includes(t)&&(a.builder.apps=a.builder.apps.filter(n=>n!==r),await dr(a))}async function Yx(){if(!await hs()){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(m=>e.get(m._id)))).map(m=>({...m,userGroups:m.userGroups.filter(g=>g!==a._id)})),c=(await x.userUtils.creatorsInList(s)).filter(m=>m).length,f=n.length-c;await M.save({...a,roles:{}}),f&&await lr(0,f)}}}Aa.users.UserDB.init(ze,j,Me);var Ce=Aa.users.UserDB;async function Hx(e,t){if(!await Pt())throw new Error("Feature not enabled, please check license");await Aa.users.addAppBuilder(e,t)}async function zx(e,t){if(!await Pt())throw new Error("Feature not enabled, please check license");await Aa.users.removeAppBuilder(e,t)}var Cn={};w(Cn,{logs:()=>Ms});var Ms={};w(Ms,{logSearch:()=>oC,oldestLogDate:()=>Wf,storeLog:()=>sC});var xn=require("@budibase/backend-core"),Ff=require("@budibase/types");var Z=require("@budibase/backend-core"),_n=require("@budibase/types");var Nf=require("@budibase/backend-core");async function Bf(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||Nf.logging.logWarn(`Failed to backoff: ${t}`,r),o}var{SEPARATOR:ot,UNICODE_MAX:Jx,DocumentType:Mf,AutomationViewMode:Ps,ViewName:Xx,getQueryIndex:Zx}=Z.db,eC=new Date(0).toISOString(),tC=100,Us=async()=>Ka(_n.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS);function kf(e,t,{status:r,automationId:a}={},n={}){let o=a?`${a}${ot}`:"",s=r?`${r}${ot}`:"",i;return r&&a?i=`${Ps.ALL}${ot}${s}${o}`:r?i=`${Ps.STATUS}${ot}${s}`:a?i=`${Ps.AUTOMATION}${ot}${o}`:i=`${Mf.AUTOMATION_LOG}${ot}`,{...n,descending:!0,startkey:`${i}${t}${Jx}`,endkey:`${i}${e}`}}function rC(e,t,r){return`${Mf.AUTOMATION_LOG}${ot}${e}${ot}${r}${ot}${t}`}async function qs(e,t,r={docs:!0}){let a=Z.context.getProdWorkspaceDB();await a.exists()||(a=Z.context.getDevWorkspaceDB());let n={status:r.status},o=r?.limit?r.limit:r?.paginate?9+1:void 0,s=kf(e,t,n,{include_docs:r.docs,limit:o});r?.page&&(s.startkey=r.page);let i=await a.allDocs(s);return $r(i,{paginate:r?.paginate,pageSize:9})}async function Ds(e,t,r={}){let a=Z.context.getProdWorkspaceDB();await a.exists()||(a=Z.context.getDevWorkspaceDB());let n;try{let o={automationId:r?.automationId,status:r?.status},s=kf(e,t,o,{include_docs:!0,limit:9+1});r?.page&&(s.startkey=r.page),n=await a.query(Zx(Xx.AUTOMATION_LOGS),s)}catch(o){if(o!=null&&(o.name==="not_found"||o.error==="not_found"))return await fc(),Ds(e,t,r);throw o}return $r(n,{paginate:!0,pageSize:9})}async function Gf(e,t){let r=Z.context.getProdWorkspaceDB(),a=e._id,n=e.name,o=new Date().toISOString(),s=rC(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 Ns(e,{clearing:t}={clearing:!1}){let r=Z.context.getProdWorkspaceDB();await Bf(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 c=i[s].indexOf(n);t&&c!==-1?i[s].splice(c,1):i[s].push(n),i[s].length===0&&delete i[s],a.automationErrors=i}await r.put(a),await Z.cache.workspace.invalidateWorkspaceMetadata(a.appId,a)},"Failed to update app metadata with automation log error")}async function aC(){let e=await Us();try{return await qs(eC,e,{docs:!1,paginate:!1,limit:tC})}catch{return{data:[],hasNextPage:!1}}}async function Bs(){let e=Z.context.getProdWorkspaceDB();try{let t=await aC();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]===_n.AutomationStatus.ERROR}).map(n=>n.id);await e.bulkDocs(r),a.length&&await Ns(a,{clearing:!0})}catch(t){Z.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}var Wf=Us;async function nC(e,t,r,a){let n,o=new Date().toISOString(),s=await Wf();return(!e||e<s)&&(e=s),r||t?n=await Ds(e,o,{automationId:r,status:t,page:a}):n=await qs(e,o,{status:t,page:a,docs:!0,paginate:!0}),n}async function oC(e){return await Bs(),await nC(e.startDate,e.status,e.automationId,e.page)}async function sC(e,t){if(!xn.db.isProdWorkspaceID(xn.context.getWorkspaceId()))return;let r=await Gf(e,t);t.status===Ff.AutomationStatus.ERROR&&await Ns([r]),await Bs()}var On={};w(On,{checkPluginQuotas:()=>cC,deletePlugin:()=>uC,storePlugin:()=>iC});var Kf=require("@budibase/types"),J=require("@budibase/backend-core");var jf=P(require("fs")),Qf=require("path");function $f(e,t){return jf.default.readFileSync((0,Qf.join)(e,t),"utf8")}async function iC(metadata,directory,source){let db=J.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=J.objectStore.getPluginS3Dir(name),files=await J.objectStore.uploadDirectory(J.objectStore.ObjectStoreBuckets.PLUGINS,directory,bucketPath),jsFile=files.find(e=>e.name.endsWith(".js")),iconFile=files.find(e=>e.name.endsWith(".svg"));if(!jsFile)throw new Error("Plugin missing .js file.");if(metadata.schema.type===Kf.PluginType.DATASOURCE){let js=$f(directory,jsFile.name);try{eval(js)}catch(e){let t=e?.message?e.message:JSON.stringify(e);throw new Error(`JS invalid: ${t}`)}}let iconFileName=iconFile?iconFile.name:null,pluginId=J.db.generatePluginID(name),rev;try{rev=(await db.get(pluginId))._rev}catch(e){rev=void 0}let doc={_id:pluginId,_rev:rev,...metadata,name,version,hash,description,source};iconFileName&&(doc.iconFileName=iconFileName),source&&(doc={...doc,source});let write=async()=>{let e=await db.put(doc);return await J.events.plugin.imported(doc),{...doc,_rev:e.rev}};return rev?await write():await Es(write)}async function uC(e){let t=J.tenancy.getGlobalDB();try{let r=await t.get(e),a=J.objectStore.getPluginS3Dir(r.name);await J.objectStore.deleteFolder(J.objectStore.ObjectStoreBuckets.PLUGINS,a),await t.remove(e,r._rev),await J.events.plugin.deleted(r),await Rs()}catch(r){let a=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${a}`)}}async function cC(){let e=J.tenancy.getGlobalDB();try{let r=(await e.allDocs(J.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await vs(r)}catch(t){J.logging.logAlert("Unable to retrieve plugins for quota check",t)}}var Je={};w(Je,{fetch:()=>lC,fetchValues:()=>dC,isEncryptionKeyAvailable:()=>pC,isValid:()=>Hf,remove:()=>mC,update:()=>fC});var ba=require("@budibase/types"),Vf=require("@budibase/backend-core");function pC(){return!!Vf.env.ENCRYPTION_KEY}async function lC(){let e=await _t.get();return Object.keys(e.variables)}async function dC(e){let r=(await _t.get()).variables,a={};for(let[n,o]of Object.entries(r))switch(e){case ba.AppEnvironment.DEVELOPMENT:a[n]=o.development;break;case ba.AppEnvironment.PRODUCTION:default:a[n]=o.production;break}return a}async function Yf(e){if(!(await Ke.cache.getCachedLicense()).features.includes(ba.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 fC(e,t){if(Hf(e))await Yf(a=>(a[e]=t,a));else throw new Error("Variable name has characters that are not allowed")}async function mC(e){await Yf(t=>(delete t[e],t))}function Hf(e){return/^[a-zA-Z0-9-_]+$/.test(e)}var It={};w(It,{definitions:()=>RC,download:()=>EC,fetch:()=>TC,write:()=>SC});var me=require("@budibase/backend-core"),Pn=require("@budibase/types");var V=require("@budibase/backend-core"),Ge=require("@budibase/types");var zf=require("memorystream"),Jf=new V.sql.Sql(Ge.SqlClient.SQL_LITE);async function gC(e,t,r){let a={operation:Ge.Operation.READ,table:Qt.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:Ge.SortOrder.DESCENDING,type:Ge.SortType.STRING}}},n=Jf._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 yC(e){return`${V.DocumentType.AUDIT_LOG}${V.SEPARATOR}${e}${V.SEPARATOR}${V.utils.newid()}`}async function Xf(e){e._id||(e._id=yC(e.timestamp)),e.type||(e.type=Ge.AUDIT_LOG_TYPE);try{let r=await V.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){V.logging.logAlert("Failed to write audit log",t)}}async function ks(e,t,r){t||(t=1);let a=V.context.getAuditLogsDB();try{let n=9+1,o=await gC(e,t,n),s=Qt.searchTable(),i=Jf.convertJsonStringColumns(s,await a.sql(o.sql,o.bindings)),c;i.length>n&&(c=i.pop());let f={rows:i,hasNextPage:!!c};return f.hasNextPage&&(f.bookmark=t+1),f}catch(n){if(n.status===404&&!r?.isRetry)return await hC(),await Zu(),await ks(e,t,{isRetry:!0});throw n}}async function hC(){let e=V.context.getAuditLogsDB(),r=(await e.allDocs(V.db.getDocParams(V.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(a=>a.doc).filter(a=>a&&!a.type).map(a=>({...a,type:Ge.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}function Zf(e){let t=V.context.getAuditLogsDB(),r=new zf,a=t.dump(r,{filter:o=>{let s=o;if(!s._id?.startsWith(V.DocumentType.AUDIT_LOG))return!1;let i=!0,c=(f,m)=>{!f||f.length===0||(i=!!(i&&m&&f.includes(m)))};if(c(e.userIds,s.userId),c(e.appIds,s.appId),c(e.events,s.event),(e.startDate||e.endDate)&&(i=i&&s.timestamp>=e.startDate&&s.timestamp<=e.endDate),e.fullSearch){let f=JSON.stringify(o);i=i&&f.includes(e.fullSearch)}return i}}),n=new zf;return r.on("data",o=>{let s=JSON.parse(Buffer.from(o).toString());if(Array.isArray(s.docs)){let i="";for(let c of s.docs)i+=JSON.stringify(c)+`
38
- `;n.write(i)}}),r.on("end",()=>{n.end()}),{promise:a,stream:n}}var Ia=require("@budibase/backend-core"),Sa=require("@budibase/string-templates"),Ln=require("@budibase/types"),bC=Ia.constants.MIN_VALID_DATE.toISOString(),IC=Ia.constants.MAX_VALID_DATE.toISOString();function Gs(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||bC,e.endDate=e.endDate||IC),e}async function em(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(a=>Ia.db.getProdWorkspaceID(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=Gs(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}function Fs(e,t,r){let a={_id:e,status:Ln.AuditLogResourceStatus.DELETED};switch(t){case"app":a.name=r?.appName;break;case"user":a.email=r?.email;break}return a}function Ws(e){let t=(0,Sa.findHBSBlocks)(e);for(let r of t){let a=` "${r}"`;e=e.replace(e.includes(a)?a:` ${r}`,""),e=(0,Sa.processStringSync)(e,{})}return e}function tm(e,t){let r=Ln.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let a=(0,Sa.processStringSync)(r,t);return a.includes('""')&&(a=Ws(r)),a}async function SC(e,t,r){if(!await An()||!me.utils.isAudited(e))return;let a=tm(e,t),n=new Date;r?.timestamp&&(n=new Date(r.timestamp));let o={timestamp:n.toISOString(),event:e,name:a,userId:r?.userId||Pn.AuditLogSystemUser,metadata:{...t,...r?.hostInfo}},s={};try{if(r?.appId){o.appId=me.db.getProdWorkspaceID(r.appId);let i=await me.cache.workspace.getWorkspaceMetadata(r.appId);"name"in i&&(s.appName=i.name)}if(r?.userId){let i=await me.users.getById(r?.userId);s.email=i.email}}catch(i){me.logging.logAlert("Failed to retrieve fallback information for audit log",i)}return o.fallback=s,await Xf(o)}async function wC(e){let t=e.map(i=>i.userId),a=e.filter(i=>i.appId).map(i=>me.db.getDevWorkspaceID(i.appId)),n=await me.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),o=await me.db.getWorkspacesByIDs([...new Set(a)]),s=[];for(let i of e){let c=n.find(g=>g?._id===i.userId),f=o.find(g=>me.db.isSameWorkspaceID(g?.appId,i.appId)),m={event:i.event,timestamp:i.timestamp,name:i.name,metadata:i.metadata,user:c||Fs(i.userId,"user",i.fallback)};i.appId&&(m.app=f||Fs(i.appId,"app",i.fallback)),s.push(m)}return s}async function TC(e){if(!await An())throw new Error("Audit logs not available - license required.");let t=await em(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await ks(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await wC(r.rows)}}function EC(e){return e=Gs(e),Zf(e)}function RC(){let e=Object.entries(Pn.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=Ws(r[1]);return t}var Un={};w(Un,{applications:()=>Vs,roles:()=>$s,users:()=>Qs});var Qs={};w(Qs,{roleCheck:()=>_C});function vC(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 _C(e,t){return await rt()||vC(e,t),e}var $s={};w($s,{assign:()=>xC,unAssign:()=>CC});var wa=require("@budibase/backend-core");async function xC(e,t){if(!await rt())throw new Error("Unable to assign roles - license required.");let r=await Ce.bulkGet(e);for(let a of r){if(t.role&&t.role.roleId){let n=wa.db.getProdWorkspaceID(t.role.appId);a.roles[n]=t.role.roleId}if(t.appBuilder){let n=wa.db.getProdWorkspaceID(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 Ce.bulkUpdate(r)}async function CC(e,t){if(!await rt())throw new Error("Unable to un-assign roles - license required.");let r=await Ce.bulkGet(e);for(let a of r){if(t.role){let n=wa.db.getProdWorkspaceID(t.role?.appId);a.roles[n]===t.role.roleId&&delete a.roles[n]}if(t.appBuilder&&a.builder?.apps){let n=wa.db.getProdWorkspaceID(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 Vs={};w(Vs,{buildExportFn:()=>LC,buildImportFn:()=>OC});var Ks=require("@budibase/backend-core");function OC(e){return async(t,r)=>{await rt()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await Ks.context.doInWorkspaceContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}function LC(e){return async(t,r)=>{await rt()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:a,excludeRows:n}=t.request.body;await Ks.context.doInWorkspaceContext(t.params.appId,async()=>{t.request.body={encryptPassword:a,excludeRows:n},t.query.appId=t.params.appId,await e(t),await r()})}}var ne=require("@budibase/backend-core"),ae=require("@budibase/types"),nm=P(require("fs")),om=require("path");var Ys=require("@budibase/backend-core"),rm;function am(){rm=new Ys.queue.BudibaseQueue(Ys.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}function Dt(){return rm}async function Hs(e,t={}){return _e.storeAppBackupMetadata(e,t)}function sm(e){let t=new Date().toISOString();switch(e){case ae.AppBackupStatus.COMPLETE:case ae.AppBackupStatus.FAILED:return{timestamp:t,finishedAt:t};case ae.AppBackupStatus.STARTED:return{timestamp:t,startedAt:t};case ae.AppBackupStatus.PENDING:return{timestamp:t,createdAt:t}}}async function PC(e,t,r,a){let n=await qn(e);return await _e.storeAppBackupMetadata({...n,...sm(t),contents:r,status:t,type:ae.AppBackupType.BACKUP},{filename:a,docId:e})}async function UC(e,t,r){let a=await qn(e);return await _e.storeAppBackupMetadata({...a,...sm(r),status:r,type:ae.AppBackupType.RESTORE,trigger:ae.AppBackupTrigger.MANUAL},{docId:e,docRev:t})}async function qn(e){return _e.getAppBackupMetadata(e)}async function qC(e,t){return _e.updateAppBackupMetadata(e,t)}async function im(e){let t=await _e.getAppBackupMetadata(e);return t.filename&&await ne.objectStore.deleteFile(ne.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),_e.deleteAppBackupMetadata(e)}async function DC(e){let t=[];for(let r of e)try{await im(r),t.push({backupId:r,success:!0})}catch(a){t.push({backupId:r,success:!1,error:a instanceof Error?a.message:"Unknown error"})}return t}async function NC(e,t){return _e.fetchAppBackups(e,t)}async function um(e){let t=await _e.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let r=await ne.objectStore.getReadStream(ne.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}async function BC(e){let{stream:t}=await um(e),r=(0,om.join)(ne.objectStore.budibaseTempDir(),ne.utils.newid()),a=nm.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 MC(e,t,r={}){let a;try{a=await Hs({appId:e,trigger:t,timestamp:new Date().toISOString(),status:ae.AppBackupStatus.PENDING,type:ae.AppBackupType.BACKUP,...r})}catch(n){if(n.status===409)return;throw n}return await Dt().add({docId:a.id,docRev:a.rev,appId:e,export:{trigger:t,...r}}),await ne.events.backup.appBackupTriggered(e,a.id,ae.AppBackupType.BACKUP,t,r?.name),a.id}async function kC(e,t,r,a){let n=await qn(t),o;try{o=await Hs({appId:e,timestamp:new Date().toISOString(),status:ae.AppBackupStatus.PENDING,type:ae.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}}async function GC(e,t,r){let a=ne.db.getProdWorkspaceID(e);await ne.context.doInWorkspaceContext(a,async()=>{let n=ne.context.getProdWorkspaceDB();if(!await n.exists())return;let s=await n.tryGet(ae.DocumentType.APP_METADATA);s&&(s.backupErrors||(s.backupErrors={}),s.backupErrors[t]||(s.backupErrors[t]=[]),s.backupErrors[t].push(r),await n.put(s),await ne.cache.workspace.invalidateWorkspaceMetadata(s.appId,s))})}var FC={isEnabled:gs,triggerAppRestore:pe(kC),triggerAppBackup:pe(MC),getBackupDownloadStream:pe(um),downloadAppBackup:pe(BC),fetchAppBackups:pe(NC),storeAppBackupMetadata:pe(Hs),updateBackupStatus:pe(PC),updateRestoreStatus:pe(UC),getAppBackup:pe(qn),updateAppBackup:pe(qC),deleteAppBackup:pe(im),deleteAppBackups:pe(DC),trackBackupError:pe(GC)},Oe=FC;var Js={};w(Js,{init:()=>zs});var Q=require("@budibase/backend-core"),Fe=require("@budibase/types"),fr=P(require("fs"));async function zs(e){Dt().process(async t=>{let r=t.data;try{if(r.export)return console.log("Exporting app backup:",r.appId,r.export.trigger),QC(t,e);if(r.import)return console.log("Importing app backup:",r.appId,r.import.backupId),jC(t,e)}catch(a){Q.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,a)}})}async function WC(e){await Q.db.getDB(e,{skip_setup:!0}).destroy()}async function cm(e,t,r,a){let n=Q.db.getDevWorkspaceID(r),o=Q.db.getProdWorkspaceID(r),s=new Date().toISOString(),i=async(c,f)=>{a?.doc?await Oe.updateBackupStatus(a.doc.id,c,f?.contents,f?.filename):await Oe.storeAppBackupMetadata({appId:o,timestamp:s,trigger:e,status:c,name:a?.name,type:Fe.AppBackupType.BACKUP,contents:f?.contents,createdBy:a?.createdBy},{filename:f?.filename})};try{let c=await a.processing.exportAppFn(n,{tar:!0}),f=await a.processing.statsFn(n),m=`${o}/backup-${s}.tar.gz`,g=Q.objectStore.ObjectStoreBuckets.BACKUPS,y=fr.default.createReadStream(c);await Q.objectStore.streamUpload({bucket:g,filename:m,stream:y,extra:{type:"application/gzip",metadata:{name:a?.name,trigger:e,timestamp:s,appId:o}}}),await i(Fe.AppBackupStatus.COMPLETE,{filename:m,contents:f}),fr.default.existsSync(c)&&fr.default.rmSync(c)}catch(c){Q.logging.logAlert("App backup error",c),await i(Fe.AppBackupStatus.FAILED);let f=a?.doc?.id||`backup-${s}`,m=c instanceof Error?c.message:String(c);await Oe.trackBackupError(o,f,`Backup export failed: ${m}`)}}async function jC(e,t){let r=e.data,a=r.appId,n=r.import.backupId,o=r.import.nameForBackup,s=r.import.createdBy,i=Q.tenancy.getTenantIDFromWorkspaceID(a);return Q.tenancy.doInTenant(i,async()=>{let c=Q.db.getDevWorkspaceID(a),f=`${c}_temp_${Date.now()}`,{rev:m}=await Oe.updateRestoreStatus(r.docId,r.docRev,Fe.AppBackupStatus.STARTED);await cm(Fe.AppBackupTrigger.RESTORING,i,a,{processing:t,createdBy:s,name:o});let g=await Oe.downloadAppBackup(n),y=Fe.AppBackupStatus.COMPLETE;try{await t.importAppFn(f,Q.db.getDB(f),{file:{type:"application/gzip",path:g},key:g}),await WC(c),await new Q.db.Replication({source:f,target:c}).replicate()}catch(I){Q.logging.logAlert("App restore error",I),y=Fe.AppBackupStatus.FAILED;let C=I instanceof Error?I.message:String(I);await Oe.trackBackupError(a,n,`Backup restore failed: ${C}`)}finally{try{await Q.db.getDB(f,{skip_setup:!0}).destroy()}catch{}}await Oe.updateRestoreStatus(r.docId,m,y),fr.default.existsSync(g)&&fr.default.rmSync(g,{force:!0})})}async function QC(e,t){let r=e.data,a=r.appId,n=r.export.trigger,o=r.export.name,s=Q.tenancy.getTenantIDFromWorkspaceID(a);await Q.tenancy.doInTenant(s,async()=>{try{let{rev:i}=await Oe.updateBackupStatus(r.docId,Fe.AppBackupStatus.STARTED);return cm(n,s,a,{processing:t,doc:{id:r.docId,rev:i},name:o})}catch(i){Q.logging.logAlert("App backup error",i);let c=i instanceof Error?i.message:String(i);await Oe.trackBackupError(a,r.docId,`Backup export failed: ${c}`)}})}var $C=async e=>{am(),await zs(e.processing)},Se={...Oe,processing:Js,init:$C,getBackupQueue:Dt};var pm=async e=>{e.backups&&await Se.init(e.backups)};var ye={};w(ye,{create:()=>MM,find:()=>BM,get:()=>NM,remove:()=>GM,update:()=>kM});var PA=P($i()),st=require("@budibase/backend-core");var UA=require("@budibase/types");async function NM(e){let t=st.tenancy.getGlobalDB(),r=new st.db.QueryBuilder(t.name,UA.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 BM(e){return await st.users.getById(e)}async function MM(e){let t=await Ce.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new st.HTTPError("User is already synched",409);e={...t,scimInfo:(0,PA.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await Ce.save(e,{requirePassword:!1})}async function kM(e,t){return await Ce.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}async function GM(e){return await Ce.destroy(e)}var br={};w(br,{create:()=>FM});var qA=P($i());var DA=require("@budibase/backend-core");async function FM(e){let t=await Io(e.name),r;if(!t)r=(await j.save(e)).id;else{if(t.scimInfo?.isSync)throw new DA.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,qA.default)(t.scimInfo,e.scimInfo),await j.save(t)}return await j.get(r)}var Bt={};w(Bt,{logRequest:()=>WM,logResponse:()=>jM});var Ki=require("@budibase/backend-core");async function WM(e){Ki.logging.logWarn("SCIM request log",e)}async function jM(e){Ki.logging.logWarn("SCIM response error",e)}var Xi={};w(Xi,{doInScimContext:()=>Yi,feature:()=>$,internalGroupOnly:()=>_a,licenseAuth:()=>MA,licensing:()=>NA,requireSCIM:()=>Hi,scimGroupOnly:()=>va,scimUserOnly:()=>Ra});var St=require("@budibase/backend-core");var Vn=require("@budibase/types"),QM=(e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(St.env.SELF_HOSTED&&St.env.DEFAULT_LICENSE)return t.user.license=So,r();t.user.license=await Ke.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(St.utils.isServingApp(t)||St.utils.isServingBuilder(t)||St.utils.isServingBuilderPreview(t)||St.utils.isPublicApiRequest(t))&&await ze.usageLimitIsExceeded({name:Vn.StaticQuotaName.USERS,type:Vn.QuotaUsageType.STATIC,usageChange:0})}return r()},NA=QM;var $={};w($,{requireFeature:()=>$M,requireFeatures:()=>KM});var $M=e=>async(t,r)=>{await hn(e),await r()},KM=(...e)=>async(t,r)=>{await ms(e),await r()};var Yn=require("@budibase/backend-core");var Yi=async(e,t)=>(Yn.env.DISABLE_SCIM_CALLS||await Bt.logRequest({...e.request.toJSON(),body:e.request.body}),await Yn.context.doInScimContext(async()=>{let r=await t();return await Bt.logResponse({...e.response.toJSON(),body:e.response.body}),r}));var Hi=async(e,t)=>{await As(),await t()};var BA=require("@budibase/backend-core");var Ra=e=>zi(BA.users.getById,e,!0),va=e=>zi(M.get,e,!0),_a=e=>zi(M.get,e,!1);function zi(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 xa=require("@budibase/backend-core");var Ji=require("dd-trace");async function MA(e,t){await Ji.tracer.trace("licenseAuth",async r=>{let a=e.request.headers[xa.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 ps(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"),Ji.tracer.setUser({id:"anonymous",tenantId:n.tenantId}),await xa.context.doInSelfHostTenantUsingCloud(n.tenantId,async()=>{await xa.context.doInLicenseContext(n,async()=>{await t()})})})}var iu={};w(iu,{appBackups:()=>vb,auditLogs:()=>yb,environmentVariables:()=>ib,groups:()=>XA,scim:()=>rI,users:()=>iI});var kA=require("@budibase/backend-core");async function GA(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let a=await bt(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 FA(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 vn(t,r)),a&&(o=await xs(t,a)),e.body={added:n,removed:o}}async function WA(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 Cs(t,{appsToAdd:r,appsToRemove:a})}async function jA(e){e.body={data:await ha()}}async function QA(e){let{groupId:t,rev:r}=e.params;try{await _s(t,r),e.body={message:"Group deleted successfully"}}catch(a){e.throw(a.status,a)}}async function $A(e){try{e.body=await bt(e.params.groupId)}catch(t){e.throw(t.status,t)}}async function KA(e){let{pageSize:t=10,bookmark:r,emailSearch:a}=e.request.query,n=e.params.groupId,o={limit:t+1},s=await Qa(n,{...o,emailSearch:a,bookmark:r}),i=a?s[t]?.email:s[t]?._id,c=!!i;e.body={users:s.slice(0,t),bookmark:i,hasNextPage:c}}async function VA(e){let{groupId:t,appId:r}=e.params;await Os(t,r),e.body={message:"Group app builder access updated."}}async function YA(e){let{groupId:t,appId:r}=e.params;await Ls(t,r),e.body={message:"group app builder access removed."}}async function HA(e){let{groupId:t}=e.params,{csvContent:r}=e.request.body;(r===void 0||r.trim().length===0)&&e.throw(400,"CSV is empty");let a=await kA.csv.jsonFromCsvString(r,{allowSingleColumn:!0});(!a||a.length===0)&&e.throw(400,"CSV file is invalid");let o=Object.keys(a[0]).find(g=>/^(email|e-mail|email address|mail|e_mail)$/i.test(g.trim()));o||e.throw(400,"CSV file must contain an email column");let s=Array.from(new Set(a.map(g=>g[o]).filter(g=>g&&typeof g=="string"&&g.trim().length>0).map(g=>g.trim())));s.length===0&&e.throw(400,"No valid email addresses found in CSV");try{await bt(t)}catch(g){if(g.status===404)e.throw(404,"Group not found");else throw g}let i=[],c=[],f=[],m=await Promise.all(s.map(g=>Ce.getUserByEmail(g)));for(let g of s){let y=m.find(I=>I?.email===g);y?(i.push({_id:y._id,email:y.email}),f.push(y._id)):c.push({email:g,reason:"User not found"})}f.length>0&&await vn(t,f),e.body={added:i,skipped:c}}var zA=P(require("@koa/router")),le=P(require("joi"));var we=require("@budibase/types"),Le=require("@budibase/backend-core"),JA=new zA.default;function YM(){return Le.auth.joiValidator.body(le.default.object({_id:le.default.string().optional(),_rev:le.default.string().optional(),color:le.default.string().required(),icon:le.default.string().required(),name:le.default.string().trim().required().max(50),role:le.default.string().optional(),users:le.default.array().optional(),apps:le.default.array().optional(),roles:le.default.object().optional(),createdAt:le.default.string().optional(),updatedAt:le.default.string().optional()}).required())}JA.post("/api/global/groups",Le.auth.adminOnly,$.requireFeature(we.Feature.USER_GROUPS),YM(),GA).get("/api/global/groups",$.requireFeature(we.Feature.USER_GROUPS),jA).delete("/api/global/groups/:groupId/:rev",$.requireFeature(we.Feature.USER_GROUPS),Le.auth.adminOnly,_a("groupId"),QA).get("/api/global/groups/:groupId",$.requireFeature(we.Feature.USER_GROUPS),Le.auth.builderOrAdmin,$A).get("/api/global/groups/:groupId/users",$.requireFeature(we.Feature.USER_GROUPS),Le.auth.builderOrAdmin,KA).post("/api/global/groups/:groupId/users",Le.auth.adminOnly,$.requireFeature(we.Feature.USER_GROUPS),_a("groupId"),FA).post("/api/global/groups/:groupId/users/bulk",Le.auth.adminOnly,$.requireFeature(we.Feature.USER_GROUPS),_a("groupId"),Le.auth.joiValidator.body(le.default.object({csvContent:le.default.string().required()}).required()),HA).post("/api/global/groups/:groupId/apps",Le.auth.builderOrAdmin,$.requireFeature(we.Feature.USER_GROUPS),WA).post("/api/global/groups/:groupId/app/:appId/builder",Le.auth.builderOrAdmin,$.requireFeatures(we.Feature.USER_GROUPS,we.Feature.APP_BUILDERS),VA).delete("/api/global/groups/:groupId/app/:appId/builder",Le.auth.builderOrAdmin,$.requireFeatures(we.Feature.USER_GROUPS,we.Feature.APP_BUILDERS),YA);var XA=JA;var Zi=require("@budibase/types");var eu=require("@budibase/backend-core");async function ZA(e){e.body={encryptionKeyAvailable:Je.isEncryptionKeyAvailable()}}async function eb(e){e.body={variables:await Je.fetch()}}async function tb(e){let{name:t,production:r,development:a}=e.request.body;await Je.update(t,{production:r,development:a});let n=[Zi.AppEnvironment.PRODUCTION];r!==a&&n.push(Zi.AppEnvironment.DEVELOPMENT),await eu.events.environmentVariable.created(t,n),e.body={message:`Environment variable "${t}" created.`}}async function rb(e){let{production:t,development:r}=e.request.body,a=e.params.varName;await Je.update(a,{production:t,development:r}),e.body={message:`Environment variable "${a}" updated.`}}async function ab(e){let t=e.params.varName;await Je.remove(t),await eu.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}var Mt=require("@budibase/backend-core"),ob=P(require("@koa/router")),Ca=P(require("joi")),sb=new ob.default;function nb(){return Mt.auth.joiValidator.body(Ca.default.object({name:Ca.default.string().optional(),production:Ca.default.string().required(),development:Ca.default.string().required()}))}sb.get("/api/env/variables/status",Mt.auth.builderOrAdmin,ZA).get("/api/env/variables",Mt.auth.builderOrAdmin,eb).post("/api/env/variables",Mt.auth.builderOrAdmin,nb(),tb).patch("/api/env/variables/:varName",Mt.auth.builderOrAdmin,nb(),rb).delete("/api/env/variables/:varName",Mt.auth.builderOrAdmin,ab);var ib=sb;var tu=require("@budibase/backend-core");async function ub(e){let t=e.request.body,r=await It.fetch(t);await tu.events.auditLog.filtered(t),e.body=r}async function cb(e){let t=e.request.body,{stream:r}=It.download(t);await tu.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}async function pb(e){e.body={events:It.definitions()}}var fb=require("@budibase/types"),kt=require("@budibase/backend-core"),mb=P(require("@koa/router")),Pe=P(require("joi"));function lb(){return kt.auth.joiValidator.body(Pe.default.object({userIds:Pe.default.array().items(Pe.default.string()).optional(),appIds:Pe.default.array().items(Pe.default.string()).optional(),events:Pe.default.array().items(Pe.default.string().valid(...Object.values(fb.Event))).optional(),startDate:Pe.default.string().optional().allow(""),endDate:Pe.default.string().optional().allow(""),fullSearch:Pe.default.string().optional().allow(""),bookmark:Pe.default.number()}))}var gb=new mb.default;gb.post("/api/global/auditlogs/search",kt.auth.adminOnly,lb(),ub).get("/api/global/auditlogs/download",kt.auth.adminOnly,kt.middleware.querystringToBody,lb(),cb).get("/api/global/auditlogs/definitions",kt.auth.adminOnly,pb);var yb=gb;var Hn=require("@budibase/backend-core"),ru=require("@budibase/types");async function Gt(e,t){t||e.throw(400,"App ID missing"),await Yt.workspaceExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}async function hb(e){let t=e.params.appId;await Gt(e,t);let r=e.request.body,a=e.user?._id,n=await Se.triggerAppBackup(t,ru.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 Ab(e){let t=e.params.appId;await Gt(e,t);let r=e.params.backupId,a=e.request.body.name,n=await Se.triggerAppRestore(t,r,a,e.user?._id);n||e.throw(500,"Unable to start restore."),await Hn.events.backup.appBackupRestored(n.metadata),e.body={restoredId:n?.restoreId,message:"Restore triggered - process starting."}}async function bb(e){let t=e.params.appId;await Gt(e,t);let r=e.params.backupId;await Se.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}async function Ib(e){let t=Hn.context.getWorkspaceId();await Gt(e,t);let{backupIds:r}=e.request.body;(!Array.isArray(r)||r.length===0)&&e.throw(400,"backupIds must be a non-empty array");let a=await Se.deleteAppBackups(r),n=a.filter(s=>s.success).length,o=a.length-n;e.body={message:`${n} backups deleted successfully${o>0?`, ${o} failed`:""}.`,results:a,successCount:n,failureCount:o}}async function Sb(e){let t=e.params.appId;await Gt(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(ru.AppBackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await Se.fetchAppBackups(t,{paginate:!0,...r})}async function wb(e){let t=e.params.appId;await Gt(e,t);let r=e.params.backupId,a=e.request.body;e.body=await Se.updateAppBackup(r,a.name)}async function Tb(e){let t=e.params.appId;await Gt(e,t);let r=e.params.backupId,{metadata:a,stream:n}=await Se.getBackupDownloadStream(r);e.attachment(`backup-${a.timestamp}.tar.gz`),e.body=n}var Eb=P(require("@koa/router")),Ft=P(require("joi")),zn=require("@budibase/types"),it=require("@budibase/backend-core"),Rb=new Eb.default;function XM(){return it.auth.joiValidator.body(Ft.default.object({trigger:Ft.default.string().valid(...Object.values(zn.AppBackupTrigger)),type:Ft.default.string().valid(...Object.values(zn.AppBackupType)),startDate:Ft.default.date(),endDate:Ft.default.date(),page:Ft.default.string()}))}Rb.post("/api/apps/:appId/backups",it.auth.builderOrAdmin,hb).post("/api/apps/:appId/backups/search",it.auth.builderOrAdmin,XM(),Sb).get("/api/apps/:appId/backups/:backupId/file",it.auth.builderOrAdmin,Tb).patch("/api/apps/:appId/backups/:backupId",it.auth.builderOrAdmin,wb).delete("/api/apps/:appId/backups/:backupId",it.auth.builderOrAdmin,bb).delete("/api/apps/:appId/backups",it.auth.builderOrAdmin,Ib).post("/api/apps/:appId/backups/:backupId/import",it.auth.builderOrAdmin,Ab);var vb=Rb;var tI=P(require("@koa/router"));var Jn=require("scim-patch");var xb=require("@budibase/backend-core");function _b(e,t){let r=e.request.query[t];if(r!==void 0)return+r}var Cb=async e=>{let t=_b(e,"pageSize")??20,r=_b(e,"startIndex"),a;e.request.query.filter&&(a=Y.user.userFilters(e.request.query.filter));let n=await ye.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(Y.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},Ob=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await ye.find(t);e.body=Y.user.toScimUserResponse(r)},Lb=async e=>{let t=Y.user.fromScimUser(e.request.body);try{let r=await ye.create(t);e.body=Y.user.toScimUserResponse(r)}catch(r){throw r instanceof xb.EmailUnavailableError&&e.throw(409,"Email already in use"),r}};function ZM(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 Pb=async e=>{let t=await ye.find(e.params.id);t||e.throw(404);let r=Y.user.toScimUserResponse(t),a=e.request.body;try{(0,Jn.patchBodyValidation)(a)}catch{}if(ZM(a))return au(e);let n;try{n=(0,Jn.scimPatch)(r,a.Operations)}catch{}n||e.throw(500);let o=Y.user.fromScimUser(n);await ye.update(o,{allowChangingEmail:!0}),e.body=Y.user.toScimUserResponse(o)},au=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await ye.remove(t),e.status=204};var Vb=P(Kb()),Yb=require("@budibase/shared-core"),Xn=require("scim-patch");var Zn=require("scim2-parse-filter");function Hb(e,t){for(let r of t.split(","))delete e[r]}var zb=async e=>{let r=(await j.fetch()).filter(o=>o.scimInfo?.isSync).map(Y.group.toScimGroupResponse),{filter:a,excludedAttributes:n}=e.request.query;if(a){let o=(0,Zn.filter)((0,Zn.parse)(a));r=r.filter(o)}n&&r.forEach(o=>{Hb(o,n)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},Jb=async e=>{let t=Y.group.fromScimGroup(e.request.body),r=await br.create(t);e.body=Y.group.toScimGroupResponse(r)},Xb=async e=>{let{id:t}=e.params,r=await j.get(t),a=Y.group.toScimGroupResponse(r),{excludedAttributes:n}=e.request.query;n&&Hb(a,n),e.body=a},Zb=async e=>{let{id:t}=e.params,r=await j.get(t);await j.remove(t,r._rev),e.status=204},eI=async e=>{let{id:t}=e.params,r=await j.get(t),a=Y.group.toScimGroupResponse(r),n=e.request.body;try{(0,Xn.patchBodyValidation)(n)}catch{e.throw(400)}let{true:o,false:s}=(0,Vb.default)(n.Operations,i=>i.path==="members");if(s?.length){let i=(0,Xn.scimPatch)(a,s);i||e.throw(500);let c={...Y.group.fromScimGroup(i),_rev:r._rev};await j.save(c)}if(o?.length){let i=[],c=[];for(let{op:f,value:m}of o)switch(f){case"add":case"Add":for(let g of m)i.push(await ye.find(g.value));break;case"remove":case"Remove":for(let g of m)c.push(await ye.find(g.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:Yb.utils.unreachable(f)}i.length&&await j.addUsers(t,i.map(f=>f._id)),c.length&&await j.removeUsers(t,c.map(f=>f._id))}e.body=Y.group.toScimGroupResponse(await j.get(t))};var Oa=require("@budibase/types"),Te=new tI.default({prefix:"/api/global/scim/v2"});Te.use(Hi);Te.use(Yi);Te.get("/users",Cb);Te.get("/users/:id",Ra("id"),Ob);Te.post("/users",Lb);Te.patch("/users/:id",Ra("id"),Pb);Te.delete("/users/:id",Ra("id"),au);Te.get("/groups",zb);Te.post("/groups",$.requireFeature(Oa.Feature.USER_GROUPS),Jb);Te.get("/groups/:id",$.requireFeature(Oa.Feature.USER_GROUPS),va("id"),Xb);Te.delete("/groups/:id",$.requireFeature(Oa.Feature.USER_GROUPS),va("id"),Zb);Te.patch("/groups/:id",$.requireFeature(Oa.Feature.USER_GROUPS),va("id"),eI);var rI=Te;var oI=P(require("@koa/router"));var nu=require("@budibase/backend-core");async function aI(e){let{userId:t,appId:r}=e.params,a=await nt.db.getUser(t);if(nu.users.isGlobalBuilder(a)){e.body={message:"User already admin - no permissions updated."};return}await nt.addAppBuilder(a,r),e.body={message:`User "${a.email}" app builder access updated.`}}async function nI(e){let{userId:t,appId:r}=e.params,a=await nt.db.getUser(t);if(nu.users.isGlobalBuilder(a)){e.body={message:"User already admin - no permissions removed."};return}await nt.removeAppBuilder(a,r),e.body={message:`User "${a.email}" app builder access removed.`}}var ou=require("@budibase/types"),su=require("@budibase/backend-core"),sI=new oI.default;sI.post("/api/global/users/:userId/app/:appId/builder",su.auth.builderOrAdmin,$.requireFeatures(ou.Feature.APP_BUILDERS),aI).delete("/api/global/users/:userId/app/:appId/builder",su.auth.builderOrAdmin,$.requireFeatures(ou.Feature.APP_BUILDERS),nI);var iI=sI;var Y={};w(Y,{group:()=>cu,user:()=>uu});var uu={};w(uu,{fromScimUser:()=>xk,toScimUserResponse:()=>Rk,userFilters:()=>Ck});var eo=require("@budibase/types"),uI=require("scim2-parse-filter"),cI=require("@budibase/backend-core"),pI=require("@budibase/shared-core"),{unreachable:Ek}=pI.utils,Rk=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===eo.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},vk=e=>!!e?.id;function _k(e){if(cI.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}var xk=e=>{let t=vk(e)?e:void 0,r=_k(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:Ek(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?eo.UserStatus.ACTIVE:eo.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},Ck=e=>{let t={equal:{}},r=(0,uI.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 cu={};w(cu,{fromScimGroup:()=>Pk,toScimGroupResponse:()=>Ok});var Ok=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}))}),Lk=e=>!!e?.id,Pk=e=>{let t=Lk(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 Uu={};w(Uu,{LLM:()=>Xe,LLMRequest:()=>K,TableGeneration:()=>Pu,agentHistoryTitleSystemPrompt:()=>jk,agentSystemPrompt:()=>Wk,aiColumnSchemas:()=>Ou,aiTableResponseToTableSchema:()=>vu,appendAIColumns:()=>_u,classifyText:()=>du,cleanData:()=>fu,extractFileData:()=>Mk,generateAIColumns:()=>Eu,generateCode:()=>Fk,generateCronExpression:()=>mu,generateData:()=>Ru,generateJs:()=>Au,generateSQL:()=>Gk,generateTables:()=>Tu,generationStructure:()=>Cu,getLLM:()=>Ua,getLLMConfig:()=>wu,getLLMOrThrow:()=>SI,normalizeContentType:()=>pu,parseResponseFormat:()=>ro,sanitiseToolName:()=>Uk,searchWeb:()=>hu,sentimentAnalysis:()=>yu,summarizeText:()=>to,tableDataStructuredOutput:()=>Lu,translate:()=>gu});var La=require("@budibase/types");function Uk(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 pu(e){return e?e.includes("/")?e:{[La.SupportedFileType.PDF]:"application/pdf",[La.SupportedFileType.JPG]:"image/jpeg",[La.SupportedFileType.JPEG]:"image/jpeg",[La.SupportedFileType.PNG]:"image/png"}[e.toLowerCase()]||"application/octet-stream":"application/octet-stream"}var io=require("@budibase/types");var Ze=require("@budibase/backend-core"),hI=require("@budibase/types");var ao=P(require("openai"));var wt=require("@budibase/types");var lI=require("@budibase/shared-core");var Tt=P(require("dd-trace"));function lu(e,t){return t.map(r=>e[r]).join(" ")}var Xe=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||"1000")}get model(){return this._model}get apiKey(){return this._apiKey}get maxTokens(){return this._maxTokens}async prompt(t){return await Tt.default.trace("prompt",async()=>{let r=typeof t=="string"?new K().addUserMessage(t):t,{messages:a,tokensUsed:n}=await Tt.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 Tt.default.trace("chat",async()=>await this.chatCompletion(t))}async*chatStream(t){yield*this.chatCompletionStream(t)}async summarizeText(t){return Tt.default.trace("summarizeText",()=>this.prompt(to(t)))}async generateCronExpression(t){return Tt.default.trace("generateCronExpression",()=>this.prompt(mu(t)))}async operation(t,r){return Tt.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:c}=t;switch(a){case wt.AIOperationEnum.SUMMARISE_TEXT:return to(lu(r,o));case wt.AIOperationEnum.CLEAN_DATA:return fu(r[n]);case wt.AIOperationEnum.TRANSLATE:return gu(r[n],s);case wt.AIOperationEnum.CATEGORISE_TEXT:if(!i)throw Error("No categories provided for categorise text operation. Please provide categories.");return du(lu(r,o),i.split(","));case wt.AIOperationEnum.SENTIMENT_ANALYSIS:return yu(r[n]);case wt.AIOperationEnum.PROMPT:return c;case wt.AIOperationEnum.SEARCH_WEB:return hu(lu(r,o));default:throw lI.utils.unreachable(a)}}async generateJs(t,r){return await Tt.default.trace("generateJs",async()=>{let{bindings:a=[],snippets:n=[]}=r||{};return await this.prompt(Au(a,n).addUserMessage(t))})}};var fI=require("@budibase/types"),bu=require("openai/helpers/zod");var mI=(a=>(a.GPT_5_MINI="gpt-5-mini",a.GPT_5="gpt-5",a.GPT_5_NANO="gpt-5-nano",a))(mI||{});function ro(e){if(e)return e==="text"?{type:"text"}:e==="json"?{type:"json_object"}:e}function dI(e){if(!e)return 0;let t=e.prompt_tokens;return e.completion_tokens*3+t}var Ue=class extends Xe{constructor(r){super(r);this.client=this.getClient(r)}getClient(r){if(!r.apiKey)throw new Error("No OpenAI API key found");return new ao.default({apiKey:r.apiKey})}async uploadFile(r,a,n){let o=pu(n);if(fI.ImageContentTypes.includes(o.toLowerCase())){let c;if(Buffer.isBuffer(r))c=r;else{let m=[];for await(let g of r)m.push(new Uint8Array(g));c=Buffer.concat(m)}let f=c.toString("base64");return`data:${o};base64,${f}`}let s=await(0,ao.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_completion_tokens:this._maxTokens,response_format:ro(r.format)};Object.values(mI).includes(this.model)&&(a.verbosity="low",a.reasoning_effort="minimal"),r.tools&&r.tools.length>0&&(a.tool_choice="auto",a.tools=r.tools.map(bu.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){if(i.type!=="function"||!i.function){console.warn(`[OPENAI TOOL WARN] Unsupported tool call type: ${i.type}`);continue}let c=i.function.name,f=r.findTool(c);if(!f)throw new Error(`Tool ${c} not found in prompt tools`);let m=JSON.parse(i.function.arguments);s.push(f.handler(m).then(g=>({role:"tool",tool_call_id:i.id,content:g})).catch(g=>(console.error(`[OPENAI TOOL ERROR] Tool ${c} failed in OpenAI handler:`,g),{role:"tool",tool_call_id:i.id,content:`Error: ${g.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:dI(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:ro(r.format),stream:!0};r.tools&&r.tools.length>0&&(a.tool_choice="auto",a.tools=r.tools.map(bu.zodFunction));try{let n=await this.client.chat.completions.create(a),o=null,s="",i=null;for await(let f of n){let m=f?.choices?.[0]?.delta;if(m){if(m.content&&(s+=m.content,yield{type:"content",content:m.content}),m.tool_calls&&m.tool_calls.length>0){let g=m.tool_calls[0];g.id?(o={id:g.id,name:g.function?.name||"",arguments:g.function?.arguments||""},yield{type:"tool_call_start",toolCall:{id:o.id,name:o.name,arguments:o.arguments}}):o&&g.function?.arguments&&(o.arguments+=g.function.arguments,yield{type:"tool_call_start",toolCall:{id:o.id,name:o.name,arguments:o.arguments}})}f.usage&&(i=f.usage)}}let c=i?dI(i):0;if(o){r.addMessage({role:"assistant",content:"",tool_calls:[{id:o.id,type:"function",function:{name:o.name,arguments:o.arguments}}]});let f=r.findTool(o.name);if(f)try{let m=JSON.parse(o.arguments),g=await f.handler(m);yield{type:"tool_call_result",toolResult:{id:o.id,result:g}},r.addMessage({role:"tool",tool_call_id:o.id,content:g}),yield*this.chatCompletionStream(r);return}catch(m){yield{type:"tool_call_result",toolResult:{id:o.id,result:`Error: ${m.message}`,error:m.message}},r.addMessage({role:"tool",tool_call_id:o.id,content:`Error: ${m.message}`}),yield*this.chatCompletionStream(r);return}else{let m=`Tool '${o.name}' not found`;yield{type:"tool_call_result",toolResult:{id:o.id,result:m,error:m}},r.addMessage({role:"tool",tool_call_id:o.id,content:m}),yield*this.chatCompletionStream(r);return}}s&&r.addMessage({role:"assistant",content:s}),yield{type:"done",messages:r.messages,tokensUsed:c}}catch(n){yield{type:"error",content:n.message}}}};var ee=require("@budibase/backend-core"),gI=require("@budibase/types");var Iu=require("dd-trace"),no=class extends Xe{async prompt(t){let r=await super.prompt(t);return r.tokensUsed&&await En(r.tokensUsed),r}async chat(t){let r=await super.chat(t);return r.tokensUsed&&await En(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 Ue({apiKey:ee.env.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).uploadFile(t,r,a)}async uploadFileSelfHost(t,r,a){let n;if(Buffer.isBuffer(t))n=t;else{let c=[];for await(let f of t)c.push(new Uint8Array(f));n=Buffer.concat(c)}let o=n.toString("base64");if(a&&gI.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 c=await gn();if(!c)throw new Error("No license key found");this._apiKey=c}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 Iu.tracer.trace("chatCompletionCloud",async()=>await new Ue({apiKey:ee.env.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).chatCompletion(t))}async chatCompletionSelfHost(t){return await Iu.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 gn();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 Ue({apiKey:ee.env.OPENAI_API_KEY,model:this.model,max_completion_tokens: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 Pa=require("dd-trace");var Su=P(require("@anthropic-ai/sdk"));function qk(e){if(!e)return 0;let t=e.input_tokens;return e.output_tokens*3+t}var oo=class extends Xe{constructor(r){super(r);this.client=new Su.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:qk(a.usage)}}catch(a){throw a instanceof Su.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 AI=require("zod"),bI=require("openai/helpers/zod");var yI=require("openai"),so=class extends Ue{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 yI.AzureOpenAI({apiKey:t.apiKey,apiVersion:"2024-10-01-preview",baseURL:t.baseUrl})}};var II="gpt-5-mini",Dk={OpenAI:Ue,TogetherAI:Ue,AzureOpenAI:so,Custom:Ue,Anthropic:oo,BudibaseAI:no};async function Nk(){return await Pa.tracer.trace("getAIConfig",async e=>{let t={type:hI.ConfigType.AI,config:{}};if(!Ze.context.isSelfHostUsingCloud()){let a=await Ze.configs.getAIConfig();a&&(t=a)}await bs(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||II,apiKey:r.apiKey,baseUrl:r.baseUrl}})}async function Bk(){return Pa.tracer.trace("getSelfHostOpenAIKeyConfig",e=>{if(!Ze.env.SELF_HOSTED){e.addTags({enabled:!1,reason:"not self host"});return}if(!Ze.env.OPENAI_API_KEY){e.addTags({enabled:!1,reason:"no OPENAI_API_KEY"});return}return e.addTags({enabled:!0}),{provider:"OpenAI",model:II,apiKey:Ze.env.OPENAI_API_KEY}})}async function wu(){return Pa.tracer.trace("getLLMConfig",async()=>await Nk()||await Bk())}async function Ua(e){return await Pa.tracer.trace("getLLM",async t=>{let{model:r,maxTokens:a}=e||{},n=await wu();if(!n){t.addTags({enabled:!1,reason:"no config found"});return}r&&(n.model=r),a&&(n.maxTokens=a);let o=Dk[n.provider];if(!o){t.addTags({enabled:!1,reason:"no provider found",provider:n.provider});return}return new o(n)})}async function SI(){let e=await Ua();if(!e)throw new Ze.HTTPError("No available LLM configurations",500);return e}var K=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 AI.z.ZodType?this.format=(0,bI.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 ut=require("zod");function to(e,t){let r=`Summarize this text:
37
+ `;function Vr(e){return _o.default.verify(e,_S,{algorithms:["RS256"]})}function xS(e,t){return _o.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}var Ja={};w(Ja,{getFeatures:()=>xo});var p=require("@budibase/types");var CS={[p.PlanType.FREE]:[...Ae.SELF_FREE_LICENSE.features],[p.PlanType.PREMIUM]:void 0,[p.PlanType.PREMIUM_PLUS]:[p.Feature.WORKSPACE_BACKUPS,p.Feature.BRANDING,p.Feature.SYNC_AUTOMATIONS,p.Feature.APP_BUILDERS,p.Feature.VIEW_PERMISSIONS,p.Feature.TRIGGER_AUTOMATION_RUN,p.Feature.VIEW_READONLY_COLUMNS,p.Feature.AI_CUSTOM_CONFIGS,p.Feature.PDF,p.Feature.BUDIBASE_AI],[p.PlanType.PREMIUM_PLUS_TRIAL]:[p.Feature.WORKSPACE_BACKUPS,p.Feature.BRANDING,p.Feature.SYNC_AUTOMATIONS,p.Feature.APP_BUILDERS,p.Feature.VIEW_PERMISSIONS,p.Feature.TRIGGER_AUTOMATION_RUN,p.Feature.VIEW_READONLY_COLUMNS,p.Feature.AI_CUSTOM_CONFIGS,p.Feature.PDF,p.Feature.BUDIBASE_AI],[p.PlanType.PRO]:[p.Feature.USER_GROUPS,p.Feature.WORKSPACE_BACKUPS],[p.PlanType.TEAM]:[p.Feature.USER_GROUPS,p.Feature.WORKSPACE_BACKUPS],[p.PlanType.BUSINESS]:[p.Feature.USER_GROUPS,p.Feature.WORKSPACE_BACKUPS,p.Feature.ENVIRONMENT_VARIABLES,p.Feature.AUDIT_LOGS,p.Feature.BRANDING,p.Feature.SYNC_AUTOMATIONS,p.Feature.APP_BUILDERS,p.Feature.EXPANDED_PUBLIC_API,p.Feature.VIEW_PERMISSIONS,p.Feature.PDF,p.Feature.BUDIBASE_AI],[p.PlanType.ENTERPRISE_BASIC]:[p.Feature.USER_GROUPS,p.Feature.WORKSPACE_BACKUPS,p.Feature.ENVIRONMENT_VARIABLES,p.Feature.ENFORCEABLE_SSO,p.Feature.AUDIT_LOGS,p.Feature.BRANDING,p.Feature.SYNC_AUTOMATIONS,p.Feature.OFFLINE,p.Feature.APP_BUILDERS,p.Feature.EXPANDED_PUBLIC_API,p.Feature.VIEW_PERMISSIONS,p.Feature.TRIGGER_AUTOMATION_RUN,p.Feature.SCIM,p.Feature.VIEW_READONLY_COLUMNS,p.Feature.AI_CUSTOM_CONFIGS,p.Feature.PWA,p.Feature.CUSTOM_APP_SCRIPTS,p.Feature.PDF,p.Feature.BUDIBASE_AI,p.Feature.RECAPTCHA,p.Feature.PKCE_OIDC],[p.PlanType.ENTERPRISE_BASIC_TRIAL]:[p.Feature.USER_GROUPS,p.Feature.WORKSPACE_BACKUPS,p.Feature.ENVIRONMENT_VARIABLES,p.Feature.ENFORCEABLE_SSO,p.Feature.BRANDING,p.Feature.SYNC_AUTOMATIONS,p.Feature.APP_BUILDERS,p.Feature.EXPANDED_PUBLIC_API,p.Feature.VIEW_PERMISSIONS,p.Feature.TRIGGER_AUTOMATION_RUN,p.Feature.SCIM,p.Feature.VIEW_READONLY_COLUMNS,p.Feature.AI_CUSTOM_CONFIGS,p.Feature.PWA,p.Feature.CUSTOM_APP_SCRIPTS,p.Feature.PDF,p.Feature.BUDIBASE_AI,p.Feature.RECAPTCHA,p.Feature.PKCE_OIDC],[p.PlanType.ENTERPRISE]:[p.Feature.USER_GROUPS,p.Feature.WORKSPACE_BACKUPS,p.Feature.ENVIRONMENT_VARIABLES,p.Feature.ENFORCEABLE_SSO,p.Feature.AUDIT_LOGS,p.Feature.BRANDING,p.Feature.SYNC_AUTOMATIONS,p.Feature.OFFLINE,p.Feature.APP_BUILDERS,p.Feature.EXPANDED_PUBLIC_API,p.Feature.VIEW_PERMISSIONS,p.Feature.TRIGGER_AUTOMATION_RUN,p.Feature.SCIM,p.Feature.VIEW_READONLY_COLUMNS,p.Feature.AI_CUSTOM_CONFIGS,p.Feature.PWA,p.Feature.CUSTOM_APP_SCRIPTS,p.Feature.PDF,p.Feature.BUDIBASE_AI,p.Feature.RECAPTCHA,p.Feature.PKCE_OIDC]},OS={[p.PlanType.FREE]:[...Ae.CLOUD_FREE_LICENSE.features],[p.PlanType.PREMIUM]:[p.Feature.WORKSPACE_BACKUPS,p.Feature.BRANDING,p.Feature.APP_BUILDERS,p.Feature.VIEW_PERMISSIONS,p.Feature.PDF],[p.PlanType.PREMIUM_PLUS]:[p.Feature.WORKSPACE_BACKUPS,p.Feature.BRANDING,p.Feature.SYNC_AUTOMATIONS,p.Feature.APP_BUILDERS,p.Feature.VIEW_PERMISSIONS,p.Feature.TRIGGER_AUTOMATION_RUN,p.Feature.VIEW_READONLY_COLUMNS,p.Feature.BUDIBASE_AI,p.Feature.PDF],[p.PlanType.PREMIUM_PLUS_TRIAL]:[p.Feature.WORKSPACE_BACKUPS,p.Feature.BRANDING,p.Feature.SYNC_AUTOMATIONS,p.Feature.APP_BUILDERS,p.Feature.VIEW_PERMISSIONS,p.Feature.TRIGGER_AUTOMATION_RUN,p.Feature.VIEW_READONLY_COLUMNS,p.Feature.BUDIBASE_AI,p.Feature.PDF],[p.PlanType.PRO]:[p.Feature.USER_GROUPS,p.Feature.WORKSPACE_BACKUPS,p.Feature.BRANDING],[p.PlanType.TEAM]:[p.Feature.USER_GROUPS,p.Feature.WORKSPACE_BACKUPS,p.Feature.BRANDING],[p.PlanType.BUSINESS]:[p.Feature.USER_GROUPS,p.Feature.WORKSPACE_BACKUPS,p.Feature.ENVIRONMENT_VARIABLES,p.Feature.AUDIT_LOGS,p.Feature.BRANDING,p.Feature.SYNC_AUTOMATIONS,p.Feature.APP_BUILDERS,p.Feature.EXPANDED_PUBLIC_API,p.Feature.VIEW_PERMISSIONS,p.Feature.BUDIBASE_AI,p.Feature.PDF],[p.PlanType.ENTERPRISE_BASIC]:[p.Feature.USER_GROUPS,p.Feature.WORKSPACE_BACKUPS,p.Feature.ENVIRONMENT_VARIABLES,p.Feature.ENFORCEABLE_SSO,p.Feature.AUDIT_LOGS,p.Feature.BRANDING,p.Feature.SYNC_AUTOMATIONS,p.Feature.OFFLINE,p.Feature.APP_BUILDERS,p.Feature.EXPANDED_PUBLIC_API,p.Feature.VIEW_PERMISSIONS,p.Feature.TRIGGER_AUTOMATION_RUN,p.Feature.SCIM,p.Feature.VIEW_READONLY_COLUMNS,p.Feature.AI_CUSTOM_CONFIGS,p.Feature.BUDIBASE_AI,p.Feature.PWA,p.Feature.CUSTOM_APP_SCRIPTS,p.Feature.PDF,p.Feature.RECAPTCHA,p.Feature.PKCE_OIDC],[p.PlanType.ENTERPRISE_BASIC_TRIAL]:[p.Feature.USER_GROUPS,p.Feature.WORKSPACE_BACKUPS,p.Feature.ENVIRONMENT_VARIABLES,p.Feature.ENFORCEABLE_SSO,p.Feature.BRANDING,p.Feature.SYNC_AUTOMATIONS,p.Feature.APP_BUILDERS,p.Feature.EXPANDED_PUBLIC_API,p.Feature.VIEW_PERMISSIONS,p.Feature.TRIGGER_AUTOMATION_RUN,p.Feature.SCIM,p.Feature.VIEW_READONLY_COLUMNS,p.Feature.AI_CUSTOM_CONFIGS,p.Feature.BUDIBASE_AI,p.Feature.PWA,p.Feature.CUSTOM_APP_SCRIPTS,p.Feature.PDF,p.Feature.RECAPTCHA,p.Feature.PKCE_OIDC],[p.PlanType.ENTERPRISE]:[p.Feature.USER_GROUPS,p.Feature.WORKSPACE_BACKUPS,p.Feature.ENVIRONMENT_VARIABLES,p.Feature.ENFORCEABLE_SSO,p.Feature.AUDIT_LOGS,p.Feature.BRANDING,p.Feature.SYNC_AUTOMATIONS,p.Feature.APP_BUILDERS,p.Feature.EXPANDED_PUBLIC_API,p.Feature.VIEW_PERMISSIONS,p.Feature.TRIGGER_AUTOMATION_RUN,p.Feature.SCIM,p.Feature.VIEW_READONLY_COLUMNS,p.Feature.AI_CUSTOM_CONFIGS,p.Feature.BUDIBASE_AI,p.Feature.PWA,p.Feature.CUSTOM_APP_SCRIPTS,p.Feature.PDF,p.Feature.RECAPTCHA,p.Feature.PKCE_OIDC]};function xo(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 p.Hosting.SELF:r=a(CS);break;case p.Hosting.CLOUD:r=a(OS);break}return r}var Xa={};w(Xa,{UNLIMITED:()=>d,getQuotas:()=>Co});var M=require("@budibase/types");var l=et,Tc=Ae,d=-1,Hr=e=>e*1e6,LS={[M.PlanType.FREE]:{...Tc.CLOUD_FREE_LICENSE.quotas},[M.PlanType.PREMIUM]:{usage:{monthly:{...l.queries(d),...l.automations(1e3),...l.budibaseAICredits(0),...l.actions(d)},static:{...l.rows(1e4),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(0),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(7),...l.appBackupRetentionDays(7)}},[M.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...l.queries(d),...l.automations(5e3),...l.budibaseAICredits(Hr(2)),...l.actions(d)},static:{...l.rows(25e3),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(0),...l.plugins(d),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[M.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...l.queries(d),...l.automations(5e3),...l.budibaseAICredits(Hr(2)),...l.actions(d)},static:{...l.rows(25e3),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(0),...l.plugins(d),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[M.PlanType.PRO]:{usage:{monthly:{...l.queries(d),...l.automations(1e3),...l.budibaseAICredits(0),...l.actions(d)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(5),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(7),...l.appBackupRetentionDays(7)}},[M.PlanType.TEAM]:{usage:{monthly:{...l.queries(d),...l.automations(5e3),...l.budibaseAICredits(0),...l.actions(d)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(10),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(90)}},[M.PlanType.BUSINESS]:{usage:{monthly:{...l.queries(d),...l.automations(1e4),...l.budibaseAICredits(0),...l.actions(d)},static:{...l.rows(5e4),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(50),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(365),...l.appBackupRetentionDays(365)}},[M.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(Hr(4)),...l.actions(d)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(d),...l.appBackupRetentionDays(d)}},[M.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(Hr(4)),...l.actions(d)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(15),...l.appBackupRetentionDays(15)}},[M.PlanType.ENTERPRISE]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(Hr(4)),...l.actions(d)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(d),...l.appBackupRetentionDays(d)}}},PS={[M.PlanType.FREE]:{...Tc.SELF_FREE_LICENSE.quotas},[M.PlanType.PREMIUM]:void 0,[M.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0),...l.actions(d)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(0),...l.plugins(d),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[M.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0),...l.actions(d)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(0),...l.plugins(d),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[M.PlanType.PRO]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0),...l.actions(d)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(5),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(7),...l.appBackupRetentionDays(7)}},[M.PlanType.TEAM]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0),...l.actions(d)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(10),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(90)}},[M.PlanType.BUSINESS]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0),...l.actions(d)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(50),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(90),...l.appBackupRetentionDays(365)}},[M.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0),...l.actions(d)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(d),...l.appBackupRetentionDays(d)}},[M.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0),...l.actions(d)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(15),...l.appBackupRetentionDays(15)}},[M.PlanType.ENTERPRISE]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0),...l.actions(d)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(d),...l.appBackupRetentionDays(d)}}};function Co(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 M.Hosting.SELF:r=a(PS);break;case M.Hosting.CLOUD:r=a(LS);break}return JSON.parse(JSON.stringify(r))}var Yt={};w(Yt,{encoding:()=>Vt,workspaceExists:()=>US});var Rc=require("@budibase/backend-core");async function US(e){return(await Rc.db.getAllWorkspaces({all:!0,idsOnly:!0})).includes(e)}var Vt={};w(Vt,{base64ToObject:()=>DS,objectToBase64:()=>qS});function qS(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}function DS(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}var cf=require("@budibase/types"),ir=require("@budibase/backend-core"),pf=P(Fl()),lf=P(as());async function px(e){await ve.save({offlineLicenseToken:e}),await Ct()}async function lx(){await ve.save({offlineLicenseToken:void 0}),await Ct()}async function df(){return(await ve.get()).offlineLicenseToken}async function ns(){let t=(await ir.installation.getInstall()).installId,r=ir.context.getTenantId(),a=await ir.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:a}}async function dx(){let e=await ns();return Vt.objectToBase64(e)}function fx(e){return Vt.base64ToObject(e)}function ff(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 mf(e){let t=await ns();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}function gf(e){let t=e.plan.type,r=cf.Hosting.SELF,a=xo(r,t),n=Co(r,t);return e.features=(0,pf.default)(e.features,a),e.quotas=(0,lf.default)(e.quotas,n),e}async function os(){try{let e=await df();if(e){let t=await Vr(e);return ff(t),await mf(t),gf(t)}}catch(e){console.error("Error retrieving offline license",e)}}var ma={};w(ma,{deleteDevLicense:()=>Ax,getOfflineLicense:()=>yx,writeDevLicenseToDisk:()=>hx});var yf=require("@budibase/backend-core"),is=require("path"),hf=require("os"),Ot=P(require("fs"));var mx=yf.env.isTest()?".budibase-test":".budibase",ss=(0,is.join)((0,hf.tmpdir)(),mx),gx="dev_license.txt",fa=(0,is.join)(ss,gx);if(!Ot.default.existsSync(ss))try{Ot.default.mkdirSync(ss)}catch{}function yx(){try{if(Ot.default.existsSync(fa)){let e=Ot.default.readFileSync(fa,{encoding:"utf-8"});return Vr(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}function hx(e){console.log(`Writing license to: ${fa}`),Ot.default.writeFileSync(fa,e,{encoding:"utf-8"})}function Ax(){Ot.default.rmSync(fa,{force:!0})}var Af=require("dd-trace"),cs=async()=>await Af.tracer.trace("getLicense",async e=>{if(us.env.OFFLINE_MODE)return e.addTags({offline:!0}),os();let t=await Kt();return t||(e.addTags({offlineFallback:!0}),t=ma.getOfflineLicense()),t}),ps=e=>Ro(e),ls=()=>us.env.SELF_HOSTED?Ae.SELF_FREE_LICENSE:Ae.CLOUD_FREE_LICENSE;var fs={};w(fs,{activateLicenseKey:()=>bx,deleteLicenseKey:()=>Ix,getLicenseKey:()=>gn});var ds=P(require("dd-trace"));async function bx(e){await vo(e),await ve.save({licenseKey:e}),await Ct()}async function gn(){return await ds.default.trace("getLicenseKey",async e=>{let t=await ve.get();return e.addTags({licenseKey:t.licenseKey}),t.licenseKey})}async function Ix(){return await ds.default.trace("deleteLicenseKey",async()=>{await ve.save({licenseKey:void 0}),await Ct()})}var Lt=require("@budibase/backend-core"),yn=P(require("dd-trace")),bf=3600,Ct=async()=>{await wf(),await Sf()},If=async(e,t)=>{let{populateLicense:r=cs,populateFreeLicense:a=ls}=t||{};return await yn.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 co(),c=await i.get(s);return n.addTags({tenantId:s,foundInCache:!!c}),c?(n.addTags({foundInCache:!0,refreshedAt:c.refreshedAt,features:c.features,plan:c.plan,quotas:c.quotas}),c):(c=await yn.default.trace("populateLicense",async()=>await r(s)),n.addTags({populatedLicense:!!c}),c||(c=yn.default.trace("populateFreeLicense",()=>a(e,s)),n.addTags({populatedFreeLicense:!!c})),c.refreshedAt=new Date().toISOString(),n.addTags({refreshedAt:c.refreshedAt,features:c.features,plan:c.plan,quotas:c.quotas,expirySeconds:bf}),await i.store(s,c,bf),c)})};Lt.env.isJest()&&(If=jest.fn());var Sf=If,wf=async()=>{let e=Lt.tenancy.getTenantId();await(await co()).delete(e)};async function re(e,t){Array.isArray(e)||(e=[e]),t||(t=await ke.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}async function hn(e,t){if(!await re(e,t))throw new tt.FeatureDisabledError(`${e} is not currently enabled`,e)}async function ms(e,t){if(!await re(e,t)){let r=e.join(", ");throw new tt.FeatureDisabledError(`${r} are not currently enabled`,r)}}function pe(e){return async(...t)=>(await hn(te.Feature.WORKSPACE_BACKUPS),e(...t))}async function gs(){return re(te.Feature.WORKSPACE_BACKUPS)}async function ys(){return re(te.Feature.BRANDING)}async function Ef(){return re(te.Feature.ENFORCEABLE_SSO)}async function wx(){return re(te.Feature.SYNC_AUTOMATIONS)}async function Ex(){return re(te.Feature.TRIGGER_AUTOMATION_RUN)}async function Pt(){return re(te.Feature.APP_BUILDERS)}async function An(){return re(te.Feature.AUDIT_LOGS)}async function hs(){return re(te.Feature.USER_GROUPS)}function Tx(){return re(te.Feature.PWA)}function Rx(){return re(te.Feature.RECAPTCHA)}var vx=()=>re(te.Feature.PKCE_OIDC);async function rt(){return re(te.Feature.EXPANDED_PUBLIC_API)}async function _x(e){if(tt.env.ENABLE_SSO_MAINTENANCE_MODE||!await Ef())return!1;let r;return e?.config?r=e.config:r=await tt.configs.getSettingsConfig(),!!r.isSSOEnforced}var As=async()=>{let e=te.Feature.SCIM,t=await re(e),r=await tt.configs.getSCIMConfig();if(!t||!r?.enabled)throw new tt.FeatureDisabledError(`${e} is not currently enabled`,e);return!0};async function xx(){return re(te.Feature.VIEW_PERMISSIONS)}async function Cx(){return re(te.Feature.VIEW_READONLY_COLUMNS)}var Ox={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 Lx(e){return await ys()?{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}:Ox}var Is={};w(Is,{enrichAIConfig:()=>bs});var Tf=require("@budibase/backend-core"),Px="budibase_ai";async function bs(e){if(Tf.env.SELF_HOSTED)return e;for(let t of Object.values(e.config))if(t.provider==="BudibaseAI")return e;return e.config[Px]={provider:"BudibaseAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-5-mini",name:"Budibase AI"},e}var ze={};w(ze,{addAction:()=>Nx,addApp:()=>Bx,addAutomation:()=>Qx,addGroup:()=>ws,addPlugin:()=>Ts,addRow:()=>Gx,addRows:()=>Wx,addUsers:()=>wn,bustCache:()=>yo,decrement:()=>at,decrementMany:()=>ga,getCurrentUsageValues:()=>Xu,getLicensedQuota:()=>vf,getQuotaUsage:()=>Tt,increment:()=>Ie,incrementBudibaseAICredits:()=>Tn,incrementMany:()=>qt,removeApp:()=>Mx,removeGroup:()=>Es,removePlugin:()=>Rs,removeRow:()=>Fx,removeRows:()=>jx,removeUsers:()=>lr,set:()=>Ss,setAllUsage:()=>Ao,setAppUsageValue:()=>ho,setUsage:()=>Hu,setUsagePerApp:()=>zu,updatePluginCount:()=>vs,updateUsage:()=>ur,usageLimitIsExceeded:()=>kx,utils:()=>_r});var In=require("@budibase/types");var Me=require("@budibase/backend-core"),z=require("@budibase/types"),Ut=require("dd-trace");var Ie=async(e,t,r)=>await Ut.tracer.trace("quotas.increment",async a=>(a.addTags({name:e,type:t}),await Rf({change:1,name:e,type:t,opts:r}))),qt=e=>Ut.tracer.trace("quotas.incrementMany",async()=>Rf(e)),Rf=async e=>await Ut.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 Ut.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]}),at=(e,t,r={})=>ur({usageChange:-1,name:e,type:t,opts:r}),ga=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})))},Ss=async(e,t,r)=>Qe.setUsage(r,e,t),Ux=(e,t,r)=>{if(e==z.QuotaUsageType.STATIC){let a=r.usageQuota.triggers;return a?a[t]||{}:{}}else{let a=Qe.utils.getCurrentMonthString(),n=r.monthly[a].triggers;return n?n[t]||{}:{}}},qx=async(e,t,r,a)=>{try{await Me.locks.doWithLock({type:z.LockType.TRY_ONCE,name:z.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let n={percentage:r,name:t.name};a&&(n.resetDate=a),await mt.triggerQuota(n)})}catch(n){Me.logging.logAlert("Error triggering quota",n)}},Dx=async(e,t,r,a)=>{let n=await Tt(),o=e===z.QuotaUsageType.MONTHLY?n.quotaReset:void 0,s=await Ux(e,t,n),i=a.triggers,c=r/a.value*100;c>100&&(c=100);for(let[f,m]of i.entries())if(c>=m&&a.value!==et.UNLIMITED){if(!s[m]){s[m]=new Date().toISOString();let y=i[f+1]||100;(!(c>=y)||c===m)&&await qx(t,a,c,o)}}else s[m]=void 0;return s},ur=async e=>{await Ut.tracer.trace("quotas.updateUsage",async t=>{let r=Me.tenancy.getTenantId(),a=Array.isArray(e)?e:[e];t.addTags({numActions:a.length,tenantId:r});let n,o,s=[],i={},c={},f={},m={};for(let y of a)await Ut.tracer.trace("quotas.updateUsage.action",async I=>{I.addTags({actionName:y.name,actionType:y.type,actionUsageChange:y.usageChange});try{n=Me.context.getWorkspaceId()}catch{}if(z.APP_QUOTA_NAMES.includes(y.name)&&!n)throw new Error("App context required for quota update");try{o=await vf(z.QuotaType.USAGE,y.name,y.type),s.push(o);let{total:_,app:v,breakdown:R}=await Qe.getCurrentUsageValues(y.type,y.name,y.opts?.id);_+=y.usageChange,v!=null&&(v+=y.usageChange),R!=null&&(R+=y.usageChange);let U={};if(y.opts?.dryRun||(U=await Dx(y.type,y.name,_,o),m={...m,[y.name]:U}),o.value!==et.UNLIMITED&&_>o.value&&y.usageChange>0)throw new Me.UsageLimitError(`Licensed ${o.name} of ${o.value} has been exceeded`,o.name);if(_=Math.max(0,_),v&&(v=Math.max(0,v)),R&&(R=Math.max(0,R),f={...f,[y.name]:R}),!y.opts?.dryRun){let qe=y.opts?.valueFn;qe&&(_=await qe(),v=_),i={...i,[y.name]:_},c={...c,[y.name]:v}}}catch(_){throw y.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${y.name}`,_),_}});let g=a.filter(y=>!y.opts?.dryRun).map(y=>({name:y.name,type:y.type,values:{total:i[y.name],app:c[y.name],breakdown:f[y.name],triggers:m[y.name]},opts:{...y.opts,tenantId:r}}));g.length>0&&await Qe.setAllUsage(g)})},vf=async(e,t,r)=>{let a=await ke.getCachedLicense();if(!a){let n=Me.tenancy.getTenantId();throw new Error("License not found for tenant id "+n)}if(r&&(0,z.isStaticQuota)(e,r,t))return a.quotas[e][r][t];if(r&&(0,z.isMonthlyQuota)(e,r,t))return a.quotas[e][r][t];if((0,z.isConstantQuota)(e,t))return a.quotas[e][t];throw new Error("Invalid quota type")},kx=async({name:e,type:t,usageChange:r})=>{try{return await ur({usageChange:r,name:e,type:t,opts:{dryRun:!0}}),!1}catch(a){if(a.code===z.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw a}};var Nx=async e=>Ie(In.MonthlyQuotaName.ACTIONS,In.QuotaUsageType.MONTHLY,{fn:e});var _f=require("@budibase/backend-core"),cr=require("@budibase/types");var xf=async()=>{let e=await _f.db.getAllWorkspaces({dev:!0});return e?e.length:0},Bx=async(e,{appId:t}={})=>Ie(cr.StaticQuotaName.WORKSPACES,cr.QuotaUsageType.STATIC,{fn:e,valueFn:xf,id:t}),Mx=async({appId:e}={})=>at(cr.StaticQuotaName.WORKSPACES,cr.QuotaUsageType.STATIC,{valueFn:xf,id:e});var Ye=require("@budibase/types"),Gx=async(e,{tableId:t}={})=>Ie(Ye.StaticQuotaName.ROWS,Ye.QuotaUsageType.STATIC,{fn:e,id:t}),Fx=async({tableId:e}={})=>at(Ye.StaticQuotaName.ROWS,Ye.QuotaUsageType.STATIC,{id:e}),Wx=async(e,t,{tableId:r}={})=>qt({change:e,name:Ye.StaticQuotaName.ROWS,type:Ye.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),jx=async(e,{tableId:t}={})=>ga({change:e,name:Ye.StaticQuotaName.ROWS,type:Ye.QuotaUsageType.STATIC,opts:{id:t}});var Sn=require("@budibase/types"),Qx=async(e,{automationId:t}={})=>Ie(Sn.MonthlyQuotaName.AUTOMATIONS,Sn.QuotaUsageType.MONTHLY,{fn:e,id:t});var pr=require("@budibase/types"),ws=async e=>Ie(pr.StaticQuotaName.USER_GROUPS,pr.QuotaUsageType.STATIC,{fn:e}),Es=async()=>at(pr.StaticQuotaName.USER_GROUPS,pr.QuotaUsageType.STATIC);var At=require("@budibase/types"),Ts=async e=>Ie(At.StaticQuotaName.PLUGINS,At.QuotaUsageType.STATIC,{fn:e}),Rs=async()=>at(At.StaticQuotaName.PLUGINS,At.QuotaUsageType.STATIC),vs=async e=>Ss(At.StaticQuotaName.PLUGINS,At.QuotaUsageType.STATIC,e);var He=require("@budibase/types"),ya=require("@budibase/backend-core");var wn=async(e,t,r)=>{let a=[{change:e,name:He.StaticQuotaName.USERS,type:He.QuotaUsageType.STATIC,opts:{fn:r,valueFn:ya.users.getUserCount}}];t>0&&a.push({change:t,name:He.StaticQuotaName.CREATORS,type:He.QuotaUsageType.STATIC,opts:{valueFn:ya.users.getCreatorCount}});let n=await qt(a);return await Kt(),n},lr=async(e,t)=>{let r=[{change:e,name:He.StaticQuotaName.USERS,type:He.QuotaUsageType.STATIC,opts:{valueFn:ya.users.getUserCount}}];t>0&&r.push({change:t,name:He.StaticQuotaName.CREATORS,type:He.QuotaUsageType.STATIC,opts:{valueFn:ya.users.getCreatorCount}}),await ga(r),await Kt()};var En=require("@budibase/types"),Tn=async e=>qt({change:e,name:En.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:En.QuotaUsageType.MONTHLY});var nt={};w(nt,{addAppBuilder:()=>Hx,db:()=>Ce,removeAppBuilder:()=>zx});var Aa=require("@budibase/backend-core");var j={};w(j,{addAppBuilder:()=>Os,addUsers:()=>vn,adjustGroupCreatorsQuotas:()=>Yx,cleanupApp:()=>Vx,enrichUserRolesFromGroups:()=>Kx,fetch:()=>ha,get:()=>bt,getBulk:()=>Df,getGroupBuilderAppIds:()=>qf,getGroupRoleId:()=>$x,remove:()=>_s,removeAppBuilder:()=>Ls,removeUsers:()=>xs,save:()=>dr,updateGroupApps:()=>Cs});var x=require("@budibase/backend-core");var Cf=require("@budibase/backend-core"),Rn=class extends Cf.HTTPError{constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function Pf(e,t){try{let r=[];for(let i of e)if(i.roles){let c=i.roles[x.db.getProdWorkspaceID(t)];c&&r.push(c)}let a=await Promise.all(r.map(async i=>({[i]:await x.roles.roleToNumber(i)}))),n,o,s={};a.forEach(i=>{let[c,f]=Object.entries(i)[0];s[c]={roleId:c,roleNum:f}});for(let{roleId:i,roleNum:c}of Object.values(s))(o===void 0||c>o)&&(o=c,n=i);return n}catch(r){throw x.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}async function Uf(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await B.getBulk(e,{enriched:!1}),t}async function qf(e,t){if(!e.userGroups)return[];let r=await Uf(e.userGroups,t?.groups),a=t?.appId?x.db.getProdWorkspaceID(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 $x(e,t,r){if(!e.userGroups)return null;let a=await Uf(e.userGroups,r?.groups),n=x.db.getProdWorkspaceID(t);return e.roles?.[n]?e.roles[n]:(a=a.filter(o=>o?.roles?Object.keys(o.roles).includes(n):!1),await Pf(a,t))}async function Kx(e){if(!e||!e.userGroups)return e;let t=await Df(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.doInWorkspaceContext(n,async()=>{if(e.roles[n])return;let o=await Pf(t,n);o&&(e.roles[n]=o)});let a=await qf(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 B.fetch()}async function bt(e){return await B.get(e)}async function Df(e,t={enriched:!0}){return await B.getBulk(e,t)}async function Of(e){if(await B.getByName(e))throw new Rn(e)}async function Lf(e){let t=await B.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=B.generateUserGroupID(),await Of(e.name),t.push(x.events.group.created(e));else{let o=await B.get(e._id);if(o.name!==e.name&&await Of(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 Lf(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=()=>B.save(e);if(r)return await ws(n);{let o=await n();if(a>0)await wn(0,a);else if(a<0){let s=await Lf(e),i=Math.abs(a)-s;i>0&&await lr(0,i)}return o}}async function _s(e,t){let r;try{r=await B.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 B.getGroupUsers(e),f=(await Promise.all(i.map(I=>s.get(I._id)))).map(I=>({...I,userGroups:I.userGroups.filter(C=>C!==e)})),g=(await x.userUtils.creatorsInList(f)).filter(I=>I).length,y=i.length-g;y&&(n=()=>lr(0,y))}let o=await B.destroy(e,t);return await x.events.group.deleted(r),await Es(),await n(),o}async function vn(e,t){let r=await B.get(e),a=await x.users.bulkGetGlobalUsersById(t),n=[];for(let c of a)c.userGroups||(c.userGroups=[]),c.userGroups.includes(e)||n.push(c);if(!n.length)return n;let o=n.map(c=>({...c,userGroups:[...c?.userGroups||[],e]}));if(await x.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes("CREATOR")){let f=(await x.userUtils.creatorsInList(n)).filter(g=>g).length,m=n.length-f;m&&await wn(0,m)}let i=[];for(let c of t)i.push(x.cache.user.invalidateUser(c));return await Promise.all(i),await x.events.group.usersAdded(o.length,r),o}async function xs(e,t){let r=await B.get(e),a=await x.users.bulkGetGlobalUsersById(t),n=[];for(let i of a){if(!i.userGroups||!i.userGroups.includes(e))continue;let c=i.userGroups.indexOf(e);i.userGroups.splice(c,1),n.push(i)}if(await x.users.bulkUpdateGlobalUsers(n),Object.values(r.roles||{}).includes("CREATOR")){let c=(await x.userUtils.creatorsInList(n)).filter(m=>m).length,f=n.length-c;f&&await lr(0,f)}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 Cs(e,t){let r=await bt(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 Vx(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 B.bulkSave(r)}async function Os(e,t){if(!await Pt())throw new Error("Feature not enabled, please check license");let r=x.db.getProdWorkspaceID(t),a=await bt(e);a.builder??={apps:[]},a.builder.apps.includes(t)||(a.builder.apps.push(r),await dr(a))}async function Ls(e,t){if(!await Pt())throw new Error("Feature not enabled, please check license");let r=x.db.getProdWorkspaceID(t),a=await bt(e);a.builder?.apps.includes(t)&&(a.builder.apps=a.builder.apps.filter(n=>n!==r),await dr(a))}async function Yx(){if(!await hs()){let e=x.tenancy.getGlobalDB(),r=(await ha()||[]).filter(a=>Object.values(a?.roles||{}).includes("CREATOR"));for(let a of r){let n=await B.getGroupUsers(a._id),s=(await Promise.all(n.map(m=>e.get(m._id)))).map(m=>({...m,userGroups:m.userGroups.filter(g=>g!==a._id)})),c=(await x.userUtils.creatorsInList(s)).filter(m=>m).length,f=n.length-c;await B.save({...a,roles:{}}),f&&await lr(0,f)}}}Aa.users.UserDB.init(ze,j,Be);var Ce=Aa.users.UserDB;async function Hx(e,t){if(!await Pt())throw new Error("Feature not enabled, please check license");await Aa.users.addAppBuilder(e,t)}async function zx(e,t){if(!await Pt())throw new Error("Feature not enabled, please check license");await Aa.users.removeAppBuilder(e,t)}var Cn={};w(Cn,{logs:()=>Bs});var Bs={};w(Bs,{logSearch:()=>oC,oldestLogDate:()=>Wf,storeLog:()=>sC});var xn=require("@budibase/backend-core"),Ff=require("@budibase/types");var Z=require("@budibase/backend-core"),_n=require("@budibase/types");var kf=require("@budibase/backend-core");async function Nf(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||kf.logging.logWarn(`Failed to backoff: ${t}`,r),o}var{SEPARATOR:ot,UNICODE_MAX:Jx,DocumentType:Bf,AutomationViewMode:Ps,ViewName:Xx,getQueryIndex:Zx}=Z.db,eC=new Date(0).toISOString(),tC=100,Us=async()=>Ka(_n.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS);function Mf(e,t,{status:r,automationId:a}={},n={}){let o=a?`${a}${ot}`:"",s=r?`${r}${ot}`:"",i;return r&&a?i=`${Ps.ALL}${ot}${s}${o}`:r?i=`${Ps.STATUS}${ot}${s}`:a?i=`${Ps.AUTOMATION}${ot}${o}`:i=`${Bf.AUTOMATION_LOG}${ot}`,{...n,descending:!0,startkey:`${i}${t}${Jx}`,endkey:`${i}${e}`}}function rC(e,t,r){return`${Bf.AUTOMATION_LOG}${ot}${e}${ot}${r}${ot}${t}`}async function qs(e,t,r={docs:!0}){let a=Z.context.getProdWorkspaceDB();await a.exists()||(a=Z.context.getDevWorkspaceDB());let n={status:r.status},o=r?.limit?r.limit:r?.paginate?9+1:void 0,s=Mf(e,t,n,{include_docs:r.docs,limit:o});r?.page&&(s.startkey=r.page);let i=await a.allDocs(s);return $r(i,{paginate:r?.paginate,pageSize:9})}async function Ds(e,t,r={}){let a=Z.context.getProdWorkspaceDB();await a.exists()||(a=Z.context.getDevWorkspaceDB());let n;try{let o={automationId:r?.automationId,status:r?.status},s=Mf(e,t,o,{include_docs:!0,limit:9+1});r?.page&&(s.startkey=r.page),n=await a.query(Zx(Xx.AUTOMATION_LOGS),s)}catch(o){if(o!=null&&(o.name==="not_found"||o.error==="not_found"))return await fc(),Ds(e,t,r);throw o}return $r(n,{paginate:!0,pageSize:9})}async function Gf(e,t){let r=Z.context.getProdWorkspaceDB(),a=e._id,n=e.name,o=new Date().toISOString(),s=rC(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 ks(e,{clearing:t}={clearing:!1}){let r=Z.context.getProdWorkspaceDB();await Nf(async()=>{let a=await r.get(Z.db.DocumentType.WORKSPACE_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 c=i[s].indexOf(n);t&&c!==-1?i[s].splice(c,1):i[s].push(n),i[s].length===0&&delete i[s],a.automationErrors=i}await r.put(a),await Z.cache.workspace.invalidateWorkspaceMetadata(a.appId,a)},"Failed to update app metadata with automation log error")}async function aC(){let e=await Us();try{return await qs(eC,e,{docs:!1,paginate:!1,limit:tC})}catch{return{data:[],hasNextPage:!1}}}async function Ns(){let e=Z.context.getProdWorkspaceDB();try{let t=await aC();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]===_n.AutomationStatus.ERROR}).map(n=>n.id);await e.bulkDocs(r),a.length&&await ks(a,{clearing:!0})}catch(t){Z.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}var Wf=Us;async function nC(e,t,r,a){let n,o=new Date().toISOString(),s=await Wf();return(!e||e<s)&&(e=s),r||t?n=await Ds(e,o,{automationId:r,status:t,page:a}):n=await qs(e,o,{status:t,page:a,docs:!0,paginate:!0}),n}async function oC(e){return await Ns(),await nC(e.startDate,e.status,e.automationId,e.page)}async function sC(e,t){if(!xn.db.isProdWorkspaceID(xn.context.getWorkspaceId()))return;let r=await Gf(e,t);t.status===Ff.AutomationStatus.ERROR&&await ks([r]),await Ns()}var On={};w(On,{checkPluginQuotas:()=>cC,deletePlugin:()=>uC,storePlugin:()=>iC});var Kf=require("@budibase/types"),J=require("@budibase/backend-core");var jf=P(require("fs")),Qf=require("path");function $f(e,t){return jf.default.readFileSync((0,Qf.join)(e,t),"utf8")}async function iC(metadata,directory,source){let db=J.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=J.objectStore.getPluginS3Dir(name),files=await J.objectStore.uploadDirectory(J.objectStore.ObjectStoreBuckets.PLUGINS,directory,bucketPath),jsFile=files.find(e=>e.name.endsWith(".js")),iconFile=files.find(e=>e.name.endsWith(".svg"));if(!jsFile)throw new Error("Plugin missing .js file.");if(metadata.schema.type===Kf.PluginType.DATASOURCE){let js=$f(directory,jsFile.name);try{eval(js)}catch(e){let t=e?.message?e.message:JSON.stringify(e);throw new Error(`JS invalid: ${t}`)}}let iconFileName=iconFile?iconFile.name:null,pluginId=J.db.generatePluginID(name),rev;try{rev=(await db.get(pluginId))._rev}catch(e){rev=void 0}let doc={_id:pluginId,_rev:rev,...metadata,name,version,hash,description,source};iconFileName&&(doc.iconFileName=iconFileName),source&&(doc={...doc,source});let write=async()=>{let e=await db.put(doc);return await J.events.plugin.imported(doc),{...doc,_rev:e.rev}};return rev?await write():await Ts(write)}async function uC(e){let t=J.tenancy.getGlobalDB();try{let r=await t.get(e),a=J.objectStore.getPluginS3Dir(r.name);await J.objectStore.deleteFolder(J.objectStore.ObjectStoreBuckets.PLUGINS,a),await t.remove(e,r._rev),await J.events.plugin.deleted(r),await Rs()}catch(r){let a=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${a}`)}}async function cC(){let e=J.tenancy.getGlobalDB();try{let r=(await e.allDocs(J.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await vs(r)}catch(t){J.logging.logAlert("Unable to retrieve plugins for quota check",t)}}var Je={};w(Je,{fetch:()=>lC,fetchValues:()=>dC,isEncryptionKeyAvailable:()=>pC,isValid:()=>Hf,remove:()=>mC,update:()=>fC});var Vf=require("@budibase/backend-core"),ba=require("@budibase/types");function pC(){return!!Vf.env.ENCRYPTION_KEY}async function lC(){let e=await _t.get();return Object.keys(e.variables)}async function dC(e){let r=(await _t.get()).variables,a={};for(let[n,o]of Object.entries(r))switch(e){case ba.Environment.DEVELOPMENT:a[n]=o.development;break;case ba.Environment.PRODUCTION:default:a[n]=o.production;break}return a}async function Yf(e){if(!(await Ke.cache.getCachedLicense()).features.includes(ba.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 fC(e,t){if(Hf(e))await Yf(a=>(a[e]=t,a));else throw new Error("Variable name has characters that are not allowed")}async function mC(e){await Yf(t=>(delete t[e],t))}function Hf(e){return/^[a-zA-Z0-9-_]+$/.test(e)}var It={};w(It,{definitions:()=>RC,download:()=>TC,fetch:()=>EC,write:()=>SC});var me=require("@budibase/backend-core"),Pn=require("@budibase/types");var V=require("@budibase/backend-core"),Ge=require("@budibase/types");var zf=require("memorystream"),Jf=new V.sql.Sql(Ge.SqlClient.SQL_LITE);async function gC(e,t,r){let a={operation:Ge.Operation.READ,table:Qt.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:Ge.SortOrder.DESCENDING,type:Ge.SortType.STRING}}},n=Jf._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 yC(e){return`${V.DocumentType.AUDIT_LOG}${V.SEPARATOR}${e}${V.SEPARATOR}${V.utils.newid()}`}async function Xf(e){e._id||(e._id=yC(e.timestamp)),e.type||(e.type=Ge.AUDIT_LOG_TYPE);try{let r=await V.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){V.logging.logAlert("Failed to write audit log",t)}}async function Ms(e,t,r){t||(t=1);let a=V.context.getAuditLogsDB();try{let n=9+1,o=await gC(e,t,n),s=Qt.searchTable(),i=Jf.convertJsonStringColumns(s,await a.sql(o.sql,o.bindings)),c;i.length>n&&(c=i.pop());let f={rows:i,hasNextPage:!!c};return f.hasNextPage&&(f.bookmark=t+1),f}catch(n){if(n.status===404&&!r?.isRetry)return await hC(),await Zu(),await Ms(e,t,{isRetry:!0});throw n}}async function hC(){let e=V.context.getAuditLogsDB(),r=(await e.allDocs(V.db.getDocParams(V.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(a=>a.doc).filter(a=>a&&!a.type).map(a=>({...a,type:Ge.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}function Zf(e){let t=V.context.getAuditLogsDB(),r=new zf,a=t.dump(r,{filter:o=>{let s=o;if(!s._id?.startsWith(V.DocumentType.AUDIT_LOG))return!1;let i=!0,c=(f,m)=>{!f||f.length===0||(i=!!(i&&m&&f.includes(m)))};if(c(e.userIds,s.userId),c(e.appIds,s.appId),c(e.events,s.event),(e.startDate||e.endDate)&&(i=i&&s.timestamp>=e.startDate&&s.timestamp<=e.endDate),e.fullSearch){let f=JSON.stringify(o);i=i&&f.includes(e.fullSearch)}return i}}),n=new zf;return r.on("data",o=>{let s=JSON.parse(Buffer.from(o).toString());if(Array.isArray(s.docs)){let i="";for(let c of s.docs)i+=JSON.stringify(c)+`
38
+ `;n.write(i)}}),r.on("end",()=>{n.end()}),{promise:a,stream:n}}var Ia=require("@budibase/backend-core"),Sa=require("@budibase/string-templates"),Ln=require("@budibase/types"),bC=Ia.constants.MIN_VALID_DATE.toISOString(),IC=Ia.constants.MAX_VALID_DATE.toISOString();function Gs(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||bC,e.endDate=e.endDate||IC),e}async function em(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(a=>Ia.db.getProdWorkspaceID(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=Gs(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}function Fs(e,t,r){let a={_id:e,status:Ln.AuditLogResourceStatus.DELETED};switch(t){case"app":a.name=r?.appName;break;case"user":a.email=r?.email;break}return a}function Ws(e){let t=(0,Sa.findHBSBlocks)(e);for(let r of t){let a=` "${r}"`;e=e.replace(e.includes(a)?a:` ${r}`,""),e=(0,Sa.processStringSync)(e,{})}return e}function tm(e,t){let r=Ln.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let a=(0,Sa.processStringSync)(r,t);return a.includes('""')&&(a=Ws(r)),a}async function SC(e,t,r){if(!await An()||!me.utils.isAudited(e))return;let a=tm(e,t),n=new Date;r?.timestamp&&(n=new Date(r.timestamp));let o={timestamp:n.toISOString(),event:e,name:a,userId:r?.userId||Pn.AuditLogSystemUser,metadata:{...t,...r?.hostInfo}},s={};try{if(r?.appId){o.appId=me.db.getProdWorkspaceID(r.appId);let i=await me.cache.workspace.getWorkspaceMetadata(r.appId);"name"in i&&(s.appName=i.name)}if(r?.userId){let i=await me.users.getById(r?.userId);s.email=i.email}}catch(i){me.logging.logAlert("Failed to retrieve fallback information for audit log",i)}return o.fallback=s,await Xf(o)}async function wC(e){let t=e.map(i=>i.userId),a=e.filter(i=>i.appId).map(i=>me.db.getDevWorkspaceID(i.appId)),n=await me.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),o=await me.db.getWorkspacesByIDs([...new Set(a)]),s=[];for(let i of e){let c=n.find(g=>g?._id===i.userId),f=o.find(g=>me.db.isSameWorkspaceID(g?.appId,i.appId)),m={event:i.event,timestamp:i.timestamp,name:i.name,metadata:i.metadata,user:c||Fs(i.userId,"user",i.fallback)};i.appId&&(m.app=f||Fs(i.appId,"app",i.fallback)),s.push(m)}return s}async function EC(e){if(!await An())throw new Error("Audit logs not available - license required.");let t=await em(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await Ms(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await wC(r.rows)}}function TC(e){return e=Gs(e),Zf(e)}function RC(){let e=Object.entries(Pn.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=Ws(r[1]);return t}var Un={};w(Un,{applications:()=>Vs,roles:()=>$s,users:()=>Qs});var Qs={};w(Qs,{roleCheck:()=>_C});function vC(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 _C(e,t){return await rt()||vC(e,t),e}var $s={};w($s,{assign:()=>xC,unAssign:()=>CC});var wa=require("@budibase/backend-core");async function xC(e,t){if(!await rt())throw new Error("Unable to assign roles - license required.");let r=await Ce.bulkGet(e);for(let a of r){if(t.role&&t.role.roleId){let n=wa.db.getProdWorkspaceID(t.role.appId);a.roles[n]=t.role.roleId}if(t.appBuilder){let n=wa.db.getProdWorkspaceID(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 Ce.bulkUpdate(r)}async function CC(e,t){if(!await rt())throw new Error("Unable to un-assign roles - license required.");let r=await Ce.bulkGet(e);for(let a of r){if(t.role){let n=wa.db.getProdWorkspaceID(t.role?.appId);a.roles[n]===t.role.roleId&&delete a.roles[n]}if(t.appBuilder&&a.builder?.apps){let n=wa.db.getProdWorkspaceID(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 Vs={};w(Vs,{buildExportFn:()=>LC,buildImportFn:()=>OC});var Ks=require("@budibase/backend-core");function OC(e){return async(t,r)=>{await rt()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await Ks.context.doInWorkspaceContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}function LC(e){return async(t,r)=>{await rt()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:a,excludeRows:n}=t.request.body;await Ks.context.doInWorkspaceContext(t.params.appId,async()=>{t.request.body={encryptPassword:a,excludeRows:n},t.query.appId=t.params.appId,await e(t),await r()})}}var ne=require("@budibase/backend-core"),ae=require("@budibase/types"),nm=P(require("fs")),om=require("path");var Ys=require("@budibase/backend-core"),rm;function am(){rm=new Ys.queue.BudibaseQueue(Ys.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}function Dt(){return rm}async function Hs(e,t={}){return _e.storeAppBackupMetadata(e,t)}function sm(e){let t=new Date().toISOString();switch(e){case ae.BackupStatus.COMPLETE:case ae.BackupStatus.FAILED:return{timestamp:t,finishedAt:t};case ae.BackupStatus.STARTED:return{timestamp:t,startedAt:t};case ae.BackupStatus.PENDING:return{timestamp:t,createdAt:t}}}async function PC(e,t,r,a){let n=await qn(e);return await _e.storeAppBackupMetadata({...n,...sm(t),contents:r,status:t,type:ae.BackupType.BACKUP},{filename:a,docId:e})}async function UC(e,t,r){let a=await qn(e);return await _e.storeAppBackupMetadata({...a,...sm(r),status:r,type:ae.BackupType.RESTORE,trigger:ae.BackupTrigger.MANUAL},{docId:e,docRev:t})}async function qn(e){return _e.getAppBackupMetadata(e)}async function qC(e,t){return _e.updateAppBackupMetadata(e,t)}async function im(e){let t=await _e.getAppBackupMetadata(e);return t.filename&&await ne.objectStore.deleteFile(ne.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),_e.deleteAppBackupMetadata(e)}async function DC(e){let t=[];for(let r of e)try{await im(r),t.push({backupId:r,success:!0})}catch(a){t.push({backupId:r,success:!1,error:a instanceof Error?a.message:"Unknown error"})}return t}async function kC(e,t){return _e.fetchAppBackups(e,t)}async function um(e){let t=await _e.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let r=await ne.objectStore.getReadStream(ne.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}async function NC(e){let{stream:t}=await um(e),r=(0,om.join)(ne.objectStore.budibaseTempDir(),ne.utils.newid()),a=nm.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 BC(e,t,r={}){let a;try{a=await Hs({appId:e,trigger:t,timestamp:new Date().toISOString(),status:ae.BackupStatus.PENDING,type:ae.BackupType.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 ne.events.backup.appBackupTriggered(e,a.id,ae.BackupType.BACKUP,t,r?.name),a.id}async function MC(e,t,r,a){let n=await qn(t),o;try{o=await Hs({appId:e,timestamp:new Date().toISOString(),status:ae.BackupStatus.PENDING,type:ae.BackupType.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}}async function GC(e,t,r){let a=ne.db.getProdWorkspaceID(e);await ne.context.doInWorkspaceContext(a,async()=>{let n=ne.context.getProdWorkspaceDB();if(!await n.exists())return;let s=await n.tryGet(ae.DocumentType.WORKSPACE_METADATA);s&&(s.backupErrors||(s.backupErrors={}),s.backupErrors[t]||(s.backupErrors[t]=[]),s.backupErrors[t].push(r),await n.put(s),await ne.cache.workspace.invalidateWorkspaceMetadata(s.appId,s))})}var FC={isEnabled:gs,triggerAppRestore:pe(MC),triggerAppBackup:pe(BC),getBackupDownloadStream:pe(um),downloadAppBackup:pe(NC),fetchAppBackups:pe(kC),storeAppBackupMetadata:pe(Hs),updateBackupStatus:pe(PC),updateRestoreStatus:pe(UC),getAppBackup:pe(qn),updateAppBackup:pe(qC),deleteAppBackup:pe(im),deleteAppBackups:pe(DC),trackBackupError:pe(GC)},Oe=FC;var Js={};w(Js,{init:()=>zs});var Q=require("@budibase/backend-core"),Fe=require("@budibase/types"),fr=P(require("fs"));async function zs(e){Dt().process(async t=>{let r=t.data;try{if(r.export)return console.log("Exporting app backup:",r.appId,r.export.trigger),QC(t,e);if(r.import)return console.log("Importing app backup:",r.appId,r.import.backupId),jC(t,e)}catch(a){Q.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,a)}})}async function WC(e){await Q.db.getDB(e,{skip_setup:!0}).destroy()}async function cm(e,t,r,a){let n=Q.db.getDevWorkspaceID(r),o=Q.db.getProdWorkspaceID(r),s=new Date().toISOString(),i=async(c,f)=>{a?.doc?await Oe.updateBackupStatus(a.doc.id,c,f?.contents,f?.filename):await Oe.storeAppBackupMetadata({appId:o,timestamp:s,trigger:e,status:c,name:a?.name,type:Fe.BackupType.BACKUP,contents:f?.contents,createdBy:a?.createdBy},{filename:f?.filename})};try{let c=await a.processing.exportAppFn(n,{tar:!0}),f=await a.processing.statsFn(n),m=`${o}/backup-${s}.tar.gz`,g=Q.objectStore.ObjectStoreBuckets.BACKUPS,y=fr.default.createReadStream(c);await Q.objectStore.streamUpload({bucket:g,filename:m,stream:y,extra:{type:"application/gzip",metadata:{name:a?.name,trigger:e,timestamp:s,appId:o}}}),await i(Fe.BackupStatus.COMPLETE,{filename:m,contents:f}),fr.default.existsSync(c)&&fr.default.rmSync(c)}catch(c){Q.logging.logAlert("App backup error",c),await i(Fe.BackupStatus.FAILED);let f=a?.doc?.id||`backup-${s}`,m=c instanceof Error?c.message:String(c);await Oe.trackBackupError(o,f,`Backup export failed: ${m}`)}}async function jC(e,t){let r=e.data,a=r.appId,n=r.import.backupId,o=r.import.nameForBackup,s=r.import.createdBy,i=Q.tenancy.getTenantIDFromWorkspaceID(a);return Q.tenancy.doInTenant(i,async()=>{let c=Q.db.getDevWorkspaceID(a),f=`${c}_temp_${Date.now()}`,{rev:m}=await Oe.updateRestoreStatus(r.docId,r.docRev,Fe.BackupStatus.STARTED);await cm(Fe.BackupTrigger.RESTORING,i,a,{processing:t,createdBy:s,name:o});let g=await Oe.downloadAppBackup(n),y=Fe.BackupStatus.COMPLETE;try{await t.importAppFn(f,Q.db.getDB(f),{file:{type:"application/gzip",path:g},key:g}),await WC(c),await new Q.db.Replication({source:f,target:c}).replicate()}catch(I){Q.logging.logAlert("App restore error",I),y=Fe.BackupStatus.FAILED;let C=I instanceof Error?I.message:String(I);await Oe.trackBackupError(a,n,`Backup restore failed: ${C}`)}finally{try{await Q.db.getDB(f,{skip_setup:!0}).destroy()}catch{}}await Oe.updateRestoreStatus(r.docId,m,y),fr.default.existsSync(g)&&fr.default.rmSync(g,{force:!0})})}async function QC(e,t){let r=e.data,a=r.appId,n=r.export.trigger,o=r.export.name,s=Q.tenancy.getTenantIDFromWorkspaceID(a);await Q.tenancy.doInTenant(s,async()=>{try{let{rev:i}=await Oe.updateBackupStatus(r.docId,Fe.BackupStatus.STARTED);return cm(n,s,a,{processing:t,doc:{id:r.docId,rev:i},name:o})}catch(i){Q.logging.logAlert("App backup error",i);let c=i instanceof Error?i.message:String(i);await Oe.trackBackupError(a,r.docId,`Backup export failed: ${c}`)}})}var $C=async e=>{am(),await zs(e.processing)},Se={...Oe,processing:Js,init:$C,getBackupQueue:Dt};var pm=async e=>{e.backups&&await Se.init(e.backups)};var ye={};w(ye,{create:()=>BB,find:()=>NB,get:()=>kB,remove:()=>GB,update:()=>MB});var PA=P($i()),st=require("@budibase/backend-core");var UA=require("@budibase/types");async function kB(e){let t=st.tenancy.getGlobalDB(),r=new st.db.QueryBuilder(t.name,UA.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 NB(e){return await st.users.getById(e)}async function BB(e){let t=await Ce.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new st.HTTPError("User is already synched",409);e={...t,scimInfo:(0,PA.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await Ce.save(e,{requirePassword:!1})}async function MB(e,t){return await Ce.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}async function GB(e){return await Ce.destroy(e)}var br={};w(br,{create:()=>FB});var qA=P($i());var DA=require("@budibase/backend-core");async function FB(e){let t=await Io(e.name),r;if(!t)r=(await j.save(e)).id;else{if(t.scimInfo?.isSync)throw new DA.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,qA.default)(t.scimInfo,e.scimInfo),await j.save(t)}return await j.get(r)}var Nt={};w(Nt,{logRequest:()=>WB,logResponse:()=>jB});var Ki=require("@budibase/backend-core");async function WB(e){Ki.logging.logWarn("SCIM request log",e)}async function jB(e){Ki.logging.logWarn("SCIM response error",e)}var Xi={};w(Xi,{doInScimContext:()=>Yi,feature:()=>$,internalGroupOnly:()=>_a,licenseAuth:()=>BA,licensing:()=>kA,requireSCIM:()=>Hi,scimGroupOnly:()=>va,scimUserOnly:()=>Ra});var St=require("@budibase/backend-core");var Vn=require("@budibase/types"),QB=(e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(St.env.SELF_HOSTED&&St.env.DEFAULT_LICENSE)return t.user.license=So,r();t.user.license=await Ke.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(St.utils.isServingApp(t)||St.utils.isServingBuilder(t)||St.utils.isServingBuilderPreview(t)||St.utils.isPublicApiRequest(t))&&await ze.usageLimitIsExceeded({name:Vn.StaticQuotaName.USERS,type:Vn.QuotaUsageType.STATIC,usageChange:0})}return r()},kA=QB;var $={};w($,{requireFeature:()=>$B,requireFeatures:()=>KB});var $B=e=>async(t,r)=>{await hn(e),await r()},KB=(...e)=>async(t,r)=>{await ms(e),await r()};var Yn=require("@budibase/backend-core");var Yi=async(e,t)=>(Yn.env.DISABLE_SCIM_CALLS||await Nt.logRequest({...e.request.toJSON(),body:e.request.body}),await Yn.context.doInScimContext(async()=>{let r=await t();return await Nt.logResponse({...e.response.toJSON(),body:e.response.body}),r}));var Hi=async(e,t)=>{await As(),await t()};var NA=require("@budibase/backend-core");var Ra=e=>zi(NA.users.getById,e,!0),va=e=>zi(B.get,e,!0),_a=e=>zi(B.get,e,!1);function zi(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 xa=require("@budibase/backend-core");var Ji=require("dd-trace");async function BA(e,t){await Ji.tracer.trace("licenseAuth",async r=>{let a=e.request.headers[xa.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 ps(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"),Ji.tracer.setUser({id:"anonymous",tenantId:n.tenantId}),await xa.context.doInSelfHostTenantUsingCloud(n.tenantId,async()=>{await xa.context.doInLicenseContext(n,async()=>{await t()})})})}var iu={};w(iu,{appBackups:()=>vb,auditLogs:()=>yb,environmentVariables:()=>ib,groups:()=>XA,scim:()=>rI,users:()=>iI});var MA=require("@budibase/backend-core");async function GA(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let a=await bt(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 FA(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 vn(t,r)),a&&(o=await xs(t,a)),e.body={added:n,removed:o}}async function WA(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 Cs(t,{appsToAdd:r,appsToRemove:a})}async function jA(e){e.body={data:await ha()}}async function QA(e){let{groupId:t,rev:r}=e.params;try{await _s(t,r),e.body={message:"Group deleted successfully"}}catch(a){e.throw(a.status,a)}}async function $A(e){try{e.body=await bt(e.params.groupId)}catch(t){e.throw(t.status,t)}}async function KA(e){let{pageSize:t=10,bookmark:r,emailSearch:a}=e.request.query,n=e.params.groupId,o={limit:t+1},s=await Qa(n,{...o,emailSearch:a,bookmark:r}),i=a?s[t]?.email:s[t]?._id,c=!!i;e.body={users:s.slice(0,t),bookmark:i,hasNextPage:c}}async function VA(e){let{groupId:t,appId:r}=e.params;await Os(t,r),e.body={message:"Group app builder access updated."}}async function YA(e){let{groupId:t,appId:r}=e.params;await Ls(t,r),e.body={message:"group app builder access removed."}}async function HA(e){let{groupId:t}=e.params,{csvContent:r}=e.request.body;(r===void 0||r.trim().length===0)&&e.throw(400,"CSV is empty");let a=await MA.csv.jsonFromCsvString(r,{allowSingleColumn:!0});(!a||a.length===0)&&e.throw(400,"CSV file is invalid");let o=Object.keys(a[0]).find(g=>/^(email|e-mail|email address|mail|e_mail)$/i.test(g.trim()));o||e.throw(400,"CSV file must contain an email column");let s=Array.from(new Set(a.map(g=>g[o]).filter(g=>g&&typeof g=="string"&&g.trim().length>0).map(g=>g.trim())));s.length===0&&e.throw(400,"No valid email addresses found in CSV");try{await bt(t)}catch(g){if(g.status===404)e.throw(404,"Group not found");else throw g}let i=[],c=[],f=[],m=await Promise.all(s.map(g=>Ce.getUserByEmail(g)));for(let g of s){let y=m.find(I=>I?.email===g);y?(i.push({_id:y._id,email:y.email}),f.push(y._id)):c.push({email:g,reason:"User not found"})}f.length>0&&await vn(t,f),e.body={added:i,skipped:c}}var zA=P(require("@koa/router")),le=P(require("joi"));var we=require("@budibase/types"),Le=require("@budibase/backend-core"),JA=new zA.default;function YB(){return Le.auth.joiValidator.body(le.default.object({_id:le.default.string().optional(),_rev:le.default.string().optional(),color:le.default.string().required(),icon:le.default.string().required(),name:le.default.string().trim().required().max(50),role:le.default.string().optional(),users:le.default.array().optional(),apps:le.default.array().optional(),roles:le.default.object().optional(),createdAt:le.default.string().optional(),updatedAt:le.default.string().optional()}).required())}JA.post("/api/global/groups",Le.auth.adminOnly,$.requireFeature(we.Feature.USER_GROUPS),YB(),GA).get("/api/global/groups",$.requireFeature(we.Feature.USER_GROUPS),jA).delete("/api/global/groups/:groupId/:rev",$.requireFeature(we.Feature.USER_GROUPS),Le.auth.adminOnly,_a("groupId"),QA).get("/api/global/groups/:groupId",$.requireFeature(we.Feature.USER_GROUPS),Le.auth.builderOrAdmin,$A).get("/api/global/groups/:groupId/users",$.requireFeature(we.Feature.USER_GROUPS),Le.auth.builderOrAdmin,KA).post("/api/global/groups/:groupId/users",Le.auth.adminOnly,$.requireFeature(we.Feature.USER_GROUPS),_a("groupId"),FA).post("/api/global/groups/:groupId/users/bulk",Le.auth.adminOnly,$.requireFeature(we.Feature.USER_GROUPS),_a("groupId"),Le.auth.joiValidator.body(le.default.object({csvContent:le.default.string().required()}).required()),HA).post("/api/global/groups/:groupId/apps",Le.auth.builderOrAdmin,$.requireFeature(we.Feature.USER_GROUPS),WA).post("/api/global/groups/:groupId/app/:appId/builder",Le.auth.builderOrAdmin,$.requireFeatures(we.Feature.USER_GROUPS,we.Feature.APP_BUILDERS),VA).delete("/api/global/groups/:groupId/app/:appId/builder",Le.auth.builderOrAdmin,$.requireFeatures(we.Feature.USER_GROUPS,we.Feature.APP_BUILDERS),YA);var XA=JA;var eu=require("@budibase/backend-core"),Zi=require("@budibase/types");async function ZA(e){e.body={encryptionKeyAvailable:Je.isEncryptionKeyAvailable()}}async function eb(e){e.body={variables:await Je.fetch()}}async function tb(e){let{name:t,production:r,development:a}=e.request.body;await Je.update(t,{production:r,development:a});let n=[Zi.Environment.PRODUCTION];r!==a&&n.push(Zi.Environment.DEVELOPMENT),await eu.events.environmentVariable.created(t,n),e.body={message:`Environment variable "${t}" created.`}}async function rb(e){let{production:t,development:r}=e.request.body,a=e.params.varName;await Je.update(a,{production:t,development:r}),e.body={message:`Environment variable "${a}" updated.`}}async function ab(e){let t=e.params.varName;await Je.remove(t),await eu.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}var Bt=require("@budibase/backend-core"),ob=P(require("@koa/router")),Ca=P(require("joi")),sb=new ob.default;function nb(){return Bt.auth.joiValidator.body(Ca.default.object({name:Ca.default.string().optional(),production:Ca.default.string().required(),development:Ca.default.string().required()}))}sb.get("/api/env/variables/status",Bt.auth.builderOrAdmin,ZA).get("/api/env/variables",Bt.auth.builderOrAdmin,eb).post("/api/env/variables",Bt.auth.builderOrAdmin,nb(),tb).patch("/api/env/variables/:varName",Bt.auth.builderOrAdmin,nb(),rb).delete("/api/env/variables/:varName",Bt.auth.builderOrAdmin,ab);var ib=sb;var tu=require("@budibase/backend-core");async function ub(e){let t=e.request.body,r=await It.fetch(t);await tu.events.auditLog.filtered(t),e.body=r}async function cb(e){let t=e.request.body,{stream:r}=It.download(t);await tu.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}async function pb(e){e.body={events:It.definitions()}}var fb=require("@budibase/types"),Mt=require("@budibase/backend-core"),mb=P(require("@koa/router")),Pe=P(require("joi"));function lb(){return Mt.auth.joiValidator.body(Pe.default.object({userIds:Pe.default.array().items(Pe.default.string()).optional(),appIds:Pe.default.array().items(Pe.default.string()).optional(),events:Pe.default.array().items(Pe.default.string().valid(...Object.values(fb.Event))).optional(),startDate:Pe.default.string().optional().allow(""),endDate:Pe.default.string().optional().allow(""),fullSearch:Pe.default.string().optional().allow(""),bookmark:Pe.default.number()}))}var gb=new mb.default;gb.post("/api/global/auditlogs/search",Mt.auth.adminOnly,lb(),ub).get("/api/global/auditlogs/download",Mt.auth.adminOnly,Mt.middleware.querystringToBody,lb(),cb).get("/api/global/auditlogs/definitions",Mt.auth.adminOnly,pb);var yb=gb;var it=require("@budibase/backend-core"),zn=require("@budibase/types"),Tb=P(require("@koa/router")),Ft=P(require("joi"));var Hn=require("@budibase/backend-core"),ru=require("@budibase/types");async function Gt(e,t){t||e.throw(400,"App ID missing"),await Yt.workspaceExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}async function hb(e){let t=e.params.appId;await Gt(e,t);let{body:r}=e.request,a=e.user?._id,n=await Se.triggerAppBackup(t,ru.BackupTrigger.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 Ab(e){let t=e.params.appId;await Gt(e,t);let r=e.params.backupId,a=e.request.body.name,n=await Se.triggerAppRestore(t,r,a,e.user?._id);n||e.throw(500,"Unable to start restore."),await Hn.events.backup.appBackupRestored(n.metadata),e.body={restoreId:n?.restoreId,message:"Restore triggered - process starting."}}async function bb(e){let t=e.params.appId;await Gt(e,t);let r=e.params.backupId;await Se.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}async function Ib(e){let t=Hn.context.getWorkspaceId();await Gt(e,t);let{backupIds:r}=e.request.body;(!Array.isArray(r)||r.length===0)&&e.throw(400,"backupIds must be a non-empty array");let a=await Se.deleteAppBackups(r),n=a.filter(s=>s.success).length,o=a.length-n;e.body={message:`${n} backups deleted successfully${o>0?`, ${o} failed`:""}.`,results:a,successCount:n,failureCount:o}}async function Sb(e){let t=e.params.appId;await Gt(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(ru.BackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await Se.fetchAppBackups(t,{paginate:!0,...r})}async function wb(e){let t=e.params.appId;await Gt(e,t);let r=e.params.backupId,a=e.request.body;e.body=await Se.updateAppBackup(r,a.name)}async function Eb(e){let t=e.params.appId;await Gt(e,t);let r=e.params.backupId,{metadata:a,stream:n}=await Se.getBackupDownloadStream(r);e.attachment(`backup-${a.timestamp}.tar.gz`),e.body=n}var Rb=new Tb.default;function XB(){return it.auth.joiValidator.body(Ft.default.object({trigger:Ft.default.string().valid(...Object.values(zn.BackupTrigger)),type:Ft.default.string().valid(...Object.values(zn.BackupType)),startDate:Ft.default.date(),endDate:Ft.default.date(),page:Ft.default.string()}))}Rb.post("/api/apps/:appId/backups",it.auth.builderOrAdmin,hb).post("/api/apps/:appId/backups/search",it.auth.builderOrAdmin,XB(),Sb).get("/api/apps/:appId/backups/:backupId/file",it.auth.builderOrAdmin,Eb).patch("/api/apps/:appId/backups/:backupId",it.auth.builderOrAdmin,wb).delete("/api/apps/:appId/backups/:backupId",it.auth.builderOrAdmin,bb).delete("/api/apps/:appId/backups",it.auth.builderOrAdmin,Ib).post("/api/apps/:appId/backups/:backupId/import",it.auth.builderOrAdmin,Ab);var vb=Rb;var tI=P(require("@koa/router"));var Jn=require("scim-patch");var xb=require("@budibase/backend-core");function _b(e,t){let r=e.request.query[t];if(r!==void 0)return+r}var Cb=async e=>{let t=_b(e,"pageSize")??20,r=_b(e,"startIndex"),a;e.request.query.filter&&(a=Y.user.userFilters(e.request.query.filter));let n=await ye.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(Y.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},Ob=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await ye.find(t);e.body=Y.user.toScimUserResponse(r)},Lb=async e=>{let t=Y.user.fromScimUser(e.request.body);try{let r=await ye.create(t);e.body=Y.user.toScimUserResponse(r)}catch(r){throw r instanceof xb.EmailUnavailableError&&e.throw(409,"Email already in use"),r}};function ZB(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 Pb=async e=>{let t=await ye.find(e.params.id);t||e.throw(404);let r=Y.user.toScimUserResponse(t),a=e.request.body;try{(0,Jn.patchBodyValidation)(a)}catch{}if(ZB(a))return au(e);let n;try{n=(0,Jn.scimPatch)(r,a.Operations)}catch{}n||e.throw(500);let o=Y.user.fromScimUser(n);await ye.update(o,{allowChangingEmail:!0}),e.body=Y.user.toScimUserResponse(o)},au=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await ye.remove(t),e.status=204};var Vb=P(Kb()),Yb=require("@budibase/shared-core"),Xn=require("scim-patch");var Zn=require("scim2-parse-filter");function Hb(e,t){for(let r of t.split(","))delete e[r]}var zb=async e=>{let r=(await j.fetch()).filter(o=>o.scimInfo?.isSync).map(Y.group.toScimGroupResponse),{filter:a,excludedAttributes:n}=e.request.query;if(a){let o=(0,Zn.filter)((0,Zn.parse)(a));r=r.filter(o)}n&&r.forEach(o=>{Hb(o,n)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},Jb=async e=>{let t=Y.group.fromScimGroup(e.request.body),r=await br.create(t);e.body=Y.group.toScimGroupResponse(r)},Xb=async e=>{let{id:t}=e.params,r=await j.get(t),a=Y.group.toScimGroupResponse(r),{excludedAttributes:n}=e.request.query;n&&Hb(a,n),e.body=a},Zb=async e=>{let{id:t}=e.params,r=await j.get(t);await j.remove(t,r._rev),e.status=204},eI=async e=>{let{id:t}=e.params,r=await j.get(t),a=Y.group.toScimGroupResponse(r),n=e.request.body;try{(0,Xn.patchBodyValidation)(n)}catch{e.throw(400)}let{true:o,false:s}=(0,Vb.default)(n.Operations,i=>i.path==="members");if(s?.length){let i=(0,Xn.scimPatch)(a,s);i||e.throw(500);let c={...Y.group.fromScimGroup(i),_rev:r._rev};await j.save(c)}if(o?.length){let i=[],c=[];for(let{op:f,value:m}of o)switch(f){case"add":case"Add":for(let g of m)i.push(await ye.find(g.value));break;case"remove":case"Remove":for(let g of m)c.push(await ye.find(g.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:Yb.utils.unreachable(f)}i.length&&await j.addUsers(t,i.map(f=>f._id)),c.length&&await j.removeUsers(t,c.map(f=>f._id))}e.body=Y.group.toScimGroupResponse(await j.get(t))};var Oa=require("@budibase/types"),Ee=new tI.default({prefix:"/api/global/scim/v2"});Ee.use(Hi);Ee.use(Yi);Ee.get("/users",Cb);Ee.get("/users/:id",Ra("id"),Ob);Ee.post("/users",Lb);Ee.patch("/users/:id",Ra("id"),Pb);Ee.delete("/users/:id",Ra("id"),au);Ee.get("/groups",zb);Ee.post("/groups",$.requireFeature(Oa.Feature.USER_GROUPS),Jb);Ee.get("/groups/:id",$.requireFeature(Oa.Feature.USER_GROUPS),va("id"),Xb);Ee.delete("/groups/:id",$.requireFeature(Oa.Feature.USER_GROUPS),va("id"),Zb);Ee.patch("/groups/:id",$.requireFeature(Oa.Feature.USER_GROUPS),va("id"),eI);var rI=Ee;var oI=P(require("@koa/router"));var nu=require("@budibase/backend-core");async function aI(e){let{userId:t,appId:r}=e.params,a=await nt.db.getUser(t);if(nu.users.isGlobalBuilder(a)){e.body={message:"User already admin - no permissions updated."};return}await nt.addAppBuilder(a,r),e.body={message:`User "${a.email}" app builder access updated.`}}async function nI(e){let{userId:t,appId:r}=e.params,a=await nt.db.getUser(t);if(nu.users.isGlobalBuilder(a)){e.body={message:"User already admin - no permissions removed."};return}await nt.removeAppBuilder(a,r),e.body={message:`User "${a.email}" app builder access removed.`}}var ou=require("@budibase/types"),su=require("@budibase/backend-core"),sI=new oI.default;sI.post("/api/global/users/:userId/app/:appId/builder",su.auth.builderOrAdmin,$.requireFeatures(ou.Feature.APP_BUILDERS),aI).delete("/api/global/users/:userId/app/:appId/builder",su.auth.builderOrAdmin,$.requireFeatures(ou.Feature.APP_BUILDERS),nI);var iI=sI;var Y={};w(Y,{group:()=>cu,user:()=>uu});var uu={};w(uu,{fromScimUser:()=>xM,toScimUserResponse:()=>RM,userFilters:()=>CM});var eo=require("@budibase/types"),uI=require("scim2-parse-filter"),cI=require("@budibase/backend-core"),pI=require("@budibase/shared-core"),{unreachable:TM}=pI.utils,RM=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===eo.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},vM=e=>!!e?.id;function _M(e){if(cI.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}var xM=e=>{let t=vM(e)?e:void 0,r=_M(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:TM(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?eo.UserStatus.ACTIVE:eo.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},CM=e=>{let t={equal:{}},r=(0,uI.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 cu={};w(cu,{fromScimGroup:()=>PM,toScimGroupResponse:()=>OM});var OM=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}))}),LM=e=>!!e?.id,PM=e=>{let t=LM(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 Uu={};w(Uu,{LLM:()=>Xe,LLMRequest:()=>K,TableGeneration:()=>Pu,agentHistoryTitleSystemPrompt:()=>jM,agentSystemPrompt:()=>WM,aiColumnSchemas:()=>Ou,aiTableResponseToTableSchema:()=>vu,appendAIColumns:()=>_u,classifyText:()=>du,cleanData:()=>fu,extractFileData:()=>BM,generateAIColumns:()=>Tu,generateCode:()=>FM,generateCronExpression:()=>mu,generateData:()=>Ru,generateJs:()=>Au,generateSQL:()=>GM,generateTables:()=>Eu,generationStructure:()=>Cu,getLLM:()=>Ua,getLLMConfig:()=>wu,getLLMOrThrow:()=>SI,normalizeContentType:()=>pu,parseResponseFormat:()=>ro,sanitiseToolName:()=>UM,searchWeb:()=>hu,sentimentAnalysis:()=>yu,summarizeText:()=>to,tableDataStructuredOutput:()=>Lu,translate:()=>gu});var La=require("@budibase/types");function UM(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 pu(e){return e?e.includes("/")?e:{[La.SupportedFileType.PDF]:"application/pdf",[La.SupportedFileType.JPG]:"image/jpeg",[La.SupportedFileType.JPEG]:"image/jpeg",[La.SupportedFileType.PNG]:"image/png"}[e.toLowerCase()]||"application/octet-stream":"application/octet-stream"}var io=require("@budibase/types");var Ze=require("@budibase/backend-core"),hI=require("@budibase/types");var ao=P(require("openai"));var wt=require("@budibase/types");var lI=require("@budibase/shared-core");var Et=P(require("dd-trace"));function lu(e,t){return t.map(r=>e[r]).join(" ")}var Xe=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||"1000")}get model(){return this._model}get apiKey(){return this._apiKey}get maxTokens(){return this._maxTokens}async prompt(t){return await Et.default.trace("prompt",async()=>{let r=typeof t=="string"?new K().addUserMessage(t):t,{messages:a,tokensUsed:n}=await Et.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 Et.default.trace("chat",async()=>await this.chatCompletion(t))}async*chatStream(t){yield*this.chatCompletionStream(t)}async summarizeText(t){return Et.default.trace("summarizeText",()=>this.prompt(to(t)))}async generateCronExpression(t){return Et.default.trace("generateCronExpression",()=>this.prompt(mu(t)))}async operation(t,r){return Et.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:c}=t;switch(a){case wt.AIOperationEnum.SUMMARISE_TEXT:return to(lu(r,o));case wt.AIOperationEnum.CLEAN_DATA:return fu(r[n]);case wt.AIOperationEnum.TRANSLATE:return gu(r[n],s);case wt.AIOperationEnum.CATEGORISE_TEXT:if(!i)throw Error("No categories provided for categorise text operation. Please provide categories.");return du(lu(r,o),i.split(","));case wt.AIOperationEnum.SENTIMENT_ANALYSIS:return yu(r[n]);case wt.AIOperationEnum.PROMPT:return c;case wt.AIOperationEnum.SEARCH_WEB:return hu(lu(r,o));default:throw lI.utils.unreachable(a)}}async generateJs(t,r){return await Et.default.trace("generateJs",async()=>{let{bindings:a=[],snippets:n=[]}=r||{};return await this.prompt(Au(a,n).addUserMessage(t))})}};var fI=require("@budibase/types"),bu=require("openai/helpers/zod");var mI=(a=>(a.GPT_5_MINI="gpt-5-mini",a.GPT_5="gpt-5",a.GPT_5_NANO="gpt-5-nano",a))(mI||{});function ro(e){if(e)return e==="text"?{type:"text"}:e==="json"?{type:"json_object"}:e}function dI(e){if(!e)return 0;let t=e.prompt_tokens;return e.completion_tokens*3+t}var Ue=class extends Xe{constructor(r){super(r);this.client=this.getClient(r)}getClient(r){if(!r.apiKey)throw new Error("No OpenAI API key found");return new ao.default({apiKey:r.apiKey})}async uploadFile(r,a,n){let o=pu(n);if(fI.ImageContentTypes.includes(o.toLowerCase())){let c;if(Buffer.isBuffer(r))c=r;else{let m=[];for await(let g of r)m.push(new Uint8Array(g));c=Buffer.concat(m)}let f=c.toString("base64");return`data:${o};base64,${f}`}let s=await(0,ao.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_completion_tokens:this._maxTokens,response_format:ro(r.format)};Object.values(mI).includes(this.model)&&(a.verbosity="low",a.reasoning_effort="minimal"),r.tools&&r.tools.length>0&&(a.tool_choice="auto",a.tools=r.tools.map(bu.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){if(i.type!=="function"||!i.function){console.warn(`[OPENAI TOOL WARN] Unsupported tool call type: ${i.type}`);continue}let c=i.function.name,f=r.findTool(c);if(!f)throw new Error(`Tool ${c} not found in prompt tools`);let m=JSON.parse(i.function.arguments);s.push(f.handler(m).then(g=>({role:"tool",tool_call_id:i.id,content:g})).catch(g=>(console.error(`[OPENAI TOOL ERROR] Tool ${c} failed in OpenAI handler:`,g),{role:"tool",tool_call_id:i.id,content:`Error: ${g.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:dI(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:ro(r.format),stream:!0};r.tools&&r.tools.length>0&&(a.tool_choice="auto",a.tools=r.tools.map(bu.zodFunction));try{let n=await this.client.chat.completions.create(a),o=null,s="",i=null;for await(let f of n){let m=f?.choices?.[0]?.delta;if(m){if(m.content&&(s+=m.content,yield{type:"content",content:m.content}),m.tool_calls&&m.tool_calls.length>0){let g=m.tool_calls[0];g.id?(o={id:g.id,name:g.function?.name||"",arguments:g.function?.arguments||""},yield{type:"tool_call_start",toolCall:{id:o.id,name:o.name,arguments:o.arguments}}):o&&g.function?.arguments&&(o.arguments+=g.function.arguments,yield{type:"tool_call_start",toolCall:{id:o.id,name:o.name,arguments:o.arguments}})}f.usage&&(i=f.usage)}}let c=i?dI(i):0;if(o){r.addMessage({role:"assistant",content:"",tool_calls:[{id:o.id,type:"function",function:{name:o.name,arguments:o.arguments}}]});let f=r.findTool(o.name);if(f)try{let m=JSON.parse(o.arguments),g=await f.handler(m);yield{type:"tool_call_result",toolResult:{id:o.id,result:g}},r.addMessage({role:"tool",tool_call_id:o.id,content:g}),yield*this.chatCompletionStream(r);return}catch(m){yield{type:"tool_call_result",toolResult:{id:o.id,result:`Error: ${m.message}`,error:m.message}},r.addMessage({role:"tool",tool_call_id:o.id,content:`Error: ${m.message}`}),yield*this.chatCompletionStream(r);return}else{let m=`Tool '${o.name}' not found`;yield{type:"tool_call_result",toolResult:{id:o.id,result:m,error:m}},r.addMessage({role:"tool",tool_call_id:o.id,content:m}),yield*this.chatCompletionStream(r);return}}s&&r.addMessage({role:"assistant",content:s}),yield{type:"done",messages:r.messages,tokensUsed:c}}catch(n){yield{type:"error",content:n.message}}}};var ee=require("@budibase/backend-core"),gI=require("@budibase/types");var Iu=require("dd-trace"),no=class extends Xe{async prompt(t){let r=await super.prompt(t);return r.tokensUsed&&await Tn(r.tokensUsed),r}async chat(t){let r=await super.chat(t);return r.tokensUsed&&await Tn(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 Ue({apiKey:ee.env.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).uploadFile(t,r,a)}async uploadFileSelfHost(t,r,a){let n;if(Buffer.isBuffer(t))n=t;else{let c=[];for await(let f of t)c.push(new Uint8Array(f));n=Buffer.concat(c)}let o=n.toString("base64");if(a&&gI.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 c=await gn();if(!c)throw new Error("No license key found");this._apiKey=c}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 Iu.tracer.trace("chatCompletionCloud",async()=>await new Ue({apiKey:ee.env.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).chatCompletion(t))}async chatCompletionSelfHost(t){return await Iu.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 gn();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 Ue({apiKey:ee.env.OPENAI_API_KEY,model:this.model,max_completion_tokens: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 Pa=require("dd-trace");var Su=P(require("@anthropic-ai/sdk"));function qM(e){if(!e)return 0;let t=e.input_tokens;return e.output_tokens*3+t}var oo=class extends Xe{constructor(r){super(r);this.client=new Su.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:qM(a.usage)}}catch(a){throw a instanceof Su.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 AI=require("zod"),bI=require("openai/helpers/zod");var yI=require("openai"),so=class extends Ue{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 yI.AzureOpenAI({apiKey:t.apiKey,apiVersion:"2024-10-01-preview",baseURL:t.baseUrl})}};var II="gpt-5-mini",DM={OpenAI:Ue,TogetherAI:Ue,AzureOpenAI:so,Custom:Ue,Anthropic:oo,BudibaseAI:no};async function kM(){return await Pa.tracer.trace("getAIConfig",async e=>{let t={type:hI.ConfigType.AI,config:{}};if(!Ze.context.isSelfHostUsingCloud()){let a=await Ze.configs.getAIConfig();a&&(t=a)}await bs(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||II,apiKey:r.apiKey,baseUrl:r.baseUrl}})}async function NM(){return Pa.tracer.trace("getSelfHostOpenAIKeyConfig",e=>{if(!Ze.env.SELF_HOSTED){e.addTags({enabled:!1,reason:"not self host"});return}if(!Ze.env.OPENAI_API_KEY){e.addTags({enabled:!1,reason:"no OPENAI_API_KEY"});return}return e.addTags({enabled:!0}),{provider:"OpenAI",model:II,apiKey:Ze.env.OPENAI_API_KEY}})}async function wu(){return Pa.tracer.trace("getLLMConfig",async()=>await kM()||await NM())}async function Ua(e){return await Pa.tracer.trace("getLLM",async t=>{let{model:r,maxTokens:a}=e||{},n=await wu();if(!n){t.addTags({enabled:!1,reason:"no config found"});return}r&&(n.model=r),a&&(n.maxTokens=a);let o=DM[n.provider];if(!o){t.addTags({enabled:!1,reason:"no provider found",provider:n.provider});return}return new o(n)})}async function SI(){let e=await Ua();if(!e)throw new Ze.HTTPError("No available LLM configurations",500);return e}var K=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 AI.z.ZodType?this.format=(0,bI.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 ut=require("zod");function to(e,t){let r=`Summarize this text:
39
39
  ${e}`,a="";if(t)switch(t){case io.SummariseLength.SHORT:a="In 1-2 concise sentences, ";break;case io.SummariseLength.MEDIUM:a="In 2-3 paragraphs, ";break;case io.SummariseLength.LONG:a="In multiple detailed paragraphs, ";break}return new K().addUserMessage(`${a}${r}.
40
- Only return the summary.`)}function Mk(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(`
40
+ Only return the summary.`)}function BM(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=kk(e),s=ut.z.object({data:ut.z.array(o)});return new K().addMessages([{role:"user",content:n}]).withFormat(s)}function kk(e){let t={};for(let[r,a]of Object.entries(e))if(typeof a=="string")switch(a.toLowerCase()){case"string":t[r]=ut.z.string();break;case"number":t[r]=ut.z.number();break;case"boolean":t[r]=ut.z.boolean();break;default:t[r]=ut.z.string()}else t[r]=ut.z.string();return ut.z.object(t)}function du(e,t){return new K().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 fu(e){return new K().addUserMessage(`Clean the following string: "${e}". Remove any spelling mistakes or data issues. Only return the cleaned string itself and nothing else.`)}function Gk(e,t){return new K().addUserMessage(`Given the table schema:
44
+ File ID: ${t}`}],o=MM(e),s=ut.z.object({data:ut.z.array(o)});return new K().addMessages([{role:"user",content:n}]).withFormat(s)}function MM(e){let t={};for(let[r,a]of Object.entries(e))if(typeof a=="string")switch(a.toLowerCase()){case"string":t[r]=ut.z.string();break;case"number":t[r]=ut.z.number();break;case"boolean":t[r]=ut.z.boolean();break;default:t[r]=ut.z.string()}else t[r]=ut.z.string();return ut.z.object(t)}function du(e,t){return new K().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 fu(e){return new K().addUserMessage(`Clean the following string: "${e}". Remove any spelling mistakes or data issues. Only return the cleaned string itself and nothing else.`)}function GM(e,t){return new K().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 Fk(e){return new K().addUserMessage(`Generate JavaScript code for the following request:
49
+ Only provide the SQL.`)}function FM(e){return new K().addUserMessage(`Generate JavaScript code for the following request:
50
50
  ${e}.
51
51
  Only provide the JS and nothing else.`)}function mu(e){return new K().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
52
  ${e}`)}function gu(e,t){return new K().addUserMessage(`Translate the following text: "${e}" into ${t}. Only return the translation.`)}function yu(e){return new K().addUserMessage(`Return the sentiment of this text: "${e}". Only return the sentiment.`)}function hu(e){return new K().addUserMessage(`Search the web for the following: "${e}". Only return the top results.`)}function Au(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:
@@ -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 Tu(){let e=`
147
+ ${r}`)}function Eu(){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 K().addSystemMessage(e)}function Eu(){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 K().addSystemMessage(e)}function Ru(){let e=`
155
+ `;return new K().addSystemMessage(e)}function Tu(){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 K().addSystemMessage(e)}function Ru(){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 K().addSystemMessage(e)}function Wk(e){return`You are a helpful support agent who uses workflows to resolve user issues efficiently.
158
+ `;return new K().addSystemMessage(e)}function WM(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.
@@ -170,15 +170,15 @@ Avoid placeholder values like "foo" or "bar". Use real names, emails, etc., and
170
170
 
171
171
  \`\`\`
172
172
  ${JSON.stringify(e)}
173
- \`\`\``}function jk(){return`You will be provided with a set of history, a conversation between a user and an AI. Using this
173
+ \`\`\``}function jM(){return`You will be provided with a set of history, a conversation between a user and an AI. Using this
174
174
  information generate a title for the conversation, this should start with a capital letter and MUST be
175
- less than five words.`}var qa=require("@budibase/backend-core"),EI=require("@budibase/shared-core");var ct=require("@budibase/types"),wI=require("@budibase/backend-core");function vu(e){let t=[],r=[];for(let a of e.tables){let n=a.schema.reduce((o,s)=>{if(s.type===ct.FieldType.LINK){if(!r.includes(s.relationshipId)){let i={[ct.RelationshipType.MANY_TO_ONE]:ct.RelationshipType.ONE_TO_MANY,[ct.RelationshipType.ONE_TO_MANY]:ct.RelationshipType.MANY_TO_ONE,[ct.RelationshipType.MANY_TO_MANY]:ct.RelationshipType.MANY_TO_MANY},{reverseFieldName:c,relationshipId:f,...m}=s;o[s.name]={...m,fieldName:c,relationshipType:i[s.relationshipType]},r.push(f)}}else o[s.name]=s;return o},{});t.push({_id:wI.docIds.generateTableID(),name:a.name,primaryDisplay:a.primaryDisplay,schema:n})}return t}function _u(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"),de=A.z.object({name:A.z.string().describe("A human readable name for the field. It MUST be alpha-numeric and capitalised.")}),xu=de.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.")}),Qk=A.z.array(A.z.union([de.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().nullable()}),xu.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."),xu.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."),xu.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."),de.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"),de.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")}),de.extend({type:A.z.literal(T.FieldType.FORMULA),formula:A.z.string().describe(`
175
+ less than five words.`}var qa=require("@budibase/backend-core"),TI=require("@budibase/shared-core");var ct=require("@budibase/types"),wI=require("@budibase/backend-core");function vu(e){let t=[],r=[];for(let a of e.tables){let n=a.schema.reduce((o,s)=>{if(s.type===ct.FieldType.LINK){if(!r.includes(s.relationshipId)){let i={[ct.RelationshipType.MANY_TO_ONE]:ct.RelationshipType.ONE_TO_MANY,[ct.RelationshipType.ONE_TO_MANY]:ct.RelationshipType.MANY_TO_ONE,[ct.RelationshipType.MANY_TO_MANY]:ct.RelationshipType.MANY_TO_MANY},{reverseFieldName:c,relationshipId:f,...m}=s;o[s.name]={...m,fieldName:c,relationshipType:i[s.relationshipType]},r.push(f)}}else o[s.name]=s;return o},{});t.push({_id:wI.docIds.generateTableID(),name:a.name,primaryDisplay:a.primaryDisplay,schema:n})}return t}function _u(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 E=require("@budibase/types"),A=require("zod"),de=A.z.object({name:A.z.string().describe("A human readable name for the field. It MUST be alpha-numeric and capitalised.")}),xu=de.extend({type:A.z.literal(E.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.")}),QM=A.z.array(A.z.union([de.extend({type:A.z.enum([E.FieldType.STRING,E.FieldType.NUMBER,E.FieldType.BOOLEAN,E.FieldType.LONGFORM]),constraints:A.z.object({presence:A.z.boolean()}).optional().nullable()}),xu.extend({relationshipType:A.z.enum([E.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."),xu.extend({relationshipType:A.z.enum([E.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."),xu.extend({relationshipType:A.z.enum([E.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."),de.extend({type:A.z.literal(E.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"),de.extend({type:A.z.literal(E.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(E.JsonFieldSubType.ARRAY)}).describe("Multiple selected options from closed set of options")}),de.extend({type:A.z.literal(E.FieldType.FORMULA),formula:A.z.string().describe(`
176
176
  A JavaScript expression using only previously defined fields.
177
177
  Reference fields using $("Field name"). Must end with: return ...
178
178
  Example: return $("Score") + $("Weight")
179
- `),responseType:A.z.enum([T.FieldType.STRING,T.FieldType.NUMBER,T.FieldType.BOOLEAN,T.FieldType.DATETIME])}).describe("Define these types after the other types"),de.extend({type:A.z.literal(T.FieldType.DATETIME),ignoreTimezones:A.z.boolean()}).describe("A datetime field, storing date and time"),de.extend({type:A.z.literal(T.FieldType.DATETIME),ignoreTimezones:A.z.boolean(),timeOnly:A.z.literal(!0)}).describe("A time only field"),de.extend({type:A.z.literal(T.FieldType.DATETIME),ignoreTimezones:A.z.boolean(),dateOnly:A.z.literal(!0)}).describe("A date only field"),de.extend({type:A.z.literal(T.FieldType.ATTACHMENT_SINGLE),subtype:A.z.literal(T.AttachmentSubType.IMAGE)}).describe("Single image column"),de.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."),de.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."),de.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.")])),Cu=A.z.object({tables:A.z.array(A.z.object({name:A.z.string(),schema:Qk,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 Ou(e){let t=A.z.object({});for(let r of e){let a=Object.values(r.schema),n=[de.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."),de.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(de.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 G=require("zod"),TI=require("@budibase/shared-core"),D=require("@budibase/types");function Lu(e){let t=G.z.object({});for(let r of e){let a={_id:G.z.string().describe("Unique ID for the row")},n=G.z.union([G.z.literal("https://picsum.photos/600/600").describe("For profile pictures and similar"),G.z.literal("https://picsum.photos/1920/1080").describe("For anything else")]),o=G.z.object({fileName:G.z.string(),extension:G.z.enum([".pdf",".txt"]),content:G.z.string().describe("Random content for the file")});for(let s of Object.values(r.schema)){let{type:i}=s;switch(i){case D.FieldType.STRING:case D.FieldType.LONGFORM:a[s.name]=G.z.string();break;case D.FieldType.NUMBER:case D.FieldType.BIGINT:a[s.name]=G.z.number();break;case D.FieldType.BOOLEAN:a[s.name]=G.z.boolean();break;case D.FieldType.DATETIME:a[s.name]=G.z.string().describe(`ISO datetime. Use realistic dates, based on today's date, ${new Date().toISOString()}`);break;case D.FieldType.ATTACHMENT_SINGLE:s.subtype===D.AttachmentSubType.IMAGE?a[s.name]=n:a[s.name]=o;break;case D.FieldType.ATTACHMENTS:s.subtype===D.AttachmentSubType.IMAGE?a[s.name]=G.z.array(n):a[s.name]=G.z.array(o),a[s.name]=a[s.name].describe("Between 2 and 5 items.");break;case D.FieldType.OPTIONS:a[s.name]=G.z.enum(s.constraints.inclusion);break;case D.FieldType.LINK:{let c=G.z.string().describe(`Match one of the _ids created for table "${s.tableId}"`);s.relationshipType===D.RelationshipType.ONE_TO_MANY?a[s.name]=G.z.array(c).describe("Array with a single item"):s.relationshipType===D.RelationshipType.MANY_TO_MANY&&(a[s.name]=G.z.array(c).describe("Array with a one or many items. You can repeat the same ids between rows"))}break;case D.FieldType.ARRAY:a[s.name]=G.z.array(G.z.enum(s.constraints.inclusion));break;case D.FieldType.AI:case D.FieldType.AUTO:case D.FieldType.SIGNATURE_SINGLE:case D.FieldType.BB_REFERENCE:case D.FieldType.JSON:case D.FieldType.FORMULA:case D.FieldType.INTERNAL:case D.FieldType.BARCODEQR:case D.FieldType.BB_REFERENCE_SINGLE:break;default:throw TI.utils.unreachable(i)}}t=t.extend({[r.name]:G.z.array(G.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
+ `),responseType:A.z.enum([E.FieldType.STRING,E.FieldType.NUMBER,E.FieldType.BOOLEAN,E.FieldType.DATETIME])}).describe("Define these types after the other types"),de.extend({type:A.z.literal(E.FieldType.DATETIME),ignoreTimezones:A.z.boolean()}).describe("A datetime field, storing date and time"),de.extend({type:A.z.literal(E.FieldType.DATETIME),ignoreTimezones:A.z.boolean(),timeOnly:A.z.literal(!0)}).describe("A time only field"),de.extend({type:A.z.literal(E.FieldType.DATETIME),ignoreTimezones:A.z.boolean(),dateOnly:A.z.literal(!0)}).describe("A date only field"),de.extend({type:A.z.literal(E.FieldType.ATTACHMENT_SINGLE),subtype:A.z.literal(E.AttachmentSubType.IMAGE)}).describe("Single image column"),de.extend({type:A.z.literal(E.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."),de.extend({type:A.z.literal(E.FieldType.ATTACHMENTS),subtype:A.z.literal(E.AttachmentSubType.IMAGE)}).describe("Multiple images column. Use an appropiate name for the columns, like 'Gallery', 'Photos', etc."),de.extend({type:A.z.literal(E.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.")])),Cu=A.z.object({tables:A.z.array(A.z.object({name:A.z.string(),schema:QM,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 Ou(e){let t=A.z.object({});for(let r of e){let a=Object.values(r.schema),n=[de.extend({type:A.z.literal(E.FieldType.AI),operation:A.z.literal(E.AIOperationEnum.TRANSLATE),column:A.z.enum(a.filter(o=>[E.FieldType.STRING,E.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."),de.extend({type:A.z.literal(E.FieldType.AI),operation:A.z.literal(E.AIOperationEnum.CATEGORISE_TEXT),columns:A.z.array(A.z.enum(a.filter(o=>[E.FieldType.STRING,E.FieldType.LONGFORM,E.FieldType.BOOLEAN,E.FieldType.NUMBER,E.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===E.FieldType.LONGFORM)&&n.push(de.extend({type:A.z.literal(E.FieldType.AI),operation:A.z.literal(E.AIOperationEnum.SUMMARISE_TEXT),columns:A.z.array(A.z.enum(a.filter(o=>[E.FieldType.STRING,E.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 G=require("zod"),EI=require("@budibase/shared-core"),D=require("@budibase/types");function Lu(e){let t=G.z.object({});for(let r of e){let a={_id:G.z.string().describe("Unique ID for the row")},n=G.z.union([G.z.literal("https://picsum.photos/600/600").describe("For profile pictures and similar"),G.z.literal("https://picsum.photos/1920/1080").describe("For anything else")]),o=G.z.object({fileName:G.z.string(),extension:G.z.enum([".pdf",".txt"]),content:G.z.string().describe("Random content for the file")});for(let s of Object.values(r.schema)){let{type:i}=s;switch(i){case D.FieldType.STRING:case D.FieldType.LONGFORM:a[s.name]=G.z.string();break;case D.FieldType.NUMBER:case D.FieldType.BIGINT:a[s.name]=G.z.number();break;case D.FieldType.BOOLEAN:a[s.name]=G.z.boolean();break;case D.FieldType.DATETIME:a[s.name]=G.z.string().describe(`ISO datetime. Use realistic dates, based on today's date, ${new Date().toISOString()}`);break;case D.FieldType.ATTACHMENT_SINGLE:s.subtype===D.AttachmentSubType.IMAGE?a[s.name]=n:a[s.name]=o;break;case D.FieldType.ATTACHMENTS:s.subtype===D.AttachmentSubType.IMAGE?a[s.name]=G.z.array(n):a[s.name]=G.z.array(o),a[s.name]=a[s.name].describe("Between 2 and 5 items.");break;case D.FieldType.OPTIONS:a[s.name]=G.z.enum(s.constraints.inclusion);break;case D.FieldType.LINK:{let c=G.z.string().describe(`Match one of the _ids created for table "${s.tableId}"`);s.relationshipType===D.RelationshipType.ONE_TO_MANY?a[s.name]=G.z.array(c).describe("Array with a single item"):s.relationshipType===D.RelationshipType.MANY_TO_MANY&&(a[s.name]=G.z.array(c).describe("Array with a one or many items. You can repeat the same ids between rows"))}break;case D.FieldType.ARRAY:a[s.name]=G.z.array(G.z.enum(s.constraints.inclusion));break;case D.FieldType.AI:case D.FieldType.AUTO:case D.FieldType.SIGNATURE_SINGLE:case D.FieldType.BB_REFERENCE:case D.FieldType.JSON:case D.FieldType.FORMULA:case D.FieldType.INTERNAL:case D.FieldType.BARCODEQR:case D.FieldType.BB_REFERENCE_SINGLE:break;default:throw EI.utils.unreachable(i)}}t=t.extend({[r.name]:G.z.array(G.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:
180
180
  1. If we have posts and comments, there should be more posts than users, and more comments than posts.
181
181
  2. If it's a ticketing system, there may be more tickets than users, and some users may have submitted several tickets.
182
182
  3. In a CRM, there are fewer users than customers, and customers may have many deals.
183
- 4. In a project management tool, projects might have many tasks, and tasks might have multiple comments.`)}return t}var Da=P(require("dd-trace")),Pu=class e{constructor(t,r){this.llmFunctions={getTableStructure:async t=>Da.default.trace("llm.getTableStructure",async()=>{let r=await this.llm.prompt(Tu().addUserMessage(t).withFormat(Cu));try{let a=JSON.parse(r.message);return vu(a)}catch{throw new qa.HTTPError("Error generating tables",500)}}),generateAIColumns:(t,r)=>Da.default.trace("llm.generateAIColumns",async()=>this.generateAIColumns(t,r)),generateData:async(t,r)=>Da.default.trace("llm.generateData",async()=>{let a=await this.llm.prompt(Ru().addUserMessage(t).withFormat(Lu(r)));try{return JSON.parse(a.message)}catch{throw new qa.HTTPError("Error generating data",500)}})};this.llm=t,this.delegates=r}static async init(t){let r=await Ua({model:"gpt-5-mini",maxTokens:5e3});if(!r)throw new qa.HTTPError("LLM not available",422);return new e(r,t)}async generate(t,r){return Da.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(_u(a,i))),o=await this.llmFunctions.generateData(t,a),s=await n;return await this.delegates.generateDataDelegate(o,r,EI.utils.toMap("name",a)),s}async generateAIColumns(t,r){let a=await this.llm.prompt(Eu().addUserMessage(`This is the initial user prompt that generated the given schema:
183
+ 4. In a project management tool, projects might have many tasks, and tasks might have multiple comments.`)}return t}var Da=P(require("dd-trace")),Pu=class e{constructor(t,r){this.llmFunctions={getTableStructure:async t=>Da.default.trace("llm.getTableStructure",async()=>{let r=await this.llm.prompt(Eu().addUserMessage(t).withFormat(Cu));try{let a=JSON.parse(r.message);return vu(a)}catch{throw new qa.HTTPError("Error generating tables",500)}}),generateAIColumns:(t,r)=>Da.default.trace("llm.generateAIColumns",async()=>this.generateAIColumns(t,r)),generateData:async(t,r)=>Da.default.trace("llm.generateData",async()=>{let a=await this.llm.prompt(Ru().addUserMessage(t).withFormat(Lu(r)));try{return JSON.parse(a.message)}catch{throw new qa.HTTPError("Error generating data",500)}})};this.llm=t,this.delegates=r}static async init(t){let r=await Ua({model:"gpt-5-mini",maxTokens:5e3});if(!r)throw new qa.HTTPError("LLM not available",422);return new e(r,t)}async generate(t,r){return Da.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(_u(a,i))),o=await this.llmFunctions.generateData(t,a),s=await n;return await this.delegates.generateDataDelegate(o,r,TI.utils.toMap("name",a)),s}async generateAIColumns(t,r){let a=await this.llm.prompt(Tu().addUserMessage(`This is the initial user prompt that generated the given schema:
184
184
  "${t}"`).withFormat(Ou(r)));try{return JSON.parse(a.message)}catch{throw new qa.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});