@budibase/pro 3.12.19 → 3.12.21
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 +27 -27
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
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,`{
|
|
1
|
+
"use strict";var xI=Object.create;var qa=Object.defineProperty;var LI=Object.getOwnPropertyDescriptor;var OI=Object.getOwnPropertyNames;var CI=Object.getPrototypeOf,PI=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})},Gu=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of OI(t))!PI.call(e,n)&&n!==r&&qa(e,n,{get:()=>t[n],enumerable:!(a=LI(t,n))||a.enumerable});return e};var P=(e,t,r)=>(r=e!=null?xI(CI(e)):{},Gu(t||!e||!e.__esModule?qa(r,"default",{value:e,enumerable:!0}):r,e)),UI=e=>Gu(qa({},"__esModule",{value:!0}),e);var Ja=u((Xk,vp)=>{"use strict";function OS(e,t){for(var r=-1,a=t.length,n=e.length;++r<a;)e[n+r]=t[r];return e}vp.exports=OS});var _o=u((Zk,Ep)=>{"use strict";var CS=typeof global=="object"&&global&&global.Object===Object&&global;Ep.exports=CS});var oe=u((e0,Rp)=>{"use strict";var PS=_o(),US=typeof self=="object"&&self&&self.Object===Object&&self,qS=PS||US||Function("return this")();Rp.exports=qS});var _t=u((t0,_p)=>{"use strict";var DS=oe(),NS=DS.Symbol;_p.exports=NS});var Cp=u((r0,Op)=>{"use strict";var xp=_t(),Lp=Object.prototype,BS=Lp.hasOwnProperty,MS=Lp.toString,Hr=xp?xp.toStringTag:void 0;function GS(e){var t=BS.call(e,Hr),r=e[Hr];try{e[Hr]=void 0;var a=!0}catch{}var n=MS.call(e);return a&&(t?e[Hr]=r:delete e[Hr]),n}Op.exports=GS});var Up=u((a0,Pp)=>{"use strict";var kS=Object.prototype,FS=kS.toString;function QS(e){return FS.call(e)}Pp.exports=QS});var mt=u((n0,Np)=>{"use strict";var qp=_t(),jS=Cp(),WS=Up(),$S="[object Null]",KS="[object Undefined]",Dp=qp?qp.toStringTag:void 0;function VS(e){return e==null?e===void 0?KS:$S:Dp&&Dp in Object(e)?jS(e):WS(e)}Np.exports=VS});var he=u((o0,Bp)=>{"use strict";function YS(e){return e!=null&&typeof e=="object"}Bp.exports=YS});var Gp=u((s0,Mp)=>{"use strict";var HS=mt(),zS=he(),JS="[object Arguments]";function XS(e){return zS(e)&&HS(e)==JS}Mp.exports=XS});var zr=u((i0,Qp)=>{"use strict";var kp=Gp(),ZS=he(),Fp=Object.prototype,ew=Fp.hasOwnProperty,tw=Fp.propertyIsEnumerable,rw=kp(function(){return arguments}())?kp:function(e){return ZS(e)&&ew.call(e,"callee")&&!tw.call(e,"callee")};Qp.exports=rw});var re=u((u0,jp)=>{"use strict";var aw=Array.isArray;jp.exports=aw});var Vp=u((p0,Kp)=>{"use strict";var Wp=_t(),nw=zr(),ow=re(),$p=Wp?Wp.isConcatSpreadable:void 0;function sw(e){return ow(e)||nw(e)||!!($p&&e&&e[$p])}Kp.exports=sw});var xo=u((c0,Hp)=>{"use strict";var iw=Ja(),uw=Vp();function Yp(e,t,r,a,n){var o=-1,s=e.length;for(r||(r=uw),n||(n=[]);++o<s;){var i=e[o];t>0&&r(i)?t>1?Yp(i,t-1,r,a,n):iw(n,i):a||(n[n.length]=i)}return n}Hp.exports=Yp});var Jr=u((l0,zp)=>{"use strict";function pw(e){return e}zp.exports=pw});var Xa=u((d0,Jp)=>{"use strict";function cw(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)}Jp.exports=cw});var Lo=u((f0,Zp)=>{"use strict";var lw=Xa(),Xp=Math.max;function dw(e,t,r){return t=Xp(t===void 0?e.length-1:t,0),function(){for(var a=arguments,n=-1,o=Xp(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),lw(e,this,i)}}Zp.exports=dw});var tc=u((m0,ec)=>{"use strict";function fw(e){return function(){return e}}ec.exports=fw});var Ee=u((g0,rc)=>{"use strict";function mw(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}rc.exports=mw});var Xr=u((h0,ac)=>{"use strict";var gw=mt(),hw=Ee(),yw="[object AsyncFunction]",Aw="[object Function]",bw="[object GeneratorFunction]",Iw="[object Proxy]";function Sw(e){if(!hw(e))return!1;var t=gw(e);return t==Aw||t==bw||t==yw||t==Iw}ac.exports=Sw});var oc=u((y0,nc)=>{"use strict";var ww=oe(),Tw=ww["__core-js_shared__"];nc.exports=Tw});var uc=u((A0,ic)=>{"use strict";var Oo=oc(),sc=function(){var e=/[^.]+$/.exec(Oo&&Oo.keys&&Oo.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function vw(e){return!!sc&&sc in e}ic.exports=vw});var Co=u((b0,pc)=>{"use strict";var Ew=Function.prototype,Rw=Ew.toString;function _w(e){if(e!=null){try{return Rw.call(e)}catch{}try{return e+""}catch{}}return""}pc.exports=_w});var lc=u((I0,cc)=>{"use strict";var xw=Xr(),Lw=uc(),Ow=Ee(),Cw=Co(),Pw=/[\\^$.*+?()[\]{}|]/g,Uw=/^\[object .+?Constructor\]$/,qw=Function.prototype,Dw=Object.prototype,Nw=qw.toString,Bw=Dw.hasOwnProperty,Mw=RegExp("^"+Nw.call(Bw).replace(Pw,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Gw(e){if(!Ow(e)||Lw(e))return!1;var t=xw(e)?Mw:Uw;return t.test(Cw(e))}cc.exports=Gw});var fc=u((S0,dc)=>{"use strict";function kw(e,t){return e?.[t]}dc.exports=kw});var gt=u((w0,mc)=>{"use strict";var Fw=lc(),Qw=fc();function jw(e,t){var r=Qw(e,t);return Fw(r)?r:void 0}mc.exports=jw});var Po=u((T0,gc)=>{"use strict";var Ww=gt(),$w=function(){try{var e=Ww(Object,"defineProperty");return e({},"",{}),e}catch{}}();gc.exports=$w});var Ac=u((v0,yc)=>{"use strict";var Kw=tc(),hc=Po(),Vw=Jr(),Yw=hc?function(e,t){return hc(e,"toString",{configurable:!0,enumerable:!1,value:Kw(t),writable:!0})}:Vw;yc.exports=Yw});var Uo=u((E0,bc)=>{"use strict";var Hw=800,zw=16,Jw=Date.now;function Xw(e){var t=0,r=0;return function(){var a=Jw(),n=zw-(a-r);if(r=a,n>0){if(++t>=Hw)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}bc.exports=Xw});var Za=u((R0,Ic)=>{"use strict";var Zw=Ac(),eT=Uo(),tT=eT(Zw);Ic.exports=tT});var qo=u((_0,Sc)=>{"use strict";var rT=Jr(),aT=Lo(),nT=Za();function oT(e,t){return nT(aT(e,t,rT),e+"")}Sc.exports=oT});var Zr=u((x0,wc)=>{"use strict";var sT=gt(),iT=sT(Object,"create");wc.exports=iT});var Ec=u((L0,vc)=>{"use strict";var Tc=Zr();function uT(){this.__data__=Tc?Tc(null):{},this.size=0}vc.exports=uT});var _c=u((O0,Rc)=>{"use strict";function pT(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}Rc.exports=pT});var Lc=u((C0,xc)=>{"use strict";var cT=Zr(),lT="__lodash_hash_undefined__",dT=Object.prototype,fT=dT.hasOwnProperty;function mT(e){var t=this.__data__;if(cT){var r=t[e];return r===lT?void 0:r}return fT.call(t,e)?t[e]:void 0}xc.exports=mT});var Cc=u((P0,Oc)=>{"use strict";var gT=Zr(),hT=Object.prototype,yT=hT.hasOwnProperty;function AT(e){var t=this.__data__;return gT?t[e]!==void 0:yT.call(t,e)}Oc.exports=AT});var Uc=u((U0,Pc)=>{"use strict";var bT=Zr(),IT="__lodash_hash_undefined__";function ST(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=bT&&t===void 0?IT:t,this}Pc.exports=ST});var Dc=u((q0,qc)=>{"use strict";var wT=Ec(),TT=_c(),vT=Lc(),ET=Cc(),RT=Uc();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=wT;Vt.prototype.delete=TT;Vt.prototype.get=vT;Vt.prototype.has=ET;Vt.prototype.set=RT;qc.exports=Vt});var Bc=u((D0,Nc)=>{"use strict";function _T(){this.__data__=[],this.size=0}Nc.exports=_T});var Yt=u((N0,Mc)=>{"use strict";function xT(e,t){return e===t||e!==e&&t!==t}Mc.exports=xT});var ea=u((B0,Gc)=>{"use strict";var LT=Yt();function OT(e,t){for(var r=e.length;r--;)if(LT(e[r][0],t))return r;return-1}Gc.exports=OT});var Fc=u((M0,kc)=>{"use strict";var CT=ea(),PT=Array.prototype,UT=PT.splice;function qT(e){var t=this.__data__,r=CT(t,e);if(r<0)return!1;var a=t.length-1;return r==a?t.pop():UT.call(t,r,1),--this.size,!0}kc.exports=qT});var jc=u((G0,Qc)=>{"use strict";var DT=ea();function NT(e){var t=this.__data__,r=DT(t,e);return r<0?void 0:t[r][1]}Qc.exports=NT});var $c=u((k0,Wc)=>{"use strict";var BT=ea();function MT(e){return BT(this.__data__,e)>-1}Wc.exports=MT});var Vc=u((F0,Kc)=>{"use strict";var GT=ea();function kT(e,t){var r=this.__data__,a=GT(r,e);return a<0?(++this.size,r.push([e,t])):r[a][1]=t,this}Kc.exports=kT});var ta=u((Q0,Yc)=>{"use strict";var FT=Bc(),QT=Fc(),jT=jc(),WT=$c(),$T=Vc();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=FT;Ht.prototype.delete=QT;Ht.prototype.get=jT;Ht.prototype.has=WT;Ht.prototype.set=$T;Yc.exports=Ht});var en=u((j0,Hc)=>{"use strict";var KT=gt(),VT=oe(),YT=KT(VT,"Map");Hc.exports=YT});var Xc=u((W0,Jc)=>{"use strict";var zc=Dc(),HT=ta(),zT=en();function JT(){this.size=0,this.__data__={hash:new zc,map:new(zT||HT),string:new zc}}Jc.exports=JT});var el=u(($0,Zc)=>{"use strict";function XT(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}Zc.exports=XT});var ra=u((K0,tl)=>{"use strict";var ZT=el();function ev(e,t){var r=e.__data__;return ZT(t)?r[typeof t=="string"?"string":"hash"]:r.map}tl.exports=ev});var al=u((V0,rl)=>{"use strict";var tv=ra();function rv(e){var t=tv(this,e).delete(e);return this.size-=t?1:0,t}rl.exports=rv});var ol=u((Y0,nl)=>{"use strict";var av=ra();function nv(e){return av(this,e).get(e)}nl.exports=nv});var il=u((H0,sl)=>{"use strict";var ov=ra();function sv(e){return ov(this,e).has(e)}sl.exports=sv});var pl=u((z0,ul)=>{"use strict";var iv=ra();function uv(e,t){var r=iv(this,e),a=r.size;return r.set(e,t),this.size+=r.size==a?0:1,this}ul.exports=uv});var tn=u((J0,cl)=>{"use strict";var pv=Xc(),cv=al(),lv=ol(),dv=il(),fv=pl();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=pv;zt.prototype.delete=cv;zt.prototype.get=lv;zt.prototype.has=dv;zt.prototype.set=fv;cl.exports=zt});var dl=u((X0,ll)=>{"use strict";var mv="__lodash_hash_undefined__";function gv(e){return this.__data__.set(e,mv),this}ll.exports=gv});var ml=u((Z0,fl)=>{"use strict";function hv(e){return this.__data__.has(e)}fl.exports=hv});var Do=u((eF,gl)=>{"use strict";var yv=tn(),Av=dl(),bv=ml();function rn(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new yv;++t<r;)this.add(e[t])}rn.prototype.add=rn.prototype.push=Av;rn.prototype.has=bv;gl.exports=rn});var yl=u((tF,hl)=>{"use strict";function Iv(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}hl.exports=Iv});var bl=u((rF,Al)=>{"use strict";function Sv(e){return e!==e}Al.exports=Sv});var Sl=u((aF,Il)=>{"use strict";function wv(e,t,r){for(var a=r-1,n=e.length;++a<n;)if(e[a]===t)return a;return-1}Il.exports=wv});var Tl=u((nF,wl)=>{"use strict";var Tv=yl(),vv=bl(),Ev=Sl();function Rv(e,t,r){return t===t?Ev(e,t,r):Tv(e,vv,r)}wl.exports=Rv});var No=u((oF,vl)=>{"use strict";var _v=Tl();function xv(e,t){var r=e==null?0:e.length;return!!r&&_v(e,t,0)>-1}vl.exports=xv});var Rl=u((sF,El)=>{"use strict";function Lv(e,t,r){for(var a=-1,n=e==null?0:e.length;++a<n;)if(r(t,e[a]))return!0;return!1}El.exports=Lv});var Bo=u((iF,_l)=>{"use strict";function Ov(e,t){return e.has(t)}_l.exports=Ov});var Mo=u((uF,xl)=>{"use strict";var Cv=gt(),Pv=oe(),Uv=Cv(Pv,"Set");xl.exports=Uv});var Go=u((pF,Ll)=>{"use strict";function qv(){}Ll.exports=qv});var an=u((cF,Ol)=>{"use strict";function Dv(e){var t=-1,r=Array(e.size);return e.forEach(function(a){r[++t]=a}),r}Ol.exports=Dv});var Pl=u((lF,Cl)=>{"use strict";var ko=Mo(),Nv=Go(),Bv=an(),Mv=1/0,Gv=ko&&1/Bv(new ko([,-0]))[1]==Mv?function(e){return new ko(e)}:Nv;Cl.exports=Gv});var ql=u((dF,Ul)=>{"use strict";var kv=Do(),Fv=No(),Qv=Rl(),jv=Bo(),Wv=Pl(),$v=an(),Kv=200;function Vv(e,t,r){var a=-1,n=Fv,o=e.length,s=!0,i=[],p=i;if(r)s=!1,n=Qv;else if(o>=Kv){var m=t?null:Wv(e);if(m)return $v(m);s=!1,n=jv,p=new kv}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}Ul.exports=Vv});var nn=u((fF,Dl)=>{"use strict";var Yv=9007199254740991;function Hv(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=Yv}Dl.exports=Hv});var Jt=u((mF,Nl)=>{"use strict";var zv=Xr(),Jv=nn();function Xv(e){return e!=null&&Jv(e.length)&&!zv(e)}Nl.exports=Xv});var Fo=u((gF,Bl)=>{"use strict";var Zv=Jt(),eE=he();function tE(e){return eE(e)&&Zv(e)}Bl.exports=tE});var Gl=u((hF,Ml)=>{"use strict";var rE=xo(),aE=qo(),nE=ql(),oE=Fo(),sE=aE(function(e){return nE(rE(e,1,oE,!0))});Ml.exports=sE});var Fl=u((yF,kl)=>{"use strict";var iE=ta();function uE(){this.__data__=new iE,this.size=0}kl.exports=uE});var jl=u((AF,Ql)=>{"use strict";function pE(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}Ql.exports=pE});var $l=u((bF,Wl)=>{"use strict";function cE(e){return this.__data__.get(e)}Wl.exports=cE});var Vl=u((IF,Kl)=>{"use strict";function lE(e){return this.__data__.has(e)}Kl.exports=lE});var Hl=u((SF,Yl)=>{"use strict";var dE=ta(),fE=en(),mE=tn(),gE=200;function hE(e,t){var r=this.__data__;if(r instanceof dE){var a=r.__data__;if(!fE||a.length<gE-1)return a.push([e,t]),this.size=++r.size,this;r=this.__data__=new mE(a)}return r.set(e,t),this.size=r.size,this}Yl.exports=hE});var aa=u((wF,zl)=>{"use strict";var yE=ta(),AE=Fl(),bE=jl(),IE=$l(),SE=Vl(),wE=Hl();function Xt(e){var t=this.__data__=new yE(e);this.size=t.size}Xt.prototype.clear=AE;Xt.prototype.delete=bE;Xt.prototype.get=IE;Xt.prototype.has=SE;Xt.prototype.set=wE;zl.exports=Xt});var na=u((TF,Xl)=>{"use strict";var Jl=Po();function TE(e,t,r){t=="__proto__"&&Jl?Jl(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}Xl.exports=TE});var Qo=u((vF,Zl)=>{"use strict";var vE=na(),EE=Yt();function RE(e,t,r){(r!==void 0&&!EE(e[t],r)||r===void 0&&!(t in e))&&vE(e,t,r)}Zl.exports=RE});var td=u((EF,ed)=>{"use strict";function _E(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}}ed.exports=_E});var jo=u((RF,rd)=>{"use strict";var xE=td(),LE=xE();rd.exports=LE});var Wo=u((oa,Zt)=>{"use strict";var OE=oe(),sd=typeof oa=="object"&&oa&&!oa.nodeType&&oa,ad=sd&&typeof Zt=="object"&&Zt&&!Zt.nodeType&&Zt,CE=ad&&ad.exports===sd,nd=CE?OE.Buffer:void 0,od=nd?nd.allocUnsafe:void 0;function PE(e,t){if(t)return e.slice();var r=e.length,a=od?od(r):new e.constructor(r);return e.copy(a),a}Zt.exports=PE});var $o=u((_F,id)=>{"use strict";var UE=oe(),qE=UE.Uint8Array;id.exports=qE});var on=u((xF,pd)=>{"use strict";var ud=$o();function DE(e){var t=new e.constructor(e.byteLength);return new ud(t).set(new ud(e)),t}pd.exports=DE});var Ko=u((LF,cd)=>{"use strict";var NE=on();function BE(e,t){var r=t?NE(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}cd.exports=BE});var er=u((OF,ld)=>{"use strict";function ME(e,t){var r=-1,a=e.length;for(t||(t=Array(a));++r<a;)t[r]=e[r];return t}ld.exports=ME});var sa=u((CF,fd)=>{"use strict";var GE=Ee(),dd=Object.create,kE=function(){function e(){}return function(t){if(!GE(t))return{};if(dd)return dd(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();fd.exports=kE});var Vo=u((PF,md)=>{"use strict";function FE(e,t){return function(r){return e(t(r))}}md.exports=FE});var sn=u((UF,gd)=>{"use strict";var QE=Vo(),jE=QE(Object.getPrototypeOf,Object);gd.exports=jE});var un=u((qF,hd)=>{"use strict";var WE=Object.prototype;function $E(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||WE;return e===r}hd.exports=$E});var Yo=u((DF,yd)=>{"use strict";var KE=sa(),VE=sn(),YE=un();function HE(e){return typeof e.constructor=="function"&&!YE(e)?KE(VE(e)):{}}yd.exports=HE});var bd=u((NF,Ad)=>{"use strict";function zE(){return!1}Ad.exports=zE});var ua=u((ia,tr)=>{"use strict";var JE=oe(),XE=bd(),wd=typeof ia=="object"&&ia&&!ia.nodeType&&ia,Id=wd&&typeof tr=="object"&&tr&&!tr.nodeType&&tr,ZE=Id&&Id.exports===wd,Sd=ZE?JE.Buffer:void 0,eR=Sd?Sd.isBuffer:void 0,tR=eR||XE;tr.exports=tR});var Ho=u((BF,vd)=>{"use strict";var rR=mt(),aR=sn(),nR=he(),oR="[object Object]",sR=Function.prototype,iR=Object.prototype,Td=sR.toString,uR=iR.hasOwnProperty,pR=Td.call(Object);function cR(e){if(!nR(e)||rR(e)!=oR)return!1;var t=aR(e);if(t===null)return!0;var r=uR.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Td.call(r)==pR}vd.exports=cR});var Rd=u((MF,Ed)=>{"use strict";var lR=mt(),dR=nn(),fR=he(),mR="[object Arguments]",gR="[object Array]",hR="[object Boolean]",yR="[object Date]",AR="[object Error]",bR="[object Function]",IR="[object Map]",SR="[object Number]",wR="[object Object]",TR="[object RegExp]",vR="[object Set]",ER="[object String]",RR="[object WeakMap]",_R="[object ArrayBuffer]",xR="[object DataView]",LR="[object Float32Array]",OR="[object Float64Array]",CR="[object Int8Array]",PR="[object Int16Array]",UR="[object Int32Array]",qR="[object Uint8Array]",DR="[object Uint8ClampedArray]",NR="[object Uint16Array]",BR="[object Uint32Array]",B={};B[LR]=B[OR]=B[CR]=B[PR]=B[UR]=B[qR]=B[DR]=B[NR]=B[BR]=!0;B[mR]=B[gR]=B[_R]=B[hR]=B[xR]=B[yR]=B[AR]=B[bR]=B[IR]=B[SR]=B[wR]=B[TR]=B[vR]=B[ER]=B[RR]=!1;function MR(e){return fR(e)&&dR(e.length)&&!!B[lR(e)]}Ed.exports=MR});var pn=u((GF,_d)=>{"use strict";function GR(e){return function(t){return e(t)}}_d.exports=GR});var cn=u((pa,rr)=>{"use strict";var kR=_o(),xd=typeof pa=="object"&&pa&&!pa.nodeType&&pa,ca=xd&&typeof rr=="object"&&rr&&!rr.nodeType&&rr,FR=ca&&ca.exports===xd,zo=FR&&kR.process,QR=function(){try{var e=ca&&ca.require&&ca.require("util").types;return e||zo&&zo.binding&&zo.binding("util")}catch{}}();rr.exports=QR});var ln=u((kF,Cd)=>{"use strict";var jR=Rd(),WR=pn(),Ld=cn(),Od=Ld&&Ld.isTypedArray,$R=Od?WR(Od):jR;Cd.exports=$R});var Jo=u((FF,Pd)=>{"use strict";function KR(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}Pd.exports=KR});var Xo=u((QF,Ud)=>{"use strict";var VR=na(),YR=Yt(),HR=Object.prototype,zR=HR.hasOwnProperty;function JR(e,t,r){var a=e[t];(!(zR.call(e,t)&&YR(a,r))||r===void 0&&!(t in e))&&VR(e,t,r)}Ud.exports=JR});var ar=u((jF,qd)=>{"use strict";var XR=Xo(),ZR=na();function e_(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):XR(r,i,p)}return r}qd.exports=e_});var Nd=u((WF,Dd)=>{"use strict";function t_(e,t){for(var r=-1,a=Array(e);++r<e;)a[r]=t(r);return a}Dd.exports=t_});var la=u(($F,Bd)=>{"use strict";var r_=9007199254740991,a_=/^(?:0|[1-9]\d*)$/;function n_(e,t){var r=typeof e;return t=t??r_,!!t&&(r=="number"||r!="symbol"&&a_.test(e))&&e>-1&&e%1==0&&e<t}Bd.exports=n_});var Zo=u((KF,Md)=>{"use strict";var o_=Nd(),s_=zr(),i_=re(),u_=ua(),p_=la(),c_=ln(),l_=Object.prototype,d_=l_.hasOwnProperty;function f_(e,t){var r=i_(e),a=!r&&s_(e),n=!r&&!a&&u_(e),o=!r&&!a&&!n&&c_(e),s=r||a||n||o,i=s?o_(e.length,String):[],p=i.length;for(var m in e)(t||d_.call(e,m))&&!(s&&(m=="length"||n&&(m=="offset"||m=="parent")||o&&(m=="buffer"||m=="byteLength"||m=="byteOffset")||p_(m,p)))&&i.push(m);return i}Md.exports=f_});var kd=u((VF,Gd)=>{"use strict";function m_(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}Gd.exports=m_});var Qd=u((YF,Fd)=>{"use strict";var g_=Ee(),h_=un(),y_=kd(),A_=Object.prototype,b_=A_.hasOwnProperty;function I_(e){if(!g_(e))return y_(e);var t=h_(e),r=[];for(var a in e)a=="constructor"&&(t||!b_.call(e,a))||r.push(a);return r}Fd.exports=I_});var nr=u((HF,jd)=>{"use strict";var S_=Zo(),w_=Qd(),T_=Jt();function v_(e){return T_(e)?S_(e,!0):w_(e)}jd.exports=v_});var $d=u((zF,Wd)=>{"use strict";var E_=ar(),R_=nr();function __(e){return E_(e,R_(e))}Wd.exports=__});var Jd=u((JF,zd)=>{"use strict";var Kd=Qo(),x_=Wo(),L_=Ko(),O_=er(),C_=Yo(),Vd=zr(),Yd=re(),P_=Fo(),U_=ua(),q_=Xr(),D_=Ee(),N_=Ho(),B_=ln(),Hd=Jo(),M_=$d();function G_(e,t,r,a,n,o,s){var i=Hd(e,r),p=Hd(t,r),m=s.get(p);if(m){Kd(e,r,m);return}var f=o?o(i,p,r+"",e,t,s):void 0,h=f===void 0;if(h){var g=Yd(p),S=!g&&U_(p),O=!g&&!S&&B_(p);f=p,g||S||O?Yd(i)?f=i:P_(i)?f=O_(i):S?(h=!1,f=x_(p,!0)):O?(h=!1,f=L_(p,!0)):f=[]:N_(p)||Vd(p)?(f=i,Vd(i)?f=M_(i):(!D_(i)||q_(i))&&(f=C_(p))):h=!1}h&&(s.set(p,f),n(f,p,a,o,s),s.delete(p)),Kd(e,r,f)}zd.exports=G_});var ef=u((XF,Zd)=>{"use strict";var k_=aa(),F_=Qo(),Q_=jo(),j_=Jd(),W_=Ee(),$_=nr(),K_=Jo();function Xd(e,t,r,a,n){e!==t&&Q_(t,function(o,s){if(n||(n=new k_),W_(o))j_(e,t,s,r,Xd,a,n);else{var i=a?a(K_(e,s),o,s+"",e,t,n):void 0;i===void 0&&(i=o),F_(e,s,i)}},$_)}Zd.exports=Xd});var rf=u((ZF,tf)=>{"use strict";var V_=Yt(),Y_=Jt(),H_=la(),z_=Ee();function J_(e,t,r){if(!z_(r))return!1;var a=typeof t;return(a=="number"?Y_(r)&&H_(t,r.length):a=="string"&&t in r)?V_(r[t],e):!1}tf.exports=J_});var nf=u((e1,af)=>{"use strict";var X_=qo(),Z_=rf();function ex(e){return X_(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})}af.exports=ex});var es=u((t1,of)=>{"use strict";var tx=ef(),rx=nf(),ax=rx(function(e,t,r){tx(e,t,r)});of.exports=ax});var um=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 zs=u((Ej,pm)=>{"use strict";pm.exports={}});var fm=u((Rj,dm)=>{"use strict";var X=um(),BL=zs(),cm=Array.prototype.push;function ML(e,t){return t==2?function(r,a){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}function Js(e,t){return t==2?function(r,a){return e(r,a)}:function(r){return e(r)}}function lm(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}function GL(e){return function(t){return e({},t)}}function kL(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&&cm.apply(s,o),t!=a&&cm.apply(s,n.slice(t+1)),e.apply(this,s)}}function Xs(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:BL,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,kt=g.keys,Ir=g.rearg,Sr=g.toInteger,bI=g.toPath,Pu=kt(X.aryMethod),II={castArray:function(I){return function(){var y=arguments[0];return U(y)?I(lm(y)):I.apply(void 0,arguments)}},iteratee:function(I){return function(){var y=arguments[0],b=arguments[1],v=I(y,b),L=v.length;return s.cap&&typeof b=="number"?(b=b>2?b-2:1,L&&L<=b?v:Js(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(L){Se(y[L])&&v.push([L,b.prototype[L]])}),I(b,Object(y)),E(v,function(L){var ae=L[1];Se(ae)?b.prototype[L[0]]=ae:delete b.prototype[L[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 Zs(e,I(y),a)}}};function SI(I,y){if(s.cap){var b=X.iterateeRearg[I];if(b)return RI(y,b);var v=!n&&X.iterateeAry[I];if(v)return EI(y,v)}return y}function wI(I,y,b){return p||s.curry&&b>1?R(y,b):y}function Uu(I,y,b){if(s.fixed&&(m||!X.skipFixed[I])){var v=X.methodSpread[I],L=v&&v.start;return L===void 0?S(y,b):kL(y,L)}return y}function qu(I,y,b){return s.rearg&&b>1&&(f||!X.skipRearg[I])?Ir(y,X.methodRearg[I]||X.aryRearg[b]):y}function TI(I,y){y=bI(y);for(var b=-1,v=y.length,L=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==L?Ge:Object(Ge))),Me=Me[we]}return ae}function vI(I){return me.runInContext.convert(I)(void 0)}function Du(I,y){var b=X.aliasToReal[I]||I,v=X.remap[b]||b,L=a;return function(ae){var Me=n?h:g,we=n?h[v]:y,Ge=O(O({},L),ae);return Zs(Me,b,we,Ge)}}function EI(I,y){return Nu(I,function(b){return typeof b=="function"?Js(b,y):b})}function RI(I,y){return Nu(I,function(b){var v=y.length;return ML(Ir(Js(b,v),y),v)})}function Nu(I,y){return function(){var b=arguments.length;if(!b)return I();for(var v=Array(b);b--;)v[b]=arguments[b];var L=s.rearg?0:b-1;return v[L]=y(v[L]),I.apply(void 0,v)}}function Bu(I,y,b){var v,L=X.aliasToReal[I]||I,ae=y,Me=II[L];return Me?ae=Me(y):s.immutable&&(X.mutate.array[L]?ae=Xs(y,lm):X.mutate.object[L]?ae=Xs(y,GL(y)):X.mutate.set[L]&&(ae=Xs(y,TI))),E(Pu,function(we){return E(X.aryMethod[we],function(Ge){if(L==Ge){var Mu=X.methodSpread[L],_I=Mu&&Mu.afterRearg;return v=_I?Uu(L,qu(L,ae,we),we):qu(L,Uu(L,ae,we),we),v=SI(L,v),v=wI(L,v,we),!1}}),!v}),v||(v=ae),v==y&&(v=p?R(v,1):function(){return y.apply(this,arguments)}),v.convert=Du(L,y),v.placeholder=y.placeholder=b,v}if(!o)return Bu(t,r,i);var me=r,wr=[];return E(Pu,function(I){E(X.aryMethod[I],function(y){var b=me[X.remap[y]||y];b&&wr.push([y,Bu(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=Du(I,y),wr.push([I,y])}}),E(wr,function(I){me[I[0]]=I[1]}),me.convert=vI,me.placeholder=me,E(kt(me),function(I){E(X.realToAlias[I]||[],function(y){me[y]=me[I]})}),me}dm.exports=Zs});var ei=u((_j,mm)=>{"use strict";var FL=gt(),QL=oe(),jL=FL(QL,"WeakMap");mm.exports=jL});var ti=u((xj,hm)=>{"use strict";var gm=ei(),WL=gm&&new gm;hm.exports=WL});var ri=u((Lj,Am)=>{"use strict";var $L=Jr(),ym=ti(),KL=ym?function(e,t){return ym.set(e,t),e}:$L;Am.exports=KL});var wa=u((Oj,bm)=>{"use strict";var VL=sa(),YL=Ee();function HL(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=VL(e.prototype),a=e.apply(r,t);return YL(a)?a:r}}bm.exports=HL});var Sm=u((Cj,Im)=>{"use strict";var zL=wa(),JL=oe(),XL=1;function ZL(e,t,r){var a=t&XL,n=zL(e);function o(){var s=this&&this!==JL&&this instanceof o?n:e;return s.apply(a?r:this,arguments)}return o}Im.exports=ZL});var ai=u((Pj,wm)=>{"use strict";var eO=Math.max;function tO(e,t,r,a){for(var n=-1,o=e.length,s=r.length,i=-1,p=t.length,m=eO(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}wm.exports=tO});var ni=u((Uj,Tm)=>{"use strict";var rO=Math.max;function aO(e,t,r,a){for(var n=-1,o=e.length,s=-1,i=r.length,p=-1,m=t.length,f=rO(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}Tm.exports=aO});var Em=u((qj,vm)=>{"use strict";function nO(e,t){for(var r=e.length,a=0;r--;)e[r]===t&&++a;return a}vm.exports=nO});var Pn=u((Dj,Rm)=>{"use strict";function oO(){}Rm.exports=oO});var qn=u((Nj,_m)=>{"use strict";var sO=sa(),iO=Pn(),uO=4294967295;function Un(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=uO,this.__views__=[]}Un.prototype=sO(iO.prototype);Un.prototype.constructor=Un;_m.exports=Un});var oi=u((Bj,Lm)=>{"use strict";var xm=ti(),pO=Go(),cO=xm?function(e){return xm.get(e)}:pO;Lm.exports=cO});var Cm=u((Mj,Om)=>{"use strict";var lO={};Om.exports=lO});var qm=u((Gj,Um)=>{"use strict";var Pm=Cm(),dO=Object.prototype,fO=dO.hasOwnProperty;function mO(e){for(var t=e.name+"",r=Pm[t],a=fO.call(Pm,t)?r.length:0;a--;){var n=r[a],o=n.func;if(o==null||o==e)return n.name}return t}Um.exports=mO});var si=u((kj,Dm)=>{"use strict";var gO=sa(),hO=Pn();function Dn(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}Dn.prototype=gO(hO.prototype);Dn.prototype.constructor=Dn;Dm.exports=Dn});var Bm=u((Fj,Nm)=>{"use strict";var yO=qn(),AO=si(),bO=er();function IO(e){if(e instanceof yO)return e.clone();var t=new AO(e.__wrapped__,e.__chain__);return t.__actions__=bO(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}Nm.exports=IO});var km=u((Qj,Gm)=>{"use strict";var SO=qn(),Mm=si(),wO=Pn(),TO=re(),vO=he(),EO=Bm(),RO=Object.prototype,_O=RO.hasOwnProperty;function Nn(e){if(vO(e)&&!TO(e)&&!(e instanceof SO)){if(e instanceof Mm)return e;if(_O.call(e,"__wrapped__"))return EO(e)}return new Mm(e)}Nn.prototype=wO.prototype;Nn.prototype.constructor=Nn;Gm.exports=Nn});var Qm=u((jj,Fm)=>{"use strict";var xO=qn(),LO=oi(),OO=qm(),CO=km();function PO(e){var t=OO(e),r=CO[t];if(typeof r!="function"||!(t in xO.prototype))return!1;if(e===r)return!0;var a=LO(r);return!!a&&e===a[0]}Fm.exports=PO});var ii=u((Wj,jm)=>{"use strict";var UO=ri(),qO=Uo(),DO=qO(UO);jm.exports=DO});var $m=u(($j,Wm)=>{"use strict";var NO=/\{\n\/\* \[wrapped with (.+)\] \*/,BO=/,? & /;function MO(e){var t=e.match(NO);return t?t[1].split(BO):[]}Wm.exports=MO});var Vm=u((Kj,Km)=>{"use strict";var GO=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function kO(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(GO,`{
|
|
2
2
|
/* [wrapped with `+t+`] */
|
|
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("${
|
|
3
|
+
`)}Km.exports=kO});var Bn=u((Vj,Ym)=>{"use strict";function FO(e,t){for(var r=-1,a=e==null?0:e.length;++r<a&&t(e[r],r,e)!==!1;);return e}Ym.exports=FO});var zm=u((Yj,Hm)=>{"use strict";var QO=Bn(),jO=No(),WO=1,$O=2,KO=8,VO=16,YO=32,HO=64,zO=128,JO=256,XO=512,ZO=[["ary",zO],["bind",WO],["bindKey",$O],["curry",KO],["curryRight",VO],["flip",XO],["partial",YO],["partialRight",HO],["rearg",JO]];function eC(e,t){return QO(ZO,function(r){var a="_."+r[0];t&r[1]&&!jO(e,a)&&e.push(a)}),e.sort()}Hm.exports=eC});var ui=u((Hj,Jm)=>{"use strict";var tC=$m(),rC=Vm(),aC=Za(),nC=zm();function oC(e,t,r){var a=t+"";return aC(e,rC(a,nC(tC(a),r)))}Jm.exports=oC});var pi=u((zj,eg)=>{"use strict";var sC=Qm(),iC=ii(),uC=ui(),pC=1,cC=2,lC=4,dC=8,Xm=32,Zm=64;function fC(e,t,r,a,n,o,s,i,p,m){var f=t&dC,h=f?s:void 0,g=f?void 0:s,S=f?o:void 0,O=f?void 0:o;t|=f?Xm:Zm,t&=~(f?Zm:Xm),t&lC||(t&=~(pC|cC));var _=[e,t,n,S,h,O,g,i,p,m],R=r.apply(void 0,_);return sC(e)&&iC(R,_),R.placeholder=a,uC(R,e,t)}eg.exports=fC});var ci=u((Jj,tg)=>{"use strict";function mC(e){var t=e;return t.placeholder}tg.exports=mC});var ag=u((Xj,rg)=>{"use strict";var gC=er(),hC=la(),yC=Math.min;function AC(e,t){for(var r=e.length,a=yC(t.length,r),n=gC(e);a--;){var o=t[a];e[a]=hC(o,r)?n[o]:void 0}return e}rg.exports=AC});var Mn=u((Zj,og)=>{"use strict";var ng="__lodash_placeholder__";function bC(e,t){for(var r=-1,a=e.length,n=0,o=[];++r<a;){var s=e[r];(s===t||s===ng)&&(e[r]=ng,o[n++]=r)}return o}og.exports=bC});var li=u((eW,ug)=>{"use strict";var IC=ai(),SC=ni(),wC=Em(),sg=wa(),TC=pi(),vC=ci(),EC=ag(),RC=Mn(),_C=oe(),xC=1,LC=2,OC=8,CC=16,PC=128,UC=512;function ig(e,t,r,a,n,o,s,i,p,m){var f=t&PC,h=t&xC,g=t&LC,S=t&(OC|CC),O=t&UC,_=g?void 0:sg(e);function R(){for(var E=arguments.length,U=Array(E),Oe=E;Oe--;)U[Oe]=arguments[Oe];if(S)var Se=vC(R),pt=wC(U,Se);if(a&&(U=IC(U,a,n,S)),o&&(U=SC(U,o,s,S)),E-=pt,S&&E<m){var kt=RC(U,Se);return TC(e,t,ig,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=EC(U,i):O&&E>1&&U.reverse(),f&&p<E&&(U.length=p),this&&this!==_C&&this instanceof R&&(Sr=_||sg(Sr)),Sr.apply(Ir,U)}return R}ug.exports=ig});var cg=u((tW,pg)=>{"use strict";var qC=Xa(),DC=wa(),NC=li(),BC=pi(),MC=ci(),GC=Mn(),kC=oe();function FC(e,t,r){var a=DC(e);function n(){for(var o=arguments.length,s=Array(o),i=o,p=MC(n);i--;)s[i]=arguments[i];var m=o<3&&s[0]!==p&&s[o-1]!==p?[]:GC(s,p);if(o-=m.length,o<r)return BC(e,t,NC,n.placeholder,void 0,s,m,void 0,void 0,r-o);var f=this&&this!==kC&&this instanceof n?a:e;return qC(f,this,s)}return n}pg.exports=FC});var dg=u((rW,lg)=>{"use strict";var QC=Xa(),jC=wa(),WC=oe(),$C=1;function KC(e,t,r,a){var n=t&$C,o=jC(e);function s(){for(var i=-1,p=arguments.length,m=-1,f=a.length,h=Array(f+p),g=this&&this!==WC&&this instanceof s?o:e;++m<f;)h[m]=a[m];for(;p--;)h[m++]=arguments[++i];return QC(g,n?r:this,h)}return s}lg.exports=KC});var Ag=u((aW,yg)=>{"use strict";var VC=ai(),YC=ni(),fg=Mn(),mg="__lodash_placeholder__",di=1,HC=2,zC=4,gg=8,Ta=128,hg=256,JC=Math.min;function XC(e,t){var r=e[1],a=t[1],n=r|a,o=n<(di|HC|Ta),s=a==Ta&&r==gg||a==Ta&&r==hg&&e[7].length<=t[8]||a==(Ta|hg)&&t[7].length<=t[8]&&r==gg;if(!(o||s))return e;a&di&&(e[2]=t[2],n|=r&di?0:zC);var i=t[3];if(i){var p=e[3];e[3]=p?VC(p,i,t[4]):i,e[4]=p?fg(e[3],mg):t[4]}return i=t[5],i&&(p=e[5],e[5]=p?YC(p,i,t[6]):i,e[6]=p?fg(e[5],mg):t[6]),i=t[7],i&&(e[7]=i),a&Ta&&(e[8]=e[8]==null?t[8]:JC(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=n,e}yg.exports=XC});var Ig=u((nW,bg)=>{"use strict";var ZC=/\s/;function eP(e){for(var t=e.length;t--&&ZC.test(e.charAt(t)););return t}bg.exports=eP});var wg=u((oW,Sg)=>{"use strict";var tP=Ig(),rP=/^\s+/;function aP(e){return e&&e.slice(0,tP(e)+1).replace(rP,"")}Sg.exports=aP});var fr=u((sW,Tg)=>{"use strict";var nP=mt(),oP=he(),sP="[object Symbol]";function iP(e){return typeof e=="symbol"||oP(e)&&nP(e)==sP}Tg.exports=iP});var _g=u((iW,Rg)=>{"use strict";var uP=wg(),vg=Ee(),pP=fr(),Eg=0/0,cP=/^[-+]0x[0-9a-f]+$/i,lP=/^0b[01]+$/i,dP=/^0o[0-7]+$/i,fP=parseInt;function mP(e){if(typeof e=="number")return e;if(pP(e))return Eg;if(vg(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=vg(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=uP(e);var r=lP.test(e);return r||dP.test(e)?fP(e.slice(2),r?2:8):cP.test(e)?Eg:+e}Rg.exports=mP});var Og=u((uW,Lg)=>{"use strict";var gP=_g(),xg=1/0,hP=17976931348623157e292;function yP(e){if(!e)return e===0?e:0;if(e=gP(e),e===xg||e===-xg){var t=e<0?-1:1;return t*hP}return e===e?e:0}Lg.exports=yP});var fi=u((pW,Cg)=>{"use strict";var AP=Og();function bP(e){var t=AP(e),r=t%1;return t===t?r?t-r:t:0}Cg.exports=bP});var Gn=u((cW,Ng)=>{"use strict";var IP=ri(),SP=Sm(),wP=cg(),TP=li(),vP=dg(),EP=oi(),RP=Ag(),_P=ii(),xP=ui(),Pg=fi(),LP="Expected a function",Ug=1,OP=2,mi=8,gi=16,hi=32,qg=64,Dg=Math.max;function CP(e,t,r,a,n,o,s,i){var p=t&OP;if(!p&&typeof e!="function")throw new TypeError(LP);var m=a?a.length:0;if(m||(t&=~(hi|qg),a=n=void 0),s=s===void 0?s:Dg(Pg(s),0),i=i===void 0?i:Pg(i),m-=n?n.length:0,t&qg){var f=a,h=n;a=n=void 0}var g=p?void 0:EP(e),S=[e,t,r,a,n,f,h,o,s,i];if(g&&RP(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:Dg(S[9]-m,0),!i&&t&(mi|gi)&&(t&=~(mi|gi)),!t||t==Ug)var O=SP(e,t,r);else t==mi||t==gi?O=wP(e,t,i):(t==hi||t==(Ug|hi))&&!n.length?O=vP(e,t,r,a):O=TP.apply(void 0,S);var _=g?IP:_P;return xP(_(O,S),e,t)}Ng.exports=CP});var Mg=u((lW,Bg)=>{"use strict";var PP=Gn(),UP=128;function qP(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,PP(e,UP,void 0,void 0,void 0,void 0,t)}Bg.exports=qP});var kg=u((dW,Gg)=>{"use strict";var DP=Vo(),NP=DP(Object.keys,Object);Gg.exports=NP});var yi=u((fW,Fg)=>{"use strict";var BP=un(),MP=kg(),GP=Object.prototype,kP=GP.hasOwnProperty;function FP(e){if(!BP(e))return MP(e);var t=[];for(var r in Object(e))kP.call(e,r)&&r!="constructor"&&t.push(r);return t}Fg.exports=FP});var mr=u((mW,Qg)=>{"use strict";var QP=Zo(),jP=yi(),WP=Jt();function $P(e){return WP(e)?QP(e):jP(e)}Qg.exports=$P});var Ai=u((gW,jg)=>{"use strict";var KP=ar(),VP=mr();function YP(e,t){return e&&KP(t,VP(t),e)}jg.exports=YP});var $g=u((hW,Wg)=>{"use strict";var HP=ar(),zP=nr();function JP(e,t){return e&&HP(t,zP(t),e)}Wg.exports=JP});var Vg=u((yW,Kg)=>{"use strict";function XP(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}Kg.exports=XP});var bi=u((AW,Yg)=>{"use strict";function ZP(){return[]}Yg.exports=ZP});var kn=u((bW,zg)=>{"use strict";var eU=Vg(),tU=bi(),rU=Object.prototype,aU=rU.propertyIsEnumerable,Hg=Object.getOwnPropertySymbols,nU=Hg?function(e){return e==null?[]:(e=Object(e),eU(Hg(e),function(t){return aU.call(e,t)}))}:tU;zg.exports=nU});var Xg=u((IW,Jg)=>{"use strict";var oU=ar(),sU=kn();function iU(e,t){return oU(e,sU(e),t)}Jg.exports=iU});var Ii=u((SW,Zg)=>{"use strict";var uU=Ja(),pU=sn(),cU=kn(),lU=bi(),dU=Object.getOwnPropertySymbols,fU=dU?function(e){for(var t=[];e;)uU(t,cU(e)),e=pU(e);return t}:lU;Zg.exports=fU});var th=u((wW,eh)=>{"use strict";var mU=ar(),gU=Ii();function hU(e,t){return mU(e,gU(e),t)}eh.exports=hU});var Si=u((TW,rh)=>{"use strict";var yU=Ja(),AU=re();function bU(e,t,r){var a=t(e);return AU(e)?a:yU(a,r(e))}rh.exports=bU});var wi=u((vW,ah)=>{"use strict";var IU=Si(),SU=kn(),wU=mr();function TU(e){return IU(e,wU,SU)}ah.exports=TU});var oh=u((EW,nh)=>{"use strict";var vU=Si(),EU=Ii(),RU=nr();function _U(e){return vU(e,RU,EU)}nh.exports=_U});var ih=u((RW,sh)=>{"use strict";var xU=gt(),LU=oe(),OU=xU(LU,"DataView");sh.exports=OU});var ph=u((_W,uh)=>{"use strict";var CU=gt(),PU=oe(),UU=CU(PU,"Promise");uh.exports=UU});var hr=u((xW,hh)=>{"use strict";var Ti=ih(),vi=en(),Ei=ph(),Ri=Mo(),_i=ei(),gh=mt(),gr=Co(),ch="[object Map]",qU="[object Object]",lh="[object Promise]",dh="[object Set]",fh="[object WeakMap]",mh="[object DataView]",DU=gr(Ti),NU=gr(vi),BU=gr(Ei),MU=gr(Ri),GU=gr(_i),Dt=gh;(Ti&&Dt(new Ti(new ArrayBuffer(1)))!=mh||vi&&Dt(new vi)!=ch||Ei&&Dt(Ei.resolve())!=lh||Ri&&Dt(new Ri)!=dh||_i&&Dt(new _i)!=fh)&&(Dt=function(e){var t=gh(e),r=t==qU?e.constructor:void 0,a=r?gr(r):"";if(a)switch(a){case DU:return mh;case NU:return ch;case BU:return lh;case MU:return dh;case GU:return fh}return t});hh.exports=Dt});var Ah=u((LW,yh)=>{"use strict";var kU=Object.prototype,FU=kU.hasOwnProperty;function QU(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&FU.call(e,"index")&&(r.index=e.index,r.input=e.input),r}yh.exports=QU});var Ih=u((OW,bh)=>{"use strict";var jU=on();function WU(e,t){var r=t?jU(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}bh.exports=WU});var wh=u((CW,Sh)=>{"use strict";var $U=/\w*$/;function KU(e){var t=new e.constructor(e.source,$U.exec(e));return t.lastIndex=e.lastIndex,t}Sh.exports=KU});var _h=u((PW,Rh)=>{"use strict";var Th=_t(),vh=Th?Th.prototype:void 0,Eh=vh?vh.valueOf:void 0;function VU(e){return Eh?Object(Eh.call(e)):{}}Rh.exports=VU});var Lh=u((UW,xh)=>{"use strict";var YU=on(),HU=Ih(),zU=wh(),JU=_h(),XU=Ko(),ZU="[object Boolean]",eq="[object Date]",tq="[object Map]",rq="[object Number]",aq="[object RegExp]",nq="[object Set]",oq="[object String]",sq="[object Symbol]",iq="[object ArrayBuffer]",uq="[object DataView]",pq="[object Float32Array]",cq="[object Float64Array]",lq="[object Int8Array]",dq="[object Int16Array]",fq="[object Int32Array]",mq="[object Uint8Array]",gq="[object Uint8ClampedArray]",hq="[object Uint16Array]",yq="[object Uint32Array]";function Aq(e,t,r){var a=e.constructor;switch(t){case iq:return YU(e);case ZU:case eq:return new a(+e);case uq:return HU(e,r);case pq:case cq:case lq:case dq:case fq:case mq:case gq:case hq:case yq:return XU(e,r);case tq:return new a;case rq:case oq:return new a(e);case aq:return zU(e);case nq:return new a;case sq:return JU(e)}}xh.exports=Aq});var Ch=u((qW,Oh)=>{"use strict";var bq=hr(),Iq=he(),Sq="[object Map]";function wq(e){return Iq(e)&&bq(e)==Sq}Oh.exports=wq});var Dh=u((DW,qh)=>{"use strict";var Tq=Ch(),vq=pn(),Ph=cn(),Uh=Ph&&Ph.isMap,Eq=Uh?vq(Uh):Tq;qh.exports=Eq});var Bh=u((NW,Nh)=>{"use strict";var Rq=hr(),_q=he(),xq="[object Set]";function Lq(e){return _q(e)&&Rq(e)==xq}Nh.exports=Lq});var Fh=u((BW,kh)=>{"use strict";var Oq=Bh(),Cq=pn(),Mh=cn(),Gh=Mh&&Mh.isSet,Pq=Gh?Cq(Gh):Oq;kh.exports=Pq});var xi=u((MW,$h)=>{"use strict";var Uq=aa(),qq=Bn(),Dq=Xo(),Nq=Ai(),Bq=$g(),Mq=Wo(),Gq=er(),kq=Xg(),Fq=th(),Qq=wi(),jq=oh(),Wq=hr(),$q=Ah(),Kq=Lh(),Vq=Yo(),Yq=re(),Hq=ua(),zq=Dh(),Jq=Ee(),Xq=Fh(),Zq=mr(),eD=nr(),tD=1,rD=2,aD=4,Qh="[object Arguments]",nD="[object Array]",oD="[object Boolean]",sD="[object Date]",iD="[object Error]",jh="[object Function]",uD="[object GeneratorFunction]",pD="[object Map]",cD="[object Number]",Wh="[object Object]",lD="[object RegExp]",dD="[object Set]",fD="[object String]",mD="[object Symbol]",gD="[object WeakMap]",hD="[object ArrayBuffer]",yD="[object DataView]",AD="[object Float32Array]",bD="[object Float64Array]",ID="[object Int8Array]",SD="[object Int16Array]",wD="[object Int32Array]",TD="[object Uint8Array]",vD="[object Uint8ClampedArray]",ED="[object Uint16Array]",RD="[object Uint32Array]",D={};D[Qh]=D[nD]=D[hD]=D[yD]=D[oD]=D[sD]=D[AD]=D[bD]=D[ID]=D[SD]=D[wD]=D[pD]=D[cD]=D[Wh]=D[lD]=D[dD]=D[fD]=D[mD]=D[TD]=D[vD]=D[ED]=D[RD]=!0;D[iD]=D[jh]=D[gD]=!1;function Fn(e,t,r,a,n,o){var s,i=t&tD,p=t&rD,m=t&aD;if(r&&(s=n?r(e,a,n,o):r(e)),s!==void 0)return s;if(!Jq(e))return e;var f=Yq(e);if(f){if(s=$q(e),!i)return Gq(e,s)}else{var h=Wq(e),g=h==jh||h==uD;if(Hq(e))return Mq(e,i);if(h==Wh||h==Qh||g&&!n){if(s=p||g?{}:Vq(e),!i)return p?Fq(e,Bq(s,e)):kq(e,Nq(s,e))}else{if(!D[h])return n?e:{};s=Kq(e,h,i)}}o||(o=new Uq);var S=o.get(e);if(S)return S;o.set(e,s),Xq(e)?e.forEach(function(R){s.add(Fn(R,t,r,R,e,o))}):zq(e)&&e.forEach(function(R,E){s.set(E,Fn(R,t,r,E,e,o))});var O=m?p?jq:Qq:p?eD:Zq,_=f?void 0:O(e);return qq(_||e,function(R,E){_&&(E=R,R=e[E]),Dq(s,E,Fn(R,t,r,E,e,o))}),s}$h.exports=Fn});var Vh=u((GW,Kh)=>{"use strict";var _D=xi(),xD=4;function LD(e){return _D(e,xD)}Kh.exports=LD});var Hh=u((kW,Yh)=>{"use strict";var OD=Gn(),CD=8;function Li(e,t,r){t=r?void 0:t;var a=OD(e,CD,void 0,void 0,void 0,void 0,void 0,t);return a.placeholder=Li.placeholder,a}Li.placeholder={};Yh.exports=Li});var Jh=u((FW,zh)=>{"use strict";var PD=mt(),UD=he(),qD=Ho(),DD="[object DOMException]",ND="[object Error]";function BD(e){if(!UD(e))return!1;var t=PD(e);return t==ND||t==DD||typeof e.message=="string"&&typeof e.name=="string"&&!qD(e)}zh.exports=BD});var Zh=u((QW,Xh)=>{"use strict";var MD=hr(),GD=he(),kD="[object WeakMap]";function FD(e){return GD(e)&&MD(e)==kD}Xh.exports=FD});var ty=u((jW,ey)=>{"use strict";function QD(e,t){for(var r=-1,a=e==null?0:e.length;++r<a;)if(t(e[r],r,e))return!0;return!1}ey.exports=QD});var Oi=u((WW,ry)=>{"use strict";var jD=Do(),WD=ty(),$D=Bo(),KD=1,VD=2;function YD(e,t,r,a,n,o){var s=r&KD,i=e.length,p=t.length;if(i!=p&&!(s&&p>i))return!1;var m=o.get(e),f=o.get(t);if(m&&f)return m==t&&f==e;var h=-1,g=!0,S=r&VD?new jD: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(!WD(t,function(E,U){if(!$D(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}ry.exports=YD});var ny=u(($W,ay)=>{"use strict";function HD(e){var t=-1,r=Array(e.size);return e.forEach(function(a,n){r[++t]=[n,a]}),r}ay.exports=HD});var py=u((KW,uy)=>{"use strict";var oy=_t(),sy=$o(),zD=Yt(),JD=Oi(),XD=ny(),ZD=an(),eN=1,tN=2,rN="[object Boolean]",aN="[object Date]",nN="[object Error]",oN="[object Map]",sN="[object Number]",iN="[object RegExp]",uN="[object Set]",pN="[object String]",cN="[object Symbol]",lN="[object ArrayBuffer]",dN="[object DataView]",iy=oy?oy.prototype:void 0,Ci=iy?iy.valueOf:void 0;function fN(e,t,r,a,n,o,s){switch(r){case dN:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case lN:return!(e.byteLength!=t.byteLength||!o(new sy(e),new sy(t)));case rN:case aN:case sN:return zD(+e,+t);case nN:return e.name==t.name&&e.message==t.message;case iN:case pN:return e==t+"";case oN:var i=XD;case uN:var p=a&eN;if(i||(i=ZD),e.size!=t.size&&!p)return!1;var m=s.get(e);if(m)return m==t;a|=tN,s.set(e,t);var f=JD(i(e),i(t),a,n,o,s);return s.delete(e),f;case cN:if(Ci)return Ci.call(e)==Ci.call(t)}return!1}uy.exports=fN});var dy=u((VW,ly)=>{"use strict";var cy=wi(),mN=1,gN=Object.prototype,hN=gN.hasOwnProperty;function yN(e,t,r,a,n,o){var s=r&mN,i=cy(e),p=i.length,m=cy(t),f=m.length;if(p!=f&&!s)return!1;for(var h=p;h--;){var g=i[h];if(!(s?g in t:hN.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),_}ly.exports=yN});var Iy=u((YW,by)=>{"use strict";var Pi=aa(),AN=Oi(),bN=py(),IN=dy(),fy=hr(),my=re(),gy=ua(),SN=ln(),wN=1,hy="[object Arguments]",yy="[object Array]",Qn="[object Object]",TN=Object.prototype,Ay=TN.hasOwnProperty;function vN(e,t,r,a,n,o){var s=my(e),i=my(t),p=s?yy:fy(e),m=i?yy:fy(t);p=p==hy?Qn:p,m=m==hy?Qn:m;var f=p==Qn,h=m==Qn,g=p==m;if(g&&gy(e)){if(!gy(t))return!1;s=!0,f=!1}if(g&&!f)return o||(o=new Pi),s||SN(e)?AN(e,t,r,a,n,o):bN(e,t,p,r,a,n,o);if(!(r&wN)){var S=f&&Ay.call(e,"__wrapped__"),O=h&&Ay.call(t,"__wrapped__");if(S||O){var _=S?e.value():e,R=O?t.value():t;return o||(o=new Pi),n(_,R,r,a,o)}}return g?(o||(o=new Pi),IN(e,t,r,a,n,o)):!1}by.exports=vN});var Ui=u((HW,Ty)=>{"use strict";var EN=Iy(),Sy=he();function wy(e,t,r,a,n){return e===t?!0:e==null||t==null||!Sy(e)&&!Sy(t)?e!==e&&t!==t:EN(e,t,r,a,wy,n)}Ty.exports=wy});var Ey=u((zW,vy)=>{"use strict";var RN=aa(),_N=Ui(),xN=1,LN=2;function ON(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 RN;if(a)var g=a(m,f,p,e,t,h);if(!(g===void 0?_N(f,m,xN|LN,a,h):g))return!1}}return!0}vy.exports=ON});var qi=u((JW,Ry)=>{"use strict";var CN=Ee();function PN(e){return e===e&&!CN(e)}Ry.exports=PN});var xy=u((XW,_y)=>{"use strict";var UN=qi(),qN=mr();function DN(e){for(var t=qN(e),r=t.length;r--;){var a=t[r],n=e[a];t[r]=[a,n,UN(n)]}return t}_y.exports=DN});var Di=u((ZW,Ly)=>{"use strict";function NN(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}Ly.exports=NN});var Cy=u((e$,Oy)=>{"use strict";var BN=Ey(),MN=xy(),GN=Di();function kN(e){var t=MN(e);return t.length==1&&t[0][2]?GN(t[0][0],t[0][1]):function(r){return r===e||BN(r,e,t)}}Oy.exports=kN});var jn=u((t$,Py)=>{"use strict";var FN=re(),QN=fr(),jN=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,WN=/^\w*$/;function $N(e,t){if(FN(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||QN(e)?!0:WN.test(e)||!jN.test(e)||t!=null&&e in Object(t)}Py.exports=$N});var Dy=u((r$,qy)=>{"use strict";var Uy=tn(),KN="Expected a function";function Ni(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(KN);var r=function(){var a=arguments,n=t?t.apply(this,a):a[0],o=r.cache;if(o.has(n))return o.get(n);var s=e.apply(this,a);return r.cache=o.set(n,s)||o,s};return r.cache=new(Ni.Cache||Uy),r}Ni.Cache=Uy;qy.exports=Ni});var By=u((a$,Ny)=>{"use strict";var VN=Dy(),YN=500;function HN(e){var t=VN(e,function(a){return r.size===YN&&r.clear(),a}),r=t.cache;return t}Ny.exports=HN});var Bi=u((n$,My)=>{"use strict";var zN=By(),JN=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,XN=/\\(\\)?/g,ZN=zN(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(JN,function(r,a,n,o){t.push(n?o.replace(XN,"$1"):a||r)}),t});My.exports=ZN});var Mi=u((o$,Gy)=>{"use strict";function eB(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}Gy.exports=eB});var $y=u((s$,Wy)=>{"use strict";var ky=_t(),tB=Mi(),rB=re(),aB=fr(),nB=1/0,Fy=ky?ky.prototype:void 0,Qy=Fy?Fy.toString:void 0;function jy(e){if(typeof e=="string")return e;if(rB(e))return tB(e,jy)+"";if(aB(e))return Qy?Qy.call(e):"";var t=e+"";return t=="0"&&1/e==-nB?"-0":t}Wy.exports=jy});var Gi=u((i$,Ky)=>{"use strict";var oB=$y();function sB(e){return e==null?"":oB(e)}Ky.exports=sB});var ki=u((u$,Vy)=>{"use strict";var iB=re(),uB=jn(),pB=Bi(),cB=Gi();function lB(e,t){return iB(e)?e:uB(e,t)?[e]:pB(cB(e))}Vy.exports=lB});var yr=u((p$,Yy)=>{"use strict";var dB=fr(),fB=1/0;function mB(e){if(typeof e=="string"||dB(e))return e;var t=e+"";return t=="0"&&1/e==-fB?"-0":t}Yy.exports=mB});var Fi=u((c$,Hy)=>{"use strict";var gB=ki(),hB=yr();function yB(e,t){t=gB(t,e);for(var r=0,a=t.length;e!=null&&r<a;)e=e[hB(t[r++])];return r&&r==a?e:void 0}Hy.exports=yB});var Jy=u((l$,zy)=>{"use strict";var AB=Fi();function bB(e,t,r){var a=e==null?void 0:AB(e,t);return a===void 0?r:a}zy.exports=bB});var Zy=u((d$,Xy)=>{"use strict";function IB(e,t){return e!=null&&t in Object(e)}Xy.exports=IB});var tA=u((f$,eA)=>{"use strict";var SB=ki(),wB=zr(),TB=re(),vB=la(),EB=nn(),RB=yr();function _B(e,t,r){t=SB(t,e);for(var a=-1,n=t.length,o=!1;++a<n;){var s=RB(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&&EB(n)&&vB(s,n)&&(TB(e)||wB(e)))}eA.exports=_B});var aA=u((m$,rA)=>{"use strict";var xB=Zy(),LB=tA();function OB(e,t){return e!=null&&LB(e,t,xB)}rA.exports=OB});var oA=u((g$,nA)=>{"use strict";var CB=Ui(),PB=Jy(),UB=aA(),qB=jn(),DB=qi(),NB=Di(),BB=yr(),MB=1,GB=2;function kB(e,t){return qB(e)&&DB(t)?NB(BB(e),t):function(r){var a=PB(r,e);return a===void 0&&a===t?UB(r,e):CB(t,a,MB|GB)}}nA.exports=kB});var iA=u((h$,sA)=>{"use strict";function FB(e){return function(t){return t?.[e]}}sA.exports=FB});var pA=u((y$,uA)=>{"use strict";var QB=Fi();function jB(e){return function(t){return QB(t,e)}}uA.exports=jB});var lA=u((A$,cA)=>{"use strict";var WB=iA(),$B=pA(),KB=jn(),VB=yr();function YB(e){return KB(e)?WB(VB(e)):$B(e)}cA.exports=YB});var Qi=u((b$,dA)=>{"use strict";var HB=Cy(),zB=oA(),JB=Jr(),XB=re(),ZB=lA();function eM(e){return typeof e=="function"?e:e==null?JB:typeof e=="object"?XB(e)?zB(e[0],e[1]):HB(e):ZB(e)}dA.exports=eM});var mA=u((I$,fA)=>{"use strict";var tM=xi(),rM=Qi(),aM=1;function nM(e){return rM(typeof e=="function"?e:tM(e,aM))}fA.exports=nM});var hA=u((S$,gA)=>{"use strict";var oM=xo();function sM(e){var t=e==null?0:e.length;return t?oM(e,1):[]}gA.exports=sM});var AA=u((w$,yA)=>{"use strict";var iM=hA(),uM=Lo(),pM=Za();function cM(e){return pM(uM(e,void 0,iM),e+"")}yA.exports=cM});var IA=u((T$,bA)=>{"use strict";var lM=Gn(),dM=AA(),fM=256,mM=dM(function(e,t){return lM(e,fM,void 0,void 0,void 0,t)});bA.exports=mM});var wA=u((v$,SA)=>{"use strict";var gM=Mi(),hM=er(),yM=re(),AM=fr(),bM=Bi(),IM=yr(),SM=Gi();function wM(e){return yM(e)?gM(e,IM):AM(e)?[e]:hM(bM(SM(e)))}SA.exports=wM});var vA=u((E$,TA)=>{"use strict";TA.exports={ary:Mg(),assign:Ai(),clone:Vh(),curry:Hh(),forEach:Bn(),isArray:re(),isError:Jh(),isFunction:Xr(),isWeakMap:Zh(),iteratee:mA(),keys:yi(),rearg:IA(),toInteger:fi(),toPath:wA()}});var RA=u((R$,EA)=>{"use strict";var TM=fm(),vM=vA();function EM(e,t,r){return TM(vM,e,t,r)}EA.exports=EM});var ji=u((_$,xA)=>{"use strict";var RM=RA(),_A=RM("merge",es());_A.placeholder=zs();xA.exports=_A});var Lb=u((bK,xb)=>{"use strict";function KM(e,t,r,a){for(var n=-1,o=e==null?0:e.length;++n<o;){var s=e[n];t(a,s,r(s),e)}return a}xb.exports=KM});var Cb=u((IK,Ob)=>{"use strict";var VM=jo(),YM=mr();function HM(e,t){return e&&VM(e,t,YM)}Ob.exports=HM});var Ub=u((SK,Pb)=>{"use strict";var zM=Jt();function JM(e,t){return function(r,a){if(r==null)return r;if(!zM(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}}Pb.exports=JM});var Db=u((wK,qb)=>{"use strict";var XM=Cb(),ZM=Ub(),eG=ZM(XM);qb.exports=eG});var Bb=u((TK,Nb)=>{"use strict";var tG=Db();function rG(e,t,r,a){return tG(e,function(n,o,s){t(a,n,r(n),s)}),a}Nb.exports=rG});var Gb=u((vK,Mb)=>{"use strict";var aG=Lb(),nG=Bb(),oG=Qi(),sG=re();function iG(e,t){return function(r,a){var n=sG(r)?aG:nG,o=t?t():{};return n(r,e,oG(a,2),o)}}Mb.exports=iG});var Fb=u((EK,kb)=>{"use strict";var uG=na(),pG=Gb(),cG=Object.prototype,lG=cG.hasOwnProperty,dG=pG(function(e,t,r){lG.call(e,r)?e[r].push(t):uG(e,r,[t])});kb.exports=dG});var NG={};w(NG,{Method:()=>oo,ai:()=>Cu,api:()=>ou,auditLogs:()=>At,automations:()=>Rn,backups:()=>Re,branding:()=>yn,constants:()=>Wr,environmentVariables:()=>Ye,features:()=>qe,groups:()=>j,init:()=>im,licensing:()=>je,logger:()=>Nt,mappers:()=>V,middleware:()=>zi,plugins:()=>_n,publicApi:()=>On,quotas:()=>Ke,scimGroups:()=>Ar,scimUsers:()=>fe,sdk:()=>$i,users:()=>at,utils:()=>Kt});module.exports=UI(NG);var oo=(o=>(o.POST="POST",o.GET="GET",o.PATCH="PATCH",o.DELETE="DELETE",o.PUT="PUT",o))(oo||{});var $i={};w($i,{ai:()=>ys,auditLogs:()=>At,automations:()=>Rn,backups:()=>Re,branding:()=>yn,environmentVariables:()=>Ye,features:()=>qe,groups:()=>j,init:()=>im,licensing:()=>je,logger:()=>Nt,plugins:()=>_n,publicApi:()=>On,quotas:()=>Ke,scimGroups:()=>Ar,scimUsers:()=>fe,users:()=>at,utils:()=>Kt});var yn={};w(yn,{getBrandingConfig:()=>Tx});var qe={};w(qe,{checkBackups:()=>ye,checkFeature:()=>gn,checkFeatures:()=>ls,checkSCIM:()=>gs,isAppBuildersEnabled:()=>Ct,isAuditLogsEnabled:()=>hn,isBackupsEnabled:()=>ds,isBrandingEnabled:()=>fs,isEnforceableSSO:()=>Sf,isExpandedPublicApiEnabled:()=>tt,isPWAEnabled:()=>Ax,isSSOEnforced:()=>bx,isSyncAutomationsEnabled:()=>hx,isTriggerAutomationRunEnabled:()=>yx,isUserGroupsEnabled:()=>ms,isViewPermissionEnabled:()=>Ix,isViewReadonlyColumnsEnabled:()=>Sx});var se=require("@budibase/types"),et=require("@budibase/backend-core");var je={};w(je,{cache:()=>Pe,client:()=>ft,features:()=>Ha,getFreeLicense:()=>us,getLicense:()=>ss,getLicenseFromKey:()=>is,keys:()=>cs,offline:()=>dn,quotas:()=>za});var Pe={};w(Pe,{getCachedLicense:()=>bf,invalidate:()=>If,refresh:()=>xt});var Da=require("@budibase/backend-core"),Tr,qI=async()=>{Tr=await Da.RedisClient.init(Da.redis.utils.Databases.LICENSES)},DI=async()=>{Tr&&await Tr.finish()};process.on("exit",async()=>{await DI()});var so=async()=>(Tr||await qI(),Tr);var ft={};w(ft,{activateLicenseKey:()=>To,getLicense:()=>Wt,getLicenseFromKey:()=>wo,triggerQuota:()=>IS});var ku=P(require("node-fetch"));var Fu=require("@budibase/backend-core"),io=require("dd-trace"),Qu=require("dd-trace/ext/formats"),uo=class{constructor(t){this.apiCall=t=>async(r="",a={})=>await io.tracer.trace(`api.${t}`,async n=>{n.setTag("url",r);let o={...a.headers};o["Content-Type"]||(o["Content-Type"]="application/json",o.Accept="application/json");let s=o["Content-Type"]==="application/json";Fu.logging.correlation.setHeader(o),io.tracer.inject(n,Qu.HTTP_HEADERS,o);let i={method:t,body:s?JSON.stringify(a.body):a.body,headers:o,credentials:"include"};return(0,ku.default)(`${this.host}${r}`,i)});this.post=this.apiCall("POST");this.get=this.apiCall("GET");this.patch=this.apiCall("PATCH");this.del=this.apiCall("DELETE");this.put=this.apiCall("PUT");this.host=t}},po=uo;var Ka=require("@budibase/types"),C=require("@budibase/backend-core");var ke={};w(ke,{bustCache:()=>fo,getCurrentUsageValues:()=>zu,getQuotaUsage:()=>Tt,setAllUsage:()=>go,setAppUsageValue:()=>mo,setUsage:()=>Vu,setUsagePerApp:()=>Yu,utils:()=>_r});var ne=require("@budibase/types"),ce=require("@budibase/backend-core");var _r={};w(_r,{generateBaseQuotaUsage:()=>Ba,generateNewMonthlyQuotas:()=>Rr,generateNewQuotaUsage:()=>lo,getBreakdownName:()=>Ga,getCurrentMonthString:()=>ct,getQuotaDocId:()=>Er,setCurrentMonth:()=>Ma,setQuotaReset:()=>co});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,ju=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},co=e=>{e.quotaReset=ju()},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()}}),lo=()=>{let e={_id:Er(),quotaReset:ju(),...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 Wu=ce.Duration.fromSeconds(60).toMs(),{Writethrough:$u}=ce.cache.writethrough;function BI(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 $u(ce.tenancy.getSelfHostCloudDB(),Wu):new $u(ce.tenancy.getGlobalDB(),Wu);async function fo(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 fo(e+1);throw o})}var Tt=async()=>{let e=ka(),t=await e.tryGet(Er());if(!t){t=lo();let{rev:r}=await e.put(t);t._rev=r}return Ma(t),co(t),BI(t)},Vu=async(e,t,r)=>go({name:t,type:r,values:{total:e}}),Yu=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=Hu(n,t,r,{total:o,app:p},{appId:i});let s=await a.put(n);return n._rev=s.rev,n},MI=(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},mo=(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=MI(m,p,a.id,n));break}}return e},Ku=(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}},GI=(e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},kI=(e,t,r,a)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),a&&(r.monthly[t].triggers[e]=a)},Hu=(e,t,r,a,n={})=>{if(r===ne.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=a.total,GI(t,e,a.triggers);else if(r===ne.QuotaUsageType.MONTHLY){t=t;let o=ct();e.monthly[o][t]=a.total,kI(t,o,e,a.triggers)}else throw new Error(`Invalid usage type: ${r}`);return mo(e,t,r,n,a)},go=async e=>{let t=Array.isArray(e)?e:[e],r=ka(),a=await Tt();for(let o of t)a=Hu(a,o.name,o.type,o.values,o.opts);let n=await r.put(a,0);return a._rev=n.rev,a},zu=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=Ku(a,e,t,r)}break;case ne.QuotaUsageType.MONTHLY:{let s=ct(),i=t;a.monthly[s][i]&&(n=a.monthly[s][i],o=Ku(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:()=>jI,get:()=>ho,save:()=>QI});var lt=require("@budibase/backend-core"),FI=()=>({_id:lt.StaticDatabases.GLOBAL.docs.licenseInfo}),QI=async e=>{let t=await ho();t={...t,...e};let a=await lt.tenancy.getGlobalDB().put(t);return t._rev=a.rev,t},ho=async()=>{let e=lt.tenancy.getGlobalDB();try{return await e.get(lt.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return FI();throw t}},jI=async()=>{let e=lt.tenancy.getGlobalDB(),t=await ho();t&&t._rev&&await e.remove(lt.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)};var M={};w(M,{bulkSave:()=>tS,destroy:()=>rS,fetch:()=>JI,generateUserGroupID:()=>HI,get:()=>XI,getBulk:()=>ZI,getByName:()=>yo,getGroupUsers:()=>Qa,getGroupUsersParams:()=>tp,getUserGroupsParams:()=>ep,save:()=>eS});var N=require("@budibase/backend-core");var Ce=require("@budibase/types"),Ft=require("@budibase/backend-core");async function Ju(){let e=Ft.sql.designDoc.base("type");e.sql.tables={[Ce.AUDIT_LOG_TYPE]:{fields:{appId:Ce.SQLiteType.TEXT,event:Ce.SQLiteType.TEXT,userId:Ce.SQLiteType.TEXT,timestamp:Ce.SQLiteType.TEXT,metadata:Ce.SQLiteType.TEXT,name:Ce.SQLiteType.TEXT,type:Ce.SQLiteType.TEXT,fallback:Ce.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:WI,SEPARATOR:$I,DocumentType:KI,createView:VI}=Fa.db,YI=KI.USER+$I;async function Xu(){let e=Fa.tenancy.getGlobalDB(),t=`function(doc) {
|
|
4
|
+
if (doc._id.startsWith("${YI}") && 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 VI(e,t,WI.USER_BY_GROUP)}var Zu=`${N.DocumentType.GROUP}${N.SEPARATOR}`;function ep(e,t={}){e||(e="");let r=e?.startsWith(N.DocumentType.GROUP)?"":Zu;return{...t,startkey:`${r}${e}`,endkey:`${r}${e}${N.UNICODE_MAX}`}}function tp(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 HI(){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,tp(e,t),r,Xu,{arrayResponse:!0})).map(n=>({_id:n.userId,email:n.email}))||[]}async function xr(e){return e.users=await Qa(e._id),e}async function zI(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 rp(){return(await N.tenancy.getGlobalDB().allDocs(ep(null,{include_docs:!0}))).rows.map(t=>t.doc)}async function JI(){let e=await rp(),t=[];for(let r of e)t.push(xr(r));return await Promise.all(t)}async function XI(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 eS(e){return await N.tenancy.getGlobalDB().put(e)}async function tS(e){return await N.tenancy.getGlobalDB().bulkDocs(e)}async function rS(e,t){let r=N.tenancy.getGlobalDB(),a=await r.get(e),n=await r.remove(e,t);return await zI(a),n}async function yo(e){let t=e.toLowerCase(),a=(await rp()).find(n=>n.name.toLowerCase()===t);if(a)return await xr(a)}var ve={};w(ve,{deleteAppBackupMetadata:()=>gS,fetchAppBackups:()=>dS,generateAppBackupID:()=>hp,getAppBackupMetadata:()=>hS,oldestBackupDate:()=>mp,storeAppBackupMetadata:()=>fS,updateAppBackupMetadata:()=>mS});var Q=require("@budibase/backend-core"),fp=require("@budibase/types");function Lr(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:np,AutomationViewMode:Ao,SEPARATOR:Fe,DocumentType:op,createView:sp}=Qt.db,aS=op.AUTOMATION_LOG+Fe,ap=op.APP_BACKUP+Fe;async function ip(){let e=Qt.context.getProdAppDB(),t=`function(doc) {
|
|
11
|
+
if (doc._id.startsWith("${aS}")) {
|
|
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 = "${Ao.AUTOMATION}${Fe}" + autoId + doc.createdAt
|
|
15
|
+
let statusKey = "${Ao.STATUS}${Fe}" + status + doc.createdAt
|
|
16
|
+
let allKey = "${Ao.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 sp(e,t,np.AUTOMATION_LOGS)}async function up(){let e=Qt.tenancy.getGlobalDB(),t=`function(doc) {
|
|
22
|
+
if (doc._id.startsWith("${ap}") && 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("${ap}" + full + doc.timestamp)
|
|
27
27
|
}
|
|
28
|
-
}`;await
|
|
28
|
+
}`;await sp(e,t,np.APP_BACKUP_BY_TRIGGER)}var dp=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:()=>oS,SELF_FREE_LICENSE:()=>bo,UNLIMITED:()=>F,UNLIMITED_LICENSE:()=>sS});var dt=require("@budibase/types");var Ze={};w(Ze,{UNLIMITED:()=>nS,actions:()=>Gr,appBackupRetentionDays:()=>Fr,apps:()=>Cr,automationLogRetentionDays:()=>kr,automations:()=>Br,budibaseAICredits:()=>Mr,creators:()=>Ur,customAIConfigurations:()=>Qr,plugins:()=>Dr,queries:()=>Nr,rows:()=>Or,userGroups:()=>qr,users:()=>Pr});var te=require("@budibase/types"),nS=-1,Or=e=>({[te.StaticQuotaName.ROWS]:{name:"Rows",value:e,triggers:[90,100]}}),Cr=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,oS={features:[],quotas:{usage:{monthly:{...Nr(F),...Br(200),...Mr(5e4),...Gr(F)},static:{...Cr(F),...Or(2e3),...Pr(5),...Ur(5),...qr(0),...Dr(10),...Qr(0)}},constant:{...kr(1),...Fr(0)}},plan:{type:dt.PlanType.FREE,usesInvoicing:!1,model:dt.PlanModel.PER_USER}},bo={features:[],quotas:{usage:{monthly:{...Nr(F),...Br(F),...Mr(5e4),...Gr(F)},static:{...Or(F),...Cr(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}},sS={features:[],quotas:{usage:{monthly:{...Nr(F),...Br(F),...Mr(F),...Gr(F)},static:{...Cr(F),...Or(F),...Pr(F),...Ur(F),...qr(F),...Dr(F),...Qr(F)}},constant:{...kr(F),...Fr(F)}},plan:{type:dt.PlanType.FREE,usesInvoicing:!1,model:dt.PlanModel.PER_USER}};var jr={};w(jr,{getLicenseVersion:()=>iS,getProVersion:()=>cp});var vt=require("@budibase/backend-core"),ja=P(require("fs")),pp=P(require("path")),iS=()=>{if(vt.env.isDev()){let e="dev-version.txt",t=pp.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 cp()},cp=()=>{let e=vt.env.VERSION;if(!e)throw new Error("No budibase pro version was specified");return e};var jt={};w(jt,{searchTable:()=>uS});var Et=require("@budibase/types"),lp=require("@budibase/backend-core");function uS(){return{type:"table",sourceType:Et.TableSourceType.INTERNAL,name:Et.AUDIT_LOG_TYPE,sourceId:lp.SQS_DATASOURCE_INTERNAL,primary:["_id"],schema:{metadata:{name:"metadata",type:Et.FieldType.JSON},fallback:{name:"fallback",type:Et.FieldType.JSON}}}}var Qe=9;var pS=new Date(864e13).toISOString(),cS=1e3*60*60*24;async function Wa(e){let r=(await Pe.getCachedLicense()).quotas?.[dp.QuotaType.CONSTANT]?.[e]?.value||0;return r===ge.UNLIMITED?new Date(pS).toISOString():new Date(new Date().getTime()-cS*r).toISOString()}async function mp(){return Wa(fp.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS)}var Io=`${Q.db.DocumentType.APP_BACKUP}${Q.db.SEPARATOR}`;async function lS(e,t,r={}){let a=await mp(),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:`${Io}${o}${Q.db.UNICODE_MAX}`,endkey:`${Io}${s}`}}async function gp(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 up(),gp(e,t);throw r}}function hp(e,t){return`${Io}${e}${Q.db.SEPARATOR}${t}`}async function dS(e,t={}){let r=Q.tenancy.getGlobalDB(),a,n=t.limit||9,o=await lS(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 gp(r,o);let s=Lr(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 fS(e,t={}){let r=Q.tenancy.getGlobalDB(),a=Q.db.getProdAppID(e.appId),n=hp(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 mS(e,t){let r=Q.tenancy.getGlobalDB(),a=await r.get(e);return a.name=t,await r.put(a)}async function gS(e){let t=Q.tenancy.getGlobalDB(),r=await t.get(e);await t.remove(r._id,r._rev)}async function hS(e){return await Q.tenancy.getGlobalDB().get(e)}var Rt={};w(Rt,{get:()=>AS,getCacheEnvVarID:()=>bp,getEnvVarID:()=>$a,update:()=>bS});var Ue=require("@budibase/backend-core"),Ap=P(require("lru-cache")),yS=1e3,yp=new Ap.default({max:yS});function $a(){return Ue.StaticDatabases.GLOBAL.docs.environmentVariables}function bp(e){return`${Ue.tenancy.getTenantId()}/${$a()}/${e||""}`}async function AS(){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=bp(r?._rev),o=yp.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:{}},yp.set(n,s),s}async function bS(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 So=require("dd-trace"),Va=new po(C.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{}},Ip=async e=>{let t,r;if(C.env.SELF_HOSTED){if(t=await Te.get(),!t.licenseKey)return;r={[C.constants.Header.LICENSE_KEY]:t.licenseKey}}else{let a=C.tenancy.getTenantId();r={[C.constants.Header.API_KEY]:C.env.ACCOUNT_PORTAL_API_KEY,[C.constants.Header.TENANT_ID]:a}}return e(r)},Sp=async()=>await So.tracer.trace("_getLicense",async()=>await Ip(async e=>{let t=await ke.getQuotaUsage();if(t.usageQuota.users==null){let i=await C.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 C.installation.getInstallFromDB(),a=C.tenancy.getTenantId(),n=await C.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 C.HTTPError(`Error getting license: ${p}`,i.status)}return i.json()}catch(i){if(C.env.DISABLE_ACCOUNT_PORTAL)return;throw i}}));C.env.isJest()&&(Sp=jest.fn());var Wt=Sp;async function wo(e){return await So.tracer.trace("getLicenseFromKey",async t=>{let r;if(!C.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:{[C.constants.Header.API_KEY]:C.env.ACCOUNT_PORTAL_API_KEY}})}catch(a){if(C.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 C.HTTPError(`Error getting license: ${a}`,r.status)}return r.json()})}var IS=e=>Ip(async t=>{let r=await Va.post("/api/license/usage/triggered",{headers:{...t},body:e});if(r.status!==200){let a=await Ya(r);C.logging.logAlert(`Error triggering quota usage: ${a}`)}}),To=async e=>{let t=await C.installation.getInstall(),r={installVersion:t.version,installId:t.installId},a=await Va.post("/api/license/activate",{headers:{[C.constants.Header.LICENSE_KEY]:e},body:r});if(a.status===403)throw new C.HTTPError("Invalid license key",400);if(a.status===409)throw new C.HTTPError("License key has already been activated",409);if(a.status!==200){let n=await Ya(a);throw new C.HTTPError(`Error activating license key: ${n}`,a.status)}return a.json()};var os=require("@budibase/backend-core");var dn={};w(dn,{activateOfflineLicenseToken:()=>nx,deleteOfflineLicenseToken:()=>ox,dev:()=>fa,enrichLicense:()=>ff,getIdentifier:()=>ts,getIdentifierBase64:()=>sx,getIdentifierFromBase64:()=>ix,getOfflineLicense:()=>rs,getOfflineLicenseToken:()=>cf,signing:()=>Vr,verifyExpiry:()=>lf,verifyInstallation:()=>df});var Vr={};w(Vr,{sign:()=>wS,verifyLicenseToken:()=>Kr});var vo=P(require("jsonwebtoken")),SS=`-----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 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:
|
|
37
|
+
`;function Kr(e){return vo.default.verify(e,SS,{algorithms:["RS256"]})}function wS(e,t){return vo.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}var Ha={};w(Ha,{getFeatures:()=>Eo});var l=require("@budibase/types");var TS={[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]},vS={[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 Eo(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(TS);break;case l.Hosting.CLOUD:r=a(vS);break}return r}var za={};w(za,{UNLIMITED:()=>d,getQuotas:()=>Ro});var G=require("@budibase/types");var c=Ze,wp=ge,d=-1,Yr=e=>e*1e6,ES={[G.PlanType.FREE]:{...wp.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)}}},RS={[G.PlanType.FREE]:{...wp.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 Ro(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(RS);break;case G.Hosting.CLOUD:r=a(ES);break}return JSON.parse(JSON.stringify(r))}var Kt={};w(Kt,{appExists:()=>_S,encoding:()=>$t});var Tp=require("@budibase/backend-core");async function _S(e){return(await Tp.db.getAllApps({all:!0,idsOnly:!0})).includes(e)}var $t={};w($t,{base64ToObject:()=>LS,objectToBase64:()=>xS});function xS(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}function LS(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}var sf=require("@budibase/types"),or=require("@budibase/backend-core"),uf=P(Gl()),pf=P(es());async function nx(e){await Te.save({offlineLicenseToken:e}),await xt()}async function ox(){await Te.save({offlineLicenseToken:void 0}),await xt()}async function cf(){return(await Te.get()).offlineLicenseToken}async function ts(){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 sx(){let e=await ts();return $t.objectToBase64(e)}function ix(e){return $t.base64ToObject(e)}function lf(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 df(e){let t=await ts();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}function ff(e){let t=e.plan.type,r=sf.Hosting.SELF,a=Eo(r,t),n=Ro(r,t);return e.features=(0,uf.default)(e.features,a),e.quotas=(0,pf.default)(e.quotas,n),e}async function rs(){try{let e=await cf();if(e){let t=await Kr(e);return lf(t),await df(t),ff(t)}}catch(e){console.error("Error retrieving offline license",e)}}var fa={};w(fa,{deleteDevLicense:()=>dx,getOfflineLicense:()=>cx,writeDevLicenseToDisk:()=>lx});var mf=require("@budibase/backend-core"),ns=require("path"),gf=require("os"),Lt=P(require("fs"));var ux=mf.env.isTest()?".budibase-test":".budibase",as=(0,ns.join)((0,gf.tmpdir)(),ux),px="dev_license.txt",da=(0,ns.join)(as,px);if(!Lt.default.existsSync(as))try{Lt.default.mkdirSync(as)}catch{}function cx(){try{if(Lt.default.existsSync(da)){let e=Lt.default.readFileSync(da,{encoding:"utf-8"});return Kr(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}function lx(e){console.log(`Writing license to: ${da}`),Lt.default.writeFileSync(da,e,{encoding:"utf-8"})}function dx(){Lt.default.rmSync(da,{force:!0})}var hf=require("dd-trace"),ss=async()=>await hf.tracer.trace("getLicense",async e=>{if(os.env.OFFLINE_MODE)return e.addTags({offline:!0}),rs();let t=await Wt();return t||(e.addTags({offlineFallback:!0}),t=fa.getOfflineLicense()),t}),is=e=>wo(e),us=()=>os.env.SELF_HOSTED?ge.SELF_FREE_LICENSE:ge.CLOUD_FREE_LICENSE;var cs={};w(cs,{activateLicenseKey:()=>fx,deleteLicenseKey:()=>mx,getLicenseKey:()=>fn});var ps=P(require("dd-trace"));async function fx(e){await To(e),await Te.save({licenseKey:e}),await xt()}async function fn(){return await ps.default.trace("getLicenseKey",async e=>{let t=await Te.get();return e.addTags({licenseKey:t.licenseKey}),t.licenseKey})}async function mx(){return await ps.default.trace("deleteLicenseKey",async()=>{await Te.save({licenseKey:void 0}),await xt()})}var Ot=require("@budibase/backend-core"),mn=P(require("dd-trace")),yf=3600,xt=async()=>{await If(),await bf()},Af=async(e,t)=>{let{populateLicense:r=ss,populateFreeLicense:a=us}=t||{};return await mn.default.trace("getCachedLicense",async n=>{let o=Ot.context.getLicense();if(o)return n.addTags({foundInContext:!0,features:o.features,plan:o.plan,quotas:o.quotas}),o;let s=Ot.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:yf}),await i.store(s,p,yf),p)})};Ot.env.isJest()&&(Af=jest.fn());var bf=Af,If=async()=>{let e=Ot.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 ls(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 ds(){return ie(se.Feature.APP_BACKUPS)}async function fs(){return ie(se.Feature.BRANDING)}async function Sf(){return ie(se.Feature.ENFORCEABLE_SSO)}async function hx(){return ie(se.Feature.SYNC_AUTOMATIONS)}async function yx(){return ie(se.Feature.TRIGGER_AUTOMATION_RUN)}async function Ct(){return ie(se.Feature.APP_BUILDERS)}async function hn(){return ie(se.Feature.AUDIT_LOGS)}async function ms(){return ie(se.Feature.USER_GROUPS)}function Ax(){return ie(se.Feature.PWA)}async function tt(){return ie(se.Feature.EXPANDED_PUBLIC_API)}async function bx(e){if(et.env.ENABLE_SSO_MAINTENANCE_MODE||!await Sf())return!1;let r;return e?.config?r=e.config:r=await et.configs.getSettingsConfig(),!!r.isSSOEnforced}var gs=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 Ix(){return ie(se.Feature.VIEW_PERMISSIONS)}async function Sx(){return ie(se.Feature.VIEW_READONLY_COLUMNS)}var wx={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 Tx(e){return await fs()?{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}:wx}var ys={};w(ys,{enrichAIConfig:()=>hs});var wf=require("@budibase/backend-core"),vx="budibase_ai";async function hs(e){if(wf.env.SELF_HOSTED)return e;for(let t of Object.values(e.config))if(t.provider==="BudibaseAI")return e;return e.config[vx]={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:()=>Lx,addApp:()=>Ox,addAutomation:()=>Nx,addGroup:()=>bs,addPlugin:()=>Ss,addRow:()=>Px,addRows:()=>qx,addUsers:()=>In,bustCache:()=>fo,decrement:()=>rt,decrementMany:()=>ma,getCurrentUsageValues:()=>zu,getLicensedQuota:()=>vf,getQuotaUsage:()=>Tt,increment:()=>Ae,incrementBudibaseAICredits:()=>wn,incrementMany:()=>Pt,removeApp:()=>Cx,removeGroup:()=>Is,removePlugin:()=>ws,removeRow:()=>Ux,removeRows:()=>Dx,removeUsers:()=>cr,set:()=>As,setAllUsage:()=>go,setAppUsageValue:()=>mo,setUsage:()=>Vu,setUsagePerApp:()=>Yu,updatePluginCount:()=>Ts,updateUsage:()=>ir,usageLimitIsExceeded:()=>xx,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)=>Tf({change:1,name:e,type:t,opts:r}),Pt=e=>sr.tracer.trace("quotas.incrementMany",async()=>Tf(e)),Tf=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})))},As=async(e,t,r)=>ke.setUsage(r,e,t),Ex=(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]||{}:{}}},Rx=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)}},_x=async(e,t,r,a)=>{let n=await Tt(),o=e===H.QuotaUsageType.MONTHLY?n.quotaReset:void 0,s=await Ex(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 Rx(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 vf(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 _x(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)})},vf=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")},xx=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 Lx=async e=>Ae(An.MonthlyQuotaName.ACTIONS,An.QuotaUsageType.MONTHLY,{fn:e});var ur=require("@budibase/types"),Ef=require("@budibase/backend-core"),Rf=async()=>{let e=await Ef.db.getAllApps({dev:!0});return e?e.length:0},Ox=async(e,{appId:t}={})=>Ae(ur.StaticQuotaName.APPS,ur.QuotaUsageType.STATIC,{fn:e,valueFn:Rf,id:t}),Cx=async({appId:e}={})=>rt(ur.StaticQuotaName.APPS,ur.QuotaUsageType.STATIC,{valueFn:Rf,id:e});var We=require("@budibase/types"),Px=async(e,{tableId:t}={})=>Ae(We.StaticQuotaName.ROWS,We.QuotaUsageType.STATIC,{fn:e,id:t}),Ux=async({tableId:e}={})=>rt(We.StaticQuotaName.ROWS,We.QuotaUsageType.STATIC,{id:e}),qx=async(e,t,{tableId:r}={})=>Pt({change:e,name:We.StaticQuotaName.ROWS,type:We.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),Dx=async(e,{tableId:t}={})=>ma({change:e,name:We.StaticQuotaName.ROWS,type:We.QuotaUsageType.STATIC,opts:{id:t}});var bn=require("@budibase/types"),Nx=async(e,{automationId:t}={})=>Ae(bn.MonthlyQuotaName.AUTOMATIONS,bn.QuotaUsageType.MONTHLY,{fn:e,id:t});var pr=require("@budibase/types"),bs=async e=>Ae(pr.StaticQuotaName.USER_GROUPS,pr.QuotaUsageType.STATIC,{fn:e}),Is=async()=>rt(pr.StaticQuotaName.USER_GROUPS,pr.QuotaUsageType.STATIC);var yt=require("@budibase/types"),Ss=async e=>Ae(yt.StaticQuotaName.PLUGINS,yt.QuotaUsageType.STATIC,{fn:e}),ws=async()=>rt(yt.StaticQuotaName.PLUGINS,yt.QuotaUsageType.STATIC),Ts=async e=>As(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:()=>Fx,db:()=>Ve,removeAppBuilder:()=>Qx});var ya=require("@budibase/backend-core");var j={};w(j,{addAppBuilder:()=>xs,addUsers:()=>Es,adjustGroupCreatorsQuotas:()=>kx,cleanupApp:()=>Gx,enrichUserRolesFromGroups:()=>Mx,fetch:()=>ha,get:()=>Ut,getBulk:()=>Uf,getGroupBuilderAppIds:()=>Pf,getGroupRoleId:()=>Bx,remove:()=>vs,removeAppBuilder:()=>Ls,removeUsers:()=>Rs,save:()=>lr,updateGroupApps:()=>_s});var x=require("@budibase/backend-core");var _f=require("@budibase/backend-core"),Tn=class extends _f.HTTPError{constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function Of(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 Cf(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await M.getBulk(e,{enriched:!1}),t}async function Pf(e,t){if(!e.userGroups)return[];let r=await Cf(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 Bx(e,t,r){if(!e.userGroups)return null;let a=await Cf(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 Of(a,t))}async function Mx(e){if(!e||!e.userGroups)return e;let t=await Uf(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 Of(t,n);o&&(e.roles[n]=o)});let a=await Pf(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 Uf(e,t={enriched:!0}){return await M.getBulk(e,t)}async function xf(e){if(await M.getByName(e))throw new Tn(e)}async function Lf(e){let t=await M.getGroupUsers(e._id);if(!t.length)return 0;let a=await x.tenancy.getGlobalDB().getMultiple(t.map(o=>o._id));return(await x.userUtils.creatorsInList(a)).filter(o=>o).length}async function lr(e){let t=[],r=!e._id,a=0;if(delete e.users,!e._id)e._id=M.generateUserGroupID(),await xf(e.name),t.push(x.events.group.created(e));else{let o=await M.get(e._id);if(o.name!==e.name&&await xf(e.name),t.push(x.events.group.updated(e)),JSON.stringify(o.roles)!==JSON.stringify(e.roles)){let s=o.users?.length||0,i=0;s>0&&(i=await Lf(o)),Object.values(e.roles).includes("CREATOR")?a=s-i:a=-s,t.push(x.events.group.permissionsEdited(e))}}await Promise.all(t);let n=()=>M.save(e);if(r)return await bs(n);{let o=await n();if(a>0)await In(0,a);else if(a<0){let s=await Lf(e),i=Math.abs(a)-s;i>0&&await cr(0,i)}return o}}async function vs(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=()=>cr(0,g))}let o=await M.destroy(e,t);return await x.events.group.deleted(r),await Is(),await n(),o}async function Es(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 Rs(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 _s(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 Gx(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 xs(e,t){if(!await Ct())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 Ls(e,t){if(!await Ct())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 kx(){if(!await ms()){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 Fx(e,t){if(!await Ct())throw new Error("Feature not enabled, please check license");await ya.users.addAppBuilder(e,t)}async function Qx(e,t){if(!await Ct())throw new Error("Feature not enabled, please check license");await ya.users.removeAppBuilder(e,t)}var Rn={};w(Rn,{logs:()=>Ns});var Ns={};w(Ns,{logSearch:()=>Jx,oldestLogDate:()=>kf,storeLog:()=>Xx});var Gf=require("@budibase/types"),En=require("@budibase/backend-core");var vn=require("@budibase/types");var Z=require("@budibase/backend-core");var qf=require("@budibase/backend-core");async function Df(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||qf.logging.logWarn(`Failed to backoff: ${t}`,r),o}var{SEPARATOR:nt,UNICODE_MAX:jx,DocumentType:Nf,AutomationViewMode:Os,ViewName:Wx,getQueryIndex:$x}=Z.db,Kx=new Date(0).toISOString(),Vx=100,Cs=async()=>Wa(vn.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS);function Bf(e,t,{status:r,automationId:a}={},n={}){let o=a?`${a}${nt}`:"",s=r?`${r}${nt}`:"",i;return r&&a?i=`${Os.ALL}${nt}${s}${o}`:r?i=`${Os.STATUS}${nt}${s}`:a?i=`${Os.AUTOMATION}${nt}${o}`:i=`${Nf.AUTOMATION_LOG}${nt}`,{...n,descending:!0,startkey:`${i}${t}${jx}`,endkey:`${i}${e}`}}function Yx(e,t,r){return`${Nf.AUTOMATION_LOG}${nt}${e}${nt}${r}${nt}${t}`}async function Ps(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=Bf(e,t,n,{include_docs:r.docs,limit:o});r?.page&&(s.startkey=r.page);let i=await a.allDocs(s);return Lr(i,{paginate:r?.paginate,pageSize:9})}async function Us(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=Bf(e,t,o,{include_docs:!0,limit:9+1});r?.page&&(s.startkey=r.page),n=await a.query($x(Wx.AUTOMATION_LOGS),s)}catch(o){if(o!=null&&(o.name==="not_found"||o.error==="not_found"))return await ip(),Us(e,t,r);throw o}return Lr(n,{paginate:!0,pageSize:9})}async function Mf(e,t){let r=Z.context.getProdAppDB(),a=e._id,n=e.name,o=new Date().toISOString(),s=Yx(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 qs(e,{clearing:t}={clearing:!1}){let r=Z.context.getProdAppDB();await Df(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 Hx(){let e=await Cs();try{return await Ps(Kx,e,{docs:!1,paginate:!1,limit:Vx})}catch{return{data:[],hasNextPage:!1}}}async function Ds(){let e=Z.context.getProdAppDB();try{let t=await Hx();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 qs(a,{clearing:!0})}catch(t){Z.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}var kf=Cs;async function zx(e,t,r,a){let n,o=new Date().toISOString(),s=await kf();return(!e||e<s)&&(e=s),r||t?n=await Us(e,o,{automationId:r,status:t,page:a}):n=await Ps(e,o,{status:t,page:a,docs:!0,paginate:!0}),n}async function Jx(e){return await Ds(),await zx(e.startDate,e.status,e.automationId,e.page)}async function Xx(e,t){if(!En.db.isProdAppID(En.context.getAppId()))return;let r=await Mf(e,t);t.status===Gf.AutomationStatus.ERROR&&await qs([r]),await Ds()}var _n={};w(_n,{checkPluginQuotas:()=>tL,deletePlugin:()=>eL,storePlugin:()=>Zx});var Wf=require("@budibase/types"),z=require("@budibase/backend-core");var Ff=P(require("fs")),Qf=require("path");function jf(e,t){return Ff.default.readFileSync((0,Qf.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===Wf.PluginType.DATASOURCE){let js=jf(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 Ss(write)}async function eL(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 ws()}catch(r){let a=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${a}`)}}async function tL(){let e=z.tenancy.getGlobalDB();try{let r=(await e.allDocs(z.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await Ts(r)}catch(t){z.logging.logAlert("Unable to retrieve plugins for quota check",t)}}var Ye={};w(Ye,{fetch:()=>aL,fetchValues:()=>nL,isEncryptionKeyAvailable:()=>rL,isValid:()=>Vf,remove:()=>sL,update:()=>oL});var Aa=require("@budibase/types"),$f=require("@budibase/backend-core");function rL(){return!!$f.env.ENCRYPTION_KEY}async function aL(){let e=await Rt.get();return Object.keys(e.variables)}async function nL(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 Kf(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 oL(e,t){if(Vf(e))await Kf(a=>(a[e]=t,a));else throw new Error("Variable name has characters that are not allowed")}async function sL(e){await Kf(t=>(delete t[e],t))}function Vf(e){return/^[a-zA-Z0-9-_]+$/.test(e)}var At={};w(At,{definitions:()=>yL,download:()=>hL,fetch:()=>gL,write:()=>fL});var Ln=require("@budibase/types");var K=require("@budibase/backend-core"),Ne=require("@budibase/types");var Yf=require("memorystream"),Hf=new K.sql.Sql(Ne.SqlClient.SQL_LITE);async function iL(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=Hf._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 uL(e){return`${K.DocumentType.AUDIT_LOG}${K.SEPARATOR}${e}${K.SEPARATOR}${K.utils.newid()}`}async function zf(e){e._id||(e._id=uL(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 Bs(e,t,r){t||(t=1);let a=K.context.getAuditLogsDB();try{let n=9+1,o=await iL(e,t,n),s=jt.searchTable(),i=Hf.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 pL(),await Ju(),await Bs(e,t,{isRetry:!0});throw n}}async function pL(){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 Jf(e){let t=K.context.getAuditLogsDB(),r=new Yf,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 Yf;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"),lL=Ia.constants.MIN_VALID_DATE.toISOString(),dL=Ia.constants.MAX_VALID_DATE.toISOString();function Ms(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||lL,e.endDate=e.endDate||dL),e}async function Xf(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=Ms(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}function Gs(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 ks(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=ks(r)),a}async function fL(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||Ln.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 zf(o)}async function mL(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||Gs(i.userId,"user",i.fallback)};i.appId&&(f.app=m||Gs(i.appId,"app",i.fallback)),s.push(f)}return s}async function gL(e){if(!await hn())throw new Error("Audit logs not available - license required.");let t=await Xf(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await Bs(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await mL(r.rows)}}function hL(e){return e=Ms(e),Jf(e)}function yL(){let e=Object.entries(Ln.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=ks(r[1]);return t}var On={};w(On,{applications:()=>$s,roles:()=>Qs,users:()=>Fs});var Fs={};w(Fs,{roleCheck:()=>bL});function AL(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 bL(e,t){return await tt()||AL(e,t),e}var Qs={};w(Qs,{assign:()=>IL,unAssign:()=>SL});var Sa=require("@budibase/backend-core");async function IL(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 SL(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 $s={};w($s,{buildExportFn:()=>TL,buildImportFn:()=>wL});var Ws=require("@budibase/backend-core");function wL(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 Ws.context.doInAppContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}function TL(e){return async(t,r)=>{await tt()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:a,excludeRows:n}=t.request.body;await Ws.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 Ks=require("@budibase/backend-core"),em;function tm(){em=new Ks.queue.BudibaseQueue(Ks.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}function qt(){return em}var rm=require("path"),am=P(require("fs"));async function Vs(e,t={}){return ve.storeAppBackupMetadata(e,t)}function nm(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 vL(e,t,r,a){let n=await Cn(e);return await ve.storeAppBackupMetadata({...n,...nm(t),contents:r,status:t,type:ue.AppBackupType.BACKUP},{filename:a,docId:e})}async function EL(e,t,r){let a=await Cn(e);return await ve.storeAppBackupMetadata({...a,...nm(r),status:r,type:ue.AppBackupType.RESTORE,trigger:ue.AppBackupTrigger.MANUAL},{docId:e,docRev:t})}async function Cn(e){return ve.getAppBackupMetadata(e)}async function RL(e,t){return ve.updateAppBackupMetadata(e,t)}async function _L(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 xL(e,t){return ve.fetchAppBackups(e,t)}async function om(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 LL(e){let{stream:t}=await om(e),r=(0,rm.join)(He.objectStore.budibaseTempDir(),He.utils.newid()),a=am.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 OL(e,t,r={}){let a;try{a=await Vs({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 CL(e,t,r,a){let n=await Cn(t),o;try{o=await Vs({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 PL={isEnabled:ds,triggerAppRestore:ye(CL),triggerAppBackup:ye(OL),getBackupDownloadStream:ye(om),downloadAppBackup:ye(LL),fetchAppBackups:ye(xL),storeAppBackupMetadata:ye(Vs),updateBackupStatus:ye(vL),updateRestoreStatus:ye(EL),getAppBackup:ye(Cn),updateAppBackup:ye(RL),deleteAppBackup:ye(_L)},ot=PL;var Hs={};w(Hs,{init:()=>Ys});var J=require("@budibase/backend-core");var Be=require("@budibase/types");var dr=P(require("fs"));async function Ys(e){qt().process(async t=>{let r=t.data;try{if(r.export)return DL(t,e);if(r.import)return qL(t,e)}catch(a){J.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,a)}})}async function UL(e){await J.db.getDB(e,{skip_setup:!0}).destroy()}async function sm(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 qL(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 sm(Be.AppBackupTrigger.RESTORING,i,a,{processing:t,createdBy:s,name:o});let f=await ot.downloadAppBackup(n);await UL(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 DL(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 sm(n,s,a,{processing:t,doc:{id:r.docId,rev:i},name:o})}catch(i){J.logging.logAlert("App backup error",i)}})}var NL=async e=>{tm(),await Ys(e.processing)},Re={...ot,processing:Hs,init:NL,getBackupQueue:qt};var im=async e=>{e.backups&&await Re.init(e.backups)};var fe={};w(fe,{create:()=>LM,find:()=>xM,get:()=>_M,remove:()=>CM,update:()=>OM});var LA=P(ji()),st=require("@budibase/backend-core");var OA=require("@budibase/types");async function _M(e){let t=st.tenancy.getGlobalDB(),r=new st.db.QueryBuilder(t.name,OA.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 xM(e){return await st.users.getById(e)}async function LM(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,LA.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 OM(e,t){return await Ve.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}async function CM(e){return await Ve.destroy(e)}var Ar={};w(Ar,{create:()=>PM});var CA=P(ji());var PA=require("@budibase/backend-core");async function PM(e){let t=await yo(e.name),r;if(!t)r=(await j.save(e)).id;else{if(t.scimInfo?.isSync)throw new PA.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,CA.default)(t.scimInfo,e.scimInfo),await j.save(t)}return await j.get(r)}var Nt={};w(Nt,{logRequest:()=>UM,logResponse:()=>qM});var Wi=require("@budibase/backend-core");async function UM(e){Wi.logging.logWarn("SCIM request log",e)}async function qM(e){Wi.logging.logWarn("SCIM response error",e)}var zi={};w(zi,{doInScimContext:()=>Ki,feature:()=>W,internalGroupOnly:()=>Kn,licenseAuth:()=>DA,licensing:()=>UA,requireSCIM:()=>Vi,scimGroupOnly:()=>Ea,scimUserOnly:()=>va});var bt=require("@budibase/backend-core");var Wn=require("@budibase/types"),DM=(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=bo,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()},UA=DM;var W={};w(W,{requireFeature:()=>NM,requireFeatures:()=>BM});var NM=e=>async(t,r)=>{await gn(e),await r()},BM=(...e)=>async(t,r)=>{await ls(e),await r()};var $n=require("@budibase/backend-core");var Ki=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 Vi=async(e,t)=>{await gs(),await t()};var qA=require("@budibase/backend-core");var va=e=>Yi(qA.users.getById,e,!0),Ea=e=>Yi(M.get,e,!0),Kn=e=>Yi(M.get,e,!1);function Yi(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 Hi=require("dd-trace");async function DA(e,t){await Hi.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 is(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"),Hi.tracer.setUser({id:"anonymous",tenantId:n.tenantId}),await Ra.context.doInSelfHostTenantUsingCloud(n.tenantId,async()=>{await Ra.context.doInLicenseContext(n,async()=>{await t()})})})}var ou={};w(ou,{appBackups:()=>Sb,auditLogs:()=>cb,environmentVariables:()=>rb,groups:()=>VA,scim:()=>Jb,users:()=>rI});async function NA(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 BA(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 Es(t,r)),a&&(o=await Rs(t,a)),e.body={added:n,removed:o}}async function MA(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 _s(t,{appsToAdd:r,appsToRemove:a})}async function GA(e){e.body={data:await ha()}}async function kA(e){let{groupId:t,rev:r}=e.params;try{await vs(t,r),e.body={message:"Group deleted successfully"}}catch(a){e.throw(a.status,a)}}async function FA(e){try{e.body=await Ut(e.params.groupId)}catch(t){e.throw(t.status,t)}}async function QA(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 jA(e){let{groupId:t,appId:r}=e.params;await xs(t,r),e.body={message:"Group app builder access updated."}}async function WA(e){let{groupId:t,appId:r}=e.params;await Ls(t,r),e.body={message:"group app builder access removed."}}var $A=P(require("@koa/router")),be=P(require("joi"));var _e=require("@budibase/types"),ze=require("@budibase/backend-core"),KA=new $A.default;function GM(){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())}KA.post("/api/global/groups",ze.auth.adminOnly,W.requireFeature(_e.Feature.USER_GROUPS),GM(),NA).get("/api/global/groups",W.requireFeature(_e.Feature.USER_GROUPS),GA).delete("/api/global/groups/:groupId/:rev",W.requireFeature(_e.Feature.USER_GROUPS),ze.auth.adminOnly,Kn("groupId"),kA).get("/api/global/groups/:groupId",W.requireFeature(_e.Feature.USER_GROUPS),ze.auth.builderOrAdmin,FA).get("/api/global/groups/:groupId/users",W.requireFeature(_e.Feature.USER_GROUPS),ze.auth.builderOrAdmin,QA).post("/api/global/groups/:groupId/users",ze.auth.adminOnly,W.requireFeature(_e.Feature.USER_GROUPS),Kn("groupId"),BA).post("/api/global/groups/:groupId/apps",ze.auth.builderOrAdmin,W.requireFeature(_e.Feature.USER_GROUPS),MA).post("/api/global/groups/:groupId/app/:appId/builder",ze.auth.builderOrAdmin,W.requireFeatures(_e.Feature.USER_GROUPS,_e.Feature.APP_BUILDERS),jA).delete("/api/global/groups/:groupId/app/:appId/builder",ze.auth.builderOrAdmin,W.requireFeatures(_e.Feature.USER_GROUPS,_e.Feature.APP_BUILDERS),WA);var VA=KA;var Ji=require("@budibase/types");var Xi=require("@budibase/backend-core");async function YA(e){e.body={encryptionKeyAvailable:Ye.isEncryptionKeyAvailable()}}async function HA(e){e.body={variables:await Ye.fetch()}}async function zA(e){let{name:t,production:r,development:a}=e.request.body;await Ye.update(t,{production:r,development:a});let n=[Ji.AppEnvironment.PRODUCTION];r!==a&&n.push(Ji.AppEnvironment.DEVELOPMENT),await Xi.events.environmentVariable.created(t,n),e.body={message:`Environment variable "${t}" created.`}}async function JA(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 XA(e){let t=e.params.varName;await Ye.remove(t),await Xi.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}var Bt=require("@budibase/backend-core"),eb=P(require("@koa/router")),_a=P(require("joi")),tb=new eb.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()}))}tb.get("/api/env/variables/status",Bt.auth.builderOrAdmin,YA).get("/api/env/variables",Bt.auth.builderOrAdmin,HA).post("/api/env/variables",Bt.auth.builderOrAdmin,ZA(),zA).patch("/api/env/variables/:varName",Bt.auth.builderOrAdmin,ZA(),JA).delete("/api/env/variables/:varName",Bt.auth.builderOrAdmin,XA);var rb=tb;var Zi=require("@budibase/backend-core");async function ab(e){let t=e.request.body,r=await At.fetch(t);await Zi.events.auditLog.filtered(t),e.body=r}async function nb(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 ob(e){e.body={events:At.definitions()}}var ib=require("@budibase/types"),Mt=require("@budibase/backend-core"),ub=P(require("@koa/router")),xe=P(require("joi"));function sb(){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(ib.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 pb=new ub.default;pb.post("/api/global/auditlogs/search",Mt.auth.adminOnly,sb(),ab).get("/api/global/auditlogs/download",Mt.auth.adminOnly,Mt.middleware.querystringToBody,sb(),nb).get("/api/global/auditlogs/definitions",Mt.auth.adminOnly,ob);var cb=pb;var eu=require("@budibase/types");var lb=require("@budibase/backend-core");async function br(e,t){await Kt.appExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}async function fb(e){let t=e.params.appId;await br(e,t);let r=e.request.body,a=e.user?._id,n=await Re.triggerAppBackup(t,eu.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 mb(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 lb.events.backup.appBackupRestored(n.metadata),e.body={restoredId:n?.restoreId,message:"Restore triggered - process starting."}}async function gb(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 hb(e){let t=e.params.appId;await br(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(eu.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 yb(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 Ab(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 bb=P(require("@koa/router")),Gt=P(require("joi")),Vn=require("@budibase/types"),It=require("@budibase/backend-core"),Ib=new bb.default;function jM(){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()}))}Ib.post("/api/apps/:appId/backups",It.auth.builderOrAdmin,fb).post("/api/apps/:appId/backups/search",It.auth.builderOrAdmin,jM(),hb).get("/api/apps/:appId/backups/:backupId/file",It.auth.builderOrAdmin,Ab).patch("/api/apps/:appId/backups/:backupId",It.auth.builderOrAdmin,yb).delete("/api/apps/:appId/backups/:backupId",It.auth.builderOrAdmin,gb).post("/api/apps/:appId/backups/:backupId/import",It.auth.builderOrAdmin,mb);var Sb=Ib;var zb=P(require("@koa/router"));var Yn=require("scim-patch");var Tb=require("@budibase/backend-core");function wb(e,t){let r=e.request.query[t];if(r!==void 0)return+r}var vb=async e=>{let t=wb(e,"pageSize")??20,r=wb(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}},Eb=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)},Rb=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 Tb.EmailUnavailableError&&e.throw(409,"Email already in use"),r}};function WM(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 _b=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(WM(a))return tu(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)},tu=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await fe.remove(t),e.status=204};var Qb=P(Fb()),jb=require("@budibase/shared-core"),Hn=require("scim-patch");var zn=require("scim2-parse-filter");function Wb(e,t){for(let r of t.split(","))delete e[r]}var $b=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=>{Wb(o,n)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},Kb=async e=>{let t=V.group.fromScimGroup(e.request.body),r=await Ar.create(t);e.body=V.group.toScimGroupResponse(r)},Vb=async e=>{let{id:t}=e.params,r=await j.get(t),a=V.group.toScimGroupResponse(r),{excludedAttributes:n}=e.request.query;n&&Wb(a,n),e.body=a},Yb=async e=>{let{id:t}=e.params,r=await j.get(t);await j.remove(t,r._rev),e.status=204},Hb=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,Qb.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:jb.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 zb.default({prefix:"/api/global/scim/v2"});Ie.use(Vi);Ie.use(Ki);Ie.get("/users",vb);Ie.get("/users/:id",va("id"),Eb);Ie.post("/users",Rb);Ie.patch("/users/:id",va("id"),_b);Ie.delete("/users/:id",va("id"),tu);Ie.get("/groups",$b);Ie.post("/groups",W.requireFeature(xa.Feature.USER_GROUPS),Kb);Ie.get("/groups/:id",W.requireFeature(xa.Feature.USER_GROUPS),Ea("id"),Vb);Ie.delete("/groups/:id",W.requireFeature(xa.Feature.USER_GROUPS),Ea("id"),Yb);Ie.patch("/groups/:id",W.requireFeature(xa.Feature.USER_GROUPS),Ea("id"),Hb);var Jb=Ie;var eI=P(require("@koa/router"));var ru=require("@budibase/backend-core");async function Xb(e){let{userId:t,appId:r}=e.params,a=await at.db.getUser(t);if(ru.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(ru.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 au=require("@budibase/types"),nu=require("@budibase/backend-core"),tI=new eI.default;tI.post("/api/global/users/:userId/app/:appId/builder",nu.auth.builderOrAdmin,W.requireFeatures(au.Feature.APP_BUILDERS),Xb).delete("/api/global/users/:userId/app/:appId/builder",nu.auth.builderOrAdmin,W.requireFeatures(au.Feature.APP_BUILDERS),Zb);var rI=tI;var V={};w(V,{group:()=>iu,user:()=>su});var su={};w(su,{fromScimUser:()=>bG,toScimUserResponse:()=>hG,userFilters:()=>IG});var Jn=require("@budibase/types"),aI=require("scim2-parse-filter"),nI=require("@budibase/backend-core"),oI=require("@budibase/shared-core"),{unreachable:gG}=oI.utils,hG=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},yG=e=>!!e?.id;function AG(e){if(nI.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}var bG=e=>{let t=yG(e)?e:void 0,r=AG(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:gG(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()}},IG=e=>{let t={equal:{}},r=(0,aI.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 iu={};w(iu,{fromScimGroup:()=>TG,toScimGroupResponse:()=>SG});var SG=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}))}),wG=e=>!!e?.id,TG=e=>{let t=wG(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 Cu={};w(Cu,{LLM:()=>Je,LLMRequest:()=>$,TableGeneration:()=>Ou,agentHistoryTitleSystemPrompt:()=>qG,agentSystemPrompt:()=>UG,aiColumnSchemas:()=>xu,aiTableResponseToTableSchema:()=>vu,appendAIColumns:()=>Eu,classifyText:()=>cu,cleanData:()=>lu,extractFileData:()=>LG,generateAIColumns:()=>wu,generateCode:()=>PG,generateCronExpression:()=>du,generateData:()=>Tu,generateJs:()=>hu,generateSQL:()=>CG,generateTables:()=>Su,generationStructure:()=>_u,getLLM:()=>Ca,getLLMConfig:()=>Iu,getLLMOrThrow:()=>gI,normalizeContentType:()=>uu,parseResponseFormat:()=>Zn,sanitiseToolName:()=>vG,searchWeb:()=>gu,sentimentAnalysis:()=>mu,summarizeText:()=>Xn,tableDataStructuredOutput:()=>Lu,translate:()=>fu});var La=require("@budibase/types");function vG(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 uu(e){return e?e.includes("/")?e:{[La.SupportedFileType.PDF]:"application/pdf",[La.SupportedFileType.JPG]:"image/jpeg",[La.SupportedFileType.JPEG]:"image/jpeg",[La.SupportedFileType.PNG]:"image/png"}[e.toLowerCase()]||"application/octet-stream":"application/octet-stream"}var no=require("@budibase/types");var Xe=require("@budibase/backend-core"),lI=require("@budibase/types");var eo=P(require("openai"));var St=require("@budibase/types");var sI=require("@budibase/shared-core");var wt=P(require("dd-trace"));function pu(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(du(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(pu(r,o));case St.AIOperationEnum.CLEAN_DATA:return lu(r[n]);case St.AIOperationEnum.TRANSLATE:return fu(r[n],s);case St.AIOperationEnum.CATEGORISE_TEXT:if(!i)throw Error("No categories provided for categorise text operation. Please provide categories.");return cu(pu(r,o),i.split(","));case St.AIOperationEnum.SENTIMENT_ANALYSIS:return mu(r[n]);case St.AIOperationEnum.PROMPT:return p;case St.AIOperationEnum.SEARCH_WEB:return gu(pu(r,o));default:throw sI.utils.unreachable(a)}}async generateJs(t,r){return await wt.default.trace("generateJs",async()=>{let{bindings:a=[],snippets:n=[]}=r||{};return await this.prompt(hu(a,n).addUserMessage(t))})}};var uI=require("@budibase/types"),yu=require("openai/helpers/zod");function Zn(e){if(e)return e==="text"?{type:"text"}:e==="json"?{type:"json_object"}:e}function iI(e){if(!e)return 0;let t=e.prompt_tokens;return e.completion_tokens*3+t}var Le=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=uu(n);if(uI.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(yu.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:iI(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(yu.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?iI(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"),pI=require("@budibase/types");var Au=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 Le({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&&pI.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 Au.tracer.trace("chatCompletionCloud",async()=>await new Le({apiKey:ee.env.OPENAI_API_KEY,model:this.model,maxTokens:this.maxTokens}).chatCompletion(t))}async chatCompletionSelfHost(t){return await Au.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 Le({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 bu=P(require("@anthropic-ai/sdk"));function EG(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 bu.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:EG(a.usage)}}catch(a){throw a instanceof bu.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 dI=require("zod"),fI=require("openai/helpers/zod");var cI=require("openai"),ao=class extends Le{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 cI.AzureOpenAI({apiKey:t.apiKey,apiVersion:"2024-10-01-preview",baseURL:t.baseUrl})}};var mI="gpt-4o-mini",RG={OpenAI:Le,TogetherAI:Le,AzureOpenAI:ao,Custom:Le,Anthropic:ro,BudibaseAI:to};async function _G(){return await Oa.tracer.trace("getAIConfig",async e=>{let t={type:lI.ConfigType.AI,config:{}};if(!Xe.context.isSelfHostUsingCloud()){let a=await Xe.configs.getAIConfig();a&&(t=a)}await hs(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||mI,apiKey:r.apiKey,baseUrl:r.baseUrl}})}async function xG(){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:mI,apiKey:Xe.env.OPENAI_API_KEY}})}async function Iu(){return Oa.tracer.trace("getLLMConfig",async()=>await _G()||await xG())}async function Ca(e){return await Oa.tracer.trace("getLLM",async t=>{let{model:r,maxTokens:a}=e||{},n=await Iu();if(!n){t.addTags({enabled:!1,reason:"no config found"});return}r&&(n.model=r),a&&(n.maxTokens=a);let o=RG[n.provider];if(!o){t.addTags({enabled:!1,reason:"no provider found",provider:n.provider});return}return new o(n)})}async function gI(){let e=await Ca();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 dI.z.ZodType?this.format=(0,fI.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
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
|
|
40
|
+
Only return the summary.`)}function LG(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=OG(e),s=it.z.object({data:it.z.array(o)});return new $().addMessages([{role:"user",content:n}]).withFormat(s)}function OG(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 cu(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 lu(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 CG(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 PG(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 du(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 fu(e,t){return new $().addUserMessage(`Translate the following text: "${e}" into ${t}. Only return the translation.`)}function mu(e){return new $().addUserMessage(`Return the sentiment of this text: "${e}". Only return the sentiment.`)}function gu(e){return new $().addUserMessage(`Search the web for the following: "${e}". Only return the top results.`)}function hu(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 Su(){let e=`
|
|
148
148
|
You are generating Budibase table schemas from user prompts.
|
|
149
149
|
Always return at least 2 tables, and define only one side of relationships using a link field.
|
|
150
150
|
Exclude id, created_at, and updated_at (Budibase adds them).
|
|
@@ -152,10 +152,10 @@ Include a variety of column types: text, dropdown, date, number.
|
|
|
152
152
|
Add at least one formula column, one attachment, and one multi-attachment column across the tables.
|
|
153
153
|
Budibase handles reverse relationships and many-to-many links \u2014 never define join tables or reverse fields.
|
|
154
154
|
You may specify foreignColumnName, but do not create that field manually.
|
|
155
|
-
`;return new $().addSystemMessage(e)}function
|
|
155
|
+
`;return new $().addSystemMessage(e)}function wu(){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 Tu(){let e=`
|
|
156
156
|
For each table, populate the data field with realistic-looking sample records.
|
|
157
157
|
Avoid placeholder values like "foo" or "bar". Use real names, emails, etc., and ensure values are unique across rows.
|
|
158
|
-
`;return new $().addSystemMessage(e)}function
|
|
158
|
+
`;return new $().addSystemMessage(e)}function UG(e){return`You are a helpful support agent who uses workflows to resolve user issues efficiently.
|
|
159
159
|
|
|
160
160
|
- The user will ask support queries.
|
|
161
161
|
- Your replies MUST be short, concise, and directly answer the user's question as quickly and clearly as possible.
|
|
@@ -170,15 +170,15 @@ Avoid placeholder values like "foo" or "bar". Use real names, emails, etc., and
|
|
|
170
170
|
|
|
171
171
|
\`\`\`
|
|
172
172
|
${JSON.stringify(e)}
|
|
173
|
-
\`\`\``}function
|
|
173
|
+
\`\`\``}function qG(){return`You will be provided with a set of history, a conversation between a user and an AI. Using this
|
|
174
174
|
information generate a title for the conversation, this should start with a capital letter and MUST be
|
|
175
|
-
less than five words.`}var Pa=require("@budibase/backend-core"),
|
|
175
|
+
less than five words.`}var Pa=require("@budibase/backend-core"),AI=require("@budibase/shared-core");var ut=require("@budibase/types"),hI=require("@budibase/backend-core");function vu(e){let t=[],r=[];for(let a of e.tables){let n=a.schema.reduce((o,s)=>{if(s.type===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:hI.docIds.generateTableID(),name:a.name,primaryDisplay:a.primaryDisplay,schema:n})}return t}function Eu(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.")}),Ru=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.")}),DG=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()}),Ru.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."),Ru.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."),Ru.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(`
|
|
176
176
|
A JavaScript expression using only previously defined fields.
|
|
177
177
|
Reference fields using $("Field name"). Must end with: return ...
|
|
178
178
|
Example: return $("Score") + $("Weight")
|
|
179
|
-
`),responseType:A.z.enum([T.FieldType.STRING,T.FieldType.NUMBER,T.FieldType.BOOLEAN,T.FieldType.DATETIME])}).describe("Define these types after the other types"),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.")])),_u=A.z.object({tables:A.z.array(A.z.object({name:A.z.string(),schema:DG,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 xu(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"),yI=require("@budibase/shared-core"),q=require("@budibase/types");function Lu(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 yI.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:
|
|
180
180
|
1. If we have posts and comments, there should be more posts than users, and more comments than posts.
|
|
181
181
|
2. If it's a ticketing system, there may be more tickets than users, and some users may have submitted several tickets.
|
|
182
182
|
3. In a CRM, there are fewer users than customers, and customers may have many deals.
|
|
183
|
-
4. In a project management tool, projects might have many tasks, and tasks might have multiple comments.`)}return t}var Ua=P(require("dd-trace")),
|
|
184
|
-
"${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")),Ou=class e{constructor(t,r){this.llmFunctions={getTableStructure:async t=>Ua.default.trace("llm.getTableStructure",async()=>{let r=await this.llm.prompt(Su().addUserMessage(t).withFormat(_u));try{let a=JSON.parse(r.message);return vu(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(Tu().addUserMessage(t).withFormat(Lu(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 Ca({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(Eu(a,i))),o=await this.llmFunctions.generateData(t,a),s=await n;return await this.delegates.generateDataDelegate(o,r,AI.utils.toMap("name",a)),s}async generateAIColumns(t,r){let a=await this.llm.prompt(wu().addUserMessage(`This is the initial user prompt that generated the given schema:
|
|
184
|
+
"${t}"`).withFormat(xu(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/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"dist"
|
|
5
5
|
],
|
|
6
6
|
"license": "UNLICENSED",
|
|
7
|
-
"version": "3.12.
|
|
7
|
+
"version": "3.12.21",
|
|
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": "bbbe8366ca8a03851165eec833adcfed130c5fb5"
|
|
77
77
|
}
|