@budibase/pro 3.12.5 → 3.12.7

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.
@@ -1,6 +1,6 @@
1
- import { EnrichedBinding, Snippet, ContextUser } from "@budibase/types";
1
+ import { EnrichedBinding, Snippet, ContextUser, SummariseLength } from "@budibase/types";
2
2
  import { LLMRequest } from "../llm";
3
- export declare function summarizeText(text: string): LLMRequest;
3
+ export declare function summarizeText(text: string, length?: SummariseLength): LLMRequest;
4
4
  export declare function classifyText(text: string, categories: string[]): LLMRequest;
5
5
  export declare function cleanData(text: string): LLMRequest;
6
6
  export declare function generateSQL(prompt: string, tableSchema: string): LLMRequest;
package/dist/index.js CHANGED
@@ -1,31 +1,31 @@
1
- "use strict";var fI=Object.create;var La=Object.defineProperty;var mI=Object.getOwnPropertyDescriptor;var gI=Object.getOwnPropertyNames;var yI=Object.getPrototypeOf,hI=Object.prototype.hasOwnProperty;var u=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),w=(e,t)=>{for(var r in t)La(e,r,{get:t[r],enumerable:!0})},xu=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of gI(t))!hI.call(e,n)&&n!==r&&La(e,n,{get:()=>t[n],enumerable:!(a=mI(t,n))||a.enumerable});return e};var C=(e,t,r)=>(r=e!=null?fI(yI(e)):{},xu(t||!e||!e.__esModule?La(r,"default",{value:e,enumerable:!0}):r,e)),AI=e=>xu(La({},"__esModule",{value:!0}),e);var Va=u((D0,dp)=>{"use strict";function gS(e,t){for(var r=-1,a=t.length,n=e.length;++r<a;)e[n+r]=t[r];return e}dp.exports=gS});var go=u((N0,fp)=>{"use strict";var yS=typeof global=="object"&&global&&global.Object===Object&&global;fp.exports=yS});var ne=u((B0,mp)=>{"use strict";var hS=go(),AS=typeof self=="object"&&self&&self.Object===Object&&self,bS=hS||AS||Function("return this")();mp.exports=bS});var Rt=u((M0,gp)=>{"use strict";var IS=ne(),SS=IS.Symbol;gp.exports=SS});var bp=u((G0,Ap)=>{"use strict";var yp=Rt(),hp=Object.prototype,wS=hp.hasOwnProperty,TS=hp.toString,Vr=yp?yp.toStringTag:void 0;function vS(e){var t=wS.call(e,Vr),r=e[Vr];try{e[Vr]=void 0;var a=!0}catch{}var n=TS.call(e);return a&&(t?e[Vr]=r:delete e[Vr]),n}Ap.exports=vS});var Sp=u((k0,Ip)=>{"use strict";var ES=Object.prototype,RS=ES.toString;function xS(e){return RS.call(e)}Ip.exports=xS});var dt=u((F0,vp)=>{"use strict";var wp=Rt(),_S=bp(),OS=Sp(),PS="[object Null]",LS="[object Undefined]",Tp=wp?wp.toStringTag:void 0;function CS(e){return e==null?e===void 0?LS:PS:Tp&&Tp in Object(e)?_S(e):OS(e)}vp.exports=CS});var ge=u((Q0,Ep)=>{"use strict";function qS(e){return e!=null&&typeof e=="object"}Ep.exports=qS});var xp=u((j0,Rp)=>{"use strict";var US=dt(),DS=ge(),NS="[object Arguments]";function BS(e){return DS(e)&&US(e)==NS}Rp.exports=BS});var Yr=u((W0,Pp)=>{"use strict";var _p=xp(),MS=ge(),Op=Object.prototype,GS=Op.hasOwnProperty,kS=Op.propertyIsEnumerable,FS=_p(function(){return arguments}())?_p:function(e){return MS(e)&&GS.call(e,"callee")&&!kS.call(e,"callee")};Pp.exports=FS});var ee=u(($0,Lp)=>{"use strict";var QS=Array.isArray;Lp.exports=QS});var Dp=u((K0,Up)=>{"use strict";var Cp=Rt(),jS=Yr(),WS=ee(),qp=Cp?Cp.isConcatSpreadable:void 0;function $S(e){return WS(e)||jS(e)||!!(qp&&e&&e[qp])}Up.exports=$S});var yo=u((V0,Bp)=>{"use strict";var KS=Va(),VS=Dp();function Np(e,t,r,a,n){var o=-1,s=e.length;for(r||(r=VS),n||(n=[]);++o<s;){var i=e[o];t>0&&r(i)?t>1?Np(i,t-1,r,a,n):KS(n,i):a||(n[n.length]=i)}return n}Bp.exports=Np});var Hr=u((Y0,Mp)=>{"use strict";function YS(e){return e}Mp.exports=YS});var Ya=u((H0,Gp)=>{"use strict";function HS(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}Gp.exports=HS});var ho=u((z0,Fp)=>{"use strict";var zS=Ya(),kp=Math.max;function JS(e,t,r){return t=kp(t===void 0?e.length-1:t,0),function(){for(var a=arguments,n=-1,o=kp(a.length-t,0),s=Array(o);++n<o;)s[n]=a[t+n];n=-1;for(var i=Array(t+1);++n<t;)i[n]=a[n];return i[t]=r(s),zS(e,this,i)}}Fp.exports=JS});var jp=u((J0,Qp)=>{"use strict";function XS(e){return function(){return e}}Qp.exports=XS});var Te=u((X0,Wp)=>{"use strict";function ZS(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}Wp.exports=ZS});var zr=u((Z0,$p)=>{"use strict";var ew=dt(),tw=Te(),rw="[object AsyncFunction]",aw="[object Function]",nw="[object GeneratorFunction]",ow="[object Proxy]";function sw(e){if(!tw(e))return!1;var t=ew(e);return t==aw||t==nw||t==rw||t==ow}$p.exports=sw});var Vp=u((ek,Kp)=>{"use strict";var iw=ne(),uw=iw["__core-js_shared__"];Kp.exports=uw});var zp=u((tk,Hp)=>{"use strict";var Ao=Vp(),Yp=function(){var e=/[^.]+$/.exec(Ao&&Ao.keys&&Ao.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function pw(e){return!!Yp&&Yp in e}Hp.exports=pw});var bo=u((rk,Jp)=>{"use strict";var cw=Function.prototype,lw=cw.toString;function dw(e){if(e!=null){try{return lw.call(e)}catch{}try{return e+""}catch{}}return""}Jp.exports=dw});var Zp=u((ak,Xp)=>{"use strict";var fw=zr(),mw=zp(),gw=Te(),yw=bo(),hw=/[\\^$.*+?()[\]{}|]/g,Aw=/^\[object .+?Constructor\]$/,bw=Function.prototype,Iw=Object.prototype,Sw=bw.toString,ww=Iw.hasOwnProperty,Tw=RegExp("^"+Sw.call(ww).replace(hw,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function vw(e){if(!gw(e)||mw(e))return!1;var t=fw(e)?Tw:Aw;return t.test(yw(e))}Xp.exports=vw});var tc=u((nk,ec)=>{"use strict";function Ew(e,t){return e?.[t]}ec.exports=Ew});var ft=u((ok,rc)=>{"use strict";var Rw=Zp(),xw=tc();function _w(e,t){var r=xw(e,t);return Rw(r)?r:void 0}rc.exports=_w});var Io=u((sk,ac)=>{"use strict";var Ow=ft(),Pw=function(){try{var e=Ow(Object,"defineProperty");return e({},"",{}),e}catch{}}();ac.exports=Pw});var sc=u((ik,oc)=>{"use strict";var Lw=jp(),nc=Io(),Cw=Hr(),qw=nc?function(e,t){return nc(e,"toString",{configurable:!0,enumerable:!1,value:Lw(t),writable:!0})}:Cw;oc.exports=qw});var So=u((uk,ic)=>{"use strict";var Uw=800,Dw=16,Nw=Date.now;function Bw(e){var t=0,r=0;return function(){var a=Nw(),n=Dw-(a-r);if(r=a,n>0){if(++t>=Uw)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}ic.exports=Bw});var Ha=u((pk,uc)=>{"use strict";var Mw=sc(),Gw=So(),kw=Gw(Mw);uc.exports=kw});var wo=u((ck,pc)=>{"use strict";var Fw=Hr(),Qw=ho(),jw=Ha();function Ww(e,t){return jw(Qw(e,t,Fw),e+"")}pc.exports=Ww});var Jr=u((lk,cc)=>{"use strict";var $w=ft(),Kw=$w(Object,"create");cc.exports=Kw});var fc=u((dk,dc)=>{"use strict";var lc=Jr();function Vw(){this.__data__=lc?lc(null):{},this.size=0}dc.exports=Vw});var gc=u((fk,mc)=>{"use strict";function Yw(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}mc.exports=Yw});var hc=u((mk,yc)=>{"use strict";var Hw=Jr(),zw="__lodash_hash_undefined__",Jw=Object.prototype,Xw=Jw.hasOwnProperty;function Zw(e){var t=this.__data__;if(Hw){var r=t[e];return r===zw?void 0:r}return Xw.call(t,e)?t[e]:void 0}yc.exports=Zw});var bc=u((gk,Ac)=>{"use strict";var eT=Jr(),tT=Object.prototype,rT=tT.hasOwnProperty;function aT(e){var t=this.__data__;return eT?t[e]!==void 0:rT.call(t,e)}Ac.exports=aT});var Sc=u((yk,Ic)=>{"use strict";var nT=Jr(),oT="__lodash_hash_undefined__";function sT(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=nT&&t===void 0?oT:t,this}Ic.exports=sT});var Tc=u((hk,wc)=>{"use strict";var iT=fc(),uT=gc(),pT=hc(),cT=bc(),lT=Sc();function Vt(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var a=e[t];this.set(a[0],a[1])}}Vt.prototype.clear=iT;Vt.prototype.delete=uT;Vt.prototype.get=pT;Vt.prototype.has=cT;Vt.prototype.set=lT;wc.exports=Vt});var Ec=u((Ak,vc)=>{"use strict";function dT(){this.__data__=[],this.size=0}vc.exports=dT});var Yt=u((bk,Rc)=>{"use strict";function fT(e,t){return e===t||e!==e&&t!==t}Rc.exports=fT});var Xr=u((Ik,xc)=>{"use strict";var mT=Yt();function gT(e,t){for(var r=e.length;r--;)if(mT(e[r][0],t))return r;return-1}xc.exports=gT});var Oc=u((Sk,_c)=>{"use strict";var yT=Xr(),hT=Array.prototype,AT=hT.splice;function bT(e){var t=this.__data__,r=yT(t,e);if(r<0)return!1;var a=t.length-1;return r==a?t.pop():AT.call(t,r,1),--this.size,!0}_c.exports=bT});var Lc=u((wk,Pc)=>{"use strict";var IT=Xr();function ST(e){var t=this.__data__,r=IT(t,e);return r<0?void 0:t[r][1]}Pc.exports=ST});var qc=u((Tk,Cc)=>{"use strict";var wT=Xr();function TT(e){return wT(this.__data__,e)>-1}Cc.exports=TT});var Dc=u((vk,Uc)=>{"use strict";var vT=Xr();function ET(e,t){var r=this.__data__,a=vT(r,e);return a<0?(++this.size,r.push([e,t])):r[a][1]=t,this}Uc.exports=ET});var Zr=u((Ek,Nc)=>{"use strict";var RT=Ec(),xT=Oc(),_T=Lc(),OT=qc(),PT=Dc();function Ht(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var a=e[t];this.set(a[0],a[1])}}Ht.prototype.clear=RT;Ht.prototype.delete=xT;Ht.prototype.get=_T;Ht.prototype.has=OT;Ht.prototype.set=PT;Nc.exports=Ht});var za=u((Rk,Bc)=>{"use strict";var LT=ft(),CT=ne(),qT=LT(CT,"Map");Bc.exports=qT});var kc=u((xk,Gc)=>{"use strict";var Mc=Tc(),UT=Zr(),DT=za();function NT(){this.size=0,this.__data__={hash:new Mc,map:new(DT||UT),string:new Mc}}Gc.exports=NT});var Qc=u((_k,Fc)=>{"use strict";function BT(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}Fc.exports=BT});var ea=u((Ok,jc)=>{"use strict";var MT=Qc();function GT(e,t){var r=e.__data__;return MT(t)?r[typeof t=="string"?"string":"hash"]:r.map}jc.exports=GT});var $c=u((Pk,Wc)=>{"use strict";var kT=ea();function FT(e){var t=kT(this,e).delete(e);return this.size-=t?1:0,t}Wc.exports=FT});var Vc=u((Lk,Kc)=>{"use strict";var QT=ea();function jT(e){return QT(this,e).get(e)}Kc.exports=jT});var Hc=u((Ck,Yc)=>{"use strict";var WT=ea();function $T(e){return WT(this,e).has(e)}Yc.exports=$T});var Jc=u((qk,zc)=>{"use strict";var KT=ea();function VT(e,t){var r=KT(this,e),a=r.size;return r.set(e,t),this.size+=r.size==a?0:1,this}zc.exports=VT});var Ja=u((Uk,Xc)=>{"use strict";var YT=kc(),HT=$c(),zT=Vc(),JT=Hc(),XT=Jc();function zt(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var a=e[t];this.set(a[0],a[1])}}zt.prototype.clear=YT;zt.prototype.delete=HT;zt.prototype.get=zT;zt.prototype.has=JT;zt.prototype.set=XT;Xc.exports=zt});var el=u((Dk,Zc)=>{"use strict";var ZT="__lodash_hash_undefined__";function ev(e){return this.__data__.set(e,ZT),this}Zc.exports=ev});var rl=u((Nk,tl)=>{"use strict";function tv(e){return this.__data__.has(e)}tl.exports=tv});var To=u((Bk,al)=>{"use strict";var rv=Ja(),av=el(),nv=rl();function Xa(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new rv;++t<r;)this.add(e[t])}Xa.prototype.add=Xa.prototype.push=av;Xa.prototype.has=nv;al.exports=Xa});var ol=u((Mk,nl)=>{"use strict";function ov(e,t,r,a){for(var n=e.length,o=r+(a?1:-1);a?o--:++o<n;)if(t(e[o],o,e))return o;return-1}nl.exports=ov});var il=u((Gk,sl)=>{"use strict";function sv(e){return e!==e}sl.exports=sv});var pl=u((kk,ul)=>{"use strict";function iv(e,t,r){for(var a=r-1,n=e.length;++a<n;)if(e[a]===t)return a;return-1}ul.exports=iv});var ll=u((Fk,cl)=>{"use strict";var uv=ol(),pv=il(),cv=pl();function lv(e,t,r){return t===t?cv(e,t,r):uv(e,pv,r)}cl.exports=lv});var vo=u((Qk,dl)=>{"use strict";var dv=ll();function fv(e,t){var r=e==null?0:e.length;return!!r&&dv(e,t,0)>-1}dl.exports=fv});var ml=u((jk,fl)=>{"use strict";function mv(e,t,r){for(var a=-1,n=e==null?0:e.length;++a<n;)if(r(t,e[a]))return!0;return!1}fl.exports=mv});var Eo=u((Wk,gl)=>{"use strict";function gv(e,t){return e.has(t)}gl.exports=gv});var Ro=u(($k,yl)=>{"use strict";var yv=ft(),hv=ne(),Av=yv(hv,"Set");yl.exports=Av});var xo=u((Kk,hl)=>{"use strict";function bv(){}hl.exports=bv});var Za=u((Vk,Al)=>{"use strict";function Iv(e){var t=-1,r=Array(e.size);return e.forEach(function(a){r[++t]=a}),r}Al.exports=Iv});var Il=u((Yk,bl)=>{"use strict";var _o=Ro(),Sv=xo(),wv=Za(),Tv=1/0,vv=_o&&1/wv(new _o([,-0]))[1]==Tv?function(e){return new _o(e)}:Sv;bl.exports=vv});var wl=u((Hk,Sl)=>{"use strict";var Ev=To(),Rv=vo(),xv=ml(),_v=Eo(),Ov=Il(),Pv=Za(),Lv=200;function Cv(e,t,r){var a=-1,n=Rv,o=e.length,s=!0,i=[],p=i;if(r)s=!1,n=xv;else if(o>=Lv){var f=t?null:Ov(e);if(f)return Pv(f);s=!1,n=_v,p=new Ev}else p=t?[]:i;e:for(;++a<o;){var m=e[a],y=t?t(m):m;if(m=r||m!==0?m:0,s&&y===y){for(var g=p.length;g--;)if(p[g]===y)continue e;t&&p.push(y),i.push(m)}else n(p,y,r)||(p!==i&&p.push(y),i.push(m))}return i}Sl.exports=Cv});var en=u((zk,Tl)=>{"use strict";var qv=9007199254740991;function Uv(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=qv}Tl.exports=Uv});var Jt=u((Jk,vl)=>{"use strict";var Dv=zr(),Nv=en();function Bv(e){return e!=null&&Nv(e.length)&&!Dv(e)}vl.exports=Bv});var Oo=u((Xk,El)=>{"use strict";var Mv=Jt(),Gv=ge();function kv(e){return Gv(e)&&Mv(e)}El.exports=kv});var xl=u((Zk,Rl)=>{"use strict";var Fv=yo(),Qv=wo(),jv=wl(),Wv=Oo(),$v=Qv(function(e){return jv(Fv(e,1,Wv,!0))});Rl.exports=$v});var Ol=u((eF,_l)=>{"use strict";var Kv=Zr();function Vv(){this.__data__=new Kv,this.size=0}_l.exports=Vv});var Ll=u((tF,Pl)=>{"use strict";function Yv(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}Pl.exports=Yv});var ql=u((rF,Cl)=>{"use strict";function Hv(e){return this.__data__.get(e)}Cl.exports=Hv});var Dl=u((aF,Ul)=>{"use strict";function zv(e){return this.__data__.has(e)}Ul.exports=zv});var Bl=u((nF,Nl)=>{"use strict";var Jv=Zr(),Xv=za(),Zv=Ja(),eE=200;function tE(e,t){var r=this.__data__;if(r instanceof Jv){var a=r.__data__;if(!Xv||a.length<eE-1)return a.push([e,t]),this.size=++r.size,this;r=this.__data__=new Zv(a)}return r.set(e,t),this.size=r.size,this}Nl.exports=tE});var ta=u((oF,Ml)=>{"use strict";var rE=Zr(),aE=Ol(),nE=Ll(),oE=ql(),sE=Dl(),iE=Bl();function Xt(e){var t=this.__data__=new rE(e);this.size=t.size}Xt.prototype.clear=aE;Xt.prototype.delete=nE;Xt.prototype.get=oE;Xt.prototype.has=sE;Xt.prototype.set=iE;Ml.exports=Xt});var ra=u((sF,kl)=>{"use strict";var Gl=Io();function uE(e,t,r){t=="__proto__"&&Gl?Gl(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}kl.exports=uE});var Po=u((iF,Fl)=>{"use strict";var pE=ra(),cE=Yt();function lE(e,t,r){(r!==void 0&&!cE(e[t],r)||r===void 0&&!(t in e))&&pE(e,t,r)}Fl.exports=lE});var jl=u((uF,Ql)=>{"use strict";function dE(e){return function(t,r,a){for(var n=-1,o=Object(t),s=a(t),i=s.length;i--;){var p=s[e?i:++n];if(r(o[p],p,o)===!1)break}return t}}Ql.exports=dE});var Lo=u((pF,Wl)=>{"use strict";var fE=jl(),mE=fE();Wl.exports=mE});var Co=u((aa,Zt)=>{"use strict";var gE=ne(),Yl=typeof aa=="object"&&aa&&!aa.nodeType&&aa,$l=Yl&&typeof Zt=="object"&&Zt&&!Zt.nodeType&&Zt,yE=$l&&$l.exports===Yl,Kl=yE?gE.Buffer:void 0,Vl=Kl?Kl.allocUnsafe:void 0;function hE(e,t){if(t)return e.slice();var r=e.length,a=Vl?Vl(r):new e.constructor(r);return e.copy(a),a}Zt.exports=hE});var qo=u((cF,Hl)=>{"use strict";var AE=ne(),bE=AE.Uint8Array;Hl.exports=bE});var tn=u((lF,Jl)=>{"use strict";var zl=qo();function IE(e){var t=new e.constructor(e.byteLength);return new zl(t).set(new zl(e)),t}Jl.exports=IE});var Uo=u((dF,Xl)=>{"use strict";var SE=tn();function wE(e,t){var r=t?SE(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}Xl.exports=wE});var er=u((fF,Zl)=>{"use strict";function TE(e,t){var r=-1,a=e.length;for(t||(t=Array(a));++r<a;)t[r]=e[r];return t}Zl.exports=TE});var na=u((mF,td)=>{"use strict";var vE=Te(),ed=Object.create,EE=function(){function e(){}return function(t){if(!vE(t))return{};if(ed)return ed(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();td.exports=EE});var Do=u((gF,rd)=>{"use strict";function RE(e,t){return function(r){return e(t(r))}}rd.exports=RE});var rn=u((yF,ad)=>{"use strict";var xE=Do(),_E=xE(Object.getPrototypeOf,Object);ad.exports=_E});var an=u((hF,nd)=>{"use strict";var OE=Object.prototype;function PE(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||OE;return e===r}nd.exports=PE});var No=u((AF,od)=>{"use strict";var LE=na(),CE=rn(),qE=an();function UE(e){return typeof e.constructor=="function"&&!qE(e)?LE(CE(e)):{}}od.exports=UE});var id=u((bF,sd)=>{"use strict";function DE(){return!1}sd.exports=DE});var sa=u((oa,tr)=>{"use strict";var NE=ne(),BE=id(),cd=typeof oa=="object"&&oa&&!oa.nodeType&&oa,ud=cd&&typeof tr=="object"&&tr&&!tr.nodeType&&tr,ME=ud&&ud.exports===cd,pd=ME?NE.Buffer:void 0,GE=pd?pd.isBuffer:void 0,kE=GE||BE;tr.exports=kE});var Bo=u((IF,dd)=>{"use strict";var FE=dt(),QE=rn(),jE=ge(),WE="[object Object]",$E=Function.prototype,KE=Object.prototype,ld=$E.toString,VE=KE.hasOwnProperty,YE=ld.call(Object);function HE(e){if(!jE(e)||FE(e)!=WE)return!1;var t=QE(e);if(t===null)return!0;var r=VE.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&ld.call(r)==YE}dd.exports=HE});var md=u((SF,fd)=>{"use strict";var zE=dt(),JE=en(),XE=ge(),ZE="[object Arguments]",eR="[object Array]",tR="[object Boolean]",rR="[object Date]",aR="[object Error]",nR="[object Function]",oR="[object Map]",sR="[object Number]",iR="[object Object]",uR="[object RegExp]",pR="[object Set]",cR="[object String]",lR="[object WeakMap]",dR="[object ArrayBuffer]",fR="[object DataView]",mR="[object Float32Array]",gR="[object Float64Array]",yR="[object Int8Array]",hR="[object Int16Array]",AR="[object Int32Array]",bR="[object Uint8Array]",IR="[object Uint8ClampedArray]",SR="[object Uint16Array]",wR="[object Uint32Array]",B={};B[mR]=B[gR]=B[yR]=B[hR]=B[AR]=B[bR]=B[IR]=B[SR]=B[wR]=!0;B[ZE]=B[eR]=B[dR]=B[tR]=B[fR]=B[rR]=B[aR]=B[nR]=B[oR]=B[sR]=B[iR]=B[uR]=B[pR]=B[cR]=B[lR]=!1;function TR(e){return XE(e)&&JE(e.length)&&!!B[zE(e)]}fd.exports=TR});var nn=u((wF,gd)=>{"use strict";function vR(e){return function(t){return e(t)}}gd.exports=vR});var on=u((ia,rr)=>{"use strict";var ER=go(),yd=typeof ia=="object"&&ia&&!ia.nodeType&&ia,ua=yd&&typeof rr=="object"&&rr&&!rr.nodeType&&rr,RR=ua&&ua.exports===yd,Mo=RR&&ER.process,xR=function(){try{var e=ua&&ua.require&&ua.require("util").types;return e||Mo&&Mo.binding&&Mo.binding("util")}catch{}}();rr.exports=xR});var sn=u((TF,bd)=>{"use strict";var _R=md(),OR=nn(),hd=on(),Ad=hd&&hd.isTypedArray,PR=Ad?OR(Ad):_R;bd.exports=PR});var Go=u((vF,Id)=>{"use strict";function LR(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}Id.exports=LR});var ko=u((EF,Sd)=>{"use strict";var CR=ra(),qR=Yt(),UR=Object.prototype,DR=UR.hasOwnProperty;function NR(e,t,r){var a=e[t];(!(DR.call(e,t)&&qR(a,r))||r===void 0&&!(t in e))&&CR(e,t,r)}Sd.exports=NR});var ar=u((RF,wd)=>{"use strict";var BR=ko(),MR=ra();function GR(e,t,r,a){var n=!r;r||(r={});for(var o=-1,s=t.length;++o<s;){var i=t[o],p=a?a(r[i],e[i],i,r,e):void 0;p===void 0&&(p=e[i]),n?MR(r,i,p):BR(r,i,p)}return r}wd.exports=GR});var vd=u((xF,Td)=>{"use strict";function kR(e,t){for(var r=-1,a=Array(e);++r<e;)a[r]=t(r);return a}Td.exports=kR});var pa=u((_F,Ed)=>{"use strict";var FR=9007199254740991,QR=/^(?:0|[1-9]\d*)$/;function jR(e,t){var r=typeof e;return t=t??FR,!!t&&(r=="number"||r!="symbol"&&QR.test(e))&&e>-1&&e%1==0&&e<t}Ed.exports=jR});var Fo=u((OF,Rd)=>{"use strict";var WR=vd(),$R=Yr(),KR=ee(),VR=sa(),YR=pa(),HR=sn(),zR=Object.prototype,JR=zR.hasOwnProperty;function XR(e,t){var r=KR(e),a=!r&&$R(e),n=!r&&!a&&VR(e),o=!r&&!a&&!n&&HR(e),s=r||a||n||o,i=s?WR(e.length,String):[],p=i.length;for(var f in e)(t||JR.call(e,f))&&!(s&&(f=="length"||n&&(f=="offset"||f=="parent")||o&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||YR(f,p)))&&i.push(f);return i}Rd.exports=XR});var _d=u((PF,xd)=>{"use strict";function ZR(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}xd.exports=ZR});var Pd=u((LF,Od)=>{"use strict";var ex=Te(),tx=an(),rx=_d(),ax=Object.prototype,nx=ax.hasOwnProperty;function ox(e){if(!ex(e))return rx(e);var t=tx(e),r=[];for(var a in e)a=="constructor"&&(t||!nx.call(e,a))||r.push(a);return r}Od.exports=ox});var nr=u((CF,Ld)=>{"use strict";var sx=Fo(),ix=Pd(),ux=Jt();function px(e){return ux(e)?sx(e,!0):ix(e)}Ld.exports=px});var qd=u((qF,Cd)=>{"use strict";var cx=ar(),lx=nr();function dx(e){return cx(e,lx(e))}Cd.exports=dx});var Gd=u((UF,Md)=>{"use strict";var Ud=Po(),fx=Co(),mx=Uo(),gx=er(),yx=No(),Dd=Yr(),Nd=ee(),hx=Oo(),Ax=sa(),bx=zr(),Ix=Te(),Sx=Bo(),wx=sn(),Bd=Go(),Tx=qd();function vx(e,t,r,a,n,o,s){var i=Bd(e,r),p=Bd(t,r),f=s.get(p);if(f){Ud(e,r,f);return}var m=o?o(i,p,r+"",e,t,s):void 0,y=m===void 0;if(y){var g=Nd(p),S=!g&&Ax(p),P=!g&&!S&&wx(p);m=p,g||S||P?Nd(i)?m=i:hx(i)?m=gx(i):S?(y=!1,m=fx(p,!0)):P?(y=!1,m=mx(p,!0)):m=[]:Sx(p)||Dd(p)?(m=i,Dd(i)?m=Tx(i):(!Ix(i)||bx(i))&&(m=yx(p))):y=!1}y&&(s.set(p,m),n(m,p,a,o,s),s.delete(p)),Ud(e,r,m)}Md.exports=vx});var Qd=u((DF,Fd)=>{"use strict";var Ex=ta(),Rx=Po(),xx=Lo(),_x=Gd(),Ox=Te(),Px=nr(),Lx=Go();function kd(e,t,r,a,n){e!==t&&xx(t,function(o,s){if(n||(n=new Ex),Ox(o))_x(e,t,s,r,kd,a,n);else{var i=a?a(Lx(e,s),o,s+"",e,t,n):void 0;i===void 0&&(i=o),Rx(e,s,i)}},Px)}Fd.exports=kd});var Wd=u((NF,jd)=>{"use strict";var Cx=Yt(),qx=Jt(),Ux=pa(),Dx=Te();function Nx(e,t,r){if(!Dx(r))return!1;var a=typeof t;return(a=="number"?qx(r)&&Ux(t,r.length):a=="string"&&t in r)?Cx(r[t],e):!1}jd.exports=Nx});var Kd=u((BF,$d)=>{"use strict";var Bx=wo(),Mx=Wd();function Gx(e){return Bx(function(t,r){var a=-1,n=r.length,o=n>1?r[n-1]:void 0,s=n>2?r[2]:void 0;for(o=e.length>3&&typeof o=="function"?(n--,o):void 0,s&&Mx(r[0],r[1],s)&&(o=n<3?void 0:o,n=1),t=Object(t);++a<n;){var i=r[a];i&&e(t,i,a,o)}return t})}$d.exports=Gx});var Qo=u((MF,Vd)=>{"use strict";var kx=Qd(),Fx=Kd(),Qx=Fx(function(e,t,r){kx(e,t,r)});Vd.exports=Qx});var Hf=u(le=>{"use strict";le.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"};le.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"],4:["fill","setWith","updateWith"]};le.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};le.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2};le.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};le.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]};le.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}};le.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}};le.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=le.aliasToReal,r={};for(var a in t){var n=t[a];e.call(r,n)?r[n].push(a):r[n]=[a]}return r}();le.remap={assignAll:"assign",assignAllWith:"assignWith",assignInAll:"assignIn",assignInAllWith:"assignInWith",curryN:"curry",curryRightN:"curryRight",defaultsAll:"defaults",defaultsDeepAll:"defaultsDeep",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",mergeAll:"merge",mergeAllWith:"mergeWith",padChars:"pad",padCharsEnd:"padEnd",padCharsStart:"padStart",propertyOf:"get",rangeStep:"range",rangeStepRight:"rangeRight",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart",zipAll:"zip"};le.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};le.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}});var Ms=u((sj,zf)=>{"use strict";zf.exports={}});var em=u((ij,Zf)=>{"use strict";var J=Hf(),SO=Ms(),Jf=Array.prototype.push;function wO(e,t){return t==2?function(r,a){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}function Gs(e,t){return t==2?function(r,a){return e(r,a)}:function(r){return e(r)}}function Xf(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}function TO(e){return function(t){return e({},t)}}function vO(e,t){return function(){for(var r=arguments.length,a=r-1,n=Array(r);r--;)n[r]=arguments[r];var o=n[t],s=n.slice(0,t);return o&&Jf.apply(s,o),t!=a&&Jf.apply(s,n.slice(t+1)),e.apply(this,s)}}function ks(e,t){return function(){var r=arguments.length;if(r){for(var a=Array(r);r--;)a[r]=arguments[r];var n=a[0]=t.apply(void 0,a);return e.apply(void 0,a),n}}}function Fs(e,t,r,a){var n=typeof t=="function",o=t===Object(t);if(o&&(a=r,r=t,t=void 0),r==null)throw new TypeError;a||(a={});var s={cap:"cap"in a?a.cap:!0,curry:"curry"in a?a.curry:!0,fixed:"fixed"in a?a.fixed:!0,immutable:"immutable"in a?a.immutable:!0,rearg:"rearg"in a?a.rearg:!0},i=n?r:SO,p="curry"in a&&a.curry,f="fixed"in a&&a.fixed,m="rearg"in a&&a.rearg,y=n?r.runInContext():void 0,g=n?r:{ary:e.ary,assign:e.assign,clone:e.clone,curry:e.curry,forEach:e.forEach,isArray:e.isArray,isError:e.isError,isFunction:e.isFunction,isWeakMap:e.isWeakMap,iteratee:e.iteratee,keys:e.keys,rearg:e.rearg,toInteger:e.toInteger,toPath:e.toPath},S=g.ary,P=g.assign,x=g.clone,R=g.curry,E=g.forEach,q=g.isArray,xe=g.isError,be=g.isFunction,it=g.isWeakMap,kt=g.keys,Ir=g.rearg,Sr=g.toInteger,nI=g.toPath,Iu=kt(J.aryMethod),oI={castArray:function(I){return function(){var h=arguments[0];return q(h)?I(Xf(h)):I.apply(void 0,arguments)}},iteratee:function(I){return function(){var h=arguments[0],b=arguments[1],v=I(h,b),O=v.length;return s.cap&&typeof b=="number"?(b=b>2?b-2:1,O&&O<=b?v:Gs(v,b)):v}},mixin:function(I){return function(h){var b=this;if(!be(b))return I(b,Object(h));var v=[];return E(kt(h),function(O){be(h[O])&&v.push([O,b.prototype[O]])}),I(b,Object(h)),E(v,function(O){var te=O[1];be(te)?b.prototype[O[0]]=te:delete b.prototype[O[0]]}),b}},nthArg:function(I){return function(h){var b=h<0?1:Sr(h)+1;return R(I(h),b)}},rearg:function(I){return function(h,b){var v=b?b.length:0;return R(I(h,b),v)}},runInContext:function(I){return function(h){return Fs(e,I(h),a)}}};function sI(I,h){if(s.cap){var b=J.iterateeRearg[I];if(b)return lI(h,b);var v=!n&&J.iterateeAry[I];if(v)return cI(h,v)}return h}function iI(I,h,b){return p||s.curry&&b>1?R(h,b):h}function Su(I,h,b){if(s.fixed&&(f||!J.skipFixed[I])){var v=J.methodSpread[I],O=v&&v.start;return O===void 0?S(h,b):vO(h,O)}return h}function wu(I,h,b){return s.rearg&&b>1&&(m||!J.skipRearg[I])?Ir(h,J.methodRearg[I]||J.aryRearg[b]):h}function uI(I,h){h=nI(h);for(var b=-1,v=h.length,O=v-1,te=x(Object(I)),Ne=te;Ne!=null&&++b<v;){var Ie=h[b],Be=Ne[Ie];Be!=null&&!(be(Be)||xe(Be)||it(Be))&&(Ne[Ie]=x(b==O?Be:Object(Be))),Ne=Ne[Ie]}return te}function pI(I){return fe.runInContext.convert(I)(void 0)}function Tu(I,h){var b=J.aliasToReal[I]||I,v=J.remap[b]||b,O=a;return function(te){var Ne=n?y:g,Ie=n?y[v]:h,Be=P(P({},O),te);return Fs(Ne,b,Ie,Be)}}function cI(I,h){return vu(I,function(b){return typeof b=="function"?Gs(b,h):b})}function lI(I,h){return vu(I,function(b){var v=h.length;return wO(Ir(Gs(b,v),h),v)})}function vu(I,h){return function(){var b=arguments.length;if(!b)return I();for(var v=Array(b);b--;)v[b]=arguments[b];var O=s.rearg?0:b-1;return v[O]=h(v[O]),I.apply(void 0,v)}}function Eu(I,h,b){var v,O=J.aliasToReal[I]||I,te=h,Ne=oI[O];return Ne?te=Ne(h):s.immutable&&(J.mutate.array[O]?te=ks(h,Xf):J.mutate.object[O]?te=ks(h,TO(h)):J.mutate.set[O]&&(te=ks(h,uI))),E(Iu,function(Ie){return E(J.aryMethod[Ie],function(Be){if(O==Be){var Ru=J.methodSpread[O],dI=Ru&&Ru.afterRearg;return v=dI?Su(O,wu(O,te,Ie),Ie):wu(O,Su(O,te,Ie),Ie),v=sI(O,v),v=iI(O,v,Ie),!1}}),!v}),v||(v=te),v==h&&(v=p?R(v,1):function(){return h.apply(this,arguments)}),v.convert=Tu(O,h),v.placeholder=h.placeholder=b,v}if(!o)return Eu(t,r,i);var fe=r,wr=[];return E(Iu,function(I){E(J.aryMethod[I],function(h){var b=fe[J.remap[h]||h];b&&wr.push([h,Eu(h,b,fe)])})}),E(kt(fe),function(I){var h=fe[I];if(typeof h=="function"){for(var b=wr.length;b--;)if(wr[b][0]==I)return;h.convert=Tu(I,h),wr.push([I,h])}}),E(wr,function(I){fe[I[0]]=I[1]}),fe.convert=pI,fe.placeholder=fe,E(kt(fe),function(I){E(J.realToAlias[I]||[],function(h){fe[h]=fe[I]})}),fe}Zf.exports=Fs});var Qs=u((uj,tm)=>{"use strict";var EO=ft(),RO=ne(),xO=EO(RO,"WeakMap");tm.exports=xO});var Ws=u((pj,am)=>{"use strict";var rm=Qs(),_O=rm&&new rm;am.exports=_O});var $s=u((cj,om)=>{"use strict";var OO=Hr(),nm=Ws(),PO=nm?function(e,t){return nm.set(e,t),e}:OO;om.exports=PO});var Ia=u((lj,sm)=>{"use strict";var LO=na(),CO=Te();function qO(e){return function(){var t=arguments;switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3]);case 5:return new e(t[0],t[1],t[2],t[3],t[4]);case 6:return new e(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var r=LO(e.prototype),a=e.apply(r,t);return CO(a)?a:r}}sm.exports=qO});var um=u((dj,im)=>{"use strict";var UO=Ia(),DO=ne(),NO=1;function BO(e,t,r){var a=t&NO,n=UO(e);function o(){var s=this&&this!==DO&&this instanceof o?n:e;return s.apply(a?r:this,arguments)}return o}im.exports=BO});var Ks=u((fj,pm)=>{"use strict";var MO=Math.max;function GO(e,t,r,a){for(var n=-1,o=e.length,s=r.length,i=-1,p=t.length,f=MO(o-s,0),m=Array(p+f),y=!a;++i<p;)m[i]=t[i];for(;++n<s;)(y||n<o)&&(m[r[n]]=e[n]);for(;f--;)m[i++]=e[n++];return m}pm.exports=GO});var Vs=u((mj,cm)=>{"use strict";var kO=Math.max;function FO(e,t,r,a){for(var n=-1,o=e.length,s=-1,i=r.length,p=-1,f=t.length,m=kO(o-i,0),y=Array(m+f),g=!a;++n<m;)y[n]=e[n];for(var S=n;++p<f;)y[S+p]=t[p];for(;++s<i;)(g||n<o)&&(y[S+r[s]]=e[n++]);return y}cm.exports=FO});var dm=u((gj,lm)=>{"use strict";function QO(e,t){for(var r=e.length,a=0;r--;)e[r]===t&&++a;return a}lm.exports=QO});var Rn=u((yj,fm)=>{"use strict";function jO(){}fm.exports=jO});var _n=u((hj,mm)=>{"use strict";var WO=na(),$O=Rn(),KO=4294967295;function xn(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=KO,this.__views__=[]}xn.prototype=WO($O.prototype);xn.prototype.constructor=xn;mm.exports=xn});var Ys=u((Aj,ym)=>{"use strict";var gm=Ws(),VO=xo(),YO=gm?function(e){return gm.get(e)}:VO;ym.exports=YO});var Am=u((bj,hm)=>{"use strict";var HO={};hm.exports=HO});var Sm=u((Ij,Im)=>{"use strict";var bm=Am(),zO=Object.prototype,JO=zO.hasOwnProperty;function XO(e){for(var t=e.name+"",r=bm[t],a=JO.call(bm,t)?r.length:0;a--;){var n=r[a],o=n.func;if(o==null||o==e)return n.name}return t}Im.exports=XO});var Hs=u((Sj,wm)=>{"use strict";var ZO=na(),eP=Rn();function On(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}On.prototype=ZO(eP.prototype);On.prototype.constructor=On;wm.exports=On});var vm=u((wj,Tm)=>{"use strict";var tP=_n(),rP=Hs(),aP=er();function nP(e){if(e instanceof tP)return e.clone();var t=new rP(e.__wrapped__,e.__chain__);return t.__actions__=aP(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}Tm.exports=nP});var xm=u((Tj,Rm)=>{"use strict";var oP=_n(),Em=Hs(),sP=Rn(),iP=ee(),uP=ge(),pP=vm(),cP=Object.prototype,lP=cP.hasOwnProperty;function Pn(e){if(uP(e)&&!iP(e)&&!(e instanceof oP)){if(e instanceof Em)return e;if(lP.call(e,"__wrapped__"))return pP(e)}return new Em(e)}Pn.prototype=sP.prototype;Pn.prototype.constructor=Pn;Rm.exports=Pn});var Om=u((vj,_m)=>{"use strict";var dP=_n(),fP=Ys(),mP=Sm(),gP=xm();function yP(e){var t=mP(e),r=gP[t];if(typeof r!="function"||!(t in dP.prototype))return!1;if(e===r)return!0;var a=fP(r);return!!a&&e===a[0]}_m.exports=yP});var zs=u((Ej,Pm)=>{"use strict";var hP=$s(),AP=So(),bP=AP(hP);Pm.exports=bP});var Cm=u((Rj,Lm)=>{"use strict";var IP=/\{\n\/\* \[wrapped with (.+)\] \*/,SP=/,? & /;function wP(e){var t=e.match(IP);return t?t[1].split(SP):[]}Lm.exports=wP});var Um=u((xj,qm)=>{"use strict";var TP=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function vP(e,t){var r=t.length;if(!r)return e;var a=r-1;return t[a]=(r>1?"& ":"")+t[a],t=t.join(r>2?", ":" "),e.replace(TP,`{
1
+ "use strict";var mI=Object.create;var La=Object.defineProperty;var gI=Object.getOwnPropertyDescriptor;var yI=Object.getOwnPropertyNames;var hI=Object.getPrototypeOf,AI=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})},_u=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of yI(t))!AI.call(e,n)&&n!==r&&La(e,n,{get:()=>t[n],enumerable:!(a=gI(t,n))||a.enumerable});return e};var C=(e,t,r)=>(r=e!=null?mI(hI(e)):{},_u(t||!e||!e.__esModule?La(r,"default",{value:e,enumerable:!0}):r,e)),bI=e=>_u(La({},"__esModule",{value:!0}),e);var Va=u((N0,fp)=>{"use strict";function yS(e,t){for(var r=-1,a=t.length,n=e.length;++r<a;)e[n+r]=t[r];return e}fp.exports=yS});var yo=u((B0,mp)=>{"use strict";var hS=typeof global=="object"&&global&&global.Object===Object&&global;mp.exports=hS});var ne=u((M0,gp)=>{"use strict";var AS=yo(),bS=typeof self=="object"&&self&&self.Object===Object&&self,IS=AS||bS||Function("return this")();gp.exports=IS});var Rt=u((G0,yp)=>{"use strict";var SS=ne(),wS=SS.Symbol;yp.exports=wS});var Ip=u((k0,bp)=>{"use strict";var hp=Rt(),Ap=Object.prototype,TS=Ap.hasOwnProperty,vS=Ap.toString,Vr=hp?hp.toStringTag:void 0;function ES(e){var t=TS.call(e,Vr),r=e[Vr];try{e[Vr]=void 0;var a=!0}catch{}var n=vS.call(e);return a&&(t?e[Vr]=r:delete e[Vr]),n}bp.exports=ES});var wp=u((F0,Sp)=>{"use strict";var RS=Object.prototype,xS=RS.toString;function _S(e){return xS.call(e)}Sp.exports=_S});var dt=u((Q0,Ep)=>{"use strict";var Tp=Rt(),OS=Ip(),PS=wp(),LS="[object Null]",CS="[object Undefined]",vp=Tp?Tp.toStringTag:void 0;function qS(e){return e==null?e===void 0?CS:LS:vp&&vp in Object(e)?OS(e):PS(e)}Ep.exports=qS});var ge=u((j0,Rp)=>{"use strict";function US(e){return e!=null&&typeof e=="object"}Rp.exports=US});var _p=u((W0,xp)=>{"use strict";var DS=dt(),NS=ge(),BS="[object Arguments]";function MS(e){return NS(e)&&DS(e)==BS}xp.exports=MS});var Yr=u(($0,Lp)=>{"use strict";var Op=_p(),GS=ge(),Pp=Object.prototype,kS=Pp.hasOwnProperty,FS=Pp.propertyIsEnumerable,QS=Op(function(){return arguments}())?Op:function(e){return GS(e)&&kS.call(e,"callee")&&!FS.call(e,"callee")};Lp.exports=QS});var ee=u((K0,Cp)=>{"use strict";var jS=Array.isArray;Cp.exports=jS});var Np=u((V0,Dp)=>{"use strict";var qp=Rt(),WS=Yr(),$S=ee(),Up=qp?qp.isConcatSpreadable:void 0;function KS(e){return $S(e)||WS(e)||!!(Up&&e&&e[Up])}Dp.exports=KS});var ho=u((Y0,Mp)=>{"use strict";var VS=Va(),YS=Np();function Bp(e,t,r,a,n){var o=-1,s=e.length;for(r||(r=YS),n||(n=[]);++o<s;){var i=e[o];t>0&&r(i)?t>1?Bp(i,t-1,r,a,n):VS(n,i):a||(n[n.length]=i)}return n}Mp.exports=Bp});var Hr=u((H0,Gp)=>{"use strict";function HS(e){return e}Gp.exports=HS});var Ya=u((z0,kp)=>{"use strict";function zS(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)}kp.exports=zS});var Ao=u((J0,Qp)=>{"use strict";var JS=Ya(),Fp=Math.max;function XS(e,t,r){return t=Fp(t===void 0?e.length-1:t,0),function(){for(var a=arguments,n=-1,o=Fp(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),JS(e,this,i)}}Qp.exports=XS});var Wp=u((X0,jp)=>{"use strict";function ZS(e){return function(){return e}}jp.exports=ZS});var Te=u((Z0,$p)=>{"use strict";function ew(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}$p.exports=ew});var zr=u((ek,Kp)=>{"use strict";var tw=dt(),rw=Te(),aw="[object AsyncFunction]",nw="[object Function]",ow="[object GeneratorFunction]",sw="[object Proxy]";function iw(e){if(!rw(e))return!1;var t=tw(e);return t==nw||t==ow||t==aw||t==sw}Kp.exports=iw});var Yp=u((tk,Vp)=>{"use strict";var uw=ne(),pw=uw["__core-js_shared__"];Vp.exports=pw});var Jp=u((rk,zp)=>{"use strict";var bo=Yp(),Hp=function(){var e=/[^.]+$/.exec(bo&&bo.keys&&bo.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function cw(e){return!!Hp&&Hp in e}zp.exports=cw});var Io=u((ak,Xp)=>{"use strict";var lw=Function.prototype,dw=lw.toString;function fw(e){if(e!=null){try{return dw.call(e)}catch{}try{return e+""}catch{}}return""}Xp.exports=fw});var ec=u((nk,Zp)=>{"use strict";var mw=zr(),gw=Jp(),yw=Te(),hw=Io(),Aw=/[\\^$.*+?()[\]{}|]/g,bw=/^\[object .+?Constructor\]$/,Iw=Function.prototype,Sw=Object.prototype,ww=Iw.toString,Tw=Sw.hasOwnProperty,vw=RegExp("^"+ww.call(Tw).replace(Aw,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Ew(e){if(!yw(e)||gw(e))return!1;var t=mw(e)?vw:bw;return t.test(hw(e))}Zp.exports=Ew});var rc=u((ok,tc)=>{"use strict";function Rw(e,t){return e?.[t]}tc.exports=Rw});var ft=u((sk,ac)=>{"use strict";var xw=ec(),_w=rc();function Ow(e,t){var r=_w(e,t);return xw(r)?r:void 0}ac.exports=Ow});var So=u((ik,nc)=>{"use strict";var Pw=ft(),Lw=function(){try{var e=Pw(Object,"defineProperty");return e({},"",{}),e}catch{}}();nc.exports=Lw});var ic=u((uk,sc)=>{"use strict";var Cw=Wp(),oc=So(),qw=Hr(),Uw=oc?function(e,t){return oc(e,"toString",{configurable:!0,enumerable:!1,value:Cw(t),writable:!0})}:qw;sc.exports=Uw});var wo=u((pk,uc)=>{"use strict";var Dw=800,Nw=16,Bw=Date.now;function Mw(e){var t=0,r=0;return function(){var a=Bw(),n=Nw-(a-r);if(r=a,n>0){if(++t>=Dw)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}uc.exports=Mw});var Ha=u((ck,pc)=>{"use strict";var Gw=ic(),kw=wo(),Fw=kw(Gw);pc.exports=Fw});var To=u((lk,cc)=>{"use strict";var Qw=Hr(),jw=Ao(),Ww=Ha();function $w(e,t){return Ww(jw(e,t,Qw),e+"")}cc.exports=$w});var Jr=u((dk,lc)=>{"use strict";var Kw=ft(),Vw=Kw(Object,"create");lc.exports=Vw});var mc=u((fk,fc)=>{"use strict";var dc=Jr();function Yw(){this.__data__=dc?dc(null):{},this.size=0}fc.exports=Yw});var yc=u((mk,gc)=>{"use strict";function Hw(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}gc.exports=Hw});var Ac=u((gk,hc)=>{"use strict";var zw=Jr(),Jw="__lodash_hash_undefined__",Xw=Object.prototype,Zw=Xw.hasOwnProperty;function eT(e){var t=this.__data__;if(zw){var r=t[e];return r===Jw?void 0:r}return Zw.call(t,e)?t[e]:void 0}hc.exports=eT});var Ic=u((yk,bc)=>{"use strict";var tT=Jr(),rT=Object.prototype,aT=rT.hasOwnProperty;function nT(e){var t=this.__data__;return tT?t[e]!==void 0:aT.call(t,e)}bc.exports=nT});var wc=u((hk,Sc)=>{"use strict";var oT=Jr(),sT="__lodash_hash_undefined__";function iT(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=oT&&t===void 0?sT:t,this}Sc.exports=iT});var vc=u((Ak,Tc)=>{"use strict";var uT=mc(),pT=yc(),cT=Ac(),lT=Ic(),dT=wc();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=uT;Vt.prototype.delete=pT;Vt.prototype.get=cT;Vt.prototype.has=lT;Vt.prototype.set=dT;Tc.exports=Vt});var Rc=u((bk,Ec)=>{"use strict";function fT(){this.__data__=[],this.size=0}Ec.exports=fT});var Yt=u((Ik,xc)=>{"use strict";function mT(e,t){return e===t||e!==e&&t!==t}xc.exports=mT});var Xr=u((Sk,_c)=>{"use strict";var gT=Yt();function yT(e,t){for(var r=e.length;r--;)if(gT(e[r][0],t))return r;return-1}_c.exports=yT});var Pc=u((wk,Oc)=>{"use strict";var hT=Xr(),AT=Array.prototype,bT=AT.splice;function IT(e){var t=this.__data__,r=hT(t,e);if(r<0)return!1;var a=t.length-1;return r==a?t.pop():bT.call(t,r,1),--this.size,!0}Oc.exports=IT});var Cc=u((Tk,Lc)=>{"use strict";var ST=Xr();function wT(e){var t=this.__data__,r=ST(t,e);return r<0?void 0:t[r][1]}Lc.exports=wT});var Uc=u((vk,qc)=>{"use strict";var TT=Xr();function vT(e){return TT(this.__data__,e)>-1}qc.exports=vT});var Nc=u((Ek,Dc)=>{"use strict";var ET=Xr();function RT(e,t){var r=this.__data__,a=ET(r,e);return a<0?(++this.size,r.push([e,t])):r[a][1]=t,this}Dc.exports=RT});var Zr=u((Rk,Bc)=>{"use strict";var xT=Rc(),_T=Pc(),OT=Cc(),PT=Uc(),LT=Nc();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=xT;Ht.prototype.delete=_T;Ht.prototype.get=OT;Ht.prototype.has=PT;Ht.prototype.set=LT;Bc.exports=Ht});var za=u((xk,Mc)=>{"use strict";var CT=ft(),qT=ne(),UT=CT(qT,"Map");Mc.exports=UT});var Fc=u((_k,kc)=>{"use strict";var Gc=vc(),DT=Zr(),NT=za();function BT(){this.size=0,this.__data__={hash:new Gc,map:new(NT||DT),string:new Gc}}kc.exports=BT});var jc=u((Ok,Qc)=>{"use strict";function MT(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}Qc.exports=MT});var ea=u((Pk,Wc)=>{"use strict";var GT=jc();function kT(e,t){var r=e.__data__;return GT(t)?r[typeof t=="string"?"string":"hash"]:r.map}Wc.exports=kT});var Kc=u((Lk,$c)=>{"use strict";var FT=ea();function QT(e){var t=FT(this,e).delete(e);return this.size-=t?1:0,t}$c.exports=QT});var Yc=u((Ck,Vc)=>{"use strict";var jT=ea();function WT(e){return jT(this,e).get(e)}Vc.exports=WT});var zc=u((qk,Hc)=>{"use strict";var $T=ea();function KT(e){return $T(this,e).has(e)}Hc.exports=KT});var Xc=u((Uk,Jc)=>{"use strict";var VT=ea();function YT(e,t){var r=VT(this,e),a=r.size;return r.set(e,t),this.size+=r.size==a?0:1,this}Jc.exports=YT});var Ja=u((Dk,Zc)=>{"use strict";var HT=Fc(),zT=Kc(),JT=Yc(),XT=zc(),ZT=Xc();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=HT;zt.prototype.delete=zT;zt.prototype.get=JT;zt.prototype.has=XT;zt.prototype.set=ZT;Zc.exports=zt});var tl=u((Nk,el)=>{"use strict";var ev="__lodash_hash_undefined__";function tv(e){return this.__data__.set(e,ev),this}el.exports=tv});var al=u((Bk,rl)=>{"use strict";function rv(e){return this.__data__.has(e)}rl.exports=rv});var vo=u((Mk,nl)=>{"use strict";var av=Ja(),nv=tl(),ov=al();function Xa(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new av;++t<r;)this.add(e[t])}Xa.prototype.add=Xa.prototype.push=nv;Xa.prototype.has=ov;nl.exports=Xa});var sl=u((Gk,ol)=>{"use strict";function sv(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}ol.exports=sv});var ul=u((kk,il)=>{"use strict";function iv(e){return e!==e}il.exports=iv});var cl=u((Fk,pl)=>{"use strict";function uv(e,t,r){for(var a=r-1,n=e.length;++a<n;)if(e[a]===t)return a;return-1}pl.exports=uv});var dl=u((Qk,ll)=>{"use strict";var pv=sl(),cv=ul(),lv=cl();function dv(e,t,r){return t===t?lv(e,t,r):pv(e,cv,r)}ll.exports=dv});var Eo=u((jk,fl)=>{"use strict";var fv=dl();function mv(e,t){var r=e==null?0:e.length;return!!r&&fv(e,t,0)>-1}fl.exports=mv});var gl=u((Wk,ml)=>{"use strict";function gv(e,t,r){for(var a=-1,n=e==null?0:e.length;++a<n;)if(r(t,e[a]))return!0;return!1}ml.exports=gv});var Ro=u(($k,yl)=>{"use strict";function yv(e,t){return e.has(t)}yl.exports=yv});var xo=u((Kk,hl)=>{"use strict";var hv=ft(),Av=ne(),bv=hv(Av,"Set");hl.exports=bv});var _o=u((Vk,Al)=>{"use strict";function Iv(){}Al.exports=Iv});var Za=u((Yk,bl)=>{"use strict";function Sv(e){var t=-1,r=Array(e.size);return e.forEach(function(a){r[++t]=a}),r}bl.exports=Sv});var Sl=u((Hk,Il)=>{"use strict";var Oo=xo(),wv=_o(),Tv=Za(),vv=1/0,Ev=Oo&&1/Tv(new Oo([,-0]))[1]==vv?function(e){return new Oo(e)}:wv;Il.exports=Ev});var Tl=u((zk,wl)=>{"use strict";var Rv=vo(),xv=Eo(),_v=gl(),Ov=Ro(),Pv=Sl(),Lv=Za(),Cv=200;function qv(e,t,r){var a=-1,n=xv,o=e.length,s=!0,i=[],p=i;if(r)s=!1,n=_v;else if(o>=Cv){var f=t?null:Pv(e);if(f)return Lv(f);s=!1,n=Ov,p=new Rv}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}wl.exports=qv});var en=u((Jk,vl)=>{"use strict";var Uv=9007199254740991;function Dv(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=Uv}vl.exports=Dv});var Jt=u((Xk,El)=>{"use strict";var Nv=zr(),Bv=en();function Mv(e){return e!=null&&Bv(e.length)&&!Nv(e)}El.exports=Mv});var Po=u((Zk,Rl)=>{"use strict";var Gv=Jt(),kv=ge();function Fv(e){return kv(e)&&Gv(e)}Rl.exports=Fv});var _l=u((eF,xl)=>{"use strict";var Qv=ho(),jv=To(),Wv=Tl(),$v=Po(),Kv=jv(function(e){return Wv(Qv(e,1,$v,!0))});xl.exports=Kv});var Pl=u((tF,Ol)=>{"use strict";var Vv=Zr();function Yv(){this.__data__=new Vv,this.size=0}Ol.exports=Yv});var Cl=u((rF,Ll)=>{"use strict";function Hv(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}Ll.exports=Hv});var Ul=u((aF,ql)=>{"use strict";function zv(e){return this.__data__.get(e)}ql.exports=zv});var Nl=u((nF,Dl)=>{"use strict";function Jv(e){return this.__data__.has(e)}Dl.exports=Jv});var Ml=u((oF,Bl)=>{"use strict";var Xv=Zr(),Zv=za(),eE=Ja(),tE=200;function rE(e,t){var r=this.__data__;if(r instanceof Xv){var a=r.__data__;if(!Zv||a.length<tE-1)return a.push([e,t]),this.size=++r.size,this;r=this.__data__=new eE(a)}return r.set(e,t),this.size=r.size,this}Bl.exports=rE});var ta=u((sF,Gl)=>{"use strict";var aE=Zr(),nE=Pl(),oE=Cl(),sE=Ul(),iE=Nl(),uE=Ml();function Xt(e){var t=this.__data__=new aE(e);this.size=t.size}Xt.prototype.clear=nE;Xt.prototype.delete=oE;Xt.prototype.get=sE;Xt.prototype.has=iE;Xt.prototype.set=uE;Gl.exports=Xt});var ra=u((iF,Fl)=>{"use strict";var kl=So();function pE(e,t,r){t=="__proto__"&&kl?kl(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}Fl.exports=pE});var Lo=u((uF,Ql)=>{"use strict";var cE=ra(),lE=Yt();function dE(e,t,r){(r!==void 0&&!lE(e[t],r)||r===void 0&&!(t in e))&&cE(e,t,r)}Ql.exports=dE});var Wl=u((pF,jl)=>{"use strict";function fE(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}}jl.exports=fE});var Co=u((cF,$l)=>{"use strict";var mE=Wl(),gE=mE();$l.exports=gE});var qo=u((aa,Zt)=>{"use strict";var yE=ne(),Hl=typeof aa=="object"&&aa&&!aa.nodeType&&aa,Kl=Hl&&typeof Zt=="object"&&Zt&&!Zt.nodeType&&Zt,hE=Kl&&Kl.exports===Hl,Vl=hE?yE.Buffer:void 0,Yl=Vl?Vl.allocUnsafe:void 0;function AE(e,t){if(t)return e.slice();var r=e.length,a=Yl?Yl(r):new e.constructor(r);return e.copy(a),a}Zt.exports=AE});var Uo=u((lF,zl)=>{"use strict";var bE=ne(),IE=bE.Uint8Array;zl.exports=IE});var tn=u((dF,Xl)=>{"use strict";var Jl=Uo();function SE(e){var t=new e.constructor(e.byteLength);return new Jl(t).set(new Jl(e)),t}Xl.exports=SE});var Do=u((fF,Zl)=>{"use strict";var wE=tn();function TE(e,t){var r=t?wE(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}Zl.exports=TE});var er=u((mF,ed)=>{"use strict";function vE(e,t){var r=-1,a=e.length;for(t||(t=Array(a));++r<a;)t[r]=e[r];return t}ed.exports=vE});var na=u((gF,rd)=>{"use strict";var EE=Te(),td=Object.create,RE=function(){function e(){}return function(t){if(!EE(t))return{};if(td)return td(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();rd.exports=RE});var No=u((yF,ad)=>{"use strict";function xE(e,t){return function(r){return e(t(r))}}ad.exports=xE});var rn=u((hF,nd)=>{"use strict";var _E=No(),OE=_E(Object.getPrototypeOf,Object);nd.exports=OE});var an=u((AF,od)=>{"use strict";var PE=Object.prototype;function LE(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||PE;return e===r}od.exports=LE});var Bo=u((bF,sd)=>{"use strict";var CE=na(),qE=rn(),UE=an();function DE(e){return typeof e.constructor=="function"&&!UE(e)?CE(qE(e)):{}}sd.exports=DE});var ud=u((IF,id)=>{"use strict";function NE(){return!1}id.exports=NE});var sa=u((oa,tr)=>{"use strict";var BE=ne(),ME=ud(),ld=typeof oa=="object"&&oa&&!oa.nodeType&&oa,pd=ld&&typeof tr=="object"&&tr&&!tr.nodeType&&tr,GE=pd&&pd.exports===ld,cd=GE?BE.Buffer:void 0,kE=cd?cd.isBuffer:void 0,FE=kE||ME;tr.exports=FE});var Mo=u((SF,fd)=>{"use strict";var QE=dt(),jE=rn(),WE=ge(),$E="[object Object]",KE=Function.prototype,VE=Object.prototype,dd=KE.toString,YE=VE.hasOwnProperty,HE=dd.call(Object);function zE(e){if(!WE(e)||QE(e)!=$E)return!1;var t=jE(e);if(t===null)return!0;var r=YE.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&dd.call(r)==HE}fd.exports=zE});var gd=u((wF,md)=>{"use strict";var JE=dt(),XE=en(),ZE=ge(),eR="[object Arguments]",tR="[object Array]",rR="[object Boolean]",aR="[object Date]",nR="[object Error]",oR="[object Function]",sR="[object Map]",iR="[object Number]",uR="[object Object]",pR="[object RegExp]",cR="[object Set]",lR="[object String]",dR="[object WeakMap]",fR="[object ArrayBuffer]",mR="[object DataView]",gR="[object Float32Array]",yR="[object Float64Array]",hR="[object Int8Array]",AR="[object Int16Array]",bR="[object Int32Array]",IR="[object Uint8Array]",SR="[object Uint8ClampedArray]",wR="[object Uint16Array]",TR="[object Uint32Array]",B={};B[gR]=B[yR]=B[hR]=B[AR]=B[bR]=B[IR]=B[SR]=B[wR]=B[TR]=!0;B[eR]=B[tR]=B[fR]=B[rR]=B[mR]=B[aR]=B[nR]=B[oR]=B[sR]=B[iR]=B[uR]=B[pR]=B[cR]=B[lR]=B[dR]=!1;function vR(e){return ZE(e)&&XE(e.length)&&!!B[JE(e)]}md.exports=vR});var nn=u((TF,yd)=>{"use strict";function ER(e){return function(t){return e(t)}}yd.exports=ER});var on=u((ia,rr)=>{"use strict";var RR=yo(),hd=typeof ia=="object"&&ia&&!ia.nodeType&&ia,ua=hd&&typeof rr=="object"&&rr&&!rr.nodeType&&rr,xR=ua&&ua.exports===hd,Go=xR&&RR.process,_R=function(){try{var e=ua&&ua.require&&ua.require("util").types;return e||Go&&Go.binding&&Go.binding("util")}catch{}}();rr.exports=_R});var sn=u((vF,Id)=>{"use strict";var OR=gd(),PR=nn(),Ad=on(),bd=Ad&&Ad.isTypedArray,LR=bd?PR(bd):OR;Id.exports=LR});var ko=u((EF,Sd)=>{"use strict";function CR(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}Sd.exports=CR});var Fo=u((RF,wd)=>{"use strict";var qR=ra(),UR=Yt(),DR=Object.prototype,NR=DR.hasOwnProperty;function BR(e,t,r){var a=e[t];(!(NR.call(e,t)&&UR(a,r))||r===void 0&&!(t in e))&&qR(e,t,r)}wd.exports=BR});var ar=u((xF,Td)=>{"use strict";var MR=Fo(),GR=ra();function kR(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?GR(r,i,p):MR(r,i,p)}return r}Td.exports=kR});var Ed=u((_F,vd)=>{"use strict";function FR(e,t){for(var r=-1,a=Array(e);++r<e;)a[r]=t(r);return a}vd.exports=FR});var pa=u((OF,Rd)=>{"use strict";var QR=9007199254740991,jR=/^(?:0|[1-9]\d*)$/;function WR(e,t){var r=typeof e;return t=t??QR,!!t&&(r=="number"||r!="symbol"&&jR.test(e))&&e>-1&&e%1==0&&e<t}Rd.exports=WR});var Qo=u((PF,xd)=>{"use strict";var $R=Ed(),KR=Yr(),VR=ee(),YR=sa(),HR=pa(),zR=sn(),JR=Object.prototype,XR=JR.hasOwnProperty;function ZR(e,t){var r=VR(e),a=!r&&KR(e),n=!r&&!a&&YR(e),o=!r&&!a&&!n&&zR(e),s=r||a||n||o,i=s?$R(e.length,String):[],p=i.length;for(var f in e)(t||XR.call(e,f))&&!(s&&(f=="length"||n&&(f=="offset"||f=="parent")||o&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||HR(f,p)))&&i.push(f);return i}xd.exports=ZR});var Od=u((LF,_d)=>{"use strict";function ex(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}_d.exports=ex});var Ld=u((CF,Pd)=>{"use strict";var tx=Te(),rx=an(),ax=Od(),nx=Object.prototype,ox=nx.hasOwnProperty;function sx(e){if(!tx(e))return ax(e);var t=rx(e),r=[];for(var a in e)a=="constructor"&&(t||!ox.call(e,a))||r.push(a);return r}Pd.exports=sx});var nr=u((qF,Cd)=>{"use strict";var ix=Qo(),ux=Ld(),px=Jt();function cx(e){return px(e)?ix(e,!0):ux(e)}Cd.exports=cx});var Ud=u((UF,qd)=>{"use strict";var lx=ar(),dx=nr();function fx(e){return lx(e,dx(e))}qd.exports=fx});var kd=u((DF,Gd)=>{"use strict";var Dd=Lo(),mx=qo(),gx=Do(),yx=er(),hx=Bo(),Nd=Yr(),Bd=ee(),Ax=Po(),bx=sa(),Ix=zr(),Sx=Te(),wx=Mo(),Tx=sn(),Md=ko(),vx=Ud();function Ex(e,t,r,a,n,o,s){var i=Md(e,r),p=Md(t,r),f=s.get(p);if(f){Dd(e,r,f);return}var m=o?o(i,p,r+"",e,t,s):void 0,y=m===void 0;if(y){var g=Bd(p),S=!g&&bx(p),P=!g&&!S&&Tx(p);m=p,g||S||P?Bd(i)?m=i:Ax(i)?m=yx(i):S?(y=!1,m=mx(p,!0)):P?(y=!1,m=gx(p,!0)):m=[]:wx(p)||Nd(p)?(m=i,Nd(i)?m=vx(i):(!Sx(i)||Ix(i))&&(m=hx(p))):y=!1}y&&(s.set(p,m),n(m,p,a,o,s),s.delete(p)),Dd(e,r,m)}Gd.exports=Ex});var jd=u((NF,Qd)=>{"use strict";var Rx=ta(),xx=Lo(),_x=Co(),Ox=kd(),Px=Te(),Lx=nr(),Cx=ko();function Fd(e,t,r,a,n){e!==t&&_x(t,function(o,s){if(n||(n=new Rx),Px(o))Ox(e,t,s,r,Fd,a,n);else{var i=a?a(Cx(e,s),o,s+"",e,t,n):void 0;i===void 0&&(i=o),xx(e,s,i)}},Lx)}Qd.exports=Fd});var $d=u((BF,Wd)=>{"use strict";var qx=Yt(),Ux=Jt(),Dx=pa(),Nx=Te();function Bx(e,t,r){if(!Nx(r))return!1;var a=typeof t;return(a=="number"?Ux(r)&&Dx(t,r.length):a=="string"&&t in r)?qx(r[t],e):!1}Wd.exports=Bx});var Vd=u((MF,Kd)=>{"use strict";var Mx=To(),Gx=$d();function kx(e){return Mx(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&&Gx(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})}Kd.exports=kx});var jo=u((GF,Yd)=>{"use strict";var Fx=jd(),Qx=Vd(),jx=Qx(function(e,t,r){Fx(e,t,r)});Yd.exports=jx});var zf=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 Gs=u((ij,Jf)=>{"use strict";Jf.exports={}});var tm=u((uj,em)=>{"use strict";var J=zf(),wO=Gs(),Xf=Array.prototype.push;function TO(e,t){return t==2?function(r,a){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}function ks(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 vO(e){return function(t){return e({},t)}}function EO(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&&Xf.apply(s,o),t!=a&&Xf.apply(s,n.slice(t+1)),e.apply(this,s)}}function Fs(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 Qs(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:wO,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,oI=g.toPath,Su=kt(J.aryMethod),sI={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:ks(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 Qs(e,I(h),a)}}};function iI(I,h){if(s.cap){var b=J.iterateeRearg[I];if(b)return dI(h,b);var v=!n&&J.iterateeAry[I];if(v)return lI(h,v)}return h}function uI(I,h,b){return p||s.curry&&b>1?R(h,b):h}function wu(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):EO(h,O)}return h}function Tu(I,h,b){return s.rearg&&b>1&&(m||!J.skipRearg[I])?Ir(h,J.methodRearg[I]||J.aryRearg[b]):h}function pI(I,h){h=oI(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 cI(I){return fe.runInContext.convert(I)(void 0)}function vu(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 Qs(Ne,b,Ie,Be)}}function lI(I,h){return Eu(I,function(b){return typeof b=="function"?ks(b,h):b})}function dI(I,h){return Eu(I,function(b){var v=h.length;return TO(Ir(ks(b,v),h),v)})}function Eu(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 Ru(I,h,b){var v,O=J.aliasToReal[I]||I,te=h,Ne=sI[O];return Ne?te=Ne(h):s.immutable&&(J.mutate.array[O]?te=Fs(h,Zf):J.mutate.object[O]?te=Fs(h,vO(h)):J.mutate.set[O]&&(te=Fs(h,pI))),E(Su,function(Ie){return E(J.aryMethod[Ie],function(Be){if(O==Be){var xu=J.methodSpread[O],fI=xu&&xu.afterRearg;return v=fI?wu(O,Tu(O,te,Ie),Ie):Tu(O,wu(O,te,Ie),Ie),v=iI(O,v),v=uI(O,v,Ie),!1}}),!v}),v||(v=te),v==h&&(v=p?R(v,1):function(){return h.apply(this,arguments)}),v.convert=vu(O,h),v.placeholder=h.placeholder=b,v}if(!o)return Ru(t,r,i);var fe=r,wr=[];return E(Su,function(I){E(J.aryMethod[I],function(h){var b=fe[J.remap[h]||h];b&&wr.push([h,Ru(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=vu(I,h),wr.push([I,h])}}),E(wr,function(I){fe[I[0]]=I[1]}),fe.convert=cI,fe.placeholder=fe,E(kt(fe),function(I){E(J.realToAlias[I]||[],function(h){fe[h]=fe[I]})}),fe}em.exports=Qs});var Ws=u((pj,rm)=>{"use strict";var RO=ft(),xO=ne(),_O=RO(xO,"WeakMap");rm.exports=_O});var $s=u((cj,nm)=>{"use strict";var am=Ws(),OO=am&&new am;nm.exports=OO});var Ks=u((lj,sm)=>{"use strict";var PO=Hr(),om=$s(),LO=om?function(e,t){return om.set(e,t),e}:PO;sm.exports=LO});var Ia=u((dj,im)=>{"use strict";var CO=na(),qO=Te();function UO(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=CO(e.prototype),a=e.apply(r,t);return qO(a)?a:r}}im.exports=UO});var pm=u((fj,um)=>{"use strict";var DO=Ia(),NO=ne(),BO=1;function MO(e,t,r){var a=t&BO,n=DO(e);function o(){var s=this&&this!==NO&&this instanceof o?n:e;return s.apply(a?r:this,arguments)}return o}um.exports=MO});var Vs=u((mj,cm)=>{"use strict";var GO=Math.max;function kO(e,t,r,a){for(var n=-1,o=e.length,s=r.length,i=-1,p=t.length,f=GO(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}cm.exports=kO});var Ys=u((gj,lm)=>{"use strict";var FO=Math.max;function QO(e,t,r,a){for(var n=-1,o=e.length,s=-1,i=r.length,p=-1,f=t.length,m=FO(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}lm.exports=QO});var fm=u((yj,dm)=>{"use strict";function jO(e,t){for(var r=e.length,a=0;r--;)e[r]===t&&++a;return a}dm.exports=jO});var Rn=u((hj,mm)=>{"use strict";function WO(){}mm.exports=WO});var _n=u((Aj,gm)=>{"use strict";var $O=na(),KO=Rn(),VO=4294967295;function xn(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=VO,this.__views__=[]}xn.prototype=$O(KO.prototype);xn.prototype.constructor=xn;gm.exports=xn});var Hs=u((bj,hm)=>{"use strict";var ym=$s(),YO=_o(),HO=ym?function(e){return ym.get(e)}:YO;hm.exports=HO});var bm=u((Ij,Am)=>{"use strict";var zO={};Am.exports=zO});var wm=u((Sj,Sm)=>{"use strict";var Im=bm(),JO=Object.prototype,XO=JO.hasOwnProperty;function ZO(e){for(var t=e.name+"",r=Im[t],a=XO.call(Im,t)?r.length:0;a--;){var n=r[a],o=n.func;if(o==null||o==e)return n.name}return t}Sm.exports=ZO});var zs=u((wj,Tm)=>{"use strict";var eP=na(),tP=Rn();function On(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}On.prototype=eP(tP.prototype);On.prototype.constructor=On;Tm.exports=On});var Em=u((Tj,vm)=>{"use strict";var rP=_n(),aP=zs(),nP=er();function oP(e){if(e instanceof rP)return e.clone();var t=new aP(e.__wrapped__,e.__chain__);return t.__actions__=nP(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}vm.exports=oP});var _m=u((vj,xm)=>{"use strict";var sP=_n(),Rm=zs(),iP=Rn(),uP=ee(),pP=ge(),cP=Em(),lP=Object.prototype,dP=lP.hasOwnProperty;function Pn(e){if(pP(e)&&!uP(e)&&!(e instanceof sP)){if(e instanceof Rm)return e;if(dP.call(e,"__wrapped__"))return cP(e)}return new Rm(e)}Pn.prototype=iP.prototype;Pn.prototype.constructor=Pn;xm.exports=Pn});var Pm=u((Ej,Om)=>{"use strict";var fP=_n(),mP=Hs(),gP=wm(),yP=_m();function hP(e){var t=gP(e),r=yP[t];if(typeof r!="function"||!(t in fP.prototype))return!1;if(e===r)return!0;var a=mP(r);return!!a&&e===a[0]}Om.exports=hP});var Js=u((Rj,Lm)=>{"use strict";var AP=Ks(),bP=wo(),IP=bP(AP);Lm.exports=IP});var qm=u((xj,Cm)=>{"use strict";var SP=/\{\n\/\* \[wrapped with (.+)\] \*/,wP=/,? & /;function TP(e){var t=e.match(SP);return t?t[1].split(wP):[]}Cm.exports=TP});var Dm=u((_j,Um)=>{"use strict";var vP=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function EP(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(vP,`{
2
2
  /* [wrapped with `+t+`] */
3
- `)}qm.exports=vP});var Ln=u((_j,Dm)=>{"use strict";function EP(e,t){for(var r=-1,a=e==null?0:e.length;++r<a&&t(e[r],r,e)!==!1;);return e}Dm.exports=EP});var Bm=u((Oj,Nm)=>{"use strict";var RP=Ln(),xP=vo(),_P=1,OP=2,PP=8,LP=16,CP=32,qP=64,UP=128,DP=256,NP=512,BP=[["ary",UP],["bind",_P],["bindKey",OP],["curry",PP],["curryRight",LP],["flip",NP],["partial",CP],["partialRight",qP],["rearg",DP]];function MP(e,t){return RP(BP,function(r){var a="_."+r[0];t&r[1]&&!xP(e,a)&&e.push(a)}),e.sort()}Nm.exports=MP});var Js=u((Pj,Mm)=>{"use strict";var GP=Cm(),kP=Um(),FP=Ha(),QP=Bm();function jP(e,t,r){var a=t+"";return FP(e,kP(a,QP(GP(a),r)))}Mm.exports=jP});var Xs=u((Lj,Fm)=>{"use strict";var WP=Om(),$P=zs(),KP=Js(),VP=1,YP=2,HP=4,zP=8,Gm=32,km=64;function JP(e,t,r,a,n,o,s,i,p,f){var m=t&zP,y=m?s:void 0,g=m?void 0:s,S=m?o:void 0,P=m?void 0:o;t|=m?Gm:km,t&=~(m?km:Gm),t&HP||(t&=~(VP|YP));var x=[e,t,n,S,y,P,g,i,p,f],R=r.apply(void 0,x);return WP(e)&&$P(R,x),R.placeholder=a,KP(R,e,t)}Fm.exports=JP});var Zs=u((Cj,Qm)=>{"use strict";function XP(e){var t=e;return t.placeholder}Qm.exports=XP});var Wm=u((qj,jm)=>{"use strict";var ZP=er(),eL=pa(),tL=Math.min;function rL(e,t){for(var r=e.length,a=tL(t.length,r),n=ZP(e);a--;){var o=t[a];e[a]=eL(o,r)?n[o]:void 0}return e}jm.exports=rL});var Cn=u((Uj,Km)=>{"use strict";var $m="__lodash_placeholder__";function aL(e,t){for(var r=-1,a=e.length,n=0,o=[];++r<a;){var s=e[r];(s===t||s===$m)&&(e[r]=$m,o[n++]=r)}return o}Km.exports=aL});var ei=u((Dj,Hm)=>{"use strict";var nL=Ks(),oL=Vs(),sL=dm(),Vm=Ia(),iL=Xs(),uL=Zs(),pL=Wm(),cL=Cn(),lL=ne(),dL=1,fL=2,mL=8,gL=16,yL=128,hL=512;function Ym(e,t,r,a,n,o,s,i,p,f){var m=t&yL,y=t&dL,g=t&fL,S=t&(mL|gL),P=t&hL,x=g?void 0:Vm(e);function R(){for(var E=arguments.length,q=Array(E),xe=E;xe--;)q[xe]=arguments[xe];if(S)var be=uL(R),it=sL(q,be);if(a&&(q=nL(q,a,n,S)),o&&(q=oL(q,o,s,S)),E-=it,S&&E<f){var kt=cL(q,be);return iL(e,t,Ym,R.placeholder,r,q,kt,i,p,f-E)}var Ir=y?r:this,Sr=g?Ir[e]:e;return E=q.length,i?q=pL(q,i):P&&E>1&&q.reverse(),m&&p<E&&(q.length=p),this&&this!==lL&&this instanceof R&&(Sr=x||Vm(Sr)),Sr.apply(Ir,q)}return R}Hm.exports=Ym});var Jm=u((Nj,zm)=>{"use strict";var AL=Ya(),bL=Ia(),IL=ei(),SL=Xs(),wL=Zs(),TL=Cn(),vL=ne();function EL(e,t,r){var a=bL(e);function n(){for(var o=arguments.length,s=Array(o),i=o,p=wL(n);i--;)s[i]=arguments[i];var f=o<3&&s[0]!==p&&s[o-1]!==p?[]:TL(s,p);if(o-=f.length,o<r)return SL(e,t,IL,n.placeholder,void 0,s,f,void 0,void 0,r-o);var m=this&&this!==vL&&this instanceof n?a:e;return AL(m,this,s)}return n}zm.exports=EL});var Zm=u((Bj,Xm)=>{"use strict";var RL=Ya(),xL=Ia(),_L=ne(),OL=1;function PL(e,t,r,a){var n=t&OL,o=xL(e);function s(){for(var i=-1,p=arguments.length,f=-1,m=a.length,y=Array(m+p),g=this&&this!==_L&&this instanceof s?o:e;++f<m;)y[f]=a[f];for(;p--;)y[f++]=arguments[++i];return RL(g,n?r:this,y)}return s}Xm.exports=PL});var og=u((Mj,ng)=>{"use strict";var LL=Ks(),CL=Vs(),eg=Cn(),tg="__lodash_placeholder__",ti=1,qL=2,UL=4,rg=8,Sa=128,ag=256,DL=Math.min;function NL(e,t){var r=e[1],a=t[1],n=r|a,o=n<(ti|qL|Sa),s=a==Sa&&r==rg||a==Sa&&r==ag&&e[7].length<=t[8]||a==(Sa|ag)&&t[7].length<=t[8]&&r==rg;if(!(o||s))return e;a&ti&&(e[2]=t[2],n|=r&ti?0:UL);var i=t[3];if(i){var p=e[3];e[3]=p?LL(p,i,t[4]):i,e[4]=p?eg(e[3],tg):t[4]}return i=t[5],i&&(p=e[5],e[5]=p?CL(p,i,t[6]):i,e[6]=p?eg(e[5],tg):t[6]),i=t[7],i&&(e[7]=i),a&Sa&&(e[8]=e[8]==null?t[8]:DL(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=n,e}ng.exports=NL});var ig=u((Gj,sg)=>{"use strict";var BL=/\s/;function ML(e){for(var t=e.length;t--&&BL.test(e.charAt(t)););return t}sg.exports=ML});var pg=u((kj,ug)=>{"use strict";var GL=ig(),kL=/^\s+/;function FL(e){return e&&e.slice(0,GL(e)+1).replace(kL,"")}ug.exports=FL});var fr=u((Fj,cg)=>{"use strict";var QL=dt(),jL=ge(),WL="[object Symbol]";function $L(e){return typeof e=="symbol"||jL(e)&&QL(e)==WL}cg.exports=$L});var mg=u((Qj,fg)=>{"use strict";var KL=pg(),lg=Te(),VL=fr(),dg=0/0,YL=/^[-+]0x[0-9a-f]+$/i,HL=/^0b[01]+$/i,zL=/^0o[0-7]+$/i,JL=parseInt;function XL(e){if(typeof e=="number")return e;if(VL(e))return dg;if(lg(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=lg(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=KL(e);var r=HL.test(e);return r||zL.test(e)?JL(e.slice(2),r?2:8):YL.test(e)?dg:+e}fg.exports=XL});var hg=u((jj,yg)=>{"use strict";var ZL=mg(),gg=1/0,eC=17976931348623157e292;function tC(e){if(!e)return e===0?e:0;if(e=ZL(e),e===gg||e===-gg){var t=e<0?-1:1;return t*eC}return e===e?e:0}yg.exports=tC});var ri=u((Wj,Ag)=>{"use strict";var rC=hg();function aC(e){var t=rC(e),r=t%1;return t===t?r?t-r:t:0}Ag.exports=aC});var qn=u(($j,Tg)=>{"use strict";var nC=$s(),oC=um(),sC=Jm(),iC=ei(),uC=Zm(),pC=Ys(),cC=og(),lC=zs(),dC=Js(),bg=ri(),fC="Expected a function",Ig=1,mC=2,ai=8,ni=16,oi=32,Sg=64,wg=Math.max;function gC(e,t,r,a,n,o,s,i){var p=t&mC;if(!p&&typeof e!="function")throw new TypeError(fC);var f=a?a.length:0;if(f||(t&=~(oi|Sg),a=n=void 0),s=s===void 0?s:wg(bg(s),0),i=i===void 0?i:bg(i),f-=n?n.length:0,t&Sg){var m=a,y=n;a=n=void 0}var g=p?void 0:pC(e),S=[e,t,r,a,n,m,y,o,s,i];if(g&&cC(S,g),e=S[0],t=S[1],r=S[2],a=S[3],n=S[4],i=S[9]=S[9]===void 0?p?0:e.length:wg(S[9]-f,0),!i&&t&(ai|ni)&&(t&=~(ai|ni)),!t||t==Ig)var P=oC(e,t,r);else t==ai||t==ni?P=sC(e,t,i):(t==oi||t==(Ig|oi))&&!n.length?P=uC(e,t,r,a):P=iC.apply(void 0,S);var x=g?nC:lC;return dC(x(P,S),e,t)}Tg.exports=gC});var Eg=u((Kj,vg)=>{"use strict";var yC=qn(),hC=128;function AC(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,yC(e,hC,void 0,void 0,void 0,void 0,t)}vg.exports=AC});var xg=u((Vj,Rg)=>{"use strict";var bC=Do(),IC=bC(Object.keys,Object);Rg.exports=IC});var si=u((Yj,_g)=>{"use strict";var SC=an(),wC=xg(),TC=Object.prototype,vC=TC.hasOwnProperty;function EC(e){if(!SC(e))return wC(e);var t=[];for(var r in Object(e))vC.call(e,r)&&r!="constructor"&&t.push(r);return t}_g.exports=EC});var mr=u((Hj,Og)=>{"use strict";var RC=Fo(),xC=si(),_C=Jt();function OC(e){return _C(e)?RC(e):xC(e)}Og.exports=OC});var ii=u((zj,Pg)=>{"use strict";var PC=ar(),LC=mr();function CC(e,t){return e&&PC(t,LC(t),e)}Pg.exports=CC});var Cg=u((Jj,Lg)=>{"use strict";var qC=ar(),UC=nr();function DC(e,t){return e&&qC(t,UC(t),e)}Lg.exports=DC});var Ug=u((Xj,qg)=>{"use strict";function NC(e,t){for(var r=-1,a=e==null?0:e.length,n=0,o=[];++r<a;){var s=e[r];t(s,r,e)&&(o[n++]=s)}return o}qg.exports=NC});var ui=u((Zj,Dg)=>{"use strict";function BC(){return[]}Dg.exports=BC});var Un=u((eW,Bg)=>{"use strict";var MC=Ug(),GC=ui(),kC=Object.prototype,FC=kC.propertyIsEnumerable,Ng=Object.getOwnPropertySymbols,QC=Ng?function(e){return e==null?[]:(e=Object(e),MC(Ng(e),function(t){return FC.call(e,t)}))}:GC;Bg.exports=QC});var Gg=u((tW,Mg)=>{"use strict";var jC=ar(),WC=Un();function $C(e,t){return jC(e,WC(e),t)}Mg.exports=$C});var pi=u((rW,kg)=>{"use strict";var KC=Va(),VC=rn(),YC=Un(),HC=ui(),zC=Object.getOwnPropertySymbols,JC=zC?function(e){for(var t=[];e;)KC(t,YC(e)),e=VC(e);return t}:HC;kg.exports=JC});var Qg=u((aW,Fg)=>{"use strict";var XC=ar(),ZC=pi();function eq(e,t){return XC(e,ZC(e),t)}Fg.exports=eq});var ci=u((nW,jg)=>{"use strict";var tq=Va(),rq=ee();function aq(e,t,r){var a=t(e);return rq(e)?a:tq(a,r(e))}jg.exports=aq});var li=u((oW,Wg)=>{"use strict";var nq=ci(),oq=Un(),sq=mr();function iq(e){return nq(e,sq,oq)}Wg.exports=iq});var Kg=u((sW,$g)=>{"use strict";var uq=ci(),pq=pi(),cq=nr();function lq(e){return uq(e,cq,pq)}$g.exports=lq});var Yg=u((iW,Vg)=>{"use strict";var dq=ft(),fq=ne(),mq=dq(fq,"DataView");Vg.exports=mq});var zg=u((uW,Hg)=>{"use strict";var gq=ft(),yq=ne(),hq=gq(yq,"Promise");Hg.exports=hq});var yr=u((pW,ay)=>{"use strict";var di=Yg(),fi=za(),mi=zg(),gi=Ro(),yi=Qs(),ry=dt(),gr=bo(),Jg="[object Map]",Aq="[object Object]",Xg="[object Promise]",Zg="[object Set]",ey="[object WeakMap]",ty="[object DataView]",bq=gr(di),Iq=gr(fi),Sq=gr(mi),wq=gr(gi),Tq=gr(yi),Dt=ry;(di&&Dt(new di(new ArrayBuffer(1)))!=ty||fi&&Dt(new fi)!=Jg||mi&&Dt(mi.resolve())!=Xg||gi&&Dt(new gi)!=Zg||yi&&Dt(new yi)!=ey)&&(Dt=function(e){var t=ry(e),r=t==Aq?e.constructor:void 0,a=r?gr(r):"";if(a)switch(a){case bq:return ty;case Iq:return Jg;case Sq:return Xg;case wq:return Zg;case Tq:return ey}return t});ay.exports=Dt});var oy=u((cW,ny)=>{"use strict";var vq=Object.prototype,Eq=vq.hasOwnProperty;function Rq(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&Eq.call(e,"index")&&(r.index=e.index,r.input=e.input),r}ny.exports=Rq});var iy=u((lW,sy)=>{"use strict";var xq=tn();function _q(e,t){var r=t?xq(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}sy.exports=_q});var py=u((dW,uy)=>{"use strict";var Oq=/\w*$/;function Pq(e){var t=new e.constructor(e.source,Oq.exec(e));return t.lastIndex=e.lastIndex,t}uy.exports=Pq});var my=u((fW,fy)=>{"use strict";var cy=Rt(),ly=cy?cy.prototype:void 0,dy=ly?ly.valueOf:void 0;function Lq(e){return dy?Object(dy.call(e)):{}}fy.exports=Lq});var yy=u((mW,gy)=>{"use strict";var Cq=tn(),qq=iy(),Uq=py(),Dq=my(),Nq=Uo(),Bq="[object Boolean]",Mq="[object Date]",Gq="[object Map]",kq="[object Number]",Fq="[object RegExp]",Qq="[object Set]",jq="[object String]",Wq="[object Symbol]",$q="[object ArrayBuffer]",Kq="[object DataView]",Vq="[object Float32Array]",Yq="[object Float64Array]",Hq="[object Int8Array]",zq="[object Int16Array]",Jq="[object Int32Array]",Xq="[object Uint8Array]",Zq="[object Uint8ClampedArray]",eU="[object Uint16Array]",tU="[object Uint32Array]";function rU(e,t,r){var a=e.constructor;switch(t){case $q:return Cq(e);case Bq:case Mq:return new a(+e);case Kq:return qq(e,r);case Vq:case Yq:case Hq:case zq:case Jq:case Xq:case Zq:case eU:case tU:return Nq(e,r);case Gq:return new a;case kq:case jq:return new a(e);case Fq:return Uq(e);case Qq:return new a;case Wq:return Dq(e)}}gy.exports=rU});var Ay=u((gW,hy)=>{"use strict";var aU=yr(),nU=ge(),oU="[object Map]";function sU(e){return nU(e)&&aU(e)==oU}hy.exports=sU});var wy=u((yW,Sy)=>{"use strict";var iU=Ay(),uU=nn(),by=on(),Iy=by&&by.isMap,pU=Iy?uU(Iy):iU;Sy.exports=pU});var vy=u((hW,Ty)=>{"use strict";var cU=yr(),lU=ge(),dU="[object Set]";function fU(e){return lU(e)&&cU(e)==dU}Ty.exports=fU});var _y=u((AW,xy)=>{"use strict";var mU=vy(),gU=nn(),Ey=on(),Ry=Ey&&Ey.isSet,yU=Ry?gU(Ry):mU;xy.exports=yU});var hi=u((bW,Cy)=>{"use strict";var hU=ta(),AU=Ln(),bU=ko(),IU=ii(),SU=Cg(),wU=Co(),TU=er(),vU=Gg(),EU=Qg(),RU=li(),xU=Kg(),_U=yr(),OU=oy(),PU=yy(),LU=No(),CU=ee(),qU=sa(),UU=wy(),DU=Te(),NU=_y(),BU=mr(),MU=nr(),GU=1,kU=2,FU=4,Oy="[object Arguments]",QU="[object Array]",jU="[object Boolean]",WU="[object Date]",$U="[object Error]",Py="[object Function]",KU="[object GeneratorFunction]",VU="[object Map]",YU="[object Number]",Ly="[object Object]",HU="[object RegExp]",zU="[object Set]",JU="[object String]",XU="[object Symbol]",ZU="[object WeakMap]",eD="[object ArrayBuffer]",tD="[object DataView]",rD="[object Float32Array]",aD="[object Float64Array]",nD="[object Int8Array]",oD="[object Int16Array]",sD="[object Int32Array]",iD="[object Uint8Array]",uD="[object Uint8ClampedArray]",pD="[object Uint16Array]",cD="[object Uint32Array]",D={};D[Oy]=D[QU]=D[eD]=D[tD]=D[jU]=D[WU]=D[rD]=D[aD]=D[nD]=D[oD]=D[sD]=D[VU]=D[YU]=D[Ly]=D[HU]=D[zU]=D[JU]=D[XU]=D[iD]=D[uD]=D[pD]=D[cD]=!0;D[$U]=D[Py]=D[ZU]=!1;function Dn(e,t,r,a,n,o){var s,i=t&GU,p=t&kU,f=t&FU;if(r&&(s=n?r(e,a,n,o):r(e)),s!==void 0)return s;if(!DU(e))return e;var m=CU(e);if(m){if(s=OU(e),!i)return TU(e,s)}else{var y=_U(e),g=y==Py||y==KU;if(qU(e))return wU(e,i);if(y==Ly||y==Oy||g&&!n){if(s=p||g?{}:LU(e),!i)return p?EU(e,SU(s,e)):vU(e,IU(s,e))}else{if(!D[y])return n?e:{};s=PU(e,y,i)}}o||(o=new hU);var S=o.get(e);if(S)return S;o.set(e,s),NU(e)?e.forEach(function(R){s.add(Dn(R,t,r,R,e,o))}):UU(e)&&e.forEach(function(R,E){s.set(E,Dn(R,t,r,E,e,o))});var P=f?p?xU:RU:p?MU:BU,x=m?void 0:P(e);return AU(x||e,function(R,E){x&&(E=R,R=e[E]),bU(s,E,Dn(R,t,r,E,e,o))}),s}Cy.exports=Dn});var Uy=u((IW,qy)=>{"use strict";var lD=hi(),dD=4;function fD(e){return lD(e,dD)}qy.exports=fD});var Ny=u((SW,Dy)=>{"use strict";var mD=qn(),gD=8;function Ai(e,t,r){t=r?void 0:t;var a=mD(e,gD,void 0,void 0,void 0,void 0,void 0,t);return a.placeholder=Ai.placeholder,a}Ai.placeholder={};Dy.exports=Ai});var My=u((wW,By)=>{"use strict";var yD=dt(),hD=ge(),AD=Bo(),bD="[object DOMException]",ID="[object Error]";function SD(e){if(!hD(e))return!1;var t=yD(e);return t==ID||t==bD||typeof e.message=="string"&&typeof e.name=="string"&&!AD(e)}By.exports=SD});var ky=u((TW,Gy)=>{"use strict";var wD=yr(),TD=ge(),vD="[object WeakMap]";function ED(e){return TD(e)&&wD(e)==vD}Gy.exports=ED});var Qy=u((vW,Fy)=>{"use strict";function RD(e,t){for(var r=-1,a=e==null?0:e.length;++r<a;)if(t(e[r],r,e))return!0;return!1}Fy.exports=RD});var bi=u((EW,jy)=>{"use strict";var xD=To(),_D=Qy(),OD=Eo(),PD=1,LD=2;function CD(e,t,r,a,n,o){var s=r&PD,i=e.length,p=t.length;if(i!=p&&!(s&&p>i))return!1;var f=o.get(e),m=o.get(t);if(f&&m)return f==t&&m==e;var y=-1,g=!0,S=r&LD?new xD:void 0;for(o.set(e,t),o.set(t,e);++y<i;){var P=e[y],x=t[y];if(a)var R=s?a(x,P,y,t,e,o):a(P,x,y,e,t,o);if(R!==void 0){if(R)continue;g=!1;break}if(S){if(!_D(t,function(E,q){if(!OD(S,q)&&(P===E||n(P,E,r,a,o)))return S.push(q)})){g=!1;break}}else if(!(P===x||n(P,x,r,a,o))){g=!1;break}}return o.delete(e),o.delete(t),g}jy.exports=CD});var $y=u((RW,Wy)=>{"use strict";function qD(e){var t=-1,r=Array(e.size);return e.forEach(function(a,n){r[++t]=[n,a]}),r}Wy.exports=qD});var zy=u((xW,Hy)=>{"use strict";var Ky=Rt(),Vy=qo(),UD=Yt(),DD=bi(),ND=$y(),BD=Za(),MD=1,GD=2,kD="[object Boolean]",FD="[object Date]",QD="[object Error]",jD="[object Map]",WD="[object Number]",$D="[object RegExp]",KD="[object Set]",VD="[object String]",YD="[object Symbol]",HD="[object ArrayBuffer]",zD="[object DataView]",Yy=Ky?Ky.prototype:void 0,Ii=Yy?Yy.valueOf:void 0;function JD(e,t,r,a,n,o,s){switch(r){case zD:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case HD:return!(e.byteLength!=t.byteLength||!o(new Vy(e),new Vy(t)));case kD:case FD:case WD:return UD(+e,+t);case QD:return e.name==t.name&&e.message==t.message;case $D:case VD:return e==t+"";case jD:var i=ND;case KD:var p=a&MD;if(i||(i=BD),e.size!=t.size&&!p)return!1;var f=s.get(e);if(f)return f==t;a|=GD,s.set(e,t);var m=DD(i(e),i(t),a,n,o,s);return s.delete(e),m;case YD:if(Ii)return Ii.call(e)==Ii.call(t)}return!1}Hy.exports=JD});var Zy=u((_W,Xy)=>{"use strict";var Jy=li(),XD=1,ZD=Object.prototype,eN=ZD.hasOwnProperty;function tN(e,t,r,a,n,o){var s=r&XD,i=Jy(e),p=i.length,f=Jy(t),m=f.length;if(p!=m&&!s)return!1;for(var y=p;y--;){var g=i[y];if(!(s?g in t:eN.call(t,g)))return!1}var S=o.get(e),P=o.get(t);if(S&&P)return S==t&&P==e;var x=!0;o.set(e,t),o.set(t,e);for(var R=s;++y<p;){g=i[y];var E=e[g],q=t[g];if(a)var xe=s?a(q,E,g,t,e,o):a(E,q,g,e,t,o);if(!(xe===void 0?E===q||n(E,q,r,a,o):xe)){x=!1;break}R||(R=g=="constructor")}if(x&&!R){var be=e.constructor,it=t.constructor;be!=it&&"constructor"in e&&"constructor"in t&&!(typeof be=="function"&&be instanceof be&&typeof it=="function"&&it instanceof it)&&(x=!1)}return o.delete(e),o.delete(t),x}Xy.exports=tN});var ih=u((OW,sh)=>{"use strict";var Si=ta(),rN=bi(),aN=zy(),nN=Zy(),eh=yr(),th=ee(),rh=sa(),oN=sn(),sN=1,ah="[object Arguments]",nh="[object Array]",Nn="[object Object]",iN=Object.prototype,oh=iN.hasOwnProperty;function uN(e,t,r,a,n,o){var s=th(e),i=th(t),p=s?nh:eh(e),f=i?nh:eh(t);p=p==ah?Nn:p,f=f==ah?Nn:f;var m=p==Nn,y=f==Nn,g=p==f;if(g&&rh(e)){if(!rh(t))return!1;s=!0,m=!1}if(g&&!m)return o||(o=new Si),s||oN(e)?rN(e,t,r,a,n,o):aN(e,t,p,r,a,n,o);if(!(r&sN)){var S=m&&oh.call(e,"__wrapped__"),P=y&&oh.call(t,"__wrapped__");if(S||P){var x=S?e.value():e,R=P?t.value():t;return o||(o=new Si),n(x,R,r,a,o)}}return g?(o||(o=new Si),nN(e,t,r,a,n,o)):!1}sh.exports=uN});var wi=u((PW,ch)=>{"use strict";var pN=ih(),uh=ge();function ph(e,t,r,a,n){return e===t?!0:e==null||t==null||!uh(e)&&!uh(t)?e!==e&&t!==t:pN(e,t,r,a,ph,n)}ch.exports=ph});var dh=u((LW,lh)=>{"use strict";var cN=ta(),lN=wi(),dN=1,fN=2;function mN(e,t,r,a){var n=r.length,o=n,s=!a;if(e==null)return!o;for(e=Object(e);n--;){var i=r[n];if(s&&i[2]?i[1]!==e[i[0]]:!(i[0]in e))return!1}for(;++n<o;){i=r[n];var p=i[0],f=e[p],m=i[1];if(s&&i[2]){if(f===void 0&&!(p in e))return!1}else{var y=new cN;if(a)var g=a(f,m,p,e,t,y);if(!(g===void 0?lN(m,f,dN|fN,a,y):g))return!1}}return!0}lh.exports=mN});var Ti=u((CW,fh)=>{"use strict";var gN=Te();function yN(e){return e===e&&!gN(e)}fh.exports=yN});var gh=u((qW,mh)=>{"use strict";var hN=Ti(),AN=mr();function bN(e){for(var t=AN(e),r=t.length;r--;){var a=t[r],n=e[a];t[r]=[a,n,hN(n)]}return t}mh.exports=bN});var vi=u((UW,yh)=>{"use strict";function IN(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}yh.exports=IN});var Ah=u((DW,hh)=>{"use strict";var SN=dh(),wN=gh(),TN=vi();function vN(e){var t=wN(e);return t.length==1&&t[0][2]?TN(t[0][0],t[0][1]):function(r){return r===e||SN(r,e,t)}}hh.exports=vN});var Bn=u((NW,bh)=>{"use strict";var EN=ee(),RN=fr(),xN=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,_N=/^\w*$/;function ON(e,t){if(EN(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||RN(e)?!0:_N.test(e)||!xN.test(e)||t!=null&&e in Object(t)}bh.exports=ON});var wh=u((BW,Sh)=>{"use strict";var Ih=Ja(),PN="Expected a function";function Ei(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(PN);var r=function(){var a=arguments,n=t?t.apply(this,a):a[0],o=r.cache;if(o.has(n))return o.get(n);var s=e.apply(this,a);return r.cache=o.set(n,s)||o,s};return r.cache=new(Ei.Cache||Ih),r}Ei.Cache=Ih;Sh.exports=Ei});var vh=u((MW,Th)=>{"use strict";var LN=wh(),CN=500;function qN(e){var t=LN(e,function(a){return r.size===CN&&r.clear(),a}),r=t.cache;return t}Th.exports=qN});var Ri=u((GW,Eh)=>{"use strict";var UN=vh(),DN=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,NN=/\\(\\)?/g,BN=UN(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(DN,function(r,a,n,o){t.push(n?o.replace(NN,"$1"):a||r)}),t});Eh.exports=BN});var xi=u((kW,Rh)=>{"use strict";function MN(e,t){for(var r=-1,a=e==null?0:e.length,n=Array(a);++r<a;)n[r]=t(e[r],r,e);return n}Rh.exports=MN});var Ch=u((FW,Lh)=>{"use strict";var xh=Rt(),GN=xi(),kN=ee(),FN=fr(),QN=1/0,_h=xh?xh.prototype:void 0,Oh=_h?_h.toString:void 0;function Ph(e){if(typeof e=="string")return e;if(kN(e))return GN(e,Ph)+"";if(FN(e))return Oh?Oh.call(e):"";var t=e+"";return t=="0"&&1/e==-QN?"-0":t}Lh.exports=Ph});var _i=u((QW,qh)=>{"use strict";var jN=Ch();function WN(e){return e==null?"":jN(e)}qh.exports=WN});var Oi=u((jW,Uh)=>{"use strict";var $N=ee(),KN=Bn(),VN=Ri(),YN=_i();function HN(e,t){return $N(e)?e:KN(e,t)?[e]:VN(YN(e))}Uh.exports=HN});var hr=u((WW,Dh)=>{"use strict";var zN=fr(),JN=1/0;function XN(e){if(typeof e=="string"||zN(e))return e;var t=e+"";return t=="0"&&1/e==-JN?"-0":t}Dh.exports=XN});var Pi=u(($W,Nh)=>{"use strict";var ZN=Oi(),eB=hr();function tB(e,t){t=ZN(t,e);for(var r=0,a=t.length;e!=null&&r<a;)e=e[eB(t[r++])];return r&&r==a?e:void 0}Nh.exports=tB});var Mh=u((KW,Bh)=>{"use strict";var rB=Pi();function aB(e,t,r){var a=e==null?void 0:rB(e,t);return a===void 0?r:a}Bh.exports=aB});var kh=u((VW,Gh)=>{"use strict";function nB(e,t){return e!=null&&t in Object(e)}Gh.exports=nB});var Qh=u((YW,Fh)=>{"use strict";var oB=Oi(),sB=Yr(),iB=ee(),uB=pa(),pB=en(),cB=hr();function lB(e,t,r){t=oB(t,e);for(var a=-1,n=t.length,o=!1;++a<n;){var s=cB(t[a]);if(!(o=e!=null&&r(e,s)))break;e=e[s]}return o||++a!=n?o:(n=e==null?0:e.length,!!n&&pB(n)&&uB(s,n)&&(iB(e)||sB(e)))}Fh.exports=lB});var Wh=u((HW,jh)=>{"use strict";var dB=kh(),fB=Qh();function mB(e,t){return e!=null&&fB(e,t,dB)}jh.exports=mB});var Kh=u((zW,$h)=>{"use strict";var gB=wi(),yB=Mh(),hB=Wh(),AB=Bn(),bB=Ti(),IB=vi(),SB=hr(),wB=1,TB=2;function vB(e,t){return AB(e)&&bB(t)?IB(SB(e),t):function(r){var a=yB(r,e);return a===void 0&&a===t?hB(r,e):gB(t,a,wB|TB)}}$h.exports=vB});var Yh=u((JW,Vh)=>{"use strict";function EB(e){return function(t){return t?.[e]}}Vh.exports=EB});var zh=u((XW,Hh)=>{"use strict";var RB=Pi();function xB(e){return function(t){return RB(t,e)}}Hh.exports=xB});var Xh=u((ZW,Jh)=>{"use strict";var _B=Yh(),OB=zh(),PB=Bn(),LB=hr();function CB(e){return PB(e)?_B(LB(e)):OB(e)}Jh.exports=CB});var Li=u((e$,Zh)=>{"use strict";var qB=Ah(),UB=Kh(),DB=Hr(),NB=ee(),BB=Xh();function MB(e){return typeof e=="function"?e:e==null?DB:typeof e=="object"?NB(e)?UB(e[0],e[1]):qB(e):BB(e)}Zh.exports=MB});var tA=u((t$,eA)=>{"use strict";var GB=hi(),kB=Li(),FB=1;function QB(e){return kB(typeof e=="function"?e:GB(e,FB))}eA.exports=QB});var aA=u((r$,rA)=>{"use strict";var jB=yo();function WB(e){var t=e==null?0:e.length;return t?jB(e,1):[]}rA.exports=WB});var oA=u((a$,nA)=>{"use strict";var $B=aA(),KB=ho(),VB=Ha();function YB(e){return VB(KB(e,void 0,$B),e+"")}nA.exports=YB});var iA=u((n$,sA)=>{"use strict";var HB=qn(),zB=oA(),JB=256,XB=zB(function(e,t){return HB(e,JB,void 0,void 0,void 0,t)});sA.exports=XB});var pA=u((o$,uA)=>{"use strict";var ZB=xi(),eM=er(),tM=ee(),rM=fr(),aM=Ri(),nM=hr(),oM=_i();function sM(e){return tM(e)?ZB(e,nM):rM(e)?[e]:eM(aM(oM(e)))}uA.exports=sM});var lA=u((s$,cA)=>{"use strict";cA.exports={ary:Eg(),assign:ii(),clone:Uy(),curry:Ny(),forEach:Ln(),isArray:ee(),isError:My(),isFunction:zr(),isWeakMap:ky(),iteratee:tA(),keys:si(),rearg:iA(),toInteger:ri(),toPath:pA()}});var fA=u((i$,dA)=>{"use strict";var iM=em(),uM=lA();function pM(e,t,r){return iM(uM,e,t,r)}dA.exports=pM});var Ci=u((u$,gA)=>{"use strict";var cM=fA(),mA=cM("merge",Qo());mA.placeholder=Ms();gA.exports=mA});var yb=u((eK,gb)=>{"use strict";function PM(e,t,r,a){for(var n=-1,o=e==null?0:e.length;++n<o;){var s=e[n];t(a,s,r(s),e)}return a}gb.exports=PM});var Ab=u((tK,hb)=>{"use strict";var LM=Lo(),CM=mr();function qM(e,t){return e&&LM(e,t,CM)}hb.exports=qM});var Ib=u((rK,bb)=>{"use strict";var UM=Jt();function DM(e,t){return function(r,a){if(r==null)return r;if(!UM(r))return e(r,a);for(var n=r.length,o=t?n:-1,s=Object(r);(t?o--:++o<n)&&a(s[o],o,s)!==!1;);return r}}bb.exports=DM});var wb=u((aK,Sb)=>{"use strict";var NM=Ab(),BM=Ib(),MM=BM(NM);Sb.exports=MM});var vb=u((nK,Tb)=>{"use strict";var GM=wb();function kM(e,t,r,a){return GM(e,function(n,o,s){t(a,n,r(n),s)}),a}Tb.exports=kM});var Rb=u((oK,Eb)=>{"use strict";var FM=yb(),QM=vb(),jM=Li(),WM=ee();function $M(e,t){return function(r,a){var n=WM(r)?FM:QM,o=t?t():{};return n(r,e,jM(a,2),o)}}Eb.exports=$M});var _b=u((sK,xb)=>{"use strict";var KM=ra(),VM=Rb(),YM=Object.prototype,HM=YM.hasOwnProperty,zM=VM(function(e,t,r){HM.call(e,r)?e[r].push(t):KM(e,r,[t])});xb.exports=zM});var bG={};w(bG,{Method:()=>Hn,ai:()=>bu,api:()=>Yi,auditLogs:()=>gt,automations:()=>In,backups:()=>ve,branding:()=>dn,constants:()=>Qr,environmentVariables:()=>Ke,features:()=>Le,groups:()=>Q,init:()=>Yf,licensing:()=>Fe,logger:()=>Nt,mappers:()=>K,middleware:()=>Gi,plugins:()=>Sn,publicApi:()=>vn,quotas:()=>We,scimGroups:()=>Ar,scimUsers:()=>de,sdk:()=>Ui,users:()=>tt,utils:()=>Kt});module.exports=AI(bG);var Hn=(o=>(o.POST="POST",o.GET="GET",o.PATCH="PATCH",o.DELETE="DELETE",o.PUT="PUT",o))(Hn||{});var Ui={};w(Ui,{ai:()=>ss,auditLogs:()=>gt,automations:()=>In,backups:()=>ve,branding:()=>dn,environmentVariables:()=>Ke,features:()=>Le,groups:()=>Q,init:()=>Yf,licensing:()=>Fe,logger:()=>Nt,plugins:()=>Sn,publicApi:()=>vn,quotas:()=>We,scimGroups:()=>Ar,scimUsers:()=>de,users:()=>tt,utils:()=>Kt});var dn={};w(dn,{getBrandingConfig:()=>u_});var Le={};w(Le,{checkBackups:()=>ye,checkFeature:()=>cn,checkFeatures:()=>es,checkSCIM:()=>ns,isAppBuildersEnabled:()=>Pt,isAuditLogsEnabled:()=>ln,isBackupsEnabled:()=>ts,isBrandingEnabled:()=>rs,isEnforceableSSO:()=>uf,isExpandedPublicApiEnabled:()=>Ze,isPWAEnabled:()=>a_,isSSOEnforced:()=>n_,isSyncAutomationsEnabled:()=>t_,isTriggerAutomationRunEnabled:()=>r_,isUserGroupsEnabled:()=>as,isViewPermissionEnabled:()=>o_,isViewReadonlyColumnsEnabled:()=>s_});var oe=require("@budibase/types"),Xe=require("@budibase/backend-core");var Fe={};w(Fe,{cache:()=>Oe,client:()=>lt,features:()=>$a,getFreeLicense:()=>zo,getLicense:()=>Yo,getLicenseFromKey:()=>Ho,keys:()=>Zo,offline:()=>un,quotas:()=>Ka});var Oe={};w(Oe,{getCachedLicense:()=>of,invalidate:()=>sf,refresh:()=>xt});var Ca=require("@budibase/backend-core"),Tr,bI=async()=>{Tr=await Ca.RedisClient.init(Ca.redis.utils.Databases.LICENSES)},II=async()=>{Tr&&await Tr.finish()};process.on("exit",async()=>{await II()});var zn=async()=>(Tr||await bI(),Tr);var lt={};w(lt,{activateLicenseKey:()=>co,getLicense:()=>Wt,getLicenseFromKey:()=>po,triggerQuota:()=>oS});var _u=C(require("node-fetch"));var Ou=require("@budibase/backend-core"),Jn=class{constructor(t){this.apiCall=t=>async(r="",a={})=>{a.headers||(a.headers={}),a.headers["Content-Type"]||(a.headers={"Content-Type":"application/json",Accept:"application/json",...a.headers});let n=a.headers["Content-Type"]==="application/json";Ou.logging.correlation.setHeader(a.headers);let o={method:t,body:n?JSON.stringify(a.body):a.body,headers:a.headers,credentials:"include"};return(0,_u.default)(`${this.host}${r}`,o)};this.post=this.apiCall("POST");this.get=this.apiCall("GET");this.patch=this.apiCall("PATCH");this.del=this.apiCall("DELETE");this.put=this.apiCall("PUT");this.host=t}},Xn=Jn;var Qa=require("@budibase/types"),L=require("@budibase/backend-core");var Me={};w(Me,{bustCache:()=>to,getCurrentUsageValues:()=>Bu,getQuotaUsage:()=>wt,setAllUsage:()=>ao,setAppUsageValue:()=>ro,setUsage:()=>Uu,setUsagePerApp:()=>Du,utils:()=>Rr});var re=require("@budibase/types"),pe=require("@budibase/backend-core");var Rr={};w(Rr,{generateBaseQuotaUsage:()=>qa,generateNewMonthlyQuotas:()=>Er,generateNewQuotaUsage:()=>eo,getBreakdownName:()=>Da,getCurrentMonthString:()=>ut,getQuotaDocId:()=>vr,setCurrentMonth:()=>Ua,setQuotaReset:()=>Zn});var X=require("@budibase/types"),St=require("@budibase/backend-core"),vr=()=>St.context.isSelfHostUsingCloud()?`quota_usage_${St.context.getTenantId()}`:St.db.StaticDatabases.GLOBAL.docs.usageQuota,Pu=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},Zn=e=>{e.quotaReset=Pu()},ut=()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},qa=()=>({usageQuota:{[X.StaticQuotaName.APPS]:0,[X.StaticQuotaName.ROWS]:0,[X.StaticQuotaName.PLUGINS]:0,[X.StaticQuotaName.USERS]:0,[X.StaticQuotaName.CREATORS]:0,[X.StaticQuotaName.USER_GROUPS]:0,[X.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[ut()]:Er()}}),eo=()=>{let e={_id:vr(),quotaReset:Pu(),...qa(),apps:{}};return Ua(e),e},Er=()=>({[X.MonthlyQuotaName.QUERIES]:0,[X.MonthlyQuotaName.AUTOMATIONS]:0,[X.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,triggers:{}}),Ua=e=>{let t=ut();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=Er()),e.monthly.current=e.monthly[t]},Da=(e,t)=>{if(!(!t||!e))switch(e){case X.MonthlyQuotaName.AUTOMATIONS:return X.BreakdownQuotaName.AUTOMATIONS;case X.MonthlyQuotaName.QUERIES:return St.db.isTableId(t)?X.BreakdownQuotaName.ROW_QUERIES:St.db.isDatasourceId(t)?X.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}};var Lu=pe.Duration.fromSeconds(60).toMs(),{Writethrough:Cu}=pe.cache.writethrough;function wI(e){return delete e.usageLimits,delete e.usageQuota.automationRuns,delete e.usageQuota.emails,delete e.usageQuota.storage,delete e.usageQuota.views,delete e.usageQuota.publishedApps,delete e.usageQuota.developers,e}var Na=()=>pe.tenancy.isSelfHostUsingCloud()?new Cu(pe.tenancy.getSelfHostCloudDB(),Lu):new Cu(pe.tenancy.getGlobalDB(),Lu);async function to(e=0){let r=Na(),a=vr(),n=await r.tryGet(a);n&&n._rev&&await r.remove(a,n._rev).catch(async o=>{if(e<1)return await to(e+1);throw o})}var wt=async()=>{let e=Na(),t=await e.tryGet(vr());if(!t){t=eo();let{rev:r}=await e.put(t);t._rev=r}return Ua(t),Zn(t),wI(t)},Uu=async(e,t,r)=>ao({name:t,type:r,values:{total:e}}),Du=async(e,t,r)=>{let a=Na(),n=await wt(),o=Object.values(e).reduce((i,p)=>i+p,0);for(let[i,p]of Object.entries(e))n=Nu(n,t,r,{total:o,app:p},{appId:i});let s=await a.put(n);return n._rev=s.rev,n},TI=(e,t,r,a)=>{let n=Da(t,r);if(!n||!a?.breakdown)return e;e.breakdown||(e.breakdown={}),e.breakdown[n]||(e.breakdown[n]={parent:t,values:{}});let o=e.breakdown[n];return o.values[r]=a.breakdown,e},ro=(e,t,r,a={},n)=>{let o;try{o=pe.db.getProdAppID(a?.appId||pe.context.getAppId())}catch{}if(!o||!n.app||!re.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[o]||(e.apps={...e.apps,[o]:qa()});let s=e.apps[o];switch(r){case re.QuotaUsageType.STATIC:s.usageQuota[t]=n.app;break;case re.QuotaUsageType.MONTHLY:{let i=ut(),p=t,f=s.monthly[i];f||(s.monthly[i]=Er(),f=s.monthly[i]),f[p]=n.app,re.BREAKDOWN_QUOTA_NAMES.includes(p)&&a?.id&&(f=TI(f,p,a.id,n));break}}return e},qu=(e,t,r,a)=>{if(!re.APP_QUOTA_NAMES.includes(r))return{};let n;try{n=pe.db.getProdAppID(pe.context.getAppId())}catch{}if(!n||!e.apps||!e.apps[n])return{app:0};let o=e.apps[n];switch(t){case re.QuotaUsageType.STATIC:if(o.usageQuota?.[r])return{app:o.usageQuota[r]};break;case re.QuotaUsageType.MONTHLY:{let s=ut(),i=r;if(!o.monthly?.[s]?.[i])break;let p=o.monthly[s],f=p[i],m,y=Da(i,a);return y&&a&&p.breakdown?.[y]&&(m=p.breakdown[y]?.values[a]),{app:f,breakdown:m||0}}}return{app:0}},vI=(e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},EI=(e,t,r,a)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),a&&(r.monthly[t].triggers[e]=a)},Nu=(e,t,r,a,n={})=>{if(r===re.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=a.total,vI(t,e,a.triggers);else if(r===re.QuotaUsageType.MONTHLY){t=t;let o=ut();e.monthly[o][t]=a.total,EI(t,o,e,a.triggers)}else throw new Error(`Invalid usage type: ${r}`);return ro(e,t,r,n,a)},ao=async e=>{let t=Array.isArray(e)?e:[e],r=Na(),a=await wt();for(let o of t)a=Nu(a,o.name,o.type,o.values,o.opts);let n=await r.put(a,0);return a._rev=n.rev,a},Bu=async(e,t,r)=>{let a=await wt(),n=0,o={};switch(e){case re.QuotaUsageType.STATIC:if(a.usageQuota[t]){let s=t;n=a.usageQuota[s],o=qu(a,e,t,r)}break;case re.QuotaUsageType.MONTHLY:{let s=ut(),i=t;a.monthly[s][i]&&(n=a.monthly[s][i],o=qu(a,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return re.APP_QUOTA_NAMES.includes(t)&&!(o.app||o.breakdown)&&(o.app=o.app||0,o.breakdown=o.breakdown||0),{total:n,app:o.app,breakdown:o.breakdown}};var Se={};w(Se,{destroy:()=>_I,get:()=>no,save:()=>xI});var pt=require("@budibase/backend-core"),RI=()=>({_id:pt.StaticDatabases.GLOBAL.docs.licenseInfo}),xI=async e=>{let t=await no();t={...t,...e};let a=await pt.tenancy.getGlobalDB().put(t);return t._rev=a.rev,t},no=async()=>{let e=pt.tenancy.getGlobalDB();try{return await e.get(pt.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return RI();throw t}},_I=async()=>{let e=pt.tenancy.getGlobalDB(),t=await no();t&&t._rev&&await e.remove(pt.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)};var M={};w(M,{bulkSave:()=>kI,destroy:()=>FI,fetch:()=>NI,generateUserGroupID:()=>UI,get:()=>BI,getBulk:()=>MI,getByName:()=>oo,getGroupUsers:()=>Ma,getGroupUsersParams:()=>Qu,getUserGroupsParams:()=>Fu,save:()=>GI});var N=require("@budibase/backend-core");var _e=require("@budibase/types"),Ft=require("@budibase/backend-core");async function Mu(){let e=Ft.sql.designDoc.base("type");e.sql.tables={[_e.AUDIT_LOG_TYPE]:{fields:{appId:_e.SQLiteType.TEXT,event:_e.SQLiteType.TEXT,userId:_e.SQLiteType.TEXT,timestamp:_e.SQLiteType.TEXT,metadata:_e.SQLiteType.TEXT,name:_e.SQLiteType.TEXT,type:_e.SQLiteType.TEXT,fallback:_e.SQLiteType.TEXT}}};let t=Ft.context.getAuditLogsDB(),r;try{r=await t.get(Ft.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(a){if(a.status===404)r=e;else throw a}await t.put(r)}var Ba=require("@budibase/backend-core"),{ViewName:OI,SEPARATOR:PI,DocumentType:LI,createView:CI}=Ba.db,qI=LI.USER+PI;async function Gu(){let e=Ba.tenancy.getGlobalDB(),t=`function(doc) {
4
- if (doc._id.startsWith("${qI}") && Array.isArray(doc.userGroups)) {
3
+ `)}Um.exports=EP});var Ln=u((Oj,Nm)=>{"use strict";function RP(e,t){for(var r=-1,a=e==null?0:e.length;++r<a&&t(e[r],r,e)!==!1;);return e}Nm.exports=RP});var Mm=u((Pj,Bm)=>{"use strict";var xP=Ln(),_P=Eo(),OP=1,PP=2,LP=8,CP=16,qP=32,UP=64,DP=128,NP=256,BP=512,MP=[["ary",DP],["bind",OP],["bindKey",PP],["curry",LP],["curryRight",CP],["flip",BP],["partial",qP],["partialRight",UP],["rearg",NP]];function GP(e,t){return xP(MP,function(r){var a="_."+r[0];t&r[1]&&!_P(e,a)&&e.push(a)}),e.sort()}Bm.exports=GP});var Xs=u((Lj,Gm)=>{"use strict";var kP=qm(),FP=Dm(),QP=Ha(),jP=Mm();function WP(e,t,r){var a=t+"";return QP(e,FP(a,jP(kP(a),r)))}Gm.exports=WP});var Zs=u((Cj,Qm)=>{"use strict";var $P=Pm(),KP=Js(),VP=Xs(),YP=1,HP=2,zP=4,JP=8,km=32,Fm=64;function XP(e,t,r,a,n,o,s,i,p,f){var m=t&JP,y=m?s:void 0,g=m?void 0:s,S=m?o:void 0,P=m?void 0:o;t|=m?km:Fm,t&=~(m?Fm:km),t&zP||(t&=~(YP|HP));var x=[e,t,n,S,y,P,g,i,p,f],R=r.apply(void 0,x);return $P(e)&&KP(R,x),R.placeholder=a,VP(R,e,t)}Qm.exports=XP});var ei=u((qj,jm)=>{"use strict";function ZP(e){var t=e;return t.placeholder}jm.exports=ZP});var $m=u((Uj,Wm)=>{"use strict";var eL=er(),tL=pa(),rL=Math.min;function aL(e,t){for(var r=e.length,a=rL(t.length,r),n=eL(e);a--;){var o=t[a];e[a]=tL(o,r)?n[o]:void 0}return e}Wm.exports=aL});var Cn=u((Dj,Vm)=>{"use strict";var Km="__lodash_placeholder__";function nL(e,t){for(var r=-1,a=e.length,n=0,o=[];++r<a;){var s=e[r];(s===t||s===Km)&&(e[r]=Km,o[n++]=r)}return o}Vm.exports=nL});var ti=u((Nj,zm)=>{"use strict";var oL=Vs(),sL=Ys(),iL=fm(),Ym=Ia(),uL=Zs(),pL=ei(),cL=$m(),lL=Cn(),dL=ne(),fL=1,mL=2,gL=8,yL=16,hL=128,AL=512;function Hm(e,t,r,a,n,o,s,i,p,f){var m=t&hL,y=t&fL,g=t&mL,S=t&(gL|yL),P=t&AL,x=g?void 0:Ym(e);function R(){for(var E=arguments.length,q=Array(E),xe=E;xe--;)q[xe]=arguments[xe];if(S)var be=pL(R),it=iL(q,be);if(a&&(q=oL(q,a,n,S)),o&&(q=sL(q,o,s,S)),E-=it,S&&E<f){var kt=lL(q,be);return uL(e,t,Hm,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=cL(q,i):P&&E>1&&q.reverse(),m&&p<E&&(q.length=p),this&&this!==dL&&this instanceof R&&(Sr=x||Ym(Sr)),Sr.apply(Ir,q)}return R}zm.exports=Hm});var Xm=u((Bj,Jm)=>{"use strict";var bL=Ya(),IL=Ia(),SL=ti(),wL=Zs(),TL=ei(),vL=Cn(),EL=ne();function RL(e,t,r){var a=IL(e);function n(){for(var o=arguments.length,s=Array(o),i=o,p=TL(n);i--;)s[i]=arguments[i];var f=o<3&&s[0]!==p&&s[o-1]!==p?[]:vL(s,p);if(o-=f.length,o<r)return wL(e,t,SL,n.placeholder,void 0,s,f,void 0,void 0,r-o);var m=this&&this!==EL&&this instanceof n?a:e;return bL(m,this,s)}return n}Jm.exports=RL});var eg=u((Mj,Zm)=>{"use strict";var xL=Ya(),_L=Ia(),OL=ne(),PL=1;function LL(e,t,r,a){var n=t&PL,o=_L(e);function s(){for(var i=-1,p=arguments.length,f=-1,m=a.length,y=Array(m+p),g=this&&this!==OL&&this instanceof s?o:e;++f<m;)y[f]=a[f];for(;p--;)y[f++]=arguments[++i];return xL(g,n?r:this,y)}return s}Zm.exports=LL});var sg=u((Gj,og)=>{"use strict";var CL=Vs(),qL=Ys(),tg=Cn(),rg="__lodash_placeholder__",ri=1,UL=2,DL=4,ag=8,Sa=128,ng=256,NL=Math.min;function BL(e,t){var r=e[1],a=t[1],n=r|a,o=n<(ri|UL|Sa),s=a==Sa&&r==ag||a==Sa&&r==ng&&e[7].length<=t[8]||a==(Sa|ng)&&t[7].length<=t[8]&&r==ag;if(!(o||s))return e;a&ri&&(e[2]=t[2],n|=r&ri?0:DL);var i=t[3];if(i){var p=e[3];e[3]=p?CL(p,i,t[4]):i,e[4]=p?tg(e[3],rg):t[4]}return i=t[5],i&&(p=e[5],e[5]=p?qL(p,i,t[6]):i,e[6]=p?tg(e[5],rg):t[6]),i=t[7],i&&(e[7]=i),a&Sa&&(e[8]=e[8]==null?t[8]:NL(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=n,e}og.exports=BL});var ug=u((kj,ig)=>{"use strict";var ML=/\s/;function GL(e){for(var t=e.length;t--&&ML.test(e.charAt(t)););return t}ig.exports=GL});var cg=u((Fj,pg)=>{"use strict";var kL=ug(),FL=/^\s+/;function QL(e){return e&&e.slice(0,kL(e)+1).replace(FL,"")}pg.exports=QL});var fr=u((Qj,lg)=>{"use strict";var jL=dt(),WL=ge(),$L="[object Symbol]";function KL(e){return typeof e=="symbol"||WL(e)&&jL(e)==$L}lg.exports=KL});var gg=u((jj,mg)=>{"use strict";var VL=cg(),dg=Te(),YL=fr(),fg=0/0,HL=/^[-+]0x[0-9a-f]+$/i,zL=/^0b[01]+$/i,JL=/^0o[0-7]+$/i,XL=parseInt;function ZL(e){if(typeof e=="number")return e;if(YL(e))return fg;if(dg(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=dg(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=VL(e);var r=zL.test(e);return r||JL.test(e)?XL(e.slice(2),r?2:8):HL.test(e)?fg:+e}mg.exports=ZL});var Ag=u((Wj,hg)=>{"use strict";var eC=gg(),yg=1/0,tC=17976931348623157e292;function rC(e){if(!e)return e===0?e:0;if(e=eC(e),e===yg||e===-yg){var t=e<0?-1:1;return t*tC}return e===e?e:0}hg.exports=rC});var ai=u(($j,bg)=>{"use strict";var aC=Ag();function nC(e){var t=aC(e),r=t%1;return t===t?r?t-r:t:0}bg.exports=nC});var qn=u((Kj,vg)=>{"use strict";var oC=Ks(),sC=pm(),iC=Xm(),uC=ti(),pC=eg(),cC=Hs(),lC=sg(),dC=Js(),fC=Xs(),Ig=ai(),mC="Expected a function",Sg=1,gC=2,ni=8,oi=16,si=32,wg=64,Tg=Math.max;function yC(e,t,r,a,n,o,s,i){var p=t&gC;if(!p&&typeof e!="function")throw new TypeError(mC);var f=a?a.length:0;if(f||(t&=~(si|wg),a=n=void 0),s=s===void 0?s:Tg(Ig(s),0),i=i===void 0?i:Ig(i),f-=n?n.length:0,t&wg){var m=a,y=n;a=n=void 0}var g=p?void 0:cC(e),S=[e,t,r,a,n,m,y,o,s,i];if(g&&lC(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:Tg(S[9]-f,0),!i&&t&(ni|oi)&&(t&=~(ni|oi)),!t||t==Sg)var P=sC(e,t,r);else t==ni||t==oi?P=iC(e,t,i):(t==si||t==(Sg|si))&&!n.length?P=pC(e,t,r,a):P=uC.apply(void 0,S);var x=g?oC:dC;return fC(x(P,S),e,t)}vg.exports=yC});var Rg=u((Vj,Eg)=>{"use strict";var hC=qn(),AC=128;function bC(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,hC(e,AC,void 0,void 0,void 0,void 0,t)}Eg.exports=bC});var _g=u((Yj,xg)=>{"use strict";var IC=No(),SC=IC(Object.keys,Object);xg.exports=SC});var ii=u((Hj,Og)=>{"use strict";var wC=an(),TC=_g(),vC=Object.prototype,EC=vC.hasOwnProperty;function RC(e){if(!wC(e))return TC(e);var t=[];for(var r in Object(e))EC.call(e,r)&&r!="constructor"&&t.push(r);return t}Og.exports=RC});var mr=u((zj,Pg)=>{"use strict";var xC=Qo(),_C=ii(),OC=Jt();function PC(e){return OC(e)?xC(e):_C(e)}Pg.exports=PC});var ui=u((Jj,Lg)=>{"use strict";var LC=ar(),CC=mr();function qC(e,t){return e&&LC(t,CC(t),e)}Lg.exports=qC});var qg=u((Xj,Cg)=>{"use strict";var UC=ar(),DC=nr();function NC(e,t){return e&&UC(t,DC(t),e)}Cg.exports=NC});var Dg=u((Zj,Ug)=>{"use strict";function BC(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}Ug.exports=BC});var pi=u((eW,Ng)=>{"use strict";function MC(){return[]}Ng.exports=MC});var Un=u((tW,Mg)=>{"use strict";var GC=Dg(),kC=pi(),FC=Object.prototype,QC=FC.propertyIsEnumerable,Bg=Object.getOwnPropertySymbols,jC=Bg?function(e){return e==null?[]:(e=Object(e),GC(Bg(e),function(t){return QC.call(e,t)}))}:kC;Mg.exports=jC});var kg=u((rW,Gg)=>{"use strict";var WC=ar(),$C=Un();function KC(e,t){return WC(e,$C(e),t)}Gg.exports=KC});var ci=u((aW,Fg)=>{"use strict";var VC=Va(),YC=rn(),HC=Un(),zC=pi(),JC=Object.getOwnPropertySymbols,XC=JC?function(e){for(var t=[];e;)VC(t,HC(e)),e=YC(e);return t}:zC;Fg.exports=XC});var jg=u((nW,Qg)=>{"use strict";var ZC=ar(),eq=ci();function tq(e,t){return ZC(e,eq(e),t)}Qg.exports=tq});var li=u((oW,Wg)=>{"use strict";var rq=Va(),aq=ee();function nq(e,t,r){var a=t(e);return aq(e)?a:rq(a,r(e))}Wg.exports=nq});var di=u((sW,$g)=>{"use strict";var oq=li(),sq=Un(),iq=mr();function uq(e){return oq(e,iq,sq)}$g.exports=uq});var Vg=u((iW,Kg)=>{"use strict";var pq=li(),cq=ci(),lq=nr();function dq(e){return pq(e,lq,cq)}Kg.exports=dq});var Hg=u((uW,Yg)=>{"use strict";var fq=ft(),mq=ne(),gq=fq(mq,"DataView");Yg.exports=gq});var Jg=u((pW,zg)=>{"use strict";var yq=ft(),hq=ne(),Aq=yq(hq,"Promise");zg.exports=Aq});var yr=u((cW,ny)=>{"use strict";var fi=Hg(),mi=za(),gi=Jg(),yi=xo(),hi=Ws(),ay=dt(),gr=Io(),Xg="[object Map]",bq="[object Object]",Zg="[object Promise]",ey="[object Set]",ty="[object WeakMap]",ry="[object DataView]",Iq=gr(fi),Sq=gr(mi),wq=gr(gi),Tq=gr(yi),vq=gr(hi),Dt=ay;(fi&&Dt(new fi(new ArrayBuffer(1)))!=ry||mi&&Dt(new mi)!=Xg||gi&&Dt(gi.resolve())!=Zg||yi&&Dt(new yi)!=ey||hi&&Dt(new hi)!=ty)&&(Dt=function(e){var t=ay(e),r=t==bq?e.constructor:void 0,a=r?gr(r):"";if(a)switch(a){case Iq:return ry;case Sq:return Xg;case wq:return Zg;case Tq:return ey;case vq:return ty}return t});ny.exports=Dt});var sy=u((lW,oy)=>{"use strict";var Eq=Object.prototype,Rq=Eq.hasOwnProperty;function xq(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&Rq.call(e,"index")&&(r.index=e.index,r.input=e.input),r}oy.exports=xq});var uy=u((dW,iy)=>{"use strict";var _q=tn();function Oq(e,t){var r=t?_q(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}iy.exports=Oq});var cy=u((fW,py)=>{"use strict";var Pq=/\w*$/;function Lq(e){var t=new e.constructor(e.source,Pq.exec(e));return t.lastIndex=e.lastIndex,t}py.exports=Lq});var gy=u((mW,my)=>{"use strict";var ly=Rt(),dy=ly?ly.prototype:void 0,fy=dy?dy.valueOf:void 0;function Cq(e){return fy?Object(fy.call(e)):{}}my.exports=Cq});var hy=u((gW,yy)=>{"use strict";var qq=tn(),Uq=uy(),Dq=cy(),Nq=gy(),Bq=Do(),Mq="[object Boolean]",Gq="[object Date]",kq="[object Map]",Fq="[object Number]",Qq="[object RegExp]",jq="[object Set]",Wq="[object String]",$q="[object Symbol]",Kq="[object ArrayBuffer]",Vq="[object DataView]",Yq="[object Float32Array]",Hq="[object Float64Array]",zq="[object Int8Array]",Jq="[object Int16Array]",Xq="[object Int32Array]",Zq="[object Uint8Array]",eU="[object Uint8ClampedArray]",tU="[object Uint16Array]",rU="[object Uint32Array]";function aU(e,t,r){var a=e.constructor;switch(t){case Kq:return qq(e);case Mq:case Gq:return new a(+e);case Vq:return Uq(e,r);case Yq:case Hq:case zq:case Jq:case Xq:case Zq:case eU:case tU:case rU:return Bq(e,r);case kq:return new a;case Fq:case Wq:return new a(e);case Qq:return Dq(e);case jq:return new a;case $q:return Nq(e)}}yy.exports=aU});var by=u((yW,Ay)=>{"use strict";var nU=yr(),oU=ge(),sU="[object Map]";function iU(e){return oU(e)&&nU(e)==sU}Ay.exports=iU});var Ty=u((hW,wy)=>{"use strict";var uU=by(),pU=nn(),Iy=on(),Sy=Iy&&Iy.isMap,cU=Sy?pU(Sy):uU;wy.exports=cU});var Ey=u((AW,vy)=>{"use strict";var lU=yr(),dU=ge(),fU="[object Set]";function mU(e){return dU(e)&&lU(e)==fU}vy.exports=mU});var Oy=u((bW,_y)=>{"use strict";var gU=Ey(),yU=nn(),Ry=on(),xy=Ry&&Ry.isSet,hU=xy?yU(xy):gU;_y.exports=hU});var Ai=u((IW,qy)=>{"use strict";var AU=ta(),bU=Ln(),IU=Fo(),SU=ui(),wU=qg(),TU=qo(),vU=er(),EU=kg(),RU=jg(),xU=di(),_U=Vg(),OU=yr(),PU=sy(),LU=hy(),CU=Bo(),qU=ee(),UU=sa(),DU=Ty(),NU=Te(),BU=Oy(),MU=mr(),GU=nr(),kU=1,FU=2,QU=4,Py="[object Arguments]",jU="[object Array]",WU="[object Boolean]",$U="[object Date]",KU="[object Error]",Ly="[object Function]",VU="[object GeneratorFunction]",YU="[object Map]",HU="[object Number]",Cy="[object Object]",zU="[object RegExp]",JU="[object Set]",XU="[object String]",ZU="[object Symbol]",eD="[object WeakMap]",tD="[object ArrayBuffer]",rD="[object DataView]",aD="[object Float32Array]",nD="[object Float64Array]",oD="[object Int8Array]",sD="[object Int16Array]",iD="[object Int32Array]",uD="[object Uint8Array]",pD="[object Uint8ClampedArray]",cD="[object Uint16Array]",lD="[object Uint32Array]",D={};D[Py]=D[jU]=D[tD]=D[rD]=D[WU]=D[$U]=D[aD]=D[nD]=D[oD]=D[sD]=D[iD]=D[YU]=D[HU]=D[Cy]=D[zU]=D[JU]=D[XU]=D[ZU]=D[uD]=D[pD]=D[cD]=D[lD]=!0;D[KU]=D[Ly]=D[eD]=!1;function Dn(e,t,r,a,n,o){var s,i=t&kU,p=t&FU,f=t&QU;if(r&&(s=n?r(e,a,n,o):r(e)),s!==void 0)return s;if(!NU(e))return e;var m=qU(e);if(m){if(s=PU(e),!i)return vU(e,s)}else{var y=OU(e),g=y==Ly||y==VU;if(UU(e))return TU(e,i);if(y==Cy||y==Py||g&&!n){if(s=p||g?{}:CU(e),!i)return p?RU(e,wU(s,e)):EU(e,SU(s,e))}else{if(!D[y])return n?e:{};s=LU(e,y,i)}}o||(o=new AU);var S=o.get(e);if(S)return S;o.set(e,s),BU(e)?e.forEach(function(R){s.add(Dn(R,t,r,R,e,o))}):DU(e)&&e.forEach(function(R,E){s.set(E,Dn(R,t,r,E,e,o))});var P=f?p?_U:xU:p?GU:MU,x=m?void 0:P(e);return bU(x||e,function(R,E){x&&(E=R,R=e[E]),IU(s,E,Dn(R,t,r,E,e,o))}),s}qy.exports=Dn});var Dy=u((SW,Uy)=>{"use strict";var dD=Ai(),fD=4;function mD(e){return dD(e,fD)}Uy.exports=mD});var By=u((wW,Ny)=>{"use strict";var gD=qn(),yD=8;function bi(e,t,r){t=r?void 0:t;var a=gD(e,yD,void 0,void 0,void 0,void 0,void 0,t);return a.placeholder=bi.placeholder,a}bi.placeholder={};Ny.exports=bi});var Gy=u((TW,My)=>{"use strict";var hD=dt(),AD=ge(),bD=Mo(),ID="[object DOMException]",SD="[object Error]";function wD(e){if(!AD(e))return!1;var t=hD(e);return t==SD||t==ID||typeof e.message=="string"&&typeof e.name=="string"&&!bD(e)}My.exports=wD});var Fy=u((vW,ky)=>{"use strict";var TD=yr(),vD=ge(),ED="[object WeakMap]";function RD(e){return vD(e)&&TD(e)==ED}ky.exports=RD});var jy=u((EW,Qy)=>{"use strict";function xD(e,t){for(var r=-1,a=e==null?0:e.length;++r<a;)if(t(e[r],r,e))return!0;return!1}Qy.exports=xD});var Ii=u((RW,Wy)=>{"use strict";var _D=vo(),OD=jy(),PD=Ro(),LD=1,CD=2;function qD(e,t,r,a,n,o){var s=r&LD,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&CD?new _D: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(!OD(t,function(E,q){if(!PD(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}Wy.exports=qD});var Ky=u((xW,$y)=>{"use strict";function UD(e){var t=-1,r=Array(e.size);return e.forEach(function(a,n){r[++t]=[n,a]}),r}$y.exports=UD});var Jy=u((_W,zy)=>{"use strict";var Vy=Rt(),Yy=Uo(),DD=Yt(),ND=Ii(),BD=Ky(),MD=Za(),GD=1,kD=2,FD="[object Boolean]",QD="[object Date]",jD="[object Error]",WD="[object Map]",$D="[object Number]",KD="[object RegExp]",VD="[object Set]",YD="[object String]",HD="[object Symbol]",zD="[object ArrayBuffer]",JD="[object DataView]",Hy=Vy?Vy.prototype:void 0,Si=Hy?Hy.valueOf:void 0;function XD(e,t,r,a,n,o,s){switch(r){case JD:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case zD:return!(e.byteLength!=t.byteLength||!o(new Yy(e),new Yy(t)));case FD:case QD:case $D:return DD(+e,+t);case jD:return e.name==t.name&&e.message==t.message;case KD:case YD:return e==t+"";case WD:var i=BD;case VD:var p=a&GD;if(i||(i=MD),e.size!=t.size&&!p)return!1;var f=s.get(e);if(f)return f==t;a|=kD,s.set(e,t);var m=ND(i(e),i(t),a,n,o,s);return s.delete(e),m;case HD:if(Si)return Si.call(e)==Si.call(t)}return!1}zy.exports=XD});var eh=u((OW,Zy)=>{"use strict";var Xy=di(),ZD=1,eN=Object.prototype,tN=eN.hasOwnProperty;function rN(e,t,r,a,n,o){var s=r&ZD,i=Xy(e),p=i.length,f=Xy(t),m=f.length;if(p!=m&&!s)return!1;for(var y=p;y--;){var g=i[y];if(!(s?g in t:tN.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=rN});var uh=u((PW,ih)=>{"use strict";var wi=ta(),aN=Ii(),nN=Jy(),oN=eh(),th=yr(),rh=ee(),ah=sa(),sN=sn(),iN=1,nh="[object Arguments]",oh="[object Array]",Nn="[object Object]",uN=Object.prototype,sh=uN.hasOwnProperty;function pN(e,t,r,a,n,o){var s=rh(e),i=rh(t),p=s?oh:th(e),f=i?oh:th(t);p=p==nh?Nn:p,f=f==nh?Nn:f;var m=p==Nn,y=f==Nn,g=p==f;if(g&&ah(e)){if(!ah(t))return!1;s=!0,m=!1}if(g&&!m)return o||(o=new wi),s||sN(e)?aN(e,t,r,a,n,o):nN(e,t,p,r,a,n,o);if(!(r&iN)){var S=m&&sh.call(e,"__wrapped__"),P=y&&sh.call(t,"__wrapped__");if(S||P){var x=S?e.value():e,R=P?t.value():t;return o||(o=new wi),n(x,R,r,a,o)}}return g?(o||(o=new wi),oN(e,t,r,a,n,o)):!1}ih.exports=pN});var Ti=u((LW,lh)=>{"use strict";var cN=uh(),ph=ge();function ch(e,t,r,a,n){return e===t?!0:e==null||t==null||!ph(e)&&!ph(t)?e!==e&&t!==t:cN(e,t,r,a,ch,n)}lh.exports=ch});var fh=u((CW,dh)=>{"use strict";var lN=ta(),dN=Ti(),fN=1,mN=2;function gN(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 lN;if(a)var g=a(f,m,p,e,t,y);if(!(g===void 0?dN(m,f,fN|mN,a,y):g))return!1}}return!0}dh.exports=gN});var vi=u((qW,mh)=>{"use strict";var yN=Te();function hN(e){return e===e&&!yN(e)}mh.exports=hN});var yh=u((UW,gh)=>{"use strict";var AN=vi(),bN=mr();function IN(e){for(var t=bN(e),r=t.length;r--;){var a=t[r],n=e[a];t[r]=[a,n,AN(n)]}return t}gh.exports=IN});var Ei=u((DW,hh)=>{"use strict";function SN(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}hh.exports=SN});var bh=u((NW,Ah)=>{"use strict";var wN=fh(),TN=yh(),vN=Ei();function EN(e){var t=TN(e);return t.length==1&&t[0][2]?vN(t[0][0],t[0][1]):function(r){return r===e||wN(r,e,t)}}Ah.exports=EN});var Bn=u((BW,Ih)=>{"use strict";var RN=ee(),xN=fr(),_N=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,ON=/^\w*$/;function PN(e,t){if(RN(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||xN(e)?!0:ON.test(e)||!_N.test(e)||t!=null&&e in Object(t)}Ih.exports=PN});var Th=u((MW,wh)=>{"use strict";var Sh=Ja(),LN="Expected a function";function Ri(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(LN);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(Ri.Cache||Sh),r}Ri.Cache=Sh;wh.exports=Ri});var Eh=u((GW,vh)=>{"use strict";var CN=Th(),qN=500;function UN(e){var t=CN(e,function(a){return r.size===qN&&r.clear(),a}),r=t.cache;return t}vh.exports=UN});var xi=u((kW,Rh)=>{"use strict";var DN=Eh(),NN=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,BN=/\\(\\)?/g,MN=DN(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(NN,function(r,a,n,o){t.push(n?o.replace(BN,"$1"):a||r)}),t});Rh.exports=MN});var _i=u((FW,xh)=>{"use strict";function GN(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}xh.exports=GN});var qh=u((QW,Ch)=>{"use strict";var _h=Rt(),kN=_i(),FN=ee(),QN=fr(),jN=1/0,Oh=_h?_h.prototype:void 0,Ph=Oh?Oh.toString:void 0;function Lh(e){if(typeof e=="string")return e;if(FN(e))return kN(e,Lh)+"";if(QN(e))return Ph?Ph.call(e):"";var t=e+"";return t=="0"&&1/e==-jN?"-0":t}Ch.exports=Lh});var Oi=u((jW,Uh)=>{"use strict";var WN=qh();function $N(e){return e==null?"":WN(e)}Uh.exports=$N});var Pi=u((WW,Dh)=>{"use strict";var KN=ee(),VN=Bn(),YN=xi(),HN=Oi();function zN(e,t){return KN(e)?e:VN(e,t)?[e]:YN(HN(e))}Dh.exports=zN});var hr=u(($W,Nh)=>{"use strict";var JN=fr(),XN=1/0;function ZN(e){if(typeof e=="string"||JN(e))return e;var t=e+"";return t=="0"&&1/e==-XN?"-0":t}Nh.exports=ZN});var Li=u((KW,Bh)=>{"use strict";var eB=Pi(),tB=hr();function rB(e,t){t=eB(t,e);for(var r=0,a=t.length;e!=null&&r<a;)e=e[tB(t[r++])];return r&&r==a?e:void 0}Bh.exports=rB});var Gh=u((VW,Mh)=>{"use strict";var aB=Li();function nB(e,t,r){var a=e==null?void 0:aB(e,t);return a===void 0?r:a}Mh.exports=nB});var Fh=u((YW,kh)=>{"use strict";function oB(e,t){return e!=null&&t in Object(e)}kh.exports=oB});var jh=u((HW,Qh)=>{"use strict";var sB=Pi(),iB=Yr(),uB=ee(),pB=pa(),cB=en(),lB=hr();function dB(e,t,r){t=sB(t,e);for(var a=-1,n=t.length,o=!1;++a<n;){var s=lB(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&&cB(n)&&pB(s,n)&&(uB(e)||iB(e)))}Qh.exports=dB});var $h=u((zW,Wh)=>{"use strict";var fB=Fh(),mB=jh();function gB(e,t){return e!=null&&mB(e,t,fB)}Wh.exports=gB});var Vh=u((JW,Kh)=>{"use strict";var yB=Ti(),hB=Gh(),AB=$h(),bB=Bn(),IB=vi(),SB=Ei(),wB=hr(),TB=1,vB=2;function EB(e,t){return bB(e)&&IB(t)?SB(wB(e),t):function(r){var a=hB(r,e);return a===void 0&&a===t?AB(r,e):yB(t,a,TB|vB)}}Kh.exports=EB});var Hh=u((XW,Yh)=>{"use strict";function RB(e){return function(t){return t?.[e]}}Yh.exports=RB});var Jh=u((ZW,zh)=>{"use strict";var xB=Li();function _B(e){return function(t){return xB(t,e)}}zh.exports=_B});var Zh=u((e$,Xh)=>{"use strict";var OB=Hh(),PB=Jh(),LB=Bn(),CB=hr();function qB(e){return LB(e)?OB(CB(e)):PB(e)}Xh.exports=qB});var Ci=u((t$,eA)=>{"use strict";var UB=bh(),DB=Vh(),NB=Hr(),BB=ee(),MB=Zh();function GB(e){return typeof e=="function"?e:e==null?NB:typeof e=="object"?BB(e)?DB(e[0],e[1]):UB(e):MB(e)}eA.exports=GB});var rA=u((r$,tA)=>{"use strict";var kB=Ai(),FB=Ci(),QB=1;function jB(e){return FB(typeof e=="function"?e:kB(e,QB))}tA.exports=jB});var nA=u((a$,aA)=>{"use strict";var WB=ho();function $B(e){var t=e==null?0:e.length;return t?WB(e,1):[]}aA.exports=$B});var sA=u((n$,oA)=>{"use strict";var KB=nA(),VB=Ao(),YB=Ha();function HB(e){return YB(VB(e,void 0,KB),e+"")}oA.exports=HB});var uA=u((o$,iA)=>{"use strict";var zB=qn(),JB=sA(),XB=256,ZB=JB(function(e,t){return zB(e,XB,void 0,void 0,void 0,t)});iA.exports=ZB});var cA=u((s$,pA)=>{"use strict";var eM=_i(),tM=er(),rM=ee(),aM=fr(),nM=xi(),oM=hr(),sM=Oi();function iM(e){return rM(e)?eM(e,oM):aM(e)?[e]:tM(nM(sM(e)))}pA.exports=iM});var dA=u((i$,lA)=>{"use strict";lA.exports={ary:Rg(),assign:ui(),clone:Dy(),curry:By(),forEach:Ln(),isArray:ee(),isError:Gy(),isFunction:zr(),isWeakMap:Fy(),iteratee:rA(),keys:ii(),rearg:uA(),toInteger:ai(),toPath:cA()}});var mA=u((u$,fA)=>{"use strict";var uM=tm(),pM=dA();function cM(e,t,r){return uM(pM,e,t,r)}fA.exports=cM});var qi=u((p$,yA)=>{"use strict";var lM=mA(),gA=lM("merge",jo());gA.placeholder=Gs();yA.exports=gA});var hb=u((tK,yb)=>{"use strict";function LM(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}yb.exports=LM});var bb=u((rK,Ab)=>{"use strict";var CM=Co(),qM=mr();function UM(e,t){return e&&CM(e,t,qM)}Ab.exports=UM});var Sb=u((aK,Ib)=>{"use strict";var DM=Jt();function NM(e,t){return function(r,a){if(r==null)return r;if(!DM(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}}Ib.exports=NM});var Tb=u((nK,wb)=>{"use strict";var BM=bb(),MM=Sb(),GM=MM(BM);wb.exports=GM});var Eb=u((oK,vb)=>{"use strict";var kM=Tb();function FM(e,t,r,a){return kM(e,function(n,o,s){t(a,n,r(n),s)}),a}vb.exports=FM});var xb=u((sK,Rb)=>{"use strict";var QM=hb(),jM=Eb(),WM=Ci(),$M=ee();function KM(e,t){return function(r,a){var n=$M(r)?QM:jM,o=t?t():{};return n(r,e,WM(a,2),o)}}Rb.exports=KM});var Ob=u((iK,_b)=>{"use strict";var VM=ra(),YM=xb(),HM=Object.prototype,zM=HM.hasOwnProperty,JM=YM(function(e,t,r){zM.call(e,r)?e[r].push(t):VM(e,r,[t])});_b.exports=JM});var IG={};w(IG,{Method:()=>zn,ai:()=>Iu,api:()=>Hi,auditLogs:()=>gt,automations:()=>In,backups:()=>ve,branding:()=>dn,constants:()=>Qr,environmentVariables:()=>Ke,features:()=>Le,groups:()=>Q,init:()=>Hf,licensing:()=>Fe,logger:()=>Nt,mappers:()=>K,middleware:()=>ki,plugins:()=>Sn,publicApi:()=>vn,quotas:()=>We,scimGroups:()=>Ar,scimUsers:()=>de,sdk:()=>Di,users:()=>tt,utils:()=>Kt});module.exports=bI(IG);var zn=(o=>(o.POST="POST",o.GET="GET",o.PATCH="PATCH",o.DELETE="DELETE",o.PUT="PUT",o))(zn||{});var Di={};w(Di,{ai:()=>is,auditLogs:()=>gt,automations:()=>In,backups:()=>ve,branding:()=>dn,environmentVariables:()=>Ke,features:()=>Le,groups:()=>Q,init:()=>Hf,licensing:()=>Fe,logger:()=>Nt,plugins:()=>Sn,publicApi:()=>vn,quotas:()=>We,scimGroups:()=>Ar,scimUsers:()=>de,users:()=>tt,utils:()=>Kt});var dn={};w(dn,{getBrandingConfig:()=>p_});var Le={};w(Le,{checkBackups:()=>ye,checkFeature:()=>cn,checkFeatures:()=>ts,checkSCIM:()=>os,isAppBuildersEnabled:()=>Pt,isAuditLogsEnabled:()=>ln,isBackupsEnabled:()=>rs,isBrandingEnabled:()=>as,isEnforceableSSO:()=>pf,isExpandedPublicApiEnabled:()=>Ze,isPWAEnabled:()=>n_,isSSOEnforced:()=>o_,isSyncAutomationsEnabled:()=>r_,isTriggerAutomationRunEnabled:()=>a_,isUserGroupsEnabled:()=>ns,isViewPermissionEnabled:()=>s_,isViewReadonlyColumnsEnabled:()=>i_});var oe=require("@budibase/types"),Xe=require("@budibase/backend-core");var Fe={};w(Fe,{cache:()=>Oe,client:()=>lt,features:()=>$a,getFreeLicense:()=>Jo,getLicense:()=>Ho,getLicenseFromKey:()=>zo,keys:()=>es,offline:()=>un,quotas:()=>Ka});var Oe={};w(Oe,{getCachedLicense:()=>sf,invalidate:()=>uf,refresh:()=>xt});var Ca=require("@budibase/backend-core"),Tr,II=async()=>{Tr=await Ca.RedisClient.init(Ca.redis.utils.Databases.LICENSES)},SI=async()=>{Tr&&await Tr.finish()};process.on("exit",async()=>{await SI()});var Jn=async()=>(Tr||await II(),Tr);var lt={};w(lt,{activateLicenseKey:()=>lo,getLicense:()=>Wt,getLicenseFromKey:()=>co,triggerQuota:()=>sS});var Ou=C(require("node-fetch"));var Pu=require("@budibase/backend-core"),Xn=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";Pu.logging.correlation.setHeader(a.headers);let o={method:t,body:n?JSON.stringify(a.body):a.body,headers:a.headers,credentials:"include"};return(0,Ou.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=Xn;var Qa=require("@budibase/types"),L=require("@budibase/backend-core");var Me={};w(Me,{bustCache:()=>ro,getCurrentUsageValues:()=>Mu,getQuotaUsage:()=>wt,setAllUsage:()=>no,setAppUsageValue:()=>ao,setUsage:()=>Du,setUsagePerApp:()=>Nu,utils:()=>Rr});var re=require("@budibase/types"),pe=require("@budibase/backend-core");var Rr={};w(Rr,{generateBaseQuotaUsage:()=>qa,generateNewMonthlyQuotas:()=>Er,generateNewQuotaUsage:()=>to,getBreakdownName:()=>Da,getCurrentMonthString:()=>ut,getQuotaDocId:()=>vr,setCurrentMonth:()=>Ua,setQuotaReset:()=>eo});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,Lu=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},eo=e=>{e.quotaReset=Lu()},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()}}),to=()=>{let e={_id:vr(),quotaReset:Lu(),...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 Cu=pe.Duration.fromSeconds(60).toMs(),{Writethrough:qu}=pe.cache.writethrough;function TI(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 qu(pe.tenancy.getSelfHostCloudDB(),Cu):new qu(pe.tenancy.getGlobalDB(),Cu);async function ro(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 ro(e+1);throw o})}var wt=async()=>{let e=Na(),t=await e.tryGet(vr());if(!t){t=to();let{rev:r}=await e.put(t);t._rev=r}return Ua(t),eo(t),TI(t)},Du=async(e,t,r)=>no({name:t,type:r,values:{total:e}}),Nu=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=Bu(n,t,r,{total:o,app:p},{appId:i});let s=await a.put(n);return n._rev=s.rev,n},vI=(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},ao=(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=vI(f,p,a.id,n));break}}return e},Uu=(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}},EI=(e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},RI=(e,t,r,a)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),a&&(r.monthly[t].triggers[e]=a)},Bu=(e,t,r,a,n={})=>{if(r===re.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=a.total,EI(t,e,a.triggers);else if(r===re.QuotaUsageType.MONTHLY){t=t;let o=ut();e.monthly[o][t]=a.total,RI(t,o,e,a.triggers)}else throw new Error(`Invalid usage type: ${r}`);return ao(e,t,r,n,a)},no=async e=>{let t=Array.isArray(e)?e:[e],r=Na(),a=await wt();for(let o of t)a=Bu(a,o.name,o.type,o.values,o.opts);let n=await r.put(a,0);return a._rev=n.rev,a},Mu=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=Uu(a,e,t,r)}break;case re.QuotaUsageType.MONTHLY:{let s=ut(),i=t;a.monthly[s][i]&&(n=a.monthly[s][i],o=Uu(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:()=>OI,get:()=>oo,save:()=>_I});var pt=require("@budibase/backend-core"),xI=()=>({_id:pt.StaticDatabases.GLOBAL.docs.licenseInfo}),_I=async e=>{let t=await oo();t={...t,...e};let a=await pt.tenancy.getGlobalDB().put(t);return t._rev=a.rev,t},oo=async()=>{let e=pt.tenancy.getGlobalDB();try{return await e.get(pt.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return xI();throw t}},OI=async()=>{let e=pt.tenancy.getGlobalDB(),t=await oo();t&&t._rev&&await e.remove(pt.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)};var M={};w(M,{bulkSave:()=>FI,destroy:()=>QI,fetch:()=>BI,generateUserGroupID:()=>DI,get:()=>MI,getBulk:()=>GI,getByName:()=>so,getGroupUsers:()=>Ma,getGroupUsersParams:()=>ju,getUserGroupsParams:()=>Qu,save:()=>kI});var N=require("@budibase/backend-core");var _e=require("@budibase/types"),Ft=require("@budibase/backend-core");async function Gu(){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:PI,SEPARATOR:LI,DocumentType:CI,createView:qI}=Ba.db,UI=CI.USER+LI;async function ku(){let e=Ba.tenancy.getGlobalDB(),t=`function(doc) {
4
+ if (doc._id.startsWith("${UI}") && 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 CI(e,t,OI.USER_BY_GROUP)}var ku=`${N.DocumentType.GROUP}${N.SEPARATOR}`;function Fu(e,t={}){e||(e="");let r=e?.startsWith(N.DocumentType.GROUP)?"":ku;return{...t,startkey:`${r}${e}`,endkey:`${r}${e}${N.UNICODE_MAX}`}}function Qu(e,t={}){e||(e="");let{emailSearch:r,bookmark:a,...n}=t;return r?{...n,startkey:`e_${e}${a||r}`,endkey:`e_${e}${r}${N.UNICODE_MAX}`}:{...t,startkey:`g_${e}`,endkey:`g_${e}${N.UNICODE_MAX}`,startkey_docid:a}}function UI(){return`${ku}${N.utils.newid()}`}async function Ma(e,t){let r=N.tenancy.getGlobalDB();return(await N.db.queryView(N.db.ViewName.USER_BY_GROUP,Qu(e,t),r,Gu,{arrayResponse:!0})).map(n=>({_id:n.userId,email:n.email}))||[]}async function xr(e){return e.users=await Ma(e._id),e}async function DI(e){let r=(await xr(e)).users?.map(o=>o._id),a=await N.users.bulkGetGlobalUsersById(r),n=[];for(let o of a){if(!o.userGroups)continue;let s=o.userGroups.length;o.userGroups=o.userGroups.filter(i=>i!==e._id),o.userGroups.length!==s&&n.push(o)}n.length&&await N.users.bulkUpdateGlobalUsers(n)}async function ju(){return(await N.tenancy.getGlobalDB().allDocs(Fu(null,{include_docs:!0}))).rows.map(t=>t.doc)}async function NI(){let e=await ju(),t=[];for(let r of e)t.push(xr(r));return await Promise.all(t)}async function BI(e){let r=await N.tenancy.getGlobalDB().get(e);return await xr(r)}async function MI(e,t={enriched:!0}){let a=await N.tenancy.getGlobalDB().getMultiple(e,{allowMissing:!0});if(t?.enriched){let n=[];for(let o of a)n.push(xr(o));return await Promise.all(n)}else return a}async function GI(e){return await N.tenancy.getGlobalDB().put(e)}async function kI(e){return await N.tenancy.getGlobalDB().bulkDocs(e)}async function FI(e,t){let r=N.tenancy.getGlobalDB(),a=await r.get(e),n=await r.remove(e,t);return await DI(a),n}async function oo(e){let t=e.toLowerCase(),a=(await ju()).find(n=>n.name.toLowerCase()===t);if(a)return await xr(a)}var we={};w(we,{deleteAppBackupMetadata:()=>eS,fetchAppBackups:()=>JI,generateAppBackupID:()=>ap,getAppBackupMetadata:()=>tS,oldestBackupDate:()=>tp,storeAppBackupMetadata:()=>XI,updateAppBackupMetadata:()=>ZI});var F=require("@budibase/backend-core"),ep=require("@budibase/types");function _r(e,t){let r=e.rows.map(n=>n.doc?n.doc:n);if(!t?.paginate)return{data:r,hasNextPage:!1};let a=r.length>t?.pageSize;return{data:r.slice(0,t?.pageSize),hasNextPage:a,nextPage:a?e.rows[t?.pageSize]?.key:void 0}}var Qt=require("@budibase/backend-core"),{ViewName:$u,AutomationViewMode:so,SEPARATOR:Ge,DocumentType:Ku,createView:Vu}=Qt.db,QI=Ku.AUTOMATION_LOG+Ge,Wu=Ku.APP_BACKUP+Ge;async function Yu(){let e=Qt.context.getProdAppDB(),t=`function(doc) {
11
- if (doc._id.startsWith("${QI}")) {
10
+ }`;await qI(e,t,PI.USER_BY_GROUP)}var Fu=`${N.DocumentType.GROUP}${N.SEPARATOR}`;function Qu(e,t={}){e||(e="");let r=e?.startsWith(N.DocumentType.GROUP)?"":Fu;return{...t,startkey:`${r}${e}`,endkey:`${r}${e}${N.UNICODE_MAX}`}}function ju(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 DI(){return`${Fu}${N.utils.newid()}`}async function Ma(e,t){let r=N.tenancy.getGlobalDB();return(await N.db.queryView(N.db.ViewName.USER_BY_GROUP,ju(e,t),r,ku,{arrayResponse:!0})).map(n=>({_id:n.userId,email:n.email}))||[]}async function xr(e){return e.users=await Ma(e._id),e}async function NI(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 Wu(){return(await N.tenancy.getGlobalDB().allDocs(Qu(null,{include_docs:!0}))).rows.map(t=>t.doc)}async function BI(){let e=await Wu(),t=[];for(let r of e)t.push(xr(r));return await Promise.all(t)}async function MI(e){let r=await N.tenancy.getGlobalDB().get(e);return await xr(r)}async function GI(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 kI(e){return await N.tenancy.getGlobalDB().put(e)}async function FI(e){return await N.tenancy.getGlobalDB().bulkDocs(e)}async function QI(e,t){let r=N.tenancy.getGlobalDB(),a=await r.get(e),n=await r.remove(e,t);return await NI(a),n}async function so(e){let t=e.toLowerCase(),a=(await Wu()).find(n=>n.name.toLowerCase()===t);if(a)return await xr(a)}var we={};w(we,{deleteAppBackupMetadata:()=>tS,fetchAppBackups:()=>XI,generateAppBackupID:()=>np,getAppBackupMetadata:()=>rS,oldestBackupDate:()=>rp,storeAppBackupMetadata:()=>ZI,updateAppBackupMetadata:()=>eS});var F=require("@budibase/backend-core"),tp=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:Ku,AutomationViewMode:io,SEPARATOR:Ge,DocumentType:Vu,createView:Yu}=Qt.db,jI=Vu.AUTOMATION_LOG+Ge,$u=Vu.APP_BACKUP+Ge;async function Hu(){let e=Qt.context.getProdAppDB(),t=`function(doc) {
11
+ if (doc._id.startsWith("${jI}")) {
12
12
  let autoId = doc.automationId + "${Ge}"
13
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
14
+ let autoKey = "${io.AUTOMATION}${Ge}" + autoId + doc.createdAt
15
+ let statusKey = "${io.STATUS}${Ge}" + status + doc.createdAt
16
+ let allKey = "${io.ALL}${Ge}" + status + autoId + doc.createdAt
17
17
  emit(statusKey)
18
18
  emit(autoKey)
19
19
  emit(allKey)
20
20
  }
21
- }`;await Vu(e,t,$u.AUTOMATION_LOGS)}async function Hu(){let e=Qt.tenancy.getGlobalDB(),t=`function(doc) {
22
- if (doc._id.startsWith("${Wu}") && doc.type && doc.trigger) {
21
+ }`;await Yu(e,t,Ku.AUTOMATION_LOGS)}async function zu(){let e=Qt.tenancy.getGlobalDB(),t=`function(doc) {
22
+ if (doc._id.startsWith("${$u}") && doc.type && doc.trigger) {
23
23
  let full = doc.appId + "${Ge}"
24
24
  full += doc.trigger.toLowerCase() + "${Ge}"
25
25
  full += doc.type.toLowerCase() + "${Ge}"
26
- emit("${Wu}" + full + doc.timestamp)
26
+ emit("${$u}" + full + doc.timestamp)
27
27
  }
28
- }`;await Vu(e,t,$u.APP_BACKUP_BY_TRIGGER)}var Zu=require("@budibase/types");var Qr={};w(Qr,{GENERIC_PAGE_SIZE:()=>ke,auditLogs:()=>jt,licenses:()=>me,quotas:()=>Je,versions:()=>Fr});var me={};w(me,{CLOUD_FREE_LICENSE:()=>WI,SELF_FREE_LICENSE:()=>io,UNLIMITED:()=>W,UNLIMITED_LICENSE:()=>$I});var ct=require("@budibase/types");var Je={};w(Je,{UNLIMITED:()=>jI,appBackupRetentionDays:()=>Gr,apps:()=>Pr,automationLogRetentionDays:()=>Mr,automations:()=>Nr,budibaseAICredits:()=>Br,creators:()=>Cr,customAIConfigurations:()=>kr,plugins:()=>Ur,queries:()=>Dr,rows:()=>Or,userGroups:()=>qr,users:()=>Lr});var ae=require("@budibase/types"),jI=-1,Or=e=>({[ae.StaticQuotaName.ROWS]:{name:"Rows",value:e,triggers:[90,100]}}),Pr=e=>({[ae.StaticQuotaName.APPS]:{name:"Apps",value:e,triggers:[100]}}),Lr=e=>({[ae.StaticQuotaName.USERS]:{name:"Users",value:e,triggers:[80,100]}}),Cr=e=>({[ae.StaticQuotaName.CREATORS]:{name:"Creators",value:e,triggers:[]}}),qr=e=>({[ae.StaticQuotaName.USER_GROUPS]:{name:"User Groups",value:e,triggers:[80,100]}}),Ur=e=>({[ae.StaticQuotaName.PLUGINS]:{name:"Plugins",value:e,triggers:[90,100]}}),Dr=e=>({[ae.MonthlyQuotaName.QUERIES]:{name:"Queries",value:e,triggers:[]}}),Nr=e=>({[ae.MonthlyQuotaName.AUTOMATIONS]:{name:"Automations",value:e,triggers:[80,90,100]}}),Br=e=>({[ae.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:{name:"Budibase AI Credits",value:e,triggers:[80,90,100]}}),Mr=e=>({[ae.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS]:{name:"Automation Logs",value:e,triggers:[]}}),Gr=e=>({[ae.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS]:{name:"App Backups",value:e,triggers:[]}}),kr=e=>({[ae.StaticQuotaName.AI_CUSTOM_CONFIGS]:{name:"Custom AI Configuration",value:e,triggers:[]}});var W=-1,WI={features:[],quotas:{usage:{monthly:{...Dr(W),...Nr(200),...Br(5e4)},static:{...Pr(W),...Or(2e3),...Lr(5),...Cr(5),...qr(0),...Ur(10),...kr(0)}},constant:{...Mr(1),...Gr(0)}},plan:{type:ct.PlanType.FREE,usesInvoicing:!1,model:ct.PlanModel.PER_USER}},io={features:[],quotas:{usage:{monthly:{...Dr(W),...Nr(W),...Br(5e4)},static:{...Or(W),...Pr(W),...Lr(20),...Cr(W),...qr(0),...Ur(10),...kr(0)}},constant:{...Mr(1),...Gr(0)}},plan:{type:ct.PlanType.FREE,usesInvoicing:!1,model:ct.PlanModel.PER_USER}},$I={features:[],quotas:{usage:{monthly:{...Dr(W),...Nr(W),...Br(W)},static:{...Pr(W),...Or(W),...Lr(W),...Cr(W),...qr(W),...Ur(W),...kr(W)}},constant:{...Mr(W),...Gr(W)}},plan:{type:ct.PlanType.FREE,usesInvoicing:!1,model:ct.PlanModel.PER_USER}};var Fr={};w(Fr,{getLicenseVersion:()=>KI,getProVersion:()=>Ju});var Tt=require("@budibase/backend-core"),Ga=C(require("fs")),zu=C(require("path")),KI=()=>{if(Tt.env.isDev()){let e="dev-version.txt",t=zu.default.join(Tt.objectStore.budibaseTempDir(),e);if(Ga.default.existsSync(t))return Ga.default.readFileSync(t,"utf8");{let r=Tt.utils.newid();return Ga.default.writeFileSync(t,r),r}}else return Ju()},Ju=()=>{let e=Tt.env.VERSION;if(!e)throw new Error("No budibase pro version was specified");return e};var jt={};w(jt,{searchTable:()=>VI});var vt=require("@budibase/types"),Xu=require("@budibase/backend-core");function VI(){return{type:"table",sourceType:vt.TableSourceType.INTERNAL,name:vt.AUDIT_LOG_TYPE,sourceId:Xu.SQS_DATASOURCE_INTERNAL,primary:["_id"],schema:{metadata:{name:"metadata",type:vt.FieldType.JSON},fallback:{name:"fallback",type:vt.FieldType.JSON}}}}var ke=9;var YI=new Date(864e13).toISOString(),HI=1e3*60*60*24;async function ka(e){let r=(await Oe.getCachedLicense()).quotas?.[Zu.QuotaType.CONSTANT]?.[e]?.value||0;return r===me.UNLIMITED?new Date(YI).toISOString():new Date(new Date().getTime()-HI*r).toISOString()}async function tp(){return ka(ep.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS)}var uo=`${F.db.DocumentType.APP_BACKUP}${F.db.SEPARATOR}`;async function zI(e,t,r={}){let a=await tp(),n=F.db.getProdAppID(e),o=n,s=n;if(t.trigger&&t.type){let i=`${F.db.SEPARATOR}${t.trigger}`;i+=`${F.db.SEPARATOR}${t.type}`,o+=i,s+=i}return(!t.startDate||t.startDate<a)&&(t.startDate=a),t.startDate&&(s+=`${F.db.SEPARATOR}${t.startDate}`),t.endDate&&(o+=`${F.db.SEPARATOR}${t.endDate}`),{...r,descending:!0,startkey:`${uo}${o}${F.db.UNICODE_MAX}`,endkey:`${uo}${s}`}}async function rp(e,t){try{let r=F.db.getQueryIndex(F.db.ViewName.APP_BACKUP_BY_TRIGGER);return await e.query(r,t)}catch(r){if(r!=null&&r.error==="not_found")return await Hu(),rp(e,t);throw r}}function ap(e,t){return`${uo}${e}${F.db.SEPARATOR}${t}`}async function JI(e,t={}){let r=F.tenancy.getGlobalDB(),a,n=t.limit||9,o=await zI(e,t,{include_docs:!0,limit:n+1});t.page&&(o.startkey=t.page),!t.trigger||!t.type?a=await r.allDocs(o):a=await rp(r,o);let s=_r(a,{paginate:t.paginate,pageSize:n}),i=[...new Set(s.data.filter(f=>f.createdBy).map(f=>f.createdBy))],p=await F.users.bulkGetGlobalUsersById(i,{cleanup:!0});for(let f of p)for(let m of s.data)f?._id===m.createdBy&&(m.createdBy=f);return s}async function XI(e,t={}){let r=F.tenancy.getGlobalDB(),a=F.db.getProdAppID(e.appId),n=ap(a,e.timestamp),o={...e,_id:n,appId:a,name:e.name};return o._id=t.docId||o._id,o._rev=t.docRev||o._rev,t.filename&&(o.filename=t.filename),e.createdBy&&(o.createdBy=F.db.getGlobalIDFromUserMetadataID(e.createdBy)),await r.put(o)}async function ZI(e,t){let r=F.tenancy.getGlobalDB(),a=await r.get(e);return a.name=t,await r.put(a)}async function eS(e){let t=F.tenancy.getGlobalDB(),r=await t.get(e);await t.remove(r._id,r._rev)}async function tS(e){return await F.tenancy.getGlobalDB().get(e)}var Et={};w(Et,{get:()=>aS,getCacheEnvVarID:()=>sp,getEnvVarID:()=>Fa,update:()=>nS});var Pe=require("@budibase/backend-core"),op=C(require("lru-cache")),rS=1e3,np=new op.default({max:rS});function Fa(){return Pe.StaticDatabases.GLOBAL.docs.environmentVariables}function sp(e){return`${Pe.tenancy.getTenantId()}/${Fa()}/${e||""}`}async function aS(){let e=Fa(),t=Pe.tenancy.getGlobalDB(),r,a=!1;try{r=await t.get(e)}catch(i){if(i.status==404)a=!0;else throw i}let n=sp(r?._rev),o=np.get(n);if(o)return o;let s;return!a&&r?s={...r,variables:JSON.parse(Pe.encryption.decrypt(r.variables,Pe.encryption.SecretOption.ENCRYPTION))}:s={_id:e,variables:{}},np.set(n,s),s}async function nS(e){let t=Fa();return await Pe.tenancy.getGlobalDB().put({_id:e._id||t,_rev:e._rev||void 0,variables:Pe.encryption.encrypt(JSON.stringify(e.variables),Pe.encryption.SecretOption.ENCRYPTION)})}var ip=require("dd-trace"),ja=new Xn(L.env.ACCOUNT_PORTAL_URL),Wa=async e=>{try{let t=await e.json();if(t.message)return t.message}catch{}try{let t=await e.text();if(t)return t}catch{}},up=async e=>{let t,r;if(L.env.SELF_HOSTED){if(t=await Se.get(),!t.licenseKey)return;r={[L.constants.Header.LICENSE_KEY]:t.licenseKey}}else{let a=L.tenancy.getTenantId();r={[L.constants.Header.API_KEY]:L.env.INTERNAL_API_KEY,[L.constants.Header.TENANT_ID]:a}}return e(r)},pp=async()=>up(async e=>{let t=await Me.getQuotaUsage();if(t.usageQuota.users==null){let i=await L.users.getUserCount();console.info(`Syncing user count quota to ${i}`),t.usageQuota.users=i,await Me.setUsage(i,Qa.StaticQuotaName.USERS,Qa.QuotaUsageType.STATIC)}let r=await L.installation.getInstallFromDB(),a=L.tenancy.getTenantId(),n=await L.events.identification.getUniqueTenantId(a),o=Fr.getProVersion(),s={quotaUsage:t,tenantId:a,install:{id:r.installId,tenantId:n,version:o}};try{let i=await ja.post("/api/license",{headers:{...e},body:s});if(i.status===404||i.status===403)return;if(i.status!==200){let p=await Wa(i);throw new L.HTTPError(`Error getting license: ${p}`,i.status)}return i.json()}catch(i){if(L.env.DISABLE_ACCOUNT_PORTAL)return;throw i}});L.env.isJest()&&(pp=jest.fn());var Wt=pp;async function po(e){return await ip.tracer.trace("getLicenseFromKey",async t=>{let r;if(!L.env.INTERNAL_API_KEY)throw new Error("getLicenseFromKey requires INTERNAL_API_KEY to be set");try{r=await ja.get(`/api/license/${e}`,{headers:{[L.constants.Header.API_KEY]:L.env.INTERNAL_API_KEY}})}catch(a){if(L.env.DISABLE_ACCOUNT_PORTAL)return;throw a}if(r.status===404||r.status===403){t.addTags({licenseFound:!1});return}if(r.status!==200){let a=await Wa(r);throw new L.HTTPError(`Error getting license: ${a}`,r.status)}return r.json()})}var oS=e=>up(async t=>{let r=await ja.post("/api/license/usage/triggered",{headers:{...t},body:e});if(r.status!==200){let a=await Wa(r);L.logging.logAlert(`Error triggering quota usage: ${a}`)}}),co=async e=>{let t=await L.installation.getInstall(),r={installVersion:t.version,installId:t.installId},a=await ja.post("/api/license/activate",{headers:{[L.constants.Header.LICENSE_KEY]:e},body:r});if(a.status===403)throw new L.HTTPError("Invalid license key",400);if(a.status===409)throw new L.HTTPError("License key has already been activated",409);if(a.status!==200){let n=await Wa(a);throw new L.HTTPError(`Error activating license key: ${n}`,a.status)}return a.json()};var Vo=require("@budibase/backend-core");var un={};w(un,{activateOfflineLicenseToken:()=>jx,deleteOfflineLicenseToken:()=>Wx,dev:()=>la,enrichLicense:()=>ef,getIdentifier:()=>jo,getIdentifierBase64:()=>$x,getIdentifierFromBase64:()=>Kx,getOfflineLicense:()=>Wo,getOfflineLicenseToken:()=>Jd,signing:()=>$r,verifyExpiry:()=>Xd,verifyInstallation:()=>Zd});var $r={};w($r,{sign:()=>iS,verifyLicenseToken:()=>Wr});var lo=C(require("jsonwebtoken")),sS=`-----BEGIN PUBLIC KEY-----
28
+ }`;await Yu(e,t,Ku.APP_BACKUP_BY_TRIGGER)}var ep=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:()=>$I,SELF_FREE_LICENSE:()=>uo,UNLIMITED:()=>W,UNLIMITED_LICENSE:()=>KI});var ct=require("@budibase/types");var Je={};w(Je,{UNLIMITED:()=>WI,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"),WI=-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,$I={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}},uo={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}},KI={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:()=>VI,getProVersion:()=>Xu});var Tt=require("@budibase/backend-core"),Ga=C(require("fs")),Ju=C(require("path")),VI=()=>{if(Tt.env.isDev()){let e="dev-version.txt",t=Ju.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 Xu()},Xu=()=>{let e=Tt.env.VERSION;if(!e)throw new Error("No budibase pro version was specified");return e};var jt={};w(jt,{searchTable:()=>YI});var vt=require("@budibase/types"),Zu=require("@budibase/backend-core");function YI(){return{type:"table",sourceType:vt.TableSourceType.INTERNAL,name:vt.AUDIT_LOG_TYPE,sourceId:Zu.SQS_DATASOURCE_INTERNAL,primary:["_id"],schema:{metadata:{name:"metadata",type:vt.FieldType.JSON},fallback:{name:"fallback",type:vt.FieldType.JSON}}}}var ke=9;var HI=new Date(864e13).toISOString(),zI=1e3*60*60*24;async function ka(e){let r=(await Oe.getCachedLicense()).quotas?.[ep.QuotaType.CONSTANT]?.[e]?.value||0;return r===me.UNLIMITED?new Date(HI).toISOString():new Date(new Date().getTime()-zI*r).toISOString()}async function rp(){return ka(tp.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS)}var po=`${F.db.DocumentType.APP_BACKUP}${F.db.SEPARATOR}`;async function JI(e,t,r={}){let a=await rp(),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:`${po}${o}${F.db.UNICODE_MAX}`,endkey:`${po}${s}`}}async function ap(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 zu(),ap(e,t);throw r}}function np(e,t){return`${po}${e}${F.db.SEPARATOR}${t}`}async function XI(e,t={}){let r=F.tenancy.getGlobalDB(),a,n=t.limit||9,o=await JI(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 ap(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=np(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 eS(e,t){let r=F.tenancy.getGlobalDB(),a=await r.get(e);return a.name=t,await r.put(a)}async function tS(e){let t=F.tenancy.getGlobalDB(),r=await t.get(e);await t.remove(r._id,r._rev)}async function rS(e){return await F.tenancy.getGlobalDB().get(e)}var Et={};w(Et,{get:()=>nS,getCacheEnvVarID:()=>ip,getEnvVarID:()=>Fa,update:()=>oS});var Pe=require("@budibase/backend-core"),sp=C(require("lru-cache")),aS=1e3,op=new sp.default({max:aS});function Fa(){return Pe.StaticDatabases.GLOBAL.docs.environmentVariables}function ip(e){return`${Pe.tenancy.getTenantId()}/${Fa()}/${e||""}`}async function nS(){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=ip(r?._rev),o=op.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:{}},op.set(n,s),s}async function oS(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 up=require("dd-trace"),ja=new Zn(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{}},pp=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)},cp=async()=>pp(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()&&(cp=jest.fn());var Wt=cp;async function co(e){return await up.tracer.trace("getLicenseFromKey",async t=>{let r;if(!L.env.ACCOUNT_PORTAL_API_KEY)throw new Error("getLicenseFromKey requires ACCOUNT_PORTAL_API_KEY to be set");try{r=await ja.get(`/api/license/${e}`,{headers:{[L.constants.Header.API_KEY]:L.env.ACCOUNT_PORTAL_API_KEY}})}catch(a){if(L.env.DISABLE_ACCOUNT_PORTAL)return;throw a}if(r.status===404||r.status===403){t.addTags({licenseFound:!1});return}if(r.status!==200){let a=await Wa(r);throw new L.HTTPError(`Error getting license: ${a}`,r.status)}return r.json()})}var sS=e=>pp(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}`)}}),lo=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 Yo=require("@budibase/backend-core");var un={};w(un,{activateOfflineLicenseToken:()=>Wx,deleteOfflineLicenseToken:()=>$x,dev:()=>la,enrichLicense:()=>tf,getIdentifier:()=>Wo,getIdentifierBase64:()=>Kx,getIdentifierFromBase64:()=>Vx,getOfflineLicense:()=>$o,getOfflineLicenseToken:()=>Xd,signing:()=>$r,verifyExpiry:()=>Zd,verifyInstallation:()=>ef});var $r={};w($r,{sign:()=>uS,verifyLicenseToken:()=>Wr});var fo=C(require("jsonwebtoken")),iS=`-----BEGIN PUBLIC KEY-----
29
29
  MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvz3jePLCFBXZ19c8Dpkv
30
30
  XtSgOhKFOcvQdo/LV0KJRUzQWDPWuO4ILtBtnqhjtIzZH4CH0qCYBet5L6Qr4CM1
31
31
  l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
@@ -34,18 +34,18 @@ l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
34
34
  d/o3ZWE1TTj1zYwlCLN5qRKr3hU8nC3xEYNEbkB9SfTRaOq9Q7P8WmfLkoCPm3pR
35
35
  mwIDAQAB
36
36
  -----END PUBLIC KEY-----
37
- `;function Wr(e){return lo.default.verify(e,sS,{algorithms:["RS256"]})}function iS(e,t){return lo.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}var $a={};w($a,{getFeatures:()=>fo});var c=require("@budibase/types");var uS={[c.PlanType.FREE]:[...me.SELF_FREE_LICENSE.features],[c.PlanType.PREMIUM]:void 0,[c.PlanType.PREMIUM_PLUS]:[c.Feature.APP_BACKUPS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.PDF,c.Feature.BUDIBASE_AI],[c.PlanType.PREMIUM_PLUS_TRIAL]:[c.Feature.APP_BACKUPS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.PDF,c.Feature.BUDIBASE_AI],[c.PlanType.PRO]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS],[c.PlanType.TEAM]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS],[c.PlanType.BUSINESS]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.PDF,c.Feature.BUDIBASE_AI],[c.PlanType.ENTERPRISE_BASIC]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.OFFLINE,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.PWA,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF,c.Feature.BUDIBASE_AI],[c.PlanType.ENTERPRISE_BASIC_TRIAL]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.PWA,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF,c.Feature.BUDIBASE_AI],[c.PlanType.ENTERPRISE]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.OFFLINE,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.PWA,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF,c.Feature.BUDIBASE_AI]},pS={[c.PlanType.FREE]:[...me.CLOUD_FREE_LICENSE.features],[c.PlanType.PREMIUM]:[c.Feature.APP_BACKUPS,c.Feature.BRANDING,c.Feature.APP_BUILDERS,c.Feature.VIEW_PERMISSIONS,c.Feature.PDF],[c.PlanType.PREMIUM_PLUS]:[c.Feature.APP_BACKUPS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.BUDIBASE_AI,c.Feature.PDF],[c.PlanType.PREMIUM_PLUS_TRIAL]:[c.Feature.APP_BACKUPS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.BUDIBASE_AI,c.Feature.PDF],[c.PlanType.PRO]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.BRANDING],[c.PlanType.TEAM]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.BRANDING],[c.PlanType.BUSINESS]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.BUDIBASE_AI,c.Feature.PDF],[c.PlanType.ENTERPRISE_BASIC]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.OFFLINE,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.BUDIBASE_AI,c.Feature.PWA,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF],[c.PlanType.ENTERPRISE_BASIC_TRIAL]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.BUDIBASE_AI,c.Feature.PWA,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF],[c.PlanType.ENTERPRISE]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.BUDIBASE_AI,c.Feature.PWA,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF]};function fo(e,t){let r=[];function a(n){let o=n[t];if(!o)throw new Error(`Features do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case c.Hosting.SELF:r=a(uS);break;case c.Hosting.CLOUD:r=a(pS);break}return r}var Ka={};w(Ka,{UNLIMITED:()=>d,getQuotas:()=>mo});var G=require("@budibase/types");var l=Je,cp=me,d=-1,Kr=e=>e*1e6,cS={[G.PlanType.FREE]:{...cp.CLOUD_FREE_LICENSE.quotas},[G.PlanType.PREMIUM]:{usage:{monthly:{...l.queries(d),...l.automations(1e3),...l.budibaseAICredits(0)},static:{...l.rows(1e4),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(0),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(7),...l.appBackupRetentionDays(7)}},[G.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...l.queries(d),...l.automations(5e3),...l.budibaseAICredits(Kr(2))},static:{...l.rows(25e3),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(0),...l.plugins(d),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[G.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...l.queries(d),...l.automations(5e3),...l.budibaseAICredits(Kr(2))},static:{...l.rows(25e3),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(0),...l.plugins(d),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[G.PlanType.PRO]:{usage:{monthly:{...l.queries(d),...l.automations(1e3),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(5),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(7),...l.appBackupRetentionDays(7)}},[G.PlanType.TEAM]:{usage:{monthly:{...l.queries(d),...l.automations(5e3),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(10),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(90)}},[G.PlanType.BUSINESS]:{usage:{monthly:{...l.queries(d),...l.automations(1e4),...l.budibaseAICredits(0)},static:{...l.rows(5e4),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(50),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(365),...l.appBackupRetentionDays(365)}},[G.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(Kr(4))},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(d),...l.appBackupRetentionDays(d)}},[G.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(Kr(4))},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(15),...l.appBackupRetentionDays(15)}},[G.PlanType.ENTERPRISE]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(Kr(4))},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(d),...l.appBackupRetentionDays(d)}}},lS={[G.PlanType.FREE]:{...cp.SELF_FREE_LICENSE.quotas},[G.PlanType.PREMIUM]:void 0,[G.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(0),...l.plugins(d),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[G.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(0),...l.plugins(d),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[G.PlanType.PRO]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(5),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(7),...l.appBackupRetentionDays(7)}},[G.PlanType.TEAM]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(10),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(90)}},[G.PlanType.BUSINESS]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(50),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(90),...l.appBackupRetentionDays(365)}},[G.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(d),...l.appBackupRetentionDays(d)}},[G.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(15),...l.appBackupRetentionDays(15)}},[G.PlanType.ENTERPRISE]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(d),...l.appBackupRetentionDays(d)}}};function mo(e,t){let r;function a(n){let o=n[t];if(!o)throw new Error(`Quotas do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case G.Hosting.SELF:r=a(lS);break;case G.Hosting.CLOUD:r=a(cS);break}return JSON.parse(JSON.stringify(r))}var Kt={};w(Kt,{appExists:()=>dS,encoding:()=>$t});var lp=require("@budibase/backend-core");async function dS(e){return(await lp.db.getAllApps({all:!0,idsOnly:!0})).includes(e)}var $t={};w($t,{base64ToObject:()=>mS,objectToBase64:()=>fS});function fS(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}function mS(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}var Yd=require("@budibase/types"),or=require("@budibase/backend-core"),Hd=C(xl()),zd=C(Qo());async function jx(e){await Se.save({offlineLicenseToken:e}),await xt()}async function Wx(){await Se.save({offlineLicenseToken:void 0}),await xt()}async function Jd(){return(await Se.get()).offlineLicenseToken}async function jo(){let t=(await or.installation.getInstall()).installId,r=or.context.getTenantId(),a=await or.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:a}}async function $x(){let e=await jo();return $t.objectToBase64(e)}function Kx(e){return $t.base64ToObject(e)}function Xd(e){let t=Date.now(),r=new Date(e.expireAt).getTime();if(t>r)throw new Error(`Offline license has expired. expireAt=${e.expireAt}`)}async function Zd(e){let t=await jo();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}function ef(e){let t=e.plan.type,r=Yd.Hosting.SELF,a=fo(r,t),n=mo(r,t);return e.features=(0,Hd.default)(e.features,a),e.quotas=(0,zd.default)(e.quotas,n),e}async function Wo(){try{let e=await Jd();if(e){let t=await Wr(e);return Xd(t),await Zd(t),ef(t)}}catch(e){console.error("Error retrieving offline license",e)}}var la={};w(la,{deleteDevLicense:()=>Jx,getOfflineLicense:()=>Hx,writeDevLicenseToDisk:()=>zx});var tf=require("@budibase/backend-core"),Ko=require("path"),rf=require("os"),_t=C(require("fs"));var Vx=tf.env.isTest()?".budibase-test":".budibase",$o=(0,Ko.join)((0,rf.tmpdir)(),Vx),Yx="dev_license.txt",ca=(0,Ko.join)($o,Yx);if(!_t.default.existsSync($o))try{_t.default.mkdirSync($o)}catch{}function Hx(){try{if(_t.default.existsSync(ca)){let e=_t.default.readFileSync(ca,{encoding:"utf-8"});return Wr(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}function zx(e){console.log(`Writing license to: ${ca}`),_t.default.writeFileSync(ca,e,{encoding:"utf-8"})}function Jx(){_t.default.rmSync(ca,{force:!0})}var Yo=async()=>{if(Vo.env.OFFLINE_MODE)return Wo();let e=await Wt();return e||(e=la.getOfflineLicense()),e},Ho=e=>po(e),zo=()=>Vo.env.SELF_HOSTED?me.SELF_FREE_LICENSE:me.CLOUD_FREE_LICENSE;var Zo={};w(Zo,{activateLicenseKey:()=>Xx,deleteLicenseKey:()=>Zx,getLicenseKey:()=>Xo});var Jo=C(require("dd-trace"));async function Xx(e){await co(e),await Se.save({licenseKey:e}),await xt()}async function Xo(){return await Jo.default.trace("getLicenseKey",async e=>{let t=await Se.get();return e.addTags({licenseKey:t.licenseKey}),t.licenseKey})}async function Zx(){return await Jo.default.trace("deleteLicenseKey",async()=>{await Se.save({licenseKey:void 0}),await xt()})}var Ot=require("@budibase/backend-core"),pn=C(require("dd-trace")),af=3600,xt=async()=>{await sf(),await of()},nf=async(e,t)=>{let{populateLicense:r=Yo,populateFreeLicense:a=zo}=t||{};return await pn.default.trace("getCachedLicense",async n=>{let o=Ot.context.getLicense();if(o)return n.addTags({foundInContext:!0,features:o.features,plan:o.plan,quotas:o.quotas}),o;let s=Ot.tenancy.getTenantId(),i=await zn(),p=await i.get(s);return n.addTags({tenantId:s,foundInCache:!!p}),p?(n.addTags({foundInCache:!0,refreshedAt:p.refreshedAt,features:p.features,plan:p.plan,quotas:p.quotas}),p):(p=await pn.default.trace("populateLicense",async()=>await r(s)),n.addTags({populatedLicense:!!p}),p||(p=pn.default.trace("populateFreeLicense",()=>a(e,s)),n.addTags({populatedFreeLicense:!!p})),p.refreshedAt=new Date().toISOString(),n.addTags({refreshedAt:p.refreshedAt,features:p.features,plan:p.plan,quotas:p.quotas,expirySeconds:af}),await i.store(s,p,af),p)})};Ot.env.isJest()&&(nf=jest.fn());var of=nf,sf=async()=>{let e=Ot.tenancy.getTenantId();await(await zn()).delete(e)};async function se(e,t){Array.isArray(e)||(e=[e]),t||(t=await Oe.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}async function cn(e,t){if(!await se(e,t))throw new Xe.FeatureDisabledError(`${e} is not currently enabled`,e)}async function es(e,t){if(!await se(e,t)){let r=e.join(", ");throw new Xe.FeatureDisabledError(`${r} are not currently enabled`,r)}}function ye(e){return async(...t)=>(await cn(oe.Feature.APP_BACKUPS),e(...t))}async function ts(){return se(oe.Feature.APP_BACKUPS)}async function rs(){return se(oe.Feature.BRANDING)}async function uf(){return se(oe.Feature.ENFORCEABLE_SSO)}async function t_(){return se(oe.Feature.SYNC_AUTOMATIONS)}async function r_(){return se(oe.Feature.TRIGGER_AUTOMATION_RUN)}async function Pt(){return se(oe.Feature.APP_BUILDERS)}async function ln(){return se(oe.Feature.AUDIT_LOGS)}async function as(){return se(oe.Feature.USER_GROUPS)}function a_(){return se(oe.Feature.PWA)}async function Ze(){return se(oe.Feature.EXPANDED_PUBLIC_API)}async function n_(e){if(Xe.env.ENABLE_SSO_MAINTENANCE_MODE||!await uf())return!1;let r;return e?.config?r=e.config:r=await Xe.configs.getSettingsConfig(),!!r.isSSOEnforced}var ns=async()=>{let e=oe.Feature.SCIM,t=await se(e),r=await Xe.configs.getSCIMConfig();if(!t||!r?.enabled)throw new Xe.FeatureDisabledError(`${e} is not currently enabled`,e);return!0};async function o_(){return se(oe.Feature.VIEW_PERMISSIONS)}async function s_(){return se(oe.Feature.VIEW_READONLY_COLUMNS)}var i_={faviconUrl:void 0,faviconUrlEtag:void 0,emailBrandingEnabled:!0,testimonialsEnabled:!0,platformTitle:void 0,loginHeading:void 0,loginButton:void 0,metaDescription:void 0,metaImageUrl:void 0,metaTitle:void 0};async function u_(e){return await rs()?{faviconUrl:e.faviconUrl,faviconUrlEtag:e.faviconUrlEtag,emailBrandingEnabled:e.emailBrandingEnabled,testimonialsEnabled:e.testimonialsEnabled,platformTitle:e.platformTitle,loginHeading:e.loginHeading,loginButton:e.loginButton,metaDescription:e.metaDescription,metaImageUrl:e.metaImageUrl,metaTitle:e.metaTitle}:i_}var ss={};w(ss,{enrichAIConfig:()=>os});var pf=require("@budibase/backend-core"),p_="budibase_ai";async function os(e){if(pf.env.SELF_HOSTED)return e;for(let t of Object.values(e.config))if(t.provider==="BudibaseAI")return e;return e.config[p_]={provider:"BudibaseAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-4o-mini",name:"Budibase AI"},e}var We={};w(We,{addApp:()=>m_,addAutomation:()=>I_,addGroup:()=>us,addPlugin:()=>cs,addRow:()=>y_,addRows:()=>A_,addUsers:()=>mn,bustCache:()=>to,decrement:()=>et,decrementMany:()=>da,getCurrentUsageValues:()=>Bu,getLicensedQuota:()=>lf,getQuotaUsage:()=>wt,increment:()=>qe,incrementBudibaseAICredits:()=>yn,incrementMany:()=>Lt,removeApp:()=>g_,removeGroup:()=>ps,removePlugin:()=>ls,removeRow:()=>h_,removeRows:()=>b_,removeUsers:()=>cr,set:()=>is,setAllUsage:()=>ao,setAppUsageValue:()=>ro,setUsage:()=>Uu,setUsagePerApp:()=>Du,updatePluginCount:()=>ds,updateUsage:()=>ir,usageLimitIsExceeded:()=>f_,utils:()=>Rr});var Y=require("@budibase/types");var Ce=require("@budibase/backend-core");var sr=require("dd-trace"),qe=(e,t,r)=>cf({change:1,name:e,type:t,opts:r}),Lt=e=>sr.tracer.trace("quotas.incrementMany",async()=>cf(e)),cf=async e=>await sr.tracer.trace("quotas.tryIncrement",async t=>{let r=Array.isArray(e)?e:[e];t.addTags({numActions:r.length}),await ir(r.map(n=>({usageChange:n.change,name:n.name,type:n.type,opts:{dryRun:!0,suppressErrorLog:n.opts?.suppressErrorLog,id:n.opts?.id}})));let a=[];for(let n of r)await sr.tracer.trace("quotas.incrementMany.fn",async o=>{o.addTags({actionName:n.name,actionType:n.type,actionChange:n.change});let s=n.opts?.fn;s&&a.push(await s())});return await ir(r.map(n=>({usageChange:n.change,name:n.name,type:n.type,opts:{dryRun:!1,valueFn:n.opts?.valueFn,suppressErrorLog:n.opts?.suppressErrorLog,id:n.opts?.id}}))),a[0]}),et=(e,t,r={})=>ir({usageChange:-1,name:e,type:t,opts:r}),da=e=>{let t=Array.isArray(e)?e:[e];return ir(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},is=async(e,t,r)=>Me.setUsage(r,e,t),c_=(e,t,r)=>{if(e==Y.QuotaUsageType.STATIC){let a=r.usageQuota.triggers;return a?a[t]||{}:{}}else{let a=Me.utils.getCurrentMonthString(),n=r.monthly[a].triggers;return n?n[t]||{}:{}}},l_=async(e,t,r,a)=>{try{await Ce.locks.doWithLock({type:Y.LockType.TRY_ONCE,name:Y.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let n={percentage:r,name:t.name};a&&(n.resetDate=a),await lt.triggerQuota(n)})}catch(n){Ce.logging.logAlert("Error triggering quota",n)}},d_=async(e,t,r,a)=>{let n=await wt(),o=e===Y.QuotaUsageType.MONTHLY?n.quotaReset:void 0,s=await c_(e,t,n),i=a.triggers,p=r/a.value*100;p>100&&(p=100);for(let[f,m]of i.entries())if(p>=m&&a.value!==Je.UNLIMITED){if(!s[m]){s[m]=new Date().toISOString();let g=i[f+1]||100;(!(p>=g)||p===m)&&await l_(t,a,p,o)}}else s[m]=void 0;return s},ir=async e=>{await sr.tracer.trace("quotas.updateUsage",async t=>{let r=Ce.tenancy.getTenantId(),a=Array.isArray(e)?e:[e];t.addTags({numActions:a.length,tenantId:r});let n,o,s=[],i={},p={},f={},m={};for(let g of a)await sr.tracer.trace("quotas.updateUsage.action",async S=>{S.addTags({actionName:g.name,actionType:g.type,actionUsageChange:g.usageChange});try{n=Ce.context.getAppId()}catch{}if(Y.APP_QUOTA_NAMES.includes(g.name)&&!n)throw new Error("App context required for quota update");try{o=await lf(Y.QuotaType.USAGE,g.name,g.type),s.push(o);let{total:x,app:R,breakdown:E}=await Me.getCurrentUsageValues(g.type,g.name,g.opts?.id);x+=g.usageChange,R!=null&&(R+=g.usageChange),E!=null&&(E+=g.usageChange);let q={};if(g.opts?.dryRun||(q=await d_(g.type,g.name,x,o),m={...m,[g.name]:q}),o.value!==Je.UNLIMITED&&x>o.value&&g.usageChange>0)throw new Ce.UsageLimitError(`Licensed ${o.name} of ${o.value} has been exceeded`,o.name);if(x=Math.max(0,x),R&&(R=Math.max(0,R)),E&&(E=Math.max(0,E),f={...f,[g.name]:E}),!g.opts?.dryRun){let xe=g.opts?.valueFn;xe&&(x=await xe(),R=x),i={...i,[g.name]:x},p={...p,[g.name]:R}}}catch(x){throw g.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${g.name}`,x),x}});let y=a.filter(g=>!g.opts?.dryRun).map(g=>({name:g.name,type:g.type,values:{total:i[g.name],app:p[g.name],breakdown:f[g.name],triggers:m[g.name]},opts:{...g.opts,tenantId:r}}));y.length>0&&await Me.setAllUsage(y)})},lf=async(e,t,r)=>{let a=await Oe.getCachedLicense();if(!a){let n=Ce.tenancy.getTenantId();throw new Error("License not found for tenant id "+n)}if(r&&(0,Y.isStaticQuota)(e,r,t))return a.quotas[e][r][t];if(r&&(0,Y.isMonthlyQuota)(e,r,t))return a.quotas[e][r][t];if((0,Y.isConstantQuota)(e,t))return a.quotas[e][t];throw new Error("Invalid quota type")},f_=async(e,t)=>{try{return await ir({usageChange:1,name:e,type:t,opts:{dryRun:!0}}),!1}catch(r){if(r.code===Y.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw r}};var ur=require("@budibase/types"),df=require("@budibase/backend-core"),ff=async()=>{let e=await df.db.getAllApps({dev:!0});return e?e.length:0},m_=async(e,{appId:t}={})=>qe(ur.StaticQuotaName.APPS,ur.QuotaUsageType.STATIC,{fn:e,valueFn:ff,id:t}),g_=async({appId:e}={})=>et(ur.StaticQuotaName.APPS,ur.QuotaUsageType.STATIC,{valueFn:ff,id:e});var Qe=require("@budibase/types"),y_=async(e,{tableId:t}={})=>qe(Qe.StaticQuotaName.ROWS,Qe.QuotaUsageType.STATIC,{fn:e,id:t}),h_=async({tableId:e}={})=>et(Qe.StaticQuotaName.ROWS,Qe.QuotaUsageType.STATIC,{id:e}),A_=async(e,t,{tableId:r}={})=>Lt({change:e,name:Qe.StaticQuotaName.ROWS,type:Qe.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),b_=async(e,{tableId:t}={})=>da({change:e,name:Qe.StaticQuotaName.ROWS,type:Qe.QuotaUsageType.STATIC,opts:{id:t}});var fn=require("@budibase/types"),I_=async(e,{automationId:t}={})=>qe(fn.MonthlyQuotaName.AUTOMATIONS,fn.QuotaUsageType.MONTHLY,{fn:e,id:t});var pr=require("@budibase/types"),us=async e=>qe(pr.StaticQuotaName.USER_GROUPS,pr.QuotaUsageType.STATIC,{fn:e}),ps=async()=>et(pr.StaticQuotaName.USER_GROUPS,pr.QuotaUsageType.STATIC);var mt=require("@budibase/types"),cs=async e=>qe(mt.StaticQuotaName.PLUGINS,mt.QuotaUsageType.STATIC,{fn:e}),ls=async()=>et(mt.StaticQuotaName.PLUGINS,mt.QuotaUsageType.STATIC),ds=async e=>is(mt.StaticQuotaName.PLUGINS,mt.QuotaUsageType.STATIC,e);var je=require("@budibase/types"),fa=require("@budibase/backend-core");var mn=async(e,t,r)=>{let a=[{change:e,name:je.StaticQuotaName.USERS,type:je.QuotaUsageType.STATIC,opts:{fn:r,valueFn:fa.users.getUserCount}}];t>0&&a.push({change:t,name:je.StaticQuotaName.CREATORS,type:je.QuotaUsageType.STATIC,opts:{valueFn:fa.users.getCreatorCount}});let n=await Lt(a);return await Wt(),n},cr=async(e,t)=>{let r=[{change:e,name:je.StaticQuotaName.USERS,type:je.QuotaUsageType.STATIC,opts:{valueFn:fa.users.getUserCount}}];t>0&&r.push({change:t,name:je.StaticQuotaName.CREATORS,type:je.QuotaUsageType.STATIC,opts:{valueFn:fa.users.getCreatorCount}}),await da(r),await Wt()};var gn=require("@budibase/types"),yn=async e=>Lt({change:e,name:gn.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:gn.QuotaUsageType.MONTHLY});var tt={};w(tt,{addAppBuilder:()=>E_,db:()=>$e,removeAppBuilder:()=>R_});var ga=require("@budibase/backend-core");var Q={};w(Q,{addAppBuilder:()=>hs,addUsers:()=>ms,adjustGroupCreatorsQuotas:()=>v_,cleanupApp:()=>T_,enrichUserRolesFromGroups:()=>w_,fetch:()=>ma,get:()=>qt,getBulk:()=>If,getGroupBuilderAppIds:()=>bf,getGroupRoleId:()=>S_,remove:()=>fs,removeAppBuilder:()=>As,removeUsers:()=>gs,save:()=>lr,updateGroupApps:()=>ys});var _=require("@budibase/backend-core");var mf=require("@budibase/backend-core"),hn=class extends mf.HTTPError{constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function hf(e,t){try{let r=[];for(let i of e)if(i.roles){let p=i.roles[_.db.getProdAppID(t)];p&&r.push(p)}let a=await Promise.all(r.map(async i=>({[i]:await _.roles.roleToNumber(i)}))),n,o,s={};a.forEach(i=>{let[p,f]=Object.entries(i)[0];s[p]={roleId:p,roleNum:f}});for(let{roleId:i,roleNum:p}of Object.values(s))(o===void 0||p>o)&&(o=p,n=i);return n}catch(r){throw _.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}async function Af(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await M.getBulk(e,{enriched:!1}),t}async function bf(e,t){if(!e.userGroups)return[];let r=await Af(e.userGroups,t?.groups),a=t?.appId?_.db.getProdAppID(t?.appId):null,n=[];for(let o of r){let s=o.builder?.apps;a&&s?.includes(a)?n.push(a):a||(n=n.concat(s||[]))}return[...new Set(n)]}async function S_(e,t,r){if(!e.userGroups)return null;let a=await Af(e.userGroups,r?.groups),n=_.db.getProdAppID(t);return e.roles?.[n]?e.roles[n]:(a=a.filter(o=>o?.roles?Object.keys(o.roles).includes(n):!1),await hf(a,t))}async function w_(e){if(!e||!e.userGroups)return e;let t=await If(e.userGroups,{enriched:!1}),r=[];for(let n of t)n?.roles&&(r=r.concat(Object.keys(n.roles)));r=[...new Set(r)];for(let n of r)await _.context.doInAppContext(n,async()=>{if(e.roles[n])return;let o=await hf(t,n);o&&(e.roles[n]=o)});let a=await bf(e,{groups:t});if(a.length&&!e.builder?.global){let n=e.builder?.apps||[];e.builder={apps:n.concat(a)}}return e}async function ma(){return await M.fetch()}async function qt(e){return await M.get(e)}async function If(e,t={enriched:!0}){return await M.getBulk(e,t)}async function gf(e){if(await M.getByName(e))throw new hn(e)}async function yf(e){let t=await M.getGroupUsers(e._id);if(!t.length)return 0;let a=await _.tenancy.getGlobalDB().getMultiple(t.map(o=>o._id));return(await _.userUtils.creatorsInList(a)).filter(o=>o).length}async function lr(e){let t=[],r=!e._id,a=0;if(delete e.users,!e._id)e._id=M.generateUserGroupID(),await gf(e.name),t.push(_.events.group.created(e));else{let o=await M.get(e._id);if(o.name!==e.name&&await gf(e.name),t.push(_.events.group.updated(e)),JSON.stringify(o.roles)!==JSON.stringify(e.roles)){let s=o.users?.length||0,i=0;s>0&&(i=await yf(o)),Object.values(e.roles).includes("CREATOR")?a=s-i:a=-s,t.push(_.events.group.permissionsEdited(e))}}await Promise.all(t);let n=()=>M.save(e);if(r)return await us(n);{let o=await n();if(a>0)await mn(0,a);else if(a<0){let s=await yf(e),i=Math.abs(a)-s;i>0&&await cr(0,i)}return o}}async function fs(e,t){let r;try{r=await M.get(e)}catch{throw new Error("Group not found")}let a=Object.values(r.roles||{}).includes("CREATOR"),n=()=>{};if(a){let s=_.tenancy.getGlobalDB(),i=await M.getGroupUsers(e),f=(await Promise.all(i.map(S=>s.get(S._id)))).map(S=>({...S,userGroups:S.userGroups.filter(P=>P!==e)})),y=(await _.userUtils.creatorsInList(f)).filter(S=>S).length,g=i.length-y;g&&(n=()=>cr(0,g))}let o=await M.destroy(e,t);return await _.events.group.deleted(r),await ps(),await n(),o}async function ms(e,t){let r=await M.get(e),a=await _.users.bulkGetGlobalUsersById(t),n=[];for(let p of a)p.userGroups||(p.userGroups=[]),p.userGroups.includes(e)||n.push(p);if(!n.length)return n;let o=n.map(p=>({...p,userGroups:[...p?.userGroups||[],e]}));if(await _.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes("CREATOR")){let f=(await _.userUtils.creatorsInList(n)).filter(y=>y).length,m=n.length-f;m&&await mn(0,m)}let i=[];for(let p of t)i.push(_.cache.user.invalidateUser(p));return await Promise.all(i),await _.events.group.usersAdded(o.length,r),o}async function gs(e,t){let r=await M.get(e),a=await _.users.bulkGetGlobalUsersById(t),n=[];for(let i of a){if(!i.userGroups||!i.userGroups.includes(e))continue;let p=i.userGroups.indexOf(e);i.userGroups.splice(p,1),n.push(i)}if(await _.users.bulkUpdateGlobalUsers(n),Object.values(r.roles||{}).includes("CREATOR")){let p=(await _.userUtils.creatorsInList(n)).filter(m=>m).length,f=n.length-p;f&&await cr(0,f)}let s=[];for(let i of t)s.push(_.cache.user.invalidateUser(i));return await Promise.all(s),n.length&&await _.events.group.usersDeleted(n.length,r),n}async function ys(e,t){let r=await qt(e);if(r.roles||(r.roles={}),t.appsToAdd)for(let a of t.appsToAdd)r.roles[a.appId]=a.roleId;if(t.appsToRemove)for(let a of t.appsToRemove)delete r.roles[a.appId];return await lr(r)}async function T_(e){let t=await ma(),r=[];for(let a of t)!a.roles||!a.roles[e]||(delete a.roles[e],r.push(a));return await M.bulkSave(r)}async function hs(e,t){if(!await Pt())throw new Error("Feature not enabled, please check license");let r=_.db.getProdAppID(t),a=await qt(e);a.builder??={apps:[]},a.builder.apps.includes(t)||(a.builder.apps.push(r),await lr(a))}async function As(e,t){if(!await Pt())throw new Error("Feature not enabled, please check license");let r=_.db.getProdAppID(t),a=await qt(e);a.builder?.apps.includes(t)&&(a.builder.apps=a.builder.apps.filter(n=>n!==r),await lr(a))}async function v_(){if(!await as()){let e=_.tenancy.getGlobalDB(),r=(await ma()||[]).filter(a=>Object.values(a?.roles||{}).includes("CREATOR"));for(let a of r){let n=await M.getGroupUsers(a._id),s=(await Promise.all(n.map(m=>e.get(m._id)))).map(m=>({...m,userGroups:m.userGroups.filter(y=>y!==a._id)})),p=(await _.userUtils.creatorsInList(s)).filter(m=>m).length,f=n.length-p;await M.save({...a,roles:{}}),f&&await cr(0,f)}}}ga.users.UserDB.init(We,Q,Le);var $e=ga.users.UserDB;async function E_(e,t){if(!await Pt())throw new Error("Feature not enabled, please check license");await ga.users.addAppBuilder(e,t)}async function R_(e,t){if(!await Pt())throw new Error("Feature not enabled, please check license");await ga.users.removeAppBuilder(e,t)}var In={};w(In,{logs:()=>Es});var Es={};w(Es,{logSearch:()=>D_,oldestLogDate:()=>xf,storeLog:()=>N_});var Rf=require("@budibase/types"),bn=require("@budibase/backend-core");var An=require("@budibase/types");var Z=require("@budibase/backend-core");var Sf=require("@budibase/backend-core");async function wf(e,t){let r,a=5,n=!1,o,s=!0;for(;a>0;a--)try{s?o=await e():o=await exports.randomDelay(e),n=!0;break}catch(i){r=i}return n||Sf.logging.logWarn(`Failed to backoff: ${t}`,r),o}var{SEPARATOR:rt,UNICODE_MAX:x_,DocumentType:Tf,AutomationViewMode:bs,ViewName:__,getQueryIndex:O_}=Z.db,P_=new Date(0).toISOString(),L_=100,Is=async()=>ka(An.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS);function vf(e,t,{status:r,automationId:a}={},n={}){let o=a?`${a}${rt}`:"",s=r?`${r}${rt}`:"",i;return r&&a?i=`${bs.ALL}${rt}${s}${o}`:r?i=`${bs.STATUS}${rt}${s}`:a?i=`${bs.AUTOMATION}${rt}${o}`:i=`${Tf.AUTOMATION_LOG}${rt}`,{...n,descending:!0,startkey:`${i}${t}${x_}`,endkey:`${i}${e}`}}function C_(e,t,r){return`${Tf.AUTOMATION_LOG}${rt}${e}${rt}${r}${rt}${t}`}async function Ss(e,t,r={docs:!0}){let a=Z.context.getProdAppDB();await a.exists()||(a=Z.context.getDevAppDB());let n={status:r.status},o=r?.limit?r.limit:r?.paginate?9+1:void 0,s=vf(e,t,n,{include_docs:r.docs,limit:o});r?.page&&(s.startkey=r.page);let i=await a.allDocs(s);return _r(i,{paginate:r?.paginate,pageSize:9})}async function ws(e,t,r={}){let a=Z.context.getProdAppDB();await a.exists()||(a=Z.context.getDevAppDB());let n;try{let o={automationId:r?.automationId,status:r?.status},s=vf(e,t,o,{include_docs:!0,limit:9+1});r?.page&&(s.startkey=r.page),n=await a.query(O_(__.AUTOMATION_LOGS),s)}catch(o){if(o!=null&&(o.name==="not_found"||o.error==="not_found"))return await Yu(),ws(e,t,r);throw o}return _r(n,{paginate:!0,pageSize:9})}async function Ef(e,t){let r=Z.context.getProdAppDB(),a=e._id,n=e.name,o=new Date().toISOString(),s=C_(o,t.status,a),i={...t,automationId:a,status:t.status,automationName:n,createdAt:o,_id:s};return await r.put(i),s}async function Ts(e,{clearing:t}={clearing:!1}){let r=Z.context.getProdAppDB();await wf(async()=>{let a=await r.get(Z.db.DocumentType.APP_METADATA);for(let n of e){let o=n.split(Z.db.SEPARATOR),s=`${o[o.length-3]}${Z.db.SEPARATOR}${o[o.length-2]}`,i={};a.automationErrors&&(i=a.automationErrors),Array.isArray(i[s])||(i[s]=[]);let p=i[s].indexOf(n);t&&p!==-1?i[s].splice(p,1):i[s].push(n),i[s].length===0&&delete i[s],a.automationErrors=i}await r.put(a),await Z.cache.app.invalidateAppMetadata(a.appId,a)},"Failed to update app metadata with automation log error")}async function q_(){let e=await Is();try{return await Ss(P_,e,{docs:!1,paginate:!1,limit:L_})}catch{return{data:[],hasNextPage:!1}}}async function vs(){let e=Z.context.getProdAppDB();try{let t=await q_();if(!t.data||t.data.length===0)return;let r=t.data.map(n=>({_id:n.id,_rev:n.value.rev,_deleted:!0})),a=t.data.filter(n=>{let o=n.id.split(Z.db.SEPARATOR);return o[o.length-1]===An.AutomationStatus.ERROR}).map(n=>n.id);await e.bulkDocs(r),a.length&&await Ts(a,{clearing:!0})}catch(t){Z.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}var xf=Is;async function U_(e,t,r,a){let n,o=new Date().toISOString(),s=await xf();return(!e||e<s)&&(e=s),r||t?n=await ws(e,o,{automationId:r,status:t,page:a}):n=await Ss(e,o,{status:t,page:a,docs:!0,paginate:!0}),n}async function D_(e){return await vs(),await U_(e.startDate,e.status,e.automationId,e.page)}async function N_(e,t){if(!bn.db.isProdAppID(bn.context.getAppId()))return;let r=await Ef(e,t);t.status===Rf.AutomationStatus.ERROR&&await Ts([r]),await vs()}var Sn={};w(Sn,{checkPluginQuotas:()=>G_,deletePlugin:()=>M_,storePlugin:()=>B_});var Lf=require("@budibase/types"),H=require("@budibase/backend-core");var _f=C(require("fs")),Of=require("path");function Pf(e,t){return _f.default.readFileSync((0,Of.join)(e,t),"utf8")}async function B_(metadata,directory,source){let db=H.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=H.objectStore.getPluginS3Dir(name),files=await H.objectStore.uploadDirectory(H.objectStore.ObjectStoreBuckets.PLUGINS,directory,bucketPath),jsFile=files.find(e=>e.name.endsWith(".js")),iconFile=files.find(e=>e.name.endsWith(".svg"));if(!jsFile)throw new Error("Plugin missing .js file.");if(metadata.schema.type===Lf.PluginType.DATASOURCE){let js=Pf(directory,jsFile.name);try{eval(js)}catch(e){let t=e?.message?e.message:JSON.stringify(e);throw new Error(`JS invalid: ${t}`)}}let iconFileName=iconFile?iconFile.name:null,pluginId=H.db.generatePluginID(name),rev;try{rev=(await db.get(pluginId))._rev}catch(e){rev=void 0}let doc={_id:pluginId,_rev:rev,...metadata,name,version,hash,description,source};iconFileName&&(doc.iconFileName=iconFileName),source&&(doc={...doc,source});let write=async()=>{let e=await db.put(doc);return await H.events.plugin.imported(doc),{...doc,_rev:e.rev}};return rev?await write():await cs(write)}async function M_(e){let t=H.tenancy.getGlobalDB();try{let r=await t.get(e),a=H.objectStore.getPluginS3Dir(r.name);await H.objectStore.deleteFolder(H.objectStore.ObjectStoreBuckets.PLUGINS,a),await t.remove(e,r._rev),await H.events.plugin.deleted(r),await ls()}catch(r){let a=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${a}`)}}async function G_(){let e=H.tenancy.getGlobalDB();try{let r=(await e.allDocs(H.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await ds(r)}catch(t){H.logging.logAlert("Unable to retrieve plugins for quota check",t)}}var Ke={};w(Ke,{fetch:()=>F_,fetchValues:()=>Q_,isEncryptionKeyAvailable:()=>k_,isValid:()=>Uf,remove:()=>W_,update:()=>j_});var ya=require("@budibase/types"),Cf=require("@budibase/backend-core");function k_(){return!!Cf.env.ENCRYPTION_KEY}async function F_(){let e=await Et.get();return Object.keys(e.variables)}async function Q_(e){let r=(await Et.get()).variables,a={};for(let[n,o]of Object.entries(r))switch(e){case ya.AppEnvironment.DEVELOPMENT:a[n]=o.development;break;case ya.AppEnvironment.PRODUCTION:default:a[n]=o.production;break}return a}async function qf(e){if(!(await Fe.cache.getCachedLicense()).features.includes(ya.Feature.ENVIRONMENT_VARIABLES))throw new Error("User does not have access to environment variables feature.");let r=await Et.get();r.variables=e(r.variables),await Et.update(r)}async function j_(e,t){if(Uf(e))await qf(a=>(a[e]=t,a));else throw new Error("Variable name has characters that are not allowed")}async function W_(e){await qf(t=>(delete t[e],t))}function Uf(e){return/^[a-zA-Z0-9-_]+$/.test(e)}var gt={};w(gt,{definitions:()=>tO,download:()=>eO,fetch:()=>Z_,write:()=>J_});var Tn=require("@budibase/types");var $=require("@budibase/backend-core"),Ue=require("@budibase/types");var Df=require("memorystream"),Nf=new $.sql.Sql(Ue.SqlClient.SQL_LITE);async function $_(e,t,r){let a={operation:Ue.Operation.READ,table:jt.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:Ue.SortOrder.DESCENDING,type:Ue.SortType.STRING}}},n=Nf._query(a);if(Array.isArray(n))throw new Error("Cannot execute multiple queries for audit log search");return{sql:n.sql,bindings:n.bindings}}function K_(e){return`${$.DocumentType.AUDIT_LOG}${$.SEPARATOR}${e}${$.SEPARATOR}${$.utils.newid()}`}async function Bf(e){e._id||(e._id=K_(e.timestamp)),e.type||(e.type=Ue.AUDIT_LOG_TYPE);try{let r=await $.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){$.logging.logAlert("Failed to write audit log",t)}}async function Rs(e,t,r){t||(t=1);let a=$.context.getAuditLogsDB();try{let n=9+1,o=await $_(e,t,n),s=jt.searchTable(),i=Nf.convertJsonStringColumns(s,await a.sql(o.sql,o.bindings)),p;i.length>n&&(p=i.pop());let f={rows:i,hasNextPage:!!p};return f.hasNextPage&&(f.bookmark=t+1),f}catch(n){if(n.status===404&&!r?.isRetry)return await V_(),await Mu(),await Rs(e,t,{isRetry:!0});throw n}}async function V_(){let e=$.context.getAuditLogsDB(),r=(await e.allDocs($.db.getDocParams($.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(a=>a.doc).filter(a=>a&&!a.type).map(a=>({...a,type:Ue.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}function Mf(e){let t=$.context.getAuditLogsDB(),r=new Df,a=t.dump(r,{filter:o=>{let s=o;if(!s._id?.startsWith($.DocumentType.AUDIT_LOG))return!1;let i=!0,p=(f,m)=>{!f||f.length===0||(i=!!(i&&m&&f.includes(m)))};if(p(e.userIds,s.userId),p(e.appIds,s.appId),p(e.events,s.event),(e.startDate||e.endDate)&&(i=i&&s.timestamp>=e.startDate&&s.timestamp<=e.endDate),e.fullSearch){let f=JSON.stringify(o);i=i&&f.includes(e.fullSearch)}return i}}),n=new Df;return r.on("data",o=>{let s=JSON.parse(Buffer.from(o).toString());if(Array.isArray(s.docs)){let i="";for(let p of s.docs)i+=JSON.stringify(p)+`
38
- `;n.write(i)}}),r.on("end",()=>{n.end()}),{promise:a,stream:n}}var ce=require("@budibase/backend-core");var wn=require("@budibase/types"),ha=require("@budibase/string-templates"),Aa=require("@budibase/backend-core"),H_=Aa.constants.MIN_VALID_DATE.toISOString(),z_=Aa.constants.MAX_VALID_DATE.toISOString();function xs(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||H_,e.endDate=e.endDate||z_),e}async function Gf(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(a=>Aa.db.getProdAppID(a)));let t={};function r(a,n){n?.length&&(t.oneOf={...t.oneOf,[a]:n})}return r("userId",e.userIds),r("appId",e.appIds),r("event",e.events),e.fullSearch&&(t.fuzzyOr=!0,t.fuzzy={name:e.fullSearch,fallback:e.fullSearch}),(e.startDate||e.endDate)&&(e=xs(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}function _s(e,t,r){let a={_id:e,status:wn.AuditLogResourceStatus.DELETED};switch(t){case"app":a.name=r?.appName;break;case"user":a.email=r?.email;break}return a}function Os(e){let t=(0,ha.findHBSBlocks)(e);for(let r of t){let a=` "${r}"`;e=e.replace(e.includes(a)?a:` ${r}`,""),e=(0,ha.processStringSync)(e,{})}return e}function kf(e,t){let r=wn.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let a=(0,ha.processStringSync)(r,t);return a.includes('""')&&(a=Os(r)),a}async function J_(e,t,r){if(!await ln()||!ce.utils.isAudited(e))return;let a=kf(e,t),n=new Date;r?.timestamp&&(n=new Date(r.timestamp));let o={timestamp:n.toISOString(),event:e,name:a,userId:r?.userId||Tn.AuditLogSystemUser,metadata:{...t,...r?.hostInfo}},s={};try{if(r?.appId){o.appId=ce.db.getProdAppID(r.appId);let i=await ce.cache.app.getAppMetadata(r.appId);"name"in i&&(s.appName=i.name)}if(r?.userId){let i=await ce.users.getById(r?.userId);s.email=i.email}}catch(i){ce.logging.logAlert("Failed to retrieve fallback information for audit log",i)}return o.fallback=s,await Bf(o)}async function X_(e){let t=e.map(i=>i.userId),a=e.filter(i=>i.appId).map(i=>ce.db.getDevAppID(i.appId)),n=await ce.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),o=await ce.db.getAppsByIDs([...new Set(a)]),s=[];for(let i of e){let p=n.find(y=>y?._id===i.userId),f=o.find(y=>ce.db.isSameAppID(y?.appId,i.appId)),m={event:i.event,timestamp:i.timestamp,name:i.name,metadata:i.metadata,user:p||_s(i.userId,"user",i.fallback)};i.appId&&(m.app=f||_s(i.appId,"app",i.fallback)),s.push(m)}return s}async function Z_(e){if(!await ln())throw new Error("Audit logs not available - license required.");let t=await Gf(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await Rs(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await X_(r.rows)}}function eO(e){return e=xs(e),Mf(e)}function tO(){let e=Object.entries(Tn.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=Os(r[1]);return t}var vn={};w(vn,{applications:()=>qs,roles:()=>Ls,users:()=>Ps});var Ps={};w(Ps,{roleCheck:()=>aO});function rO(e,t){let r=e.request.body;return r.builder&&(r.builder=t?.builder||void 0),r.admin&&(r.admin=t?.admin||void 0),r.roles&&(r.roles=t?.roles||{}),e.request.body=r,e}async function aO(e,t){return await Ze()||rO(e,t),e}var Ls={};w(Ls,{assign:()=>nO,unAssign:()=>oO});var ba=require("@budibase/backend-core");async function nO(e,t){if(!await Ze())throw new Error("Unable to assign roles - license required.");let r=await $e.bulkGet(e);for(let a of r){if(t.role&&t.role.roleId){let n=ba.db.getProdAppID(t.role.appId);a.roles[n]=t.role.roleId}if(t.appBuilder){let n=ba.db.getProdAppID(t.appBuilder.appId),o=a.builder?.apps||[];a.builder={apps:o.concat([n])}}t.builder&&(a.builder={global:!0}),t.admin&&(a.admin={global:!0}),a.roles}await $e.bulkUpdate(r)}async function oO(e,t){if(!await Ze())throw new Error("Unable to un-assign roles - license required.");let r=await $e.bulkGet(e);for(let a of r){if(t.role){let n=ba.db.getProdAppID(t.role?.appId);a.roles[n]===t.role.roleId&&delete a.roles[n]}if(t.appBuilder&&a.builder?.apps){let n=ba.db.getProdAppID(t.appBuilder.appId);a.builder.apps=a.builder.apps.filter(o=>o!==n)}t.builder&&a.builder&&delete a.builder,t.admin&&a.admin&&delete a.admin}}var qs={};w(qs,{buildExportFn:()=>iO,buildImportFn:()=>sO});var Cs=require("@budibase/backend-core");function sO(e){return async(t,r)=>{await Ze()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await Cs.context.doInAppContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}function iO(e){return async(t,r)=>{await Ze()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:a,excludeRows:n}=t.request.body;await Cs.context.doInAppContext(t.params.appId,async()=>{t.request.body={encryptPassword:a,excludeRows:n},t.query.appId=t.params.appId,await e(t),await r()})}}var Ve=require("@budibase/backend-core"),ie=require("@budibase/types");var Us=require("@budibase/backend-core"),Ff;function Qf(){Ff=new Us.queue.BudibaseQueue(Us.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}function Ut(){return Ff}var jf=require("path"),Wf=C(require("fs"));async function Ds(e,t={}){return we.storeAppBackupMetadata(e,t)}function $f(e){let t=new Date().toISOString();switch(e){case ie.AppBackupStatus.COMPLETE:case ie.AppBackupStatus.FAILED:return{timestamp:t,finishedAt:t};case ie.AppBackupStatus.STARTED:return{timestamp:t,startedAt:t};case ie.AppBackupStatus.PENDING:return{timestamp:t,createdAt:t}}}async function uO(e,t,r,a){let n=await En(e);return await we.storeAppBackupMetadata({...n,...$f(t),contents:r,status:t,type:ie.AppBackupType.BACKUP},{filename:a,docId:e})}async function pO(e,t,r){let a=await En(e);return await we.storeAppBackupMetadata({...a,...$f(r),status:r,type:ie.AppBackupType.RESTORE,trigger:ie.AppBackupTrigger.MANUAL},{docId:e,docRev:t})}async function En(e){return we.getAppBackupMetadata(e)}async function cO(e,t){return we.updateAppBackupMetadata(e,t)}async function lO(e){let t=await we.getAppBackupMetadata(e);return t.filename&&await Ve.objectStore.deleteFile(Ve.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),we.deleteAppBackupMetadata(e)}async function dO(e,t){return we.fetchAppBackups(e,t)}async function Kf(e){let t=await we.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let r=await Ve.objectStore.getReadStream(Ve.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}async function fO(e){let{stream:t}=await Kf(e),r=(0,jf.join)(Ve.objectStore.budibaseTempDir(),Ve.utils.newid()),a=Wf.default.createWriteStream(r);return new Promise((n,o)=>{t.on("error",o),a.on("error",o),t.pipe(a).on("close",()=>n(r))})}async function mO(e,t,r={}){let a;try{a=await Ds({appId:e,trigger:t,timestamp:new Date().toISOString(),status:ie.AppBackupStatus.PENDING,type:ie.AppBackupType.BACKUP,...r})}catch(n){if(n.status===409)return;throw n}return await Ut().add({docId:a.id,docRev:a.rev,appId:e,export:{trigger:t,...r}}),await Ve.events.backup.appBackupTriggered(e,a.id,ie.AppBackupType.BACKUP,t,r?.name),a.id}async function gO(e,t,r,a){let n=await En(t),o;try{o=await Ds({appId:e,timestamp:new Date().toISOString(),status:ie.AppBackupStatus.PENDING,type:ie.AppBackupType.RESTORE,createdBy:a})}catch(s){if(s?.status===409)return;throw s}return await Ut().add({appId:e,docId:o.id,docRev:o.rev,import:{nameForBackup:r,backupId:t,createdBy:a}}),{restoreId:o.id,metadata:n}}var yO={isEnabled:ts,triggerAppRestore:ye(gO),triggerAppBackup:ye(mO),getBackupDownloadStream:ye(Kf),downloadAppBackup:ye(fO),fetchAppBackups:ye(dO),storeAppBackupMetadata:ye(Ds),updateBackupStatus:ye(uO),updateRestoreStatus:ye(pO),getAppBackup:ye(En),updateAppBackup:ye(cO),deleteAppBackup:ye(lO)},at=yO;var Bs={};w(Bs,{init:()=>Ns});var z=require("@budibase/backend-core");var De=require("@budibase/types");var dr=C(require("fs"));async function Ns(e){Ut().process(async t=>{let r=t.data;try{if(r.export)return bO(t,e);if(r.import)return AO(t,e)}catch(a){z.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,a)}})}async function hO(e){await z.db.getDB(e,{skip_setup:!0}).destroy()}async function Vf(e,t,r,a){let n=z.db.getDevAppID(r),o=z.db.getProdAppID(r),s=new Date().toISOString(),i=async(p,f)=>{a?.doc?await at.updateBackupStatus(a.doc.id,p,f?.contents,f?.filename):await at.storeAppBackupMetadata({appId:o,timestamp:s,trigger:e,status:p,name:a?.name,type:De.AppBackupType.BACKUP,contents:f?.contents,createdBy:a?.createdBy},{filename:f?.filename})};try{let p=await a.processing.exportAppFn(n,{tar:!0}),f=await a.processing.statsFn(n),m=`${o}/backup-${s}.tar.gz`,y=z.objectStore.ObjectStoreBuckets.BACKUPS,g=dr.default.createReadStream(p);await z.objectStore.streamUpload({bucket:y,filename:m,stream:g,extra:{type:"application/gzip",metadata:{name:a?.name,trigger:e,timestamp:s,appId:o}}}),await i(De.AppBackupStatus.COMPLETE,{filename:m,contents:f}),dr.default.existsSync(p)&&dr.default.rmSync(p)}catch(p){z.logging.logAlert("App backup error",p),await i(De.AppBackupStatus.FAILED)}}async function AO(e,t){let r=e.data,a=r.appId,n=r.import.backupId,o=r.import.nameForBackup,s=r.import.createdBy,i=z.tenancy.getTenantIDFromAppID(a);return z.tenancy.doInTenant(i,async()=>{let p=z.db.getDevAppID(a),{rev:f}=await at.updateRestoreStatus(r.docId,r.docRev,De.AppBackupStatus.STARTED);await Vf(De.AppBackupTrigger.RESTORING,i,a,{processing:t,createdBy:s,name:o});let m=await at.downloadAppBackup(n);await hO(p);let y=De.AppBackupStatus.COMPLETE;try{await t.importAppFn(p,z.db.getDB(p),{file:{type:"application/gzip",path:m},key:m})}catch(g){z.logging.logAlert("App restore error",g),y=De.AppBackupStatus.FAILED}await at.updateRestoreStatus(r.docId,f,y),dr.default.existsSync(m)&&dr.default.rmSync(m,{force:!0})})}async function bO(e,t){let r=e.data,a=r.appId,n=r.export.trigger,o=r.export.name,s=z.tenancy.getTenantIDFromAppID(a);await z.tenancy.doInTenant(s,async()=>{try{let{rev:i}=await at.updateBackupStatus(r.docId,De.AppBackupStatus.STARTED);return Vf(n,s,a,{processing:t,doc:{id:r.docId,rev:i},name:o})}catch(i){z.logging.logAlert("App backup error",i)}})}var IO=async e=>{Qf(),await Ns(e.processing)},ve={...at,processing:Bs,init:IO,getBackupQueue:Ut};var Yf=async e=>{e.backups&&await ve.init(e.backups)};var de={};w(de,{create:()=>fM,find:()=>dM,get:()=>lM,remove:()=>gM,update:()=>mM});var yA=C(Ci()),nt=require("@budibase/backend-core");var hA=require("@budibase/types");async function lM(e){let t=nt.tenancy.getGlobalDB(),r=new nt.db.QueryBuilder(t.name,hA.SearchIndex.USER);r.setIndexBuilder(nt.db.searchIndexes.createUserIndex),r.setLimit(e.pageSize),r.addEqual("scimInfo.isSync",!0);for(let[n,o]of Object.entries(e.filters?.equal??{}))r.addEqual(n,o);r.setSort("_id"),r.setSkip(e.skip);let a=await r.run();return{users:a.rows,total:a.totalRows}}async function dM(e){return await nt.users.getById(e)}async function fM(e){let t=await $e.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new nt.HTTPError("User is already synched",409);e={...t,scimInfo:(0,yA.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await $e.save(e,{requirePassword:!1})}async function mM(e,t){return await $e.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}async function gM(e){return await $e.destroy(e)}var Ar={};w(Ar,{create:()=>yM});var AA=C(Ci());var bA=require("@budibase/backend-core");async function yM(e){let t=await oo(e.name),r;if(!t)r=(await Q.save(e)).id;else{if(t.scimInfo?.isSync)throw new bA.HTTPError("Group is already synched",409);r=t._id,t.users&&(await Q.removeUsers(r,t.users.map(n=>n._id)),delete t.users),t.scimInfo=(0,AA.default)(t.scimInfo,e.scimInfo),await Q.save(t)}return await Q.get(r)}var Nt={};w(Nt,{logRequest:()=>hM,logResponse:()=>AM});var qi=require("@budibase/backend-core");async function hM(e){qi.logging.logWarn("SCIM request log",e)}async function AM(e){qi.logging.logWarn("SCIM response error",e)}var Gi={};w(Gi,{doInScimContext:()=>Di,feature:()=>j,internalGroupOnly:()=>kn,licenseAuth:()=>wA,licensing:()=>IA,requireSCIM:()=>Ni,scimGroupOnly:()=>Ta,scimUserOnly:()=>wa});var yt=require("@budibase/backend-core");var Mn=require("@budibase/types"),bM=(e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(yt.env.SELF_HOSTED&&yt.env.DEFAULT_LICENSE)return t.user.license=io,r();t.user.license=await Fe.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(yt.utils.isServingApp(t)||yt.utils.isServingBuilder(t)||yt.utils.isServingBuilderPreview(t)||yt.utils.isPublicApiRequest(t))&&await We.usageLimitIsExceeded(Mn.StaticQuotaName.USERS,Mn.QuotaUsageType.STATIC)}return r()},IA=bM;var j={};w(j,{requireFeature:()=>IM,requireFeatures:()=>SM});var IM=e=>async(t,r)=>{await cn(e),await r()},SM=(...e)=>async(t,r)=>{await es(e),await r()};var Gn=require("@budibase/backend-core");var Di=async(e,t)=>(Gn.env.DISABLE_SCIM_CALLS||await Nt.logRequest({...e.request.toJSON(),body:e.request.body}),await Gn.context.doInScimContext(async()=>{let r=await t();return await Nt.logResponse({...e.response.toJSON(),body:e.response.body}),r}));var Ni=async(e,t)=>{await ns(),await t()};var SA=require("@budibase/backend-core");var wa=e=>Bi(SA.users.getById,e,!0),Ta=e=>Bi(M.get,e,!0),kn=e=>Bi(M.get,e,!1);function Bi(e,t,r){return async(a,n)=>{let o=a.params[t];return typeof o!="string"&&a.throw(404),!!(await e(o)).scimInfo?.isSync!==r&&a.throw(404),n()}}var va=require("@budibase/backend-core");var Mi=require("dd-trace");async function wA(e,t){await Mi.tracer.trace("licenseAuth",async r=>{let a=e.request.headers[va.constants.Header.LICENSE_KEY];Array.isArray(a)&&(a=a[0]),r.addTags({licenseKey:a}),a||e.throw(403,"License key not provided");let n=await Ho(a);n||(r.addTags({licenseFound:!1}),e.throw(403,"License not found or invalid")),n.tenantId||e.throw(403,"License does not have a tenant ID"),Mi.tracer.setUser({id:"anonymous",tenantId:n.tenantId}),await va.context.doInSelfHostTenantUsingCloud(n.tenantId,async()=>{await va.context.doInLicenseContext(n,async()=>{await t()})})})}var Yi={};w(Yi,{appBackups:()=>ib,auditLogs:()=>JA,environmentVariables:()=>jA,groups:()=>UA,scim:()=>Mb,users:()=>jb});async function TA(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let a=await qt(t._id);t.roles=a.roles,t.scimInfo=a.scimInfo}let r=await lr(t);e.body={_id:r.id,_rev:r.rev}}async function vA(e){let t=e.params.groupId,r=e.request.body.add,a=e.request.body.remove;(r&&!Array.isArray(r)||a&&!Array.isArray(a))&&e.throw(400,"Must supply a list of users to add or to remove");let n,o;r&&(n=await ms(t,r)),a&&(o=await gs(t,a)),e.body={added:n,removed:o}}async function EA(e){let t=e.params.groupId,r=e.request.body.add,a=e.request.body.remove;(r&&!Array.isArray(r)||a&&!Array.isArray(a))&&e.throw(400,"Must supply a list of objects, with appId and roleId to add or remove"),e.body=await ys(t,{appsToAdd:r,appsToRemove:a})}async function RA(e){e.body={data:await ma()}}async function xA(e){let{groupId:t,rev:r}=e.params;try{await fs(t,r),e.body={message:"Group deleted successfully"}}catch(a){e.throw(a.status,a)}}async function _A(e){try{e.body=await qt(e.params.groupId)}catch(t){e.throw(t.status,t)}}async function OA(e){let{pageSize:t=10,bookmark:r,emailSearch:a}=e.request.query,n=e.params.groupId,o={limit:t+1},s=await Ma(n,{...o,emailSearch:a,bookmark:r}),i=a?s[t]?.email:s[t]?._id,p=!!i;e.body={users:s.slice(0,t),bookmark:i,hasNextPage:p}}async function PA(e){let{groupId:t,appId:r}=e.params;await hs(t,r),e.body={message:"Group app builder access updated."}}async function LA(e){let{groupId:t,appId:r}=e.params;await As(t,r),e.body={message:"group app builder access removed."}}var CA=C(require("@koa/router")),he=C(require("joi"));var Ee=require("@budibase/types"),Ye=require("@budibase/backend-core"),qA=new CA.default;function TM(){return Ye.auth.joiValidator.body(he.default.object({_id:he.default.string().optional(),_rev:he.default.string().optional(),color:he.default.string().required(),icon:he.default.string().required(),name:he.default.string().trim().required().max(50),role:he.default.string().optional(),users:he.default.array().optional(),apps:he.default.array().optional(),roles:he.default.object().optional(),createdAt:he.default.string().optional(),updatedAt:he.default.string().optional()}).required())}qA.post("/api/global/groups",Ye.auth.adminOnly,j.requireFeature(Ee.Feature.USER_GROUPS),TM(),TA).get("/api/global/groups",j.requireFeature(Ee.Feature.USER_GROUPS),RA).delete("/api/global/groups/:groupId/:rev",j.requireFeature(Ee.Feature.USER_GROUPS),Ye.auth.adminOnly,kn("groupId"),xA).get("/api/global/groups/:groupId",j.requireFeature(Ee.Feature.USER_GROUPS),Ye.auth.builderOrAdmin,_A).get("/api/global/groups/:groupId/users",j.requireFeature(Ee.Feature.USER_GROUPS),Ye.auth.builderOrAdmin,OA).post("/api/global/groups/:groupId/users",Ye.auth.adminOnly,j.requireFeature(Ee.Feature.USER_GROUPS),kn("groupId"),vA).post("/api/global/groups/:groupId/apps",Ye.auth.builderOrAdmin,j.requireFeature(Ee.Feature.USER_GROUPS),EA).post("/api/global/groups/:groupId/app/:appId/builder",Ye.auth.builderOrAdmin,j.requireFeatures(Ee.Feature.USER_GROUPS,Ee.Feature.APP_BUILDERS),PA).delete("/api/global/groups/:groupId/app/:appId/builder",Ye.auth.builderOrAdmin,j.requireFeatures(Ee.Feature.USER_GROUPS,Ee.Feature.APP_BUILDERS),LA);var UA=qA;var ki=require("@budibase/types");var Fi=require("@budibase/backend-core");async function DA(e){e.body={encryptionKeyAvailable:Ke.isEncryptionKeyAvailable()}}async function NA(e){e.body={variables:await Ke.fetch()}}async function BA(e){let{name:t,production:r,development:a}=e.request.body;await Ke.update(t,{production:r,development:a});let n=[ki.AppEnvironment.PRODUCTION];r!==a&&n.push(ki.AppEnvironment.DEVELOPMENT),await Fi.events.environmentVariable.created(t,n),e.body={message:`Environment variable "${t}" created.`}}async function MA(e){let{production:t,development:r}=e.request.body,a=e.params.varName;await Ke.update(a,{production:t,development:r}),e.body={message:`Environment variable "${a}" updated.`}}async function GA(e){let t=e.params.varName;await Ke.remove(t),await Fi.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}var Bt=require("@budibase/backend-core"),FA=C(require("@koa/router")),Ea=C(require("joi")),QA=new FA.default;function kA(){return Bt.auth.joiValidator.body(Ea.default.object({name:Ea.default.string().optional(),production:Ea.default.string().required(),development:Ea.default.string().required()}))}QA.get("/api/env/variables/status",Bt.auth.builderOrAdmin,DA).get("/api/env/variables",Bt.auth.builderOrAdmin,NA).post("/api/env/variables",Bt.auth.builderOrAdmin,kA(),BA).patch("/api/env/variables/:varName",Bt.auth.builderOrAdmin,kA(),MA).delete("/api/env/variables/:varName",Bt.auth.builderOrAdmin,GA);var jA=QA;var Qi=require("@budibase/backend-core");async function WA(e){let t=e.request.body,r=await gt.fetch(t);await Qi.events.auditLog.filtered(t),e.body=r}async function $A(e){let t=e.request.body,{stream:r}=gt.download(t);await Qi.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}async function KA(e){e.body={events:gt.definitions()}}var YA=require("@budibase/types"),Mt=require("@budibase/backend-core"),HA=C(require("@koa/router")),Re=C(require("joi"));function VA(){return Mt.auth.joiValidator.body(Re.default.object({userIds:Re.default.array().items(Re.default.string()).optional(),appIds:Re.default.array().items(Re.default.string()).optional(),events:Re.default.array().items(Re.default.string().valid(...Object.values(YA.Event))).optional(),startDate:Re.default.string().optional().allow(""),endDate:Re.default.string().optional().allow(""),fullSearch:Re.default.string().optional().allow(""),bookmark:Re.default.number()}))}var zA=new HA.default;zA.post("/api/global/auditlogs/search",Mt.auth.adminOnly,VA(),WA).get("/api/global/auditlogs/download",Mt.auth.adminOnly,Mt.middleware.querystringToBody,VA(),$A).get("/api/global/auditlogs/definitions",Mt.auth.adminOnly,KA);var JA=zA;var ji=require("@budibase/types");var XA=require("@budibase/backend-core");async function br(e,t){await Kt.appExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}async function ZA(e){let t=e.params.appId;await br(e,t);let r=e.request.body,a=e.user?._id,n=await ve.triggerAppBackup(t,ji.AppBackupTrigger.MANUAL,{name:r.name,createdBy:a});n||e.throw(500,"Unable to start backup."),e.body={backupId:n,message:"Backup triggered - process starting."}}async function eb(e){let t=e.params.appId;await br(e,t);let r=e.params.backupId,a=e.request.body.name,n=await ve.triggerAppRestore(t,r,a,e.user?._id);n||e.throw(500,"Unable to start restore."),await XA.events.backup.appBackupRestored(n.metadata),e.body={restoredId:n?.restoreId,message:"Restore triggered - process starting."}}async function tb(e){let t=e.params.appId;await br(e,t);let r=e.params.backupId;await ve.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}async function rb(e){let t=e.params.appId;await br(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(ji.AppBackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await ve.fetchAppBackups(t,{paginate:!0,...r})}async function ab(e){let t=e.params.appId;await br(e,t);let r=e.params.backupId,a=e.request.body;e.body=await ve.updateAppBackup(r,a.name)}async function nb(e){let t=e.params.appId;await br(e,t);let r=e.params.backupId,{metadata:a,stream:n}=await ve.getBackupDownloadStream(r);e.attachment(`backup-${a.timestamp}.tar.gz`),e.body=n}var ob=C(require("@koa/router")),Gt=C(require("joi")),Fn=require("@budibase/types"),ht=require("@budibase/backend-core"),sb=new ob.default;function xM(){return ht.auth.joiValidator.body(Gt.default.object({trigger:Gt.default.string().valid(...Object.values(Fn.AppBackupTrigger)),type:Gt.default.string().valid(...Object.values(Fn.AppBackupType)),startDate:Gt.default.date(),endDate:Gt.default.date(),page:Gt.default.string()}))}sb.post("/api/apps/:appId/backups",ht.auth.builderOrAdmin,ZA).post("/api/apps/:appId/backups/search",ht.auth.builderOrAdmin,xM(),rb).get("/api/apps/:appId/backups/:backupId/file",ht.auth.builderOrAdmin,nb).patch("/api/apps/:appId/backups/:backupId",ht.auth.builderOrAdmin,ab).delete("/api/apps/:appId/backups/:backupId",ht.auth.builderOrAdmin,tb).post("/api/apps/:appId/backups/:backupId/import",ht.auth.builderOrAdmin,eb);var ib=sb;var Bb=C(require("@koa/router"));var Qn=require("scim-patch");var pb=require("@budibase/backend-core");function ub(e,t){let r=e.request.query[t];if(r!==void 0)return+r}var cb=async e=>{let t=ub(e,"pageSize")??20,r=ub(e,"startIndex"),a;e.request.query.filter&&(a=K.user.userFilters(e.request.query.filter));let n=await de.get({pageSize:t,skip:r,filters:a});e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:n.total,Resources:n.users.map(K.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},lb=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await de.find(t);e.body=K.user.toScimUserResponse(r)},fb=async e=>{let t=K.user.fromScimUser(e.request.body);try{let r=await de.create(t);e.body=K.user.toScimUserResponse(r)}catch(r){throw r instanceof pb.EmailUnavailableError&&e.throw(409,"Email already in use"),r}};function _M(e){let t=e.Operations.find(r=>(r.op==="Replace"||r.op==="replace")&&r.path==="active");return t?t.value===!1||t.value?.toLowerCase?.()==="false":!1}var mb=async e=>{let t=await de.find(e.params.id);t||e.throw(404);let r=K.user.toScimUserResponse(t),a=e.request.body;try{(0,Qn.patchBodyValidation)(a)}catch{}if(_M(a))return Wi(e);let n;try{n=(0,Qn.scimPatch)(r,a.Operations)}catch{}n||e.throw(500);let o=K.user.fromScimUser(n);await de.update(o,{allowChangingEmail:!0}),e.body=K.user.toScimUserResponse(o)},Wi=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await de.remove(t),e.status=204};var Ob=C(_b()),Pb=require("@budibase/shared-core"),jn=require("scim-patch");var Wn=require("scim2-parse-filter");function Lb(e,t){for(let r of t.split(","))delete e[r]}var Cb=async e=>{let r=(await Q.fetch()).filter(o=>o.scimInfo?.isSync).map(K.group.toScimGroupResponse),{filter:a,excludedAttributes:n}=e.request.query;if(a){let o=(0,Wn.filter)((0,Wn.parse)(a));r=r.filter(o)}n&&r.forEach(o=>{Lb(o,n)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},qb=async e=>{let t=K.group.fromScimGroup(e.request.body),r=await Ar.create(t);e.body=K.group.toScimGroupResponse(r)},Ub=async e=>{let{id:t}=e.params,r=await Q.get(t),a=K.group.toScimGroupResponse(r),{excludedAttributes:n}=e.request.query;n&&Lb(a,n),e.body=a},Db=async e=>{let{id:t}=e.params,r=await Q.get(t);await Q.remove(t,r._rev),e.status=204},Nb=async e=>{let{id:t}=e.params,r=await Q.get(t),a=K.group.toScimGroupResponse(r),n=e.request.body;try{(0,jn.patchBodyValidation)(n)}catch{e.throw(400)}let{true:o,false:s}=(0,Ob.default)(n.Operations,i=>i.path==="members");if(s?.length){let i=(0,jn.scimPatch)(a,s);i||e.throw(500);let p={...K.group.fromScimGroup(i),_rev:r._rev};await Q.save(p)}if(o?.length){let i=[],p=[];for(let{op:f,value:m}of o)switch(f){case"add":case"Add":for(let y of m)i.push(await de.find(y.value));break;case"remove":case"Remove":for(let y of m)p.push(await de.find(y.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:Pb.utils.unreachable(f)}i.length&&await Q.addUsers(t,i.map(f=>f._id)),p.length&&await Q.removeUsers(t,p.map(f=>f._id))}e.body=K.group.toScimGroupResponse(await Q.get(t))};var Ra=require("@budibase/types"),Ae=new Bb.default({prefix:"/api/global/scim/v2"});Ae.use(Ni);Ae.use(Di);Ae.get("/users",cb);Ae.get("/users/:id",wa("id"),lb);Ae.post("/users",fb);Ae.patch("/users/:id",wa("id"),mb);Ae.delete("/users/:id",wa("id"),Wi);Ae.get("/groups",Cb);Ae.post("/groups",j.requireFeature(Ra.Feature.USER_GROUPS),qb);Ae.get("/groups/:id",j.requireFeature(Ra.Feature.USER_GROUPS),Ta("id"),Ub);Ae.delete("/groups/:id",j.requireFeature(Ra.Feature.USER_GROUPS),Ta("id"),Db);Ae.patch("/groups/:id",j.requireFeature(Ra.Feature.USER_GROUPS),Ta("id"),Nb);var Mb=Ae;var Fb=C(require("@koa/router"));var $i=require("@budibase/backend-core");async function Gb(e){let{userId:t,appId:r}=e.params,a=await tt.db.getUser(t);if($i.users.isGlobalBuilder(a)){e.body={message:"User already admin - no permissions updated."};return}await tt.addAppBuilder(a,r),e.body={message:`User "${a.email}" app builder access updated.`}}async function kb(e){let{userId:t,appId:r}=e.params,a=await tt.db.getUser(t);if($i.users.isGlobalBuilder(a)){e.body={message:"User already admin - no permissions removed."};return}await tt.removeAppBuilder(a,r),e.body={message:`User "${a.email}" app builder access removed.`}}var Ki=require("@budibase/types"),Vi=require("@budibase/backend-core"),Qb=new Fb.default;Qb.post("/api/global/users/:userId/app/:appId/builder",Vi.auth.builderOrAdmin,j.requireFeatures(Ki.Feature.APP_BUILDERS),Gb).delete("/api/global/users/:userId/app/:appId/builder",Vi.auth.builderOrAdmin,j.requireFeatures(Ki.Feature.APP_BUILDERS),kb);var jb=Qb;var K={};w(K,{group:()=>zi,user:()=>Hi});var Hi={};w(Hi,{fromScimUser:()=>aG,toScimUserResponse:()=>eG,userFilters:()=>nG});var $n=require("@budibase/types"),Wb=require("scim2-parse-filter"),$b=require("@budibase/backend-core"),Kb=require("@budibase/shared-core"),{unreachable:ZM}=Kb.utils,eG=e=>{let{isSync:t,roles:r,...a}=e.scimInfo||{},n={...a,schemas:["urn:ietf:params:scim:schemas:core:2.0:User"],id:e._id,meta:{resourceType:"User",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},active:e.status===$n.UserStatus.ACTIVE};return(e.firstName||e.lastName)&&(n.name={formatted:[e.firstName,e.lastName].filter(o=>o).join(" "),familyName:e.lastName,givenName:e.firstName}),n},tG=e=>!!e?.id;function rG(e){if($b.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}var aG=e=>{let t=tG(e)?e:void 0,r=rG(e);if(!r)throw new Error("Email is required");let a;switch(e.active){case"True":case"true":case!0:a=!0;break;case"False":case"false":case!1:a=!1;break;default:ZM(e.active)}let n,o;return e.name?.givenName?(n=e.name?.givenName,o=e.name?.familyName):n=e.displayName,{tenantId:"",_id:t?.id,userId:t?.id,email:r,firstName:n,lastName:o,scimInfo:{...e,isSync:!0},roles:{},status:a?$n.UserStatus.ACTIVE:$n.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},nG=e=>{let t={equal:{}},r=(0,Wb.parse)(e);function a(n){switch(n.op){case"eq":{let o=n.attrPath,s;switch(o){case"emails.value":s="email";break;default:s=`scimInfo.${o}`}t.equal[s]=n.compValue;break}case"and":for(let o of n.filters)a(o);break;default:console.warn("Filter not handled",{filter:n})}}return a(r),t};var zi={};w(zi,{fromScimGroup:()=>iG,toScimGroupResponse:()=>oG});var oG=e=>({schemas:["urn:ietf:params:scim:schemas:core:2.0:Group"],id:e._id,externalId:e.scimInfo.externalId,meta:{resourceType:"Group",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},displayName:e.name,members:e.users?.map(t=>({value:t._id}))}),sG=e=>!!e?.id,iG=e=>{let t=sG(e)?e:void 0;return{_id:t?.id,name:e.displayName,scimInfo:{externalId:e.externalId,isSync:!0},icon:"UserGroup",color:"var(--spectrum-global-color-blue-600)",createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}};var bu={};w(bu,{LLMRequest:()=>V,TableGeneration:()=>Au,agentHistoryTitleSystemPrompt:()=>hG,agentSystemPrompt:()=>yG,aiColumnSchemas:()=>yu,aiTableResponseToTableSchema:()=>du,appendAIColumns:()=>fu,classifyText:()=>Xi,cleanData:()=>Zi,generateAIColumns:()=>cu,generateCode:()=>gG,generateCronExpression:()=>eu,generateData:()=>lu,generateJs:()=>nu,generateSQL:()=>mG,generateTables:()=>pu,generationStructure:()=>gu,getLLM:()=>_a,getLLMConfig:()=>uu,getLLMOrThrow:()=>eI,parseResponseFormat:()=>ou,sanitiseToolName:()=>uG,searchWeb:()=>au,sentimentAnalysis:()=>ru,summarizeText:()=>Kn,tableDataStructuredOutput:()=>hu,translate:()=>tu});function uG(e){if(e.length>64)throw new Error("Tool name must be under 64 characters long");return e.replace(/[^a-zA-Z0-9_-]/g,"_")}var ze=require("@budibase/backend-core"),zb=require("@budibase/types");var Yb=C(require("openai"));var At=require("@budibase/types");var Vb=require("@budibase/shared-core");var bt=C(require("dd-trace"));function Ji(e,t){return t.map(r=>e[r]).join(" ")}var It=class{constructor({model:t,apiKey:r,maxTokens:a}){this._model=t,this._apiKey=r,this._maxTokens=a??parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"300")}get model(){return this._model}get apiKey(){return this._apiKey}get maxTokens(){return this._maxTokens}async prompt(t){return await bt.default.trace("prompt",async()=>{let r=typeof t=="string"?new V().addUserMessage(t):t,{messages:a,tokensUsed:n}=await bt.default.trace("chatCompletion",()=>this.chatCompletion(r));return!a||a.length===0?{message:"",tokensUsed:n}:{message:a[a.length-1].content||"",tokensUsed:n}})}async chat(t){return await bt.default.trace("chat",async()=>await this.chatCompletion(t))}async summarizeText(t){return bt.default.trace("summarizeText",()=>this.prompt(Kn(t)))}async generateCronExpression(t){return bt.default.trace("generateCronExpression",()=>this.prompt(eu(t)))}async operation(t,r){return bt.default.trace("operation",a=>{a.addTags({operation:t.operation,rowId:r.id});let n=this.promptForOperation(t,r);return this.prompt(n)})}promptForOperation(t,r){let{operation:a,column:n,columns:o,language:s,categories:i,prompt:p}=t;switch(a){case At.AIOperationEnum.SUMMARISE_TEXT:return Kn(Ji(r,o));case At.AIOperationEnum.CLEAN_DATA:return Zi(r[n]);case At.AIOperationEnum.TRANSLATE:return tu(r[n],s);case At.AIOperationEnum.CATEGORISE_TEXT:if(!i)throw Error("No categories provided for categorise text operation. Please provide categories.");return Xi(Ji(r,o),i.split(","));case At.AIOperationEnum.SENTIMENT_ANALYSIS:return ru(r[n]);case At.AIOperationEnum.PROMPT:return p;case At.AIOperationEnum.SEARCH_WEB:return au(Ji(r,o));default:throw Vb.utils.unreachable(a)}}async generateJs(t,r){return await bt.default.trace("generateJs",async()=>{let{bindings:a=[],snippets:n=[]}=r||{};return await this.prompt(nu(a,n).addUserMessage(t))})}};var Hb=require("openai/helpers/zod");function ou(e){if(e)return e==="text"?{type:"text"}:e==="json"?{type:"json_object"}:e}function pG(e){if(!e)return 0;let t=e.prompt_tokens;return e.completion_tokens*3+t}var ot=class extends It{constructor(r){super(r);if(!r.apiKey)throw new Error("No OpenAI API key found");this.client=new Yb.default({apiKey:r.apiKey})}async chatCompletion(r){let a={model:this.model,messages:r.messages,max_tokens:this.maxTokens,response_format:ou(r.format)};r.tools&&r.tools.length>0&&(a.tool_choice="auto",a.tools=r.tools.map(Hb.zodFunction));let n=await this.client.chat.completions.create(a),o=n.choices[0]?.message;if(o?.tool_calls){r.addMessage(o);let s=[];for(let i of o.tool_calls){let p=r.findTool(i.function.name);if(!p)throw new Error(`Tool ${i.function.name} not found in prompt tools`);let f=JSON.parse(i.function.arguments);s.push(p.handler(f).then(m=>({role:"tool",tool_call_id:i.id,content:m})))}return r.addMessages(await Promise.all(s)),this.chatCompletion(r)}else{if(o?.content)return{messages:[...r.messages,{role:o.role,content:o.content}],tokensUsed:pG(n.usage)};throw new Error("No response found")}}};var He=require("@budibase/backend-core");var su=require("dd-trace"),Vn=class extends It{async prompt(t){let r=await super.prompt(t);return r.tokensUsed&&await yn(r.tokensUsed),r}async chat(t){let r=await super.chat(t);return r.tokensUsed&&await yn(r.tokensUsed),r}async chatCompletion(t){return He.env.SELF_HOSTED?this.chatCompletionSelfHost(t):this.chatCompletionCloud(t)}async chatCompletionCloud(t){return await su.tracer.trace("chatCompletionCloud",async()=>await new ot({apiKey:He.env.OPENAI_API_KEY,model:this.model,maxTokens:this.maxTokens}).chatCompletion(t))}async chatCompletionSelfHost(t){return await su.tracer.trace("chatCompletionSelfHost",async r=>{if(!He.env.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(r.addTags({budicloudUrl:He.env.BUDICLOUD_URL}),!this._apiKey){let o=await Xo();if(!o)throw new Error("No license key found");this._apiKey=o,r.addTags({licenseKey:this._apiKey})}let a={messages:t.messages,format:t.format,useTools:t.tools.length>0},n=await fetch(`${He.env.BUDICLOUD_URL}/api/ai/chat`,{method:"POST",headers:{"Content-Type":"application/json",[He.constants.Header.LICENSE_KEY]:this._apiKey},body:JSON.stringify(a)});if(!n.ok)throw await He.HTTPError.fromResponse(n);return await n.json()})}};var xa=require("dd-trace");var iu=C(require("@anthropic-ai/sdk"));function cG(e){if(!e)return 0;let t=e.input_tokens;return e.output_tokens*3+t}var Yn=class extends It{constructor(r){super(r);this.client=new iu.default({apiKey:r.apiKey})}firstTextBlock(r){for(let a of r.content)if(a.type==="text")return a.text}async chatCompletion(r){try{let a=await this.client.messages.create({model:this.model,messages:r.messages.map(({content:o})=>({role:"user",content:o||""})),max_tokens:this.maxTokens}),n=this.firstTextBlock(a)||"";return{messages:[...r.messages,{role:"assistant",content:n}],tokensUsed:cG(a.usage)}}catch(a){throw a instanceof iu.default.APIError&&console.error(`Anthropic Prompt failed with error ${a.name} and status: ${a.status}`),a}}};var Jb=require("zod"),Xb=require("openai/helpers/zod"),Zb="gpt-4o-mini",lG={OpenAI:ot,TogetherAI:ot,AzureOpenAI:ot,Custom:ot,Anthropic:Yn,BudibaseAI:Vn};async function dG(){return await xa.tracer.trace("getAIConfig",async e=>{let t={type:zb.ConfigType.AI,config:{}};if(!ze.context.isSelfHostUsingCloud()){let a=await ze.configs.getAIConfig();a&&(t=a)}await os(t);let r=Object.values(t.config).find(a=>a.active&&a.isDefault);if(!r){e.addTags({enabled:!1,reason:"no provider found"});return}return e.addTags({enabled:!0}),{provider:r.provider,model:r.defaultModel||Zb,apiKey:r.apiKey}})}async function fG(){return xa.tracer.trace("getSelfHostOpenAIKeyConfig",e=>{if(!ze.env.SELF_HOSTED){e.addTags({enabled:!1,reason:"not self host"});return}if(!ze.env.OPENAI_API_KEY){e.addTags({enabled:!1,reason:"no OPENAI_API_KEY"});return}return e.addTags({enabled:!0}),{provider:"OpenAI",model:Zb,apiKey:ze.env.OPENAI_API_KEY}})}async function uu(){return xa.tracer.trace("getLLMConfig",async()=>await dG()||await fG())}async function _a(e){return await xa.tracer.trace("getLLM",async t=>{let{model:r,maxTokens:a}=e||{},n=await uu();if(!n){t.addTags({enabled:!1,reason:"no config found"});return}r&&(n.model=r),a&&(n.maxTokens=a);let o=lG[n.provider];if(!o){t.addTags({enabled:!1,reason:"no provider found",provider:n.provider});return}return new o(n)})}async function eI(){let e=await _a();if(!e)throw new ze.HTTPError("No available LLM configurations",500);return e}var V=class e{constructor(){this.messages=[];this.tools=[]}addTool(t){return this.tools.push(t),this}addTools(t){return this.tools.push(...t),this}findTool(t){return this.tools.find(r=>r.name===t)}withFormat(t){return t instanceof Jb.z.ZodType?this.format=(0,Xb.zodResponseFormat)(t,"key"):this.format=t,this}addMessage(t){return this.messages.push(t),this}addMessages(t){return this.messages.push(...t),this}addUserMessage(t){return this.messages.push({role:"user",content:t}),this}addSystemMessage(t){return this.messages.push({role:"system",content:t}),this}static fromRequest(t){let r=new e;return t.messages&&r.addMessages(t.messages),t.format&&r.withFormat(t.format),r}};function Kn(e){return new V().addUserMessage(`Summarize this text:
39
- ${e}.
40
- Only return the summary.`)}function Xi(e,t){return new V().addUserMessage(`Return the category of this text: "${e}". Based on these categories: ${t.join(", ")}. Only return the category.`)}function Zi(e){return new V().addUserMessage(`Clean the following string: "${e}". Remove any spelling mistakes or data issues. Only return the cleaned string itself and nothing else.`)}function mG(e,t){return new V().addUserMessage(`Given the table schema:
37
+ `;function Wr(e){return fo.default.verify(e,iS,{algorithms:["RS256"]})}function uS(e,t){return fo.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}var $a={};w($a,{getFeatures:()=>mo});var c=require("@budibase/types");var pS={[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]},cS={[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 mo(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(pS);break;case c.Hosting.CLOUD:r=a(cS);break}return r}var Ka={};w(Ka,{UNLIMITED:()=>d,getQuotas:()=>go});var G=require("@budibase/types");var l=Je,lp=me,d=-1,Kr=e=>e*1e6,lS={[G.PlanType.FREE]:{...lp.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)}}},dS={[G.PlanType.FREE]:{...lp.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 go(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(dS);break;case G.Hosting.CLOUD:r=a(lS);break}return JSON.parse(JSON.stringify(r))}var Kt={};w(Kt,{appExists:()=>fS,encoding:()=>$t});var dp=require("@budibase/backend-core");async function fS(e){return(await dp.db.getAllApps({all:!0,idsOnly:!0})).includes(e)}var $t={};w($t,{base64ToObject:()=>gS,objectToBase64:()=>mS});function mS(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}function gS(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}var Hd=require("@budibase/types"),or=require("@budibase/backend-core"),zd=C(_l()),Jd=C(jo());async function Wx(e){await Se.save({offlineLicenseToken:e}),await xt()}async function $x(){await Se.save({offlineLicenseToken:void 0}),await xt()}async function Xd(){return(await Se.get()).offlineLicenseToken}async function Wo(){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 Kx(){let e=await Wo();return $t.objectToBase64(e)}function Vx(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 ef(e){let t=await Wo();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}function tf(e){let t=e.plan.type,r=Hd.Hosting.SELF,a=mo(r,t),n=go(r,t);return e.features=(0,zd.default)(e.features,a),e.quotas=(0,Jd.default)(e.quotas,n),e}async function $o(){try{let e=await Xd();if(e){let t=await Wr(e);return Zd(t),await ef(t),tf(t)}}catch(e){console.error("Error retrieving offline license",e)}}var la={};w(la,{deleteDevLicense:()=>Xx,getOfflineLicense:()=>zx,writeDevLicenseToDisk:()=>Jx});var rf=require("@budibase/backend-core"),Vo=require("path"),af=require("os"),_t=C(require("fs"));var Yx=rf.env.isTest()?".budibase-test":".budibase",Ko=(0,Vo.join)((0,af.tmpdir)(),Yx),Hx="dev_license.txt",ca=(0,Vo.join)(Ko,Hx);if(!_t.default.existsSync(Ko))try{_t.default.mkdirSync(Ko)}catch{}function zx(){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 Jx(e){console.log(`Writing license to: ${ca}`),_t.default.writeFileSync(ca,e,{encoding:"utf-8"})}function Xx(){_t.default.rmSync(ca,{force:!0})}var Ho=async()=>{if(Yo.env.OFFLINE_MODE)return $o();let e=await Wt();return e||(e=la.getOfflineLicense()),e},zo=e=>co(e),Jo=()=>Yo.env.SELF_HOSTED?me.SELF_FREE_LICENSE:me.CLOUD_FREE_LICENSE;var es={};w(es,{activateLicenseKey:()=>Zx,deleteLicenseKey:()=>e_,getLicenseKey:()=>Zo});var Xo=C(require("dd-trace"));async function Zx(e){await lo(e),await Se.save({licenseKey:e}),await xt()}async function Zo(){return await Xo.default.trace("getLicenseKey",async e=>{let t=await Se.get();return e.addTags({licenseKey:t.licenseKey}),t.licenseKey})}async function e_(){return await Xo.default.trace("deleteLicenseKey",async()=>{await Se.save({licenseKey:void 0}),await xt()})}var Ot=require("@budibase/backend-core"),pn=C(require("dd-trace")),nf=3600,xt=async()=>{await uf(),await sf()},of=async(e,t)=>{let{populateLicense:r=Ho,populateFreeLicense:a=Jo}=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 Jn(),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:nf}),await i.store(s,p,nf),p)})};Ot.env.isJest()&&(of=jest.fn());var sf=of,uf=async()=>{let e=Ot.tenancy.getTenantId();await(await Jn()).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 ts(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 rs(){return se(oe.Feature.APP_BACKUPS)}async function as(){return se(oe.Feature.BRANDING)}async function pf(){return se(oe.Feature.ENFORCEABLE_SSO)}async function r_(){return se(oe.Feature.SYNC_AUTOMATIONS)}async function a_(){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 ns(){return se(oe.Feature.USER_GROUPS)}function n_(){return se(oe.Feature.PWA)}async function Ze(){return se(oe.Feature.EXPANDED_PUBLIC_API)}async function o_(e){if(Xe.env.ENABLE_SSO_MAINTENANCE_MODE||!await pf())return!1;let r;return e?.config?r=e.config:r=await Xe.configs.getSettingsConfig(),!!r.isSSOEnforced}var os=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 s_(){return se(oe.Feature.VIEW_PERMISSIONS)}async function i_(){return se(oe.Feature.VIEW_READONLY_COLUMNS)}var u_={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 p_(e){return await as()?{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}:u_}var is={};w(is,{enrichAIConfig:()=>ss});var cf=require("@budibase/backend-core"),c_="budibase_ai";async function ss(e){if(cf.env.SELF_HOSTED)return e;for(let t of Object.values(e.config))if(t.provider==="BudibaseAI")return e;return e.config[c_]={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:()=>g_,addAutomation:()=>S_,addGroup:()=>ps,addPlugin:()=>ls,addRow:()=>h_,addRows:()=>b_,addUsers:()=>mn,bustCache:()=>ro,decrement:()=>et,decrementMany:()=>da,getCurrentUsageValues:()=>Mu,getLicensedQuota:()=>df,getQuotaUsage:()=>wt,increment:()=>qe,incrementBudibaseAICredits:()=>yn,incrementMany:()=>Lt,removeApp:()=>y_,removeGroup:()=>cs,removePlugin:()=>ds,removeRow:()=>A_,removeRows:()=>I_,removeUsers:()=>cr,set:()=>us,setAllUsage:()=>no,setAppUsageValue:()=>ao,setUsage:()=>Du,setUsagePerApp:()=>Nu,updatePluginCount:()=>fs,updateUsage:()=>ir,usageLimitIsExceeded:()=>m_,utils:()=>Rr});var Y=require("@budibase/types");var Ce=require("@budibase/backend-core");var sr=require("dd-trace"),qe=(e,t,r)=>lf({change:1,name:e,type:t,opts:r}),Lt=e=>sr.tracer.trace("quotas.incrementMany",async()=>lf(e)),lf=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})))},us=async(e,t,r)=>Me.setUsage(r,e,t),l_=(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]||{}:{}}},d_=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)}},f_=async(e,t,r,a)=>{let n=await wt(),o=e===Y.QuotaUsageType.MONTHLY?n.quotaReset:void 0,s=await l_(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 d_(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 df(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 f_(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)})},df=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")},m_=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"),ff=require("@budibase/backend-core"),mf=async()=>{let e=await ff.db.getAllApps({dev:!0});return e?e.length:0},g_=async(e,{appId:t}={})=>qe(ur.StaticQuotaName.APPS,ur.QuotaUsageType.STATIC,{fn:e,valueFn:mf,id:t}),y_=async({appId:e}={})=>et(ur.StaticQuotaName.APPS,ur.QuotaUsageType.STATIC,{valueFn:mf,id:e});var Qe=require("@budibase/types"),h_=async(e,{tableId:t}={})=>qe(Qe.StaticQuotaName.ROWS,Qe.QuotaUsageType.STATIC,{fn:e,id:t}),A_=async({tableId:e}={})=>et(Qe.StaticQuotaName.ROWS,Qe.QuotaUsageType.STATIC,{id:e}),b_=async(e,t,{tableId:r}={})=>Lt({change:e,name:Qe.StaticQuotaName.ROWS,type:Qe.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),I_=async(e,{tableId:t}={})=>da({change:e,name:Qe.StaticQuotaName.ROWS,type:Qe.QuotaUsageType.STATIC,opts:{id:t}});var fn=require("@budibase/types"),S_=async(e,{automationId:t}={})=>qe(fn.MonthlyQuotaName.AUTOMATIONS,fn.QuotaUsageType.MONTHLY,{fn:e,id:t});var pr=require("@budibase/types"),ps=async e=>qe(pr.StaticQuotaName.USER_GROUPS,pr.QuotaUsageType.STATIC,{fn:e}),cs=async()=>et(pr.StaticQuotaName.USER_GROUPS,pr.QuotaUsageType.STATIC);var mt=require("@budibase/types"),ls=async e=>qe(mt.StaticQuotaName.PLUGINS,mt.QuotaUsageType.STATIC,{fn:e}),ds=async()=>et(mt.StaticQuotaName.PLUGINS,mt.QuotaUsageType.STATIC),fs=async e=>us(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:()=>R_,db:()=>$e,removeAppBuilder:()=>x_});var ga=require("@budibase/backend-core");var Q={};w(Q,{addAppBuilder:()=>As,addUsers:()=>gs,adjustGroupCreatorsQuotas:()=>E_,cleanupApp:()=>v_,enrichUserRolesFromGroups:()=>T_,fetch:()=>ma,get:()=>qt,getBulk:()=>Sf,getGroupBuilderAppIds:()=>If,getGroupRoleId:()=>w_,remove:()=>ms,removeAppBuilder:()=>bs,removeUsers:()=>ys,save:()=>lr,updateGroupApps:()=>hs});var _=require("@budibase/backend-core");var gf=require("@budibase/backend-core"),hn=class extends gf.HTTPError{constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function Af(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 bf(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await M.getBulk(e,{enriched:!1}),t}async function If(e,t){if(!e.userGroups)return[];let r=await bf(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 w_(e,t,r){if(!e.userGroups)return null;let a=await bf(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 Af(a,t))}async function T_(e){if(!e||!e.userGroups)return e;let t=await Sf(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 Af(t,n);o&&(e.roles[n]=o)});let a=await If(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 Sf(e,t={enriched:!0}){return await M.getBulk(e,t)}async function yf(e){if(await M.getByName(e))throw new hn(e)}async function hf(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 yf(e.name),t.push(_.events.group.created(e));else{let o=await M.get(e._id);if(o.name!==e.name&&await yf(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 hf(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 ps(n);{let o=await n();if(a>0)await mn(0,a);else if(a<0){let s=await hf(e),i=Math.abs(a)-s;i>0&&await cr(0,i)}return o}}async function ms(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 cs(),await n(),o}async function gs(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 ys(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 hs(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 v_(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 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:[]},a.builder.apps.includes(t)||(a.builder.apps.push(r),await lr(a))}async function bs(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 E_(){if(!await ns()){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 R_(e,t){if(!await Pt())throw new Error("Feature not enabled, please check license");await ga.users.addAppBuilder(e,t)}async function x_(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:()=>Rs});var Rs={};w(Rs,{logSearch:()=>N_,oldestLogDate:()=>_f,storeLog:()=>B_});var xf=require("@budibase/types"),bn=require("@budibase/backend-core");var An=require("@budibase/types");var Z=require("@budibase/backend-core");var wf=require("@budibase/backend-core");async function Tf(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||wf.logging.logWarn(`Failed to backoff: ${t}`,r),o}var{SEPARATOR:rt,UNICODE_MAX:__,DocumentType:vf,AutomationViewMode:Is,ViewName:O_,getQueryIndex:P_}=Z.db,L_=new Date(0).toISOString(),C_=100,Ss=async()=>ka(An.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS);function Ef(e,t,{status:r,automationId:a}={},n={}){let o=a?`${a}${rt}`:"",s=r?`${r}${rt}`:"",i;return r&&a?i=`${Is.ALL}${rt}${s}${o}`:r?i=`${Is.STATUS}${rt}${s}`:a?i=`${Is.AUTOMATION}${rt}${o}`:i=`${vf.AUTOMATION_LOG}${rt}`,{...n,descending:!0,startkey:`${i}${t}${__}`,endkey:`${i}${e}`}}function q_(e,t,r){return`${vf.AUTOMATION_LOG}${rt}${e}${rt}${r}${rt}${t}`}async function ws(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=Ef(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 Ts(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=Ef(e,t,o,{include_docs:!0,limit:9+1});r?.page&&(s.startkey=r.page),n=await a.query(P_(O_.AUTOMATION_LOGS),s)}catch(o){if(o!=null&&(o.name==="not_found"||o.error==="not_found"))return await Hu(),Ts(e,t,r);throw o}return _r(n,{paginate:!0,pageSize:9})}async function Rf(e,t){let r=Z.context.getProdAppDB(),a=e._id,n=e.name,o=new Date().toISOString(),s=q_(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 vs(e,{clearing:t}={clearing:!1}){let r=Z.context.getProdAppDB();await Tf(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 U_(){let e=await Ss();try{return await ws(L_,e,{docs:!1,paginate:!1,limit:C_})}catch{return{data:[],hasNextPage:!1}}}async function Es(){let e=Z.context.getProdAppDB();try{let t=await U_();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 vs(a,{clearing:!0})}catch(t){Z.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}var _f=Ss;async function D_(e,t,r,a){let n,o=new Date().toISOString(),s=await _f();return(!e||e<s)&&(e=s),r||t?n=await Ts(e,o,{automationId:r,status:t,page:a}):n=await ws(e,o,{status:t,page:a,docs:!0,paginate:!0}),n}async function N_(e){return await Es(),await D_(e.startDate,e.status,e.automationId,e.page)}async function B_(e,t){if(!bn.db.isProdAppID(bn.context.getAppId()))return;let r=await Rf(e,t);t.status===xf.AutomationStatus.ERROR&&await vs([r]),await Es()}var Sn={};w(Sn,{checkPluginQuotas:()=>k_,deletePlugin:()=>G_,storePlugin:()=>M_});var Cf=require("@budibase/types"),H=require("@budibase/backend-core");var Of=C(require("fs")),Pf=require("path");function Lf(e,t){return Of.default.readFileSync((0,Pf.join)(e,t),"utf8")}async function M_(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===Cf.PluginType.DATASOURCE){let js=Lf(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 ls(write)}async function G_(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 ds()}catch(r){let a=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${a}`)}}async function k_(){let e=H.tenancy.getGlobalDB();try{let r=(await e.allDocs(H.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await fs(r)}catch(t){H.logging.logAlert("Unable to retrieve plugins for quota check",t)}}var Ke={};w(Ke,{fetch:()=>Q_,fetchValues:()=>j_,isEncryptionKeyAvailable:()=>F_,isValid:()=>Df,remove:()=>$_,update:()=>W_});var ya=require("@budibase/types"),qf=require("@budibase/backend-core");function F_(){return!!qf.env.ENCRYPTION_KEY}async function Q_(){let e=await Et.get();return Object.keys(e.variables)}async function j_(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 Uf(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 W_(e,t){if(Df(e))await Uf(a=>(a[e]=t,a));else throw new Error("Variable name has characters that are not allowed")}async function $_(e){await Uf(t=>(delete t[e],t))}function Df(e){return/^[a-zA-Z0-9-_]+$/.test(e)}var gt={};w(gt,{definitions:()=>rO,download:()=>tO,fetch:()=>eO,write:()=>X_});var Tn=require("@budibase/types");var $=require("@budibase/backend-core"),Ue=require("@budibase/types");var Nf=require("memorystream"),Bf=new $.sql.Sql(Ue.SqlClient.SQL_LITE);async function K_(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=Bf._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 V_(e){return`${$.DocumentType.AUDIT_LOG}${$.SEPARATOR}${e}${$.SEPARATOR}${$.utils.newid()}`}async function Mf(e){e._id||(e._id=V_(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 xs(e,t,r){t||(t=1);let a=$.context.getAuditLogsDB();try{let n=9+1,o=await K_(e,t,n),s=jt.searchTable(),i=Bf.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 Y_(),await Gu(),await xs(e,t,{isRetry:!0});throw n}}async function Y_(){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 Gf(e){let t=$.context.getAuditLogsDB(),r=new Nf,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 Nf;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"),z_=Aa.constants.MIN_VALID_DATE.toISOString(),J_=Aa.constants.MAX_VALID_DATE.toISOString();function _s(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||z_,e.endDate=e.endDate||J_),e}async function kf(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=_s(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}function Os(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 Ps(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 Ff(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=Ps(r)),a}async function X_(e,t,r){if(!await ln()||!ce.utils.isAudited(e))return;let a=Ff(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 Mf(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||Os(i.userId,"user",i.fallback)};i.appId&&(m.app=f||Os(i.appId,"app",i.fallback)),s.push(m)}return s}async function eO(e){if(!await ln())throw new Error("Audit logs not available - license required.");let t=await kf(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await xs(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await Z_(r.rows)}}function tO(e){return e=_s(e),Gf(e)}function rO(){let e=Object.entries(Tn.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=Ps(r[1]);return t}var vn={};w(vn,{applications:()=>Us,roles:()=>Cs,users:()=>Ls});var Ls={};w(Ls,{roleCheck:()=>nO});function aO(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 nO(e,t){return await Ze()||aO(e,t),e}var Cs={};w(Cs,{assign:()=>oO,unAssign:()=>sO});var ba=require("@budibase/backend-core");async function oO(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 sO(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 Us={};w(Us,{buildExportFn:()=>uO,buildImportFn:()=>iO});var qs=require("@budibase/backend-core");function iO(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 qs.context.doInAppContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}function uO(e){return async(t,r)=>{await Ze()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:a,excludeRows:n}=t.request.body;await qs.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 Ds=require("@budibase/backend-core"),Qf;function jf(){Qf=new Ds.queue.BudibaseQueue(Ds.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}function Ut(){return Qf}var Wf=require("path"),$f=C(require("fs"));async function Ns(e,t={}){return we.storeAppBackupMetadata(e,t)}function Kf(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 pO(e,t,r,a){let n=await En(e);return await we.storeAppBackupMetadata({...n,...Kf(t),contents:r,status:t,type:ie.AppBackupType.BACKUP},{filename:a,docId:e})}async function cO(e,t,r){let a=await En(e);return await we.storeAppBackupMetadata({...a,...Kf(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 lO(e,t){return we.updateAppBackupMetadata(e,t)}async function dO(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 fO(e,t){return we.fetchAppBackups(e,t)}async function Vf(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 mO(e){let{stream:t}=await Vf(e),r=(0,Wf.join)(Ve.objectStore.budibaseTempDir(),Ve.utils.newid()),a=$f.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 gO(e,t,r={}){let a;try{a=await Ns({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 yO(e,t,r,a){let n=await En(t),o;try{o=await Ns({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 hO={isEnabled:rs,triggerAppRestore:ye(yO),triggerAppBackup:ye(gO),getBackupDownloadStream:ye(Vf),downloadAppBackup:ye(mO),fetchAppBackups:ye(fO),storeAppBackupMetadata:ye(Ns),updateBackupStatus:ye(pO),updateRestoreStatus:ye(cO),getAppBackup:ye(En),updateAppBackup:ye(lO),deleteAppBackup:ye(dO)},at=hO;var Ms={};w(Ms,{init:()=>Bs});var z=require("@budibase/backend-core");var De=require("@budibase/types");var dr=C(require("fs"));async function Bs(e){Ut().process(async t=>{let r=t.data;try{if(r.export)return IO(t,e);if(r.import)return bO(t,e)}catch(a){z.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,a)}})}async function AO(e){await z.db.getDB(e,{skip_setup:!0}).destroy()}async function Yf(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 bO(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 Yf(De.AppBackupTrigger.RESTORING,i,a,{processing:t,createdBy:s,name:o});let m=await at.downloadAppBackup(n);await AO(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 IO(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 Yf(n,s,a,{processing:t,doc:{id:r.docId,rev:i},name:o})}catch(i){z.logging.logAlert("App backup error",i)}})}var SO=async e=>{jf(),await Bs(e.processing)},ve={...at,processing:Ms,init:SO,getBackupQueue:Ut};var Hf=async e=>{e.backups&&await ve.init(e.backups)};var de={};w(de,{create:()=>mM,find:()=>fM,get:()=>dM,remove:()=>yM,update:()=>gM});var hA=C(qi()),nt=require("@budibase/backend-core");var AA=require("@budibase/types");async function dM(e){let t=nt.tenancy.getGlobalDB(),r=new nt.db.QueryBuilder(t.name,AA.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 fM(e){return await nt.users.getById(e)}async function mM(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,hA.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 gM(e,t){return await $e.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}async function yM(e){return await $e.destroy(e)}var Ar={};w(Ar,{create:()=>hM});var bA=C(qi());var IA=require("@budibase/backend-core");async function hM(e){let t=await so(e.name),r;if(!t)r=(await Q.save(e)).id;else{if(t.scimInfo?.isSync)throw new IA.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,bA.default)(t.scimInfo,e.scimInfo),await Q.save(t)}return await Q.get(r)}var Nt={};w(Nt,{logRequest:()=>AM,logResponse:()=>bM});var Ui=require("@budibase/backend-core");async function AM(e){Ui.logging.logWarn("SCIM request log",e)}async function bM(e){Ui.logging.logWarn("SCIM response error",e)}var ki={};w(ki,{doInScimContext:()=>Ni,feature:()=>j,internalGroupOnly:()=>kn,licenseAuth:()=>TA,licensing:()=>SA,requireSCIM:()=>Bi,scimGroupOnly:()=>Ta,scimUserOnly:()=>wa});var yt=require("@budibase/backend-core");var Mn=require("@budibase/types"),IM=(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=uo,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()},SA=IM;var j={};w(j,{requireFeature:()=>SM,requireFeatures:()=>wM});var SM=e=>async(t,r)=>{await cn(e),await r()},wM=(...e)=>async(t,r)=>{await ts(e),await r()};var Gn=require("@budibase/backend-core");var Ni=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 Bi=async(e,t)=>{await os(),await t()};var wA=require("@budibase/backend-core");var wa=e=>Mi(wA.users.getById,e,!0),Ta=e=>Mi(M.get,e,!0),kn=e=>Mi(M.get,e,!1);function Mi(e,t,r){return async(a,n)=>{let o=a.params[t];return typeof o!="string"&&a.throw(404),!!(await e(o)).scimInfo?.isSync!==r&&a.throw(404),n()}}var va=require("@budibase/backend-core");var Gi=require("dd-trace");async function TA(e,t){await Gi.tracer.trace("licenseAuth",async r=>{let a=e.request.headers[va.constants.Header.LICENSE_KEY];Array.isArray(a)&&(a=a[0]),r.addTags({licenseKey:a}),a||e.throw(403,"License key not provided");let n=await zo(a);n||(r.addTags({licenseFound:!1}),e.throw(403,"License not found or invalid")),n.tenantId||e.throw(403,"License does not have a tenant ID"),Gi.tracer.setUser({id:"anonymous",tenantId:n.tenantId}),await va.context.doInSelfHostTenantUsingCloud(n.tenantId,async()=>{await va.context.doInLicenseContext(n,async()=>{await t()})})})}var Hi={};w(Hi,{appBackups:()=>ub,auditLogs:()=>XA,environmentVariables:()=>WA,groups:()=>DA,scim:()=>Gb,users:()=>Wb});async function vA(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 EA(e){let t=e.params.groupId,r=e.request.body.add,a=e.request.body.remove;(r&&!Array.isArray(r)||a&&!Array.isArray(a))&&e.throw(400,"Must supply a list of users to add or to remove");let n,o;r&&(n=await gs(t,r)),a&&(o=await ys(t,a)),e.body={added:n,removed:o}}async function RA(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 hs(t,{appsToAdd:r,appsToRemove:a})}async function xA(e){e.body={data:await ma()}}async function _A(e){let{groupId:t,rev:r}=e.params;try{await ms(t,r),e.body={message:"Group deleted successfully"}}catch(a){e.throw(a.status,a)}}async function OA(e){try{e.body=await qt(e.params.groupId)}catch(t){e.throw(t.status,t)}}async function PA(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 LA(e){let{groupId:t,appId:r}=e.params;await As(t,r),e.body={message:"Group app builder access updated."}}async function CA(e){let{groupId:t,appId:r}=e.params;await bs(t,r),e.body={message:"group app builder access removed."}}var qA=C(require("@koa/router")),he=C(require("joi"));var Ee=require("@budibase/types"),Ye=require("@budibase/backend-core"),UA=new qA.default;function vM(){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())}UA.post("/api/global/groups",Ye.auth.adminOnly,j.requireFeature(Ee.Feature.USER_GROUPS),vM(),vA).get("/api/global/groups",j.requireFeature(Ee.Feature.USER_GROUPS),xA).delete("/api/global/groups/:groupId/:rev",j.requireFeature(Ee.Feature.USER_GROUPS),Ye.auth.adminOnly,kn("groupId"),_A).get("/api/global/groups/:groupId",j.requireFeature(Ee.Feature.USER_GROUPS),Ye.auth.builderOrAdmin,OA).get("/api/global/groups/:groupId/users",j.requireFeature(Ee.Feature.USER_GROUPS),Ye.auth.builderOrAdmin,PA).post("/api/global/groups/:groupId/users",Ye.auth.adminOnly,j.requireFeature(Ee.Feature.USER_GROUPS),kn("groupId"),EA).post("/api/global/groups/:groupId/apps",Ye.auth.builderOrAdmin,j.requireFeature(Ee.Feature.USER_GROUPS),RA).post("/api/global/groups/:groupId/app/:appId/builder",Ye.auth.builderOrAdmin,j.requireFeatures(Ee.Feature.USER_GROUPS,Ee.Feature.APP_BUILDERS),LA).delete("/api/global/groups/:groupId/app/:appId/builder",Ye.auth.builderOrAdmin,j.requireFeatures(Ee.Feature.USER_GROUPS,Ee.Feature.APP_BUILDERS),CA);var DA=UA;var Fi=require("@budibase/types");var Qi=require("@budibase/backend-core");async function NA(e){e.body={encryptionKeyAvailable:Ke.isEncryptionKeyAvailable()}}async function BA(e){e.body={variables:await Ke.fetch()}}async function MA(e){let{name:t,production:r,development:a}=e.request.body;await Ke.update(t,{production:r,development:a});let n=[Fi.AppEnvironment.PRODUCTION];r!==a&&n.push(Fi.AppEnvironment.DEVELOPMENT),await Qi.events.environmentVariable.created(t,n),e.body={message:`Environment variable "${t}" created.`}}async function GA(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 kA(e){let t=e.params.varName;await Ke.remove(t),await Qi.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}var Bt=require("@budibase/backend-core"),QA=C(require("@koa/router")),Ea=C(require("joi")),jA=new QA.default;function FA(){return Bt.auth.joiValidator.body(Ea.default.object({name:Ea.default.string().optional(),production:Ea.default.string().required(),development:Ea.default.string().required()}))}jA.get("/api/env/variables/status",Bt.auth.builderOrAdmin,NA).get("/api/env/variables",Bt.auth.builderOrAdmin,BA).post("/api/env/variables",Bt.auth.builderOrAdmin,FA(),MA).patch("/api/env/variables/:varName",Bt.auth.builderOrAdmin,FA(),GA).delete("/api/env/variables/:varName",Bt.auth.builderOrAdmin,kA);var WA=jA;var ji=require("@budibase/backend-core");async function $A(e){let t=e.request.body,r=await gt.fetch(t);await ji.events.auditLog.filtered(t),e.body=r}async function KA(e){let t=e.request.body,{stream:r}=gt.download(t);await ji.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}async function VA(e){e.body={events:gt.definitions()}}var HA=require("@budibase/types"),Mt=require("@budibase/backend-core"),zA=C(require("@koa/router")),Re=C(require("joi"));function YA(){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(HA.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 JA=new zA.default;JA.post("/api/global/auditlogs/search",Mt.auth.adminOnly,YA(),$A).get("/api/global/auditlogs/download",Mt.auth.adminOnly,Mt.middleware.querystringToBody,YA(),KA).get("/api/global/auditlogs/definitions",Mt.auth.adminOnly,VA);var XA=JA;var Wi=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 eb(e){let t=e.params.appId;await br(e,t);let r=e.request.body,a=e.user?._id,n=await ve.triggerAppBackup(t,Wi.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 tb(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 rb(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 ab(e){let t=e.params.appId;await br(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(Wi.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 nb(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 ob(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 sb=C(require("@koa/router")),Gt=C(require("joi")),Fn=require("@budibase/types"),ht=require("@budibase/backend-core"),ib=new sb.default;function _M(){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()}))}ib.post("/api/apps/:appId/backups",ht.auth.builderOrAdmin,eb).post("/api/apps/:appId/backups/search",ht.auth.builderOrAdmin,_M(),ab).get("/api/apps/:appId/backups/:backupId/file",ht.auth.builderOrAdmin,ob).patch("/api/apps/:appId/backups/:backupId",ht.auth.builderOrAdmin,nb).delete("/api/apps/:appId/backups/:backupId",ht.auth.builderOrAdmin,rb).post("/api/apps/:appId/backups/:backupId/import",ht.auth.builderOrAdmin,tb);var ub=ib;var Mb=C(require("@koa/router"));var Qn=require("scim-patch");var cb=require("@budibase/backend-core");function pb(e,t){let r=e.request.query[t];if(r!==void 0)return+r}var lb=async e=>{let t=pb(e,"pageSize")??20,r=pb(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}},fb=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)},mb=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 cb.EmailUnavailableError&&e.throw(409,"Email already in use"),r}};function OM(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 gb=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(OM(a))return $i(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)},$i=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await de.remove(t),e.status=204};var Pb=C(Ob()),Lb=require("@budibase/shared-core"),jn=require("scim-patch");var Wn=require("scim2-parse-filter");function Cb(e,t){for(let r of t.split(","))delete e[r]}var qb=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=>{Cb(o,n)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},Ub=async e=>{let t=K.group.fromScimGroup(e.request.body),r=await Ar.create(t);e.body=K.group.toScimGroupResponse(r)},Db=async e=>{let{id:t}=e.params,r=await Q.get(t),a=K.group.toScimGroupResponse(r),{excludedAttributes:n}=e.request.query;n&&Cb(a,n),e.body=a},Nb=async e=>{let{id:t}=e.params,r=await Q.get(t);await Q.remove(t,r._rev),e.status=204},Bb=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,Pb.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:Lb.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 Mb.default({prefix:"/api/global/scim/v2"});Ae.use(Bi);Ae.use(Ni);Ae.get("/users",lb);Ae.get("/users/:id",wa("id"),fb);Ae.post("/users",mb);Ae.patch("/users/:id",wa("id"),gb);Ae.delete("/users/:id",wa("id"),$i);Ae.get("/groups",qb);Ae.post("/groups",j.requireFeature(Ra.Feature.USER_GROUPS),Ub);Ae.get("/groups/:id",j.requireFeature(Ra.Feature.USER_GROUPS),Ta("id"),Db);Ae.delete("/groups/:id",j.requireFeature(Ra.Feature.USER_GROUPS),Ta("id"),Nb);Ae.patch("/groups/:id",j.requireFeature(Ra.Feature.USER_GROUPS),Ta("id"),Bb);var Gb=Ae;var Qb=C(require("@koa/router"));var Ki=require("@budibase/backend-core");async function kb(e){let{userId:t,appId:r}=e.params,a=await tt.db.getUser(t);if(Ki.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 Fb(e){let{userId:t,appId:r}=e.params,a=await tt.db.getUser(t);if(Ki.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 Vi=require("@budibase/types"),Yi=require("@budibase/backend-core"),jb=new Qb.default;jb.post("/api/global/users/:userId/app/:appId/builder",Yi.auth.builderOrAdmin,j.requireFeatures(Vi.Feature.APP_BUILDERS),kb).delete("/api/global/users/:userId/app/:appId/builder",Yi.auth.builderOrAdmin,j.requireFeatures(Vi.Feature.APP_BUILDERS),Fb);var Wb=jb;var K={};w(K,{group:()=>Ji,user:()=>zi});var zi={};w(zi,{fromScimUser:()=>nG,toScimUserResponse:()=>tG,userFilters:()=>oG});var $n=require("@budibase/types"),$b=require("scim2-parse-filter"),Kb=require("@budibase/backend-core"),Vb=require("@budibase/shared-core"),{unreachable:eG}=Vb.utils,tG=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},rG=e=>!!e?.id;function aG(e){if(Kb.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}var nG=e=>{let t=rG(e)?e:void 0,r=aG(e);if(!r)throw new Error("Email is required");let a;switch(e.active){case"True":case"true":case!0:a=!0;break;case"False":case"false":case!1:a=!1;break;default:eG(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()}},oG=e=>{let t={equal:{}},r=(0,$b.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 Ji={};w(Ji,{fromScimGroup:()=>uG,toScimGroupResponse:()=>sG});var sG=e=>({schemas:["urn:ietf:params:scim:schemas:core:2.0:Group"],id:e._id,externalId:e.scimInfo.externalId,meta:{resourceType:"Group",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},displayName:e.name,members:e.users?.map(t=>({value:t._id}))}),iG=e=>!!e?.id,uG=e=>{let t=iG(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 Iu={};w(Iu,{LLMRequest:()=>V,TableGeneration:()=>bu,agentHistoryTitleSystemPrompt:()=>AG,agentSystemPrompt:()=>hG,aiColumnSchemas:()=>hu,aiTableResponseToTableSchema:()=>fu,appendAIColumns:()=>mu,classifyText:()=>Zi,cleanData:()=>eu,generateAIColumns:()=>lu,generateCode:()=>yG,generateCronExpression:()=>tu,generateData:()=>du,generateJs:()=>ou,generateSQL:()=>gG,generateTables:()=>cu,generationStructure:()=>yu,getLLM:()=>_a,getLLMConfig:()=>pu,getLLMOrThrow:()=>tI,parseResponseFormat:()=>su,sanitiseToolName:()=>pG,searchWeb:()=>nu,sentimentAnalysis:()=>au,summarizeText:()=>Kn,tableDataStructuredOutput:()=>Au,translate:()=>ru});function pG(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 Hn=require("@budibase/types");var ze=require("@budibase/backend-core"),Jb=require("@budibase/types");var Hb=C(require("openai"));var At=require("@budibase/types");var Yb=require("@budibase/shared-core");var bt=C(require("dd-trace"));function Xi(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(tu(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(Xi(r,o));case At.AIOperationEnum.CLEAN_DATA:return eu(r[n]);case At.AIOperationEnum.TRANSLATE:return ru(r[n],s);case At.AIOperationEnum.CATEGORISE_TEXT:if(!i)throw Error("No categories provided for categorise text operation. Please provide categories.");return Zi(Xi(r,o),i.split(","));case At.AIOperationEnum.SENTIMENT_ANALYSIS:return au(r[n]);case At.AIOperationEnum.PROMPT:return p;case At.AIOperationEnum.SEARCH_WEB:return nu(Xi(r,o));default:throw Yb.utils.unreachable(a)}}async generateJs(t,r){return await bt.default.trace("generateJs",async()=>{let{bindings:a=[],snippets:n=[]}=r||{};return await this.prompt(ou(a,n).addUserMessage(t))})}};var zb=require("openai/helpers/zod");function su(e){if(e)return e==="text"?{type:"text"}:e==="json"?{type:"json_object"}:e}function cG(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 Hb.default({apiKey:r.apiKey})}async chatCompletion(r){let a={model:this.model,messages:r.messages,max_tokens:this.maxTokens,response_format:su(r.format)};r.tools&&r.tools.length>0&&(a.tool_choice="auto",a.tools=r.tools.map(zb.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:cG(n.usage)};throw new Error("No response found")}}};var He=require("@budibase/backend-core");var iu=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 iu.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 iu.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 Zo();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 uu=C(require("@anthropic-ai/sdk"));function lG(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 uu.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:lG(a.usage)}}catch(a){throw a instanceof uu.default.APIError&&console.error(`Anthropic Prompt failed with error ${a.name} and status: ${a.status}`),a}}};var Xb=require("zod"),Zb=require("openai/helpers/zod"),eI="gpt-4o-mini",dG={OpenAI:ot,TogetherAI:ot,AzureOpenAI:ot,Custom:ot,Anthropic:Yn,BudibaseAI:Vn};async function fG(){return await xa.tracer.trace("getAIConfig",async e=>{let t={type:Jb.ConfigType.AI,config:{}};if(!ze.context.isSelfHostUsingCloud()){let a=await ze.configs.getAIConfig();a&&(t=a)}await ss(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||eI,apiKey:r.apiKey}})}async function mG(){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:eI,apiKey:ze.env.OPENAI_API_KEY}})}async function pu(){return xa.tracer.trace("getLLMConfig",async()=>await fG()||await mG())}async function _a(e){return await xa.tracer.trace("getLLM",async t=>{let{model:r,maxTokens:a}=e||{},n=await pu();if(!n){t.addTags({enabled:!1,reason:"no config found"});return}r&&(n.model=r),a&&(n.maxTokens=a);let o=dG[n.provider];if(!o){t.addTags({enabled:!1,reason:"no provider found",provider:n.provider});return}return new o(n)})}async function tI(){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 Xb.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,t){let r=`Summarize this text:
39
+ ${e}`,a="";if(t)switch(t){case Hn.SummariseLength.SHORT:a="In 1-2 concise sentences, ";break;case Hn.SummariseLength.MEDIUM:a="In 2-3 paragraphs, ";break;case Hn.SummariseLength.LONG:a="In multiple detailed paragraphs, ";break}return new V().addUserMessage(`${a}${r}.
40
+ Only return the summary.`)}function Zi(e,t){return new V().addUserMessage(`Return the category of this text: "${e}". Based on these categories: ${t.join(", ")}. Only return the category. Do not add any extra punctuation or fix spelling mistakes. It should exactly match one of the categories. `)}function eu(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 gG(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 gG(e){return new V().addUserMessage(`Generate JavaScript code for the following request:
45
+ Only provide the SQL.`)}function yG(e){return new V().addUserMessage(`Generate JavaScript code for the following request:
46
46
  ${e}.
47
- Only provide the JS and nothing else.`)}function eu(e){return new V().addUserMessage(`Generate a node-cron compatible expression based on the following prompt. Return only the cron expression (without backticks), and if not possible return only 'Error generating cron' with a short explanation:
48
- ${e}`)}function tu(e,t){return new V().addUserMessage(`Translate the following text: "${e}" into ${t}. Only return the translation.`)}function ru(e){return new V().addUserMessage(`Return the sentiment of this text: "${e}". Only return the sentiment.`)}function au(e){return new V().addUserMessage(`Search the web for the following: "${e}". Only return the top results.`)}function nu(e,t){let r="You do not have access to any bindings in this request.";e&&e.length>0&&(r=`The bindings you have access to are:
47
+ Only provide the JS and nothing else.`)}function tu(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 ru(e,t){return new V().addUserMessage(`Translate the following text: "${e}" into ${t}. Only return the translation.`)}function au(e){return new V().addUserMessage(`Return the sentiment of this text: "${e}". Only return the sentiment.`)}function nu(e){return new V().addUserMessage(`Search the web for the following: "${e}". Only return the top results.`)}function ou(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:
@@ -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 pu(){let e=`
143
+ ${r}`)}function cu(){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 V().addSystemMessage(e)}function cu(){let e='Given the generated schema, add only one field of type "AI" to relevant tables to add value to the Budibase user.';return new V().addSystemMessage(e)}function lu(){let e=`
151
+ `;return new V().addSystemMessage(e)}function lu(){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 du(){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 V().addSystemMessage(e)}function yG(e){return`You are a helpful support agent, using workflows to solve problems for users.
154
+ `;return new V().addSystemMessage(e)}function hG(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 hG(){return`You will be provided with a set of history, a conversation between a user and an AI. Using this
171
+ \`\`\``}function AG(){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 Oa=require("@budibase/backend-core"),aI=require("@budibase/shared-core");var st=require("@budibase/types"),tI=require("@budibase/backend-core");function du(e){let t=[],r=[];for(let a of e.tables){let n=a.schema.reduce((o,s)=>{if(s.type===st.FieldType.LINK){if(!r.includes(s.relationshipId)){let i={[st.RelationshipType.MANY_TO_ONE]:st.RelationshipType.ONE_TO_MANY,[st.RelationshipType.ONE_TO_MANY]:st.RelationshipType.MANY_TO_ONE,[st.RelationshipType.MANY_TO_MANY]:st.RelationshipType.MANY_TO_MANY},{reverseFieldName:p,relationshipId:f,...m}=s;o[s.name]={...m,fieldName:p,relationshipType:i[s.relationshipType]},r.push(f)}}else o[s.name]=s;return o},{});t.push({_id:tI.docIds.generateTableID(),name:a.name,primaryDisplay:a.primaryDisplay,schema:n})}return t}function fu(e,t){let r=[];for(let a of e)r.push({...a,schema:{...a.schema,...t[a.name]?.reduce((n,o)=>(n[o.name]=o,n),{})}});return r}var T=require("@budibase/types"),A=require("zod"),ue=A.z.object({name:A.z.string().describe("A human readable name for the field. It MUST be alpha-numeric and capitalised.")}),mu=ue.extend({type:A.z.literal(T.FieldType.LINK),tableId:A.z.string().describe("This must match one of the generated table names"),reverseFieldName:A.z.string().describe("Only the *name* of the field that will appear in the foreign table. Budibase creates this automatically. Do not define the column yourself."),relationshipId:A.z.string().describe("The ID of the relationship. It must be used in pairs, paring many-to-ones and one-to-manys, or many-to-manys with each other.")}),AG=A.z.array(A.z.union([ue.extend({type:A.z.enum([T.FieldType.STRING,T.FieldType.NUMBER,T.FieldType.BOOLEAN,T.FieldType.LONGFORM]),constraints:A.z.object({presence:A.z.boolean()}).optional()}),mu.extend({relationshipType:A.z.enum([T.RelationshipType.MANY_TO_ONE])}).describe("Many-to-one relationship, where the current table is the 'many' side. Defines the initiating side of the relationship. Only this side should be defined. The reverse column will be created automatically."),mu.extend({relationshipType:A.z.enum([T.RelationshipType.ONE_TO_MANY])}).describe("One-to-many relationship, where the current table is the 'one' side. Defines the initiating side of the relationship. Only this side should be defined. The reverse column will be created automatically."),mu.extend({relationshipType:A.z.enum([T.RelationshipType.MANY_TO_MANY])}).describe("Many to many relationship. Defines the initiating side of the relationship. Only this side should be defined. The reverse column will be created automatically."),ue.extend({type:A.z.literal(T.FieldType.OPTIONS),constraints:A.z.object({inclusion:A.z.array(A.z.string()).describe("The options for the field"),presence:A.z.boolean()})}).describe("A single option from closed set of options"),ue.extend({type:A.z.literal(T.FieldType.ARRAY),constraints:A.z.object({inclusion:A.z.array(A.z.string()).describe("The options for the field"),presence:A.z.boolean(),type:A.z.literal(T.JsonFieldSubType.ARRAY)}).describe("Multiple selected options from closed set of options")}),ue.extend({type:A.z.literal(T.FieldType.FORMULA),formula:A.z.string().describe(`
173
+ less than five words.`}var Oa=require("@budibase/backend-core"),nI=require("@budibase/shared-core");var st=require("@budibase/types"),rI=require("@budibase/backend-core");function fu(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:rI.docIds.generateTableID(),name:a.name,primaryDisplay:a.primaryDisplay,schema:n})}return t}function mu(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.")}),gu=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.")}),bG=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()}),gu.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."),gu.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."),gu.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([T.FieldType.STRING,T.FieldType.NUMBER,T.FieldType.BOOLEAN,T.FieldType.DATETIME])}).describe("Define these types after the other types"),ue.extend({type:A.z.literal(T.FieldType.DATETIME),ignoreTimezones:A.z.boolean()}).describe("A datetime field, storing date and time"),ue.extend({type:A.z.literal(T.FieldType.DATETIME),ignoreTimezones:A.z.boolean(),timeOnly:A.z.literal(!0)}).describe("A time only field"),ue.extend({type:A.z.literal(T.FieldType.DATETIME),ignoreTimezones:A.z.boolean(),dateOnly:A.z.literal(!0)}).describe("A date only field"),ue.extend({type:A.z.literal(T.FieldType.ATTACHMENT_SINGLE),subtype:A.z.literal(T.AttachmentSubType.IMAGE)}).describe("Single image column"),ue.extend({type:A.z.literal(T.FieldType.ATTACHMENT_SINGLE)}).describe("Single attachment column. It stores a single document: pdf, word, etc. Use an appropriate name for the column, like 'Invoice', 'Document', etc."),ue.extend({type:A.z.literal(T.FieldType.ATTACHMENTS),subtype:A.z.literal(T.AttachmentSubType.IMAGE)}).describe("Multiple images column. Use an appropiate name for the columns, like 'Gallery', 'Photos', etc."),ue.extend({type:A.z.literal(T.FieldType.ATTACHMENTS)}).describe("Multiple attachments column. It might hold different kind of documents mixed up: pdf, txt, etc. Use an appropiate name for the columns, like 'Invoices', 'Documents', 'Attachments', etc.")])),gu=A.z.object({tables:A.z.array(A.z.object({name:A.z.string(),schema:AG,primaryDisplay:A.z.string().describe("The column will be used as display, so pick the clearer option. This must match EXACTLY one of the created fields names in the schema.")}))});function yu(e){let t=A.z.object({});for(let r of e){let a=Object.values(r.schema),n=[ue.extend({type:A.z.literal(T.FieldType.AI),operation:A.z.literal(T.AIOperationEnum.TRANSLATE),column:A.z.enum(a.filter(o=>[T.FieldType.STRING,T.FieldType.LONGFORM].includes(o.type)).map(o=>o.name)).describe("The columns to translate"),language:A.z.string()}).describe("This column will be autogenerated via AI to translate one column. Use it for reasonable cases, like translating descriptions or similar."),ue.extend({type:A.z.literal(T.FieldType.AI),operation:A.z.literal(T.AIOperationEnum.CATEGORISE_TEXT),columns:A.z.array(A.z.enum(a.filter(o=>[T.FieldType.STRING,T.FieldType.LONGFORM,T.FieldType.BOOLEAN,T.FieldType.NUMBER,T.FieldType.DATETIME].includes(o.type)).map(o=>o.name))).describe("The columns to be used as context"),categories:A.z.string().describe("CSV list of categories")}).describe("This column will be autogenerated via AI to categorise a row based on one or many columns.")];a.some(o=>o.type===T.FieldType.LONGFORM)&&n.push(ue.extend({type:A.z.literal(T.FieldType.AI),operation:A.z.literal(T.AIOperationEnum.SUMMARISE_TEXT),columns:A.z.array(A.z.enum(a.filter(o=>[T.FieldType.STRING,T.FieldType.LONGFORM].includes(o.type)).map(o=>o.name))).describe("Columns, from the current table, to be passed in the context. Use at least one.")}).describe("This column will be autogenerated via AI to summarise one or many columns.")),t=t.extend({[r.name]:A.z.array(A.z.union(n))})}return t}var k=require("zod"),rI=require("@budibase/shared-core"),U=require("@budibase/types");function hu(e){let t=k.z.object({});for(let r of e){let a={_id:k.z.string().describe("Unique ID for the row")},n=k.z.union([k.z.literal("https://picsum.photos/600/600").describe("For profile pictures and similar"),k.z.literal("https://picsum.photos/1920/1080").describe("For anything else")]),o=k.z.object({fileName:k.z.string(),extension:k.z.enum([".pdf",".txt"]),content:k.z.string().describe("Random content for the file")});for(let s of Object.values(r.schema)){let{type:i}=s;switch(i){case U.FieldType.STRING:case U.FieldType.LONGFORM:a[s.name]=k.z.string();break;case U.FieldType.NUMBER:case U.FieldType.BIGINT:a[s.name]=k.z.number();break;case U.FieldType.BOOLEAN:a[s.name]=k.z.boolean();break;case U.FieldType.DATETIME:a[s.name]=k.z.string().describe(`ISO datetime. Use realistic dates, based on today's date, ${new Date().toISOString()}`);break;case U.FieldType.ATTACHMENT_SINGLE:s.subtype===U.AttachmentSubType.IMAGE?a[s.name]=n:a[s.name]=o;break;case U.FieldType.ATTACHMENTS:s.subtype===U.AttachmentSubType.IMAGE?a[s.name]=k.z.array(n):a[s.name]=k.z.array(o),a[s.name]=a[s.name].describe("Between 2 and 5 items.");break;case U.FieldType.OPTIONS:a[s.name]=k.z.enum(s.constraints.inclusion);break;case U.FieldType.LINK:{let p=k.z.string().describe(`Match one of the _ids created for table "${s.tableId}"`);s.relationshipType===U.RelationshipType.ONE_TO_MANY?a[s.name]=k.z.array(p).describe("Array with a single item"):s.relationshipType===U.RelationshipType.MANY_TO_MANY&&(a[s.name]=k.z.array(p).describe("Array with a one or many items. You can repeat the same ids between rows"))}break;case U.FieldType.ARRAY:a[s.name]=k.z.array(k.z.enum(s.constraints.inclusion));break;case U.FieldType.AI:case U.FieldType.AUTO:case U.FieldType.SIGNATURE_SINGLE:case U.FieldType.BB_REFERENCE:case U.FieldType.JSON:case U.FieldType.FORMULA:case U.FieldType.INTERNAL:case U.FieldType.BARCODEQR:case U.FieldType.BB_REFERENCE_SINGLE:break;default:throw rI.utils.unreachable(i)}}t=t.extend({[r.name]:k.z.array(k.z.object(a))}).describe(`Each table should include at least a few items (min 3, max 18). The number of items should not be evenly distributed. Instead, follow natural relationships and usage patterns based on the tables nature. For example:
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.")])),yu=A.z.object({tables:A.z.array(A.z.object({name:A.z.string(),schema:bG,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 hu(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"),aI=require("@budibase/shared-core"),U=require("@budibase/types");function Au(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 aI.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 Pa=C(require("dd-trace")),Au=class e{constructor(t,r){this.llmFunctions={getTableStructure:async t=>Pa.default.trace("llm.getTableStructure",async()=>{let r=await this.llm.prompt(pu().addUserMessage(t).withFormat(gu));try{let a=JSON.parse(r.message);return du(a)}catch{throw new Oa.HTTPError("Error generating tables",500)}}),generateAIColumns:(t,r)=>Pa.default.trace("llm.generateAIColumns",async()=>this.generateAIColumns(t,r)),generateData:async(t,r)=>Pa.default.trace("llm.generateData",async()=>{let a=await this.llm.prompt(lu().addUserMessage(t).withFormat(hu(r)));try{return JSON.parse(a.message)}catch{throw new Oa.HTTPError("Error generating data",500)}})};this.llm=t,this.delegates=r}static async init(t){let r=await _a({model:"gpt-4o",maxTokens:2e3});if(!r)throw new Oa.HTTPError("LLM not available",422);return new e(r,t)}async generate(t,r){return Pa.default.trace("tableGeneration.generate",async a=>{let n=await this.generateTables(t,r);return a.addTags({table_count:n.length}),n})}async generateTables(t,r){let a=await this.llmFunctions.getTableStructure(t),n=this.llmFunctions.generateAIColumns(t,a).then(i=>this.delegates.generateTablesDelegate(fu(a,i))),o=await this.llmFunctions.generateData(t,a),s=await n;return await this.delegates.generateDataDelegate(o,r,aI.utils.toMap("name",a)),s}async generateAIColumns(t,r){let a=await this.llm.prompt(cu().addUserMessage(`This is the initial user prompt that generated the given schema:
182
- "${t}"`).withFormat(yu(r)));try{return JSON.parse(a.message)}catch{throw new Oa.HTTPError("Error generating columns",500)}}};0&&(module.exports={Method,ai,api,auditLogs,automations,backups,branding,constants,environmentVariables,features,groups,init,licensing,logger,mappers,middleware,plugins,publicApi,quotas,scimGroups,scimUsers,sdk,users,utils});
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")),bu=class e{constructor(t,r){this.llmFunctions={getTableStructure:async t=>Pa.default.trace("llm.getTableStructure",async()=>{let r=await this.llm.prompt(cu().addUserMessage(t).withFormat(yu));try{let a=JSON.parse(r.message);return fu(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(du().addUserMessage(t).withFormat(Au(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(mu(a,i))),o=await this.llmFunctions.generateData(t,a),s=await n;return await this.delegates.generateDataDelegate(o,r,nI.utils.toMap("name",a)),s}async generateAIColumns(t,r){let a=await this.llm.prompt(lu().addUserMessage(`This is the initial user prompt that generated the given schema:
182
+ "${t}"`).withFormat(hu(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.5",
7
+ "version": "3.12.7",
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": "1b7296dc708223ebfa03d91b471c1ad4a4b49758"
76
+ "gitHead": "87d0fd4e2bfa88a5f45312ce133670856957b97b"
77
77
  }