@budibase/pro 3.12.12 → 3.12.14
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 +28 -27
- package/dist/types/ai.d.ts +3 -2
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
"use strict";var vI=Object.create;var qa=Object.defineProperty;var EI=Object.getOwnPropertyDescriptor;var RI=Object.getOwnPropertyNames;var _I=Object.getPrototypeOf,xI=Object.prototype.hasOwnProperty;var u=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),w=(e,t)=>{for(var r in t)qa(e,r,{get:t[r],enumerable:!0})},Nu=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of RI(t))!xI.call(e,n)&&n!==r&&qa(e,n,{get:()=>t[n],enumerable:!(a=EI(t,n))||a.enumerable});return e};var P=(e,t,r)=>(r=e!=null?vI(_I(e)):{},Nu(t||!e||!e.__esModule?qa(r,"default",{value:e,enumerable:!0}):r,e)),CI=e=>Nu(qa({},"__esModule",{value:!0}),e);var za=u((Yk,Sp)=>{"use strict";function RS(e,t){for(var r=-1,a=t.length,n=e.length;++r<a;)e[n+r]=t[r];return e}Sp.exports=RS});var vo=u((Hk,wp)=>{"use strict";var _S=typeof global=="object"&&global&&global.Object===Object&&global;wp.exports=_S});var oe=u((zk,Tp)=>{"use strict";var xS=vo(),CS=typeof self=="object"&&self&&self.Object===Object&&self,OS=xS||CS||Function("return this")();Tp.exports=OS});var xt=u((Jk,vp)=>{"use strict";var LS=oe(),PS=LS.Symbol;vp.exports=PS});var xp=u((Xk,_p)=>{"use strict";var Ep=xt(),Rp=Object.prototype,US=Rp.hasOwnProperty,qS=Rp.toString,Hr=Ep?Ep.toStringTag:void 0;function DS(e){var t=US.call(e,Hr),r=e[Hr];try{e[Hr]=void 0;var a=!0}catch{}var n=qS.call(e);return a&&(t?e[Hr]=r:delete e[Hr]),n}_p.exports=DS});var Op=u((Zk,Cp)=>{"use strict";var NS=Object.prototype,BS=NS.toString;function MS(e){return BS.call(e)}Cp.exports=MS});var mt=u((e0,Up)=>{"use strict";var Lp=xt(),GS=xp(),kS=Op(),FS="[object Null]",QS="[object Undefined]",Pp=Lp?Lp.toStringTag:void 0;function jS(e){return e==null?e===void 0?QS:FS:Pp&&Pp in Object(e)?GS(e):kS(e)}Up.exports=jS});var he=u((t0,qp)=>{"use strict";function WS(e){return e!=null&&typeof e=="object"}qp.exports=WS});var Np=u((r0,Dp)=>{"use strict";var $S=mt(),KS=he(),VS="[object Arguments]";function YS(e){return KS(e)&&$S(e)==VS}Dp.exports=YS});var zr=u((a0,Gp)=>{"use strict";var Bp=Np(),HS=he(),Mp=Object.prototype,zS=Mp.hasOwnProperty,JS=Mp.propertyIsEnumerable,XS=Bp(function(){return arguments}())?Bp:function(e){return HS(e)&&zS.call(e,"callee")&&!JS.call(e,"callee")};Gp.exports=XS});var re=u((n0,kp)=>{"use strict";var ZS=Array.isArray;kp.exports=ZS});var Wp=u((o0,jp)=>{"use strict";var Fp=xt(),ew=zr(),tw=re(),Qp=Fp?Fp.isConcatSpreadable:void 0;function rw(e){return tw(e)||ew(e)||!!(Qp&&e&&e[Qp])}jp.exports=rw});var Eo=u((s0,Kp)=>{"use strict";var aw=za(),nw=Wp();function $p(e,t,r,a,n){var o=-1,s=e.length;for(r||(r=nw),n||(n=[]);++o<s;){var i=e[o];t>0&&r(i)?t>1?$p(i,t-1,r,a,n):aw(n,i):a||(n[n.length]=i)}return n}Kp.exports=$p});var Jr=u((i0,Vp)=>{"use strict";function ow(e){return e}Vp.exports=ow});var Ja=u((u0,Yp)=>{"use strict";function sw(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}Yp.exports=sw});var Ro=u((p0,zp)=>{"use strict";var iw=Ja(),Hp=Math.max;function uw(e,t,r){return t=Hp(t===void 0?e.length-1:t,0),function(){for(var a=arguments,n=-1,o=Hp(a.length-t,0),s=Array(o);++n<o;)s[n]=a[t+n];n=-1;for(var i=Array(t+1);++n<t;)i[n]=a[n];return i[t]=r(s),iw(e,this,i)}}zp.exports=uw});var Xp=u((c0,Jp)=>{"use strict";function pw(e){return function(){return e}}Jp.exports=pw});var Ee=u((l0,Zp)=>{"use strict";function cw(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}Zp.exports=cw});var Xr=u((d0,ec)=>{"use strict";var lw=mt(),dw=Ee(),fw="[object AsyncFunction]",mw="[object Function]",gw="[object GeneratorFunction]",hw="[object Proxy]";function yw(e){if(!dw(e))return!1;var t=lw(e);return t==mw||t==gw||t==fw||t==hw}ec.exports=yw});var rc=u((f0,tc)=>{"use strict";var Aw=oe(),bw=Aw["__core-js_shared__"];tc.exports=bw});var oc=u((m0,nc)=>{"use strict";var _o=rc(),ac=function(){var e=/[^.]+$/.exec(_o&&_o.keys&&_o.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function Iw(e){return!!ac&&ac in e}nc.exports=Iw});var xo=u((g0,sc)=>{"use strict";var Sw=Function.prototype,ww=Sw.toString;function Tw(e){if(e!=null){try{return ww.call(e)}catch{}try{return e+""}catch{}}return""}sc.exports=Tw});var uc=u((h0,ic)=>{"use strict";var vw=Xr(),Ew=oc(),Rw=Ee(),_w=xo(),xw=/[\\^$.*+?()[\]{}|]/g,Cw=/^\[object .+?Constructor\]$/,Ow=Function.prototype,Lw=Object.prototype,Pw=Ow.toString,Uw=Lw.hasOwnProperty,qw=RegExp("^"+Pw.call(Uw).replace(xw,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Dw(e){if(!Rw(e)||Ew(e))return!1;var t=vw(e)?qw:Cw;return t.test(_w(e))}ic.exports=Dw});var cc=u((y0,pc)=>{"use strict";function Nw(e,t){return e?.[t]}pc.exports=Nw});var gt=u((A0,lc)=>{"use strict";var Bw=uc(),Mw=cc();function Gw(e,t){var r=Mw(e,t);return Bw(r)?r:void 0}lc.exports=Gw});var Co=u((b0,dc)=>{"use strict";var kw=gt(),Fw=function(){try{var e=kw(Object,"defineProperty");return e({},"",{}),e}catch{}}();dc.exports=Fw});var gc=u((I0,mc)=>{"use strict";var Qw=Xp(),fc=Co(),jw=Jr(),Ww=fc?function(e,t){return fc(e,"toString",{configurable:!0,enumerable:!1,value:Qw(t),writable:!0})}:jw;mc.exports=Ww});var Oo=u((S0,hc)=>{"use strict";var $w=800,Kw=16,Vw=Date.now;function Yw(e){var t=0,r=0;return function(){var a=Vw(),n=Kw-(a-r);if(r=a,n>0){if(++t>=$w)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}hc.exports=Yw});var Xa=u((w0,yc)=>{"use strict";var Hw=gc(),zw=Oo(),Jw=zw(Hw);yc.exports=Jw});var Lo=u((T0,Ac)=>{"use strict";var Xw=Jr(),Zw=Ro(),eT=Xa();function tT(e,t){return eT(Zw(e,t,Xw),e+"")}Ac.exports=tT});var Zr=u((v0,bc)=>{"use strict";var rT=gt(),aT=rT(Object,"create");bc.exports=aT});var wc=u((E0,Sc)=>{"use strict";var Ic=Zr();function nT(){this.__data__=Ic?Ic(null):{},this.size=0}Sc.exports=nT});var vc=u((R0,Tc)=>{"use strict";function oT(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}Tc.exports=oT});var Rc=u((_0,Ec)=>{"use strict";var sT=Zr(),iT="__lodash_hash_undefined__",uT=Object.prototype,pT=uT.hasOwnProperty;function cT(e){var t=this.__data__;if(sT){var r=t[e];return r===iT?void 0:r}return pT.call(t,e)?t[e]:void 0}Ec.exports=cT});var xc=u((x0,_c)=>{"use strict";var lT=Zr(),dT=Object.prototype,fT=dT.hasOwnProperty;function mT(e){var t=this.__data__;return lT?t[e]!==void 0:fT.call(t,e)}_c.exports=mT});var Oc=u((C0,Cc)=>{"use strict";var gT=Zr(),hT="__lodash_hash_undefined__";function yT(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=gT&&t===void 0?hT:t,this}Cc.exports=yT});var Pc=u((O0,Lc)=>{"use strict";var AT=wc(),bT=vc(),IT=Rc(),ST=xc(),wT=Oc();function Yt(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var a=e[t];this.set(a[0],a[1])}}Yt.prototype.clear=AT;Yt.prototype.delete=bT;Yt.prototype.get=IT;Yt.prototype.has=ST;Yt.prototype.set=wT;Lc.exports=Yt});var qc=u((L0,Uc)=>{"use strict";function TT(){this.__data__=[],this.size=0}Uc.exports=TT});var Ht=u((P0,Dc)=>{"use strict";function vT(e,t){return e===t||e!==e&&t!==t}Dc.exports=vT});var ea=u((U0,Nc)=>{"use strict";var ET=Ht();function RT(e,t){for(var r=e.length;r--;)if(ET(e[r][0],t))return r;return-1}Nc.exports=RT});var Mc=u((q0,Bc)=>{"use strict";var _T=ea(),xT=Array.prototype,CT=xT.splice;function OT(e){var t=this.__data__,r=_T(t,e);if(r<0)return!1;var a=t.length-1;return r==a?t.pop():CT.call(t,r,1),--this.size,!0}Bc.exports=OT});var kc=u((D0,Gc)=>{"use strict";var LT=ea();function PT(e){var t=this.__data__,r=LT(t,e);return r<0?void 0:t[r][1]}Gc.exports=PT});var Qc=u((N0,Fc)=>{"use strict";var UT=ea();function qT(e){return UT(this.__data__,e)>-1}Fc.exports=qT});var Wc=u((B0,jc)=>{"use strict";var DT=ea();function NT(e,t){var r=this.__data__,a=DT(r,e);return a<0?(++this.size,r.push([e,t])):r[a][1]=t,this}jc.exports=NT});var ta=u((M0,$c)=>{"use strict";var BT=qc(),MT=Mc(),GT=kc(),kT=Qc(),FT=Wc();function zt(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var a=e[t];this.set(a[0],a[1])}}zt.prototype.clear=BT;zt.prototype.delete=MT;zt.prototype.get=GT;zt.prototype.has=kT;zt.prototype.set=FT;$c.exports=zt});var Za=u((G0,Kc)=>{"use strict";var QT=gt(),jT=oe(),WT=QT(jT,"Map");Kc.exports=WT});var Hc=u((k0,Yc)=>{"use strict";var Vc=Pc(),$T=ta(),KT=Za();function VT(){this.size=0,this.__data__={hash:new Vc,map:new(KT||$T),string:new Vc}}Yc.exports=VT});var Jc=u((F0,zc)=>{"use strict";function YT(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}zc.exports=YT});var ra=u((Q0,Xc)=>{"use strict";var HT=Jc();function zT(e,t){var r=e.__data__;return HT(t)?r[typeof t=="string"?"string":"hash"]:r.map}Xc.exports=zT});var el=u((j0,Zc)=>{"use strict";var JT=ra();function XT(e){var t=JT(this,e).delete(e);return this.size-=t?1:0,t}Zc.exports=XT});var rl=u((W0,tl)=>{"use strict";var ZT=ra();function ev(e){return ZT(this,e).get(e)}tl.exports=ev});var nl=u(($0,al)=>{"use strict";var tv=ra();function rv(e){return tv(this,e).has(e)}al.exports=rv});var sl=u((K0,ol)=>{"use strict";var av=ra();function nv(e,t){var r=av(this,e),a=r.size;return r.set(e,t),this.size+=r.size==a?0:1,this}ol.exports=nv});var en=u((V0,il)=>{"use strict";var ov=Hc(),sv=el(),iv=rl(),uv=nl(),pv=sl();function Jt(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var a=e[t];this.set(a[0],a[1])}}Jt.prototype.clear=ov;Jt.prototype.delete=sv;Jt.prototype.get=iv;Jt.prototype.has=uv;Jt.prototype.set=pv;il.exports=Jt});var pl=u((Y0,ul)=>{"use strict";var cv="__lodash_hash_undefined__";function lv(e){return this.__data__.set(e,cv),this}ul.exports=lv});var ll=u((H0,cl)=>{"use strict";function dv(e){return this.__data__.has(e)}cl.exports=dv});var Po=u((z0,dl)=>{"use strict";var fv=en(),mv=pl(),gv=ll();function tn(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new fv;++t<r;)this.add(e[t])}tn.prototype.add=tn.prototype.push=mv;tn.prototype.has=gv;dl.exports=tn});var ml=u((J0,fl)=>{"use strict";function hv(e,t,r,a){for(var n=e.length,o=r+(a?1:-1);a?o--:++o<n;)if(t(e[o],o,e))return o;return-1}fl.exports=hv});var hl=u((X0,gl)=>{"use strict";function yv(e){return e!==e}gl.exports=yv});var Al=u((Z0,yl)=>{"use strict";function Av(e,t,r){for(var a=r-1,n=e.length;++a<n;)if(e[a]===t)return a;return-1}yl.exports=Av});var Il=u((eF,bl)=>{"use strict";var bv=ml(),Iv=hl(),Sv=Al();function wv(e,t,r){return t===t?Sv(e,t,r):bv(e,Iv,r)}bl.exports=wv});var Uo=u((tF,Sl)=>{"use strict";var Tv=Il();function vv(e,t){var r=e==null?0:e.length;return!!r&&Tv(e,t,0)>-1}Sl.exports=vv});var Tl=u((rF,wl)=>{"use strict";function Ev(e,t,r){for(var a=-1,n=e==null?0:e.length;++a<n;)if(r(t,e[a]))return!0;return!1}wl.exports=Ev});var qo=u((aF,vl)=>{"use strict";function Rv(e,t){return e.has(t)}vl.exports=Rv});var Do=u((nF,El)=>{"use strict";var _v=gt(),xv=oe(),Cv=_v(xv,"Set");El.exports=Cv});var No=u((oF,Rl)=>{"use strict";function Ov(){}Rl.exports=Ov});var rn=u((sF,_l)=>{"use strict";function Lv(e){var t=-1,r=Array(e.size);return e.forEach(function(a){r[++t]=a}),r}_l.exports=Lv});var Cl=u((iF,xl)=>{"use strict";var Bo=Do(),Pv=No(),Uv=rn(),qv=1/0,Dv=Bo&&1/Uv(new Bo([,-0]))[1]==qv?function(e){return new Bo(e)}:Pv;xl.exports=Dv});var Ll=u((uF,Ol)=>{"use strict";var Nv=Po(),Bv=Uo(),Mv=Tl(),Gv=qo(),kv=Cl(),Fv=rn(),Qv=200;function jv(e,t,r){var a=-1,n=Bv,o=e.length,s=!0,i=[],p=i;if(r)s=!1,n=Mv;else if(o>=Qv){var m=t?null:kv(e);if(m)return Fv(m);s=!1,n=Gv,p=new Nv}else p=t?[]:i;e:for(;++a<o;){var f=e[a],h=t?t(f):f;if(f=r||f!==0?f:0,s&&h===h){for(var g=p.length;g--;)if(p[g]===h)continue e;t&&p.push(h),i.push(f)}else n(p,h,r)||(p!==i&&p.push(h),i.push(f))}return i}Ol.exports=jv});var an=u((pF,Pl)=>{"use strict";var Wv=9007199254740991;function $v(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=Wv}Pl.exports=$v});var Xt=u((cF,Ul)=>{"use strict";var Kv=Xr(),Vv=an();function Yv(e){return e!=null&&Vv(e.length)&&!Kv(e)}Ul.exports=Yv});var Mo=u((lF,ql)=>{"use strict";var Hv=Xt(),zv=he();function Jv(e){return zv(e)&&Hv(e)}ql.exports=Jv});var Nl=u((dF,Dl)=>{"use strict";var Xv=Eo(),Zv=Lo(),eE=Ll(),tE=Mo(),rE=Zv(function(e){return eE(Xv(e,1,tE,!0))});Dl.exports=rE});var Ml=u((fF,Bl)=>{"use strict";var aE=ta();function nE(){this.__data__=new aE,this.size=0}Bl.exports=nE});var kl=u((mF,Gl)=>{"use strict";function oE(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}Gl.exports=oE});var Ql=u((gF,Fl)=>{"use strict";function sE(e){return this.__data__.get(e)}Fl.exports=sE});var Wl=u((hF,jl)=>{"use strict";function iE(e){return this.__data__.has(e)}jl.exports=iE});var Kl=u((yF,$l)=>{"use strict";var uE=ta(),pE=Za(),cE=en(),lE=200;function dE(e,t){var r=this.__data__;if(r instanceof uE){var a=r.__data__;if(!pE||a.length<lE-1)return a.push([e,t]),this.size=++r.size,this;r=this.__data__=new cE(a)}return r.set(e,t),this.size=r.size,this}$l.exports=dE});var aa=u((AF,Vl)=>{"use strict";var fE=ta(),mE=Ml(),gE=kl(),hE=Ql(),yE=Wl(),AE=Kl();function Zt(e){var t=this.__data__=new fE(e);this.size=t.size}Zt.prototype.clear=mE;Zt.prototype.delete=gE;Zt.prototype.get=hE;Zt.prototype.has=yE;Zt.prototype.set=AE;Vl.exports=Zt});var na=u((bF,Hl)=>{"use strict";var Yl=Co();function bE(e,t,r){t=="__proto__"&&Yl?Yl(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}Hl.exports=bE});var Go=u((IF,zl)=>{"use strict";var IE=na(),SE=Ht();function wE(e,t,r){(r!==void 0&&!SE(e[t],r)||r===void 0&&!(t in e))&&IE(e,t,r)}zl.exports=wE});var Xl=u((SF,Jl)=>{"use strict";function TE(e){return function(t,r,a){for(var n=-1,o=Object(t),s=a(t),i=s.length;i--;){var p=s[e?i:++n];if(r(o[p],p,o)===!1)break}return t}}Jl.exports=TE});var ko=u((wF,Zl)=>{"use strict";var vE=Xl(),EE=vE();Zl.exports=EE});var Fo=u((oa,er)=>{"use strict";var RE=oe(),ad=typeof oa=="object"&&oa&&!oa.nodeType&&oa,ed=ad&&typeof er=="object"&&er&&!er.nodeType&&er,_E=ed&&ed.exports===ad,td=_E?RE.Buffer:void 0,rd=td?td.allocUnsafe:void 0;function xE(e,t){if(t)return e.slice();var r=e.length,a=rd?rd(r):new e.constructor(r);return e.copy(a),a}er.exports=xE});var Qo=u((TF,nd)=>{"use strict";var CE=oe(),OE=CE.Uint8Array;nd.exports=OE});var nn=u((vF,sd)=>{"use strict";var od=Qo();function LE(e){var t=new e.constructor(e.byteLength);return new od(t).set(new od(e)),t}sd.exports=LE});var jo=u((EF,id)=>{"use strict";var PE=nn();function UE(e,t){var r=t?PE(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}id.exports=UE});var tr=u((RF,ud)=>{"use strict";function qE(e,t){var r=-1,a=e.length;for(t||(t=Array(a));++r<a;)t[r]=e[r];return t}ud.exports=qE});var sa=u((_F,cd)=>{"use strict";var DE=Ee(),pd=Object.create,NE=function(){function e(){}return function(t){if(!DE(t))return{};if(pd)return pd(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();cd.exports=NE});var Wo=u((xF,ld)=>{"use strict";function BE(e,t){return function(r){return e(t(r))}}ld.exports=BE});var on=u((CF,dd)=>{"use strict";var ME=Wo(),GE=ME(Object.getPrototypeOf,Object);dd.exports=GE});var sn=u((OF,fd)=>{"use strict";var kE=Object.prototype;function FE(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||kE;return e===r}fd.exports=FE});var $o=u((LF,md)=>{"use strict";var QE=sa(),jE=on(),WE=sn();function $E(e){return typeof e.constructor=="function"&&!WE(e)?QE(jE(e)):{}}md.exports=$E});var hd=u((PF,gd)=>{"use strict";function KE(){return!1}gd.exports=KE});var ua=u((ia,rr)=>{"use strict";var VE=oe(),YE=hd(),bd=typeof ia=="object"&&ia&&!ia.nodeType&&ia,yd=bd&&typeof rr=="object"&&rr&&!rr.nodeType&&rr,HE=yd&&yd.exports===bd,Ad=HE?VE.Buffer:void 0,zE=Ad?Ad.isBuffer:void 0,JE=zE||YE;rr.exports=JE});var Ko=u((UF,Sd)=>{"use strict";var XE=mt(),ZE=on(),eR=he(),tR="[object Object]",rR=Function.prototype,aR=Object.prototype,Id=rR.toString,nR=aR.hasOwnProperty,oR=Id.call(Object);function sR(e){if(!eR(e)||XE(e)!=tR)return!1;var t=ZE(e);if(t===null)return!0;var r=nR.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Id.call(r)==oR}Sd.exports=sR});var Td=u((qF,wd)=>{"use strict";var iR=mt(),uR=an(),pR=he(),cR="[object Arguments]",lR="[object Array]",dR="[object Boolean]",fR="[object Date]",mR="[object Error]",gR="[object Function]",hR="[object Map]",yR="[object Number]",AR="[object Object]",bR="[object RegExp]",IR="[object Set]",SR="[object String]",wR="[object WeakMap]",TR="[object ArrayBuffer]",vR="[object DataView]",ER="[object Float32Array]",RR="[object Float64Array]",_R="[object Int8Array]",xR="[object Int16Array]",CR="[object Int32Array]",OR="[object Uint8Array]",LR="[object Uint8ClampedArray]",PR="[object Uint16Array]",UR="[object Uint32Array]",B={};B[ER]=B[RR]=B[_R]=B[xR]=B[CR]=B[OR]=B[LR]=B[PR]=B[UR]=!0;B[cR]=B[lR]=B[TR]=B[dR]=B[vR]=B[fR]=B[mR]=B[gR]=B[hR]=B[yR]=B[AR]=B[bR]=B[IR]=B[SR]=B[wR]=!1;function qR(e){return pR(e)&&uR(e.length)&&!!B[iR(e)]}wd.exports=qR});var un=u((DF,vd)=>{"use strict";function DR(e){return function(t){return e(t)}}vd.exports=DR});var pn=u((pa,ar)=>{"use strict";var NR=vo(),Ed=typeof pa=="object"&&pa&&!pa.nodeType&&pa,ca=Ed&&typeof ar=="object"&&ar&&!ar.nodeType&&ar,BR=ca&&ca.exports===Ed,Vo=BR&&NR.process,MR=function(){try{var e=ca&&ca.require&&ca.require("util").types;return e||Vo&&Vo.binding&&Vo.binding("util")}catch{}}();ar.exports=MR});var cn=u((NF,xd)=>{"use strict";var GR=Td(),kR=un(),Rd=pn(),_d=Rd&&Rd.isTypedArray,FR=_d?kR(_d):GR;xd.exports=FR});var Yo=u((BF,Cd)=>{"use strict";function QR(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}Cd.exports=QR});var Ho=u((MF,Od)=>{"use strict";var jR=na(),WR=Ht(),$R=Object.prototype,KR=$R.hasOwnProperty;function VR(e,t,r){var a=e[t];(!(KR.call(e,t)&&WR(a,r))||r===void 0&&!(t in e))&&jR(e,t,r)}Od.exports=VR});var nr=u((GF,Ld)=>{"use strict";var YR=Ho(),HR=na();function zR(e,t,r,a){var n=!r;r||(r={});for(var o=-1,s=t.length;++o<s;){var i=t[o],p=a?a(r[i],e[i],i,r,e):void 0;p===void 0&&(p=e[i]),n?HR(r,i,p):YR(r,i,p)}return r}Ld.exports=zR});var Ud=u((kF,Pd)=>{"use strict";function JR(e,t){for(var r=-1,a=Array(e);++r<e;)a[r]=t(r);return a}Pd.exports=JR});var la=u((FF,qd)=>{"use strict";var XR=9007199254740991,ZR=/^(?:0|[1-9]\d*)$/;function e_(e,t){var r=typeof e;return t=t??XR,!!t&&(r=="number"||r!="symbol"&&ZR.test(e))&&e>-1&&e%1==0&&e<t}qd.exports=e_});var zo=u((QF,Dd)=>{"use strict";var t_=Ud(),r_=zr(),a_=re(),n_=ua(),o_=la(),s_=cn(),i_=Object.prototype,u_=i_.hasOwnProperty;function p_(e,t){var r=a_(e),a=!r&&r_(e),n=!r&&!a&&n_(e),o=!r&&!a&&!n&&s_(e),s=r||a||n||o,i=s?t_(e.length,String):[],p=i.length;for(var m in e)(t||u_.call(e,m))&&!(s&&(m=="length"||n&&(m=="offset"||m=="parent")||o&&(m=="buffer"||m=="byteLength"||m=="byteOffset")||o_(m,p)))&&i.push(m);return i}Dd.exports=p_});var Bd=u((jF,Nd)=>{"use strict";function c_(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}Nd.exports=c_});var Gd=u((WF,Md)=>{"use strict";var l_=Ee(),d_=sn(),f_=Bd(),m_=Object.prototype,g_=m_.hasOwnProperty;function h_(e){if(!l_(e))return f_(e);var t=d_(e),r=[];for(var a in e)a=="constructor"&&(t||!g_.call(e,a))||r.push(a);return r}Md.exports=h_});var or=u(($F,kd)=>{"use strict";var y_=zo(),A_=Gd(),b_=Xt();function I_(e){return b_(e)?y_(e,!0):A_(e)}kd.exports=I_});var Qd=u((KF,Fd)=>{"use strict";var S_=nr(),w_=or();function T_(e){return S_(e,w_(e))}Fd.exports=T_});var Yd=u((VF,Vd)=>{"use strict";var jd=Go(),v_=Fo(),E_=jo(),R_=tr(),__=$o(),Wd=zr(),$d=re(),x_=Mo(),C_=ua(),O_=Xr(),L_=Ee(),P_=Ko(),U_=cn(),Kd=Yo(),q_=Qd();function D_(e,t,r,a,n,o,s){var i=Kd(e,r),p=Kd(t,r),m=s.get(p);if(m){jd(e,r,m);return}var f=o?o(i,p,r+"",e,t,s):void 0,h=f===void 0;if(h){var g=$d(p),S=!g&&C_(p),O=!g&&!S&&U_(p);f=p,g||S||O?$d(i)?f=i:x_(i)?f=R_(i):S?(h=!1,f=v_(p,!0)):O?(h=!1,f=E_(p,!0)):f=[]:P_(p)||Wd(p)?(f=i,Wd(i)?f=q_(i):(!L_(i)||O_(i))&&(f=__(p))):h=!1}h&&(s.set(p,f),n(f,p,a,o,s),s.delete(p)),jd(e,r,f)}Vd.exports=D_});var Jd=u((YF,zd)=>{"use strict";var N_=aa(),B_=Go(),M_=ko(),G_=Yd(),k_=Ee(),F_=or(),Q_=Yo();function Hd(e,t,r,a,n){e!==t&&M_(t,function(o,s){if(n||(n=new N_),k_(o))G_(e,t,s,r,Hd,a,n);else{var i=a?a(Q_(e,s),o,s+"",e,t,n):void 0;i===void 0&&(i=o),B_(e,s,i)}},F_)}zd.exports=Hd});var Zd=u((HF,Xd)=>{"use strict";var j_=Ht(),W_=Xt(),$_=la(),K_=Ee();function V_(e,t,r){if(!K_(r))return!1;var a=typeof t;return(a=="number"?W_(r)&&$_(t,r.length):a=="string"&&t in r)?j_(r[t],e):!1}Xd.exports=V_});var tf=u((zF,ef)=>{"use strict";var Y_=Lo(),H_=Zd();function z_(e){return Y_(function(t,r){var a=-1,n=r.length,o=n>1?r[n-1]:void 0,s=n>2?r[2]:void 0;for(o=e.length>3&&typeof o=="function"?(n--,o):void 0,s&&H_(r[0],r[1],s)&&(o=n<3?void 0:o,n=1),t=Object(t);++a<n;){var i=r[a];i&&e(t,i,a,o)}return t})}ef.exports=z_});var Jo=u((JF,rf)=>{"use strict";var J_=Jd(),X_=tf(),Z_=X_(function(e,t,r){J_(e,t,r)});rf.exports=Z_});var nm=u(de=>{"use strict";de.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"};de.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"],4:["fill","setWith","updateWith"]};de.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};de.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2};de.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};de.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]};de.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}};de.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}};de.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=de.aliasToReal,r={};for(var a in t){var n=t[a];e.call(r,n)?r[n].push(a):r[n]=[a]}return r}();de.remap={assignAll:"assign",assignAllWith:"assignWith",assignInAll:"assignIn",assignInAllWith:"assignInWith",curryN:"curry",curryRightN:"curryRight",defaultsAll:"defaults",defaultsDeepAll:"defaultsDeep",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",mergeAll:"merge",mergeAllWith:"mergeWith",padChars:"pad",padCharsEnd:"padEnd",padCharsStart:"padStart",propertyOf:"get",rangeStep:"range",rangeStepRight:"rangeRight",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart",zipAll:"zip"};de.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};de.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}});var Vs=u((Sj,om)=>{"use strict";om.exports={}});var pm=u((wj,um)=>{"use strict";var X=nm(),UC=Vs(),sm=Array.prototype.push;function qC(e,t){return t==2?function(r,a){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}function Ys(e,t){return t==2?function(r,a){return e(r,a)}:function(r){return e(r)}}function im(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}function DC(e){return function(t){return e({},t)}}function NC(e,t){return function(){for(var r=arguments.length,a=r-1,n=Array(r);r--;)n[r]=arguments[r];var o=n[t],s=n.slice(0,t);return o&&sm.apply(s,o),t!=a&&sm.apply(s,n.slice(t+1)),e.apply(this,s)}}function Hs(e,t){return function(){var r=arguments.length;if(r){for(var a=Array(r);r--;)a[r]=arguments[r];var n=a[0]=t.apply(void 0,a);return e.apply(void 0,a),n}}}function zs(e,t,r,a){var n=typeof t=="function",o=t===Object(t);if(o&&(a=r,r=t,t=void 0),r==null)throw new TypeError;a||(a={});var s={cap:"cap"in a?a.cap:!0,curry:"curry"in a?a.curry:!0,fixed:"fixed"in a?a.fixed:!0,immutable:"immutable"in a?a.immutable:!0,rearg:"rearg"in a?a.rearg:!0},i=n?r:UC,p="curry"in a&&a.curry,m="fixed"in a&&a.fixed,f="rearg"in a&&a.rearg,h=n?r.runInContext():void 0,g=n?r:{ary:e.ary,assign:e.assign,clone:e.clone,curry:e.curry,forEach:e.forEach,isArray:e.isArray,isError:e.isError,isFunction:e.isFunction,isWeakMap:e.isWeakMap,iteratee:e.iteratee,keys:e.keys,rearg:e.rearg,toInteger:e.toInteger,toPath:e.toPath},S=g.ary,O=g.assign,_=g.clone,R=g.curry,E=g.forEach,U=g.isArray,Oe=g.isError,Se=g.isFunction,pt=g.isWeakMap,Ft=g.keys,Sr=g.rearg,wr=g.toInteger,gI=g.toPath,Cu=Ft(X.aryMethod),hI={castArray:function(I){return function(){var y=arguments[0];return U(y)?I(im(y)):I.apply(void 0,arguments)}},iteratee:function(I){return function(){var y=arguments[0],b=arguments[1],v=I(y,b),C=v.length;return s.cap&&typeof b=="number"?(b=b>2?b-2:1,C&&C<=b?v:Ys(v,b)):v}},mixin:function(I){return function(y){var b=this;if(!Se(b))return I(b,Object(y));var v=[];return E(Ft(y),function(C){Se(y[C])&&v.push([C,b.prototype[C]])}),I(b,Object(y)),E(v,function(C){var ae=C[1];Se(ae)?b.prototype[C[0]]=ae:delete b.prototype[C[0]]}),b}},nthArg:function(I){return function(y){var b=y<0?1:wr(y)+1;return R(I(y),b)}},rearg:function(I){return function(y,b){var v=b?b.length:0;return R(I(y,b),v)}},runInContext:function(I){return function(y){return zs(e,I(y),a)}}};function yI(I,y){if(s.cap){var b=X.iterateeRearg[I];if(b)return wI(y,b);var v=!n&&X.iterateeAry[I];if(v)return SI(y,v)}return y}function AI(I,y,b){return p||s.curry&&b>1?R(y,b):y}function Ou(I,y,b){if(s.fixed&&(m||!X.skipFixed[I])){var v=X.methodSpread[I],C=v&&v.start;return C===void 0?S(y,b):NC(y,C)}return y}function Lu(I,y,b){return s.rearg&&b>1&&(f||!X.skipRearg[I])?Sr(y,X.methodRearg[I]||X.aryRearg[b]):y}function bI(I,y){y=gI(y);for(var b=-1,v=y.length,C=v-1,ae=_(Object(I)),Me=ae;Me!=null&&++b<v;){var we=y[b],Ge=Me[we];Ge!=null&&!(Se(Ge)||Oe(Ge)||pt(Ge))&&(Me[we]=_(b==C?Ge:Object(Ge))),Me=Me[we]}return ae}function II(I){return me.runInContext.convert(I)(void 0)}function Pu(I,y){var b=X.aliasToReal[I]||I,v=X.remap[b]||b,C=a;return function(ae){var Me=n?h:g,we=n?h[v]:y,Ge=O(O({},C),ae);return zs(Me,b,we,Ge)}}function SI(I,y){return Uu(I,function(b){return typeof b=="function"?Ys(b,y):b})}function wI(I,y){return Uu(I,function(b){var v=y.length;return qC(Sr(Ys(b,v),y),v)})}function Uu(I,y){return function(){var b=arguments.length;if(!b)return I();for(var v=Array(b);b--;)v[b]=arguments[b];var C=s.rearg?0:b-1;return v[C]=y(v[C]),I.apply(void 0,v)}}function qu(I,y,b){var v,C=X.aliasToReal[I]||I,ae=y,Me=hI[C];return Me?ae=Me(y):s.immutable&&(X.mutate.array[C]?ae=Hs(y,im):X.mutate.object[C]?ae=Hs(y,DC(y)):X.mutate.set[C]&&(ae=Hs(y,bI))),E(Cu,function(we){return E(X.aryMethod[we],function(Ge){if(C==Ge){var Du=X.methodSpread[C],TI=Du&&Du.afterRearg;return v=TI?Ou(C,Lu(C,ae,we),we):Lu(C,Ou(C,ae,we),we),v=yI(C,v),v=AI(C,v,we),!1}}),!v}),v||(v=ae),v==y&&(v=p?R(v,1):function(){return y.apply(this,arguments)}),v.convert=Pu(C,y),v.placeholder=y.placeholder=b,v}if(!o)return qu(t,r,i);var me=r,Tr=[];return E(Cu,function(I){E(X.aryMethod[I],function(y){var b=me[X.remap[y]||y];b&&Tr.push([y,qu(y,b,me)])})}),E(Ft(me),function(I){var y=me[I];if(typeof y=="function"){for(var b=Tr.length;b--;)if(Tr[b][0]==I)return;y.convert=Pu(I,y),Tr.push([I,y])}}),E(Tr,function(I){me[I[0]]=I[1]}),me.convert=II,me.placeholder=me,E(Ft(me),function(I){E(X.realToAlias[I]||[],function(y){me[y]=me[I]})}),me}um.exports=zs});var Js=u((Tj,cm)=>{"use strict";var BC=gt(),MC=oe(),GC=BC(MC,"WeakMap");cm.exports=GC});var Xs=u((vj,dm)=>{"use strict";var lm=Js(),kC=lm&&new lm;dm.exports=kC});var Zs=u((Ej,mm)=>{"use strict";var FC=Jr(),fm=Xs(),QC=fm?function(e,t){return fm.set(e,t),e}:FC;mm.exports=QC});var wa=u((Rj,gm)=>{"use strict";var jC=sa(),WC=Ee();function $C(e){return function(){var t=arguments;switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3]);case 5:return new e(t[0],t[1],t[2],t[3],t[4]);case 6:return new e(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var r=jC(e.prototype),a=e.apply(r,t);return WC(a)?a:r}}gm.exports=$C});var ym=u((_j,hm)=>{"use strict";var KC=wa(),VC=oe(),YC=1;function HC(e,t,r){var a=t&YC,n=KC(e);function o(){var s=this&&this!==VC&&this instanceof o?n:e;return s.apply(a?r:this,arguments)}return o}hm.exports=HC});var ei=u((xj,Am)=>{"use strict";var zC=Math.max;function JC(e,t,r,a){for(var n=-1,o=e.length,s=r.length,i=-1,p=t.length,m=zC(o-s,0),f=Array(p+m),h=!a;++i<p;)f[i]=t[i];for(;++n<s;)(h||n<o)&&(f[r[n]]=e[n]);for(;m--;)f[i++]=e[n++];return f}Am.exports=JC});var ti=u((Cj,bm)=>{"use strict";var XC=Math.max;function ZC(e,t,r,a){for(var n=-1,o=e.length,s=-1,i=r.length,p=-1,m=t.length,f=XC(o-i,0),h=Array(f+m),g=!a;++n<f;)h[n]=e[n];for(var S=n;++p<m;)h[S+p]=t[p];for(;++s<i;)(g||n<o)&&(h[S+r[s]]=e[n++]);return h}bm.exports=ZC});var Sm=u((Oj,Im)=>{"use strict";function eO(e,t){for(var r=e.length,a=0;r--;)e[r]===t&&++a;return a}Im.exports=eO});var Ln=u((Lj,wm)=>{"use strict";function tO(){}wm.exports=tO});var Un=u((Pj,Tm)=>{"use strict";var rO=sa(),aO=Ln(),nO=4294967295;function Pn(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=nO,this.__views__=[]}Pn.prototype=rO(aO.prototype);Pn.prototype.constructor=Pn;Tm.exports=Pn});var ri=u((Uj,Em)=>{"use strict";var vm=Xs(),oO=No(),sO=vm?function(e){return vm.get(e)}:oO;Em.exports=sO});var _m=u((qj,Rm)=>{"use strict";var iO={};Rm.exports=iO});var Om=u((Dj,Cm)=>{"use strict";var xm=_m(),uO=Object.prototype,pO=uO.hasOwnProperty;function cO(e){for(var t=e.name+"",r=xm[t],a=pO.call(xm,t)?r.length:0;a--;){var n=r[a],o=n.func;if(o==null||o==e)return n.name}return t}Cm.exports=cO});var ai=u((Nj,Lm)=>{"use strict";var lO=sa(),dO=Ln();function qn(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}qn.prototype=lO(dO.prototype);qn.prototype.constructor=qn;Lm.exports=qn});var Um=u((Bj,Pm)=>{"use strict";var fO=Un(),mO=ai(),gO=tr();function hO(e){if(e instanceof fO)return e.clone();var t=new mO(e.__wrapped__,e.__chain__);return t.__actions__=gO(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}Pm.exports=hO});var Nm=u((Mj,Dm)=>{"use strict";var yO=Un(),qm=ai(),AO=Ln(),bO=re(),IO=he(),SO=Um(),wO=Object.prototype,TO=wO.hasOwnProperty;function Dn(e){if(IO(e)&&!bO(e)&&!(e instanceof yO)){if(e instanceof qm)return e;if(TO.call(e,"__wrapped__"))return SO(e)}return new qm(e)}Dn.prototype=AO.prototype;Dn.prototype.constructor=Dn;Dm.exports=Dn});var Mm=u((Gj,Bm)=>{"use strict";var vO=Un(),EO=ri(),RO=Om(),_O=Nm();function xO(e){var t=RO(e),r=_O[t];if(typeof r!="function"||!(t in vO.prototype))return!1;if(e===r)return!0;var a=EO(r);return!!a&&e===a[0]}Bm.exports=xO});var ni=u((kj,Gm)=>{"use strict";var CO=Zs(),OO=Oo(),LO=OO(CO);Gm.exports=LO});var Fm=u((Fj,km)=>{"use strict";var PO=/\{\n\/\* \[wrapped with (.+)\] \*/,UO=/,? & /;function qO(e){var t=e.match(PO);return t?t[1].split(UO):[]}km.exports=qO});var jm=u((Qj,Qm)=>{"use strict";var DO=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function NO(e,t){var r=t.length;if(!r)return e;var a=r-1;return t[a]=(r>1?"& ":"")+t[a],t=t.join(r>2?", ":" "),e.replace(DO,`{
|
|
1
|
+
"use strict";var EI=Object.create;var qa=Object.defineProperty;var RI=Object.getOwnPropertyDescriptor;var _I=Object.getOwnPropertyNames;var xI=Object.getPrototypeOf,OI=Object.prototype.hasOwnProperty;var u=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),w=(e,t)=>{for(var r in t)qa(e,r,{get:t[r],enumerable:!0})},Bu=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of _I(t))!OI.call(e,n)&&n!==r&&qa(e,n,{get:()=>t[n],enumerable:!(a=RI(t,n))||a.enumerable});return e};var P=(e,t,r)=>(r=e!=null?EI(xI(e)):{},Bu(t||!e||!e.__esModule?qa(r,"default",{value:e,enumerable:!0}):r,e)),CI=e=>Bu(qa({},"__esModule",{value:!0}),e);var Ja=u((Hk,wp)=>{"use strict";function _S(e,t){for(var r=-1,a=t.length,n=e.length;++r<a;)e[n+r]=t[r];return e}wp.exports=_S});var Eo=u((zk,Tp)=>{"use strict";var xS=typeof global=="object"&&global&&global.Object===Object&&global;Tp.exports=xS});var oe=u((Jk,vp)=>{"use strict";var OS=Eo(),CS=typeof self=="object"&&self&&self.Object===Object&&self,LS=OS||CS||Function("return this")();vp.exports=LS});var _t=u((Xk,Ep)=>{"use strict";var PS=oe(),US=PS.Symbol;Ep.exports=US});var Op=u((Zk,xp)=>{"use strict";var Rp=_t(),_p=Object.prototype,qS=_p.hasOwnProperty,DS=_p.toString,Hr=Rp?Rp.toStringTag:void 0;function NS(e){var t=qS.call(e,Hr),r=e[Hr];try{e[Hr]=void 0;var a=!0}catch{}var n=DS.call(e);return a&&(t?e[Hr]=r:delete e[Hr]),n}xp.exports=NS});var Lp=u((e0,Cp)=>{"use strict";var BS=Object.prototype,MS=BS.toString;function GS(e){return MS.call(e)}Cp.exports=GS});var mt=u((t0,qp)=>{"use strict";var Pp=_t(),kS=Op(),FS=Lp(),QS="[object Null]",jS="[object Undefined]",Up=Pp?Pp.toStringTag:void 0;function WS(e){return e==null?e===void 0?jS:QS:Up&&Up in Object(e)?kS(e):FS(e)}qp.exports=WS});var he=u((r0,Dp)=>{"use strict";function $S(e){return e!=null&&typeof e=="object"}Dp.exports=$S});var Bp=u((a0,Np)=>{"use strict";var KS=mt(),VS=he(),YS="[object Arguments]";function HS(e){return VS(e)&&KS(e)==YS}Np.exports=HS});var zr=u((n0,kp)=>{"use strict";var Mp=Bp(),zS=he(),Gp=Object.prototype,JS=Gp.hasOwnProperty,XS=Gp.propertyIsEnumerable,ZS=Mp(function(){return arguments}())?Mp:function(e){return zS(e)&&JS.call(e,"callee")&&!XS.call(e,"callee")};kp.exports=ZS});var re=u((o0,Fp)=>{"use strict";var ew=Array.isArray;Fp.exports=ew});var $p=u((s0,Wp)=>{"use strict";var Qp=_t(),tw=zr(),rw=re(),jp=Qp?Qp.isConcatSpreadable:void 0;function aw(e){return rw(e)||tw(e)||!!(jp&&e&&e[jp])}Wp.exports=aw});var Ro=u((i0,Vp)=>{"use strict";var nw=Ja(),ow=$p();function Kp(e,t,r,a,n){var o=-1,s=e.length;for(r||(r=ow),n||(n=[]);++o<s;){var i=e[o];t>0&&r(i)?t>1?Kp(i,t-1,r,a,n):nw(n,i):a||(n[n.length]=i)}return n}Vp.exports=Kp});var Jr=u((u0,Yp)=>{"use strict";function sw(e){return e}Yp.exports=sw});var Xa=u((p0,Hp)=>{"use strict";function iw(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)}Hp.exports=iw});var _o=u((c0,Jp)=>{"use strict";var uw=Xa(),zp=Math.max;function pw(e,t,r){return t=zp(t===void 0?e.length-1:t,0),function(){for(var a=arguments,n=-1,o=zp(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),uw(e,this,i)}}Jp.exports=pw});var Zp=u((l0,Xp)=>{"use strict";function cw(e){return function(){return e}}Xp.exports=cw});var Ee=u((d0,ec)=>{"use strict";function lw(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}ec.exports=lw});var Xr=u((f0,tc)=>{"use strict";var dw=mt(),fw=Ee(),mw="[object AsyncFunction]",gw="[object Function]",hw="[object GeneratorFunction]",yw="[object Proxy]";function Aw(e){if(!fw(e))return!1;var t=dw(e);return t==gw||t==hw||t==mw||t==yw}tc.exports=Aw});var ac=u((m0,rc)=>{"use strict";var bw=oe(),Iw=bw["__core-js_shared__"];rc.exports=Iw});var sc=u((g0,oc)=>{"use strict";var xo=ac(),nc=function(){var e=/[^.]+$/.exec(xo&&xo.keys&&xo.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function Sw(e){return!!nc&&nc in e}oc.exports=Sw});var Oo=u((h0,ic)=>{"use strict";var ww=Function.prototype,Tw=ww.toString;function vw(e){if(e!=null){try{return Tw.call(e)}catch{}try{return e+""}catch{}}return""}ic.exports=vw});var pc=u((y0,uc)=>{"use strict";var Ew=Xr(),Rw=sc(),_w=Ee(),xw=Oo(),Ow=/[\\^$.*+?()[\]{}|]/g,Cw=/^\[object .+?Constructor\]$/,Lw=Function.prototype,Pw=Object.prototype,Uw=Lw.toString,qw=Pw.hasOwnProperty,Dw=RegExp("^"+Uw.call(qw).replace(Ow,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Nw(e){if(!_w(e)||Rw(e))return!1;var t=Ew(e)?Dw:Cw;return t.test(xw(e))}uc.exports=Nw});var lc=u((A0,cc)=>{"use strict";function Bw(e,t){return e?.[t]}cc.exports=Bw});var gt=u((b0,dc)=>{"use strict";var Mw=pc(),Gw=lc();function kw(e,t){var r=Gw(e,t);return Mw(r)?r:void 0}dc.exports=kw});var Co=u((I0,fc)=>{"use strict";var Fw=gt(),Qw=function(){try{var e=Fw(Object,"defineProperty");return e({},"",{}),e}catch{}}();fc.exports=Qw});var hc=u((S0,gc)=>{"use strict";var jw=Zp(),mc=Co(),Ww=Jr(),$w=mc?function(e,t){return mc(e,"toString",{configurable:!0,enumerable:!1,value:jw(t),writable:!0})}:Ww;gc.exports=$w});var Lo=u((w0,yc)=>{"use strict";var Kw=800,Vw=16,Yw=Date.now;function Hw(e){var t=0,r=0;return function(){var a=Yw(),n=Vw-(a-r);if(r=a,n>0){if(++t>=Kw)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}yc.exports=Hw});var Za=u((T0,Ac)=>{"use strict";var zw=hc(),Jw=Lo(),Xw=Jw(zw);Ac.exports=Xw});var Po=u((v0,bc)=>{"use strict";var Zw=Jr(),eT=_o(),tT=Za();function rT(e,t){return tT(eT(e,t,Zw),e+"")}bc.exports=rT});var Zr=u((E0,Ic)=>{"use strict";var aT=gt(),nT=aT(Object,"create");Ic.exports=nT});var Tc=u((R0,wc)=>{"use strict";var Sc=Zr();function oT(){this.__data__=Sc?Sc(null):{},this.size=0}wc.exports=oT});var Ec=u((_0,vc)=>{"use strict";function sT(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}vc.exports=sT});var _c=u((x0,Rc)=>{"use strict";var iT=Zr(),uT="__lodash_hash_undefined__",pT=Object.prototype,cT=pT.hasOwnProperty;function lT(e){var t=this.__data__;if(iT){var r=t[e];return r===uT?void 0:r}return cT.call(t,e)?t[e]:void 0}Rc.exports=lT});var Oc=u((O0,xc)=>{"use strict";var dT=Zr(),fT=Object.prototype,mT=fT.hasOwnProperty;function gT(e){var t=this.__data__;return dT?t[e]!==void 0:mT.call(t,e)}xc.exports=gT});var Lc=u((C0,Cc)=>{"use strict";var hT=Zr(),yT="__lodash_hash_undefined__";function AT(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=hT&&t===void 0?yT:t,this}Cc.exports=AT});var Uc=u((L0,Pc)=>{"use strict";var bT=Tc(),IT=Ec(),ST=_c(),wT=Oc(),TT=Lc();function Vt(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])}}Vt.prototype.clear=bT;Vt.prototype.delete=IT;Vt.prototype.get=ST;Vt.prototype.has=wT;Vt.prototype.set=TT;Pc.exports=Vt});var Dc=u((P0,qc)=>{"use strict";function vT(){this.__data__=[],this.size=0}qc.exports=vT});var Yt=u((U0,Nc)=>{"use strict";function ET(e,t){return e===t||e!==e&&t!==t}Nc.exports=ET});var ea=u((q0,Bc)=>{"use strict";var RT=Yt();function _T(e,t){for(var r=e.length;r--;)if(RT(e[r][0],t))return r;return-1}Bc.exports=_T});var Gc=u((D0,Mc)=>{"use strict";var xT=ea(),OT=Array.prototype,CT=OT.splice;function LT(e){var t=this.__data__,r=xT(t,e);if(r<0)return!1;var a=t.length-1;return r==a?t.pop():CT.call(t,r,1),--this.size,!0}Mc.exports=LT});var Fc=u((N0,kc)=>{"use strict";var PT=ea();function UT(e){var t=this.__data__,r=PT(t,e);return r<0?void 0:t[r][1]}kc.exports=UT});var jc=u((B0,Qc)=>{"use strict";var qT=ea();function DT(e){return qT(this.__data__,e)>-1}Qc.exports=DT});var $c=u((M0,Wc)=>{"use strict";var NT=ea();function BT(e,t){var r=this.__data__,a=NT(r,e);return a<0?(++this.size,r.push([e,t])):r[a][1]=t,this}Wc.exports=BT});var ta=u((G0,Kc)=>{"use strict";var MT=Dc(),GT=Gc(),kT=Fc(),FT=jc(),QT=$c();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=MT;Ht.prototype.delete=GT;Ht.prototype.get=kT;Ht.prototype.has=FT;Ht.prototype.set=QT;Kc.exports=Ht});var en=u((k0,Vc)=>{"use strict";var jT=gt(),WT=oe(),$T=jT(WT,"Map");Vc.exports=$T});var zc=u((F0,Hc)=>{"use strict";var Yc=Uc(),KT=ta(),VT=en();function YT(){this.size=0,this.__data__={hash:new Yc,map:new(VT||KT),string:new Yc}}Hc.exports=YT});var Xc=u((Q0,Jc)=>{"use strict";function HT(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}Jc.exports=HT});var ra=u((j0,Zc)=>{"use strict";var zT=Xc();function JT(e,t){var r=e.__data__;return zT(t)?r[typeof t=="string"?"string":"hash"]:r.map}Zc.exports=JT});var tl=u((W0,el)=>{"use strict";var XT=ra();function ZT(e){var t=XT(this,e).delete(e);return this.size-=t?1:0,t}el.exports=ZT});var al=u(($0,rl)=>{"use strict";var ev=ra();function tv(e){return ev(this,e).get(e)}rl.exports=tv});var ol=u((K0,nl)=>{"use strict";var rv=ra();function av(e){return rv(this,e).has(e)}nl.exports=av});var il=u((V0,sl)=>{"use strict";var nv=ra();function ov(e,t){var r=nv(this,e),a=r.size;return r.set(e,t),this.size+=r.size==a?0:1,this}sl.exports=ov});var tn=u((Y0,ul)=>{"use strict";var sv=zc(),iv=tl(),uv=al(),pv=ol(),cv=il();function zt(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var a=e[t];this.set(a[0],a[1])}}zt.prototype.clear=sv;zt.prototype.delete=iv;zt.prototype.get=uv;zt.prototype.has=pv;zt.prototype.set=cv;ul.exports=zt});var cl=u((H0,pl)=>{"use strict";var lv="__lodash_hash_undefined__";function dv(e){return this.__data__.set(e,lv),this}pl.exports=dv});var dl=u((z0,ll)=>{"use strict";function fv(e){return this.__data__.has(e)}ll.exports=fv});var Uo=u((J0,fl)=>{"use strict";var mv=tn(),gv=cl(),hv=dl();function rn(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new mv;++t<r;)this.add(e[t])}rn.prototype.add=rn.prototype.push=gv;rn.prototype.has=hv;fl.exports=rn});var gl=u((X0,ml)=>{"use strict";function yv(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}ml.exports=yv});var yl=u((Z0,hl)=>{"use strict";function Av(e){return e!==e}hl.exports=Av});var bl=u((eF,Al)=>{"use strict";function bv(e,t,r){for(var a=r-1,n=e.length;++a<n;)if(e[a]===t)return a;return-1}Al.exports=bv});var Sl=u((tF,Il)=>{"use strict";var Iv=gl(),Sv=yl(),wv=bl();function Tv(e,t,r){return t===t?wv(e,t,r):Iv(e,Sv,r)}Il.exports=Tv});var qo=u((rF,wl)=>{"use strict";var vv=Sl();function Ev(e,t){var r=e==null?0:e.length;return!!r&&vv(e,t,0)>-1}wl.exports=Ev});var vl=u((aF,Tl)=>{"use strict";function Rv(e,t,r){for(var a=-1,n=e==null?0:e.length;++a<n;)if(r(t,e[a]))return!0;return!1}Tl.exports=Rv});var Do=u((nF,El)=>{"use strict";function _v(e,t){return e.has(t)}El.exports=_v});var No=u((oF,Rl)=>{"use strict";var xv=gt(),Ov=oe(),Cv=xv(Ov,"Set");Rl.exports=Cv});var Bo=u((sF,_l)=>{"use strict";function Lv(){}_l.exports=Lv});var an=u((iF,xl)=>{"use strict";function Pv(e){var t=-1,r=Array(e.size);return e.forEach(function(a){r[++t]=a}),r}xl.exports=Pv});var Cl=u((uF,Ol)=>{"use strict";var Mo=No(),Uv=Bo(),qv=an(),Dv=1/0,Nv=Mo&&1/qv(new Mo([,-0]))[1]==Dv?function(e){return new Mo(e)}:Uv;Ol.exports=Nv});var Pl=u((pF,Ll)=>{"use strict";var Bv=Uo(),Mv=qo(),Gv=vl(),kv=Do(),Fv=Cl(),Qv=an(),jv=200;function Wv(e,t,r){var a=-1,n=Mv,o=e.length,s=!0,i=[],p=i;if(r)s=!1,n=Gv;else if(o>=jv){var m=t?null:Fv(e);if(m)return Qv(m);s=!1,n=kv,p=new Bv}else p=t?[]:i;e:for(;++a<o;){var f=e[a],h=t?t(f):f;if(f=r||f!==0?f:0,s&&h===h){for(var g=p.length;g--;)if(p[g]===h)continue e;t&&p.push(h),i.push(f)}else n(p,h,r)||(p!==i&&p.push(h),i.push(f))}return i}Ll.exports=Wv});var nn=u((cF,Ul)=>{"use strict";var $v=9007199254740991;function Kv(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=$v}Ul.exports=Kv});var Jt=u((lF,ql)=>{"use strict";var Vv=Xr(),Yv=nn();function Hv(e){return e!=null&&Yv(e.length)&&!Vv(e)}ql.exports=Hv});var Go=u((dF,Dl)=>{"use strict";var zv=Jt(),Jv=he();function Xv(e){return Jv(e)&&zv(e)}Dl.exports=Xv});var Bl=u((fF,Nl)=>{"use strict";var Zv=Ro(),eE=Po(),tE=Pl(),rE=Go(),aE=eE(function(e){return tE(Zv(e,1,rE,!0))});Nl.exports=aE});var Gl=u((mF,Ml)=>{"use strict";var nE=ta();function oE(){this.__data__=new nE,this.size=0}Ml.exports=oE});var Fl=u((gF,kl)=>{"use strict";function sE(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}kl.exports=sE});var jl=u((hF,Ql)=>{"use strict";function iE(e){return this.__data__.get(e)}Ql.exports=iE});var $l=u((yF,Wl)=>{"use strict";function uE(e){return this.__data__.has(e)}Wl.exports=uE});var Vl=u((AF,Kl)=>{"use strict";var pE=ta(),cE=en(),lE=tn(),dE=200;function fE(e,t){var r=this.__data__;if(r instanceof pE){var a=r.__data__;if(!cE||a.length<dE-1)return a.push([e,t]),this.size=++r.size,this;r=this.__data__=new lE(a)}return r.set(e,t),this.size=r.size,this}Kl.exports=fE});var aa=u((bF,Yl)=>{"use strict";var mE=ta(),gE=Gl(),hE=Fl(),yE=jl(),AE=$l(),bE=Vl();function Xt(e){var t=this.__data__=new mE(e);this.size=t.size}Xt.prototype.clear=gE;Xt.prototype.delete=hE;Xt.prototype.get=yE;Xt.prototype.has=AE;Xt.prototype.set=bE;Yl.exports=Xt});var na=u((IF,zl)=>{"use strict";var Hl=Co();function IE(e,t,r){t=="__proto__"&&Hl?Hl(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}zl.exports=IE});var ko=u((SF,Jl)=>{"use strict";var SE=na(),wE=Yt();function TE(e,t,r){(r!==void 0&&!wE(e[t],r)||r===void 0&&!(t in e))&&SE(e,t,r)}Jl.exports=TE});var Zl=u((wF,Xl)=>{"use strict";function vE(e){return function(t,r,a){for(var n=-1,o=Object(t),s=a(t),i=s.length;i--;){var p=s[e?i:++n];if(r(o[p],p,o)===!1)break}return t}}Xl.exports=vE});var Fo=u((TF,ed)=>{"use strict";var EE=Zl(),RE=EE();ed.exports=RE});var Qo=u((oa,Zt)=>{"use strict";var _E=oe(),nd=typeof oa=="object"&&oa&&!oa.nodeType&&oa,td=nd&&typeof Zt=="object"&&Zt&&!Zt.nodeType&&Zt,xE=td&&td.exports===nd,rd=xE?_E.Buffer:void 0,ad=rd?rd.allocUnsafe:void 0;function OE(e,t){if(t)return e.slice();var r=e.length,a=ad?ad(r):new e.constructor(r);return e.copy(a),a}Zt.exports=OE});var jo=u((vF,od)=>{"use strict";var CE=oe(),LE=CE.Uint8Array;od.exports=LE});var on=u((EF,id)=>{"use strict";var sd=jo();function PE(e){var t=new e.constructor(e.byteLength);return new sd(t).set(new sd(e)),t}id.exports=PE});var Wo=u((RF,ud)=>{"use strict";var UE=on();function qE(e,t){var r=t?UE(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}ud.exports=qE});var er=u((_F,pd)=>{"use strict";function DE(e,t){var r=-1,a=e.length;for(t||(t=Array(a));++r<a;)t[r]=e[r];return t}pd.exports=DE});var sa=u((xF,ld)=>{"use strict";var NE=Ee(),cd=Object.create,BE=function(){function e(){}return function(t){if(!NE(t))return{};if(cd)return cd(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();ld.exports=BE});var $o=u((OF,dd)=>{"use strict";function ME(e,t){return function(r){return e(t(r))}}dd.exports=ME});var sn=u((CF,fd)=>{"use strict";var GE=$o(),kE=GE(Object.getPrototypeOf,Object);fd.exports=kE});var un=u((LF,md)=>{"use strict";var FE=Object.prototype;function QE(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||FE;return e===r}md.exports=QE});var Ko=u((PF,gd)=>{"use strict";var jE=sa(),WE=sn(),$E=un();function KE(e){return typeof e.constructor=="function"&&!$E(e)?jE(WE(e)):{}}gd.exports=KE});var yd=u((UF,hd)=>{"use strict";function VE(){return!1}hd.exports=VE});var ua=u((ia,tr)=>{"use strict";var YE=oe(),HE=yd(),Id=typeof ia=="object"&&ia&&!ia.nodeType&&ia,Ad=Id&&typeof tr=="object"&&tr&&!tr.nodeType&&tr,zE=Ad&&Ad.exports===Id,bd=zE?YE.Buffer:void 0,JE=bd?bd.isBuffer:void 0,XE=JE||HE;tr.exports=XE});var Vo=u((qF,wd)=>{"use strict";var ZE=mt(),eR=sn(),tR=he(),rR="[object Object]",aR=Function.prototype,nR=Object.prototype,Sd=aR.toString,oR=nR.hasOwnProperty,sR=Sd.call(Object);function iR(e){if(!tR(e)||ZE(e)!=rR)return!1;var t=eR(e);if(t===null)return!0;var r=oR.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Sd.call(r)==sR}wd.exports=iR});var vd=u((DF,Td)=>{"use strict";var uR=mt(),pR=nn(),cR=he(),lR="[object Arguments]",dR="[object Array]",fR="[object Boolean]",mR="[object Date]",gR="[object Error]",hR="[object Function]",yR="[object Map]",AR="[object Number]",bR="[object Object]",IR="[object RegExp]",SR="[object Set]",wR="[object String]",TR="[object WeakMap]",vR="[object ArrayBuffer]",ER="[object DataView]",RR="[object Float32Array]",_R="[object Float64Array]",xR="[object Int8Array]",OR="[object Int16Array]",CR="[object Int32Array]",LR="[object Uint8Array]",PR="[object Uint8ClampedArray]",UR="[object Uint16Array]",qR="[object Uint32Array]",B={};B[RR]=B[_R]=B[xR]=B[OR]=B[CR]=B[LR]=B[PR]=B[UR]=B[qR]=!0;B[lR]=B[dR]=B[vR]=B[fR]=B[ER]=B[mR]=B[gR]=B[hR]=B[yR]=B[AR]=B[bR]=B[IR]=B[SR]=B[wR]=B[TR]=!1;function DR(e){return cR(e)&&pR(e.length)&&!!B[uR(e)]}Td.exports=DR});var pn=u((NF,Ed)=>{"use strict";function NR(e){return function(t){return e(t)}}Ed.exports=NR});var cn=u((pa,rr)=>{"use strict";var BR=Eo(),Rd=typeof pa=="object"&&pa&&!pa.nodeType&&pa,ca=Rd&&typeof rr=="object"&&rr&&!rr.nodeType&&rr,MR=ca&&ca.exports===Rd,Yo=MR&&BR.process,GR=function(){try{var e=ca&&ca.require&&ca.require("util").types;return e||Yo&&Yo.binding&&Yo.binding("util")}catch{}}();rr.exports=GR});var ln=u((BF,Od)=>{"use strict";var kR=vd(),FR=pn(),_d=cn(),xd=_d&&_d.isTypedArray,QR=xd?FR(xd):kR;Od.exports=QR});var Ho=u((MF,Cd)=>{"use strict";function jR(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}Cd.exports=jR});var zo=u((GF,Ld)=>{"use strict";var WR=na(),$R=Yt(),KR=Object.prototype,VR=KR.hasOwnProperty;function YR(e,t,r){var a=e[t];(!(VR.call(e,t)&&$R(a,r))||r===void 0&&!(t in e))&&WR(e,t,r)}Ld.exports=YR});var ar=u((kF,Pd)=>{"use strict";var HR=zo(),zR=na();function JR(e,t,r,a){var n=!r;r||(r={});for(var o=-1,s=t.length;++o<s;){var i=t[o],p=a?a(r[i],e[i],i,r,e):void 0;p===void 0&&(p=e[i]),n?zR(r,i,p):HR(r,i,p)}return r}Pd.exports=JR});var qd=u((FF,Ud)=>{"use strict";function XR(e,t){for(var r=-1,a=Array(e);++r<e;)a[r]=t(r);return a}Ud.exports=XR});var la=u((QF,Dd)=>{"use strict";var ZR=9007199254740991,e_=/^(?:0|[1-9]\d*)$/;function t_(e,t){var r=typeof e;return t=t??ZR,!!t&&(r=="number"||r!="symbol"&&e_.test(e))&&e>-1&&e%1==0&&e<t}Dd.exports=t_});var Jo=u((jF,Nd)=>{"use strict";var r_=qd(),a_=zr(),n_=re(),o_=ua(),s_=la(),i_=ln(),u_=Object.prototype,p_=u_.hasOwnProperty;function c_(e,t){var r=n_(e),a=!r&&a_(e),n=!r&&!a&&o_(e),o=!r&&!a&&!n&&i_(e),s=r||a||n||o,i=s?r_(e.length,String):[],p=i.length;for(var m in e)(t||p_.call(e,m))&&!(s&&(m=="length"||n&&(m=="offset"||m=="parent")||o&&(m=="buffer"||m=="byteLength"||m=="byteOffset")||s_(m,p)))&&i.push(m);return i}Nd.exports=c_});var Md=u((WF,Bd)=>{"use strict";function l_(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}Bd.exports=l_});var kd=u(($F,Gd)=>{"use strict";var d_=Ee(),f_=un(),m_=Md(),g_=Object.prototype,h_=g_.hasOwnProperty;function y_(e){if(!d_(e))return m_(e);var t=f_(e),r=[];for(var a in e)a=="constructor"&&(t||!h_.call(e,a))||r.push(a);return r}Gd.exports=y_});var nr=u((KF,Fd)=>{"use strict";var A_=Jo(),b_=kd(),I_=Jt();function S_(e){return I_(e)?A_(e,!0):b_(e)}Fd.exports=S_});var jd=u((VF,Qd)=>{"use strict";var w_=ar(),T_=nr();function v_(e){return w_(e,T_(e))}Qd.exports=v_});var Hd=u((YF,Yd)=>{"use strict";var Wd=ko(),E_=Qo(),R_=Wo(),__=er(),x_=Ko(),$d=zr(),Kd=re(),O_=Go(),C_=ua(),L_=Xr(),P_=Ee(),U_=Vo(),q_=ln(),Vd=Ho(),D_=jd();function N_(e,t,r,a,n,o,s){var i=Vd(e,r),p=Vd(t,r),m=s.get(p);if(m){Wd(e,r,m);return}var f=o?o(i,p,r+"",e,t,s):void 0,h=f===void 0;if(h){var g=Kd(p),S=!g&&C_(p),C=!g&&!S&&q_(p);f=p,g||S||C?Kd(i)?f=i:O_(i)?f=__(i):S?(h=!1,f=E_(p,!0)):C?(h=!1,f=R_(p,!0)):f=[]:U_(p)||$d(p)?(f=i,$d(i)?f=D_(i):(!P_(i)||L_(i))&&(f=x_(p))):h=!1}h&&(s.set(p,f),n(f,p,a,o,s),s.delete(p)),Wd(e,r,f)}Yd.exports=N_});var Xd=u((HF,Jd)=>{"use strict";var B_=aa(),M_=ko(),G_=Fo(),k_=Hd(),F_=Ee(),Q_=nr(),j_=Ho();function zd(e,t,r,a,n){e!==t&&G_(t,function(o,s){if(n||(n=new B_),F_(o))k_(e,t,s,r,zd,a,n);else{var i=a?a(j_(e,s),o,s+"",e,t,n):void 0;i===void 0&&(i=o),M_(e,s,i)}},Q_)}Jd.exports=zd});var ef=u((zF,Zd)=>{"use strict";var W_=Yt(),$_=Jt(),K_=la(),V_=Ee();function Y_(e,t,r){if(!V_(r))return!1;var a=typeof t;return(a=="number"?$_(r)&&K_(t,r.length):a=="string"&&t in r)?W_(r[t],e):!1}Zd.exports=Y_});var rf=u((JF,tf)=>{"use strict";var H_=Po(),z_=ef();function J_(e){return H_(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&&z_(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})}tf.exports=J_});var Xo=u((XF,af)=>{"use strict";var X_=Xd(),Z_=rf(),ex=Z_(function(e,t,r){X_(e,t,r)});af.exports=ex});var om=u(de=>{"use strict";de.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"};de.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"],4:["fill","setWith","updateWith"]};de.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};de.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2};de.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};de.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]};de.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}};de.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}};de.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=de.aliasToReal,r={};for(var a in t){var n=t[a];e.call(r,n)?r[n].push(a):r[n]=[a]}return r}();de.remap={assignAll:"assign",assignAllWith:"assignWith",assignInAll:"assignIn",assignInAllWith:"assignInWith",curryN:"curry",curryRightN:"curryRight",defaultsAll:"defaults",defaultsDeepAll:"defaultsDeep",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",mergeAll:"merge",mergeAllWith:"mergeWith",padChars:"pad",padCharsEnd:"padEnd",padCharsStart:"padStart",propertyOf:"get",rangeStep:"range",rangeStepRight:"rangeRight",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart",zipAll:"zip"};de.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};de.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}});var Ys=u((wj,sm)=>{"use strict";sm.exports={}});var cm=u((Tj,pm)=>{"use strict";var X=om(),qO=Ys(),im=Array.prototype.push;function DO(e,t){return t==2?function(r,a){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}function Hs(e,t){return t==2?function(r,a){return e(r,a)}:function(r){return e(r)}}function um(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}function NO(e){return function(t){return e({},t)}}function BO(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&&im.apply(s,o),t!=a&&im.apply(s,n.slice(t+1)),e.apply(this,s)}}function zs(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 Js(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:qO,p="curry"in a&&a.curry,m="fixed"in a&&a.fixed,f="rearg"in a&&a.rearg,h=n?r.runInContext():void 0,g=n?r:{ary:e.ary,assign:e.assign,clone:e.clone,curry:e.curry,forEach:e.forEach,isArray:e.isArray,isError:e.isError,isFunction:e.isFunction,isWeakMap:e.isWeakMap,iteratee:e.iteratee,keys:e.keys,rearg:e.rearg,toInteger:e.toInteger,toPath:e.toPath},S=g.ary,C=g.assign,_=g.clone,R=g.curry,E=g.forEach,U=g.isArray,Ce=g.isError,Se=g.isFunction,pt=g.isWeakMap,kt=g.keys,Ir=g.rearg,Sr=g.toInteger,hI=g.toPath,Cu=kt(X.aryMethod),yI={castArray:function(I){return function(){var y=arguments[0];return U(y)?I(um(y)):I.apply(void 0,arguments)}},iteratee:function(I){return function(){var y=arguments[0],b=arguments[1],v=I(y,b),O=v.length;return s.cap&&typeof b=="number"?(b=b>2?b-2:1,O&&O<=b?v:Hs(v,b)):v}},mixin:function(I){return function(y){var b=this;if(!Se(b))return I(b,Object(y));var v=[];return E(kt(y),function(O){Se(y[O])&&v.push([O,b.prototype[O]])}),I(b,Object(y)),E(v,function(O){var ae=O[1];Se(ae)?b.prototype[O[0]]=ae:delete b.prototype[O[0]]}),b}},nthArg:function(I){return function(y){var b=y<0?1:Sr(y)+1;return R(I(y),b)}},rearg:function(I){return function(y,b){var v=b?b.length:0;return R(I(y,b),v)}},runInContext:function(I){return function(y){return Js(e,I(y),a)}}};function AI(I,y){if(s.cap){var b=X.iterateeRearg[I];if(b)return TI(y,b);var v=!n&&X.iterateeAry[I];if(v)return wI(y,v)}return y}function bI(I,y,b){return p||s.curry&&b>1?R(y,b):y}function Lu(I,y,b){if(s.fixed&&(m||!X.skipFixed[I])){var v=X.methodSpread[I],O=v&&v.start;return O===void 0?S(y,b):BO(y,O)}return y}function Pu(I,y,b){return s.rearg&&b>1&&(f||!X.skipRearg[I])?Ir(y,X.methodRearg[I]||X.aryRearg[b]):y}function II(I,y){y=hI(y);for(var b=-1,v=y.length,O=v-1,ae=_(Object(I)),Me=ae;Me!=null&&++b<v;){var we=y[b],Ge=Me[we];Ge!=null&&!(Se(Ge)||Ce(Ge)||pt(Ge))&&(Me[we]=_(b==O?Ge:Object(Ge))),Me=Me[we]}return ae}function SI(I){return me.runInContext.convert(I)(void 0)}function Uu(I,y){var b=X.aliasToReal[I]||I,v=X.remap[b]||b,O=a;return function(ae){var Me=n?h:g,we=n?h[v]:y,Ge=C(C({},O),ae);return Js(Me,b,we,Ge)}}function wI(I,y){return qu(I,function(b){return typeof b=="function"?Hs(b,y):b})}function TI(I,y){return qu(I,function(b){var v=y.length;return DO(Ir(Hs(b,v),y),v)})}function qu(I,y){return function(){var b=arguments.length;if(!b)return I();for(var v=Array(b);b--;)v[b]=arguments[b];var O=s.rearg?0:b-1;return v[O]=y(v[O]),I.apply(void 0,v)}}function Du(I,y,b){var v,O=X.aliasToReal[I]||I,ae=y,Me=yI[O];return Me?ae=Me(y):s.immutable&&(X.mutate.array[O]?ae=zs(y,um):X.mutate.object[O]?ae=zs(y,NO(y)):X.mutate.set[O]&&(ae=zs(y,II))),E(Cu,function(we){return E(X.aryMethod[we],function(Ge){if(O==Ge){var Nu=X.methodSpread[O],vI=Nu&&Nu.afterRearg;return v=vI?Lu(O,Pu(O,ae,we),we):Pu(O,Lu(O,ae,we),we),v=AI(O,v),v=bI(O,v,we),!1}}),!v}),v||(v=ae),v==y&&(v=p?R(v,1):function(){return y.apply(this,arguments)}),v.convert=Uu(O,y),v.placeholder=y.placeholder=b,v}if(!o)return Du(t,r,i);var me=r,wr=[];return E(Cu,function(I){E(X.aryMethod[I],function(y){var b=me[X.remap[y]||y];b&&wr.push([y,Du(y,b,me)])})}),E(kt(me),function(I){var y=me[I];if(typeof y=="function"){for(var b=wr.length;b--;)if(wr[b][0]==I)return;y.convert=Uu(I,y),wr.push([I,y])}}),E(wr,function(I){me[I[0]]=I[1]}),me.convert=SI,me.placeholder=me,E(kt(me),function(I){E(X.realToAlias[I]||[],function(y){me[y]=me[I]})}),me}pm.exports=Js});var Xs=u((vj,lm)=>{"use strict";var MO=gt(),GO=oe(),kO=MO(GO,"WeakMap");lm.exports=kO});var Zs=u((Ej,fm)=>{"use strict";var dm=Xs(),FO=dm&&new dm;fm.exports=FO});var ei=u((Rj,gm)=>{"use strict";var QO=Jr(),mm=Zs(),jO=mm?function(e,t){return mm.set(e,t),e}:QO;gm.exports=jO});var wa=u((_j,hm)=>{"use strict";var WO=sa(),$O=Ee();function KO(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=WO(e.prototype),a=e.apply(r,t);return $O(a)?a:r}}hm.exports=KO});var Am=u((xj,ym)=>{"use strict";var VO=wa(),YO=oe(),HO=1;function zO(e,t,r){var a=t&HO,n=VO(e);function o(){var s=this&&this!==YO&&this instanceof o?n:e;return s.apply(a?r:this,arguments)}return o}ym.exports=zO});var ti=u((Oj,bm)=>{"use strict";var JO=Math.max;function XO(e,t,r,a){for(var n=-1,o=e.length,s=r.length,i=-1,p=t.length,m=JO(o-s,0),f=Array(p+m),h=!a;++i<p;)f[i]=t[i];for(;++n<s;)(h||n<o)&&(f[r[n]]=e[n]);for(;m--;)f[i++]=e[n++];return f}bm.exports=XO});var ri=u((Cj,Im)=>{"use strict";var ZO=Math.max;function eC(e,t,r,a){for(var n=-1,o=e.length,s=-1,i=r.length,p=-1,m=t.length,f=ZO(o-i,0),h=Array(f+m),g=!a;++n<f;)h[n]=e[n];for(var S=n;++p<m;)h[S+p]=t[p];for(;++s<i;)(g||n<o)&&(h[S+r[s]]=e[n++]);return h}Im.exports=eC});var wm=u((Lj,Sm)=>{"use strict";function tC(e,t){for(var r=e.length,a=0;r--;)e[r]===t&&++a;return a}Sm.exports=tC});var Pn=u((Pj,Tm)=>{"use strict";function rC(){}Tm.exports=rC});var qn=u((Uj,vm)=>{"use strict";var aC=sa(),nC=Pn(),oC=4294967295;function Un(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=oC,this.__views__=[]}Un.prototype=aC(nC.prototype);Un.prototype.constructor=Un;vm.exports=Un});var ai=u((qj,Rm)=>{"use strict";var Em=Zs(),sC=Bo(),iC=Em?function(e){return Em.get(e)}:sC;Rm.exports=iC});var xm=u((Dj,_m)=>{"use strict";var uC={};_m.exports=uC});var Lm=u((Nj,Cm)=>{"use strict";var Om=xm(),pC=Object.prototype,cC=pC.hasOwnProperty;function lC(e){for(var t=e.name+"",r=Om[t],a=cC.call(Om,t)?r.length:0;a--;){var n=r[a],o=n.func;if(o==null||o==e)return n.name}return t}Cm.exports=lC});var ni=u((Bj,Pm)=>{"use strict";var dC=sa(),fC=Pn();function Dn(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}Dn.prototype=dC(fC.prototype);Dn.prototype.constructor=Dn;Pm.exports=Dn});var qm=u((Mj,Um)=>{"use strict";var mC=qn(),gC=ni(),hC=er();function yC(e){if(e instanceof mC)return e.clone();var t=new gC(e.__wrapped__,e.__chain__);return t.__actions__=hC(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}Um.exports=yC});var Bm=u((Gj,Nm)=>{"use strict";var AC=qn(),Dm=ni(),bC=Pn(),IC=re(),SC=he(),wC=qm(),TC=Object.prototype,vC=TC.hasOwnProperty;function Nn(e){if(SC(e)&&!IC(e)&&!(e instanceof AC)){if(e instanceof Dm)return e;if(vC.call(e,"__wrapped__"))return wC(e)}return new Dm(e)}Nn.prototype=bC.prototype;Nn.prototype.constructor=Nn;Nm.exports=Nn});var Gm=u((kj,Mm)=>{"use strict";var EC=qn(),RC=ai(),_C=Lm(),xC=Bm();function OC(e){var t=_C(e),r=xC[t];if(typeof r!="function"||!(t in EC.prototype))return!1;if(e===r)return!0;var a=RC(r);return!!a&&e===a[0]}Mm.exports=OC});var oi=u((Fj,km)=>{"use strict";var CC=ei(),LC=Lo(),PC=LC(CC);km.exports=PC});var Qm=u((Qj,Fm)=>{"use strict";var UC=/\{\n\/\* \[wrapped with (.+)\] \*/,qC=/,? & /;function DC(e){var t=e.match(UC);return t?t[1].split(qC):[]}Fm.exports=DC});var Wm=u((jj,jm)=>{"use strict";var NC=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function BC(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(NC,`{
|
|
2
2
|
/* [wrapped with `+t+`] */
|
|
3
|
-
`)}Qm.exports=NO});var Nn=u((jj,Wm)=>{"use strict";function BO(e,t){for(var r=-1,a=e==null?0:e.length;++r<a&&t(e[r],r,e)!==!1;);return e}Wm.exports=BO});var Km=u((Wj,$m)=>{"use strict";var MO=Nn(),GO=Uo(),kO=1,FO=2,QO=8,jO=16,WO=32,$O=64,KO=128,VO=256,YO=512,HO=[["ary",KO],["bind",kO],["bindKey",FO],["curry",QO],["curryRight",jO],["flip",YO],["partial",WO],["partialRight",$O],["rearg",VO]];function zO(e,t){return MO(HO,function(r){var a="_."+r[0];t&r[1]&&!GO(e,a)&&e.push(a)}),e.sort()}$m.exports=zO});var oi=u(($j,Vm)=>{"use strict";var JO=Fm(),XO=jm(),ZO=Xa(),eL=Km();function tL(e,t,r){var a=t+"";return ZO(e,XO(a,eL(JO(a),r)))}Vm.exports=tL});var si=u((Kj,zm)=>{"use strict";var rL=Mm(),aL=ni(),nL=oi(),oL=1,sL=2,iL=4,uL=8,Ym=32,Hm=64;function pL(e,t,r,a,n,o,s,i,p,m){var f=t&uL,h=f?s:void 0,g=f?void 0:s,S=f?o:void 0,O=f?void 0:o;t|=f?Ym:Hm,t&=~(f?Hm:Ym),t&iL||(t&=~(oL|sL));var _=[e,t,n,S,h,O,g,i,p,m],R=r.apply(void 0,_);return rL(e)&&aL(R,_),R.placeholder=a,nL(R,e,t)}zm.exports=pL});var ii=u((Vj,Jm)=>{"use strict";function cL(e){var t=e;return t.placeholder}Jm.exports=cL});var Zm=u((Yj,Xm)=>{"use strict";var lL=tr(),dL=la(),fL=Math.min;function mL(e,t){for(var r=e.length,a=fL(t.length,r),n=lL(e);a--;){var o=t[a];e[a]=dL(o,r)?n[o]:void 0}return e}Xm.exports=mL});var Bn=u((Hj,tg)=>{"use strict";var eg="__lodash_placeholder__";function gL(e,t){for(var r=-1,a=e.length,n=0,o=[];++r<a;){var s=e[r];(s===t||s===eg)&&(e[r]=eg,o[n++]=r)}return o}tg.exports=gL});var ui=u((zj,ng)=>{"use strict";var hL=ei(),yL=ti(),AL=Sm(),rg=wa(),bL=si(),IL=ii(),SL=Zm(),wL=Bn(),TL=oe(),vL=1,EL=2,RL=8,_L=16,xL=128,CL=512;function ag(e,t,r,a,n,o,s,i,p,m){var f=t&xL,h=t&vL,g=t&EL,S=t&(RL|_L),O=t&CL,_=g?void 0:rg(e);function R(){for(var E=arguments.length,U=Array(E),Oe=E;Oe--;)U[Oe]=arguments[Oe];if(S)var Se=IL(R),pt=AL(U,Se);if(a&&(U=hL(U,a,n,S)),o&&(U=yL(U,o,s,S)),E-=pt,S&&E<m){var Ft=wL(U,Se);return bL(e,t,ag,R.placeholder,r,U,Ft,i,p,m-E)}var Sr=h?r:this,wr=g?Sr[e]:e;return E=U.length,i?U=SL(U,i):O&&E>1&&U.reverse(),f&&p<E&&(U.length=p),this&&this!==TL&&this instanceof R&&(wr=_||rg(wr)),wr.apply(Sr,U)}return R}ng.exports=ag});var sg=u((Jj,og)=>{"use strict";var OL=Ja(),LL=wa(),PL=ui(),UL=si(),qL=ii(),DL=Bn(),NL=oe();function BL(e,t,r){var a=LL(e);function n(){for(var o=arguments.length,s=Array(o),i=o,p=qL(n);i--;)s[i]=arguments[i];var m=o<3&&s[0]!==p&&s[o-1]!==p?[]:DL(s,p);if(o-=m.length,o<r)return UL(e,t,PL,n.placeholder,void 0,s,m,void 0,void 0,r-o);var f=this&&this!==NL&&this instanceof n?a:e;return OL(f,this,s)}return n}og.exports=BL});var ug=u((Xj,ig)=>{"use strict";var ML=Ja(),GL=wa(),kL=oe(),FL=1;function QL(e,t,r,a){var n=t&FL,o=GL(e);function s(){for(var i=-1,p=arguments.length,m=-1,f=a.length,h=Array(f+p),g=this&&this!==kL&&this instanceof s?o:e;++m<f;)h[m]=a[m];for(;p--;)h[m++]=arguments[++i];return ML(g,n?r:this,h)}return s}ig.exports=QL});var mg=u((Zj,fg)=>{"use strict";var jL=ei(),WL=ti(),pg=Bn(),cg="__lodash_placeholder__",pi=1,$L=2,KL=4,lg=8,Ta=128,dg=256,VL=Math.min;function YL(e,t){var r=e[1],a=t[1],n=r|a,o=n<(pi|$L|Ta),s=a==Ta&&r==lg||a==Ta&&r==dg&&e[7].length<=t[8]||a==(Ta|dg)&&t[7].length<=t[8]&&r==lg;if(!(o||s))return e;a&pi&&(e[2]=t[2],n|=r&pi?0:KL);var i=t[3];if(i){var p=e[3];e[3]=p?jL(p,i,t[4]):i,e[4]=p?pg(e[3],cg):t[4]}return i=t[5],i&&(p=e[5],e[5]=p?WL(p,i,t[6]):i,e[6]=p?pg(e[5],cg):t[6]),i=t[7],i&&(e[7]=i),a&Ta&&(e[8]=e[8]==null?t[8]:VL(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=n,e}fg.exports=YL});var hg=u((eW,gg)=>{"use strict";var HL=/\s/;function zL(e){for(var t=e.length;t--&&HL.test(e.charAt(t)););return t}gg.exports=zL});var Ag=u((tW,yg)=>{"use strict";var JL=hg(),XL=/^\s+/;function ZL(e){return e&&e.slice(0,JL(e)+1).replace(XL,"")}yg.exports=ZL});var mr=u((rW,bg)=>{"use strict";var eP=mt(),tP=he(),rP="[object Symbol]";function aP(e){return typeof e=="symbol"||tP(e)&&eP(e)==rP}bg.exports=aP});var Tg=u((aW,wg)=>{"use strict";var nP=Ag(),Ig=Ee(),oP=mr(),Sg=0/0,sP=/^[-+]0x[0-9a-f]+$/i,iP=/^0b[01]+$/i,uP=/^0o[0-7]+$/i,pP=parseInt;function cP(e){if(typeof e=="number")return e;if(oP(e))return Sg;if(Ig(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=Ig(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=nP(e);var r=iP.test(e);return r||uP.test(e)?pP(e.slice(2),r?2:8):sP.test(e)?Sg:+e}wg.exports=cP});var Rg=u((nW,Eg)=>{"use strict";var lP=Tg(),vg=1/0,dP=17976931348623157e292;function fP(e){if(!e)return e===0?e:0;if(e=lP(e),e===vg||e===-vg){var t=e<0?-1:1;return t*dP}return e===e?e:0}Eg.exports=fP});var ci=u((oW,_g)=>{"use strict";var mP=Rg();function gP(e){var t=mP(e),r=t%1;return t===t?r?t-r:t:0}_g.exports=gP});var Mn=u((sW,Pg)=>{"use strict";var hP=Zs(),yP=ym(),AP=sg(),bP=ui(),IP=ug(),SP=ri(),wP=mg(),TP=ni(),vP=oi(),xg=ci(),EP="Expected a function",Cg=1,RP=2,li=8,di=16,fi=32,Og=64,Lg=Math.max;function _P(e,t,r,a,n,o,s,i){var p=t&RP;if(!p&&typeof e!="function")throw new TypeError(EP);var m=a?a.length:0;if(m||(t&=~(fi|Og),a=n=void 0),s=s===void 0?s:Lg(xg(s),0),i=i===void 0?i:xg(i),m-=n?n.length:0,t&Og){var f=a,h=n;a=n=void 0}var g=p?void 0:SP(e),S=[e,t,r,a,n,f,h,o,s,i];if(g&&wP(S,g),e=S[0],t=S[1],r=S[2],a=S[3],n=S[4],i=S[9]=S[9]===void 0?p?0:e.length:Lg(S[9]-m,0),!i&&t&(li|di)&&(t&=~(li|di)),!t||t==Cg)var O=yP(e,t,r);else t==li||t==di?O=AP(e,t,i):(t==fi||t==(Cg|fi))&&!n.length?O=IP(e,t,r,a):O=bP.apply(void 0,S);var _=g?hP:TP;return vP(_(O,S),e,t)}Pg.exports=_P});var qg=u((iW,Ug)=>{"use strict";var xP=Mn(),CP=128;function OP(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,xP(e,CP,void 0,void 0,void 0,void 0,t)}Ug.exports=OP});var Ng=u((uW,Dg)=>{"use strict";var LP=Wo(),PP=LP(Object.keys,Object);Dg.exports=PP});var mi=u((pW,Bg)=>{"use strict";var UP=sn(),qP=Ng(),DP=Object.prototype,NP=DP.hasOwnProperty;function BP(e){if(!UP(e))return qP(e);var t=[];for(var r in Object(e))NP.call(e,r)&&r!="constructor"&&t.push(r);return t}Bg.exports=BP});var gr=u((cW,Mg)=>{"use strict";var MP=zo(),GP=mi(),kP=Xt();function FP(e){return kP(e)?MP(e):GP(e)}Mg.exports=FP});var gi=u((lW,Gg)=>{"use strict";var QP=nr(),jP=gr();function WP(e,t){return e&&QP(t,jP(t),e)}Gg.exports=WP});var Fg=u((dW,kg)=>{"use strict";var $P=nr(),KP=or();function VP(e,t){return e&&$P(t,KP(t),e)}kg.exports=VP});var jg=u((fW,Qg)=>{"use strict";function YP(e,t){for(var r=-1,a=e==null?0:e.length,n=0,o=[];++r<a;){var s=e[r];t(s,r,e)&&(o[n++]=s)}return o}Qg.exports=YP});var hi=u((mW,Wg)=>{"use strict";function HP(){return[]}Wg.exports=HP});var Gn=u((gW,Kg)=>{"use strict";var zP=jg(),JP=hi(),XP=Object.prototype,ZP=XP.propertyIsEnumerable,$g=Object.getOwnPropertySymbols,eU=$g?function(e){return e==null?[]:(e=Object(e),zP($g(e),function(t){return ZP.call(e,t)}))}:JP;Kg.exports=eU});var Yg=u((hW,Vg)=>{"use strict";var tU=nr(),rU=Gn();function aU(e,t){return tU(e,rU(e),t)}Vg.exports=aU});var yi=u((yW,Hg)=>{"use strict";var nU=za(),oU=on(),sU=Gn(),iU=hi(),uU=Object.getOwnPropertySymbols,pU=uU?function(e){for(var t=[];e;)nU(t,sU(e)),e=oU(e);return t}:iU;Hg.exports=pU});var Jg=u((AW,zg)=>{"use strict";var cU=nr(),lU=yi();function dU(e,t){return cU(e,lU(e),t)}zg.exports=dU});var Ai=u((bW,Xg)=>{"use strict";var fU=za(),mU=re();function gU(e,t,r){var a=t(e);return mU(e)?a:fU(a,r(e))}Xg.exports=gU});var bi=u((IW,Zg)=>{"use strict";var hU=Ai(),yU=Gn(),AU=gr();function bU(e){return hU(e,AU,yU)}Zg.exports=bU});var th=u((SW,eh)=>{"use strict";var IU=Ai(),SU=yi(),wU=or();function TU(e){return IU(e,wU,SU)}eh.exports=TU});var ah=u((wW,rh)=>{"use strict";var vU=gt(),EU=oe(),RU=vU(EU,"DataView");rh.exports=RU});var oh=u((TW,nh)=>{"use strict";var _U=gt(),xU=oe(),CU=_U(xU,"Promise");nh.exports=CU});var yr=u((vW,dh)=>{"use strict";var Ii=ah(),Si=Za(),wi=oh(),Ti=Do(),vi=Js(),lh=mt(),hr=xo(),sh="[object Map]",OU="[object Object]",ih="[object Promise]",uh="[object Set]",ph="[object WeakMap]",ch="[object DataView]",LU=hr(Ii),PU=hr(Si),UU=hr(wi),qU=hr(Ti),DU=hr(vi),Nt=lh;(Ii&&Nt(new Ii(new ArrayBuffer(1)))!=ch||Si&&Nt(new Si)!=sh||wi&&Nt(wi.resolve())!=ih||Ti&&Nt(new Ti)!=uh||vi&&Nt(new vi)!=ph)&&(Nt=function(e){var t=lh(e),r=t==OU?e.constructor:void 0,a=r?hr(r):"";if(a)switch(a){case LU:return ch;case PU:return sh;case UU:return ih;case qU:return uh;case DU:return ph}return t});dh.exports=Nt});var mh=u((EW,fh)=>{"use strict";var NU=Object.prototype,BU=NU.hasOwnProperty;function MU(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&BU.call(e,"index")&&(r.index=e.index,r.input=e.input),r}fh.exports=MU});var hh=u((RW,gh)=>{"use strict";var GU=nn();function kU(e,t){var r=t?GU(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}gh.exports=kU});var Ah=u((_W,yh)=>{"use strict";var FU=/\w*$/;function QU(e){var t=new e.constructor(e.source,FU.exec(e));return t.lastIndex=e.lastIndex,t}yh.exports=QU});var Th=u((xW,wh)=>{"use strict";var bh=xt(),Ih=bh?bh.prototype:void 0,Sh=Ih?Ih.valueOf:void 0;function jU(e){return Sh?Object(Sh.call(e)):{}}wh.exports=jU});var Eh=u((CW,vh)=>{"use strict";var WU=nn(),$U=hh(),KU=Ah(),VU=Th(),YU=jo(),HU="[object Boolean]",zU="[object Date]",JU="[object Map]",XU="[object Number]",ZU="[object RegExp]",eq="[object Set]",tq="[object String]",rq="[object Symbol]",aq="[object ArrayBuffer]",nq="[object DataView]",oq="[object Float32Array]",sq="[object Float64Array]",iq="[object Int8Array]",uq="[object Int16Array]",pq="[object Int32Array]",cq="[object Uint8Array]",lq="[object Uint8ClampedArray]",dq="[object Uint16Array]",fq="[object Uint32Array]";function mq(e,t,r){var a=e.constructor;switch(t){case aq:return WU(e);case HU:case zU:return new a(+e);case nq:return $U(e,r);case oq:case sq:case iq:case uq:case pq:case cq:case lq:case dq:case fq:return YU(e,r);case JU:return new a;case XU:case tq:return new a(e);case ZU:return KU(e);case eq:return new a;case rq:return VU(e)}}vh.exports=mq});var _h=u((OW,Rh)=>{"use strict";var gq=yr(),hq=he(),yq="[object Map]";function Aq(e){return hq(e)&&gq(e)==yq}Rh.exports=Aq});var Lh=u((LW,Oh)=>{"use strict";var bq=_h(),Iq=un(),xh=pn(),Ch=xh&&xh.isMap,Sq=Ch?Iq(Ch):bq;Oh.exports=Sq});var Uh=u((PW,Ph)=>{"use strict";var wq=yr(),Tq=he(),vq="[object Set]";function Eq(e){return Tq(e)&&wq(e)==vq}Ph.exports=Eq});var Bh=u((UW,Nh)=>{"use strict";var Rq=Uh(),_q=un(),qh=pn(),Dh=qh&&qh.isSet,xq=Dh?_q(Dh):Rq;Nh.exports=xq});var Ei=u((qW,Fh)=>{"use strict";var Cq=aa(),Oq=Nn(),Lq=Ho(),Pq=gi(),Uq=Fg(),qq=Fo(),Dq=tr(),Nq=Yg(),Bq=Jg(),Mq=bi(),Gq=th(),kq=yr(),Fq=mh(),Qq=Eh(),jq=$o(),Wq=re(),$q=ua(),Kq=Lh(),Vq=Ee(),Yq=Bh(),Hq=gr(),zq=or(),Jq=1,Xq=2,Zq=4,Mh="[object Arguments]",eD="[object Array]",tD="[object Boolean]",rD="[object Date]",aD="[object Error]",Gh="[object Function]",nD="[object GeneratorFunction]",oD="[object Map]",sD="[object Number]",kh="[object Object]",iD="[object RegExp]",uD="[object Set]",pD="[object String]",cD="[object Symbol]",lD="[object WeakMap]",dD="[object ArrayBuffer]",fD="[object DataView]",mD="[object Float32Array]",gD="[object Float64Array]",hD="[object Int8Array]",yD="[object Int16Array]",AD="[object Int32Array]",bD="[object Uint8Array]",ID="[object Uint8ClampedArray]",SD="[object Uint16Array]",wD="[object Uint32Array]",D={};D[Mh]=D[eD]=D[dD]=D[fD]=D[tD]=D[rD]=D[mD]=D[gD]=D[hD]=D[yD]=D[AD]=D[oD]=D[sD]=D[kh]=D[iD]=D[uD]=D[pD]=D[cD]=D[bD]=D[ID]=D[SD]=D[wD]=!0;D[aD]=D[Gh]=D[lD]=!1;function kn(e,t,r,a,n,o){var s,i=t&Jq,p=t&Xq,m=t&Zq;if(r&&(s=n?r(e,a,n,o):r(e)),s!==void 0)return s;if(!Vq(e))return e;var f=Wq(e);if(f){if(s=Fq(e),!i)return Dq(e,s)}else{var h=kq(e),g=h==Gh||h==nD;if($q(e))return qq(e,i);if(h==kh||h==Mh||g&&!n){if(s=p||g?{}:jq(e),!i)return p?Bq(e,Uq(s,e)):Nq(e,Pq(s,e))}else{if(!D[h])return n?e:{};s=Qq(e,h,i)}}o||(o=new Cq);var S=o.get(e);if(S)return S;o.set(e,s),Yq(e)?e.forEach(function(R){s.add(kn(R,t,r,R,e,o))}):Kq(e)&&e.forEach(function(R,E){s.set(E,kn(R,t,r,E,e,o))});var O=m?p?Gq:Mq:p?zq:Hq,_=f?void 0:O(e);return Oq(_||e,function(R,E){_&&(E=R,R=e[E]),Lq(s,E,kn(R,t,r,E,e,o))}),s}Fh.exports=kn});var jh=u((DW,Qh)=>{"use strict";var TD=Ei(),vD=4;function ED(e){return TD(e,vD)}Qh.exports=ED});var $h=u((NW,Wh)=>{"use strict";var RD=Mn(),_D=8;function Ri(e,t,r){t=r?void 0:t;var a=RD(e,_D,void 0,void 0,void 0,void 0,void 0,t);return a.placeholder=Ri.placeholder,a}Ri.placeholder={};Wh.exports=Ri});var Vh=u((BW,Kh)=>{"use strict";var xD=mt(),CD=he(),OD=Ko(),LD="[object DOMException]",PD="[object Error]";function UD(e){if(!CD(e))return!1;var t=xD(e);return t==PD||t==LD||typeof e.message=="string"&&typeof e.name=="string"&&!OD(e)}Kh.exports=UD});var Hh=u((MW,Yh)=>{"use strict";var qD=yr(),DD=he(),ND="[object WeakMap]";function BD(e){return DD(e)&&qD(e)==ND}Yh.exports=BD});var Jh=u((GW,zh)=>{"use strict";function MD(e,t){for(var r=-1,a=e==null?0:e.length;++r<a;)if(t(e[r],r,e))return!0;return!1}zh.exports=MD});var _i=u((kW,Xh)=>{"use strict";var GD=Po(),kD=Jh(),FD=qo(),QD=1,jD=2;function WD(e,t,r,a,n,o){var s=r&QD,i=e.length,p=t.length;if(i!=p&&!(s&&p>i))return!1;var m=o.get(e),f=o.get(t);if(m&&f)return m==t&&f==e;var h=-1,g=!0,S=r&jD?new GD:void 0;for(o.set(e,t),o.set(t,e);++h<i;){var O=e[h],_=t[h];if(a)var R=s?a(_,O,h,t,e,o):a(O,_,h,e,t,o);if(R!==void 0){if(R)continue;g=!1;break}if(S){if(!kD(t,function(E,U){if(!FD(S,U)&&(O===E||n(O,E,r,a,o)))return S.push(U)})){g=!1;break}}else if(!(O===_||n(O,_,r,a,o))){g=!1;break}}return o.delete(e),o.delete(t),g}Xh.exports=WD});var ey=u((FW,Zh)=>{"use strict";function $D(e){var t=-1,r=Array(e.size);return e.forEach(function(a,n){r[++t]=[n,a]}),r}Zh.exports=$D});var oy=u((QW,ny)=>{"use strict";var ty=xt(),ry=Qo(),KD=Ht(),VD=_i(),YD=ey(),HD=rn(),zD=1,JD=2,XD="[object Boolean]",ZD="[object Date]",eN="[object Error]",tN="[object Map]",rN="[object Number]",aN="[object RegExp]",nN="[object Set]",oN="[object String]",sN="[object Symbol]",iN="[object ArrayBuffer]",uN="[object DataView]",ay=ty?ty.prototype:void 0,xi=ay?ay.valueOf:void 0;function pN(e,t,r,a,n,o,s){switch(r){case uN:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case iN:return!(e.byteLength!=t.byteLength||!o(new ry(e),new ry(t)));case XD:case ZD:case rN:return KD(+e,+t);case eN:return e.name==t.name&&e.message==t.message;case aN:case oN:return e==t+"";case tN:var i=YD;case nN:var p=a&zD;if(i||(i=HD),e.size!=t.size&&!p)return!1;var m=s.get(e);if(m)return m==t;a|=JD,s.set(e,t);var f=VD(i(e),i(t),a,n,o,s);return s.delete(e),f;case sN:if(xi)return xi.call(e)==xi.call(t)}return!1}ny.exports=pN});var uy=u((jW,iy)=>{"use strict";var sy=bi(),cN=1,lN=Object.prototype,dN=lN.hasOwnProperty;function fN(e,t,r,a,n,o){var s=r&cN,i=sy(e),p=i.length,m=sy(t),f=m.length;if(p!=f&&!s)return!1;for(var h=p;h--;){var g=i[h];if(!(s?g in t:dN.call(t,g)))return!1}var S=o.get(e),O=o.get(t);if(S&&O)return S==t&&O==e;var _=!0;o.set(e,t),o.set(t,e);for(var R=s;++h<p;){g=i[h];var E=e[g],U=t[g];if(a)var Oe=s?a(U,E,g,t,e,o):a(E,U,g,e,t,o);if(!(Oe===void 0?E===U||n(E,U,r,a,o):Oe)){_=!1;break}R||(R=g=="constructor")}if(_&&!R){var Se=e.constructor,pt=t.constructor;Se!=pt&&"constructor"in e&&"constructor"in t&&!(typeof Se=="function"&&Se instanceof Se&&typeof pt=="function"&&pt instanceof pt)&&(_=!1)}return o.delete(e),o.delete(t),_}iy.exports=fN});var hy=u((WW,gy)=>{"use strict";var Ci=aa(),mN=_i(),gN=oy(),hN=uy(),py=yr(),cy=re(),ly=ua(),yN=cn(),AN=1,dy="[object Arguments]",fy="[object Array]",Fn="[object Object]",bN=Object.prototype,my=bN.hasOwnProperty;function IN(e,t,r,a,n,o){var s=cy(e),i=cy(t),p=s?fy:py(e),m=i?fy:py(t);p=p==dy?Fn:p,m=m==dy?Fn:m;var f=p==Fn,h=m==Fn,g=p==m;if(g&&ly(e)){if(!ly(t))return!1;s=!0,f=!1}if(g&&!f)return o||(o=new Ci),s||yN(e)?mN(e,t,r,a,n,o):gN(e,t,p,r,a,n,o);if(!(r&AN)){var S=f&&my.call(e,"__wrapped__"),O=h&&my.call(t,"__wrapped__");if(S||O){var _=S?e.value():e,R=O?t.value():t;return o||(o=new Ci),n(_,R,r,a,o)}}return g?(o||(o=new Ci),hN(e,t,r,a,n,o)):!1}gy.exports=IN});var Oi=u(($W,by)=>{"use strict";var SN=hy(),yy=he();function Ay(e,t,r,a,n){return e===t?!0:e==null||t==null||!yy(e)&&!yy(t)?e!==e&&t!==t:SN(e,t,r,a,Ay,n)}by.exports=Ay});var Sy=u((KW,Iy)=>{"use strict";var wN=aa(),TN=Oi(),vN=1,EN=2;function RN(e,t,r,a){var n=r.length,o=n,s=!a;if(e==null)return!o;for(e=Object(e);n--;){var i=r[n];if(s&&i[2]?i[1]!==e[i[0]]:!(i[0]in e))return!1}for(;++n<o;){i=r[n];var p=i[0],m=e[p],f=i[1];if(s&&i[2]){if(m===void 0&&!(p in e))return!1}else{var h=new wN;if(a)var g=a(m,f,p,e,t,h);if(!(g===void 0?TN(f,m,vN|EN,a,h):g))return!1}}return!0}Iy.exports=RN});var Li=u((VW,wy)=>{"use strict";var _N=Ee();function xN(e){return e===e&&!_N(e)}wy.exports=xN});var vy=u((YW,Ty)=>{"use strict";var CN=Li(),ON=gr();function LN(e){for(var t=ON(e),r=t.length;r--;){var a=t[r],n=e[a];t[r]=[a,n,CN(n)]}return t}Ty.exports=LN});var Pi=u((HW,Ey)=>{"use strict";function PN(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}Ey.exports=PN});var _y=u((zW,Ry)=>{"use strict";var UN=Sy(),qN=vy(),DN=Pi();function NN(e){var t=qN(e);return t.length==1&&t[0][2]?DN(t[0][0],t[0][1]):function(r){return r===e||UN(r,e,t)}}Ry.exports=NN});var Qn=u((JW,xy)=>{"use strict";var BN=re(),MN=mr(),GN=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,kN=/^\w*$/;function FN(e,t){if(BN(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||MN(e)?!0:kN.test(e)||!GN.test(e)||t!=null&&e in Object(t)}xy.exports=FN});var Ly=u((XW,Oy)=>{"use strict";var Cy=en(),QN="Expected a function";function Ui(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(QN);var r=function(){var a=arguments,n=t?t.apply(this,a):a[0],o=r.cache;if(o.has(n))return o.get(n);var s=e.apply(this,a);return r.cache=o.set(n,s)||o,s};return r.cache=new(Ui.Cache||Cy),r}Ui.Cache=Cy;Oy.exports=Ui});var Uy=u((ZW,Py)=>{"use strict";var jN=Ly(),WN=500;function $N(e){var t=jN(e,function(a){return r.size===WN&&r.clear(),a}),r=t.cache;return t}Py.exports=$N});var qi=u((e$,qy)=>{"use strict";var KN=Uy(),VN=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,YN=/\\(\\)?/g,HN=KN(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(VN,function(r,a,n,o){t.push(n?o.replace(YN,"$1"):a||r)}),t});qy.exports=HN});var Di=u((t$,Dy)=>{"use strict";function zN(e,t){for(var r=-1,a=e==null?0:e.length,n=Array(a);++r<a;)n[r]=t(e[r],r,e);return n}Dy.exports=zN});var Fy=u((r$,ky)=>{"use strict";var Ny=xt(),JN=Di(),XN=re(),ZN=mr(),eB=1/0,By=Ny?Ny.prototype:void 0,My=By?By.toString:void 0;function Gy(e){if(typeof e=="string")return e;if(XN(e))return JN(e,Gy)+"";if(ZN(e))return My?My.call(e):"";var t=e+"";return t=="0"&&1/e==-eB?"-0":t}ky.exports=Gy});var Ni=u((a$,Qy)=>{"use strict";var tB=Fy();function rB(e){return e==null?"":tB(e)}Qy.exports=rB});var Bi=u((n$,jy)=>{"use strict";var aB=re(),nB=Qn(),oB=qi(),sB=Ni();function iB(e,t){return aB(e)?e:nB(e,t)?[e]:oB(sB(e))}jy.exports=iB});var Ar=u((o$,Wy)=>{"use strict";var uB=mr(),pB=1/0;function cB(e){if(typeof e=="string"||uB(e))return e;var t=e+"";return t=="0"&&1/e==-pB?"-0":t}Wy.exports=cB});var Mi=u((s$,$y)=>{"use strict";var lB=Bi(),dB=Ar();function fB(e,t){t=lB(t,e);for(var r=0,a=t.length;e!=null&&r<a;)e=e[dB(t[r++])];return r&&r==a?e:void 0}$y.exports=fB});var Vy=u((i$,Ky)=>{"use strict";var mB=Mi();function gB(e,t,r){var a=e==null?void 0:mB(e,t);return a===void 0?r:a}Ky.exports=gB});var Hy=u((u$,Yy)=>{"use strict";function hB(e,t){return e!=null&&t in Object(e)}Yy.exports=hB});var Jy=u((p$,zy)=>{"use strict";var yB=Bi(),AB=zr(),bB=re(),IB=la(),SB=an(),wB=Ar();function TB(e,t,r){t=yB(t,e);for(var a=-1,n=t.length,o=!1;++a<n;){var s=wB(t[a]);if(!(o=e!=null&&r(e,s)))break;e=e[s]}return o||++a!=n?o:(n=e==null?0:e.length,!!n&&SB(n)&&IB(s,n)&&(bB(e)||AB(e)))}zy.exports=TB});var Zy=u((c$,Xy)=>{"use strict";var vB=Hy(),EB=Jy();function RB(e,t){return e!=null&&EB(e,t,vB)}Xy.exports=RB});var tA=u((l$,eA)=>{"use strict";var _B=Oi(),xB=Vy(),CB=Zy(),OB=Qn(),LB=Li(),PB=Pi(),UB=Ar(),qB=1,DB=2;function NB(e,t){return OB(e)&&LB(t)?PB(UB(e),t):function(r){var a=xB(r,e);return a===void 0&&a===t?CB(r,e):_B(t,a,qB|DB)}}eA.exports=NB});var aA=u((d$,rA)=>{"use strict";function BB(e){return function(t){return t?.[e]}}rA.exports=BB});var oA=u((f$,nA)=>{"use strict";var MB=Mi();function GB(e){return function(t){return MB(t,e)}}nA.exports=GB});var iA=u((m$,sA)=>{"use strict";var kB=aA(),FB=oA(),QB=Qn(),jB=Ar();function WB(e){return QB(e)?kB(jB(e)):FB(e)}sA.exports=WB});var Gi=u((g$,uA)=>{"use strict";var $B=_y(),KB=tA(),VB=Jr(),YB=re(),HB=iA();function zB(e){return typeof e=="function"?e:e==null?VB:typeof e=="object"?YB(e)?KB(e[0],e[1]):$B(e):HB(e)}uA.exports=zB});var cA=u((h$,pA)=>{"use strict";var JB=Ei(),XB=Gi(),ZB=1;function eM(e){return XB(typeof e=="function"?e:JB(e,ZB))}pA.exports=eM});var dA=u((y$,lA)=>{"use strict";var tM=Eo();function rM(e){var t=e==null?0:e.length;return t?tM(e,1):[]}lA.exports=rM});var mA=u((A$,fA)=>{"use strict";var aM=dA(),nM=Ro(),oM=Xa();function sM(e){return oM(nM(e,void 0,aM),e+"")}fA.exports=sM});var hA=u((b$,gA)=>{"use strict";var iM=Mn(),uM=mA(),pM=256,cM=uM(function(e,t){return iM(e,pM,void 0,void 0,void 0,t)});gA.exports=cM});var AA=u((I$,yA)=>{"use strict";var lM=Di(),dM=tr(),fM=re(),mM=mr(),gM=qi(),hM=Ar(),yM=Ni();function AM(e){return fM(e)?lM(e,hM):mM(e)?[e]:dM(gM(yM(e)))}yA.exports=AM});var IA=u((S$,bA)=>{"use strict";bA.exports={ary:qg(),assign:gi(),clone:jh(),curry:$h(),forEach:Nn(),isArray:re(),isError:Vh(),isFunction:Xr(),isWeakMap:Hh(),iteratee:cA(),keys:mi(),rearg:hA(),toInteger:ci(),toPath:AA()}});var wA=u((w$,SA)=>{"use strict";var bM=pm(),IM=IA();function SM(e,t,r){return bM(IM,e,t,r)}SA.exports=SM});var ki=u((T$,vA)=>{"use strict";var wM=wA(),TA=wM("merge",Jo());TA.placeholder=Vs();vA.exports=TA});var Eb=u((gK,vb)=>{"use strict";function QM(e,t,r,a){for(var n=-1,o=e==null?0:e.length;++n<o;){var s=e[n];t(a,s,r(s),e)}return a}vb.exports=QM});var _b=u((hK,Rb)=>{"use strict";var jM=ko(),WM=gr();function $M(e,t){return e&&jM(e,t,WM)}Rb.exports=$M});var Cb=u((yK,xb)=>{"use strict";var KM=Xt();function VM(e,t){return function(r,a){if(r==null)return r;if(!KM(r))return e(r,a);for(var n=r.length,o=t?n:-1,s=Object(r);(t?o--:++o<n)&&a(s[o],o,s)!==!1;);return r}}xb.exports=VM});var Lb=u((AK,Ob)=>{"use strict";var YM=_b(),HM=Cb(),zM=HM(YM);Ob.exports=zM});var Ub=u((bK,Pb)=>{"use strict";var JM=Lb();function XM(e,t,r,a){return JM(e,function(n,o,s){t(a,n,r(n),s)}),a}Pb.exports=XM});var Db=u((IK,qb)=>{"use strict";var ZM=Eb(),eG=Ub(),tG=Gi(),rG=re();function aG(e,t){return function(r,a){var n=rG(r)?ZM:eG,o=t?t():{};return n(r,e,tG(a,2),o)}}qb.exports=aG});var Bb=u((SK,Nb)=>{"use strict";var nG=na(),oG=Db(),sG=Object.prototype,iG=sG.hasOwnProperty,uG=oG(function(e,t,r){iG.call(e,r)?e[r].push(t):nG(e,r,[t])});Nb.exports=uG});var PG={};w(PG,{Method:()=>no,ai:()=>xu,api:()=>ru,auditLogs:()=>At,automations:()=>En,backups:()=>Re,branding:()=>hn,constants:()=>Wr,environmentVariables:()=>Ye,features:()=>qe,groups:()=>j,init:()=>am,licensing:()=>je,logger:()=>Bt,mappers:()=>V,middleware:()=>Vi,plugins:()=>Rn,publicApi:()=>Cn,quotas:()=>Ke,scimGroups:()=>br,scimUsers:()=>fe,sdk:()=>Qi,users:()=>at,utils:()=>Vt});module.exports=CI(PG);var no=(o=>(o.POST="POST",o.GET="GET",o.PATCH="PATCH",o.DELETE="DELETE",o.PUT="PUT",o))(no||{});var Qi={};w(Qi,{ai:()=>ms,auditLogs:()=>At,automations:()=>En,backups:()=>Re,branding:()=>hn,environmentVariables:()=>Ye,features:()=>qe,groups:()=>j,init:()=>am,licensing:()=>je,logger:()=>Bt,plugins:()=>Rn,publicApi:()=>Cn,quotas:()=>Ke,scimGroups:()=>br,scimUsers:()=>fe,users:()=>at,utils:()=>Vt});var hn={};w(hn,{getBrandingConfig:()=>bx});var qe={};w(qe,{checkBackups:()=>ye,checkFeature:()=>mn,checkFeatures:()=>us,checkSCIM:()=>ds,isAppBuildersEnabled:()=>Pt,isAuditLogsEnabled:()=>gn,isBackupsEnabled:()=>ps,isBrandingEnabled:()=>cs,isEnforceableSSO:()=>yf,isExpandedPublicApiEnabled:()=>tt,isPWAEnabled:()=>mx,isSSOEnforced:()=>gx,isSyncAutomationsEnabled:()=>dx,isTriggerAutomationRunEnabled:()=>fx,isUserGroupsEnabled:()=>ls,isViewPermissionEnabled:()=>hx,isViewReadonlyColumnsEnabled:()=>yx});var se=require("@budibase/types"),et=require("@budibase/backend-core");var je={};w(je,{cache:()=>Pe,client:()=>ft,features:()=>Ya,getFreeLicense:()=>os,getLicense:()=>as,getLicenseFromKey:()=>ns,keys:()=>is,offline:()=>ln,quotas:()=>Ha});var Pe={};w(Pe,{getCachedLicense:()=>gf,invalidate:()=>hf,refresh:()=>Ct});var Da=require("@budibase/backend-core"),vr,OI=async()=>{vr=await Da.RedisClient.init(Da.redis.utils.Databases.LICENSES)},LI=async()=>{vr&&await vr.finish()};process.on("exit",async()=>{await LI()});var oo=async()=>(vr||await OI(),vr);var ft={};w(ft,{activateLicenseKey:()=>Io,getLicense:()=>$t,getLicenseFromKey:()=>bo,triggerQuota:()=>hS});var Bu=P(require("node-fetch"));var Mu=require("@budibase/backend-core"),so=class{constructor(t){this.apiCall=t=>async(r="",a={})=>{a.headers||(a.headers={}),a.headers["Content-Type"]||(a.headers={"Content-Type":"application/json",Accept:"application/json",...a.headers});let n=a.headers["Content-Type"]==="application/json";Mu.logging.correlation.setHeader(a.headers);let o={method:t,body:n?JSON.stringify(a.body):a.body,headers:a.headers,credentials:"include"};return(0,Bu.default)(`${this.host}${r}`,o)};this.post=this.apiCall("POST");this.get=this.apiCall("GET");this.patch=this.apiCall("PATCH");this.del=this.apiCall("DELETE");this.put=this.apiCall("PUT");this.host=t}},io=so;var $a=require("@budibase/types"),L=require("@budibase/backend-core");var ke={};w(ke,{bustCache:()=>co,getCurrentUsageValues:()=>Ku,getQuotaUsage:()=>vt,setAllUsage:()=>fo,setAppUsageValue:()=>lo,setUsage:()=>ju,setUsagePerApp:()=>Wu,utils:()=>_r});var ne=require("@budibase/types"),ce=require("@budibase/backend-core");var _r={};w(_r,{generateBaseQuotaUsage:()=>Na,generateNewMonthlyQuotas:()=>Rr,generateNewQuotaUsage:()=>po,getBreakdownName:()=>Ma,getCurrentMonthString:()=>ct,getQuotaDocId:()=>Er,setCurrentMonth:()=>Ba,setQuotaReset:()=>uo});var Y=require("@budibase/types"),Tt=require("@budibase/backend-core"),Er=()=>Tt.context.isSelfHostUsingCloud()?`quota_usage_${Tt.context.getTenantId()}`:Tt.db.StaticDatabases.GLOBAL.docs.usageQuota,Gu=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},uo=e=>{e.quotaReset=Gu()},ct=()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},Na=()=>({usageQuota:{[Y.StaticQuotaName.APPS]:0,[Y.StaticQuotaName.ROWS]:0,[Y.StaticQuotaName.PLUGINS]:0,[Y.StaticQuotaName.USERS]:0,[Y.StaticQuotaName.CREATORS]:0,[Y.StaticQuotaName.USER_GROUPS]:0,[Y.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[ct()]:Rr()}}),po=()=>{let e={_id:Er(),quotaReset:Gu(),...Na(),apps:{}};return Ba(e),e},Rr=()=>({[Y.MonthlyQuotaName.QUERIES]:0,[Y.MonthlyQuotaName.AUTOMATIONS]:0,[Y.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,[Y.MonthlyQuotaName.ACTIONS]:0,triggers:{}}),Ba=e=>{let t=ct();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=Rr()),e.monthly.current=e.monthly[t]},Ma=(e,t)=>{if(!(!t||!e))switch(e){case Y.MonthlyQuotaName.AUTOMATIONS:return Y.BreakdownQuotaName.AUTOMATIONS;case Y.MonthlyQuotaName.QUERIES:return Tt.db.isTableId(t)?Y.BreakdownQuotaName.ROW_QUERIES:Tt.db.isDatasourceId(t)?Y.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}};var ku=ce.Duration.fromSeconds(60).toMs(),{Writethrough:Fu}=ce.cache.writethrough;function UI(e){return delete e.usageLimits,delete e.usageQuota.automationRuns,delete e.usageQuota.emails,delete e.usageQuota.storage,delete e.usageQuota.views,delete e.usageQuota.publishedApps,delete e.usageQuota.developers,e}var Ga=()=>ce.tenancy.isSelfHostUsingCloud()?new Fu(ce.tenancy.getSelfHostCloudDB(),ku):new Fu(ce.tenancy.getGlobalDB(),ku);async function co(e=0){let r=Ga(),a=Er(),n=await r.tryGet(a);n&&n._rev&&await r.remove(a,n._rev).catch(async o=>{if(e<1)return await co(e+1);throw o})}var vt=async()=>{let e=Ga(),t=await e.tryGet(Er());if(!t){t=po();let{rev:r}=await e.put(t);t._rev=r}return Ba(t),uo(t),UI(t)},ju=async(e,t,r)=>fo({name:t,type:r,values:{total:e}}),Wu=async(e,t,r)=>{let a=Ga(),n=await vt(),o=Object.values(e).reduce((i,p)=>i+p,0);for(let[i,p]of Object.entries(e))n=$u(n,t,r,{total:o,app:p},{appId:i});let s=await a.put(n);return n._rev=s.rev,n},qI=(e,t,r,a)=>{let n=Ma(t,r);if(!n||!a?.breakdown)return e;e.breakdown||(e.breakdown={}),e.breakdown[n]||(e.breakdown[n]={parent:t,values:{}});let o=e.breakdown[n];return o.values[r]=a.breakdown,e},lo=(e,t,r,a={},n)=>{let o;try{o=ce.db.getProdAppID(a?.appId||ce.context.getAppId())}catch{}if(!o||!n.app||!ne.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[o]||(e.apps={...e.apps,[o]:Na()});let s=e.apps[o];switch(r){case ne.QuotaUsageType.STATIC:s.usageQuota[t]=n.app;break;case ne.QuotaUsageType.MONTHLY:{let i=ct(),p=t,m=s.monthly[i];m||(s.monthly[i]=Rr(),m=s.monthly[i]),m[p]=n.app,ne.BREAKDOWN_QUOTA_NAMES.includes(p)&&a?.id&&(m=qI(m,p,a.id,n));break}}return e},Qu=(e,t,r,a)=>{if(!ne.APP_QUOTA_NAMES.includes(r))return{};let n;try{n=ce.db.getProdAppID(ce.context.getAppId())}catch{}if(!n||!e.apps||!e.apps[n])return{app:0};let o=e.apps[n];switch(t){case ne.QuotaUsageType.STATIC:if(o.usageQuota?.[r])return{app:o.usageQuota[r]};break;case ne.QuotaUsageType.MONTHLY:{let s=ct(),i=r;if(!o.monthly?.[s]?.[i])break;let p=o.monthly[s],m=p[i],f,h=Ma(i,a);return h&&a&&p.breakdown?.[h]&&(f=p.breakdown[h]?.values[a]),{app:m,breakdown:f||0}}}return{app:0}},DI=(e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},NI=(e,t,r,a)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),a&&(r.monthly[t].triggers[e]=a)},$u=(e,t,r,a,n={})=>{if(r===ne.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=a.total,DI(t,e,a.triggers);else if(r===ne.QuotaUsageType.MONTHLY){t=t;let o=ct();e.monthly[o][t]=a.total,NI(t,o,e,a.triggers)}else throw new Error(`Invalid usage type: ${r}`);return lo(e,t,r,n,a)},fo=async e=>{let t=Array.isArray(e)?e:[e],r=Ga(),a=await vt();for(let o of t)a=$u(a,o.name,o.type,o.values,o.opts);let n=await r.put(a,0);return a._rev=n.rev,a},Ku=async(e,t,r)=>{let a=await vt(),n=0,o={};switch(e){case ne.QuotaUsageType.STATIC:if(a.usageQuota[t]){let s=t;n=a.usageQuota[s],o=Qu(a,e,t,r)}break;case ne.QuotaUsageType.MONTHLY:{let s=ct(),i=t;a.monthly[s][i]&&(n=a.monthly[s][i],o=Qu(a,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return ne.APP_QUOTA_NAMES.includes(t)&&!(o.app||o.breakdown)&&(o.app=o.app||0,o.breakdown=o.breakdown||0),{total:n,app:o.app,breakdown:o.breakdown}};var Te={};w(Te,{destroy:()=>GI,get:()=>mo,save:()=>MI});var lt=require("@budibase/backend-core"),BI=()=>({_id:lt.StaticDatabases.GLOBAL.docs.licenseInfo}),MI=async e=>{let t=await mo();t={...t,...e};let a=await lt.tenancy.getGlobalDB().put(t);return t._rev=a.rev,t},mo=async()=>{let e=lt.tenancy.getGlobalDB();try{return await e.get(lt.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return BI();throw t}},GI=async()=>{let e=lt.tenancy.getGlobalDB(),t=await mo();t&&t._rev&&await e.remove(lt.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)};var M={};w(M,{bulkSave:()=>JI,destroy:()=>XI,fetch:()=>VI,generateUserGroupID:()=>$I,get:()=>YI,getBulk:()=>HI,getByName:()=>go,getGroupUsers:()=>Fa,getGroupUsersParams:()=>Ju,getUserGroupsParams:()=>zu,save:()=>zI});var N=require("@budibase/backend-core");var Le=require("@budibase/types"),Qt=require("@budibase/backend-core");async function Vu(){let e=Qt.sql.designDoc.base("type");e.sql.tables={[Le.AUDIT_LOG_TYPE]:{fields:{appId:Le.SQLiteType.TEXT,event:Le.SQLiteType.TEXT,userId:Le.SQLiteType.TEXT,timestamp:Le.SQLiteType.TEXT,metadata:Le.SQLiteType.TEXT,name:Le.SQLiteType.TEXT,type:Le.SQLiteType.TEXT,fallback:Le.SQLiteType.TEXT}}};let t=Qt.context.getAuditLogsDB(),r;try{r=await t.get(Qt.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(a){if(a.status===404)r=e;else throw a}await t.put(r)}var ka=require("@budibase/backend-core"),{ViewName:kI,SEPARATOR:FI,DocumentType:QI,createView:jI}=ka.db,WI=QI.USER+FI;async function Yu(){let e=ka.tenancy.getGlobalDB(),t=`function(doc) {
|
|
4
|
-
if (doc._id.startsWith("${
|
|
3
|
+
`)}jm.exports=BC});var Bn=u((Wj,$m)=>{"use strict";function MC(e,t){for(var r=-1,a=e==null?0:e.length;++r<a&&t(e[r],r,e)!==!1;);return e}$m.exports=MC});var Vm=u(($j,Km)=>{"use strict";var GC=Bn(),kC=qo(),FC=1,QC=2,jC=8,WC=16,$C=32,KC=64,VC=128,YC=256,HC=512,zC=[["ary",VC],["bind",FC],["bindKey",QC],["curry",jC],["curryRight",WC],["flip",HC],["partial",$C],["partialRight",KC],["rearg",YC]];function JC(e,t){return GC(zC,function(r){var a="_."+r[0];t&r[1]&&!kC(e,a)&&e.push(a)}),e.sort()}Km.exports=JC});var si=u((Kj,Ym)=>{"use strict";var XC=Qm(),ZC=Wm(),eL=Za(),tL=Vm();function rL(e,t,r){var a=t+"";return eL(e,ZC(a,tL(XC(a),r)))}Ym.exports=rL});var ii=u((Vj,Jm)=>{"use strict";var aL=Gm(),nL=oi(),oL=si(),sL=1,iL=2,uL=4,pL=8,Hm=32,zm=64;function cL(e,t,r,a,n,o,s,i,p,m){var f=t&pL,h=f?s:void 0,g=f?void 0:s,S=f?o:void 0,C=f?void 0:o;t|=f?Hm:zm,t&=~(f?zm:Hm),t&uL||(t&=~(sL|iL));var _=[e,t,n,S,h,C,g,i,p,m],R=r.apply(void 0,_);return aL(e)&&nL(R,_),R.placeholder=a,oL(R,e,t)}Jm.exports=cL});var ui=u((Yj,Xm)=>{"use strict";function lL(e){var t=e;return t.placeholder}Xm.exports=lL});var eg=u((Hj,Zm)=>{"use strict";var dL=er(),fL=la(),mL=Math.min;function gL(e,t){for(var r=e.length,a=mL(t.length,r),n=dL(e);a--;){var o=t[a];e[a]=fL(o,r)?n[o]:void 0}return e}Zm.exports=gL});var Mn=u((zj,rg)=>{"use strict";var tg="__lodash_placeholder__";function hL(e,t){for(var r=-1,a=e.length,n=0,o=[];++r<a;){var s=e[r];(s===t||s===tg)&&(e[r]=tg,o[n++]=r)}return o}rg.exports=hL});var pi=u((Jj,og)=>{"use strict";var yL=ti(),AL=ri(),bL=wm(),ag=wa(),IL=ii(),SL=ui(),wL=eg(),TL=Mn(),vL=oe(),EL=1,RL=2,_L=8,xL=16,OL=128,CL=512;function ng(e,t,r,a,n,o,s,i,p,m){var f=t&OL,h=t&EL,g=t&RL,S=t&(_L|xL),C=t&CL,_=g?void 0:ag(e);function R(){for(var E=arguments.length,U=Array(E),Ce=E;Ce--;)U[Ce]=arguments[Ce];if(S)var Se=SL(R),pt=bL(U,Se);if(a&&(U=yL(U,a,n,S)),o&&(U=AL(U,o,s,S)),E-=pt,S&&E<m){var kt=TL(U,Se);return IL(e,t,ng,R.placeholder,r,U,kt,i,p,m-E)}var Ir=h?r:this,Sr=g?Ir[e]:e;return E=U.length,i?U=wL(U,i):C&&E>1&&U.reverse(),f&&p<E&&(U.length=p),this&&this!==vL&&this instanceof R&&(Sr=_||ag(Sr)),Sr.apply(Ir,U)}return R}og.exports=ng});var ig=u((Xj,sg)=>{"use strict";var LL=Xa(),PL=wa(),UL=pi(),qL=ii(),DL=ui(),NL=Mn(),BL=oe();function ML(e,t,r){var a=PL(e);function n(){for(var o=arguments.length,s=Array(o),i=o,p=DL(n);i--;)s[i]=arguments[i];var m=o<3&&s[0]!==p&&s[o-1]!==p?[]:NL(s,p);if(o-=m.length,o<r)return qL(e,t,UL,n.placeholder,void 0,s,m,void 0,void 0,r-o);var f=this&&this!==BL&&this instanceof n?a:e;return LL(f,this,s)}return n}sg.exports=ML});var pg=u((Zj,ug)=>{"use strict";var GL=Xa(),kL=wa(),FL=oe(),QL=1;function jL(e,t,r,a){var n=t&QL,o=kL(e);function s(){for(var i=-1,p=arguments.length,m=-1,f=a.length,h=Array(f+p),g=this&&this!==FL&&this instanceof s?o:e;++m<f;)h[m]=a[m];for(;p--;)h[m++]=arguments[++i];return GL(g,n?r:this,h)}return s}ug.exports=jL});var gg=u((eW,mg)=>{"use strict";var WL=ti(),$L=ri(),cg=Mn(),lg="__lodash_placeholder__",ci=1,KL=2,VL=4,dg=8,Ta=128,fg=256,YL=Math.min;function HL(e,t){var r=e[1],a=t[1],n=r|a,o=n<(ci|KL|Ta),s=a==Ta&&r==dg||a==Ta&&r==fg&&e[7].length<=t[8]||a==(Ta|fg)&&t[7].length<=t[8]&&r==dg;if(!(o||s))return e;a&ci&&(e[2]=t[2],n|=r&ci?0:VL);var i=t[3];if(i){var p=e[3];e[3]=p?WL(p,i,t[4]):i,e[4]=p?cg(e[3],lg):t[4]}return i=t[5],i&&(p=e[5],e[5]=p?$L(p,i,t[6]):i,e[6]=p?cg(e[5],lg):t[6]),i=t[7],i&&(e[7]=i),a&Ta&&(e[8]=e[8]==null?t[8]:YL(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=n,e}mg.exports=HL});var yg=u((tW,hg)=>{"use strict";var zL=/\s/;function JL(e){for(var t=e.length;t--&&zL.test(e.charAt(t)););return t}hg.exports=JL});var bg=u((rW,Ag)=>{"use strict";var XL=yg(),ZL=/^\s+/;function eP(e){return e&&e.slice(0,XL(e)+1).replace(ZL,"")}Ag.exports=eP});var fr=u((aW,Ig)=>{"use strict";var tP=mt(),rP=he(),aP="[object Symbol]";function nP(e){return typeof e=="symbol"||rP(e)&&tP(e)==aP}Ig.exports=nP});var vg=u((nW,Tg)=>{"use strict";var oP=bg(),Sg=Ee(),sP=fr(),wg=0/0,iP=/^[-+]0x[0-9a-f]+$/i,uP=/^0b[01]+$/i,pP=/^0o[0-7]+$/i,cP=parseInt;function lP(e){if(typeof e=="number")return e;if(sP(e))return wg;if(Sg(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=Sg(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=oP(e);var r=uP.test(e);return r||pP.test(e)?cP(e.slice(2),r?2:8):iP.test(e)?wg:+e}Tg.exports=lP});var _g=u((oW,Rg)=>{"use strict";var dP=vg(),Eg=1/0,fP=17976931348623157e292;function mP(e){if(!e)return e===0?e:0;if(e=dP(e),e===Eg||e===-Eg){var t=e<0?-1:1;return t*fP}return e===e?e:0}Rg.exports=mP});var li=u((sW,xg)=>{"use strict";var gP=_g();function hP(e){var t=gP(e),r=t%1;return t===t?r?t-r:t:0}xg.exports=hP});var Gn=u((iW,Ug)=>{"use strict";var yP=ei(),AP=Am(),bP=ig(),IP=pi(),SP=pg(),wP=ai(),TP=gg(),vP=oi(),EP=si(),Og=li(),RP="Expected a function",Cg=1,_P=2,di=8,fi=16,mi=32,Lg=64,Pg=Math.max;function xP(e,t,r,a,n,o,s,i){var p=t&_P;if(!p&&typeof e!="function")throw new TypeError(RP);var m=a?a.length:0;if(m||(t&=~(mi|Lg),a=n=void 0),s=s===void 0?s:Pg(Og(s),0),i=i===void 0?i:Og(i),m-=n?n.length:0,t&Lg){var f=a,h=n;a=n=void 0}var g=p?void 0:wP(e),S=[e,t,r,a,n,f,h,o,s,i];if(g&&TP(S,g),e=S[0],t=S[1],r=S[2],a=S[3],n=S[4],i=S[9]=S[9]===void 0?p?0:e.length:Pg(S[9]-m,0),!i&&t&(di|fi)&&(t&=~(di|fi)),!t||t==Cg)var C=AP(e,t,r);else t==di||t==fi?C=bP(e,t,i):(t==mi||t==(Cg|mi))&&!n.length?C=SP(e,t,r,a):C=IP.apply(void 0,S);var _=g?yP:vP;return EP(_(C,S),e,t)}Ug.exports=xP});var Dg=u((uW,qg)=>{"use strict";var OP=Gn(),CP=128;function LP(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,OP(e,CP,void 0,void 0,void 0,void 0,t)}qg.exports=LP});var Bg=u((pW,Ng)=>{"use strict";var PP=$o(),UP=PP(Object.keys,Object);Ng.exports=UP});var gi=u((cW,Mg)=>{"use strict";var qP=un(),DP=Bg(),NP=Object.prototype,BP=NP.hasOwnProperty;function MP(e){if(!qP(e))return DP(e);var t=[];for(var r in Object(e))BP.call(e,r)&&r!="constructor"&&t.push(r);return t}Mg.exports=MP});var mr=u((lW,Gg)=>{"use strict";var GP=Jo(),kP=gi(),FP=Jt();function QP(e){return FP(e)?GP(e):kP(e)}Gg.exports=QP});var hi=u((dW,kg)=>{"use strict";var jP=ar(),WP=mr();function $P(e,t){return e&&jP(t,WP(t),e)}kg.exports=$P});var Qg=u((fW,Fg)=>{"use strict";var KP=ar(),VP=nr();function YP(e,t){return e&&KP(t,VP(t),e)}Fg.exports=YP});var Wg=u((mW,jg)=>{"use strict";function HP(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}jg.exports=HP});var yi=u((gW,$g)=>{"use strict";function zP(){return[]}$g.exports=zP});var kn=u((hW,Vg)=>{"use strict";var JP=Wg(),XP=yi(),ZP=Object.prototype,eU=ZP.propertyIsEnumerable,Kg=Object.getOwnPropertySymbols,tU=Kg?function(e){return e==null?[]:(e=Object(e),JP(Kg(e),function(t){return eU.call(e,t)}))}:XP;Vg.exports=tU});var Hg=u((yW,Yg)=>{"use strict";var rU=ar(),aU=kn();function nU(e,t){return rU(e,aU(e),t)}Yg.exports=nU});var Ai=u((AW,zg)=>{"use strict";var oU=Ja(),sU=sn(),iU=kn(),uU=yi(),pU=Object.getOwnPropertySymbols,cU=pU?function(e){for(var t=[];e;)oU(t,iU(e)),e=sU(e);return t}:uU;zg.exports=cU});var Xg=u((bW,Jg)=>{"use strict";var lU=ar(),dU=Ai();function fU(e,t){return lU(e,dU(e),t)}Jg.exports=fU});var bi=u((IW,Zg)=>{"use strict";var mU=Ja(),gU=re();function hU(e,t,r){var a=t(e);return gU(e)?a:mU(a,r(e))}Zg.exports=hU});var Ii=u((SW,eh)=>{"use strict";var yU=bi(),AU=kn(),bU=mr();function IU(e){return yU(e,bU,AU)}eh.exports=IU});var rh=u((wW,th)=>{"use strict";var SU=bi(),wU=Ai(),TU=nr();function vU(e){return SU(e,TU,wU)}th.exports=vU});var nh=u((TW,ah)=>{"use strict";var EU=gt(),RU=oe(),_U=EU(RU,"DataView");ah.exports=_U});var sh=u((vW,oh)=>{"use strict";var xU=gt(),OU=oe(),CU=xU(OU,"Promise");oh.exports=CU});var hr=u((EW,fh)=>{"use strict";var Si=nh(),wi=en(),Ti=sh(),vi=No(),Ei=Xs(),dh=mt(),gr=Oo(),ih="[object Map]",LU="[object Object]",uh="[object Promise]",ph="[object Set]",ch="[object WeakMap]",lh="[object DataView]",PU=gr(Si),UU=gr(wi),qU=gr(Ti),DU=gr(vi),NU=gr(Ei),Dt=dh;(Si&&Dt(new Si(new ArrayBuffer(1)))!=lh||wi&&Dt(new wi)!=ih||Ti&&Dt(Ti.resolve())!=uh||vi&&Dt(new vi)!=ph||Ei&&Dt(new Ei)!=ch)&&(Dt=function(e){var t=dh(e),r=t==LU?e.constructor:void 0,a=r?gr(r):"";if(a)switch(a){case PU:return lh;case UU:return ih;case qU:return uh;case DU:return ph;case NU:return ch}return t});fh.exports=Dt});var gh=u((RW,mh)=>{"use strict";var BU=Object.prototype,MU=BU.hasOwnProperty;function GU(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&MU.call(e,"index")&&(r.index=e.index,r.input=e.input),r}mh.exports=GU});var yh=u((_W,hh)=>{"use strict";var kU=on();function FU(e,t){var r=t?kU(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}hh.exports=FU});var bh=u((xW,Ah)=>{"use strict";var QU=/\w*$/;function jU(e){var t=new e.constructor(e.source,QU.exec(e));return t.lastIndex=e.lastIndex,t}Ah.exports=jU});var vh=u((OW,Th)=>{"use strict";var Ih=_t(),Sh=Ih?Ih.prototype:void 0,wh=Sh?Sh.valueOf:void 0;function WU(e){return wh?Object(wh.call(e)):{}}Th.exports=WU});var Rh=u((CW,Eh)=>{"use strict";var $U=on(),KU=yh(),VU=bh(),YU=vh(),HU=Wo(),zU="[object Boolean]",JU="[object Date]",XU="[object Map]",ZU="[object Number]",eq="[object RegExp]",tq="[object Set]",rq="[object String]",aq="[object Symbol]",nq="[object ArrayBuffer]",oq="[object DataView]",sq="[object Float32Array]",iq="[object Float64Array]",uq="[object Int8Array]",pq="[object Int16Array]",cq="[object Int32Array]",lq="[object Uint8Array]",dq="[object Uint8ClampedArray]",fq="[object Uint16Array]",mq="[object Uint32Array]";function gq(e,t,r){var a=e.constructor;switch(t){case nq:return $U(e);case zU:case JU:return new a(+e);case oq:return KU(e,r);case sq:case iq:case uq:case pq:case cq:case lq:case dq:case fq:case mq:return HU(e,r);case XU:return new a;case ZU:case rq:return new a(e);case eq:return VU(e);case tq:return new a;case aq:return YU(e)}}Eh.exports=gq});var xh=u((LW,_h)=>{"use strict";var hq=hr(),yq=he(),Aq="[object Map]";function bq(e){return yq(e)&&hq(e)==Aq}_h.exports=bq});var Ph=u((PW,Lh)=>{"use strict";var Iq=xh(),Sq=pn(),Oh=cn(),Ch=Oh&&Oh.isMap,wq=Ch?Sq(Ch):Iq;Lh.exports=wq});var qh=u((UW,Uh)=>{"use strict";var Tq=hr(),vq=he(),Eq="[object Set]";function Rq(e){return vq(e)&&Tq(e)==Eq}Uh.exports=Rq});var Mh=u((qW,Bh)=>{"use strict";var _q=qh(),xq=pn(),Dh=cn(),Nh=Dh&&Dh.isSet,Oq=Nh?xq(Nh):_q;Bh.exports=Oq});var Ri=u((DW,Qh)=>{"use strict";var Cq=aa(),Lq=Bn(),Pq=zo(),Uq=hi(),qq=Qg(),Dq=Qo(),Nq=er(),Bq=Hg(),Mq=Xg(),Gq=Ii(),kq=rh(),Fq=hr(),Qq=gh(),jq=Rh(),Wq=Ko(),$q=re(),Kq=ua(),Vq=Ph(),Yq=Ee(),Hq=Mh(),zq=mr(),Jq=nr(),Xq=1,Zq=2,eD=4,Gh="[object Arguments]",tD="[object Array]",rD="[object Boolean]",aD="[object Date]",nD="[object Error]",kh="[object Function]",oD="[object GeneratorFunction]",sD="[object Map]",iD="[object Number]",Fh="[object Object]",uD="[object RegExp]",pD="[object Set]",cD="[object String]",lD="[object Symbol]",dD="[object WeakMap]",fD="[object ArrayBuffer]",mD="[object DataView]",gD="[object Float32Array]",hD="[object Float64Array]",yD="[object Int8Array]",AD="[object Int16Array]",bD="[object Int32Array]",ID="[object Uint8Array]",SD="[object Uint8ClampedArray]",wD="[object Uint16Array]",TD="[object Uint32Array]",D={};D[Gh]=D[tD]=D[fD]=D[mD]=D[rD]=D[aD]=D[gD]=D[hD]=D[yD]=D[AD]=D[bD]=D[sD]=D[iD]=D[Fh]=D[uD]=D[pD]=D[cD]=D[lD]=D[ID]=D[SD]=D[wD]=D[TD]=!0;D[nD]=D[kh]=D[dD]=!1;function Fn(e,t,r,a,n,o){var s,i=t&Xq,p=t&Zq,m=t&eD;if(r&&(s=n?r(e,a,n,o):r(e)),s!==void 0)return s;if(!Yq(e))return e;var f=$q(e);if(f){if(s=Qq(e),!i)return Nq(e,s)}else{var h=Fq(e),g=h==kh||h==oD;if(Kq(e))return Dq(e,i);if(h==Fh||h==Gh||g&&!n){if(s=p||g?{}:Wq(e),!i)return p?Mq(e,qq(s,e)):Bq(e,Uq(s,e))}else{if(!D[h])return n?e:{};s=jq(e,h,i)}}o||(o=new Cq);var S=o.get(e);if(S)return S;o.set(e,s),Hq(e)?e.forEach(function(R){s.add(Fn(R,t,r,R,e,o))}):Vq(e)&&e.forEach(function(R,E){s.set(E,Fn(R,t,r,E,e,o))});var C=m?p?kq:Gq:p?Jq:zq,_=f?void 0:C(e);return Lq(_||e,function(R,E){_&&(E=R,R=e[E]),Pq(s,E,Fn(R,t,r,E,e,o))}),s}Qh.exports=Fn});var Wh=u((NW,jh)=>{"use strict";var vD=Ri(),ED=4;function RD(e){return vD(e,ED)}jh.exports=RD});var Kh=u((BW,$h)=>{"use strict";var _D=Gn(),xD=8;function _i(e,t,r){t=r?void 0:t;var a=_D(e,xD,void 0,void 0,void 0,void 0,void 0,t);return a.placeholder=_i.placeholder,a}_i.placeholder={};$h.exports=_i});var Yh=u((MW,Vh)=>{"use strict";var OD=mt(),CD=he(),LD=Vo(),PD="[object DOMException]",UD="[object Error]";function qD(e){if(!CD(e))return!1;var t=OD(e);return t==UD||t==PD||typeof e.message=="string"&&typeof e.name=="string"&&!LD(e)}Vh.exports=qD});var zh=u((GW,Hh)=>{"use strict";var DD=hr(),ND=he(),BD="[object WeakMap]";function MD(e){return ND(e)&&DD(e)==BD}Hh.exports=MD});var Xh=u((kW,Jh)=>{"use strict";function GD(e,t){for(var r=-1,a=e==null?0:e.length;++r<a;)if(t(e[r],r,e))return!0;return!1}Jh.exports=GD});var xi=u((FW,Zh)=>{"use strict";var kD=Uo(),FD=Xh(),QD=Do(),jD=1,WD=2;function $D(e,t,r,a,n,o){var s=r&jD,i=e.length,p=t.length;if(i!=p&&!(s&&p>i))return!1;var m=o.get(e),f=o.get(t);if(m&&f)return m==t&&f==e;var h=-1,g=!0,S=r&WD?new kD:void 0;for(o.set(e,t),o.set(t,e);++h<i;){var C=e[h],_=t[h];if(a)var R=s?a(_,C,h,t,e,o):a(C,_,h,e,t,o);if(R!==void 0){if(R)continue;g=!1;break}if(S){if(!FD(t,function(E,U){if(!QD(S,U)&&(C===E||n(C,E,r,a,o)))return S.push(U)})){g=!1;break}}else if(!(C===_||n(C,_,r,a,o))){g=!1;break}}return o.delete(e),o.delete(t),g}Zh.exports=$D});var ty=u((QW,ey)=>{"use strict";function KD(e){var t=-1,r=Array(e.size);return e.forEach(function(a,n){r[++t]=[n,a]}),r}ey.exports=KD});var sy=u((jW,oy)=>{"use strict";var ry=_t(),ay=jo(),VD=Yt(),YD=xi(),HD=ty(),zD=an(),JD=1,XD=2,ZD="[object Boolean]",eN="[object Date]",tN="[object Error]",rN="[object Map]",aN="[object Number]",nN="[object RegExp]",oN="[object Set]",sN="[object String]",iN="[object Symbol]",uN="[object ArrayBuffer]",pN="[object DataView]",ny=ry?ry.prototype:void 0,Oi=ny?ny.valueOf:void 0;function cN(e,t,r,a,n,o,s){switch(r){case pN:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case uN:return!(e.byteLength!=t.byteLength||!o(new ay(e),new ay(t)));case ZD:case eN:case aN:return VD(+e,+t);case tN:return e.name==t.name&&e.message==t.message;case nN:case sN:return e==t+"";case rN:var i=HD;case oN:var p=a&JD;if(i||(i=zD),e.size!=t.size&&!p)return!1;var m=s.get(e);if(m)return m==t;a|=XD,s.set(e,t);var f=YD(i(e),i(t),a,n,o,s);return s.delete(e),f;case iN:if(Oi)return Oi.call(e)==Oi.call(t)}return!1}oy.exports=cN});var py=u((WW,uy)=>{"use strict";var iy=Ii(),lN=1,dN=Object.prototype,fN=dN.hasOwnProperty;function mN(e,t,r,a,n,o){var s=r&lN,i=iy(e),p=i.length,m=iy(t),f=m.length;if(p!=f&&!s)return!1;for(var h=p;h--;){var g=i[h];if(!(s?g in t:fN.call(t,g)))return!1}var S=o.get(e),C=o.get(t);if(S&&C)return S==t&&C==e;var _=!0;o.set(e,t),o.set(t,e);for(var R=s;++h<p;){g=i[h];var E=e[g],U=t[g];if(a)var Ce=s?a(U,E,g,t,e,o):a(E,U,g,e,t,o);if(!(Ce===void 0?E===U||n(E,U,r,a,o):Ce)){_=!1;break}R||(R=g=="constructor")}if(_&&!R){var Se=e.constructor,pt=t.constructor;Se!=pt&&"constructor"in e&&"constructor"in t&&!(typeof Se=="function"&&Se instanceof Se&&typeof pt=="function"&&pt instanceof pt)&&(_=!1)}return o.delete(e),o.delete(t),_}uy.exports=mN});var yy=u(($W,hy)=>{"use strict";var Ci=aa(),gN=xi(),hN=sy(),yN=py(),cy=hr(),ly=re(),dy=ua(),AN=ln(),bN=1,fy="[object Arguments]",my="[object Array]",Qn="[object Object]",IN=Object.prototype,gy=IN.hasOwnProperty;function SN(e,t,r,a,n,o){var s=ly(e),i=ly(t),p=s?my:cy(e),m=i?my:cy(t);p=p==fy?Qn:p,m=m==fy?Qn:m;var f=p==Qn,h=m==Qn,g=p==m;if(g&&dy(e)){if(!dy(t))return!1;s=!0,f=!1}if(g&&!f)return o||(o=new Ci),s||AN(e)?gN(e,t,r,a,n,o):hN(e,t,p,r,a,n,o);if(!(r&bN)){var S=f&&gy.call(e,"__wrapped__"),C=h&&gy.call(t,"__wrapped__");if(S||C){var _=S?e.value():e,R=C?t.value():t;return o||(o=new Ci),n(_,R,r,a,o)}}return g?(o||(o=new Ci),yN(e,t,r,a,n,o)):!1}hy.exports=SN});var Li=u((KW,Iy)=>{"use strict";var wN=yy(),Ay=he();function by(e,t,r,a,n){return e===t?!0:e==null||t==null||!Ay(e)&&!Ay(t)?e!==e&&t!==t:wN(e,t,r,a,by,n)}Iy.exports=by});var wy=u((VW,Sy)=>{"use strict";var TN=aa(),vN=Li(),EN=1,RN=2;function _N(e,t,r,a){var n=r.length,o=n,s=!a;if(e==null)return!o;for(e=Object(e);n--;){var i=r[n];if(s&&i[2]?i[1]!==e[i[0]]:!(i[0]in e))return!1}for(;++n<o;){i=r[n];var p=i[0],m=e[p],f=i[1];if(s&&i[2]){if(m===void 0&&!(p in e))return!1}else{var h=new TN;if(a)var g=a(m,f,p,e,t,h);if(!(g===void 0?vN(f,m,EN|RN,a,h):g))return!1}}return!0}Sy.exports=_N});var Pi=u((YW,Ty)=>{"use strict";var xN=Ee();function ON(e){return e===e&&!xN(e)}Ty.exports=ON});var Ey=u((HW,vy)=>{"use strict";var CN=Pi(),LN=mr();function PN(e){for(var t=LN(e),r=t.length;r--;){var a=t[r],n=e[a];t[r]=[a,n,CN(n)]}return t}vy.exports=PN});var Ui=u((zW,Ry)=>{"use strict";function UN(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}Ry.exports=UN});var xy=u((JW,_y)=>{"use strict";var qN=wy(),DN=Ey(),NN=Ui();function BN(e){var t=DN(e);return t.length==1&&t[0][2]?NN(t[0][0],t[0][1]):function(r){return r===e||qN(r,e,t)}}_y.exports=BN});var jn=u((XW,Oy)=>{"use strict";var MN=re(),GN=fr(),kN=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,FN=/^\w*$/;function QN(e,t){if(MN(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||GN(e)?!0:FN.test(e)||!kN.test(e)||t!=null&&e in Object(t)}Oy.exports=QN});var Py=u((ZW,Ly)=>{"use strict";var Cy=tn(),jN="Expected a function";function qi(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(jN);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(qi.Cache||Cy),r}qi.Cache=Cy;Ly.exports=qi});var qy=u((e$,Uy)=>{"use strict";var WN=Py(),$N=500;function KN(e){var t=WN(e,function(a){return r.size===$N&&r.clear(),a}),r=t.cache;return t}Uy.exports=KN});var Di=u((t$,Dy)=>{"use strict";var VN=qy(),YN=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,HN=/\\(\\)?/g,zN=VN(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(YN,function(r,a,n,o){t.push(n?o.replace(HN,"$1"):a||r)}),t});Dy.exports=zN});var Ni=u((r$,Ny)=>{"use strict";function JN(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}Ny.exports=JN});var Qy=u((a$,Fy)=>{"use strict";var By=_t(),XN=Ni(),ZN=re(),eB=fr(),tB=1/0,My=By?By.prototype:void 0,Gy=My?My.toString:void 0;function ky(e){if(typeof e=="string")return e;if(ZN(e))return XN(e,ky)+"";if(eB(e))return Gy?Gy.call(e):"";var t=e+"";return t=="0"&&1/e==-tB?"-0":t}Fy.exports=ky});var Bi=u((n$,jy)=>{"use strict";var rB=Qy();function aB(e){return e==null?"":rB(e)}jy.exports=aB});var Mi=u((o$,Wy)=>{"use strict";var nB=re(),oB=jn(),sB=Di(),iB=Bi();function uB(e,t){return nB(e)?e:oB(e,t)?[e]:sB(iB(e))}Wy.exports=uB});var yr=u((s$,$y)=>{"use strict";var pB=fr(),cB=1/0;function lB(e){if(typeof e=="string"||pB(e))return e;var t=e+"";return t=="0"&&1/e==-cB?"-0":t}$y.exports=lB});var Gi=u((i$,Ky)=>{"use strict";var dB=Mi(),fB=yr();function mB(e,t){t=dB(t,e);for(var r=0,a=t.length;e!=null&&r<a;)e=e[fB(t[r++])];return r&&r==a?e:void 0}Ky.exports=mB});var Yy=u((u$,Vy)=>{"use strict";var gB=Gi();function hB(e,t,r){var a=e==null?void 0:gB(e,t);return a===void 0?r:a}Vy.exports=hB});var zy=u((p$,Hy)=>{"use strict";function yB(e,t){return e!=null&&t in Object(e)}Hy.exports=yB});var Xy=u((c$,Jy)=>{"use strict";var AB=Mi(),bB=zr(),IB=re(),SB=la(),wB=nn(),TB=yr();function vB(e,t,r){t=AB(t,e);for(var a=-1,n=t.length,o=!1;++a<n;){var s=TB(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&&wB(n)&&SB(s,n)&&(IB(e)||bB(e)))}Jy.exports=vB});var eA=u((l$,Zy)=>{"use strict";var EB=zy(),RB=Xy();function _B(e,t){return e!=null&&RB(e,t,EB)}Zy.exports=_B});var rA=u((d$,tA)=>{"use strict";var xB=Li(),OB=Yy(),CB=eA(),LB=jn(),PB=Pi(),UB=Ui(),qB=yr(),DB=1,NB=2;function BB(e,t){return LB(e)&&PB(t)?UB(qB(e),t):function(r){var a=OB(r,e);return a===void 0&&a===t?CB(r,e):xB(t,a,DB|NB)}}tA.exports=BB});var nA=u((f$,aA)=>{"use strict";function MB(e){return function(t){return t?.[e]}}aA.exports=MB});var sA=u((m$,oA)=>{"use strict";var GB=Gi();function kB(e){return function(t){return GB(t,e)}}oA.exports=kB});var uA=u((g$,iA)=>{"use strict";var FB=nA(),QB=sA(),jB=jn(),WB=yr();function $B(e){return jB(e)?FB(WB(e)):QB(e)}iA.exports=$B});var ki=u((h$,pA)=>{"use strict";var KB=xy(),VB=rA(),YB=Jr(),HB=re(),zB=uA();function JB(e){return typeof e=="function"?e:e==null?YB:typeof e=="object"?HB(e)?VB(e[0],e[1]):KB(e):zB(e)}pA.exports=JB});var lA=u((y$,cA)=>{"use strict";var XB=Ri(),ZB=ki(),eM=1;function tM(e){return ZB(typeof e=="function"?e:XB(e,eM))}cA.exports=tM});var fA=u((A$,dA)=>{"use strict";var rM=Ro();function aM(e){var t=e==null?0:e.length;return t?rM(e,1):[]}dA.exports=aM});var gA=u((b$,mA)=>{"use strict";var nM=fA(),oM=_o(),sM=Za();function iM(e){return sM(oM(e,void 0,nM),e+"")}mA.exports=iM});var yA=u((I$,hA)=>{"use strict";var uM=Gn(),pM=gA(),cM=256,lM=pM(function(e,t){return uM(e,cM,void 0,void 0,void 0,t)});hA.exports=lM});var bA=u((S$,AA)=>{"use strict";var dM=Ni(),fM=er(),mM=re(),gM=fr(),hM=Di(),yM=yr(),AM=Bi();function bM(e){return mM(e)?dM(e,yM):gM(e)?[e]:fM(hM(AM(e)))}AA.exports=bM});var SA=u((w$,IA)=>{"use strict";IA.exports={ary:Dg(),assign:hi(),clone:Wh(),curry:Kh(),forEach:Bn(),isArray:re(),isError:Yh(),isFunction:Xr(),isWeakMap:zh(),iteratee:lA(),keys:gi(),rearg:yA(),toInteger:li(),toPath:bA()}});var TA=u((T$,wA)=>{"use strict";var IM=cm(),SM=SA();function wM(e,t,r){return IM(SM,e,t,r)}wA.exports=wM});var Fi=u((v$,EA)=>{"use strict";var TM=TA(),vA=TM("merge",Xo());vA.placeholder=Ys();EA.exports=vA});var Rb=u((hK,Eb)=>{"use strict";function jM(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}Eb.exports=jM});var xb=u((yK,_b)=>{"use strict";var WM=Fo(),$M=mr();function KM(e,t){return e&&WM(e,t,$M)}_b.exports=KM});var Cb=u((AK,Ob)=>{"use strict";var VM=Jt();function YM(e,t){return function(r,a){if(r==null)return r;if(!VM(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}}Ob.exports=YM});var Pb=u((bK,Lb)=>{"use strict";var HM=xb(),zM=Cb(),JM=zM(HM);Lb.exports=JM});var qb=u((IK,Ub)=>{"use strict";var XM=Pb();function ZM(e,t,r,a){return XM(e,function(n,o,s){t(a,n,r(n),s)}),a}Ub.exports=ZM});var Nb=u((SK,Db)=>{"use strict";var eG=Rb(),tG=qb(),rG=ki(),aG=re();function nG(e,t){return function(r,a){var n=aG(r)?eG:tG,o=t?t():{};return n(r,e,rG(a,2),o)}}Db.exports=nG});var Mb=u((wK,Bb)=>{"use strict";var oG=na(),sG=Nb(),iG=Object.prototype,uG=iG.hasOwnProperty,pG=sG(function(e,t,r){uG.call(e,r)?e[r].push(t):oG(e,r,[t])});Bb.exports=pG});var UG={};w(UG,{Method:()=>oo,ai:()=>Ou,api:()=>au,auditLogs:()=>At,automations:()=>Rn,backups:()=>Re,branding:()=>yn,constants:()=>Wr,environmentVariables:()=>Ye,features:()=>qe,groups:()=>j,init:()=>nm,licensing:()=>je,logger:()=>Nt,mappers:()=>V,middleware:()=>Yi,plugins:()=>_n,publicApi:()=>Cn,quotas:()=>Ke,scimGroups:()=>Ar,scimUsers:()=>fe,sdk:()=>ji,users:()=>at,utils:()=>Kt});module.exports=CI(UG);var oo=(o=>(o.POST="POST",o.GET="GET",o.PATCH="PATCH",o.DELETE="DELETE",o.PUT="PUT",o))(oo||{});var ji={};w(ji,{ai:()=>gs,auditLogs:()=>At,automations:()=>Rn,backups:()=>Re,branding:()=>yn,environmentVariables:()=>Ye,features:()=>qe,groups:()=>j,init:()=>nm,licensing:()=>je,logger:()=>Nt,plugins:()=>_n,publicApi:()=>Cn,quotas:()=>Ke,scimGroups:()=>Ar,scimUsers:()=>fe,users:()=>at,utils:()=>Kt});var yn={};w(yn,{getBrandingConfig:()=>Ix});var qe={};w(qe,{checkBackups:()=>ye,checkFeature:()=>gn,checkFeatures:()=>ps,checkSCIM:()=>fs,isAppBuildersEnabled:()=>Lt,isAuditLogsEnabled:()=>hn,isBackupsEnabled:()=>cs,isBrandingEnabled:()=>ls,isEnforceableSSO:()=>Af,isExpandedPublicApiEnabled:()=>tt,isPWAEnabled:()=>gx,isSSOEnforced:()=>hx,isSyncAutomationsEnabled:()=>fx,isTriggerAutomationRunEnabled:()=>mx,isUserGroupsEnabled:()=>ds,isViewPermissionEnabled:()=>yx,isViewReadonlyColumnsEnabled:()=>Ax});var se=require("@budibase/types"),et=require("@budibase/backend-core");var je={};w(je,{cache:()=>Pe,client:()=>ft,features:()=>Ha,getFreeLicense:()=>ss,getLicense:()=>ns,getLicenseFromKey:()=>os,keys:()=>us,offline:()=>dn,quotas:()=>za});var Pe={};w(Pe,{getCachedLicense:()=>hf,invalidate:()=>yf,refresh:()=>xt});var Da=require("@budibase/backend-core"),Tr,LI=async()=>{Tr=await Da.RedisClient.init(Da.redis.utils.Databases.LICENSES)},PI=async()=>{Tr&&await Tr.finish()};process.on("exit",async()=>{await PI()});var so=async()=>(Tr||await LI(),Tr);var ft={};w(ft,{activateLicenseKey:()=>So,getLicense:()=>Wt,getLicenseFromKey:()=>Io,triggerQuota:()=>yS});var Mu=P(require("node-fetch"));var Gu=require("@budibase/backend-core"),io=class{constructor(t){this.apiCall=t=>async(r="",a={})=>{a.headers||(a.headers={}),a.headers["Content-Type"]||(a.headers={"Content-Type":"application/json",Accept:"application/json",...a.headers});let n=a.headers["Content-Type"]==="application/json";Gu.logging.correlation.setHeader(a.headers);let o={method:t,body:n?JSON.stringify(a.body):a.body,headers:a.headers,credentials:"include"};return(0,Mu.default)(`${this.host}${r}`,o)};this.post=this.apiCall("POST");this.get=this.apiCall("GET");this.patch=this.apiCall("PATCH");this.del=this.apiCall("DELETE");this.put=this.apiCall("PUT");this.host=t}},uo=io;var Ka=require("@budibase/types"),L=require("@budibase/backend-core");var ke={};w(ke,{bustCache:()=>lo,getCurrentUsageValues:()=>Vu,getQuotaUsage:()=>Tt,setAllUsage:()=>mo,setAppUsageValue:()=>fo,setUsage:()=>Wu,setUsagePerApp:()=>$u,utils:()=>_r});var ne=require("@budibase/types"),ce=require("@budibase/backend-core");var _r={};w(_r,{generateBaseQuotaUsage:()=>Ba,generateNewMonthlyQuotas:()=>Rr,generateNewQuotaUsage:()=>co,getBreakdownName:()=>Ga,getCurrentMonthString:()=>ct,getQuotaDocId:()=>Er,setCurrentMonth:()=>Ma,setQuotaReset:()=>po});var Y=require("@budibase/types"),vr=require("@budibase/backend-core"),Na=require("@budibase/shared-core"),Er=()=>vr.context.isSelfHostUsingCloud()?`quota_usage_${vr.context.getTenantId()}`:vr.db.StaticDatabases.GLOBAL.docs.usageQuota,ku=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},po=e=>{e.quotaReset=ku()},ct=()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},Ba=()=>({usageQuota:{[Y.StaticQuotaName.APPS]:0,[Y.StaticQuotaName.ROWS]:0,[Y.StaticQuotaName.PLUGINS]:0,[Y.StaticQuotaName.USERS]:0,[Y.StaticQuotaName.CREATORS]:0,[Y.StaticQuotaName.USER_GROUPS]:0,[Y.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[ct()]:Rr()}}),co=()=>{let e={_id:Er(),quotaReset:ku(),...Ba(),apps:{}};return Ma(e),e},Rr=()=>({[Y.MonthlyQuotaName.QUERIES]:0,[Y.MonthlyQuotaName.AUTOMATIONS]:0,[Y.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,[Y.MonthlyQuotaName.ACTIONS]:0,triggers:{}}),Ma=e=>{let t=ct();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=Rr()),e.monthly.current=e.monthly[t]},Ga=(e,t)=>{if(!(!t||!e))switch(e){case Y.MonthlyQuotaName.AUTOMATIONS:return Y.BreakdownQuotaName.AUTOMATIONS;case Y.MonthlyQuotaName.QUERIES:return(0,Na.isTableIdOrExternalTableId)(t)?Y.BreakdownQuotaName.ROW_QUERIES:(0,Na.isDatasourceOrDatasourcePlusId)(t)?Y.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}};var Fu=ce.Duration.fromSeconds(60).toMs(),{Writethrough:Qu}=ce.cache.writethrough;function qI(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 ka=()=>ce.tenancy.isSelfHostUsingCloud()?new Qu(ce.tenancy.getSelfHostCloudDB(),Fu):new Qu(ce.tenancy.getGlobalDB(),Fu);async function lo(e=0){let r=ka(),a=Er(),n=await r.tryGet(a);n&&n._rev&&await r.remove(a,n._rev).catch(async o=>{if(e<1)return await lo(e+1);throw o})}var Tt=async()=>{let e=ka(),t=await e.tryGet(Er());if(!t){t=co();let{rev:r}=await e.put(t);t._rev=r}return Ma(t),po(t),qI(t)},Wu=async(e,t,r)=>mo({name:t,type:r,values:{total:e}}),$u=async(e,t,r)=>{let a=ka(),n=await Tt(),o=Object.values(e).reduce((i,p)=>i+p,0);for(let[i,p]of Object.entries(e))n=Ku(n,t,r,{total:o,app:p},{appId:i});let s=await a.put(n);return n._rev=s.rev,n},DI=(e,t,r,a)=>{let n=Ga(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},fo=(e,t,r,a={},n)=>{let o;try{o=ce.db.getProdAppID(a?.appId||ce.context.getAppId())}catch{}if(!o||!n.app||!ne.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[o]||(e.apps={...e.apps,[o]:Ba()});let s=e.apps[o];switch(r){case ne.QuotaUsageType.STATIC:s.usageQuota[t]=n.app;break;case ne.QuotaUsageType.MONTHLY:{let i=ct(),p=t,m=s.monthly[i];m||(s.monthly[i]=Rr(),m=s.monthly[i]),m[p]=n.app,ne.BREAKDOWN_QUOTA_NAMES.includes(p)&&a?.id&&(m=DI(m,p,a.id,n));break}}return e},ju=(e,t,r,a)=>{if(!ne.APP_QUOTA_NAMES.includes(r))return{};let n;try{n=ce.db.getProdAppID(ce.context.getAppId())}catch{}if(!n||!e.apps||!e.apps[n])return{app:0};let o=e.apps[n];switch(t){case ne.QuotaUsageType.STATIC:if(o.usageQuota?.[r])return{app:o.usageQuota[r]};break;case ne.QuotaUsageType.MONTHLY:{let s=ct(),i=r;if(!o.monthly?.[s]?.[i])break;let p=o.monthly[s],m=p[i],f,h=Ga(i,a);return h&&a&&p.breakdown?.[h]&&(f=p.breakdown[h]?.values[a]),{app:m,breakdown:f||0}}}return{app:0}},NI=(e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},BI=(e,t,r,a)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),a&&(r.monthly[t].triggers[e]=a)},Ku=(e,t,r,a,n={})=>{if(r===ne.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=a.total,NI(t,e,a.triggers);else if(r===ne.QuotaUsageType.MONTHLY){t=t;let o=ct();e.monthly[o][t]=a.total,BI(t,o,e,a.triggers)}else throw new Error(`Invalid usage type: ${r}`);return fo(e,t,r,n,a)},mo=async e=>{let t=Array.isArray(e)?e:[e],r=ka(),a=await Tt();for(let o of t)a=Ku(a,o.name,o.type,o.values,o.opts);let n=await r.put(a,0);return a._rev=n.rev,a},Vu=async(e,t,r)=>{let a=await Tt(),n=0,o={};switch(e){case ne.QuotaUsageType.STATIC:if(a.usageQuota[t]){let s=t;n=a.usageQuota[s],o=ju(a,e,t,r)}break;case ne.QuotaUsageType.MONTHLY:{let s=ct(),i=t;a.monthly[s][i]&&(n=a.monthly[s][i],o=ju(a,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return ne.APP_QUOTA_NAMES.includes(t)&&!(o.app||o.breakdown)&&(o.app=o.app||0,o.breakdown=o.breakdown||0),{total:n,app:o.app,breakdown:o.breakdown}};var Te={};w(Te,{destroy:()=>kI,get:()=>go,save:()=>GI});var lt=require("@budibase/backend-core"),MI=()=>({_id:lt.StaticDatabases.GLOBAL.docs.licenseInfo}),GI=async e=>{let t=await go();t={...t,...e};let a=await lt.tenancy.getGlobalDB().put(t);return t._rev=a.rev,t},go=async()=>{let e=lt.tenancy.getGlobalDB();try{return await e.get(lt.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return MI();throw t}},kI=async()=>{let e=lt.tenancy.getGlobalDB(),t=await go();t&&t._rev&&await e.remove(lt.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)};var M={};w(M,{bulkSave:()=>XI,destroy:()=>ZI,fetch:()=>YI,generateUserGroupID:()=>KI,get:()=>HI,getBulk:()=>zI,getByName:()=>ho,getGroupUsers:()=>Qa,getGroupUsersParams:()=>Xu,getUserGroupsParams:()=>Ju,save:()=>JI});var N=require("@budibase/backend-core");var Le=require("@budibase/types"),Ft=require("@budibase/backend-core");async function Yu(){let e=Ft.sql.designDoc.base("type");e.sql.tables={[Le.AUDIT_LOG_TYPE]:{fields:{appId:Le.SQLiteType.TEXT,event:Le.SQLiteType.TEXT,userId:Le.SQLiteType.TEXT,timestamp:Le.SQLiteType.TEXT,metadata:Le.SQLiteType.TEXT,name:Le.SQLiteType.TEXT,type:Le.SQLiteType.TEXT,fallback:Le.SQLiteType.TEXT}}};let t=Ft.context.getAuditLogsDB(),r;try{r=await t.get(Ft.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(a){if(a.status===404)r=e;else throw a}await t.put(r)}var Fa=require("@budibase/backend-core"),{ViewName:FI,SEPARATOR:QI,DocumentType:jI,createView:WI}=Fa.db,$I=jI.USER+QI;async function Hu(){let e=Fa.tenancy.getGlobalDB(),t=`function(doc) {
|
|
4
|
+
if (doc._id.startsWith("${$I}") && 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
|
|
11
|
-
if (doc._id.startsWith("${
|
|
10
|
+
}`;await WI(e,t,FI.USER_BY_GROUP)}var zu=`${N.DocumentType.GROUP}${N.SEPARATOR}`;function Ju(e,t={}){e||(e="");let r=e?.startsWith(N.DocumentType.GROUP)?"":zu;return{...t,startkey:`${r}${e}`,endkey:`${r}${e}${N.UNICODE_MAX}`}}function Xu(e,t={}){e||(e="");let{emailSearch:r,bookmark:a,...n}=t;return r?{...n,startkey:`e_${e}${a||r}`,endkey:`e_${e}${r}${N.UNICODE_MAX}`}:{...t,startkey:`g_${e}`,endkey:`g_${e}${N.UNICODE_MAX}`,startkey_docid:a}}function KI(){return`${zu}${N.utils.newid()}`}async function Qa(e,t){let r=N.tenancy.getGlobalDB();return(await N.db.queryView(N.db.ViewName.USER_BY_GROUP,Xu(e,t),r,Hu,{arrayResponse:!0})).map(n=>({_id:n.userId,email:n.email}))||[]}async function xr(e){return e.users=await Qa(e._id),e}async function VI(e){let r=(await xr(e)).users?.map(o=>o._id),a=await N.users.bulkGetGlobalUsersById(r),n=[];for(let o of a){if(!o.userGroups)continue;let s=o.userGroups.length;o.userGroups=o.userGroups.filter(i=>i!==e._id),o.userGroups.length!==s&&n.push(o)}n.length&&await N.users.bulkUpdateGlobalUsers(n)}async function Zu(){return(await N.tenancy.getGlobalDB().allDocs(Ju(null,{include_docs:!0}))).rows.map(t=>t.doc)}async function YI(){let e=await Zu(),t=[];for(let r of e)t.push(xr(r));return await Promise.all(t)}async function HI(e){let r=await N.tenancy.getGlobalDB().get(e);return await xr(r)}async function zI(e,t={enriched:!0}){let a=await N.tenancy.getGlobalDB().getMultiple(e,{allowMissing:!0});if(t?.enriched){let n=[];for(let o of a)n.push(xr(o));return await Promise.all(n)}else return a}async function JI(e){return await N.tenancy.getGlobalDB().put(e)}async function XI(e){return await N.tenancy.getGlobalDB().bulkDocs(e)}async function ZI(e,t){let r=N.tenancy.getGlobalDB(),a=await r.get(e),n=await r.remove(e,t);return await VI(a),n}async function ho(e){let t=e.toLowerCase(),a=(await Zu()).find(n=>n.name.toLowerCase()===t);if(a)return await xr(a)}var ve={};w(ve,{deleteAppBackupMetadata:()=>dS,fetchAppBackups:()=>pS,generateAppBackupID:()=>fp,getAppBackupMetadata:()=>fS,oldestBackupDate:()=>lp,storeAppBackupMetadata:()=>cS,updateAppBackupMetadata:()=>lS});var Q=require("@budibase/backend-core"),cp=require("@budibase/types");function Or(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 Qt=require("@budibase/backend-core"),{ViewName:tp,AutomationViewMode:yo,SEPARATOR:Fe,DocumentType:rp,createView:ap}=Qt.db,eS=rp.AUTOMATION_LOG+Fe,ep=rp.APP_BACKUP+Fe;async function np(){let e=Qt.context.getProdAppDB(),t=`function(doc) {
|
|
11
|
+
if (doc._id.startsWith("${eS}")) {
|
|
12
12
|
let autoId = doc.automationId + "${Fe}"
|
|
13
13
|
let status = doc.status + "${Fe}"
|
|
14
|
-
let autoKey = "${
|
|
15
|
-
let statusKey = "${
|
|
16
|
-
let allKey = "${
|
|
14
|
+
let autoKey = "${yo.AUTOMATION}${Fe}" + autoId + doc.createdAt
|
|
15
|
+
let statusKey = "${yo.STATUS}${Fe}" + status + doc.createdAt
|
|
16
|
+
let allKey = "${yo.ALL}${Fe}" + status + autoId + doc.createdAt
|
|
17
17
|
emit(statusKey)
|
|
18
18
|
emit(autoKey)
|
|
19
19
|
emit(allKey)
|
|
20
20
|
}
|
|
21
|
-
}`;await
|
|
22
|
-
if (doc._id.startsWith("${
|
|
21
|
+
}`;await ap(e,t,tp.AUTOMATION_LOGS)}async function op(){let e=Qt.tenancy.getGlobalDB(),t=`function(doc) {
|
|
22
|
+
if (doc._id.startsWith("${ep}") && doc.type && doc.trigger) {
|
|
23
23
|
let full = doc.appId + "${Fe}"
|
|
24
24
|
full += doc.trigger.toLowerCase() + "${Fe}"
|
|
25
25
|
full += doc.type.toLowerCase() + "${Fe}"
|
|
26
|
-
emit("${
|
|
26
|
+
emit("${ep}" + full + doc.timestamp)
|
|
27
27
|
}
|
|
28
|
-
}`;await
|
|
28
|
+
}`;await ap(e,t,tp.APP_BACKUP_BY_TRIGGER)}var pp=require("@budibase/types");var Wr={};w(Wr,{GENERIC_PAGE_SIZE:()=>Qe,auditLogs:()=>jt,licenses:()=>ge,quotas:()=>Ze,versions:()=>jr});var ge={};w(ge,{CLOUD_FREE_LICENSE:()=>rS,SELF_FREE_LICENSE:()=>Ao,UNLIMITED:()=>F,UNLIMITED_LICENSE:()=>aS});var dt=require("@budibase/types");var Ze={};w(Ze,{UNLIMITED:()=>tS,actions:()=>Gr,appBackupRetentionDays:()=>Fr,apps:()=>Lr,automationLogRetentionDays:()=>kr,automations:()=>Br,budibaseAICredits:()=>Mr,creators:()=>Ur,customAIConfigurations:()=>Qr,plugins:()=>Dr,queries:()=>Nr,rows:()=>Cr,userGroups:()=>qr,users:()=>Pr});var te=require("@budibase/types"),tS=-1,Cr=e=>({[te.StaticQuotaName.ROWS]:{name:"Rows",value:e,triggers:[90,100]}}),Lr=e=>({[te.StaticQuotaName.APPS]:{name:"Apps",value:e,triggers:[100]}}),Pr=e=>({[te.StaticQuotaName.USERS]:{name:"Users",value:e,triggers:[80,100]}}),Ur=e=>({[te.StaticQuotaName.CREATORS]:{name:"Creators",value:e,triggers:[]}}),qr=e=>({[te.StaticQuotaName.USER_GROUPS]:{name:"User Groups",value:e,triggers:[80,100]}}),Dr=e=>({[te.StaticQuotaName.PLUGINS]:{name:"Plugins",value:e,triggers:[90,100]}}),Nr=e=>({[te.MonthlyQuotaName.QUERIES]:{name:"Queries",value:e,triggers:[]}}),Br=e=>({[te.MonthlyQuotaName.AUTOMATIONS]:{name:"Automations",value:e,triggers:[80,90,100]}}),Mr=e=>({[te.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:{name:"Budibase AI Credits",value:e,triggers:[80,90,100]}}),Gr=e=>({[te.MonthlyQuotaName.ACTIONS]:{name:"Actions",value:e,triggers:[80,90,100]}}),kr=e=>({[te.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS]:{name:"Automation Logs",value:e,triggers:[]}}),Fr=e=>({[te.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS]:{name:"App Backups",value:e,triggers:[]}}),Qr=e=>({[te.StaticQuotaName.AI_CUSTOM_CONFIGS]:{name:"Custom AI Configuration",value:e,triggers:[]}});var F=-1,rS={features:[],quotas:{usage:{monthly:{...Nr(F),...Br(200),...Mr(5e4),...Gr(F)},static:{...Lr(F),...Cr(2e3),...Pr(5),...Ur(5),...qr(0),...Dr(10),...Qr(0)}},constant:{...kr(1),...Fr(0)}},plan:{type:dt.PlanType.FREE,usesInvoicing:!1,model:dt.PlanModel.PER_USER}},Ao={features:[],quotas:{usage:{monthly:{...Nr(F),...Br(F),...Mr(5e4),...Gr(F)},static:{...Cr(F),...Lr(F),...Pr(20),...Ur(F),...qr(0),...Dr(10),...Qr(0)}},constant:{...kr(1),...Fr(0)}},plan:{type:dt.PlanType.FREE,usesInvoicing:!1,model:dt.PlanModel.PER_USER}},aS={features:[],quotas:{usage:{monthly:{...Nr(F),...Br(F),...Mr(F),...Gr(F)},static:{...Lr(F),...Cr(F),...Pr(F),...Ur(F),...qr(F),...Dr(F),...Qr(F)}},constant:{...kr(F),...Fr(F)}},plan:{type:dt.PlanType.FREE,usesInvoicing:!1,model:dt.PlanModel.PER_USER}};var jr={};w(jr,{getLicenseVersion:()=>nS,getProVersion:()=>ip});var vt=require("@budibase/backend-core"),ja=P(require("fs")),sp=P(require("path")),nS=()=>{if(vt.env.isDev()){let e="dev-version.txt",t=sp.default.join(vt.objectStore.budibaseTempDir(),e);if(ja.default.existsSync(t))return ja.default.readFileSync(t,"utf8");{let r=vt.utils.newid();return ja.default.writeFileSync(t,r),r}}else return ip()},ip=()=>{let e=vt.env.VERSION;if(!e)throw new Error("No budibase pro version was specified");return e};var jt={};w(jt,{searchTable:()=>oS});var Et=require("@budibase/types"),up=require("@budibase/backend-core");function oS(){return{type:"table",sourceType:Et.TableSourceType.INTERNAL,name:Et.AUDIT_LOG_TYPE,sourceId:up.SQS_DATASOURCE_INTERNAL,primary:["_id"],schema:{metadata:{name:"metadata",type:Et.FieldType.JSON},fallback:{name:"fallback",type:Et.FieldType.JSON}}}}var Qe=9;var sS=new Date(864e13).toISOString(),iS=1e3*60*60*24;async function Wa(e){let r=(await Pe.getCachedLicense()).quotas?.[pp.QuotaType.CONSTANT]?.[e]?.value||0;return r===ge.UNLIMITED?new Date(sS).toISOString():new Date(new Date().getTime()-iS*r).toISOString()}async function lp(){return Wa(cp.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS)}var bo=`${Q.db.DocumentType.APP_BACKUP}${Q.db.SEPARATOR}`;async function uS(e,t,r={}){let a=await lp(),n=Q.db.getProdAppID(e),o=n,s=n;if(t.trigger&&t.type){let i=`${Q.db.SEPARATOR}${t.trigger}`;i+=`${Q.db.SEPARATOR}${t.type}`,o+=i,s+=i}return(!t.startDate||t.startDate<a)&&(t.startDate=a),t.startDate&&(s+=`${Q.db.SEPARATOR}${t.startDate}`),t.endDate&&(o+=`${Q.db.SEPARATOR}${t.endDate}`),{...r,descending:!0,startkey:`${bo}${o}${Q.db.UNICODE_MAX}`,endkey:`${bo}${s}`}}async function dp(e,t){try{let r=Q.db.getQueryIndex(Q.db.ViewName.APP_BACKUP_BY_TRIGGER);return await e.query(r,t)}catch(r){if(r!=null&&r.error==="not_found")return await op(),dp(e,t);throw r}}function fp(e,t){return`${bo}${e}${Q.db.SEPARATOR}${t}`}async function pS(e,t={}){let r=Q.tenancy.getGlobalDB(),a,n=t.limit||9,o=await uS(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 dp(r,o);let s=Or(a,{paginate:t.paginate,pageSize:n}),i=[...new Set(s.data.filter(m=>m.createdBy).map(m=>m.createdBy))],p=await Q.users.bulkGetGlobalUsersById(i,{cleanup:!0});for(let m of p)for(let f of s.data)m?._id===f.createdBy&&(f.createdBy=m);return s}async function cS(e,t={}){let r=Q.tenancy.getGlobalDB(),a=Q.db.getProdAppID(e.appId),n=fp(a,e.timestamp),o={...e,_id:n,appId:a,name:e.name};return o._id=t.docId||o._id,o._rev=t.docRev||o._rev,t.filename&&(o.filename=t.filename),e.createdBy&&(o.createdBy=Q.db.getGlobalIDFromUserMetadataID(e.createdBy)),await r.put(o)}async function lS(e,t){let r=Q.tenancy.getGlobalDB(),a=await r.get(e);return a.name=t,await r.put(a)}async function dS(e){let t=Q.tenancy.getGlobalDB(),r=await t.get(e);await t.remove(r._id,r._rev)}async function fS(e){return await Q.tenancy.getGlobalDB().get(e)}var Rt={};w(Rt,{get:()=>gS,getCacheEnvVarID:()=>hp,getEnvVarID:()=>$a,update:()=>hS});var Ue=require("@budibase/backend-core"),gp=P(require("lru-cache")),mS=1e3,mp=new gp.default({max:mS});function $a(){return Ue.StaticDatabases.GLOBAL.docs.environmentVariables}function hp(e){return`${Ue.tenancy.getTenantId()}/${$a()}/${e||""}`}async function gS(){let e=$a(),t=Ue.tenancy.getGlobalDB(),r,a=!1;try{r=await t.get(e)}catch(i){if(i.status==404)a=!0;else throw i}let n=hp(r?._rev),o=mp.get(n);if(o)return o;let s;return!a&&r?s={...r,variables:JSON.parse(Ue.encryption.decrypt(r.variables,Ue.encryption.SecretOption.ENCRYPTION))}:s={_id:e,variables:{}},mp.set(n,s),s}async function hS(e){let t=$a();return await Ue.tenancy.getGlobalDB().put({_id:e._id||t,_rev:e._rev||void 0,variables:Ue.encryption.encrypt(JSON.stringify(e.variables),Ue.encryption.SecretOption.ENCRYPTION)})}var yp=require("dd-trace"),Va=new uo(L.env.INTERNAL_ACCOUNT_PORTAL_URL),Ya=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{}},Ap=async e=>{let t,r;if(L.env.SELF_HOSTED){if(t=await Te.get(),!t.licenseKey)return;r={[L.constants.Header.LICENSE_KEY]:t.licenseKey}}else{let a=L.tenancy.getTenantId();r={[L.constants.Header.API_KEY]:L.env.ACCOUNT_PORTAL_API_KEY,[L.constants.Header.TENANT_ID]:a}}return e(r)},bp=async()=>Ap(async e=>{let t=await ke.getQuotaUsage();if(t.usageQuota.users==null){let i=await L.users.getUserCount();console.info(`Syncing user count quota to ${i}`),t.usageQuota.users=i,await ke.setUsage(i,Ka.StaticQuotaName.USERS,Ka.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 Va.post("/api/license",{headers:{...e},body:s});if(i.status===404||i.status===403)return;if(i.status!==200){let p=await Ya(i);throw new L.HTTPError(`Error getting license: ${p}`,i.status)}return i.json()}catch(i){if(L.env.DISABLE_ACCOUNT_PORTAL)return;throw i}});L.env.isJest()&&(bp=jest.fn());var Wt=bp;async function Io(e){return await yp.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 Va.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 Ya(r);throw new L.HTTPError(`Error getting license: ${a}`,r.status)}return r.json()})}var yS=e=>Ap(async t=>{let r=await Va.post("/api/license/usage/triggered",{headers:{...t},body:e});if(r.status!==200){let a=await Ya(r);L.logging.logAlert(`Error triggering quota usage: ${a}`)}}),So=async e=>{let t=await L.installation.getInstall(),r={installVersion:t.version,installId:t.installId},a=await Va.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 Ya(a);throw new L.HTTPError(`Error activating license key: ${n}`,a.status)}return a.json()};var as=require("@budibase/backend-core");var dn={};w(dn,{activateOfflineLicenseToken:()=>tx,deleteOfflineLicenseToken:()=>rx,dev:()=>fa,enrichLicense:()=>lf,getIdentifier:()=>Zo,getIdentifierBase64:()=>ax,getIdentifierFromBase64:()=>nx,getOfflineLicense:()=>es,getOfflineLicenseToken:()=>uf,signing:()=>Vr,verifyExpiry:()=>pf,verifyInstallation:()=>cf});var Vr={};w(Vr,{sign:()=>bS,verifyLicenseToken:()=>Kr});var wo=P(require("jsonwebtoken")),AS=`-----BEGIN PUBLIC KEY-----
|
|
29
29
|
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvz3jePLCFBXZ19c8Dpkv
|
|
30
30
|
XtSgOhKFOcvQdo/LV0KJRUzQWDPWuO4ILtBtnqhjtIzZH4CH0qCYBet5L6Qr4CM1
|
|
31
31
|
l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
|
|
@@ -34,22 +34,22 @@ l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
|
|
|
34
34
|
d/o3ZWE1TTj1zYwlCLN5qRKr3hU8nC3xEYNEbkB9SfTRaOq9Q7P8WmfLkoCPm3pR
|
|
35
35
|
mwIDAQAB
|
|
36
36
|
-----END PUBLIC KEY-----
|
|
37
|
-
`;function Kr(e){return So.default.verify(e,yS,{algorithms:["RS256"]})}function AS(e,t){return So.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}var Ya={};w(Ya,{getFeatures:()=>wo});var l=require("@budibase/types");var bS={[l.PlanType.FREE]:[...ge.SELF_FREE_LICENSE.features],[l.PlanType.PREMIUM]:void 0,[l.PlanType.PREMIUM_PLUS]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.BUDIBASE_AI]},IS={[l.PlanType.FREE]:[...ge.CLOUD_FREE_LICENSE.features],[l.PlanType.PREMIUM]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.PDF],[l.PlanType.PREMIUM_PLUS]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.BUDIBASE_AI,l.Feature.PDF],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.BUDIBASE_AI,l.Feature.PDF],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.BRANDING],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.BRANDING],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.BUDIBASE_AI,l.Feature.PDF],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF]};function wo(e,t){let r=[];function a(n){let o=n[t];if(!o)throw new Error(`Features do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case l.Hosting.SELF:r=a(bS);break;case l.Hosting.CLOUD:r=a(IS);break}return r}var Ha={};w(Ha,{UNLIMITED:()=>d,getQuotas:()=>To});var G=require("@budibase/types");var c=Ze,bp=ge,d=-1,Yr=e=>e*1e6,SS={[G.PlanType.FREE]:{...bp.CLOUD_FREE_LICENSE.quotas},[G.PlanType.PREMIUM]:{usage:{monthly:{...c.queries(d),...c.automations(1e3),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(1e4),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(0),...c.plugins(d),...c.customAIConfigurations(0)}},constant:{...c.automationLogRetentionDays(7),...c.appBackupRetentionDays(7)}},[G.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...c.queries(d),...c.automations(5e3),...c.budibaseAICredits(Yr(2)),...c.actions(d)},static:{...c.rows(25e3),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(0),...c.plugins(d),...c.customAIConfigurations(1)}},constant:{...c.automationLogRetentionDays(30),...c.appBackupRetentionDays(30)}},[G.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...c.queries(d),...c.automations(5e3),...c.budibaseAICredits(Yr(2)),...c.actions(d)},static:{...c.rows(25e3),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(0),...c.plugins(d),...c.customAIConfigurations(1)}},constant:{...c.automationLogRetentionDays(30),...c.appBackupRetentionDays(30)}},[G.PlanType.PRO]:{usage:{monthly:{...c.queries(d),...c.automations(1e3),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(5),...c.plugins(d),...c.customAIConfigurations(0)}},constant:{...c.automationLogRetentionDays(7),...c.appBackupRetentionDays(7)}},[G.PlanType.TEAM]:{usage:{monthly:{...c.queries(d),...c.automations(5e3),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(10),...c.plugins(d),...c.customAIConfigurations(0)}},constant:{...c.automationLogRetentionDays(30),...c.appBackupRetentionDays(90)}},[G.PlanType.BUSINESS]:{usage:{monthly:{...c.queries(d),...c.automations(1e4),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(5e4),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(50),...c.plugins(d),...c.customAIConfigurations(0)}},constant:{...c.automationLogRetentionDays(365),...c.appBackupRetentionDays(365)}},[G.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(Yr(4)),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(d),...c.plugins(d),...c.customAIConfigurations(d)}},constant:{...c.automationLogRetentionDays(d),...c.appBackupRetentionDays(d)}},[G.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(Yr(4)),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(d),...c.plugins(d),...c.customAIConfigurations(d)}},constant:{...c.automationLogRetentionDays(15),...c.appBackupRetentionDays(15)}},[G.PlanType.ENTERPRISE]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(Yr(4)),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(d),...c.plugins(d),...c.customAIConfigurations(d)}},constant:{...c.automationLogRetentionDays(d),...c.appBackupRetentionDays(d)}}},wS={[G.PlanType.FREE]:{...bp.SELF_FREE_LICENSE.quotas},[G.PlanType.PREMIUM]:void 0,[G.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(0),...c.plugins(d),...c.customAIConfigurations(1)}},constant:{...c.automationLogRetentionDays(30),...c.appBackupRetentionDays(30)}},[G.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(0),...c.plugins(d),...c.customAIConfigurations(1)}},constant:{...c.automationLogRetentionDays(30),...c.appBackupRetentionDays(30)}},[G.PlanType.PRO]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(5),...c.plugins(d),...c.customAIConfigurations(0)}},constant:{...c.automationLogRetentionDays(7),...c.appBackupRetentionDays(7)}},[G.PlanType.TEAM]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(10),...c.plugins(d),...c.customAIConfigurations(0)}},constant:{...c.automationLogRetentionDays(30),...c.appBackupRetentionDays(90)}},[G.PlanType.BUSINESS]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(50),...c.plugins(d),...c.customAIConfigurations(0)}},constant:{...c.automationLogRetentionDays(90),...c.appBackupRetentionDays(365)}},[G.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(d),...c.plugins(d),...c.customAIConfigurations(d)}},constant:{...c.automationLogRetentionDays(d),...c.appBackupRetentionDays(d)}},[G.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(d),...c.plugins(d),...c.customAIConfigurations(d)}},constant:{...c.automationLogRetentionDays(15),...c.appBackupRetentionDays(15)}},[G.PlanType.ENTERPRISE]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(d),...c.plugins(d),...c.customAIConfigurations(d)}},constant:{...c.automationLogRetentionDays(d),...c.appBackupRetentionDays(d)}}};function To(e,t){let r;function a(n){let o=n[t];if(!o)throw new Error(`Quotas do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case G.Hosting.SELF:r=a(wS);break;case G.Hosting.CLOUD:r=a(SS);break}return JSON.parse(JSON.stringify(r))}var Vt={};w(Vt,{appExists:()=>TS,encoding:()=>Kt});var Ip=require("@budibase/backend-core");async function TS(e){return(await Ip.db.getAllApps({all:!0,idsOnly:!0})).includes(e)}var Kt={};w(Kt,{base64ToObject:()=>ES,objectToBase64:()=>vS});function vS(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}function ES(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}var af=require("@budibase/types"),sr=require("@budibase/backend-core"),nf=P(Nl()),of=P(Jo());async function ex(e){await Te.save({offlineLicenseToken:e}),await Ct()}async function tx(){await Te.save({offlineLicenseToken:void 0}),await Ct()}async function sf(){return(await Te.get()).offlineLicenseToken}async function Xo(){let t=(await sr.installation.getInstall()).installId,r=sr.context.getTenantId(),a=await sr.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:a}}async function rx(){let e=await Xo();return Kt.objectToBase64(e)}function ax(e){return Kt.base64ToObject(e)}function uf(e){let t=Date.now(),r=new Date(e.expireAt).getTime();if(t>r)throw new Error(`Offline license has expired. expireAt=${e.expireAt}`)}async function pf(e){let t=await Xo();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}function cf(e){let t=e.plan.type,r=af.Hosting.SELF,a=wo(r,t),n=To(r,t);return e.features=(0,nf.default)(e.features,a),e.quotas=(0,of.default)(e.quotas,n),e}async function Zo(){try{let e=await sf();if(e){let t=await Kr(e);return uf(t),await pf(t),cf(t)}}catch(e){console.error("Error retrieving offline license",e)}}var fa={};w(fa,{deleteDevLicense:()=>ux,getOfflineLicense:()=>sx,writeDevLicenseToDisk:()=>ix});var lf=require("@budibase/backend-core"),ts=require("path"),df=require("os"),Ot=P(require("fs"));var nx=lf.env.isTest()?".budibase-test":".budibase",es=(0,ts.join)((0,df.tmpdir)(),nx),ox="dev_license.txt",da=(0,ts.join)(es,ox);if(!Ot.default.existsSync(es))try{Ot.default.mkdirSync(es)}catch{}function sx(){try{if(Ot.default.existsSync(da)){let e=Ot.default.readFileSync(da,{encoding:"utf-8"});return Kr(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}function ix(e){console.log(`Writing license to: ${da}`),Ot.default.writeFileSync(da,e,{encoding:"utf-8"})}function ux(){Ot.default.rmSync(da,{force:!0})}var as=async()=>{if(rs.env.OFFLINE_MODE)return Zo();let e=await $t();return e||(e=fa.getOfflineLicense()),e},ns=e=>bo(e),os=()=>rs.env.SELF_HOSTED?ge.SELF_FREE_LICENSE:ge.CLOUD_FREE_LICENSE;var is={};w(is,{activateLicenseKey:()=>px,deleteLicenseKey:()=>cx,getLicenseKey:()=>dn});var ss=P(require("dd-trace"));async function px(e){await Io(e),await Te.save({licenseKey:e}),await Ct()}async function dn(){return await ss.default.trace("getLicenseKey",async e=>{let t=await Te.get();return e.addTags({licenseKey:t.licenseKey}),t.licenseKey})}async function cx(){return await ss.default.trace("deleteLicenseKey",async()=>{await Te.save({licenseKey:void 0}),await Ct()})}var Lt=require("@budibase/backend-core"),fn=P(require("dd-trace")),ff=3600,Ct=async()=>{await hf(),await gf()},mf=async(e,t)=>{let{populateLicense:r=as,populateFreeLicense:a=os}=t||{};return await fn.default.trace("getCachedLicense",async n=>{let o=Lt.context.getLicense();if(o)return n.addTags({foundInContext:!0,features:o.features,plan:o.plan,quotas:o.quotas}),o;let s=Lt.tenancy.getTenantId(),i=await oo(),p=await i.get(s);return n.addTags({tenantId:s,foundInCache:!!p}),p?(n.addTags({foundInCache:!0,refreshedAt:p.refreshedAt,features:p.features,plan:p.plan,quotas:p.quotas}),p):(p=await fn.default.trace("populateLicense",async()=>await r(s)),n.addTags({populatedLicense:!!p}),p||(p=fn.default.trace("populateFreeLicense",()=>a(e,s)),n.addTags({populatedFreeLicense:!!p})),p.refreshedAt=new Date().toISOString(),n.addTags({refreshedAt:p.refreshedAt,features:p.features,plan:p.plan,quotas:p.quotas,expirySeconds:ff}),await i.store(s,p,ff),p)})};Lt.env.isJest()&&(mf=jest.fn());var gf=mf,hf=async()=>{let e=Lt.tenancy.getTenantId();await(await oo()).delete(e)};async function ie(e,t){Array.isArray(e)||(e=[e]),t||(t=await Pe.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}async function mn(e,t){if(!await ie(e,t))throw new et.FeatureDisabledError(`${e} is not currently enabled`,e)}async function us(e,t){if(!await ie(e,t)){let r=e.join(", ");throw new et.FeatureDisabledError(`${r} are not currently enabled`,r)}}function ye(e){return async(...t)=>(await mn(se.Feature.APP_BACKUPS),e(...t))}async function ps(){return ie(se.Feature.APP_BACKUPS)}async function cs(){return ie(se.Feature.BRANDING)}async function yf(){return ie(se.Feature.ENFORCEABLE_SSO)}async function dx(){return ie(se.Feature.SYNC_AUTOMATIONS)}async function fx(){return ie(se.Feature.TRIGGER_AUTOMATION_RUN)}async function Pt(){return ie(se.Feature.APP_BUILDERS)}async function gn(){return ie(se.Feature.AUDIT_LOGS)}async function ls(){return ie(se.Feature.USER_GROUPS)}function mx(){return ie(se.Feature.PWA)}async function tt(){return ie(se.Feature.EXPANDED_PUBLIC_API)}async function gx(e){if(et.env.ENABLE_SSO_MAINTENANCE_MODE||!await yf())return!1;let r;return e?.config?r=e.config:r=await et.configs.getSettingsConfig(),!!r.isSSOEnforced}var ds=async()=>{let e=se.Feature.SCIM,t=await ie(e),r=await et.configs.getSCIMConfig();if(!t||!r?.enabled)throw new et.FeatureDisabledError(`${e} is not currently enabled`,e);return!0};async function hx(){return ie(se.Feature.VIEW_PERMISSIONS)}async function yx(){return ie(se.Feature.VIEW_READONLY_COLUMNS)}var Ax={faviconUrl:void 0,faviconUrlEtag:void 0,emailBrandingEnabled:!0,testimonialsEnabled:!0,platformTitle:void 0,loginHeading:void 0,loginButton:void 0,metaDescription:void 0,metaImageUrl:void 0,metaTitle:void 0};async function bx(e){return await cs()?{faviconUrl:e.faviconUrl,faviconUrlEtag:e.faviconUrlEtag,emailBrandingEnabled:e.emailBrandingEnabled,testimonialsEnabled:e.testimonialsEnabled,platformTitle:e.platformTitle,loginHeading:e.loginHeading,loginButton:e.loginButton,metaDescription:e.metaDescription,metaImageUrl:e.metaImageUrl,metaTitle:e.metaTitle}:Ax}var ms={};w(ms,{enrichAIConfig:()=>fs});var Af=require("@budibase/backend-core"),Ix="budibase_ai";async function fs(e){if(Af.env.SELF_HOSTED)return e;for(let t of Object.values(e.config))if(t.provider==="BudibaseAI")return e;return e.config[Ix]={provider:"BudibaseAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-4o-mini",name:"Budibase AI"},e}var Ke={};w(Ke,{addAction:()=>Ex,addApp:()=>Rx,addAutomation:()=>Px,addGroup:()=>hs,addPlugin:()=>As,addRow:()=>xx,addRows:()=>Ox,addUsers:()=>bn,bustCache:()=>co,decrement:()=>rt,decrementMany:()=>ma,getCurrentUsageValues:()=>Ku,getLicensedQuota:()=>If,getQuotaUsage:()=>vt,increment:()=>Ae,incrementBudibaseAICredits:()=>Sn,incrementMany:()=>Ut,removeApp:()=>_x,removeGroup:()=>ys,removePlugin:()=>bs,removeRow:()=>Cx,removeRows:()=>Lx,removeUsers:()=>lr,set:()=>gs,setAllUsage:()=>fo,setAppUsageValue:()=>lo,setUsage:()=>ju,setUsagePerApp:()=>Wu,updatePluginCount:()=>Is,updateUsage:()=>ur,usageLimitIsExceeded:()=>vx,utils:()=>_r});var yn=require("@budibase/types");var H=require("@budibase/types");var De=require("@budibase/backend-core");var ir=require("dd-trace"),Ae=(e,t,r)=>bf({change:1,name:e,type:t,opts:r}),Ut=e=>ir.tracer.trace("quotas.incrementMany",async()=>bf(e)),bf=async e=>await ir.tracer.trace("quotas.tryIncrement",async t=>{let r=Array.isArray(e)?e:[e];t.addTags({numActions:r.length}),await ur(r.map(n=>({usageChange:n.change,name:n.name,type:n.type,opts:{dryRun:!0,suppressErrorLog:n.opts?.suppressErrorLog,id:n.opts?.id}})));let a=[];for(let n of r)await ir.tracer.trace("quotas.incrementMany.fn",async o=>{o.addTags({actionName:n.name,actionType:n.type,actionChange:n.change});let s=n.opts?.fn;s&&a.push(await s())});return await ur(r.map(n=>({usageChange:n.change,name:n.name,type:n.type,opts:{dryRun:!1,valueFn:n.opts?.valueFn,suppressErrorLog:n.opts?.suppressErrorLog,id:n.opts?.id}}))),a[0]}),rt=(e,t,r={})=>ur({usageChange:-1,name:e,type:t,opts:r}),ma=e=>{let t=Array.isArray(e)?e:[e];return ur(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},gs=async(e,t,r)=>ke.setUsage(r,e,t),Sx=(e,t,r)=>{if(e==H.QuotaUsageType.STATIC){let a=r.usageQuota.triggers;return a?a[t]||{}:{}}else{let a=ke.utils.getCurrentMonthString(),n=r.monthly[a].triggers;return n?n[t]||{}:{}}},wx=async(e,t,r,a)=>{try{await De.locks.doWithLock({type:H.LockType.TRY_ONCE,name:H.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let n={percentage:r,name:t.name};a&&(n.resetDate=a),await ft.triggerQuota(n)})}catch(n){De.logging.logAlert("Error triggering quota",n)}},Tx=async(e,t,r,a)=>{let n=await vt(),o=e===H.QuotaUsageType.MONTHLY?n.quotaReset:void 0,s=await Sx(e,t,n),i=a.triggers,p=r/a.value*100;p>100&&(p=100);for(let[m,f]of i.entries())if(p>=f&&a.value!==Ze.UNLIMITED){if(!s[f]){s[f]=new Date().toISOString();let g=i[m+1]||100;(!(p>=g)||p===f)&&await wx(t,a,p,o)}}else s[f]=void 0;return s},ur=async e=>{await ir.tracer.trace("quotas.updateUsage",async t=>{let r=De.tenancy.getTenantId(),a=Array.isArray(e)?e:[e];t.addTags({numActions:a.length,tenantId:r});let n,o,s=[],i={},p={},m={},f={};for(let g of a)await ir.tracer.trace("quotas.updateUsage.action",async S=>{S.addTags({actionName:g.name,actionType:g.type,actionUsageChange:g.usageChange});try{n=De.context.getAppId()}catch{}if(H.APP_QUOTA_NAMES.includes(g.name)&&!n)throw new Error("App context required for quota update");try{o=await If(H.QuotaType.USAGE,g.name,g.type),s.push(o);let{total:_,app:R,breakdown:E}=await ke.getCurrentUsageValues(g.type,g.name,g.opts?.id);_+=g.usageChange,R!=null&&(R+=g.usageChange),E!=null&&(E+=g.usageChange);let U={};if(g.opts?.dryRun||(U=await Tx(g.type,g.name,_,o),f={...f,[g.name]:U}),o.value!==Ze.UNLIMITED&&_>o.value&&g.usageChange>0)throw new De.UsageLimitError(`Licensed ${o.name} of ${o.value} has been exceeded`,o.name);if(_=Math.max(0,_),R&&(R=Math.max(0,R)),E&&(E=Math.max(0,E),m={...m,[g.name]:E}),!g.opts?.dryRun){let Oe=g.opts?.valueFn;Oe&&(_=await Oe(),R=_),i={...i,[g.name]:_},p={...p,[g.name]:R}}}catch(_){throw g.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${g.name}`,_),_}});let h=a.filter(g=>!g.opts?.dryRun).map(g=>({name:g.name,type:g.type,values:{total:i[g.name],app:p[g.name],breakdown:m[g.name],triggers:f[g.name]},opts:{...g.opts,tenantId:r}}));h.length>0&&await ke.setAllUsage(h)})},If=async(e,t,r)=>{let a=await Pe.getCachedLicense();if(!a){let n=De.tenancy.getTenantId();throw new Error("License not found for tenant id "+n)}if(r&&(0,H.isStaticQuota)(e,r,t))return a.quotas[e][r][t];if(r&&(0,H.isMonthlyQuota)(e,r,t))return a.quotas[e][r][t];if((0,H.isConstantQuota)(e,t))return a.quotas[e][t];throw new Error("Invalid quota type")},vx=async(e,t)=>{try{return await ur({usageChange:1,name:e,type:t,opts:{dryRun:!0}}),!1}catch(r){if(r.code===H.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw r}};var Ex=async e=>Ae(yn.MonthlyQuotaName.ACTIONS,yn.QuotaUsageType.MONTHLY,{fn:e});var pr=require("@budibase/types"),Sf=require("@budibase/backend-core"),wf=async()=>{let e=await Sf.db.getAllApps({dev:!0});return e?e.length:0},Rx=async(e,{appId:t}={})=>Ae(pr.StaticQuotaName.APPS,pr.QuotaUsageType.STATIC,{fn:e,valueFn:wf,id:t}),_x=async({appId:e}={})=>rt(pr.StaticQuotaName.APPS,pr.QuotaUsageType.STATIC,{valueFn:wf,id:e});var We=require("@budibase/types"),xx=async(e,{tableId:t}={})=>Ae(We.StaticQuotaName.ROWS,We.QuotaUsageType.STATIC,{fn:e,id:t}),Cx=async({tableId:e}={})=>rt(We.StaticQuotaName.ROWS,We.QuotaUsageType.STATIC,{id:e}),Ox=async(e,t,{tableId:r}={})=>Ut({change:e,name:We.StaticQuotaName.ROWS,type:We.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),Lx=async(e,{tableId:t}={})=>ma({change:e,name:We.StaticQuotaName.ROWS,type:We.QuotaUsageType.STATIC,opts:{id:t}});var An=require("@budibase/types"),Px=async(e,{automationId:t}={})=>Ae(An.MonthlyQuotaName.AUTOMATIONS,An.QuotaUsageType.MONTHLY,{fn:e,id:t});var cr=require("@budibase/types"),hs=async e=>Ae(cr.StaticQuotaName.USER_GROUPS,cr.QuotaUsageType.STATIC,{fn:e}),ys=async()=>rt(cr.StaticQuotaName.USER_GROUPS,cr.QuotaUsageType.STATIC);var yt=require("@budibase/types"),As=async e=>Ae(yt.StaticQuotaName.PLUGINS,yt.QuotaUsageType.STATIC,{fn:e}),bs=async()=>rt(yt.StaticQuotaName.PLUGINS,yt.QuotaUsageType.STATIC),Is=async e=>gs(yt.StaticQuotaName.PLUGINS,yt.QuotaUsageType.STATIC,e);var $e=require("@budibase/types"),ga=require("@budibase/backend-core");var bn=async(e,t,r)=>{let a=[{change:e,name:$e.StaticQuotaName.USERS,type:$e.QuotaUsageType.STATIC,opts:{fn:r,valueFn:ga.users.getUserCount}}];t>0&&a.push({change:t,name:$e.StaticQuotaName.CREATORS,type:$e.QuotaUsageType.STATIC,opts:{valueFn:ga.users.getCreatorCount}});let n=await Ut(a);return await $t(),n},lr=async(e,t)=>{let r=[{change:e,name:$e.StaticQuotaName.USERS,type:$e.QuotaUsageType.STATIC,opts:{valueFn:ga.users.getUserCount}}];t>0&&r.push({change:t,name:$e.StaticQuotaName.CREATORS,type:$e.QuotaUsageType.STATIC,opts:{valueFn:ga.users.getCreatorCount}}),await ma(r),await $t()};var In=require("@budibase/types"),Sn=async e=>Ut({change:e,name:In.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:In.QuotaUsageType.MONTHLY});var at={};w(at,{addAppBuilder:()=>Bx,db:()=>Ve,removeAppBuilder:()=>Mx});var ya=require("@budibase/backend-core");var j={};w(j,{addAppBuilder:()=>Es,addUsers:()=>ws,adjustGroupCreatorsQuotas:()=>Nx,cleanupApp:()=>Dx,enrichUserRolesFromGroups:()=>qx,fetch:()=>ha,get:()=>qt,getBulk:()=>Cf,getGroupBuilderAppIds:()=>xf,getGroupRoleId:()=>Ux,remove:()=>Ss,removeAppBuilder:()=>Rs,removeUsers:()=>Ts,save:()=>dr,updateGroupApps:()=>vs});var x=require("@budibase/backend-core");var Tf=require("@budibase/backend-core"),wn=class extends Tf.HTTPError{constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function Rf(e,t){try{let r=[];for(let i of e)if(i.roles){let p=i.roles[x.db.getProdAppID(t)];p&&r.push(p)}let a=await Promise.all(r.map(async i=>({[i]:await x.roles.roleToNumber(i)}))),n,o,s={};a.forEach(i=>{let[p,m]=Object.entries(i)[0];s[p]={roleId:p,roleNum:m}});for(let{roleId:i,roleNum:p}of Object.values(s))(o===void 0||p>o)&&(o=p,n=i);return n}catch(r){throw x.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}async function _f(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await M.getBulk(e,{enriched:!1}),t}async function xf(e,t){if(!e.userGroups)return[];let r=await _f(e.userGroups,t?.groups),a=t?.appId?x.db.getProdAppID(t?.appId):null,n=[];for(let o of r){let s=o.builder?.apps;a&&s?.includes(a)?n.push(a):a||(n=n.concat(s||[]))}return[...new Set(n)]}async function Ux(e,t,r){if(!e.userGroups)return null;let a=await _f(e.userGroups,r?.groups),n=x.db.getProdAppID(t);return e.roles?.[n]?e.roles[n]:(a=a.filter(o=>o?.roles?Object.keys(o.roles).includes(n):!1),await Rf(a,t))}async function qx(e){if(!e||!e.userGroups)return e;let t=await Cf(e.userGroups,{enriched:!1}),r=[];for(let n of t)n?.roles&&(r=r.concat(Object.keys(n.roles)));r=[...new Set(r)];for(let n of r)await x.context.doInAppContext(n,async()=>{if(e.roles[n])return;let o=await Rf(t,n);o&&(e.roles[n]=o)});let a=await xf(e,{groups:t});if(a.length&&!e.builder?.global){let n=e.builder?.apps||[];e.builder={apps:n.concat(a)}}return e}async function ha(){return await M.fetch()}async function qt(e){return await M.get(e)}async function Cf(e,t={enriched:!0}){return await M.getBulk(e,t)}async function vf(e){if(await M.getByName(e))throw new wn(e)}async function Ef(e){let t=await M.getGroupUsers(e._id);if(!t.length)return 0;let a=await x.tenancy.getGlobalDB().getMultiple(t.map(o=>o._id));return(await x.userUtils.creatorsInList(a)).filter(o=>o).length}async function dr(e){let t=[],r=!e._id,a=0;if(delete e.users,!e._id)e._id=M.generateUserGroupID(),await vf(e.name),t.push(x.events.group.created(e));else{let o=await M.get(e._id);if(o.name!==e.name&&await vf(e.name),t.push(x.events.group.updated(e)),JSON.stringify(o.roles)!==JSON.stringify(e.roles)){let s=o.users?.length||0,i=0;s>0&&(i=await Ef(o)),Object.values(e.roles).includes("CREATOR")?a=s-i:a=-s,t.push(x.events.group.permissionsEdited(e))}}await Promise.all(t);let n=()=>M.save(e);if(r)return await hs(n);{let o=await n();if(a>0)await bn(0,a);else if(a<0){let s=await Ef(e),i=Math.abs(a)-s;i>0&&await lr(0,i)}return o}}async function Ss(e,t){let r;try{r=await M.get(e)}catch{throw new Error("Group not found")}let a=Object.values(r.roles||{}).includes("CREATOR"),n=()=>{};if(a){let s=x.tenancy.getGlobalDB(),i=await M.getGroupUsers(e),m=(await Promise.all(i.map(S=>s.get(S._id)))).map(S=>({...S,userGroups:S.userGroups.filter(O=>O!==e)})),h=(await x.userUtils.creatorsInList(m)).filter(S=>S).length,g=i.length-h;g&&(n=()=>lr(0,g))}let o=await M.destroy(e,t);return await x.events.group.deleted(r),await ys(),await n(),o}async function ws(e,t){let r=await M.get(e),a=await x.users.bulkGetGlobalUsersById(t),n=[];for(let p of a)p.userGroups||(p.userGroups=[]),p.userGroups.includes(e)||n.push(p);if(!n.length)return n;let o=n.map(p=>({...p,userGroups:[...p?.userGroups||[],e]}));if(await x.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes("CREATOR")){let m=(await x.userUtils.creatorsInList(n)).filter(h=>h).length,f=n.length-m;f&&await bn(0,f)}let i=[];for(let p of t)i.push(x.cache.user.invalidateUser(p));return await Promise.all(i),await x.events.group.usersAdded(o.length,r),o}async function Ts(e,t){let r=await M.get(e),a=await x.users.bulkGetGlobalUsersById(t),n=[];for(let i of a){if(!i.userGroups||!i.userGroups.includes(e))continue;let p=i.userGroups.indexOf(e);i.userGroups.splice(p,1),n.push(i)}if(await x.users.bulkUpdateGlobalUsers(n),Object.values(r.roles||{}).includes("CREATOR")){let p=(await x.userUtils.creatorsInList(n)).filter(f=>f).length,m=n.length-p;m&&await lr(0,m)}let s=[];for(let i of t)s.push(x.cache.user.invalidateUser(i));return await Promise.all(s),n.length&&await x.events.group.usersDeleted(n.length,r),n}async function vs(e,t){let r=await qt(e);if(r.roles||(r.roles={}),t.appsToAdd)for(let a of t.appsToAdd)r.roles[a.appId]=a.roleId;if(t.appsToRemove)for(let a of t.appsToRemove)delete r.roles[a.appId];return await dr(r)}async function Dx(e){let t=await ha(),r=[];for(let a of t)!a.roles||!a.roles[e]||(delete a.roles[e],r.push(a));return await M.bulkSave(r)}async function Es(e,t){if(!await Pt())throw new Error("Feature not enabled, please check license");let r=x.db.getProdAppID(t),a=await qt(e);a.builder??={apps:[]},a.builder.apps.includes(t)||(a.builder.apps.push(r),await dr(a))}async function Rs(e,t){if(!await Pt())throw new Error("Feature not enabled, please check license");let r=x.db.getProdAppID(t),a=await qt(e);a.builder?.apps.includes(t)&&(a.builder.apps=a.builder.apps.filter(n=>n!==r),await dr(a))}async function Nx(){if(!await ls()){let e=x.tenancy.getGlobalDB(),r=(await ha()||[]).filter(a=>Object.values(a?.roles||{}).includes("CREATOR"));for(let a of r){let n=await M.getGroupUsers(a._id),s=(await Promise.all(n.map(f=>e.get(f._id)))).map(f=>({...f,userGroups:f.userGroups.filter(h=>h!==a._id)})),p=(await x.userUtils.creatorsInList(s)).filter(f=>f).length,m=n.length-p;await M.save({...a,roles:{}}),m&&await lr(0,m)}}}ya.users.UserDB.init(Ke,j,qe);var Ve=ya.users.UserDB;async function Bx(e,t){if(!await Pt())throw new Error("Feature not enabled, please check license");await ya.users.addAppBuilder(e,t)}async function Mx(e,t){if(!await Pt())throw new Error("Feature not enabled, please check license");await ya.users.removeAppBuilder(e,t)}var En={};w(En,{logs:()=>Us});var Us={};w(Us,{logSearch:()=>Vx,oldestLogDate:()=>Nf,storeLog:()=>Yx});var Df=require("@budibase/types"),vn=require("@budibase/backend-core");var Tn=require("@budibase/types");var Z=require("@budibase/backend-core");var Of=require("@budibase/backend-core");async function Lf(e,t){let r,a=5,n=!1,o,s=!0;for(;a>0;a--)try{s?o=await e():o=await exports.randomDelay(e),n=!0;break}catch(i){r=i}return n||Of.logging.logWarn(`Failed to backoff: ${t}`,r),o}var{SEPARATOR:nt,UNICODE_MAX:Gx,DocumentType:Pf,AutomationViewMode:_s,ViewName:kx,getQueryIndex:Fx}=Z.db,Qx=new Date(0).toISOString(),jx=100,xs=async()=>ja(Tn.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS);function Uf(e,t,{status:r,automationId:a}={},n={}){let o=a?`${a}${nt}`:"",s=r?`${r}${nt}`:"",i;return r&&a?i=`${_s.ALL}${nt}${s}${o}`:r?i=`${_s.STATUS}${nt}${s}`:a?i=`${_s.AUTOMATION}${nt}${o}`:i=`${Pf.AUTOMATION_LOG}${nt}`,{...n,descending:!0,startkey:`${i}${t}${Gx}`,endkey:`${i}${e}`}}function Wx(e,t,r){return`${Pf.AUTOMATION_LOG}${nt}${e}${nt}${r}${nt}${t}`}async function Cs(e,t,r={docs:!0}){let a=Z.context.getProdAppDB();await a.exists()||(a=Z.context.getDevAppDB());let n={status:r.status},o=r?.limit?r.limit:r?.paginate?9+1:void 0,s=Uf(e,t,n,{include_docs:r.docs,limit:o});r?.page&&(s.startkey=r.page);let i=await a.allDocs(s);return Cr(i,{paginate:r?.paginate,pageSize:9})}async function Os(e,t,r={}){let a=Z.context.getProdAppDB();await a.exists()||(a=Z.context.getDevAppDB());let n;try{let o={automationId:r?.automationId,status:r?.status},s=Uf(e,t,o,{include_docs:!0,limit:9+1});r?.page&&(s.startkey=r.page),n=await a.query(Fx(kx.AUTOMATION_LOGS),s)}catch(o){if(o!=null&&(o.name==="not_found"||o.error==="not_found"))return await ap(),Os(e,t,r);throw o}return Cr(n,{paginate:!0,pageSize:9})}async function qf(e,t){let r=Z.context.getProdAppDB(),a=e._id,n=e.name,o=new Date().toISOString(),s=Wx(o,t.status,a),i={...t,automationId:a,status:t.status,automationName:n,createdAt:o,_id:s};return await r.put(i),s}async function Ls(e,{clearing:t}={clearing:!1}){let r=Z.context.getProdAppDB();await Lf(async()=>{let a=await r.get(Z.db.DocumentType.APP_METADATA);for(let n of e){let o=n.split(Z.db.SEPARATOR),s=`${o[o.length-3]}${Z.db.SEPARATOR}${o[o.length-2]}`,i={};a.automationErrors&&(i=a.automationErrors),Array.isArray(i[s])||(i[s]=[]);let p=i[s].indexOf(n);t&&p!==-1?i[s].splice(p,1):i[s].push(n),i[s].length===0&&delete i[s],a.automationErrors=i}await r.put(a),await Z.cache.app.invalidateAppMetadata(a.appId,a)},"Failed to update app metadata with automation log error")}async function $x(){let e=await xs();try{return await Cs(Qx,e,{docs:!1,paginate:!1,limit:jx})}catch{return{data:[],hasNextPage:!1}}}async function Ps(){let e=Z.context.getProdAppDB();try{let t=await $x();if(!t.data||t.data.length===0)return;let r=t.data.map(n=>({_id:n.id,_rev:n.value.rev,_deleted:!0})),a=t.data.filter(n=>{let o=n.id.split(Z.db.SEPARATOR);return o[o.length-1]===Tn.AutomationStatus.ERROR}).map(n=>n.id);await e.bulkDocs(r),a.length&&await Ls(a,{clearing:!0})}catch(t){Z.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}var Nf=xs;async function Kx(e,t,r,a){let n,o=new Date().toISOString(),s=await Nf();return(!e||e<s)&&(e=s),r||t?n=await Os(e,o,{automationId:r,status:t,page:a}):n=await Cs(e,o,{status:t,page:a,docs:!0,paginate:!0}),n}async function Vx(e){return await Ps(),await Kx(e.startDate,e.status,e.automationId,e.page)}async function Yx(e,t){if(!vn.db.isProdAppID(vn.context.getAppId()))return;let r=await qf(e,t);t.status===Df.AutomationStatus.ERROR&&await Ls([r]),await Ps()}var Rn={};w(Rn,{checkPluginQuotas:()=>Jx,deletePlugin:()=>zx,storePlugin:()=>Hx});var kf=require("@budibase/types"),z=require("@budibase/backend-core");var Bf=P(require("fs")),Mf=require("path");function Gf(e,t){return Bf.default.readFileSync((0,Mf.join)(e,t),"utf8")}async function Hx(metadata,directory,source){let db=z.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=z.objectStore.getPluginS3Dir(name),files=await z.objectStore.uploadDirectory(z.objectStore.ObjectStoreBuckets.PLUGINS,directory,bucketPath),jsFile=files.find(e=>e.name.endsWith(".js")),iconFile=files.find(e=>e.name.endsWith(".svg"));if(!jsFile)throw new Error("Plugin missing .js file.");if(metadata.schema.type===kf.PluginType.DATASOURCE){let js=Gf(directory,jsFile.name);try{eval(js)}catch(e){let t=e?.message?e.message:JSON.stringify(e);throw new Error(`JS invalid: ${t}`)}}let iconFileName=iconFile?iconFile.name:null,pluginId=z.db.generatePluginID(name),rev;try{rev=(await db.get(pluginId))._rev}catch(e){rev=void 0}let doc={_id:pluginId,_rev:rev,...metadata,name,version,hash,description,source};iconFileName&&(doc.iconFileName=iconFileName),source&&(doc={...doc,source});let write=async()=>{let e=await db.put(doc);return await z.events.plugin.imported(doc),{...doc,_rev:e.rev}};return rev?await write():await As(write)}async function zx(e){let t=z.tenancy.getGlobalDB();try{let r=await t.get(e),a=z.objectStore.getPluginS3Dir(r.name);await z.objectStore.deleteFolder(z.objectStore.ObjectStoreBuckets.PLUGINS,a),await t.remove(e,r._rev),await z.events.plugin.deleted(r),await bs()}catch(r){let a=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${a}`)}}async function Jx(){let e=z.tenancy.getGlobalDB();try{let r=(await e.allDocs(z.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await Is(r)}catch(t){z.logging.logAlert("Unable to retrieve plugins for quota check",t)}}var Ye={};w(Ye,{fetch:()=>Zx,fetchValues:()=>eC,isEncryptionKeyAvailable:()=>Xx,isValid:()=>jf,remove:()=>rC,update:()=>tC});var Aa=require("@budibase/types"),Ff=require("@budibase/backend-core");function Xx(){return!!Ff.env.ENCRYPTION_KEY}async function Zx(){let e=await _t.get();return Object.keys(e.variables)}async function eC(e){let r=(await _t.get()).variables,a={};for(let[n,o]of Object.entries(r))switch(e){case Aa.AppEnvironment.DEVELOPMENT:a[n]=o.development;break;case Aa.AppEnvironment.PRODUCTION:default:a[n]=o.production;break}return a}async function Qf(e){if(!(await je.cache.getCachedLicense()).features.includes(Aa.Feature.ENVIRONMENT_VARIABLES))throw new Error("User does not have access to environment variables feature.");let r=await _t.get();r.variables=e(r.variables),await _t.update(r)}async function tC(e,t){if(jf(e))await Qf(a=>(a[e]=t,a));else throw new Error("Variable name has characters that are not allowed")}async function rC(e){await Qf(t=>(delete t[e],t))}function jf(e){return/^[a-zA-Z0-9-_]+$/.test(e)}var At={};w(At,{definitions:()=>fC,download:()=>dC,fetch:()=>lC,write:()=>pC});var xn=require("@budibase/types");var K=require("@budibase/backend-core"),Ne=require("@budibase/types");var Wf=require("memorystream"),$f=new K.sql.Sql(Ne.SqlClient.SQL_LITE);async function aC(e,t,r){let a={operation:Ne.Operation.READ,table:Wt.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:Ne.SortOrder.DESCENDING,type:Ne.SortType.STRING}}},n=$f._query(a);if(Array.isArray(n))throw new Error("Cannot execute multiple queries for audit log search");return{sql:n.sql,bindings:n.bindings}}function nC(e){return`${K.DocumentType.AUDIT_LOG}${K.SEPARATOR}${e}${K.SEPARATOR}${K.utils.newid()}`}async function Kf(e){e._id||(e._id=nC(e.timestamp)),e.type||(e.type=Ne.AUDIT_LOG_TYPE);try{let r=await K.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){K.logging.logAlert("Failed to write audit log",t)}}async function qs(e,t,r){t||(t=1);let a=K.context.getAuditLogsDB();try{let n=9+1,o=await aC(e,t,n),s=Wt.searchTable(),i=$f.convertJsonStringColumns(s,await a.sql(o.sql,o.bindings)),p;i.length>n&&(p=i.pop());let m={rows:i,hasNextPage:!!p};return m.hasNextPage&&(m.bookmark=t+1),m}catch(n){if(n.status===404&&!r?.isRetry)return await oC(),await Vu(),await qs(e,t,{isRetry:!0});throw n}}async function oC(){let e=K.context.getAuditLogsDB(),r=(await e.allDocs(K.db.getDocParams(K.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(a=>a.doc).filter(a=>a&&!a.type).map(a=>({...a,type:Ne.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}function Vf(e){let t=K.context.getAuditLogsDB(),r=new Wf,a=t.dump(r,{filter:o=>{let s=o;if(!s._id?.startsWith(K.DocumentType.AUDIT_LOG))return!1;let i=!0,p=(m,f)=>{!m||m.length===0||(i=!!(i&&f&&m.includes(f)))};if(p(e.userIds,s.userId),p(e.appIds,s.appId),p(e.events,s.event),(e.startDate||e.endDate)&&(i=i&&s.timestamp>=e.startDate&&s.timestamp<=e.endDate),e.fullSearch){let m=JSON.stringify(o);i=i&&m.includes(e.fullSearch)}return i}}),n=new Wf;return r.on("data",o=>{let s=JSON.parse(Buffer.from(o).toString());if(Array.isArray(s.docs)){let i="";for(let p of s.docs)i+=JSON.stringify(p)+`
|
|
38
|
-
`;n.write(i)}}),r.on("end",()=>{n.end()}),{promise:a,stream:n}}var le=require("@budibase/backend-core");var _n=require("@budibase/types"),ba=require("@budibase/string-templates"),Ia=require("@budibase/backend-core"),iC=Ia.constants.MIN_VALID_DATE.toISOString(),uC=Ia.constants.MAX_VALID_DATE.toISOString();function Ds(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||iC,e.endDate=e.endDate||uC),e}async function Yf(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(a=>Ia.db.getProdAppID(a)));let t={};function r(a,n){n?.length&&(t.oneOf={...t.oneOf,[a]:n})}return r("userId",e.userIds),r("appId",e.appIds),r("event",e.events),e.fullSearch&&(t.fuzzyOr=!0,t.fuzzy={name:e.fullSearch,fallback:e.fullSearch}),(e.startDate||e.endDate)&&(e=Ds(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}function Ns(e,t,r){let a={_id:e,status:_n.AuditLogResourceStatus.DELETED};switch(t){case"app":a.name=r?.appName;break;case"user":a.email=r?.email;break}return a}function Bs(e){let t=(0,ba.findHBSBlocks)(e);for(let r of t){let a=` "${r}"`;e=e.replace(e.includes(a)?a:` ${r}`,""),e=(0,ba.processStringSync)(e,{})}return e}function Hf(e,t){let r=_n.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let a=(0,ba.processStringSync)(r,t);return a.includes('""')&&(a=Bs(r)),a}async function pC(e,t,r){if(!await gn()||!le.utils.isAudited(e))return;let a=Hf(e,t),n=new Date;r?.timestamp&&(n=new Date(r.timestamp));let o={timestamp:n.toISOString(),event:e,name:a,userId:r?.userId||xn.AuditLogSystemUser,metadata:{...t,...r?.hostInfo}},s={};try{if(r?.appId){o.appId=le.db.getProdAppID(r.appId);let i=await le.cache.app.getAppMetadata(r.appId);"name"in i&&(s.appName=i.name)}if(r?.userId){let i=await le.users.getById(r?.userId);s.email=i.email}}catch(i){le.logging.logAlert("Failed to retrieve fallback information for audit log",i)}return o.fallback=s,await Kf(o)}async function cC(e){let t=e.map(i=>i.userId),a=e.filter(i=>i.appId).map(i=>le.db.getDevAppID(i.appId)),n=await le.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),o=await le.db.getAppsByIDs([...new Set(a)]),s=[];for(let i of e){let p=n.find(h=>h?._id===i.userId),m=o.find(h=>le.db.isSameAppID(h?.appId,i.appId)),f={event:i.event,timestamp:i.timestamp,name:i.name,metadata:i.metadata,user:p||Ns(i.userId,"user",i.fallback)};i.appId&&(f.app=m||Ns(i.appId,"app",i.fallback)),s.push(f)}return s}async function lC(e){if(!await gn())throw new Error("Audit logs not available - license required.");let t=await Yf(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await qs(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await cC(r.rows)}}function dC(e){return e=Ds(e),Vf(e)}function fC(){let e=Object.entries(xn.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=Bs(r[1]);return t}var Cn={};w(Cn,{applications:()=>Fs,roles:()=>Gs,users:()=>Ms});var Ms={};w(Ms,{roleCheck:()=>gC});function mC(e,t){let r=e.request.body;return r.builder&&(r.builder=t?.builder||void 0),r.admin&&(r.admin=t?.admin||void 0),r.roles&&(r.roles=t?.roles||{}),e.request.body=r,e}async function gC(e,t){return await tt()||mC(e,t),e}var Gs={};w(Gs,{assign:()=>hC,unAssign:()=>yC});var Sa=require("@budibase/backend-core");async function hC(e,t){if(!await tt())throw new Error("Unable to assign roles - license required.");let r=await Ve.bulkGet(e);for(let a of r){if(t.role&&t.role.roleId){let n=Sa.db.getProdAppID(t.role.appId);a.roles[n]=t.role.roleId}if(t.appBuilder){let n=Sa.db.getProdAppID(t.appBuilder.appId),o=a.builder?.apps||[];a.builder={apps:o.concat([n])}}t.builder&&(a.builder={global:!0}),t.admin&&(a.admin={global:!0}),a.roles}await Ve.bulkUpdate(r)}async function yC(e,t){if(!await tt())throw new Error("Unable to un-assign roles - license required.");let r=await Ve.bulkGet(e);for(let a of r){if(t.role){let n=Sa.db.getProdAppID(t.role?.appId);a.roles[n]===t.role.roleId&&delete a.roles[n]}if(t.appBuilder&&a.builder?.apps){let n=Sa.db.getProdAppID(t.appBuilder.appId);a.builder.apps=a.builder.apps.filter(o=>o!==n)}t.builder&&a.builder&&delete a.builder,t.admin&&a.admin&&delete a.admin}}var Fs={};w(Fs,{buildExportFn:()=>bC,buildImportFn:()=>AC});var ks=require("@budibase/backend-core");function AC(e){return async(t,r)=>{await tt()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await ks.context.doInAppContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}function bC(e){return async(t,r)=>{await tt()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:a,excludeRows:n}=t.request.body;await ks.context.doInAppContext(t.params.appId,async()=>{t.request.body={encryptPassword:a,excludeRows:n},t.query.appId=t.params.appId,await e(t),await r()})}}var He=require("@budibase/backend-core"),ue=require("@budibase/types");var Qs=require("@budibase/backend-core"),zf;function Jf(){zf=new Qs.queue.BudibaseQueue(Qs.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}function Dt(){return zf}var Xf=require("path"),Zf=P(require("fs"));async function Ws(e,t={}){return ve.storeAppBackupMetadata(e,t)}function em(e){let t=new Date().toISOString();switch(e){case ue.AppBackupStatus.COMPLETE:case ue.AppBackupStatus.FAILED:return{timestamp:t,finishedAt:t};case ue.AppBackupStatus.STARTED:return{timestamp:t,startedAt:t};case ue.AppBackupStatus.PENDING:return{timestamp:t,createdAt:t}}}async function IC(e,t,r,a){let n=await On(e);return await ve.storeAppBackupMetadata({...n,...em(t),contents:r,status:t,type:ue.AppBackupType.BACKUP},{filename:a,docId:e})}async function SC(e,t,r){let a=await On(e);return await ve.storeAppBackupMetadata({...a,...em(r),status:r,type:ue.AppBackupType.RESTORE,trigger:ue.AppBackupTrigger.MANUAL},{docId:e,docRev:t})}async function On(e){return ve.getAppBackupMetadata(e)}async function wC(e,t){return ve.updateAppBackupMetadata(e,t)}async function TC(e){let t=await ve.getAppBackupMetadata(e);return t.filename&&await He.objectStore.deleteFile(He.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),ve.deleteAppBackupMetadata(e)}async function vC(e,t){return ve.fetchAppBackups(e,t)}async function tm(e){let t=await ve.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let r=await He.objectStore.getReadStream(He.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}async function EC(e){let{stream:t}=await tm(e),r=(0,Xf.join)(He.objectStore.budibaseTempDir(),He.utils.newid()),a=Zf.default.createWriteStream(r);return new Promise((n,o)=>{t.on("error",o),a.on("error",o),t.pipe(a).on("close",()=>n(r))})}async function RC(e,t,r={}){let a;try{a=await Ws({appId:e,trigger:t,timestamp:new Date().toISOString(),status:ue.AppBackupStatus.PENDING,type:ue.AppBackupType.BACKUP,...r})}catch(n){if(n.status===409)return;throw n}return await Dt().add({docId:a.id,docRev:a.rev,appId:e,export:{trigger:t,...r}}),await He.events.backup.appBackupTriggered(e,a.id,ue.AppBackupType.BACKUP,t,r?.name),a.id}async function _C(e,t,r,a){let n=await On(t),o;try{o=await Ws({appId:e,timestamp:new Date().toISOString(),status:ue.AppBackupStatus.PENDING,type:ue.AppBackupType.RESTORE,createdBy:a})}catch(s){if(s?.status===409)return;throw s}return await Dt().add({appId:e,docId:o.id,docRev:o.rev,import:{nameForBackup:r,backupId:t,createdBy:a}}),{restoreId:o.id,metadata:n}}var xC={isEnabled:ps,triggerAppRestore:ye(_C),triggerAppBackup:ye(RC),getBackupDownloadStream:ye(tm),downloadAppBackup:ye(EC),fetchAppBackups:ye(vC),storeAppBackupMetadata:ye(Ws),updateBackupStatus:ye(IC),updateRestoreStatus:ye(SC),getAppBackup:ye(On),updateAppBackup:ye(wC),deleteAppBackup:ye(TC)},ot=xC;var Ks={};w(Ks,{init:()=>$s});var J=require("@budibase/backend-core");var Be=require("@budibase/types");var fr=P(require("fs"));async function $s(e){Dt().process(async t=>{let r=t.data;try{if(r.export)return LC(t,e);if(r.import)return OC(t,e)}catch(a){J.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,a)}})}async function CC(e){await J.db.getDB(e,{skip_setup:!0}).destroy()}async function rm(e,t,r,a){let n=J.db.getDevAppID(r),o=J.db.getProdAppID(r),s=new Date().toISOString(),i=async(p,m)=>{a?.doc?await ot.updateBackupStatus(a.doc.id,p,m?.contents,m?.filename):await ot.storeAppBackupMetadata({appId:o,timestamp:s,trigger:e,status:p,name:a?.name,type:Be.AppBackupType.BACKUP,contents:m?.contents,createdBy:a?.createdBy},{filename:m?.filename})};try{let p=await a.processing.exportAppFn(n,{tar:!0}),m=await a.processing.statsFn(n),f=`${o}/backup-${s}.tar.gz`,h=J.objectStore.ObjectStoreBuckets.BACKUPS,g=fr.default.createReadStream(p);await J.objectStore.streamUpload({bucket:h,filename:f,stream:g,extra:{type:"application/gzip",metadata:{name:a?.name,trigger:e,timestamp:s,appId:o}}}),await i(Be.AppBackupStatus.COMPLETE,{filename:f,contents:m}),fr.default.existsSync(p)&&fr.default.rmSync(p)}catch(p){J.logging.logAlert("App backup error",p),await i(Be.AppBackupStatus.FAILED)}}async function OC(e,t){let r=e.data,a=r.appId,n=r.import.backupId,o=r.import.nameForBackup,s=r.import.createdBy,i=J.tenancy.getTenantIDFromAppID(a);return J.tenancy.doInTenant(i,async()=>{let p=J.db.getDevAppID(a),{rev:m}=await ot.updateRestoreStatus(r.docId,r.docRev,Be.AppBackupStatus.STARTED);await rm(Be.AppBackupTrigger.RESTORING,i,a,{processing:t,createdBy:s,name:o});let f=await ot.downloadAppBackup(n);await CC(p);let h=Be.AppBackupStatus.COMPLETE;try{await t.importAppFn(p,J.db.getDB(p),{file:{type:"application/gzip",path:f},key:f})}catch(g){J.logging.logAlert("App restore error",g),h=Be.AppBackupStatus.FAILED}await ot.updateRestoreStatus(r.docId,m,h),fr.default.existsSync(f)&&fr.default.rmSync(f,{force:!0})})}async function LC(e,t){let r=e.data,a=r.appId,n=r.export.trigger,o=r.export.name,s=J.tenancy.getTenantIDFromAppID(a);await J.tenancy.doInTenant(s,async()=>{try{let{rev:i}=await ot.updateBackupStatus(r.docId,Be.AppBackupStatus.STARTED);return rm(n,s,a,{processing:t,doc:{id:r.docId,rev:i},name:o})}catch(i){J.logging.logAlert("App backup error",i)}})}var PC=async e=>{Jf(),await $s(e.processing)},Re={...ot,processing:Ks,init:PC,getBackupQueue:Dt};var am=async e=>{e.backups&&await Re.init(e.backups)};var fe={};w(fe,{create:()=>EM,find:()=>vM,get:()=>TM,remove:()=>_M,update:()=>RM});var EA=P(ki()),st=require("@budibase/backend-core");var RA=require("@budibase/types");async function TM(e){let t=st.tenancy.getGlobalDB(),r=new st.db.QueryBuilder(t.name,RA.SearchIndex.USER);r.setIndexBuilder(st.db.searchIndexes.createUserIndex),r.setLimit(e.pageSize),r.addEqual("scimInfo.isSync",!0);for(let[n,o]of Object.entries(e.filters?.equal??{}))r.addEqual(n,o);r.setSort("_id"),r.setSkip(e.skip);let a=await r.run();return{users:a.rows,total:a.totalRows}}async function vM(e){return await st.users.getById(e)}async function EM(e){let t=await Ve.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new st.HTTPError("User is already synched",409);e={...t,scimInfo:(0,EA.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await Ve.save(e,{requirePassword:!1})}async function RM(e,t){return await Ve.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}async function _M(e){return await Ve.destroy(e)}var br={};w(br,{create:()=>xM});var _A=P(ki());var xA=require("@budibase/backend-core");async function xM(e){let t=await go(e.name),r;if(!t)r=(await j.save(e)).id;else{if(t.scimInfo?.isSync)throw new xA.HTTPError("Group is already synched",409);r=t._id,t.users&&(await j.removeUsers(r,t.users.map(n=>n._id)),delete t.users),t.scimInfo=(0,_A.default)(t.scimInfo,e.scimInfo),await j.save(t)}return await j.get(r)}var Bt={};w(Bt,{logRequest:()=>CM,logResponse:()=>OM});var Fi=require("@budibase/backend-core");async function CM(e){Fi.logging.logWarn("SCIM request log",e)}async function OM(e){Fi.logging.logWarn("SCIM response error",e)}var Vi={};w(Vi,{doInScimContext:()=>ji,feature:()=>W,internalGroupOnly:()=>$n,licenseAuth:()=>LA,licensing:()=>CA,requireSCIM:()=>Wi,scimGroupOnly:()=>Ea,scimUserOnly:()=>va});var bt=require("@budibase/backend-core");var jn=require("@budibase/types"),LM=(e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(bt.env.SELF_HOSTED&&bt.env.DEFAULT_LICENSE)return t.user.license=yo,r();t.user.license=await je.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(bt.utils.isServingApp(t)||bt.utils.isServingBuilder(t)||bt.utils.isServingBuilderPreview(t)||bt.utils.isPublicApiRequest(t))&&await Ke.usageLimitIsExceeded(jn.StaticQuotaName.USERS,jn.QuotaUsageType.STATIC)}return r()},CA=LM;var W={};w(W,{requireFeature:()=>PM,requireFeatures:()=>UM});var PM=e=>async(t,r)=>{await mn(e),await r()},UM=(...e)=>async(t,r)=>{await us(e),await r()};var Wn=require("@budibase/backend-core");var ji=async(e,t)=>(Wn.env.DISABLE_SCIM_CALLS||await Bt.logRequest({...e.request.toJSON(),body:e.request.body}),await Wn.context.doInScimContext(async()=>{let r=await t();return await Bt.logResponse({...e.response.toJSON(),body:e.response.body}),r}));var Wi=async(e,t)=>{await ds(),await t()};var OA=require("@budibase/backend-core");var va=e=>$i(OA.users.getById,e,!0),Ea=e=>$i(M.get,e,!0),$n=e=>$i(M.get,e,!1);function $i(e,t,r){return async(a,n)=>{let o=a.params[t];return typeof o!="string"&&a.throw(404),!!(await e(o)).scimInfo?.isSync!==r&&a.throw(404),n()}}var Ra=require("@budibase/backend-core");var Ki=require("dd-trace");async function LA(e,t){await Ki.tracer.trace("licenseAuth",async r=>{let a=e.request.headers[Ra.constants.Header.LICENSE_KEY];Array.isArray(a)&&(a=a[0]),r.addTags({licenseKey:a}),a||e.throw(403,"License key not provided");let n=await ns(a);n||(r.addTags({licenseFound:!1}),e.throw(403,"License not found or invalid")),n.tenantId||e.throw(403,"License does not have a tenant ID"),Ki.tracer.setUser({id:"anonymous",tenantId:n.tenantId}),await Ra.context.doInSelfHostTenantUsingCloud(n.tenantId,async()=>{await Ra.context.doInLicenseContext(n,async()=>{await t()})})})}var ru={};w(ru,{appBackups:()=>yb,auditLogs:()=>sb,environmentVariables:()=>XA,groups:()=>jA,scim:()=>Vb,users:()=>Xb});async function PA(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let a=await qt(t._id);t.roles=a.roles,t.scimInfo=a.scimInfo}let r=await dr(t);e.body={_id:r.id,_rev:r.rev}}async function UA(e){let t=e.params.groupId,r=e.request.body.add,a=e.request.body.remove;(r&&!Array.isArray(r)||a&&!Array.isArray(a))&&e.throw(400,"Must supply a list of users to add or to remove");let n,o;r&&(n=await ws(t,r)),a&&(o=await Ts(t,a)),e.body={added:n,removed:o}}async function qA(e){let t=e.params.groupId,r=e.request.body.add,a=e.request.body.remove;(r&&!Array.isArray(r)||a&&!Array.isArray(a))&&e.throw(400,"Must supply a list of objects, with appId and roleId to add or remove"),e.body=await vs(t,{appsToAdd:r,appsToRemove:a})}async function DA(e){e.body={data:await ha()}}async function NA(e){let{groupId:t,rev:r}=e.params;try{await Ss(t,r),e.body={message:"Group deleted successfully"}}catch(a){e.throw(a.status,a)}}async function BA(e){try{e.body=await qt(e.params.groupId)}catch(t){e.throw(t.status,t)}}async function MA(e){let{pageSize:t=10,bookmark:r,emailSearch:a}=e.request.query,n=e.params.groupId,o={limit:t+1},s=await Fa(n,{...o,emailSearch:a,bookmark:r}),i=a?s[t]?.email:s[t]?._id,p=!!i;e.body={users:s.slice(0,t),bookmark:i,hasNextPage:p}}async function GA(e){let{groupId:t,appId:r}=e.params;await Es(t,r),e.body={message:"Group app builder access updated."}}async function kA(e){let{groupId:t,appId:r}=e.params;await Rs(t,r),e.body={message:"group app builder access removed."}}var FA=P(require("@koa/router")),be=P(require("joi"));var _e=require("@budibase/types"),ze=require("@budibase/backend-core"),QA=new FA.default;function DM(){return ze.auth.joiValidator.body(be.default.object({_id:be.default.string().optional(),_rev:be.default.string().optional(),color:be.default.string().required(),icon:be.default.string().required(),name:be.default.string().trim().required().max(50),role:be.default.string().optional(),users:be.default.array().optional(),apps:be.default.array().optional(),roles:be.default.object().optional(),createdAt:be.default.string().optional(),updatedAt:be.default.string().optional()}).required())}QA.post("/api/global/groups",ze.auth.adminOnly,W.requireFeature(_e.Feature.USER_GROUPS),DM(),PA).get("/api/global/groups",W.requireFeature(_e.Feature.USER_GROUPS),DA).delete("/api/global/groups/:groupId/:rev",W.requireFeature(_e.Feature.USER_GROUPS),ze.auth.adminOnly,$n("groupId"),NA).get("/api/global/groups/:groupId",W.requireFeature(_e.Feature.USER_GROUPS),ze.auth.builderOrAdmin,BA).get("/api/global/groups/:groupId/users",W.requireFeature(_e.Feature.USER_GROUPS),ze.auth.builderOrAdmin,MA).post("/api/global/groups/:groupId/users",ze.auth.adminOnly,W.requireFeature(_e.Feature.USER_GROUPS),$n("groupId"),UA).post("/api/global/groups/:groupId/apps",ze.auth.builderOrAdmin,W.requireFeature(_e.Feature.USER_GROUPS),qA).post("/api/global/groups/:groupId/app/:appId/builder",ze.auth.builderOrAdmin,W.requireFeatures(_e.Feature.USER_GROUPS,_e.Feature.APP_BUILDERS),GA).delete("/api/global/groups/:groupId/app/:appId/builder",ze.auth.builderOrAdmin,W.requireFeatures(_e.Feature.USER_GROUPS,_e.Feature.APP_BUILDERS),kA);var jA=QA;var Yi=require("@budibase/types");var Hi=require("@budibase/backend-core");async function WA(e){e.body={encryptionKeyAvailable:Ye.isEncryptionKeyAvailable()}}async function $A(e){e.body={variables:await Ye.fetch()}}async function KA(e){let{name:t,production:r,development:a}=e.request.body;await Ye.update(t,{production:r,development:a});let n=[Yi.AppEnvironment.PRODUCTION];r!==a&&n.push(Yi.AppEnvironment.DEVELOPMENT),await Hi.events.environmentVariable.created(t,n),e.body={message:`Environment variable "${t}" created.`}}async function VA(e){let{production:t,development:r}=e.request.body,a=e.params.varName;await Ye.update(a,{production:t,development:r}),e.body={message:`Environment variable "${a}" updated.`}}async function YA(e){let t=e.params.varName;await Ye.remove(t),await Hi.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}var Mt=require("@budibase/backend-core"),zA=P(require("@koa/router")),_a=P(require("joi")),JA=new zA.default;function HA(){return Mt.auth.joiValidator.body(_a.default.object({name:_a.default.string().optional(),production:_a.default.string().required(),development:_a.default.string().required()}))}JA.get("/api/env/variables/status",Mt.auth.builderOrAdmin,WA).get("/api/env/variables",Mt.auth.builderOrAdmin,$A).post("/api/env/variables",Mt.auth.builderOrAdmin,HA(),KA).patch("/api/env/variables/:varName",Mt.auth.builderOrAdmin,HA(),VA).delete("/api/env/variables/:varName",Mt.auth.builderOrAdmin,YA);var XA=JA;var zi=require("@budibase/backend-core");async function ZA(e){let t=e.request.body,r=await At.fetch(t);await zi.events.auditLog.filtered(t),e.body=r}async function eb(e){let t=e.request.body,{stream:r}=At.download(t);await zi.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}async function tb(e){e.body={events:At.definitions()}}var ab=require("@budibase/types"),Gt=require("@budibase/backend-core"),nb=P(require("@koa/router")),xe=P(require("joi"));function rb(){return Gt.auth.joiValidator.body(xe.default.object({userIds:xe.default.array().items(xe.default.string()).optional(),appIds:xe.default.array().items(xe.default.string()).optional(),events:xe.default.array().items(xe.default.string().valid(...Object.values(ab.Event))).optional(),startDate:xe.default.string().optional().allow(""),endDate:xe.default.string().optional().allow(""),fullSearch:xe.default.string().optional().allow(""),bookmark:xe.default.number()}))}var ob=new nb.default;ob.post("/api/global/auditlogs/search",Gt.auth.adminOnly,rb(),ZA).get("/api/global/auditlogs/download",Gt.auth.adminOnly,Gt.middleware.querystringToBody,rb(),eb).get("/api/global/auditlogs/definitions",Gt.auth.adminOnly,tb);var sb=ob;var Ji=require("@budibase/types");var ib=require("@budibase/backend-core");async function Ir(e,t){await Vt.appExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}async function ub(e){let t=e.params.appId;await Ir(e,t);let r=e.request.body,a=e.user?._id,n=await Re.triggerAppBackup(t,Ji.AppBackupTrigger.MANUAL,{name:r.name,createdBy:a});n||e.throw(500,"Unable to start backup."),e.body={backupId:n,message:"Backup triggered - process starting."}}async function pb(e){let t=e.params.appId;await Ir(e,t);let r=e.params.backupId,a=e.request.body.name,n=await Re.triggerAppRestore(t,r,a,e.user?._id);n||e.throw(500,"Unable to start restore."),await ib.events.backup.appBackupRestored(n.metadata),e.body={restoredId:n?.restoreId,message:"Restore triggered - process starting."}}async function cb(e){let t=e.params.appId;await Ir(e,t);let r=e.params.backupId;await Re.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}async function lb(e){let t=e.params.appId;await Ir(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(Ji.AppBackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await Re.fetchAppBackups(t,{paginate:!0,...r})}async function fb(e){let t=e.params.appId;await Ir(e,t);let r=e.params.backupId,a=e.request.body;e.body=await Re.updateAppBackup(r,a.name)}async function mb(e){let t=e.params.appId;await Ir(e,t);let r=e.params.backupId,{metadata:a,stream:n}=await Re.getBackupDownloadStream(r);e.attachment(`backup-${a.timestamp}.tar.gz`),e.body=n}var gb=P(require("@koa/router")),kt=P(require("joi")),Kn=require("@budibase/types"),It=require("@budibase/backend-core"),hb=new gb.default;function GM(){return It.auth.joiValidator.body(kt.default.object({trigger:kt.default.string().valid(...Object.values(Kn.AppBackupTrigger)),type:kt.default.string().valid(...Object.values(Kn.AppBackupType)),startDate:kt.default.date(),endDate:kt.default.date(),page:kt.default.string()}))}hb.post("/api/apps/:appId/backups",It.auth.builderOrAdmin,ub).post("/api/apps/:appId/backups/search",It.auth.builderOrAdmin,GM(),lb).get("/api/apps/:appId/backups/:backupId/file",It.auth.builderOrAdmin,mb).patch("/api/apps/:appId/backups/:backupId",It.auth.builderOrAdmin,fb).delete("/api/apps/:appId/backups/:backupId",It.auth.builderOrAdmin,cb).post("/api/apps/:appId/backups/:backupId/import",It.auth.builderOrAdmin,pb);var yb=hb;var Kb=P(require("@koa/router"));var Vn=require("scim-patch");var bb=require("@budibase/backend-core");function Ab(e,t){let r=e.request.query[t];if(r!==void 0)return+r}var Ib=async e=>{let t=Ab(e,"pageSize")??20,r=Ab(e,"startIndex"),a;e.request.query.filter&&(a=V.user.userFilters(e.request.query.filter));let n=await fe.get({pageSize:t,skip:r,filters:a});e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:n.total,Resources:n.users.map(V.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},Sb=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await fe.find(t);e.body=V.user.toScimUserResponse(r)},wb=async e=>{let t=V.user.fromScimUser(e.request.body);try{let r=await fe.create(t);e.body=V.user.toScimUserResponse(r)}catch(r){throw r instanceof bb.EmailUnavailableError&&e.throw(409,"Email already in use"),r}};function kM(e){let t=e.Operations.find(r=>(r.op==="Replace"||r.op==="replace")&&r.path==="active");return t?t.value===!1||t.value?.toLowerCase?.()==="false":!1}var Tb=async e=>{let t=await fe.find(e.params.id);t||e.throw(404);let r=V.user.toScimUserResponse(t),a=e.request.body;try{(0,Vn.patchBodyValidation)(a)}catch{}if(kM(a))return Xi(e);let n;try{n=(0,Vn.scimPatch)(r,a.Operations)}catch{}n||e.throw(500);let o=V.user.fromScimUser(n);await fe.update(o,{allowChangingEmail:!0}),e.body=V.user.toScimUserResponse(o)},Xi=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await fe.remove(t),e.status=204};var Mb=P(Bb()),Gb=require("@budibase/shared-core"),Yn=require("scim-patch");var Hn=require("scim2-parse-filter");function kb(e,t){for(let r of t.split(","))delete e[r]}var Fb=async e=>{let r=(await j.fetch()).filter(o=>o.scimInfo?.isSync).map(V.group.toScimGroupResponse),{filter:a,excludedAttributes:n}=e.request.query;if(a){let o=(0,Hn.filter)((0,Hn.parse)(a));r=r.filter(o)}n&&r.forEach(o=>{kb(o,n)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},Qb=async e=>{let t=V.group.fromScimGroup(e.request.body),r=await br.create(t);e.body=V.group.toScimGroupResponse(r)},jb=async e=>{let{id:t}=e.params,r=await j.get(t),a=V.group.toScimGroupResponse(r),{excludedAttributes:n}=e.request.query;n&&kb(a,n),e.body=a},Wb=async e=>{let{id:t}=e.params,r=await j.get(t);await j.remove(t,r._rev),e.status=204},$b=async e=>{let{id:t}=e.params,r=await j.get(t),a=V.group.toScimGroupResponse(r),n=e.request.body;try{(0,Yn.patchBodyValidation)(n)}catch{e.throw(400)}let{true:o,false:s}=(0,Mb.default)(n.Operations,i=>i.path==="members");if(s?.length){let i=(0,Yn.scimPatch)(a,s);i||e.throw(500);let p={...V.group.fromScimGroup(i),_rev:r._rev};await j.save(p)}if(o?.length){let i=[],p=[];for(let{op:m,value:f}of o)switch(m){case"add":case"Add":for(let h of f)i.push(await fe.find(h.value));break;case"remove":case"Remove":for(let h of f)p.push(await fe.find(h.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:Gb.utils.unreachable(m)}i.length&&await j.addUsers(t,i.map(m=>m._id)),p.length&&await j.removeUsers(t,p.map(m=>m._id))}e.body=V.group.toScimGroupResponse(await j.get(t))};var xa=require("@budibase/types"),Ie=new Kb.default({prefix:"/api/global/scim/v2"});Ie.use(Wi);Ie.use(ji);Ie.get("/users",Ib);Ie.get("/users/:id",va("id"),Sb);Ie.post("/users",wb);Ie.patch("/users/:id",va("id"),Tb);Ie.delete("/users/:id",va("id"),Xi);Ie.get("/groups",Fb);Ie.post("/groups",W.requireFeature(xa.Feature.USER_GROUPS),Qb);Ie.get("/groups/:id",W.requireFeature(xa.Feature.USER_GROUPS),Ea("id"),jb);Ie.delete("/groups/:id",W.requireFeature(xa.Feature.USER_GROUPS),Ea("id"),Wb);Ie.patch("/groups/:id",W.requireFeature(xa.Feature.USER_GROUPS),Ea("id"),$b);var Vb=Ie;var zb=P(require("@koa/router"));var Zi=require("@budibase/backend-core");async function Yb(e){let{userId:t,appId:r}=e.params,a=await at.db.getUser(t);if(Zi.users.isGlobalBuilder(a)){e.body={message:"User already admin - no permissions updated."};return}await at.addAppBuilder(a,r),e.body={message:`User "${a.email}" app builder access updated.`}}async function Hb(e){let{userId:t,appId:r}=e.params,a=await at.db.getUser(t);if(Zi.users.isGlobalBuilder(a)){e.body={message:"User already admin - no permissions removed."};return}await at.removeAppBuilder(a,r),e.body={message:`User "${a.email}" app builder access removed.`}}var eu=require("@budibase/types"),tu=require("@budibase/backend-core"),Jb=new zb.default;Jb.post("/api/global/users/:userId/app/:appId/builder",tu.auth.builderOrAdmin,W.requireFeatures(eu.Feature.APP_BUILDERS),Yb).delete("/api/global/users/:userId/app/:appId/builder",tu.auth.builderOrAdmin,W.requireFeatures(eu.Feature.APP_BUILDERS),Hb);var Xb=Jb;var V={};w(V,{group:()=>nu,user:()=>au});var au={};w(au,{fromScimUser:()=>gG,toScimUserResponse:()=>dG,userFilters:()=>hG});var zn=require("@budibase/types"),Zb=require("scim2-parse-filter"),eI=require("@budibase/backend-core"),tI=require("@budibase/shared-core"),{unreachable:lG}=tI.utils,dG=e=>{let{isSync:t,roles:r,...a}=e.scimInfo||{},n={...a,schemas:["urn:ietf:params:scim:schemas:core:2.0:User"],id:e._id,meta:{resourceType:"User",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},active:e.status===zn.UserStatus.ACTIVE};return(e.firstName||e.lastName)&&(n.name={formatted:[e.firstName,e.lastName].filter(o=>o).join(" "),familyName:e.lastName,givenName:e.firstName}),n},fG=e=>!!e?.id;function mG(e){if(eI.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}var gG=e=>{let t=fG(e)?e:void 0,r=mG(e);if(!r)throw new Error("Email is required");let a;switch(e.active){case"True":case"true":case!0:a=!0;break;case"False":case"false":case!1:a=!1;break;default:lG(e.active)}let n,o;return e.name?.givenName?(n=e.name?.givenName,o=e.name?.familyName):n=e.displayName,{tenantId:"",_id:t?.id,userId:t?.id,email:r,firstName:n,lastName:o,scimInfo:{...e,isSync:!0},roles:{},status:a?zn.UserStatus.ACTIVE:zn.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},hG=e=>{let t={equal:{}},r=(0,Zb.parse)(e);function a(n){switch(n.op){case"eq":{let o=n.attrPath,s;switch(o){case"emails.value":s="email";break;default:s=`scimInfo.${o}`}t.equal[s]=n.compValue;break}case"and":for(let o of n.filters)a(o);break;default:console.warn("Filter not handled",{filter:n})}}return a(r),t};var nu={};w(nu,{fromScimGroup:()=>bG,toScimGroupResponse:()=>yG});var yG=e=>({schemas:["urn:ietf:params:scim:schemas:core:2.0:Group"],id:e._id,externalId:e.scimInfo.externalId,meta:{resourceType:"Group",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},displayName:e.name,members:e.users?.map(t=>({value:t._id}))}),AG=e=>!!e?.id,bG=e=>{let t=AG(e)?e:void 0;return{_id:t?.id,name:e.displayName,scimInfo:{externalId:e.externalId,isSync:!0},icon:"UserGroup",color:"var(--spectrum-global-color-blue-600)",createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}};var xu={};w(xu,{LLM:()=>Je,LLMRequest:()=>$,TableGeneration:()=>_u,agentHistoryTitleSystemPrompt:()=>OG,agentSystemPrompt:()=>CG,aiColumnSchemas:()=>Eu,aiTableResponseToTableSchema:()=>Su,appendAIColumns:()=>wu,classifyText:()=>iu,cleanData:()=>uu,extractFileData:()=>EG,generateAIColumns:()=>bu,generateCode:()=>xG,generateCronExpression:()=>pu,generateData:()=>Iu,generateJs:()=>fu,generateSQL:()=>_G,generateTables:()=>Au,generationStructure:()=>vu,getLLM:()=>La,getLLMConfig:()=>yu,getLLMOrThrow:()=>lI,normalizeContentType:()=>ou,parseResponseFormat:()=>Xn,sanitiseToolName:()=>IG,searchWeb:()=>du,sentimentAnalysis:()=>lu,summarizeText:()=>Jn,tableDataStructuredOutput:()=>Ru,translate:()=>cu});var Ca=require("@budibase/types");function IG(e){if(e.length>64)throw new Error("Tool name must be under 64 characters long");return e.replace(/[^a-zA-Z0-9_-]/g,"_")}function ou(e){return e?e.includes("/")?e:{[Ca.SupportedFileType.PDF]:"application/pdf",[Ca.SupportedFileType.JPG]:"image/jpeg",[Ca.SupportedFileType.JPEG]:"image/jpeg",[Ca.SupportedFileType.PNG]:"image/png"}[e.toLowerCase()]||"application/octet-stream":"application/octet-stream"}var ao=require("@budibase/types");var Xe=require("@budibase/backend-core"),iI=require("@budibase/types");var Zn=P(require("openai"));var St=require("@budibase/types");var rI=require("@budibase/shared-core");var wt=P(require("dd-trace"));function su(e,t){return t.map(r=>e[r]).join(" ")}var Je=class{constructor({model:t,apiKey:r,maxTokens:a}){this._model=t,this._apiKey=r,this._maxTokens=a??parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"300")}get model(){return this._model}get apiKey(){return this._apiKey}get maxTokens(){return this._maxTokens}async prompt(t){return await wt.default.trace("prompt",async()=>{let r=typeof t=="string"?new $().addUserMessage(t):t,{messages:a,tokensUsed:n}=await wt.default.trace("chatCompletion",()=>this.chatCompletion(r));return!a||a.length===0?{message:"",tokensUsed:n}:{message:a[a.length-1].content||"",tokensUsed:n}})}async chat(t){return await wt.default.trace("chat",async()=>await this.chatCompletion(t))}async*chatStream(t){yield*this.chatCompletionStream(t)}async summarizeText(t){return wt.default.trace("summarizeText",()=>this.prompt(Jn(t)))}async generateCronExpression(t){return wt.default.trace("generateCronExpression",()=>this.prompt(pu(t)))}async operation(t,r){return wt.default.trace("operation",a=>{a.addTags({operation:t.operation,rowId:r.id});let n=this.promptForOperation(t,r);return this.prompt(n)})}promptForOperation(t,r){let{operation:a,column:n,columns:o,language:s,categories:i,prompt:p}=t;switch(a){case St.AIOperationEnum.SUMMARISE_TEXT:return Jn(su(r,o));case St.AIOperationEnum.CLEAN_DATA:return uu(r[n]);case St.AIOperationEnum.TRANSLATE:return cu(r[n],s);case St.AIOperationEnum.CATEGORISE_TEXT:if(!i)throw Error("No categories provided for categorise text operation. Please provide categories.");return iu(su(r,o),i.split(","));case St.AIOperationEnum.SENTIMENT_ANALYSIS:return lu(r[n]);case St.AIOperationEnum.PROMPT:return p;case St.AIOperationEnum.SEARCH_WEB:return du(su(r,o));default:throw rI.utils.unreachable(a)}}async generateJs(t,r){return await wt.default.trace("generateJs",async()=>{let{bindings:a=[],snippets:n=[]}=r||{};return await this.prompt(fu(a,n).addUserMessage(t))})}};var nI=require("@budibase/types"),mu=require("openai/helpers/zod");function Xn(e){if(e)return e==="text"?{type:"text"}:e==="json"?{type:"json_object"}:e}function aI(e){if(!e)return 0;let t=e.prompt_tokens;return e.completion_tokens*3+t}var Ce=class extends Je{constructor(r){super(r);this.client=this.getClient(r)}getClient(r){if(!r.apiKey)throw new Error("No OpenAI API key found");return new Zn.default({apiKey:r.apiKey})}async uploadFile(r,a,n){let o=ou(n);if(nI.ImageContentTypes.includes(o.toLowerCase())){let p;if(Buffer.isBuffer(r))p=r;else{let f=[];for await(let h of r)f.push(h);p=Buffer.concat(f)}let m=p.toString("base64");return`data:${o};base64,${m}`}let s=await(0,Zn.toFile)(r,a);return(await this.client.files.create({file:s,purpose:"assistants"})).id}async chatCompletion(r){let a={model:this.model,messages:r.messages,max_tokens:this.maxTokens,response_format:Xn(r.format)};r.tools&&r.tools.length>0&&(a.tool_choice="auto",a.tools=r.tools.map(mu.zodFunction));let n=await this.client.chat.completions.create(a),o=n.choices[0]?.message;if(o?.tool_calls){r.addMessage(o);let s=[];for(let i of o.tool_calls){let p=r.findTool(i.function.name);if(!p)throw new Error(`Tool ${i.function.name} not found in prompt tools`);let m=JSON.parse(i.function.arguments);s.push(p.handler(m).then(f=>({role:"tool",tool_call_id:i.id,content:f})).catch(f=>(console.error(`[OPENAI TOOL ERROR] Tool ${i.function.name} failed in OpenAI handler:`,f),{role:"tool",tool_call_id:i.id,content:`Error: ${f.message}`})))}return r.addMessages(await Promise.all(s)),this.chatCompletion(r)}else{if(o?.content)return{messages:[...r.messages,{role:o.role,content:o.content}],tokensUsed:aI(n.usage)};throw new Error("No response found")}}async*chatCompletionStream(r){let a={model:this.model,messages:r.messages,max_tokens:this.maxTokens,response_format:Xn(r.format),stream:!0};r.tools&&r.tools.length>0&&(a.tool_choice="auto",a.tools=r.tools.map(mu.zodFunction));try{let n=await this.client.chat.completions.create(a),o=null,s="",i=null;for await(let m of n){let f=m.choices[0]?.delta;if(f){if(f.content&&(s+=f.content,yield{type:"content",content:f.content}),f.tool_calls&&f.tool_calls.length>0){let h=f.tool_calls[0];h.id?(o={id:h.id,name:h.function?.name||"",arguments:h.function?.arguments||""},yield{type:"tool_call_start",toolCall:{id:o.id,name:o.name,arguments:o.arguments}}):o&&h.function?.arguments&&(o.arguments+=h.function.arguments,yield{type:"tool_call_start",toolCall:{id:o.id,name:o.name,arguments:o.arguments}})}m.usage&&(i=m.usage)}}let p=i?aI(i):0;if(o){r.addMessage({role:"assistant",content:"",tool_calls:[{id:o.id,type:"function",function:{name:o.name,arguments:o.arguments}}]});let m=r.findTool(o.name);if(m)try{let f=JSON.parse(o.arguments),h=await m.handler(f);yield{type:"tool_call_result",toolResult:{id:o.id,result:h}},r.addMessage({role:"tool",tool_call_id:o.id,content:h}),yield*this.chatCompletionStream(r);return}catch(f){yield{type:"tool_call_result",toolResult:{id:o.id,result:`Error: ${f.message}`,error:f.message}},r.addMessage({role:"tool",tool_call_id:o.id,content:`Error: ${f.message}`}),yield*this.chatCompletionStream(r);return}else{let f=`Tool '${o.name}' not found`;yield{type:"tool_call_result",toolResult:{id:o.id,result:f,error:f}},r.addMessage({role:"tool",tool_call_id:o.id,content:f}),yield*this.chatCompletionStream(r);return}}s&&r.addMessage({role:"assistant",content:s}),yield{type:"done",messages:r.messages,tokensUsed:p}}catch(n){yield{type:"error",content:n.message}}}};var ee=require("@budibase/backend-core"),oI=require("@budibase/types");var gu=require("dd-trace"),eo=class extends Je{async prompt(t){let r=await super.prompt(t);return r.tokensUsed&&await Sn(r.tokensUsed),r}async chat(t){let r=await super.chat(t);return r.tokensUsed&&await Sn(r.tokensUsed),r}async uploadFile(t,r,a){return ee.env.SELF_HOSTED?this.uploadFileSelfHost(t,r,a):this.uploadFileCloud(t,r,a)}async uploadFileCloud(t,r,a){return new Ce({apiKey:ee.env.OPENAI_API_KEY,model:this.model,maxTokens:this.maxTokens}).uploadFile(t,r,a)}async uploadFileSelfHost(t,r,a){let n;if(Buffer.isBuffer(t))n=t;else{let p=[];for await(let m of t)p.push(m);n=Buffer.concat(p)}let o=n.toString("base64");if(a&&oI.ImageContentTypes.includes(a.toLowerCase()))return`data:image/jpeg;base64,${o}`;if(!ee.env.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(!this._apiKey){let p=await dn();if(!p)throw new Error("No license key found");this._apiKey=p}let s=await fetch(`${ee.env.BUDICLOUD_URL}/api/ai/upload-file`,{method:"POST",headers:{"Content-Type":"application/json",[ee.constants.Header.LICENSE_KEY]:this._apiKey},body:JSON.stringify({data:o,filename:r,contentType:a})});if(!s.ok)throw await ee.HTTPError.fromResponse(s);return(await s.json()).fileId}async chatCompletion(t){return ee.env.SELF_HOSTED?this.chatCompletionSelfHost(t):this.chatCompletionCloud(t)}async chatCompletionCloud(t){return await gu.tracer.trace("chatCompletionCloud",async()=>await new Ce({apiKey:ee.env.OPENAI_API_KEY,model:this.model,maxTokens:this.maxTokens}).chatCompletion(t))}async chatCompletionSelfHost(t){return await gu.tracer.trace("chatCompletionSelfHost",async r=>{if(!ee.env.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(r.addTags({budicloudUrl:ee.env.BUDICLOUD_URL}),!this._apiKey){let o=await dn();if(!o)throw new Error("No license key found");this._apiKey=o,r.addTags({licenseKey:this._apiKey})}let a={messages:t.messages,format:t.format,useTools:t.tools.length>0},n=await fetch(`${ee.env.BUDICLOUD_URL}/api/ai/chat`,{method:"POST",headers:{"Content-Type":"application/json",[ee.constants.Header.LICENSE_KEY]:this._apiKey},body:JSON.stringify(a)});if(!n.ok)throw await ee.HTTPError.fromResponse(n);return await n.json()})}async*chatCompletionStream(t){ee.env.SELF_HOSTED?yield*this.chatCompletionStreamSelfHost(t):yield*this.chatCompletionStreamCloud(t)}async*chatCompletionStreamCloud(t){yield*new Ce({apiKey:ee.env.OPENAI_API_KEY,model:this.model,maxTokens:this.maxTokens}).chatCompletionStream(t)}async*chatCompletionStreamSelfHost(t){try{let r=await this.chatCompletionSelfHost(t);if(r.messages.length>0){let a=r.messages[r.messages.length-1];a.content&&(yield{type:"content",content:a.content})}yield{type:"done",messages:r.messages,tokensUsed:r.tokensUsed}}catch(r){yield{type:"error",content:r.message}}}};var Oa=require("dd-trace");var hu=P(require("@anthropic-ai/sdk"));function SG(e){if(!e)return 0;let t=e.input_tokens;return e.output_tokens*3+t}var to=class extends Je{constructor(r){super(r);this.client=new hu.default({apiKey:r.apiKey})}firstTextBlock(r){for(let a of r.content)if(a.type==="text")return a.text}async uploadFile(r,a,n){throw new Error("File upload not supported for this LLM provider")}async chatCompletion(r){try{let a=await this.client.messages.create({model:this.model,messages:r.messages.map(({content:o})=>{if(o==null)return{role:"user",content:""};if(typeof o=="string")return{role:"user",content:o};let s="";for(let i of o)i.type==="text"?s+=i.text:["image_url","input_audio","file"].includes(i.type);return{role:"user",content:s}}),max_tokens:this.maxTokens}),n=this.firstTextBlock(a)||"";return{messages:[...r.messages,{role:"assistant",content:n}],tokensUsed:SG(a.usage)}}catch(a){throw a instanceof hu.default.APIError&&console.error(`Anthropic Prompt failed with error ${a.name} and status: ${a.status}`),a}}async*chatCompletionStream(r){try{let a=await this.chatCompletion(r);if(a.messages.length>0){let n=a.messages[a.messages.length-1];n.content&&(yield{type:"content",content:n.content})}yield{type:"done",messages:a.messages,tokensUsed:a.tokensUsed}}catch(a){yield{type:"error",content:a.message}}}};var uI=require("zod"),pI=require("openai/helpers/zod");var sI=require("openai"),ro=class extends Ce{getClient(t){if(!t.apiKey)throw new Error("No Azure OpenAI API key found");if(!t.model)throw new Error("No Azure OpenAI model specified");return new sI.AzureOpenAI({apiKey:t.apiKey,apiVersion:"2024-10-01-preview",baseURL:t.baseUrl})}};var cI="gpt-4o-mini",wG={OpenAI:Ce,TogetherAI:Ce,AzureOpenAI:ro,Custom:Ce,Anthropic:to,BudibaseAI:eo};async function TG(){return await Oa.tracer.trace("getAIConfig",async e=>{let t={type:iI.ConfigType.AI,config:{}};if(!Xe.context.isSelfHostUsingCloud()){let a=await Xe.configs.getAIConfig();a&&(t=a)}await fs(t);let r=Object.values(t.config).find(a=>a.active&&a.isDefault);if(!r){e.addTags({enabled:!1,reason:"no provider found"});return}return e.addTags({enabled:!0}),{provider:r.provider,model:r.defaultModel||cI,apiKey:r.apiKey,baseUrl:r.baseUrl}})}async function vG(){return Oa.tracer.trace("getSelfHostOpenAIKeyConfig",e=>{if(!Xe.env.SELF_HOSTED){e.addTags({enabled:!1,reason:"not self host"});return}if(!Xe.env.OPENAI_API_KEY){e.addTags({enabled:!1,reason:"no OPENAI_API_KEY"});return}return e.addTags({enabled:!0}),{provider:"OpenAI",model:cI,apiKey:Xe.env.OPENAI_API_KEY}})}async function yu(){return Oa.tracer.trace("getLLMConfig",async()=>await TG()||await vG())}async function La(e){return await Oa.tracer.trace("getLLM",async t=>{let{model:r,maxTokens:a}=e||{},n=await yu();if(!n){t.addTags({enabled:!1,reason:"no config found"});return}r&&(n.model=r),a&&(n.maxTokens=a);let o=wG[n.provider];if(!o){t.addTags({enabled:!1,reason:"no provider found",provider:n.provider});return}return new o(n)})}async function lI(){let e=await La();if(!e)throw new Xe.HTTPError("No available LLM configurations",500);return e}var $=class e{constructor(){this.messages=[];this.tools=[]}addTool(t){return this.tools.push(t),this}addTools(t){return this.tools.push(...t),this}findTool(t){return this.tools.find(r=>r.name===t)}withFormat(t){return t instanceof uI.z.ZodType?this.format=(0,pI.zodResponseFormat)(t,"key"):this.format=t,this}addMessage(t){return this.messages.push(t),this}addMessages(t){return this.messages.push(...t),this}addUserMessage(t){return this.messages.push({role:"user",content:t}),this}addSystemMessage(t){return this.messages.push({role:"system",content:t}),this}static fromRequest(t){let r=new e;return t.messages&&r.addMessages(t.messages),t.format&&r.withFormat(t.format),r}};var it=require("zod");function Jn(e,t){let r=`Summarize this text:
|
|
39
|
-
${e}`,a="";if(t)switch(t){case
|
|
40
|
-
Only return the summary.`)}function
|
|
37
|
+
`;function Kr(e){return wo.default.verify(e,AS,{algorithms:["RS256"]})}function bS(e,t){return wo.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}var Ha={};w(Ha,{getFeatures:()=>To});var l=require("@budibase/types");var IS={[l.PlanType.FREE]:[...ge.SELF_FREE_LICENSE.features],[l.PlanType.PREMIUM]:void 0,[l.PlanType.PREMIUM_PLUS]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.BUDIBASE_AI]},SS={[l.PlanType.FREE]:[...ge.CLOUD_FREE_LICENSE.features],[l.PlanType.PREMIUM]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.PDF],[l.PlanType.PREMIUM_PLUS]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.BUDIBASE_AI,l.Feature.PDF],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.BUDIBASE_AI,l.Feature.PDF],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.BRANDING],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.BRANDING],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.BUDIBASE_AI,l.Feature.PDF],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF]};function To(e,t){let r=[];function a(n){let o=n[t];if(!o)throw new Error(`Features do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case l.Hosting.SELF:r=a(IS);break;case l.Hosting.CLOUD:r=a(SS);break}return r}var za={};w(za,{UNLIMITED:()=>d,getQuotas:()=>vo});var G=require("@budibase/types");var c=Ze,Ip=ge,d=-1,Yr=e=>e*1e6,wS={[G.PlanType.FREE]:{...Ip.CLOUD_FREE_LICENSE.quotas},[G.PlanType.PREMIUM]:{usage:{monthly:{...c.queries(d),...c.automations(1e3),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(1e4),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(0),...c.plugins(d),...c.customAIConfigurations(0)}},constant:{...c.automationLogRetentionDays(7),...c.appBackupRetentionDays(7)}},[G.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...c.queries(d),...c.automations(5e3),...c.budibaseAICredits(Yr(2)),...c.actions(d)},static:{...c.rows(25e3),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(0),...c.plugins(d),...c.customAIConfigurations(1)}},constant:{...c.automationLogRetentionDays(30),...c.appBackupRetentionDays(30)}},[G.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...c.queries(d),...c.automations(5e3),...c.budibaseAICredits(Yr(2)),...c.actions(d)},static:{...c.rows(25e3),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(0),...c.plugins(d),...c.customAIConfigurations(1)}},constant:{...c.automationLogRetentionDays(30),...c.appBackupRetentionDays(30)}},[G.PlanType.PRO]:{usage:{monthly:{...c.queries(d),...c.automations(1e3),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(5),...c.plugins(d),...c.customAIConfigurations(0)}},constant:{...c.automationLogRetentionDays(7),...c.appBackupRetentionDays(7)}},[G.PlanType.TEAM]:{usage:{monthly:{...c.queries(d),...c.automations(5e3),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(10),...c.plugins(d),...c.customAIConfigurations(0)}},constant:{...c.automationLogRetentionDays(30),...c.appBackupRetentionDays(90)}},[G.PlanType.BUSINESS]:{usage:{monthly:{...c.queries(d),...c.automations(1e4),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(5e4),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(50),...c.plugins(d),...c.customAIConfigurations(0)}},constant:{...c.automationLogRetentionDays(365),...c.appBackupRetentionDays(365)}},[G.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(Yr(4)),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(d),...c.plugins(d),...c.customAIConfigurations(d)}},constant:{...c.automationLogRetentionDays(d),...c.appBackupRetentionDays(d)}},[G.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(Yr(4)),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(d),...c.plugins(d),...c.customAIConfigurations(d)}},constant:{...c.automationLogRetentionDays(15),...c.appBackupRetentionDays(15)}},[G.PlanType.ENTERPRISE]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(Yr(4)),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(d),...c.plugins(d),...c.customAIConfigurations(d)}},constant:{...c.automationLogRetentionDays(d),...c.appBackupRetentionDays(d)}}},TS={[G.PlanType.FREE]:{...Ip.SELF_FREE_LICENSE.quotas},[G.PlanType.PREMIUM]:void 0,[G.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(0),...c.plugins(d),...c.customAIConfigurations(1)}},constant:{...c.automationLogRetentionDays(30),...c.appBackupRetentionDays(30)}},[G.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(0),...c.plugins(d),...c.customAIConfigurations(1)}},constant:{...c.automationLogRetentionDays(30),...c.appBackupRetentionDays(30)}},[G.PlanType.PRO]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(5),...c.plugins(d),...c.customAIConfigurations(0)}},constant:{...c.automationLogRetentionDays(7),...c.appBackupRetentionDays(7)}},[G.PlanType.TEAM]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(10),...c.plugins(d),...c.customAIConfigurations(0)}},constant:{...c.automationLogRetentionDays(30),...c.appBackupRetentionDays(90)}},[G.PlanType.BUSINESS]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(50),...c.plugins(d),...c.customAIConfigurations(0)}},constant:{...c.automationLogRetentionDays(90),...c.appBackupRetentionDays(365)}},[G.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(d),...c.plugins(d),...c.customAIConfigurations(d)}},constant:{...c.automationLogRetentionDays(d),...c.appBackupRetentionDays(d)}},[G.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(d),...c.plugins(d),...c.customAIConfigurations(d)}},constant:{...c.automationLogRetentionDays(15),...c.appBackupRetentionDays(15)}},[G.PlanType.ENTERPRISE]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(0),...c.actions(d)},static:{...c.rows(d),...c.apps(d),...c.users(d),...c.creators(d),...c.userGroups(d),...c.plugins(d),...c.customAIConfigurations(d)}},constant:{...c.automationLogRetentionDays(d),...c.appBackupRetentionDays(d)}}};function vo(e,t){let r;function a(n){let o=n[t];if(!o)throw new Error(`Quotas do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case G.Hosting.SELF:r=a(TS);break;case G.Hosting.CLOUD:r=a(wS);break}return JSON.parse(JSON.stringify(r))}var Kt={};w(Kt,{appExists:()=>vS,encoding:()=>$t});var Sp=require("@budibase/backend-core");async function vS(e){return(await Sp.db.getAllApps({all:!0,idsOnly:!0})).includes(e)}var $t={};w($t,{base64ToObject:()=>RS,objectToBase64:()=>ES});function ES(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}function RS(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}var nf=require("@budibase/types"),or=require("@budibase/backend-core"),of=P(Bl()),sf=P(Xo());async function tx(e){await Te.save({offlineLicenseToken:e}),await xt()}async function rx(){await Te.save({offlineLicenseToken:void 0}),await xt()}async function uf(){return(await Te.get()).offlineLicenseToken}async function Zo(){let t=(await or.installation.getInstall()).installId,r=or.context.getTenantId(),a=await or.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:a}}async function ax(){let e=await Zo();return $t.objectToBase64(e)}function nx(e){return $t.base64ToObject(e)}function pf(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 cf(e){let t=await Zo();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}function lf(e){let t=e.plan.type,r=nf.Hosting.SELF,a=To(r,t),n=vo(r,t);return e.features=(0,of.default)(e.features,a),e.quotas=(0,sf.default)(e.quotas,n),e}async function es(){try{let e=await uf();if(e){let t=await Kr(e);return pf(t),await cf(t),lf(t)}}catch(e){console.error("Error retrieving offline license",e)}}var fa={};w(fa,{deleteDevLicense:()=>px,getOfflineLicense:()=>ix,writeDevLicenseToDisk:()=>ux});var df=require("@budibase/backend-core"),rs=require("path"),ff=require("os"),Ot=P(require("fs"));var ox=df.env.isTest()?".budibase-test":".budibase",ts=(0,rs.join)((0,ff.tmpdir)(),ox),sx="dev_license.txt",da=(0,rs.join)(ts,sx);if(!Ot.default.existsSync(ts))try{Ot.default.mkdirSync(ts)}catch{}function ix(){try{if(Ot.default.existsSync(da)){let e=Ot.default.readFileSync(da,{encoding:"utf-8"});return Kr(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}function ux(e){console.log(`Writing license to: ${da}`),Ot.default.writeFileSync(da,e,{encoding:"utf-8"})}function px(){Ot.default.rmSync(da,{force:!0})}var ns=async()=>{if(as.env.OFFLINE_MODE)return es();let e=await Wt();return e||(e=fa.getOfflineLicense()),e},os=e=>Io(e),ss=()=>as.env.SELF_HOSTED?ge.SELF_FREE_LICENSE:ge.CLOUD_FREE_LICENSE;var us={};w(us,{activateLicenseKey:()=>cx,deleteLicenseKey:()=>lx,getLicenseKey:()=>fn});var is=P(require("dd-trace"));async function cx(e){await So(e),await Te.save({licenseKey:e}),await xt()}async function fn(){return await is.default.trace("getLicenseKey",async e=>{let t=await Te.get();return e.addTags({licenseKey:t.licenseKey}),t.licenseKey})}async function lx(){return await is.default.trace("deleteLicenseKey",async()=>{await Te.save({licenseKey:void 0}),await xt()})}var Ct=require("@budibase/backend-core"),mn=P(require("dd-trace")),mf=3600,xt=async()=>{await yf(),await hf()},gf=async(e,t)=>{let{populateLicense:r=ns,populateFreeLicense:a=ss}=t||{};return await mn.default.trace("getCachedLicense",async n=>{let o=Ct.context.getLicense();if(o)return n.addTags({foundInContext:!0,features:o.features,plan:o.plan,quotas:o.quotas}),o;let s=Ct.tenancy.getTenantId(),i=await so(),p=await i.get(s);return n.addTags({tenantId:s,foundInCache:!!p}),p?(n.addTags({foundInCache:!0,refreshedAt:p.refreshedAt,features:p.features,plan:p.plan,quotas:p.quotas}),p):(p=await mn.default.trace("populateLicense",async()=>await r(s)),n.addTags({populatedLicense:!!p}),p||(p=mn.default.trace("populateFreeLicense",()=>a(e,s)),n.addTags({populatedFreeLicense:!!p})),p.refreshedAt=new Date().toISOString(),n.addTags({refreshedAt:p.refreshedAt,features:p.features,plan:p.plan,quotas:p.quotas,expirySeconds:mf}),await i.store(s,p,mf),p)})};Ct.env.isJest()&&(gf=jest.fn());var hf=gf,yf=async()=>{let e=Ct.tenancy.getTenantId();await(await so()).delete(e)};async function ie(e,t){Array.isArray(e)||(e=[e]),t||(t=await Pe.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}async function gn(e,t){if(!await ie(e,t))throw new et.FeatureDisabledError(`${e} is not currently enabled`,e)}async function ps(e,t){if(!await ie(e,t)){let r=e.join(", ");throw new et.FeatureDisabledError(`${r} are not currently enabled`,r)}}function ye(e){return async(...t)=>(await gn(se.Feature.APP_BACKUPS),e(...t))}async function cs(){return ie(se.Feature.APP_BACKUPS)}async function ls(){return ie(se.Feature.BRANDING)}async function Af(){return ie(se.Feature.ENFORCEABLE_SSO)}async function fx(){return ie(se.Feature.SYNC_AUTOMATIONS)}async function mx(){return ie(se.Feature.TRIGGER_AUTOMATION_RUN)}async function Lt(){return ie(se.Feature.APP_BUILDERS)}async function hn(){return ie(se.Feature.AUDIT_LOGS)}async function ds(){return ie(se.Feature.USER_GROUPS)}function gx(){return ie(se.Feature.PWA)}async function tt(){return ie(se.Feature.EXPANDED_PUBLIC_API)}async function hx(e){if(et.env.ENABLE_SSO_MAINTENANCE_MODE||!await Af())return!1;let r;return e?.config?r=e.config:r=await et.configs.getSettingsConfig(),!!r.isSSOEnforced}var fs=async()=>{let e=se.Feature.SCIM,t=await ie(e),r=await et.configs.getSCIMConfig();if(!t||!r?.enabled)throw new et.FeatureDisabledError(`${e} is not currently enabled`,e);return!0};async function yx(){return ie(se.Feature.VIEW_PERMISSIONS)}async function Ax(){return ie(se.Feature.VIEW_READONLY_COLUMNS)}var bx={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 Ix(e){return await ls()?{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}:bx}var gs={};w(gs,{enrichAIConfig:()=>ms});var bf=require("@budibase/backend-core"),Sx="budibase_ai";async function ms(e){if(bf.env.SELF_HOSTED)return e;for(let t of Object.values(e.config))if(t.provider==="BudibaseAI")return e;return e.config[Sx]={provider:"BudibaseAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-4o-mini",name:"Budibase AI"},e}var Ke={};w(Ke,{addAction:()=>Rx,addApp:()=>_x,addAutomation:()=>Ux,addGroup:()=>ys,addPlugin:()=>bs,addRow:()=>Ox,addRows:()=>Lx,addUsers:()=>In,bustCache:()=>lo,decrement:()=>rt,decrementMany:()=>ma,getCurrentUsageValues:()=>Vu,getLicensedQuota:()=>Sf,getQuotaUsage:()=>Tt,increment:()=>Ae,incrementBudibaseAICredits:()=>wn,incrementMany:()=>Pt,removeApp:()=>xx,removeGroup:()=>As,removePlugin:()=>Is,removeRow:()=>Cx,removeRows:()=>Px,removeUsers:()=>cr,set:()=>hs,setAllUsage:()=>mo,setAppUsageValue:()=>fo,setUsage:()=>Wu,setUsagePerApp:()=>$u,updatePluginCount:()=>Ss,updateUsage:()=>ir,usageLimitIsExceeded:()=>Ex,utils:()=>_r});var An=require("@budibase/types");var H=require("@budibase/types");var De=require("@budibase/backend-core");var sr=require("dd-trace"),Ae=(e,t,r)=>If({change:1,name:e,type:t,opts:r}),Pt=e=>sr.tracer.trace("quotas.incrementMany",async()=>If(e)),If=async e=>await sr.tracer.trace("quotas.tryIncrement",async t=>{let r=Array.isArray(e)?e:[e];t.addTags({numActions:r.length}),await ir(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 sr.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 ir(r.map(n=>({usageChange:n.change,name:n.name,type:n.type,opts:{dryRun:!1,valueFn:n.opts?.valueFn,suppressErrorLog:n.opts?.suppressErrorLog,id:n.opts?.id}}))),a[0]}),rt=(e,t,r={})=>ir({usageChange:-1,name:e,type:t,opts:r}),ma=e=>{let t=Array.isArray(e)?e:[e];return ir(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},hs=async(e,t,r)=>ke.setUsage(r,e,t),wx=(e,t,r)=>{if(e==H.QuotaUsageType.STATIC){let a=r.usageQuota.triggers;return a?a[t]||{}:{}}else{let a=ke.utils.getCurrentMonthString(),n=r.monthly[a].triggers;return n?n[t]||{}:{}}},Tx=async(e,t,r,a)=>{try{await De.locks.doWithLock({type:H.LockType.TRY_ONCE,name:H.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let n={percentage:r,name:t.name};a&&(n.resetDate=a),await ft.triggerQuota(n)})}catch(n){De.logging.logAlert("Error triggering quota",n)}},vx=async(e,t,r,a)=>{let n=await Tt(),o=e===H.QuotaUsageType.MONTHLY?n.quotaReset:void 0,s=await wx(e,t,n),i=a.triggers,p=r/a.value*100;p>100&&(p=100);for(let[m,f]of i.entries())if(p>=f&&a.value!==Ze.UNLIMITED){if(!s[f]){s[f]=new Date().toISOString();let g=i[m+1]||100;(!(p>=g)||p===f)&&await Tx(t,a,p,o)}}else s[f]=void 0;return s},ir=async e=>{await sr.tracer.trace("quotas.updateUsage",async t=>{let r=De.tenancy.getTenantId(),a=Array.isArray(e)?e:[e];t.addTags({numActions:a.length,tenantId:r});let n,o,s=[],i={},p={},m={},f={};for(let g of a)await sr.tracer.trace("quotas.updateUsage.action",async S=>{S.addTags({actionName:g.name,actionType:g.type,actionUsageChange:g.usageChange});try{n=De.context.getAppId()}catch{}if(H.APP_QUOTA_NAMES.includes(g.name)&&!n)throw new Error("App context required for quota update");try{o=await Sf(H.QuotaType.USAGE,g.name,g.type),s.push(o);let{total:_,app:R,breakdown:E}=await ke.getCurrentUsageValues(g.type,g.name,g.opts?.id);_+=g.usageChange,R!=null&&(R+=g.usageChange),E!=null&&(E+=g.usageChange);let U={};if(g.opts?.dryRun||(U=await vx(g.type,g.name,_,o),f={...f,[g.name]:U}),o.value!==Ze.UNLIMITED&&_>o.value&&g.usageChange>0)throw new De.UsageLimitError(`Licensed ${o.name} of ${o.value} has been exceeded`,o.name);if(_=Math.max(0,_),R&&(R=Math.max(0,R)),E&&(E=Math.max(0,E),m={...m,[g.name]:E}),!g.opts?.dryRun){let Ce=g.opts?.valueFn;Ce&&(_=await Ce(),R=_),i={...i,[g.name]:_},p={...p,[g.name]:R}}}catch(_){throw g.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${g.name}`,_),_}});let h=a.filter(g=>!g.opts?.dryRun).map(g=>({name:g.name,type:g.type,values:{total:i[g.name],app:p[g.name],breakdown:m[g.name],triggers:f[g.name]},opts:{...g.opts,tenantId:r}}));h.length>0&&await ke.setAllUsage(h)})},Sf=async(e,t,r)=>{let a=await Pe.getCachedLicense();if(!a){let n=De.tenancy.getTenantId();throw new Error("License not found for tenant id "+n)}if(r&&(0,H.isStaticQuota)(e,r,t))return a.quotas[e][r][t];if(r&&(0,H.isMonthlyQuota)(e,r,t))return a.quotas[e][r][t];if((0,H.isConstantQuota)(e,t))return a.quotas[e][t];throw new Error("Invalid quota type")},Ex=async(e,t)=>{try{return await ir({usageChange:1,name:e,type:t,opts:{dryRun:!0}}),!1}catch(r){if(r.code===H.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw r}};var Rx=async e=>Ae(An.MonthlyQuotaName.ACTIONS,An.QuotaUsageType.MONTHLY,{fn:e});var ur=require("@budibase/types"),wf=require("@budibase/backend-core"),Tf=async()=>{let e=await wf.db.getAllApps({dev:!0});return e?e.length:0},_x=async(e,{appId:t}={})=>Ae(ur.StaticQuotaName.APPS,ur.QuotaUsageType.STATIC,{fn:e,valueFn:Tf,id:t}),xx=async({appId:e}={})=>rt(ur.StaticQuotaName.APPS,ur.QuotaUsageType.STATIC,{valueFn:Tf,id:e});var We=require("@budibase/types"),Ox=async(e,{tableId:t}={})=>Ae(We.StaticQuotaName.ROWS,We.QuotaUsageType.STATIC,{fn:e,id:t}),Cx=async({tableId:e}={})=>rt(We.StaticQuotaName.ROWS,We.QuotaUsageType.STATIC,{id:e}),Lx=async(e,t,{tableId:r}={})=>Pt({change:e,name:We.StaticQuotaName.ROWS,type:We.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),Px=async(e,{tableId:t}={})=>ma({change:e,name:We.StaticQuotaName.ROWS,type:We.QuotaUsageType.STATIC,opts:{id:t}});var bn=require("@budibase/types"),Ux=async(e,{automationId:t}={})=>Ae(bn.MonthlyQuotaName.AUTOMATIONS,bn.QuotaUsageType.MONTHLY,{fn:e,id:t});var pr=require("@budibase/types"),ys=async e=>Ae(pr.StaticQuotaName.USER_GROUPS,pr.QuotaUsageType.STATIC,{fn:e}),As=async()=>rt(pr.StaticQuotaName.USER_GROUPS,pr.QuotaUsageType.STATIC);var yt=require("@budibase/types"),bs=async e=>Ae(yt.StaticQuotaName.PLUGINS,yt.QuotaUsageType.STATIC,{fn:e}),Is=async()=>rt(yt.StaticQuotaName.PLUGINS,yt.QuotaUsageType.STATIC),Ss=async e=>hs(yt.StaticQuotaName.PLUGINS,yt.QuotaUsageType.STATIC,e);var $e=require("@budibase/types"),ga=require("@budibase/backend-core");var In=async(e,t,r)=>{let a=[{change:e,name:$e.StaticQuotaName.USERS,type:$e.QuotaUsageType.STATIC,opts:{fn:r,valueFn:ga.users.getUserCount}}];t>0&&a.push({change:t,name:$e.StaticQuotaName.CREATORS,type:$e.QuotaUsageType.STATIC,opts:{valueFn:ga.users.getCreatorCount}});let n=await Pt(a);return await Wt(),n},cr=async(e,t)=>{let r=[{change:e,name:$e.StaticQuotaName.USERS,type:$e.QuotaUsageType.STATIC,opts:{valueFn:ga.users.getUserCount}}];t>0&&r.push({change:t,name:$e.StaticQuotaName.CREATORS,type:$e.QuotaUsageType.STATIC,opts:{valueFn:ga.users.getCreatorCount}}),await ma(r),await Wt()};var Sn=require("@budibase/types"),wn=async e=>Pt({change:e,name:Sn.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:Sn.QuotaUsageType.MONTHLY});var at={};w(at,{addAppBuilder:()=>Mx,db:()=>Ve,removeAppBuilder:()=>Gx});var ya=require("@budibase/backend-core");var j={};w(j,{addAppBuilder:()=>Rs,addUsers:()=>Ts,adjustGroupCreatorsQuotas:()=>Bx,cleanupApp:()=>Nx,enrichUserRolesFromGroups:()=>Dx,fetch:()=>ha,get:()=>Ut,getBulk:()=>Cf,getGroupBuilderAppIds:()=>Of,getGroupRoleId:()=>qx,remove:()=>ws,removeAppBuilder:()=>_s,removeUsers:()=>vs,save:()=>lr,updateGroupApps:()=>Es});var x=require("@budibase/backend-core");var vf=require("@budibase/backend-core"),Tn=class extends vf.HTTPError{constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function _f(e,t){try{let r=[];for(let i of e)if(i.roles){let p=i.roles[x.db.getProdAppID(t)];p&&r.push(p)}let a=await Promise.all(r.map(async i=>({[i]:await x.roles.roleToNumber(i)}))),n,o,s={};a.forEach(i=>{let[p,m]=Object.entries(i)[0];s[p]={roleId:p,roleNum:m}});for(let{roleId:i,roleNum:p}of Object.values(s))(o===void 0||p>o)&&(o=p,n=i);return n}catch(r){throw x.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}async function xf(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await M.getBulk(e,{enriched:!1}),t}async function Of(e,t){if(!e.userGroups)return[];let r=await xf(e.userGroups,t?.groups),a=t?.appId?x.db.getProdAppID(t?.appId):null,n=[];for(let o of r){let s=o.builder?.apps;a&&s?.includes(a)?n.push(a):a||(n=n.concat(s||[]))}return[...new Set(n)]}async function qx(e,t,r){if(!e.userGroups)return null;let a=await xf(e.userGroups,r?.groups),n=x.db.getProdAppID(t);return e.roles?.[n]?e.roles[n]:(a=a.filter(o=>o?.roles?Object.keys(o.roles).includes(n):!1),await _f(a,t))}async function Dx(e){if(!e||!e.userGroups)return e;let t=await Cf(e.userGroups,{enriched:!1}),r=[];for(let n of t)n?.roles&&(r=r.concat(Object.keys(n.roles)));r=[...new Set(r)];for(let n of r)await x.context.doInAppContext(n,async()=>{if(e.roles[n])return;let o=await _f(t,n);o&&(e.roles[n]=o)});let a=await Of(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 Ut(e){return await M.get(e)}async function Cf(e,t={enriched:!0}){return await M.getBulk(e,t)}async function Ef(e){if(await M.getByName(e))throw new Tn(e)}async function Rf(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 lr(e){let t=[],r=!e._id,a=0;if(delete e.users,!e._id)e._id=M.generateUserGroupID(),await Ef(e.name),t.push(x.events.group.created(e));else{let o=await M.get(e._id);if(o.name!==e.name&&await Ef(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 Rf(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 ys(n);{let o=await n();if(a>0)await In(0,a);else if(a<0){let s=await Rf(e),i=Math.abs(a)-s;i>0&&await cr(0,i)}return o}}async function ws(e,t){let r;try{r=await M.get(e)}catch{throw new Error("Group not found")}let a=Object.values(r.roles||{}).includes("CREATOR"),n=()=>{};if(a){let s=x.tenancy.getGlobalDB(),i=await M.getGroupUsers(e),m=(await Promise.all(i.map(S=>s.get(S._id)))).map(S=>({...S,userGroups:S.userGroups.filter(C=>C!==e)})),h=(await x.userUtils.creatorsInList(m)).filter(S=>S).length,g=i.length-h;g&&(n=()=>cr(0,g))}let o=await M.destroy(e,t);return await x.events.group.deleted(r),await As(),await n(),o}async function Ts(e,t){let r=await M.get(e),a=await x.users.bulkGetGlobalUsersById(t),n=[];for(let p of a)p.userGroups||(p.userGroups=[]),p.userGroups.includes(e)||n.push(p);if(!n.length)return n;let o=n.map(p=>({...p,userGroups:[...p?.userGroups||[],e]}));if(await x.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes("CREATOR")){let m=(await x.userUtils.creatorsInList(n)).filter(h=>h).length,f=n.length-m;f&&await In(0,f)}let i=[];for(let p of t)i.push(x.cache.user.invalidateUser(p));return await Promise.all(i),await x.events.group.usersAdded(o.length,r),o}async function vs(e,t){let r=await M.get(e),a=await x.users.bulkGetGlobalUsersById(t),n=[];for(let i of a){if(!i.userGroups||!i.userGroups.includes(e))continue;let p=i.userGroups.indexOf(e);i.userGroups.splice(p,1),n.push(i)}if(await x.users.bulkUpdateGlobalUsers(n),Object.values(r.roles||{}).includes("CREATOR")){let p=(await x.userUtils.creatorsInList(n)).filter(f=>f).length,m=n.length-p;m&&await cr(0,m)}let s=[];for(let i of t)s.push(x.cache.user.invalidateUser(i));return await Promise.all(s),n.length&&await x.events.group.usersDeleted(n.length,r),n}async function Es(e,t){let r=await Ut(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 lr(r)}async function Nx(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 Rs(e,t){if(!await Lt())throw new Error("Feature not enabled, please check license");let r=x.db.getProdAppID(t),a=await Ut(e);a.builder??={apps:[]},a.builder.apps.includes(t)||(a.builder.apps.push(r),await lr(a))}async function _s(e,t){if(!await Lt())throw new Error("Feature not enabled, please check license");let r=x.db.getProdAppID(t),a=await Ut(e);a.builder?.apps.includes(t)&&(a.builder.apps=a.builder.apps.filter(n=>n!==r),await lr(a))}async function Bx(){if(!await ds()){let e=x.tenancy.getGlobalDB(),r=(await ha()||[]).filter(a=>Object.values(a?.roles||{}).includes("CREATOR"));for(let a of r){let n=await M.getGroupUsers(a._id),s=(await Promise.all(n.map(f=>e.get(f._id)))).map(f=>({...f,userGroups:f.userGroups.filter(h=>h!==a._id)})),p=(await x.userUtils.creatorsInList(s)).filter(f=>f).length,m=n.length-p;await M.save({...a,roles:{}}),m&&await cr(0,m)}}}ya.users.UserDB.init(Ke,j,qe);var Ve=ya.users.UserDB;async function Mx(e,t){if(!await Lt())throw new Error("Feature not enabled, please check license");await ya.users.addAppBuilder(e,t)}async function Gx(e,t){if(!await Lt())throw new Error("Feature not enabled, please check license");await ya.users.removeAppBuilder(e,t)}var Rn={};w(Rn,{logs:()=>qs});var qs={};w(qs,{logSearch:()=>Yx,oldestLogDate:()=>Bf,storeLog:()=>Hx});var Nf=require("@budibase/types"),En=require("@budibase/backend-core");var vn=require("@budibase/types");var Z=require("@budibase/backend-core");var Lf=require("@budibase/backend-core");async function Pf(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||Lf.logging.logWarn(`Failed to backoff: ${t}`,r),o}var{SEPARATOR:nt,UNICODE_MAX:kx,DocumentType:Uf,AutomationViewMode:xs,ViewName:Fx,getQueryIndex:Qx}=Z.db,jx=new Date(0).toISOString(),Wx=100,Os=async()=>Wa(vn.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS);function qf(e,t,{status:r,automationId:a}={},n={}){let o=a?`${a}${nt}`:"",s=r?`${r}${nt}`:"",i;return r&&a?i=`${xs.ALL}${nt}${s}${o}`:r?i=`${xs.STATUS}${nt}${s}`:a?i=`${xs.AUTOMATION}${nt}${o}`:i=`${Uf.AUTOMATION_LOG}${nt}`,{...n,descending:!0,startkey:`${i}${t}${kx}`,endkey:`${i}${e}`}}function $x(e,t,r){return`${Uf.AUTOMATION_LOG}${nt}${e}${nt}${r}${nt}${t}`}async function Cs(e,t,r={docs:!0}){let a=Z.context.getProdAppDB();await a.exists()||(a=Z.context.getDevAppDB());let n={status:r.status},o=r?.limit?r.limit:r?.paginate?9+1:void 0,s=qf(e,t,n,{include_docs:r.docs,limit:o});r?.page&&(s.startkey=r.page);let i=await a.allDocs(s);return Or(i,{paginate:r?.paginate,pageSize:9})}async function Ls(e,t,r={}){let a=Z.context.getProdAppDB();await a.exists()||(a=Z.context.getDevAppDB());let n;try{let o={automationId:r?.automationId,status:r?.status},s=qf(e,t,o,{include_docs:!0,limit:9+1});r?.page&&(s.startkey=r.page),n=await a.query(Qx(Fx.AUTOMATION_LOGS),s)}catch(o){if(o!=null&&(o.name==="not_found"||o.error==="not_found"))return await np(),Ls(e,t,r);throw o}return Or(n,{paginate:!0,pageSize:9})}async function Df(e,t){let r=Z.context.getProdAppDB(),a=e._id,n=e.name,o=new Date().toISOString(),s=$x(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 Ps(e,{clearing:t}={clearing:!1}){let r=Z.context.getProdAppDB();await Pf(async()=>{let a=await r.get(Z.db.DocumentType.APP_METADATA);for(let n of e){let o=n.split(Z.db.SEPARATOR),s=`${o[o.length-3]}${Z.db.SEPARATOR}${o[o.length-2]}`,i={};a.automationErrors&&(i=a.automationErrors),Array.isArray(i[s])||(i[s]=[]);let p=i[s].indexOf(n);t&&p!==-1?i[s].splice(p,1):i[s].push(n),i[s].length===0&&delete i[s],a.automationErrors=i}await r.put(a),await Z.cache.app.invalidateAppMetadata(a.appId,a)},"Failed to update app metadata with automation log error")}async function Kx(){let e=await Os();try{return await Cs(jx,e,{docs:!1,paginate:!1,limit:Wx})}catch{return{data:[],hasNextPage:!1}}}async function Us(){let e=Z.context.getProdAppDB();try{let t=await Kx();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]===vn.AutomationStatus.ERROR}).map(n=>n.id);await e.bulkDocs(r),a.length&&await Ps(a,{clearing:!0})}catch(t){Z.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}var Bf=Os;async function Vx(e,t,r,a){let n,o=new Date().toISOString(),s=await Bf();return(!e||e<s)&&(e=s),r||t?n=await Ls(e,o,{automationId:r,status:t,page:a}):n=await Cs(e,o,{status:t,page:a,docs:!0,paginate:!0}),n}async function Yx(e){return await Us(),await Vx(e.startDate,e.status,e.automationId,e.page)}async function Hx(e,t){if(!En.db.isProdAppID(En.context.getAppId()))return;let r=await Df(e,t);t.status===Nf.AutomationStatus.ERROR&&await Ps([r]),await Us()}var _n={};w(_n,{checkPluginQuotas:()=>Xx,deletePlugin:()=>Jx,storePlugin:()=>zx});var Ff=require("@budibase/types"),z=require("@budibase/backend-core");var Mf=P(require("fs")),Gf=require("path");function kf(e,t){return Mf.default.readFileSync((0,Gf.join)(e,t),"utf8")}async function zx(metadata,directory,source){let db=z.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=z.objectStore.getPluginS3Dir(name),files=await z.objectStore.uploadDirectory(z.objectStore.ObjectStoreBuckets.PLUGINS,directory,bucketPath),jsFile=files.find(e=>e.name.endsWith(".js")),iconFile=files.find(e=>e.name.endsWith(".svg"));if(!jsFile)throw new Error("Plugin missing .js file.");if(metadata.schema.type===Ff.PluginType.DATASOURCE){let js=kf(directory,jsFile.name);try{eval(js)}catch(e){let t=e?.message?e.message:JSON.stringify(e);throw new Error(`JS invalid: ${t}`)}}let iconFileName=iconFile?iconFile.name:null,pluginId=z.db.generatePluginID(name),rev;try{rev=(await db.get(pluginId))._rev}catch(e){rev=void 0}let doc={_id:pluginId,_rev:rev,...metadata,name,version,hash,description,source};iconFileName&&(doc.iconFileName=iconFileName),source&&(doc={...doc,source});let write=async()=>{let e=await db.put(doc);return await z.events.plugin.imported(doc),{...doc,_rev:e.rev}};return rev?await write():await bs(write)}async function Jx(e){let t=z.tenancy.getGlobalDB();try{let r=await t.get(e),a=z.objectStore.getPluginS3Dir(r.name);await z.objectStore.deleteFolder(z.objectStore.ObjectStoreBuckets.PLUGINS,a),await t.remove(e,r._rev),await z.events.plugin.deleted(r),await Is()}catch(r){let a=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${a}`)}}async function Xx(){let e=z.tenancy.getGlobalDB();try{let r=(await e.allDocs(z.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await Ss(r)}catch(t){z.logging.logAlert("Unable to retrieve plugins for quota check",t)}}var Ye={};w(Ye,{fetch:()=>eO,fetchValues:()=>tO,isEncryptionKeyAvailable:()=>Zx,isValid:()=>Wf,remove:()=>aO,update:()=>rO});var Aa=require("@budibase/types"),Qf=require("@budibase/backend-core");function Zx(){return!!Qf.env.ENCRYPTION_KEY}async function eO(){let e=await Rt.get();return Object.keys(e.variables)}async function tO(e){let r=(await Rt.get()).variables,a={};for(let[n,o]of Object.entries(r))switch(e){case Aa.AppEnvironment.DEVELOPMENT:a[n]=o.development;break;case Aa.AppEnvironment.PRODUCTION:default:a[n]=o.production;break}return a}async function jf(e){if(!(await je.cache.getCachedLicense()).features.includes(Aa.Feature.ENVIRONMENT_VARIABLES))throw new Error("User does not have access to environment variables feature.");let r=await Rt.get();r.variables=e(r.variables),await Rt.update(r)}async function rO(e,t){if(Wf(e))await jf(a=>(a[e]=t,a));else throw new Error("Variable name has characters that are not allowed")}async function aO(e){await jf(t=>(delete t[e],t))}function Wf(e){return/^[a-zA-Z0-9-_]+$/.test(e)}var At={};w(At,{definitions:()=>mO,download:()=>fO,fetch:()=>dO,write:()=>cO});var On=require("@budibase/types");var K=require("@budibase/backend-core"),Ne=require("@budibase/types");var $f=require("memorystream"),Kf=new K.sql.Sql(Ne.SqlClient.SQL_LITE);async function nO(e,t,r){let a={operation:Ne.Operation.READ,table:jt.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:Ne.SortOrder.DESCENDING,type:Ne.SortType.STRING}}},n=Kf._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 oO(e){return`${K.DocumentType.AUDIT_LOG}${K.SEPARATOR}${e}${K.SEPARATOR}${K.utils.newid()}`}async function Vf(e){e._id||(e._id=oO(e.timestamp)),e.type||(e.type=Ne.AUDIT_LOG_TYPE);try{let r=await K.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){K.logging.logAlert("Failed to write audit log",t)}}async function Ds(e,t,r){t||(t=1);let a=K.context.getAuditLogsDB();try{let n=9+1,o=await nO(e,t,n),s=jt.searchTable(),i=Kf.convertJsonStringColumns(s,await a.sql(o.sql,o.bindings)),p;i.length>n&&(p=i.pop());let m={rows:i,hasNextPage:!!p};return m.hasNextPage&&(m.bookmark=t+1),m}catch(n){if(n.status===404&&!r?.isRetry)return await sO(),await Yu(),await Ds(e,t,{isRetry:!0});throw n}}async function sO(){let e=K.context.getAuditLogsDB(),r=(await e.allDocs(K.db.getDocParams(K.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(a=>a.doc).filter(a=>a&&!a.type).map(a=>({...a,type:Ne.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}function Yf(e){let t=K.context.getAuditLogsDB(),r=new $f,a=t.dump(r,{filter:o=>{let s=o;if(!s._id?.startsWith(K.DocumentType.AUDIT_LOG))return!1;let i=!0,p=(m,f)=>{!m||m.length===0||(i=!!(i&&f&&m.includes(f)))};if(p(e.userIds,s.userId),p(e.appIds,s.appId),p(e.events,s.event),(e.startDate||e.endDate)&&(i=i&&s.timestamp>=e.startDate&&s.timestamp<=e.endDate),e.fullSearch){let m=JSON.stringify(o);i=i&&m.includes(e.fullSearch)}return i}}),n=new $f;return r.on("data",o=>{let s=JSON.parse(Buffer.from(o).toString());if(Array.isArray(s.docs)){let i="";for(let p of s.docs)i+=JSON.stringify(p)+`
|
|
38
|
+
`;n.write(i)}}),r.on("end",()=>{n.end()}),{promise:a,stream:n}}var le=require("@budibase/backend-core");var xn=require("@budibase/types"),ba=require("@budibase/string-templates"),Ia=require("@budibase/backend-core"),uO=Ia.constants.MIN_VALID_DATE.toISOString(),pO=Ia.constants.MAX_VALID_DATE.toISOString();function Ns(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||uO,e.endDate=e.endDate||pO),e}async function Hf(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(a=>Ia.db.getProdAppID(a)));let t={};function r(a,n){n?.length&&(t.oneOf={...t.oneOf,[a]:n})}return r("userId",e.userIds),r("appId",e.appIds),r("event",e.events),e.fullSearch&&(t.fuzzyOr=!0,t.fuzzy={name:e.fullSearch,fallback:e.fullSearch}),(e.startDate||e.endDate)&&(e=Ns(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}function Bs(e,t,r){let a={_id:e,status:xn.AuditLogResourceStatus.DELETED};switch(t){case"app":a.name=r?.appName;break;case"user":a.email=r?.email;break}return a}function Ms(e){let t=(0,ba.findHBSBlocks)(e);for(let r of t){let a=` "${r}"`;e=e.replace(e.includes(a)?a:` ${r}`,""),e=(0,ba.processStringSync)(e,{})}return e}function zf(e,t){let r=xn.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let a=(0,ba.processStringSync)(r,t);return a.includes('""')&&(a=Ms(r)),a}async function cO(e,t,r){if(!await hn()||!le.utils.isAudited(e))return;let a=zf(e,t),n=new Date;r?.timestamp&&(n=new Date(r.timestamp));let o={timestamp:n.toISOString(),event:e,name:a,userId:r?.userId||On.AuditLogSystemUser,metadata:{...t,...r?.hostInfo}},s={};try{if(r?.appId){o.appId=le.db.getProdAppID(r.appId);let i=await le.cache.app.getAppMetadata(r.appId);"name"in i&&(s.appName=i.name)}if(r?.userId){let i=await le.users.getById(r?.userId);s.email=i.email}}catch(i){le.logging.logAlert("Failed to retrieve fallback information for audit log",i)}return o.fallback=s,await Vf(o)}async function lO(e){let t=e.map(i=>i.userId),a=e.filter(i=>i.appId).map(i=>le.db.getDevAppID(i.appId)),n=await le.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),o=await le.db.getAppsByIDs([...new Set(a)]),s=[];for(let i of e){let p=n.find(h=>h?._id===i.userId),m=o.find(h=>le.db.isSameAppID(h?.appId,i.appId)),f={event:i.event,timestamp:i.timestamp,name:i.name,metadata:i.metadata,user:p||Bs(i.userId,"user",i.fallback)};i.appId&&(f.app=m||Bs(i.appId,"app",i.fallback)),s.push(f)}return s}async function dO(e){if(!await hn())throw new Error("Audit logs not available - license required.");let t=await Hf(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await Ds(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await lO(r.rows)}}function fO(e){return e=Ns(e),Yf(e)}function mO(){let e=Object.entries(On.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=Ms(r[1]);return t}var Cn={};w(Cn,{applications:()=>Qs,roles:()=>ks,users:()=>Gs});var Gs={};w(Gs,{roleCheck:()=>hO});function gO(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 hO(e,t){return await tt()||gO(e,t),e}var ks={};w(ks,{assign:()=>yO,unAssign:()=>AO});var Sa=require("@budibase/backend-core");async function yO(e,t){if(!await tt())throw new Error("Unable to assign roles - license required.");let r=await Ve.bulkGet(e);for(let a of r){if(t.role&&t.role.roleId){let n=Sa.db.getProdAppID(t.role.appId);a.roles[n]=t.role.roleId}if(t.appBuilder){let n=Sa.db.getProdAppID(t.appBuilder.appId),o=a.builder?.apps||[];a.builder={apps:o.concat([n])}}t.builder&&(a.builder={global:!0}),t.admin&&(a.admin={global:!0}),a.roles}await Ve.bulkUpdate(r)}async function AO(e,t){if(!await tt())throw new Error("Unable to un-assign roles - license required.");let r=await Ve.bulkGet(e);for(let a of r){if(t.role){let n=Sa.db.getProdAppID(t.role?.appId);a.roles[n]===t.role.roleId&&delete a.roles[n]}if(t.appBuilder&&a.builder?.apps){let n=Sa.db.getProdAppID(t.appBuilder.appId);a.builder.apps=a.builder.apps.filter(o=>o!==n)}t.builder&&a.builder&&delete a.builder,t.admin&&a.admin&&delete a.admin}}var Qs={};w(Qs,{buildExportFn:()=>IO,buildImportFn:()=>bO});var Fs=require("@budibase/backend-core");function bO(e){return async(t,r)=>{await tt()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await Fs.context.doInAppContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}function IO(e){return async(t,r)=>{await tt()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:a,excludeRows:n}=t.request.body;await Fs.context.doInAppContext(t.params.appId,async()=>{t.request.body={encryptPassword:a,excludeRows:n},t.query.appId=t.params.appId,await e(t),await r()})}}var He=require("@budibase/backend-core"),ue=require("@budibase/types");var Ws=require("@budibase/backend-core"),Jf;function Xf(){Jf=new Ws.queue.BudibaseQueue(Ws.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}function qt(){return Jf}var Zf=require("path"),em=P(require("fs"));async function $s(e,t={}){return ve.storeAppBackupMetadata(e,t)}function tm(e){let t=new Date().toISOString();switch(e){case ue.AppBackupStatus.COMPLETE:case ue.AppBackupStatus.FAILED:return{timestamp:t,finishedAt:t};case ue.AppBackupStatus.STARTED:return{timestamp:t,startedAt:t};case ue.AppBackupStatus.PENDING:return{timestamp:t,createdAt:t}}}async function SO(e,t,r,a){let n=await Ln(e);return await ve.storeAppBackupMetadata({...n,...tm(t),contents:r,status:t,type:ue.AppBackupType.BACKUP},{filename:a,docId:e})}async function wO(e,t,r){let a=await Ln(e);return await ve.storeAppBackupMetadata({...a,...tm(r),status:r,type:ue.AppBackupType.RESTORE,trigger:ue.AppBackupTrigger.MANUAL},{docId:e,docRev:t})}async function Ln(e){return ve.getAppBackupMetadata(e)}async function TO(e,t){return ve.updateAppBackupMetadata(e,t)}async function vO(e){let t=await ve.getAppBackupMetadata(e);return t.filename&&await He.objectStore.deleteFile(He.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),ve.deleteAppBackupMetadata(e)}async function EO(e,t){return ve.fetchAppBackups(e,t)}async function rm(e){let t=await ve.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let r=await He.objectStore.getReadStream(He.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}async function RO(e){let{stream:t}=await rm(e),r=(0,Zf.join)(He.objectStore.budibaseTempDir(),He.utils.newid()),a=em.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 _O(e,t,r={}){let a;try{a=await $s({appId:e,trigger:t,timestamp:new Date().toISOString(),status:ue.AppBackupStatus.PENDING,type:ue.AppBackupType.BACKUP,...r})}catch(n){if(n.status===409)return;throw n}return await qt().add({docId:a.id,docRev:a.rev,appId:e,export:{trigger:t,...r}}),await He.events.backup.appBackupTriggered(e,a.id,ue.AppBackupType.BACKUP,t,r?.name),a.id}async function xO(e,t,r,a){let n=await Ln(t),o;try{o=await $s({appId:e,timestamp:new Date().toISOString(),status:ue.AppBackupStatus.PENDING,type:ue.AppBackupType.RESTORE,createdBy:a})}catch(s){if(s?.status===409)return;throw s}return await qt().add({appId:e,docId:o.id,docRev:o.rev,import:{nameForBackup:r,backupId:t,createdBy:a}}),{restoreId:o.id,metadata:n}}var OO={isEnabled:cs,triggerAppRestore:ye(xO),triggerAppBackup:ye(_O),getBackupDownloadStream:ye(rm),downloadAppBackup:ye(RO),fetchAppBackups:ye(EO),storeAppBackupMetadata:ye($s),updateBackupStatus:ye(SO),updateRestoreStatus:ye(wO),getAppBackup:ye(Ln),updateAppBackup:ye(TO),deleteAppBackup:ye(vO)},ot=OO;var Vs={};w(Vs,{init:()=>Ks});var J=require("@budibase/backend-core");var Be=require("@budibase/types");var dr=P(require("fs"));async function Ks(e){qt().process(async t=>{let r=t.data;try{if(r.export)return PO(t,e);if(r.import)return LO(t,e)}catch(a){J.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,a)}})}async function CO(e){await J.db.getDB(e,{skip_setup:!0}).destroy()}async function am(e,t,r,a){let n=J.db.getDevAppID(r),o=J.db.getProdAppID(r),s=new Date().toISOString(),i=async(p,m)=>{a?.doc?await ot.updateBackupStatus(a.doc.id,p,m?.contents,m?.filename):await ot.storeAppBackupMetadata({appId:o,timestamp:s,trigger:e,status:p,name:a?.name,type:Be.AppBackupType.BACKUP,contents:m?.contents,createdBy:a?.createdBy},{filename:m?.filename})};try{let p=await a.processing.exportAppFn(n,{tar:!0}),m=await a.processing.statsFn(n),f=`${o}/backup-${s}.tar.gz`,h=J.objectStore.ObjectStoreBuckets.BACKUPS,g=dr.default.createReadStream(p);await J.objectStore.streamUpload({bucket:h,filename:f,stream:g,extra:{type:"application/gzip",metadata:{name:a?.name,trigger:e,timestamp:s,appId:o}}}),await i(Be.AppBackupStatus.COMPLETE,{filename:f,contents:m}),dr.default.existsSync(p)&&dr.default.rmSync(p)}catch(p){J.logging.logAlert("App backup error",p),await i(Be.AppBackupStatus.FAILED)}}async function LO(e,t){let r=e.data,a=r.appId,n=r.import.backupId,o=r.import.nameForBackup,s=r.import.createdBy,i=J.tenancy.getTenantIDFromAppID(a);return J.tenancy.doInTenant(i,async()=>{let p=J.db.getDevAppID(a),{rev:m}=await ot.updateRestoreStatus(r.docId,r.docRev,Be.AppBackupStatus.STARTED);await am(Be.AppBackupTrigger.RESTORING,i,a,{processing:t,createdBy:s,name:o});let f=await ot.downloadAppBackup(n);await CO(p);let h=Be.AppBackupStatus.COMPLETE;try{await t.importAppFn(p,J.db.getDB(p),{file:{type:"application/gzip",path:f},key:f})}catch(g){J.logging.logAlert("App restore error",g),h=Be.AppBackupStatus.FAILED}await ot.updateRestoreStatus(r.docId,m,h),dr.default.existsSync(f)&&dr.default.rmSync(f,{force:!0})})}async function PO(e,t){let r=e.data,a=r.appId,n=r.export.trigger,o=r.export.name,s=J.tenancy.getTenantIDFromAppID(a);await J.tenancy.doInTenant(s,async()=>{try{let{rev:i}=await ot.updateBackupStatus(r.docId,Be.AppBackupStatus.STARTED);return am(n,s,a,{processing:t,doc:{id:r.docId,rev:i},name:o})}catch(i){J.logging.logAlert("App backup error",i)}})}var UO=async e=>{Xf(),await Ks(e.processing)},Re={...ot,processing:Vs,init:UO,getBackupQueue:qt};var nm=async e=>{e.backups&&await Re.init(e.backups)};var fe={};w(fe,{create:()=>RM,find:()=>EM,get:()=>vM,remove:()=>xM,update:()=>_M});var RA=P(Fi()),st=require("@budibase/backend-core");var _A=require("@budibase/types");async function vM(e){let t=st.tenancy.getGlobalDB(),r=new st.db.QueryBuilder(t.name,_A.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 EM(e){return await st.users.getById(e)}async function RM(e){let t=await Ve.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new st.HTTPError("User is already synched",409);e={...t,scimInfo:(0,RA.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await Ve.save(e,{requirePassword:!1})}async function _M(e,t){return await Ve.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}async function xM(e){return await Ve.destroy(e)}var Ar={};w(Ar,{create:()=>OM});var xA=P(Fi());var OA=require("@budibase/backend-core");async function OM(e){let t=await ho(e.name),r;if(!t)r=(await j.save(e)).id;else{if(t.scimInfo?.isSync)throw new OA.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,xA.default)(t.scimInfo,e.scimInfo),await j.save(t)}return await j.get(r)}var Nt={};w(Nt,{logRequest:()=>CM,logResponse:()=>LM});var Qi=require("@budibase/backend-core");async function CM(e){Qi.logging.logWarn("SCIM request log",e)}async function LM(e){Qi.logging.logWarn("SCIM response error",e)}var Yi={};w(Yi,{doInScimContext:()=>Wi,feature:()=>W,internalGroupOnly:()=>Kn,licenseAuth:()=>PA,licensing:()=>CA,requireSCIM:()=>$i,scimGroupOnly:()=>Ea,scimUserOnly:()=>va});var bt=require("@budibase/backend-core");var Wn=require("@budibase/types"),PM=(e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(bt.env.SELF_HOSTED&&bt.env.DEFAULT_LICENSE)return t.user.license=Ao,r();t.user.license=await je.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(bt.utils.isServingApp(t)||bt.utils.isServingBuilder(t)||bt.utils.isServingBuilderPreview(t)||bt.utils.isPublicApiRequest(t))&&await Ke.usageLimitIsExceeded(Wn.StaticQuotaName.USERS,Wn.QuotaUsageType.STATIC)}return r()},CA=PM;var W={};w(W,{requireFeature:()=>UM,requireFeatures:()=>qM});var UM=e=>async(t,r)=>{await gn(e),await r()},qM=(...e)=>async(t,r)=>{await ps(e),await r()};var $n=require("@budibase/backend-core");var Wi=async(e,t)=>($n.env.DISABLE_SCIM_CALLS||await Nt.logRequest({...e.request.toJSON(),body:e.request.body}),await $n.context.doInScimContext(async()=>{let r=await t();return await Nt.logResponse({...e.response.toJSON(),body:e.response.body}),r}));var $i=async(e,t)=>{await fs(),await t()};var LA=require("@budibase/backend-core");var va=e=>Ki(LA.users.getById,e,!0),Ea=e=>Ki(M.get,e,!0),Kn=e=>Ki(M.get,e,!1);function Ki(e,t,r){return async(a,n)=>{let o=a.params[t];return typeof o!="string"&&a.throw(404),!!(await e(o)).scimInfo?.isSync!==r&&a.throw(404),n()}}var Ra=require("@budibase/backend-core");var Vi=require("dd-trace");async function PA(e,t){await Vi.tracer.trace("licenseAuth",async r=>{let a=e.request.headers[Ra.constants.Header.LICENSE_KEY];Array.isArray(a)&&(a=a[0]),r.addTags({licenseKey:a}),a||e.throw(403,"License key not provided");let n=await os(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"),Vi.tracer.setUser({id:"anonymous",tenantId:n.tenantId}),await Ra.context.doInSelfHostTenantUsingCloud(n.tenantId,async()=>{await Ra.context.doInLicenseContext(n,async()=>{await t()})})})}var au={};w(au,{appBackups:()=>Ab,auditLogs:()=>ib,environmentVariables:()=>ZA,groups:()=>WA,scim:()=>Yb,users:()=>Zb});async function UA(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let a=await Ut(t._id);t.roles=a.roles,t.scimInfo=a.scimInfo}let r=await lr(t);e.body={_id:r.id,_rev:r.rev}}async function qA(e){let t=e.params.groupId,r=e.request.body.add,a=e.request.body.remove;(r&&!Array.isArray(r)||a&&!Array.isArray(a))&&e.throw(400,"Must supply a list of users to add or to remove");let n,o;r&&(n=await Ts(t,r)),a&&(o=await vs(t,a)),e.body={added:n,removed:o}}async function DA(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 Es(t,{appsToAdd:r,appsToRemove:a})}async function NA(e){e.body={data:await ha()}}async function BA(e){let{groupId:t,rev:r}=e.params;try{await ws(t,r),e.body={message:"Group deleted successfully"}}catch(a){e.throw(a.status,a)}}async function MA(e){try{e.body=await Ut(e.params.groupId)}catch(t){e.throw(t.status,t)}}async function GA(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,p=!!i;e.body={users:s.slice(0,t),bookmark:i,hasNextPage:p}}async function kA(e){let{groupId:t,appId:r}=e.params;await Rs(t,r),e.body={message:"Group app builder access updated."}}async function FA(e){let{groupId:t,appId:r}=e.params;await _s(t,r),e.body={message:"group app builder access removed."}}var QA=P(require("@koa/router")),be=P(require("joi"));var _e=require("@budibase/types"),ze=require("@budibase/backend-core"),jA=new QA.default;function NM(){return ze.auth.joiValidator.body(be.default.object({_id:be.default.string().optional(),_rev:be.default.string().optional(),color:be.default.string().required(),icon:be.default.string().required(),name:be.default.string().trim().required().max(50),role:be.default.string().optional(),users:be.default.array().optional(),apps:be.default.array().optional(),roles:be.default.object().optional(),createdAt:be.default.string().optional(),updatedAt:be.default.string().optional()}).required())}jA.post("/api/global/groups",ze.auth.adminOnly,W.requireFeature(_e.Feature.USER_GROUPS),NM(),UA).get("/api/global/groups",W.requireFeature(_e.Feature.USER_GROUPS),NA).delete("/api/global/groups/:groupId/:rev",W.requireFeature(_e.Feature.USER_GROUPS),ze.auth.adminOnly,Kn("groupId"),BA).get("/api/global/groups/:groupId",W.requireFeature(_e.Feature.USER_GROUPS),ze.auth.builderOrAdmin,MA).get("/api/global/groups/:groupId/users",W.requireFeature(_e.Feature.USER_GROUPS),ze.auth.builderOrAdmin,GA).post("/api/global/groups/:groupId/users",ze.auth.adminOnly,W.requireFeature(_e.Feature.USER_GROUPS),Kn("groupId"),qA).post("/api/global/groups/:groupId/apps",ze.auth.builderOrAdmin,W.requireFeature(_e.Feature.USER_GROUPS),DA).post("/api/global/groups/:groupId/app/:appId/builder",ze.auth.builderOrAdmin,W.requireFeatures(_e.Feature.USER_GROUPS,_e.Feature.APP_BUILDERS),kA).delete("/api/global/groups/:groupId/app/:appId/builder",ze.auth.builderOrAdmin,W.requireFeatures(_e.Feature.USER_GROUPS,_e.Feature.APP_BUILDERS),FA);var WA=jA;var Hi=require("@budibase/types");var zi=require("@budibase/backend-core");async function $A(e){e.body={encryptionKeyAvailable:Ye.isEncryptionKeyAvailable()}}async function KA(e){e.body={variables:await Ye.fetch()}}async function VA(e){let{name:t,production:r,development:a}=e.request.body;await Ye.update(t,{production:r,development:a});let n=[Hi.AppEnvironment.PRODUCTION];r!==a&&n.push(Hi.AppEnvironment.DEVELOPMENT),await zi.events.environmentVariable.created(t,n),e.body={message:`Environment variable "${t}" created.`}}async function YA(e){let{production:t,development:r}=e.request.body,a=e.params.varName;await Ye.update(a,{production:t,development:r}),e.body={message:`Environment variable "${a}" updated.`}}async function HA(e){let t=e.params.varName;await Ye.remove(t),await zi.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}var Bt=require("@budibase/backend-core"),JA=P(require("@koa/router")),_a=P(require("joi")),XA=new JA.default;function zA(){return Bt.auth.joiValidator.body(_a.default.object({name:_a.default.string().optional(),production:_a.default.string().required(),development:_a.default.string().required()}))}XA.get("/api/env/variables/status",Bt.auth.builderOrAdmin,$A).get("/api/env/variables",Bt.auth.builderOrAdmin,KA).post("/api/env/variables",Bt.auth.builderOrAdmin,zA(),VA).patch("/api/env/variables/:varName",Bt.auth.builderOrAdmin,zA(),YA).delete("/api/env/variables/:varName",Bt.auth.builderOrAdmin,HA);var ZA=XA;var Ji=require("@budibase/backend-core");async function eb(e){let t=e.request.body,r=await At.fetch(t);await Ji.events.auditLog.filtered(t),e.body=r}async function tb(e){let t=e.request.body,{stream:r}=At.download(t);await Ji.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}async function rb(e){e.body={events:At.definitions()}}var nb=require("@budibase/types"),Mt=require("@budibase/backend-core"),ob=P(require("@koa/router")),xe=P(require("joi"));function ab(){return Mt.auth.joiValidator.body(xe.default.object({userIds:xe.default.array().items(xe.default.string()).optional(),appIds:xe.default.array().items(xe.default.string()).optional(),events:xe.default.array().items(xe.default.string().valid(...Object.values(nb.Event))).optional(),startDate:xe.default.string().optional().allow(""),endDate:xe.default.string().optional().allow(""),fullSearch:xe.default.string().optional().allow(""),bookmark:xe.default.number()}))}var sb=new ob.default;sb.post("/api/global/auditlogs/search",Mt.auth.adminOnly,ab(),eb).get("/api/global/auditlogs/download",Mt.auth.adminOnly,Mt.middleware.querystringToBody,ab(),tb).get("/api/global/auditlogs/definitions",Mt.auth.adminOnly,rb);var ib=sb;var Xi=require("@budibase/types");var ub=require("@budibase/backend-core");async function br(e,t){await Kt.appExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}async function pb(e){let t=e.params.appId;await br(e,t);let r=e.request.body,a=e.user?._id,n=await Re.triggerAppBackup(t,Xi.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 cb(e){let t=e.params.appId;await br(e,t);let r=e.params.backupId,a=e.request.body.name,n=await Re.triggerAppRestore(t,r,a,e.user?._id);n||e.throw(500,"Unable to start restore."),await ub.events.backup.appBackupRestored(n.metadata),e.body={restoredId:n?.restoreId,message:"Restore triggered - process starting."}}async function lb(e){let t=e.params.appId;await br(e,t);let r=e.params.backupId;await Re.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}async function fb(e){let t=e.params.appId;await br(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(Xi.AppBackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await Re.fetchAppBackups(t,{paginate:!0,...r})}async function mb(e){let t=e.params.appId;await br(e,t);let r=e.params.backupId,a=e.request.body;e.body=await Re.updateAppBackup(r,a.name)}async function gb(e){let t=e.params.appId;await br(e,t);let r=e.params.backupId,{metadata:a,stream:n}=await Re.getBackupDownloadStream(r);e.attachment(`backup-${a.timestamp}.tar.gz`),e.body=n}var hb=P(require("@koa/router")),Gt=P(require("joi")),Vn=require("@budibase/types"),It=require("@budibase/backend-core"),yb=new hb.default;function kM(){return It.auth.joiValidator.body(Gt.default.object({trigger:Gt.default.string().valid(...Object.values(Vn.AppBackupTrigger)),type:Gt.default.string().valid(...Object.values(Vn.AppBackupType)),startDate:Gt.default.date(),endDate:Gt.default.date(),page:Gt.default.string()}))}yb.post("/api/apps/:appId/backups",It.auth.builderOrAdmin,pb).post("/api/apps/:appId/backups/search",It.auth.builderOrAdmin,kM(),fb).get("/api/apps/:appId/backups/:backupId/file",It.auth.builderOrAdmin,gb).patch("/api/apps/:appId/backups/:backupId",It.auth.builderOrAdmin,mb).delete("/api/apps/:appId/backups/:backupId",It.auth.builderOrAdmin,lb).post("/api/apps/:appId/backups/:backupId/import",It.auth.builderOrAdmin,cb);var Ab=yb;var Vb=P(require("@koa/router"));var Yn=require("scim-patch");var Ib=require("@budibase/backend-core");function bb(e,t){let r=e.request.query[t];if(r!==void 0)return+r}var Sb=async e=>{let t=bb(e,"pageSize")??20,r=bb(e,"startIndex"),a;e.request.query.filter&&(a=V.user.userFilters(e.request.query.filter));let n=await fe.get({pageSize:t,skip:r,filters:a});e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:n.total,Resources:n.users.map(V.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},wb=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await fe.find(t);e.body=V.user.toScimUserResponse(r)},Tb=async e=>{let t=V.user.fromScimUser(e.request.body);try{let r=await fe.create(t);e.body=V.user.toScimUserResponse(r)}catch(r){throw r instanceof Ib.EmailUnavailableError&&e.throw(409,"Email already in use"),r}};function FM(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 vb=async e=>{let t=await fe.find(e.params.id);t||e.throw(404);let r=V.user.toScimUserResponse(t),a=e.request.body;try{(0,Yn.patchBodyValidation)(a)}catch{}if(FM(a))return Zi(e);let n;try{n=(0,Yn.scimPatch)(r,a.Operations)}catch{}n||e.throw(500);let o=V.user.fromScimUser(n);await fe.update(o,{allowChangingEmail:!0}),e.body=V.user.toScimUserResponse(o)},Zi=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await fe.remove(t),e.status=204};var Gb=P(Mb()),kb=require("@budibase/shared-core"),Hn=require("scim-patch");var zn=require("scim2-parse-filter");function Fb(e,t){for(let r of t.split(","))delete e[r]}var Qb=async e=>{let r=(await j.fetch()).filter(o=>o.scimInfo?.isSync).map(V.group.toScimGroupResponse),{filter:a,excludedAttributes:n}=e.request.query;if(a){let o=(0,zn.filter)((0,zn.parse)(a));r=r.filter(o)}n&&r.forEach(o=>{Fb(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=V.group.fromScimGroup(e.request.body),r=await Ar.create(t);e.body=V.group.toScimGroupResponse(r)},Wb=async e=>{let{id:t}=e.params,r=await j.get(t),a=V.group.toScimGroupResponse(r),{excludedAttributes:n}=e.request.query;n&&Fb(a,n),e.body=a},$b=async e=>{let{id:t}=e.params,r=await j.get(t);await j.remove(t,r._rev),e.status=204},Kb=async e=>{let{id:t}=e.params,r=await j.get(t),a=V.group.toScimGroupResponse(r),n=e.request.body;try{(0,Hn.patchBodyValidation)(n)}catch{e.throw(400)}let{true:o,false:s}=(0,Gb.default)(n.Operations,i=>i.path==="members");if(s?.length){let i=(0,Hn.scimPatch)(a,s);i||e.throw(500);let p={...V.group.fromScimGroup(i),_rev:r._rev};await j.save(p)}if(o?.length){let i=[],p=[];for(let{op:m,value:f}of o)switch(m){case"add":case"Add":for(let h of f)i.push(await fe.find(h.value));break;case"remove":case"Remove":for(let h of f)p.push(await fe.find(h.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:kb.utils.unreachable(m)}i.length&&await j.addUsers(t,i.map(m=>m._id)),p.length&&await j.removeUsers(t,p.map(m=>m._id))}e.body=V.group.toScimGroupResponse(await j.get(t))};var xa=require("@budibase/types"),Ie=new Vb.default({prefix:"/api/global/scim/v2"});Ie.use($i);Ie.use(Wi);Ie.get("/users",Sb);Ie.get("/users/:id",va("id"),wb);Ie.post("/users",Tb);Ie.patch("/users/:id",va("id"),vb);Ie.delete("/users/:id",va("id"),Zi);Ie.get("/groups",Qb);Ie.post("/groups",W.requireFeature(xa.Feature.USER_GROUPS),jb);Ie.get("/groups/:id",W.requireFeature(xa.Feature.USER_GROUPS),Ea("id"),Wb);Ie.delete("/groups/:id",W.requireFeature(xa.Feature.USER_GROUPS),Ea("id"),$b);Ie.patch("/groups/:id",W.requireFeature(xa.Feature.USER_GROUPS),Ea("id"),Kb);var Yb=Ie;var Jb=P(require("@koa/router"));var eu=require("@budibase/backend-core");async function Hb(e){let{userId:t,appId:r}=e.params,a=await at.db.getUser(t);if(eu.users.isGlobalBuilder(a)){e.body={message:"User already admin - no permissions updated."};return}await at.addAppBuilder(a,r),e.body={message:`User "${a.email}" app builder access updated.`}}async function zb(e){let{userId:t,appId:r}=e.params,a=await at.db.getUser(t);if(eu.users.isGlobalBuilder(a)){e.body={message:"User already admin - no permissions removed."};return}await at.removeAppBuilder(a,r),e.body={message:`User "${a.email}" app builder access removed.`}}var tu=require("@budibase/types"),ru=require("@budibase/backend-core"),Xb=new Jb.default;Xb.post("/api/global/users/:userId/app/:appId/builder",ru.auth.builderOrAdmin,W.requireFeatures(tu.Feature.APP_BUILDERS),Hb).delete("/api/global/users/:userId/app/:appId/builder",ru.auth.builderOrAdmin,W.requireFeatures(tu.Feature.APP_BUILDERS),zb);var Zb=Xb;var V={};w(V,{group:()=>ou,user:()=>nu});var nu={};w(nu,{fromScimUser:()=>hG,toScimUserResponse:()=>fG,userFilters:()=>yG});var Jn=require("@budibase/types"),eI=require("scim2-parse-filter"),tI=require("@budibase/backend-core"),rI=require("@budibase/shared-core"),{unreachable:dG}=rI.utils,fG=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===Jn.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},mG=e=>!!e?.id;function gG(e){if(tI.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}var hG=e=>{let t=mG(e)?e:void 0,r=gG(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:dG(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?Jn.UserStatus.ACTIVE:Jn.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},yG=e=>{let t={equal:{}},r=(0,eI.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 ou={};w(ou,{fromScimGroup:()=>IG,toScimGroupResponse:()=>AG});var AG=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}))}),bG=e=>!!e?.id,IG=e=>{let t=bG(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 Ou={};w(Ou,{LLM:()=>Je,LLMRequest:()=>$,TableGeneration:()=>xu,agentHistoryTitleSystemPrompt:()=>LG,agentSystemPrompt:()=>CG,aiColumnSchemas:()=>Ru,aiTableResponseToTableSchema:()=>wu,appendAIColumns:()=>Tu,classifyText:()=>uu,cleanData:()=>pu,extractFileData:()=>RG,generateAIColumns:()=>Iu,generateCode:()=>OG,generateCronExpression:()=>cu,generateData:()=>Su,generateJs:()=>mu,generateSQL:()=>xG,generateTables:()=>bu,generationStructure:()=>Eu,getLLM:()=>La,getLLMConfig:()=>Au,getLLMOrThrow:()=>dI,normalizeContentType:()=>su,parseResponseFormat:()=>Zn,sanitiseToolName:()=>SG,searchWeb:()=>fu,sentimentAnalysis:()=>du,summarizeText:()=>Xn,tableDataStructuredOutput:()=>_u,translate:()=>lu});var Oa=require("@budibase/types");function SG(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 su(e){return e?e.includes("/")?e:{[Oa.SupportedFileType.PDF]:"application/pdf",[Oa.SupportedFileType.JPG]:"image/jpeg",[Oa.SupportedFileType.JPEG]:"image/jpeg",[Oa.SupportedFileType.PNG]:"image/png"}[e.toLowerCase()]||"application/octet-stream":"application/octet-stream"}var no=require("@budibase/types");var Xe=require("@budibase/backend-core"),uI=require("@budibase/types");var eo=P(require("openai"));var St=require("@budibase/types");var aI=require("@budibase/shared-core");var wt=P(require("dd-trace"));function iu(e,t){return t.map(r=>e[r]).join(" ")}var Je=class{constructor({model:t,apiKey:r,maxTokens:a}){this._model=t,this._apiKey=r,this._maxTokens=a??parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"300")}get model(){return this._model}get apiKey(){return this._apiKey}get maxTokens(){return this._maxTokens}async prompt(t){return await wt.default.trace("prompt",async()=>{let r=typeof t=="string"?new $().addUserMessage(t):t,{messages:a,tokensUsed:n}=await wt.default.trace("chatCompletion",()=>this.chatCompletion(r));return!a||a.length===0?{message:"",tokensUsed:n}:{message:a[a.length-1].content||"",tokensUsed:n}})}async chat(t){return await wt.default.trace("chat",async()=>await this.chatCompletion(t))}async*chatStream(t){yield*this.chatCompletionStream(t)}async summarizeText(t){return wt.default.trace("summarizeText",()=>this.prompt(Xn(t)))}async generateCronExpression(t){return wt.default.trace("generateCronExpression",()=>this.prompt(cu(t)))}async operation(t,r){return wt.default.trace("operation",a=>{a.addTags({operation:t.operation,rowId:r.id});let n=this.promptForOperation(t,r);return this.prompt(n)})}promptForOperation(t,r){let{operation:a,column:n,columns:o,language:s,categories:i,prompt:p}=t;switch(a){case St.AIOperationEnum.SUMMARISE_TEXT:return Xn(iu(r,o));case St.AIOperationEnum.CLEAN_DATA:return pu(r[n]);case St.AIOperationEnum.TRANSLATE:return lu(r[n],s);case St.AIOperationEnum.CATEGORISE_TEXT:if(!i)throw Error("No categories provided for categorise text operation. Please provide categories.");return uu(iu(r,o),i.split(","));case St.AIOperationEnum.SENTIMENT_ANALYSIS:return du(r[n]);case St.AIOperationEnum.PROMPT:return p;case St.AIOperationEnum.SEARCH_WEB:return fu(iu(r,o));default:throw aI.utils.unreachable(a)}}async generateJs(t,r){return await wt.default.trace("generateJs",async()=>{let{bindings:a=[],snippets:n=[]}=r||{};return await this.prompt(mu(a,n).addUserMessage(t))})}};var oI=require("@budibase/types"),gu=require("openai/helpers/zod");function Zn(e){if(e)return e==="text"?{type:"text"}:e==="json"?{type:"json_object"}:e}function nI(e){if(!e)return 0;let t=e.prompt_tokens;return e.completion_tokens*3+t}var Oe=class extends Je{constructor(r){super(r);this.client=this.getClient(r)}getClient(r){if(!r.apiKey)throw new Error("No OpenAI API key found");return new eo.default({apiKey:r.apiKey})}async uploadFile(r,a,n){let o=su(n);if(oI.ImageContentTypes.includes(o.toLowerCase())){let p;if(Buffer.isBuffer(r))p=r;else{let f=[];for await(let h of r)f.push(h);p=Buffer.concat(f)}let m=p.toString("base64");return`data:${o};base64,${m}`}let s=await(0,eo.toFile)(r,a);return(await this.client.files.create({file:s,purpose:"assistants"})).id}async chatCompletion(r){let a={model:this.model,messages:r.messages,max_tokens:this.maxTokens,response_format:Zn(r.format)};r.tools&&r.tools.length>0&&(a.tool_choice="auto",a.tools=r.tools.map(gu.zodFunction));let n=await this.client.chat.completions.create(a),o=n.choices[0]?.message;if(o?.tool_calls){r.addMessage(o);let s=[];for(let i of o.tool_calls){let p=r.findTool(i.function.name);if(!p)throw new Error(`Tool ${i.function.name} not found in prompt tools`);let m=JSON.parse(i.function.arguments);s.push(p.handler(m).then(f=>({role:"tool",tool_call_id:i.id,content:f})).catch(f=>(console.error(`[OPENAI TOOL ERROR] Tool ${i.function.name} failed in OpenAI handler:`,f),{role:"tool",tool_call_id:i.id,content:`Error: ${f.message}`})))}return r.addMessages(await Promise.all(s)),this.chatCompletion(r)}else{if(o?.content)return{messages:[...r.messages,{role:o.role,content:o.content}],tokensUsed:nI(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:Zn(r.format),stream:!0};r.tools&&r.tools.length>0&&(a.tool_choice="auto",a.tools=r.tools.map(gu.zodFunction));try{let n=await this.client.chat.completions.create(a),o=null,s="",i=null;for await(let m of n){let f=m.choices[0]?.delta;if(f){if(f.content&&(s+=f.content,yield{type:"content",content:f.content}),f.tool_calls&&f.tool_calls.length>0){let h=f.tool_calls[0];h.id?(o={id:h.id,name:h.function?.name||"",arguments:h.function?.arguments||""},yield{type:"tool_call_start",toolCall:{id:o.id,name:o.name,arguments:o.arguments}}):o&&h.function?.arguments&&(o.arguments+=h.function.arguments,yield{type:"tool_call_start",toolCall:{id:o.id,name:o.name,arguments:o.arguments}})}m.usage&&(i=m.usage)}}let p=i?nI(i):0;if(o){r.addMessage({role:"assistant",content:"",tool_calls:[{id:o.id,type:"function",function:{name:o.name,arguments:o.arguments}}]});let m=r.findTool(o.name);if(m)try{let f=JSON.parse(o.arguments),h=await m.handler(f);yield{type:"tool_call_result",toolResult:{id:o.id,result:h}},r.addMessage({role:"tool",tool_call_id:o.id,content:h}),yield*this.chatCompletionStream(r);return}catch(f){yield{type:"tool_call_result",toolResult:{id:o.id,result:`Error: ${f.message}`,error:f.message}},r.addMessage({role:"tool",tool_call_id:o.id,content:`Error: ${f.message}`}),yield*this.chatCompletionStream(r);return}else{let f=`Tool '${o.name}' not found`;yield{type:"tool_call_result",toolResult:{id:o.id,result:f,error:f}},r.addMessage({role:"tool",tool_call_id:o.id,content:f}),yield*this.chatCompletionStream(r);return}}s&&r.addMessage({role:"assistant",content:s}),yield{type:"done",messages:r.messages,tokensUsed:p}}catch(n){yield{type:"error",content:n.message}}}};var ee=require("@budibase/backend-core"),sI=require("@budibase/types");var hu=require("dd-trace"),to=class extends Je{async prompt(t){let r=await super.prompt(t);return r.tokensUsed&&await wn(r.tokensUsed),r}async chat(t){let r=await super.chat(t);return r.tokensUsed&&await wn(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 Oe({apiKey:ee.env.OPENAI_API_KEY,model:this.model,maxTokens:this.maxTokens}).uploadFile(t,r,a)}async uploadFileSelfHost(t,r,a){let n;if(Buffer.isBuffer(t))n=t;else{let p=[];for await(let m of t)p.push(m);n=Buffer.concat(p)}let o=n.toString("base64");if(a&&sI.ImageContentTypes.includes(a.toLowerCase()))return`data:image/jpeg;base64,${o}`;if(!ee.env.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(!this._apiKey){let p=await fn();if(!p)throw new Error("No license key found");this._apiKey=p}let s=await fetch(`${ee.env.BUDICLOUD_URL}/api/ai/upload-file`,{method:"POST",headers:{"Content-Type":"application/json",[ee.constants.Header.LICENSE_KEY]:this._apiKey},body:JSON.stringify({data:o,filename:r,contentType:a})});if(!s.ok)throw await ee.HTTPError.fromResponse(s);return(await s.json()).fileId}async chatCompletion(t){return ee.env.SELF_HOSTED?this.chatCompletionSelfHost(t):this.chatCompletionCloud(t)}async chatCompletionCloud(t){return await hu.tracer.trace("chatCompletionCloud",async()=>await new Oe({apiKey:ee.env.OPENAI_API_KEY,model:this.model,maxTokens:this.maxTokens}).chatCompletion(t))}async chatCompletionSelfHost(t){return await hu.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 fn();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 Oe({apiKey:ee.env.OPENAI_API_KEY,model:this.model,maxTokens:this.maxTokens}).chatCompletionStream(t)}async*chatCompletionStreamSelfHost(t){try{let r=await this.chatCompletionSelfHost(t);if(r.messages.length>0){let a=r.messages[r.messages.length-1];a.content&&(yield{type:"content",content:a.content})}yield{type:"done",messages:r.messages,tokensUsed:r.tokensUsed}}catch(r){yield{type:"error",content:r.message}}}};var Ca=require("dd-trace");var yu=P(require("@anthropic-ai/sdk"));function wG(e){if(!e)return 0;let t=e.input_tokens;return e.output_tokens*3+t}var ro=class extends Je{constructor(r){super(r);this.client=new yu.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:wG(a.usage)}}catch(a){throw a instanceof yu.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 pI=require("zod"),cI=require("openai/helpers/zod");var iI=require("openai"),ao=class extends Oe{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 iI.AzureOpenAI({apiKey:t.apiKey,apiVersion:"2024-10-01-preview",baseURL:t.baseUrl})}};var lI="gpt-4o-mini",TG={OpenAI:Oe,TogetherAI:Oe,AzureOpenAI:ao,Custom:Oe,Anthropic:ro,BudibaseAI:to};async function vG(){return await Ca.tracer.trace("getAIConfig",async e=>{let t={type:uI.ConfigType.AI,config:{}};if(!Xe.context.isSelfHostUsingCloud()){let a=await Xe.configs.getAIConfig();a&&(t=a)}await ms(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||lI,apiKey:r.apiKey,baseUrl:r.baseUrl}})}async function EG(){return Ca.tracer.trace("getSelfHostOpenAIKeyConfig",e=>{if(!Xe.env.SELF_HOSTED){e.addTags({enabled:!1,reason:"not self host"});return}if(!Xe.env.OPENAI_API_KEY){e.addTags({enabled:!1,reason:"no OPENAI_API_KEY"});return}return e.addTags({enabled:!0}),{provider:"OpenAI",model:lI,apiKey:Xe.env.OPENAI_API_KEY}})}async function Au(){return Ca.tracer.trace("getLLMConfig",async()=>await vG()||await EG())}async function La(e){return await Ca.tracer.trace("getLLM",async t=>{let{model:r,maxTokens:a}=e||{},n=await Au();if(!n){t.addTags({enabled:!1,reason:"no config found"});return}r&&(n.model=r),a&&(n.maxTokens=a);let o=TG[n.provider];if(!o){t.addTags({enabled:!1,reason:"no provider found",provider:n.provider});return}return new o(n)})}async function dI(){let e=await La();if(!e)throw new Xe.HTTPError("No available LLM configurations",500);return e}var $=class e{constructor(){this.messages=[];this.tools=[]}addTool(t){return this.tools.push(t),this}addTools(t){return this.tools.push(...t),this}findTool(t){return this.tools.find(r=>r.name===t)}withFormat(t){return t instanceof pI.z.ZodType?this.format=(0,cI.zodResponseFormat)(t,"key"):this.format=t,this}addMessage(t){return this.messages.push(t),this}addMessages(t){return this.messages.push(...t),this}addUserMessage(t){return this.messages.push({role:"user",content:t}),this}addSystemMessage(t){return this.messages.push({role:"system",content:t}),this}static fromRequest(t){let r=new e;return t.messages&&r.addMessages(t.messages),t.format&&r.withFormat(t.format),r}};var it=require("zod");function Xn(e,t){let r=`Summarize this text:
|
|
39
|
+
${e}`,a="";if(t)switch(t){case no.SummariseLength.SHORT:a="In 1-2 concise sentences, ";break;case no.SummariseLength.MEDIUM:a="In 2-3 paragraphs, ";break;case no.SummariseLength.LONG:a="In multiple detailed paragraphs, ";break}return new $().addUserMessage(`${a}${r}.
|
|
40
|
+
Only return the summary.`)}function RG(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=
|
|
44
|
+
File ID: ${t}`}],o=_G(e),s=it.z.object({data:it.z.array(o)});return new $().addMessages([{role:"user",content:n}]).withFormat(s)}function _G(e){let t={};for(let[r,a]of Object.entries(e))if(typeof a=="string")switch(a.toLowerCase()){case"string":t[r]=it.z.string();break;case"number":t[r]=it.z.number();break;case"boolean":t[r]=it.z.boolean();break;default:t[r]=it.z.string()}else t[r]=it.z.string();return it.z.object(t)}function uu(e,t){return new $().addUserMessage(`Return the category of this text: "${e}". Based on these categories: ${t.join(", ")}. Only return the category. Do not add any extra punctuation or fix spelling mistakes. It should exactly match one of the categories. `)}function pu(e){return new $().addUserMessage(`Clean the following string: "${e}". Remove any spelling mistakes or data issues. Only return the cleaned string itself and nothing else.`)}function xG(e,t){return new $().addUserMessage(`Given the table schema:
|
|
45
45
|
${t}
|
|
46
46
|
|
|
47
47
|
Generate a SQL query for the following request:
|
|
48
48
|
${e}.
|
|
49
|
-
Only provide the SQL.`)}function
|
|
49
|
+
Only provide the SQL.`)}function OG(e){return new $().addUserMessage(`Generate JavaScript code for the following request:
|
|
50
50
|
${e}.
|
|
51
|
-
Only provide the JS and nothing else.`)}function
|
|
52
|
-
${e}`)}function
|
|
51
|
+
Only provide the JS and nothing else.`)}function cu(e){return new $().addUserMessage(`Generate a node-cron compatible expression based on the following prompt. Return only the cron expression (without backticks), and if not possible return only 'Error generating cron' with a short explanation:
|
|
52
|
+
${e}`)}function lu(e,t){return new $().addUserMessage(`Translate the following text: "${e}" into ${t}. Only return the translation.`)}function du(e){return new $().addUserMessage(`Return the sentiment of this text: "${e}". Only return the sentiment.`)}function fu(e){return new $().addUserMessage(`Search the web for the following: "${e}". Only return the top results.`)}function mu(e,t){let r="You do not have access to any bindings in this request.";e&&e.length>0&&(r=`The bindings you have access to are:
|
|
53
53
|
|
|
54
54
|
${e.map(({readableBinding:n})=>`- $("${n}")`).join(`
|
|
55
55
|
`)}`);let a="You do not have access to any snippets in this request.";return t.length>0&&(a=`The snippets you have access to are:
|
|
@@ -144,7 +144,7 @@ a variable, it will be provided to you as a binding.
|
|
|
144
144
|
|
|
145
145
|
${a}
|
|
146
146
|
|
|
147
|
-
${r}`)}function
|
|
147
|
+
${r}`)}function bu(){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,7 +152,7 @@ Include a variety of column types: text, dropdown, date, number.
|
|
|
152
152
|
Add at least one formula column, one attachment, and one multi-attachment column across the tables.
|
|
153
153
|
Budibase handles reverse relationships and many-to-many links \u2014 never define join tables or reverse fields.
|
|
154
154
|
You may specify foreignColumnName, but do not create that field manually.
|
|
155
|
-
`;return new $().addSystemMessage(e)}function
|
|
155
|
+
`;return new $().addSystemMessage(e)}function Iu(){let e='Given the generated schema, add only one field of type "AI" to relevant tables to add value to the Budibase user.';return new $().addSystemMessage(e)}function Su(){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
158
|
`;return new $().addSystemMessage(e)}function CG(e){return`You are a helpful support agent who uses workflows to resolve user issues efficiently.
|
|
@@ -163,21 +163,22 @@ Avoid placeholder values like "foo" or "bar". Use real names, emails, etc., and
|
|
|
163
163
|
- When receiving truncated or paginated results, automatically make follow-up requests to retrieve all pages
|
|
164
164
|
- If you aren't entirely sure which tool to call, make sure to ask for confirmation rather than assume. If there's any ambiguity, get user confirmation.
|
|
165
165
|
- When a tool call fails, show the detailed error status and message in the UI to provide the user further information as to how to debug.
|
|
166
|
+
- When specifying a "limit" for a certain tool call related to the number of records, use at least 100. This helps prevent cutting off the list of results too short. If the number of results overflows the limit, make sure you tell the user there are more, and confirm if they want to fetch the rest before continuing.
|
|
166
167
|
|
|
167
168
|
|
|
168
169
|
User information is provided below for context:
|
|
169
170
|
|
|
170
171
|
\`\`\`
|
|
171
172
|
${JSON.stringify(e)}
|
|
172
|
-
\`\`\``}function
|
|
173
|
+
\`\`\``}function LG(){return`You will be provided with a set of history, a conversation between a user and an AI. Using this
|
|
173
174
|
information generate a title for the conversation, this should start with a capital letter and MUST be
|
|
174
|
-
less than five words.`}var Pa=require("@budibase/backend-core"),
|
|
175
|
+
less than five words.`}var Pa=require("@budibase/backend-core"),gI=require("@budibase/shared-core");var ut=require("@budibase/types"),fI=require("@budibase/backend-core");function wu(e){let t=[],r=[];for(let a of e.tables){let n=a.schema.reduce((o,s)=>{if(s.type===ut.FieldType.LINK){if(!r.includes(s.relationshipId)){let i={[ut.RelationshipType.MANY_TO_ONE]:ut.RelationshipType.ONE_TO_MANY,[ut.RelationshipType.ONE_TO_MANY]:ut.RelationshipType.MANY_TO_ONE,[ut.RelationshipType.MANY_TO_MANY]:ut.RelationshipType.MANY_TO_MANY},{reverseFieldName:p,relationshipId:m,...f}=s;o[s.name]={...f,fieldName:p,relationshipType:i[s.relationshipType]},r.push(m)}}else o[s.name]=s;return o},{});t.push({_id:fI.docIds.generateTableID(),name:a.name,primaryDisplay:a.primaryDisplay,schema:n})}return t}function Tu(e,t){let r=[];for(let a of e)r.push({...a,schema:{...a.schema,...t[a.name]?.reduce((n,o)=>(n[o.name]=o,n),{})}});return r}var T=require("@budibase/types"),A=require("zod"),pe=A.z.object({name:A.z.string().describe("A human readable name for the field. It MUST be alpha-numeric and capitalised.")}),vu=pe.extend({type:A.z.literal(T.FieldType.LINK),tableId:A.z.string().describe("This must match one of the generated table names"),reverseFieldName:A.z.string().describe("Only the *name* of the field that will appear in the foreign table. Budibase creates this automatically. Do not define the column yourself."),relationshipId:A.z.string().describe("The ID of the relationship. It must be used in pairs, paring many-to-ones and one-to-manys, or many-to-manys with each other.")}),PG=A.z.array(A.z.union([pe.extend({type:A.z.enum([T.FieldType.STRING,T.FieldType.NUMBER,T.FieldType.BOOLEAN,T.FieldType.LONGFORM]),constraints:A.z.object({presence:A.z.boolean()}).optional()}),vu.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."),vu.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."),vu.extend({relationshipType:A.z.enum([T.RelationshipType.MANY_TO_MANY])}).describe("Many to many relationship. Defines the initiating side of the relationship. Only this side should be defined. The reverse column will be created automatically."),pe.extend({type:A.z.literal(T.FieldType.OPTIONS),constraints:A.z.object({inclusion:A.z.array(A.z.string()).describe("The options for the field"),presence:A.z.boolean()})}).describe("A single option from closed set of options"),pe.extend({type:A.z.literal(T.FieldType.ARRAY),constraints:A.z.object({inclusion:A.z.array(A.z.string()).describe("The options for the field"),presence:A.z.boolean(),type:A.z.literal(T.JsonFieldSubType.ARRAY)}).describe("Multiple selected options from closed set of options")}),pe.extend({type:A.z.literal(T.FieldType.FORMULA),formula:A.z.string().describe(`
|
|
175
176
|
A JavaScript expression using only previously defined fields.
|
|
176
177
|
Reference fields using $("Field name"). Must end with: return ...
|
|
177
178
|
Example: return $("Score") + $("Weight")
|
|
178
|
-
`),responseType:A.z.enum([T.FieldType.STRING,T.FieldType.NUMBER,T.FieldType.BOOLEAN,T.FieldType.DATETIME])}).describe("Define these types after the other types"),pe.extend({type:A.z.literal(T.FieldType.DATETIME),ignoreTimezones:A.z.boolean()}).describe("A datetime field, storing date and time"),pe.extend({type:A.z.literal(T.FieldType.DATETIME),ignoreTimezones:A.z.boolean(),timeOnly:A.z.literal(!0)}).describe("A time only field"),pe.extend({type:A.z.literal(T.FieldType.DATETIME),ignoreTimezones:A.z.boolean(),dateOnly:A.z.literal(!0)}).describe("A date only field"),pe.extend({type:A.z.literal(T.FieldType.ATTACHMENT_SINGLE),subtype:A.z.literal(T.AttachmentSubType.IMAGE)}).describe("Single image column"),pe.extend({type:A.z.literal(T.FieldType.ATTACHMENT_SINGLE)}).describe("Single attachment column. It stores a single document: pdf, word, etc. Use an appropriate name for the column, like 'Invoice', 'Document', etc."),pe.extend({type:A.z.literal(T.FieldType.ATTACHMENTS),subtype:A.z.literal(T.AttachmentSubType.IMAGE)}).describe("Multiple images column. Use an appropiate name for the columns, like 'Gallery', 'Photos', etc."),pe.extend({type:A.z.literal(T.FieldType.ATTACHMENTS)}).describe("Multiple attachments column. It might hold different kind of documents mixed up: pdf, txt, etc. Use an appropiate name for the columns, like 'Invoices', 'Documents', 'Attachments', etc.")])),
|
|
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"),pe.extend({type:A.z.literal(T.FieldType.DATETIME),ignoreTimezones:A.z.boolean()}).describe("A datetime field, storing date and time"),pe.extend({type:A.z.literal(T.FieldType.DATETIME),ignoreTimezones:A.z.boolean(),timeOnly:A.z.literal(!0)}).describe("A time only field"),pe.extend({type:A.z.literal(T.FieldType.DATETIME),ignoreTimezones:A.z.boolean(),dateOnly:A.z.literal(!0)}).describe("A date only field"),pe.extend({type:A.z.literal(T.FieldType.ATTACHMENT_SINGLE),subtype:A.z.literal(T.AttachmentSubType.IMAGE)}).describe("Single image column"),pe.extend({type:A.z.literal(T.FieldType.ATTACHMENT_SINGLE)}).describe("Single attachment column. It stores a single document: pdf, word, etc. Use an appropriate name for the column, like 'Invoice', 'Document', etc."),pe.extend({type:A.z.literal(T.FieldType.ATTACHMENTS),subtype:A.z.literal(T.AttachmentSubType.IMAGE)}).describe("Multiple images column. Use an appropiate name for the columns, like 'Gallery', 'Photos', etc."),pe.extend({type:A.z.literal(T.FieldType.ATTACHMENTS)}).describe("Multiple attachments column. It might hold different kind of documents mixed up: pdf, txt, etc. Use an appropiate name for the columns, like 'Invoices', 'Documents', 'Attachments', etc.")])),Eu=A.z.object({tables:A.z.array(A.z.object({name:A.z.string(),schema:PG,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 Ru(e){let t=A.z.object({});for(let r of e){let a=Object.values(r.schema),n=[pe.extend({type:A.z.literal(T.FieldType.AI),operation:A.z.literal(T.AIOperationEnum.TRANSLATE),column:A.z.enum(a.filter(o=>[T.FieldType.STRING,T.FieldType.LONGFORM].includes(o.type)).map(o=>o.name)).describe("The columns to translate"),language:A.z.string()}).describe("This column will be autogenerated via AI to translate one column. Use it for reasonable cases, like translating descriptions or similar."),pe.extend({type:A.z.literal(T.FieldType.AI),operation:A.z.literal(T.AIOperationEnum.CATEGORISE_TEXT),columns:A.z.array(A.z.enum(a.filter(o=>[T.FieldType.STRING,T.FieldType.LONGFORM,T.FieldType.BOOLEAN,T.FieldType.NUMBER,T.FieldType.DATETIME].includes(o.type)).map(o=>o.name))).describe("The columns to be used as context"),categories:A.z.string().describe("CSV list of categories")}).describe("This column will be autogenerated via AI to categorise a row based on one or many columns.")];a.some(o=>o.type===T.FieldType.LONGFORM)&&n.push(pe.extend({type:A.z.literal(T.FieldType.AI),operation:A.z.literal(T.AIOperationEnum.SUMMARISE_TEXT),columns:A.z.array(A.z.enum(a.filter(o=>[T.FieldType.STRING,T.FieldType.LONGFORM].includes(o.type)).map(o=>o.name))).describe("Columns, from the current table, to be passed in the context. Use at least one.")}).describe("This column will be autogenerated via AI to summarise one or many columns.")),t=t.extend({[r.name]:A.z.array(A.z.union(n))})}return t}var k=require("zod"),mI=require("@budibase/shared-core"),q=require("@budibase/types");function _u(e){let t=k.z.object({});for(let r of e){let a={_id:k.z.string().describe("Unique ID for the row")},n=k.z.union([k.z.literal("https://picsum.photos/600/600").describe("For profile pictures and similar"),k.z.literal("https://picsum.photos/1920/1080").describe("For anything else")]),o=k.z.object({fileName:k.z.string(),extension:k.z.enum([".pdf",".txt"]),content:k.z.string().describe("Random content for the file")});for(let s of Object.values(r.schema)){let{type:i}=s;switch(i){case q.FieldType.STRING:case q.FieldType.LONGFORM:a[s.name]=k.z.string();break;case q.FieldType.NUMBER:case q.FieldType.BIGINT:a[s.name]=k.z.number();break;case q.FieldType.BOOLEAN:a[s.name]=k.z.boolean();break;case q.FieldType.DATETIME:a[s.name]=k.z.string().describe(`ISO datetime. Use realistic dates, based on today's date, ${new Date().toISOString()}`);break;case q.FieldType.ATTACHMENT_SINGLE:s.subtype===q.AttachmentSubType.IMAGE?a[s.name]=n:a[s.name]=o;break;case q.FieldType.ATTACHMENTS:s.subtype===q.AttachmentSubType.IMAGE?a[s.name]=k.z.array(n):a[s.name]=k.z.array(o),a[s.name]=a[s.name].describe("Between 2 and 5 items.");break;case q.FieldType.OPTIONS:a[s.name]=k.z.enum(s.constraints.inclusion);break;case q.FieldType.LINK:{let p=k.z.string().describe(`Match one of the _ids created for table "${s.tableId}"`);s.relationshipType===q.RelationshipType.ONE_TO_MANY?a[s.name]=k.z.array(p).describe("Array with a single item"):s.relationshipType===q.RelationshipType.MANY_TO_MANY&&(a[s.name]=k.z.array(p).describe("Array with a one or many items. You can repeat the same ids between rows"))}break;case q.FieldType.ARRAY:a[s.name]=k.z.array(k.z.enum(s.constraints.inclusion));break;case q.FieldType.AI:case q.FieldType.AUTO:case q.FieldType.SIGNATURE_SINGLE:case q.FieldType.BB_REFERENCE:case q.FieldType.JSON:case q.FieldType.FORMULA:case q.FieldType.INTERNAL:case q.FieldType.BARCODEQR:case q.FieldType.BB_REFERENCE_SINGLE:break;default:throw mI.utils.unreachable(i)}}t=t.extend({[r.name]:k.z.array(k.z.object(a))}).describe(`Each table should include at least a few items (min 3, max 18). The number of items should not be evenly distributed. Instead, follow natural relationships and usage patterns based on the tables nature. For example:
|
|
179
180
|
1. If we have posts and comments, there should be more posts than users, and more comments than posts.
|
|
180
181
|
2. If it's a ticketing system, there may be more tickets than users, and some users may have submitted several tickets.
|
|
181
182
|
3. In a CRM, there are fewer users than customers, and customers may have many deals.
|
|
182
|
-
4. In a project management tool, projects might have many tasks, and tasks might have multiple comments.`)}return t}var Ua=P(require("dd-trace")),
|
|
183
|
-
"${t}"`).withFormat(
|
|
183
|
+
4. In a project management tool, projects might have many tasks, and tasks might have multiple comments.`)}return t}var Ua=P(require("dd-trace")),xu=class e{constructor(t,r){this.llmFunctions={getTableStructure:async t=>Ua.default.trace("llm.getTableStructure",async()=>{let r=await this.llm.prompt(bu().addUserMessage(t).withFormat(Eu));try{let a=JSON.parse(r.message);return wu(a)}catch{throw new Pa.HTTPError("Error generating tables",500)}}),generateAIColumns:(t,r)=>Ua.default.trace("llm.generateAIColumns",async()=>this.generateAIColumns(t,r)),generateData:async(t,r)=>Ua.default.trace("llm.generateData",async()=>{let a=await this.llm.prompt(Su().addUserMessage(t).withFormat(_u(r)));try{return JSON.parse(a.message)}catch{throw new Pa.HTTPError("Error generating data",500)}})};this.llm=t,this.delegates=r}static async init(t){let r=await La({model:"gpt-4o",maxTokens:2e3});if(!r)throw new Pa.HTTPError("LLM not available",422);return new e(r,t)}async generate(t,r){return Ua.default.trace("tableGeneration.generate",async a=>{let n=await this.generateTables(t,r);return a.addTags({table_count:n.length}),n})}async generateTables(t,r){let a=await this.llmFunctions.getTableStructure(t),n=this.llmFunctions.generateAIColumns(t,a).then(i=>this.delegates.generateTablesDelegate(Tu(a,i))),o=await this.llmFunctions.generateData(t,a),s=await n;return await this.delegates.generateDataDelegate(o,r,gI.utils.toMap("name",a)),s}async generateAIColumns(t,r){let a=await this.llm.prompt(Iu().addUserMessage(`This is the initial user prompt that generated the given schema:
|
|
184
|
+
"${t}"`).withFormat(Ru(r)));try{return JSON.parse(a.message)}catch{throw new Pa.HTTPError("Error generating columns",500)}}};0&&(module.exports={Method,ai,api,auditLogs,automations,backups,branding,constants,environmentVariables,features,groups,init,licensing,logger,mappers,middleware,plugins,publicApi,quotas,scimGroups,scimUsers,sdk,users,utils});
|
package/dist/types/ai.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Message } from "@budibase/types";
|
|
1
|
+
import { Message, AgentChat } from "@budibase/types";
|
|
2
2
|
export interface LLMPromptResponse {
|
|
3
3
|
message: string;
|
|
4
4
|
tokensUsed: number;
|
|
@@ -8,7 +8,7 @@ export interface LLMFullResponse {
|
|
|
8
8
|
tokensUsed: number;
|
|
9
9
|
}
|
|
10
10
|
export interface LLMStreamChunk {
|
|
11
|
-
type: "content" | "tool_call_start" | "tool_call_result" | "done" | "error";
|
|
11
|
+
type: "content" | "tool_call_start" | "tool_call_result" | "done" | "error" | "chat_saved";
|
|
12
12
|
content?: string;
|
|
13
13
|
toolCall?: {
|
|
14
14
|
id: string;
|
|
@@ -21,5 +21,6 @@ export interface LLMStreamChunk {
|
|
|
21
21
|
error?: string;
|
|
22
22
|
};
|
|
23
23
|
messages?: Message[];
|
|
24
|
+
chat?: AgentChat;
|
|
24
25
|
tokensUsed?: number;
|
|
25
26
|
}
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"dist"
|
|
5
5
|
],
|
|
6
6
|
"license": "UNLICENSED",
|
|
7
|
-
"version": "3.12.
|
|
7
|
+
"version": "3.12.14",
|
|
8
8
|
"description": "Budibase Pro (Backend)",
|
|
9
9
|
"main": "dist/index.js",
|
|
10
10
|
"types": "dist/index.d.ts",
|
|
@@ -73,5 +73,5 @@
|
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
75
|
},
|
|
76
|
-
"gitHead": "
|
|
76
|
+
"gitHead": "dbe8dd62a6714a1bf0768542434fdeca2f81052b"
|
|
77
77
|
}
|