@budibase/pro 3.12.0 → 3.12.2
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/base.d.ts +1 -1
- package/dist/index.js +32 -32
- package/package.json +2 -2
package/dist/ai/models/base.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export declare abstract class LLM {
|
|
|
10
10
|
get apiKey(): string | undefined;
|
|
11
11
|
get maxTokens(): number;
|
|
12
12
|
protected abstract chatCompletion(request: LLMRequest): Promise<LLMFullResponse>;
|
|
13
|
-
prompt(
|
|
13
|
+
prompt(requestOrString: string | LLMRequest): Promise<LLMPromptResponse>;
|
|
14
14
|
chat(request: LLMRequest): Promise<LLMFullResponse>;
|
|
15
15
|
summarizeText(prompt: string): Promise<LLMPromptResponse>;
|
|
16
16
|
generateCronExpression(prompt: string): Promise<LLMPromptResponse>;
|
package/dist/index.js
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
"use strict";var iI=Object.create;var Oa=Object.defineProperty;var uI=Object.getOwnPropertyDescriptor;var pI=Object.getOwnPropertyNames;var cI=Object.getPrototypeOf,lI=Object.prototype.hasOwnProperty;var u=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),w=(e,t)=>{for(var r in t)Oa(e,r,{get:t[r],enumerable:!0})},wu=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of pI(t))!lI.call(e,n)&&n!==r&&Oa(e,n,{get:()=>t[n],enumerable:!(a=uI(t,n))||a.enumerable});return e};var C=(e,t,r)=>(r=e!=null?iI(cI(e)):{},wu(t||!e||!e.__esModule?Oa(r,"default",{value:e,enumerable:!0}):r,e)),dI=e=>wu(Oa({},"__esModule",{value:!0}),e);var $a=u((O0,sp)=>{"use strict";function pS(e,t){for(var r=-1,a=t.length,n=e.length;++r<a;)e[n+r]=t[r];return e}sp.exports=pS});var fo=u((P0,ip)=>{"use strict";var cS=typeof global=="object"&&global&&global.Object===Object&&global;ip.exports=cS});var ne=u((L0,up)=>{"use strict";var lS=fo(),dS=typeof self=="object"&&self&&self.Object===Object&&self,fS=lS||dS||Function("return this")();up.exports=fS});var Et=u((C0,pp)=>{"use strict";var mS=ne(),gS=mS.Symbol;pp.exports=gS});var fp=u((q0,dp)=>{"use strict";var cp=Et(),lp=Object.prototype,hS=lp.hasOwnProperty,yS=lp.toString,$r=cp?cp.toStringTag:void 0;function AS(e){var t=hS.call(e,$r),r=e[$r];try{e[$r]=void 0;var a=!0}catch{}var n=yS.call(e);return a&&(t?e[$r]=r:delete e[$r]),n}dp.exports=AS});var gp=u((U0,mp)=>{"use strict";var bS=Object.prototype,IS=bS.toString;function SS(e){return IS.call(e)}mp.exports=SS});var dt=u((D0,Ap)=>{"use strict";var hp=Et(),wS=fp(),vS=gp(),TS="[object Null]",ES="[object Undefined]",yp=hp?hp.toStringTag:void 0;function RS(e){return e==null?e===void 0?ES:TS:yp&&yp in Object(e)?wS(e):vS(e)}Ap.exports=RS});var ge=u((N0,bp)=>{"use strict";function xS(e){return e!=null&&typeof e=="object"}bp.exports=xS});var Sp=u((B0,Ip)=>{"use strict";var _S=dt(),OS=ge(),PS="[object Arguments]";function LS(e){return OS(e)&&_S(e)==PS}Ip.exports=LS});var Vr=u((M0,Tp)=>{"use strict";var wp=Sp(),CS=ge(),vp=Object.prototype,qS=vp.hasOwnProperty,US=vp.propertyIsEnumerable,DS=wp(function(){return arguments}())?wp:function(e){return CS(e)&&qS.call(e,"callee")&&!US.call(e,"callee")};Tp.exports=DS});var ee=u((G0,Ep)=>{"use strict";var NS=Array.isArray;Ep.exports=NS});var Op=u((k0,_p)=>{"use strict";var Rp=Et(),BS=Vr(),MS=ee(),xp=Rp?Rp.isConcatSpreadable:void 0;function GS(e){return MS(e)||BS(e)||!!(xp&&e&&e[xp])}_p.exports=GS});var mo=u((F0,Lp)=>{"use strict";var kS=$a(),FS=Op();function Pp(e,t,r,a,n){var o=-1,s=e.length;for(r||(r=FS),n||(n=[]);++o<s;){var i=e[o];t>0&&r(i)?t>1?Pp(i,t-1,r,a,n):kS(n,i):a||(n[n.length]=i)}return n}Lp.exports=Pp});var Kr=u((Q0,Cp)=>{"use strict";function QS(e){return e}Cp.exports=QS});var Va=u((j0,qp)=>{"use strict";function jS(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)}qp.exports=jS});var go=u((W0,Dp)=>{"use strict";var WS=Va(),Up=Math.max;function $S(e,t,r){return t=Up(t===void 0?e.length-1:t,0),function(){for(var a=arguments,n=-1,o=Up(a.length-t,0),s=Array(o);++n<o;)s[n]=a[t+n];n=-1;for(var i=Array(t+1);++n<t;)i[n]=a[n];return i[t]=r(s),WS(e,this,i)}}Dp.exports=$S});var Bp=u(($0,Np)=>{"use strict";function VS(e){return function(){return e}}Np.exports=VS});var ve=u((V0,Mp)=>{"use strict";function KS(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}Mp.exports=KS});var Yr=u((K0,Gp)=>{"use strict";var YS=dt(),HS=ve(),zS="[object AsyncFunction]",JS="[object Function]",XS="[object GeneratorFunction]",ZS="[object Proxy]";function ew(e){if(!HS(e))return!1;var t=YS(e);return t==JS||t==XS||t==zS||t==ZS}Gp.exports=ew});var Fp=u((Y0,kp)=>{"use strict";var tw=ne(),rw=tw["__core-js_shared__"];kp.exports=rw});var Wp=u((H0,jp)=>{"use strict";var ho=Fp(),Qp=function(){var e=/[^.]+$/.exec(ho&&ho.keys&&ho.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function aw(e){return!!Qp&&Qp in e}jp.exports=aw});var yo=u((z0,$p)=>{"use strict";var nw=Function.prototype,ow=nw.toString;function sw(e){if(e!=null){try{return ow.call(e)}catch{}try{return e+""}catch{}}return""}$p.exports=sw});var Kp=u((J0,Vp)=>{"use strict";var iw=Yr(),uw=Wp(),pw=ve(),cw=yo(),lw=/[\\^$.*+?()[\]{}|]/g,dw=/^\[object .+?Constructor\]$/,fw=Function.prototype,mw=Object.prototype,gw=fw.toString,hw=mw.hasOwnProperty,yw=RegExp("^"+gw.call(hw).replace(lw,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Aw(e){if(!pw(e)||uw(e))return!1;var t=iw(e)?yw:dw;return t.test(cw(e))}Vp.exports=Aw});var Hp=u((X0,Yp)=>{"use strict";function bw(e,t){return e?.[t]}Yp.exports=bw});var ft=u((Z0,zp)=>{"use strict";var Iw=Kp(),Sw=Hp();function ww(e,t){var r=Sw(e,t);return Iw(r)?r:void 0}zp.exports=ww});var Ao=u((ek,Jp)=>{"use strict";var vw=ft(),Tw=function(){try{var e=vw(Object,"defineProperty");return e({},"",{}),e}catch{}}();Jp.exports=Tw});var ec=u((tk,Zp)=>{"use strict";var Ew=Bp(),Xp=Ao(),Rw=Kr(),xw=Xp?function(e,t){return Xp(e,"toString",{configurable:!0,enumerable:!1,value:Ew(t),writable:!0})}:Rw;Zp.exports=xw});var bo=u((rk,tc)=>{"use strict";var _w=800,Ow=16,Pw=Date.now;function Lw(e){var t=0,r=0;return function(){var a=Pw(),n=Ow-(a-r);if(r=a,n>0){if(++t>=_w)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}tc.exports=Lw});var Ka=u((ak,rc)=>{"use strict";var Cw=ec(),qw=bo(),Uw=qw(Cw);rc.exports=Uw});var Io=u((nk,ac)=>{"use strict";var Dw=Kr(),Nw=go(),Bw=Ka();function Mw(e,t){return Bw(Nw(e,t,Dw),e+"")}ac.exports=Mw});var Hr=u((ok,nc)=>{"use strict";var Gw=ft(),kw=Gw(Object,"create");nc.exports=kw});var ic=u((sk,sc)=>{"use strict";var oc=Hr();function Fw(){this.__data__=oc?oc(null):{},this.size=0}sc.exports=Fw});var pc=u((ik,uc)=>{"use strict";function Qw(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}uc.exports=Qw});var lc=u((uk,cc)=>{"use strict";var jw=Hr(),Ww="__lodash_hash_undefined__",$w=Object.prototype,Vw=$w.hasOwnProperty;function Kw(e){var t=this.__data__;if(jw){var r=t[e];return r===Ww?void 0:r}return Vw.call(t,e)?t[e]:void 0}cc.exports=Kw});var fc=u((pk,dc)=>{"use strict";var Yw=Hr(),Hw=Object.prototype,zw=Hw.hasOwnProperty;function Jw(e){var t=this.__data__;return Yw?t[e]!==void 0:zw.call(t,e)}dc.exports=Jw});var gc=u((ck,mc)=>{"use strict";var Xw=Hr(),Zw="__lodash_hash_undefined__";function ev(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=Xw&&t===void 0?Zw:t,this}mc.exports=ev});var yc=u((lk,hc)=>{"use strict";var tv=ic(),rv=pc(),av=lc(),nv=fc(),ov=gc();function Vt(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var a=e[t];this.set(a[0],a[1])}}Vt.prototype.clear=tv;Vt.prototype.delete=rv;Vt.prototype.get=av;Vt.prototype.has=nv;Vt.prototype.set=ov;hc.exports=Vt});var bc=u((dk,Ac)=>{"use strict";function sv(){this.__data__=[],this.size=0}Ac.exports=sv});var Kt=u((fk,Ic)=>{"use strict";function iv(e,t){return e===t||e!==e&&t!==t}Ic.exports=iv});var zr=u((mk,Sc)=>{"use strict";var uv=Kt();function pv(e,t){for(var r=e.length;r--;)if(uv(e[r][0],t))return r;return-1}Sc.exports=pv});var vc=u((gk,wc)=>{"use strict";var cv=zr(),lv=Array.prototype,dv=lv.splice;function fv(e){var t=this.__data__,r=cv(t,e);if(r<0)return!1;var a=t.length-1;return r==a?t.pop():dv.call(t,r,1),--this.size,!0}wc.exports=fv});var Ec=u((hk,Tc)=>{"use strict";var mv=zr();function gv(e){var t=this.__data__,r=mv(t,e);return r<0?void 0:t[r][1]}Tc.exports=gv});var xc=u((yk,Rc)=>{"use strict";var hv=zr();function yv(e){return hv(this.__data__,e)>-1}Rc.exports=yv});var Oc=u((Ak,_c)=>{"use strict";var Av=zr();function bv(e,t){var r=this.__data__,a=Av(r,e);return a<0?(++this.size,r.push([e,t])):r[a][1]=t,this}_c.exports=bv});var Jr=u((bk,Pc)=>{"use strict";var Iv=bc(),Sv=vc(),wv=Ec(),vv=xc(),Tv=Oc();function Yt(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var a=e[t];this.set(a[0],a[1])}}Yt.prototype.clear=Iv;Yt.prototype.delete=Sv;Yt.prototype.get=wv;Yt.prototype.has=vv;Yt.prototype.set=Tv;Pc.exports=Yt});var Ya=u((Ik,Lc)=>{"use strict";var Ev=ft(),Rv=ne(),xv=Ev(Rv,"Map");Lc.exports=xv});var Uc=u((Sk,qc)=>{"use strict";var Cc=yc(),_v=Jr(),Ov=Ya();function Pv(){this.size=0,this.__data__={hash:new Cc,map:new(Ov||_v),string:new Cc}}qc.exports=Pv});var Nc=u((wk,Dc)=>{"use strict";function Lv(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}Dc.exports=Lv});var Xr=u((vk,Bc)=>{"use strict";var Cv=Nc();function qv(e,t){var r=e.__data__;return Cv(t)?r[typeof t=="string"?"string":"hash"]:r.map}Bc.exports=qv});var Gc=u((Tk,Mc)=>{"use strict";var Uv=Xr();function Dv(e){var t=Uv(this,e).delete(e);return this.size-=t?1:0,t}Mc.exports=Dv});var Fc=u((Ek,kc)=>{"use strict";var Nv=Xr();function Bv(e){return Nv(this,e).get(e)}kc.exports=Bv});var jc=u((Rk,Qc)=>{"use strict";var Mv=Xr();function Gv(e){return Mv(this,e).has(e)}Qc.exports=Gv});var $c=u((xk,Wc)=>{"use strict";var kv=Xr();function Fv(e,t){var r=kv(this,e),a=r.size;return r.set(e,t),this.size+=r.size==a?0:1,this}Wc.exports=Fv});var Ha=u((_k,Vc)=>{"use strict";var Qv=Uc(),jv=Gc(),Wv=Fc(),$v=jc(),Vv=$c();function Ht(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var a=e[t];this.set(a[0],a[1])}}Ht.prototype.clear=Qv;Ht.prototype.delete=jv;Ht.prototype.get=Wv;Ht.prototype.has=$v;Ht.prototype.set=Vv;Vc.exports=Ht});var Yc=u((Ok,Kc)=>{"use strict";var Kv="__lodash_hash_undefined__";function Yv(e){return this.__data__.set(e,Kv),this}Kc.exports=Yv});var zc=u((Pk,Hc)=>{"use strict";function Hv(e){return this.__data__.has(e)}Hc.exports=Hv});var So=u((Lk,Jc)=>{"use strict";var zv=Ha(),Jv=Yc(),Xv=zc();function za(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new zv;++t<r;)this.add(e[t])}za.prototype.add=za.prototype.push=Jv;za.prototype.has=Xv;Jc.exports=za});var Zc=u((Ck,Xc)=>{"use strict";function Zv(e,t,r,a){for(var n=e.length,o=r+(a?1:-1);a?o--:++o<n;)if(t(e[o],o,e))return o;return-1}Xc.exports=Zv});var tl=u((qk,el)=>{"use strict";function eT(e){return e!==e}el.exports=eT});var al=u((Uk,rl)=>{"use strict";function tT(e,t,r){for(var a=r-1,n=e.length;++a<n;)if(e[a]===t)return a;return-1}rl.exports=tT});var ol=u((Dk,nl)=>{"use strict";var rT=Zc(),aT=tl(),nT=al();function oT(e,t,r){return t===t?nT(e,t,r):rT(e,aT,r)}nl.exports=oT});var wo=u((Nk,sl)=>{"use strict";var sT=ol();function iT(e,t){var r=e==null?0:e.length;return!!r&&sT(e,t,0)>-1}sl.exports=iT});var ul=u((Bk,il)=>{"use strict";function uT(e,t,r){for(var a=-1,n=e==null?0:e.length;++a<n;)if(r(t,e[a]))return!0;return!1}il.exports=uT});var vo=u((Mk,pl)=>{"use strict";function pT(e,t){return e.has(t)}pl.exports=pT});var To=u((Gk,cl)=>{"use strict";var cT=ft(),lT=ne(),dT=cT(lT,"Set");cl.exports=dT});var Eo=u((kk,ll)=>{"use strict";function fT(){}ll.exports=fT});var Ja=u((Fk,dl)=>{"use strict";function mT(e){var t=-1,r=Array(e.size);return e.forEach(function(a){r[++t]=a}),r}dl.exports=mT});var ml=u((Qk,fl)=>{"use strict";var Ro=To(),gT=Eo(),hT=Ja(),yT=1/0,AT=Ro&&1/hT(new Ro([,-0]))[1]==yT?function(e){return new Ro(e)}:gT;fl.exports=AT});var hl=u((jk,gl)=>{"use strict";var bT=So(),IT=wo(),ST=ul(),wT=vo(),vT=ml(),TT=Ja(),ET=200;function RT(e,t,r){var a=-1,n=IT,o=e.length,s=!0,i=[],p=i;if(r)s=!1,n=ST;else if(o>=ET){var f=t?null:vT(e);if(f)return TT(f);s=!1,n=wT,p=new bT}else p=t?[]:i;e:for(;++a<o;){var m=e[a],g=t?t(m):m;if(m=r||m!==0?m:0,s&&g===g){for(var h=p.length;h--;)if(p[h]===g)continue e;t&&p.push(g),i.push(m)}else n(p,g,r)||(p!==i&&p.push(g),i.push(m))}return i}gl.exports=RT});var Xa=u((Wk,yl)=>{"use strict";var xT=9007199254740991;function _T(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=xT}yl.exports=_T});var zt=u(($k,Al)=>{"use strict";var OT=Yr(),PT=Xa();function LT(e){return e!=null&&PT(e.length)&&!OT(e)}Al.exports=LT});var xo=u((Vk,bl)=>{"use strict";var CT=zt(),qT=ge();function UT(e){return qT(e)&&CT(e)}bl.exports=UT});var Sl=u((Kk,Il)=>{"use strict";var DT=mo(),NT=Io(),BT=hl(),MT=xo(),GT=NT(function(e){return BT(DT(e,1,MT,!0))});Il.exports=GT});var vl=u((Yk,wl)=>{"use strict";var kT=Jr();function FT(){this.__data__=new kT,this.size=0}wl.exports=FT});var El=u((Hk,Tl)=>{"use strict";function QT(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}Tl.exports=QT});var xl=u((zk,Rl)=>{"use strict";function jT(e){return this.__data__.get(e)}Rl.exports=jT});var Ol=u((Jk,_l)=>{"use strict";function WT(e){return this.__data__.has(e)}_l.exports=WT});var Ll=u((Xk,Pl)=>{"use strict";var $T=Jr(),VT=Ya(),KT=Ha(),YT=200;function HT(e,t){var r=this.__data__;if(r instanceof $T){var a=r.__data__;if(!VT||a.length<YT-1)return a.push([e,t]),this.size=++r.size,this;r=this.__data__=new KT(a)}return r.set(e,t),this.size=r.size,this}Pl.exports=HT});var Zr=u((Zk,Cl)=>{"use strict";var zT=Jr(),JT=vl(),XT=El(),ZT=xl(),eE=Ol(),tE=Ll();function Jt(e){var t=this.__data__=new zT(e);this.size=t.size}Jt.prototype.clear=JT;Jt.prototype.delete=XT;Jt.prototype.get=ZT;Jt.prototype.has=eE;Jt.prototype.set=tE;Cl.exports=Jt});var ea=u((eF,Ul)=>{"use strict";var ql=Ao();function rE(e,t,r){t=="__proto__"&&ql?ql(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}Ul.exports=rE});var _o=u((tF,Dl)=>{"use strict";var aE=ea(),nE=Kt();function oE(e,t,r){(r!==void 0&&!nE(e[t],r)||r===void 0&&!(t in e))&&aE(e,t,r)}Dl.exports=oE});var Bl=u((rF,Nl)=>{"use strict";function sE(e){return function(t,r,a){for(var n=-1,o=Object(t),s=a(t),i=s.length;i--;){var p=s[e?i:++n];if(r(o[p],p,o)===!1)break}return t}}Nl.exports=sE});var Oo=u((aF,Ml)=>{"use strict";var iE=Bl(),uE=iE();Ml.exports=uE});var Po=u((ta,Xt)=>{"use strict";var pE=ne(),Ql=typeof ta=="object"&&ta&&!ta.nodeType&&ta,Gl=Ql&&typeof Xt=="object"&&Xt&&!Xt.nodeType&&Xt,cE=Gl&&Gl.exports===Ql,kl=cE?pE.Buffer:void 0,Fl=kl?kl.allocUnsafe:void 0;function lE(e,t){if(t)return e.slice();var r=e.length,a=Fl?Fl(r):new e.constructor(r);return e.copy(a),a}Xt.exports=lE});var Lo=u((nF,jl)=>{"use strict";var dE=ne(),fE=dE.Uint8Array;jl.exports=fE});var Za=u((oF,$l)=>{"use strict";var Wl=Lo();function mE(e){var t=new e.constructor(e.byteLength);return new Wl(t).set(new Wl(e)),t}$l.exports=mE});var Co=u((sF,Vl)=>{"use strict";var gE=Za();function hE(e,t){var r=t?gE(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}Vl.exports=hE});var Zt=u((iF,Kl)=>{"use strict";function yE(e,t){var r=-1,a=e.length;for(t||(t=Array(a));++r<a;)t[r]=e[r];return t}Kl.exports=yE});var ra=u((uF,Hl)=>{"use strict";var AE=ve(),Yl=Object.create,bE=function(){function e(){}return function(t){if(!AE(t))return{};if(Yl)return Yl(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();Hl.exports=bE});var qo=u((pF,zl)=>{"use strict";function IE(e,t){return function(r){return e(t(r))}}zl.exports=IE});var en=u((cF,Jl)=>{"use strict";var SE=qo(),wE=SE(Object.getPrototypeOf,Object);Jl.exports=wE});var tn=u((lF,Xl)=>{"use strict";var vE=Object.prototype;function TE(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||vE;return e===r}Xl.exports=TE});var Uo=u((dF,Zl)=>{"use strict";var EE=ra(),RE=en(),xE=tn();function _E(e){return typeof e.constructor=="function"&&!xE(e)?EE(RE(e)):{}}Zl.exports=_E});var td=u((fF,ed)=>{"use strict";function OE(){return!1}ed.exports=OE});var na=u((aa,er)=>{"use strict";var PE=ne(),LE=td(),nd=typeof aa=="object"&&aa&&!aa.nodeType&&aa,rd=nd&&typeof er=="object"&&er&&!er.nodeType&&er,CE=rd&&rd.exports===nd,ad=CE?PE.Buffer:void 0,qE=ad?ad.isBuffer:void 0,UE=qE||LE;er.exports=UE});var Do=u((mF,sd)=>{"use strict";var DE=dt(),NE=en(),BE=ge(),ME="[object Object]",GE=Function.prototype,kE=Object.prototype,od=GE.toString,FE=kE.hasOwnProperty,QE=od.call(Object);function jE(e){if(!BE(e)||DE(e)!=ME)return!1;var t=NE(e);if(t===null)return!0;var r=FE.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&od.call(r)==QE}sd.exports=jE});var ud=u((gF,id)=>{"use strict";var WE=dt(),$E=Xa(),VE=ge(),KE="[object Arguments]",YE="[object Array]",HE="[object Boolean]",zE="[object Date]",JE="[object Error]",XE="[object Function]",ZE="[object Map]",eR="[object Number]",tR="[object Object]",rR="[object RegExp]",aR="[object Set]",nR="[object String]",oR="[object WeakMap]",sR="[object ArrayBuffer]",iR="[object DataView]",uR="[object Float32Array]",pR="[object Float64Array]",cR="[object Int8Array]",lR="[object Int16Array]",dR="[object Int32Array]",fR="[object Uint8Array]",mR="[object Uint8ClampedArray]",gR="[object Uint16Array]",hR="[object Uint32Array]",N={};N[uR]=N[pR]=N[cR]=N[lR]=N[dR]=N[fR]=N[mR]=N[gR]=N[hR]=!0;N[KE]=N[YE]=N[sR]=N[HE]=N[iR]=N[zE]=N[JE]=N[XE]=N[ZE]=N[eR]=N[tR]=N[rR]=N[aR]=N[nR]=N[oR]=!1;function yR(e){return VE(e)&&$E(e.length)&&!!N[WE(e)]}id.exports=yR});var rn=u((hF,pd)=>{"use strict";function AR(e){return function(t){return e(t)}}pd.exports=AR});var an=u((oa,tr)=>{"use strict";var bR=fo(),cd=typeof oa=="object"&&oa&&!oa.nodeType&&oa,sa=cd&&typeof tr=="object"&&tr&&!tr.nodeType&&tr,IR=sa&&sa.exports===cd,No=IR&&bR.process,SR=function(){try{var e=sa&&sa.require&&sa.require("util").types;return e||No&&No.binding&&No.binding("util")}catch{}}();tr.exports=SR});var nn=u((yF,fd)=>{"use strict";var wR=ud(),vR=rn(),ld=an(),dd=ld&&ld.isTypedArray,TR=dd?vR(dd):wR;fd.exports=TR});var Bo=u((AF,md)=>{"use strict";function ER(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}md.exports=ER});var Mo=u((bF,gd)=>{"use strict";var RR=ea(),xR=Kt(),_R=Object.prototype,OR=_R.hasOwnProperty;function PR(e,t,r){var a=e[t];(!(OR.call(e,t)&&xR(a,r))||r===void 0&&!(t in e))&&RR(e,t,r)}gd.exports=PR});var rr=u((IF,hd)=>{"use strict";var LR=Mo(),CR=ea();function qR(e,t,r,a){var n=!r;r||(r={});for(var o=-1,s=t.length;++o<s;){var i=t[o],p=a?a(r[i],e[i],i,r,e):void 0;p===void 0&&(p=e[i]),n?CR(r,i,p):LR(r,i,p)}return r}hd.exports=qR});var Ad=u((SF,yd)=>{"use strict";function UR(e,t){for(var r=-1,a=Array(e);++r<e;)a[r]=t(r);return a}yd.exports=UR});var ia=u((wF,bd)=>{"use strict";var DR=9007199254740991,NR=/^(?:0|[1-9]\d*)$/;function BR(e,t){var r=typeof e;return t=t??DR,!!t&&(r=="number"||r!="symbol"&&NR.test(e))&&e>-1&&e%1==0&&e<t}bd.exports=BR});var Go=u((vF,Id)=>{"use strict";var MR=Ad(),GR=Vr(),kR=ee(),FR=na(),QR=ia(),jR=nn(),WR=Object.prototype,$R=WR.hasOwnProperty;function VR(e,t){var r=kR(e),a=!r&&GR(e),n=!r&&!a&&FR(e),o=!r&&!a&&!n&&jR(e),s=r||a||n||o,i=s?MR(e.length,String):[],p=i.length;for(var f in e)(t||$R.call(e,f))&&!(s&&(f=="length"||n&&(f=="offset"||f=="parent")||o&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||QR(f,p)))&&i.push(f);return i}Id.exports=VR});var wd=u((TF,Sd)=>{"use strict";function KR(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}Sd.exports=KR});var Td=u((EF,vd)=>{"use strict";var YR=ve(),HR=tn(),zR=wd(),JR=Object.prototype,XR=JR.hasOwnProperty;function ZR(e){if(!YR(e))return zR(e);var t=HR(e),r=[];for(var a in e)a=="constructor"&&(t||!XR.call(e,a))||r.push(a);return r}vd.exports=ZR});var ar=u((RF,Ed)=>{"use strict";var ex=Go(),tx=Td(),rx=zt();function ax(e){return rx(e)?ex(e,!0):tx(e)}Ed.exports=ax});var xd=u((xF,Rd)=>{"use strict";var nx=rr(),ox=ar();function sx(e){return nx(e,ox(e))}Rd.exports=sx});var qd=u((_F,Cd)=>{"use strict";var _d=_o(),ix=Po(),ux=Co(),px=Zt(),cx=Uo(),Od=Vr(),Pd=ee(),lx=xo(),dx=na(),fx=Yr(),mx=ve(),gx=Do(),hx=nn(),Ld=Bo(),yx=xd();function Ax(e,t,r,a,n,o,s){var i=Ld(e,r),p=Ld(t,r),f=s.get(p);if(f){_d(e,r,f);return}var m=o?o(i,p,r+"",e,t,s):void 0,g=m===void 0;if(g){var h=Pd(p),b=!h&&dx(p),E=!h&&!b&&hx(p);m=p,h||b||E?Pd(i)?m=i:lx(i)?m=px(i):b?(g=!1,m=ix(p,!0)):E?(g=!1,m=ux(p,!0)):m=[]:gx(p)||Od(p)?(m=i,Od(i)?m=yx(i):(!mx(i)||fx(i))&&(m=cx(p))):g=!1}g&&(s.set(p,m),n(m,p,a,o,s),s.delete(p)),_d(e,r,m)}Cd.exports=Ax});var Nd=u((OF,Dd)=>{"use strict";var bx=Zr(),Ix=_o(),Sx=Oo(),wx=qd(),vx=ve(),Tx=ar(),Ex=Bo();function Ud(e,t,r,a,n){e!==t&&Sx(t,function(o,s){if(n||(n=new bx),vx(o))wx(e,t,s,r,Ud,a,n);else{var i=a?a(Ex(e,s),o,s+"",e,t,n):void 0;i===void 0&&(i=o),Ix(e,s,i)}},Tx)}Dd.exports=Ud});var Md=u((PF,Bd)=>{"use strict";var Rx=Kt(),xx=zt(),_x=ia(),Ox=ve();function Px(e,t,r){if(!Ox(r))return!1;var a=typeof t;return(a=="number"?xx(r)&&_x(t,r.length):a=="string"&&t in r)?Rx(r[t],e):!1}Bd.exports=Px});var kd=u((LF,Gd)=>{"use strict";var Lx=Io(),Cx=Md();function qx(e){return Lx(function(t,r){var a=-1,n=r.length,o=n>1?r[n-1]:void 0,s=n>2?r[2]:void 0;for(o=e.length>3&&typeof o=="function"?(n--,o):void 0,s&&Cx(r[0],r[1],s)&&(o=n<3?void 0:o,n=1),t=Object(t);++a<n;){var i=r[a];i&&e(t,i,a,o)}return t})}Gd.exports=qx});var ko=u((CF,Fd)=>{"use strict";var Ux=Nd(),Dx=kd(),Nx=Dx(function(e,t,r){Ux(e,t,r)});Fd.exports=Nx});var jf=u(le=>{"use strict";le.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"};le.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"]};le.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};le.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};le.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};le.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]};le.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}};le.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}};le.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=le.aliasToReal,r={};for(var a in t){var n=t[a];e.call(r,n)?r[n].push(a):r[n]=[a]}return r}();le.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"};le.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};le.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 Ds=u((ej,Wf)=>{"use strict";Wf.exports={}});var Yf=u((tj,Kf)=>{"use strict";var J=jf(),gO=Ds(),$f=Array.prototype.push;function hO(e,t){return t==2?function(r,a){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}function Ns(e,t){return t==2?function(r,a){return e(r,a)}:function(r){return e(r)}}function Vf(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}function yO(e){return function(t){return e({},t)}}function AO(e,t){return function(){for(var r=arguments.length,a=r-1,n=Array(r);r--;)n[r]=arguments[r];var o=n[t],s=n.slice(0,t);return o&&$f.apply(s,o),t!=a&&$f.apply(s,n.slice(t+1)),e.apply(this,s)}}function Bs(e,t){return function(){var r=arguments.length;if(r){for(var a=Array(r);r--;)a[r]=arguments[r];var n=a[0]=t.apply(void 0,a);return e.apply(void 0,a),n}}}function Ms(e,t,r,a){var n=typeof t=="function",o=t===Object(t);if(o&&(a=r,r=t,t=void 0),r==null)throw new TypeError;a||(a={});var s={cap:"cap"in a?a.cap:!0,curry:"curry"in a?a.curry:!0,fixed:"fixed"in a?a.fixed:!0,immutable:"immutable"in a?a.immutable:!0,rearg:"rearg"in a?a.rearg:!0},i=n?r:gO,p="curry"in a&&a.curry,f="fixed"in a&&a.fixed,m="rearg"in a&&a.rearg,g=n?r.runInContext():void 0,h=n?r:{ary:e.ary,assign:e.assign,clone:e.clone,curry:e.curry,forEach:e.forEach,isArray:e.isArray,isError:e.isError,isFunction:e.isFunction,isWeakMap:e.isWeakMap,iteratee:e.iteratee,keys:e.keys,rearg:e.rearg,toInteger:e.toInteger,toPath:e.toPath},b=h.ary,E=h.assign,L=h.clone,_=h.curry,R=h.forEach,B=h.isArray,st=h.isError,be=h.isFunction,it=h.isWeakMap,Gt=h.keys,Ar=h.rearg,br=h.toInteger,Xb=h.toPath,gu=Gt(J.aryMethod),Zb={castArray:function(S){return function(){var y=arguments[0];return B(y)?S(Vf(y)):S.apply(void 0,arguments)}},iteratee:function(S){return function(){var y=arguments[0],I=arguments[1],T=S(y,I),O=T.length;return s.cap&&typeof I=="number"?(I=I>2?I-2:1,O&&O<=I?T:Ns(T,I)):T}},mixin:function(S){return function(y){var I=this;if(!be(I))return S(I,Object(y));var T=[];return R(Gt(y),function(O){be(y[O])&&T.push([O,I.prototype[O]])}),S(I,Object(y)),R(T,function(O){var te=O[1];be(te)?I.prototype[O[0]]=te:delete I.prototype[O[0]]}),I}},nthArg:function(S){return function(y){var I=y<0?1:br(y)+1;return _(S(y),I)}},rearg:function(S){return function(y,I){var T=I?I.length:0;return _(S(y,I),T)}},runInContext:function(S){return function(y){return Ms(e,S(y),a)}}};function eI(S,y){if(s.cap){var I=J.iterateeRearg[S];if(I)return oI(y,I);var T=!n&&J.iterateeAry[S];if(T)return nI(y,T)}return y}function tI(S,y,I){return p||s.curry&&I>1?_(y,I):y}function hu(S,y,I){if(s.fixed&&(f||!J.skipFixed[S])){var T=J.methodSpread[S],O=T&&T.start;return O===void 0?b(y,I):AO(y,O)}return y}function yu(S,y,I){return s.rearg&&I>1&&(m||!J.skipRearg[S])?Ar(y,J.methodRearg[S]||J.aryRearg[I]):y}function rI(S,y){y=Xb(y);for(var I=-1,T=y.length,O=T-1,te=L(Object(S)),De=te;De!=null&&++I<T;){var Ie=y[I],Ne=De[Ie];Ne!=null&&!(be(Ne)||st(Ne)||it(Ne))&&(De[Ie]=L(I==O?Ne:Object(Ne))),De=De[Ie]}return te}function aI(S){return fe.runInContext.convert(S)(void 0)}function Au(S,y){var I=J.aliasToReal[S]||S,T=J.remap[I]||I,O=a;return function(te){var De=n?g:h,Ie=n?g[T]:y,Ne=E(E({},O),te);return Ms(De,I,Ie,Ne)}}function nI(S,y){return bu(S,function(I){return typeof I=="function"?Ns(I,y):I})}function oI(S,y){return bu(S,function(I){var T=y.length;return hO(Ar(Ns(I,T),y),T)})}function bu(S,y){return function(){var I=arguments.length;if(!I)return S();for(var T=Array(I);I--;)T[I]=arguments[I];var O=s.rearg?0:I-1;return T[O]=y(T[O]),S.apply(void 0,T)}}function Iu(S,y,I){var T,O=J.aliasToReal[S]||S,te=y,De=Zb[O];return De?te=De(y):s.immutable&&(J.mutate.array[O]?te=Bs(y,Vf):J.mutate.object[O]?te=Bs(y,yO(y)):J.mutate.set[O]&&(te=Bs(y,rI))),R(gu,function(Ie){return R(J.aryMethod[Ie],function(Ne){if(O==Ne){var Su=J.methodSpread[O],sI=Su&&Su.afterRearg;return T=sI?hu(O,yu(O,te,Ie),Ie):yu(O,hu(O,te,Ie),Ie),T=eI(O,T),T=tI(O,T,Ie),!1}}),!T}),T||(T=te),T==y&&(T=p?_(T,1):function(){return y.apply(this,arguments)}),T.convert=Au(O,y),T.placeholder=y.placeholder=I,T}if(!o)return Iu(t,r,i);var fe=r,Ir=[];return R(gu,function(S){R(J.aryMethod[S],function(y){var I=fe[J.remap[y]||y];I&&Ir.push([y,Iu(y,I,fe)])})}),R(Gt(fe),function(S){var y=fe[S];if(typeof y=="function"){for(var I=Ir.length;I--;)if(Ir[I][0]==S)return;y.convert=Au(S,y),Ir.push([S,y])}}),R(Ir,function(S){fe[S[0]]=S[1]}),fe.convert=aI,fe.placeholder=fe,R(Gt(fe),function(S){R(J.realToAlias[S]||[],function(y){fe[y]=fe[S]})}),fe}Kf.exports=Ms});var Gs=u((rj,Hf)=>{"use strict";var bO=ft(),IO=ne(),SO=bO(IO,"WeakMap");Hf.exports=SO});var ks=u((aj,Jf)=>{"use strict";var zf=Gs(),wO=zf&&new zf;Jf.exports=wO});var Fs=u((nj,Zf)=>{"use strict";var vO=Kr(),Xf=ks(),TO=Xf?function(e,t){return Xf.set(e,t),e}:vO;Zf.exports=TO});var Aa=u((oj,em)=>{"use strict";var EO=ra(),RO=ve();function xO(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),a=e.apply(r,t);return RO(a)?a:r}}em.exports=xO});var rm=u((sj,tm)=>{"use strict";var _O=Aa(),OO=ne(),PO=1;function LO(e,t,r){var a=t&PO,n=_O(e);function o(){var s=this&&this!==OO&&this instanceof o?n:e;return s.apply(a?r:this,arguments)}return o}tm.exports=LO});var Qs=u((ij,am)=>{"use strict";var CO=Math.max;function qO(e,t,r,a){for(var n=-1,o=e.length,s=r.length,i=-1,p=t.length,f=CO(o-s,0),m=Array(p+f),g=!a;++i<p;)m[i]=t[i];for(;++n<s;)(g||n<o)&&(m[r[n]]=e[n]);for(;f--;)m[i++]=e[n++];return m}am.exports=qO});var Ws=u((uj,nm)=>{"use strict";var UO=Math.max;function DO(e,t,r,a){for(var n=-1,o=e.length,s=-1,i=r.length,p=-1,f=t.length,m=UO(o-i,0),g=Array(m+f),h=!a;++n<m;)g[n]=e[n];for(var b=n;++p<f;)g[b+p]=t[p];for(;++s<i;)(h||n<o)&&(g[b+r[s]]=e[n++]);return g}nm.exports=DO});var sm=u((pj,om)=>{"use strict";function NO(e,t){for(var r=e.length,a=0;r--;)e[r]===t&&++a;return a}om.exports=NO});var Tn=u((cj,im)=>{"use strict";function BO(){}im.exports=BO});var Rn=u((lj,um)=>{"use strict";var MO=ra(),GO=Tn(),kO=4294967295;function En(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=kO,this.__views__=[]}En.prototype=MO(GO.prototype);En.prototype.constructor=En;um.exports=En});var $s=u((dj,cm)=>{"use strict";var pm=ks(),FO=Eo(),QO=pm?function(e){return pm.get(e)}:FO;cm.exports=QO});var dm=u((fj,lm)=>{"use strict";var jO={};lm.exports=jO});var gm=u((mj,mm)=>{"use strict";var fm=dm(),WO=Object.prototype,$O=WO.hasOwnProperty;function VO(e){for(var t=e.name+"",r=fm[t],a=$O.call(fm,t)?r.length:0;a--;){var n=r[a],o=n.func;if(o==null||o==e)return n.name}return t}mm.exports=VO});var Vs=u((gj,hm)=>{"use strict";var KO=ra(),YO=Tn();function xn(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}xn.prototype=KO(YO.prototype);xn.prototype.constructor=xn;hm.exports=xn});var Am=u((hj,ym)=>{"use strict";var HO=Rn(),zO=Vs(),JO=Zt();function XO(e){if(e instanceof HO)return e.clone();var t=new zO(e.__wrapped__,e.__chain__);return t.__actions__=JO(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}ym.exports=XO});var Sm=u((yj,Im)=>{"use strict";var ZO=Rn(),bm=Vs(),eP=Tn(),tP=ee(),rP=ge(),aP=Am(),nP=Object.prototype,oP=nP.hasOwnProperty;function _n(e){if(rP(e)&&!tP(e)&&!(e instanceof ZO)){if(e instanceof bm)return e;if(oP.call(e,"__wrapped__"))return aP(e)}return new bm(e)}_n.prototype=eP.prototype;_n.prototype.constructor=_n;Im.exports=_n});var vm=u((Aj,wm)=>{"use strict";var sP=Rn(),iP=$s(),uP=gm(),pP=Sm();function cP(e){var t=uP(e),r=pP[t];if(typeof r!="function"||!(t in sP.prototype))return!1;if(e===r)return!0;var a=iP(r);return!!a&&e===a[0]}wm.exports=cP});var Ks=u((bj,Tm)=>{"use strict";var lP=Fs(),dP=bo(),fP=dP(lP);Tm.exports=fP});var Rm=u((Ij,Em)=>{"use strict";var mP=/\{\n\/\* \[wrapped with (.+)\] \*/,gP=/,? & /;function hP(e){var t=e.match(mP);return t?t[1].split(gP):[]}Em.exports=hP});var _m=u((Sj,xm)=>{"use strict";var yP=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function AP(e,t){var r=t.length;if(!r)return e;var a=r-1;return t[a]=(r>1?"& ":"")+t[a],t=t.join(r>2?", ":" "),e.replace(yP,`{
|
|
1
|
+
"use strict";var fI=Object.create;var La=Object.defineProperty;var mI=Object.getOwnPropertyDescriptor;var gI=Object.getOwnPropertyNames;var yI=Object.getPrototypeOf,hI=Object.prototype.hasOwnProperty;var u=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),w=(e,t)=>{for(var r in t)La(e,r,{get:t[r],enumerable:!0})},xu=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of gI(t))!hI.call(e,n)&&n!==r&&La(e,n,{get:()=>t[n],enumerable:!(a=mI(t,n))||a.enumerable});return e};var C=(e,t,r)=>(r=e!=null?fI(yI(e)):{},xu(t||!e||!e.__esModule?La(r,"default",{value:e,enumerable:!0}):r,e)),AI=e=>xu(La({},"__esModule",{value:!0}),e);var Va=u((D0,dp)=>{"use strict";function gS(e,t){for(var r=-1,a=t.length,n=e.length;++r<a;)e[n+r]=t[r];return e}dp.exports=gS});var go=u((N0,fp)=>{"use strict";var yS=typeof global=="object"&&global&&global.Object===Object&&global;fp.exports=yS});var ne=u((B0,mp)=>{"use strict";var hS=go(),AS=typeof self=="object"&&self&&self.Object===Object&&self,bS=hS||AS||Function("return this")();mp.exports=bS});var Rt=u((M0,gp)=>{"use strict";var IS=ne(),SS=IS.Symbol;gp.exports=SS});var bp=u((G0,Ap)=>{"use strict";var yp=Rt(),hp=Object.prototype,wS=hp.hasOwnProperty,TS=hp.toString,Vr=yp?yp.toStringTag:void 0;function vS(e){var t=wS.call(e,Vr),r=e[Vr];try{e[Vr]=void 0;var a=!0}catch{}var n=TS.call(e);return a&&(t?e[Vr]=r:delete e[Vr]),n}Ap.exports=vS});var Sp=u((k0,Ip)=>{"use strict";var ES=Object.prototype,RS=ES.toString;function xS(e){return RS.call(e)}Ip.exports=xS});var dt=u((F0,vp)=>{"use strict";var wp=Rt(),_S=bp(),OS=Sp(),PS="[object Null]",LS="[object Undefined]",Tp=wp?wp.toStringTag:void 0;function CS(e){return e==null?e===void 0?LS:PS:Tp&&Tp in Object(e)?_S(e):OS(e)}vp.exports=CS});var ge=u((Q0,Ep)=>{"use strict";function qS(e){return e!=null&&typeof e=="object"}Ep.exports=qS});var xp=u((j0,Rp)=>{"use strict";var US=dt(),DS=ge(),NS="[object Arguments]";function BS(e){return DS(e)&&US(e)==NS}Rp.exports=BS});var Yr=u((W0,Pp)=>{"use strict";var _p=xp(),MS=ge(),Op=Object.prototype,GS=Op.hasOwnProperty,kS=Op.propertyIsEnumerable,FS=_p(function(){return arguments}())?_p:function(e){return MS(e)&&GS.call(e,"callee")&&!kS.call(e,"callee")};Pp.exports=FS});var ee=u(($0,Lp)=>{"use strict";var QS=Array.isArray;Lp.exports=QS});var Dp=u((K0,Up)=>{"use strict";var Cp=Rt(),jS=Yr(),WS=ee(),qp=Cp?Cp.isConcatSpreadable:void 0;function $S(e){return WS(e)||jS(e)||!!(qp&&e&&e[qp])}Up.exports=$S});var yo=u((V0,Bp)=>{"use strict";var KS=Va(),VS=Dp();function Np(e,t,r,a,n){var o=-1,s=e.length;for(r||(r=VS),n||(n=[]);++o<s;){var i=e[o];t>0&&r(i)?t>1?Np(i,t-1,r,a,n):KS(n,i):a||(n[n.length]=i)}return n}Bp.exports=Np});var Hr=u((Y0,Mp)=>{"use strict";function YS(e){return e}Mp.exports=YS});var Ya=u((H0,Gp)=>{"use strict";function HS(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)}Gp.exports=HS});var ho=u((z0,Fp)=>{"use strict";var zS=Ya(),kp=Math.max;function JS(e,t,r){return t=kp(t===void 0?e.length-1:t,0),function(){for(var a=arguments,n=-1,o=kp(a.length-t,0),s=Array(o);++n<o;)s[n]=a[t+n];n=-1;for(var i=Array(t+1);++n<t;)i[n]=a[n];return i[t]=r(s),zS(e,this,i)}}Fp.exports=JS});var jp=u((J0,Qp)=>{"use strict";function XS(e){return function(){return e}}Qp.exports=XS});var Te=u((X0,Wp)=>{"use strict";function ZS(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}Wp.exports=ZS});var zr=u((Z0,$p)=>{"use strict";var ew=dt(),tw=Te(),rw="[object AsyncFunction]",aw="[object Function]",nw="[object GeneratorFunction]",ow="[object Proxy]";function sw(e){if(!tw(e))return!1;var t=ew(e);return t==aw||t==nw||t==rw||t==ow}$p.exports=sw});var Vp=u((ek,Kp)=>{"use strict";var iw=ne(),uw=iw["__core-js_shared__"];Kp.exports=uw});var zp=u((tk,Hp)=>{"use strict";var Ao=Vp(),Yp=function(){var e=/[^.]+$/.exec(Ao&&Ao.keys&&Ao.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function pw(e){return!!Yp&&Yp in e}Hp.exports=pw});var bo=u((rk,Jp)=>{"use strict";var cw=Function.prototype,lw=cw.toString;function dw(e){if(e!=null){try{return lw.call(e)}catch{}try{return e+""}catch{}}return""}Jp.exports=dw});var Zp=u((ak,Xp)=>{"use strict";var fw=zr(),mw=zp(),gw=Te(),yw=bo(),hw=/[\\^$.*+?()[\]{}|]/g,Aw=/^\[object .+?Constructor\]$/,bw=Function.prototype,Iw=Object.prototype,Sw=bw.toString,ww=Iw.hasOwnProperty,Tw=RegExp("^"+Sw.call(ww).replace(hw,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function vw(e){if(!gw(e)||mw(e))return!1;var t=fw(e)?Tw:Aw;return t.test(yw(e))}Xp.exports=vw});var tc=u((nk,ec)=>{"use strict";function Ew(e,t){return e?.[t]}ec.exports=Ew});var ft=u((ok,rc)=>{"use strict";var Rw=Zp(),xw=tc();function _w(e,t){var r=xw(e,t);return Rw(r)?r:void 0}rc.exports=_w});var Io=u((sk,ac)=>{"use strict";var Ow=ft(),Pw=function(){try{var e=Ow(Object,"defineProperty");return e({},"",{}),e}catch{}}();ac.exports=Pw});var sc=u((ik,oc)=>{"use strict";var Lw=jp(),nc=Io(),Cw=Hr(),qw=nc?function(e,t){return nc(e,"toString",{configurable:!0,enumerable:!1,value:Lw(t),writable:!0})}:Cw;oc.exports=qw});var So=u((uk,ic)=>{"use strict";var Uw=800,Dw=16,Nw=Date.now;function Bw(e){var t=0,r=0;return function(){var a=Nw(),n=Dw-(a-r);if(r=a,n>0){if(++t>=Uw)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}ic.exports=Bw});var Ha=u((pk,uc)=>{"use strict";var Mw=sc(),Gw=So(),kw=Gw(Mw);uc.exports=kw});var wo=u((ck,pc)=>{"use strict";var Fw=Hr(),Qw=ho(),jw=Ha();function Ww(e,t){return jw(Qw(e,t,Fw),e+"")}pc.exports=Ww});var Jr=u((lk,cc)=>{"use strict";var $w=ft(),Kw=$w(Object,"create");cc.exports=Kw});var fc=u((dk,dc)=>{"use strict";var lc=Jr();function Vw(){this.__data__=lc?lc(null):{},this.size=0}dc.exports=Vw});var gc=u((fk,mc)=>{"use strict";function Yw(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}mc.exports=Yw});var hc=u((mk,yc)=>{"use strict";var Hw=Jr(),zw="__lodash_hash_undefined__",Jw=Object.prototype,Xw=Jw.hasOwnProperty;function Zw(e){var t=this.__data__;if(Hw){var r=t[e];return r===zw?void 0:r}return Xw.call(t,e)?t[e]:void 0}yc.exports=Zw});var bc=u((gk,Ac)=>{"use strict";var eT=Jr(),tT=Object.prototype,rT=tT.hasOwnProperty;function aT(e){var t=this.__data__;return eT?t[e]!==void 0:rT.call(t,e)}Ac.exports=aT});var Sc=u((yk,Ic)=>{"use strict";var nT=Jr(),oT="__lodash_hash_undefined__";function sT(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=nT&&t===void 0?oT:t,this}Ic.exports=sT});var Tc=u((hk,wc)=>{"use strict";var iT=fc(),uT=gc(),pT=hc(),cT=bc(),lT=Sc();function Vt(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var a=e[t];this.set(a[0],a[1])}}Vt.prototype.clear=iT;Vt.prototype.delete=uT;Vt.prototype.get=pT;Vt.prototype.has=cT;Vt.prototype.set=lT;wc.exports=Vt});var Ec=u((Ak,vc)=>{"use strict";function dT(){this.__data__=[],this.size=0}vc.exports=dT});var Yt=u((bk,Rc)=>{"use strict";function fT(e,t){return e===t||e!==e&&t!==t}Rc.exports=fT});var Xr=u((Ik,xc)=>{"use strict";var mT=Yt();function gT(e,t){for(var r=e.length;r--;)if(mT(e[r][0],t))return r;return-1}xc.exports=gT});var Oc=u((Sk,_c)=>{"use strict";var yT=Xr(),hT=Array.prototype,AT=hT.splice;function bT(e){var t=this.__data__,r=yT(t,e);if(r<0)return!1;var a=t.length-1;return r==a?t.pop():AT.call(t,r,1),--this.size,!0}_c.exports=bT});var Lc=u((wk,Pc)=>{"use strict";var IT=Xr();function ST(e){var t=this.__data__,r=IT(t,e);return r<0?void 0:t[r][1]}Pc.exports=ST});var qc=u((Tk,Cc)=>{"use strict";var wT=Xr();function TT(e){return wT(this.__data__,e)>-1}Cc.exports=TT});var Dc=u((vk,Uc)=>{"use strict";var vT=Xr();function ET(e,t){var r=this.__data__,a=vT(r,e);return a<0?(++this.size,r.push([e,t])):r[a][1]=t,this}Uc.exports=ET});var Zr=u((Ek,Nc)=>{"use strict";var RT=Ec(),xT=Oc(),_T=Lc(),OT=qc(),PT=Dc();function Ht(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var a=e[t];this.set(a[0],a[1])}}Ht.prototype.clear=RT;Ht.prototype.delete=xT;Ht.prototype.get=_T;Ht.prototype.has=OT;Ht.prototype.set=PT;Nc.exports=Ht});var za=u((Rk,Bc)=>{"use strict";var LT=ft(),CT=ne(),qT=LT(CT,"Map");Bc.exports=qT});var kc=u((xk,Gc)=>{"use strict";var Mc=Tc(),UT=Zr(),DT=za();function NT(){this.size=0,this.__data__={hash:new Mc,map:new(DT||UT),string:new Mc}}Gc.exports=NT});var Qc=u((_k,Fc)=>{"use strict";function BT(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}Fc.exports=BT});var ea=u((Ok,jc)=>{"use strict";var MT=Qc();function GT(e,t){var r=e.__data__;return MT(t)?r[typeof t=="string"?"string":"hash"]:r.map}jc.exports=GT});var $c=u((Pk,Wc)=>{"use strict";var kT=ea();function FT(e){var t=kT(this,e).delete(e);return this.size-=t?1:0,t}Wc.exports=FT});var Vc=u((Lk,Kc)=>{"use strict";var QT=ea();function jT(e){return QT(this,e).get(e)}Kc.exports=jT});var Hc=u((Ck,Yc)=>{"use strict";var WT=ea();function $T(e){return WT(this,e).has(e)}Yc.exports=$T});var Jc=u((qk,zc)=>{"use strict";var KT=ea();function VT(e,t){var r=KT(this,e),a=r.size;return r.set(e,t),this.size+=r.size==a?0:1,this}zc.exports=VT});var Ja=u((Uk,Xc)=>{"use strict";var YT=kc(),HT=$c(),zT=Vc(),JT=Hc(),XT=Jc();function zt(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var a=e[t];this.set(a[0],a[1])}}zt.prototype.clear=YT;zt.prototype.delete=HT;zt.prototype.get=zT;zt.prototype.has=JT;zt.prototype.set=XT;Xc.exports=zt});var el=u((Dk,Zc)=>{"use strict";var ZT="__lodash_hash_undefined__";function ev(e){return this.__data__.set(e,ZT),this}Zc.exports=ev});var rl=u((Nk,tl)=>{"use strict";function tv(e){return this.__data__.has(e)}tl.exports=tv});var To=u((Bk,al)=>{"use strict";var rv=Ja(),av=el(),nv=rl();function Xa(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new rv;++t<r;)this.add(e[t])}Xa.prototype.add=Xa.prototype.push=av;Xa.prototype.has=nv;al.exports=Xa});var ol=u((Mk,nl)=>{"use strict";function ov(e,t,r,a){for(var n=e.length,o=r+(a?1:-1);a?o--:++o<n;)if(t(e[o],o,e))return o;return-1}nl.exports=ov});var il=u((Gk,sl)=>{"use strict";function sv(e){return e!==e}sl.exports=sv});var pl=u((kk,ul)=>{"use strict";function iv(e,t,r){for(var a=r-1,n=e.length;++a<n;)if(e[a]===t)return a;return-1}ul.exports=iv});var ll=u((Fk,cl)=>{"use strict";var uv=ol(),pv=il(),cv=pl();function lv(e,t,r){return t===t?cv(e,t,r):uv(e,pv,r)}cl.exports=lv});var vo=u((Qk,dl)=>{"use strict";var dv=ll();function fv(e,t){var r=e==null?0:e.length;return!!r&&dv(e,t,0)>-1}dl.exports=fv});var ml=u((jk,fl)=>{"use strict";function mv(e,t,r){for(var a=-1,n=e==null?0:e.length;++a<n;)if(r(t,e[a]))return!0;return!1}fl.exports=mv});var Eo=u((Wk,gl)=>{"use strict";function gv(e,t){return e.has(t)}gl.exports=gv});var Ro=u(($k,yl)=>{"use strict";var yv=ft(),hv=ne(),Av=yv(hv,"Set");yl.exports=Av});var xo=u((Kk,hl)=>{"use strict";function bv(){}hl.exports=bv});var Za=u((Vk,Al)=>{"use strict";function Iv(e){var t=-1,r=Array(e.size);return e.forEach(function(a){r[++t]=a}),r}Al.exports=Iv});var Il=u((Yk,bl)=>{"use strict";var _o=Ro(),Sv=xo(),wv=Za(),Tv=1/0,vv=_o&&1/wv(new _o([,-0]))[1]==Tv?function(e){return new _o(e)}:Sv;bl.exports=vv});var wl=u((Hk,Sl)=>{"use strict";var Ev=To(),Rv=vo(),xv=ml(),_v=Eo(),Ov=Il(),Pv=Za(),Lv=200;function Cv(e,t,r){var a=-1,n=Rv,o=e.length,s=!0,i=[],p=i;if(r)s=!1,n=xv;else if(o>=Lv){var f=t?null:Ov(e);if(f)return Pv(f);s=!1,n=_v,p=new Ev}else p=t?[]:i;e:for(;++a<o;){var m=e[a],y=t?t(m):m;if(m=r||m!==0?m:0,s&&y===y){for(var g=p.length;g--;)if(p[g]===y)continue e;t&&p.push(y),i.push(m)}else n(p,y,r)||(p!==i&&p.push(y),i.push(m))}return i}Sl.exports=Cv});var en=u((zk,Tl)=>{"use strict";var qv=9007199254740991;function Uv(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=qv}Tl.exports=Uv});var Jt=u((Jk,vl)=>{"use strict";var Dv=zr(),Nv=en();function Bv(e){return e!=null&&Nv(e.length)&&!Dv(e)}vl.exports=Bv});var Oo=u((Xk,El)=>{"use strict";var Mv=Jt(),Gv=ge();function kv(e){return Gv(e)&&Mv(e)}El.exports=kv});var xl=u((Zk,Rl)=>{"use strict";var Fv=yo(),Qv=wo(),jv=wl(),Wv=Oo(),$v=Qv(function(e){return jv(Fv(e,1,Wv,!0))});Rl.exports=$v});var Ol=u((eF,_l)=>{"use strict";var Kv=Zr();function Vv(){this.__data__=new Kv,this.size=0}_l.exports=Vv});var Ll=u((tF,Pl)=>{"use strict";function Yv(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}Pl.exports=Yv});var ql=u((rF,Cl)=>{"use strict";function Hv(e){return this.__data__.get(e)}Cl.exports=Hv});var Dl=u((aF,Ul)=>{"use strict";function zv(e){return this.__data__.has(e)}Ul.exports=zv});var Bl=u((nF,Nl)=>{"use strict";var Jv=Zr(),Xv=za(),Zv=Ja(),eE=200;function tE(e,t){var r=this.__data__;if(r instanceof Jv){var a=r.__data__;if(!Xv||a.length<eE-1)return a.push([e,t]),this.size=++r.size,this;r=this.__data__=new Zv(a)}return r.set(e,t),this.size=r.size,this}Nl.exports=tE});var ta=u((oF,Ml)=>{"use strict";var rE=Zr(),aE=Ol(),nE=Ll(),oE=ql(),sE=Dl(),iE=Bl();function Xt(e){var t=this.__data__=new rE(e);this.size=t.size}Xt.prototype.clear=aE;Xt.prototype.delete=nE;Xt.prototype.get=oE;Xt.prototype.has=sE;Xt.prototype.set=iE;Ml.exports=Xt});var ra=u((sF,kl)=>{"use strict";var Gl=Io();function uE(e,t,r){t=="__proto__"&&Gl?Gl(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}kl.exports=uE});var Po=u((iF,Fl)=>{"use strict";var pE=ra(),cE=Yt();function lE(e,t,r){(r!==void 0&&!cE(e[t],r)||r===void 0&&!(t in e))&&pE(e,t,r)}Fl.exports=lE});var jl=u((uF,Ql)=>{"use strict";function dE(e){return function(t,r,a){for(var n=-1,o=Object(t),s=a(t),i=s.length;i--;){var p=s[e?i:++n];if(r(o[p],p,o)===!1)break}return t}}Ql.exports=dE});var Lo=u((pF,Wl)=>{"use strict";var fE=jl(),mE=fE();Wl.exports=mE});var Co=u((aa,Zt)=>{"use strict";var gE=ne(),Yl=typeof aa=="object"&&aa&&!aa.nodeType&&aa,$l=Yl&&typeof Zt=="object"&&Zt&&!Zt.nodeType&&Zt,yE=$l&&$l.exports===Yl,Kl=yE?gE.Buffer:void 0,Vl=Kl?Kl.allocUnsafe:void 0;function hE(e,t){if(t)return e.slice();var r=e.length,a=Vl?Vl(r):new e.constructor(r);return e.copy(a),a}Zt.exports=hE});var qo=u((cF,Hl)=>{"use strict";var AE=ne(),bE=AE.Uint8Array;Hl.exports=bE});var tn=u((lF,Jl)=>{"use strict";var zl=qo();function IE(e){var t=new e.constructor(e.byteLength);return new zl(t).set(new zl(e)),t}Jl.exports=IE});var Uo=u((dF,Xl)=>{"use strict";var SE=tn();function wE(e,t){var r=t?SE(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}Xl.exports=wE});var er=u((fF,Zl)=>{"use strict";function TE(e,t){var r=-1,a=e.length;for(t||(t=Array(a));++r<a;)t[r]=e[r];return t}Zl.exports=TE});var na=u((mF,td)=>{"use strict";var vE=Te(),ed=Object.create,EE=function(){function e(){}return function(t){if(!vE(t))return{};if(ed)return ed(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();td.exports=EE});var Do=u((gF,rd)=>{"use strict";function RE(e,t){return function(r){return e(t(r))}}rd.exports=RE});var rn=u((yF,ad)=>{"use strict";var xE=Do(),_E=xE(Object.getPrototypeOf,Object);ad.exports=_E});var an=u((hF,nd)=>{"use strict";var OE=Object.prototype;function PE(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||OE;return e===r}nd.exports=PE});var No=u((AF,od)=>{"use strict";var LE=na(),CE=rn(),qE=an();function UE(e){return typeof e.constructor=="function"&&!qE(e)?LE(CE(e)):{}}od.exports=UE});var id=u((bF,sd)=>{"use strict";function DE(){return!1}sd.exports=DE});var sa=u((oa,tr)=>{"use strict";var NE=ne(),BE=id(),cd=typeof oa=="object"&&oa&&!oa.nodeType&&oa,ud=cd&&typeof tr=="object"&&tr&&!tr.nodeType&&tr,ME=ud&&ud.exports===cd,pd=ME?NE.Buffer:void 0,GE=pd?pd.isBuffer:void 0,kE=GE||BE;tr.exports=kE});var Bo=u((IF,dd)=>{"use strict";var FE=dt(),QE=rn(),jE=ge(),WE="[object Object]",$E=Function.prototype,KE=Object.prototype,ld=$E.toString,VE=KE.hasOwnProperty,YE=ld.call(Object);function HE(e){if(!jE(e)||FE(e)!=WE)return!1;var t=QE(e);if(t===null)return!0;var r=VE.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&ld.call(r)==YE}dd.exports=HE});var md=u((SF,fd)=>{"use strict";var zE=dt(),JE=en(),XE=ge(),ZE="[object Arguments]",eR="[object Array]",tR="[object Boolean]",rR="[object Date]",aR="[object Error]",nR="[object Function]",oR="[object Map]",sR="[object Number]",iR="[object Object]",uR="[object RegExp]",pR="[object Set]",cR="[object String]",lR="[object WeakMap]",dR="[object ArrayBuffer]",fR="[object DataView]",mR="[object Float32Array]",gR="[object Float64Array]",yR="[object Int8Array]",hR="[object Int16Array]",AR="[object Int32Array]",bR="[object Uint8Array]",IR="[object Uint8ClampedArray]",SR="[object Uint16Array]",wR="[object Uint32Array]",B={};B[mR]=B[gR]=B[yR]=B[hR]=B[AR]=B[bR]=B[IR]=B[SR]=B[wR]=!0;B[ZE]=B[eR]=B[dR]=B[tR]=B[fR]=B[rR]=B[aR]=B[nR]=B[oR]=B[sR]=B[iR]=B[uR]=B[pR]=B[cR]=B[lR]=!1;function TR(e){return XE(e)&&JE(e.length)&&!!B[zE(e)]}fd.exports=TR});var nn=u((wF,gd)=>{"use strict";function vR(e){return function(t){return e(t)}}gd.exports=vR});var on=u((ia,rr)=>{"use strict";var ER=go(),yd=typeof ia=="object"&&ia&&!ia.nodeType&&ia,ua=yd&&typeof rr=="object"&&rr&&!rr.nodeType&&rr,RR=ua&&ua.exports===yd,Mo=RR&&ER.process,xR=function(){try{var e=ua&&ua.require&&ua.require("util").types;return e||Mo&&Mo.binding&&Mo.binding("util")}catch{}}();rr.exports=xR});var sn=u((TF,bd)=>{"use strict";var _R=md(),OR=nn(),hd=on(),Ad=hd&&hd.isTypedArray,PR=Ad?OR(Ad):_R;bd.exports=PR});var Go=u((vF,Id)=>{"use strict";function LR(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}Id.exports=LR});var ko=u((EF,Sd)=>{"use strict";var CR=ra(),qR=Yt(),UR=Object.prototype,DR=UR.hasOwnProperty;function NR(e,t,r){var a=e[t];(!(DR.call(e,t)&&qR(a,r))||r===void 0&&!(t in e))&&CR(e,t,r)}Sd.exports=NR});var ar=u((RF,wd)=>{"use strict";var BR=ko(),MR=ra();function GR(e,t,r,a){var n=!r;r||(r={});for(var o=-1,s=t.length;++o<s;){var i=t[o],p=a?a(r[i],e[i],i,r,e):void 0;p===void 0&&(p=e[i]),n?MR(r,i,p):BR(r,i,p)}return r}wd.exports=GR});var vd=u((xF,Td)=>{"use strict";function kR(e,t){for(var r=-1,a=Array(e);++r<e;)a[r]=t(r);return a}Td.exports=kR});var pa=u((_F,Ed)=>{"use strict";var FR=9007199254740991,QR=/^(?:0|[1-9]\d*)$/;function jR(e,t){var r=typeof e;return t=t??FR,!!t&&(r=="number"||r!="symbol"&&QR.test(e))&&e>-1&&e%1==0&&e<t}Ed.exports=jR});var Fo=u((OF,Rd)=>{"use strict";var WR=vd(),$R=Yr(),KR=ee(),VR=sa(),YR=pa(),HR=sn(),zR=Object.prototype,JR=zR.hasOwnProperty;function XR(e,t){var r=KR(e),a=!r&&$R(e),n=!r&&!a&&VR(e),o=!r&&!a&&!n&&HR(e),s=r||a||n||o,i=s?WR(e.length,String):[],p=i.length;for(var f in e)(t||JR.call(e,f))&&!(s&&(f=="length"||n&&(f=="offset"||f=="parent")||o&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||YR(f,p)))&&i.push(f);return i}Rd.exports=XR});var _d=u((PF,xd)=>{"use strict";function ZR(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}xd.exports=ZR});var Pd=u((LF,Od)=>{"use strict";var ex=Te(),tx=an(),rx=_d(),ax=Object.prototype,nx=ax.hasOwnProperty;function ox(e){if(!ex(e))return rx(e);var t=tx(e),r=[];for(var a in e)a=="constructor"&&(t||!nx.call(e,a))||r.push(a);return r}Od.exports=ox});var nr=u((CF,Ld)=>{"use strict";var sx=Fo(),ix=Pd(),ux=Jt();function px(e){return ux(e)?sx(e,!0):ix(e)}Ld.exports=px});var qd=u((qF,Cd)=>{"use strict";var cx=ar(),lx=nr();function dx(e){return cx(e,lx(e))}Cd.exports=dx});var Gd=u((UF,Md)=>{"use strict";var Ud=Po(),fx=Co(),mx=Uo(),gx=er(),yx=No(),Dd=Yr(),Nd=ee(),hx=Oo(),Ax=sa(),bx=zr(),Ix=Te(),Sx=Bo(),wx=sn(),Bd=Go(),Tx=qd();function vx(e,t,r,a,n,o,s){var i=Bd(e,r),p=Bd(t,r),f=s.get(p);if(f){Ud(e,r,f);return}var m=o?o(i,p,r+"",e,t,s):void 0,y=m===void 0;if(y){var g=Nd(p),S=!g&&Ax(p),P=!g&&!S&&wx(p);m=p,g||S||P?Nd(i)?m=i:hx(i)?m=gx(i):S?(y=!1,m=fx(p,!0)):P?(y=!1,m=mx(p,!0)):m=[]:Sx(p)||Dd(p)?(m=i,Dd(i)?m=Tx(i):(!Ix(i)||bx(i))&&(m=yx(p))):y=!1}y&&(s.set(p,m),n(m,p,a,o,s),s.delete(p)),Ud(e,r,m)}Md.exports=vx});var Qd=u((DF,Fd)=>{"use strict";var Ex=ta(),Rx=Po(),xx=Lo(),_x=Gd(),Ox=Te(),Px=nr(),Lx=Go();function kd(e,t,r,a,n){e!==t&&xx(t,function(o,s){if(n||(n=new Ex),Ox(o))_x(e,t,s,r,kd,a,n);else{var i=a?a(Lx(e,s),o,s+"",e,t,n):void 0;i===void 0&&(i=o),Rx(e,s,i)}},Px)}Fd.exports=kd});var Wd=u((NF,jd)=>{"use strict";var Cx=Yt(),qx=Jt(),Ux=pa(),Dx=Te();function Nx(e,t,r){if(!Dx(r))return!1;var a=typeof t;return(a=="number"?qx(r)&&Ux(t,r.length):a=="string"&&t in r)?Cx(r[t],e):!1}jd.exports=Nx});var Kd=u((BF,$d)=>{"use strict";var Bx=wo(),Mx=Wd();function Gx(e){return Bx(function(t,r){var a=-1,n=r.length,o=n>1?r[n-1]:void 0,s=n>2?r[2]:void 0;for(o=e.length>3&&typeof o=="function"?(n--,o):void 0,s&&Mx(r[0],r[1],s)&&(o=n<3?void 0:o,n=1),t=Object(t);++a<n;){var i=r[a];i&&e(t,i,a,o)}return t})}$d.exports=Gx});var Qo=u((MF,Vd)=>{"use strict";var kx=Qd(),Fx=Kd(),Qx=Fx(function(e,t,r){kx(e,t,r)});Vd.exports=Qx});var Hf=u(le=>{"use strict";le.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"};le.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"]};le.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};le.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};le.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};le.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]};le.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}};le.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}};le.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=le.aliasToReal,r={};for(var a in t){var n=t[a];e.call(r,n)?r[n].push(a):r[n]=[a]}return r}();le.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"};le.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};le.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 Ms=u((sj,zf)=>{"use strict";zf.exports={}});var em=u((ij,Zf)=>{"use strict";var J=Hf(),SO=Ms(),Jf=Array.prototype.push;function wO(e,t){return t==2?function(r,a){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}function Gs(e,t){return t==2?function(r,a){return e(r,a)}:function(r){return e(r)}}function Xf(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}function TO(e){return function(t){return e({},t)}}function vO(e,t){return function(){for(var r=arguments.length,a=r-1,n=Array(r);r--;)n[r]=arguments[r];var o=n[t],s=n.slice(0,t);return o&&Jf.apply(s,o),t!=a&&Jf.apply(s,n.slice(t+1)),e.apply(this,s)}}function ks(e,t){return function(){var r=arguments.length;if(r){for(var a=Array(r);r--;)a[r]=arguments[r];var n=a[0]=t.apply(void 0,a);return e.apply(void 0,a),n}}}function Fs(e,t,r,a){var n=typeof t=="function",o=t===Object(t);if(o&&(a=r,r=t,t=void 0),r==null)throw new TypeError;a||(a={});var s={cap:"cap"in a?a.cap:!0,curry:"curry"in a?a.curry:!0,fixed:"fixed"in a?a.fixed:!0,immutable:"immutable"in a?a.immutable:!0,rearg:"rearg"in a?a.rearg:!0},i=n?r:SO,p="curry"in a&&a.curry,f="fixed"in a&&a.fixed,m="rearg"in a&&a.rearg,y=n?r.runInContext():void 0,g=n?r:{ary:e.ary,assign:e.assign,clone:e.clone,curry:e.curry,forEach:e.forEach,isArray:e.isArray,isError:e.isError,isFunction:e.isFunction,isWeakMap:e.isWeakMap,iteratee:e.iteratee,keys:e.keys,rearg:e.rearg,toInteger:e.toInteger,toPath:e.toPath},S=g.ary,P=g.assign,x=g.clone,R=g.curry,E=g.forEach,q=g.isArray,xe=g.isError,be=g.isFunction,it=g.isWeakMap,kt=g.keys,Ir=g.rearg,Sr=g.toInteger,nI=g.toPath,Iu=kt(J.aryMethod),oI={castArray:function(I){return function(){var h=arguments[0];return q(h)?I(Xf(h)):I.apply(void 0,arguments)}},iteratee:function(I){return function(){var h=arguments[0],b=arguments[1],v=I(h,b),O=v.length;return s.cap&&typeof b=="number"?(b=b>2?b-2:1,O&&O<=b?v:Gs(v,b)):v}},mixin:function(I){return function(h){var b=this;if(!be(b))return I(b,Object(h));var v=[];return E(kt(h),function(O){be(h[O])&&v.push([O,b.prototype[O]])}),I(b,Object(h)),E(v,function(O){var te=O[1];be(te)?b.prototype[O[0]]=te:delete b.prototype[O[0]]}),b}},nthArg:function(I){return function(h){var b=h<0?1:Sr(h)+1;return R(I(h),b)}},rearg:function(I){return function(h,b){var v=b?b.length:0;return R(I(h,b),v)}},runInContext:function(I){return function(h){return Fs(e,I(h),a)}}};function sI(I,h){if(s.cap){var b=J.iterateeRearg[I];if(b)return lI(h,b);var v=!n&&J.iterateeAry[I];if(v)return cI(h,v)}return h}function iI(I,h,b){return p||s.curry&&b>1?R(h,b):h}function Su(I,h,b){if(s.fixed&&(f||!J.skipFixed[I])){var v=J.methodSpread[I],O=v&&v.start;return O===void 0?S(h,b):vO(h,O)}return h}function wu(I,h,b){return s.rearg&&b>1&&(m||!J.skipRearg[I])?Ir(h,J.methodRearg[I]||J.aryRearg[b]):h}function uI(I,h){h=nI(h);for(var b=-1,v=h.length,O=v-1,te=x(Object(I)),Ne=te;Ne!=null&&++b<v;){var Ie=h[b],Be=Ne[Ie];Be!=null&&!(be(Be)||xe(Be)||it(Be))&&(Ne[Ie]=x(b==O?Be:Object(Be))),Ne=Ne[Ie]}return te}function pI(I){return fe.runInContext.convert(I)(void 0)}function Tu(I,h){var b=J.aliasToReal[I]||I,v=J.remap[b]||b,O=a;return function(te){var Ne=n?y:g,Ie=n?y[v]:h,Be=P(P({},O),te);return Fs(Ne,b,Ie,Be)}}function cI(I,h){return vu(I,function(b){return typeof b=="function"?Gs(b,h):b})}function lI(I,h){return vu(I,function(b){var v=h.length;return wO(Ir(Gs(b,v),h),v)})}function vu(I,h){return function(){var b=arguments.length;if(!b)return I();for(var v=Array(b);b--;)v[b]=arguments[b];var O=s.rearg?0:b-1;return v[O]=h(v[O]),I.apply(void 0,v)}}function Eu(I,h,b){var v,O=J.aliasToReal[I]||I,te=h,Ne=oI[O];return Ne?te=Ne(h):s.immutable&&(J.mutate.array[O]?te=ks(h,Xf):J.mutate.object[O]?te=ks(h,TO(h)):J.mutate.set[O]&&(te=ks(h,uI))),E(Iu,function(Ie){return E(J.aryMethod[Ie],function(Be){if(O==Be){var Ru=J.methodSpread[O],dI=Ru&&Ru.afterRearg;return v=dI?Su(O,wu(O,te,Ie),Ie):wu(O,Su(O,te,Ie),Ie),v=sI(O,v),v=iI(O,v,Ie),!1}}),!v}),v||(v=te),v==h&&(v=p?R(v,1):function(){return h.apply(this,arguments)}),v.convert=Tu(O,h),v.placeholder=h.placeholder=b,v}if(!o)return Eu(t,r,i);var fe=r,wr=[];return E(Iu,function(I){E(J.aryMethod[I],function(h){var b=fe[J.remap[h]||h];b&&wr.push([h,Eu(h,b,fe)])})}),E(kt(fe),function(I){var h=fe[I];if(typeof h=="function"){for(var b=wr.length;b--;)if(wr[b][0]==I)return;h.convert=Tu(I,h),wr.push([I,h])}}),E(wr,function(I){fe[I[0]]=I[1]}),fe.convert=pI,fe.placeholder=fe,E(kt(fe),function(I){E(J.realToAlias[I]||[],function(h){fe[h]=fe[I]})}),fe}Zf.exports=Fs});var Qs=u((uj,tm)=>{"use strict";var EO=ft(),RO=ne(),xO=EO(RO,"WeakMap");tm.exports=xO});var Ws=u((pj,am)=>{"use strict";var rm=Qs(),_O=rm&&new rm;am.exports=_O});var $s=u((cj,om)=>{"use strict";var OO=Hr(),nm=Ws(),PO=nm?function(e,t){return nm.set(e,t),e}:OO;om.exports=PO});var Ia=u((lj,sm)=>{"use strict";var LO=na(),CO=Te();function qO(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=LO(e.prototype),a=e.apply(r,t);return CO(a)?a:r}}sm.exports=qO});var um=u((dj,im)=>{"use strict";var UO=Ia(),DO=ne(),NO=1;function BO(e,t,r){var a=t&NO,n=UO(e);function o(){var s=this&&this!==DO&&this instanceof o?n:e;return s.apply(a?r:this,arguments)}return o}im.exports=BO});var Ks=u((fj,pm)=>{"use strict";var MO=Math.max;function GO(e,t,r,a){for(var n=-1,o=e.length,s=r.length,i=-1,p=t.length,f=MO(o-s,0),m=Array(p+f),y=!a;++i<p;)m[i]=t[i];for(;++n<s;)(y||n<o)&&(m[r[n]]=e[n]);for(;f--;)m[i++]=e[n++];return m}pm.exports=GO});var Vs=u((mj,cm)=>{"use strict";var kO=Math.max;function FO(e,t,r,a){for(var n=-1,o=e.length,s=-1,i=r.length,p=-1,f=t.length,m=kO(o-i,0),y=Array(m+f),g=!a;++n<m;)y[n]=e[n];for(var S=n;++p<f;)y[S+p]=t[p];for(;++s<i;)(g||n<o)&&(y[S+r[s]]=e[n++]);return y}cm.exports=FO});var dm=u((gj,lm)=>{"use strict";function QO(e,t){for(var r=e.length,a=0;r--;)e[r]===t&&++a;return a}lm.exports=QO});var Rn=u((yj,fm)=>{"use strict";function jO(){}fm.exports=jO});var _n=u((hj,mm)=>{"use strict";var WO=na(),$O=Rn(),KO=4294967295;function xn(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=KO,this.__views__=[]}xn.prototype=WO($O.prototype);xn.prototype.constructor=xn;mm.exports=xn});var Ys=u((Aj,ym)=>{"use strict";var gm=Ws(),VO=xo(),YO=gm?function(e){return gm.get(e)}:VO;ym.exports=YO});var Am=u((bj,hm)=>{"use strict";var HO={};hm.exports=HO});var Sm=u((Ij,Im)=>{"use strict";var bm=Am(),zO=Object.prototype,JO=zO.hasOwnProperty;function XO(e){for(var t=e.name+"",r=bm[t],a=JO.call(bm,t)?r.length:0;a--;){var n=r[a],o=n.func;if(o==null||o==e)return n.name}return t}Im.exports=XO});var Hs=u((Sj,wm)=>{"use strict";var ZO=na(),eP=Rn();function On(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}On.prototype=ZO(eP.prototype);On.prototype.constructor=On;wm.exports=On});var vm=u((wj,Tm)=>{"use strict";var tP=_n(),rP=Hs(),aP=er();function nP(e){if(e instanceof tP)return e.clone();var t=new rP(e.__wrapped__,e.__chain__);return t.__actions__=aP(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}Tm.exports=nP});var xm=u((Tj,Rm)=>{"use strict";var oP=_n(),Em=Hs(),sP=Rn(),iP=ee(),uP=ge(),pP=vm(),cP=Object.prototype,lP=cP.hasOwnProperty;function Pn(e){if(uP(e)&&!iP(e)&&!(e instanceof oP)){if(e instanceof Em)return e;if(lP.call(e,"__wrapped__"))return pP(e)}return new Em(e)}Pn.prototype=sP.prototype;Pn.prototype.constructor=Pn;Rm.exports=Pn});var Om=u((vj,_m)=>{"use strict";var dP=_n(),fP=Ys(),mP=Sm(),gP=xm();function yP(e){var t=mP(e),r=gP[t];if(typeof r!="function"||!(t in dP.prototype))return!1;if(e===r)return!0;var a=fP(r);return!!a&&e===a[0]}_m.exports=yP});var zs=u((Ej,Pm)=>{"use strict";var hP=$s(),AP=So(),bP=AP(hP);Pm.exports=bP});var Cm=u((Rj,Lm)=>{"use strict";var IP=/\{\n\/\* \[wrapped with (.+)\] \*/,SP=/,? & /;function wP(e){var t=e.match(IP);return t?t[1].split(SP):[]}Lm.exports=wP});var Um=u((xj,qm)=>{"use strict";var TP=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function vP(e,t){var r=t.length;if(!r)return e;var a=r-1;return t[a]=(r>1?"& ":"")+t[a],t=t.join(r>2?", ":" "),e.replace(TP,`{
|
|
2
2
|
/* [wrapped with `+t+`] */
|
|
3
|
-
`)}xm.exports=AP});var On=u((wj,Om)=>{"use strict";function bP(e,t){for(var r=-1,a=e==null?0:e.length;++r<a&&t(e[r],r,e)!==!1;);return e}Om.exports=bP});var Lm=u((vj,Pm)=>{"use strict";var IP=On(),SP=wo(),wP=1,vP=2,TP=8,EP=16,RP=32,xP=64,_P=128,OP=256,PP=512,LP=[["ary",_P],["bind",wP],["bindKey",vP],["curry",TP],["curryRight",EP],["flip",PP],["partial",RP],["partialRight",xP],["rearg",OP]];function CP(e,t){return IP(LP,function(r){var a="_."+r[0];t&r[1]&&!SP(e,a)&&e.push(a)}),e.sort()}Pm.exports=CP});var Ys=u((Tj,Cm)=>{"use strict";var qP=Rm(),UP=_m(),DP=Ka(),NP=Lm();function BP(e,t,r){var a=t+"";return DP(e,UP(a,NP(qP(a),r)))}Cm.exports=BP});var Hs=u((Ej,Dm)=>{"use strict";var MP=vm(),GP=Ks(),kP=Ys(),FP=1,QP=2,jP=4,WP=8,qm=32,Um=64;function $P(e,t,r,a,n,o,s,i,p,f){var m=t&WP,g=m?s:void 0,h=m?void 0:s,b=m?o:void 0,E=m?void 0:o;t|=m?qm:Um,t&=~(m?Um:qm),t&jP||(t&=~(FP|QP));var L=[e,t,n,b,g,E,h,i,p,f],_=r.apply(void 0,L);return MP(e)&&GP(_,L),_.placeholder=a,kP(_,e,t)}Dm.exports=$P});var zs=u((Rj,Nm)=>{"use strict";function VP(e){var t=e;return t.placeholder}Nm.exports=VP});var Mm=u((xj,Bm)=>{"use strict";var KP=Zt(),YP=ia(),HP=Math.min;function zP(e,t){for(var r=e.length,a=HP(t.length,r),n=KP(e);a--;){var o=t[a];e[a]=YP(o,r)?n[o]:void 0}return e}Bm.exports=zP});var Pn=u((_j,km)=>{"use strict";var Gm="__lodash_placeholder__";function JP(e,t){for(var r=-1,a=e.length,n=0,o=[];++r<a;){var s=e[r];(s===t||s===Gm)&&(e[r]=Gm,o[n++]=r)}return o}km.exports=JP});var Js=u((Oj,jm)=>{"use strict";var XP=Qs(),ZP=Ws(),eL=sm(),Fm=Aa(),tL=Hs(),rL=zs(),aL=Mm(),nL=Pn(),oL=ne(),sL=1,iL=2,uL=8,pL=16,cL=128,lL=512;function Qm(e,t,r,a,n,o,s,i,p,f){var m=t&cL,g=t&sL,h=t&iL,b=t&(uL|pL),E=t&lL,L=h?void 0:Fm(e);function _(){for(var R=arguments.length,B=Array(R),st=R;st--;)B[st]=arguments[st];if(b)var be=rL(_),it=eL(B,be);if(a&&(B=XP(B,a,n,b)),o&&(B=ZP(B,o,s,b)),R-=it,b&&R<f){var Gt=nL(B,be);return tL(e,t,Qm,_.placeholder,r,B,Gt,i,p,f-R)}var Ar=g?r:this,br=h?Ar[e]:e;return R=B.length,i?B=aL(B,i):E&&R>1&&B.reverse(),m&&p<R&&(B.length=p),this&&this!==oL&&this instanceof _&&(br=L||Fm(br)),br.apply(Ar,B)}return _}jm.exports=Qm});var $m=u((Pj,Wm)=>{"use strict";var dL=Va(),fL=Aa(),mL=Js(),gL=Hs(),hL=zs(),yL=Pn(),AL=ne();function bL(e,t,r){var a=fL(e);function n(){for(var o=arguments.length,s=Array(o),i=o,p=hL(n);i--;)s[i]=arguments[i];var f=o<3&&s[0]!==p&&s[o-1]!==p?[]:yL(s,p);if(o-=f.length,o<r)return gL(e,t,mL,n.placeholder,void 0,s,f,void 0,void 0,r-o);var m=this&&this!==AL&&this instanceof n?a:e;return dL(m,this,s)}return n}Wm.exports=bL});var Km=u((Lj,Vm)=>{"use strict";var IL=Va(),SL=Aa(),wL=ne(),vL=1;function TL(e,t,r,a){var n=t&vL,o=SL(e);function s(){for(var i=-1,p=arguments.length,f=-1,m=a.length,g=Array(m+p),h=this&&this!==wL&&this instanceof s?o:e;++f<m;)g[f]=a[f];for(;p--;)g[f++]=arguments[++i];return IL(h,n?r:this,g)}return s}Vm.exports=TL});var Zm=u((Cj,Xm)=>{"use strict";var EL=Qs(),RL=Ws(),Ym=Pn(),Hm="__lodash_placeholder__",Xs=1,xL=2,_L=4,zm=8,ba=128,Jm=256,OL=Math.min;function PL(e,t){var r=e[1],a=t[1],n=r|a,o=n<(Xs|xL|ba),s=a==ba&&r==zm||a==ba&&r==Jm&&e[7].length<=t[8]||a==(ba|Jm)&&t[7].length<=t[8]&&r==zm;if(!(o||s))return e;a&Xs&&(e[2]=t[2],n|=r&Xs?0:_L);var i=t[3];if(i){var p=e[3];e[3]=p?EL(p,i,t[4]):i,e[4]=p?Ym(e[3],Hm):t[4]}return i=t[5],i&&(p=e[5],e[5]=p?RL(p,i,t[6]):i,e[6]=p?Ym(e[5],Hm):t[6]),i=t[7],i&&(e[7]=i),a&ba&&(e[8]=e[8]==null?t[8]:OL(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=n,e}Xm.exports=PL});var tg=u((qj,eg)=>{"use strict";var LL=/\s/;function CL(e){for(var t=e.length;t--&&LL.test(e.charAt(t)););return t}eg.exports=CL});var ag=u((Uj,rg)=>{"use strict";var qL=tg(),UL=/^\s+/;function DL(e){return e&&e.slice(0,qL(e)+1).replace(UL,"")}rg.exports=DL});var lr=u((Dj,ng)=>{"use strict";var NL=dt(),BL=ge(),ML="[object Symbol]";function GL(e){return typeof e=="symbol"||BL(e)&&NL(e)==ML}ng.exports=GL});var ug=u((Nj,ig)=>{"use strict";var kL=ag(),og=ve(),FL=lr(),sg=0/0,QL=/^[-+]0x[0-9a-f]+$/i,jL=/^0b[01]+$/i,WL=/^0o[0-7]+$/i,$L=parseInt;function VL(e){if(typeof e=="number")return e;if(FL(e))return sg;if(og(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=og(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=kL(e);var r=jL.test(e);return r||WL.test(e)?$L(e.slice(2),r?2:8):QL.test(e)?sg:+e}ig.exports=VL});var lg=u((Bj,cg)=>{"use strict";var KL=ug(),pg=1/0,YL=17976931348623157e292;function HL(e){if(!e)return e===0?e:0;if(e=KL(e),e===pg||e===-pg){var t=e<0?-1:1;return t*YL}return e===e?e:0}cg.exports=HL});var Zs=u((Mj,dg)=>{"use strict";var zL=lg();function JL(e){var t=zL(e),r=t%1;return t===t?r?t-r:t:0}dg.exports=JL});var Ln=u((Gj,yg)=>{"use strict";var XL=Fs(),ZL=rm(),eC=$m(),tC=Js(),rC=Km(),aC=$s(),nC=Zm(),oC=Ks(),sC=Ys(),fg=Zs(),iC="Expected a function",mg=1,uC=2,ei=8,ti=16,ri=32,gg=64,hg=Math.max;function pC(e,t,r,a,n,o,s,i){var p=t&uC;if(!p&&typeof e!="function")throw new TypeError(iC);var f=a?a.length:0;if(f||(t&=~(ri|gg),a=n=void 0),s=s===void 0?s:hg(fg(s),0),i=i===void 0?i:fg(i),f-=n?n.length:0,t&gg){var m=a,g=n;a=n=void 0}var h=p?void 0:aC(e),b=[e,t,r,a,n,m,g,o,s,i];if(h&&nC(b,h),e=b[0],t=b[1],r=b[2],a=b[3],n=b[4],i=b[9]=b[9]===void 0?p?0:e.length:hg(b[9]-f,0),!i&&t&(ei|ti)&&(t&=~(ei|ti)),!t||t==mg)var E=ZL(e,t,r);else t==ei||t==ti?E=eC(e,t,i):(t==ri||t==(mg|ri))&&!n.length?E=rC(e,t,r,a):E=tC.apply(void 0,b);var L=h?XL:oC;return sC(L(E,b),e,t)}yg.exports=pC});var bg=u((kj,Ag)=>{"use strict";var cC=Ln(),lC=128;function dC(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,cC(e,lC,void 0,void 0,void 0,void 0,t)}Ag.exports=dC});var Sg=u((Fj,Ig)=>{"use strict";var fC=qo(),mC=fC(Object.keys,Object);Ig.exports=mC});var ai=u((Qj,wg)=>{"use strict";var gC=tn(),hC=Sg(),yC=Object.prototype,AC=yC.hasOwnProperty;function bC(e){if(!gC(e))return hC(e);var t=[];for(var r in Object(e))AC.call(e,r)&&r!="constructor"&&t.push(r);return t}wg.exports=bC});var dr=u((jj,vg)=>{"use strict";var IC=Go(),SC=ai(),wC=zt();function vC(e){return wC(e)?IC(e):SC(e)}vg.exports=vC});var ni=u((Wj,Tg)=>{"use strict";var TC=rr(),EC=dr();function RC(e,t){return e&&TC(t,EC(t),e)}Tg.exports=RC});var Rg=u(($j,Eg)=>{"use strict";var xC=rr(),_C=ar();function OC(e,t){return e&&xC(t,_C(t),e)}Eg.exports=OC});var _g=u((Vj,xg)=>{"use strict";function PC(e,t){for(var r=-1,a=e==null?0:e.length,n=0,o=[];++r<a;){var s=e[r];t(s,r,e)&&(o[n++]=s)}return o}xg.exports=PC});var oi=u((Kj,Og)=>{"use strict";function LC(){return[]}Og.exports=LC});var Cn=u((Yj,Lg)=>{"use strict";var CC=_g(),qC=oi(),UC=Object.prototype,DC=UC.propertyIsEnumerable,Pg=Object.getOwnPropertySymbols,NC=Pg?function(e){return e==null?[]:(e=Object(e),CC(Pg(e),function(t){return DC.call(e,t)}))}:qC;Lg.exports=NC});var qg=u((Hj,Cg)=>{"use strict";var BC=rr(),MC=Cn();function GC(e,t){return BC(e,MC(e),t)}Cg.exports=GC});var si=u((zj,Ug)=>{"use strict";var kC=$a(),FC=en(),QC=Cn(),jC=oi(),WC=Object.getOwnPropertySymbols,$C=WC?function(e){for(var t=[];e;)kC(t,QC(e)),e=FC(e);return t}:jC;Ug.exports=$C});var Ng=u((Jj,Dg)=>{"use strict";var VC=rr(),KC=si();function YC(e,t){return VC(e,KC(e),t)}Dg.exports=YC});var ii=u((Xj,Bg)=>{"use strict";var HC=$a(),zC=ee();function JC(e,t,r){var a=t(e);return zC(e)?a:HC(a,r(e))}Bg.exports=JC});var ui=u((Zj,Mg)=>{"use strict";var XC=ii(),ZC=Cn(),eq=dr();function tq(e){return XC(e,eq,ZC)}Mg.exports=tq});var kg=u((eW,Gg)=>{"use strict";var rq=ii(),aq=si(),nq=ar();function oq(e){return rq(e,nq,aq)}Gg.exports=oq});var Qg=u((tW,Fg)=>{"use strict";var sq=ft(),iq=ne(),uq=sq(iq,"DataView");Fg.exports=uq});var Wg=u((rW,jg)=>{"use strict";var pq=ft(),cq=ne(),lq=pq(cq,"Promise");jg.exports=lq});var mr=u((aW,Jg)=>{"use strict";var pi=Qg(),ci=Ya(),li=Wg(),di=To(),fi=Gs(),zg=dt(),fr=yo(),$g="[object Map]",dq="[object Object]",Vg="[object Promise]",Kg="[object Set]",Yg="[object WeakMap]",Hg="[object DataView]",fq=fr(pi),mq=fr(ci),gq=fr(li),hq=fr(di),yq=fr(fi),Ut=zg;(pi&&Ut(new pi(new ArrayBuffer(1)))!=Hg||ci&&Ut(new ci)!=$g||li&&Ut(li.resolve())!=Vg||di&&Ut(new di)!=Kg||fi&&Ut(new fi)!=Yg)&&(Ut=function(e){var t=zg(e),r=t==dq?e.constructor:void 0,a=r?fr(r):"";if(a)switch(a){case fq:return Hg;case mq:return $g;case gq:return Vg;case hq:return Kg;case yq:return Yg}return t});Jg.exports=Ut});var Zg=u((nW,Xg)=>{"use strict";var Aq=Object.prototype,bq=Aq.hasOwnProperty;function Iq(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&bq.call(e,"index")&&(r.index=e.index,r.input=e.input),r}Xg.exports=Iq});var th=u((oW,eh)=>{"use strict";var Sq=Za();function wq(e,t){var r=t?Sq(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}eh.exports=wq});var ah=u((sW,rh)=>{"use strict";var vq=/\w*$/;function Tq(e){var t=new e.constructor(e.source,vq.exec(e));return t.lastIndex=e.lastIndex,t}rh.exports=Tq});var uh=u((iW,ih)=>{"use strict";var nh=Et(),oh=nh?nh.prototype:void 0,sh=oh?oh.valueOf:void 0;function Eq(e){return sh?Object(sh.call(e)):{}}ih.exports=Eq});var ch=u((uW,ph)=>{"use strict";var Rq=Za(),xq=th(),_q=ah(),Oq=uh(),Pq=Co(),Lq="[object Boolean]",Cq="[object Date]",qq="[object Map]",Uq="[object Number]",Dq="[object RegExp]",Nq="[object Set]",Bq="[object String]",Mq="[object Symbol]",Gq="[object ArrayBuffer]",kq="[object DataView]",Fq="[object Float32Array]",Qq="[object Float64Array]",jq="[object Int8Array]",Wq="[object Int16Array]",$q="[object Int32Array]",Vq="[object Uint8Array]",Kq="[object Uint8ClampedArray]",Yq="[object Uint16Array]",Hq="[object Uint32Array]";function zq(e,t,r){var a=e.constructor;switch(t){case Gq:return Rq(e);case Lq:case Cq:return new a(+e);case kq:return xq(e,r);case Fq:case Qq:case jq:case Wq:case $q:case Vq:case Kq:case Yq:case Hq:return Pq(e,r);case qq:return new a;case Uq:case Bq:return new a(e);case Dq:return _q(e);case Nq:return new a;case Mq:return Oq(e)}}ph.exports=zq});var dh=u((pW,lh)=>{"use strict";var Jq=mr(),Xq=ge(),Zq="[object Map]";function eU(e){return Xq(e)&&Jq(e)==Zq}lh.exports=eU});var hh=u((cW,gh)=>{"use strict";var tU=dh(),rU=rn(),fh=an(),mh=fh&&fh.isMap,aU=mh?rU(mh):tU;gh.exports=aU});var Ah=u((lW,yh)=>{"use strict";var nU=mr(),oU=ge(),sU="[object Set]";function iU(e){return oU(e)&&nU(e)==sU}yh.exports=iU});var wh=u((dW,Sh)=>{"use strict";var uU=Ah(),pU=rn(),bh=an(),Ih=bh&&bh.isSet,cU=Ih?pU(Ih):uU;Sh.exports=cU});var mi=u((fW,Rh)=>{"use strict";var lU=Zr(),dU=On(),fU=Mo(),mU=ni(),gU=Rg(),hU=Po(),yU=Zt(),AU=qg(),bU=Ng(),IU=ui(),SU=kg(),wU=mr(),vU=Zg(),TU=ch(),EU=Uo(),RU=ee(),xU=na(),_U=hh(),OU=ve(),PU=wh(),LU=dr(),CU=ar(),qU=1,UU=2,DU=4,vh="[object Arguments]",NU="[object Array]",BU="[object Boolean]",MU="[object Date]",GU="[object Error]",Th="[object Function]",kU="[object GeneratorFunction]",FU="[object Map]",QU="[object Number]",Eh="[object Object]",jU="[object RegExp]",WU="[object Set]",$U="[object String]",VU="[object Symbol]",KU="[object WeakMap]",YU="[object ArrayBuffer]",HU="[object DataView]",zU="[object Float32Array]",JU="[object Float64Array]",XU="[object Int8Array]",ZU="[object Int16Array]",eD="[object Int32Array]",tD="[object Uint8Array]",rD="[object Uint8ClampedArray]",aD="[object Uint16Array]",nD="[object Uint32Array]",U={};U[vh]=U[NU]=U[YU]=U[HU]=U[BU]=U[MU]=U[zU]=U[JU]=U[XU]=U[ZU]=U[eD]=U[FU]=U[QU]=U[Eh]=U[jU]=U[WU]=U[$U]=U[VU]=U[tD]=U[rD]=U[aD]=U[nD]=!0;U[GU]=U[Th]=U[KU]=!1;function qn(e,t,r,a,n,o){var s,i=t&qU,p=t&UU,f=t&DU;if(r&&(s=n?r(e,a,n,o):r(e)),s!==void 0)return s;if(!OU(e))return e;var m=RU(e);if(m){if(s=vU(e),!i)return yU(e,s)}else{var g=wU(e),h=g==Th||g==kU;if(xU(e))return hU(e,i);if(g==Eh||g==vh||h&&!n){if(s=p||h?{}:EU(e),!i)return p?bU(e,gU(s,e)):AU(e,mU(s,e))}else{if(!U[g])return n?e:{};s=TU(e,g,i)}}o||(o=new lU);var b=o.get(e);if(b)return b;o.set(e,s),PU(e)?e.forEach(function(_){s.add(qn(_,t,r,_,e,o))}):_U(e)&&e.forEach(function(_,R){s.set(R,qn(_,t,r,R,e,o))});var E=f?p?SU:IU:p?CU:LU,L=m?void 0:E(e);return dU(L||e,function(_,R){L&&(R=_,_=e[R]),fU(s,R,qn(_,t,r,R,e,o))}),s}Rh.exports=qn});var _h=u((mW,xh)=>{"use strict";var oD=mi(),sD=4;function iD(e){return oD(e,sD)}xh.exports=iD});var Ph=u((gW,Oh)=>{"use strict";var uD=Ln(),pD=8;function gi(e,t,r){t=r?void 0:t;var a=uD(e,pD,void 0,void 0,void 0,void 0,void 0,t);return a.placeholder=gi.placeholder,a}gi.placeholder={};Oh.exports=gi});var Ch=u((hW,Lh)=>{"use strict";var cD=dt(),lD=ge(),dD=Do(),fD="[object DOMException]",mD="[object Error]";function gD(e){if(!lD(e))return!1;var t=cD(e);return t==mD||t==fD||typeof e.message=="string"&&typeof e.name=="string"&&!dD(e)}Lh.exports=gD});var Uh=u((yW,qh)=>{"use strict";var hD=mr(),yD=ge(),AD="[object WeakMap]";function bD(e){return yD(e)&&hD(e)==AD}qh.exports=bD});var Nh=u((AW,Dh)=>{"use strict";function ID(e,t){for(var r=-1,a=e==null?0:e.length;++r<a;)if(t(e[r],r,e))return!0;return!1}Dh.exports=ID});var hi=u((bW,Bh)=>{"use strict";var SD=So(),wD=Nh(),vD=vo(),TD=1,ED=2;function RD(e,t,r,a,n,o){var s=r&TD,i=e.length,p=t.length;if(i!=p&&!(s&&p>i))return!1;var f=o.get(e),m=o.get(t);if(f&&m)return f==t&&m==e;var g=-1,h=!0,b=r&ED?new SD:void 0;for(o.set(e,t),o.set(t,e);++g<i;){var E=e[g],L=t[g];if(a)var _=s?a(L,E,g,t,e,o):a(E,L,g,e,t,o);if(_!==void 0){if(_)continue;h=!1;break}if(b){if(!wD(t,function(R,B){if(!vD(b,B)&&(E===R||n(E,R,r,a,o)))return b.push(B)})){h=!1;break}}else if(!(E===L||n(E,L,r,a,o))){h=!1;break}}return o.delete(e),o.delete(t),h}Bh.exports=RD});var Gh=u((IW,Mh)=>{"use strict";function xD(e){var t=-1,r=Array(e.size);return e.forEach(function(a,n){r[++t]=[n,a]}),r}Mh.exports=xD});var Wh=u((SW,jh)=>{"use strict";var kh=Et(),Fh=Lo(),_D=Kt(),OD=hi(),PD=Gh(),LD=Ja(),CD=1,qD=2,UD="[object Boolean]",DD="[object Date]",ND="[object Error]",BD="[object Map]",MD="[object Number]",GD="[object RegExp]",kD="[object Set]",FD="[object String]",QD="[object Symbol]",jD="[object ArrayBuffer]",WD="[object DataView]",Qh=kh?kh.prototype:void 0,yi=Qh?Qh.valueOf:void 0;function $D(e,t,r,a,n,o,s){switch(r){case WD:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case jD:return!(e.byteLength!=t.byteLength||!o(new Fh(e),new Fh(t)));case UD:case DD:case MD:return _D(+e,+t);case ND:return e.name==t.name&&e.message==t.message;case GD:case FD:return e==t+"";case BD:var i=PD;case kD:var p=a&CD;if(i||(i=LD),e.size!=t.size&&!p)return!1;var f=s.get(e);if(f)return f==t;a|=qD,s.set(e,t);var m=OD(i(e),i(t),a,n,o,s);return s.delete(e),m;case QD:if(yi)return yi.call(e)==yi.call(t)}return!1}jh.exports=$D});var Kh=u((wW,Vh)=>{"use strict";var $h=ui(),VD=1,KD=Object.prototype,YD=KD.hasOwnProperty;function HD(e,t,r,a,n,o){var s=r&VD,i=$h(e),p=i.length,f=$h(t),m=f.length;if(p!=m&&!s)return!1;for(var g=p;g--;){var h=i[g];if(!(s?h in t:YD.call(t,h)))return!1}var b=o.get(e),E=o.get(t);if(b&&E)return b==t&&E==e;var L=!0;o.set(e,t),o.set(t,e);for(var _=s;++g<p;){h=i[g];var R=e[h],B=t[h];if(a)var st=s?a(B,R,h,t,e,o):a(R,B,h,e,t,o);if(!(st===void 0?R===B||n(R,B,r,a,o):st)){L=!1;break}_||(_=h=="constructor")}if(L&&!_){var be=e.constructor,it=t.constructor;be!=it&&"constructor"in e&&"constructor"in t&&!(typeof be=="function"&&be instanceof be&&typeof it=="function"&&it instanceof it)&&(L=!1)}return o.delete(e),o.delete(t),L}Vh.exports=HD});var ty=u((vW,ey)=>{"use strict";var Ai=Zr(),zD=hi(),JD=Wh(),XD=Kh(),Yh=mr(),Hh=ee(),zh=na(),ZD=nn(),eN=1,Jh="[object Arguments]",Xh="[object Array]",Un="[object Object]",tN=Object.prototype,Zh=tN.hasOwnProperty;function rN(e,t,r,a,n,o){var s=Hh(e),i=Hh(t),p=s?Xh:Yh(e),f=i?Xh:Yh(t);p=p==Jh?Un:p,f=f==Jh?Un:f;var m=p==Un,g=f==Un,h=p==f;if(h&&zh(e)){if(!zh(t))return!1;s=!0,m=!1}if(h&&!m)return o||(o=new Ai),s||ZD(e)?zD(e,t,r,a,n,o):JD(e,t,p,r,a,n,o);if(!(r&eN)){var b=m&&Zh.call(e,"__wrapped__"),E=g&&Zh.call(t,"__wrapped__");if(b||E){var L=b?e.value():e,_=E?t.value():t;return o||(o=new Ai),n(L,_,r,a,o)}}return h?(o||(o=new Ai),XD(e,t,r,a,n,o)):!1}ey.exports=rN});var bi=u((TW,ny)=>{"use strict";var aN=ty(),ry=ge();function ay(e,t,r,a,n){return e===t?!0:e==null||t==null||!ry(e)&&!ry(t)?e!==e&&t!==t:aN(e,t,r,a,ay,n)}ny.exports=ay});var sy=u((EW,oy)=>{"use strict";var nN=Zr(),oN=bi(),sN=1,iN=2;function uN(e,t,r,a){var n=r.length,o=n,s=!a;if(e==null)return!o;for(e=Object(e);n--;){var i=r[n];if(s&&i[2]?i[1]!==e[i[0]]:!(i[0]in e))return!1}for(;++n<o;){i=r[n];var p=i[0],f=e[p],m=i[1];if(s&&i[2]){if(f===void 0&&!(p in e))return!1}else{var g=new nN;if(a)var h=a(f,m,p,e,t,g);if(!(h===void 0?oN(m,f,sN|iN,a,g):h))return!1}}return!0}oy.exports=uN});var Ii=u((RW,iy)=>{"use strict";var pN=ve();function cN(e){return e===e&&!pN(e)}iy.exports=cN});var py=u((xW,uy)=>{"use strict";var lN=Ii(),dN=dr();function fN(e){for(var t=dN(e),r=t.length;r--;){var a=t[r],n=e[a];t[r]=[a,n,lN(n)]}return t}uy.exports=fN});var Si=u((_W,cy)=>{"use strict";function mN(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}cy.exports=mN});var dy=u((OW,ly)=>{"use strict";var gN=sy(),hN=py(),yN=Si();function AN(e){var t=hN(e);return t.length==1&&t[0][2]?yN(t[0][0],t[0][1]):function(r){return r===e||gN(r,e,t)}}ly.exports=AN});var Dn=u((PW,fy)=>{"use strict";var bN=ee(),IN=lr(),SN=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,wN=/^\w*$/;function vN(e,t){if(bN(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||IN(e)?!0:wN.test(e)||!SN.test(e)||t!=null&&e in Object(t)}fy.exports=vN});var hy=u((LW,gy)=>{"use strict";var my=Ha(),TN="Expected a function";function wi(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(TN);var r=function(){var a=arguments,n=t?t.apply(this,a):a[0],o=r.cache;if(o.has(n))return o.get(n);var s=e.apply(this,a);return r.cache=o.set(n,s)||o,s};return r.cache=new(wi.Cache||my),r}wi.Cache=my;gy.exports=wi});var Ay=u((CW,yy)=>{"use strict";var EN=hy(),RN=500;function xN(e){var t=EN(e,function(a){return r.size===RN&&r.clear(),a}),r=t.cache;return t}yy.exports=xN});var vi=u((qW,by)=>{"use strict";var _N=Ay(),ON=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,PN=/\\(\\)?/g,LN=_N(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(ON,function(r,a,n,o){t.push(n?o.replace(PN,"$1"):a||r)}),t});by.exports=LN});var Ti=u((UW,Iy)=>{"use strict";function CN(e,t){for(var r=-1,a=e==null?0:e.length,n=Array(a);++r<a;)n[r]=t(e[r],r,e);return n}Iy.exports=CN});var Ry=u((DW,Ey)=>{"use strict";var Sy=Et(),qN=Ti(),UN=ee(),DN=lr(),NN=1/0,wy=Sy?Sy.prototype:void 0,vy=wy?wy.toString:void 0;function Ty(e){if(typeof e=="string")return e;if(UN(e))return qN(e,Ty)+"";if(DN(e))return vy?vy.call(e):"";var t=e+"";return t=="0"&&1/e==-NN?"-0":t}Ey.exports=Ty});var Ei=u((NW,xy)=>{"use strict";var BN=Ry();function MN(e){return e==null?"":BN(e)}xy.exports=MN});var Ri=u((BW,_y)=>{"use strict";var GN=ee(),kN=Dn(),FN=vi(),QN=Ei();function jN(e,t){return GN(e)?e:kN(e,t)?[e]:FN(QN(e))}_y.exports=jN});var gr=u((MW,Oy)=>{"use strict";var WN=lr(),$N=1/0;function VN(e){if(typeof e=="string"||WN(e))return e;var t=e+"";return t=="0"&&1/e==-$N?"-0":t}Oy.exports=VN});var xi=u((GW,Py)=>{"use strict";var KN=Ri(),YN=gr();function HN(e,t){t=KN(t,e);for(var r=0,a=t.length;e!=null&&r<a;)e=e[YN(t[r++])];return r&&r==a?e:void 0}Py.exports=HN});var Cy=u((kW,Ly)=>{"use strict";var zN=xi();function JN(e,t,r){var a=e==null?void 0:zN(e,t);return a===void 0?r:a}Ly.exports=JN});var Uy=u((FW,qy)=>{"use strict";function XN(e,t){return e!=null&&t in Object(e)}qy.exports=XN});var Ny=u((QW,Dy)=>{"use strict";var ZN=Ri(),eB=Vr(),tB=ee(),rB=ia(),aB=Xa(),nB=gr();function oB(e,t,r){t=ZN(t,e);for(var a=-1,n=t.length,o=!1;++a<n;){var s=nB(t[a]);if(!(o=e!=null&&r(e,s)))break;e=e[s]}return o||++a!=n?o:(n=e==null?0:e.length,!!n&&aB(n)&&rB(s,n)&&(tB(e)||eB(e)))}Dy.exports=oB});var My=u((jW,By)=>{"use strict";var sB=Uy(),iB=Ny();function uB(e,t){return e!=null&&iB(e,t,sB)}By.exports=uB});var ky=u((WW,Gy)=>{"use strict";var pB=bi(),cB=Cy(),lB=My(),dB=Dn(),fB=Ii(),mB=Si(),gB=gr(),hB=1,yB=2;function AB(e,t){return dB(e)&&fB(t)?mB(gB(e),t):function(r){var a=cB(r,e);return a===void 0&&a===t?lB(r,e):pB(t,a,hB|yB)}}Gy.exports=AB});var Qy=u(($W,Fy)=>{"use strict";function bB(e){return function(t){return t?.[e]}}Fy.exports=bB});var Wy=u((VW,jy)=>{"use strict";var IB=xi();function SB(e){return function(t){return IB(t,e)}}jy.exports=SB});var Vy=u((KW,$y)=>{"use strict";var wB=Qy(),vB=Wy(),TB=Dn(),EB=gr();function RB(e){return TB(e)?wB(EB(e)):vB(e)}$y.exports=RB});var _i=u((YW,Ky)=>{"use strict";var xB=dy(),_B=ky(),OB=Kr(),PB=ee(),LB=Vy();function CB(e){return typeof e=="function"?e:e==null?OB:typeof e=="object"?PB(e)?_B(e[0],e[1]):xB(e):LB(e)}Ky.exports=CB});var Hy=u((HW,Yy)=>{"use strict";var qB=mi(),UB=_i(),DB=1;function NB(e){return UB(typeof e=="function"?e:qB(e,DB))}Yy.exports=NB});var Jy=u((zW,zy)=>{"use strict";var BB=mo();function MB(e){var t=e==null?0:e.length;return t?BB(e,1):[]}zy.exports=MB});var Zy=u((JW,Xy)=>{"use strict";var GB=Jy(),kB=go(),FB=Ka();function QB(e){return FB(kB(e,void 0,GB),e+"")}Xy.exports=QB});var tA=u((XW,eA)=>{"use strict";var jB=Ln(),WB=Zy(),$B=256,VB=WB(function(e,t){return jB(e,$B,void 0,void 0,void 0,t)});eA.exports=VB});var aA=u((ZW,rA)=>{"use strict";var KB=Ti(),YB=Zt(),HB=ee(),zB=lr(),JB=vi(),XB=gr(),ZB=Ei();function eM(e){return HB(e)?KB(e,XB):zB(e)?[e]:YB(JB(ZB(e)))}rA.exports=eM});var oA=u((e$,nA)=>{"use strict";nA.exports={ary:bg(),assign:ni(),clone:_h(),curry:Ph(),forEach:On(),isArray:ee(),isError:Ch(),isFunction:Yr(),isWeakMap:Uh(),iteratee:Hy(),keys:ai(),rearg:tA(),toInteger:Zs(),toPath:aA()}});var iA=u((t$,sA)=>{"use strict";var tM=Yf(),rM=oA();function aM(e,t,r){return tM(rM,e,t,r)}sA.exports=aM});var Oi=u((r$,pA)=>{"use strict";var nM=iA(),uA=nM("merge",ko());uA.placeholder=Ds();pA.exports=uA});var pb=u((Y$,ub)=>{"use strict";function TM(e,t,r,a){for(var n=-1,o=e==null?0:e.length;++n<o;){var s=e[n];t(a,s,r(s),e)}return a}ub.exports=TM});var lb=u((H$,cb)=>{"use strict";var EM=Oo(),RM=dr();function xM(e,t){return e&&EM(e,t,RM)}cb.exports=xM});var mb=u((z$,fb)=>{"use strict";var _M=zt();function OM(e,t){return function(r,a){if(r==null)return r;if(!_M(r))return e(r,a);for(var n=r.length,o=t?n:-1,s=Object(r);(t?o--:++o<n)&&a(s[o],o,s)!==!1;);return r}}fb.exports=OM});var hb=u((J$,gb)=>{"use strict";var PM=lb(),LM=mb(),CM=LM(PM);gb.exports=CM});var Ab=u((X$,yb)=>{"use strict";var qM=hb();function UM(e,t,r,a){return qM(e,function(n,o,s){t(a,n,r(n),s)}),a}yb.exports=UM});var Ib=u((Z$,bb)=>{"use strict";var DM=pb(),NM=Ab(),BM=_i(),MM=ee();function GM(e,t){return function(r,a){var n=MM(r)?DM:NM,o=t?t():{};return n(r,e,BM(a,2),o)}}bb.exports=GM});var wb=u((eV,Sb)=>{"use strict";var kM=ea(),FM=Ib(),QM=Object.prototype,jM=QM.hasOwnProperty,WM=FM(function(e,t,r){jM.call(e,r)?e[r].push(t):kM(e,r,[t])});Sb.exports=WM});var fG={};w(fG,{Method:()=>Kn,ai:()=>mu,api:()=>Wi,auditLogs:()=>gt,automations:()=>An,backups:()=>Te,branding:()=>cn,constants:()=>kr,environmentVariables:()=>$e,features:()=>Pe,groups:()=>Q,init:()=>Qf,licensing:()=>ke,logger:()=>Dt,mappers:()=>V,middleware:()=>Di,plugins:()=>bn,publicApi:()=>wn,quotas:()=>je,scimGroups:()=>hr,scimUsers:()=>de,sdk:()=>Li,users:()=>Ze,utils:()=>$t});module.exports=dI(fG);var Kn=(o=>(o.POST="POST",o.GET="GET",o.PATCH="PATCH",o.DELETE="DELETE",o.PUT="PUT",o))(Kn||{});var Li={};w(Li,{ai:()=>as,auditLogs:()=>gt,automations:()=>An,backups:()=>Te,branding:()=>cn,environmentVariables:()=>$e,features:()=>Pe,groups:()=>Q,init:()=>Qf,licensing:()=>ke,logger:()=>Dt,plugins:()=>bn,publicApi:()=>wn,quotas:()=>je,scimGroups:()=>hr,scimUsers:()=>de,users:()=>Ze,utils:()=>$t});var cn={};w(cn,{getBrandingConfig:()=>r_});var Pe={};w(Pe,{checkBackups:()=>he,checkFeature:()=>un,checkFeatures:()=>Jo,checkSCIM:()=>ts,isAppBuildersEnabled:()=>Ot,isAuditLogsEnabled:()=>pn,isBackupsEnabled:()=>Xo,isBrandingEnabled:()=>Zo,isEnforceableSSO:()=>tf,isExpandedPublicApiEnabled:()=>Je,isPWAEnabled:()=>Jx,isSSOEnforced:()=>Xx,isSyncAutomationsEnabled:()=>Hx,isTriggerAutomationRunEnabled:()=>zx,isUserGroupsEnabled:()=>es,isViewPermissionEnabled:()=>Zx,isViewReadonlyColumnsEnabled:()=>e_});var oe=require("@budibase/types"),ze=require("@budibase/backend-core");var ke={};w(ke,{cache:()=>_e,client:()=>lt,features:()=>ja,getFreeLicense:()=>Yo,getLicense:()=>Vo,getLicenseFromKey:()=>Ko,keys:()=>zo,offline:()=>on,quotas:()=>Wa});var _e={};w(_e,{getCachedLicense:()=>Zd,invalidate:()=>ef,refresh:()=>Rt});var Pa=require("@budibase/backend-core"),Sr,fI=async()=>{Sr=await Pa.RedisClient.init(Pa.redis.utils.Databases.LICENSES)},mI=async()=>{Sr&&await Sr.finish()};process.on("exit",async()=>{await mI()});var Yn=async()=>(Sr||await fI(),Sr);var lt={};w(lt,{activateLicenseKey:()=>uo,getLicense:()=>jt,getLicenseFromKey:()=>io,triggerQuota:()=>ZI});var vu=C(require("node-fetch"));var Tu=require("@budibase/backend-core"),Hn=class{constructor(t){this.apiCall=t=>async(r="",a={})=>{a.headers||(a.headers={}),a.headers["Content-Type"]||(a.headers={"Content-Type":"application/json",Accept:"application/json",...a.headers});let n=a.headers["Content-Type"]==="application/json";Tu.logging.correlation.setHeader(a.headers);let o={method:t,body:n?JSON.stringify(a.body):a.body,headers:a.headers,credentials:"include"};return(0,vu.default)(`${this.host}${r}`,o)};this.post=this.apiCall("POST");this.get=this.apiCall("GET");this.patch=this.apiCall("PATCH");this.del=this.apiCall("DELETE");this.put=this.apiCall("PUT");this.host=t}},zn=Hn;var ka=require("@budibase/types"),P=require("@budibase/backend-core");var Be={};w(Be,{bustCache:()=>Zn,getCurrentUsageValues:()=>Cu,getQuotaUsage:()=>St,setAllUsage:()=>to,setAppUsageValue:()=>eo,setUsage:()=>Ou,setUsagePerApp:()=>Pu,utils:()=>Tr});var re=require("@budibase/types"),pe=require("@budibase/backend-core");var Tr={};w(Tr,{generateBaseQuotaUsage:()=>La,generateNewMonthlyQuotas:()=>vr,generateNewQuotaUsage:()=>Xn,getBreakdownName:()=>qa,getCurrentMonthString:()=>ut,getQuotaDocId:()=>wr,setCurrentMonth:()=>Ca,setQuotaReset:()=>Jn});var X=require("@budibase/types"),It=require("@budibase/backend-core"),wr=()=>It.context.isSelfHostUsingCloud()?`quota_usage_${It.context.getTenantId()}`:It.db.StaticDatabases.GLOBAL.docs.usageQuota,Eu=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},Jn=e=>{e.quotaReset=Eu()},ut=()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},La=()=>({usageQuota:{[X.StaticQuotaName.APPS]:0,[X.StaticQuotaName.ROWS]:0,[X.StaticQuotaName.PLUGINS]:0,[X.StaticQuotaName.USERS]:0,[X.StaticQuotaName.CREATORS]:0,[X.StaticQuotaName.USER_GROUPS]:0,[X.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[ut()]:vr()}}),Xn=()=>{let e={_id:wr(),quotaReset:Eu(),...La(),apps:{}};return Ca(e),e},vr=()=>({[X.MonthlyQuotaName.QUERIES]:0,[X.MonthlyQuotaName.AUTOMATIONS]:0,[X.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,triggers:{}}),Ca=e=>{let t=ut();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=vr()),e.monthly.current=e.monthly[t]},qa=(e,t)=>{if(!(!t||!e))switch(e){case X.MonthlyQuotaName.AUTOMATIONS:return X.BreakdownQuotaName.AUTOMATIONS;case X.MonthlyQuotaName.QUERIES:return It.db.isTableId(t)?X.BreakdownQuotaName.ROW_QUERIES:It.db.isDatasourceId(t)?X.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}};var Ru=pe.Duration.fromSeconds(60).toMs(),{Writethrough:xu}=pe.cache.writethrough;function hI(e){return delete e.usageLimits,delete e.usageQuota.automationRuns,delete e.usageQuota.emails,delete e.usageQuota.storage,delete e.usageQuota.views,delete e.usageQuota.publishedApps,delete e.usageQuota.developers,e}var Ua=()=>pe.tenancy.isSelfHostUsingCloud()?new xu(pe.tenancy.getSelfHostCloudDB(),Ru):new xu(pe.tenancy.getGlobalDB(),Ru);async function Zn(e=0){let r=Ua(),a=wr(),n=await r.tryGet(a);n&&n._rev&&await r.remove(a,n._rev).catch(async o=>{if(e<1)return await Zn(e+1);throw o})}var St=async()=>{let e=Ua(),t=await e.tryGet(wr());if(!t){t=Xn();let{rev:r}=await e.put(t);t._rev=r}return Ca(t),Jn(t),hI(t)},Ou=async(e,t,r)=>to({name:t,type:r,values:{total:e}}),Pu=async(e,t,r)=>{let a=Ua(),n=await St(),o=Object.values(e).reduce((i,p)=>i+p,0);for(let[i,p]of Object.entries(e))n=Lu(n,t,r,{total:o,app:p},{appId:i});let s=await a.put(n);return n._rev=s.rev,n},yI=(e,t,r,a)=>{let n=qa(t,r);if(!n||!a?.breakdown)return e;e.breakdown||(e.breakdown={}),e.breakdown[n]||(e.breakdown[n]={parent:t,values:{}});let o=e.breakdown[n];return o.values[r]=a.breakdown,e},eo=(e,t,r,a={},n)=>{let o;try{o=pe.db.getProdAppID(a?.appId||pe.context.getAppId())}catch{}if(!o||!n.app||!re.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[o]||(e.apps={...e.apps,[o]:La()});let s=e.apps[o];switch(r){case re.QuotaUsageType.STATIC:s.usageQuota[t]=n.app;break;case re.QuotaUsageType.MONTHLY:{let i=ut(),p=t,f=s.monthly[i];f||(s.monthly[i]=vr(),f=s.monthly[i]),f[p]=n.app,re.BREAKDOWN_QUOTA_NAMES.includes(p)&&a?.id&&(f=yI(f,p,a.id,n));break}}return e},_u=(e,t,r,a)=>{if(!re.APP_QUOTA_NAMES.includes(r))return{};let n;try{n=pe.db.getProdAppID(pe.context.getAppId())}catch{}if(!n||!e.apps||!e.apps[n])return{app:0};let o=e.apps[n];switch(t){case re.QuotaUsageType.STATIC:if(o.usageQuota?.[r])return{app:o.usageQuota[r]};break;case re.QuotaUsageType.MONTHLY:{let s=ut(),i=r;if(!o.monthly?.[s]?.[i])break;let p=o.monthly[s],f=p[i],m,g=qa(i,a);return g&&a&&p.breakdown?.[g]&&(m=p.breakdown[g]?.values[a]),{app:f,breakdown:m||0}}}return{app:0}},AI=(e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},bI=(e,t,r,a)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),a&&(r.monthly[t].triggers[e]=a)},Lu=(e,t,r,a,n={})=>{if(r===re.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=a.total,AI(t,e,a.triggers);else if(r===re.QuotaUsageType.MONTHLY){t=t;let o=ut();e.monthly[o][t]=a.total,bI(t,o,e,a.triggers)}else throw new Error(`Invalid usage type: ${r}`);return eo(e,t,r,n,a)},to=async e=>{let t=Array.isArray(e)?e:[e],r=Ua(),a=await St();for(let o of t)a=Lu(a,o.name,o.type,o.values,o.opts);let n=await r.put(a,0);return a._rev=n.rev,a},Cu=async(e,t,r)=>{let a=await St(),n=0,o={};switch(e){case re.QuotaUsageType.STATIC:if(a.usageQuota[t]){let s=t;n=a.usageQuota[s],o=_u(a,e,t,r)}break;case re.QuotaUsageType.MONTHLY:{let s=ut(),i=t;a.monthly[s][i]&&(n=a.monthly[s][i],o=_u(a,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return re.APP_QUOTA_NAMES.includes(t)&&!(o.app||o.breakdown)&&(o.app=o.app||0,o.breakdown=o.breakdown||0),{total:n,app:o.app,breakdown:o.breakdown}};var Se={};w(Se,{destroy:()=>wI,get:()=>ro,save:()=>SI});var pt=require("@budibase/backend-core"),II=()=>({_id:pt.StaticDatabases.GLOBAL.docs.licenseInfo}),SI=async e=>{let t=await ro();t={...t,...e};let a=await pt.tenancy.getGlobalDB().put(t);return t._rev=a.rev,t},ro=async()=>{let e=pt.tenancy.getGlobalDB();try{return await e.get(pt.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return II();throw t}},wI=async()=>{let e=pt.tenancy.getGlobalDB(),t=await ro();t&&t._rev&&await e.remove(pt.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)};var M={};w(M,{bulkSave:()=>UI,destroy:()=>DI,fetch:()=>PI,generateUserGroupID:()=>_I,get:()=>LI,getBulk:()=>CI,getByName:()=>ao,getGroupUsers:()=>Na,getGroupUsersParams:()=>Bu,getUserGroupsParams:()=>Nu,save:()=>qI});var D=require("@budibase/backend-core");var xe=require("@budibase/types"),kt=require("@budibase/backend-core");async function qu(){let e=kt.sql.designDoc.base("type");e.sql.tables={[xe.AUDIT_LOG_TYPE]:{fields:{appId:xe.SQLiteType.TEXT,event:xe.SQLiteType.TEXT,userId:xe.SQLiteType.TEXT,timestamp:xe.SQLiteType.TEXT,metadata:xe.SQLiteType.TEXT,name:xe.SQLiteType.TEXT,type:xe.SQLiteType.TEXT,fallback:xe.SQLiteType.TEXT}}};let t=kt.context.getAuditLogsDB(),r;try{r=await t.get(kt.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(a){if(a.status===404)r=e;else throw a}await t.put(r)}var Da=require("@budibase/backend-core"),{ViewName:vI,SEPARATOR:TI,DocumentType:EI,createView:RI}=Da.db,xI=EI.USER+TI;async function Uu(){let e=Da.tenancy.getGlobalDB(),t=`function(doc) {
|
|
4
|
-
if (doc._id.startsWith("${
|
|
3
|
+
`)}qm.exports=vP});var Ln=u((_j,Dm)=>{"use strict";function EP(e,t){for(var r=-1,a=e==null?0:e.length;++r<a&&t(e[r],r,e)!==!1;);return e}Dm.exports=EP});var Bm=u((Oj,Nm)=>{"use strict";var RP=Ln(),xP=vo(),_P=1,OP=2,PP=8,LP=16,CP=32,qP=64,UP=128,DP=256,NP=512,BP=[["ary",UP],["bind",_P],["bindKey",OP],["curry",PP],["curryRight",LP],["flip",NP],["partial",CP],["partialRight",qP],["rearg",DP]];function MP(e,t){return RP(BP,function(r){var a="_."+r[0];t&r[1]&&!xP(e,a)&&e.push(a)}),e.sort()}Nm.exports=MP});var Js=u((Pj,Mm)=>{"use strict";var GP=Cm(),kP=Um(),FP=Ha(),QP=Bm();function jP(e,t,r){var a=t+"";return FP(e,kP(a,QP(GP(a),r)))}Mm.exports=jP});var Xs=u((Lj,Fm)=>{"use strict";var WP=Om(),$P=zs(),KP=Js(),VP=1,YP=2,HP=4,zP=8,Gm=32,km=64;function JP(e,t,r,a,n,o,s,i,p,f){var m=t&zP,y=m?s:void 0,g=m?void 0:s,S=m?o:void 0,P=m?void 0:o;t|=m?Gm:km,t&=~(m?km:Gm),t&HP||(t&=~(VP|YP));var x=[e,t,n,S,y,P,g,i,p,f],R=r.apply(void 0,x);return WP(e)&&$P(R,x),R.placeholder=a,KP(R,e,t)}Fm.exports=JP});var Zs=u((Cj,Qm)=>{"use strict";function XP(e){var t=e;return t.placeholder}Qm.exports=XP});var Wm=u((qj,jm)=>{"use strict";var ZP=er(),eL=pa(),tL=Math.min;function rL(e,t){for(var r=e.length,a=tL(t.length,r),n=ZP(e);a--;){var o=t[a];e[a]=eL(o,r)?n[o]:void 0}return e}jm.exports=rL});var Cn=u((Uj,Km)=>{"use strict";var $m="__lodash_placeholder__";function aL(e,t){for(var r=-1,a=e.length,n=0,o=[];++r<a;){var s=e[r];(s===t||s===$m)&&(e[r]=$m,o[n++]=r)}return o}Km.exports=aL});var ei=u((Dj,Hm)=>{"use strict";var nL=Ks(),oL=Vs(),sL=dm(),Vm=Ia(),iL=Xs(),uL=Zs(),pL=Wm(),cL=Cn(),lL=ne(),dL=1,fL=2,mL=8,gL=16,yL=128,hL=512;function Ym(e,t,r,a,n,o,s,i,p,f){var m=t&yL,y=t&dL,g=t&fL,S=t&(mL|gL),P=t&hL,x=g?void 0:Vm(e);function R(){for(var E=arguments.length,q=Array(E),xe=E;xe--;)q[xe]=arguments[xe];if(S)var be=uL(R),it=sL(q,be);if(a&&(q=nL(q,a,n,S)),o&&(q=oL(q,o,s,S)),E-=it,S&&E<f){var kt=cL(q,be);return iL(e,t,Ym,R.placeholder,r,q,kt,i,p,f-E)}var Ir=y?r:this,Sr=g?Ir[e]:e;return E=q.length,i?q=pL(q,i):P&&E>1&&q.reverse(),m&&p<E&&(q.length=p),this&&this!==lL&&this instanceof R&&(Sr=x||Vm(Sr)),Sr.apply(Ir,q)}return R}Hm.exports=Ym});var Jm=u((Nj,zm)=>{"use strict";var AL=Ya(),bL=Ia(),IL=ei(),SL=Xs(),wL=Zs(),TL=Cn(),vL=ne();function EL(e,t,r){var a=bL(e);function n(){for(var o=arguments.length,s=Array(o),i=o,p=wL(n);i--;)s[i]=arguments[i];var f=o<3&&s[0]!==p&&s[o-1]!==p?[]:TL(s,p);if(o-=f.length,o<r)return SL(e,t,IL,n.placeholder,void 0,s,f,void 0,void 0,r-o);var m=this&&this!==vL&&this instanceof n?a:e;return AL(m,this,s)}return n}zm.exports=EL});var Zm=u((Bj,Xm)=>{"use strict";var RL=Ya(),xL=Ia(),_L=ne(),OL=1;function PL(e,t,r,a){var n=t&OL,o=xL(e);function s(){for(var i=-1,p=arguments.length,f=-1,m=a.length,y=Array(m+p),g=this&&this!==_L&&this instanceof s?o:e;++f<m;)y[f]=a[f];for(;p--;)y[f++]=arguments[++i];return RL(g,n?r:this,y)}return s}Xm.exports=PL});var og=u((Mj,ng)=>{"use strict";var LL=Ks(),CL=Vs(),eg=Cn(),tg="__lodash_placeholder__",ti=1,qL=2,UL=4,rg=8,Sa=128,ag=256,DL=Math.min;function NL(e,t){var r=e[1],a=t[1],n=r|a,o=n<(ti|qL|Sa),s=a==Sa&&r==rg||a==Sa&&r==ag&&e[7].length<=t[8]||a==(Sa|ag)&&t[7].length<=t[8]&&r==rg;if(!(o||s))return e;a&ti&&(e[2]=t[2],n|=r&ti?0:UL);var i=t[3];if(i){var p=e[3];e[3]=p?LL(p,i,t[4]):i,e[4]=p?eg(e[3],tg):t[4]}return i=t[5],i&&(p=e[5],e[5]=p?CL(p,i,t[6]):i,e[6]=p?eg(e[5],tg):t[6]),i=t[7],i&&(e[7]=i),a&Sa&&(e[8]=e[8]==null?t[8]:DL(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=n,e}ng.exports=NL});var ig=u((Gj,sg)=>{"use strict";var BL=/\s/;function ML(e){for(var t=e.length;t--&&BL.test(e.charAt(t)););return t}sg.exports=ML});var pg=u((kj,ug)=>{"use strict";var GL=ig(),kL=/^\s+/;function FL(e){return e&&e.slice(0,GL(e)+1).replace(kL,"")}ug.exports=FL});var fr=u((Fj,cg)=>{"use strict";var QL=dt(),jL=ge(),WL="[object Symbol]";function $L(e){return typeof e=="symbol"||jL(e)&&QL(e)==WL}cg.exports=$L});var mg=u((Qj,fg)=>{"use strict";var KL=pg(),lg=Te(),VL=fr(),dg=0/0,YL=/^[-+]0x[0-9a-f]+$/i,HL=/^0b[01]+$/i,zL=/^0o[0-7]+$/i,JL=parseInt;function XL(e){if(typeof e=="number")return e;if(VL(e))return dg;if(lg(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=lg(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=KL(e);var r=HL.test(e);return r||zL.test(e)?JL(e.slice(2),r?2:8):YL.test(e)?dg:+e}fg.exports=XL});var hg=u((jj,yg)=>{"use strict";var ZL=mg(),gg=1/0,eC=17976931348623157e292;function tC(e){if(!e)return e===0?e:0;if(e=ZL(e),e===gg||e===-gg){var t=e<0?-1:1;return t*eC}return e===e?e:0}yg.exports=tC});var ri=u((Wj,Ag)=>{"use strict";var rC=hg();function aC(e){var t=rC(e),r=t%1;return t===t?r?t-r:t:0}Ag.exports=aC});var qn=u(($j,Tg)=>{"use strict";var nC=$s(),oC=um(),sC=Jm(),iC=ei(),uC=Zm(),pC=Ys(),cC=og(),lC=zs(),dC=Js(),bg=ri(),fC="Expected a function",Ig=1,mC=2,ai=8,ni=16,oi=32,Sg=64,wg=Math.max;function gC(e,t,r,a,n,o,s,i){var p=t&mC;if(!p&&typeof e!="function")throw new TypeError(fC);var f=a?a.length:0;if(f||(t&=~(oi|Sg),a=n=void 0),s=s===void 0?s:wg(bg(s),0),i=i===void 0?i:bg(i),f-=n?n.length:0,t&Sg){var m=a,y=n;a=n=void 0}var g=p?void 0:pC(e),S=[e,t,r,a,n,m,y,o,s,i];if(g&&cC(S,g),e=S[0],t=S[1],r=S[2],a=S[3],n=S[4],i=S[9]=S[9]===void 0?p?0:e.length:wg(S[9]-f,0),!i&&t&(ai|ni)&&(t&=~(ai|ni)),!t||t==Ig)var P=oC(e,t,r);else t==ai||t==ni?P=sC(e,t,i):(t==oi||t==(Ig|oi))&&!n.length?P=uC(e,t,r,a):P=iC.apply(void 0,S);var x=g?nC:lC;return dC(x(P,S),e,t)}Tg.exports=gC});var Eg=u((Kj,vg)=>{"use strict";var yC=qn(),hC=128;function AC(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,yC(e,hC,void 0,void 0,void 0,void 0,t)}vg.exports=AC});var xg=u((Vj,Rg)=>{"use strict";var bC=Do(),IC=bC(Object.keys,Object);Rg.exports=IC});var si=u((Yj,_g)=>{"use strict";var SC=an(),wC=xg(),TC=Object.prototype,vC=TC.hasOwnProperty;function EC(e){if(!SC(e))return wC(e);var t=[];for(var r in Object(e))vC.call(e,r)&&r!="constructor"&&t.push(r);return t}_g.exports=EC});var mr=u((Hj,Og)=>{"use strict";var RC=Fo(),xC=si(),_C=Jt();function OC(e){return _C(e)?RC(e):xC(e)}Og.exports=OC});var ii=u((zj,Pg)=>{"use strict";var PC=ar(),LC=mr();function CC(e,t){return e&&PC(t,LC(t),e)}Pg.exports=CC});var Cg=u((Jj,Lg)=>{"use strict";var qC=ar(),UC=nr();function DC(e,t){return e&&qC(t,UC(t),e)}Lg.exports=DC});var Ug=u((Xj,qg)=>{"use strict";function NC(e,t){for(var r=-1,a=e==null?0:e.length,n=0,o=[];++r<a;){var s=e[r];t(s,r,e)&&(o[n++]=s)}return o}qg.exports=NC});var ui=u((Zj,Dg)=>{"use strict";function BC(){return[]}Dg.exports=BC});var Un=u((eW,Bg)=>{"use strict";var MC=Ug(),GC=ui(),kC=Object.prototype,FC=kC.propertyIsEnumerable,Ng=Object.getOwnPropertySymbols,QC=Ng?function(e){return e==null?[]:(e=Object(e),MC(Ng(e),function(t){return FC.call(e,t)}))}:GC;Bg.exports=QC});var Gg=u((tW,Mg)=>{"use strict";var jC=ar(),WC=Un();function $C(e,t){return jC(e,WC(e),t)}Mg.exports=$C});var pi=u((rW,kg)=>{"use strict";var KC=Va(),VC=rn(),YC=Un(),HC=ui(),zC=Object.getOwnPropertySymbols,JC=zC?function(e){for(var t=[];e;)KC(t,YC(e)),e=VC(e);return t}:HC;kg.exports=JC});var Qg=u((aW,Fg)=>{"use strict";var XC=ar(),ZC=pi();function eq(e,t){return XC(e,ZC(e),t)}Fg.exports=eq});var ci=u((nW,jg)=>{"use strict";var tq=Va(),rq=ee();function aq(e,t,r){var a=t(e);return rq(e)?a:tq(a,r(e))}jg.exports=aq});var li=u((oW,Wg)=>{"use strict";var nq=ci(),oq=Un(),sq=mr();function iq(e){return nq(e,sq,oq)}Wg.exports=iq});var Kg=u((sW,$g)=>{"use strict";var uq=ci(),pq=pi(),cq=nr();function lq(e){return uq(e,cq,pq)}$g.exports=lq});var Yg=u((iW,Vg)=>{"use strict";var dq=ft(),fq=ne(),mq=dq(fq,"DataView");Vg.exports=mq});var zg=u((uW,Hg)=>{"use strict";var gq=ft(),yq=ne(),hq=gq(yq,"Promise");Hg.exports=hq});var yr=u((pW,ay)=>{"use strict";var di=Yg(),fi=za(),mi=zg(),gi=Ro(),yi=Qs(),ry=dt(),gr=bo(),Jg="[object Map]",Aq="[object Object]",Xg="[object Promise]",Zg="[object Set]",ey="[object WeakMap]",ty="[object DataView]",bq=gr(di),Iq=gr(fi),Sq=gr(mi),wq=gr(gi),Tq=gr(yi),Dt=ry;(di&&Dt(new di(new ArrayBuffer(1)))!=ty||fi&&Dt(new fi)!=Jg||mi&&Dt(mi.resolve())!=Xg||gi&&Dt(new gi)!=Zg||yi&&Dt(new yi)!=ey)&&(Dt=function(e){var t=ry(e),r=t==Aq?e.constructor:void 0,a=r?gr(r):"";if(a)switch(a){case bq:return ty;case Iq:return Jg;case Sq:return Xg;case wq:return Zg;case Tq:return ey}return t});ay.exports=Dt});var oy=u((cW,ny)=>{"use strict";var vq=Object.prototype,Eq=vq.hasOwnProperty;function Rq(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&Eq.call(e,"index")&&(r.index=e.index,r.input=e.input),r}ny.exports=Rq});var iy=u((lW,sy)=>{"use strict";var xq=tn();function _q(e,t){var r=t?xq(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}sy.exports=_q});var py=u((dW,uy)=>{"use strict";var Oq=/\w*$/;function Pq(e){var t=new e.constructor(e.source,Oq.exec(e));return t.lastIndex=e.lastIndex,t}uy.exports=Pq});var my=u((fW,fy)=>{"use strict";var cy=Rt(),ly=cy?cy.prototype:void 0,dy=ly?ly.valueOf:void 0;function Lq(e){return dy?Object(dy.call(e)):{}}fy.exports=Lq});var yy=u((mW,gy)=>{"use strict";var Cq=tn(),qq=iy(),Uq=py(),Dq=my(),Nq=Uo(),Bq="[object Boolean]",Mq="[object Date]",Gq="[object Map]",kq="[object Number]",Fq="[object RegExp]",Qq="[object Set]",jq="[object String]",Wq="[object Symbol]",$q="[object ArrayBuffer]",Kq="[object DataView]",Vq="[object Float32Array]",Yq="[object Float64Array]",Hq="[object Int8Array]",zq="[object Int16Array]",Jq="[object Int32Array]",Xq="[object Uint8Array]",Zq="[object Uint8ClampedArray]",eU="[object Uint16Array]",tU="[object Uint32Array]";function rU(e,t,r){var a=e.constructor;switch(t){case $q:return Cq(e);case Bq:case Mq:return new a(+e);case Kq:return qq(e,r);case Vq:case Yq:case Hq:case zq:case Jq:case Xq:case Zq:case eU:case tU:return Nq(e,r);case Gq:return new a;case kq:case jq:return new a(e);case Fq:return Uq(e);case Qq:return new a;case Wq:return Dq(e)}}gy.exports=rU});var Ay=u((gW,hy)=>{"use strict";var aU=yr(),nU=ge(),oU="[object Map]";function sU(e){return nU(e)&&aU(e)==oU}hy.exports=sU});var wy=u((yW,Sy)=>{"use strict";var iU=Ay(),uU=nn(),by=on(),Iy=by&&by.isMap,pU=Iy?uU(Iy):iU;Sy.exports=pU});var vy=u((hW,Ty)=>{"use strict";var cU=yr(),lU=ge(),dU="[object Set]";function fU(e){return lU(e)&&cU(e)==dU}Ty.exports=fU});var _y=u((AW,xy)=>{"use strict";var mU=vy(),gU=nn(),Ey=on(),Ry=Ey&&Ey.isSet,yU=Ry?gU(Ry):mU;xy.exports=yU});var hi=u((bW,Cy)=>{"use strict";var hU=ta(),AU=Ln(),bU=ko(),IU=ii(),SU=Cg(),wU=Co(),TU=er(),vU=Gg(),EU=Qg(),RU=li(),xU=Kg(),_U=yr(),OU=oy(),PU=yy(),LU=No(),CU=ee(),qU=sa(),UU=wy(),DU=Te(),NU=_y(),BU=mr(),MU=nr(),GU=1,kU=2,FU=4,Oy="[object Arguments]",QU="[object Array]",jU="[object Boolean]",WU="[object Date]",$U="[object Error]",Py="[object Function]",KU="[object GeneratorFunction]",VU="[object Map]",YU="[object Number]",Ly="[object Object]",HU="[object RegExp]",zU="[object Set]",JU="[object String]",XU="[object Symbol]",ZU="[object WeakMap]",eD="[object ArrayBuffer]",tD="[object DataView]",rD="[object Float32Array]",aD="[object Float64Array]",nD="[object Int8Array]",oD="[object Int16Array]",sD="[object Int32Array]",iD="[object Uint8Array]",uD="[object Uint8ClampedArray]",pD="[object Uint16Array]",cD="[object Uint32Array]",D={};D[Oy]=D[QU]=D[eD]=D[tD]=D[jU]=D[WU]=D[rD]=D[aD]=D[nD]=D[oD]=D[sD]=D[VU]=D[YU]=D[Ly]=D[HU]=D[zU]=D[JU]=D[XU]=D[iD]=D[uD]=D[pD]=D[cD]=!0;D[$U]=D[Py]=D[ZU]=!1;function Dn(e,t,r,a,n,o){var s,i=t&GU,p=t&kU,f=t&FU;if(r&&(s=n?r(e,a,n,o):r(e)),s!==void 0)return s;if(!DU(e))return e;var m=CU(e);if(m){if(s=OU(e),!i)return TU(e,s)}else{var y=_U(e),g=y==Py||y==KU;if(qU(e))return wU(e,i);if(y==Ly||y==Oy||g&&!n){if(s=p||g?{}:LU(e),!i)return p?EU(e,SU(s,e)):vU(e,IU(s,e))}else{if(!D[y])return n?e:{};s=PU(e,y,i)}}o||(o=new hU);var S=o.get(e);if(S)return S;o.set(e,s),NU(e)?e.forEach(function(R){s.add(Dn(R,t,r,R,e,o))}):UU(e)&&e.forEach(function(R,E){s.set(E,Dn(R,t,r,E,e,o))});var P=f?p?xU:RU:p?MU:BU,x=m?void 0:P(e);return AU(x||e,function(R,E){x&&(E=R,R=e[E]),bU(s,E,Dn(R,t,r,E,e,o))}),s}Cy.exports=Dn});var Uy=u((IW,qy)=>{"use strict";var lD=hi(),dD=4;function fD(e){return lD(e,dD)}qy.exports=fD});var Ny=u((SW,Dy)=>{"use strict";var mD=qn(),gD=8;function Ai(e,t,r){t=r?void 0:t;var a=mD(e,gD,void 0,void 0,void 0,void 0,void 0,t);return a.placeholder=Ai.placeholder,a}Ai.placeholder={};Dy.exports=Ai});var My=u((wW,By)=>{"use strict";var yD=dt(),hD=ge(),AD=Bo(),bD="[object DOMException]",ID="[object Error]";function SD(e){if(!hD(e))return!1;var t=yD(e);return t==ID||t==bD||typeof e.message=="string"&&typeof e.name=="string"&&!AD(e)}By.exports=SD});var ky=u((TW,Gy)=>{"use strict";var wD=yr(),TD=ge(),vD="[object WeakMap]";function ED(e){return TD(e)&&wD(e)==vD}Gy.exports=ED});var Qy=u((vW,Fy)=>{"use strict";function RD(e,t){for(var r=-1,a=e==null?0:e.length;++r<a;)if(t(e[r],r,e))return!0;return!1}Fy.exports=RD});var bi=u((EW,jy)=>{"use strict";var xD=To(),_D=Qy(),OD=Eo(),PD=1,LD=2;function CD(e,t,r,a,n,o){var s=r&PD,i=e.length,p=t.length;if(i!=p&&!(s&&p>i))return!1;var f=o.get(e),m=o.get(t);if(f&&m)return f==t&&m==e;var y=-1,g=!0,S=r&LD?new xD:void 0;for(o.set(e,t),o.set(t,e);++y<i;){var P=e[y],x=t[y];if(a)var R=s?a(x,P,y,t,e,o):a(P,x,y,e,t,o);if(R!==void 0){if(R)continue;g=!1;break}if(S){if(!_D(t,function(E,q){if(!OD(S,q)&&(P===E||n(P,E,r,a,o)))return S.push(q)})){g=!1;break}}else if(!(P===x||n(P,x,r,a,o))){g=!1;break}}return o.delete(e),o.delete(t),g}jy.exports=CD});var $y=u((RW,Wy)=>{"use strict";function qD(e){var t=-1,r=Array(e.size);return e.forEach(function(a,n){r[++t]=[n,a]}),r}Wy.exports=qD});var zy=u((xW,Hy)=>{"use strict";var Ky=Rt(),Vy=qo(),UD=Yt(),DD=bi(),ND=$y(),BD=Za(),MD=1,GD=2,kD="[object Boolean]",FD="[object Date]",QD="[object Error]",jD="[object Map]",WD="[object Number]",$D="[object RegExp]",KD="[object Set]",VD="[object String]",YD="[object Symbol]",HD="[object ArrayBuffer]",zD="[object DataView]",Yy=Ky?Ky.prototype:void 0,Ii=Yy?Yy.valueOf:void 0;function JD(e,t,r,a,n,o,s){switch(r){case zD:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case HD:return!(e.byteLength!=t.byteLength||!o(new Vy(e),new Vy(t)));case kD:case FD:case WD:return UD(+e,+t);case QD:return e.name==t.name&&e.message==t.message;case $D:case VD:return e==t+"";case jD:var i=ND;case KD:var p=a&MD;if(i||(i=BD),e.size!=t.size&&!p)return!1;var f=s.get(e);if(f)return f==t;a|=GD,s.set(e,t);var m=DD(i(e),i(t),a,n,o,s);return s.delete(e),m;case YD:if(Ii)return Ii.call(e)==Ii.call(t)}return!1}Hy.exports=JD});var Zy=u((_W,Xy)=>{"use strict";var Jy=li(),XD=1,ZD=Object.prototype,eN=ZD.hasOwnProperty;function tN(e,t,r,a,n,o){var s=r&XD,i=Jy(e),p=i.length,f=Jy(t),m=f.length;if(p!=m&&!s)return!1;for(var y=p;y--;){var g=i[y];if(!(s?g in t:eN.call(t,g)))return!1}var S=o.get(e),P=o.get(t);if(S&&P)return S==t&&P==e;var x=!0;o.set(e,t),o.set(t,e);for(var R=s;++y<p;){g=i[y];var E=e[g],q=t[g];if(a)var xe=s?a(q,E,g,t,e,o):a(E,q,g,e,t,o);if(!(xe===void 0?E===q||n(E,q,r,a,o):xe)){x=!1;break}R||(R=g=="constructor")}if(x&&!R){var be=e.constructor,it=t.constructor;be!=it&&"constructor"in e&&"constructor"in t&&!(typeof be=="function"&&be instanceof be&&typeof it=="function"&&it instanceof it)&&(x=!1)}return o.delete(e),o.delete(t),x}Xy.exports=tN});var ih=u((OW,sh)=>{"use strict";var Si=ta(),rN=bi(),aN=zy(),nN=Zy(),eh=yr(),th=ee(),rh=sa(),oN=sn(),sN=1,ah="[object Arguments]",nh="[object Array]",Nn="[object Object]",iN=Object.prototype,oh=iN.hasOwnProperty;function uN(e,t,r,a,n,o){var s=th(e),i=th(t),p=s?nh:eh(e),f=i?nh:eh(t);p=p==ah?Nn:p,f=f==ah?Nn:f;var m=p==Nn,y=f==Nn,g=p==f;if(g&&rh(e)){if(!rh(t))return!1;s=!0,m=!1}if(g&&!m)return o||(o=new Si),s||oN(e)?rN(e,t,r,a,n,o):aN(e,t,p,r,a,n,o);if(!(r&sN)){var S=m&&oh.call(e,"__wrapped__"),P=y&&oh.call(t,"__wrapped__");if(S||P){var x=S?e.value():e,R=P?t.value():t;return o||(o=new Si),n(x,R,r,a,o)}}return g?(o||(o=new Si),nN(e,t,r,a,n,o)):!1}sh.exports=uN});var wi=u((PW,ch)=>{"use strict";var pN=ih(),uh=ge();function ph(e,t,r,a,n){return e===t?!0:e==null||t==null||!uh(e)&&!uh(t)?e!==e&&t!==t:pN(e,t,r,a,ph,n)}ch.exports=ph});var dh=u((LW,lh)=>{"use strict";var cN=ta(),lN=wi(),dN=1,fN=2;function mN(e,t,r,a){var n=r.length,o=n,s=!a;if(e==null)return!o;for(e=Object(e);n--;){var i=r[n];if(s&&i[2]?i[1]!==e[i[0]]:!(i[0]in e))return!1}for(;++n<o;){i=r[n];var p=i[0],f=e[p],m=i[1];if(s&&i[2]){if(f===void 0&&!(p in e))return!1}else{var y=new cN;if(a)var g=a(f,m,p,e,t,y);if(!(g===void 0?lN(m,f,dN|fN,a,y):g))return!1}}return!0}lh.exports=mN});var Ti=u((CW,fh)=>{"use strict";var gN=Te();function yN(e){return e===e&&!gN(e)}fh.exports=yN});var gh=u((qW,mh)=>{"use strict";var hN=Ti(),AN=mr();function bN(e){for(var t=AN(e),r=t.length;r--;){var a=t[r],n=e[a];t[r]=[a,n,hN(n)]}return t}mh.exports=bN});var vi=u((UW,yh)=>{"use strict";function IN(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}yh.exports=IN});var Ah=u((DW,hh)=>{"use strict";var SN=dh(),wN=gh(),TN=vi();function vN(e){var t=wN(e);return t.length==1&&t[0][2]?TN(t[0][0],t[0][1]):function(r){return r===e||SN(r,e,t)}}hh.exports=vN});var Bn=u((NW,bh)=>{"use strict";var EN=ee(),RN=fr(),xN=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,_N=/^\w*$/;function ON(e,t){if(EN(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||RN(e)?!0:_N.test(e)||!xN.test(e)||t!=null&&e in Object(t)}bh.exports=ON});var wh=u((BW,Sh)=>{"use strict";var Ih=Ja(),PN="Expected a function";function Ei(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(PN);var r=function(){var a=arguments,n=t?t.apply(this,a):a[0],o=r.cache;if(o.has(n))return o.get(n);var s=e.apply(this,a);return r.cache=o.set(n,s)||o,s};return r.cache=new(Ei.Cache||Ih),r}Ei.Cache=Ih;Sh.exports=Ei});var vh=u((MW,Th)=>{"use strict";var LN=wh(),CN=500;function qN(e){var t=LN(e,function(a){return r.size===CN&&r.clear(),a}),r=t.cache;return t}Th.exports=qN});var Ri=u((GW,Eh)=>{"use strict";var UN=vh(),DN=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,NN=/\\(\\)?/g,BN=UN(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(DN,function(r,a,n,o){t.push(n?o.replace(NN,"$1"):a||r)}),t});Eh.exports=BN});var xi=u((kW,Rh)=>{"use strict";function MN(e,t){for(var r=-1,a=e==null?0:e.length,n=Array(a);++r<a;)n[r]=t(e[r],r,e);return n}Rh.exports=MN});var Ch=u((FW,Lh)=>{"use strict";var xh=Rt(),GN=xi(),kN=ee(),FN=fr(),QN=1/0,_h=xh?xh.prototype:void 0,Oh=_h?_h.toString:void 0;function Ph(e){if(typeof e=="string")return e;if(kN(e))return GN(e,Ph)+"";if(FN(e))return Oh?Oh.call(e):"";var t=e+"";return t=="0"&&1/e==-QN?"-0":t}Lh.exports=Ph});var _i=u((QW,qh)=>{"use strict";var jN=Ch();function WN(e){return e==null?"":jN(e)}qh.exports=WN});var Oi=u((jW,Uh)=>{"use strict";var $N=ee(),KN=Bn(),VN=Ri(),YN=_i();function HN(e,t){return $N(e)?e:KN(e,t)?[e]:VN(YN(e))}Uh.exports=HN});var hr=u((WW,Dh)=>{"use strict";var zN=fr(),JN=1/0;function XN(e){if(typeof e=="string"||zN(e))return e;var t=e+"";return t=="0"&&1/e==-JN?"-0":t}Dh.exports=XN});var Pi=u(($W,Nh)=>{"use strict";var ZN=Oi(),eB=hr();function tB(e,t){t=ZN(t,e);for(var r=0,a=t.length;e!=null&&r<a;)e=e[eB(t[r++])];return r&&r==a?e:void 0}Nh.exports=tB});var Mh=u((KW,Bh)=>{"use strict";var rB=Pi();function aB(e,t,r){var a=e==null?void 0:rB(e,t);return a===void 0?r:a}Bh.exports=aB});var kh=u((VW,Gh)=>{"use strict";function nB(e,t){return e!=null&&t in Object(e)}Gh.exports=nB});var Qh=u((YW,Fh)=>{"use strict";var oB=Oi(),sB=Yr(),iB=ee(),uB=pa(),pB=en(),cB=hr();function lB(e,t,r){t=oB(t,e);for(var a=-1,n=t.length,o=!1;++a<n;){var s=cB(t[a]);if(!(o=e!=null&&r(e,s)))break;e=e[s]}return o||++a!=n?o:(n=e==null?0:e.length,!!n&&pB(n)&&uB(s,n)&&(iB(e)||sB(e)))}Fh.exports=lB});var Wh=u((HW,jh)=>{"use strict";var dB=kh(),fB=Qh();function mB(e,t){return e!=null&&fB(e,t,dB)}jh.exports=mB});var Kh=u((zW,$h)=>{"use strict";var gB=wi(),yB=Mh(),hB=Wh(),AB=Bn(),bB=Ti(),IB=vi(),SB=hr(),wB=1,TB=2;function vB(e,t){return AB(e)&&bB(t)?IB(SB(e),t):function(r){var a=yB(r,e);return a===void 0&&a===t?hB(r,e):gB(t,a,wB|TB)}}$h.exports=vB});var Yh=u((JW,Vh)=>{"use strict";function EB(e){return function(t){return t?.[e]}}Vh.exports=EB});var zh=u((XW,Hh)=>{"use strict";var RB=Pi();function xB(e){return function(t){return RB(t,e)}}Hh.exports=xB});var Xh=u((ZW,Jh)=>{"use strict";var _B=Yh(),OB=zh(),PB=Bn(),LB=hr();function CB(e){return PB(e)?_B(LB(e)):OB(e)}Jh.exports=CB});var Li=u((e$,Zh)=>{"use strict";var qB=Ah(),UB=Kh(),DB=Hr(),NB=ee(),BB=Xh();function MB(e){return typeof e=="function"?e:e==null?DB:typeof e=="object"?NB(e)?UB(e[0],e[1]):qB(e):BB(e)}Zh.exports=MB});var tA=u((t$,eA)=>{"use strict";var GB=hi(),kB=Li(),FB=1;function QB(e){return kB(typeof e=="function"?e:GB(e,FB))}eA.exports=QB});var aA=u((r$,rA)=>{"use strict";var jB=yo();function WB(e){var t=e==null?0:e.length;return t?jB(e,1):[]}rA.exports=WB});var oA=u((a$,nA)=>{"use strict";var $B=aA(),KB=ho(),VB=Ha();function YB(e){return VB(KB(e,void 0,$B),e+"")}nA.exports=YB});var iA=u((n$,sA)=>{"use strict";var HB=qn(),zB=oA(),JB=256,XB=zB(function(e,t){return HB(e,JB,void 0,void 0,void 0,t)});sA.exports=XB});var pA=u((o$,uA)=>{"use strict";var ZB=xi(),eM=er(),tM=ee(),rM=fr(),aM=Ri(),nM=hr(),oM=_i();function sM(e){return tM(e)?ZB(e,nM):rM(e)?[e]:eM(aM(oM(e)))}uA.exports=sM});var lA=u((s$,cA)=>{"use strict";cA.exports={ary:Eg(),assign:ii(),clone:Uy(),curry:Ny(),forEach:Ln(),isArray:ee(),isError:My(),isFunction:zr(),isWeakMap:ky(),iteratee:tA(),keys:si(),rearg:iA(),toInteger:ri(),toPath:pA()}});var fA=u((i$,dA)=>{"use strict";var iM=em(),uM=lA();function pM(e,t,r){return iM(uM,e,t,r)}dA.exports=pM});var Ci=u((u$,gA)=>{"use strict";var cM=fA(),mA=cM("merge",Qo());mA.placeholder=Ms();gA.exports=mA});var yb=u((eK,gb)=>{"use strict";function PM(e,t,r,a){for(var n=-1,o=e==null?0:e.length;++n<o;){var s=e[n];t(a,s,r(s),e)}return a}gb.exports=PM});var Ab=u((tK,hb)=>{"use strict";var LM=Lo(),CM=mr();function qM(e,t){return e&&LM(e,t,CM)}hb.exports=qM});var Ib=u((rK,bb)=>{"use strict";var UM=Jt();function DM(e,t){return function(r,a){if(r==null)return r;if(!UM(r))return e(r,a);for(var n=r.length,o=t?n:-1,s=Object(r);(t?o--:++o<n)&&a(s[o],o,s)!==!1;);return r}}bb.exports=DM});var wb=u((aK,Sb)=>{"use strict";var NM=Ab(),BM=Ib(),MM=BM(NM);Sb.exports=MM});var vb=u((nK,Tb)=>{"use strict";var GM=wb();function kM(e,t,r,a){return GM(e,function(n,o,s){t(a,n,r(n),s)}),a}Tb.exports=kM});var Rb=u((oK,Eb)=>{"use strict";var FM=yb(),QM=vb(),jM=Li(),WM=ee();function $M(e,t){return function(r,a){var n=WM(r)?FM:QM,o=t?t():{};return n(r,e,jM(a,2),o)}}Eb.exports=$M});var _b=u((sK,xb)=>{"use strict";var KM=ra(),VM=Rb(),YM=Object.prototype,HM=YM.hasOwnProperty,zM=VM(function(e,t,r){HM.call(e,r)?e[r].push(t):KM(e,r,[t])});xb.exports=zM});var bG={};w(bG,{Method:()=>Hn,ai:()=>bu,api:()=>Yi,auditLogs:()=>gt,automations:()=>In,backups:()=>ve,branding:()=>dn,constants:()=>Qr,environmentVariables:()=>Ke,features:()=>Le,groups:()=>Q,init:()=>Yf,licensing:()=>Fe,logger:()=>Nt,mappers:()=>K,middleware:()=>Gi,plugins:()=>Sn,publicApi:()=>vn,quotas:()=>We,scimGroups:()=>Ar,scimUsers:()=>de,sdk:()=>Ui,users:()=>tt,utils:()=>Kt});module.exports=AI(bG);var Hn=(o=>(o.POST="POST",o.GET="GET",o.PATCH="PATCH",o.DELETE="DELETE",o.PUT="PUT",o))(Hn||{});var Ui={};w(Ui,{ai:()=>ss,auditLogs:()=>gt,automations:()=>In,backups:()=>ve,branding:()=>dn,environmentVariables:()=>Ke,features:()=>Le,groups:()=>Q,init:()=>Yf,licensing:()=>Fe,logger:()=>Nt,plugins:()=>Sn,publicApi:()=>vn,quotas:()=>We,scimGroups:()=>Ar,scimUsers:()=>de,users:()=>tt,utils:()=>Kt});var dn={};w(dn,{getBrandingConfig:()=>u_});var Le={};w(Le,{checkBackups:()=>ye,checkFeature:()=>cn,checkFeatures:()=>es,checkSCIM:()=>ns,isAppBuildersEnabled:()=>Pt,isAuditLogsEnabled:()=>ln,isBackupsEnabled:()=>ts,isBrandingEnabled:()=>rs,isEnforceableSSO:()=>uf,isExpandedPublicApiEnabled:()=>Ze,isPWAEnabled:()=>a_,isSSOEnforced:()=>n_,isSyncAutomationsEnabled:()=>t_,isTriggerAutomationRunEnabled:()=>r_,isUserGroupsEnabled:()=>as,isViewPermissionEnabled:()=>o_,isViewReadonlyColumnsEnabled:()=>s_});var oe=require("@budibase/types"),Xe=require("@budibase/backend-core");var Fe={};w(Fe,{cache:()=>Oe,client:()=>lt,features:()=>$a,getFreeLicense:()=>zo,getLicense:()=>Yo,getLicenseFromKey:()=>Ho,keys:()=>Zo,offline:()=>un,quotas:()=>Ka});var Oe={};w(Oe,{getCachedLicense:()=>of,invalidate:()=>sf,refresh:()=>xt});var Ca=require("@budibase/backend-core"),Tr,bI=async()=>{Tr=await Ca.RedisClient.init(Ca.redis.utils.Databases.LICENSES)},II=async()=>{Tr&&await Tr.finish()};process.on("exit",async()=>{await II()});var zn=async()=>(Tr||await bI(),Tr);var lt={};w(lt,{activateLicenseKey:()=>co,getLicense:()=>Wt,getLicenseFromKey:()=>po,triggerQuota:()=>oS});var _u=C(require("node-fetch"));var Ou=require("@budibase/backend-core"),Jn=class{constructor(t){this.apiCall=t=>async(r="",a={})=>{a.headers||(a.headers={}),a.headers["Content-Type"]||(a.headers={"Content-Type":"application/json",Accept:"application/json",...a.headers});let n=a.headers["Content-Type"]==="application/json";Ou.logging.correlation.setHeader(a.headers);let o={method:t,body:n?JSON.stringify(a.body):a.body,headers:a.headers,credentials:"include"};return(0,_u.default)(`${this.host}${r}`,o)};this.post=this.apiCall("POST");this.get=this.apiCall("GET");this.patch=this.apiCall("PATCH");this.del=this.apiCall("DELETE");this.put=this.apiCall("PUT");this.host=t}},Xn=Jn;var Qa=require("@budibase/types"),L=require("@budibase/backend-core");var Me={};w(Me,{bustCache:()=>to,getCurrentUsageValues:()=>Bu,getQuotaUsage:()=>wt,setAllUsage:()=>ao,setAppUsageValue:()=>ro,setUsage:()=>Uu,setUsagePerApp:()=>Du,utils:()=>Rr});var re=require("@budibase/types"),pe=require("@budibase/backend-core");var Rr={};w(Rr,{generateBaseQuotaUsage:()=>qa,generateNewMonthlyQuotas:()=>Er,generateNewQuotaUsage:()=>eo,getBreakdownName:()=>Da,getCurrentMonthString:()=>ut,getQuotaDocId:()=>vr,setCurrentMonth:()=>Ua,setQuotaReset:()=>Zn});var X=require("@budibase/types"),St=require("@budibase/backend-core"),vr=()=>St.context.isSelfHostUsingCloud()?`quota_usage_${St.context.getTenantId()}`:St.db.StaticDatabases.GLOBAL.docs.usageQuota,Pu=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},Zn=e=>{e.quotaReset=Pu()},ut=()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},qa=()=>({usageQuota:{[X.StaticQuotaName.APPS]:0,[X.StaticQuotaName.ROWS]:0,[X.StaticQuotaName.PLUGINS]:0,[X.StaticQuotaName.USERS]:0,[X.StaticQuotaName.CREATORS]:0,[X.StaticQuotaName.USER_GROUPS]:0,[X.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[ut()]:Er()}}),eo=()=>{let e={_id:vr(),quotaReset:Pu(),...qa(),apps:{}};return Ua(e),e},Er=()=>({[X.MonthlyQuotaName.QUERIES]:0,[X.MonthlyQuotaName.AUTOMATIONS]:0,[X.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,triggers:{}}),Ua=e=>{let t=ut();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=Er()),e.monthly.current=e.monthly[t]},Da=(e,t)=>{if(!(!t||!e))switch(e){case X.MonthlyQuotaName.AUTOMATIONS:return X.BreakdownQuotaName.AUTOMATIONS;case X.MonthlyQuotaName.QUERIES:return St.db.isTableId(t)?X.BreakdownQuotaName.ROW_QUERIES:St.db.isDatasourceId(t)?X.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}};var Lu=pe.Duration.fromSeconds(60).toMs(),{Writethrough:Cu}=pe.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}var Na=()=>pe.tenancy.isSelfHostUsingCloud()?new Cu(pe.tenancy.getSelfHostCloudDB(),Lu):new Cu(pe.tenancy.getGlobalDB(),Lu);async function to(e=0){let r=Na(),a=vr(),n=await r.tryGet(a);n&&n._rev&&await r.remove(a,n._rev).catch(async o=>{if(e<1)return await to(e+1);throw o})}var wt=async()=>{let e=Na(),t=await e.tryGet(vr());if(!t){t=eo();let{rev:r}=await e.put(t);t._rev=r}return Ua(t),Zn(t),wI(t)},Uu=async(e,t,r)=>ao({name:t,type:r,values:{total:e}}),Du=async(e,t,r)=>{let a=Na(),n=await wt(),o=Object.values(e).reduce((i,p)=>i+p,0);for(let[i,p]of Object.entries(e))n=Nu(n,t,r,{total:o,app:p},{appId:i});let s=await a.put(n);return n._rev=s.rev,n},TI=(e,t,r,a)=>{let n=Da(t,r);if(!n||!a?.breakdown)return e;e.breakdown||(e.breakdown={}),e.breakdown[n]||(e.breakdown[n]={parent:t,values:{}});let o=e.breakdown[n];return o.values[r]=a.breakdown,e},ro=(e,t,r,a={},n)=>{let o;try{o=pe.db.getProdAppID(a?.appId||pe.context.getAppId())}catch{}if(!o||!n.app||!re.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[o]||(e.apps={...e.apps,[o]:qa()});let s=e.apps[o];switch(r){case re.QuotaUsageType.STATIC:s.usageQuota[t]=n.app;break;case re.QuotaUsageType.MONTHLY:{let i=ut(),p=t,f=s.monthly[i];f||(s.monthly[i]=Er(),f=s.monthly[i]),f[p]=n.app,re.BREAKDOWN_QUOTA_NAMES.includes(p)&&a?.id&&(f=TI(f,p,a.id,n));break}}return e},qu=(e,t,r,a)=>{if(!re.APP_QUOTA_NAMES.includes(r))return{};let n;try{n=pe.db.getProdAppID(pe.context.getAppId())}catch{}if(!n||!e.apps||!e.apps[n])return{app:0};let o=e.apps[n];switch(t){case re.QuotaUsageType.STATIC:if(o.usageQuota?.[r])return{app:o.usageQuota[r]};break;case re.QuotaUsageType.MONTHLY:{let s=ut(),i=r;if(!o.monthly?.[s]?.[i])break;let p=o.monthly[s],f=p[i],m,y=Da(i,a);return y&&a&&p.breakdown?.[y]&&(m=p.breakdown[y]?.values[a]),{app:f,breakdown:m||0}}}return{app:0}},vI=(e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},EI=(e,t,r,a)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),a&&(r.monthly[t].triggers[e]=a)},Nu=(e,t,r,a,n={})=>{if(r===re.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=a.total,vI(t,e,a.triggers);else if(r===re.QuotaUsageType.MONTHLY){t=t;let o=ut();e.monthly[o][t]=a.total,EI(t,o,e,a.triggers)}else throw new Error(`Invalid usage type: ${r}`);return ro(e,t,r,n,a)},ao=async e=>{let t=Array.isArray(e)?e:[e],r=Na(),a=await wt();for(let o of t)a=Nu(a,o.name,o.type,o.values,o.opts);let n=await r.put(a,0);return a._rev=n.rev,a},Bu=async(e,t,r)=>{let a=await wt(),n=0,o={};switch(e){case re.QuotaUsageType.STATIC:if(a.usageQuota[t]){let s=t;n=a.usageQuota[s],o=qu(a,e,t,r)}break;case re.QuotaUsageType.MONTHLY:{let s=ut(),i=t;a.monthly[s][i]&&(n=a.monthly[s][i],o=qu(a,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return re.APP_QUOTA_NAMES.includes(t)&&!(o.app||o.breakdown)&&(o.app=o.app||0,o.breakdown=o.breakdown||0),{total:n,app:o.app,breakdown:o.breakdown}};var Se={};w(Se,{destroy:()=>_I,get:()=>no,save:()=>xI});var pt=require("@budibase/backend-core"),RI=()=>({_id:pt.StaticDatabases.GLOBAL.docs.licenseInfo}),xI=async e=>{let t=await no();t={...t,...e};let a=await pt.tenancy.getGlobalDB().put(t);return t._rev=a.rev,t},no=async()=>{let e=pt.tenancy.getGlobalDB();try{return await e.get(pt.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return RI();throw t}},_I=async()=>{let e=pt.tenancy.getGlobalDB(),t=await no();t&&t._rev&&await e.remove(pt.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)};var M={};w(M,{bulkSave:()=>kI,destroy:()=>FI,fetch:()=>NI,generateUserGroupID:()=>UI,get:()=>BI,getBulk:()=>MI,getByName:()=>oo,getGroupUsers:()=>Ma,getGroupUsersParams:()=>Qu,getUserGroupsParams:()=>Fu,save:()=>GI});var N=require("@budibase/backend-core");var _e=require("@budibase/types"),Ft=require("@budibase/backend-core");async function Mu(){let e=Ft.sql.designDoc.base("type");e.sql.tables={[_e.AUDIT_LOG_TYPE]:{fields:{appId:_e.SQLiteType.TEXT,event:_e.SQLiteType.TEXT,userId:_e.SQLiteType.TEXT,timestamp:_e.SQLiteType.TEXT,metadata:_e.SQLiteType.TEXT,name:_e.SQLiteType.TEXT,type:_e.SQLiteType.TEXT,fallback:_e.SQLiteType.TEXT}}};let t=Ft.context.getAuditLogsDB(),r;try{r=await t.get(Ft.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(a){if(a.status===404)r=e;else throw a}await t.put(r)}var Ba=require("@budibase/backend-core"),{ViewName:OI,SEPARATOR:PI,DocumentType:LI,createView:CI}=Ba.db,qI=LI.USER+PI;async function Gu(){let e=Ba.tenancy.getGlobalDB(),t=`function(doc) {
|
|
4
|
+
if (doc._id.startsWith("${qI}") && 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("${
|
|
12
|
-
let autoId = doc.automationId + "${
|
|
13
|
-
let status = doc.status + "${
|
|
14
|
-
let autoKey = "${
|
|
15
|
-
let statusKey = "${
|
|
16
|
-
let allKey = "${
|
|
10
|
+
}`;await CI(e,t,OI.USER_BY_GROUP)}var ku=`${N.DocumentType.GROUP}${N.SEPARATOR}`;function Fu(e,t={}){e||(e="");let r=e?.startsWith(N.DocumentType.GROUP)?"":ku;return{...t,startkey:`${r}${e}`,endkey:`${r}${e}${N.UNICODE_MAX}`}}function Qu(e,t={}){e||(e="");let{emailSearch:r,bookmark:a,...n}=t;return r?{...n,startkey:`e_${e}${a||r}`,endkey:`e_${e}${r}${N.UNICODE_MAX}`}:{...t,startkey:`g_${e}`,endkey:`g_${e}${N.UNICODE_MAX}`,startkey_docid:a}}function UI(){return`${ku}${N.utils.newid()}`}async function Ma(e,t){let r=N.tenancy.getGlobalDB();return(await N.db.queryView(N.db.ViewName.USER_BY_GROUP,Qu(e,t),r,Gu,{arrayResponse:!0})).map(n=>({_id:n.userId,email:n.email}))||[]}async function xr(e){return e.users=await Ma(e._id),e}async function DI(e){let r=(await xr(e)).users?.map(o=>o._id),a=await N.users.bulkGetGlobalUsersById(r),n=[];for(let o of a){if(!o.userGroups)continue;let s=o.userGroups.length;o.userGroups=o.userGroups.filter(i=>i!==e._id),o.userGroups.length!==s&&n.push(o)}n.length&&await N.users.bulkUpdateGlobalUsers(n)}async function ju(){return(await N.tenancy.getGlobalDB().allDocs(Fu(null,{include_docs:!0}))).rows.map(t=>t.doc)}async function NI(){let e=await ju(),t=[];for(let r of e)t.push(xr(r));return await Promise.all(t)}async function BI(e){let r=await N.tenancy.getGlobalDB().get(e);return await xr(r)}async function MI(e,t={enriched:!0}){let a=await N.tenancy.getGlobalDB().getMultiple(e,{allowMissing:!0});if(t?.enriched){let n=[];for(let o of a)n.push(xr(o));return await Promise.all(n)}else return a}async function GI(e){return await N.tenancy.getGlobalDB().put(e)}async function kI(e){return await N.tenancy.getGlobalDB().bulkDocs(e)}async function FI(e,t){let r=N.tenancy.getGlobalDB(),a=await r.get(e),n=await r.remove(e,t);return await DI(a),n}async function oo(e){let t=e.toLowerCase(),a=(await ju()).find(n=>n.name.toLowerCase()===t);if(a)return await xr(a)}var we={};w(we,{deleteAppBackupMetadata:()=>eS,fetchAppBackups:()=>JI,generateAppBackupID:()=>ap,getAppBackupMetadata:()=>tS,oldestBackupDate:()=>tp,storeAppBackupMetadata:()=>XI,updateAppBackupMetadata:()=>ZI});var F=require("@budibase/backend-core"),ep=require("@budibase/types");function _r(e,t){let r=e.rows.map(n=>n.doc?n.doc:n);if(!t?.paginate)return{data:r,hasNextPage:!1};let a=r.length>t?.pageSize;return{data:r.slice(0,t?.pageSize),hasNextPage:a,nextPage:a?e.rows[t?.pageSize]?.key:void 0}}var Qt=require("@budibase/backend-core"),{ViewName:$u,AutomationViewMode:so,SEPARATOR:Ge,DocumentType:Ku,createView:Vu}=Qt.db,QI=Ku.AUTOMATION_LOG+Ge,Wu=Ku.APP_BACKUP+Ge;async function Yu(){let e=Qt.context.getProdAppDB(),t=`function(doc) {
|
|
11
|
+
if (doc._id.startsWith("${QI}")) {
|
|
12
|
+
let autoId = doc.automationId + "${Ge}"
|
|
13
|
+
let status = doc.status + "${Ge}"
|
|
14
|
+
let autoKey = "${so.AUTOMATION}${Ge}" + autoId + doc.createdAt
|
|
15
|
+
let statusKey = "${so.STATUS}${Ge}" + status + doc.createdAt
|
|
16
|
+
let allKey = "${so.ALL}${Ge}" + 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("${
|
|
23
|
-
let full = doc.appId + "${
|
|
24
|
-
full += doc.trigger.toLowerCase() + "${
|
|
25
|
-
full += doc.type.toLowerCase() + "${
|
|
26
|
-
emit("${
|
|
21
|
+
}`;await Vu(e,t,$u.AUTOMATION_LOGS)}async function Hu(){let e=Qt.tenancy.getGlobalDB(),t=`function(doc) {
|
|
22
|
+
if (doc._id.startsWith("${Wu}") && doc.type && doc.trigger) {
|
|
23
|
+
let full = doc.appId + "${Ge}"
|
|
24
|
+
full += doc.trigger.toLowerCase() + "${Ge}"
|
|
25
|
+
full += doc.type.toLowerCase() + "${Ge}"
|
|
26
|
+
emit("${Wu}" + full + doc.timestamp)
|
|
27
27
|
}
|
|
28
|
-
}`;await
|
|
28
|
+
}`;await Vu(e,t,$u.APP_BACKUP_BY_TRIGGER)}var Zu=require("@budibase/types");var Qr={};w(Qr,{GENERIC_PAGE_SIZE:()=>ke,auditLogs:()=>jt,licenses:()=>me,quotas:()=>Je,versions:()=>Fr});var me={};w(me,{CLOUD_FREE_LICENSE:()=>WI,SELF_FREE_LICENSE:()=>io,UNLIMITED:()=>W,UNLIMITED_LICENSE:()=>$I});var ct=require("@budibase/types");var Je={};w(Je,{UNLIMITED:()=>jI,appBackupRetentionDays:()=>Gr,apps:()=>Pr,automationLogRetentionDays:()=>Mr,automations:()=>Nr,budibaseAICredits:()=>Br,creators:()=>Cr,customAIConfigurations:()=>kr,plugins:()=>Ur,queries:()=>Dr,rows:()=>Or,userGroups:()=>qr,users:()=>Lr});var ae=require("@budibase/types"),jI=-1,Or=e=>({[ae.StaticQuotaName.ROWS]:{name:"Rows",value:e,triggers:[90,100]}}),Pr=e=>({[ae.StaticQuotaName.APPS]:{name:"Apps",value:e,triggers:[100]}}),Lr=e=>({[ae.StaticQuotaName.USERS]:{name:"Users",value:e,triggers:[80,100]}}),Cr=e=>({[ae.StaticQuotaName.CREATORS]:{name:"Creators",value:e,triggers:[]}}),qr=e=>({[ae.StaticQuotaName.USER_GROUPS]:{name:"User Groups",value:e,triggers:[80,100]}}),Ur=e=>({[ae.StaticQuotaName.PLUGINS]:{name:"Plugins",value:e,triggers:[90,100]}}),Dr=e=>({[ae.MonthlyQuotaName.QUERIES]:{name:"Queries",value:e,triggers:[]}}),Nr=e=>({[ae.MonthlyQuotaName.AUTOMATIONS]:{name:"Automations",value:e,triggers:[80,90,100]}}),Br=e=>({[ae.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:{name:"Budibase AI Credits",value:e,triggers:[80,90,100]}}),Mr=e=>({[ae.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS]:{name:"Automation Logs",value:e,triggers:[]}}),Gr=e=>({[ae.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS]:{name:"App Backups",value:e,triggers:[]}}),kr=e=>({[ae.StaticQuotaName.AI_CUSTOM_CONFIGS]:{name:"Custom AI Configuration",value:e,triggers:[]}});var W=-1,WI={features:[],quotas:{usage:{monthly:{...Dr(W),...Nr(200),...Br(5e4)},static:{...Pr(W),...Or(2e3),...Lr(5),...Cr(5),...qr(0),...Ur(10),...kr(0)}},constant:{...Mr(1),...Gr(0)}},plan:{type:ct.PlanType.FREE,usesInvoicing:!1,model:ct.PlanModel.PER_USER}},io={features:[],quotas:{usage:{monthly:{...Dr(W),...Nr(W),...Br(5e4)},static:{...Or(W),...Pr(W),...Lr(20),...Cr(W),...qr(0),...Ur(10),...kr(0)}},constant:{...Mr(1),...Gr(0)}},plan:{type:ct.PlanType.FREE,usesInvoicing:!1,model:ct.PlanModel.PER_USER}},$I={features:[],quotas:{usage:{monthly:{...Dr(W),...Nr(W),...Br(W)},static:{...Pr(W),...Or(W),...Lr(W),...Cr(W),...qr(W),...Ur(W),...kr(W)}},constant:{...Mr(W),...Gr(W)}},plan:{type:ct.PlanType.FREE,usesInvoicing:!1,model:ct.PlanModel.PER_USER}};var Fr={};w(Fr,{getLicenseVersion:()=>KI,getProVersion:()=>Ju});var Tt=require("@budibase/backend-core"),Ga=C(require("fs")),zu=C(require("path")),KI=()=>{if(Tt.env.isDev()){let e="dev-version.txt",t=zu.default.join(Tt.objectStore.budibaseTempDir(),e);if(Ga.default.existsSync(t))return Ga.default.readFileSync(t,"utf8");{let r=Tt.utils.newid();return Ga.default.writeFileSync(t,r),r}}else return Ju()},Ju=()=>{let e=Tt.env.VERSION;if(!e)throw new Error("No budibase pro version was specified");return e};var jt={};w(jt,{searchTable:()=>VI});var vt=require("@budibase/types"),Xu=require("@budibase/backend-core");function VI(){return{type:"table",sourceType:vt.TableSourceType.INTERNAL,name:vt.AUDIT_LOG_TYPE,sourceId:Xu.SQS_DATASOURCE_INTERNAL,primary:["_id"],schema:{metadata:{name:"metadata",type:vt.FieldType.JSON},fallback:{name:"fallback",type:vt.FieldType.JSON}}}}var ke=9;var YI=new Date(864e13).toISOString(),HI=1e3*60*60*24;async function ka(e){let r=(await Oe.getCachedLicense()).quotas?.[Zu.QuotaType.CONSTANT]?.[e]?.value||0;return r===me.UNLIMITED?new Date(YI).toISOString():new Date(new Date().getTime()-HI*r).toISOString()}async function tp(){return ka(ep.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS)}var uo=`${F.db.DocumentType.APP_BACKUP}${F.db.SEPARATOR}`;async function zI(e,t,r={}){let a=await tp(),n=F.db.getProdAppID(e),o=n,s=n;if(t.trigger&&t.type){let i=`${F.db.SEPARATOR}${t.trigger}`;i+=`${F.db.SEPARATOR}${t.type}`,o+=i,s+=i}return(!t.startDate||t.startDate<a)&&(t.startDate=a),t.startDate&&(s+=`${F.db.SEPARATOR}${t.startDate}`),t.endDate&&(o+=`${F.db.SEPARATOR}${t.endDate}`),{...r,descending:!0,startkey:`${uo}${o}${F.db.UNICODE_MAX}`,endkey:`${uo}${s}`}}async function rp(e,t){try{let r=F.db.getQueryIndex(F.db.ViewName.APP_BACKUP_BY_TRIGGER);return await e.query(r,t)}catch(r){if(r!=null&&r.error==="not_found")return await Hu(),rp(e,t);throw r}}function ap(e,t){return`${uo}${e}${F.db.SEPARATOR}${t}`}async function JI(e,t={}){let r=F.tenancy.getGlobalDB(),a,n=t.limit||9,o=await zI(e,t,{include_docs:!0,limit:n+1});t.page&&(o.startkey=t.page),!t.trigger||!t.type?a=await r.allDocs(o):a=await rp(r,o);let s=_r(a,{paginate:t.paginate,pageSize:n}),i=[...new Set(s.data.filter(f=>f.createdBy).map(f=>f.createdBy))],p=await F.users.bulkGetGlobalUsersById(i,{cleanup:!0});for(let f of p)for(let m of s.data)f?._id===m.createdBy&&(m.createdBy=f);return s}async function XI(e,t={}){let r=F.tenancy.getGlobalDB(),a=F.db.getProdAppID(e.appId),n=ap(a,e.timestamp),o={...e,_id:n,appId:a,name:e.name};return o._id=t.docId||o._id,o._rev=t.docRev||o._rev,t.filename&&(o.filename=t.filename),e.createdBy&&(o.createdBy=F.db.getGlobalIDFromUserMetadataID(e.createdBy)),await r.put(o)}async function ZI(e,t){let r=F.tenancy.getGlobalDB(),a=await r.get(e);return a.name=t,await r.put(a)}async function eS(e){let t=F.tenancy.getGlobalDB(),r=await t.get(e);await t.remove(r._id,r._rev)}async function tS(e){return await F.tenancy.getGlobalDB().get(e)}var Et={};w(Et,{get:()=>aS,getCacheEnvVarID:()=>sp,getEnvVarID:()=>Fa,update:()=>nS});var Pe=require("@budibase/backend-core"),op=C(require("lru-cache")),rS=1e3,np=new op.default({max:rS});function Fa(){return Pe.StaticDatabases.GLOBAL.docs.environmentVariables}function sp(e){return`${Pe.tenancy.getTenantId()}/${Fa()}/${e||""}`}async function aS(){let e=Fa(),t=Pe.tenancy.getGlobalDB(),r,a=!1;try{r=await t.get(e)}catch(i){if(i.status==404)a=!0;else throw i}let n=sp(r?._rev),o=np.get(n);if(o)return o;let s;return!a&&r?s={...r,variables:JSON.parse(Pe.encryption.decrypt(r.variables,Pe.encryption.SecretOption.ENCRYPTION))}:s={_id:e,variables:{}},np.set(n,s),s}async function nS(e){let t=Fa();return await Pe.tenancy.getGlobalDB().put({_id:e._id||t,_rev:e._rev||void 0,variables:Pe.encryption.encrypt(JSON.stringify(e.variables),Pe.encryption.SecretOption.ENCRYPTION)})}var ip=require("dd-trace"),ja=new Xn(L.env.ACCOUNT_PORTAL_URL),Wa=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{}},up=async e=>{let t,r;if(L.env.SELF_HOSTED){if(t=await Se.get(),!t.licenseKey)return;r={[L.constants.Header.LICENSE_KEY]:t.licenseKey}}else{let a=L.tenancy.getTenantId();r={[L.constants.Header.API_KEY]:L.env.ACCOUNT_PORTAL_API_KEY,[L.constants.Header.TENANT_ID]:a}}return e(r)},pp=async()=>up(async e=>{let t=await Me.getQuotaUsage();if(t.usageQuota.users==null){let i=await L.users.getUserCount();console.info(`Syncing user count quota to ${i}`),t.usageQuota.users=i,await Me.setUsage(i,Qa.StaticQuotaName.USERS,Qa.QuotaUsageType.STATIC)}let r=await L.installation.getInstallFromDB(),a=L.tenancy.getTenantId(),n=await L.events.identification.getUniqueTenantId(a),o=Fr.getProVersion(),s={quotaUsage:t,tenantId:a,install:{id:r.installId,tenantId:n,version:o}};try{let i=await ja.post("/api/license",{headers:{...e},body:s});if(i.status===404||i.status===403)return;if(i.status!==200){let p=await Wa(i);throw new L.HTTPError(`Error getting license: ${p}`,i.status)}return i.json()}catch(i){if(L.env.DISABLE_ACCOUNT_PORTAL)return;throw i}});L.env.isJest()&&(pp=jest.fn());var Wt=pp;async function po(e){return await ip.tracer.trace("getLicenseFromKey",async t=>{let r;if(!L.env.INTERNAL_API_KEY)throw new Error("getLicenseFromKey requires INTERNAL_API_KEY to be set");try{r=await ja.get(`/api/license/${e}`,{headers:{[L.constants.Header.API_KEY]:L.env.INTERNAL_API_KEY}})}catch(a){if(L.env.DISABLE_ACCOUNT_PORTAL)return;throw a}if(r.status===404||r.status===403){t.addTags({licenseFound:!1});return}if(r.status!==200){let a=await Wa(r);throw new L.HTTPError(`Error getting license: ${a}`,r.status)}return r.json()})}var oS=e=>up(async t=>{let r=await ja.post("/api/license/usage/triggered",{headers:{...t},body:e});if(r.status!==200){let a=await Wa(r);L.logging.logAlert(`Error triggering quota usage: ${a}`)}}),co=async e=>{let t=await L.installation.getInstall(),r={installVersion:t.version,installId:t.installId},a=await ja.post("/api/license/activate",{headers:{[L.constants.Header.LICENSE_KEY]:e},body:r});if(a.status===403)throw new L.HTTPError("Invalid license key",400);if(a.status===409)throw new L.HTTPError("License key has already been activated",409);if(a.status!==200){let n=await Wa(a);throw new L.HTTPError(`Error activating license key: ${n}`,a.status)}return a.json()};var Vo=require("@budibase/backend-core");var un={};w(un,{activateOfflineLicenseToken:()=>jx,deleteOfflineLicenseToken:()=>Wx,dev:()=>la,enrichLicense:()=>ef,getIdentifier:()=>jo,getIdentifierBase64:()=>$x,getIdentifierFromBase64:()=>Kx,getOfflineLicense:()=>Wo,getOfflineLicenseToken:()=>Jd,signing:()=>$r,verifyExpiry:()=>Xd,verifyInstallation:()=>Zd});var $r={};w($r,{sign:()=>iS,verifyLicenseToken:()=>Wr});var lo=C(require("jsonwebtoken")),sS=`-----BEGIN PUBLIC KEY-----
|
|
29
29
|
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvz3jePLCFBXZ19c8Dpkv
|
|
30
30
|
XtSgOhKFOcvQdo/LV0KJRUzQWDPWuO4ILtBtnqhjtIzZH4CH0qCYBet5L6Qr4CM1
|
|
31
31
|
l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
|
|
@@ -34,24 +34,24 @@ l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
|
|
|
34
34
|
d/o3ZWE1TTj1zYwlCLN5qRKr3hU8nC3xEYNEbkB9SfTRaOq9Q7P8WmfLkoCPm3pR
|
|
35
35
|
mwIDAQAB
|
|
36
36
|
-----END PUBLIC KEY-----
|
|
37
|
-
`;function Qr(e){return po.default.verify(e,eS,{algorithms:["RS256"]})}function tS(e,t){return po.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}var ja={};w(ja,{getFeatures:()=>co});var c=require("@budibase/types");var rS={[c.PlanType.FREE]:[...me.SELF_FREE_LICENSE.features],[c.PlanType.PREMIUM]:void 0,[c.PlanType.PREMIUM_PLUS]:[c.Feature.APP_BACKUPS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.PDF,c.Feature.BUDIBASE_AI],[c.PlanType.PREMIUM_PLUS_TRIAL]:[c.Feature.APP_BACKUPS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.PDF,c.Feature.BUDIBASE_AI],[c.PlanType.PRO]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS],[c.PlanType.TEAM]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS],[c.PlanType.BUSINESS]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.PDF,c.Feature.BUDIBASE_AI],[c.PlanType.ENTERPRISE_BASIC]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.OFFLINE,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.PWA,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF,c.Feature.BUDIBASE_AI],[c.PlanType.ENTERPRISE_BASIC_TRIAL]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.PWA,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF,c.Feature.BUDIBASE_AI],[c.PlanType.ENTERPRISE]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.OFFLINE,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.PWA,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF,c.Feature.BUDIBASE_AI]},aS={[c.PlanType.FREE]:[...me.CLOUD_FREE_LICENSE.features],[c.PlanType.PREMIUM]:[c.Feature.APP_BACKUPS,c.Feature.BRANDING,c.Feature.APP_BUILDERS,c.Feature.VIEW_PERMISSIONS,c.Feature.PDF],[c.PlanType.PREMIUM_PLUS]:[c.Feature.APP_BACKUPS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.BUDIBASE_AI,c.Feature.PDF],[c.PlanType.PREMIUM_PLUS_TRIAL]:[c.Feature.APP_BACKUPS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.BUDIBASE_AI,c.Feature.PDF],[c.PlanType.PRO]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.BRANDING],[c.PlanType.TEAM]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.BRANDING],[c.PlanType.BUSINESS]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.BUDIBASE_AI,c.Feature.PDF],[c.PlanType.ENTERPRISE_BASIC]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.OFFLINE,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.BUDIBASE_AI,c.Feature.PWA,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF],[c.PlanType.ENTERPRISE_BASIC_TRIAL]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.BUDIBASE_AI,c.Feature.PWA,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF],[c.PlanType.ENTERPRISE]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.BUDIBASE_AI,c.Feature.PWA,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF]};function co(e,t){let r=[];function a(n){let o=n[t];if(!o)throw new Error(`Features do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case c.Hosting.SELF:r=a(rS);break;case c.Hosting.CLOUD:r=a(aS);break}return r}var Wa={};w(Wa,{UNLIMITED:()=>d,getQuotas:()=>lo});var G=require("@budibase/types");var l=He,np=me,d=-1,Wr=e=>e*1e6,nS={[G.PlanType.FREE]:{...np.CLOUD_FREE_LICENSE.quotas},[G.PlanType.PREMIUM]:{usage:{monthly:{...l.queries(d),...l.automations(1e3),...l.budibaseAICredits(0)},static:{...l.rows(1e4),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(0),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(7),...l.appBackupRetentionDays(7)}},[G.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...l.queries(d),...l.automations(5e3),...l.budibaseAICredits(Wr(2))},static:{...l.rows(25e3),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(0),...l.plugins(d),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[G.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...l.queries(d),...l.automations(5e3),...l.budibaseAICredits(Wr(2))},static:{...l.rows(25e3),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(0),...l.plugins(d),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[G.PlanType.PRO]:{usage:{monthly:{...l.queries(d),...l.automations(1e3),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(5),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(7),...l.appBackupRetentionDays(7)}},[G.PlanType.TEAM]:{usage:{monthly:{...l.queries(d),...l.automations(5e3),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(10),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(90)}},[G.PlanType.BUSINESS]:{usage:{monthly:{...l.queries(d),...l.automations(1e4),...l.budibaseAICredits(0)},static:{...l.rows(5e4),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(50),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(365),...l.appBackupRetentionDays(365)}},[G.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(Wr(4))},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(d),...l.appBackupRetentionDays(d)}},[G.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(Wr(4))},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(15),...l.appBackupRetentionDays(15)}},[G.PlanType.ENTERPRISE]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(Wr(4))},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(d),...l.appBackupRetentionDays(d)}}},oS={[G.PlanType.FREE]:{...np.SELF_FREE_LICENSE.quotas},[G.PlanType.PREMIUM]:void 0,[G.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(0),...l.plugins(d),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[G.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(0),...l.plugins(d),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[G.PlanType.PRO]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(5),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(7),...l.appBackupRetentionDays(7)}},[G.PlanType.TEAM]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(10),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(90)}},[G.PlanType.BUSINESS]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(50),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(90),...l.appBackupRetentionDays(365)}},[G.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(d),...l.appBackupRetentionDays(d)}},[G.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(15),...l.appBackupRetentionDays(15)}},[G.PlanType.ENTERPRISE]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(d),...l.appBackupRetentionDays(d)}}};function lo(e,t){let r;function a(n){let o=n[t];if(!o)throw new Error(`Quotas do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case G.Hosting.SELF:r=a(oS);break;case G.Hosting.CLOUD:r=a(nS);break}return JSON.parse(JSON.stringify(r))}var $t={};w($t,{appExists:()=>sS,encoding:()=>Wt});var op=require("@budibase/backend-core");async function sS(e){return(await op.db.getAllApps({all:!0,idsOnly:!0})).includes(e)}var Wt={};w(Wt,{base64ToObject:()=>uS,objectToBase64:()=>iS});function iS(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}function uS(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}var Qd=require("@budibase/types"),nr=require("@budibase/backend-core"),jd=C(Sl()),Wd=C(ko());async function Bx(e){await Se.save({offlineLicenseToken:e}),await Rt()}async function Mx(){await Se.save({offlineLicenseToken:void 0}),await Rt()}async function $d(){return(await Se.get()).offlineLicenseToken}async function Fo(){let t=(await nr.installation.getInstall()).installId,r=nr.context.getTenantId(),a=await nr.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:a}}async function Gx(){let e=await Fo();return Wt.objectToBase64(e)}function kx(e){return Wt.base64ToObject(e)}function Vd(e){let t=Date.now(),r=new Date(e.expireAt).getTime();if(t>r)throw new Error(`Offline license has expired. expireAt=${e.expireAt}`)}async function Kd(e){let t=await Fo();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}function Yd(e){let t=e.plan.type,r=Qd.Hosting.SELF,a=co(r,t),n=lo(r,t);return e.features=(0,jd.default)(e.features,a),e.quotas=(0,Wd.default)(e.quotas,n),e}async function Qo(){try{let e=await $d();if(e){let t=await Qr(e);return Vd(t),await Kd(t),Yd(t)}}catch(e){console.error("Error retrieving offline license",e)}}var pa={};w(pa,{deleteDevLicense:()=>$x,getOfflineLicense:()=>jx,writeDevLicenseToDisk:()=>Wx});var Hd=require("@budibase/backend-core"),Wo=require("path"),zd=require("os"),xt=C(require("fs"));var Fx=Hd.env.isTest()?".budibase-test":".budibase",jo=(0,Wo.join)((0,zd.tmpdir)(),Fx),Qx="dev_license.txt",ua=(0,Wo.join)(jo,Qx);if(!xt.default.existsSync(jo))try{xt.default.mkdirSync(jo)}catch{}function jx(){try{if(xt.default.existsSync(ua)){let e=xt.default.readFileSync(ua,{encoding:"utf-8"});return Qr(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}function Wx(e){console.log(`Writing license to: ${ua}`),xt.default.writeFileSync(ua,e,{encoding:"utf-8"})}function $x(){xt.default.rmSync(ua,{force:!0})}var Vo=async()=>{if($o.env.OFFLINE_MODE)return Qo();let e=await jt();return e||(e=pa.getOfflineLicense()),e},Ko=e=>io(e),Yo=()=>$o.env.SELF_HOSTED?me.SELF_FREE_LICENSE:me.CLOUD_FREE_LICENSE;var zo={};w(zo,{activateLicenseKey:()=>Vx,deleteLicenseKey:()=>Kx,getLicenseKey:()=>Ho});async function Vx(e){await uo(e),await Se.save({licenseKey:e}),await Rt()}async function Ho(){return(await Se.get()).licenseKey}async function Kx(){await Se.save({licenseKey:void 0}),await Rt()}var _t=require("@budibase/backend-core"),sn=C(require("dd-trace")),Jd=3600,Rt=async()=>{await ef(),await Zd()},Xd=async(e,t)=>{let{populateLicense:r=Vo,populateFreeLicense:a=Yo}=t||{};return await sn.default.trace("getCachedLicense",async n=>{let o=_t.context.getLicense();if(o)return n.addTags({foundInContext:!0,features:o.features,plan:o.plan,quotas:o.quotas}),o;let s=_t.tenancy.getTenantId(),i=await Yn(),p=await i.get(s);return n.addTags({tenantId:s,foundInCache:!!p}),p?(n.addTags({foundInCache:!0,refreshedAt:p.refreshedAt,features:p.features,plan:p.plan,quotas:p.quotas}),p):(p=await sn.default.trace("populateLicense",async()=>await r(s)),n.addTags({populatedLicense:!!p}),p||(p=sn.default.trace("populateFreeLicense",()=>a(e,s)),n.addTags({populatedFreeLicense:!!p})),p.refreshedAt=new Date().toISOString(),n.addTags({refreshedAt:p.refreshedAt,features:p.features,plan:p.plan,quotas:p.quotas,expirySeconds:Jd}),await i.store(s,p,Jd),p)})};_t.env.isJest()&&(Xd=jest.fn());var Zd=Xd,ef=async()=>{let e=_t.tenancy.getTenantId();await(await Yn()).delete(e)};async function se(e,t){Array.isArray(e)||(e=[e]),t||(t=await _e.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}async function un(e,t){if(!await se(e,t))throw new ze.FeatureDisabledError(`${e} is not currently enabled`,e)}async function Jo(e,t){if(!await se(e,t)){let r=e.join(", ");throw new ze.FeatureDisabledError(`${r} are not currently enabled`,r)}}function he(e){return async(...t)=>(await un(oe.Feature.APP_BACKUPS),e(...t))}async function Xo(){return se(oe.Feature.APP_BACKUPS)}async function Zo(){return se(oe.Feature.BRANDING)}async function tf(){return se(oe.Feature.ENFORCEABLE_SSO)}async function Hx(){return se(oe.Feature.SYNC_AUTOMATIONS)}async function zx(){return se(oe.Feature.TRIGGER_AUTOMATION_RUN)}async function Ot(){return se(oe.Feature.APP_BUILDERS)}async function pn(){return se(oe.Feature.AUDIT_LOGS)}async function es(){return se(oe.Feature.USER_GROUPS)}function Jx(){return se(oe.Feature.PWA)}async function Je(){return se(oe.Feature.EXPANDED_PUBLIC_API)}async function Xx(e){if(ze.env.ENABLE_SSO_MAINTENANCE_MODE||!await tf())return!1;let r;return e?.config?r=e.config:r=await ze.configs.getSettingsConfig(),!!r.isSSOEnforced}var ts=async()=>{let e=oe.Feature.SCIM,t=await se(e),r=await ze.configs.getSCIMConfig();if(!t||!r?.enabled)throw new ze.FeatureDisabledError(`${e} is not currently enabled`,e);return!0};async function Zx(){return se(oe.Feature.VIEW_PERMISSIONS)}async function e_(){return se(oe.Feature.VIEW_READONLY_COLUMNS)}var t_={faviconUrl:void 0,faviconUrlEtag:void 0,emailBrandingEnabled:!0,testimonialsEnabled:!0,platformTitle:void 0,loginHeading:void 0,loginButton:void 0,metaDescription:void 0,metaImageUrl:void 0,metaTitle:void 0};async function r_(e){return await Zo()?{faviconUrl:e.faviconUrl,faviconUrlEtag:e.faviconUrlEtag,emailBrandingEnabled:e.emailBrandingEnabled,testimonialsEnabled:e.testimonialsEnabled,platformTitle:e.platformTitle,loginHeading:e.loginHeading,loginButton:e.loginButton,metaDescription:e.metaDescription,metaImageUrl:e.metaImageUrl,metaTitle:e.metaTitle}:t_}var as={};w(as,{enrichAIConfig:()=>rs});var rf=require("@budibase/backend-core"),a_="budibase_ai";async function rs(e){if(rf.env.SELF_HOSTED)return e;for(let t of Object.values(e.config))if(t.provider==="BudibaseAI")return e;return e.config[a_]={provider:"BudibaseAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-4o-mini",name:"Budibase AI"},e}var je={};w(je,{addApp:()=>u_,addAutomation:()=>m_,addGroup:()=>os,addPlugin:()=>is,addRow:()=>c_,addRows:()=>d_,addUsers:()=>dn,bustCache:()=>Zn,decrement:()=>Xe,decrementMany:()=>ca,getCurrentUsageValues:()=>Cu,getLicensedQuota:()=>nf,getQuotaUsage:()=>St,increment:()=>Ce,incrementBudibaseAICredits:()=>mn,incrementMany:()=>Pt,removeApp:()=>p_,removeGroup:()=>ss,removePlugin:()=>us,removeRow:()=>l_,removeRows:()=>f_,removeUsers:()=>ur,set:()=>ns,setAllUsage:()=>to,setAppUsageValue:()=>eo,setUsage:()=>Ou,setUsagePerApp:()=>Pu,updatePluginCount:()=>ps,updateUsage:()=>or,usageLimitIsExceeded:()=>i_,utils:()=>Tr});var Y=require("@budibase/types");var Le=require("@budibase/backend-core");var Ce=(e,t,r)=>af({change:1,name:e,type:t,opts:r}),Pt=e=>af(e),af=async e=>{let t=Array.isArray(e)?e:[e];await or(t.map(a=>({usageChange:a.change,name:a.name,type:a.type,opts:{dryRun:!0,suppressErrorLog:a.opts?.suppressErrorLog,id:a.opts?.id}})));let r=[];for(let a of t){let n=a.opts?.fn;n&&r.push(await n())}return await or(t.map(a=>({usageChange:a.change,name:a.name,type:a.type,opts:{dryRun:!1,valueFn:a.opts?.valueFn,suppressErrorLog:a.opts?.suppressErrorLog,id:a.opts?.id}}))),r[0]},Xe=(e,t,r={})=>or({usageChange:-1,name:e,type:t,opts:r}),ca=e=>{let t=Array.isArray(e)?e:[e];return or(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},ns=async(e,t,r)=>Be.setUsage(r,e,t),n_=(e,t,r)=>{if(e==Y.QuotaUsageType.STATIC){let a=r.usageQuota.triggers;return a?a[t]||{}:{}}else{let a=Be.utils.getCurrentMonthString(),n=r.monthly[a].triggers;return n?n[t]||{}:{}}},o_=async(e,t,r,a)=>{try{await Le.locks.doWithLock({type:Y.LockType.TRY_ONCE,name:Y.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let n={percentage:r,name:t.name};a&&(n.resetDate=a),await lt.triggerQuota(n)})}catch(n){Le.logging.logAlert("Error triggering quota",n)}},s_=async(e,t,r,a)=>{let n=await St(),o=e===Y.QuotaUsageType.MONTHLY?n.quotaReset:void 0,s=await n_(e,t,n),i=a.triggers,p=r/a.value*100;p>100&&(p=100);for(let[f,m]of i.entries())if(p>=m&&a.value!==He.UNLIMITED){if(!s[m]){s[m]=new Date().toISOString();let h=i[f+1]||100;(!(p>=h)||p===m)&&await o_(t,a,p,o)}}else s[m]=void 0;return s},or=async e=>{let t=Le.tenancy.getTenantId(),r=Array.isArray(e)?e:[e],a=null,n,o=[],s={},i={},p={},f={};for(let g of r){try{a=Le.context.getAppId()}catch{}if(Y.APP_QUOTA_NAMES.includes(g.name)&&!a)throw new Error("App context required for quota update");try{n=await nf(Y.QuotaType.USAGE,g.name,g.type),o.push(n);let{total:b,app:E,breakdown:L}=await Be.getCurrentUsageValues(g.type,g.name,g.opts?.id);b+=g.usageChange,E!=null&&(E+=g.usageChange),L!=null&&(L+=g.usageChange);let _={};if(g.opts?.dryRun||(_=await s_(g.type,g.name,b,n),f={...f,[g.name]:_}),n.value!==He.UNLIMITED&&b>n.value&&g.usageChange>0)throw new Le.UsageLimitError(`Licensed ${n.name} of ${n.value} has been exceeded`,n.name);if(b=Math.max(0,b),E&&(E=Math.max(0,E)),L&&(L=Math.max(0,L),p={...p,[g.name]:L}),!g.opts?.dryRun){let R=g.opts?.valueFn;R&&(b=await R(),E=b),s={...s,[g.name]:b},i={...i,[g.name]:E}}}catch(b){throw g.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${g.name}`,b),b}}let m=r.filter(g=>!g.opts?.dryRun).map(g=>({name:g.name,type:g.type,values:{total:s[g.name],app:i[g.name],breakdown:p[g.name],triggers:f[g.name]},opts:{...g.opts,tenantId:t}}));m.length>0&&await Be.setAllUsage(m)},nf=async(e,t,r)=>{let a=await _e.getCachedLicense();if(!a){let n=Le.tenancy.getTenantId();throw new Error("License not found for tenant id "+n)}if(r&&(0,Y.isStaticQuota)(e,r,t))return a.quotas[e][r][t];if(r&&(0,Y.isMonthlyQuota)(e,r,t))return a.quotas[e][r][t];if((0,Y.isConstantQuota)(e,t))return a.quotas[e][t];throw new Error("Invalid quota type")},i_=async(e,t)=>{try{return await or({usageChange:1,name:e,type:t,opts:{dryRun:!0}}),!1}catch(r){if(r.code===Y.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw r}};var sr=require("@budibase/types"),of=require("@budibase/backend-core"),sf=async()=>{let e=await of.db.getAllApps({dev:!0});return e?e.length:0},u_=async(e,{appId:t}={})=>Ce(sr.StaticQuotaName.APPS,sr.QuotaUsageType.STATIC,{fn:e,valueFn:sf,id:t}),p_=async({appId:e}={})=>Xe(sr.StaticQuotaName.APPS,sr.QuotaUsageType.STATIC,{valueFn:sf,id:e});var Fe=require("@budibase/types"),c_=async(e,{tableId:t}={})=>Ce(Fe.StaticQuotaName.ROWS,Fe.QuotaUsageType.STATIC,{fn:e,id:t}),l_=async({tableId:e}={})=>Xe(Fe.StaticQuotaName.ROWS,Fe.QuotaUsageType.STATIC,{id:e}),d_=async(e,t,{tableId:r}={})=>Pt({change:e,name:Fe.StaticQuotaName.ROWS,type:Fe.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),f_=async(e,{tableId:t}={})=>ca({change:e,name:Fe.StaticQuotaName.ROWS,type:Fe.QuotaUsageType.STATIC,opts:{id:t}});var ln=require("@budibase/types"),m_=async(e,{automationId:t}={})=>Ce(ln.MonthlyQuotaName.AUTOMATIONS,ln.QuotaUsageType.MONTHLY,{fn:e,id:t});var ir=require("@budibase/types"),os=async e=>Ce(ir.StaticQuotaName.USER_GROUPS,ir.QuotaUsageType.STATIC,{fn:e}),ss=async()=>Xe(ir.StaticQuotaName.USER_GROUPS,ir.QuotaUsageType.STATIC);var mt=require("@budibase/types"),is=async e=>Ce(mt.StaticQuotaName.PLUGINS,mt.QuotaUsageType.STATIC,{fn:e}),us=async()=>Xe(mt.StaticQuotaName.PLUGINS,mt.QuotaUsageType.STATIC),ps=async e=>ns(mt.StaticQuotaName.PLUGINS,mt.QuotaUsageType.STATIC,e);var Qe=require("@budibase/types"),la=require("@budibase/backend-core");var dn=async(e,t,r)=>{let a=[{change:e,name:Qe.StaticQuotaName.USERS,type:Qe.QuotaUsageType.STATIC,opts:{fn:r,valueFn:la.users.getUserCount}}];t>0&&a.push({change:t,name:Qe.StaticQuotaName.CREATORS,type:Qe.QuotaUsageType.STATIC,opts:{valueFn:la.users.getCreatorCount}});let n=await Pt(a);return await jt(),n},ur=async(e,t)=>{let r=[{change:e,name:Qe.StaticQuotaName.USERS,type:Qe.QuotaUsageType.STATIC,opts:{valueFn:la.users.getUserCount}}];t>0&&r.push({change:t,name:Qe.StaticQuotaName.CREATORS,type:Qe.QuotaUsageType.STATIC,opts:{valueFn:la.users.getCreatorCount}}),await ca(r),await jt()};var fn=require("@budibase/types"),mn=async e=>Pt({change:e,name:fn.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:fn.QuotaUsageType.MONTHLY});var Ze={};w(Ze,{addAppBuilder:()=>b_,db:()=>We,removeAppBuilder:()=>I_});var fa=require("@budibase/backend-core");var Q={};w(Q,{addAppBuilder:()=>ms,addUsers:()=>ls,adjustGroupCreatorsQuotas:()=>A_,cleanupApp:()=>y_,enrichUserRolesFromGroups:()=>h_,fetch:()=>da,get:()=>Ct,getBulk:()=>mf,getGroupBuilderAppIds:()=>ff,getGroupRoleId:()=>g_,remove:()=>cs,removeAppBuilder:()=>gs,removeUsers:()=>ds,save:()=>pr,updateGroupApps:()=>fs});var x=require("@budibase/backend-core");var uf=require("@budibase/backend-core"),gn=class extends uf.HTTPError{constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function lf(e,t){try{let r=[];for(let i of e)if(i.roles){let p=i.roles[x.db.getProdAppID(t)];p&&r.push(p)}let a=await Promise.all(r.map(async i=>({[i]:await x.roles.roleToNumber(i)}))),n,o,s={};a.forEach(i=>{let[p,f]=Object.entries(i)[0];s[p]={roleId:p,roleNum:f}});for(let{roleId:i,roleNum:p}of Object.values(s))(o===void 0||p>o)&&(o=p,n=i);return n}catch(r){throw x.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}async function df(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await M.getBulk(e,{enriched:!1}),t}async function ff(e,t){if(!e.userGroups)return[];let r=await df(e.userGroups,t?.groups),a=t?.appId?x.db.getProdAppID(t?.appId):null,n=[];for(let o of r){let s=o.builder?.apps;a&&s?.includes(a)?n.push(a):a||(n=n.concat(s||[]))}return[...new Set(n)]}async function g_(e,t,r){if(!e.userGroups)return null;let a=await df(e.userGroups,r?.groups),n=x.db.getProdAppID(t);return e.roles?.[n]?e.roles[n]:(a=a.filter(o=>o?.roles?Object.keys(o.roles).includes(n):!1),await lf(a,t))}async function h_(e){if(!e||!e.userGroups)return e;let t=await mf(e.userGroups,{enriched:!1}),r=[];for(let n of t)n?.roles&&(r=r.concat(Object.keys(n.roles)));r=[...new Set(r)];for(let n of r)await x.context.doInAppContext(n,async()=>{if(e.roles[n])return;let o=await lf(t,n);o&&(e.roles[n]=o)});let a=await ff(e,{groups:t});if(a.length&&!e.builder?.global){let n=e.builder?.apps||[];e.builder={apps:n.concat(a)}}return e}async function da(){return await M.fetch()}async function Ct(e){return await M.get(e)}async function mf(e,t={enriched:!0}){return await M.getBulk(e,t)}async function pf(e){if(await M.getByName(e))throw new gn(e)}async function cf(e){let t=await M.getGroupUsers(e._id);if(!t.length)return 0;let a=await x.tenancy.getGlobalDB().getMultiple(t.map(o=>o._id));return(await x.userUtils.creatorsInList(a)).filter(o=>o).length}async function pr(e){let t=[],r=!e._id,a=0;if(delete e.users,!e._id)e._id=M.generateUserGroupID(),await pf(e.name),t.push(x.events.group.created(e));else{let o=await M.get(e._id);if(o.name!==e.name&&await pf(e.name),t.push(x.events.group.updated(e)),JSON.stringify(o.roles)!==JSON.stringify(e.roles)){let s=o.users?.length||0,i=0;s>0&&(i=await cf(o)),Object.values(e.roles).includes("CREATOR")?a=s-i:a=-s,t.push(x.events.group.permissionsEdited(e))}}await Promise.all(t);let n=()=>M.save(e);if(r)return await os(n);{let o=await n();if(a>0)await dn(0,a);else if(a<0){let s=await cf(e),i=Math.abs(a)-s;i>0&&await ur(0,i)}return o}}async function cs(e,t){let r;try{r=await M.get(e)}catch{throw new Error("Group not found")}let a=Object.values(r.roles||{}).includes("CREATOR"),n=()=>{};if(a){let s=x.tenancy.getGlobalDB(),i=await M.getGroupUsers(e),f=(await Promise.all(i.map(b=>s.get(b._id)))).map(b=>({...b,userGroups:b.userGroups.filter(E=>E!==e)})),g=(await x.userUtils.creatorsInList(f)).filter(b=>b).length,h=i.length-g;h&&(n=()=>ur(0,h))}let o=await M.destroy(e,t);return await x.events.group.deleted(r),await ss(),await n(),o}async function ls(e,t){let r=await M.get(e),a=await x.users.bulkGetGlobalUsersById(t),n=[];for(let p of a)p.userGroups||(p.userGroups=[]),p.userGroups.includes(e)||n.push(p);if(!n.length)return n;let o=n.map(p=>({...p,userGroups:[...p?.userGroups||[],e]}));if(await x.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes("CREATOR")){let f=(await x.userUtils.creatorsInList(n)).filter(g=>g).length,m=n.length-f;m&&await dn(0,m)}let i=[];for(let p of t)i.push(x.cache.user.invalidateUser(p));return await Promise.all(i),await x.events.group.usersAdded(o.length,r),o}async function ds(e,t){let r=await M.get(e),a=await x.users.bulkGetGlobalUsersById(t),n=[];for(let i of a){if(!i.userGroups||!i.userGroups.includes(e))continue;let p=i.userGroups.indexOf(e);i.userGroups.splice(p,1),n.push(i)}if(await x.users.bulkUpdateGlobalUsers(n),Object.values(r.roles||{}).includes("CREATOR")){let p=(await x.userUtils.creatorsInList(n)).filter(m=>m).length,f=n.length-p;f&&await ur(0,f)}let s=[];for(let i of t)s.push(x.cache.user.invalidateUser(i));return await Promise.all(s),n.length&&await x.events.group.usersDeleted(n.length,r),n}async function fs(e,t){let r=await Ct(e);if(r.roles||(r.roles={}),t.appsToAdd)for(let a of t.appsToAdd)r.roles[a.appId]=a.roleId;if(t.appsToRemove)for(let a of t.appsToRemove)delete r.roles[a.appId];return await pr(r)}async function y_(e){let t=await da(),r=[];for(let a of t)!a.roles||!a.roles[e]||(delete a.roles[e],r.push(a));return await M.bulkSave(r)}async function ms(e,t){if(!await Ot())throw new Error("Feature not enabled, please check license");let r=x.db.getProdAppID(t),a=await Ct(e);a.builder??={apps:[]},a.builder.apps.includes(t)||(a.builder.apps.push(r),await pr(a))}async function gs(e,t){if(!await Ot())throw new Error("Feature not enabled, please check license");let r=x.db.getProdAppID(t),a=await Ct(e);a.builder?.apps.includes(t)&&(a.builder.apps=a.builder.apps.filter(n=>n!==r),await pr(a))}async function A_(){if(!await es()){let e=x.tenancy.getGlobalDB(),r=(await da()||[]).filter(a=>Object.values(a?.roles||{}).includes("CREATOR"));for(let a of r){let n=await M.getGroupUsers(a._id),s=(await Promise.all(n.map(m=>e.get(m._id)))).map(m=>({...m,userGroups:m.userGroups.filter(g=>g!==a._id)})),p=(await x.userUtils.creatorsInList(s)).filter(m=>m).length,f=n.length-p;await M.save({...a,roles:{}}),f&&await ur(0,f)}}}fa.users.UserDB.init(je,Q,Pe);var We=fa.users.UserDB;async function b_(e,t){if(!await Ot())throw new Error("Feature not enabled, please check license");await fa.users.addAppBuilder(e,t)}async function I_(e,t){if(!await Ot())throw new Error("Feature not enabled, please check license");await fa.users.removeAppBuilder(e,t)}var An={};w(An,{logs:()=>ws});var ws={};w(ws,{logSearch:()=>O_,oldestLogDate:()=>Sf,storeLog:()=>P_});var If=require("@budibase/types"),yn=require("@budibase/backend-core");var hn=require("@budibase/types");var Z=require("@budibase/backend-core");var gf=require("@budibase/backend-core");async function hf(e,t){let r,a=5,n=!1,o,s=!0;for(;a>0;a--)try{s?o=await e():o=await exports.randomDelay(e),n=!0;break}catch(i){r=i}return n||gf.logging.logWarn(`Failed to backoff: ${t}`,r),o}var{SEPARATOR:et,UNICODE_MAX:S_,DocumentType:yf,AutomationViewMode:hs,ViewName:w_,getQueryIndex:v_}=Z.db,T_=new Date(0).toISOString(),E_=100,ys=async()=>Ma(hn.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS);function Af(e,t,{status:r,automationId:a}={},n={}){let o=a?`${a}${et}`:"",s=r?`${r}${et}`:"",i;return r&&a?i=`${hs.ALL}${et}${s}${o}`:r?i=`${hs.STATUS}${et}${s}`:a?i=`${hs.AUTOMATION}${et}${o}`:i=`${yf.AUTOMATION_LOG}${et}`,{...n,descending:!0,startkey:`${i}${t}${S_}`,endkey:`${i}${e}`}}function R_(e,t,r){return`${yf.AUTOMATION_LOG}${et}${e}${et}${r}${et}${t}`}async function As(e,t,r={docs:!0}){let a=Z.context.getProdAppDB();await a.exists()||(a=Z.context.getDevAppDB());let n={status:r.status},o=r?.limit?r.limit:r?.paginate?9+1:void 0,s=Af(e,t,n,{include_docs:r.docs,limit:o});r?.page&&(s.startkey=r.page);let i=await a.allDocs(s);return Rr(i,{paginate:r?.paginate,pageSize:9})}async function bs(e,t,r={}){let a=Z.context.getProdAppDB();await a.exists()||(a=Z.context.getDevAppDB());let n;try{let o={automationId:r?.automationId,status:r?.status},s=Af(e,t,o,{include_docs:!0,limit:9+1});r?.page&&(s.startkey=r.page),n=await a.query(v_(w_.AUTOMATION_LOGS),s)}catch(o){if(o!=null&&(o.name==="not_found"||o.error==="not_found"))return await ju(),bs(e,t,r);throw o}return Rr(n,{paginate:!0,pageSize:9})}async function bf(e,t){let r=Z.context.getProdAppDB(),a=e._id,n=e.name,o=new Date().toISOString(),s=R_(o,t.status,a),i={...t,automationId:a,status:t.status,automationName:n,createdAt:o,_id:s};return await r.put(i),s}async function Is(e,{clearing:t}={clearing:!1}){let r=Z.context.getProdAppDB();await hf(async()=>{let a=await r.get(Z.db.DocumentType.APP_METADATA);for(let n of e){let o=n.split(Z.db.SEPARATOR),s=`${o[o.length-3]}${Z.db.SEPARATOR}${o[o.length-2]}`,i={};a.automationErrors&&(i=a.automationErrors),Array.isArray(i[s])||(i[s]=[]);let p=i[s].indexOf(n);t&&p!==-1?i[s].splice(p,1):i[s].push(n),i[s].length===0&&delete i[s],a.automationErrors=i}await r.put(a),await Z.cache.app.invalidateAppMetadata(a.appId,a)},"Failed to update app metadata with automation log error")}async function x_(){let e=await ys();try{return await As(T_,e,{docs:!1,paginate:!1,limit:E_})}catch{return{data:[],hasNextPage:!1}}}async function Ss(){let e=Z.context.getProdAppDB();try{let t=await x_();if(!t.data||t.data.length===0)return;let r=t.data.map(n=>({_id:n.id,_rev:n.value.rev,_deleted:!0})),a=t.data.filter(n=>{let o=n.id.split(Z.db.SEPARATOR);return o[o.length-1]===hn.AutomationStatus.ERROR}).map(n=>n.id);await e.bulkDocs(r),a.length&&await Is(a,{clearing:!0})}catch(t){Z.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}var Sf=ys;async function __(e,t,r,a){let n,o=new Date().toISOString(),s=await Sf();return(!e||e<s)&&(e=s),r||t?n=await bs(e,o,{automationId:r,status:t,page:a}):n=await As(e,o,{status:t,page:a,docs:!0,paginate:!0}),n}async function O_(e){return await Ss(),await __(e.startDate,e.status,e.automationId,e.page)}async function P_(e,t){if(!yn.db.isProdAppID(yn.context.getAppId()))return;let r=await bf(e,t);t.status===If.AutomationStatus.ERROR&&await Is([r]),await Ss()}var bn={};w(bn,{checkPluginQuotas:()=>q_,deletePlugin:()=>C_,storePlugin:()=>L_});var Ef=require("@budibase/types"),H=require("@budibase/backend-core");var wf=C(require("fs")),vf=require("path");function Tf(e,t){return wf.default.readFileSync((0,vf.join)(e,t),"utf8")}async function L_(metadata,directory,source){let db=H.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=H.objectStore.getPluginS3Dir(name),files=await H.objectStore.uploadDirectory(H.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===Ef.PluginType.DATASOURCE){let js=Tf(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=H.db.generatePluginID(name),rev;try{rev=(await db.get(pluginId))._rev}catch(e){rev=void 0}let doc={_id:pluginId,_rev:rev,...metadata,name,version,hash,description,source};iconFileName&&(doc.iconFileName=iconFileName),source&&(doc={...doc,source});let write=async()=>{let e=await db.put(doc);return await H.events.plugin.imported(doc),{...doc,_rev:e.rev}};return rev?await write():await is(write)}async function C_(e){let t=H.tenancy.getGlobalDB();try{let r=await t.get(e),a=H.objectStore.getPluginS3Dir(r.name);await H.objectStore.deleteFolder(H.objectStore.ObjectStoreBuckets.PLUGINS,a),await t.remove(e,r._rev),await H.events.plugin.deleted(r),await us()}catch(r){let a=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${a}`)}}async function q_(){let e=H.tenancy.getGlobalDB();try{let r=(await e.allDocs(H.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await ps(r)}catch(t){H.logging.logAlert("Unable to retrieve plugins for quota check",t)}}var $e={};w($e,{fetch:()=>D_,fetchValues:()=>N_,isEncryptionKeyAvailable:()=>U_,isValid:()=>_f,remove:()=>M_,update:()=>B_});var ma=require("@budibase/types"),Rf=require("@budibase/backend-core");function U_(){return!!Rf.env.ENCRYPTION_KEY}async function D_(){let e=await Tt.get();return Object.keys(e.variables)}async function N_(e){let r=(await Tt.get()).variables,a={};for(let[n,o]of Object.entries(r))switch(e){case ma.AppEnvironment.DEVELOPMENT:a[n]=o.development;break;case ma.AppEnvironment.PRODUCTION:default:a[n]=o.production;break}return a}async function xf(e){if(!(await ke.cache.getCachedLicense()).features.includes(ma.Feature.ENVIRONMENT_VARIABLES))throw new Error("User does not have access to environment variables feature.");let r=await Tt.get();r.variables=e(r.variables),await Tt.update(r)}async function B_(e,t){if(_f(e))await xf(a=>(a[e]=t,a));else throw new Error("Variable name has characters that are not allowed")}async function M_(e){await xf(t=>(delete t[e],t))}function _f(e){return/^[a-zA-Z0-9-_]+$/.test(e)}var gt={};w(gt,{definitions:()=>H_,download:()=>Y_,fetch:()=>K_,write:()=>$_});var Sn=require("@budibase/types");var $=require("@budibase/backend-core"),qe=require("@budibase/types");var Of=require("memorystream"),Pf=new $.sql.Sql(qe.SqlClient.SQL_LITE);async function G_(e,t,r){let a={operation:qe.Operation.READ,table:Qt.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:qe.SortOrder.DESCENDING,type:qe.SortType.STRING}}},n=Pf._query(a);if(Array.isArray(n))throw new Error("Cannot execute multiple queries for audit log search");return{sql:n.sql,bindings:n.bindings}}function k_(e){return`${$.DocumentType.AUDIT_LOG}${$.SEPARATOR}${e}${$.SEPARATOR}${$.utils.newid()}`}async function Lf(e){e._id||(e._id=k_(e.timestamp)),e.type||(e.type=qe.AUDIT_LOG_TYPE);try{let r=await $.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){$.logging.logAlert("Failed to write audit log",t)}}async function vs(e,t,r){t||(t=1);let a=$.context.getAuditLogsDB();try{let n=9+1,o=await G_(e,t,n),s=Qt.searchTable(),i=Pf.convertJsonStringColumns(s,await a.sql(o.sql,o.bindings)),p;i.length>n&&(p=i.pop());let f={rows:i,hasNextPage:!!p};return f.hasNextPage&&(f.bookmark=t+1),f}catch(n){if(n.status===404&&!r?.isRetry)return await F_(),await qu(),await vs(e,t,{isRetry:!0});throw n}}async function F_(){let e=$.context.getAuditLogsDB(),r=(await e.allDocs($.db.getDocParams($.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(a=>a.doc).filter(a=>a&&!a.type).map(a=>({...a,type:qe.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}function Cf(e){let t=$.context.getAuditLogsDB(),r=new Of,a=t.dump(r,{filter:o=>{let s=o;if(!s._id?.startsWith($.DocumentType.AUDIT_LOG))return!1;let i=!0,p=(f,m)=>{!f||f.length===0||(i=!!(i&&m&&f.includes(m)))};if(p(e.userIds,s.userId),p(e.appIds,s.appId),p(e.events,s.event),(e.startDate||e.endDate)&&(i=i&&s.timestamp>=e.startDate&&s.timestamp<=e.endDate),e.fullSearch){let f=JSON.stringify(o);i=i&&f.includes(e.fullSearch)}return i}}),n=new Of;return r.on("data",o=>{let s=JSON.parse(Buffer.from(o).toString());if(Array.isArray(s.docs)){let i="";for(let p of s.docs)i+=JSON.stringify(p)+`
|
|
38
|
-
`;n.write(i)}}),r.on("end",()=>{n.end()}),{promise:a,stream:n}}var ce=require("@budibase/backend-core");var In=require("@budibase/types"),ga=require("@budibase/string-templates"),ha=require("@budibase/backend-core"),j_=ha.constants.MIN_VALID_DATE.toISOString(),W_=ha.constants.MAX_VALID_DATE.toISOString();function Ts(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||j_,e.endDate=e.endDate||W_),e}async function qf(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(a=>ha.db.getProdAppID(a)));let t={};function r(a,n){n?.length&&(t.oneOf={...t.oneOf,[a]:n})}return r("userId",e.userIds),r("appId",e.appIds),r("event",e.events),e.fullSearch&&(t.fuzzyOr=!0,t.fuzzy={name:e.fullSearch,fallback:e.fullSearch}),(e.startDate||e.endDate)&&(e=Ts(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}function Es(e,t,r){let a={_id:e,status:In.AuditLogResourceStatus.DELETED};switch(t){case"app":a.name=r?.appName;break;case"user":a.email=r?.email;break}return a}function Rs(e){let t=(0,ga.findHBSBlocks)(e);for(let r of t){let a=` "${r}"`;e=e.replace(e.includes(a)?a:` ${r}`,""),e=(0,ga.processStringSync)(e,{})}return e}function Uf(e,t){let r=In.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let a=(0,ga.processStringSync)(r,t);return a.includes('""')&&(a=Rs(r)),a}async function $_(e,t,r){if(!await pn()||!ce.utils.isAudited(e))return;let a=Uf(e,t),n=new Date;r?.timestamp&&(n=new Date(r.timestamp));let o={timestamp:n.toISOString(),event:e,name:a,userId:r?.userId||Sn.AuditLogSystemUser,metadata:{...t,...r?.hostInfo}},s={};try{if(r?.appId){o.appId=ce.db.getProdAppID(r.appId);let i=await ce.cache.app.getAppMetadata(r.appId);"name"in i&&(s.appName=i.name)}if(r?.userId){let i=await ce.users.getById(r?.userId);s.email=i.email}}catch(i){ce.logging.logAlert("Failed to retrieve fallback information for audit log",i)}return o.fallback=s,await Lf(o)}async function V_(e){let t=e.map(i=>i.userId),a=e.filter(i=>i.appId).map(i=>ce.db.getDevAppID(i.appId)),n=await ce.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),o=await ce.db.getAppsByIDs([...new Set(a)]),s=[];for(let i of e){let p=n.find(g=>g?._id===i.userId),f=o.find(g=>ce.db.isSameAppID(g?.appId,i.appId)),m={event:i.event,timestamp:i.timestamp,name:i.name,metadata:i.metadata,user:p||Es(i.userId,"user",i.fallback)};i.appId&&(m.app=f||Es(i.appId,"app",i.fallback)),s.push(m)}return s}async function K_(e){if(!await pn())throw new Error("Audit logs not available - license required.");let t=await qf(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await vs(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await V_(r.rows)}}function Y_(e){return e=Ts(e),Cf(e)}function H_(){let e=Object.entries(Sn.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=Rs(r[1]);return t}var wn={};w(wn,{applications:()=>Ps,roles:()=>_s,users:()=>xs});var xs={};w(xs,{roleCheck:()=>J_});function z_(e,t){let r=e.request.body;return r.builder&&(r.builder=t?.builder||void 0),r.admin&&(r.admin=t?.admin||void 0),r.roles&&(r.roles=t?.roles||{}),e.request.body=r,e}async function J_(e,t){return await Je()||z_(e,t),e}var _s={};w(_s,{assign:()=>X_,unAssign:()=>Z_});var ya=require("@budibase/backend-core");async function X_(e,t){if(!await Je())throw new Error("Unable to assign roles - license required.");let r=await We.bulkGet(e);for(let a of r){if(t.role&&t.role.roleId){let n=ya.db.getProdAppID(t.role.appId);a.roles[n]=t.role.roleId}if(t.appBuilder){let n=ya.db.getProdAppID(t.appBuilder.appId),o=a.builder?.apps||[];a.builder={apps:o.concat([n])}}t.builder&&(a.builder={global:!0}),t.admin&&(a.admin={global:!0}),a.roles}await We.bulkUpdate(r)}async function Z_(e,t){if(!await Je())throw new Error("Unable to un-assign roles - license required.");let r=await We.bulkGet(e);for(let a of r){if(t.role){let n=ya.db.getProdAppID(t.role?.appId);a.roles[n]===t.role.roleId&&delete a.roles[n]}if(t.appBuilder&&a.builder?.apps){let n=ya.db.getProdAppID(t.appBuilder.appId);a.builder.apps=a.builder.apps.filter(o=>o!==n)}t.builder&&a.builder&&delete a.builder,t.admin&&a.admin&&delete a.admin}}var Ps={};w(Ps,{buildExportFn:()=>tO,buildImportFn:()=>eO});var Os=require("@budibase/backend-core");function eO(e){return async(t,r)=>{await Je()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await Os.context.doInAppContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}function tO(e){return async(t,r)=>{await Je()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:a,excludeRows:n}=t.request.body;await Os.context.doInAppContext(t.params.appId,async()=>{t.request.body={encryptPassword:a,excludeRows:n},t.query.appId=t.params.appId,await e(t),await r()})}}var Ve=require("@budibase/backend-core"),ie=require("@budibase/types");var Ls=require("@budibase/backend-core"),Df;function Nf(){Df=new Ls.queue.BudibaseQueue(Ls.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}function qt(){return Df}var Bf=require("path"),Mf=C(require("fs"));async function Cs(e,t={}){return we.storeAppBackupMetadata(e,t)}function Gf(e){let t=new Date().toISOString();switch(e){case ie.AppBackupStatus.COMPLETE:case ie.AppBackupStatus.FAILED:return{timestamp:t,finishedAt:t};case ie.AppBackupStatus.STARTED:return{timestamp:t,startedAt:t};case ie.AppBackupStatus.PENDING:return{timestamp:t,createdAt:t}}}async function rO(e,t,r,a){let n=await vn(e);return await we.storeAppBackupMetadata({...n,...Gf(t),contents:r,status:t,type:ie.AppBackupType.BACKUP},{filename:a,docId:e})}async function aO(e,t,r){let a=await vn(e);return await we.storeAppBackupMetadata({...a,...Gf(r),status:r,type:ie.AppBackupType.RESTORE,trigger:ie.AppBackupTrigger.MANUAL},{docId:e,docRev:t})}async function vn(e){return we.getAppBackupMetadata(e)}async function nO(e,t){return we.updateAppBackupMetadata(e,t)}async function oO(e){let t=await we.getAppBackupMetadata(e);return t.filename&&await Ve.objectStore.deleteFile(Ve.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),we.deleteAppBackupMetadata(e)}async function sO(e,t){return we.fetchAppBackups(e,t)}async function kf(e){let t=await we.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let r=await Ve.objectStore.getReadStream(Ve.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}async function iO(e){let{stream:t}=await kf(e),r=(0,Bf.join)(Ve.objectStore.budibaseTempDir(),Ve.utils.newid()),a=Mf.default.createWriteStream(r);return new Promise((n,o)=>{t.on("error",o),a.on("error",o),t.pipe(a).on("close",()=>n(r))})}async function uO(e,t,r={}){let a;try{a=await Cs({appId:e,trigger:t,timestamp:new Date().toISOString(),status:ie.AppBackupStatus.PENDING,type:ie.AppBackupType.BACKUP,...r})}catch(n){if(n.status===409)return;throw n}return await qt().add({docId:a.id,docRev:a.rev,appId:e,export:{trigger:t,...r}}),await Ve.events.backup.appBackupTriggered(e,a.id,ie.AppBackupType.BACKUP,t,r?.name),a.id}async function pO(e,t,r,a){let n=await vn(t),o;try{o=await Cs({appId:e,timestamp:new Date().toISOString(),status:ie.AppBackupStatus.PENDING,type:ie.AppBackupType.RESTORE,createdBy:a})}catch(s){if(s?.status===409)return;throw s}return await qt().add({appId:e,docId:o.id,docRev:o.rev,import:{nameForBackup:r,backupId:t,createdBy:a}}),{restoreId:o.id,metadata:n}}var cO={isEnabled:Xo,triggerAppRestore:he(pO),triggerAppBackup:he(uO),getBackupDownloadStream:he(kf),downloadAppBackup:he(iO),fetchAppBackups:he(sO),storeAppBackupMetadata:he(Cs),updateBackupStatus:he(rO),updateRestoreStatus:he(aO),getAppBackup:he(vn),updateAppBackup:he(nO),deleteAppBackup:he(oO)},tt=cO;var Us={};w(Us,{init:()=>qs});var z=require("@budibase/backend-core");var Ue=require("@budibase/types");var cr=C(require("fs"));async function qs(e){qt().process(async t=>{let r=t.data;try{if(r.export)return fO(t,e);if(r.import)return dO(t,e)}catch(a){z.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,a)}})}async function lO(e){await z.db.getDB(e,{skip_setup:!0}).destroy()}async function Ff(e,t,r,a){let n=z.db.getDevAppID(r),o=z.db.getProdAppID(r),s=new Date().toISOString(),i=async(p,f)=>{a?.doc?await tt.updateBackupStatus(a.doc.id,p,f?.contents,f?.filename):await tt.storeAppBackupMetadata({appId:o,timestamp:s,trigger:e,status:p,name:a?.name,type:Ue.AppBackupType.BACKUP,contents:f?.contents,createdBy:a?.createdBy},{filename:f?.filename})};try{let p=await a.processing.exportAppFn(n,{tar:!0}),f=await a.processing.statsFn(n),m=`${o}/backup-${s}.tar.gz`,g=z.objectStore.ObjectStoreBuckets.BACKUPS,h=cr.default.createReadStream(p);await z.objectStore.streamUpload({bucket:g,filename:m,stream:h,extra:{type:"application/gzip",metadata:{name:a?.name,trigger:e,timestamp:s,appId:o}}}),await i(Ue.AppBackupStatus.COMPLETE,{filename:m,contents:f}),cr.default.existsSync(p)&&cr.default.rmSync(p)}catch(p){z.logging.logAlert("App backup error",p),await i(Ue.AppBackupStatus.FAILED)}}async function dO(e,t){let r=e.data,a=r.appId,n=r.import.backupId,o=r.import.nameForBackup,s=r.import.createdBy,i=z.tenancy.getTenantIDFromAppID(a);return z.tenancy.doInTenant(i,async()=>{let p=z.db.getDevAppID(a),{rev:f}=await tt.updateRestoreStatus(r.docId,r.docRev,Ue.AppBackupStatus.STARTED);await Ff(Ue.AppBackupTrigger.RESTORING,i,a,{processing:t,createdBy:s,name:o});let m=await tt.downloadAppBackup(n);await lO(p);let g=Ue.AppBackupStatus.COMPLETE;try{await t.importAppFn(p,z.db.getDB(p),{file:{type:"application/gzip",path:m},key:m})}catch(h){z.logging.logAlert("App restore error",h),g=Ue.AppBackupStatus.FAILED}await tt.updateRestoreStatus(r.docId,f,g),cr.default.existsSync(m)&&cr.default.rmSync(m,{force:!0})})}async function fO(e,t){let r=e.data,a=r.appId,n=r.export.trigger,o=r.export.name,s=z.tenancy.getTenantIDFromAppID(a);await z.tenancy.doInTenant(s,async()=>{try{let{rev:i}=await tt.updateBackupStatus(r.docId,Ue.AppBackupStatus.STARTED);return Ff(n,s,a,{processing:t,doc:{id:r.docId,rev:i},name:o})}catch(i){z.logging.logAlert("App backup error",i)}})}var mO=async e=>{Nf(),await qs(e.processing)},Te={...tt,processing:Us,init:mO,getBackupQueue:qt};var Qf=async e=>{e.backups&&await Te.init(e.backups)};var de={};w(de,{create:()=>iM,find:()=>sM,get:()=>oM,remove:()=>pM,update:()=>uM});var cA=C(Oi()),rt=require("@budibase/backend-core");var lA=require("@budibase/types");async function oM(e){let t=rt.tenancy.getGlobalDB(),r=new rt.db.QueryBuilder(t.name,lA.SearchIndex.USER);r.setIndexBuilder(rt.db.searchIndexes.createUserIndex),r.setLimit(e.pageSize),r.addEqual("scimInfo.isSync",!0);for(let[n,o]of Object.entries(e.filters?.equal??{}))r.addEqual(n,o);r.setSort("_id"),r.setSkip(e.skip);let a=await r.run();return{users:a.rows,total:a.totalRows}}async function sM(e){return await rt.users.getById(e)}async function iM(e){let t=await We.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new rt.HTTPError("User is already synched",409);e={...t,scimInfo:(0,cA.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await We.save(e,{requirePassword:!1})}async function uM(e,t){return await We.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}async function pM(e){return await We.destroy(e)}var hr={};w(hr,{create:()=>cM});var dA=C(Oi());var fA=require("@budibase/backend-core");async function cM(e){let t=await ao(e.name),r;if(!t)r=(await Q.save(e)).id;else{if(t.scimInfo?.isSync)throw new fA.HTTPError("Group is already synched",409);r=t._id,t.users&&(await Q.removeUsers(r,t.users.map(n=>n._id)),delete t.users),t.scimInfo=(0,dA.default)(t.scimInfo,e.scimInfo),await Q.save(t)}return await Q.get(r)}var Dt={};w(Dt,{logRequest:()=>lM,logResponse:()=>dM});var Pi=require("@budibase/backend-core");async function lM(e){Pi.logging.logWarn("SCIM request log",e)}async function dM(e){Pi.logging.logWarn("SCIM response error",e)}var Di={};w(Di,{doInScimContext:()=>Ci,feature:()=>j,internalGroupOnly:()=>Mn,licenseAuth:()=>hA,licensing:()=>mA,requireSCIM:()=>qi,scimGroupOnly:()=>Sa,scimUserOnly:()=>Ia});var ht=require("@budibase/backend-core");var Nn=require("@budibase/types"),fM=(e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(ht.env.SELF_HOSTED&&ht.env.DEFAULT_LICENSE)return t.user.license=oo,r();t.user.license=await ke.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(ht.utils.isServingApp(t)||ht.utils.isServingBuilder(t)||ht.utils.isServingBuilderPreview(t)||ht.utils.isPublicApiRequest(t))&&await je.usageLimitIsExceeded(Nn.StaticQuotaName.USERS,Nn.QuotaUsageType.STATIC)}return r()},mA=fM;var j={};w(j,{requireFeature:()=>mM,requireFeatures:()=>gM});var mM=e=>async(t,r)=>{await un(e),await r()},gM=(...e)=>async(t,r)=>{await Jo(e),await r()};var Bn=require("@budibase/backend-core");var Ci=async(e,t)=>(Bn.env.DISABLE_SCIM_CALLS||await Dt.logRequest({...e.request.toJSON(),body:e.request.body}),await Bn.context.doInScimContext(async()=>{let r=await t();return await Dt.logResponse({...e.response.toJSON(),body:e.response.body}),r}));var qi=async(e,t)=>{await ts(),await t()};var gA=require("@budibase/backend-core");var Ia=e=>Ui(gA.users.getById,e,!0),Sa=e=>Ui(M.get,e,!0),Mn=e=>Ui(M.get,e,!1);function Ui(e,t,r){return async(a,n)=>{let o=a.params[t];return typeof o!="string"&&a.throw(404),!!(await e(o)).scimInfo?.isSync!==r&&a.throw(404),n()}}var wa=require("@budibase/backend-core");async function hA(e,t){let r=e.request.headers[wa.constants.Header.LICENSE_KEY];Array.isArray(r)&&(r=r[0]),r||e.throw(403,"License key not provided");let a=await Ko(r);a||e.throw(403,"License not found or invalid"),a.tenantId||e.throw(403,"License does not have a tenant ID"),await wa.context.doInSelfHostTenantUsingCloud(a.tenantId,async()=>{await wa.context.doInLicenseContext(a,async()=>{await t()})})}var Wi={};w(Wi,{appBackups:()=>tb,auditLogs:()=>$A,environmentVariables:()=>BA,groups:()=>_A,scim:()=>Cb,users:()=>Bb});async function yA(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let a=await Ct(t._id);t.roles=a.roles,t.scimInfo=a.scimInfo}let r=await pr(t);e.body={_id:r.id,_rev:r.rev}}async function AA(e){let t=e.params.groupId,r=e.request.body.add,a=e.request.body.remove;(r&&!Array.isArray(r)||a&&!Array.isArray(a))&&e.throw(400,"Must supply a list of users to add or to remove");let n,o;r&&(n=await ls(t,r)),a&&(o=await ds(t,a)),e.body={added:n,removed:o}}async function bA(e){let t=e.params.groupId,r=e.request.body.add,a=e.request.body.remove;(r&&!Array.isArray(r)||a&&!Array.isArray(a))&&e.throw(400,"Must supply a list of objects, with appId and roleId to add or remove"),e.body=await fs(t,{appsToAdd:r,appsToRemove:a})}async function IA(e){e.body={data:await da()}}async function SA(e){let{groupId:t,rev:r}=e.params;try{await cs(t,r),e.body={message:"Group deleted successfully"}}catch(a){e.throw(a.status,a)}}async function wA(e){try{e.body=await Ct(e.params.groupId)}catch(t){e.throw(t.status,t)}}async function vA(e){let{pageSize:t=10,bookmark:r,emailSearch:a}=e.request.query,n=e.params.groupId,o={limit:t+1},s=await Na(n,{...o,emailSearch:a,bookmark:r}),i=a?s[t]?.email:s[t]?._id,p=!!i;e.body={users:s.slice(0,t),bookmark:i,hasNextPage:p}}async function TA(e){let{groupId:t,appId:r}=e.params;await ms(t,r),e.body={message:"Group app builder access updated."}}async function EA(e){let{groupId:t,appId:r}=e.params;await gs(t,r),e.body={message:"group app builder access removed."}}var RA=C(require("@koa/router")),ye=C(require("joi"));var Ee=require("@budibase/types"),Ke=require("@budibase/backend-core"),xA=new RA.default;function yM(){return Ke.auth.joiValidator.body(ye.default.object({_id:ye.default.string().optional(),_rev:ye.default.string().optional(),color:ye.default.string().required(),icon:ye.default.string().required(),name:ye.default.string().trim().required().max(50),role:ye.default.string().optional(),users:ye.default.array().optional(),apps:ye.default.array().optional(),roles:ye.default.object().optional(),createdAt:ye.default.string().optional(),updatedAt:ye.default.string().optional()}).required())}xA.post("/api/global/groups",Ke.auth.adminOnly,j.requireFeature(Ee.Feature.USER_GROUPS),yM(),yA).get("/api/global/groups",j.requireFeature(Ee.Feature.USER_GROUPS),IA).delete("/api/global/groups/:groupId/:rev",j.requireFeature(Ee.Feature.USER_GROUPS),Ke.auth.adminOnly,Mn("groupId"),SA).get("/api/global/groups/:groupId",j.requireFeature(Ee.Feature.USER_GROUPS),Ke.auth.builderOrAdmin,wA).get("/api/global/groups/:groupId/users",j.requireFeature(Ee.Feature.USER_GROUPS),Ke.auth.builderOrAdmin,vA).post("/api/global/groups/:groupId/users",Ke.auth.adminOnly,j.requireFeature(Ee.Feature.USER_GROUPS),Mn("groupId"),AA).post("/api/global/groups/:groupId/apps",Ke.auth.builderOrAdmin,j.requireFeature(Ee.Feature.USER_GROUPS),bA).post("/api/global/groups/:groupId/app/:appId/builder",Ke.auth.builderOrAdmin,j.requireFeatures(Ee.Feature.USER_GROUPS,Ee.Feature.APP_BUILDERS),TA).delete("/api/global/groups/:groupId/app/:appId/builder",Ke.auth.builderOrAdmin,j.requireFeatures(Ee.Feature.USER_GROUPS,Ee.Feature.APP_BUILDERS),EA);var _A=xA;var Ni=require("@budibase/types");var Bi=require("@budibase/backend-core");async function OA(e){e.body={encryptionKeyAvailable:$e.isEncryptionKeyAvailable()}}async function PA(e){e.body={variables:await $e.fetch()}}async function LA(e){let{name:t,production:r,development:a}=e.request.body;await $e.update(t,{production:r,development:a});let n=[Ni.AppEnvironment.PRODUCTION];r!==a&&n.push(Ni.AppEnvironment.DEVELOPMENT),await Bi.events.environmentVariable.created(t,n),e.body={message:`Environment variable "${t}" created.`}}async function CA(e){let{production:t,development:r}=e.request.body,a=e.params.varName;await $e.update(a,{production:t,development:r}),e.body={message:`Environment variable "${a}" updated.`}}async function qA(e){let t=e.params.varName;await $e.remove(t),await Bi.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}var Nt=require("@budibase/backend-core"),DA=C(require("@koa/router")),va=C(require("joi")),NA=new DA.default;function UA(){return Nt.auth.joiValidator.body(va.default.object({name:va.default.string().optional(),production:va.default.string().required(),development:va.default.string().required()}))}NA.get("/api/env/variables/status",Nt.auth.builderOrAdmin,OA).get("/api/env/variables",Nt.auth.builderOrAdmin,PA).post("/api/env/variables",Nt.auth.builderOrAdmin,UA(),LA).patch("/api/env/variables/:varName",Nt.auth.builderOrAdmin,UA(),CA).delete("/api/env/variables/:varName",Nt.auth.builderOrAdmin,qA);var BA=NA;var Mi=require("@budibase/backend-core");async function MA(e){let t=e.request.body,r=await gt.fetch(t);await Mi.events.auditLog.filtered(t),e.body=r}async function GA(e){let t=e.request.body,{stream:r}=gt.download(t);await Mi.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}async function kA(e){e.body={events:gt.definitions()}}var QA=require("@budibase/types"),Bt=require("@budibase/backend-core"),jA=C(require("@koa/router")),Re=C(require("joi"));function FA(){return Bt.auth.joiValidator.body(Re.default.object({userIds:Re.default.array().items(Re.default.string()).optional(),appIds:Re.default.array().items(Re.default.string()).optional(),events:Re.default.array().items(Re.default.string().valid(...Object.values(QA.Event))).optional(),startDate:Re.default.string().optional().allow(""),endDate:Re.default.string().optional().allow(""),fullSearch:Re.default.string().optional().allow(""),bookmark:Re.default.number()}))}var WA=new jA.default;WA.post("/api/global/auditlogs/search",Bt.auth.adminOnly,FA(),MA).get("/api/global/auditlogs/download",Bt.auth.adminOnly,Bt.middleware.querystringToBody,FA(),GA).get("/api/global/auditlogs/definitions",Bt.auth.adminOnly,kA);var $A=WA;var Gi=require("@budibase/types");var VA=require("@budibase/backend-core");async function yr(e,t){await $t.appExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}async function KA(e){let t=e.params.appId;await yr(e,t);let r=e.request.body,a=e.user?._id,n=await Te.triggerAppBackup(t,Gi.AppBackupTrigger.MANUAL,{name:r.name,createdBy:a});n||e.throw(500,"Unable to start backup."),e.body={backupId:n,message:"Backup triggered - process starting."}}async function YA(e){let t=e.params.appId;await yr(e,t);let r=e.params.backupId,a=e.request.body.name,n=await Te.triggerAppRestore(t,r,a,e.user?._id);n||e.throw(500,"Unable to start restore."),await VA.events.backup.appBackupRestored(n.metadata),e.body={restoredId:n?.restoreId,message:"Restore triggered - process starting."}}async function HA(e){let t=e.params.appId;await yr(e,t);let r=e.params.backupId;await Te.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}async function zA(e){let t=e.params.appId;await yr(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(Gi.AppBackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await Te.fetchAppBackups(t,{paginate:!0,...r})}async function JA(e){let t=e.params.appId;await yr(e,t);let r=e.params.backupId,a=e.request.body;e.body=await Te.updateAppBackup(r,a.name)}async function XA(e){let t=e.params.appId;await yr(e,t);let r=e.params.backupId,{metadata:a,stream:n}=await Te.getBackupDownloadStream(r);e.attachment(`backup-${a.timestamp}.tar.gz`),e.body=n}var ZA=C(require("@koa/router")),Mt=C(require("joi")),Gn=require("@budibase/types"),yt=require("@budibase/backend-core"),eb=new ZA.default;function SM(){return yt.auth.joiValidator.body(Mt.default.object({trigger:Mt.default.string().valid(...Object.values(Gn.AppBackupTrigger)),type:Mt.default.string().valid(...Object.values(Gn.AppBackupType)),startDate:Mt.default.date(),endDate:Mt.default.date(),page:Mt.default.string()}))}eb.post("/api/apps/:appId/backups",yt.auth.builderOrAdmin,KA).post("/api/apps/:appId/backups/search",yt.auth.builderOrAdmin,SM(),zA).get("/api/apps/:appId/backups/:backupId/file",yt.auth.builderOrAdmin,XA).patch("/api/apps/:appId/backups/:backupId",yt.auth.builderOrAdmin,JA).delete("/api/apps/:appId/backups/:backupId",yt.auth.builderOrAdmin,HA).post("/api/apps/:appId/backups/:backupId/import",yt.auth.builderOrAdmin,YA);var tb=eb;var Lb=C(require("@koa/router"));var kn=require("scim-patch");var ab=require("@budibase/backend-core");function rb(e,t){let r=e.request.query[t];if(r!==void 0)return+r}var nb=async e=>{let t=rb(e,"pageSize")??20,r=rb(e,"startIndex"),a;e.request.query.filter&&(a=V.user.userFilters(e.request.query.filter));let n=await de.get({pageSize:t,skip:r,filters:a});e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:n.total,Resources:n.users.map(V.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},ob=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await de.find(t);e.body=V.user.toScimUserResponse(r)},sb=async e=>{let t=V.user.fromScimUser(e.request.body);try{let r=await de.create(t);e.body=V.user.toScimUserResponse(r)}catch(r){throw r instanceof ab.EmailUnavailableError&&e.throw(409,"Email already in use"),r}};function wM(e){let t=e.Operations.find(r=>(r.op==="Replace"||r.op==="replace")&&r.path==="active");return t?t.value===!1||t.value?.toLowerCase?.()==="false":!1}var ib=async e=>{let t=await de.find(e.params.id);t||e.throw(404);let r=V.user.toScimUserResponse(t),a=e.request.body;try{(0,kn.patchBodyValidation)(a)}catch{}if(wM(a))return ki(e);let n;try{n=(0,kn.scimPatch)(r,a.Operations)}catch{}n||e.throw(500);let o=V.user.fromScimUser(n);await de.update(o,{allowChangingEmail:!0}),e.body=V.user.toScimUserResponse(o)},ki=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await de.remove(t),e.status=204};var vb=C(wb()),Tb=require("@budibase/shared-core"),Fn=require("scim-patch");var Qn=require("scim2-parse-filter");function Eb(e,t){for(let r of t.split(","))delete e[r]}var Rb=async e=>{let r=(await Q.fetch()).filter(o=>o.scimInfo?.isSync).map(V.group.toScimGroupResponse),{filter:a,excludedAttributes:n}=e.request.query;if(a){let o=(0,Qn.filter)((0,Qn.parse)(a));r=r.filter(o)}n&&r.forEach(o=>{Eb(o,n)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},xb=async e=>{let t=V.group.fromScimGroup(e.request.body),r=await hr.create(t);e.body=V.group.toScimGroupResponse(r)},_b=async e=>{let{id:t}=e.params,r=await Q.get(t),a=V.group.toScimGroupResponse(r),{excludedAttributes:n}=e.request.query;n&&Eb(a,n),e.body=a},Ob=async e=>{let{id:t}=e.params,r=await Q.get(t);await Q.remove(t,r._rev),e.status=204},Pb=async e=>{let{id:t}=e.params,r=await Q.get(t),a=V.group.toScimGroupResponse(r),n=e.request.body;try{(0,Fn.patchBodyValidation)(n)}catch{e.throw(400)}let{true:o,false:s}=(0,vb.default)(n.Operations,i=>i.path==="members");if(s?.length){let i=(0,Fn.scimPatch)(a,s);i||e.throw(500);let p={...V.group.fromScimGroup(i),_rev:r._rev};await Q.save(p)}if(o?.length){let i=[],p=[];for(let{op:f,value:m}of o)switch(f){case"add":case"Add":for(let g of m)i.push(await de.find(g.value));break;case"remove":case"Remove":for(let g of m)p.push(await de.find(g.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:Tb.utils.unreachable(f)}i.length&&await Q.addUsers(t,i.map(f=>f._id)),p.length&&await Q.removeUsers(t,p.map(f=>f._id))}e.body=V.group.toScimGroupResponse(await Q.get(t))};var Ta=require("@budibase/types"),Ae=new Lb.default({prefix:"/api/global/scim/v2"});Ae.use(qi);Ae.use(Ci);Ae.get("/users",nb);Ae.get("/users/:id",Ia("id"),ob);Ae.post("/users",sb);Ae.patch("/users/:id",Ia("id"),ib);Ae.delete("/users/:id",Ia("id"),ki);Ae.get("/groups",Rb);Ae.post("/groups",j.requireFeature(Ta.Feature.USER_GROUPS),xb);Ae.get("/groups/:id",j.requireFeature(Ta.Feature.USER_GROUPS),Sa("id"),_b);Ae.delete("/groups/:id",j.requireFeature(Ta.Feature.USER_GROUPS),Sa("id"),Ob);Ae.patch("/groups/:id",j.requireFeature(Ta.Feature.USER_GROUPS),Sa("id"),Pb);var Cb=Ae;var Db=C(require("@koa/router"));var Fi=require("@budibase/backend-core");async function qb(e){let{userId:t,appId:r}=e.params,a=await Ze.db.getUser(t);if(Fi.users.isGlobalBuilder(a)){e.body={message:"User already admin - no permissions updated."};return}await Ze.addAppBuilder(a,r),e.body={message:`User "${a.email}" app builder access updated.`}}async function Ub(e){let{userId:t,appId:r}=e.params,a=await Ze.db.getUser(t);if(Fi.users.isGlobalBuilder(a)){e.body={message:"User already admin - no permissions removed."};return}await Ze.removeAppBuilder(a,r),e.body={message:`User "${a.email}" app builder access removed.`}}var Qi=require("@budibase/types"),ji=require("@budibase/backend-core"),Nb=new Db.default;Nb.post("/api/global/users/:userId/app/:appId/builder",ji.auth.builderOrAdmin,j.requireFeatures(Qi.Feature.APP_BUILDERS),qb).delete("/api/global/users/:userId/app/:appId/builder",ji.auth.builderOrAdmin,j.requireFeatures(Qi.Feature.APP_BUILDERS),Ub);var Bb=Nb;var V={};w(V,{group:()=>Vi,user:()=>$i});var $i={};w($i,{fromScimUser:()=>JM,toScimUserResponse:()=>YM,userFilters:()=>XM});var jn=require("@budibase/types"),Mb=require("scim2-parse-filter"),Gb=require("@budibase/backend-core"),kb=require("@budibase/shared-core"),{unreachable:KM}=kb.utils,YM=e=>{let{isSync:t,roles:r,...a}=e.scimInfo||{},n={...a,schemas:["urn:ietf:params:scim:schemas:core:2.0:User"],id:e._id,meta:{resourceType:"User",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},active:e.status===jn.UserStatus.ACTIVE};return(e.firstName||e.lastName)&&(n.name={formatted:[e.firstName,e.lastName].filter(o=>o).join(" "),familyName:e.lastName,givenName:e.firstName}),n},HM=e=>!!e?.id;function zM(e){if(Gb.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}var JM=e=>{let t=HM(e)?e:void 0,r=zM(e);if(!r)throw new Error("Email is required");let a;switch(e.active){case"True":case"true":case!0:a=!0;break;case"False":case"false":case!1:a=!1;break;default:KM(e.active)}let n,o;return e.name?.givenName?(n=e.name?.givenName,o=e.name?.familyName):n=e.displayName,{tenantId:"",_id:t?.id,userId:t?.id,email:r,firstName:n,lastName:o,scimInfo:{...e,isSync:!0},roles:{},status:a?jn.UserStatus.ACTIVE:jn.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},XM=e=>{let t={equal:{}},r=(0,Mb.parse)(e);function a(n){switch(n.op){case"eq":{let o=n.attrPath,s;switch(o){case"emails.value":s="email";break;default:s=`scimInfo.${o}`}t.equal[s]=n.compValue;break}case"and":for(let o of n.filters)a(o);break;default:console.warn("Filter not handled",{filter:n})}}return a(r),t};var Vi={};w(Vi,{fromScimGroup:()=>tG,toScimGroupResponse:()=>ZM});var ZM=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}))}),eG=e=>!!e?.id,tG=e=>{let t=eG(e)?e:void 0;return{_id:t?.id,name:e.displayName,scimInfo:{externalId:e.externalId,isSync:!0},icon:"UserGroup",color:"var(--spectrum-global-color-blue-600)",createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}};var mu={};w(mu,{LLMRequest:()=>K,TableGeneration:()=>fu,agentHistoryTitleSystemPrompt:()=>lG,agentSystemPrompt:()=>cG,aiColumnSchemas:()=>lu,aiTableResponseToTableSchema:()=>iu,appendAIColumns:()=>uu,classifyText:()=>Yi,cleanData:()=>Hi,generateAIColumns:()=>ou,generateCode:()=>pG,generateCronExpression:()=>zi,generateData:()=>su,generateJs:()=>eu,generateSQL:()=>uG,generateTables:()=>nu,generationStructure:()=>cu,getLLM:()=>Ra,getLLMConfig:()=>au,getLLMOrThrow:()=>Yb,parseResponseFormat:()=>tu,sanitiseToolName:()=>rG,searchWeb:()=>Zi,sentimentAnalysis:()=>Xi,summarizeText:()=>Wn,tableDataStructuredOutput:()=>du,translate:()=>Ji});function rG(e){if(e.length>64)throw new Error("Tool name must be under 64 characters long");return e.replace(/[^a-zA-Z0-9_-]/g,"_")}var Ye=require("@budibase/backend-core"),Wb=require("@budibase/types");var Qb=C(require("openai"));var At=require("@budibase/types");var Fb=require("@budibase/shared-core");function Ki(e,t){return t.map(r=>e[r]).join(" ")}var bt=class{constructor({model:t,apiKey:r,maxTokens:a}){this._model=t,this._apiKey=r,this._maxTokens=a??parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"300")}get model(){return this._model}get apiKey(){return this._apiKey}get maxTokens(){return this._maxTokens}async prompt(t){typeof t=="string"&&(t=new K().addUserMessage(t));let{messages:r,tokensUsed:a}=await this.chatCompletion(t);return!r||r.length===0?{message:"",tokensUsed:a}:{message:r[r.length-1].content||"",tokensUsed:a}}async chat(t){return await this.chatCompletion(t)}async summarizeText(t){return this.prompt(Wn(t))}async generateCronExpression(t){return this.prompt(zi(t))}async operation(t,r){let a=this.promptForOperation(t,r);return this.prompt(a)}promptForOperation(t,r){let{operation:a,column:n,columns:o,language:s,categories:i,prompt:p}=t;switch(a){case At.AIOperationEnum.SUMMARISE_TEXT:return Wn(Ki(r,o));case At.AIOperationEnum.CLEAN_DATA:return Hi(r[n]);case At.AIOperationEnum.TRANSLATE:return Ji(r[n],s);case At.AIOperationEnum.CATEGORISE_TEXT:if(!i)throw Error("No categories provided for categorise text operation. Please provide categories.");return Yi(Ki(r,o),i.split(","));case At.AIOperationEnum.SENTIMENT_ANALYSIS:return Xi(r[n]);case At.AIOperationEnum.PROMPT:return p;case At.AIOperationEnum.SEARCH_WEB:return Zi(Ki(r,o));default:throw Fb.utils.unreachable(a)}}async generateJs(t,r){let{bindings:a=[],snippets:n=[]}=r||{};return await this.prompt(eu(a,n).addUserMessage(t))}};var jb=require("openai/helpers/zod");function tu(e){if(e)return e==="text"?{type:"text"}:e==="json"?{type:"json_object"}:e}function aG(e){if(!e)return 0;let t=e.prompt_tokens;return e.completion_tokens*3+t}var at=class extends bt{constructor(r){super(r);if(!r.apiKey)throw new Error("No OpenAI API key found");this.client=new Qb.default({apiKey:r.apiKey})}async chatCompletion(r){let a={model:this.model,messages:r.messages,max_tokens:this.maxTokens,response_format:tu(r.format)};r.tools&&r.tools.length>0&&(a.tool_choice="auto",a.tools=r.tools.map(jb.zodFunction));let n=await this.client.chat.completions.create(a),o=n.choices[0]?.message;if(o?.tool_calls){r.addMessage(o);let s=[];for(let i of o.tool_calls){let p=r.findTool(i.function.name);if(!p)throw new Error(`Tool ${i.function.name} not found in prompt tools`);let f=JSON.parse(i.function.arguments);s.push(p.handler(f).then(m=>({role:"tool",tool_call_id:i.id,content:m})))}return r.addMessages(await Promise.all(s)),this.chatCompletion(r)}else{if(o?.content)return{messages:[...r.messages,{role:o.role,content:o.content}],tokensUsed:aG(n.usage)};throw new Error("No response found")}}};var nt=require("@budibase/backend-core");var $n=class extends bt{async prompt(t){let r=await super.prompt(t);return r.tokensUsed&&await mn(r.tokensUsed),r}async chat(t){let r=await super.chat(t);return r.tokensUsed&&await mn(r.tokensUsed),r}async chatCompletion(t){return nt.env.SELF_HOSTED?this.chatCompletionSelfHost(t):this.chatCompletionCloud(t)}async chatCompletionCloud(t){return await new at({apiKey:nt.env.OPENAI_API_KEY,model:this.model,maxTokens:this.maxTokens}).chatCompletion(t)}async chatCompletionSelfHost(t){if(!nt.env.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(!this._apiKey){let n=await Ho();if(!n)throw new Error("No license key found");this._apiKey=n}let r={messages:t.messages,format:t.format,useTools:t.tools.length>0},a=await fetch(`${nt.env.BUDICLOUD_URL}/api/ai/chat`,{method:"POST",headers:{"Content-Type":"application/json",[nt.constants.Header.LICENSE_KEY]:this._apiKey},body:JSON.stringify(r)});if(!a.ok)throw await nt.HTTPError.fromResponse(a);return await a.json()}};var Ea=require("dd-trace");var ru=C(require("@anthropic-ai/sdk"));function nG(e){if(!e)return 0;let t=e.input_tokens;return e.output_tokens*3+t}var Vn=class extends bt{constructor(r){super(r);this.client=new ru.default({apiKey:r.apiKey})}firstTextBlock(r){for(let a of r.content)if(a.type==="text")return a.text}async chatCompletion(r){try{let a=await this.client.messages.create({model:this.model,messages:r.messages.map(({content:o})=>({role:"user",content:o||""})),max_tokens:this.maxTokens}),n=this.firstTextBlock(a)||"";return{messages:[...r.messages,{role:"assistant",content:n}],tokensUsed:nG(a.usage)}}catch(a){throw a instanceof ru.default.APIError&&console.error(`Anthropic Prompt failed with error ${a.name} and status: ${a.status}`),a}}};var $b=require("zod"),Vb=require("openai/helpers/zod"),Kb="gpt-4o-mini",oG={OpenAI:at,TogetherAI:at,AzureOpenAI:at,Custom:at,Anthropic:Vn,BudibaseAI:$n};async function sG(){return await Ea.tracer.trace("getAIConfig",async e=>{let t={type:Wb.ConfigType.AI,config:{}};if(!Ye.context.isSelfHostUsingCloud()){let a=await Ye.configs.getAIConfig();a&&(t=a)}await rs(t);let r=Object.values(t.config).find(a=>a.active&&a.isDefault);if(!r){e.addTags({enabled:!1,reason:"no provider found"});return}return e.addTags({enabled:!0}),{provider:r.provider,model:r.defaultModel||Kb,apiKey:r.apiKey}})}async function iG(){return Ea.tracer.trace("getSelfHostOpenAIKeyConfig",e=>{if(!Ye.env.SELF_HOSTED){e.addTags({enabled:!1,reason:"not self host"});return}if(!Ye.env.OPENAI_API_KEY){e.addTags({enabled:!1,reason:"no OPENAI_API_KEY"});return}return e.addTags({enabled:!0}),{provider:"OpenAI",model:Kb,apiKey:Ye.env.OPENAI_API_KEY}})}async function au(){return Ea.tracer.trace("getLLMConfig",async()=>await sG()||await iG())}async function Ra(e){return await Ea.tracer.trace("getLLM",async t=>{let{model:r,maxTokens:a}=e||{},n=await au();if(!n){t.addTags({enabled:!1,reason:"no config found"});return}r&&(n.model=r),a&&(n.maxTokens=a);let o=oG[n.provider];if(!o){t.addTags({enabled:!1,reason:"no provider found",provider:n.provider});return}return new o(n)})}async function Yb(){let e=await Ra();if(!e)throw new Ye.HTTPError("No available LLM configurations",500);return e}var K=class e{constructor(){this.messages=[];this.tools=[]}addTool(t){return this.tools.push(t),this}addTools(t){return this.tools.push(...t),this}findTool(t){return this.tools.find(r=>r.name===t)}withFormat(t){return t instanceof $b.z.ZodType?this.format=(0,Vb.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}};function Wn(e){return new K().addUserMessage(`Summarize this text:
|
|
37
|
+
`;function Wr(e){return lo.default.verify(e,sS,{algorithms:["RS256"]})}function iS(e,t){return lo.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}var $a={};w($a,{getFeatures:()=>fo});var c=require("@budibase/types");var uS={[c.PlanType.FREE]:[...me.SELF_FREE_LICENSE.features],[c.PlanType.PREMIUM]:void 0,[c.PlanType.PREMIUM_PLUS]:[c.Feature.APP_BACKUPS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.PDF,c.Feature.BUDIBASE_AI],[c.PlanType.PREMIUM_PLUS_TRIAL]:[c.Feature.APP_BACKUPS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.PDF,c.Feature.BUDIBASE_AI],[c.PlanType.PRO]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS],[c.PlanType.TEAM]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS],[c.PlanType.BUSINESS]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.PDF,c.Feature.BUDIBASE_AI],[c.PlanType.ENTERPRISE_BASIC]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.OFFLINE,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.PWA,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF,c.Feature.BUDIBASE_AI],[c.PlanType.ENTERPRISE_BASIC_TRIAL]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.PWA,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF,c.Feature.BUDIBASE_AI],[c.PlanType.ENTERPRISE]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.OFFLINE,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.PWA,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF,c.Feature.BUDIBASE_AI]},pS={[c.PlanType.FREE]:[...me.CLOUD_FREE_LICENSE.features],[c.PlanType.PREMIUM]:[c.Feature.APP_BACKUPS,c.Feature.BRANDING,c.Feature.APP_BUILDERS,c.Feature.VIEW_PERMISSIONS,c.Feature.PDF],[c.PlanType.PREMIUM_PLUS]:[c.Feature.APP_BACKUPS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.BUDIBASE_AI,c.Feature.PDF],[c.PlanType.PREMIUM_PLUS_TRIAL]:[c.Feature.APP_BACKUPS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.BUDIBASE_AI,c.Feature.PDF],[c.PlanType.PRO]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.BRANDING],[c.PlanType.TEAM]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.BRANDING],[c.PlanType.BUSINESS]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.BUDIBASE_AI,c.Feature.PDF],[c.PlanType.ENTERPRISE_BASIC]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.OFFLINE,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.BUDIBASE_AI,c.Feature.PWA,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF],[c.PlanType.ENTERPRISE_BASIC_TRIAL]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.BUDIBASE_AI,c.Feature.PWA,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF],[c.PlanType.ENTERPRISE]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.BUDIBASE_AI,c.Feature.PWA,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF]};function fo(e,t){let r=[];function a(n){let o=n[t];if(!o)throw new Error(`Features do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case c.Hosting.SELF:r=a(uS);break;case c.Hosting.CLOUD:r=a(pS);break}return r}var Ka={};w(Ka,{UNLIMITED:()=>d,getQuotas:()=>mo});var G=require("@budibase/types");var l=Je,cp=me,d=-1,Kr=e=>e*1e6,cS={[G.PlanType.FREE]:{...cp.CLOUD_FREE_LICENSE.quotas},[G.PlanType.PREMIUM]:{usage:{monthly:{...l.queries(d),...l.automations(1e3),...l.budibaseAICredits(0)},static:{...l.rows(1e4),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(0),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(7),...l.appBackupRetentionDays(7)}},[G.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...l.queries(d),...l.automations(5e3),...l.budibaseAICredits(Kr(2))},static:{...l.rows(25e3),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(0),...l.plugins(d),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[G.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...l.queries(d),...l.automations(5e3),...l.budibaseAICredits(Kr(2))},static:{...l.rows(25e3),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(0),...l.plugins(d),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[G.PlanType.PRO]:{usage:{monthly:{...l.queries(d),...l.automations(1e3),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(5),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(7),...l.appBackupRetentionDays(7)}},[G.PlanType.TEAM]:{usage:{monthly:{...l.queries(d),...l.automations(5e3),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(10),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(90)}},[G.PlanType.BUSINESS]:{usage:{monthly:{...l.queries(d),...l.automations(1e4),...l.budibaseAICredits(0)},static:{...l.rows(5e4),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(50),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(365),...l.appBackupRetentionDays(365)}},[G.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(Kr(4))},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(d),...l.appBackupRetentionDays(d)}},[G.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(Kr(4))},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(15),...l.appBackupRetentionDays(15)}},[G.PlanType.ENTERPRISE]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(Kr(4))},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(d),...l.appBackupRetentionDays(d)}}},lS={[G.PlanType.FREE]:{...cp.SELF_FREE_LICENSE.quotas},[G.PlanType.PREMIUM]:void 0,[G.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(0),...l.plugins(d),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[G.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(0),...l.plugins(d),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[G.PlanType.PRO]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(5),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(7),...l.appBackupRetentionDays(7)}},[G.PlanType.TEAM]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(10),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(90)}},[G.PlanType.BUSINESS]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(50),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(90),...l.appBackupRetentionDays(365)}},[G.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(d),...l.appBackupRetentionDays(d)}},[G.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(15),...l.appBackupRetentionDays(15)}},[G.PlanType.ENTERPRISE]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(d),...l.appBackupRetentionDays(d)}}};function mo(e,t){let r;function a(n){let o=n[t];if(!o)throw new Error(`Quotas do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case G.Hosting.SELF:r=a(lS);break;case G.Hosting.CLOUD:r=a(cS);break}return JSON.parse(JSON.stringify(r))}var Kt={};w(Kt,{appExists:()=>dS,encoding:()=>$t});var lp=require("@budibase/backend-core");async function dS(e){return(await lp.db.getAllApps({all:!0,idsOnly:!0})).includes(e)}var $t={};w($t,{base64ToObject:()=>mS,objectToBase64:()=>fS});function fS(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}function mS(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}var Yd=require("@budibase/types"),or=require("@budibase/backend-core"),Hd=C(xl()),zd=C(Qo());async function jx(e){await Se.save({offlineLicenseToken:e}),await xt()}async function Wx(){await Se.save({offlineLicenseToken:void 0}),await xt()}async function Jd(){return(await Se.get()).offlineLicenseToken}async function jo(){let t=(await or.installation.getInstall()).installId,r=or.context.getTenantId(),a=await or.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:a}}async function $x(){let e=await jo();return $t.objectToBase64(e)}function Kx(e){return $t.base64ToObject(e)}function Xd(e){let t=Date.now(),r=new Date(e.expireAt).getTime();if(t>r)throw new Error(`Offline license has expired. expireAt=${e.expireAt}`)}async function Zd(e){let t=await jo();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}function ef(e){let t=e.plan.type,r=Yd.Hosting.SELF,a=fo(r,t),n=mo(r,t);return e.features=(0,Hd.default)(e.features,a),e.quotas=(0,zd.default)(e.quotas,n),e}async function Wo(){try{let e=await Jd();if(e){let t=await Wr(e);return Xd(t),await Zd(t),ef(t)}}catch(e){console.error("Error retrieving offline license",e)}}var la={};w(la,{deleteDevLicense:()=>Jx,getOfflineLicense:()=>Hx,writeDevLicenseToDisk:()=>zx});var tf=require("@budibase/backend-core"),Ko=require("path"),rf=require("os"),_t=C(require("fs"));var Vx=tf.env.isTest()?".budibase-test":".budibase",$o=(0,Ko.join)((0,rf.tmpdir)(),Vx),Yx="dev_license.txt",ca=(0,Ko.join)($o,Yx);if(!_t.default.existsSync($o))try{_t.default.mkdirSync($o)}catch{}function Hx(){try{if(_t.default.existsSync(ca)){let e=_t.default.readFileSync(ca,{encoding:"utf-8"});return Wr(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}function zx(e){console.log(`Writing license to: ${ca}`),_t.default.writeFileSync(ca,e,{encoding:"utf-8"})}function Jx(){_t.default.rmSync(ca,{force:!0})}var Yo=async()=>{if(Vo.env.OFFLINE_MODE)return Wo();let e=await Wt();return e||(e=la.getOfflineLicense()),e},Ho=e=>po(e),zo=()=>Vo.env.SELF_HOSTED?me.SELF_FREE_LICENSE:me.CLOUD_FREE_LICENSE;var Zo={};w(Zo,{activateLicenseKey:()=>Xx,deleteLicenseKey:()=>Zx,getLicenseKey:()=>Xo});var Jo=C(require("dd-trace"));async function Xx(e){await co(e),await Se.save({licenseKey:e}),await xt()}async function Xo(){return await Jo.default.trace("getLicenseKey",async e=>{let t=await Se.get();return e.addTags({licenseKey:t.licenseKey}),t.licenseKey})}async function Zx(){return await Jo.default.trace("deleteLicenseKey",async()=>{await Se.save({licenseKey:void 0}),await xt()})}var Ot=require("@budibase/backend-core"),pn=C(require("dd-trace")),af=3600,xt=async()=>{await sf(),await of()},nf=async(e,t)=>{let{populateLicense:r=Yo,populateFreeLicense:a=zo}=t||{};return await pn.default.trace("getCachedLicense",async n=>{let o=Ot.context.getLicense();if(o)return n.addTags({foundInContext:!0,features:o.features,plan:o.plan,quotas:o.quotas}),o;let s=Ot.tenancy.getTenantId(),i=await zn(),p=await i.get(s);return n.addTags({tenantId:s,foundInCache:!!p}),p?(n.addTags({foundInCache:!0,refreshedAt:p.refreshedAt,features:p.features,plan:p.plan,quotas:p.quotas}),p):(p=await pn.default.trace("populateLicense",async()=>await r(s)),n.addTags({populatedLicense:!!p}),p||(p=pn.default.trace("populateFreeLicense",()=>a(e,s)),n.addTags({populatedFreeLicense:!!p})),p.refreshedAt=new Date().toISOString(),n.addTags({refreshedAt:p.refreshedAt,features:p.features,plan:p.plan,quotas:p.quotas,expirySeconds:af}),await i.store(s,p,af),p)})};Ot.env.isJest()&&(nf=jest.fn());var of=nf,sf=async()=>{let e=Ot.tenancy.getTenantId();await(await zn()).delete(e)};async function se(e,t){Array.isArray(e)||(e=[e]),t||(t=await Oe.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}async function cn(e,t){if(!await se(e,t))throw new Xe.FeatureDisabledError(`${e} is not currently enabled`,e)}async function es(e,t){if(!await se(e,t)){let r=e.join(", ");throw new Xe.FeatureDisabledError(`${r} are not currently enabled`,r)}}function ye(e){return async(...t)=>(await cn(oe.Feature.APP_BACKUPS),e(...t))}async function ts(){return se(oe.Feature.APP_BACKUPS)}async function rs(){return se(oe.Feature.BRANDING)}async function uf(){return se(oe.Feature.ENFORCEABLE_SSO)}async function t_(){return se(oe.Feature.SYNC_AUTOMATIONS)}async function r_(){return se(oe.Feature.TRIGGER_AUTOMATION_RUN)}async function Pt(){return se(oe.Feature.APP_BUILDERS)}async function ln(){return se(oe.Feature.AUDIT_LOGS)}async function as(){return se(oe.Feature.USER_GROUPS)}function a_(){return se(oe.Feature.PWA)}async function Ze(){return se(oe.Feature.EXPANDED_PUBLIC_API)}async function n_(e){if(Xe.env.ENABLE_SSO_MAINTENANCE_MODE||!await uf())return!1;let r;return e?.config?r=e.config:r=await Xe.configs.getSettingsConfig(),!!r.isSSOEnforced}var ns=async()=>{let e=oe.Feature.SCIM,t=await se(e),r=await Xe.configs.getSCIMConfig();if(!t||!r?.enabled)throw new Xe.FeatureDisabledError(`${e} is not currently enabled`,e);return!0};async function o_(){return se(oe.Feature.VIEW_PERMISSIONS)}async function s_(){return se(oe.Feature.VIEW_READONLY_COLUMNS)}var i_={faviconUrl:void 0,faviconUrlEtag:void 0,emailBrandingEnabled:!0,testimonialsEnabled:!0,platformTitle:void 0,loginHeading:void 0,loginButton:void 0,metaDescription:void 0,metaImageUrl:void 0,metaTitle:void 0};async function u_(e){return await rs()?{faviconUrl:e.faviconUrl,faviconUrlEtag:e.faviconUrlEtag,emailBrandingEnabled:e.emailBrandingEnabled,testimonialsEnabled:e.testimonialsEnabled,platformTitle:e.platformTitle,loginHeading:e.loginHeading,loginButton:e.loginButton,metaDescription:e.metaDescription,metaImageUrl:e.metaImageUrl,metaTitle:e.metaTitle}:i_}var ss={};w(ss,{enrichAIConfig:()=>os});var pf=require("@budibase/backend-core"),p_="budibase_ai";async function os(e){if(pf.env.SELF_HOSTED)return e;for(let t of Object.values(e.config))if(t.provider==="BudibaseAI")return e;return e.config[p_]={provider:"BudibaseAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-4o-mini",name:"Budibase AI"},e}var We={};w(We,{addApp:()=>m_,addAutomation:()=>I_,addGroup:()=>us,addPlugin:()=>cs,addRow:()=>y_,addRows:()=>A_,addUsers:()=>mn,bustCache:()=>to,decrement:()=>et,decrementMany:()=>da,getCurrentUsageValues:()=>Bu,getLicensedQuota:()=>lf,getQuotaUsage:()=>wt,increment:()=>qe,incrementBudibaseAICredits:()=>yn,incrementMany:()=>Lt,removeApp:()=>g_,removeGroup:()=>ps,removePlugin:()=>ls,removeRow:()=>h_,removeRows:()=>b_,removeUsers:()=>cr,set:()=>is,setAllUsage:()=>ao,setAppUsageValue:()=>ro,setUsage:()=>Uu,setUsagePerApp:()=>Du,updatePluginCount:()=>ds,updateUsage:()=>ir,usageLimitIsExceeded:()=>f_,utils:()=>Rr});var Y=require("@budibase/types");var Ce=require("@budibase/backend-core");var sr=require("dd-trace"),qe=(e,t,r)=>cf({change:1,name:e,type:t,opts:r}),Lt=e=>sr.tracer.trace("quotas.incrementMany",async()=>cf(e)),cf=async e=>await sr.tracer.trace("quotas.tryIncrement",async t=>{let r=Array.isArray(e)?e:[e];t.addTags({numActions:r.length}),await ir(r.map(n=>({usageChange:n.change,name:n.name,type:n.type,opts:{dryRun:!0,suppressErrorLog:n.opts?.suppressErrorLog,id:n.opts?.id}})));let a=[];for(let n of r)await sr.tracer.trace("quotas.incrementMany.fn",async o=>{o.addTags({actionName:n.name,actionType:n.type,actionChange:n.change});let s=n.opts?.fn;s&&a.push(await s())});return await ir(r.map(n=>({usageChange:n.change,name:n.name,type:n.type,opts:{dryRun:!1,valueFn:n.opts?.valueFn,suppressErrorLog:n.opts?.suppressErrorLog,id:n.opts?.id}}))),a[0]}),et=(e,t,r={})=>ir({usageChange:-1,name:e,type:t,opts:r}),da=e=>{let t=Array.isArray(e)?e:[e];return ir(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},is=async(e,t,r)=>Me.setUsage(r,e,t),c_=(e,t,r)=>{if(e==Y.QuotaUsageType.STATIC){let a=r.usageQuota.triggers;return a?a[t]||{}:{}}else{let a=Me.utils.getCurrentMonthString(),n=r.monthly[a].triggers;return n?n[t]||{}:{}}},l_=async(e,t,r,a)=>{try{await Ce.locks.doWithLock({type:Y.LockType.TRY_ONCE,name:Y.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let n={percentage:r,name:t.name};a&&(n.resetDate=a),await lt.triggerQuota(n)})}catch(n){Ce.logging.logAlert("Error triggering quota",n)}},d_=async(e,t,r,a)=>{let n=await wt(),o=e===Y.QuotaUsageType.MONTHLY?n.quotaReset:void 0,s=await c_(e,t,n),i=a.triggers,p=r/a.value*100;p>100&&(p=100);for(let[f,m]of i.entries())if(p>=m&&a.value!==Je.UNLIMITED){if(!s[m]){s[m]=new Date().toISOString();let g=i[f+1]||100;(!(p>=g)||p===m)&&await l_(t,a,p,o)}}else s[m]=void 0;return s},ir=async e=>{await sr.tracer.trace("quotas.updateUsage",async t=>{let r=Ce.tenancy.getTenantId(),a=Array.isArray(e)?e:[e];t.addTags({numActions:a.length,tenantId:r});let n,o,s=[],i={},p={},f={},m={};for(let g of a)await sr.tracer.trace("quotas.updateUsage.action",async S=>{S.addTags({actionName:g.name,actionType:g.type,actionUsageChange:g.usageChange});try{n=Ce.context.getAppId()}catch{}if(Y.APP_QUOTA_NAMES.includes(g.name)&&!n)throw new Error("App context required for quota update");try{o=await lf(Y.QuotaType.USAGE,g.name,g.type),s.push(o);let{total:x,app:R,breakdown:E}=await Me.getCurrentUsageValues(g.type,g.name,g.opts?.id);x+=g.usageChange,R!=null&&(R+=g.usageChange),E!=null&&(E+=g.usageChange);let q={};if(g.opts?.dryRun||(q=await d_(g.type,g.name,x,o),m={...m,[g.name]:q}),o.value!==Je.UNLIMITED&&x>o.value&&g.usageChange>0)throw new Ce.UsageLimitError(`Licensed ${o.name} of ${o.value} has been exceeded`,o.name);if(x=Math.max(0,x),R&&(R=Math.max(0,R)),E&&(E=Math.max(0,E),f={...f,[g.name]:E}),!g.opts?.dryRun){let xe=g.opts?.valueFn;xe&&(x=await xe(),R=x),i={...i,[g.name]:x},p={...p,[g.name]:R}}}catch(x){throw g.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${g.name}`,x),x}});let y=a.filter(g=>!g.opts?.dryRun).map(g=>({name:g.name,type:g.type,values:{total:i[g.name],app:p[g.name],breakdown:f[g.name],triggers:m[g.name]},opts:{...g.opts,tenantId:r}}));y.length>0&&await Me.setAllUsage(y)})},lf=async(e,t,r)=>{let a=await Oe.getCachedLicense();if(!a){let n=Ce.tenancy.getTenantId();throw new Error("License not found for tenant id "+n)}if(r&&(0,Y.isStaticQuota)(e,r,t))return a.quotas[e][r][t];if(r&&(0,Y.isMonthlyQuota)(e,r,t))return a.quotas[e][r][t];if((0,Y.isConstantQuota)(e,t))return a.quotas[e][t];throw new Error("Invalid quota type")},f_=async(e,t)=>{try{return await ir({usageChange:1,name:e,type:t,opts:{dryRun:!0}}),!1}catch(r){if(r.code===Y.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw r}};var ur=require("@budibase/types"),df=require("@budibase/backend-core"),ff=async()=>{let e=await df.db.getAllApps({dev:!0});return e?e.length:0},m_=async(e,{appId:t}={})=>qe(ur.StaticQuotaName.APPS,ur.QuotaUsageType.STATIC,{fn:e,valueFn:ff,id:t}),g_=async({appId:e}={})=>et(ur.StaticQuotaName.APPS,ur.QuotaUsageType.STATIC,{valueFn:ff,id:e});var Qe=require("@budibase/types"),y_=async(e,{tableId:t}={})=>qe(Qe.StaticQuotaName.ROWS,Qe.QuotaUsageType.STATIC,{fn:e,id:t}),h_=async({tableId:e}={})=>et(Qe.StaticQuotaName.ROWS,Qe.QuotaUsageType.STATIC,{id:e}),A_=async(e,t,{tableId:r}={})=>Lt({change:e,name:Qe.StaticQuotaName.ROWS,type:Qe.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),b_=async(e,{tableId:t}={})=>da({change:e,name:Qe.StaticQuotaName.ROWS,type:Qe.QuotaUsageType.STATIC,opts:{id:t}});var fn=require("@budibase/types"),I_=async(e,{automationId:t}={})=>qe(fn.MonthlyQuotaName.AUTOMATIONS,fn.QuotaUsageType.MONTHLY,{fn:e,id:t});var pr=require("@budibase/types"),us=async e=>qe(pr.StaticQuotaName.USER_GROUPS,pr.QuotaUsageType.STATIC,{fn:e}),ps=async()=>et(pr.StaticQuotaName.USER_GROUPS,pr.QuotaUsageType.STATIC);var mt=require("@budibase/types"),cs=async e=>qe(mt.StaticQuotaName.PLUGINS,mt.QuotaUsageType.STATIC,{fn:e}),ls=async()=>et(mt.StaticQuotaName.PLUGINS,mt.QuotaUsageType.STATIC),ds=async e=>is(mt.StaticQuotaName.PLUGINS,mt.QuotaUsageType.STATIC,e);var je=require("@budibase/types"),fa=require("@budibase/backend-core");var mn=async(e,t,r)=>{let a=[{change:e,name:je.StaticQuotaName.USERS,type:je.QuotaUsageType.STATIC,opts:{fn:r,valueFn:fa.users.getUserCount}}];t>0&&a.push({change:t,name:je.StaticQuotaName.CREATORS,type:je.QuotaUsageType.STATIC,opts:{valueFn:fa.users.getCreatorCount}});let n=await Lt(a);return await Wt(),n},cr=async(e,t)=>{let r=[{change:e,name:je.StaticQuotaName.USERS,type:je.QuotaUsageType.STATIC,opts:{valueFn:fa.users.getUserCount}}];t>0&&r.push({change:t,name:je.StaticQuotaName.CREATORS,type:je.QuotaUsageType.STATIC,opts:{valueFn:fa.users.getCreatorCount}}),await da(r),await Wt()};var gn=require("@budibase/types"),yn=async e=>Lt({change:e,name:gn.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:gn.QuotaUsageType.MONTHLY});var tt={};w(tt,{addAppBuilder:()=>E_,db:()=>$e,removeAppBuilder:()=>R_});var ga=require("@budibase/backend-core");var Q={};w(Q,{addAppBuilder:()=>hs,addUsers:()=>ms,adjustGroupCreatorsQuotas:()=>v_,cleanupApp:()=>T_,enrichUserRolesFromGroups:()=>w_,fetch:()=>ma,get:()=>qt,getBulk:()=>If,getGroupBuilderAppIds:()=>bf,getGroupRoleId:()=>S_,remove:()=>fs,removeAppBuilder:()=>As,removeUsers:()=>gs,save:()=>lr,updateGroupApps:()=>ys});var _=require("@budibase/backend-core");var mf=require("@budibase/backend-core"),hn=class extends mf.HTTPError{constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function hf(e,t){try{let r=[];for(let i of e)if(i.roles){let p=i.roles[_.db.getProdAppID(t)];p&&r.push(p)}let a=await Promise.all(r.map(async i=>({[i]:await _.roles.roleToNumber(i)}))),n,o,s={};a.forEach(i=>{let[p,f]=Object.entries(i)[0];s[p]={roleId:p,roleNum:f}});for(let{roleId:i,roleNum:p}of Object.values(s))(o===void 0||p>o)&&(o=p,n=i);return n}catch(r){throw _.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}async function Af(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await M.getBulk(e,{enriched:!1}),t}async function bf(e,t){if(!e.userGroups)return[];let r=await Af(e.userGroups,t?.groups),a=t?.appId?_.db.getProdAppID(t?.appId):null,n=[];for(let o of r){let s=o.builder?.apps;a&&s?.includes(a)?n.push(a):a||(n=n.concat(s||[]))}return[...new Set(n)]}async function S_(e,t,r){if(!e.userGroups)return null;let a=await Af(e.userGroups,r?.groups),n=_.db.getProdAppID(t);return e.roles?.[n]?e.roles[n]:(a=a.filter(o=>o?.roles?Object.keys(o.roles).includes(n):!1),await hf(a,t))}async function w_(e){if(!e||!e.userGroups)return e;let t=await If(e.userGroups,{enriched:!1}),r=[];for(let n of t)n?.roles&&(r=r.concat(Object.keys(n.roles)));r=[...new Set(r)];for(let n of r)await _.context.doInAppContext(n,async()=>{if(e.roles[n])return;let o=await hf(t,n);o&&(e.roles[n]=o)});let a=await bf(e,{groups:t});if(a.length&&!e.builder?.global){let n=e.builder?.apps||[];e.builder={apps:n.concat(a)}}return e}async function ma(){return await M.fetch()}async function qt(e){return await M.get(e)}async function If(e,t={enriched:!0}){return await M.getBulk(e,t)}async function gf(e){if(await M.getByName(e))throw new hn(e)}async function yf(e){let t=await M.getGroupUsers(e._id);if(!t.length)return 0;let a=await _.tenancy.getGlobalDB().getMultiple(t.map(o=>o._id));return(await _.userUtils.creatorsInList(a)).filter(o=>o).length}async function lr(e){let t=[],r=!e._id,a=0;if(delete e.users,!e._id)e._id=M.generateUserGroupID(),await gf(e.name),t.push(_.events.group.created(e));else{let o=await M.get(e._id);if(o.name!==e.name&&await gf(e.name),t.push(_.events.group.updated(e)),JSON.stringify(o.roles)!==JSON.stringify(e.roles)){let s=o.users?.length||0,i=0;s>0&&(i=await yf(o)),Object.values(e.roles).includes("CREATOR")?a=s-i:a=-s,t.push(_.events.group.permissionsEdited(e))}}await Promise.all(t);let n=()=>M.save(e);if(r)return await us(n);{let o=await n();if(a>0)await mn(0,a);else if(a<0){let s=await yf(e),i=Math.abs(a)-s;i>0&&await cr(0,i)}return o}}async function fs(e,t){let r;try{r=await M.get(e)}catch{throw new Error("Group not found")}let a=Object.values(r.roles||{}).includes("CREATOR"),n=()=>{};if(a){let s=_.tenancy.getGlobalDB(),i=await M.getGroupUsers(e),f=(await Promise.all(i.map(S=>s.get(S._id)))).map(S=>({...S,userGroups:S.userGroups.filter(P=>P!==e)})),y=(await _.userUtils.creatorsInList(f)).filter(S=>S).length,g=i.length-y;g&&(n=()=>cr(0,g))}let o=await M.destroy(e,t);return await _.events.group.deleted(r),await ps(),await n(),o}async function ms(e,t){let r=await M.get(e),a=await _.users.bulkGetGlobalUsersById(t),n=[];for(let p of a)p.userGroups||(p.userGroups=[]),p.userGroups.includes(e)||n.push(p);if(!n.length)return n;let o=n.map(p=>({...p,userGroups:[...p?.userGroups||[],e]}));if(await _.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes("CREATOR")){let f=(await _.userUtils.creatorsInList(n)).filter(y=>y).length,m=n.length-f;m&&await mn(0,m)}let i=[];for(let p of t)i.push(_.cache.user.invalidateUser(p));return await Promise.all(i),await _.events.group.usersAdded(o.length,r),o}async function gs(e,t){let r=await M.get(e),a=await _.users.bulkGetGlobalUsersById(t),n=[];for(let i of a){if(!i.userGroups||!i.userGroups.includes(e))continue;let p=i.userGroups.indexOf(e);i.userGroups.splice(p,1),n.push(i)}if(await _.users.bulkUpdateGlobalUsers(n),Object.values(r.roles||{}).includes("CREATOR")){let p=(await _.userUtils.creatorsInList(n)).filter(m=>m).length,f=n.length-p;f&&await cr(0,f)}let s=[];for(let i of t)s.push(_.cache.user.invalidateUser(i));return await Promise.all(s),n.length&&await _.events.group.usersDeleted(n.length,r),n}async function ys(e,t){let r=await qt(e);if(r.roles||(r.roles={}),t.appsToAdd)for(let a of t.appsToAdd)r.roles[a.appId]=a.roleId;if(t.appsToRemove)for(let a of t.appsToRemove)delete r.roles[a.appId];return await lr(r)}async function T_(e){let t=await ma(),r=[];for(let a of t)!a.roles||!a.roles[e]||(delete a.roles[e],r.push(a));return await M.bulkSave(r)}async function hs(e,t){if(!await Pt())throw new Error("Feature not enabled, please check license");let r=_.db.getProdAppID(t),a=await qt(e);a.builder??={apps:[]},a.builder.apps.includes(t)||(a.builder.apps.push(r),await lr(a))}async function As(e,t){if(!await Pt())throw new Error("Feature not enabled, please check license");let r=_.db.getProdAppID(t),a=await qt(e);a.builder?.apps.includes(t)&&(a.builder.apps=a.builder.apps.filter(n=>n!==r),await lr(a))}async function v_(){if(!await as()){let e=_.tenancy.getGlobalDB(),r=(await ma()||[]).filter(a=>Object.values(a?.roles||{}).includes("CREATOR"));for(let a of r){let n=await M.getGroupUsers(a._id),s=(await Promise.all(n.map(m=>e.get(m._id)))).map(m=>({...m,userGroups:m.userGroups.filter(y=>y!==a._id)})),p=(await _.userUtils.creatorsInList(s)).filter(m=>m).length,f=n.length-p;await M.save({...a,roles:{}}),f&&await cr(0,f)}}}ga.users.UserDB.init(We,Q,Le);var $e=ga.users.UserDB;async function E_(e,t){if(!await Pt())throw new Error("Feature not enabled, please check license");await ga.users.addAppBuilder(e,t)}async function R_(e,t){if(!await Pt())throw new Error("Feature not enabled, please check license");await ga.users.removeAppBuilder(e,t)}var In={};w(In,{logs:()=>Es});var Es={};w(Es,{logSearch:()=>D_,oldestLogDate:()=>xf,storeLog:()=>N_});var Rf=require("@budibase/types"),bn=require("@budibase/backend-core");var An=require("@budibase/types");var Z=require("@budibase/backend-core");var Sf=require("@budibase/backend-core");async function wf(e,t){let r,a=5,n=!1,o,s=!0;for(;a>0;a--)try{s?o=await e():o=await exports.randomDelay(e),n=!0;break}catch(i){r=i}return n||Sf.logging.logWarn(`Failed to backoff: ${t}`,r),o}var{SEPARATOR:rt,UNICODE_MAX:x_,DocumentType:Tf,AutomationViewMode:bs,ViewName:__,getQueryIndex:O_}=Z.db,P_=new Date(0).toISOString(),L_=100,Is=async()=>ka(An.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS);function vf(e,t,{status:r,automationId:a}={},n={}){let o=a?`${a}${rt}`:"",s=r?`${r}${rt}`:"",i;return r&&a?i=`${bs.ALL}${rt}${s}${o}`:r?i=`${bs.STATUS}${rt}${s}`:a?i=`${bs.AUTOMATION}${rt}${o}`:i=`${Tf.AUTOMATION_LOG}${rt}`,{...n,descending:!0,startkey:`${i}${t}${x_}`,endkey:`${i}${e}`}}function C_(e,t,r){return`${Tf.AUTOMATION_LOG}${rt}${e}${rt}${r}${rt}${t}`}async function Ss(e,t,r={docs:!0}){let a=Z.context.getProdAppDB();await a.exists()||(a=Z.context.getDevAppDB());let n={status:r.status},o=r?.limit?r.limit:r?.paginate?9+1:void 0,s=vf(e,t,n,{include_docs:r.docs,limit:o});r?.page&&(s.startkey=r.page);let i=await a.allDocs(s);return _r(i,{paginate:r?.paginate,pageSize:9})}async function ws(e,t,r={}){let a=Z.context.getProdAppDB();await a.exists()||(a=Z.context.getDevAppDB());let n;try{let o={automationId:r?.automationId,status:r?.status},s=vf(e,t,o,{include_docs:!0,limit:9+1});r?.page&&(s.startkey=r.page),n=await a.query(O_(__.AUTOMATION_LOGS),s)}catch(o){if(o!=null&&(o.name==="not_found"||o.error==="not_found"))return await Yu(),ws(e,t,r);throw o}return _r(n,{paginate:!0,pageSize:9})}async function Ef(e,t){let r=Z.context.getProdAppDB(),a=e._id,n=e.name,o=new Date().toISOString(),s=C_(o,t.status,a),i={...t,automationId:a,status:t.status,automationName:n,createdAt:o,_id:s};return await r.put(i),s}async function Ts(e,{clearing:t}={clearing:!1}){let r=Z.context.getProdAppDB();await wf(async()=>{let a=await r.get(Z.db.DocumentType.APP_METADATA);for(let n of e){let o=n.split(Z.db.SEPARATOR),s=`${o[o.length-3]}${Z.db.SEPARATOR}${o[o.length-2]}`,i={};a.automationErrors&&(i=a.automationErrors),Array.isArray(i[s])||(i[s]=[]);let p=i[s].indexOf(n);t&&p!==-1?i[s].splice(p,1):i[s].push(n),i[s].length===0&&delete i[s],a.automationErrors=i}await r.put(a),await Z.cache.app.invalidateAppMetadata(a.appId,a)},"Failed to update app metadata with automation log error")}async function q_(){let e=await Is();try{return await Ss(P_,e,{docs:!1,paginate:!1,limit:L_})}catch{return{data:[],hasNextPage:!1}}}async function vs(){let e=Z.context.getProdAppDB();try{let t=await q_();if(!t.data||t.data.length===0)return;let r=t.data.map(n=>({_id:n.id,_rev:n.value.rev,_deleted:!0})),a=t.data.filter(n=>{let o=n.id.split(Z.db.SEPARATOR);return o[o.length-1]===An.AutomationStatus.ERROR}).map(n=>n.id);await e.bulkDocs(r),a.length&&await Ts(a,{clearing:!0})}catch(t){Z.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}var xf=Is;async function U_(e,t,r,a){let n,o=new Date().toISOString(),s=await xf();return(!e||e<s)&&(e=s),r||t?n=await ws(e,o,{automationId:r,status:t,page:a}):n=await Ss(e,o,{status:t,page:a,docs:!0,paginate:!0}),n}async function D_(e){return await vs(),await U_(e.startDate,e.status,e.automationId,e.page)}async function N_(e,t){if(!bn.db.isProdAppID(bn.context.getAppId()))return;let r=await Ef(e,t);t.status===Rf.AutomationStatus.ERROR&&await Ts([r]),await vs()}var Sn={};w(Sn,{checkPluginQuotas:()=>G_,deletePlugin:()=>M_,storePlugin:()=>B_});var Lf=require("@budibase/types"),H=require("@budibase/backend-core");var _f=C(require("fs")),Of=require("path");function Pf(e,t){return _f.default.readFileSync((0,Of.join)(e,t),"utf8")}async function B_(metadata,directory,source){let db=H.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=H.objectStore.getPluginS3Dir(name),files=await H.objectStore.uploadDirectory(H.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===Lf.PluginType.DATASOURCE){let js=Pf(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=H.db.generatePluginID(name),rev;try{rev=(await db.get(pluginId))._rev}catch(e){rev=void 0}let doc={_id:pluginId,_rev:rev,...metadata,name,version,hash,description,source};iconFileName&&(doc.iconFileName=iconFileName),source&&(doc={...doc,source});let write=async()=>{let e=await db.put(doc);return await H.events.plugin.imported(doc),{...doc,_rev:e.rev}};return rev?await write():await cs(write)}async function M_(e){let t=H.tenancy.getGlobalDB();try{let r=await t.get(e),a=H.objectStore.getPluginS3Dir(r.name);await H.objectStore.deleteFolder(H.objectStore.ObjectStoreBuckets.PLUGINS,a),await t.remove(e,r._rev),await H.events.plugin.deleted(r),await ls()}catch(r){let a=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${a}`)}}async function G_(){let e=H.tenancy.getGlobalDB();try{let r=(await e.allDocs(H.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await ds(r)}catch(t){H.logging.logAlert("Unable to retrieve plugins for quota check",t)}}var Ke={};w(Ke,{fetch:()=>F_,fetchValues:()=>Q_,isEncryptionKeyAvailable:()=>k_,isValid:()=>Uf,remove:()=>W_,update:()=>j_});var ya=require("@budibase/types"),Cf=require("@budibase/backend-core");function k_(){return!!Cf.env.ENCRYPTION_KEY}async function F_(){let e=await Et.get();return Object.keys(e.variables)}async function Q_(e){let r=(await Et.get()).variables,a={};for(let[n,o]of Object.entries(r))switch(e){case ya.AppEnvironment.DEVELOPMENT:a[n]=o.development;break;case ya.AppEnvironment.PRODUCTION:default:a[n]=o.production;break}return a}async function qf(e){if(!(await Fe.cache.getCachedLicense()).features.includes(ya.Feature.ENVIRONMENT_VARIABLES))throw new Error("User does not have access to environment variables feature.");let r=await Et.get();r.variables=e(r.variables),await Et.update(r)}async function j_(e,t){if(Uf(e))await qf(a=>(a[e]=t,a));else throw new Error("Variable name has characters that are not allowed")}async function W_(e){await qf(t=>(delete t[e],t))}function Uf(e){return/^[a-zA-Z0-9-_]+$/.test(e)}var gt={};w(gt,{definitions:()=>tO,download:()=>eO,fetch:()=>Z_,write:()=>J_});var Tn=require("@budibase/types");var $=require("@budibase/backend-core"),Ue=require("@budibase/types");var Df=require("memorystream"),Nf=new $.sql.Sql(Ue.SqlClient.SQL_LITE);async function $_(e,t,r){let a={operation:Ue.Operation.READ,table:jt.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:Ue.SortOrder.DESCENDING,type:Ue.SortType.STRING}}},n=Nf._query(a);if(Array.isArray(n))throw new Error("Cannot execute multiple queries for audit log search");return{sql:n.sql,bindings:n.bindings}}function K_(e){return`${$.DocumentType.AUDIT_LOG}${$.SEPARATOR}${e}${$.SEPARATOR}${$.utils.newid()}`}async function Bf(e){e._id||(e._id=K_(e.timestamp)),e.type||(e.type=Ue.AUDIT_LOG_TYPE);try{let r=await $.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){$.logging.logAlert("Failed to write audit log",t)}}async function Rs(e,t,r){t||(t=1);let a=$.context.getAuditLogsDB();try{let n=9+1,o=await $_(e,t,n),s=jt.searchTable(),i=Nf.convertJsonStringColumns(s,await a.sql(o.sql,o.bindings)),p;i.length>n&&(p=i.pop());let f={rows:i,hasNextPage:!!p};return f.hasNextPage&&(f.bookmark=t+1),f}catch(n){if(n.status===404&&!r?.isRetry)return await V_(),await Mu(),await Rs(e,t,{isRetry:!0});throw n}}async function V_(){let e=$.context.getAuditLogsDB(),r=(await e.allDocs($.db.getDocParams($.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(a=>a.doc).filter(a=>a&&!a.type).map(a=>({...a,type:Ue.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}function Mf(e){let t=$.context.getAuditLogsDB(),r=new Df,a=t.dump(r,{filter:o=>{let s=o;if(!s._id?.startsWith($.DocumentType.AUDIT_LOG))return!1;let i=!0,p=(f,m)=>{!f||f.length===0||(i=!!(i&&m&&f.includes(m)))};if(p(e.userIds,s.userId),p(e.appIds,s.appId),p(e.events,s.event),(e.startDate||e.endDate)&&(i=i&&s.timestamp>=e.startDate&&s.timestamp<=e.endDate),e.fullSearch){let f=JSON.stringify(o);i=i&&f.includes(e.fullSearch)}return i}}),n=new Df;return r.on("data",o=>{let s=JSON.parse(Buffer.from(o).toString());if(Array.isArray(s.docs)){let i="";for(let p of s.docs)i+=JSON.stringify(p)+`
|
|
38
|
+
`;n.write(i)}}),r.on("end",()=>{n.end()}),{promise:a,stream:n}}var ce=require("@budibase/backend-core");var wn=require("@budibase/types"),ha=require("@budibase/string-templates"),Aa=require("@budibase/backend-core"),H_=Aa.constants.MIN_VALID_DATE.toISOString(),z_=Aa.constants.MAX_VALID_DATE.toISOString();function xs(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||H_,e.endDate=e.endDate||z_),e}async function Gf(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(a=>Aa.db.getProdAppID(a)));let t={};function r(a,n){n?.length&&(t.oneOf={...t.oneOf,[a]:n})}return r("userId",e.userIds),r("appId",e.appIds),r("event",e.events),e.fullSearch&&(t.fuzzyOr=!0,t.fuzzy={name:e.fullSearch,fallback:e.fullSearch}),(e.startDate||e.endDate)&&(e=xs(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}function _s(e,t,r){let a={_id:e,status:wn.AuditLogResourceStatus.DELETED};switch(t){case"app":a.name=r?.appName;break;case"user":a.email=r?.email;break}return a}function Os(e){let t=(0,ha.findHBSBlocks)(e);for(let r of t){let a=` "${r}"`;e=e.replace(e.includes(a)?a:` ${r}`,""),e=(0,ha.processStringSync)(e,{})}return e}function kf(e,t){let r=wn.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let a=(0,ha.processStringSync)(r,t);return a.includes('""')&&(a=Os(r)),a}async function J_(e,t,r){if(!await ln()||!ce.utils.isAudited(e))return;let a=kf(e,t),n=new Date;r?.timestamp&&(n=new Date(r.timestamp));let o={timestamp:n.toISOString(),event:e,name:a,userId:r?.userId||Tn.AuditLogSystemUser,metadata:{...t,...r?.hostInfo}},s={};try{if(r?.appId){o.appId=ce.db.getProdAppID(r.appId);let i=await ce.cache.app.getAppMetadata(r.appId);"name"in i&&(s.appName=i.name)}if(r?.userId){let i=await ce.users.getById(r?.userId);s.email=i.email}}catch(i){ce.logging.logAlert("Failed to retrieve fallback information for audit log",i)}return o.fallback=s,await Bf(o)}async function X_(e){let t=e.map(i=>i.userId),a=e.filter(i=>i.appId).map(i=>ce.db.getDevAppID(i.appId)),n=await ce.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),o=await ce.db.getAppsByIDs([...new Set(a)]),s=[];for(let i of e){let p=n.find(y=>y?._id===i.userId),f=o.find(y=>ce.db.isSameAppID(y?.appId,i.appId)),m={event:i.event,timestamp:i.timestamp,name:i.name,metadata:i.metadata,user:p||_s(i.userId,"user",i.fallback)};i.appId&&(m.app=f||_s(i.appId,"app",i.fallback)),s.push(m)}return s}async function Z_(e){if(!await ln())throw new Error("Audit logs not available - license required.");let t=await Gf(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await Rs(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await X_(r.rows)}}function eO(e){return e=xs(e),Mf(e)}function tO(){let e=Object.entries(Tn.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=Os(r[1]);return t}var vn={};w(vn,{applications:()=>qs,roles:()=>Ls,users:()=>Ps});var Ps={};w(Ps,{roleCheck:()=>aO});function rO(e,t){let r=e.request.body;return r.builder&&(r.builder=t?.builder||void 0),r.admin&&(r.admin=t?.admin||void 0),r.roles&&(r.roles=t?.roles||{}),e.request.body=r,e}async function aO(e,t){return await Ze()||rO(e,t),e}var Ls={};w(Ls,{assign:()=>nO,unAssign:()=>oO});var ba=require("@budibase/backend-core");async function nO(e,t){if(!await Ze())throw new Error("Unable to assign roles - license required.");let r=await $e.bulkGet(e);for(let a of r){if(t.role&&t.role.roleId){let n=ba.db.getProdAppID(t.role.appId);a.roles[n]=t.role.roleId}if(t.appBuilder){let n=ba.db.getProdAppID(t.appBuilder.appId),o=a.builder?.apps||[];a.builder={apps:o.concat([n])}}t.builder&&(a.builder={global:!0}),t.admin&&(a.admin={global:!0}),a.roles}await $e.bulkUpdate(r)}async function oO(e,t){if(!await Ze())throw new Error("Unable to un-assign roles - license required.");let r=await $e.bulkGet(e);for(let a of r){if(t.role){let n=ba.db.getProdAppID(t.role?.appId);a.roles[n]===t.role.roleId&&delete a.roles[n]}if(t.appBuilder&&a.builder?.apps){let n=ba.db.getProdAppID(t.appBuilder.appId);a.builder.apps=a.builder.apps.filter(o=>o!==n)}t.builder&&a.builder&&delete a.builder,t.admin&&a.admin&&delete a.admin}}var qs={};w(qs,{buildExportFn:()=>iO,buildImportFn:()=>sO});var Cs=require("@budibase/backend-core");function sO(e){return async(t,r)=>{await Ze()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await Cs.context.doInAppContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}function iO(e){return async(t,r)=>{await Ze()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:a,excludeRows:n}=t.request.body;await Cs.context.doInAppContext(t.params.appId,async()=>{t.request.body={encryptPassword:a,excludeRows:n},t.query.appId=t.params.appId,await e(t),await r()})}}var Ve=require("@budibase/backend-core"),ie=require("@budibase/types");var Us=require("@budibase/backend-core"),Ff;function Qf(){Ff=new Us.queue.BudibaseQueue(Us.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}function Ut(){return Ff}var jf=require("path"),Wf=C(require("fs"));async function Ds(e,t={}){return we.storeAppBackupMetadata(e,t)}function $f(e){let t=new Date().toISOString();switch(e){case ie.AppBackupStatus.COMPLETE:case ie.AppBackupStatus.FAILED:return{timestamp:t,finishedAt:t};case ie.AppBackupStatus.STARTED:return{timestamp:t,startedAt:t};case ie.AppBackupStatus.PENDING:return{timestamp:t,createdAt:t}}}async function uO(e,t,r,a){let n=await En(e);return await we.storeAppBackupMetadata({...n,...$f(t),contents:r,status:t,type:ie.AppBackupType.BACKUP},{filename:a,docId:e})}async function pO(e,t,r){let a=await En(e);return await we.storeAppBackupMetadata({...a,...$f(r),status:r,type:ie.AppBackupType.RESTORE,trigger:ie.AppBackupTrigger.MANUAL},{docId:e,docRev:t})}async function En(e){return we.getAppBackupMetadata(e)}async function cO(e,t){return we.updateAppBackupMetadata(e,t)}async function lO(e){let t=await we.getAppBackupMetadata(e);return t.filename&&await Ve.objectStore.deleteFile(Ve.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),we.deleteAppBackupMetadata(e)}async function dO(e,t){return we.fetchAppBackups(e,t)}async function Kf(e){let t=await we.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let r=await Ve.objectStore.getReadStream(Ve.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}async function fO(e){let{stream:t}=await Kf(e),r=(0,jf.join)(Ve.objectStore.budibaseTempDir(),Ve.utils.newid()),a=Wf.default.createWriteStream(r);return new Promise((n,o)=>{t.on("error",o),a.on("error",o),t.pipe(a).on("close",()=>n(r))})}async function mO(e,t,r={}){let a;try{a=await Ds({appId:e,trigger:t,timestamp:new Date().toISOString(),status:ie.AppBackupStatus.PENDING,type:ie.AppBackupType.BACKUP,...r})}catch(n){if(n.status===409)return;throw n}return await Ut().add({docId:a.id,docRev:a.rev,appId:e,export:{trigger:t,...r}}),await Ve.events.backup.appBackupTriggered(e,a.id,ie.AppBackupType.BACKUP,t,r?.name),a.id}async function gO(e,t,r,a){let n=await En(t),o;try{o=await Ds({appId:e,timestamp:new Date().toISOString(),status:ie.AppBackupStatus.PENDING,type:ie.AppBackupType.RESTORE,createdBy:a})}catch(s){if(s?.status===409)return;throw s}return await Ut().add({appId:e,docId:o.id,docRev:o.rev,import:{nameForBackup:r,backupId:t,createdBy:a}}),{restoreId:o.id,metadata:n}}var yO={isEnabled:ts,triggerAppRestore:ye(gO),triggerAppBackup:ye(mO),getBackupDownloadStream:ye(Kf),downloadAppBackup:ye(fO),fetchAppBackups:ye(dO),storeAppBackupMetadata:ye(Ds),updateBackupStatus:ye(uO),updateRestoreStatus:ye(pO),getAppBackup:ye(En),updateAppBackup:ye(cO),deleteAppBackup:ye(lO)},at=yO;var Bs={};w(Bs,{init:()=>Ns});var z=require("@budibase/backend-core");var De=require("@budibase/types");var dr=C(require("fs"));async function Ns(e){Ut().process(async t=>{let r=t.data;try{if(r.export)return bO(t,e);if(r.import)return AO(t,e)}catch(a){z.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,a)}})}async function hO(e){await z.db.getDB(e,{skip_setup:!0}).destroy()}async function Vf(e,t,r,a){let n=z.db.getDevAppID(r),o=z.db.getProdAppID(r),s=new Date().toISOString(),i=async(p,f)=>{a?.doc?await at.updateBackupStatus(a.doc.id,p,f?.contents,f?.filename):await at.storeAppBackupMetadata({appId:o,timestamp:s,trigger:e,status:p,name:a?.name,type:De.AppBackupType.BACKUP,contents:f?.contents,createdBy:a?.createdBy},{filename:f?.filename})};try{let p=await a.processing.exportAppFn(n,{tar:!0}),f=await a.processing.statsFn(n),m=`${o}/backup-${s}.tar.gz`,y=z.objectStore.ObjectStoreBuckets.BACKUPS,g=dr.default.createReadStream(p);await z.objectStore.streamUpload({bucket:y,filename:m,stream:g,extra:{type:"application/gzip",metadata:{name:a?.name,trigger:e,timestamp:s,appId:o}}}),await i(De.AppBackupStatus.COMPLETE,{filename:m,contents:f}),dr.default.existsSync(p)&&dr.default.rmSync(p)}catch(p){z.logging.logAlert("App backup error",p),await i(De.AppBackupStatus.FAILED)}}async function AO(e,t){let r=e.data,a=r.appId,n=r.import.backupId,o=r.import.nameForBackup,s=r.import.createdBy,i=z.tenancy.getTenantIDFromAppID(a);return z.tenancy.doInTenant(i,async()=>{let p=z.db.getDevAppID(a),{rev:f}=await at.updateRestoreStatus(r.docId,r.docRev,De.AppBackupStatus.STARTED);await Vf(De.AppBackupTrigger.RESTORING,i,a,{processing:t,createdBy:s,name:o});let m=await at.downloadAppBackup(n);await hO(p);let y=De.AppBackupStatus.COMPLETE;try{await t.importAppFn(p,z.db.getDB(p),{file:{type:"application/gzip",path:m},key:m})}catch(g){z.logging.logAlert("App restore error",g),y=De.AppBackupStatus.FAILED}await at.updateRestoreStatus(r.docId,f,y),dr.default.existsSync(m)&&dr.default.rmSync(m,{force:!0})})}async function bO(e,t){let r=e.data,a=r.appId,n=r.export.trigger,o=r.export.name,s=z.tenancy.getTenantIDFromAppID(a);await z.tenancy.doInTenant(s,async()=>{try{let{rev:i}=await at.updateBackupStatus(r.docId,De.AppBackupStatus.STARTED);return Vf(n,s,a,{processing:t,doc:{id:r.docId,rev:i},name:o})}catch(i){z.logging.logAlert("App backup error",i)}})}var IO=async e=>{Qf(),await Ns(e.processing)},ve={...at,processing:Bs,init:IO,getBackupQueue:Ut};var Yf=async e=>{e.backups&&await ve.init(e.backups)};var de={};w(de,{create:()=>fM,find:()=>dM,get:()=>lM,remove:()=>gM,update:()=>mM});var yA=C(Ci()),nt=require("@budibase/backend-core");var hA=require("@budibase/types");async function lM(e){let t=nt.tenancy.getGlobalDB(),r=new nt.db.QueryBuilder(t.name,hA.SearchIndex.USER);r.setIndexBuilder(nt.db.searchIndexes.createUserIndex),r.setLimit(e.pageSize),r.addEqual("scimInfo.isSync",!0);for(let[n,o]of Object.entries(e.filters?.equal??{}))r.addEqual(n,o);r.setSort("_id"),r.setSkip(e.skip);let a=await r.run();return{users:a.rows,total:a.totalRows}}async function dM(e){return await nt.users.getById(e)}async function fM(e){let t=await $e.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new nt.HTTPError("User is already synched",409);e={...t,scimInfo:(0,yA.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await $e.save(e,{requirePassword:!1})}async function mM(e,t){return await $e.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}async function gM(e){return await $e.destroy(e)}var Ar={};w(Ar,{create:()=>yM});var AA=C(Ci());var bA=require("@budibase/backend-core");async function yM(e){let t=await oo(e.name),r;if(!t)r=(await Q.save(e)).id;else{if(t.scimInfo?.isSync)throw new bA.HTTPError("Group is already synched",409);r=t._id,t.users&&(await Q.removeUsers(r,t.users.map(n=>n._id)),delete t.users),t.scimInfo=(0,AA.default)(t.scimInfo,e.scimInfo),await Q.save(t)}return await Q.get(r)}var Nt={};w(Nt,{logRequest:()=>hM,logResponse:()=>AM});var qi=require("@budibase/backend-core");async function hM(e){qi.logging.logWarn("SCIM request log",e)}async function AM(e){qi.logging.logWarn("SCIM response error",e)}var Gi={};w(Gi,{doInScimContext:()=>Di,feature:()=>j,internalGroupOnly:()=>kn,licenseAuth:()=>wA,licensing:()=>IA,requireSCIM:()=>Ni,scimGroupOnly:()=>Ta,scimUserOnly:()=>wa});var yt=require("@budibase/backend-core");var Mn=require("@budibase/types"),bM=(e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(yt.env.SELF_HOSTED&&yt.env.DEFAULT_LICENSE)return t.user.license=io,r();t.user.license=await Fe.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(yt.utils.isServingApp(t)||yt.utils.isServingBuilder(t)||yt.utils.isServingBuilderPreview(t)||yt.utils.isPublicApiRequest(t))&&await We.usageLimitIsExceeded(Mn.StaticQuotaName.USERS,Mn.QuotaUsageType.STATIC)}return r()},IA=bM;var j={};w(j,{requireFeature:()=>IM,requireFeatures:()=>SM});var IM=e=>async(t,r)=>{await cn(e),await r()},SM=(...e)=>async(t,r)=>{await es(e),await r()};var Gn=require("@budibase/backend-core");var Di=async(e,t)=>(Gn.env.DISABLE_SCIM_CALLS||await Nt.logRequest({...e.request.toJSON(),body:e.request.body}),await Gn.context.doInScimContext(async()=>{let r=await t();return await Nt.logResponse({...e.response.toJSON(),body:e.response.body}),r}));var Ni=async(e,t)=>{await ns(),await t()};var SA=require("@budibase/backend-core");var wa=e=>Bi(SA.users.getById,e,!0),Ta=e=>Bi(M.get,e,!0),kn=e=>Bi(M.get,e,!1);function Bi(e,t,r){return async(a,n)=>{let o=a.params[t];return typeof o!="string"&&a.throw(404),!!(await e(o)).scimInfo?.isSync!==r&&a.throw(404),n()}}var va=require("@budibase/backend-core");var Mi=require("dd-trace");async function wA(e,t){await Mi.tracer.trace("licenseAuth",async r=>{let a=e.request.headers[va.constants.Header.LICENSE_KEY];Array.isArray(a)&&(a=a[0]),r.addTags({licenseKey:a}),a||e.throw(403,"License key not provided");let n=await Ho(a);n||(r.addTags({licenseFound:!1}),e.throw(403,"License not found or invalid")),n.tenantId||e.throw(403,"License does not have a tenant ID"),Mi.tracer.setUser({id:"anonymous",tenantId:n.tenantId}),await va.context.doInSelfHostTenantUsingCloud(n.tenantId,async()=>{await va.context.doInLicenseContext(n,async()=>{await t()})})})}var Yi={};w(Yi,{appBackups:()=>ib,auditLogs:()=>JA,environmentVariables:()=>jA,groups:()=>UA,scim:()=>Mb,users:()=>jb});async function TA(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let a=await qt(t._id);t.roles=a.roles,t.scimInfo=a.scimInfo}let r=await lr(t);e.body={_id:r.id,_rev:r.rev}}async function vA(e){let t=e.params.groupId,r=e.request.body.add,a=e.request.body.remove;(r&&!Array.isArray(r)||a&&!Array.isArray(a))&&e.throw(400,"Must supply a list of users to add or to remove");let n,o;r&&(n=await ms(t,r)),a&&(o=await gs(t,a)),e.body={added:n,removed:o}}async function EA(e){let t=e.params.groupId,r=e.request.body.add,a=e.request.body.remove;(r&&!Array.isArray(r)||a&&!Array.isArray(a))&&e.throw(400,"Must supply a list of objects, with appId and roleId to add or remove"),e.body=await ys(t,{appsToAdd:r,appsToRemove:a})}async function RA(e){e.body={data:await ma()}}async function xA(e){let{groupId:t,rev:r}=e.params;try{await fs(t,r),e.body={message:"Group deleted successfully"}}catch(a){e.throw(a.status,a)}}async function _A(e){try{e.body=await qt(e.params.groupId)}catch(t){e.throw(t.status,t)}}async function OA(e){let{pageSize:t=10,bookmark:r,emailSearch:a}=e.request.query,n=e.params.groupId,o={limit:t+1},s=await Ma(n,{...o,emailSearch:a,bookmark:r}),i=a?s[t]?.email:s[t]?._id,p=!!i;e.body={users:s.slice(0,t),bookmark:i,hasNextPage:p}}async function PA(e){let{groupId:t,appId:r}=e.params;await hs(t,r),e.body={message:"Group app builder access updated."}}async function LA(e){let{groupId:t,appId:r}=e.params;await As(t,r),e.body={message:"group app builder access removed."}}var CA=C(require("@koa/router")),he=C(require("joi"));var Ee=require("@budibase/types"),Ye=require("@budibase/backend-core"),qA=new CA.default;function TM(){return Ye.auth.joiValidator.body(he.default.object({_id:he.default.string().optional(),_rev:he.default.string().optional(),color:he.default.string().required(),icon:he.default.string().required(),name:he.default.string().trim().required().max(50),role:he.default.string().optional(),users:he.default.array().optional(),apps:he.default.array().optional(),roles:he.default.object().optional(),createdAt:he.default.string().optional(),updatedAt:he.default.string().optional()}).required())}qA.post("/api/global/groups",Ye.auth.adminOnly,j.requireFeature(Ee.Feature.USER_GROUPS),TM(),TA).get("/api/global/groups",j.requireFeature(Ee.Feature.USER_GROUPS),RA).delete("/api/global/groups/:groupId/:rev",j.requireFeature(Ee.Feature.USER_GROUPS),Ye.auth.adminOnly,kn("groupId"),xA).get("/api/global/groups/:groupId",j.requireFeature(Ee.Feature.USER_GROUPS),Ye.auth.builderOrAdmin,_A).get("/api/global/groups/:groupId/users",j.requireFeature(Ee.Feature.USER_GROUPS),Ye.auth.builderOrAdmin,OA).post("/api/global/groups/:groupId/users",Ye.auth.adminOnly,j.requireFeature(Ee.Feature.USER_GROUPS),kn("groupId"),vA).post("/api/global/groups/:groupId/apps",Ye.auth.builderOrAdmin,j.requireFeature(Ee.Feature.USER_GROUPS),EA).post("/api/global/groups/:groupId/app/:appId/builder",Ye.auth.builderOrAdmin,j.requireFeatures(Ee.Feature.USER_GROUPS,Ee.Feature.APP_BUILDERS),PA).delete("/api/global/groups/:groupId/app/:appId/builder",Ye.auth.builderOrAdmin,j.requireFeatures(Ee.Feature.USER_GROUPS,Ee.Feature.APP_BUILDERS),LA);var UA=qA;var ki=require("@budibase/types");var Fi=require("@budibase/backend-core");async function DA(e){e.body={encryptionKeyAvailable:Ke.isEncryptionKeyAvailable()}}async function NA(e){e.body={variables:await Ke.fetch()}}async function BA(e){let{name:t,production:r,development:a}=e.request.body;await Ke.update(t,{production:r,development:a});let n=[ki.AppEnvironment.PRODUCTION];r!==a&&n.push(ki.AppEnvironment.DEVELOPMENT),await Fi.events.environmentVariable.created(t,n),e.body={message:`Environment variable "${t}" created.`}}async function MA(e){let{production:t,development:r}=e.request.body,a=e.params.varName;await Ke.update(a,{production:t,development:r}),e.body={message:`Environment variable "${a}" updated.`}}async function GA(e){let t=e.params.varName;await Ke.remove(t),await Fi.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}var Bt=require("@budibase/backend-core"),FA=C(require("@koa/router")),Ea=C(require("joi")),QA=new FA.default;function kA(){return Bt.auth.joiValidator.body(Ea.default.object({name:Ea.default.string().optional(),production:Ea.default.string().required(),development:Ea.default.string().required()}))}QA.get("/api/env/variables/status",Bt.auth.builderOrAdmin,DA).get("/api/env/variables",Bt.auth.builderOrAdmin,NA).post("/api/env/variables",Bt.auth.builderOrAdmin,kA(),BA).patch("/api/env/variables/:varName",Bt.auth.builderOrAdmin,kA(),MA).delete("/api/env/variables/:varName",Bt.auth.builderOrAdmin,GA);var jA=QA;var Qi=require("@budibase/backend-core");async function WA(e){let t=e.request.body,r=await gt.fetch(t);await Qi.events.auditLog.filtered(t),e.body=r}async function $A(e){let t=e.request.body,{stream:r}=gt.download(t);await Qi.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}async function KA(e){e.body={events:gt.definitions()}}var YA=require("@budibase/types"),Mt=require("@budibase/backend-core"),HA=C(require("@koa/router")),Re=C(require("joi"));function VA(){return Mt.auth.joiValidator.body(Re.default.object({userIds:Re.default.array().items(Re.default.string()).optional(),appIds:Re.default.array().items(Re.default.string()).optional(),events:Re.default.array().items(Re.default.string().valid(...Object.values(YA.Event))).optional(),startDate:Re.default.string().optional().allow(""),endDate:Re.default.string().optional().allow(""),fullSearch:Re.default.string().optional().allow(""),bookmark:Re.default.number()}))}var zA=new HA.default;zA.post("/api/global/auditlogs/search",Mt.auth.adminOnly,VA(),WA).get("/api/global/auditlogs/download",Mt.auth.adminOnly,Mt.middleware.querystringToBody,VA(),$A).get("/api/global/auditlogs/definitions",Mt.auth.adminOnly,KA);var JA=zA;var ji=require("@budibase/types");var XA=require("@budibase/backend-core");async function br(e,t){await Kt.appExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}async function ZA(e){let t=e.params.appId;await br(e,t);let r=e.request.body,a=e.user?._id,n=await ve.triggerAppBackup(t,ji.AppBackupTrigger.MANUAL,{name:r.name,createdBy:a});n||e.throw(500,"Unable to start backup."),e.body={backupId:n,message:"Backup triggered - process starting."}}async function eb(e){let t=e.params.appId;await br(e,t);let r=e.params.backupId,a=e.request.body.name,n=await ve.triggerAppRestore(t,r,a,e.user?._id);n||e.throw(500,"Unable to start restore."),await XA.events.backup.appBackupRestored(n.metadata),e.body={restoredId:n?.restoreId,message:"Restore triggered - process starting."}}async function tb(e){let t=e.params.appId;await br(e,t);let r=e.params.backupId;await ve.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}async function rb(e){let t=e.params.appId;await br(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(ji.AppBackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await ve.fetchAppBackups(t,{paginate:!0,...r})}async function ab(e){let t=e.params.appId;await br(e,t);let r=e.params.backupId,a=e.request.body;e.body=await ve.updateAppBackup(r,a.name)}async function nb(e){let t=e.params.appId;await br(e,t);let r=e.params.backupId,{metadata:a,stream:n}=await ve.getBackupDownloadStream(r);e.attachment(`backup-${a.timestamp}.tar.gz`),e.body=n}var ob=C(require("@koa/router")),Gt=C(require("joi")),Fn=require("@budibase/types"),ht=require("@budibase/backend-core"),sb=new ob.default;function xM(){return ht.auth.joiValidator.body(Gt.default.object({trigger:Gt.default.string().valid(...Object.values(Fn.AppBackupTrigger)),type:Gt.default.string().valid(...Object.values(Fn.AppBackupType)),startDate:Gt.default.date(),endDate:Gt.default.date(),page:Gt.default.string()}))}sb.post("/api/apps/:appId/backups",ht.auth.builderOrAdmin,ZA).post("/api/apps/:appId/backups/search",ht.auth.builderOrAdmin,xM(),rb).get("/api/apps/:appId/backups/:backupId/file",ht.auth.builderOrAdmin,nb).patch("/api/apps/:appId/backups/:backupId",ht.auth.builderOrAdmin,ab).delete("/api/apps/:appId/backups/:backupId",ht.auth.builderOrAdmin,tb).post("/api/apps/:appId/backups/:backupId/import",ht.auth.builderOrAdmin,eb);var ib=sb;var Bb=C(require("@koa/router"));var Qn=require("scim-patch");var pb=require("@budibase/backend-core");function ub(e,t){let r=e.request.query[t];if(r!==void 0)return+r}var cb=async e=>{let t=ub(e,"pageSize")??20,r=ub(e,"startIndex"),a;e.request.query.filter&&(a=K.user.userFilters(e.request.query.filter));let n=await de.get({pageSize:t,skip:r,filters:a});e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:n.total,Resources:n.users.map(K.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},lb=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await de.find(t);e.body=K.user.toScimUserResponse(r)},fb=async e=>{let t=K.user.fromScimUser(e.request.body);try{let r=await de.create(t);e.body=K.user.toScimUserResponse(r)}catch(r){throw r instanceof pb.EmailUnavailableError&&e.throw(409,"Email already in use"),r}};function _M(e){let t=e.Operations.find(r=>(r.op==="Replace"||r.op==="replace")&&r.path==="active");return t?t.value===!1||t.value?.toLowerCase?.()==="false":!1}var mb=async e=>{let t=await de.find(e.params.id);t||e.throw(404);let r=K.user.toScimUserResponse(t),a=e.request.body;try{(0,Qn.patchBodyValidation)(a)}catch{}if(_M(a))return Wi(e);let n;try{n=(0,Qn.scimPatch)(r,a.Operations)}catch{}n||e.throw(500);let o=K.user.fromScimUser(n);await de.update(o,{allowChangingEmail:!0}),e.body=K.user.toScimUserResponse(o)},Wi=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await de.remove(t),e.status=204};var Ob=C(_b()),Pb=require("@budibase/shared-core"),jn=require("scim-patch");var Wn=require("scim2-parse-filter");function Lb(e,t){for(let r of t.split(","))delete e[r]}var Cb=async e=>{let r=(await Q.fetch()).filter(o=>o.scimInfo?.isSync).map(K.group.toScimGroupResponse),{filter:a,excludedAttributes:n}=e.request.query;if(a){let o=(0,Wn.filter)((0,Wn.parse)(a));r=r.filter(o)}n&&r.forEach(o=>{Lb(o,n)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},qb=async e=>{let t=K.group.fromScimGroup(e.request.body),r=await Ar.create(t);e.body=K.group.toScimGroupResponse(r)},Ub=async e=>{let{id:t}=e.params,r=await Q.get(t),a=K.group.toScimGroupResponse(r),{excludedAttributes:n}=e.request.query;n&&Lb(a,n),e.body=a},Db=async e=>{let{id:t}=e.params,r=await Q.get(t);await Q.remove(t,r._rev),e.status=204},Nb=async e=>{let{id:t}=e.params,r=await Q.get(t),a=K.group.toScimGroupResponse(r),n=e.request.body;try{(0,jn.patchBodyValidation)(n)}catch{e.throw(400)}let{true:o,false:s}=(0,Ob.default)(n.Operations,i=>i.path==="members");if(s?.length){let i=(0,jn.scimPatch)(a,s);i||e.throw(500);let p={...K.group.fromScimGroup(i),_rev:r._rev};await Q.save(p)}if(o?.length){let i=[],p=[];for(let{op:f,value:m}of o)switch(f){case"add":case"Add":for(let y of m)i.push(await de.find(y.value));break;case"remove":case"Remove":for(let y of m)p.push(await de.find(y.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:Pb.utils.unreachable(f)}i.length&&await Q.addUsers(t,i.map(f=>f._id)),p.length&&await Q.removeUsers(t,p.map(f=>f._id))}e.body=K.group.toScimGroupResponse(await Q.get(t))};var Ra=require("@budibase/types"),Ae=new Bb.default({prefix:"/api/global/scim/v2"});Ae.use(Ni);Ae.use(Di);Ae.get("/users",cb);Ae.get("/users/:id",wa("id"),lb);Ae.post("/users",fb);Ae.patch("/users/:id",wa("id"),mb);Ae.delete("/users/:id",wa("id"),Wi);Ae.get("/groups",Cb);Ae.post("/groups",j.requireFeature(Ra.Feature.USER_GROUPS),qb);Ae.get("/groups/:id",j.requireFeature(Ra.Feature.USER_GROUPS),Ta("id"),Ub);Ae.delete("/groups/:id",j.requireFeature(Ra.Feature.USER_GROUPS),Ta("id"),Db);Ae.patch("/groups/:id",j.requireFeature(Ra.Feature.USER_GROUPS),Ta("id"),Nb);var Mb=Ae;var Fb=C(require("@koa/router"));var $i=require("@budibase/backend-core");async function Gb(e){let{userId:t,appId:r}=e.params,a=await tt.db.getUser(t);if($i.users.isGlobalBuilder(a)){e.body={message:"User already admin - no permissions updated."};return}await tt.addAppBuilder(a,r),e.body={message:`User "${a.email}" app builder access updated.`}}async function kb(e){let{userId:t,appId:r}=e.params,a=await tt.db.getUser(t);if($i.users.isGlobalBuilder(a)){e.body={message:"User already admin - no permissions removed."};return}await tt.removeAppBuilder(a,r),e.body={message:`User "${a.email}" app builder access removed.`}}var Ki=require("@budibase/types"),Vi=require("@budibase/backend-core"),Qb=new Fb.default;Qb.post("/api/global/users/:userId/app/:appId/builder",Vi.auth.builderOrAdmin,j.requireFeatures(Ki.Feature.APP_BUILDERS),Gb).delete("/api/global/users/:userId/app/:appId/builder",Vi.auth.builderOrAdmin,j.requireFeatures(Ki.Feature.APP_BUILDERS),kb);var jb=Qb;var K={};w(K,{group:()=>zi,user:()=>Hi});var Hi={};w(Hi,{fromScimUser:()=>aG,toScimUserResponse:()=>eG,userFilters:()=>nG});var $n=require("@budibase/types"),Wb=require("scim2-parse-filter"),$b=require("@budibase/backend-core"),Kb=require("@budibase/shared-core"),{unreachable:ZM}=Kb.utils,eG=e=>{let{isSync:t,roles:r,...a}=e.scimInfo||{},n={...a,schemas:["urn:ietf:params:scim:schemas:core:2.0:User"],id:e._id,meta:{resourceType:"User",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},active:e.status===$n.UserStatus.ACTIVE};return(e.firstName||e.lastName)&&(n.name={formatted:[e.firstName,e.lastName].filter(o=>o).join(" "),familyName:e.lastName,givenName:e.firstName}),n},tG=e=>!!e?.id;function rG(e){if($b.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}var aG=e=>{let t=tG(e)?e:void 0,r=rG(e);if(!r)throw new Error("Email is required");let a;switch(e.active){case"True":case"true":case!0:a=!0;break;case"False":case"false":case!1:a=!1;break;default:ZM(e.active)}let n,o;return e.name?.givenName?(n=e.name?.givenName,o=e.name?.familyName):n=e.displayName,{tenantId:"",_id:t?.id,userId:t?.id,email:r,firstName:n,lastName:o,scimInfo:{...e,isSync:!0},roles:{},status:a?$n.UserStatus.ACTIVE:$n.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},nG=e=>{let t={equal:{}},r=(0,Wb.parse)(e);function a(n){switch(n.op){case"eq":{let o=n.attrPath,s;switch(o){case"emails.value":s="email";break;default:s=`scimInfo.${o}`}t.equal[s]=n.compValue;break}case"and":for(let o of n.filters)a(o);break;default:console.warn("Filter not handled",{filter:n})}}return a(r),t};var zi={};w(zi,{fromScimGroup:()=>iG,toScimGroupResponse:()=>oG});var oG=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}))}),sG=e=>!!e?.id,iG=e=>{let t=sG(e)?e:void 0;return{_id:t?.id,name:e.displayName,scimInfo:{externalId:e.externalId,isSync:!0},icon:"UserGroup",color:"var(--spectrum-global-color-blue-600)",createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}};var bu={};w(bu,{LLMRequest:()=>V,TableGeneration:()=>Au,agentHistoryTitleSystemPrompt:()=>hG,agentSystemPrompt:()=>yG,aiColumnSchemas:()=>yu,aiTableResponseToTableSchema:()=>du,appendAIColumns:()=>fu,classifyText:()=>Xi,cleanData:()=>Zi,generateAIColumns:()=>cu,generateCode:()=>gG,generateCronExpression:()=>eu,generateData:()=>lu,generateJs:()=>nu,generateSQL:()=>mG,generateTables:()=>pu,generationStructure:()=>gu,getLLM:()=>_a,getLLMConfig:()=>uu,getLLMOrThrow:()=>eI,parseResponseFormat:()=>ou,sanitiseToolName:()=>uG,searchWeb:()=>au,sentimentAnalysis:()=>ru,summarizeText:()=>Kn,tableDataStructuredOutput:()=>hu,translate:()=>tu});function uG(e){if(e.length>64)throw new Error("Tool name must be under 64 characters long");return e.replace(/[^a-zA-Z0-9_-]/g,"_")}var ze=require("@budibase/backend-core"),zb=require("@budibase/types");var Yb=C(require("openai"));var At=require("@budibase/types");var Vb=require("@budibase/shared-core");var bt=C(require("dd-trace"));function Ji(e,t){return t.map(r=>e[r]).join(" ")}var It=class{constructor({model:t,apiKey:r,maxTokens:a}){this._model=t,this._apiKey=r,this._maxTokens=a??parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"300")}get model(){return this._model}get apiKey(){return this._apiKey}get maxTokens(){return this._maxTokens}async prompt(t){return await bt.default.trace("prompt",async()=>{let r=typeof t=="string"?new V().addUserMessage(t):t,{messages:a,tokensUsed:n}=await bt.default.trace("chatCompletion",()=>this.chatCompletion(r));return!a||a.length===0?{message:"",tokensUsed:n}:{message:a[a.length-1].content||"",tokensUsed:n}})}async chat(t){return await bt.default.trace("chat",async()=>await this.chatCompletion(t))}async summarizeText(t){return bt.default.trace("summarizeText",()=>this.prompt(Kn(t)))}async generateCronExpression(t){return bt.default.trace("generateCronExpression",()=>this.prompt(eu(t)))}async operation(t,r){return bt.default.trace("operation",a=>{a.addTags({operation:t.operation,rowId:r.id});let n=this.promptForOperation(t,r);return this.prompt(n)})}promptForOperation(t,r){let{operation:a,column:n,columns:o,language:s,categories:i,prompt:p}=t;switch(a){case At.AIOperationEnum.SUMMARISE_TEXT:return Kn(Ji(r,o));case At.AIOperationEnum.CLEAN_DATA:return Zi(r[n]);case At.AIOperationEnum.TRANSLATE:return tu(r[n],s);case At.AIOperationEnum.CATEGORISE_TEXT:if(!i)throw Error("No categories provided for categorise text operation. Please provide categories.");return Xi(Ji(r,o),i.split(","));case At.AIOperationEnum.SENTIMENT_ANALYSIS:return ru(r[n]);case At.AIOperationEnum.PROMPT:return p;case At.AIOperationEnum.SEARCH_WEB:return au(Ji(r,o));default:throw Vb.utils.unreachable(a)}}async generateJs(t,r){return await bt.default.trace("generateJs",async()=>{let{bindings:a=[],snippets:n=[]}=r||{};return await this.prompt(nu(a,n).addUserMessage(t))})}};var Hb=require("openai/helpers/zod");function ou(e){if(e)return e==="text"?{type:"text"}:e==="json"?{type:"json_object"}:e}function pG(e){if(!e)return 0;let t=e.prompt_tokens;return e.completion_tokens*3+t}var ot=class extends It{constructor(r){super(r);if(!r.apiKey)throw new Error("No OpenAI API key found");this.client=new Yb.default({apiKey:r.apiKey})}async chatCompletion(r){let a={model:this.model,messages:r.messages,max_tokens:this.maxTokens,response_format:ou(r.format)};r.tools&&r.tools.length>0&&(a.tool_choice="auto",a.tools=r.tools.map(Hb.zodFunction));let n=await this.client.chat.completions.create(a),o=n.choices[0]?.message;if(o?.tool_calls){r.addMessage(o);let s=[];for(let i of o.tool_calls){let p=r.findTool(i.function.name);if(!p)throw new Error(`Tool ${i.function.name} not found in prompt tools`);let f=JSON.parse(i.function.arguments);s.push(p.handler(f).then(m=>({role:"tool",tool_call_id:i.id,content:m})))}return r.addMessages(await Promise.all(s)),this.chatCompletion(r)}else{if(o?.content)return{messages:[...r.messages,{role:o.role,content:o.content}],tokensUsed:pG(n.usage)};throw new Error("No response found")}}};var He=require("@budibase/backend-core");var su=require("dd-trace"),Vn=class extends It{async prompt(t){let r=await super.prompt(t);return r.tokensUsed&&await yn(r.tokensUsed),r}async chat(t){let r=await super.chat(t);return r.tokensUsed&&await yn(r.tokensUsed),r}async chatCompletion(t){return He.env.SELF_HOSTED?this.chatCompletionSelfHost(t):this.chatCompletionCloud(t)}async chatCompletionCloud(t){return await su.tracer.trace("chatCompletionCloud",async()=>await new ot({apiKey:He.env.OPENAI_API_KEY,model:this.model,maxTokens:this.maxTokens}).chatCompletion(t))}async chatCompletionSelfHost(t){return await su.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 o=await Xo();if(!o)throw new Error("No license key found");this._apiKey=o,r.addTags({licenseKey:this._apiKey})}let a={messages:t.messages,format:t.format,useTools:t.tools.length>0},n=await fetch(`${He.env.BUDICLOUD_URL}/api/ai/chat`,{method:"POST",headers:{"Content-Type":"application/json",[He.constants.Header.LICENSE_KEY]:this._apiKey},body:JSON.stringify(a)});if(!n.ok)throw await He.HTTPError.fromResponse(n);return await n.json()})}};var xa=require("dd-trace");var iu=C(require("@anthropic-ai/sdk"));function cG(e){if(!e)return 0;let t=e.input_tokens;return e.output_tokens*3+t}var Yn=class extends It{constructor(r){super(r);this.client=new iu.default({apiKey:r.apiKey})}firstTextBlock(r){for(let a of r.content)if(a.type==="text")return a.text}async chatCompletion(r){try{let a=await this.client.messages.create({model:this.model,messages:r.messages.map(({content:o})=>({role:"user",content:o||""})),max_tokens:this.maxTokens}),n=this.firstTextBlock(a)||"";return{messages:[...r.messages,{role:"assistant",content:n}],tokensUsed:cG(a.usage)}}catch(a){throw a instanceof iu.default.APIError&&console.error(`Anthropic Prompt failed with error ${a.name} and status: ${a.status}`),a}}};var Jb=require("zod"),Xb=require("openai/helpers/zod"),Zb="gpt-4o-mini",lG={OpenAI:ot,TogetherAI:ot,AzureOpenAI:ot,Custom:ot,Anthropic:Yn,BudibaseAI:Vn};async function dG(){return await xa.tracer.trace("getAIConfig",async e=>{let t={type:zb.ConfigType.AI,config:{}};if(!ze.context.isSelfHostUsingCloud()){let a=await ze.configs.getAIConfig();a&&(t=a)}await os(t);let r=Object.values(t.config).find(a=>a.active&&a.isDefault);if(!r){e.addTags({enabled:!1,reason:"no provider found"});return}return e.addTags({enabled:!0}),{provider:r.provider,model:r.defaultModel||Zb,apiKey:r.apiKey}})}async function fG(){return xa.tracer.trace("getSelfHostOpenAIKeyConfig",e=>{if(!ze.env.SELF_HOSTED){e.addTags({enabled:!1,reason:"not self host"});return}if(!ze.env.OPENAI_API_KEY){e.addTags({enabled:!1,reason:"no OPENAI_API_KEY"});return}return e.addTags({enabled:!0}),{provider:"OpenAI",model:Zb,apiKey:ze.env.OPENAI_API_KEY}})}async function uu(){return xa.tracer.trace("getLLMConfig",async()=>await dG()||await fG())}async function _a(e){return await xa.tracer.trace("getLLM",async t=>{let{model:r,maxTokens:a}=e||{},n=await uu();if(!n){t.addTags({enabled:!1,reason:"no config found"});return}r&&(n.model=r),a&&(n.maxTokens=a);let o=lG[n.provider];if(!o){t.addTags({enabled:!1,reason:"no provider found",provider:n.provider});return}return new o(n)})}async function eI(){let e=await _a();if(!e)throw new ze.HTTPError("No available LLM configurations",500);return e}var V=class e{constructor(){this.messages=[];this.tools=[]}addTool(t){return this.tools.push(t),this}addTools(t){return this.tools.push(...t),this}findTool(t){return this.tools.find(r=>r.name===t)}withFormat(t){return t instanceof Jb.z.ZodType?this.format=(0,Xb.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}};function Kn(e){return new V().addUserMessage(`Summarize this text:
|
|
39
39
|
${e}.
|
|
40
|
-
Only return the summary.`)}function
|
|
40
|
+
Only return the summary.`)}function Xi(e,t){return new V().addUserMessage(`Return the category of this text: "${e}". Based on these categories: ${t.join(", ")}. Only return the category.`)}function Zi(e){return new V().addUserMessage(`Clean the following string: "${e}". Remove any spelling mistakes or data issues. Only return the cleaned string itself and nothing else.`)}function mG(e,t){return new V().addUserMessage(`Given the table schema:
|
|
41
41
|
${t}
|
|
42
42
|
|
|
43
43
|
Generate a SQL query for the following request:
|
|
44
44
|
${e}.
|
|
45
|
-
Only provide the SQL.`)}function
|
|
45
|
+
Only provide the SQL.`)}function gG(e){return new V().addUserMessage(`Generate JavaScript code for the following request:
|
|
46
46
|
${e}.
|
|
47
|
-
Only provide the JS and nothing else.`)}function
|
|
48
|
-
${e}`)}function
|
|
47
|
+
Only provide the JS and nothing else.`)}function eu(e){return new V().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:
|
|
48
|
+
${e}`)}function tu(e,t){return new V().addUserMessage(`Translate the following text: "${e}" into ${t}. Only return the translation.`)}function ru(e){return new V().addUserMessage(`Return the sentiment of this text: "${e}". Only return the sentiment.`)}function au(e){return new V().addUserMessage(`Search the web for the following: "${e}". Only return the top results.`)}function nu(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:
|
|
49
49
|
|
|
50
50
|
${e.map(({readableBinding:n})=>`- $("${n}")`).join(`
|
|
51
51
|
`)}`);let a="You do not have access to any snippets in this request.";return t.length>0&&(a=`The snippets you have access to are:
|
|
52
52
|
|
|
53
53
|
${t.map(({name:n,code:o})=>{let s=o.replace(/^\s*return /g,"");return`- snippets.${n} = ${s.trim()}`}).join(`
|
|
54
|
-
`)}`),new
|
|
54
|
+
`)}`),new V().addSystemMessage(`
|
|
55
55
|
You are a helpful expert in writing JavaScript. A user is asking you for help
|
|
56
56
|
writing some JavaScript for their application.
|
|
57
57
|
|
|
@@ -140,7 +140,7 @@ a variable, it will be provided to you as a binding.
|
|
|
140
140
|
|
|
141
141
|
${a}
|
|
142
142
|
|
|
143
|
-
${r}`)}function
|
|
143
|
+
${r}`)}function pu(){let e=`
|
|
144
144
|
You are generating Budibase table schemas from user prompts.
|
|
145
145
|
Always return at least 2 tables, and define only one side of relationships using a link field.
|
|
146
146
|
Exclude id, created_at, and updated_at (Budibase adds them).
|
|
@@ -148,10 +148,10 @@ Include a variety of column types: text, dropdown, date, number.
|
|
|
148
148
|
Add at least one formula column, one attachment, and one multi-attachment column across the tables.
|
|
149
149
|
Budibase handles reverse relationships and many-to-many links \u2014 never define join tables or reverse fields.
|
|
150
150
|
You may specify foreignColumnName, but do not create that field manually.
|
|
151
|
-
`;return new
|
|
151
|
+
`;return new V().addSystemMessage(e)}function cu(){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 V().addSystemMessage(e)}function lu(){let e=`
|
|
152
152
|
For each table, populate the data field with realistic-looking sample records.
|
|
153
153
|
Avoid placeholder values like "foo" or "bar". Use real names, emails, etc., and ensure values are unique across rows.
|
|
154
|
-
`;return new
|
|
154
|
+
`;return new V().addSystemMessage(e)}function yG(e){return`You are a helpful support agent, using workflows to solve problems for users.
|
|
155
155
|
The user is asking you for help with a support query.
|
|
156
156
|
|
|
157
157
|
Your reply MUST be short and concise, answering the user's query as quickly and
|
|
@@ -168,15 +168,15 @@ Avoid placeholder values like "foo" or "bar". Use real names, emails, etc., and
|
|
|
168
168
|
Information about the user making the request can be found below:
|
|
169
169
|
\`\`\`
|
|
170
170
|
${JSON.stringify(e)}
|
|
171
|
-
\`\`\``}function
|
|
171
|
+
\`\`\``}function hG(){return`You will be provided with a set of history, a conversation between a user and an AI. Using this
|
|
172
172
|
information generate a title for the conversation, this should start with a capital letter and MUST be
|
|
173
|
-
less than five words.`}var
|
|
173
|
+
less than five words.`}var Oa=require("@budibase/backend-core"),aI=require("@budibase/shared-core");var st=require("@budibase/types"),tI=require("@budibase/backend-core");function du(e){let t=[],r=[];for(let a of e.tables){let n=a.schema.reduce((o,s)=>{if(s.type===st.FieldType.LINK){if(!r.includes(s.relationshipId)){let i={[st.RelationshipType.MANY_TO_ONE]:st.RelationshipType.ONE_TO_MANY,[st.RelationshipType.ONE_TO_MANY]:st.RelationshipType.MANY_TO_ONE,[st.RelationshipType.MANY_TO_MANY]:st.RelationshipType.MANY_TO_MANY},{reverseFieldName:p,relationshipId:f,...m}=s;o[s.name]={...m,fieldName:p,relationshipType:i[s.relationshipType]},r.push(f)}}else o[s.name]=s;return o},{});t.push({_id:tI.docIds.generateTableID(),name:a.name,primaryDisplay:a.primaryDisplay,schema:n})}return t}function fu(e,t){let r=[];for(let a of e)r.push({...a,schema:{...a.schema,...t[a.name]?.reduce((n,o)=>(n[o.name]=o,n),{})}});return r}var T=require("@budibase/types"),A=require("zod"),ue=A.z.object({name:A.z.string().describe("A human readable name for the field. It MUST be alpha-numeric and capitalised.")}),mu=ue.extend({type:A.z.literal(T.FieldType.LINK),tableId:A.z.string().describe("This must match one of the generated table names"),reverseFieldName:A.z.string().describe("Only the *name* of the field that will appear in the foreign table. Budibase creates this automatically. Do not define the column yourself."),relationshipId:A.z.string().describe("The ID of the relationship. It must be used in pairs, paring many-to-ones and one-to-manys, or many-to-manys with each other.")}),AG=A.z.array(A.z.union([ue.extend({type:A.z.enum([T.FieldType.STRING,T.FieldType.NUMBER,T.FieldType.BOOLEAN,T.FieldType.LONGFORM]),constraints:A.z.object({presence:A.z.boolean()}).optional()}),mu.extend({relationshipType:A.z.enum([T.RelationshipType.MANY_TO_ONE])}).describe("Many-to-one relationship, where the current table is the 'many' side. Defines the initiating side of the relationship. Only this side should be defined. The reverse column will be created automatically."),mu.extend({relationshipType:A.z.enum([T.RelationshipType.ONE_TO_MANY])}).describe("One-to-many relationship, where the current table is the 'one' side. Defines the initiating side of the relationship. Only this side should be defined. The reverse column will be created automatically."),mu.extend({relationshipType:A.z.enum([T.RelationshipType.MANY_TO_MANY])}).describe("Many to many relationship. Defines the initiating side of the relationship. Only this side should be defined. The reverse column will be created automatically."),ue.extend({type:A.z.literal(T.FieldType.OPTIONS),constraints:A.z.object({inclusion:A.z.array(A.z.string()).describe("The options for the field"),presence:A.z.boolean()})}).describe("A single option from closed set of options"),ue.extend({type:A.z.literal(T.FieldType.ARRAY),constraints:A.z.object({inclusion:A.z.array(A.z.string()).describe("The options for the field"),presence:A.z.boolean(),type:A.z.literal(T.JsonFieldSubType.ARRAY)}).describe("Multiple selected options from closed set of options")}),ue.extend({type:A.z.literal(T.FieldType.FORMULA),formula:A.z.string().describe(`
|
|
174
174
|
A JavaScript expression using only previously defined fields.
|
|
175
175
|
Reference fields using $("Field name"). Must end with: return ...
|
|
176
176
|
Example: return $("Score") + $("Weight")
|
|
177
|
-
`),responseType:A.z.enum([
|
|
177
|
+
`),responseType:A.z.enum([T.FieldType.STRING,T.FieldType.NUMBER,T.FieldType.BOOLEAN,T.FieldType.DATETIME])}).describe("Define these types after the other types"),ue.extend({type:A.z.literal(T.FieldType.DATETIME),ignoreTimezones:A.z.boolean()}).describe("A datetime field, storing date and time"),ue.extend({type:A.z.literal(T.FieldType.DATETIME),ignoreTimezones:A.z.boolean(),timeOnly:A.z.literal(!0)}).describe("A time only field"),ue.extend({type:A.z.literal(T.FieldType.DATETIME),ignoreTimezones:A.z.boolean(),dateOnly:A.z.literal(!0)}).describe("A date only field"),ue.extend({type:A.z.literal(T.FieldType.ATTACHMENT_SINGLE),subtype:A.z.literal(T.AttachmentSubType.IMAGE)}).describe("Single image column"),ue.extend({type:A.z.literal(T.FieldType.ATTACHMENT_SINGLE)}).describe("Single attachment column. It stores a single document: pdf, word, etc. Use an appropriate name for the column, like 'Invoice', 'Document', etc."),ue.extend({type:A.z.literal(T.FieldType.ATTACHMENTS),subtype:A.z.literal(T.AttachmentSubType.IMAGE)}).describe("Multiple images column. Use an appropiate name for the columns, like 'Gallery', 'Photos', etc."),ue.extend({type:A.z.literal(T.FieldType.ATTACHMENTS)}).describe("Multiple attachments column. It might hold different kind of documents mixed up: pdf, txt, etc. Use an appropiate name for the columns, like 'Invoices', 'Documents', 'Attachments', etc.")])),gu=A.z.object({tables:A.z.array(A.z.object({name:A.z.string(),schema:AG,primaryDisplay:A.z.string().describe("The column will be used as display, so pick the clearer option. This must match EXACTLY one of the created fields names in the schema.")}))});function yu(e){let t=A.z.object({});for(let r of e){let a=Object.values(r.schema),n=[ue.extend({type:A.z.literal(T.FieldType.AI),operation:A.z.literal(T.AIOperationEnum.TRANSLATE),column:A.z.enum(a.filter(o=>[T.FieldType.STRING,T.FieldType.LONGFORM].includes(o.type)).map(o=>o.name)).describe("The columns to translate"),language:A.z.string()}).describe("This column will be autogenerated via AI to translate one column. Use it for reasonable cases, like translating descriptions or similar."),ue.extend({type:A.z.literal(T.FieldType.AI),operation:A.z.literal(T.AIOperationEnum.CATEGORISE_TEXT),columns:A.z.array(A.z.enum(a.filter(o=>[T.FieldType.STRING,T.FieldType.LONGFORM,T.FieldType.BOOLEAN,T.FieldType.NUMBER,T.FieldType.DATETIME].includes(o.type)).map(o=>o.name))).describe("The columns to be used as context"),categories:A.z.string().describe("CSV list of categories")}).describe("This column will be autogenerated via AI to categorise a row based on one or many columns.")];a.some(o=>o.type===T.FieldType.LONGFORM)&&n.push(ue.extend({type:A.z.literal(T.FieldType.AI),operation:A.z.literal(T.AIOperationEnum.SUMMARISE_TEXT),columns:A.z.array(A.z.enum(a.filter(o=>[T.FieldType.STRING,T.FieldType.LONGFORM].includes(o.type)).map(o=>o.name))).describe("Columns, from the current table, to be passed in the context. Use at least one.")}).describe("This column will be autogenerated via AI to summarise one or many columns.")),t=t.extend({[r.name]:A.z.array(A.z.union(n))})}return t}var k=require("zod"),rI=require("@budibase/shared-core"),U=require("@budibase/types");function hu(e){let t=k.z.object({});for(let r of e){let a={_id:k.z.string().describe("Unique ID for the row")},n=k.z.union([k.z.literal("https://picsum.photos/600/600").describe("For profile pictures and similar"),k.z.literal("https://picsum.photos/1920/1080").describe("For anything else")]),o=k.z.object({fileName:k.z.string(),extension:k.z.enum([".pdf",".txt"]),content:k.z.string().describe("Random content for the file")});for(let s of Object.values(r.schema)){let{type:i}=s;switch(i){case U.FieldType.STRING:case U.FieldType.LONGFORM:a[s.name]=k.z.string();break;case U.FieldType.NUMBER:case U.FieldType.BIGINT:a[s.name]=k.z.number();break;case U.FieldType.BOOLEAN:a[s.name]=k.z.boolean();break;case U.FieldType.DATETIME:a[s.name]=k.z.string().describe(`ISO datetime. Use realistic dates, based on today's date, ${new Date().toISOString()}`);break;case U.FieldType.ATTACHMENT_SINGLE:s.subtype===U.AttachmentSubType.IMAGE?a[s.name]=n:a[s.name]=o;break;case U.FieldType.ATTACHMENTS:s.subtype===U.AttachmentSubType.IMAGE?a[s.name]=k.z.array(n):a[s.name]=k.z.array(o),a[s.name]=a[s.name].describe("Between 2 and 5 items.");break;case U.FieldType.OPTIONS:a[s.name]=k.z.enum(s.constraints.inclusion);break;case U.FieldType.LINK:{let p=k.z.string().describe(`Match one of the _ids created for table "${s.tableId}"`);s.relationshipType===U.RelationshipType.ONE_TO_MANY?a[s.name]=k.z.array(p).describe("Array with a single item"):s.relationshipType===U.RelationshipType.MANY_TO_MANY&&(a[s.name]=k.z.array(p).describe("Array with a one or many items. You can repeat the same ids between rows"))}break;case U.FieldType.ARRAY:a[s.name]=k.z.array(k.z.enum(s.constraints.inclusion));break;case U.FieldType.AI:case U.FieldType.AUTO:case U.FieldType.SIGNATURE_SINGLE:case U.FieldType.BB_REFERENCE:case U.FieldType.JSON:case U.FieldType.FORMULA:case U.FieldType.INTERNAL:case U.FieldType.BARCODEQR:case U.FieldType.BB_REFERENCE_SINGLE:break;default:throw rI.utils.unreachable(i)}}t=t.extend({[r.name]:k.z.array(k.z.object(a))}).describe(`Each table should include at least a few items (min 3, max 18). The number of items should not be evenly distributed. Instead, follow natural relationships and usage patterns based on the tables nature. For example:
|
|
178
178
|
1. If we have posts and comments, there should be more posts than users, and more comments than posts.
|
|
179
179
|
2. If it's a ticketing system, there may be more tickets than users, and some users may have submitted several tickets.
|
|
180
180
|
3. In a CRM, there are fewer users than customers, and customers may have many deals.
|
|
181
|
-
4. In a project management tool, projects might have many tasks, and tasks might have multiple comments.`)}return t}var
|
|
182
|
-
"${t}"`).withFormat(
|
|
181
|
+
4. In a project management tool, projects might have many tasks, and tasks might have multiple comments.`)}return t}var Pa=C(require("dd-trace")),Au=class e{constructor(t,r){this.llmFunctions={getTableStructure:async t=>Pa.default.trace("llm.getTableStructure",async()=>{let r=await this.llm.prompt(pu().addUserMessage(t).withFormat(gu));try{let a=JSON.parse(r.message);return du(a)}catch{throw new Oa.HTTPError("Error generating tables",500)}}),generateAIColumns:(t,r)=>Pa.default.trace("llm.generateAIColumns",async()=>this.generateAIColumns(t,r)),generateData:async(t,r)=>Pa.default.trace("llm.generateData",async()=>{let a=await this.llm.prompt(lu().addUserMessage(t).withFormat(hu(r)));try{return JSON.parse(a.message)}catch{throw new Oa.HTTPError("Error generating data",500)}})};this.llm=t,this.delegates=r}static async init(t){let r=await _a({model:"gpt-4o",maxTokens:2e3});if(!r)throw new Oa.HTTPError("LLM not available",422);return new e(r,t)}async generate(t,r){return Pa.default.trace("tableGeneration.generate",async a=>{let n=await this.generateTables(t,r);return a.addTags({table_count:n.length}),n})}async generateTables(t,r){let a=await this.llmFunctions.getTableStructure(t),n=this.llmFunctions.generateAIColumns(t,a).then(i=>this.delegates.generateTablesDelegate(fu(a,i))),o=await this.llmFunctions.generateData(t,a),s=await n;return await this.delegates.generateDataDelegate(o,r,aI.utils.toMap("name",a)),s}async generateAIColumns(t,r){let a=await this.llm.prompt(cu().addUserMessage(`This is the initial user prompt that generated the given schema:
|
|
182
|
+
"${t}"`).withFormat(yu(r)));try{return JSON.parse(a.message)}catch{throw new Oa.HTTPError("Error generating columns",500)}}};0&&(module.exports={Method,ai,api,auditLogs,automations,backups,branding,constants,environmentVariables,features,groups,init,licensing,logger,mappers,middleware,plugins,publicApi,quotas,scimGroups,scimUsers,sdk,users,utils});
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"dist"
|
|
5
5
|
],
|
|
6
6
|
"license": "UNLICENSED",
|
|
7
|
-
"version": "3.12.
|
|
7
|
+
"version": "3.12.2",
|
|
8
8
|
"description": "Budibase Pro (Backend)",
|
|
9
9
|
"main": "dist/index.js",
|
|
10
10
|
"types": "dist/index.d.ts",
|
|
@@ -73,5 +73,5 @@
|
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
75
|
},
|
|
76
|
-
"gitHead": "
|
|
76
|
+
"gitHead": "d3c6f03610ea1c975989145b29f32930d70c7253"
|
|
77
77
|
}
|