@budibase/pro 3.13.12 → 3.13.13
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 +7 -7
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
"use strict";var OI=Object.create;var Da=Object.defineProperty;var LI=Object.getOwnPropertyDescriptor;var CI=Object.getOwnPropertyNames;var PI=Object.getPrototypeOf,UI=Object.prototype.hasOwnProperty;var u=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),w=(e,t)=>{for(var r in t)Da(e,r,{get:t[r],enumerable:!0})},Gu=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of CI(t))!UI.call(e,n)&&n!==r&&Da(e,n,{get:()=>t[n],enumerable:!(a=LI(t,n))||a.enumerable});return e};var P=(e,t,r)=>(r=e!=null?OI(PI(e)):{},Gu(t||!e||!e.__esModule?Da(r,"default",{value:e,enumerable:!0}):r,e)),qI=e=>Gu(Da({},"__esModule",{value:!0}),e);var Xa=u((e0,vp)=>{"use strict";function CS(e,t){for(var r=-1,a=t.length,n=e.length;++r<a;)e[n+r]=t[r];return e}vp.exports=CS});var xo=u((t0,Rp)=>{"use strict";var PS=typeof global=="object"&&global&&global.Object===Object&&global;Rp.exports=PS});var ie=u((r0,_p)=>{"use strict";var US=xo(),qS=typeof self=="object"&&self&&self.Object===Object&&self,DS=US||qS||Function("return this")();_p.exports=DS});var _t=u((a0,xp)=>{"use strict";var NS=ie(),BS=NS.Symbol;xp.exports=BS});var Pp=u((n0,Cp)=>{"use strict";var Op=_t(),Lp=Object.prototype,MS=Lp.hasOwnProperty,kS=Lp.toString,zr=Op?Op.toStringTag:void 0;function GS(e){var t=MS.call(e,zr),r=e[zr];try{e[zr]=void 0;var a=!0}catch{}var n=kS.call(e);return a&&(t?e[zr]=r:delete e[zr]),n}Cp.exports=GS});var qp=u((o0,Up)=>{"use strict";var FS=Object.prototype,QS=FS.toString;function jS(e){return QS.call(e)}Up.exports=jS});var mt=u((s0,Bp)=>{"use strict";var Dp=_t(),WS=Pp(),$S=qp(),KS="[object Null]",VS="[object Undefined]",Np=Dp?Dp.toStringTag:void 0;function YS(e){return e==null?e===void 0?VS:KS:Np&&Np in Object(e)?WS(e):$S(e)}Bp.exports=YS});var Ae=u((i0,Mp)=>{"use strict";function HS(e){return e!=null&&typeof e=="object"}Mp.exports=HS});var Gp=u((u0,kp)=>{"use strict";var zS=mt(),JS=Ae(),XS="[object Arguments]";function ZS(e){return JS(e)&&zS(e)==XS}kp.exports=ZS});var Jr=u((p0,jp)=>{"use strict";var Fp=Gp(),ew=Ae(),Qp=Object.prototype,tw=Qp.hasOwnProperty,rw=Qp.propertyIsEnumerable,aw=Fp(function(){return arguments}())?Fp:function(e){return ew(e)&&tw.call(e,"callee")&&!rw.call(e,"callee")};jp.exports=aw});var ne=u((c0,Wp)=>{"use strict";var nw=Array.isArray;Wp.exports=nw});var Yp=u((l0,Vp)=>{"use strict";var $p=_t(),ow=Jr(),sw=ne(),Kp=$p?$p.isConcatSpreadable:void 0;function iw(e){return sw(e)||ow(e)||!!(Kp&&e&&e[Kp])}Vp.exports=iw});var Oo=u((d0,zp)=>{"use strict";var uw=Xa(),pw=Yp();function Hp(e,t,r,a,n){var o=-1,s=e.length;for(r||(r=pw),n||(n=[]);++o<s;){var i=e[o];t>0&&r(i)?t>1?Hp(i,t-1,r,a,n):uw(n,i):a||(n[n.length]=i)}return n}zp.exports=Hp});var Xr=u((f0,Jp)=>{"use strict";function cw(e){return e}Jp.exports=cw});var Za=u((m0,Xp)=>{"use strict";function lw(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)}Xp.exports=lw});var Lo=u((g0,ec)=>{"use strict";var dw=Za(),Zp=Math.max;function fw(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),dw(e,this,i)}}ec.exports=fw});var rc=u((y0,tc)=>{"use strict";function mw(e){return function(){return e}}tc.exports=mw});var Re=u((h0,ac)=>{"use strict";function gw(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}ac.exports=gw});var Zr=u((A0,nc)=>{"use strict";var yw=mt(),hw=Re(),Aw="[object AsyncFunction]",bw="[object Function]",Iw="[object GeneratorFunction]",Sw="[object Proxy]";function ww(e){if(!hw(e))return!1;var t=yw(e);return t==bw||t==Iw||t==Aw||t==Sw}nc.exports=ww});var sc=u((b0,oc)=>{"use strict";var Tw=ie(),Ew=Tw["__core-js_shared__"];oc.exports=Ew});var pc=u((I0,uc)=>{"use strict";var Co=sc(),ic=function(){var e=/[^.]+$/.exec(Co&&Co.keys&&Co.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function vw(e){return!!ic&&ic in e}uc.exports=vw});var Po=u((S0,cc)=>{"use strict";var Rw=Function.prototype,_w=Rw.toString;function xw(e){if(e!=null){try{return _w.call(e)}catch{}try{return e+""}catch{}}return""}cc.exports=xw});var dc=u((w0,lc)=>{"use strict";var Ow=Zr(),Lw=pc(),Cw=Re(),Pw=Po(),Uw=/[\\^$.*+?()[\]{}|]/g,qw=/^\[object .+?Constructor\]$/,Dw=Function.prototype,Nw=Object.prototype,Bw=Dw.toString,Mw=Nw.hasOwnProperty,kw=RegExp("^"+Bw.call(Mw).replace(Uw,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Gw(e){if(!Cw(e)||Lw(e))return!1;var t=Ow(e)?kw:qw;return t.test(Pw(e))}lc.exports=Gw});var mc=u((T0,fc)=>{"use strict";function Fw(e,t){return e?.[t]}fc.exports=Fw});var gt=u((E0,gc)=>{"use strict";var Qw=dc(),jw=mc();function Ww(e,t){var r=jw(e,t);return Qw(r)?r:void 0}gc.exports=Ww});var Uo=u((v0,yc)=>{"use strict";var $w=gt(),Kw=function(){try{var e=$w(Object,"defineProperty");return e({},"",{}),e}catch{}}();yc.exports=Kw});var bc=u((R0,Ac)=>{"use strict";var Vw=rc(),hc=Uo(),Yw=Xr(),Hw=hc?function(e,t){return hc(e,"toString",{configurable:!0,enumerable:!1,value:Vw(t),writable:!0})}:Yw;Ac.exports=Hw});var qo=u((_0,Ic)=>{"use strict";var zw=800,Jw=16,Xw=Date.now;function Zw(e){var t=0,r=0;return function(){var a=Xw(),n=Jw-(a-r);if(r=a,n>0){if(++t>=zw)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}Ic.exports=Zw});var en=u((x0,Sc)=>{"use strict";var eT=bc(),tT=qo(),rT=tT(eT);Sc.exports=rT});var Do=u((O0,wc)=>{"use strict";var aT=Xr(),nT=Lo(),oT=en();function sT(e,t){return oT(nT(e,t,aT),e+"")}wc.exports=sT});var ea=u((L0,Tc)=>{"use strict";var iT=gt(),uT=iT(Object,"create");Tc.exports=uT});var Rc=u((C0,vc)=>{"use strict";var Ec=ea();function pT(){this.__data__=Ec?Ec(null):{},this.size=0}vc.exports=pT});var xc=u((P0,_c)=>{"use strict";function cT(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}_c.exports=cT});var Lc=u((U0,Oc)=>{"use strict";var lT=ea(),dT="__lodash_hash_undefined__",fT=Object.prototype,mT=fT.hasOwnProperty;function gT(e){var t=this.__data__;if(lT){var r=t[e];return r===dT?void 0:r}return mT.call(t,e)?t[e]:void 0}Oc.exports=gT});var Pc=u((q0,Cc)=>{"use strict";var yT=ea(),hT=Object.prototype,AT=hT.hasOwnProperty;function bT(e){var t=this.__data__;return yT?t[e]!==void 0:AT.call(t,e)}Cc.exports=bT});var qc=u((D0,Uc)=>{"use strict";var IT=ea(),ST="__lodash_hash_undefined__";function wT(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=IT&&t===void 0?ST:t,this}Uc.exports=wT});var Nc=u((N0,Dc)=>{"use strict";var TT=Rc(),ET=xc(),vT=Lc(),RT=Pc(),_T=qc();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=TT;Vt.prototype.delete=ET;Vt.prototype.get=vT;Vt.prototype.has=RT;Vt.prototype.set=_T;Dc.exports=Vt});var Mc=u((B0,Bc)=>{"use strict";function xT(){this.__data__=[],this.size=0}Bc.exports=xT});var Yt=u((M0,kc)=>{"use strict";function OT(e,t){return e===t||e!==e&&t!==t}kc.exports=OT});var ta=u((k0,Gc)=>{"use strict";var LT=Yt();function CT(e,t){for(var r=e.length;r--;)if(LT(e[r][0],t))return r;return-1}Gc.exports=CT});var Qc=u((G0,Fc)=>{"use strict";var PT=ta(),UT=Array.prototype,qT=UT.splice;function DT(e){var t=this.__data__,r=PT(t,e);if(r<0)return!1;var a=t.length-1;return r==a?t.pop():qT.call(t,r,1),--this.size,!0}Fc.exports=DT});var Wc=u((F0,jc)=>{"use strict";var NT=ta();function BT(e){var t=this.__data__,r=NT(t,e);return r<0?void 0:t[r][1]}jc.exports=BT});var Kc=u((Q0,$c)=>{"use strict";var MT=ta();function kT(e){return MT(this.__data__,e)>-1}$c.exports=kT});var Yc=u((j0,Vc)=>{"use strict";var GT=ta();function FT(e,t){var r=this.__data__,a=GT(r,e);return a<0?(++this.size,r.push([e,t])):r[a][1]=t,this}Vc.exports=FT});var ra=u((W0,Hc)=>{"use strict";var QT=Mc(),jT=Qc(),WT=Wc(),$T=Kc(),KT=Yc();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=QT;Ht.prototype.delete=jT;Ht.prototype.get=WT;Ht.prototype.has=$T;Ht.prototype.set=KT;Hc.exports=Ht});var tn=u(($0,zc)=>{"use strict";var VT=gt(),YT=ie(),HT=VT(YT,"Map");zc.exports=HT});var Zc=u((K0,Xc)=>{"use strict";var Jc=Nc(),zT=ra(),JT=tn();function XT(){this.size=0,this.__data__={hash:new Jc,map:new(JT||zT),string:new Jc}}Xc.exports=XT});var tl=u((V0,el)=>{"use strict";function ZT(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}el.exports=ZT});var aa=u((Y0,rl)=>{"use strict";var eE=tl();function tE(e,t){var r=e.__data__;return eE(t)?r[typeof t=="string"?"string":"hash"]:r.map}rl.exports=tE});var nl=u((H0,al)=>{"use strict";var rE=aa();function aE(e){var t=rE(this,e).delete(e);return this.size-=t?1:0,t}al.exports=aE});var sl=u((z0,ol)=>{"use strict";var nE=aa();function oE(e){return nE(this,e).get(e)}ol.exports=oE});var ul=u((J0,il)=>{"use strict";var sE=aa();function iE(e){return sE(this,e).has(e)}il.exports=iE});var cl=u((X0,pl)=>{"use strict";var uE=aa();function pE(e,t){var r=uE(this,e),a=r.size;return r.set(e,t),this.size+=r.size==a?0:1,this}pl.exports=pE});var rn=u((Z0,ll)=>{"use strict";var cE=Zc(),lE=nl(),dE=sl(),fE=ul(),mE=cl();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=cE;zt.prototype.delete=lE;zt.prototype.get=dE;zt.prototype.has=fE;zt.prototype.set=mE;ll.exports=zt});var fl=u((eF,dl)=>{"use strict";var gE="__lodash_hash_undefined__";function yE(e){return this.__data__.set(e,gE),this}dl.exports=yE});var gl=u((tF,ml)=>{"use strict";function hE(e){return this.__data__.has(e)}ml.exports=hE});var No=u((rF,yl)=>{"use strict";var AE=rn(),bE=fl(),IE=gl();function an(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new AE;++t<r;)this.add(e[t])}an.prototype.add=an.prototype.push=bE;an.prototype.has=IE;yl.exports=an});var Al=u((aF,hl)=>{"use strict";function SE(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=SE});var Il=u((nF,bl)=>{"use strict";function wE(e){return e!==e}bl.exports=wE});var wl=u((oF,Sl)=>{"use strict";function TE(e,t,r){for(var a=r-1,n=e.length;++a<n;)if(e[a]===t)return a;return-1}Sl.exports=TE});var El=u((sF,Tl)=>{"use strict";var EE=Al(),vE=Il(),RE=wl();function _E(e,t,r){return t===t?RE(e,t,r):EE(e,vE,r)}Tl.exports=_E});var Bo=u((iF,vl)=>{"use strict";var xE=El();function OE(e,t){var r=e==null?0:e.length;return!!r&&xE(e,t,0)>-1}vl.exports=OE});var _l=u((uF,Rl)=>{"use strict";function LE(e,t,r){for(var a=-1,n=e==null?0:e.length;++a<n;)if(r(t,e[a]))return!0;return!1}Rl.exports=LE});var Mo=u((pF,xl)=>{"use strict";function CE(e,t){return e.has(t)}xl.exports=CE});var ko=u((cF,Ol)=>{"use strict";var PE=gt(),UE=ie(),qE=PE(UE,"Set");Ol.exports=qE});var Go=u((lF,Ll)=>{"use strict";function DE(){}Ll.exports=DE});var nn=u((dF,Cl)=>{"use strict";function NE(e){var t=-1,r=Array(e.size);return e.forEach(function(a){r[++t]=a}),r}Cl.exports=NE});var Ul=u((fF,Pl)=>{"use strict";var Fo=ko(),BE=Go(),ME=nn(),kE=1/0,GE=Fo&&1/ME(new Fo([,-0]))[1]==kE?function(e){return new Fo(e)}:BE;Pl.exports=GE});var Dl=u((mF,ql)=>{"use strict";var FE=No(),QE=Bo(),jE=_l(),WE=Mo(),$E=Ul(),KE=nn(),VE=200;function YE(e,t,r){var a=-1,n=QE,o=e.length,s=!0,i=[],p=i;if(r)s=!1,n=jE;else if(o>=VE){var f=t?null:$E(e);if(f)return KE(f);s=!1,n=WE,p=new FE}else p=t?[]:i;e:for(;++a<o;){var m=e[a],y=t?t(m):m;if(m=r||m!==0?m:0,s&&y===y){for(var g=p.length;g--;)if(p[g]===y)continue e;t&&p.push(y),i.push(m)}else n(p,y,r)||(p!==i&&p.push(y),i.push(m))}return i}ql.exports=YE});var on=u((gF,Nl)=>{"use strict";var HE=9007199254740991;function zE(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=HE}Nl.exports=zE});var Jt=u((yF,Bl)=>{"use strict";var JE=Zr(),XE=on();function ZE(e){return e!=null&&XE(e.length)&&!JE(e)}Bl.exports=ZE});var Qo=u((hF,Ml)=>{"use strict";var ev=Jt(),tv=Ae();function rv(e){return tv(e)&&ev(e)}Ml.exports=rv});var Gl=u((AF,kl)=>{"use strict";var av=Oo(),nv=Do(),ov=Dl(),sv=Qo(),iv=nv(function(e){return ov(av(e,1,sv,!0))});kl.exports=iv});var Ql=u((bF,Fl)=>{"use strict";var uv=ra();function pv(){this.__data__=new uv,this.size=0}Fl.exports=pv});var Wl=u((IF,jl)=>{"use strict";function cv(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}jl.exports=cv});var Kl=u((SF,$l)=>{"use strict";function lv(e){return this.__data__.get(e)}$l.exports=lv});var Yl=u((wF,Vl)=>{"use strict";function dv(e){return this.__data__.has(e)}Vl.exports=dv});var zl=u((TF,Hl)=>{"use strict";var fv=ra(),mv=tn(),gv=rn(),yv=200;function hv(e,t){var r=this.__data__;if(r instanceof fv){var a=r.__data__;if(!mv||a.length<yv-1)return a.push([e,t]),this.size=++r.size,this;r=this.__data__=new gv(a)}return r.set(e,t),this.size=r.size,this}Hl.exports=hv});var na=u((EF,Jl)=>{"use strict";var Av=ra(),bv=Ql(),Iv=Wl(),Sv=Kl(),wv=Yl(),Tv=zl();function Xt(e){var t=this.__data__=new Av(e);this.size=t.size}Xt.prototype.clear=bv;Xt.prototype.delete=Iv;Xt.prototype.get=Sv;Xt.prototype.has=wv;Xt.prototype.set=Tv;Jl.exports=Xt});var oa=u((vF,Zl)=>{"use strict";var Xl=Uo();function Ev(e,t,r){t=="__proto__"&&Xl?Xl(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}Zl.exports=Ev});var jo=u((RF,ed)=>{"use strict";var vv=oa(),Rv=Yt();function _v(e,t,r){(r!==void 0&&!Rv(e[t],r)||r===void 0&&!(t in e))&&vv(e,t,r)}ed.exports=_v});var rd=u((_F,td)=>{"use strict";function xv(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}}td.exports=xv});var Wo=u((xF,ad)=>{"use strict";var Ov=rd(),Lv=Ov();ad.exports=Lv});var $o=u((sa,Zt)=>{"use strict";var Cv=ie(),id=typeof sa=="object"&&sa&&!sa.nodeType&&sa,nd=id&&typeof Zt=="object"&&Zt&&!Zt.nodeType&&Zt,Pv=nd&&nd.exports===id,od=Pv?Cv.Buffer:void 0,sd=od?od.allocUnsafe:void 0;function Uv(e,t){if(t)return e.slice();var r=e.length,a=sd?sd(r):new e.constructor(r);return e.copy(a),a}Zt.exports=Uv});var Ko=u((OF,ud)=>{"use strict";var qv=ie(),Dv=qv.Uint8Array;ud.exports=Dv});var sn=u((LF,cd)=>{"use strict";var pd=Ko();function Nv(e){var t=new e.constructor(e.byteLength);return new pd(t).set(new pd(e)),t}cd.exports=Nv});var Vo=u((CF,ld)=>{"use strict";var Bv=sn();function Mv(e,t){var r=t?Bv(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}ld.exports=Mv});var er=u((PF,dd)=>{"use strict";function kv(e,t){var r=-1,a=e.length;for(t||(t=Array(a));++r<a;)t[r]=e[r];return t}dd.exports=kv});var ia=u((UF,md)=>{"use strict";var Gv=Re(),fd=Object.create,Fv=function(){function e(){}return function(t){if(!Gv(t))return{};if(fd)return fd(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();md.exports=Fv});var Yo=u((qF,gd)=>{"use strict";function Qv(e,t){return function(r){return e(t(r))}}gd.exports=Qv});var un=u((DF,yd)=>{"use strict";var jv=Yo(),Wv=jv(Object.getPrototypeOf,Object);yd.exports=Wv});var pn=u((NF,hd)=>{"use strict";var $v=Object.prototype;function Kv(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||$v;return e===r}hd.exports=Kv});var Ho=u((BF,Ad)=>{"use strict";var Vv=ia(),Yv=un(),Hv=pn();function zv(e){return typeof e.constructor=="function"&&!Hv(e)?Vv(Yv(e)):{}}Ad.exports=zv});var Id=u((MF,bd)=>{"use strict";function Jv(){return!1}bd.exports=Jv});var pa=u((ua,tr)=>{"use strict";var Xv=ie(),Zv=Id(),Td=typeof ua=="object"&&ua&&!ua.nodeType&&ua,Sd=Td&&typeof tr=="object"&&tr&&!tr.nodeType&&tr,eR=Sd&&Sd.exports===Td,wd=eR?Xv.Buffer:void 0,tR=wd?wd.isBuffer:void 0,rR=tR||Zv;tr.exports=rR});var zo=u((kF,vd)=>{"use strict";var aR=mt(),nR=un(),oR=Ae(),sR="[object Object]",iR=Function.prototype,uR=Object.prototype,Ed=iR.toString,pR=uR.hasOwnProperty,cR=Ed.call(Object);function lR(e){if(!oR(e)||aR(e)!=sR)return!1;var t=nR(e);if(t===null)return!0;var r=pR.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Ed.call(r)==cR}vd.exports=lR});var _d=u((GF,Rd)=>{"use strict";var dR=mt(),fR=on(),mR=Ae(),gR="[object Arguments]",yR="[object Array]",hR="[object Boolean]",AR="[object Date]",bR="[object Error]",IR="[object Function]",SR="[object Map]",wR="[object Number]",TR="[object Object]",ER="[object RegExp]",vR="[object Set]",RR="[object String]",_R="[object WeakMap]",xR="[object ArrayBuffer]",OR="[object DataView]",LR="[object Float32Array]",CR="[object Float64Array]",PR="[object Int8Array]",UR="[object Int16Array]",qR="[object Int32Array]",DR="[object Uint8Array]",NR="[object Uint8ClampedArray]",BR="[object Uint16Array]",MR="[object Uint32Array]",B={};B[LR]=B[CR]=B[PR]=B[UR]=B[qR]=B[DR]=B[NR]=B[BR]=B[MR]=!0;B[gR]=B[yR]=B[xR]=B[hR]=B[OR]=B[AR]=B[bR]=B[IR]=B[SR]=B[wR]=B[TR]=B[ER]=B[vR]=B[RR]=B[_R]=!1;function kR(e){return mR(e)&&fR(e.length)&&!!B[dR(e)]}Rd.exports=kR});var cn=u((FF,xd)=>{"use strict";function GR(e){return function(t){return e(t)}}xd.exports=GR});var ln=u((ca,rr)=>{"use strict";var FR=xo(),Od=typeof ca=="object"&&ca&&!ca.nodeType&&ca,la=Od&&typeof rr=="object"&&rr&&!rr.nodeType&&rr,QR=la&&la.exports===Od,Jo=QR&&FR.process,jR=function(){try{var e=la&&la.require&&la.require("util").types;return e||Jo&&Jo.binding&&Jo.binding("util")}catch{}}();rr.exports=jR});var dn=u((QF,Pd)=>{"use strict";var WR=_d(),$R=cn(),Ld=ln(),Cd=Ld&&Ld.isTypedArray,KR=Cd?$R(Cd):WR;Pd.exports=KR});var Xo=u((jF,Ud)=>{"use strict";function VR(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}Ud.exports=VR});var Zo=u((WF,qd)=>{"use strict";var YR=oa(),HR=Yt(),zR=Object.prototype,JR=zR.hasOwnProperty;function XR(e,t,r){var a=e[t];(!(JR.call(e,t)&&HR(a,r))||r===void 0&&!(t in e))&&YR(e,t,r)}qd.exports=XR});var ar=u(($F,Dd)=>{"use strict";var ZR=Zo(),e_=oa();function t_(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?e_(r,i,p):ZR(r,i,p)}return r}Dd.exports=t_});var Bd=u((KF,Nd)=>{"use strict";function r_(e,t){for(var r=-1,a=Array(e);++r<e;)a[r]=t(r);return a}Nd.exports=r_});var da=u((VF,Md)=>{"use strict";var a_=9007199254740991,n_=/^(?:0|[1-9]\d*)$/;function o_(e,t){var r=typeof e;return t=t??a_,!!t&&(r=="number"||r!="symbol"&&n_.test(e))&&e>-1&&e%1==0&&e<t}Md.exports=o_});var es=u((YF,kd)=>{"use strict";var s_=Bd(),i_=Jr(),u_=ne(),p_=pa(),c_=da(),l_=dn(),d_=Object.prototype,f_=d_.hasOwnProperty;function m_(e,t){var r=u_(e),a=!r&&i_(e),n=!r&&!a&&p_(e),o=!r&&!a&&!n&&l_(e),s=r||a||n||o,i=s?s_(e.length,String):[],p=i.length;for(var f in e)(t||f_.call(e,f))&&!(s&&(f=="length"||n&&(f=="offset"||f=="parent")||o&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||c_(f,p)))&&i.push(f);return i}kd.exports=m_});var Fd=u((HF,Gd)=>{"use strict";function g_(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}Gd.exports=g_});var jd=u((zF,Qd)=>{"use strict";var y_=Re(),h_=pn(),A_=Fd(),b_=Object.prototype,I_=b_.hasOwnProperty;function S_(e){if(!y_(e))return A_(e);var t=h_(e),r=[];for(var a in e)a=="constructor"&&(t||!I_.call(e,a))||r.push(a);return r}Qd.exports=S_});var nr=u((JF,Wd)=>{"use strict";var w_=es(),T_=jd(),E_=Jt();function v_(e){return E_(e)?w_(e,!0):T_(e)}Wd.exports=v_});var Kd=u((XF,$d)=>{"use strict";var R_=ar(),__=nr();function x_(e){return R_(e,__(e))}$d.exports=x_});var Xd=u((ZF,Jd)=>{"use strict";var Vd=jo(),O_=$o(),L_=Vo(),C_=er(),P_=Ho(),Yd=Jr(),Hd=ne(),U_=Qo(),q_=pa(),D_=Zr(),N_=Re(),B_=zo(),M_=dn(),zd=Xo(),k_=Kd();function G_(e,t,r,a,n,o,s){var i=zd(e,r),p=zd(t,r),f=s.get(p);if(f){Vd(e,r,f);return}var m=o?o(i,p,r+"",e,t,s):void 0,y=m===void 0;if(y){var g=Hd(p),I=!g&&q_(p),O=!g&&!I&&M_(p);m=p,g||I||O?Hd(i)?m=i:U_(i)?m=C_(i):I?(y=!1,m=O_(p,!0)):O?(y=!1,m=L_(p,!0)):m=[]:B_(p)||Yd(p)?(m=i,Yd(i)?m=k_(i):(!N_(i)||D_(i))&&(m=P_(p))):y=!1}y&&(s.set(p,m),n(m,p,a,o,s),s.delete(p)),Vd(e,r,m)}Jd.exports=G_});var tf=u((e1,ef)=>{"use strict";var F_=na(),Q_=jo(),j_=Wo(),W_=Xd(),$_=Re(),K_=nr(),V_=Xo();function Zd(e,t,r,a,n){e!==t&&j_(t,function(o,s){if(n||(n=new F_),$_(o))W_(e,t,s,r,Zd,a,n);else{var i=a?a(V_(e,s),o,s+"",e,t,n):void 0;i===void 0&&(i=o),Q_(e,s,i)}},K_)}ef.exports=Zd});var af=u((t1,rf)=>{"use strict";var Y_=Yt(),H_=Jt(),z_=da(),J_=Re();function X_(e,t,r){if(!J_(r))return!1;var a=typeof t;return(a=="number"?H_(r)&&z_(t,r.length):a=="string"&&t in r)?Y_(r[t],e):!1}rf.exports=X_});var of=u((r1,nf)=>{"use strict";var Z_=Do(),ex=af();function tx(e){return Z_(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&&ex(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})}nf.exports=tx});var ts=u((a1,sf)=>{"use strict";var rx=tf(),ax=of(),nx=ax(function(e,t,r){rx(e,t,r)});sf.exports=nx});var pm=u(me=>{"use strict";me.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"};me.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"]};me.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};me.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};me.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};me.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]};me.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}};me.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}};me.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=me.aliasToReal,r={};for(var a in t){var n=t[a];e.call(r,n)?r[n].push(a):r[n]=[a]}return r}();me.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"};me.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};me.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 Js=u((xj,cm)=>{"use strict";cm.exports={}});var mm=u((Oj,fm)=>{"use strict";var X=pm(),kO=Js(),lm=Array.prototype.push;function GO(e,t){return t==2?function(r,a){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}function Xs(e,t){return t==2?function(r,a){return e(r,a)}:function(r){return e(r)}}function dm(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}function FO(e){return function(t){return e({},t)}}function QO(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&&lm.apply(s,o),t!=a&&lm.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 ei(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:kO,p="curry"in a&&a.curry,f="fixed"in a&&a.fixed,m="rearg"in a&&a.rearg,y=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},I=g.ary,O=g.assign,_=g.clone,R=g.curry,v=g.forEach,U=g.isArray,Pe=g.isError,we=g.isFunction,pt=g.isWeakMap,Gt=g.keys,Ir=g.rearg,Sr=g.toInteger,II=g.toPath,Uu=Gt(X.aryMethod),SI={castArray:function(S){return function(){var h=arguments[0];return U(h)?S(dm(h)):S.apply(void 0,arguments)}},iteratee:function(S){return function(){var h=arguments[0],b=arguments[1],E=S(h,b),L=E.length;return s.cap&&typeof b=="number"?(b=b>2?b-2:1,L&&L<=b?E:Xs(E,b)):E}},mixin:function(S){return function(h){var b=this;if(!we(b))return S(b,Object(h));var E=[];return v(Gt(h),function(L){we(h[L])&&E.push([L,b.prototype[L]])}),S(b,Object(h)),v(E,function(L){var oe=L[1];we(oe)?b.prototype[L[0]]=oe:delete b.prototype[L[0]]}),b}},nthArg:function(S){return function(h){var b=h<0?1:Sr(h)+1;return R(S(h),b)}},rearg:function(S){return function(h,b){var E=b?b.length:0;return R(S(h,b),E)}},runInContext:function(S){return function(h){return ei(e,S(h),a)}}};function wI(S,h){if(s.cap){var b=X.iterateeRearg[S];if(b)return _I(h,b);var E=!n&&X.iterateeAry[S];if(E)return RI(h,E)}return h}function TI(S,h,b){return p||s.curry&&b>1?R(h,b):h}function qu(S,h,b){if(s.fixed&&(f||!X.skipFixed[S])){var E=X.methodSpread[S],L=E&&E.start;return L===void 0?I(h,b):QO(h,L)}return h}function Du(S,h,b){return s.rearg&&b>1&&(m||!X.skipRearg[S])?Ir(h,X.methodRearg[S]||X.aryRearg[b]):h}function EI(S,h){h=II(h);for(var b=-1,E=h.length,L=E-1,oe=_(Object(S)),Ge=oe;Ge!=null&&++b<E;){var Te=h[b],Fe=Ge[Te];Fe!=null&&!(we(Fe)||Pe(Fe)||pt(Fe))&&(Ge[Te]=_(b==L?Fe:Object(Fe))),Ge=Ge[Te]}return oe}function vI(S){return ye.runInContext.convert(S)(void 0)}function Nu(S,h){var b=X.aliasToReal[S]||S,E=X.remap[b]||b,L=a;return function(oe){var Ge=n?y:g,Te=n?y[E]:h,Fe=O(O({},L),oe);return ei(Ge,b,Te,Fe)}}function RI(S,h){return Bu(S,function(b){return typeof b=="function"?Xs(b,h):b})}function _I(S,h){return Bu(S,function(b){var E=h.length;return GO(Ir(Xs(b,E),h),E)})}function Bu(S,h){return function(){var b=arguments.length;if(!b)return S();for(var E=Array(b);b--;)E[b]=arguments[b];var L=s.rearg?0:b-1;return E[L]=h(E[L]),S.apply(void 0,E)}}function Mu(S,h,b){var E,L=X.aliasToReal[S]||S,oe=h,Ge=SI[L];return Ge?oe=Ge(h):s.immutable&&(X.mutate.array[L]?oe=Zs(h,dm):X.mutate.object[L]?oe=Zs(h,FO(h)):X.mutate.set[L]&&(oe=Zs(h,EI))),v(Uu,function(Te){return v(X.aryMethod[Te],function(Fe){if(L==Fe){var ku=X.methodSpread[L],xI=ku&&ku.afterRearg;return E=xI?qu(L,Du(L,oe,Te),Te):Du(L,qu(L,oe,Te),Te),E=wI(L,E),E=TI(L,E,Te),!1}}),!E}),E||(E=oe),E==h&&(E=p?R(E,1):function(){return h.apply(this,arguments)}),E.convert=Nu(L,h),E.placeholder=h.placeholder=b,E}if(!o)return Mu(t,r,i);var ye=r,wr=[];return v(Uu,function(S){v(X.aryMethod[S],function(h){var b=ye[X.remap[h]||h];b&&wr.push([h,Mu(h,b,ye)])})}),v(Gt(ye),function(S){var h=ye[S];if(typeof h=="function"){for(var b=wr.length;b--;)if(wr[b][0]==S)return;h.convert=Nu(S,h),wr.push([S,h])}}),v(wr,function(S){ye[S[0]]=S[1]}),ye.convert=vI,ye.placeholder=ye,v(Gt(ye),function(S){v(X.realToAlias[S]||[],function(h){ye[h]=ye[S]})}),ye}fm.exports=ei});var ti=u((Lj,gm)=>{"use strict";var jO=gt(),WO=ie(),$O=jO(WO,"WeakMap");gm.exports=$O});var ri=u((Cj,hm)=>{"use strict";var ym=ti(),KO=ym&&new ym;hm.exports=KO});var ai=u((Pj,bm)=>{"use strict";var VO=Xr(),Am=ri(),YO=Am?function(e,t){return Am.set(e,t),e}:VO;bm.exports=YO});var Ta=u((Uj,Im)=>{"use strict";var HO=ia(),zO=Re();function JO(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=HO(e.prototype),a=e.apply(r,t);return zO(a)?a:r}}Im.exports=JO});var wm=u((qj,Sm)=>{"use strict";var XO=Ta(),ZO=ie(),eL=1;function tL(e,t,r){var a=t&eL,n=XO(e);function o(){var s=this&&this!==ZO&&this instanceof o?n:e;return s.apply(a?r:this,arguments)}return o}Sm.exports=tL});var ni=u((Dj,Tm)=>{"use strict";var rL=Math.max;function aL(e,t,r,a){for(var n=-1,o=e.length,s=r.length,i=-1,p=t.length,f=rL(o-s,0),m=Array(p+f),y=!a;++i<p;)m[i]=t[i];for(;++n<s;)(y||n<o)&&(m[r[n]]=e[n]);for(;f--;)m[i++]=e[n++];return m}Tm.exports=aL});var oi=u((Nj,Em)=>{"use strict";var nL=Math.max;function oL(e,t,r,a){for(var n=-1,o=e.length,s=-1,i=r.length,p=-1,f=t.length,m=nL(o-i,0),y=Array(m+f),g=!a;++n<m;)y[n]=e[n];for(var I=n;++p<f;)y[I+p]=t[p];for(;++s<i;)(g||n<o)&&(y[I+r[s]]=e[n++]);return y}Em.exports=oL});var Rm=u((Bj,vm)=>{"use strict";function sL(e,t){for(var r=e.length,a=0;r--;)e[r]===t&&++a;return a}vm.exports=sL});var Un=u((Mj,_m)=>{"use strict";function iL(){}_m.exports=iL});var Dn=u((kj,xm)=>{"use strict";var uL=ia(),pL=Un(),cL=4294967295;function qn(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=cL,this.__views__=[]}qn.prototype=uL(pL.prototype);qn.prototype.constructor=qn;xm.exports=qn});var si=u((Gj,Lm)=>{"use strict";var Om=ri(),lL=Go(),dL=Om?function(e){return Om.get(e)}:lL;Lm.exports=dL});var Pm=u((Fj,Cm)=>{"use strict";var fL={};Cm.exports=fL});var Dm=u((Qj,qm)=>{"use strict";var Um=Pm(),mL=Object.prototype,gL=mL.hasOwnProperty;function yL(e){for(var t=e.name+"",r=Um[t],a=gL.call(Um,t)?r.length:0;a--;){var n=r[a],o=n.func;if(o==null||o==e)return n.name}return t}qm.exports=yL});var ii=u((jj,Nm)=>{"use strict";var hL=ia(),AL=Un();function Nn(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}Nn.prototype=hL(AL.prototype);Nn.prototype.constructor=Nn;Nm.exports=Nn});var Mm=u((Wj,Bm)=>{"use strict";var bL=Dn(),IL=ii(),SL=er();function wL(e){if(e instanceof bL)return e.clone();var t=new IL(e.__wrapped__,e.__chain__);return t.__actions__=SL(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}Bm.exports=wL});var Fm=u(($j,Gm)=>{"use strict";var TL=Dn(),km=ii(),EL=Un(),vL=ne(),RL=Ae(),_L=Mm(),xL=Object.prototype,OL=xL.hasOwnProperty;function Bn(e){if(RL(e)&&!vL(e)&&!(e instanceof TL)){if(e instanceof km)return e;if(OL.call(e,"__wrapped__"))return _L(e)}return new km(e)}Bn.prototype=EL.prototype;Bn.prototype.constructor=Bn;Gm.exports=Bn});var jm=u((Kj,Qm)=>{"use strict";var LL=Dn(),CL=si(),PL=Dm(),UL=Fm();function qL(e){var t=PL(e),r=UL[t];if(typeof r!="function"||!(t in LL.prototype))return!1;if(e===r)return!0;var a=CL(r);return!!a&&e===a[0]}Qm.exports=qL});var ui=u((Vj,Wm)=>{"use strict";var DL=ai(),NL=qo(),BL=NL(DL);Wm.exports=BL});var Km=u((Yj,$m)=>{"use strict";var ML=/\{\n\/\* \[wrapped with (.+)\] \*/,kL=/,? & /;function GL(e){var t=e.match(ML);return t?t[1].split(kL):[]}$m.exports=GL});var Ym=u((Hj,Vm)=>{"use strict";var FL=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function QL(e,t){var r=t.length;if(!r)return e;var a=r-1;return t[a]=(r>1?"& ":"")+t[a],t=t.join(r>2?", ":" "),e.replace(FL,`{
|
|
1
|
+
"use strict";var OI=Object.create;var Da=Object.defineProperty;var LI=Object.getOwnPropertyDescriptor;var CI=Object.getOwnPropertyNames;var PI=Object.getPrototypeOf,UI=Object.prototype.hasOwnProperty;var u=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),w=(e,t)=>{for(var r in t)Da(e,r,{get:t[r],enumerable:!0})},Gu=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of CI(t))!UI.call(e,n)&&n!==r&&Da(e,n,{get:()=>t[n],enumerable:!(a=LI(t,n))||a.enumerable});return e};var P=(e,t,r)=>(r=e!=null?OI(PI(e)):{},Gu(t||!e||!e.__esModule?Da(r,"default",{value:e,enumerable:!0}):r,e)),qI=e=>Gu(Da({},"__esModule",{value:!0}),e);var Xa=u((e0,vp)=>{"use strict";function CS(e,t){for(var r=-1,a=t.length,n=e.length;++r<a;)e[n+r]=t[r];return e}vp.exports=CS});var xo=u((t0,Rp)=>{"use strict";var PS=typeof global=="object"&&global&&global.Object===Object&&global;Rp.exports=PS});var ie=u((r0,_p)=>{"use strict";var US=xo(),qS=typeof self=="object"&&self&&self.Object===Object&&self,DS=US||qS||Function("return this")();_p.exports=DS});var _t=u((a0,xp)=>{"use strict";var NS=ie(),BS=NS.Symbol;xp.exports=BS});var Pp=u((n0,Cp)=>{"use strict";var Op=_t(),Lp=Object.prototype,MS=Lp.hasOwnProperty,kS=Lp.toString,zr=Op?Op.toStringTag:void 0;function GS(e){var t=MS.call(e,zr),r=e[zr];try{e[zr]=void 0;var a=!0}catch{}var n=kS.call(e);return a&&(t?e[zr]=r:delete e[zr]),n}Cp.exports=GS});var qp=u((o0,Up)=>{"use strict";var FS=Object.prototype,QS=FS.toString;function jS(e){return QS.call(e)}Up.exports=jS});var mt=u((s0,Bp)=>{"use strict";var Dp=_t(),WS=Pp(),$S=qp(),KS="[object Null]",VS="[object Undefined]",Np=Dp?Dp.toStringTag:void 0;function YS(e){return e==null?e===void 0?VS:KS:Np&&Np in Object(e)?WS(e):$S(e)}Bp.exports=YS});var Ae=u((i0,Mp)=>{"use strict";function HS(e){return e!=null&&typeof e=="object"}Mp.exports=HS});var Gp=u((u0,kp)=>{"use strict";var zS=mt(),JS=Ae(),XS="[object Arguments]";function ZS(e){return JS(e)&&zS(e)==XS}kp.exports=ZS});var Jr=u((p0,jp)=>{"use strict";var Fp=Gp(),ew=Ae(),Qp=Object.prototype,tw=Qp.hasOwnProperty,rw=Qp.propertyIsEnumerable,aw=Fp(function(){return arguments}())?Fp:function(e){return ew(e)&&tw.call(e,"callee")&&!rw.call(e,"callee")};jp.exports=aw});var ne=u((c0,Wp)=>{"use strict";var nw=Array.isArray;Wp.exports=nw});var Yp=u((l0,Vp)=>{"use strict";var $p=_t(),ow=Jr(),sw=ne(),Kp=$p?$p.isConcatSpreadable:void 0;function iw(e){return sw(e)||ow(e)||!!(Kp&&e&&e[Kp])}Vp.exports=iw});var Oo=u((d0,zp)=>{"use strict";var uw=Xa(),pw=Yp();function Hp(e,t,r,a,n){var o=-1,s=e.length;for(r||(r=pw),n||(n=[]);++o<s;){var i=e[o];t>0&&r(i)?t>1?Hp(i,t-1,r,a,n):uw(n,i):a||(n[n.length]=i)}return n}zp.exports=Hp});var Xr=u((f0,Jp)=>{"use strict";function cw(e){return e}Jp.exports=cw});var Za=u((m0,Xp)=>{"use strict";function lw(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)}Xp.exports=lw});var Lo=u((g0,ec)=>{"use strict";var dw=Za(),Zp=Math.max;function fw(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),dw(e,this,i)}}ec.exports=fw});var rc=u((y0,tc)=>{"use strict";function mw(e){return function(){return e}}tc.exports=mw});var Re=u((h0,ac)=>{"use strict";function gw(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}ac.exports=gw});var Zr=u((A0,nc)=>{"use strict";var yw=mt(),hw=Re(),Aw="[object AsyncFunction]",bw="[object Function]",Iw="[object GeneratorFunction]",Sw="[object Proxy]";function ww(e){if(!hw(e))return!1;var t=yw(e);return t==bw||t==Iw||t==Aw||t==Sw}nc.exports=ww});var sc=u((b0,oc)=>{"use strict";var Tw=ie(),Ew=Tw["__core-js_shared__"];oc.exports=Ew});var pc=u((I0,uc)=>{"use strict";var Co=sc(),ic=function(){var e=/[^.]+$/.exec(Co&&Co.keys&&Co.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function vw(e){return!!ic&&ic in e}uc.exports=vw});var Po=u((S0,cc)=>{"use strict";var Rw=Function.prototype,_w=Rw.toString;function xw(e){if(e!=null){try{return _w.call(e)}catch{}try{return e+""}catch{}}return""}cc.exports=xw});var dc=u((w0,lc)=>{"use strict";var Ow=Zr(),Lw=pc(),Cw=Re(),Pw=Po(),Uw=/[\\^$.*+?()[\]{}|]/g,qw=/^\[object .+?Constructor\]$/,Dw=Function.prototype,Nw=Object.prototype,Bw=Dw.toString,Mw=Nw.hasOwnProperty,kw=RegExp("^"+Bw.call(Mw).replace(Uw,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Gw(e){if(!Cw(e)||Lw(e))return!1;var t=Ow(e)?kw:qw;return t.test(Pw(e))}lc.exports=Gw});var mc=u((T0,fc)=>{"use strict";function Fw(e,t){return e?.[t]}fc.exports=Fw});var gt=u((E0,gc)=>{"use strict";var Qw=dc(),jw=mc();function Ww(e,t){var r=jw(e,t);return Qw(r)?r:void 0}gc.exports=Ww});var Uo=u((v0,yc)=>{"use strict";var $w=gt(),Kw=function(){try{var e=$w(Object,"defineProperty");return e({},"",{}),e}catch{}}();yc.exports=Kw});var bc=u((R0,Ac)=>{"use strict";var Vw=rc(),hc=Uo(),Yw=Xr(),Hw=hc?function(e,t){return hc(e,"toString",{configurable:!0,enumerable:!1,value:Vw(t),writable:!0})}:Yw;Ac.exports=Hw});var qo=u((_0,Ic)=>{"use strict";var zw=800,Jw=16,Xw=Date.now;function Zw(e){var t=0,r=0;return function(){var a=Xw(),n=Jw-(a-r);if(r=a,n>0){if(++t>=zw)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}Ic.exports=Zw});var en=u((x0,Sc)=>{"use strict";var eT=bc(),tT=qo(),rT=tT(eT);Sc.exports=rT});var Do=u((O0,wc)=>{"use strict";var aT=Xr(),nT=Lo(),oT=en();function sT(e,t){return oT(nT(e,t,aT),e+"")}wc.exports=sT});var ea=u((L0,Tc)=>{"use strict";var iT=gt(),uT=iT(Object,"create");Tc.exports=uT});var Rc=u((C0,vc)=>{"use strict";var Ec=ea();function pT(){this.__data__=Ec?Ec(null):{},this.size=0}vc.exports=pT});var xc=u((P0,_c)=>{"use strict";function cT(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}_c.exports=cT});var Lc=u((U0,Oc)=>{"use strict";var lT=ea(),dT="__lodash_hash_undefined__",fT=Object.prototype,mT=fT.hasOwnProperty;function gT(e){var t=this.__data__;if(lT){var r=t[e];return r===dT?void 0:r}return mT.call(t,e)?t[e]:void 0}Oc.exports=gT});var Pc=u((q0,Cc)=>{"use strict";var yT=ea(),hT=Object.prototype,AT=hT.hasOwnProperty;function bT(e){var t=this.__data__;return yT?t[e]!==void 0:AT.call(t,e)}Cc.exports=bT});var qc=u((D0,Uc)=>{"use strict";var IT=ea(),ST="__lodash_hash_undefined__";function wT(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=IT&&t===void 0?ST:t,this}Uc.exports=wT});var Nc=u((N0,Dc)=>{"use strict";var TT=Rc(),ET=xc(),vT=Lc(),RT=Pc(),_T=qc();function Yt(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var a=e[t];this.set(a[0],a[1])}}Yt.prototype.clear=TT;Yt.prototype.delete=ET;Yt.prototype.get=vT;Yt.prototype.has=RT;Yt.prototype.set=_T;Dc.exports=Yt});var Mc=u((B0,Bc)=>{"use strict";function xT(){this.__data__=[],this.size=0}Bc.exports=xT});var Ht=u((M0,kc)=>{"use strict";function OT(e,t){return e===t||e!==e&&t!==t}kc.exports=OT});var ta=u((k0,Gc)=>{"use strict";var LT=Ht();function CT(e,t){for(var r=e.length;r--;)if(LT(e[r][0],t))return r;return-1}Gc.exports=CT});var Qc=u((G0,Fc)=>{"use strict";var PT=ta(),UT=Array.prototype,qT=UT.splice;function DT(e){var t=this.__data__,r=PT(t,e);if(r<0)return!1;var a=t.length-1;return r==a?t.pop():qT.call(t,r,1),--this.size,!0}Fc.exports=DT});var Wc=u((F0,jc)=>{"use strict";var NT=ta();function BT(e){var t=this.__data__,r=NT(t,e);return r<0?void 0:t[r][1]}jc.exports=BT});var Kc=u((Q0,$c)=>{"use strict";var MT=ta();function kT(e){return MT(this.__data__,e)>-1}$c.exports=kT});var Yc=u((j0,Vc)=>{"use strict";var GT=ta();function FT(e,t){var r=this.__data__,a=GT(r,e);return a<0?(++this.size,r.push([e,t])):r[a][1]=t,this}Vc.exports=FT});var ra=u((W0,Hc)=>{"use strict";var QT=Mc(),jT=Qc(),WT=Wc(),$T=Kc(),KT=Yc();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=QT;zt.prototype.delete=jT;zt.prototype.get=WT;zt.prototype.has=$T;zt.prototype.set=KT;Hc.exports=zt});var tn=u(($0,zc)=>{"use strict";var VT=gt(),YT=ie(),HT=VT(YT,"Map");zc.exports=HT});var Zc=u((K0,Xc)=>{"use strict";var Jc=Nc(),zT=ra(),JT=tn();function XT(){this.size=0,this.__data__={hash:new Jc,map:new(JT||zT),string:new Jc}}Xc.exports=XT});var tl=u((V0,el)=>{"use strict";function ZT(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}el.exports=ZT});var aa=u((Y0,rl)=>{"use strict";var eE=tl();function tE(e,t){var r=e.__data__;return eE(t)?r[typeof t=="string"?"string":"hash"]:r.map}rl.exports=tE});var nl=u((H0,al)=>{"use strict";var rE=aa();function aE(e){var t=rE(this,e).delete(e);return this.size-=t?1:0,t}al.exports=aE});var sl=u((z0,ol)=>{"use strict";var nE=aa();function oE(e){return nE(this,e).get(e)}ol.exports=oE});var ul=u((J0,il)=>{"use strict";var sE=aa();function iE(e){return sE(this,e).has(e)}il.exports=iE});var cl=u((X0,pl)=>{"use strict";var uE=aa();function pE(e,t){var r=uE(this,e),a=r.size;return r.set(e,t),this.size+=r.size==a?0:1,this}pl.exports=pE});var rn=u((Z0,ll)=>{"use strict";var cE=Zc(),lE=nl(),dE=sl(),fE=ul(),mE=cl();function Jt(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var a=e[t];this.set(a[0],a[1])}}Jt.prototype.clear=cE;Jt.prototype.delete=lE;Jt.prototype.get=dE;Jt.prototype.has=fE;Jt.prototype.set=mE;ll.exports=Jt});var fl=u((eF,dl)=>{"use strict";var gE="__lodash_hash_undefined__";function yE(e){return this.__data__.set(e,gE),this}dl.exports=yE});var gl=u((tF,ml)=>{"use strict";function hE(e){return this.__data__.has(e)}ml.exports=hE});var No=u((rF,yl)=>{"use strict";var AE=rn(),bE=fl(),IE=gl();function an(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new AE;++t<r;)this.add(e[t])}an.prototype.add=an.prototype.push=bE;an.prototype.has=IE;yl.exports=an});var Al=u((aF,hl)=>{"use strict";function SE(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=SE});var Il=u((nF,bl)=>{"use strict";function wE(e){return e!==e}bl.exports=wE});var wl=u((oF,Sl)=>{"use strict";function TE(e,t,r){for(var a=r-1,n=e.length;++a<n;)if(e[a]===t)return a;return-1}Sl.exports=TE});var El=u((sF,Tl)=>{"use strict";var EE=Al(),vE=Il(),RE=wl();function _E(e,t,r){return t===t?RE(e,t,r):EE(e,vE,r)}Tl.exports=_E});var Bo=u((iF,vl)=>{"use strict";var xE=El();function OE(e,t){var r=e==null?0:e.length;return!!r&&xE(e,t,0)>-1}vl.exports=OE});var _l=u((uF,Rl)=>{"use strict";function LE(e,t,r){for(var a=-1,n=e==null?0:e.length;++a<n;)if(r(t,e[a]))return!0;return!1}Rl.exports=LE});var Mo=u((pF,xl)=>{"use strict";function CE(e,t){return e.has(t)}xl.exports=CE});var ko=u((cF,Ol)=>{"use strict";var PE=gt(),UE=ie(),qE=PE(UE,"Set");Ol.exports=qE});var Go=u((lF,Ll)=>{"use strict";function DE(){}Ll.exports=DE});var nn=u((dF,Cl)=>{"use strict";function NE(e){var t=-1,r=Array(e.size);return e.forEach(function(a){r[++t]=a}),r}Cl.exports=NE});var Ul=u((fF,Pl)=>{"use strict";var Fo=ko(),BE=Go(),ME=nn(),kE=1/0,GE=Fo&&1/ME(new Fo([,-0]))[1]==kE?function(e){return new Fo(e)}:BE;Pl.exports=GE});var Dl=u((mF,ql)=>{"use strict";var FE=No(),QE=Bo(),jE=_l(),WE=Mo(),$E=Ul(),KE=nn(),VE=200;function YE(e,t,r){var a=-1,n=QE,o=e.length,s=!0,i=[],p=i;if(r)s=!1,n=jE;else if(o>=VE){var f=t?null:$E(e);if(f)return KE(f);s=!1,n=WE,p=new FE}else p=t?[]:i;e:for(;++a<o;){var m=e[a],y=t?t(m):m;if(m=r||m!==0?m:0,s&&y===y){for(var g=p.length;g--;)if(p[g]===y)continue e;t&&p.push(y),i.push(m)}else n(p,y,r)||(p!==i&&p.push(y),i.push(m))}return i}ql.exports=YE});var on=u((gF,Nl)=>{"use strict";var HE=9007199254740991;function zE(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=HE}Nl.exports=zE});var Xt=u((yF,Bl)=>{"use strict";var JE=Zr(),XE=on();function ZE(e){return e!=null&&XE(e.length)&&!JE(e)}Bl.exports=ZE});var Qo=u((hF,Ml)=>{"use strict";var ev=Xt(),tv=Ae();function rv(e){return tv(e)&&ev(e)}Ml.exports=rv});var Gl=u((AF,kl)=>{"use strict";var av=Oo(),nv=Do(),ov=Dl(),sv=Qo(),iv=nv(function(e){return ov(av(e,1,sv,!0))});kl.exports=iv});var Ql=u((bF,Fl)=>{"use strict";var uv=ra();function pv(){this.__data__=new uv,this.size=0}Fl.exports=pv});var Wl=u((IF,jl)=>{"use strict";function cv(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}jl.exports=cv});var Kl=u((SF,$l)=>{"use strict";function lv(e){return this.__data__.get(e)}$l.exports=lv});var Yl=u((wF,Vl)=>{"use strict";function dv(e){return this.__data__.has(e)}Vl.exports=dv});var zl=u((TF,Hl)=>{"use strict";var fv=ra(),mv=tn(),gv=rn(),yv=200;function hv(e,t){var r=this.__data__;if(r instanceof fv){var a=r.__data__;if(!mv||a.length<yv-1)return a.push([e,t]),this.size=++r.size,this;r=this.__data__=new gv(a)}return r.set(e,t),this.size=r.size,this}Hl.exports=hv});var na=u((EF,Jl)=>{"use strict";var Av=ra(),bv=Ql(),Iv=Wl(),Sv=Kl(),wv=Yl(),Tv=zl();function Zt(e){var t=this.__data__=new Av(e);this.size=t.size}Zt.prototype.clear=bv;Zt.prototype.delete=Iv;Zt.prototype.get=Sv;Zt.prototype.has=wv;Zt.prototype.set=Tv;Jl.exports=Zt});var oa=u((vF,Zl)=>{"use strict";var Xl=Uo();function Ev(e,t,r){t=="__proto__"&&Xl?Xl(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}Zl.exports=Ev});var jo=u((RF,ed)=>{"use strict";var vv=oa(),Rv=Ht();function _v(e,t,r){(r!==void 0&&!Rv(e[t],r)||r===void 0&&!(t in e))&&vv(e,t,r)}ed.exports=_v});var rd=u((_F,td)=>{"use strict";function xv(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}}td.exports=xv});var Wo=u((xF,ad)=>{"use strict";var Ov=rd(),Lv=Ov();ad.exports=Lv});var $o=u((sa,er)=>{"use strict";var Cv=ie(),id=typeof sa=="object"&&sa&&!sa.nodeType&&sa,nd=id&&typeof er=="object"&&er&&!er.nodeType&&er,Pv=nd&&nd.exports===id,od=Pv?Cv.Buffer:void 0,sd=od?od.allocUnsafe:void 0;function Uv(e,t){if(t)return e.slice();var r=e.length,a=sd?sd(r):new e.constructor(r);return e.copy(a),a}er.exports=Uv});var Ko=u((OF,ud)=>{"use strict";var qv=ie(),Dv=qv.Uint8Array;ud.exports=Dv});var sn=u((LF,cd)=>{"use strict";var pd=Ko();function Nv(e){var t=new e.constructor(e.byteLength);return new pd(t).set(new pd(e)),t}cd.exports=Nv});var Vo=u((CF,ld)=>{"use strict";var Bv=sn();function Mv(e,t){var r=t?Bv(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}ld.exports=Mv});var tr=u((PF,dd)=>{"use strict";function kv(e,t){var r=-1,a=e.length;for(t||(t=Array(a));++r<a;)t[r]=e[r];return t}dd.exports=kv});var ia=u((UF,md)=>{"use strict";var Gv=Re(),fd=Object.create,Fv=function(){function e(){}return function(t){if(!Gv(t))return{};if(fd)return fd(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();md.exports=Fv});var Yo=u((qF,gd)=>{"use strict";function Qv(e,t){return function(r){return e(t(r))}}gd.exports=Qv});var un=u((DF,yd)=>{"use strict";var jv=Yo(),Wv=jv(Object.getPrototypeOf,Object);yd.exports=Wv});var pn=u((NF,hd)=>{"use strict";var $v=Object.prototype;function Kv(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||$v;return e===r}hd.exports=Kv});var Ho=u((BF,Ad)=>{"use strict";var Vv=ia(),Yv=un(),Hv=pn();function zv(e){return typeof e.constructor=="function"&&!Hv(e)?Vv(Yv(e)):{}}Ad.exports=zv});var Id=u((MF,bd)=>{"use strict";function Jv(){return!1}bd.exports=Jv});var pa=u((ua,rr)=>{"use strict";var Xv=ie(),Zv=Id(),Td=typeof ua=="object"&&ua&&!ua.nodeType&&ua,Sd=Td&&typeof rr=="object"&&rr&&!rr.nodeType&&rr,eR=Sd&&Sd.exports===Td,wd=eR?Xv.Buffer:void 0,tR=wd?wd.isBuffer:void 0,rR=tR||Zv;rr.exports=rR});var zo=u((kF,vd)=>{"use strict";var aR=mt(),nR=un(),oR=Ae(),sR="[object Object]",iR=Function.prototype,uR=Object.prototype,Ed=iR.toString,pR=uR.hasOwnProperty,cR=Ed.call(Object);function lR(e){if(!oR(e)||aR(e)!=sR)return!1;var t=nR(e);if(t===null)return!0;var r=pR.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Ed.call(r)==cR}vd.exports=lR});var _d=u((GF,Rd)=>{"use strict";var dR=mt(),fR=on(),mR=Ae(),gR="[object Arguments]",yR="[object Array]",hR="[object Boolean]",AR="[object Date]",bR="[object Error]",IR="[object Function]",SR="[object Map]",wR="[object Number]",TR="[object Object]",ER="[object RegExp]",vR="[object Set]",RR="[object String]",_R="[object WeakMap]",xR="[object ArrayBuffer]",OR="[object DataView]",LR="[object Float32Array]",CR="[object Float64Array]",PR="[object Int8Array]",UR="[object Int16Array]",qR="[object Int32Array]",DR="[object Uint8Array]",NR="[object Uint8ClampedArray]",BR="[object Uint16Array]",MR="[object Uint32Array]",B={};B[LR]=B[CR]=B[PR]=B[UR]=B[qR]=B[DR]=B[NR]=B[BR]=B[MR]=!0;B[gR]=B[yR]=B[xR]=B[hR]=B[OR]=B[AR]=B[bR]=B[IR]=B[SR]=B[wR]=B[TR]=B[ER]=B[vR]=B[RR]=B[_R]=!1;function kR(e){return mR(e)&&fR(e.length)&&!!B[dR(e)]}Rd.exports=kR});var cn=u((FF,xd)=>{"use strict";function GR(e){return function(t){return e(t)}}xd.exports=GR});var ln=u((ca,ar)=>{"use strict";var FR=xo(),Od=typeof ca=="object"&&ca&&!ca.nodeType&&ca,la=Od&&typeof ar=="object"&&ar&&!ar.nodeType&&ar,QR=la&&la.exports===Od,Jo=QR&&FR.process,jR=function(){try{var e=la&&la.require&&la.require("util").types;return e||Jo&&Jo.binding&&Jo.binding("util")}catch{}}();ar.exports=jR});var dn=u((QF,Pd)=>{"use strict";var WR=_d(),$R=cn(),Ld=ln(),Cd=Ld&&Ld.isTypedArray,KR=Cd?$R(Cd):WR;Pd.exports=KR});var Xo=u((jF,Ud)=>{"use strict";function VR(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}Ud.exports=VR});var Zo=u((WF,qd)=>{"use strict";var YR=oa(),HR=Ht(),zR=Object.prototype,JR=zR.hasOwnProperty;function XR(e,t,r){var a=e[t];(!(JR.call(e,t)&&HR(a,r))||r===void 0&&!(t in e))&&YR(e,t,r)}qd.exports=XR});var nr=u(($F,Dd)=>{"use strict";var ZR=Zo(),e_=oa();function t_(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?e_(r,i,p):ZR(r,i,p)}return r}Dd.exports=t_});var Bd=u((KF,Nd)=>{"use strict";function r_(e,t){for(var r=-1,a=Array(e);++r<e;)a[r]=t(r);return a}Nd.exports=r_});var da=u((VF,Md)=>{"use strict";var a_=9007199254740991,n_=/^(?:0|[1-9]\d*)$/;function o_(e,t){var r=typeof e;return t=t??a_,!!t&&(r=="number"||r!="symbol"&&n_.test(e))&&e>-1&&e%1==0&&e<t}Md.exports=o_});var es=u((YF,kd)=>{"use strict";var s_=Bd(),i_=Jr(),u_=ne(),p_=pa(),c_=da(),l_=dn(),d_=Object.prototype,f_=d_.hasOwnProperty;function m_(e,t){var r=u_(e),a=!r&&i_(e),n=!r&&!a&&p_(e),o=!r&&!a&&!n&&l_(e),s=r||a||n||o,i=s?s_(e.length,String):[],p=i.length;for(var f in e)(t||f_.call(e,f))&&!(s&&(f=="length"||n&&(f=="offset"||f=="parent")||o&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||c_(f,p)))&&i.push(f);return i}kd.exports=m_});var Fd=u((HF,Gd)=>{"use strict";function g_(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}Gd.exports=g_});var jd=u((zF,Qd)=>{"use strict";var y_=Re(),h_=pn(),A_=Fd(),b_=Object.prototype,I_=b_.hasOwnProperty;function S_(e){if(!y_(e))return A_(e);var t=h_(e),r=[];for(var a in e)a=="constructor"&&(t||!I_.call(e,a))||r.push(a);return r}Qd.exports=S_});var or=u((JF,Wd)=>{"use strict";var w_=es(),T_=jd(),E_=Xt();function v_(e){return E_(e)?w_(e,!0):T_(e)}Wd.exports=v_});var Kd=u((XF,$d)=>{"use strict";var R_=nr(),__=or();function x_(e){return R_(e,__(e))}$d.exports=x_});var Xd=u((ZF,Jd)=>{"use strict";var Vd=jo(),O_=$o(),L_=Vo(),C_=tr(),P_=Ho(),Yd=Jr(),Hd=ne(),U_=Qo(),q_=pa(),D_=Zr(),N_=Re(),B_=zo(),M_=dn(),zd=Xo(),k_=Kd();function G_(e,t,r,a,n,o,s){var i=zd(e,r),p=zd(t,r),f=s.get(p);if(f){Vd(e,r,f);return}var m=o?o(i,p,r+"",e,t,s):void 0,y=m===void 0;if(y){var g=Hd(p),I=!g&&q_(p),O=!g&&!I&&M_(p);m=p,g||I||O?Hd(i)?m=i:U_(i)?m=C_(i):I?(y=!1,m=O_(p,!0)):O?(y=!1,m=L_(p,!0)):m=[]:B_(p)||Yd(p)?(m=i,Yd(i)?m=k_(i):(!N_(i)||D_(i))&&(m=P_(p))):y=!1}y&&(s.set(p,m),n(m,p,a,o,s),s.delete(p)),Vd(e,r,m)}Jd.exports=G_});var tf=u((e1,ef)=>{"use strict";var F_=na(),Q_=jo(),j_=Wo(),W_=Xd(),$_=Re(),K_=or(),V_=Xo();function Zd(e,t,r,a,n){e!==t&&j_(t,function(o,s){if(n||(n=new F_),$_(o))W_(e,t,s,r,Zd,a,n);else{var i=a?a(V_(e,s),o,s+"",e,t,n):void 0;i===void 0&&(i=o),Q_(e,s,i)}},K_)}ef.exports=Zd});var af=u((t1,rf)=>{"use strict";var Y_=Ht(),H_=Xt(),z_=da(),J_=Re();function X_(e,t,r){if(!J_(r))return!1;var a=typeof t;return(a=="number"?H_(r)&&z_(t,r.length):a=="string"&&t in r)?Y_(r[t],e):!1}rf.exports=X_});var of=u((r1,nf)=>{"use strict";var Z_=Do(),ex=af();function tx(e){return Z_(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&&ex(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})}nf.exports=tx});var ts=u((a1,sf)=>{"use strict";var rx=tf(),ax=of(),nx=ax(function(e,t,r){rx(e,t,r)});sf.exports=nx});var pm=u(me=>{"use strict";me.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"};me.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"]};me.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};me.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};me.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};me.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]};me.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}};me.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}};me.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=me.aliasToReal,r={};for(var a in t){var n=t[a];e.call(r,n)?r[n].push(a):r[n]=[a]}return r}();me.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"};me.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};me.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 Js=u((xj,cm)=>{"use strict";cm.exports={}});var mm=u((Oj,fm)=>{"use strict";var X=pm(),kO=Js(),lm=Array.prototype.push;function GO(e,t){return t==2?function(r,a){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}function Xs(e,t){return t==2?function(r,a){return e(r,a)}:function(r){return e(r)}}function dm(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}function FO(e){return function(t){return e({},t)}}function QO(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&&lm.apply(s,o),t!=a&&lm.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 ei(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:kO,p="curry"in a&&a.curry,f="fixed"in a&&a.fixed,m="rearg"in a&&a.rearg,y=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},I=g.ary,O=g.assign,_=g.clone,R=g.curry,v=g.forEach,U=g.isArray,Pe=g.isError,we=g.isFunction,pt=g.isWeakMap,Ft=g.keys,Ir=g.rearg,Sr=g.toInteger,II=g.toPath,Uu=Ft(X.aryMethod),SI={castArray:function(S){return function(){var h=arguments[0];return U(h)?S(dm(h)):S.apply(void 0,arguments)}},iteratee:function(S){return function(){var h=arguments[0],b=arguments[1],E=S(h,b),L=E.length;return s.cap&&typeof b=="number"?(b=b>2?b-2:1,L&&L<=b?E:Xs(E,b)):E}},mixin:function(S){return function(h){var b=this;if(!we(b))return S(b,Object(h));var E=[];return v(Ft(h),function(L){we(h[L])&&E.push([L,b.prototype[L]])}),S(b,Object(h)),v(E,function(L){var oe=L[1];we(oe)?b.prototype[L[0]]=oe:delete b.prototype[L[0]]}),b}},nthArg:function(S){return function(h){var b=h<0?1:Sr(h)+1;return R(S(h),b)}},rearg:function(S){return function(h,b){var E=b?b.length:0;return R(S(h,b),E)}},runInContext:function(S){return function(h){return ei(e,S(h),a)}}};function wI(S,h){if(s.cap){var b=X.iterateeRearg[S];if(b)return _I(h,b);var E=!n&&X.iterateeAry[S];if(E)return RI(h,E)}return h}function TI(S,h,b){return p||s.curry&&b>1?R(h,b):h}function qu(S,h,b){if(s.fixed&&(f||!X.skipFixed[S])){var E=X.methodSpread[S],L=E&&E.start;return L===void 0?I(h,b):QO(h,L)}return h}function Du(S,h,b){return s.rearg&&b>1&&(m||!X.skipRearg[S])?Ir(h,X.methodRearg[S]||X.aryRearg[b]):h}function EI(S,h){h=II(h);for(var b=-1,E=h.length,L=E-1,oe=_(Object(S)),Ge=oe;Ge!=null&&++b<E;){var Te=h[b],Fe=Ge[Te];Fe!=null&&!(we(Fe)||Pe(Fe)||pt(Fe))&&(Ge[Te]=_(b==L?Fe:Object(Fe))),Ge=Ge[Te]}return oe}function vI(S){return ye.runInContext.convert(S)(void 0)}function Nu(S,h){var b=X.aliasToReal[S]||S,E=X.remap[b]||b,L=a;return function(oe){var Ge=n?y:g,Te=n?y[E]:h,Fe=O(O({},L),oe);return ei(Ge,b,Te,Fe)}}function RI(S,h){return Bu(S,function(b){return typeof b=="function"?Xs(b,h):b})}function _I(S,h){return Bu(S,function(b){var E=h.length;return GO(Ir(Xs(b,E),h),E)})}function Bu(S,h){return function(){var b=arguments.length;if(!b)return S();for(var E=Array(b);b--;)E[b]=arguments[b];var L=s.rearg?0:b-1;return E[L]=h(E[L]),S.apply(void 0,E)}}function Mu(S,h,b){var E,L=X.aliasToReal[S]||S,oe=h,Ge=SI[L];return Ge?oe=Ge(h):s.immutable&&(X.mutate.array[L]?oe=Zs(h,dm):X.mutate.object[L]?oe=Zs(h,FO(h)):X.mutate.set[L]&&(oe=Zs(h,EI))),v(Uu,function(Te){return v(X.aryMethod[Te],function(Fe){if(L==Fe){var ku=X.methodSpread[L],xI=ku&&ku.afterRearg;return E=xI?qu(L,Du(L,oe,Te),Te):Du(L,qu(L,oe,Te),Te),E=wI(L,E),E=TI(L,E,Te),!1}}),!E}),E||(E=oe),E==h&&(E=p?R(E,1):function(){return h.apply(this,arguments)}),E.convert=Nu(L,h),E.placeholder=h.placeholder=b,E}if(!o)return Mu(t,r,i);var ye=r,wr=[];return v(Uu,function(S){v(X.aryMethod[S],function(h){var b=ye[X.remap[h]||h];b&&wr.push([h,Mu(h,b,ye)])})}),v(Ft(ye),function(S){var h=ye[S];if(typeof h=="function"){for(var b=wr.length;b--;)if(wr[b][0]==S)return;h.convert=Nu(S,h),wr.push([S,h])}}),v(wr,function(S){ye[S[0]]=S[1]}),ye.convert=vI,ye.placeholder=ye,v(Ft(ye),function(S){v(X.realToAlias[S]||[],function(h){ye[h]=ye[S]})}),ye}fm.exports=ei});var ti=u((Lj,gm)=>{"use strict";var jO=gt(),WO=ie(),$O=jO(WO,"WeakMap");gm.exports=$O});var ri=u((Cj,hm)=>{"use strict";var ym=ti(),KO=ym&&new ym;hm.exports=KO});var ai=u((Pj,bm)=>{"use strict";var VO=Xr(),Am=ri(),YO=Am?function(e,t){return Am.set(e,t),e}:VO;bm.exports=YO});var Ta=u((Uj,Im)=>{"use strict";var HO=ia(),zO=Re();function JO(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=HO(e.prototype),a=e.apply(r,t);return zO(a)?a:r}}Im.exports=JO});var wm=u((qj,Sm)=>{"use strict";var XO=Ta(),ZO=ie(),eL=1;function tL(e,t,r){var a=t&eL,n=XO(e);function o(){var s=this&&this!==ZO&&this instanceof o?n:e;return s.apply(a?r:this,arguments)}return o}Sm.exports=tL});var ni=u((Dj,Tm)=>{"use strict";var rL=Math.max;function aL(e,t,r,a){for(var n=-1,o=e.length,s=r.length,i=-1,p=t.length,f=rL(o-s,0),m=Array(p+f),y=!a;++i<p;)m[i]=t[i];for(;++n<s;)(y||n<o)&&(m[r[n]]=e[n]);for(;f--;)m[i++]=e[n++];return m}Tm.exports=aL});var oi=u((Nj,Em)=>{"use strict";var nL=Math.max;function oL(e,t,r,a){for(var n=-1,o=e.length,s=-1,i=r.length,p=-1,f=t.length,m=nL(o-i,0),y=Array(m+f),g=!a;++n<m;)y[n]=e[n];for(var I=n;++p<f;)y[I+p]=t[p];for(;++s<i;)(g||n<o)&&(y[I+r[s]]=e[n++]);return y}Em.exports=oL});var Rm=u((Bj,vm)=>{"use strict";function sL(e,t){for(var r=e.length,a=0;r--;)e[r]===t&&++a;return a}vm.exports=sL});var Un=u((Mj,_m)=>{"use strict";function iL(){}_m.exports=iL});var Dn=u((kj,xm)=>{"use strict";var uL=ia(),pL=Un(),cL=4294967295;function qn(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=cL,this.__views__=[]}qn.prototype=uL(pL.prototype);qn.prototype.constructor=qn;xm.exports=qn});var si=u((Gj,Lm)=>{"use strict";var Om=ri(),lL=Go(),dL=Om?function(e){return Om.get(e)}:lL;Lm.exports=dL});var Pm=u((Fj,Cm)=>{"use strict";var fL={};Cm.exports=fL});var Dm=u((Qj,qm)=>{"use strict";var Um=Pm(),mL=Object.prototype,gL=mL.hasOwnProperty;function yL(e){for(var t=e.name+"",r=Um[t],a=gL.call(Um,t)?r.length:0;a--;){var n=r[a],o=n.func;if(o==null||o==e)return n.name}return t}qm.exports=yL});var ii=u((jj,Nm)=>{"use strict";var hL=ia(),AL=Un();function Nn(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}Nn.prototype=hL(AL.prototype);Nn.prototype.constructor=Nn;Nm.exports=Nn});var Mm=u((Wj,Bm)=>{"use strict";var bL=Dn(),IL=ii(),SL=tr();function wL(e){if(e instanceof bL)return e.clone();var t=new IL(e.__wrapped__,e.__chain__);return t.__actions__=SL(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}Bm.exports=wL});var Fm=u(($j,Gm)=>{"use strict";var TL=Dn(),km=ii(),EL=Un(),vL=ne(),RL=Ae(),_L=Mm(),xL=Object.prototype,OL=xL.hasOwnProperty;function Bn(e){if(RL(e)&&!vL(e)&&!(e instanceof TL)){if(e instanceof km)return e;if(OL.call(e,"__wrapped__"))return _L(e)}return new km(e)}Bn.prototype=EL.prototype;Bn.prototype.constructor=Bn;Gm.exports=Bn});var jm=u((Kj,Qm)=>{"use strict";var LL=Dn(),CL=si(),PL=Dm(),UL=Fm();function qL(e){var t=PL(e),r=UL[t];if(typeof r!="function"||!(t in LL.prototype))return!1;if(e===r)return!0;var a=CL(r);return!!a&&e===a[0]}Qm.exports=qL});var ui=u((Vj,Wm)=>{"use strict";var DL=ai(),NL=qo(),BL=NL(DL);Wm.exports=BL});var Km=u((Yj,$m)=>{"use strict";var ML=/\{\n\/\* \[wrapped with (.+)\] \*/,kL=/,? & /;function GL(e){var t=e.match(ML);return t?t[1].split(kL):[]}$m.exports=GL});var Ym=u((Hj,Vm)=>{"use strict";var FL=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function QL(e,t){var r=t.length;if(!r)return e;var a=r-1;return t[a]=(r>1?"& ":"")+t[a],t=t.join(r>2?", ":" "),e.replace(FL,`{
|
|
2
2
|
/* [wrapped with `+t+`] */
|
|
3
|
-
`)}Vm.exports=QL});var Mn=u((zj,Hm)=>{"use strict";function jL(e,t){for(var r=-1,a=e==null?0:e.length;++r<a&&t(e[r],r,e)!==!1;);return e}Hm.exports=jL});var Jm=u((Jj,zm)=>{"use strict";var WL=Mn(),$L=Bo(),KL=1,VL=2,YL=8,HL=16,zL=32,JL=64,XL=128,ZL=256,eC=512,tC=[["ary",XL],["bind",KL],["bindKey",VL],["curry",YL],["curryRight",HL],["flip",eC],["partial",zL],["partialRight",JL],["rearg",ZL]];function rC(e,t){return WL(tC,function(r){var a="_."+r[0];t&r[1]&&!$L(e,a)&&e.push(a)}),e.sort()}zm.exports=rC});var pi=u((Xj,Xm)=>{"use strict";var aC=Km(),nC=Ym(),oC=en(),sC=Jm();function iC(e,t,r){var a=t+"";return oC(e,nC(a,sC(aC(a),r)))}Xm.exports=iC});var ci=u((Zj,tg)=>{"use strict";var uC=jm(),pC=ui(),cC=pi(),lC=1,dC=2,fC=4,mC=8,Zm=32,eg=64;function gC(e,t,r,a,n,o,s,i,p,f){var m=t&mC,y=m?s:void 0,g=m?void 0:s,I=m?o:void 0,O=m?void 0:o;t|=m?Zm:eg,t&=~(m?eg:Zm),t&fC||(t&=~(lC|dC));var _=[e,t,n,I,y,O,g,i,p,f],R=r.apply(void 0,_);return uC(e)&&pC(R,_),R.placeholder=a,cC(R,e,t)}tg.exports=gC});var li=u((eW,rg)=>{"use strict";function yC(e){var t=e;return t.placeholder}rg.exports=yC});var ng=u((tW,ag)=>{"use strict";var hC=er(),AC=da(),bC=Math.min;function IC(e,t){for(var r=e.length,a=bC(t.length,r),n=hC(e);a--;){var o=t[a];e[a]=AC(o,r)?n[o]:void 0}return e}ag.exports=IC});var kn=u((rW,sg)=>{"use strict";var og="__lodash_placeholder__";function SC(e,t){for(var r=-1,a=e.length,n=0,o=[];++r<a;){var s=e[r];(s===t||s===og)&&(e[r]=og,o[n++]=r)}return o}sg.exports=SC});var di=u((aW,pg)=>{"use strict";var wC=ni(),TC=oi(),EC=Rm(),ig=Ta(),vC=ci(),RC=li(),_C=ng(),xC=kn(),OC=ie(),LC=1,CC=2,PC=8,UC=16,qC=128,DC=512;function ug(e,t,r,a,n,o,s,i,p,f){var m=t&qC,y=t&LC,g=t&CC,I=t&(PC|UC),O=t&DC,_=g?void 0:ig(e);function R(){for(var v=arguments.length,U=Array(v),Pe=v;Pe--;)U[Pe]=arguments[Pe];if(I)var we=RC(R),pt=EC(U,we);if(a&&(U=wC(U,a,n,I)),o&&(U=TC(U,o,s,I)),v-=pt,I&&v<f){var Gt=xC(U,we);return vC(e,t,ug,R.placeholder,r,U,Gt,i,p,f-v)}var Ir=y?r:this,Sr=g?Ir[e]:e;return v=U.length,i?U=_C(U,i):O&&v>1&&U.reverse(),m&&p<v&&(U.length=p),this&&this!==OC&&this instanceof R&&(Sr=_||ig(Sr)),Sr.apply(Ir,U)}return R}pg.exports=ug});var lg=u((nW,cg)=>{"use strict";var NC=Za(),BC=Ta(),MC=di(),kC=ci(),GC=li(),FC=kn(),QC=ie();function jC(e,t,r){var a=BC(e);function n(){for(var o=arguments.length,s=Array(o),i=o,p=GC(n);i--;)s[i]=arguments[i];var f=o<3&&s[0]!==p&&s[o-1]!==p?[]:FC(s,p);if(o-=f.length,o<r)return kC(e,t,MC,n.placeholder,void 0,s,f,void 0,void 0,r-o);var m=this&&this!==QC&&this instanceof n?a:e;return NC(m,this,s)}return n}cg.exports=jC});var fg=u((oW,dg)=>{"use strict";var WC=Za(),$C=Ta(),KC=ie(),VC=1;function YC(e,t,r,a){var n=t&VC,o=$C(e);function s(){for(var i=-1,p=arguments.length,f=-1,m=a.length,y=Array(m+p),g=this&&this!==KC&&this instanceof s?o:e;++f<m;)y[f]=a[f];for(;p--;)y[f++]=arguments[++i];return WC(g,n?r:this,y)}return s}dg.exports=YC});var bg=u((sW,Ag)=>{"use strict";var HC=ni(),zC=oi(),mg=kn(),gg="__lodash_placeholder__",fi=1,JC=2,XC=4,yg=8,Ea=128,hg=256,ZC=Math.min;function eP(e,t){var r=e[1],a=t[1],n=r|a,o=n<(fi|JC|Ea),s=a==Ea&&r==yg||a==Ea&&r==hg&&e[7].length<=t[8]||a==(Ea|hg)&&t[7].length<=t[8]&&r==yg;if(!(o||s))return e;a&fi&&(e[2]=t[2],n|=r&fi?0:XC);var i=t[3];if(i){var p=e[3];e[3]=p?HC(p,i,t[4]):i,e[4]=p?mg(e[3],gg):t[4]}return i=t[5],i&&(p=e[5],e[5]=p?zC(p,i,t[6]):i,e[6]=p?mg(e[5],gg):t[6]),i=t[7],i&&(e[7]=i),a&Ea&&(e[8]=e[8]==null?t[8]:ZC(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=n,e}Ag.exports=eP});var Sg=u((iW,Ig)=>{"use strict";var tP=/\s/;function rP(e){for(var t=e.length;t--&&tP.test(e.charAt(t)););return t}Ig.exports=rP});var Tg=u((uW,wg)=>{"use strict";var aP=Sg(),nP=/^\s+/;function oP(e){return e&&e.slice(0,aP(e)+1).replace(nP,"")}wg.exports=oP});var fr=u((pW,Eg)=>{"use strict";var sP=mt(),iP=Ae(),uP="[object Symbol]";function pP(e){return typeof e=="symbol"||iP(e)&&sP(e)==uP}Eg.exports=pP});var xg=u((cW,_g)=>{"use strict";var cP=Tg(),vg=Re(),lP=fr(),Rg=0/0,dP=/^[-+]0x[0-9a-f]+$/i,fP=/^0b[01]+$/i,mP=/^0o[0-7]+$/i,gP=parseInt;function yP(e){if(typeof e=="number")return e;if(lP(e))return Rg;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=cP(e);var r=fP.test(e);return r||mP.test(e)?gP(e.slice(2),r?2:8):dP.test(e)?Rg:+e}_g.exports=yP});var Cg=u((lW,Lg)=>{"use strict";var hP=xg(),Og=1/0,AP=17976931348623157e292;function bP(e){if(!e)return e===0?e:0;if(e=hP(e),e===Og||e===-Og){var t=e<0?-1:1;return t*AP}return e===e?e:0}Lg.exports=bP});var mi=u((dW,Pg)=>{"use strict";var IP=Cg();function SP(e){var t=IP(e),r=t%1;return t===t?r?t-r:t:0}Pg.exports=SP});var Gn=u((fW,Bg)=>{"use strict";var wP=ai(),TP=wm(),EP=lg(),vP=di(),RP=fg(),_P=si(),xP=bg(),OP=ui(),LP=pi(),Ug=mi(),CP="Expected a function",qg=1,PP=2,gi=8,yi=16,hi=32,Dg=64,Ng=Math.max;function UP(e,t,r,a,n,o,s,i){var p=t&PP;if(!p&&typeof e!="function")throw new TypeError(CP);var f=a?a.length:0;if(f||(t&=~(hi|Dg),a=n=void 0),s=s===void 0?s:Ng(Ug(s),0),i=i===void 0?i:Ug(i),f-=n?n.length:0,t&Dg){var m=a,y=n;a=n=void 0}var g=p?void 0:_P(e),I=[e,t,r,a,n,m,y,o,s,i];if(g&&xP(I,g),e=I[0],t=I[1],r=I[2],a=I[3],n=I[4],i=I[9]=I[9]===void 0?p?0:e.length:Ng(I[9]-f,0),!i&&t&(gi|yi)&&(t&=~(gi|yi)),!t||t==qg)var O=TP(e,t,r);else t==gi||t==yi?O=EP(e,t,i):(t==hi||t==(qg|hi))&&!n.length?O=RP(e,t,r,a):O=vP.apply(void 0,I);var _=g?wP:OP;return LP(_(O,I),e,t)}Bg.exports=UP});var kg=u((mW,Mg)=>{"use strict";var qP=Gn(),DP=128;function NP(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,qP(e,DP,void 0,void 0,void 0,void 0,t)}Mg.exports=NP});var Fg=u((gW,Gg)=>{"use strict";var BP=Yo(),MP=BP(Object.keys,Object);Gg.exports=MP});var Ai=u((yW,Qg)=>{"use strict";var kP=pn(),GP=Fg(),FP=Object.prototype,QP=FP.hasOwnProperty;function jP(e){if(!kP(e))return GP(e);var t=[];for(var r in Object(e))QP.call(e,r)&&r!="constructor"&&t.push(r);return t}Qg.exports=jP});var mr=u((hW,jg)=>{"use strict";var WP=es(),$P=Ai(),KP=Jt();function VP(e){return KP(e)?WP(e):$P(e)}jg.exports=VP});var bi=u((AW,Wg)=>{"use strict";var YP=ar(),HP=mr();function zP(e,t){return e&&YP(t,HP(t),e)}Wg.exports=zP});var Kg=u((bW,$g)=>{"use strict";var JP=ar(),XP=nr();function ZP(e,t){return e&&JP(t,XP(t),e)}$g.exports=ZP});var Yg=u((IW,Vg)=>{"use strict";function eU(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}Vg.exports=eU});var Ii=u((SW,Hg)=>{"use strict";function tU(){return[]}Hg.exports=tU});var Fn=u((wW,Jg)=>{"use strict";var rU=Yg(),aU=Ii(),nU=Object.prototype,oU=nU.propertyIsEnumerable,zg=Object.getOwnPropertySymbols,sU=zg?function(e){return e==null?[]:(e=Object(e),rU(zg(e),function(t){return oU.call(e,t)}))}:aU;Jg.exports=sU});var Zg=u((TW,Xg)=>{"use strict";var iU=ar(),uU=Fn();function pU(e,t){return iU(e,uU(e),t)}Xg.exports=pU});var Si=u((EW,ey)=>{"use strict";var cU=Xa(),lU=un(),dU=Fn(),fU=Ii(),mU=Object.getOwnPropertySymbols,gU=mU?function(e){for(var t=[];e;)cU(t,dU(e)),e=lU(e);return t}:fU;ey.exports=gU});var ry=u((vW,ty)=>{"use strict";var yU=ar(),hU=Si();function AU(e,t){return yU(e,hU(e),t)}ty.exports=AU});var wi=u((RW,ay)=>{"use strict";var bU=Xa(),IU=ne();function SU(e,t,r){var a=t(e);return IU(e)?a:bU(a,r(e))}ay.exports=SU});var Ti=u((_W,ny)=>{"use strict";var wU=wi(),TU=Fn(),EU=mr();function vU(e){return wU(e,EU,TU)}ny.exports=vU});var sy=u((xW,oy)=>{"use strict";var RU=wi(),_U=Si(),xU=nr();function OU(e){return RU(e,xU,_U)}oy.exports=OU});var uy=u((OW,iy)=>{"use strict";var LU=gt(),CU=ie(),PU=LU(CU,"DataView");iy.exports=PU});var cy=u((LW,py)=>{"use strict";var UU=gt(),qU=ie(),DU=UU(qU,"Promise");py.exports=DU});var yr=u((CW,hy)=>{"use strict";var Ei=uy(),vi=tn(),Ri=cy(),_i=ko(),xi=ti(),yy=mt(),gr=Po(),ly="[object Map]",NU="[object Object]",dy="[object Promise]",fy="[object Set]",my="[object WeakMap]",gy="[object DataView]",BU=gr(Ei),MU=gr(vi),kU=gr(Ri),GU=gr(_i),FU=gr(xi),Dt=yy;(Ei&&Dt(new Ei(new ArrayBuffer(1)))!=gy||vi&&Dt(new vi)!=ly||Ri&&Dt(Ri.resolve())!=dy||_i&&Dt(new _i)!=fy||xi&&Dt(new xi)!=my)&&(Dt=function(e){var t=yy(e),r=t==NU?e.constructor:void 0,a=r?gr(r):"";if(a)switch(a){case BU:return gy;case MU:return ly;case kU:return dy;case GU:return fy;case FU:return my}return t});hy.exports=Dt});var by=u((PW,Ay)=>{"use strict";var QU=Object.prototype,jU=QU.hasOwnProperty;function WU(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&jU.call(e,"index")&&(r.index=e.index,r.input=e.input),r}Ay.exports=WU});var Sy=u((UW,Iy)=>{"use strict";var $U=sn();function KU(e,t){var r=t?$U(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}Iy.exports=KU});var Ty=u((qW,wy)=>{"use strict";var VU=/\w*$/;function YU(e){var t=new e.constructor(e.source,VU.exec(e));return t.lastIndex=e.lastIndex,t}wy.exports=YU});var xy=u((DW,_y)=>{"use strict";var Ey=_t(),vy=Ey?Ey.prototype:void 0,Ry=vy?vy.valueOf:void 0;function HU(e){return Ry?Object(Ry.call(e)):{}}_y.exports=HU});var Ly=u((NW,Oy)=>{"use strict";var zU=sn(),JU=Sy(),XU=Ty(),ZU=xy(),eq=Vo(),tq="[object Boolean]",rq="[object Date]",aq="[object Map]",nq="[object Number]",oq="[object RegExp]",sq="[object Set]",iq="[object String]",uq="[object Symbol]",pq="[object ArrayBuffer]",cq="[object DataView]",lq="[object Float32Array]",dq="[object Float64Array]",fq="[object Int8Array]",mq="[object Int16Array]",gq="[object Int32Array]",yq="[object Uint8Array]",hq="[object Uint8ClampedArray]",Aq="[object Uint16Array]",bq="[object Uint32Array]";function Iq(e,t,r){var a=e.constructor;switch(t){case pq:return zU(e);case tq:case rq:return new a(+e);case cq:return JU(e,r);case lq:case dq:case fq:case mq:case gq:case yq:case hq:case Aq:case bq:return eq(e,r);case aq:return new a;case nq:case iq:return new a(e);case oq:return XU(e);case sq:return new a;case uq:return ZU(e)}}Oy.exports=Iq});var Py=u((BW,Cy)=>{"use strict";var Sq=yr(),wq=Ae(),Tq="[object Map]";function Eq(e){return wq(e)&&Sq(e)==Tq}Cy.exports=Eq});var Ny=u((MW,Dy)=>{"use strict";var vq=Py(),Rq=cn(),Uy=ln(),qy=Uy&&Uy.isMap,_q=qy?Rq(qy):vq;Dy.exports=_q});var My=u((kW,By)=>{"use strict";var xq=yr(),Oq=Ae(),Lq="[object Set]";function Cq(e){return Oq(e)&&xq(e)==Lq}By.exports=Cq});var Qy=u((GW,Fy)=>{"use strict";var Pq=My(),Uq=cn(),ky=ln(),Gy=ky&&ky.isSet,qq=Gy?Uq(Gy):Pq;Fy.exports=qq});var Oi=u((FW,Ky)=>{"use strict";var Dq=na(),Nq=Mn(),Bq=Zo(),Mq=bi(),kq=Kg(),Gq=$o(),Fq=er(),Qq=Zg(),jq=ry(),Wq=Ti(),$q=sy(),Kq=yr(),Vq=by(),Yq=Ly(),Hq=Ho(),zq=ne(),Jq=pa(),Xq=Ny(),Zq=Re(),eD=Qy(),tD=mr(),rD=nr(),aD=1,nD=2,oD=4,jy="[object Arguments]",sD="[object Array]",iD="[object Boolean]",uD="[object Date]",pD="[object Error]",Wy="[object Function]",cD="[object GeneratorFunction]",lD="[object Map]",dD="[object Number]",$y="[object Object]",fD="[object RegExp]",mD="[object Set]",gD="[object String]",yD="[object Symbol]",hD="[object WeakMap]",AD="[object ArrayBuffer]",bD="[object DataView]",ID="[object Float32Array]",SD="[object Float64Array]",wD="[object Int8Array]",TD="[object Int16Array]",ED="[object Int32Array]",vD="[object Uint8Array]",RD="[object Uint8ClampedArray]",_D="[object Uint16Array]",xD="[object Uint32Array]",N={};N[jy]=N[sD]=N[AD]=N[bD]=N[iD]=N[uD]=N[ID]=N[SD]=N[wD]=N[TD]=N[ED]=N[lD]=N[dD]=N[$y]=N[fD]=N[mD]=N[gD]=N[yD]=N[vD]=N[RD]=N[_D]=N[xD]=!0;N[pD]=N[Wy]=N[hD]=!1;function Qn(e,t,r,a,n,o){var s,i=t&aD,p=t&nD,f=t&oD;if(r&&(s=n?r(e,a,n,o):r(e)),s!==void 0)return s;if(!Zq(e))return e;var m=zq(e);if(m){if(s=Vq(e),!i)return Fq(e,s)}else{var y=Kq(e),g=y==Wy||y==cD;if(Jq(e))return Gq(e,i);if(y==$y||y==jy||g&&!n){if(s=p||g?{}:Hq(e),!i)return p?jq(e,kq(s,e)):Qq(e,Mq(s,e))}else{if(!N[y])return n?e:{};s=Yq(e,y,i)}}o||(o=new Dq);var I=o.get(e);if(I)return I;o.set(e,s),eD(e)?e.forEach(function(R){s.add(Qn(R,t,r,R,e,o))}):Xq(e)&&e.forEach(function(R,v){s.set(v,Qn(R,t,r,v,e,o))});var O=f?p?$q:Wq:p?rD:tD,_=m?void 0:O(e);return Nq(_||e,function(R,v){_&&(v=R,R=e[v]),Bq(s,v,Qn(R,t,r,v,e,o))}),s}Ky.exports=Qn});var Yy=u((QW,Vy)=>{"use strict";var OD=Oi(),LD=4;function CD(e){return OD(e,LD)}Vy.exports=CD});var zy=u((jW,Hy)=>{"use strict";var PD=Gn(),UD=8;function Li(e,t,r){t=r?void 0:t;var a=PD(e,UD,void 0,void 0,void 0,void 0,void 0,t);return a.placeholder=Li.placeholder,a}Li.placeholder={};Hy.exports=Li});var Xy=u((WW,Jy)=>{"use strict";var qD=mt(),DD=Ae(),ND=zo(),BD="[object DOMException]",MD="[object Error]";function kD(e){if(!DD(e))return!1;var t=qD(e);return t==MD||t==BD||typeof e.message=="string"&&typeof e.name=="string"&&!ND(e)}Jy.exports=kD});var eh=u(($W,Zy)=>{"use strict";var GD=yr(),FD=Ae(),QD="[object WeakMap]";function jD(e){return FD(e)&&GD(e)==QD}Zy.exports=jD});var rh=u((KW,th)=>{"use strict";function WD(e,t){for(var r=-1,a=e==null?0:e.length;++r<a;)if(t(e[r],r,e))return!0;return!1}th.exports=WD});var Ci=u((VW,ah)=>{"use strict";var $D=No(),KD=rh(),VD=Mo(),YD=1,HD=2;function zD(e,t,r,a,n,o){var s=r&YD,i=e.length,p=t.length;if(i!=p&&!(s&&p>i))return!1;var f=o.get(e),m=o.get(t);if(f&&m)return f==t&&m==e;var y=-1,g=!0,I=r&HD?new $D:void 0;for(o.set(e,t),o.set(t,e);++y<i;){var O=e[y],_=t[y];if(a)var R=s?a(_,O,y,t,e,o):a(O,_,y,e,t,o);if(R!==void 0){if(R)continue;g=!1;break}if(I){if(!KD(t,function(v,U){if(!VD(I,U)&&(O===v||n(O,v,r,a,o)))return I.push(U)})){g=!1;break}}else if(!(O===_||n(O,_,r,a,o))){g=!1;break}}return o.delete(e),o.delete(t),g}ah.exports=zD});var oh=u((YW,nh)=>{"use strict";function JD(e){var t=-1,r=Array(e.size);return e.forEach(function(a,n){r[++t]=[n,a]}),r}nh.exports=JD});var ch=u((HW,ph)=>{"use strict";var sh=_t(),ih=Ko(),XD=Yt(),ZD=Ci(),eN=oh(),tN=nn(),rN=1,aN=2,nN="[object Boolean]",oN="[object Date]",sN="[object Error]",iN="[object Map]",uN="[object Number]",pN="[object RegExp]",cN="[object Set]",lN="[object String]",dN="[object Symbol]",fN="[object ArrayBuffer]",mN="[object DataView]",uh=sh?sh.prototype:void 0,Pi=uh?uh.valueOf:void 0;function gN(e,t,r,a,n,o,s){switch(r){case mN:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case fN:return!(e.byteLength!=t.byteLength||!o(new ih(e),new ih(t)));case nN:case oN:case uN:return XD(+e,+t);case sN:return e.name==t.name&&e.message==t.message;case pN:case lN:return e==t+"";case iN:var i=eN;case cN:var p=a&rN;if(i||(i=tN),e.size!=t.size&&!p)return!1;var f=s.get(e);if(f)return f==t;a|=aN,s.set(e,t);var m=ZD(i(e),i(t),a,n,o,s);return s.delete(e),m;case dN:if(Pi)return Pi.call(e)==Pi.call(t)}return!1}ph.exports=gN});var fh=u((zW,dh)=>{"use strict";var lh=Ti(),yN=1,hN=Object.prototype,AN=hN.hasOwnProperty;function bN(e,t,r,a,n,o){var s=r&yN,i=lh(e),p=i.length,f=lh(t),m=f.length;if(p!=m&&!s)return!1;for(var y=p;y--;){var g=i[y];if(!(s?g in t:AN.call(t,g)))return!1}var I=o.get(e),O=o.get(t);if(I&&O)return I==t&&O==e;var _=!0;o.set(e,t),o.set(t,e);for(var R=s;++y<p;){g=i[y];var v=e[g],U=t[g];if(a)var Pe=s?a(U,v,g,t,e,o):a(v,U,g,e,t,o);if(!(Pe===void 0?v===U||n(v,U,r,a,o):Pe)){_=!1;break}R||(R=g=="constructor")}if(_&&!R){var we=e.constructor,pt=t.constructor;we!=pt&&"constructor"in e&&"constructor"in t&&!(typeof we=="function"&&we instanceof we&&typeof pt=="function"&&pt instanceof pt)&&(_=!1)}return o.delete(e),o.delete(t),_}dh.exports=bN});var Sh=u((JW,Ih)=>{"use strict";var Ui=na(),IN=Ci(),SN=ch(),wN=fh(),mh=yr(),gh=ne(),yh=pa(),TN=dn(),EN=1,hh="[object Arguments]",Ah="[object Array]",jn="[object Object]",vN=Object.prototype,bh=vN.hasOwnProperty;function RN(e,t,r,a,n,o){var s=gh(e),i=gh(t),p=s?Ah:mh(e),f=i?Ah:mh(t);p=p==hh?jn:p,f=f==hh?jn:f;var m=p==jn,y=f==jn,g=p==f;if(g&&yh(e)){if(!yh(t))return!1;s=!0,m=!1}if(g&&!m)return o||(o=new Ui),s||TN(e)?IN(e,t,r,a,n,o):SN(e,t,p,r,a,n,o);if(!(r&EN)){var I=m&&bh.call(e,"__wrapped__"),O=y&&bh.call(t,"__wrapped__");if(I||O){var _=I?e.value():e,R=O?t.value():t;return o||(o=new Ui),n(_,R,r,a,o)}}return g?(o||(o=new Ui),wN(e,t,r,a,n,o)):!1}Ih.exports=RN});var qi=u((XW,Eh)=>{"use strict";var _N=Sh(),wh=Ae();function Th(e,t,r,a,n){return e===t?!0:e==null||t==null||!wh(e)&&!wh(t)?e!==e&&t!==t:_N(e,t,r,a,Th,n)}Eh.exports=Th});var Rh=u((ZW,vh)=>{"use strict";var xN=na(),ON=qi(),LN=1,CN=2;function PN(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],f=e[p],m=i[1];if(s&&i[2]){if(f===void 0&&!(p in e))return!1}else{var y=new xN;if(a)var g=a(f,m,p,e,t,y);if(!(g===void 0?ON(m,f,LN|CN,a,y):g))return!1}}return!0}vh.exports=PN});var Di=u((e$,_h)=>{"use strict";var UN=Re();function qN(e){return e===e&&!UN(e)}_h.exports=qN});var Oh=u((t$,xh)=>{"use strict";var DN=Di(),NN=mr();function BN(e){for(var t=NN(e),r=t.length;r--;){var a=t[r],n=e[a];t[r]=[a,n,DN(n)]}return t}xh.exports=BN});var Ni=u((r$,Lh)=>{"use strict";function MN(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}Lh.exports=MN});var Ph=u((a$,Ch)=>{"use strict";var kN=Rh(),GN=Oh(),FN=Ni();function QN(e){var t=GN(e);return t.length==1&&t[0][2]?FN(t[0][0],t[0][1]):function(r){return r===e||kN(r,e,t)}}Ch.exports=QN});var Wn=u((n$,Uh)=>{"use strict";var jN=ne(),WN=fr(),$N=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,KN=/^\w*$/;function VN(e,t){if(jN(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||WN(e)?!0:KN.test(e)||!$N.test(e)||t!=null&&e in Object(t)}Uh.exports=VN});var Nh=u((o$,Dh)=>{"use strict";var qh=rn(),YN="Expected a function";function Bi(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(YN);var r=function(){var a=arguments,n=t?t.apply(this,a):a[0],o=r.cache;if(o.has(n))return o.get(n);var s=e.apply(this,a);return r.cache=o.set(n,s)||o,s};return r.cache=new(Bi.Cache||qh),r}Bi.Cache=qh;Dh.exports=Bi});var Mh=u((s$,Bh)=>{"use strict";var HN=Nh(),zN=500;function JN(e){var t=HN(e,function(a){return r.size===zN&&r.clear(),a}),r=t.cache;return t}Bh.exports=JN});var Mi=u((i$,kh)=>{"use strict";var XN=Mh(),ZN=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,eB=/\\(\\)?/g,tB=XN(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(ZN,function(r,a,n,o){t.push(n?o.replace(eB,"$1"):a||r)}),t});kh.exports=tB});var ki=u((u$,Gh)=>{"use strict";function rB(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}Gh.exports=rB});var Kh=u((p$,$h)=>{"use strict";var Fh=_t(),aB=ki(),nB=ne(),oB=fr(),sB=1/0,Qh=Fh?Fh.prototype:void 0,jh=Qh?Qh.toString:void 0;function Wh(e){if(typeof e=="string")return e;if(nB(e))return aB(e,Wh)+"";if(oB(e))return jh?jh.call(e):"";var t=e+"";return t=="0"&&1/e==-sB?"-0":t}$h.exports=Wh});var Gi=u((c$,Vh)=>{"use strict";var iB=Kh();function uB(e){return e==null?"":iB(e)}Vh.exports=uB});var Fi=u((l$,Yh)=>{"use strict";var pB=ne(),cB=Wn(),lB=Mi(),dB=Gi();function fB(e,t){return pB(e)?e:cB(e,t)?[e]:lB(dB(e))}Yh.exports=fB});var hr=u((d$,Hh)=>{"use strict";var mB=fr(),gB=1/0;function yB(e){if(typeof e=="string"||mB(e))return e;var t=e+"";return t=="0"&&1/e==-gB?"-0":t}Hh.exports=yB});var Qi=u((f$,zh)=>{"use strict";var hB=Fi(),AB=hr();function bB(e,t){t=hB(t,e);for(var r=0,a=t.length;e!=null&&r<a;)e=e[AB(t[r++])];return r&&r==a?e:void 0}zh.exports=bB});var Xh=u((m$,Jh)=>{"use strict";var IB=Qi();function SB(e,t,r){var a=e==null?void 0:IB(e,t);return a===void 0?r:a}Jh.exports=SB});var eA=u((g$,Zh)=>{"use strict";function wB(e,t){return e!=null&&t in Object(e)}Zh.exports=wB});var rA=u((y$,tA)=>{"use strict";var TB=Fi(),EB=Jr(),vB=ne(),RB=da(),_B=on(),xB=hr();function OB(e,t,r){t=TB(t,e);for(var a=-1,n=t.length,o=!1;++a<n;){var s=xB(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&&_B(n)&&RB(s,n)&&(vB(e)||EB(e)))}tA.exports=OB});var nA=u((h$,aA)=>{"use strict";var LB=eA(),CB=rA();function PB(e,t){return e!=null&&CB(e,t,LB)}aA.exports=PB});var sA=u((A$,oA)=>{"use strict";var UB=qi(),qB=Xh(),DB=nA(),NB=Wn(),BB=Di(),MB=Ni(),kB=hr(),GB=1,FB=2;function QB(e,t){return NB(e)&&BB(t)?MB(kB(e),t):function(r){var a=qB(r,e);return a===void 0&&a===t?DB(r,e):UB(t,a,GB|FB)}}oA.exports=QB});var uA=u((b$,iA)=>{"use strict";function jB(e){return function(t){return t?.[e]}}iA.exports=jB});var cA=u((I$,pA)=>{"use strict";var WB=Qi();function $B(e){return function(t){return WB(t,e)}}pA.exports=$B});var dA=u((S$,lA)=>{"use strict";var KB=uA(),VB=cA(),YB=Wn(),HB=hr();function zB(e){return YB(e)?KB(HB(e)):VB(e)}lA.exports=zB});var ji=u((w$,fA)=>{"use strict";var JB=Ph(),XB=sA(),ZB=Xr(),eM=ne(),tM=dA();function rM(e){return typeof e=="function"?e:e==null?ZB:typeof e=="object"?eM(e)?XB(e[0],e[1]):JB(e):tM(e)}fA.exports=rM});var gA=u((T$,mA)=>{"use strict";var aM=Oi(),nM=ji(),oM=1;function sM(e){return nM(typeof e=="function"?e:aM(e,oM))}mA.exports=sM});var hA=u((E$,yA)=>{"use strict";var iM=Oo();function uM(e){var t=e==null?0:e.length;return t?iM(e,1):[]}yA.exports=uM});var bA=u((v$,AA)=>{"use strict";var pM=hA(),cM=Lo(),lM=en();function dM(e){return lM(cM(e,void 0,pM),e+"")}AA.exports=dM});var SA=u((R$,IA)=>{"use strict";var fM=Gn(),mM=bA(),gM=256,yM=mM(function(e,t){return fM(e,gM,void 0,void 0,void 0,t)});IA.exports=yM});var TA=u((_$,wA)=>{"use strict";var hM=ki(),AM=er(),bM=ne(),IM=fr(),SM=Mi(),wM=hr(),TM=Gi();function EM(e){return bM(e)?hM(e,wM):IM(e)?[e]:AM(SM(TM(e)))}wA.exports=EM});var vA=u((x$,EA)=>{"use strict";EA.exports={ary:kg(),assign:bi(),clone:Yy(),curry:zy(),forEach:Mn(),isArray:ne(),isError:Xy(),isFunction:Zr(),isWeakMap:eh(),iteratee:gA(),keys:Ai(),rearg:SA(),toInteger:mi(),toPath:TA()}});var _A=u((O$,RA)=>{"use strict";var vM=mm(),RM=vA();function _M(e,t,r){return vM(RM,e,t,r)}RA.exports=_M});var Wi=u((L$,OA)=>{"use strict";var xM=_A(),xA=xM("merge",ts());xA.placeholder=Js();OA.exports=xA});var Lb=u((wK,Ob)=>{"use strict";function YM(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}Ob.exports=YM});var Pb=u((TK,Cb)=>{"use strict";var HM=Wo(),zM=mr();function JM(e,t){return e&&HM(e,t,zM)}Cb.exports=JM});var qb=u((EK,Ub)=>{"use strict";var XM=Jt();function ZM(e,t){return function(r,a){if(r==null)return r;if(!XM(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}}Ub.exports=ZM});var Nb=u((vK,Db)=>{"use strict";var ek=Pb(),tk=qb(),rk=tk(ek);Db.exports=rk});var Mb=u((RK,Bb)=>{"use strict";var ak=Nb();function nk(e,t,r,a){return ak(e,function(n,o,s){t(a,n,r(n),s)}),a}Bb.exports=nk});var Gb=u((_K,kb)=>{"use strict";var ok=Lb(),sk=Mb(),ik=ji(),uk=ne();function pk(e,t){return function(r,a){var n=uk(r)?ok:sk,o=t?t():{};return n(r,e,ik(a,2),o)}}kb.exports=pk});var Qb=u((xK,Fb)=>{"use strict";var ck=oa(),lk=Gb(),dk=Object.prototype,fk=dk.hasOwnProperty,mk=lk(function(e,t,r){fk.call(e,r)?e[r].push(t):ck(e,r,[t])});Fb.exports=mk});var Mk={};w(Mk,{Method:()=>so,ai:()=>Pu,api:()=>su,auditLogs:()=>At,automations:()=>_n,backups:()=>xe,branding:()=>An,constants:()=>$r,environmentVariables:()=>ze,features:()=>Ne,groups:()=>j,init:()=>um,licensing:()=>$e,logger:()=>Nt,mappers:()=>Y,middleware:()=>Ji,plugins:()=>xn,publicApi:()=>Cn,quotas:()=>Ye,scimGroups:()=>Ar,scimUsers:()=>ge,sdk:()=>Ki,users:()=>nt,utils:()=>Kt});module.exports=qI(Mk);var so=(o=>(o.POST="POST",o.GET="GET",o.PATCH="PATCH",o.DELETE="DELETE",o.PUT="PUT",o))(so||{});var Ki={};w(Ki,{ai:()=>As,auditLogs:()=>At,automations:()=>_n,backups:()=>xe,branding:()=>An,environmentVariables:()=>ze,features:()=>Ne,groups:()=>j,init:()=>um,licensing:()=>$e,logger:()=>Nt,plugins:()=>xn,publicApi:()=>Cn,quotas:()=>Ye,scimGroups:()=>Ar,scimUsers:()=>ge,users:()=>nt,utils:()=>Kt});var An={};w(An,{getBrandingConfig:()=>Ex});var Ne={};w(Ne,{checkBackups:()=>de,checkFeature:()=>yn,checkFeatures:()=>ds,checkSCIM:()=>ys,isAppBuildersEnabled:()=>Ct,isAuditLogsEnabled:()=>hn,isBackupsEnabled:()=>fs,isBrandingEnabled:()=>ms,isEnforceableSSO:()=>wf,isExpandedPublicApiEnabled:()=>rt,isPWAEnabled:()=>bx,isSSOEnforced:()=>Ix,isSyncAutomationsEnabled:()=>hx,isTriggerAutomationRunEnabled:()=>Ax,isUserGroupsEnabled:()=>gs,isViewPermissionEnabled:()=>Sx,isViewReadonlyColumnsEnabled:()=>wx});var ue=require("@budibase/types"),tt=require("@budibase/backend-core");var $e={};w($e,{cache:()=>qe,client:()=>ft,features:()=>za,getFreeLicense:()=>ps,getLicense:()=>is,getLicenseFromKey:()=>us,keys:()=>ls,offline:()=>fn,quotas:()=>Ja});var qe={};w(qe,{getCachedLicense:()=>If,invalidate:()=>Sf,refresh:()=>xt});var Na=require("@budibase/backend-core"),Tr,DI=async()=>{Tr=await Na.RedisClient.init(Na.redis.utils.Databases.LICENSES)},NI=async()=>{Tr&&await Tr.finish()};process.on("exit",async()=>{await NI()});var io=async()=>(Tr||await DI(),Tr);var ft={};w(ft,{activateLicenseKey:()=>Eo,getLicense:()=>Wt,getLicenseFromKey:()=>To,triggerQuota:()=>SS});var Fu=P(require("node-fetch"));var Qu=require("@budibase/backend-core"),uo=require("dd-trace"),ju=require("dd-trace/ext/formats"),po=class{constructor(t){this.apiCall=t=>async(r="",a={})=>await uo.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";Qu.logging.correlation.setHeader(o),uo.tracer.inject(n,ju.HTTP_HEADERS,o);let i={method:t,body:s?JSON.stringify(a.body):a.body,headers:o,credentials:"include"};return(0,Fu.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}},co=po;var Va=require("@budibase/types"),C=require("@budibase/backend-core");var Qe={};w(Qe,{bustCache:()=>mo,getCurrentUsageValues:()=>Ju,getQuotaUsage:()=>Tt,setAllUsage:()=>yo,setAppUsageValue:()=>go,setUsage:()=>Yu,setUsagePerApp:()=>Hu,utils:()=>_r});var se=require("@budibase/types"),le=require("@budibase/backend-core");var _r={};w(_r,{generateBaseQuotaUsage:()=>Ma,generateNewMonthlyQuotas:()=>Rr,generateNewQuotaUsage:()=>fo,getBreakdownName:()=>Ga,getCurrentMonthString:()=>ct,getQuotaDocId:()=>vr,setCurrentMonth:()=>ka,setQuotaReset:()=>lo});var H=require("@budibase/types"),Er=require("@budibase/backend-core"),Ba=require("@budibase/shared-core"),vr=()=>Er.context.isSelfHostUsingCloud()?`quota_usage_${Er.context.getTenantId()}`:Er.db.StaticDatabases.GLOBAL.docs.usageQuota,Wu=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},lo=e=>{e.quotaReset=Wu()},ct=()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},Ma=()=>({usageQuota:{[H.StaticQuotaName.APPS]:0,[H.StaticQuotaName.ROWS]:0,[H.StaticQuotaName.PLUGINS]:0,[H.StaticQuotaName.USERS]:0,[H.StaticQuotaName.CREATORS]:0,[H.StaticQuotaName.USER_GROUPS]:0,[H.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[ct()]:Rr()}}),fo=()=>{let e={_id:vr(),quotaReset:Wu(),...Ma(),apps:{}};return ka(e),e},Rr=()=>({[H.MonthlyQuotaName.QUERIES]:0,[H.MonthlyQuotaName.AUTOMATIONS]:0,[H.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,[H.MonthlyQuotaName.ACTIONS]:0,triggers:{}}),ka=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 H.MonthlyQuotaName.AUTOMATIONS:return H.BreakdownQuotaName.AUTOMATIONS;case H.MonthlyQuotaName.QUERIES:return(0,Ba.isTableIdOrExternalTableId)(t)?H.BreakdownQuotaName.ROW_QUERIES:(0,Ba.isDatasourceOrDatasourcePlusId)(t)?H.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}};var $u=le.Duration.fromSeconds(60).toMs(),{Writethrough:Ku}=le.cache.writethrough;function MI(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 Fa=()=>le.tenancy.isSelfHostUsingCloud()?new Ku(le.tenancy.getSelfHostCloudDB(),$u):new Ku(le.tenancy.getGlobalDB(),$u);async function mo(e=0){let r=Fa(),a=vr(),n=await r.tryGet(a);n&&n._rev&&await r.remove(a,n._rev).catch(async o=>{if(e<1)return await mo(e+1);throw o})}var Tt=async()=>{let e=Fa(),t=await e.tryGet(vr());if(!t){t=fo();let{rev:r}=await e.put(t);t._rev=r}return ka(t),lo(t),MI(t)},Yu=async(e,t,r)=>yo({name:t,type:r,values:{total:e}}),Hu=async(e,t,r)=>{let a=Fa(),n=await Tt(),o=Object.values(e).reduce((i,p)=>i+p,0);for(let[i,p]of Object.entries(e))n=zu(n,t,r,{total:o,app:p},{appId:i});let s=await a.put(n);return n._rev=s.rev,n},kI=(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},go=(e,t,r,a={},n)=>{let o;try{o=le.db.getProdAppID(a?.appId||le.context.getAppId())}catch{}if(!o||!n.app||!se.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[o]||(e.apps={...e.apps,[o]:Ma()});let s=e.apps[o];switch(r){case se.QuotaUsageType.STATIC:s.usageQuota[t]=n.app;break;case se.QuotaUsageType.MONTHLY:{let i=ct(),p=t,f=s.monthly[i];f||(s.monthly[i]=Rr(),f=s.monthly[i]),f[p]=n.app,se.BREAKDOWN_QUOTA_NAMES.includes(p)&&a?.id&&(f=kI(f,p,a.id,n));break}}return e},Vu=(e,t,r,a)=>{if(!se.APP_QUOTA_NAMES.includes(r))return{};let n;try{n=le.db.getProdAppID(le.context.getAppId())}catch{}if(!n||!e.apps||!e.apps[n])return{app:0};let o=e.apps[n];switch(t){case se.QuotaUsageType.STATIC:if(o.usageQuota?.[r])return{app:o.usageQuota[r]};break;case se.QuotaUsageType.MONTHLY:{let s=ct(),i=r;if(!o.monthly?.[s]?.[i])break;let p=o.monthly[s],f=p[i],m,y=Ga(i,a);return y&&a&&p.breakdown?.[y]&&(m=p.breakdown[y]?.values[a]),{app:f,breakdown:m||0}}}return{app:0}},GI=(e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},FI=(e,t,r,a)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),a&&(r.monthly[t].triggers[e]=a)},zu=(e,t,r,a,n={})=>{if(r===se.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=a.total,GI(t,e,a.triggers);else if(r===se.QuotaUsageType.MONTHLY){t=t;let o=ct();e.monthly[o][t]=a.total,FI(t,o,e,a.triggers)}else throw new Error(`Invalid usage type: ${r}`);return go(e,t,r,n,a)},yo=async e=>{let t=Array.isArray(e)?e:[e],r=Fa(),a=await Tt();for(let o of t)a=zu(a,o.name,o.type,o.values,o.opts);let n=await r.put(a,0);return a._rev=n.rev,a},Ju=async(e,t,r)=>{let a=await Tt(),n=0,o={};switch(e){case se.QuotaUsageType.STATIC:if(a.usageQuota[t]){let s=t;n=a.usageQuota[s],o=Vu(a,e,t,r)}break;case se.QuotaUsageType.MONTHLY:{let s=ct(),i=t;a.monthly[s][i]&&(n=a.monthly[s][i],o=Vu(a,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return se.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 Ee={};w(Ee,{destroy:()=>WI,get:()=>ho,save:()=>jI});var lt=require("@budibase/backend-core"),QI=()=>({_id:lt.StaticDatabases.GLOBAL.docs.licenseInfo}),jI=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 QI();throw t}},WI=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:()=>rS,destroy:()=>aS,fetch:()=>XI,generateUserGroupID:()=>zI,get:()=>ZI,getBulk:()=>eS,getByName:()=>Ao,getGroupUsers:()=>ja,getGroupUsersParams:()=>rp,getUserGroupsParams:()=>tp,save:()=>tS});var q=require("@budibase/backend-core");var Ue=require("@budibase/types"),Ft=require("@budibase/backend-core");async function Xu(){let e=Ft.sql.designDoc.base("type");e.sql.tables={[Ue.AUDIT_LOG_TYPE]:{fields:{appId:Ue.SQLiteType.TEXT,event:Ue.SQLiteType.TEXT,userId:Ue.SQLiteType.TEXT,timestamp:Ue.SQLiteType.TEXT,metadata:Ue.SQLiteType.TEXT,name:Ue.SQLiteType.TEXT,type:Ue.SQLiteType.TEXT,fallback:Ue.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 Qa=require("@budibase/backend-core"),{ViewName:$I,SEPARATOR:KI,DocumentType:VI,createView:YI}=Qa.db,HI=VI.USER+KI;async function Zu(){let e=Qa.tenancy.getGlobalDB(),t=`function(doc) {
|
|
3
|
+
`)}Vm.exports=QL});var Mn=u((zj,Hm)=>{"use strict";function jL(e,t){for(var r=-1,a=e==null?0:e.length;++r<a&&t(e[r],r,e)!==!1;);return e}Hm.exports=jL});var Jm=u((Jj,zm)=>{"use strict";var WL=Mn(),$L=Bo(),KL=1,VL=2,YL=8,HL=16,zL=32,JL=64,XL=128,ZL=256,eC=512,tC=[["ary",XL],["bind",KL],["bindKey",VL],["curry",YL],["curryRight",HL],["flip",eC],["partial",zL],["partialRight",JL],["rearg",ZL]];function rC(e,t){return WL(tC,function(r){var a="_."+r[0];t&r[1]&&!$L(e,a)&&e.push(a)}),e.sort()}zm.exports=rC});var pi=u((Xj,Xm)=>{"use strict";var aC=Km(),nC=Ym(),oC=en(),sC=Jm();function iC(e,t,r){var a=t+"";return oC(e,nC(a,sC(aC(a),r)))}Xm.exports=iC});var ci=u((Zj,tg)=>{"use strict";var uC=jm(),pC=ui(),cC=pi(),lC=1,dC=2,fC=4,mC=8,Zm=32,eg=64;function gC(e,t,r,a,n,o,s,i,p,f){var m=t&mC,y=m?s:void 0,g=m?void 0:s,I=m?o:void 0,O=m?void 0:o;t|=m?Zm:eg,t&=~(m?eg:Zm),t&fC||(t&=~(lC|dC));var _=[e,t,n,I,y,O,g,i,p,f],R=r.apply(void 0,_);return uC(e)&&pC(R,_),R.placeholder=a,cC(R,e,t)}tg.exports=gC});var li=u((eW,rg)=>{"use strict";function yC(e){var t=e;return t.placeholder}rg.exports=yC});var ng=u((tW,ag)=>{"use strict";var hC=tr(),AC=da(),bC=Math.min;function IC(e,t){for(var r=e.length,a=bC(t.length,r),n=hC(e);a--;){var o=t[a];e[a]=AC(o,r)?n[o]:void 0}return e}ag.exports=IC});var kn=u((rW,sg)=>{"use strict";var og="__lodash_placeholder__";function SC(e,t){for(var r=-1,a=e.length,n=0,o=[];++r<a;){var s=e[r];(s===t||s===og)&&(e[r]=og,o[n++]=r)}return o}sg.exports=SC});var di=u((aW,pg)=>{"use strict";var wC=ni(),TC=oi(),EC=Rm(),ig=Ta(),vC=ci(),RC=li(),_C=ng(),xC=kn(),OC=ie(),LC=1,CC=2,PC=8,UC=16,qC=128,DC=512;function ug(e,t,r,a,n,o,s,i,p,f){var m=t&qC,y=t&LC,g=t&CC,I=t&(PC|UC),O=t&DC,_=g?void 0:ig(e);function R(){for(var v=arguments.length,U=Array(v),Pe=v;Pe--;)U[Pe]=arguments[Pe];if(I)var we=RC(R),pt=EC(U,we);if(a&&(U=wC(U,a,n,I)),o&&(U=TC(U,o,s,I)),v-=pt,I&&v<f){var Ft=xC(U,we);return vC(e,t,ug,R.placeholder,r,U,Ft,i,p,f-v)}var Ir=y?r:this,Sr=g?Ir[e]:e;return v=U.length,i?U=_C(U,i):O&&v>1&&U.reverse(),m&&p<v&&(U.length=p),this&&this!==OC&&this instanceof R&&(Sr=_||ig(Sr)),Sr.apply(Ir,U)}return R}pg.exports=ug});var lg=u((nW,cg)=>{"use strict";var NC=Za(),BC=Ta(),MC=di(),kC=ci(),GC=li(),FC=kn(),QC=ie();function jC(e,t,r){var a=BC(e);function n(){for(var o=arguments.length,s=Array(o),i=o,p=GC(n);i--;)s[i]=arguments[i];var f=o<3&&s[0]!==p&&s[o-1]!==p?[]:FC(s,p);if(o-=f.length,o<r)return kC(e,t,MC,n.placeholder,void 0,s,f,void 0,void 0,r-o);var m=this&&this!==QC&&this instanceof n?a:e;return NC(m,this,s)}return n}cg.exports=jC});var fg=u((oW,dg)=>{"use strict";var WC=Za(),$C=Ta(),KC=ie(),VC=1;function YC(e,t,r,a){var n=t&VC,o=$C(e);function s(){for(var i=-1,p=arguments.length,f=-1,m=a.length,y=Array(m+p),g=this&&this!==KC&&this instanceof s?o:e;++f<m;)y[f]=a[f];for(;p--;)y[f++]=arguments[++i];return WC(g,n?r:this,y)}return s}dg.exports=YC});var bg=u((sW,Ag)=>{"use strict";var HC=ni(),zC=oi(),mg=kn(),gg="__lodash_placeholder__",fi=1,JC=2,XC=4,yg=8,Ea=128,hg=256,ZC=Math.min;function eP(e,t){var r=e[1],a=t[1],n=r|a,o=n<(fi|JC|Ea),s=a==Ea&&r==yg||a==Ea&&r==hg&&e[7].length<=t[8]||a==(Ea|hg)&&t[7].length<=t[8]&&r==yg;if(!(o||s))return e;a&fi&&(e[2]=t[2],n|=r&fi?0:XC);var i=t[3];if(i){var p=e[3];e[3]=p?HC(p,i,t[4]):i,e[4]=p?mg(e[3],gg):t[4]}return i=t[5],i&&(p=e[5],e[5]=p?zC(p,i,t[6]):i,e[6]=p?mg(e[5],gg):t[6]),i=t[7],i&&(e[7]=i),a&Ea&&(e[8]=e[8]==null?t[8]:ZC(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=n,e}Ag.exports=eP});var Sg=u((iW,Ig)=>{"use strict";var tP=/\s/;function rP(e){for(var t=e.length;t--&&tP.test(e.charAt(t)););return t}Ig.exports=rP});var Tg=u((uW,wg)=>{"use strict";var aP=Sg(),nP=/^\s+/;function oP(e){return e&&e.slice(0,aP(e)+1).replace(nP,"")}wg.exports=oP});var fr=u((pW,Eg)=>{"use strict";var sP=mt(),iP=Ae(),uP="[object Symbol]";function pP(e){return typeof e=="symbol"||iP(e)&&sP(e)==uP}Eg.exports=pP});var xg=u((cW,_g)=>{"use strict";var cP=Tg(),vg=Re(),lP=fr(),Rg=0/0,dP=/^[-+]0x[0-9a-f]+$/i,fP=/^0b[01]+$/i,mP=/^0o[0-7]+$/i,gP=parseInt;function yP(e){if(typeof e=="number")return e;if(lP(e))return Rg;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=cP(e);var r=fP.test(e);return r||mP.test(e)?gP(e.slice(2),r?2:8):dP.test(e)?Rg:+e}_g.exports=yP});var Cg=u((lW,Lg)=>{"use strict";var hP=xg(),Og=1/0,AP=17976931348623157e292;function bP(e){if(!e)return e===0?e:0;if(e=hP(e),e===Og||e===-Og){var t=e<0?-1:1;return t*AP}return e===e?e:0}Lg.exports=bP});var mi=u((dW,Pg)=>{"use strict";var IP=Cg();function SP(e){var t=IP(e),r=t%1;return t===t?r?t-r:t:0}Pg.exports=SP});var Gn=u((fW,Bg)=>{"use strict";var wP=ai(),TP=wm(),EP=lg(),vP=di(),RP=fg(),_P=si(),xP=bg(),OP=ui(),LP=pi(),Ug=mi(),CP="Expected a function",qg=1,PP=2,gi=8,yi=16,hi=32,Dg=64,Ng=Math.max;function UP(e,t,r,a,n,o,s,i){var p=t&PP;if(!p&&typeof e!="function")throw new TypeError(CP);var f=a?a.length:0;if(f||(t&=~(hi|Dg),a=n=void 0),s=s===void 0?s:Ng(Ug(s),0),i=i===void 0?i:Ug(i),f-=n?n.length:0,t&Dg){var m=a,y=n;a=n=void 0}var g=p?void 0:_P(e),I=[e,t,r,a,n,m,y,o,s,i];if(g&&xP(I,g),e=I[0],t=I[1],r=I[2],a=I[3],n=I[4],i=I[9]=I[9]===void 0?p?0:e.length:Ng(I[9]-f,0),!i&&t&(gi|yi)&&(t&=~(gi|yi)),!t||t==qg)var O=TP(e,t,r);else t==gi||t==yi?O=EP(e,t,i):(t==hi||t==(qg|hi))&&!n.length?O=RP(e,t,r,a):O=vP.apply(void 0,I);var _=g?wP:OP;return LP(_(O,I),e,t)}Bg.exports=UP});var kg=u((mW,Mg)=>{"use strict";var qP=Gn(),DP=128;function NP(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,qP(e,DP,void 0,void 0,void 0,void 0,t)}Mg.exports=NP});var Fg=u((gW,Gg)=>{"use strict";var BP=Yo(),MP=BP(Object.keys,Object);Gg.exports=MP});var Ai=u((yW,Qg)=>{"use strict";var kP=pn(),GP=Fg(),FP=Object.prototype,QP=FP.hasOwnProperty;function jP(e){if(!kP(e))return GP(e);var t=[];for(var r in Object(e))QP.call(e,r)&&r!="constructor"&&t.push(r);return t}Qg.exports=jP});var mr=u((hW,jg)=>{"use strict";var WP=es(),$P=Ai(),KP=Xt();function VP(e){return KP(e)?WP(e):$P(e)}jg.exports=VP});var bi=u((AW,Wg)=>{"use strict";var YP=nr(),HP=mr();function zP(e,t){return e&&YP(t,HP(t),e)}Wg.exports=zP});var Kg=u((bW,$g)=>{"use strict";var JP=nr(),XP=or();function ZP(e,t){return e&&JP(t,XP(t),e)}$g.exports=ZP});var Yg=u((IW,Vg)=>{"use strict";function eU(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}Vg.exports=eU});var Ii=u((SW,Hg)=>{"use strict";function tU(){return[]}Hg.exports=tU});var Fn=u((wW,Jg)=>{"use strict";var rU=Yg(),aU=Ii(),nU=Object.prototype,oU=nU.propertyIsEnumerable,zg=Object.getOwnPropertySymbols,sU=zg?function(e){return e==null?[]:(e=Object(e),rU(zg(e),function(t){return oU.call(e,t)}))}:aU;Jg.exports=sU});var Zg=u((TW,Xg)=>{"use strict";var iU=nr(),uU=Fn();function pU(e,t){return iU(e,uU(e),t)}Xg.exports=pU});var Si=u((EW,ey)=>{"use strict";var cU=Xa(),lU=un(),dU=Fn(),fU=Ii(),mU=Object.getOwnPropertySymbols,gU=mU?function(e){for(var t=[];e;)cU(t,dU(e)),e=lU(e);return t}:fU;ey.exports=gU});var ry=u((vW,ty)=>{"use strict";var yU=nr(),hU=Si();function AU(e,t){return yU(e,hU(e),t)}ty.exports=AU});var wi=u((RW,ay)=>{"use strict";var bU=Xa(),IU=ne();function SU(e,t,r){var a=t(e);return IU(e)?a:bU(a,r(e))}ay.exports=SU});var Ti=u((_W,ny)=>{"use strict";var wU=wi(),TU=Fn(),EU=mr();function vU(e){return wU(e,EU,TU)}ny.exports=vU});var sy=u((xW,oy)=>{"use strict";var RU=wi(),_U=Si(),xU=or();function OU(e){return RU(e,xU,_U)}oy.exports=OU});var uy=u((OW,iy)=>{"use strict";var LU=gt(),CU=ie(),PU=LU(CU,"DataView");iy.exports=PU});var cy=u((LW,py)=>{"use strict";var UU=gt(),qU=ie(),DU=UU(qU,"Promise");py.exports=DU});var yr=u((CW,hy)=>{"use strict";var Ei=uy(),vi=tn(),Ri=cy(),_i=ko(),xi=ti(),yy=mt(),gr=Po(),ly="[object Map]",NU="[object Object]",dy="[object Promise]",fy="[object Set]",my="[object WeakMap]",gy="[object DataView]",BU=gr(Ei),MU=gr(vi),kU=gr(Ri),GU=gr(_i),FU=gr(xi),Nt=yy;(Ei&&Nt(new Ei(new ArrayBuffer(1)))!=gy||vi&&Nt(new vi)!=ly||Ri&&Nt(Ri.resolve())!=dy||_i&&Nt(new _i)!=fy||xi&&Nt(new xi)!=my)&&(Nt=function(e){var t=yy(e),r=t==NU?e.constructor:void 0,a=r?gr(r):"";if(a)switch(a){case BU:return gy;case MU:return ly;case kU:return dy;case GU:return fy;case FU:return my}return t});hy.exports=Nt});var by=u((PW,Ay)=>{"use strict";var QU=Object.prototype,jU=QU.hasOwnProperty;function WU(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&jU.call(e,"index")&&(r.index=e.index,r.input=e.input),r}Ay.exports=WU});var Sy=u((UW,Iy)=>{"use strict";var $U=sn();function KU(e,t){var r=t?$U(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}Iy.exports=KU});var Ty=u((qW,wy)=>{"use strict";var VU=/\w*$/;function YU(e){var t=new e.constructor(e.source,VU.exec(e));return t.lastIndex=e.lastIndex,t}wy.exports=YU});var xy=u((DW,_y)=>{"use strict";var Ey=_t(),vy=Ey?Ey.prototype:void 0,Ry=vy?vy.valueOf:void 0;function HU(e){return Ry?Object(Ry.call(e)):{}}_y.exports=HU});var Ly=u((NW,Oy)=>{"use strict";var zU=sn(),JU=Sy(),XU=Ty(),ZU=xy(),eq=Vo(),tq="[object Boolean]",rq="[object Date]",aq="[object Map]",nq="[object Number]",oq="[object RegExp]",sq="[object Set]",iq="[object String]",uq="[object Symbol]",pq="[object ArrayBuffer]",cq="[object DataView]",lq="[object Float32Array]",dq="[object Float64Array]",fq="[object Int8Array]",mq="[object Int16Array]",gq="[object Int32Array]",yq="[object Uint8Array]",hq="[object Uint8ClampedArray]",Aq="[object Uint16Array]",bq="[object Uint32Array]";function Iq(e,t,r){var a=e.constructor;switch(t){case pq:return zU(e);case tq:case rq:return new a(+e);case cq:return JU(e,r);case lq:case dq:case fq:case mq:case gq:case yq:case hq:case Aq:case bq:return eq(e,r);case aq:return new a;case nq:case iq:return new a(e);case oq:return XU(e);case sq:return new a;case uq:return ZU(e)}}Oy.exports=Iq});var Py=u((BW,Cy)=>{"use strict";var Sq=yr(),wq=Ae(),Tq="[object Map]";function Eq(e){return wq(e)&&Sq(e)==Tq}Cy.exports=Eq});var Ny=u((MW,Dy)=>{"use strict";var vq=Py(),Rq=cn(),Uy=ln(),qy=Uy&&Uy.isMap,_q=qy?Rq(qy):vq;Dy.exports=_q});var My=u((kW,By)=>{"use strict";var xq=yr(),Oq=Ae(),Lq="[object Set]";function Cq(e){return Oq(e)&&xq(e)==Lq}By.exports=Cq});var Qy=u((GW,Fy)=>{"use strict";var Pq=My(),Uq=cn(),ky=ln(),Gy=ky&&ky.isSet,qq=Gy?Uq(Gy):Pq;Fy.exports=qq});var Oi=u((FW,Ky)=>{"use strict";var Dq=na(),Nq=Mn(),Bq=Zo(),Mq=bi(),kq=Kg(),Gq=$o(),Fq=tr(),Qq=Zg(),jq=ry(),Wq=Ti(),$q=sy(),Kq=yr(),Vq=by(),Yq=Ly(),Hq=Ho(),zq=ne(),Jq=pa(),Xq=Ny(),Zq=Re(),eD=Qy(),tD=mr(),rD=or(),aD=1,nD=2,oD=4,jy="[object Arguments]",sD="[object Array]",iD="[object Boolean]",uD="[object Date]",pD="[object Error]",Wy="[object Function]",cD="[object GeneratorFunction]",lD="[object Map]",dD="[object Number]",$y="[object Object]",fD="[object RegExp]",mD="[object Set]",gD="[object String]",yD="[object Symbol]",hD="[object WeakMap]",AD="[object ArrayBuffer]",bD="[object DataView]",ID="[object Float32Array]",SD="[object Float64Array]",wD="[object Int8Array]",TD="[object Int16Array]",ED="[object Int32Array]",vD="[object Uint8Array]",RD="[object Uint8ClampedArray]",_D="[object Uint16Array]",xD="[object Uint32Array]",N={};N[jy]=N[sD]=N[AD]=N[bD]=N[iD]=N[uD]=N[ID]=N[SD]=N[wD]=N[TD]=N[ED]=N[lD]=N[dD]=N[$y]=N[fD]=N[mD]=N[gD]=N[yD]=N[vD]=N[RD]=N[_D]=N[xD]=!0;N[pD]=N[Wy]=N[hD]=!1;function Qn(e,t,r,a,n,o){var s,i=t&aD,p=t&nD,f=t&oD;if(r&&(s=n?r(e,a,n,o):r(e)),s!==void 0)return s;if(!Zq(e))return e;var m=zq(e);if(m){if(s=Vq(e),!i)return Fq(e,s)}else{var y=Kq(e),g=y==Wy||y==cD;if(Jq(e))return Gq(e,i);if(y==$y||y==jy||g&&!n){if(s=p||g?{}:Hq(e),!i)return p?jq(e,kq(s,e)):Qq(e,Mq(s,e))}else{if(!N[y])return n?e:{};s=Yq(e,y,i)}}o||(o=new Dq);var I=o.get(e);if(I)return I;o.set(e,s),eD(e)?e.forEach(function(R){s.add(Qn(R,t,r,R,e,o))}):Xq(e)&&e.forEach(function(R,v){s.set(v,Qn(R,t,r,v,e,o))});var O=f?p?$q:Wq:p?rD:tD,_=m?void 0:O(e);return Nq(_||e,function(R,v){_&&(v=R,R=e[v]),Bq(s,v,Qn(R,t,r,v,e,o))}),s}Ky.exports=Qn});var Yy=u((QW,Vy)=>{"use strict";var OD=Oi(),LD=4;function CD(e){return OD(e,LD)}Vy.exports=CD});var zy=u((jW,Hy)=>{"use strict";var PD=Gn(),UD=8;function Li(e,t,r){t=r?void 0:t;var a=PD(e,UD,void 0,void 0,void 0,void 0,void 0,t);return a.placeholder=Li.placeholder,a}Li.placeholder={};Hy.exports=Li});var Xy=u((WW,Jy)=>{"use strict";var qD=mt(),DD=Ae(),ND=zo(),BD="[object DOMException]",MD="[object Error]";function kD(e){if(!DD(e))return!1;var t=qD(e);return t==MD||t==BD||typeof e.message=="string"&&typeof e.name=="string"&&!ND(e)}Jy.exports=kD});var eh=u(($W,Zy)=>{"use strict";var GD=yr(),FD=Ae(),QD="[object WeakMap]";function jD(e){return FD(e)&&GD(e)==QD}Zy.exports=jD});var rh=u((KW,th)=>{"use strict";function WD(e,t){for(var r=-1,a=e==null?0:e.length;++r<a;)if(t(e[r],r,e))return!0;return!1}th.exports=WD});var Ci=u((VW,ah)=>{"use strict";var $D=No(),KD=rh(),VD=Mo(),YD=1,HD=2;function zD(e,t,r,a,n,o){var s=r&YD,i=e.length,p=t.length;if(i!=p&&!(s&&p>i))return!1;var f=o.get(e),m=o.get(t);if(f&&m)return f==t&&m==e;var y=-1,g=!0,I=r&HD?new $D:void 0;for(o.set(e,t),o.set(t,e);++y<i;){var O=e[y],_=t[y];if(a)var R=s?a(_,O,y,t,e,o):a(O,_,y,e,t,o);if(R!==void 0){if(R)continue;g=!1;break}if(I){if(!KD(t,function(v,U){if(!VD(I,U)&&(O===v||n(O,v,r,a,o)))return I.push(U)})){g=!1;break}}else if(!(O===_||n(O,_,r,a,o))){g=!1;break}}return o.delete(e),o.delete(t),g}ah.exports=zD});var oh=u((YW,nh)=>{"use strict";function JD(e){var t=-1,r=Array(e.size);return e.forEach(function(a,n){r[++t]=[n,a]}),r}nh.exports=JD});var ch=u((HW,ph)=>{"use strict";var sh=_t(),ih=Ko(),XD=Ht(),ZD=Ci(),eN=oh(),tN=nn(),rN=1,aN=2,nN="[object Boolean]",oN="[object Date]",sN="[object Error]",iN="[object Map]",uN="[object Number]",pN="[object RegExp]",cN="[object Set]",lN="[object String]",dN="[object Symbol]",fN="[object ArrayBuffer]",mN="[object DataView]",uh=sh?sh.prototype:void 0,Pi=uh?uh.valueOf:void 0;function gN(e,t,r,a,n,o,s){switch(r){case mN:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case fN:return!(e.byteLength!=t.byteLength||!o(new ih(e),new ih(t)));case nN:case oN:case uN:return XD(+e,+t);case sN:return e.name==t.name&&e.message==t.message;case pN:case lN:return e==t+"";case iN:var i=eN;case cN:var p=a&rN;if(i||(i=tN),e.size!=t.size&&!p)return!1;var f=s.get(e);if(f)return f==t;a|=aN,s.set(e,t);var m=ZD(i(e),i(t),a,n,o,s);return s.delete(e),m;case dN:if(Pi)return Pi.call(e)==Pi.call(t)}return!1}ph.exports=gN});var fh=u((zW,dh)=>{"use strict";var lh=Ti(),yN=1,hN=Object.prototype,AN=hN.hasOwnProperty;function bN(e,t,r,a,n,o){var s=r&yN,i=lh(e),p=i.length,f=lh(t),m=f.length;if(p!=m&&!s)return!1;for(var y=p;y--;){var g=i[y];if(!(s?g in t:AN.call(t,g)))return!1}var I=o.get(e),O=o.get(t);if(I&&O)return I==t&&O==e;var _=!0;o.set(e,t),o.set(t,e);for(var R=s;++y<p;){g=i[y];var v=e[g],U=t[g];if(a)var Pe=s?a(U,v,g,t,e,o):a(v,U,g,e,t,o);if(!(Pe===void 0?v===U||n(v,U,r,a,o):Pe)){_=!1;break}R||(R=g=="constructor")}if(_&&!R){var we=e.constructor,pt=t.constructor;we!=pt&&"constructor"in e&&"constructor"in t&&!(typeof we=="function"&&we instanceof we&&typeof pt=="function"&&pt instanceof pt)&&(_=!1)}return o.delete(e),o.delete(t),_}dh.exports=bN});var Sh=u((JW,Ih)=>{"use strict";var Ui=na(),IN=Ci(),SN=ch(),wN=fh(),mh=yr(),gh=ne(),yh=pa(),TN=dn(),EN=1,hh="[object Arguments]",Ah="[object Array]",jn="[object Object]",vN=Object.prototype,bh=vN.hasOwnProperty;function RN(e,t,r,a,n,o){var s=gh(e),i=gh(t),p=s?Ah:mh(e),f=i?Ah:mh(t);p=p==hh?jn:p,f=f==hh?jn:f;var m=p==jn,y=f==jn,g=p==f;if(g&&yh(e)){if(!yh(t))return!1;s=!0,m=!1}if(g&&!m)return o||(o=new Ui),s||TN(e)?IN(e,t,r,a,n,o):SN(e,t,p,r,a,n,o);if(!(r&EN)){var I=m&&bh.call(e,"__wrapped__"),O=y&&bh.call(t,"__wrapped__");if(I||O){var _=I?e.value():e,R=O?t.value():t;return o||(o=new Ui),n(_,R,r,a,o)}}return g?(o||(o=new Ui),wN(e,t,r,a,n,o)):!1}Ih.exports=RN});var qi=u((XW,Eh)=>{"use strict";var _N=Sh(),wh=Ae();function Th(e,t,r,a,n){return e===t?!0:e==null||t==null||!wh(e)&&!wh(t)?e!==e&&t!==t:_N(e,t,r,a,Th,n)}Eh.exports=Th});var Rh=u((ZW,vh)=>{"use strict";var xN=na(),ON=qi(),LN=1,CN=2;function PN(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],f=e[p],m=i[1];if(s&&i[2]){if(f===void 0&&!(p in e))return!1}else{var y=new xN;if(a)var g=a(f,m,p,e,t,y);if(!(g===void 0?ON(m,f,LN|CN,a,y):g))return!1}}return!0}vh.exports=PN});var Di=u((e$,_h)=>{"use strict";var UN=Re();function qN(e){return e===e&&!UN(e)}_h.exports=qN});var Oh=u((t$,xh)=>{"use strict";var DN=Di(),NN=mr();function BN(e){for(var t=NN(e),r=t.length;r--;){var a=t[r],n=e[a];t[r]=[a,n,DN(n)]}return t}xh.exports=BN});var Ni=u((r$,Lh)=>{"use strict";function MN(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}Lh.exports=MN});var Ph=u((a$,Ch)=>{"use strict";var kN=Rh(),GN=Oh(),FN=Ni();function QN(e){var t=GN(e);return t.length==1&&t[0][2]?FN(t[0][0],t[0][1]):function(r){return r===e||kN(r,e,t)}}Ch.exports=QN});var Wn=u((n$,Uh)=>{"use strict";var jN=ne(),WN=fr(),$N=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,KN=/^\w*$/;function VN(e,t){if(jN(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||WN(e)?!0:KN.test(e)||!$N.test(e)||t!=null&&e in Object(t)}Uh.exports=VN});var Nh=u((o$,Dh)=>{"use strict";var qh=rn(),YN="Expected a function";function Bi(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(YN);var r=function(){var a=arguments,n=t?t.apply(this,a):a[0],o=r.cache;if(o.has(n))return o.get(n);var s=e.apply(this,a);return r.cache=o.set(n,s)||o,s};return r.cache=new(Bi.Cache||qh),r}Bi.Cache=qh;Dh.exports=Bi});var Mh=u((s$,Bh)=>{"use strict";var HN=Nh(),zN=500;function JN(e){var t=HN(e,function(a){return r.size===zN&&r.clear(),a}),r=t.cache;return t}Bh.exports=JN});var Mi=u((i$,kh)=>{"use strict";var XN=Mh(),ZN=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,eB=/\\(\\)?/g,tB=XN(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(ZN,function(r,a,n,o){t.push(n?o.replace(eB,"$1"):a||r)}),t});kh.exports=tB});var ki=u((u$,Gh)=>{"use strict";function rB(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}Gh.exports=rB});var Kh=u((p$,$h)=>{"use strict";var Fh=_t(),aB=ki(),nB=ne(),oB=fr(),sB=1/0,Qh=Fh?Fh.prototype:void 0,jh=Qh?Qh.toString:void 0;function Wh(e){if(typeof e=="string")return e;if(nB(e))return aB(e,Wh)+"";if(oB(e))return jh?jh.call(e):"";var t=e+"";return t=="0"&&1/e==-sB?"-0":t}$h.exports=Wh});var Gi=u((c$,Vh)=>{"use strict";var iB=Kh();function uB(e){return e==null?"":iB(e)}Vh.exports=uB});var Fi=u((l$,Yh)=>{"use strict";var pB=ne(),cB=Wn(),lB=Mi(),dB=Gi();function fB(e,t){return pB(e)?e:cB(e,t)?[e]:lB(dB(e))}Yh.exports=fB});var hr=u((d$,Hh)=>{"use strict";var mB=fr(),gB=1/0;function yB(e){if(typeof e=="string"||mB(e))return e;var t=e+"";return t=="0"&&1/e==-gB?"-0":t}Hh.exports=yB});var Qi=u((f$,zh)=>{"use strict";var hB=Fi(),AB=hr();function bB(e,t){t=hB(t,e);for(var r=0,a=t.length;e!=null&&r<a;)e=e[AB(t[r++])];return r&&r==a?e:void 0}zh.exports=bB});var Xh=u((m$,Jh)=>{"use strict";var IB=Qi();function SB(e,t,r){var a=e==null?void 0:IB(e,t);return a===void 0?r:a}Jh.exports=SB});var eA=u((g$,Zh)=>{"use strict";function wB(e,t){return e!=null&&t in Object(e)}Zh.exports=wB});var rA=u((y$,tA)=>{"use strict";var TB=Fi(),EB=Jr(),vB=ne(),RB=da(),_B=on(),xB=hr();function OB(e,t,r){t=TB(t,e);for(var a=-1,n=t.length,o=!1;++a<n;){var s=xB(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&&_B(n)&&RB(s,n)&&(vB(e)||EB(e)))}tA.exports=OB});var nA=u((h$,aA)=>{"use strict";var LB=eA(),CB=rA();function PB(e,t){return e!=null&&CB(e,t,LB)}aA.exports=PB});var sA=u((A$,oA)=>{"use strict";var UB=qi(),qB=Xh(),DB=nA(),NB=Wn(),BB=Di(),MB=Ni(),kB=hr(),GB=1,FB=2;function QB(e,t){return NB(e)&&BB(t)?MB(kB(e),t):function(r){var a=qB(r,e);return a===void 0&&a===t?DB(r,e):UB(t,a,GB|FB)}}oA.exports=QB});var uA=u((b$,iA)=>{"use strict";function jB(e){return function(t){return t?.[e]}}iA.exports=jB});var cA=u((I$,pA)=>{"use strict";var WB=Qi();function $B(e){return function(t){return WB(t,e)}}pA.exports=$B});var dA=u((S$,lA)=>{"use strict";var KB=uA(),VB=cA(),YB=Wn(),HB=hr();function zB(e){return YB(e)?KB(HB(e)):VB(e)}lA.exports=zB});var ji=u((w$,fA)=>{"use strict";var JB=Ph(),XB=sA(),ZB=Xr(),eM=ne(),tM=dA();function rM(e){return typeof e=="function"?e:e==null?ZB:typeof e=="object"?eM(e)?XB(e[0],e[1]):JB(e):tM(e)}fA.exports=rM});var gA=u((T$,mA)=>{"use strict";var aM=Oi(),nM=ji(),oM=1;function sM(e){return nM(typeof e=="function"?e:aM(e,oM))}mA.exports=sM});var hA=u((E$,yA)=>{"use strict";var iM=Oo();function uM(e){var t=e==null?0:e.length;return t?iM(e,1):[]}yA.exports=uM});var bA=u((v$,AA)=>{"use strict";var pM=hA(),cM=Lo(),lM=en();function dM(e){return lM(cM(e,void 0,pM),e+"")}AA.exports=dM});var SA=u((R$,IA)=>{"use strict";var fM=Gn(),mM=bA(),gM=256,yM=mM(function(e,t){return fM(e,gM,void 0,void 0,void 0,t)});IA.exports=yM});var TA=u((_$,wA)=>{"use strict";var hM=ki(),AM=tr(),bM=ne(),IM=fr(),SM=Mi(),wM=hr(),TM=Gi();function EM(e){return bM(e)?hM(e,wM):IM(e)?[e]:AM(SM(TM(e)))}wA.exports=EM});var vA=u((x$,EA)=>{"use strict";EA.exports={ary:kg(),assign:bi(),clone:Yy(),curry:zy(),forEach:Mn(),isArray:ne(),isError:Xy(),isFunction:Zr(),isWeakMap:eh(),iteratee:gA(),keys:Ai(),rearg:SA(),toInteger:mi(),toPath:TA()}});var _A=u((O$,RA)=>{"use strict";var vM=mm(),RM=vA();function _M(e,t,r){return vM(RM,e,t,r)}RA.exports=_M});var Wi=u((L$,OA)=>{"use strict";var xM=_A(),xA=xM("merge",ts());xA.placeholder=Js();OA.exports=xA});var Lb=u((wK,Ob)=>{"use strict";function YM(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}Ob.exports=YM});var Pb=u((TK,Cb)=>{"use strict";var HM=Wo(),zM=mr();function JM(e,t){return e&&HM(e,t,zM)}Cb.exports=JM});var qb=u((EK,Ub)=>{"use strict";var XM=Xt();function ZM(e,t){return function(r,a){if(r==null)return r;if(!XM(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}}Ub.exports=ZM});var Nb=u((vK,Db)=>{"use strict";var ek=Pb(),tk=qb(),rk=tk(ek);Db.exports=rk});var Mb=u((RK,Bb)=>{"use strict";var ak=Nb();function nk(e,t,r,a){return ak(e,function(n,o,s){t(a,n,r(n),s)}),a}Bb.exports=nk});var Gb=u((_K,kb)=>{"use strict";var ok=Lb(),sk=Mb(),ik=ji(),uk=ne();function pk(e,t){return function(r,a){var n=uk(r)?ok:sk,o=t?t():{};return n(r,e,ik(a,2),o)}}kb.exports=pk});var Qb=u((xK,Fb)=>{"use strict";var ck=oa(),lk=Gb(),dk=Object.prototype,fk=dk.hasOwnProperty,mk=lk(function(e,t,r){fk.call(e,r)?e[r].push(t):ck(e,r,[t])});Fb.exports=mk});var Mk={};w(Mk,{Method:()=>so,ai:()=>Pu,api:()=>su,auditLogs:()=>At,automations:()=>_n,backups:()=>xe,branding:()=>An,constants:()=>$r,environmentVariables:()=>ze,features:()=>Ne,groups:()=>j,init:()=>um,licensing:()=>$e,logger:()=>Bt,mappers:()=>Y,middleware:()=>Ji,plugins:()=>xn,publicApi:()=>Cn,quotas:()=>Ye,scimGroups:()=>Ar,scimUsers:()=>ge,sdk:()=>Ki,users:()=>nt,utils:()=>Vt});module.exports=qI(Mk);var so=(o=>(o.POST="POST",o.GET="GET",o.PATCH="PATCH",o.DELETE="DELETE",o.PUT="PUT",o))(so||{});var Ki={};w(Ki,{ai:()=>As,auditLogs:()=>At,automations:()=>_n,backups:()=>xe,branding:()=>An,environmentVariables:()=>ze,features:()=>Ne,groups:()=>j,init:()=>um,licensing:()=>$e,logger:()=>Bt,plugins:()=>xn,publicApi:()=>Cn,quotas:()=>Ye,scimGroups:()=>Ar,scimUsers:()=>ge,users:()=>nt,utils:()=>Vt});var An={};w(An,{getBrandingConfig:()=>Ex});var Ne={};w(Ne,{checkBackups:()=>de,checkFeature:()=>yn,checkFeatures:()=>ds,checkSCIM:()=>ys,isAppBuildersEnabled:()=>Ct,isAuditLogsEnabled:()=>hn,isBackupsEnabled:()=>fs,isBrandingEnabled:()=>ms,isEnforceableSSO:()=>wf,isExpandedPublicApiEnabled:()=>rt,isPWAEnabled:()=>bx,isSSOEnforced:()=>Ix,isSyncAutomationsEnabled:()=>hx,isTriggerAutomationRunEnabled:()=>Ax,isUserGroupsEnabled:()=>gs,isViewPermissionEnabled:()=>Sx,isViewReadonlyColumnsEnabled:()=>wx});var ue=require("@budibase/types"),tt=require("@budibase/backend-core");var $e={};w($e,{cache:()=>qe,client:()=>ft,features:()=>za,getFreeLicense:()=>ps,getLicense:()=>is,getLicenseFromKey:()=>us,keys:()=>ls,offline:()=>fn,quotas:()=>Ja});var qe={};w(qe,{getCachedLicense:()=>If,invalidate:()=>Sf,refresh:()=>xt});var Na=require("@budibase/backend-core"),Tr,DI=async()=>{Tr=await Na.RedisClient.init(Na.redis.utils.Databases.LICENSES)},NI=async()=>{Tr&&await Tr.finish()};process.on("exit",async()=>{await NI()});var io=async()=>(Tr||await DI(),Tr);var ft={};w(ft,{activateLicenseKey:()=>Eo,getLicense:()=>$t,getLicenseFromKey:()=>To,triggerQuota:()=>SS});var Fu=P(require("node-fetch"));var Qu=require("@budibase/backend-core"),uo=require("dd-trace"),ju=require("dd-trace/ext/formats"),po=class{constructor(t){this.apiCall=t=>async(r="",a={})=>await uo.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";Qu.logging.correlation.setHeader(o),uo.tracer.inject(n,ju.HTTP_HEADERS,o);let i={method:t,body:s?JSON.stringify(a.body):a.body,headers:o,credentials:"include"};return(0,Fu.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}},co=po;var Va=require("@budibase/types"),C=require("@budibase/backend-core");var Qe={};w(Qe,{bustCache:()=>mo,getCurrentUsageValues:()=>Ju,getQuotaUsage:()=>Tt,setAllUsage:()=>yo,setAppUsageValue:()=>go,setUsage:()=>Yu,setUsagePerApp:()=>Hu,utils:()=>_r});var se=require("@budibase/types"),le=require("@budibase/backend-core");var _r={};w(_r,{generateBaseQuotaUsage:()=>Ma,generateNewMonthlyQuotas:()=>Rr,generateNewQuotaUsage:()=>fo,getBreakdownName:()=>Ga,getCurrentMonthString:()=>ct,getQuotaDocId:()=>vr,setCurrentMonth:()=>ka,setQuotaReset:()=>lo});var H=require("@budibase/types"),Er=require("@budibase/backend-core"),Ba=require("@budibase/shared-core"),vr=()=>Er.context.isSelfHostUsingCloud()?`quota_usage_${Er.context.getTenantId()}`:Er.db.StaticDatabases.GLOBAL.docs.usageQuota,Wu=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},lo=e=>{e.quotaReset=Wu()},ct=()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},Ma=()=>({usageQuota:{[H.StaticQuotaName.APPS]:0,[H.StaticQuotaName.ROWS]:0,[H.StaticQuotaName.PLUGINS]:0,[H.StaticQuotaName.USERS]:0,[H.StaticQuotaName.CREATORS]:0,[H.StaticQuotaName.USER_GROUPS]:0,[H.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[ct()]:Rr()}}),fo=()=>{let e={_id:vr(),quotaReset:Wu(),...Ma(),apps:{}};return ka(e),e},Rr=()=>({[H.MonthlyQuotaName.QUERIES]:0,[H.MonthlyQuotaName.AUTOMATIONS]:0,[H.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,[H.MonthlyQuotaName.ACTIONS]:0,triggers:{}}),ka=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 H.MonthlyQuotaName.AUTOMATIONS:return H.BreakdownQuotaName.AUTOMATIONS;case H.MonthlyQuotaName.QUERIES:return(0,Ba.isTableIdOrExternalTableId)(t)?H.BreakdownQuotaName.ROW_QUERIES:(0,Ba.isDatasourceOrDatasourcePlusId)(t)?H.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}};var $u=le.Duration.fromSeconds(60).toMs(),{Writethrough:Ku}=le.cache.writethrough;function MI(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 Fa=()=>le.tenancy.isSelfHostUsingCloud()?new Ku(le.tenancy.getSelfHostCloudDB(),$u):new Ku(le.tenancy.getGlobalDB(),$u);async function mo(e=0){let r=Fa(),a=vr(),n=await r.tryGet(a);n&&n._rev&&await r.remove(a,n._rev).catch(async o=>{if(e<1)return await mo(e+1);throw o})}var Tt=async()=>{let e=Fa(),t=await e.tryGet(vr());if(!t){t=fo();let{rev:r}=await e.put(t);t._rev=r}return ka(t),lo(t),MI(t)},Yu=async(e,t,r)=>yo({name:t,type:r,values:{total:e}}),Hu=async(e,t,r)=>{let a=Fa(),n=await Tt(),o=Object.values(e).reduce((i,p)=>i+p,0);for(let[i,p]of Object.entries(e))n=zu(n,t,r,{total:o,app:p},{appId:i});let s=await a.put(n);return n._rev=s.rev,n},kI=(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},go=(e,t,r,a={},n)=>{let o;try{o=le.db.getProdAppID(a?.appId||le.context.getAppId())}catch{}if(!o||!n.app||!se.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[o]||(e.apps={...e.apps,[o]:Ma()});let s=e.apps[o];switch(r){case se.QuotaUsageType.STATIC:s.usageQuota[t]=n.app;break;case se.QuotaUsageType.MONTHLY:{let i=ct(),p=t,f=s.monthly[i];f||(s.monthly[i]=Rr(),f=s.monthly[i]),f[p]=n.app,se.BREAKDOWN_QUOTA_NAMES.includes(p)&&a?.id&&(f=kI(f,p,a.id,n));break}}return e},Vu=(e,t,r,a)=>{if(!se.APP_QUOTA_NAMES.includes(r))return{};let n;try{n=le.db.getProdAppID(le.context.getAppId())}catch{}if(!n||!e.apps||!e.apps[n])return{app:0};let o=e.apps[n];switch(t){case se.QuotaUsageType.STATIC:if(o.usageQuota?.[r])return{app:o.usageQuota[r]};break;case se.QuotaUsageType.MONTHLY:{let s=ct(),i=r;if(!o.monthly?.[s]?.[i])break;let p=o.monthly[s],f=p[i],m,y=Ga(i,a);return y&&a&&p.breakdown?.[y]&&(m=p.breakdown[y]?.values[a]),{app:f,breakdown:m||0}}}return{app:0}},GI=(e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},FI=(e,t,r,a)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),a&&(r.monthly[t].triggers[e]=a)},zu=(e,t,r,a,n={})=>{if(r===se.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=a.total,GI(t,e,a.triggers);else if(r===se.QuotaUsageType.MONTHLY){t=t;let o=ct();e.monthly[o][t]=a.total,FI(t,o,e,a.triggers)}else throw new Error(`Invalid usage type: ${r}`);return go(e,t,r,n,a)},yo=async e=>{let t=Array.isArray(e)?e:[e],r=Fa(),a=await Tt();for(let o of t)a=zu(a,o.name,o.type,o.values,o.opts);let n=await r.put(a,0);return a._rev=n.rev,a},Ju=async(e,t,r)=>{let a=await Tt(),n=0,o={};switch(e){case se.QuotaUsageType.STATIC:if(a.usageQuota[t]){let s=t;n=a.usageQuota[s],o=Vu(a,e,t,r)}break;case se.QuotaUsageType.MONTHLY:{let s=ct(),i=t;a.monthly[s][i]&&(n=a.monthly[s][i],o=Vu(a,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return se.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 Ee={};w(Ee,{destroy:()=>WI,get:()=>ho,save:()=>jI});var lt=require("@budibase/backend-core"),QI=()=>({_id:lt.StaticDatabases.GLOBAL.docs.licenseInfo}),jI=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 QI();throw t}},WI=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:()=>rS,destroy:()=>aS,fetch:()=>XI,generateUserGroupID:()=>zI,get:()=>ZI,getBulk:()=>eS,getByName:()=>Ao,getGroupUsers:()=>ja,getGroupUsersParams:()=>rp,getUserGroupsParams:()=>tp,save:()=>tS});var q=require("@budibase/backend-core");var Ue=require("@budibase/types"),Qt=require("@budibase/backend-core");async function Xu(){let e=Qt.sql.designDoc.base("type");e.sql.tables={[Ue.AUDIT_LOG_TYPE]:{fields:{appId:Ue.SQLiteType.TEXT,event:Ue.SQLiteType.TEXT,userId:Ue.SQLiteType.TEXT,timestamp:Ue.SQLiteType.TEXT,metadata:Ue.SQLiteType.TEXT,name:Ue.SQLiteType.TEXT,type:Ue.SQLiteType.TEXT,fallback:Ue.SQLiteType.TEXT}}};let t=Qt.context.getAuditLogsDB(),r;try{r=await t.get(Qt.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(a){if(a.status===404)r=e;else throw a}await t.put(r)}var Qa=require("@budibase/backend-core"),{ViewName:$I,SEPARATOR:KI,DocumentType:VI,createView:YI}=Qa.db,HI=VI.USER+KI;async function Zu(){let e=Qa.tenancy.getGlobalDB(),t=`function(doc) {
|
|
4
4
|
if (doc._id.startsWith("${HI}") && 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 YI(e,t,$I.USER_BY_GROUP)}var ep=`${q.DocumentType.GROUP}${q.SEPARATOR}`,xr=async()=>(await q.db.getAllApps({dev:!0,efficient:!0,idsOnly:!0})).map(t=>q.db.getProdAppID(t));function tp(e,t={}){e||(e="");let r=e?.startsWith(q.DocumentType.GROUP)?"":ep;return{...t,startkey:`${r}${e}`,endkey:`${r}${e}${q.UNICODE_MAX}`}}function rp(e,t={}){e||(e="");let{emailSearch:r,bookmark:a,...n}=t;return r?{...n,startkey:`e_${e}${a||r}`,endkey:`e_${e}${r}${q.UNICODE_MAX}`}:{...t,startkey:`g_${e}`,endkey:`g_${e}${q.UNICODE_MAX}`,startkey_docid:a}}function zI(){return`${ep}${q.utils.newid()}`}async function ja(e,t){let r=q.tenancy.getGlobalDB();return(await q.db.queryView(q.db.ViewName.USER_BY_GROUP,rp(e,t),r,Zu,{arrayResponse:!0})).map(n=>({_id:n.userId,email:n.email}))||[]}async function Or(e,t){return e.users=await ja(e._id),e.roles&&(e.roles=Object.fromEntries(Object.entries(e.roles).filter(([r])=>t.includes(r)))),e}async function JI(e){let r=(await Or(e,await xr())).users?.map(o=>o._id),a=await q.users.bulkGetGlobalUsersById(r),n=[];for(let o of a){if(!o.userGroups)continue;let s=o.userGroups.length;o.userGroups=o.userGroups.filter(i=>i!==e._id),o.userGroups.length!==s&&n.push(o)}n.length&&await q.users.bulkUpdateGlobalUsers(n)}async function ap(){return(await q.tenancy.getGlobalDB().allDocs(tp(null,{include_docs:!0}))).rows.map(t=>t.doc)}async function XI(){let[e,t]=await Promise.all([ap(),xr()]),r=[];for(let a of e)r.push(Or(a,t));return await Promise.all(r)}async function ZI(e){let t=q.tenancy.getGlobalDB(),[r,a]=await Promise.all([t.get(e),xr()]);return await Or(r,a)}async function eS(e,t={enriched:!0}){let r=q.tenancy.getGlobalDB(),[a,n]=await Promise.all([r.getMultiple(e,{allowMissing:!0}),xr()]);if(t?.enriched){let o=[];for(let s of a)o.push(Or(s,n));return await Promise.all(o)}else return a}async function tS(e){return await q.tenancy.getGlobalDB().put(e)}async function rS(e){return await q.tenancy.getGlobalDB().bulkDocs(e)}async function aS(e,t){let r=q.tenancy.getGlobalDB(),a=await r.get(e),n=await r.remove(e,t);return await JI(a),n}async function Ao(e){let t=e.toLowerCase(),[r,a]=await Promise.all([ap(),xr()]),n=r.find(o=>o.name.toLowerCase()===t);if(n)return await Or(n,a)}var ve={};w(ve,{deleteAppBackupMetadata:()=>yS,fetchAppBackups:()=>fS,generateAppBackupID:()=>hp,getAppBackupMetadata:()=>hS,oldestBackupDate:()=>gp,storeAppBackupMetadata:()=>mS,updateAppBackupMetadata:()=>gS});var Q=require("@budibase/backend-core"),mp=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
|
|
10
|
+
}`;await YI(e,t,$I.USER_BY_GROUP)}var ep=`${q.DocumentType.GROUP}${q.SEPARATOR}`,xr=async()=>(await q.db.getAllApps({dev:!0,efficient:!0,idsOnly:!0})).map(t=>q.db.getProdAppID(t));function tp(e,t={}){e||(e="");let r=e?.startsWith(q.DocumentType.GROUP)?"":ep;return{...t,startkey:`${r}${e}`,endkey:`${r}${e}${q.UNICODE_MAX}`}}function rp(e,t={}){e||(e="");let{emailSearch:r,bookmark:a,...n}=t;return r?{...n,startkey:`e_${e}${a||r}`,endkey:`e_${e}${r}${q.UNICODE_MAX}`}:{...t,startkey:`g_${e}`,endkey:`g_${e}${q.UNICODE_MAX}`,startkey_docid:a}}function zI(){return`${ep}${q.utils.newid()}`}async function ja(e,t){let r=q.tenancy.getGlobalDB();return(await q.db.queryView(q.db.ViewName.USER_BY_GROUP,rp(e,t),r,Zu,{arrayResponse:!0})).map(n=>({_id:n.userId,email:n.email}))||[]}async function Or(e,t){return e.users=await ja(e._id),e.roles&&(e.roles=Object.fromEntries(Object.entries(e.roles).filter(([r])=>t.includes(r)))),e}async function JI(e){let r=(await Or(e,await xr())).users?.map(o=>o._id),a=await q.users.bulkGetGlobalUsersById(r),n=[];for(let o of a){if(!o.userGroups)continue;let s=o.userGroups.length;o.userGroups=o.userGroups.filter(i=>i!==e._id),o.userGroups.length!==s&&n.push(o)}n.length&&await q.users.bulkUpdateGlobalUsers(n)}async function ap(){return(await q.tenancy.getGlobalDB().allDocs(tp(null,{include_docs:!0}))).rows.map(t=>t.doc)}async function XI(){let[e,t]=await Promise.all([ap(),xr()]),r=[];for(let a of e)r.push(Or(a,t));return await Promise.all(r)}async function ZI(e){let t=q.tenancy.getGlobalDB(),[r,a]=await Promise.all([t.get(e),xr()]);return await Or(r,a)}async function eS(e,t={enriched:!0}){let r=q.tenancy.getGlobalDB(),[a,n]=await Promise.all([r.getMultiple(e,{allowMissing:!0}),xr()]);if(t?.enriched){let o=[];for(let s of a)o.push(Or(s,n));return await Promise.all(o)}else return a}async function tS(e){return await q.tenancy.getGlobalDB().put(e)}async function rS(e){return await q.tenancy.getGlobalDB().bulkDocs(e)}async function aS(e,t){let r=q.tenancy.getGlobalDB(),a=await r.get(e),n=await r.remove(e,t);return await JI(a),n}async function Ao(e){let t=e.toLowerCase(),[r,a]=await Promise.all([ap(),xr()]),n=r.find(o=>o.name.toLowerCase()===t);if(n)return await Or(n,a)}var ve={};w(ve,{deleteAppBackupMetadata:()=>yS,fetchAppBackups:()=>fS,generateAppBackupID:()=>hp,getAppBackupMetadata:()=>hS,oldestBackupDate:()=>gp,storeAppBackupMetadata:()=>mS,updateAppBackupMetadata:()=>gS});var Q=require("@budibase/backend-core"),mp=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 jt=require("@budibase/backend-core"),{ViewName:op,AutomationViewMode:bo,SEPARATOR:je,DocumentType:sp,createView:ip}=jt.db,nS=sp.AUTOMATION_LOG+je,np=sp.APP_BACKUP+je;async function up(){let e=jt.context.getProdAppDB(),t=`function(doc) {
|
|
11
11
|
if (doc._id.startsWith("${nS}")) {
|
|
12
12
|
let autoId = doc.automationId + "${je}"
|
|
13
13
|
let status = doc.status + "${je}"
|
|
@@ -18,14 +18,14 @@
|
|
|
18
18
|
emit(autoKey)
|
|
19
19
|
emit(allKey)
|
|
20
20
|
}
|
|
21
|
-
}`;await ip(e,t,op.AUTOMATION_LOGS)}async function pp(){let e=
|
|
21
|
+
}`;await ip(e,t,op.AUTOMATION_LOGS)}async function pp(){let e=jt.tenancy.getGlobalDB(),t=`function(doc) {
|
|
22
22
|
if (doc._id.startsWith("${np}") && doc.type && doc.trigger) {
|
|
23
23
|
let full = doc.appId + "${je}"
|
|
24
24
|
full += doc.trigger.toLowerCase() + "${je}"
|
|
25
25
|
full += doc.type.toLowerCase() + "${je}"
|
|
26
26
|
emit("${np}" + full + doc.timestamp)
|
|
27
27
|
}
|
|
28
|
-
}`;await ip(e,t,op.APP_BACKUP_BY_TRIGGER)}var fp=require("@budibase/types");var $r={};w($r,{GENERIC_PAGE_SIZE:()=>We,auditLogs:()=>
|
|
28
|
+
}`;await ip(e,t,op.APP_BACKUP_BY_TRIGGER)}var fp=require("@budibase/types");var $r={};w($r,{GENERIC_PAGE_SIZE:()=>We,auditLogs:()=>Wt,licenses:()=>he,quotas:()=>et,versions:()=>Wr});var he={};w(he,{CLOUD_FREE_LICENSE:()=>sS,SELF_FREE_LICENSE:()=>Io,UNLIMITED:()=>F,UNLIMITED_LICENSE:()=>iS});var dt=require("@budibase/types");var et={};w(et,{UNLIMITED:()=>oS,actions:()=>Gr,appBackupRetentionDays:()=>Qr,apps:()=>Pr,automationLogRetentionDays:()=>Fr,automations:()=>Mr,budibaseAICredits:()=>kr,creators:()=>qr,customAIConfigurations:()=>jr,plugins:()=>Nr,queries:()=>Br,rows:()=>Cr,userGroups:()=>Dr,users:()=>Ur});var ae=require("@budibase/types"),oS=-1,Cr=e=>({[ae.StaticQuotaName.ROWS]:{name:"Rows",value:e,triggers:[90,100]}}),Pr=e=>({[ae.StaticQuotaName.APPS]:{name:"Apps",value:e,triggers:[100]}}),Ur=e=>({[ae.StaticQuotaName.USERS]:{name:"Users",value:e,triggers:[80,100]}}),qr=e=>({[ae.StaticQuotaName.CREATORS]:{name:"Creators",value:e,triggers:[]}}),Dr=e=>({[ae.StaticQuotaName.USER_GROUPS]:{name:"User Groups",value:e,triggers:[80,100]}}),Nr=e=>({[ae.StaticQuotaName.PLUGINS]:{name:"Plugins",value:e,triggers:[90,100]}}),Br=e=>({[ae.MonthlyQuotaName.QUERIES]:{name:"Queries",value:e,triggers:[]}}),Mr=e=>({[ae.MonthlyQuotaName.AUTOMATIONS]:{name:"Automations",value:e,triggers:[80,90,100]}}),kr=e=>({[ae.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:{name:"Budibase AI Credits",value:e,triggers:[80,90,100]}}),Gr=e=>({[ae.MonthlyQuotaName.ACTIONS]:{name:"Actions",value:e,triggers:[80,90,100]}}),Fr=e=>({[ae.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS]:{name:"Automation Logs",value:e,triggers:[]}}),Qr=e=>({[ae.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS]:{name:"App Backups",value:e,triggers:[]}}),jr=e=>({[ae.StaticQuotaName.AI_CUSTOM_CONFIGS]:{name:"Custom AI Configuration",value:e,triggers:[]}});var F=-1,sS={features:[],quotas:{usage:{monthly:{...Br(F),...Mr(200),...kr(5e4),...Gr(F)},static:{...Pr(F),...Cr(2e3),...Ur(5),...qr(5),...Dr(0),...Nr(10),...jr(0)}},constant:{...Fr(1),...Qr(0)}},plan:{type:dt.PlanType.FREE,usesInvoicing:!1,model:dt.PlanModel.PER_USER}},Io={features:[],quotas:{usage:{monthly:{...Br(F),...Mr(F),...kr(5e4),...Gr(F)},static:{...Cr(F),...Pr(F),...Ur(20),...qr(F),...Dr(0),...Nr(10),...jr(0)}},constant:{...Fr(1),...Qr(0)}},plan:{type:dt.PlanType.FREE,usesInvoicing:!1,model:dt.PlanModel.PER_USER}},iS={features:[],quotas:{usage:{monthly:{...Br(F),...Mr(F),...kr(F),...Gr(F)},static:{...Pr(F),...Cr(F),...Ur(F),...qr(F),...Dr(F),...Nr(F),...jr(F)}},constant:{...Fr(F),...Qr(F)}},plan:{type:dt.PlanType.FREE,usesInvoicing:!1,model:dt.PlanModel.PER_USER}};var Wr={};w(Wr,{getLicenseVersion:()=>uS,getProVersion:()=>lp});var Et=require("@budibase/backend-core"),Wa=P(require("fs")),cp=P(require("path")),uS=()=>{if(Et.env.isDev()){let e="dev-version.txt",t=cp.default.join(Et.objectStore.budibaseTempDir(),e);if(Wa.default.existsSync(t))return Wa.default.readFileSync(t,"utf8");{let r=Et.utils.newid();return Wa.default.writeFileSync(t,r),r}}else return lp()},lp=()=>{let e=Et.env.VERSION;if(!e)throw new Error("No budibase pro version was specified");return e};var Wt={};w(Wt,{searchTable:()=>pS});var vt=require("@budibase/types"),dp=require("@budibase/backend-core");function pS(){return{type:"table",sourceType:vt.TableSourceType.INTERNAL,name:vt.AUDIT_LOG_TYPE,sourceId:dp.SQS_DATASOURCE_INTERNAL,primary:["_id"],schema:{metadata:{name:"metadata",type:vt.FieldType.JSON},fallback:{name:"fallback",type:vt.FieldType.JSON}}}}var We=9;var cS=new Date(864e13).toISOString(),lS=1e3*60*60*24;async function $a(e){let r=(await qe.getCachedLicense()).quotas?.[fp.QuotaType.CONSTANT]?.[e]?.value||0;return r===he.UNLIMITED?new Date(cS).toISOString():new Date(new Date().getTime()-lS*r).toISOString()}async function gp(){return $a(mp.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS)}var So=`${Q.db.DocumentType.APP_BACKUP}${Q.db.SEPARATOR}`;async function dS(e,t,r={}){let a=await gp(),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:`${So}${o}${Q.db.UNICODE_MAX}`,endkey:`${So}${s}`}}async function yp(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 pp(),yp(e,t);throw r}}function hp(e,t){return`${So}${e}${Q.db.SEPARATOR}${t}`}async function fS(e,t={}){let r=Q.tenancy.getGlobalDB(),a,n=t.limit||9,o=await dS(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 yp(r,o);let s=Lr(a,{paginate:t.paginate,pageSize:n}),i=[...new Set(s.data.filter(f=>f.createdBy).map(f=>f.createdBy))],p=await Q.users.bulkGetGlobalUsersById(i,{cleanup:!0});for(let f of p)for(let m of s.data)f?._id===m.createdBy&&(m.createdBy=f);return s}async function mS(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 gS(e,t){let r=Q.tenancy.getGlobalDB(),a=await r.get(e);return a.name=t,await r.put(a)}async function yS(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:()=>bS,getCacheEnvVarID:()=>Ip,getEnvVarID:()=>Ka,update:()=>IS});var De=require("@budibase/backend-core"),bp=P(require("lru-cache")),AS=1e3,Ap=new bp.default({max:AS});function Ka(){return De.StaticDatabases.GLOBAL.docs.environmentVariables}function Ip(e){return`${De.tenancy.getTenantId()}/${Ka()}/${e||""}`}async function bS(){let e=Ka(),t=De.tenancy.getGlobalDB(),r,a=!1;try{r=await t.get(e)}catch(i){if(i.status==404)a=!0;else throw i}let n=Ip(r?._rev),o=Ap.get(n);if(o)return o;let s;return!a&&r?s={...r,variables:JSON.parse(De.encryption.decrypt(r.variables,De.encryption.SecretOption.ENCRYPTION))}:s={_id:e,variables:{}},Ap.set(n,s),s}async function IS(e){let t=Ka();return await De.tenancy.getGlobalDB().put({_id:e._id||t,_rev:e._rev||void 0,variables:De.encryption.encrypt(JSON.stringify(e.variables),De.encryption.SecretOption.ENCRYPTION)})}var wo=require("dd-trace"),Ya=new co(C.env.INTERNAL_ACCOUNT_PORTAL_URL),Ha=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{}},Sp=async e=>{let t,r;if(C.env.SELF_HOSTED){if(t=await Ee.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)},wp=async()=>await wo.tracer.trace("_getLicense",async()=>await Sp(async e=>{let t=await Qe.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 Qe.setUsage(i,Va.StaticQuotaName.USERS,Va.QuotaUsageType.STATIC)}let r=await C.installation.getInstallFromDB(),a=C.tenancy.getTenantId(),n=await C.events.identification.getUniqueTenantId(a),o=Wr.getProVersion(),s={quotaUsage:t,tenantId:a,install:{id:r.installId,tenantId:n,version:o}};try{let i=await Ya.post("/api/license",{headers:{...e},body:s});if(i.status===404||i.status===403)return;if(i.status!==200){let p=await Ha(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()&&(wp=jest.fn());var $t=wp;async function To(e){return await wo.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 Ya.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 Ha(r);throw new C.HTTPError(`Error getting license: ${a}`,r.status)}return r.json()})}var SS=e=>Sp(async t=>{let r=await Ya.post("/api/license/usage/triggered",{headers:{...t},body:e});if(r.status!==200){let a=await Ha(r);C.logging.logAlert(`Error triggering quota usage: ${a}`)}}),Eo=async e=>{let t=await C.installation.getInstall(),r={installVersion:t.version,installId:t.installId},a=await Ya.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 Ha(a);throw new C.HTTPError(`Error activating license key: ${n}`,a.status)}return a.json()};var ss=require("@budibase/backend-core");var fn={};w(fn,{activateOfflineLicenseToken:()=>ox,deleteOfflineLicenseToken:()=>sx,dev:()=>ma,enrichLicense:()=>mf,getIdentifier:()=>rs,getIdentifierBase64:()=>ix,getIdentifierFromBase64:()=>ux,getOfflineLicense:()=>as,getOfflineLicenseToken:()=>lf,signing:()=>Yr,verifyExpiry:()=>df,verifyInstallation:()=>ff});var Yr={};w(Yr,{sign:()=>TS,verifyLicenseToken:()=>Vr});var vo=P(require("jsonwebtoken")),wS=`-----BEGIN PUBLIC KEY-----
|
|
29
29
|
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvz3jePLCFBXZ19c8Dpkv
|
|
30
30
|
XtSgOhKFOcvQdo/LV0KJRUzQWDPWuO4ILtBtnqhjtIzZH4CH0qCYBet5L6Qr4CM1
|
|
31
31
|
l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
|
|
@@ -34,8 +34,8 @@ l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
|
|
|
34
34
|
d/o3ZWE1TTj1zYwlCLN5qRKr3hU8nC3xEYNEbkB9SfTRaOq9Q7P8WmfLkoCPm3pR
|
|
35
35
|
mwIDAQAB
|
|
36
36
|
-----END PUBLIC KEY-----
|
|
37
|
-
`;function Vr(e){return vo.default.verify(e,wS,{algorithms:["RS256"]})}function TS(e,t){return vo.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}var za={};w(za,{getFeatures:()=>Ro});var l=require("@budibase/types");var ES={[l.PlanType.FREE]:[...he.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]:[...he.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 Ro(e,t){let r=[];function a(n){let o=n[t];if(!o)throw new Error(`Features do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case l.Hosting.SELF:r=a(ES);break;case l.Hosting.CLOUD:r=a(vS);break}return r}var Ja={};w(Ja,{UNLIMITED:()=>d,getQuotas:()=>_o});var k=require("@budibase/types");var c=et,Tp=he,d=-1,Hr=e=>e*1e6,RS={[k.PlanType.FREE]:{...Tp.CLOUD_FREE_LICENSE.quotas},[k.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)}},[k.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...c.queries(d),...c.automations(5e3),...c.budibaseAICredits(Hr(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)}},[k.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...c.queries(d),...c.automations(5e3),...c.budibaseAICredits(Hr(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)}},[k.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)}},[k.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)}},[k.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)}},[k.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(Hr(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)}},[k.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(Hr(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)}},[k.PlanType.ENTERPRISE]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(Hr(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)}}},_S={[k.PlanType.FREE]:{...Tp.SELF_FREE_LICENSE.quotas},[k.PlanType.PREMIUM]:void 0,[k.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)}},[k.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)}},[k.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)}},[k.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)}},[k.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)}},[k.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)}},[k.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)}},[k.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 _o(e,t){let r;function a(n){let o=n[t];if(!o)throw new Error(`Quotas do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case k.Hosting.SELF:r=a(_S);break;case k.Hosting.CLOUD:r=a(RS);break}return JSON.parse(JSON.stringify(r))}var Kt={};w(Kt,{appExists:()=>xS,encoding:()=>$t});var Ep=require("@budibase/backend-core");async function xS(e){return(await Ep.db.getAllApps({all:!0,idsOnly:!0})).includes(e)}var $t={};w($t,{base64ToObject:()=>LS,objectToBase64:()=>OS});function OS(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 uf=require("@budibase/types"),or=require("@budibase/backend-core"),pf=P(Gl()),cf=P(ts());async function ox(e){await Ee.save({offlineLicenseToken:e}),await xt()}async function sx(){await Ee.save({offlineLicenseToken:void 0}),await xt()}async function lf(){return(await Ee.get()).offlineLicenseToken}async function rs(){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 ix(){let e=await rs();return $t.objectToBase64(e)}function ux(e){return $t.base64ToObject(e)}function df(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 ff(e){let t=await rs();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}function mf(e){let t=e.plan.type,r=uf.Hosting.SELF,a=Ro(r,t),n=_o(r,t);return e.features=(0,pf.default)(e.features,a),e.quotas=(0,cf.default)(e.quotas,n),e}async function as(){try{let e=await lf();if(e){let t=await Vr(e);return df(t),await ff(t),mf(t)}}catch(e){console.error("Error retrieving offline license",e)}}var ma={};w(ma,{deleteDevLicense:()=>fx,getOfflineLicense:()=>lx,writeDevLicenseToDisk:()=>dx});var gf=require("@budibase/backend-core"),os=require("path"),yf=require("os"),Ot=P(require("fs"));var px=gf.env.isTest()?".budibase-test":".budibase",ns=(0,os.join)((0,yf.tmpdir)(),px),cx="dev_license.txt",fa=(0,os.join)(ns,cx);if(!Ot.default.existsSync(ns))try{Ot.default.mkdirSync(ns)}catch{}function lx(){try{if(Ot.default.existsSync(fa)){let e=Ot.default.readFileSync(fa,{encoding:"utf-8"});return Vr(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}function dx(e){console.log(`Writing license to: ${fa}`),Ot.default.writeFileSync(fa,e,{encoding:"utf-8"})}function fx(){Ot.default.rmSync(fa,{force:!0})}var hf=require("dd-trace"),is=async()=>await hf.tracer.trace("getLicense",async e=>{if(ss.env.OFFLINE_MODE)return e.addTags({offline:!0}),as();let t=await Wt();return t||(e.addTags({offlineFallback:!0}),t=ma.getOfflineLicense()),t}),us=e=>To(e),ps=()=>ss.env.SELF_HOSTED?he.SELF_FREE_LICENSE:he.CLOUD_FREE_LICENSE;var ls={};w(ls,{activateLicenseKey:()=>mx,deleteLicenseKey:()=>gx,getLicenseKey:()=>mn});var cs=P(require("dd-trace"));async function mx(e){await Eo(e),await Ee.save({licenseKey:e}),await xt()}async function mn(){return await cs.default.trace("getLicenseKey",async e=>{let t=await Ee.get();return e.addTags({licenseKey:t.licenseKey}),t.licenseKey})}async function gx(){return await cs.default.trace("deleteLicenseKey",async()=>{await Ee.save({licenseKey:void 0}),await xt()})}var Lt=require("@budibase/backend-core"),gn=P(require("dd-trace")),Af=3600,xt=async()=>{await Sf(),await If()},bf=async(e,t)=>{let{populateLicense:r=is,populateFreeLicense:a=ps}=t||{};return await gn.default.trace("getCachedLicense",async n=>{let o=Lt.context.getLicense();if(o)return n.addTags({foundInContext:!0,features:o.features,plan:o.plan,quotas:o.quotas}),o;let s=Lt.tenancy.getTenantId(),i=await io(),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 gn.default.trace("populateLicense",async()=>await r(s)),n.addTags({populatedLicense:!!p}),p||(p=gn.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:Af}),await i.store(s,p,Af),p)})};Lt.env.isJest()&&(bf=jest.fn());var If=bf,Sf=async()=>{let e=Lt.tenancy.getTenantId();await(await io()).delete(e)};async function pe(e,t){Array.isArray(e)||(e=[e]),t||(t=await qe.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}async function yn(e,t){if(!await pe(e,t))throw new tt.FeatureDisabledError(`${e} is not currently enabled`,e)}async function ds(e,t){if(!await pe(e,t)){let r=e.join(", ");throw new tt.FeatureDisabledError(`${r} are not currently enabled`,r)}}function de(e){return async(...t)=>(await yn(ue.Feature.APP_BACKUPS),e(...t))}async function fs(){return pe(ue.Feature.APP_BACKUPS)}async function ms(){return pe(ue.Feature.BRANDING)}async function wf(){return pe(ue.Feature.ENFORCEABLE_SSO)}async function hx(){return pe(ue.Feature.SYNC_AUTOMATIONS)}async function Ax(){return pe(ue.Feature.TRIGGER_AUTOMATION_RUN)}async function Ct(){return pe(ue.Feature.APP_BUILDERS)}async function hn(){return pe(ue.Feature.AUDIT_LOGS)}async function gs(){return pe(ue.Feature.USER_GROUPS)}function bx(){return pe(ue.Feature.PWA)}async function rt(){return pe(ue.Feature.EXPANDED_PUBLIC_API)}async function Ix(e){if(tt.env.ENABLE_SSO_MAINTENANCE_MODE||!await wf())return!1;let r;return e?.config?r=e.config:r=await tt.configs.getSettingsConfig(),!!r.isSSOEnforced}var ys=async()=>{let e=ue.Feature.SCIM,t=await pe(e),r=await tt.configs.getSCIMConfig();if(!t||!r?.enabled)throw new tt.FeatureDisabledError(`${e} is not currently enabled`,e);return!0};async function Sx(){return pe(ue.Feature.VIEW_PERMISSIONS)}async function wx(){return pe(ue.Feature.VIEW_READONLY_COLUMNS)}var Tx={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 Ex(e){return await ms()?{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}:Tx}var As={};w(As,{enrichAIConfig:()=>hs});var Tf=require("@budibase/backend-core"),vx="budibase_ai";async function hs(e){if(Tf.env.SELF_HOSTED)return e;for(let t of Object.values(e.config))if(t.provider==="BudibaseAI")return e;return e.config[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 Ye={};w(Ye,{addAction:()=>Lx,addApp:()=>Cx,addAutomation:()=>Bx,addGroup:()=>Is,addPlugin:()=>ws,addRow:()=>Ux,addRows:()=>Dx,addUsers:()=>Sn,bustCache:()=>mo,decrement:()=>at,decrementMany:()=>ga,getCurrentUsageValues:()=>Ju,getLicensedQuota:()=>vf,getQuotaUsage:()=>Tt,increment:()=>be,incrementBudibaseAICredits:()=>Tn,incrementMany:()=>Pt,removeApp:()=>Px,removeGroup:()=>Ss,removePlugin:()=>Ts,removeRow:()=>qx,removeRows:()=>Nx,removeUsers:()=>cr,set:()=>bs,setAllUsage:()=>yo,setAppUsageValue:()=>go,setUsage:()=>Yu,setUsagePerApp:()=>Hu,updatePluginCount:()=>Es,updateUsage:()=>ir,usageLimitIsExceeded:()=>Ox,utils:()=>_r});var bn=require("@budibase/types");var z=require("@budibase/types");var Be=require("@budibase/backend-core");var sr=require("dd-trace"),be=(e,t,r)=>Ef({change:1,name:e,type:t,opts:r}),Pt=e=>sr.tracer.trace("quotas.incrementMany",async()=>Ef(e)),Ef=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]}),at=(e,t,r={})=>ir({usageChange:-1,name:e,type:t,opts:r}),ga=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})))},bs=async(e,t,r)=>Qe.setUsage(r,e,t),Rx=(e,t,r)=>{if(e==z.QuotaUsageType.STATIC){let a=r.usageQuota.triggers;return a?a[t]||{}:{}}else{let a=Qe.utils.getCurrentMonthString(),n=r.monthly[a].triggers;return n?n[t]||{}:{}}},_x=async(e,t,r,a)=>{try{await Be.locks.doWithLock({type:z.LockType.TRY_ONCE,name:z.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let n={percentage:r,name:t.name};a&&(n.resetDate=a),await ft.triggerQuota(n)})}catch(n){Be.logging.logAlert("Error triggering quota",n)}},xx=async(e,t,r,a)=>{let n=await Tt(),o=e===z.QuotaUsageType.MONTHLY?n.quotaReset:void 0,s=await Rx(e,t,n),i=a.triggers,p=r/a.value*100;p>100&&(p=100);for(let[f,m]of i.entries())if(p>=m&&a.value!==et.UNLIMITED){if(!s[m]){s[m]=new Date().toISOString();let g=i[f+1]||100;(!(p>=g)||p===m)&&await _x(t,a,p,o)}}else s[m]=void 0;return s},ir=async e=>{await sr.tracer.trace("quotas.updateUsage",async t=>{let r=Be.tenancy.getTenantId(),a=Array.isArray(e)?e:[e];t.addTags({numActions:a.length,tenantId:r});let n,o,s=[],i={},p={},f={},m={};for(let g of a)await sr.tracer.trace("quotas.updateUsage.action",async I=>{I.addTags({actionName:g.name,actionType:g.type,actionUsageChange:g.usageChange});try{n=Be.context.getAppId()}catch{}if(z.APP_QUOTA_NAMES.includes(g.name)&&!n)throw new Error("App context required for quota update");try{o=await vf(z.QuotaType.USAGE,g.name,g.type),s.push(o);let{total:_,app:R,breakdown:v}=await Qe.getCurrentUsageValues(g.type,g.name,g.opts?.id);_+=g.usageChange,R!=null&&(R+=g.usageChange),v!=null&&(v+=g.usageChange);let U={};if(g.opts?.dryRun||(U=await xx(g.type,g.name,_,o),m={...m,[g.name]:U}),o.value!==et.UNLIMITED&&_>o.value&&g.usageChange>0)throw new Be.UsageLimitError(`Licensed ${o.name} of ${o.value} has been exceeded`,o.name);if(_=Math.max(0,_),R&&(R=Math.max(0,R)),v&&(v=Math.max(0,v),f={...f,[g.name]:v}),!g.opts?.dryRun){let Pe=g.opts?.valueFn;Pe&&(_=await Pe(),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 y=a.filter(g=>!g.opts?.dryRun).map(g=>({name:g.name,type:g.type,values:{total:i[g.name],app:p[g.name],breakdown:f[g.name],triggers:m[g.name]},opts:{...g.opts,tenantId:r}}));y.length>0&&await Qe.setAllUsage(y)})},vf=async(e,t,r)=>{let a=await qe.getCachedLicense();if(!a){let n=Be.tenancy.getTenantId();throw new Error("License not found for tenant id "+n)}if(r&&(0,z.isStaticQuota)(e,r,t))return a.quotas[e][r][t];if(r&&(0,z.isMonthlyQuota)(e,r,t))return a.quotas[e][r][t];if((0,z.isConstantQuota)(e,t))return a.quotas[e][t];throw new Error("Invalid quota type")},Ox=async(e,t)=>{try{return await ir({usageChange:1,name:e,type:t,opts:{dryRun:!0}}),!1}catch(r){if(r.code===z.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw r}};var Lx=async e=>be(bn.MonthlyQuotaName.ACTIONS,bn.QuotaUsageType.MONTHLY,{fn:e});var ur=require("@budibase/types"),Rf=require("@budibase/backend-core"),_f=async()=>{let e=await Rf.db.getAllApps({dev:!0});return e?e.length:0},Cx=async(e,{appId:t}={})=>be(ur.StaticQuotaName.APPS,ur.QuotaUsageType.STATIC,{fn:e,valueFn:_f,id:t}),Px=async({appId:e}={})=>at(ur.StaticQuotaName.APPS,ur.QuotaUsageType.STATIC,{valueFn:_f,id:e});var Ke=require("@budibase/types"),Ux=async(e,{tableId:t}={})=>be(Ke.StaticQuotaName.ROWS,Ke.QuotaUsageType.STATIC,{fn:e,id:t}),qx=async({tableId:e}={})=>at(Ke.StaticQuotaName.ROWS,Ke.QuotaUsageType.STATIC,{id:e}),Dx=async(e,t,{tableId:r}={})=>Pt({change:e,name:Ke.StaticQuotaName.ROWS,type:Ke.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),Nx=async(e,{tableId:t}={})=>ga({change:e,name:Ke.StaticQuotaName.ROWS,type:Ke.QuotaUsageType.STATIC,opts:{id:t}});var In=require("@budibase/types"),Bx=async(e,{automationId:t}={})=>be(In.MonthlyQuotaName.AUTOMATIONS,In.QuotaUsageType.MONTHLY,{fn:e,id:t});var pr=require("@budibase/types"),Is=async e=>be(pr.StaticQuotaName.USER_GROUPS,pr.QuotaUsageType.STATIC,{fn:e}),Ss=async()=>at(pr.StaticQuotaName.USER_GROUPS,pr.QuotaUsageType.STATIC);var ht=require("@budibase/types"),ws=async e=>be(ht.StaticQuotaName.PLUGINS,ht.QuotaUsageType.STATIC,{fn:e}),Ts=async()=>at(ht.StaticQuotaName.PLUGINS,ht.QuotaUsageType.STATIC),Es=async e=>bs(ht.StaticQuotaName.PLUGINS,ht.QuotaUsageType.STATIC,e);var Ve=require("@budibase/types"),ya=require("@budibase/backend-core");var Sn=async(e,t,r)=>{let a=[{change:e,name:Ve.StaticQuotaName.USERS,type:Ve.QuotaUsageType.STATIC,opts:{fn:r,valueFn:ya.users.getUserCount}}];t>0&&a.push({change:t,name:Ve.StaticQuotaName.CREATORS,type:Ve.QuotaUsageType.STATIC,opts:{valueFn:ya.users.getCreatorCount}});let n=await Pt(a);return await Wt(),n},cr=async(e,t)=>{let r=[{change:e,name:Ve.StaticQuotaName.USERS,type:Ve.QuotaUsageType.STATIC,opts:{valueFn:ya.users.getUserCount}}];t>0&&r.push({change:t,name:Ve.StaticQuotaName.CREATORS,type:Ve.QuotaUsageType.STATIC,opts:{valueFn:ya.users.getCreatorCount}}),await ga(r),await Wt()};var wn=require("@budibase/types"),Tn=async e=>Pt({change:e,name:wn.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:wn.QuotaUsageType.MONTHLY});var nt={};w(nt,{addAppBuilder:()=>Qx,db:()=>He,removeAppBuilder:()=>jx});var Aa=require("@budibase/backend-core");var j={};w(j,{addAppBuilder:()=>Os,addUsers:()=>Rs,adjustGroupCreatorsQuotas:()=>Fx,cleanupApp:()=>Gx,enrichUserRolesFromGroups:()=>kx,fetch:()=>ha,get:()=>Ut,getBulk:()=>qf,getGroupBuilderAppIds:()=>Uf,getGroupRoleId:()=>Mx,remove:()=>vs,removeAppBuilder:()=>Ls,removeUsers:()=>_s,save:()=>lr,updateGroupApps:()=>xs});var x=require("@budibase/backend-core");var xf=require("@budibase/backend-core"),En=class extends xf.HTTPError{constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function Cf(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,f]=Object.entries(i)[0];s[p]={roleId:p,roleNum:f}});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 Pf(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await M.getBulk(e,{enriched:!1}),t}async function Uf(e,t){if(!e.userGroups)return[];let r=await Pf(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 Mx(e,t,r){if(!e.userGroups)return null;let a=await Pf(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 Cf(a,t))}async function kx(e){if(!e||!e.userGroups)return e;let t=await qf(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 Cf(t,n);o&&(e.roles[n]=o)});let a=await Uf(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 qf(e,t={enriched:!0}){return await M.getBulk(e,t)}async function Of(e){if(await M.getByName(e))throw new En(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 Of(e.name),t.push(x.events.group.created(e));else{let o=await M.get(e._id);if(o.name!==e.name&&await Of(e.name),t.push(x.events.group.updated(e)),JSON.stringify(o.roles)!==JSON.stringify(e.roles)){let s=o.users?.length||0,i=0;s>0&&(i=await Lf(o)),Object.values(e.roles).includes("CREATOR")?a=s-i:a=-s,t.push(x.events.group.permissionsEdited(e))}}await Promise.all(t);let n=()=>M.save(e);if(r)return await Is(n);{let o=await n();if(a>0)await Sn(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),f=(await Promise.all(i.map(I=>s.get(I._id)))).map(I=>({...I,userGroups:I.userGroups.filter(O=>O!==e)})),y=(await x.userUtils.creatorsInList(f)).filter(I=>I).length,g=i.length-y;g&&(n=()=>cr(0,g))}let o=await M.destroy(e,t);return await x.events.group.deleted(r),await Ss(),await n(),o}async function Rs(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 f=(await x.userUtils.creatorsInList(n)).filter(y=>y).length,m=n.length-f;m&&await Sn(0,m)}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 _s(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(m=>m).length,f=n.length-p;f&&await cr(0,f)}let s=[];for(let i of t)s.push(x.cache.user.invalidateUser(i));return await Promise.all(s),n.length&&await x.events.group.usersDeleted(n.length,r),n}async function xs(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 Os(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 Fx(){if(!await gs()){let e=x.tenancy.getGlobalDB(),r=(await ha()||[]).filter(a=>Object.values(a?.roles||{}).includes("CREATOR"));for(let a of r){let n=await M.getGroupUsers(a._id),s=(await Promise.all(n.map(m=>e.get(m._id)))).map(m=>({...m,userGroups:m.userGroups.filter(y=>y!==a._id)})),p=(await x.userUtils.creatorsInList(s)).filter(m=>m).length,f=n.length-p;await M.save({...a,roles:{}}),f&&await cr(0,f)}}}Aa.users.UserDB.init(Ye,j,Ne);var He=Aa.users.UserDB;async function Qx(e,t){if(!await Ct())throw new Error("Feature not enabled, please check license");await Aa.users.addAppBuilder(e,t)}async function jx(e,t){if(!await Ct())throw new Error("Feature not enabled, please check license");await Aa.users.removeAppBuilder(e,t)}var _n={};w(_n,{logs:()=>Bs});var Bs={};w(Bs,{logSearch:()=>Xx,oldestLogDate:()=>Ff,storeLog:()=>Zx});var Gf=require("@budibase/types"),Rn=require("@budibase/backend-core");var vn=require("@budibase/types");var Z=require("@budibase/backend-core");var Df=require("@budibase/backend-core");async function Nf(e,t){let r,a=5,n=!1,o,s=!0;for(;a>0;a--)try{s?o=await e():o=await exports.randomDelay(e),n=!0;break}catch(i){r=i}return n||Df.logging.logWarn(`Failed to backoff: ${t}`,r),o}var{SEPARATOR:ot,UNICODE_MAX:Wx,DocumentType:Bf,AutomationViewMode:Cs,ViewName:$x,getQueryIndex:Kx}=Z.db,Vx=new Date(0).toISOString(),Yx=100,Ps=async()=>$a(vn.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS);function Mf(e,t,{status:r,automationId:a}={},n={}){let o=a?`${a}${ot}`:"",s=r?`${r}${ot}`:"",i;return r&&a?i=`${Cs.ALL}${ot}${s}${o}`:r?i=`${Cs.STATUS}${ot}${s}`:a?i=`${Cs.AUTOMATION}${ot}${o}`:i=`${Bf.AUTOMATION_LOG}${ot}`,{...n,descending:!0,startkey:`${i}${t}${Wx}`,endkey:`${i}${e}`}}function Hx(e,t,r){return`${Bf.AUTOMATION_LOG}${ot}${e}${ot}${r}${ot}${t}`}async function Us(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=Mf(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 qs(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=Mf(e,t,o,{include_docs:!0,limit:9+1});r?.page&&(s.startkey=r.page),n=await a.query(Kx($x.AUTOMATION_LOGS),s)}catch(o){if(o!=null&&(o.name==="not_found"||o.error==="not_found"))return await up(),qs(e,t,r);throw o}return Lr(n,{paginate:!0,pageSize:9})}async function kf(e,t){let r=Z.context.getProdAppDB(),a=e._id,n=e.name,o=new Date().toISOString(),s=Hx(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 Ds(e,{clearing:t}={clearing:!1}){let r=Z.context.getProdAppDB();await Nf(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 zx(){let e=await Ps();try{return await Us(Vx,e,{docs:!1,paginate:!1,limit:Yx})}catch{return{data:[],hasNextPage:!1}}}async function Ns(){let e=Z.context.getProdAppDB();try{let t=await zx();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 Ds(a,{clearing:!0})}catch(t){Z.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}var Ff=Ps;async function Jx(e,t,r,a){let n,o=new Date().toISOString(),s=await Ff();return(!e||e<s)&&(e=s),r||t?n=await qs(e,o,{automationId:r,status:t,page:a}):n=await Us(e,o,{status:t,page:a,docs:!0,paginate:!0}),n}async function Xx(e){return await Ns(),await Jx(e.startDate,e.status,e.automationId,e.page)}async function Zx(e,t){if(!Rn.db.isProdAppID(Rn.context.getAppId()))return;let r=await kf(e,t);t.status===Gf.AutomationStatus.ERROR&&await Ds([r]),await Ns()}var xn={};w(xn,{checkPluginQuotas:()=>rO,deletePlugin:()=>tO,storePlugin:()=>eO});var $f=require("@budibase/types"),J=require("@budibase/backend-core");var Qf=P(require("fs")),jf=require("path");function Wf(e,t){return Qf.default.readFileSync((0,jf.join)(e,t),"utf8")}async function eO(metadata,directory,source){let db=J.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=J.objectStore.getPluginS3Dir(name),files=await J.objectStore.uploadDirectory(J.objectStore.ObjectStoreBuckets.PLUGINS,directory,bucketPath),jsFile=files.find(e=>e.name.endsWith(".js")),iconFile=files.find(e=>e.name.endsWith(".svg"));if(!jsFile)throw new Error("Plugin missing .js file.");if(metadata.schema.type===$f.PluginType.DATASOURCE){let js=Wf(directory,jsFile.name);try{eval(js)}catch(e){let t=e?.message?e.message:JSON.stringify(e);throw new Error(`JS invalid: ${t}`)}}let iconFileName=iconFile?iconFile.name:null,pluginId=J.db.generatePluginID(name),rev;try{rev=(await db.get(pluginId))._rev}catch(e){rev=void 0}let doc={_id:pluginId,_rev:rev,...metadata,name,version,hash,description,source};iconFileName&&(doc.iconFileName=iconFileName),source&&(doc={...doc,source});let write=async()=>{let e=await db.put(doc);return await J.events.plugin.imported(doc),{...doc,_rev:e.rev}};return rev?await write():await ws(write)}async function tO(e){let t=J.tenancy.getGlobalDB();try{let r=await t.get(e),a=J.objectStore.getPluginS3Dir(r.name);await J.objectStore.deleteFolder(J.objectStore.ObjectStoreBuckets.PLUGINS,a),await t.remove(e,r._rev),await J.events.plugin.deleted(r),await Ts()}catch(r){let a=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${a}`)}}async function rO(){let e=J.tenancy.getGlobalDB();try{let r=(await e.allDocs(J.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await Es(r)}catch(t){J.logging.logAlert("Unable to retrieve plugins for quota check",t)}}var ze={};w(ze,{fetch:()=>nO,fetchValues:()=>oO,isEncryptionKeyAvailable:()=>aO,isValid:()=>Yf,remove:()=>iO,update:()=>sO});var ba=require("@budibase/types"),Kf=require("@budibase/backend-core");function aO(){return!!Kf.env.ENCRYPTION_KEY}async function nO(){let e=await Rt.get();return Object.keys(e.variables)}async function oO(e){let r=(await Rt.get()).variables,a={};for(let[n,o]of Object.entries(r))switch(e){case ba.AppEnvironment.DEVELOPMENT:a[n]=o.development;break;case ba.AppEnvironment.PRODUCTION:default:a[n]=o.production;break}return a}async function Vf(e){if(!(await $e.cache.getCachedLicense()).features.includes(ba.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 sO(e,t){if(Yf(e))await Vf(a=>(a[e]=t,a));else throw new Error("Variable name has characters that are not allowed")}async function iO(e){await Vf(t=>(delete t[e],t))}function Yf(e){return/^[a-zA-Z0-9-_]+$/.test(e)}var At={};w(At,{definitions:()=>AO,download:()=>hO,fetch:()=>yO,write:()=>mO});var Ln=require("@budibase/types");var V=require("@budibase/backend-core"),Me=require("@budibase/types");var Hf=require("memorystream"),zf=new V.sql.Sql(Me.SqlClient.SQL_LITE);async function uO(e,t,r){let a={operation:Me.Operation.READ,table:jt.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:Me.SortOrder.DESCENDING,type:Me.SortType.STRING}}},n=zf._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 pO(e){return`${V.DocumentType.AUDIT_LOG}${V.SEPARATOR}${e}${V.SEPARATOR}${V.utils.newid()}`}async function Jf(e){e._id||(e._id=pO(e.timestamp)),e.type||(e.type=Me.AUDIT_LOG_TYPE);try{let r=await V.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){V.logging.logAlert("Failed to write audit log",t)}}async function Ms(e,t,r){t||(t=1);let a=V.context.getAuditLogsDB();try{let n=9+1,o=await uO(e,t,n),s=jt.searchTable(),i=zf.convertJsonStringColumns(s,await a.sql(o.sql,o.bindings)),p;i.length>n&&(p=i.pop());let f={rows:i,hasNextPage:!!p};return f.hasNextPage&&(f.bookmark=t+1),f}catch(n){if(n.status===404&&!r?.isRetry)return await cO(),await Xu(),await Ms(e,t,{isRetry:!0});throw n}}async function cO(){let e=V.context.getAuditLogsDB(),r=(await e.allDocs(V.db.getDocParams(V.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(a=>a.doc).filter(a=>a&&!a.type).map(a=>({...a,type:Me.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}function Xf(e){let t=V.context.getAuditLogsDB(),r=new Hf,a=t.dump(r,{filter:o=>{let s=o;if(!s._id?.startsWith(V.DocumentType.AUDIT_LOG))return!1;let i=!0,p=(f,m)=>{!f||f.length===0||(i=!!(i&&m&&f.includes(m)))};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 f=JSON.stringify(o);i=i&&f.includes(e.fullSearch)}return i}}),n=new Hf;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 fe=require("@budibase/backend-core");var On=require("@budibase/types"),Ia=require("@budibase/string-templates"),Sa=require("@budibase/backend-core"),dO=Sa.constants.MIN_VALID_DATE.toISOString(),fO=Sa.constants.MAX_VALID_DATE.toISOString();function ks(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||dO,e.endDate=e.endDate||fO),e}async function Zf(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(a=>Sa.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=ks(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:On.AuditLogResourceStatus.DELETED};switch(t){case"app":a.name=r?.appName;break;case"user":a.email=r?.email;break}return a}function Fs(e){let t=(0,Ia.findHBSBlocks)(e);for(let r of t){let a=` "${r}"`;e=e.replace(e.includes(a)?a:` ${r}`,""),e=(0,Ia.processStringSync)(e,{})}return e}function em(e,t){let r=On.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let a=(0,Ia.processStringSync)(r,t);return a.includes('""')&&(a=Fs(r)),a}async function mO(e,t,r){if(!await hn()||!fe.utils.isAudited(e))return;let a=em(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=fe.db.getProdAppID(r.appId);let i=await fe.cache.app.getAppMetadata(r.appId);"name"in i&&(s.appName=i.name)}if(r?.userId){let i=await fe.users.getById(r?.userId);s.email=i.email}}catch(i){fe.logging.logAlert("Failed to retrieve fallback information for audit log",i)}return o.fallback=s,await Jf(o)}async function gO(e){let t=e.map(i=>i.userId),a=e.filter(i=>i.appId).map(i=>fe.db.getDevAppID(i.appId)),n=await fe.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),o=await fe.db.getAppsByIDs([...new Set(a)]),s=[];for(let i of e){let p=n.find(y=>y?._id===i.userId),f=o.find(y=>fe.db.isSameAppID(y?.appId,i.appId)),m={event:i.event,timestamp:i.timestamp,name:i.name,metadata:i.metadata,user:p||Gs(i.userId,"user",i.fallback)};i.appId&&(m.app=f||Gs(i.appId,"app",i.fallback)),s.push(m)}return s}async function yO(e){if(!await hn())throw new Error("Audit logs not available - license required.");let t=await Zf(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await Ms(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await gO(r.rows)}}function hO(e){return e=ks(e),Xf(e)}function AO(){let e=Object.entries(Ln.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=Fs(r[1]);return t}var Cn={};w(Cn,{applications:()=>Ks,roles:()=>Ws,users:()=>Qs});var Qs={};w(Qs,{roleCheck:()=>IO});function bO(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 IO(e,t){return await rt()||bO(e,t),e}var Ws={};w(Ws,{assign:()=>SO,unAssign:()=>wO});var wa=require("@budibase/backend-core");async function SO(e,t){if(!await rt())throw new Error("Unable to assign roles - license required.");let r=await He.bulkGet(e);for(let a of r){if(t.role&&t.role.roleId){let n=wa.db.getProdAppID(t.role.appId);a.roles[n]=t.role.roleId}if(t.appBuilder){let n=wa.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 He.bulkUpdate(r)}async function wO(e,t){if(!await rt())throw new Error("Unable to un-assign roles - license required.");let r=await He.bulkGet(e);for(let a of r){if(t.role){let n=wa.db.getProdAppID(t.role?.appId);a.roles[n]===t.role.roleId&&delete a.roles[n]}if(t.appBuilder&&a.builder?.apps){let n=wa.db.getProdAppID(t.appBuilder.appId);a.builder.apps=a.builder.apps.filter(o=>o!==n)}t.builder&&a.builder&&delete a.builder,t.admin&&a.admin&&delete a.admin}}var Ks={};w(Ks,{buildExportFn:()=>EO,buildImportFn:()=>TO});var $s=require("@budibase/backend-core");function TO(e){return async(t,r)=>{await rt()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await $s.context.doInAppContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}function EO(e){return async(t,r)=>{await rt()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:a,excludeRows:n}=t.request.body;await $s.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 re=require("@budibase/backend-core"),te=require("@budibase/types");var Vs=require("@budibase/backend-core"),tm;function rm(){tm=new Vs.queue.BudibaseQueue(Vs.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}function qt(){return tm}var am=require("path"),nm=P(require("fs"));async function Ys(e,t={}){return ve.storeAppBackupMetadata(e,t)}function om(e){let t=new Date().toISOString();switch(e){case te.AppBackupStatus.COMPLETE:case te.AppBackupStatus.FAILED:return{timestamp:t,finishedAt:t};case te.AppBackupStatus.STARTED:return{timestamp:t,startedAt:t};case te.AppBackupStatus.PENDING:return{timestamp:t,createdAt:t}}}async function vO(e,t,r,a){let n=await Pn(e);return await ve.storeAppBackupMetadata({...n,...om(t),contents:r,status:t,type:te.AppBackupType.BACKUP},{filename:a,docId:e})}async function RO(e,t,r){let a=await Pn(e);return await ve.storeAppBackupMetadata({...a,...om(r),status:r,type:te.AppBackupType.RESTORE,trigger:te.AppBackupTrigger.MANUAL},{docId:e,docRev:t})}async function Pn(e){return ve.getAppBackupMetadata(e)}async function _O(e,t){return ve.updateAppBackupMetadata(e,t)}async function xO(e){let t=await ve.getAppBackupMetadata(e);return t.filename&&await re.objectStore.deleteFile(re.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),ve.deleteAppBackupMetadata(e)}async function OO(e,t){return ve.fetchAppBackups(e,t)}async function sm(e){let t=await ve.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let r=await re.objectStore.getReadStream(re.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}async function LO(e){let{stream:t}=await sm(e),r=(0,am.join)(re.objectStore.budibaseTempDir(),re.utils.newid()),a=nm.default.createWriteStream(r);return new Promise((n,o)=>{t.on("error",o),a.on("error",o),t.pipe(a).on("close",()=>n(r))})}async function CO(e,t,r={}){let a;try{a=await Ys({appId:e,trigger:t,timestamp:new Date().toISOString(),status:te.AppBackupStatus.PENDING,type:te.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 re.events.backup.appBackupTriggered(e,a.id,te.AppBackupType.BACKUP,t,r?.name),a.id}async function PO(e,t,r,a){let n=await Pn(t),o;try{o=await Ys({appId:e,timestamp:new Date().toISOString(),status:te.AppBackupStatus.PENDING,type:te.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}}async function UO(e,t,r){let a=re.db.getProdAppID(e);await re.context.doInAppContext(a,async()=>{let n=re.context.getProdAppDB();if(!await n.exists())return;let s=await n.tryGet(te.DocumentType.APP_METADATA);s&&(s.backupErrors||(s.backupErrors={}),s.backupErrors[t]||(s.backupErrors[t]=[]),s.backupErrors[t].push(r),await n.put(s),await re.cache.app.invalidateAppMetadata(s.appId,s))})}var qO={isEnabled:fs,triggerAppRestore:de(PO),triggerAppBackup:de(CO),getBackupDownloadStream:de(sm),downloadAppBackup:de(LO),fetchAppBackups:de(OO),storeAppBackupMetadata:de(Ys),updateBackupStatus:de(vO),updateRestoreStatus:de(RO),getAppBackup:de(Pn),updateAppBackup:de(_O),deleteAppBackup:de(xO),trackBackupError:de(UO)},_e=qO;var zs={};w(zs,{init:()=>Hs});var W=require("@budibase/backend-core");var ke=require("@budibase/types");var dr=P(require("fs"));async function Hs(e){qt().process(async t=>{let r=t.data;try{if(r.export)return console.log("Exporting app backup:",r.appId,r.export.trigger),BO(t,e);if(r.import)return console.log("Importing app backup:",r.appId,r.import.backupId),NO(t,e)}catch(a){W.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,a)}})}async function DO(e){await W.db.getDB(e,{skip_setup:!0}).destroy()}async function im(e,t,r,a){let n=W.db.getDevAppID(r),o=W.db.getProdAppID(r),s=new Date().toISOString(),i=async(p,f)=>{a?.doc?await _e.updateBackupStatus(a.doc.id,p,f?.contents,f?.filename):await _e.storeAppBackupMetadata({appId:o,timestamp:s,trigger:e,status:p,name:a?.name,type:ke.AppBackupType.BACKUP,contents:f?.contents,createdBy:a?.createdBy},{filename:f?.filename})};try{let p=await a.processing.exportAppFn(n,{tar:!0}),f=await a.processing.statsFn(n),m=`${o}/backup-${s}.tar.gz`,y=W.objectStore.ObjectStoreBuckets.BACKUPS,g=dr.default.createReadStream(p);await W.objectStore.streamUpload({bucket:y,filename:m,stream:g,extra:{type:"application/gzip",metadata:{name:a?.name,trigger:e,timestamp:s,appId:o}}}),await i(ke.AppBackupStatus.COMPLETE,{filename:m,contents:f}),dr.default.existsSync(p)&&dr.default.rmSync(p)}catch(p){W.logging.logAlert("App backup error",p),await i(ke.AppBackupStatus.FAILED);let f=a?.doc?.id||`backup-${s}`,m=p instanceof Error?p.message:String(p);await _e.trackBackupError(o,f,`Backup export failed: ${m}`)}}async function NO(e,t){let r=e.data,a=r.appId,n=r.import.backupId,o=r.import.nameForBackup,s=r.import.createdBy,i=W.tenancy.getTenantIDFromAppID(a);return W.tenancy.doInTenant(i,async()=>{let p=W.db.getDevAppID(a),f=`${p}_temp_${Date.now()}`,{rev:m}=await _e.updateRestoreStatus(r.docId,r.docRev,ke.AppBackupStatus.STARTED);await im(ke.AppBackupTrigger.RESTORING,i,a,{processing:t,createdBy:s,name:o});let y=await _e.downloadAppBackup(n),g=ke.AppBackupStatus.COMPLETE;try{await t.importAppFn(f,W.db.getDB(f),{file:{type:"application/gzip",path:y},key:y}),await DO(p),await new W.db.Replication({source:f,target:p}).replicate()}catch(I){W.logging.logAlert("App restore error",I),g=ke.AppBackupStatus.FAILED;let O=I instanceof Error?I.message:String(I);await _e.trackBackupError(a,n,`Backup restore failed: ${O}`)}finally{try{await W.db.getDB(f,{skip_setup:!0}).destroy()}catch{}}await _e.updateRestoreStatus(r.docId,m,g),dr.default.existsSync(y)&&dr.default.rmSync(y,{force:!0})})}async function BO(e,t){let r=e.data,a=r.appId,n=r.export.trigger,o=r.export.name,s=W.tenancy.getTenantIDFromAppID(a);await W.tenancy.doInTenant(s,async()=>{try{let{rev:i}=await _e.updateBackupStatus(r.docId,ke.AppBackupStatus.STARTED);return im(n,s,a,{processing:t,doc:{id:r.docId,rev:i},name:o})}catch(i){W.logging.logAlert("App backup error",i);let p=i instanceof Error?i.message:String(i);await _e.trackBackupError(a,r.docId,`Backup export failed: ${p}`)}})}var MO=async e=>{rm(),await Hs(e.processing)},xe={..._e,processing:zs,init:MO,getBackupQueue:qt};var um=async e=>{e.backups&&await xe.init(e.backups)};var ge={};w(ge,{create:()=>CM,find:()=>LM,get:()=>OM,remove:()=>UM,update:()=>PM});var LA=P(Wi()),st=require("@budibase/backend-core");var CA=require("@budibase/types");async function OM(e){let t=st.tenancy.getGlobalDB(),r=new st.db.QueryBuilder(t.name,CA.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 LM(e){return await st.users.getById(e)}async function CM(e){let t=await He.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 He.save(e,{requirePassword:!1})}async function PM(e,t){return await He.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}async function UM(e){return await He.destroy(e)}var Ar={};w(Ar,{create:()=>qM});var PA=P(Wi());var UA=require("@budibase/backend-core");async function qM(e){let t=await Ao(e.name),r;if(!t)r=(await j.save(e)).id;else{if(t.scimInfo?.isSync)throw new UA.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,PA.default)(t.scimInfo,e.scimInfo),await j.save(t)}return await j.get(r)}var Nt={};w(Nt,{logRequest:()=>DM,logResponse:()=>NM});var $i=require("@budibase/backend-core");async function DM(e){$i.logging.logWarn("SCIM request log",e)}async function NM(e){$i.logging.logWarn("SCIM response error",e)}var Ji={};w(Ji,{doInScimContext:()=>Vi,feature:()=>$,internalGroupOnly:()=>Vn,licenseAuth:()=>NA,licensing:()=>qA,requireSCIM:()=>Yi,scimGroupOnly:()=>Ra,scimUserOnly:()=>va});var bt=require("@budibase/backend-core");var $n=require("@budibase/types"),BM=(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=Io,r();t.user.license=await $e.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 Ye.usageLimitIsExceeded($n.StaticQuotaName.USERS,$n.QuotaUsageType.STATIC)}return r()},qA=BM;var $={};w($,{requireFeature:()=>MM,requireFeatures:()=>kM});var MM=e=>async(t,r)=>{await yn(e),await r()},kM=(...e)=>async(t,r)=>{await ds(e),await r()};var Kn=require("@budibase/backend-core");var Vi=async(e,t)=>(Kn.env.DISABLE_SCIM_CALLS||await Nt.logRequest({...e.request.toJSON(),body:e.request.body}),await Kn.context.doInScimContext(async()=>{let r=await t();return await Nt.logResponse({...e.response.toJSON(),body:e.response.body}),r}));var Yi=async(e,t)=>{await ys(),await t()};var DA=require("@budibase/backend-core");var va=e=>Hi(DA.users.getById,e,!0),Ra=e=>Hi(M.get,e,!0),Vn=e=>Hi(M.get,e,!1);function Hi(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 _a=require("@budibase/backend-core");var zi=require("dd-trace");async function NA(e,t){await zi.tracer.trace("licenseAuth",async r=>{let a=e.request.headers[_a.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 us(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"),zi.tracer.setUser({id:"anonymous",tenantId:n.tenantId}),await _a.context.doInSelfHostTenantUsingCloud(n.tenantId,async()=>{await _a.context.doInLicenseContext(n,async()=>{await t()})})})}var su={};w(su,{appBackups:()=>wb,auditLogs:()=>lb,environmentVariables:()=>ab,groups:()=>YA,scim:()=>Xb,users:()=>aI});async function BA(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 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 users to add or to remove");let n,o;r&&(n=await Rs(t,r)),a&&(o=await _s(t,a)),e.body={added:n,removed:o}}async function kA(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 xs(t,{appsToAdd:r,appsToRemove:a})}async function GA(e){e.body={data:await ha()}}async function FA(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 QA(e){try{e.body=await Ut(e.params.groupId)}catch(t){e.throw(t.status,t)}}async function jA(e){let{pageSize:t=10,bookmark:r,emailSearch:a}=e.request.query,n=e.params.groupId,o={limit:t+1},s=await ja(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 WA(e){let{groupId:t,appId:r}=e.params;await Os(t,r),e.body={message:"Group app builder access updated."}}async function $A(e){let{groupId:t,appId:r}=e.params;await Ls(t,r),e.body={message:"group app builder access removed."}}var KA=P(require("@koa/router")),Ie=P(require("joi"));var Oe=require("@budibase/types"),Je=require("@budibase/backend-core"),VA=new KA.default;function FM(){return Je.auth.joiValidator.body(Ie.default.object({_id:Ie.default.string().optional(),_rev:Ie.default.string().optional(),color:Ie.default.string().required(),icon:Ie.default.string().required(),name:Ie.default.string().trim().required().max(50),role:Ie.default.string().optional(),users:Ie.default.array().optional(),apps:Ie.default.array().optional(),roles:Ie.default.object().optional(),createdAt:Ie.default.string().optional(),updatedAt:Ie.default.string().optional()}).required())}VA.post("/api/global/groups",Je.auth.adminOnly,$.requireFeature(Oe.Feature.USER_GROUPS),FM(),BA).get("/api/global/groups",$.requireFeature(Oe.Feature.USER_GROUPS),GA).delete("/api/global/groups/:groupId/:rev",$.requireFeature(Oe.Feature.USER_GROUPS),Je.auth.adminOnly,Vn("groupId"),FA).get("/api/global/groups/:groupId",$.requireFeature(Oe.Feature.USER_GROUPS),Je.auth.builderOrAdmin,QA).get("/api/global/groups/:groupId/users",$.requireFeature(Oe.Feature.USER_GROUPS),Je.auth.builderOrAdmin,jA).post("/api/global/groups/:groupId/users",Je.auth.adminOnly,$.requireFeature(Oe.Feature.USER_GROUPS),Vn("groupId"),MA).post("/api/global/groups/:groupId/apps",Je.auth.builderOrAdmin,$.requireFeature(Oe.Feature.USER_GROUPS),kA).post("/api/global/groups/:groupId/app/:appId/builder",Je.auth.builderOrAdmin,$.requireFeatures(Oe.Feature.USER_GROUPS,Oe.Feature.APP_BUILDERS),WA).delete("/api/global/groups/:groupId/app/:appId/builder",Je.auth.builderOrAdmin,$.requireFeatures(Oe.Feature.USER_GROUPS,Oe.Feature.APP_BUILDERS),$A);var YA=VA;var Xi=require("@budibase/types");var Zi=require("@budibase/backend-core");async function HA(e){e.body={encryptionKeyAvailable:ze.isEncryptionKeyAvailable()}}async function zA(e){e.body={variables:await ze.fetch()}}async function JA(e){let{name:t,production:r,development:a}=e.request.body;await ze.update(t,{production:r,development:a});let n=[Xi.AppEnvironment.PRODUCTION];r!==a&&n.push(Xi.AppEnvironment.DEVELOPMENT),await Zi.events.environmentVariable.created(t,n),e.body={message:`Environment variable "${t}" created.`}}async function XA(e){let{production:t,development:r}=e.request.body,a=e.params.varName;await ze.update(a,{production:t,development:r}),e.body={message:`Environment variable "${a}" updated.`}}async function ZA(e){let t=e.params.varName;await ze.remove(t),await Zi.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}var Bt=require("@budibase/backend-core"),tb=P(require("@koa/router")),xa=P(require("joi")),rb=new tb.default;function eb(){return Bt.auth.joiValidator.body(xa.default.object({name:xa.default.string().optional(),production:xa.default.string().required(),development:xa.default.string().required()}))}rb.get("/api/env/variables/status",Bt.auth.builderOrAdmin,HA).get("/api/env/variables",Bt.auth.builderOrAdmin,zA).post("/api/env/variables",Bt.auth.builderOrAdmin,eb(),JA).patch("/api/env/variables/:varName",Bt.auth.builderOrAdmin,eb(),XA).delete("/api/env/variables/:varName",Bt.auth.builderOrAdmin,ZA);var ab=rb;var eu=require("@budibase/backend-core");async function nb(e){let t=e.request.body,r=await At.fetch(t);await eu.events.auditLog.filtered(t),e.body=r}async function ob(e){let t=e.request.body,{stream:r}=At.download(t);await eu.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}async function sb(e){e.body={events:At.definitions()}}var ub=require("@budibase/types"),Mt=require("@budibase/backend-core"),pb=P(require("@koa/router")),Le=P(require("joi"));function ib(){return Mt.auth.joiValidator.body(Le.default.object({userIds:Le.default.array().items(Le.default.string()).optional(),appIds:Le.default.array().items(Le.default.string()).optional(),events:Le.default.array().items(Le.default.string().valid(...Object.values(ub.Event))).optional(),startDate:Le.default.string().optional().allow(""),endDate:Le.default.string().optional().allow(""),fullSearch:Le.default.string().optional().allow(""),bookmark:Le.default.number()}))}var cb=new pb.default;cb.post("/api/global/auditlogs/search",Mt.auth.adminOnly,ib(),nb).get("/api/global/auditlogs/download",Mt.auth.adminOnly,Mt.middleware.querystringToBody,ib(),ob).get("/api/global/auditlogs/definitions",Mt.auth.adminOnly,sb);var lb=cb;var tu=require("@budibase/types");var fb=require("@budibase/backend-core");async function br(e,t){await Kt.appExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}async function mb(e){let t=e.params.appId;await br(e,t);let r=e.request.body,a=e.user?._id,n=await xe.triggerAppBackup(t,tu.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 gb(e){let t=e.params.appId;await br(e,t);let r=e.params.backupId,a=e.request.body.name,n=await xe.triggerAppRestore(t,r,a,e.user?._id);n||e.throw(500,"Unable to start restore."),await fb.events.backup.appBackupRestored(n.metadata),e.body={restoredId:n?.restoreId,message:"Restore triggered - process starting."}}async function yb(e){let t=e.params.appId;await br(e,t);let r=e.params.backupId;await xe.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(tu.AppBackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await xe.fetchAppBackups(t,{paginate:!0,...r})}async function Ab(e){let t=e.params.appId;await br(e,t);let r=e.params.backupId,a=e.request.body;e.body=await xe.updateAppBackup(r,a.name)}async function bb(e){let t=e.params.appId;await br(e,t);let r=e.params.backupId,{metadata:a,stream:n}=await xe.getBackupDownloadStream(r);e.attachment(`backup-${a.timestamp}.tar.gz`),e.body=n}var Ib=P(require("@koa/router")),kt=P(require("joi")),Yn=require("@budibase/types"),It=require("@budibase/backend-core"),Sb=new Ib.default;function $M(){return It.auth.joiValidator.body(kt.default.object({trigger:kt.default.string().valid(...Object.values(Yn.AppBackupTrigger)),type:kt.default.string().valid(...Object.values(Yn.AppBackupType)),startDate:kt.default.date(),endDate:kt.default.date(),page:kt.default.string()}))}Sb.post("/api/apps/:appId/backups",It.auth.builderOrAdmin,mb).post("/api/apps/:appId/backups/search",It.auth.builderOrAdmin,$M(),hb).get("/api/apps/:appId/backups/:backupId/file",It.auth.builderOrAdmin,bb).patch("/api/apps/:appId/backups/:backupId",It.auth.builderOrAdmin,Ab).delete("/api/apps/:appId/backups/:backupId",It.auth.builderOrAdmin,yb).post("/api/apps/:appId/backups/:backupId/import",It.auth.builderOrAdmin,gb);var wb=Sb;var Jb=P(require("@koa/router"));var Hn=require("scim-patch");var Eb=require("@budibase/backend-core");function Tb(e,t){let r=e.request.query[t];if(r!==void 0)return+r}var vb=async e=>{let t=Tb(e,"pageSize")??20,r=Tb(e,"startIndex"),a;e.request.query.filter&&(a=Y.user.userFilters(e.request.query.filter));let n=await ge.get({pageSize:t,skip:r,filters:a});e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:n.total,Resources:n.users.map(Y.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},Rb=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await ge.find(t);e.body=Y.user.toScimUserResponse(r)},_b=async e=>{let t=Y.user.fromScimUser(e.request.body);try{let r=await ge.create(t);e.body=Y.user.toScimUserResponse(r)}catch(r){throw r instanceof Eb.EmailUnavailableError&&e.throw(409,"Email already in use"),r}};function KM(e){let t=e.Operations.find(r=>(r.op==="Replace"||r.op==="replace")&&r.path==="active");return t?t.value===!1||t.value?.toLowerCase?.()==="false":!1}var xb=async e=>{let t=await ge.find(e.params.id);t||e.throw(404);let r=Y.user.toScimUserResponse(t),a=e.request.body;try{(0,Hn.patchBodyValidation)(a)}catch{}if(KM(a))return ru(e);let n;try{n=(0,Hn.scimPatch)(r,a.Operations)}catch{}n||e.throw(500);let o=Y.user.fromScimUser(n);await ge.update(o,{allowChangingEmail:!0}),e.body=Y.user.toScimUserResponse(o)},ru=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await ge.remove(t),e.status=204};var jb=P(Qb()),Wb=require("@budibase/shared-core"),zn=require("scim-patch");var Jn=require("scim2-parse-filter");function $b(e,t){for(let r of t.split(","))delete e[r]}var Kb=async e=>{let r=(await j.fetch()).filter(o=>o.scimInfo?.isSync).map(Y.group.toScimGroupResponse),{filter:a,excludedAttributes:n}=e.request.query;if(a){let o=(0,Jn.filter)((0,Jn.parse)(a));r=r.filter(o)}n&&r.forEach(o=>{$b(o,n)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},Vb=async e=>{let t=Y.group.fromScimGroup(e.request.body),r=await Ar.create(t);e.body=Y.group.toScimGroupResponse(r)},Yb=async e=>{let{id:t}=e.params,r=await j.get(t),a=Y.group.toScimGroupResponse(r),{excludedAttributes:n}=e.request.query;n&&$b(a,n),e.body=a},Hb=async e=>{let{id:t}=e.params,r=await j.get(t);await j.remove(t,r._rev),e.status=204},zb=async e=>{let{id:t}=e.params,r=await j.get(t),a=Y.group.toScimGroupResponse(r),n=e.request.body;try{(0,zn.patchBodyValidation)(n)}catch{e.throw(400)}let{true:o,false:s}=(0,jb.default)(n.Operations,i=>i.path==="members");if(s?.length){let i=(0,zn.scimPatch)(a,s);i||e.throw(500);let p={...Y.group.fromScimGroup(i),_rev:r._rev};await j.save(p)}if(o?.length){let i=[],p=[];for(let{op:f,value:m}of o)switch(f){case"add":case"Add":for(let y of m)i.push(await ge.find(y.value));break;case"remove":case"Remove":for(let y of m)p.push(await ge.find(y.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:Wb.utils.unreachable(f)}i.length&&await j.addUsers(t,i.map(f=>f._id)),p.length&&await j.removeUsers(t,p.map(f=>f._id))}e.body=Y.group.toScimGroupResponse(await j.get(t))};var Oa=require("@budibase/types"),Se=new Jb.default({prefix:"/api/global/scim/v2"});Se.use(Yi);Se.use(Vi);Se.get("/users",vb);Se.get("/users/:id",va("id"),Rb);Se.post("/users",_b);Se.patch("/users/:id",va("id"),xb);Se.delete("/users/:id",va("id"),ru);Se.get("/groups",Kb);Se.post("/groups",$.requireFeature(Oa.Feature.USER_GROUPS),Vb);Se.get("/groups/:id",$.requireFeature(Oa.Feature.USER_GROUPS),Ra("id"),Yb);Se.delete("/groups/:id",$.requireFeature(Oa.Feature.USER_GROUPS),Ra("id"),Hb);Se.patch("/groups/:id",$.requireFeature(Oa.Feature.USER_GROUPS),Ra("id"),zb);var Xb=Se;var tI=P(require("@koa/router"));var au=require("@budibase/backend-core");async function Zb(e){let{userId:t,appId:r}=e.params,a=await nt.db.getUser(t);if(au.users.isGlobalBuilder(a)){e.body={message:"User already admin - no permissions updated."};return}await nt.addAppBuilder(a,r),e.body={message:`User "${a.email}" app builder access updated.`}}async function eI(e){let{userId:t,appId:r}=e.params,a=await nt.db.getUser(t);if(au.users.isGlobalBuilder(a)){e.body={message:"User already admin - no permissions removed."};return}await nt.removeAppBuilder(a,r),e.body={message:`User "${a.email}" app builder access removed.`}}var nu=require("@budibase/types"),ou=require("@budibase/backend-core"),rI=new tI.default;rI.post("/api/global/users/:userId/app/:appId/builder",ou.auth.builderOrAdmin,$.requireFeatures(nu.Feature.APP_BUILDERS),Zb).delete("/api/global/users/:userId/app/:appId/builder",ou.auth.builderOrAdmin,$.requireFeatures(nu.Feature.APP_BUILDERS),eI);var aI=rI;var Y={};w(Y,{group:()=>uu,user:()=>iu});var iu={};w(iu,{fromScimUser:()=>Sk,toScimUserResponse:()=>Ak,userFilters:()=>wk});var Xn=require("@budibase/types"),nI=require("scim2-parse-filter"),oI=require("@budibase/backend-core"),sI=require("@budibase/shared-core"),{unreachable:hk}=sI.utils,Ak=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===Xn.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},bk=e=>!!e?.id;function Ik(e){if(oI.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}var Sk=e=>{let t=bk(e)?e:void 0,r=Ik(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:hk(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?Xn.UserStatus.ACTIVE:Xn.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},wk=e=>{let t={equal:{}},r=(0,nI.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 uu={};w(uu,{fromScimGroup:()=>vk,toScimGroupResponse:()=>Tk});var Tk=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}))}),Ek=e=>!!e?.id,vk=e=>{let t=Ek(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 Pu={};w(Pu,{LLM:()=>Xe,LLMRequest:()=>K,TableGeneration:()=>Cu,agentHistoryTitleSystemPrompt:()=>Nk,agentSystemPrompt:()=>Dk,aiColumnSchemas:()=>Ou,aiTableResponseToTableSchema:()=>vu,appendAIColumns:()=>Ru,classifyText:()=>lu,cleanData:()=>du,extractFileData:()=>Ck,generateAIColumns:()=>Tu,generateCode:()=>qk,generateCronExpression:()=>fu,generateData:()=>Eu,generateJs:()=>hu,generateSQL:()=>Uk,generateTables:()=>wu,generationStructure:()=>xu,getLLM:()=>Pa,getLLMConfig:()=>Su,getLLMOrThrow:()=>yI,normalizeContentType:()=>pu,parseResponseFormat:()=>eo,sanitiseToolName:()=>Rk,searchWeb:()=>yu,sentimentAnalysis:()=>gu,summarizeText:()=>Zn,tableDataStructuredOutput:()=>Lu,translate:()=>mu});var La=require("@budibase/types");function Rk(e){if(e.length>64)throw new Error("Tool name must be under 64 characters long");return e.replace(/[^a-zA-Z0-9_-]/g,"_")}function pu(e){return e?e.includes("/")?e:{[La.SupportedFileType.PDF]:"application/pdf",[La.SupportedFileType.JPG]:"image/jpeg",[La.SupportedFileType.JPEG]:"image/jpeg",[La.SupportedFileType.PNG]:"image/png"}[e.toLowerCase()]||"application/octet-stream":"application/octet-stream"}var oo=require("@budibase/types");var Ze=require("@budibase/backend-core"),dI=require("@budibase/types");var to=P(require("openai"));var St=require("@budibase/types");var iI=require("@budibase/shared-core");var wt=P(require("dd-trace"));function cu(e,t){return t.map(r=>e[r]).join(" ")}var Xe=class{constructor({model:t,apiKey:r,maxTokens:a}){this._model=t,this._apiKey=r,this._maxTokens=a??parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"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 K().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(Zn(t)))}async generateCronExpression(t){return wt.default.trace("generateCronExpression",()=>this.prompt(fu(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 Zn(cu(r,o));case St.AIOperationEnum.CLEAN_DATA:return du(r[n]);case St.AIOperationEnum.TRANSLATE:return mu(r[n],s);case St.AIOperationEnum.CATEGORISE_TEXT:if(!i)throw Error("No categories provided for categorise text operation. Please provide categories.");return lu(cu(r,o),i.split(","));case St.AIOperationEnum.SENTIMENT_ANALYSIS:return gu(r[n]);case St.AIOperationEnum.PROMPT:return p;case St.AIOperationEnum.SEARCH_WEB:return yu(cu(r,o));default:throw iI.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 pI=require("@budibase/types"),Au=require("openai/helpers/zod");function eo(e){if(e)return e==="text"?{type:"text"}:e==="json"?{type:"json_object"}:e}function uI(e){if(!e)return 0;let t=e.prompt_tokens;return e.completion_tokens*3+t}var Ce=class extends Xe{constructor(r){super(r);this.client=this.getClient(r)}getClient(r){if(!r.apiKey)throw new Error("No OpenAI API key found");return new to.default({apiKey:r.apiKey})}async uploadFile(r,a,n){let o=pu(n);if(pI.ImageContentTypes.includes(o.toLowerCase())){let p;if(Buffer.isBuffer(r))p=r;else{let m=[];for await(let y of r)m.push(y);p=Buffer.concat(m)}let f=p.toString("base64");return`data:${o};base64,${f}`}let s=await(0,to.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:eo(r.format)};r.tools&&r.tools.length>0&&(a.tool_choice="auto",a.tools=r.tools.map(Au.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 f=JSON.parse(i.function.arguments);s.push(p.handler(f).then(m=>({role:"tool",tool_call_id:i.id,content:m})).catch(m=>(console.error(`[OPENAI TOOL ERROR] Tool ${i.function.name} failed in OpenAI handler:`,m),{role:"tool",tool_call_id:i.id,content:`Error: ${m.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:uI(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:eo(r.format),stream:!0};r.tools&&r.tools.length>0&&(a.tool_choice="auto",a.tools=r.tools.map(Au.zodFunction));try{let n=await this.client.chat.completions.create(a),o=null,s="",i=null;for await(let f of n){let m=f.choices[0]?.delta;if(m){if(m.content&&(s+=m.content,yield{type:"content",content:m.content}),m.tool_calls&&m.tool_calls.length>0){let y=m.tool_calls[0];y.id?(o={id:y.id,name:y.function?.name||"",arguments:y.function?.arguments||""},yield{type:"tool_call_start",toolCall:{id:o.id,name:o.name,arguments:o.arguments}}):o&&y.function?.arguments&&(o.arguments+=y.function.arguments,yield{type:"tool_call_start",toolCall:{id:o.id,name:o.name,arguments:o.arguments}})}f.usage&&(i=f.usage)}}let p=i?uI(i):0;if(o){r.addMessage({role:"assistant",content:"",tool_calls:[{id:o.id,type:"function",function:{name:o.name,arguments:o.arguments}}]});let f=r.findTool(o.name);if(f)try{let m=JSON.parse(o.arguments),y=await f.handler(m);yield{type:"tool_call_result",toolResult:{id:o.id,result:y}},r.addMessage({role:"tool",tool_call_id:o.id,content:y}),yield*this.chatCompletionStream(r);return}catch(m){yield{type:"tool_call_result",toolResult:{id:o.id,result:`Error: ${m.message}`,error:m.message}},r.addMessage({role:"tool",tool_call_id:o.id,content:`Error: ${m.message}`}),yield*this.chatCompletionStream(r);return}else{let m=`Tool '${o.name}' not found`;yield{type:"tool_call_result",toolResult:{id:o.id,result:m,error:m}},r.addMessage({role:"tool",tool_call_id:o.id,content:m}),yield*this.chatCompletionStream(r);return}}s&&r.addMessage({role:"assistant",content:s}),yield{type:"done",messages:r.messages,tokensUsed:p}}catch(n){yield{type:"error",content:n.message}}}};var ee=require("@budibase/backend-core"),cI=require("@budibase/types");var bu=require("dd-trace"),ro=class extends Xe{async prompt(t){let r=await super.prompt(t);return r.tokensUsed&&await Tn(r.tokensUsed),r}async chat(t){let r=await super.chat(t);return r.tokensUsed&&await Tn(r.tokensUsed),r}async uploadFile(t,r,a){return ee.env.SELF_HOSTED?this.uploadFileSelfHost(t,r,a):this.uploadFileCloud(t,r,a)}async uploadFileCloud(t,r,a){return new Ce({apiKey:ee.env.OPENAI_API_KEY,model:this.model,maxTokens:this.maxTokens}).uploadFile(t,r,a)}async uploadFileSelfHost(t,r,a){let n;if(Buffer.isBuffer(t))n=t;else{let p=[];for await(let f of t)p.push(f);n=Buffer.concat(p)}let o=n.toString("base64");if(a&&cI.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 mn();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 bu.tracer.trace("chatCompletionCloud",async()=>await new Ce({apiKey:ee.env.OPENAI_API_KEY,model:this.model,maxTokens:this.maxTokens}).chatCompletion(t))}async chatCompletionSelfHost(t){return await bu.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 mn();if(!o)throw new Error("No license key found");this._apiKey=o,r.addTags({licenseKey:this._apiKey})}let a={messages:t.messages,format:t.format,useTools:t.tools.length>0},n=await fetch(`${ee.env.BUDICLOUD_URL}/api/ai/chat`,{method:"POST",headers:{"Content-Type":"application/json",[ee.constants.Header.LICENSE_KEY]:this._apiKey},body:JSON.stringify(a)});if(!n.ok)throw await ee.HTTPError.fromResponse(n);return await n.json()})}async*chatCompletionStream(t){ee.env.SELF_HOSTED?yield*this.chatCompletionStreamSelfHost(t):yield*this.chatCompletionStreamCloud(t)}async*chatCompletionStreamCloud(t){yield*new Ce({apiKey:ee.env.OPENAI_API_KEY,model:this.model,maxTokens:this.maxTokens}).chatCompletionStream(t)}async*chatCompletionStreamSelfHost(t){try{let r=await this.chatCompletionSelfHost(t);if(r.messages.length>0){let a=r.messages[r.messages.length-1];a.content&&(yield{type:"content",content:a.content})}yield{type:"done",messages:r.messages,tokensUsed:r.tokensUsed}}catch(r){yield{type:"error",content:r.message}}}};var Ca=require("dd-trace");var Iu=P(require("@anthropic-ai/sdk"));function _k(e){if(!e)return 0;let t=e.input_tokens;return e.output_tokens*3+t}var ao=class extends Xe{constructor(r){super(r);this.client=new Iu.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:_k(a.usage)}}catch(a){throw a instanceof Iu.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 fI=require("zod"),mI=require("openai/helpers/zod");var lI=require("openai"),no=class extends Ce{getClient(t){if(!t.apiKey)throw new Error("No Azure OpenAI API key found");if(!t.model)throw new Error("No Azure OpenAI model specified");return new lI.AzureOpenAI({apiKey:t.apiKey,apiVersion:"2024-10-01-preview",baseURL:t.baseUrl})}};var gI="gpt-4o-mini",xk={OpenAI:Ce,TogetherAI:Ce,AzureOpenAI:no,Custom:Ce,Anthropic:ao,BudibaseAI:ro};async function Ok(){return await Ca.tracer.trace("getAIConfig",async e=>{let t={type:dI.ConfigType.AI,config:{}};if(!Ze.context.isSelfHostUsingCloud()){let a=await Ze.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||gI,apiKey:r.apiKey,baseUrl:r.baseUrl}})}async function Lk(){return Ca.tracer.trace("getSelfHostOpenAIKeyConfig",e=>{if(!Ze.env.SELF_HOSTED){e.addTags({enabled:!1,reason:"not self host"});return}if(!Ze.env.OPENAI_API_KEY){e.addTags({enabled:!1,reason:"no OPENAI_API_KEY"});return}return e.addTags({enabled:!0}),{provider:"OpenAI",model:gI,apiKey:Ze.env.OPENAI_API_KEY}})}async function Su(){return Ca.tracer.trace("getLLMConfig",async()=>await Ok()||await Lk())}async function Pa(e){return await Ca.tracer.trace("getLLM",async t=>{let{model:r,maxTokens:a}=e||{},n=await Su();if(!n){t.addTags({enabled:!1,reason:"no config found"});return}r&&(n.model=r),a&&(n.maxTokens=a);let o=xk[n.provider];if(!o){t.addTags({enabled:!1,reason:"no provider found",provider:n.provider});return}return new o(n)})}async function yI(){let e=await Pa();if(!e)throw new Ze.HTTPError("No available LLM configurations",500);return e}var K=class e{constructor(){this.messages=[];this.tools=[]}addTool(t){return this.tools.push(t),this}addTools(t){return this.tools.push(...t),this}findTool(t){return this.tools.find(r=>r.name===t)}withFormat(t){return t instanceof fI.z.ZodType?this.format=(0,mI.zodResponseFormat)(t,"key"):this.format=t,this}addMessage(t){return this.messages.push(t),this}addMessages(t){return this.messages.push(...t),this}addUserMessage(t){return this.messages.push({role:"user",content:t}),this}addSystemMessage(t){return this.messages.push({role:"system",content:t}),this}static fromRequest(t){let r=new e;return t.messages&&r.addMessages(t.messages),t.format&&r.withFormat(t.format),r}};var it=require("zod");function Zn(e,t){let r=`Summarize this text:
|
|
37
|
+
`;function Vr(e){return vo.default.verify(e,wS,{algorithms:["RS256"]})}function TS(e,t){return vo.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}var za={};w(za,{getFeatures:()=>Ro});var l=require("@budibase/types");var ES={[l.PlanType.FREE]:[...he.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]:[...he.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 Ro(e,t){let r=[];function a(n){let o=n[t];if(!o)throw new Error(`Features do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case l.Hosting.SELF:r=a(ES);break;case l.Hosting.CLOUD:r=a(vS);break}return r}var Ja={};w(Ja,{UNLIMITED:()=>d,getQuotas:()=>_o});var k=require("@budibase/types");var c=et,Tp=he,d=-1,Hr=e=>e*1e6,RS={[k.PlanType.FREE]:{...Tp.CLOUD_FREE_LICENSE.quotas},[k.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)}},[k.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...c.queries(d),...c.automations(5e3),...c.budibaseAICredits(Hr(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)}},[k.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...c.queries(d),...c.automations(5e3),...c.budibaseAICredits(Hr(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)}},[k.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)}},[k.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)}},[k.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)}},[k.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(Hr(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)}},[k.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(Hr(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)}},[k.PlanType.ENTERPRISE]:{usage:{monthly:{...c.queries(d),...c.automations(d),...c.budibaseAICredits(Hr(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)}}},_S={[k.PlanType.FREE]:{...Tp.SELF_FREE_LICENSE.quotas},[k.PlanType.PREMIUM]:void 0,[k.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)}},[k.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)}},[k.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)}},[k.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)}},[k.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)}},[k.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)}},[k.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)}},[k.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 _o(e,t){let r;function a(n){let o=n[t];if(!o)throw new Error(`Quotas do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case k.Hosting.SELF:r=a(_S);break;case k.Hosting.CLOUD:r=a(RS);break}return JSON.parse(JSON.stringify(r))}var Vt={};w(Vt,{appExists:()=>xS,encoding:()=>Kt});var Ep=require("@budibase/backend-core");async function xS(e){return(await Ep.db.getAllApps({all:!0,idsOnly:!0})).includes(e)}var Kt={};w(Kt,{base64ToObject:()=>LS,objectToBase64:()=>OS});function OS(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 uf=require("@budibase/types"),sr=require("@budibase/backend-core"),pf=P(Gl()),cf=P(ts());async function ox(e){await Ee.save({offlineLicenseToken:e}),await xt()}async function sx(){await Ee.save({offlineLicenseToken:void 0}),await xt()}async function lf(){return(await Ee.get()).offlineLicenseToken}async function rs(){let t=(await sr.installation.getInstall()).installId,r=sr.context.getTenantId(),a=await sr.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:a}}async function ix(){let e=await rs();return Kt.objectToBase64(e)}function ux(e){return Kt.base64ToObject(e)}function df(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 ff(e){let t=await rs();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}function mf(e){let t=e.plan.type,r=uf.Hosting.SELF,a=Ro(r,t),n=_o(r,t);return e.features=(0,pf.default)(e.features,a),e.quotas=(0,cf.default)(e.quotas,n),e}async function as(){try{let e=await lf();if(e){let t=await Vr(e);return df(t),await ff(t),mf(t)}}catch(e){console.error("Error retrieving offline license",e)}}var ma={};w(ma,{deleteDevLicense:()=>fx,getOfflineLicense:()=>lx,writeDevLicenseToDisk:()=>dx});var gf=require("@budibase/backend-core"),os=require("path"),yf=require("os"),Ot=P(require("fs"));var px=gf.env.isTest()?".budibase-test":".budibase",ns=(0,os.join)((0,yf.tmpdir)(),px),cx="dev_license.txt",fa=(0,os.join)(ns,cx);if(!Ot.default.existsSync(ns))try{Ot.default.mkdirSync(ns)}catch{}function lx(){try{if(Ot.default.existsSync(fa)){let e=Ot.default.readFileSync(fa,{encoding:"utf-8"});return Vr(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}function dx(e){console.log(`Writing license to: ${fa}`),Ot.default.writeFileSync(fa,e,{encoding:"utf-8"})}function fx(){Ot.default.rmSync(fa,{force:!0})}var hf=require("dd-trace"),is=async()=>await hf.tracer.trace("getLicense",async e=>{if(ss.env.OFFLINE_MODE)return e.addTags({offline:!0}),as();let t=await $t();return t||(e.addTags({offlineFallback:!0}),t=ma.getOfflineLicense()),t}),us=e=>To(e),ps=()=>ss.env.SELF_HOSTED?he.SELF_FREE_LICENSE:he.CLOUD_FREE_LICENSE;var ls={};w(ls,{activateLicenseKey:()=>mx,deleteLicenseKey:()=>gx,getLicenseKey:()=>mn});var cs=P(require("dd-trace"));async function mx(e){await Eo(e),await Ee.save({licenseKey:e}),await xt()}async function mn(){return await cs.default.trace("getLicenseKey",async e=>{let t=await Ee.get();return e.addTags({licenseKey:t.licenseKey}),t.licenseKey})}async function gx(){return await cs.default.trace("deleteLicenseKey",async()=>{await Ee.save({licenseKey:void 0}),await xt()})}var Lt=require("@budibase/backend-core"),gn=P(require("dd-trace")),Af=3600,xt=async()=>{await Sf(),await If()},bf=async(e,t)=>{let{populateLicense:r=is,populateFreeLicense:a=ps}=t||{};return await gn.default.trace("getCachedLicense",async n=>{let o=Lt.context.getLicense();if(o)return n.addTags({foundInContext:!0,features:o.features,plan:o.plan,quotas:o.quotas}),o;let s=Lt.tenancy.getTenantId(),i=await io(),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 gn.default.trace("populateLicense",async()=>await r(s)),n.addTags({populatedLicense:!!p}),p||(p=gn.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:Af}),await i.store(s,p,Af),p)})};Lt.env.isJest()&&(bf=jest.fn());var If=bf,Sf=async()=>{let e=Lt.tenancy.getTenantId();await(await io()).delete(e)};async function pe(e,t){Array.isArray(e)||(e=[e]),t||(t=await qe.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}async function yn(e,t){if(!await pe(e,t))throw new tt.FeatureDisabledError(`${e} is not currently enabled`,e)}async function ds(e,t){if(!await pe(e,t)){let r=e.join(", ");throw new tt.FeatureDisabledError(`${r} are not currently enabled`,r)}}function de(e){return async(...t)=>(await yn(ue.Feature.APP_BACKUPS),e(...t))}async function fs(){return pe(ue.Feature.APP_BACKUPS)}async function ms(){return pe(ue.Feature.BRANDING)}async function wf(){return pe(ue.Feature.ENFORCEABLE_SSO)}async function hx(){return pe(ue.Feature.SYNC_AUTOMATIONS)}async function Ax(){return pe(ue.Feature.TRIGGER_AUTOMATION_RUN)}async function Ct(){return pe(ue.Feature.APP_BUILDERS)}async function hn(){return pe(ue.Feature.AUDIT_LOGS)}async function gs(){return pe(ue.Feature.USER_GROUPS)}function bx(){return pe(ue.Feature.PWA)}async function rt(){return pe(ue.Feature.EXPANDED_PUBLIC_API)}async function Ix(e){if(tt.env.ENABLE_SSO_MAINTENANCE_MODE||!await wf())return!1;let r;return e?.config?r=e.config:r=await tt.configs.getSettingsConfig(),!!r.isSSOEnforced}var ys=async()=>{let e=ue.Feature.SCIM,t=await pe(e),r=await tt.configs.getSCIMConfig();if(!t||!r?.enabled)throw new tt.FeatureDisabledError(`${e} is not currently enabled`,e);return!0};async function Sx(){return pe(ue.Feature.VIEW_PERMISSIONS)}async function wx(){return pe(ue.Feature.VIEW_READONLY_COLUMNS)}var Tx={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 Ex(e){return await ms()?{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}:Tx}var As={};w(As,{enrichAIConfig:()=>hs});var Tf=require("@budibase/backend-core"),vx="budibase_ai";async function hs(e){if(Tf.env.SELF_HOSTED)return e;for(let t of Object.values(e.config))if(t.provider==="BudibaseAI")return e;return e.config[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 Ye={};w(Ye,{addAction:()=>Lx,addApp:()=>Cx,addAutomation:()=>Bx,addGroup:()=>Is,addPlugin:()=>ws,addRow:()=>Ux,addRows:()=>Dx,addUsers:()=>Sn,bustCache:()=>mo,decrement:()=>at,decrementMany:()=>ga,getCurrentUsageValues:()=>Ju,getLicensedQuota:()=>vf,getQuotaUsage:()=>Tt,increment:()=>be,incrementBudibaseAICredits:()=>Tn,incrementMany:()=>Ut,removeApp:()=>Px,removeGroup:()=>Ss,removePlugin:()=>Ts,removeRow:()=>qx,removeRows:()=>Nx,removeUsers:()=>cr,set:()=>bs,setAllUsage:()=>yo,setAppUsageValue:()=>go,setUsage:()=>Yu,setUsagePerApp:()=>Hu,updatePluginCount:()=>Es,updateUsage:()=>ir,usageLimitIsExceeded:()=>Ox,utils:()=>_r});var bn=require("@budibase/types");var z=require("@budibase/types");var Be=require("@budibase/backend-core");var Pt=require("dd-trace"),be=async(e,t,r)=>await Pt.tracer.trace("quotas.increment",async a=>(a.addTags({name:e,type:t}),await Ef({change:1,name:e,type:t,opts:r}))),Ut=e=>Pt.tracer.trace("quotas.incrementMany",async()=>Ef(e)),Ef=async e=>await Pt.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 Pt.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]}),at=(e,t,r={})=>ir({usageChange:-1,name:e,type:t,opts:r}),ga=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})))},bs=async(e,t,r)=>Qe.setUsage(r,e,t),Rx=(e,t,r)=>{if(e==z.QuotaUsageType.STATIC){let a=r.usageQuota.triggers;return a?a[t]||{}:{}}else{let a=Qe.utils.getCurrentMonthString(),n=r.monthly[a].triggers;return n?n[t]||{}:{}}},_x=async(e,t,r,a)=>{try{await Be.locks.doWithLock({type:z.LockType.TRY_ONCE,name:z.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let n={percentage:r,name:t.name};a&&(n.resetDate=a),await ft.triggerQuota(n)})}catch(n){Be.logging.logAlert("Error triggering quota",n)}},xx=async(e,t,r,a)=>{let n=await Tt(),o=e===z.QuotaUsageType.MONTHLY?n.quotaReset:void 0,s=await Rx(e,t,n),i=a.triggers,p=r/a.value*100;p>100&&(p=100);for(let[f,m]of i.entries())if(p>=m&&a.value!==et.UNLIMITED){if(!s[m]){s[m]=new Date().toISOString();let g=i[f+1]||100;(!(p>=g)||p===m)&&await _x(t,a,p,o)}}else s[m]=void 0;return s},ir=async e=>{await Pt.tracer.trace("quotas.updateUsage",async t=>{let r=Be.tenancy.getTenantId(),a=Array.isArray(e)?e:[e];t.addTags({numActions:a.length,tenantId:r});let n,o,s=[],i={},p={},f={},m={};for(let g of a)await Pt.tracer.trace("quotas.updateUsage.action",async I=>{I.addTags({actionName:g.name,actionType:g.type,actionUsageChange:g.usageChange});try{n=Be.context.getAppId()}catch{}if(z.APP_QUOTA_NAMES.includes(g.name)&&!n)throw new Error("App context required for quota update");try{o=await vf(z.QuotaType.USAGE,g.name,g.type),s.push(o);let{total:_,app:R,breakdown:v}=await Qe.getCurrentUsageValues(g.type,g.name,g.opts?.id);_+=g.usageChange,R!=null&&(R+=g.usageChange),v!=null&&(v+=g.usageChange);let U={};if(g.opts?.dryRun||(U=await xx(g.type,g.name,_,o),m={...m,[g.name]:U}),o.value!==et.UNLIMITED&&_>o.value&&g.usageChange>0)throw new Be.UsageLimitError(`Licensed ${o.name} of ${o.value} has been exceeded`,o.name);if(_=Math.max(0,_),R&&(R=Math.max(0,R)),v&&(v=Math.max(0,v),f={...f,[g.name]:v}),!g.opts?.dryRun){let Pe=g.opts?.valueFn;Pe&&(_=await Pe(),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 y=a.filter(g=>!g.opts?.dryRun).map(g=>({name:g.name,type:g.type,values:{total:i[g.name],app:p[g.name],breakdown:f[g.name],triggers:m[g.name]},opts:{...g.opts,tenantId:r}}));y.length>0&&await Qe.setAllUsage(y)})},vf=async(e,t,r)=>{let a=await qe.getCachedLicense();if(!a){let n=Be.tenancy.getTenantId();throw new Error("License not found for tenant id "+n)}if(r&&(0,z.isStaticQuota)(e,r,t))return a.quotas[e][r][t];if(r&&(0,z.isMonthlyQuota)(e,r,t))return a.quotas[e][r][t];if((0,z.isConstantQuota)(e,t))return a.quotas[e][t];throw new Error("Invalid quota type")},Ox=async(e,t)=>{try{return await ir({usageChange:1,name:e,type:t,opts:{dryRun:!0}}),!1}catch(r){if(r.code===z.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw r}};var Lx=async e=>be(bn.MonthlyQuotaName.ACTIONS,bn.QuotaUsageType.MONTHLY,{fn:e});var ur=require("@budibase/types"),Rf=require("@budibase/backend-core"),_f=async()=>{let e=await Rf.db.getAllApps({dev:!0});return e?e.length:0},Cx=async(e,{appId:t}={})=>be(ur.StaticQuotaName.APPS,ur.QuotaUsageType.STATIC,{fn:e,valueFn:_f,id:t}),Px=async({appId:e}={})=>at(ur.StaticQuotaName.APPS,ur.QuotaUsageType.STATIC,{valueFn:_f,id:e});var Ke=require("@budibase/types"),Ux=async(e,{tableId:t}={})=>be(Ke.StaticQuotaName.ROWS,Ke.QuotaUsageType.STATIC,{fn:e,id:t}),qx=async({tableId:e}={})=>at(Ke.StaticQuotaName.ROWS,Ke.QuotaUsageType.STATIC,{id:e}),Dx=async(e,t,{tableId:r}={})=>Ut({change:e,name:Ke.StaticQuotaName.ROWS,type:Ke.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),Nx=async(e,{tableId:t}={})=>ga({change:e,name:Ke.StaticQuotaName.ROWS,type:Ke.QuotaUsageType.STATIC,opts:{id:t}});var In=require("@budibase/types"),Bx=async(e,{automationId:t}={})=>be(In.MonthlyQuotaName.AUTOMATIONS,In.QuotaUsageType.MONTHLY,{fn:e,id:t});var pr=require("@budibase/types"),Is=async e=>be(pr.StaticQuotaName.USER_GROUPS,pr.QuotaUsageType.STATIC,{fn:e}),Ss=async()=>at(pr.StaticQuotaName.USER_GROUPS,pr.QuotaUsageType.STATIC);var ht=require("@budibase/types"),ws=async e=>be(ht.StaticQuotaName.PLUGINS,ht.QuotaUsageType.STATIC,{fn:e}),Ts=async()=>at(ht.StaticQuotaName.PLUGINS,ht.QuotaUsageType.STATIC),Es=async e=>bs(ht.StaticQuotaName.PLUGINS,ht.QuotaUsageType.STATIC,e);var Ve=require("@budibase/types"),ya=require("@budibase/backend-core");var Sn=async(e,t,r)=>{let a=[{change:e,name:Ve.StaticQuotaName.USERS,type:Ve.QuotaUsageType.STATIC,opts:{fn:r,valueFn:ya.users.getUserCount}}];t>0&&a.push({change:t,name:Ve.StaticQuotaName.CREATORS,type:Ve.QuotaUsageType.STATIC,opts:{valueFn:ya.users.getCreatorCount}});let n=await Ut(a);return await $t(),n},cr=async(e,t)=>{let r=[{change:e,name:Ve.StaticQuotaName.USERS,type:Ve.QuotaUsageType.STATIC,opts:{valueFn:ya.users.getUserCount}}];t>0&&r.push({change:t,name:Ve.StaticQuotaName.CREATORS,type:Ve.QuotaUsageType.STATIC,opts:{valueFn:ya.users.getCreatorCount}}),await ga(r),await $t()};var wn=require("@budibase/types"),Tn=async e=>Ut({change:e,name:wn.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:wn.QuotaUsageType.MONTHLY});var nt={};w(nt,{addAppBuilder:()=>Qx,db:()=>He,removeAppBuilder:()=>jx});var Aa=require("@budibase/backend-core");var j={};w(j,{addAppBuilder:()=>Os,addUsers:()=>Rs,adjustGroupCreatorsQuotas:()=>Fx,cleanupApp:()=>Gx,enrichUserRolesFromGroups:()=>kx,fetch:()=>ha,get:()=>qt,getBulk:()=>qf,getGroupBuilderAppIds:()=>Uf,getGroupRoleId:()=>Mx,remove:()=>vs,removeAppBuilder:()=>Ls,removeUsers:()=>_s,save:()=>lr,updateGroupApps:()=>xs});var x=require("@budibase/backend-core");var xf=require("@budibase/backend-core"),En=class extends xf.HTTPError{constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function Cf(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,f]=Object.entries(i)[0];s[p]={roleId:p,roleNum:f}});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 Pf(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await M.getBulk(e,{enriched:!1}),t}async function Uf(e,t){if(!e.userGroups)return[];let r=await Pf(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 Mx(e,t,r){if(!e.userGroups)return null;let a=await Pf(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 Cf(a,t))}async function kx(e){if(!e||!e.userGroups)return e;let t=await qf(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 Cf(t,n);o&&(e.roles[n]=o)});let a=await Uf(e,{groups:t});if(a.length&&!e.builder?.global){let n=e.builder?.apps||[];e.builder={apps:n.concat(a)}}return e}async function ha(){return await M.fetch()}async function qt(e){return await M.get(e)}async function qf(e,t={enriched:!0}){return await M.getBulk(e,t)}async function Of(e){if(await M.getByName(e))throw new En(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 Of(e.name),t.push(x.events.group.created(e));else{let o=await M.get(e._id);if(o.name!==e.name&&await Of(e.name),t.push(x.events.group.updated(e)),JSON.stringify(o.roles)!==JSON.stringify(e.roles)){let s=o.users?.length||0,i=0;s>0&&(i=await Lf(o)),Object.values(e.roles).includes("CREATOR")?a=s-i:a=-s,t.push(x.events.group.permissionsEdited(e))}}await Promise.all(t);let n=()=>M.save(e);if(r)return await Is(n);{let o=await n();if(a>0)await Sn(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),f=(await Promise.all(i.map(I=>s.get(I._id)))).map(I=>({...I,userGroups:I.userGroups.filter(O=>O!==e)})),y=(await x.userUtils.creatorsInList(f)).filter(I=>I).length,g=i.length-y;g&&(n=()=>cr(0,g))}let o=await M.destroy(e,t);return await x.events.group.deleted(r),await Ss(),await n(),o}async function Rs(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 f=(await x.userUtils.creatorsInList(n)).filter(y=>y).length,m=n.length-f;m&&await Sn(0,m)}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 _s(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(m=>m).length,f=n.length-p;f&&await cr(0,f)}let s=[];for(let i of t)s.push(x.cache.user.invalidateUser(i));return await Promise.all(s),n.length&&await x.events.group.usersDeleted(n.length,r),n}async function xs(e,t){let r=await qt(e);if(r.roles||(r.roles={}),t.appsToAdd)for(let a of t.appsToAdd)r.roles[a.appId]=a.roleId;if(t.appsToRemove)for(let a of t.appsToRemove)delete r.roles[a.appId];return await 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 Os(e,t){if(!await Ct())throw new Error("Feature not enabled, please check license");let r=x.db.getProdAppID(t),a=await qt(e);a.builder??={apps:[]},a.builder.apps.includes(t)||(a.builder.apps.push(r),await 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 qt(e);a.builder?.apps.includes(t)&&(a.builder.apps=a.builder.apps.filter(n=>n!==r),await lr(a))}async function Fx(){if(!await gs()){let e=x.tenancy.getGlobalDB(),r=(await ha()||[]).filter(a=>Object.values(a?.roles||{}).includes("CREATOR"));for(let a of r){let n=await M.getGroupUsers(a._id),s=(await Promise.all(n.map(m=>e.get(m._id)))).map(m=>({...m,userGroups:m.userGroups.filter(y=>y!==a._id)})),p=(await x.userUtils.creatorsInList(s)).filter(m=>m).length,f=n.length-p;await M.save({...a,roles:{}}),f&&await cr(0,f)}}}Aa.users.UserDB.init(Ye,j,Ne);var He=Aa.users.UserDB;async function Qx(e,t){if(!await Ct())throw new Error("Feature not enabled, please check license");await Aa.users.addAppBuilder(e,t)}async function jx(e,t){if(!await Ct())throw new Error("Feature not enabled, please check license");await Aa.users.removeAppBuilder(e,t)}var _n={};w(_n,{logs:()=>Bs});var Bs={};w(Bs,{logSearch:()=>Xx,oldestLogDate:()=>Ff,storeLog:()=>Zx});var Gf=require("@budibase/types"),Rn=require("@budibase/backend-core");var vn=require("@budibase/types");var Z=require("@budibase/backend-core");var Df=require("@budibase/backend-core");async function Nf(e,t){let r,a=5,n=!1,o,s=!0;for(;a>0;a--)try{s?o=await e():o=await exports.randomDelay(e),n=!0;break}catch(i){r=i}return n||Df.logging.logWarn(`Failed to backoff: ${t}`,r),o}var{SEPARATOR:ot,UNICODE_MAX:Wx,DocumentType:Bf,AutomationViewMode:Cs,ViewName:$x,getQueryIndex:Kx}=Z.db,Vx=new Date(0).toISOString(),Yx=100,Ps=async()=>$a(vn.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS);function Mf(e,t,{status:r,automationId:a}={},n={}){let o=a?`${a}${ot}`:"",s=r?`${r}${ot}`:"",i;return r&&a?i=`${Cs.ALL}${ot}${s}${o}`:r?i=`${Cs.STATUS}${ot}${s}`:a?i=`${Cs.AUTOMATION}${ot}${o}`:i=`${Bf.AUTOMATION_LOG}${ot}`,{...n,descending:!0,startkey:`${i}${t}${Wx}`,endkey:`${i}${e}`}}function Hx(e,t,r){return`${Bf.AUTOMATION_LOG}${ot}${e}${ot}${r}${ot}${t}`}async function Us(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=Mf(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 qs(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=Mf(e,t,o,{include_docs:!0,limit:9+1});r?.page&&(s.startkey=r.page),n=await a.query(Kx($x.AUTOMATION_LOGS),s)}catch(o){if(o!=null&&(o.name==="not_found"||o.error==="not_found"))return await up(),qs(e,t,r);throw o}return Lr(n,{paginate:!0,pageSize:9})}async function kf(e,t){let r=Z.context.getProdAppDB(),a=e._id,n=e.name,o=new Date().toISOString(),s=Hx(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 Ds(e,{clearing:t}={clearing:!1}){let r=Z.context.getProdAppDB();await Nf(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 zx(){let e=await Ps();try{return await Us(Vx,e,{docs:!1,paginate:!1,limit:Yx})}catch{return{data:[],hasNextPage:!1}}}async function Ns(){let e=Z.context.getProdAppDB();try{let t=await zx();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 Ds(a,{clearing:!0})}catch(t){Z.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}var Ff=Ps;async function Jx(e,t,r,a){let n,o=new Date().toISOString(),s=await Ff();return(!e||e<s)&&(e=s),r||t?n=await qs(e,o,{automationId:r,status:t,page:a}):n=await Us(e,o,{status:t,page:a,docs:!0,paginate:!0}),n}async function Xx(e){return await Ns(),await Jx(e.startDate,e.status,e.automationId,e.page)}async function Zx(e,t){if(!Rn.db.isProdAppID(Rn.context.getAppId()))return;let r=await kf(e,t);t.status===Gf.AutomationStatus.ERROR&&await Ds([r]),await Ns()}var xn={};w(xn,{checkPluginQuotas:()=>rO,deletePlugin:()=>tO,storePlugin:()=>eO});var $f=require("@budibase/types"),J=require("@budibase/backend-core");var Qf=P(require("fs")),jf=require("path");function Wf(e,t){return Qf.default.readFileSync((0,jf.join)(e,t),"utf8")}async function eO(metadata,directory,source){let db=J.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=J.objectStore.getPluginS3Dir(name),files=await J.objectStore.uploadDirectory(J.objectStore.ObjectStoreBuckets.PLUGINS,directory,bucketPath),jsFile=files.find(e=>e.name.endsWith(".js")),iconFile=files.find(e=>e.name.endsWith(".svg"));if(!jsFile)throw new Error("Plugin missing .js file.");if(metadata.schema.type===$f.PluginType.DATASOURCE){let js=Wf(directory,jsFile.name);try{eval(js)}catch(e){let t=e?.message?e.message:JSON.stringify(e);throw new Error(`JS invalid: ${t}`)}}let iconFileName=iconFile?iconFile.name:null,pluginId=J.db.generatePluginID(name),rev;try{rev=(await db.get(pluginId))._rev}catch(e){rev=void 0}let doc={_id:pluginId,_rev:rev,...metadata,name,version,hash,description,source};iconFileName&&(doc.iconFileName=iconFileName),source&&(doc={...doc,source});let write=async()=>{let e=await db.put(doc);return await J.events.plugin.imported(doc),{...doc,_rev:e.rev}};return rev?await write():await ws(write)}async function tO(e){let t=J.tenancy.getGlobalDB();try{let r=await t.get(e),a=J.objectStore.getPluginS3Dir(r.name);await J.objectStore.deleteFolder(J.objectStore.ObjectStoreBuckets.PLUGINS,a),await t.remove(e,r._rev),await J.events.plugin.deleted(r),await Ts()}catch(r){let a=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${a}`)}}async function rO(){let e=J.tenancy.getGlobalDB();try{let r=(await e.allDocs(J.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await Es(r)}catch(t){J.logging.logAlert("Unable to retrieve plugins for quota check",t)}}var ze={};w(ze,{fetch:()=>nO,fetchValues:()=>oO,isEncryptionKeyAvailable:()=>aO,isValid:()=>Yf,remove:()=>iO,update:()=>sO});var ba=require("@budibase/types"),Kf=require("@budibase/backend-core");function aO(){return!!Kf.env.ENCRYPTION_KEY}async function nO(){let e=await Rt.get();return Object.keys(e.variables)}async function oO(e){let r=(await Rt.get()).variables,a={};for(let[n,o]of Object.entries(r))switch(e){case ba.AppEnvironment.DEVELOPMENT:a[n]=o.development;break;case ba.AppEnvironment.PRODUCTION:default:a[n]=o.production;break}return a}async function Vf(e){if(!(await $e.cache.getCachedLicense()).features.includes(ba.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 sO(e,t){if(Yf(e))await Vf(a=>(a[e]=t,a));else throw new Error("Variable name has characters that are not allowed")}async function iO(e){await Vf(t=>(delete t[e],t))}function Yf(e){return/^[a-zA-Z0-9-_]+$/.test(e)}var At={};w(At,{definitions:()=>AO,download:()=>hO,fetch:()=>yO,write:()=>mO});var Ln=require("@budibase/types");var V=require("@budibase/backend-core"),Me=require("@budibase/types");var Hf=require("memorystream"),zf=new V.sql.Sql(Me.SqlClient.SQL_LITE);async function uO(e,t,r){let a={operation:Me.Operation.READ,table:Wt.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:Me.SortOrder.DESCENDING,type:Me.SortType.STRING}}},n=zf._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 pO(e){return`${V.DocumentType.AUDIT_LOG}${V.SEPARATOR}${e}${V.SEPARATOR}${V.utils.newid()}`}async function Jf(e){e._id||(e._id=pO(e.timestamp)),e.type||(e.type=Me.AUDIT_LOG_TYPE);try{let r=await V.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){V.logging.logAlert("Failed to write audit log",t)}}async function Ms(e,t,r){t||(t=1);let a=V.context.getAuditLogsDB();try{let n=9+1,o=await uO(e,t,n),s=Wt.searchTable(),i=zf.convertJsonStringColumns(s,await a.sql(o.sql,o.bindings)),p;i.length>n&&(p=i.pop());let f={rows:i,hasNextPage:!!p};return f.hasNextPage&&(f.bookmark=t+1),f}catch(n){if(n.status===404&&!r?.isRetry)return await cO(),await Xu(),await Ms(e,t,{isRetry:!0});throw n}}async function cO(){let e=V.context.getAuditLogsDB(),r=(await e.allDocs(V.db.getDocParams(V.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(a=>a.doc).filter(a=>a&&!a.type).map(a=>({...a,type:Me.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}function Xf(e){let t=V.context.getAuditLogsDB(),r=new Hf,a=t.dump(r,{filter:o=>{let s=o;if(!s._id?.startsWith(V.DocumentType.AUDIT_LOG))return!1;let i=!0,p=(f,m)=>{!f||f.length===0||(i=!!(i&&m&&f.includes(m)))};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 f=JSON.stringify(o);i=i&&f.includes(e.fullSearch)}return i}}),n=new Hf;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 fe=require("@budibase/backend-core");var On=require("@budibase/types"),Ia=require("@budibase/string-templates"),Sa=require("@budibase/backend-core"),dO=Sa.constants.MIN_VALID_DATE.toISOString(),fO=Sa.constants.MAX_VALID_DATE.toISOString();function ks(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||dO,e.endDate=e.endDate||fO),e}async function Zf(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(a=>Sa.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=ks(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:On.AuditLogResourceStatus.DELETED};switch(t){case"app":a.name=r?.appName;break;case"user":a.email=r?.email;break}return a}function Fs(e){let t=(0,Ia.findHBSBlocks)(e);for(let r of t){let a=` "${r}"`;e=e.replace(e.includes(a)?a:` ${r}`,""),e=(0,Ia.processStringSync)(e,{})}return e}function em(e,t){let r=On.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let a=(0,Ia.processStringSync)(r,t);return a.includes('""')&&(a=Fs(r)),a}async function mO(e,t,r){if(!await hn()||!fe.utils.isAudited(e))return;let a=em(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=fe.db.getProdAppID(r.appId);let i=await fe.cache.app.getAppMetadata(r.appId);"name"in i&&(s.appName=i.name)}if(r?.userId){let i=await fe.users.getById(r?.userId);s.email=i.email}}catch(i){fe.logging.logAlert("Failed to retrieve fallback information for audit log",i)}return o.fallback=s,await Jf(o)}async function gO(e){let t=e.map(i=>i.userId),a=e.filter(i=>i.appId).map(i=>fe.db.getDevAppID(i.appId)),n=await fe.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),o=await fe.db.getAppsByIDs([...new Set(a)]),s=[];for(let i of e){let p=n.find(y=>y?._id===i.userId),f=o.find(y=>fe.db.isSameAppID(y?.appId,i.appId)),m={event:i.event,timestamp:i.timestamp,name:i.name,metadata:i.metadata,user:p||Gs(i.userId,"user",i.fallback)};i.appId&&(m.app=f||Gs(i.appId,"app",i.fallback)),s.push(m)}return s}async function yO(e){if(!await hn())throw new Error("Audit logs not available - license required.");let t=await Zf(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await Ms(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await gO(r.rows)}}function hO(e){return e=ks(e),Xf(e)}function AO(){let e=Object.entries(Ln.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=Fs(r[1]);return t}var Cn={};w(Cn,{applications:()=>Ks,roles:()=>Ws,users:()=>Qs});var Qs={};w(Qs,{roleCheck:()=>IO});function bO(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 IO(e,t){return await rt()||bO(e,t),e}var Ws={};w(Ws,{assign:()=>SO,unAssign:()=>wO});var wa=require("@budibase/backend-core");async function SO(e,t){if(!await rt())throw new Error("Unable to assign roles - license required.");let r=await He.bulkGet(e);for(let a of r){if(t.role&&t.role.roleId){let n=wa.db.getProdAppID(t.role.appId);a.roles[n]=t.role.roleId}if(t.appBuilder){let n=wa.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 He.bulkUpdate(r)}async function wO(e,t){if(!await rt())throw new Error("Unable to un-assign roles - license required.");let r=await He.bulkGet(e);for(let a of r){if(t.role){let n=wa.db.getProdAppID(t.role?.appId);a.roles[n]===t.role.roleId&&delete a.roles[n]}if(t.appBuilder&&a.builder?.apps){let n=wa.db.getProdAppID(t.appBuilder.appId);a.builder.apps=a.builder.apps.filter(o=>o!==n)}t.builder&&a.builder&&delete a.builder,t.admin&&a.admin&&delete a.admin}}var Ks={};w(Ks,{buildExportFn:()=>EO,buildImportFn:()=>TO});var $s=require("@budibase/backend-core");function TO(e){return async(t,r)=>{await rt()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await $s.context.doInAppContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}function EO(e){return async(t,r)=>{await rt()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:a,excludeRows:n}=t.request.body;await $s.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 re=require("@budibase/backend-core"),te=require("@budibase/types");var Vs=require("@budibase/backend-core"),tm;function rm(){tm=new Vs.queue.BudibaseQueue(Vs.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}function Dt(){return tm}var am=require("path"),nm=P(require("fs"));async function Ys(e,t={}){return ve.storeAppBackupMetadata(e,t)}function om(e){let t=new Date().toISOString();switch(e){case te.AppBackupStatus.COMPLETE:case te.AppBackupStatus.FAILED:return{timestamp:t,finishedAt:t};case te.AppBackupStatus.STARTED:return{timestamp:t,startedAt:t};case te.AppBackupStatus.PENDING:return{timestamp:t,createdAt:t}}}async function vO(e,t,r,a){let n=await Pn(e);return await ve.storeAppBackupMetadata({...n,...om(t),contents:r,status:t,type:te.AppBackupType.BACKUP},{filename:a,docId:e})}async function RO(e,t,r){let a=await Pn(e);return await ve.storeAppBackupMetadata({...a,...om(r),status:r,type:te.AppBackupType.RESTORE,trigger:te.AppBackupTrigger.MANUAL},{docId:e,docRev:t})}async function Pn(e){return ve.getAppBackupMetadata(e)}async function _O(e,t){return ve.updateAppBackupMetadata(e,t)}async function xO(e){let t=await ve.getAppBackupMetadata(e);return t.filename&&await re.objectStore.deleteFile(re.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),ve.deleteAppBackupMetadata(e)}async function OO(e,t){return ve.fetchAppBackups(e,t)}async function sm(e){let t=await ve.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let r=await re.objectStore.getReadStream(re.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}async function LO(e){let{stream:t}=await sm(e),r=(0,am.join)(re.objectStore.budibaseTempDir(),re.utils.newid()),a=nm.default.createWriteStream(r);return new Promise((n,o)=>{t.on("error",o),a.on("error",o),t.pipe(a).on("close",()=>n(r))})}async function CO(e,t,r={}){let a;try{a=await Ys({appId:e,trigger:t,timestamp:new Date().toISOString(),status:te.AppBackupStatus.PENDING,type:te.AppBackupType.BACKUP,...r})}catch(n){if(n.status===409)return;throw n}return await Dt().add({docId:a.id,docRev:a.rev,appId:e,export:{trigger:t,...r}}),await re.events.backup.appBackupTriggered(e,a.id,te.AppBackupType.BACKUP,t,r?.name),a.id}async function PO(e,t,r,a){let n=await Pn(t),o;try{o=await Ys({appId:e,timestamp:new Date().toISOString(),status:te.AppBackupStatus.PENDING,type:te.AppBackupType.RESTORE,createdBy:a})}catch(s){if(s?.status===409)return;throw s}return await Dt().add({appId:e,docId:o.id,docRev:o.rev,import:{nameForBackup:r,backupId:t,createdBy:a}}),{restoreId:o.id,metadata:n}}async function UO(e,t,r){let a=re.db.getProdAppID(e);await re.context.doInAppContext(a,async()=>{let n=re.context.getProdAppDB();if(!await n.exists())return;let s=await n.tryGet(te.DocumentType.APP_METADATA);s&&(s.backupErrors||(s.backupErrors={}),s.backupErrors[t]||(s.backupErrors[t]=[]),s.backupErrors[t].push(r),await n.put(s),await re.cache.app.invalidateAppMetadata(s.appId,s))})}var qO={isEnabled:fs,triggerAppRestore:de(PO),triggerAppBackup:de(CO),getBackupDownloadStream:de(sm),downloadAppBackup:de(LO),fetchAppBackups:de(OO),storeAppBackupMetadata:de(Ys),updateBackupStatus:de(vO),updateRestoreStatus:de(RO),getAppBackup:de(Pn),updateAppBackup:de(_O),deleteAppBackup:de(xO),trackBackupError:de(UO)},_e=qO;var zs={};w(zs,{init:()=>Hs});var W=require("@budibase/backend-core");var ke=require("@budibase/types");var dr=P(require("fs"));async function Hs(e){Dt().process(async t=>{let r=t.data;try{if(r.export)return console.log("Exporting app backup:",r.appId,r.export.trigger),BO(t,e);if(r.import)return console.log("Importing app backup:",r.appId,r.import.backupId),NO(t,e)}catch(a){W.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,a)}})}async function DO(e){await W.db.getDB(e,{skip_setup:!0}).destroy()}async function im(e,t,r,a){let n=W.db.getDevAppID(r),o=W.db.getProdAppID(r),s=new Date().toISOString(),i=async(p,f)=>{a?.doc?await _e.updateBackupStatus(a.doc.id,p,f?.contents,f?.filename):await _e.storeAppBackupMetadata({appId:o,timestamp:s,trigger:e,status:p,name:a?.name,type:ke.AppBackupType.BACKUP,contents:f?.contents,createdBy:a?.createdBy},{filename:f?.filename})};try{let p=await a.processing.exportAppFn(n,{tar:!0}),f=await a.processing.statsFn(n),m=`${o}/backup-${s}.tar.gz`,y=W.objectStore.ObjectStoreBuckets.BACKUPS,g=dr.default.createReadStream(p);await W.objectStore.streamUpload({bucket:y,filename:m,stream:g,extra:{type:"application/gzip",metadata:{name:a?.name,trigger:e,timestamp:s,appId:o}}}),await i(ke.AppBackupStatus.COMPLETE,{filename:m,contents:f}),dr.default.existsSync(p)&&dr.default.rmSync(p)}catch(p){W.logging.logAlert("App backup error",p),await i(ke.AppBackupStatus.FAILED);let f=a?.doc?.id||`backup-${s}`,m=p instanceof Error?p.message:String(p);await _e.trackBackupError(o,f,`Backup export failed: ${m}`)}}async function NO(e,t){let r=e.data,a=r.appId,n=r.import.backupId,o=r.import.nameForBackup,s=r.import.createdBy,i=W.tenancy.getTenantIDFromAppID(a);return W.tenancy.doInTenant(i,async()=>{let p=W.db.getDevAppID(a),f=`${p}_temp_${Date.now()}`,{rev:m}=await _e.updateRestoreStatus(r.docId,r.docRev,ke.AppBackupStatus.STARTED);await im(ke.AppBackupTrigger.RESTORING,i,a,{processing:t,createdBy:s,name:o});let y=await _e.downloadAppBackup(n),g=ke.AppBackupStatus.COMPLETE;try{await t.importAppFn(f,W.db.getDB(f),{file:{type:"application/gzip",path:y},key:y}),await DO(p),await new W.db.Replication({source:f,target:p}).replicate()}catch(I){W.logging.logAlert("App restore error",I),g=ke.AppBackupStatus.FAILED;let O=I instanceof Error?I.message:String(I);await _e.trackBackupError(a,n,`Backup restore failed: ${O}`)}finally{try{await W.db.getDB(f,{skip_setup:!0}).destroy()}catch{}}await _e.updateRestoreStatus(r.docId,m,g),dr.default.existsSync(y)&&dr.default.rmSync(y,{force:!0})})}async function BO(e,t){let r=e.data,a=r.appId,n=r.export.trigger,o=r.export.name,s=W.tenancy.getTenantIDFromAppID(a);await W.tenancy.doInTenant(s,async()=>{try{let{rev:i}=await _e.updateBackupStatus(r.docId,ke.AppBackupStatus.STARTED);return im(n,s,a,{processing:t,doc:{id:r.docId,rev:i},name:o})}catch(i){W.logging.logAlert("App backup error",i);let p=i instanceof Error?i.message:String(i);await _e.trackBackupError(a,r.docId,`Backup export failed: ${p}`)}})}var MO=async e=>{rm(),await Hs(e.processing)},xe={..._e,processing:zs,init:MO,getBackupQueue:Dt};var um=async e=>{e.backups&&await xe.init(e.backups)};var ge={};w(ge,{create:()=>CM,find:()=>LM,get:()=>OM,remove:()=>UM,update:()=>PM});var LA=P(Wi()),st=require("@budibase/backend-core");var CA=require("@budibase/types");async function OM(e){let t=st.tenancy.getGlobalDB(),r=new st.db.QueryBuilder(t.name,CA.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 LM(e){return await st.users.getById(e)}async function CM(e){let t=await He.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 He.save(e,{requirePassword:!1})}async function PM(e,t){return await He.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}async function UM(e){return await He.destroy(e)}var Ar={};w(Ar,{create:()=>qM});var PA=P(Wi());var UA=require("@budibase/backend-core");async function qM(e){let t=await Ao(e.name),r;if(!t)r=(await j.save(e)).id;else{if(t.scimInfo?.isSync)throw new UA.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,PA.default)(t.scimInfo,e.scimInfo),await j.save(t)}return await j.get(r)}var Bt={};w(Bt,{logRequest:()=>DM,logResponse:()=>NM});var $i=require("@budibase/backend-core");async function DM(e){$i.logging.logWarn("SCIM request log",e)}async function NM(e){$i.logging.logWarn("SCIM response error",e)}var Ji={};w(Ji,{doInScimContext:()=>Vi,feature:()=>$,internalGroupOnly:()=>Vn,licenseAuth:()=>NA,licensing:()=>qA,requireSCIM:()=>Yi,scimGroupOnly:()=>Ra,scimUserOnly:()=>va});var bt=require("@budibase/backend-core");var $n=require("@budibase/types"),BM=(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=Io,r();t.user.license=await $e.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 Ye.usageLimitIsExceeded($n.StaticQuotaName.USERS,$n.QuotaUsageType.STATIC)}return r()},qA=BM;var $={};w($,{requireFeature:()=>MM,requireFeatures:()=>kM});var MM=e=>async(t,r)=>{await yn(e),await r()},kM=(...e)=>async(t,r)=>{await ds(e),await r()};var Kn=require("@budibase/backend-core");var Vi=async(e,t)=>(Kn.env.DISABLE_SCIM_CALLS||await Bt.logRequest({...e.request.toJSON(),body:e.request.body}),await Kn.context.doInScimContext(async()=>{let r=await t();return await Bt.logResponse({...e.response.toJSON(),body:e.response.body}),r}));var Yi=async(e,t)=>{await ys(),await t()};var DA=require("@budibase/backend-core");var va=e=>Hi(DA.users.getById,e,!0),Ra=e=>Hi(M.get,e,!0),Vn=e=>Hi(M.get,e,!1);function Hi(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 _a=require("@budibase/backend-core");var zi=require("dd-trace");async function NA(e,t){await zi.tracer.trace("licenseAuth",async r=>{let a=e.request.headers[_a.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 us(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"),zi.tracer.setUser({id:"anonymous",tenantId:n.tenantId}),await _a.context.doInSelfHostTenantUsingCloud(n.tenantId,async()=>{await _a.context.doInLicenseContext(n,async()=>{await t()})})})}var su={};w(su,{appBackups:()=>wb,auditLogs:()=>lb,environmentVariables:()=>ab,groups:()=>YA,scim:()=>Xb,users:()=>aI});async function BA(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let a=await qt(t._id);t.roles=a.roles,t.scimInfo=a.scimInfo}let r=await lr(t);e.body={_id:r.id,_rev:r.rev}}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 users to add or to remove");let n,o;r&&(n=await Rs(t,r)),a&&(o=await _s(t,a)),e.body={added:n,removed:o}}async function kA(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 xs(t,{appsToAdd:r,appsToRemove:a})}async function GA(e){e.body={data:await ha()}}async function FA(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 QA(e){try{e.body=await qt(e.params.groupId)}catch(t){e.throw(t.status,t)}}async function jA(e){let{pageSize:t=10,bookmark:r,emailSearch:a}=e.request.query,n=e.params.groupId,o={limit:t+1},s=await ja(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 WA(e){let{groupId:t,appId:r}=e.params;await Os(t,r),e.body={message:"Group app builder access updated."}}async function $A(e){let{groupId:t,appId:r}=e.params;await Ls(t,r),e.body={message:"group app builder access removed."}}var KA=P(require("@koa/router")),Ie=P(require("joi"));var Oe=require("@budibase/types"),Je=require("@budibase/backend-core"),VA=new KA.default;function FM(){return Je.auth.joiValidator.body(Ie.default.object({_id:Ie.default.string().optional(),_rev:Ie.default.string().optional(),color:Ie.default.string().required(),icon:Ie.default.string().required(),name:Ie.default.string().trim().required().max(50),role:Ie.default.string().optional(),users:Ie.default.array().optional(),apps:Ie.default.array().optional(),roles:Ie.default.object().optional(),createdAt:Ie.default.string().optional(),updatedAt:Ie.default.string().optional()}).required())}VA.post("/api/global/groups",Je.auth.adminOnly,$.requireFeature(Oe.Feature.USER_GROUPS),FM(),BA).get("/api/global/groups",$.requireFeature(Oe.Feature.USER_GROUPS),GA).delete("/api/global/groups/:groupId/:rev",$.requireFeature(Oe.Feature.USER_GROUPS),Je.auth.adminOnly,Vn("groupId"),FA).get("/api/global/groups/:groupId",$.requireFeature(Oe.Feature.USER_GROUPS),Je.auth.builderOrAdmin,QA).get("/api/global/groups/:groupId/users",$.requireFeature(Oe.Feature.USER_GROUPS),Je.auth.builderOrAdmin,jA).post("/api/global/groups/:groupId/users",Je.auth.adminOnly,$.requireFeature(Oe.Feature.USER_GROUPS),Vn("groupId"),MA).post("/api/global/groups/:groupId/apps",Je.auth.builderOrAdmin,$.requireFeature(Oe.Feature.USER_GROUPS),kA).post("/api/global/groups/:groupId/app/:appId/builder",Je.auth.builderOrAdmin,$.requireFeatures(Oe.Feature.USER_GROUPS,Oe.Feature.APP_BUILDERS),WA).delete("/api/global/groups/:groupId/app/:appId/builder",Je.auth.builderOrAdmin,$.requireFeatures(Oe.Feature.USER_GROUPS,Oe.Feature.APP_BUILDERS),$A);var YA=VA;var Xi=require("@budibase/types");var Zi=require("@budibase/backend-core");async function HA(e){e.body={encryptionKeyAvailable:ze.isEncryptionKeyAvailable()}}async function zA(e){e.body={variables:await ze.fetch()}}async function JA(e){let{name:t,production:r,development:a}=e.request.body;await ze.update(t,{production:r,development:a});let n=[Xi.AppEnvironment.PRODUCTION];r!==a&&n.push(Xi.AppEnvironment.DEVELOPMENT),await Zi.events.environmentVariable.created(t,n),e.body={message:`Environment variable "${t}" created.`}}async function XA(e){let{production:t,development:r}=e.request.body,a=e.params.varName;await ze.update(a,{production:t,development:r}),e.body={message:`Environment variable "${a}" updated.`}}async function ZA(e){let t=e.params.varName;await ze.remove(t),await Zi.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}var Mt=require("@budibase/backend-core"),tb=P(require("@koa/router")),xa=P(require("joi")),rb=new tb.default;function eb(){return Mt.auth.joiValidator.body(xa.default.object({name:xa.default.string().optional(),production:xa.default.string().required(),development:xa.default.string().required()}))}rb.get("/api/env/variables/status",Mt.auth.builderOrAdmin,HA).get("/api/env/variables",Mt.auth.builderOrAdmin,zA).post("/api/env/variables",Mt.auth.builderOrAdmin,eb(),JA).patch("/api/env/variables/:varName",Mt.auth.builderOrAdmin,eb(),XA).delete("/api/env/variables/:varName",Mt.auth.builderOrAdmin,ZA);var ab=rb;var eu=require("@budibase/backend-core");async function nb(e){let t=e.request.body,r=await At.fetch(t);await eu.events.auditLog.filtered(t),e.body=r}async function ob(e){let t=e.request.body,{stream:r}=At.download(t);await eu.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}async function sb(e){e.body={events:At.definitions()}}var ub=require("@budibase/types"),kt=require("@budibase/backend-core"),pb=P(require("@koa/router")),Le=P(require("joi"));function ib(){return kt.auth.joiValidator.body(Le.default.object({userIds:Le.default.array().items(Le.default.string()).optional(),appIds:Le.default.array().items(Le.default.string()).optional(),events:Le.default.array().items(Le.default.string().valid(...Object.values(ub.Event))).optional(),startDate:Le.default.string().optional().allow(""),endDate:Le.default.string().optional().allow(""),fullSearch:Le.default.string().optional().allow(""),bookmark:Le.default.number()}))}var cb=new pb.default;cb.post("/api/global/auditlogs/search",kt.auth.adminOnly,ib(),nb).get("/api/global/auditlogs/download",kt.auth.adminOnly,kt.middleware.querystringToBody,ib(),ob).get("/api/global/auditlogs/definitions",kt.auth.adminOnly,sb);var lb=cb;var tu=require("@budibase/types");var fb=require("@budibase/backend-core");async function br(e,t){await Vt.appExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}async function mb(e){let t=e.params.appId;await br(e,t);let r=e.request.body,a=e.user?._id,n=await xe.triggerAppBackup(t,tu.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 gb(e){let t=e.params.appId;await br(e,t);let r=e.params.backupId,a=e.request.body.name,n=await xe.triggerAppRestore(t,r,a,e.user?._id);n||e.throw(500,"Unable to start restore."),await fb.events.backup.appBackupRestored(n.metadata),e.body={restoredId:n?.restoreId,message:"Restore triggered - process starting."}}async function yb(e){let t=e.params.appId;await br(e,t);let r=e.params.backupId;await xe.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(tu.AppBackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await xe.fetchAppBackups(t,{paginate:!0,...r})}async function Ab(e){let t=e.params.appId;await br(e,t);let r=e.params.backupId,a=e.request.body;e.body=await xe.updateAppBackup(r,a.name)}async function bb(e){let t=e.params.appId;await br(e,t);let r=e.params.backupId,{metadata:a,stream:n}=await xe.getBackupDownloadStream(r);e.attachment(`backup-${a.timestamp}.tar.gz`),e.body=n}var Ib=P(require("@koa/router")),Gt=P(require("joi")),Yn=require("@budibase/types"),It=require("@budibase/backend-core"),Sb=new Ib.default;function $M(){return It.auth.joiValidator.body(Gt.default.object({trigger:Gt.default.string().valid(...Object.values(Yn.AppBackupTrigger)),type:Gt.default.string().valid(...Object.values(Yn.AppBackupType)),startDate:Gt.default.date(),endDate:Gt.default.date(),page:Gt.default.string()}))}Sb.post("/api/apps/:appId/backups",It.auth.builderOrAdmin,mb).post("/api/apps/:appId/backups/search",It.auth.builderOrAdmin,$M(),hb).get("/api/apps/:appId/backups/:backupId/file",It.auth.builderOrAdmin,bb).patch("/api/apps/:appId/backups/:backupId",It.auth.builderOrAdmin,Ab).delete("/api/apps/:appId/backups/:backupId",It.auth.builderOrAdmin,yb).post("/api/apps/:appId/backups/:backupId/import",It.auth.builderOrAdmin,gb);var wb=Sb;var Jb=P(require("@koa/router"));var Hn=require("scim-patch");var Eb=require("@budibase/backend-core");function Tb(e,t){let r=e.request.query[t];if(r!==void 0)return+r}var vb=async e=>{let t=Tb(e,"pageSize")??20,r=Tb(e,"startIndex"),a;e.request.query.filter&&(a=Y.user.userFilters(e.request.query.filter));let n=await ge.get({pageSize:t,skip:r,filters:a});e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:n.total,Resources:n.users.map(Y.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},Rb=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await ge.find(t);e.body=Y.user.toScimUserResponse(r)},_b=async e=>{let t=Y.user.fromScimUser(e.request.body);try{let r=await ge.create(t);e.body=Y.user.toScimUserResponse(r)}catch(r){throw r instanceof Eb.EmailUnavailableError&&e.throw(409,"Email already in use"),r}};function KM(e){let t=e.Operations.find(r=>(r.op==="Replace"||r.op==="replace")&&r.path==="active");return t?t.value===!1||t.value?.toLowerCase?.()==="false":!1}var xb=async e=>{let t=await ge.find(e.params.id);t||e.throw(404);let r=Y.user.toScimUserResponse(t),a=e.request.body;try{(0,Hn.patchBodyValidation)(a)}catch{}if(KM(a))return ru(e);let n;try{n=(0,Hn.scimPatch)(r,a.Operations)}catch{}n||e.throw(500);let o=Y.user.fromScimUser(n);await ge.update(o,{allowChangingEmail:!0}),e.body=Y.user.toScimUserResponse(o)},ru=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await ge.remove(t),e.status=204};var jb=P(Qb()),Wb=require("@budibase/shared-core"),zn=require("scim-patch");var Jn=require("scim2-parse-filter");function $b(e,t){for(let r of t.split(","))delete e[r]}var Kb=async e=>{let r=(await j.fetch()).filter(o=>o.scimInfo?.isSync).map(Y.group.toScimGroupResponse),{filter:a,excludedAttributes:n}=e.request.query;if(a){let o=(0,Jn.filter)((0,Jn.parse)(a));r=r.filter(o)}n&&r.forEach(o=>{$b(o,n)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},Vb=async e=>{let t=Y.group.fromScimGroup(e.request.body),r=await Ar.create(t);e.body=Y.group.toScimGroupResponse(r)},Yb=async e=>{let{id:t}=e.params,r=await j.get(t),a=Y.group.toScimGroupResponse(r),{excludedAttributes:n}=e.request.query;n&&$b(a,n),e.body=a},Hb=async e=>{let{id:t}=e.params,r=await j.get(t);await j.remove(t,r._rev),e.status=204},zb=async e=>{let{id:t}=e.params,r=await j.get(t),a=Y.group.toScimGroupResponse(r),n=e.request.body;try{(0,zn.patchBodyValidation)(n)}catch{e.throw(400)}let{true:o,false:s}=(0,jb.default)(n.Operations,i=>i.path==="members");if(s?.length){let i=(0,zn.scimPatch)(a,s);i||e.throw(500);let p={...Y.group.fromScimGroup(i),_rev:r._rev};await j.save(p)}if(o?.length){let i=[],p=[];for(let{op:f,value:m}of o)switch(f){case"add":case"Add":for(let y of m)i.push(await ge.find(y.value));break;case"remove":case"Remove":for(let y of m)p.push(await ge.find(y.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:Wb.utils.unreachable(f)}i.length&&await j.addUsers(t,i.map(f=>f._id)),p.length&&await j.removeUsers(t,p.map(f=>f._id))}e.body=Y.group.toScimGroupResponse(await j.get(t))};var Oa=require("@budibase/types"),Se=new Jb.default({prefix:"/api/global/scim/v2"});Se.use(Yi);Se.use(Vi);Se.get("/users",vb);Se.get("/users/:id",va("id"),Rb);Se.post("/users",_b);Se.patch("/users/:id",va("id"),xb);Se.delete("/users/:id",va("id"),ru);Se.get("/groups",Kb);Se.post("/groups",$.requireFeature(Oa.Feature.USER_GROUPS),Vb);Se.get("/groups/:id",$.requireFeature(Oa.Feature.USER_GROUPS),Ra("id"),Yb);Se.delete("/groups/:id",$.requireFeature(Oa.Feature.USER_GROUPS),Ra("id"),Hb);Se.patch("/groups/:id",$.requireFeature(Oa.Feature.USER_GROUPS),Ra("id"),zb);var Xb=Se;var tI=P(require("@koa/router"));var au=require("@budibase/backend-core");async function Zb(e){let{userId:t,appId:r}=e.params,a=await nt.db.getUser(t);if(au.users.isGlobalBuilder(a)){e.body={message:"User already admin - no permissions updated."};return}await nt.addAppBuilder(a,r),e.body={message:`User "${a.email}" app builder access updated.`}}async function eI(e){let{userId:t,appId:r}=e.params,a=await nt.db.getUser(t);if(au.users.isGlobalBuilder(a)){e.body={message:"User already admin - no permissions removed."};return}await nt.removeAppBuilder(a,r),e.body={message:`User "${a.email}" app builder access removed.`}}var nu=require("@budibase/types"),ou=require("@budibase/backend-core"),rI=new tI.default;rI.post("/api/global/users/:userId/app/:appId/builder",ou.auth.builderOrAdmin,$.requireFeatures(nu.Feature.APP_BUILDERS),Zb).delete("/api/global/users/:userId/app/:appId/builder",ou.auth.builderOrAdmin,$.requireFeatures(nu.Feature.APP_BUILDERS),eI);var aI=rI;var Y={};w(Y,{group:()=>uu,user:()=>iu});var iu={};w(iu,{fromScimUser:()=>Sk,toScimUserResponse:()=>Ak,userFilters:()=>wk});var Xn=require("@budibase/types"),nI=require("scim2-parse-filter"),oI=require("@budibase/backend-core"),sI=require("@budibase/shared-core"),{unreachable:hk}=sI.utils,Ak=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===Xn.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},bk=e=>!!e?.id;function Ik(e){if(oI.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}var Sk=e=>{let t=bk(e)?e:void 0,r=Ik(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:hk(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?Xn.UserStatus.ACTIVE:Xn.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},wk=e=>{let t={equal:{}},r=(0,nI.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 uu={};w(uu,{fromScimGroup:()=>vk,toScimGroupResponse:()=>Tk});var Tk=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}))}),Ek=e=>!!e?.id,vk=e=>{let t=Ek(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 Pu={};w(Pu,{LLM:()=>Xe,LLMRequest:()=>K,TableGeneration:()=>Cu,agentHistoryTitleSystemPrompt:()=>Nk,agentSystemPrompt:()=>Dk,aiColumnSchemas:()=>Ou,aiTableResponseToTableSchema:()=>vu,appendAIColumns:()=>Ru,classifyText:()=>lu,cleanData:()=>du,extractFileData:()=>Ck,generateAIColumns:()=>Tu,generateCode:()=>qk,generateCronExpression:()=>fu,generateData:()=>Eu,generateJs:()=>hu,generateSQL:()=>Uk,generateTables:()=>wu,generationStructure:()=>xu,getLLM:()=>Pa,getLLMConfig:()=>Su,getLLMOrThrow:()=>yI,normalizeContentType:()=>pu,parseResponseFormat:()=>eo,sanitiseToolName:()=>Rk,searchWeb:()=>yu,sentimentAnalysis:()=>gu,summarizeText:()=>Zn,tableDataStructuredOutput:()=>Lu,translate:()=>mu});var La=require("@budibase/types");function Rk(e){if(e.length>64)throw new Error("Tool name must be under 64 characters long");return e.replace(/[^a-zA-Z0-9_-]/g,"_")}function pu(e){return e?e.includes("/")?e:{[La.SupportedFileType.PDF]:"application/pdf",[La.SupportedFileType.JPG]:"image/jpeg",[La.SupportedFileType.JPEG]:"image/jpeg",[La.SupportedFileType.PNG]:"image/png"}[e.toLowerCase()]||"application/octet-stream":"application/octet-stream"}var oo=require("@budibase/types");var Ze=require("@budibase/backend-core"),dI=require("@budibase/types");var to=P(require("openai"));var St=require("@budibase/types");var iI=require("@budibase/shared-core");var wt=P(require("dd-trace"));function cu(e,t){return t.map(r=>e[r]).join(" ")}var Xe=class{constructor({model:t,apiKey:r,maxTokens:a}){this._model=t,this._apiKey=r,this._maxTokens=a??parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"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 K().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(Zn(t)))}async generateCronExpression(t){return wt.default.trace("generateCronExpression",()=>this.prompt(fu(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 Zn(cu(r,o));case St.AIOperationEnum.CLEAN_DATA:return du(r[n]);case St.AIOperationEnum.TRANSLATE:return mu(r[n],s);case St.AIOperationEnum.CATEGORISE_TEXT:if(!i)throw Error("No categories provided for categorise text operation. Please provide categories.");return lu(cu(r,o),i.split(","));case St.AIOperationEnum.SENTIMENT_ANALYSIS:return gu(r[n]);case St.AIOperationEnum.PROMPT:return p;case St.AIOperationEnum.SEARCH_WEB:return yu(cu(r,o));default:throw iI.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 pI=require("@budibase/types"),Au=require("openai/helpers/zod");function eo(e){if(e)return e==="text"?{type:"text"}:e==="json"?{type:"json_object"}:e}function uI(e){if(!e)return 0;let t=e.prompt_tokens;return e.completion_tokens*3+t}var Ce=class extends Xe{constructor(r){super(r);this.client=this.getClient(r)}getClient(r){if(!r.apiKey)throw new Error("No OpenAI API key found");return new to.default({apiKey:r.apiKey})}async uploadFile(r,a,n){let o=pu(n);if(pI.ImageContentTypes.includes(o.toLowerCase())){let p;if(Buffer.isBuffer(r))p=r;else{let m=[];for await(let y of r)m.push(y);p=Buffer.concat(m)}let f=p.toString("base64");return`data:${o};base64,${f}`}let s=await(0,to.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:eo(r.format)};r.tools&&r.tools.length>0&&(a.tool_choice="auto",a.tools=r.tools.map(Au.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 f=JSON.parse(i.function.arguments);s.push(p.handler(f).then(m=>({role:"tool",tool_call_id:i.id,content:m})).catch(m=>(console.error(`[OPENAI TOOL ERROR] Tool ${i.function.name} failed in OpenAI handler:`,m),{role:"tool",tool_call_id:i.id,content:`Error: ${m.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:uI(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:eo(r.format),stream:!0};r.tools&&r.tools.length>0&&(a.tool_choice="auto",a.tools=r.tools.map(Au.zodFunction));try{let n=await this.client.chat.completions.create(a),o=null,s="",i=null;for await(let f of n){let m=f.choices[0]?.delta;if(m){if(m.content&&(s+=m.content,yield{type:"content",content:m.content}),m.tool_calls&&m.tool_calls.length>0){let y=m.tool_calls[0];y.id?(o={id:y.id,name:y.function?.name||"",arguments:y.function?.arguments||""},yield{type:"tool_call_start",toolCall:{id:o.id,name:o.name,arguments:o.arguments}}):o&&y.function?.arguments&&(o.arguments+=y.function.arguments,yield{type:"tool_call_start",toolCall:{id:o.id,name:o.name,arguments:o.arguments}})}f.usage&&(i=f.usage)}}let p=i?uI(i):0;if(o){r.addMessage({role:"assistant",content:"",tool_calls:[{id:o.id,type:"function",function:{name:o.name,arguments:o.arguments}}]});let f=r.findTool(o.name);if(f)try{let m=JSON.parse(o.arguments),y=await f.handler(m);yield{type:"tool_call_result",toolResult:{id:o.id,result:y}},r.addMessage({role:"tool",tool_call_id:o.id,content:y}),yield*this.chatCompletionStream(r);return}catch(m){yield{type:"tool_call_result",toolResult:{id:o.id,result:`Error: ${m.message}`,error:m.message}},r.addMessage({role:"tool",tool_call_id:o.id,content:`Error: ${m.message}`}),yield*this.chatCompletionStream(r);return}else{let m=`Tool '${o.name}' not found`;yield{type:"tool_call_result",toolResult:{id:o.id,result:m,error:m}},r.addMessage({role:"tool",tool_call_id:o.id,content:m}),yield*this.chatCompletionStream(r);return}}s&&r.addMessage({role:"assistant",content:s}),yield{type:"done",messages:r.messages,tokensUsed:p}}catch(n){yield{type:"error",content:n.message}}}};var ee=require("@budibase/backend-core"),cI=require("@budibase/types");var bu=require("dd-trace"),ro=class extends Xe{async prompt(t){let r=await super.prompt(t);return r.tokensUsed&&await Tn(r.tokensUsed),r}async chat(t){let r=await super.chat(t);return r.tokensUsed&&await Tn(r.tokensUsed),r}async uploadFile(t,r,a){return ee.env.SELF_HOSTED?this.uploadFileSelfHost(t,r,a):this.uploadFileCloud(t,r,a)}async uploadFileCloud(t,r,a){return new Ce({apiKey:ee.env.OPENAI_API_KEY,model:this.model,maxTokens:this.maxTokens}).uploadFile(t,r,a)}async uploadFileSelfHost(t,r,a){let n;if(Buffer.isBuffer(t))n=t;else{let p=[];for await(let f of t)p.push(f);n=Buffer.concat(p)}let o=n.toString("base64");if(a&&cI.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 mn();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 bu.tracer.trace("chatCompletionCloud",async()=>await new Ce({apiKey:ee.env.OPENAI_API_KEY,model:this.model,maxTokens:this.maxTokens}).chatCompletion(t))}async chatCompletionSelfHost(t){return await bu.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 mn();if(!o)throw new Error("No license key found");this._apiKey=o,r.addTags({licenseKey:this._apiKey})}let a={messages:t.messages,format:t.format,useTools:t.tools.length>0},n=await fetch(`${ee.env.BUDICLOUD_URL}/api/ai/chat`,{method:"POST",headers:{"Content-Type":"application/json",[ee.constants.Header.LICENSE_KEY]:this._apiKey},body:JSON.stringify(a)});if(!n.ok)throw await ee.HTTPError.fromResponse(n);return await n.json()})}async*chatCompletionStream(t){ee.env.SELF_HOSTED?yield*this.chatCompletionStreamSelfHost(t):yield*this.chatCompletionStreamCloud(t)}async*chatCompletionStreamCloud(t){yield*new Ce({apiKey:ee.env.OPENAI_API_KEY,model:this.model,maxTokens:this.maxTokens}).chatCompletionStream(t)}async*chatCompletionStreamSelfHost(t){try{let r=await this.chatCompletionSelfHost(t);if(r.messages.length>0){let a=r.messages[r.messages.length-1];a.content&&(yield{type:"content",content:a.content})}yield{type:"done",messages:r.messages,tokensUsed:r.tokensUsed}}catch(r){yield{type:"error",content:r.message}}}};var Ca=require("dd-trace");var Iu=P(require("@anthropic-ai/sdk"));function _k(e){if(!e)return 0;let t=e.input_tokens;return e.output_tokens*3+t}var ao=class extends Xe{constructor(r){super(r);this.client=new Iu.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:_k(a.usage)}}catch(a){throw a instanceof Iu.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 fI=require("zod"),mI=require("openai/helpers/zod");var lI=require("openai"),no=class extends Ce{getClient(t){if(!t.apiKey)throw new Error("No Azure OpenAI API key found");if(!t.model)throw new Error("No Azure OpenAI model specified");return new lI.AzureOpenAI({apiKey:t.apiKey,apiVersion:"2024-10-01-preview",baseURL:t.baseUrl})}};var gI="gpt-4o-mini",xk={OpenAI:Ce,TogetherAI:Ce,AzureOpenAI:no,Custom:Ce,Anthropic:ao,BudibaseAI:ro};async function Ok(){return await Ca.tracer.trace("getAIConfig",async e=>{let t={type:dI.ConfigType.AI,config:{}};if(!Ze.context.isSelfHostUsingCloud()){let a=await Ze.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||gI,apiKey:r.apiKey,baseUrl:r.baseUrl}})}async function Lk(){return Ca.tracer.trace("getSelfHostOpenAIKeyConfig",e=>{if(!Ze.env.SELF_HOSTED){e.addTags({enabled:!1,reason:"not self host"});return}if(!Ze.env.OPENAI_API_KEY){e.addTags({enabled:!1,reason:"no OPENAI_API_KEY"});return}return e.addTags({enabled:!0}),{provider:"OpenAI",model:gI,apiKey:Ze.env.OPENAI_API_KEY}})}async function Su(){return Ca.tracer.trace("getLLMConfig",async()=>await Ok()||await Lk())}async function Pa(e){return await Ca.tracer.trace("getLLM",async t=>{let{model:r,maxTokens:a}=e||{},n=await Su();if(!n){t.addTags({enabled:!1,reason:"no config found"});return}r&&(n.model=r),a&&(n.maxTokens=a);let o=xk[n.provider];if(!o){t.addTags({enabled:!1,reason:"no provider found",provider:n.provider});return}return new o(n)})}async function yI(){let e=await Pa();if(!e)throw new Ze.HTTPError("No available LLM configurations",500);return e}var K=class e{constructor(){this.messages=[];this.tools=[]}addTool(t){return this.tools.push(t),this}addTools(t){return this.tools.push(...t),this}findTool(t){return this.tools.find(r=>r.name===t)}withFormat(t){return t instanceof fI.z.ZodType?this.format=(0,mI.zodResponseFormat)(t,"key"):this.format=t,this}addMessage(t){return this.messages.push(t),this}addMessages(t){return this.messages.push(...t),this}addUserMessage(t){return this.messages.push({role:"user",content:t}),this}addSystemMessage(t){return this.messages.push({role:"system",content:t}),this}static fromRequest(t){let r=new e;return t.messages&&r.addMessages(t.messages),t.format&&r.withFormat(t.format),r}};var it=require("zod");function Zn(e,t){let r=`Summarize this text:
|
|
39
39
|
${e}`,a="";if(t)switch(t){case oo.SummariseLength.SHORT:a="In 1-2 concise sentences, ";break;case oo.SummariseLength.MEDIUM:a="In 2-3 paragraphs, ";break;case oo.SummariseLength.LONG:a="In multiple detailed paragraphs, ";break}return new K().addUserMessage(`${a}${r}.
|
|
40
40
|
Only return the summary.`)}function Ck(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
|
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"dist"
|
|
5
5
|
],
|
|
6
6
|
"license": "UNLICENSED",
|
|
7
|
-
"version": "3.13.
|
|
7
|
+
"version": "3.13.13",
|
|
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": "12d0bfb1846c841fb2043159bfadc99b4424ae09"
|
|
77
77
|
}
|