@budibase/pro 3.10.6 → 3.10.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.
- package/dist/db/automations.d.ts +1 -2
- package/dist/index.js +23 -23
- package/package.json +2 -2
package/dist/db/automations.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { Automation, AutomationLogPage, AutomationResults
|
|
1
|
+
import { Automation, AutomationLogPage, AutomationResults } from "@budibase/types";
|
|
2
2
|
export declare const oldestLogDate: () => Promise<string>;
|
|
3
|
-
export declare function getStatus(results: AutomationResults): AutomationStatus.SUCCESS | AutomationStatus.ERROR | AutomationStatus.STOPPED | AutomationStatus.STOPPED_ERROR;
|
|
4
3
|
export declare function generateAutomationLogID(isoDate: string, status: string, automationId: string): string;
|
|
5
4
|
export declare function getAllLogs(startDate: string, endDate: string, opts?: {
|
|
6
5
|
docs: boolean;
|
package/dist/index.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
"use strict";var uI=Object.create;var Oa=Object.defineProperty;var pI=Object.getOwnPropertyDescriptor;var cI=Object.getOwnPropertyNames;var lI=Object.getPrototypeOf,dI=Object.prototype.hasOwnProperty;var u=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),w=(e,t)=>{for(var r in t)Oa(e,r,{get:t[r],enumerable:!0})},wu=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of cI(t))!dI.call(e,n)&&n!==r&&Oa(e,n,{get:()=>t[n],enumerable:!(a=pI(t,n))||a.enumerable});return e};var C=(e,t,r)=>(r=e!=null?uI(lI(e)):{},wu(t||!e||!e.__esModule?Oa(r,"default",{value:e,enumerable:!0}):r,e)),fI=e=>wu(Oa({},"__esModule",{value:!0}),e);var $a=u((P0,sp)=>{"use strict";function cS(e,t){for(var r=-1,a=t.length,n=e.length;++r<a;)e[n+r]=t[r];return e}sp.exports=cS});var lo=u((L0,ip)=>{"use strict";var lS=typeof global=="object"&&global&&global.Object===Object&&global;ip.exports=lS});var ne=u((C0,up)=>{"use strict";var dS=lo(),fS=typeof self=="object"&&self&&self.Object===Object&&self,mS=dS||fS||Function("return this")();up.exports=mS});var Rt=u((q0,pp)=>{"use strict";var gS=ne(),hS=gS.Symbol;pp.exports=hS});var fp=u((U0,dp)=>{"use strict";var cp=Rt(),lp=Object.prototype,yS=lp.hasOwnProperty,AS=lp.toString,Vr=cp?cp.toStringTag:void 0;function bS(e){var t=yS.call(e,Vr),r=e[Vr];try{e[Vr]=void 0;var a=!0}catch{}var n=AS.call(e);return a&&(t?e[Vr]=r:delete e[Vr]),n}dp.exports=bS});var gp=u((D0,mp)=>{"use strict";var IS=Object.prototype,SS=IS.toString;function wS(e){return SS.call(e)}mp.exports=wS});var dt=u((N0,Ap)=>{"use strict";var hp=Rt(),vS=fp(),TS=gp(),ES="[object Null]",RS="[object Undefined]",yp=hp?hp.toStringTag:void 0;function xS(e){return e==null?e===void 0?RS:ES:yp&&yp in Object(e)?vS(e):TS(e)}Ap.exports=xS});var ge=u((B0,bp)=>{"use strict";function _S(e){return e!=null&&typeof e=="object"}bp.exports=_S});var Sp=u((M0,Ip)=>{"use strict";var OS=dt(),PS=ge(),LS="[object Arguments]";function CS(e){return PS(e)&&OS(e)==LS}Ip.exports=CS});var Kr=u((G0,Tp)=>{"use strict";var wp=Sp(),qS=ge(),vp=Object.prototype,US=vp.hasOwnProperty,DS=vp.propertyIsEnumerable,NS=wp(function(){return arguments}())?wp:function(e){return qS(e)&&US.call(e,"callee")&&!DS.call(e,"callee")};Tp.exports=NS});var ee=u((k0,Ep)=>{"use strict";var BS=Array.isArray;Ep.exports=BS});var Op=u((F0,_p)=>{"use strict";var Rp=Rt(),MS=Kr(),GS=ee(),xp=Rp?Rp.isConcatSpreadable:void 0;function kS(e){return GS(e)||MS(e)||!!(xp&&e&&e[xp])}_p.exports=kS});var fo=u((Q0,Lp)=>{"use strict";var FS=$a(),QS=Op();function Pp(e,t,r,a,n){var o=-1,s=e.length;for(r||(r=QS),n||(n=[]);++o<s;){var i=e[o];t>0&&r(i)?t>1?Pp(i,t-1,r,a,n):FS(n,i):a||(n[n.length]=i)}return n}Lp.exports=Pp});var Yr=u((j0,Cp)=>{"use strict";function jS(e){return e}Cp.exports=jS});var Va=u((W0,qp)=>{"use strict";function WS(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}qp.exports=WS});var mo=u(($0,Dp)=>{"use strict";var $S=Va(),Up=Math.max;function VS(e,t,r){return t=Up(t===void 0?e.length-1:t,0),function(){for(var a=arguments,n=-1,o=Up(a.length-t,0),s=Array(o);++n<o;)s[n]=a[t+n];n=-1;for(var i=Array(t+1);++n<t;)i[n]=a[n];return i[t]=r(s),$S(e,this,i)}}Dp.exports=VS});var Bp=u((V0,Np)=>{"use strict";function KS(e){return function(){return e}}Np.exports=KS});var ve=u((K0,Mp)=>{"use strict";function YS(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}Mp.exports=YS});var Hr=u((Y0,Gp)=>{"use strict";var HS=dt(),zS=ve(),JS="[object AsyncFunction]",XS="[object Function]",ZS="[object GeneratorFunction]",ew="[object Proxy]";function tw(e){if(!zS(e))return!1;var t=HS(e);return t==XS||t==ZS||t==JS||t==ew}Gp.exports=tw});var Fp=u((H0,kp)=>{"use strict";var rw=ne(),aw=rw["__core-js_shared__"];kp.exports=aw});var Wp=u((z0,jp)=>{"use strict";var go=Fp(),Qp=function(){var e=/[^.]+$/.exec(go&&go.keys&&go.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function nw(e){return!!Qp&&Qp in e}jp.exports=nw});var ho=u((J0,$p)=>{"use strict";var ow=Function.prototype,sw=ow.toString;function iw(e){if(e!=null){try{return sw.call(e)}catch{}try{return e+""}catch{}}return""}$p.exports=iw});var Kp=u((X0,Vp)=>{"use strict";var uw=Hr(),pw=Wp(),cw=ve(),lw=ho(),dw=/[\\^$.*+?()[\]{}|]/g,fw=/^\[object .+?Constructor\]$/,mw=Function.prototype,gw=Object.prototype,hw=mw.toString,yw=gw.hasOwnProperty,Aw=RegExp("^"+hw.call(yw).replace(dw,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function bw(e){if(!cw(e)||pw(e))return!1;var t=uw(e)?Aw:fw;return t.test(lw(e))}Vp.exports=bw});var Hp=u((Z0,Yp)=>{"use strict";function Iw(e,t){return e?.[t]}Yp.exports=Iw});var ft=u((ek,zp)=>{"use strict";var Sw=Kp(),ww=Hp();function vw(e,t){var r=ww(e,t);return Sw(r)?r:void 0}zp.exports=vw});var yo=u((tk,Jp)=>{"use strict";var Tw=ft(),Ew=function(){try{var e=Tw(Object,"defineProperty");return e({},"",{}),e}catch{}}();Jp.exports=Ew});var ec=u((rk,Zp)=>{"use strict";var Rw=Bp(),Xp=yo(),xw=Yr(),_w=Xp?function(e,t){return Xp(e,"toString",{configurable:!0,enumerable:!1,value:Rw(t),writable:!0})}:xw;Zp.exports=_w});var Ao=u((ak,tc)=>{"use strict";var Ow=800,Pw=16,Lw=Date.now;function Cw(e){var t=0,r=0;return function(){var a=Lw(),n=Pw-(a-r);if(r=a,n>0){if(++t>=Ow)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}tc.exports=Cw});var Ka=u((nk,rc)=>{"use strict";var qw=ec(),Uw=Ao(),Dw=Uw(qw);rc.exports=Dw});var bo=u((ok,ac)=>{"use strict";var Nw=Yr(),Bw=mo(),Mw=Ka();function Gw(e,t){return Mw(Bw(e,t,Nw),e+"")}ac.exports=Gw});var zr=u((sk,nc)=>{"use strict";var kw=ft(),Fw=kw(Object,"create");nc.exports=Fw});var ic=u((ik,sc)=>{"use strict";var oc=zr();function Qw(){this.__data__=oc?oc(null):{},this.size=0}sc.exports=Qw});var pc=u((uk,uc)=>{"use strict";function jw(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}uc.exports=jw});var lc=u((pk,cc)=>{"use strict";var Ww=zr(),$w="__lodash_hash_undefined__",Vw=Object.prototype,Kw=Vw.hasOwnProperty;function Yw(e){var t=this.__data__;if(Ww){var r=t[e];return r===$w?void 0:r}return Kw.call(t,e)?t[e]:void 0}cc.exports=Yw});var fc=u((ck,dc)=>{"use strict";var Hw=zr(),zw=Object.prototype,Jw=zw.hasOwnProperty;function Xw(e){var t=this.__data__;return Hw?t[e]!==void 0:Jw.call(t,e)}dc.exports=Xw});var gc=u((lk,mc)=>{"use strict";var Zw=zr(),ev="__lodash_hash_undefined__";function tv(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=Zw&&t===void 0?ev:t,this}mc.exports=tv});var yc=u((dk,hc)=>{"use strict";var rv=ic(),av=pc(),nv=lc(),ov=fc(),sv=gc();function Kt(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])}}Kt.prototype.clear=rv;Kt.prototype.delete=av;Kt.prototype.get=nv;Kt.prototype.has=ov;Kt.prototype.set=sv;hc.exports=Kt});var bc=u((fk,Ac)=>{"use strict";function iv(){this.__data__=[],this.size=0}Ac.exports=iv});var Yt=u((mk,Ic)=>{"use strict";function uv(e,t){return e===t||e!==e&&t!==t}Ic.exports=uv});var Jr=u((gk,Sc)=>{"use strict";var pv=Yt();function cv(e,t){for(var r=e.length;r--;)if(pv(e[r][0],t))return r;return-1}Sc.exports=cv});var vc=u((hk,wc)=>{"use strict";var lv=Jr(),dv=Array.prototype,fv=dv.splice;function mv(e){var t=this.__data__,r=lv(t,e);if(r<0)return!1;var a=t.length-1;return r==a?t.pop():fv.call(t,r,1),--this.size,!0}wc.exports=mv});var Ec=u((yk,Tc)=>{"use strict";var gv=Jr();function hv(e){var t=this.__data__,r=gv(t,e);return r<0?void 0:t[r][1]}Tc.exports=hv});var xc=u((Ak,Rc)=>{"use strict";var yv=Jr();function Av(e){return yv(this.__data__,e)>-1}Rc.exports=Av});var Oc=u((bk,_c)=>{"use strict";var bv=Jr();function Iv(e,t){var r=this.__data__,a=bv(r,e);return a<0?(++this.size,r.push([e,t])):r[a][1]=t,this}_c.exports=Iv});var Xr=u((Ik,Pc)=>{"use strict";var Sv=bc(),wv=vc(),vv=Ec(),Tv=xc(),Ev=Oc();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=Sv;Ht.prototype.delete=wv;Ht.prototype.get=vv;Ht.prototype.has=Tv;Ht.prototype.set=Ev;Pc.exports=Ht});var Ya=u((Sk,Lc)=>{"use strict";var Rv=ft(),xv=ne(),_v=Rv(xv,"Map");Lc.exports=_v});var Uc=u((wk,qc)=>{"use strict";var Cc=yc(),Ov=Xr(),Pv=Ya();function Lv(){this.size=0,this.__data__={hash:new Cc,map:new(Pv||Ov),string:new Cc}}qc.exports=Lv});var Nc=u((vk,Dc)=>{"use strict";function Cv(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}Dc.exports=Cv});var Zr=u((Tk,Bc)=>{"use strict";var qv=Nc();function Uv(e,t){var r=e.__data__;return qv(t)?r[typeof t=="string"?"string":"hash"]:r.map}Bc.exports=Uv});var Gc=u((Ek,Mc)=>{"use strict";var Dv=Zr();function Nv(e){var t=Dv(this,e).delete(e);return this.size-=t?1:0,t}Mc.exports=Nv});var Fc=u((Rk,kc)=>{"use strict";var Bv=Zr();function Mv(e){return Bv(this,e).get(e)}kc.exports=Mv});var jc=u((xk,Qc)=>{"use strict";var Gv=Zr();function kv(e){return Gv(this,e).has(e)}Qc.exports=kv});var $c=u((_k,Wc)=>{"use strict";var Fv=Zr();function Qv(e,t){var r=Fv(this,e),a=r.size;return r.set(e,t),this.size+=r.size==a?0:1,this}Wc.exports=Qv});var Ha=u((Ok,Vc)=>{"use strict";var jv=Uc(),Wv=Gc(),$v=Fc(),Vv=jc(),Kv=$c();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=jv;zt.prototype.delete=Wv;zt.prototype.get=$v;zt.prototype.has=Vv;zt.prototype.set=Kv;Vc.exports=zt});var Yc=u((Pk,Kc)=>{"use strict";var Yv="__lodash_hash_undefined__";function Hv(e){return this.__data__.set(e,Yv),this}Kc.exports=Hv});var zc=u((Lk,Hc)=>{"use strict";function zv(e){return this.__data__.has(e)}Hc.exports=zv});var Io=u((Ck,Jc)=>{"use strict";var Jv=Ha(),Xv=Yc(),Zv=zc();function za(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new Jv;++t<r;)this.add(e[t])}za.prototype.add=za.prototype.push=Xv;za.prototype.has=Zv;Jc.exports=za});var Zc=u((qk,Xc)=>{"use strict";function eT(e,t,r,a){for(var n=e.length,o=r+(a?1:-1);a?o--:++o<n;)if(t(e[o],o,e))return o;return-1}Xc.exports=eT});var tl=u((Uk,el)=>{"use strict";function tT(e){return e!==e}el.exports=tT});var al=u((Dk,rl)=>{"use strict";function rT(e,t,r){for(var a=r-1,n=e.length;++a<n;)if(e[a]===t)return a;return-1}rl.exports=rT});var ol=u((Nk,nl)=>{"use strict";var aT=Zc(),nT=tl(),oT=al();function sT(e,t,r){return t===t?oT(e,t,r):aT(e,nT,r)}nl.exports=sT});var So=u((Bk,sl)=>{"use strict";var iT=ol();function uT(e,t){var r=e==null?0:e.length;return!!r&&iT(e,t,0)>-1}sl.exports=uT});var ul=u((Mk,il)=>{"use strict";function pT(e,t,r){for(var a=-1,n=e==null?0:e.length;++a<n;)if(r(t,e[a]))return!0;return!1}il.exports=pT});var wo=u((Gk,pl)=>{"use strict";function cT(e,t){return e.has(t)}pl.exports=cT});var vo=u((kk,cl)=>{"use strict";var lT=ft(),dT=ne(),fT=lT(dT,"Set");cl.exports=fT});var To=u((Fk,ll)=>{"use strict";function mT(){}ll.exports=mT});var Ja=u((Qk,dl)=>{"use strict";function gT(e){var t=-1,r=Array(e.size);return e.forEach(function(a){r[++t]=a}),r}dl.exports=gT});var ml=u((jk,fl)=>{"use strict";var Eo=vo(),hT=To(),yT=Ja(),AT=1/0,bT=Eo&&1/yT(new Eo([,-0]))[1]==AT?function(e){return new Eo(e)}:hT;fl.exports=bT});var hl=u((Wk,gl)=>{"use strict";var IT=Io(),ST=So(),wT=ul(),vT=wo(),TT=ml(),ET=Ja(),RT=200;function xT(e,t,r){var a=-1,n=ST,o=e.length,s=!0,i=[],p=i;if(r)s=!1,n=wT;else if(o>=RT){var f=t?null:TT(e);if(f)return ET(f);s=!1,n=vT,p=new IT}else p=t?[]:i;e:for(;++a<o;){var m=e[a],g=t?t(m):m;if(m=r||m!==0?m:0,s&&g===g){for(var h=p.length;h--;)if(p[h]===g)continue e;t&&p.push(g),i.push(m)}else n(p,g,r)||(p!==i&&p.push(g),i.push(m))}return i}gl.exports=xT});var Xa=u(($k,yl)=>{"use strict";var _T=9007199254740991;function OT(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=_T}yl.exports=OT});var Jt=u((Vk,Al)=>{"use strict";var PT=Hr(),LT=Xa();function CT(e){return e!=null&<(e.length)&&!PT(e)}Al.exports=CT});var Ro=u((Kk,bl)=>{"use strict";var qT=Jt(),UT=ge();function DT(e){return UT(e)&&qT(e)}bl.exports=DT});var Sl=u((Yk,Il)=>{"use strict";var NT=fo(),BT=bo(),MT=hl(),GT=Ro(),kT=BT(function(e){return MT(NT(e,1,GT,!0))});Il.exports=kT});var vl=u((Hk,wl)=>{"use strict";var FT=Xr();function QT(){this.__data__=new FT,this.size=0}wl.exports=QT});var El=u((zk,Tl)=>{"use strict";function jT(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}Tl.exports=jT});var xl=u((Jk,Rl)=>{"use strict";function WT(e){return this.__data__.get(e)}Rl.exports=WT});var Ol=u((Xk,_l)=>{"use strict";function $T(e){return this.__data__.has(e)}_l.exports=$T});var Ll=u((Zk,Pl)=>{"use strict";var VT=Xr(),KT=Ya(),YT=Ha(),HT=200;function zT(e,t){var r=this.__data__;if(r instanceof VT){var a=r.__data__;if(!KT||a.length<HT-1)return a.push([e,t]),this.size=++r.size,this;r=this.__data__=new YT(a)}return r.set(e,t),this.size=r.size,this}Pl.exports=zT});var ea=u((eF,Cl)=>{"use strict";var JT=Xr(),XT=vl(),ZT=El(),eE=xl(),tE=Ol(),rE=Ll();function Xt(e){var t=this.__data__=new JT(e);this.size=t.size}Xt.prototype.clear=XT;Xt.prototype.delete=ZT;Xt.prototype.get=eE;Xt.prototype.has=tE;Xt.prototype.set=rE;Cl.exports=Xt});var ta=u((tF,Ul)=>{"use strict";var ql=yo();function aE(e,t,r){t=="__proto__"&&ql?ql(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}Ul.exports=aE});var xo=u((rF,Dl)=>{"use strict";var nE=ta(),oE=Yt();function sE(e,t,r){(r!==void 0&&!oE(e[t],r)||r===void 0&&!(t in e))&&nE(e,t,r)}Dl.exports=sE});var Bl=u((aF,Nl)=>{"use strict";function iE(e){return function(t,r,a){for(var n=-1,o=Object(t),s=a(t),i=s.length;i--;){var p=s[e?i:++n];if(r(o[p],p,o)===!1)break}return t}}Nl.exports=iE});var _o=u((nF,Ml)=>{"use strict";var uE=Bl(),pE=uE();Ml.exports=pE});var Oo=u((ra,Zt)=>{"use strict";var cE=ne(),Ql=typeof ra=="object"&&ra&&!ra.nodeType&&ra,Gl=Ql&&typeof Zt=="object"&&Zt&&!Zt.nodeType&&Zt,lE=Gl&&Gl.exports===Ql,kl=lE?cE.Buffer:void 0,Fl=kl?kl.allocUnsafe:void 0;function dE(e,t){if(t)return e.slice();var r=e.length,a=Fl?Fl(r):new e.constructor(r);return e.copy(a),a}Zt.exports=dE});var Po=u((oF,jl)=>{"use strict";var fE=ne(),mE=fE.Uint8Array;jl.exports=mE});var Za=u((sF,$l)=>{"use strict";var Wl=Po();function gE(e){var t=new e.constructor(e.byteLength);return new Wl(t).set(new Wl(e)),t}$l.exports=gE});var Lo=u((iF,Vl)=>{"use strict";var hE=Za();function yE(e,t){var r=t?hE(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}Vl.exports=yE});var er=u((uF,Kl)=>{"use strict";function AE(e,t){var r=-1,a=e.length;for(t||(t=Array(a));++r<a;)t[r]=e[r];return t}Kl.exports=AE});var aa=u((pF,Hl)=>{"use strict";var bE=ve(),Yl=Object.create,IE=function(){function e(){}return function(t){if(!bE(t))return{};if(Yl)return Yl(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();Hl.exports=IE});var Co=u((cF,zl)=>{"use strict";function SE(e,t){return function(r){return e(t(r))}}zl.exports=SE});var en=u((lF,Jl)=>{"use strict";var wE=Co(),vE=wE(Object.getPrototypeOf,Object);Jl.exports=vE});var tn=u((dF,Xl)=>{"use strict";var TE=Object.prototype;function EE(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||TE;return e===r}Xl.exports=EE});var qo=u((fF,Zl)=>{"use strict";var RE=aa(),xE=en(),_E=tn();function OE(e){return typeof e.constructor=="function"&&!_E(e)?RE(xE(e)):{}}Zl.exports=OE});var td=u((mF,ed)=>{"use strict";function PE(){return!1}ed.exports=PE});var oa=u((na,tr)=>{"use strict";var LE=ne(),CE=td(),nd=typeof na=="object"&&na&&!na.nodeType&&na,rd=nd&&typeof tr=="object"&&tr&&!tr.nodeType&&tr,qE=rd&&rd.exports===nd,ad=qE?LE.Buffer:void 0,UE=ad?ad.isBuffer:void 0,DE=UE||CE;tr.exports=DE});var Uo=u((gF,sd)=>{"use strict";var NE=dt(),BE=en(),ME=ge(),GE="[object Object]",kE=Function.prototype,FE=Object.prototype,od=kE.toString,QE=FE.hasOwnProperty,jE=od.call(Object);function WE(e){if(!ME(e)||NE(e)!=GE)return!1;var t=BE(e);if(t===null)return!0;var r=QE.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&od.call(r)==jE}sd.exports=WE});var ud=u((hF,id)=>{"use strict";var $E=dt(),VE=Xa(),KE=ge(),YE="[object Arguments]",HE="[object Array]",zE="[object Boolean]",JE="[object Date]",XE="[object Error]",ZE="[object Function]",eR="[object Map]",tR="[object Number]",rR="[object Object]",aR="[object RegExp]",nR="[object Set]",oR="[object String]",sR="[object WeakMap]",iR="[object ArrayBuffer]",uR="[object DataView]",pR="[object Float32Array]",cR="[object Float64Array]",lR="[object Int8Array]",dR="[object Int16Array]",fR="[object Int32Array]",mR="[object Uint8Array]",gR="[object Uint8ClampedArray]",hR="[object Uint16Array]",yR="[object Uint32Array]",N={};N[pR]=N[cR]=N[lR]=N[dR]=N[fR]=N[mR]=N[gR]=N[hR]=N[yR]=!0;N[YE]=N[HE]=N[iR]=N[zE]=N[uR]=N[JE]=N[XE]=N[ZE]=N[eR]=N[tR]=N[rR]=N[aR]=N[nR]=N[oR]=N[sR]=!1;function AR(e){return KE(e)&&VE(e.length)&&!!N[$E(e)]}id.exports=AR});var rn=u((yF,pd)=>{"use strict";function bR(e){return function(t){return e(t)}}pd.exports=bR});var an=u((sa,rr)=>{"use strict";var IR=lo(),cd=typeof sa=="object"&&sa&&!sa.nodeType&&sa,ia=cd&&typeof rr=="object"&&rr&&!rr.nodeType&&rr,SR=ia&&ia.exports===cd,Do=SR&&IR.process,wR=function(){try{var e=ia&&ia.require&&ia.require("util").types;return e||Do&&Do.binding&&Do.binding("util")}catch{}}();rr.exports=wR});var nn=u((AF,fd)=>{"use strict";var vR=ud(),TR=rn(),ld=an(),dd=ld&&ld.isTypedArray,ER=dd?TR(dd):vR;fd.exports=ER});var No=u((bF,md)=>{"use strict";function RR(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}md.exports=RR});var Bo=u((IF,gd)=>{"use strict";var xR=ta(),_R=Yt(),OR=Object.prototype,PR=OR.hasOwnProperty;function LR(e,t,r){var a=e[t];(!(PR.call(e,t)&&_R(a,r))||r===void 0&&!(t in e))&&xR(e,t,r)}gd.exports=LR});var ar=u((SF,hd)=>{"use strict";var CR=Bo(),qR=ta();function UR(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?qR(r,i,p):CR(r,i,p)}return r}hd.exports=UR});var Ad=u((wF,yd)=>{"use strict";function DR(e,t){for(var r=-1,a=Array(e);++r<e;)a[r]=t(r);return a}yd.exports=DR});var ua=u((vF,bd)=>{"use strict";var NR=9007199254740991,BR=/^(?:0|[1-9]\d*)$/;function MR(e,t){var r=typeof e;return t=t??NR,!!t&&(r=="number"||r!="symbol"&&BR.test(e))&&e>-1&&e%1==0&&e<t}bd.exports=MR});var Mo=u((TF,Id)=>{"use strict";var GR=Ad(),kR=Kr(),FR=ee(),QR=oa(),jR=ua(),WR=nn(),$R=Object.prototype,VR=$R.hasOwnProperty;function KR(e,t){var r=FR(e),a=!r&&kR(e),n=!r&&!a&&QR(e),o=!r&&!a&&!n&&WR(e),s=r||a||n||o,i=s?GR(e.length,String):[],p=i.length;for(var f in e)(t||VR.call(e,f))&&!(s&&(f=="length"||n&&(f=="offset"||f=="parent")||o&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||jR(f,p)))&&i.push(f);return i}Id.exports=KR});var wd=u((EF,Sd)=>{"use strict";function YR(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}Sd.exports=YR});var Td=u((RF,vd)=>{"use strict";var HR=ve(),zR=tn(),JR=wd(),XR=Object.prototype,ZR=XR.hasOwnProperty;function ex(e){if(!HR(e))return JR(e);var t=zR(e),r=[];for(var a in e)a=="constructor"&&(t||!ZR.call(e,a))||r.push(a);return r}vd.exports=ex});var nr=u((xF,Ed)=>{"use strict";var tx=Mo(),rx=Td(),ax=Jt();function nx(e){return ax(e)?tx(e,!0):rx(e)}Ed.exports=nx});var xd=u((_F,Rd)=>{"use strict";var ox=ar(),sx=nr();function ix(e){return ox(e,sx(e))}Rd.exports=ix});var qd=u((OF,Cd)=>{"use strict";var _d=xo(),ux=Oo(),px=Lo(),cx=er(),lx=qo(),Od=Kr(),Pd=ee(),dx=Ro(),fx=oa(),mx=Hr(),gx=ve(),hx=Uo(),yx=nn(),Ld=No(),Ax=xd();function bx(e,t,r,a,n,o,s){var i=Ld(e,r),p=Ld(t,r),f=s.get(p);if(f){_d(e,r,f);return}var m=o?o(i,p,r+"",e,t,s):void 0,g=m===void 0;if(g){var h=Pd(p),b=!h&&fx(p),E=!h&&!b&&yx(p);m=p,h||b||E?Pd(i)?m=i:dx(i)?m=cx(i):b?(g=!1,m=ux(p,!0)):E?(g=!1,m=px(p,!0)):m=[]:hx(p)||Od(p)?(m=i,Od(i)?m=Ax(i):(!gx(i)||mx(i))&&(m=lx(p))):g=!1}g&&(s.set(p,m),n(m,p,a,o,s),s.delete(p)),_d(e,r,m)}Cd.exports=bx});var Nd=u((PF,Dd)=>{"use strict";var Ix=ea(),Sx=xo(),wx=_o(),vx=qd(),Tx=ve(),Ex=nr(),Rx=No();function Ud(e,t,r,a,n){e!==t&&wx(t,function(o,s){if(n||(n=new Ix),Tx(o))vx(e,t,s,r,Ud,a,n);else{var i=a?a(Rx(e,s),o,s+"",e,t,n):void 0;i===void 0&&(i=o),Sx(e,s,i)}},Ex)}Dd.exports=Ud});var Md=u((LF,Bd)=>{"use strict";var xx=Yt(),_x=Jt(),Ox=ua(),Px=ve();function Lx(e,t,r){if(!Px(r))return!1;var a=typeof t;return(a=="number"?_x(r)&&Ox(t,r.length):a=="string"&&t in r)?xx(r[t],e):!1}Bd.exports=Lx});var kd=u((CF,Gd)=>{"use strict";var Cx=bo(),qx=Md();function Ux(e){return Cx(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&&qx(r[0],r[1],s)&&(o=n<3?void 0:o,n=1),t=Object(t);++a<n;){var i=r[a];i&&e(t,i,a,o)}return t})}Gd.exports=Ux});var Go=u((qF,Fd)=>{"use strict";var Dx=Nd(),Nx=kd(),Bx=Nx(function(e,t,r){Dx(e,t,r)});Fd.exports=Bx});var jf=u(le=>{"use strict";le.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"};le.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"],4:["fill","setWith","updateWith"]};le.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};le.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2};le.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};le.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]};le.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}};le.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}};le.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=le.aliasToReal,r={};for(var a in t){var n=t[a];e.call(r,n)?r[n].push(a):r[n]=[a]}return r}();le.remap={assignAll:"assign",assignAllWith:"assignWith",assignInAll:"assignIn",assignInAllWith:"assignInWith",curryN:"curry",curryRightN:"curryRight",defaultsAll:"defaults",defaultsDeepAll:"defaultsDeep",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",mergeAll:"merge",mergeAllWith:"mergeWith",padChars:"pad",padCharsEnd:"padEnd",padCharsStart:"padStart",propertyOf:"get",rangeStep:"range",rangeStepRight:"rangeRight",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart",zipAll:"zip"};le.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};le.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}});var Ds=u((tj,Wf)=>{"use strict";Wf.exports={}});var Yf=u((rj,Kf)=>{"use strict";var J=jf(),hO=Ds(),$f=Array.prototype.push;function yO(e,t){return t==2?function(r,a){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}function Ns(e,t){return t==2?function(r,a){return e(r,a)}:function(r){return e(r)}}function Vf(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}function AO(e){return function(t){return e({},t)}}function bO(e,t){return function(){for(var r=arguments.length,a=r-1,n=Array(r);r--;)n[r]=arguments[r];var o=n[t],s=n.slice(0,t);return o&&$f.apply(s,o),t!=a&&$f.apply(s,n.slice(t+1)),e.apply(this,s)}}function Bs(e,t){return function(){var r=arguments.length;if(r){for(var a=Array(r);r--;)a[r]=arguments[r];var n=a[0]=t.apply(void 0,a);return e.apply(void 0,a),n}}}function Ms(e,t,r,a){var n=typeof t=="function",o=t===Object(t);if(o&&(a=r,r=t,t=void 0),r==null)throw new TypeError;a||(a={});var s={cap:"cap"in a?a.cap:!0,curry:"curry"in a?a.curry:!0,fixed:"fixed"in a?a.fixed:!0,immutable:"immutable"in a?a.immutable:!0,rearg:"rearg"in a?a.rearg:!0},i=n?r:hO,p="curry"in a&&a.curry,f="fixed"in a&&a.fixed,m="rearg"in a&&a.rearg,g=n?r.runInContext():void 0,h=n?r:{ary:e.ary,assign:e.assign,clone:e.clone,curry:e.curry,forEach:e.forEach,isArray:e.isArray,isError:e.isError,isFunction:e.isFunction,isWeakMap:e.isWeakMap,iteratee:e.iteratee,keys:e.keys,rearg:e.rearg,toInteger:e.toInteger,toPath:e.toPath},b=h.ary,E=h.assign,L=h.clone,_=h.curry,R=h.forEach,B=h.isArray,st=h.isError,be=h.isFunction,it=h.isWeakMap,kt=h.keys,br=h.rearg,Ir=h.toInteger,Zb=h.toPath,gu=kt(J.aryMethod),eI={castArray:function(S){return function(){var y=arguments[0];return B(y)?S(Vf(y)):S.apply(void 0,arguments)}},iteratee:function(S){return function(){var y=arguments[0],I=arguments[1],T=S(y,I),O=T.length;return s.cap&&typeof I=="number"?(I=I>2?I-2:1,O&&O<=I?T:Ns(T,I)):T}},mixin:function(S){return function(y){var I=this;if(!be(I))return S(I,Object(y));var T=[];return R(kt(y),function(O){be(y[O])&&T.push([O,I.prototype[O]])}),S(I,Object(y)),R(T,function(O){var te=O[1];be(te)?I.prototype[O[0]]=te:delete I.prototype[O[0]]}),I}},nthArg:function(S){return function(y){var I=y<0?1:Ir(y)+1;return _(S(y),I)}},rearg:function(S){return function(y,I){var T=I?I.length:0;return _(S(y,I),T)}},runInContext:function(S){return function(y){return Ms(e,S(y),a)}}};function tI(S,y){if(s.cap){var I=J.iterateeRearg[S];if(I)return sI(y,I);var T=!n&&J.iterateeAry[S];if(T)return oI(y,T)}return y}function rI(S,y,I){return p||s.curry&&I>1?_(y,I):y}function hu(S,y,I){if(s.fixed&&(f||!J.skipFixed[S])){var T=J.methodSpread[S],O=T&&T.start;return O===void 0?b(y,I):bO(y,O)}return y}function yu(S,y,I){return s.rearg&&I>1&&(m||!J.skipRearg[S])?br(y,J.methodRearg[S]||J.aryRearg[I]):y}function aI(S,y){y=Zb(y);for(var I=-1,T=y.length,O=T-1,te=L(Object(S)),De=te;De!=null&&++I<T;){var Ie=y[I],Ne=De[Ie];Ne!=null&&!(be(Ne)||st(Ne)||it(Ne))&&(De[Ie]=L(I==O?Ne:Object(Ne))),De=De[Ie]}return te}function nI(S){return fe.runInContext.convert(S)(void 0)}function Au(S,y){var I=J.aliasToReal[S]||S,T=J.remap[I]||I,O=a;return function(te){var De=n?g:h,Ie=n?g[T]:y,Ne=E(E({},O),te);return Ms(De,I,Ie,Ne)}}function oI(S,y){return bu(S,function(I){return typeof I=="function"?Ns(I,y):I})}function sI(S,y){return bu(S,function(I){var T=y.length;return yO(br(Ns(I,T),y),T)})}function bu(S,y){return function(){var I=arguments.length;if(!I)return S();for(var T=Array(I);I--;)T[I]=arguments[I];var O=s.rearg?0:I-1;return T[O]=y(T[O]),S.apply(void 0,T)}}function Iu(S,y,I){var T,O=J.aliasToReal[S]||S,te=y,De=eI[O];return De?te=De(y):s.immutable&&(J.mutate.array[O]?te=Bs(y,Vf):J.mutate.object[O]?te=Bs(y,AO(y)):J.mutate.set[O]&&(te=Bs(y,aI))),R(gu,function(Ie){return R(J.aryMethod[Ie],function(Ne){if(O==Ne){var Su=J.methodSpread[O],iI=Su&&Su.afterRearg;return T=iI?hu(O,yu(O,te,Ie),Ie):yu(O,hu(O,te,Ie),Ie),T=tI(O,T),T=rI(O,T,Ie),!1}}),!T}),T||(T=te),T==y&&(T=p?_(T,1):function(){return y.apply(this,arguments)}),T.convert=Au(O,y),T.placeholder=y.placeholder=I,T}if(!o)return Iu(t,r,i);var fe=r,Sr=[];return R(gu,function(S){R(J.aryMethod[S],function(y){var I=fe[J.remap[y]||y];I&&Sr.push([y,Iu(y,I,fe)])})}),R(kt(fe),function(S){var y=fe[S];if(typeof y=="function"){for(var I=Sr.length;I--;)if(Sr[I][0]==S)return;y.convert=Au(S,y),Sr.push([S,y])}}),R(Sr,function(S){fe[S[0]]=S[1]}),fe.convert=nI,fe.placeholder=fe,R(kt(fe),function(S){R(J.realToAlias[S]||[],function(y){fe[y]=fe[S]})}),fe}Kf.exports=Ms});var Gs=u((aj,Hf)=>{"use strict";var IO=ft(),SO=ne(),wO=IO(SO,"WeakMap");Hf.exports=wO});var ks=u((nj,Jf)=>{"use strict";var zf=Gs(),vO=zf&&new zf;Jf.exports=vO});var Fs=u((oj,Zf)=>{"use strict";var TO=Yr(),Xf=ks(),EO=Xf?function(e,t){return Xf.set(e,t),e}:TO;Zf.exports=EO});var ba=u((sj,em)=>{"use strict";var RO=aa(),xO=ve();function _O(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=RO(e.prototype),a=e.apply(r,t);return xO(a)?a:r}}em.exports=_O});var rm=u((ij,tm)=>{"use strict";var OO=ba(),PO=ne(),LO=1;function CO(e,t,r){var a=t&LO,n=OO(e);function o(){var s=this&&this!==PO&&this instanceof o?n:e;return s.apply(a?r:this,arguments)}return o}tm.exports=CO});var Qs=u((uj,am)=>{"use strict";var qO=Math.max;function UO(e,t,r,a){for(var n=-1,o=e.length,s=r.length,i=-1,p=t.length,f=qO(o-s,0),m=Array(p+f),g=!a;++i<p;)m[i]=t[i];for(;++n<s;)(g||n<o)&&(m[r[n]]=e[n]);for(;f--;)m[i++]=e[n++];return m}am.exports=UO});var Ws=u((pj,nm)=>{"use strict";var DO=Math.max;function NO(e,t,r,a){for(var n=-1,o=e.length,s=-1,i=r.length,p=-1,f=t.length,m=DO(o-i,0),g=Array(m+f),h=!a;++n<m;)g[n]=e[n];for(var b=n;++p<f;)g[b+p]=t[p];for(;++s<i;)(h||n<o)&&(g[b+r[s]]=e[n++]);return g}nm.exports=NO});var sm=u((cj,om)=>{"use strict";function BO(e,t){for(var r=e.length,a=0;r--;)e[r]===t&&++a;return a}om.exports=BO});var vn=u((lj,im)=>{"use strict";function MO(){}im.exports=MO});var En=u((dj,um)=>{"use strict";var GO=aa(),kO=vn(),FO=4294967295;function Tn(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=FO,this.__views__=[]}Tn.prototype=GO(kO.prototype);Tn.prototype.constructor=Tn;um.exports=Tn});var $s=u((fj,cm)=>{"use strict";var pm=ks(),QO=To(),jO=pm?function(e){return pm.get(e)}:QO;cm.exports=jO});var dm=u((mj,lm)=>{"use strict";var WO={};lm.exports=WO});var gm=u((gj,mm)=>{"use strict";var fm=dm(),$O=Object.prototype,VO=$O.hasOwnProperty;function KO(e){for(var t=e.name+"",r=fm[t],a=VO.call(fm,t)?r.length:0;a--;){var n=r[a],o=n.func;if(o==null||o==e)return n.name}return t}mm.exports=KO});var Vs=u((hj,hm)=>{"use strict";var YO=aa(),HO=vn();function Rn(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}Rn.prototype=YO(HO.prototype);Rn.prototype.constructor=Rn;hm.exports=Rn});var Am=u((yj,ym)=>{"use strict";var zO=En(),JO=Vs(),XO=er();function ZO(e){if(e instanceof zO)return e.clone();var t=new JO(e.__wrapped__,e.__chain__);return t.__actions__=XO(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}ym.exports=ZO});var Sm=u((Aj,Im)=>{"use strict";var eP=En(),bm=Vs(),tP=vn(),rP=ee(),aP=ge(),nP=Am(),oP=Object.prototype,sP=oP.hasOwnProperty;function xn(e){if(aP(e)&&!rP(e)&&!(e instanceof eP)){if(e instanceof bm)return e;if(sP.call(e,"__wrapped__"))return nP(e)}return new bm(e)}xn.prototype=tP.prototype;xn.prototype.constructor=xn;Im.exports=xn});var vm=u((bj,wm)=>{"use strict";var iP=En(),uP=$s(),pP=gm(),cP=Sm();function lP(e){var t=pP(e),r=cP[t];if(typeof r!="function"||!(t in iP.prototype))return!1;if(e===r)return!0;var a=uP(r);return!!a&&e===a[0]}wm.exports=lP});var Ks=u((Ij,Tm)=>{"use strict";var dP=Fs(),fP=Ao(),mP=fP(dP);Tm.exports=mP});var Rm=u((Sj,Em)=>{"use strict";var gP=/\{\n\/\* \[wrapped with (.+)\] \*/,hP=/,? & /;function yP(e){var t=e.match(gP);return t?t[1].split(hP):[]}Em.exports=yP});var _m=u((wj,xm)=>{"use strict";var AP=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function bP(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(AP,`{
|
|
1
|
+
"use strict";var iI=Object.create;var _a=Object.defineProperty;var uI=Object.getOwnPropertyDescriptor;var pI=Object.getOwnPropertyNames;var cI=Object.getPrototypeOf,lI=Object.prototype.hasOwnProperty;var u=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),w=(e,t)=>{for(var r in t)_a(e,r,{get:t[r],enumerable:!0})},Su=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of pI(t))!lI.call(e,n)&&n!==r&&_a(e,n,{get:()=>t[n],enumerable:!(a=uI(t,n))||a.enumerable});return e};var C=(e,t,r)=>(r=e!=null?iI(cI(e)):{},Su(t||!e||!e.__esModule?_a(r,"default",{value:e,enumerable:!0}):r,e)),dI=e=>Su(_a({},"__esModule",{value:!0}),e);var Wa=u((O0,op)=>{"use strict";function pS(e,t){for(var r=-1,a=t.length,n=e.length;++r<a;)e[n+r]=t[r];return e}op.exports=pS});var lo=u((P0,sp)=>{"use strict";var cS=typeof global=="object"&&global&&global.Object===Object&&global;sp.exports=cS});var ne=u((L0,ip)=>{"use strict";var lS=lo(),dS=typeof self=="object"&&self&&self.Object===Object&&self,fS=lS||dS||Function("return this")();ip.exports=fS});var Et=u((C0,up)=>{"use strict";var mS=ne(),gS=mS.Symbol;up.exports=gS});var dp=u((q0,lp)=>{"use strict";var pp=Et(),cp=Object.prototype,hS=cp.hasOwnProperty,yS=cp.toString,$r=pp?pp.toStringTag:void 0;function AS(e){var t=hS.call(e,$r),r=e[$r];try{e[$r]=void 0;var a=!0}catch{}var n=yS.call(e);return a&&(t?e[$r]=r:delete e[$r]),n}lp.exports=AS});var mp=u((U0,fp)=>{"use strict";var bS=Object.prototype,IS=bS.toString;function SS(e){return IS.call(e)}fp.exports=SS});var dt=u((D0,yp)=>{"use strict";var gp=Et(),wS=dp(),vS=mp(),TS="[object Null]",ES="[object Undefined]",hp=gp?gp.toStringTag:void 0;function RS(e){return e==null?e===void 0?ES:TS:hp&&hp in Object(e)?wS(e):vS(e)}yp.exports=RS});var ge=u((N0,Ap)=>{"use strict";function xS(e){return e!=null&&typeof e=="object"}Ap.exports=xS});var Ip=u((B0,bp)=>{"use strict";var _S=dt(),OS=ge(),PS="[object Arguments]";function LS(e){return OS(e)&&_S(e)==PS}bp.exports=LS});var Vr=u((M0,vp)=>{"use strict";var Sp=Ip(),CS=ge(),wp=Object.prototype,qS=wp.hasOwnProperty,US=wp.propertyIsEnumerable,DS=Sp(function(){return arguments}())?Sp:function(e){return CS(e)&&qS.call(e,"callee")&&!US.call(e,"callee")};vp.exports=DS});var ee=u((G0,Tp)=>{"use strict";var NS=Array.isArray;Tp.exports=NS});var _p=u((k0,xp)=>{"use strict";var Ep=Et(),BS=Vr(),MS=ee(),Rp=Ep?Ep.isConcatSpreadable:void 0;function GS(e){return MS(e)||BS(e)||!!(Rp&&e&&e[Rp])}xp.exports=GS});var fo=u((F0,Pp)=>{"use strict";var kS=Wa(),FS=_p();function Op(e,t,r,a,n){var o=-1,s=e.length;for(r||(r=FS),n||(n=[]);++o<s;){var i=e[o];t>0&&r(i)?t>1?Op(i,t-1,r,a,n):kS(n,i):a||(n[n.length]=i)}return n}Pp.exports=Op});var Kr=u((Q0,Lp)=>{"use strict";function QS(e){return e}Lp.exports=QS});var $a=u((j0,Cp)=>{"use strict";function jS(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}Cp.exports=jS});var mo=u((W0,Up)=>{"use strict";var WS=$a(),qp=Math.max;function $S(e,t,r){return t=qp(t===void 0?e.length-1:t,0),function(){for(var a=arguments,n=-1,o=qp(a.length-t,0),s=Array(o);++n<o;)s[n]=a[t+n];n=-1;for(var i=Array(t+1);++n<t;)i[n]=a[n];return i[t]=r(s),WS(e,this,i)}}Up.exports=$S});var Np=u(($0,Dp)=>{"use strict";function VS(e){return function(){return e}}Dp.exports=VS});var ve=u((V0,Bp)=>{"use strict";function KS(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}Bp.exports=KS});var Yr=u((K0,Mp)=>{"use strict";var YS=dt(),HS=ve(),zS="[object AsyncFunction]",JS="[object Function]",XS="[object GeneratorFunction]",ZS="[object Proxy]";function ew(e){if(!HS(e))return!1;var t=YS(e);return t==JS||t==XS||t==zS||t==ZS}Mp.exports=ew});var kp=u((Y0,Gp)=>{"use strict";var tw=ne(),rw=tw["__core-js_shared__"];Gp.exports=rw});var jp=u((H0,Qp)=>{"use strict";var go=kp(),Fp=function(){var e=/[^.]+$/.exec(go&&go.keys&&go.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function aw(e){return!!Fp&&Fp in e}Qp.exports=aw});var ho=u((z0,Wp)=>{"use strict";var nw=Function.prototype,ow=nw.toString;function sw(e){if(e!=null){try{return ow.call(e)}catch{}try{return e+""}catch{}}return""}Wp.exports=sw});var Vp=u((J0,$p)=>{"use strict";var iw=Yr(),uw=jp(),pw=ve(),cw=ho(),lw=/[\\^$.*+?()[\]{}|]/g,dw=/^\[object .+?Constructor\]$/,fw=Function.prototype,mw=Object.prototype,gw=fw.toString,hw=mw.hasOwnProperty,yw=RegExp("^"+gw.call(hw).replace(lw,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Aw(e){if(!pw(e)||uw(e))return!1;var t=iw(e)?yw:dw;return t.test(cw(e))}$p.exports=Aw});var Yp=u((X0,Kp)=>{"use strict";function bw(e,t){return e?.[t]}Kp.exports=bw});var ft=u((Z0,Hp)=>{"use strict";var Iw=Vp(),Sw=Yp();function ww(e,t){var r=Sw(e,t);return Iw(r)?r:void 0}Hp.exports=ww});var yo=u((ek,zp)=>{"use strict";var vw=ft(),Tw=function(){try{var e=vw(Object,"defineProperty");return e({},"",{}),e}catch{}}();zp.exports=Tw});var Zp=u((tk,Xp)=>{"use strict";var Ew=Np(),Jp=yo(),Rw=Kr(),xw=Jp?function(e,t){return Jp(e,"toString",{configurable:!0,enumerable:!1,value:Ew(t),writable:!0})}:Rw;Xp.exports=xw});var Ao=u((rk,ec)=>{"use strict";var _w=800,Ow=16,Pw=Date.now;function Lw(e){var t=0,r=0;return function(){var a=Pw(),n=Ow-(a-r);if(r=a,n>0){if(++t>=_w)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}ec.exports=Lw});var Va=u((ak,tc)=>{"use strict";var Cw=Zp(),qw=Ao(),Uw=qw(Cw);tc.exports=Uw});var bo=u((nk,rc)=>{"use strict";var Dw=Kr(),Nw=mo(),Bw=Va();function Mw(e,t){return Bw(Nw(e,t,Dw),e+"")}rc.exports=Mw});var Hr=u((ok,ac)=>{"use strict";var Gw=ft(),kw=Gw(Object,"create");ac.exports=kw});var sc=u((sk,oc)=>{"use strict";var nc=Hr();function Fw(){this.__data__=nc?nc(null):{},this.size=0}oc.exports=Fw});var uc=u((ik,ic)=>{"use strict";function Qw(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}ic.exports=Qw});var cc=u((uk,pc)=>{"use strict";var jw=Hr(),Ww="__lodash_hash_undefined__",$w=Object.prototype,Vw=$w.hasOwnProperty;function Kw(e){var t=this.__data__;if(jw){var r=t[e];return r===Ww?void 0:r}return Vw.call(t,e)?t[e]:void 0}pc.exports=Kw});var dc=u((pk,lc)=>{"use strict";var Yw=Hr(),Hw=Object.prototype,zw=Hw.hasOwnProperty;function Jw(e){var t=this.__data__;return Yw?t[e]!==void 0:zw.call(t,e)}lc.exports=Jw});var mc=u((ck,fc)=>{"use strict";var Xw=Hr(),Zw="__lodash_hash_undefined__";function ev(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=Xw&&t===void 0?Zw:t,this}fc.exports=ev});var hc=u((lk,gc)=>{"use strict";var tv=sc(),rv=uc(),av=cc(),nv=dc(),ov=mc();function Vt(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var a=e[t];this.set(a[0],a[1])}}Vt.prototype.clear=tv;Vt.prototype.delete=rv;Vt.prototype.get=av;Vt.prototype.has=nv;Vt.prototype.set=ov;gc.exports=Vt});var Ac=u((dk,yc)=>{"use strict";function sv(){this.__data__=[],this.size=0}yc.exports=sv});var Kt=u((fk,bc)=>{"use strict";function iv(e,t){return e===t||e!==e&&t!==t}bc.exports=iv});var zr=u((mk,Ic)=>{"use strict";var uv=Kt();function pv(e,t){for(var r=e.length;r--;)if(uv(e[r][0],t))return r;return-1}Ic.exports=pv});var wc=u((gk,Sc)=>{"use strict";var cv=zr(),lv=Array.prototype,dv=lv.splice;function fv(e){var t=this.__data__,r=cv(t,e);if(r<0)return!1;var a=t.length-1;return r==a?t.pop():dv.call(t,r,1),--this.size,!0}Sc.exports=fv});var Tc=u((hk,vc)=>{"use strict";var mv=zr();function gv(e){var t=this.__data__,r=mv(t,e);return r<0?void 0:t[r][1]}vc.exports=gv});var Rc=u((yk,Ec)=>{"use strict";var hv=zr();function yv(e){return hv(this.__data__,e)>-1}Ec.exports=yv});var _c=u((Ak,xc)=>{"use strict";var Av=zr();function bv(e,t){var r=this.__data__,a=Av(r,e);return a<0?(++this.size,r.push([e,t])):r[a][1]=t,this}xc.exports=bv});var Jr=u((bk,Oc)=>{"use strict";var Iv=Ac(),Sv=wc(),wv=Tc(),vv=Rc(),Tv=_c();function Yt(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var a=e[t];this.set(a[0],a[1])}}Yt.prototype.clear=Iv;Yt.prototype.delete=Sv;Yt.prototype.get=wv;Yt.prototype.has=vv;Yt.prototype.set=Tv;Oc.exports=Yt});var Ka=u((Ik,Pc)=>{"use strict";var Ev=ft(),Rv=ne(),xv=Ev(Rv,"Map");Pc.exports=xv});var qc=u((Sk,Cc)=>{"use strict";var Lc=hc(),_v=Jr(),Ov=Ka();function Pv(){this.size=0,this.__data__={hash:new Lc,map:new(Ov||_v),string:new Lc}}Cc.exports=Pv});var Dc=u((wk,Uc)=>{"use strict";function Lv(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}Uc.exports=Lv});var Xr=u((vk,Nc)=>{"use strict";var Cv=Dc();function qv(e,t){var r=e.__data__;return Cv(t)?r[typeof t=="string"?"string":"hash"]:r.map}Nc.exports=qv});var Mc=u((Tk,Bc)=>{"use strict";var Uv=Xr();function Dv(e){var t=Uv(this,e).delete(e);return this.size-=t?1:0,t}Bc.exports=Dv});var kc=u((Ek,Gc)=>{"use strict";var Nv=Xr();function Bv(e){return Nv(this,e).get(e)}Gc.exports=Bv});var Qc=u((Rk,Fc)=>{"use strict";var Mv=Xr();function Gv(e){return Mv(this,e).has(e)}Fc.exports=Gv});var Wc=u((xk,jc)=>{"use strict";var kv=Xr();function Fv(e,t){var r=kv(this,e),a=r.size;return r.set(e,t),this.size+=r.size==a?0:1,this}jc.exports=Fv});var Ya=u((_k,$c)=>{"use strict";var Qv=qc(),jv=Mc(),Wv=kc(),$v=Qc(),Vv=Wc();function Ht(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var a=e[t];this.set(a[0],a[1])}}Ht.prototype.clear=Qv;Ht.prototype.delete=jv;Ht.prototype.get=Wv;Ht.prototype.has=$v;Ht.prototype.set=Vv;$c.exports=Ht});var Kc=u((Ok,Vc)=>{"use strict";var Kv="__lodash_hash_undefined__";function Yv(e){return this.__data__.set(e,Kv),this}Vc.exports=Yv});var Hc=u((Pk,Yc)=>{"use strict";function Hv(e){return this.__data__.has(e)}Yc.exports=Hv});var Io=u((Lk,zc)=>{"use strict";var zv=Ya(),Jv=Kc(),Xv=Hc();function Ha(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new zv;++t<r;)this.add(e[t])}Ha.prototype.add=Ha.prototype.push=Jv;Ha.prototype.has=Xv;zc.exports=Ha});var Xc=u((Ck,Jc)=>{"use strict";function Zv(e,t,r,a){for(var n=e.length,o=r+(a?1:-1);a?o--:++o<n;)if(t(e[o],o,e))return o;return-1}Jc.exports=Zv});var el=u((qk,Zc)=>{"use strict";function eT(e){return e!==e}Zc.exports=eT});var rl=u((Uk,tl)=>{"use strict";function tT(e,t,r){for(var a=r-1,n=e.length;++a<n;)if(e[a]===t)return a;return-1}tl.exports=tT});var nl=u((Dk,al)=>{"use strict";var rT=Xc(),aT=el(),nT=rl();function oT(e,t,r){return t===t?nT(e,t,r):rT(e,aT,r)}al.exports=oT});var So=u((Nk,ol)=>{"use strict";var sT=nl();function iT(e,t){var r=e==null?0:e.length;return!!r&&sT(e,t,0)>-1}ol.exports=iT});var il=u((Bk,sl)=>{"use strict";function uT(e,t,r){for(var a=-1,n=e==null?0:e.length;++a<n;)if(r(t,e[a]))return!0;return!1}sl.exports=uT});var wo=u((Mk,ul)=>{"use strict";function pT(e,t){return e.has(t)}ul.exports=pT});var vo=u((Gk,pl)=>{"use strict";var cT=ft(),lT=ne(),dT=cT(lT,"Set");pl.exports=dT});var To=u((kk,cl)=>{"use strict";function fT(){}cl.exports=fT});var za=u((Fk,ll)=>{"use strict";function mT(e){var t=-1,r=Array(e.size);return e.forEach(function(a){r[++t]=a}),r}ll.exports=mT});var fl=u((Qk,dl)=>{"use strict";var Eo=vo(),gT=To(),hT=za(),yT=1/0,AT=Eo&&1/hT(new Eo([,-0]))[1]==yT?function(e){return new Eo(e)}:gT;dl.exports=AT});var gl=u((jk,ml)=>{"use strict";var bT=Io(),IT=So(),ST=il(),wT=wo(),vT=fl(),TT=za(),ET=200;function RT(e,t,r){var a=-1,n=IT,o=e.length,s=!0,i=[],p=i;if(r)s=!1,n=ST;else if(o>=ET){var f=t?null:vT(e);if(f)return TT(f);s=!1,n=wT,p=new bT}else p=t?[]:i;e:for(;++a<o;){var m=e[a],g=t?t(m):m;if(m=r||m!==0?m:0,s&&g===g){for(var h=p.length;h--;)if(p[h]===g)continue e;t&&p.push(g),i.push(m)}else n(p,g,r)||(p!==i&&p.push(g),i.push(m))}return i}ml.exports=RT});var Ja=u((Wk,hl)=>{"use strict";var xT=9007199254740991;function _T(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=xT}hl.exports=_T});var zt=u(($k,yl)=>{"use strict";var OT=Yr(),PT=Ja();function LT(e){return e!=null&&PT(e.length)&&!OT(e)}yl.exports=LT});var Ro=u((Vk,Al)=>{"use strict";var CT=zt(),qT=ge();function UT(e){return qT(e)&&CT(e)}Al.exports=UT});var Il=u((Kk,bl)=>{"use strict";var DT=fo(),NT=bo(),BT=gl(),MT=Ro(),GT=NT(function(e){return BT(DT(e,1,MT,!0))});bl.exports=GT});var wl=u((Yk,Sl)=>{"use strict";var kT=Jr();function FT(){this.__data__=new kT,this.size=0}Sl.exports=FT});var Tl=u((Hk,vl)=>{"use strict";function QT(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}vl.exports=QT});var Rl=u((zk,El)=>{"use strict";function jT(e){return this.__data__.get(e)}El.exports=jT});var _l=u((Jk,xl)=>{"use strict";function WT(e){return this.__data__.has(e)}xl.exports=WT});var Pl=u((Xk,Ol)=>{"use strict";var $T=Jr(),VT=Ka(),KT=Ya(),YT=200;function HT(e,t){var r=this.__data__;if(r instanceof $T){var a=r.__data__;if(!VT||a.length<YT-1)return a.push([e,t]),this.size=++r.size,this;r=this.__data__=new KT(a)}return r.set(e,t),this.size=r.size,this}Ol.exports=HT});var Zr=u((Zk,Ll)=>{"use strict";var zT=Jr(),JT=wl(),XT=Tl(),ZT=Rl(),eE=_l(),tE=Pl();function Jt(e){var t=this.__data__=new zT(e);this.size=t.size}Jt.prototype.clear=JT;Jt.prototype.delete=XT;Jt.prototype.get=ZT;Jt.prototype.has=eE;Jt.prototype.set=tE;Ll.exports=Jt});var ea=u((eF,ql)=>{"use strict";var Cl=yo();function rE(e,t,r){t=="__proto__"&&Cl?Cl(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}ql.exports=rE});var xo=u((tF,Ul)=>{"use strict";var aE=ea(),nE=Kt();function oE(e,t,r){(r!==void 0&&!nE(e[t],r)||r===void 0&&!(t in e))&&aE(e,t,r)}Ul.exports=oE});var Nl=u((rF,Dl)=>{"use strict";function sE(e){return function(t,r,a){for(var n=-1,o=Object(t),s=a(t),i=s.length;i--;){var p=s[e?i:++n];if(r(o[p],p,o)===!1)break}return t}}Dl.exports=sE});var _o=u((aF,Bl)=>{"use strict";var iE=Nl(),uE=iE();Bl.exports=uE});var Oo=u((ta,Xt)=>{"use strict";var pE=ne(),Fl=typeof ta=="object"&&ta&&!ta.nodeType&&ta,Ml=Fl&&typeof Xt=="object"&&Xt&&!Xt.nodeType&&Xt,cE=Ml&&Ml.exports===Fl,Gl=cE?pE.Buffer:void 0,kl=Gl?Gl.allocUnsafe:void 0;function lE(e,t){if(t)return e.slice();var r=e.length,a=kl?kl(r):new e.constructor(r);return e.copy(a),a}Xt.exports=lE});var Po=u((nF,Ql)=>{"use strict";var dE=ne(),fE=dE.Uint8Array;Ql.exports=fE});var Xa=u((oF,Wl)=>{"use strict";var jl=Po();function mE(e){var t=new e.constructor(e.byteLength);return new jl(t).set(new jl(e)),t}Wl.exports=mE});var Lo=u((sF,$l)=>{"use strict";var gE=Xa();function hE(e,t){var r=t?gE(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}$l.exports=hE});var Zt=u((iF,Vl)=>{"use strict";function yE(e,t){var r=-1,a=e.length;for(t||(t=Array(a));++r<a;)t[r]=e[r];return t}Vl.exports=yE});var ra=u((uF,Yl)=>{"use strict";var AE=ve(),Kl=Object.create,bE=function(){function e(){}return function(t){if(!AE(t))return{};if(Kl)return Kl(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();Yl.exports=bE});var Co=u((pF,Hl)=>{"use strict";function IE(e,t){return function(r){return e(t(r))}}Hl.exports=IE});var Za=u((cF,zl)=>{"use strict";var SE=Co(),wE=SE(Object.getPrototypeOf,Object);zl.exports=wE});var en=u((lF,Jl)=>{"use strict";var vE=Object.prototype;function TE(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||vE;return e===r}Jl.exports=TE});var qo=u((dF,Xl)=>{"use strict";var EE=ra(),RE=Za(),xE=en();function _E(e){return typeof e.constructor=="function"&&!xE(e)?EE(RE(e)):{}}Xl.exports=_E});var ed=u((fF,Zl)=>{"use strict";function OE(){return!1}Zl.exports=OE});var na=u((aa,er)=>{"use strict";var PE=ne(),LE=ed(),ad=typeof aa=="object"&&aa&&!aa.nodeType&&aa,td=ad&&typeof er=="object"&&er&&!er.nodeType&&er,CE=td&&td.exports===ad,rd=CE?PE.Buffer:void 0,qE=rd?rd.isBuffer:void 0,UE=qE||LE;er.exports=UE});var Uo=u((mF,od)=>{"use strict";var DE=dt(),NE=Za(),BE=ge(),ME="[object Object]",GE=Function.prototype,kE=Object.prototype,nd=GE.toString,FE=kE.hasOwnProperty,QE=nd.call(Object);function jE(e){if(!BE(e)||DE(e)!=ME)return!1;var t=NE(e);if(t===null)return!0;var r=FE.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&nd.call(r)==QE}od.exports=jE});var id=u((gF,sd)=>{"use strict";var WE=dt(),$E=Ja(),VE=ge(),KE="[object Arguments]",YE="[object Array]",HE="[object Boolean]",zE="[object Date]",JE="[object Error]",XE="[object Function]",ZE="[object Map]",eR="[object Number]",tR="[object Object]",rR="[object RegExp]",aR="[object Set]",nR="[object String]",oR="[object WeakMap]",sR="[object ArrayBuffer]",iR="[object DataView]",uR="[object Float32Array]",pR="[object Float64Array]",cR="[object Int8Array]",lR="[object Int16Array]",dR="[object Int32Array]",fR="[object Uint8Array]",mR="[object Uint8ClampedArray]",gR="[object Uint16Array]",hR="[object Uint32Array]",N={};N[uR]=N[pR]=N[cR]=N[lR]=N[dR]=N[fR]=N[mR]=N[gR]=N[hR]=!0;N[KE]=N[YE]=N[sR]=N[HE]=N[iR]=N[zE]=N[JE]=N[XE]=N[ZE]=N[eR]=N[tR]=N[rR]=N[aR]=N[nR]=N[oR]=!1;function yR(e){return VE(e)&&$E(e.length)&&!!N[WE(e)]}sd.exports=yR});var tn=u((hF,ud)=>{"use strict";function AR(e){return function(t){return e(t)}}ud.exports=AR});var rn=u((oa,tr)=>{"use strict";var bR=lo(),pd=typeof oa=="object"&&oa&&!oa.nodeType&&oa,sa=pd&&typeof tr=="object"&&tr&&!tr.nodeType&&tr,IR=sa&&sa.exports===pd,Do=IR&&bR.process,SR=function(){try{var e=sa&&sa.require&&sa.require("util").types;return e||Do&&Do.binding&&Do.binding("util")}catch{}}();tr.exports=SR});var an=u((yF,dd)=>{"use strict";var wR=id(),vR=tn(),cd=rn(),ld=cd&&cd.isTypedArray,TR=ld?vR(ld):wR;dd.exports=TR});var No=u((AF,fd)=>{"use strict";function ER(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}fd.exports=ER});var Bo=u((bF,md)=>{"use strict";var RR=ea(),xR=Kt(),_R=Object.prototype,OR=_R.hasOwnProperty;function PR(e,t,r){var a=e[t];(!(OR.call(e,t)&&xR(a,r))||r===void 0&&!(t in e))&&RR(e,t,r)}md.exports=PR});var rr=u((IF,gd)=>{"use strict";var LR=Bo(),CR=ea();function qR(e,t,r,a){var n=!r;r||(r={});for(var o=-1,s=t.length;++o<s;){var i=t[o],p=a?a(r[i],e[i],i,r,e):void 0;p===void 0&&(p=e[i]),n?CR(r,i,p):LR(r,i,p)}return r}gd.exports=qR});var yd=u((SF,hd)=>{"use strict";function UR(e,t){for(var r=-1,a=Array(e);++r<e;)a[r]=t(r);return a}hd.exports=UR});var ia=u((wF,Ad)=>{"use strict";var DR=9007199254740991,NR=/^(?:0|[1-9]\d*)$/;function BR(e,t){var r=typeof e;return t=t??DR,!!t&&(r=="number"||r!="symbol"&&NR.test(e))&&e>-1&&e%1==0&&e<t}Ad.exports=BR});var Mo=u((vF,bd)=>{"use strict";var MR=yd(),GR=Vr(),kR=ee(),FR=na(),QR=ia(),jR=an(),WR=Object.prototype,$R=WR.hasOwnProperty;function VR(e,t){var r=kR(e),a=!r&&GR(e),n=!r&&!a&&FR(e),o=!r&&!a&&!n&&jR(e),s=r||a||n||o,i=s?MR(e.length,String):[],p=i.length;for(var f in e)(t||$R.call(e,f))&&!(s&&(f=="length"||n&&(f=="offset"||f=="parent")||o&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||QR(f,p)))&&i.push(f);return i}bd.exports=VR});var Sd=u((TF,Id)=>{"use strict";function KR(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}Id.exports=KR});var vd=u((EF,wd)=>{"use strict";var YR=ve(),HR=en(),zR=Sd(),JR=Object.prototype,XR=JR.hasOwnProperty;function ZR(e){if(!YR(e))return zR(e);var t=HR(e),r=[];for(var a in e)a=="constructor"&&(t||!XR.call(e,a))||r.push(a);return r}wd.exports=ZR});var ar=u((RF,Td)=>{"use strict";var ex=Mo(),tx=vd(),rx=zt();function ax(e){return rx(e)?ex(e,!0):tx(e)}Td.exports=ax});var Rd=u((xF,Ed)=>{"use strict";var nx=rr(),ox=ar();function sx(e){return nx(e,ox(e))}Ed.exports=sx});var Cd=u((_F,Ld)=>{"use strict";var xd=xo(),ix=Oo(),ux=Lo(),px=Zt(),cx=qo(),_d=Vr(),Od=ee(),lx=Ro(),dx=na(),fx=Yr(),mx=ve(),gx=Uo(),hx=an(),Pd=No(),yx=Rd();function Ax(e,t,r,a,n,o,s){var i=Pd(e,r),p=Pd(t,r),f=s.get(p);if(f){xd(e,r,f);return}var m=o?o(i,p,r+"",e,t,s):void 0,g=m===void 0;if(g){var h=Od(p),b=!h&&dx(p),E=!h&&!b&&hx(p);m=p,h||b||E?Od(i)?m=i:lx(i)?m=px(i):b?(g=!1,m=ix(p,!0)):E?(g=!1,m=ux(p,!0)):m=[]:gx(p)||_d(p)?(m=i,_d(i)?m=yx(i):(!mx(i)||fx(i))&&(m=cx(p))):g=!1}g&&(s.set(p,m),n(m,p,a,o,s),s.delete(p)),xd(e,r,m)}Ld.exports=Ax});var Dd=u((OF,Ud)=>{"use strict";var bx=Zr(),Ix=xo(),Sx=_o(),wx=Cd(),vx=ve(),Tx=ar(),Ex=No();function qd(e,t,r,a,n){e!==t&&Sx(t,function(o,s){if(n||(n=new bx),vx(o))wx(e,t,s,r,qd,a,n);else{var i=a?a(Ex(e,s),o,s+"",e,t,n):void 0;i===void 0&&(i=o),Ix(e,s,i)}},Tx)}Ud.exports=qd});var Bd=u((PF,Nd)=>{"use strict";var Rx=Kt(),xx=zt(),_x=ia(),Ox=ve();function Px(e,t,r){if(!Ox(r))return!1;var a=typeof t;return(a=="number"?xx(r)&&_x(t,r.length):a=="string"&&t in r)?Rx(r[t],e):!1}Nd.exports=Px});var Gd=u((LF,Md)=>{"use strict";var Lx=bo(),Cx=Bd();function qx(e){return Lx(function(t,r){var a=-1,n=r.length,o=n>1?r[n-1]:void 0,s=n>2?r[2]:void 0;for(o=e.length>3&&typeof o=="function"?(n--,o):void 0,s&&Cx(r[0],r[1],s)&&(o=n<3?void 0:o,n=1),t=Object(t);++a<n;){var i=r[a];i&&e(t,i,a,o)}return t})}Md.exports=qx});var Go=u((CF,kd)=>{"use strict";var Ux=Dd(),Dx=Gd(),Nx=Dx(function(e,t,r){Ux(e,t,r)});kd.exports=Nx});var Qf=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 Us=u((ej,jf)=>{"use strict";jf.exports={}});var Kf=u((tj,Vf)=>{"use strict";var J=Qf(),gO=Us(),Wf=Array.prototype.push;function hO(e,t){return t==2?function(r,a){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}function Ds(e,t){return t==2?function(r,a){return e(r,a)}:function(r){return e(r)}}function $f(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}function yO(e){return function(t){return e({},t)}}function AO(e,t){return function(){for(var r=arguments.length,a=r-1,n=Array(r);r--;)n[r]=arguments[r];var o=n[t],s=n.slice(0,t);return o&&Wf.apply(s,o),t!=a&&Wf.apply(s,n.slice(t+1)),e.apply(this,s)}}function Ns(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 Bs(e,t,r,a){var n=typeof t=="function",o=t===Object(t);if(o&&(a=r,r=t,t=void 0),r==null)throw new TypeError;a||(a={});var s={cap:"cap"in a?a.cap:!0,curry:"curry"in a?a.curry:!0,fixed:"fixed"in a?a.fixed:!0,immutable:"immutable"in a?a.immutable:!0,rearg:"rearg"in a?a.rearg:!0},i=n?r:gO,p="curry"in a&&a.curry,f="fixed"in a&&a.fixed,m="rearg"in a&&a.rearg,g=n?r.runInContext():void 0,h=n?r:{ary:e.ary,assign:e.assign,clone:e.clone,curry:e.curry,forEach:e.forEach,isArray:e.isArray,isError:e.isError,isFunction:e.isFunction,isWeakMap:e.isWeakMap,iteratee:e.iteratee,keys:e.keys,rearg:e.rearg,toInteger:e.toInteger,toPath:e.toPath},b=h.ary,E=h.assign,L=h.clone,_=h.curry,R=h.forEach,B=h.isArray,st=h.isError,be=h.isFunction,it=h.isWeakMap,Gt=h.keys,Ar=h.rearg,br=h.toInteger,Xb=h.toPath,mu=Gt(J.aryMethod),Zb={castArray:function(S){return function(){var y=arguments[0];return B(y)?S($f(y)):S.apply(void 0,arguments)}},iteratee:function(S){return function(){var y=arguments[0],I=arguments[1],T=S(y,I),O=T.length;return s.cap&&typeof I=="number"?(I=I>2?I-2:1,O&&O<=I?T:Ds(T,I)):T}},mixin:function(S){return function(y){var I=this;if(!be(I))return S(I,Object(y));var T=[];return R(Gt(y),function(O){be(y[O])&&T.push([O,I.prototype[O]])}),S(I,Object(y)),R(T,function(O){var te=O[1];be(te)?I.prototype[O[0]]=te:delete I.prototype[O[0]]}),I}},nthArg:function(S){return function(y){var I=y<0?1:br(y)+1;return _(S(y),I)}},rearg:function(S){return function(y,I){var T=I?I.length:0;return _(S(y,I),T)}},runInContext:function(S){return function(y){return Bs(e,S(y),a)}}};function eI(S,y){if(s.cap){var I=J.iterateeRearg[S];if(I)return oI(y,I);var T=!n&&J.iterateeAry[S];if(T)return nI(y,T)}return y}function tI(S,y,I){return p||s.curry&&I>1?_(y,I):y}function gu(S,y,I){if(s.fixed&&(f||!J.skipFixed[S])){var T=J.methodSpread[S],O=T&&T.start;return O===void 0?b(y,I):AO(y,O)}return y}function hu(S,y,I){return s.rearg&&I>1&&(m||!J.skipRearg[S])?Ar(y,J.methodRearg[S]||J.aryRearg[I]):y}function rI(S,y){y=Xb(y);for(var I=-1,T=y.length,O=T-1,te=L(Object(S)),De=te;De!=null&&++I<T;){var Ie=y[I],Ne=De[Ie];Ne!=null&&!(be(Ne)||st(Ne)||it(Ne))&&(De[Ie]=L(I==O?Ne:Object(Ne))),De=De[Ie]}return te}function aI(S){return fe.runInContext.convert(S)(void 0)}function yu(S,y){var I=J.aliasToReal[S]||S,T=J.remap[I]||I,O=a;return function(te){var De=n?g:h,Ie=n?g[T]:y,Ne=E(E({},O),te);return Bs(De,I,Ie,Ne)}}function nI(S,y){return Au(S,function(I){return typeof I=="function"?Ds(I,y):I})}function oI(S,y){return Au(S,function(I){var T=y.length;return hO(Ar(Ds(I,T),y),T)})}function Au(S,y){return function(){var I=arguments.length;if(!I)return S();for(var T=Array(I);I--;)T[I]=arguments[I];var O=s.rearg?0:I-1;return T[O]=y(T[O]),S.apply(void 0,T)}}function bu(S,y,I){var T,O=J.aliasToReal[S]||S,te=y,De=Zb[O];return De?te=De(y):s.immutable&&(J.mutate.array[O]?te=Ns(y,$f):J.mutate.object[O]?te=Ns(y,yO(y)):J.mutate.set[O]&&(te=Ns(y,rI))),R(mu,function(Ie){return R(J.aryMethod[Ie],function(Ne){if(O==Ne){var Iu=J.methodSpread[O],sI=Iu&&Iu.afterRearg;return T=sI?gu(O,hu(O,te,Ie),Ie):hu(O,gu(O,te,Ie),Ie),T=eI(O,T),T=tI(O,T,Ie),!1}}),!T}),T||(T=te),T==y&&(T=p?_(T,1):function(){return y.apply(this,arguments)}),T.convert=yu(O,y),T.placeholder=y.placeholder=I,T}if(!o)return bu(t,r,i);var fe=r,Ir=[];return R(mu,function(S){R(J.aryMethod[S],function(y){var I=fe[J.remap[y]||y];I&&Ir.push([y,bu(y,I,fe)])})}),R(Gt(fe),function(S){var y=fe[S];if(typeof y=="function"){for(var I=Ir.length;I--;)if(Ir[I][0]==S)return;y.convert=yu(S,y),Ir.push([S,y])}}),R(Ir,function(S){fe[S[0]]=S[1]}),fe.convert=aI,fe.placeholder=fe,R(Gt(fe),function(S){R(J.realToAlias[S]||[],function(y){fe[y]=fe[S]})}),fe}Vf.exports=Bs});var Ms=u((rj,Yf)=>{"use strict";var bO=ft(),IO=ne(),SO=bO(IO,"WeakMap");Yf.exports=SO});var Gs=u((aj,zf)=>{"use strict";var Hf=Ms(),wO=Hf&&new Hf;zf.exports=wO});var ks=u((nj,Xf)=>{"use strict";var vO=Kr(),Jf=Gs(),TO=Jf?function(e,t){return Jf.set(e,t),e}:vO;Xf.exports=TO});var Aa=u((oj,Zf)=>{"use strict";var EO=ra(),RO=ve();function xO(e){return function(){var t=arguments;switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3]);case 5:return new e(t[0],t[1],t[2],t[3],t[4]);case 6:return new e(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var r=EO(e.prototype),a=e.apply(r,t);return RO(a)?a:r}}Zf.exports=xO});var tm=u((sj,em)=>{"use strict";var _O=Aa(),OO=ne(),PO=1;function LO(e,t,r){var a=t&PO,n=_O(e);function o(){var s=this&&this!==OO&&this instanceof o?n:e;return s.apply(a?r:this,arguments)}return o}em.exports=LO});var Fs=u((ij,rm)=>{"use strict";var CO=Math.max;function qO(e,t,r,a){for(var n=-1,o=e.length,s=r.length,i=-1,p=t.length,f=CO(o-s,0),m=Array(p+f),g=!a;++i<p;)m[i]=t[i];for(;++n<s;)(g||n<o)&&(m[r[n]]=e[n]);for(;f--;)m[i++]=e[n++];return m}rm.exports=qO});var Qs=u((uj,am)=>{"use strict";var UO=Math.max;function DO(e,t,r,a){for(var n=-1,o=e.length,s=-1,i=r.length,p=-1,f=t.length,m=UO(o-i,0),g=Array(m+f),h=!a;++n<m;)g[n]=e[n];for(var b=n;++p<f;)g[b+p]=t[p];for(;++s<i;)(h||n<o)&&(g[b+r[s]]=e[n++]);return g}am.exports=DO});var om=u((pj,nm)=>{"use strict";function NO(e,t){for(var r=e.length,a=0;r--;)e[r]===t&&++a;return a}nm.exports=NO});var vn=u((cj,sm)=>{"use strict";function BO(){}sm.exports=BO});var En=u((lj,im)=>{"use strict";var MO=ra(),GO=vn(),kO=4294967295;function Tn(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=kO,this.__views__=[]}Tn.prototype=MO(GO.prototype);Tn.prototype.constructor=Tn;im.exports=Tn});var Ws=u((dj,pm)=>{"use strict";var um=Gs(),FO=To(),QO=um?function(e){return um.get(e)}:FO;pm.exports=QO});var lm=u((fj,cm)=>{"use strict";var jO={};cm.exports=jO});var mm=u((mj,fm)=>{"use strict";var dm=lm(),WO=Object.prototype,$O=WO.hasOwnProperty;function VO(e){for(var t=e.name+"",r=dm[t],a=$O.call(dm,t)?r.length:0;a--;){var n=r[a],o=n.func;if(o==null||o==e)return n.name}return t}fm.exports=VO});var $s=u((gj,gm)=>{"use strict";var KO=ra(),YO=vn();function Rn(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}Rn.prototype=KO(YO.prototype);Rn.prototype.constructor=Rn;gm.exports=Rn});var ym=u((hj,hm)=>{"use strict";var HO=En(),zO=$s(),JO=Zt();function XO(e){if(e instanceof HO)return e.clone();var t=new zO(e.__wrapped__,e.__chain__);return t.__actions__=JO(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}hm.exports=XO});var Im=u((yj,bm)=>{"use strict";var ZO=En(),Am=$s(),eP=vn(),tP=ee(),rP=ge(),aP=ym(),nP=Object.prototype,oP=nP.hasOwnProperty;function xn(e){if(rP(e)&&!tP(e)&&!(e instanceof ZO)){if(e instanceof Am)return e;if(oP.call(e,"__wrapped__"))return aP(e)}return new Am(e)}xn.prototype=eP.prototype;xn.prototype.constructor=xn;bm.exports=xn});var wm=u((Aj,Sm)=>{"use strict";var sP=En(),iP=Ws(),uP=mm(),pP=Im();function cP(e){var t=uP(e),r=pP[t];if(typeof r!="function"||!(t in sP.prototype))return!1;if(e===r)return!0;var a=iP(r);return!!a&&e===a[0]}Sm.exports=cP});var Vs=u((bj,vm)=>{"use strict";var lP=ks(),dP=Ao(),fP=dP(lP);vm.exports=fP});var Em=u((Ij,Tm)=>{"use strict";var mP=/\{\n\/\* \[wrapped with (.+)\] \*/,gP=/,? & /;function hP(e){var t=e.match(mP);return t?t[1].split(gP):[]}Tm.exports=hP});var xm=u((Sj,Rm)=>{"use strict";var yP=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function AP(e,t){var r=t.length;if(!r)return e;var a=r-1;return t[a]=(r>1?"& ":"")+t[a],t=t.join(r>2?", ":" "),e.replace(yP,`{
|
|
2
2
|
/* [wrapped with `+t+`] */
|
|
3
|
-
`)}xm.exports=bP});var _n=u((vj,Om)=>{"use strict";function IP(e,t){for(var r=-1,a=e==null?0:e.length;++r<a&&t(e[r],r,e)!==!1;);return e}Om.exports=IP});var Lm=u((Tj,Pm)=>{"use strict";var SP=_n(),wP=So(),vP=1,TP=2,EP=8,RP=16,xP=32,_P=64,OP=128,PP=256,LP=512,CP=[["ary",OP],["bind",vP],["bindKey",TP],["curry",EP],["curryRight",RP],["flip",LP],["partial",xP],["partialRight",_P],["rearg",PP]];function qP(e,t){return SP(CP,function(r){var a="_."+r[0];t&r[1]&&!wP(e,a)&&e.push(a)}),e.sort()}Pm.exports=qP});var Ys=u((Ej,Cm)=>{"use strict";var UP=Rm(),DP=_m(),NP=Ka(),BP=Lm();function MP(e,t,r){var a=t+"";return NP(e,DP(a,BP(UP(a),r)))}Cm.exports=MP});var Hs=u((Rj,Dm)=>{"use strict";var GP=vm(),kP=Ks(),FP=Ys(),QP=1,jP=2,WP=4,$P=8,qm=32,Um=64;function VP(e,t,r,a,n,o,s,i,p,f){var m=t&$P,g=m?s:void 0,h=m?void 0:s,b=m?o:void 0,E=m?void 0:o;t|=m?qm:Um,t&=~(m?Um:qm),t&WP||(t&=~(QP|jP));var L=[e,t,n,b,g,E,h,i,p,f],_=r.apply(void 0,L);return GP(e)&&kP(_,L),_.placeholder=a,FP(_,e,t)}Dm.exports=VP});var zs=u((xj,Nm)=>{"use strict";function KP(e){var t=e;return t.placeholder}Nm.exports=KP});var Mm=u((_j,Bm)=>{"use strict";var YP=er(),HP=ua(),zP=Math.min;function JP(e,t){for(var r=e.length,a=zP(t.length,r),n=YP(e);a--;){var o=t[a];e[a]=HP(o,r)?n[o]:void 0}return e}Bm.exports=JP});var On=u((Oj,km)=>{"use strict";var Gm="__lodash_placeholder__";function XP(e,t){for(var r=-1,a=e.length,n=0,o=[];++r<a;){var s=e[r];(s===t||s===Gm)&&(e[r]=Gm,o[n++]=r)}return o}km.exports=XP});var Js=u((Pj,jm)=>{"use strict";var ZP=Qs(),eL=Ws(),tL=sm(),Fm=ba(),rL=Hs(),aL=zs(),nL=Mm(),oL=On(),sL=ne(),iL=1,uL=2,pL=8,cL=16,lL=128,dL=512;function Qm(e,t,r,a,n,o,s,i,p,f){var m=t&lL,g=t&iL,h=t&uL,b=t&(pL|cL),E=t&dL,L=h?void 0:Fm(e);function _(){for(var R=arguments.length,B=Array(R),st=R;st--;)B[st]=arguments[st];if(b)var be=aL(_),it=tL(B,be);if(a&&(B=ZP(B,a,n,b)),o&&(B=eL(B,o,s,b)),R-=it,b&&R<f){var kt=oL(B,be);return rL(e,t,Qm,_.placeholder,r,B,kt,i,p,f-R)}var br=g?r:this,Ir=h?br[e]:e;return R=B.length,i?B=nL(B,i):E&&R>1&&B.reverse(),m&&p<R&&(B.length=p),this&&this!==sL&&this instanceof _&&(Ir=L||Fm(Ir)),Ir.apply(br,B)}return _}jm.exports=Qm});var $m=u((Lj,Wm)=>{"use strict";var fL=Va(),mL=ba(),gL=Js(),hL=Hs(),yL=zs(),AL=On(),bL=ne();function IL(e,t,r){var a=mL(e);function n(){for(var o=arguments.length,s=Array(o),i=o,p=yL(n);i--;)s[i]=arguments[i];var f=o<3&&s[0]!==p&&s[o-1]!==p?[]:AL(s,p);if(o-=f.length,o<r)return hL(e,t,gL,n.placeholder,void 0,s,f,void 0,void 0,r-o);var m=this&&this!==bL&&this instanceof n?a:e;return fL(m,this,s)}return n}Wm.exports=IL});var Km=u((Cj,Vm)=>{"use strict";var SL=Va(),wL=ba(),vL=ne(),TL=1;function EL(e,t,r,a){var n=t&TL,o=wL(e);function s(){for(var i=-1,p=arguments.length,f=-1,m=a.length,g=Array(m+p),h=this&&this!==vL&&this instanceof s?o:e;++f<m;)g[f]=a[f];for(;p--;)g[f++]=arguments[++i];return SL(h,n?r:this,g)}return s}Vm.exports=EL});var Zm=u((qj,Xm)=>{"use strict";var RL=Qs(),xL=Ws(),Ym=On(),Hm="__lodash_placeholder__",Xs=1,_L=2,OL=4,zm=8,Ia=128,Jm=256,PL=Math.min;function LL(e,t){var r=e[1],a=t[1],n=r|a,o=n<(Xs|_L|Ia),s=a==Ia&&r==zm||a==Ia&&r==Jm&&e[7].length<=t[8]||a==(Ia|Jm)&&t[7].length<=t[8]&&r==zm;if(!(o||s))return e;a&Xs&&(e[2]=t[2],n|=r&Xs?0:OL);var i=t[3];if(i){var p=e[3];e[3]=p?RL(p,i,t[4]):i,e[4]=p?Ym(e[3],Hm):t[4]}return i=t[5],i&&(p=e[5],e[5]=p?xL(p,i,t[6]):i,e[6]=p?Ym(e[5],Hm):t[6]),i=t[7],i&&(e[7]=i),a&Ia&&(e[8]=e[8]==null?t[8]:PL(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=n,e}Xm.exports=LL});var tg=u((Uj,eg)=>{"use strict";var CL=/\s/;function qL(e){for(var t=e.length;t--&&CL.test(e.charAt(t)););return t}eg.exports=qL});var ag=u((Dj,rg)=>{"use strict";var UL=tg(),DL=/^\s+/;function NL(e){return e&&e.slice(0,UL(e)+1).replace(DL,"")}rg.exports=NL});var dr=u((Nj,ng)=>{"use strict";var BL=dt(),ML=ge(),GL="[object Symbol]";function kL(e){return typeof e=="symbol"||ML(e)&&BL(e)==GL}ng.exports=kL});var ug=u((Bj,ig)=>{"use strict";var FL=ag(),og=ve(),QL=dr(),sg=0/0,jL=/^[-+]0x[0-9a-f]+$/i,WL=/^0b[01]+$/i,$L=/^0o[0-7]+$/i,VL=parseInt;function KL(e){if(typeof e=="number")return e;if(QL(e))return sg;if(og(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=og(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=FL(e);var r=WL.test(e);return r||$L.test(e)?VL(e.slice(2),r?2:8):jL.test(e)?sg:+e}ig.exports=KL});var lg=u((Mj,cg)=>{"use strict";var YL=ug(),pg=1/0,HL=17976931348623157e292;function zL(e){if(!e)return e===0?e:0;if(e=YL(e),e===pg||e===-pg){var t=e<0?-1:1;return t*HL}return e===e?e:0}cg.exports=zL});var Zs=u((Gj,dg)=>{"use strict";var JL=lg();function XL(e){var t=JL(e),r=t%1;return t===t?r?t-r:t:0}dg.exports=XL});var Pn=u((kj,yg)=>{"use strict";var ZL=Fs(),eC=rm(),tC=$m(),rC=Js(),aC=Km(),nC=$s(),oC=Zm(),sC=Ks(),iC=Ys(),fg=Zs(),uC="Expected a function",mg=1,pC=2,ei=8,ti=16,ri=32,gg=64,hg=Math.max;function cC(e,t,r,a,n,o,s,i){var p=t&pC;if(!p&&typeof e!="function")throw new TypeError(uC);var f=a?a.length:0;if(f||(t&=~(ri|gg),a=n=void 0),s=s===void 0?s:hg(fg(s),0),i=i===void 0?i:fg(i),f-=n?n.length:0,t&gg){var m=a,g=n;a=n=void 0}var h=p?void 0:nC(e),b=[e,t,r,a,n,m,g,o,s,i];if(h&&oC(b,h),e=b[0],t=b[1],r=b[2],a=b[3],n=b[4],i=b[9]=b[9]===void 0?p?0:e.length:hg(b[9]-f,0),!i&&t&(ei|ti)&&(t&=~(ei|ti)),!t||t==mg)var E=eC(e,t,r);else t==ei||t==ti?E=tC(e,t,i):(t==ri||t==(mg|ri))&&!n.length?E=aC(e,t,r,a):E=rC.apply(void 0,b);var L=h?ZL:sC;return iC(L(E,b),e,t)}yg.exports=cC});var bg=u((Fj,Ag)=>{"use strict";var lC=Pn(),dC=128;function fC(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,lC(e,dC,void 0,void 0,void 0,void 0,t)}Ag.exports=fC});var Sg=u((Qj,Ig)=>{"use strict";var mC=Co(),gC=mC(Object.keys,Object);Ig.exports=gC});var ai=u((jj,wg)=>{"use strict";var hC=tn(),yC=Sg(),AC=Object.prototype,bC=AC.hasOwnProperty;function IC(e){if(!hC(e))return yC(e);var t=[];for(var r in Object(e))bC.call(e,r)&&r!="constructor"&&t.push(r);return t}wg.exports=IC});var fr=u((Wj,vg)=>{"use strict";var SC=Mo(),wC=ai(),vC=Jt();function TC(e){return vC(e)?SC(e):wC(e)}vg.exports=TC});var ni=u(($j,Tg)=>{"use strict";var EC=ar(),RC=fr();function xC(e,t){return e&&EC(t,RC(t),e)}Tg.exports=xC});var Rg=u((Vj,Eg)=>{"use strict";var _C=ar(),OC=nr();function PC(e,t){return e&&_C(t,OC(t),e)}Eg.exports=PC});var _g=u((Kj,xg)=>{"use strict";function LC(e,t){for(var r=-1,a=e==null?0:e.length,n=0,o=[];++r<a;){var s=e[r];t(s,r,e)&&(o[n++]=s)}return o}xg.exports=LC});var oi=u((Yj,Og)=>{"use strict";function CC(){return[]}Og.exports=CC});var Ln=u((Hj,Lg)=>{"use strict";var qC=_g(),UC=oi(),DC=Object.prototype,NC=DC.propertyIsEnumerable,Pg=Object.getOwnPropertySymbols,BC=Pg?function(e){return e==null?[]:(e=Object(e),qC(Pg(e),function(t){return NC.call(e,t)}))}:UC;Lg.exports=BC});var qg=u((zj,Cg)=>{"use strict";var MC=ar(),GC=Ln();function kC(e,t){return MC(e,GC(e),t)}Cg.exports=kC});var si=u((Jj,Ug)=>{"use strict";var FC=$a(),QC=en(),jC=Ln(),WC=oi(),$C=Object.getOwnPropertySymbols,VC=$C?function(e){for(var t=[];e;)FC(t,jC(e)),e=QC(e);return t}:WC;Ug.exports=VC});var Ng=u((Xj,Dg)=>{"use strict";var KC=ar(),YC=si();function HC(e,t){return KC(e,YC(e),t)}Dg.exports=HC});var ii=u((Zj,Bg)=>{"use strict";var zC=$a(),JC=ee();function XC(e,t,r){var a=t(e);return JC(e)?a:zC(a,r(e))}Bg.exports=XC});var ui=u((eW,Mg)=>{"use strict";var ZC=ii(),eq=Ln(),tq=fr();function rq(e){return ZC(e,tq,eq)}Mg.exports=rq});var kg=u((tW,Gg)=>{"use strict";var aq=ii(),nq=si(),oq=nr();function sq(e){return aq(e,oq,nq)}Gg.exports=sq});var Qg=u((rW,Fg)=>{"use strict";var iq=ft(),uq=ne(),pq=iq(uq,"DataView");Fg.exports=pq});var Wg=u((aW,jg)=>{"use strict";var cq=ft(),lq=ne(),dq=cq(lq,"Promise");jg.exports=dq});var gr=u((nW,Jg)=>{"use strict";var pi=Qg(),ci=Ya(),li=Wg(),di=vo(),fi=Gs(),zg=dt(),mr=ho(),$g="[object Map]",fq="[object Object]",Vg="[object Promise]",Kg="[object Set]",Yg="[object WeakMap]",Hg="[object DataView]",mq=mr(pi),gq=mr(ci),hq=mr(li),yq=mr(di),Aq=mr(fi),Dt=zg;(pi&&Dt(new pi(new ArrayBuffer(1)))!=Hg||ci&&Dt(new ci)!=$g||li&&Dt(li.resolve())!=Vg||di&&Dt(new di)!=Kg||fi&&Dt(new fi)!=Yg)&&(Dt=function(e){var t=zg(e),r=t==fq?e.constructor:void 0,a=r?mr(r):"";if(a)switch(a){case mq:return Hg;case gq:return $g;case hq:return Vg;case yq:return Kg;case Aq:return Yg}return t});Jg.exports=Dt});var Zg=u((oW,Xg)=>{"use strict";var bq=Object.prototype,Iq=bq.hasOwnProperty;function Sq(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&Iq.call(e,"index")&&(r.index=e.index,r.input=e.input),r}Xg.exports=Sq});var th=u((sW,eh)=>{"use strict";var wq=Za();function vq(e,t){var r=t?wq(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}eh.exports=vq});var ah=u((iW,rh)=>{"use strict";var Tq=/\w*$/;function Eq(e){var t=new e.constructor(e.source,Tq.exec(e));return t.lastIndex=e.lastIndex,t}rh.exports=Eq});var uh=u((uW,ih)=>{"use strict";var nh=Rt(),oh=nh?nh.prototype:void 0,sh=oh?oh.valueOf:void 0;function Rq(e){return sh?Object(sh.call(e)):{}}ih.exports=Rq});var ch=u((pW,ph)=>{"use strict";var xq=Za(),_q=th(),Oq=ah(),Pq=uh(),Lq=Lo(),Cq="[object Boolean]",qq="[object Date]",Uq="[object Map]",Dq="[object Number]",Nq="[object RegExp]",Bq="[object Set]",Mq="[object String]",Gq="[object Symbol]",kq="[object ArrayBuffer]",Fq="[object DataView]",Qq="[object Float32Array]",jq="[object Float64Array]",Wq="[object Int8Array]",$q="[object Int16Array]",Vq="[object Int32Array]",Kq="[object Uint8Array]",Yq="[object Uint8ClampedArray]",Hq="[object Uint16Array]",zq="[object Uint32Array]";function Jq(e,t,r){var a=e.constructor;switch(t){case kq:return xq(e);case Cq:case qq:return new a(+e);case Fq:return _q(e,r);case Qq:case jq:case Wq:case $q:case Vq:case Kq:case Yq:case Hq:case zq:return Lq(e,r);case Uq:return new a;case Dq:case Mq:return new a(e);case Nq:return Oq(e);case Bq:return new a;case Gq:return Pq(e)}}ph.exports=Jq});var dh=u((cW,lh)=>{"use strict";var Xq=gr(),Zq=ge(),eU="[object Map]";function tU(e){return Zq(e)&&Xq(e)==eU}lh.exports=tU});var hh=u((lW,gh)=>{"use strict";var rU=dh(),aU=rn(),fh=an(),mh=fh&&fh.isMap,nU=mh?aU(mh):rU;gh.exports=nU});var Ah=u((dW,yh)=>{"use strict";var oU=gr(),sU=ge(),iU="[object Set]";function uU(e){return sU(e)&&oU(e)==iU}yh.exports=uU});var wh=u((fW,Sh)=>{"use strict";var pU=Ah(),cU=rn(),bh=an(),Ih=bh&&bh.isSet,lU=Ih?cU(Ih):pU;Sh.exports=lU});var mi=u((mW,Rh)=>{"use strict";var dU=ea(),fU=_n(),mU=Bo(),gU=ni(),hU=Rg(),yU=Oo(),AU=er(),bU=qg(),IU=Ng(),SU=ui(),wU=kg(),vU=gr(),TU=Zg(),EU=ch(),RU=qo(),xU=ee(),_U=oa(),OU=hh(),PU=ve(),LU=wh(),CU=fr(),qU=nr(),UU=1,DU=2,NU=4,vh="[object Arguments]",BU="[object Array]",MU="[object Boolean]",GU="[object Date]",kU="[object Error]",Th="[object Function]",FU="[object GeneratorFunction]",QU="[object Map]",jU="[object Number]",Eh="[object Object]",WU="[object RegExp]",$U="[object Set]",VU="[object String]",KU="[object Symbol]",YU="[object WeakMap]",HU="[object ArrayBuffer]",zU="[object DataView]",JU="[object Float32Array]",XU="[object Float64Array]",ZU="[object Int8Array]",eD="[object Int16Array]",tD="[object Int32Array]",rD="[object Uint8Array]",aD="[object Uint8ClampedArray]",nD="[object Uint16Array]",oD="[object Uint32Array]",U={};U[vh]=U[BU]=U[HU]=U[zU]=U[MU]=U[GU]=U[JU]=U[XU]=U[ZU]=U[eD]=U[tD]=U[QU]=U[jU]=U[Eh]=U[WU]=U[$U]=U[VU]=U[KU]=U[rD]=U[aD]=U[nD]=U[oD]=!0;U[kU]=U[Th]=U[YU]=!1;function Cn(e,t,r,a,n,o){var s,i=t&UU,p=t&DU,f=t&NU;if(r&&(s=n?r(e,a,n,o):r(e)),s!==void 0)return s;if(!PU(e))return e;var m=xU(e);if(m){if(s=TU(e),!i)return AU(e,s)}else{var g=vU(e),h=g==Th||g==FU;if(_U(e))return yU(e,i);if(g==Eh||g==vh||h&&!n){if(s=p||h?{}:RU(e),!i)return p?IU(e,hU(s,e)):bU(e,gU(s,e))}else{if(!U[g])return n?e:{};s=EU(e,g,i)}}o||(o=new dU);var b=o.get(e);if(b)return b;o.set(e,s),LU(e)?e.forEach(function(_){s.add(Cn(_,t,r,_,e,o))}):OU(e)&&e.forEach(function(_,R){s.set(R,Cn(_,t,r,R,e,o))});var E=f?p?wU:SU:p?qU:CU,L=m?void 0:E(e);return fU(L||e,function(_,R){L&&(R=_,_=e[R]),mU(s,R,Cn(_,t,r,R,e,o))}),s}Rh.exports=Cn});var _h=u((gW,xh)=>{"use strict";var sD=mi(),iD=4;function uD(e){return sD(e,iD)}xh.exports=uD});var Ph=u((hW,Oh)=>{"use strict";var pD=Pn(),cD=8;function gi(e,t,r){t=r?void 0:t;var a=pD(e,cD,void 0,void 0,void 0,void 0,void 0,t);return a.placeholder=gi.placeholder,a}gi.placeholder={};Oh.exports=gi});var Ch=u((yW,Lh)=>{"use strict";var lD=dt(),dD=ge(),fD=Uo(),mD="[object DOMException]",gD="[object Error]";function hD(e){if(!dD(e))return!1;var t=lD(e);return t==gD||t==mD||typeof e.message=="string"&&typeof e.name=="string"&&!fD(e)}Lh.exports=hD});var Uh=u((AW,qh)=>{"use strict";var yD=gr(),AD=ge(),bD="[object WeakMap]";function ID(e){return AD(e)&&yD(e)==bD}qh.exports=ID});var Nh=u((bW,Dh)=>{"use strict";function SD(e,t){for(var r=-1,a=e==null?0:e.length;++r<a;)if(t(e[r],r,e))return!0;return!1}Dh.exports=SD});var hi=u((IW,Bh)=>{"use strict";var wD=Io(),vD=Nh(),TD=wo(),ED=1,RD=2;function xD(e,t,r,a,n,o){var s=r&ED,i=e.length,p=t.length;if(i!=p&&!(s&&p>i))return!1;var f=o.get(e),m=o.get(t);if(f&&m)return f==t&&m==e;var g=-1,h=!0,b=r&RD?new wD:void 0;for(o.set(e,t),o.set(t,e);++g<i;){var E=e[g],L=t[g];if(a)var _=s?a(L,E,g,t,e,o):a(E,L,g,e,t,o);if(_!==void 0){if(_)continue;h=!1;break}if(b){if(!vD(t,function(R,B){if(!TD(b,B)&&(E===R||n(E,R,r,a,o)))return b.push(B)})){h=!1;break}}else if(!(E===L||n(E,L,r,a,o))){h=!1;break}}return o.delete(e),o.delete(t),h}Bh.exports=xD});var Gh=u((SW,Mh)=>{"use strict";function _D(e){var t=-1,r=Array(e.size);return e.forEach(function(a,n){r[++t]=[n,a]}),r}Mh.exports=_D});var Wh=u((wW,jh)=>{"use strict";var kh=Rt(),Fh=Po(),OD=Yt(),PD=hi(),LD=Gh(),CD=Ja(),qD=1,UD=2,DD="[object Boolean]",ND="[object Date]",BD="[object Error]",MD="[object Map]",GD="[object Number]",kD="[object RegExp]",FD="[object Set]",QD="[object String]",jD="[object Symbol]",WD="[object ArrayBuffer]",$D="[object DataView]",Qh=kh?kh.prototype:void 0,yi=Qh?Qh.valueOf:void 0;function VD(e,t,r,a,n,o,s){switch(r){case $D:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case WD:return!(e.byteLength!=t.byteLength||!o(new Fh(e),new Fh(t)));case DD:case ND:case GD:return OD(+e,+t);case BD:return e.name==t.name&&e.message==t.message;case kD:case QD:return e==t+"";case MD:var i=LD;case FD:var p=a&qD;if(i||(i=CD),e.size!=t.size&&!p)return!1;var f=s.get(e);if(f)return f==t;a|=UD,s.set(e,t);var m=PD(i(e),i(t),a,n,o,s);return s.delete(e),m;case jD:if(yi)return yi.call(e)==yi.call(t)}return!1}jh.exports=VD});var Kh=u((vW,Vh)=>{"use strict";var $h=ui(),KD=1,YD=Object.prototype,HD=YD.hasOwnProperty;function zD(e,t,r,a,n,o){var s=r&KD,i=$h(e),p=i.length,f=$h(t),m=f.length;if(p!=m&&!s)return!1;for(var g=p;g--;){var h=i[g];if(!(s?h in t:HD.call(t,h)))return!1}var b=o.get(e),E=o.get(t);if(b&&E)return b==t&&E==e;var L=!0;o.set(e,t),o.set(t,e);for(var _=s;++g<p;){h=i[g];var R=e[h],B=t[h];if(a)var st=s?a(B,R,h,t,e,o):a(R,B,h,e,t,o);if(!(st===void 0?R===B||n(R,B,r,a,o):st)){L=!1;break}_||(_=h=="constructor")}if(L&&!_){var be=e.constructor,it=t.constructor;be!=it&&"constructor"in e&&"constructor"in t&&!(typeof be=="function"&&be instanceof be&&typeof it=="function"&&it instanceof it)&&(L=!1)}return o.delete(e),o.delete(t),L}Vh.exports=zD});var ty=u((TW,ey)=>{"use strict";var Ai=ea(),JD=hi(),XD=Wh(),ZD=Kh(),Yh=gr(),Hh=ee(),zh=oa(),eN=nn(),tN=1,Jh="[object Arguments]",Xh="[object Array]",qn="[object Object]",rN=Object.prototype,Zh=rN.hasOwnProperty;function aN(e,t,r,a,n,o){var s=Hh(e),i=Hh(t),p=s?Xh:Yh(e),f=i?Xh:Yh(t);p=p==Jh?qn:p,f=f==Jh?qn:f;var m=p==qn,g=f==qn,h=p==f;if(h&&zh(e)){if(!zh(t))return!1;s=!0,m=!1}if(h&&!m)return o||(o=new Ai),s||eN(e)?JD(e,t,r,a,n,o):XD(e,t,p,r,a,n,o);if(!(r&tN)){var b=m&&Zh.call(e,"__wrapped__"),E=g&&Zh.call(t,"__wrapped__");if(b||E){var L=b?e.value():e,_=E?t.value():t;return o||(o=new Ai),n(L,_,r,a,o)}}return h?(o||(o=new Ai),ZD(e,t,r,a,n,o)):!1}ey.exports=aN});var bi=u((EW,ny)=>{"use strict";var nN=ty(),ry=ge();function ay(e,t,r,a,n){return e===t?!0:e==null||t==null||!ry(e)&&!ry(t)?e!==e&&t!==t:nN(e,t,r,a,ay,n)}ny.exports=ay});var sy=u((RW,oy)=>{"use strict";var oN=ea(),sN=bi(),iN=1,uN=2;function pN(e,t,r,a){var n=r.length,o=n,s=!a;if(e==null)return!o;for(e=Object(e);n--;){var i=r[n];if(s&&i[2]?i[1]!==e[i[0]]:!(i[0]in e))return!1}for(;++n<o;){i=r[n];var p=i[0],f=e[p],m=i[1];if(s&&i[2]){if(f===void 0&&!(p in e))return!1}else{var g=new oN;if(a)var h=a(f,m,p,e,t,g);if(!(h===void 0?sN(m,f,iN|uN,a,g):h))return!1}}return!0}oy.exports=pN});var Ii=u((xW,iy)=>{"use strict";var cN=ve();function lN(e){return e===e&&!cN(e)}iy.exports=lN});var py=u((_W,uy)=>{"use strict";var dN=Ii(),fN=fr();function mN(e){for(var t=fN(e),r=t.length;r--;){var a=t[r],n=e[a];t[r]=[a,n,dN(n)]}return t}uy.exports=mN});var Si=u((OW,cy)=>{"use strict";function gN(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}cy.exports=gN});var dy=u((PW,ly)=>{"use strict";var hN=sy(),yN=py(),AN=Si();function bN(e){var t=yN(e);return t.length==1&&t[0][2]?AN(t[0][0],t[0][1]):function(r){return r===e||hN(r,e,t)}}ly.exports=bN});var Un=u((LW,fy)=>{"use strict";var IN=ee(),SN=dr(),wN=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,vN=/^\w*$/;function TN(e,t){if(IN(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||SN(e)?!0:vN.test(e)||!wN.test(e)||t!=null&&e in Object(t)}fy.exports=TN});var hy=u((CW,gy)=>{"use strict";var my=Ha(),EN="Expected a function";function wi(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(EN);var r=function(){var a=arguments,n=t?t.apply(this,a):a[0],o=r.cache;if(o.has(n))return o.get(n);var s=e.apply(this,a);return r.cache=o.set(n,s)||o,s};return r.cache=new(wi.Cache||my),r}wi.Cache=my;gy.exports=wi});var Ay=u((qW,yy)=>{"use strict";var RN=hy(),xN=500;function _N(e){var t=RN(e,function(a){return r.size===xN&&r.clear(),a}),r=t.cache;return t}yy.exports=_N});var vi=u((UW,by)=>{"use strict";var ON=Ay(),PN=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,LN=/\\(\\)?/g,CN=ON(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(PN,function(r,a,n,o){t.push(n?o.replace(LN,"$1"):a||r)}),t});by.exports=CN});var Ti=u((DW,Iy)=>{"use strict";function qN(e,t){for(var r=-1,a=e==null?0:e.length,n=Array(a);++r<a;)n[r]=t(e[r],r,e);return n}Iy.exports=qN});var Ry=u((NW,Ey)=>{"use strict";var Sy=Rt(),UN=Ti(),DN=ee(),NN=dr(),BN=1/0,wy=Sy?Sy.prototype:void 0,vy=wy?wy.toString:void 0;function Ty(e){if(typeof e=="string")return e;if(DN(e))return UN(e,Ty)+"";if(NN(e))return vy?vy.call(e):"";var t=e+"";return t=="0"&&1/e==-BN?"-0":t}Ey.exports=Ty});var Ei=u((BW,xy)=>{"use strict";var MN=Ry();function GN(e){return e==null?"":MN(e)}xy.exports=GN});var Ri=u((MW,_y)=>{"use strict";var kN=ee(),FN=Un(),QN=vi(),jN=Ei();function WN(e,t){return kN(e)?e:FN(e,t)?[e]:QN(jN(e))}_y.exports=WN});var hr=u((GW,Oy)=>{"use strict";var $N=dr(),VN=1/0;function KN(e){if(typeof e=="string"||$N(e))return e;var t=e+"";return t=="0"&&1/e==-VN?"-0":t}Oy.exports=KN});var xi=u((kW,Py)=>{"use strict";var YN=Ri(),HN=hr();function zN(e,t){t=YN(t,e);for(var r=0,a=t.length;e!=null&&r<a;)e=e[HN(t[r++])];return r&&r==a?e:void 0}Py.exports=zN});var Cy=u((FW,Ly)=>{"use strict";var JN=xi();function XN(e,t,r){var a=e==null?void 0:JN(e,t);return a===void 0?r:a}Ly.exports=XN});var Uy=u((QW,qy)=>{"use strict";function ZN(e,t){return e!=null&&t in Object(e)}qy.exports=ZN});var Ny=u((jW,Dy)=>{"use strict";var eB=Ri(),tB=Kr(),rB=ee(),aB=ua(),nB=Xa(),oB=hr();function sB(e,t,r){t=eB(t,e);for(var a=-1,n=t.length,o=!1;++a<n;){var s=oB(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&&nB(n)&&aB(s,n)&&(rB(e)||tB(e)))}Dy.exports=sB});var My=u((WW,By)=>{"use strict";var iB=Uy(),uB=Ny();function pB(e,t){return e!=null&&uB(e,t,iB)}By.exports=pB});var ky=u(($W,Gy)=>{"use strict";var cB=bi(),lB=Cy(),dB=My(),fB=Un(),mB=Ii(),gB=Si(),hB=hr(),yB=1,AB=2;function bB(e,t){return fB(e)&&mB(t)?gB(hB(e),t):function(r){var a=lB(r,e);return a===void 0&&a===t?dB(r,e):cB(t,a,yB|AB)}}Gy.exports=bB});var Qy=u((VW,Fy)=>{"use strict";function IB(e){return function(t){return t?.[e]}}Fy.exports=IB});var Wy=u((KW,jy)=>{"use strict";var SB=xi();function wB(e){return function(t){return SB(t,e)}}jy.exports=wB});var Vy=u((YW,$y)=>{"use strict";var vB=Qy(),TB=Wy(),EB=Un(),RB=hr();function xB(e){return EB(e)?vB(RB(e)):TB(e)}$y.exports=xB});var _i=u((HW,Ky)=>{"use strict";var _B=dy(),OB=ky(),PB=Yr(),LB=ee(),CB=Vy();function qB(e){return typeof e=="function"?e:e==null?PB:typeof e=="object"?LB(e)?OB(e[0],e[1]):_B(e):CB(e)}Ky.exports=qB});var Hy=u((zW,Yy)=>{"use strict";var UB=mi(),DB=_i(),NB=1;function BB(e){return DB(typeof e=="function"?e:UB(e,NB))}Yy.exports=BB});var Jy=u((JW,zy)=>{"use strict";var MB=fo();function GB(e){var t=e==null?0:e.length;return t?MB(e,1):[]}zy.exports=GB});var Zy=u((XW,Xy)=>{"use strict";var kB=Jy(),FB=mo(),QB=Ka();function jB(e){return QB(FB(e,void 0,kB),e+"")}Xy.exports=jB});var tA=u((ZW,eA)=>{"use strict";var WB=Pn(),$B=Zy(),VB=256,KB=$B(function(e,t){return WB(e,VB,void 0,void 0,void 0,t)});eA.exports=KB});var aA=u((e$,rA)=>{"use strict";var YB=Ti(),HB=er(),zB=ee(),JB=dr(),XB=vi(),ZB=hr(),eM=Ei();function tM(e){return zB(e)?YB(e,ZB):JB(e)?[e]:HB(XB(eM(e)))}rA.exports=tM});var oA=u((t$,nA)=>{"use strict";nA.exports={ary:bg(),assign:ni(),clone:_h(),curry:Ph(),forEach:_n(),isArray:ee(),isError:Ch(),isFunction:Hr(),isWeakMap:Uh(),iteratee:Hy(),keys:ai(),rearg:tA(),toInteger:Zs(),toPath:aA()}});var iA=u((r$,sA)=>{"use strict";var rM=Yf(),aM=oA();function nM(e,t,r){return rM(aM,e,t,r)}sA.exports=nM});var Oi=u((a$,pA)=>{"use strict";var oM=iA(),uA=oM("merge",Go());uA.placeholder=Ds();pA.exports=uA});var pb=u((H$,ub)=>{"use strict";function EM(e,t,r,a){for(var n=-1,o=e==null?0:e.length;++n<o;){var s=e[n];t(a,s,r(s),e)}return a}ub.exports=EM});var lb=u((z$,cb)=>{"use strict";var RM=_o(),xM=fr();function _M(e,t){return e&&RM(e,t,xM)}cb.exports=_M});var mb=u((J$,fb)=>{"use strict";var OM=Jt();function PM(e,t){return function(r,a){if(r==null)return r;if(!OM(r))return e(r,a);for(var n=r.length,o=t?n:-1,s=Object(r);(t?o--:++o<n)&&a(s[o],o,s)!==!1;);return r}}fb.exports=PM});var hb=u((X$,gb)=>{"use strict";var LM=lb(),CM=mb(),qM=CM(LM);gb.exports=qM});var Ab=u((Z$,yb)=>{"use strict";var UM=hb();function DM(e,t,r,a){return UM(e,function(n,o,s){t(a,n,r(n),s)}),a}yb.exports=DM});var Ib=u((eV,bb)=>{"use strict";var NM=pb(),BM=Ab(),MM=_i(),GM=ee();function kM(e,t){return function(r,a){var n=GM(r)?NM:BM,o=t?t():{};return n(r,e,MM(a,2),o)}}bb.exports=kM});var wb=u((tV,Sb)=>{"use strict";var FM=ta(),QM=Ib(),jM=Object.prototype,WM=jM.hasOwnProperty,$M=QM(function(e,t,r){WM.call(e,r)?e[r].push(t):FM(e,r,[t])});Sb.exports=$M});var mG={};w(mG,{Method:()=>Vn,ai:()=>mu,api:()=>Wi,auditLogs:()=>ht,automations:()=>yn,backups:()=>Te,branding:()=>cn,constants:()=>Fr,environmentVariables:()=>$e,features:()=>Pe,groups:()=>Q,init:()=>Qf,licensing:()=>ke,logger:()=>Nt,mappers:()=>V,middleware:()=>Di,plugins:()=>An,publicApi:()=>Sn,quotas:()=>je,scimGroups:()=>yr,scimUsers:()=>de,sdk:()=>Li,users:()=>Ze,utils:()=>Vt});module.exports=fI(mG);var Vn=(o=>(o.POST="POST",o.GET="GET",o.PATCH="PATCH",o.DELETE="DELETE",o.PUT="PUT",o))(Vn||{});var Li={};w(Li,{ai:()=>rs,auditLogs:()=>ht,automations:()=>yn,backups:()=>Te,branding:()=>cn,environmentVariables:()=>$e,features:()=>Pe,groups:()=>Q,init:()=>Qf,licensing:()=>ke,logger:()=>Nt,plugins:()=>An,publicApi:()=>Sn,quotas:()=>je,scimGroups:()=>yr,scimUsers:()=>de,users:()=>Ze,utils:()=>Vt});var cn={};w(cn,{getBrandingConfig:()=>a_});var Pe={};w(Pe,{checkBackups:()=>he,checkFeature:()=>un,checkFeatures:()=>zo,checkSCIM:()=>es,isAppBuildersEnabled:()=>Pt,isAuditLogsEnabled:()=>pn,isBackupsEnabled:()=>Jo,isBrandingEnabled:()=>Xo,isEnforceableSSO:()=>tf,isExpandedPublicApiEnabled:()=>Je,isPWAEnabled:()=>Xx,isSSOEnforced:()=>Zx,isSyncAutomationsEnabled:()=>zx,isTriggerAutomationRunEnabled:()=>Jx,isUserGroupsEnabled:()=>Zo,isViewPermissionEnabled:()=>e_,isViewReadonlyColumnsEnabled:()=>t_});var oe=require("@budibase/types"),ze=require("@budibase/backend-core");var ke={};w(ke,{cache:()=>_e,client:()=>lt,features:()=>ja,getFreeLicense:()=>Ko,getLicense:()=>$o,getLicenseFromKey:()=>Vo,keys:()=>Ho,offline:()=>on,quotas:()=>Wa});var _e={};w(_e,{getCachedLicense:()=>Zd,invalidate:()=>ef,refresh:()=>xt});var Pa=require("@budibase/backend-core"),wr,mI=async()=>{wr=await Pa.RedisClient.init(Pa.redis.utils.Databases.LICENSES)},gI=async()=>{wr&&await wr.finish()};process.on("exit",async()=>{await gI()});var Kn=async()=>(wr||await mI(),wr);var lt={};w(lt,{activateLicenseKey:()=>io,getLicense:()=>Wt,getLicenseFromKey:()=>so,triggerQuota:()=>eS});var vu=C(require("node-fetch"));var Tu=require("@budibase/backend-core"),Yn=class{constructor(t){this.apiCall=t=>async(r="",a={})=>{a.headers||(a.headers={}),a.headers["Content-Type"]||(a.headers={"Content-Type":"application/json",Accept:"application/json",...a.headers});let n=a.headers["Content-Type"]==="application/json";Tu.logging.correlation.setHeader(a.headers);let o={method:t,body:n?JSON.stringify(a.body):a.body,headers:a.headers,credentials:"include"};return(0,vu.default)(`${this.host}${r}`,o)};this.post=this.apiCall("POST");this.get=this.apiCall("GET");this.patch=this.apiCall("PATCH");this.del=this.apiCall("DELETE");this.put=this.apiCall("PUT");this.host=t}},Hn=Yn;var ka=require("@budibase/types"),P=require("@budibase/backend-core");var Be={};w(Be,{bustCache:()=>Xn,getCurrentUsageValues:()=>Cu,getQuotaUsage:()=>wt,setAllUsage:()=>eo,setAppUsageValue:()=>Zn,setUsage:()=>Ou,setUsagePerApp:()=>Pu,utils:()=>Er});var re=require("@budibase/types"),pe=require("@budibase/backend-core");var Er={};w(Er,{generateBaseQuotaUsage:()=>La,generateNewMonthlyQuotas:()=>Tr,generateNewQuotaUsage:()=>Jn,getBreakdownName:()=>qa,getCurrentMonthString:()=>ut,getQuotaDocId:()=>vr,setCurrentMonth:()=>Ca,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,Eu=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},zn=e=>{e.quotaReset=Eu()},ut=()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},La=()=>({usageQuota:{[X.StaticQuotaName.APPS]:0,[X.StaticQuotaName.ROWS]:0,[X.StaticQuotaName.PLUGINS]:0,[X.StaticQuotaName.USERS]:0,[X.StaticQuotaName.CREATORS]:0,[X.StaticQuotaName.USER_GROUPS]:0,[X.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[ut()]:Tr()}}),Jn=()=>{let e={_id:vr(),quotaReset:Eu(),...La(),apps:{}};return Ca(e),e},Tr=()=>({[X.MonthlyQuotaName.QUERIES]:0,[X.MonthlyQuotaName.AUTOMATIONS]:0,[X.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,triggers:{}}),Ca=e=>{let t=ut();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=Tr()),e.monthly.current=e.monthly[t]},qa=(e,t)=>{if(!(!t||!e))switch(e){case X.MonthlyQuotaName.AUTOMATIONS:return X.BreakdownQuotaName.AUTOMATIONS;case X.MonthlyQuotaName.QUERIES:return St.db.isTableId(t)?X.BreakdownQuotaName.ROW_QUERIES:St.db.isDatasourceId(t)?X.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}};var Ru=pe.Duration.fromSeconds(60).toMs(),{Writethrough:xu}=pe.cache.writethrough;function yI(e){return delete e.usageLimits,delete e.usageQuota.automationRuns,delete e.usageQuota.emails,delete e.usageQuota.storage,delete e.usageQuota.views,delete e.usageQuota.publishedApps,delete e.usageQuota.developers,e}var Ua=()=>pe.tenancy.isSelfHostUsingCloud()?new xu(pe.tenancy.getSelfHostCloudDB(),Ru):new xu(pe.tenancy.getGlobalDB(),Ru);async function Xn(e=0){let r=Ua(),a=vr(),n=await r.tryGet(a);n&&n._rev&&await r.remove(a,n._rev).catch(async o=>{if(e<1)return await Xn(e+1);throw o})}var wt=async()=>{let e=Ua(),t=await e.tryGet(vr());if(!t){t=Jn();let{rev:r}=await e.put(t);t._rev=r}return Ca(t),zn(t),yI(t)},Ou=async(e,t,r)=>eo({name:t,type:r,values:{total:e}}),Pu=async(e,t,r)=>{let a=Ua(),n=await wt(),o=Object.values(e).reduce((i,p)=>i+p,0);for(let[i,p]of Object.entries(e))n=Lu(n,t,r,{total:o,app:p},{appId:i});let s=await a.put(n);return n._rev=s.rev,n},AI=(e,t,r,a)=>{let n=qa(t,r);if(!n||!a?.breakdown)return e;e.breakdown||(e.breakdown={}),e.breakdown[n]||(e.breakdown[n]={parent:t,values:{}});let o=e.breakdown[n];return o.values[r]=a.breakdown,e},Zn=(e,t,r,a={},n)=>{let o;try{o=pe.db.getProdAppID(a?.appId||pe.context.getAppId())}catch{}if(!o||!n.app||!re.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[o]||(e.apps={...e.apps,[o]:La()});let s=e.apps[o];switch(r){case re.QuotaUsageType.STATIC:s.usageQuota[t]=n.app;break;case re.QuotaUsageType.MONTHLY:{let i=ut(),p=t,f=s.monthly[i];f||(s.monthly[i]=Tr(),f=s.monthly[i]),f[p]=n.app,re.BREAKDOWN_QUOTA_NAMES.includes(p)&&a?.id&&(f=AI(f,p,a.id,n));break}}return e},_u=(e,t,r,a)=>{if(!re.APP_QUOTA_NAMES.includes(r))return{};let n;try{n=pe.db.getProdAppID(pe.context.getAppId())}catch{}if(!n||!e.apps||!e.apps[n])return{app:0};let o=e.apps[n];switch(t){case re.QuotaUsageType.STATIC:if(o.usageQuota?.[r])return{app:o.usageQuota[r]};break;case re.QuotaUsageType.MONTHLY:{let s=ut(),i=r;if(!o.monthly?.[s]?.[i])break;let p=o.monthly[s],f=p[i],m,g=qa(i,a);return g&&a&&p.breakdown?.[g]&&(m=p.breakdown[g]?.values[a]),{app:f,breakdown:m||0}}}return{app:0}},bI=(e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},II=(e,t,r,a)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),a&&(r.monthly[t].triggers[e]=a)},Lu=(e,t,r,a,n={})=>{if(r===re.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=a.total,bI(t,e,a.triggers);else if(r===re.QuotaUsageType.MONTHLY){t=t;let o=ut();e.monthly[o][t]=a.total,II(t,o,e,a.triggers)}else throw new Error(`Invalid usage type: ${r}`);return Zn(e,t,r,n,a)},eo=async e=>{let t=Array.isArray(e)?e:[e],r=Ua(),a=await wt();for(let o of t)a=Lu(a,o.name,o.type,o.values,o.opts);let n=await r.put(a,0);return a._rev=n.rev,a},Cu=async(e,t,r)=>{let a=await wt(),n=0,o={};switch(e){case re.QuotaUsageType.STATIC:if(a.usageQuota[t]){let s=t;n=a.usageQuota[s],o=_u(a,e,t,r)}break;case re.QuotaUsageType.MONTHLY:{let s=ut(),i=t;a.monthly[s][i]&&(n=a.monthly[s][i],o=_u(a,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return re.APP_QUOTA_NAMES.includes(t)&&!(o.app||o.breakdown)&&(o.app=o.app||0,o.breakdown=o.breakdown||0),{total:n,app:o.app,breakdown:o.breakdown}};var Se={};w(Se,{destroy:()=>vI,get:()=>to,save:()=>wI});var pt=require("@budibase/backend-core"),SI=()=>({_id:pt.StaticDatabases.GLOBAL.docs.licenseInfo}),wI=async e=>{let t=await to();t={...t,...e};let a=await pt.tenancy.getGlobalDB().put(t);return t._rev=a.rev,t},to=async()=>{let e=pt.tenancy.getGlobalDB();try{return await e.get(pt.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return SI();throw t}},vI=async()=>{let e=pt.tenancy.getGlobalDB(),t=await to();t&&t._rev&&await e.remove(pt.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)};var M={};w(M,{bulkSave:()=>DI,destroy:()=>NI,fetch:()=>LI,generateUserGroupID:()=>OI,get:()=>CI,getBulk:()=>qI,getByName:()=>ro,getGroupUsers:()=>Na,getGroupUsersParams:()=>Bu,getUserGroupsParams:()=>Nu,save:()=>UI});var D=require("@budibase/backend-core");var xe=require("@budibase/types"),Ft=require("@budibase/backend-core");async function qu(){let e=Ft.sql.designDoc.base("type");e.sql.tables={[xe.AUDIT_LOG_TYPE]:{fields:{appId:xe.SQLiteType.TEXT,event:xe.SQLiteType.TEXT,userId:xe.SQLiteType.TEXT,timestamp:xe.SQLiteType.TEXT,metadata:xe.SQLiteType.TEXT,name:xe.SQLiteType.TEXT,type:xe.SQLiteType.TEXT,fallback:xe.SQLiteType.TEXT}}};let t=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 Da=require("@budibase/backend-core"),{ViewName:TI,SEPARATOR:EI,DocumentType:RI,createView:xI}=Da.db,_I=RI.USER+EI;async function Uu(){let e=Da.tenancy.getGlobalDB(),t=`function(doc) {
|
|
4
|
-
if (doc._id.startsWith("${
|
|
3
|
+
`)}Rm.exports=AP});var _n=u((wj,_m)=>{"use strict";function bP(e,t){for(var r=-1,a=e==null?0:e.length;++r<a&&t(e[r],r,e)!==!1;);return e}_m.exports=bP});var Pm=u((vj,Om)=>{"use strict";var IP=_n(),SP=So(),wP=1,vP=2,TP=8,EP=16,RP=32,xP=64,_P=128,OP=256,PP=512,LP=[["ary",_P],["bind",wP],["bindKey",vP],["curry",TP],["curryRight",EP],["flip",PP],["partial",RP],["partialRight",xP],["rearg",OP]];function CP(e,t){return IP(LP,function(r){var a="_."+r[0];t&r[1]&&!SP(e,a)&&e.push(a)}),e.sort()}Om.exports=CP});var Ks=u((Tj,Lm)=>{"use strict";var qP=Em(),UP=xm(),DP=Va(),NP=Pm();function BP(e,t,r){var a=t+"";return DP(e,UP(a,NP(qP(a),r)))}Lm.exports=BP});var Ys=u((Ej,Um)=>{"use strict";var MP=wm(),GP=Vs(),kP=Ks(),FP=1,QP=2,jP=4,WP=8,Cm=32,qm=64;function $P(e,t,r,a,n,o,s,i,p,f){var m=t&WP,g=m?s:void 0,h=m?void 0:s,b=m?o:void 0,E=m?void 0:o;t|=m?Cm:qm,t&=~(m?qm:Cm),t&jP||(t&=~(FP|QP));var L=[e,t,n,b,g,E,h,i,p,f],_=r.apply(void 0,L);return MP(e)&&GP(_,L),_.placeholder=a,kP(_,e,t)}Um.exports=$P});var Hs=u((Rj,Dm)=>{"use strict";function VP(e){var t=e;return t.placeholder}Dm.exports=VP});var Bm=u((xj,Nm)=>{"use strict";var KP=Zt(),YP=ia(),HP=Math.min;function zP(e,t){for(var r=e.length,a=HP(t.length,r),n=KP(e);a--;){var o=t[a];e[a]=YP(o,r)?n[o]:void 0}return e}Nm.exports=zP});var On=u((_j,Gm)=>{"use strict";var Mm="__lodash_placeholder__";function JP(e,t){for(var r=-1,a=e.length,n=0,o=[];++r<a;){var s=e[r];(s===t||s===Mm)&&(e[r]=Mm,o[n++]=r)}return o}Gm.exports=JP});var zs=u((Oj,Qm)=>{"use strict";var XP=Fs(),ZP=Qs(),eL=om(),km=Aa(),tL=Ys(),rL=Hs(),aL=Bm(),nL=On(),oL=ne(),sL=1,iL=2,uL=8,pL=16,cL=128,lL=512;function Fm(e,t,r,a,n,o,s,i,p,f){var m=t&cL,g=t&sL,h=t&iL,b=t&(uL|pL),E=t&lL,L=h?void 0:km(e);function _(){for(var R=arguments.length,B=Array(R),st=R;st--;)B[st]=arguments[st];if(b)var be=rL(_),it=eL(B,be);if(a&&(B=XP(B,a,n,b)),o&&(B=ZP(B,o,s,b)),R-=it,b&&R<f){var Gt=nL(B,be);return tL(e,t,Fm,_.placeholder,r,B,Gt,i,p,f-R)}var Ar=g?r:this,br=h?Ar[e]:e;return R=B.length,i?B=aL(B,i):E&&R>1&&B.reverse(),m&&p<R&&(B.length=p),this&&this!==oL&&this instanceof _&&(br=L||km(br)),br.apply(Ar,B)}return _}Qm.exports=Fm});var Wm=u((Pj,jm)=>{"use strict";var dL=$a(),fL=Aa(),mL=zs(),gL=Ys(),hL=Hs(),yL=On(),AL=ne();function bL(e,t,r){var a=fL(e);function n(){for(var o=arguments.length,s=Array(o),i=o,p=hL(n);i--;)s[i]=arguments[i];var f=o<3&&s[0]!==p&&s[o-1]!==p?[]:yL(s,p);if(o-=f.length,o<r)return gL(e,t,mL,n.placeholder,void 0,s,f,void 0,void 0,r-o);var m=this&&this!==AL&&this instanceof n?a:e;return dL(m,this,s)}return n}jm.exports=bL});var Vm=u((Lj,$m)=>{"use strict";var IL=$a(),SL=Aa(),wL=ne(),vL=1;function TL(e,t,r,a){var n=t&vL,o=SL(e);function s(){for(var i=-1,p=arguments.length,f=-1,m=a.length,g=Array(m+p),h=this&&this!==wL&&this instanceof s?o:e;++f<m;)g[f]=a[f];for(;p--;)g[f++]=arguments[++i];return IL(h,n?r:this,g)}return s}$m.exports=TL});var Xm=u((Cj,Jm)=>{"use strict";var EL=Fs(),RL=Qs(),Km=On(),Ym="__lodash_placeholder__",Js=1,xL=2,_L=4,Hm=8,ba=128,zm=256,OL=Math.min;function PL(e,t){var r=e[1],a=t[1],n=r|a,o=n<(Js|xL|ba),s=a==ba&&r==Hm||a==ba&&r==zm&&e[7].length<=t[8]||a==(ba|zm)&&t[7].length<=t[8]&&r==Hm;if(!(o||s))return e;a&Js&&(e[2]=t[2],n|=r&Js?0:_L);var i=t[3];if(i){var p=e[3];e[3]=p?EL(p,i,t[4]):i,e[4]=p?Km(e[3],Ym):t[4]}return i=t[5],i&&(p=e[5],e[5]=p?RL(p,i,t[6]):i,e[6]=p?Km(e[5],Ym):t[6]),i=t[7],i&&(e[7]=i),a&ba&&(e[8]=e[8]==null?t[8]:OL(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=n,e}Jm.exports=PL});var eg=u((qj,Zm)=>{"use strict";var LL=/\s/;function CL(e){for(var t=e.length;t--&&LL.test(e.charAt(t)););return t}Zm.exports=CL});var rg=u((Uj,tg)=>{"use strict";var qL=eg(),UL=/^\s+/;function DL(e){return e&&e.slice(0,qL(e)+1).replace(UL,"")}tg.exports=DL});var lr=u((Dj,ag)=>{"use strict";var NL=dt(),BL=ge(),ML="[object Symbol]";function GL(e){return typeof e=="symbol"||BL(e)&&NL(e)==ML}ag.exports=GL});var ig=u((Nj,sg)=>{"use strict";var kL=rg(),ng=ve(),FL=lr(),og=0/0,QL=/^[-+]0x[0-9a-f]+$/i,jL=/^0b[01]+$/i,WL=/^0o[0-7]+$/i,$L=parseInt;function VL(e){if(typeof e=="number")return e;if(FL(e))return og;if(ng(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=ng(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=kL(e);var r=jL.test(e);return r||WL.test(e)?$L(e.slice(2),r?2:8):QL.test(e)?og:+e}sg.exports=VL});var cg=u((Bj,pg)=>{"use strict";var KL=ig(),ug=1/0,YL=17976931348623157e292;function HL(e){if(!e)return e===0?e:0;if(e=KL(e),e===ug||e===-ug){var t=e<0?-1:1;return t*YL}return e===e?e:0}pg.exports=HL});var Xs=u((Mj,lg)=>{"use strict";var zL=cg();function JL(e){var t=zL(e),r=t%1;return t===t?r?t-r:t:0}lg.exports=JL});var Pn=u((Gj,hg)=>{"use strict";var XL=ks(),ZL=tm(),eC=Wm(),tC=zs(),rC=Vm(),aC=Ws(),nC=Xm(),oC=Vs(),sC=Ks(),dg=Xs(),iC="Expected a function",fg=1,uC=2,Zs=8,ei=16,ti=32,mg=64,gg=Math.max;function pC(e,t,r,a,n,o,s,i){var p=t&uC;if(!p&&typeof e!="function")throw new TypeError(iC);var f=a?a.length:0;if(f||(t&=~(ti|mg),a=n=void 0),s=s===void 0?s:gg(dg(s),0),i=i===void 0?i:dg(i),f-=n?n.length:0,t&mg){var m=a,g=n;a=n=void 0}var h=p?void 0:aC(e),b=[e,t,r,a,n,m,g,o,s,i];if(h&&nC(b,h),e=b[0],t=b[1],r=b[2],a=b[3],n=b[4],i=b[9]=b[9]===void 0?p?0:e.length:gg(b[9]-f,0),!i&&t&(Zs|ei)&&(t&=~(Zs|ei)),!t||t==fg)var E=ZL(e,t,r);else t==Zs||t==ei?E=eC(e,t,i):(t==ti||t==(fg|ti))&&!n.length?E=rC(e,t,r,a):E=tC.apply(void 0,b);var L=h?XL:oC;return sC(L(E,b),e,t)}hg.exports=pC});var Ag=u((kj,yg)=>{"use strict";var cC=Pn(),lC=128;function dC(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,cC(e,lC,void 0,void 0,void 0,void 0,t)}yg.exports=dC});var Ig=u((Fj,bg)=>{"use strict";var fC=Co(),mC=fC(Object.keys,Object);bg.exports=mC});var ri=u((Qj,Sg)=>{"use strict";var gC=en(),hC=Ig(),yC=Object.prototype,AC=yC.hasOwnProperty;function bC(e){if(!gC(e))return hC(e);var t=[];for(var r in Object(e))AC.call(e,r)&&r!="constructor"&&t.push(r);return t}Sg.exports=bC});var dr=u((jj,wg)=>{"use strict";var IC=Mo(),SC=ri(),wC=zt();function vC(e){return wC(e)?IC(e):SC(e)}wg.exports=vC});var ai=u((Wj,vg)=>{"use strict";var TC=rr(),EC=dr();function RC(e,t){return e&&TC(t,EC(t),e)}vg.exports=RC});var Eg=u(($j,Tg)=>{"use strict";var xC=rr(),_C=ar();function OC(e,t){return e&&xC(t,_C(t),e)}Tg.exports=OC});var xg=u((Vj,Rg)=>{"use strict";function PC(e,t){for(var r=-1,a=e==null?0:e.length,n=0,o=[];++r<a;){var s=e[r];t(s,r,e)&&(o[n++]=s)}return o}Rg.exports=PC});var ni=u((Kj,_g)=>{"use strict";function LC(){return[]}_g.exports=LC});var Ln=u((Yj,Pg)=>{"use strict";var CC=xg(),qC=ni(),UC=Object.prototype,DC=UC.propertyIsEnumerable,Og=Object.getOwnPropertySymbols,NC=Og?function(e){return e==null?[]:(e=Object(e),CC(Og(e),function(t){return DC.call(e,t)}))}:qC;Pg.exports=NC});var Cg=u((Hj,Lg)=>{"use strict";var BC=rr(),MC=Ln();function GC(e,t){return BC(e,MC(e),t)}Lg.exports=GC});var oi=u((zj,qg)=>{"use strict";var kC=Wa(),FC=Za(),QC=Ln(),jC=ni(),WC=Object.getOwnPropertySymbols,$C=WC?function(e){for(var t=[];e;)kC(t,QC(e)),e=FC(e);return t}:jC;qg.exports=$C});var Dg=u((Jj,Ug)=>{"use strict";var VC=rr(),KC=oi();function YC(e,t){return VC(e,KC(e),t)}Ug.exports=YC});var si=u((Xj,Ng)=>{"use strict";var HC=Wa(),zC=ee();function JC(e,t,r){var a=t(e);return zC(e)?a:HC(a,r(e))}Ng.exports=JC});var ii=u((Zj,Bg)=>{"use strict";var XC=si(),ZC=Ln(),eq=dr();function tq(e){return XC(e,eq,ZC)}Bg.exports=tq});var Gg=u((eW,Mg)=>{"use strict";var rq=si(),aq=oi(),nq=ar();function oq(e){return rq(e,nq,aq)}Mg.exports=oq});var Fg=u((tW,kg)=>{"use strict";var sq=ft(),iq=ne(),uq=sq(iq,"DataView");kg.exports=uq});var jg=u((rW,Qg)=>{"use strict";var pq=ft(),cq=ne(),lq=pq(cq,"Promise");Qg.exports=lq});var mr=u((aW,zg)=>{"use strict";var ui=Fg(),pi=Ka(),ci=jg(),li=vo(),di=Ms(),Hg=dt(),fr=ho(),Wg="[object Map]",dq="[object Object]",$g="[object Promise]",Vg="[object Set]",Kg="[object WeakMap]",Yg="[object DataView]",fq=fr(ui),mq=fr(pi),gq=fr(ci),hq=fr(li),yq=fr(di),Ut=Hg;(ui&&Ut(new ui(new ArrayBuffer(1)))!=Yg||pi&&Ut(new pi)!=Wg||ci&&Ut(ci.resolve())!=$g||li&&Ut(new li)!=Vg||di&&Ut(new di)!=Kg)&&(Ut=function(e){var t=Hg(e),r=t==dq?e.constructor:void 0,a=r?fr(r):"";if(a)switch(a){case fq:return Yg;case mq:return Wg;case gq:return $g;case hq:return Vg;case yq:return Kg}return t});zg.exports=Ut});var Xg=u((nW,Jg)=>{"use strict";var Aq=Object.prototype,bq=Aq.hasOwnProperty;function Iq(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&bq.call(e,"index")&&(r.index=e.index,r.input=e.input),r}Jg.exports=Iq});var eh=u((oW,Zg)=>{"use strict";var Sq=Xa();function wq(e,t){var r=t?Sq(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}Zg.exports=wq});var rh=u((sW,th)=>{"use strict";var vq=/\w*$/;function Tq(e){var t=new e.constructor(e.source,vq.exec(e));return t.lastIndex=e.lastIndex,t}th.exports=Tq});var ih=u((iW,sh)=>{"use strict";var ah=Et(),nh=ah?ah.prototype:void 0,oh=nh?nh.valueOf:void 0;function Eq(e){return oh?Object(oh.call(e)):{}}sh.exports=Eq});var ph=u((uW,uh)=>{"use strict";var Rq=Xa(),xq=eh(),_q=rh(),Oq=ih(),Pq=Lo(),Lq="[object Boolean]",Cq="[object Date]",qq="[object Map]",Uq="[object Number]",Dq="[object RegExp]",Nq="[object Set]",Bq="[object String]",Mq="[object Symbol]",Gq="[object ArrayBuffer]",kq="[object DataView]",Fq="[object Float32Array]",Qq="[object Float64Array]",jq="[object Int8Array]",Wq="[object Int16Array]",$q="[object Int32Array]",Vq="[object Uint8Array]",Kq="[object Uint8ClampedArray]",Yq="[object Uint16Array]",Hq="[object Uint32Array]";function zq(e,t,r){var a=e.constructor;switch(t){case Gq:return Rq(e);case Lq:case Cq:return new a(+e);case kq:return xq(e,r);case Fq:case Qq:case jq:case Wq:case $q:case Vq:case Kq:case Yq:case Hq:return Pq(e,r);case qq:return new a;case Uq:case Bq:return new a(e);case Dq:return _q(e);case Nq:return new a;case Mq:return Oq(e)}}uh.exports=zq});var lh=u((pW,ch)=>{"use strict";var Jq=mr(),Xq=ge(),Zq="[object Map]";function eU(e){return Xq(e)&&Jq(e)==Zq}ch.exports=eU});var gh=u((cW,mh)=>{"use strict";var tU=lh(),rU=tn(),dh=rn(),fh=dh&&dh.isMap,aU=fh?rU(fh):tU;mh.exports=aU});var yh=u((lW,hh)=>{"use strict";var nU=mr(),oU=ge(),sU="[object Set]";function iU(e){return oU(e)&&nU(e)==sU}hh.exports=iU});var Sh=u((dW,Ih)=>{"use strict";var uU=yh(),pU=tn(),Ah=rn(),bh=Ah&&Ah.isSet,cU=bh?pU(bh):uU;Ih.exports=cU});var fi=u((fW,Eh)=>{"use strict";var lU=Zr(),dU=_n(),fU=Bo(),mU=ai(),gU=Eg(),hU=Oo(),yU=Zt(),AU=Cg(),bU=Dg(),IU=ii(),SU=Gg(),wU=mr(),vU=Xg(),TU=ph(),EU=qo(),RU=ee(),xU=na(),_U=gh(),OU=ve(),PU=Sh(),LU=dr(),CU=ar(),qU=1,UU=2,DU=4,wh="[object Arguments]",NU="[object Array]",BU="[object Boolean]",MU="[object Date]",GU="[object Error]",vh="[object Function]",kU="[object GeneratorFunction]",FU="[object Map]",QU="[object Number]",Th="[object Object]",jU="[object RegExp]",WU="[object Set]",$U="[object String]",VU="[object Symbol]",KU="[object WeakMap]",YU="[object ArrayBuffer]",HU="[object DataView]",zU="[object Float32Array]",JU="[object Float64Array]",XU="[object Int8Array]",ZU="[object Int16Array]",eD="[object Int32Array]",tD="[object Uint8Array]",rD="[object Uint8ClampedArray]",aD="[object Uint16Array]",nD="[object Uint32Array]",U={};U[wh]=U[NU]=U[YU]=U[HU]=U[BU]=U[MU]=U[zU]=U[JU]=U[XU]=U[ZU]=U[eD]=U[FU]=U[QU]=U[Th]=U[jU]=U[WU]=U[$U]=U[VU]=U[tD]=U[rD]=U[aD]=U[nD]=!0;U[GU]=U[vh]=U[KU]=!1;function Cn(e,t,r,a,n,o){var s,i=t&qU,p=t&UU,f=t&DU;if(r&&(s=n?r(e,a,n,o):r(e)),s!==void 0)return s;if(!OU(e))return e;var m=RU(e);if(m){if(s=vU(e),!i)return yU(e,s)}else{var g=wU(e),h=g==vh||g==kU;if(xU(e))return hU(e,i);if(g==Th||g==wh||h&&!n){if(s=p||h?{}:EU(e),!i)return p?bU(e,gU(s,e)):AU(e,mU(s,e))}else{if(!U[g])return n?e:{};s=TU(e,g,i)}}o||(o=new lU);var b=o.get(e);if(b)return b;o.set(e,s),PU(e)?e.forEach(function(_){s.add(Cn(_,t,r,_,e,o))}):_U(e)&&e.forEach(function(_,R){s.set(R,Cn(_,t,r,R,e,o))});var E=f?p?SU:IU:p?CU:LU,L=m?void 0:E(e);return dU(L||e,function(_,R){L&&(R=_,_=e[R]),fU(s,R,Cn(_,t,r,R,e,o))}),s}Eh.exports=Cn});var xh=u((mW,Rh)=>{"use strict";var oD=fi(),sD=4;function iD(e){return oD(e,sD)}Rh.exports=iD});var Oh=u((gW,_h)=>{"use strict";var uD=Pn(),pD=8;function mi(e,t,r){t=r?void 0:t;var a=uD(e,pD,void 0,void 0,void 0,void 0,void 0,t);return a.placeholder=mi.placeholder,a}mi.placeholder={};_h.exports=mi});var Lh=u((hW,Ph)=>{"use strict";var cD=dt(),lD=ge(),dD=Uo(),fD="[object DOMException]",mD="[object Error]";function gD(e){if(!lD(e))return!1;var t=cD(e);return t==mD||t==fD||typeof e.message=="string"&&typeof e.name=="string"&&!dD(e)}Ph.exports=gD});var qh=u((yW,Ch)=>{"use strict";var hD=mr(),yD=ge(),AD="[object WeakMap]";function bD(e){return yD(e)&&hD(e)==AD}Ch.exports=bD});var Dh=u((AW,Uh)=>{"use strict";function ID(e,t){for(var r=-1,a=e==null?0:e.length;++r<a;)if(t(e[r],r,e))return!0;return!1}Uh.exports=ID});var gi=u((bW,Nh)=>{"use strict";var SD=Io(),wD=Dh(),vD=wo(),TD=1,ED=2;function RD(e,t,r,a,n,o){var s=r&TD,i=e.length,p=t.length;if(i!=p&&!(s&&p>i))return!1;var f=o.get(e),m=o.get(t);if(f&&m)return f==t&&m==e;var g=-1,h=!0,b=r&ED?new SD:void 0;for(o.set(e,t),o.set(t,e);++g<i;){var E=e[g],L=t[g];if(a)var _=s?a(L,E,g,t,e,o):a(E,L,g,e,t,o);if(_!==void 0){if(_)continue;h=!1;break}if(b){if(!wD(t,function(R,B){if(!vD(b,B)&&(E===R||n(E,R,r,a,o)))return b.push(B)})){h=!1;break}}else if(!(E===L||n(E,L,r,a,o))){h=!1;break}}return o.delete(e),o.delete(t),h}Nh.exports=RD});var Mh=u((IW,Bh)=>{"use strict";function xD(e){var t=-1,r=Array(e.size);return e.forEach(function(a,n){r[++t]=[n,a]}),r}Bh.exports=xD});var jh=u((SW,Qh)=>{"use strict";var Gh=Et(),kh=Po(),_D=Kt(),OD=gi(),PD=Mh(),LD=za(),CD=1,qD=2,UD="[object Boolean]",DD="[object Date]",ND="[object Error]",BD="[object Map]",MD="[object Number]",GD="[object RegExp]",kD="[object Set]",FD="[object String]",QD="[object Symbol]",jD="[object ArrayBuffer]",WD="[object DataView]",Fh=Gh?Gh.prototype:void 0,hi=Fh?Fh.valueOf:void 0;function $D(e,t,r,a,n,o,s){switch(r){case WD:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case jD:return!(e.byteLength!=t.byteLength||!o(new kh(e),new kh(t)));case UD:case DD:case MD:return _D(+e,+t);case ND:return e.name==t.name&&e.message==t.message;case GD:case FD:return e==t+"";case BD:var i=PD;case kD:var p=a&CD;if(i||(i=LD),e.size!=t.size&&!p)return!1;var f=s.get(e);if(f)return f==t;a|=qD,s.set(e,t);var m=OD(i(e),i(t),a,n,o,s);return s.delete(e),m;case QD:if(hi)return hi.call(e)==hi.call(t)}return!1}Qh.exports=$D});var Vh=u((wW,$h)=>{"use strict";var Wh=ii(),VD=1,KD=Object.prototype,YD=KD.hasOwnProperty;function HD(e,t,r,a,n,o){var s=r&VD,i=Wh(e),p=i.length,f=Wh(t),m=f.length;if(p!=m&&!s)return!1;for(var g=p;g--;){var h=i[g];if(!(s?h in t:YD.call(t,h)))return!1}var b=o.get(e),E=o.get(t);if(b&&E)return b==t&&E==e;var L=!0;o.set(e,t),o.set(t,e);for(var _=s;++g<p;){h=i[g];var R=e[h],B=t[h];if(a)var st=s?a(B,R,h,t,e,o):a(R,B,h,e,t,o);if(!(st===void 0?R===B||n(R,B,r,a,o):st)){L=!1;break}_||(_=h=="constructor")}if(L&&!_){var be=e.constructor,it=t.constructor;be!=it&&"constructor"in e&&"constructor"in t&&!(typeof be=="function"&&be instanceof be&&typeof it=="function"&&it instanceof it)&&(L=!1)}return o.delete(e),o.delete(t),L}$h.exports=HD});var ey=u((vW,Zh)=>{"use strict";var yi=Zr(),zD=gi(),JD=jh(),XD=Vh(),Kh=mr(),Yh=ee(),Hh=na(),ZD=an(),eN=1,zh="[object Arguments]",Jh="[object Array]",qn="[object Object]",tN=Object.prototype,Xh=tN.hasOwnProperty;function rN(e,t,r,a,n,o){var s=Yh(e),i=Yh(t),p=s?Jh:Kh(e),f=i?Jh:Kh(t);p=p==zh?qn:p,f=f==zh?qn:f;var m=p==qn,g=f==qn,h=p==f;if(h&&Hh(e)){if(!Hh(t))return!1;s=!0,m=!1}if(h&&!m)return o||(o=new yi),s||ZD(e)?zD(e,t,r,a,n,o):JD(e,t,p,r,a,n,o);if(!(r&eN)){var b=m&&Xh.call(e,"__wrapped__"),E=g&&Xh.call(t,"__wrapped__");if(b||E){var L=b?e.value():e,_=E?t.value():t;return o||(o=new yi),n(L,_,r,a,o)}}return h?(o||(o=new yi),XD(e,t,r,a,n,o)):!1}Zh.exports=rN});var Ai=u((TW,ay)=>{"use strict";var aN=ey(),ty=ge();function ry(e,t,r,a,n){return e===t?!0:e==null||t==null||!ty(e)&&!ty(t)?e!==e&&t!==t:aN(e,t,r,a,ry,n)}ay.exports=ry});var oy=u((EW,ny)=>{"use strict";var nN=Zr(),oN=Ai(),sN=1,iN=2;function uN(e,t,r,a){var n=r.length,o=n,s=!a;if(e==null)return!o;for(e=Object(e);n--;){var i=r[n];if(s&&i[2]?i[1]!==e[i[0]]:!(i[0]in e))return!1}for(;++n<o;){i=r[n];var p=i[0],f=e[p],m=i[1];if(s&&i[2]){if(f===void 0&&!(p in e))return!1}else{var g=new nN;if(a)var h=a(f,m,p,e,t,g);if(!(h===void 0?oN(m,f,sN|iN,a,g):h))return!1}}return!0}ny.exports=uN});var bi=u((RW,sy)=>{"use strict";var pN=ve();function cN(e){return e===e&&!pN(e)}sy.exports=cN});var uy=u((xW,iy)=>{"use strict";var lN=bi(),dN=dr();function fN(e){for(var t=dN(e),r=t.length;r--;){var a=t[r],n=e[a];t[r]=[a,n,lN(n)]}return t}iy.exports=fN});var Ii=u((_W,py)=>{"use strict";function mN(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}py.exports=mN});var ly=u((OW,cy)=>{"use strict";var gN=oy(),hN=uy(),yN=Ii();function AN(e){var t=hN(e);return t.length==1&&t[0][2]?yN(t[0][0],t[0][1]):function(r){return r===e||gN(r,e,t)}}cy.exports=AN});var Un=u((PW,dy)=>{"use strict";var bN=ee(),IN=lr(),SN=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,wN=/^\w*$/;function vN(e,t){if(bN(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||IN(e)?!0:wN.test(e)||!SN.test(e)||t!=null&&e in Object(t)}dy.exports=vN});var gy=u((LW,my)=>{"use strict";var fy=Ya(),TN="Expected a function";function Si(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(TN);var r=function(){var a=arguments,n=t?t.apply(this,a):a[0],o=r.cache;if(o.has(n))return o.get(n);var s=e.apply(this,a);return r.cache=o.set(n,s)||o,s};return r.cache=new(Si.Cache||fy),r}Si.Cache=fy;my.exports=Si});var yy=u((CW,hy)=>{"use strict";var EN=gy(),RN=500;function xN(e){var t=EN(e,function(a){return r.size===RN&&r.clear(),a}),r=t.cache;return t}hy.exports=xN});var wi=u((qW,Ay)=>{"use strict";var _N=yy(),ON=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,PN=/\\(\\)?/g,LN=_N(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(ON,function(r,a,n,o){t.push(n?o.replace(PN,"$1"):a||r)}),t});Ay.exports=LN});var vi=u((UW,by)=>{"use strict";function CN(e,t){for(var r=-1,a=e==null?0:e.length,n=Array(a);++r<a;)n[r]=t(e[r],r,e);return n}by.exports=CN});var Ey=u((DW,Ty)=>{"use strict";var Iy=Et(),qN=vi(),UN=ee(),DN=lr(),NN=1/0,Sy=Iy?Iy.prototype:void 0,wy=Sy?Sy.toString:void 0;function vy(e){if(typeof e=="string")return e;if(UN(e))return qN(e,vy)+"";if(DN(e))return wy?wy.call(e):"";var t=e+"";return t=="0"&&1/e==-NN?"-0":t}Ty.exports=vy});var Ti=u((NW,Ry)=>{"use strict";var BN=Ey();function MN(e){return e==null?"":BN(e)}Ry.exports=MN});var Ei=u((BW,xy)=>{"use strict";var GN=ee(),kN=Un(),FN=wi(),QN=Ti();function jN(e,t){return GN(e)?e:kN(e,t)?[e]:FN(QN(e))}xy.exports=jN});var gr=u((MW,_y)=>{"use strict";var WN=lr(),$N=1/0;function VN(e){if(typeof e=="string"||WN(e))return e;var t=e+"";return t=="0"&&1/e==-$N?"-0":t}_y.exports=VN});var Ri=u((GW,Oy)=>{"use strict";var KN=Ei(),YN=gr();function HN(e,t){t=KN(t,e);for(var r=0,a=t.length;e!=null&&r<a;)e=e[YN(t[r++])];return r&&r==a?e:void 0}Oy.exports=HN});var Ly=u((kW,Py)=>{"use strict";var zN=Ri();function JN(e,t,r){var a=e==null?void 0:zN(e,t);return a===void 0?r:a}Py.exports=JN});var qy=u((FW,Cy)=>{"use strict";function XN(e,t){return e!=null&&t in Object(e)}Cy.exports=XN});var Dy=u((QW,Uy)=>{"use strict";var ZN=Ei(),eB=Vr(),tB=ee(),rB=ia(),aB=Ja(),nB=gr();function oB(e,t,r){t=ZN(t,e);for(var a=-1,n=t.length,o=!1;++a<n;){var s=nB(t[a]);if(!(o=e!=null&&r(e,s)))break;e=e[s]}return o||++a!=n?o:(n=e==null?0:e.length,!!n&&aB(n)&&rB(s,n)&&(tB(e)||eB(e)))}Uy.exports=oB});var By=u((jW,Ny)=>{"use strict";var sB=qy(),iB=Dy();function uB(e,t){return e!=null&&iB(e,t,sB)}Ny.exports=uB});var Gy=u((WW,My)=>{"use strict";var pB=Ai(),cB=Ly(),lB=By(),dB=Un(),fB=bi(),mB=Ii(),gB=gr(),hB=1,yB=2;function AB(e,t){return dB(e)&&fB(t)?mB(gB(e),t):function(r){var a=cB(r,e);return a===void 0&&a===t?lB(r,e):pB(t,a,hB|yB)}}My.exports=AB});var Fy=u(($W,ky)=>{"use strict";function bB(e){return function(t){return t?.[e]}}ky.exports=bB});var jy=u((VW,Qy)=>{"use strict";var IB=Ri();function SB(e){return function(t){return IB(t,e)}}Qy.exports=SB});var $y=u((KW,Wy)=>{"use strict";var wB=Fy(),vB=jy(),TB=Un(),EB=gr();function RB(e){return TB(e)?wB(EB(e)):vB(e)}Wy.exports=RB});var xi=u((YW,Vy)=>{"use strict";var xB=ly(),_B=Gy(),OB=Kr(),PB=ee(),LB=$y();function CB(e){return typeof e=="function"?e:e==null?OB:typeof e=="object"?PB(e)?_B(e[0],e[1]):xB(e):LB(e)}Vy.exports=CB});var Yy=u((HW,Ky)=>{"use strict";var qB=fi(),UB=xi(),DB=1;function NB(e){return UB(typeof e=="function"?e:qB(e,DB))}Ky.exports=NB});var zy=u((zW,Hy)=>{"use strict";var BB=fo();function MB(e){var t=e==null?0:e.length;return t?BB(e,1):[]}Hy.exports=MB});var Xy=u((JW,Jy)=>{"use strict";var GB=zy(),kB=mo(),FB=Va();function QB(e){return FB(kB(e,void 0,GB),e+"")}Jy.exports=QB});var eA=u((XW,Zy)=>{"use strict";var jB=Pn(),WB=Xy(),$B=256,VB=WB(function(e,t){return jB(e,$B,void 0,void 0,void 0,t)});Zy.exports=VB});var rA=u((ZW,tA)=>{"use strict";var KB=vi(),YB=Zt(),HB=ee(),zB=lr(),JB=wi(),XB=gr(),ZB=Ti();function eM(e){return HB(e)?KB(e,XB):zB(e)?[e]:YB(JB(ZB(e)))}tA.exports=eM});var nA=u((e$,aA)=>{"use strict";aA.exports={ary:Ag(),assign:ai(),clone:xh(),curry:Oh(),forEach:_n(),isArray:ee(),isError:Lh(),isFunction:Yr(),isWeakMap:qh(),iteratee:Yy(),keys:ri(),rearg:eA(),toInteger:Xs(),toPath:rA()}});var sA=u((t$,oA)=>{"use strict";var tM=Kf(),rM=nA();function aM(e,t,r){return tM(rM,e,t,r)}oA.exports=aM});var _i=u((r$,uA)=>{"use strict";var nM=sA(),iA=nM("merge",Go());iA.placeholder=Us();uA.exports=iA});var ub=u((Y$,ib)=>{"use strict";function TM(e,t,r,a){for(var n=-1,o=e==null?0:e.length;++n<o;){var s=e[n];t(a,s,r(s),e)}return a}ib.exports=TM});var cb=u((H$,pb)=>{"use strict";var EM=_o(),RM=dr();function xM(e,t){return e&&EM(e,t,RM)}pb.exports=xM});var fb=u((z$,lb)=>{"use strict";var _M=zt();function OM(e,t){return function(r,a){if(r==null)return r;if(!_M(r))return e(r,a);for(var n=r.length,o=t?n:-1,s=Object(r);(t?o--:++o<n)&&a(s[o],o,s)!==!1;);return r}}lb.exports=OM});var gb=u((J$,mb)=>{"use strict";var PM=cb(),LM=fb(),CM=LM(PM);mb.exports=CM});var yb=u((X$,hb)=>{"use strict";var qM=gb();function UM(e,t,r,a){return qM(e,function(n,o,s){t(a,n,r(n),s)}),a}hb.exports=UM});var bb=u((Z$,Ab)=>{"use strict";var DM=ub(),NM=yb(),BM=xi(),MM=ee();function GM(e,t){return function(r,a){var n=MM(r)?DM:NM,o=t?t():{};return n(r,e,BM(a,2),o)}}Ab.exports=GM});var Sb=u((eV,Ib)=>{"use strict";var kM=ea(),FM=bb(),QM=Object.prototype,jM=QM.hasOwnProperty,WM=FM(function(e,t,r){jM.call(e,r)?e[r].push(t):kM(e,r,[t])});Ib.exports=WM});var fG={};w(fG,{Method:()=>Vn,ai:()=>fu,api:()=>ji,auditLogs:()=>gt,automations:()=>yn,backups:()=>Te,branding:()=>pn,constants:()=>kr,environmentVariables:()=>$e,features:()=>Pe,groups:()=>Q,init:()=>Ff,licensing:()=>ke,logger:()=>Dt,mappers:()=>V,middleware:()=>Ui,plugins:()=>An,publicApi:()=>Sn,quotas:()=>je,scimGroups:()=>hr,scimUsers:()=>de,sdk:()=>Pi,users:()=>Ze,utils:()=>$t});module.exports=dI(fG);var Vn=(o=>(o.POST="POST",o.GET="GET",o.PATCH="PATCH",o.DELETE="DELETE",o.PUT="PUT",o))(Vn||{});var Pi={};w(Pi,{ai:()=>rs,auditLogs:()=>gt,automations:()=>yn,backups:()=>Te,branding:()=>pn,environmentVariables:()=>$e,features:()=>Pe,groups:()=>Q,init:()=>Ff,licensing:()=>ke,logger:()=>Dt,plugins:()=>An,publicApi:()=>Sn,quotas:()=>je,scimGroups:()=>hr,scimUsers:()=>de,users:()=>Ze,utils:()=>$t});var pn={};w(pn,{getBrandingConfig:()=>r_});var Pe={};w(Pe,{checkBackups:()=>he,checkFeature:()=>sn,checkFeatures:()=>zo,checkSCIM:()=>es,isAppBuildersEnabled:()=>Ot,isAuditLogsEnabled:()=>un,isBackupsEnabled:()=>Jo,isBrandingEnabled:()=>Xo,isEnforceableSSO:()=>ef,isExpandedPublicApiEnabled:()=>Je,isPWAEnabled:()=>Jx,isSSOEnforced:()=>Xx,isSyncAutomationsEnabled:()=>Hx,isTriggerAutomationRunEnabled:()=>zx,isUserGroupsEnabled:()=>Zo,isViewPermissionEnabled:()=>Zx,isViewReadonlyColumnsEnabled:()=>e_});var oe=require("@budibase/types"),ze=require("@budibase/backend-core");var ke={};w(ke,{cache:()=>_e,client:()=>lt,features:()=>Qa,getFreeLicense:()=>Ko,getLicense:()=>$o,getLicenseFromKey:()=>Vo,keys:()=>Ho,offline:()=>nn,quotas:()=>ja});var _e={};w(_e,{getCachedLicense:()=>Xd,invalidate:()=>Zd,refresh:()=>Rt});var Oa=require("@budibase/backend-core"),Sr,fI=async()=>{Sr=await Oa.RedisClient.init(Oa.redis.utils.Databases.LICENSES)},mI=async()=>{Sr&&await Sr.finish()};process.on("exit",async()=>{await mI()});var Kn=async()=>(Sr||await fI(),Sr);var lt={};w(lt,{activateLicenseKey:()=>io,getLicense:()=>jt,getLicenseFromKey:()=>so,triggerQuota:()=>ZI});var wu=C(require("node-fetch"));var vu=require("@budibase/backend-core"),Yn=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";vu.logging.correlation.setHeader(a.headers);let o={method:t,body:n?JSON.stringify(a.body):a.body,headers:a.headers,credentials:"include"};return(0,wu.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}},Hn=Yn;var Ga=require("@budibase/types"),P=require("@budibase/backend-core");var Be={};w(Be,{bustCache:()=>Xn,getCurrentUsageValues:()=>Lu,getQuotaUsage:()=>St,setAllUsage:()=>eo,setAppUsageValue:()=>Zn,setUsage:()=>_u,setUsagePerApp:()=>Ou,utils:()=>Tr});var re=require("@budibase/types"),pe=require("@budibase/backend-core");var Tr={};w(Tr,{generateBaseQuotaUsage:()=>Pa,generateNewMonthlyQuotas:()=>vr,generateNewQuotaUsage:()=>Jn,getBreakdownName:()=>Ca,getCurrentMonthString:()=>ut,getQuotaDocId:()=>wr,setCurrentMonth:()=>La,setQuotaReset:()=>zn});var X=require("@budibase/types"),It=require("@budibase/backend-core"),wr=()=>It.context.isSelfHostUsingCloud()?`quota_usage_${It.context.getTenantId()}`:It.db.StaticDatabases.GLOBAL.docs.usageQuota,Tu=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},zn=e=>{e.quotaReset=Tu()},ut=()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},Pa=()=>({usageQuota:{[X.StaticQuotaName.APPS]:0,[X.StaticQuotaName.ROWS]:0,[X.StaticQuotaName.PLUGINS]:0,[X.StaticQuotaName.USERS]:0,[X.StaticQuotaName.CREATORS]:0,[X.StaticQuotaName.USER_GROUPS]:0,[X.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[ut()]:vr()}}),Jn=()=>{let e={_id:wr(),quotaReset:Tu(),...Pa(),apps:{}};return La(e),e},vr=()=>({[X.MonthlyQuotaName.QUERIES]:0,[X.MonthlyQuotaName.AUTOMATIONS]:0,[X.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,triggers:{}}),La=e=>{let t=ut();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=vr()),e.monthly.current=e.monthly[t]},Ca=(e,t)=>{if(!(!t||!e))switch(e){case X.MonthlyQuotaName.AUTOMATIONS:return X.BreakdownQuotaName.AUTOMATIONS;case X.MonthlyQuotaName.QUERIES:return It.db.isTableId(t)?X.BreakdownQuotaName.ROW_QUERIES:It.db.isDatasourceId(t)?X.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}};var Eu=pe.Duration.fromSeconds(60).toMs(),{Writethrough:Ru}=pe.cache.writethrough;function hI(e){return delete e.usageLimits,delete e.usageQuota.automationRuns,delete e.usageQuota.emails,delete e.usageQuota.storage,delete e.usageQuota.views,delete e.usageQuota.publishedApps,delete e.usageQuota.developers,e}var qa=()=>pe.tenancy.isSelfHostUsingCloud()?new Ru(pe.tenancy.getSelfHostCloudDB(),Eu):new Ru(pe.tenancy.getGlobalDB(),Eu);async function Xn(e=0){let r=qa(),a=wr(),n=await r.tryGet(a);n&&n._rev&&await r.remove(a,n._rev).catch(async o=>{if(e<1)return await Xn(e+1);throw o})}var St=async()=>{let e=qa(),t=await e.tryGet(wr());if(!t){t=Jn();let{rev:r}=await e.put(t);t._rev=r}return La(t),zn(t),hI(t)},_u=async(e,t,r)=>eo({name:t,type:r,values:{total:e}}),Ou=async(e,t,r)=>{let a=qa(),n=await St(),o=Object.values(e).reduce((i,p)=>i+p,0);for(let[i,p]of Object.entries(e))n=Pu(n,t,r,{total:o,app:p},{appId:i});let s=await a.put(n);return n._rev=s.rev,n},yI=(e,t,r,a)=>{let n=Ca(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},Zn=(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]:Pa()});let s=e.apps[o];switch(r){case re.QuotaUsageType.STATIC:s.usageQuota[t]=n.app;break;case re.QuotaUsageType.MONTHLY:{let i=ut(),p=t,f=s.monthly[i];f||(s.monthly[i]=vr(),f=s.monthly[i]),f[p]=n.app,re.BREAKDOWN_QUOTA_NAMES.includes(p)&&a?.id&&(f=yI(f,p,a.id,n));break}}return e},xu=(e,t,r,a)=>{if(!re.APP_QUOTA_NAMES.includes(r))return{};let n;try{n=pe.db.getProdAppID(pe.context.getAppId())}catch{}if(!n||!e.apps||!e.apps[n])return{app:0};let o=e.apps[n];switch(t){case re.QuotaUsageType.STATIC:if(o.usageQuota?.[r])return{app:o.usageQuota[r]};break;case re.QuotaUsageType.MONTHLY:{let s=ut(),i=r;if(!o.monthly?.[s]?.[i])break;let p=o.monthly[s],f=p[i],m,g=Ca(i,a);return g&&a&&p.breakdown?.[g]&&(m=p.breakdown[g]?.values[a]),{app:f,breakdown:m||0}}}return{app:0}},AI=(e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},bI=(e,t,r,a)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),a&&(r.monthly[t].triggers[e]=a)},Pu=(e,t,r,a,n={})=>{if(r===re.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=a.total,AI(t,e,a.triggers);else if(r===re.QuotaUsageType.MONTHLY){t=t;let o=ut();e.monthly[o][t]=a.total,bI(t,o,e,a.triggers)}else throw new Error(`Invalid usage type: ${r}`);return Zn(e,t,r,n,a)},eo=async e=>{let t=Array.isArray(e)?e:[e],r=qa(),a=await St();for(let o of t)a=Pu(a,o.name,o.type,o.values,o.opts);let n=await r.put(a,0);return a._rev=n.rev,a},Lu=async(e,t,r)=>{let a=await St(),n=0,o={};switch(e){case re.QuotaUsageType.STATIC:if(a.usageQuota[t]){let s=t;n=a.usageQuota[s],o=xu(a,e,t,r)}break;case re.QuotaUsageType.MONTHLY:{let s=ut(),i=t;a.monthly[s][i]&&(n=a.monthly[s][i],o=xu(a,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return re.APP_QUOTA_NAMES.includes(t)&&!(o.app||o.breakdown)&&(o.app=o.app||0,o.breakdown=o.breakdown||0),{total:n,app:o.app,breakdown:o.breakdown}};var Se={};w(Se,{destroy:()=>wI,get:()=>to,save:()=>SI});var pt=require("@budibase/backend-core"),II=()=>({_id:pt.StaticDatabases.GLOBAL.docs.licenseInfo}),SI=async e=>{let t=await to();t={...t,...e};let a=await pt.tenancy.getGlobalDB().put(t);return t._rev=a.rev,t},to=async()=>{let e=pt.tenancy.getGlobalDB();try{return await e.get(pt.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return II();throw t}},wI=async()=>{let e=pt.tenancy.getGlobalDB(),t=await to();t&&t._rev&&await e.remove(pt.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)};var M={};w(M,{bulkSave:()=>UI,destroy:()=>DI,fetch:()=>PI,generateUserGroupID:()=>_I,get:()=>LI,getBulk:()=>CI,getByName:()=>ro,getGroupUsers:()=>Da,getGroupUsersParams:()=>Nu,getUserGroupsParams:()=>Du,save:()=>qI});var D=require("@budibase/backend-core");var xe=require("@budibase/types"),kt=require("@budibase/backend-core");async function Cu(){let e=kt.sql.designDoc.base("type");e.sql.tables={[xe.AUDIT_LOG_TYPE]:{fields:{appId:xe.SQLiteType.TEXT,event:xe.SQLiteType.TEXT,userId:xe.SQLiteType.TEXT,timestamp:xe.SQLiteType.TEXT,metadata:xe.SQLiteType.TEXT,name:xe.SQLiteType.TEXT,type:xe.SQLiteType.TEXT,fallback:xe.SQLiteType.TEXT}}};let t=kt.context.getAuditLogsDB(),r;try{r=await t.get(kt.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(a){if(a.status===404)r=e;else throw a}await t.put(r)}var Ua=require("@budibase/backend-core"),{ViewName:vI,SEPARATOR:TI,DocumentType:EI,createView:RI}=Ua.db,xI=EI.USER+TI;async function qu(){let e=Ua.tenancy.getGlobalDB(),t=`function(doc) {
|
|
4
|
+
if (doc._id.startsWith("${xI}") && Array.isArray(doc.userGroups)) {
|
|
5
5
|
for (let groupId of doc.userGroups) {
|
|
6
6
|
emit("g_" + groupId, { email: doc.email, userId: doc._id })
|
|
7
7
|
emit("e_" + groupId + doc.email, { email: doc.email, userId: doc._id })
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
|
-
}`;await
|
|
11
|
-
if (doc._id.startsWith("${
|
|
10
|
+
}`;await RI(e,t,vI.USER_BY_GROUP)}var Uu=`${D.DocumentType.GROUP}${D.SEPARATOR}`;function Du(e,t={}){e||(e="");let r=e?.startsWith(D.DocumentType.GROUP)?"":Uu;return{...t,startkey:`${r}${e}`,endkey:`${r}${e}${D.UNICODE_MAX}`}}function Nu(e,t={}){e||(e="");let{emailSearch:r,bookmark:a,...n}=t;return r?{...n,startkey:`e_${e}${a||r}`,endkey:`e_${e}${r}${D.UNICODE_MAX}`}:{...t,startkey:`g_${e}`,endkey:`g_${e}${D.UNICODE_MAX}`,startkey_docid:a}}function _I(){return`${Uu}${D.utils.newid()}`}async function Da(e,t){let r=D.tenancy.getGlobalDB();return(await D.db.queryView(D.db.ViewName.USER_BY_GROUP,Nu(e,t),r,qu,{arrayResponse:!0})).map(n=>({_id:n.userId,email:n.email}))||[]}async function Er(e){return e.users=await Da(e._id),e}async function OI(e){let r=(await Er(e)).users?.map(o=>o._id),a=await D.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 D.users.bulkUpdateGlobalUsers(n)}async function Bu(){return(await D.tenancy.getGlobalDB().allDocs(Du(null,{include_docs:!0}))).rows.map(t=>t.doc)}async function PI(){let e=await Bu(),t=[];for(let r of e)t.push(Er(r));return await Promise.all(t)}async function LI(e){let r=await D.tenancy.getGlobalDB().get(e);return await Er(r)}async function CI(e,t={enriched:!0}){let a=await D.tenancy.getGlobalDB().getMultiple(e,{allowMissing:!0});if(t?.enriched){let n=[];for(let o of a)n.push(Er(o));return await Promise.all(n)}else return a}async function qI(e){return await D.tenancy.getGlobalDB().put(e)}async function UI(e){return await D.tenancy.getGlobalDB().bulkDocs(e)}async function DI(e,t){let r=D.tenancy.getGlobalDB(),a=await r.get(e),n=await r.remove(e,t);return await OI(a),n}async function ro(e){let t=e.toLowerCase(),a=(await Bu()).find(n=>n.name.toLowerCase()===t);if(a)return await Er(a)}var we={};w(we,{deleteAppBackupMetadata:()=>YI,fetchAppBackups:()=>$I,generateAppBackupID:()=>Ju,getAppBackupMetadata:()=>HI,oldestBackupDate:()=>Hu,storeAppBackupMetadata:()=>VI,updateAppBackupMetadata:()=>KI});var F=require("@budibase/backend-core"),Yu=require("@budibase/types");function Rr(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 Ft=require("@budibase/backend-core"),{ViewName:Gu,AutomationViewMode:ao,SEPARATOR:Me,DocumentType:ku,createView:Fu}=Ft.db,NI=ku.AUTOMATION_LOG+Me,Mu=ku.APP_BACKUP+Me;async function Qu(){let e=Ft.context.getProdAppDB(),t=`function(doc) {
|
|
11
|
+
if (doc._id.startsWith("${NI}")) {
|
|
12
12
|
let autoId = doc.automationId + "${Me}"
|
|
13
13
|
let status = doc.status + "${Me}"
|
|
14
14
|
let autoKey = "${ao.AUTOMATION}${Me}" + autoId + doc.createdAt
|
|
@@ -18,14 +18,14 @@
|
|
|
18
18
|
emit(autoKey)
|
|
19
19
|
emit(allKey)
|
|
20
20
|
}
|
|
21
|
-
}`;await
|
|
22
|
-
if (doc._id.startsWith("${
|
|
21
|
+
}`;await Fu(e,t,Gu.AUTOMATION_LOGS)}async function ju(){let e=Ft.tenancy.getGlobalDB(),t=`function(doc) {
|
|
22
|
+
if (doc._id.startsWith("${Mu}") && doc.type && doc.trigger) {
|
|
23
23
|
let full = doc.appId + "${Me}"
|
|
24
24
|
full += doc.trigger.toLowerCase() + "${Me}"
|
|
25
25
|
full += doc.type.toLowerCase() + "${Me}"
|
|
26
|
-
emit("${
|
|
26
|
+
emit("${Mu}" + full + doc.timestamp)
|
|
27
27
|
}
|
|
28
|
-
}`;await
|
|
28
|
+
}`;await Fu(e,t,Gu.APP_BACKUP_BY_TRIGGER)}var Ku=require("@budibase/types");var kr={};w(kr,{GENERIC_PAGE_SIZE:()=>Ge,auditLogs:()=>Qt,licenses:()=>me,quotas:()=>He,versions:()=>Gr});var me={};w(me,{CLOUD_FREE_LICENSE:()=>MI,SELF_FREE_LICENSE:()=>no,UNLIMITED:()=>W,UNLIMITED_LICENSE:()=>GI});var ct=require("@budibase/types");var He={};w(He,{UNLIMITED:()=>BI,appBackupRetentionDays:()=>Br,apps:()=>_r,automationLogRetentionDays:()=>Nr,automations:()=>Ur,budibaseAICredits:()=>Dr,creators:()=>Pr,customAIConfigurations:()=>Mr,plugins:()=>Cr,queries:()=>qr,rows:()=>xr,userGroups:()=>Lr,users:()=>Or});var ae=require("@budibase/types"),BI=-1,xr=e=>({[ae.StaticQuotaName.ROWS]:{name:"Rows",value:e,triggers:[90,100]}}),_r=e=>({[ae.StaticQuotaName.APPS]:{name:"Apps",value:e,triggers:[100]}}),Or=e=>({[ae.StaticQuotaName.USERS]:{name:"Users",value:e,triggers:[80,100]}}),Pr=e=>({[ae.StaticQuotaName.CREATORS]:{name:"Creators",value:e,triggers:[]}}),Lr=e=>({[ae.StaticQuotaName.USER_GROUPS]:{name:"User Groups",value:e,triggers:[80,100]}}),Cr=e=>({[ae.StaticQuotaName.PLUGINS]:{name:"Plugins",value:e,triggers:[90,100]}}),qr=e=>({[ae.MonthlyQuotaName.QUERIES]:{name:"Queries",value:e,triggers:[]}}),Ur=e=>({[ae.MonthlyQuotaName.AUTOMATIONS]:{name:"Automations",value:e,triggers:[80,90,100]}}),Dr=e=>({[ae.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:{name:"Budibase AI Credits",value:e,triggers:[80,90,100]}}),Nr=e=>({[ae.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS]:{name:"Automation Logs",value:e,triggers:[]}}),Br=e=>({[ae.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS]:{name:"App Backups",value:e,triggers:[]}}),Mr=e=>({[ae.StaticQuotaName.AI_CUSTOM_CONFIGS]:{name:"Custom AI Configuration",value:e,triggers:[]}});var W=-1,MI={features:[],quotas:{usage:{monthly:{...qr(W),...Ur(200),...Dr(5e4)},static:{..._r(W),...xr(2e3),...Or(5),...Pr(5),...Lr(0),...Cr(10),...Mr(0)}},constant:{...Nr(1),...Br(0)}},plan:{type:ct.PlanType.FREE,usesInvoicing:!1,model:ct.PlanModel.PER_USER}},no={features:[],quotas:{usage:{monthly:{...qr(W),...Ur(W),...Dr(5e4)},static:{...xr(W),..._r(W),...Or(20),...Pr(W),...Lr(0),...Cr(10),...Mr(0)}},constant:{...Nr(1),...Br(0)}},plan:{type:ct.PlanType.FREE,usesInvoicing:!1,model:ct.PlanModel.PER_USER}},GI={features:[],quotas:{usage:{monthly:{...qr(W),...Ur(W),...Dr(W)},static:{..._r(W),...xr(W),...Or(W),...Pr(W),...Lr(W),...Cr(W),...Mr(W)}},constant:{...Nr(W),...Br(W)}},plan:{type:ct.PlanType.FREE,usesInvoicing:!1,model:ct.PlanModel.PER_USER}};var Gr={};w(Gr,{getLicenseVersion:()=>kI,getProVersion:()=>$u});var wt=require("@budibase/backend-core"),Na=C(require("fs")),Wu=C(require("path")),kI=()=>{if(wt.env.isDev()){let e="dev-version.txt",t=Wu.default.join(wt.objectStore.budibaseTempDir(),e);if(Na.default.existsSync(t))return Na.default.readFileSync(t,"utf8");{let r=wt.utils.newid();return Na.default.writeFileSync(t,r),r}}else return $u()},$u=()=>{let e=wt.env.VERSION;if(!e)throw new Error("No budibase pro version was specified");return e};var Qt={};w(Qt,{searchTable:()=>FI});var vt=require("@budibase/types"),Vu=require("@budibase/backend-core");function FI(){return{type:"table",sourceType:vt.TableSourceType.INTERNAL,name:vt.AUDIT_LOG_TYPE,sourceId:Vu.SQS_DATASOURCE_INTERNAL,primary:["_id"],schema:{metadata:{name:"metadata",type:vt.FieldType.JSON},fallback:{name:"fallback",type:vt.FieldType.JSON}}}}var Ge=9;var QI=new Date(864e13).toISOString(),jI=1e3*60*60*24;async function Ba(e){let r=(await _e.getCachedLicense()).quotas?.[Ku.QuotaType.CONSTANT]?.[e]?.value||0;return r===me.UNLIMITED?new Date(QI).toISOString():new Date(new Date().getTime()-jI*r).toISOString()}async function Hu(){return Ba(Yu.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS)}var oo=`${F.db.DocumentType.APP_BACKUP}${F.db.SEPARATOR}`;async function WI(e,t,r={}){let a=await Hu(),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:`${oo}${o}${F.db.UNICODE_MAX}`,endkey:`${oo}${s}`}}async function zu(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 ju(),zu(e,t);throw r}}function Ju(e,t){return`${oo}${e}${F.db.SEPARATOR}${t}`}async function $I(e,t={}){let r=F.tenancy.getGlobalDB(),a,n=t.limit||9,o=await WI(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 zu(r,o);let s=Rr(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 VI(e,t={}){let r=F.tenancy.getGlobalDB(),a=F.db.getProdAppID(e.appId),n=Ju(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 KI(e,t){let r=F.tenancy.getGlobalDB(),a=await r.get(e);return a.name=t,await r.put(a)}async function YI(e){let t=F.tenancy.getGlobalDB(),r=await t.get(e);await t.remove(r._id,r._rev)}async function HI(e){return await F.tenancy.getGlobalDB().get(e)}var Tt={};w(Tt,{get:()=>JI,getCacheEnvVarID:()=>ep,getEnvVarID:()=>Ma,update:()=>XI});var Oe=require("@budibase/backend-core"),Zu=C(require("lru-cache")),zI=1e3,Xu=new Zu.default({max:zI});function Ma(){return Oe.StaticDatabases.GLOBAL.docs.environmentVariables}function ep(e){return`${Oe.tenancy.getTenantId()}/${Ma()}/${e||""}`}async function JI(){let e=Ma(),t=Oe.tenancy.getGlobalDB(),r,a=!1;try{r=await t.get(e)}catch(i){if(i.status==404)a=!0;else throw i}let n=ep(r?._rev),o=Xu.get(n);if(o)return o;let s;return!a&&r?s={...r,variables:JSON.parse(Oe.encryption.decrypt(r.variables,Oe.encryption.SecretOption.ENCRYPTION))}:s={_id:e,variables:{}},Xu.set(n,s),s}async function XI(e){let t=Ma();return await Oe.tenancy.getGlobalDB().put({_id:e._id||t,_rev:e._rev||void 0,variables:Oe.encryption.encrypt(JSON.stringify(e.variables),Oe.encryption.SecretOption.ENCRYPTION)})}var ka=new Hn(P.env.ACCOUNT_PORTAL_URL),Fa=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{}},tp=async e=>{let t,r;if(P.env.SELF_HOSTED){if(t=await Se.get(),!t.licenseKey)return;r={[P.constants.Header.LICENSE_KEY]:t.licenseKey}}else{let a=P.tenancy.getTenantId();r={[P.constants.Header.API_KEY]:P.env.ACCOUNT_PORTAL_API_KEY,[P.constants.Header.TENANT_ID]:a}}return e(r)},rp=async()=>tp(async e=>{let t=await Be.getQuotaUsage();if(t.usageQuota.users==null){let i=await P.users.getUserCount();console.info(`Syncing user count quota to ${i}`),t.usageQuota.users=i,await Be.setUsage(i,Ga.StaticQuotaName.USERS,Ga.QuotaUsageType.STATIC)}let r=await P.installation.getInstallFromDB(),a=P.tenancy.getTenantId(),n=await P.events.identification.getUniqueTenantId(a),o=Gr.getProVersion(),s={quotaUsage:t,tenantId:a,install:{id:r.installId,tenantId:n,version:o}};try{let i=await ka.post("/api/license",{headers:{...e},body:s});if(i.status===404||i.status===403)return;if(i.status!==200){let p=await Fa(i);throw new P.HTTPError(`Error getting license: ${p}`,i.status)}return i.json()}catch(i){if(P.env.DISABLE_ACCOUNT_PORTAL)return;throw i}});P.env.isJest()&&(rp=jest.fn());var jt=rp;async function so(e){let t;if(!P.env.INTERNAL_API_KEY)throw new Error("getLicenseFromKey requires INTERNAL_API_KEY to be set");try{t=await ka.get(`/api/license/${e}`,{headers:{[P.constants.Header.API_KEY]:P.env.INTERNAL_API_KEY}})}catch(r){if(P.env.DISABLE_ACCOUNT_PORTAL)return;throw r}if(!(t.status===404||t.status===403)){if(t.status!==200){let r=await Fa(t);throw new P.HTTPError(`Error getting license: ${r}`,t.status)}return t.json()}}var ZI=e=>tp(async t=>{let r=await ka.post("/api/license/usage/triggered",{headers:{...t},body:e});if(r.status!==200){let a=await Fa(r);P.logging.logAlert(`Error triggering quota usage: ${a}`)}}),io=async e=>{let t=await P.installation.getInstall(),r={installVersion:t.version,installId:t.installId},a=await ka.post("/api/license/activate",{headers:{[P.constants.Header.LICENSE_KEY]:e},body:r});if(a.status===403)throw new P.HTTPError("Invalid license key",400);if(a.status===409)throw new P.HTTPError("License key has already been activated",409);if(a.status!==200){let n=await Fa(a);throw new P.HTTPError(`Error activating license key: ${n}`,a.status)}return a.json()};var Wo=require("@budibase/backend-core");var nn={};w(nn,{activateOfflineLicenseToken:()=>Bx,deleteOfflineLicenseToken:()=>Mx,dev:()=>pa,enrichLicense:()=>Kd,getIdentifier:()=>ko,getIdentifierBase64:()=>Gx,getIdentifierFromBase64:()=>kx,getOfflineLicense:()=>Fo,getOfflineLicenseToken:()=>Wd,signing:()=>jr,verifyExpiry:()=>$d,verifyInstallation:()=>Vd});var jr={};w(jr,{sign:()=>tS,verifyLicenseToken:()=>Qr});var uo=C(require("jsonwebtoken")),eS=`-----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 jr(e){return uo.default.verify(e,tS,{algorithms:["RS256"]})}function rS(e,t){return uo.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}var ja={};w(ja,{getFeatures:()=>po});var c=require("@budibase/types");var aS={[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]},nS={[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 po(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(aS);break;case c.Hosting.CLOUD:r=a(nS);break}return r}var Wa={};w(Wa,{UNLIMITED:()=>d,getQuotas:()=>co});var G=require("@budibase/types");var l=He,np=me,d=-1,$r=e=>e*1e6,oS={[G.PlanType.FREE]:{...np.CLOUD_FREE_LICENSE.quotas},[G.PlanType.PREMIUM]:{usage:{monthly:{...l.queries(d),...l.automations(1e3),...l.budibaseAICredits(0)},static:{...l.rows(1e4),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(0),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(7),...l.appBackupRetentionDays(7)}},[G.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...l.queries(d),...l.automations(5e3),...l.budibaseAICredits($r(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($r(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($r(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($r(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($r(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)}}},sS={[G.PlanType.FREE]:{...np.SELF_FREE_LICENSE.quotas},[G.PlanType.PREMIUM]:void 0,[G.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(0),...l.plugins(d),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[G.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(0),...l.plugins(d),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[G.PlanType.PRO]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(5),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(7),...l.appBackupRetentionDays(7)}},[G.PlanType.TEAM]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(10),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(90)}},[G.PlanType.BUSINESS]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(50),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(90),...l.appBackupRetentionDays(365)}},[G.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(d),...l.appBackupRetentionDays(d)}},[G.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(15),...l.appBackupRetentionDays(15)}},[G.PlanType.ENTERPRISE]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(d),...l.appBackupRetentionDays(d)}}};function co(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(sS);break;case G.Hosting.CLOUD:r=a(oS);break}return JSON.parse(JSON.stringify(r))}var Vt={};w(Vt,{appExists:()=>iS,encoding:()=>$t});var op=require("@budibase/backend-core");async function iS(e){return(await op.db.getAllApps({all:!0,idsOnly:!0})).includes(e)}var $t={};w($t,{base64ToObject:()=>pS,objectToBase64:()=>uS});function uS(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}function pS(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}var Qd=require("@budibase/types"),or=require("@budibase/backend-core"),jd=C(Sl()),Wd=C(Go());async function Mx(e){await Se.save({offlineLicenseToken:e}),await xt()}async function Gx(){await Se.save({offlineLicenseToken:void 0}),await xt()}async function $d(){return(await Se.get()).offlineLicenseToken}async function ko(){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 ko();return $t.objectToBase64(e)}function Fx(e){return $t.base64ToObject(e)}function Vd(e){let t=Date.now(),r=new Date(e.expireAt).getTime();if(t>r)throw new Error(`Offline license has expired. expireAt=${e.expireAt}`)}async function Kd(e){let t=await ko();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}function Yd(e){let t=e.plan.type,r=Qd.Hosting.SELF,a=po(r,t),n=co(r,t);return e.features=(0,jd.default)(e.features,a),e.quotas=(0,Wd.default)(e.quotas,n),e}async function Fo(){try{let e=await $d();if(e){let t=await jr(e);return Vd(t),await Kd(t),Yd(t)}}catch(e){console.error("Error retrieving offline license",e)}}var ca={};w(ca,{deleteDevLicense:()=>Vx,getOfflineLicense:()=>Wx,writeDevLicenseToDisk:()=>$x});var Hd=require("@budibase/backend-core"),jo=require("path"),zd=require("os"),_t=C(require("fs"));var Qx=Hd.env.isTest()?".budibase-test":".budibase",Qo=(0,jo.join)((0,zd.tmpdir)(),Qx),jx="dev_license.txt",pa=(0,jo.join)(Qo,jx);if(!_t.default.existsSync(Qo))try{_t.default.mkdirSync(Qo)}catch{}function Wx(){try{if(_t.default.existsSync(pa)){let e=_t.default.readFileSync(pa,{encoding:"utf-8"});return jr(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}function $x(e){console.log(`Writing license to: ${pa}`),_t.default.writeFileSync(pa,e,{encoding:"utf-8"})}function Vx(){_t.default.rmSync(pa,{force:!0})}var $o=async()=>{if(Wo.env.OFFLINE_MODE)return Fo();let e=await Wt();return e||(e=ca.getOfflineLicense()),e},Vo=e=>so(e),Ko=()=>Wo.env.SELF_HOSTED?me.SELF_FREE_LICENSE:me.CLOUD_FREE_LICENSE;var Ho={};w(Ho,{activateLicenseKey:()=>Kx,deleteLicenseKey:()=>Yx,getLicenseKey:()=>Yo});async function Kx(e){await io(e),await Se.save({licenseKey:e}),await xt()}async function Yo(){return(await Se.get()).licenseKey}async function Yx(){await Se.save({licenseKey:void 0}),await xt()}var Ot=require("@budibase/backend-core"),sn=C(require("dd-trace")),Jd=3600,xt=async()=>{await ef(),await Zd()},Xd=async(e,t)=>{let{populateLicense:r=$o,populateFreeLicense:a=Ko}=t||{};return await sn.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 Kn(),p=await i.get(s);return n.addTags({tenantId:s,foundInCache:!!p}),p?(n.addTags({foundInCache:!0,refreshedAt:p.refreshedAt,features:p.features,plan:p.plan,quotas:p.quotas}),p):(p=await sn.default.trace("populateLicense",async()=>await r(s)),n.addTags({populatedLicense:!!p}),p||(p=sn.default.trace("populateFreeLicense",()=>a(e,s)),n.addTags({populatedFreeLicense:!!p})),p.refreshedAt=new Date().toISOString(),n.addTags({refreshedAt:p.refreshedAt,features:p.features,plan:p.plan,quotas:p.quotas,expirySeconds:Jd}),await i.store(s,p,Jd),p)})};Ot.env.isJest()&&(Xd=jest.fn());var Zd=Xd,ef=async()=>{let e=Ot.tenancy.getTenantId();await(await Kn()).delete(e)};async function se(e,t){Array.isArray(e)||(e=[e]),t||(t=await _e.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}async function un(e,t){if(!await se(e,t))throw new ze.FeatureDisabledError(`${e} is not currently enabled`,e)}async function zo(e,t){if(!await se(e,t)){let r=e.join(", ");throw new ze.FeatureDisabledError(`${r} are not currently enabled`,r)}}function he(e){return async(...t)=>(await un(oe.Feature.APP_BACKUPS),e(...t))}async function Jo(){return se(oe.Feature.APP_BACKUPS)}async function Xo(){return se(oe.Feature.BRANDING)}async function tf(){return se(oe.Feature.ENFORCEABLE_SSO)}async function zx(){return se(oe.Feature.SYNC_AUTOMATIONS)}async function Jx(){return se(oe.Feature.TRIGGER_AUTOMATION_RUN)}async function Pt(){return se(oe.Feature.APP_BUILDERS)}async function pn(){return se(oe.Feature.AUDIT_LOGS)}async function Zo(){return se(oe.Feature.USER_GROUPS)}function Xx(){return se(oe.Feature.PWA)}async function Je(){return se(oe.Feature.EXPANDED_PUBLIC_API)}async function Zx(e){if(ze.env.ENABLE_SSO_MAINTENANCE_MODE||!await tf())return!1;let r;return e?.config?r=e.config:r=await ze.configs.getSettingsConfig(),!!r.isSSOEnforced}var es=async()=>{let e=oe.Feature.SCIM,t=await se(e),r=await ze.configs.getSCIMConfig();if(!t||!r?.enabled)throw new ze.FeatureDisabledError(`${e} is not currently enabled`,e);return!0};async function e_(){return se(oe.Feature.VIEW_PERMISSIONS)}async function t_(){return se(oe.Feature.VIEW_READONLY_COLUMNS)}var r_={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 a_(e){return await Xo()?{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}:r_}var rs={};w(rs,{enrichAIConfig:()=>ts});var rf=require("@budibase/backend-core"),n_="budibase_ai";async function ts(e){if(rf.env.SELF_HOSTED)return e;for(let t of Object.values(e.config))if(t.provider==="BudibaseAI")return e;return e.config[n_]={provider:"BudibaseAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-4o-mini",name:"Budibase AI"},e}var je={};w(je,{addApp:()=>p_,addAutomation:()=>g_,addGroup:()=>ns,addPlugin:()=>ss,addRow:()=>l_,addRows:()=>f_,addUsers:()=>dn,bustCache:()=>Xn,decrement:()=>Xe,decrementMany:()=>la,getCurrentUsageValues:()=>Cu,getLicensedQuota:()=>nf,getQuotaUsage:()=>wt,increment:()=>Ce,incrementBudibaseAICredits:()=>mn,incrementMany:()=>Lt,removeApp:()=>c_,removeGroup:()=>os,removePlugin:()=>is,removeRow:()=>d_,removeRows:()=>m_,removeUsers:()=>pr,set:()=>as,setAllUsage:()=>eo,setAppUsageValue:()=>Zn,setUsage:()=>Ou,setUsagePerApp:()=>Pu,updatePluginCount:()=>us,updateUsage:()=>sr,usageLimitIsExceeded:()=>u_,utils:()=>Er});var Y=require("@budibase/types");var Le=require("@budibase/backend-core");var Ce=(e,t,r)=>af({change:1,name:e,type:t,opts:r}),Lt=e=>af(e),af=async e=>{let t=Array.isArray(e)?e:[e];await sr(t.map(a=>({usageChange:a.change,name:a.name,type:a.type,opts:{dryRun:!0,suppressErrorLog:a.opts?.suppressErrorLog,id:a.opts?.id}})));let r=[];for(let a of t){let n=a.opts?.fn;n&&r.push(await n())}return await sr(t.map(a=>({usageChange:a.change,name:a.name,type:a.type,opts:{dryRun:!1,valueFn:a.opts?.valueFn,suppressErrorLog:a.opts?.suppressErrorLog,id:a.opts?.id}}))),r[0]},Xe=(e,t,r={})=>sr({usageChange:-1,name:e,type:t,opts:r}),la=e=>{let t=Array.isArray(e)?e:[e];return sr(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},as=async(e,t,r)=>Be.setUsage(r,e,t),o_=(e,t,r)=>{if(e==Y.QuotaUsageType.STATIC){let a=r.usageQuota.triggers;return a?a[t]||{}:{}}else{let a=Be.utils.getCurrentMonthString(),n=r.monthly[a].triggers;return n?n[t]||{}:{}}},s_=async(e,t,r,a)=>{try{await Le.locks.doWithLock({type:Y.LockType.TRY_ONCE,name:Y.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let n={percentage:r,name:t.name};a&&(n.resetDate=a),await lt.triggerQuota(n)})}catch(n){Le.logging.logAlert("Error triggering quota",n)}},i_=async(e,t,r,a)=>{let n=await wt(),o=e===Y.QuotaUsageType.MONTHLY?n.quotaReset:void 0,s=await o_(e,t,n),i=a.triggers,p=r/a.value*100;p>100&&(p=100);for(let[f,m]of i.entries())if(p>=m&&a.value!==He.UNLIMITED){if(!s[m]){s[m]=new Date().toISOString();let h=i[f+1]||100;(!(p>=h)||p===m)&&await s_(t,a,p,o)}}else s[m]=void 0;return s},sr=async e=>{let t=Le.tenancy.getTenantId(),r=Array.isArray(e)?e:[e],a=null,n,o=[],s={},i={},p={},f={};for(let g of r){try{a=Le.context.getAppId()}catch{}if(Y.APP_QUOTA_NAMES.includes(g.name)&&!a)throw new Error("App context required for quota update");try{n=await nf(Y.QuotaType.USAGE,g.name,g.type),o.push(n);let{total:b,app:E,breakdown:L}=await Be.getCurrentUsageValues(g.type,g.name,g.opts?.id);b+=g.usageChange,E!=null&&(E+=g.usageChange),L!=null&&(L+=g.usageChange);let _={};if(g.opts?.dryRun||(_=await i_(g.type,g.name,b,n),f={...f,[g.name]:_}),n.value!==He.UNLIMITED&&b>n.value&&g.usageChange>0)throw new Le.UsageLimitError(`Licensed ${n.name} of ${n.value} has been exceeded`,n.name);if(b=Math.max(0,b),E&&(E=Math.max(0,E)),L&&(L=Math.max(0,L),p={...p,[g.name]:L}),!g.opts?.dryRun){let R=g.opts?.valueFn;R&&(b=await R(),E=b),s={...s,[g.name]:b},i={...i,[g.name]:E}}}catch(b){throw g.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${g.name}`,b),b}}let m=r.filter(g=>!g.opts?.dryRun).map(g=>({name:g.name,type:g.type,values:{total:s[g.name],app:i[g.name],breakdown:p[g.name],triggers:f[g.name]},opts:{...g.opts,tenantId:t}}));m.length>0&&await Be.setAllUsage(m)},nf=async(e,t,r)=>{let a=await _e.getCachedLicense();if(!a){let n=Le.tenancy.getTenantId();throw new Error("License not found for tenant id "+n)}if(r&&(0,Y.isStaticQuota)(e,r,t))return a.quotas[e][r][t];if(r&&(0,Y.isMonthlyQuota)(e,r,t))return a.quotas[e][r][t];if((0,Y.isConstantQuota)(e,t))return a.quotas[e][t];throw new Error("Invalid quota type")},u_=async(e,t)=>{try{return await sr({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 ir=require("@budibase/types"),of=require("@budibase/backend-core"),sf=async()=>{let e=await of.db.getAllApps({dev:!0});return e?e.length:0},p_=async(e,{appId:t}={})=>Ce(ir.StaticQuotaName.APPS,ir.QuotaUsageType.STATIC,{fn:e,valueFn:sf,id:t}),c_=async({appId:e}={})=>Xe(ir.StaticQuotaName.APPS,ir.QuotaUsageType.STATIC,{valueFn:sf,id:e});var Fe=require("@budibase/types"),l_=async(e,{tableId:t}={})=>Ce(Fe.StaticQuotaName.ROWS,Fe.QuotaUsageType.STATIC,{fn:e,id:t}),d_=async({tableId:e}={})=>Xe(Fe.StaticQuotaName.ROWS,Fe.QuotaUsageType.STATIC,{id:e}),f_=async(e,t,{tableId:r}={})=>Lt({change:e,name:Fe.StaticQuotaName.ROWS,type:Fe.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),m_=async(e,{tableId:t}={})=>la({change:e,name:Fe.StaticQuotaName.ROWS,type:Fe.QuotaUsageType.STATIC,opts:{id:t}});var ln=require("@budibase/types"),g_=async(e,{automationId:t}={})=>Ce(ln.MonthlyQuotaName.AUTOMATIONS,ln.QuotaUsageType.MONTHLY,{fn:e,id:t});var ur=require("@budibase/types"),ns=async e=>Ce(ur.StaticQuotaName.USER_GROUPS,ur.QuotaUsageType.STATIC,{fn:e}),os=async()=>Xe(ur.StaticQuotaName.USER_GROUPS,ur.QuotaUsageType.STATIC);var mt=require("@budibase/types"),ss=async e=>Ce(mt.StaticQuotaName.PLUGINS,mt.QuotaUsageType.STATIC,{fn:e}),is=async()=>Xe(mt.StaticQuotaName.PLUGINS,mt.QuotaUsageType.STATIC),us=async e=>as(mt.StaticQuotaName.PLUGINS,mt.QuotaUsageType.STATIC,e);var Qe=require("@budibase/types"),da=require("@budibase/backend-core");var dn=async(e,t,r)=>{let a=[{change:e,name:Qe.StaticQuotaName.USERS,type:Qe.QuotaUsageType.STATIC,opts:{fn:r,valueFn:da.users.getUserCount}}];t>0&&a.push({change:t,name:Qe.StaticQuotaName.CREATORS,type:Qe.QuotaUsageType.STATIC,opts:{valueFn:da.users.getCreatorCount}});let n=await Lt(a);return await Wt(),n},pr=async(e,t)=>{let r=[{change:e,name:Qe.StaticQuotaName.USERS,type:Qe.QuotaUsageType.STATIC,opts:{valueFn:da.users.getUserCount}}];t>0&&r.push({change:t,name:Qe.StaticQuotaName.CREATORS,type:Qe.QuotaUsageType.STATIC,opts:{valueFn:da.users.getCreatorCount}}),await la(r),await Wt()};var fn=require("@budibase/types"),mn=async e=>Lt({change:e,name:fn.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:fn.QuotaUsageType.MONTHLY});var Ze={};w(Ze,{addAppBuilder:()=>I_,db:()=>We,removeAppBuilder:()=>S_});var ma=require("@budibase/backend-core");var Q={};w(Q,{addAppBuilder:()=>fs,addUsers:()=>cs,adjustGroupCreatorsQuotas:()=>b_,cleanupApp:()=>A_,enrichUserRolesFromGroups:()=>y_,fetch:()=>fa,get:()=>qt,getBulk:()=>mf,getGroupBuilderAppIds:()=>ff,getGroupRoleId:()=>h_,remove:()=>ps,removeAppBuilder:()=>ms,removeUsers:()=>ls,save:()=>cr,updateGroupApps:()=>ds});var x=require("@budibase/backend-core");var uf=require("@budibase/backend-core"),gn=class extends uf.HTTPError{constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function lf(e,t){try{let r=[];for(let i of e)if(i.roles){let p=i.roles[x.db.getProdAppID(t)];p&&r.push(p)}let a=await Promise.all(r.map(async i=>({[i]:await x.roles.roleToNumber(i)}))),n,o,s={};a.forEach(i=>{let[p,f]=Object.entries(i)[0];s[p]={roleId:p,roleNum:f}});for(let{roleId:i,roleNum:p}of Object.values(s))(o===void 0||p>o)&&(o=p,n=i);return n}catch(r){throw x.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}async function df(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await M.getBulk(e,{enriched:!1}),t}async function ff(e,t){if(!e.userGroups)return[];let r=await df(e.userGroups,t?.groups),a=t?.appId?x.db.getProdAppID(t?.appId):null,n=[];for(let o of r){let s=o.builder?.apps;a&&s?.includes(a)?n.push(a):a||(n=n.concat(s||[]))}return[...new Set(n)]}async function h_(e,t,r){if(!e.userGroups)return null;let a=await df(e.userGroups,r?.groups),n=x.db.getProdAppID(t);return e.roles?.[n]?e.roles[n]:(a=a.filter(o=>o?.roles?Object.keys(o.roles).includes(n):!1),await lf(a,t))}async function y_(e){if(!e||!e.userGroups)return e;let t=await mf(e.userGroups,{enriched:!1}),r=[];for(let n of t)n?.roles&&(r=r.concat(Object.keys(n.roles)));r=[...new Set(r)];for(let n of r)await x.context.doInAppContext(n,async()=>{if(e.roles[n])return;let o=await lf(t,n);o&&(e.roles[n]=o)});let a=await ff(e,{groups:t});if(a.length&&!e.builder?.global){let n=e.builder?.apps||[];e.builder={apps:n.concat(a)}}return e}async function fa(){return await M.fetch()}async function qt(e){return await M.get(e)}async function mf(e,t={enriched:!0}){return await M.getBulk(e,t)}async function pf(e){if(await M.getByName(e))throw new gn(e)}async function cf(e){let t=await M.getGroupUsers(e._id);if(!t.length)return 0;let a=await x.tenancy.getGlobalDB().getMultiple(t.map(o=>o._id));return(await x.userUtils.creatorsInList(a)).filter(o=>o).length}async function cr(e){let t=[],r=!e._id,a=0;if(delete e.users,!e._id)e._id=M.generateUserGroupID(),await pf(e.name),t.push(x.events.group.created(e));else{let o=await M.get(e._id);if(o.name!==e.name&&await pf(e.name),t.push(x.events.group.updated(e)),JSON.stringify(o.roles)!==JSON.stringify(e.roles)){let s=o.users?.length||0,i=0;s>0&&(i=await cf(o)),Object.values(e.roles).includes("CREATOR")?a=s-i:a=-s,t.push(x.events.group.permissionsEdited(e))}}await Promise.all(t);let n=()=>M.save(e);if(r)return await ns(n);{let o=await n();if(a>0)await dn(0,a);else if(a<0){let s=await cf(e),i=Math.abs(a)-s;i>0&&await pr(0,i)}return o}}async function ps(e,t){let r;try{r=await M.get(e)}catch{throw new Error("Group not found")}let a=Object.values(r.roles||{}).includes("CREATOR"),n=()=>{};if(a){let s=x.tenancy.getGlobalDB(),i=await M.getGroupUsers(e),f=(await Promise.all(i.map(b=>s.get(b._id)))).map(b=>({...b,userGroups:b.userGroups.filter(E=>E!==e)})),g=(await x.userUtils.creatorsInList(f)).filter(b=>b).length,h=i.length-g;h&&(n=()=>pr(0,h))}let o=await M.destroy(e,t);return await x.events.group.deleted(r),await os(),await n(),o}async function cs(e,t){let r=await M.get(e),a=await x.users.bulkGetGlobalUsersById(t),n=[];for(let p of a)p.userGroups||(p.userGroups=[]),p.userGroups.includes(e)||n.push(p);if(!n.length)return n;let o=n.map(p=>({...p,userGroups:[...p?.userGroups||[],e]}));if(await x.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes("CREATOR")){let f=(await x.userUtils.creatorsInList(n)).filter(g=>g).length,m=n.length-f;m&&await dn(0,m)}let i=[];for(let p of t)i.push(x.cache.user.invalidateUser(p));return await Promise.all(i),await x.events.group.usersAdded(o.length,r),o}async function ls(e,t){let r=await M.get(e),a=await x.users.bulkGetGlobalUsersById(t),n=[];for(let i of a){if(!i.userGroups||!i.userGroups.includes(e))continue;let p=i.userGroups.indexOf(e);i.userGroups.splice(p,1),n.push(i)}if(await x.users.bulkUpdateGlobalUsers(n),Object.values(r.roles||{}).includes("CREATOR")){let p=(await x.userUtils.creatorsInList(n)).filter(m=>m).length,f=n.length-p;f&&await pr(0,f)}let s=[];for(let i of t)s.push(x.cache.user.invalidateUser(i));return await Promise.all(s),n.length&&await x.events.group.usersDeleted(n.length,r),n}async function ds(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 cr(r)}async function A_(e){let t=await fa(),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 fs(e,t){if(!await Pt())throw new Error("Feature not enabled, please check license");let r=x.db.getProdAppID(t),a=await qt(e);a.builder??={apps:[]},a.builder.apps.includes(t)||(a.builder.apps.push(r),await cr(a))}async function ms(e,t){if(!await Pt())throw new Error("Feature not enabled, please check license");let r=x.db.getProdAppID(t),a=await qt(e);a.builder?.apps.includes(t)&&(a.builder.apps=a.builder.apps.filter(n=>n!==r),await cr(a))}async function b_(){if(!await Zo()){let e=x.tenancy.getGlobalDB(),r=(await fa()||[]).filter(a=>Object.values(a?.roles||{}).includes("CREATOR"));for(let a of r){let n=await M.getGroupUsers(a._id),s=(await Promise.all(n.map(m=>e.get(m._id)))).map(m=>({...m,userGroups:m.userGroups.filter(g=>g!==a._id)})),p=(await x.userUtils.creatorsInList(s)).filter(m=>m).length,f=n.length-p;await M.save({...a,roles:{}}),f&&await pr(0,f)}}}ma.users.UserDB.init(je,Q,Pe);var We=ma.users.UserDB;async function I_(e,t){if(!await Pt())throw new Error("Feature not enabled, please check license");await ma.users.addAppBuilder(e,t)}async function S_(e,t){if(!await Pt())throw new Error("Feature not enabled, please check license");await ma.users.removeAppBuilder(e,t)}var yn={};w(yn,{logs:()=>ws});var ws={};w(ws,{logSearch:()=>P_,oldestLogDate:()=>Sf,storeLog:()=>L_});var If=require("@budibase/types"),hn=require("@budibase/backend-core");var gt=require("@budibase/types");var Z=require("@budibase/backend-core");var gf=require("@budibase/backend-core");async function hf(e,t){let r,a=5,n=!1,o,s=!0;for(;a>0;a--)try{s?o=await e():o=await exports.randomDelay(e),n=!0;break}catch(i){r=i}return n||gf.logging.logWarn(`Failed to backoff: ${t}`,r),o}var{SEPARATOR:et,UNICODE_MAX:w_,DocumentType:yf,AutomationViewMode:gs,ViewName:v_,getQueryIndex:T_}=Z.db,E_=new Date(0).toISOString(),R_=100,hs=async()=>Ma(gt.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS);function Af(e,t,{status:r,automationId:a}={},n={}){let o=a?`${a}${et}`:"",s=r?`${r}${et}`:"",i;return r&&a?i=`${gs.ALL}${et}${s}${o}`:r?i=`${gs.STATUS}${et}${s}`:a?i=`${gs.AUTOMATION}${et}${o}`:i=`${yf.AUTOMATION_LOG}${et}`,{...n,descending:!0,startkey:`${i}${t}${w_}`,endkey:`${i}${e}`}}function ys(e){let t=gt.AutomationStatus.SUCCESS,r=!0;for(let a of e.steps){let n=a.outputs?.status?.toLowerCase(),o=n==="stopped_error";if(r&&!o){r=!1;continue}if(o){t=gt.AutomationStatus.STOPPED_ERROR;break}else if(a.outputs?.success){if(n==="stopped"){t=gt.AutomationStatus.STOPPED;break}}else{t=gt.AutomationStatus.ERROR;break}}return t}function x_(e,t,r){return`${yf.AUTOMATION_LOG}${et}${e}${et}${r}${et}${t}`}async function As(e,t,r={docs:!0}){let a=Z.context.getProdAppDB();await a.exists()||(a=Z.context.getDevAppDB());let n={status:r.status},o=r?.limit?r.limit:r?.paginate?9+1:void 0,s=Af(e,t,n,{include_docs:r.docs,limit:o});r?.page&&(s.startkey=r.page);let i=await a.allDocs(s);return xr(i,{paginate:r?.paginate,pageSize:9})}async function bs(e,t,r={}){let a=Z.context.getProdAppDB();await a.exists()||(a=Z.context.getDevAppDB());let n;try{let o={automationId:r?.automationId,status:r?.status},s=Af(e,t,o,{include_docs:!0,limit:9+1});r?.page&&(s.startkey=r.page),n=await a.query(T_(v_.AUTOMATION_LOGS),s)}catch(o){if(o!=null&&(o.name==="not_found"||o.error==="not_found"))return await ju(),bs(e,t,r);throw o}return xr(n,{paginate:!0,pageSize:9})}async function bf(e,t){let r=Z.context.getProdAppDB(),a=e._id,n=e.name,o=ys(t),s=new Date().toISOString(),i=x_(s,o,a),p={...t,automationId:a,status:o,automationName:n,createdAt:s,_id:i};return await r.put(p),i}async function Is(e,{clearing:t}={clearing:!1}){let r=Z.context.getProdAppDB();await hf(async()=>{let a=await r.get(Z.db.DocumentType.APP_METADATA);for(let n of e){let o=n.split(Z.db.SEPARATOR),s=`${o[o.length-3]}${Z.db.SEPARATOR}${o[o.length-2]}`,i={};a.automationErrors&&(i=a.automationErrors),Array.isArray(i[s])||(i[s]=[]);let p=i[s].indexOf(n);t&&p!==-1?i[s].splice(p,1):i[s].push(n),i[s].length===0&&delete i[s],a.automationErrors=i}await r.put(a),await Z.cache.app.invalidateAppMetadata(a.appId,a)},"Failed to update app metadata with automation log error")}async function __(){let e=await hs();try{return await As(E_,e,{docs:!1,paginate:!1,limit:R_})}catch{return{data:[],hasNextPage:!1}}}async function Ss(){let e=Z.context.getProdAppDB();try{let t=await __();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]===gt.AutomationStatus.ERROR}).map(n=>n.id);await e.bulkDocs(r),a.length&&await Is(a,{clearing:!0})}catch(t){Z.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}var Sf=hs;async function O_(e,t,r,a){let n,o=new Date().toISOString(),s=await Sf();return(!e||e<s)&&(e=s),r||t?n=await bs(e,o,{automationId:r,status:t,page:a}):n=await As(e,o,{status:t,page:a,docs:!0,paginate:!0}),n}async function P_(e){return await Ss(),await O_(e.startDate,e.status,e.automationId,e.page)}async function L_(e,t){if(!hn.db.isProdAppID(hn.context.getAppId()))return;let r=ys(t),a=await bf(e,t);r===If.AutomationStatus.ERROR&&await Is([a]),await Ss()}var An={};w(An,{checkPluginQuotas:()=>U_,deletePlugin:()=>q_,storePlugin:()=>C_});var Ef=require("@budibase/types"),H=require("@budibase/backend-core");var wf=C(require("fs")),vf=require("path");function Tf(e,t){return wf.default.readFileSync((0,vf.join)(e,t),"utf8")}async function C_(metadata,directory,source){let db=H.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=H.objectStore.getPluginS3Dir(name),files=await H.objectStore.uploadDirectory(H.objectStore.ObjectStoreBuckets.PLUGINS,directory,bucketPath),jsFile=files.find(e=>e.name.endsWith(".js")),iconFile=files.find(e=>e.name.endsWith(".svg"));if(!jsFile)throw new Error("Plugin missing .js file.");if(metadata.schema.type===Ef.PluginType.DATASOURCE){let js=Tf(directory,jsFile.name);try{eval(js)}catch(e){let t=e?.message?e.message:JSON.stringify(e);throw new Error(`JS invalid: ${t}`)}}let iconFileName=iconFile?iconFile.name:null,pluginId=H.db.generatePluginID(name),rev;try{rev=(await db.get(pluginId))._rev}catch(e){rev=void 0}let doc={_id:pluginId,_rev:rev,...metadata,name,version,hash,description,source};iconFileName&&(doc.iconFileName=iconFileName),source&&(doc={...doc,source});let write=async()=>{let e=await db.put(doc);return await H.events.plugin.imported(doc),{...doc,_rev:e.rev}};return rev?await write():await ss(write)}async function q_(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 is()}catch(r){let a=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${a}`)}}async function U_(){let e=H.tenancy.getGlobalDB();try{let r=(await e.allDocs(H.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await us(r)}catch(t){H.logging.logAlert("Unable to retrieve plugins for quota check",t)}}var $e={};w($e,{fetch:()=>N_,fetchValues:()=>B_,isEncryptionKeyAvailable:()=>D_,isValid:()=>_f,remove:()=>G_,update:()=>M_});var ga=require("@budibase/types"),Rf=require("@budibase/backend-core");function D_(){return!!Rf.env.ENCRYPTION_KEY}async function N_(){let e=await Et.get();return Object.keys(e.variables)}async function B_(e){let r=(await Et.get()).variables,a={};for(let[n,o]of Object.entries(r))switch(e){case ga.AppEnvironment.DEVELOPMENT:a[n]=o.development;break;case ga.AppEnvironment.PRODUCTION:default:a[n]=o.production;break}return a}async function xf(e){if(!(await ke.cache.getCachedLicense()).features.includes(ga.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 M_(e,t){if(_f(e))await xf(a=>(a[e]=t,a));else throw new Error("Variable name has characters that are not allowed")}async function G_(e){await xf(t=>(delete t[e],t))}function _f(e){return/^[a-zA-Z0-9-_]+$/.test(e)}var ht={};w(ht,{definitions:()=>z_,download:()=>H_,fetch:()=>Y_,write:()=>V_});var In=require("@budibase/types");var $=require("@budibase/backend-core"),qe=require("@budibase/types");var Of=require("memorystream"),Pf=new $.sql.Sql(qe.SqlClient.SQL_LITE);async function k_(e,t,r){let a={operation:qe.Operation.READ,table:jt.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:qe.SortOrder.DESCENDING,type:qe.SortType.STRING}}},n=Pf._query(a);if(Array.isArray(n))throw new Error("Cannot execute multiple queries for audit log search");return{sql:n.sql,bindings:n.bindings}}function F_(e){return`${$.DocumentType.AUDIT_LOG}${$.SEPARATOR}${e}${$.SEPARATOR}${$.utils.newid()}`}async function Lf(e){e._id||(e._id=F_(e.timestamp)),e.type||(e.type=qe.AUDIT_LOG_TYPE);try{let r=await $.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){$.logging.logAlert("Failed to write audit log",t)}}async function vs(e,t,r){t||(t=1);let a=$.context.getAuditLogsDB();try{let n=9+1,o=await k_(e,t,n),s=jt.searchTable(),i=Pf.convertJsonStringColumns(s,await a.sql(o.sql,o.bindings)),p;i.length>n&&(p=i.pop());let f={rows:i,hasNextPage:!!p};return f.hasNextPage&&(f.bookmark=t+1),f}catch(n){if(n.status===404&&!r?.isRetry)return await Q_(),await qu(),await vs(e,t,{isRetry:!0});throw n}}async function Q_(){let e=$.context.getAuditLogsDB(),r=(await e.allDocs($.db.getDocParams($.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(a=>a.doc).filter(a=>a&&!a.type).map(a=>({...a,type:qe.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}function Cf(e){let t=$.context.getAuditLogsDB(),r=new Of,a=t.dump(r,{filter:o=>{let s=o;if(!s._id?.startsWith($.DocumentType.AUDIT_LOG))return!1;let i=!0,p=(f,m)=>{!f||f.length===0||(i=!!(i&&m&&f.includes(m)))};if(p(e.userIds,s.userId),p(e.appIds,s.appId),p(e.events,s.event),(e.startDate||e.endDate)&&(i=i&&s.timestamp>=e.startDate&&s.timestamp<=e.endDate),e.fullSearch){let f=JSON.stringify(o);i=i&&f.includes(e.fullSearch)}return i}}),n=new Of;return r.on("data",o=>{let s=JSON.parse(Buffer.from(o).toString());if(Array.isArray(s.docs)){let i="";for(let p of s.docs)i+=JSON.stringify(p)+`
|
|
38
|
-
`;n.write(i)}}),r.on("end",()=>{n.end()}),{promise:a,stream:n}}var ce=require("@budibase/backend-core");var bn=require("@budibase/types"),ha=require("@budibase/string-templates"),ya=require("@budibase/backend-core"),W_=ya.constants.MIN_VALID_DATE.toISOString(),$_=ya.constants.MAX_VALID_DATE.toISOString();function Ts(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||W_,e.endDate=e.endDate||$_),e}async function qf(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(a=>ya.db.getProdAppID(a)));let t={};function r(a,n){n?.length&&(t.oneOf={...t.oneOf,[a]:n})}return r("userId",e.userIds),r("appId",e.appIds),r("event",e.events),e.fullSearch&&(t.fuzzyOr=!0,t.fuzzy={name:e.fullSearch,fallback:e.fullSearch}),(e.startDate||e.endDate)&&(e=Ts(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}function Es(e,t,r){let a={_id:e,status:bn.AuditLogResourceStatus.DELETED};switch(t){case"app":a.name=r?.appName;break;case"user":a.email=r?.email;break}return a}function Rs(e){let t=(0,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 Uf(e,t){let r=bn.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let a=(0,ha.processStringSync)(r,t);return a.includes('""')&&(a=Rs(r)),a}async function V_(e,t,r){if(!await pn()||!ce.utils.isAudited(e))return;let a=Uf(e,t),n=new Date;r?.timestamp&&(n=new Date(r.timestamp));let o={timestamp:n.toISOString(),event:e,name:a,userId:r?.userId||In.AuditLogSystemUser,metadata:{...t,...r?.hostInfo}},s={};try{if(r?.appId){o.appId=ce.db.getProdAppID(r.appId);let i=await ce.cache.app.getAppMetadata(r.appId);"name"in i&&(s.appName=i.name)}if(r?.userId){let i=await ce.users.getById(r?.userId);s.email=i.email}}catch(i){ce.logging.logAlert("Failed to retrieve fallback information for audit log",i)}return o.fallback=s,await Lf(o)}async function K_(e){let t=e.map(i=>i.userId),a=e.filter(i=>i.appId).map(i=>ce.db.getDevAppID(i.appId)),n=await ce.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),o=await ce.db.getAppsByIDs([...new Set(a)]),s=[];for(let i of e){let p=n.find(g=>g?._id===i.userId),f=o.find(g=>ce.db.isSameAppID(g?.appId,i.appId)),m={event:i.event,timestamp:i.timestamp,name:i.name,metadata:i.metadata,user:p||Es(i.userId,"user",i.fallback)};i.appId&&(m.app=f||Es(i.appId,"app",i.fallback)),s.push(m)}return s}async function Y_(e){if(!await pn())throw new Error("Audit logs not available - license required.");let t=await qf(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await vs(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await K_(r.rows)}}function H_(e){return e=Ts(e),Cf(e)}function z_(){let e=Object.entries(In.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=Rs(r[1]);return t}var Sn={};w(Sn,{applications:()=>Ps,roles:()=>_s,users:()=>xs});var xs={};w(xs,{roleCheck:()=>X_});function J_(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 X_(e,t){return await Je()||J_(e,t),e}var _s={};w(_s,{assign:()=>Z_,unAssign:()=>eO});var Aa=require("@budibase/backend-core");async function Z_(e,t){if(!await Je())throw new Error("Unable to assign roles - license required.");let r=await We.bulkGet(e);for(let a of r){if(t.role&&t.role.roleId){let n=Aa.db.getProdAppID(t.role.appId);a.roles[n]=t.role.roleId}if(t.appBuilder){let n=Aa.db.getProdAppID(t.appBuilder.appId),o=a.builder?.apps||[];a.builder={apps:o.concat([n])}}t.builder&&(a.builder={global:!0}),t.admin&&(a.admin={global:!0}),a.roles}await We.bulkUpdate(r)}async function eO(e,t){if(!await Je())throw new Error("Unable to un-assign roles - license required.");let r=await We.bulkGet(e);for(let a of r){if(t.role){let n=Aa.db.getProdAppID(t.role?.appId);a.roles[n]===t.role.roleId&&delete a.roles[n]}if(t.appBuilder&&a.builder?.apps){let n=Aa.db.getProdAppID(t.appBuilder.appId);a.builder.apps=a.builder.apps.filter(o=>o!==n)}t.builder&&a.builder&&delete a.builder,t.admin&&a.admin&&delete a.admin}}var Ps={};w(Ps,{buildExportFn:()=>rO,buildImportFn:()=>tO});var Os=require("@budibase/backend-core");function tO(e){return async(t,r)=>{await Je()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await Os.context.doInAppContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}function rO(e){return async(t,r)=>{await Je()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:a,excludeRows:n}=t.request.body;await Os.context.doInAppContext(t.params.appId,async()=>{t.request.body={encryptPassword:a,excludeRows:n},t.query.appId=t.params.appId,await e(t),await r()})}}var Ve=require("@budibase/backend-core"),ie=require("@budibase/types");var Ls=require("@budibase/backend-core"),Df;function Nf(){Df=new Ls.queue.BudibaseQueue(Ls.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}function Ut(){return Df}var Bf=require("path"),Mf=C(require("fs"));async function Cs(e,t={}){return we.storeAppBackupMetadata(e,t)}function Gf(e){let t=new Date().toISOString();switch(e){case ie.AppBackupStatus.COMPLETE:case ie.AppBackupStatus.FAILED:return{timestamp:t,finishedAt:t};case ie.AppBackupStatus.STARTED:return{timestamp:t,startedAt:t};case ie.AppBackupStatus.PENDING:return{timestamp:t,createdAt:t}}}async function aO(e,t,r,a){let n=await wn(e);return await we.storeAppBackupMetadata({...n,...Gf(t),contents:r,status:t,type:ie.AppBackupType.BACKUP},{filename:a,docId:e})}async function nO(e,t,r){let a=await wn(e);return await we.storeAppBackupMetadata({...a,...Gf(r),status:r,type:ie.AppBackupType.RESTORE,trigger:ie.AppBackupTrigger.MANUAL},{docId:e,docRev:t})}async function wn(e){return we.getAppBackupMetadata(e)}async function oO(e,t){return we.updateAppBackupMetadata(e,t)}async function sO(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 iO(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 uO(e){let{stream:t}=await kf(e),r=(0,Bf.join)(Ve.objectStore.budibaseTempDir(),Ve.utils.newid()),a=Mf.default.createWriteStream(r);return new Promise((n,o)=>{t.on("error",o),a.on("error",o),t.pipe(a).on("close",()=>n(r))})}async function pO(e,t,r={}){let a;try{a=await Cs({appId:e,trigger:t,timestamp:new Date().toISOString(),status:ie.AppBackupStatus.PENDING,type:ie.AppBackupType.BACKUP,...r})}catch(n){if(n.status===409)return;throw n}return await 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 cO(e,t,r,a){let n=await wn(t),o;try{o=await Cs({appId:e,timestamp:new Date().toISOString(),status:ie.AppBackupStatus.PENDING,type:ie.AppBackupType.RESTORE,createdBy:a})}catch(s){if(s?.status===409)return;throw s}return await Ut().add({appId:e,docId:o.id,docRev:o.rev,import:{nameForBackup:r,backupId:t,createdBy:a}}),{restoreId:o.id,metadata:n}}var lO={isEnabled:Jo,triggerAppRestore:he(cO),triggerAppBackup:he(pO),getBackupDownloadStream:he(kf),downloadAppBackup:he(uO),fetchAppBackups:he(iO),storeAppBackupMetadata:he(Cs),updateBackupStatus:he(aO),updateRestoreStatus:he(nO),getAppBackup:he(wn),updateAppBackup:he(oO),deleteAppBackup:he(sO)},tt=lO;var Us={};w(Us,{init:()=>qs});var z=require("@budibase/backend-core");var Ue=require("@budibase/types");var lr=C(require("fs"));async function qs(e){Ut().process(async t=>{let r=t.data;try{if(r.export)return mO(t,e);if(r.import)return fO(t,e)}catch(a){z.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,a)}})}async function dO(e){await z.db.getDB(e,{skip_setup:!0}).destroy()}async function Ff(e,t,r,a){let n=z.db.getDevAppID(r),o=z.db.getProdAppID(r),s=new Date().toISOString(),i=async(p,f)=>{a?.doc?await tt.updateBackupStatus(a.doc.id,p,f?.contents,f?.filename):await tt.storeAppBackupMetadata({appId:o,timestamp:s,trigger:e,status:p,name:a?.name,type:Ue.AppBackupType.BACKUP,contents:f?.contents,createdBy:a?.createdBy},{filename:f?.filename})};try{let p=await a.processing.exportAppFn(n,{tar:!0}),f=await a.processing.statsFn(n),m=`${o}/backup-${s}.tar.gz`,g=z.objectStore.ObjectStoreBuckets.BACKUPS,h=lr.default.createReadStream(p);await z.objectStore.streamUpload({bucket:g,filename:m,stream:h,extra:{type:"application/gzip",metadata:{name:a?.name,trigger:e,timestamp:s,appId:o}}}),await i(Ue.AppBackupStatus.COMPLETE,{filename:m,contents:f}),lr.default.existsSync(p)&&lr.default.rmSync(p)}catch(p){z.logging.logAlert("App backup error",p),await i(Ue.AppBackupStatus.FAILED)}}async function fO(e,t){let r=e.data,a=r.appId,n=r.import.backupId,o=r.import.nameForBackup,s=r.import.createdBy,i=z.tenancy.getTenantIDFromAppID(a);return z.tenancy.doInTenant(i,async()=>{let p=z.db.getDevAppID(a),{rev:f}=await tt.updateRestoreStatus(r.docId,r.docRev,Ue.AppBackupStatus.STARTED);await Ff(Ue.AppBackupTrigger.RESTORING,i,a,{processing:t,createdBy:s,name:o});let m=await tt.downloadAppBackup(n);await dO(p);let g=Ue.AppBackupStatus.COMPLETE;try{await t.importAppFn(p,z.db.getDB(p),{file:{type:"application/gzip",path:m},key:m})}catch(h){z.logging.logAlert("App restore error",h),g=Ue.AppBackupStatus.FAILED}await tt.updateRestoreStatus(r.docId,f,g),lr.default.existsSync(m)&&lr.default.rmSync(m,{force:!0})})}async function mO(e,t){let r=e.data,a=r.appId,n=r.export.trigger,o=r.export.name,s=z.tenancy.getTenantIDFromAppID(a);await z.tenancy.doInTenant(s,async()=>{try{let{rev:i}=await tt.updateBackupStatus(r.docId,Ue.AppBackupStatus.STARTED);return Ff(n,s,a,{processing:t,doc:{id:r.docId,rev:i},name:o})}catch(i){z.logging.logAlert("App backup error",i)}})}var gO=async e=>{Nf(),await qs(e.processing)},Te={...tt,processing:Us,init:gO,getBackupQueue:Ut};var Qf=async e=>{e.backups&&await Te.init(e.backups)};var de={};w(de,{create:()=>uM,find:()=>iM,get:()=>sM,remove:()=>cM,update:()=>pM});var cA=C(Oi()),rt=require("@budibase/backend-core");var lA=require("@budibase/types");async function sM(e){let t=rt.tenancy.getGlobalDB(),r=new rt.db.QueryBuilder(t.name,lA.SearchIndex.USER);r.setIndexBuilder(rt.db.searchIndexes.createUserIndex),r.setLimit(e.pageSize),r.addEqual("scimInfo.isSync",!0);for(let[n,o]of Object.entries(e.filters?.equal??{}))r.addEqual(n,o);r.setSort("_id"),r.setSkip(e.skip);let a=await r.run();return{users:a.rows,total:a.totalRows}}async function iM(e){return await rt.users.getById(e)}async function uM(e){let t=await We.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new rt.HTTPError("User is already synched",409);e={...t,scimInfo:(0,cA.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await We.save(e,{requirePassword:!1})}async function pM(e,t){return await We.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}async function cM(e){return await We.destroy(e)}var yr={};w(yr,{create:()=>lM});var dA=C(Oi());var fA=require("@budibase/backend-core");async function lM(e){let t=await ro(e.name),r;if(!t)r=(await Q.save(e)).id;else{if(t.scimInfo?.isSync)throw new fA.HTTPError("Group is already synched",409);r=t._id,t.users&&(await Q.removeUsers(r,t.users.map(n=>n._id)),delete t.users),t.scimInfo=(0,dA.default)(t.scimInfo,e.scimInfo),await Q.save(t)}return await Q.get(r)}var Nt={};w(Nt,{logRequest:()=>dM,logResponse:()=>fM});var Pi=require("@budibase/backend-core");async function dM(e){Pi.logging.logWarn("SCIM request log",e)}async function fM(e){Pi.logging.logWarn("SCIM response error",e)}var Di={};w(Di,{doInScimContext:()=>Ci,feature:()=>j,internalGroupOnly:()=>Bn,licenseAuth:()=>hA,licensing:()=>mA,requireSCIM:()=>qi,scimGroupOnly:()=>wa,scimUserOnly:()=>Sa});var yt=require("@budibase/backend-core");var Dn=require("@budibase/types"),mM=(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=no,r();t.user.license=await ke.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 je.usageLimitIsExceeded(Dn.StaticQuotaName.USERS,Dn.QuotaUsageType.STATIC)}return r()},mA=mM;var j={};w(j,{requireFeature:()=>gM,requireFeatures:()=>hM});var gM=e=>async(t,r)=>{await un(e),await r()},hM=(...e)=>async(t,r)=>{await zo(e),await r()};var Nn=require("@budibase/backend-core");var Ci=async(e,t)=>(Nn.env.DISABLE_SCIM_CALLS||await Nt.logRequest({...e.request.toJSON(),body:e.request.body}),await Nn.context.doInScimContext(async()=>{let r=await t();return await Nt.logResponse({...e.response.toJSON(),body:e.response.body}),r}));var qi=async(e,t)=>{await es(),await t()};var gA=require("@budibase/backend-core");var Sa=e=>Ui(gA.users.getById,e,!0),wa=e=>Ui(M.get,e,!0),Bn=e=>Ui(M.get,e,!1);function Ui(e,t,r){return async(a,n)=>{let o=a.params[t];return typeof o!="string"&&a.throw(404),!!(await e(o)).scimInfo?.isSync!==r&&a.throw(404),n()}}var va=require("@budibase/backend-core");async function hA(e,t){let r=e.request.headers[va.constants.Header.LICENSE_KEY];Array.isArray(r)&&(r=r[0]),r||e.throw(403,"License key not provided");let a=await Vo(r);a||e.throw(403,"License not found or invalid"),a.tenantId||e.throw(403,"License does not have a tenant ID"),await va.context.doInSelfHostTenantUsingCloud(a.tenantId,async()=>{await va.context.doInLicenseContext(a,async()=>{await t()})})}var Wi={};w(Wi,{appBackups:()=>tb,auditLogs:()=>$A,environmentVariables:()=>BA,groups:()=>_A,scim:()=>Cb,users:()=>Bb});async function yA(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let a=await qt(t._id);t.roles=a.roles,t.scimInfo=a.scimInfo}let r=await cr(t);e.body={_id:r.id,_rev:r.rev}}async function AA(e){let t=e.params.groupId,r=e.request.body.add,a=e.request.body.remove;(r&&!Array.isArray(r)||a&&!Array.isArray(a))&&e.throw(400,"Must supply a list of users to add or to remove");let n,o;r&&(n=await cs(t,r)),a&&(o=await ls(t,a)),e.body={added:n,removed:o}}async function bA(e){let t=e.params.groupId,r=e.request.body.add,a=e.request.body.remove;(r&&!Array.isArray(r)||a&&!Array.isArray(a))&&e.throw(400,"Must supply a list of objects, with appId and roleId to add or remove"),e.body=await ds(t,{appsToAdd:r,appsToRemove:a})}async function IA(e){e.body={data:await fa()}}async function SA(e){let{groupId:t,rev:r}=e.params;try{await ps(t,r),e.body={message:"Group deleted successfully"}}catch(a){e.throw(a.status,a)}}async function wA(e){try{e.body=await qt(e.params.groupId)}catch(t){e.throw(t.status,t)}}async function vA(e){let{pageSize:t=10,bookmark:r,emailSearch:a}=e.request.query,n=e.params.groupId,o={limit:t+1},s=await Na(n,{...o,emailSearch:a,bookmark:r}),i=a?s[t]?.email:s[t]?._id,p=!!i;e.body={users:s.slice(0,t),bookmark:i,hasNextPage:p}}async function TA(e){let{groupId:t,appId:r}=e.params;await fs(t,r),e.body={message:"Group app builder access updated."}}async function EA(e){let{groupId:t,appId:r}=e.params;await ms(t,r),e.body={message:"group app builder access removed."}}var RA=C(require("@koa/router")),ye=C(require("joi"));var Ee=require("@budibase/types"),Ke=require("@budibase/backend-core"),xA=new RA.default;function AM(){return Ke.auth.joiValidator.body(ye.default.object({_id:ye.default.string().optional(),_rev:ye.default.string().optional(),color:ye.default.string().required(),icon:ye.default.string().required(),name:ye.default.string().trim().required().max(50),role:ye.default.string().optional(),users:ye.default.array().optional(),apps:ye.default.array().optional(),roles:ye.default.object().optional(),createdAt:ye.default.string().optional(),updatedAt:ye.default.string().optional()}).required())}xA.post("/api/global/groups",Ke.auth.adminOnly,j.requireFeature(Ee.Feature.USER_GROUPS),AM(),yA).get("/api/global/groups",j.requireFeature(Ee.Feature.USER_GROUPS),IA).delete("/api/global/groups/:groupId/:rev",j.requireFeature(Ee.Feature.USER_GROUPS),Ke.auth.adminOnly,Bn("groupId"),SA).get("/api/global/groups/:groupId",j.requireFeature(Ee.Feature.USER_GROUPS),Ke.auth.builderOrAdmin,wA).get("/api/global/groups/:groupId/users",j.requireFeature(Ee.Feature.USER_GROUPS),Ke.auth.builderOrAdmin,vA).post("/api/global/groups/:groupId/users",Ke.auth.adminOnly,j.requireFeature(Ee.Feature.USER_GROUPS),Bn("groupId"),AA).post("/api/global/groups/:groupId/apps",Ke.auth.builderOrAdmin,j.requireFeature(Ee.Feature.USER_GROUPS),bA).post("/api/global/groups/:groupId/app/:appId/builder",Ke.auth.builderOrAdmin,j.requireFeatures(Ee.Feature.USER_GROUPS,Ee.Feature.APP_BUILDERS),TA).delete("/api/global/groups/:groupId/app/:appId/builder",Ke.auth.builderOrAdmin,j.requireFeatures(Ee.Feature.USER_GROUPS,Ee.Feature.APP_BUILDERS),EA);var _A=xA;var Ni=require("@budibase/types");var Bi=require("@budibase/backend-core");async function OA(e){e.body={encryptionKeyAvailable:$e.isEncryptionKeyAvailable()}}async function PA(e){e.body={variables:await $e.fetch()}}async function LA(e){let{name:t,production:r,development:a}=e.request.body;await $e.update(t,{production:r,development:a});let n=[Ni.AppEnvironment.PRODUCTION];r!==a&&n.push(Ni.AppEnvironment.DEVELOPMENT),await Bi.events.environmentVariable.created(t,n),e.body={message:`Environment variable "${t}" created.`}}async function CA(e){let{production:t,development:r}=e.request.body,a=e.params.varName;await $e.update(a,{production:t,development:r}),e.body={message:`Environment variable "${a}" updated.`}}async function qA(e){let t=e.params.varName;await $e.remove(t),await Bi.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}var Bt=require("@budibase/backend-core"),DA=C(require("@koa/router")),Ta=C(require("joi")),NA=new DA.default;function UA(){return Bt.auth.joiValidator.body(Ta.default.object({name:Ta.default.string().optional(),production:Ta.default.string().required(),development:Ta.default.string().required()}))}NA.get("/api/env/variables/status",Bt.auth.builderOrAdmin,OA).get("/api/env/variables",Bt.auth.builderOrAdmin,PA).post("/api/env/variables",Bt.auth.builderOrAdmin,UA(),LA).patch("/api/env/variables/:varName",Bt.auth.builderOrAdmin,UA(),CA).delete("/api/env/variables/:varName",Bt.auth.builderOrAdmin,qA);var BA=NA;var Mi=require("@budibase/backend-core");async function MA(e){let t=e.request.body,r=await ht.fetch(t);await Mi.events.auditLog.filtered(t),e.body=r}async function GA(e){let t=e.request.body,{stream:r}=ht.download(t);await Mi.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}async function kA(e){e.body={events:ht.definitions()}}var QA=require("@budibase/types"),Mt=require("@budibase/backend-core"),jA=C(require("@koa/router")),Re=C(require("joi"));function FA(){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(QA.Event))).optional(),startDate:Re.default.string().optional().allow(""),endDate:Re.default.string().optional().allow(""),fullSearch:Re.default.string().optional().allow(""),bookmark:Re.default.number()}))}var WA=new jA.default;WA.post("/api/global/auditlogs/search",Mt.auth.adminOnly,FA(),MA).get("/api/global/auditlogs/download",Mt.auth.adminOnly,Mt.middleware.querystringToBody,FA(),GA).get("/api/global/auditlogs/definitions",Mt.auth.adminOnly,kA);var $A=WA;var Gi=require("@budibase/types");var VA=require("@budibase/backend-core");async function Ar(e,t){await Vt.appExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}async function KA(e){let t=e.params.appId;await Ar(e,t);let r=e.request.body,a=e.user?._id,n=await Te.triggerAppBackup(t,Gi.AppBackupTrigger.MANUAL,{name:r.name,createdBy:a});n||e.throw(500,"Unable to start backup."),e.body={backupId:n,message:"Backup triggered - process starting."}}async function YA(e){let t=e.params.appId;await Ar(e,t);let r=e.params.backupId,a=e.request.body.name,n=await Te.triggerAppRestore(t,r,a,e.user?._id);n||e.throw(500,"Unable to start restore."),await VA.events.backup.appBackupRestored(n.metadata),e.body={restoredId:n?.restoreId,message:"Restore triggered - process starting."}}async function HA(e){let t=e.params.appId;await Ar(e,t);let r=e.params.backupId;await Te.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}async function zA(e){let t=e.params.appId;await Ar(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(Gi.AppBackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await Te.fetchAppBackups(t,{paginate:!0,...r})}async function JA(e){let t=e.params.appId;await Ar(e,t);let r=e.params.backupId,a=e.request.body;e.body=await Te.updateAppBackup(r,a.name)}async function XA(e){let t=e.params.appId;await Ar(e,t);let r=e.params.backupId,{metadata:a,stream:n}=await Te.getBackupDownloadStream(r);e.attachment(`backup-${a.timestamp}.tar.gz`),e.body=n}var ZA=C(require("@koa/router")),Gt=C(require("joi")),Mn=require("@budibase/types"),At=require("@budibase/backend-core"),eb=new ZA.default;function wM(){return At.auth.joiValidator.body(Gt.default.object({trigger:Gt.default.string().valid(...Object.values(Mn.AppBackupTrigger)),type:Gt.default.string().valid(...Object.values(Mn.AppBackupType)),startDate:Gt.default.date(),endDate:Gt.default.date(),page:Gt.default.string()}))}eb.post("/api/apps/:appId/backups",At.auth.builderOrAdmin,KA).post("/api/apps/:appId/backups/search",At.auth.builderOrAdmin,wM(),zA).get("/api/apps/:appId/backups/:backupId/file",At.auth.builderOrAdmin,XA).patch("/api/apps/:appId/backups/:backupId",At.auth.builderOrAdmin,JA).delete("/api/apps/:appId/backups/:backupId",At.auth.builderOrAdmin,HA).post("/api/apps/:appId/backups/:backupId/import",At.auth.builderOrAdmin,YA);var tb=eb;var Lb=C(require("@koa/router"));var Gn=require("scim-patch");var ab=require("@budibase/backend-core");function rb(e,t){let r=e.request.query[t];if(r!==void 0)return+r}var nb=async e=>{let t=rb(e,"pageSize")??20,r=rb(e,"startIndex"),a;e.request.query.filter&&(a=V.user.userFilters(e.request.query.filter));let n=await de.get({pageSize:t,skip:r,filters:a});e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:n.total,Resources:n.users.map(V.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},ob=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await de.find(t);e.body=V.user.toScimUserResponse(r)},sb=async e=>{let t=V.user.fromScimUser(e.request.body);try{let r=await de.create(t);e.body=V.user.toScimUserResponse(r)}catch(r){throw r instanceof ab.EmailUnavailableError&&e.throw(409,"Email already in use"),r}};function vM(e){let t=e.Operations.find(r=>(r.op==="Replace"||r.op==="replace")&&r.path==="active");return t?t.value===!1||t.value?.toLowerCase?.()==="false":!1}var ib=async e=>{let t=await de.find(e.params.id);t||e.throw(404);let r=V.user.toScimUserResponse(t),a=e.request.body;try{(0,Gn.patchBodyValidation)(a)}catch{}if(vM(a))return ki(e);let n;try{n=(0,Gn.scimPatch)(r,a.Operations)}catch{}n||e.throw(500);let o=V.user.fromScimUser(n);await de.update(o,{allowChangingEmail:!0}),e.body=V.user.toScimUserResponse(o)},ki=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await de.remove(t),e.status=204};var vb=C(wb()),Tb=require("@budibase/shared-core"),kn=require("scim-patch");var Fn=require("scim2-parse-filter");function Eb(e,t){for(let r of t.split(","))delete e[r]}var Rb=async e=>{let r=(await Q.fetch()).filter(o=>o.scimInfo?.isSync).map(V.group.toScimGroupResponse),{filter:a,excludedAttributes:n}=e.request.query;if(a){let o=(0,Fn.filter)((0,Fn.parse)(a));r=r.filter(o)}n&&r.forEach(o=>{Eb(o,n)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},xb=async e=>{let t=V.group.fromScimGroup(e.request.body),r=await yr.create(t);e.body=V.group.toScimGroupResponse(r)},_b=async e=>{let{id:t}=e.params,r=await Q.get(t),a=V.group.toScimGroupResponse(r),{excludedAttributes:n}=e.request.query;n&&Eb(a,n),e.body=a},Ob=async e=>{let{id:t}=e.params,r=await Q.get(t);await Q.remove(t,r._rev),e.status=204},Pb=async e=>{let{id:t}=e.params,r=await Q.get(t),a=V.group.toScimGroupResponse(r),n=e.request.body;try{(0,kn.patchBodyValidation)(n)}catch{e.throw(400)}let{true:o,false:s}=(0,vb.default)(n.Operations,i=>i.path==="members");if(s?.length){let i=(0,kn.scimPatch)(a,s);i||e.throw(500);let p={...V.group.fromScimGroup(i),_rev:r._rev};await Q.save(p)}if(o?.length){let i=[],p=[];for(let{op:f,value:m}of o)switch(f){case"add":case"Add":for(let g of m)i.push(await de.find(g.value));break;case"remove":case"Remove":for(let g of m)p.push(await de.find(g.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:Tb.utils.unreachable(f)}i.length&&await Q.addUsers(t,i.map(f=>f._id)),p.length&&await Q.removeUsers(t,p.map(f=>f._id))}e.body=V.group.toScimGroupResponse(await Q.get(t))};var Ea=require("@budibase/types"),Ae=new Lb.default({prefix:"/api/global/scim/v2"});Ae.use(qi);Ae.use(Ci);Ae.get("/users",nb);Ae.get("/users/:id",Sa("id"),ob);Ae.post("/users",sb);Ae.patch("/users/:id",Sa("id"),ib);Ae.delete("/users/:id",Sa("id"),ki);Ae.get("/groups",Rb);Ae.post("/groups",j.requireFeature(Ea.Feature.USER_GROUPS),xb);Ae.get("/groups/:id",j.requireFeature(Ea.Feature.USER_GROUPS),wa("id"),_b);Ae.delete("/groups/:id",j.requireFeature(Ea.Feature.USER_GROUPS),wa("id"),Ob);Ae.patch("/groups/:id",j.requireFeature(Ea.Feature.USER_GROUPS),wa("id"),Pb);var Cb=Ae;var Db=C(require("@koa/router"));var Fi=require("@budibase/backend-core");async function qb(e){let{userId:t,appId:r}=e.params,a=await Ze.db.getUser(t);if(Fi.users.isGlobalBuilder(a)){e.body={message:"User already admin - no permissions updated."};return}await Ze.addAppBuilder(a,r),e.body={message:`User "${a.email}" app builder access updated.`}}async function Ub(e){let{userId:t,appId:r}=e.params,a=await Ze.db.getUser(t);if(Fi.users.isGlobalBuilder(a)){e.body={message:"User already admin - no permissions removed."};return}await Ze.removeAppBuilder(a,r),e.body={message:`User "${a.email}" app builder access removed.`}}var Qi=require("@budibase/types"),ji=require("@budibase/backend-core"),Nb=new Db.default;Nb.post("/api/global/users/:userId/app/:appId/builder",ji.auth.builderOrAdmin,j.requireFeatures(Qi.Feature.APP_BUILDERS),qb).delete("/api/global/users/:userId/app/:appId/builder",ji.auth.builderOrAdmin,j.requireFeatures(Qi.Feature.APP_BUILDERS),Ub);var Bb=Nb;var V={};w(V,{group:()=>Vi,user:()=>$i});var $i={};w($i,{fromScimUser:()=>XM,toScimUserResponse:()=>HM,userFilters:()=>ZM});var Qn=require("@budibase/types"),Mb=require("scim2-parse-filter"),Gb=require("@budibase/backend-core"),kb=require("@budibase/shared-core"),{unreachable:YM}=kb.utils,HM=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===Qn.UserStatus.ACTIVE};return(e.firstName||e.lastName)&&(n.name={formatted:[e.firstName,e.lastName].filter(o=>o).join(" "),familyName:e.lastName,givenName:e.firstName}),n},zM=e=>!!e?.id;function JM(e){if(Gb.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}var XM=e=>{let t=zM(e)?e:void 0,r=JM(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:YM(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?Qn.UserStatus.ACTIVE:Qn.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},ZM=e=>{let t={equal:{}},r=(0,Mb.parse)(e);function a(n){switch(n.op){case"eq":{let o=n.attrPath,s;switch(o){case"emails.value":s="email";break;default:s=`scimInfo.${o}`}t.equal[s]=n.compValue;break}case"and":for(let o of n.filters)a(o);break;default:console.warn("Filter not handled",{filter:n})}}return a(r),t};var Vi={};w(Vi,{fromScimGroup:()=>rG,toScimGroupResponse:()=>eG});var eG=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}))}),tG=e=>!!e?.id,rG=e=>{let t=tG(e)?e:void 0;return{_id:t?.id,name:e.displayName,scimInfo:{externalId:e.externalId,isSync:!0},icon:"UserGroup",color:"var(--spectrum-global-color-blue-600)",createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}};var mu={};w(mu,{LLMRequest:()=>K,TableGeneration:()=>fu,agentHistoryTitleSystemPrompt:()=>dG,agentSystemPrompt:()=>lG,aiColumnSchemas:()=>lu,aiTableResponseToTableSchema:()=>iu,appendAIColumns:()=>uu,classifyText:()=>Yi,cleanData:()=>Hi,generateAIColumns:()=>ou,generateCode:()=>cG,generateCronExpression:()=>zi,generateData:()=>su,generateJs:()=>eu,generateSQL:()=>pG,generateTables:()=>nu,generationStructure:()=>cu,getLLM:()=>xa,getLLMConfig:()=>au,getLLMOrThrow:()=>Yb,parseResponseFormat:()=>tu,sanitiseToolName:()=>aG,searchWeb:()=>Zi,sentimentAnalysis:()=>Xi,summarizeText:()=>jn,tableDataStructuredOutput:()=>du,translate:()=>Ji});function aG(e){if(e.length>64)throw new Error("Tool name must be under 64 characters long");return e.replace(/[^a-zA-Z0-9_-]/g,"_")}var Ye=require("@budibase/backend-core"),Wb=require("@budibase/types");var Qb=C(require("openai"));var bt=require("@budibase/types");var Fb=require("@budibase/shared-core");function Ki(e,t){return t.map(r=>e[r]).join(" ")}var It=class{constructor({model:t,apiKey:r}){this.model=t,this.apiKey=r,this.maxTokens=parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"300")}async prompt(t){typeof t=="string"&&(t=new K().addUserMessage(t));let{messages:r,tokensUsed:a}=await this.chatCompletion(t);return!r||r.length===0?{message:"",tokensUsed:a}:{message:r[r.length-1].content||"",tokensUsed:a}}async chat(t){return await this.chatCompletion(t)}async summarizeText(t){return this.prompt(jn(t))}async generateCronExpression(t){return this.prompt(zi(t))}async operation(t,r){let a=this.promptForOperation(t,r);return this.prompt(a)}promptForOperation(t,r){let{operation:a,column:n,columns:o,language:s,categories:i,prompt:p}=t;switch(a){case bt.AIOperationEnum.SUMMARISE_TEXT:return jn(Ki(r,o));case bt.AIOperationEnum.CLEAN_DATA:return Hi(r[n]);case bt.AIOperationEnum.TRANSLATE:return Ji(r[n],s);case bt.AIOperationEnum.CATEGORISE_TEXT:if(!i)throw Error("No categories provided for categorise text operation. Please provide categories.");return Yi(Ki(r,o),i.split(","));case bt.AIOperationEnum.SENTIMENT_ANALYSIS:return Xi(r[n]);case bt.AIOperationEnum.PROMPT:return p;case bt.AIOperationEnum.SEARCH_WEB:return Zi(Ki(r,o));default:throw Fb.utils.unreachable(a)}}async generateJs(t,r){let{bindings:a=[],snippets:n=[]}=r||{};return await this.prompt(eu(a,n).addUserMessage(t))}};var jb=require("openai/helpers/zod");function tu(e){if(e)return e==="text"?{type:"text"}:e==="json"?{type:"json_object"}:e}function nG(e){if(!e)return 0;let t=e.prompt_tokens;return e.completion_tokens*3+t}var at=class extends It{constructor(r){super(r);if(!r.apiKey)throw new Error("No OpenAI API key found");this.client=new Qb.default({apiKey:r.apiKey})}async chatCompletion(r){let a={model:this.model,messages:r.messages,max_tokens:this.maxTokens,response_format:tu(r.format)};r.tools&&r.tools.length>0&&(a.tool_choice="auto",a.tools=r.tools.map(jb.zodFunction));let n=await this.client.chat.completions.create(a),o=n.choices[0]?.message;if(o?.tool_calls){r.addMessage(o);let s=[];for(let i of o.tool_calls){let p=r.findTool(i.function.name);if(!p)throw new Error(`Tool ${i.function.name} not found in prompt tools`);let f=JSON.parse(i.function.arguments);s.push(p.handler(f).then(m=>({role:"tool",tool_call_id:i.id,content:m})))}return r.addMessages(await Promise.all(s)),this.chatCompletion(r)}else{if(o?.content)return{messages:[...r.messages,{role:o.role,content:o.content}],tokensUsed:nG(n.usage)};throw new Error("No response found")}}};var nt=require("@budibase/backend-core");var Wn=class extends It{async prompt(t){let r=await super.prompt(t);return r.tokensUsed&&await mn(r.tokensUsed),r}async chat(t){let r=await super.chat(t);return r.tokensUsed&&await mn(r.tokensUsed),r}async chatCompletion(t){return nt.env.SELF_HOSTED?this.chatCompletionSelfHost(t):this.chatCompletionCloud(t)}async chatCompletionCloud(t){return await new at({apiKey:nt.env.OPENAI_API_KEY,model:this.model}).chatCompletion(t)}async chatCompletionSelfHost(t){if(!nt.env.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(!this.apiKey){let n=await Yo();if(!n)throw new Error("No license key found");this.apiKey=n}let r={messages:t.messages,format:t.format,useTools:t.tools.length>0},a=await fetch(`${nt.env.BUDICLOUD_URL}/api/ai/chat`,{method:"POST",headers:{"Content-Type":"application/json",[nt.constants.Header.LICENSE_KEY]:this.apiKey},body:JSON.stringify(r)});if(!a.ok)throw await nt.HTTPError.fromResponse(a);return await a.json()}};var Ra=require("dd-trace");var ru=C(require("@anthropic-ai/sdk"));function oG(e){if(!e)return 0;let t=e.input_tokens;return e.output_tokens*3+t}var $n=class extends It{constructor(r){super(r);this.client=new ru.default({apiKey:r.apiKey})}firstTextBlock(r){for(let a of r.content)if(a.type==="text")return a.text}async chatCompletion(r){try{let a=await this.client.messages.create({model:this.model,messages:r.messages.map(({content:o})=>({role:"user",content:o||""})),max_tokens:this.maxTokens}),n=this.firstTextBlock(a)||"";return{messages:[...r.messages,{role:"assistant",content:n}],tokensUsed:oG(a.usage)}}catch(a){throw a instanceof ru.default.APIError&&console.error(`Anthropic Prompt failed with error ${a.name} and status: ${a.status}`),a}}};var $b=require("zod"),Vb=require("openai/helpers/zod"),Kb="gpt-4o-mini",sG={OpenAI:at,TogetherAI:at,AzureOpenAI:at,Custom:at,Anthropic:$n,BudibaseAI:Wn};async function iG(){return await Ra.tracer.trace("getAIConfig",async e=>{let t={type:Wb.ConfigType.AI,config:{}};if(!Ye.context.isSelfHostUsingCloud()){let a=await Ye.configs.getAIConfig();a&&(t=a)}await ts(t);let r=Object.values(t.config).find(a=>a.active&&a.isDefault);if(!r){e.addTags({enabled:!1,reason:"no provider found"});return}return e.addTags({enabled:!0}),{provider:r.provider,model:r.defaultModel||Kb,apiKey:r.apiKey}})}async function uG(){return Ra.tracer.trace("getSelfHostOpenAIKeyConfig",e=>{if(!Ye.env.SELF_HOSTED){e.addTags({enabled:!1,reason:"not self host"});return}if(!Ye.env.OPENAI_API_KEY){e.addTags({enabled:!1,reason:"no OPENAI_API_KEY"});return}return e.addTags({enabled:!0}),{provider:"OpenAI",model:Kb,apiKey:Ye.env.OPENAI_API_KEY}})}async function au(){return Ra.tracer.trace("getLLMConfig",async()=>await iG()||await uG())}async function xa(e){return await Ra.tracer.trace("getLLM",async t=>{let r=await au();if(!r){t.addTags({enabled:!1,reason:"no config found"});return}e&&(r.model=e);let a=sG[r.provider];if(!a){t.addTags({enabled:!1,reason:"no provider found",provider:r.provider});return}return new a(r)})}async function Yb(){let e=await xa();if(!e)throw new Ye.HTTPError("No available LLM configurations",500);return e}var K=class e{constructor(){this.messages=[];this.tools=[]}addTool(t){return this.tools.push(t),this}addTools(t){return this.tools.push(...t),this}findTool(t){return this.tools.find(r=>r.name===t)}withFormat(t){return t instanceof $b.z.ZodType?this.format=(0,Vb.zodResponseFormat)(t,"key"):this.format=t,this}addMessage(t){return this.messages.push(t),this}addMessages(t){return this.messages.push(...t),this}addUserMessage(t){return this.messages.push({role:"user",content:t}),this}addSystemMessage(t){return this.messages.push({role:"system",content:t}),this}static fromRequest(t){let r=new e;return t.messages&&r.addMessages(t.messages),t.format&&r.withFormat(t.format),r}};function jn(e){return new K().addUserMessage(`Summarize this text:
|
|
37
|
+
`;function Qr(e){return uo.default.verify(e,eS,{algorithms:["RS256"]})}function tS(e,t){return uo.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}var Qa={};w(Qa,{getFeatures:()=>po});var c=require("@budibase/types");var rS={[c.PlanType.FREE]:[...me.SELF_FREE_LICENSE.features],[c.PlanType.PREMIUM]:void 0,[c.PlanType.PREMIUM_PLUS]:[c.Feature.APP_BACKUPS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.PDF,c.Feature.BUDIBASE_AI],[c.PlanType.PREMIUM_PLUS_TRIAL]:[c.Feature.APP_BACKUPS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.PDF,c.Feature.BUDIBASE_AI],[c.PlanType.PRO]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS],[c.PlanType.TEAM]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS],[c.PlanType.BUSINESS]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.PDF,c.Feature.BUDIBASE_AI],[c.PlanType.ENTERPRISE_BASIC]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.OFFLINE,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.PWA,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF,c.Feature.BUDIBASE_AI],[c.PlanType.ENTERPRISE_BASIC_TRIAL]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.PWA,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF,c.Feature.BUDIBASE_AI],[c.PlanType.ENTERPRISE]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.OFFLINE,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.PWA,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF,c.Feature.BUDIBASE_AI]},aS={[c.PlanType.FREE]:[...me.CLOUD_FREE_LICENSE.features],[c.PlanType.PREMIUM]:[c.Feature.APP_BACKUPS,c.Feature.BRANDING,c.Feature.APP_BUILDERS,c.Feature.VIEW_PERMISSIONS,c.Feature.PDF],[c.PlanType.PREMIUM_PLUS]:[c.Feature.APP_BACKUPS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.BUDIBASE_AI,c.Feature.PDF],[c.PlanType.PREMIUM_PLUS_TRIAL]:[c.Feature.APP_BACKUPS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.BUDIBASE_AI,c.Feature.PDF],[c.PlanType.PRO]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.BRANDING],[c.PlanType.TEAM]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.BRANDING],[c.PlanType.BUSINESS]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.BUDIBASE_AI,c.Feature.PDF],[c.PlanType.ENTERPRISE_BASIC]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.OFFLINE,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.BUDIBASE_AI,c.Feature.PWA,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF],[c.PlanType.ENTERPRISE_BASIC_TRIAL]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.BUDIBASE_AI,c.Feature.PWA,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF],[c.PlanType.ENTERPRISE]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.BUDIBASE_AI,c.Feature.PWA,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF]};function po(e,t){let r=[];function a(n){let o=n[t];if(!o)throw new Error(`Features do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case c.Hosting.SELF:r=a(rS);break;case c.Hosting.CLOUD:r=a(aS);break}return r}var ja={};w(ja,{UNLIMITED:()=>d,getQuotas:()=>co});var G=require("@budibase/types");var l=He,ap=me,d=-1,Wr=e=>e*1e6,nS={[G.PlanType.FREE]:{...ap.CLOUD_FREE_LICENSE.quotas},[G.PlanType.PREMIUM]:{usage:{monthly:{...l.queries(d),...l.automations(1e3),...l.budibaseAICredits(0)},static:{...l.rows(1e4),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(0),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(7),...l.appBackupRetentionDays(7)}},[G.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...l.queries(d),...l.automations(5e3),...l.budibaseAICredits(Wr(2))},static:{...l.rows(25e3),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(0),...l.plugins(d),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[G.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...l.queries(d),...l.automations(5e3),...l.budibaseAICredits(Wr(2))},static:{...l.rows(25e3),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(0),...l.plugins(d),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[G.PlanType.PRO]:{usage:{monthly:{...l.queries(d),...l.automations(1e3),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(5),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(7),...l.appBackupRetentionDays(7)}},[G.PlanType.TEAM]:{usage:{monthly:{...l.queries(d),...l.automations(5e3),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(10),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(90)}},[G.PlanType.BUSINESS]:{usage:{monthly:{...l.queries(d),...l.automations(1e4),...l.budibaseAICredits(0)},static:{...l.rows(5e4),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(50),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(365),...l.appBackupRetentionDays(365)}},[G.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(Wr(4))},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(d),...l.appBackupRetentionDays(d)}},[G.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(Wr(4))},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(15),...l.appBackupRetentionDays(15)}},[G.PlanType.ENTERPRISE]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(Wr(4))},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(d),...l.appBackupRetentionDays(d)}}},oS={[G.PlanType.FREE]:{...ap.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 co(e,t){let r;function a(n){let o=n[t];if(!o)throw new Error(`Quotas do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case G.Hosting.SELF:r=a(oS);break;case G.Hosting.CLOUD:r=a(nS);break}return JSON.parse(JSON.stringify(r))}var $t={};w($t,{appExists:()=>sS,encoding:()=>Wt});var np=require("@budibase/backend-core");async function sS(e){return(await np.db.getAllApps({all:!0,idsOnly:!0})).includes(e)}var Wt={};w(Wt,{base64ToObject:()=>uS,objectToBase64:()=>iS});function iS(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}function uS(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}var Fd=require("@budibase/types"),nr=require("@budibase/backend-core"),Qd=C(Il()),jd=C(Go());async function Bx(e){await Se.save({offlineLicenseToken:e}),await Rt()}async function Mx(){await Se.save({offlineLicenseToken:void 0}),await Rt()}async function Wd(){return(await Se.get()).offlineLicenseToken}async function ko(){let t=(await nr.installation.getInstall()).installId,r=nr.context.getTenantId(),a=await nr.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:a}}async function Gx(){let e=await ko();return Wt.objectToBase64(e)}function kx(e){return Wt.base64ToObject(e)}function $d(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 Vd(e){let t=await ko();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}function Kd(e){let t=e.plan.type,r=Fd.Hosting.SELF,a=po(r,t),n=co(r,t);return e.features=(0,Qd.default)(e.features,a),e.quotas=(0,jd.default)(e.quotas,n),e}async function Fo(){try{let e=await Wd();if(e){let t=await Qr(e);return $d(t),await Vd(t),Kd(t)}}catch(e){console.error("Error retrieving offline license",e)}}var pa={};w(pa,{deleteDevLicense:()=>$x,getOfflineLicense:()=>jx,writeDevLicenseToDisk:()=>Wx});var Yd=require("@budibase/backend-core"),jo=require("path"),Hd=require("os"),xt=C(require("fs"));var Fx=Yd.env.isTest()?".budibase-test":".budibase",Qo=(0,jo.join)((0,Hd.tmpdir)(),Fx),Qx="dev_license.txt",ua=(0,jo.join)(Qo,Qx);if(!xt.default.existsSync(Qo))try{xt.default.mkdirSync(Qo)}catch{}function jx(){try{if(xt.default.existsSync(ua)){let e=xt.default.readFileSync(ua,{encoding:"utf-8"});return Qr(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}function Wx(e){console.log(`Writing license to: ${ua}`),xt.default.writeFileSync(ua,e,{encoding:"utf-8"})}function $x(){xt.default.rmSync(ua,{force:!0})}var $o=async()=>{if(Wo.env.OFFLINE_MODE)return Fo();let e=await jt();return e||(e=pa.getOfflineLicense()),e},Vo=e=>so(e),Ko=()=>Wo.env.SELF_HOSTED?me.SELF_FREE_LICENSE:me.CLOUD_FREE_LICENSE;var Ho={};w(Ho,{activateLicenseKey:()=>Vx,deleteLicenseKey:()=>Kx,getLicenseKey:()=>Yo});async function Vx(e){await io(e),await Se.save({licenseKey:e}),await Rt()}async function Yo(){return(await Se.get()).licenseKey}async function Kx(){await Se.save({licenseKey:void 0}),await Rt()}var _t=require("@budibase/backend-core"),on=C(require("dd-trace")),zd=3600,Rt=async()=>{await Zd(),await Xd()},Jd=async(e,t)=>{let{populateLicense:r=$o,populateFreeLicense:a=Ko}=t||{};return await on.default.trace("getCachedLicense",async n=>{let o=_t.context.getLicense();if(o)return n.addTags({foundInContext:!0,features:o.features,plan:o.plan,quotas:o.quotas}),o;let s=_t.tenancy.getTenantId(),i=await Kn(),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 on.default.trace("populateLicense",async()=>await r(s)),n.addTags({populatedLicense:!!p}),p||(p=on.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:zd}),await i.store(s,p,zd),p)})};_t.env.isJest()&&(Jd=jest.fn());var Xd=Jd,Zd=async()=>{let e=_t.tenancy.getTenantId();await(await Kn()).delete(e)};async function se(e,t){Array.isArray(e)||(e=[e]),t||(t=await _e.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}async function sn(e,t){if(!await se(e,t))throw new ze.FeatureDisabledError(`${e} is not currently enabled`,e)}async function zo(e,t){if(!await se(e,t)){let r=e.join(", ");throw new ze.FeatureDisabledError(`${r} are not currently enabled`,r)}}function he(e){return async(...t)=>(await sn(oe.Feature.APP_BACKUPS),e(...t))}async function Jo(){return se(oe.Feature.APP_BACKUPS)}async function Xo(){return se(oe.Feature.BRANDING)}async function ef(){return se(oe.Feature.ENFORCEABLE_SSO)}async function Hx(){return se(oe.Feature.SYNC_AUTOMATIONS)}async function zx(){return se(oe.Feature.TRIGGER_AUTOMATION_RUN)}async function Ot(){return se(oe.Feature.APP_BUILDERS)}async function un(){return se(oe.Feature.AUDIT_LOGS)}async function Zo(){return se(oe.Feature.USER_GROUPS)}function Jx(){return se(oe.Feature.PWA)}async function Je(){return se(oe.Feature.EXPANDED_PUBLIC_API)}async function Xx(e){if(ze.env.ENABLE_SSO_MAINTENANCE_MODE||!await ef())return!1;let r;return e?.config?r=e.config:r=await ze.configs.getSettingsConfig(),!!r.isSSOEnforced}var es=async()=>{let e=oe.Feature.SCIM,t=await se(e),r=await ze.configs.getSCIMConfig();if(!t||!r?.enabled)throw new ze.FeatureDisabledError(`${e} is not currently enabled`,e);return!0};async function Zx(){return se(oe.Feature.VIEW_PERMISSIONS)}async function e_(){return se(oe.Feature.VIEW_READONLY_COLUMNS)}var t_={faviconUrl:void 0,faviconUrlEtag:void 0,emailBrandingEnabled:!0,testimonialsEnabled:!0,platformTitle:void 0,loginHeading:void 0,loginButton:void 0,metaDescription:void 0,metaImageUrl:void 0,metaTitle:void 0};async function r_(e){return await Xo()?{faviconUrl:e.faviconUrl,faviconUrlEtag:e.faviconUrlEtag,emailBrandingEnabled:e.emailBrandingEnabled,testimonialsEnabled:e.testimonialsEnabled,platformTitle:e.platformTitle,loginHeading:e.loginHeading,loginButton:e.loginButton,metaDescription:e.metaDescription,metaImageUrl:e.metaImageUrl,metaTitle:e.metaTitle}:t_}var rs={};w(rs,{enrichAIConfig:()=>ts});var tf=require("@budibase/backend-core"),a_="budibase_ai";async function ts(e){if(tf.env.SELF_HOSTED)return e;for(let t of Object.values(e.config))if(t.provider==="BudibaseAI")return e;return e.config[a_]={provider:"BudibaseAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-4o-mini",name:"Budibase AI"},e}var je={};w(je,{addApp:()=>u_,addAutomation:()=>m_,addGroup:()=>ns,addPlugin:()=>ss,addRow:()=>c_,addRows:()=>d_,addUsers:()=>ln,bustCache:()=>Xn,decrement:()=>Xe,decrementMany:()=>ca,getCurrentUsageValues:()=>Lu,getLicensedQuota:()=>af,getQuotaUsage:()=>St,increment:()=>Ce,incrementBudibaseAICredits:()=>fn,incrementMany:()=>Pt,removeApp:()=>p_,removeGroup:()=>os,removePlugin:()=>is,removeRow:()=>l_,removeRows:()=>f_,removeUsers:()=>ur,set:()=>as,setAllUsage:()=>eo,setAppUsageValue:()=>Zn,setUsage:()=>_u,setUsagePerApp:()=>Ou,updatePluginCount:()=>us,updateUsage:()=>or,usageLimitIsExceeded:()=>i_,utils:()=>Tr});var Y=require("@budibase/types");var Le=require("@budibase/backend-core");var Ce=(e,t,r)=>rf({change:1,name:e,type:t,opts:r}),Pt=e=>rf(e),rf=async e=>{let t=Array.isArray(e)?e:[e];await or(t.map(a=>({usageChange:a.change,name:a.name,type:a.type,opts:{dryRun:!0,suppressErrorLog:a.opts?.suppressErrorLog,id:a.opts?.id}})));let r=[];for(let a of t){let n=a.opts?.fn;n&&r.push(await n())}return await or(t.map(a=>({usageChange:a.change,name:a.name,type:a.type,opts:{dryRun:!1,valueFn:a.opts?.valueFn,suppressErrorLog:a.opts?.suppressErrorLog,id:a.opts?.id}}))),r[0]},Xe=(e,t,r={})=>or({usageChange:-1,name:e,type:t,opts:r}),ca=e=>{let t=Array.isArray(e)?e:[e];return or(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},as=async(e,t,r)=>Be.setUsage(r,e,t),n_=(e,t,r)=>{if(e==Y.QuotaUsageType.STATIC){let a=r.usageQuota.triggers;return a?a[t]||{}:{}}else{let a=Be.utils.getCurrentMonthString(),n=r.monthly[a].triggers;return n?n[t]||{}:{}}},o_=async(e,t,r,a)=>{try{await Le.locks.doWithLock({type:Y.LockType.TRY_ONCE,name:Y.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let n={percentage:r,name:t.name};a&&(n.resetDate=a),await lt.triggerQuota(n)})}catch(n){Le.logging.logAlert("Error triggering quota",n)}},s_=async(e,t,r,a)=>{let n=await St(),o=e===Y.QuotaUsageType.MONTHLY?n.quotaReset:void 0,s=await n_(e,t,n),i=a.triggers,p=r/a.value*100;p>100&&(p=100);for(let[f,m]of i.entries())if(p>=m&&a.value!==He.UNLIMITED){if(!s[m]){s[m]=new Date().toISOString();let h=i[f+1]||100;(!(p>=h)||p===m)&&await o_(t,a,p,o)}}else s[m]=void 0;return s},or=async e=>{let t=Le.tenancy.getTenantId(),r=Array.isArray(e)?e:[e],a=null,n,o=[],s={},i={},p={},f={};for(let g of r){try{a=Le.context.getAppId()}catch{}if(Y.APP_QUOTA_NAMES.includes(g.name)&&!a)throw new Error("App context required for quota update");try{n=await af(Y.QuotaType.USAGE,g.name,g.type),o.push(n);let{total:b,app:E,breakdown:L}=await Be.getCurrentUsageValues(g.type,g.name,g.opts?.id);b+=g.usageChange,E!=null&&(E+=g.usageChange),L!=null&&(L+=g.usageChange);let _={};if(g.opts?.dryRun||(_=await s_(g.type,g.name,b,n),f={...f,[g.name]:_}),n.value!==He.UNLIMITED&&b>n.value&&g.usageChange>0)throw new Le.UsageLimitError(`Licensed ${n.name} of ${n.value} has been exceeded`,n.name);if(b=Math.max(0,b),E&&(E=Math.max(0,E)),L&&(L=Math.max(0,L),p={...p,[g.name]:L}),!g.opts?.dryRun){let R=g.opts?.valueFn;R&&(b=await R(),E=b),s={...s,[g.name]:b},i={...i,[g.name]:E}}}catch(b){throw g.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${g.name}`,b),b}}let m=r.filter(g=>!g.opts?.dryRun).map(g=>({name:g.name,type:g.type,values:{total:s[g.name],app:i[g.name],breakdown:p[g.name],triggers:f[g.name]},opts:{...g.opts,tenantId:t}}));m.length>0&&await Be.setAllUsage(m)},af=async(e,t,r)=>{let a=await _e.getCachedLicense();if(!a){let n=Le.tenancy.getTenantId();throw new Error("License not found for tenant id "+n)}if(r&&(0,Y.isStaticQuota)(e,r,t))return a.quotas[e][r][t];if(r&&(0,Y.isMonthlyQuota)(e,r,t))return a.quotas[e][r][t];if((0,Y.isConstantQuota)(e,t))return a.quotas[e][t];throw new Error("Invalid quota type")},i_=async(e,t)=>{try{return await or({usageChange:1,name:e,type:t,opts:{dryRun:!0}}),!1}catch(r){if(r.code===Y.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw r}};var sr=require("@budibase/types"),nf=require("@budibase/backend-core"),of=async()=>{let e=await nf.db.getAllApps({dev:!0});return e?e.length:0},u_=async(e,{appId:t}={})=>Ce(sr.StaticQuotaName.APPS,sr.QuotaUsageType.STATIC,{fn:e,valueFn:of,id:t}),p_=async({appId:e}={})=>Xe(sr.StaticQuotaName.APPS,sr.QuotaUsageType.STATIC,{valueFn:of,id:e});var Fe=require("@budibase/types"),c_=async(e,{tableId:t}={})=>Ce(Fe.StaticQuotaName.ROWS,Fe.QuotaUsageType.STATIC,{fn:e,id:t}),l_=async({tableId:e}={})=>Xe(Fe.StaticQuotaName.ROWS,Fe.QuotaUsageType.STATIC,{id:e}),d_=async(e,t,{tableId:r}={})=>Pt({change:e,name:Fe.StaticQuotaName.ROWS,type:Fe.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),f_=async(e,{tableId:t}={})=>ca({change:e,name:Fe.StaticQuotaName.ROWS,type:Fe.QuotaUsageType.STATIC,opts:{id:t}});var cn=require("@budibase/types"),m_=async(e,{automationId:t}={})=>Ce(cn.MonthlyQuotaName.AUTOMATIONS,cn.QuotaUsageType.MONTHLY,{fn:e,id:t});var ir=require("@budibase/types"),ns=async e=>Ce(ir.StaticQuotaName.USER_GROUPS,ir.QuotaUsageType.STATIC,{fn:e}),os=async()=>Xe(ir.StaticQuotaName.USER_GROUPS,ir.QuotaUsageType.STATIC);var mt=require("@budibase/types"),ss=async e=>Ce(mt.StaticQuotaName.PLUGINS,mt.QuotaUsageType.STATIC,{fn:e}),is=async()=>Xe(mt.StaticQuotaName.PLUGINS,mt.QuotaUsageType.STATIC),us=async e=>as(mt.StaticQuotaName.PLUGINS,mt.QuotaUsageType.STATIC,e);var Qe=require("@budibase/types"),la=require("@budibase/backend-core");var ln=async(e,t,r)=>{let a=[{change:e,name:Qe.StaticQuotaName.USERS,type:Qe.QuotaUsageType.STATIC,opts:{fn:r,valueFn:la.users.getUserCount}}];t>0&&a.push({change:t,name:Qe.StaticQuotaName.CREATORS,type:Qe.QuotaUsageType.STATIC,opts:{valueFn:la.users.getCreatorCount}});let n=await Pt(a);return await jt(),n},ur=async(e,t)=>{let r=[{change:e,name:Qe.StaticQuotaName.USERS,type:Qe.QuotaUsageType.STATIC,opts:{valueFn:la.users.getUserCount}}];t>0&&r.push({change:t,name:Qe.StaticQuotaName.CREATORS,type:Qe.QuotaUsageType.STATIC,opts:{valueFn:la.users.getCreatorCount}}),await ca(r),await jt()};var dn=require("@budibase/types"),fn=async e=>Pt({change:e,name:dn.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:dn.QuotaUsageType.MONTHLY});var Ze={};w(Ze,{addAppBuilder:()=>b_,db:()=>We,removeAppBuilder:()=>I_});var fa=require("@budibase/backend-core");var Q={};w(Q,{addAppBuilder:()=>fs,addUsers:()=>cs,adjustGroupCreatorsQuotas:()=>A_,cleanupApp:()=>y_,enrichUserRolesFromGroups:()=>h_,fetch:()=>da,get:()=>Ct,getBulk:()=>ff,getGroupBuilderAppIds:()=>df,getGroupRoleId:()=>g_,remove:()=>ps,removeAppBuilder:()=>ms,removeUsers:()=>ls,save:()=>pr,updateGroupApps:()=>ds});var x=require("@budibase/backend-core");var sf=require("@budibase/backend-core"),mn=class extends sf.HTTPError{constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function cf(e,t){try{let r=[];for(let i of e)if(i.roles){let p=i.roles[x.db.getProdAppID(t)];p&&r.push(p)}let a=await Promise.all(r.map(async i=>({[i]:await x.roles.roleToNumber(i)}))),n,o,s={};a.forEach(i=>{let[p,f]=Object.entries(i)[0];s[p]={roleId:p,roleNum:f}});for(let{roleId:i,roleNum:p}of Object.values(s))(o===void 0||p>o)&&(o=p,n=i);return n}catch(r){throw x.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}async function lf(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await M.getBulk(e,{enriched:!1}),t}async function df(e,t){if(!e.userGroups)return[];let r=await lf(e.userGroups,t?.groups),a=t?.appId?x.db.getProdAppID(t?.appId):null,n=[];for(let o of r){let s=o.builder?.apps;a&&s?.includes(a)?n.push(a):a||(n=n.concat(s||[]))}return[...new Set(n)]}async function g_(e,t,r){if(!e.userGroups)return null;let a=await lf(e.userGroups,r?.groups),n=x.db.getProdAppID(t);return e.roles?.[n]?e.roles[n]:(a=a.filter(o=>o?.roles?Object.keys(o.roles).includes(n):!1),await cf(a,t))}async function h_(e){if(!e||!e.userGroups)return e;let t=await ff(e.userGroups,{enriched:!1}),r=[];for(let n of t)n?.roles&&(r=r.concat(Object.keys(n.roles)));r=[...new Set(r)];for(let n of r)await x.context.doInAppContext(n,async()=>{if(e.roles[n])return;let o=await cf(t,n);o&&(e.roles[n]=o)});let a=await df(e,{groups:t});if(a.length&&!e.builder?.global){let n=e.builder?.apps||[];e.builder={apps:n.concat(a)}}return e}async function da(){return await M.fetch()}async function Ct(e){return await M.get(e)}async function ff(e,t={enriched:!0}){return await M.getBulk(e,t)}async function uf(e){if(await M.getByName(e))throw new mn(e)}async function pf(e){let t=await M.getGroupUsers(e._id);if(!t.length)return 0;let a=await x.tenancy.getGlobalDB().getMultiple(t.map(o=>o._id));return(await x.userUtils.creatorsInList(a)).filter(o=>o).length}async function pr(e){let t=[],r=!e._id,a=0;if(delete e.users,!e._id)e._id=M.generateUserGroupID(),await uf(e.name),t.push(x.events.group.created(e));else{let o=await M.get(e._id);if(o.name!==e.name&&await uf(e.name),t.push(x.events.group.updated(e)),JSON.stringify(o.roles)!==JSON.stringify(e.roles)){let s=o.users?.length||0,i=0;s>0&&(i=await pf(o)),Object.values(e.roles).includes("CREATOR")?a=s-i:a=-s,t.push(x.events.group.permissionsEdited(e))}}await Promise.all(t);let n=()=>M.save(e);if(r)return await ns(n);{let o=await n();if(a>0)await ln(0,a);else if(a<0){let s=await pf(e),i=Math.abs(a)-s;i>0&&await ur(0,i)}return o}}async function ps(e,t){let r;try{r=await M.get(e)}catch{throw new Error("Group not found")}let a=Object.values(r.roles||{}).includes("CREATOR"),n=()=>{};if(a){let s=x.tenancy.getGlobalDB(),i=await M.getGroupUsers(e),f=(await Promise.all(i.map(b=>s.get(b._id)))).map(b=>({...b,userGroups:b.userGroups.filter(E=>E!==e)})),g=(await x.userUtils.creatorsInList(f)).filter(b=>b).length,h=i.length-g;h&&(n=()=>ur(0,h))}let o=await M.destroy(e,t);return await x.events.group.deleted(r),await os(),await n(),o}async function cs(e,t){let r=await M.get(e),a=await x.users.bulkGetGlobalUsersById(t),n=[];for(let p of a)p.userGroups||(p.userGroups=[]),p.userGroups.includes(e)||n.push(p);if(!n.length)return n;let o=n.map(p=>({...p,userGroups:[...p?.userGroups||[],e]}));if(await x.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes("CREATOR")){let f=(await x.userUtils.creatorsInList(n)).filter(g=>g).length,m=n.length-f;m&&await ln(0,m)}let i=[];for(let p of t)i.push(x.cache.user.invalidateUser(p));return await Promise.all(i),await x.events.group.usersAdded(o.length,r),o}async function ls(e,t){let r=await M.get(e),a=await x.users.bulkGetGlobalUsersById(t),n=[];for(let i of a){if(!i.userGroups||!i.userGroups.includes(e))continue;let p=i.userGroups.indexOf(e);i.userGroups.splice(p,1),n.push(i)}if(await x.users.bulkUpdateGlobalUsers(n),Object.values(r.roles||{}).includes("CREATOR")){let p=(await x.userUtils.creatorsInList(n)).filter(m=>m).length,f=n.length-p;f&&await ur(0,f)}let s=[];for(let i of t)s.push(x.cache.user.invalidateUser(i));return await Promise.all(s),n.length&&await x.events.group.usersDeleted(n.length,r),n}async function ds(e,t){let r=await Ct(e);if(r.roles||(r.roles={}),t.appsToAdd)for(let a of t.appsToAdd)r.roles[a.appId]=a.roleId;if(t.appsToRemove)for(let a of t.appsToRemove)delete r.roles[a.appId];return await pr(r)}async function y_(e){let t=await da(),r=[];for(let a of t)!a.roles||!a.roles[e]||(delete a.roles[e],r.push(a));return await M.bulkSave(r)}async function fs(e,t){if(!await Ot())throw new Error("Feature not enabled, please check license");let r=x.db.getProdAppID(t),a=await Ct(e);a.builder??={apps:[]},a.builder.apps.includes(t)||(a.builder.apps.push(r),await pr(a))}async function ms(e,t){if(!await Ot())throw new Error("Feature not enabled, please check license");let r=x.db.getProdAppID(t),a=await Ct(e);a.builder?.apps.includes(t)&&(a.builder.apps=a.builder.apps.filter(n=>n!==r),await pr(a))}async function A_(){if(!await Zo()){let e=x.tenancy.getGlobalDB(),r=(await da()||[]).filter(a=>Object.values(a?.roles||{}).includes("CREATOR"));for(let a of r){let n=await M.getGroupUsers(a._id),s=(await Promise.all(n.map(m=>e.get(m._id)))).map(m=>({...m,userGroups:m.userGroups.filter(g=>g!==a._id)})),p=(await x.userUtils.creatorsInList(s)).filter(m=>m).length,f=n.length-p;await M.save({...a,roles:{}}),f&&await ur(0,f)}}}fa.users.UserDB.init(je,Q,Pe);var We=fa.users.UserDB;async function b_(e,t){if(!await Ot())throw new Error("Feature not enabled, please check license");await fa.users.addAppBuilder(e,t)}async function I_(e,t){if(!await Ot())throw new Error("Feature not enabled, please check license");await fa.users.removeAppBuilder(e,t)}var yn={};w(yn,{logs:()=>Ss});var Ss={};w(Ss,{logSearch:()=>O_,oldestLogDate:()=>If,storeLog:()=>P_});var bf=require("@budibase/types"),hn=require("@budibase/backend-core");var gn=require("@budibase/types");var Z=require("@budibase/backend-core");var mf=require("@budibase/backend-core");async function gf(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||mf.logging.logWarn(`Failed to backoff: ${t}`,r),o}var{SEPARATOR:et,UNICODE_MAX:S_,DocumentType:hf,AutomationViewMode:gs,ViewName:w_,getQueryIndex:v_}=Z.db,T_=new Date(0).toISOString(),E_=100,hs=async()=>Ba(gn.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS);function yf(e,t,{status:r,automationId:a}={},n={}){let o=a?`${a}${et}`:"",s=r?`${r}${et}`:"",i;return r&&a?i=`${gs.ALL}${et}${s}${o}`:r?i=`${gs.STATUS}${et}${s}`:a?i=`${gs.AUTOMATION}${et}${o}`:i=`${hf.AUTOMATION_LOG}${et}`,{...n,descending:!0,startkey:`${i}${t}${S_}`,endkey:`${i}${e}`}}function R_(e,t,r){return`${hf.AUTOMATION_LOG}${et}${e}${et}${r}${et}${t}`}async function ys(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=yf(e,t,n,{include_docs:r.docs,limit:o});r?.page&&(s.startkey=r.page);let i=await a.allDocs(s);return Rr(i,{paginate:r?.paginate,pageSize:9})}async function As(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=yf(e,t,o,{include_docs:!0,limit:9+1});r?.page&&(s.startkey=r.page),n=await a.query(v_(w_.AUTOMATION_LOGS),s)}catch(o){if(o!=null&&(o.name==="not_found"||o.error==="not_found"))return await Qu(),As(e,t,r);throw o}return Rr(n,{paginate:!0,pageSize:9})}async function Af(e,t){let r=Z.context.getProdAppDB(),a=e._id,n=e.name,o=new Date().toISOString(),s=R_(o,t.status,a),i={...t,automationId:a,status:t.status,automationName:n,createdAt:o,_id:s};return await r.put(i),s}async function bs(e,{clearing:t}={clearing:!1}){let r=Z.context.getProdAppDB();await gf(async()=>{let a=await r.get(Z.db.DocumentType.APP_METADATA);for(let n of e){let o=n.split(Z.db.SEPARATOR),s=`${o[o.length-3]}${Z.db.SEPARATOR}${o[o.length-2]}`,i={};a.automationErrors&&(i=a.automationErrors),Array.isArray(i[s])||(i[s]=[]);let p=i[s].indexOf(n);t&&p!==-1?i[s].splice(p,1):i[s].push(n),i[s].length===0&&delete i[s],a.automationErrors=i}await r.put(a),await Z.cache.app.invalidateAppMetadata(a.appId,a)},"Failed to update app metadata with automation log error")}async function x_(){let e=await hs();try{return await ys(T_,e,{docs:!1,paginate:!1,limit:E_})}catch{return{data:[],hasNextPage:!1}}}async function Is(){let e=Z.context.getProdAppDB();try{let t=await x_();if(!t.data||t.data.length===0)return;let r=t.data.map(n=>({_id:n.id,_rev:n.value.rev,_deleted:!0})),a=t.data.filter(n=>{let o=n.id.split(Z.db.SEPARATOR);return o[o.length-1]===gn.AutomationStatus.ERROR}).map(n=>n.id);await e.bulkDocs(r),a.length&&await bs(a,{clearing:!0})}catch(t){Z.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}var If=hs;async function __(e,t,r,a){let n,o=new Date().toISOString(),s=await If();return(!e||e<s)&&(e=s),r||t?n=await As(e,o,{automationId:r,status:t,page:a}):n=await ys(e,o,{status:t,page:a,docs:!0,paginate:!0}),n}async function O_(e){return await Is(),await __(e.startDate,e.status,e.automationId,e.page)}async function P_(e,t){if(!hn.db.isProdAppID(hn.context.getAppId()))return;let r=await Af(e,t);t.status===bf.AutomationStatus.ERROR&&await bs([r]),await Is()}var An={};w(An,{checkPluginQuotas:()=>q_,deletePlugin:()=>C_,storePlugin:()=>L_});var Tf=require("@budibase/types"),H=require("@budibase/backend-core");var Sf=C(require("fs")),wf=require("path");function vf(e,t){return Sf.default.readFileSync((0,wf.join)(e,t),"utf8")}async function L_(metadata,directory,source){let db=H.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=H.objectStore.getPluginS3Dir(name),files=await H.objectStore.uploadDirectory(H.objectStore.ObjectStoreBuckets.PLUGINS,directory,bucketPath),jsFile=files.find(e=>e.name.endsWith(".js")),iconFile=files.find(e=>e.name.endsWith(".svg"));if(!jsFile)throw new Error("Plugin missing .js file.");if(metadata.schema.type===Tf.PluginType.DATASOURCE){let js=vf(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 ss(write)}async function C_(e){let t=H.tenancy.getGlobalDB();try{let r=await t.get(e),a=H.objectStore.getPluginS3Dir(r.name);await H.objectStore.deleteFolder(H.objectStore.ObjectStoreBuckets.PLUGINS,a),await t.remove(e,r._rev),await H.events.plugin.deleted(r),await is()}catch(r){let a=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${a}`)}}async function q_(){let e=H.tenancy.getGlobalDB();try{let r=(await e.allDocs(H.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await us(r)}catch(t){H.logging.logAlert("Unable to retrieve plugins for quota check",t)}}var $e={};w($e,{fetch:()=>D_,fetchValues:()=>N_,isEncryptionKeyAvailable:()=>U_,isValid:()=>xf,remove:()=>M_,update:()=>B_});var ma=require("@budibase/types"),Ef=require("@budibase/backend-core");function U_(){return!!Ef.env.ENCRYPTION_KEY}async function D_(){let e=await Tt.get();return Object.keys(e.variables)}async function N_(e){let r=(await Tt.get()).variables,a={};for(let[n,o]of Object.entries(r))switch(e){case ma.AppEnvironment.DEVELOPMENT:a[n]=o.development;break;case ma.AppEnvironment.PRODUCTION:default:a[n]=o.production;break}return a}async function Rf(e){if(!(await ke.cache.getCachedLicense()).features.includes(ma.Feature.ENVIRONMENT_VARIABLES))throw new Error("User does not have access to environment variables feature.");let r=await Tt.get();r.variables=e(r.variables),await Tt.update(r)}async function B_(e,t){if(xf(e))await Rf(a=>(a[e]=t,a));else throw new Error("Variable name has characters that are not allowed")}async function M_(e){await Rf(t=>(delete t[e],t))}function xf(e){return/^[a-zA-Z0-9-_]+$/.test(e)}var gt={};w(gt,{definitions:()=>H_,download:()=>Y_,fetch:()=>K_,write:()=>$_});var In=require("@budibase/types");var $=require("@budibase/backend-core"),qe=require("@budibase/types");var _f=require("memorystream"),Of=new $.sql.Sql(qe.SqlClient.SQL_LITE);async function G_(e,t,r){let a={operation:qe.Operation.READ,table:Qt.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:qe.SortOrder.DESCENDING,type:qe.SortType.STRING}}},n=Of._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 Pf(e){e._id||(e._id=k_(e.timestamp)),e.type||(e.type=qe.AUDIT_LOG_TYPE);try{let r=await $.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){$.logging.logAlert("Failed to write audit log",t)}}async function ws(e,t,r){t||(t=1);let a=$.context.getAuditLogsDB();try{let n=9+1,o=await G_(e,t,n),s=Qt.searchTable(),i=Of.convertJsonStringColumns(s,await a.sql(o.sql,o.bindings)),p;i.length>n&&(p=i.pop());let f={rows:i,hasNextPage:!!p};return f.hasNextPage&&(f.bookmark=t+1),f}catch(n){if(n.status===404&&!r?.isRetry)return await F_(),await Cu(),await ws(e,t,{isRetry:!0});throw n}}async function F_(){let e=$.context.getAuditLogsDB(),r=(await e.allDocs($.db.getDocParams($.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(a=>a.doc).filter(a=>a&&!a.type).map(a=>({...a,type:qe.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}function Lf(e){let t=$.context.getAuditLogsDB(),r=new _f,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 _f;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 bn=require("@budibase/types"),ga=require("@budibase/string-templates"),ha=require("@budibase/backend-core"),j_=ha.constants.MIN_VALID_DATE.toISOString(),W_=ha.constants.MAX_VALID_DATE.toISOString();function vs(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||j_,e.endDate=e.endDate||W_),e}async function Cf(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(a=>ha.db.getProdAppID(a)));let t={};function r(a,n){n?.length&&(t.oneOf={...t.oneOf,[a]:n})}return r("userId",e.userIds),r("appId",e.appIds),r("event",e.events),e.fullSearch&&(t.fuzzyOr=!0,t.fuzzy={name:e.fullSearch,fallback:e.fullSearch}),(e.startDate||e.endDate)&&(e=vs(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}function Ts(e,t,r){let a={_id:e,status:bn.AuditLogResourceStatus.DELETED};switch(t){case"app":a.name=r?.appName;break;case"user":a.email=r?.email;break}return a}function Es(e){let t=(0,ga.findHBSBlocks)(e);for(let r of t){let a=` "${r}"`;e=e.replace(e.includes(a)?a:` ${r}`,""),e=(0,ga.processStringSync)(e,{})}return e}function qf(e,t){let r=bn.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let a=(0,ga.processStringSync)(r,t);return a.includes('""')&&(a=Es(r)),a}async function $_(e,t,r){if(!await un()||!ce.utils.isAudited(e))return;let a=qf(e,t),n=new Date;r?.timestamp&&(n=new Date(r.timestamp));let o={timestamp:n.toISOString(),event:e,name:a,userId:r?.userId||In.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 Pf(o)}async function V_(e){let t=e.map(i=>i.userId),a=e.filter(i=>i.appId).map(i=>ce.db.getDevAppID(i.appId)),n=await ce.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),o=await ce.db.getAppsByIDs([...new Set(a)]),s=[];for(let i of e){let p=n.find(g=>g?._id===i.userId),f=o.find(g=>ce.db.isSameAppID(g?.appId,i.appId)),m={event:i.event,timestamp:i.timestamp,name:i.name,metadata:i.metadata,user:p||Ts(i.userId,"user",i.fallback)};i.appId&&(m.app=f||Ts(i.appId,"app",i.fallback)),s.push(m)}return s}async function K_(e){if(!await un())throw new Error("Audit logs not available - license required.");let t=await Cf(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await ws(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await V_(r.rows)}}function Y_(e){return e=vs(e),Lf(e)}function H_(){let e=Object.entries(In.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=Es(r[1]);return t}var Sn={};w(Sn,{applications:()=>Os,roles:()=>xs,users:()=>Rs});var Rs={};w(Rs,{roleCheck:()=>J_});function z_(e,t){let r=e.request.body;return r.builder&&(r.builder=t?.builder||void 0),r.admin&&(r.admin=t?.admin||void 0),r.roles&&(r.roles=t?.roles||{}),e.request.body=r,e}async function J_(e,t){return await Je()||z_(e,t),e}var xs={};w(xs,{assign:()=>X_,unAssign:()=>Z_});var ya=require("@budibase/backend-core");async function X_(e,t){if(!await Je())throw new Error("Unable to assign roles - license required.");let r=await We.bulkGet(e);for(let a of r){if(t.role&&t.role.roleId){let n=ya.db.getProdAppID(t.role.appId);a.roles[n]=t.role.roleId}if(t.appBuilder){let n=ya.db.getProdAppID(t.appBuilder.appId),o=a.builder?.apps||[];a.builder={apps:o.concat([n])}}t.builder&&(a.builder={global:!0}),t.admin&&(a.admin={global:!0}),a.roles}await We.bulkUpdate(r)}async function Z_(e,t){if(!await Je())throw new Error("Unable to un-assign roles - license required.");let r=await We.bulkGet(e);for(let a of r){if(t.role){let n=ya.db.getProdAppID(t.role?.appId);a.roles[n]===t.role.roleId&&delete a.roles[n]}if(t.appBuilder&&a.builder?.apps){let n=ya.db.getProdAppID(t.appBuilder.appId);a.builder.apps=a.builder.apps.filter(o=>o!==n)}t.builder&&a.builder&&delete a.builder,t.admin&&a.admin&&delete a.admin}}var Os={};w(Os,{buildExportFn:()=>tO,buildImportFn:()=>eO});var _s=require("@budibase/backend-core");function eO(e){return async(t,r)=>{await Je()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await _s.context.doInAppContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}function tO(e){return async(t,r)=>{await Je()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:a,excludeRows:n}=t.request.body;await _s.context.doInAppContext(t.params.appId,async()=>{t.request.body={encryptPassword:a,excludeRows:n},t.query.appId=t.params.appId,await e(t),await r()})}}var Ve=require("@budibase/backend-core"),ie=require("@budibase/types");var Ps=require("@budibase/backend-core"),Uf;function Df(){Uf=new Ps.queue.BudibaseQueue(Ps.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}function qt(){return Uf}var Nf=require("path"),Bf=C(require("fs"));async function Ls(e,t={}){return we.storeAppBackupMetadata(e,t)}function Mf(e){let t=new Date().toISOString();switch(e){case ie.AppBackupStatus.COMPLETE:case ie.AppBackupStatus.FAILED:return{timestamp:t,finishedAt:t};case ie.AppBackupStatus.STARTED:return{timestamp:t,startedAt:t};case ie.AppBackupStatus.PENDING:return{timestamp:t,createdAt:t}}}async function rO(e,t,r,a){let n=await wn(e);return await we.storeAppBackupMetadata({...n,...Mf(t),contents:r,status:t,type:ie.AppBackupType.BACKUP},{filename:a,docId:e})}async function aO(e,t,r){let a=await wn(e);return await we.storeAppBackupMetadata({...a,...Mf(r),status:r,type:ie.AppBackupType.RESTORE,trigger:ie.AppBackupTrigger.MANUAL},{docId:e,docRev:t})}async function wn(e){return we.getAppBackupMetadata(e)}async function nO(e,t){return we.updateAppBackupMetadata(e,t)}async function oO(e){let t=await we.getAppBackupMetadata(e);return t.filename&&await Ve.objectStore.deleteFile(Ve.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),we.deleteAppBackupMetadata(e)}async function sO(e,t){return we.fetchAppBackups(e,t)}async function Gf(e){let t=await we.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let r=await Ve.objectStore.getReadStream(Ve.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}async function iO(e){let{stream:t}=await Gf(e),r=(0,Nf.join)(Ve.objectStore.budibaseTempDir(),Ve.utils.newid()),a=Bf.default.createWriteStream(r);return new Promise((n,o)=>{t.on("error",o),a.on("error",o),t.pipe(a).on("close",()=>n(r))})}async function uO(e,t,r={}){let a;try{a=await Ls({appId:e,trigger:t,timestamp:new Date().toISOString(),status:ie.AppBackupStatus.PENDING,type:ie.AppBackupType.BACKUP,...r})}catch(n){if(n.status===409)return;throw n}return await qt().add({docId:a.id,docRev:a.rev,appId:e,export:{trigger:t,...r}}),await Ve.events.backup.appBackupTriggered(e,a.id,ie.AppBackupType.BACKUP,t,r?.name),a.id}async function pO(e,t,r,a){let n=await wn(t),o;try{o=await Ls({appId:e,timestamp:new Date().toISOString(),status:ie.AppBackupStatus.PENDING,type:ie.AppBackupType.RESTORE,createdBy:a})}catch(s){if(s?.status===409)return;throw s}return await qt().add({appId:e,docId:o.id,docRev:o.rev,import:{nameForBackup:r,backupId:t,createdBy:a}}),{restoreId:o.id,metadata:n}}var cO={isEnabled:Jo,triggerAppRestore:he(pO),triggerAppBackup:he(uO),getBackupDownloadStream:he(Gf),downloadAppBackup:he(iO),fetchAppBackups:he(sO),storeAppBackupMetadata:he(Ls),updateBackupStatus:he(rO),updateRestoreStatus:he(aO),getAppBackup:he(wn),updateAppBackup:he(nO),deleteAppBackup:he(oO)},tt=cO;var qs={};w(qs,{init:()=>Cs});var z=require("@budibase/backend-core");var Ue=require("@budibase/types");var cr=C(require("fs"));async function Cs(e){qt().process(async t=>{let r=t.data;try{if(r.export)return fO(t,e);if(r.import)return dO(t,e)}catch(a){z.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,a)}})}async function lO(e){await z.db.getDB(e,{skip_setup:!0}).destroy()}async function kf(e,t,r,a){let n=z.db.getDevAppID(r),o=z.db.getProdAppID(r),s=new Date().toISOString(),i=async(p,f)=>{a?.doc?await tt.updateBackupStatus(a.doc.id,p,f?.contents,f?.filename):await tt.storeAppBackupMetadata({appId:o,timestamp:s,trigger:e,status:p,name:a?.name,type:Ue.AppBackupType.BACKUP,contents:f?.contents,createdBy:a?.createdBy},{filename:f?.filename})};try{let p=await a.processing.exportAppFn(n,{tar:!0}),f=await a.processing.statsFn(n),m=`${o}/backup-${s}.tar.gz`,g=z.objectStore.ObjectStoreBuckets.BACKUPS,h=cr.default.createReadStream(p);await z.objectStore.streamUpload({bucket:g,filename:m,stream:h,extra:{type:"application/gzip",metadata:{name:a?.name,trigger:e,timestamp:s,appId:o}}}),await i(Ue.AppBackupStatus.COMPLETE,{filename:m,contents:f}),cr.default.existsSync(p)&&cr.default.rmSync(p)}catch(p){z.logging.logAlert("App backup error",p),await i(Ue.AppBackupStatus.FAILED)}}async function dO(e,t){let r=e.data,a=r.appId,n=r.import.backupId,o=r.import.nameForBackup,s=r.import.createdBy,i=z.tenancy.getTenantIDFromAppID(a);return z.tenancy.doInTenant(i,async()=>{let p=z.db.getDevAppID(a),{rev:f}=await tt.updateRestoreStatus(r.docId,r.docRev,Ue.AppBackupStatus.STARTED);await kf(Ue.AppBackupTrigger.RESTORING,i,a,{processing:t,createdBy:s,name:o});let m=await tt.downloadAppBackup(n);await lO(p);let g=Ue.AppBackupStatus.COMPLETE;try{await t.importAppFn(p,z.db.getDB(p),{file:{type:"application/gzip",path:m},key:m})}catch(h){z.logging.logAlert("App restore error",h),g=Ue.AppBackupStatus.FAILED}await tt.updateRestoreStatus(r.docId,f,g),cr.default.existsSync(m)&&cr.default.rmSync(m,{force:!0})})}async function fO(e,t){let r=e.data,a=r.appId,n=r.export.trigger,o=r.export.name,s=z.tenancy.getTenantIDFromAppID(a);await z.tenancy.doInTenant(s,async()=>{try{let{rev:i}=await tt.updateBackupStatus(r.docId,Ue.AppBackupStatus.STARTED);return kf(n,s,a,{processing:t,doc:{id:r.docId,rev:i},name:o})}catch(i){z.logging.logAlert("App backup error",i)}})}var mO=async e=>{Df(),await Cs(e.processing)},Te={...tt,processing:qs,init:mO,getBackupQueue:qt};var Ff=async e=>{e.backups&&await Te.init(e.backups)};var de={};w(de,{create:()=>iM,find:()=>sM,get:()=>oM,remove:()=>pM,update:()=>uM});var pA=C(_i()),rt=require("@budibase/backend-core");var cA=require("@budibase/types");async function oM(e){let t=rt.tenancy.getGlobalDB(),r=new rt.db.QueryBuilder(t.name,cA.SearchIndex.USER);r.setIndexBuilder(rt.db.searchIndexes.createUserIndex),r.setLimit(e.pageSize),r.addEqual("scimInfo.isSync",!0);for(let[n,o]of Object.entries(e.filters?.equal??{}))r.addEqual(n,o);r.setSort("_id"),r.setSkip(e.skip);let a=await r.run();return{users:a.rows,total:a.totalRows}}async function sM(e){return await rt.users.getById(e)}async function iM(e){let t=await We.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new rt.HTTPError("User is already synched",409);e={...t,scimInfo:(0,pA.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await We.save(e,{requirePassword:!1})}async function uM(e,t){return await We.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}async function pM(e){return await We.destroy(e)}var hr={};w(hr,{create:()=>cM});var lA=C(_i());var dA=require("@budibase/backend-core");async function cM(e){let t=await ro(e.name),r;if(!t)r=(await Q.save(e)).id;else{if(t.scimInfo?.isSync)throw new dA.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,lA.default)(t.scimInfo,e.scimInfo),await Q.save(t)}return await Q.get(r)}var Dt={};w(Dt,{logRequest:()=>lM,logResponse:()=>dM});var Oi=require("@budibase/backend-core");async function lM(e){Oi.logging.logWarn("SCIM request log",e)}async function dM(e){Oi.logging.logWarn("SCIM response error",e)}var Ui={};w(Ui,{doInScimContext:()=>Li,feature:()=>j,internalGroupOnly:()=>Bn,licenseAuth:()=>gA,licensing:()=>fA,requireSCIM:()=>Ci,scimGroupOnly:()=>Sa,scimUserOnly:()=>Ia});var ht=require("@budibase/backend-core");var Dn=require("@budibase/types"),fM=(e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(ht.env.SELF_HOSTED&&ht.env.DEFAULT_LICENSE)return t.user.license=no,r();t.user.license=await ke.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(ht.utils.isServingApp(t)||ht.utils.isServingBuilder(t)||ht.utils.isServingBuilderPreview(t)||ht.utils.isPublicApiRequest(t))&&await je.usageLimitIsExceeded(Dn.StaticQuotaName.USERS,Dn.QuotaUsageType.STATIC)}return r()},fA=fM;var j={};w(j,{requireFeature:()=>mM,requireFeatures:()=>gM});var mM=e=>async(t,r)=>{await sn(e),await r()},gM=(...e)=>async(t,r)=>{await zo(e),await r()};var Nn=require("@budibase/backend-core");var Li=async(e,t)=>(Nn.env.DISABLE_SCIM_CALLS||await Dt.logRequest({...e.request.toJSON(),body:e.request.body}),await Nn.context.doInScimContext(async()=>{let r=await t();return await Dt.logResponse({...e.response.toJSON(),body:e.response.body}),r}));var Ci=async(e,t)=>{await es(),await t()};var mA=require("@budibase/backend-core");var Ia=e=>qi(mA.users.getById,e,!0),Sa=e=>qi(M.get,e,!0),Bn=e=>qi(M.get,e,!1);function qi(e,t,r){return async(a,n)=>{let o=a.params[t];return typeof o!="string"&&a.throw(404),!!(await e(o)).scimInfo?.isSync!==r&&a.throw(404),n()}}var wa=require("@budibase/backend-core");async function gA(e,t){let r=e.request.headers[wa.constants.Header.LICENSE_KEY];Array.isArray(r)&&(r=r[0]),r||e.throw(403,"License key not provided");let a=await Vo(r);a||e.throw(403,"License not found or invalid"),a.tenantId||e.throw(403,"License does not have a tenant ID"),await wa.context.doInSelfHostTenantUsingCloud(a.tenantId,async()=>{await wa.context.doInLicenseContext(a,async()=>{await t()})})}var ji={};w(ji,{appBackups:()=>eb,auditLogs:()=>WA,environmentVariables:()=>NA,groups:()=>xA,scim:()=>Lb,users:()=>Nb});async function hA(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let a=await Ct(t._id);t.roles=a.roles,t.scimInfo=a.scimInfo}let r=await pr(t);e.body={_id:r.id,_rev:r.rev}}async function yA(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 cs(t,r)),a&&(o=await ls(t,a)),e.body={added:n,removed:o}}async function AA(e){let t=e.params.groupId,r=e.request.body.add,a=e.request.body.remove;(r&&!Array.isArray(r)||a&&!Array.isArray(a))&&e.throw(400,"Must supply a list of objects, with appId and roleId to add or remove"),e.body=await ds(t,{appsToAdd:r,appsToRemove:a})}async function bA(e){e.body={data:await da()}}async function IA(e){let{groupId:t,rev:r}=e.params;try{await ps(t,r),e.body={message:"Group deleted successfully"}}catch(a){e.throw(a.status,a)}}async function SA(e){try{e.body=await Ct(e.params.groupId)}catch(t){e.throw(t.status,t)}}async function wA(e){let{pageSize:t=10,bookmark:r,emailSearch:a}=e.request.query,n=e.params.groupId,o={limit:t+1},s=await Da(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 vA(e){let{groupId:t,appId:r}=e.params;await fs(t,r),e.body={message:"Group app builder access updated."}}async function TA(e){let{groupId:t,appId:r}=e.params;await ms(t,r),e.body={message:"group app builder access removed."}}var EA=C(require("@koa/router")),ye=C(require("joi"));var Ee=require("@budibase/types"),Ke=require("@budibase/backend-core"),RA=new EA.default;function yM(){return Ke.auth.joiValidator.body(ye.default.object({_id:ye.default.string().optional(),_rev:ye.default.string().optional(),color:ye.default.string().required(),icon:ye.default.string().required(),name:ye.default.string().trim().required().max(50),role:ye.default.string().optional(),users:ye.default.array().optional(),apps:ye.default.array().optional(),roles:ye.default.object().optional(),createdAt:ye.default.string().optional(),updatedAt:ye.default.string().optional()}).required())}RA.post("/api/global/groups",Ke.auth.adminOnly,j.requireFeature(Ee.Feature.USER_GROUPS),yM(),hA).get("/api/global/groups",j.requireFeature(Ee.Feature.USER_GROUPS),bA).delete("/api/global/groups/:groupId/:rev",j.requireFeature(Ee.Feature.USER_GROUPS),Ke.auth.adminOnly,Bn("groupId"),IA).get("/api/global/groups/:groupId",j.requireFeature(Ee.Feature.USER_GROUPS),Ke.auth.builderOrAdmin,SA).get("/api/global/groups/:groupId/users",j.requireFeature(Ee.Feature.USER_GROUPS),Ke.auth.builderOrAdmin,wA).post("/api/global/groups/:groupId/users",Ke.auth.adminOnly,j.requireFeature(Ee.Feature.USER_GROUPS),Bn("groupId"),yA).post("/api/global/groups/:groupId/apps",Ke.auth.builderOrAdmin,j.requireFeature(Ee.Feature.USER_GROUPS),AA).post("/api/global/groups/:groupId/app/:appId/builder",Ke.auth.builderOrAdmin,j.requireFeatures(Ee.Feature.USER_GROUPS,Ee.Feature.APP_BUILDERS),vA).delete("/api/global/groups/:groupId/app/:appId/builder",Ke.auth.builderOrAdmin,j.requireFeatures(Ee.Feature.USER_GROUPS,Ee.Feature.APP_BUILDERS),TA);var xA=RA;var Di=require("@budibase/types");var Ni=require("@budibase/backend-core");async function _A(e){e.body={encryptionKeyAvailable:$e.isEncryptionKeyAvailable()}}async function OA(e){e.body={variables:await $e.fetch()}}async function PA(e){let{name:t,production:r,development:a}=e.request.body;await $e.update(t,{production:r,development:a});let n=[Di.AppEnvironment.PRODUCTION];r!==a&&n.push(Di.AppEnvironment.DEVELOPMENT),await Ni.events.environmentVariable.created(t,n),e.body={message:`Environment variable "${t}" created.`}}async function LA(e){let{production:t,development:r}=e.request.body,a=e.params.varName;await $e.update(a,{production:t,development:r}),e.body={message:`Environment variable "${a}" updated.`}}async function CA(e){let t=e.params.varName;await $e.remove(t),await Ni.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}var Nt=require("@budibase/backend-core"),UA=C(require("@koa/router")),va=C(require("joi")),DA=new UA.default;function qA(){return Nt.auth.joiValidator.body(va.default.object({name:va.default.string().optional(),production:va.default.string().required(),development:va.default.string().required()}))}DA.get("/api/env/variables/status",Nt.auth.builderOrAdmin,_A).get("/api/env/variables",Nt.auth.builderOrAdmin,OA).post("/api/env/variables",Nt.auth.builderOrAdmin,qA(),PA).patch("/api/env/variables/:varName",Nt.auth.builderOrAdmin,qA(),LA).delete("/api/env/variables/:varName",Nt.auth.builderOrAdmin,CA);var NA=DA;var Bi=require("@budibase/backend-core");async function BA(e){let t=e.request.body,r=await gt.fetch(t);await Bi.events.auditLog.filtered(t),e.body=r}async function MA(e){let t=e.request.body,{stream:r}=gt.download(t);await Bi.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}async function GA(e){e.body={events:gt.definitions()}}var FA=require("@budibase/types"),Bt=require("@budibase/backend-core"),QA=C(require("@koa/router")),Re=C(require("joi"));function kA(){return Bt.auth.joiValidator.body(Re.default.object({userIds:Re.default.array().items(Re.default.string()).optional(),appIds:Re.default.array().items(Re.default.string()).optional(),events:Re.default.array().items(Re.default.string().valid(...Object.values(FA.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 QA.default;jA.post("/api/global/auditlogs/search",Bt.auth.adminOnly,kA(),BA).get("/api/global/auditlogs/download",Bt.auth.adminOnly,Bt.middleware.querystringToBody,kA(),MA).get("/api/global/auditlogs/definitions",Bt.auth.adminOnly,GA);var WA=jA;var Mi=require("@budibase/types");var $A=require("@budibase/backend-core");async function yr(e,t){await $t.appExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}async function VA(e){let t=e.params.appId;await yr(e,t);let r=e.request.body,a=e.user?._id,n=await Te.triggerAppBackup(t,Mi.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 KA(e){let t=e.params.appId;await yr(e,t);let r=e.params.backupId,a=e.request.body.name,n=await Te.triggerAppRestore(t,r,a,e.user?._id);n||e.throw(500,"Unable to start restore."),await $A.events.backup.appBackupRestored(n.metadata),e.body={restoredId:n?.restoreId,message:"Restore triggered - process starting."}}async function YA(e){let t=e.params.appId;await yr(e,t);let r=e.params.backupId;await Te.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}async function HA(e){let t=e.params.appId;await yr(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(Mi.AppBackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await Te.fetchAppBackups(t,{paginate:!0,...r})}async function zA(e){let t=e.params.appId;await yr(e,t);let r=e.params.backupId,a=e.request.body;e.body=await Te.updateAppBackup(r,a.name)}async function JA(e){let t=e.params.appId;await yr(e,t);let r=e.params.backupId,{metadata:a,stream:n}=await Te.getBackupDownloadStream(r);e.attachment(`backup-${a.timestamp}.tar.gz`),e.body=n}var XA=C(require("@koa/router")),Mt=C(require("joi")),Mn=require("@budibase/types"),yt=require("@budibase/backend-core"),ZA=new XA.default;function SM(){return yt.auth.joiValidator.body(Mt.default.object({trigger:Mt.default.string().valid(...Object.values(Mn.AppBackupTrigger)),type:Mt.default.string().valid(...Object.values(Mn.AppBackupType)),startDate:Mt.default.date(),endDate:Mt.default.date(),page:Mt.default.string()}))}ZA.post("/api/apps/:appId/backups",yt.auth.builderOrAdmin,VA).post("/api/apps/:appId/backups/search",yt.auth.builderOrAdmin,SM(),HA).get("/api/apps/:appId/backups/:backupId/file",yt.auth.builderOrAdmin,JA).patch("/api/apps/:appId/backups/:backupId",yt.auth.builderOrAdmin,zA).delete("/api/apps/:appId/backups/:backupId",yt.auth.builderOrAdmin,YA).post("/api/apps/:appId/backups/:backupId/import",yt.auth.builderOrAdmin,KA);var eb=ZA;var Pb=C(require("@koa/router"));var Gn=require("scim-patch");var rb=require("@budibase/backend-core");function tb(e,t){let r=e.request.query[t];if(r!==void 0)return+r}var ab=async e=>{let t=tb(e,"pageSize")??20,r=tb(e,"startIndex"),a;e.request.query.filter&&(a=V.user.userFilters(e.request.query.filter));let n=await de.get({pageSize:t,skip:r,filters:a});e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:n.total,Resources:n.users.map(V.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},nb=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await de.find(t);e.body=V.user.toScimUserResponse(r)},ob=async e=>{let t=V.user.fromScimUser(e.request.body);try{let r=await de.create(t);e.body=V.user.toScimUserResponse(r)}catch(r){throw r instanceof rb.EmailUnavailableError&&e.throw(409,"Email already in use"),r}};function wM(e){let t=e.Operations.find(r=>(r.op==="Replace"||r.op==="replace")&&r.path==="active");return t?t.value===!1||t.value?.toLowerCase?.()==="false":!1}var sb=async e=>{let t=await de.find(e.params.id);t||e.throw(404);let r=V.user.toScimUserResponse(t),a=e.request.body;try{(0,Gn.patchBodyValidation)(a)}catch{}if(wM(a))return Gi(e);let n;try{n=(0,Gn.scimPatch)(r,a.Operations)}catch{}n||e.throw(500);let o=V.user.fromScimUser(n);await de.update(o,{allowChangingEmail:!0}),e.body=V.user.toScimUserResponse(o)},Gi=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await de.remove(t),e.status=204};var wb=C(Sb()),vb=require("@budibase/shared-core"),kn=require("scim-patch");var Fn=require("scim2-parse-filter");function Tb(e,t){for(let r of t.split(","))delete e[r]}var Eb=async e=>{let r=(await Q.fetch()).filter(o=>o.scimInfo?.isSync).map(V.group.toScimGroupResponse),{filter:a,excludedAttributes:n}=e.request.query;if(a){let o=(0,Fn.filter)((0,Fn.parse)(a));r=r.filter(o)}n&&r.forEach(o=>{Tb(o,n)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},Rb=async e=>{let t=V.group.fromScimGroup(e.request.body),r=await hr.create(t);e.body=V.group.toScimGroupResponse(r)},xb=async e=>{let{id:t}=e.params,r=await Q.get(t),a=V.group.toScimGroupResponse(r),{excludedAttributes:n}=e.request.query;n&&Tb(a,n),e.body=a},_b=async e=>{let{id:t}=e.params,r=await Q.get(t);await Q.remove(t,r._rev),e.status=204},Ob=async e=>{let{id:t}=e.params,r=await Q.get(t),a=V.group.toScimGroupResponse(r),n=e.request.body;try{(0,kn.patchBodyValidation)(n)}catch{e.throw(400)}let{true:o,false:s}=(0,wb.default)(n.Operations,i=>i.path==="members");if(s?.length){let i=(0,kn.scimPatch)(a,s);i||e.throw(500);let p={...V.group.fromScimGroup(i),_rev:r._rev};await Q.save(p)}if(o?.length){let i=[],p=[];for(let{op:f,value:m}of o)switch(f){case"add":case"Add":for(let g of m)i.push(await de.find(g.value));break;case"remove":case"Remove":for(let g of m)p.push(await de.find(g.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:vb.utils.unreachable(f)}i.length&&await Q.addUsers(t,i.map(f=>f._id)),p.length&&await Q.removeUsers(t,p.map(f=>f._id))}e.body=V.group.toScimGroupResponse(await Q.get(t))};var Ta=require("@budibase/types"),Ae=new Pb.default({prefix:"/api/global/scim/v2"});Ae.use(Ci);Ae.use(Li);Ae.get("/users",ab);Ae.get("/users/:id",Ia("id"),nb);Ae.post("/users",ob);Ae.patch("/users/:id",Ia("id"),sb);Ae.delete("/users/:id",Ia("id"),Gi);Ae.get("/groups",Eb);Ae.post("/groups",j.requireFeature(Ta.Feature.USER_GROUPS),Rb);Ae.get("/groups/:id",j.requireFeature(Ta.Feature.USER_GROUPS),Sa("id"),xb);Ae.delete("/groups/:id",j.requireFeature(Ta.Feature.USER_GROUPS),Sa("id"),_b);Ae.patch("/groups/:id",j.requireFeature(Ta.Feature.USER_GROUPS),Sa("id"),Ob);var Lb=Ae;var Ub=C(require("@koa/router"));var ki=require("@budibase/backend-core");async function Cb(e){let{userId:t,appId:r}=e.params,a=await Ze.db.getUser(t);if(ki.users.isGlobalBuilder(a)){e.body={message:"User already admin - no permissions updated."};return}await Ze.addAppBuilder(a,r),e.body={message:`User "${a.email}" app builder access updated.`}}async function qb(e){let{userId:t,appId:r}=e.params,a=await Ze.db.getUser(t);if(ki.users.isGlobalBuilder(a)){e.body={message:"User already admin - no permissions removed."};return}await Ze.removeAppBuilder(a,r),e.body={message:`User "${a.email}" app builder access removed.`}}var Fi=require("@budibase/types"),Qi=require("@budibase/backend-core"),Db=new Ub.default;Db.post("/api/global/users/:userId/app/:appId/builder",Qi.auth.builderOrAdmin,j.requireFeatures(Fi.Feature.APP_BUILDERS),Cb).delete("/api/global/users/:userId/app/:appId/builder",Qi.auth.builderOrAdmin,j.requireFeatures(Fi.Feature.APP_BUILDERS),qb);var Nb=Db;var V={};w(V,{group:()=>$i,user:()=>Wi});var Wi={};w(Wi,{fromScimUser:()=>JM,toScimUserResponse:()=>YM,userFilters:()=>XM});var Qn=require("@budibase/types"),Bb=require("scim2-parse-filter"),Mb=require("@budibase/backend-core"),Gb=require("@budibase/shared-core"),{unreachable:KM}=Gb.utils,YM=e=>{let{isSync:t,roles:r,...a}=e.scimInfo||{},n={...a,schemas:["urn:ietf:params:scim:schemas:core:2.0:User"],id:e._id,meta:{resourceType:"User",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},active:e.status===Qn.UserStatus.ACTIVE};return(e.firstName||e.lastName)&&(n.name={formatted:[e.firstName,e.lastName].filter(o=>o).join(" "),familyName:e.lastName,givenName:e.firstName}),n},HM=e=>!!e?.id;function zM(e){if(Mb.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}var JM=e=>{let t=HM(e)?e:void 0,r=zM(e);if(!r)throw new Error("Email is required");let a;switch(e.active){case"True":case"true":case!0:a=!0;break;case"False":case"false":case!1:a=!1;break;default:KM(e.active)}let n,o;return e.name?.givenName?(n=e.name?.givenName,o=e.name?.familyName):n=e.displayName,{tenantId:"",_id:t?.id,userId:t?.id,email:r,firstName:n,lastName:o,scimInfo:{...e,isSync:!0},roles:{},status:a?Qn.UserStatus.ACTIVE:Qn.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},XM=e=>{let t={equal:{}},r=(0,Bb.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 $i={};w($i,{fromScimGroup:()=>tG,toScimGroupResponse:()=>ZM});var ZM=e=>({schemas:["urn:ietf:params:scim:schemas:core:2.0:Group"],id:e._id,externalId:e.scimInfo.externalId,meta:{resourceType:"Group",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},displayName:e.name,members:e.users?.map(t=>({value:t._id}))}),eG=e=>!!e?.id,tG=e=>{let t=eG(e)?e:void 0;return{_id:t?.id,name:e.displayName,scimInfo:{externalId:e.externalId,isSync:!0},icon:"UserGroup",color:"var(--spectrum-global-color-blue-600)",createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}};var fu={};w(fu,{LLMRequest:()=>K,TableGeneration:()=>du,agentHistoryTitleSystemPrompt:()=>lG,agentSystemPrompt:()=>cG,aiColumnSchemas:()=>cu,aiTableResponseToTableSchema:()=>su,appendAIColumns:()=>iu,classifyText:()=>Ki,cleanData:()=>Yi,generateAIColumns:()=>nu,generateCode:()=>pG,generateCronExpression:()=>Hi,generateData:()=>ou,generateJs:()=>Zi,generateSQL:()=>uG,generateTables:()=>au,generationStructure:()=>pu,getLLM:()=>Ra,getLLMConfig:()=>ru,getLLMOrThrow:()=>Kb,parseResponseFormat:()=>eu,sanitiseToolName:()=>rG,searchWeb:()=>Xi,sentimentAnalysis:()=>Ji,summarizeText:()=>jn,tableDataStructuredOutput:()=>lu,translate:()=>zi});function rG(e){if(e.length>64)throw new Error("Tool name must be under 64 characters long");return e.replace(/[^a-zA-Z0-9_-]/g,"_")}var Ye=require("@budibase/backend-core"),jb=require("@budibase/types");var Fb=C(require("openai"));var At=require("@budibase/types");var kb=require("@budibase/shared-core");function Vi(e,t){return t.map(r=>e[r]).join(" ")}var bt=class{constructor({model:t,apiKey:r}){this.model=t,this.apiKey=r,this.maxTokens=parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"300")}async prompt(t){typeof t=="string"&&(t=new K().addUserMessage(t));let{messages:r,tokensUsed:a}=await this.chatCompletion(t);return!r||r.length===0?{message:"",tokensUsed:a}:{message:r[r.length-1].content||"",tokensUsed:a}}async chat(t){return await this.chatCompletion(t)}async summarizeText(t){return this.prompt(jn(t))}async generateCronExpression(t){return this.prompt(Hi(t))}async operation(t,r){let a=this.promptForOperation(t,r);return this.prompt(a)}promptForOperation(t,r){let{operation:a,column:n,columns:o,language:s,categories:i,prompt:p}=t;switch(a){case At.AIOperationEnum.SUMMARISE_TEXT:return jn(Vi(r,o));case At.AIOperationEnum.CLEAN_DATA:return Yi(r[n]);case At.AIOperationEnum.TRANSLATE:return zi(r[n],s);case At.AIOperationEnum.CATEGORISE_TEXT:if(!i)throw Error("No categories provided for categorise text operation. Please provide categories.");return Ki(Vi(r,o),i.split(","));case At.AIOperationEnum.SENTIMENT_ANALYSIS:return Ji(r[n]);case At.AIOperationEnum.PROMPT:return p;case At.AIOperationEnum.SEARCH_WEB:return Xi(Vi(r,o));default:throw kb.utils.unreachable(a)}}async generateJs(t,r){let{bindings:a=[],snippets:n=[]}=r||{};return await this.prompt(Zi(a,n).addUserMessage(t))}};var Qb=require("openai/helpers/zod");function eu(e){if(e)return e==="text"?{type:"text"}:e==="json"?{type:"json_object"}:e}function aG(e){if(!e)return 0;let t=e.prompt_tokens;return e.completion_tokens*3+t}var at=class extends bt{constructor(r){super(r);if(!r.apiKey)throw new Error("No OpenAI API key found");this.client=new Fb.default({apiKey:r.apiKey})}async chatCompletion(r){let a={model:this.model,messages:r.messages,max_tokens:this.maxTokens,response_format:eu(r.format)};r.tools&&r.tools.length>0&&(a.tool_choice="auto",a.tools=r.tools.map(Qb.zodFunction));let n=await this.client.chat.completions.create(a),o=n.choices[0]?.message;if(o?.tool_calls){r.addMessage(o);let s=[];for(let i of o.tool_calls){let p=r.findTool(i.function.name);if(!p)throw new Error(`Tool ${i.function.name} not found in prompt tools`);let f=JSON.parse(i.function.arguments);s.push(p.handler(f).then(m=>({role:"tool",tool_call_id:i.id,content:m})))}return r.addMessages(await Promise.all(s)),this.chatCompletion(r)}else{if(o?.content)return{messages:[...r.messages,{role:o.role,content:o.content}],tokensUsed:aG(n.usage)};throw new Error("No response found")}}};var nt=require("@budibase/backend-core");var Wn=class extends bt{async prompt(t){let r=await super.prompt(t);return r.tokensUsed&&await fn(r.tokensUsed),r}async chat(t){let r=await super.chat(t);return r.tokensUsed&&await fn(r.tokensUsed),r}async chatCompletion(t){return nt.env.SELF_HOSTED?this.chatCompletionSelfHost(t):this.chatCompletionCloud(t)}async chatCompletionCloud(t){return await new at({apiKey:nt.env.OPENAI_API_KEY,model:this.model}).chatCompletion(t)}async chatCompletionSelfHost(t){if(!nt.env.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(!this.apiKey){let n=await Yo();if(!n)throw new Error("No license key found");this.apiKey=n}let r={messages:t.messages,format:t.format,useTools:t.tools.length>0},a=await fetch(`${nt.env.BUDICLOUD_URL}/api/ai/chat`,{method:"POST",headers:{"Content-Type":"application/json",[nt.constants.Header.LICENSE_KEY]:this.apiKey},body:JSON.stringify(r)});if(!a.ok)throw await nt.HTTPError.fromResponse(a);return await a.json()}};var Ea=require("dd-trace");var tu=C(require("@anthropic-ai/sdk"));function nG(e){if(!e)return 0;let t=e.input_tokens;return e.output_tokens*3+t}var $n=class extends bt{constructor(r){super(r);this.client=new tu.default({apiKey:r.apiKey})}firstTextBlock(r){for(let a of r.content)if(a.type==="text")return a.text}async chatCompletion(r){try{let a=await this.client.messages.create({model:this.model,messages:r.messages.map(({content:o})=>({role:"user",content:o||""})),max_tokens:this.maxTokens}),n=this.firstTextBlock(a)||"";return{messages:[...r.messages,{role:"assistant",content:n}],tokensUsed:nG(a.usage)}}catch(a){throw a instanceof tu.default.APIError&&console.error(`Anthropic Prompt failed with error ${a.name} and status: ${a.status}`),a}}};var Wb=require("zod"),$b=require("openai/helpers/zod"),Vb="gpt-4o-mini",oG={OpenAI:at,TogetherAI:at,AzureOpenAI:at,Custom:at,Anthropic:$n,BudibaseAI:Wn};async function sG(){return await Ea.tracer.trace("getAIConfig",async e=>{let t={type:jb.ConfigType.AI,config:{}};if(!Ye.context.isSelfHostUsingCloud()){let a=await Ye.configs.getAIConfig();a&&(t=a)}await ts(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||Vb,apiKey:r.apiKey}})}async function iG(){return Ea.tracer.trace("getSelfHostOpenAIKeyConfig",e=>{if(!Ye.env.SELF_HOSTED){e.addTags({enabled:!1,reason:"not self host"});return}if(!Ye.env.OPENAI_API_KEY){e.addTags({enabled:!1,reason:"no OPENAI_API_KEY"});return}return e.addTags({enabled:!0}),{provider:"OpenAI",model:Vb,apiKey:Ye.env.OPENAI_API_KEY}})}async function ru(){return Ea.tracer.trace("getLLMConfig",async()=>await sG()||await iG())}async function Ra(e){return await Ea.tracer.trace("getLLM",async t=>{let r=await ru();if(!r){t.addTags({enabled:!1,reason:"no config found"});return}e&&(r.model=e);let a=oG[r.provider];if(!a){t.addTags({enabled:!1,reason:"no provider found",provider:r.provider});return}return new a(r)})}async function Kb(){let e=await Ra();if(!e)throw new Ye.HTTPError("No available LLM configurations",500);return e}var K=class e{constructor(){this.messages=[];this.tools=[]}addTool(t){return this.tools.push(t),this}addTools(t){return this.tools.push(...t),this}findTool(t){return this.tools.find(r=>r.name===t)}withFormat(t){return t instanceof Wb.z.ZodType?this.format=(0,$b.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 jn(e){return new K().addUserMessage(`Summarize this text:
|
|
39
39
|
${e}.
|
|
40
|
-
Only return the summary.`)}function
|
|
40
|
+
Only return the summary.`)}function Ki(e,t){return new K().addUserMessage(`Return the category of this text: "${e}". Based on these categories: ${t.join(", ")}. Only return the category.`)}function Yi(e){return new K().addUserMessage(`Clean the following string: "${e}". Remove any spelling mistakes or data issues. Only return the cleaned string itself and nothing else.`)}function uG(e,t){return new K().addUserMessage(`Given the table schema:
|
|
41
41
|
${t}
|
|
42
42
|
|
|
43
43
|
Generate a SQL query for the following request:
|
|
44
44
|
${e}.
|
|
45
|
-
Only provide the SQL.`)}function
|
|
45
|
+
Only provide the SQL.`)}function pG(e){return new K().addUserMessage(`Generate JavaScript code for the following request:
|
|
46
46
|
${e}.
|
|
47
|
-
Only provide the JS and nothing else.`)}function
|
|
48
|
-
${e}`)}function
|
|
47
|
+
Only provide the JS and nothing else.`)}function Hi(e){return new K().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 zi(e,t){return new K().addUserMessage(`Translate the following text: "${e}" into ${t}. Only return the translation.`)}function Ji(e){return new K().addUserMessage(`Return the sentiment of this text: "${e}". Only return the sentiment.`)}function Xi(e){return new K().addUserMessage(`Search the web for the following: "${e}". Only return the top results.`)}function Zi(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
|
|
143
|
+
${r}`)}function au(){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 K().addSystemMessage(e)}function
|
|
151
|
+
`;return new K().addSystemMessage(e)}function nu(){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 K().addSystemMessage(e)}function ou(){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 K().addSystemMessage(e)}function
|
|
154
|
+
`;return new K().addSystemMessage(e)}function cG(e){return`You are a helpful support agent, using workflows to solve problems for users.
|
|
155
155
|
The user is asking you for help with a support query.
|
|
156
156
|
|
|
157
157
|
Your reply MUST be short and concise, answering the user's query as quickly and
|
|
@@ -168,15 +168,15 @@ Avoid placeholder values like "foo" or "bar". Use real names, emails, etc., and
|
|
|
168
168
|
Information about the user making the request can be found below:
|
|
169
169
|
\`\`\`
|
|
170
170
|
${JSON.stringify(e)}
|
|
171
|
-
\`\`\``}function
|
|
171
|
+
\`\`\``}function lG(){return`You will be provided with a set of history, a conversation between a user and an AI. Using this
|
|
172
172
|
information generate a title for the conversation, this should start with a capital letter and MUST be
|
|
173
|
-
less than five words.`}var
|
|
173
|
+
less than five words.`}var zb=require("@budibase/backend-core"),Jb=require("@budibase/shared-core");var ot=require("@budibase/types"),Yb=require("@budibase/backend-core");function su(e){let t=[],r=[];for(let a of e.tables){let n=a.schema.reduce((o,s)=>{if(s.type===ot.FieldType.LINK){if(!r.includes(s.relationshipId)){let i={[ot.RelationshipType.MANY_TO_ONE]:ot.RelationshipType.ONE_TO_MANY,[ot.RelationshipType.ONE_TO_MANY]:ot.RelationshipType.MANY_TO_ONE,[ot.RelationshipType.MANY_TO_MANY]:ot.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:Yb.docIds.generateTableID(),name:a.name,primaryDisplay:a.primaryDisplay,schema:n})}return t}function iu(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 v=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.")}),uu=ue.extend({type:A.z.literal(v.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.")}),dG=A.z.array(A.z.union([ue.extend({type:A.z.enum([v.FieldType.STRING,v.FieldType.NUMBER,v.FieldType.BOOLEAN,v.FieldType.LONGFORM]),constraints:A.z.object({presence:A.z.boolean()}).optional()}),uu.extend({relationshipType:A.z.enum([v.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."),uu.extend({relationshipType:A.z.enum([v.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."),uu.extend({relationshipType:A.z.enum([v.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(v.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(v.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(v.JsonFieldSubType.ARRAY)}).describe("Multiple selected options from closed set of options")}),ue.extend({type:A.z.literal(v.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([v.FieldType.STRING,v.FieldType.NUMBER,v.FieldType.BOOLEAN,v.FieldType.DATETIME])}).describe("Define these types after the other types"),ue.extend({type:A.z.literal(v.FieldType.DATETIME),ignoreTimezones:A.z.boolean()}).describe("A datetime field, storing date and time"),ue.extend({type:A.z.literal(v.FieldType.DATETIME),ignoreTimezones:A.z.boolean(),timeOnly:A.z.literal(!0)}).describe("A time only field"),ue.extend({type:A.z.literal(v.FieldType.DATETIME),ignoreTimezones:A.z.boolean(),dateOnly:A.z.literal(!0)}).describe("A date only field"),ue.extend({type:A.z.literal(v.FieldType.ATTACHMENT_SINGLE),subtype:A.z.literal(v.AttachmentSubType.IMAGE)}).describe("Single image column"),ue.extend({type:A.z.literal(v.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(v.FieldType.ATTACHMENTS),subtype:A.z.literal(v.AttachmentSubType.IMAGE)}).describe("Multiple images column. Use an appropiate name for the columns, like 'Gallery', 'Photos', etc."),ue.extend({type:A.z.literal(v.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.")])),
|
|
177
|
+
`),responseType:A.z.enum([v.FieldType.STRING,v.FieldType.NUMBER,v.FieldType.BOOLEAN,v.FieldType.DATETIME])}).describe("Define these types after the other types"),ue.extend({type:A.z.literal(v.FieldType.DATETIME),ignoreTimezones:A.z.boolean()}).describe("A datetime field, storing date and time"),ue.extend({type:A.z.literal(v.FieldType.DATETIME),ignoreTimezones:A.z.boolean(),timeOnly:A.z.literal(!0)}).describe("A time only field"),ue.extend({type:A.z.literal(v.FieldType.DATETIME),ignoreTimezones:A.z.boolean(),dateOnly:A.z.literal(!0)}).describe("A date only field"),ue.extend({type:A.z.literal(v.FieldType.ATTACHMENT_SINGLE),subtype:A.z.literal(v.AttachmentSubType.IMAGE)}).describe("Single image column"),ue.extend({type:A.z.literal(v.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(v.FieldType.ATTACHMENTS),subtype:A.z.literal(v.AttachmentSubType.IMAGE)}).describe("Multiple images column. Use an appropiate name for the columns, like 'Gallery', 'Photos', etc."),ue.extend({type:A.z.literal(v.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.")])),pu=A.z.object({tables:A.z.array(A.z.object({name:A.z.string(),schema:dG,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 cu(e){let t=A.z.object({});for(let r of e){let a=Object.values(r.schema),n=[ue.extend({type:A.z.literal(v.FieldType.AI),operation:A.z.literal(v.AIOperationEnum.TRANSLATE),column:A.z.enum(a.filter(o=>[v.FieldType.STRING,v.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(v.FieldType.AI),operation:A.z.literal(v.AIOperationEnum.CATEGORISE_TEXT),columns:A.z.array(A.z.enum(a.filter(o=>[v.FieldType.STRING,v.FieldType.LONGFORM,v.FieldType.BOOLEAN,v.FieldType.NUMBER,v.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===v.FieldType.LONGFORM)&&n.push(ue.extend({type:A.z.literal(v.FieldType.AI),operation:A.z.literal(v.AIOperationEnum.SUMMARISE_TEXT),columns:A.z.array(A.z.enum(a.filter(o=>[v.FieldType.STRING,v.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"),Hb=require("@budibase/shared-core"),q=require("@budibase/types");function lu(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 q.FieldType.STRING:case q.FieldType.LONGFORM:a[s.name]=k.z.string();break;case q.FieldType.NUMBER:case q.FieldType.BIGINT:a[s.name]=k.z.number();break;case q.FieldType.BOOLEAN:a[s.name]=k.z.boolean();break;case q.FieldType.DATETIME:a[s.name]=k.z.string().describe(`ISO datetime. Use realistic dates, based on today's date, ${new Date().toISOString()}`);break;case q.FieldType.ATTACHMENT_SINGLE:s.subtype===q.AttachmentSubType.IMAGE?a[s.name]=n:a[s.name]=o;break;case q.FieldType.ATTACHMENTS:s.subtype===q.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 q.FieldType.OPTIONS:a[s.name]=k.z.enum(s.constraints.inclusion);break;case q.FieldType.LINK:{let p=k.z.string().describe(`Match one of the _ids created for table "${s.tableId}"`);s.relationshipType===q.RelationshipType.ONE_TO_MANY?a[s.name]=k.z.array(p).describe("Array with a single item"):s.relationshipType===q.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 q.FieldType.ARRAY:a[s.name]=k.z.array(k.z.enum(s.constraints.inclusion));break;case q.FieldType.AI:case q.FieldType.AUTO:case q.FieldType.SIGNATURE_SINGLE:case q.FieldType.BB_REFERENCE:case q.FieldType.JSON:case q.FieldType.FORMULA:case q.FieldType.INTERNAL:case q.FieldType.BARCODEQR:case q.FieldType.BB_REFERENCE_SINGLE:break;default:throw Hb.utils.unreachable(i)}}t=t.extend({[r.name]:k.z.array(k.z.object(a))}).describe(`Each table should include at least a few items (min 3, max 18). The number of items should not be evenly distributed. Instead, follow natural relationships and usage patterns based on the tables nature. For example:
|
|
178
178
|
1. If we have posts and comments, there should be more posts than users, and more comments than posts.
|
|
179
179
|
2. If it's a ticketing system, there may be more tickets than users, and some users may have submitted several tickets.
|
|
180
180
|
3. In a CRM, there are fewer users than customers, and customers may have many deals.
|
|
181
|
-
4. In a project management tool, projects might have many tasks, and tasks might have multiple comments.`)}return t}var
|
|
182
|
-
"${t}"`).withFormat(
|
|
181
|
+
4. In a project management tool, projects might have many tasks, and tasks might have multiple comments.`)}return t}var xa=C(require("dd-trace")),du=class e{constructor(t,r){this.llmFunctions={getTableStructure:async t=>xa.default.trace("llm.getTableStructure",async()=>{let r=await this.llm.prompt(au().addUserMessage(t).withFormat(pu)),a=JSON.parse(r.message);return su(a)}),generateAIColumns:(t,r)=>xa.default.trace("llm.generateAIColumns",async()=>this.generateAIColumns(t,r)),generateData:async(t,r)=>xa.default.trace("llm.generateData",async()=>{let a=await this.llm.prompt(ou().addUserMessage(t).withFormat(lu(r)));return JSON.parse(a.message)})};this.llm=t,this.delegates=r}static async init(t){let r=await Ra("gpt-4o");if(!r)throw new zb.HTTPError("LLM not available",422);return r.maxTokens=2e3,new e(r,t)}async generate(t,r){return xa.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(iu(a,i))),o=await this.llmFunctions.generateData(t,a),s=await n;return await this.delegates.generateDataDelegate(o,r,Jb.utils.toMap("name",a)),s}async generateAIColumns(t,r){let a=await this.llm.prompt(nu().addUserMessage(`This is the initial user prompt that generated the given schema:
|
|
182
|
+
"${t}"`).withFormat(cu(r)));return JSON.parse(a.message)}};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.10.
|
|
7
|
+
"version": "3.10.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": "
|
|
76
|
+
"gitHead": "777805a3ff93c87bad59cb8605e5430e67c91d90"
|
|
77
77
|
}
|