@budibase/pro 3.8.1 → 3.8.3
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.
|
@@ -7,5 +7,5 @@ export declare class Anthropic extends LLM {
|
|
|
7
7
|
private client;
|
|
8
8
|
constructor(opts: AIConfigOptions);
|
|
9
9
|
firstTextBlock(message: AnthropicClient.Messages.Message): string | undefined;
|
|
10
|
-
chatCompletion(prompt: Prompt): Promise<LLMPromptResponse>;
|
|
10
|
+
protected chatCompletion(prompt: Prompt): Promise<LLMPromptResponse>;
|
|
11
11
|
}
|
package/dist/ai/models/base.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ export declare abstract class LLM {
|
|
|
12
12
|
measureUsage: boolean;
|
|
13
13
|
maxTokens: number;
|
|
14
14
|
constructor({ model, apiKey, measureUsage }: AIConfigOptions);
|
|
15
|
-
abstract chatCompletion(prompt: Prompt): Promise<LLMPromptResponse>;
|
|
15
|
+
protected abstract chatCompletion(prompt: Prompt): Promise<LLMPromptResponse>;
|
|
16
16
|
prompt(prompt: string | Prompt): Promise<LLMPromptResponse>;
|
|
17
17
|
summarizeText(prompt: string): Promise<LLMPromptResponse>;
|
|
18
18
|
generateCronExpression(prompt: string): Promise<LLMPromptResponse>;
|
|
@@ -3,5 +3,5 @@ import { LLM } from "./base";
|
|
|
3
3
|
import { Prompt } from "../prompts";
|
|
4
4
|
export declare class BudibaseAI extends LLM {
|
|
5
5
|
constructor(args: ConstructorParameters<typeof LLM>[0]);
|
|
6
|
-
chatCompletion(prompt: Prompt): Promise<LLMPromptResponse>;
|
|
6
|
+
protected chatCompletion(prompt: Prompt): Promise<LLMPromptResponse>;
|
|
7
7
|
}
|
|
@@ -7,5 +7,5 @@ export declare class OpenAI extends LLM {
|
|
|
7
7
|
private client;
|
|
8
8
|
constructor({ model, apiKey, measureUsage }: AIConfigOptions);
|
|
9
9
|
measureTokenUsage(usage?: OpenAIClient.CompletionUsage): number;
|
|
10
|
-
chatCompletion(prompt: Prompt): Promise<LLMPromptResponse>;
|
|
10
|
+
protected chatCompletion(prompt: Prompt): Promise<LLMPromptResponse>;
|
|
11
11
|
}
|
package/dist/index.js
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
"use strict";var kI=Object.create;var Sn=Object.defineProperty;var FI=Object.getOwnPropertyDescriptor;var QI=Object.getOwnPropertyNames;var jI=Object.getPrototypeOf,WI=Object.prototype.hasOwnProperty;var u=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),S=(e,t)=>{for(var r in t)Sn(e,r,{get:t[r],enumerable:!0})},tu=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of QI(t))!WI.call(e,a)&&a!==r&&Sn(e,a,{get:()=>t[a],enumerable:!(n=FI(t,a))||n.enumerable});return e};var O=(e,t,r)=>(r=e!=null?kI(jI(e)):{},tu(t||!e||!e.__esModule?Sn(r,"default",{value:e,enumerable:!0}):r,e)),$I=e=>tu(Sn({},"__esModule",{value:!0}),e);var Bn=u((c0,Gu)=>{"use strict";function $b(e,t){for(var r=-1,n=t.length,a=e.length;++r<n;)e[a+r]=t[r];return e}Gu.exports=$b});var no=u((l0,Mu)=>{"use strict";var Vb=typeof global=="object"&&global&&global.Object===Object&&global;Mu.exports=Vb});var re=u((d0,ku)=>{"use strict";var Kb=no(),Yb=typeof self=="object"&&self&&self.Object===Object&&self,Hb=Kb||Yb||Function("return this")();ku.exports=Hb});var bt=u((f0,Fu)=>{"use strict";var Jb=re(),zb=Jb.Symbol;Fu.exports=zb});var $u=u((g0,Wu)=>{"use strict";var Qu=bt(),ju=Object.prototype,Xb=ju.hasOwnProperty,Zb=ju.toString,kr=Qu?Qu.toStringTag:void 0;function eS(e){var t=Xb.call(e,kr),r=e[kr];try{e[kr]=void 0;var n=!0}catch{}var a=Zb.call(e);return n&&(t?e[kr]=r:delete e[kr]),a}Wu.exports=eS});var Ku=u((m0,Vu)=>{"use strict";var tS=Object.prototype,rS=tS.toString;function nS(e){return rS.call(e)}Vu.exports=nS});var st=u((y0,Ju)=>{"use strict";var Yu=bt(),aS=$u(),oS=Ku(),sS="[object Null]",iS="[object Undefined]",Hu=Yu?Yu.toStringTag:void 0;function uS(e){return e==null?e===void 0?iS:sS:Hu&&Hu in Object(e)?aS(e):oS(e)}Ju.exports=uS});var ce=u((A0,zu)=>{"use strict";function pS(e){return e!=null&&typeof e=="object"}zu.exports=pS});var Zu=u((h0,Xu)=>{"use strict";var cS=st(),lS=ce(),dS="[object Arguments]";function fS(e){return lS(e)&&cS(e)==dS}Xu.exports=fS});var Fr=u((I0,rp)=>{"use strict";var ep=Zu(),gS=ce(),tp=Object.prototype,mS=tp.hasOwnProperty,yS=tp.propertyIsEnumerable,AS=ep(function(){return arguments}())?ep:function(e){return gS(e)&&mS.call(e,"callee")&&!yS.call(e,"callee")};rp.exports=AS});var J=u((b0,np)=>{"use strict";var hS=Array.isArray;np.exports=hS});var ip=u((S0,sp)=>{"use strict";var ap=bt(),IS=Fr(),bS=J(),op=ap?ap.isConcatSpreadable:void 0;function SS(e){return bS(e)||IS(e)||!!(op&&e&&e[op])}sp.exports=SS});var ao=u((w0,pp)=>{"use strict";var wS=Bn(),vS=ip();function up(e,t,r,n,a){var o=-1,i=e.length;for(r||(r=vS),a||(a=[]);++o<i;){var s=e[o];t>0&&r(s)?t>1?up(s,t-1,r,n,a):wS(a,s):n||(a[a.length]=s)}return a}pp.exports=up});var Qr=u((v0,cp)=>{"use strict";function ES(e){return e}cp.exports=ES});var Nn=u((E0,lp)=>{"use strict";function RS(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)}lp.exports=RS});var oo=u((R0,fp)=>{"use strict";var _S=Nn(),dp=Math.max;function xS(e,t,r){return t=dp(t===void 0?e.length-1:t,0),function(){for(var n=arguments,a=-1,o=dp(n.length-t,0),i=Array(o);++a<o;)i[a]=n[t+a];a=-1;for(var s=Array(t+1);++a<t;)s[a]=n[a];return s[t]=r(i),_S(e,this,s)}}fp.exports=xS});var mp=u((_0,gp)=>{"use strict";function TS(e){return function(){return e}}gp.exports=TS});var be=u((x0,yp)=>{"use strict";function PS(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}yp.exports=PS});var jr=u((T0,Ap)=>{"use strict";var OS=st(),CS=be(),qS="[object AsyncFunction]",LS="[object Function]",US="[object GeneratorFunction]",DS="[object Proxy]";function BS(e){if(!CS(e))return!1;var t=OS(e);return t==LS||t==US||t==qS||t==DS}Ap.exports=BS});var Ip=u((P0,hp)=>{"use strict";var NS=re(),GS=NS["__core-js_shared__"];hp.exports=GS});var wp=u((O0,Sp)=>{"use strict";var so=Ip(),bp=function(){var e=/[^.]+$/.exec(so&&so.keys&&so.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function MS(e){return!!bp&&bp in e}Sp.exports=MS});var io=u((C0,vp)=>{"use strict";var kS=Function.prototype,FS=kS.toString;function QS(e){if(e!=null){try{return FS.call(e)}catch{}try{return e+""}catch{}}return""}vp.exports=QS});var Rp=u((q0,Ep)=>{"use strict";var jS=jr(),WS=wp(),$S=be(),VS=io(),KS=/[\\^$.*+?()[\]{}|]/g,YS=/^\[object .+?Constructor\]$/,HS=Function.prototype,JS=Object.prototype,zS=HS.toString,XS=JS.hasOwnProperty,ZS=RegExp("^"+zS.call(XS).replace(KS,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function ew(e){if(!$S(e)||WS(e))return!1;var t=jS(e)?ZS:YS;return t.test(VS(e))}Ep.exports=ew});var xp=u((L0,_p)=>{"use strict";function tw(e,t){return e?.[t]}_p.exports=tw});var it=u((U0,Tp)=>{"use strict";var rw=Rp(),nw=xp();function aw(e,t){var r=nw(e,t);return rw(r)?r:void 0}Tp.exports=aw});var uo=u((D0,Pp)=>{"use strict";var ow=it(),sw=function(){try{var e=ow(Object,"defineProperty");return e({},"",{}),e}catch{}}();Pp.exports=sw});var qp=u((B0,Cp)=>{"use strict";var iw=mp(),Op=uo(),uw=Qr(),pw=Op?function(e,t){return Op(e,"toString",{configurable:!0,enumerable:!1,value:iw(t),writable:!0})}:uw;Cp.exports=pw});var po=u((N0,Lp)=>{"use strict";var cw=800,lw=16,dw=Date.now;function fw(e){var t=0,r=0;return function(){var n=dw(),a=lw-(n-r);if(r=n,a>0){if(++t>=cw)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}Lp.exports=fw});var Gn=u((G0,Up)=>{"use strict";var gw=qp(),mw=po(),yw=mw(gw);Up.exports=yw});var co=u((M0,Dp)=>{"use strict";var Aw=Qr(),hw=oo(),Iw=Gn();function bw(e,t){return Iw(hw(e,t,Aw),e+"")}Dp.exports=bw});var Wr=u((k0,Bp)=>{"use strict";var Sw=it(),ww=Sw(Object,"create");Bp.exports=ww});var Mp=u((F0,Gp)=>{"use strict";var Np=Wr();function vw(){this.__data__=Np?Np(null):{},this.size=0}Gp.exports=vw});var Fp=u((Q0,kp)=>{"use strict";function Ew(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}kp.exports=Ew});var jp=u((j0,Qp)=>{"use strict";var Rw=Wr(),_w="__lodash_hash_undefined__",xw=Object.prototype,Tw=xw.hasOwnProperty;function Pw(e){var t=this.__data__;if(Rw){var r=t[e];return r===_w?void 0:r}return Tw.call(t,e)?t[e]:void 0}Qp.exports=Pw});var $p=u((W0,Wp)=>{"use strict";var Ow=Wr(),Cw=Object.prototype,qw=Cw.hasOwnProperty;function Lw(e){var t=this.__data__;return Ow?t[e]!==void 0:qw.call(t,e)}Wp.exports=Lw});var Kp=u(($0,Vp)=>{"use strict";var Uw=Wr(),Dw="__lodash_hash_undefined__";function Bw(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=Uw&&t===void 0?Dw:t,this}Vp.exports=Bw});var Hp=u((V0,Yp)=>{"use strict";var Nw=Mp(),Gw=Fp(),Mw=jp(),kw=$p(),Fw=Kp();function Qt(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}Qt.prototype.clear=Nw;Qt.prototype.delete=Gw;Qt.prototype.get=Mw;Qt.prototype.has=kw;Qt.prototype.set=Fw;Yp.exports=Qt});var zp=u((K0,Jp)=>{"use strict";function Qw(){this.__data__=[],this.size=0}Jp.exports=Qw});var jt=u((Y0,Xp)=>{"use strict";function jw(e,t){return e===t||e!==e&&t!==t}Xp.exports=jw});var $r=u((H0,Zp)=>{"use strict";var Ww=jt();function $w(e,t){for(var r=e.length;r--;)if(Ww(e[r][0],t))return r;return-1}Zp.exports=$w});var tc=u((J0,ec)=>{"use strict";var Vw=$r(),Kw=Array.prototype,Yw=Kw.splice;function Hw(e){var t=this.__data__,r=Vw(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():Yw.call(t,r,1),--this.size,!0}ec.exports=Hw});var nc=u((z0,rc)=>{"use strict";var Jw=$r();function zw(e){var t=this.__data__,r=Jw(t,e);return r<0?void 0:t[r][1]}rc.exports=zw});var oc=u((X0,ac)=>{"use strict";var Xw=$r();function Zw(e){return Xw(this.__data__,e)>-1}ac.exports=Zw});var ic=u((Z0,sc)=>{"use strict";var ev=$r();function tv(e,t){var r=this.__data__,n=ev(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}sc.exports=tv});var Vr=u((ek,uc)=>{"use strict";var rv=zp(),nv=tc(),av=nc(),ov=oc(),sv=ic();function Wt(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}Wt.prototype.clear=rv;Wt.prototype.delete=nv;Wt.prototype.get=av;Wt.prototype.has=ov;Wt.prototype.set=sv;uc.exports=Wt});var Mn=u((tk,pc)=>{"use strict";var iv=it(),uv=re(),pv=iv(uv,"Map");pc.exports=pv});var dc=u((rk,lc)=>{"use strict";var cc=Hp(),cv=Vr(),lv=Mn();function dv(){this.size=0,this.__data__={hash:new cc,map:new(lv||cv),string:new cc}}lc.exports=dv});var gc=u((nk,fc)=>{"use strict";function fv(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}fc.exports=fv});var Kr=u((ak,mc)=>{"use strict";var gv=gc();function mv(e,t){var r=e.__data__;return gv(t)?r[typeof t=="string"?"string":"hash"]:r.map}mc.exports=mv});var Ac=u((ok,yc)=>{"use strict";var yv=Kr();function Av(e){var t=yv(this,e).delete(e);return this.size-=t?1:0,t}yc.exports=Av});var Ic=u((sk,hc)=>{"use strict";var hv=Kr();function Iv(e){return hv(this,e).get(e)}hc.exports=Iv});var Sc=u((ik,bc)=>{"use strict";var bv=Kr();function Sv(e){return bv(this,e).has(e)}bc.exports=Sv});var vc=u((uk,wc)=>{"use strict";var wv=Kr();function vv(e,t){var r=wv(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}wc.exports=vv});var kn=u((pk,Ec)=>{"use strict";var Ev=dc(),Rv=Ac(),_v=Ic(),xv=Sc(),Tv=vc();function $t(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}$t.prototype.clear=Ev;$t.prototype.delete=Rv;$t.prototype.get=_v;$t.prototype.has=xv;$t.prototype.set=Tv;Ec.exports=$t});var _c=u((ck,Rc)=>{"use strict";var Pv="__lodash_hash_undefined__";function Ov(e){return this.__data__.set(e,Pv),this}Rc.exports=Ov});var Tc=u((lk,xc)=>{"use strict";function Cv(e){return this.__data__.has(e)}xc.exports=Cv});var lo=u((dk,Pc)=>{"use strict";var qv=kn(),Lv=_c(),Uv=Tc();function Fn(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new qv;++t<r;)this.add(e[t])}Fn.prototype.add=Fn.prototype.push=Lv;Fn.prototype.has=Uv;Pc.exports=Fn});var Cc=u((fk,Oc)=>{"use strict";function Dv(e,t,r,n){for(var a=e.length,o=r+(n?1:-1);n?o--:++o<a;)if(t(e[o],o,e))return o;return-1}Oc.exports=Dv});var Lc=u((gk,qc)=>{"use strict";function Bv(e){return e!==e}qc.exports=Bv});var Dc=u((mk,Uc)=>{"use strict";function Nv(e,t,r){for(var n=r-1,a=e.length;++n<a;)if(e[n]===t)return n;return-1}Uc.exports=Nv});var Nc=u((yk,Bc)=>{"use strict";var Gv=Cc(),Mv=Lc(),kv=Dc();function Fv(e,t,r){return t===t?kv(e,t,r):Gv(e,Mv,r)}Bc.exports=Fv});var fo=u((Ak,Gc)=>{"use strict";var Qv=Nc();function jv(e,t){var r=e==null?0:e.length;return!!r&&Qv(e,t,0)>-1}Gc.exports=jv});var kc=u((hk,Mc)=>{"use strict";function Wv(e,t,r){for(var n=-1,a=e==null?0:e.length;++n<a;)if(r(t,e[n]))return!0;return!1}Mc.exports=Wv});var go=u((Ik,Fc)=>{"use strict";function $v(e,t){return e.has(t)}Fc.exports=$v});var mo=u((bk,Qc)=>{"use strict";var Vv=it(),Kv=re(),Yv=Vv(Kv,"Set");Qc.exports=Yv});var yo=u((Sk,jc)=>{"use strict";function Hv(){}jc.exports=Hv});var Qn=u((wk,Wc)=>{"use strict";function Jv(e){var t=-1,r=Array(e.size);return e.forEach(function(n){r[++t]=n}),r}Wc.exports=Jv});var Vc=u((vk,$c)=>{"use strict";var Ao=mo(),zv=yo(),Xv=Qn(),Zv=1/0,eE=Ao&&1/Xv(new Ao([,-0]))[1]==Zv?function(e){return new Ao(e)}:zv;$c.exports=eE});var Yc=u((Ek,Kc)=>{"use strict";var tE=lo(),rE=fo(),nE=kc(),aE=go(),oE=Vc(),sE=Qn(),iE=200;function uE(e,t,r){var n=-1,a=rE,o=e.length,i=!0,s=[],c=s;if(r)i=!1,a=nE;else if(o>=iE){var f=t?null:oE(e);if(f)return sE(f);i=!1,a=aE,c=new tE}else c=t?[]:s;e:for(;++n<o;){var m=e[n],g=t?t(m):m;if(m=r||m!==0?m:0,i&&g===g){for(var y=c.length;y--;)if(c[y]===g)continue e;t&&c.push(g),s.push(m)}else a(c,g,r)||(c!==s&&c.push(g),s.push(m))}return s}Kc.exports=uE});var jn=u((Rk,Hc)=>{"use strict";var pE=9007199254740991;function cE(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=pE}Hc.exports=cE});var Vt=u((_k,Jc)=>{"use strict";var lE=jr(),dE=jn();function fE(e){return e!=null&&dE(e.length)&&!lE(e)}Jc.exports=fE});var ho=u((xk,zc)=>{"use strict";var gE=Vt(),mE=ce();function yE(e){return mE(e)&&gE(e)}zc.exports=yE});var Zc=u((Tk,Xc)=>{"use strict";var AE=ao(),hE=co(),IE=Yc(),bE=ho(),SE=hE(function(e){return IE(AE(e,1,bE,!0))});Xc.exports=SE});var tl=u((Pk,el)=>{"use strict";var wE=Vr();function vE(){this.__data__=new wE,this.size=0}el.exports=vE});var nl=u((Ok,rl)=>{"use strict";function EE(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}rl.exports=EE});var ol=u((Ck,al)=>{"use strict";function RE(e){return this.__data__.get(e)}al.exports=RE});var il=u((qk,sl)=>{"use strict";function _E(e){return this.__data__.has(e)}sl.exports=_E});var pl=u((Lk,ul)=>{"use strict";var xE=Vr(),TE=Mn(),PE=kn(),OE=200;function CE(e,t){var r=this.__data__;if(r instanceof xE){var n=r.__data__;if(!TE||n.length<OE-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new PE(n)}return r.set(e,t),this.size=r.size,this}ul.exports=CE});var Yr=u((Uk,cl)=>{"use strict";var qE=Vr(),LE=tl(),UE=nl(),DE=ol(),BE=il(),NE=pl();function Kt(e){var t=this.__data__=new qE(e);this.size=t.size}Kt.prototype.clear=LE;Kt.prototype.delete=UE;Kt.prototype.get=DE;Kt.prototype.has=BE;Kt.prototype.set=NE;cl.exports=Kt});var Hr=u((Dk,dl)=>{"use strict";var ll=uo();function GE(e,t,r){t=="__proto__"&&ll?ll(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}dl.exports=GE});var Io=u((Bk,fl)=>{"use strict";var ME=Hr(),kE=jt();function FE(e,t,r){(r!==void 0&&!kE(e[t],r)||r===void 0&&!(t in e))&&ME(e,t,r)}fl.exports=FE});var ml=u((Nk,gl)=>{"use strict";function QE(e){return function(t,r,n){for(var a=-1,o=Object(t),i=n(t),s=i.length;s--;){var c=i[e?s:++a];if(r(o[c],c,o)===!1)break}return t}}gl.exports=QE});var bo=u((Gk,yl)=>{"use strict";var jE=ml(),WE=jE();yl.exports=WE});var So=u((Jr,Yt)=>{"use strict";var $E=re(),bl=typeof Jr=="object"&&Jr&&!Jr.nodeType&&Jr,Al=bl&&typeof Yt=="object"&&Yt&&!Yt.nodeType&&Yt,VE=Al&&Al.exports===bl,hl=VE?$E.Buffer:void 0,Il=hl?hl.allocUnsafe:void 0;function KE(e,t){if(t)return e.slice();var r=e.length,n=Il?Il(r):new e.constructor(r);return e.copy(n),n}Yt.exports=KE});var wo=u((Mk,Sl)=>{"use strict";var YE=re(),HE=YE.Uint8Array;Sl.exports=HE});var Wn=u((kk,vl)=>{"use strict";var wl=wo();function JE(e){var t=new e.constructor(e.byteLength);return new wl(t).set(new wl(e)),t}vl.exports=JE});var vo=u((Fk,El)=>{"use strict";var zE=Wn();function XE(e,t){var r=t?zE(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}El.exports=XE});var Ht=u((Qk,Rl)=>{"use strict";function ZE(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t}Rl.exports=ZE});var zr=u((jk,xl)=>{"use strict";var eR=be(),_l=Object.create,tR=function(){function e(){}return function(t){if(!eR(t))return{};if(_l)return _l(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();xl.exports=tR});var Eo=u((Wk,Tl)=>{"use strict";function rR(e,t){return function(r){return e(t(r))}}Tl.exports=rR});var $n=u(($k,Pl)=>{"use strict";var nR=Eo(),aR=nR(Object.getPrototypeOf,Object);Pl.exports=aR});var Vn=u((Vk,Ol)=>{"use strict";var oR=Object.prototype;function sR(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||oR;return e===r}Ol.exports=sR});var Ro=u((Kk,Cl)=>{"use strict";var iR=zr(),uR=$n(),pR=Vn();function cR(e){return typeof e.constructor=="function"&&!pR(e)?iR(uR(e)):{}}Cl.exports=cR});var Ll=u((Yk,ql)=>{"use strict";function lR(){return!1}ql.exports=lR});var Zr=u((Xr,Jt)=>{"use strict";var dR=re(),fR=Ll(),Bl=typeof Xr=="object"&&Xr&&!Xr.nodeType&&Xr,Ul=Bl&&typeof Jt=="object"&&Jt&&!Jt.nodeType&&Jt,gR=Ul&&Ul.exports===Bl,Dl=gR?dR.Buffer:void 0,mR=Dl?Dl.isBuffer:void 0,yR=mR||fR;Jt.exports=yR});var _o=u((Hk,Gl)=>{"use strict";var AR=st(),hR=$n(),IR=ce(),bR="[object Object]",SR=Function.prototype,wR=Object.prototype,Nl=SR.toString,vR=wR.hasOwnProperty,ER=Nl.call(Object);function RR(e){if(!IR(e)||AR(e)!=bR)return!1;var t=hR(e);if(t===null)return!0;var r=vR.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Nl.call(r)==ER}Gl.exports=RR});var kl=u((Jk,Ml)=>{"use strict";var _R=st(),xR=jn(),TR=ce(),PR="[object Arguments]",OR="[object Array]",CR="[object Boolean]",qR="[object Date]",LR="[object Error]",UR="[object Function]",DR="[object Map]",BR="[object Number]",NR="[object Object]",GR="[object RegExp]",MR="[object Set]",kR="[object String]",FR="[object WeakMap]",QR="[object ArrayBuffer]",jR="[object DataView]",WR="[object Float32Array]",$R="[object Float64Array]",VR="[object Int8Array]",KR="[object Int16Array]",YR="[object Int32Array]",HR="[object Uint8Array]",JR="[object Uint8ClampedArray]",zR="[object Uint16Array]",XR="[object Uint32Array]",L={};L[WR]=L[$R]=L[VR]=L[KR]=L[YR]=L[HR]=L[JR]=L[zR]=L[XR]=!0;L[PR]=L[OR]=L[QR]=L[CR]=L[jR]=L[qR]=L[LR]=L[UR]=L[DR]=L[BR]=L[NR]=L[GR]=L[MR]=L[kR]=L[FR]=!1;function ZR(e){return TR(e)&&xR(e.length)&&!!L[_R(e)]}Ml.exports=ZR});var Kn=u((zk,Fl)=>{"use strict";function e_(e){return function(t){return e(t)}}Fl.exports=e_});var Yn=u((en,zt)=>{"use strict";var t_=no(),Ql=typeof en=="object"&&en&&!en.nodeType&&en,tn=Ql&&typeof zt=="object"&&zt&&!zt.nodeType&&zt,r_=tn&&tn.exports===Ql,xo=r_&&t_.process,n_=function(){try{var e=tn&&tn.require&&tn.require("util").types;return e||xo&&xo.binding&&xo.binding("util")}catch{}}();zt.exports=n_});var Hn=u((Xk,$l)=>{"use strict";var a_=kl(),o_=Kn(),jl=Yn(),Wl=jl&&jl.isTypedArray,s_=Wl?o_(Wl):a_;$l.exports=s_});var To=u((Zk,Vl)=>{"use strict";function i_(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}Vl.exports=i_});var Po=u((eF,Kl)=>{"use strict";var u_=Hr(),p_=jt(),c_=Object.prototype,l_=c_.hasOwnProperty;function d_(e,t,r){var n=e[t];(!(l_.call(e,t)&&p_(n,r))||r===void 0&&!(t in e))&&u_(e,t,r)}Kl.exports=d_});var Xt=u((tF,Yl)=>{"use strict";var f_=Po(),g_=Hr();function m_(e,t,r,n){var a=!r;r||(r={});for(var o=-1,i=t.length;++o<i;){var s=t[o],c=n?n(r[s],e[s],s,r,e):void 0;c===void 0&&(c=e[s]),a?g_(r,s,c):f_(r,s,c)}return r}Yl.exports=m_});var Jl=u((rF,Hl)=>{"use strict";function y_(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}Hl.exports=y_});var rn=u((nF,zl)=>{"use strict";var A_=9007199254740991,h_=/^(?:0|[1-9]\d*)$/;function I_(e,t){var r=typeof e;return t=t??A_,!!t&&(r=="number"||r!="symbol"&&h_.test(e))&&e>-1&&e%1==0&&e<t}zl.exports=I_});var Oo=u((aF,Xl)=>{"use strict";var b_=Jl(),S_=Fr(),w_=J(),v_=Zr(),E_=rn(),R_=Hn(),__=Object.prototype,x_=__.hasOwnProperty;function T_(e,t){var r=w_(e),n=!r&&S_(e),a=!r&&!n&&v_(e),o=!r&&!n&&!a&&R_(e),i=r||n||a||o,s=i?b_(e.length,String):[],c=s.length;for(var f in e)(t||x_.call(e,f))&&!(i&&(f=="length"||a&&(f=="offset"||f=="parent")||o&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||E_(f,c)))&&s.push(f);return s}Xl.exports=T_});var ed=u((oF,Zl)=>{"use strict";function P_(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}Zl.exports=P_});var rd=u((sF,td)=>{"use strict";var O_=be(),C_=Vn(),q_=ed(),L_=Object.prototype,U_=L_.hasOwnProperty;function D_(e){if(!O_(e))return q_(e);var t=C_(e),r=[];for(var n in e)n=="constructor"&&(t||!U_.call(e,n))||r.push(n);return r}td.exports=D_});var Zt=u((iF,nd)=>{"use strict";var B_=Oo(),N_=rd(),G_=Vt();function M_(e){return G_(e)?B_(e,!0):N_(e)}nd.exports=M_});var od=u((uF,ad)=>{"use strict";var k_=Xt(),F_=Zt();function Q_(e){return k_(e,F_(e))}ad.exports=Q_});var ld=u((pF,cd)=>{"use strict";var sd=Io(),j_=So(),W_=vo(),$_=Ht(),V_=Ro(),id=Fr(),ud=J(),K_=ho(),Y_=Zr(),H_=jr(),J_=be(),z_=_o(),X_=Hn(),pd=To(),Z_=od();function ex(e,t,r,n,a,o,i){var s=pd(e,r),c=pd(t,r),f=i.get(c);if(f){sd(e,r,f);return}var m=o?o(s,c,r+"",e,t,i):void 0,g=m===void 0;if(g){var y=ud(c),h=!y&&Y_(c),E=!y&&!h&&X_(c);m=c,y||h||E?ud(s)?m=s:K_(s)?m=$_(s):h?(g=!1,m=j_(c,!0)):E?(g=!1,m=W_(c,!0)):m=[]:z_(c)||id(c)?(m=s,id(s)?m=Z_(s):(!J_(s)||H_(s))&&(m=V_(c))):g=!1}g&&(i.set(c,m),a(m,c,n,o,i),i.delete(c)),sd(e,r,m)}cd.exports=ex});var gd=u((cF,fd)=>{"use strict";var tx=Yr(),rx=Io(),nx=bo(),ax=ld(),ox=be(),sx=Zt(),ix=To();function dd(e,t,r,n,a){e!==t&&nx(t,function(o,i){if(a||(a=new tx),ox(o))ax(e,t,i,r,dd,n,a);else{var s=n?n(ix(e,i),o,i+"",e,t,a):void 0;s===void 0&&(s=o),rx(e,i,s)}},sx)}fd.exports=dd});var yd=u((lF,md)=>{"use strict";var ux=jt(),px=Vt(),cx=rn(),lx=be();function dx(e,t,r){if(!lx(r))return!1;var n=typeof t;return(n=="number"?px(r)&&cx(t,r.length):n=="string"&&t in r)?ux(r[t],e):!1}md.exports=dx});var hd=u((dF,Ad)=>{"use strict";var fx=co(),gx=yd();function mx(e){return fx(function(t,r){var n=-1,a=r.length,o=a>1?r[a-1]:void 0,i=a>2?r[2]:void 0;for(o=e.length>3&&typeof o=="function"?(a--,o):void 0,i&&gx(r[0],r[1],i)&&(o=a<3?void 0:o,a=1),t=Object(t);++n<a;){var s=r[n];s&&e(t,s,n,o)}return t})}Ad.exports=mx});var Co=u((fF,Id)=>{"use strict";var yx=gd(),Ax=hd(),hx=Ax(function(e,t,r){yx(e,t,r)});Id.exports=hx});var bf=u(oe=>{"use strict";oe.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"};oe.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"]};oe.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};oe.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};oe.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};oe.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]};oe.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}};oe.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}};oe.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=oe.aliasToReal,r={};for(var n in t){var a=t[n];e.call(r,a)?r[a].push(n):r[a]=[n]}return r}();oe.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"};oe.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};oe.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 Ts=u((DQ,Sf)=>{"use strict";Sf.exports={}});var Rf=u((BQ,Ef)=>{"use strict";var $=bf(),eP=Ts(),wf=Array.prototype.push;function tP(e,t){return t==2?function(r,n){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}function Ps(e,t){return t==2?function(r,n){return e(r,n)}: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 rP(e){return function(t){return e({},t)}}function nP(e,t){return function(){for(var r=arguments.length,n=r-1,a=Array(r);r--;)a[r]=arguments[r];var o=a[t],i=a.slice(0,t);return o&&wf.apply(i,o),t!=n&&wf.apply(i,a.slice(t+1)),e.apply(this,i)}}function Os(e,t){return function(){var r=arguments.length;if(r){for(var n=Array(r);r--;)n[r]=arguments[r];var a=n[0]=t.apply(void 0,n);return e.apply(void 0,n),a}}}function Cs(e,t,r,n){var a=typeof t=="function",o=t===Object(t);if(o&&(n=r,r=t,t=void 0),r==null)throw new TypeError;n||(n={});var i={cap:"cap"in n?n.cap:!0,curry:"curry"in n?n.curry:!0,fixed:"fixed"in n?n.fixed:!0,immutable:"immutable"in n?n.immutable:!0,rearg:"rearg"in n?n.rearg:!0},s=a?r:eP,c="curry"in n&&n.curry,f="fixed"in n&&n.fixed,m="rearg"in n&&n.rearg,g=a?r.runInContext():void 0,y=a?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},h=y.ary,E=y.assign,T=y.clone,_=y.curry,R=y.forEach,U=y.isArray,et=y.isError,ye=y.isFunction,tt=y.isWeakMap,Dt=y.keys,gr=y.rearg,mr=y.toInteger,CI=y.toPath,Yi=Dt($.aryMethod),qI={castArray:function(b){return function(){var A=arguments[0];return U(A)?b(vf(A)):b.apply(void 0,arguments)}},iteratee:function(b){return function(){var A=arguments[0],I=arguments[1],w=b(A,I),x=w.length;return i.cap&&typeof I=="number"?(I=I>2?I-2:1,x&&x<=I?w:Ps(w,I)):w}},mixin:function(b){return function(A){var I=this;if(!ye(I))return b(I,Object(A));var w=[];return R(Dt(A),function(x){ye(A[x])&&w.push([x,I.prototype[x]])}),b(I,Object(A)),R(w,function(x){var Z=x[1];ye(Z)?I.prototype[x[0]]=Z:delete I.prototype[x[0]]}),I}},nthArg:function(b){return function(A){var I=A<0?1:mr(A)+1;return _(b(A),I)}},rearg:function(b){return function(A,I){var w=I?I.length:0;return _(b(A,I),w)}},runInContext:function(b){return function(A){return Cs(e,b(A),n)}}};function LI(b,A){if(i.cap){var I=$.iterateeRearg[b];if(I)return GI(A,I);var w=!a&&$.iterateeAry[b];if(w)return NI(A,w)}return A}function UI(b,A,I){return c||i.curry&&I>1?_(A,I):A}function Hi(b,A,I){if(i.fixed&&(f||!$.skipFixed[b])){var w=$.methodSpread[b],x=w&&w.start;return x===void 0?h(A,I):nP(A,x)}return A}function Ji(b,A,I){return i.rearg&&I>1&&(m||!$.skipRearg[b])?gr(A,$.methodRearg[b]||$.aryRearg[I]):A}function DI(b,A){A=CI(A);for(var I=-1,w=A.length,x=w-1,Z=T(Object(b)),qe=Z;qe!=null&&++I<w;){var Ae=A[I],Le=qe[Ae];Le!=null&&!(ye(Le)||et(Le)||tt(Le))&&(qe[Ae]=T(I==x?Le:Object(Le))),qe=qe[Ae]}return Z}function BI(b){return ue.runInContext.convert(b)(void 0)}function zi(b,A){var I=$.aliasToReal[b]||b,w=$.remap[I]||I,x=n;return function(Z){var qe=a?g:y,Ae=a?g[w]:A,Le=E(E({},x),Z);return Cs(qe,I,Ae,Le)}}function NI(b,A){return Xi(b,function(I){return typeof I=="function"?Ps(I,A):I})}function GI(b,A){return Xi(b,function(I){var w=A.length;return tP(gr(Ps(I,w),A),w)})}function Xi(b,A){return function(){var I=arguments.length;if(!I)return b();for(var w=Array(I);I--;)w[I]=arguments[I];var x=i.rearg?0:I-1;return w[x]=A(w[x]),b.apply(void 0,w)}}function Zi(b,A,I){var w,x=$.aliasToReal[b]||b,Z=A,qe=qI[x];return qe?Z=qe(A):i.immutable&&($.mutate.array[x]?Z=Os(A,vf):$.mutate.object[x]?Z=Os(A,rP(A)):$.mutate.set[x]&&(Z=Os(A,DI))),R(Yi,function(Ae){return R($.aryMethod[Ae],function(Le){if(x==Le){var eu=$.methodSpread[x],MI=eu&&eu.afterRearg;return w=MI?Hi(x,Ji(x,Z,Ae),Ae):Ji(x,Hi(x,Z,Ae),Ae),w=LI(x,w),w=UI(x,w,Ae),!1}}),!w}),w||(w=Z),w==A&&(w=c?_(w,1):function(){return A.apply(this,arguments)}),w.convert=zi(x,A),w.placeholder=A.placeholder=I,w}if(!o)return Zi(t,r,s);var ue=r,yr=[];return R(Yi,function(b){R($.aryMethod[b],function(A){var I=ue[$.remap[A]||A];I&&yr.push([A,Zi(A,I,ue)])})}),R(Dt(ue),function(b){var A=ue[b];if(typeof A=="function"){for(var I=yr.length;I--;)if(yr[I][0]==b)return;A.convert=zi(b,A),yr.push([b,A])}}),R(yr,function(b){ue[b[0]]=b[1]}),ue.convert=BI,ue.placeholder=ue,R(Dt(ue),function(b){R($.realToAlias[b]||[],function(A){ue[A]=ue[b]})}),ue}Ef.exports=Cs});var qs=u((NQ,_f)=>{"use strict";var aP=it(),oP=re(),sP=aP(oP,"WeakMap");_f.exports=sP});var Ls=u((GQ,Tf)=>{"use strict";var xf=qs(),iP=xf&&new xf;Tf.exports=iP});var Us=u((MQ,Of)=>{"use strict";var uP=Qr(),Pf=Ls(),pP=Pf?function(e,t){return Pf.set(e,t),e}:uP;Of.exports=pP});var mn=u((kQ,Cf)=>{"use strict";var cP=zr(),lP=be();function dP(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=cP(e.prototype),n=e.apply(r,t);return lP(n)?n:r}}Cf.exports=dP});var Lf=u((FQ,qf)=>{"use strict";var fP=mn(),gP=re(),mP=1;function yP(e,t,r){var n=t&mP,a=fP(e);function o(){var i=this&&this!==gP&&this instanceof o?a:e;return i.apply(n?r:this,arguments)}return o}qf.exports=yP});var Ds=u((QQ,Uf)=>{"use strict";var AP=Math.max;function hP(e,t,r,n){for(var a=-1,o=e.length,i=r.length,s=-1,c=t.length,f=AP(o-i,0),m=Array(c+f),g=!n;++s<c;)m[s]=t[s];for(;++a<i;)(g||a<o)&&(m[r[a]]=e[a]);for(;f--;)m[s++]=e[a++];return m}Uf.exports=hP});var Bs=u((jQ,Df)=>{"use strict";var IP=Math.max;function bP(e,t,r,n){for(var a=-1,o=e.length,i=-1,s=r.length,c=-1,f=t.length,m=IP(o-s,0),g=Array(m+f),y=!n;++a<m;)g[a]=e[a];for(var h=a;++c<f;)g[h+c]=t[c];for(;++i<s;)(y||a<o)&&(g[h+r[i]]=e[a++]);return g}Df.exports=bP});var Nf=u((WQ,Bf)=>{"use strict";function SP(e,t){for(var r=e.length,n=0;r--;)e[r]===t&&++n;return n}Bf.exports=SP});var la=u(($Q,Gf)=>{"use strict";function wP(){}Gf.exports=wP});var fa=u((VQ,Mf)=>{"use strict";var vP=zr(),EP=la(),RP=4294967295;function da(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=RP,this.__views__=[]}da.prototype=vP(EP.prototype);da.prototype.constructor=da;Mf.exports=da});var Ns=u((KQ,Ff)=>{"use strict";var kf=Ls(),_P=yo(),xP=kf?function(e){return kf.get(e)}:_P;Ff.exports=xP});var jf=u((YQ,Qf)=>{"use strict";var TP={};Qf.exports=TP});var Vf=u((HQ,$f)=>{"use strict";var Wf=jf(),PP=Object.prototype,OP=PP.hasOwnProperty;function CP(e){for(var t=e.name+"",r=Wf[t],n=OP.call(Wf,t)?r.length:0;n--;){var a=r[n],o=a.func;if(o==null||o==e)return a.name}return t}$f.exports=CP});var Gs=u((JQ,Kf)=>{"use strict";var qP=zr(),LP=la();function ga(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}ga.prototype=qP(LP.prototype);ga.prototype.constructor=ga;Kf.exports=ga});var Hf=u((zQ,Yf)=>{"use strict";var UP=fa(),DP=Gs(),BP=Ht();function NP(e){if(e instanceof UP)return e.clone();var t=new DP(e.__wrapped__,e.__chain__);return t.__actions__=BP(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}Yf.exports=NP});var Xf=u((XQ,zf)=>{"use strict";var GP=fa(),Jf=Gs(),MP=la(),kP=J(),FP=ce(),QP=Hf(),jP=Object.prototype,WP=jP.hasOwnProperty;function ma(e){if(FP(e)&&!kP(e)&&!(e instanceof GP)){if(e instanceof Jf)return e;if(WP.call(e,"__wrapped__"))return QP(e)}return new Jf(e)}ma.prototype=MP.prototype;ma.prototype.constructor=ma;zf.exports=ma});var eg=u((ZQ,Zf)=>{"use strict";var $P=fa(),VP=Ns(),KP=Vf(),YP=Xf();function HP(e){var t=KP(e),r=YP[t];if(typeof r!="function"||!(t in $P.prototype))return!1;if(e===r)return!0;var n=VP(r);return!!n&&e===n[0]}Zf.exports=HP});var Ms=u((ej,tg)=>{"use strict";var JP=Us(),zP=po(),XP=zP(JP);tg.exports=XP});var ng=u((tj,rg)=>{"use strict";var ZP=/\{\n\/\* \[wrapped with (.+)\] \*/,eO=/,? & /;function tO(e){var t=e.match(ZP);return t?t[1].split(eO):[]}rg.exports=tO});var og=u((rj,ag)=>{"use strict";var rO=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function nO(e,t){var r=t.length;if(!r)return e;var n=r-1;return t[n]=(r>1?"& ":"")+t[n],t=t.join(r>2?", ":" "),e.replace(rO,`{
|
|
1
|
+
"use strict";var jI=Object.create;var Sn=Object.defineProperty;var WI=Object.getOwnPropertyDescriptor;var $I=Object.getOwnPropertyNames;var VI=Object.getPrototypeOf,KI=Object.prototype.hasOwnProperty;var u=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),S=(e,t)=>{for(var r in t)Sn(e,r,{get:t[r],enumerable:!0})},tu=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of $I(t))!KI.call(e,a)&&a!==r&&Sn(e,a,{get:()=>t[a],enumerable:!(n=WI(t,a))||n.enumerable});return e};var O=(e,t,r)=>(r=e!=null?jI(VI(e)):{},tu(t||!e||!e.__esModule?Sn(r,"default",{value:e,enumerable:!0}):r,e)),HI=e=>tu(Sn({},"__esModule",{value:!0}),e);var Nn=u((l0,Fu)=>{"use strict";function Vb(e,t){for(var r=-1,n=t.length,a=e.length;++r<n;)e[a+r]=t[r];return e}Fu.exports=Vb});var no=u((d0,Qu)=>{"use strict";var Kb=typeof global=="object"&&global&&global.Object===Object&&global;Qu.exports=Kb});var re=u((f0,ju)=>{"use strict";var Hb=no(),Yb=typeof self=="object"&&self&&self.Object===Object&&self,Jb=Hb||Yb||Function("return this")();ju.exports=Jb});var bt=u((g0,Wu)=>{"use strict";var zb=re(),Xb=zb.Symbol;Wu.exports=Xb});var Hu=u((m0,Ku)=>{"use strict";var $u=bt(),Vu=Object.prototype,Zb=Vu.hasOwnProperty,eS=Vu.toString,kr=$u?$u.toStringTag:void 0;function tS(e){var t=Zb.call(e,kr),r=e[kr];try{e[kr]=void 0;var n=!0}catch{}var a=eS.call(e);return n&&(t?e[kr]=r:delete e[kr]),a}Ku.exports=tS});var Ju=u((y0,Yu)=>{"use strict";var rS=Object.prototype,nS=rS.toString;function aS(e){return nS.call(e)}Yu.exports=aS});var st=u((A0,Zu)=>{"use strict";var zu=bt(),oS=Hu(),sS=Ju(),iS="[object Null]",uS="[object Undefined]",Xu=zu?zu.toStringTag:void 0;function pS(e){return e==null?e===void 0?uS:iS:Xu&&Xu in Object(e)?oS(e):sS(e)}Zu.exports=pS});var ce=u((h0,ep)=>{"use strict";function cS(e){return e!=null&&typeof e=="object"}ep.exports=cS});var rp=u((I0,tp)=>{"use strict";var lS=st(),dS=ce(),fS="[object Arguments]";function gS(e){return dS(e)&&lS(e)==fS}tp.exports=gS});var Fr=u((b0,op)=>{"use strict";var np=rp(),mS=ce(),ap=Object.prototype,yS=ap.hasOwnProperty,AS=ap.propertyIsEnumerable,hS=np(function(){return arguments}())?np:function(e){return mS(e)&&yS.call(e,"callee")&&!AS.call(e,"callee")};op.exports=hS});var J=u((S0,sp)=>{"use strict";var IS=Array.isArray;sp.exports=IS});var cp=u((w0,pp)=>{"use strict";var ip=bt(),bS=Fr(),SS=J(),up=ip?ip.isConcatSpreadable:void 0;function wS(e){return SS(e)||bS(e)||!!(up&&e&&e[up])}pp.exports=wS});var ao=u((v0,dp)=>{"use strict";var vS=Nn(),ES=cp();function lp(e,t,r,n,a){var o=-1,i=e.length;for(r||(r=ES),a||(a=[]);++o<i;){var s=e[o];t>0&&r(s)?t>1?lp(s,t-1,r,n,a):vS(a,s):n||(a[a.length]=s)}return a}dp.exports=lp});var Qr=u((E0,fp)=>{"use strict";function RS(e){return e}fp.exports=RS});var Gn=u((R0,gp)=>{"use strict";function _S(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}gp.exports=_S});var oo=u((_0,yp)=>{"use strict";var xS=Gn(),mp=Math.max;function TS(e,t,r){return t=mp(t===void 0?e.length-1:t,0),function(){for(var n=arguments,a=-1,o=mp(n.length-t,0),i=Array(o);++a<o;)i[a]=n[t+a];a=-1;for(var s=Array(t+1);++a<t;)s[a]=n[a];return s[t]=r(i),xS(e,this,s)}}yp.exports=TS});var hp=u((x0,Ap)=>{"use strict";function PS(e){return function(){return e}}Ap.exports=PS});var Se=u((T0,Ip)=>{"use strict";function OS(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}Ip.exports=OS});var jr=u((P0,bp)=>{"use strict";var CS=st(),qS=Se(),LS="[object AsyncFunction]",US="[object Function]",DS="[object GeneratorFunction]",BS="[object Proxy]";function NS(e){if(!qS(e))return!1;var t=CS(e);return t==US||t==DS||t==LS||t==BS}bp.exports=NS});var wp=u((O0,Sp)=>{"use strict";var GS=re(),MS=GS["__core-js_shared__"];Sp.exports=MS});var Rp=u((C0,Ep)=>{"use strict";var so=wp(),vp=function(){var e=/[^.]+$/.exec(so&&so.keys&&so.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function kS(e){return!!vp&&vp in e}Ep.exports=kS});var io=u((q0,_p)=>{"use strict";var FS=Function.prototype,QS=FS.toString;function jS(e){if(e!=null){try{return QS.call(e)}catch{}try{return e+""}catch{}}return""}_p.exports=jS});var Tp=u((L0,xp)=>{"use strict";var WS=jr(),$S=Rp(),VS=Se(),KS=io(),HS=/[\\^$.*+?()[\]{}|]/g,YS=/^\[object .+?Constructor\]$/,JS=Function.prototype,zS=Object.prototype,XS=JS.toString,ZS=zS.hasOwnProperty,ew=RegExp("^"+XS.call(ZS).replace(HS,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function tw(e){if(!VS(e)||$S(e))return!1;var t=WS(e)?ew:YS;return t.test(KS(e))}xp.exports=tw});var Op=u((U0,Pp)=>{"use strict";function rw(e,t){return e?.[t]}Pp.exports=rw});var it=u((D0,Cp)=>{"use strict";var nw=Tp(),aw=Op();function ow(e,t){var r=aw(e,t);return nw(r)?r:void 0}Cp.exports=ow});var uo=u((B0,qp)=>{"use strict";var sw=it(),iw=function(){try{var e=sw(Object,"defineProperty");return e({},"",{}),e}catch{}}();qp.exports=iw});var Dp=u((N0,Up)=>{"use strict";var uw=hp(),Lp=uo(),pw=Qr(),cw=Lp?function(e,t){return Lp(e,"toString",{configurable:!0,enumerable:!1,value:uw(t),writable:!0})}:pw;Up.exports=cw});var po=u((G0,Bp)=>{"use strict";var lw=800,dw=16,fw=Date.now;function gw(e){var t=0,r=0;return function(){var n=fw(),a=dw-(n-r);if(r=n,a>0){if(++t>=lw)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}Bp.exports=gw});var Mn=u((M0,Np)=>{"use strict";var mw=Dp(),yw=po(),Aw=yw(mw);Np.exports=Aw});var co=u((k0,Gp)=>{"use strict";var hw=Qr(),Iw=oo(),bw=Mn();function Sw(e,t){return bw(Iw(e,t,hw),e+"")}Gp.exports=Sw});var Wr=u((F0,Mp)=>{"use strict";var ww=it(),vw=ww(Object,"create");Mp.exports=vw});var Qp=u((Q0,Fp)=>{"use strict";var kp=Wr();function Ew(){this.__data__=kp?kp(null):{},this.size=0}Fp.exports=Ew});var Wp=u((j0,jp)=>{"use strict";function Rw(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}jp.exports=Rw});var Vp=u((W0,$p)=>{"use strict";var _w=Wr(),xw="__lodash_hash_undefined__",Tw=Object.prototype,Pw=Tw.hasOwnProperty;function Ow(e){var t=this.__data__;if(_w){var r=t[e];return r===xw?void 0:r}return Pw.call(t,e)?t[e]:void 0}$p.exports=Ow});var Hp=u(($0,Kp)=>{"use strict";var Cw=Wr(),qw=Object.prototype,Lw=qw.hasOwnProperty;function Uw(e){var t=this.__data__;return Cw?t[e]!==void 0:Lw.call(t,e)}Kp.exports=Uw});var Jp=u((V0,Yp)=>{"use strict";var Dw=Wr(),Bw="__lodash_hash_undefined__";function Nw(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=Dw&&t===void 0?Bw:t,this}Yp.exports=Nw});var Xp=u((K0,zp)=>{"use strict";var Gw=Qp(),Mw=Wp(),kw=Vp(),Fw=Hp(),Qw=Jp();function Qt(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}Qt.prototype.clear=Gw;Qt.prototype.delete=Mw;Qt.prototype.get=kw;Qt.prototype.has=Fw;Qt.prototype.set=Qw;zp.exports=Qt});var ec=u((H0,Zp)=>{"use strict";function jw(){this.__data__=[],this.size=0}Zp.exports=jw});var jt=u((Y0,tc)=>{"use strict";function Ww(e,t){return e===t||e!==e&&t!==t}tc.exports=Ww});var $r=u((J0,rc)=>{"use strict";var $w=jt();function Vw(e,t){for(var r=e.length;r--;)if($w(e[r][0],t))return r;return-1}rc.exports=Vw});var ac=u((z0,nc)=>{"use strict";var Kw=$r(),Hw=Array.prototype,Yw=Hw.splice;function Jw(e){var t=this.__data__,r=Kw(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():Yw.call(t,r,1),--this.size,!0}nc.exports=Jw});var sc=u((X0,oc)=>{"use strict";var zw=$r();function Xw(e){var t=this.__data__,r=zw(t,e);return r<0?void 0:t[r][1]}oc.exports=Xw});var uc=u((Z0,ic)=>{"use strict";var Zw=$r();function ev(e){return Zw(this.__data__,e)>-1}ic.exports=ev});var cc=u((ek,pc)=>{"use strict";var tv=$r();function rv(e,t){var r=this.__data__,n=tv(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}pc.exports=rv});var Vr=u((tk,lc)=>{"use strict";var nv=ec(),av=ac(),ov=sc(),sv=uc(),iv=cc();function Wt(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}Wt.prototype.clear=nv;Wt.prototype.delete=av;Wt.prototype.get=ov;Wt.prototype.has=sv;Wt.prototype.set=iv;lc.exports=Wt});var kn=u((rk,dc)=>{"use strict";var uv=it(),pv=re(),cv=uv(pv,"Map");dc.exports=cv});var mc=u((nk,gc)=>{"use strict";var fc=Xp(),lv=Vr(),dv=kn();function fv(){this.size=0,this.__data__={hash:new fc,map:new(dv||lv),string:new fc}}gc.exports=fv});var Ac=u((ak,yc)=>{"use strict";function gv(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}yc.exports=gv});var Kr=u((ok,hc)=>{"use strict";var mv=Ac();function yv(e,t){var r=e.__data__;return mv(t)?r[typeof t=="string"?"string":"hash"]:r.map}hc.exports=yv});var bc=u((sk,Ic)=>{"use strict";var Av=Kr();function hv(e){var t=Av(this,e).delete(e);return this.size-=t?1:0,t}Ic.exports=hv});var wc=u((ik,Sc)=>{"use strict";var Iv=Kr();function bv(e){return Iv(this,e).get(e)}Sc.exports=bv});var Ec=u((uk,vc)=>{"use strict";var Sv=Kr();function wv(e){return Sv(this,e).has(e)}vc.exports=wv});var _c=u((pk,Rc)=>{"use strict";var vv=Kr();function Ev(e,t){var r=vv(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}Rc.exports=Ev});var Fn=u((ck,xc)=>{"use strict";var Rv=mc(),_v=bc(),xv=wc(),Tv=Ec(),Pv=_c();function $t(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}$t.prototype.clear=Rv;$t.prototype.delete=_v;$t.prototype.get=xv;$t.prototype.has=Tv;$t.prototype.set=Pv;xc.exports=$t});var Pc=u((lk,Tc)=>{"use strict";var Ov="__lodash_hash_undefined__";function Cv(e){return this.__data__.set(e,Ov),this}Tc.exports=Cv});var Cc=u((dk,Oc)=>{"use strict";function qv(e){return this.__data__.has(e)}Oc.exports=qv});var lo=u((fk,qc)=>{"use strict";var Lv=Fn(),Uv=Pc(),Dv=Cc();function Qn(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new Lv;++t<r;)this.add(e[t])}Qn.prototype.add=Qn.prototype.push=Uv;Qn.prototype.has=Dv;qc.exports=Qn});var Uc=u((gk,Lc)=>{"use strict";function Bv(e,t,r,n){for(var a=e.length,o=r+(n?1:-1);n?o--:++o<a;)if(t(e[o],o,e))return o;return-1}Lc.exports=Bv});var Bc=u((mk,Dc)=>{"use strict";function Nv(e){return e!==e}Dc.exports=Nv});var Gc=u((yk,Nc)=>{"use strict";function Gv(e,t,r){for(var n=r-1,a=e.length;++n<a;)if(e[n]===t)return n;return-1}Nc.exports=Gv});var kc=u((Ak,Mc)=>{"use strict";var Mv=Uc(),kv=Bc(),Fv=Gc();function Qv(e,t,r){return t===t?Fv(e,t,r):Mv(e,kv,r)}Mc.exports=Qv});var fo=u((hk,Fc)=>{"use strict";var jv=kc();function Wv(e,t){var r=e==null?0:e.length;return!!r&&jv(e,t,0)>-1}Fc.exports=Wv});var jc=u((Ik,Qc)=>{"use strict";function $v(e,t,r){for(var n=-1,a=e==null?0:e.length;++n<a;)if(r(t,e[n]))return!0;return!1}Qc.exports=$v});var go=u((bk,Wc)=>{"use strict";function Vv(e,t){return e.has(t)}Wc.exports=Vv});var mo=u((Sk,$c)=>{"use strict";var Kv=it(),Hv=re(),Yv=Kv(Hv,"Set");$c.exports=Yv});var yo=u((wk,Vc)=>{"use strict";function Jv(){}Vc.exports=Jv});var jn=u((vk,Kc)=>{"use strict";function zv(e){var t=-1,r=Array(e.size);return e.forEach(function(n){r[++t]=n}),r}Kc.exports=zv});var Yc=u((Ek,Hc)=>{"use strict";var Ao=mo(),Xv=yo(),Zv=jn(),eE=1/0,tE=Ao&&1/Zv(new Ao([,-0]))[1]==eE?function(e){return new Ao(e)}:Xv;Hc.exports=tE});var zc=u((Rk,Jc)=>{"use strict";var rE=lo(),nE=fo(),aE=jc(),oE=go(),sE=Yc(),iE=jn(),uE=200;function pE(e,t,r){var n=-1,a=nE,o=e.length,i=!0,s=[],c=s;if(r)i=!1,a=aE;else if(o>=uE){var f=t?null:sE(e);if(f)return iE(f);i=!1,a=oE,c=new rE}else c=t?[]:s;e:for(;++n<o;){var m=e[n],g=t?t(m):m;if(m=r||m!==0?m:0,i&&g===g){for(var y=c.length;y--;)if(c[y]===g)continue e;t&&c.push(g),s.push(m)}else a(c,g,r)||(c!==s&&c.push(g),s.push(m))}return s}Jc.exports=pE});var Wn=u((_k,Xc)=>{"use strict";var cE=9007199254740991;function lE(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=cE}Xc.exports=lE});var Vt=u((xk,Zc)=>{"use strict";var dE=jr(),fE=Wn();function gE(e){return e!=null&&fE(e.length)&&!dE(e)}Zc.exports=gE});var ho=u((Tk,el)=>{"use strict";var mE=Vt(),yE=ce();function AE(e){return yE(e)&&mE(e)}el.exports=AE});var rl=u((Pk,tl)=>{"use strict";var hE=ao(),IE=co(),bE=zc(),SE=ho(),wE=IE(function(e){return bE(hE(e,1,SE,!0))});tl.exports=wE});var al=u((Ok,nl)=>{"use strict";var vE=Vr();function EE(){this.__data__=new vE,this.size=0}nl.exports=EE});var sl=u((Ck,ol)=>{"use strict";function RE(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}ol.exports=RE});var ul=u((qk,il)=>{"use strict";function _E(e){return this.__data__.get(e)}il.exports=_E});var cl=u((Lk,pl)=>{"use strict";function xE(e){return this.__data__.has(e)}pl.exports=xE});var dl=u((Uk,ll)=>{"use strict";var TE=Vr(),PE=kn(),OE=Fn(),CE=200;function qE(e,t){var r=this.__data__;if(r instanceof TE){var n=r.__data__;if(!PE||n.length<CE-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new OE(n)}return r.set(e,t),this.size=r.size,this}ll.exports=qE});var Hr=u((Dk,fl)=>{"use strict";var LE=Vr(),UE=al(),DE=sl(),BE=ul(),NE=cl(),GE=dl();function Kt(e){var t=this.__data__=new LE(e);this.size=t.size}Kt.prototype.clear=UE;Kt.prototype.delete=DE;Kt.prototype.get=BE;Kt.prototype.has=NE;Kt.prototype.set=GE;fl.exports=Kt});var Yr=u((Bk,ml)=>{"use strict";var gl=uo();function ME(e,t,r){t=="__proto__"&&gl?gl(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}ml.exports=ME});var Io=u((Nk,yl)=>{"use strict";var kE=Yr(),FE=jt();function QE(e,t,r){(r!==void 0&&!FE(e[t],r)||r===void 0&&!(t in e))&&kE(e,t,r)}yl.exports=QE});var hl=u((Gk,Al)=>{"use strict";function jE(e){return function(t,r,n){for(var a=-1,o=Object(t),i=n(t),s=i.length;s--;){var c=i[e?s:++a];if(r(o[c],c,o)===!1)break}return t}}Al.exports=jE});var bo=u((Mk,Il)=>{"use strict";var WE=hl(),$E=WE();Il.exports=$E});var So=u((Jr,Ht)=>{"use strict";var VE=re(),vl=typeof Jr=="object"&&Jr&&!Jr.nodeType&&Jr,bl=vl&&typeof Ht=="object"&&Ht&&!Ht.nodeType&&Ht,KE=bl&&bl.exports===vl,Sl=KE?VE.Buffer:void 0,wl=Sl?Sl.allocUnsafe:void 0;function HE(e,t){if(t)return e.slice();var r=e.length,n=wl?wl(r):new e.constructor(r);return e.copy(n),n}Ht.exports=HE});var wo=u((kk,El)=>{"use strict";var YE=re(),JE=YE.Uint8Array;El.exports=JE});var $n=u((Fk,_l)=>{"use strict";var Rl=wo();function zE(e){var t=new e.constructor(e.byteLength);return new Rl(t).set(new Rl(e)),t}_l.exports=zE});var vo=u((Qk,xl)=>{"use strict";var XE=$n();function ZE(e,t){var r=t?XE(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}xl.exports=ZE});var Yt=u((jk,Tl)=>{"use strict";function eR(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t}Tl.exports=eR});var zr=u((Wk,Ol)=>{"use strict";var tR=Se(),Pl=Object.create,rR=function(){function e(){}return function(t){if(!tR(t))return{};if(Pl)return Pl(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();Ol.exports=rR});var Eo=u(($k,Cl)=>{"use strict";function nR(e,t){return function(r){return e(t(r))}}Cl.exports=nR});var Vn=u((Vk,ql)=>{"use strict";var aR=Eo(),oR=aR(Object.getPrototypeOf,Object);ql.exports=oR});var Kn=u((Kk,Ll)=>{"use strict";var sR=Object.prototype;function iR(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||sR;return e===r}Ll.exports=iR});var Ro=u((Hk,Ul)=>{"use strict";var uR=zr(),pR=Vn(),cR=Kn();function lR(e){return typeof e.constructor=="function"&&!cR(e)?uR(pR(e)):{}}Ul.exports=lR});var Bl=u((Yk,Dl)=>{"use strict";function dR(){return!1}Dl.exports=dR});var Zr=u((Xr,Jt)=>{"use strict";var fR=re(),gR=Bl(),Ml=typeof Xr=="object"&&Xr&&!Xr.nodeType&&Xr,Nl=Ml&&typeof Jt=="object"&&Jt&&!Jt.nodeType&&Jt,mR=Nl&&Nl.exports===Ml,Gl=mR?fR.Buffer:void 0,yR=Gl?Gl.isBuffer:void 0,AR=yR||gR;Jt.exports=AR});var _o=u((Jk,Fl)=>{"use strict";var hR=st(),IR=Vn(),bR=ce(),SR="[object Object]",wR=Function.prototype,vR=Object.prototype,kl=wR.toString,ER=vR.hasOwnProperty,RR=kl.call(Object);function _R(e){if(!bR(e)||hR(e)!=SR)return!1;var t=IR(e);if(t===null)return!0;var r=ER.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&kl.call(r)==RR}Fl.exports=_R});var jl=u((zk,Ql)=>{"use strict";var xR=st(),TR=Wn(),PR=ce(),OR="[object Arguments]",CR="[object Array]",qR="[object Boolean]",LR="[object Date]",UR="[object Error]",DR="[object Function]",BR="[object Map]",NR="[object Number]",GR="[object Object]",MR="[object RegExp]",kR="[object Set]",FR="[object String]",QR="[object WeakMap]",jR="[object ArrayBuffer]",WR="[object DataView]",$R="[object Float32Array]",VR="[object Float64Array]",KR="[object Int8Array]",HR="[object Int16Array]",YR="[object Int32Array]",JR="[object Uint8Array]",zR="[object Uint8ClampedArray]",XR="[object Uint16Array]",ZR="[object Uint32Array]",L={};L[$R]=L[VR]=L[KR]=L[HR]=L[YR]=L[JR]=L[zR]=L[XR]=L[ZR]=!0;L[OR]=L[CR]=L[jR]=L[qR]=L[WR]=L[LR]=L[UR]=L[DR]=L[BR]=L[NR]=L[GR]=L[MR]=L[kR]=L[FR]=L[QR]=!1;function e_(e){return PR(e)&&TR(e.length)&&!!L[xR(e)]}Ql.exports=e_});var Hn=u((Xk,Wl)=>{"use strict";function t_(e){return function(t){return e(t)}}Wl.exports=t_});var Yn=u((en,zt)=>{"use strict";var r_=no(),$l=typeof en=="object"&&en&&!en.nodeType&&en,tn=$l&&typeof zt=="object"&&zt&&!zt.nodeType&&zt,n_=tn&&tn.exports===$l,xo=n_&&r_.process,a_=function(){try{var e=tn&&tn.require&&tn.require("util").types;return e||xo&&xo.binding&&xo.binding("util")}catch{}}();zt.exports=a_});var Jn=u((Zk,Hl)=>{"use strict";var o_=jl(),s_=Hn(),Vl=Yn(),Kl=Vl&&Vl.isTypedArray,i_=Kl?s_(Kl):o_;Hl.exports=i_});var To=u((eF,Yl)=>{"use strict";function u_(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}Yl.exports=u_});var Po=u((tF,Jl)=>{"use strict";var p_=Yr(),c_=jt(),l_=Object.prototype,d_=l_.hasOwnProperty;function f_(e,t,r){var n=e[t];(!(d_.call(e,t)&&c_(n,r))||r===void 0&&!(t in e))&&p_(e,t,r)}Jl.exports=f_});var Xt=u((rF,zl)=>{"use strict";var g_=Po(),m_=Yr();function y_(e,t,r,n){var a=!r;r||(r={});for(var o=-1,i=t.length;++o<i;){var s=t[o],c=n?n(r[s],e[s],s,r,e):void 0;c===void 0&&(c=e[s]),a?m_(r,s,c):g_(r,s,c)}return r}zl.exports=y_});var Zl=u((nF,Xl)=>{"use strict";function A_(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}Xl.exports=A_});var rn=u((aF,ed)=>{"use strict";var h_=9007199254740991,I_=/^(?:0|[1-9]\d*)$/;function b_(e,t){var r=typeof e;return t=t??h_,!!t&&(r=="number"||r!="symbol"&&I_.test(e))&&e>-1&&e%1==0&&e<t}ed.exports=b_});var Oo=u((oF,td)=>{"use strict";var S_=Zl(),w_=Fr(),v_=J(),E_=Zr(),R_=rn(),__=Jn(),x_=Object.prototype,T_=x_.hasOwnProperty;function P_(e,t){var r=v_(e),n=!r&&w_(e),a=!r&&!n&&E_(e),o=!r&&!n&&!a&&__(e),i=r||n||a||o,s=i?S_(e.length,String):[],c=s.length;for(var f in e)(t||T_.call(e,f))&&!(i&&(f=="length"||a&&(f=="offset"||f=="parent")||o&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||R_(f,c)))&&s.push(f);return s}td.exports=P_});var nd=u((sF,rd)=>{"use strict";function O_(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}rd.exports=O_});var od=u((iF,ad)=>{"use strict";var C_=Se(),q_=Kn(),L_=nd(),U_=Object.prototype,D_=U_.hasOwnProperty;function B_(e){if(!C_(e))return L_(e);var t=q_(e),r=[];for(var n in e)n=="constructor"&&(t||!D_.call(e,n))||r.push(n);return r}ad.exports=B_});var Zt=u((uF,sd)=>{"use strict";var N_=Oo(),G_=od(),M_=Vt();function k_(e){return M_(e)?N_(e,!0):G_(e)}sd.exports=k_});var ud=u((pF,id)=>{"use strict";var F_=Xt(),Q_=Zt();function j_(e){return F_(e,Q_(e))}id.exports=j_});var gd=u((cF,fd)=>{"use strict";var pd=Io(),W_=So(),$_=vo(),V_=Yt(),K_=Ro(),cd=Fr(),ld=J(),H_=ho(),Y_=Zr(),J_=jr(),z_=Se(),X_=_o(),Z_=Jn(),dd=To(),ex=ud();function tx(e,t,r,n,a,o,i){var s=dd(e,r),c=dd(t,r),f=i.get(c);if(f){pd(e,r,f);return}var m=o?o(s,c,r+"",e,t,i):void 0,g=m===void 0;if(g){var y=ld(c),h=!y&&Y_(c),E=!y&&!h&&Z_(c);m=c,y||h||E?ld(s)?m=s:H_(s)?m=V_(s):h?(g=!1,m=W_(c,!0)):E?(g=!1,m=$_(c,!0)):m=[]:X_(c)||cd(c)?(m=s,cd(s)?m=ex(s):(!z_(s)||J_(s))&&(m=K_(c))):g=!1}g&&(i.set(c,m),a(m,c,n,o,i),i.delete(c)),pd(e,r,m)}fd.exports=tx});var Ad=u((lF,yd)=>{"use strict";var rx=Hr(),nx=Io(),ax=bo(),ox=gd(),sx=Se(),ix=Zt(),ux=To();function md(e,t,r,n,a){e!==t&&ax(t,function(o,i){if(a||(a=new rx),sx(o))ox(e,t,i,r,md,n,a);else{var s=n?n(ux(e,i),o,i+"",e,t,a):void 0;s===void 0&&(s=o),nx(e,i,s)}},ix)}yd.exports=md});var Id=u((dF,hd)=>{"use strict";var px=jt(),cx=Vt(),lx=rn(),dx=Se();function fx(e,t,r){if(!dx(r))return!1;var n=typeof t;return(n=="number"?cx(r)&&lx(t,r.length):n=="string"&&t in r)?px(r[t],e):!1}hd.exports=fx});var Sd=u((fF,bd)=>{"use strict";var gx=co(),mx=Id();function yx(e){return gx(function(t,r){var n=-1,a=r.length,o=a>1?r[a-1]:void 0,i=a>2?r[2]:void 0;for(o=e.length>3&&typeof o=="function"?(a--,o):void 0,i&&mx(r[0],r[1],i)&&(o=a<3?void 0:o,a=1),t=Object(t);++n<a;){var s=r[n];s&&e(t,s,n,o)}return t})}bd.exports=yx});var Co=u((gF,wd)=>{"use strict";var Ax=Ad(),hx=Sd(),Ix=hx(function(e,t,r){Ax(e,t,r)});wd.exports=Ix});var vf=u(oe=>{"use strict";oe.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"};oe.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"]};oe.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};oe.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};oe.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};oe.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]};oe.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}};oe.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}};oe.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=oe.aliasToReal,r={};for(var n in t){var a=t[n];e.call(r,a)?r[a].push(n):r[a]=[n]}return r}();oe.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"};oe.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};oe.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 Ts=u((BQ,Ef)=>{"use strict";Ef.exports={}});var Tf=u((NQ,xf)=>{"use strict";var $=vf(),tP=Ts(),Rf=Array.prototype.push;function rP(e,t){return t==2?function(r,n){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}function Ps(e,t){return t==2?function(r,n){return e(r,n)}: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 nP(e){return function(t){return e({},t)}}function aP(e,t){return function(){for(var r=arguments.length,n=r-1,a=Array(r);r--;)a[r]=arguments[r];var o=a[t],i=a.slice(0,t);return o&&Rf.apply(i,o),t!=n&&Rf.apply(i,a.slice(t+1)),e.apply(this,i)}}function Os(e,t){return function(){var r=arguments.length;if(r){for(var n=Array(r);r--;)n[r]=arguments[r];var a=n[0]=t.apply(void 0,n);return e.apply(void 0,n),a}}}function Cs(e,t,r,n){var a=typeof t=="function",o=t===Object(t);if(o&&(n=r,r=t,t=void 0),r==null)throw new TypeError;n||(n={});var i={cap:"cap"in n?n.cap:!0,curry:"curry"in n?n.curry:!0,fixed:"fixed"in n?n.fixed:!0,immutable:"immutable"in n?n.immutable:!0,rearg:"rearg"in n?n.rearg:!0},s=a?r:tP,c="curry"in n&&n.curry,f="fixed"in n&&n.fixed,m="rearg"in n&&n.rearg,g=a?r.runInContext():void 0,y=a?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},h=y.ary,E=y.assign,T=y.clone,_=y.curry,R=y.forEach,U=y.isArray,et=y.isError,Ae=y.isFunction,tt=y.isWeakMap,Dt=y.keys,gr=y.rearg,mr=y.toInteger,UI=y.toPath,Hi=Dt($.aryMethod),DI={castArray:function(b){return function(){var A=arguments[0];return U(A)?b(_f(A)):b.apply(void 0,arguments)}},iteratee:function(b){return function(){var A=arguments[0],I=arguments[1],w=b(A,I),x=w.length;return i.cap&&typeof I=="number"?(I=I>2?I-2:1,x&&x<=I?w:Ps(w,I)):w}},mixin:function(b){return function(A){var I=this;if(!Ae(I))return b(I,Object(A));var w=[];return R(Dt(A),function(x){Ae(A[x])&&w.push([x,I.prototype[x]])}),b(I,Object(A)),R(w,function(x){var Z=x[1];Ae(Z)?I.prototype[x[0]]=Z:delete I.prototype[x[0]]}),I}},nthArg:function(b){return function(A){var I=A<0?1:mr(A)+1;return _(b(A),I)}},rearg:function(b){return function(A,I){var w=I?I.length:0;return _(b(A,I),w)}},runInContext:function(b){return function(A){return Cs(e,b(A),n)}}};function BI(b,A){if(i.cap){var I=$.iterateeRearg[b];if(I)return FI(A,I);var w=!a&&$.iterateeAry[b];if(w)return kI(A,w)}return A}function NI(b,A,I){return c||i.curry&&I>1?_(A,I):A}function Yi(b,A,I){if(i.fixed&&(f||!$.skipFixed[b])){var w=$.methodSpread[b],x=w&&w.start;return x===void 0?h(A,I):aP(A,x)}return A}function Ji(b,A,I){return i.rearg&&I>1&&(m||!$.skipRearg[b])?gr(A,$.methodRearg[b]||$.aryRearg[I]):A}function GI(b,A){A=UI(A);for(var I=-1,w=A.length,x=w-1,Z=T(Object(b)),Le=Z;Le!=null&&++I<w;){var he=A[I],Ue=Le[he];Ue!=null&&!(Ae(Ue)||et(Ue)||tt(Ue))&&(Le[he]=T(I==x?Ue:Object(Ue))),Le=Le[he]}return Z}function MI(b){return ue.runInContext.convert(b)(void 0)}function zi(b,A){var I=$.aliasToReal[b]||b,w=$.remap[I]||I,x=n;return function(Z){var Le=a?g:y,he=a?g[w]:A,Ue=E(E({},x),Z);return Cs(Le,I,he,Ue)}}function kI(b,A){return Xi(b,function(I){return typeof I=="function"?Ps(I,A):I})}function FI(b,A){return Xi(b,function(I){var w=A.length;return rP(gr(Ps(I,w),A),w)})}function Xi(b,A){return function(){var I=arguments.length;if(!I)return b();for(var w=Array(I);I--;)w[I]=arguments[I];var x=i.rearg?0:I-1;return w[x]=A(w[x]),b.apply(void 0,w)}}function Zi(b,A,I){var w,x=$.aliasToReal[b]||b,Z=A,Le=DI[x];return Le?Z=Le(A):i.immutable&&($.mutate.array[x]?Z=Os(A,_f):$.mutate.object[x]?Z=Os(A,nP(A)):$.mutate.set[x]&&(Z=Os(A,GI))),R(Hi,function(he){return R($.aryMethod[he],function(Ue){if(x==Ue){var eu=$.methodSpread[x],QI=eu&&eu.afterRearg;return w=QI?Yi(x,Ji(x,Z,he),he):Ji(x,Yi(x,Z,he),he),w=BI(x,w),w=NI(x,w,he),!1}}),!w}),w||(w=Z),w==A&&(w=c?_(w,1):function(){return A.apply(this,arguments)}),w.convert=zi(x,A),w.placeholder=A.placeholder=I,w}if(!o)return Zi(t,r,s);var ue=r,yr=[];return R(Hi,function(b){R($.aryMethod[b],function(A){var I=ue[$.remap[A]||A];I&&yr.push([A,Zi(A,I,ue)])})}),R(Dt(ue),function(b){var A=ue[b];if(typeof A=="function"){for(var I=yr.length;I--;)if(yr[I][0]==b)return;A.convert=zi(b,A),yr.push([b,A])}}),R(yr,function(b){ue[b[0]]=b[1]}),ue.convert=MI,ue.placeholder=ue,R(Dt(ue),function(b){R($.realToAlias[b]||[],function(A){ue[A]=ue[b]})}),ue}xf.exports=Cs});var qs=u((GQ,Pf)=>{"use strict";var oP=it(),sP=re(),iP=oP(sP,"WeakMap");Pf.exports=iP});var Ls=u((MQ,Cf)=>{"use strict";var Of=qs(),uP=Of&&new Of;Cf.exports=uP});var Us=u((kQ,Lf)=>{"use strict";var pP=Qr(),qf=Ls(),cP=qf?function(e,t){return qf.set(e,t),e}:pP;Lf.exports=cP});var mn=u((FQ,Uf)=>{"use strict";var lP=zr(),dP=Se();function fP(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=lP(e.prototype),n=e.apply(r,t);return dP(n)?n:r}}Uf.exports=fP});var Bf=u((QQ,Df)=>{"use strict";var gP=mn(),mP=re(),yP=1;function AP(e,t,r){var n=t&yP,a=gP(e);function o(){var i=this&&this!==mP&&this instanceof o?a:e;return i.apply(n?r:this,arguments)}return o}Df.exports=AP});var Ds=u((jQ,Nf)=>{"use strict";var hP=Math.max;function IP(e,t,r,n){for(var a=-1,o=e.length,i=r.length,s=-1,c=t.length,f=hP(o-i,0),m=Array(c+f),g=!n;++s<c;)m[s]=t[s];for(;++a<i;)(g||a<o)&&(m[r[a]]=e[a]);for(;f--;)m[s++]=e[a++];return m}Nf.exports=IP});var Bs=u((WQ,Gf)=>{"use strict";var bP=Math.max;function SP(e,t,r,n){for(var a=-1,o=e.length,i=-1,s=r.length,c=-1,f=t.length,m=bP(o-s,0),g=Array(m+f),y=!n;++a<m;)g[a]=e[a];for(var h=a;++c<f;)g[h+c]=t[c];for(;++i<s;)(y||a<o)&&(g[h+r[i]]=e[a++]);return g}Gf.exports=SP});var kf=u(($Q,Mf)=>{"use strict";function wP(e,t){for(var r=e.length,n=0;r--;)e[r]===t&&++n;return n}Mf.exports=wP});var da=u((VQ,Ff)=>{"use strict";function vP(){}Ff.exports=vP});var ga=u((KQ,Qf)=>{"use strict";var EP=zr(),RP=da(),_P=4294967295;function fa(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=_P,this.__views__=[]}fa.prototype=EP(RP.prototype);fa.prototype.constructor=fa;Qf.exports=fa});var Ns=u((HQ,Wf)=>{"use strict";var jf=Ls(),xP=yo(),TP=jf?function(e){return jf.get(e)}:xP;Wf.exports=TP});var Vf=u((YQ,$f)=>{"use strict";var PP={};$f.exports=PP});var Yf=u((JQ,Hf)=>{"use strict";var Kf=Vf(),OP=Object.prototype,CP=OP.hasOwnProperty;function qP(e){for(var t=e.name+"",r=Kf[t],n=CP.call(Kf,t)?r.length:0;n--;){var a=r[n],o=a.func;if(o==null||o==e)return a.name}return t}Hf.exports=qP});var Gs=u((zQ,Jf)=>{"use strict";var LP=zr(),UP=da();function ma(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}ma.prototype=LP(UP.prototype);ma.prototype.constructor=ma;Jf.exports=ma});var Xf=u((XQ,zf)=>{"use strict";var DP=ga(),BP=Gs(),NP=Yt();function GP(e){if(e instanceof DP)return e.clone();var t=new BP(e.__wrapped__,e.__chain__);return t.__actions__=NP(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}zf.exports=GP});var tg=u((ZQ,eg)=>{"use strict";var MP=ga(),Zf=Gs(),kP=da(),FP=J(),QP=ce(),jP=Xf(),WP=Object.prototype,$P=WP.hasOwnProperty;function ya(e){if(QP(e)&&!FP(e)&&!(e instanceof MP)){if(e instanceof Zf)return e;if($P.call(e,"__wrapped__"))return jP(e)}return new Zf(e)}ya.prototype=kP.prototype;ya.prototype.constructor=ya;eg.exports=ya});var ng=u((ej,rg)=>{"use strict";var VP=ga(),KP=Ns(),HP=Yf(),YP=tg();function JP(e){var t=HP(e),r=YP[t];if(typeof r!="function"||!(t in VP.prototype))return!1;if(e===r)return!0;var n=KP(r);return!!n&&e===n[0]}rg.exports=JP});var Ms=u((tj,ag)=>{"use strict";var zP=Us(),XP=po(),ZP=XP(zP);ag.exports=ZP});var sg=u((rj,og)=>{"use strict";var eO=/\{\n\/\* \[wrapped with (.+)\] \*/,tO=/,? & /;function rO(e){var t=e.match(eO);return t?t[1].split(tO):[]}og.exports=rO});var ug=u((nj,ig)=>{"use strict";var nO=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function aO(e,t){var r=t.length;if(!r)return e;var n=r-1;return t[n]=(r>1?"& ":"")+t[n],t=t.join(r>2?", ":" "),e.replace(nO,`{
|
|
2
2
|
/* [wrapped with `+t+`] */
|
|
3
|
-
`)}ag.exports=nO});var ya=u((nj,sg)=>{"use strict";function aO(e,t){for(var r=-1,n=e==null?0:e.length;++r<n&&t(e[r],r,e)!==!1;);return e}sg.exports=aO});var ug=u((aj,ig)=>{"use strict";var oO=ya(),sO=fo(),iO=1,uO=2,pO=8,cO=16,lO=32,dO=64,fO=128,gO=256,mO=512,yO=[["ary",fO],["bind",iO],["bindKey",uO],["curry",pO],["curryRight",cO],["flip",mO],["partial",lO],["partialRight",dO],["rearg",gO]];function AO(e,t){return oO(yO,function(r){var n="_."+r[0];t&r[1]&&!sO(e,n)&&e.push(n)}),e.sort()}ig.exports=AO});var ks=u((oj,pg)=>{"use strict";var hO=ng(),IO=og(),bO=Gn(),SO=ug();function wO(e,t,r){var n=t+"";return bO(e,IO(n,SO(hO(n),r)))}pg.exports=wO});var Fs=u((sj,dg)=>{"use strict";var vO=eg(),EO=Ms(),RO=ks(),_O=1,xO=2,TO=4,PO=8,cg=32,lg=64;function OO(e,t,r,n,a,o,i,s,c,f){var m=t&PO,g=m?i:void 0,y=m?void 0:i,h=m?o:void 0,E=m?void 0:o;t|=m?cg:lg,t&=~(m?lg:cg),t&TO||(t&=~(_O|xO));var T=[e,t,a,h,g,E,y,s,c,f],_=r.apply(void 0,T);return vO(e)&&EO(_,T),_.placeholder=n,RO(_,e,t)}dg.exports=OO});var Qs=u((ij,fg)=>{"use strict";function CO(e){var t=e;return t.placeholder}fg.exports=CO});var mg=u((uj,gg)=>{"use strict";var qO=Ht(),LO=rn(),UO=Math.min;function DO(e,t){for(var r=e.length,n=UO(t.length,r),a=qO(e);n--;){var o=t[n];e[n]=LO(o,r)?a[o]:void 0}return e}gg.exports=DO});var Aa=u((pj,Ag)=>{"use strict";var yg="__lodash_placeholder__";function BO(e,t){for(var r=-1,n=e.length,a=0,o=[];++r<n;){var i=e[r];(i===t||i===yg)&&(e[r]=yg,o[a++]=r)}return o}Ag.exports=BO});var Ws=u((cj,bg)=>{"use strict";var NO=Ds(),GO=Bs(),MO=Nf(),hg=mn(),kO=Fs(),FO=Qs(),QO=mg(),jO=Aa(),WO=re(),$O=1,VO=2,KO=8,YO=16,HO=128,JO=512;function Ig(e,t,r,n,a,o,i,s,c,f){var m=t&HO,g=t&$O,y=t&VO,h=t&(KO|YO),E=t&JO,T=y?void 0:hg(e);function _(){for(var R=arguments.length,U=Array(R),et=R;et--;)U[et]=arguments[et];if(h)var ye=FO(_),tt=MO(U,ye);if(n&&(U=NO(U,n,a,h)),o&&(U=GO(U,o,i,h)),R-=tt,h&&R<f){var Dt=jO(U,ye);return kO(e,t,Ig,_.placeholder,r,U,Dt,s,c,f-R)}var gr=g?r:this,mr=y?gr[e]:e;return R=U.length,s?U=QO(U,s):E&&R>1&&U.reverse(),m&&c<R&&(U.length=c),this&&this!==WO&&this instanceof _&&(mr=T||hg(mr)),mr.apply(gr,U)}return _}bg.exports=Ig});var wg=u((lj,Sg)=>{"use strict";var zO=Nn(),XO=mn(),ZO=Ws(),eC=Fs(),tC=Qs(),rC=Aa(),nC=re();function aC(e,t,r){var n=XO(e);function a(){for(var o=arguments.length,i=Array(o),s=o,c=tC(a);s--;)i[s]=arguments[s];var f=o<3&&i[0]!==c&&i[o-1]!==c?[]:rC(i,c);if(o-=f.length,o<r)return eC(e,t,ZO,a.placeholder,void 0,i,f,void 0,void 0,r-o);var m=this&&this!==nC&&this instanceof a?n:e;return zO(m,this,i)}return a}Sg.exports=aC});var Eg=u((dj,vg)=>{"use strict";var oC=Nn(),sC=mn(),iC=re(),uC=1;function pC(e,t,r,n){var a=t&uC,o=sC(e);function i(){for(var s=-1,c=arguments.length,f=-1,m=n.length,g=Array(m+c),y=this&&this!==iC&&this instanceof i?o:e;++f<m;)g[f]=n[f];for(;c--;)g[f++]=arguments[++s];return oC(y,a?r:this,g)}return i}vg.exports=pC});var Og=u((fj,Pg)=>{"use strict";var cC=Ds(),lC=Bs(),Rg=Aa(),_g="__lodash_placeholder__",$s=1,dC=2,fC=4,xg=8,yn=128,Tg=256,gC=Math.min;function mC(e,t){var r=e[1],n=t[1],a=r|n,o=a<($s|dC|yn),i=n==yn&&r==xg||n==yn&&r==Tg&&e[7].length<=t[8]||n==(yn|Tg)&&t[7].length<=t[8]&&r==xg;if(!(o||i))return e;n&$s&&(e[2]=t[2],a|=r&$s?0:fC);var s=t[3];if(s){var c=e[3];e[3]=c?cC(c,s,t[4]):s,e[4]=c?Rg(e[3],_g):t[4]}return s=t[5],s&&(c=e[5],e[5]=c?lC(c,s,t[6]):s,e[6]=c?Rg(e[5],_g):t[6]),s=t[7],s&&(e[7]=s),n&yn&&(e[8]=e[8]==null?t[8]:gC(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=a,e}Pg.exports=mC});var qg=u((gj,Cg)=>{"use strict";var yC=/\s/;function AC(e){for(var t=e.length;t--&&yC.test(e.charAt(t)););return t}Cg.exports=AC});var Ug=u((mj,Lg)=>{"use strict";var hC=qg(),IC=/^\s+/;function bC(e){return e&&e.slice(0,hC(e)+1).replace(IC,"")}Lg.exports=bC});var ir=u((yj,Dg)=>{"use strict";var SC=st(),wC=ce(),vC="[object Symbol]";function EC(e){return typeof e=="symbol"||wC(e)&&SC(e)==vC}Dg.exports=EC});var Mg=u((Aj,Gg)=>{"use strict";var RC=Ug(),Bg=be(),_C=ir(),Ng=0/0,xC=/^[-+]0x[0-9a-f]+$/i,TC=/^0b[01]+$/i,PC=/^0o[0-7]+$/i,OC=parseInt;function CC(e){if(typeof e=="number")return e;if(_C(e))return Ng;if(Bg(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=Bg(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=RC(e);var r=TC.test(e);return r||PC.test(e)?OC(e.slice(2),r?2:8):xC.test(e)?Ng:+e}Gg.exports=CC});var Qg=u((hj,Fg)=>{"use strict";var qC=Mg(),kg=1/0,LC=17976931348623157e292;function UC(e){if(!e)return e===0?e:0;if(e=qC(e),e===kg||e===-kg){var t=e<0?-1:1;return t*LC}return e===e?e:0}Fg.exports=UC});var Vs=u((Ij,jg)=>{"use strict";var DC=Qg();function BC(e){var t=DC(e),r=t%1;return t===t?r?t-r:t:0}jg.exports=BC});var ha=u((bj,Yg)=>{"use strict";var NC=Us(),GC=Lf(),MC=wg(),kC=Ws(),FC=Eg(),QC=Ns(),jC=Og(),WC=Ms(),$C=ks(),Wg=Vs(),VC="Expected a function",$g=1,KC=2,Ks=8,Ys=16,Hs=32,Vg=64,Kg=Math.max;function YC(e,t,r,n,a,o,i,s){var c=t&KC;if(!c&&typeof e!="function")throw new TypeError(VC);var f=n?n.length:0;if(f||(t&=~(Hs|Vg),n=a=void 0),i=i===void 0?i:Kg(Wg(i),0),s=s===void 0?s:Wg(s),f-=a?a.length:0,t&Vg){var m=n,g=a;n=a=void 0}var y=c?void 0:QC(e),h=[e,t,r,n,a,m,g,o,i,s];if(y&&jC(h,y),e=h[0],t=h[1],r=h[2],n=h[3],a=h[4],s=h[9]=h[9]===void 0?c?0:e.length:Kg(h[9]-f,0),!s&&t&(Ks|Ys)&&(t&=~(Ks|Ys)),!t||t==$g)var E=GC(e,t,r);else t==Ks||t==Ys?E=MC(e,t,s):(t==Hs||t==($g|Hs))&&!a.length?E=FC(e,t,r,n):E=kC.apply(void 0,h);var T=y?NC:WC;return $C(T(E,h),e,t)}Yg.exports=YC});var Jg=u((Sj,Hg)=>{"use strict";var HC=ha(),JC=128;function zC(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,HC(e,JC,void 0,void 0,void 0,void 0,t)}Hg.exports=zC});var Xg=u((wj,zg)=>{"use strict";var XC=Eo(),ZC=XC(Object.keys,Object);zg.exports=ZC});var Js=u((vj,Zg)=>{"use strict";var eq=Vn(),tq=Xg(),rq=Object.prototype,nq=rq.hasOwnProperty;function aq(e){if(!eq(e))return tq(e);var t=[];for(var r in Object(e))nq.call(e,r)&&r!="constructor"&&t.push(r);return t}Zg.exports=aq});var ur=u((Ej,em)=>{"use strict";var oq=Oo(),sq=Js(),iq=Vt();function uq(e){return iq(e)?oq(e):sq(e)}em.exports=uq});var zs=u((Rj,tm)=>{"use strict";var pq=Xt(),cq=ur();function lq(e,t){return e&&pq(t,cq(t),e)}tm.exports=lq});var nm=u((_j,rm)=>{"use strict";var dq=Xt(),fq=Zt();function gq(e,t){return e&&dq(t,fq(t),e)}rm.exports=gq});var om=u((xj,am)=>{"use strict";function mq(e,t){for(var r=-1,n=e==null?0:e.length,a=0,o=[];++r<n;){var i=e[r];t(i,r,e)&&(o[a++]=i)}return o}am.exports=mq});var Xs=u((Tj,sm)=>{"use strict";function yq(){return[]}sm.exports=yq});var Ia=u((Pj,um)=>{"use strict";var Aq=om(),hq=Xs(),Iq=Object.prototype,bq=Iq.propertyIsEnumerable,im=Object.getOwnPropertySymbols,Sq=im?function(e){return e==null?[]:(e=Object(e),Aq(im(e),function(t){return bq.call(e,t)}))}:hq;um.exports=Sq});var cm=u((Oj,pm)=>{"use strict";var wq=Xt(),vq=Ia();function Eq(e,t){return wq(e,vq(e),t)}pm.exports=Eq});var Zs=u((Cj,lm)=>{"use strict";var Rq=Bn(),_q=$n(),xq=Ia(),Tq=Xs(),Pq=Object.getOwnPropertySymbols,Oq=Pq?function(e){for(var t=[];e;)Rq(t,xq(e)),e=_q(e);return t}:Tq;lm.exports=Oq});var fm=u((qj,dm)=>{"use strict";var Cq=Xt(),qq=Zs();function Lq(e,t){return Cq(e,qq(e),t)}dm.exports=Lq});var ei=u((Lj,gm)=>{"use strict";var Uq=Bn(),Dq=J();function Bq(e,t,r){var n=t(e);return Dq(e)?n:Uq(n,r(e))}gm.exports=Bq});var ti=u((Uj,mm)=>{"use strict";var Nq=ei(),Gq=Ia(),Mq=ur();function kq(e){return Nq(e,Mq,Gq)}mm.exports=kq});var Am=u((Dj,ym)=>{"use strict";var Fq=ei(),Qq=Zs(),jq=Zt();function Wq(e){return Fq(e,jq,Qq)}ym.exports=Wq});var Im=u((Bj,hm)=>{"use strict";var $q=it(),Vq=re(),Kq=$q(Vq,"DataView");hm.exports=Kq});var Sm=u((Nj,bm)=>{"use strict";var Yq=it(),Hq=re(),Jq=Yq(Hq,"Promise");bm.exports=Jq});var cr=u((Gj,Tm)=>{"use strict";var ri=Im(),ni=Mn(),ai=Sm(),oi=mo(),si=qs(),xm=st(),pr=io(),wm="[object Map]",zq="[object Object]",vm="[object Promise]",Em="[object Set]",Rm="[object WeakMap]",_m="[object DataView]",Xq=pr(ri),Zq=pr(ni),eL=pr(ai),tL=pr(oi),rL=pr(si),Pt=xm;(ri&&Pt(new ri(new ArrayBuffer(1)))!=_m||ni&&Pt(new ni)!=wm||ai&&Pt(ai.resolve())!=vm||oi&&Pt(new oi)!=Em||si&&Pt(new si)!=Rm)&&(Pt=function(e){var t=xm(e),r=t==zq?e.constructor:void 0,n=r?pr(r):"";if(n)switch(n){case Xq:return _m;case Zq:return wm;case eL:return vm;case tL:return Em;case rL:return Rm}return t});Tm.exports=Pt});var Om=u((Mj,Pm)=>{"use strict";var nL=Object.prototype,aL=nL.hasOwnProperty;function oL(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&aL.call(e,"index")&&(r.index=e.index,r.input=e.input),r}Pm.exports=oL});var qm=u((kj,Cm)=>{"use strict";var sL=Wn();function iL(e,t){var r=t?sL(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}Cm.exports=iL});var Um=u((Fj,Lm)=>{"use strict";var uL=/\w*$/;function pL(e){var t=new e.constructor(e.source,uL.exec(e));return t.lastIndex=e.lastIndex,t}Lm.exports=pL});var Mm=u((Qj,Gm)=>{"use strict";var Dm=bt(),Bm=Dm?Dm.prototype:void 0,Nm=Bm?Bm.valueOf:void 0;function cL(e){return Nm?Object(Nm.call(e)):{}}Gm.exports=cL});var Fm=u((jj,km)=>{"use strict";var lL=Wn(),dL=qm(),fL=Um(),gL=Mm(),mL=vo(),yL="[object Boolean]",AL="[object Date]",hL="[object Map]",IL="[object Number]",bL="[object RegExp]",SL="[object Set]",wL="[object String]",vL="[object Symbol]",EL="[object ArrayBuffer]",RL="[object DataView]",_L="[object Float32Array]",xL="[object Float64Array]",TL="[object Int8Array]",PL="[object Int16Array]",OL="[object Int32Array]",CL="[object Uint8Array]",qL="[object Uint8ClampedArray]",LL="[object Uint16Array]",UL="[object Uint32Array]";function DL(e,t,r){var n=e.constructor;switch(t){case EL:return lL(e);case yL:case AL:return new n(+e);case RL:return dL(e,r);case _L:case xL:case TL:case PL:case OL:case CL:case qL:case LL:case UL:return mL(e,r);case hL:return new n;case IL:case wL:return new n(e);case bL:return fL(e);case SL:return new n;case vL:return gL(e)}}km.exports=DL});var jm=u((Wj,Qm)=>{"use strict";var BL=cr(),NL=ce(),GL="[object Map]";function ML(e){return NL(e)&&BL(e)==GL}Qm.exports=ML});var Km=u(($j,Vm)=>{"use strict";var kL=jm(),FL=Kn(),Wm=Yn(),$m=Wm&&Wm.isMap,QL=$m?FL($m):kL;Vm.exports=QL});var Hm=u((Vj,Ym)=>{"use strict";var jL=cr(),WL=ce(),$L="[object Set]";function VL(e){return WL(e)&&jL(e)==$L}Ym.exports=VL});var Zm=u((Kj,Xm)=>{"use strict";var KL=Hm(),YL=Kn(),Jm=Yn(),zm=Jm&&Jm.isSet,HL=zm?YL(zm):KL;Xm.exports=HL});var ii=u((Yj,ny)=>{"use strict";var JL=Yr(),zL=ya(),XL=Po(),ZL=zs(),eU=nm(),tU=So(),rU=Ht(),nU=cm(),aU=fm(),oU=ti(),sU=Am(),iU=cr(),uU=Om(),pU=Fm(),cU=Ro(),lU=J(),dU=Zr(),fU=Km(),gU=be(),mU=Zm(),yU=ur(),AU=Zt(),hU=1,IU=2,bU=4,ey="[object Arguments]",SU="[object Array]",wU="[object Boolean]",vU="[object Date]",EU="[object Error]",ty="[object Function]",RU="[object GeneratorFunction]",_U="[object Map]",xU="[object Number]",ry="[object Object]",TU="[object RegExp]",PU="[object Set]",OU="[object String]",CU="[object Symbol]",qU="[object WeakMap]",LU="[object ArrayBuffer]",UU="[object DataView]",DU="[object Float32Array]",BU="[object Float64Array]",NU="[object Int8Array]",GU="[object Int16Array]",MU="[object Int32Array]",kU="[object Uint8Array]",FU="[object Uint8ClampedArray]",QU="[object Uint16Array]",jU="[object Uint32Array]",C={};C[ey]=C[SU]=C[LU]=C[UU]=C[wU]=C[vU]=C[DU]=C[BU]=C[NU]=C[GU]=C[MU]=C[_U]=C[xU]=C[ry]=C[TU]=C[PU]=C[OU]=C[CU]=C[kU]=C[FU]=C[QU]=C[jU]=!0;C[EU]=C[ty]=C[qU]=!1;function ba(e,t,r,n,a,o){var i,s=t&hU,c=t&IU,f=t&bU;if(r&&(i=a?r(e,n,a,o):r(e)),i!==void 0)return i;if(!gU(e))return e;var m=lU(e);if(m){if(i=uU(e),!s)return rU(e,i)}else{var g=iU(e),y=g==ty||g==RU;if(dU(e))return tU(e,s);if(g==ry||g==ey||y&&!a){if(i=c||y?{}:cU(e),!s)return c?aU(e,eU(i,e)):nU(e,ZL(i,e))}else{if(!C[g])return a?e:{};i=pU(e,g,s)}}o||(o=new JL);var h=o.get(e);if(h)return h;o.set(e,i),mU(e)?e.forEach(function(_){i.add(ba(_,t,r,_,e,o))}):fU(e)&&e.forEach(function(_,R){i.set(R,ba(_,t,r,R,e,o))});var E=f?c?sU:oU:c?AU:yU,T=m?void 0:E(e);return zL(T||e,function(_,R){T&&(R=_,_=e[R]),XL(i,R,ba(_,t,r,R,e,o))}),i}ny.exports=ba});var oy=u((Hj,ay)=>{"use strict";var WU=ii(),$U=4;function VU(e){return WU(e,$U)}ay.exports=VU});var iy=u((Jj,sy)=>{"use strict";var KU=ha(),YU=8;function ui(e,t,r){t=r?void 0:t;var n=KU(e,YU,void 0,void 0,void 0,void 0,void 0,t);return n.placeholder=ui.placeholder,n}ui.placeholder={};sy.exports=ui});var py=u((zj,uy)=>{"use strict";var HU=st(),JU=ce(),zU=_o(),XU="[object DOMException]",ZU="[object Error]";function eD(e){if(!JU(e))return!1;var t=HU(e);return t==ZU||t==XU||typeof e.message=="string"&&typeof e.name=="string"&&!zU(e)}uy.exports=eD});var ly=u((Xj,cy)=>{"use strict";var tD=cr(),rD=ce(),nD="[object WeakMap]";function aD(e){return rD(e)&&tD(e)==nD}cy.exports=aD});var fy=u((Zj,dy)=>{"use strict";function oD(e,t){for(var r=-1,n=e==null?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}dy.exports=oD});var pi=u((eW,gy)=>{"use strict";var sD=lo(),iD=fy(),uD=go(),pD=1,cD=2;function lD(e,t,r,n,a,o){var i=r&pD,s=e.length,c=t.length;if(s!=c&&!(i&&c>s))return!1;var f=o.get(e),m=o.get(t);if(f&&m)return f==t&&m==e;var g=-1,y=!0,h=r&cD?new sD:void 0;for(o.set(e,t),o.set(t,e);++g<s;){var E=e[g],T=t[g];if(n)var _=i?n(T,E,g,t,e,o):n(E,T,g,e,t,o);if(_!==void 0){if(_)continue;y=!1;break}if(h){if(!iD(t,function(R,U){if(!uD(h,U)&&(E===R||a(E,R,r,n,o)))return h.push(U)})){y=!1;break}}else if(!(E===T||a(E,T,r,n,o))){y=!1;break}}return o.delete(e),o.delete(t),y}gy.exports=lD});var yy=u((tW,my)=>{"use strict";function dD(e){var t=-1,r=Array(e.size);return e.forEach(function(n,a){r[++t]=[a,n]}),r}my.exports=dD});var Sy=u((rW,by)=>{"use strict";var Ay=bt(),hy=wo(),fD=jt(),gD=pi(),mD=yy(),yD=Qn(),AD=1,hD=2,ID="[object Boolean]",bD="[object Date]",SD="[object Error]",wD="[object Map]",vD="[object Number]",ED="[object RegExp]",RD="[object Set]",_D="[object String]",xD="[object Symbol]",TD="[object ArrayBuffer]",PD="[object DataView]",Iy=Ay?Ay.prototype:void 0,ci=Iy?Iy.valueOf:void 0;function OD(e,t,r,n,a,o,i){switch(r){case PD:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case TD:return!(e.byteLength!=t.byteLength||!o(new hy(e),new hy(t)));case ID:case bD:case vD:return fD(+e,+t);case SD:return e.name==t.name&&e.message==t.message;case ED:case _D:return e==t+"";case wD:var s=mD;case RD:var c=n&AD;if(s||(s=yD),e.size!=t.size&&!c)return!1;var f=i.get(e);if(f)return f==t;n|=hD,i.set(e,t);var m=gD(s(e),s(t),n,a,o,i);return i.delete(e),m;case xD:if(ci)return ci.call(e)==ci.call(t)}return!1}by.exports=OD});var Ey=u((nW,vy)=>{"use strict";var wy=ti(),CD=1,qD=Object.prototype,LD=qD.hasOwnProperty;function UD(e,t,r,n,a,o){var i=r&CD,s=wy(e),c=s.length,f=wy(t),m=f.length;if(c!=m&&!i)return!1;for(var g=c;g--;){var y=s[g];if(!(i?y in t:LD.call(t,y)))return!1}var h=o.get(e),E=o.get(t);if(h&&E)return h==t&&E==e;var T=!0;o.set(e,t),o.set(t,e);for(var _=i;++g<c;){y=s[g];var R=e[y],U=t[y];if(n)var et=i?n(U,R,y,t,e,o):n(R,U,y,e,t,o);if(!(et===void 0?R===U||a(R,U,r,n,o):et)){T=!1;break}_||(_=y=="constructor")}if(T&&!_){var ye=e.constructor,tt=t.constructor;ye!=tt&&"constructor"in e&&"constructor"in t&&!(typeof ye=="function"&&ye instanceof ye&&typeof tt=="function"&&tt instanceof tt)&&(T=!1)}return o.delete(e),o.delete(t),T}vy.exports=UD});var qy=u((aW,Cy)=>{"use strict";var li=Yr(),DD=pi(),BD=Sy(),ND=Ey(),Ry=cr(),_y=J(),xy=Zr(),GD=Hn(),MD=1,Ty="[object Arguments]",Py="[object Array]",Sa="[object Object]",kD=Object.prototype,Oy=kD.hasOwnProperty;function FD(e,t,r,n,a,o){var i=_y(e),s=_y(t),c=i?Py:Ry(e),f=s?Py:Ry(t);c=c==Ty?Sa:c,f=f==Ty?Sa:f;var m=c==Sa,g=f==Sa,y=c==f;if(y&&xy(e)){if(!xy(t))return!1;i=!0,m=!1}if(y&&!m)return o||(o=new li),i||GD(e)?DD(e,t,r,n,a,o):BD(e,t,c,r,n,a,o);if(!(r&MD)){var h=m&&Oy.call(e,"__wrapped__"),E=g&&Oy.call(t,"__wrapped__");if(h||E){var T=h?e.value():e,_=E?t.value():t;return o||(o=new li),a(T,_,r,n,o)}}return y?(o||(o=new li),ND(e,t,r,n,a,o)):!1}Cy.exports=FD});var di=u((oW,Dy)=>{"use strict";var QD=qy(),Ly=ce();function Uy(e,t,r,n,a){return e===t?!0:e==null||t==null||!Ly(e)&&!Ly(t)?e!==e&&t!==t:QD(e,t,r,n,Uy,a)}Dy.exports=Uy});var Ny=u((sW,By)=>{"use strict";var jD=Yr(),WD=di(),$D=1,VD=2;function KD(e,t,r,n){var a=r.length,o=a,i=!n;if(e==null)return!o;for(e=Object(e);a--;){var s=r[a];if(i&&s[2]?s[1]!==e[s[0]]:!(s[0]in e))return!1}for(;++a<o;){s=r[a];var c=s[0],f=e[c],m=s[1];if(i&&s[2]){if(f===void 0&&!(c in e))return!1}else{var g=new jD;if(n)var y=n(f,m,c,e,t,g);if(!(y===void 0?WD(m,f,$D|VD,n,g):y))return!1}}return!0}By.exports=KD});var fi=u((iW,Gy)=>{"use strict";var YD=be();function HD(e){return e===e&&!YD(e)}Gy.exports=HD});var ky=u((uW,My)=>{"use strict";var JD=fi(),zD=ur();function XD(e){for(var t=zD(e),r=t.length;r--;){var n=t[r],a=e[n];t[r]=[n,a,JD(a)]}return t}My.exports=XD});var gi=u((pW,Fy)=>{"use strict";function ZD(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}Fy.exports=ZD});var jy=u((cW,Qy)=>{"use strict";var eB=Ny(),tB=ky(),rB=gi();function nB(e){var t=tB(e);return t.length==1&&t[0][2]?rB(t[0][0],t[0][1]):function(r){return r===e||eB(r,e,t)}}Qy.exports=nB});var wa=u((lW,Wy)=>{"use strict";var aB=J(),oB=ir(),sB=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,iB=/^\w*$/;function uB(e,t){if(aB(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||oB(e)?!0:iB.test(e)||!sB.test(e)||t!=null&&e in Object(t)}Wy.exports=uB});var Ky=u((dW,Vy)=>{"use strict";var $y=kn(),pB="Expected a function";function mi(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(pB);var r=function(){var n=arguments,a=t?t.apply(this,n):n[0],o=r.cache;if(o.has(a))return o.get(a);var i=e.apply(this,n);return r.cache=o.set(a,i)||o,i};return r.cache=new(mi.Cache||$y),r}mi.Cache=$y;Vy.exports=mi});var Hy=u((fW,Yy)=>{"use strict";var cB=Ky(),lB=500;function dB(e){var t=cB(e,function(n){return r.size===lB&&r.clear(),n}),r=t.cache;return t}Yy.exports=dB});var yi=u((gW,Jy)=>{"use strict";var fB=Hy(),gB=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,mB=/\\(\\)?/g,yB=fB(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(gB,function(r,n,a,o){t.push(a?o.replace(mB,"$1"):n||r)}),t});Jy.exports=yB});var Ai=u((mW,zy)=>{"use strict";function AB(e,t){for(var r=-1,n=e==null?0:e.length,a=Array(n);++r<n;)a[r]=t(e[r],r,e);return a}zy.exports=AB});var nA=u((yW,rA)=>{"use strict";var Xy=bt(),hB=Ai(),IB=J(),bB=ir(),SB=1/0,Zy=Xy?Xy.prototype:void 0,eA=Zy?Zy.toString:void 0;function tA(e){if(typeof e=="string")return e;if(IB(e))return hB(e,tA)+"";if(bB(e))return eA?eA.call(e):"";var t=e+"";return t=="0"&&1/e==-SB?"-0":t}rA.exports=tA});var hi=u((AW,aA)=>{"use strict";var wB=nA();function vB(e){return e==null?"":wB(e)}aA.exports=vB});var Ii=u((hW,oA)=>{"use strict";var EB=J(),RB=wa(),_B=yi(),xB=hi();function TB(e,t){return EB(e)?e:RB(e,t)?[e]:_B(xB(e))}oA.exports=TB});var lr=u((IW,sA)=>{"use strict";var PB=ir(),OB=1/0;function CB(e){if(typeof e=="string"||PB(e))return e;var t=e+"";return t=="0"&&1/e==-OB?"-0":t}sA.exports=CB});var bi=u((bW,iA)=>{"use strict";var qB=Ii(),LB=lr();function UB(e,t){t=qB(t,e);for(var r=0,n=t.length;e!=null&&r<n;)e=e[LB(t[r++])];return r&&r==n?e:void 0}iA.exports=UB});var pA=u((SW,uA)=>{"use strict";var DB=bi();function BB(e,t,r){var n=e==null?void 0:DB(e,t);return n===void 0?r:n}uA.exports=BB});var lA=u((wW,cA)=>{"use strict";function NB(e,t){return e!=null&&t in Object(e)}cA.exports=NB});var fA=u((vW,dA)=>{"use strict";var GB=Ii(),MB=Fr(),kB=J(),FB=rn(),QB=jn(),jB=lr();function WB(e,t,r){t=GB(t,e);for(var n=-1,a=t.length,o=!1;++n<a;){var i=jB(t[n]);if(!(o=e!=null&&r(e,i)))break;e=e[i]}return o||++n!=a?o:(a=e==null?0:e.length,!!a&&QB(a)&&FB(i,a)&&(kB(e)||MB(e)))}dA.exports=WB});var mA=u((EW,gA)=>{"use strict";var $B=lA(),VB=fA();function KB(e,t){return e!=null&&VB(e,t,$B)}gA.exports=KB});var AA=u((RW,yA)=>{"use strict";var YB=di(),HB=pA(),JB=mA(),zB=wa(),XB=fi(),ZB=gi(),eN=lr(),tN=1,rN=2;function nN(e,t){return zB(e)&&XB(t)?ZB(eN(e),t):function(r){var n=HB(r,e);return n===void 0&&n===t?JB(r,e):YB(t,n,tN|rN)}}yA.exports=nN});var IA=u((_W,hA)=>{"use strict";function aN(e){return function(t){return t?.[e]}}hA.exports=aN});var SA=u((xW,bA)=>{"use strict";var oN=bi();function sN(e){return function(t){return oN(t,e)}}bA.exports=sN});var vA=u((TW,wA)=>{"use strict";var iN=IA(),uN=SA(),pN=wa(),cN=lr();function lN(e){return pN(e)?iN(cN(e)):uN(e)}wA.exports=lN});var Si=u((PW,EA)=>{"use strict";var dN=jy(),fN=AA(),gN=Qr(),mN=J(),yN=vA();function AN(e){return typeof e=="function"?e:e==null?gN:typeof e=="object"?mN(e)?fN(e[0],e[1]):dN(e):yN(e)}EA.exports=AN});var _A=u((OW,RA)=>{"use strict";var hN=ii(),IN=Si(),bN=1;function SN(e){return IN(typeof e=="function"?e:hN(e,bN))}RA.exports=SN});var TA=u((CW,xA)=>{"use strict";var wN=ao();function vN(e){var t=e==null?0:e.length;return t?wN(e,1):[]}xA.exports=vN});var OA=u((qW,PA)=>{"use strict";var EN=TA(),RN=oo(),_N=Gn();function xN(e){return _N(RN(e,void 0,EN),e+"")}PA.exports=xN});var qA=u((LW,CA)=>{"use strict";var TN=ha(),PN=OA(),ON=256,CN=PN(function(e,t){return TN(e,ON,void 0,void 0,void 0,t)});CA.exports=CN});var UA=u((UW,LA)=>{"use strict";var qN=Ai(),LN=Ht(),UN=J(),DN=ir(),BN=yi(),NN=lr(),GN=hi();function MN(e){return UN(e)?qN(e,NN):DN(e)?[e]:LN(BN(GN(e)))}LA.exports=MN});var BA=u((DW,DA)=>{"use strict";DA.exports={ary:Jg(),assign:zs(),clone:oy(),curry:iy(),forEach:ya(),isArray:J(),isError:py(),isFunction:jr(),isWeakMap:ly(),iteratee:_A(),keys:Js(),rearg:qA(),toInteger:Vs(),toPath:UA()}});var GA=u((BW,NA)=>{"use strict";var kN=Rf(),FN=BA();function QN(e,t,r){return kN(FN,e,t,r)}NA.exports=QN});var wi=u((NW,kA)=>{"use strict";var jN=GA(),MA=jN("merge",Co());MA.placeholder=Ts();kA.exports=MA});var eI=u((dV,Zh)=>{"use strict";function AG(e,t,r,n){for(var a=-1,o=e==null?0:e.length;++a<o;){var i=e[a];t(n,i,r(i),e)}return n}Zh.exports=AG});var rI=u((fV,tI)=>{"use strict";var hG=bo(),IG=ur();function bG(e,t){return e&&hG(e,t,IG)}tI.exports=bG});var aI=u((gV,nI)=>{"use strict";var SG=Vt();function wG(e,t){return function(r,n){if(r==null)return r;if(!SG(r))return e(r,n);for(var a=r.length,o=t?a:-1,i=Object(r);(t?o--:++o<a)&&n(i[o],o,i)!==!1;);return r}}nI.exports=wG});var sI=u((mV,oI)=>{"use strict";var vG=rI(),EG=aI(),RG=EG(vG);oI.exports=RG});var uI=u((yV,iI)=>{"use strict";var _G=sI();function xG(e,t,r,n){return _G(e,function(a,o,i){t(n,a,r(a),i)}),n}iI.exports=xG});var cI=u((AV,pI)=>{"use strict";var TG=eI(),PG=uI(),OG=Si(),CG=J();function qG(e,t){return function(r,n){var a=CG(r)?TG:PG,o=t?t():{};return a(r,e,OG(n,2),o)}}pI.exports=qG});var dI=u((hV,lI)=>{"use strict";var LG=Hr(),UG=cI(),DG=Object.prototype,BG=DG.hasOwnProperty,NG=UG(function(e,t,r){BG.call(e,r)?e[r].push(t):LG(e,r,[t])});lI.exports=NG});var HG={};S(HG,{Method:()=>Na,ai:()=>Li,api:()=>$i,auditLogs:()=>ct,automations:()=>oa,backups:()=>we,branding:()=>ea,constants:()=>Dr,environmentVariables:()=>Qe,features:()=>Se,groups:()=>G,init:()=>If,licensing:()=>Ne,logger:()=>Ot,mappers:()=>Q,middleware:()=>Ti,plugins:()=>sa,publicApi:()=>pa,quotas:()=>ke,scimGroups:()=>dr,scimUsers:()=>se,sdk:()=>Ei,users:()=>Je,utils:()=>Ft});module.exports=$I(HG);var Na=(o=>(o.POST="POST",o.GET="GET",o.PATCH="PATCH",o.DELETE="DELETE",o.PUT="PUT",o))(Na||{});var Ei={};S(Ei,{ai:()=>Yo,auditLogs:()=>ct,automations:()=>oa,backups:()=>we,branding:()=>ea,environmentVariables:()=>Qe,features:()=>Se,groups:()=>G,init:()=>If,licensing:()=>Ne,logger:()=>Ot,plugins:()=>sa,publicApi:()=>pa,quotas:()=>ke,scimGroups:()=>dr,scimUsers:()=>se,users:()=>Je,utils:()=>Ft});var ea={};S(ea,{getBrandingConfig:()=>Nx});var Se={};S(Se,{checkBackups:()=>le,checkFeature:()=>Xn,checkFeatures:()=>Qo,checkSCIM:()=>Vo,isAICustomConfigsEnabled:()=>Ko,isAppBuildersEnabled:()=>vt,isAuditLogsEnabled:()=>Zn,isBackupsEnabled:()=>jo,isBrandingEnabled:()=>Wo,isBudibaseAIEnabled:()=>sn,isEnforceableSSO:()=>Ld,isExpandedPublicApiEnabled:()=>He,isSSOEnforced:()=>Lx,isSyncAutomationsEnabled:()=>Cx,isTriggerAutomationRunEnabled:()=>qx,isUserGroupsEnabled:()=>$o,isViewPermissionEnabled:()=>Ux,isViewReadonlyColumnsEnabled:()=>Dx});var z=require("@budibase/types"),Ye=require("@budibase/backend-core");var Ne={};S(Ne,{cache:()=>_e,client:()=>ot,features:()=>Un,getFreeLicense:()=>Mo,getLicense:()=>No,getLicenseFromKey:()=>Go,keys:()=>Fo,offline:()=>Jn,quotas:()=>Dn});var _e={};S(_e,{getCachedLicense:()=>Cd,invalidate:()=>qd,refresh:()=>St});var Ga=require("@budibase/backend-core"),Ar,VI=async()=>{Ar=await new Ga.redis.Client(Ga.redis.utils.Databases.LICENSES).init()},KI=async()=>{Ar&&await Ar.finish()};process.on("exit",async()=>{await KI()});var Ma=async()=>(Ar||await VI(),Ar);var ot={};S(ot,{activateLicenseKey:()=>Za,getLicense:()=>Mt,getLicenseFromKey:()=>Xa,triggerQuota:()=>Db});var ru=O(require("node-fetch"));var nu=require("@budibase/backend-core"),ka=class{constructor(t){this.apiCall=t=>async(r="",n={})=>{n.headers||(n.headers={}),n.headers["Content-Type"]||(n.headers={"Content-Type":"application/json",Accept:"application/json",...n.headers});let a=n.headers["Content-Type"]==="application/json";nu.logging.correlation.setHeader(n.headers);let o={method:t,body:a?JSON.stringify(n.body):n.body,headers:n.headers,credentials:"include"};return(0,ru.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}},Fa=ka;var Cn=require("@budibase/types"),P=require("@budibase/backend-core");var Ue={};S(Ue,{bustCache:()=>su,getCurrentUsageValues:()=>cu,getQuotaUsage:()=>yt,setAllUsage:()=>Va,setAppUsageValue:()=>$a,setUsage:()=>iu,setUsagePerApp:()=>uu,utils:()=>Ir});var ee=require("@budibase/types"),H=require("@budibase/backend-core");var Ir={};S(Ir,{generateBaseQuotaUsage:()=>vn,generateNewMonthlyQuotas:()=>hr,generateNewQuotaUsage:()=>ja,getBreakdownName:()=>Rn,getCurrentMonthString:()=>rt,setCurrentMonth:()=>En,setQuotaReset:()=>Qa});var V=require("@budibase/types"),wn=require("@budibase/backend-core"),au=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},Qa=e=>{e.quotaReset=au()},rt=()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},vn=()=>({usageQuota:{[V.StaticQuotaName.APPS]:0,[V.StaticQuotaName.ROWS]:0,[V.StaticQuotaName.PLUGINS]:0,[V.StaticQuotaName.USERS]:0,[V.StaticQuotaName.CREATORS]:0,[V.StaticQuotaName.USER_GROUPS]:0,[V.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[rt()]:hr()}}),ja=()=>{let e={_id:wn.db.StaticDatabases.GLOBAL.docs.usageQuota,quotaReset:au(),...vn(),apps:{}};return En(e),e},hr=()=>({[V.MonthlyQuotaName.QUERIES]:0,[V.MonthlyQuotaName.AUTOMATIONS]:0,[V.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,triggers:{}}),En=e=>{let t=rt();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=hr()),e.monthly.current=e.monthly[t]},Rn=(e,t)=>{if(!(!t||!e))switch(e){case V.MonthlyQuotaName.AUTOMATIONS:return V.BreakdownQuotaName.AUTOMATIONS;case V.MonthlyQuotaName.QUERIES:return wn.db.isTableId(t)?V.BreakdownQuotaName.ROW_QUERIES:wn.db.isDatasourceId(t)?V.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}};var HI=H.Duration.fromSeconds(60).toMs(),{Writethrough:JI}=H.cache.writethrough;function zI(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 Wa=()=>new JI(H.tenancy.getGlobalDB(),HI),su=async()=>{let e=H.tenancy.getGlobalDB();try{let t=await e.get(H.db.StaticDatabases.GLOBAL.docs.usageQuota);t?._rev&&await e.remove(H.db.StaticDatabases.GLOBAL.docs.usageQuota,t._rev)}catch(t){if(t.status!==404)throw t}},yt=async()=>{let e=Wa(),t;try{t=await e.get(H.db.StaticDatabases.GLOBAL.docs.usageQuota),En(t),Qa(t)}catch(r){if(r.status===404){t=ja();let n=await e.put(t);t._rev=n.rev}else throw r}return zI(t)},iu=async(e,t,r)=>Va({name:t,type:r,values:{total:e}}),uu=async(e,t,r)=>{let n=Wa(),a=await yt(),o=Object.values(e).reduce((s,c)=>s+c,0);for(let[s,c]of Object.entries(e))a=pu(a,t,r,{total:o,app:c},{appId:s});let i=await n.put(a);return a._rev=i.rev,a},XI=(e,t,r,n)=>{let a=Rn(t,r);if(!a||!n?.breakdown)return e;e.breakdown||(e.breakdown={}),e.breakdown[a]||(e.breakdown[a]={parent:t,values:{}});let o=e.breakdown[a];return o.values[r]=n.breakdown,e},$a=(e,t,r,n={},a)=>{let o;try{o=H.db.getProdAppID(n?.appId||H.context.getAppId())}catch{}if(!o||!a.app||!ee.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[o]||(e.apps={...e.apps,[o]:vn()});let i=e.apps[o];switch(r){case ee.QuotaUsageType.STATIC:i.usageQuota[t]=a.app;break;case ee.QuotaUsageType.MONTHLY:{let s=rt(),c=t,f=i.monthly[s];f||(i.monthly[s]=hr(),f=i.monthly[s]),f[c]=a.app,ee.BREAKDOWN_QUOTA_NAMES.includes(c)&&n?.id&&(f=XI(f,c,n.id,a));break}}return e},ou=(e,t,r,n)=>{if(!ee.APP_QUOTA_NAMES.includes(r))return{};let a;try{a=H.db.getProdAppID(H.context.getAppId())}catch{}if(!a||!e.apps||!e.apps[a])return{app:0};let o=e.apps[a];switch(t){case ee.QuotaUsageType.STATIC:if(o.usageQuota?.[r])return{app:o.usageQuota[r]};break;case ee.QuotaUsageType.MONTHLY:{let i=rt(),s=r;if(!o.monthly?.[i]?.[s])break;let c=o.monthly[i],f=c[s],m,g=Rn(s,n);return g&&n&&c.breakdown?.[g]&&(m=c.breakdown[g]?.values[n]),{app:f,breakdown:m||0}}}return{app:0}},ZI=(e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},eb=(e,t,r,n)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),n&&(r.monthly[t].triggers[e]=n)},pu=(e,t,r,n,a={})=>{if(r===ee.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=n.total,ZI(t,e,n.triggers);else if(r===ee.QuotaUsageType.MONTHLY){t=t;let o=rt();e.monthly[o][t]=n.total,eb(t,o,e,n.triggers)}else throw new Error(`Invalid usage type: ${r}`);return $a(e,t,r,a,n)},Va=async e=>{let t=Array.isArray(e)?e:[e],r=Wa(),n=await yt();for(let o of t)n=pu(n,o.name,o.type,o.values,o.opts);let a=await r.put(n,0);return n._rev=a.rev,n},cu=async(e,t,r)=>{let n=await yt(),a=0,o={};switch(e){case ee.QuotaUsageType.STATIC:if(n.usageQuota[t]){let i=t;a=n.usageQuota[i],o=ou(n,e,t,r)}break;case ee.QuotaUsageType.MONTHLY:{let i=rt(),s=t;n.monthly[i][s]&&(a=n.monthly[i][s],o=ou(n,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return ee.APP_QUOTA_NAMES.includes(t)&&!(o.app||o.breakdown)&&(o.app=o.app||0,o.breakdown=o.breakdown||0),{total:a,app:o.app,breakdown:o.breakdown}};var he={};S(he,{destroy:()=>nb,get:()=>Ka,save:()=>rb});var nt=require("@budibase/backend-core"),tb=()=>({_id:nt.StaticDatabases.GLOBAL.docs.licenseInfo}),rb=async e=>{let t=await Ka();t={...t,...e};let n=await nt.tenancy.getGlobalDB().put(t);return t._rev=n.rev,t},Ka=async()=>{let e=nt.tenancy.getGlobalDB();try{return await e.get(nt.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return tb();throw t}},nb=async()=>{let e=nt.tenancy.getGlobalDB(),t=await Ka();t&&t._rev&&await e.remove(nt.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)};var D={};S(D,{bulkSave:()=>yb,destroy:()=>Ab,fetch:()=>lb,generateUserGroupID:()=>pb,get:()=>fb,getBulk:()=>gb,getByName:()=>Ya,getGroupUsers:()=>xn,getGroupUsersParams:()=>mu,getUserGroupsParams:()=>gu,save:()=>mb});var q=require("@budibase/backend-core");var Re=require("@budibase/types"),Bt=require("@budibase/backend-core");async function lu(){let e=Bt.sql.designDoc.base("type");e.sql.tables={[Re.AUDIT_LOG_TYPE]:{fields:{appId:Re.SQLiteType.TEXT,event:Re.SQLiteType.TEXT,userId:Re.SQLiteType.TEXT,timestamp:Re.SQLiteType.TEXT,metadata:Re.SQLiteType.TEXT,name:Re.SQLiteType.TEXT,type:Re.SQLiteType.TEXT,fallback:Re.SQLiteType.TEXT}}};let t=Bt.context.getAuditLogsDB(),r;try{r=await t.get(Bt.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(n){if(n.status===404)r=e;else throw n}await t.put(r)}var _n=require("@budibase/backend-core"),{ViewName:ab,SEPARATOR:ob,DocumentType:sb,createView:ib}=_n.db,ub=sb.USER+ob;async function du(){let e=_n.tenancy.getGlobalDB(),t=`function(doc) {
|
|
4
|
-
if (doc._id.startsWith("${
|
|
3
|
+
`)}ig.exports=aO});var Aa=u((aj,pg)=>{"use strict";function oO(e,t){for(var r=-1,n=e==null?0:e.length;++r<n&&t(e[r],r,e)!==!1;);return e}pg.exports=oO});var lg=u((oj,cg)=>{"use strict";var sO=Aa(),iO=fo(),uO=1,pO=2,cO=8,lO=16,dO=32,fO=64,gO=128,mO=256,yO=512,AO=[["ary",gO],["bind",uO],["bindKey",pO],["curry",cO],["curryRight",lO],["flip",yO],["partial",dO],["partialRight",fO],["rearg",mO]];function hO(e,t){return sO(AO,function(r){var n="_."+r[0];t&r[1]&&!iO(e,n)&&e.push(n)}),e.sort()}cg.exports=hO});var ks=u((sj,dg)=>{"use strict";var IO=sg(),bO=ug(),SO=Mn(),wO=lg();function vO(e,t,r){var n=t+"";return SO(e,bO(n,wO(IO(n),r)))}dg.exports=vO});var Fs=u((ij,mg)=>{"use strict";var EO=ng(),RO=Ms(),_O=ks(),xO=1,TO=2,PO=4,OO=8,fg=32,gg=64;function CO(e,t,r,n,a,o,i,s,c,f){var m=t&OO,g=m?i:void 0,y=m?void 0:i,h=m?o:void 0,E=m?void 0:o;t|=m?fg:gg,t&=~(m?gg:fg),t&PO||(t&=~(xO|TO));var T=[e,t,a,h,g,E,y,s,c,f],_=r.apply(void 0,T);return EO(e)&&RO(_,T),_.placeholder=n,_O(_,e,t)}mg.exports=CO});var Qs=u((uj,yg)=>{"use strict";function qO(e){var t=e;return t.placeholder}yg.exports=qO});var hg=u((pj,Ag)=>{"use strict";var LO=Yt(),UO=rn(),DO=Math.min;function BO(e,t){for(var r=e.length,n=DO(t.length,r),a=LO(e);n--;){var o=t[n];e[n]=UO(o,r)?a[o]:void 0}return e}Ag.exports=BO});var ha=u((cj,bg)=>{"use strict";var Ig="__lodash_placeholder__";function NO(e,t){for(var r=-1,n=e.length,a=0,o=[];++r<n;){var i=e[r];(i===t||i===Ig)&&(e[r]=Ig,o[a++]=r)}return o}bg.exports=NO});var Ws=u((lj,vg)=>{"use strict";var GO=Ds(),MO=Bs(),kO=kf(),Sg=mn(),FO=Fs(),QO=Qs(),jO=hg(),WO=ha(),$O=re(),VO=1,KO=2,HO=8,YO=16,JO=128,zO=512;function wg(e,t,r,n,a,o,i,s,c,f){var m=t&JO,g=t&VO,y=t&KO,h=t&(HO|YO),E=t&zO,T=y?void 0:Sg(e);function _(){for(var R=arguments.length,U=Array(R),et=R;et--;)U[et]=arguments[et];if(h)var Ae=QO(_),tt=kO(U,Ae);if(n&&(U=GO(U,n,a,h)),o&&(U=MO(U,o,i,h)),R-=tt,h&&R<f){var Dt=WO(U,Ae);return FO(e,t,wg,_.placeholder,r,U,Dt,s,c,f-R)}var gr=g?r:this,mr=y?gr[e]:e;return R=U.length,s?U=jO(U,s):E&&R>1&&U.reverse(),m&&c<R&&(U.length=c),this&&this!==$O&&this instanceof _&&(mr=T||Sg(mr)),mr.apply(gr,U)}return _}vg.exports=wg});var Rg=u((dj,Eg)=>{"use strict";var XO=Gn(),ZO=mn(),eC=Ws(),tC=Fs(),rC=Qs(),nC=ha(),aC=re();function oC(e,t,r){var n=ZO(e);function a(){for(var o=arguments.length,i=Array(o),s=o,c=rC(a);s--;)i[s]=arguments[s];var f=o<3&&i[0]!==c&&i[o-1]!==c?[]:nC(i,c);if(o-=f.length,o<r)return tC(e,t,eC,a.placeholder,void 0,i,f,void 0,void 0,r-o);var m=this&&this!==aC&&this instanceof a?n:e;return XO(m,this,i)}return a}Eg.exports=oC});var xg=u((fj,_g)=>{"use strict";var sC=Gn(),iC=mn(),uC=re(),pC=1;function cC(e,t,r,n){var a=t&pC,o=iC(e);function i(){for(var s=-1,c=arguments.length,f=-1,m=n.length,g=Array(m+c),y=this&&this!==uC&&this instanceof i?o:e;++f<m;)g[f]=n[f];for(;c--;)g[f++]=arguments[++s];return sC(y,a?r:this,g)}return i}_g.exports=cC});var Lg=u((gj,qg)=>{"use strict";var lC=Ds(),dC=Bs(),Tg=ha(),Pg="__lodash_placeholder__",$s=1,fC=2,gC=4,Og=8,yn=128,Cg=256,mC=Math.min;function yC(e,t){var r=e[1],n=t[1],a=r|n,o=a<($s|fC|yn),i=n==yn&&r==Og||n==yn&&r==Cg&&e[7].length<=t[8]||n==(yn|Cg)&&t[7].length<=t[8]&&r==Og;if(!(o||i))return e;n&$s&&(e[2]=t[2],a|=r&$s?0:gC);var s=t[3];if(s){var c=e[3];e[3]=c?lC(c,s,t[4]):s,e[4]=c?Tg(e[3],Pg):t[4]}return s=t[5],s&&(c=e[5],e[5]=c?dC(c,s,t[6]):s,e[6]=c?Tg(e[5],Pg):t[6]),s=t[7],s&&(e[7]=s),n&yn&&(e[8]=e[8]==null?t[8]:mC(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=a,e}qg.exports=yC});var Dg=u((mj,Ug)=>{"use strict";var AC=/\s/;function hC(e){for(var t=e.length;t--&&AC.test(e.charAt(t)););return t}Ug.exports=hC});var Ng=u((yj,Bg)=>{"use strict";var IC=Dg(),bC=/^\s+/;function SC(e){return e&&e.slice(0,IC(e)+1).replace(bC,"")}Bg.exports=SC});var ir=u((Aj,Gg)=>{"use strict";var wC=st(),vC=ce(),EC="[object Symbol]";function RC(e){return typeof e=="symbol"||vC(e)&&wC(e)==EC}Gg.exports=RC});var Qg=u((hj,Fg)=>{"use strict";var _C=Ng(),Mg=Se(),xC=ir(),kg=0/0,TC=/^[-+]0x[0-9a-f]+$/i,PC=/^0b[01]+$/i,OC=/^0o[0-7]+$/i,CC=parseInt;function qC(e){if(typeof e=="number")return e;if(xC(e))return kg;if(Mg(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=Mg(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=_C(e);var r=PC.test(e);return r||OC.test(e)?CC(e.slice(2),r?2:8):TC.test(e)?kg:+e}Fg.exports=qC});var $g=u((Ij,Wg)=>{"use strict";var LC=Qg(),jg=1/0,UC=17976931348623157e292;function DC(e){if(!e)return e===0?e:0;if(e=LC(e),e===jg||e===-jg){var t=e<0?-1:1;return t*UC}return e===e?e:0}Wg.exports=DC});var Vs=u((bj,Vg)=>{"use strict";var BC=$g();function NC(e){var t=BC(e),r=t%1;return t===t?r?t-r:t:0}Vg.exports=NC});var Ia=u((Sj,zg)=>{"use strict";var GC=Us(),MC=Bf(),kC=Rg(),FC=Ws(),QC=xg(),jC=Ns(),WC=Lg(),$C=Ms(),VC=ks(),Kg=Vs(),KC="Expected a function",Hg=1,HC=2,Ks=8,Hs=16,Ys=32,Yg=64,Jg=Math.max;function YC(e,t,r,n,a,o,i,s){var c=t&HC;if(!c&&typeof e!="function")throw new TypeError(KC);var f=n?n.length:0;if(f||(t&=~(Ys|Yg),n=a=void 0),i=i===void 0?i:Jg(Kg(i),0),s=s===void 0?s:Kg(s),f-=a?a.length:0,t&Yg){var m=n,g=a;n=a=void 0}var y=c?void 0:jC(e),h=[e,t,r,n,a,m,g,o,i,s];if(y&&WC(h,y),e=h[0],t=h[1],r=h[2],n=h[3],a=h[4],s=h[9]=h[9]===void 0?c?0:e.length:Jg(h[9]-f,0),!s&&t&(Ks|Hs)&&(t&=~(Ks|Hs)),!t||t==Hg)var E=MC(e,t,r);else t==Ks||t==Hs?E=kC(e,t,s):(t==Ys||t==(Hg|Ys))&&!a.length?E=QC(e,t,r,n):E=FC.apply(void 0,h);var T=y?GC:$C;return VC(T(E,h),e,t)}zg.exports=YC});var Zg=u((wj,Xg)=>{"use strict";var JC=Ia(),zC=128;function XC(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,JC(e,zC,void 0,void 0,void 0,void 0,t)}Xg.exports=XC});var tm=u((vj,em)=>{"use strict";var ZC=Eo(),eq=ZC(Object.keys,Object);em.exports=eq});var Js=u((Ej,rm)=>{"use strict";var tq=Kn(),rq=tm(),nq=Object.prototype,aq=nq.hasOwnProperty;function oq(e){if(!tq(e))return rq(e);var t=[];for(var r in Object(e))aq.call(e,r)&&r!="constructor"&&t.push(r);return t}rm.exports=oq});var ur=u((Rj,nm)=>{"use strict";var sq=Oo(),iq=Js(),uq=Vt();function pq(e){return uq(e)?sq(e):iq(e)}nm.exports=pq});var zs=u((_j,am)=>{"use strict";var cq=Xt(),lq=ur();function dq(e,t){return e&&cq(t,lq(t),e)}am.exports=dq});var sm=u((xj,om)=>{"use strict";var fq=Xt(),gq=Zt();function mq(e,t){return e&&fq(t,gq(t),e)}om.exports=mq});var um=u((Tj,im)=>{"use strict";function yq(e,t){for(var r=-1,n=e==null?0:e.length,a=0,o=[];++r<n;){var i=e[r];t(i,r,e)&&(o[a++]=i)}return o}im.exports=yq});var Xs=u((Pj,pm)=>{"use strict";function Aq(){return[]}pm.exports=Aq});var ba=u((Oj,lm)=>{"use strict";var hq=um(),Iq=Xs(),bq=Object.prototype,Sq=bq.propertyIsEnumerable,cm=Object.getOwnPropertySymbols,wq=cm?function(e){return e==null?[]:(e=Object(e),hq(cm(e),function(t){return Sq.call(e,t)}))}:Iq;lm.exports=wq});var fm=u((Cj,dm)=>{"use strict";var vq=Xt(),Eq=ba();function Rq(e,t){return vq(e,Eq(e),t)}dm.exports=Rq});var Zs=u((qj,gm)=>{"use strict";var _q=Nn(),xq=Vn(),Tq=ba(),Pq=Xs(),Oq=Object.getOwnPropertySymbols,Cq=Oq?function(e){for(var t=[];e;)_q(t,Tq(e)),e=xq(e);return t}:Pq;gm.exports=Cq});var ym=u((Lj,mm)=>{"use strict";var qq=Xt(),Lq=Zs();function Uq(e,t){return qq(e,Lq(e),t)}mm.exports=Uq});var ei=u((Uj,Am)=>{"use strict";var Dq=Nn(),Bq=J();function Nq(e,t,r){var n=t(e);return Bq(e)?n:Dq(n,r(e))}Am.exports=Nq});var ti=u((Dj,hm)=>{"use strict";var Gq=ei(),Mq=ba(),kq=ur();function Fq(e){return Gq(e,kq,Mq)}hm.exports=Fq});var bm=u((Bj,Im)=>{"use strict";var Qq=ei(),jq=Zs(),Wq=Zt();function $q(e){return Qq(e,Wq,jq)}Im.exports=$q});var wm=u((Nj,Sm)=>{"use strict";var Vq=it(),Kq=re(),Hq=Vq(Kq,"DataView");Sm.exports=Hq});var Em=u((Gj,vm)=>{"use strict";var Yq=it(),Jq=re(),zq=Yq(Jq,"Promise");vm.exports=zq});var cr=u((Mj,Cm)=>{"use strict";var ri=wm(),ni=kn(),ai=Em(),oi=mo(),si=qs(),Om=st(),pr=io(),Rm="[object Map]",Xq="[object Object]",_m="[object Promise]",xm="[object Set]",Tm="[object WeakMap]",Pm="[object DataView]",Zq=pr(ri),eL=pr(ni),tL=pr(ai),rL=pr(oi),nL=pr(si),Pt=Om;(ri&&Pt(new ri(new ArrayBuffer(1)))!=Pm||ni&&Pt(new ni)!=Rm||ai&&Pt(ai.resolve())!=_m||oi&&Pt(new oi)!=xm||si&&Pt(new si)!=Tm)&&(Pt=function(e){var t=Om(e),r=t==Xq?e.constructor:void 0,n=r?pr(r):"";if(n)switch(n){case Zq:return Pm;case eL:return Rm;case tL:return _m;case rL:return xm;case nL:return Tm}return t});Cm.exports=Pt});var Lm=u((kj,qm)=>{"use strict";var aL=Object.prototype,oL=aL.hasOwnProperty;function sL(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&oL.call(e,"index")&&(r.index=e.index,r.input=e.input),r}qm.exports=sL});var Dm=u((Fj,Um)=>{"use strict";var iL=$n();function uL(e,t){var r=t?iL(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}Um.exports=uL});var Nm=u((Qj,Bm)=>{"use strict";var pL=/\w*$/;function cL(e){var t=new e.constructor(e.source,pL.exec(e));return t.lastIndex=e.lastIndex,t}Bm.exports=cL});var Qm=u((jj,Fm)=>{"use strict";var Gm=bt(),Mm=Gm?Gm.prototype:void 0,km=Mm?Mm.valueOf:void 0;function lL(e){return km?Object(km.call(e)):{}}Fm.exports=lL});var Wm=u((Wj,jm)=>{"use strict";var dL=$n(),fL=Dm(),gL=Nm(),mL=Qm(),yL=vo(),AL="[object Boolean]",hL="[object Date]",IL="[object Map]",bL="[object Number]",SL="[object RegExp]",wL="[object Set]",vL="[object String]",EL="[object Symbol]",RL="[object ArrayBuffer]",_L="[object DataView]",xL="[object Float32Array]",TL="[object Float64Array]",PL="[object Int8Array]",OL="[object Int16Array]",CL="[object Int32Array]",qL="[object Uint8Array]",LL="[object Uint8ClampedArray]",UL="[object Uint16Array]",DL="[object Uint32Array]";function BL(e,t,r){var n=e.constructor;switch(t){case RL:return dL(e);case AL:case hL:return new n(+e);case _L:return fL(e,r);case xL:case TL:case PL:case OL:case CL:case qL:case LL:case UL:case DL:return yL(e,r);case IL:return new n;case bL:case vL:return new n(e);case SL:return gL(e);case wL:return new n;case EL:return mL(e)}}jm.exports=BL});var Vm=u(($j,$m)=>{"use strict";var NL=cr(),GL=ce(),ML="[object Map]";function kL(e){return GL(e)&&NL(e)==ML}$m.exports=kL});var Jm=u((Vj,Ym)=>{"use strict";var FL=Vm(),QL=Hn(),Km=Yn(),Hm=Km&&Km.isMap,jL=Hm?QL(Hm):FL;Ym.exports=jL});var Xm=u((Kj,zm)=>{"use strict";var WL=cr(),$L=ce(),VL="[object Set]";function KL(e){return $L(e)&&WL(e)==VL}zm.exports=KL});var ry=u((Hj,ty)=>{"use strict";var HL=Xm(),YL=Hn(),Zm=Yn(),ey=Zm&&Zm.isSet,JL=ey?YL(ey):HL;ty.exports=JL});var ii=u((Yj,sy)=>{"use strict";var zL=Hr(),XL=Aa(),ZL=Po(),eU=zs(),tU=sm(),rU=So(),nU=Yt(),aU=fm(),oU=ym(),sU=ti(),iU=bm(),uU=cr(),pU=Lm(),cU=Wm(),lU=Ro(),dU=J(),fU=Zr(),gU=Jm(),mU=Se(),yU=ry(),AU=ur(),hU=Zt(),IU=1,bU=2,SU=4,ny="[object Arguments]",wU="[object Array]",vU="[object Boolean]",EU="[object Date]",RU="[object Error]",ay="[object Function]",_U="[object GeneratorFunction]",xU="[object Map]",TU="[object Number]",oy="[object Object]",PU="[object RegExp]",OU="[object Set]",CU="[object String]",qU="[object Symbol]",LU="[object WeakMap]",UU="[object ArrayBuffer]",DU="[object DataView]",BU="[object Float32Array]",NU="[object Float64Array]",GU="[object Int8Array]",MU="[object Int16Array]",kU="[object Int32Array]",FU="[object Uint8Array]",QU="[object Uint8ClampedArray]",jU="[object Uint16Array]",WU="[object Uint32Array]",C={};C[ny]=C[wU]=C[UU]=C[DU]=C[vU]=C[EU]=C[BU]=C[NU]=C[GU]=C[MU]=C[kU]=C[xU]=C[TU]=C[oy]=C[PU]=C[OU]=C[CU]=C[qU]=C[FU]=C[QU]=C[jU]=C[WU]=!0;C[RU]=C[ay]=C[LU]=!1;function Sa(e,t,r,n,a,o){var i,s=t&IU,c=t&bU,f=t&SU;if(r&&(i=a?r(e,n,a,o):r(e)),i!==void 0)return i;if(!mU(e))return e;var m=dU(e);if(m){if(i=pU(e),!s)return nU(e,i)}else{var g=uU(e),y=g==ay||g==_U;if(fU(e))return rU(e,s);if(g==oy||g==ny||y&&!a){if(i=c||y?{}:lU(e),!s)return c?oU(e,tU(i,e)):aU(e,eU(i,e))}else{if(!C[g])return a?e:{};i=cU(e,g,s)}}o||(o=new zL);var h=o.get(e);if(h)return h;o.set(e,i),yU(e)?e.forEach(function(_){i.add(Sa(_,t,r,_,e,o))}):gU(e)&&e.forEach(function(_,R){i.set(R,Sa(_,t,r,R,e,o))});var E=f?c?iU:sU:c?hU:AU,T=m?void 0:E(e);return XL(T||e,function(_,R){T&&(R=_,_=e[R]),ZL(i,R,Sa(_,t,r,R,e,o))}),i}sy.exports=Sa});var uy=u((Jj,iy)=>{"use strict";var $U=ii(),VU=4;function KU(e){return $U(e,VU)}iy.exports=KU});var cy=u((zj,py)=>{"use strict";var HU=Ia(),YU=8;function ui(e,t,r){t=r?void 0:t;var n=HU(e,YU,void 0,void 0,void 0,void 0,void 0,t);return n.placeholder=ui.placeholder,n}ui.placeholder={};py.exports=ui});var dy=u((Xj,ly)=>{"use strict";var JU=st(),zU=ce(),XU=_o(),ZU="[object DOMException]",eD="[object Error]";function tD(e){if(!zU(e))return!1;var t=JU(e);return t==eD||t==ZU||typeof e.message=="string"&&typeof e.name=="string"&&!XU(e)}ly.exports=tD});var gy=u((Zj,fy)=>{"use strict";var rD=cr(),nD=ce(),aD="[object WeakMap]";function oD(e){return nD(e)&&rD(e)==aD}fy.exports=oD});var yy=u((eW,my)=>{"use strict";function sD(e,t){for(var r=-1,n=e==null?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}my.exports=sD});var pi=u((tW,Ay)=>{"use strict";var iD=lo(),uD=yy(),pD=go(),cD=1,lD=2;function dD(e,t,r,n,a,o){var i=r&cD,s=e.length,c=t.length;if(s!=c&&!(i&&c>s))return!1;var f=o.get(e),m=o.get(t);if(f&&m)return f==t&&m==e;var g=-1,y=!0,h=r&lD?new iD:void 0;for(o.set(e,t),o.set(t,e);++g<s;){var E=e[g],T=t[g];if(n)var _=i?n(T,E,g,t,e,o):n(E,T,g,e,t,o);if(_!==void 0){if(_)continue;y=!1;break}if(h){if(!uD(t,function(R,U){if(!pD(h,U)&&(E===R||a(E,R,r,n,o)))return h.push(U)})){y=!1;break}}else if(!(E===T||a(E,T,r,n,o))){y=!1;break}}return o.delete(e),o.delete(t),y}Ay.exports=dD});var Iy=u((rW,hy)=>{"use strict";function fD(e){var t=-1,r=Array(e.size);return e.forEach(function(n,a){r[++t]=[a,n]}),r}hy.exports=fD});var Ey=u((nW,vy)=>{"use strict";var by=bt(),Sy=wo(),gD=jt(),mD=pi(),yD=Iy(),AD=jn(),hD=1,ID=2,bD="[object Boolean]",SD="[object Date]",wD="[object Error]",vD="[object Map]",ED="[object Number]",RD="[object RegExp]",_D="[object Set]",xD="[object String]",TD="[object Symbol]",PD="[object ArrayBuffer]",OD="[object DataView]",wy=by?by.prototype:void 0,ci=wy?wy.valueOf:void 0;function CD(e,t,r,n,a,o,i){switch(r){case OD:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case PD:return!(e.byteLength!=t.byteLength||!o(new Sy(e),new Sy(t)));case bD:case SD:case ED:return gD(+e,+t);case wD:return e.name==t.name&&e.message==t.message;case RD:case xD:return e==t+"";case vD:var s=yD;case _D:var c=n&hD;if(s||(s=AD),e.size!=t.size&&!c)return!1;var f=i.get(e);if(f)return f==t;n|=ID,i.set(e,t);var m=mD(s(e),s(t),n,a,o,i);return i.delete(e),m;case TD:if(ci)return ci.call(e)==ci.call(t)}return!1}vy.exports=CD});var xy=u((aW,_y)=>{"use strict";var Ry=ti(),qD=1,LD=Object.prototype,UD=LD.hasOwnProperty;function DD(e,t,r,n,a,o){var i=r&qD,s=Ry(e),c=s.length,f=Ry(t),m=f.length;if(c!=m&&!i)return!1;for(var g=c;g--;){var y=s[g];if(!(i?y in t:UD.call(t,y)))return!1}var h=o.get(e),E=o.get(t);if(h&&E)return h==t&&E==e;var T=!0;o.set(e,t),o.set(t,e);for(var _=i;++g<c;){y=s[g];var R=e[y],U=t[y];if(n)var et=i?n(U,R,y,t,e,o):n(R,U,y,e,t,o);if(!(et===void 0?R===U||a(R,U,r,n,o):et)){T=!1;break}_||(_=y=="constructor")}if(T&&!_){var Ae=e.constructor,tt=t.constructor;Ae!=tt&&"constructor"in e&&"constructor"in t&&!(typeof Ae=="function"&&Ae instanceof Ae&&typeof tt=="function"&&tt instanceof tt)&&(T=!1)}return o.delete(e),o.delete(t),T}_y.exports=DD});var Dy=u((oW,Uy)=>{"use strict";var li=Hr(),BD=pi(),ND=Ey(),GD=xy(),Ty=cr(),Py=J(),Oy=Zr(),MD=Jn(),kD=1,Cy="[object Arguments]",qy="[object Array]",wa="[object Object]",FD=Object.prototype,Ly=FD.hasOwnProperty;function QD(e,t,r,n,a,o){var i=Py(e),s=Py(t),c=i?qy:Ty(e),f=s?qy:Ty(t);c=c==Cy?wa:c,f=f==Cy?wa:f;var m=c==wa,g=f==wa,y=c==f;if(y&&Oy(e)){if(!Oy(t))return!1;i=!0,m=!1}if(y&&!m)return o||(o=new li),i||MD(e)?BD(e,t,r,n,a,o):ND(e,t,c,r,n,a,o);if(!(r&kD)){var h=m&&Ly.call(e,"__wrapped__"),E=g&&Ly.call(t,"__wrapped__");if(h||E){var T=h?e.value():e,_=E?t.value():t;return o||(o=new li),a(T,_,r,n,o)}}return y?(o||(o=new li),GD(e,t,r,n,a,o)):!1}Uy.exports=QD});var di=u((sW,Gy)=>{"use strict";var jD=Dy(),By=ce();function Ny(e,t,r,n,a){return e===t?!0:e==null||t==null||!By(e)&&!By(t)?e!==e&&t!==t:jD(e,t,r,n,Ny,a)}Gy.exports=Ny});var ky=u((iW,My)=>{"use strict";var WD=Hr(),$D=di(),VD=1,KD=2;function HD(e,t,r,n){var a=r.length,o=a,i=!n;if(e==null)return!o;for(e=Object(e);a--;){var s=r[a];if(i&&s[2]?s[1]!==e[s[0]]:!(s[0]in e))return!1}for(;++a<o;){s=r[a];var c=s[0],f=e[c],m=s[1];if(i&&s[2]){if(f===void 0&&!(c in e))return!1}else{var g=new WD;if(n)var y=n(f,m,c,e,t,g);if(!(y===void 0?$D(m,f,VD|KD,n,g):y))return!1}}return!0}My.exports=HD});var fi=u((uW,Fy)=>{"use strict";var YD=Se();function JD(e){return e===e&&!YD(e)}Fy.exports=JD});var jy=u((pW,Qy)=>{"use strict";var zD=fi(),XD=ur();function ZD(e){for(var t=XD(e),r=t.length;r--;){var n=t[r],a=e[n];t[r]=[n,a,zD(a)]}return t}Qy.exports=ZD});var gi=u((cW,Wy)=>{"use strict";function eB(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}Wy.exports=eB});var Vy=u((lW,$y)=>{"use strict";var tB=ky(),rB=jy(),nB=gi();function aB(e){var t=rB(e);return t.length==1&&t[0][2]?nB(t[0][0],t[0][1]):function(r){return r===e||tB(r,e,t)}}$y.exports=aB});var va=u((dW,Ky)=>{"use strict";var oB=J(),sB=ir(),iB=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,uB=/^\w*$/;function pB(e,t){if(oB(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||sB(e)?!0:uB.test(e)||!iB.test(e)||t!=null&&e in Object(t)}Ky.exports=pB});var Jy=u((fW,Yy)=>{"use strict";var Hy=Fn(),cB="Expected a function";function mi(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(cB);var r=function(){var n=arguments,a=t?t.apply(this,n):n[0],o=r.cache;if(o.has(a))return o.get(a);var i=e.apply(this,n);return r.cache=o.set(a,i)||o,i};return r.cache=new(mi.Cache||Hy),r}mi.Cache=Hy;Yy.exports=mi});var Xy=u((gW,zy)=>{"use strict";var lB=Jy(),dB=500;function fB(e){var t=lB(e,function(n){return r.size===dB&&r.clear(),n}),r=t.cache;return t}zy.exports=fB});var yi=u((mW,Zy)=>{"use strict";var gB=Xy(),mB=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,yB=/\\(\\)?/g,AB=gB(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(mB,function(r,n,a,o){t.push(a?o.replace(yB,"$1"):n||r)}),t});Zy.exports=AB});var Ai=u((yW,eA)=>{"use strict";function hB(e,t){for(var r=-1,n=e==null?0:e.length,a=Array(n);++r<n;)a[r]=t(e[r],r,e);return a}eA.exports=hB});var sA=u((AW,oA)=>{"use strict";var tA=bt(),IB=Ai(),bB=J(),SB=ir(),wB=1/0,rA=tA?tA.prototype:void 0,nA=rA?rA.toString:void 0;function aA(e){if(typeof e=="string")return e;if(bB(e))return IB(e,aA)+"";if(SB(e))return nA?nA.call(e):"";var t=e+"";return t=="0"&&1/e==-wB?"-0":t}oA.exports=aA});var hi=u((hW,iA)=>{"use strict";var vB=sA();function EB(e){return e==null?"":vB(e)}iA.exports=EB});var Ii=u((IW,uA)=>{"use strict";var RB=J(),_B=va(),xB=yi(),TB=hi();function PB(e,t){return RB(e)?e:_B(e,t)?[e]:xB(TB(e))}uA.exports=PB});var lr=u((bW,pA)=>{"use strict";var OB=ir(),CB=1/0;function qB(e){if(typeof e=="string"||OB(e))return e;var t=e+"";return t=="0"&&1/e==-CB?"-0":t}pA.exports=qB});var bi=u((SW,cA)=>{"use strict";var LB=Ii(),UB=lr();function DB(e,t){t=LB(t,e);for(var r=0,n=t.length;e!=null&&r<n;)e=e[UB(t[r++])];return r&&r==n?e:void 0}cA.exports=DB});var dA=u((wW,lA)=>{"use strict";var BB=bi();function NB(e,t,r){var n=e==null?void 0:BB(e,t);return n===void 0?r:n}lA.exports=NB});var gA=u((vW,fA)=>{"use strict";function GB(e,t){return e!=null&&t in Object(e)}fA.exports=GB});var yA=u((EW,mA)=>{"use strict";var MB=Ii(),kB=Fr(),FB=J(),QB=rn(),jB=Wn(),WB=lr();function $B(e,t,r){t=MB(t,e);for(var n=-1,a=t.length,o=!1;++n<a;){var i=WB(t[n]);if(!(o=e!=null&&r(e,i)))break;e=e[i]}return o||++n!=a?o:(a=e==null?0:e.length,!!a&&jB(a)&&QB(i,a)&&(FB(e)||kB(e)))}mA.exports=$B});var hA=u((RW,AA)=>{"use strict";var VB=gA(),KB=yA();function HB(e,t){return e!=null&&KB(e,t,VB)}AA.exports=HB});var bA=u((_W,IA)=>{"use strict";var YB=di(),JB=dA(),zB=hA(),XB=va(),ZB=fi(),eN=gi(),tN=lr(),rN=1,nN=2;function aN(e,t){return XB(e)&&ZB(t)?eN(tN(e),t):function(r){var n=JB(r,e);return n===void 0&&n===t?zB(r,e):YB(t,n,rN|nN)}}IA.exports=aN});var wA=u((xW,SA)=>{"use strict";function oN(e){return function(t){return t?.[e]}}SA.exports=oN});var EA=u((TW,vA)=>{"use strict";var sN=bi();function iN(e){return function(t){return sN(t,e)}}vA.exports=iN});var _A=u((PW,RA)=>{"use strict";var uN=wA(),pN=EA(),cN=va(),lN=lr();function dN(e){return cN(e)?uN(lN(e)):pN(e)}RA.exports=dN});var Si=u((OW,xA)=>{"use strict";var fN=Vy(),gN=bA(),mN=Qr(),yN=J(),AN=_A();function hN(e){return typeof e=="function"?e:e==null?mN:typeof e=="object"?yN(e)?gN(e[0],e[1]):fN(e):AN(e)}xA.exports=hN});var PA=u((CW,TA)=>{"use strict";var IN=ii(),bN=Si(),SN=1;function wN(e){return bN(typeof e=="function"?e:IN(e,SN))}TA.exports=wN});var CA=u((qW,OA)=>{"use strict";var vN=ao();function EN(e){var t=e==null?0:e.length;return t?vN(e,1):[]}OA.exports=EN});var LA=u((LW,qA)=>{"use strict";var RN=CA(),_N=oo(),xN=Mn();function TN(e){return xN(_N(e,void 0,RN),e+"")}qA.exports=TN});var DA=u((UW,UA)=>{"use strict";var PN=Ia(),ON=LA(),CN=256,qN=ON(function(e,t){return PN(e,CN,void 0,void 0,void 0,t)});UA.exports=qN});var NA=u((DW,BA)=>{"use strict";var LN=Ai(),UN=Yt(),DN=J(),BN=ir(),NN=yi(),GN=lr(),MN=hi();function kN(e){return DN(e)?LN(e,GN):BN(e)?[e]:UN(NN(MN(e)))}BA.exports=kN});var MA=u((BW,GA)=>{"use strict";GA.exports={ary:Zg(),assign:zs(),clone:uy(),curry:cy(),forEach:Aa(),isArray:J(),isError:dy(),isFunction:jr(),isWeakMap:gy(),iteratee:PA(),keys:Js(),rearg:DA(),toInteger:Vs(),toPath:NA()}});var FA=u((NW,kA)=>{"use strict";var FN=Tf(),QN=MA();function jN(e,t,r){return FN(QN,e,t,r)}kA.exports=jN});var wi=u((GW,jA)=>{"use strict";var WN=FA(),QA=WN("merge",Co());QA.placeholder=Ts();jA.exports=QA});var nI=u((fV,rI)=>{"use strict";function hG(e,t,r,n){for(var a=-1,o=e==null?0:e.length;++a<o;){var i=e[a];t(n,i,r(i),e)}return n}rI.exports=hG});var oI=u((gV,aI)=>{"use strict";var IG=bo(),bG=ur();function SG(e,t){return e&&IG(e,t,bG)}aI.exports=SG});var iI=u((mV,sI)=>{"use strict";var wG=Vt();function vG(e,t){return function(r,n){if(r==null)return r;if(!wG(r))return e(r,n);for(var a=r.length,o=t?a:-1,i=Object(r);(t?o--:++o<a)&&n(i[o],o,i)!==!1;);return r}}sI.exports=vG});var pI=u((yV,uI)=>{"use strict";var EG=oI(),RG=iI(),_G=RG(EG);uI.exports=_G});var lI=u((AV,cI)=>{"use strict";var xG=pI();function TG(e,t,r,n){return xG(e,function(a,o,i){t(n,a,r(a),i)}),n}cI.exports=TG});var fI=u((hV,dI)=>{"use strict";var PG=nI(),OG=lI(),CG=Si(),qG=J();function LG(e,t){return function(r,n){var a=qG(r)?PG:OG,o=t?t():{};return a(r,e,CG(n,2),o)}}dI.exports=LG});var mI=u((IV,gI)=>{"use strict";var UG=Yr(),DG=fI(),BG=Object.prototype,NG=BG.hasOwnProperty,GG=DG(function(e,t,r){NG.call(e,r)?e[r].push(t):UG(e,r,[t])});gI.exports=GG});var JG={};S(JG,{Method:()=>Ga,ai:()=>Li,api:()=>$i,auditLogs:()=>ct,automations:()=>sa,backups:()=>ve,branding:()=>ta,constants:()=>Dr,environmentVariables:()=>je,features:()=>we,groups:()=>G,init:()=>wf,licensing:()=>Ge,logger:()=>Ot,mappers:()=>Q,middleware:()=>Ti,plugins:()=>ia,publicApi:()=>ca,quotas:()=>Fe,scimGroups:()=>dr,scimUsers:()=>se,sdk:()=>Ei,users:()=>Je,utils:()=>Ft});module.exports=HI(JG);var Ga=(o=>(o.POST="POST",o.GET="GET",o.PATCH="PATCH",o.DELETE="DELETE",o.PUT="PUT",o))(Ga||{});var Ei={};S(Ei,{ai:()=>Ho,auditLogs:()=>ct,automations:()=>sa,backups:()=>ve,branding:()=>ta,environmentVariables:()=>je,features:()=>we,groups:()=>G,init:()=>wf,licensing:()=>Ge,logger:()=>Ot,plugins:()=>ia,publicApi:()=>ca,quotas:()=>Fe,scimGroups:()=>dr,scimUsers:()=>se,users:()=>Je,utils:()=>Ft});var ta={};S(ta,{getBrandingConfig:()=>Gx});var we={};S(we,{checkBackups:()=>le,checkFeature:()=>Zn,checkFeatures:()=>Qo,checkSCIM:()=>Vo,isAICustomConfigsEnabled:()=>Ko,isAppBuildersEnabled:()=>vt,isAuditLogsEnabled:()=>ea,isBackupsEnabled:()=>jo,isBrandingEnabled:()=>Wo,isBudibaseAIEnabled:()=>sn,isEnforceableSSO:()=>Bd,isExpandedPublicApiEnabled:()=>Ye,isSSOEnforced:()=>Ux,isSyncAutomationsEnabled:()=>qx,isTriggerAutomationRunEnabled:()=>Lx,isUserGroupsEnabled:()=>$o,isViewPermissionEnabled:()=>Dx,isViewReadonlyColumnsEnabled:()=>Bx});var z=require("@budibase/types"),He=require("@budibase/backend-core");var Ge={};S(Ge,{cache:()=>xe,client:()=>ot,features:()=>Dn,getFreeLicense:()=>Mo,getLicense:()=>No,getLicenseFromKey:()=>Go,keys:()=>Fo,offline:()=>zn,quotas:()=>Bn});var xe={};S(xe,{getCachedLicense:()=>Ud,invalidate:()=>Dd,refresh:()=>St});var Ma=require("@budibase/backend-core"),Ar,YI=async()=>{Ar=await new Ma.redis.Client(Ma.redis.utils.Databases.LICENSES).init()},JI=async()=>{Ar&&await Ar.finish()};process.on("exit",async()=>{await JI()});var ka=async()=>(Ar||await YI(),Ar);var ot={};S(ot,{activateLicenseKey:()=>Za,getLicense:()=>Mt,getLicenseFromKey:()=>Xa,triggerQuota:()=>Bb});var ru=O(require("node-fetch"));var nu=require("@budibase/backend-core"),Fa=class{constructor(t){this.apiCall=t=>async(r="",n={})=>{n.headers||(n.headers={}),n.headers["Content-Type"]||(n.headers={"Content-Type":"application/json",Accept:"application/json",...n.headers});let a=n.headers["Content-Type"]==="application/json";nu.logging.correlation.setHeader(n.headers);let o={method:t,body:a?JSON.stringify(n.body):n.body,headers:n.headers,credentials:"include"};return(0,ru.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}},Qa=Fa;var qn=require("@budibase/types"),P=require("@budibase/backend-core");var De={};S(De,{bustCache:()=>pu,getCurrentUsageValues:()=>fu,getQuotaUsage:()=>yt,setAllUsage:()=>Va,setAppUsageValue:()=>$a,setUsage:()=>cu,setUsagePerApp:()=>lu,utils:()=>Ir});var ee=require("@budibase/types"),H=require("@budibase/backend-core");var Ir={};S(Ir,{generateBaseQuotaUsage:()=>vn,generateNewMonthlyQuotas:()=>hr,generateNewQuotaUsage:()=>Wa,getBreakdownName:()=>Rn,getCurrentMonthString:()=>rt,setCurrentMonth:()=>En,setQuotaReset:()=>ja});var V=require("@budibase/types"),wn=require("@budibase/backend-core"),au=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},ja=e=>{e.quotaReset=au()},rt=()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},vn=()=>({usageQuota:{[V.StaticQuotaName.APPS]:0,[V.StaticQuotaName.ROWS]:0,[V.StaticQuotaName.PLUGINS]:0,[V.StaticQuotaName.USERS]:0,[V.StaticQuotaName.CREATORS]:0,[V.StaticQuotaName.USER_GROUPS]:0,[V.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[rt()]:hr()}}),Wa=()=>{let e={_id:wn.db.StaticDatabases.GLOBAL.docs.usageQuota,quotaReset:au(),...vn(),apps:{}};return En(e),e},hr=()=>({[V.MonthlyQuotaName.QUERIES]:0,[V.MonthlyQuotaName.AUTOMATIONS]:0,[V.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,triggers:{}}),En=e=>{let t=rt();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=hr()),e.monthly.current=e.monthly[t]},Rn=(e,t)=>{if(!(!t||!e))switch(e){case V.MonthlyQuotaName.AUTOMATIONS:return V.BreakdownQuotaName.AUTOMATIONS;case V.MonthlyQuotaName.QUERIES:return wn.db.isTableId(t)?V.BreakdownQuotaName.ROW_QUERIES:wn.db.isDatasourceId(t)?V.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}};var ou=H.Duration.fromSeconds(60).toMs(),{Writethrough:su}=H.cache.writethrough;function XI(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 _n=()=>H.tenancy.isSelfHostUsingCloud()?new su(H.tenancy.getSelfHostCloudDB(),ou):new su(H.tenancy.getGlobalDB(),ou),uu=()=>H.tenancy.isSelfHostUsingCloud()?`quota_usage_${H.context.getTenantId()}`:H.db.StaticDatabases.GLOBAL.docs.usageQuota,pu=async()=>{let e=_n(),t=uu(),r=await e.tryGet(t);!r||!r._rev||await e.remove(t,r._rev)},yt=async()=>{let e=_n(),t=await e.tryGet(uu());if(!t){t=Wa();let{rev:r}=await e.put(t);t._rev=r}return En(t),ja(t),XI(t)},cu=async(e,t,r)=>Va({name:t,type:r,values:{total:e}}),lu=async(e,t,r)=>{let n=_n(),a=await yt(),o=Object.values(e).reduce((s,c)=>s+c,0);for(let[s,c]of Object.entries(e))a=du(a,t,r,{total:o,app:c},{appId:s});let i=await n.put(a);return a._rev=i.rev,a},ZI=(e,t,r,n)=>{let a=Rn(t,r);if(!a||!n?.breakdown)return e;e.breakdown||(e.breakdown={}),e.breakdown[a]||(e.breakdown[a]={parent:t,values:{}});let o=e.breakdown[a];return o.values[r]=n.breakdown,e},$a=(e,t,r,n={},a)=>{let o;try{o=H.db.getProdAppID(n?.appId||H.context.getAppId())}catch{}if(!o||!a.app||!ee.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[o]||(e.apps={...e.apps,[o]:vn()});let i=e.apps[o];switch(r){case ee.QuotaUsageType.STATIC:i.usageQuota[t]=a.app;break;case ee.QuotaUsageType.MONTHLY:{let s=rt(),c=t,f=i.monthly[s];f||(i.monthly[s]=hr(),f=i.monthly[s]),f[c]=a.app,ee.BREAKDOWN_QUOTA_NAMES.includes(c)&&n?.id&&(f=ZI(f,c,n.id,a));break}}return e},iu=(e,t,r,n)=>{if(!ee.APP_QUOTA_NAMES.includes(r))return{};let a;try{a=H.db.getProdAppID(H.context.getAppId())}catch{}if(!a||!e.apps||!e.apps[a])return{app:0};let o=e.apps[a];switch(t){case ee.QuotaUsageType.STATIC:if(o.usageQuota?.[r])return{app:o.usageQuota[r]};break;case ee.QuotaUsageType.MONTHLY:{let i=rt(),s=r;if(!o.monthly?.[i]?.[s])break;let c=o.monthly[i],f=c[s],m,g=Rn(s,n);return g&&n&&c.breakdown?.[g]&&(m=c.breakdown[g]?.values[n]),{app:f,breakdown:m||0}}}return{app:0}},eb=(e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},tb=(e,t,r,n)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),n&&(r.monthly[t].triggers[e]=n)},du=(e,t,r,n,a={})=>{if(r===ee.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=n.total,eb(t,e,n.triggers);else if(r===ee.QuotaUsageType.MONTHLY){t=t;let o=rt();e.monthly[o][t]=n.total,tb(t,o,e,n.triggers)}else throw new Error(`Invalid usage type: ${r}`);return $a(e,t,r,a,n)},Va=async e=>{let t=Array.isArray(e)?e:[e],r=_n(),n=await yt();for(let o of t)n=du(n,o.name,o.type,o.values,o.opts);let a=await r.put(n,0);return n._rev=a.rev,n},fu=async(e,t,r)=>{let n=await yt(),a=0,o={};switch(e){case ee.QuotaUsageType.STATIC:if(n.usageQuota[t]){let i=t;a=n.usageQuota[i],o=iu(n,e,t,r)}break;case ee.QuotaUsageType.MONTHLY:{let i=rt(),s=t;n.monthly[i][s]&&(a=n.monthly[i][s],o=iu(n,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return ee.APP_QUOTA_NAMES.includes(t)&&!(o.app||o.breakdown)&&(o.app=o.app||0,o.breakdown=o.breakdown||0),{total:a,app:o.app,breakdown:o.breakdown}};var Ie={};S(Ie,{destroy:()=>ab,get:()=>Ka,save:()=>nb});var nt=require("@budibase/backend-core"),rb=()=>({_id:nt.StaticDatabases.GLOBAL.docs.licenseInfo}),nb=async e=>{let t=await Ka();t={...t,...e};let n=await nt.tenancy.getGlobalDB().put(t);return t._rev=n.rev,t},Ka=async()=>{let e=nt.tenancy.getGlobalDB();try{return await e.get(nt.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return rb();throw t}},ab=async()=>{let e=nt.tenancy.getGlobalDB(),t=await Ka();t&&t._rev&&await e.remove(nt.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)};var D={};S(D,{bulkSave:()=>Ab,destroy:()=>hb,fetch:()=>fb,generateUserGroupID:()=>cb,get:()=>gb,getBulk:()=>mb,getByName:()=>Ha,getGroupUsers:()=>Tn,getGroupUsersParams:()=>hu,getUserGroupsParams:()=>Au,save:()=>yb});var q=require("@budibase/backend-core");var _e=require("@budibase/types"),Bt=require("@budibase/backend-core");async function gu(){let e=Bt.sql.designDoc.base("type");e.sql.tables={[_e.AUDIT_LOG_TYPE]:{fields:{appId:_e.SQLiteType.TEXT,event:_e.SQLiteType.TEXT,userId:_e.SQLiteType.TEXT,timestamp:_e.SQLiteType.TEXT,metadata:_e.SQLiteType.TEXT,name:_e.SQLiteType.TEXT,type:_e.SQLiteType.TEXT,fallback:_e.SQLiteType.TEXT}}};let t=Bt.context.getAuditLogsDB(),r;try{r=await t.get(Bt.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(n){if(n.status===404)r=e;else throw n}await t.put(r)}var xn=require("@budibase/backend-core"),{ViewName:ob,SEPARATOR:sb,DocumentType:ib,createView:ub}=xn.db,pb=ib.USER+sb;async function mu(){let e=xn.tenancy.getGlobalDB(),t=`function(doc) {
|
|
4
|
+
if (doc._id.startsWith("${pb}") && Array.isArray(doc.userGroups)) {
|
|
5
5
|
for (let groupId of doc.userGroups) {
|
|
6
6
|
emit("g_" + groupId, { email: doc.email, userId: doc._id })
|
|
7
7
|
emit("e_" + groupId + doc.email, { email: doc.email, userId: doc._id })
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
|
-
}`;await
|
|
11
|
-
if (doc._id.startsWith("${
|
|
12
|
-
let autoId = doc.automationId + "${
|
|
13
|
-
let status = doc.status + "${
|
|
14
|
-
let autoKey = "${
|
|
15
|
-
let statusKey = "${
|
|
16
|
-
let allKey = "${
|
|
10
|
+
}`;await ub(e,t,ob.USER_BY_GROUP)}var yu=`${q.DocumentType.GROUP}${q.SEPARATOR}`;function Au(e,t={}){e||(e="");let r=e?.startsWith(q.DocumentType.GROUP)?"":yu;return{...t,startkey:`${r}${e}`,endkey:`${r}${e}${q.UNICODE_MAX}`}}function hu(e,t={}){e||(e="");let{emailSearch:r,bookmark:n,...a}=t;return r?{...a,startkey:`e_${e}${n||r}`,endkey:`e_${e}${r}${q.UNICODE_MAX}`}:{...t,startkey:`g_${e}`,endkey:`g_${e}${q.UNICODE_MAX}`,startkey_docid:n}}function cb(){return`${yu}${q.utils.newid()}`}async function Tn(e,t){let r=q.tenancy.getGlobalDB();return(await q.db.queryView(q.db.ViewName.USER_BY_GROUP,hu(e,t),r,mu,{arrayResponse:!0})).map(a=>({_id:a.userId,email:a.email}))||[]}async function br(e){return e.users=await Tn(e._id),e}async function lb(e){let r=(await br(e)).users?.map(o=>o._id),n=await q.users.bulkGetGlobalUsersById(r),a=[];for(let o of n){if(!o.userGroups)continue;let i=o.userGroups.length;o.userGroups=o.userGroups.filter(s=>s!==e._id),o.userGroups.length!==i&&a.push(o)}a.length&&await q.users.bulkUpdateGlobalUsers(a)}async function Iu(){return(await q.tenancy.getGlobalDB().allDocs(Au(null,{include_docs:!0}))).rows.map(t=>t.doc)}async function fb(){let e=await Iu(),t=[];for(let r of e)t.push(br(r));return await Promise.all(t)}async function gb(e){let r=await q.tenancy.getGlobalDB().get(e);return await br(r)}async function mb(e,t={enriched:!0}){let n=await q.tenancy.getGlobalDB().getMultiple(e,{allowMissing:!0});if(t?.enriched){let a=[];for(let o of n)a.push(br(o));return await Promise.all(a)}else return n}async function yb(e){return await q.tenancy.getGlobalDB().put(e)}async function Ab(e){return await q.tenancy.getGlobalDB().bulkDocs(e)}async function hb(e,t){let r=q.tenancy.getGlobalDB(),n=await r.get(e),a=await r.remove(e,t);return await lb(n),a}async function Ha(e){let t=e.toLowerCase(),n=(await Iu()).find(a=>a.name.toLowerCase()===t);if(n)return await br(n)}var be={};S(be,{deleteAppBackupMetadata:()=>Cb,fetchAppBackups:()=>Tb,generateAppBackupID:()=>Lu,getAppBackupMetadata:()=>qb,oldestBackupDate:()=>Cu,storeAppBackupMetadata:()=>Pb,updateAppBackupMetadata:()=>Ob});var N=require("@budibase/backend-core"),Ou=require("@budibase/types");function Sr(e,t){let r=e.rows.map(a=>a.doc?a.doc:a);if(!t?.paginate)return{data:r,hasNextPage:!1};let n=r.length>t?.pageSize;return{data:r.slice(0,t?.pageSize),hasNextPage:n,nextPage:n?e.rows[t?.pageSize]?.key:void 0}}var Nt=require("@budibase/backend-core"),{ViewName:Su,AutomationViewMode:Ya,SEPARATOR:Be,DocumentType:wu,createView:vu}=Nt.db,Ib=wu.AUTOMATION_LOG+Be,bu=wu.APP_BACKUP+Be;async function Eu(){let e=Nt.context.getProdAppDB(),t=`function(doc) {
|
|
11
|
+
if (doc._id.startsWith("${Ib}")) {
|
|
12
|
+
let autoId = doc.automationId + "${Be}"
|
|
13
|
+
let status = doc.status + "${Be}"
|
|
14
|
+
let autoKey = "${Ya.AUTOMATION}${Be}" + autoId + doc.createdAt
|
|
15
|
+
let statusKey = "${Ya.STATUS}${Be}" + status + doc.createdAt
|
|
16
|
+
let allKey = "${Ya.ALL}${Be}" + status + autoId + doc.createdAt
|
|
17
17
|
emit(statusKey)
|
|
18
18
|
emit(autoKey)
|
|
19
19
|
emit(allKey)
|
|
20
20
|
}
|
|
21
|
-
}`;await
|
|
22
|
-
if (doc._id.startsWith("${
|
|
23
|
-
let full = doc.appId + "${
|
|
24
|
-
full += doc.trigger.toLowerCase() + "${
|
|
25
|
-
full += doc.type.toLowerCase() + "${
|
|
26
|
-
emit("${
|
|
21
|
+
}`;await vu(e,t,Su.AUTOMATION_LOGS)}async function Ru(){let e=Nt.tenancy.getGlobalDB(),t=`function(doc) {
|
|
22
|
+
if (doc._id.startsWith("${bu}") && doc.type && doc.trigger) {
|
|
23
|
+
let full = doc.appId + "${Be}"
|
|
24
|
+
full += doc.trigger.toLowerCase() + "${Be}"
|
|
25
|
+
full += doc.type.toLowerCase() + "${Be}"
|
|
26
|
+
emit("${bu}" + full + doc.timestamp)
|
|
27
27
|
}
|
|
28
|
-
}`;await
|
|
28
|
+
}`;await vu(e,t,Su.APP_BACKUP_BY_TRIGGER)}var Pu=require("@budibase/types");var Dr={};S(Dr,{GENERIC_PAGE_SIZE:()=>Ne,auditLogs:()=>Gt,licenses:()=>pe,quotas:()=>Ke,versions:()=>Ur});var pe={};S(pe,{CLOUD_FREE_LICENSE:()=>Sb,SELF_FREE_LICENSE:()=>Ja,UNLIMITED:()=>k,UNLIMITED_LICENSE:()=>wb});var at=require("@budibase/types");var Ke={};S(Ke,{UNLIMITED:()=>bb,appBackupRetentionDays:()=>qr,apps:()=>vr,automationLogRetentionDays:()=>Cr,automations:()=>Pr,budibaseAICredits:()=>Or,creators:()=>Rr,customAIConfigurations:()=>Lr,plugins:()=>xr,queries:()=>Tr,rows:()=>wr,userGroups:()=>_r,users:()=>Er});var te=require("@budibase/types"),bb=-1,wr=e=>({[te.StaticQuotaName.ROWS]:{name:"Rows",value:e,triggers:[90,100]}}),vr=e=>({[te.StaticQuotaName.APPS]:{name:"Apps",value:e,triggers:[100]}}),Er=e=>({[te.StaticQuotaName.USERS]:{name:"Users",value:e,triggers:[80,100]}}),Rr=e=>({[te.StaticQuotaName.CREATORS]:{name:"Creators",value:e,triggers:[]}}),_r=e=>({[te.StaticQuotaName.USER_GROUPS]:{name:"User Groups",value:e,triggers:[80,100]}}),xr=e=>({[te.StaticQuotaName.PLUGINS]:{name:"Plugins",value:e,triggers:[90,100]}}),Tr=e=>({[te.MonthlyQuotaName.QUERIES]:{name:"Queries",value:e,triggers:[]}}),Pr=e=>({[te.MonthlyQuotaName.AUTOMATIONS]:{name:"Automations",value:e,triggers:[80,90,100]}}),Or=e=>({[te.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:{name:"Budibase AI Credits",value:e,triggers:[80,90,100]}}),Cr=e=>({[te.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS]:{name:"Automation Logs",value:e,triggers:[]}}),qr=e=>({[te.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS]:{name:"App Backups",value:e,triggers:[]}}),Lr=e=>({[te.StaticQuotaName.AI_CUSTOM_CONFIGS]:{name:"Custom AI Configuration",value:e,triggers:[]}});var k=-1,Sb={features:[],quotas:{usage:{monthly:{...Tr(k),...Pr(200),...Or(0)},static:{...vr(k),...wr(2e3),...Er(5),...Rr(5),..._r(0),...xr(10),...Lr(0)}},constant:{...Cr(1),...qr(0)}},plan:{type:at.PlanType.FREE,usesInvoicing:!1,model:at.PlanModel.PER_USER}},Ja={features:[],quotas:{usage:{monthly:{...Tr(k),...Pr(k),...Or(0)},static:{...wr(k),...vr(k),...Er(20),...Rr(k),..._r(0),...xr(10),...Lr(0)}},constant:{...Cr(1),...qr(0)}},plan:{type:at.PlanType.FREE,usesInvoicing:!1,model:at.PlanModel.PER_USER}},wb={features:[],quotas:{usage:{monthly:{...Tr(k),...Pr(k),...Or(k)},static:{...vr(k),...wr(k),...Er(k),...Rr(k),..._r(k),...xr(k),...Lr(k)}},constant:{...Cr(k),...qr(k)}},plan:{type:at.PlanType.FREE,usesInvoicing:!1,model:at.PlanModel.PER_USER}};var Ur={};S(Ur,{getLicenseVersion:()=>vb,getProVersion:()=>xu});var At=require("@budibase/backend-core"),Pn=O(require("fs")),_u=O(require("path")),vb=()=>{if(At.env.isDev()){let e="dev-version.txt",t=_u.default.join(At.objectStore.budibaseTempDir(),e);if(Pn.default.existsSync(t))return Pn.default.readFileSync(t,"utf8");{let r=At.utils.newid();return Pn.default.writeFileSync(t,r),r}}else return xu()},xu=()=>{let e=At.env.VERSION;if(!e)throw new Error("No budibase pro version was specified");return e};var Gt={};S(Gt,{searchTable:()=>Eb});var ht=require("@budibase/types"),Tu=require("@budibase/backend-core");function Eb(){return{type:"table",sourceType:ht.TableSourceType.INTERNAL,name:ht.AUDIT_LOG_TYPE,sourceId:Tu.SQS_DATASOURCE_INTERNAL,primary:["_id"],schema:{metadata:{name:"metadata",type:ht.FieldType.JSON},fallback:{name:"fallback",type:ht.FieldType.JSON}}}}var Ne=9;var Rb=new Date(864e13).toISOString(),_b=1e3*60*60*24;async function On(e){let r=(await xe.getCachedLicense()).quotas?.[Pu.QuotaType.CONSTANT]?.[e]?.value||0;return r===pe.UNLIMITED?new Date(Rb).toISOString():new Date(new Date().getTime()-_b*r).toISOString()}async function Cu(){return On(Ou.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS)}var za=`${N.db.DocumentType.APP_BACKUP}${N.db.SEPARATOR}`;async function xb(e,t,r={}){let n=await Cu(),a=N.db.getProdAppID(e),o=a,i=a;if(t.trigger&&t.type){let s=`${N.db.SEPARATOR}${t.trigger}`;s+=`${N.db.SEPARATOR}${t.type}`,o+=s,i+=s}return(!t.startDate||t.startDate<n)&&(t.startDate=n),t.startDate&&(i+=`${N.db.SEPARATOR}${t.startDate}`),t.endDate&&(o+=`${N.db.SEPARATOR}${t.endDate}`),{...r,descending:!0,startkey:`${za}${o}${N.db.UNICODE_MAX}`,endkey:`${za}${i}`}}async function qu(e,t){try{let r=N.db.getQueryIndex(N.db.ViewName.APP_BACKUP_BY_TRIGGER);return await e.query(r,t)}catch(r){if(r!=null&&r.error==="not_found")return await Ru(),qu(e,t);throw r}}function Lu(e,t){return`${za}${e}${N.db.SEPARATOR}${t}`}async function Tb(e,t={}){let r=N.tenancy.getGlobalDB(),n,a=t.limit||9,o=await xb(e,t,{include_docs:!0,limit:a+1});t.page&&(o.startkey=t.page),!t.trigger||!t.type?n=await r.allDocs(o):n=await qu(r,o);let i=Sr(n,{paginate:t.paginate,pageSize:a}),s=[...new Set(i.data.filter(f=>f.createdBy).map(f=>f.createdBy))],c=await N.users.bulkGetGlobalUsersById(s,{cleanup:!0});for(let f of c)for(let m of i.data)f?._id===m.createdBy&&(m.createdBy=f);return i}async function Pb(e,t={}){let r=N.tenancy.getGlobalDB(),n=N.db.getProdAppID(e.appId),a=Lu(n,e.timestamp),o={...e,_id:a,appId:n,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=N.db.getGlobalIDFromUserMetadataID(e.createdBy)),await r.put(o)}async function Ob(e,t){let r=N.tenancy.getGlobalDB(),n=await r.get(e);return n.name=t,await r.put(n)}async function Cb(e){let t=N.tenancy.getGlobalDB(),r=await t.get(e);await t.remove(r._id,r._rev)}async function qb(e){return await N.tenancy.getGlobalDB().get(e)}var It={};S(It,{get:()=>Ub,getCacheEnvVarID:()=>Bu,getEnvVarID:()=>Cn,update:()=>Db});var Te=require("@budibase/backend-core"),Du=O(require("lru-cache")),Lb=1e3,Uu=new Du.default({max:Lb});function Cn(){return Te.StaticDatabases.GLOBAL.docs.environmentVariables}function Bu(e){return`${Te.tenancy.getTenantId()}/${Cn()}/${e||""}`}async function Ub(){let e=Cn(),t=Te.tenancy.getGlobalDB(),r,n=!1;try{r=await t.get(e)}catch(s){if(s.status==404)n=!0;else throw s}let a=Bu(r?._rev),o=Uu.get(a);if(o)return o;let i;return!n&&r?i={...r,variables:JSON.parse(Te.encryption.decrypt(r.variables,Te.encryption.SecretOption.ENCRYPTION))}:i={_id:e,variables:{}},Uu.set(a,i),i}async function Db(e){let t=Cn();return await Te.tenancy.getGlobalDB().put({_id:e._id||t,_rev:e._rev||void 0,variables:Te.encryption.encrypt(JSON.stringify(e.variables),Te.encryption.SecretOption.ENCRYPTION)})}var Ln=new Qa(P.env.ACCOUNT_PORTAL_URL),Un=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{}},Nu=async e=>{let t,r;if(P.env.SELF_HOSTED){if(t=await Ie.get(),!t.licenseKey)return;r={[P.constants.Header.LICENSE_KEY]:t.licenseKey}}else{let n=P.tenancy.getTenantId();r={[P.constants.Header.API_KEY]:P.env.ACCOUNT_PORTAL_API_KEY,[P.constants.Header.TENANT_ID]:n}}return e(r)},Gu=async()=>Nu(async e=>{let t=await De.getQuotaUsage();if(t.usageQuota.users==null){let s=await P.users.getUserCount();console.info(`Syncing user count quota to ${s}`),t.usageQuota.users=s,await De.setUsage(s,qn.StaticQuotaName.USERS,qn.QuotaUsageType.STATIC)}let r=await P.installation.getInstallFromDB(),n=P.tenancy.getTenantId(),a=await P.events.identification.getUniqueTenantId(n),o=Ur.getProVersion(),i={quotaUsage:t,tenantId:n,install:{id:r.installId,tenantId:a,version:o}};try{let s=await Ln.post("/api/license",{headers:{...e},body:i});if(s.status===404||s.status===403)return;if(s.status!==200){let c=await Un(s);throw new P.HTTPError(`Error getting license: ${c}`,s.status)}return s.json()}catch(s){if(P.env.DISABLE_ACCOUNT_PORTAL)return;throw s}});P.env.isJest()&&(Gu=jest.fn());var Mt=Gu;async function Xa(e){let t;try{t=await Ln.get("/api/license",{headers:{[P.constants.Header.LICENSE_KEY]:e}})}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 Un(t);throw new P.HTTPError(`Error getting license: ${r}`,t.status)}return t.json()}}var Bb=e=>Nu(async t=>{let r=await Ln.post("/api/license/usage/triggered",{headers:{...t},body:e});if(r.status!==200){let n=await Un(r);P.logging.logAlert(`Error triggering quota usage: ${n}`)}}),Za=async e=>{let t=await P.installation.getInstall(),r={installVersion:t.version,installId:t.installId},n=await Ln.post("/api/license/activate",{headers:{[P.constants.Header.LICENSE_KEY]:e},body:r});if(n.status===403)throw new P.HTTPError("Invalid license key",400);if(n.status!==200){let a=await Un(n);throw new P.HTTPError(`Error activating license key: ${a}`,n.status)}return n.json()};var Bo=require("@budibase/backend-core");var zn={};S(zn,{activateOfflineLicenseToken:()=>bx,deleteOfflineLicenseToken:()=>Sx,dev:()=>an,enrichLicense:()=>Pd,getIdentifier:()=>qo,getIdentifierBase64:()=>wx,getIdentifierFromBase64:()=>vx,getOfflineLicense:()=>Lo,getOfflineLicenseToken:()=>_d,signing:()=>Gr,verifyExpiry:()=>xd,verifyInstallation:()=>Td});var Gr={};S(Gr,{sign:()=>Gb,verifyLicenseToken:()=>Nr});var eo=O(require("jsonwebtoken")),Nb=`-----BEGIN PUBLIC KEY-----
|
|
29
29
|
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvz3jePLCFBXZ19c8Dpkv
|
|
30
30
|
XtSgOhKFOcvQdo/LV0KJRUzQWDPWuO4ILtBtnqhjtIzZH4CH0qCYBet5L6Qr4CM1
|
|
31
31
|
l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
|
|
@@ -34,11 +34,11 @@ l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
|
|
|
34
34
|
d/o3ZWE1TTj1zYwlCLN5qRKr3hU8nC3xEYNEbkB9SfTRaOq9Q7P8WmfLkoCPm3pR
|
|
35
35
|
mwIDAQAB
|
|
36
36
|
-----END PUBLIC KEY-----
|
|
37
|
-
`;function Nr(e){return eo.default.verify(e,Bb,{algorithms:["RS256"]})}function Nb(e,t){return eo.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}var Un={};S(Un,{getFeatures:()=>to});var l=require("@budibase/types");var Gb={[l.PlanType.FREE]:[...pe.SELF_FREE_LICENSE.features],[l.PlanType.PREMIUM]:void 0,[l.PlanType.PREMIUM_PLUS]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.CUSTOM_APP_SCRIPTS],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.CUSTOM_APP_SCRIPTS],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.CUSTOM_APP_SCRIPTS]},Mb={[l.PlanType.FREE]:[...pe.CLOUD_FREE_LICENSE.features],[l.PlanType.PREMIUM]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS],[l.PlanType.PREMIUM_PLUS]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.BUDIBASE_AI],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.BUDIBASE_AI],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.BRANDING],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.BRANDING],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.CUSTOM_APP_SCRIPTS],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.CUSTOM_APP_SCRIPTS],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.CUSTOM_APP_SCRIPTS]};function to(e,t){let r=[];function n(a){let o=a[t];if(!o)throw new Error(`Features do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case l.Hosting.SELF:r=n(Gb);break;case l.Hosting.CLOUD:r=n(Mb);break}return r}var Dn={};S(Dn,{UNLIMITED:()=>d,getQuotas:()=>ro});var B=require("@budibase/types");var p=Ke,Bu=pe,d=-1,Mr=e=>e*1e6,kb={[B.PlanType.FREE]:{...Bu.CLOUD_FREE_LICENSE.quotas},[B.PlanType.PREMIUM]:{usage:{monthly:{...p.queries(d),...p.automations(1e3),...p.budibaseAICredits(0)},static:{...p.rows(1e4),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(0),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[B.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...p.queries(d),...p.automations(5e3),...p.budibaseAICredits(Mr(2))},static:{...p.rows(25e3),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(0),...p.plugins(d),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[B.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...p.queries(d),...p.automations(5e3),...p.budibaseAICredits(Mr(2))},static:{...p.rows(25e3),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(0),...p.plugins(d),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[B.PlanType.PRO]:{usage:{monthly:{...p.queries(d),...p.automations(1e3),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(5),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[B.PlanType.TEAM]:{usage:{monthly:{...p.queries(d),...p.automations(5e3),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(10),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(90)}},[B.PlanType.BUSINESS]:{usage:{monthly:{...p.queries(d),...p.automations(1e4),...p.budibaseAICredits(0)},static:{...p.rows(5e4),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(50),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(365),...p.appBackupRetentionDays(365)}},[B.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(Mr(4))},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(d),...p.plugins(d),...p.customAIConfigurations(d)}},constant:{...p.automationLogRetentionDays(d),...p.appBackupRetentionDays(d)}},[B.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(Mr(4))},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(d),...p.plugins(d),...p.customAIConfigurations(d)}},constant:{...p.automationLogRetentionDays(15),...p.appBackupRetentionDays(15)}},[B.PlanType.ENTERPRISE]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(Mr(4))},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(d),...p.plugins(d),...p.customAIConfigurations(d)}},constant:{...p.automationLogRetentionDays(d),...p.appBackupRetentionDays(d)}}},Fb={[B.PlanType.FREE]:{...Bu.SELF_FREE_LICENSE.quotas},[B.PlanType.PREMIUM]:void 0,[B.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(0),...p.plugins(d),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[B.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(0),...p.plugins(d),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[B.PlanType.PRO]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(5),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[B.PlanType.TEAM]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(10),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(90)}},[B.PlanType.BUSINESS]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(50),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(90),...p.appBackupRetentionDays(365)}},[B.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(d),...p.plugins(d),...p.customAIConfigurations(d)}},constant:{...p.automationLogRetentionDays(d),...p.appBackupRetentionDays(d)}},[B.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(d),...p.plugins(d),...p.customAIConfigurations(d)}},constant:{...p.automationLogRetentionDays(15),...p.appBackupRetentionDays(15)}},[B.PlanType.ENTERPRISE]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(d),...p.plugins(d),...p.customAIConfigurations(d)}},constant:{...p.automationLogRetentionDays(d),...p.appBackupRetentionDays(d)}}};function ro(e,t){let r;function n(a){let o=a[t];if(!o)throw new Error(`Quotas do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case B.Hosting.SELF:r=n(Fb);break;case B.Hosting.CLOUD:r=n(kb);break}return JSON.parse(JSON.stringify(r))}var Ft={};S(Ft,{appExists:()=>Qb,encoding:()=>kt});var Nu=require("@budibase/backend-core");async function Qb(e){return(await Nu.db.getAllApps({all:!0,idsOnly:!0})).includes(e)}var kt={};S(kt,{base64ToObject:()=>Wb,objectToBase64:()=>jb});function jb(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}function Wb(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}var bd=require("@budibase/types"),er=require("@budibase/backend-core"),Sd=O(Zc()),wd=O(Co());async function Ix(e){await he.save({offlineLicenseToken:e}),await St()}async function bx(){await he.save({offlineLicenseToken:void 0}),await St()}async function vd(){return(await he.get()).offlineLicenseToken}async function qo(){let t=(await er.installation.getInstall()).installId,r=er.context.getTenantId(),n=await er.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:n}}async function Sx(){let e=await qo();return kt.objectToBase64(e)}function wx(e){return kt.base64ToObject(e)}function Ed(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 Rd(e){let t=await qo();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}function _d(e){let t=e.plan.type,r=bd.Hosting.SELF,n=to(r,t),a=ro(r,t);return e.features=(0,Sd.default)(e.features,n),e.quotas=(0,wd.default)(e.quotas,a),e}async function Lo(){try{let e=await vd();if(e){let t=await Nr(e);return Ed(t),await Rd(t),_d(t)}}catch(e){console.error("Error retrieving offline license",e)}}var an={};S(an,{deleteDevLicense:()=>xx,getOfflineLicense:()=>Rx,writeDevLicenseToDisk:()=>_x});var xd=require("@budibase/backend-core"),Do=require("path"),Td=require("os"),wt=O(require("fs"));var vx=xd.env.isTest()?".budibase-test":".budibase",Uo=(0,Do.join)((0,Td.tmpdir)(),vx),Ex="dev_license.txt",nn=(0,Do.join)(Uo,Ex);if(!wt.default.existsSync(Uo))try{wt.default.mkdirSync(Uo)}catch{}function Rx(){try{if(wt.default.existsSync(nn)){let e=wt.default.readFileSync(nn,{encoding:"utf-8"});return Nr(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}function _x(e){console.log(`Writing license to: ${nn}`),wt.default.writeFileSync(nn,e,{encoding:"utf-8"})}function xx(){wt.default.rmSync(nn,{force:!0})}var No=async()=>{if(Bo.env.OFFLINE_MODE)return Lo();let e=await Mt();return e||(e=an.getOfflineLicense()),e},Go=e=>Xa(e),Mo=()=>Bo.env.SELF_HOSTED?pe.SELF_FREE_LICENSE:pe.CLOUD_FREE_LICENSE;var Fo={};S(Fo,{activateLicenseKey:()=>Tx,deleteLicenseKey:()=>Px,getLicenseKey:()=>ko});async function Tx(e){await Za(e),await he.save({licenseKey:e}),await St()}async function ko(){return(await he.get()).licenseKey}async function Px(){await he.save({licenseKey:void 0}),await St()}var on=require("@budibase/backend-core"),zn=O(require("dd-trace")),Pd=3600,St=async()=>{await qd(),await Cd()},Od=async(e,t)=>{let{populateLicense:r=No,populateFreeLicense:n=Mo}=t||{};return await zn.default.trace("getCachedLicense",async a=>{let o=on.tenancy.getTenantId(),i=await Ma(),s=await i.get(o);return a.addTags({tenantId:o,foundInCache:!!s}),s||(s=await zn.default.trace("populateLicense",async()=>await r(o)),a.addTags({populatedLicense:!!s}),s||(s=zn.default.trace("populateFreeLicense",()=>n(e,o)),a.addTags({populatedFreeLicense:!!s})),s.refreshedAt=new Date().toISOString(),a.addTags({refreshedAt:s.refreshedAt,expirySeconds:Pd}),await i.store(o,s,Pd),s)})};on.env.isJest()&&(Od=jest.fn());var Cd=Od,qd=async()=>{let e=on.tenancy.getTenantId();await(await Ma()).delete(e)};async function X(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 Xn(e,t){if(!await X(e,t))throw new Ye.FeatureDisabledError(`${e} is not currently enabled`,e)}async function Qo(e,t){if(!await X(e,t)){let r=e.join(", ");throw new Ye.FeatureDisabledError(`${r} are not currently enabled`,r)}}function le(e){return async(...t)=>(await Xn(z.Feature.APP_BACKUPS),e(...t))}async function jo(){return X(z.Feature.APP_BACKUPS)}async function Wo(){return X(z.Feature.BRANDING)}async function Ld(){return X(z.Feature.ENFORCEABLE_SSO)}async function Cx(){return X(z.Feature.SYNC_AUTOMATIONS)}async function qx(){return X(z.Feature.TRIGGER_AUTOMATION_RUN)}async function vt(){return X(z.Feature.APP_BUILDERS)}async function Zn(){return X(z.Feature.AUDIT_LOGS)}async function $o(){return X(z.Feature.USER_GROUPS)}async function He(){return X(z.Feature.EXPANDED_PUBLIC_API)}async function Lx(e){if(Ye.env.ENABLE_SSO_MAINTENANCE_MODE||!await Ld())return!1;let r;return e?.config?r=e.config:r=await Ye.configs.getSettingsConfig(),!!r.isSSOEnforced}var Vo=async()=>{let e=z.Feature.SCIM,t=await X(e),r=await Ye.configs.getSCIMConfig();if(!t||!r?.enabled)throw new Ye.FeatureDisabledError(`${e} is not currently enabled`,e);return!0};async function Ux(){return X(z.Feature.VIEW_PERMISSIONS)}async function Dx(){return X(z.Feature.VIEW_READONLY_COLUMNS)}async function sn(){return X(z.Feature.BUDIBASE_AI)}async function Ko(){return X(z.Feature.AI_CUSTOM_CONFIGS)}var Bx={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 Nx(e){return await Wo()?{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}:Bx}var Yo={};S(Yo,{enrichAIConfig:()=>Mx});var Gx="budibase_ai";async function Mx(e){return await sn()&&(e.config[Gx]={provider:"OpenAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),isBudibaseAI:!0,defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-4o-mini",apiKey:process.env.OPENAI_API_KEY,name:"Budibase AI"}),e}var ke={};S(ke,{addApp:()=>Wx,addAutomation:()=>Jx,addCustomAIConfig:()=>zx,addGroup:()=>Jo,addPlugin:()=>Xo,addRow:()=>Vx,addRows:()=>Yx,addUsers:()=>ra,bustCache:()=>su,decrement:()=>Te,decrementMany:()=>Rt,getCurrentUsageValues:()=>cu,getLicensedQuota:()=>Dd,getQuotaUsage:()=>yt,increment:()=>fe,incrementBudibaseAICredits:()=>ts,incrementMany:()=>Et,removeApp:()=>$x,removeCustomAIConfig:()=>Xx,removeCustomAIConfigs:()=>Zx,removeGroup:()=>zo,removePlugin:()=>Zo,removeRow:()=>Kx,removeRows:()=>Hx,removeUsers:()=>ar,set:()=>Ho,setAllUsage:()=>Va,setAppUsageValue:()=>$a,setUsage:()=>iu,setUsagePerApp:()=>uu,updatePluginCount:()=>es,updateUsage:()=>tr,usageLimitIsExceeded:()=>jx,utils:()=>Ir});var Y=require("@budibase/types");var de=require("@budibase/backend-core");var fe=(e,t,r)=>Ud({change:1,name:e,type:t,opts:r}),Et=e=>Ud(e),Ud=async e=>{let t=Array.isArray(e)?e:[e];await tr(t.map(n=>({usageChange:n.change,name:n.name,type:n.type,opts:{dryRun:!0,suppressErrorLog:n.opts?.suppressErrorLog,id:n.opts?.id}})));let r=[];for(let n of t){let a=n.opts?.fn;a&&r.push(await a())}return await tr(t.map(n=>({usageChange:n.change,name:n.name,type:n.type,opts:{dryRun:!1,valueFn:n.opts?.valueFn,suppressErrorLog:n.opts?.suppressErrorLog,id:n.opts?.id}}))),r[0]},Te=(e,t,r={})=>tr({usageChange:-1,name:e,type:t,opts:r}),Rt=e=>{let t=Array.isArray(e)?e:[e];return tr(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},Ho=async(e,t,r)=>Ue.setUsage(r,e,t),kx=(e,t,r)=>{if(e==Y.QuotaUsageType.STATIC){let n=r.usageQuota.triggers;return n?n[t]||{}:{}}else{let n=Ue.utils.getCurrentMonthString(),a=r.monthly[n].triggers;return a?a[t]||{}:{}}},Fx=async(e,t,r,n)=>{try{await de.locks.doWithLock({type:Y.LockType.TRY_ONCE,name:Y.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let a={percentage:r,name:t.name};n&&(a.resetDate=n),await ot.triggerQuota(a)})}catch(a){de.logging.logAlert("Error triggering quota",a)}},Qx=async(e,t,r,n)=>{let a=await yt(),o=e===Y.QuotaUsageType.MONTHLY?a.quotaReset:void 0,i=await kx(e,t,a),s=n.triggers,c=r/n.value*100;c>100&&(c=100);for(let[f,m]of s.entries())if(c>=m&&n.value!==Ke.UNLIMITED){if(!i[m]){i[m]=new Date().toISOString();let y=s[f+1]||100;(!(c>=y)||c===m)&&await Fx(t,n,c,o)}}else i[m]=void 0;return i},tr=async e=>{let t=de.tenancy.getTenantId(),r=Array.isArray(e)?e:[e],n=null,a,o=[],i={},s={},c={},f={};for(let g of r){try{n=de.context.getAppId()}catch{}if(Y.APP_QUOTA_NAMES.includes(g.name)&&!n)throw new Error("App context required for quota update");try{a=await Dd(Y.QuotaType.USAGE,g.name,g.type),o.push(a);let{total:h,app:E,breakdown:T}=await Ue.getCurrentUsageValues(g.type,g.name,g.opts?.id);h+=g.usageChange,E!=null&&(E+=g.usageChange),T!=null&&(T+=g.usageChange);let _={};if(g.opts?.dryRun||(_=await Qx(g.type,g.name,h,a),f={...f,[g.name]:_}),a.value!==Ke.UNLIMITED&&h>a.value&&g.usageChange>0)throw new de.UsageLimitError(`Licensed ${a.name} of ${a.value} has been exceeded`,a.name);if(h=Math.max(0,h),E&&(E=Math.max(0,E)),T&&(T=Math.max(0,T),c={...c,[g.name]:T}),!g.opts?.dryRun){let R=g.opts?.valueFn;R&&(h=await R(),E=h),i={...i,[g.name]:h},s={...s,[g.name]:E}}}catch(h){throw g.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${g.name}`,h),h}}let m=r.filter(g=>!g.opts?.dryRun).map(g=>({name:g.name,type:g.type,values:{total:i[g.name],app:s[g.name],breakdown:c[g.name],triggers:f[g.name]},opts:{...g.opts,tenantId:t}}));m.length>0&&await Ue.setAllUsage(m)},Dd=async(e,t,r)=>{let n=await _e.getCachedLicense();if(!n){let a=de.tenancy.getTenantId();throw new Error("License not found for tenant id "+a)}if(r&&(0,Y.isStaticQuota)(e,r,t))return n.quotas[e][r][t];if(r&&(0,Y.isMonthlyQuota)(e,r,t))return n.quotas[e][r][t];if((0,Y.isConstantQuota)(e,t))return n.quotas[e][t];throw new Error("Invalid quota type")},jx=async(e,t)=>{try{return await tr({usageChange:1,name:e,type:t,opts:{dryRun:!0}}),!1}catch(r){if(r.code===de.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw r}};var rr=require("@budibase/types"),Bd=require("@budibase/backend-core"),Nd=async()=>{let e=await Bd.db.getAllApps({dev:!0});return e?e.length:0},Wx=async(e,{appId:t}={})=>fe(rr.StaticQuotaName.APPS,rr.QuotaUsageType.STATIC,{fn:e,valueFn:Nd,id:t}),$x=async({appId:e}={})=>Te(rr.StaticQuotaName.APPS,rr.QuotaUsageType.STATIC,{valueFn:Nd,id:e});var Ge=require("@budibase/types"),Vx=async(e,{tableId:t}={})=>fe(Ge.StaticQuotaName.ROWS,Ge.QuotaUsageType.STATIC,{fn:e,id:t}),Kx=async({tableId:e}={})=>Te(Ge.StaticQuotaName.ROWS,Ge.QuotaUsageType.STATIC,{id:e}),Yx=async(e,t,{tableId:r}={})=>Et({change:e,name:Ge.StaticQuotaName.ROWS,type:Ge.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),Hx=async(e,{tableId:t}={})=>Rt({change:e,name:Ge.StaticQuotaName.ROWS,type:Ge.QuotaUsageType.STATIC,opts:{id:t}});var ta=require("@budibase/types"),Jx=async(e,{automationId:t}={})=>fe(ta.MonthlyQuotaName.AUTOMATIONS,ta.QuotaUsageType.MONTHLY,{fn:e,id:t});var nr=require("@budibase/types"),Jo=async e=>fe(nr.StaticQuotaName.USER_GROUPS,nr.QuotaUsageType.STATIC,{fn:e}),zo=async()=>Te(nr.StaticQuotaName.USER_GROUPS,nr.QuotaUsageType.STATIC);var ut=require("@budibase/types"),Xo=async e=>fe(ut.StaticQuotaName.PLUGINS,ut.QuotaUsageType.STATIC,{fn:e}),Zo=async()=>Te(ut.StaticQuotaName.PLUGINS,ut.QuotaUsageType.STATIC),es=async e=>Ho(ut.StaticQuotaName.PLUGINS,ut.QuotaUsageType.STATIC,e);var Me=require("@budibase/types"),un=require("@budibase/backend-core");var ra=async(e,t,r)=>{let n=[{change:e,name:Me.StaticQuotaName.USERS,type:Me.QuotaUsageType.STATIC,opts:{fn:r,valueFn:un.users.getUserCount}}];t>0&&n.push({change:t,name:Me.StaticQuotaName.CREATORS,type:Me.QuotaUsageType.STATIC,opts:{valueFn:un.users.getCreatorCount}});let a=await Et(n);return await Mt(),a},ar=async(e,t)=>{let r=[{change:e,name:Me.StaticQuotaName.USERS,type:Me.QuotaUsageType.STATIC,opts:{valueFn:un.users.getUserCount}}];t>0&&r.push({change:t,name:Me.StaticQuotaName.CREATORS,type:Me.QuotaUsageType.STATIC,opts:{valueFn:un.users.getCreatorCount}}),await Rt(r),await Mt()};var Pe=require("@budibase/types"),ts=async e=>Et({change:e,name:Pe.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:Pe.QuotaUsageType.MONTHLY}),zx=async()=>fe(Pe.StaticQuotaName.AI_CUSTOM_CONFIGS,Pe.QuotaUsageType.STATIC),Xx=async()=>Te(Pe.StaticQuotaName.AI_CUSTOM_CONFIGS,Pe.QuotaUsageType.STATIC),Zx=async e=>Rt({change:e,name:Pe.StaticQuotaName.AI_CUSTOM_CONFIGS,type:Pe.QuotaUsageType.STATIC});var Je={};S(Je,{addAppBuilder:()=>aT,db:()=>Fe,removeAppBuilder:()=>oT});var cn=require("@budibase/backend-core");var G={};S(G,{addAppBuilder:()=>ss,addUsers:()=>ns,adjustGroupCreatorsQuotas:()=>nT,cleanupApp:()=>rT,enrichUserRolesFromGroups:()=>tT,fetch:()=>pn,get:()=>xt,getBulk:()=>Wd,getGroupBuilderAppIds:()=>jd,getGroupRoleId:()=>eT,remove:()=>rs,removeAppBuilder:()=>is,removeUsers:()=>as,save:()=>or,updateGroupApps:()=>os});var v=require("@budibase/backend-core");var Gd=require("@budibase/backend-core"),na=class extends Gd.HTTPError{constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function Fd(e,t){try{let r=[];for(let s of e)if(s.roles){let c=s.roles[v.db.getProdAppID(t)];c&&r.push(c)}let n=await Promise.all(r.map(async s=>({[s]:await v.roles.roleToNumber(s)}))),a,o,i={};n.forEach(s=>{let[c,f]=Object.entries(s)[0];i[c]={roleId:c,roleNum:f}});for(let{roleId:s,roleNum:c}of Object.values(i))(o===void 0||c>o)&&(o=c,a=s);return a}catch(r){throw v.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}async function Qd(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await D.getBulk(e,{enriched:!1}),t}async function jd(e,t){if(!e.userGroups)return[];let r=await Qd(e.userGroups,t?.groups),n=t?.appId?v.db.getProdAppID(t?.appId):null,a=[];for(let o of r){let i=o.builder?.apps;n&&i?.includes(n)?a.push(n):n||(a=a.concat(i||[]))}return[...new Set(a)]}async function eT(e,t,r){if(!e.userGroups)return null;let n=await Qd(e.userGroups,r?.groups),a=v.db.getProdAppID(t);return e.roles?.[a]?e.roles[a]:(n=n.filter(o=>o?.roles?Object.keys(o.roles).includes(a):!1),await Fd(n,t))}async function tT(e){if(!e||!e.userGroups)return e;let t=await Wd(e.userGroups,{enriched:!1}),r=[];for(let a of t)a?.roles&&(r=r.concat(Object.keys(a.roles)));r=[...new Set(r)];for(let a of r)await v.context.doInAppContext(a,async()=>{if(e.roles[a])return;let o=await Fd(t,a);o&&(e.roles[a]=o)});let n=await jd(e,{groups:t});if(n.length&&!e.builder?.global){let a=e.builder?.apps||[];e.builder={apps:a.concat(n)}}return e}async function pn(){return await D.fetch()}async function xt(e){return await D.get(e)}async function Wd(e,t={enriched:!0}){return await D.getBulk(e,t)}async function Md(e){if(await D.getByName(e))throw new na(e)}async function kd(e){let t=await D.getGroupUsers(e._id);if(!t.length)return 0;let n=await v.tenancy.getGlobalDB().getMultiple(t.map(o=>o._id));return(await v.userUtils.creatorsInList(n)).filter(o=>o).length}async function or(e){let t=[],r=!e._id,n=0;if(delete e.users,!e._id)e._id=D.generateUserGroupID(),await Md(e.name),t.push(v.events.group.created(e));else{let o=await D.get(e._id);if(o.name!==e.name&&await Md(e.name),t.push(v.events.group.updated(e)),JSON.stringify(o.roles)!==JSON.stringify(e.roles)){let i=o.users?.length||0,s=0;i>0&&(s=await kd(o)),Object.values(e.roles).includes(v.roles.BUILTIN_ROLE_IDS.ADMIN)?n=i-s:n=-i,t.push(v.events.group.permissionsEdited(e))}}await Promise.all(t);let a=()=>D.save(e);if(r)return await Jo(a);{let o=await a();if(n>0)await ra(0,n);else if(n<0){let i=await kd(e),s=Math.abs(n)-i;s>0&&await ar(0,s)}return o}}async function rs(e,t){let r;try{r=await D.get(e)}catch{throw new Error("Group not found")}let n=Object.values(r.roles||{}).includes(v.roles.BUILTIN_ROLE_IDS.ADMIN),a=()=>{};if(n){let i=v.tenancy.getGlobalDB(),s=await D.getGroupUsers(e),f=(await Promise.all(s.map(h=>i.get(h._id)))).map(h=>({...h,userGroups:h.userGroups.filter(E=>E!==e)})),g=(await v.userUtils.creatorsInList(f)).filter(h=>h).length,y=s.length-g;y&&(a=()=>ar(0,y))}let o=await D.destroy(e,t);return await v.events.group.deleted(r),await zo(),await a(),o}async function ns(e,t){let r=await D.get(e),n=await v.users.bulkGetGlobalUsersById(t),a=[];for(let c of n)c.userGroups||(c.userGroups=[]),c.userGroups.includes(e)||a.push(c);if(!a.length)return a;let o=a.map(c=>({...c,userGroups:[...c?.userGroups||[],e]}));if(await v.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes(v.roles.BUILTIN_ROLE_IDS.ADMIN)){let f=(await v.userUtils.creatorsInList(a)).filter(g=>g).length,m=a.length-f;m&&await ra(0,m)}let s=[];for(let c of t)s.push(v.cache.user.invalidateUser(c));return await Promise.all(s),await v.events.group.usersAdded(o.length,r),o}async function as(e,t){let r=await D.get(e),n=await v.users.bulkGetGlobalUsersById(t),a=[];for(let s of n){if(!s.userGroups||!s.userGroups.includes(e))continue;let c=s.userGroups.indexOf(e);s.userGroups.splice(c,1),a.push(s)}if(await v.users.bulkUpdateGlobalUsers(a),Object.values(r.roles||{}).includes(v.roles.BUILTIN_ROLE_IDS.ADMIN)){let c=(await v.userUtils.creatorsInList(a)).filter(m=>m).length,f=a.length-c;f&&await ar(0,f)}let i=[];for(let s of t)i.push(v.cache.user.invalidateUser(s));return await Promise.all(i),a.length&&await v.events.group.usersDeleted(a.length,r),a}async function os(e,t){let r=await xt(e);if(r.roles||(r.roles={}),t.appsToAdd)for(let n of t.appsToAdd)r.roles[n.appId]=n.roleId;if(t.appsToRemove)for(let n of t.appsToRemove)delete r.roles[n.appId];return await or(r)}async function rT(e){let t=await pn(),r=[];for(let n of t)!n.roles||!n.roles[e]||(delete n.roles[e],r.push(n));return await D.bulkSave(r)}async function ss(e,t){if(!await vt())throw new Error("Feature not enabled, please check license");let r=v.db.getProdAppID(t),n=await xt(e);n.builder??={apps:[]},n.builder.apps.includes(t)||(n.builder.apps.push(r),await or(n))}async function is(e,t){if(!await vt())throw new Error("Feature not enabled, please check license");let r=v.db.getProdAppID(t),n=await xt(e);n.builder?.apps.includes(t)&&(n.builder.apps=n.builder.apps.filter(a=>a!==r),await or(n))}async function nT(){if(!await $o()){let e=v.tenancy.getGlobalDB(),r=(await pn()||[]).filter(n=>Object.values(n?.roles||{}).includes(v.roles.BUILTIN_ROLE_IDS.ADMIN));for(let n of r){let a=await D.getGroupUsers(n._id),i=(await Promise.all(a.map(m=>e.get(m._id)))).map(m=>({...m,userGroups:m.userGroups.filter(g=>g!==n._id)})),c=(await v.userUtils.creatorsInList(i)).filter(m=>m).length,f=a.length-c;await D.save({...n,roles:{}}),f&&await ar(0,f)}}}cn.users.UserDB.init(ke,G,Se);var Fe=cn.users.UserDB;async function aT(e,t){if(!await vt())throw new Error("Feature not enabled, please check license");await cn.users.addAppBuilder(e,t)}async function oT(e,t){if(!await vt())throw new Error("Feature not enabled, please check license");await cn.users.removeAppBuilder(e,t)}var oa={};S(oa,{logs:()=>ms});var ms={};S(ms,{logSearch:()=>gT,oldestLogDate:()=>zd,storeLog:()=>mT});var Jd=require("@budibase/types"),aa=require("@budibase/backend-core");var pt=require("@budibase/types");var K=require("@budibase/backend-core");var $d=require("@budibase/backend-core");async function Vd(e,t){let r,n=5,a=!1,o,i=!0;for(;n>0;n--)try{i?o=await e():o=await exports.randomDelay(e),a=!0;break}catch(s){r=s}return a||$d.logging.logWarn(`Failed to backoff: ${t}`,r),o}var{SEPARATOR:ze,UNICODE_MAX:sT,DocumentType:Kd,AutomationViewMode:us,ViewName:iT,getQueryIndex:uT}=K.db,pT=new Date(0).toISOString(),cT=100,ps=async()=>Pn(pt.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS);function Yd(e,t,{status:r,automationId:n}={},a={}){let o=n?`${n}${ze}`:"",i=r?`${r}${ze}`:"",s;return r&&n?s=`${us.ALL}${ze}${i}${o}`:r?s=`${us.STATUS}${ze}${i}`:n?s=`${us.AUTOMATION}${ze}${o}`:s=`${Kd.AUTOMATION_LOG}${ze}`,{...a,descending:!0,startkey:`${s}${t}${sT}`,endkey:`${s}${e}`}}function cs(e){let t=pt.AutomationStatus.SUCCESS,r=!0;for(let n of e.steps){let a=n.outputs?.status?.toLowerCase(),o=a==="stopped_error";if(r&&!o){r=!1;continue}if(o){t=pt.AutomationStatus.STOPPED_ERROR;break}else if(n.outputs?.success){if(a==="stopped"){t=pt.AutomationStatus.STOPPED;break}}else{t=pt.AutomationStatus.ERROR;break}}return t}function lT(e,t,r){return`${Kd.AUTOMATION_LOG}${ze}${e}${ze}${r}${ze}${t}`}async function ls(e,t,r={docs:!0}){let n=K.context.getProdAppDB();await n.exists()||(n=K.context.getDevAppDB());let a={status:r.status},o=r?.limit?r.limit:r?.paginate?9+1:void 0,i=Yd(e,t,a,{include_docs:r.docs,limit:o});r?.page&&(i.startkey=r.page);let s=await n.allDocs(i);return Sr(s,{paginate:r?.paginate,pageSize:9})}async function ds(e,t,r={}){let n=K.context.getProdAppDB();await n.exists()||(n=K.context.getDevAppDB());let a;try{let o={automationId:r?.automationId,status:r?.status},i=Yd(e,t,o,{include_docs:!0,limit:9+1});r?.page&&(i.startkey=r.page),a=await n.query(uT(iT.AUTOMATION_LOGS),i)}catch(o){if(o!=null&&(o.name==="not_found"||o.error==="not_found"))return await Su(),ds(e,t,r);throw o}return Sr(a,{paginate:!0,pageSize:9})}async function Hd(e,t){let r=K.context.getProdAppDB(),n=e._id,a=e.name,o=cs(t),i=new Date().toISOString(),s=lT(i,o,n),c={...t,automationId:n,status:o,automationName:a,createdAt:i,_id:s};return await r.put(c),s}async function fs(e,{clearing:t}={clearing:!1}){let r=K.context.getProdAppDB();await Vd(async()=>{let n=await r.get(K.db.DocumentType.APP_METADATA);for(let a of e){let o=a.split(K.db.SEPARATOR),i=`${o[o.length-3]}${K.db.SEPARATOR}${o[o.length-2]}`,s={};n.automationErrors&&(s=n.automationErrors),Array.isArray(s[i])||(s[i]=[]);let c=s[i].indexOf(a);t&&c!==-1?s[i].splice(c,1):s[i].push(a),s[i].length===0&&delete s[i],n.automationErrors=s}await r.put(n),await K.cache.app.invalidateAppMetadata(n.appId,n)},"Failed to update app metadata with automation log error")}async function dT(){let e=await ps();try{return await ls(pT,e,{docs:!1,paginate:!1,limit:cT})}catch{return{data:[],hasNextPage:!1}}}async function gs(){let e=K.context.getProdAppDB();try{let t=await dT();if(!t.data||t.data.length===0)return;let r=t.data.map(a=>({_id:a.id,_rev:a.value.rev,_deleted:!0})),n=t.data.filter(a=>{let o=a.id.split(K.db.SEPARATOR);return o[o.length-1]===pt.AutomationStatus.ERROR}).map(a=>a.id);await e.bulkDocs(r),n.length&&await fs(n,{clearing:!0})}catch(t){K.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}var zd=ps;async function fT(e,t,r,n){let a,o=new Date().toISOString(),i=await zd();return(!e||e<i)&&(e=i),r||t?a=await ds(e,o,{automationId:r,status:t,page:n}):a=await ls(e,o,{status:t,page:n,docs:!0,paginate:!0}),a}async function gT(e){return await gs(),await fT(e.startDate,e.status,e.automationId,e.page)}async function mT(e,t){if(!aa.db.isProdAppID(aa.context.getAppId()))return;let r=cs(t),n=await Hd(e,t);r===Jd.AutomationStatus.ERROR&&await fs([n]),await gs()}var sa={};S(sa,{checkPluginQuotas:()=>hT,deletePlugin:()=>AT,storePlugin:()=>yT});var tf=require("@budibase/types"),j=require("@budibase/backend-core");var Xd=O(require("fs")),Zd=require("path");function ef(e,t){return Xd.default.readFileSync((0,Zd.join)(e,t),"utf8")}async function yT(metadata,directory,source){let db=j.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=j.objectStore.getPluginS3Dir(name),files=await j.objectStore.uploadDirectory(j.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=ef(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=j.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 j.events.plugin.imported(doc),{...doc,_rev:e.rev}};return rev?await write():await Xo(write)}async function AT(e){let t=j.tenancy.getGlobalDB();try{let r=await t.get(e),n=j.objectStore.getPluginS3Dir(r.name);await j.objectStore.deleteFolder(j.objectStore.ObjectStoreBuckets.PLUGINS,n),await t.remove(e,r._rev),await j.events.plugin.deleted(r),await Zo()}catch(r){let n=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${n}`)}}async function hT(){let e=j.tenancy.getGlobalDB();try{let r=(await e.allDocs(j.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await es(r)}catch(t){j.logging.logAlert("Unable to retrieve plugins for quota check",t)}}var Qe={};S(Qe,{fetch:()=>bT,fetchValues:()=>ST,isEncryptionKeyAvailable:()=>IT,isValid:()=>af,remove:()=>vT,update:()=>wT});var ln=require("@budibase/types"),rf=require("@budibase/backend-core");function IT(){return!!rf.env.ENCRYPTION_KEY}async function bT(){let e=await It.get();return Object.keys(e.variables)}async function ST(e){let r=(await It.get()).variables,n={};for(let[a,o]of Object.entries(r))switch(e){case ln.AppEnvironment.DEVELOPMENT:n[a]=o.development;break;case ln.AppEnvironment.PRODUCTION:default:n[a]=o.production;break}return n}async function nf(e){if(!(await Ne.cache.getCachedLicense()).features.includes(ln.Feature.ENVIRONMENT_VARIABLES))throw new Error("User does not have access to environment variables feature.");let r=await It.get();r.variables=e(r.variables),await It.update(r)}async function wT(e,t){if(af(e))await nf(n=>(n[e]=t,n));else throw new Error("Variable name has characters that are not allowed")}async function vT(e){await nf(t=>(delete t[e],t))}function af(e){return/^[a-zA-Z0-9-_]+$/.test(e)}var ct={};S(ct,{definitions:()=>UT,download:()=>LT,fetch:()=>qT,write:()=>OT});var ua=require("@budibase/types");var F=require("@budibase/backend-core"),Oe=require("@budibase/types");var of=require("memorystream"),sf=new F.sql.Sql(Oe.SqlClient.SQL_LITE);async function ET(e,t,r){let n={operation:Oe.Operation.READ,table:Gt.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:Oe.SortOrder.DESCENDING,type:Oe.SortType.STRING}}},a=sf._query(n);if(Array.isArray(a))throw new Error("Cannot execute multiple queries for audit log search");return{sql:a.sql,bindings:a.bindings}}function RT(e){return`${F.DocumentType.AUDIT_LOG}${F.SEPARATOR}${e}${F.SEPARATOR}${F.utils.newid()}`}async function uf(e){e._id||(e._id=RT(e.timestamp)),e.type||(e.type=Oe.AUDIT_LOG_TYPE);try{let r=await F.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){F.logging.logAlert("Failed to write audit log",t)}}async function ys(e,t,r){t||(t=1);let n=F.context.getAuditLogsDB();try{let a=9+1,o=await ET(e,t,a),i=Gt.searchTable(),s=sf.convertJsonStringColumns(i,await n.sql(o.sql,o.bindings)),c;s.length>a&&(c=s.pop());let f={rows:s,hasNextPage:!!c};return f.hasNextPage&&(f.bookmark=t+1),f}catch(a){if(a.status===404&&!r?.isRetry)return await _T(),await lu(),await ys(e,t,{isRetry:!0});throw a}}async function _T(){let e=F.context.getAuditLogsDB(),r=(await e.allDocs(F.db.getDocParams(F.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(n=>n.doc).filter(n=>n&&!n.type).map(n=>({...n,type:Oe.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}function pf(e){let t=F.context.getAuditLogsDB(),r=new of,n=t.dump(r,{filter:o=>{let i=o;if(!i._id?.startsWith(F.DocumentType.AUDIT_LOG))return!1;let s=!0,c=(f,m)=>{!f||f.length===0||(s=!!(s&&m&&f.includes(m)))};if(c(e.userIds,i.userId),c(e.appIds,i.appId),c(e.events,i.event),(e.startDate||e.endDate)&&(s=s&&i.timestamp>=e.startDate&&i.timestamp<=e.endDate),e.fullSearch){let f=JSON.stringify(o);s=s&&f.includes(e.fullSearch)}return s}}),a=new of;return r.on("data",o=>{let i=JSON.parse(Buffer.from(o).toString());if(Array.isArray(i.docs)){let s="";for(let c of i.docs)s+=JSON.stringify(c)+`
|
|
38
|
-
`;a.write(s)}}),r.on("end",()=>{a.end()}),{promise:n,stream:a}}var ae=require("@budibase/backend-core");var ia=require("@budibase/types"),dn=require("@budibase/string-templates"),fn=require("@budibase/backend-core"),TT=fn.constants.MIN_VALID_DATE.toISOString(),PT=fn.constants.MAX_VALID_DATE.toISOString();function As(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||TT,e.endDate=e.endDate||PT),e}async function cf(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(n=>fn.db.getProdAppID(n)));let t={};function r(n,a){a?.length&&(t.oneOf={...t.oneOf,[n]:a})}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=As(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}function hs(e,t,r){let n={_id:e,status:ia.AuditLogResourceStatus.DELETED};switch(t){case"app":n.name=r?.appName;break;case"user":n.email=r?.email;break}return n}function Is(e){let t=(0,dn.findHBSBlocks)(e);for(let r of t){let n=` "${r}"`;e=e.replace(e.includes(n)?n:` ${r}`,""),e=(0,dn.processStringSync)(e,{})}return e}function lf(e,t){let r=ia.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let n=(0,dn.processStringSync)(r,t);return n.includes('""')&&(n=Is(r)),n}async function OT(e,t,r){if(!await Zn()||!ae.utils.isAudited(e))return;let n=lf(e,t),a=new Date;r?.timestamp&&(a=new Date(r.timestamp));let o={timestamp:a.toISOString(),event:e,name:n,userId:r?.userId||ua.AuditLogSystemUser,metadata:{...t,...r?.hostInfo}},i={};try{if(r?.appId){o.appId=ae.db.getProdAppID(r.appId);let s=await ae.cache.app.getAppMetadata(r.appId);"name"in s&&(i.appName=s.name)}if(r?.userId){let s=await ae.users.getById(r?.userId);i.email=s.email}}catch(s){ae.logging.logAlert("Failed to retrieve fallback information for audit log",s)}return o.fallback=i,await uf(o)}async function CT(e){let t=e.map(s=>s.userId),n=e.filter(s=>s.appId).map(s=>ae.db.getDevAppID(s.appId)),a=await ae.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),o=await ae.db.getAppsByIDs([...new Set(n)]),i=[];for(let s of e){let c=a.find(g=>g?._id===s.userId),f=o.find(g=>ae.db.isSameAppID(g?.appId,s.appId)),m={event:s.event,timestamp:s.timestamp,name:s.name,metadata:s.metadata,user:c||hs(s.userId,"user",s.fallback)};s.appId&&(m.app=f||hs(s.appId,"app",s.fallback)),i.push(m)}return i}async function qT(e){if(!await Zn())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 ys(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await CT(r.rows)}}function LT(e){return e=As(e),pf(e)}function UT(){let e=Object.entries(ua.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=Is(r[1]);return t}var pa={};S(pa,{applications:()=>vs,roles:()=>Ss,users:()=>bs});var bs={};S(bs,{roleCheck:()=>BT});function DT(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 BT(e,t){return await He()||DT(e,t),e}var Ss={};S(Ss,{assign:()=>NT,unAssign:()=>GT});var gn=require("@budibase/backend-core");async function NT(e,t){if(!await He())throw new Error("Unable to assign roles - license required.");let r=await Fe.bulkGet(e);for(let n of r){if(t.role&&t.role.roleId){let a=gn.db.getProdAppID(t.role.appId);n.roles[a]=t.role.roleId}if(t.appBuilder){let a=gn.db.getProdAppID(t.appBuilder.appId),o=n.builder?.apps||[];n.builder={apps:o.concat([a])}}t.builder&&(n.builder={global:!0}),t.admin&&(n.admin={global:!0}),n.roles}await Fe.bulkUpdate(r)}async function GT(e,t){if(!await He())throw new Error("Unable to un-assign roles - license required.");let r=await Fe.bulkGet(e);for(let n of r){if(t.role){let a=gn.db.getProdAppID(t.role?.appId);n.roles[a]===t.role.roleId&&delete n.roles[a]}if(t.appBuilder&&n.builder?.apps){let a=gn.db.getProdAppID(t.appBuilder.appId);n.builder.apps=n.builder.apps.filter(o=>o!==a)}t.builder&&n.builder&&delete n.builder,t.admin&&n.admin&&delete n.admin}}var vs={};S(vs,{buildExportFn:()=>kT,buildImportFn:()=>MT});var ws=require("@budibase/backend-core");function MT(e){return async(t,r)=>{await He()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await ws.context.doInAppContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}function kT(e){return async(t,r)=>{await He()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:n,excludeRows:a}=t.request.body;await ws.context.doInAppContext(t.params.appId,async()=>{t.request.body={encryptPassword:n,excludeRows:a},t.query.appId=t.params.appId,await e(t),await r()})}}var je=require("@budibase/backend-core"),ne=require("@budibase/types");var Es=require("@budibase/backend-core"),df;function ff(){df=new Es.queue.BudibaseQueue(Es.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}function Tt(){return df}var gf=require("path"),mf=O(require("fs"));async function Rs(e,t={}){return Ie.storeAppBackupMetadata(e,t)}function yf(e){let t=new Date().toISOString();switch(e){case ne.AppBackupStatus.COMPLETE:case ne.AppBackupStatus.FAILED:return{timestamp:t,finishedAt:t};case ne.AppBackupStatus.STARTED:return{timestamp:t,startedAt:t};case ne.AppBackupStatus.PENDING:return{timestamp:t,createdAt:t}}}async function FT(e,t,r,n){let a=await ca(e);return await Ie.storeAppBackupMetadata({...a,...yf(t),contents:r,status:t,type:ne.AppBackupType.BACKUP},{filename:n,docId:e})}async function QT(e,t,r){let n=await ca(e);return await Ie.storeAppBackupMetadata({...n,...yf(r),status:r,type:ne.AppBackupType.RESTORE,trigger:ne.AppBackupTrigger.MANUAL},{docId:e,docRev:t})}async function ca(e){return Ie.getAppBackupMetadata(e)}async function jT(e,t){return Ie.updateAppBackupMetadata(e,t)}async function WT(e){let t=await Ie.getAppBackupMetadata(e);return t.filename&&await je.objectStore.deleteFile(je.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),Ie.deleteAppBackupMetadata(e)}async function $T(e,t){return Ie.fetchAppBackups(e,t)}async function Af(e){let t=await Ie.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let r=await je.objectStore.getReadStream(je.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}async function VT(e){let{stream:t}=await Af(e),r=(0,gf.join)(je.objectStore.budibaseTempDir(),je.utils.newid()),n=mf.default.createWriteStream(r);return new Promise((a,o)=>{t.on("error",o),n.on("error",o),t.pipe(n).on("close",()=>a(r))})}async function KT(e,t,r={}){let n;try{n=await Rs({appId:e,trigger:t,timestamp:new Date().toISOString(),status:ne.AppBackupStatus.PENDING,type:ne.AppBackupType.BACKUP,...r})}catch(a){if(a.status===409)return;throw a}return await Tt().add({docId:n.id,docRev:n.rev,appId:e,export:{trigger:t,...r}}),await je.events.backup.appBackupTriggered(e,n.id,ne.AppBackupType.BACKUP,t,r?.name),n.id}async function YT(e,t,r,n){let a=await ca(t),o;try{o=await Rs({appId:e,timestamp:new Date().toISOString(),status:ne.AppBackupStatus.PENDING,type:ne.AppBackupType.RESTORE,createdBy:n})}catch(i){if(i?.status===409)return;throw i}return await Tt().add({appId:e,docId:o.id,docRev:o.rev,import:{nameForBackup:r,backupId:t,createdBy:n}}),{restoreId:o.id,metadata:a}}var HT={isEnabled:jo,triggerAppRestore:le(YT),triggerAppBackup:le(KT),getBackupDownloadStream:le(Af),downloadAppBackup:le(VT),fetchAppBackups:le($T),storeAppBackupMetadata:le(Rs),updateBackupStatus:le(FT),updateRestoreStatus:le(QT),getAppBackup:le(ca),updateAppBackup:le(jT),deleteAppBackup:le(WT)},Xe=HT;var xs={};S(xs,{init:()=>_s});var W=require("@budibase/backend-core");var Ce=require("@budibase/types");var sr=O(require("fs"));async function _s(e){Tt().process(async t=>{let r=t.data;try{if(r.export)return XT(t,e);if(r.import)return zT(t,e)}catch(n){W.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,n)}})}async function JT(e){await W.db.getDB(e,{skip_setup:!0}).destroy()}async function hf(e,t,r,n){let a=W.db.getDevAppID(r),o=W.db.getProdAppID(r),i=new Date().toISOString(),s=async(c,f)=>{n?.doc?await Xe.updateBackupStatus(n.doc.id,c,f?.contents,f?.filename):await Xe.storeAppBackupMetadata({appId:o,timestamp:i,trigger:e,status:c,name:n?.name,type:Ce.AppBackupType.BACKUP,contents:f?.contents,createdBy:n?.createdBy},{filename:f?.filename})};try{let c=await n.processing.exportAppFn(a,{tar:!0}),f=await n.processing.statsFn(a),m=`${o}/backup-${i}.tar.gz`,g=W.objectStore.ObjectStoreBuckets.BACKUPS,y=sr.default.createReadStream(c);await W.objectStore.streamUpload({bucket:g,filename:m,stream:y,extra:{type:"application/gzip",metadata:{name:n?.name,trigger:e,timestamp:i,appId:o}}}),await s(Ce.AppBackupStatus.COMPLETE,{filename:m,contents:f}),sr.default.existsSync(c)&&sr.default.rmSync(c)}catch(c){W.logging.logAlert("App backup error",c),await s(Ce.AppBackupStatus.FAILED)}}async function zT(e,t){let r=e.data,n=r.appId,a=r.import.backupId,o=r.import.nameForBackup,i=r.import.createdBy,s=W.tenancy.getTenantIDFromAppID(n);return W.tenancy.doInTenant(s,async()=>{let c=W.db.getDevAppID(n),{rev:f}=await Xe.updateRestoreStatus(r.docId,r.docRev,Ce.AppBackupStatus.STARTED);await hf(Ce.AppBackupTrigger.RESTORING,s,n,{processing:t,createdBy:i,name:o});let m=await Xe.downloadAppBackup(a);await JT(c);let g=Ce.AppBackupStatus.COMPLETE;try{await t.importAppFn(c,W.db.getDB(c),{file:{type:"application/gzip",path:m},key:m})}catch(y){W.logging.logAlert("App restore error",y),g=Ce.AppBackupStatus.FAILED}await Xe.updateRestoreStatus(r.docId,f,g),sr.default.existsSync(m)&&sr.default.rmSync(m,{force:!0})})}async function XT(e,t){let r=e.data,n=r.appId,a=r.export.trigger,o=r.export.name,i=W.tenancy.getTenantIDFromAppID(n);await W.tenancy.doInTenant(i,async()=>{try{let{rev:s}=await Xe.updateBackupStatus(r.docId,Ce.AppBackupStatus.STARTED);return hf(a,i,n,{processing:t,doc:{id:r.docId,rev:s},name:o})}catch(s){W.logging.logAlert("App backup error",s)}})}var ZT=async e=>{ff(),await _s(e.processing)},we={...Xe,processing:xs,init:ZT,getBackupQueue:Tt};var If=async e=>{e.backups&&await we.init(e.backups)};var se={};S(se,{create:()=>VN,find:()=>$N,get:()=>WN,remove:()=>YN,update:()=>KN});var FA=O(wi()),Ze=require("@budibase/backend-core");var QA=require("@budibase/types");async function WN(e){let t=Ze.tenancy.getGlobalDB(),r=new Ze.db.QueryBuilder(t.name,QA.SearchIndex.USER);r.setIndexBuilder(Ze.db.searchIndexes.createUserIndex),r.setLimit(e.pageSize),r.addEqual("scimInfo.isSync",!0);for(let[a,o]of Object.entries(e.filters?.equal??{}))r.addEqual(a,o);r.setSort("_id"),r.setSkip(e.skip);let n=await r.run();return{users:n.rows,total:n.totalRows}}async function $N(e){return await Ze.users.getById(e)}async function VN(e){let t=await Fe.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new Ze.HTTPError("User is already synched",409);e={...t,scimInfo:(0,FA.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await Fe.save(e,{requirePassword:!1})}async function KN(e,t){return await Fe.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}async function YN(e){return await Fe.destroy(e)}var dr={};S(dr,{create:()=>HN});var jA=O(wi());var WA=require("@budibase/backend-core");async function HN(e){let t=await Ya(e.name),r;if(!t)r=(await G.save(e)).id;else{if(t.scimInfo?.isSync)throw new WA.HTTPError("Group is already synched",409);r=t._id,t.users&&(await G.removeUsers(r,t.users.map(a=>a._id)),delete t.users),t.scimInfo=(0,jA.default)(t.scimInfo,e.scimInfo),await G.save(t)}return await G.get(r)}var Ot={};S(Ot,{logRequest:()=>JN,logResponse:()=>zN});var vi=require("@budibase/backend-core");async function JN(e){vi.logging.logWarn("SCIM request log",e)}async function zN(e){vi.logging.logWarn("SCIM response error",e)}var Ti={};S(Ti,{doInScimContext:()=>Ri,feature:()=>M,internalGroupOnly:()=>Ra,licensing:()=>$A,requireSCIM:()=>_i,scimGroupOnly:()=>hn,scimUserOnly:()=>An});var lt=require("@budibase/backend-core");var va=require("@budibase/types"),XN=(e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(lt.env.SELF_HOSTED&<.env.DEFAULT_LICENSE)return t.user.license=Ja,r();t.user.license=await Ne.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(lt.utils.isServingApp(t)||lt.utils.isServingBuilder(t)||lt.utils.isServingBuilderPreview(t)||lt.utils.isPublicApiRequest(t))&&await ke.usageLimitIsExceeded(va.StaticQuotaName.USERS,va.QuotaUsageType.STATIC)}return r()},$A=XN;var M={};S(M,{requireFeature:()=>ZN,requireFeatures:()=>eG});var ZN=e=>async(t,r)=>{await Xn(e),await r()},eG=(...e)=>async(t,r)=>{await Qo(e),await r()};var Ea=require("@budibase/backend-core");var Ri=async(e,t)=>(Ea.env.DISABLE_SCIM_CALLS||await Ot.logRequest({...e.request.toJSON(),body:e.request.body}),await Ea.context.doInScimContext(async()=>{let r=await t();return await Ot.logResponse({...e.response.toJSON(),body:e.response.body}),r}));var _i=async(e,t)=>{await Vo(),await t()};var VA=require("@budibase/backend-core");var An=e=>xi(VA.users.getById,e,!0),hn=e=>xi(D.get,e,!0),Ra=e=>xi(D.get,e,!1);function xi(e,t,r){return async(n,a)=>{let o=n.params[t];return typeof o!="string"&&n.throw(404),!!(await e(o)).scimInfo?.isSync!==r&&n.throw(404),a()}}var $i={};S($i,{ai:()=>ih,appBackups:()=>Vh,auditLogs:()=>Bh,environmentVariables:()=>Th,groups:()=>Ih,scim:()=>wI,users:()=>xI});var Ui=require("@budibase/types");var Li={};S(Li,{getLLM:()=>Pa});var We=require("@budibase/backend-core"),th=require("@budibase/types");var Ci=O(require("openai"));var dt=require("@budibase/types");var ie=class e{constructor(t){this.messages=t}user(t){return this.messages.push({role:"user",content:t}),this}system(t){return this.messages.push({role:"system",content:t}),this}static user(t){return new e([{role:"user",content:t}])}static system(t){return new e([{role:"system",content:t}])}static fromRequest(t){return new e(t.messages)}};function Pi(e){return ie.user(`Summarize this text:
|
|
37
|
+
`;function Nr(e){return eo.default.verify(e,Nb,{algorithms:["RS256"]})}function Gb(e,t){return eo.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}var Dn={};S(Dn,{getFeatures:()=>to});var l=require("@budibase/types");var Mb={[l.PlanType.FREE]:[...pe.SELF_FREE_LICENSE.features],[l.PlanType.PREMIUM]:void 0,[l.PlanType.PREMIUM_PLUS]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.CUSTOM_APP_SCRIPTS],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.CUSTOM_APP_SCRIPTS],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.CUSTOM_APP_SCRIPTS]},kb={[l.PlanType.FREE]:[...pe.CLOUD_FREE_LICENSE.features],[l.PlanType.PREMIUM]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS],[l.PlanType.PREMIUM_PLUS]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.BUDIBASE_AI],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.BUDIBASE_AI],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.BRANDING],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.BRANDING],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.CUSTOM_APP_SCRIPTS],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.CUSTOM_APP_SCRIPTS],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.CUSTOM_APP_SCRIPTS]};function to(e,t){let r=[];function n(a){let o=a[t];if(!o)throw new Error(`Features do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case l.Hosting.SELF:r=n(Mb);break;case l.Hosting.CLOUD:r=n(kb);break}return r}var Bn={};S(Bn,{UNLIMITED:()=>d,getQuotas:()=>ro});var B=require("@budibase/types");var p=Ke,Mu=pe,d=-1,Mr=e=>e*1e6,Fb={[B.PlanType.FREE]:{...Mu.CLOUD_FREE_LICENSE.quotas},[B.PlanType.PREMIUM]:{usage:{monthly:{...p.queries(d),...p.automations(1e3),...p.budibaseAICredits(0)},static:{...p.rows(1e4),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(0),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[B.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...p.queries(d),...p.automations(5e3),...p.budibaseAICredits(Mr(2))},static:{...p.rows(25e3),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(0),...p.plugins(d),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[B.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...p.queries(d),...p.automations(5e3),...p.budibaseAICredits(Mr(2))},static:{...p.rows(25e3),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(0),...p.plugins(d),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[B.PlanType.PRO]:{usage:{monthly:{...p.queries(d),...p.automations(1e3),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(5),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[B.PlanType.TEAM]:{usage:{monthly:{...p.queries(d),...p.automations(5e3),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(10),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(90)}},[B.PlanType.BUSINESS]:{usage:{monthly:{...p.queries(d),...p.automations(1e4),...p.budibaseAICredits(0)},static:{...p.rows(5e4),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(50),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(365),...p.appBackupRetentionDays(365)}},[B.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(Mr(4))},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(d),...p.plugins(d),...p.customAIConfigurations(d)}},constant:{...p.automationLogRetentionDays(d),...p.appBackupRetentionDays(d)}},[B.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(Mr(4))},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(d),...p.plugins(d),...p.customAIConfigurations(d)}},constant:{...p.automationLogRetentionDays(15),...p.appBackupRetentionDays(15)}},[B.PlanType.ENTERPRISE]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(Mr(4))},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(d),...p.plugins(d),...p.customAIConfigurations(d)}},constant:{...p.automationLogRetentionDays(d),...p.appBackupRetentionDays(d)}}},Qb={[B.PlanType.FREE]:{...Mu.SELF_FREE_LICENSE.quotas},[B.PlanType.PREMIUM]:void 0,[B.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(0),...p.plugins(d),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[B.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(0),...p.plugins(d),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[B.PlanType.PRO]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(5),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[B.PlanType.TEAM]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(10),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(90)}},[B.PlanType.BUSINESS]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(50),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(90),...p.appBackupRetentionDays(365)}},[B.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(d),...p.plugins(d),...p.customAIConfigurations(d)}},constant:{...p.automationLogRetentionDays(d),...p.appBackupRetentionDays(d)}},[B.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(d),...p.plugins(d),...p.customAIConfigurations(d)}},constant:{...p.automationLogRetentionDays(15),...p.appBackupRetentionDays(15)}},[B.PlanType.ENTERPRISE]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(d),...p.plugins(d),...p.customAIConfigurations(d)}},constant:{...p.automationLogRetentionDays(d),...p.appBackupRetentionDays(d)}}};function ro(e,t){let r;function n(a){let o=a[t];if(!o)throw new Error(`Quotas do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case B.Hosting.SELF:r=n(Qb);break;case B.Hosting.CLOUD:r=n(Fb);break}return JSON.parse(JSON.stringify(r))}var Ft={};S(Ft,{appExists:()=>jb,encoding:()=>kt});var ku=require("@budibase/backend-core");async function jb(e){return(await ku.db.getAllApps({all:!0,idsOnly:!0})).includes(e)}var kt={};S(kt,{base64ToObject:()=>$b,objectToBase64:()=>Wb});function Wb(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}function $b(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}var vd=require("@budibase/types"),er=require("@budibase/backend-core"),Ed=O(rl()),Rd=O(Co());async function bx(e){await Ie.save({offlineLicenseToken:e}),await St()}async function Sx(){await Ie.save({offlineLicenseToken:void 0}),await St()}async function _d(){return(await Ie.get()).offlineLicenseToken}async function qo(){let t=(await er.installation.getInstall()).installId,r=er.context.getTenantId(),n=await er.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:n}}async function wx(){let e=await qo();return kt.objectToBase64(e)}function vx(e){return kt.base64ToObject(e)}function xd(e){let t=Date.now(),r=new Date(e.expireAt).getTime();if(t>r)throw new Error(`Offline license has expired. expireAt=${e.expireAt}`)}async function Td(e){let t=await qo();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}function Pd(e){let t=e.plan.type,r=vd.Hosting.SELF,n=to(r,t),a=ro(r,t);return e.features=(0,Ed.default)(e.features,n),e.quotas=(0,Rd.default)(e.quotas,a),e}async function Lo(){try{let e=await _d();if(e){let t=await Nr(e);return xd(t),await Td(t),Pd(t)}}catch(e){console.error("Error retrieving offline license",e)}}var an={};S(an,{deleteDevLicense:()=>Tx,getOfflineLicense:()=>_x,writeDevLicenseToDisk:()=>xx});var Od=require("@budibase/backend-core"),Do=require("path"),Cd=require("os"),wt=O(require("fs"));var Ex=Od.env.isTest()?".budibase-test":".budibase",Uo=(0,Do.join)((0,Cd.tmpdir)(),Ex),Rx="dev_license.txt",nn=(0,Do.join)(Uo,Rx);if(!wt.default.existsSync(Uo))try{wt.default.mkdirSync(Uo)}catch{}function _x(){try{if(wt.default.existsSync(nn)){let e=wt.default.readFileSync(nn,{encoding:"utf-8"});return Nr(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}function xx(e){console.log(`Writing license to: ${nn}`),wt.default.writeFileSync(nn,e,{encoding:"utf-8"})}function Tx(){wt.default.rmSync(nn,{force:!0})}var No=async()=>{if(Bo.env.OFFLINE_MODE)return Lo();let e=await Mt();return e||(e=an.getOfflineLicense()),e},Go=e=>Xa(e),Mo=()=>Bo.env.SELF_HOSTED?pe.SELF_FREE_LICENSE:pe.CLOUD_FREE_LICENSE;var Fo={};S(Fo,{activateLicenseKey:()=>Px,deleteLicenseKey:()=>Ox,getLicenseKey:()=>ko});async function Px(e){await Za(e),await Ie.save({licenseKey:e}),await St()}async function ko(){return(await Ie.get()).licenseKey}async function Ox(){await Ie.save({licenseKey:void 0}),await St()}var on=require("@budibase/backend-core"),Xn=O(require("dd-trace")),qd=3600,St=async()=>{await Dd(),await Ud()},Ld=async(e,t)=>{let{populateLicense:r=No,populateFreeLicense:n=Mo}=t||{};return await Xn.default.trace("getCachedLicense",async a=>{let o=on.tenancy.getTenantId(),i=await ka(),s=await i.get(o);return a.addTags({tenantId:o,foundInCache:!!s}),s||(s=await Xn.default.trace("populateLicense",async()=>await r(o)),a.addTags({populatedLicense:!!s}),s||(s=Xn.default.trace("populateFreeLicense",()=>n(e,o)),a.addTags({populatedFreeLicense:!!s})),s.refreshedAt=new Date().toISOString(),a.addTags({refreshedAt:s.refreshedAt,expirySeconds:qd}),await i.store(o,s,qd),s)})};on.env.isJest()&&(Ld=jest.fn());var Ud=Ld,Dd=async()=>{let e=on.tenancy.getTenantId();await(await ka()).delete(e)};async function X(e,t){Array.isArray(e)||(e=[e]),t||(t=await xe.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}async function Zn(e,t){if(!await X(e,t))throw new He.FeatureDisabledError(`${e} is not currently enabled`,e)}async function Qo(e,t){if(!await X(e,t)){let r=e.join(", ");throw new He.FeatureDisabledError(`${r} are not currently enabled`,r)}}function le(e){return async(...t)=>(await Zn(z.Feature.APP_BACKUPS),e(...t))}async function jo(){return X(z.Feature.APP_BACKUPS)}async function Wo(){return X(z.Feature.BRANDING)}async function Bd(){return X(z.Feature.ENFORCEABLE_SSO)}async function qx(){return X(z.Feature.SYNC_AUTOMATIONS)}async function Lx(){return X(z.Feature.TRIGGER_AUTOMATION_RUN)}async function vt(){return X(z.Feature.APP_BUILDERS)}async function ea(){return X(z.Feature.AUDIT_LOGS)}async function $o(){return X(z.Feature.USER_GROUPS)}async function Ye(){return X(z.Feature.EXPANDED_PUBLIC_API)}async function Ux(e){if(He.env.ENABLE_SSO_MAINTENANCE_MODE||!await Bd())return!1;let r;return e?.config?r=e.config:r=await He.configs.getSettingsConfig(),!!r.isSSOEnforced}var Vo=async()=>{let e=z.Feature.SCIM,t=await X(e),r=await He.configs.getSCIMConfig();if(!t||!r?.enabled)throw new He.FeatureDisabledError(`${e} is not currently enabled`,e);return!0};async function Dx(){return X(z.Feature.VIEW_PERMISSIONS)}async function Bx(){return X(z.Feature.VIEW_READONLY_COLUMNS)}async function sn(){return X(z.Feature.BUDIBASE_AI)}async function Ko(){return X(z.Feature.AI_CUSTOM_CONFIGS)}var Nx={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 Gx(e){return await Wo()?{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}:Nx}var Ho={};S(Ho,{enrichAIConfig:()=>kx});var Mx="budibase_ai";async function kx(e){return await sn()&&(e.config[Mx]={provider:"OpenAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),isBudibaseAI:!0,defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-4o-mini",apiKey:process.env.OPENAI_API_KEY,name:"Budibase AI"}),e}var Fe={};S(Fe,{addApp:()=>$x,addAutomation:()=>zx,addCustomAIConfig:()=>Xx,addGroup:()=>Jo,addPlugin:()=>Xo,addRow:()=>Kx,addRows:()=>Yx,addUsers:()=>na,bustCache:()=>pu,decrement:()=>Pe,decrementMany:()=>Rt,getCurrentUsageValues:()=>fu,getLicensedQuota:()=>Gd,getQuotaUsage:()=>yt,increment:()=>fe,incrementBudibaseAICredits:()=>ts,incrementMany:()=>Et,removeApp:()=>Vx,removeCustomAIConfig:()=>Zx,removeCustomAIConfigs:()=>eT,removeGroup:()=>zo,removePlugin:()=>Zo,removeRow:()=>Hx,removeRows:()=>Jx,removeUsers:()=>ar,set:()=>Yo,setAllUsage:()=>Va,setAppUsageValue:()=>$a,setUsage:()=>cu,setUsagePerApp:()=>lu,updatePluginCount:()=>es,updateUsage:()=>tr,usageLimitIsExceeded:()=>Wx,utils:()=>Ir});var Y=require("@budibase/types");var de=require("@budibase/backend-core");var fe=(e,t,r)=>Nd({change:1,name:e,type:t,opts:r}),Et=e=>Nd(e),Nd=async e=>{let t=Array.isArray(e)?e:[e];await tr(t.map(n=>({usageChange:n.change,name:n.name,type:n.type,opts:{dryRun:!0,suppressErrorLog:n.opts?.suppressErrorLog,id:n.opts?.id}})));let r=[];for(let n of t){let a=n.opts?.fn;a&&r.push(await a())}return await tr(t.map(n=>({usageChange:n.change,name:n.name,type:n.type,opts:{dryRun:!1,valueFn:n.opts?.valueFn,suppressErrorLog:n.opts?.suppressErrorLog,id:n.opts?.id}}))),r[0]},Pe=(e,t,r={})=>tr({usageChange:-1,name:e,type:t,opts:r}),Rt=e=>{let t=Array.isArray(e)?e:[e];return tr(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},Yo=async(e,t,r)=>De.setUsage(r,e,t),Fx=(e,t,r)=>{if(e==Y.QuotaUsageType.STATIC){let n=r.usageQuota.triggers;return n?n[t]||{}:{}}else{let n=De.utils.getCurrentMonthString(),a=r.monthly[n].triggers;return a?a[t]||{}:{}}},Qx=async(e,t,r,n)=>{try{await de.locks.doWithLock({type:Y.LockType.TRY_ONCE,name:Y.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let a={percentage:r,name:t.name};n&&(a.resetDate=n),await ot.triggerQuota(a)})}catch(a){de.logging.logAlert("Error triggering quota",a)}},jx=async(e,t,r,n)=>{let a=await yt(),o=e===Y.QuotaUsageType.MONTHLY?a.quotaReset:void 0,i=await Fx(e,t,a),s=n.triggers,c=r/n.value*100;c>100&&(c=100);for(let[f,m]of s.entries())if(c>=m&&n.value!==Ke.UNLIMITED){if(!i[m]){i[m]=new Date().toISOString();let y=s[f+1]||100;(!(c>=y)||c===m)&&await Qx(t,n,c,o)}}else i[m]=void 0;return i},tr=async e=>{let t=de.tenancy.getTenantId(),r=Array.isArray(e)?e:[e],n=null,a,o=[],i={},s={},c={},f={};for(let g of r){try{n=de.context.getAppId()}catch{}if(Y.APP_QUOTA_NAMES.includes(g.name)&&!n)throw new Error("App context required for quota update");try{a=await Gd(Y.QuotaType.USAGE,g.name,g.type),o.push(a);let{total:h,app:E,breakdown:T}=await De.getCurrentUsageValues(g.type,g.name,g.opts?.id);h+=g.usageChange,E!=null&&(E+=g.usageChange),T!=null&&(T+=g.usageChange);let _={};if(g.opts?.dryRun||(_=await jx(g.type,g.name,h,a),f={...f,[g.name]:_}),a.value!==Ke.UNLIMITED&&h>a.value&&g.usageChange>0)throw new de.UsageLimitError(`Licensed ${a.name} of ${a.value} has been exceeded`,a.name);if(h=Math.max(0,h),E&&(E=Math.max(0,E)),T&&(T=Math.max(0,T),c={...c,[g.name]:T}),!g.opts?.dryRun){let R=g.opts?.valueFn;R&&(h=await R(),E=h),i={...i,[g.name]:h},s={...s,[g.name]:E}}}catch(h){throw g.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${g.name}`,h),h}}let m=r.filter(g=>!g.opts?.dryRun).map(g=>({name:g.name,type:g.type,values:{total:i[g.name],app:s[g.name],breakdown:c[g.name],triggers:f[g.name]},opts:{...g.opts,tenantId:t}}));m.length>0&&await De.setAllUsage(m)},Gd=async(e,t,r)=>{let n=await xe.getCachedLicense();if(!n){let a=de.tenancy.getTenantId();throw new Error("License not found for tenant id "+a)}if(r&&(0,Y.isStaticQuota)(e,r,t))return n.quotas[e][r][t];if(r&&(0,Y.isMonthlyQuota)(e,r,t))return n.quotas[e][r][t];if((0,Y.isConstantQuota)(e,t))return n.quotas[e][t];throw new Error("Invalid quota type")},Wx=async(e,t)=>{try{return await tr({usageChange:1,name:e,type:t,opts:{dryRun:!0}}),!1}catch(r){if(r.code===de.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw r}};var rr=require("@budibase/types"),Md=require("@budibase/backend-core"),kd=async()=>{let e=await Md.db.getAllApps({dev:!0});return e?e.length:0},$x=async(e,{appId:t}={})=>fe(rr.StaticQuotaName.APPS,rr.QuotaUsageType.STATIC,{fn:e,valueFn:kd,id:t}),Vx=async({appId:e}={})=>Pe(rr.StaticQuotaName.APPS,rr.QuotaUsageType.STATIC,{valueFn:kd,id:e});var Me=require("@budibase/types"),Kx=async(e,{tableId:t}={})=>fe(Me.StaticQuotaName.ROWS,Me.QuotaUsageType.STATIC,{fn:e,id:t}),Hx=async({tableId:e}={})=>Pe(Me.StaticQuotaName.ROWS,Me.QuotaUsageType.STATIC,{id:e}),Yx=async(e,t,{tableId:r}={})=>Et({change:e,name:Me.StaticQuotaName.ROWS,type:Me.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),Jx=async(e,{tableId:t}={})=>Rt({change:e,name:Me.StaticQuotaName.ROWS,type:Me.QuotaUsageType.STATIC,opts:{id:t}});var ra=require("@budibase/types"),zx=async(e,{automationId:t}={})=>fe(ra.MonthlyQuotaName.AUTOMATIONS,ra.QuotaUsageType.MONTHLY,{fn:e,id:t});var nr=require("@budibase/types"),Jo=async e=>fe(nr.StaticQuotaName.USER_GROUPS,nr.QuotaUsageType.STATIC,{fn:e}),zo=async()=>Pe(nr.StaticQuotaName.USER_GROUPS,nr.QuotaUsageType.STATIC);var ut=require("@budibase/types"),Xo=async e=>fe(ut.StaticQuotaName.PLUGINS,ut.QuotaUsageType.STATIC,{fn:e}),Zo=async()=>Pe(ut.StaticQuotaName.PLUGINS,ut.QuotaUsageType.STATIC),es=async e=>Yo(ut.StaticQuotaName.PLUGINS,ut.QuotaUsageType.STATIC,e);var ke=require("@budibase/types"),un=require("@budibase/backend-core");var na=async(e,t,r)=>{let n=[{change:e,name:ke.StaticQuotaName.USERS,type:ke.QuotaUsageType.STATIC,opts:{fn:r,valueFn:un.users.getUserCount}}];t>0&&n.push({change:t,name:ke.StaticQuotaName.CREATORS,type:ke.QuotaUsageType.STATIC,opts:{valueFn:un.users.getCreatorCount}});let a=await Et(n);return await Mt(),a},ar=async(e,t)=>{let r=[{change:e,name:ke.StaticQuotaName.USERS,type:ke.QuotaUsageType.STATIC,opts:{valueFn:un.users.getUserCount}}];t>0&&r.push({change:t,name:ke.StaticQuotaName.CREATORS,type:ke.QuotaUsageType.STATIC,opts:{valueFn:un.users.getCreatorCount}}),await Rt(r),await Mt()};var Oe=require("@budibase/types"),ts=async e=>Et({change:e,name:Oe.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:Oe.QuotaUsageType.MONTHLY}),Xx=async()=>fe(Oe.StaticQuotaName.AI_CUSTOM_CONFIGS,Oe.QuotaUsageType.STATIC),Zx=async()=>Pe(Oe.StaticQuotaName.AI_CUSTOM_CONFIGS,Oe.QuotaUsageType.STATIC),eT=async e=>Rt({change:e,name:Oe.StaticQuotaName.AI_CUSTOM_CONFIGS,type:Oe.QuotaUsageType.STATIC});var Je={};S(Je,{addAppBuilder:()=>oT,db:()=>Qe,removeAppBuilder:()=>sT});var cn=require("@budibase/backend-core");var G={};S(G,{addAppBuilder:()=>ss,addUsers:()=>ns,adjustGroupCreatorsQuotas:()=>aT,cleanupApp:()=>nT,enrichUserRolesFromGroups:()=>rT,fetch:()=>pn,get:()=>xt,getBulk:()=>Kd,getGroupBuilderAppIds:()=>Vd,getGroupRoleId:()=>tT,remove:()=>rs,removeAppBuilder:()=>is,removeUsers:()=>as,save:()=>or,updateGroupApps:()=>os});var v=require("@budibase/backend-core");var Fd=require("@budibase/backend-core"),aa=class extends Fd.HTTPError{constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function Wd(e,t){try{let r=[];for(let s of e)if(s.roles){let c=s.roles[v.db.getProdAppID(t)];c&&r.push(c)}let n=await Promise.all(r.map(async s=>({[s]:await v.roles.roleToNumber(s)}))),a,o,i={};n.forEach(s=>{let[c,f]=Object.entries(s)[0];i[c]={roleId:c,roleNum:f}});for(let{roleId:s,roleNum:c}of Object.values(i))(o===void 0||c>o)&&(o=c,a=s);return a}catch(r){throw v.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}async function $d(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await D.getBulk(e,{enriched:!1}),t}async function Vd(e,t){if(!e.userGroups)return[];let r=await $d(e.userGroups,t?.groups),n=t?.appId?v.db.getProdAppID(t?.appId):null,a=[];for(let o of r){let i=o.builder?.apps;n&&i?.includes(n)?a.push(n):n||(a=a.concat(i||[]))}return[...new Set(a)]}async function tT(e,t,r){if(!e.userGroups)return null;let n=await $d(e.userGroups,r?.groups),a=v.db.getProdAppID(t);return e.roles?.[a]?e.roles[a]:(n=n.filter(o=>o?.roles?Object.keys(o.roles).includes(a):!1),await Wd(n,t))}async function rT(e){if(!e||!e.userGroups)return e;let t=await Kd(e.userGroups,{enriched:!1}),r=[];for(let a of t)a?.roles&&(r=r.concat(Object.keys(a.roles)));r=[...new Set(r)];for(let a of r)await v.context.doInAppContext(a,async()=>{if(e.roles[a])return;let o=await Wd(t,a);o&&(e.roles[a]=o)});let n=await Vd(e,{groups:t});if(n.length&&!e.builder?.global){let a=e.builder?.apps||[];e.builder={apps:a.concat(n)}}return e}async function pn(){return await D.fetch()}async function xt(e){return await D.get(e)}async function Kd(e,t={enriched:!0}){return await D.getBulk(e,t)}async function Qd(e){if(await D.getByName(e))throw new aa(e)}async function jd(e){let t=await D.getGroupUsers(e._id);if(!t.length)return 0;let n=await v.tenancy.getGlobalDB().getMultiple(t.map(o=>o._id));return(await v.userUtils.creatorsInList(n)).filter(o=>o).length}async function or(e){let t=[],r=!e._id,n=0;if(delete e.users,!e._id)e._id=D.generateUserGroupID(),await Qd(e.name),t.push(v.events.group.created(e));else{let o=await D.get(e._id);if(o.name!==e.name&&await Qd(e.name),t.push(v.events.group.updated(e)),JSON.stringify(o.roles)!==JSON.stringify(e.roles)){let i=o.users?.length||0,s=0;i>0&&(s=await jd(o)),Object.values(e.roles).includes(v.roles.BUILTIN_ROLE_IDS.ADMIN)?n=i-s:n=-i,t.push(v.events.group.permissionsEdited(e))}}await Promise.all(t);let a=()=>D.save(e);if(r)return await Jo(a);{let o=await a();if(n>0)await na(0,n);else if(n<0){let i=await jd(e),s=Math.abs(n)-i;s>0&&await ar(0,s)}return o}}async function rs(e,t){let r;try{r=await D.get(e)}catch{throw new Error("Group not found")}let n=Object.values(r.roles||{}).includes(v.roles.BUILTIN_ROLE_IDS.ADMIN),a=()=>{};if(n){let i=v.tenancy.getGlobalDB(),s=await D.getGroupUsers(e),f=(await Promise.all(s.map(h=>i.get(h._id)))).map(h=>({...h,userGroups:h.userGroups.filter(E=>E!==e)})),g=(await v.userUtils.creatorsInList(f)).filter(h=>h).length,y=s.length-g;y&&(a=()=>ar(0,y))}let o=await D.destroy(e,t);return await v.events.group.deleted(r),await zo(),await a(),o}async function ns(e,t){let r=await D.get(e),n=await v.users.bulkGetGlobalUsersById(t),a=[];for(let c of n)c.userGroups||(c.userGroups=[]),c.userGroups.includes(e)||a.push(c);if(!a.length)return a;let o=a.map(c=>({...c,userGroups:[...c?.userGroups||[],e]}));if(await v.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes(v.roles.BUILTIN_ROLE_IDS.ADMIN)){let f=(await v.userUtils.creatorsInList(a)).filter(g=>g).length,m=a.length-f;m&&await na(0,m)}let s=[];for(let c of t)s.push(v.cache.user.invalidateUser(c));return await Promise.all(s),await v.events.group.usersAdded(o.length,r),o}async function as(e,t){let r=await D.get(e),n=await v.users.bulkGetGlobalUsersById(t),a=[];for(let s of n){if(!s.userGroups||!s.userGroups.includes(e))continue;let c=s.userGroups.indexOf(e);s.userGroups.splice(c,1),a.push(s)}if(await v.users.bulkUpdateGlobalUsers(a),Object.values(r.roles||{}).includes(v.roles.BUILTIN_ROLE_IDS.ADMIN)){let c=(await v.userUtils.creatorsInList(a)).filter(m=>m).length,f=a.length-c;f&&await ar(0,f)}let i=[];for(let s of t)i.push(v.cache.user.invalidateUser(s));return await Promise.all(i),a.length&&await v.events.group.usersDeleted(a.length,r),a}async function os(e,t){let r=await xt(e);if(r.roles||(r.roles={}),t.appsToAdd)for(let n of t.appsToAdd)r.roles[n.appId]=n.roleId;if(t.appsToRemove)for(let n of t.appsToRemove)delete r.roles[n.appId];return await or(r)}async function nT(e){let t=await pn(),r=[];for(let n of t)!n.roles||!n.roles[e]||(delete n.roles[e],r.push(n));return await D.bulkSave(r)}async function ss(e,t){if(!await vt())throw new Error("Feature not enabled, please check license");let r=v.db.getProdAppID(t),n=await xt(e);n.builder??={apps:[]},n.builder.apps.includes(t)||(n.builder.apps.push(r),await or(n))}async function is(e,t){if(!await vt())throw new Error("Feature not enabled, please check license");let r=v.db.getProdAppID(t),n=await xt(e);n.builder?.apps.includes(t)&&(n.builder.apps=n.builder.apps.filter(a=>a!==r),await or(n))}async function aT(){if(!await $o()){let e=v.tenancy.getGlobalDB(),r=(await pn()||[]).filter(n=>Object.values(n?.roles||{}).includes(v.roles.BUILTIN_ROLE_IDS.ADMIN));for(let n of r){let a=await D.getGroupUsers(n._id),i=(await Promise.all(a.map(m=>e.get(m._id)))).map(m=>({...m,userGroups:m.userGroups.filter(g=>g!==n._id)})),c=(await v.userUtils.creatorsInList(i)).filter(m=>m).length,f=a.length-c;await D.save({...n,roles:{}}),f&&await ar(0,f)}}}cn.users.UserDB.init(Fe,G,we);var Qe=cn.users.UserDB;async function oT(e,t){if(!await vt())throw new Error("Feature not enabled, please check license");await cn.users.addAppBuilder(e,t)}async function sT(e,t){if(!await vt())throw new Error("Feature not enabled, please check license");await cn.users.removeAppBuilder(e,t)}var sa={};S(sa,{logs:()=>ms});var ms={};S(ms,{logSearch:()=>mT,oldestLogDate:()=>ef,storeLog:()=>yT});var Zd=require("@budibase/types"),oa=require("@budibase/backend-core");var pt=require("@budibase/types");var K=require("@budibase/backend-core");var Hd=require("@budibase/backend-core");async function Yd(e,t){let r,n=5,a=!1,o,i=!0;for(;n>0;n--)try{i?o=await e():o=await exports.randomDelay(e),a=!0;break}catch(s){r=s}return a||Hd.logging.logWarn(`Failed to backoff: ${t}`,r),o}var{SEPARATOR:ze,UNICODE_MAX:iT,DocumentType:Jd,AutomationViewMode:us,ViewName:uT,getQueryIndex:pT}=K.db,cT=new Date(0).toISOString(),lT=100,ps=async()=>On(pt.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS);function zd(e,t,{status:r,automationId:n}={},a={}){let o=n?`${n}${ze}`:"",i=r?`${r}${ze}`:"",s;return r&&n?s=`${us.ALL}${ze}${i}${o}`:r?s=`${us.STATUS}${ze}${i}`:n?s=`${us.AUTOMATION}${ze}${o}`:s=`${Jd.AUTOMATION_LOG}${ze}`,{...a,descending:!0,startkey:`${s}${t}${iT}`,endkey:`${s}${e}`}}function cs(e){let t=pt.AutomationStatus.SUCCESS,r=!0;for(let n of e.steps){let a=n.outputs?.status?.toLowerCase(),o=a==="stopped_error";if(r&&!o){r=!1;continue}if(o){t=pt.AutomationStatus.STOPPED_ERROR;break}else if(n.outputs?.success){if(a==="stopped"){t=pt.AutomationStatus.STOPPED;break}}else{t=pt.AutomationStatus.ERROR;break}}return t}function dT(e,t,r){return`${Jd.AUTOMATION_LOG}${ze}${e}${ze}${r}${ze}${t}`}async function ls(e,t,r={docs:!0}){let n=K.context.getProdAppDB();await n.exists()||(n=K.context.getDevAppDB());let a={status:r.status},o=r?.limit?r.limit:r?.paginate?9+1:void 0,i=zd(e,t,a,{include_docs:r.docs,limit:o});r?.page&&(i.startkey=r.page);let s=await n.allDocs(i);return Sr(s,{paginate:r?.paginate,pageSize:9})}async function ds(e,t,r={}){let n=K.context.getProdAppDB();await n.exists()||(n=K.context.getDevAppDB());let a;try{let o={automationId:r?.automationId,status:r?.status},i=zd(e,t,o,{include_docs:!0,limit:9+1});r?.page&&(i.startkey=r.page),a=await n.query(pT(uT.AUTOMATION_LOGS),i)}catch(o){if(o!=null&&(o.name==="not_found"||o.error==="not_found"))return await Eu(),ds(e,t,r);throw o}return Sr(a,{paginate:!0,pageSize:9})}async function Xd(e,t){let r=K.context.getProdAppDB(),n=e._id,a=e.name,o=cs(t),i=new Date().toISOString(),s=dT(i,o,n),c={...t,automationId:n,status:o,automationName:a,createdAt:i,_id:s};return await r.put(c),s}async function fs(e,{clearing:t}={clearing:!1}){let r=K.context.getProdAppDB();await Yd(async()=>{let n=await r.get(K.db.DocumentType.APP_METADATA);for(let a of e){let o=a.split(K.db.SEPARATOR),i=`${o[o.length-3]}${K.db.SEPARATOR}${o[o.length-2]}`,s={};n.automationErrors&&(s=n.automationErrors),Array.isArray(s[i])||(s[i]=[]);let c=s[i].indexOf(a);t&&c!==-1?s[i].splice(c,1):s[i].push(a),s[i].length===0&&delete s[i],n.automationErrors=s}await r.put(n),await K.cache.app.invalidateAppMetadata(n.appId,n)},"Failed to update app metadata with automation log error")}async function fT(){let e=await ps();try{return await ls(cT,e,{docs:!1,paginate:!1,limit:lT})}catch{return{data:[],hasNextPage:!1}}}async function gs(){let e=K.context.getProdAppDB();try{let t=await fT();if(!t.data||t.data.length===0)return;let r=t.data.map(a=>({_id:a.id,_rev:a.value.rev,_deleted:!0})),n=t.data.filter(a=>{let o=a.id.split(K.db.SEPARATOR);return o[o.length-1]===pt.AutomationStatus.ERROR}).map(a=>a.id);await e.bulkDocs(r),n.length&&await fs(n,{clearing:!0})}catch(t){K.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}var ef=ps;async function gT(e,t,r,n){let a,o=new Date().toISOString(),i=await ef();return(!e||e<i)&&(e=i),r||t?a=await ds(e,o,{automationId:r,status:t,page:n}):a=await ls(e,o,{status:t,page:n,docs:!0,paginate:!0}),a}async function mT(e){return await gs(),await gT(e.startDate,e.status,e.automationId,e.page)}async function yT(e,t){if(!oa.db.isProdAppID(oa.context.getAppId()))return;let r=cs(t),n=await Xd(e,t);r===Zd.AutomationStatus.ERROR&&await fs([n]),await gs()}var ia={};S(ia,{checkPluginQuotas:()=>IT,deletePlugin:()=>hT,storePlugin:()=>AT});var af=require("@budibase/types"),j=require("@budibase/backend-core");var tf=O(require("fs")),rf=require("path");function nf(e,t){return tf.default.readFileSync((0,rf.join)(e,t),"utf8")}async function AT(metadata,directory,source){let db=j.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=j.objectStore.getPluginS3Dir(name),files=await j.objectStore.uploadDirectory(j.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===af.PluginType.DATASOURCE){let js=nf(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=j.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 j.events.plugin.imported(doc),{...doc,_rev:e.rev}};return rev?await write():await Xo(write)}async function hT(e){let t=j.tenancy.getGlobalDB();try{let r=await t.get(e),n=j.objectStore.getPluginS3Dir(r.name);await j.objectStore.deleteFolder(j.objectStore.ObjectStoreBuckets.PLUGINS,n),await t.remove(e,r._rev),await j.events.plugin.deleted(r),await Zo()}catch(r){let n=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${n}`)}}async function IT(){let e=j.tenancy.getGlobalDB();try{let r=(await e.allDocs(j.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await es(r)}catch(t){j.logging.logAlert("Unable to retrieve plugins for quota check",t)}}var je={};S(je,{fetch:()=>ST,fetchValues:()=>wT,isEncryptionKeyAvailable:()=>bT,isValid:()=>uf,remove:()=>ET,update:()=>vT});var ln=require("@budibase/types"),of=require("@budibase/backend-core");function bT(){return!!of.env.ENCRYPTION_KEY}async function ST(){let e=await It.get();return Object.keys(e.variables)}async function wT(e){let r=(await It.get()).variables,n={};for(let[a,o]of Object.entries(r))switch(e){case ln.AppEnvironment.DEVELOPMENT:n[a]=o.development;break;case ln.AppEnvironment.PRODUCTION:default:n[a]=o.production;break}return n}async function sf(e){if(!(await Ge.cache.getCachedLicense()).features.includes(ln.Feature.ENVIRONMENT_VARIABLES))throw new Error("User does not have access to environment variables feature.");let r=await It.get();r.variables=e(r.variables),await It.update(r)}async function vT(e,t){if(uf(e))await sf(n=>(n[e]=t,n));else throw new Error("Variable name has characters that are not allowed")}async function ET(e){await sf(t=>(delete t[e],t))}function uf(e){return/^[a-zA-Z0-9-_]+$/.test(e)}var ct={};S(ct,{definitions:()=>DT,download:()=>UT,fetch:()=>LT,write:()=>CT});var pa=require("@budibase/types");var F=require("@budibase/backend-core"),Ce=require("@budibase/types");var pf=require("memorystream"),cf=new F.sql.Sql(Ce.SqlClient.SQL_LITE);async function RT(e,t,r){let n={operation:Ce.Operation.READ,table:Gt.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:Ce.SortOrder.DESCENDING,type:Ce.SortType.STRING}}},a=cf._query(n);if(Array.isArray(a))throw new Error("Cannot execute multiple queries for audit log search");return{sql:a.sql,bindings:a.bindings}}function _T(e){return`${F.DocumentType.AUDIT_LOG}${F.SEPARATOR}${e}${F.SEPARATOR}${F.utils.newid()}`}async function lf(e){e._id||(e._id=_T(e.timestamp)),e.type||(e.type=Ce.AUDIT_LOG_TYPE);try{let r=await F.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){F.logging.logAlert("Failed to write audit log",t)}}async function ys(e,t,r){t||(t=1);let n=F.context.getAuditLogsDB();try{let a=9+1,o=await RT(e,t,a),i=Gt.searchTable(),s=cf.convertJsonStringColumns(i,await n.sql(o.sql,o.bindings)),c;s.length>a&&(c=s.pop());let f={rows:s,hasNextPage:!!c};return f.hasNextPage&&(f.bookmark=t+1),f}catch(a){if(a.status===404&&!r?.isRetry)return await xT(),await gu(),await ys(e,t,{isRetry:!0});throw a}}async function xT(){let e=F.context.getAuditLogsDB(),r=(await e.allDocs(F.db.getDocParams(F.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(n=>n.doc).filter(n=>n&&!n.type).map(n=>({...n,type:Ce.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}function df(e){let t=F.context.getAuditLogsDB(),r=new pf,n=t.dump(r,{filter:o=>{let i=o;if(!i._id?.startsWith(F.DocumentType.AUDIT_LOG))return!1;let s=!0,c=(f,m)=>{!f||f.length===0||(s=!!(s&&m&&f.includes(m)))};if(c(e.userIds,i.userId),c(e.appIds,i.appId),c(e.events,i.event),(e.startDate||e.endDate)&&(s=s&&i.timestamp>=e.startDate&&i.timestamp<=e.endDate),e.fullSearch){let f=JSON.stringify(o);s=s&&f.includes(e.fullSearch)}return s}}),a=new pf;return r.on("data",o=>{let i=JSON.parse(Buffer.from(o).toString());if(Array.isArray(i.docs)){let s="";for(let c of i.docs)s+=JSON.stringify(c)+`
|
|
38
|
+
`;a.write(s)}}),r.on("end",()=>{a.end()}),{promise:n,stream:a}}var ae=require("@budibase/backend-core");var ua=require("@budibase/types"),dn=require("@budibase/string-templates"),fn=require("@budibase/backend-core"),PT=fn.constants.MIN_VALID_DATE.toISOString(),OT=fn.constants.MAX_VALID_DATE.toISOString();function As(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||PT,e.endDate=e.endDate||OT),e}async function ff(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(n=>fn.db.getProdAppID(n)));let t={};function r(n,a){a?.length&&(t.oneOf={...t.oneOf,[n]:a})}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=As(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}function hs(e,t,r){let n={_id:e,status:ua.AuditLogResourceStatus.DELETED};switch(t){case"app":n.name=r?.appName;break;case"user":n.email=r?.email;break}return n}function Is(e){let t=(0,dn.findHBSBlocks)(e);for(let r of t){let n=` "${r}"`;e=e.replace(e.includes(n)?n:` ${r}`,""),e=(0,dn.processStringSync)(e,{})}return e}function gf(e,t){let r=ua.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let n=(0,dn.processStringSync)(r,t);return n.includes('""')&&(n=Is(r)),n}async function CT(e,t,r){if(!await ea()||!ae.utils.isAudited(e))return;let n=gf(e,t),a=new Date;r?.timestamp&&(a=new Date(r.timestamp));let o={timestamp:a.toISOString(),event:e,name:n,userId:r?.userId||pa.AuditLogSystemUser,metadata:{...t,...r?.hostInfo}},i={};try{if(r?.appId){o.appId=ae.db.getProdAppID(r.appId);let s=await ae.cache.app.getAppMetadata(r.appId);"name"in s&&(i.appName=s.name)}if(r?.userId){let s=await ae.users.getById(r?.userId);i.email=s.email}}catch(s){ae.logging.logAlert("Failed to retrieve fallback information for audit log",s)}return o.fallback=i,await lf(o)}async function qT(e){let t=e.map(s=>s.userId),n=e.filter(s=>s.appId).map(s=>ae.db.getDevAppID(s.appId)),a=await ae.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),o=await ae.db.getAppsByIDs([...new Set(n)]),i=[];for(let s of e){let c=a.find(g=>g?._id===s.userId),f=o.find(g=>ae.db.isSameAppID(g?.appId,s.appId)),m={event:s.event,timestamp:s.timestamp,name:s.name,metadata:s.metadata,user:c||hs(s.userId,"user",s.fallback)};s.appId&&(m.app=f||hs(s.appId,"app",s.fallback)),i.push(m)}return i}async function LT(e){if(!await ea())throw new Error("Audit logs not available - license required.");let t=await ff(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await ys(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await qT(r.rows)}}function UT(e){return e=As(e),df(e)}function DT(){let e=Object.entries(pa.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=Is(r[1]);return t}var ca={};S(ca,{applications:()=>vs,roles:()=>Ss,users:()=>bs});var bs={};S(bs,{roleCheck:()=>NT});function BT(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 NT(e,t){return await Ye()||BT(e,t),e}var Ss={};S(Ss,{assign:()=>GT,unAssign:()=>MT});var gn=require("@budibase/backend-core");async function GT(e,t){if(!await Ye())throw new Error("Unable to assign roles - license required.");let r=await Qe.bulkGet(e);for(let n of r){if(t.role&&t.role.roleId){let a=gn.db.getProdAppID(t.role.appId);n.roles[a]=t.role.roleId}if(t.appBuilder){let a=gn.db.getProdAppID(t.appBuilder.appId),o=n.builder?.apps||[];n.builder={apps:o.concat([a])}}t.builder&&(n.builder={global:!0}),t.admin&&(n.admin={global:!0}),n.roles}await Qe.bulkUpdate(r)}async function MT(e,t){if(!await Ye())throw new Error("Unable to un-assign roles - license required.");let r=await Qe.bulkGet(e);for(let n of r){if(t.role){let a=gn.db.getProdAppID(t.role?.appId);n.roles[a]===t.role.roleId&&delete n.roles[a]}if(t.appBuilder&&n.builder?.apps){let a=gn.db.getProdAppID(t.appBuilder.appId);n.builder.apps=n.builder.apps.filter(o=>o!==a)}t.builder&&n.builder&&delete n.builder,t.admin&&n.admin&&delete n.admin}}var vs={};S(vs,{buildExportFn:()=>FT,buildImportFn:()=>kT});var ws=require("@budibase/backend-core");function kT(e){return async(t,r)=>{await Ye()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await ws.context.doInAppContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}function FT(e){return async(t,r)=>{await Ye()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:n,excludeRows:a}=t.request.body;await ws.context.doInAppContext(t.params.appId,async()=>{t.request.body={encryptPassword:n,excludeRows:a},t.query.appId=t.params.appId,await e(t),await r()})}}var We=require("@budibase/backend-core"),ne=require("@budibase/types");var Es=require("@budibase/backend-core"),mf;function yf(){mf=new Es.queue.BudibaseQueue(Es.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}function Tt(){return mf}var Af=require("path"),hf=O(require("fs"));async function Rs(e,t={}){return be.storeAppBackupMetadata(e,t)}function If(e){let t=new Date().toISOString();switch(e){case ne.AppBackupStatus.COMPLETE:case ne.AppBackupStatus.FAILED:return{timestamp:t,finishedAt:t};case ne.AppBackupStatus.STARTED:return{timestamp:t,startedAt:t};case ne.AppBackupStatus.PENDING:return{timestamp:t,createdAt:t}}}async function QT(e,t,r,n){let a=await la(e);return await be.storeAppBackupMetadata({...a,...If(t),contents:r,status:t,type:ne.AppBackupType.BACKUP},{filename:n,docId:e})}async function jT(e,t,r){let n=await la(e);return await be.storeAppBackupMetadata({...n,...If(r),status:r,type:ne.AppBackupType.RESTORE,trigger:ne.AppBackupTrigger.MANUAL},{docId:e,docRev:t})}async function la(e){return be.getAppBackupMetadata(e)}async function WT(e,t){return be.updateAppBackupMetadata(e,t)}async function $T(e){let t=await be.getAppBackupMetadata(e);return t.filename&&await We.objectStore.deleteFile(We.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),be.deleteAppBackupMetadata(e)}async function VT(e,t){return be.fetchAppBackups(e,t)}async function bf(e){let t=await be.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let r=await We.objectStore.getReadStream(We.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}async function KT(e){let{stream:t}=await bf(e),r=(0,Af.join)(We.objectStore.budibaseTempDir(),We.utils.newid()),n=hf.default.createWriteStream(r);return new Promise((a,o)=>{t.on("error",o),n.on("error",o),t.pipe(n).on("close",()=>a(r))})}async function HT(e,t,r={}){let n;try{n=await Rs({appId:e,trigger:t,timestamp:new Date().toISOString(),status:ne.AppBackupStatus.PENDING,type:ne.AppBackupType.BACKUP,...r})}catch(a){if(a.status===409)return;throw a}return await Tt().add({docId:n.id,docRev:n.rev,appId:e,export:{trigger:t,...r}}),await We.events.backup.appBackupTriggered(e,n.id,ne.AppBackupType.BACKUP,t,r?.name),n.id}async function YT(e,t,r,n){let a=await la(t),o;try{o=await Rs({appId:e,timestamp:new Date().toISOString(),status:ne.AppBackupStatus.PENDING,type:ne.AppBackupType.RESTORE,createdBy:n})}catch(i){if(i?.status===409)return;throw i}return await Tt().add({appId:e,docId:o.id,docRev:o.rev,import:{nameForBackup:r,backupId:t,createdBy:n}}),{restoreId:o.id,metadata:a}}var JT={isEnabled:jo,triggerAppRestore:le(YT),triggerAppBackup:le(HT),getBackupDownloadStream:le(bf),downloadAppBackup:le(KT),fetchAppBackups:le(VT),storeAppBackupMetadata:le(Rs),updateBackupStatus:le(QT),updateRestoreStatus:le(jT),getAppBackup:le(la),updateAppBackup:le(WT),deleteAppBackup:le($T)},Xe=JT;var xs={};S(xs,{init:()=>_s});var W=require("@budibase/backend-core");var qe=require("@budibase/types");var sr=O(require("fs"));async function _s(e){Tt().process(async t=>{let r=t.data;try{if(r.export)return ZT(t,e);if(r.import)return XT(t,e)}catch(n){W.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,n)}})}async function zT(e){await W.db.getDB(e,{skip_setup:!0}).destroy()}async function Sf(e,t,r,n){let a=W.db.getDevAppID(r),o=W.db.getProdAppID(r),i=new Date().toISOString(),s=async(c,f)=>{n?.doc?await Xe.updateBackupStatus(n.doc.id,c,f?.contents,f?.filename):await Xe.storeAppBackupMetadata({appId:o,timestamp:i,trigger:e,status:c,name:n?.name,type:qe.AppBackupType.BACKUP,contents:f?.contents,createdBy:n?.createdBy},{filename:f?.filename})};try{let c=await n.processing.exportAppFn(a,{tar:!0}),f=await n.processing.statsFn(a),m=`${o}/backup-${i}.tar.gz`,g=W.objectStore.ObjectStoreBuckets.BACKUPS,y=sr.default.createReadStream(c);await W.objectStore.streamUpload({bucket:g,filename:m,stream:y,extra:{type:"application/gzip",metadata:{name:n?.name,trigger:e,timestamp:i,appId:o}}}),await s(qe.AppBackupStatus.COMPLETE,{filename:m,contents:f}),sr.default.existsSync(c)&&sr.default.rmSync(c)}catch(c){W.logging.logAlert("App backup error",c),await s(qe.AppBackupStatus.FAILED)}}async function XT(e,t){let r=e.data,n=r.appId,a=r.import.backupId,o=r.import.nameForBackup,i=r.import.createdBy,s=W.tenancy.getTenantIDFromAppID(n);return W.tenancy.doInTenant(s,async()=>{let c=W.db.getDevAppID(n),{rev:f}=await Xe.updateRestoreStatus(r.docId,r.docRev,qe.AppBackupStatus.STARTED);await Sf(qe.AppBackupTrigger.RESTORING,s,n,{processing:t,createdBy:i,name:o});let m=await Xe.downloadAppBackup(a);await zT(c);let g=qe.AppBackupStatus.COMPLETE;try{await t.importAppFn(c,W.db.getDB(c),{file:{type:"application/gzip",path:m},key:m})}catch(y){W.logging.logAlert("App restore error",y),g=qe.AppBackupStatus.FAILED}await Xe.updateRestoreStatus(r.docId,f,g),sr.default.existsSync(m)&&sr.default.rmSync(m,{force:!0})})}async function ZT(e,t){let r=e.data,n=r.appId,a=r.export.trigger,o=r.export.name,i=W.tenancy.getTenantIDFromAppID(n);await W.tenancy.doInTenant(i,async()=>{try{let{rev:s}=await Xe.updateBackupStatus(r.docId,qe.AppBackupStatus.STARTED);return Sf(a,i,n,{processing:t,doc:{id:r.docId,rev:s},name:o})}catch(s){W.logging.logAlert("App backup error",s)}})}var eP=async e=>{yf(),await _s(e.processing)},ve={...Xe,processing:xs,init:eP,getBackupQueue:Tt};var wf=async e=>{e.backups&&await ve.init(e.backups)};var se={};S(se,{create:()=>KN,find:()=>VN,get:()=>$N,remove:()=>YN,update:()=>HN});var WA=O(wi()),Ze=require("@budibase/backend-core");var $A=require("@budibase/types");async function $N(e){let t=Ze.tenancy.getGlobalDB(),r=new Ze.db.QueryBuilder(t.name,$A.SearchIndex.USER);r.setIndexBuilder(Ze.db.searchIndexes.createUserIndex),r.setLimit(e.pageSize),r.addEqual("scimInfo.isSync",!0);for(let[a,o]of Object.entries(e.filters?.equal??{}))r.addEqual(a,o);r.setSort("_id"),r.setSkip(e.skip);let n=await r.run();return{users:n.rows,total:n.totalRows}}async function VN(e){return await Ze.users.getById(e)}async function KN(e){let t=await Qe.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new Ze.HTTPError("User is already synched",409);e={...t,scimInfo:(0,WA.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await Qe.save(e,{requirePassword:!1})}async function HN(e,t){return await Qe.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}async function YN(e){return await Qe.destroy(e)}var dr={};S(dr,{create:()=>JN});var VA=O(wi());var KA=require("@budibase/backend-core");async function JN(e){let t=await Ha(e.name),r;if(!t)r=(await G.save(e)).id;else{if(t.scimInfo?.isSync)throw new KA.HTTPError("Group is already synched",409);r=t._id,t.users&&(await G.removeUsers(r,t.users.map(a=>a._id)),delete t.users),t.scimInfo=(0,VA.default)(t.scimInfo,e.scimInfo),await G.save(t)}return await G.get(r)}var Ot={};S(Ot,{logRequest:()=>zN,logResponse:()=>XN});var vi=require("@budibase/backend-core");async function zN(e){vi.logging.logWarn("SCIM request log",e)}async function XN(e){vi.logging.logWarn("SCIM response error",e)}var Ti={};S(Ti,{doInScimContext:()=>Ri,feature:()=>M,internalGroupOnly:()=>_a,licensing:()=>HA,requireSCIM:()=>_i,scimGroupOnly:()=>hn,scimUserOnly:()=>An});var lt=require("@budibase/backend-core");var Ea=require("@budibase/types"),ZN=(e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(lt.env.SELF_HOSTED&<.env.DEFAULT_LICENSE)return t.user.license=Ja,r();t.user.license=await Ge.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(lt.utils.isServingApp(t)||lt.utils.isServingBuilder(t)||lt.utils.isServingBuilderPreview(t)||lt.utils.isPublicApiRequest(t))&&await Fe.usageLimitIsExceeded(Ea.StaticQuotaName.USERS,Ea.QuotaUsageType.STATIC)}return r()},HA=ZN;var M={};S(M,{requireFeature:()=>eG,requireFeatures:()=>tG});var eG=e=>async(t,r)=>{await Zn(e),await r()},tG=(...e)=>async(t,r)=>{await Qo(e),await r()};var Ra=require("@budibase/backend-core");var Ri=async(e,t)=>(Ra.env.DISABLE_SCIM_CALLS||await Ot.logRequest({...e.request.toJSON(),body:e.request.body}),await Ra.context.doInScimContext(async()=>{let r=await t();return await Ot.logResponse({...e.response.toJSON(),body:e.response.body}),r}));var _i=async(e,t)=>{await Vo(),await t()};var YA=require("@budibase/backend-core");var An=e=>xi(YA.users.getById,e,!0),hn=e=>xi(D.get,e,!0),_a=e=>xi(D.get,e,!1);function xi(e,t,r){return async(n,a)=>{let o=n.params[t];return typeof o!="string"&&n.throw(404),!!(await e(o)).scimInfo?.isSync!==r&&n.throw(404),a()}}var $i={};S($i,{ai:()=>ch,appBackups:()=>Yh,auditLogs:()=>Mh,environmentVariables:()=>Ch,groups:()=>wh,scim:()=>RI,users:()=>OI});var Ui=require("@budibase/types");var Li={};S(Li,{getLLM:()=>Oa});var ge=require("@budibase/backend-core"),ah=require("@budibase/types");var Ci=O(require("openai"));var dt=require("@budibase/types");var ie=class e{constructor(t){this.messages=t}user(t){return this.messages.push({role:"user",content:t}),this}system(t){return this.messages.push({role:"system",content:t}),this}static user(t){return new e([{role:"user",content:t}])}static system(t){return new e([{role:"system",content:t}])}static fromRequest(t){return new e(t.messages)}};function Pi(e){return ie.user(`Summarize this text:
|
|
39
39
|
${e}.
|
|
40
|
-
Only return the summary.`)}function
|
|
41
|
-
${e}`)}function
|
|
40
|
+
Only return the summary.`)}function JA(e,t){return ie.user(`Return the category of this text: "${e}". Based on these categories: ${t.join(", ")}. Only return the category.`)}function zA(e){return ie.user(`Clean the following string: "${e}". Remove any spelling mistakes or data issues. Only return the cleaned string itself and nothing else.`)}function XA(e){return ie.user(`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:
|
|
41
|
+
${e}`)}function ZA(e,t){return ie.user(`Translate the following text: "${e}" into ${t}. Only return the translation.`)}function eh(e){return ie.user(`Return the sentiment of this text: "${e}". Only return the sentiment.`)}function th(e){return ie.user(`Search the web for the following: "${e}". Only return the top results.`)}function rh(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:
|
|
42
42
|
|
|
43
43
|
${e.map(({readableBinding:a})=>`- $("${a}")`).join(`
|
|
44
44
|
`)}`);let n="You do not have access to any snippets in this request.";return t.length>0&&(n=`The snippets you have access to are:
|
|
@@ -133,4 +133,4 @@ a variable, it will be provided to you as a binding.
|
|
|
133
133
|
|
|
134
134
|
${n}
|
|
135
135
|
|
|
136
|
-
${r}`)}var eh=require("@budibase/shared-core");function Oi(e,t){return t.map(r=>e[r]).join(" ")}var ft=class{constructor({model:t,apiKey:r,measureUsage:n}){this.model=t,this.apiKey=r,this.measureUsage=n,this.maxTokens=parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"300")}async prompt(t){typeof t=="string"&&(t=ie.user(t));let r=await this.chatCompletion(t);return this.measureUsage&&r.tokensUsed!==void 0&&r.tokensUsed>0&&await ts(r.tokensUsed),r}async summarizeText(t){return this.prompt(Pi(t))}async generateCronExpression(t){return this.prompt(HA(t))}async operation(t,r){let n=this.promptForOperation(t,r);return this.prompt(n)}promptForOperation(t,r){let{operation:n,column:a,columns:o,language:i,categories:s,prompt:c}=t;switch(n){case dt.AIOperationEnum.SUMMARISE_TEXT:return Pi(Oi(r,o));case dt.AIOperationEnum.CLEAN_DATA:return YA(r[a]);case dt.AIOperationEnum.TRANSLATE:return JA(r[a],i);case dt.AIOperationEnum.CATEGORISE_TEXT:if(!s)throw Error("No categories provided for categorise text operation. Please provide categories.");return KA(Oi(r,o),s.split(","));case dt.AIOperationEnum.SENTIMENT_ANALYSIS:return zA(r[a]);case dt.AIOperationEnum.PROMPT:return c;case dt.AIOperationEnum.SEARCH_WEB:return XA(Oi(r,o));default:throw eh.utils.unreachable(n)}}async generateJs(t,r){let{bindings:n=[],snippets:a=[]}=r||{};return await this.prompt(ZA(n,a).user(t))}};var Ct=class extends ft{constructor({model:r,apiKey:n,measureUsage:a}){super({model:r,apiKey:n,measureUsage:a});this.client=new Ci.default({apiKey:n})}measureTokenUsage(r){if(!r)return 0;let n=r.prompt_tokens;return r.completion_tokens*3+n}async chatCompletion(r){try{let n=await this.client.chat.completions.create({model:this.model,messages:r.messages,max_tokens:this.maxTokens}),a=this.measureTokenUsage(n.usage);return{message:n.choices[0]?.message.content||void 0,tokensUsed:a}}catch(n){throw n instanceof Ci.default.APIError&&console.error(`OpenAI Prompt failed with error of type ${n.type} and status: ${n.status}:${n.code} - ${n.message}`),n}}};var qi=O(require("@anthropic-ai/sdk"));var _a=class extends ft{constructor(r){super(r);this.client=new qi.default({apiKey:r.apiKey})}firstTextBlock(r){for(let n of r.content)if(n.type==="text")return n.text}async chatCompletion(r){try{let n=await this.client.messages.create({model:this.model,messages:r.messages.map(({content:o})=>({role:"user",content:o})),max_tokens:this.maxTokens});return{message:this.firstTextBlock(n)}}catch(n){throw n instanceof qi.default.APIError&&console.error(`Anthropic Prompt failed with error ${n.name} and status: ${n.status}`),n}}};var gt=require("@budibase/backend-core"),xa=class extends ft{constructor(t){if(super(t),!gt.env.SELF_HOSTED)throw new Error("BudibaseAI LLM provider is only for use in self-host environments.");if(!gt.env.BUDICLOUD_URL)throw new Error("BUDICLOUD_URL is not set");if(!this.apiKey)throw new Error("BudibaseAI API key is not set")}async chatCompletion(t){let r=await fetch(`${gt.env.BUDICLOUD_URL}/api/ai/chat`,{method:"POST",headers:{"Content-Type":"application/json",[gt.constants.Header.LICENSE_KEY]:this.apiKey},body:JSON.stringify({messages:t.messages})});if(!r.ok)throw new gt.HTTPError(r.statusText,r.status);return{message:(await r.json()).message}}};var Ta="gpt-4o-mini",tG={OpenAI:Ct,Anthropic:_a,TogetherAI:Ct,AzureOpenAI:Ct,Custom:Ct,BudibaseAI:xa};function rG(e){for(let t in e)if(e[t].isDefault)return e[t]}async function nG(){if(!await Ko())return;let e=await We.configs.getAIConfig();if(!e)return;let t=rG(e.config);if(!(!t||!t.apiKey))return{provider:t.provider,model:t.defaultModel||Ta,apiKey:t.apiKey,measureUsage:!1}}function aG(){if(!(!We.env.SELF_HOSTED||!We.env.OPENAI_API_KEY))return{provider:"OpenAI",model:Ta,apiKey:We.env.OPENAI_API_KEY,measureUsage:!1}}async function oG(){if(await sn()&&We.env.OPENAI_API_KEY)return{provider:"OpenAI",apiKey:We.env.OPENAI_API_KEY,model:Ta,measureUsage:!0}}async function sG(){if(!await We.features.isEnabled(th.FeatureFlag.AI_JS_GENERATION))return;let e=await ko();if(e)return{provider:"BudibaseAI",apiKey:e,model:Ta,measureUsage:!1}}async function Pa(e){let t=await nG()||aG()||await oG()||await sG();if(!t)return;e&&(t.model=e);let r=tG[t.provider];if(r)return new r(t)}var $e=require("@budibase/backend-core");var iG=/```(?:\w+)?\n([\s\S]+?)\n```/;async function Di(){let e=await Pa();if(!e)throw new $e.HTTPError("No available LLM configurations",500);return e}async function rh(e){let t=await Di(),{prompt:r}=e.request.body,{message:n}=await t.generateCronExpression(r);n?.startsWith("Error generating cron:")?e.throw(400,n):e.body={message:n}}async function nh(e){await $e.features.isEnabled(Ui.FeatureFlag.AI_JS_GENERATION)||e.throw(500,"AI JS generation is disabled");let t=await Di();await $e.context.ensureSnippetContext();let n=$e.context.getCurrentContext()?.snippets||[],{prompt:a,bindings:o=[]}=e.request.body,i=(await t.generateJs(a,{bindings:o,snippets:n})).message||"",s=i.match(iG);s&&(i=s[1]),e.body={code:i}}async function ah(e){await $e.features.isEnabled(Ui.FeatureFlag.AI_JS_GENERATION)||e.throw(500,"AI JS generation is disabled"),$e.env.SELF_HOSTED&&e.throw(500,"Budibase AI endpoints are not available in self-host");let t=await Di(),r=ie.fromRequest(e.request.body),{message:n}=await t.chatCompletion(r);e.body={message:n}}var sh=O(require("@koa/router")),Bi=require("@budibase/backend-core");var Oa=require("@budibase/backend-core");async function oh(e,t){let r=e.request.headers[Oa.constants.Header.LICENSE_KEY];Array.isArray(r)&&(r=r[0]),r||e.throw(403,"License key not provided");let n=await Go(r);n||e.throw(403,"License not found or invalid"),await Oa.context.doInTenant(n.tenantId,async()=>{await t()})}var Ca=new sh.default;Ca.post("/api/ai/cron",Bi.auth.builderOrAdmin,rh);Ca.post("/api/ai/js",Bi.auth.builderOrAdmin,nh);Ca.post("/api/ai/chat",oh,ah);var ih=Ca;async function uh(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let n=await xt(t._id);t.roles=n.roles,t.scimInfo=n.scimInfo}let r=await or(t);e.body={_id:r.id,_rev:r.rev}}async function ph(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of users to add or to remove");let a,o;r&&(a=await ns(t,r)),n&&(o=await as(t,n)),e.body={added:a,removed:o}}async function ch(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of objects, with appId and roleId to add or remove"),e.body=await os(t,{appsToAdd:r,appsToRemove:n})}async function lh(e){e.body={data:await pn()}}async function dh(e){let{groupId:t,rev:r}=e.params;try{await rs(t,r),e.body={message:"Group deleted successfully"}}catch(n){e.throw(n.status,n)}}async function fh(e){try{e.body=await xt(e.params.groupId)}catch(t){e.throw(t.status,t)}}async function gh(e){let{pageSize:t=10,bookmark:r,emailSearch:n}=e.request.query,a=e.params.groupId,o={limit:t+1},i=await xn(a,{...o,emailSearch:n,bookmark:r}),s=n?i[t]?.email:i[t]?._id,c=!!s;e.body={users:i.slice(0,t),bookmark:s,hasNextPage:c}}async function mh(e){let{groupId:t,appId:r}=e.params;await ss(t,r),e.body={message:"Group app builder access updated."}}async function yh(e){let{groupId:t,appId:r}=e.params;await is(t,r),e.body={message:"group app builder access removed."}}var Ah=O(require("@koa/router")),ge=O(require("joi"));var ve=require("@budibase/types"),Ve=require("@budibase/backend-core"),hh=new Ah.default;function cG(){return Ve.auth.joiValidator.body(ge.default.object({_id:ge.default.string().optional(),_rev:ge.default.string().optional(),color:ge.default.string().required(),icon:ge.default.string().required(),name:ge.default.string().trim().required().max(50),role:ge.default.string().optional(),users:ge.default.array().optional(),apps:ge.default.array().optional(),roles:ge.default.object().optional(),createdAt:ge.default.string().optional(),updatedAt:ge.default.string().optional()}).required())}hh.post("/api/global/groups",Ve.auth.adminOnly,M.requireFeature(ve.Feature.USER_GROUPS),cG(),uh).get("/api/global/groups",M.requireFeature(ve.Feature.USER_GROUPS),lh).delete("/api/global/groups/:groupId/:rev",M.requireFeature(ve.Feature.USER_GROUPS),Ve.auth.adminOnly,Ra("groupId"),dh).get("/api/global/groups/:groupId",M.requireFeature(ve.Feature.USER_GROUPS),Ve.auth.builderOrAdmin,fh).get("/api/global/groups/:groupId/users",M.requireFeature(ve.Feature.USER_GROUPS),Ve.auth.builderOrAdmin,gh).post("/api/global/groups/:groupId/users",Ve.auth.adminOnly,M.requireFeature(ve.Feature.USER_GROUPS),Ra("groupId"),ph).post("/api/global/groups/:groupId/apps",Ve.auth.builderOrAdmin,M.requireFeature(ve.Feature.USER_GROUPS),ch).post("/api/global/groups/:groupId/app/:appId/builder",Ve.auth.builderOrAdmin,M.requireFeatures(ve.Feature.USER_GROUPS,ve.Feature.APP_BUILDERS),mh).delete("/api/global/groups/:groupId/app/:appId/builder",Ve.auth.builderOrAdmin,M.requireFeatures(ve.Feature.USER_GROUPS,ve.Feature.APP_BUILDERS),yh);var Ih=hh;var Ni=require("@budibase/types");var Gi=require("@budibase/backend-core");async function bh(e){e.body={encryptionKeyAvailable:Qe.isEncryptionKeyAvailable()}}async function Sh(e){e.body={variables:await Qe.fetch()}}async function wh(e){let{name:t,production:r,development:n}=e.request.body;await Qe.update(t,{production:r,development:n});let a=[Ni.AppEnvironment.PRODUCTION];r!==n&&a.push(Ni.AppEnvironment.DEVELOPMENT),await Gi.events.environmentVariable.created(t,a),e.body={message:`Environment variable "${t}" created.`}}async function vh(e){let{production:t,development:r}=e.request.body,n=e.params.varName;await Qe.update(n,{production:t,development:r}),e.body={message:`Environment variable "${n}" updated.`}}async function Eh(e){let t=e.params.varName;await Qe.remove(t),await Gi.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}var qt=require("@budibase/backend-core"),_h=O(require("@koa/router")),In=O(require("joi")),xh=new _h.default;function Rh(){return qt.auth.joiValidator.body(In.default.object({name:In.default.string().optional(),production:In.default.string().required(),development:In.default.string().required()}))}xh.get("/api/env/variables/status",qt.auth.builderOrAdmin,bh).get("/api/env/variables",qt.auth.builderOrAdmin,Sh).post("/api/env/variables",qt.auth.builderOrAdmin,Rh(),wh).patch("/api/env/variables/:varName",qt.auth.builderOrAdmin,Rh(),vh).delete("/api/env/variables/:varName",qt.auth.builderOrAdmin,Eh);var Th=xh;var Mi=require("@budibase/backend-core");async function Ph(e){let t=e.request.body,r=await ct.fetch(t);await Mi.events.auditLog.filtered(t),e.body=r}async function Oh(e){let t=e.request.body,{stream:r}=ct.download(t);await Mi.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}async function Ch(e){e.body={events:ct.definitions()}}var Lh=require("@budibase/types"),Lt=require("@budibase/backend-core"),Uh=O(require("@koa/router")),Ee=O(require("joi"));function qh(){return Lt.auth.joiValidator.body(Ee.default.object({userIds:Ee.default.array().items(Ee.default.string()).optional(),appIds:Ee.default.array().items(Ee.default.string()).optional(),events:Ee.default.array().items(Ee.default.string().valid(...Object.values(Lh.Event))).optional(),startDate:Ee.default.string().optional().allow(""),endDate:Ee.default.string().optional().allow(""),fullSearch:Ee.default.string().optional().allow(""),bookmark:Ee.default.number()}))}var Dh=new Uh.default;Dh.post("/api/global/auditlogs/search",Lt.auth.adminOnly,qh(),Ph).get("/api/global/auditlogs/download",Lt.auth.adminOnly,Lt.middleware.querystringToBody,qh(),Oh).get("/api/global/auditlogs/definitions",Lt.auth.adminOnly,Ch);var Bh=Dh;var ki=require("@budibase/types");var Nh=require("@budibase/backend-core");async function fr(e,t){await Ft.appExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}async function Gh(e){let t=e.params.appId;await fr(e,t);let r=e.request.body,n=e.user?._id,a=await we.triggerAppBackup(t,ki.AppBackupTrigger.MANUAL,{name:r.name,createdBy:n});a||e.throw(500,"Unable to start backup."),e.body={backupId:a,message:"Backup triggered - process starting."}}async function Mh(e){let t=e.params.appId;await fr(e,t);let r=e.params.backupId,n=e.request.body.name,a=await we.triggerAppRestore(t,r,n,e.user?._id);a||e.throw(500,"Unable to start restore."),await Nh.events.backup.appBackupRestored(a.metadata),e.body={restoredId:a?.restoreId,message:"Restore triggered - process starting."}}async function kh(e){let t=e.params.appId;await fr(e,t);let r=e.params.backupId;await we.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}async function Fh(e){let t=e.params.appId;await fr(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(ki.AppBackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await we.fetchAppBackups(t,{paginate:!0,...r})}async function Qh(e){let t=e.params.appId;await fr(e,t);let r=e.params.backupId,n=e.request.body;e.body=await we.updateAppBackup(r,n.name)}async function jh(e){let t=e.params.appId;await fr(e,t);let r=e.params.backupId,{metadata:n,stream:a}=await we.getBackupDownloadStream(r);e.attachment(`backup-${n.timestamp}.tar.gz`),e.body=a}var Wh=O(require("@koa/router")),Ut=O(require("joi")),qa=require("@budibase/types"),mt=require("@budibase/backend-core"),$h=new Wh.default;function gG(){return mt.auth.joiValidator.body(Ut.default.object({trigger:Ut.default.string().valid(...Object.values(qa.AppBackupTrigger)),type:Ut.default.string().valid(...Object.values(qa.AppBackupType)),startDate:Ut.default.date(),endDate:Ut.default.date(),page:Ut.default.string()}))}$h.post("/api/apps/:appId/backups",mt.auth.builderOrAdmin,Gh).post("/api/apps/:appId/backups/search",mt.auth.builderOrAdmin,gG(),Fh).get("/api/apps/:appId/backups/:backupId/file",mt.auth.builderOrAdmin,jh).patch("/api/apps/:appId/backups/:backupId",mt.auth.builderOrAdmin,Qh).delete("/api/apps/:appId/backups/:backupId",mt.auth.builderOrAdmin,kh).post("/api/apps/:appId/backups/:backupId/import",mt.auth.builderOrAdmin,Mh);var Vh=$h;var SI=O(require("@koa/router"));var La=require("scim-patch");var Yh=require("@budibase/backend-core");function Kh(e,t){let r=e.request.query[t];if(r!==void 0)return+r}var Hh=async e=>{let t=Kh(e,"pageSize")??20,r=Kh(e,"startIndex"),n;e.request.query.filter&&(n=Q.user.userFilters(e.request.query.filter));let a=await se.get({pageSize:t,skip:r,filters:n});e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:a.total,Resources:a.users.map(Q.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},Jh=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await se.find(t);e.body=Q.user.toScimUserResponse(r)},zh=async e=>{let t=Q.user.fromScimUser(e.request.body);try{let r=await se.create(t);e.body=Q.user.toScimUserResponse(r)}catch(r){throw r instanceof Yh.EmailUnavailableError&&e.throw(409,"Email already in use"),r}};function mG(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 Xh=async e=>{let t=await se.find(e.params.id);t||e.throw(404);let r=Q.user.toScimUserResponse(t),n=e.request.body;try{(0,La.patchBodyValidation)(n)}catch{}if(mG(n))return Fi(e);let a;try{a=(0,La.scimPatch)(r,n.Operations)}catch{}a||e.throw(500);let o=Q.user.fromScimUser(a);await se.update(o,{allowChangingEmail:!0}),e.body=Q.user.toScimUserResponse(o)},Fi=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await se.remove(t),e.status=204};var fI=O(dI()),gI=require("@budibase/shared-core"),Ua=require("scim-patch");var Da=require("scim2-parse-filter");function mI(e,t){for(let r of t.split(","))delete e[r]}var yI=async e=>{let r=(await G.fetch()).filter(o=>o.scimInfo?.isSync).map(Q.group.toScimGroupResponse),{filter:n,excludedAttributes:a}=e.request.query;if(n){let o=(0,Da.filter)((0,Da.parse)(n));r=r.filter(o)}a&&r.forEach(o=>{mI(o,a)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},AI=async e=>{let t=Q.group.fromScimGroup(e.request.body),r=await dr.create(t);e.body=Q.group.toScimGroupResponse(r)},hI=async e=>{let{id:t}=e.params,r=await G.get(t),n=Q.group.toScimGroupResponse(r),{excludedAttributes:a}=e.request.query;a&&mI(n,a),e.body=n},II=async e=>{let{id:t}=e.params,r=await G.get(t);await G.remove(t,r._rev),e.status=204},bI=async e=>{let{id:t}=e.params,r=await G.get(t),n=Q.group.toScimGroupResponse(r),a=e.request.body;try{(0,Ua.patchBodyValidation)(a)}catch{e.throw(400)}let{true:o,false:i}=(0,fI.default)(a.Operations,s=>s.path==="members");if(i?.length){let s=(0,Ua.scimPatch)(n,i);s||e.throw(500);let c={...Q.group.fromScimGroup(s),_rev:r._rev};await G.save(c)}if(o?.length){let s=[],c=[];for(let{op:f,value:m}of o)switch(f){case"add":case"Add":for(let g of m)s.push(await se.find(g.value));break;case"remove":case"Remove":for(let g of m)c.push(await se.find(g.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:gI.utils.unreachable(f)}s.length&&await G.addUsers(t,s.map(f=>f._id)),c.length&&await G.removeUsers(t,c.map(f=>f._id))}e.body=Q.group.toScimGroupResponse(await G.get(t))};var bn=require("@budibase/types"),me=new SI.default({prefix:"/api/global/scim/v2"});me.use(_i);me.use(Ri);me.get("/users",Hh);me.get("/users/:id",An("id"),Jh);me.post("/users",zh);me.patch("/users/:id",An("id"),Xh);me.delete("/users/:id",An("id"),Fi);me.get("/groups",yI);me.post("/groups",M.requireFeature(bn.Feature.USER_GROUPS),AI);me.get("/groups/:id",M.requireFeature(bn.Feature.USER_GROUPS),hn("id"),hI);me.delete("/groups/:id",M.requireFeature(bn.Feature.USER_GROUPS),hn("id"),II);me.patch("/groups/:id",M.requireFeature(bn.Feature.USER_GROUPS),hn("id"),bI);var wI=me;var RI=O(require("@koa/router"));var Qi=require("@budibase/backend-core");async function vI(e){let{userId:t,appId:r}=e.params,n=await Je.db.getUser(t);if(Qi.users.isGlobalBuilder(n)){e.body={message:"User already admin - no permissions updated."};return}await Je.addAppBuilder(n,r),e.body={message:`User "${n.email}" app builder access updated.`}}async function EI(e){let{userId:t,appId:r}=e.params,n=await Je.db.getUser(t);if(Qi.users.isGlobalBuilder(n)){e.body={message:"User already admin - no permissions removed."};return}await Je.removeAppBuilder(n,r),e.body={message:`User "${n.email}" app builder access removed.`}}var ji=require("@budibase/types"),Wi=require("@budibase/backend-core"),_I=new RI.default;_I.post("/api/global/users/:userId/app/:appId/builder",Wi.auth.builderOrAdmin,M.requireFeatures(ji.Feature.APP_BUILDERS),vI).delete("/api/global/users/:userId/app/:appId/builder",Wi.auth.builderOrAdmin,M.requireFeatures(ji.Feature.APP_BUILDERS),EI);var xI=_I;var Q={};S(Q,{group:()=>Ki,user:()=>Vi});var Vi={};S(Vi,{fromScimUser:()=>WG,toScimUserResponse:()=>FG,userFilters:()=>$G});var Ba=require("@budibase/types"),TI=require("scim2-parse-filter"),PI=require("@budibase/backend-core"),OI=require("@budibase/shared-core"),{unreachable:kG}=OI.utils,FG=e=>{let{isSync:t,roles:r,...n}=e.scimInfo||{},a={...n,schemas:["urn:ietf:params:scim:schemas:core:2.0:User"],id:e._id,meta:{resourceType:"User",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},active:e.status===Ba.UserStatus.ACTIVE};return(e.firstName||e.lastName)&&(a.name={formatted:[e.firstName,e.lastName].filter(o=>o).join(" "),familyName:e.lastName,givenName:e.firstName}),a},QG=e=>!!e?.id;function jG(e){if(PI.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}var WG=e=>{let t=QG(e)?e:void 0,r=jG(e);if(!r)throw new Error("Email is required");let n;switch(e.active){case"True":case"true":case!0:n=!0;break;case"False":case"false":case!1:n=!1;break;default:kG(e.active)}let a,o;return e.name?.givenName?(a=e.name?.givenName,o=e.name?.familyName):a=e.displayName,{tenantId:"",_id:t?.id,userId:t?.id,email:r,firstName:a,lastName:o,scimInfo:{...e,isSync:!0},roles:{},status:n?Ba.UserStatus.ACTIVE:Ba.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},$G=e=>{let t={equal:{}},r=(0,TI.parse)(e);function n(a){switch(a.op){case"eq":{let o=a.attrPath,i;switch(o){case"emails.value":i="email";break;default:i=`scimInfo.${o}`}t.equal[i]=a.compValue;break}case"and":for(let o of a.filters)n(o);break;default:console.warn("Filter not handled",{filter:a})}}return n(r),t};var Ki={};S(Ki,{fromScimGroup:()=>YG,toScimGroupResponse:()=>VG});var VG=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}))}),KG=e=>!!e?.id,YG=e=>{let t=KG(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()}};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});
|
|
136
|
+
${r}`)}var nh=require("@budibase/shared-core");function Oi(e,t){return t.map(r=>e[r]).join(" ")}var ft=class{constructor({model:t,apiKey:r,measureUsage:n}){this.model=t,this.apiKey=r,this.measureUsage=n,this.maxTokens=parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"300")}async prompt(t){typeof t=="string"&&(t=ie.user(t));let r=await this.chatCompletion(t);return this.measureUsage&&r.tokensUsed!==void 0&&r.tokensUsed>0&&await ts(r.tokensUsed),r}async summarizeText(t){return this.prompt(Pi(t))}async generateCronExpression(t){return this.prompt(XA(t))}async operation(t,r){let n=this.promptForOperation(t,r);return this.prompt(n)}promptForOperation(t,r){let{operation:n,column:a,columns:o,language:i,categories:s,prompt:c}=t;switch(n){case dt.AIOperationEnum.SUMMARISE_TEXT:return Pi(Oi(r,o));case dt.AIOperationEnum.CLEAN_DATA:return zA(r[a]);case dt.AIOperationEnum.TRANSLATE:return ZA(r[a],i);case dt.AIOperationEnum.CATEGORISE_TEXT:if(!s)throw Error("No categories provided for categorise text operation. Please provide categories.");return JA(Oi(r,o),s.split(","));case dt.AIOperationEnum.SENTIMENT_ANALYSIS:return eh(r[a]);case dt.AIOperationEnum.PROMPT:return c;case dt.AIOperationEnum.SEARCH_WEB:return th(Oi(r,o));default:throw nh.utils.unreachable(n)}}async generateJs(t,r){let{bindings:n=[],snippets:a=[]}=r||{};return await this.prompt(rh(n,a).user(t))}};var Ct=class extends ft{constructor({model:r,apiKey:n,measureUsage:a}){super({model:r,apiKey:n,measureUsage:a});this.client=new Ci.default({apiKey:n})}measureTokenUsage(r){if(!r)return 0;let n=r.prompt_tokens;return r.completion_tokens*3+n}async chatCompletion(r){try{let n=await this.client.chat.completions.create({model:this.model,messages:r.messages,max_tokens:this.maxTokens}),a=this.measureTokenUsage(n.usage);return{message:n.choices[0]?.message.content||void 0,tokensUsed:a}}catch(n){throw n instanceof Ci.default.APIError&&console.error(`OpenAI Prompt failed with error of type ${n.type} and status: ${n.status}:${n.code} - ${n.message}`),n}}};var qi=O(require("@anthropic-ai/sdk"));var xa=class extends ft{constructor(r){super(r);this.client=new qi.default({apiKey:r.apiKey})}firstTextBlock(r){for(let n of r.content)if(n.type==="text")return n.text}async chatCompletion(r){try{let n=await this.client.messages.create({model:this.model,messages:r.messages.map(({content:o})=>({role:"user",content:o})),max_tokens:this.maxTokens});return{message:this.firstTextBlock(n)}}catch(n){throw n instanceof qi.default.APIError&&console.error(`Anthropic Prompt failed with error ${n.name} and status: ${n.status}`),n}}};var gt=require("@budibase/backend-core"),Ta=class extends ft{constructor(t){if(super(t),!gt.env.SELF_HOSTED)throw new Error("BudibaseAI LLM provider is only for use in self-host environments.");if(!gt.env.BUDICLOUD_URL)throw new Error("BUDICLOUD_URL is not set");if(!this.apiKey)throw new Error("BudibaseAI API key is not set")}async chatCompletion(t){let r=await fetch(`${gt.env.BUDICLOUD_URL}/api/ai/chat`,{method:"POST",headers:{"Content-Type":"application/json",[gt.constants.Header.LICENSE_KEY]:this.apiKey},body:JSON.stringify({messages:t.messages})});if(!r.ok)throw new gt.HTTPError(r.statusText,r.status);return{message:(await r.json()).message}}};var Pa="gpt-4o-mini",rG={OpenAI:Ct,Anthropic:xa,TogetherAI:Ct,AzureOpenAI:Ct,Custom:Ct,BudibaseAI:Ta};function nG(e){for(let t in e)if(e[t].isDefault)return e[t]}async function aG(){if(!await Ko()||ge.context.isSelfHostUsingCloud())return;let e=await ge.configs.getAIConfig();if(!e)return;let t=nG(e.config);if(!(!t||!t.apiKey))return{provider:t.provider,model:t.defaultModel||Pa,apiKey:t.apiKey,measureUsage:!1}}function oG(){if(!(!ge.env.SELF_HOSTED||!ge.env.OPENAI_API_KEY))return{provider:"OpenAI",model:Pa,apiKey:ge.env.OPENAI_API_KEY,measureUsage:!1}}async function sG(){if(await sn()&&ge.env.OPENAI_API_KEY)return{provider:"OpenAI",apiKey:ge.env.OPENAI_API_KEY,model:Pa,measureUsage:!0}}async function iG(){if(!await ge.features.isEnabled(ah.FeatureFlag.AI_JS_GENERATION)||ge.context.isSelfHostUsingCloud())return;let e=await ko();if(e)return{provider:"BudibaseAI",apiKey:e,model:Pa,measureUsage:!1}}async function Oa(e){let t=await aG()||oG()||await sG()||await iG();if(!t)return;e&&(t.model=e);let r=rG[t.provider];if(r)return new r(t)}var $e=require("@budibase/backend-core");var uG=/```(?:\w+)?\n([\s\S]+?)\n```/;async function Di(){let e=await Oa();if(!e)throw new $e.HTTPError("No available LLM configurations",500);return e}async function oh(e){let t=await Di(),{prompt:r}=e.request.body,{message:n}=await t.generateCronExpression(r);n?.startsWith("Error generating cron:")?e.throw(400,n):e.body={message:n}}async function sh(e){await $e.features.isEnabled(Ui.FeatureFlag.AI_JS_GENERATION)||e.throw(500,"AI JS generation is disabled");let t=await Di();await $e.context.ensureSnippetContext();let n=$e.context.getCurrentContext()?.snippets||[],{prompt:a,bindings:o=[]}=e.request.body,i=(await t.generateJs(a,{bindings:o,snippets:n})).message||"",s=i.match(uG);s&&(i=s[1]),e.body={code:i}}async function ih(e){await $e.features.isEnabled(Ui.FeatureFlag.AI_JS_GENERATION)||e.throw(500,"AI JS generation is disabled"),$e.env.SELF_HOSTED&&e.throw(500,"Budibase AI endpoints are not available in self-host");let t=await Di(),r=ie.fromRequest(e.request.body),{message:n}=await t.prompt(r);e.body={message:n}}var ph=O(require("@koa/router")),Bi=require("@budibase/backend-core");var Ca=require("@budibase/backend-core");async function uh(e,t){let r=e.request.headers[Ca.constants.Header.LICENSE_KEY];Array.isArray(r)&&(r=r[0]),r||e.throw(403,"License key not provided");let n=await Go(r);n||e.throw(403,"License not found or invalid"),n.tenantId||e.throw(403,"License does not have a tenant ID"),await Ca.context.doInSelfHostTenantUsingCloud(n.tenantId,async()=>{await t()})}var qa=new ph.default;qa.post("/api/ai/cron",Bi.auth.builderOrAdmin,oh);qa.post("/api/ai/js",Bi.auth.builderOrAdmin,sh);qa.post("/api/ai/chat",uh,ih);var ch=qa;async function lh(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let n=await xt(t._id);t.roles=n.roles,t.scimInfo=n.scimInfo}let r=await or(t);e.body={_id:r.id,_rev:r.rev}}async function dh(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of users to add or to remove");let a,o;r&&(a=await ns(t,r)),n&&(o=await as(t,n)),e.body={added:a,removed:o}}async function fh(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of objects, with appId and roleId to add or remove"),e.body=await os(t,{appsToAdd:r,appsToRemove:n})}async function gh(e){e.body={data:await pn()}}async function mh(e){let{groupId:t,rev:r}=e.params;try{await rs(t,r),e.body={message:"Group deleted successfully"}}catch(n){e.throw(n.status,n)}}async function yh(e){try{e.body=await xt(e.params.groupId)}catch(t){e.throw(t.status,t)}}async function Ah(e){let{pageSize:t=10,bookmark:r,emailSearch:n}=e.request.query,a=e.params.groupId,o={limit:t+1},i=await Tn(a,{...o,emailSearch:n,bookmark:r}),s=n?i[t]?.email:i[t]?._id,c=!!s;e.body={users:i.slice(0,t),bookmark:s,hasNextPage:c}}async function hh(e){let{groupId:t,appId:r}=e.params;await ss(t,r),e.body={message:"Group app builder access updated."}}async function Ih(e){let{groupId:t,appId:r}=e.params;await is(t,r),e.body={message:"group app builder access removed."}}var bh=O(require("@koa/router")),me=O(require("joi"));var Ee=require("@budibase/types"),Ve=require("@budibase/backend-core"),Sh=new bh.default;function lG(){return Ve.auth.joiValidator.body(me.default.object({_id:me.default.string().optional(),_rev:me.default.string().optional(),color:me.default.string().required(),icon:me.default.string().required(),name:me.default.string().trim().required().max(50),role:me.default.string().optional(),users:me.default.array().optional(),apps:me.default.array().optional(),roles:me.default.object().optional(),createdAt:me.default.string().optional(),updatedAt:me.default.string().optional()}).required())}Sh.post("/api/global/groups",Ve.auth.adminOnly,M.requireFeature(Ee.Feature.USER_GROUPS),lG(),lh).get("/api/global/groups",M.requireFeature(Ee.Feature.USER_GROUPS),gh).delete("/api/global/groups/:groupId/:rev",M.requireFeature(Ee.Feature.USER_GROUPS),Ve.auth.adminOnly,_a("groupId"),mh).get("/api/global/groups/:groupId",M.requireFeature(Ee.Feature.USER_GROUPS),Ve.auth.builderOrAdmin,yh).get("/api/global/groups/:groupId/users",M.requireFeature(Ee.Feature.USER_GROUPS),Ve.auth.builderOrAdmin,Ah).post("/api/global/groups/:groupId/users",Ve.auth.adminOnly,M.requireFeature(Ee.Feature.USER_GROUPS),_a("groupId"),dh).post("/api/global/groups/:groupId/apps",Ve.auth.builderOrAdmin,M.requireFeature(Ee.Feature.USER_GROUPS),fh).post("/api/global/groups/:groupId/app/:appId/builder",Ve.auth.builderOrAdmin,M.requireFeatures(Ee.Feature.USER_GROUPS,Ee.Feature.APP_BUILDERS),hh).delete("/api/global/groups/:groupId/app/:appId/builder",Ve.auth.builderOrAdmin,M.requireFeatures(Ee.Feature.USER_GROUPS,Ee.Feature.APP_BUILDERS),Ih);var wh=Sh;var Ni=require("@budibase/types");var Gi=require("@budibase/backend-core");async function vh(e){e.body={encryptionKeyAvailable:je.isEncryptionKeyAvailable()}}async function Eh(e){e.body={variables:await je.fetch()}}async function Rh(e){let{name:t,production:r,development:n}=e.request.body;await je.update(t,{production:r,development:n});let a=[Ni.AppEnvironment.PRODUCTION];r!==n&&a.push(Ni.AppEnvironment.DEVELOPMENT),await Gi.events.environmentVariable.created(t,a),e.body={message:`Environment variable "${t}" created.`}}async function _h(e){let{production:t,development:r}=e.request.body,n=e.params.varName;await je.update(n,{production:t,development:r}),e.body={message:`Environment variable "${n}" updated.`}}async function xh(e){let t=e.params.varName;await je.remove(t),await Gi.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}var qt=require("@budibase/backend-core"),Ph=O(require("@koa/router")),In=O(require("joi")),Oh=new Ph.default;function Th(){return qt.auth.joiValidator.body(In.default.object({name:In.default.string().optional(),production:In.default.string().required(),development:In.default.string().required()}))}Oh.get("/api/env/variables/status",qt.auth.builderOrAdmin,vh).get("/api/env/variables",qt.auth.builderOrAdmin,Eh).post("/api/env/variables",qt.auth.builderOrAdmin,Th(),Rh).patch("/api/env/variables/:varName",qt.auth.builderOrAdmin,Th(),_h).delete("/api/env/variables/:varName",qt.auth.builderOrAdmin,xh);var Ch=Oh;var Mi=require("@budibase/backend-core");async function qh(e){let t=e.request.body,r=await ct.fetch(t);await Mi.events.auditLog.filtered(t),e.body=r}async function Lh(e){let t=e.request.body,{stream:r}=ct.download(t);await Mi.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}async function Uh(e){e.body={events:ct.definitions()}}var Bh=require("@budibase/types"),Lt=require("@budibase/backend-core"),Nh=O(require("@koa/router")),Re=O(require("joi"));function Dh(){return Lt.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(Bh.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 Gh=new Nh.default;Gh.post("/api/global/auditlogs/search",Lt.auth.adminOnly,Dh(),qh).get("/api/global/auditlogs/download",Lt.auth.adminOnly,Lt.middleware.querystringToBody,Dh(),Lh).get("/api/global/auditlogs/definitions",Lt.auth.adminOnly,Uh);var Mh=Gh;var ki=require("@budibase/types");var kh=require("@budibase/backend-core");async function fr(e,t){await Ft.appExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}async function Fh(e){let t=e.params.appId;await fr(e,t);let r=e.request.body,n=e.user?._id,a=await ve.triggerAppBackup(t,ki.AppBackupTrigger.MANUAL,{name:r.name,createdBy:n});a||e.throw(500,"Unable to start backup."),e.body={backupId:a,message:"Backup triggered - process starting."}}async function Qh(e){let t=e.params.appId;await fr(e,t);let r=e.params.backupId,n=e.request.body.name,a=await ve.triggerAppRestore(t,r,n,e.user?._id);a||e.throw(500,"Unable to start restore."),await kh.events.backup.appBackupRestored(a.metadata),e.body={restoredId:a?.restoreId,message:"Restore triggered - process starting."}}async function jh(e){let t=e.params.appId;await fr(e,t);let r=e.params.backupId;await ve.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}async function Wh(e){let t=e.params.appId;await fr(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(ki.AppBackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await ve.fetchAppBackups(t,{paginate:!0,...r})}async function $h(e){let t=e.params.appId;await fr(e,t);let r=e.params.backupId,n=e.request.body;e.body=await ve.updateAppBackup(r,n.name)}async function Vh(e){let t=e.params.appId;await fr(e,t);let r=e.params.backupId,{metadata:n,stream:a}=await ve.getBackupDownloadStream(r);e.attachment(`backup-${n.timestamp}.tar.gz`),e.body=a}var Kh=O(require("@koa/router")),Ut=O(require("joi")),La=require("@budibase/types"),mt=require("@budibase/backend-core"),Hh=new Kh.default;function mG(){return mt.auth.joiValidator.body(Ut.default.object({trigger:Ut.default.string().valid(...Object.values(La.AppBackupTrigger)),type:Ut.default.string().valid(...Object.values(La.AppBackupType)),startDate:Ut.default.date(),endDate:Ut.default.date(),page:Ut.default.string()}))}Hh.post("/api/apps/:appId/backups",mt.auth.builderOrAdmin,Fh).post("/api/apps/:appId/backups/search",mt.auth.builderOrAdmin,mG(),Wh).get("/api/apps/:appId/backups/:backupId/file",mt.auth.builderOrAdmin,Vh).patch("/api/apps/:appId/backups/:backupId",mt.auth.builderOrAdmin,$h).delete("/api/apps/:appId/backups/:backupId",mt.auth.builderOrAdmin,jh).post("/api/apps/:appId/backups/:backupId/import",mt.auth.builderOrAdmin,Qh);var Yh=Hh;var EI=O(require("@koa/router"));var Ua=require("scim-patch");var zh=require("@budibase/backend-core");function Jh(e,t){let r=e.request.query[t];if(r!==void 0)return+r}var Xh=async e=>{let t=Jh(e,"pageSize")??20,r=Jh(e,"startIndex"),n;e.request.query.filter&&(n=Q.user.userFilters(e.request.query.filter));let a=await se.get({pageSize:t,skip:r,filters:n});e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:a.total,Resources:a.users.map(Q.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},Zh=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await se.find(t);e.body=Q.user.toScimUserResponse(r)},eI=async e=>{let t=Q.user.fromScimUser(e.request.body);try{let r=await se.create(t);e.body=Q.user.toScimUserResponse(r)}catch(r){throw r instanceof zh.EmailUnavailableError&&e.throw(409,"Email already in use"),r}};function yG(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 tI=async e=>{let t=await se.find(e.params.id);t||e.throw(404);let r=Q.user.toScimUserResponse(t),n=e.request.body;try{(0,Ua.patchBodyValidation)(n)}catch{}if(yG(n))return Fi(e);let a;try{a=(0,Ua.scimPatch)(r,n.Operations)}catch{}a||e.throw(500);let o=Q.user.fromScimUser(a);await se.update(o,{allowChangingEmail:!0}),e.body=Q.user.toScimUserResponse(o)},Fi=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await se.remove(t),e.status=204};var yI=O(mI()),AI=require("@budibase/shared-core"),Da=require("scim-patch");var Ba=require("scim2-parse-filter");function hI(e,t){for(let r of t.split(","))delete e[r]}var II=async e=>{let r=(await G.fetch()).filter(o=>o.scimInfo?.isSync).map(Q.group.toScimGroupResponse),{filter:n,excludedAttributes:a}=e.request.query;if(n){let o=(0,Ba.filter)((0,Ba.parse)(n));r=r.filter(o)}a&&r.forEach(o=>{hI(o,a)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},bI=async e=>{let t=Q.group.fromScimGroup(e.request.body),r=await dr.create(t);e.body=Q.group.toScimGroupResponse(r)},SI=async e=>{let{id:t}=e.params,r=await G.get(t),n=Q.group.toScimGroupResponse(r),{excludedAttributes:a}=e.request.query;a&&hI(n,a),e.body=n},wI=async e=>{let{id:t}=e.params,r=await G.get(t);await G.remove(t,r._rev),e.status=204},vI=async e=>{let{id:t}=e.params,r=await G.get(t),n=Q.group.toScimGroupResponse(r),a=e.request.body;try{(0,Da.patchBodyValidation)(a)}catch{e.throw(400)}let{true:o,false:i}=(0,yI.default)(a.Operations,s=>s.path==="members");if(i?.length){let s=(0,Da.scimPatch)(n,i);s||e.throw(500);let c={...Q.group.fromScimGroup(s),_rev:r._rev};await G.save(c)}if(o?.length){let s=[],c=[];for(let{op:f,value:m}of o)switch(f){case"add":case"Add":for(let g of m)s.push(await se.find(g.value));break;case"remove":case"Remove":for(let g of m)c.push(await se.find(g.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:AI.utils.unreachable(f)}s.length&&await G.addUsers(t,s.map(f=>f._id)),c.length&&await G.removeUsers(t,c.map(f=>f._id))}e.body=Q.group.toScimGroupResponse(await G.get(t))};var bn=require("@budibase/types"),ye=new EI.default({prefix:"/api/global/scim/v2"});ye.use(_i);ye.use(Ri);ye.get("/users",Xh);ye.get("/users/:id",An("id"),Zh);ye.post("/users",eI);ye.patch("/users/:id",An("id"),tI);ye.delete("/users/:id",An("id"),Fi);ye.get("/groups",II);ye.post("/groups",M.requireFeature(bn.Feature.USER_GROUPS),bI);ye.get("/groups/:id",M.requireFeature(bn.Feature.USER_GROUPS),hn("id"),SI);ye.delete("/groups/:id",M.requireFeature(bn.Feature.USER_GROUPS),hn("id"),wI);ye.patch("/groups/:id",M.requireFeature(bn.Feature.USER_GROUPS),hn("id"),vI);var RI=ye;var TI=O(require("@koa/router"));var Qi=require("@budibase/backend-core");async function _I(e){let{userId:t,appId:r}=e.params,n=await Je.db.getUser(t);if(Qi.users.isGlobalBuilder(n)){e.body={message:"User already admin - no permissions updated."};return}await Je.addAppBuilder(n,r),e.body={message:`User "${n.email}" app builder access updated.`}}async function xI(e){let{userId:t,appId:r}=e.params,n=await Je.db.getUser(t);if(Qi.users.isGlobalBuilder(n)){e.body={message:"User already admin - no permissions removed."};return}await Je.removeAppBuilder(n,r),e.body={message:`User "${n.email}" app builder access removed.`}}var ji=require("@budibase/types"),Wi=require("@budibase/backend-core"),PI=new TI.default;PI.post("/api/global/users/:userId/app/:appId/builder",Wi.auth.builderOrAdmin,M.requireFeatures(ji.Feature.APP_BUILDERS),_I).delete("/api/global/users/:userId/app/:appId/builder",Wi.auth.builderOrAdmin,M.requireFeatures(ji.Feature.APP_BUILDERS),xI);var OI=PI;var Q={};S(Q,{group:()=>Ki,user:()=>Vi});var Vi={};S(Vi,{fromScimUser:()=>$G,toScimUserResponse:()=>QG,userFilters:()=>VG});var Na=require("@budibase/types"),CI=require("scim2-parse-filter"),qI=require("@budibase/backend-core"),LI=require("@budibase/shared-core"),{unreachable:FG}=LI.utils,QG=e=>{let{isSync:t,roles:r,...n}=e.scimInfo||{},a={...n,schemas:["urn:ietf:params:scim:schemas:core:2.0:User"],id:e._id,meta:{resourceType:"User",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},active:e.status===Na.UserStatus.ACTIVE};return(e.firstName||e.lastName)&&(a.name={formatted:[e.firstName,e.lastName].filter(o=>o).join(" "),familyName:e.lastName,givenName:e.firstName}),a},jG=e=>!!e?.id;function WG(e){if(qI.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}var $G=e=>{let t=jG(e)?e:void 0,r=WG(e);if(!r)throw new Error("Email is required");let n;switch(e.active){case"True":case"true":case!0:n=!0;break;case"False":case"false":case!1:n=!1;break;default:FG(e.active)}let a,o;return e.name?.givenName?(a=e.name?.givenName,o=e.name?.familyName):a=e.displayName,{tenantId:"",_id:t?.id,userId:t?.id,email:r,firstName:a,lastName:o,scimInfo:{...e,isSync:!0},roles:{},status:n?Na.UserStatus.ACTIVE:Na.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},VG=e=>{let t={equal:{}},r=(0,CI.parse)(e);function n(a){switch(a.op){case"eq":{let o=a.attrPath,i;switch(o){case"emails.value":i="email";break;default:i=`scimInfo.${o}`}t.equal[i]=a.compValue;break}case"and":for(let o of a.filters)n(o);break;default:console.warn("Filter not handled",{filter:a})}}return n(r),t};var Ki={};S(Ki,{fromScimGroup:()=>YG,toScimGroupResponse:()=>KG});var KG=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}))}),HG=e=>!!e?.id,YG=e=>{let t=HG(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()}};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.8.
|
|
7
|
+
"version": "3.8.3",
|
|
8
8
|
"description": "Budibase Pro (Backend)",
|
|
9
9
|
"main": "dist/index.js",
|
|
10
10
|
"types": "dist/index.d.ts",
|
|
@@ -72,5 +72,5 @@
|
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
},
|
|
75
|
-
"gitHead": "
|
|
75
|
+
"gitHead": "9a13dc96f190861b4dda22f159bf85480c46782c"
|
|
76
76
|
}
|