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