@budibase/pro 3.23.13 → 3.23.15
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/ai/models/litellm.d.ts +6 -0
- package/dist/index.js +28 -28
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
"use strict";var PI=Object.create;var kr=Object.defineProperty;var UI=Object.getOwnPropertyDescriptor;var qI=Object.getOwnPropertyNames;var DI=Object.getPrototypeOf,kI=Object.prototype.hasOwnProperty;var a=(e,t)=>kr(e,"name",{value:t,configurable:!0});var p=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),x=(e,t)=>{for(var r in t)kr(e,r,{get:t[r],enumerable:!0})},zu=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of qI(t))!kI.call(e,o)&&o!==r&&kr(e,o,{get:()=>t[o],enumerable:!(n=UI(t,o))||n.enumerable});return e};var F=(e,t,r)=>(r=e!=null?PI(DI(e)):{},zu(t||!e||!e.__esModule?kr(r,"default",{value:e,enumerable:!0}):r,e)),MI=e=>zu(kr({},"__esModule",{value:!0}),e);var mn=p((CG,kc)=>{"use strict";function DS(e,t){for(var r=-1,n=t.length,o=e.length;++r<n;)e[o+r]=t[r];return e}a(DS,"arrayPush");kc.exports=DS});var Ko=p((LG,Mc)=>{"use strict";var kS=typeof global=="object"&&global&&global.Object===Object&&global;Mc.exports=kS});var _e=p((PG,Nc)=>{"use strict";var MS=Ko(),NS=typeof self=="object"&&self&&self.Object===Object&&self,BS=MS||NS||Function("return this")();Nc.exports=BS});var Qt=p((UG,Bc)=>{"use strict";var GS=_e(),FS=GS.Symbol;Bc.exports=FS});var $c=p((qG,Wc)=>{"use strict";var Gc=Qt(),Fc=Object.prototype,WS=Fc.hasOwnProperty,$S=Fc.toString,pa=Gc?Gc.toStringTag:void 0;function jS(e){var t=WS.call(e,pa),r=e[pa];try{e[pa]=void 0;var n=!0}catch{}var o=$S.call(e);return n&&(t?e[pa]=r:delete e[pa]),o}a(jS,"getRawTag");Wc.exports=jS});var Qc=p((kG,jc)=>{"use strict";var QS=Object.prototype,KS=QS.toString;function VS(e){return KS.call(e)}a(VS,"objectToString");jc.exports=VS});var Pt=p((NG,Hc)=>{"use strict";var Kc=Qt(),HS=$c(),YS=Qc(),zS="[object Null]",JS="[object Undefined]",Vc=Kc?Kc.toStringTag:void 0;function XS(e){return e==null?e===void 0?JS:zS:Vc&&Vc in Object(e)?HS(e):YS(e)}a(XS,"baseGetTag");Hc.exports=XS});var ke=p((GG,Yc)=>{"use strict";function ZS(e){return e!=null&&typeof e=="object"}a(ZS,"isObjectLike");Yc.exports=ZS});var Jc=p((WG,zc)=>{"use strict";var ew=Pt(),tw=ke(),rw="[object Arguments]";function aw(e){return tw(e)&&ew(e)==rw}a(aw,"baseIsArguments");zc.exports=aw});var la=p((jG,ep)=>{"use strict";var Xc=Jc(),nw=ke(),Zc=Object.prototype,ow=Zc.hasOwnProperty,sw=Zc.propertyIsEnumerable,iw=Xc(function(){return arguments}())?Xc:function(e){return nw(e)&&ow.call(e,"callee")&&!sw.call(e,"callee")};ep.exports=iw});var Ee=p((QG,tp)=>{"use strict";var uw=Array.isArray;tp.exports=uw});var op=p((KG,np)=>{"use strict";var rp=Qt(),cw=la(),pw=Ee(),ap=rp?rp.isConcatSpreadable:void 0;function lw(e){return pw(e)||cw(e)||!!(ap&&e&&e[ap])}a(lw,"isFlattenable");np.exports=lw});var Vo=p((HG,ip)=>{"use strict";var dw=mn(),fw=op();function sp(e,t,r,n,o){var s=-1,i=e.length;for(r||(r=fw),o||(o=[]);++s<i;){var u=e[s];t>0&&r(u)?t>1?sp(u,t-1,r,n,o):dw(o,u):n||(o[o.length]=u)}return o}a(sp,"baseFlatten");ip.exports=sp});var da=p((zG,up)=>{"use strict";function mw(e){return e}a(mw,"identity");up.exports=mw});var gn=p((XG,cp)=>{"use strict";function gw(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)}a(gw,"apply");cp.exports=gw});var Ho=p((eF,lp)=>{"use strict";var hw=gn(),pp=Math.max;function yw(e,t,r){return t=pp(t===void 0?e.length-1:t,0),function(){for(var n=arguments,o=-1,s=pp(n.length-t,0),i=Array(s);++o<s;)i[o]=n[t+o];o=-1;for(var u=Array(t+1);++o<t;)u[o]=n[o];return u[t]=r(i),hw(e,this,u)}}a(yw,"overRest");lp.exports=yw});var fp=p((rF,dp)=>{"use strict";function Aw(e){return function(){return e}}a(Aw,"constant");dp.exports=Aw});var Qe=p((nF,mp)=>{"use strict";function bw(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}a(bw,"isObject");mp.exports=bw});var fa=p((sF,gp)=>{"use strict";var Iw=Pt(),Sw=Qe(),ww="[object AsyncFunction]",Tw="[object Function]",Ew="[object GeneratorFunction]",Rw="[object Proxy]";function vw(e){if(!Sw(e))return!1;var t=Iw(e);return t==Tw||t==Ew||t==ww||t==Rw}a(vw,"isFunction");gp.exports=vw});var yp=p((uF,hp)=>{"use strict";var _w=_e(),xw=_w["__core-js_shared__"];hp.exports=xw});var Ip=p((cF,bp)=>{"use strict";var Yo=yp(),Ap=function(){var e=/[^.]+$/.exec(Yo&&Yo.keys&&Yo.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function Cw(e){return!!Ap&&Ap in e}a(Cw,"isMasked");bp.exports=Cw});var zo=p((lF,Sp)=>{"use strict";var Ow=Function.prototype,Lw=Ow.toString;function Pw(e){if(e!=null){try{return Lw.call(e)}catch{}try{return e+""}catch{}}return""}a(Pw,"toSource");Sp.exports=Pw});var Tp=p((fF,wp)=>{"use strict";var Uw=fa(),qw=Ip(),Dw=Qe(),kw=zo(),Mw=/[\\^$.*+?()[\]{}|]/g,Nw=/^\[object .+?Constructor\]$/,Bw=Function.prototype,Gw=Object.prototype,Fw=Bw.toString,Ww=Gw.hasOwnProperty,$w=RegExp("^"+Fw.call(Ww).replace(Mw,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function jw(e){if(!Dw(e)||qw(e))return!1;var t=Uw(e)?$w:Nw;return t.test(kw(e))}a(jw,"baseIsNative");wp.exports=jw});var Rp=p((gF,Ep)=>{"use strict";function Qw(e,t){return e?.[t]}a(Qw,"getValue");Ep.exports=Qw});var Ut=p((yF,vp)=>{"use strict";var Kw=Tp(),Vw=Rp();function Hw(e,t){var r=Vw(e,t);return Kw(r)?r:void 0}a(Hw,"getNative");vp.exports=Hw});var Jo=p((bF,_p)=>{"use strict";var Yw=Ut(),zw=function(){try{var e=Yw(Object,"defineProperty");return e({},"",{}),e}catch{}}();_p.exports=zw});var Op=p((IF,Cp)=>{"use strict";var Jw=fp(),xp=Jo(),Xw=da(),Zw=xp?function(e,t){return xp(e,"toString",{configurable:!0,enumerable:!1,value:Jw(t),writable:!0})}:Xw;Cp.exports=Zw});var Xo=p((SF,Lp)=>{"use strict";var eT=800,tT=16,rT=Date.now;function aT(e){var t=0,r=0;return function(){var n=rT(),o=tT-(n-r);if(r=n,o>0){if(++t>=eT)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}a(aT,"shortOut");Lp.exports=aT});var hn=p((TF,Pp)=>{"use strict";var nT=Op(),oT=Xo(),sT=oT(nT);Pp.exports=sT});var Zo=p((EF,Up)=>{"use strict";var iT=da(),uT=Ho(),cT=hn();function pT(e,t){return cT(uT(e,t,iT),e+"")}a(pT,"baseRest");Up.exports=pT});var ma=p((vF,qp)=>{"use strict";var lT=Ut(),dT=lT(Object,"create");qp.exports=dT});var Mp=p((_F,kp)=>{"use strict";var Dp=ma();function fT(){this.__data__=Dp?Dp(null):{},this.size=0}a(fT,"hashClear");kp.exports=fT});var Bp=p((CF,Np)=>{"use strict";function mT(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}a(mT,"hashDelete");Np.exports=mT});var Fp=p((LF,Gp)=>{"use strict";var gT=ma(),hT="__lodash_hash_undefined__",yT=Object.prototype,AT=yT.hasOwnProperty;function bT(e){var t=this.__data__;if(gT){var r=t[e];return r===hT?void 0:r}return AT.call(t,e)?t[e]:void 0}a(bT,"hashGet");Gp.exports=bT});var $p=p((UF,Wp)=>{"use strict";var IT=ma(),ST=Object.prototype,wT=ST.hasOwnProperty;function TT(e){var t=this.__data__;return IT?t[e]!==void 0:wT.call(t,e)}a(TT,"hashHas");Wp.exports=TT});var Qp=p((DF,jp)=>{"use strict";var ET=ma(),RT="__lodash_hash_undefined__";function vT(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=ET&&t===void 0?RT:t,this}a(vT,"hashSet");jp.exports=vT});var Vp=p((MF,Kp)=>{"use strict";var _T=Mp(),xT=Bp(),CT=Fp(),OT=$p(),LT=Qp();function pr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}a(pr,"Hash");pr.prototype.clear=_T;pr.prototype.delete=xT;pr.prototype.get=CT;pr.prototype.has=OT;pr.prototype.set=LT;Kp.exports=pr});var Yp=p((BF,Hp)=>{"use strict";function PT(){this.__data__=[],this.size=0}a(PT,"listCacheClear");Hp.exports=PT});var lr=p((FF,zp)=>{"use strict";function UT(e,t){return e===t||e!==e&&t!==t}a(UT,"eq");zp.exports=UT});var ga=p(($F,Jp)=>{"use strict";var qT=lr();function DT(e,t){for(var r=e.length;r--;)if(qT(e[r][0],t))return r;return-1}a(DT,"assocIndexOf");Jp.exports=DT});var Zp=p((QF,Xp)=>{"use strict";var kT=ga(),MT=Array.prototype,NT=MT.splice;function BT(e){var t=this.__data__,r=kT(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():NT.call(t,r,1),--this.size,!0}a(BT,"listCacheDelete");Xp.exports=BT});var tl=p((VF,el)=>{"use strict";var GT=ga();function FT(e){var t=this.__data__,r=GT(t,e);return r<0?void 0:t[r][1]}a(FT,"listCacheGet");el.exports=FT});var al=p((YF,rl)=>{"use strict";var WT=ga();function $T(e){return WT(this.__data__,e)>-1}a($T,"listCacheHas");rl.exports=$T});var ol=p((JF,nl)=>{"use strict";var jT=ga();function QT(e,t){var r=this.__data__,n=jT(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}a(QT,"listCacheSet");nl.exports=QT});var ha=p((ZF,sl)=>{"use strict";var KT=Yp(),VT=Zp(),HT=tl(),YT=al(),zT=ol();function dr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}a(dr,"ListCache");dr.prototype.clear=KT;dr.prototype.delete=VT;dr.prototype.get=HT;dr.prototype.has=YT;dr.prototype.set=zT;sl.exports=dr});var yn=p((t1,il)=>{"use strict";var JT=Ut(),XT=_e(),ZT=JT(XT,"Map");il.exports=ZT});var pl=p((r1,cl)=>{"use strict";var ul=Vp(),eE=ha(),tE=yn();function rE(){this.size=0,this.__data__={hash:new ul,map:new(tE||eE),string:new ul}}a(rE,"mapCacheClear");cl.exports=rE});var dl=p((n1,ll)=>{"use strict";function aE(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}a(aE,"isKeyable");ll.exports=aE});var ya=p((s1,fl)=>{"use strict";var nE=dl();function oE(e,t){var r=e.__data__;return nE(t)?r[typeof t=="string"?"string":"hash"]:r.map}a(oE,"getMapData");fl.exports=oE});var gl=p((u1,ml)=>{"use strict";var sE=ya();function iE(e){var t=sE(this,e).delete(e);return this.size-=t?1:0,t}a(iE,"mapCacheDelete");ml.exports=iE});var yl=p((p1,hl)=>{"use strict";var uE=ya();function cE(e){return uE(this,e).get(e)}a(cE,"mapCacheGet");hl.exports=cE});var bl=p((d1,Al)=>{"use strict";var pE=ya();function lE(e){return pE(this,e).has(e)}a(lE,"mapCacheHas");Al.exports=lE});var Sl=p((m1,Il)=>{"use strict";var dE=ya();function fE(e,t){var r=dE(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}a(fE,"mapCacheSet");Il.exports=fE});var An=p((h1,wl)=>{"use strict";var mE=pl(),gE=gl(),hE=yl(),yE=bl(),AE=Sl();function fr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}a(fr,"MapCache");fr.prototype.clear=mE;fr.prototype.delete=gE;fr.prototype.get=hE;fr.prototype.has=yE;fr.prototype.set=AE;wl.exports=fr});var El=p((A1,Tl)=>{"use strict";var bE="__lodash_hash_undefined__";function IE(e){return this.__data__.set(e,bE),this}a(IE,"setCacheAdd");Tl.exports=IE});var vl=p((I1,Rl)=>{"use strict";function SE(e){return this.__data__.has(e)}a(SE,"setCacheHas");Rl.exports=SE});var es=p((w1,_l)=>{"use strict";var wE=An(),TE=El(),EE=vl();function bn(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new wE;++t<r;)this.add(e[t])}a(bn,"SetCache");bn.prototype.add=bn.prototype.push=TE;bn.prototype.has=EE;_l.exports=bn});var Cl=p((E1,xl)=>{"use strict";function RE(e,t,r,n){for(var o=e.length,s=r+(n?1:-1);n?s--:++s<o;)if(t(e[s],s,e))return s;return-1}a(RE,"baseFindIndex");xl.exports=RE});var Ll=p((v1,Ol)=>{"use strict";function vE(e){return e!==e}a(vE,"baseIsNaN");Ol.exports=vE});var Ul=p((x1,Pl)=>{"use strict";function _E(e,t,r){for(var n=r-1,o=e.length;++n<o;)if(e[n]===t)return n;return-1}a(_E,"strictIndexOf");Pl.exports=_E});var Dl=p((O1,ql)=>{"use strict";var xE=Cl(),CE=Ll(),OE=Ul();function LE(e,t,r){return t===t?OE(e,t,r):xE(e,CE,r)}a(LE,"baseIndexOf");ql.exports=LE});var ts=p((P1,kl)=>{"use strict";var PE=Dl();function UE(e,t){var r=e==null?0:e.length;return!!r&&PE(e,t,0)>-1}a(UE,"arrayIncludes");kl.exports=UE});var Nl=p((q1,Ml)=>{"use strict";function qE(e,t,r){for(var n=-1,o=e==null?0:e.length;++n<o;)if(r(t,e[n]))return!0;return!1}a(qE,"arrayIncludesWith");Ml.exports=qE});var rs=p((k1,Bl)=>{"use strict";function DE(e,t){return e.has(t)}a(DE,"cacheHas");Bl.exports=DE});var as=p((N1,Gl)=>{"use strict";var kE=Ut(),ME=_e(),NE=kE(ME,"Set");Gl.exports=NE});var ns=p((B1,Fl)=>{"use strict";function BE(){}a(BE,"noop");Fl.exports=BE});var In=p((F1,Wl)=>{"use strict";function GE(e){var t=-1,r=Array(e.size);return e.forEach(function(n){r[++t]=n}),r}a(GE,"setToArray");Wl.exports=GE});var jl=p(($1,$l)=>{"use strict";var os=as(),FE=ns(),WE=In(),$E=1/0,jE=os&&1/WE(new os([,-0]))[1]==$E?function(e){return new os(e)}:FE;$l.exports=jE});var Kl=p((j1,Ql)=>{"use strict";var QE=es(),KE=ts(),VE=Nl(),HE=rs(),YE=jl(),zE=In(),JE=200;function XE(e,t,r){var n=-1,o=KE,s=e.length,i=!0,u=[],c=u;if(r)i=!1,o=VE;else if(s>=JE){var f=t?null:YE(e);if(f)return zE(f);i=!1,o=HE,c=new QE}else c=t?[]:u;e:for(;++n<s;){var g=e[n],h=t?t(g):g;if(g=r||g!==0?g:0,i&&h===h){for(var y=c.length;y--;)if(c[y]===h)continue e;t&&c.push(h),u.push(g)}else o(c,h,r)||(c!==u&&c.push(h),u.push(g))}return u}a(XE,"baseUniq");Ql.exports=XE});var Sn=p((K1,Vl)=>{"use strict";var ZE=9007199254740991;function eR(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=ZE}a(eR,"isLength");Vl.exports=eR});var mr=p((H1,Hl)=>{"use strict";var tR=fa(),rR=Sn();function aR(e){return e!=null&&rR(e.length)&&!tR(e)}a(aR,"isArrayLike");Hl.exports=aR});var ss=p((z1,Yl)=>{"use strict";var nR=mr(),oR=ke();function sR(e){return oR(e)&&nR(e)}a(sR,"isArrayLikeObject");Yl.exports=sR});var Jl=p((X1,zl)=>{"use strict";var iR=Vo(),uR=Zo(),cR=Kl(),pR=ss(),lR=uR(function(e){return cR(iR(e,1,pR,!0))});zl.exports=lR});var Zl=p((Z1,Xl)=>{"use strict";var dR=ha();function fR(){this.__data__=new dR,this.size=0}a(fR,"stackClear");Xl.exports=fR});var td=p((tW,ed)=>{"use strict";function mR(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}a(mR,"stackDelete");ed.exports=mR});var ad=p((aW,rd)=>{"use strict";function gR(e){return this.__data__.get(e)}a(gR,"stackGet");rd.exports=gR});var od=p((oW,nd)=>{"use strict";function hR(e){return this.__data__.has(e)}a(hR,"stackHas");nd.exports=hR});var id=p((iW,sd)=>{"use strict";var yR=ha(),AR=yn(),bR=An(),IR=200;function SR(e,t){var r=this.__data__;if(r instanceof yR){var n=r.__data__;if(!AR||n.length<IR-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new bR(n)}return r.set(e,t),this.size=r.size,this}a(SR,"stackSet");sd.exports=SR});var Aa=p((cW,ud)=>{"use strict";var wR=ha(),TR=Zl(),ER=td(),RR=ad(),vR=od(),_R=id();function gr(e){var t=this.__data__=new wR(e);this.size=t.size}a(gr,"Stack");gr.prototype.clear=TR;gr.prototype.delete=ER;gr.prototype.get=RR;gr.prototype.has=vR;gr.prototype.set=_R;ud.exports=gr});var ba=p((lW,pd)=>{"use strict";var cd=Jo();function xR(e,t,r){t=="__proto__"&&cd?cd(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}a(xR,"baseAssignValue");pd.exports=xR});var is=p((fW,ld)=>{"use strict";var CR=ba(),OR=lr();function LR(e,t,r){(r!==void 0&&!OR(e[t],r)||r===void 0&&!(t in e))&&CR(e,t,r)}a(LR,"assignMergeValue");ld.exports=LR});var fd=p((gW,dd)=>{"use strict";function PR(e){return function(t,r,n){for(var o=-1,s=Object(t),i=n(t),u=i.length;u--;){var c=i[e?u:++o];if(r(s[c],c,s)===!1)break}return t}}a(PR,"createBaseFor");dd.exports=PR});var us=p((yW,md)=>{"use strict";var UR=fd(),qR=UR();md.exports=qR});var cs=p((Ia,hr)=>{"use strict";var DR=_e(),Ad=typeof Ia=="object"&&Ia&&!Ia.nodeType&&Ia,gd=Ad&&typeof hr=="object"&&hr&&!hr.nodeType&&hr,kR=gd&&gd.exports===Ad,hd=kR?DR.Buffer:void 0,yd=hd?hd.allocUnsafe:void 0;function MR(e,t){if(t)return e.slice();var r=e.length,n=yd?yd(r):new e.constructor(r);return e.copy(n),n}a(MR,"cloneBuffer");hr.exports=MR});var ps=p((bW,bd)=>{"use strict";var NR=_e(),BR=NR.Uint8Array;bd.exports=BR});var wn=p((IW,Sd)=>{"use strict";var Id=ps();function GR(e){var t=new e.constructor(e.byteLength);return new Id(t).set(new Id(e)),t}a(GR,"cloneArrayBuffer");Sd.exports=GR});var ls=p((wW,wd)=>{"use strict";var FR=wn();function WR(e,t){var r=t?FR(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}a(WR,"cloneTypedArray");wd.exports=WR});var yr=p((EW,Td)=>{"use strict";function $R(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t}a($R,"copyArray");Td.exports=$R});var Sa=p((vW,Rd)=>{"use strict";var jR=Qe(),Ed=Object.create,QR=function(){function e(){}return a(e,"object"),function(t){if(!jR(t))return{};if(Ed)return Ed(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();Rd.exports=QR});var ds=p((xW,vd)=>{"use strict";function KR(e,t){return function(r){return e(t(r))}}a(KR,"overArg");vd.exports=KR});var Tn=p((OW,_d)=>{"use strict";var VR=ds(),HR=VR(Object.getPrototypeOf,Object);_d.exports=HR});var En=p((LW,xd)=>{"use strict";var YR=Object.prototype;function zR(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||YR;return e===r}a(zR,"isPrototype");xd.exports=zR});var fs=p((UW,Cd)=>{"use strict";var JR=Sa(),XR=Tn(),ZR=En();function ev(e){return typeof e.constructor=="function"&&!ZR(e)?JR(XR(e)):{}}a(ev,"initCloneObject");Cd.exports=ev});var Ld=p((DW,Od)=>{"use strict";function tv(){return!1}a(tv,"stubFalse");Od.exports=tv});var Ta=p((wa,Ar)=>{"use strict";var rv=_e(),av=Ld(),qd=typeof wa=="object"&&wa&&!wa.nodeType&&wa,Pd=qd&&typeof Ar=="object"&&Ar&&!Ar.nodeType&&Ar,nv=Pd&&Pd.exports===qd,Ud=nv?rv.Buffer:void 0,ov=Ud?Ud.isBuffer:void 0,sv=ov||av;Ar.exports=sv});var ms=p((MW,kd)=>{"use strict";var iv=Pt(),uv=Tn(),cv=ke(),pv="[object Object]",lv=Function.prototype,dv=Object.prototype,Dd=lv.toString,fv=dv.hasOwnProperty,mv=Dd.call(Object);function gv(e){if(!cv(e)||iv(e)!=pv)return!1;var t=uv(e);if(t===null)return!0;var r=fv.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Dd.call(r)==mv}a(gv,"isPlainObject");kd.exports=gv});var Nd=p((BW,Md)=>{"use strict";var hv=Pt(),yv=Sn(),Av=ke(),bv="[object Arguments]",Iv="[object Array]",Sv="[object Boolean]",wv="[object Date]",Tv="[object Error]",Ev="[object Function]",Rv="[object Map]",vv="[object Number]",_v="[object Object]",xv="[object RegExp]",Cv="[object Set]",Ov="[object String]",Lv="[object WeakMap]",Pv="[object ArrayBuffer]",Uv="[object DataView]",qv="[object Float32Array]",Dv="[object Float64Array]",kv="[object Int8Array]",Mv="[object Int16Array]",Nv="[object Int32Array]",Bv="[object Uint8Array]",Gv="[object Uint8ClampedArray]",Fv="[object Uint16Array]",Wv="[object Uint32Array]",H={};H[qv]=H[Dv]=H[kv]=H[Mv]=H[Nv]=H[Bv]=H[Gv]=H[Fv]=H[Wv]=!0;H[bv]=H[Iv]=H[Pv]=H[Sv]=H[Uv]=H[wv]=H[Tv]=H[Ev]=H[Rv]=H[vv]=H[_v]=H[xv]=H[Cv]=H[Ov]=H[Lv]=!1;function $v(e){return Av(e)&&yv(e.length)&&!!H[hv(e)]}a($v,"baseIsTypedArray");Md.exports=$v});var Rn=p((FW,Bd)=>{"use strict";function jv(e){return function(t){return e(t)}}a(jv,"baseUnary");Bd.exports=jv});var vn=p((Ea,br)=>{"use strict";var Qv=Ko(),Gd=typeof Ea=="object"&&Ea&&!Ea.nodeType&&Ea,Ra=Gd&&typeof br=="object"&&br&&!br.nodeType&&br,Kv=Ra&&Ra.exports===Gd,gs=Kv&&Qv.process,Vv=function(){try{var e=Ra&&Ra.require&&Ra.require("util").types;return e||gs&&gs.binding&&gs.binding("util")}catch{}}();br.exports=Vv});var _n=p(($W,$d)=>{"use strict";var Hv=Nd(),Yv=Rn(),Fd=vn(),Wd=Fd&&Fd.isTypedArray,zv=Wd?Yv(Wd):Hv;$d.exports=zv});var hs=p((jW,jd)=>{"use strict";function Jv(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}a(Jv,"safeGet");jd.exports=Jv});var ys=p((KW,Qd)=>{"use strict";var Xv=ba(),Zv=lr(),e_=Object.prototype,t_=e_.hasOwnProperty;function r_(e,t,r){var n=e[t];(!(t_.call(e,t)&&Zv(n,r))||r===void 0&&!(t in e))&&Xv(e,t,r)}a(r_,"assignValue");Qd.exports=r_});var Ir=p((HW,Kd)=>{"use strict";var a_=ys(),n_=ba();function o_(e,t,r,n){var o=!r;r||(r={});for(var s=-1,i=t.length;++s<i;){var u=t[s],c=n?n(r[u],e[u],u,r,e):void 0;c===void 0&&(c=e[u]),o?n_(r,u,c):a_(r,u,c)}return r}a(o_,"copyObject");Kd.exports=o_});var Hd=p((zW,Vd)=>{"use strict";function s_(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}a(s_,"baseTimes");Vd.exports=s_});var va=p((XW,Yd)=>{"use strict";var i_=9007199254740991,u_=/^(?:0|[1-9]\d*)$/;function c_(e,t){var r=typeof e;return t=t??i_,!!t&&(r=="number"||r!="symbol"&&u_.test(e))&&e>-1&&e%1==0&&e<t}a(c_,"isIndex");Yd.exports=c_});var As=p((e$,zd)=>{"use strict";var p_=Hd(),l_=la(),d_=Ee(),f_=Ta(),m_=va(),g_=_n(),h_=Object.prototype,y_=h_.hasOwnProperty;function A_(e,t){var r=d_(e),n=!r&&l_(e),o=!r&&!n&&f_(e),s=!r&&!n&&!o&&g_(e),i=r||n||o||s,u=i?p_(e.length,String):[],c=u.length;for(var f in e)(t||y_.call(e,f))&&!(i&&(f=="length"||o&&(f=="offset"||f=="parent")||s&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||m_(f,c)))&&u.push(f);return u}a(A_,"arrayLikeKeys");zd.exports=A_});var Xd=p((r$,Jd)=>{"use strict";function b_(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}a(b_,"nativeKeysIn");Jd.exports=b_});var ef=p((n$,Zd)=>{"use strict";var I_=Qe(),S_=En(),w_=Xd(),T_=Object.prototype,E_=T_.hasOwnProperty;function R_(e){if(!I_(e))return w_(e);var t=S_(e),r=[];for(var n in e)n=="constructor"&&(t||!E_.call(e,n))||r.push(n);return r}a(R_,"baseKeysIn");Zd.exports=R_});var Sr=p((s$,tf)=>{"use strict";var v_=As(),__=ef(),x_=mr();function C_(e){return x_(e)?v_(e,!0):__(e)}a(C_,"keysIn");tf.exports=C_});var af=p((u$,rf)=>{"use strict";var O_=Ir(),L_=Sr();function P_(e){return O_(e,L_(e))}a(P_,"toPlainObject");rf.exports=P_});var pf=p((p$,cf)=>{"use strict";var nf=is(),U_=cs(),q_=ls(),D_=yr(),k_=fs(),of=la(),sf=Ee(),M_=ss(),N_=Ta(),B_=fa(),G_=Qe(),F_=ms(),W_=_n(),uf=hs(),$_=af();function j_(e,t,r,n,o,s,i){var u=uf(e,r),c=uf(t,r),f=i.get(c);if(f){nf(e,r,f);return}var g=s?s(u,c,r+"",e,t,i):void 0,h=g===void 0;if(h){var y=sf(c),E=!y&&N_(c),M=!y&&!E&&W_(c);g=c,y||E||M?sf(u)?g=u:M_(u)?g=D_(u):E?(h=!1,g=U_(c,!0)):M?(h=!1,g=q_(c,!0)):g=[]:F_(c)||of(c)?(g=u,of(u)?g=$_(u):(!G_(u)||B_(u))&&(g=k_(c))):h=!1}h&&(i.set(c,g),o(g,c,n,s,i),i.delete(c)),nf(e,r,g)}a(j_,"baseMergeDeep");cf.exports=j_});var ff=p((d$,df)=>{"use strict";var Q_=Aa(),K_=is(),V_=us(),H_=pf(),Y_=Qe(),z_=Sr(),J_=hs();function lf(e,t,r,n,o){e!==t&&V_(t,function(s,i){if(o||(o=new Q_),Y_(s))H_(e,t,i,r,lf,n,o);else{var u=n?n(J_(e,i),s,i+"",e,t,o):void 0;u===void 0&&(u=s),K_(e,i,u)}},z_)}a(lf,"baseMerge");df.exports=lf});var gf=p((m$,mf)=>{"use strict";var X_=lr(),Z_=mr(),ex=va(),tx=Qe();function rx(e,t,r){if(!tx(r))return!1;var n=typeof t;return(n=="number"?Z_(r)&&ex(t,r.length):n=="string"&&t in r)?X_(r[t],e):!1}a(rx,"isIterateeCall");mf.exports=rx});var yf=p((h$,hf)=>{"use strict";var ax=Zo(),nx=gf();function ox(e){return ax(function(t,r){var n=-1,o=r.length,s=o>1?r[o-1]:void 0,i=o>2?r[2]:void 0;for(s=e.length>3&&typeof s=="function"?(o--,s):void 0,i&&nx(r[0],r[1],i)&&(s=o<3?void 0:s,o=1),t=Object(t);++n<o;){var u=r[n];u&&e(t,u,n,s)}return t})}a(ox,"createAssigner");hf.exports=ox});var bs=p((A$,Af)=>{"use strict";var sx=ff(),ix=yf(),ux=ix(function(e,t,r){sx(e,t,r)});Af.exports=ux});var Sm=p(Ue=>{"use strict";Ue.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"};Ue.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"]};Ue.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};Ue.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};Ue.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};Ue.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]};Ue.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}};Ue.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}};Ue.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=Ue.aliasToReal,r={};for(var n in t){var o=t[n];e.call(r,o)?r[o].push(n):r[o]=[n]}return r}();Ue.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"};Ue.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};Ue.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 mi=p((vK,wm)=>{"use strict";wm.exports={}});var vm=p((_K,Rm)=>{"use strict";var me=Sm(),$C=mi(),Tm=Array.prototype.push;function jC(e,t){return t==2?function(r,n){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}a(jC,"baseArity");function gi(e,t){return t==2?function(r,n){return e(r,n)}:function(r){return e(r)}}a(gi,"baseAry");function Em(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}a(Em,"cloneArray");function QC(e){return function(t){return e({},t)}}a(QC,"createCloner");function KC(e,t){return function(){for(var r=arguments.length,n=r-1,o=Array(r);r--;)o[r]=arguments[r];var s=o[t],i=o.slice(0,t);return s&&Tm.apply(i,s),t!=n&&Tm.apply(i,o.slice(t+1)),e.apply(this,i)}}a(KC,"flatSpread");function hi(e,t){return function(){var r=arguments.length;if(r){for(var n=Array(r);r--;)n[r]=arguments[r];var o=n[0]=t.apply(void 0,n);return e.apply(void 0,n),o}}}a(hi,"wrapImmutable");function yi(e,t,r,n){var o=typeof t=="function",s=t===Object(t);if(s&&(n=r,r=t,t=void 0),r==null)throw new TypeError;n||(n={});var i={cap:"cap"in n?n.cap:!0,curry:"curry"in n?n.curry:!0,fixed:"fixed"in n?n.fixed:!0,immutable:"immutable"in n?n.immutable:!0,rearg:"rearg"in n?n.rearg:!0},u=o?r:$C,c="curry"in n&&n.curry,f="fixed"in n&&n.fixed,g="rearg"in n&&n.rearg,h=o?r.runInContext():void 0,y=o?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},E=y.ary,M=y.assign,k=y.clone,D=y.curry,C=y.forEach,W=y.isArray,ye=y.isError,ie=y.isFunction,Ye=y.isWeakMap,nt=y.keys,ot=y.rearg,Y=y.toInteger,G=y.toPath,Gt=nt(me.aryMethod),Ya={castArray:function(R){return function(){var b=arguments[0];return W(b)?R(Em(b)):R.apply(void 0,arguments)}},iteratee:function(R){return function(){var b=arguments[0],I=arguments[1],v=R(b,I),q=v.length;return i.cap&&typeof I=="number"?(I=I>2?I-2:1,q&&q<=I?v:gi(v,I)):v}},mixin:function(R){return function(b){var I=this;if(!ie(I))return R(I,Object(b));var v=[];return C(nt(b),function(q){ie(b[q])&&v.push([q,I.prototype[q]])}),R(I,Object(b)),C(v,function(q){var oe=q[1];ie(oe)?I.prototype[q[0]]=oe:delete I.prototype[q[0]]}),I}},nthArg:function(R){return function(b){var I=b<0?1:Y(b)+1;return D(R(b),I)}},rearg:function(R){return function(b,I){var v=I?I.length:0;return D(R(b,I),v)}},runInContext:function(R){return function(b){return yi(e,R(b),n)}}};function O(R,b){if(i.cap){var I=me.iterateeRearg[R];if(I)return Z(b,I);var v=!o&&me.iterateeAry[R];if(v)return $(b,v)}return b}a(O,"castCap");function w(R,b,I){return c||i.curry&&I>1?D(b,I):b}a(w,"castCurry");function A(R,b,I){if(i.fixed&&(f||!me.skipFixed[R])){var v=me.methodSpread[R],q=v&&v.start;return q===void 0?E(b,I):KC(b,q)}return b}a(A,"castFixed");function _(R,b,I){return i.rearg&&I>1&&(g||!me.skipRearg[R])?ot(b,me.methodRearg[R]||me.aryRearg[I]):b}a(_,"castRearg");function S(R,b){b=G(b);for(var I=-1,v=b.length,q=v-1,oe=k(Object(R)),Re=oe;Re!=null&&++I<v;){var We=b[I],st=Re[We];st!=null&&!(ie(st)||ye(st)||Ye(st))&&(Re[We]=k(I==q?st:Object(st))),Re=Re[We]}return oe}a(S,"cloneByPath");function U(R){return K.runInContext.convert(R)(void 0)}a(U,"convertLib");function P(R,b){var I=me.aliasToReal[R]||R,v=me.remap[I]||I,q=n;return function(oe){var Re=o?h:y,We=o?h[v]:b,st=M(M({},q),oe);return yi(Re,I,We,st)}}a(P,"createConverter");function $(R,b){return ne(R,function(I){return typeof I=="function"?gi(I,b):I})}a($,"iterateeAry");function Z(R,b){return ne(R,function(I){var v=b.length;return jC(ot(gi(I,v),b),v)})}a(Z,"iterateeRearg");function ne(R,b){return function(){var I=arguments.length;if(!I)return R();for(var v=Array(I);I--;)v[I]=arguments[I];var q=i.rearg?0:I-1;return v[q]=b(v[q]),R.apply(void 0,v)}}a(ne,"overArg");function pe(R,b,I){var v,q=me.aliasToReal[R]||R,oe=b,Re=Ya[q];return Re?oe=Re(b):i.immutable&&(me.mutate.array[q]?oe=hi(b,Em):me.mutate.object[q]?oe=hi(b,QC(b)):me.mutate.set[q]&&(oe=hi(b,S))),C(Gt,function(We){return C(me.aryMethod[We],function(st){if(q==st){var Yu=me.methodSpread[q],LI=Yu&&Yu.afterRearg;return v=LI?A(q,_(q,oe,We),We):_(q,A(q,oe,We),We),v=O(q,v),v=w(q,v,We),!1}}),!v}),v||(v=oe),v==b&&(v=c?D(v,1):function(){return b.apply(this,arguments)}),v.convert=P(q,b),v.placeholder=b.placeholder=I,v}if(a(pe,"wrap"),!s)return pe(t,r,u);var K=r,Fe=[];return C(Gt,function(R){C(me.aryMethod[R],function(b){var I=K[me.remap[b]||b];I&&Fe.push([b,pe(b,I,K)])})}),C(nt(K),function(R){var b=K[R];if(typeof b=="function"){for(var I=Fe.length;I--;)if(Fe[I][0]==R)return;b.convert=P(R,b),Fe.push([R,b])}}),C(Fe,function(R){K[R[0]]=R[1]}),K.convert=U,K.placeholder=K,C(nt(K),function(R){C(me.realToAlias[R]||[],function(b){K[b]=K[R]})}),K}a(yi,"baseConvert");Rm.exports=yi});var Ai=p((CK,_m)=>{"use strict";var VC=Ut(),HC=_e(),YC=VC(HC,"WeakMap");_m.exports=YC});var bi=p((OK,Cm)=>{"use strict";var xm=Ai(),zC=xm&&new xm;Cm.exports=zC});var Ii=p((LK,Lm)=>{"use strict";var JC=da(),Om=bi(),XC=Om?function(e,t){return Om.set(e,t),e}:JC;Lm.exports=XC});var ka=p((PK,Pm)=>{"use strict";var ZC=Sa(),eO=Qe();function tO(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=ZC(e.prototype),n=e.apply(r,t);return eO(n)?n:r}}a(tO,"createCtor");Pm.exports=tO});var qm=p((qK,Um)=>{"use strict";var rO=ka(),aO=_e(),nO=1;function oO(e,t,r){var n=t&nO,o=rO(e);function s(){var i=this&&this!==aO&&this instanceof s?o:e;return i.apply(n?r:this,arguments)}return a(s,"wrapper"),s}a(oO,"createBind");Um.exports=oO});var Si=p((kK,Dm)=>{"use strict";var sO=Math.max;function iO(e,t,r,n){for(var o=-1,s=e.length,i=r.length,u=-1,c=t.length,f=sO(s-i,0),g=Array(c+f),h=!n;++u<c;)g[u]=t[u];for(;++o<i;)(h||o<s)&&(g[r[o]]=e[o]);for(;f--;)g[u++]=e[o++];return g}a(iO,"composeArgs");Dm.exports=iO});var wi=p((NK,km)=>{"use strict";var uO=Math.max;function cO(e,t,r,n){for(var o=-1,s=e.length,i=-1,u=r.length,c=-1,f=t.length,g=uO(s-u,0),h=Array(g+f),y=!n;++o<g;)h[o]=e[o];for(var E=o;++c<f;)h[E+c]=t[c];for(;++i<u;)(y||o<s)&&(h[E+r[i]]=e[o++]);return h}a(cO,"composeArgsRight");km.exports=cO});var Nm=p((GK,Mm)=>{"use strict";function pO(e,t){for(var r=e.length,n=0;r--;)e[r]===t&&++n;return n}a(pO,"countHolders");Mm.exports=pO});var Jn=p((WK,Bm)=>{"use strict";function lO(){}a(lO,"baseLodash");Bm.exports=lO});var Zn=p((jK,Gm)=>{"use strict";var dO=Sa(),fO=Jn(),mO=4294967295;function Xn(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=mO,this.__views__=[]}a(Xn,"LazyWrapper");Xn.prototype=dO(fO.prototype);Xn.prototype.constructor=Xn;Gm.exports=Xn});var Ti=p((KK,Wm)=>{"use strict";var Fm=bi(),gO=ns(),hO=Fm?function(e){return Fm.get(e)}:gO;Wm.exports=hO});var jm=p((VK,$m)=>{"use strict";var yO={};$m.exports=yO});var Vm=p((HK,Km)=>{"use strict";var Qm=jm(),AO=Object.prototype,bO=AO.hasOwnProperty;function IO(e){for(var t=e.name+"",r=Qm[t],n=bO.call(Qm,t)?r.length:0;n--;){var o=r[n],s=o.func;if(s==null||s==e)return o.name}return t}a(IO,"getFuncName");Km.exports=IO});var Ei=p((zK,Hm)=>{"use strict";var SO=Sa(),wO=Jn();function eo(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}a(eo,"LodashWrapper");eo.prototype=SO(wO.prototype);eo.prototype.constructor=eo;Hm.exports=eo});var zm=p((XK,Ym)=>{"use strict";var TO=Zn(),EO=Ei(),RO=yr();function vO(e){if(e instanceof TO)return e.clone();var t=new EO(e.__wrapped__,e.__chain__);return t.__actions__=RO(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}a(vO,"wrapperClone");Ym.exports=vO});var Zm=p((e2,Xm)=>{"use strict";var _O=Zn(),Jm=Ei(),xO=Jn(),CO=Ee(),OO=ke(),LO=zm(),PO=Object.prototype,UO=PO.hasOwnProperty;function to(e){if(OO(e)&&!CO(e)&&!(e instanceof _O)){if(e instanceof Jm)return e;if(UO.call(e,"__wrapped__"))return LO(e)}return new Jm(e)}a(to,"lodash");to.prototype=xO.prototype;to.prototype.constructor=to;Xm.exports=to});var tg=p((r2,eg)=>{"use strict";var qO=Zn(),DO=Ti(),kO=Vm(),MO=Zm();function NO(e){var t=kO(e),r=MO[t];if(typeof r!="function"||!(t in qO.prototype))return!1;if(e===r)return!0;var n=DO(r);return!!n&&e===n[0]}a(NO,"isLaziable");eg.exports=NO});var Ri=p((n2,rg)=>{"use strict";var BO=Ii(),GO=Xo(),FO=GO(BO);rg.exports=FO});var ng=p((o2,ag)=>{"use strict";var WO=/\{\n\/\* \[wrapped with (.+)\] \*/,$O=/,? & /;function jO(e){var t=e.match(WO);return t?t[1].split($O):[]}a(jO,"getWrapDetails");ag.exports=jO});var sg=p((i2,og)=>{"use strict";var QO=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function KO(e,t){var r=t.length;if(!r)return e;var n=r-1;return t[n]=(r>1?"& ":"")+t[n],t=t.join(r>2?", ":" "),e.replace(QO,`{
|
|
1
|
+
"use strict";var UI=Object.create;var kr=Object.defineProperty;var qI=Object.getOwnPropertyDescriptor;var DI=Object.getOwnPropertyNames;var kI=Object.getPrototypeOf,MI=Object.prototype.hasOwnProperty;var a=(e,t)=>kr(e,"name",{value:t,configurable:!0});var p=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),x=(e,t)=>{for(var r in t)kr(e,r,{get:t[r],enumerable:!0})},Ju=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of DI(t))!MI.call(e,o)&&o!==r&&kr(e,o,{get:()=>t[o],enumerable:!(n=qI(t,o))||n.enumerable});return e};var G=(e,t,r)=>(r=e!=null?UI(kI(e)):{},Ju(t||!e||!e.__esModule?kr(r,"default",{value:e,enumerable:!0}):r,e)),NI=e=>Ju(kr({},"__esModule",{value:!0}),e);var mn=p((LG,Mc)=>{"use strict";function kS(e,t){for(var r=-1,n=t.length,o=e.length;++r<n;)e[o+r]=t[r];return e}a(kS,"arrayPush");Mc.exports=kS});var Vo=p((UG,Nc)=>{"use strict";var MS=typeof global=="object"&&global&&global.Object===Object&&global;Nc.exports=MS});var _e=p((qG,Bc)=>{"use strict";var NS=Vo(),BS=typeof self=="object"&&self&&self.Object===Object&&self,GS=NS||BS||Function("return this")();Bc.exports=GS});var Qt=p((DG,Gc)=>{"use strict";var FS=_e(),WS=FS.Symbol;Gc.exports=WS});var jc=p((kG,$c)=>{"use strict";var Fc=Qt(),Wc=Object.prototype,$S=Wc.hasOwnProperty,jS=Wc.toString,pa=Fc?Fc.toStringTag:void 0;function QS(e){var t=$S.call(e,pa),r=e[pa];try{e[pa]=void 0;var n=!0}catch{}var o=jS.call(e);return n&&(t?e[pa]=r:delete e[pa]),o}a(QS,"getRawTag");$c.exports=QS});var Kc=p((NG,Qc)=>{"use strict";var KS=Object.prototype,VS=KS.toString;function HS(e){return VS.call(e)}a(HS,"objectToString");Qc.exports=HS});var Pt=p((GG,Yc)=>{"use strict";var Vc=Qt(),YS=jc(),zS=Kc(),JS="[object Null]",XS="[object Undefined]",Hc=Vc?Vc.toStringTag:void 0;function ZS(e){return e==null?e===void 0?XS:JS:Hc&&Hc in Object(e)?YS(e):zS(e)}a(ZS,"baseGetTag");Yc.exports=ZS});var Me=p((WG,zc)=>{"use strict";function ew(e){return e!=null&&typeof e=="object"}a(ew,"isObjectLike");zc.exports=ew});var Xc=p((jG,Jc)=>{"use strict";var tw=Pt(),rw=Me(),aw="[object Arguments]";function nw(e){return rw(e)&&tw(e)==aw}a(nw,"baseIsArguments");Jc.exports=nw});var la=p((KG,tp)=>{"use strict";var Zc=Xc(),ow=Me(),ep=Object.prototype,sw=ep.hasOwnProperty,iw=ep.propertyIsEnumerable,uw=Zc(function(){return arguments}())?Zc:function(e){return ow(e)&&sw.call(e,"callee")&&!iw.call(e,"callee")};tp.exports=uw});var Ee=p((VG,rp)=>{"use strict";var cw=Array.isArray;rp.exports=cw});var sp=p((HG,op)=>{"use strict";var ap=Qt(),pw=la(),lw=Ee(),np=ap?ap.isConcatSpreadable:void 0;function dw(e){return lw(e)||pw(e)||!!(np&&e&&e[np])}a(dw,"isFlattenable");op.exports=dw});var Ho=p((zG,up)=>{"use strict";var fw=mn(),mw=sp();function ip(e,t,r,n,o){var s=-1,i=e.length;for(r||(r=mw),o||(o=[]);++s<i;){var u=e[s];t>0&&r(u)?t>1?ip(u,t-1,r,n,o):fw(o,u):n||(o[o.length]=u)}return o}a(ip,"baseFlatten");up.exports=ip});var da=p((XG,cp)=>{"use strict";function gw(e){return e}a(gw,"identity");cp.exports=gw});var gn=p((eF,pp)=>{"use strict";function hw(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)}a(hw,"apply");pp.exports=hw});var Yo=p((rF,dp)=>{"use strict";var yw=gn(),lp=Math.max;function Aw(e,t,r){return t=lp(t===void 0?e.length-1:t,0),function(){for(var n=arguments,o=-1,s=lp(n.length-t,0),i=Array(s);++o<s;)i[o]=n[t+o];o=-1;for(var u=Array(t+1);++o<t;)u[o]=n[o];return u[t]=r(i),yw(e,this,u)}}a(Aw,"overRest");dp.exports=Aw});var mp=p((nF,fp)=>{"use strict";function bw(e){return function(){return e}}a(bw,"constant");fp.exports=bw});var Qe=p((sF,gp)=>{"use strict";function Iw(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}a(Iw,"isObject");gp.exports=Iw});var fa=p((uF,hp)=>{"use strict";var Sw=Pt(),ww=Qe(),Tw="[object AsyncFunction]",Ew="[object Function]",Rw="[object GeneratorFunction]",vw="[object Proxy]";function _w(e){if(!ww(e))return!1;var t=Sw(e);return t==Ew||t==Rw||t==Tw||t==vw}a(_w,"isFunction");hp.exports=_w});var Ap=p((pF,yp)=>{"use strict";var xw=_e(),Cw=xw["__core-js_shared__"];yp.exports=Cw});var Sp=p((lF,Ip)=>{"use strict";var zo=Ap(),bp=function(){var e=/[^.]+$/.exec(zo&&zo.keys&&zo.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function Ow(e){return!!bp&&bp in e}a(Ow,"isMasked");Ip.exports=Ow});var Jo=p((fF,wp)=>{"use strict";var Lw=Function.prototype,Pw=Lw.toString;function Uw(e){if(e!=null){try{return Pw.call(e)}catch{}try{return e+""}catch{}}return""}a(Uw,"toSource");wp.exports=Uw});var Ep=p((gF,Tp)=>{"use strict";var qw=fa(),Dw=Sp(),kw=Qe(),Mw=Jo(),Nw=/[\\^$.*+?()[\]{}|]/g,Bw=/^\[object .+?Constructor\]$/,Gw=Function.prototype,Fw=Object.prototype,Ww=Gw.toString,$w=Fw.hasOwnProperty,jw=RegExp("^"+Ww.call($w).replace(Nw,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Qw(e){if(!kw(e)||Dw(e))return!1;var t=qw(e)?jw:Bw;return t.test(Mw(e))}a(Qw,"baseIsNative");Tp.exports=Qw});var vp=p((yF,Rp)=>{"use strict";function Kw(e,t){return e?.[t]}a(Kw,"getValue");Rp.exports=Kw});var Ut=p((bF,_p)=>{"use strict";var Vw=Ep(),Hw=vp();function Yw(e,t){var r=Hw(e,t);return Vw(r)?r:void 0}a(Yw,"getNative");_p.exports=Yw});var Xo=p((SF,xp)=>{"use strict";var zw=Ut(),Jw=function(){try{var e=zw(Object,"defineProperty");return e({},"",{}),e}catch{}}();xp.exports=Jw});var Lp=p((wF,Op)=>{"use strict";var Xw=mp(),Cp=Xo(),Zw=da(),eT=Cp?function(e,t){return Cp(e,"toString",{configurable:!0,enumerable:!1,value:Xw(t),writable:!0})}:Zw;Op.exports=eT});var Zo=p((TF,Pp)=>{"use strict";var tT=800,rT=16,aT=Date.now;function nT(e){var t=0,r=0;return function(){var n=aT(),o=rT-(n-r);if(r=n,o>0){if(++t>=tT)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}a(nT,"shortOut");Pp.exports=nT});var hn=p((RF,Up)=>{"use strict";var oT=Lp(),sT=Zo(),iT=sT(oT);Up.exports=iT});var es=p((vF,qp)=>{"use strict";var uT=da(),cT=Yo(),pT=hn();function lT(e,t){return pT(cT(e,t,uT),e+"")}a(lT,"baseRest");qp.exports=lT});var ma=p((xF,Dp)=>{"use strict";var dT=Ut(),fT=dT(Object,"create");Dp.exports=fT});var Np=p((CF,Mp)=>{"use strict";var kp=ma();function mT(){this.__data__=kp?kp(null):{},this.size=0}a(mT,"hashClear");Mp.exports=mT});var Gp=p((LF,Bp)=>{"use strict";function gT(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}a(gT,"hashDelete");Bp.exports=gT});var Wp=p((UF,Fp)=>{"use strict";var hT=ma(),yT="__lodash_hash_undefined__",AT=Object.prototype,bT=AT.hasOwnProperty;function IT(e){var t=this.__data__;if(hT){var r=t[e];return r===yT?void 0:r}return bT.call(t,e)?t[e]:void 0}a(IT,"hashGet");Fp.exports=IT});var jp=p((DF,$p)=>{"use strict";var ST=ma(),wT=Object.prototype,TT=wT.hasOwnProperty;function ET(e){var t=this.__data__;return ST?t[e]!==void 0:TT.call(t,e)}a(ET,"hashHas");$p.exports=ET});var Kp=p((MF,Qp)=>{"use strict";var RT=ma(),vT="__lodash_hash_undefined__";function _T(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=RT&&t===void 0?vT:t,this}a(_T,"hashSet");Qp.exports=_T});var Hp=p((BF,Vp)=>{"use strict";var xT=Np(),CT=Gp(),OT=Wp(),LT=jp(),PT=Kp();function pr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}a(pr,"Hash");pr.prototype.clear=xT;pr.prototype.delete=CT;pr.prototype.get=OT;pr.prototype.has=LT;pr.prototype.set=PT;Vp.exports=pr});var zp=p((FF,Yp)=>{"use strict";function UT(){this.__data__=[],this.size=0}a(UT,"listCacheClear");Yp.exports=UT});var lr=p(($F,Jp)=>{"use strict";function qT(e,t){return e===t||e!==e&&t!==t}a(qT,"eq");Jp.exports=qT});var ga=p((QF,Xp)=>{"use strict";var DT=lr();function kT(e,t){for(var r=e.length;r--;)if(DT(e[r][0],t))return r;return-1}a(kT,"assocIndexOf");Xp.exports=kT});var el=p((VF,Zp)=>{"use strict";var MT=ga(),NT=Array.prototype,BT=NT.splice;function GT(e){var t=this.__data__,r=MT(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():BT.call(t,r,1),--this.size,!0}a(GT,"listCacheDelete");Zp.exports=GT});var rl=p((YF,tl)=>{"use strict";var FT=ga();function WT(e){var t=this.__data__,r=FT(t,e);return r<0?void 0:t[r][1]}a(WT,"listCacheGet");tl.exports=WT});var nl=p((JF,al)=>{"use strict";var $T=ga();function jT(e){return $T(this.__data__,e)>-1}a(jT,"listCacheHas");al.exports=jT});var sl=p((ZF,ol)=>{"use strict";var QT=ga();function KT(e,t){var r=this.__data__,n=QT(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}a(KT,"listCacheSet");ol.exports=KT});var ha=p((t1,il)=>{"use strict";var VT=zp(),HT=el(),YT=rl(),zT=nl(),JT=sl();function dr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}a(dr,"ListCache");dr.prototype.clear=VT;dr.prototype.delete=HT;dr.prototype.get=YT;dr.prototype.has=zT;dr.prototype.set=JT;il.exports=dr});var yn=p((a1,ul)=>{"use strict";var XT=Ut(),ZT=_e(),eE=XT(ZT,"Map");ul.exports=eE});var ll=p((n1,pl)=>{"use strict";var cl=Hp(),tE=ha(),rE=yn();function aE(){this.size=0,this.__data__={hash:new cl,map:new(rE||tE),string:new cl}}a(aE,"mapCacheClear");pl.exports=aE});var fl=p((s1,dl)=>{"use strict";function nE(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}a(nE,"isKeyable");dl.exports=nE});var ya=p((u1,ml)=>{"use strict";var oE=fl();function sE(e,t){var r=e.__data__;return oE(t)?r[typeof t=="string"?"string":"hash"]:r.map}a(sE,"getMapData");ml.exports=sE});var hl=p((p1,gl)=>{"use strict";var iE=ya();function uE(e){var t=iE(this,e).delete(e);return this.size-=t?1:0,t}a(uE,"mapCacheDelete");gl.exports=uE});var Al=p((d1,yl)=>{"use strict";var cE=ya();function pE(e){return cE(this,e).get(e)}a(pE,"mapCacheGet");yl.exports=pE});var Il=p((m1,bl)=>{"use strict";var lE=ya();function dE(e){return lE(this,e).has(e)}a(dE,"mapCacheHas");bl.exports=dE});var wl=p((h1,Sl)=>{"use strict";var fE=ya();function mE(e,t){var r=fE(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}a(mE,"mapCacheSet");Sl.exports=mE});var An=p((A1,Tl)=>{"use strict";var gE=ll(),hE=hl(),yE=Al(),AE=Il(),bE=wl();function fr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}a(fr,"MapCache");fr.prototype.clear=gE;fr.prototype.delete=hE;fr.prototype.get=yE;fr.prototype.has=AE;fr.prototype.set=bE;Tl.exports=fr});var Rl=p((I1,El)=>{"use strict";var IE="__lodash_hash_undefined__";function SE(e){return this.__data__.set(e,IE),this}a(SE,"setCacheAdd");El.exports=SE});var _l=p((w1,vl)=>{"use strict";function wE(e){return this.__data__.has(e)}a(wE,"setCacheHas");vl.exports=wE});var ts=p((E1,xl)=>{"use strict";var TE=An(),EE=Rl(),RE=_l();function bn(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new TE;++t<r;)this.add(e[t])}a(bn,"SetCache");bn.prototype.add=bn.prototype.push=EE;bn.prototype.has=RE;xl.exports=bn});var Ol=p((v1,Cl)=>{"use strict";function vE(e,t,r,n){for(var o=e.length,s=r+(n?1:-1);n?s--:++s<o;)if(t(e[s],s,e))return s;return-1}a(vE,"baseFindIndex");Cl.exports=vE});var Pl=p((x1,Ll)=>{"use strict";function _E(e){return e!==e}a(_E,"baseIsNaN");Ll.exports=_E});var ql=p((O1,Ul)=>{"use strict";function xE(e,t,r){for(var n=r-1,o=e.length;++n<o;)if(e[n]===t)return n;return-1}a(xE,"strictIndexOf");Ul.exports=xE});var kl=p((P1,Dl)=>{"use strict";var CE=Ol(),OE=Pl(),LE=ql();function PE(e,t,r){return t===t?LE(e,t,r):CE(e,OE,r)}a(PE,"baseIndexOf");Dl.exports=PE});var rs=p((q1,Ml)=>{"use strict";var UE=kl();function qE(e,t){var r=e==null?0:e.length;return!!r&&UE(e,t,0)>-1}a(qE,"arrayIncludes");Ml.exports=qE});var Bl=p((k1,Nl)=>{"use strict";function DE(e,t,r){for(var n=-1,o=e==null?0:e.length;++n<o;)if(r(t,e[n]))return!0;return!1}a(DE,"arrayIncludesWith");Nl.exports=DE});var as=p((N1,Gl)=>{"use strict";function kE(e,t){return e.has(t)}a(kE,"cacheHas");Gl.exports=kE});var ns=p((G1,Fl)=>{"use strict";var ME=Ut(),NE=_e(),BE=ME(NE,"Set");Fl.exports=BE});var os=p((F1,Wl)=>{"use strict";function GE(){}a(GE,"noop");Wl.exports=GE});var In=p(($1,$l)=>{"use strict";function FE(e){var t=-1,r=Array(e.size);return e.forEach(function(n){r[++t]=n}),r}a(FE,"setToArray");$l.exports=FE});var Ql=p((Q1,jl)=>{"use strict";var ss=ns(),WE=os(),$E=In(),jE=1/0,QE=ss&&1/$E(new ss([,-0]))[1]==jE?function(e){return new ss(e)}:WE;jl.exports=QE});var Vl=p((K1,Kl)=>{"use strict";var KE=ts(),VE=rs(),HE=Bl(),YE=as(),zE=Ql(),JE=In(),XE=200;function ZE(e,t,r){var n=-1,o=VE,s=e.length,i=!0,u=[],c=u;if(r)i=!1,o=HE;else if(s>=XE){var f=t?null:zE(e);if(f)return JE(f);i=!1,o=YE,c=new KE}else c=t?[]:u;e:for(;++n<s;){var g=e[n],h=t?t(g):g;if(g=r||g!==0?g:0,i&&h===h){for(var y=c.length;y--;)if(c[y]===h)continue e;t&&c.push(h),u.push(g)}else o(c,h,r)||(c!==u&&c.push(h),u.push(g))}return u}a(ZE,"baseUniq");Kl.exports=ZE});var Sn=p((H1,Hl)=>{"use strict";var eR=9007199254740991;function tR(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=eR}a(tR,"isLength");Hl.exports=tR});var mr=p((z1,Yl)=>{"use strict";var rR=fa(),aR=Sn();function nR(e){return e!=null&&aR(e.length)&&!rR(e)}a(nR,"isArrayLike");Yl.exports=nR});var is=p((X1,zl)=>{"use strict";var oR=mr(),sR=Me();function iR(e){return sR(e)&&oR(e)}a(iR,"isArrayLikeObject");zl.exports=iR});var Xl=p((eW,Jl)=>{"use strict";var uR=Ho(),cR=es(),pR=Vl(),lR=is(),dR=cR(function(e){return pR(uR(e,1,lR,!0))});Jl.exports=dR});var ed=p((tW,Zl)=>{"use strict";var fR=ha();function mR(){this.__data__=new fR,this.size=0}a(mR,"stackClear");Zl.exports=mR});var rd=p((aW,td)=>{"use strict";function gR(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}a(gR,"stackDelete");td.exports=gR});var nd=p((oW,ad)=>{"use strict";function hR(e){return this.__data__.get(e)}a(hR,"stackGet");ad.exports=hR});var sd=p((iW,od)=>{"use strict";function yR(e){return this.__data__.has(e)}a(yR,"stackHas");od.exports=yR});var ud=p((cW,id)=>{"use strict";var AR=ha(),bR=yn(),IR=An(),SR=200;function wR(e,t){var r=this.__data__;if(r instanceof AR){var n=r.__data__;if(!bR||n.length<SR-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new IR(n)}return r.set(e,t),this.size=r.size,this}a(wR,"stackSet");id.exports=wR});var Aa=p((lW,cd)=>{"use strict";var TR=ha(),ER=ed(),RR=rd(),vR=nd(),_R=sd(),xR=ud();function gr(e){var t=this.__data__=new TR(e);this.size=t.size}a(gr,"Stack");gr.prototype.clear=ER;gr.prototype.delete=RR;gr.prototype.get=vR;gr.prototype.has=_R;gr.prototype.set=xR;cd.exports=gr});var ba=p((fW,ld)=>{"use strict";var pd=Xo();function CR(e,t,r){t=="__proto__"&&pd?pd(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}a(CR,"baseAssignValue");ld.exports=CR});var us=p((gW,dd)=>{"use strict";var OR=ba(),LR=lr();function PR(e,t,r){(r!==void 0&&!LR(e[t],r)||r===void 0&&!(t in e))&&OR(e,t,r)}a(PR,"assignMergeValue");dd.exports=PR});var md=p((yW,fd)=>{"use strict";function UR(e){return function(t,r,n){for(var o=-1,s=Object(t),i=n(t),u=i.length;u--;){var c=i[e?u:++o];if(r(s[c],c,s)===!1)break}return t}}a(UR,"createBaseFor");fd.exports=UR});var cs=p((bW,gd)=>{"use strict";var qR=md(),DR=qR();gd.exports=DR});var ps=p((Ia,hr)=>{"use strict";var kR=_e(),bd=typeof Ia=="object"&&Ia&&!Ia.nodeType&&Ia,hd=bd&&typeof hr=="object"&&hr&&!hr.nodeType&&hr,MR=hd&&hd.exports===bd,yd=MR?kR.Buffer:void 0,Ad=yd?yd.allocUnsafe:void 0;function NR(e,t){if(t)return e.slice();var r=e.length,n=Ad?Ad(r):new e.constructor(r);return e.copy(n),n}a(NR,"cloneBuffer");hr.exports=NR});var ls=p((SW,Id)=>{"use strict";var BR=_e(),GR=BR.Uint8Array;Id.exports=GR});var wn=p((wW,wd)=>{"use strict";var Sd=ls();function FR(e){var t=new e.constructor(e.byteLength);return new Sd(t).set(new Sd(e)),t}a(FR,"cloneArrayBuffer");wd.exports=FR});var ds=p((EW,Td)=>{"use strict";var WR=wn();function $R(e,t){var r=t?WR(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}a($R,"cloneTypedArray");Td.exports=$R});var yr=p((vW,Ed)=>{"use strict";function jR(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t}a(jR,"copyArray");Ed.exports=jR});var Sa=p((xW,vd)=>{"use strict";var QR=Qe(),Rd=Object.create,KR=function(){function e(){}return a(e,"object"),function(t){if(!QR(t))return{};if(Rd)return Rd(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();vd.exports=KR});var fs=p((OW,_d)=>{"use strict";function VR(e,t){return function(r){return e(t(r))}}a(VR,"overArg");_d.exports=VR});var Tn=p((PW,xd)=>{"use strict";var HR=fs(),YR=HR(Object.getPrototypeOf,Object);xd.exports=YR});var En=p((UW,Cd)=>{"use strict";var zR=Object.prototype;function JR(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||zR;return e===r}a(JR,"isPrototype");Cd.exports=JR});var ms=p((DW,Od)=>{"use strict";var XR=Sa(),ZR=Tn(),ev=En();function tv(e){return typeof e.constructor=="function"&&!ev(e)?XR(ZR(e)):{}}a(tv,"initCloneObject");Od.exports=tv});var Pd=p((MW,Ld)=>{"use strict";function rv(){return!1}a(rv,"stubFalse");Ld.exports=rv});var Ta=p((wa,Ar)=>{"use strict";var av=_e(),nv=Pd(),Dd=typeof wa=="object"&&wa&&!wa.nodeType&&wa,Ud=Dd&&typeof Ar=="object"&&Ar&&!Ar.nodeType&&Ar,ov=Ud&&Ud.exports===Dd,qd=ov?av.Buffer:void 0,sv=qd?qd.isBuffer:void 0,iv=sv||nv;Ar.exports=iv});var gs=p((BW,Md)=>{"use strict";var uv=Pt(),cv=Tn(),pv=Me(),lv="[object Object]",dv=Function.prototype,fv=Object.prototype,kd=dv.toString,mv=fv.hasOwnProperty,gv=kd.call(Object);function hv(e){if(!pv(e)||uv(e)!=lv)return!1;var t=cv(e);if(t===null)return!0;var r=mv.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&kd.call(r)==gv}a(hv,"isPlainObject");Md.exports=hv});var Bd=p((FW,Nd)=>{"use strict";var yv=Pt(),Av=Sn(),bv=Me(),Iv="[object Arguments]",Sv="[object Array]",wv="[object Boolean]",Tv="[object Date]",Ev="[object Error]",Rv="[object Function]",vv="[object Map]",_v="[object Number]",xv="[object Object]",Cv="[object RegExp]",Ov="[object Set]",Lv="[object String]",Pv="[object WeakMap]",Uv="[object ArrayBuffer]",qv="[object DataView]",Dv="[object Float32Array]",kv="[object Float64Array]",Mv="[object Int8Array]",Nv="[object Int16Array]",Bv="[object Int32Array]",Gv="[object Uint8Array]",Fv="[object Uint8ClampedArray]",Wv="[object Uint16Array]",$v="[object Uint32Array]",H={};H[Dv]=H[kv]=H[Mv]=H[Nv]=H[Bv]=H[Gv]=H[Fv]=H[Wv]=H[$v]=!0;H[Iv]=H[Sv]=H[Uv]=H[wv]=H[qv]=H[Tv]=H[Ev]=H[Rv]=H[vv]=H[_v]=H[xv]=H[Cv]=H[Ov]=H[Lv]=H[Pv]=!1;function jv(e){return bv(e)&&Av(e.length)&&!!H[yv(e)]}a(jv,"baseIsTypedArray");Nd.exports=jv});var Rn=p(($W,Gd)=>{"use strict";function Qv(e){return function(t){return e(t)}}a(Qv,"baseUnary");Gd.exports=Qv});var vn=p((Ea,br)=>{"use strict";var Kv=Vo(),Fd=typeof Ea=="object"&&Ea&&!Ea.nodeType&&Ea,Ra=Fd&&typeof br=="object"&&br&&!br.nodeType&&br,Vv=Ra&&Ra.exports===Fd,hs=Vv&&Kv.process,Hv=function(){try{var e=Ra&&Ra.require&&Ra.require("util").types;return e||hs&&hs.binding&&hs.binding("util")}catch{}}();br.exports=Hv});var _n=p((QW,jd)=>{"use strict";var Yv=Bd(),zv=Rn(),Wd=vn(),$d=Wd&&Wd.isTypedArray,Jv=$d?zv($d):Yv;jd.exports=Jv});var ys=p((KW,Qd)=>{"use strict";function Xv(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}a(Xv,"safeGet");Qd.exports=Xv});var As=p((HW,Kd)=>{"use strict";var Zv=ba(),e_=lr(),t_=Object.prototype,r_=t_.hasOwnProperty;function a_(e,t,r){var n=e[t];(!(r_.call(e,t)&&e_(n,r))||r===void 0&&!(t in e))&&Zv(e,t,r)}a(a_,"assignValue");Kd.exports=a_});var Ir=p((zW,Vd)=>{"use strict";var n_=As(),o_=ba();function s_(e,t,r,n){var o=!r;r||(r={});for(var s=-1,i=t.length;++s<i;){var u=t[s],c=n?n(r[u],e[u],u,r,e):void 0;c===void 0&&(c=e[u]),o?o_(r,u,c):n_(r,u,c)}return r}a(s_,"copyObject");Vd.exports=s_});var Yd=p((XW,Hd)=>{"use strict";function i_(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}a(i_,"baseTimes");Hd.exports=i_});var va=p((e$,zd)=>{"use strict";var u_=9007199254740991,c_=/^(?:0|[1-9]\d*)$/;function p_(e,t){var r=typeof e;return t=t??u_,!!t&&(r=="number"||r!="symbol"&&c_.test(e))&&e>-1&&e%1==0&&e<t}a(p_,"isIndex");zd.exports=p_});var bs=p((r$,Jd)=>{"use strict";var l_=Yd(),d_=la(),f_=Ee(),m_=Ta(),g_=va(),h_=_n(),y_=Object.prototype,A_=y_.hasOwnProperty;function b_(e,t){var r=f_(e),n=!r&&d_(e),o=!r&&!n&&m_(e),s=!r&&!n&&!o&&h_(e),i=r||n||o||s,u=i?l_(e.length,String):[],c=u.length;for(var f in e)(t||A_.call(e,f))&&!(i&&(f=="length"||o&&(f=="offset"||f=="parent")||s&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||g_(f,c)))&&u.push(f);return u}a(b_,"arrayLikeKeys");Jd.exports=b_});var Zd=p((n$,Xd)=>{"use strict";function I_(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}a(I_,"nativeKeysIn");Xd.exports=I_});var tf=p((s$,ef)=>{"use strict";var S_=Qe(),w_=En(),T_=Zd(),E_=Object.prototype,R_=E_.hasOwnProperty;function v_(e){if(!S_(e))return T_(e);var t=w_(e),r=[];for(var n in e)n=="constructor"&&(t||!R_.call(e,n))||r.push(n);return r}a(v_,"baseKeysIn");ef.exports=v_});var Sr=p((u$,rf)=>{"use strict";var __=bs(),x_=tf(),C_=mr();function O_(e){return C_(e)?__(e,!0):x_(e)}a(O_,"keysIn");rf.exports=O_});var nf=p((p$,af)=>{"use strict";var L_=Ir(),P_=Sr();function U_(e){return L_(e,P_(e))}a(U_,"toPlainObject");af.exports=U_});var lf=p((d$,pf)=>{"use strict";var of=us(),q_=ps(),D_=ds(),k_=yr(),M_=ms(),sf=la(),uf=Ee(),N_=is(),B_=Ta(),G_=fa(),F_=Qe(),W_=gs(),$_=_n(),cf=ys(),j_=nf();function Q_(e,t,r,n,o,s,i){var u=cf(e,r),c=cf(t,r),f=i.get(c);if(f){of(e,r,f);return}var g=s?s(u,c,r+"",e,t,i):void 0,h=g===void 0;if(h){var y=uf(c),E=!y&&B_(c),M=!y&&!E&&$_(c);g=c,y||E||M?uf(u)?g=u:N_(u)?g=k_(u):E?(h=!1,g=q_(c,!0)):M?(h=!1,g=D_(c,!0)):g=[]:W_(c)||sf(c)?(g=u,sf(u)?g=j_(u):(!F_(u)||G_(u))&&(g=M_(c))):h=!1}h&&(i.set(c,g),o(g,c,n,s,i),i.delete(c)),of(e,r,g)}a(Q_,"baseMergeDeep");pf.exports=Q_});var mf=p((m$,ff)=>{"use strict";var K_=Aa(),V_=us(),H_=cs(),Y_=lf(),z_=Qe(),J_=Sr(),X_=ys();function df(e,t,r,n,o){e!==t&&H_(t,function(s,i){if(o||(o=new K_),z_(s))Y_(e,t,i,r,df,n,o);else{var u=n?n(X_(e,i),s,i+"",e,t,o):void 0;u===void 0&&(u=s),V_(e,i,u)}},J_)}a(df,"baseMerge");ff.exports=df});var hf=p((h$,gf)=>{"use strict";var Z_=lr(),ex=mr(),tx=va(),rx=Qe();function ax(e,t,r){if(!rx(r))return!1;var n=typeof t;return(n=="number"?ex(r)&&tx(t,r.length):n=="string"&&t in r)?Z_(r[t],e):!1}a(ax,"isIterateeCall");gf.exports=ax});var Af=p((A$,yf)=>{"use strict";var nx=es(),ox=hf();function sx(e){return nx(function(t,r){var n=-1,o=r.length,s=o>1?r[o-1]:void 0,i=o>2?r[2]:void 0;for(s=e.length>3&&typeof s=="function"?(o--,s):void 0,i&&ox(r[0],r[1],i)&&(s=o<3?void 0:s,o=1),t=Object(t);++n<o;){var u=r[n];u&&e(t,u,n,s)}return t})}a(sx,"createAssigner");yf.exports=sx});var Is=p((I$,bf)=>{"use strict";var ix=mf(),ux=Af(),cx=ux(function(e,t,r){ix(e,t,r)});bf.exports=cx});var wm=p(Ue=>{"use strict";Ue.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"};Ue.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"]};Ue.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};Ue.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};Ue.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};Ue.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]};Ue.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}};Ue.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}};Ue.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=Ue.aliasToReal,r={};for(var n in t){var o=t[n];e.call(r,o)?r[o].push(n):r[o]=[n]}return r}();Ue.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"};Ue.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};Ue.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 gi=p((xK,Tm)=>{"use strict";Tm.exports={}});var _m=p((CK,vm)=>{"use strict";var me=wm(),jC=gi(),Em=Array.prototype.push;function QC(e,t){return t==2?function(r,n){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}a(QC,"baseArity");function hi(e,t){return t==2?function(r,n){return e(r,n)}:function(r){return e(r)}}a(hi,"baseAry");function Rm(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}a(Rm,"cloneArray");function KC(e){return function(t){return e({},t)}}a(KC,"createCloner");function VC(e,t){return function(){for(var r=arguments.length,n=r-1,o=Array(r);r--;)o[r]=arguments[r];var s=o[t],i=o.slice(0,t);return s&&Em.apply(i,s),t!=n&&Em.apply(i,o.slice(t+1)),e.apply(this,i)}}a(VC,"flatSpread");function yi(e,t){return function(){var r=arguments.length;if(r){for(var n=Array(r);r--;)n[r]=arguments[r];var o=n[0]=t.apply(void 0,n);return e.apply(void 0,n),o}}}a(yi,"wrapImmutable");function Ai(e,t,r,n){var o=typeof t=="function",s=t===Object(t);if(s&&(n=r,r=t,t=void 0),r==null)throw new TypeError;n||(n={});var i={cap:"cap"in n?n.cap:!0,curry:"curry"in n?n.curry:!0,fixed:"fixed"in n?n.fixed:!0,immutable:"immutable"in n?n.immutable:!0,rearg:"rearg"in n?n.rearg:!0},u=o?r:jC,c="curry"in n&&n.curry,f="fixed"in n&&n.fixed,g="rearg"in n&&n.rearg,h=o?r.runInContext():void 0,y=o?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},E=y.ary,M=y.assign,k=y.clone,D=y.curry,C=y.forEach,W=y.isArray,ye=y.isError,ie=y.isFunction,Ye=y.isWeakMap,nt=y.keys,ot=y.rearg,Y=y.toInteger,F=y.toPath,Gt=nt(me.aryMethod),Ya={castArray:function(R){return function(){var b=arguments[0];return W(b)?R(Rm(b)):R.apply(void 0,arguments)}},iteratee:function(R){return function(){var b=arguments[0],I=arguments[1],v=R(b,I),q=v.length;return i.cap&&typeof I=="number"?(I=I>2?I-2:1,q&&q<=I?v:hi(v,I)):v}},mixin:function(R){return function(b){var I=this;if(!ie(I))return R(I,Object(b));var v=[];return C(nt(b),function(q){ie(b[q])&&v.push([q,I.prototype[q]])}),R(I,Object(b)),C(v,function(q){var oe=q[1];ie(oe)?I.prototype[q[0]]=oe:delete I.prototype[q[0]]}),I}},nthArg:function(R){return function(b){var I=b<0?1:Y(b)+1;return D(R(b),I)}},rearg:function(R){return function(b,I){var v=I?I.length:0;return D(R(b,I),v)}},runInContext:function(R){return function(b){return Ai(e,R(b),n)}}};function O(R,b){if(i.cap){var I=me.iterateeRearg[R];if(I)return Z(b,I);var v=!o&&me.iterateeAry[R];if(v)return $(b,v)}return b}a(O,"castCap");function w(R,b,I){return c||i.curry&&I>1?D(b,I):b}a(w,"castCurry");function A(R,b,I){if(i.fixed&&(f||!me.skipFixed[R])){var v=me.methodSpread[R],q=v&&v.start;return q===void 0?E(b,I):VC(b,q)}return b}a(A,"castFixed");function _(R,b,I){return i.rearg&&I>1&&(g||!me.skipRearg[R])?ot(b,me.methodRearg[R]||me.aryRearg[I]):b}a(_,"castRearg");function S(R,b){b=F(b);for(var I=-1,v=b.length,q=v-1,oe=k(Object(R)),Re=oe;Re!=null&&++I<v;){var We=b[I],st=Re[We];st!=null&&!(ie(st)||ye(st)||Ye(st))&&(Re[We]=k(I==q?st:Object(st))),Re=Re[We]}return oe}a(S,"cloneByPath");function U(R){return K.runInContext.convert(R)(void 0)}a(U,"convertLib");function P(R,b){var I=me.aliasToReal[R]||R,v=me.remap[I]||I,q=n;return function(oe){var Re=o?h:y,We=o?h[v]:b,st=M(M({},q),oe);return Ai(Re,I,We,st)}}a(P,"createConverter");function $(R,b){return ne(R,function(I){return typeof I=="function"?hi(I,b):I})}a($,"iterateeAry");function Z(R,b){return ne(R,function(I){var v=b.length;return QC(ot(hi(I,v),b),v)})}a(Z,"iterateeRearg");function ne(R,b){return function(){var I=arguments.length;if(!I)return R();for(var v=Array(I);I--;)v[I]=arguments[I];var q=i.rearg?0:I-1;return v[q]=b(v[q]),R.apply(void 0,v)}}a(ne,"overArg");function pe(R,b,I){var v,q=me.aliasToReal[R]||R,oe=b,Re=Ya[q];return Re?oe=Re(b):i.immutable&&(me.mutate.array[q]?oe=yi(b,Rm):me.mutate.object[q]?oe=yi(b,KC(b)):me.mutate.set[q]&&(oe=yi(b,S))),C(Gt,function(We){return C(me.aryMethod[We],function(st){if(q==st){var zu=me.methodSpread[q],PI=zu&&zu.afterRearg;return v=PI?A(q,_(q,oe,We),We):_(q,A(q,oe,We),We),v=O(q,v),v=w(q,v,We),!1}}),!v}),v||(v=oe),v==b&&(v=c?D(v,1):function(){return b.apply(this,arguments)}),v.convert=P(q,b),v.placeholder=b.placeholder=I,v}if(a(pe,"wrap"),!s)return pe(t,r,u);var K=r,Fe=[];return C(Gt,function(R){C(me.aryMethod[R],function(b){var I=K[me.remap[b]||b];I&&Fe.push([b,pe(b,I,K)])})}),C(nt(K),function(R){var b=K[R];if(typeof b=="function"){for(var I=Fe.length;I--;)if(Fe[I][0]==R)return;b.convert=P(R,b),Fe.push([R,b])}}),C(Fe,function(R){K[R[0]]=R[1]}),K.convert=U,K.placeholder=K,C(nt(K),function(R){C(me.realToAlias[R]||[],function(b){K[b]=K[R]})}),K}a(Ai,"baseConvert");vm.exports=Ai});var bi=p((LK,xm)=>{"use strict";var HC=Ut(),YC=_e(),zC=HC(YC,"WeakMap");xm.exports=zC});var Ii=p((PK,Om)=>{"use strict";var Cm=bi(),JC=Cm&&new Cm;Om.exports=JC});var Si=p((UK,Pm)=>{"use strict";var XC=da(),Lm=Ii(),ZC=Lm?function(e,t){return Lm.set(e,t),e}:XC;Pm.exports=ZC});var ka=p((qK,Um)=>{"use strict";var eO=Sa(),tO=Qe();function rO(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=eO(e.prototype),n=e.apply(r,t);return tO(n)?n:r}}a(rO,"createCtor");Um.exports=rO});var Dm=p((kK,qm)=>{"use strict";var aO=ka(),nO=_e(),oO=1;function sO(e,t,r){var n=t&oO,o=aO(e);function s(){var i=this&&this!==nO&&this instanceof s?o:e;return i.apply(n?r:this,arguments)}return a(s,"wrapper"),s}a(sO,"createBind");qm.exports=sO});var wi=p((NK,km)=>{"use strict";var iO=Math.max;function uO(e,t,r,n){for(var o=-1,s=e.length,i=r.length,u=-1,c=t.length,f=iO(s-i,0),g=Array(c+f),h=!n;++u<c;)g[u]=t[u];for(;++o<i;)(h||o<s)&&(g[r[o]]=e[o]);for(;f--;)g[u++]=e[o++];return g}a(uO,"composeArgs");km.exports=uO});var Ti=p((GK,Mm)=>{"use strict";var cO=Math.max;function pO(e,t,r,n){for(var o=-1,s=e.length,i=-1,u=r.length,c=-1,f=t.length,g=cO(s-u,0),h=Array(g+f),y=!n;++o<g;)h[o]=e[o];for(var E=o;++c<f;)h[E+c]=t[c];for(;++i<u;)(y||o<s)&&(h[E+r[i]]=e[o++]);return h}a(pO,"composeArgsRight");Mm.exports=pO});var Bm=p((WK,Nm)=>{"use strict";function lO(e,t){for(var r=e.length,n=0;r--;)e[r]===t&&++n;return n}a(lO,"countHolders");Nm.exports=lO});var Jn=p((jK,Gm)=>{"use strict";function dO(){}a(dO,"baseLodash");Gm.exports=dO});var Zn=p((KK,Fm)=>{"use strict";var fO=Sa(),mO=Jn(),gO=4294967295;function Xn(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=gO,this.__views__=[]}a(Xn,"LazyWrapper");Xn.prototype=fO(mO.prototype);Xn.prototype.constructor=Xn;Fm.exports=Xn});var Ei=p((HK,$m)=>{"use strict";var Wm=Ii(),hO=os(),yO=Wm?function(e){return Wm.get(e)}:hO;$m.exports=yO});var Qm=p((YK,jm)=>{"use strict";var AO={};jm.exports=AO});var Hm=p((zK,Vm)=>{"use strict";var Km=Qm(),bO=Object.prototype,IO=bO.hasOwnProperty;function SO(e){for(var t=e.name+"",r=Km[t],n=IO.call(Km,t)?r.length:0;n--;){var o=r[n],s=o.func;if(s==null||s==e)return o.name}return t}a(SO,"getFuncName");Vm.exports=SO});var Ri=p((XK,Ym)=>{"use strict";var wO=Sa(),TO=Jn();function eo(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}a(eo,"LodashWrapper");eo.prototype=wO(TO.prototype);eo.prototype.constructor=eo;Ym.exports=eo});var Jm=p((e2,zm)=>{"use strict";var EO=Zn(),RO=Ri(),vO=yr();function _O(e){if(e instanceof EO)return e.clone();var t=new RO(e.__wrapped__,e.__chain__);return t.__actions__=vO(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}a(_O,"wrapperClone");zm.exports=_O});var eg=p((r2,Zm)=>{"use strict";var xO=Zn(),Xm=Ri(),CO=Jn(),OO=Ee(),LO=Me(),PO=Jm(),UO=Object.prototype,qO=UO.hasOwnProperty;function to(e){if(LO(e)&&!OO(e)&&!(e instanceof xO)){if(e instanceof Xm)return e;if(qO.call(e,"__wrapped__"))return PO(e)}return new Xm(e)}a(to,"lodash");to.prototype=CO.prototype;to.prototype.constructor=to;Zm.exports=to});var rg=p((n2,tg)=>{"use strict";var DO=Zn(),kO=Ei(),MO=Hm(),NO=eg();function BO(e){var t=MO(e),r=NO[t];if(typeof r!="function"||!(t in DO.prototype))return!1;if(e===r)return!0;var n=kO(r);return!!n&&e===n[0]}a(BO,"isLaziable");tg.exports=BO});var vi=p((s2,ag)=>{"use strict";var GO=Si(),FO=Zo(),WO=FO(GO);ag.exports=WO});var og=p((i2,ng)=>{"use strict";var $O=/\{\n\/\* \[wrapped with (.+)\] \*/,jO=/,? & /;function QO(e){var t=e.match($O);return t?t[1].split(jO):[]}a(QO,"getWrapDetails");ng.exports=QO});var ig=p((c2,sg)=>{"use strict";var KO=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function VO(e,t){var r=t.length;if(!r)return e;var n=r-1;return t[n]=(r>1?"& ":"")+t[n],t=t.join(r>2?", ":" "),e.replace(KO,`{
|
|
2
2
|
/* [wrapped with `+t+`] */
|
|
3
|
-
`)}a(KO,"insertWrapDetails");og.exports=KO});var ro=p((c2,ig)=>{"use strict";function VO(e,t){for(var r=-1,n=e==null?0:e.length;++r<n&&t(e[r],r,e)!==!1;);return e}a(VO,"arrayEach");ig.exports=VO});var cg=p((l2,ug)=>{"use strict";var HO=ro(),YO=ts(),zO=1,JO=2,XO=8,ZO=16,eL=32,tL=64,rL=128,aL=256,nL=512,oL=[["ary",rL],["bind",zO],["bindKey",JO],["curry",XO],["curryRight",ZO],["flip",nL],["partial",eL],["partialRight",tL],["rearg",aL]];function sL(e,t){return HO(oL,function(r){var n="_."+r[0];t&r[1]&&!YO(e,n)&&e.push(n)}),e.sort()}a(sL,"updateWrapDetails");ug.exports=sL});var vi=p((f2,pg)=>{"use strict";var iL=ng(),uL=sg(),cL=hn(),pL=cg();function lL(e,t,r){var n=t+"";return cL(e,uL(n,pL(iL(n),r)))}a(lL,"setWrapToString");pg.exports=lL});var _i=p((g2,fg)=>{"use strict";var dL=tg(),fL=Ri(),mL=vi(),gL=1,hL=2,yL=4,AL=8,lg=32,dg=64;function bL(e,t,r,n,o,s,i,u,c,f){var g=t&AL,h=g?i:void 0,y=g?void 0:i,E=g?s:void 0,M=g?void 0:s;t|=g?lg:dg,t&=~(g?dg:lg),t&yL||(t&=~(gL|hL));var k=[e,t,o,E,h,M,y,u,c,f],D=r.apply(void 0,k);return dL(e)&&fL(D,k),D.placeholder=n,mL(D,e,t)}a(bL,"createRecurry");fg.exports=bL});var xi=p((y2,mg)=>{"use strict";function IL(e){var t=e;return t.placeholder}a(IL,"getHolder");mg.exports=IL});var hg=p((b2,gg)=>{"use strict";var SL=yr(),wL=va(),TL=Math.min;function EL(e,t){for(var r=e.length,n=TL(t.length,r),o=SL(e);n--;){var s=t[n];e[n]=wL(s,r)?o[s]:void 0}return e}a(EL,"reorder");gg.exports=EL});var ao=p((S2,Ag)=>{"use strict";var yg="__lodash_placeholder__";function RL(e,t){for(var r=-1,n=e.length,o=0,s=[];++r<n;){var i=e[r];(i===t||i===yg)&&(e[r]=yg,s[o++]=r)}return s}a(RL,"replaceHolders");Ag.exports=RL});var Ci=p((T2,Sg)=>{"use strict";var vL=Si(),_L=wi(),xL=Nm(),bg=ka(),CL=_i(),OL=xi(),LL=hg(),PL=ao(),UL=_e(),qL=1,DL=2,kL=8,ML=16,NL=128,BL=512;function Ig(e,t,r,n,o,s,i,u,c,f){var g=t&NL,h=t&qL,y=t&DL,E=t&(kL|ML),M=t&BL,k=y?void 0:bg(e);function D(){for(var C=arguments.length,W=Array(C),ye=C;ye--;)W[ye]=arguments[ye];if(E)var ie=OL(D),Ye=xL(W,ie);if(n&&(W=vL(W,n,o,E)),s&&(W=_L(W,s,i,E)),C-=Ye,E&&C<f){var nt=PL(W,ie);return CL(e,t,Ig,D.placeholder,r,W,nt,u,c,f-C)}var ot=h?r:this,Y=y?ot[e]:e;return C=W.length,u?W=LL(W,u):M&&C>1&&W.reverse(),g&&c<C&&(W.length=c),this&&this!==UL&&this instanceof D&&(Y=k||bg(Y)),Y.apply(ot,W)}return a(D,"wrapper"),D}a(Ig,"createHybrid");Sg.exports=Ig});var Tg=p((R2,wg)=>{"use strict";var GL=gn(),FL=ka(),WL=Ci(),$L=_i(),jL=xi(),QL=ao(),KL=_e();function VL(e,t,r){var n=FL(e);function o(){for(var s=arguments.length,i=Array(s),u=s,c=jL(o);u--;)i[u]=arguments[u];var f=s<3&&i[0]!==c&&i[s-1]!==c?[]:QL(i,c);if(s-=f.length,s<r)return $L(e,t,WL,o.placeholder,void 0,i,f,void 0,void 0,r-s);var g=this&&this!==KL&&this instanceof o?n:e;return GL(g,this,i)}return a(o,"wrapper"),o}a(VL,"createCurry");wg.exports=VL});var Rg=p((_2,Eg)=>{"use strict";var HL=gn(),YL=ka(),zL=_e(),JL=1;function XL(e,t,r,n){var o=t&JL,s=YL(e);function i(){for(var u=-1,c=arguments.length,f=-1,g=n.length,h=Array(g+c),y=this&&this!==zL&&this instanceof i?s:e;++f<g;)h[f]=n[f];for(;c--;)h[f++]=arguments[++u];return HL(y,o?r:this,h)}return a(i,"wrapper"),i}a(XL,"createPartial");Eg.exports=XL});var Lg=p((C2,Og)=>{"use strict";var ZL=Si(),eP=wi(),vg=ao(),_g="__lodash_placeholder__",Oi=1,tP=2,rP=4,xg=8,Ma=128,Cg=256,aP=Math.min;function nP(e,t){var r=e[1],n=t[1],o=r|n,s=o<(Oi|tP|Ma),i=n==Ma&&r==xg||n==Ma&&r==Cg&&e[7].length<=t[8]||n==(Ma|Cg)&&t[7].length<=t[8]&&r==xg;if(!(s||i))return e;n&Oi&&(e[2]=t[2],o|=r&Oi?0:rP);var u=t[3];if(u){var c=e[3];e[3]=c?ZL(c,u,t[4]):u,e[4]=c?vg(e[3],_g):t[4]}return u=t[5],u&&(c=e[5],e[5]=c?eP(c,u,t[6]):u,e[6]=c?vg(e[5],_g):t[6]),u=t[7],u&&(e[7]=u),n&Ma&&(e[8]=e[8]==null?t[8]:aP(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=o,e}a(nP,"mergeData");Og.exports=nP});var Ug=p((L2,Pg)=>{"use strict";var oP=/\s/;function sP(e){for(var t=e.length;t--&&oP.test(e.charAt(t)););return t}a(sP,"trimmedEndIndex");Pg.exports=sP});var Dg=p((U2,qg)=>{"use strict";var iP=Ug(),uP=/^\s+/;function cP(e){return e&&e.slice(0,iP(e)+1).replace(uP,"")}a(cP,"baseTrim");qg.exports=cP});var Cr=p((D2,kg)=>{"use strict";var pP=Pt(),lP=ke(),dP="[object Symbol]";function fP(e){return typeof e=="symbol"||lP(e)&&pP(e)==dP}a(fP,"isSymbol");kg.exports=fP});var Gg=p((M2,Bg)=>{"use strict";var mP=Dg(),Mg=Qe(),gP=Cr(),Ng=0/0,hP=/^[-+]0x[0-9a-f]+$/i,yP=/^0b[01]+$/i,AP=/^0o[0-7]+$/i,bP=parseInt;function IP(e){if(typeof e=="number")return e;if(gP(e))return Ng;if(Mg(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=Mg(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=mP(e);var r=yP.test(e);return r||AP.test(e)?bP(e.slice(2),r?2:8):hP.test(e)?Ng:+e}a(IP,"toNumber");Bg.exports=IP});var $g=p((B2,Wg)=>{"use strict";var SP=Gg(),Fg=1/0,wP=17976931348623157e292;function TP(e){if(!e)return e===0?e:0;if(e=SP(e),e===Fg||e===-Fg){var t=e<0?-1:1;return t*wP}return e===e?e:0}a(TP,"toFinite");Wg.exports=TP});var Li=p((F2,jg)=>{"use strict";var EP=$g();function RP(e){var t=EP(e),r=t%1;return t===t?r?t-r:t:0}a(RP,"toInteger");jg.exports=RP});var no=p(($2,Yg)=>{"use strict";var vP=Ii(),_P=qm(),xP=Tg(),CP=Ci(),OP=Rg(),LP=Ti(),PP=Lg(),UP=Ri(),qP=vi(),Qg=Li(),DP="Expected a function",Kg=1,kP=2,Pi=8,Ui=16,qi=32,Vg=64,Hg=Math.max;function MP(e,t,r,n,o,s,i,u){var c=t&kP;if(!c&&typeof e!="function")throw new TypeError(DP);var f=n?n.length:0;if(f||(t&=~(qi|Vg),n=o=void 0),i=i===void 0?i:Hg(Qg(i),0),u=u===void 0?u:Qg(u),f-=o?o.length:0,t&Vg){var g=n,h=o;n=o=void 0}var y=c?void 0:LP(e),E=[e,t,r,n,o,g,h,s,i,u];if(y&&PP(E,y),e=E[0],t=E[1],r=E[2],n=E[3],o=E[4],u=E[9]=E[9]===void 0?c?0:e.length:Hg(E[9]-f,0),!u&&t&(Pi|Ui)&&(t&=~(Pi|Ui)),!t||t==Kg)var M=_P(e,t,r);else t==Pi||t==Ui?M=xP(e,t,u):(t==qi||t==(Kg|qi))&&!o.length?M=OP(e,t,r,n):M=CP.apply(void 0,E);var k=y?vP:UP;return qP(k(M,E),e,t)}a(MP,"createWrap");Yg.exports=MP});var Jg=p((Q2,zg)=>{"use strict";var NP=no(),BP=128;function GP(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,NP(e,BP,void 0,void 0,void 0,void 0,t)}a(GP,"ary");zg.exports=GP});var Zg=p((V2,Xg)=>{"use strict";var FP=ds(),WP=FP(Object.keys,Object);Xg.exports=WP});var Di=p((H2,eh)=>{"use strict";var $P=En(),jP=Zg(),QP=Object.prototype,KP=QP.hasOwnProperty;function VP(e){if(!$P(e))return jP(e);var t=[];for(var r in Object(e))KP.call(e,r)&&r!="constructor"&&t.push(r);return t}a(VP,"baseKeys");eh.exports=VP});var Or=p((z2,th)=>{"use strict";var HP=As(),YP=Di(),zP=mr();function JP(e){return zP(e)?HP(e):YP(e)}a(JP,"keys");th.exports=JP});var ki=p((X2,rh)=>{"use strict";var XP=Ir(),ZP=Or();function eU(e,t){return e&&XP(t,ZP(t),e)}a(eU,"baseAssign");rh.exports=eU});var nh=p((eV,ah)=>{"use strict";var tU=Ir(),rU=Sr();function aU(e,t){return e&&tU(t,rU(t),e)}a(aU,"baseAssignIn");ah.exports=aU});var sh=p((rV,oh)=>{"use strict";function nU(e,t){for(var r=-1,n=e==null?0:e.length,o=0,s=[];++r<n;){var i=e[r];t(i,r,e)&&(s[o++]=i)}return s}a(nU,"arrayFilter");oh.exports=nU});var Mi=p((nV,ih)=>{"use strict";function oU(){return[]}a(oU,"stubArray");ih.exports=oU});var oo=p((sV,ch)=>{"use strict";var sU=sh(),iU=Mi(),uU=Object.prototype,cU=uU.propertyIsEnumerable,uh=Object.getOwnPropertySymbols,pU=uh?function(e){return e==null?[]:(e=Object(e),sU(uh(e),function(t){return cU.call(e,t)}))}:iU;ch.exports=pU});var lh=p((iV,ph)=>{"use strict";var lU=Ir(),dU=oo();function fU(e,t){return lU(e,dU(e),t)}a(fU,"copySymbols");ph.exports=fU});var Ni=p((cV,dh)=>{"use strict";var mU=mn(),gU=Tn(),hU=oo(),yU=Mi(),AU=Object.getOwnPropertySymbols,bU=AU?function(e){for(var t=[];e;)mU(t,hU(e)),e=gU(e);return t}:yU;dh.exports=bU});var mh=p((pV,fh)=>{"use strict";var IU=Ir(),SU=Ni();function wU(e,t){return IU(e,SU(e),t)}a(wU,"copySymbolsIn");fh.exports=wU});var Bi=p((dV,gh)=>{"use strict";var TU=mn(),EU=Ee();function RU(e,t,r){var n=t(e);return EU(e)?n:TU(n,r(e))}a(RU,"baseGetAllKeys");gh.exports=RU});var Gi=p((mV,hh)=>{"use strict";var vU=Bi(),_U=oo(),xU=Or();function CU(e){return vU(e,xU,_U)}a(CU,"getAllKeys");hh.exports=CU});var Ah=p((hV,yh)=>{"use strict";var OU=Bi(),LU=Ni(),PU=Sr();function UU(e){return OU(e,PU,LU)}a(UU,"getAllKeysIn");yh.exports=UU});var Ih=p((AV,bh)=>{"use strict";var qU=Ut(),DU=_e(),kU=qU(DU,"DataView");bh.exports=kU});var wh=p((bV,Sh)=>{"use strict";var MU=Ut(),NU=_e(),BU=MU(NU,"Promise");Sh.exports=BU});var Pr=p((IV,Ch)=>{"use strict";var Fi=Ih(),Wi=yn(),$i=wh(),ji=as(),Qi=Ai(),xh=Pt(),Lr=zo(),Th="[object Map]",GU="[object Object]",Eh="[object Promise]",Rh="[object Set]",vh="[object WeakMap]",_h="[object DataView]",FU=Lr(Fi),WU=Lr(Wi),$U=Lr($i),jU=Lr(ji),QU=Lr(Qi),Xt=xh;(Fi&&Xt(new Fi(new ArrayBuffer(1)))!=_h||Wi&&Xt(new Wi)!=Th||$i&&Xt($i.resolve())!=Eh||ji&&Xt(new ji)!=Rh||Qi&&Xt(new Qi)!=vh)&&(Xt=a(function(e){var t=xh(e),r=t==GU?e.constructor:void 0,n=r?Lr(r):"";if(n)switch(n){case FU:return _h;case WU:return Th;case $U:return Eh;case jU:return Rh;case QU:return vh}return t},"getTag"));Ch.exports=Xt});var Lh=p((wV,Oh)=>{"use strict";var KU=Object.prototype,VU=KU.hasOwnProperty;function HU(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&VU.call(e,"index")&&(r.index=e.index,r.input=e.input),r}a(HU,"initCloneArray");Oh.exports=HU});var Uh=p((EV,Ph)=>{"use strict";var YU=wn();function zU(e,t){var r=t?YU(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}a(zU,"cloneDataView");Ph.exports=zU});var Dh=p((vV,qh)=>{"use strict";var JU=/\w*$/;function XU(e){var t=new e.constructor(e.source,JU.exec(e));return t.lastIndex=e.lastIndex,t}a(XU,"cloneRegExp");qh.exports=XU});var Gh=p((xV,Bh)=>{"use strict";var kh=Qt(),Mh=kh?kh.prototype:void 0,Nh=Mh?Mh.valueOf:void 0;function ZU(e){return Nh?Object(Nh.call(e)):{}}a(ZU,"cloneSymbol");Bh.exports=ZU});var Wh=p((OV,Fh)=>{"use strict";var eq=wn(),tq=Uh(),rq=Dh(),aq=Gh(),nq=ls(),oq="[object Boolean]",sq="[object Date]",iq="[object Map]",uq="[object Number]",cq="[object RegExp]",pq="[object Set]",lq="[object String]",dq="[object Symbol]",fq="[object ArrayBuffer]",mq="[object DataView]",gq="[object Float32Array]",hq="[object Float64Array]",yq="[object Int8Array]",Aq="[object Int16Array]",bq="[object Int32Array]",Iq="[object Uint8Array]",Sq="[object Uint8ClampedArray]",wq="[object Uint16Array]",Tq="[object Uint32Array]";function Eq(e,t,r){var n=e.constructor;switch(t){case fq:return eq(e);case oq:case sq:return new n(+e);case mq:return tq(e,r);case gq:case hq:case yq:case Aq:case bq:case Iq:case Sq:case wq:case Tq:return nq(e,r);case iq:return new n;case uq:case lq:return new n(e);case cq:return rq(e);case pq:return new n;case dq:return aq(e)}}a(Eq,"initCloneByTag");Fh.exports=Eq});var jh=p((PV,$h)=>{"use strict";var Rq=Pr(),vq=ke(),_q="[object Map]";function xq(e){return vq(e)&&Rq(e)==_q}a(xq,"baseIsMap");$h.exports=xq});var Hh=p((qV,Vh)=>{"use strict";var Cq=jh(),Oq=Rn(),Qh=vn(),Kh=Qh&&Qh.isMap,Lq=Kh?Oq(Kh):Cq;Vh.exports=Lq});var zh=p((DV,Yh)=>{"use strict";var Pq=Pr(),Uq=ke(),qq="[object Set]";function Dq(e){return Uq(e)&&Pq(e)==qq}a(Dq,"baseIsSet");Yh.exports=Dq});var ey=p((MV,Zh)=>{"use strict";var kq=zh(),Mq=Rn(),Jh=vn(),Xh=Jh&&Jh.isSet,Nq=Xh?Mq(Xh):kq;Zh.exports=Nq});var Ki=p((NV,ny)=>{"use strict";var Bq=Aa(),Gq=ro(),Fq=ys(),Wq=ki(),$q=nh(),jq=cs(),Qq=yr(),Kq=lh(),Vq=mh(),Hq=Gi(),Yq=Ah(),zq=Pr(),Jq=Lh(),Xq=Wh(),Zq=fs(),eD=Ee(),tD=Ta(),rD=Hh(),aD=Qe(),nD=ey(),oD=Or(),sD=Sr(),iD=1,uD=2,cD=4,ty="[object Arguments]",pD="[object Array]",lD="[object Boolean]",dD="[object Date]",fD="[object Error]",ry="[object Function]",mD="[object GeneratorFunction]",gD="[object Map]",hD="[object Number]",ay="[object Object]",yD="[object RegExp]",AD="[object Set]",bD="[object String]",ID="[object Symbol]",SD="[object WeakMap]",wD="[object ArrayBuffer]",TD="[object DataView]",ED="[object Float32Array]",RD="[object Float64Array]",vD="[object Int8Array]",_D="[object Int16Array]",xD="[object Int32Array]",CD="[object Uint8Array]",OD="[object Uint8ClampedArray]",LD="[object Uint16Array]",PD="[object Uint32Array]",V={};V[ty]=V[pD]=V[wD]=V[TD]=V[lD]=V[dD]=V[ED]=V[RD]=V[vD]=V[_D]=V[xD]=V[gD]=V[hD]=V[ay]=V[yD]=V[AD]=V[bD]=V[ID]=V[CD]=V[OD]=V[LD]=V[PD]=!0;V[fD]=V[ry]=V[SD]=!1;function so(e,t,r,n,o,s){var i,u=t&iD,c=t&uD,f=t&cD;if(r&&(i=o?r(e,n,o,s):r(e)),i!==void 0)return i;if(!aD(e))return e;var g=eD(e);if(g){if(i=Jq(e),!u)return Qq(e,i)}else{var h=zq(e),y=h==ry||h==mD;if(tD(e))return jq(e,u);if(h==ay||h==ty||y&&!o){if(i=c||y?{}:Zq(e),!u)return c?Vq(e,$q(i,e)):Kq(e,Wq(i,e))}else{if(!V[h])return o?e:{};i=Xq(e,h,u)}}s||(s=new Bq);var E=s.get(e);if(E)return E;s.set(e,i),nD(e)?e.forEach(function(D){i.add(so(D,t,r,D,e,s))}):rD(e)&&e.forEach(function(D,C){i.set(C,so(D,t,r,C,e,s))});var M=f?c?Yq:Hq:c?sD:oD,k=g?void 0:M(e);return Gq(k||e,function(D,C){k&&(C=D,D=e[C]),Fq(i,C,so(D,t,r,C,e,s))}),i}a(so,"baseClone");ny.exports=so});var sy=p((GV,oy)=>{"use strict";var UD=Ki(),qD=4;function DD(e){return UD(e,qD)}a(DD,"clone");oy.exports=DD});var uy=p((WV,iy)=>{"use strict";var kD=no(),MD=8;function Vi(e,t,r){t=r?void 0:t;var n=kD(e,MD,void 0,void 0,void 0,void 0,void 0,t);return n.placeholder=Vi.placeholder,n}a(Vi,"curry");Vi.placeholder={};iy.exports=Vi});var py=p((jV,cy)=>{"use strict";var ND=Pt(),BD=ke(),GD=ms(),FD="[object DOMException]",WD="[object Error]";function $D(e){if(!BD(e))return!1;var t=ND(e);return t==WD||t==FD||typeof e.message=="string"&&typeof e.name=="string"&&!GD(e)}a($D,"isError");cy.exports=$D});var dy=p((KV,ly)=>{"use strict";var jD=Pr(),QD=ke(),KD="[object WeakMap]";function VD(e){return QD(e)&&jD(e)==KD}a(VD,"isWeakMap");ly.exports=VD});var my=p((HV,fy)=>{"use strict";function HD(e,t){for(var r=-1,n=e==null?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}a(HD,"arraySome");fy.exports=HD});var Hi=p((zV,gy)=>{"use strict";var YD=es(),zD=my(),JD=rs(),XD=1,ZD=2;function ek(e,t,r,n,o,s){var i=r&XD,u=e.length,c=t.length;if(u!=c&&!(i&&c>u))return!1;var f=s.get(e),g=s.get(t);if(f&&g)return f==t&&g==e;var h=-1,y=!0,E=r&ZD?new YD:void 0;for(s.set(e,t),s.set(t,e);++h<u;){var M=e[h],k=t[h];if(n)var D=i?n(k,M,h,t,e,s):n(M,k,h,e,t,s);if(D!==void 0){if(D)continue;y=!1;break}if(E){if(!zD(t,function(C,W){if(!JD(E,W)&&(M===C||o(M,C,r,n,s)))return E.push(W)})){y=!1;break}}else if(!(M===k||o(M,k,r,n,s))){y=!1;break}}return s.delete(e),s.delete(t),y}a(ek,"equalArrays");gy.exports=ek});var yy=p((XV,hy)=>{"use strict";function tk(e){var t=-1,r=Array(e.size);return e.forEach(function(n,o){r[++t]=[o,n]}),r}a(tk,"mapToArray");hy.exports=tk});var wy=p((eH,Sy)=>{"use strict";var Ay=Qt(),by=ps(),rk=lr(),ak=Hi(),nk=yy(),ok=In(),sk=1,ik=2,uk="[object Boolean]",ck="[object Date]",pk="[object Error]",lk="[object Map]",dk="[object Number]",fk="[object RegExp]",mk="[object Set]",gk="[object String]",hk="[object Symbol]",yk="[object ArrayBuffer]",Ak="[object DataView]",Iy=Ay?Ay.prototype:void 0,Yi=Iy?Iy.valueOf:void 0;function bk(e,t,r,n,o,s,i){switch(r){case Ak:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case yk:return!(e.byteLength!=t.byteLength||!s(new by(e),new by(t)));case uk:case ck:case dk:return rk(+e,+t);case pk:return e.name==t.name&&e.message==t.message;case fk:case gk:return e==t+"";case lk:var u=nk;case mk:var c=n&sk;if(u||(u=ok),e.size!=t.size&&!c)return!1;var f=i.get(e);if(f)return f==t;n|=ik,i.set(e,t);var g=ak(u(e),u(t),n,o,s,i);return i.delete(e),g;case hk:if(Yi)return Yi.call(e)==Yi.call(t)}return!1}a(bk,"equalByTag");Sy.exports=bk});var Ry=p((rH,Ey)=>{"use strict";var Ty=Gi(),Ik=1,Sk=Object.prototype,wk=Sk.hasOwnProperty;function Tk(e,t,r,n,o,s){var i=r&Ik,u=Ty(e),c=u.length,f=Ty(t),g=f.length;if(c!=g&&!i)return!1;for(var h=c;h--;){var y=u[h];if(!(i?y in t:wk.call(t,y)))return!1}var E=s.get(e),M=s.get(t);if(E&&M)return E==t&&M==e;var k=!0;s.set(e,t),s.set(t,e);for(var D=i;++h<c;){y=u[h];var C=e[y],W=t[y];if(n)var ye=i?n(W,C,y,t,e,s):n(C,W,y,e,t,s);if(!(ye===void 0?C===W||o(C,W,r,n,s):ye)){k=!1;break}D||(D=y=="constructor")}if(k&&!D){var ie=e.constructor,Ye=t.constructor;ie!=Ye&&"constructor"in e&&"constructor"in t&&!(typeof ie=="function"&&ie instanceof ie&&typeof Ye=="function"&&Ye instanceof Ye)&&(k=!1)}return s.delete(e),s.delete(t),k}a(Tk,"equalObjects");Ey.exports=Tk});var Uy=p((nH,Py)=>{"use strict";var zi=Aa(),Ek=Hi(),Rk=wy(),vk=Ry(),vy=Pr(),_y=Ee(),xy=Ta(),_k=_n(),xk=1,Cy="[object Arguments]",Oy="[object Array]",io="[object Object]",Ck=Object.prototype,Ly=Ck.hasOwnProperty;function Ok(e,t,r,n,o,s){var i=_y(e),u=_y(t),c=i?Oy:vy(e),f=u?Oy:vy(t);c=c==Cy?io:c,f=f==Cy?io:f;var g=c==io,h=f==io,y=c==f;if(y&&xy(e)){if(!xy(t))return!1;i=!0,g=!1}if(y&&!g)return s||(s=new zi),i||_k(e)?Ek(e,t,r,n,o,s):Rk(e,t,c,r,n,o,s);if(!(r&xk)){var E=g&&Ly.call(e,"__wrapped__"),M=h&&Ly.call(t,"__wrapped__");if(E||M){var k=E?e.value():e,D=M?t.value():t;return s||(s=new zi),o(k,D,r,n,s)}}return y?(s||(s=new zi),vk(e,t,r,n,o,s)):!1}a(Ok,"baseIsEqualDeep");Py.exports=Ok});var Ji=p((sH,ky)=>{"use strict";var Lk=Uy(),qy=ke();function Dy(e,t,r,n,o){return e===t?!0:e==null||t==null||!qy(e)&&!qy(t)?e!==e&&t!==t:Lk(e,t,r,n,Dy,o)}a(Dy,"baseIsEqual");ky.exports=Dy});var Ny=p((uH,My)=>{"use strict";var Pk=Aa(),Uk=Ji(),qk=1,Dk=2;function kk(e,t,r,n){var o=r.length,s=o,i=!n;if(e==null)return!s;for(e=Object(e);o--;){var u=r[o];if(i&&u[2]?u[1]!==e[u[0]]:!(u[0]in e))return!1}for(;++o<s;){u=r[o];var c=u[0],f=e[c],g=u[1];if(i&&u[2]){if(f===void 0&&!(c in e))return!1}else{var h=new Pk;if(n)var y=n(f,g,c,e,t,h);if(!(y===void 0?Uk(g,f,qk|Dk,n,h):y))return!1}}return!0}a(kk,"baseIsMatch");My.exports=kk});var Xi=p((pH,By)=>{"use strict";var Mk=Qe();function Nk(e){return e===e&&!Mk(e)}a(Nk,"isStrictComparable");By.exports=Nk});var Fy=p((dH,Gy)=>{"use strict";var Bk=Xi(),Gk=Or();function Fk(e){for(var t=Gk(e),r=t.length;r--;){var n=t[r],o=e[n];t[r]=[n,o,Bk(o)]}return t}a(Fk,"getMatchData");Gy.exports=Fk});var Zi=p((mH,Wy)=>{"use strict";function Wk(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}a(Wk,"matchesStrictComparable");Wy.exports=Wk});var jy=p((hH,$y)=>{"use strict";var $k=Ny(),jk=Fy(),Qk=Zi();function Kk(e){var t=jk(e);return t.length==1&&t[0][2]?Qk(t[0][0],t[0][1]):function(r){return r===e||$k(r,e,t)}}a(Kk,"baseMatches");$y.exports=Kk});var uo=p((AH,Qy)=>{"use strict";var Vk=Ee(),Hk=Cr(),Yk=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,zk=/^\w*$/;function Jk(e,t){if(Vk(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||Hk(e)?!0:zk.test(e)||!Yk.test(e)||t!=null&&e in Object(t)}a(Jk,"isKey");Qy.exports=Jk});var Hy=p((IH,Vy)=>{"use strict";var Ky=An(),Xk="Expected a function";function eu(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(Xk);var r=a(function(){var n=arguments,o=t?t.apply(this,n):n[0],s=r.cache;if(s.has(o))return s.get(o);var i=e.apply(this,n);return r.cache=s.set(o,i)||s,i},"memoized");return r.cache=new(eu.Cache||Ky),r}a(eu,"memoize");eu.Cache=Ky;Vy.exports=eu});var zy=p((wH,Yy)=>{"use strict";var Zk=Hy(),eM=500;function tM(e){var t=Zk(e,function(n){return r.size===eM&&r.clear(),n}),r=t.cache;return t}a(tM,"memoizeCapped");Yy.exports=tM});var tu=p((EH,Jy)=>{"use strict";var rM=zy(),aM=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,nM=/\\(\\)?/g,oM=rM(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(aM,function(r,n,o,s){t.push(o?s.replace(nM,"$1"):n||r)}),t});Jy.exports=oM});var ru=p((RH,Xy)=>{"use strict";function sM(e,t){for(var r=-1,n=e==null?0:e.length,o=Array(n);++r<n;)o[r]=t(e[r],r,e);return o}a(sM,"arrayMap");Xy.exports=sM});var nA=p((_H,aA)=>{"use strict";var Zy=Qt(),iM=ru(),uM=Ee(),cM=Cr(),pM=1/0,eA=Zy?Zy.prototype:void 0,tA=eA?eA.toString:void 0;function rA(e){if(typeof e=="string")return e;if(uM(e))return iM(e,rA)+"";if(cM(e))return tA?tA.call(e):"";var t=e+"";return t=="0"&&1/e==-pM?"-0":t}a(rA,"baseToString");aA.exports=rA});var au=p((CH,oA)=>{"use strict";var lM=nA();function dM(e){return e==null?"":lM(e)}a(dM,"toString");oA.exports=dM});var nu=p((LH,sA)=>{"use strict";var fM=Ee(),mM=uo(),gM=tu(),hM=au();function yM(e,t){return fM(e)?e:mM(e,t)?[e]:gM(hM(e))}a(yM,"castPath");sA.exports=yM});var Ur=p((UH,iA)=>{"use strict";var AM=Cr(),bM=1/0;function IM(e){if(typeof e=="string"||AM(e))return e;var t=e+"";return t=="0"&&1/e==-bM?"-0":t}a(IM,"toKey");iA.exports=IM});var ou=p((DH,uA)=>{"use strict";var SM=nu(),wM=Ur();function TM(e,t){t=SM(t,e);for(var r=0,n=t.length;e!=null&&r<n;)e=e[wM(t[r++])];return r&&r==n?e:void 0}a(TM,"baseGet");uA.exports=TM});var pA=p((MH,cA)=>{"use strict";var EM=ou();function RM(e,t,r){var n=e==null?void 0:EM(e,t);return n===void 0?r:n}a(RM,"get");cA.exports=RM});var dA=p((BH,lA)=>{"use strict";function vM(e,t){return e!=null&&t in Object(e)}a(vM,"baseHasIn");lA.exports=vM});var mA=p((FH,fA)=>{"use strict";var _M=nu(),xM=la(),CM=Ee(),OM=va(),LM=Sn(),PM=Ur();function UM(e,t,r){t=_M(t,e);for(var n=-1,o=t.length,s=!1;++n<o;){var i=PM(t[n]);if(!(s=e!=null&&r(e,i)))break;e=e[i]}return s||++n!=o?s:(o=e==null?0:e.length,!!o&&LM(o)&&OM(i,o)&&(CM(e)||xM(e)))}a(UM,"hasPath");fA.exports=UM});var hA=p(($H,gA)=>{"use strict";var qM=dA(),DM=mA();function kM(e,t){return e!=null&&DM(e,t,qM)}a(kM,"hasIn");gA.exports=kM});var AA=p((QH,yA)=>{"use strict";var MM=Ji(),NM=pA(),BM=hA(),GM=uo(),FM=Xi(),WM=Zi(),$M=Ur(),jM=1,QM=2;function KM(e,t){return GM(e)&&FM(t)?WM($M(e),t):function(r){var n=NM(r,e);return n===void 0&&n===t?BM(r,e):MM(t,n,jM|QM)}}a(KM,"baseMatchesProperty");yA.exports=KM});var IA=p((VH,bA)=>{"use strict";function VM(e){return function(t){return t?.[e]}}a(VM,"baseProperty");bA.exports=VM});var wA=p((YH,SA)=>{"use strict";var HM=ou();function YM(e){return function(t){return HM(t,e)}}a(YM,"basePropertyDeep");SA.exports=YM});var EA=p((JH,TA)=>{"use strict";var zM=IA(),JM=wA(),XM=uo(),ZM=Ur();function eN(e){return XM(e)?zM(ZM(e)):JM(e)}a(eN,"property");TA.exports=eN});var su=p((ZH,RA)=>{"use strict";var tN=jy(),rN=AA(),aN=da(),nN=Ee(),oN=EA();function sN(e){return typeof e=="function"?e:e==null?aN:typeof e=="object"?nN(e)?rN(e[0],e[1]):tN(e):oN(e)}a(sN,"baseIteratee");RA.exports=sN});var _A=p((tY,vA)=>{"use strict";var iN=Ki(),uN=su(),cN=1;function pN(e){return uN(typeof e=="function"?e:iN(e,cN))}a(pN,"iteratee");vA.exports=pN});var CA=p((aY,xA)=>{"use strict";var lN=Vo();function dN(e){var t=e==null?0:e.length;return t?lN(e,1):[]}a(dN,"flatten");xA.exports=dN});var LA=p((oY,OA)=>{"use strict";var fN=CA(),mN=Ho(),gN=hn();function hN(e){return gN(mN(e,void 0,fN),e+"")}a(hN,"flatRest");OA.exports=hN});var UA=p((iY,PA)=>{"use strict";var yN=no(),AN=LA(),bN=256,IN=AN(function(e,t){return yN(e,bN,void 0,void 0,void 0,t)});PA.exports=IN});var DA=p((uY,qA)=>{"use strict";var SN=ru(),wN=yr(),TN=Ee(),EN=Cr(),RN=tu(),vN=Ur(),_N=au();function xN(e){return TN(e)?SN(e,vN):EN(e)?[e]:wN(RN(_N(e)))}a(xN,"toPath");qA.exports=xN});var MA=p((pY,kA)=>{"use strict";kA.exports={ary:Jg(),assign:ki(),clone:sy(),curry:uy(),forEach:ro(),isArray:Ee(),isError:py(),isFunction:fa(),isWeakMap:dy(),iteratee:_A(),keys:Di(),rearg:UA(),toInteger:Li(),toPath:DA()}});var BA=p((lY,NA)=>{"use strict";var CN=vm(),ON=MA();function LN(e,t,r){return CN(ON,e,t,r)}a(LN,"convert");NA.exports=LN});var iu=p((fY,FA)=>{"use strict";var PN=BA(),GA=PN("merge",bs());GA.placeholder=mi();FA.exports=GA});var KA=p((uu,cu)=>{"use strict";(function(e,t){typeof uu=="object"&&typeof cu<"u"?cu.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs=t()})(uu,function(){"use strict";var e=1e3,t=6e4,r=36e5,n="millisecond",o="second",s="minute",i="hour",u="day",c="week",f="month",g="quarter",h="year",y="date",E="Invalid Date",M=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,k=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,D={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(O){var w=["th","st","nd","rd"],A=O%100;return"["+O+(w[(A-20)%10]||w[A]||w[0])+"]"}},C=a(function(O,w,A){var _=String(O);return!_||_.length>=w?O:""+Array(w+1-_.length).join(A)+O},"m"),W={s:C,z:function(O){var w=-O.utcOffset(),A=Math.abs(w),_=Math.floor(A/60),S=A%60;return(w<=0?"+":"-")+C(_,2,"0")+":"+C(S,2,"0")},m:a(function O(w,A){if(w.date()<A.date())return-O(A,w);var _=12*(A.year()-w.year())+(A.month()-w.month()),S=w.clone().add(_,f),U=A-S<0,P=w.clone().add(_+(U?-1:1),f);return+(-(_+(A-S)/(U?S-P:P-S))||0)},"t"),a:function(O){return O<0?Math.ceil(O)||0:Math.floor(O)},p:function(O){return{M:f,y:h,w:c,d:u,D:y,h:i,m:s,s:o,ms:n,Q:g}[O]||String(O||"").toLowerCase().replace(/s$/,"")},u:function(O){return O===void 0}},ye="en",ie={};ie[ye]=D;var Ye="$isDayjsObject",nt=a(function(O){return O instanceof Gt||!(!O||!O[Ye])},"S"),ot=a(function O(w,A,_){var S;if(!w)return ye;if(typeof w=="string"){var U=w.toLowerCase();ie[U]&&(S=U),A&&(ie[U]=A,S=U);var P=w.split("-");if(!S&&P.length>1)return O(P[0])}else{var $=w.name;ie[$]=w,S=$}return!_&&S&&(ye=S),S||!_&&ye},"t"),Y=a(function(O,w){if(nt(O))return O.clone();var A=typeof w=="object"?w:{};return A.date=O,A.args=arguments,new Gt(A)},"O"),G=W;G.l=ot,G.i=nt,G.w=function(O,w){return Y(O,{locale:w.$L,utc:w.$u,x:w.$x,$offset:w.$offset})};var Gt=function(){function O(A){this.$L=ot(A.locale,null,!0),this.parse(A),this.$x=this.$x||A.x||{},this[Ye]=!0}a(O,"M");var w=O.prototype;return w.parse=function(A){this.$d=function(_){var S=_.date,U=_.utc;if(S===null)return new Date(NaN);if(G.u(S))return new Date;if(S instanceof Date)return new Date(S);if(typeof S=="string"&&!/Z$/i.test(S)){var P=S.match(M);if(P){var $=P[2]-1||0,Z=(P[7]||"0").substring(0,3);return U?new Date(Date.UTC(P[1],$,P[3]||1,P[4]||0,P[5]||0,P[6]||0,Z)):new Date(P[1],$,P[3]||1,P[4]||0,P[5]||0,P[6]||0,Z)}}return new Date(S)}(A),this.init()},w.init=function(){var A=this.$d;this.$y=A.getFullYear(),this.$M=A.getMonth(),this.$D=A.getDate(),this.$W=A.getDay(),this.$H=A.getHours(),this.$m=A.getMinutes(),this.$s=A.getSeconds(),this.$ms=A.getMilliseconds()},w.$utils=function(){return G},w.isValid=function(){return this.$d.toString()!==E},w.isSame=function(A,_){var S=Y(A);return this.startOf(_)<=S&&S<=this.endOf(_)},w.isAfter=function(A,_){return Y(A)<this.startOf(_)},w.isBefore=function(A,_){return this.endOf(_)<Y(A)},w.$g=function(A,_,S){return G.u(A)?this[_]:this.set(S,A)},w.unix=function(){return Math.floor(this.valueOf()/1e3)},w.valueOf=function(){return this.$d.getTime()},w.startOf=function(A,_){var S=this,U=!!G.u(_)||_,P=G.p(A),$=a(function(I,v){var q=G.w(S.$u?Date.UTC(S.$y,v,I):new Date(S.$y,v,I),S);return U?q:q.endOf(u)},"l"),Z=a(function(I,v){return G.w(S.toDate()[I].apply(S.toDate("s"),(U?[0,0,0,0]:[23,59,59,999]).slice(v)),S)},"$"),ne=this.$W,pe=this.$M,K=this.$D,Fe="set"+(this.$u?"UTC":"");switch(P){case h:return U?$(1,0):$(31,11);case f:return U?$(1,pe):$(0,pe+1);case c:var R=this.$locale().weekStart||0,b=(ne<R?ne+7:ne)-R;return $(U?K-b:K+(6-b),pe);case u:case y:return Z(Fe+"Hours",0);case i:return Z(Fe+"Minutes",1);case s:return Z(Fe+"Seconds",2);case o:return Z(Fe+"Milliseconds",3);default:return this.clone()}},w.endOf=function(A){return this.startOf(A,!1)},w.$set=function(A,_){var S,U=G.p(A),P="set"+(this.$u?"UTC":""),$=(S={},S[u]=P+"Date",S[y]=P+"Date",S[f]=P+"Month",S[h]=P+"FullYear",S[i]=P+"Hours",S[s]=P+"Minutes",S[o]=P+"Seconds",S[n]=P+"Milliseconds",S)[U],Z=U===u?this.$D+(_-this.$W):_;if(U===f||U===h){var ne=this.clone().set(y,1);ne.$d[$](Z),ne.init(),this.$d=ne.set(y,Math.min(this.$D,ne.daysInMonth())).$d}else $&&this.$d[$](Z);return this.init(),this},w.set=function(A,_){return this.clone().$set(A,_)},w.get=function(A){return this[G.p(A)]()},w.add=function(A,_){var S,U=this;A=Number(A);var P=G.p(_),$=a(function(pe){var K=Y(U);return G.w(K.date(K.date()+Math.round(pe*A)),U)},"y");if(P===f)return this.set(f,this.$M+A);if(P===h)return this.set(h,this.$y+A);if(P===u)return $(1);if(P===c)return $(7);var Z=(S={},S[s]=t,S[i]=r,S[o]=e,S)[P]||1,ne=this.$d.getTime()+A*Z;return G.w(ne,this)},w.subtract=function(A,_){return this.add(-1*A,_)},w.format=function(A){var _=this,S=this.$locale();if(!this.isValid())return S.invalidDate||E;var U=A||"YYYY-MM-DDTHH:mm:ssZ",P=G.z(this),$=this.$H,Z=this.$m,ne=this.$M,pe=S.weekdays,K=S.months,Fe=S.meridiem,R=a(function(v,q,oe,Re){return v&&(v[q]||v(_,U))||oe[q].slice(0,Re)},"h"),b=a(function(v){return G.s($%12||12,v,"0")},"d"),I=Fe||function(v,q,oe){var Re=v<12?"AM":"PM";return oe?Re.toLowerCase():Re};return U.replace(k,function(v,q){return q||function(oe){switch(oe){case"YY":return String(_.$y).slice(-2);case"YYYY":return G.s(_.$y,4,"0");case"M":return ne+1;case"MM":return G.s(ne+1,2,"0");case"MMM":return R(S.monthsShort,ne,K,3);case"MMMM":return R(K,ne);case"D":return _.$D;case"DD":return G.s(_.$D,2,"0");case"d":return String(_.$W);case"dd":return R(S.weekdaysMin,_.$W,pe,2);case"ddd":return R(S.weekdaysShort,_.$W,pe,3);case"dddd":return pe[_.$W];case"H":return String($);case"HH":return G.s($,2,"0");case"h":return b(1);case"hh":return b(2);case"a":return I($,Z,!0);case"A":return I($,Z,!1);case"m":return String(Z);case"mm":return G.s(Z,2,"0");case"s":return String(_.$s);case"ss":return G.s(_.$s,2,"0");case"SSS":return G.s(_.$ms,3,"0");case"Z":return P}return null}(v)||P.replace(":","")})},w.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},w.diff=function(A,_,S){var U,P=this,$=G.p(_),Z=Y(A),ne=(Z.utcOffset()-this.utcOffset())*t,pe=this-Z,K=a(function(){return G.m(P,Z)},"D");switch($){case h:U=K()/12;break;case f:U=K();break;case g:U=K()/3;break;case c:U=(pe-ne)/6048e5;break;case u:U=(pe-ne)/864e5;break;case i:U=pe/r;break;case s:U=pe/t;break;case o:U=pe/e;break;default:U=pe}return S?U:G.a(U)},w.daysInMonth=function(){return this.endOf(f).$D},w.$locale=function(){return ie[this.$L]},w.locale=function(A,_){if(!A)return this.$L;var S=this.clone(),U=ot(A,_,!0);return U&&(S.$L=U),S},w.clone=function(){return G.w(this.$d,this)},w.toDate=function(){return new Date(this.valueOf())},w.toJSON=function(){return this.isValid()?this.toISOString():null},w.toISOString=function(){return this.$d.toISOString()},w.toString=function(){return this.$d.toUTCString()},O}(),Ya=Gt.prototype;return Y.prototype=Ya,[["$ms",n],["$s",o],["$m",s],["$H",i],["$W",u],["$M",f],["$y",h],["$D",y]].forEach(function(O){Ya[O[1]]=function(w){return this.$g(w,O[0],O[1])}}),Y.extend=function(O,w){return O.$i||(O(w,Gt,Y),O.$i=!0),Y},Y.locale=ot,Y.isDayjs=nt,Y.unix=function(O){return Y(1e3*O)},Y.en=ie[ye],Y.Ls=ie,Y.p={},Y})});var jb=p((O4,$b)=>{"use strict";function eB(e,t,r,n){for(var o=-1,s=e==null?0:e.length;++o<s;){var i=e[o];t(n,i,r(i),e)}return n}a(eB,"arrayAggregator");$b.exports=eB});var Kb=p((P4,Qb)=>{"use strict";var tB=us(),rB=Or();function aB(e,t){return e&&tB(e,t,rB)}a(aB,"baseForOwn");Qb.exports=aB});var Hb=p((q4,Vb)=>{"use strict";var nB=mr();function oB(e,t){return function(r,n){if(r==null)return r;if(!nB(r))return e(r,n);for(var o=r.length,s=t?o:-1,i=Object(r);(t?s--:++s<o)&&n(i[s],s,i)!==!1;);return r}}a(oB,"createBaseEach");Vb.exports=oB});var zb=p((k4,Yb)=>{"use strict";var sB=Kb(),iB=Hb(),uB=iB(sB);Yb.exports=uB});var Xb=p((M4,Jb)=>{"use strict";var cB=zb();function pB(e,t,r,n){return cB(e,function(o,s,i){t(n,o,r(o),i)}),n}a(pB,"baseAggregator");Jb.exports=pB});var eI=p((B4,Zb)=>{"use strict";var lB=jb(),dB=Xb(),fB=su(),mB=Ee();function gB(e,t){return function(r,n){var o=mB(r)?lB:dB,s=t?t():{};return o(r,e,fB(n,2),s)}}a(gB,"createAggregator");Zb.exports=gB});var rI=p((F4,tI)=>{"use strict";var hB=ba(),yB=eI(),AB=Object.prototype,bB=AB.hasOwnProperty,IB=yB(function(e,t,r){bB.call(e,r)?e[r].push(t):hB(e,r,[t])});tI.exports=IB});var WB={};x(WB,{Method:()=>Ro,ai:()=>Hu,api:()=>wu,auditLogs:()=>kt,automations:()=>Qn,backups:()=>Ne,branding:()=>Un,constants:()=>na,environmentVariables:()=>mt,features:()=>Ze,groups:()=>re,init:()=>Im,licensing:()=>ct,logger:()=>Zt,mappers:()=>ce,middleware:()=>hu,plugins:()=>Kn,publicApi:()=>Yn,quotas:()=>ft,scimGroups:()=>qr,scimUsers:()=>qe,sdk:()=>pu,users:()=>Wn,utils:()=>cr});module.exports=MI(WB);var Ro=(s=>(s.POST="POST",s.GET="GET",s.PATCH="PATCH",s.DELETE="DELETE",s.PUT="PUT",s))(Ro||{});var pu={};x(pu,{ai:()=>Ms,auditLogs:()=>kt,automations:()=>Qn,backups:()=>Ne,branding:()=>Un,environmentVariables:()=>mt,features:()=>Ze,groups:()=>re,init:()=>Im,licensing:()=>ct,logger:()=>Zt,plugins:()=>Kn,publicApi:()=>Yn,quotas:()=>ft,scimGroups:()=>qr,scimUsers:()=>qe,users:()=>Wn,utils:()=>cr});var Un={};x(Un,{getBrandingConfig:()=>Ox});var Ze={};x(Ze,{checkBackups:()=>xe,checkFeature:()=>Ln,checkFeatures:()=>Os,checkSCIM:()=>Ds,isAppBuildersEnabled:()=>Us,isAuditLogsEnabled:()=>Pn,isBackupsEnabled:()=>Ls,isBrandingEnabled:()=>Ps,isEnforceableSSO:()=>Uf,isExpandedPublicApiEnabled:()=>It,isPWAEnabled:()=>Tx,isPkceOidcEnabled:()=>Rx,isRecaptchaEnabled:()=>Ex,isSSOEnforced:()=>vx,isSyncAutomationsEnabled:()=>Sx,isTriggerAutomationRunEnabled:()=>wx,isUserGroupsEnabled:()=>qs,isViewPermissionEnabled:()=>_x,isViewReadonlyColumnsEnabled:()=>xx});var bt=require("@budibase/backend-core"),Ae=require("@budibase/types");var ct={};x(ct,{cache:()=>Je,client:()=>Lt,features:()=>dn,getFreeLicense:()=>_s,getLicense:()=>Rs,getLicenseFromKey:()=>vs,keys:()=>Cs,offline:()=>xn,quotas:()=>fn});var Je={};x(Je,{getCachedLicense:()=>Lf,invalidate:()=>Pf,refresh:()=>Kt});var za=require("@budibase/backend-core");var Mr,NI=a(async()=>{Mr=await za.RedisClient.init(za.redis.utils.Databases.LICENSES)},"init"),BI=a(async()=>{Mr&&await Mr.finish()},"shutdown");process.on("exit",async()=>{await BI()});var vo=a(async()=>(Mr||await NI(),Mr),"getClient");var Lt={};x(Lt,{activateLicenseKey:()=>Wo,getLicense:()=>ir,getLicenseFromKey:()=>Fo,triggerQuota:()=>RS});var Ju=F(require("node-fetch"));var Xu=require("@budibase/backend-core"),_o=require("dd-trace"),Zu=require("dd-trace/ext/formats");var xo=class{constructor(t){this.apiCall=t=>async(r="",n={})=>await _o.tracer.trace(`api.${t}`,async o=>{o.setTag("url",r);let s={...n.headers};s["Content-Type"]||(s["Content-Type"]="application/json",s.Accept="application/json");let i=s["Content-Type"]==="application/json";Xu.logging.correlation.setHeader(s),_o.tracer.inject(o,Zu.HTTP_HEADERS,s);let u={method:t,body:i?JSON.stringify(n.body):n.body,headers:s,credentials:"include"};return(0,Ju.default)(`${this.host}${r}`,u)});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}static{a(this,"API")}},Co=xo;var ec=require("@budibase/backend-core");var{getProxyDispatcher:FI}=ec.utils;async function Ja(e,t,r){let n=FI({rejectUnauthorized:r?.rejectUnauthorized});return n?(console.log("[proxyFetch] Using proxy for request",{url:typeof e=="string"?e:e instanceof URL?e.href:e.url,hasDispatcher:!0,rejectUnauthorized:r?.rejectUnauthorized}),fetch(e,{...t,dispatcher:n})):(console.log("[proxyFetch] No proxy configured, using direct fetch",{url:typeof e=="string"?e:e instanceof URL?e.href:e.url}),fetch(e,t))}a(Ja,"proxyFetch");var cn=require("@budibase/types"),B=require("@budibase/backend-core");var it={};x(it,{bustCache:()=>Po,getCurrentUsageValues:()=>uc,getQuotaUsage:()=>Ft,setAllUsage:()=>qo,setAppUsageValue:()=>Uo,setUsage:()=>oc,setUsagePerApp:()=>sc,utils:()=>Fr});var Le=require("@budibase/backend-core"),ve=require("@budibase/types");var Fr={};x(Fr,{generateBaseQuotaUsage:()=>Za,generateNewMonthlyQuotas:()=>Gr,generateNewQuotaUsage:()=>Lo,getBreakdownName:()=>tn,getCurrentMonthString:()=>xt,getQuotaDocId:()=>Br,setCurrentMonth:()=>en,setQuotaReset:()=>Oo});var Nr=require("@budibase/backend-core"),Xa=require("@budibase/shared-core"),le=require("@budibase/types");var Br=a(()=>Nr.context.isSelfHostUsingCloud()?`quota_usage_${Nr.context.getTenantId()}`:Nr.db.StaticDatabases.GLOBAL.docs.usageQuota,"getQuotaDocId"),tc=a(()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},"getNextQuotaReset"),Oo=a(e=>{e.quotaReset=tc()},"setQuotaReset"),xt=a(()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},"getCurrentMonthString"),Za=a(()=>({usageQuota:{[le.StaticQuotaName.WORKSPACES]:0,[le.StaticQuotaName.ROWS]:0,[le.StaticQuotaName.PLUGINS]:0,[le.StaticQuotaName.USERS]:0,[le.StaticQuotaName.CREATORS]:0,[le.StaticQuotaName.USER_GROUPS]:0,[le.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[xt()]:Gr()}}),"generateBaseQuotaUsage"),Lo=a(()=>{let e={_id:Br(),quotaReset:tc(),...Za(),apps:{}};return en(e),e},"generateNewQuotaUsage"),Gr=a(()=>({[le.MonthlyQuotaName.QUERIES]:0,[le.MonthlyQuotaName.AUTOMATIONS]:0,[le.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,[le.MonthlyQuotaName.ACTIONS]:0,triggers:{}}),"generateNewMonthlyQuotas"),en=a(e=>{let t=xt();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=Gr()),e.monthly.current=e.monthly[t]},"setCurrentMonth"),tn=a((e,t)=>{if(!(!t||!e))switch(e){case le.MonthlyQuotaName.AUTOMATIONS:return le.BreakdownQuotaName.AUTOMATIONS;case le.MonthlyQuotaName.QUERIES:return(0,Xa.isTableIdOrExternalTableId)(t)?le.BreakdownQuotaName.ROW_QUERIES:(0,Xa.isDatasourceOrDatasourcePlusId)(t)?le.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}},"getBreakdownName");var rc=Le.Duration.fromSeconds(60).toMs(),{Writethrough:ac}=Le.cache.writethrough;function WI(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}a(WI,"clearDeprecated");var rn=a(()=>Le.tenancy.isSelfHostUsingCloud()?new ac(Le.tenancy.getSelfHostCloudDB(),rc):new ac(Le.tenancy.getGlobalDB(),rc),"getDB");async function Po(e=0){let r=rn(),n=Br(),o=await r.tryGet(n);o&&o._rev&&await r.remove(n,o._rev).catch(async s=>{if(e<1)return await Po(e+1);throw s})}a(Po,"bustCache");var Ft=a(async()=>{let e=rn(),t=await e.tryGet(Br());if(!t){t=Lo();let{rev:r}=await e.put(t);t._rev=r}return en(t),Oo(t),WI(t)},"getQuotaUsage"),oc=a(async(e,t,r)=>qo({name:t,type:r,values:{total:e}}),"setUsage"),sc=a(async(e,t,r)=>{let n=rn(),o=await Ft(),s=Object.values(e).reduce((u,c)=>u+c,0);for(let[u,c]of Object.entries(e))o=ic(o,t,r,{total:s,app:c},{appId:u});let i=await n.put(o);return o._rev=i.rev,o},"setUsagePerApp"),$I=a((e,t,r,n)=>{let o=tn(t,r);if(!o||!n?.breakdown)return e;e.breakdown||(e.breakdown={}),e.breakdown[o]||(e.breakdown[o]={parent:t,values:{}});let s=e.breakdown[o];return s.values[r]=n.breakdown,e},"setBreakdown"),Uo=a((e,t,r,n={},o)=>{let s;try{s=Le.db.getProdWorkspaceID(n?.appId||Le.context.getWorkspaceId())}catch{}if(!s||!o.app||!ve.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[s]||(e.apps={...e.apps,[s]:Za()});let i=e.apps[s];switch(r){case ve.QuotaUsageType.STATIC:i.usageQuota[t]=o.app;break;case ve.QuotaUsageType.MONTHLY:{let u=xt(),c=t,f=i.monthly[u];f||(i.monthly[u]=Gr(),f=i.monthly[u]),f[c]=o.app,ve.BREAKDOWN_QUOTA_NAMES.includes(c)&&n?.id&&(f=$I(f,c,n.id,o));break}}return e},"setAppUsageValue"),nc=a((e,t,r,n)=>{if(!ve.APP_QUOTA_NAMES.includes(r))return{};let o;try{o=Le.db.getProdWorkspaceID(Le.context.getWorkspaceId())}catch{}if(!o||!e.apps||!e.apps[o])return{app:0};let s=e.apps[o];switch(t){case ve.QuotaUsageType.STATIC:if(s.usageQuota?.[r])return{app:s.usageQuota[r]};break;case ve.QuotaUsageType.MONTHLY:{let i=xt(),u=r;if(!s.monthly?.[i]?.[u])break;let c=s.monthly[i],f=c[u],g,h=tn(u,n);return h&&n&&c.breakdown?.[h]&&(g=c.breakdown[h]?.values[n]),{app:f,breakdown:g||0}}}return{app:0}},"getAppUsageValue"),jI=a((e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},"setStaticTriggers"),QI=a((e,t,r,n)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),n&&(r.monthly[t].triggers[e]=n)},"setMonthlyTriggers"),ic=a((e,t,r,n,o={})=>{if(r===ve.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=n.total,jI(t,e,n.triggers);else if(r===ve.QuotaUsageType.MONTHLY){t=t;let s=xt();e.monthly[s][t]=n.total,QI(t,s,e,n.triggers)}else throw new Error(`Invalid usage type: ${r}`);return Uo(e,t,r,o,n)},"coreUsageUpdate"),qo=a(async e=>{let t=Array.isArray(e)?e:[e],r=rn(),n=await Ft();for(let s of t)n=ic(n,s.name,s.type,s.values,s.opts);let o=await r.put(n,0);return n._rev=o.rev,n},"setAllUsage"),uc=a(async(e,t,r)=>{let n=await Ft(),o=0,s={};switch(e){case ve.QuotaUsageType.STATIC:if(n.usageQuota[t]){let i=t;o=n.usageQuota[i],s=nc(n,e,t,r)}break;case ve.QuotaUsageType.MONTHLY:{let i=xt(),u=t;n.monthly[i][u]&&(o=n.monthly[i][u],s=nc(n,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return ve.APP_QUOTA_NAMES.includes(t)&&!(s.app||s.breakdown)&&(s.app=s.app||0,s.breakdown=s.breakdown||0),{total:o,app:s.app,breakdown:s.breakdown}},"getCurrentUsageValues");var $e={};x($e,{destroy:()=>HI,get:()=>Do,save:()=>VI});var Ct=require("@budibase/backend-core");var KI=a(()=>({_id:Ct.StaticDatabases.GLOBAL.docs.licenseInfo}),"newLicenseInfo"),VI=a(async e=>{let t=await Do();t={...t,...e};let n=await Ct.tenancy.getGlobalDB().put(t);return t._rev=n.rev,t},"save"),Do=a(async()=>{let e=Ct.tenancy.getGlobalDB();try{return await e.get(Ct.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return KI();throw t}},"get"),HI=a(async()=>{let e=Ct.tenancy.getGlobalDB(),t=await Do();t&&t._rev&&await e.remove(Ct.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)},"destroy");var z={};x(z,{bulkSave:()=>sS,destroy:()=>iS,fetch:()=>rS,generateUserGroupID:()=>eS,get:()=>aS,getBulk:()=>nS,getByName:()=>ko,getGroupUsers:()=>nn,getGroupUsersParams:()=>fc,getUserGroupsParams:()=>dc,save:()=>oS});var j=require("@budibase/backend-core");var ze=require("@budibase/types"),nr=require("@budibase/backend-core");async function cc(){let e=nr.sql.designDoc.base("type");e.sql.tables={[ze.AUDIT_LOG_TYPE]:{fields:{appId:ze.SQLiteType.TEXT,event:ze.SQLiteType.TEXT,userId:ze.SQLiteType.TEXT,timestamp:ze.SQLiteType.TEXT,metadata:ze.SQLiteType.TEXT,name:ze.SQLiteType.TEXT,type:ze.SQLiteType.TEXT,fallback:ze.SQLiteType.TEXT}}};let t=nr.context.getAuditLogsDB(),r;try{r=await t.get(nr.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(n){if(n.status===404)r=e;else throw n}await t.put(r)}a(cc,"createAuditLogDesignDocSQL");var an=require("@budibase/backend-core");var{ViewName:YI,SEPARATOR:zI,DocumentType:JI,createView:XI}=an.db,ZI=JI.USER+zI;async function pc(){let e=an.tenancy.getGlobalDB(),t=`function(doc) {
|
|
4
|
-
if (doc._id.startsWith("${
|
|
3
|
+
`)}a(VO,"insertWrapDetails");sg.exports=VO});var ro=p((l2,ug)=>{"use strict";function HO(e,t){for(var r=-1,n=e==null?0:e.length;++r<n&&t(e[r],r,e)!==!1;);return e}a(HO,"arrayEach");ug.exports=HO});var pg=p((f2,cg)=>{"use strict";var YO=ro(),zO=rs(),JO=1,XO=2,ZO=8,eL=16,tL=32,rL=64,aL=128,nL=256,oL=512,sL=[["ary",aL],["bind",JO],["bindKey",XO],["curry",ZO],["curryRight",eL],["flip",oL],["partial",tL],["partialRight",rL],["rearg",nL]];function iL(e,t){return YO(sL,function(r){var n="_."+r[0];t&r[1]&&!zO(e,n)&&e.push(n)}),e.sort()}a(iL,"updateWrapDetails");cg.exports=iL});var _i=p((g2,lg)=>{"use strict";var uL=og(),cL=ig(),pL=hn(),lL=pg();function dL(e,t,r){var n=t+"";return pL(e,cL(n,lL(uL(n),r)))}a(dL,"setWrapToString");lg.exports=dL});var xi=p((y2,mg)=>{"use strict";var fL=rg(),mL=vi(),gL=_i(),hL=1,yL=2,AL=4,bL=8,dg=32,fg=64;function IL(e,t,r,n,o,s,i,u,c,f){var g=t&bL,h=g?i:void 0,y=g?void 0:i,E=g?s:void 0,M=g?void 0:s;t|=g?dg:fg,t&=~(g?fg:dg),t&AL||(t&=~(hL|yL));var k=[e,t,o,E,h,M,y,u,c,f],D=r.apply(void 0,k);return fL(e)&&mL(D,k),D.placeholder=n,gL(D,e,t)}a(IL,"createRecurry");mg.exports=IL});var Ci=p((b2,gg)=>{"use strict";function SL(e){var t=e;return t.placeholder}a(SL,"getHolder");gg.exports=SL});var yg=p((S2,hg)=>{"use strict";var wL=yr(),TL=va(),EL=Math.min;function RL(e,t){for(var r=e.length,n=EL(t.length,r),o=wL(e);n--;){var s=t[n];e[n]=TL(s,r)?o[s]:void 0}return e}a(RL,"reorder");hg.exports=RL});var ao=p((T2,bg)=>{"use strict";var Ag="__lodash_placeholder__";function vL(e,t){for(var r=-1,n=e.length,o=0,s=[];++r<n;){var i=e[r];(i===t||i===Ag)&&(e[r]=Ag,s[o++]=r)}return s}a(vL,"replaceHolders");bg.exports=vL});var Oi=p((R2,wg)=>{"use strict";var _L=wi(),xL=Ti(),CL=Bm(),Ig=ka(),OL=xi(),LL=Ci(),PL=yg(),UL=ao(),qL=_e(),DL=1,kL=2,ML=8,NL=16,BL=128,GL=512;function Sg(e,t,r,n,o,s,i,u,c,f){var g=t&BL,h=t&DL,y=t&kL,E=t&(ML|NL),M=t&GL,k=y?void 0:Ig(e);function D(){for(var C=arguments.length,W=Array(C),ye=C;ye--;)W[ye]=arguments[ye];if(E)var ie=LL(D),Ye=CL(W,ie);if(n&&(W=_L(W,n,o,E)),s&&(W=xL(W,s,i,E)),C-=Ye,E&&C<f){var nt=UL(W,ie);return OL(e,t,Sg,D.placeholder,r,W,nt,u,c,f-C)}var ot=h?r:this,Y=y?ot[e]:e;return C=W.length,u?W=PL(W,u):M&&C>1&&W.reverse(),g&&c<C&&(W.length=c),this&&this!==qL&&this instanceof D&&(Y=k||Ig(Y)),Y.apply(ot,W)}return a(D,"wrapper"),D}a(Sg,"createHybrid");wg.exports=Sg});var Eg=p((_2,Tg)=>{"use strict";var FL=gn(),WL=ka(),$L=Oi(),jL=xi(),QL=Ci(),KL=ao(),VL=_e();function HL(e,t,r){var n=WL(e);function o(){for(var s=arguments.length,i=Array(s),u=s,c=QL(o);u--;)i[u]=arguments[u];var f=s<3&&i[0]!==c&&i[s-1]!==c?[]:KL(i,c);if(s-=f.length,s<r)return jL(e,t,$L,o.placeholder,void 0,i,f,void 0,void 0,r-s);var g=this&&this!==VL&&this instanceof o?n:e;return FL(g,this,i)}return a(o,"wrapper"),o}a(HL,"createCurry");Tg.exports=HL});var vg=p((C2,Rg)=>{"use strict";var YL=gn(),zL=ka(),JL=_e(),XL=1;function ZL(e,t,r,n){var o=t&XL,s=zL(e);function i(){for(var u=-1,c=arguments.length,f=-1,g=n.length,h=Array(g+c),y=this&&this!==JL&&this instanceof i?s:e;++f<g;)h[f]=n[f];for(;c--;)h[f++]=arguments[++u];return YL(y,o?r:this,h)}return a(i,"wrapper"),i}a(ZL,"createPartial");Rg.exports=ZL});var Pg=p((L2,Lg)=>{"use strict";var eP=wi(),tP=Ti(),_g=ao(),xg="__lodash_placeholder__",Li=1,rP=2,aP=4,Cg=8,Ma=128,Og=256,nP=Math.min;function oP(e,t){var r=e[1],n=t[1],o=r|n,s=o<(Li|rP|Ma),i=n==Ma&&r==Cg||n==Ma&&r==Og&&e[7].length<=t[8]||n==(Ma|Og)&&t[7].length<=t[8]&&r==Cg;if(!(s||i))return e;n&Li&&(e[2]=t[2],o|=r&Li?0:aP);var u=t[3];if(u){var c=e[3];e[3]=c?eP(c,u,t[4]):u,e[4]=c?_g(e[3],xg):t[4]}return u=t[5],u&&(c=e[5],e[5]=c?tP(c,u,t[6]):u,e[6]=c?_g(e[5],xg):t[6]),u=t[7],u&&(e[7]=u),n&Ma&&(e[8]=e[8]==null?t[8]:nP(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=o,e}a(oP,"mergeData");Lg.exports=oP});var qg=p((U2,Ug)=>{"use strict";var sP=/\s/;function iP(e){for(var t=e.length;t--&&sP.test(e.charAt(t)););return t}a(iP,"trimmedEndIndex");Ug.exports=iP});var kg=p((D2,Dg)=>{"use strict";var uP=qg(),cP=/^\s+/;function pP(e){return e&&e.slice(0,uP(e)+1).replace(cP,"")}a(pP,"baseTrim");Dg.exports=pP});var Cr=p((M2,Mg)=>{"use strict";var lP=Pt(),dP=Me(),fP="[object Symbol]";function mP(e){return typeof e=="symbol"||dP(e)&&lP(e)==fP}a(mP,"isSymbol");Mg.exports=mP});var Fg=p((B2,Gg)=>{"use strict";var gP=kg(),Ng=Qe(),hP=Cr(),Bg=0/0,yP=/^[-+]0x[0-9a-f]+$/i,AP=/^0b[01]+$/i,bP=/^0o[0-7]+$/i,IP=parseInt;function SP(e){if(typeof e=="number")return e;if(hP(e))return Bg;if(Ng(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=Ng(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=gP(e);var r=AP.test(e);return r||bP.test(e)?IP(e.slice(2),r?2:8):yP.test(e)?Bg:+e}a(SP,"toNumber");Gg.exports=SP});var jg=p((F2,$g)=>{"use strict";var wP=Fg(),Wg=1/0,TP=17976931348623157e292;function EP(e){if(!e)return e===0?e:0;if(e=wP(e),e===Wg||e===-Wg){var t=e<0?-1:1;return t*TP}return e===e?e:0}a(EP,"toFinite");$g.exports=EP});var Pi=p(($2,Qg)=>{"use strict";var RP=jg();function vP(e){var t=RP(e),r=t%1;return t===t?r?t-r:t:0}a(vP,"toInteger");Qg.exports=vP});var no=p((Q2,zg)=>{"use strict";var _P=Si(),xP=Dm(),CP=Eg(),OP=Oi(),LP=vg(),PP=Ei(),UP=Pg(),qP=vi(),DP=_i(),Kg=Pi(),kP="Expected a function",Vg=1,MP=2,Ui=8,qi=16,Di=32,Hg=64,Yg=Math.max;function NP(e,t,r,n,o,s,i,u){var c=t&MP;if(!c&&typeof e!="function")throw new TypeError(kP);var f=n?n.length:0;if(f||(t&=~(Di|Hg),n=o=void 0),i=i===void 0?i:Yg(Kg(i),0),u=u===void 0?u:Kg(u),f-=o?o.length:0,t&Hg){var g=n,h=o;n=o=void 0}var y=c?void 0:PP(e),E=[e,t,r,n,o,g,h,s,i,u];if(y&&UP(E,y),e=E[0],t=E[1],r=E[2],n=E[3],o=E[4],u=E[9]=E[9]===void 0?c?0:e.length:Yg(E[9]-f,0),!u&&t&(Ui|qi)&&(t&=~(Ui|qi)),!t||t==Vg)var M=xP(e,t,r);else t==Ui||t==qi?M=CP(e,t,u):(t==Di||t==(Vg|Di))&&!o.length?M=LP(e,t,r,n):M=OP.apply(void 0,E);var k=y?_P:qP;return DP(k(M,E),e,t)}a(NP,"createWrap");zg.exports=NP});var Xg=p((V2,Jg)=>{"use strict";var BP=no(),GP=128;function FP(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,BP(e,GP,void 0,void 0,void 0,void 0,t)}a(FP,"ary");Jg.exports=FP});var eh=p((Y2,Zg)=>{"use strict";var WP=fs(),$P=WP(Object.keys,Object);Zg.exports=$P});var ki=p((z2,th)=>{"use strict";var jP=En(),QP=eh(),KP=Object.prototype,VP=KP.hasOwnProperty;function HP(e){if(!jP(e))return QP(e);var t=[];for(var r in Object(e))VP.call(e,r)&&r!="constructor"&&t.push(r);return t}a(HP,"baseKeys");th.exports=HP});var Or=p((X2,rh)=>{"use strict";var YP=bs(),zP=ki(),JP=mr();function XP(e){return JP(e)?YP(e):zP(e)}a(XP,"keys");rh.exports=XP});var Mi=p((eV,ah)=>{"use strict";var ZP=Ir(),eU=Or();function tU(e,t){return e&&ZP(t,eU(t),e)}a(tU,"baseAssign");ah.exports=tU});var oh=p((rV,nh)=>{"use strict";var rU=Ir(),aU=Sr();function nU(e,t){return e&&rU(t,aU(t),e)}a(nU,"baseAssignIn");nh.exports=nU});var ih=p((nV,sh)=>{"use strict";function oU(e,t){for(var r=-1,n=e==null?0:e.length,o=0,s=[];++r<n;){var i=e[r];t(i,r,e)&&(s[o++]=i)}return s}a(oU,"arrayFilter");sh.exports=oU});var Ni=p((sV,uh)=>{"use strict";function sU(){return[]}a(sU,"stubArray");uh.exports=sU});var oo=p((uV,ph)=>{"use strict";var iU=ih(),uU=Ni(),cU=Object.prototype,pU=cU.propertyIsEnumerable,ch=Object.getOwnPropertySymbols,lU=ch?function(e){return e==null?[]:(e=Object(e),iU(ch(e),function(t){return pU.call(e,t)}))}:uU;ph.exports=lU});var dh=p((cV,lh)=>{"use strict";var dU=Ir(),fU=oo();function mU(e,t){return dU(e,fU(e),t)}a(mU,"copySymbols");lh.exports=mU});var Bi=p((lV,fh)=>{"use strict";var gU=mn(),hU=Tn(),yU=oo(),AU=Ni(),bU=Object.getOwnPropertySymbols,IU=bU?function(e){for(var t=[];e;)gU(t,yU(e)),e=hU(e);return t}:AU;fh.exports=IU});var gh=p((dV,mh)=>{"use strict";var SU=Ir(),wU=Bi();function TU(e,t){return SU(e,wU(e),t)}a(TU,"copySymbolsIn");mh.exports=TU});var Gi=p((mV,hh)=>{"use strict";var EU=mn(),RU=Ee();function vU(e,t,r){var n=t(e);return RU(e)?n:EU(n,r(e))}a(vU,"baseGetAllKeys");hh.exports=vU});var Fi=p((hV,yh)=>{"use strict";var _U=Gi(),xU=oo(),CU=Or();function OU(e){return _U(e,CU,xU)}a(OU,"getAllKeys");yh.exports=OU});var bh=p((AV,Ah)=>{"use strict";var LU=Gi(),PU=Bi(),UU=Sr();function qU(e){return LU(e,UU,PU)}a(qU,"getAllKeysIn");Ah.exports=qU});var Sh=p((IV,Ih)=>{"use strict";var DU=Ut(),kU=_e(),MU=DU(kU,"DataView");Ih.exports=MU});var Th=p((SV,wh)=>{"use strict";var NU=Ut(),BU=_e(),GU=NU(BU,"Promise");wh.exports=GU});var Pr=p((wV,Oh)=>{"use strict";var Wi=Sh(),$i=yn(),ji=Th(),Qi=ns(),Ki=bi(),Ch=Pt(),Lr=Jo(),Eh="[object Map]",FU="[object Object]",Rh="[object Promise]",vh="[object Set]",_h="[object WeakMap]",xh="[object DataView]",WU=Lr(Wi),$U=Lr($i),jU=Lr(ji),QU=Lr(Qi),KU=Lr(Ki),Xt=Ch;(Wi&&Xt(new Wi(new ArrayBuffer(1)))!=xh||$i&&Xt(new $i)!=Eh||ji&&Xt(ji.resolve())!=Rh||Qi&&Xt(new Qi)!=vh||Ki&&Xt(new Ki)!=_h)&&(Xt=a(function(e){var t=Ch(e),r=t==FU?e.constructor:void 0,n=r?Lr(r):"";if(n)switch(n){case WU:return xh;case $U:return Eh;case jU:return Rh;case QU:return vh;case KU:return _h}return t},"getTag"));Oh.exports=Xt});var Ph=p((EV,Lh)=>{"use strict";var VU=Object.prototype,HU=VU.hasOwnProperty;function YU(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&HU.call(e,"index")&&(r.index=e.index,r.input=e.input),r}a(YU,"initCloneArray");Lh.exports=YU});var qh=p((vV,Uh)=>{"use strict";var zU=wn();function JU(e,t){var r=t?zU(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}a(JU,"cloneDataView");Uh.exports=JU});var kh=p((xV,Dh)=>{"use strict";var XU=/\w*$/;function ZU(e){var t=new e.constructor(e.source,XU.exec(e));return t.lastIndex=e.lastIndex,t}a(ZU,"cloneRegExp");Dh.exports=ZU});var Fh=p((OV,Gh)=>{"use strict";var Mh=Qt(),Nh=Mh?Mh.prototype:void 0,Bh=Nh?Nh.valueOf:void 0;function eq(e){return Bh?Object(Bh.call(e)):{}}a(eq,"cloneSymbol");Gh.exports=eq});var $h=p((PV,Wh)=>{"use strict";var tq=wn(),rq=qh(),aq=kh(),nq=Fh(),oq=ds(),sq="[object Boolean]",iq="[object Date]",uq="[object Map]",cq="[object Number]",pq="[object RegExp]",lq="[object Set]",dq="[object String]",fq="[object Symbol]",mq="[object ArrayBuffer]",gq="[object DataView]",hq="[object Float32Array]",yq="[object Float64Array]",Aq="[object Int8Array]",bq="[object Int16Array]",Iq="[object Int32Array]",Sq="[object Uint8Array]",wq="[object Uint8ClampedArray]",Tq="[object Uint16Array]",Eq="[object Uint32Array]";function Rq(e,t,r){var n=e.constructor;switch(t){case mq:return tq(e);case sq:case iq:return new n(+e);case gq:return rq(e,r);case hq:case yq:case Aq:case bq:case Iq:case Sq:case wq:case Tq:case Eq:return oq(e,r);case uq:return new n;case cq:case dq:return new n(e);case pq:return aq(e);case lq:return new n;case fq:return nq(e)}}a(Rq,"initCloneByTag");Wh.exports=Rq});var Qh=p((qV,jh)=>{"use strict";var vq=Pr(),_q=Me(),xq="[object Map]";function Cq(e){return _q(e)&&vq(e)==xq}a(Cq,"baseIsMap");jh.exports=Cq});var Yh=p((kV,Hh)=>{"use strict";var Oq=Qh(),Lq=Rn(),Kh=vn(),Vh=Kh&&Kh.isMap,Pq=Vh?Lq(Vh):Oq;Hh.exports=Pq});var Jh=p((MV,zh)=>{"use strict";var Uq=Pr(),qq=Me(),Dq="[object Set]";function kq(e){return qq(e)&&Uq(e)==Dq}a(kq,"baseIsSet");zh.exports=kq});var ty=p((BV,ey)=>{"use strict";var Mq=Jh(),Nq=Rn(),Xh=vn(),Zh=Xh&&Xh.isSet,Bq=Zh?Nq(Zh):Mq;ey.exports=Bq});var Vi=p((GV,oy)=>{"use strict";var Gq=Aa(),Fq=ro(),Wq=As(),$q=Mi(),jq=oh(),Qq=ps(),Kq=yr(),Vq=dh(),Hq=gh(),Yq=Fi(),zq=bh(),Jq=Pr(),Xq=Ph(),Zq=$h(),eD=ms(),tD=Ee(),rD=Ta(),aD=Yh(),nD=Qe(),oD=ty(),sD=Or(),iD=Sr(),uD=1,cD=2,pD=4,ry="[object Arguments]",lD="[object Array]",dD="[object Boolean]",fD="[object Date]",mD="[object Error]",ay="[object Function]",gD="[object GeneratorFunction]",hD="[object Map]",yD="[object Number]",ny="[object Object]",AD="[object RegExp]",bD="[object Set]",ID="[object String]",SD="[object Symbol]",wD="[object WeakMap]",TD="[object ArrayBuffer]",ED="[object DataView]",RD="[object Float32Array]",vD="[object Float64Array]",_D="[object Int8Array]",xD="[object Int16Array]",CD="[object Int32Array]",OD="[object Uint8Array]",LD="[object Uint8ClampedArray]",PD="[object Uint16Array]",UD="[object Uint32Array]",V={};V[ry]=V[lD]=V[TD]=V[ED]=V[dD]=V[fD]=V[RD]=V[vD]=V[_D]=V[xD]=V[CD]=V[hD]=V[yD]=V[ny]=V[AD]=V[bD]=V[ID]=V[SD]=V[OD]=V[LD]=V[PD]=V[UD]=!0;V[mD]=V[ay]=V[wD]=!1;function so(e,t,r,n,o,s){var i,u=t&uD,c=t&cD,f=t&pD;if(r&&(i=o?r(e,n,o,s):r(e)),i!==void 0)return i;if(!nD(e))return e;var g=tD(e);if(g){if(i=Xq(e),!u)return Kq(e,i)}else{var h=Jq(e),y=h==ay||h==gD;if(rD(e))return Qq(e,u);if(h==ny||h==ry||y&&!o){if(i=c||y?{}:eD(e),!u)return c?Hq(e,jq(i,e)):Vq(e,$q(i,e))}else{if(!V[h])return o?e:{};i=Zq(e,h,u)}}s||(s=new Gq);var E=s.get(e);if(E)return E;s.set(e,i),oD(e)?e.forEach(function(D){i.add(so(D,t,r,D,e,s))}):aD(e)&&e.forEach(function(D,C){i.set(C,so(D,t,r,C,e,s))});var M=f?c?zq:Yq:c?iD:sD,k=g?void 0:M(e);return Fq(k||e,function(D,C){k&&(C=D,D=e[C]),Wq(i,C,so(D,t,r,C,e,s))}),i}a(so,"baseClone");oy.exports=so});var iy=p((WV,sy)=>{"use strict";var qD=Vi(),DD=4;function kD(e){return qD(e,DD)}a(kD,"clone");sy.exports=kD});var cy=p((jV,uy)=>{"use strict";var MD=no(),ND=8;function Hi(e,t,r){t=r?void 0:t;var n=MD(e,ND,void 0,void 0,void 0,void 0,void 0,t);return n.placeholder=Hi.placeholder,n}a(Hi,"curry");Hi.placeholder={};uy.exports=Hi});var ly=p((KV,py)=>{"use strict";var BD=Pt(),GD=Me(),FD=gs(),WD="[object DOMException]",$D="[object Error]";function jD(e){if(!GD(e))return!1;var t=BD(e);return t==$D||t==WD||typeof e.message=="string"&&typeof e.name=="string"&&!FD(e)}a(jD,"isError");py.exports=jD});var fy=p((HV,dy)=>{"use strict";var QD=Pr(),KD=Me(),VD="[object WeakMap]";function HD(e){return KD(e)&&QD(e)==VD}a(HD,"isWeakMap");dy.exports=HD});var gy=p((zV,my)=>{"use strict";function YD(e,t){for(var r=-1,n=e==null?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}a(YD,"arraySome");my.exports=YD});var Yi=p((XV,hy)=>{"use strict";var zD=ts(),JD=gy(),XD=as(),ZD=1,ek=2;function tk(e,t,r,n,o,s){var i=r&ZD,u=e.length,c=t.length;if(u!=c&&!(i&&c>u))return!1;var f=s.get(e),g=s.get(t);if(f&&g)return f==t&&g==e;var h=-1,y=!0,E=r&ek?new zD:void 0;for(s.set(e,t),s.set(t,e);++h<u;){var M=e[h],k=t[h];if(n)var D=i?n(k,M,h,t,e,s):n(M,k,h,e,t,s);if(D!==void 0){if(D)continue;y=!1;break}if(E){if(!JD(t,function(C,W){if(!XD(E,W)&&(M===C||o(M,C,r,n,s)))return E.push(W)})){y=!1;break}}else if(!(M===k||o(M,k,r,n,s))){y=!1;break}}return s.delete(e),s.delete(t),y}a(tk,"equalArrays");hy.exports=tk});var Ay=p((eH,yy)=>{"use strict";function rk(e){var t=-1,r=Array(e.size);return e.forEach(function(n,o){r[++t]=[o,n]}),r}a(rk,"mapToArray");yy.exports=rk});var Ty=p((rH,wy)=>{"use strict";var by=Qt(),Iy=ls(),ak=lr(),nk=Yi(),ok=Ay(),sk=In(),ik=1,uk=2,ck="[object Boolean]",pk="[object Date]",lk="[object Error]",dk="[object Map]",fk="[object Number]",mk="[object RegExp]",gk="[object Set]",hk="[object String]",yk="[object Symbol]",Ak="[object ArrayBuffer]",bk="[object DataView]",Sy=by?by.prototype:void 0,zi=Sy?Sy.valueOf:void 0;function Ik(e,t,r,n,o,s,i){switch(r){case bk:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case Ak:return!(e.byteLength!=t.byteLength||!s(new Iy(e),new Iy(t)));case ck:case pk:case fk:return ak(+e,+t);case lk:return e.name==t.name&&e.message==t.message;case mk:case hk:return e==t+"";case dk:var u=ok;case gk:var c=n&ik;if(u||(u=sk),e.size!=t.size&&!c)return!1;var f=i.get(e);if(f)return f==t;n|=uk,i.set(e,t);var g=nk(u(e),u(t),n,o,s,i);return i.delete(e),g;case yk:if(zi)return zi.call(e)==zi.call(t)}return!1}a(Ik,"equalByTag");wy.exports=Ik});var vy=p((nH,Ry)=>{"use strict";var Ey=Fi(),Sk=1,wk=Object.prototype,Tk=wk.hasOwnProperty;function Ek(e,t,r,n,o,s){var i=r&Sk,u=Ey(e),c=u.length,f=Ey(t),g=f.length;if(c!=g&&!i)return!1;for(var h=c;h--;){var y=u[h];if(!(i?y in t:Tk.call(t,y)))return!1}var E=s.get(e),M=s.get(t);if(E&&M)return E==t&&M==e;var k=!0;s.set(e,t),s.set(t,e);for(var D=i;++h<c;){y=u[h];var C=e[y],W=t[y];if(n)var ye=i?n(W,C,y,t,e,s):n(C,W,y,e,t,s);if(!(ye===void 0?C===W||o(C,W,r,n,s):ye)){k=!1;break}D||(D=y=="constructor")}if(k&&!D){var ie=e.constructor,Ye=t.constructor;ie!=Ye&&"constructor"in e&&"constructor"in t&&!(typeof ie=="function"&&ie instanceof ie&&typeof Ye=="function"&&Ye instanceof Ye)&&(k=!1)}return s.delete(e),s.delete(t),k}a(Ek,"equalObjects");Ry.exports=Ek});var qy=p((sH,Uy)=>{"use strict";var Ji=Aa(),Rk=Yi(),vk=Ty(),_k=vy(),_y=Pr(),xy=Ee(),Cy=Ta(),xk=_n(),Ck=1,Oy="[object Arguments]",Ly="[object Array]",io="[object Object]",Ok=Object.prototype,Py=Ok.hasOwnProperty;function Lk(e,t,r,n,o,s){var i=xy(e),u=xy(t),c=i?Ly:_y(e),f=u?Ly:_y(t);c=c==Oy?io:c,f=f==Oy?io:f;var g=c==io,h=f==io,y=c==f;if(y&&Cy(e)){if(!Cy(t))return!1;i=!0,g=!1}if(y&&!g)return s||(s=new Ji),i||xk(e)?Rk(e,t,r,n,o,s):vk(e,t,c,r,n,o,s);if(!(r&Ck)){var E=g&&Py.call(e,"__wrapped__"),M=h&&Py.call(t,"__wrapped__");if(E||M){var k=E?e.value():e,D=M?t.value():t;return s||(s=new Ji),o(k,D,r,n,s)}}return y?(s||(s=new Ji),_k(e,t,r,n,o,s)):!1}a(Lk,"baseIsEqualDeep");Uy.exports=Lk});var Xi=p((uH,My)=>{"use strict";var Pk=qy(),Dy=Me();function ky(e,t,r,n,o){return e===t?!0:e==null||t==null||!Dy(e)&&!Dy(t)?e!==e&&t!==t:Pk(e,t,r,n,ky,o)}a(ky,"baseIsEqual");My.exports=ky});var By=p((pH,Ny)=>{"use strict";var Uk=Aa(),qk=Xi(),Dk=1,kk=2;function Mk(e,t,r,n){var o=r.length,s=o,i=!n;if(e==null)return!s;for(e=Object(e);o--;){var u=r[o];if(i&&u[2]?u[1]!==e[u[0]]:!(u[0]in e))return!1}for(;++o<s;){u=r[o];var c=u[0],f=e[c],g=u[1];if(i&&u[2]){if(f===void 0&&!(c in e))return!1}else{var h=new Uk;if(n)var y=n(f,g,c,e,t,h);if(!(y===void 0?qk(g,f,Dk|kk,n,h):y))return!1}}return!0}a(Mk,"baseIsMatch");Ny.exports=Mk});var Zi=p((dH,Gy)=>{"use strict";var Nk=Qe();function Bk(e){return e===e&&!Nk(e)}a(Bk,"isStrictComparable");Gy.exports=Bk});var Wy=p((mH,Fy)=>{"use strict";var Gk=Zi(),Fk=Or();function Wk(e){for(var t=Fk(e),r=t.length;r--;){var n=t[r],o=e[n];t[r]=[n,o,Gk(o)]}return t}a(Wk,"getMatchData");Fy.exports=Wk});var eu=p((hH,$y)=>{"use strict";function $k(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}a($k,"matchesStrictComparable");$y.exports=$k});var Qy=p((AH,jy)=>{"use strict";var jk=By(),Qk=Wy(),Kk=eu();function Vk(e){var t=Qk(e);return t.length==1&&t[0][2]?Kk(t[0][0],t[0][1]):function(r){return r===e||jk(r,e,t)}}a(Vk,"baseMatches");jy.exports=Vk});var uo=p((IH,Ky)=>{"use strict";var Hk=Ee(),Yk=Cr(),zk=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Jk=/^\w*$/;function Xk(e,t){if(Hk(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||Yk(e)?!0:Jk.test(e)||!zk.test(e)||t!=null&&e in Object(t)}a(Xk,"isKey");Ky.exports=Xk});var Yy=p((wH,Hy)=>{"use strict";var Vy=An(),Zk="Expected a function";function tu(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(Zk);var r=a(function(){var n=arguments,o=t?t.apply(this,n):n[0],s=r.cache;if(s.has(o))return s.get(o);var i=e.apply(this,n);return r.cache=s.set(o,i)||s,i},"memoized");return r.cache=new(tu.Cache||Vy),r}a(tu,"memoize");tu.Cache=Vy;Hy.exports=tu});var Jy=p((EH,zy)=>{"use strict";var eM=Yy(),tM=500;function rM(e){var t=eM(e,function(n){return r.size===tM&&r.clear(),n}),r=t.cache;return t}a(rM,"memoizeCapped");zy.exports=rM});var ru=p((vH,Xy)=>{"use strict";var aM=Jy(),nM=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,oM=/\\(\\)?/g,sM=aM(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(nM,function(r,n,o,s){t.push(o?s.replace(oM,"$1"):n||r)}),t});Xy.exports=sM});var au=p((_H,Zy)=>{"use strict";function iM(e,t){for(var r=-1,n=e==null?0:e.length,o=Array(n);++r<n;)o[r]=t(e[r],r,e);return o}a(iM,"arrayMap");Zy.exports=iM});var oA=p((CH,nA)=>{"use strict";var eA=Qt(),uM=au(),cM=Ee(),pM=Cr(),lM=1/0,tA=eA?eA.prototype:void 0,rA=tA?tA.toString:void 0;function aA(e){if(typeof e=="string")return e;if(cM(e))return uM(e,aA)+"";if(pM(e))return rA?rA.call(e):"";var t=e+"";return t=="0"&&1/e==-lM?"-0":t}a(aA,"baseToString");nA.exports=aA});var nu=p((LH,sA)=>{"use strict";var dM=oA();function fM(e){return e==null?"":dM(e)}a(fM,"toString");sA.exports=fM});var ou=p((UH,iA)=>{"use strict";var mM=Ee(),gM=uo(),hM=ru(),yM=nu();function AM(e,t){return mM(e)?e:gM(e,t)?[e]:hM(yM(e))}a(AM,"castPath");iA.exports=AM});var Ur=p((DH,uA)=>{"use strict";var bM=Cr(),IM=1/0;function SM(e){if(typeof e=="string"||bM(e))return e;var t=e+"";return t=="0"&&1/e==-IM?"-0":t}a(SM,"toKey");uA.exports=SM});var su=p((MH,cA)=>{"use strict";var wM=ou(),TM=Ur();function EM(e,t){t=wM(t,e);for(var r=0,n=t.length;e!=null&&r<n;)e=e[TM(t[r++])];return r&&r==n?e:void 0}a(EM,"baseGet");cA.exports=EM});var lA=p((BH,pA)=>{"use strict";var RM=su();function vM(e,t,r){var n=e==null?void 0:RM(e,t);return n===void 0?r:n}a(vM,"get");pA.exports=vM});var fA=p((FH,dA)=>{"use strict";function _M(e,t){return e!=null&&t in Object(e)}a(_M,"baseHasIn");dA.exports=_M});var gA=p(($H,mA)=>{"use strict";var xM=ou(),CM=la(),OM=Ee(),LM=va(),PM=Sn(),UM=Ur();function qM(e,t,r){t=xM(t,e);for(var n=-1,o=t.length,s=!1;++n<o;){var i=UM(t[n]);if(!(s=e!=null&&r(e,i)))break;e=e[i]}return s||++n!=o?s:(o=e==null?0:e.length,!!o&&PM(o)&&LM(i,o)&&(OM(e)||CM(e)))}a(qM,"hasPath");mA.exports=qM});var yA=p((QH,hA)=>{"use strict";var DM=fA(),kM=gA();function MM(e,t){return e!=null&&kM(e,t,DM)}a(MM,"hasIn");hA.exports=MM});var bA=p((VH,AA)=>{"use strict";var NM=Xi(),BM=lA(),GM=yA(),FM=uo(),WM=Zi(),$M=eu(),jM=Ur(),QM=1,KM=2;function VM(e,t){return FM(e)&&WM(t)?$M(jM(e),t):function(r){var n=BM(r,e);return n===void 0&&n===t?GM(r,e):NM(t,n,QM|KM)}}a(VM,"baseMatchesProperty");AA.exports=VM});var SA=p((YH,IA)=>{"use strict";function HM(e){return function(t){return t?.[e]}}a(HM,"baseProperty");IA.exports=HM});var TA=p((JH,wA)=>{"use strict";var YM=su();function zM(e){return function(t){return YM(t,e)}}a(zM,"basePropertyDeep");wA.exports=zM});var RA=p((ZH,EA)=>{"use strict";var JM=SA(),XM=TA(),ZM=uo(),eN=Ur();function tN(e){return ZM(e)?JM(eN(e)):XM(e)}a(tN,"property");EA.exports=tN});var iu=p((tY,vA)=>{"use strict";var rN=Qy(),aN=bA(),nN=da(),oN=Ee(),sN=RA();function iN(e){return typeof e=="function"?e:e==null?nN:typeof e=="object"?oN(e)?aN(e[0],e[1]):rN(e):sN(e)}a(iN,"baseIteratee");vA.exports=iN});var xA=p((aY,_A)=>{"use strict";var uN=Vi(),cN=iu(),pN=1;function lN(e){return cN(typeof e=="function"?e:uN(e,pN))}a(lN,"iteratee");_A.exports=lN});var OA=p((oY,CA)=>{"use strict";var dN=Ho();function fN(e){var t=e==null?0:e.length;return t?dN(e,1):[]}a(fN,"flatten");CA.exports=fN});var PA=p((iY,LA)=>{"use strict";var mN=OA(),gN=Yo(),hN=hn();function yN(e){return hN(gN(e,void 0,mN),e+"")}a(yN,"flatRest");LA.exports=yN});var qA=p((cY,UA)=>{"use strict";var AN=no(),bN=PA(),IN=256,SN=bN(function(e,t){return AN(e,IN,void 0,void 0,void 0,t)});UA.exports=SN});var kA=p((pY,DA)=>{"use strict";var wN=au(),TN=yr(),EN=Ee(),RN=Cr(),vN=ru(),_N=Ur(),xN=nu();function CN(e){return EN(e)?wN(e,_N):RN(e)?[e]:TN(vN(xN(e)))}a(CN,"toPath");DA.exports=CN});var NA=p((dY,MA)=>{"use strict";MA.exports={ary:Xg(),assign:Mi(),clone:iy(),curry:cy(),forEach:ro(),isArray:Ee(),isError:ly(),isFunction:fa(),isWeakMap:fy(),iteratee:xA(),keys:ki(),rearg:qA(),toInteger:Pi(),toPath:kA()}});var GA=p((fY,BA)=>{"use strict";var ON=_m(),LN=NA();function PN(e,t,r){return ON(LN,e,t,r)}a(PN,"convert");BA.exports=PN});var uu=p((gY,WA)=>{"use strict";var UN=GA(),FA=UN("merge",Is());FA.placeholder=gi();WA.exports=FA});var VA=p((cu,pu)=>{"use strict";(function(e,t){typeof cu=="object"&&typeof pu<"u"?pu.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs=t()})(cu,function(){"use strict";var e=1e3,t=6e4,r=36e5,n="millisecond",o="second",s="minute",i="hour",u="day",c="week",f="month",g="quarter",h="year",y="date",E="Invalid Date",M=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,k=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,D={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(O){var w=["th","st","nd","rd"],A=O%100;return"["+O+(w[(A-20)%10]||w[A]||w[0])+"]"}},C=a(function(O,w,A){var _=String(O);return!_||_.length>=w?O:""+Array(w+1-_.length).join(A)+O},"m"),W={s:C,z:function(O){var w=-O.utcOffset(),A=Math.abs(w),_=Math.floor(A/60),S=A%60;return(w<=0?"+":"-")+C(_,2,"0")+":"+C(S,2,"0")},m:a(function O(w,A){if(w.date()<A.date())return-O(A,w);var _=12*(A.year()-w.year())+(A.month()-w.month()),S=w.clone().add(_,f),U=A-S<0,P=w.clone().add(_+(U?-1:1),f);return+(-(_+(A-S)/(U?S-P:P-S))||0)},"t"),a:function(O){return O<0?Math.ceil(O)||0:Math.floor(O)},p:function(O){return{M:f,y:h,w:c,d:u,D:y,h:i,m:s,s:o,ms:n,Q:g}[O]||String(O||"").toLowerCase().replace(/s$/,"")},u:function(O){return O===void 0}},ye="en",ie={};ie[ye]=D;var Ye="$isDayjsObject",nt=a(function(O){return O instanceof Gt||!(!O||!O[Ye])},"S"),ot=a(function O(w,A,_){var S;if(!w)return ye;if(typeof w=="string"){var U=w.toLowerCase();ie[U]&&(S=U),A&&(ie[U]=A,S=U);var P=w.split("-");if(!S&&P.length>1)return O(P[0])}else{var $=w.name;ie[$]=w,S=$}return!_&&S&&(ye=S),S||!_&&ye},"t"),Y=a(function(O,w){if(nt(O))return O.clone();var A=typeof w=="object"?w:{};return A.date=O,A.args=arguments,new Gt(A)},"O"),F=W;F.l=ot,F.i=nt,F.w=function(O,w){return Y(O,{locale:w.$L,utc:w.$u,x:w.$x,$offset:w.$offset})};var Gt=function(){function O(A){this.$L=ot(A.locale,null,!0),this.parse(A),this.$x=this.$x||A.x||{},this[Ye]=!0}a(O,"M");var w=O.prototype;return w.parse=function(A){this.$d=function(_){var S=_.date,U=_.utc;if(S===null)return new Date(NaN);if(F.u(S))return new Date;if(S instanceof Date)return new Date(S);if(typeof S=="string"&&!/Z$/i.test(S)){var P=S.match(M);if(P){var $=P[2]-1||0,Z=(P[7]||"0").substring(0,3);return U?new Date(Date.UTC(P[1],$,P[3]||1,P[4]||0,P[5]||0,P[6]||0,Z)):new Date(P[1],$,P[3]||1,P[4]||0,P[5]||0,P[6]||0,Z)}}return new Date(S)}(A),this.init()},w.init=function(){var A=this.$d;this.$y=A.getFullYear(),this.$M=A.getMonth(),this.$D=A.getDate(),this.$W=A.getDay(),this.$H=A.getHours(),this.$m=A.getMinutes(),this.$s=A.getSeconds(),this.$ms=A.getMilliseconds()},w.$utils=function(){return F},w.isValid=function(){return this.$d.toString()!==E},w.isSame=function(A,_){var S=Y(A);return this.startOf(_)<=S&&S<=this.endOf(_)},w.isAfter=function(A,_){return Y(A)<this.startOf(_)},w.isBefore=function(A,_){return this.endOf(_)<Y(A)},w.$g=function(A,_,S){return F.u(A)?this[_]:this.set(S,A)},w.unix=function(){return Math.floor(this.valueOf()/1e3)},w.valueOf=function(){return this.$d.getTime()},w.startOf=function(A,_){var S=this,U=!!F.u(_)||_,P=F.p(A),$=a(function(I,v){var q=F.w(S.$u?Date.UTC(S.$y,v,I):new Date(S.$y,v,I),S);return U?q:q.endOf(u)},"l"),Z=a(function(I,v){return F.w(S.toDate()[I].apply(S.toDate("s"),(U?[0,0,0,0]:[23,59,59,999]).slice(v)),S)},"$"),ne=this.$W,pe=this.$M,K=this.$D,Fe="set"+(this.$u?"UTC":"");switch(P){case h:return U?$(1,0):$(31,11);case f:return U?$(1,pe):$(0,pe+1);case c:var R=this.$locale().weekStart||0,b=(ne<R?ne+7:ne)-R;return $(U?K-b:K+(6-b),pe);case u:case y:return Z(Fe+"Hours",0);case i:return Z(Fe+"Minutes",1);case s:return Z(Fe+"Seconds",2);case o:return Z(Fe+"Milliseconds",3);default:return this.clone()}},w.endOf=function(A){return this.startOf(A,!1)},w.$set=function(A,_){var S,U=F.p(A),P="set"+(this.$u?"UTC":""),$=(S={},S[u]=P+"Date",S[y]=P+"Date",S[f]=P+"Month",S[h]=P+"FullYear",S[i]=P+"Hours",S[s]=P+"Minutes",S[o]=P+"Seconds",S[n]=P+"Milliseconds",S)[U],Z=U===u?this.$D+(_-this.$W):_;if(U===f||U===h){var ne=this.clone().set(y,1);ne.$d[$](Z),ne.init(),this.$d=ne.set(y,Math.min(this.$D,ne.daysInMonth())).$d}else $&&this.$d[$](Z);return this.init(),this},w.set=function(A,_){return this.clone().$set(A,_)},w.get=function(A){return this[F.p(A)]()},w.add=function(A,_){var S,U=this;A=Number(A);var P=F.p(_),$=a(function(pe){var K=Y(U);return F.w(K.date(K.date()+Math.round(pe*A)),U)},"y");if(P===f)return this.set(f,this.$M+A);if(P===h)return this.set(h,this.$y+A);if(P===u)return $(1);if(P===c)return $(7);var Z=(S={},S[s]=t,S[i]=r,S[o]=e,S)[P]||1,ne=this.$d.getTime()+A*Z;return F.w(ne,this)},w.subtract=function(A,_){return this.add(-1*A,_)},w.format=function(A){var _=this,S=this.$locale();if(!this.isValid())return S.invalidDate||E;var U=A||"YYYY-MM-DDTHH:mm:ssZ",P=F.z(this),$=this.$H,Z=this.$m,ne=this.$M,pe=S.weekdays,K=S.months,Fe=S.meridiem,R=a(function(v,q,oe,Re){return v&&(v[q]||v(_,U))||oe[q].slice(0,Re)},"h"),b=a(function(v){return F.s($%12||12,v,"0")},"d"),I=Fe||function(v,q,oe){var Re=v<12?"AM":"PM";return oe?Re.toLowerCase():Re};return U.replace(k,function(v,q){return q||function(oe){switch(oe){case"YY":return String(_.$y).slice(-2);case"YYYY":return F.s(_.$y,4,"0");case"M":return ne+1;case"MM":return F.s(ne+1,2,"0");case"MMM":return R(S.monthsShort,ne,K,3);case"MMMM":return R(K,ne);case"D":return _.$D;case"DD":return F.s(_.$D,2,"0");case"d":return String(_.$W);case"dd":return R(S.weekdaysMin,_.$W,pe,2);case"ddd":return R(S.weekdaysShort,_.$W,pe,3);case"dddd":return pe[_.$W];case"H":return String($);case"HH":return F.s($,2,"0");case"h":return b(1);case"hh":return b(2);case"a":return I($,Z,!0);case"A":return I($,Z,!1);case"m":return String(Z);case"mm":return F.s(Z,2,"0");case"s":return String(_.$s);case"ss":return F.s(_.$s,2,"0");case"SSS":return F.s(_.$ms,3,"0");case"Z":return P}return null}(v)||P.replace(":","")})},w.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},w.diff=function(A,_,S){var U,P=this,$=F.p(_),Z=Y(A),ne=(Z.utcOffset()-this.utcOffset())*t,pe=this-Z,K=a(function(){return F.m(P,Z)},"D");switch($){case h:U=K()/12;break;case f:U=K();break;case g:U=K()/3;break;case c:U=(pe-ne)/6048e5;break;case u:U=(pe-ne)/864e5;break;case i:U=pe/r;break;case s:U=pe/t;break;case o:U=pe/e;break;default:U=pe}return S?U:F.a(U)},w.daysInMonth=function(){return this.endOf(f).$D},w.$locale=function(){return ie[this.$L]},w.locale=function(A,_){if(!A)return this.$L;var S=this.clone(),U=ot(A,_,!0);return U&&(S.$L=U),S},w.clone=function(){return F.w(this.$d,this)},w.toDate=function(){return new Date(this.valueOf())},w.toJSON=function(){return this.isValid()?this.toISOString():null},w.toISOString=function(){return this.$d.toISOString()},w.toString=function(){return this.$d.toUTCString()},O}(),Ya=Gt.prototype;return Y.prototype=Ya,[["$ms",n],["$s",o],["$m",s],["$H",i],["$W",u],["$M",f],["$y",h],["$D",y]].forEach(function(O){Ya[O[1]]=function(w){return this.$g(w,O[0],O[1])}}),Y.extend=function(O,w){return O.$i||(O(w,Gt,Y),O.$i=!0),Y},Y.locale=ot,Y.isDayjs=nt,Y.unix=function(O){return Y(1e3*O)},Y.en=ie[ye],Y.Ls=ie,Y.p={},Y})});var Qb=p((P4,jb)=>{"use strict";function tB(e,t,r,n){for(var o=-1,s=e==null?0:e.length;++o<s;){var i=e[o];t(n,i,r(i),e)}return n}a(tB,"arrayAggregator");jb.exports=tB});var Vb=p((q4,Kb)=>{"use strict";var rB=cs(),aB=Or();function nB(e,t){return e&&rB(e,t,aB)}a(nB,"baseForOwn");Kb.exports=nB});var Yb=p((k4,Hb)=>{"use strict";var oB=mr();function sB(e,t){return function(r,n){if(r==null)return r;if(!oB(r))return e(r,n);for(var o=r.length,s=t?o:-1,i=Object(r);(t?s--:++s<o)&&n(i[s],s,i)!==!1;);return r}}a(sB,"createBaseEach");Hb.exports=sB});var Jb=p((N4,zb)=>{"use strict";var iB=Vb(),uB=Yb(),cB=uB(iB);zb.exports=cB});var Zb=p((B4,Xb)=>{"use strict";var pB=Jb();function lB(e,t,r,n){return pB(e,function(o,s,i){t(n,o,r(o),i)}),n}a(lB,"baseAggregator");Xb.exports=lB});var tI=p((F4,eI)=>{"use strict";var dB=Qb(),fB=Zb(),mB=iu(),gB=Ee();function hB(e,t){return function(r,n){var o=gB(r)?dB:fB,s=t?t():{};return o(r,e,mB(n,2),s)}}a(hB,"createAggregator");eI.exports=hB});var aI=p(($4,rI)=>{"use strict";var yB=ba(),AB=tI(),bB=Object.prototype,IB=bB.hasOwnProperty,SB=AB(function(e,t,r){IB.call(e,r)?e[r].push(t):yB(e,r,[t])});rI.exports=SB});var jB={};x(jB,{Method:()=>vo,ai:()=>Yu,api:()=>Tu,auditLogs:()=>kt,automations:()=>Qn,backups:()=>Be,branding:()=>Un,constants:()=>na,environmentVariables:()=>mt,features:()=>Ze,groups:()=>re,init:()=>Sm,licensing:()=>ct,logger:()=>Zt,mappers:()=>ce,middleware:()=>yu,plugins:()=>Kn,publicApi:()=>Yn,quotas:()=>ft,scimGroups:()=>qr,scimUsers:()=>qe,sdk:()=>lu,users:()=>Wn,utils:()=>cr});module.exports=NI(jB);var vo=(s=>(s.POST="POST",s.GET="GET",s.PATCH="PATCH",s.DELETE="DELETE",s.PUT="PUT",s))(vo||{});var lu={};x(lu,{ai:()=>Ns,auditLogs:()=>kt,automations:()=>Qn,backups:()=>Be,branding:()=>Un,environmentVariables:()=>mt,features:()=>Ze,groups:()=>re,init:()=>Sm,licensing:()=>ct,logger:()=>Zt,plugins:()=>Kn,publicApi:()=>Yn,quotas:()=>ft,scimGroups:()=>qr,scimUsers:()=>qe,users:()=>Wn,utils:()=>cr});var Un={};x(Un,{getBrandingConfig:()=>Lx});var Ze={};x(Ze,{checkBackups:()=>xe,checkFeature:()=>Ln,checkFeatures:()=>Ls,checkSCIM:()=>ks,isAppBuildersEnabled:()=>qs,isAuditLogsEnabled:()=>Pn,isBackupsEnabled:()=>Ps,isBrandingEnabled:()=>Us,isEnforceableSSO:()=>qf,isExpandedPublicApiEnabled:()=>It,isPWAEnabled:()=>Ex,isPkceOidcEnabled:()=>vx,isRecaptchaEnabled:()=>Rx,isSSOEnforced:()=>_x,isSyncAutomationsEnabled:()=>wx,isTriggerAutomationRunEnabled:()=>Tx,isUserGroupsEnabled:()=>Ds,isViewPermissionEnabled:()=>xx,isViewReadonlyColumnsEnabled:()=>Cx});var bt=require("@budibase/backend-core"),Ae=require("@budibase/types");var ct={};x(ct,{cache:()=>Je,client:()=>Lt,features:()=>dn,getFreeLicense:()=>xs,getLicense:()=>vs,getLicenseFromKey:()=>_s,keys:()=>Os,offline:()=>xn,quotas:()=>fn});var Je={};x(Je,{getCachedLicense:()=>Pf,invalidate:()=>Uf,refresh:()=>Kt});var za=require("@budibase/backend-core");var Mr,BI=a(async()=>{Mr=await za.RedisClient.init(za.redis.utils.Databases.LICENSES)},"init"),GI=a(async()=>{Mr&&await Mr.finish()},"shutdown");process.on("exit",async()=>{await GI()});var _o=a(async()=>(Mr||await BI(),Mr),"getClient");var Lt={};x(Lt,{activateLicenseKey:()=>$o,getLicense:()=>ir,getLicenseFromKey:()=>Wo,triggerQuota:()=>vS});var Xu=G(require("node-fetch"));var Zu=require("@budibase/backend-core"),xo=require("dd-trace"),ec=require("dd-trace/ext/formats");var Co=class{constructor(t){this.apiCall=t=>async(r="",n={})=>await xo.tracer.trace(`api.${t}`,async o=>{o.setTag("url",r);let s={...n.headers};s["Content-Type"]||(s["Content-Type"]="application/json",s.Accept="application/json");let i=s["Content-Type"]==="application/json";Zu.logging.correlation.setHeader(s),xo.tracer.inject(o,ec.HTTP_HEADERS,s);let u={method:t,body:i?JSON.stringify(n.body):n.body,headers:s,credentials:"include"};return(0,Xu.default)(`${this.host}${r}`,u)});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}static{a(this,"API")}},Oo=Co;var tc=require("@budibase/backend-core");var{getProxyDispatcher:WI}=tc.utils;async function Ja(e,t,r){let n=WI({rejectUnauthorized:r?.rejectUnauthorized});return n?(console.log("[proxyFetch] Using proxy for request",{url:typeof e=="string"?e:e instanceof URL?e.href:e.url,hasDispatcher:!0,rejectUnauthorized:r?.rejectUnauthorized}),fetch(e,{...t,dispatcher:n})):(console.log("[proxyFetch] No proxy configured, using direct fetch",{url:typeof e=="string"?e:e instanceof URL?e.href:e.url}),fetch(e,t))}a(Ja,"proxyFetch");var cn=require("@budibase/types"),B=require("@budibase/backend-core");var it={};x(it,{bustCache:()=>Uo,getCurrentUsageValues:()=>cc,getQuotaUsage:()=>Ft,setAllUsage:()=>Do,setAppUsageValue:()=>qo,setUsage:()=>sc,setUsagePerApp:()=>ic,utils:()=>Fr});var Le=require("@budibase/backend-core"),ve=require("@budibase/types");var Fr={};x(Fr,{generateBaseQuotaUsage:()=>Za,generateNewMonthlyQuotas:()=>Gr,generateNewQuotaUsage:()=>Po,getBreakdownName:()=>tn,getCurrentMonthString:()=>xt,getQuotaDocId:()=>Br,setCurrentMonth:()=>en,setQuotaReset:()=>Lo});var Nr=require("@budibase/backend-core"),Xa=require("@budibase/shared-core"),le=require("@budibase/types");var Br=a(()=>Nr.context.isSelfHostUsingCloud()?`quota_usage_${Nr.context.getTenantId()}`:Nr.db.StaticDatabases.GLOBAL.docs.usageQuota,"getQuotaDocId"),rc=a(()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},"getNextQuotaReset"),Lo=a(e=>{e.quotaReset=rc()},"setQuotaReset"),xt=a(()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},"getCurrentMonthString"),Za=a(()=>({usageQuota:{[le.StaticQuotaName.WORKSPACES]:0,[le.StaticQuotaName.ROWS]:0,[le.StaticQuotaName.PLUGINS]:0,[le.StaticQuotaName.USERS]:0,[le.StaticQuotaName.CREATORS]:0,[le.StaticQuotaName.USER_GROUPS]:0,[le.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[xt()]:Gr()}}),"generateBaseQuotaUsage"),Po=a(()=>{let e={_id:Br(),quotaReset:rc(),...Za(),apps:{}};return en(e),e},"generateNewQuotaUsage"),Gr=a(()=>({[le.MonthlyQuotaName.QUERIES]:0,[le.MonthlyQuotaName.AUTOMATIONS]:0,[le.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,[le.MonthlyQuotaName.ACTIONS]:0,triggers:{}}),"generateNewMonthlyQuotas"),en=a(e=>{let t=xt();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=Gr()),e.monthly.current=e.monthly[t]},"setCurrentMonth"),tn=a((e,t)=>{if(!(!t||!e))switch(e){case le.MonthlyQuotaName.AUTOMATIONS:return le.BreakdownQuotaName.AUTOMATIONS;case le.MonthlyQuotaName.QUERIES:return(0,Xa.isTableIdOrExternalTableId)(t)?le.BreakdownQuotaName.ROW_QUERIES:(0,Xa.isDatasourceOrDatasourcePlusId)(t)?le.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}},"getBreakdownName");var ac=Le.Duration.fromSeconds(60).toMs(),{Writethrough:nc}=Le.cache.writethrough;function $I(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}a($I,"clearDeprecated");var rn=a(()=>Le.tenancy.isSelfHostUsingCloud()?new nc(Le.tenancy.getSelfHostCloudDB(),ac):new nc(Le.tenancy.getGlobalDB(),ac),"getDB");async function Uo(e=0){let r=rn(),n=Br(),o=await r.tryGet(n);o&&o._rev&&await r.remove(n,o._rev).catch(async s=>{if(e<1)return await Uo(e+1);throw s})}a(Uo,"bustCache");var Ft=a(async()=>{let e=rn(),t=await e.tryGet(Br());if(!t){t=Po();let{rev:r}=await e.put(t);t._rev=r}return en(t),Lo(t),$I(t)},"getQuotaUsage"),sc=a(async(e,t,r)=>Do({name:t,type:r,values:{total:e}}),"setUsage"),ic=a(async(e,t,r)=>{let n=rn(),o=await Ft(),s=Object.values(e).reduce((u,c)=>u+c,0);for(let[u,c]of Object.entries(e))o=uc(o,t,r,{total:s,app:c},{appId:u});let i=await n.put(o);return o._rev=i.rev,o},"setUsagePerApp"),jI=a((e,t,r,n)=>{let o=tn(t,r);if(!o||!n?.breakdown)return e;e.breakdown||(e.breakdown={}),e.breakdown[o]||(e.breakdown[o]={parent:t,values:{}});let s=e.breakdown[o];return s.values[r]=n.breakdown,e},"setBreakdown"),qo=a((e,t,r,n={},o)=>{let s;try{s=Le.db.getProdWorkspaceID(n?.appId||Le.context.getWorkspaceId())}catch{}if(!s||!o.app||!ve.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[s]||(e.apps={...e.apps,[s]:Za()});let i=e.apps[s];switch(r){case ve.QuotaUsageType.STATIC:i.usageQuota[t]=o.app;break;case ve.QuotaUsageType.MONTHLY:{let u=xt(),c=t,f=i.monthly[u];f||(i.monthly[u]=Gr(),f=i.monthly[u]),f[c]=o.app,ve.BREAKDOWN_QUOTA_NAMES.includes(c)&&n?.id&&(f=jI(f,c,n.id,o));break}}return e},"setAppUsageValue"),oc=a((e,t,r,n)=>{if(!ve.APP_QUOTA_NAMES.includes(r))return{};let o;try{o=Le.db.getProdWorkspaceID(Le.context.getWorkspaceId())}catch{}if(!o||!e.apps||!e.apps[o])return{app:0};let s=e.apps[o];switch(t){case ve.QuotaUsageType.STATIC:if(s.usageQuota?.[r])return{app:s.usageQuota[r]};break;case ve.QuotaUsageType.MONTHLY:{let i=xt(),u=r;if(!s.monthly?.[i]?.[u])break;let c=s.monthly[i],f=c[u],g,h=tn(u,n);return h&&n&&c.breakdown?.[h]&&(g=c.breakdown[h]?.values[n]),{app:f,breakdown:g||0}}}return{app:0}},"getAppUsageValue"),QI=a((e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},"setStaticTriggers"),KI=a((e,t,r,n)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),n&&(r.monthly[t].triggers[e]=n)},"setMonthlyTriggers"),uc=a((e,t,r,n,o={})=>{if(r===ve.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=n.total,QI(t,e,n.triggers);else if(r===ve.QuotaUsageType.MONTHLY){t=t;let s=xt();e.monthly[s][t]=n.total,KI(t,s,e,n.triggers)}else throw new Error(`Invalid usage type: ${r}`);return qo(e,t,r,o,n)},"coreUsageUpdate"),Do=a(async e=>{let t=Array.isArray(e)?e:[e],r=rn(),n=await Ft();for(let s of t)n=uc(n,s.name,s.type,s.values,s.opts);let o=await r.put(n,0);return n._rev=o.rev,n},"setAllUsage"),cc=a(async(e,t,r)=>{let n=await Ft(),o=0,s={};switch(e){case ve.QuotaUsageType.STATIC:if(n.usageQuota[t]){let i=t;o=n.usageQuota[i],s=oc(n,e,t,r)}break;case ve.QuotaUsageType.MONTHLY:{let i=xt(),u=t;n.monthly[i][u]&&(o=n.monthly[i][u],s=oc(n,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return ve.APP_QUOTA_NAMES.includes(t)&&!(s.app||s.breakdown)&&(s.app=s.app||0,s.breakdown=s.breakdown||0),{total:o,app:s.app,breakdown:s.breakdown}},"getCurrentUsageValues");var $e={};x($e,{destroy:()=>YI,get:()=>ko,save:()=>HI});var Ct=require("@budibase/backend-core");var VI=a(()=>({_id:Ct.StaticDatabases.GLOBAL.docs.licenseInfo}),"newLicenseInfo"),HI=a(async e=>{let t=await ko();t={...t,...e};let n=await Ct.tenancy.getGlobalDB().put(t);return t._rev=n.rev,t},"save"),ko=a(async()=>{let e=Ct.tenancy.getGlobalDB();try{return await e.get(Ct.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return VI();throw t}},"get"),YI=a(async()=>{let e=Ct.tenancy.getGlobalDB(),t=await ko();t&&t._rev&&await e.remove(Ct.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)},"destroy");var z={};x(z,{bulkSave:()=>iS,destroy:()=>uS,fetch:()=>aS,generateUserGroupID:()=>tS,get:()=>nS,getBulk:()=>oS,getByName:()=>Mo,getGroupUsers:()=>nn,getGroupUsersParams:()=>mc,getUserGroupsParams:()=>fc,save:()=>sS});var j=require("@budibase/backend-core");var ze=require("@budibase/types"),nr=require("@budibase/backend-core");async function pc(){let e=nr.sql.designDoc.base("type");e.sql.tables={[ze.AUDIT_LOG_TYPE]:{fields:{appId:ze.SQLiteType.TEXT,event:ze.SQLiteType.TEXT,userId:ze.SQLiteType.TEXT,timestamp:ze.SQLiteType.TEXT,metadata:ze.SQLiteType.TEXT,name:ze.SQLiteType.TEXT,type:ze.SQLiteType.TEXT,fallback:ze.SQLiteType.TEXT}}};let t=nr.context.getAuditLogsDB(),r;try{r=await t.get(nr.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(n){if(n.status===404)r=e;else throw n}await t.put(r)}a(pc,"createAuditLogDesignDocSQL");var an=require("@budibase/backend-core");var{ViewName:zI,SEPARATOR:JI,DocumentType:XI,createView:ZI}=an.db,eS=XI.USER+JI;async function lc(){let e=an.tenancy.getGlobalDB(),t=`function(doc) {
|
|
4
|
+
if (doc._id.startsWith("${eS}") && Array.isArray(doc.userGroups)) {
|
|
5
5
|
for (let groupId of doc.userGroups) {
|
|
6
6
|
emit("g_" + groupId, { email: doc.email, userId: doc._id })
|
|
7
7
|
emit("e_" + groupId + doc.email, { email: doc.email, userId: doc._id })
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
|
-
}`;await
|
|
11
|
-
if (doc._id.startsWith("${
|
|
10
|
+
}`;await ZI(e,t,zI.USER_BY_GROUP)}a(lc,"createGroupUserLookupView");var dc=`${j.DocumentType.GROUP}${j.SEPARATOR}`,Wr=a(async()=>(await j.db.getAllWorkspaces({dev:!0,efficient:!0,idsOnly:!0})).map(t=>j.db.getProdWorkspaceID(t)),"getAppIDs");function fc(e,t={}){e||(e="");let r=e?.startsWith(j.DocumentType.GROUP)?"":dc;return{...t,startkey:`${r}${e}`,endkey:`${r}${e}${j.UNICODE_MAX}`}}a(fc,"getUserGroupsParams");function mc(e,t={}){e||(e="");let{emailSearch:r,bookmark:n,...o}=t;return r?{...o,startkey:`e_${e}${n||r}`,endkey:`e_${e}${r}${j.UNICODE_MAX}`}:{...t,startkey:`g_${e}`,endkey:`g_${e}${j.UNICODE_MAX}`,startkey_docid:n}}a(mc,"getGroupUsersParams");function tS(){return`${dc}${j.utils.newid()}`}a(tS,"generateUserGroupID");async function nn(e,t){let r=j.tenancy.getGlobalDB();return(await j.db.queryView(j.db.ViewName.USER_BY_GROUP,mc(e,t),r,lc,{arrayResponse:!0})).map(o=>({_id:o.userId,email:o.email}))||[]}a(nn,"getGroupUsers");async function $r(e,t){return e.users=await nn(e._id),e.roles&&(e.roles=Object.fromEntries(Object.entries(e.roles).filter(([r])=>t.includes(r)))),e}a($r,"enrichGroup");async function rS(e){let r=(await $r(e,await Wr())).users?.map(s=>s._id),n=await j.users.bulkGetGlobalUsersById(r),o=[];for(let s of n){if(!s.userGroups)continue;let i=s.userGroups.length;s.userGroups=s.userGroups.filter(u=>u!==e._id),s.userGroups.length!==i&&o.push(s)}o.length&&await j.users.bulkUpdateGlobalUsers(o)}a(rS,"cleanupUsers");async function gc(){return(await j.tenancy.getGlobalDB().allDocs(fc(null,{include_docs:!0}))).rows.map(t=>t.doc)}a(gc,"getAllGroupDocuments");async function aS(){let[e,t]=await Promise.all([gc(),Wr()]),r=[];for(let n of e)r.push($r(n,t));return await Promise.all(r)}a(aS,"fetch");async function nS(e){let t=j.tenancy.getGlobalDB(),[r,n]=await Promise.all([t.get(e),Wr()]);return await $r(r,n)}a(nS,"get");async function oS(e,t={enriched:!0}){let r=j.tenancy.getGlobalDB(),[n,o]=await Promise.all([r.getMultiple(e,{allowMissing:!0}),Wr()]);if(t?.enriched){let s=[];for(let i of n)s.push($r(i,o));return await Promise.all(s)}else return n}a(oS,"getBulk");async function sS(e){return await j.tenancy.getGlobalDB().put(e)}a(sS,"save");async function iS(e){return await j.tenancy.getGlobalDB().bulkDocs(e)}a(iS,"bulkSave");async function uS(e,t){let r=j.tenancy.getGlobalDB(),n=await r.get(e),o=await r.remove(e,t);return await rS(n),o}a(uS,"destroy");async function Mo(e){let t=e.toLowerCase(),[r,n]=await Promise.all([gc(),Wr()]),o=r.find(s=>s.name.toLowerCase()===t);if(o)return await $r(o,n)}a(Mo,"getByName");var je={};x(je,{deleteAppBackupMetadata:()=>SS,fetchAppBackups:()=>AS,generateAppBackupID:()=>Cc,getAppBackupMetadata:()=>wS,oldestBackupDate:()=>_c,storeAppBackupMetadata:()=>bS,updateAppBackupMetadata:()=>IS});var te=require("@budibase/backend-core"),vc=require("@budibase/types");var na={};x(na,{GENERIC_PAGE_SIZE:()=>ut,auditLogs:()=>or,licenses:()=>ke,quotas:()=>At,versions:()=>aa});var ke={};x(ke,{CLOUD_FREE_LICENSE:()=>pS,SELF_FREE_LICENSE:()=>No,UNLIMITED:()=>ee,UNLIMITED_LICENSE:()=>lS});var Ot=require("@budibase/types");var At={};x(At,{UNLIMITED:()=>cS,actions:()=>Zr,appBackupRetentionDays:()=>ta,apps:()=>Qr,automationLogRetentionDays:()=>ea,automations:()=>Jr,budibaseAICredits:()=>Xr,creators:()=>Vr,customAIConfigurations:()=>ra,plugins:()=>Yr,queries:()=>zr,rows:()=>jr,userGroups:()=>Hr,users:()=>Kr});var Te=require("@budibase/types");var cS=-1,jr=a(e=>({[Te.StaticQuotaName.ROWS]:{name:"Rows",value:e,triggers:[90,100]}}),"rows"),Qr=a(e=>({[Te.StaticQuotaName.WORKSPACES]:{name:"Workspaces",value:e,triggers:[100]}}),"apps"),Kr=a(e=>({[Te.StaticQuotaName.USERS]:{name:"Users",value:e,triggers:[80,100]}}),"users"),Vr=a(e=>({[Te.StaticQuotaName.CREATORS]:{name:"Creators",value:e,triggers:[]}}),"creators"),Hr=a(e=>({[Te.StaticQuotaName.USER_GROUPS]:{name:"User Groups",value:e,triggers:[80,100]}}),"userGroups"),Yr=a(e=>({[Te.StaticQuotaName.PLUGINS]:{name:"Plugins",value:e,triggers:[90,100]}}),"plugins"),zr=a(e=>({[Te.MonthlyQuotaName.QUERIES]:{name:"Queries",value:e,triggers:[]}}),"queries"),Jr=a(e=>({[Te.MonthlyQuotaName.AUTOMATIONS]:{name:"Automations",value:e,triggers:[80,90,100]}}),"automations"),Xr=a(e=>({[Te.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:{name:"Budibase AI Credits",value:e,triggers:[80,90,100]}}),"budibaseAICredits"),Zr=a(e=>({[Te.MonthlyQuotaName.ACTIONS]:{name:"Actions",value:e,triggers:[80,90,100]}}),"actions"),ea=a(e=>({[Te.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS]:{name:"Automation Logs",value:e,triggers:[]}}),"automationLogRetentionDays"),ta=a(e=>({[Te.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS]:{name:"App Backups",value:e,triggers:[]}}),"appBackupRetentionDays"),ra=a(e=>({[Te.StaticQuotaName.AI_CUSTOM_CONFIGS]:{name:"Custom AI Configuration",value:e,triggers:[]}}),"customAIConfigurations");var ee=-1,pS={features:[],quotas:{usage:{monthly:{...zr(ee),...Jr(200),...Xr(5e4),...Zr(ee)},static:{...Qr(ee),...jr(2e3),...Kr(5),...Vr(5),...Hr(0),...Yr(10),...ra(0)}},constant:{...ea(1),...ta(0)}},plan:{type:Ot.PlanType.FREE,usesInvoicing:!1,model:Ot.PlanModel.PER_USER}},No={features:[],quotas:{usage:{monthly:{...zr(ee),...Jr(ee),...Xr(5e4),...Zr(ee)},static:{...jr(ee),...Qr(ee),...Kr(20),...Vr(ee),...Hr(0),...Yr(10),...ra(0)}},constant:{...ea(1),...ta(0)}},plan:{type:Ot.PlanType.FREE,usesInvoicing:!1,model:Ot.PlanModel.PER_USER}},lS={features:[],quotas:{usage:{monthly:{...zr(ee),...Jr(ee),...Xr(ee),...Zr(ee)},static:{...Qr(ee),...jr(ee),...Kr(ee),...Vr(ee),...Hr(ee),...Yr(ee),...ra(ee)}},constant:{...ea(ee),...ta(ee)}},plan:{type:Ot.PlanType.FREE,usesInvoicing:!1,model:Ot.PlanModel.PER_USER}};var aa={};x(aa,{getLicenseVersion:()=>dS,getProVersion:()=>yc});var Wt=require("@budibase/backend-core"),on=G(require("fs")),hc=G(require("path"));var dS=a(()=>{if(Wt.env.isDev()){let e="dev-version.txt",t=hc.default.join(Wt.objectStore.budibaseTempDir(),e);if(on.default.existsSync(t))return on.default.readFileSync(t,"utf8");{let r=Wt.utils.newid();return on.default.writeFileSync(t,r),r}}else return yc()},"getLicenseVersion"),yc=a(()=>{let e=Wt.env.VERSION;if(!e)throw new Error("No budibase pro version was specified");return e},"getProVersion");var or={};x(or,{searchTable:()=>fS});var $t=require("@budibase/types"),Ac=require("@budibase/backend-core");function fS(){return{type:"table",sourceType:$t.TableSourceType.INTERNAL,name:$t.AUDIT_LOG_TYPE,sourceId:Ac.SQS_DATASOURCE_INTERNAL,primary:["_id"],schema:{metadata:{name:"metadata",type:$t.FieldType.JSON},fallback:{name:"fallback",type:$t.FieldType.JSON}}}}a(fS,"searchTable");var ut=9;function oa(e,t){let r=e.rows.map(o=>o.doc?o.doc:o);if(!t?.paginate)return{data:r,hasNextPage:!1};let n=r.length>t?.pageSize;return{data:r.slice(0,t?.pageSize),hasNextPage:n,nextPage:n?e.rows[t?.pageSize]?.key:void 0}}a(oa,"pagination");var bc=require("@budibase/types");var mS=new Date(864e13).toISOString(),gS=1e3*60*60*24;async function sn(e){let r=(await Je.getCachedLicense()).quotas?.[bc.QuotaType.CONSTANT]?.[e]?.value||0;return r===ke.UNLIMITED?new Date(mS).toISOString():new Date(new Date().getTime()-gS*r).toISOString()}a(sn,"getOldestRetentionDate");var sr=require("@budibase/backend-core");var{ViewName:Sc,AutomationViewMode:Bo,SEPARATOR:pt,DocumentType:wc,createView:Tc}=sr.db,hS=wc.AUTOMATION_LOG+pt,Ic=wc.APP_BACKUP+pt;async function Ec(){let e=sr.context.getProdWorkspaceDB(),t=`function(doc) {
|
|
11
|
+
if (doc._id.startsWith("${hS}")) {
|
|
12
12
|
let autoId = doc.automationId + "${pt}"
|
|
13
13
|
let status = doc.status + "${pt}"
|
|
14
|
-
let autoKey = "${
|
|
15
|
-
let statusKey = "${
|
|
16
|
-
let allKey = "${
|
|
14
|
+
let autoKey = "${Bo.AUTOMATION}${pt}" + autoId + doc.createdAt
|
|
15
|
+
let statusKey = "${Bo.STATUS}${pt}" + status + doc.createdAt
|
|
16
|
+
let allKey = "${Bo.ALL}${pt}" + status + autoId + doc.createdAt
|
|
17
17
|
emit(statusKey)
|
|
18
18
|
emit(autoKey)
|
|
19
19
|
emit(allKey)
|
|
20
20
|
}
|
|
21
|
-
}`;await
|
|
22
|
-
if (doc._id.startsWith("${
|
|
21
|
+
}`;await Tc(e,t,Sc.AUTOMATION_LOGS)}a(Ec,"createLogByAutomationView");async function Rc(){let e=sr.tenancy.getGlobalDB(),t=`function(doc) {
|
|
22
|
+
if (doc._id.startsWith("${Ic}") && doc.type && doc.trigger) {
|
|
23
23
|
let full = doc.appId + "${pt}"
|
|
24
24
|
full += doc.trigger.toLowerCase() + "${pt}"
|
|
25
25
|
full += doc.type.toLowerCase() + "${pt}"
|
|
26
|
-
emit("${
|
|
26
|
+
emit("${Ic}" + full + doc.timestamp)
|
|
27
27
|
}
|
|
28
|
-
}`;await
|
|
28
|
+
}`;await Tc(e,t,Sc.WORKSPACE_BACKUP_BY_TRIGGER)}a(Rc,"createAppBackupTriggerView");async function _c(){return sn(vc.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS)}a(_c,"oldestBackupDate");var Go=`${te.db.DocumentType.APP_BACKUP}${te.db.SEPARATOR}`;async function yS(e,t,r={}){let n=await _c(),o=te.db.getProdWorkspaceID(e),s=o,i=o;if(t.trigger&&t.type){let u=`${te.db.SEPARATOR}${t.trigger}`;u+=`${te.db.SEPARATOR}${t.type}`,s+=u,i+=u}return(!t.startDate||t.startDate<n)&&(t.startDate=n),t.startDate&&(i+=`${te.db.SEPARATOR}${t.startDate}`),t.endDate&&(s+=`${te.db.SEPARATOR}${t.endDate}`),{...r,descending:!0,startkey:`${Go}${s}${te.db.UNICODE_MAX}`,endkey:`${Go}${i}`}}a(yS,"getAppBackupParams");async function xc(e,t){try{let r=te.db.getQueryIndex(te.db.ViewName.WORKSPACE_BACKUP_BY_TRIGGER);return await e.query(r,t)}catch(r){if(r!=null&&r.error==="not_found")return await Rc(),xc(e,t);throw r}}a(xc,"getAppBackupsByTrigger");function Cc(e,t){return`${Go}${e}${te.db.SEPARATOR}${t}`}a(Cc,"generateAppBackupID");async function AS(e,t={}){let r=te.tenancy.getGlobalDB(),n,o=t.limit||9,s=await yS(e,t,{include_docs:!0,limit:o+1});t.page&&(s.startkey=t.page),!t.trigger||!t.type?n=await r.allDocs(s):n=await xc(r,s);let i=oa(n,{paginate:t.paginate,pageSize:o}),u=[...new Set(i.data.filter(f=>f.createdBy).map(f=>f.createdBy))],c=await te.users.bulkGetGlobalUsersById(u,{cleanup:!0});for(let f of c)for(let g of i.data)f?._id===g.createdBy&&(g.createdBy=f);return i}a(AS,"fetchAppBackups");async function bS(e,t={}){let r=te.tenancy.getGlobalDB(),n=te.db.getProdWorkspaceID(e.appId),o=Cc(n,e.timestamp),s={...e,_id:o,appId:n,name:e.name};return s._id=t.docId||s._id,s._rev=t.docRev||s._rev,t.filename&&(s.filename=t.filename),e.createdBy&&(s.createdBy=te.db.getGlobalIDFromUserMetadataID(e.createdBy)),await r.put(s)}a(bS,"storeAppBackupMetadata");async function IS(e,t){let r=te.tenancy.getGlobalDB(),n=await r.get(e);return n.name=t,await r.put(n)}a(IS,"updateAppBackupMetadata");async function SS(e){let t=te.tenancy.getGlobalDB(),r=await t.get(e);await t.remove(r._id,r._rev)}a(SS,"deleteAppBackupMetadata");async function wS(e){return await te.tenancy.getGlobalDB().get(e)}a(wS,"getAppBackupMetadata");var jt={};x(jt,{get:()=>ES,getCacheEnvVarID:()=>Pc,getEnvVarID:()=>un,update:()=>RS});var Xe=require("@budibase/backend-core"),Lc=G(require("lru-cache"));var TS=1e3,Oc=new Lc.default({max:TS});function un(){return Xe.StaticDatabases.GLOBAL.docs.environmentVariables}a(un,"getEnvVarID");function Pc(e){return`${Xe.tenancy.getTenantId()}/${un()}/${e||""}`}a(Pc,"getCacheEnvVarID");async function ES(){let e=un(),t=Xe.tenancy.getGlobalDB(),r,n=!1;try{r=await t.get(e)}catch(u){if(u.status==404)n=!0;else throw u}let o=Pc(r?._rev),s=Oc.get(o);if(s)return s;let i;return!n&&r?i={...r,variables:JSON.parse(Xe.encryption.decrypt(r.variables,Xe.encryption.SecretOption.ENCRYPTION))}:i={_id:e,variables:{}},Oc.set(o,i),i}a(ES,"get");async function RS(e){let t=un();return await Xe.tenancy.getGlobalDB().put({_id:e._id||t,_rev:e._rev||void 0,variables:Xe.encryption.encrypt(JSON.stringify(e.variables),Xe.encryption.SecretOption.ENCRYPTION)})}a(RS,"update");var Fo=require("dd-trace");var pn=new Oo(B.env.INTERNAL_ACCOUNT_PORTAL_URL),ln=a(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{}},"getResponseErrorMessage"),Uc=a(async e=>{let t,r;if(B.env.SELF_HOSTED){if(t=await $e.get(),!t.licenseKey)return;r={[B.constants.Header.LICENSE_KEY]:t.licenseKey}}else{let n=B.tenancy.getTenantId();r={[B.constants.Header.API_KEY]:B.env.ACCOUNT_PORTAL_API_KEY,[B.constants.Header.TENANT_ID]:n}}return e(r)},"authAware"),qc=a(async()=>await Fo.tracer.trace("_getLicense",async()=>await Uc(async e=>{let t=await it.getQuotaUsage();if(t.usageQuota.users==null){let u=await B.users.getUserCount();console.info(`Syncing user count quota to ${u}`),t.usageQuota.users=u,await it.setUsage(u,cn.StaticQuotaName.USERS,cn.QuotaUsageType.STATIC)}let r=await B.installation.getInstallFromDB(),n=B.tenancy.getTenantId(),o=await B.events.identification.getUniqueTenantId(n),s=aa.getProVersion(),i={quotaUsage:t,tenantId:n,install:{id:r.installId,tenantId:o,version:s}};try{let u=await pn.post("/api/license",{headers:{...e},body:i});if(u.status===404||u.status===403)return;if(u.status!==200){let c=await ln(u);throw new B.HTTPError(`Error getting license: ${c}`,u.status)}return u.json()}catch(u){if(B.env.DISABLE_ACCOUNT_PORTAL)return;throw u}})),"_getLicense");B.env.isJest()&&(qc=jest.fn());var ir=qc;async function Wo(e){return await Fo.tracer.trace("getLicenseFromKey",async t=>{let r;if(!B.env.ACCOUNT_PORTAL_API_KEY)throw new Error("getLicenseFromKey requires ACCOUNT_PORTAL_API_KEY to be set");try{r=await pn.get(`/api/license/${e}`,{headers:{[B.constants.Header.API_KEY]:B.env.ACCOUNT_PORTAL_API_KEY}})}catch(n){if(B.env.DISABLE_ACCOUNT_PORTAL)return;throw n}if(r.status===404||r.status===403){t.addTags({licenseFound:!1});return}if(r.status!==200){let n=await ln(r);throw new B.HTTPError(`Error getting license: ${n}`,r.status)}return r.json()})}a(Wo,"getLicenseFromKey");var vS=a(e=>Uc(async t=>{let r=await pn.post("/api/license/usage/triggered",{headers:{...t},body:e});if(r.status!==200){let n=await ln(r);B.logging.logAlert(`Error triggering quota usage: ${n}`)}}),"triggerQuota"),$o=a(async e=>{let t=await B.installation.getInstall(),r={installVersion:t.version,installId:t.installId},n=await pn.post("/api/license/activate",{headers:{[B.constants.Header.LICENSE_KEY]:e},body:r});if(n.status===403)throw new B.HTTPError("Invalid license key",400);if(n.status===409)throw new B.HTTPError("License key has already been activated",409);if(n.status!==200){let o=await ln(n);throw new B.HTTPError(`Error activating license key: ${o}`,n.status)}return n.json()},"activateLicenseKey");var Rs=require("@budibase/backend-core");var xn={};x(xn,{activateOfflineLicenseToken:()=>px,deleteOfflineLicenseToken:()=>lx,dev:()=>xa,enrichLicense:()=>vf,getIdentifier:()=>Ss,getIdentifierBase64:()=>dx,getIdentifierFromBase64:()=>fx,getOfflineLicense:()=>ws,getOfflineLicenseToken:()=>Tf,signing:()=>ua,verifyExpiry:()=>Ef,verifyInstallation:()=>Rf});var ua={};x(ua,{sign:()=>xS,verifyLicenseToken:()=>ia});var jo=G(require("jsonwebtoken"));var _S=`-----BEGIN PUBLIC KEY-----
|
|
29
29
|
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvz3jePLCFBXZ19c8Dpkv
|
|
30
30
|
XtSgOhKFOcvQdo/LV0KJRUzQWDPWuO4ILtBtnqhjtIzZH4CH0qCYBet5L6Qr4CM1
|
|
31
31
|
l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
|
|
@@ -34,22 +34,22 @@ l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
|
|
|
34
34
|
d/o3ZWE1TTj1zYwlCLN5qRKr3hU8nC3xEYNEbkB9SfTRaOq9Q7P8WmfLkoCPm3pR
|
|
35
35
|
mwIDAQAB
|
|
36
36
|
-----END PUBLIC KEY-----
|
|
37
|
-
`;function ia(e){return $o.default.verify(e,vS,{algorithms:["RS256"]})}a(ia,"verifyLicenseToken");function _S(e,t){return $o.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}a(_S,"sign");var dn={};x(dn,{getFeatures:()=>jo});var l=require("@budibase/types");var xS={[l.PlanType.FREE]:[...De.SELF_FREE_LICENSE.features],[l.PlanType.PREMIUM]:[l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.PDF],[l.PlanType.PREMIUM_PLUS]:[l.Feature.WORKSPACE_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.WORKSPACE_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.WORKSPACE_BACKUPS],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_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.WORKSPACE_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.Feature.RECAPTCHA,l.Feature.PKCE_OIDC],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_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.Feature.RECAPTCHA,l.Feature.PKCE_OIDC],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_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.Feature.RECAPTCHA,l.Feature.PKCE_OIDC]},CS={[l.PlanType.FREE]:[...De.CLOUD_FREE_LICENSE.features],[l.PlanType.PREMIUM]:[l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.PDF],[l.PlanType.PREMIUM_PLUS]:[l.Feature.WORKSPACE_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.WORKSPACE_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.WORKSPACE_BACKUPS,l.Feature.BRANDING],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_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.WORKSPACE_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.Feature.RECAPTCHA,l.Feature.PKCE_OIDC],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_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.Feature.RECAPTCHA,l.Feature.PKCE_OIDC],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_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,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC]};function jo(e,t){let r=[];function n(o){let s=o[t];if(!s)throw new Error(`Features do not exist for planType=${t} and hosting=${e}`);return s}switch(a(n,"readFeatures"),e){case l.Hosting.SELF:r=n(xS);break;case l.Hosting.CLOUD:r=n(CS);break}return r}a(jo,"getFeatures");var fn={};x(fn,{UNLIMITED:()=>m,getQuotas:()=>Qo});var J=require("@budibase/types");var d=At,qc=De,m=-1,ca=a(e=>e*1e6,"millions"),OS={[J.PlanType.FREE]:{...qc.CLOUD_FREE_LICENSE.quotas},[J.PlanType.PREMIUM]:{usage:{monthly:{...d.queries(m),...d.automations(1e3),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(1e4),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(7),...d.appBackupRetentionDays(7)}},[J.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...d.queries(m),...d.automations(5e3),...d.budibaseAICredits(ca(2)),...d.actions(m)},static:{...d.rows(25e3),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(1)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(30)}},[J.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...d.queries(m),...d.automations(5e3),...d.budibaseAICredits(ca(2)),...d.actions(m)},static:{...d.rows(25e3),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(1)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(30)}},[J.PlanType.PRO]:{usage:{monthly:{...d.queries(m),...d.automations(1e3),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(5),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(7),...d.appBackupRetentionDays(7)}},[J.PlanType.TEAM]:{usage:{monthly:{...d.queries(m),...d.automations(5e3),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(10),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(90)}},[J.PlanType.BUSINESS]:{usage:{monthly:{...d.queries(m),...d.automations(1e4),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(5e4),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(50),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(365),...d.appBackupRetentionDays(365)}},[J.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(ca(4)),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(m),...d.appBackupRetentionDays(m)}},[J.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(ca(4)),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(15),...d.appBackupRetentionDays(15)}},[J.PlanType.ENTERPRISE]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(ca(4)),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(m),...d.appBackupRetentionDays(m)}}},LS={[J.PlanType.FREE]:{...qc.SELF_FREE_LICENSE.quotas},[J.PlanType.PREMIUM]:void 0,[J.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(1)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(30)}},[J.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(1)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(30)}},[J.PlanType.PRO]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(5),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(7),...d.appBackupRetentionDays(7)}},[J.PlanType.TEAM]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(10),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(90)}},[J.PlanType.BUSINESS]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(50),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(90),...d.appBackupRetentionDays(365)}},[J.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(m),...d.appBackupRetentionDays(m)}},[J.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(15),...d.appBackupRetentionDays(15)}},[J.PlanType.ENTERPRISE]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(m),...d.appBackupRetentionDays(m)}}};function Qo(e,t){let r;function n(o){let s=o[t];if(!s)throw new Error(`Quotas do not exist for planType=${t} and hosting=${e}`);return s}switch(a(n,"readQuotas"),e){case J.Hosting.SELF:r=n(LS);break;case J.Hosting.CLOUD:r=n(OS);break}return JSON.parse(JSON.stringify(r))}a(Qo,"getQuotas");var cr={};x(cr,{encoding:()=>ur,workspaceExists:()=>PS});var Dc=require("@budibase/backend-core");async function PS(e){return(await Dc.db.getAllWorkspaces({all:!0,idsOnly:!0})).includes(e)}a(PS,"workspaceExists");var ur={};x(ur,{base64ToObject:()=>qS,objectToBase64:()=>US});function US(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}a(US,"objectToBase64");function qS(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}a(qS,"base64ToObject");var bf=require("@budibase/types"),wr=require("@budibase/backend-core"),If=F(Jl()),Sf=F(bs());async function cx(e){await $e.save({offlineLicenseToken:e}),await Kt()}a(cx,"activateOfflineLicenseToken");async function px(){await $e.save({offlineLicenseToken:void 0}),await Kt()}a(px,"deleteOfflineLicenseToken");async function wf(){return(await $e.get()).offlineLicenseToken}a(wf,"getOfflineLicenseToken");async function Is(){let t=(await wr.installation.getInstall()).installId,r=wr.context.getTenantId(),n=await wr.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:n}}a(Is,"getIdentifier");async function lx(){let e=await Is();return ur.objectToBase64(e)}a(lx,"getIdentifierBase64");function dx(e){return ur.base64ToObject(e)}a(dx,"getIdentifierFromBase64");function Tf(e){let t=Date.now(),r=new Date(e.expireAt).getTime();if(t>r)throw new Error(`Offline license has expired. expireAt=${e.expireAt}`)}a(Tf,"verifyExpiry");async function Ef(e){let t=await Is();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}a(Ef,"verifyInstallation");function Rf(e){let t=e.plan.type,r=bf.Hosting.SELF,n=jo(r,t),o=Qo(r,t);return e.features=(0,If.default)(e.features,n),e.quotas=(0,Sf.default)(e.quotas,o),e}a(Rf,"enrichLicense");async function Ss(){try{let e=await wf();if(e){let t=await ia(e);return Tf(t),await Ef(t),Rf(t)}}catch(e){console.error("Error retrieving offline license",e)}}a(Ss,"getOfflineLicense");var xa={};x(xa,{deleteDevLicense:()=>yx,getOfflineLicense:()=>gx,writeDevLicenseToDisk:()=>hx});var vf=require("@budibase/backend-core"),Ts=require("path"),_f=require("os"),Vt=F(require("fs"));var fx=vf.env.isTest()?".budibase-test":".budibase",ws=(0,Ts.join)((0,_f.tmpdir)(),fx),mx="dev_license.txt",_a=(0,Ts.join)(ws,mx);if(!Vt.default.existsSync(ws))try{Vt.default.mkdirSync(ws)}catch{}function gx(){try{if(Vt.default.existsSync(_a)){let e=Vt.default.readFileSync(_a,{encoding:"utf-8"});return ia(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}a(gx,"getOfflineLicense");function hx(e){console.log(`Writing license to: ${_a}`),Vt.default.writeFileSync(_a,e,{encoding:"utf-8"})}a(hx,"writeDevLicenseToDisk");function yx(){Vt.default.rmSync(_a,{force:!0})}a(yx,"deleteDevLicense");var xf=require("dd-trace");var Rs=a(async()=>await xf.tracer.trace("getLicense",async e=>{if(Es.env.OFFLINE_MODE)return e.addTags({offline:!0}),Ss();let t=await ir();return t||(e.addTags({offlineFallback:!0}),t=xa.getOfflineLicense()),t}),"getLicense"),vs=a(e=>Fo(e),"getLicenseFromKey"),_s=a(()=>Es.env.SELF_HOSTED?De.SELF_FREE_LICENSE:De.CLOUD_FREE_LICENSE,"getFreeLicense");var Cs={};x(Cs,{activateLicenseKey:()=>Ax,deleteLicenseKey:()=>bx,getLicenseKey:()=>Cn});var xs=F(require("dd-trace"));async function Ax(e){await Wo(e),await $e.save({licenseKey:e}),await Kt()}a(Ax,"activateLicenseKey");async function Cn(){return await xs.default.trace("getLicenseKey",async e=>{let t=await $e.get();return e.addTags({licenseKey:t.licenseKey}),t.licenseKey})}a(Cn,"getLicenseKey");async function bx(){return await xs.default.trace("deleteLicenseKey",async()=>{await $e.save({licenseKey:void 0}),await Kt()})}a(bx,"deleteLicenseKey");var Ht=require("@budibase/backend-core"),On=F(require("dd-trace"));var Cf=3600,Kt=a(async()=>{await Pf(),await Lf()},"refresh"),Of=a(async(e,t)=>{let{populateLicense:r=Rs,populateFreeLicense:n=_s}=t||{};return await On.default.trace("getCachedLicense",async o=>{let s=Ht.context.getLicense();if(s)return o.addTags({foundInContext:!0,features:s.features,plan:s.plan,quotas:s.quotas}),s;let i=Ht.tenancy.getTenantId(),u=await vo(),c=await u.get(i);return o.addTags({tenantId:i,foundInCache:!!c}),c?(o.addTags({foundInCache:!0,refreshedAt:c.refreshedAt,features:c.features,plan:c.plan,quotas:c.quotas}),c):(c=await On.default.trace("populateLicense",async()=>await r(i)),o.addTags({populatedLicense:!!c}),c||(c=On.default.trace("populateFreeLicense",()=>n(e,i)),o.addTags({populatedFreeLicense:!!c})),c.refreshedAt=new Date().toISOString(),o.addTags({refreshedAt:c.refreshedAt,features:c.features,plan:c.plan,quotas:c.quotas,expirySeconds:Cf}),await u.store(i,c,Cf),c)})},"_getCachedLicense");Ht.env.isJest()&&(Of=jest.fn());var Lf=Of,Pf=a(async()=>{let e=Ht.tenancy.getTenantId();await(await vo()).delete(e)},"invalidate");async function be(e,t){Array.isArray(e)||(e=[e]),t||(t=await Je.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}a(be,"areFeaturesEnabled");async function Ln(e,t){if(!await be(e,t))throw new bt.FeatureDisabledError(`${e} is not currently enabled`,e)}a(Ln,"checkFeature");async function Os(e,t){if(!await be(e,t)){let r=e.join(", ");throw new bt.FeatureDisabledError(`${r} are not currently enabled`,r)}}a(Os,"checkFeatures");function xe(e){return async(...t)=>(await Ln(Ae.Feature.WORKSPACE_BACKUPS),e(...t))}a(xe,"checkBackups");async function Ls(){return be(Ae.Feature.WORKSPACE_BACKUPS)}a(Ls,"isBackupsEnabled");async function Ps(){return be(Ae.Feature.BRANDING)}a(Ps,"isBrandingEnabled");async function Uf(){return be(Ae.Feature.ENFORCEABLE_SSO)}a(Uf,"isEnforceableSSO");async function Sx(){return be(Ae.Feature.SYNC_AUTOMATIONS)}a(Sx,"isSyncAutomationsEnabled");async function wx(){return be(Ae.Feature.TRIGGER_AUTOMATION_RUN)}a(wx,"isTriggerAutomationRunEnabled");async function Us(){return be(Ae.Feature.APP_BUILDERS)}a(Us,"isAppBuildersEnabled");async function Pn(){return be(Ae.Feature.AUDIT_LOGS)}a(Pn,"isAuditLogsEnabled");async function qs(){return be(Ae.Feature.USER_GROUPS)}a(qs,"isUserGroupsEnabled");function Tx(){return be(Ae.Feature.PWA)}a(Tx,"isPWAEnabled");function Ex(){return be(Ae.Feature.RECAPTCHA)}a(Ex,"isRecaptchaEnabled");var Rx=a(()=>be(Ae.Feature.PKCE_OIDC),"isPkceOidcEnabled");async function It(){return be(Ae.Feature.EXPANDED_PUBLIC_API)}a(It,"isExpandedPublicApiEnabled");async function vx(e){if(bt.env.ENABLE_SSO_MAINTENANCE_MODE||!await Uf())return!1;let r;return e?.config?r=e.config:r=await bt.configs.getSettingsConfig(),!!r.isSSOEnforced}a(vx,"isSSOEnforced");var Ds=a(async()=>{let e=Ae.Feature.SCIM,t=await be(e),r=await bt.configs.getSCIMConfig();if(!t||!r?.enabled)throw new bt.FeatureDisabledError(`${e} is not currently enabled`,e);return!0},"checkSCIM");async function _x(){return be(Ae.Feature.VIEW_PERMISSIONS)}a(_x,"isViewPermissionEnabled");async function xx(){return be(Ae.Feature.VIEW_READONLY_COLUMNS)}a(xx,"isViewReadonlyColumnsEnabled");var Cx={faviconUrl:void 0,faviconUrlEtag:void 0,emailBrandingEnabled:!0,platformTitle:void 0,loginHeading:void 0,loginButton:void 0,metaDescription:void 0,metaImageUrl:void 0,metaTitle:void 0};async function Ox(e){return await Ps()?{faviconUrl:e.faviconUrl,faviconUrlEtag:e.faviconUrlEtag,emailBrandingEnabled:e.emailBrandingEnabled,platformTitle:e.platformTitle,loginHeading:e.loginHeading,loginButton:e.loginButton,metaDescription:e.metaDescription,metaImageUrl:e.metaImageUrl,metaTitle:e.metaTitle}:Cx}a(Ox,"getBrandingConfig");var Ms={};x(Ms,{enrichAIConfig:()=>ks});var qf=require("@budibase/backend-core");var Lx="budibase_ai";async function ks(e){if(qf.env.SELF_HOSTED)return e;for(let t of Object.values(e.config))if(t.provider==="BudibaseAI")return e;return e.config[Lx]={provider:"BudibaseAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-5-mini",name:"Budibase AI"},e}a(ks,"enrichAIConfig");var ft={};x(ft,{addAction:()=>kx,addApp:()=>Mx,addAutomation:()=>$x,addGroup:()=>Bs,addPlugin:()=>Fs,addRow:()=>Bx,addRows:()=>Fx,addUsers:()=>kn,bustCache:()=>Po,decrement:()=>St,decrementMany:()=>Ca,getCurrentUsageValues:()=>uc,getLicensedQuota:()=>kf,getQuotaUsage:()=>Ft,increment:()=>Me,incrementBudibaseAICredits:()=>Nn,incrementMany:()=>zt,removeApp:()=>Nx,removeGroup:()=>Gs,removePlugin:()=>Ws,removeRow:()=>Gx,removeRows:()=>Wx,removeUsers:()=>vr,set:()=>Ns,setAllUsage:()=>qo,setAppUsageValue:()=>Uo,setUsage:()=>oc,setUsagePerApp:()=>sc,updatePluginCount:()=>$s,updateUsage:()=>Tr,usageLimitIsExceeded:()=>Dx,utils:()=>Fr});var qn=require("@budibase/types");var et=require("@budibase/backend-core"),de=require("@budibase/types"),Yt=require("dd-trace");var Me=a(async(e,t,r)=>await Yt.tracer.trace("quotas.increment",async n=>(n.addTags({name:e,type:t}),await Df({change:1,name:e,type:t,opts:r}))),"increment"),zt=a(e=>Yt.tracer.trace("quotas.incrementMany",async()=>Df(e)),"incrementMany"),Df=a(async e=>await Yt.tracer.trace("quotas.tryIncrement",async t=>{let r=Array.isArray(e)?e:[e];t.addTags({numActions:r.length}),await Tr(r.map(o=>({usageChange:o.change,name:o.name,type:o.type,opts:{dryRun:!0,suppressErrorLog:o.opts?.suppressErrorLog,id:o.opts?.id}})));let n=[];for(let o of r)await Yt.tracer.trace("quotas.incrementMany.fn",async s=>{s.addTags({actionName:o.name,actionType:o.type,actionChange:o.change});let i=o.opts?.fn;i&&n.push(await i())});return await Tr(r.map(o=>({usageChange:o.change,name:o.name,type:o.type,opts:{dryRun:!1,valueFn:o.opts?.valueFn,suppressErrorLog:o.opts?.suppressErrorLog,id:o.opts?.id}}))),n[0]}),"tryIncrement"),St=a((e,t,r={})=>Tr({usageChange:-1,name:e,type:t,opts:r}),"decrement"),Ca=a(e=>{let t=Array.isArray(e)?e:[e];return Tr(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},"decrementMany"),Ns=a(async(e,t,r)=>it.setUsage(r,e,t),"set"),Px=a((e,t,r)=>{if(e==de.QuotaUsageType.STATIC){let n=r.usageQuota.triggers;return n?n[t]||{}:{}}else{let n=it.utils.getCurrentMonthString(),o=r.monthly[n].triggers;return o?o[t]||{}:{}}},"getExistingTriggers"),Ux=a(async(e,t,r,n)=>{try{await et.locks.doWithLock({type:de.LockType.TRY_ONCE,name:de.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let o={percentage:r,name:t.name};n&&(o.resetDate=n),await Lt.triggerQuota(o)})}catch(o){et.logging.logAlert("Error triggering quota",o)}},"triggerQuota"),qx=a(async(e,t,r,n)=>{let o=await Ft(),s=e===de.QuotaUsageType.MONTHLY?o.quotaReset:void 0,i=await Px(e,t,o),u=n.triggers,c=r/n.value*100;c>100&&(c=100);for(let[f,g]of u.entries())if(c>=g&&n.value!==At.UNLIMITED){if(!i[g]){i[g]=new Date().toISOString();let y=u[f+1]||100;(!(c>=y)||c===g)&&await Ux(t,n,c,s)}}else i[g]=void 0;return i},"checkTriggers"),Tr=a(async e=>{await Yt.tracer.trace("quotas.updateUsage",async t=>{let r=et.tenancy.getTenantId(),n=Array.isArray(e)?e:[e];t.addTags({numActions:n.length,tenantId:r});let o,s,i=[],u={},c={},f={},g={};for(let y of n)await Yt.tracer.trace("quotas.updateUsage.action",async E=>{E.addTags({actionName:y.name,actionType:y.type,actionUsageChange:y.usageChange});try{o=et.context.getWorkspaceId()}catch{}if(de.APP_QUOTA_NAMES.includes(y.name)&&!o)throw new Error("App context required for quota update");try{s=await kf(de.QuotaType.USAGE,y.name,y.type),i.push(s);let{total:k,app:D,breakdown:C}=await it.getCurrentUsageValues(y.type,y.name,y.opts?.id);k+=y.usageChange,D!=null&&(D+=y.usageChange),C!=null&&(C+=y.usageChange);let W={};if(y.opts?.dryRun||(W=await qx(y.type,y.name,k,s),g={...g,[y.name]:W}),s.value!==At.UNLIMITED&&k>s.value&&y.usageChange>0)throw new et.UsageLimitError(`Licensed ${s.name} of ${s.value} has been exceeded`,s.name);if(k=Math.max(0,k),D&&(D=Math.max(0,D)),C&&(C=Math.max(0,C),f={...f,[y.name]:C}),!y.opts?.dryRun){let ye=y.opts?.valueFn;ye&&(k=await ye(),D=k),u={...u,[y.name]:k},c={...c,[y.name]:D}}}catch(k){throw y.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${y.name}`,k),k}});let h=n.filter(y=>!y.opts?.dryRun).map(y=>({name:y.name,type:y.type,values:{total:u[y.name],app:c[y.name],breakdown:f[y.name],triggers:g[y.name]},opts:{...y.opts,tenantId:r}}));h.length>0&&await it.setAllUsage(h)})},"updateUsage"),kf=a(async(e,t,r)=>{let n=await Je.getCachedLicense();if(!n){let o=et.tenancy.getTenantId();throw new Error("License not found for tenant id "+o)}if(r&&(0,de.isStaticQuota)(e,r,t))return n.quotas[e][r][t];if(r&&(0,de.isMonthlyQuota)(e,r,t))return n.quotas[e][r][t];if((0,de.isConstantQuota)(e,t))return n.quotas[e][t];throw new Error("Invalid quota type")},"getLicensedQuota"),Dx=a(async({name:e,type:t,usageChange:r})=>{try{return await Tr({usageChange:r,name:e,type:t,opts:{dryRun:!0}}),!1}catch(n){if(n.code===de.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw n}},"usageLimitIsExceeded");var kx=a(async e=>Me(qn.MonthlyQuotaName.ACTIONS,qn.QuotaUsageType.MONTHLY,{fn:e}),"addAction");var Mf=require("@budibase/backend-core"),Er=require("@budibase/types");var Nf=a(async()=>{let e=await Mf.db.getAllWorkspaces({dev:!0});return e?e.length:0},"getDevAppsCount"),Mx=a(async(e,{appId:t}={})=>Me(Er.StaticQuotaName.WORKSPACES,Er.QuotaUsageType.STATIC,{fn:e,valueFn:Nf,id:t}),"addApp"),Nx=a(async({appId:e}={})=>St(Er.StaticQuotaName.WORKSPACES,Er.QuotaUsageType.STATIC,{valueFn:Nf,id:e}),"removeApp");var lt=require("@budibase/types");var Bx=a(async(e,{tableId:t}={})=>Me(lt.StaticQuotaName.ROWS,lt.QuotaUsageType.STATIC,{fn:e,id:t}),"addRow"),Gx=a(async({tableId:e}={})=>St(lt.StaticQuotaName.ROWS,lt.QuotaUsageType.STATIC,{id:e}),"removeRow"),Fx=a(async(e,t,{tableId:r}={})=>zt({change:e,name:lt.StaticQuotaName.ROWS,type:lt.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),"addRows"),Wx=a(async(e,{tableId:t}={})=>Ca({change:e,name:lt.StaticQuotaName.ROWS,type:lt.QuotaUsageType.STATIC,opts:{id:t}}),"removeRows");var Dn=require("@budibase/types");var $x=a(async(e,{automationId:t}={})=>Me(Dn.MonthlyQuotaName.AUTOMATIONS,Dn.QuotaUsageType.MONTHLY,{fn:e,id:t}),"addAutomation");var Rr=require("@budibase/types");var Bs=a(async e=>Me(Rr.StaticQuotaName.USER_GROUPS,Rr.QuotaUsageType.STATIC,{fn:e}),"addGroup"),Gs=a(async()=>St(Rr.StaticQuotaName.USER_GROUPS,Rr.QuotaUsageType.STATIC),"removeGroup");var Dt=require("@budibase/types");var Fs=a(async e=>Me(Dt.StaticQuotaName.PLUGINS,Dt.QuotaUsageType.STATIC,{fn:e}),"addPlugin"),Ws=a(async()=>St(Dt.StaticQuotaName.PLUGINS,Dt.QuotaUsageType.STATIC),"removePlugin"),$s=a(async e=>Ns(Dt.StaticQuotaName.PLUGINS,Dt.QuotaUsageType.STATIC,e),"updatePluginCount");var dt=require("@budibase/types"),Oa=require("@budibase/backend-core");var kn=a(async(e,t,r)=>{let n=[{change:e,name:dt.StaticQuotaName.USERS,type:dt.QuotaUsageType.STATIC,opts:{fn:r,valueFn:Oa.users.getUserCount}}];t>0&&n.push({change:t,name:dt.StaticQuotaName.CREATORS,type:dt.QuotaUsageType.STATIC,opts:{valueFn:Oa.users.getCreatorCount}});let o=await zt(n);return await ir(),o},"addUsers"),vr=a(async(e,t)=>{let r=[{change:e,name:dt.StaticQuotaName.USERS,type:dt.QuotaUsageType.STATIC,opts:{valueFn:Oa.users.getUserCount}}];t>0&&r.push({change:t,name:dt.StaticQuotaName.CREATORS,type:dt.QuotaUsageType.STATIC,opts:{valueFn:Oa.users.getCreatorCount}}),await Ca(r),await ir()},"removeUsers");var Mn=require("@budibase/types");var Nn=a(async e=>zt({change:e,name:Mn.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:Mn.QuotaUsageType.MONTHLY}),"incrementBudibaseAICredits");var Wn={};x(Wn,{db:()=>Ke});var Hs=require("@budibase/backend-core");var re={};x(re,{addUsers:()=>Fn,adjustGroupCreatorsQuotas:()=>Vx,cleanupApp:()=>Kx,enrichUserRolesFromGroups:()=>Qx,fetch:()=>La,get:()=>_r,getBulk:()=>Qf,getGroupBuilderAppIds:()=>jf,getGroupRoleId:()=>jx,remove:()=>Qs,removeUsers:()=>Ks,save:()=>Gn,updateGroupApps:()=>Vs});var N=require("@budibase/backend-core");var Bf=require("@budibase/backend-core");var Bn=class extends Bf.HTTPError{static{a(this,"GroupNameUnavailableError")}constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function Wf(e,t){try{let r=[];for(let u of e)if(u.roles){let c=u.roles[N.db.getProdWorkspaceID(t)];c&&r.push(c)}let n=await Promise.all(r.map(async u=>({[u]:await N.roles.roleToNumber(u)}))),o,s,i={};n.forEach(u=>{let[c,f]=Object.entries(u)[0];i[c]={roleId:c,roleNum:f}});for(let{roleId:u,roleNum:c}of Object.values(i))(s===void 0||c>s)&&(s=c,o=u);return o}catch(r){throw N.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}a(Wf,"findHighestRole");async function $f(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await z.getBulk(e,{enriched:!1}),t}a($f,"groupList");async function jf(e,t){if(!e.userGroups)return[];let r=await $f(e.userGroups,t?.groups),n=t?.appId?N.db.getProdWorkspaceID(t?.appId):null,o=[];for(let s of r){let i=s.builder?.apps;n&&i?.includes(n)?o.push(n):n||(o=o.concat(i||[]))}return[...new Set(o)]}a(jf,"getGroupBuilderAppIds");async function jx(e,t,r){if(!e.userGroups)return null;let n=await $f(e.userGroups,r?.groups),o=N.db.getProdWorkspaceID(t);return e.roles?.[o]?e.roles[o]:(n=n.filter(s=>s?.roles?Object.keys(s.roles).includes(o):!1),await Wf(n,t))}a(jx,"getGroupRoleId");async function Qx(e){if(!e||!e.userGroups)return e;let t=await Qf(e.userGroups,{enriched:!1}),r=[];for(let o of t)o?.roles&&(r=r.concat(Object.keys(o.roles)));r=[...new Set(r)];for(let o of r)await N.context.doInWorkspaceContext(o,async()=>{if(e.roles[o])return;let s=await Wf(t,o);s&&(e.roles[o]=s)});let n=await jf(e,{groups:t});if(n.length&&!e.builder?.global){let o=e.builder?.apps||[];e.builder={apps:o.concat(n)}}return e}a(Qx,"enrichUserRolesFromGroups");async function La(){return await z.fetch()}a(La,"fetch");async function _r(e){return await z.get(e)}a(_r,"get");async function Qf(e,t={enriched:!0}){return await z.getBulk(e,t)}a(Qf,"getBulk");async function Gf(e){if(await z.getByName(e))throw new Bn(e)}a(Gf,"guardNameAvailability");async function Ff(e){let t=await z.getGroupUsers(e._id);if(!t.length)return 0;let n=await N.tenancy.getGlobalDB().getMultiple(t.map(s=>s._id));return(await N.userUtils.creatorsInList(n)).filter(s=>s).length}a(Ff,"getCreatorsCountInGroup");async function Gn(e){let t=[],r=!e._id,n=0;if(delete e.users,!e._id)e._id=z.generateUserGroupID(),await Gf(e.name),t.push(N.events.group.created(e));else{let s=await z.get(e._id);if(s.name!==e.name&&await Gf(e.name),t.push(N.events.group.updated(e)),JSON.stringify(s.roles)!==JSON.stringify(e.roles)){let i=s.users?.length||0,u=0;i>0&&(u=await Ff(s)),Object.values(e.roles).includes("CREATOR")?n=i-u:n=-i,t.push(N.events.group.permissionsEdited(e))}}await Promise.all(t);let o=a(()=>z.save(e),"saveGroup");if(r)return await Bs(o);{let s=await o();if(n>0)await kn(0,n);else if(n<0){let i=await Ff(e),u=Math.abs(n)-i;u>0&&await vr(0,u)}return s}}a(Gn,"save");async function Qs(e,t){let r;try{r=await z.get(e)}catch{throw new Error("Group not found")}let n=Object.values(r.roles||{}).includes("CREATOR"),o=a(()=>{},"recalculateCreatorsQuotasFn");if(n){let i=N.tenancy.getGlobalDB(),u=await z.getGroupUsers(e),f=(await Promise.all(u.map(E=>i.get(E._id)))).map(E=>({...E,userGroups:E.userGroups.filter(M=>M!==e)})),h=(await N.userUtils.creatorsInList(f)).filter(E=>E).length,y=u.length-h;y&&(o=a(()=>vr(0,y),"recalculateCreatorsQuotasFn"))}let s=await z.destroy(e,t);return await N.events.group.deleted(r),await Gs(),await o(),s}a(Qs,"remove");async function Fn(e,t){let r=await z.get(e),n=await N.users.bulkGetGlobalUsersById(t),o=[];for(let c of n)c.userGroups||(c.userGroups=[]),c.userGroups.includes(e)||o.push(c);if(!o.length)return o;let s=o.map(c=>({...c,userGroups:[...c?.userGroups||[],e]}));if(await N.users.bulkUpdateGlobalUsers(s),Object.values(r.roles||{}).includes("CREATOR")){let f=(await N.userUtils.creatorsInList(o)).filter(h=>h).length,g=o.length-f;g&&await kn(0,g)}let u=[];for(let c of t)u.push(N.cache.user.invalidateUser(c));return await Promise.all(u),await N.events.group.usersAdded(s.length,r,t),s}a(Fn,"addUsers");async function Ks(e,t){let r=await z.get(e),n=await N.users.bulkGetGlobalUsersById(t),o=[];for(let u of n){if(!u.userGroups||!u.userGroups.includes(e))continue;let c=u.userGroups.indexOf(e);u.userGroups.splice(c,1),o.push(u)}if(await N.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes("CREATOR")){let c=(await N.userUtils.creatorsInList(o)).filter(g=>g).length,f=o.length-c;f&&await vr(0,f)}let i=[];for(let u of t)i.push(N.cache.user.invalidateUser(u));return await Promise.all(i),o.length&&await N.events.group.usersDeleted(o.length,r,t),o}a(Ks,"removeUsers");async function Vs(e,t){let r=await _r(e);if(r.roles||(r.roles={}),t.appsToAdd)for(let n of t.appsToAdd)r.roles[n.appId]=n.roleId;if(t.appsToRemove)for(let n of t.appsToRemove)delete r.roles[n.appId];if(r.builder={apps:Object.entries(r.roles).filter(([n,o])=>o==="CREATOR").map(([n])=>n)},r.builder.apps.length&&!Us())throw new N.HTTPError("Feature not enabled, please check license",400);return await Gn(r)}a(Vs,"updateGroupApps");async function Kx(e){let t=await La(),r=[];for(let n of t)!n.roles||!n.roles[e]||(delete n.roles[e],r.push(n));return await z.bulkSave(r)}a(Kx,"cleanupApp");async function Vx(){if(!await qs()){let e=N.tenancy.getGlobalDB(),r=(await La()||[]).filter(n=>Object.values(n?.roles||{}).includes("CREATOR"));for(let n of r){let o=await z.getGroupUsers(n._id),i=(await Promise.all(o.map(g=>e.get(g._id)))).map(g=>({...g,userGroups:g.userGroups.filter(h=>h!==n._id)})),c=(await N.userUtils.creatorsInList(i)).filter(g=>g).length,f=o.length-c;await z.save({...n,roles:{}}),f&&await vr(0,f)}}}a(Vx,"adjustGroupCreatorsQuotas");Hs.users.UserDB.init(ft,re,Ze);var Ke=Hs.users.UserDB;var Qn={};x(Qn,{logs:()=>ti});var ti={};x(ti,{logSearch:()=>rC,oldestLogDate:()=>Xf,storeLog:()=>aC});var jn=require("@budibase/backend-core"),Jf=require("@budibase/types");var ge=require("@budibase/backend-core"),$n=require("@budibase/types");var Kf=require("@budibase/backend-core");async function Vf(e,t){let r,n=5,o=!1,s,i=!0;for(;n>0;n--)try{i?s=await e():s=await exports.randomDelay(e),o=!0;break}catch(u){r=u}return o||Kf.logging.logWarn(`Failed to backoff: ${t}`,r),s}a(Vf,"backOff");var{SEPARATOR:wt,UNICODE_MAX:Hx,DocumentType:Hf,AutomationViewMode:Ys,ViewName:Yx,getQueryIndex:zx}=ge.db,Jx=new Date(0).toISOString(),Xx=100,zs=a(async()=>sn($n.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS),"oldestLogDate");function Yf(e,t,{status:r,automationId:n}={},o={}){let s=n?`${n}${wt}`:"",i=r?`${r}${wt}`:"",u;return r&&n?u=`${Ys.ALL}${wt}${i}${s}`:r?u=`${Ys.STATUS}${wt}${i}`:n?u=`${Ys.AUTOMATION}${wt}${s}`:u=`${Hf.AUTOMATION_LOG}${wt}`,{...o,descending:!0,startkey:`${u}${t}${Hx}`,endkey:`${u}${e}`}}a(Yf,"getAutomationLogParams");function Zx(e,t,r){return`${Hf.AUTOMATION_LOG}${wt}${e}${wt}${r}${wt}${t}`}a(Zx,"generateAutomationLogID");async function Js(e,t,r={docs:!0}){let n=ge.context.getProdWorkspaceDB();await n.exists()||(n=ge.context.getDevWorkspaceDB());let o={status:r.status},s=r?.limit?r.limit:r?.paginate?9+1:void 0,i=Yf(e,t,o,{include_docs:r.docs,limit:s});r?.page&&(i.startkey=r.page);let u=await n.allDocs(i);return oa(u,{paginate:r?.paginate,pageSize:9})}a(Js,"getAllLogs");async function Xs(e,t,r={}){let n=ge.context.getProdWorkspaceDB();await n.exists()||(n=ge.context.getDevWorkspaceDB());let o;try{let s={automationId:r?.automationId,status:r?.status},i=Yf(e,t,s,{include_docs:!0,limit:9+1});r?.page&&(i.startkey=r.page),o=await n.query(zx(Yx.AUTOMATION_LOGS),i)}catch(s){if(s!=null&&(s.name==="not_found"||s.error==="not_found"))return await Tc(),Xs(e,t,r);throw s}return oa(o,{paginate:!0,pageSize:9})}a(Xs,"getLogsByView");async function zf(e,t){let r=ge.context.getProdWorkspaceDB(),n=e._id,o=e.name,s=new Date().toISOString(),i=Zx(s,t.status,n),u={...t,automationId:n,status:t.status,automationName:o,createdAt:s,_id:i};return await r.put(u),i}a(zf,"writeLog");async function Zs(e,{clearing:t}={clearing:!1}){let r=ge.context.getProdWorkspaceDB();await Vf(async()=>{let n=await r.get(ge.db.DocumentType.WORKSPACE_METADATA);for(let o of e){let s=o.split(ge.db.SEPARATOR),i=`${s[s.length-3]}${ge.db.SEPARATOR}${s[s.length-2]}`,u={};n.automationErrors&&(u=n.automationErrors),Array.isArray(u[i])||(u[i]=[]);let c=u[i].indexOf(o);t&&c!==-1?u[i].splice(c,1):u[i].push(o),u[i].length===0&&delete u[i],n.automationErrors=u}await r.put(n),await ge.cache.workspace.invalidateWorkspaceMetadata(n.appId,n)},"Failed to update app metadata with automation log error")}a(Zs,"updateAppMetadataWithErrors");async function eC(){let e=await zs();try{return await Js(Jx,e,{docs:!1,paginate:!1,limit:Xx})}catch{return{data:[],hasNextPage:!1}}}a(eC,"getExpiredLogs");async function ei(){let e=ge.context.getProdWorkspaceDB();try{let t=await eC();if(!t.data||t.data.length===0)return;let r=t.data.map(o=>({_id:o.id,_rev:o.value.rev,_deleted:!0})),n=t.data.filter(o=>{let s=o.id.split(ge.db.SEPARATOR);return s[s.length-1]===$n.AutomationStatus.ERROR}).map(o=>o.id);await e.bulkDocs(r),n.length&&await Zs(n,{clearing:!0})}catch(t){ge.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}a(ei,"clearOldHistory");var Xf=zs;async function tC(e,t,r,n){let o,s=new Date().toISOString(),i=await Xf();return(!e||e<i)&&(e=i),r||t?o=await Xs(e,s,{automationId:r,status:t,page:n}):o=await Js(e,s,{status:t,page:n,docs:!0,paginate:!0}),o}a(tC,"getLogs");async function rC(e){return await ei(),await tC(e.startDate,e.status,e.automationId,e.page)}a(rC,"logSearch");async function aC(e,t){if(!jn.db.isProdWorkspaceID(jn.context.getWorkspaceId()))return;let r=await zf(e,t);t.status===Jf.AutomationStatus.ERROR&&await Zs([r]),await ei()}a(aC,"storeLog");var Kn={};x(Kn,{checkPluginQuotas:()=>sC,deletePlugin:()=>oC,storePlugin:()=>nC});var rm=require("@budibase/types"),fe=require("@budibase/backend-core");var Zf=F(require("fs")),em=require("path");function tm(e,t){return Zf.default.readFileSync((0,em.join)(e,t),"utf8")}a(tm,"loadJSFile");async function nC(metadata,directory,source,origin){let db=fe.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=fe.objectStore.getPluginS3Dir(name),files=await fe.objectStore.uploadDirectory(fe.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===rm.PluginType.DATASOURCE){let js=tm(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=fe.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}),origin&&origin.source==="github"&&(doc.origin=origin);let write=a(async()=>{let e=await db.put(doc);return await fe.events.plugin.imported(doc),{...doc,_rev:e.rev}},"write");return rev?await write():await Fs(write)}a(nC,"storePlugin");async function oC(e){let t=fe.tenancy.getGlobalDB();try{let r=await t.get(e),n=fe.objectStore.getPluginS3Dir(r.name);await fe.objectStore.deleteFolder(fe.objectStore.ObjectStoreBuckets.PLUGINS,n),await t.remove(e,r._rev),await fe.events.plugin.deleted(r),await Ws()}catch(r){let n=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${n}`)}}a(oC,"deletePlugin");async function sC(){let e=fe.tenancy.getGlobalDB();try{let r=(await e.allDocs(fe.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await $s(r)}catch(t){fe.logging.logAlert("Unable to retrieve plugins for quota check",t)}}a(sC,"checkPluginQuotas");var mt={};x(mt,{fetch:()=>uC,fetchValues:()=>cC,isEncryptionKeyAvailable:()=>iC,isValid:()=>om,remove:()=>lC,update:()=>pC});var am=require("@budibase/backend-core"),Pa=require("@budibase/types");function iC(){return!!am.env.ENCRYPTION_KEY}a(iC,"isEncryptionKeyAvailable");async function uC(){let e=await jt.get();return Object.keys(e.variables)}a(uC,"fetch");async function cC(e){let r=(await jt.get()).variables,n={};for(let[o,s]of Object.entries(r))switch(e){case Pa.Environment.DEVELOPMENT:n[o]=s.development;break;case Pa.Environment.PRODUCTION:default:n[o]=s.production;break}return n}a(cC,"fetchValues");async function nm(e){if(!(await ct.cache.getCachedLicense()).features.includes(Pa.Feature.ENVIRONMENT_VARIABLES))throw new Error("User does not have access to environment variables feature.");let r=await jt.get();r.variables=e(r.variables),await jt.update(r)}a(nm,"changeValues");async function pC(e,t){if(om(e))await nm(n=>(n[e]=t,n));else throw new Error("Variable name has characters that are not allowed")}a(pC,"update");async function lC(e){await nm(t=>(delete t[e],t))}a(lC,"remove");function om(e){return/^[a-zA-Z0-9-_]+$/.test(e)}a(om,"isValid");var kt={};x(kt,{definitions:()=>wC,download:()=>SC,fetch:()=>IC,write:()=>AC});var Pe=require("@budibase/backend-core"),Hn=require("@budibase/types");var ue=require("@budibase/backend-core"),tt=require("@budibase/types");var sm=require("memorystream"),im=new ue.sql.Sql(tt.SqlClient.SQL_LITE);async function dC(e,t,r){let n={operation:tt.Operation.READ,table:or.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:tt.SortOrder.DESCENDING,type:tt.SortType.STRING}}},o=im._query(n);if(Array.isArray(o))throw new Error("Cannot execute multiple queries for audit log search");return{sql:o.sql,bindings:o.bindings}}a(dC,"getAuditLogSqlQuery");function fC(e){return`${ue.DocumentType.AUDIT_LOG}${ue.SEPARATOR}${e}${ue.SEPARATOR}${ue.utils.newid()}`}a(fC,"generateAuditLogID");async function um(e){e._id||(e._id=fC(e.timestamp)),e.type||(e.type=tt.AUDIT_LOG_TYPE);try{let r=await ue.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){ue.logging.logAlert("Failed to write audit log",t)}}a(um,"save");async function ri(e,t,r){t||(t=1);let n=ue.context.getAuditLogsDB();try{let o=9+1,s=await dC(e,t,o),i=or.searchTable(),u=im.convertJsonStringColumns(i,await n.sql(s.sql,s.bindings)),c;u.length>o&&(c=u.pop());let f={rows:u,hasNextPage:!!c};return f.hasNextPage&&(f.bookmark=t+1),f}catch(o){if(o.status===404&&!r?.isRetry)return await mC(),await cc(),await ri(e,t,{isRetry:!0});throw o}}a(ri,"searchSQL");async function mC(){let e=ue.context.getAuditLogsDB(),r=(await e.allDocs(ue.db.getDocParams(ue.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(n=>n.doc).filter(n=>n&&!n.type).map(n=>({...n,type:tt.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}a(mC,"migrate");function cm(e){let t=ue.context.getAuditLogsDB(),r=new sm,n=t.dump(r,{filter:s=>{let i=s;if(!i._id?.startsWith(ue.DocumentType.AUDIT_LOG))return!1;let u=!0,c=a((f,g)=>{!f||f.length===0||(u=!!(u&&g&&f.includes(g)))},"matcher");if(c(e.userIds,i.userId),c(e.appIds,i.appId),c(e.events,i.event),(e.startDate||e.endDate)&&(u=u&&i.timestamp>=e.startDate&&i.timestamp<=e.endDate),e.fullSearch){let f=JSON.stringify(s);u=u&&f.includes(e.fullSearch)}return u}}),o=new sm;return r.on("data",s=>{let i=JSON.parse(Buffer.from(s).toString());if(Array.isArray(i.docs)){let u="";for(let c of i.docs)u+=JSON.stringify(c)+`
|
|
38
|
-
`;o.write(u)}}),r.on("end",()=>{o.end()}),{promise:n,stream:o}}a(cm,"dump");var Ua=require("@budibase/backend-core"),qa=require("@budibase/string-templates"),Vn=require("@budibase/types");var hC=Ua.constants.MIN_VALID_DATE.toISOString(),yC=Ua.constants.MAX_VALID_DATE.toISOString();function ai(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||hC,e.endDate=e.endDate||yC),e}a(ai,"fillDates");async function pm(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(n=>Ua.db.getProdWorkspaceID(n)));let t={};function r(n,o){o?.length&&(t.oneOf={...t.oneOf,[n]:o})}return a(r,"addStringParams"),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=ai(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}a(pm,"getSearchFilters");function ni(e,t,r){let n={_id:e,status:Vn.AuditLogResourceStatus.DELETED};switch(t){case"app":n.name=r?.appName;break;case"user":n.email=r?.email;break}return n}a(ni,"deleted");function oi(e){let t=(0,qa.findHBSBlocks)(e);for(let r of t){let n=` "${r}"`;e=e.replace(e.includes(n)?n:` ${r}`,""),e=(0,qa.processStringSync)(e,{})}return e}a(oi,"removeTemplateStrings");function lm(e,t){let r=Vn.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let n=(0,qa.processStringSync)(r,t);return n.includes('""')&&(n=oi(r)),n}a(lm,"getEventFriendlyName");async function AC(e,t,r){if(!await Pn()||!Pe.utils.isAudited(e))return;let n=lm(e,t),o=new Date;r?.timestamp&&(o=new Date(r.timestamp));let s={timestamp:o.toISOString(),event:e,name:n,userId:r?.userId||Hn.AuditLogSystemUser,metadata:{...t,...r?.hostInfo}},i={};try{if(r?.appId){s.appId=Pe.db.getProdWorkspaceID(r.appId);let u=await Pe.cache.workspace.getWorkspaceMetadata(r.appId);"name"in u&&(i.appName=u.name)}if(r?.userId){let u=await Pe.users.getById(r?.userId);i.email=u.email}}catch(u){Pe.logging.logAlert("Failed to retrieve fallback information for audit log",u)}return s.fallback=i,await um(s)}a(AC,"write");async function bC(e){let t=e.map(u=>u.userId),n=e.filter(u=>u.appId).map(u=>Pe.db.getDevWorkspaceID(u.appId)),o=await Pe.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),s=await Pe.db.getWorkspacesByIDs([...new Set(n)]),i=[];for(let u of e){let c=o.find(h=>h?._id===u.userId),f=s.find(h=>Pe.db.isSameWorkspaceID(h?.appId,u.appId)),g={event:u.event,timestamp:u.timestamp,name:u.name,metadata:u.metadata,user:c||ni(u.userId,"user",u.fallback)};u.appId&&(g.app=f||ni(u.appId,"app",u.fallback)),i.push(g)}return i}a(bC,"enrich");async function IC(e){if(!await Pn())throw new Error("Audit logs not available - license required.");let t=await pm(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await ri(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await bC(r.rows)}}a(IC,"fetch");function SC(e){return e=ai(e),cm(e)}a(SC,"download");function wC(){let e=Object.entries(Hn.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=oi(r[1]);return t}a(wC,"definitions");var Yn={};x(Yn,{applications:()=>ci,roles:()=>ii,users:()=>si});var si={};x(si,{roleCheck:()=>EC});function TC(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}a(TC,"removeRoles");async function EC(e,t){return await It()||TC(e,t),e}a(EC,"roleCheck");var ii={};x(ii,{assign:()=>RC,unAssign:()=>vC});var Da=require("@budibase/backend-core");async function RC(e,t){if(!await It())throw new Error("Unable to assign roles - license required.");let r=await Ke.bulkGet(e);for(let n of r){if(t.role&&t.role.roleId){let o=Da.db.getProdWorkspaceID(t.role.appId);n.roles[o]=t.role.roleId}if(t.appBuilder){let o=Da.db.getProdWorkspaceID(t.appBuilder.appId),s=n.builder?.apps||[];n.builder={apps:s.concat([o])}}t.builder&&(n.builder={global:!0}),t.admin&&(n.admin={global:!0}),n.roles}await Ke.bulkUpdate(r)}a(RC,"assign");async function vC(e,t){if(!await It())throw new Error("Unable to un-assign roles - license required.");let r=await Ke.bulkGet(e);for(let n of r){if(t.role){let o=Da.db.getProdWorkspaceID(t.role?.appId);n.roles[o]===t.role.roleId&&delete n.roles[o]}if(t.appBuilder&&n.builder?.apps){let o=Da.db.getProdWorkspaceID(t.appBuilder.appId);n.builder.apps=n.builder.apps.filter(s=>s!==o)}t.builder&&n.builder&&delete n.builder,t.admin&&n.admin&&delete n.admin}}a(vC,"unAssign");var ci={};x(ci,{buildExportFn:()=>xC,buildImportFn:()=>_C});var ui=require("@budibase/backend-core");function _C(e){return async(t,r)=>{await It()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await ui.context.doInWorkspaceContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}a(_C,"buildImportFn");function xC(e){return async(t,r)=>{await It()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:n,excludeRows:o}=t.request.body;await ui.context.doInWorkspaceContext(t.params.appId,async()=>{t.request.body={encryptPassword:n,excludeRows:o},t.query.appId=t.params.appId,await e(t),await r()})}}a(xC,"buildExportFn");var Se=require("@budibase/backend-core"),Ie=require("@budibase/types"),mm=F(require("fs")),gm=require("path");var pi=require("@budibase/backend-core");var dm;function fm(){dm=new pi.queue.BudibaseQueue(pi.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}a(fm,"init");function Jt(){return dm}a(Jt,"getBackupQueue");async function li(e,t={}){return je.storeAppBackupMetadata(e,t)}a(li,"storeAppBackupMetadata");function hm(e){let t=new Date().toISOString();switch(e){case Ie.BackupStatus.COMPLETE:case Ie.BackupStatus.FAILED:return{timestamp:t,finishedAt:t};case Ie.BackupStatus.STARTED:return{timestamp:t,startedAt:t};case Ie.BackupStatus.PENDING:return{timestamp:t,createdAt:t}}}a(hm,"getTimestamps");async function CC(e,t,r,n){let o=await zn(e);return await je.storeAppBackupMetadata({...o,...hm(t),contents:r,status:t,type:Ie.BackupType.BACKUP},{filename:n,docId:e})}a(CC,"updateBackupStatus");async function OC(e,t,r){let n=await zn(e);return await je.storeAppBackupMetadata({...n,...hm(r),status:r,type:Ie.BackupType.RESTORE,trigger:Ie.BackupTrigger.MANUAL},{docId:e,docRev:t})}a(OC,"updateRestoreStatus");async function zn(e){return je.getAppBackupMetadata(e)}a(zn,"getAppBackup");async function LC(e,t){return je.updateAppBackupMetadata(e,t)}a(LC,"updateAppBackup");async function ym(e){let t=await je.getAppBackupMetadata(e);return t.filename&&await Se.objectStore.deleteFile(Se.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),je.deleteAppBackupMetadata(e)}a(ym,"deleteAppBackup");async function PC(e){let t=[];for(let r of e)try{await ym(r),t.push({backupId:r,success:!0})}catch(n){t.push({backupId:r,success:!1,error:n instanceof Error?n.message:"Unknown error"})}return t}a(PC,"deleteAppBackups");async function UC(e,t){return je.fetchAppBackups(e,t)}a(UC,"fetchAppBackups");async function Am(e){let t=await je.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let{stream:r}=await Se.objectStore.getReadStream(Se.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}a(Am,"getBackupDownloadStream");async function qC(e){let{stream:t}=await Am(e),r=(0,gm.join)(Se.objectStore.budibaseTempDir(),Se.utils.newid()),n=mm.default.createWriteStream(r);return new Promise((o,s)=>{t.on("error",s),n.on("error",s),t.pipe(n).on("close",()=>o(r))})}a(qC,"downloadAppBackup");async function DC(e,t,r={}){let n;try{n=await li({appId:e,trigger:t,timestamp:new Date().toISOString(),status:Ie.BackupStatus.PENDING,type:Ie.BackupType.BACKUP,...r})}catch(o){if(o.status===409)return;throw o}return await Jt().add({docId:n.id,docRev:n.rev,appId:e,export:{trigger:t,...r}}),await Se.events.backup.appBackupTriggered(e,n.id,Ie.BackupType.BACKUP,t,r?.name),n.id}a(DC,"triggerAppBackup");async function kC(e,t,r,n){let o=await zn(t),s;try{s=await li({appId:e,timestamp:new Date().toISOString(),status:Ie.BackupStatus.PENDING,type:Ie.BackupType.RESTORE,createdBy:n})}catch(i){if(i?.status===409)return;throw i}return await Jt().add({appId:e,docId:s.id,docRev:s.rev,import:{nameForBackup:r,backupId:t,createdBy:n}}),{restoreId:s.id,metadata:o}}a(kC,"triggerAppRestore");async function MC(e,t,r){let n=Se.db.getProdWorkspaceID(e);await Se.context.doInWorkspaceContext(n,async()=>{let o=Se.context.getProdWorkspaceDB();if(!await o.exists())return;let i=await o.tryGet(Ie.DocumentType.WORKSPACE_METADATA);i&&(i.backupErrors||(i.backupErrors={}),i.backupErrors[t]||(i.backupErrors[t]=[]),i.backupErrors[t].push(r),await o.put(i),await Se.cache.workspace.invalidateWorkspaceMetadata(i.appId,i))})}a(MC,"trackBackupError");var NC={isEnabled:Ls,triggerAppRestore:xe(kC),triggerAppBackup:xe(DC),getBackupDownloadStream:xe(Am),downloadAppBackup:xe(qC),fetchAppBackups:xe(UC),storeAppBackupMetadata:xe(li),updateBackupStatus:xe(CC),updateRestoreStatus:xe(OC),getAppBackup:xe(zn),updateAppBackup:xe(LC),deleteAppBackup:xe(ym),deleteAppBackups:xe(PC),trackBackupError:xe(MC)},Ve=NC;var fi={};x(fi,{init:()=>di});var ae=require("@budibase/backend-core"),rt=require("@budibase/types"),xr=F(require("fs"));async function di(e){Jt().process(async t=>{let r=t.data;try{if(r.export)return console.log("Exporting app backup:",r.appId,r.export.trigger),FC(t,e);if(r.import)return console.log("Importing app backup:",r.appId,r.import.backupId),GC(t,e)}catch(n){ae.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,n)}})}a(di,"init");async function BC(e){await ae.db.getDB(e,{skip_setup:!0}).destroy()}a(BC,"removeExistingApp");async function bm(e,t,r,n){let o=ae.db.getDevWorkspaceID(r),s=ae.db.getProdWorkspaceID(r),i=new Date().toISOString(),u=a(async(c,f)=>{n?.doc?await Ve.updateBackupStatus(n.doc.id,c,f?.contents,f?.filename):await Ve.storeAppBackupMetadata({appId:s,timestamp:i,trigger:e,status:c,name:n?.name,type:rt.BackupType.BACKUP,contents:f?.contents,createdBy:n?.createdBy},{filename:f?.filename})},"updateMetadata");try{let c=await n.processing.exportAppFn(o,{tar:!0}),f=await n.processing.statsFn(o),g=`${s}/backup-${i}.tar.gz`,h=ae.objectStore.ObjectStoreBuckets.BACKUPS,y=xr.default.createReadStream(c);await ae.objectStore.streamUpload({bucket:h,filename:g,stream:y,extra:{type:"application/gzip",metadata:{name:n?.name,trigger:e,timestamp:i,appId:s}}}),await u(rt.BackupStatus.COMPLETE,{filename:g,contents:f}),xr.default.existsSync(c)&&xr.default.rmSync(c)}catch(c){ae.logging.logAlert("App backup error",c),await u(rt.BackupStatus.FAILED);let f=n?.doc?.id||`backup-${i}`,g=c instanceof Error?c.message:String(c);await Ve.trackBackupError(s,f,`Backup export failed: ${g}`)}}a(bm,"runBackup");async function GC(e,t){let r=e.data,n=r.appId,o=r.import.backupId,s=r.import.nameForBackup,i=r.import.createdBy,u=ae.tenancy.getTenantIDFromWorkspaceID(n);return ae.tenancy.doInTenant(u,async()=>{let c=ae.db.getDevWorkspaceID(n),f=`${c}_temp_${Date.now()}`,{rev:g}=await Ve.updateRestoreStatus(r.docId,r.docRev,rt.BackupStatus.STARTED);await bm(rt.BackupTrigger.RESTORING,u,n,{processing:t,createdBy:i,name:s});let h=await Ve.downloadAppBackup(o),y=rt.BackupStatus.COMPLETE;try{await t.importAppFn(f,ae.db.getDB(f),{file:{type:"application/gzip",path:h},key:h}),await BC(c),await new ae.db.Replication({source:f,target:c}).replicate()}catch(E){ae.logging.logAlert("App restore error",E),y=rt.BackupStatus.FAILED;let M=E instanceof Error?E.message:String(E);await Ve.trackBackupError(n,o,`Backup restore failed: ${M}`)}finally{try{await ae.db.getDB(f,{skip_setup:!0}).destroy()}catch{}}await Ve.updateRestoreStatus(r.docId,g,y),xr.default.existsSync(h)&&xr.default.rmSync(h,{force:!0})})}a(GC,"importProcessor");async function FC(e,t){let r=e.data,n=r.appId,o=r.export.trigger,s=r.export.name,i=ae.tenancy.getTenantIDFromWorkspaceID(n);await ae.tenancy.doInTenant(i,async()=>{try{let{rev:u}=await Ve.updateBackupStatus(r.docId,rt.BackupStatus.STARTED);return bm(o,i,n,{processing:t,doc:{id:r.docId,rev:u},name:s})}catch(u){ae.logging.logAlert("App backup error",u);let c=u instanceof Error?u.message:String(u);await Ve.trackBackupError(n,r.docId,`Backup export failed: ${c}`)}})}a(FC,"exportProcessor");var WC=a(async e=>{fm(),await di(e.processing)},"init"),Ne={...Ve,processing:fi,init:WC,getBackupQueue:Jt};var Im=a(async e=>{e.backups&&await Ne.init(e.backups)},"init");var qe={};x(qe,{create:()=>DN,find:()=>qN,get:()=>UN,remove:()=>MN,update:()=>kN});var WA=F(iu()),Tt=require("@budibase/backend-core");var $A=require("@budibase/types");async function UN(e){let t=Tt.tenancy.getGlobalDB(),r=new Tt.db.QueryBuilder(t.name,$A.SearchIndex.USER);r.setIndexBuilder(Tt.db.searchIndexes.createUserIndex),r.setLimit(e.pageSize),r.addEqual("scimInfo.isSync",!0);for(let[o,s]of Object.entries(e.filters?.equal??{}))r.addEqual(o,s);r.setSort("_id"),r.setSkip(e.skip);let n=await r.run();return{users:n.rows,total:n.totalRows}}a(UN,"get");async function qN(e){return await Tt.users.getById(e)}a(qN,"find");async function DN(e){let t=await Ke.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new Tt.HTTPError("User is already synched",409);e={...t,scimInfo:(0,WA.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await Ke.save(e,{requirePassword:!1})}a(DN,"create");async function kN(e,t){return await Ke.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}a(kN,"update");async function MN(e){return await Ke.destroy(e)}a(MN,"remove");var qr={};x(qr,{create:()=>NN});var jA=F(iu());var QA=require("@budibase/backend-core");async function NN(e){let t=await ko(e.name),r;if(!t)r=(await re.save(e)).id;else{if(t.scimInfo?.isSync)throw new QA.HTTPError("Group is already synched",409);r=t._id,t.users&&(await re.removeUsers(r,t.users.map(o=>o._id)),delete t.users),t.scimInfo=(0,jA.default)(t.scimInfo,e.scimInfo),await re.save(t)}return await re.get(r)}a(NN,"create");var Zt={};x(Zt,{logRequest:()=>FN,logResponse:()=>WN});var at=require("@budibase/backend-core"),VA=F(KA());var{DocWritethrough:BN}=at.cache.docWritethrough;function GN(){return`${at.db.DocumentType.SCIM_LOG}${at.db.SEPARATOR}${(0,VA.default)().format("YYYYMMDD")}`}a(GN,"getLogDocId");var HA=a(()=>{let e=at.context.getScimDBName();return new BN(at.db.getDB(e),GN())},"getDB");async function FN(e){at.logging.logWarn("SCIM request log",e);let t=Date.now().toString();return await HA().patch({[`${t}_request`]:{ts:new Date().toISOString(),...e}}),t}a(FN,"logRequest");async function WN(e,t){at.logging.logWarn("SCIM response",t),await HA().patch({[`${e}_response`]:{ts:new Date().toISOString(),...t}})}a(WN,"logResponse");var hu={};x(hu,{doInScimContext:()=>lu,feature:()=>we,internalGroupOnly:()=>Ga,licenseAuth:()=>gu,licensing:()=>YA,requireSCIM:()=>du,scimGroupOnly:()=>Ba,scimUserOnly:()=>Na});var Mt=require("@budibase/backend-core");var co=require("@budibase/types");var $N=a((e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(Mt.env.SELF_HOSTED&&Mt.env.DEFAULT_LICENSE)return t.user.license=Mo,r();t.user.license=await ct.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(Mt.utils.isServingApp(t)||Mt.utils.isServingBuilder(t)||Mt.utils.isServingBuilderPreview(t)||Mt.utils.isPublicApiRequest(t))&&await ft.usageLimitIsExceeded({name:co.StaticQuotaName.USERS,type:co.QuotaUsageType.STATIC,usageChange:0})}return r()},"licensing"),YA=$N;var we={};x(we,{requireFeature:()=>jN,requireFeatures:()=>QN});var jN=a(e=>async(t,r)=>{await Ln(e),await r()},"requireFeature"),QN=a((...e)=>async(t,r)=>{await Os(e),await r()},"requireFeatures");var po=require("@budibase/backend-core");var lu=a(async(e,t)=>{let r;return po.env.ENABLE_SCIM_LOGGER&&(r=await Zt.logRequest({...e.request.toJSON(),body:e.request.body})),await po.context.doInScimContext(async()=>{let n=await t();return r&&await Zt.logResponse(r,{...e.response.toJSON(),body:e.response.body}),n})},"doInScimContext");var du=a(async(e,t)=>{await Ds(),await t()},"requireSCIM");var zA=require("@budibase/backend-core");var Na=a(e=>fu(zA.users.getById,e,!0),"scimUserOnly"),Ba=a(e=>fu(z.get,e,!0),"scimGroupOnly"),Ga=a(e=>fu(z.get,e,!1),"internalGroupOnly");function fu(e,t,r){return async(n,o)=>{let s=n.params[t];return typeof s!="string"&&n.throw(404),!!(await e(s)).scimInfo?.isSync!==r&&n.throw(404),o()}}a(fu,"scimSyncChecks");var Fa=require("@budibase/backend-core");var mu=require("dd-trace");async function gu(e,t){await mu.tracer.trace("licenseAuth",async r=>{let n=e.request.headers[Fa.constants.Header.LICENSE_KEY];Array.isArray(n)&&(n=n[0]),r.addTags({licenseKey:n}),n||e.throw(403,"License key not provided");let o=await vs(n);o||(r.addTags({licenseFound:!1}),e.throw(403,"License not found or invalid")),o.tenantId||e.throw(403,"License does not have a tenant ID"),mu.tracer.setUser({id:"anonymous",tenantId:o.tenantId}),await Fa.context.doInSelfHostTenantUsingCloud(o.tenantId,async()=>{await Fa.context.doInLicenseContext(o,async()=>{await t()})})})}a(gu,"default");var wu={};x(wu,{appBackups:()=>sb,auditLogs:()=>gb,environmentVariables:()=>Eb,groups:()=>kb,scim:()=>dI});var Et=require("@budibase/backend-core"),fo=require("@budibase/types"),nb=F(require("@koa/router")),tr=F(require("joi"));var lo=require("@budibase/backend-core"),yu=require("@budibase/types");async function er(e,t){t||e.throw(400,"App ID missing"),await cr.workspaceExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}a(er,"checkAppID");async function JA(e){let t=e.params.appId;await er(e,t);let{body:r}=e.request,n=e.user?._id,o=await Ne.triggerAppBackup(t,yu.BackupTrigger.MANUAL,{name:r.name,createdBy:n});o||e.throw(500,"Unable to start backup."),e.body={backupId:o,message:"Backup triggered - process starting."}}a(JA,"manualBackup");async function XA(e){let t=e.params.appId;await er(e,t);let r=e.params.backupId,n=e.request.body.name,o=await Ne.triggerAppRestore(t,r,n,e.user?._id);o||e.throw(500,"Unable to start restore."),await lo.events.backup.appBackupRestored(o.metadata),e.body={restoreId:o?.restoreId,message:"Restore triggered - process starting."}}a(XA,"importBackup");async function ZA(e){let t=e.params.appId;await er(e,t);let r=e.params.backupId;await Ne.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}a(ZA,"deleteBackup");async function eb(e){let t=lo.context.getWorkspaceId();await er(e,t);let{backupIds:r}=e.request.body;(!Array.isArray(r)||r.length===0)&&e.throw(400,"backupIds must be a non-empty array");let n=await Ne.deleteAppBackups(r),o=n.filter(i=>i.success).length,s=n.length-o;e.body={message:`${o} backups deleted successfully${s>0?`, ${s} failed`:""}.`,results:n,successCount:o,failureCount:s}}a(eb,"deleteBackups");async function tb(e){let t=e.params.appId;await er(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(yu.BackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await Ne.fetchAppBackups(t,{paginate:!0,...r})}a(tb,"fetchBackups");async function rb(e){let t=e.params.appId;await er(e,t);let r=e.params.backupId,n=e.request.body;e.body=await Ne.updateAppBackup(r,n.name)}a(rb,"updateBackup");async function ab(e){let t=e.params.appId;await er(e,t);let r=e.params.backupId,{metadata:n,stream:o}=await Ne.getBackupDownloadStream(r);e.attachment(`backup-${n.timestamp}.tar.gz`),e.body=o}a(ab,"downloadBackup");var ob=new nb.default;function VN(){return Et.auth.joiValidator.body(tr.default.object({trigger:tr.default.string().valid(...Object.values(fo.BackupTrigger)),type:tr.default.string().valid(...Object.values(fo.BackupType)),startDate:tr.default.date(),endDate:tr.default.date(),page:tr.default.string()}))}a(VN,"validateBackupSearch");ob.post("/api/apps/:appId/backups",Et.auth.builderOrAdmin,JA).post("/api/apps/:appId/backups/search",Et.auth.builderOrAdmin,VN(),tb).get("/api/apps/:appId/backups/:backupId/file",Et.auth.builderOrAdmin,ab).patch("/api/apps/:appId/backups/:backupId",Et.auth.builderOrAdmin,rb).delete("/api/apps/:appId/backups/:backupId",Et.auth.builderOrAdmin,ZA).delete("/api/apps/:appId/backups",Et.auth.builderOrAdmin,eb).post("/api/apps/:appId/backups/:backupId/import",Et.auth.builderOrAdmin,XA);var sb=ob;var Au=require("@budibase/backend-core");async function ib(e){let t=e.request.body,r=await kt.fetch(t);await Au.events.auditLog.filtered(t),e.body=r}a(ib,"search");async function ub(e){let t=e.request.body,{stream:r}=kt.download(t);await Au.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}a(ub,"download");async function cb(e){e.body={events:kt.definitions()}}a(cb,"definitions");var lb=require("@budibase/types"),rr=require("@budibase/backend-core"),fb=F(require("@koa/router")),He=F(require("joi"));function pb(){return rr.auth.joiValidator.body(He.default.object({userIds:He.default.array().items(He.default.string()).optional(),appIds:He.default.array().items(He.default.string()).optional(),events:He.default.array().items(He.default.string().valid(...Object.values(lb.Event))).optional(),startDate:He.default.string().optional().allow(""),endDate:He.default.string().optional().allow(""),fullSearch:He.default.string().optional().allow(""),bookmark:He.default.number()}))}a(pb,"buildAuditLogSearchValidator");var mb=new fb.default;mb.post("/api/global/auditlogs/search",rr.auth.adminOnly,pb(),ib).get("/api/global/auditlogs/download",rr.auth.adminOnly,rr.middleware.querystringToBody,pb(),ub).get("/api/global/auditlogs/definitions",rr.auth.adminOnly,cb);var gb=mb;var Iu=require("@budibase/backend-core"),bu=require("@budibase/types");async function hb(e){e.body={encryptionKeyAvailable:mt.isEncryptionKeyAvailable()}}a(hb,"status");async function yb(e){e.body={variables:await mt.fetch()}}a(yb,"fetch");async function Ab(e){let{name:t,production:r,development:n}=e.request.body;await mt.update(t,{production:r,development:n});let o=[bu.Environment.PRODUCTION];r!==n&&o.push(bu.Environment.DEVELOPMENT),await Iu.events.environmentVariable.created(t,o),e.body={message:`Environment variable "${t}" created.`}}a(Ab,"create");async function bb(e){let{production:t,development:r}=e.request.body,n=e.params.varName;await mt.update(n,{production:t,development:r}),e.body={message:`Environment variable "${n}" updated.`}}a(bb,"update");async function Ib(e){let t=e.params.varName;await mt.remove(t),await Iu.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}a(Ib,"destroy");var ar=require("@budibase/backend-core"),wb=F(require("@koa/router")),Wa=F(require("joi"));var Tb=new wb.default;function Sb(){return ar.auth.joiValidator.body(Wa.default.object({name:Wa.default.string().optional(),production:Wa.default.string().required(),development:Wa.default.string().required()}))}a(Sb,"buildEnvVarUpdateValidator");Tb.get("/api/env/variables/status",ar.auth.builderOrAdmin,hb).get("/api/env/variables",ar.auth.builderOrAdmin,yb).post("/api/env/variables",ar.auth.builderOrAdmin,Sb(),Ab).patch("/api/env/variables/:varName",ar.auth.builderOrAdmin,Sb(),bb).delete("/api/env/variables/:varName",ar.auth.builderOrAdmin,Ib);var Eb=Tb;var gt=require("@budibase/backend-core"),Rt=require("@budibase/types"),qb=F(require("@koa/router")),Ce=F(require("joi"));var Rb=require("@budibase/backend-core");async function vb(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let n=await _r(t._id);t.roles=n.roles,t.scimInfo=n.scimInfo}let r=await Gn(t);e.body={_id:r.id,_rev:r.rev}}a(vb,"save");async function _b(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of users to add or to remove");let o,s;r&&(o=await Fn(t,r)),n&&(s=await Ks(t,n)),e.body={added:o,removed:s}}a(_b,"updateGroupUsers");async function xb(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of objects, with appId and roleId to add or remove"),e.body=await Vs(t,{appsToAdd:r,appsToRemove:n})}a(xb,"updateGroupApps");async function Cb(e){e.body={data:await La()}}a(Cb,"fetch");async function Ob(e){let{groupId:t,rev:r}=e.params;try{await Qs(t,r),e.body={message:"Group deleted successfully"}}catch(n){e.throw(n.status,n)}}a(Ob,"destroy");async function Lb(e){try{e.body=await _r(e.params.groupId)}catch(t){e.throw(t.status,t)}}a(Lb,"find");async function Pb(e){let{pageSize:t=10,bookmark:r,emailSearch:n}=e.request.query,o=e.params.groupId,s={limit:t+1},i=await nn(o,{...s,emailSearch:n,bookmark:r}),u=n?i[t]?.email:i[t]?._id,c=!!u;e.body={users:i.slice(0,t),bookmark:u,hasNextPage:c}}a(Pb,"searchUsers");async function Ub(e){let{groupId:t}=e.params,{csvContent:r}=e.request.body;(r===void 0||r.trim().length===0)&&e.throw(400,"CSV is empty");let n=await Rb.csv.jsonFromCsvString(r,{allowSingleColumn:!0});(!n||n.length===0)&&e.throw(400,"CSV file is invalid");let s=Object.keys(n[0]).find(h=>/^(email|e-mail|email address|mail|e_mail)$/i.test(h.trim()));s||e.throw(400,"CSV file must contain an email column");let i=Array.from(new Set(n.map(h=>h[s]).filter(h=>h&&typeof h=="string"&&h.trim().length>0).map(h=>h.trim())));i.length===0&&e.throw(400,"No valid email addresses found in CSV");try{await _r(t)}catch(h){if(h.status===404)e.throw(404,"Group not found");else throw h}let u=[],c=[],f=[],g=await Promise.all(i.map(h=>Ke.getUserByEmail(h)));for(let h of i){let y=g.find(E=>E?.email===h);y?(u.push({_id:y._id,email:y.email}),f.push(y._id)):c.push({email:h,reason:"User not found"})}f.length>0&&await Fn(t,f),e.body={added:u,skipped:c}}a(Ub,"bulkAddUsersFromCsv");var Db=new qb.default;function JN(){return gt.auth.joiValidator.body(Ce.default.object({_id:Ce.default.string().optional(),_rev:Ce.default.string().optional(),color:Ce.default.string().required(),icon:Ce.default.string().required(),name:Ce.default.string().trim().required().max(50),role:Ce.default.string().optional(),users:Ce.default.array().optional(),apps:Ce.default.array().optional(),roles:Ce.default.object().optional(),createdAt:Ce.default.string().optional(),updatedAt:Ce.default.string().optional()}).required())}a(JN,"buildGroupSaveValidation");Db.post("/api/global/groups",gt.auth.adminOnly,we.requireFeature(Rt.Feature.USER_GROUPS),JN(),vb).get("/api/global/groups",we.requireFeature(Rt.Feature.USER_GROUPS),Cb).delete("/api/global/groups/:groupId/:rev",we.requireFeature(Rt.Feature.USER_GROUPS),gt.auth.adminOnly,Ga("groupId"),Ob).get("/api/global/groups/:groupId",we.requireFeature(Rt.Feature.USER_GROUPS),gt.auth.builderOrAdmin,Lb).get("/api/global/groups/:groupId/users",we.requireFeature(Rt.Feature.USER_GROUPS),gt.auth.builderOrAdmin,Pb).post("/api/global/groups/:groupId/users",gt.auth.adminOnly,we.requireFeature(Rt.Feature.USER_GROUPS),Ga("groupId"),_b).post("/api/global/groups/:groupId/users/bulk",gt.auth.adminOnly,we.requireFeature(Rt.Feature.USER_GROUPS),Ga("groupId"),gt.auth.joiValidator.body(Ce.default.object({csvContent:Ce.default.string().required()}).required()),Ub).post("/api/global/groups/:groupId/apps",gt.auth.builderOrAdmin,we.requireFeature(Rt.Feature.USER_GROUPS),xb);var kb=Db;var lI=F(require("@koa/router"));var mo=require("scim-patch");var Nb=require("@budibase/backend-core");function Mb(e,t){let r=e.request.query[t];if(r!==void 0)return+r}a(Mb,"tryGetQueryAsNumber");var Bb=a(async e=>{let t=Mb(e,"pageSize")??20,r=Mb(e,"startIndex"),n;e.request.query.filter&&(n=ce.user.userFilters(e.request.query.filter));let o=await qe.get({pageSize:t,skip:r,filters:n});e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:o.total,Resources:o.users.map(ce.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},"get"),Gb=a(async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await qe.find(t);e.body=ce.user.toScimUserResponse(r)},"find"),Fb=a(async e=>{let t=ce.user.fromScimUser(e.request.body);try{let r=await qe.create(t);e.body=ce.user.toScimUserResponse(r)}catch(r){throw r instanceof Nb.EmailUnavailableError&&e.throw(409,"Email already in use"),r}},"create");function XN(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}a(XN,"isDeactivation");var Wb=a(async e=>{let t=await qe.find(e.params.id);t||e.throw(404);let r=ce.user.toScimUserResponse(t),n=e.request.body;try{(0,mo.patchBodyValidation)(n)}catch{}if(XN(n))return Su(e);let o;try{o=(0,mo.scimPatch)(r,n.Operations)}catch{}o||e.throw(500);let s=ce.user.fromScimUser(o);await qe.update(s,{allowChangingEmail:!0}),e.body=ce.user.toScimUserResponse(s)},"update"),Su=a(async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await qe.remove(t),e.status=204},"remove");var aI=F(rI()),nI=require("@budibase/shared-core"),go=require("scim-patch");var ho=require("scim2-parse-filter");function oI(e,t){for(let r of t.split(","))delete e[r]}a(oI,"cleanResponse");var sI=a(async e=>{let r=(await re.fetch()).filter(s=>s.scimInfo?.isSync).map(ce.group.toScimGroupResponse),{filter:n,excludedAttributes:o}=e.request.query;if(n){let s=(0,ho.filter)((0,ho.parse)(n));r=r.filter(s)}o&&r.forEach(s=>{oI(s,o)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},"get"),iI=a(async e=>{let t=ce.group.fromScimGroup(e.request.body),r=await qr.create(t);e.body=ce.group.toScimGroupResponse(r)},"create"),uI=a(async e=>{let{id:t}=e.params,r=await re.get(t),n=ce.group.toScimGroupResponse(r),{excludedAttributes:o}=e.request.query;o&&oI(n,o),e.body=n},"find"),cI=a(async e=>{let{id:t}=e.params,r=await re.get(t);await re.remove(t,r._rev),e.status=204},"remove"),pI=a(async e=>{let{id:t}=e.params,r=await re.get(t),n=ce.group.toScimGroupResponse(r),o=e.request.body;try{(0,go.patchBodyValidation)(o)}catch{e.throw(400)}let{true:s,false:i}=(0,aI.default)(o.Operations,u=>u.path==="members");if(i?.length){let u=(0,go.scimPatch)(n,i);u||e.throw(500);let c={...ce.group.fromScimGroup(u),_rev:r._rev};await re.save(c)}if(s?.length){let u=[],c=[];for(let{op:f,value:g}of s)switch(f){case"add":case"Add":for(let h of g)u.push(await qe.find(h.value));break;case"remove":case"Remove":for(let h of g)try{c.push(await qe.find(h.value))}catch(y){if(y.status!==404)throw y}break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:nI.utils.unreachable(f)}u.length&&await re.addUsers(t,u.map(f=>f._id)),c.length&&await re.removeUsers(t,c.map(f=>f._id))}e.body=ce.group.toScimGroupResponse(await re.get(t))},"update");var $a=require("@budibase/types"),Be=new lI.default({prefix:"/api/global/scim/v2"});Be.use(du);Be.use(lu);Be.get("/users",Bb);Be.get("/users/:id",Na("id"),Gb);Be.post("/users",Fb);Be.patch("/users/:id",Na("id"),Wb);Be.delete("/users/:id",Na("id"),Su);Be.get("/groups",sI);Be.post("/groups",we.requireFeature($a.Feature.USER_GROUPS),iI);Be.get("/groups/:id",we.requireFeature($a.Feature.USER_GROUPS),Ba("id"),uI);Be.delete("/groups/:id",we.requireFeature($a.Feature.USER_GROUPS),Ba("id"),cI);Be.patch("/groups/:id",we.requireFeature($a.Feature.USER_GROUPS),Ba("id"),pI);var dI=Be;var ce={};x(ce,{group:()=>Eu,user:()=>Tu});var Tu={};x(Tu,{fromScimUser:()=>vB,toScimUserResponse:()=>TB,userFilters:()=>_B});var fI=require("@budibase/backend-core"),mI=require("@budibase/shared-core"),yo=require("@budibase/types"),gI=require("scim2-parse-filter");var{unreachable:wB}=mI.utils,TB=a(e=>{let{isSync:t,roles:r,...n}=e.scimInfo||{},o={...n,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===yo.UserStatus.ACTIVE};(e.firstName||e.lastName)&&(o.name={formatted:[e.firstName,e.lastName].filter(i=>i).join(" "),familyName:e.lastName,givenName:e.firstName});let s="urn:ietf:params:scim:schemas:extension:enterprise:2.0:User";if(o[s]?.manager){let i=o[s].manager;typeof i=="string"&&(o[s].manager={value:i})}return o},"toScimUserResponse"),EB=a(e=>!!e?.id,"isScimUserResponse");function RB(e){if(fI.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}a(RB,"tryGetEmail");var vB=a(e=>{let t=EB(e)?e:void 0,r=RB(e);if(!r)throw new Error("Email is required");let n;switch(e.active){case"True":case"true":case!0:n=!0;break;case"False":case"false":case!1:n=!1;break;default:wB(e.active)}let o,s;return e.name?.givenName?(o=e.name?.givenName,s=e.name?.familyName):o=e.displayName,{tenantId:"",_id:t?.id,userId:t?.id,email:r,firstName:o,lastName:s,scimInfo:{...e,isSync:!0},roles:{},status:n?yo.UserStatus.ACTIVE:yo.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},"fromScimUser"),_B=a(e=>{let t={equal:{}},r=(0,gI.parse)(e);function n(o){switch(o.op){case"eq":{let s=o.attrPath,i;switch(s){case"emails.value":i="email";break;default:i=`scimInfo.${s}`}t.equal[i]=o.compValue;break}case"and":for(let s of o.filters)n(s);break;default:console.warn("Filter not handled",{filter:o})}}return a(n,"parseFilters"),n(r),t},"userFilters");var Eu={};x(Eu,{fromScimGroup:()=>OB,toScimGroupResponse:()=>xB});var xB=a(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}))}),"toScimGroupResponse"),CB=a(e=>!!e?.id,"isScimGroup"),OB=a(e=>{let t=CB(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()}},"fromScimGroup");var Hu={};x(Hu,{LLM:()=>ht,LLMRequest:()=>se,TableGeneration:()=>Vu,agentHistoryTitleSystemPrompt:()=>GB,agentSystemPrompt:()=>BB,aiColumnSchemas:()=>Qu,aiTableResponseToTableSchema:()=>Fu,appendAIColumns:()=>Wu,classifyText:()=>_u,cleanData:()=>xu,extractFileData:()=>DB,generateAIColumns:()=>Bu,generateCode:()=>NB,generateCronExpression:()=>Cu,generateData:()=>Gu,generateJs:()=>Uu,generateSQL:()=>MB,generateTables:()=>Nu,generationStructure:()=>ju,getChatLLM:()=>_I,getLLM:()=>Ka,getLLMConfig:()=>Mu,getLLMOrThrow:()=>vI,normalizeContentType:()=>Ru,parseResponseFormat:()=>bo,sanitiseToolName:()=>LB,searchWeb:()=>Pu,sentimentAnalysis:()=>Lu,summarizeText:()=>Ao,tableDataStructuredOutput:()=>Ku,translate:()=>Ou});var ja=require("@budibase/types");function LB(e){if(e.length>64)throw new Error("Tool name must be under 64 characters long");return e.replace(/[^a-zA-Z0-9_-]/g,"_")}a(LB,"sanitiseToolName");function Ru(e){return e?e.includes("/")?e:{[ja.SupportedFileType.PDF]:"application/pdf",[ja.SupportedFileType.JPG]:"image/jpeg",[ja.SupportedFileType.JPEG]:"image/jpeg",[ja.SupportedFileType.PNG]:"image/png"}[e.toLowerCase()]||"application/octet-stream":"application/octet-stream"}a(Ru,"normalizeContentType");var Eo=require("@budibase/types");var yt=require("@budibase/backend-core"),SI=require("@budibase/types"),Dr=require("dd-trace"),wI=require("openai/helpers/zod"),TI=require("zod");var AI=require("@budibase/types"),Io=F(require("openai")),qu=require("openai/helpers/zod");var hI=require("@budibase/shared-core"),Nt=require("@budibase/types"),Bt=F(require("dd-trace"));function vu(e,t){return t.map(r=>e[r]).join(" ")}a(vu,"extractTextFromColumns");var ht=class{static{a(this,"LLM")}constructor({model:t,apiKey:r,maxTokens:n}){this._model=t,this._apiKey=r,this._maxTokens=n??parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"1000")}get model(){return this._model}get apiKey(){return this._apiKey}get maxTokens(){return this._maxTokens}async prompt(t){return await Bt.default.trace("prompt",async()=>{let r=typeof t=="string"?new se().addUserMessage(t):t,{messages:n,tokensUsed:o}=await Bt.default.trace("chatCompletion",()=>this.chatCompletion(r));return!n||n.length===0?{message:"",tokensUsed:o}:{message:n[n.length-1].content||"",tokensUsed:o}})}async chat(t){return await Bt.default.trace("chat",async()=>await this.chatCompletion(t))}async*chatStream(t){yield*this.chatCompletionStream(t)}async summarizeText(t){return Bt.default.trace("summarizeText",()=>this.prompt(Ao(t)))}async generateCronExpression(t){return Bt.default.trace("generateCronExpression",()=>this.prompt(Cu(t)))}async operation(t,r){return Bt.default.trace("operation",n=>{n.addTags({operation:t.operation,rowId:r.id});let o=this.promptForOperation(t,r);return this.prompt(o)})}promptForOperation(t,r){let{operation:n,column:o,columns:s,language:i,categories:u,prompt:c}=t;switch(n){case Nt.AIOperationEnum.SUMMARISE_TEXT:return Ao(vu(r,s));case Nt.AIOperationEnum.CLEAN_DATA:return xu(r[o]);case Nt.AIOperationEnum.TRANSLATE:return Ou(r[o],i);case Nt.AIOperationEnum.CATEGORISE_TEXT:if(!u)throw Error("No categories provided for categorise text operation. Please provide categories.");return _u(vu(r,s),u.split(","));case Nt.AIOperationEnum.SENTIMENT_ANALYSIS:return Lu(r[o]);case Nt.AIOperationEnum.PROMPT:return c;case Nt.AIOperationEnum.SEARCH_WEB:return Pu(vu(r,s));default:throw hI.utils.unreachable(n)}}async generateJs(t,r){return await Bt.default.trace("generateJs",async()=>{let{bindings:n=[],snippets:o=[]}=r||{};return await this.prompt(Uu(n,o).addUserMessage(t))})}};var Qa=(n=>(n.GPT_5_MINI="gpt-5-mini",n.GPT_5="gpt-5",n.GPT_5_NANO="gpt-5-nano",n))(Qa||{});function bo(e){if(e)return e==="text"?{type:"text"}:e==="json"?{type:"json_object"}:e}a(bo,"parseResponseFormat");function yI(e){if(!e)return 0;let t=e.prompt_tokens;return e.completion_tokens*3+t}a(yI,"calculateBudibaseAICredits");var Ge=class extends ht{constructor(r){super(r);this.client=this.getClient(r)}static{a(this,"OpenAI")}getVerbosityForModel(){if(Object.values(Qa).includes(this.model))return"low"}getClient(r){if(!r.apiKey)throw new Error("No OpenAI API key found");return new Io.default({apiKey:r.apiKey,baseURL:r.baseUrl})}async uploadFile(r,n,o){let s=Ru(o);if(AI.ImageContentTypes.includes(s.toLowerCase())){let c;if(Buffer.isBuffer(r))c=r;else{let g=[];for await(let h of r)g.push(new Uint8Array(h));c=Buffer.concat(g)}let f=c.toString("base64");return`data:${s};base64,${f}`}let i=await(0,Io.toFile)(r,n);return(await this.client.files.create({file:i,purpose:"assistants"})).id}async chatCompletion(r){let n={model:this.model,messages:r.messages,max_completion_tokens:this._maxTokens,response_format:bo(r.format)};if(Object.values(Qa).includes(this.model)){let i=this.getVerbosityForModel();i&&(n.verbosity=i),n.reasoning_effort="minimal"}r.tools&&r.tools.length>0&&(n.tool_choice="auto",n.tools=r.tools.map(qu.zodFunction));let o=await this.client.chat.completions.create(n),s=o?.choices?.[0]?.message;if(s?.tool_calls){r.addMessage(s);let i=[];for(let u of s.tool_calls){if(u.type!=="function"||!u.function){console.warn(`[OPENAI TOOL WARN] Unsupported tool call type: ${u.type}`);continue}let c=u.function.name,f=r.findTool(c);if(!f)throw new Error(`Tool ${c} not found in prompt tools`);let g=JSON.parse(u.function.arguments);i.push(f.handler(g).then(h=>({role:"tool",tool_call_id:u.id,content:h})).catch(h=>(console.error(`[OPENAI TOOL ERROR] Tool ${c} failed in OpenAI handler:`,h),{role:"tool",tool_call_id:u.id,content:`Error: ${h.message}`})))}return r.addMessages(await Promise.all(i)),this.chatCompletion(r)}else{if(s?.content)return{messages:[...r.messages,{role:s.role,content:s.content}],tokensUsed:yI(o.usage)};throw new Error("No response found")}}async*chatCompletionStream(r){let n={model:this.model,messages:r.messages,max_tokens:this.maxTokens,response_format:bo(r.format),stream:!0};r.tools&&r.tools.length>0&&(n.tool_choice="auto",n.tools=r.tools.map(qu.zodFunction));try{let o=await this.client.chat.completions.create(n),s=null,i="",u=null;for await(let f of o){let g=f?.choices?.[0]?.delta;if(g){if(g.content&&(i+=g.content,yield{type:"content",content:g.content}),g.tool_calls&&g.tool_calls.length>0){let h=g.tool_calls[0];h.id?(s={id:h.id,name:h.function?.name||"",arguments:h.function?.arguments||""},yield{type:"tool_call_start",toolCall:{id:s.id,name:s.name,arguments:s.arguments}}):s&&h.function?.arguments&&(s.arguments+=h.function.arguments,yield{type:"tool_call_start",toolCall:{id:s.id,name:s.name,arguments:s.arguments}})}f.usage&&(u=f.usage)}}let c=u?yI(u):0;if(s){r.addMessage({role:"assistant",content:"",tool_calls:[{id:s.id,type:"function",function:{name:s.name,arguments:s.arguments}}]});let f=r.findTool(s.name);if(f)try{let g=JSON.parse(s.arguments),h=await f.handler(g);yield{type:"tool_call_result",toolResult:{id:s.id,result:h}},r.addMessage({role:"tool",tool_call_id:s.id,content:h}),yield*this.chatCompletionStream(r);return}catch(g){yield{type:"tool_call_result",toolResult:{id:s.id,result:`Error: ${g.message}`,error:g.message}},r.addMessage({role:"tool",tool_call_id:s.id,content:`Error: ${g.message}`}),yield*this.chatCompletionStream(r);return}else{let g=`Tool '${s.name}' not found`;yield{type:"tool_call_result",toolResult:{id:s.id,result:g,error:g}},r.addMessage({role:"tool",tool_call_id:s.id,content:g}),yield*this.chatCompletionStream(r);return}}i&&r.addMessage({role:"assistant",content:i}),yield{type:"done",messages:r.messages,tokensUsed:c}}catch(o){yield{type:"error",content:o.message}}}};var Du=F(require("@anthropic-ai/sdk"));function PB(e){if(!e)return 0;let t=e.input_tokens;return e.output_tokens*3+t}a(PB,"calculateBudibaseAICredits");var So=class extends ht{constructor(r){super(r);this.client=new Du.default({apiKey:r.apiKey})}static{a(this,"Anthropic")}firstTextBlock(r){for(let n of r.content)if(n.type==="text")return n.text}async uploadFile(r,n,o){throw new Error("File upload not supported for this LLM provider")}async chatCompletion(r){try{let n=await this.client.messages.create({model:this.model,messages:r.messages.map(({content:s})=>{if(s==null)return{role:"user",content:""};if(typeof s=="string")return{role:"user",content:s};let i="";for(let u of s)u.type==="text"?i+=u.text:["image_url","input_audio","file"].includes(u.type);return{role:"user",content:i}}),max_tokens:this.maxTokens}),o=this.firstTextBlock(n)||"";return{messages:[...r.messages,{role:"assistant",content:o}],tokensUsed:PB(n.usage)}}catch(n){throw n instanceof Du.default.APIError&&console.error(`Anthropic Prompt failed with error ${n.name} and status: ${n.status}`),n}}async*chatCompletionStream(r){try{let n=await this.chatCompletion(r);if(n.messages.length>0){let o=n.messages[n.messages.length-1];o.content&&(yield{type:"content",content:o.content})}yield{type:"done",messages:n.messages,tokensUsed:n.tokensUsed}}catch(n){yield{type:"error",content:n.message}}}};var bI=require("openai");var wo=class extends Ge{static{a(this,"AzureOpenAI")}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 bI.AzureOpenAI({apiKey:t.apiKey,apiVersion:"2024-10-01-preview",baseURL:t.baseUrl})}getVerbosityForModel(){return Object.values(Qa).includes(this.model)?"medium":void 0}};var he=require("@budibase/backend-core"),II=require("@budibase/types"),ku=require("dd-trace");var To=class extends ht{static{a(this,"BudibaseAI")}async prompt(t){let r=await super.prompt(t);return r.tokensUsed&&await Nn(r.tokensUsed),r}async chat(t){let r=await super.chat(t);return r.tokensUsed&&await Nn(r.tokensUsed),r}async uploadFile(t,r,n){return he.env.SELF_HOSTED?this.uploadFileSelfHost(t,r,n):this.uploadFileCloud(t,r,n)}async uploadFileCloud(t,r,n){return new Ge({apiKey:he.env.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).uploadFile(t,r,n)}async uploadFileSelfHost(t,r,n){let o;if(Buffer.isBuffer(t))o=t;else{let g=[];for await(let h of t)g.push(new Uint8Array(h));o=Buffer.concat(g)}let s=o.toString("base64");if(n&&II.ImageContentTypes.includes(n.toLowerCase()))return`data:image/jpeg;base64,${s}`;if(!he.env.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(!this._apiKey){let g=await Cn();if(!g)throw new Error("No license key found");this._apiKey=g}let i=`${he.env.BUDICLOUD_URL}/api/ai/upload-file`,u={method:"POST",headers:{"Content-Type":"application/json",[he.constants.Header.LICENSE_KEY]:this._apiKey},body:JSON.stringify({data:s,filename:r,contentType:n})};console.debug("[BudibaseAI] uploadFileSelfHost - Making network call",{url:i,method:u.method,headers:u.headers,bodyKeys:["data","filename","contentType"],filename:r,contentType:n});let c=await Ja(i,u);if(console.debug("[BudibaseAI] uploadFileSelfHost - Network response",{url:i,status:c.status,statusText:c.statusText,ok:c.ok}),!c.ok)throw await he.HTTPError.fromResponse(c);return(await c.json()).fileId}async chatCompletion(t){return he.env.SELF_HOSTED?this.chatCompletionSelfHost(t):this.chatCompletionCloud(t)}async chatCompletionCloud(t){return await ku.tracer.trace("chatCompletionCloud",async()=>await new Ge({apiKey:he.env.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).chatCompletion(t))}async chatCompletionSelfHost(t){return await ku.tracer.trace("chatCompletionSelfHost",async r=>{if(!he.env.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(r.addTags({budicloudUrl:he.env.BUDICLOUD_URL}),!this._apiKey){let c=await Cn();if(!c)throw new Error("No license key found");this._apiKey=c,r.addTags({licenseKey:this._apiKey})}let n={messages:t.messages,format:t.format,useTools:t.tools.length>0},o=`${he.env.BUDICLOUD_URL}/api/ai/chat`,s={method:"POST",headers:{"Content-Type":"application/json",[he.constants.Header.LICENSE_KEY]:this._apiKey},body:JSON.stringify(n)};console.debug("[BudibaseAI] chatCompletionSelfHost - Making network call",{url:o,method:s.method,headers:s.headers,bodyKeys:Object.keys(n),messagesCount:t.messages.length,useTools:n.useTools,format:n.format});let i=await Ja(o,s);if(console.debug("[BudibaseAI] chatCompletionSelfHost - Network response",{url:o,status:i.status,statusText:i.statusText,ok:i.ok}),!i.ok)throw await he.HTTPError.fromResponse(i);let u=await i.json();return console.debug("[BudibaseAI] chatCompletionSelfHost - Response data",{url:o,tokensUsed:u.tokensUsed,messagesCount:u.messages?.length}),u})}async*chatCompletionStream(t){he.env.SELF_HOSTED?yield*this.chatCompletionStreamSelfHost(t):yield*this.chatCompletionStreamCloud(t)}async*chatCompletionStreamCloud(t){yield*new Ge({apiKey:he.env.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).chatCompletionStream(t)}async*chatCompletionStreamSelfHost(t){console.debug("[BudibaseAI] chatCompletionStreamSelfHost - Starting streaming (fallback to non-streaming)",{messagesCount:t.messages.length,toolsCount:t.tools.length});try{let r=await this.chatCompletionSelfHost(t);if(console.debug("[BudibaseAI] chatCompletionStreamSelfHost - Yielding response chunks",{responseMessagesCount:r.messages.length,tokensUsed:r.tokensUsed}),r.messages.length>0){let n=r.messages[r.messages.length-1];n.content&&(yield{type:"content",content:n.content})}yield{type:"done",messages:r.messages,tokensUsed:r.tokensUsed}}catch(r){console.debug("[BudibaseAI] chatCompletionStreamSelfHost - Error occurred",{error:r.message}),yield{type:"error",content:r.message}}}};var EI={OpenAI:"gpt-5-mini",TogetherAI:"gpt-5-mini",AzureOpenAI:"gpt-4.1",Custom:"gpt-5-mini",Anthropic:"claude-3-5-sonnet-20240620",BudibaseAI:"gpt-5-mini"},RI={OpenAI:Ge,TogetherAI:Ge,AzureOpenAI:wo,Custom:Ge,Anthropic:So,BudibaseAI:To,Chat:Ge};async function UB(){return await Dr.tracer.trace("getAIConfig",async e=>{let t={type:SI.ConfigType.AI,config:{}};if(!yt.context.isSelfHostUsingCloud()){let n=await yt.configs.getAIConfig();n&&(t=n)}await ks(t);let r=Object.values(t.config).find(n=>n.active&&n.isDefault);if(!r){e.addTags({enabled:!1,reason:"no provider found"});return}return e.addTags({enabled:!0}),{provider:r.provider,model:r.defaultModel||EI[r.provider],apiKey:r.apiKey,baseUrl:r.baseUrl}})}a(UB,"getAIConfig");async function qB(){return Dr.tracer.trace("getSelfHostOpenAIKeyConfig",e=>{if(!yt.env.SELF_HOSTED){e.addTags({enabled:!1,reason:"not self host"});return}if(!yt.env.OPENAI_API_KEY){e.addTags({enabled:!1,reason:"no OPENAI_API_KEY"});return}return e.addTags({enabled:!0}),{provider:"OpenAI",model:EI.OpenAI,apiKey:yt.env.OPENAI_API_KEY}})}a(qB,"getSelfHostOpenAIKeyConfig");async function Mu(){return Dr.tracer.trace("getLLMConfig",async()=>await UB()||await qB())}a(Mu,"getLLMConfig");async function Ka(e){return await Dr.tracer.trace("getLLM",async t=>{let{model:r,maxTokens:n}=e||{},o=await Mu();if(!o){t.addTags({enabled:!1,reason:"no config found"});return}r&&(o.model=r),n&&(o.maxTokens=n);let s=RI[o.provider];if(!s){t.addTags({enabled:!1,reason:"no provider found",provider:o.provider});return}return new s(o)})}a(Ka,"getLLM");async function vI(){let e=await Ka();if(!e)throw new yt.HTTPError("No available LLM configurations",500);return e}a(vI,"getLLMOrThrow");async function _I(e){return await Dr.tracer.trace("getChatLLM",async()=>new RI.Chat(e))}a(_I,"getChatLLM");var se=class e{constructor(){this.messages=[];this.tools=[]}static{a(this,"LLMRequest")}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 TI.z.ZodType?this.format=(0,wI.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 vt=require("zod");function Ao(e,t){let r=`Summarize this text:
|
|
39
|
-
${e}`,n="";if(t)switch(t){case
|
|
40
|
-
Only return the summary.`)}a(Ao,"summarizeText");function
|
|
37
|
+
`;function ia(e){return jo.default.verify(e,_S,{algorithms:["RS256"]})}a(ia,"verifyLicenseToken");function xS(e,t){return jo.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}a(xS,"sign");var dn={};x(dn,{getFeatures:()=>Qo});var l=require("@budibase/types");var CS={[l.PlanType.FREE]:[...ke.SELF_FREE_LICENSE.features],[l.PlanType.PREMIUM]:[l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.PDF],[l.PlanType.PREMIUM_PLUS]:[l.Feature.WORKSPACE_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.WORKSPACE_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.WORKSPACE_BACKUPS],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_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.WORKSPACE_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.Feature.RECAPTCHA,l.Feature.PKCE_OIDC],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_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.Feature.RECAPTCHA,l.Feature.PKCE_OIDC],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_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.Feature.RECAPTCHA,l.Feature.PKCE_OIDC]},OS={[l.PlanType.FREE]:[...ke.CLOUD_FREE_LICENSE.features],[l.PlanType.PREMIUM]:[l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.PDF],[l.PlanType.PREMIUM_PLUS]:[l.Feature.WORKSPACE_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.WORKSPACE_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.WORKSPACE_BACKUPS,l.Feature.BRANDING],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_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.WORKSPACE_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.Feature.RECAPTCHA,l.Feature.PKCE_OIDC],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_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.Feature.RECAPTCHA,l.Feature.PKCE_OIDC],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_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,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC]};function Qo(e,t){let r=[];function n(o){let s=o[t];if(!s)throw new Error(`Features do not exist for planType=${t} and hosting=${e}`);return s}switch(a(n,"readFeatures"),e){case l.Hosting.SELF:r=n(CS);break;case l.Hosting.CLOUD:r=n(OS);break}return r}a(Qo,"getFeatures");var fn={};x(fn,{UNLIMITED:()=>m,getQuotas:()=>Ko});var J=require("@budibase/types");var d=At,Dc=ke,m=-1,ca=a(e=>e*1e6,"millions"),LS={[J.PlanType.FREE]:{...Dc.CLOUD_FREE_LICENSE.quotas},[J.PlanType.PREMIUM]:{usage:{monthly:{...d.queries(m),...d.automations(1e3),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(1e4),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(7),...d.appBackupRetentionDays(7)}},[J.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...d.queries(m),...d.automations(5e3),...d.budibaseAICredits(ca(2)),...d.actions(m)},static:{...d.rows(25e3),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(1)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(30)}},[J.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...d.queries(m),...d.automations(5e3),...d.budibaseAICredits(ca(2)),...d.actions(m)},static:{...d.rows(25e3),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(1)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(30)}},[J.PlanType.PRO]:{usage:{monthly:{...d.queries(m),...d.automations(1e3),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(5),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(7),...d.appBackupRetentionDays(7)}},[J.PlanType.TEAM]:{usage:{monthly:{...d.queries(m),...d.automations(5e3),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(10),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(90)}},[J.PlanType.BUSINESS]:{usage:{monthly:{...d.queries(m),...d.automations(1e4),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(5e4),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(50),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(365),...d.appBackupRetentionDays(365)}},[J.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(ca(4)),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(m),...d.appBackupRetentionDays(m)}},[J.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(ca(4)),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(15),...d.appBackupRetentionDays(15)}},[J.PlanType.ENTERPRISE]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(ca(4)),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(m),...d.appBackupRetentionDays(m)}}},PS={[J.PlanType.FREE]:{...Dc.SELF_FREE_LICENSE.quotas},[J.PlanType.PREMIUM]:void 0,[J.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(1)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(30)}},[J.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(1)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(30)}},[J.PlanType.PRO]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(5),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(7),...d.appBackupRetentionDays(7)}},[J.PlanType.TEAM]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(10),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(90)}},[J.PlanType.BUSINESS]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(50),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(90),...d.appBackupRetentionDays(365)}},[J.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(m),...d.appBackupRetentionDays(m)}},[J.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(15),...d.appBackupRetentionDays(15)}},[J.PlanType.ENTERPRISE]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(m),...d.appBackupRetentionDays(m)}}};function Ko(e,t){let r;function n(o){let s=o[t];if(!s)throw new Error(`Quotas do not exist for planType=${t} and hosting=${e}`);return s}switch(a(n,"readQuotas"),e){case J.Hosting.SELF:r=n(PS);break;case J.Hosting.CLOUD:r=n(LS);break}return JSON.parse(JSON.stringify(r))}a(Ko,"getQuotas");var cr={};x(cr,{encoding:()=>ur,workspaceExists:()=>US});var kc=require("@budibase/backend-core");async function US(e){return(await kc.db.getAllWorkspaces({all:!0,idsOnly:!0})).includes(e)}a(US,"workspaceExists");var ur={};x(ur,{base64ToObject:()=>DS,objectToBase64:()=>qS});function qS(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}a(qS,"objectToBase64");function DS(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}a(DS,"base64ToObject");var If=require("@budibase/types"),wr=require("@budibase/backend-core"),Sf=G(Xl()),wf=G(Is());async function px(e){await $e.save({offlineLicenseToken:e}),await Kt()}a(px,"activateOfflineLicenseToken");async function lx(){await $e.save({offlineLicenseToken:void 0}),await Kt()}a(lx,"deleteOfflineLicenseToken");async function Tf(){return(await $e.get()).offlineLicenseToken}a(Tf,"getOfflineLicenseToken");async function Ss(){let t=(await wr.installation.getInstall()).installId,r=wr.context.getTenantId(),n=await wr.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:n}}a(Ss,"getIdentifier");async function dx(){let e=await Ss();return ur.objectToBase64(e)}a(dx,"getIdentifierBase64");function fx(e){return ur.base64ToObject(e)}a(fx,"getIdentifierFromBase64");function Ef(e){let t=Date.now(),r=new Date(e.expireAt).getTime();if(t>r)throw new Error(`Offline license has expired. expireAt=${e.expireAt}`)}a(Ef,"verifyExpiry");async function Rf(e){let t=await Ss();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}a(Rf,"verifyInstallation");function vf(e){let t=e.plan.type,r=If.Hosting.SELF,n=Qo(r,t),o=Ko(r,t);return e.features=(0,Sf.default)(e.features,n),e.quotas=(0,wf.default)(e.quotas,o),e}a(vf,"enrichLicense");async function ws(){try{let e=await Tf();if(e){let t=await ia(e);return Ef(t),await Rf(t),vf(t)}}catch(e){console.error("Error retrieving offline license",e)}}a(ws,"getOfflineLicense");var xa={};x(xa,{deleteDevLicense:()=>Ax,getOfflineLicense:()=>hx,writeDevLicenseToDisk:()=>yx});var _f=require("@budibase/backend-core"),Es=require("path"),xf=require("os"),Vt=G(require("fs"));var mx=_f.env.isTest()?".budibase-test":".budibase",Ts=(0,Es.join)((0,xf.tmpdir)(),mx),gx="dev_license.txt",_a=(0,Es.join)(Ts,gx);if(!Vt.default.existsSync(Ts))try{Vt.default.mkdirSync(Ts)}catch{}function hx(){try{if(Vt.default.existsSync(_a)){let e=Vt.default.readFileSync(_a,{encoding:"utf-8"});return ia(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}a(hx,"getOfflineLicense");function yx(e){console.log(`Writing license to: ${_a}`),Vt.default.writeFileSync(_a,e,{encoding:"utf-8"})}a(yx,"writeDevLicenseToDisk");function Ax(){Vt.default.rmSync(_a,{force:!0})}a(Ax,"deleteDevLicense");var Cf=require("dd-trace");var vs=a(async()=>await Cf.tracer.trace("getLicense",async e=>{if(Rs.env.OFFLINE_MODE)return e.addTags({offline:!0}),ws();let t=await ir();return t||(e.addTags({offlineFallback:!0}),t=xa.getOfflineLicense()),t}),"getLicense"),_s=a(e=>Wo(e),"getLicenseFromKey"),xs=a(()=>Rs.env.SELF_HOSTED?ke.SELF_FREE_LICENSE:ke.CLOUD_FREE_LICENSE,"getFreeLicense");var Os={};x(Os,{activateLicenseKey:()=>bx,deleteLicenseKey:()=>Ix,getLicenseKey:()=>Cn});var Cs=G(require("dd-trace"));async function bx(e){await $o(e),await $e.save({licenseKey:e}),await Kt()}a(bx,"activateLicenseKey");async function Cn(){return await Cs.default.trace("getLicenseKey",async e=>{let t=await $e.get();return e.addTags({licenseKey:t.licenseKey}),t.licenseKey})}a(Cn,"getLicenseKey");async function Ix(){return await Cs.default.trace("deleteLicenseKey",async()=>{await $e.save({licenseKey:void 0}),await Kt()})}a(Ix,"deleteLicenseKey");var Ht=require("@budibase/backend-core"),On=G(require("dd-trace"));var Of=3600,Kt=a(async()=>{await Uf(),await Pf()},"refresh"),Lf=a(async(e,t)=>{let{populateLicense:r=vs,populateFreeLicense:n=xs}=t||{};return await On.default.trace("getCachedLicense",async o=>{let s=Ht.context.getLicense();if(s)return o.addTags({foundInContext:!0,features:s.features,plan:s.plan,quotas:s.quotas}),s;let i=Ht.tenancy.getTenantId(),u=await _o(),c=await u.get(i);return o.addTags({tenantId:i,foundInCache:!!c}),c?(o.addTags({foundInCache:!0,refreshedAt:c.refreshedAt,features:c.features,plan:c.plan,quotas:c.quotas}),c):(c=await On.default.trace("populateLicense",async()=>await r(i)),o.addTags({populatedLicense:!!c}),c||(c=On.default.trace("populateFreeLicense",()=>n(e,i)),o.addTags({populatedFreeLicense:!!c})),c.refreshedAt=new Date().toISOString(),o.addTags({refreshedAt:c.refreshedAt,features:c.features,plan:c.plan,quotas:c.quotas,expirySeconds:Of}),await u.store(i,c,Of),c)})},"_getCachedLicense");Ht.env.isJest()&&(Lf=jest.fn());var Pf=Lf,Uf=a(async()=>{let e=Ht.tenancy.getTenantId();await(await _o()).delete(e)},"invalidate");async function be(e,t){Array.isArray(e)||(e=[e]),t||(t=await Je.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}a(be,"areFeaturesEnabled");async function Ln(e,t){if(!await be(e,t))throw new bt.FeatureDisabledError(`${e} is not currently enabled`,e)}a(Ln,"checkFeature");async function Ls(e,t){if(!await be(e,t)){let r=e.join(", ");throw new bt.FeatureDisabledError(`${r} are not currently enabled`,r)}}a(Ls,"checkFeatures");function xe(e){return async(...t)=>(await Ln(Ae.Feature.WORKSPACE_BACKUPS),e(...t))}a(xe,"checkBackups");async function Ps(){return be(Ae.Feature.WORKSPACE_BACKUPS)}a(Ps,"isBackupsEnabled");async function Us(){return be(Ae.Feature.BRANDING)}a(Us,"isBrandingEnabled");async function qf(){return be(Ae.Feature.ENFORCEABLE_SSO)}a(qf,"isEnforceableSSO");async function wx(){return be(Ae.Feature.SYNC_AUTOMATIONS)}a(wx,"isSyncAutomationsEnabled");async function Tx(){return be(Ae.Feature.TRIGGER_AUTOMATION_RUN)}a(Tx,"isTriggerAutomationRunEnabled");async function qs(){return be(Ae.Feature.APP_BUILDERS)}a(qs,"isAppBuildersEnabled");async function Pn(){return be(Ae.Feature.AUDIT_LOGS)}a(Pn,"isAuditLogsEnabled");async function Ds(){return be(Ae.Feature.USER_GROUPS)}a(Ds,"isUserGroupsEnabled");function Ex(){return be(Ae.Feature.PWA)}a(Ex,"isPWAEnabled");function Rx(){return be(Ae.Feature.RECAPTCHA)}a(Rx,"isRecaptchaEnabled");var vx=a(()=>be(Ae.Feature.PKCE_OIDC),"isPkceOidcEnabled");async function It(){return be(Ae.Feature.EXPANDED_PUBLIC_API)}a(It,"isExpandedPublicApiEnabled");async function _x(e){if(bt.env.ENABLE_SSO_MAINTENANCE_MODE||!await qf())return!1;let r;return e?.config?r=e.config:r=await bt.configs.getSettingsConfig(),!!r.isSSOEnforced}a(_x,"isSSOEnforced");var ks=a(async()=>{let e=Ae.Feature.SCIM,t=await be(e),r=await bt.configs.getSCIMConfig();if(!t||!r?.enabled)throw new bt.FeatureDisabledError(`${e} is not currently enabled`,e);return!0},"checkSCIM");async function xx(){return be(Ae.Feature.VIEW_PERMISSIONS)}a(xx,"isViewPermissionEnabled");async function Cx(){return be(Ae.Feature.VIEW_READONLY_COLUMNS)}a(Cx,"isViewReadonlyColumnsEnabled");var Ox={faviconUrl:void 0,faviconUrlEtag:void 0,emailBrandingEnabled:!0,platformTitle:void 0,loginHeading:void 0,loginButton:void 0,metaDescription:void 0,metaImageUrl:void 0,metaTitle:void 0};async function Lx(e){return await Us()?{faviconUrl:e.faviconUrl,faviconUrlEtag:e.faviconUrlEtag,emailBrandingEnabled:e.emailBrandingEnabled,platformTitle:e.platformTitle,loginHeading:e.loginHeading,loginButton:e.loginButton,metaDescription:e.metaDescription,metaImageUrl:e.metaImageUrl,metaTitle:e.metaTitle}:Ox}a(Lx,"getBrandingConfig");var Ns={};x(Ns,{enrichAIConfig:()=>Ms});var Df=require("@budibase/backend-core");var Px="budibase_ai";async function Ms(e){if(Df.env.SELF_HOSTED)return e;for(let t of Object.values(e.config))if(t.provider==="BudibaseAI")return e;return e.config[Px]={provider:"BudibaseAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-5-mini",name:"Budibase AI"},e}a(Ms,"enrichAIConfig");var ft={};x(ft,{addAction:()=>Mx,addApp:()=>Nx,addAutomation:()=>jx,addGroup:()=>Gs,addPlugin:()=>Ws,addRow:()=>Gx,addRows:()=>Wx,addUsers:()=>kn,bustCache:()=>Uo,decrement:()=>St,decrementMany:()=>Ca,getCurrentUsageValues:()=>cc,getLicensedQuota:()=>Mf,getQuotaUsage:()=>Ft,increment:()=>Ne,incrementBudibaseAICredits:()=>Nn,incrementMany:()=>zt,removeApp:()=>Bx,removeGroup:()=>Fs,removePlugin:()=>$s,removeRow:()=>Fx,removeRows:()=>$x,removeUsers:()=>vr,set:()=>Bs,setAllUsage:()=>Do,setAppUsageValue:()=>qo,setUsage:()=>sc,setUsagePerApp:()=>ic,updatePluginCount:()=>Qs,updateUsage:()=>Tr,usageLimitIsExceeded:()=>kx,utils:()=>Fr});var qn=require("@budibase/types");var et=require("@budibase/backend-core"),de=require("@budibase/types"),Yt=require("dd-trace");var Ne=a(async(e,t,r)=>await Yt.tracer.trace("quotas.increment",async n=>(n.addTags({name:e,type:t}),await kf({change:1,name:e,type:t,opts:r}))),"increment"),zt=a(e=>Yt.tracer.trace("quotas.incrementMany",async()=>kf(e)),"incrementMany"),kf=a(async e=>await Yt.tracer.trace("quotas.tryIncrement",async t=>{let r=Array.isArray(e)?e:[e];t.addTags({numActions:r.length}),await Tr(r.map(o=>({usageChange:o.change,name:o.name,type:o.type,opts:{dryRun:!0,suppressErrorLog:o.opts?.suppressErrorLog,id:o.opts?.id}})));let n=[];for(let o of r)await Yt.tracer.trace("quotas.incrementMany.fn",async s=>{s.addTags({actionName:o.name,actionType:o.type,actionChange:o.change});let i=o.opts?.fn;i&&n.push(await i())});return await Tr(r.map(o=>({usageChange:o.change,name:o.name,type:o.type,opts:{dryRun:!1,valueFn:o.opts?.valueFn,suppressErrorLog:o.opts?.suppressErrorLog,id:o.opts?.id}}))),n[0]}),"tryIncrement"),St=a((e,t,r={})=>Tr({usageChange:-1,name:e,type:t,opts:r}),"decrement"),Ca=a(e=>{let t=Array.isArray(e)?e:[e];return Tr(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},"decrementMany"),Bs=a(async(e,t,r)=>it.setUsage(r,e,t),"set"),Ux=a((e,t,r)=>{if(e==de.QuotaUsageType.STATIC){let n=r.usageQuota.triggers;return n?n[t]||{}:{}}else{let n=it.utils.getCurrentMonthString(),o=r.monthly[n].triggers;return o?o[t]||{}:{}}},"getExistingTriggers"),qx=a(async(e,t,r,n)=>{try{await et.locks.doWithLock({type:de.LockType.TRY_ONCE,name:de.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let o={percentage:r,name:t.name};n&&(o.resetDate=n),await Lt.triggerQuota(o)})}catch(o){et.logging.logAlert("Error triggering quota",o)}},"triggerQuota"),Dx=a(async(e,t,r,n)=>{let o=await Ft(),s=e===de.QuotaUsageType.MONTHLY?o.quotaReset:void 0,i=await Ux(e,t,o),u=n.triggers,c=r/n.value*100;c>100&&(c=100);for(let[f,g]of u.entries())if(c>=g&&n.value!==At.UNLIMITED){if(!i[g]){i[g]=new Date().toISOString();let y=u[f+1]||100;(!(c>=y)||c===g)&&await qx(t,n,c,s)}}else i[g]=void 0;return i},"checkTriggers"),Tr=a(async e=>{await Yt.tracer.trace("quotas.updateUsage",async t=>{let r=et.tenancy.getTenantId(),n=Array.isArray(e)?e:[e];t.addTags({numActions:n.length,tenantId:r});let o,s,i=[],u={},c={},f={},g={};for(let y of n)await Yt.tracer.trace("quotas.updateUsage.action",async E=>{E.addTags({actionName:y.name,actionType:y.type,actionUsageChange:y.usageChange});try{o=et.context.getWorkspaceId()}catch{}if(de.APP_QUOTA_NAMES.includes(y.name)&&!o)throw new Error("App context required for quota update");try{s=await Mf(de.QuotaType.USAGE,y.name,y.type),i.push(s);let{total:k,app:D,breakdown:C}=await it.getCurrentUsageValues(y.type,y.name,y.opts?.id);k+=y.usageChange,D!=null&&(D+=y.usageChange),C!=null&&(C+=y.usageChange);let W={};if(y.opts?.dryRun||(W=await Dx(y.type,y.name,k,s),g={...g,[y.name]:W}),s.value!==At.UNLIMITED&&k>s.value&&y.usageChange>0)throw new et.UsageLimitError(`Licensed ${s.name} of ${s.value} has been exceeded`,s.name);if(k=Math.max(0,k),D&&(D=Math.max(0,D)),C&&(C=Math.max(0,C),f={...f,[y.name]:C}),!y.opts?.dryRun){let ye=y.opts?.valueFn;ye&&(k=await ye(),D=k),u={...u,[y.name]:k},c={...c,[y.name]:D}}}catch(k){throw y.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${y.name}`,k),k}});let h=n.filter(y=>!y.opts?.dryRun).map(y=>({name:y.name,type:y.type,values:{total:u[y.name],app:c[y.name],breakdown:f[y.name],triggers:g[y.name]},opts:{...y.opts,tenantId:r}}));h.length>0&&await it.setAllUsage(h)})},"updateUsage"),Mf=a(async(e,t,r)=>{let n=await Je.getCachedLicense();if(!n){let o=et.tenancy.getTenantId();throw new Error("License not found for tenant id "+o)}if(r&&(0,de.isStaticQuota)(e,r,t))return n.quotas[e][r][t];if(r&&(0,de.isMonthlyQuota)(e,r,t))return n.quotas[e][r][t];if((0,de.isConstantQuota)(e,t))return n.quotas[e][t];throw new Error("Invalid quota type")},"getLicensedQuota"),kx=a(async({name:e,type:t,usageChange:r})=>{try{return await Tr({usageChange:r,name:e,type:t,opts:{dryRun:!0}}),!1}catch(n){if(n.code===de.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw n}},"usageLimitIsExceeded");var Mx=a(async e=>Ne(qn.MonthlyQuotaName.ACTIONS,qn.QuotaUsageType.MONTHLY,{fn:e}),"addAction");var Nf=require("@budibase/backend-core"),Er=require("@budibase/types");var Bf=a(async()=>{let e=await Nf.db.getAllWorkspaces({dev:!0});return e?e.length:0},"getDevAppsCount"),Nx=a(async(e,{appId:t}={})=>Ne(Er.StaticQuotaName.WORKSPACES,Er.QuotaUsageType.STATIC,{fn:e,valueFn:Bf,id:t}),"addApp"),Bx=a(async({appId:e}={})=>St(Er.StaticQuotaName.WORKSPACES,Er.QuotaUsageType.STATIC,{valueFn:Bf,id:e}),"removeApp");var lt=require("@budibase/types");var Gx=a(async(e,{tableId:t}={})=>Ne(lt.StaticQuotaName.ROWS,lt.QuotaUsageType.STATIC,{fn:e,id:t}),"addRow"),Fx=a(async({tableId:e}={})=>St(lt.StaticQuotaName.ROWS,lt.QuotaUsageType.STATIC,{id:e}),"removeRow"),Wx=a(async(e,t,{tableId:r}={})=>zt({change:e,name:lt.StaticQuotaName.ROWS,type:lt.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),"addRows"),$x=a(async(e,{tableId:t}={})=>Ca({change:e,name:lt.StaticQuotaName.ROWS,type:lt.QuotaUsageType.STATIC,opts:{id:t}}),"removeRows");var Dn=require("@budibase/types");var jx=a(async(e,{automationId:t}={})=>Ne(Dn.MonthlyQuotaName.AUTOMATIONS,Dn.QuotaUsageType.MONTHLY,{fn:e,id:t}),"addAutomation");var Rr=require("@budibase/types");var Gs=a(async e=>Ne(Rr.StaticQuotaName.USER_GROUPS,Rr.QuotaUsageType.STATIC,{fn:e}),"addGroup"),Fs=a(async()=>St(Rr.StaticQuotaName.USER_GROUPS,Rr.QuotaUsageType.STATIC),"removeGroup");var Dt=require("@budibase/types");var Ws=a(async e=>Ne(Dt.StaticQuotaName.PLUGINS,Dt.QuotaUsageType.STATIC,{fn:e}),"addPlugin"),$s=a(async()=>St(Dt.StaticQuotaName.PLUGINS,Dt.QuotaUsageType.STATIC),"removePlugin"),Qs=a(async e=>Bs(Dt.StaticQuotaName.PLUGINS,Dt.QuotaUsageType.STATIC,e),"updatePluginCount");var dt=require("@budibase/types"),Oa=require("@budibase/backend-core");var kn=a(async(e,t,r)=>{let n=[{change:e,name:dt.StaticQuotaName.USERS,type:dt.QuotaUsageType.STATIC,opts:{fn:r,valueFn:Oa.users.getUserCount}}];t>0&&n.push({change:t,name:dt.StaticQuotaName.CREATORS,type:dt.QuotaUsageType.STATIC,opts:{valueFn:Oa.users.getCreatorCount}});let o=await zt(n);return await ir(),o},"addUsers"),vr=a(async(e,t)=>{let r=[{change:e,name:dt.StaticQuotaName.USERS,type:dt.QuotaUsageType.STATIC,opts:{valueFn:Oa.users.getUserCount}}];t>0&&r.push({change:t,name:dt.StaticQuotaName.CREATORS,type:dt.QuotaUsageType.STATIC,opts:{valueFn:Oa.users.getCreatorCount}}),await Ca(r),await ir()},"removeUsers");var Mn=require("@budibase/types");var Nn=a(async e=>zt({change:e,name:Mn.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:Mn.QuotaUsageType.MONTHLY}),"incrementBudibaseAICredits");var Wn={};x(Wn,{db:()=>Ke});var Ys=require("@budibase/backend-core");var re={};x(re,{addUsers:()=>Fn,adjustGroupCreatorsQuotas:()=>Hx,cleanupApp:()=>Vx,enrichUserRolesFromGroups:()=>Kx,fetch:()=>La,get:()=>_r,getBulk:()=>Kf,getGroupBuilderAppIds:()=>Qf,getGroupRoleId:()=>Qx,remove:()=>Ks,removeUsers:()=>Vs,save:()=>Gn,updateGroupApps:()=>Hs});var N=require("@budibase/backend-core");var Gf=require("@budibase/backend-core");var Bn=class extends Gf.HTTPError{static{a(this,"GroupNameUnavailableError")}constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function $f(e,t){try{let r=[];for(let u of e)if(u.roles){let c=u.roles[N.db.getProdWorkspaceID(t)];c&&r.push(c)}let n=await Promise.all(r.map(async u=>({[u]:await N.roles.roleToNumber(u)}))),o,s,i={};n.forEach(u=>{let[c,f]=Object.entries(u)[0];i[c]={roleId:c,roleNum:f}});for(let{roleId:u,roleNum:c}of Object.values(i))(s===void 0||c>s)&&(s=c,o=u);return o}catch(r){throw N.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}a($f,"findHighestRole");async function jf(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await z.getBulk(e,{enriched:!1}),t}a(jf,"groupList");async function Qf(e,t){if(!e.userGroups)return[];let r=await jf(e.userGroups,t?.groups),n=t?.appId?N.db.getProdWorkspaceID(t?.appId):null,o=[];for(let s of r){let i=s.builder?.apps;n&&i?.includes(n)?o.push(n):n||(o=o.concat(i||[]))}return[...new Set(o)]}a(Qf,"getGroupBuilderAppIds");async function Qx(e,t,r){if(!e.userGroups)return null;let n=await jf(e.userGroups,r?.groups),o=N.db.getProdWorkspaceID(t);return e.roles?.[o]?e.roles[o]:(n=n.filter(s=>s?.roles?Object.keys(s.roles).includes(o):!1),await $f(n,t))}a(Qx,"getGroupRoleId");async function Kx(e){if(!e||!e.userGroups)return e;let t=await Kf(e.userGroups,{enriched:!1}),r=[];for(let o of t)o?.roles&&(r=r.concat(Object.keys(o.roles)));r=[...new Set(r)];for(let o of r)await N.context.doInWorkspaceContext(o,async()=>{if(e.roles[o])return;let s=await $f(t,o);s&&(e.roles[o]=s)});let n=await Qf(e,{groups:t});if(n.length&&!e.builder?.global){let o=e.builder?.apps||[];e.builder={apps:o.concat(n)}}return e}a(Kx,"enrichUserRolesFromGroups");async function La(){return await z.fetch()}a(La,"fetch");async function _r(e){return await z.get(e)}a(_r,"get");async function Kf(e,t={enriched:!0}){return await z.getBulk(e,t)}a(Kf,"getBulk");async function Ff(e){if(await z.getByName(e))throw new Bn(e)}a(Ff,"guardNameAvailability");async function Wf(e){let t=await z.getGroupUsers(e._id);if(!t.length)return 0;let n=await N.tenancy.getGlobalDB().getMultiple(t.map(s=>s._id));return(await N.userUtils.creatorsInList(n)).filter(s=>s).length}a(Wf,"getCreatorsCountInGroup");async function Gn(e){let t=[],r=!e._id,n=0;if(delete e.users,!e._id)e._id=z.generateUserGroupID(),await Ff(e.name),t.push(N.events.group.created(e));else{let s=await z.get(e._id);if(s.name!==e.name&&await Ff(e.name),t.push(N.events.group.updated(e)),JSON.stringify(s.roles)!==JSON.stringify(e.roles)){let i=s.users?.length||0,u=0;i>0&&(u=await Wf(s)),Object.values(e.roles).includes("CREATOR")?n=i-u:n=-i,t.push(N.events.group.permissionsEdited(e))}}await Promise.all(t);let o=a(()=>z.save(e),"saveGroup");if(r)return await Gs(o);{let s=await o();if(n>0)await kn(0,n);else if(n<0){let i=await Wf(e),u=Math.abs(n)-i;u>0&&await vr(0,u)}return s}}a(Gn,"save");async function Ks(e,t){let r;try{r=await z.get(e)}catch{throw new Error("Group not found")}let n=Object.values(r.roles||{}).includes("CREATOR"),o=a(()=>{},"recalculateCreatorsQuotasFn");if(n){let i=N.tenancy.getGlobalDB(),u=await z.getGroupUsers(e),f=(await Promise.all(u.map(E=>i.get(E._id)))).map(E=>({...E,userGroups:E.userGroups.filter(M=>M!==e)})),h=(await N.userUtils.creatorsInList(f)).filter(E=>E).length,y=u.length-h;y&&(o=a(()=>vr(0,y),"recalculateCreatorsQuotasFn"))}let s=await z.destroy(e,t);return await N.events.group.deleted(r),await Fs(),await o(),s}a(Ks,"remove");async function Fn(e,t){let r=await z.get(e),n=await N.users.bulkGetGlobalUsersById(t),o=[];for(let c of n)c.userGroups||(c.userGroups=[]),c.userGroups.includes(e)||o.push(c);if(!o.length)return o;let s=o.map(c=>({...c,userGroups:[...c?.userGroups||[],e]}));if(await N.users.bulkUpdateGlobalUsers(s),Object.values(r.roles||{}).includes("CREATOR")){let f=(await N.userUtils.creatorsInList(o)).filter(h=>h).length,g=o.length-f;g&&await kn(0,g)}let u=[];for(let c of t)u.push(N.cache.user.invalidateUser(c));return await Promise.all(u),await N.events.group.usersAdded(s.length,r,t),s}a(Fn,"addUsers");async function Vs(e,t){let r=await z.get(e),n=await N.users.bulkGetGlobalUsersById(t),o=[];for(let u of n){if(!u.userGroups||!u.userGroups.includes(e))continue;let c=u.userGroups.indexOf(e);u.userGroups.splice(c,1),o.push(u)}if(await N.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes("CREATOR")){let c=(await N.userUtils.creatorsInList(o)).filter(g=>g).length,f=o.length-c;f&&await vr(0,f)}let i=[];for(let u of t)i.push(N.cache.user.invalidateUser(u));return await Promise.all(i),o.length&&await N.events.group.usersDeleted(o.length,r,t),o}a(Vs,"removeUsers");async function Hs(e,t){let r=await _r(e);if(r.roles||(r.roles={}),t.appsToAdd)for(let n of t.appsToAdd)r.roles[n.appId]=n.roleId;if(t.appsToRemove)for(let n of t.appsToRemove)delete r.roles[n.appId];if(r.builder={apps:Object.entries(r.roles).filter(([n,o])=>o==="CREATOR").map(([n])=>n)},r.builder.apps.length&&!qs())throw new N.HTTPError("Feature not enabled, please check license",400);return await Gn(r)}a(Hs,"updateGroupApps");async function Vx(e){let t=await La(),r=[];for(let n of t)!n.roles||!n.roles[e]||(delete n.roles[e],r.push(n));return await z.bulkSave(r)}a(Vx,"cleanupApp");async function Hx(){if(!await Ds()){let e=N.tenancy.getGlobalDB(),r=(await La()||[]).filter(n=>Object.values(n?.roles||{}).includes("CREATOR"));for(let n of r){let o=await z.getGroupUsers(n._id),i=(await Promise.all(o.map(g=>e.get(g._id)))).map(g=>({...g,userGroups:g.userGroups.filter(h=>h!==n._id)})),c=(await N.userUtils.creatorsInList(i)).filter(g=>g).length,f=o.length-c;await z.save({...n,roles:{}}),f&&await vr(0,f)}}}a(Hx,"adjustGroupCreatorsQuotas");Ys.users.UserDB.init(ft,re,Ze);var Ke=Ys.users.UserDB;var Qn={};x(Qn,{logs:()=>ri});var ri={};x(ri,{logSearch:()=>aC,oldestLogDate:()=>Zf,storeLog:()=>nC});var jn=require("@budibase/backend-core"),Xf=require("@budibase/types");var ge=require("@budibase/backend-core"),$n=require("@budibase/types");var Vf=require("@budibase/backend-core");async function Hf(e,t){let r,n=5,o=!1,s,i=!0;for(;n>0;n--)try{i?s=await e():s=await exports.randomDelay(e),o=!0;break}catch(u){r=u}return o||Vf.logging.logWarn(`Failed to backoff: ${t}`,r),s}a(Hf,"backOff");var{SEPARATOR:wt,UNICODE_MAX:Yx,DocumentType:Yf,AutomationViewMode:zs,ViewName:zx,getQueryIndex:Jx}=ge.db,Xx=new Date(0).toISOString(),Zx=100,Js=a(async()=>sn($n.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS),"oldestLogDate");function zf(e,t,{status:r,automationId:n}={},o={}){let s=n?`${n}${wt}`:"",i=r?`${r}${wt}`:"",u;return r&&n?u=`${zs.ALL}${wt}${i}${s}`:r?u=`${zs.STATUS}${wt}${i}`:n?u=`${zs.AUTOMATION}${wt}${s}`:u=`${Yf.AUTOMATION_LOG}${wt}`,{...o,descending:!0,startkey:`${u}${t}${Yx}`,endkey:`${u}${e}`}}a(zf,"getAutomationLogParams");function eC(e,t,r){return`${Yf.AUTOMATION_LOG}${wt}${e}${wt}${r}${wt}${t}`}a(eC,"generateAutomationLogID");async function Xs(e,t,r={docs:!0}){let n=ge.context.getProdWorkspaceDB();await n.exists()||(n=ge.context.getDevWorkspaceDB());let o={status:r.status},s=r?.limit?r.limit:r?.paginate?9+1:void 0,i=zf(e,t,o,{include_docs:r.docs,limit:s});r?.page&&(i.startkey=r.page);let u=await n.allDocs(i);return oa(u,{paginate:r?.paginate,pageSize:9})}a(Xs,"getAllLogs");async function Zs(e,t,r={}){let n=ge.context.getProdWorkspaceDB();await n.exists()||(n=ge.context.getDevWorkspaceDB());let o;try{let s={automationId:r?.automationId,status:r?.status},i=zf(e,t,s,{include_docs:!0,limit:9+1});r?.page&&(i.startkey=r.page),o=await n.query(Jx(zx.AUTOMATION_LOGS),i)}catch(s){if(s!=null&&(s.name==="not_found"||s.error==="not_found"))return await Ec(),Zs(e,t,r);throw s}return oa(o,{paginate:!0,pageSize:9})}a(Zs,"getLogsByView");async function Jf(e,t){let r=ge.context.getProdWorkspaceDB(),n=e._id,o=e.name,s=new Date().toISOString(),i=eC(s,t.status,n),u={...t,automationId:n,status:t.status,automationName:o,createdAt:s,_id:i};return await r.put(u),i}a(Jf,"writeLog");async function ei(e,{clearing:t}={clearing:!1}){let r=ge.context.getProdWorkspaceDB();await Hf(async()=>{let n=await r.get(ge.db.DocumentType.WORKSPACE_METADATA);for(let o of e){let s=o.split(ge.db.SEPARATOR),i=`${s[s.length-3]}${ge.db.SEPARATOR}${s[s.length-2]}`,u={};n.automationErrors&&(u=n.automationErrors),Array.isArray(u[i])||(u[i]=[]);let c=u[i].indexOf(o);t&&c!==-1?u[i].splice(c,1):u[i].push(o),u[i].length===0&&delete u[i],n.automationErrors=u}await r.put(n),await ge.cache.workspace.invalidateWorkspaceMetadata(n.appId,n)},"Failed to update app metadata with automation log error")}a(ei,"updateAppMetadataWithErrors");async function tC(){let e=await Js();try{return await Xs(Xx,e,{docs:!1,paginate:!1,limit:Zx})}catch{return{data:[],hasNextPage:!1}}}a(tC,"getExpiredLogs");async function ti(){let e=ge.context.getProdWorkspaceDB();try{let t=await tC();if(!t.data||t.data.length===0)return;let r=t.data.map(o=>({_id:o.id,_rev:o.value.rev,_deleted:!0})),n=t.data.filter(o=>{let s=o.id.split(ge.db.SEPARATOR);return s[s.length-1]===$n.AutomationStatus.ERROR}).map(o=>o.id);await e.bulkDocs(r),n.length&&await ei(n,{clearing:!0})}catch(t){ge.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}a(ti,"clearOldHistory");var Zf=Js;async function rC(e,t,r,n){let o,s=new Date().toISOString(),i=await Zf();return(!e||e<i)&&(e=i),r||t?o=await Zs(e,s,{automationId:r,status:t,page:n}):o=await Xs(e,s,{status:t,page:n,docs:!0,paginate:!0}),o}a(rC,"getLogs");async function aC(e){return await ti(),await rC(e.startDate,e.status,e.automationId,e.page)}a(aC,"logSearch");async function nC(e,t){if(!jn.db.isProdWorkspaceID(jn.context.getWorkspaceId()))return;let r=await Jf(e,t);t.status===Xf.AutomationStatus.ERROR&&await ei([r]),await ti()}a(nC,"storeLog");var Kn={};x(Kn,{checkPluginQuotas:()=>iC,deletePlugin:()=>sC,storePlugin:()=>oC});var am=require("@budibase/types"),fe=require("@budibase/backend-core");var em=G(require("fs")),tm=require("path");function rm(e,t){return em.default.readFileSync((0,tm.join)(e,t),"utf8")}a(rm,"loadJSFile");async function oC(metadata,directory,source,origin){let db=fe.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=fe.objectStore.getPluginS3Dir(name),files=await fe.objectStore.uploadDirectory(fe.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===am.PluginType.DATASOURCE){let js=rm(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=fe.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}),origin&&origin.source==="github"&&(doc.origin=origin);let write=a(async()=>{let e=await db.put(doc);return await fe.events.plugin.imported(doc),{...doc,_rev:e.rev}},"write");return rev?await write():await Ws(write)}a(oC,"storePlugin");async function sC(e){let t=fe.tenancy.getGlobalDB();try{let r=await t.get(e),n=fe.objectStore.getPluginS3Dir(r.name);await fe.objectStore.deleteFolder(fe.objectStore.ObjectStoreBuckets.PLUGINS,n),await t.remove(e,r._rev),await fe.events.plugin.deleted(r),await $s()}catch(r){let n=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${n}`)}}a(sC,"deletePlugin");async function iC(){let e=fe.tenancy.getGlobalDB();try{let r=(await e.allDocs(fe.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await Qs(r)}catch(t){fe.logging.logAlert("Unable to retrieve plugins for quota check",t)}}a(iC,"checkPluginQuotas");var mt={};x(mt,{fetch:()=>cC,fetchValues:()=>pC,isEncryptionKeyAvailable:()=>uC,isValid:()=>sm,remove:()=>dC,update:()=>lC});var nm=require("@budibase/backend-core"),Pa=require("@budibase/types");function uC(){return!!nm.env.ENCRYPTION_KEY}a(uC,"isEncryptionKeyAvailable");async function cC(){let e=await jt.get();return Object.keys(e.variables)}a(cC,"fetch");async function pC(e){let r=(await jt.get()).variables,n={};for(let[o,s]of Object.entries(r))switch(e){case Pa.Environment.DEVELOPMENT:n[o]=s.development;break;case Pa.Environment.PRODUCTION:default:n[o]=s.production;break}return n}a(pC,"fetchValues");async function om(e){if(!(await ct.cache.getCachedLicense()).features.includes(Pa.Feature.ENVIRONMENT_VARIABLES))throw new Error("User does not have access to environment variables feature.");let r=await jt.get();r.variables=e(r.variables),await jt.update(r)}a(om,"changeValues");async function lC(e,t){if(sm(e))await om(n=>(n[e]=t,n));else throw new Error("Variable name has characters that are not allowed")}a(lC,"update");async function dC(e){await om(t=>(delete t[e],t))}a(dC,"remove");function sm(e){return/^[a-zA-Z0-9-_]+$/.test(e)}a(sm,"isValid");var kt={};x(kt,{definitions:()=>TC,download:()=>wC,fetch:()=>SC,write:()=>bC});var Pe=require("@budibase/backend-core"),Hn=require("@budibase/types");var ue=require("@budibase/backend-core"),tt=require("@budibase/types");var im=require("memorystream"),um=new ue.sql.Sql(tt.SqlClient.SQL_LITE);async function fC(e,t,r){let n={operation:tt.Operation.READ,table:or.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:tt.SortOrder.DESCENDING,type:tt.SortType.STRING}}},o=um._query(n);if(Array.isArray(o))throw new Error("Cannot execute multiple queries for audit log search");return{sql:o.sql,bindings:o.bindings}}a(fC,"getAuditLogSqlQuery");function mC(e){return`${ue.DocumentType.AUDIT_LOG}${ue.SEPARATOR}${e}${ue.SEPARATOR}${ue.utils.newid()}`}a(mC,"generateAuditLogID");async function cm(e){e._id||(e._id=mC(e.timestamp)),e.type||(e.type=tt.AUDIT_LOG_TYPE);try{let r=await ue.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){ue.logging.logAlert("Failed to write audit log",t)}}a(cm,"save");async function ai(e,t,r){t||(t=1);let n=ue.context.getAuditLogsDB();try{let o=9+1,s=await fC(e,t,o),i=or.searchTable(),u=um.convertJsonStringColumns(i,await n.sql(s.sql,s.bindings)),c;u.length>o&&(c=u.pop());let f={rows:u,hasNextPage:!!c};return f.hasNextPage&&(f.bookmark=t+1),f}catch(o){if(o.status===404&&!r?.isRetry)return await gC(),await pc(),await ai(e,t,{isRetry:!0});throw o}}a(ai,"searchSQL");async function gC(){let e=ue.context.getAuditLogsDB(),r=(await e.allDocs(ue.db.getDocParams(ue.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(n=>n.doc).filter(n=>n&&!n.type).map(n=>({...n,type:tt.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}a(gC,"migrate");function pm(e){let t=ue.context.getAuditLogsDB(),r=new im,n=t.dump(r,{filter:s=>{let i=s;if(!i._id?.startsWith(ue.DocumentType.AUDIT_LOG))return!1;let u=!0,c=a((f,g)=>{!f||f.length===0||(u=!!(u&&g&&f.includes(g)))},"matcher");if(c(e.userIds,i.userId),c(e.appIds,i.appId),c(e.events,i.event),(e.startDate||e.endDate)&&(u=u&&i.timestamp>=e.startDate&&i.timestamp<=e.endDate),e.fullSearch){let f=JSON.stringify(s);u=u&&f.includes(e.fullSearch)}return u}}),o=new im;return r.on("data",s=>{let i=JSON.parse(Buffer.from(s).toString());if(Array.isArray(i.docs)){let u="";for(let c of i.docs)u+=JSON.stringify(c)+`
|
|
38
|
+
`;o.write(u)}}),r.on("end",()=>{o.end()}),{promise:n,stream:o}}a(pm,"dump");var Ua=require("@budibase/backend-core"),qa=require("@budibase/string-templates"),Vn=require("@budibase/types");var yC=Ua.constants.MIN_VALID_DATE.toISOString(),AC=Ua.constants.MAX_VALID_DATE.toISOString();function ni(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||yC,e.endDate=e.endDate||AC),e}a(ni,"fillDates");async function lm(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(n=>Ua.db.getProdWorkspaceID(n)));let t={};function r(n,o){o?.length&&(t.oneOf={...t.oneOf,[n]:o})}return a(r,"addStringParams"),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=ni(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}a(lm,"getSearchFilters");function oi(e,t,r){let n={_id:e,status:Vn.AuditLogResourceStatus.DELETED};switch(t){case"app":n.name=r?.appName;break;case"user":n.email=r?.email;break}return n}a(oi,"deleted");function si(e){let t=(0,qa.findHBSBlocks)(e);for(let r of t){let n=` "${r}"`;e=e.replace(e.includes(n)?n:` ${r}`,""),e=(0,qa.processStringSync)(e,{})}return e}a(si,"removeTemplateStrings");function dm(e,t){let r=Vn.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let n=(0,qa.processStringSync)(r,t);return n.includes('""')&&(n=si(r)),n}a(dm,"getEventFriendlyName");async function bC(e,t,r){if(!await Pn()||!Pe.utils.isAudited(e))return;let n=dm(e,t),o=new Date;r?.timestamp&&(o=new Date(r.timestamp));let s={timestamp:o.toISOString(),event:e,name:n,userId:r?.userId||Hn.AuditLogSystemUser,metadata:{...t,...r?.hostInfo}},i={};try{if(r?.appId){s.appId=Pe.db.getProdWorkspaceID(r.appId);let u=await Pe.cache.workspace.getWorkspaceMetadata(r.appId);"name"in u&&(i.appName=u.name)}if(r?.userId){let u=await Pe.users.getById(r?.userId);i.email=u.email}}catch(u){Pe.logging.logAlert("Failed to retrieve fallback information for audit log",u)}return s.fallback=i,await cm(s)}a(bC,"write");async function IC(e){let t=e.map(u=>u.userId),n=e.filter(u=>u.appId).map(u=>Pe.db.getDevWorkspaceID(u.appId)),o=await Pe.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),s=await Pe.db.getWorkspacesByIDs([...new Set(n)]),i=[];for(let u of e){let c=o.find(h=>h?._id===u.userId),f=s.find(h=>Pe.db.isSameWorkspaceID(h?.appId,u.appId)),g={event:u.event,timestamp:u.timestamp,name:u.name,metadata:u.metadata,user:c||oi(u.userId,"user",u.fallback)};u.appId&&(g.app=f||oi(u.appId,"app",u.fallback)),i.push(g)}return i}a(IC,"enrich");async function SC(e){if(!await Pn())throw new Error("Audit logs not available - license required.");let t=await lm(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await ai(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await IC(r.rows)}}a(SC,"fetch");function wC(e){return e=ni(e),pm(e)}a(wC,"download");function TC(){let e=Object.entries(Hn.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=si(r[1]);return t}a(TC,"definitions");var Yn={};x(Yn,{applications:()=>pi,roles:()=>ui,users:()=>ii});var ii={};x(ii,{roleCheck:()=>RC});function EC(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}a(EC,"removeRoles");async function RC(e,t){return await It()||EC(e,t),e}a(RC,"roleCheck");var ui={};x(ui,{assign:()=>vC,unAssign:()=>_C});var Da=require("@budibase/backend-core");async function vC(e,t){if(!await It())throw new Error("Unable to assign roles - license required.");let r=await Ke.bulkGet(e);for(let n of r){if(t.role&&t.role.roleId){let o=Da.db.getProdWorkspaceID(t.role.appId);n.roles[o]=t.role.roleId}if(t.appBuilder){let o=Da.db.getProdWorkspaceID(t.appBuilder.appId),s=n.builder?.apps||[];n.builder={apps:s.concat([o])}}t.builder&&(n.builder={global:!0}),t.admin&&(n.admin={global:!0}),n.roles}await Ke.bulkUpdate(r)}a(vC,"assign");async function _C(e,t){if(!await It())throw new Error("Unable to un-assign roles - license required.");let r=await Ke.bulkGet(e);for(let n of r){if(t.role){let o=Da.db.getProdWorkspaceID(t.role?.appId);n.roles[o]===t.role.roleId&&delete n.roles[o]}if(t.appBuilder&&n.builder?.apps){let o=Da.db.getProdWorkspaceID(t.appBuilder.appId);n.builder.apps=n.builder.apps.filter(s=>s!==o)}t.builder&&n.builder&&delete n.builder,t.admin&&n.admin&&delete n.admin}}a(_C,"unAssign");var pi={};x(pi,{buildExportFn:()=>CC,buildImportFn:()=>xC});var ci=require("@budibase/backend-core");function xC(e){return async(t,r)=>{await It()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await ci.context.doInWorkspaceContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}a(xC,"buildImportFn");function CC(e){return async(t,r)=>{await It()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:n,excludeRows:o}=t.request.body;await ci.context.doInWorkspaceContext(t.params.appId,async()=>{t.request.body={encryptPassword:n,excludeRows:o},t.query.appId=t.params.appId,await e(t),await r()})}}a(CC,"buildExportFn");var Se=require("@budibase/backend-core"),Ie=require("@budibase/types"),gm=G(require("fs")),hm=require("path");var li=require("@budibase/backend-core");var fm;function mm(){fm=new li.queue.BudibaseQueue(li.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}a(mm,"init");function Jt(){return fm}a(Jt,"getBackupQueue");async function di(e,t={}){return je.storeAppBackupMetadata(e,t)}a(di,"storeAppBackupMetadata");function ym(e){let t=new Date().toISOString();switch(e){case Ie.BackupStatus.COMPLETE:case Ie.BackupStatus.FAILED:return{timestamp:t,finishedAt:t};case Ie.BackupStatus.STARTED:return{timestamp:t,startedAt:t};case Ie.BackupStatus.PENDING:return{timestamp:t,createdAt:t}}}a(ym,"getTimestamps");async function OC(e,t,r,n){let o=await zn(e);return await je.storeAppBackupMetadata({...o,...ym(t),contents:r,status:t,type:Ie.BackupType.BACKUP},{filename:n,docId:e})}a(OC,"updateBackupStatus");async function LC(e,t,r){let n=await zn(e);return await je.storeAppBackupMetadata({...n,...ym(r),status:r,type:Ie.BackupType.RESTORE,trigger:Ie.BackupTrigger.MANUAL},{docId:e,docRev:t})}a(LC,"updateRestoreStatus");async function zn(e){return je.getAppBackupMetadata(e)}a(zn,"getAppBackup");async function PC(e,t){return je.updateAppBackupMetadata(e,t)}a(PC,"updateAppBackup");async function Am(e){let t=await je.getAppBackupMetadata(e);return t.filename&&await Se.objectStore.deleteFile(Se.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),je.deleteAppBackupMetadata(e)}a(Am,"deleteAppBackup");async function UC(e){let t=[];for(let r of e)try{await Am(r),t.push({backupId:r,success:!0})}catch(n){t.push({backupId:r,success:!1,error:n instanceof Error?n.message:"Unknown error"})}return t}a(UC,"deleteAppBackups");async function qC(e,t){return je.fetchAppBackups(e,t)}a(qC,"fetchAppBackups");async function bm(e){let t=await je.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let{stream:r}=await Se.objectStore.getReadStream(Se.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}a(bm,"getBackupDownloadStream");async function DC(e){let{stream:t}=await bm(e),r=(0,hm.join)(Se.objectStore.budibaseTempDir(),Se.utils.newid()),n=gm.default.createWriteStream(r);return new Promise((o,s)=>{t.on("error",s),n.on("error",s),t.pipe(n).on("close",()=>o(r))})}a(DC,"downloadAppBackup");async function kC(e,t,r={}){let n;try{n=await di({appId:e,trigger:t,timestamp:new Date().toISOString(),status:Ie.BackupStatus.PENDING,type:Ie.BackupType.BACKUP,...r})}catch(o){if(o.status===409)return;throw o}return await Jt().add({docId:n.id,docRev:n.rev,appId:e,export:{trigger:t,...r}}),await Se.events.backup.appBackupTriggered(e,n.id,Ie.BackupType.BACKUP,t,r?.name),n.id}a(kC,"triggerAppBackup");async function MC(e,t,r,n){let o=await zn(t),s;try{s=await di({appId:e,timestamp:new Date().toISOString(),status:Ie.BackupStatus.PENDING,type:Ie.BackupType.RESTORE,createdBy:n})}catch(i){if(i?.status===409)return;throw i}return await Jt().add({appId:e,docId:s.id,docRev:s.rev,import:{nameForBackup:r,backupId:t,createdBy:n}}),{restoreId:s.id,metadata:o}}a(MC,"triggerAppRestore");async function NC(e,t,r){let n=Se.db.getProdWorkspaceID(e);await Se.context.doInWorkspaceContext(n,async()=>{let o=Se.context.getProdWorkspaceDB();if(!await o.exists())return;let i=await o.tryGet(Ie.DocumentType.WORKSPACE_METADATA);i&&(i.backupErrors||(i.backupErrors={}),i.backupErrors[t]||(i.backupErrors[t]=[]),i.backupErrors[t].push(r),await o.put(i),await Se.cache.workspace.invalidateWorkspaceMetadata(i.appId,i))})}a(NC,"trackBackupError");var BC={isEnabled:Ps,triggerAppRestore:xe(MC),triggerAppBackup:xe(kC),getBackupDownloadStream:xe(bm),downloadAppBackup:xe(DC),fetchAppBackups:xe(qC),storeAppBackupMetadata:xe(di),updateBackupStatus:xe(OC),updateRestoreStatus:xe(LC),getAppBackup:xe(zn),updateAppBackup:xe(PC),deleteAppBackup:xe(Am),deleteAppBackups:xe(UC),trackBackupError:xe(NC)},Ve=BC;var mi={};x(mi,{init:()=>fi});var ae=require("@budibase/backend-core"),rt=require("@budibase/types"),xr=G(require("fs"));async function fi(e){Jt().process(async t=>{let r=t.data;try{if(r.export)return console.log("Exporting app backup:",r.appId,r.export.trigger),WC(t,e);if(r.import)return console.log("Importing app backup:",r.appId,r.import.backupId),FC(t,e)}catch(n){ae.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,n)}})}a(fi,"init");async function GC(e){await ae.db.getDB(e,{skip_setup:!0}).destroy()}a(GC,"removeExistingApp");async function Im(e,t,r,n){let o=ae.db.getDevWorkspaceID(r),s=ae.db.getProdWorkspaceID(r),i=new Date().toISOString(),u=a(async(c,f)=>{n?.doc?await Ve.updateBackupStatus(n.doc.id,c,f?.contents,f?.filename):await Ve.storeAppBackupMetadata({appId:s,timestamp:i,trigger:e,status:c,name:n?.name,type:rt.BackupType.BACKUP,contents:f?.contents,createdBy:n?.createdBy},{filename:f?.filename})},"updateMetadata");try{let c=await n.processing.exportAppFn(o,{tar:!0}),f=await n.processing.statsFn(o),g=`${s}/backup-${i}.tar.gz`,h=ae.objectStore.ObjectStoreBuckets.BACKUPS,y=xr.default.createReadStream(c);await ae.objectStore.streamUpload({bucket:h,filename:g,stream:y,extra:{type:"application/gzip",metadata:{name:n?.name,trigger:e,timestamp:i,appId:s}}}),await u(rt.BackupStatus.COMPLETE,{filename:g,contents:f}),xr.default.existsSync(c)&&xr.default.rmSync(c)}catch(c){ae.logging.logAlert("App backup error",c),await u(rt.BackupStatus.FAILED);let f=n?.doc?.id||`backup-${i}`,g=c instanceof Error?c.message:String(c);await Ve.trackBackupError(s,f,`Backup export failed: ${g}`)}}a(Im,"runBackup");async function FC(e,t){let r=e.data,n=r.appId,o=r.import.backupId,s=r.import.nameForBackup,i=r.import.createdBy,u=ae.tenancy.getTenantIDFromWorkspaceID(n);return ae.tenancy.doInTenant(u,async()=>{let c=ae.db.getDevWorkspaceID(n),f=`${c}_temp_${Date.now()}`,{rev:g}=await Ve.updateRestoreStatus(r.docId,r.docRev,rt.BackupStatus.STARTED);await Im(rt.BackupTrigger.RESTORING,u,n,{processing:t,createdBy:i,name:s});let h=await Ve.downloadAppBackup(o),y=rt.BackupStatus.COMPLETE;try{await t.importAppFn(f,ae.db.getDB(f),{file:{type:"application/gzip",path:h},key:h}),await GC(c),await new ae.db.Replication({source:f,target:c}).replicate()}catch(E){ae.logging.logAlert("App restore error",E),y=rt.BackupStatus.FAILED;let M=E instanceof Error?E.message:String(E);await Ve.trackBackupError(n,o,`Backup restore failed: ${M}`)}finally{try{await ae.db.getDB(f,{skip_setup:!0}).destroy()}catch{}}await Ve.updateRestoreStatus(r.docId,g,y),xr.default.existsSync(h)&&xr.default.rmSync(h,{force:!0})})}a(FC,"importProcessor");async function WC(e,t){let r=e.data,n=r.appId,o=r.export.trigger,s=r.export.name,i=ae.tenancy.getTenantIDFromWorkspaceID(n);await ae.tenancy.doInTenant(i,async()=>{try{let{rev:u}=await Ve.updateBackupStatus(r.docId,rt.BackupStatus.STARTED);return Im(o,i,n,{processing:t,doc:{id:r.docId,rev:u},name:s})}catch(u){ae.logging.logAlert("App backup error",u);let c=u instanceof Error?u.message:String(u);await Ve.trackBackupError(n,r.docId,`Backup export failed: ${c}`)}})}a(WC,"exportProcessor");var $C=a(async e=>{mm(),await fi(e.processing)},"init"),Be={...Ve,processing:mi,init:$C,getBackupQueue:Jt};var Sm=a(async e=>{e.backups&&await Be.init(e.backups)},"init");var qe={};x(qe,{create:()=>kN,find:()=>DN,get:()=>qN,remove:()=>NN,update:()=>MN});var $A=G(uu()),Tt=require("@budibase/backend-core");var jA=require("@budibase/types");async function qN(e){let t=Tt.tenancy.getGlobalDB(),r=new Tt.db.QueryBuilder(t.name,jA.SearchIndex.USER);r.setIndexBuilder(Tt.db.searchIndexes.createUserIndex),r.setLimit(e.pageSize),r.addEqual("scimInfo.isSync",!0);for(let[o,s]of Object.entries(e.filters?.equal??{}))r.addEqual(o,s);r.setSort("_id"),r.setSkip(e.skip);let n=await r.run();return{users:n.rows,total:n.totalRows}}a(qN,"get");async function DN(e){return await Tt.users.getById(e)}a(DN,"find");async function kN(e){let t=await Ke.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new Tt.HTTPError("User is already synched",409);e={...t,scimInfo:(0,$A.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await Ke.save(e,{requirePassword:!1})}a(kN,"create");async function MN(e,t){return await Ke.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}a(MN,"update");async function NN(e){return await Ke.destroy(e)}a(NN,"remove");var qr={};x(qr,{create:()=>BN});var QA=G(uu());var KA=require("@budibase/backend-core");async function BN(e){let t=await Mo(e.name),r;if(!t)r=(await re.save(e)).id;else{if(t.scimInfo?.isSync)throw new KA.HTTPError("Group is already synched",409);r=t._id,t.users&&(await re.removeUsers(r,t.users.map(o=>o._id)),delete t.users),t.scimInfo=(0,QA.default)(t.scimInfo,e.scimInfo),await re.save(t)}return await re.get(r)}a(BN,"create");var Zt={};x(Zt,{logRequest:()=>WN,logResponse:()=>$N});var at=require("@budibase/backend-core"),HA=G(VA());var{DocWritethrough:GN}=at.cache.docWritethrough;function FN(){return`${at.db.DocumentType.SCIM_LOG}${at.db.SEPARATOR}${(0,HA.default)().format("YYYYMMDD")}`}a(FN,"getLogDocId");var YA=a(()=>{let e=at.context.getScimDBName();return new GN(at.db.getDB(e),FN())},"getDB");async function WN(e){at.logging.logWarn("SCIM request log",e);let t=Date.now().toString();return await YA().patch({[`${t}_request`]:{ts:new Date().toISOString(),...e}}),t}a(WN,"logRequest");async function $N(e,t){at.logging.logWarn("SCIM response",t),await YA().patch({[`${e}_response`]:{ts:new Date().toISOString(),...t}})}a($N,"logResponse");var yu={};x(yu,{doInScimContext:()=>du,feature:()=>we,internalGroupOnly:()=>Ga,licenseAuth:()=>hu,licensing:()=>zA,requireSCIM:()=>fu,scimGroupOnly:()=>Ba,scimUserOnly:()=>Na});var Mt=require("@budibase/backend-core");var co=require("@budibase/types");var jN=a((e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(Mt.env.SELF_HOSTED&&Mt.env.DEFAULT_LICENSE)return t.user.license=No,r();t.user.license=await ct.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(Mt.utils.isServingApp(t)||Mt.utils.isServingBuilder(t)||Mt.utils.isServingBuilderPreview(t)||Mt.utils.isPublicApiRequest(t))&&await ft.usageLimitIsExceeded({name:co.StaticQuotaName.USERS,type:co.QuotaUsageType.STATIC,usageChange:0})}return r()},"licensing"),zA=jN;var we={};x(we,{requireFeature:()=>QN,requireFeatures:()=>KN});var QN=a(e=>async(t,r)=>{await Ln(e),await r()},"requireFeature"),KN=a((...e)=>async(t,r)=>{await Ls(e),await r()},"requireFeatures");var po=require("@budibase/backend-core");var du=a(async(e,t)=>{let r;return po.env.ENABLE_SCIM_LOGGER&&(r=await Zt.logRequest({...e.request.toJSON(),body:e.request.body})),await po.context.doInScimContext(async()=>{let n=await t();return r&&await Zt.logResponse(r,{...e.response.toJSON(),body:e.response.body}),n})},"doInScimContext");var fu=a(async(e,t)=>{await ks(),await t()},"requireSCIM");var JA=require("@budibase/backend-core");var Na=a(e=>mu(JA.users.getById,e,!0),"scimUserOnly"),Ba=a(e=>mu(z.get,e,!0),"scimGroupOnly"),Ga=a(e=>mu(z.get,e,!1),"internalGroupOnly");function mu(e,t,r){return async(n,o)=>{let s=n.params[t];return typeof s!="string"&&n.throw(404),!!(await e(s)).scimInfo?.isSync!==r&&n.throw(404),o()}}a(mu,"scimSyncChecks");var Fa=require("@budibase/backend-core");var gu=require("dd-trace");async function hu(e,t){await gu.tracer.trace("licenseAuth",async r=>{let n=e.request.headers[Fa.constants.Header.LICENSE_KEY];Array.isArray(n)&&(n=n[0]),r.addTags({licenseKey:n}),n||e.throw(403,"License key not provided");let o=await _s(n);o||(r.addTags({licenseFound:!1}),e.throw(403,"License not found or invalid")),o.tenantId||e.throw(403,"License does not have a tenant ID"),gu.tracer.setUser({id:"anonymous",tenantId:o.tenantId}),await Fa.context.doInSelfHostTenantUsingCloud(o.tenantId,async()=>{await Fa.context.doInLicenseContext(o,async()=>{await t()})})})}a(hu,"default");var Tu={};x(Tu,{appBackups:()=>ib,auditLogs:()=>hb,environmentVariables:()=>Rb,groups:()=>Mb,scim:()=>fI});var Et=require("@budibase/backend-core"),fo=require("@budibase/types"),ob=G(require("@koa/router")),tr=G(require("joi"));var lo=require("@budibase/backend-core"),Au=require("@budibase/types");async function er(e,t){t||e.throw(400,"App ID missing"),await cr.workspaceExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}a(er,"checkAppID");async function XA(e){let t=e.params.appId;await er(e,t);let{body:r}=e.request,n=e.user?._id,o=await Be.triggerAppBackup(t,Au.BackupTrigger.MANUAL,{name:r.name,createdBy:n});o||e.throw(500,"Unable to start backup."),e.body={backupId:o,message:"Backup triggered - process starting."}}a(XA,"manualBackup");async function ZA(e){let t=e.params.appId;await er(e,t);let r=e.params.backupId,n=e.request.body.name,o=await Be.triggerAppRestore(t,r,n,e.user?._id);o||e.throw(500,"Unable to start restore."),await lo.events.backup.appBackupRestored(o.metadata),e.body={restoreId:o?.restoreId,message:"Restore triggered - process starting."}}a(ZA,"importBackup");async function eb(e){let t=e.params.appId;await er(e,t);let r=e.params.backupId;await Be.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}a(eb,"deleteBackup");async function tb(e){let t=lo.context.getWorkspaceId();await er(e,t);let{backupIds:r}=e.request.body;(!Array.isArray(r)||r.length===0)&&e.throw(400,"backupIds must be a non-empty array");let n=await Be.deleteAppBackups(r),o=n.filter(i=>i.success).length,s=n.length-o;e.body={message:`${o} backups deleted successfully${s>0?`, ${s} failed`:""}.`,results:n,successCount:o,failureCount:s}}a(tb,"deleteBackups");async function rb(e){let t=e.params.appId;await er(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(Au.BackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await Be.fetchAppBackups(t,{paginate:!0,...r})}a(rb,"fetchBackups");async function ab(e){let t=e.params.appId;await er(e,t);let r=e.params.backupId,n=e.request.body;e.body=await Be.updateAppBackup(r,n.name)}a(ab,"updateBackup");async function nb(e){let t=e.params.appId;await er(e,t);let r=e.params.backupId,{metadata:n,stream:o}=await Be.getBackupDownloadStream(r);e.attachment(`backup-${n.timestamp}.tar.gz`),e.body=o}a(nb,"downloadBackup");var sb=new ob.default;function HN(){return Et.auth.joiValidator.body(tr.default.object({trigger:tr.default.string().valid(...Object.values(fo.BackupTrigger)),type:tr.default.string().valid(...Object.values(fo.BackupType)),startDate:tr.default.date(),endDate:tr.default.date(),page:tr.default.string()}))}a(HN,"validateBackupSearch");sb.post("/api/apps/:appId/backups",Et.auth.builderOrAdmin,XA).post("/api/apps/:appId/backups/search",Et.auth.builderOrAdmin,HN(),rb).get("/api/apps/:appId/backups/:backupId/file",Et.auth.builderOrAdmin,nb).patch("/api/apps/:appId/backups/:backupId",Et.auth.builderOrAdmin,ab).delete("/api/apps/:appId/backups/:backupId",Et.auth.builderOrAdmin,eb).delete("/api/apps/:appId/backups",Et.auth.builderOrAdmin,tb).post("/api/apps/:appId/backups/:backupId/import",Et.auth.builderOrAdmin,ZA);var ib=sb;var bu=require("@budibase/backend-core");async function ub(e){let t=e.request.body,r=await kt.fetch(t);await bu.events.auditLog.filtered(t),e.body=r}a(ub,"search");async function cb(e){let t=e.request.body,{stream:r}=kt.download(t);await bu.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}a(cb,"download");async function pb(e){e.body={events:kt.definitions()}}a(pb,"definitions");var fb=require("@budibase/types"),rr=require("@budibase/backend-core"),mb=G(require("@koa/router")),He=G(require("joi"));function lb(){return rr.auth.joiValidator.body(He.default.object({userIds:He.default.array().items(He.default.string()).optional(),appIds:He.default.array().items(He.default.string()).optional(),events:He.default.array().items(He.default.string().valid(...Object.values(fb.Event))).optional(),startDate:He.default.string().optional().allow(""),endDate:He.default.string().optional().allow(""),fullSearch:He.default.string().optional().allow(""),bookmark:He.default.number()}))}a(lb,"buildAuditLogSearchValidator");var gb=new mb.default;gb.post("/api/global/auditlogs/search",rr.auth.adminOnly,lb(),ub).get("/api/global/auditlogs/download",rr.auth.adminOnly,rr.middleware.querystringToBody,lb(),cb).get("/api/global/auditlogs/definitions",rr.auth.adminOnly,pb);var hb=gb;var Su=require("@budibase/backend-core"),Iu=require("@budibase/types");async function yb(e){e.body={encryptionKeyAvailable:mt.isEncryptionKeyAvailable()}}a(yb,"status");async function Ab(e){e.body={variables:await mt.fetch()}}a(Ab,"fetch");async function bb(e){let{name:t,production:r,development:n}=e.request.body;await mt.update(t,{production:r,development:n});let o=[Iu.Environment.PRODUCTION];r!==n&&o.push(Iu.Environment.DEVELOPMENT),await Su.events.environmentVariable.created(t,o),e.body={message:`Environment variable "${t}" created.`}}a(bb,"create");async function Ib(e){let{production:t,development:r}=e.request.body,n=e.params.varName;await mt.update(n,{production:t,development:r}),e.body={message:`Environment variable "${n}" updated.`}}a(Ib,"update");async function Sb(e){let t=e.params.varName;await mt.remove(t),await Su.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}a(Sb,"destroy");var ar=require("@budibase/backend-core"),Tb=G(require("@koa/router")),Wa=G(require("joi"));var Eb=new Tb.default;function wb(){return ar.auth.joiValidator.body(Wa.default.object({name:Wa.default.string().optional(),production:Wa.default.string().required(),development:Wa.default.string().required()}))}a(wb,"buildEnvVarUpdateValidator");Eb.get("/api/env/variables/status",ar.auth.builderOrAdmin,yb).get("/api/env/variables",ar.auth.builderOrAdmin,Ab).post("/api/env/variables",ar.auth.builderOrAdmin,wb(),bb).patch("/api/env/variables/:varName",ar.auth.builderOrAdmin,wb(),Ib).delete("/api/env/variables/:varName",ar.auth.builderOrAdmin,Sb);var Rb=Eb;var gt=require("@budibase/backend-core"),Rt=require("@budibase/types"),Db=G(require("@koa/router")),Ce=G(require("joi"));var vb=require("@budibase/backend-core");async function _b(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let n=await _r(t._id);t.roles=n.roles,t.scimInfo=n.scimInfo}let r=await Gn(t);e.body={_id:r.id,_rev:r.rev}}a(_b,"save");async function xb(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of users to add or to remove");let o,s;r&&(o=await Fn(t,r)),n&&(s=await Vs(t,n)),e.body={added:o,removed:s}}a(xb,"updateGroupUsers");async function Cb(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of objects, with appId and roleId to add or remove"),e.body=await Hs(t,{appsToAdd:r,appsToRemove:n})}a(Cb,"updateGroupApps");async function Ob(e){e.body={data:await La()}}a(Ob,"fetch");async function Lb(e){let{groupId:t,rev:r}=e.params;try{await Ks(t,r),e.body={message:"Group deleted successfully"}}catch(n){e.throw(n.status,n)}}a(Lb,"destroy");async function Pb(e){try{e.body=await _r(e.params.groupId)}catch(t){e.throw(t.status,t)}}a(Pb,"find");async function Ub(e){let{pageSize:t=10,bookmark:r,emailSearch:n}=e.request.query,o=e.params.groupId,s={limit:t+1},i=await nn(o,{...s,emailSearch:n,bookmark:r}),u=n?i[t]?.email:i[t]?._id,c=!!u;e.body={users:i.slice(0,t),bookmark:u,hasNextPage:c}}a(Ub,"searchUsers");async function qb(e){let{groupId:t}=e.params,{csvContent:r}=e.request.body;(r===void 0||r.trim().length===0)&&e.throw(400,"CSV is empty");let n=await vb.csv.jsonFromCsvString(r,{allowSingleColumn:!0});(!n||n.length===0)&&e.throw(400,"CSV file is invalid");let s=Object.keys(n[0]).find(h=>/^(email|e-mail|email address|mail|e_mail)$/i.test(h.trim()));s||e.throw(400,"CSV file must contain an email column");let i=Array.from(new Set(n.map(h=>h[s]).filter(h=>h&&typeof h=="string"&&h.trim().length>0).map(h=>h.trim())));i.length===0&&e.throw(400,"No valid email addresses found in CSV");try{await _r(t)}catch(h){if(h.status===404)e.throw(404,"Group not found");else throw h}let u=[],c=[],f=[],g=await Promise.all(i.map(h=>Ke.getUserByEmail(h)));for(let h of i){let y=g.find(E=>E?.email===h);y?(u.push({_id:y._id,email:y.email}),f.push(y._id)):c.push({email:h,reason:"User not found"})}f.length>0&&await Fn(t,f),e.body={added:u,skipped:c}}a(qb,"bulkAddUsersFromCsv");var kb=new Db.default;function XN(){return gt.auth.joiValidator.body(Ce.default.object({_id:Ce.default.string().optional(),_rev:Ce.default.string().optional(),color:Ce.default.string().required(),icon:Ce.default.string().required(),name:Ce.default.string().trim().required().max(50),role:Ce.default.string().optional(),users:Ce.default.array().optional(),apps:Ce.default.array().optional(),roles:Ce.default.object().optional(),createdAt:Ce.default.string().optional(),updatedAt:Ce.default.string().optional()}).required())}a(XN,"buildGroupSaveValidation");kb.post("/api/global/groups",gt.auth.adminOnly,we.requireFeature(Rt.Feature.USER_GROUPS),XN(),_b).get("/api/global/groups",we.requireFeature(Rt.Feature.USER_GROUPS),Ob).delete("/api/global/groups/:groupId/:rev",we.requireFeature(Rt.Feature.USER_GROUPS),gt.auth.adminOnly,Ga("groupId"),Lb).get("/api/global/groups/:groupId",we.requireFeature(Rt.Feature.USER_GROUPS),gt.auth.builderOrAdmin,Pb).get("/api/global/groups/:groupId/users",we.requireFeature(Rt.Feature.USER_GROUPS),gt.auth.builderOrAdmin,Ub).post("/api/global/groups/:groupId/users",gt.auth.adminOnly,we.requireFeature(Rt.Feature.USER_GROUPS),Ga("groupId"),xb).post("/api/global/groups/:groupId/users/bulk",gt.auth.adminOnly,we.requireFeature(Rt.Feature.USER_GROUPS),Ga("groupId"),gt.auth.joiValidator.body(Ce.default.object({csvContent:Ce.default.string().required()}).required()),qb).post("/api/global/groups/:groupId/apps",gt.auth.builderOrAdmin,we.requireFeature(Rt.Feature.USER_GROUPS),Cb);var Mb=kb;var dI=G(require("@koa/router"));var mo=require("scim-patch");var Bb=require("@budibase/backend-core");function Nb(e,t){let r=e.request.query[t];if(r!==void 0)return+r}a(Nb,"tryGetQueryAsNumber");var Gb=a(async e=>{let t=Nb(e,"pageSize")??20,r=Nb(e,"startIndex"),n;e.request.query.filter&&(n=ce.user.userFilters(e.request.query.filter));let o=await qe.get({pageSize:t,skip:r,filters:n});e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:o.total,Resources:o.users.map(ce.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},"get"),Fb=a(async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await qe.find(t);e.body=ce.user.toScimUserResponse(r)},"find"),Wb=a(async e=>{let t=ce.user.fromScimUser(e.request.body);try{let r=await qe.create(t);e.body=ce.user.toScimUserResponse(r)}catch(r){throw r instanceof Bb.EmailUnavailableError&&e.throw(409,"Email already in use"),r}},"create");function ZN(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}a(ZN,"isDeactivation");var $b=a(async e=>{let t=await qe.find(e.params.id);t||e.throw(404);let r=ce.user.toScimUserResponse(t),n=e.request.body;try{(0,mo.patchBodyValidation)(n)}catch{}if(ZN(n))return wu(e);let o;try{o=(0,mo.scimPatch)(r,n.Operations)}catch{}o||e.throw(500);let s=ce.user.fromScimUser(o);await qe.update(s,{allowChangingEmail:!0}),e.body=ce.user.toScimUserResponse(s)},"update"),wu=a(async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await qe.remove(t),e.status=204},"remove");var nI=G(aI()),oI=require("@budibase/shared-core"),go=require("scim-patch");var ho=require("scim2-parse-filter");function sI(e,t){for(let r of t.split(","))delete e[r]}a(sI,"cleanResponse");var iI=a(async e=>{let r=(await re.fetch()).filter(s=>s.scimInfo?.isSync).map(ce.group.toScimGroupResponse),{filter:n,excludedAttributes:o}=e.request.query;if(n){let s=(0,ho.filter)((0,ho.parse)(n));r=r.filter(s)}o&&r.forEach(s=>{sI(s,o)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},"get"),uI=a(async e=>{let t=ce.group.fromScimGroup(e.request.body),r=await qr.create(t);e.body=ce.group.toScimGroupResponse(r)},"create"),cI=a(async e=>{let{id:t}=e.params,r=await re.get(t),n=ce.group.toScimGroupResponse(r),{excludedAttributes:o}=e.request.query;o&&sI(n,o),e.body=n},"find"),pI=a(async e=>{let{id:t}=e.params,r=await re.get(t);await re.remove(t,r._rev),e.status=204},"remove"),lI=a(async e=>{let{id:t}=e.params,r=await re.get(t),n=ce.group.toScimGroupResponse(r),o=e.request.body;try{(0,go.patchBodyValidation)(o)}catch{e.throw(400)}let{true:s,false:i}=(0,nI.default)(o.Operations,u=>u.path==="members");if(i?.length){let u=(0,go.scimPatch)(n,i);u||e.throw(500);let c={...ce.group.fromScimGroup(u),_rev:r._rev};await re.save(c)}if(s?.length){let u=[],c=[];for(let{op:f,value:g}of s)switch(f){case"add":case"Add":for(let h of g)u.push(await qe.find(h.value));break;case"remove":case"Remove":for(let h of g)try{c.push(await qe.find(h.value))}catch(y){if(y.status!==404)throw y}break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:oI.utils.unreachable(f)}u.length&&await re.addUsers(t,u.map(f=>f._id)),c.length&&await re.removeUsers(t,c.map(f=>f._id))}e.body=ce.group.toScimGroupResponse(await re.get(t))},"update");var $a=require("@budibase/types"),Ge=new dI.default({prefix:"/api/global/scim/v2"});Ge.use(fu);Ge.use(du);Ge.get("/users",Gb);Ge.get("/users/:id",Na("id"),Fb);Ge.post("/users",Wb);Ge.patch("/users/:id",Na("id"),$b);Ge.delete("/users/:id",Na("id"),wu);Ge.get("/groups",iI);Ge.post("/groups",we.requireFeature($a.Feature.USER_GROUPS),uI);Ge.get("/groups/:id",we.requireFeature($a.Feature.USER_GROUPS),Ba("id"),cI);Ge.delete("/groups/:id",we.requireFeature($a.Feature.USER_GROUPS),Ba("id"),pI);Ge.patch("/groups/:id",we.requireFeature($a.Feature.USER_GROUPS),Ba("id"),lI);var fI=Ge;var ce={};x(ce,{group:()=>Ru,user:()=>Eu});var Eu={};x(Eu,{fromScimUser:()=>_B,toScimUserResponse:()=>EB,userFilters:()=>xB});var mI=require("@budibase/backend-core"),gI=require("@budibase/shared-core"),yo=require("@budibase/types"),hI=require("scim2-parse-filter");var{unreachable:TB}=gI.utils,EB=a(e=>{let{isSync:t,roles:r,...n}=e.scimInfo||{},o={...n,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===yo.UserStatus.ACTIVE};(e.firstName||e.lastName)&&(o.name={formatted:[e.firstName,e.lastName].filter(i=>i).join(" "),familyName:e.lastName,givenName:e.firstName});let s="urn:ietf:params:scim:schemas:extension:enterprise:2.0:User";if(o[s]?.manager){let i=o[s].manager;typeof i=="string"&&(o[s].manager={value:i})}return o},"toScimUserResponse"),RB=a(e=>!!e?.id,"isScimUserResponse");function vB(e){if(mI.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}a(vB,"tryGetEmail");var _B=a(e=>{let t=RB(e)?e:void 0,r=vB(e);if(!r)throw new Error("Email is required");let n;switch(e.active){case"True":case"true":case!0:n=!0;break;case"False":case"false":case!1:n=!1;break;default:TB(e.active)}let o,s;return e.name?.givenName?(o=e.name?.givenName,s=e.name?.familyName):o=e.displayName,{tenantId:"",_id:t?.id,userId:t?.id,email:r,firstName:o,lastName:s,scimInfo:{...e,isSync:!0},roles:{},status:n?yo.UserStatus.ACTIVE:yo.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},"fromScimUser"),xB=a(e=>{let t={equal:{}},r=(0,hI.parse)(e);function n(o){switch(o.op){case"eq":{let s=o.attrPath,i;switch(s){case"emails.value":i="email";break;default:i=`scimInfo.${s}`}t.equal[i]=o.compValue;break}case"and":for(let s of o.filters)n(s);break;default:console.warn("Filter not handled",{filter:o})}}return a(n,"parseFilters"),n(r),t},"userFilters");var Ru={};x(Ru,{fromScimGroup:()=>LB,toScimGroupResponse:()=>CB});var CB=a(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}))}),"toScimGroupResponse"),OB=a(e=>!!e?.id,"isScimGroup"),LB=a(e=>{let t=OB(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()}},"fromScimGroup");var Yu={};x(Yu,{LLM:()=>ht,LLMRequest:()=>se,TableGeneration:()=>Hu,agentHistoryTitleSystemPrompt:()=>WB,agentSystemPrompt:()=>FB,aiColumnSchemas:()=>Ku,aiTableResponseToTableSchema:()=>Wu,appendAIColumns:()=>$u,classifyText:()=>xu,cleanData:()=>Cu,extractFileData:()=>MB,generateAIColumns:()=>Gu,generateCode:()=>GB,generateCronExpression:()=>Ou,generateData:()=>Fu,generateJs:()=>qu,generateSQL:()=>BB,generateTables:()=>Bu,generationStructure:()=>Qu,getChatLLM:()=>xI,getLLM:()=>Ka,getLLMConfig:()=>Nu,getLLMOrThrow:()=>_I,normalizeContentType:()=>vu,parseResponseFormat:()=>bo,sanitiseToolName:()=>PB,searchWeb:()=>Uu,sentimentAnalysis:()=>Pu,summarizeText:()=>Ao,tableDataStructuredOutput:()=>Vu,translate:()=>Lu});var ja=require("@budibase/types");function PB(e){if(e.length>64)throw new Error("Tool name must be under 64 characters long");return e.replace(/[^a-zA-Z0-9_-]/g,"_")}a(PB,"sanitiseToolName");function vu(e){return e?e.includes("/")?e:{[ja.SupportedFileType.PDF]:"application/pdf",[ja.SupportedFileType.JPG]:"image/jpeg",[ja.SupportedFileType.JPEG]:"image/jpeg",[ja.SupportedFileType.PNG]:"image/png"}[e.toLowerCase()]||"application/octet-stream":"application/octet-stream"}a(vu,"normalizeContentType");var Ro=require("@budibase/types");var yt=require("@budibase/backend-core"),TI=require("@budibase/types"),Dr=require("dd-trace"),EI=require("openai/helpers/zod"),RI=require("zod");var bI=require("@budibase/types"),Io=G(require("openai")),Du=require("openai/helpers/zod");var yI=require("@budibase/shared-core"),Nt=require("@budibase/types"),Bt=G(require("dd-trace"));function _u(e,t){return t.map(r=>e[r]).join(" ")}a(_u,"extractTextFromColumns");var ht=class{static{a(this,"LLM")}constructor({model:t,apiKey:r,maxTokens:n}){this._model=t,this._apiKey=r,this._maxTokens=n??parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"1000")}get model(){return this._model}get apiKey(){return this._apiKey}get maxTokens(){return this._maxTokens}async prompt(t){return await Bt.default.trace("prompt",async()=>{let r=typeof t=="string"?new se().addUserMessage(t):t,{messages:n,tokensUsed:o}=await Bt.default.trace("chatCompletion",()=>this.chatCompletion(r));return!n||n.length===0?{message:"",tokensUsed:o}:{message:n[n.length-1].content||"",tokensUsed:o}})}async chat(t){return await Bt.default.trace("chat",async()=>await this.chatCompletion(t))}async*chatStream(t){yield*this.chatCompletionStream(t)}async summarizeText(t){return Bt.default.trace("summarizeText",()=>this.prompt(Ao(t)))}async generateCronExpression(t){return Bt.default.trace("generateCronExpression",()=>this.prompt(Ou(t)))}async operation(t,r){return Bt.default.trace("operation",n=>{n.addTags({operation:t.operation,rowId:r.id});let o=this.promptForOperation(t,r);return this.prompt(o)})}promptForOperation(t,r){let{operation:n,column:o,columns:s,language:i,categories:u,prompt:c}=t;switch(n){case Nt.AIOperationEnum.SUMMARISE_TEXT:return Ao(_u(r,s));case Nt.AIOperationEnum.CLEAN_DATA:return Cu(r[o]);case Nt.AIOperationEnum.TRANSLATE:return Lu(r[o],i);case Nt.AIOperationEnum.CATEGORISE_TEXT:if(!u)throw Error("No categories provided for categorise text operation. Please provide categories.");return xu(_u(r,s),u.split(","));case Nt.AIOperationEnum.SENTIMENT_ANALYSIS:return Pu(r[o]);case Nt.AIOperationEnum.PROMPT:return c;case Nt.AIOperationEnum.SEARCH_WEB:return Uu(_u(r,s));default:throw yI.utils.unreachable(n)}}async generateJs(t,r){return await Bt.default.trace("generateJs",async()=>{let{bindings:n=[],snippets:o=[]}=r||{};return await this.prompt(qu(n,o).addUserMessage(t))})}};var Qa=(n=>(n.GPT_5_MINI="gpt-5-mini",n.GPT_5="gpt-5",n.GPT_5_NANO="gpt-5-nano",n))(Qa||{});function bo(e){if(e)return e==="text"?{type:"text"}:e==="json"?{type:"json_object"}:e}a(bo,"parseResponseFormat");function AI(e){if(!e)return 0;let t=e.prompt_tokens;return e.completion_tokens*3+t}a(AI,"calculateBudibaseAICredits");var De=class extends ht{constructor(r){super(r);this.client=this.getClient(r)}static{a(this,"OpenAI")}getVerbosityForModel(){if(Object.values(Qa).includes(this.model))return"low"}getClient(r){if(!r.apiKey)throw new Error("No OpenAI API key found");return new Io.default({apiKey:r.apiKey})}async uploadFile(r,n,o){let s=vu(o);if(bI.ImageContentTypes.includes(s.toLowerCase())){let c;if(Buffer.isBuffer(r))c=r;else{let g=[];for await(let h of r)g.push(new Uint8Array(h));c=Buffer.concat(g)}let f=c.toString("base64");return`data:${s};base64,${f}`}let i=await(0,Io.toFile)(r,n);return(await this.client.files.create({file:i,purpose:"assistants"})).id}async chatCompletion(r){let n={model:this.model,messages:r.messages,max_completion_tokens:this._maxTokens,response_format:bo(r.format)};if(Object.values(Qa).includes(this.model)){let i=this.getVerbosityForModel();i&&(n.verbosity=i),n.reasoning_effort="minimal"}r.tools&&r.tools.length>0&&(n.tool_choice="auto",n.tools=r.tools.map(Du.zodFunction));let o=await this.client.chat.completions.create(n),s=o?.choices?.[0]?.message;if(s?.tool_calls){r.addMessage(s);let i=[];for(let u of s.tool_calls){if(u.type!=="function"||!u.function){console.warn(`[OPENAI TOOL WARN] Unsupported tool call type: ${u.type}`);continue}let c=u.function.name,f=r.findTool(c);if(!f)throw new Error(`Tool ${c} not found in prompt tools`);let g=JSON.parse(u.function.arguments);i.push(f.handler(g).then(h=>({role:"tool",tool_call_id:u.id,content:h})).catch(h=>(console.error(`[OPENAI TOOL ERROR] Tool ${c} failed in OpenAI handler:`,h),{role:"tool",tool_call_id:u.id,content:`Error: ${h.message}`})))}return r.addMessages(await Promise.all(i)),this.chatCompletion(r)}else{if(s?.content)return{messages:[...r.messages,{role:s.role,content:s.content}],tokensUsed:AI(o.usage)};throw new Error("No response found")}}async*chatCompletionStream(r){let n={model:this.model,messages:r.messages,max_tokens:this.maxTokens,response_format:bo(r.format),stream:!0};r.tools&&r.tools.length>0&&(n.tool_choice="auto",n.tools=r.tools.map(Du.zodFunction));try{let o=await this.client.chat.completions.create(n),s=null,i="",u=null;for await(let f of o){let g=f?.choices?.[0]?.delta;if(g){if(g.content&&(i+=g.content,yield{type:"content",content:g.content}),g.tool_calls&&g.tool_calls.length>0){let h=g.tool_calls[0];h.id?(s={id:h.id,name:h.function?.name||"",arguments:h.function?.arguments||""},yield{type:"tool_call_start",toolCall:{id:s.id,name:s.name,arguments:s.arguments}}):s&&h.function?.arguments&&(s.arguments+=h.function.arguments,yield{type:"tool_call_start",toolCall:{id:s.id,name:s.name,arguments:s.arguments}})}f.usage&&(u=f.usage)}}let c=u?AI(u):0;if(s){r.addMessage({role:"assistant",content:"",tool_calls:[{id:s.id,type:"function",function:{name:s.name,arguments:s.arguments}}]});let f=r.findTool(s.name);if(f)try{let g=JSON.parse(s.arguments),h=await f.handler(g);yield{type:"tool_call_result",toolResult:{id:s.id,result:h}},r.addMessage({role:"tool",tool_call_id:s.id,content:h}),yield*this.chatCompletionStream(r);return}catch(g){yield{type:"tool_call_result",toolResult:{id:s.id,result:`Error: ${g.message}`,error:g.message}},r.addMessage({role:"tool",tool_call_id:s.id,content:`Error: ${g.message}`}),yield*this.chatCompletionStream(r);return}else{let g=`Tool '${s.name}' not found`;yield{type:"tool_call_result",toolResult:{id:s.id,result:g,error:g}},r.addMessage({role:"tool",tool_call_id:s.id,content:g}),yield*this.chatCompletionStream(r);return}}i&&r.addMessage({role:"assistant",content:i}),yield{type:"done",messages:r.messages,tokensUsed:c}}catch(o){yield{type:"error",content:o.message}}}};var ku=G(require("@anthropic-ai/sdk"));function UB(e){if(!e)return 0;let t=e.input_tokens;return e.output_tokens*3+t}a(UB,"calculateBudibaseAICredits");var So=class extends ht{constructor(r){super(r);this.client=new ku.default({apiKey:r.apiKey})}static{a(this,"Anthropic")}firstTextBlock(r){for(let n of r.content)if(n.type==="text")return n.text}async uploadFile(r,n,o){throw new Error("File upload not supported for this LLM provider")}async chatCompletion(r){try{let n=await this.client.messages.create({model:this.model,messages:r.messages.map(({content:s})=>{if(s==null)return{role:"user",content:""};if(typeof s=="string")return{role:"user",content:s};let i="";for(let u of s)u.type==="text"?i+=u.text:["image_url","input_audio","file"].includes(u.type);return{role:"user",content:i}}),max_tokens:this.maxTokens}),o=this.firstTextBlock(n)||"";return{messages:[...r.messages,{role:"assistant",content:o}],tokensUsed:UB(n.usage)}}catch(n){throw n instanceof ku.default.APIError&&console.error(`Anthropic Prompt failed with error ${n.name} and status: ${n.status}`),n}}async*chatCompletionStream(r){try{let n=await this.chatCompletion(r);if(n.messages.length>0){let o=n.messages[n.messages.length-1];o.content&&(yield{type:"content",content:o.content})}yield{type:"done",messages:n.messages,tokensUsed:n.tokensUsed}}catch(n){yield{type:"error",content:n.message}}}};var II=require("openai");var wo=class extends De{static{a(this,"AzureOpenAI")}getClient(t){if(!t.apiKey)throw new Error("No Azure OpenAI API key found");if(!t.model)throw new Error("No Azure OpenAI model specified");return new II.AzureOpenAI({apiKey:t.apiKey,apiVersion:"2024-10-01-preview",baseURL:t.baseUrl})}getVerbosityForModel(){return Object.values(Qa).includes(this.model)?"medium":void 0}};var he=require("@budibase/backend-core"),SI=require("@budibase/types"),Mu=require("dd-trace");var To=class extends ht{static{a(this,"BudibaseAI")}async prompt(t){let r=await super.prompt(t);return r.tokensUsed&&await Nn(r.tokensUsed),r}async chat(t){let r=await super.chat(t);return r.tokensUsed&&await Nn(r.tokensUsed),r}async uploadFile(t,r,n){return he.env.SELF_HOSTED?this.uploadFileSelfHost(t,r,n):this.uploadFileCloud(t,r,n)}async uploadFileCloud(t,r,n){return new De({apiKey:he.env.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).uploadFile(t,r,n)}async uploadFileSelfHost(t,r,n){let o;if(Buffer.isBuffer(t))o=t;else{let g=[];for await(let h of t)g.push(new Uint8Array(h));o=Buffer.concat(g)}let s=o.toString("base64");if(n&&SI.ImageContentTypes.includes(n.toLowerCase()))return`data:image/jpeg;base64,${s}`;if(!he.env.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(!this._apiKey){let g=await Cn();if(!g)throw new Error("No license key found");this._apiKey=g}let i=`${he.env.BUDICLOUD_URL}/api/ai/upload-file`,u={method:"POST",headers:{"Content-Type":"application/json",[he.constants.Header.LICENSE_KEY]:this._apiKey},body:JSON.stringify({data:s,filename:r,contentType:n})};console.debug("[BudibaseAI] uploadFileSelfHost - Making network call",{url:i,method:u.method,headers:u.headers,bodyKeys:["data","filename","contentType"],filename:r,contentType:n});let c=await Ja(i,u);if(console.debug("[BudibaseAI] uploadFileSelfHost - Network response",{url:i,status:c.status,statusText:c.statusText,ok:c.ok}),!c.ok)throw await he.HTTPError.fromResponse(c);return(await c.json()).fileId}async chatCompletion(t){return he.env.SELF_HOSTED?this.chatCompletionSelfHost(t):this.chatCompletionCloud(t)}async chatCompletionCloud(t){return await Mu.tracer.trace("chatCompletionCloud",async()=>await new De({apiKey:he.env.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).chatCompletion(t))}async chatCompletionSelfHost(t){return await Mu.tracer.trace("chatCompletionSelfHost",async r=>{if(!he.env.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(r.addTags({budicloudUrl:he.env.BUDICLOUD_URL}),!this._apiKey){let c=await Cn();if(!c)throw new Error("No license key found");this._apiKey=c,r.addTags({licenseKey:this._apiKey})}let n={messages:t.messages,format:t.format,useTools:t.tools.length>0},o=`${he.env.BUDICLOUD_URL}/api/ai/chat`,s={method:"POST",headers:{"Content-Type":"application/json",[he.constants.Header.LICENSE_KEY]:this._apiKey},body:JSON.stringify(n)};console.debug("[BudibaseAI] chatCompletionSelfHost - Making network call",{url:o,method:s.method,headers:s.headers,bodyKeys:Object.keys(n),messagesCount:t.messages.length,useTools:n.useTools,format:n.format});let i=await Ja(o,s);if(console.debug("[BudibaseAI] chatCompletionSelfHost - Network response",{url:o,status:i.status,statusText:i.statusText,ok:i.ok}),!i.ok)throw await he.HTTPError.fromResponse(i);let u=await i.json();return console.debug("[BudibaseAI] chatCompletionSelfHost - Response data",{url:o,tokensUsed:u.tokensUsed,messagesCount:u.messages?.length}),u})}async*chatCompletionStream(t){he.env.SELF_HOSTED?yield*this.chatCompletionStreamSelfHost(t):yield*this.chatCompletionStreamCloud(t)}async*chatCompletionStreamCloud(t){yield*new De({apiKey:he.env.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).chatCompletionStream(t)}async*chatCompletionStreamSelfHost(t){console.debug("[BudibaseAI] chatCompletionStreamSelfHost - Starting streaming (fallback to non-streaming)",{messagesCount:t.messages.length,toolsCount:t.tools.length});try{let r=await this.chatCompletionSelfHost(t);if(console.debug("[BudibaseAI] chatCompletionStreamSelfHost - Yielding response chunks",{responseMessagesCount:r.messages.length,tokensUsed:r.tokensUsed}),r.messages.length>0){let n=r.messages[r.messages.length-1];n.content&&(yield{type:"content",content:n.content})}yield{type:"done",messages:r.messages,tokensUsed:r.tokensUsed}}catch(r){console.debug("[BudibaseAI] chatCompletionStreamSelfHost - Error occurred",{error:r.message}),yield{type:"error",content:r.message}}}};var wI=G(require("openai"));var Eo=class extends De{static{a(this,"LiteLLMAI")}getClient(t){if(!t.apiKey)throw new Error("No LiteLLM API key found");return new wI.default({apiKey:t.apiKey,baseURL:t.baseUrl})}};var vI={OpenAI:"gpt-5-mini",TogetherAI:"gpt-5-mini",AzureOpenAI:"gpt-4.1",Custom:"gpt-5-mini",Anthropic:"claude-3-5-sonnet-20240620",BudibaseAI:"gpt-5-mini"},qB={OpenAI:De,TogetherAI:De,AzureOpenAI:wo,Custom:De,Anthropic:So,BudibaseAI:To};async function DB(){return await Dr.tracer.trace("getAIConfig",async e=>{let t={type:TI.ConfigType.AI,config:{}};if(!yt.context.isSelfHostUsingCloud()){let n=await yt.configs.getAIConfig();n&&(t=n)}await Ms(t);let r=Object.values(t.config).find(n=>n.active&&n.isDefault);if(!r){e.addTags({enabled:!1,reason:"no provider found"});return}return e.addTags({enabled:!0}),{provider:r.provider,model:r.defaultModel||vI[r.provider],apiKey:r.apiKey,baseUrl:r.baseUrl}})}a(DB,"getAIConfig");async function kB(){return Dr.tracer.trace("getSelfHostOpenAIKeyConfig",e=>{if(!yt.env.SELF_HOSTED){e.addTags({enabled:!1,reason:"not self host"});return}if(!yt.env.OPENAI_API_KEY){e.addTags({enabled:!1,reason:"no OPENAI_API_KEY"});return}return e.addTags({enabled:!0}),{provider:"OpenAI",model:vI.OpenAI,apiKey:yt.env.OPENAI_API_KEY}})}a(kB,"getSelfHostOpenAIKeyConfig");async function Nu(){return Dr.tracer.trace("getLLMConfig",async()=>await DB()||await kB())}a(Nu,"getLLMConfig");async function Ka(e){return await Dr.tracer.trace("getLLM",async t=>{let{model:r,maxTokens:n}=e||{},o=await Nu();if(!o){t.addTags({enabled:!1,reason:"no config found"});return}r&&(o.model=r),n&&(o.maxTokens=n);let s=qB[o.provider];if(!s){t.addTags({enabled:!1,reason:"no provider found",provider:o.provider});return}return new s(o)})}a(Ka,"getLLM");async function _I(){let e=await Ka();if(!e)throw new yt.HTTPError("No available LLM configurations",500);return e}a(_I,"getLLMOrThrow");async function xI(e){return await Dr.tracer.trace("getChatLLM",async()=>new Eo(e))}a(xI,"getChatLLM");var se=class e{constructor(){this.messages=[];this.tools=[]}static{a(this,"LLMRequest")}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 RI.z.ZodType?this.format=(0,EI.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 vt=require("zod");function Ao(e,t){let r=`Summarize this text:
|
|
39
|
+
${e}`,n="";if(t)switch(t){case Ro.SummariseLength.SHORT:n="In 1-2 concise sentences, ";break;case Ro.SummariseLength.MEDIUM:n="In 2-3 paragraphs, ";break;case Ro.SummariseLength.LONG:n="In multiple detailed paragraphs, ";break}return new se().addUserMessage(`${n}${r}.
|
|
40
|
+
Only return the summary.`)}a(Ao,"summarizeText");function MB(e,t){let r=["You are a data extraction assistant.","Extract data from the attached document/image that matches the provided schema.","The schema defines the structure where values like 'string', 'number', 'boolean' indicate the expected data types.","Extract all items that match the schema from the document.","Return the data in json format","If no matching data is found, return an empty data array."].join(`
|
|
41
41
|
|
|
42
42
|
`),o=t.startsWith("data:")?[{type:"image_url",image_url:{url:t}},{type:"text",text:r}]:[{type:"text",text:`${r}
|
|
43
43
|
|
|
44
|
-
File ID: ${t}`}],s=
|
|
44
|
+
File ID: ${t}`}],s=NB(e),i=vt.z.object({data:vt.z.array(s)});return new se().addMessages([{role:"user",content:o}]).withFormat(i)}a(MB,"extractFileData");function NB(e){let t={};for(let[r,n]of Object.entries(e))if(typeof n=="string")switch(n.toLowerCase()){case"string":t[r]=vt.z.string();break;case"number":t[r]=vt.z.number();break;case"boolean":t[r]=vt.z.boolean();break;default:t[r]=vt.z.string()}else t[r]=vt.z.string();return vt.z.object(t)}a(NB,"createZodSchemaFromRecord");function xu(e,t){return new se().addUserMessage(`Return the category of this text: "${e}". Based on these categories: ${t.join(", ")}. Only return the category. Do not add any extra punctuation or fix spelling mistakes. It should exactly match one of the categories. `)}a(xu,"classifyText");function Cu(e){return new se().addUserMessage(`Clean the following string: "${e}". Remove any spelling mistakes or data issues. Only return the cleaned string itself and nothing else.`)}a(Cu,"cleanData");function BB(e,t){return new se().addUserMessage(`Given the table schema:
|
|
45
45
|
${t}
|
|
46
46
|
|
|
47
47
|
Generate a SQL query for the following request:
|
|
48
48
|
${e}.
|
|
49
|
-
Only provide the SQL.`)}a(
|
|
49
|
+
Only provide the SQL.`)}a(BB,"generateSQL");function GB(e){return new se().addUserMessage(`Generate JavaScript code for the following request:
|
|
50
50
|
${e}.
|
|
51
|
-
Only provide the JS and nothing else.`)}a(
|
|
52
|
-
${e}`)}a(
|
|
51
|
+
Only provide the JS and nothing else.`)}a(GB,"generateCode");function Ou(e){return new se().addUserMessage(`Generate a node-cron compatible expression based on the following prompt. Return only the cron expression (without backticks), and if not possible return only 'Error generating cron' with a short explanation:
|
|
52
|
+
${e}`)}a(Ou,"generateCronExpression");function Lu(e,t){return new se().addUserMessage(`Translate the following text: "${e}" into ${t}. Only return the translation.`)}a(Lu,"translate");function Pu(e){return new se().addUserMessage(`Return the sentiment of this text: "${e}". Only return the sentiment.`)}a(Pu,"sentimentAnalysis");function Uu(e){return new se().addUserMessage(`Search the web for the following: "${e}". Only return the top results.`)}a(Uu,"searchWeb");function qu(e,t){let r="You do not have access to any bindings in this request.";e&&e.length>0&&(r=`The bindings you have access to are:
|
|
53
53
|
|
|
54
54
|
${e.map(({readableBinding:o})=>`- $("${o}")`).join(`
|
|
55
55
|
`)}`);let n="You do not have access to any snippets in this request.";return t.length>0&&(n=`The snippets you have access to are:
|
|
@@ -144,7 +144,7 @@ a variable, it will be provided to you as a binding.
|
|
|
144
144
|
|
|
145
145
|
${n}
|
|
146
146
|
|
|
147
|
-
${r}`)}a(
|
|
147
|
+
${r}`)}a(qu,"generateJs");function Bu(){let e=`
|
|
148
148
|
You are generating Budibase table schemas from user prompts.
|
|
149
149
|
Always return at least 2 tables, and define only one side of relationships using a link field.
|
|
150
150
|
Exclude id, created_at, and updated_at (Budibase adds them).
|
|
@@ -152,10 +152,10 @@ Include a variety of column types: text, dropdown, date, number.
|
|
|
152
152
|
Add at least one formula column, one attachment, and one multi-attachment column across the tables.
|
|
153
153
|
Budibase handles reverse relationships and many-to-many links \u2014 never define join tables or reverse fields.
|
|
154
154
|
You may specify foreignColumnName, but do not create that field manually.
|
|
155
|
-
`;return new se().addSystemMessage(e)}a(
|
|
155
|
+
`;return new se().addSystemMessage(e)}a(Bu,"generateTables");function Gu(){let e='Given the generated schema, add only one field of type "AI" to relevant tables to add value to the Budibase user.';return new se().addSystemMessage(e)}a(Gu,"generateAIColumns");function Fu(){let e=`
|
|
156
156
|
For each table, populate the data field with realistic-looking sample records.
|
|
157
157
|
Avoid placeholder values like "foo" or "bar". Use real names, emails, etc., and ensure values are unique across rows.
|
|
158
|
-
`;return new se().addSystemMessage(e)}a(
|
|
158
|
+
`;return new se().addSystemMessage(e)}a(Fu,"generateData");function FB(e){return`You are a helpful support agent who uses workflows to resolve user issues efficiently.
|
|
159
159
|
|
|
160
160
|
- The user will ask support queries.
|
|
161
161
|
- Your replies MUST be short, concise, and directly answer the user's question as quickly and clearly as possible.
|
|
@@ -170,15 +170,15 @@ Avoid placeholder values like "foo" or "bar". Use real names, emails, etc., and
|
|
|
170
170
|
|
|
171
171
|
\`\`\`
|
|
172
172
|
${JSON.stringify(e)}
|
|
173
|
-
\`\`\``}a(
|
|
173
|
+
\`\`\``}a(FB,"agentSystemPrompt");function WB(){return`You will be provided with a set of history, a conversation between a user and an AI. Using this
|
|
174
174
|
information generate a title for the conversation, this should start with a capital letter and MUST be
|
|
175
|
-
less than five words.`}a(
|
|
175
|
+
less than five words.`}a(WB,"agentHistoryTitleSystemPrompt");var Va=require("@budibase/backend-core"),LI=require("@budibase/shared-core");var _t=require("@budibase/types"),CI=require("@budibase/backend-core");function Wu(e){let t=[],r=[];for(let n of e.tables){let o=n.schema.reduce((s,i)=>{if(i.type===_t.FieldType.LINK){if(!r.includes(i.relationshipId)){let u={[_t.RelationshipType.MANY_TO_ONE]:_t.RelationshipType.ONE_TO_MANY,[_t.RelationshipType.ONE_TO_MANY]:_t.RelationshipType.MANY_TO_ONE,[_t.RelationshipType.MANY_TO_MANY]:_t.RelationshipType.MANY_TO_MANY},{reverseFieldName:c,relationshipId:f,...g}=i;s[i.name]={...g,fieldName:c,relationshipType:u[i.relationshipType]},r.push(f)}}else s[i.name]=i;return s},{});t.push({_id:CI.docIds.generateTableID(),name:n.name,primaryDisplay:n.primaryDisplay,schema:o})}return t}a(Wu,"aiTableResponseToTableSchema");function $u(e,t){let r=[];for(let n of e)r.push({...n,schema:{...n.schema,...t[n.name]?.reduce((o,s)=>(o[s.name]=s,o),{})}});return r}a($u,"appendAIColumns");var L=require("@budibase/types"),T=require("zod");var Oe=T.z.object({name:T.z.string().describe("A human readable name for the field. It MUST be alpha-numeric and capitalised.")}),ju=Oe.extend({type:T.z.literal(L.FieldType.LINK),tableId:T.z.string().describe("This must match one of the generated table names"),reverseFieldName:T.z.string().describe("Only the *name* of the field that will appear in the foreign table. Budibase creates this automatically. Do not define the column yourself."),relationshipId:T.z.string().describe("The ID of the relationship. It must be used in pairs, paring many-to-ones and one-to-manys, or many-to-manys with each other.")}),$B=T.z.array(T.z.union([Oe.extend({type:T.z.enum([L.FieldType.STRING,L.FieldType.NUMBER,L.FieldType.BOOLEAN,L.FieldType.LONGFORM]),constraints:T.z.object({presence:T.z.boolean()}).optional().nullable()}),ju.extend({relationshipType:T.z.enum([L.RelationshipType.MANY_TO_ONE])}).describe("Many-to-one relationship, where the current table is the 'many' side. Defines the initiating side of the relationship. Only this side should be defined. The reverse column will be created automatically."),ju.extend({relationshipType:T.z.enum([L.RelationshipType.ONE_TO_MANY])}).describe("One-to-many relationship, where the current table is the 'one' side. Defines the initiating side of the relationship. Only this side should be defined. The reverse column will be created automatically."),ju.extend({relationshipType:T.z.enum([L.RelationshipType.MANY_TO_MANY])}).describe("Many to many relationship. Defines the initiating side of the relationship. Only this side should be defined. The reverse column will be created automatically."),Oe.extend({type:T.z.literal(L.FieldType.OPTIONS),constraints:T.z.object({inclusion:T.z.array(T.z.string()).describe("The options for the field"),presence:T.z.boolean()})}).describe("A single option from closed set of options"),Oe.extend({type:T.z.literal(L.FieldType.ARRAY),constraints:T.z.object({inclusion:T.z.array(T.z.string()).describe("The options for the field"),presence:T.z.boolean(),type:T.z.literal(L.JsonFieldSubType.ARRAY)}).describe("Multiple selected options from closed set of options")}),Oe.extend({type:T.z.literal(L.FieldType.FORMULA),formula:T.z.string().describe(`
|
|
176
176
|
A JavaScript expression using only previously defined fields.
|
|
177
177
|
Reference fields using $("Field name"). Must end with: return ...
|
|
178
178
|
Example: return $("Score") + $("Weight")
|
|
179
|
-
`),responseType:T.z.enum([L.FieldType.STRING,L.FieldType.NUMBER,L.FieldType.BOOLEAN,L.FieldType.DATETIME])}).describe("Define these types after the other types"),Oe.extend({type:T.z.literal(L.FieldType.DATETIME),ignoreTimezones:T.z.boolean()}).describe("A datetime field, storing date and time"),Oe.extend({type:T.z.literal(L.FieldType.DATETIME),ignoreTimezones:T.z.boolean(),timeOnly:T.z.literal(!0)}).describe("A time only field"),Oe.extend({type:T.z.literal(L.FieldType.DATETIME),ignoreTimezones:T.z.boolean(),dateOnly:T.z.literal(!0)}).describe("A date only field"),Oe.extend({type:T.z.literal(L.FieldType.ATTACHMENT_SINGLE),subtype:T.z.literal(L.AttachmentSubType.IMAGE)}).describe("Single image column"),Oe.extend({type:T.z.literal(L.FieldType.ATTACHMENT_SINGLE)}).describe("Single attachment column. It stores a single document: pdf, word, etc. Use an appropriate name for the column, like 'Invoice', 'Document', etc."),Oe.extend({type:T.z.literal(L.FieldType.ATTACHMENTS),subtype:T.z.literal(L.AttachmentSubType.IMAGE)}).describe("Multiple images column. Use an appropiate name for the columns, like 'Gallery', 'Photos', etc."),Oe.extend({type:T.z.literal(L.FieldType.ATTACHMENTS)}).describe("Multiple attachments column. It might hold different kind of documents mixed up: pdf, txt, etc. Use an appropiate name for the columns, like 'Invoices', 'Documents', 'Attachments', etc.")])),
|
|
179
|
+
`),responseType:T.z.enum([L.FieldType.STRING,L.FieldType.NUMBER,L.FieldType.BOOLEAN,L.FieldType.DATETIME])}).describe("Define these types after the other types"),Oe.extend({type:T.z.literal(L.FieldType.DATETIME),ignoreTimezones:T.z.boolean()}).describe("A datetime field, storing date and time"),Oe.extend({type:T.z.literal(L.FieldType.DATETIME),ignoreTimezones:T.z.boolean(),timeOnly:T.z.literal(!0)}).describe("A time only field"),Oe.extend({type:T.z.literal(L.FieldType.DATETIME),ignoreTimezones:T.z.boolean(),dateOnly:T.z.literal(!0)}).describe("A date only field"),Oe.extend({type:T.z.literal(L.FieldType.ATTACHMENT_SINGLE),subtype:T.z.literal(L.AttachmentSubType.IMAGE)}).describe("Single image column"),Oe.extend({type:T.z.literal(L.FieldType.ATTACHMENT_SINGLE)}).describe("Single attachment column. It stores a single document: pdf, word, etc. Use an appropriate name for the column, like 'Invoice', 'Document', etc."),Oe.extend({type:T.z.literal(L.FieldType.ATTACHMENTS),subtype:T.z.literal(L.AttachmentSubType.IMAGE)}).describe("Multiple images column. Use an appropiate name for the columns, like 'Gallery', 'Photos', etc."),Oe.extend({type:T.z.literal(L.FieldType.ATTACHMENTS)}).describe("Multiple attachments column. It might hold different kind of documents mixed up: pdf, txt, etc. Use an appropiate name for the columns, like 'Invoices', 'Documents', 'Attachments', etc.")])),Qu=T.z.object({tables:T.z.array(T.z.object({name:T.z.string(),schema:$B,primaryDisplay:T.z.string().describe("The column will be used as display, so pick the clearer option. This must match EXACTLY one of the created fields names in the schema.")}))});function Ku(e){let t=T.z.object({});for(let r of e){let n=Object.values(r.schema),o=[Oe.extend({type:T.z.literal(L.FieldType.AI),operation:T.z.literal(L.AIOperationEnum.TRANSLATE),column:T.z.enum(n.filter(s=>[L.FieldType.STRING,L.FieldType.LONGFORM].includes(s.type)).map(s=>s.name)).describe("The columns to translate"),language:T.z.string()}).describe("This column will be autogenerated via AI to translate one column. Use it for reasonable cases, like translating descriptions or similar."),Oe.extend({type:T.z.literal(L.FieldType.AI),operation:T.z.literal(L.AIOperationEnum.CATEGORISE_TEXT),columns:T.z.array(T.z.enum(n.filter(s=>[L.FieldType.STRING,L.FieldType.LONGFORM,L.FieldType.BOOLEAN,L.FieldType.NUMBER,L.FieldType.DATETIME].includes(s.type)).map(s=>s.name))).describe("The columns to be used as context"),categories:T.z.string().describe("CSV list of categories")}).describe("This column will be autogenerated via AI to categorise a row based on one or many columns.")];n.some(s=>s.type===L.FieldType.LONGFORM)&&o.push(Oe.extend({type:T.z.literal(L.FieldType.AI),operation:T.z.literal(L.AIOperationEnum.SUMMARISE_TEXT),columns:T.z.array(T.z.enum(n.filter(s=>[L.FieldType.STRING,L.FieldType.LONGFORM].includes(s.type)).map(s=>s.name))).describe("Columns, from the current table, to be passed in the context. Use at least one.")}).describe("This column will be autogenerated via AI to summarise one or many columns.")),t=t.extend({[r.name]:T.z.array(T.z.union(o))})}return t}a(Ku,"aiColumnSchemas");var X=require("zod"),OI=require("@budibase/shared-core"),Q=require("@budibase/types");function Vu(e){let t=X.z.object({});for(let r of e){let n={_id:X.z.string().describe("Unique ID for the row")},o=X.z.union([X.z.literal("https://picsum.photos/600/600").describe("For profile pictures and similar"),X.z.literal("https://picsum.photos/1920/1080").describe("For anything else")]),s=X.z.object({fileName:X.z.string(),extension:X.z.enum([".pdf",".txt"]),content:X.z.string().describe("Random content for the file")});for(let i of Object.values(r.schema)){let{type:u}=i;switch(u){case Q.FieldType.STRING:case Q.FieldType.LONGFORM:n[i.name]=X.z.string();break;case Q.FieldType.NUMBER:case Q.FieldType.BIGINT:n[i.name]=X.z.number();break;case Q.FieldType.BOOLEAN:n[i.name]=X.z.boolean();break;case Q.FieldType.DATETIME:n[i.name]=X.z.string().describe(`ISO datetime. Use realistic dates, based on today's date, ${new Date().toISOString()}`);break;case Q.FieldType.ATTACHMENT_SINGLE:i.subtype===Q.AttachmentSubType.IMAGE?n[i.name]=o:n[i.name]=s;break;case Q.FieldType.ATTACHMENTS:i.subtype===Q.AttachmentSubType.IMAGE?n[i.name]=X.z.array(o):n[i.name]=X.z.array(s),n[i.name]=n[i.name].describe("Between 2 and 5 items.");break;case Q.FieldType.OPTIONS:n[i.name]=X.z.enum(i.constraints.inclusion);break;case Q.FieldType.LINK:{let c=X.z.string().describe(`Match one of the _ids created for table "${i.tableId}"`);i.relationshipType===Q.RelationshipType.ONE_TO_MANY?n[i.name]=X.z.array(c).describe("Array with a single item"):i.relationshipType===Q.RelationshipType.MANY_TO_MANY&&(n[i.name]=X.z.array(c).describe("Array with a one or many items. You can repeat the same ids between rows"))}break;case Q.FieldType.ARRAY:n[i.name]=X.z.array(X.z.enum(i.constraints.inclusion));break;case Q.FieldType.AI:case Q.FieldType.AUTO:case Q.FieldType.SIGNATURE_SINGLE:case Q.FieldType.BB_REFERENCE:case Q.FieldType.JSON:case Q.FieldType.FORMULA:case Q.FieldType.INTERNAL:case Q.FieldType.BARCODEQR:case Q.FieldType.BB_REFERENCE_SINGLE:break;default:throw OI.utils.unreachable(u)}}t=t.extend({[r.name]:X.z.array(X.z.object(n))}).describe(`Each table should include at least a few items (min 3, max 18). The number of items should not be evenly distributed. Instead, follow natural relationships and usage patterns based on the tables nature. For example:
|
|
180
180
|
1. If we have posts and comments, there should be more posts than users, and more comments than posts.
|
|
181
181
|
2. If it's a ticketing system, there may be more tickets than users, and some users may have submitted several tickets.
|
|
182
182
|
3. In a CRM, there are fewer users than customers, and customers may have many deals.
|
|
183
|
-
4. In a project management tool, projects might have many tasks, and tasks might have multiple comments.`)}return t}a(
|
|
184
|
-
"${t}"`).withFormat(
|
|
183
|
+
4. In a project management tool, projects might have many tasks, and tasks might have multiple comments.`)}return t}a(Vu,"tableDataStructuredOutput");var Ha=G(require("dd-trace"));var Hu=class e{constructor(t,r){this.llmFunctions={getTableStructure:async t=>Ha.default.trace("llm.getTableStructure",async()=>{let r=await this.llm.prompt(Bu().addUserMessage(t).withFormat(Qu));try{let n=JSON.parse(r.message);return Wu(n)}catch{throw new Va.HTTPError("Error generating tables",500)}}),generateAIColumns:(t,r)=>Ha.default.trace("llm.generateAIColumns",async()=>this.generateAIColumns(t,r)),generateData:async(t,r)=>Ha.default.trace("llm.generateData",async()=>{let n=await this.llm.prompt(Fu().addUserMessage(t).withFormat(Vu(r)));try{return JSON.parse(n.message)}catch{throw new Va.HTTPError("Error generating data",500)}})};this.llm=t,this.delegates=r}static{a(this,"TableGeneration")}static async init(t){let r=await Ka({model:"gpt-5-mini",maxTokens:5e3});if(!r)throw new Va.HTTPError("LLM not available",422);return new e(r,t)}async generate(t,r){return Ha.default.trace("tableGeneration.generate",async n=>{let o=await this.generateTables(t,r);return n.addTags({table_count:o.length}),o})}async generateTables(t,r){let n=await this.llmFunctions.getTableStructure(t),o=this.llmFunctions.generateAIColumns(t,n).then(u=>this.delegates.generateTablesDelegate($u(n,u))),s=await this.llmFunctions.generateData(t,n),i=await o;return await this.delegates.generateDataDelegate(s,r,LI.utils.toMap("name",n)),i}async generateAIColumns(t,r){let n=await this.llm.prompt(Gu().addUserMessage(`This is the initial user prompt that generated the given schema:
|
|
184
|
+
"${t}"`).withFormat(Ku(r)));try{return JSON.parse(n.message)}catch{throw new Va.HTTPError("Error generating columns",500)}}};0&&(module.exports={Method,ai,api,auditLogs,automations,backups,branding,constants,environmentVariables,features,groups,init,licensing,logger,mappers,middleware,plugins,publicApi,quotas,scimGroups,scimUsers,sdk,users,utils});
|