@budibase/pro 3.25.1 → 3.25.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.
- package/dist/ai/models/litellm.d.ts +5 -5
- package/dist/index.js +16 -16
- package/package.json +2 -2
|
@@ -11,11 +11,11 @@ export declare class LiteLLMAI extends OpenAI {
|
|
|
11
11
|
protected getClient(opts: LLMConfigOptions): OpenAIClient;
|
|
12
12
|
}
|
|
13
13
|
export declare const getLiteLLMProvider: (modelId: string) => string;
|
|
14
|
-
export declare const getLiteLLMProviderOptions: (
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
export declare const getLiteLLMProviderOptions: () => {
|
|
15
|
+
openai: {
|
|
16
|
+
parallelToolCalls: boolean;
|
|
17
|
+
reasoningEffort: "low";
|
|
18
|
+
};
|
|
19
19
|
};
|
|
20
20
|
export declare const createLiteLLMOpenAI: (config: LiteLLMOpenAIConfig) => import("@ai-sdk/openai").OpenAIProvider;
|
|
21
21
|
export {};
|
package/dist/index.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
"use strict";var DI=Object.create;var Dr=Object.defineProperty;var MI=Object.getOwnPropertyDescriptor;var BI=Object.getOwnPropertyNames;var NI=Object.getPrototypeOf,GI=Object.prototype.hasOwnProperty;var n=(e,t)=>Dr(e,"name",{value:t,configurable:!0});var p=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),_=(e,t)=>{for(var r in t)Dr(e,r,{get:t[r],enumerable:!0})},Zu=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of BI(t))!GI.call(e,o)&&o!==r&&Dr(e,o,{get:()=>t[o],enumerable:!(a=MI(t,o))||a.enumerable});return e};var G=(e,t,r)=>(r=e!=null?DI(NI(e)):{},Zu(t||!e||!e.__esModule?Dr(r,"default",{value:e,enumerable:!0}):r,e)),FI=e=>Zu(Dr({},"__esModule",{value:!0}),e);var ma=p((MG,Nc)=>{"use strict";function Bw(e,t){for(var r=-1,a=t.length,o=e.length;++r<a;)e[o+r]=t[r];return e}n(Bw,"arrayPush");Nc.exports=Bw});var Yo=p((NG,Gc)=>{"use strict";var Nw=typeof global=="object"&&global&&global.Object===Object&&global;Gc.exports=Nw});var Ee=p((GG,Fc)=>{"use strict";var Gw=Yo(),Fw=typeof self=="object"&&self&&self.Object===Object&&self,Ww=Gw||Fw||Function("return this")();Fc.exports=Ww});var jt=p((FG,Wc)=>{"use strict";var $w=Ee(),jw=$w.Symbol;Wc.exports=jw});var Kc=p((WG,Qc)=>{"use strict";var $c=jt(),jc=Object.prototype,Qw=jc.hasOwnProperty,Kw=jc.toString,dn=$c?$c.toStringTag:void 0;function Hw(e){var t=Qw.call(e,dn),r=e[dn];try{e[dn]=void 0;var a=!0}catch{}var o=Kw.call(e);return a&&(t?e[dn]=r:delete e[dn]),o}n(Hw,"getRawTag");Qc.exports=Hw});var Yc=p((jG,Hc)=>{"use strict";var Yw=Object.prototype,Vw=Yw.toString;function zw(e){return Vw.call(e)}n(zw,"objectToString");Hc.exports=zw});var Lt=p((KG,Jc)=>{"use strict";var Vc=jt(),Jw=Kc(),Xw=Yc(),Zw="[object Null]",eS="[object Undefined]",zc=Vc?Vc.toStringTag:void 0;function tS(e){return e==null?e===void 0?eS:Zw:zc&&zc in Object(e)?Jw(e):Xw(e)}n(tS,"baseGetTag");Jc.exports=tS});var De=p((YG,Xc)=>{"use strict";function rS(e){return e!=null&&typeof e=="object"}n(rS,"isObjectLike");Xc.exports=rS});var ep=p((zG,Zc)=>{"use strict";var nS=Lt(),aS=De(),oS="[object Arguments]";function sS(e){return aS(e)&&nS(e)==oS}n(sS,"baseIsArguments");Zc.exports=sS});var fn=p((XG,np)=>{"use strict";var tp=ep(),iS=De(),rp=Object.prototype,uS=rp.hasOwnProperty,cS=rp.propertyIsEnumerable,pS=tp(function(){return arguments}())?tp:function(e){return iS(e)&&uS.call(e,"callee")&&!cS.call(e,"callee")};np.exports=pS});var Te=p((ZG,ap)=>{"use strict";var lS=Array.isArray;ap.exports=lS});var up=p((eF,ip)=>{"use strict";var op=jt(),dS=fn(),fS=Te(),sp=op?op.isConcatSpreadable:void 0;function mS(e){return fS(e)||dS(e)||!!(sp&&e&&e[sp])}n(mS,"isFlattenable");ip.exports=mS});var Vo=p((rF,pp)=>{"use strict";var gS=ma(),hS=up();function cp(e,t,r,a,o){var s=-1,i=e.length;for(r||(r=hS),o||(o=[]);++s<i;){var u=e[s];t>0&&r(u)?t>1?cp(u,t-1,r,a,o):gS(o,u):a||(o[o.length]=u)}return o}n(cp,"baseFlatten");pp.exports=cp});var mn=p((aF,lp)=>{"use strict";function yS(e){return e}n(yS,"identity");lp.exports=yS});var ga=p((sF,dp)=>{"use strict";function bS(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)}n(bS,"apply");dp.exports=bS});var zo=p((uF,mp)=>{"use strict";var AS=ga(),fp=Math.max;function IS(e,t,r){return t=fp(t===void 0?e.length-1:t,0),function(){for(var a=arguments,o=-1,s=fp(a.length-t,0),i=Array(s);++o<s;)i[o]=a[t+o];o=-1;for(var u=Array(t+1);++o<t;)u[o]=a[o];return u[t]=r(i),AS(e,this,u)}}n(IS,"overRest");mp.exports=IS});var hp=p((pF,gp)=>{"use strict";function wS(e){return function(){return e}}n(wS,"constant");gp.exports=wS});var Ke=p((dF,yp)=>{"use strict";function SS(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}n(SS,"isObject");yp.exports=SS});var gn=p((mF,bp)=>{"use strict";var vS=Lt(),TS=Ke(),xS="[object AsyncFunction]",RS="[object Function]",ES="[object GeneratorFunction]",_S="[object Proxy]";function CS(e){if(!TS(e))return!1;var t=vS(e);return t==RS||t==ES||t==xS||t==_S}n(CS,"isFunction");bp.exports=CS});var Ip=p((hF,Ap)=>{"use strict";var OS=Ee(),LS=OS["__core-js_shared__"];Ap.exports=LS});var vp=p((yF,Sp)=>{"use strict";var Jo=Ip(),wp=function(){var e=/[^.]+$/.exec(Jo&&Jo.keys&&Jo.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function PS(e){return!!wp&&wp in e}n(PS,"isMasked");Sp.exports=PS});var Xo=p((AF,Tp)=>{"use strict";var qS=Function.prototype,US=qS.toString;function kS(e){if(e!=null){try{return US.call(e)}catch{}try{return e+""}catch{}}return""}n(kS,"toSource");Tp.exports=kS});var Rp=p((wF,xp)=>{"use strict";var DS=gn(),MS=vp(),BS=Ke(),NS=Xo(),GS=/[\\^$.*+?()[\]{}|]/g,FS=/^\[object .+?Constructor\]$/,WS=Function.prototype,$S=Object.prototype,jS=WS.toString,QS=$S.hasOwnProperty,KS=RegExp("^"+jS.call(QS).replace(GS,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function HS(e){if(!BS(e)||MS(e))return!1;var t=DS(e)?KS:FS;return t.test(NS(e))}n(HS,"baseIsNative");xp.exports=HS});var _p=p((vF,Ep)=>{"use strict";function YS(e,t){return e?.[t]}n(YS,"getValue");Ep.exports=YS});var Pt=p((xF,Cp)=>{"use strict";var VS=Rp(),zS=_p();function JS(e,t){var r=zS(e,t);return VS(r)?r:void 0}n(JS,"getNative");Cp.exports=JS});var Zo=p((EF,Op)=>{"use strict";var XS=Pt(),ZS=function(){try{var e=XS(Object,"defineProperty");return e({},"",{}),e}catch{}}();Op.exports=ZS});var qp=p((_F,Pp)=>{"use strict";var ev=hp(),Lp=Zo(),tv=mn(),rv=Lp?function(e,t){return Lp(e,"toString",{configurable:!0,enumerable:!1,value:ev(t),writable:!0})}:tv;Pp.exports=rv});var es=p((CF,Up)=>{"use strict";var nv=800,av=16,ov=Date.now;function sv(e){var t=0,r=0;return function(){var a=ov(),o=av-(a-r);if(r=a,o>0){if(++t>=nv)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}n(sv,"shortOut");Up.exports=sv});var ha=p((LF,kp)=>{"use strict";var iv=qp(),uv=es(),cv=uv(iv);kp.exports=cv});var ts=p((PF,Dp)=>{"use strict";var pv=mn(),lv=zo(),dv=ha();function fv(e,t){return dv(lv(e,t,pv),e+"")}n(fv,"baseRest");Dp.exports=fv});var hn=p((UF,Mp)=>{"use strict";var mv=Pt(),gv=mv(Object,"create");Mp.exports=gv});var Gp=p((kF,Np)=>{"use strict";var Bp=hn();function hv(){this.__data__=Bp?Bp(null):{},this.size=0}n(hv,"hashClear");Np.exports=hv});var Wp=p((MF,Fp)=>{"use strict";function yv(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}n(yv,"hashDelete");Fp.exports=yv});var jp=p((NF,$p)=>{"use strict";var bv=hn(),Av="__lodash_hash_undefined__",Iv=Object.prototype,wv=Iv.hasOwnProperty;function Sv(e){var t=this.__data__;if(bv){var r=t[e];return r===Av?void 0:r}return wv.call(t,e)?t[e]:void 0}n(Sv,"hashGet");$p.exports=Sv});var Kp=p((FF,Qp)=>{"use strict";var vv=hn(),Tv=Object.prototype,xv=Tv.hasOwnProperty;function Rv(e){var t=this.__data__;return vv?t[e]!==void 0:xv.call(t,e)}n(Rv,"hashHas");Qp.exports=Rv});var Yp=p(($F,Hp)=>{"use strict";var Ev=hn(),_v="__lodash_hash_undefined__";function Cv(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=Ev&&t===void 0?_v:t,this}n(Cv,"hashSet");Hp.exports=Cv});var zp=p((QF,Vp)=>{"use strict";var Ov=Gp(),Lv=Wp(),Pv=jp(),qv=Kp(),Uv=Yp();function pr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var a=e[t];this.set(a[0],a[1])}}n(pr,"Hash");pr.prototype.clear=Ov;pr.prototype.delete=Lv;pr.prototype.get=Pv;pr.prototype.has=qv;pr.prototype.set=Uv;Vp.exports=pr});var Xp=p((HF,Jp)=>{"use strict";function kv(){this.__data__=[],this.size=0}n(kv,"listCacheClear");Jp.exports=kv});var lr=p((VF,Zp)=>{"use strict";function Dv(e,t){return e===t||e!==e&&t!==t}n(Dv,"eq");Zp.exports=Dv});var yn=p((JF,el)=>{"use strict";var Mv=lr();function Bv(e,t){for(var r=e.length;r--;)if(Mv(e[r][0],t))return r;return-1}n(Bv,"assocIndexOf");el.exports=Bv});var rl=p((ZF,tl)=>{"use strict";var Nv=yn(),Gv=Array.prototype,Fv=Gv.splice;function Wv(e){var t=this.__data__,r=Nv(t,e);if(r<0)return!1;var a=t.length-1;return r==a?t.pop():Fv.call(t,r,1),--this.size,!0}n(Wv,"listCacheDelete");tl.exports=Wv});var al=p((t1,nl)=>{"use strict";var $v=yn();function jv(e){var t=this.__data__,r=$v(t,e);return r<0?void 0:t[r][1]}n(jv,"listCacheGet");nl.exports=jv});var sl=p((n1,ol)=>{"use strict";var Qv=yn();function Kv(e){return Qv(this.__data__,e)>-1}n(Kv,"listCacheHas");ol.exports=Kv});var ul=p((o1,il)=>{"use strict";var Hv=yn();function Yv(e,t){var r=this.__data__,a=Hv(r,e);return a<0?(++this.size,r.push([e,t])):r[a][1]=t,this}n(Yv,"listCacheSet");il.exports=Yv});var bn=p((i1,cl)=>{"use strict";var Vv=Xp(),zv=rl(),Jv=al(),Xv=sl(),Zv=ul();function dr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var a=e[t];this.set(a[0],a[1])}}n(dr,"ListCache");dr.prototype.clear=Vv;dr.prototype.delete=zv;dr.prototype.get=Jv;dr.prototype.has=Xv;dr.prototype.set=Zv;cl.exports=dr});var ya=p((c1,pl)=>{"use strict";var eT=Pt(),tT=Ee(),rT=eT(tT,"Map");pl.exports=rT});var fl=p((p1,dl)=>{"use strict";var ll=zp(),nT=bn(),aT=ya();function oT(){this.size=0,this.__data__={hash:new ll,map:new(aT||nT),string:new ll}}n(oT,"mapCacheClear");dl.exports=oT});var gl=p((d1,ml)=>{"use strict";function sT(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}n(sT,"isKeyable");ml.exports=sT});var An=p((m1,hl)=>{"use strict";var iT=gl();function uT(e,t){var r=e.__data__;return iT(t)?r[typeof t=="string"?"string":"hash"]:r.map}n(uT,"getMapData");hl.exports=uT});var bl=p((h1,yl)=>{"use strict";var cT=An();function pT(e){var t=cT(this,e).delete(e);return this.size-=t?1:0,t}n(pT,"mapCacheDelete");yl.exports=pT});var Il=p((b1,Al)=>{"use strict";var lT=An();function dT(e){return lT(this,e).get(e)}n(dT,"mapCacheGet");Al.exports=dT});var Sl=p((I1,wl)=>{"use strict";var fT=An();function mT(e){return fT(this,e).has(e)}n(mT,"mapCacheHas");wl.exports=mT});var Tl=p((S1,vl)=>{"use strict";var gT=An();function hT(e,t){var r=gT(this,e),a=r.size;return r.set(e,t),this.size+=r.size==a?0:1,this}n(hT,"mapCacheSet");vl.exports=hT});var ba=p((T1,xl)=>{"use strict";var yT=fl(),bT=bl(),AT=Il(),IT=Sl(),wT=Tl();function fr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var a=e[t];this.set(a[0],a[1])}}n(fr,"MapCache");fr.prototype.clear=yT;fr.prototype.delete=bT;fr.prototype.get=AT;fr.prototype.has=IT;fr.prototype.set=wT;xl.exports=fr});var El=p((R1,Rl)=>{"use strict";var ST="__lodash_hash_undefined__";function vT(e){return this.__data__.set(e,ST),this}n(vT,"setCacheAdd");Rl.exports=vT});var Cl=p((_1,_l)=>{"use strict";function TT(e){return this.__data__.has(e)}n(TT,"setCacheHas");_l.exports=TT});var rs=p((O1,Ol)=>{"use strict";var xT=ba(),RT=El(),ET=Cl();function Aa(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new xT;++t<r;)this.add(e[t])}n(Aa,"SetCache");Aa.prototype.add=Aa.prototype.push=RT;Aa.prototype.has=ET;Ol.exports=Aa});var Pl=p((P1,Ll)=>{"use strict";function _T(e,t,r,a){for(var o=e.length,s=r+(a?1:-1);a?s--:++s<o;)if(t(e[s],s,e))return s;return-1}n(_T,"baseFindIndex");Ll.exports=_T});var Ul=p((U1,ql)=>{"use strict";function CT(e){return e!==e}n(CT,"baseIsNaN");ql.exports=CT});var Dl=p((D1,kl)=>{"use strict";function OT(e,t,r){for(var a=r-1,o=e.length;++a<o;)if(e[a]===t)return a;return-1}n(OT,"strictIndexOf");kl.exports=OT});var Bl=p((B1,Ml)=>{"use strict";var LT=Pl(),PT=Ul(),qT=Dl();function UT(e,t,r){return t===t?qT(e,t,r):LT(e,PT,r)}n(UT,"baseIndexOf");Ml.exports=UT});var ns=p((G1,Nl)=>{"use strict";var kT=Bl();function DT(e,t){var r=e==null?0:e.length;return!!r&&kT(e,t,0)>-1}n(DT,"arrayIncludes");Nl.exports=DT});var Fl=p((W1,Gl)=>{"use strict";function MT(e,t,r){for(var a=-1,o=e==null?0:e.length;++a<o;)if(r(t,e[a]))return!0;return!1}n(MT,"arrayIncludesWith");Gl.exports=MT});var as=p((j1,Wl)=>{"use strict";function BT(e,t){return e.has(t)}n(BT,"cacheHas");Wl.exports=BT});var os=p((K1,$l)=>{"use strict";var NT=Pt(),GT=Ee(),FT=NT(GT,"Set");$l.exports=FT});var ss=p((H1,jl)=>{"use strict";function WT(){}n(WT,"noop");jl.exports=WT});var Ia=p((V1,Ql)=>{"use strict";function $T(e){var t=-1,r=Array(e.size);return e.forEach(function(a){r[++t]=a}),r}n($T,"setToArray");Ql.exports=$T});var Hl=p((J1,Kl)=>{"use strict";var is=os(),jT=ss(),QT=Ia(),KT=1/0,HT=is&&1/QT(new is([,-0]))[1]==KT?function(e){return new is(e)}:jT;Kl.exports=HT});var Vl=p((X1,Yl)=>{"use strict";var YT=rs(),VT=ns(),zT=Fl(),JT=as(),XT=Hl(),ZT=Ia(),ex=200;function tx(e,t,r){var a=-1,o=VT,s=e.length,i=!0,u=[],c=u;if(r)i=!1,o=zT;else if(s>=ex){var d=t?null:XT(e);if(d)return ZT(d);i=!1,o=JT,c=new YT}else c=t?[]:u;e:for(;++a<s;){var m=e[a],y=t?t(m):m;if(m=r||m!==0?m:0,i&&y===y){for(var g=c.length;g--;)if(c[g]===y)continue e;t&&c.push(y),u.push(m)}else o(c,y,r)||(c!==u&&c.push(y),u.push(m))}return u}n(tx,"baseUniq");Yl.exports=tx});var wa=p((eW,zl)=>{"use strict";var rx=9007199254740991;function nx(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=rx}n(nx,"isLength");zl.exports=nx});var mr=p((rW,Jl)=>{"use strict";var ax=gn(),ox=wa();function sx(e){return e!=null&&ox(e.length)&&!ax(e)}n(sx,"isArrayLike");Jl.exports=sx});var us=p((aW,Xl)=>{"use strict";var ix=mr(),ux=De();function cx(e){return ux(e)&&ix(e)}n(cx,"isArrayLikeObject");Xl.exports=cx});var ed=p((sW,Zl)=>{"use strict";var px=Vo(),lx=ts(),dx=Vl(),fx=us(),mx=lx(function(e){return dx(px(e,1,fx,!0))});Zl.exports=mx});var rd=p((iW,td)=>{"use strict";var gx=bn();function hx(){this.__data__=new gx,this.size=0}n(hx,"stackClear");td.exports=hx});var ad=p((cW,nd)=>{"use strict";function yx(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}n(yx,"stackDelete");nd.exports=yx});var sd=p((lW,od)=>{"use strict";function bx(e){return this.__data__.get(e)}n(bx,"stackGet");od.exports=bx});var ud=p((fW,id)=>{"use strict";function Ax(e){return this.__data__.has(e)}n(Ax,"stackHas");id.exports=Ax});var pd=p((gW,cd)=>{"use strict";var Ix=bn(),wx=ya(),Sx=ba(),vx=200;function Tx(e,t){var r=this.__data__;if(r instanceof Ix){var a=r.__data__;if(!wx||a.length<vx-1)return a.push([e,t]),this.size=++r.size,this;r=this.__data__=new Sx(a)}return r.set(e,t),this.size=r.size,this}n(Tx,"stackSet");cd.exports=Tx});var In=p((yW,ld)=>{"use strict";var xx=bn(),Rx=rd(),Ex=ad(),_x=sd(),Cx=ud(),Ox=pd();function gr(e){var t=this.__data__=new xx(e);this.size=t.size}n(gr,"Stack");gr.prototype.clear=Rx;gr.prototype.delete=Ex;gr.prototype.get=_x;gr.prototype.has=Cx;gr.prototype.set=Ox;ld.exports=gr});var wn=p((AW,fd)=>{"use strict";var dd=Zo();function Lx(e,t,r){t=="__proto__"&&dd?dd(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}n(Lx,"baseAssignValue");fd.exports=Lx});var cs=p((wW,md)=>{"use strict";var Px=wn(),qx=lr();function Ux(e,t,r){(r!==void 0&&!qx(e[t],r)||r===void 0&&!(t in e))&&Px(e,t,r)}n(Ux,"assignMergeValue");md.exports=Ux});var hd=p((vW,gd)=>{"use strict";function kx(e){return function(t,r,a){for(var o=-1,s=Object(t),i=a(t),u=i.length;u--;){var c=i[e?u:++o];if(r(s[c],c,s)===!1)break}return t}}n(kx,"createBaseFor");gd.exports=kx});var ps=p((xW,yd)=>{"use strict";var Dx=hd(),Mx=Dx();yd.exports=Mx});var ls=p((Sn,hr)=>{"use strict";var Bx=Ee(),wd=typeof Sn=="object"&&Sn&&!Sn.nodeType&&Sn,bd=wd&&typeof hr=="object"&&hr&&!hr.nodeType&&hr,Nx=bd&&bd.exports===wd,Ad=Nx?Bx.Buffer:void 0,Id=Ad?Ad.allocUnsafe:void 0;function Gx(e,t){if(t)return e.slice();var r=e.length,a=Id?Id(r):new e.constructor(r);return e.copy(a),a}n(Gx,"cloneBuffer");hr.exports=Gx});var ds=p((EW,Sd)=>{"use strict";var Fx=Ee(),Wx=Fx.Uint8Array;Sd.exports=Wx});var Sa=p((_W,Td)=>{"use strict";var vd=ds();function $x(e){var t=new e.constructor(e.byteLength);return new vd(t).set(new vd(e)),t}n($x,"cloneArrayBuffer");Td.exports=$x});var fs=p((OW,xd)=>{"use strict";var jx=Sa();function Qx(e,t){var r=t?jx(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}n(Qx,"cloneTypedArray");xd.exports=Qx});var yr=p((PW,Rd)=>{"use strict";function Kx(e,t){var r=-1,a=e.length;for(t||(t=Array(a));++r<a;)t[r]=e[r];return t}n(Kx,"copyArray");Rd.exports=Kx});var vn=p((UW,_d)=>{"use strict";var Hx=Ke(),Ed=Object.create,Yx=function(){function e(){}return n(e,"object"),function(t){if(!Hx(t))return{};if(Ed)return Ed(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();_d.exports=Yx});var ms=p((DW,Cd)=>{"use strict";function Vx(e,t){return function(r){return e(t(r))}}n(Vx,"overArg");Cd.exports=Vx});var va=p((BW,Od)=>{"use strict";var zx=ms(),Jx=zx(Object.getPrototypeOf,Object);Od.exports=Jx});var Ta=p((NW,Ld)=>{"use strict";var Xx=Object.prototype;function Zx(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||Xx;return e===r}n(Zx,"isPrototype");Ld.exports=Zx});var gs=p((FW,Pd)=>{"use strict";var eR=vn(),tR=va(),rR=Ta();function nR(e){return typeof e.constructor=="function"&&!rR(e)?eR(tR(e)):{}}n(nR,"initCloneObject");Pd.exports=nR});var Ud=p(($W,qd)=>{"use strict";function aR(){return!1}n(aR,"stubFalse");qd.exports=aR});var xn=p((Tn,br)=>{"use strict";var oR=Ee(),sR=Ud(),Md=typeof Tn=="object"&&Tn&&!Tn.nodeType&&Tn,kd=Md&&typeof br=="object"&&br&&!br.nodeType&&br,iR=kd&&kd.exports===Md,Dd=iR?oR.Buffer:void 0,uR=Dd?Dd.isBuffer:void 0,cR=uR||sR;br.exports=cR});var hs=p((QW,Nd)=>{"use strict";var pR=Lt(),lR=va(),dR=De(),fR="[object Object]",mR=Function.prototype,gR=Object.prototype,Bd=mR.toString,hR=gR.hasOwnProperty,yR=Bd.call(Object);function bR(e){if(!dR(e)||pR(e)!=fR)return!1;var t=lR(e);if(t===null)return!0;var r=hR.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Bd.call(r)==yR}n(bR,"isPlainObject");Nd.exports=bR});var Fd=p((HW,Gd)=>{"use strict";var AR=Lt(),IR=wa(),wR=De(),SR="[object Arguments]",vR="[object Array]",TR="[object Boolean]",xR="[object Date]",RR="[object Error]",ER="[object Function]",_R="[object Map]",CR="[object Number]",OR="[object Object]",LR="[object RegExp]",PR="[object Set]",qR="[object String]",UR="[object WeakMap]",kR="[object ArrayBuffer]",DR="[object DataView]",MR="[object Float32Array]",BR="[object Float64Array]",NR="[object Int8Array]",GR="[object Int16Array]",FR="[object Int32Array]",WR="[object Uint8Array]",$R="[object Uint8ClampedArray]",jR="[object Uint16Array]",QR="[object Uint32Array]",Y={};Y[MR]=Y[BR]=Y[NR]=Y[GR]=Y[FR]=Y[WR]=Y[$R]=Y[jR]=Y[QR]=!0;Y[SR]=Y[vR]=Y[kR]=Y[TR]=Y[DR]=Y[xR]=Y[RR]=Y[ER]=Y[_R]=Y[CR]=Y[OR]=Y[LR]=Y[PR]=Y[qR]=Y[UR]=!1;function KR(e){return wR(e)&&IR(e.length)&&!!Y[AR(e)]}n(KR,"baseIsTypedArray");Gd.exports=KR});var xa=p((VW,Wd)=>{"use strict";function HR(e){return function(t){return e(t)}}n(HR,"baseUnary");Wd.exports=HR});var Ra=p((Rn,Ar)=>{"use strict";var YR=Yo(),$d=typeof Rn=="object"&&Rn&&!Rn.nodeType&&Rn,En=$d&&typeof Ar=="object"&&Ar&&!Ar.nodeType&&Ar,VR=En&&En.exports===$d,ys=VR&&YR.process,zR=function(){try{var e=En&&En.require&&En.require("util").types;return e||ys&&ys.binding&&ys.binding("util")}catch{}}();Ar.exports=zR});var Ea=p((JW,Kd)=>{"use strict";var JR=Fd(),XR=xa(),jd=Ra(),Qd=jd&&jd.isTypedArray,ZR=Qd?XR(Qd):JR;Kd.exports=ZR});var bs=p((XW,Hd)=>{"use strict";function eE(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}n(eE,"safeGet");Hd.exports=eE});var As=p((e$,Yd)=>{"use strict";var tE=wn(),rE=lr(),nE=Object.prototype,aE=nE.hasOwnProperty;function oE(e,t,r){var a=e[t];(!(aE.call(e,t)&&rE(a,r))||r===void 0&&!(t in e))&&tE(e,t,r)}n(oE,"assignValue");Yd.exports=oE});var Ir=p((r$,Vd)=>{"use strict";var sE=As(),iE=wn();function uE(e,t,r,a){var o=!r;r||(r={});for(var s=-1,i=t.length;++s<i;){var u=t[s],c=a?a(r[u],e[u],u,r,e):void 0;c===void 0&&(c=e[u]),o?iE(r,u,c):sE(r,u,c)}return r}n(uE,"copyObject");Vd.exports=uE});var Jd=p((a$,zd)=>{"use strict";function cE(e,t){for(var r=-1,a=Array(e);++r<e;)a[r]=t(r);return a}n(cE,"baseTimes");zd.exports=cE});var _n=p((s$,Xd)=>{"use strict";var pE=9007199254740991,lE=/^(?:0|[1-9]\d*)$/;function dE(e,t){var r=typeof e;return t=t??pE,!!t&&(r=="number"||r!="symbol"&&lE.test(e))&&e>-1&&e%1==0&&e<t}n(dE,"isIndex");Xd.exports=dE});var Is=p((u$,Zd)=>{"use strict";var fE=Jd(),mE=fn(),gE=Te(),hE=xn(),yE=_n(),bE=Ea(),AE=Object.prototype,IE=AE.hasOwnProperty;function wE(e,t){var r=gE(e),a=!r&&mE(e),o=!r&&!a&&hE(e),s=!r&&!a&&!o&&bE(e),i=r||a||o||s,u=i?fE(e.length,String):[],c=u.length;for(var d in e)(t||IE.call(e,d))&&!(i&&(d=="length"||o&&(d=="offset"||d=="parent")||s&&(d=="buffer"||d=="byteLength"||d=="byteOffset")||yE(d,c)))&&u.push(d);return u}n(wE,"arrayLikeKeys");Zd.exports=wE});var tf=p((p$,ef)=>{"use strict";function SE(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}n(SE,"nativeKeysIn");ef.exports=SE});var nf=p((d$,rf)=>{"use strict";var vE=Ke(),TE=Ta(),xE=tf(),RE=Object.prototype,EE=RE.hasOwnProperty;function _E(e){if(!vE(e))return xE(e);var t=TE(e),r=[];for(var a in e)a=="constructor"&&(t||!EE.call(e,a))||r.push(a);return r}n(_E,"baseKeysIn");rf.exports=_E});var wr=p((m$,af)=>{"use strict";var CE=Is(),OE=nf(),LE=mr();function PE(e){return LE(e)?CE(e,!0):OE(e)}n(PE,"keysIn");af.exports=PE});var sf=p((h$,of)=>{"use strict";var qE=Ir(),UE=wr();function kE(e){return qE(e,UE(e))}n(kE,"toPlainObject");of.exports=kE});var ff=p((b$,df)=>{"use strict";var uf=cs(),DE=ls(),ME=fs(),BE=yr(),NE=gs(),cf=fn(),pf=Te(),GE=us(),FE=xn(),WE=gn(),$E=Ke(),jE=hs(),QE=Ea(),lf=bs(),KE=sf();function HE(e,t,r,a,o,s,i){var u=lf(e,r),c=lf(t,r),d=i.get(c);if(d){uf(e,r,d);return}var m=s?s(u,c,r+"",e,t,i):void 0,y=m===void 0;if(y){var g=pf(c),T=!g&&FE(c),B=!g&&!T&&QE(c);m=c,g||T||B?pf(u)?m=u:GE(u)?m=BE(u):T?(y=!1,m=DE(c,!0)):B?(y=!1,m=ME(c,!0)):m=[]:jE(c)||cf(c)?(m=u,cf(u)?m=KE(u):(!$E(u)||WE(u))&&(m=NE(c))):y=!1}y&&(i.set(c,m),o(m,c,a,s,i),i.delete(c)),uf(e,r,m)}n(HE,"baseMergeDeep");df.exports=HE});var hf=p((I$,gf)=>{"use strict";var YE=In(),VE=cs(),zE=ps(),JE=ff(),XE=Ke(),ZE=wr(),e_=bs();function mf(e,t,r,a,o){e!==t&&zE(t,function(s,i){if(o||(o=new YE),XE(s))JE(e,t,i,r,mf,a,o);else{var u=a?a(e_(e,i),s,i+"",e,t,o):void 0;u===void 0&&(u=s),VE(e,i,u)}},ZE)}n(mf,"baseMerge");gf.exports=mf});var bf=p((S$,yf)=>{"use strict";var t_=lr(),r_=mr(),n_=_n(),a_=Ke();function o_(e,t,r){if(!a_(r))return!1;var a=typeof t;return(a=="number"?r_(r)&&n_(t,r.length):a=="string"&&t in r)?t_(r[t],e):!1}n(o_,"isIterateeCall");yf.exports=o_});var If=p((T$,Af)=>{"use strict";var s_=ts(),i_=bf();function u_(e){return s_(function(t,r){var a=-1,o=r.length,s=o>1?r[o-1]:void 0,i=o>2?r[2]:void 0;for(s=e.length>3&&typeof s=="function"?(o--,s):void 0,i&&i_(r[0],r[1],i)&&(s=o<3?void 0:s,o=1),t=Object(t);++a<o;){var u=r[a];u&&e(t,u,a,s)}return t})}n(u_,"createAssigner");Af.exports=u_});var ws=p((R$,wf)=>{"use strict";var c_=hf(),p_=If(),l_=p_(function(e,t,r){c_(e,t,r)});wf.exports=l_});var vm=p(qe=>{"use strict";qe.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"};qe.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"]};qe.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};qe.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};qe.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};qe.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]};qe.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}};qe.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}};qe.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=qe.aliasToReal,r={};for(var a in t){var o=t[a];e.call(r,o)?r[o].push(a):r[o]=[a]}return r}();qe.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"};qe.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};qe.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 yi=p((qK,Tm)=>{"use strict";Tm.exports={}});var _m=p((UK,Em)=>{"use strict";var me=vm(),YC=yi(),xm=Array.prototype.push;function VC(e,t){return t==2?function(r,a){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}n(VC,"baseArity");function bi(e,t){return t==2?function(r,a){return e(r,a)}:function(r){return e(r)}}n(bi,"baseAry");function Rm(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}n(Rm,"cloneArray");function zC(e){return function(t){return e({},t)}}n(zC,"createCloner");function JC(e,t){return function(){for(var r=arguments.length,a=r-1,o=Array(r);r--;)o[r]=arguments[r];var s=o[t],i=o.slice(0,t);return s&&xm.apply(i,s),t!=a&&xm.apply(i,o.slice(t+1)),e.apply(this,i)}}n(JC,"flatSpread");function Ai(e,t){return function(){var r=arguments.length;if(r){for(var a=Array(r);r--;)a[r]=arguments[r];var o=a[0]=t.apply(void 0,a);return e.apply(void 0,a),o}}}n(Ai,"wrapImmutable");function Ii(e,t,r,a){var o=typeof t=="function",s=t===Object(t);if(s&&(a=r,r=t,t=void 0),r==null)throw new TypeError;a||(a={});var i={cap:"cap"in a?a.cap:!0,curry:"curry"in a?a.curry:!0,fixed:"fixed"in a?a.fixed:!0,immutable:"immutable"in a?a.immutable:!0,rearg:"rearg"in a?a.rearg:!0},u=o?r:YC,c="curry"in a&&a.curry,d="fixed"in a&&a.fixed,m="rearg"in a&&a.rearg,y=o?r.runInContext():void 0,g=o?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},T=g.ary,B=g.assign,D=g.clone,k=g.curry,C=g.forEach,W=g.isArray,Ae=g.isError,ie=g.isFunction,Ve=g.isWeakMap,ot=g.keys,st=g.rearg,V=g.toInteger,F=g.toPath,Nt=ot(me.aryMethod),Jn={castArray:function(x){return function(){var A=arguments[0];return W(A)?x(Rm(A)):x.apply(void 0,arguments)}},iteratee:function(x){return function(){var A=arguments[0],I=arguments[1],R=x(A,I),U=R.length;return i.cap&&typeof I=="number"?(I=I>2?I-2:1,U&&U<=I?R:bi(R,I)):R}},mixin:function(x){return function(A){var I=this;if(!ie(I))return x(I,Object(A));var R=[];return C(ot(A),function(U){ie(A[U])&&R.push([U,I.prototype[U]])}),x(I,Object(A)),C(R,function(U){var oe=U[1];ie(oe)?I.prototype[U[0]]=oe:delete I.prototype[U[0]]}),I}},nthArg:function(x){return function(A){var I=A<0?1:V(A)+1;return k(x(A),I)}},rearg:function(x){return function(A,I){var R=I?I.length:0;return k(x(A,I),R)}},runInContext:function(x){return function(A){return Ii(e,x(A),a)}}};function O(x,A){if(i.cap){var I=me.iterateeRearg[x];if(I)return Z(A,I);var R=!o&&me.iterateeAry[x];if(R)return $(A,R)}return A}n(O,"castCap");function S(x,A,I){return c||i.curry&&I>1?k(A,I):A}n(S,"castCurry");function b(x,A,I){if(i.fixed&&(d||!me.skipFixed[x])){var R=me.methodSpread[x],U=R&&R.start;return U===void 0?T(A,I):JC(A,U)}return A}n(b,"castFixed");function E(x,A,I){return i.rearg&&I>1&&(m||!me.skipRearg[x])?st(A,me.methodRearg[x]||me.aryRearg[I]):A}n(E,"castRearg");function w(x,A){A=F(A);for(var I=-1,R=A.length,U=R-1,oe=D(Object(x)),xe=oe;xe!=null&&++I<R;){var We=A[I],it=xe[We];it!=null&&!(ie(it)||Ae(it)||Ve(it))&&(xe[We]=D(I==U?it:Object(it))),xe=xe[We]}return oe}n(w,"cloneByPath");function q(x){return K.runInContext.convert(x)(void 0)}n(q,"convertLib");function P(x,A){var I=me.aliasToReal[x]||x,R=me.remap[I]||I,U=a;return function(oe){var xe=o?y:g,We=o?y[R]:A,it=B(B({},U),oe);return Ii(xe,I,We,it)}}n(P,"createConverter");function $(x,A){return ae(x,function(I){return typeof I=="function"?bi(I,A):I})}n($,"iterateeAry");function Z(x,A){return ae(x,function(I){var R=A.length;return VC(st(bi(I,R),A),R)})}n(Z,"iterateeRearg");function ae(x,A){return function(){var I=arguments.length;if(!I)return x();for(var R=Array(I);I--;)R[I]=arguments[I];var U=i.rearg?0:I-1;return R[U]=A(R[U]),x.apply(void 0,R)}}n(ae,"overArg");function pe(x,A,I){var R,U=me.aliasToReal[x]||x,oe=A,xe=Jn[U];return xe?oe=xe(A):i.immutable&&(me.mutate.array[U]?oe=Ai(A,Rm):me.mutate.object[U]?oe=Ai(A,zC(A)):me.mutate.set[U]&&(oe=Ai(A,w))),C(Nt,function(We){return C(me.aryMethod[We],function(it){if(U==it){var Xu=me.methodSpread[U],kI=Xu&&Xu.afterRearg;return R=kI?b(U,E(U,oe,We),We):E(U,b(U,oe,We),We),R=O(U,R),R=S(U,R,We),!1}}),!R}),R||(R=oe),R==A&&(R=c?k(R,1):function(){return A.apply(this,arguments)}),R.convert=P(U,A),R.placeholder=A.placeholder=I,R}if(n(pe,"wrap"),!s)return pe(t,r,u);var K=r,Fe=[];return C(Nt,function(x){C(me.aryMethod[x],function(A){var I=K[me.remap[A]||A];I&&Fe.push([A,pe(A,I,K)])})}),C(ot(K),function(x){var A=K[x];if(typeof A=="function"){for(var I=Fe.length;I--;)if(Fe[I][0]==x)return;A.convert=P(x,A),Fe.push([x,A])}}),C(Fe,function(x){K[x[0]]=x[1]}),K.convert=q,K.placeholder=K,C(ot(K),function(x){C(me.realToAlias[x]||[],function(A){K[A]=K[x]})}),K}n(Ii,"baseConvert");Em.exports=Ii});var wi=p((DK,Cm)=>{"use strict";var XC=Pt(),ZC=Ee(),eO=XC(ZC,"WeakMap");Cm.exports=eO});var Si=p((MK,Lm)=>{"use strict";var Om=wi(),tO=Om&&new Om;Lm.exports=tO});var vi=p((BK,qm)=>{"use strict";var rO=mn(),Pm=Si(),nO=Pm?function(e,t){return Pm.set(e,t),e}:rO;qm.exports=nO});var Bn=p((NK,Um)=>{"use strict";var aO=vn(),oO=Ke();function sO(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=aO(e.prototype),a=e.apply(r,t);return oO(a)?a:r}}n(sO,"createCtor");Um.exports=sO});var Dm=p((FK,km)=>{"use strict";var iO=Bn(),uO=Ee(),cO=1;function pO(e,t,r){var a=t&cO,o=iO(e);function s(){var i=this&&this!==uO&&this instanceof s?o:e;return i.apply(a?r:this,arguments)}return n(s,"wrapper"),s}n(pO,"createBind");km.exports=pO});var Ti=p(($K,Mm)=>{"use strict";var lO=Math.max;function dO(e,t,r,a){for(var o=-1,s=e.length,i=r.length,u=-1,c=t.length,d=lO(s-i,0),m=Array(c+d),y=!a;++u<c;)m[u]=t[u];for(;++o<i;)(y||o<s)&&(m[r[o]]=e[o]);for(;d--;)m[u++]=e[o++];return m}n(dO,"composeArgs");Mm.exports=dO});var xi=p((QK,Bm)=>{"use strict";var fO=Math.max;function mO(e,t,r,a){for(var o=-1,s=e.length,i=-1,u=r.length,c=-1,d=t.length,m=fO(s-u,0),y=Array(m+d),g=!a;++o<m;)y[o]=e[o];for(var T=o;++c<d;)y[T+c]=t[c];for(;++i<u;)(g||o<s)&&(y[T+r[i]]=e[o++]);return y}n(mO,"composeArgsRight");Bm.exports=mO});var Gm=p((HK,Nm)=>{"use strict";function gO(e,t){for(var r=e.length,a=0;r--;)e[r]===t&&++a;return a}n(gO,"countHolders");Nm.exports=gO});var Xa=p((VK,Fm)=>{"use strict";function hO(){}n(hO,"baseLodash");Fm.exports=hO});var eo=p((JK,Wm)=>{"use strict";var yO=vn(),bO=Xa(),AO=4294967295;function Za(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=AO,this.__views__=[]}n(Za,"LazyWrapper");Za.prototype=yO(bO.prototype);Za.prototype.constructor=Za;Wm.exports=Za});var Ri=p((ZK,jm)=>{"use strict";var $m=Si(),IO=ss(),wO=$m?function(e){return $m.get(e)}:IO;jm.exports=wO});var Km=p((e2,Qm)=>{"use strict";var SO={};Qm.exports=SO});var Vm=p((t2,Ym)=>{"use strict";var Hm=Km(),vO=Object.prototype,TO=vO.hasOwnProperty;function xO(e){for(var t=e.name+"",r=Hm[t],a=TO.call(Hm,t)?r.length:0;a--;){var o=r[a],s=o.func;if(s==null||s==e)return o.name}return t}n(xO,"getFuncName");Ym.exports=xO});var Ei=p((n2,zm)=>{"use strict";var RO=vn(),EO=Xa();function to(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}n(to,"LodashWrapper");to.prototype=RO(EO.prototype);to.prototype.constructor=to;zm.exports=to});var Xm=p((o2,Jm)=>{"use strict";var _O=eo(),CO=Ei(),OO=yr();function LO(e){if(e instanceof _O)return e.clone();var t=new CO(e.__wrapped__,e.__chain__);return t.__actions__=OO(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}n(LO,"wrapperClone");Jm.exports=LO});var tg=p((i2,eg)=>{"use strict";var PO=eo(),Zm=Ei(),qO=Xa(),UO=Te(),kO=De(),DO=Xm(),MO=Object.prototype,BO=MO.hasOwnProperty;function ro(e){if(kO(e)&&!UO(e)&&!(e instanceof PO)){if(e instanceof Zm)return e;if(BO.call(e,"__wrapped__"))return DO(e)}return new Zm(e)}n(ro,"lodash");ro.prototype=qO.prototype;ro.prototype.constructor=ro;eg.exports=ro});var ng=p((c2,rg)=>{"use strict";var NO=eo(),GO=Ri(),FO=Vm(),WO=tg();function $O(e){var t=FO(e),r=WO[t];if(typeof r!="function"||!(t in NO.prototype))return!1;if(e===r)return!0;var a=GO(r);return!!a&&e===a[0]}n($O,"isLaziable");rg.exports=$O});var _i=p((l2,ag)=>{"use strict";var jO=vi(),QO=es(),KO=QO(jO);ag.exports=KO});var sg=p((d2,og)=>{"use strict";var HO=/\{\n\/\* \[wrapped with (.+)\] \*/,YO=/,? & /;function VO(e){var t=e.match(HO);return t?t[1].split(YO):[]}n(VO,"getWrapDetails");og.exports=VO});var ug=p((m2,ig)=>{"use strict";var zO=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function JO(e,t){var r=t.length;if(!r)return e;var a=r-1;return t[a]=(r>1?"& ":"")+t[a],t=t.join(r>2?", ":" "),e.replace(zO,`{
|
|
1
|
+
"use strict";var DI=Object.create;var Dr=Object.defineProperty;var MI=Object.getOwnPropertyDescriptor;var BI=Object.getOwnPropertyNames;var NI=Object.getPrototypeOf,GI=Object.prototype.hasOwnProperty;var n=(e,t)=>Dr(e,"name",{value:t,configurable:!0});var p=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),_=(e,t)=>{for(var r in t)Dr(e,r,{get:t[r],enumerable:!0})},Xu=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of BI(t))!GI.call(e,o)&&o!==r&&Dr(e,o,{get:()=>t[o],enumerable:!(a=MI(t,o))||a.enumerable});return e};var G=(e,t,r)=>(r=e!=null?DI(NI(e)):{},Xu(t||!e||!e.__esModule?Dr(r,"default",{value:e,enumerable:!0}):r,e)),FI=e=>Xu(Dr({},"__esModule",{value:!0}),e);var ma=p((MG,Bc)=>{"use strict";function Bw(e,t){for(var r=-1,a=t.length,o=e.length;++r<a;)e[o+r]=t[r];return e}n(Bw,"arrayPush");Bc.exports=Bw});var Yo=p((NG,Nc)=>{"use strict";var Nw=typeof global=="object"&&global&&global.Object===Object&&global;Nc.exports=Nw});var Ee=p((GG,Gc)=>{"use strict";var Gw=Yo(),Fw=typeof self=="object"&&self&&self.Object===Object&&self,Ww=Gw||Fw||Function("return this")();Gc.exports=Ww});var jt=p((FG,Fc)=>{"use strict";var $w=Ee(),jw=$w.Symbol;Fc.exports=jw});var Qc=p((WG,jc)=>{"use strict";var Wc=jt(),$c=Object.prototype,Qw=$c.hasOwnProperty,Kw=$c.toString,dn=Wc?Wc.toStringTag:void 0;function Hw(e){var t=Qw.call(e,dn),r=e[dn];try{e[dn]=void 0;var a=!0}catch{}var o=Kw.call(e);return a&&(t?e[dn]=r:delete e[dn]),o}n(Hw,"getRawTag");jc.exports=Hw});var Hc=p((jG,Kc)=>{"use strict";var Yw=Object.prototype,Vw=Yw.toString;function zw(e){return Vw.call(e)}n(zw,"objectToString");Kc.exports=zw});var Lt=p((KG,zc)=>{"use strict";var Yc=jt(),Jw=Qc(),Xw=Hc(),Zw="[object Null]",eS="[object Undefined]",Vc=Yc?Yc.toStringTag:void 0;function tS(e){return e==null?e===void 0?eS:Zw:Vc&&Vc in Object(e)?Jw(e):Xw(e)}n(tS,"baseGetTag");zc.exports=tS});var De=p((YG,Jc)=>{"use strict";function rS(e){return e!=null&&typeof e=="object"}n(rS,"isObjectLike");Jc.exports=rS});var Zc=p((zG,Xc)=>{"use strict";var nS=Lt(),aS=De(),oS="[object Arguments]";function sS(e){return aS(e)&&nS(e)==oS}n(sS,"baseIsArguments");Xc.exports=sS});var fn=p((XG,rp)=>{"use strict";var ep=Zc(),iS=De(),tp=Object.prototype,uS=tp.hasOwnProperty,cS=tp.propertyIsEnumerable,pS=ep(function(){return arguments}())?ep:function(e){return iS(e)&&uS.call(e,"callee")&&!cS.call(e,"callee")};rp.exports=pS});var Te=p((ZG,np)=>{"use strict";var lS=Array.isArray;np.exports=lS});var ip=p((eF,sp)=>{"use strict";var ap=jt(),dS=fn(),fS=Te(),op=ap?ap.isConcatSpreadable:void 0;function mS(e){return fS(e)||dS(e)||!!(op&&e&&e[op])}n(mS,"isFlattenable");sp.exports=mS});var Vo=p((rF,cp)=>{"use strict";var gS=ma(),hS=ip();function up(e,t,r,a,o){var s=-1,i=e.length;for(r||(r=hS),o||(o=[]);++s<i;){var u=e[s];t>0&&r(u)?t>1?up(u,t-1,r,a,o):gS(o,u):a||(o[o.length]=u)}return o}n(up,"baseFlatten");cp.exports=up});var mn=p((aF,pp)=>{"use strict";function yS(e){return e}n(yS,"identity");pp.exports=yS});var ga=p((sF,lp)=>{"use strict";function bS(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)}n(bS,"apply");lp.exports=bS});var zo=p((uF,fp)=>{"use strict";var AS=ga(),dp=Math.max;function IS(e,t,r){return t=dp(t===void 0?e.length-1:t,0),function(){for(var a=arguments,o=-1,s=dp(a.length-t,0),i=Array(s);++o<s;)i[o]=a[t+o];o=-1;for(var u=Array(t+1);++o<t;)u[o]=a[o];return u[t]=r(i),AS(e,this,u)}}n(IS,"overRest");fp.exports=IS});var gp=p((pF,mp)=>{"use strict";function wS(e){return function(){return e}}n(wS,"constant");mp.exports=wS});var Ke=p((dF,hp)=>{"use strict";function SS(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}n(SS,"isObject");hp.exports=SS});var gn=p((mF,yp)=>{"use strict";var vS=Lt(),TS=Ke(),xS="[object AsyncFunction]",RS="[object Function]",ES="[object GeneratorFunction]",_S="[object Proxy]";function CS(e){if(!TS(e))return!1;var t=vS(e);return t==RS||t==ES||t==xS||t==_S}n(CS,"isFunction");yp.exports=CS});var Ap=p((hF,bp)=>{"use strict";var OS=Ee(),LS=OS["__core-js_shared__"];bp.exports=LS});var Sp=p((yF,wp)=>{"use strict";var Jo=Ap(),Ip=function(){var e=/[^.]+$/.exec(Jo&&Jo.keys&&Jo.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function PS(e){return!!Ip&&Ip in e}n(PS,"isMasked");wp.exports=PS});var Xo=p((AF,vp)=>{"use strict";var qS=Function.prototype,US=qS.toString;function kS(e){if(e!=null){try{return US.call(e)}catch{}try{return e+""}catch{}}return""}n(kS,"toSource");vp.exports=kS});var xp=p((wF,Tp)=>{"use strict";var DS=gn(),MS=Sp(),BS=Ke(),NS=Xo(),GS=/[\\^$.*+?()[\]{}|]/g,FS=/^\[object .+?Constructor\]$/,WS=Function.prototype,$S=Object.prototype,jS=WS.toString,QS=$S.hasOwnProperty,KS=RegExp("^"+jS.call(QS).replace(GS,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function HS(e){if(!BS(e)||MS(e))return!1;var t=DS(e)?KS:FS;return t.test(NS(e))}n(HS,"baseIsNative");Tp.exports=HS});var Ep=p((vF,Rp)=>{"use strict";function YS(e,t){return e?.[t]}n(YS,"getValue");Rp.exports=YS});var Pt=p((xF,_p)=>{"use strict";var VS=xp(),zS=Ep();function JS(e,t){var r=zS(e,t);return VS(r)?r:void 0}n(JS,"getNative");_p.exports=JS});var Zo=p((EF,Cp)=>{"use strict";var XS=Pt(),ZS=function(){try{var e=XS(Object,"defineProperty");return e({},"",{}),e}catch{}}();Cp.exports=ZS});var Pp=p((_F,Lp)=>{"use strict";var ev=gp(),Op=Zo(),tv=mn(),rv=Op?function(e,t){return Op(e,"toString",{configurable:!0,enumerable:!1,value:ev(t),writable:!0})}:tv;Lp.exports=rv});var es=p((CF,qp)=>{"use strict";var nv=800,av=16,ov=Date.now;function sv(e){var t=0,r=0;return function(){var a=ov(),o=av-(a-r);if(r=a,o>0){if(++t>=nv)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}n(sv,"shortOut");qp.exports=sv});var ha=p((LF,Up)=>{"use strict";var iv=Pp(),uv=es(),cv=uv(iv);Up.exports=cv});var ts=p((PF,kp)=>{"use strict";var pv=mn(),lv=zo(),dv=ha();function fv(e,t){return dv(lv(e,t,pv),e+"")}n(fv,"baseRest");kp.exports=fv});var hn=p((UF,Dp)=>{"use strict";var mv=Pt(),gv=mv(Object,"create");Dp.exports=gv});var Np=p((kF,Bp)=>{"use strict";var Mp=hn();function hv(){this.__data__=Mp?Mp(null):{},this.size=0}n(hv,"hashClear");Bp.exports=hv});var Fp=p((MF,Gp)=>{"use strict";function yv(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}n(yv,"hashDelete");Gp.exports=yv});var $p=p((NF,Wp)=>{"use strict";var bv=hn(),Av="__lodash_hash_undefined__",Iv=Object.prototype,wv=Iv.hasOwnProperty;function Sv(e){var t=this.__data__;if(bv){var r=t[e];return r===Av?void 0:r}return wv.call(t,e)?t[e]:void 0}n(Sv,"hashGet");Wp.exports=Sv});var Qp=p((FF,jp)=>{"use strict";var vv=hn(),Tv=Object.prototype,xv=Tv.hasOwnProperty;function Rv(e){var t=this.__data__;return vv?t[e]!==void 0:xv.call(t,e)}n(Rv,"hashHas");jp.exports=Rv});var Hp=p(($F,Kp)=>{"use strict";var Ev=hn(),_v="__lodash_hash_undefined__";function Cv(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=Ev&&t===void 0?_v:t,this}n(Cv,"hashSet");Kp.exports=Cv});var Vp=p((QF,Yp)=>{"use strict";var Ov=Np(),Lv=Fp(),Pv=$p(),qv=Qp(),Uv=Hp();function pr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var a=e[t];this.set(a[0],a[1])}}n(pr,"Hash");pr.prototype.clear=Ov;pr.prototype.delete=Lv;pr.prototype.get=Pv;pr.prototype.has=qv;pr.prototype.set=Uv;Yp.exports=pr});var Jp=p((HF,zp)=>{"use strict";function kv(){this.__data__=[],this.size=0}n(kv,"listCacheClear");zp.exports=kv});var lr=p((VF,Xp)=>{"use strict";function Dv(e,t){return e===t||e!==e&&t!==t}n(Dv,"eq");Xp.exports=Dv});var yn=p((JF,Zp)=>{"use strict";var Mv=lr();function Bv(e,t){for(var r=e.length;r--;)if(Mv(e[r][0],t))return r;return-1}n(Bv,"assocIndexOf");Zp.exports=Bv});var tl=p((ZF,el)=>{"use strict";var Nv=yn(),Gv=Array.prototype,Fv=Gv.splice;function Wv(e){var t=this.__data__,r=Nv(t,e);if(r<0)return!1;var a=t.length-1;return r==a?t.pop():Fv.call(t,r,1),--this.size,!0}n(Wv,"listCacheDelete");el.exports=Wv});var nl=p((t1,rl)=>{"use strict";var $v=yn();function jv(e){var t=this.__data__,r=$v(t,e);return r<0?void 0:t[r][1]}n(jv,"listCacheGet");rl.exports=jv});var ol=p((n1,al)=>{"use strict";var Qv=yn();function Kv(e){return Qv(this.__data__,e)>-1}n(Kv,"listCacheHas");al.exports=Kv});var il=p((o1,sl)=>{"use strict";var Hv=yn();function Yv(e,t){var r=this.__data__,a=Hv(r,e);return a<0?(++this.size,r.push([e,t])):r[a][1]=t,this}n(Yv,"listCacheSet");sl.exports=Yv});var bn=p((i1,ul)=>{"use strict";var Vv=Jp(),zv=tl(),Jv=nl(),Xv=ol(),Zv=il();function dr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var a=e[t];this.set(a[0],a[1])}}n(dr,"ListCache");dr.prototype.clear=Vv;dr.prototype.delete=zv;dr.prototype.get=Jv;dr.prototype.has=Xv;dr.prototype.set=Zv;ul.exports=dr});var ya=p((c1,cl)=>{"use strict";var eT=Pt(),tT=Ee(),rT=eT(tT,"Map");cl.exports=rT});var dl=p((p1,ll)=>{"use strict";var pl=Vp(),nT=bn(),aT=ya();function oT(){this.size=0,this.__data__={hash:new pl,map:new(aT||nT),string:new pl}}n(oT,"mapCacheClear");ll.exports=oT});var ml=p((d1,fl)=>{"use strict";function sT(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}n(sT,"isKeyable");fl.exports=sT});var An=p((m1,gl)=>{"use strict";var iT=ml();function uT(e,t){var r=e.__data__;return iT(t)?r[typeof t=="string"?"string":"hash"]:r.map}n(uT,"getMapData");gl.exports=uT});var yl=p((h1,hl)=>{"use strict";var cT=An();function pT(e){var t=cT(this,e).delete(e);return this.size-=t?1:0,t}n(pT,"mapCacheDelete");hl.exports=pT});var Al=p((b1,bl)=>{"use strict";var lT=An();function dT(e){return lT(this,e).get(e)}n(dT,"mapCacheGet");bl.exports=dT});var wl=p((I1,Il)=>{"use strict";var fT=An();function mT(e){return fT(this,e).has(e)}n(mT,"mapCacheHas");Il.exports=mT});var vl=p((S1,Sl)=>{"use strict";var gT=An();function hT(e,t){var r=gT(this,e),a=r.size;return r.set(e,t),this.size+=r.size==a?0:1,this}n(hT,"mapCacheSet");Sl.exports=hT});var ba=p((T1,Tl)=>{"use strict";var yT=dl(),bT=yl(),AT=Al(),IT=wl(),wT=vl();function fr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var a=e[t];this.set(a[0],a[1])}}n(fr,"MapCache");fr.prototype.clear=yT;fr.prototype.delete=bT;fr.prototype.get=AT;fr.prototype.has=IT;fr.prototype.set=wT;Tl.exports=fr});var Rl=p((R1,xl)=>{"use strict";var ST="__lodash_hash_undefined__";function vT(e){return this.__data__.set(e,ST),this}n(vT,"setCacheAdd");xl.exports=vT});var _l=p((_1,El)=>{"use strict";function TT(e){return this.__data__.has(e)}n(TT,"setCacheHas");El.exports=TT});var rs=p((O1,Cl)=>{"use strict";var xT=ba(),RT=Rl(),ET=_l();function Aa(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new xT;++t<r;)this.add(e[t])}n(Aa,"SetCache");Aa.prototype.add=Aa.prototype.push=RT;Aa.prototype.has=ET;Cl.exports=Aa});var Ll=p((P1,Ol)=>{"use strict";function _T(e,t,r,a){for(var o=e.length,s=r+(a?1:-1);a?s--:++s<o;)if(t(e[s],s,e))return s;return-1}n(_T,"baseFindIndex");Ol.exports=_T});var ql=p((U1,Pl)=>{"use strict";function CT(e){return e!==e}n(CT,"baseIsNaN");Pl.exports=CT});var kl=p((D1,Ul)=>{"use strict";function OT(e,t,r){for(var a=r-1,o=e.length;++a<o;)if(e[a]===t)return a;return-1}n(OT,"strictIndexOf");Ul.exports=OT});var Ml=p((B1,Dl)=>{"use strict";var LT=Ll(),PT=ql(),qT=kl();function UT(e,t,r){return t===t?qT(e,t,r):LT(e,PT,r)}n(UT,"baseIndexOf");Dl.exports=UT});var ns=p((G1,Bl)=>{"use strict";var kT=Ml();function DT(e,t){var r=e==null?0:e.length;return!!r&&kT(e,t,0)>-1}n(DT,"arrayIncludes");Bl.exports=DT});var Gl=p((W1,Nl)=>{"use strict";function MT(e,t,r){for(var a=-1,o=e==null?0:e.length;++a<o;)if(r(t,e[a]))return!0;return!1}n(MT,"arrayIncludesWith");Nl.exports=MT});var as=p((j1,Fl)=>{"use strict";function BT(e,t){return e.has(t)}n(BT,"cacheHas");Fl.exports=BT});var os=p((K1,Wl)=>{"use strict";var NT=Pt(),GT=Ee(),FT=NT(GT,"Set");Wl.exports=FT});var ss=p((H1,$l)=>{"use strict";function WT(){}n(WT,"noop");$l.exports=WT});var Ia=p((V1,jl)=>{"use strict";function $T(e){var t=-1,r=Array(e.size);return e.forEach(function(a){r[++t]=a}),r}n($T,"setToArray");jl.exports=$T});var Kl=p((J1,Ql)=>{"use strict";var is=os(),jT=ss(),QT=Ia(),KT=1/0,HT=is&&1/QT(new is([,-0]))[1]==KT?function(e){return new is(e)}:jT;Ql.exports=HT});var Yl=p((X1,Hl)=>{"use strict";var YT=rs(),VT=ns(),zT=Gl(),JT=as(),XT=Kl(),ZT=Ia(),ex=200;function tx(e,t,r){var a=-1,o=VT,s=e.length,i=!0,u=[],c=u;if(r)i=!1,o=zT;else if(s>=ex){var d=t?null:XT(e);if(d)return ZT(d);i=!1,o=JT,c=new YT}else c=t?[]:u;e:for(;++a<s;){var m=e[a],y=t?t(m):m;if(m=r||m!==0?m:0,i&&y===y){for(var g=c.length;g--;)if(c[g]===y)continue e;t&&c.push(y),u.push(m)}else o(c,y,r)||(c!==u&&c.push(y),u.push(m))}return u}n(tx,"baseUniq");Hl.exports=tx});var wa=p((eW,Vl)=>{"use strict";var rx=9007199254740991;function nx(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=rx}n(nx,"isLength");Vl.exports=nx});var mr=p((rW,zl)=>{"use strict";var ax=gn(),ox=wa();function sx(e){return e!=null&&ox(e.length)&&!ax(e)}n(sx,"isArrayLike");zl.exports=sx});var us=p((aW,Jl)=>{"use strict";var ix=mr(),ux=De();function cx(e){return ux(e)&&ix(e)}n(cx,"isArrayLikeObject");Jl.exports=cx});var Zl=p((sW,Xl)=>{"use strict";var px=Vo(),lx=ts(),dx=Yl(),fx=us(),mx=lx(function(e){return dx(px(e,1,fx,!0))});Xl.exports=mx});var td=p((iW,ed)=>{"use strict";var gx=bn();function hx(){this.__data__=new gx,this.size=0}n(hx,"stackClear");ed.exports=hx});var nd=p((cW,rd)=>{"use strict";function yx(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}n(yx,"stackDelete");rd.exports=yx});var od=p((lW,ad)=>{"use strict";function bx(e){return this.__data__.get(e)}n(bx,"stackGet");ad.exports=bx});var id=p((fW,sd)=>{"use strict";function Ax(e){return this.__data__.has(e)}n(Ax,"stackHas");sd.exports=Ax});var cd=p((gW,ud)=>{"use strict";var Ix=bn(),wx=ya(),Sx=ba(),vx=200;function Tx(e,t){var r=this.__data__;if(r instanceof Ix){var a=r.__data__;if(!wx||a.length<vx-1)return a.push([e,t]),this.size=++r.size,this;r=this.__data__=new Sx(a)}return r.set(e,t),this.size=r.size,this}n(Tx,"stackSet");ud.exports=Tx});var In=p((yW,pd)=>{"use strict";var xx=bn(),Rx=td(),Ex=nd(),_x=od(),Cx=id(),Ox=cd();function gr(e){var t=this.__data__=new xx(e);this.size=t.size}n(gr,"Stack");gr.prototype.clear=Rx;gr.prototype.delete=Ex;gr.prototype.get=_x;gr.prototype.has=Cx;gr.prototype.set=Ox;pd.exports=gr});var wn=p((AW,dd)=>{"use strict";var ld=Zo();function Lx(e,t,r){t=="__proto__"&&ld?ld(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}n(Lx,"baseAssignValue");dd.exports=Lx});var cs=p((wW,fd)=>{"use strict";var Px=wn(),qx=lr();function Ux(e,t,r){(r!==void 0&&!qx(e[t],r)||r===void 0&&!(t in e))&&Px(e,t,r)}n(Ux,"assignMergeValue");fd.exports=Ux});var gd=p((vW,md)=>{"use strict";function kx(e){return function(t,r,a){for(var o=-1,s=Object(t),i=a(t),u=i.length;u--;){var c=i[e?u:++o];if(r(s[c],c,s)===!1)break}return t}}n(kx,"createBaseFor");md.exports=kx});var ps=p((xW,hd)=>{"use strict";var Dx=gd(),Mx=Dx();hd.exports=Mx});var ls=p((Sn,hr)=>{"use strict";var Bx=Ee(),Id=typeof Sn=="object"&&Sn&&!Sn.nodeType&&Sn,yd=Id&&typeof hr=="object"&&hr&&!hr.nodeType&&hr,Nx=yd&&yd.exports===Id,bd=Nx?Bx.Buffer:void 0,Ad=bd?bd.allocUnsafe:void 0;function Gx(e,t){if(t)return e.slice();var r=e.length,a=Ad?Ad(r):new e.constructor(r);return e.copy(a),a}n(Gx,"cloneBuffer");hr.exports=Gx});var ds=p((EW,wd)=>{"use strict";var Fx=Ee(),Wx=Fx.Uint8Array;wd.exports=Wx});var Sa=p((_W,vd)=>{"use strict";var Sd=ds();function $x(e){var t=new e.constructor(e.byteLength);return new Sd(t).set(new Sd(e)),t}n($x,"cloneArrayBuffer");vd.exports=$x});var fs=p((OW,Td)=>{"use strict";var jx=Sa();function Qx(e,t){var r=t?jx(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}n(Qx,"cloneTypedArray");Td.exports=Qx});var yr=p((PW,xd)=>{"use strict";function Kx(e,t){var r=-1,a=e.length;for(t||(t=Array(a));++r<a;)t[r]=e[r];return t}n(Kx,"copyArray");xd.exports=Kx});var vn=p((UW,Ed)=>{"use strict";var Hx=Ke(),Rd=Object.create,Yx=function(){function e(){}return n(e,"object"),function(t){if(!Hx(t))return{};if(Rd)return Rd(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();Ed.exports=Yx});var ms=p((DW,_d)=>{"use strict";function Vx(e,t){return function(r){return e(t(r))}}n(Vx,"overArg");_d.exports=Vx});var va=p((BW,Cd)=>{"use strict";var zx=ms(),Jx=zx(Object.getPrototypeOf,Object);Cd.exports=Jx});var Ta=p((NW,Od)=>{"use strict";var Xx=Object.prototype;function Zx(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||Xx;return e===r}n(Zx,"isPrototype");Od.exports=Zx});var gs=p((FW,Ld)=>{"use strict";var eR=vn(),tR=va(),rR=Ta();function nR(e){return typeof e.constructor=="function"&&!rR(e)?eR(tR(e)):{}}n(nR,"initCloneObject");Ld.exports=nR});var qd=p(($W,Pd)=>{"use strict";function aR(){return!1}n(aR,"stubFalse");Pd.exports=aR});var xn=p((Tn,br)=>{"use strict";var oR=Ee(),sR=qd(),Dd=typeof Tn=="object"&&Tn&&!Tn.nodeType&&Tn,Ud=Dd&&typeof br=="object"&&br&&!br.nodeType&&br,iR=Ud&&Ud.exports===Dd,kd=iR?oR.Buffer:void 0,uR=kd?kd.isBuffer:void 0,cR=uR||sR;br.exports=cR});var hs=p((QW,Bd)=>{"use strict";var pR=Lt(),lR=va(),dR=De(),fR="[object Object]",mR=Function.prototype,gR=Object.prototype,Md=mR.toString,hR=gR.hasOwnProperty,yR=Md.call(Object);function bR(e){if(!dR(e)||pR(e)!=fR)return!1;var t=lR(e);if(t===null)return!0;var r=hR.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Md.call(r)==yR}n(bR,"isPlainObject");Bd.exports=bR});var Gd=p((HW,Nd)=>{"use strict";var AR=Lt(),IR=wa(),wR=De(),SR="[object Arguments]",vR="[object Array]",TR="[object Boolean]",xR="[object Date]",RR="[object Error]",ER="[object Function]",_R="[object Map]",CR="[object Number]",OR="[object Object]",LR="[object RegExp]",PR="[object Set]",qR="[object String]",UR="[object WeakMap]",kR="[object ArrayBuffer]",DR="[object DataView]",MR="[object Float32Array]",BR="[object Float64Array]",NR="[object Int8Array]",GR="[object Int16Array]",FR="[object Int32Array]",WR="[object Uint8Array]",$R="[object Uint8ClampedArray]",jR="[object Uint16Array]",QR="[object Uint32Array]",Y={};Y[MR]=Y[BR]=Y[NR]=Y[GR]=Y[FR]=Y[WR]=Y[$R]=Y[jR]=Y[QR]=!0;Y[SR]=Y[vR]=Y[kR]=Y[TR]=Y[DR]=Y[xR]=Y[RR]=Y[ER]=Y[_R]=Y[CR]=Y[OR]=Y[LR]=Y[PR]=Y[qR]=Y[UR]=!1;function KR(e){return wR(e)&&IR(e.length)&&!!Y[AR(e)]}n(KR,"baseIsTypedArray");Nd.exports=KR});var xa=p((VW,Fd)=>{"use strict";function HR(e){return function(t){return e(t)}}n(HR,"baseUnary");Fd.exports=HR});var Ra=p((Rn,Ar)=>{"use strict";var YR=Yo(),Wd=typeof Rn=="object"&&Rn&&!Rn.nodeType&&Rn,En=Wd&&typeof Ar=="object"&&Ar&&!Ar.nodeType&&Ar,VR=En&&En.exports===Wd,ys=VR&&YR.process,zR=function(){try{var e=En&&En.require&&En.require("util").types;return e||ys&&ys.binding&&ys.binding("util")}catch{}}();Ar.exports=zR});var Ea=p((JW,Qd)=>{"use strict";var JR=Gd(),XR=xa(),$d=Ra(),jd=$d&&$d.isTypedArray,ZR=jd?XR(jd):JR;Qd.exports=ZR});var bs=p((XW,Kd)=>{"use strict";function eE(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}n(eE,"safeGet");Kd.exports=eE});var As=p((e$,Hd)=>{"use strict";var tE=wn(),rE=lr(),nE=Object.prototype,aE=nE.hasOwnProperty;function oE(e,t,r){var a=e[t];(!(aE.call(e,t)&&rE(a,r))||r===void 0&&!(t in e))&&tE(e,t,r)}n(oE,"assignValue");Hd.exports=oE});var Ir=p((r$,Yd)=>{"use strict";var sE=As(),iE=wn();function uE(e,t,r,a){var o=!r;r||(r={});for(var s=-1,i=t.length;++s<i;){var u=t[s],c=a?a(r[u],e[u],u,r,e):void 0;c===void 0&&(c=e[u]),o?iE(r,u,c):sE(r,u,c)}return r}n(uE,"copyObject");Yd.exports=uE});var zd=p((a$,Vd)=>{"use strict";function cE(e,t){for(var r=-1,a=Array(e);++r<e;)a[r]=t(r);return a}n(cE,"baseTimes");Vd.exports=cE});var _n=p((s$,Jd)=>{"use strict";var pE=9007199254740991,lE=/^(?:0|[1-9]\d*)$/;function dE(e,t){var r=typeof e;return t=t??pE,!!t&&(r=="number"||r!="symbol"&&lE.test(e))&&e>-1&&e%1==0&&e<t}n(dE,"isIndex");Jd.exports=dE});var Is=p((u$,Xd)=>{"use strict";var fE=zd(),mE=fn(),gE=Te(),hE=xn(),yE=_n(),bE=Ea(),AE=Object.prototype,IE=AE.hasOwnProperty;function wE(e,t){var r=gE(e),a=!r&&mE(e),o=!r&&!a&&hE(e),s=!r&&!a&&!o&&bE(e),i=r||a||o||s,u=i?fE(e.length,String):[],c=u.length;for(var d in e)(t||IE.call(e,d))&&!(i&&(d=="length"||o&&(d=="offset"||d=="parent")||s&&(d=="buffer"||d=="byteLength"||d=="byteOffset")||yE(d,c)))&&u.push(d);return u}n(wE,"arrayLikeKeys");Xd.exports=wE});var ef=p((p$,Zd)=>{"use strict";function SE(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}n(SE,"nativeKeysIn");Zd.exports=SE});var rf=p((d$,tf)=>{"use strict";var vE=Ke(),TE=Ta(),xE=ef(),RE=Object.prototype,EE=RE.hasOwnProperty;function _E(e){if(!vE(e))return xE(e);var t=TE(e),r=[];for(var a in e)a=="constructor"&&(t||!EE.call(e,a))||r.push(a);return r}n(_E,"baseKeysIn");tf.exports=_E});var wr=p((m$,nf)=>{"use strict";var CE=Is(),OE=rf(),LE=mr();function PE(e){return LE(e)?CE(e,!0):OE(e)}n(PE,"keysIn");nf.exports=PE});var of=p((h$,af)=>{"use strict";var qE=Ir(),UE=wr();function kE(e){return qE(e,UE(e))}n(kE,"toPlainObject");af.exports=kE});var df=p((b$,lf)=>{"use strict";var sf=cs(),DE=ls(),ME=fs(),BE=yr(),NE=gs(),uf=fn(),cf=Te(),GE=us(),FE=xn(),WE=gn(),$E=Ke(),jE=hs(),QE=Ea(),pf=bs(),KE=of();function HE(e,t,r,a,o,s,i){var u=pf(e,r),c=pf(t,r),d=i.get(c);if(d){sf(e,r,d);return}var m=s?s(u,c,r+"",e,t,i):void 0,y=m===void 0;if(y){var g=cf(c),T=!g&&FE(c),B=!g&&!T&&QE(c);m=c,g||T||B?cf(u)?m=u:GE(u)?m=BE(u):T?(y=!1,m=DE(c,!0)):B?(y=!1,m=ME(c,!0)):m=[]:jE(c)||uf(c)?(m=u,uf(u)?m=KE(u):(!$E(u)||WE(u))&&(m=NE(c))):y=!1}y&&(i.set(c,m),o(m,c,a,s,i),i.delete(c)),sf(e,r,m)}n(HE,"baseMergeDeep");lf.exports=HE});var gf=p((I$,mf)=>{"use strict";var YE=In(),VE=cs(),zE=ps(),JE=df(),XE=Ke(),ZE=wr(),e_=bs();function ff(e,t,r,a,o){e!==t&&zE(t,function(s,i){if(o||(o=new YE),XE(s))JE(e,t,i,r,ff,a,o);else{var u=a?a(e_(e,i),s,i+"",e,t,o):void 0;u===void 0&&(u=s),VE(e,i,u)}},ZE)}n(ff,"baseMerge");mf.exports=ff});var yf=p((S$,hf)=>{"use strict";var t_=lr(),r_=mr(),n_=_n(),a_=Ke();function o_(e,t,r){if(!a_(r))return!1;var a=typeof t;return(a=="number"?r_(r)&&n_(t,r.length):a=="string"&&t in r)?t_(r[t],e):!1}n(o_,"isIterateeCall");hf.exports=o_});var Af=p((T$,bf)=>{"use strict";var s_=ts(),i_=yf();function u_(e){return s_(function(t,r){var a=-1,o=r.length,s=o>1?r[o-1]:void 0,i=o>2?r[2]:void 0;for(s=e.length>3&&typeof s=="function"?(o--,s):void 0,i&&i_(r[0],r[1],i)&&(s=o<3?void 0:s,o=1),t=Object(t);++a<o;){var u=r[a];u&&e(t,u,a,s)}return t})}n(u_,"createAssigner");bf.exports=u_});var ws=p((R$,If)=>{"use strict";var c_=gf(),p_=Af(),l_=p_(function(e,t,r){c_(e,t,r)});If.exports=l_});var Sm=p(qe=>{"use strict";qe.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"};qe.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"]};qe.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};qe.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};qe.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};qe.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]};qe.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}};qe.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}};qe.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=qe.aliasToReal,r={};for(var a in t){var o=t[a];e.call(r,o)?r[o].push(a):r[o]=[a]}return r}();qe.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"};qe.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};qe.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 yi=p((qK,vm)=>{"use strict";vm.exports={}});var Em=p((UK,Rm)=>{"use strict";var me=Sm(),YC=yi(),Tm=Array.prototype.push;function VC(e,t){return t==2?function(r,a){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}n(VC,"baseArity");function bi(e,t){return t==2?function(r,a){return e(r,a)}:function(r){return e(r)}}n(bi,"baseAry");function xm(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}n(xm,"cloneArray");function zC(e){return function(t){return e({},t)}}n(zC,"createCloner");function JC(e,t){return function(){for(var r=arguments.length,a=r-1,o=Array(r);r--;)o[r]=arguments[r];var s=o[t],i=o.slice(0,t);return s&&Tm.apply(i,s),t!=a&&Tm.apply(i,o.slice(t+1)),e.apply(this,i)}}n(JC,"flatSpread");function Ai(e,t){return function(){var r=arguments.length;if(r){for(var a=Array(r);r--;)a[r]=arguments[r];var o=a[0]=t.apply(void 0,a);return e.apply(void 0,a),o}}}n(Ai,"wrapImmutable");function Ii(e,t,r,a){var o=typeof t=="function",s=t===Object(t);if(s&&(a=r,r=t,t=void 0),r==null)throw new TypeError;a||(a={});var i={cap:"cap"in a?a.cap:!0,curry:"curry"in a?a.curry:!0,fixed:"fixed"in a?a.fixed:!0,immutable:"immutable"in a?a.immutable:!0,rearg:"rearg"in a?a.rearg:!0},u=o?r:YC,c="curry"in a&&a.curry,d="fixed"in a&&a.fixed,m="rearg"in a&&a.rearg,y=o?r.runInContext():void 0,g=o?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},T=g.ary,B=g.assign,D=g.clone,k=g.curry,C=g.forEach,W=g.isArray,Ae=g.isError,ie=g.isFunction,Ve=g.isWeakMap,ot=g.keys,st=g.rearg,V=g.toInteger,F=g.toPath,Nt=ot(me.aryMethod),Jn={castArray:function(x){return function(){var A=arguments[0];return W(A)?x(xm(A)):x.apply(void 0,arguments)}},iteratee:function(x){return function(){var A=arguments[0],I=arguments[1],R=x(A,I),U=R.length;return i.cap&&typeof I=="number"?(I=I>2?I-2:1,U&&U<=I?R:bi(R,I)):R}},mixin:function(x){return function(A){var I=this;if(!ie(I))return x(I,Object(A));var R=[];return C(ot(A),function(U){ie(A[U])&&R.push([U,I.prototype[U]])}),x(I,Object(A)),C(R,function(U){var oe=U[1];ie(oe)?I.prototype[U[0]]=oe:delete I.prototype[U[0]]}),I}},nthArg:function(x){return function(A){var I=A<0?1:V(A)+1;return k(x(A),I)}},rearg:function(x){return function(A,I){var R=I?I.length:0;return k(x(A,I),R)}},runInContext:function(x){return function(A){return Ii(e,x(A),a)}}};function O(x,A){if(i.cap){var I=me.iterateeRearg[x];if(I)return Z(A,I);var R=!o&&me.iterateeAry[x];if(R)return $(A,R)}return A}n(O,"castCap");function S(x,A,I){return c||i.curry&&I>1?k(A,I):A}n(S,"castCurry");function b(x,A,I){if(i.fixed&&(d||!me.skipFixed[x])){var R=me.methodSpread[x],U=R&&R.start;return U===void 0?T(A,I):JC(A,U)}return A}n(b,"castFixed");function E(x,A,I){return i.rearg&&I>1&&(m||!me.skipRearg[x])?st(A,me.methodRearg[x]||me.aryRearg[I]):A}n(E,"castRearg");function w(x,A){A=F(A);for(var I=-1,R=A.length,U=R-1,oe=D(Object(x)),xe=oe;xe!=null&&++I<R;){var We=A[I],it=xe[We];it!=null&&!(ie(it)||Ae(it)||Ve(it))&&(xe[We]=D(I==U?it:Object(it))),xe=xe[We]}return oe}n(w,"cloneByPath");function q(x){return K.runInContext.convert(x)(void 0)}n(q,"convertLib");function P(x,A){var I=me.aliasToReal[x]||x,R=me.remap[I]||I,U=a;return function(oe){var xe=o?y:g,We=o?y[R]:A,it=B(B({},U),oe);return Ii(xe,I,We,it)}}n(P,"createConverter");function $(x,A){return ae(x,function(I){return typeof I=="function"?bi(I,A):I})}n($,"iterateeAry");function Z(x,A){return ae(x,function(I){var R=A.length;return VC(st(bi(I,R),A),R)})}n(Z,"iterateeRearg");function ae(x,A){return function(){var I=arguments.length;if(!I)return x();for(var R=Array(I);I--;)R[I]=arguments[I];var U=i.rearg?0:I-1;return R[U]=A(R[U]),x.apply(void 0,R)}}n(ae,"overArg");function pe(x,A,I){var R,U=me.aliasToReal[x]||x,oe=A,xe=Jn[U];return xe?oe=xe(A):i.immutable&&(me.mutate.array[U]?oe=Ai(A,xm):me.mutate.object[U]?oe=Ai(A,zC(A)):me.mutate.set[U]&&(oe=Ai(A,w))),C(Nt,function(We){return C(me.aryMethod[We],function(it){if(U==it){var Ju=me.methodSpread[U],kI=Ju&&Ju.afterRearg;return R=kI?b(U,E(U,oe,We),We):E(U,b(U,oe,We),We),R=O(U,R),R=S(U,R,We),!1}}),!R}),R||(R=oe),R==A&&(R=c?k(R,1):function(){return A.apply(this,arguments)}),R.convert=P(U,A),R.placeholder=A.placeholder=I,R}if(n(pe,"wrap"),!s)return pe(t,r,u);var K=r,Fe=[];return C(Nt,function(x){C(me.aryMethod[x],function(A){var I=K[me.remap[A]||A];I&&Fe.push([A,pe(A,I,K)])})}),C(ot(K),function(x){var A=K[x];if(typeof A=="function"){for(var I=Fe.length;I--;)if(Fe[I][0]==x)return;A.convert=P(x,A),Fe.push([x,A])}}),C(Fe,function(x){K[x[0]]=x[1]}),K.convert=q,K.placeholder=K,C(ot(K),function(x){C(me.realToAlias[x]||[],function(A){K[A]=K[x]})}),K}n(Ii,"baseConvert");Rm.exports=Ii});var wi=p((DK,_m)=>{"use strict";var XC=Pt(),ZC=Ee(),eO=XC(ZC,"WeakMap");_m.exports=eO});var Si=p((MK,Om)=>{"use strict";var Cm=wi(),tO=Cm&&new Cm;Om.exports=tO});var vi=p((BK,Pm)=>{"use strict";var rO=mn(),Lm=Si(),nO=Lm?function(e,t){return Lm.set(e,t),e}:rO;Pm.exports=nO});var Bn=p((NK,qm)=>{"use strict";var aO=vn(),oO=Ke();function sO(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=aO(e.prototype),a=e.apply(r,t);return oO(a)?a:r}}n(sO,"createCtor");qm.exports=sO});var km=p((FK,Um)=>{"use strict";var iO=Bn(),uO=Ee(),cO=1;function pO(e,t,r){var a=t&cO,o=iO(e);function s(){var i=this&&this!==uO&&this instanceof s?o:e;return i.apply(a?r:this,arguments)}return n(s,"wrapper"),s}n(pO,"createBind");Um.exports=pO});var Ti=p(($K,Dm)=>{"use strict";var lO=Math.max;function dO(e,t,r,a){for(var o=-1,s=e.length,i=r.length,u=-1,c=t.length,d=lO(s-i,0),m=Array(c+d),y=!a;++u<c;)m[u]=t[u];for(;++o<i;)(y||o<s)&&(m[r[o]]=e[o]);for(;d--;)m[u++]=e[o++];return m}n(dO,"composeArgs");Dm.exports=dO});var xi=p((QK,Mm)=>{"use strict";var fO=Math.max;function mO(e,t,r,a){for(var o=-1,s=e.length,i=-1,u=r.length,c=-1,d=t.length,m=fO(s-u,0),y=Array(m+d),g=!a;++o<m;)y[o]=e[o];for(var T=o;++c<d;)y[T+c]=t[c];for(;++i<u;)(g||o<s)&&(y[T+r[i]]=e[o++]);return y}n(mO,"composeArgsRight");Mm.exports=mO});var Nm=p((HK,Bm)=>{"use strict";function gO(e,t){for(var r=e.length,a=0;r--;)e[r]===t&&++a;return a}n(gO,"countHolders");Bm.exports=gO});var Xa=p((VK,Gm)=>{"use strict";function hO(){}n(hO,"baseLodash");Gm.exports=hO});var eo=p((JK,Fm)=>{"use strict";var yO=vn(),bO=Xa(),AO=4294967295;function Za(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=AO,this.__views__=[]}n(Za,"LazyWrapper");Za.prototype=yO(bO.prototype);Za.prototype.constructor=Za;Fm.exports=Za});var Ri=p((ZK,$m)=>{"use strict";var Wm=Si(),IO=ss(),wO=Wm?function(e){return Wm.get(e)}:IO;$m.exports=wO});var Qm=p((e2,jm)=>{"use strict";var SO={};jm.exports=SO});var Ym=p((t2,Hm)=>{"use strict";var Km=Qm(),vO=Object.prototype,TO=vO.hasOwnProperty;function xO(e){for(var t=e.name+"",r=Km[t],a=TO.call(Km,t)?r.length:0;a--;){var o=r[a],s=o.func;if(s==null||s==e)return o.name}return t}n(xO,"getFuncName");Hm.exports=xO});var Ei=p((n2,Vm)=>{"use strict";var RO=vn(),EO=Xa();function to(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}n(to,"LodashWrapper");to.prototype=RO(EO.prototype);to.prototype.constructor=to;Vm.exports=to});var Jm=p((o2,zm)=>{"use strict";var _O=eo(),CO=Ei(),OO=yr();function LO(e){if(e instanceof _O)return e.clone();var t=new CO(e.__wrapped__,e.__chain__);return t.__actions__=OO(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}n(LO,"wrapperClone");zm.exports=LO});var eg=p((i2,Zm)=>{"use strict";var PO=eo(),Xm=Ei(),qO=Xa(),UO=Te(),kO=De(),DO=Jm(),MO=Object.prototype,BO=MO.hasOwnProperty;function ro(e){if(kO(e)&&!UO(e)&&!(e instanceof PO)){if(e instanceof Xm)return e;if(BO.call(e,"__wrapped__"))return DO(e)}return new Xm(e)}n(ro,"lodash");ro.prototype=qO.prototype;ro.prototype.constructor=ro;Zm.exports=ro});var rg=p((c2,tg)=>{"use strict";var NO=eo(),GO=Ri(),FO=Ym(),WO=eg();function $O(e){var t=FO(e),r=WO[t];if(typeof r!="function"||!(t in NO.prototype))return!1;if(e===r)return!0;var a=GO(r);return!!a&&e===a[0]}n($O,"isLaziable");tg.exports=$O});var _i=p((l2,ng)=>{"use strict";var jO=vi(),QO=es(),KO=QO(jO);ng.exports=KO});var og=p((d2,ag)=>{"use strict";var HO=/\{\n\/\* \[wrapped with (.+)\] \*/,YO=/,? & /;function VO(e){var t=e.match(HO);return t?t[1].split(YO):[]}n(VO,"getWrapDetails");ag.exports=VO});var ig=p((m2,sg)=>{"use strict";var zO=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function JO(e,t){var r=t.length;if(!r)return e;var a=r-1;return t[a]=(r>1?"& ":"")+t[a],t=t.join(r>2?", ":" "),e.replace(zO,`{
|
|
2
2
|
/* [wrapped with `+t+`] */
|
|
3
|
-
`)}n(JO,"insertWrapDetails");ig.exports=JO});var no=p((h2,cg)=>{"use strict";function XO(e,t){for(var r=-1,a=e==null?0:e.length;++r<a&&t(e[r],r,e)!==!1;);return e}n(XO,"arrayEach");cg.exports=XO});var lg=p((b2,pg)=>{"use strict";var ZO=no(),eL=ns(),tL=1,rL=2,nL=8,aL=16,oL=32,sL=64,iL=128,uL=256,cL=512,pL=[["ary",iL],["bind",tL],["bindKey",rL],["curry",nL],["curryRight",aL],["flip",cL],["partial",oL],["partialRight",sL],["rearg",uL]];function lL(e,t){return ZO(pL,function(r){var a="_."+r[0];t&r[1]&&!eL(e,a)&&e.push(a)}),e.sort()}n(lL,"updateWrapDetails");pg.exports=lL});var Ci=p((I2,dg)=>{"use strict";var dL=sg(),fL=ug(),mL=ha(),gL=lg();function hL(e,t,r){var a=t+"";return mL(e,fL(a,gL(dL(a),r)))}n(hL,"setWrapToString");dg.exports=hL});var Oi=p((S2,gg)=>{"use strict";var yL=ng(),bL=_i(),AL=Ci(),IL=1,wL=2,SL=4,vL=8,fg=32,mg=64;function TL(e,t,r,a,o,s,i,u,c,d){var m=t&vL,y=m?i:void 0,g=m?void 0:i,T=m?s:void 0,B=m?void 0:s;t|=m?fg:mg,t&=~(m?mg:fg),t&SL||(t&=~(IL|wL));var D=[e,t,o,T,y,B,g,u,c,d],k=r.apply(void 0,D);return yL(e)&&bL(k,D),k.placeholder=a,AL(k,e,t)}n(TL,"createRecurry");gg.exports=TL});var Li=p((T2,hg)=>{"use strict";function xL(e){var t=e;return t.placeholder}n(xL,"getHolder");hg.exports=xL});var bg=p((R2,yg)=>{"use strict";var RL=yr(),EL=_n(),_L=Math.min;function CL(e,t){for(var r=e.length,a=_L(t.length,r),o=RL(e);a--;){var s=t[a];e[a]=EL(s,r)?o[s]:void 0}return e}n(CL,"reorder");yg.exports=CL});var ao=p((_2,Ig)=>{"use strict";var Ag="__lodash_placeholder__";function OL(e,t){for(var r=-1,a=e.length,o=0,s=[];++r<a;){var i=e[r];(i===t||i===Ag)&&(e[r]=Ag,s[o++]=r)}return s}n(OL,"replaceHolders");Ig.exports=OL});var Pi=p((O2,vg)=>{"use strict";var LL=Ti(),PL=xi(),qL=Gm(),wg=Bn(),UL=Oi(),kL=Li(),DL=bg(),ML=ao(),BL=Ee(),NL=1,GL=2,FL=8,WL=16,$L=128,jL=512;function Sg(e,t,r,a,o,s,i,u,c,d){var m=t&$L,y=t&NL,g=t&GL,T=t&(FL|WL),B=t&jL,D=g?void 0:wg(e);function k(){for(var C=arguments.length,W=Array(C),Ae=C;Ae--;)W[Ae]=arguments[Ae];if(T)var ie=kL(k),Ve=qL(W,ie);if(a&&(W=LL(W,a,o,T)),s&&(W=PL(W,s,i,T)),C-=Ve,T&&C<d){var ot=ML(W,ie);return UL(e,t,Sg,k.placeholder,r,W,ot,u,c,d-C)}var st=y?r:this,V=g?st[e]:e;return C=W.length,u?W=DL(W,u):B&&C>1&&W.reverse(),m&&c<C&&(W.length=c),this&&this!==BL&&this instanceof k&&(V=D||wg(V)),V.apply(st,W)}return n(k,"wrapper"),k}n(Sg,"createHybrid");vg.exports=Sg});var xg=p((P2,Tg)=>{"use strict";var QL=ga(),KL=Bn(),HL=Pi(),YL=Oi(),VL=Li(),zL=ao(),JL=Ee();function XL(e,t,r){var a=KL(e);function o(){for(var s=arguments.length,i=Array(s),u=s,c=VL(o);u--;)i[u]=arguments[u];var d=s<3&&i[0]!==c&&i[s-1]!==c?[]:zL(i,c);if(s-=d.length,s<r)return YL(e,t,HL,o.placeholder,void 0,i,d,void 0,void 0,r-s);var m=this&&this!==JL&&this instanceof o?a:e;return QL(m,this,i)}return n(o,"wrapper"),o}n(XL,"createCurry");Tg.exports=XL});var Eg=p((U2,Rg)=>{"use strict";var ZL=ga(),eP=Bn(),tP=Ee(),rP=1;function nP(e,t,r,a){var o=t&rP,s=eP(e);function i(){for(var u=-1,c=arguments.length,d=-1,m=a.length,y=Array(m+c),g=this&&this!==tP&&this instanceof i?s:e;++d<m;)y[d]=a[d];for(;c--;)y[d++]=arguments[++u];return ZL(g,o?r:this,y)}return n(i,"wrapper"),i}n(nP,"createPartial");Rg.exports=nP});var qg=p((D2,Pg)=>{"use strict";var aP=Ti(),oP=xi(),_g=ao(),Cg="__lodash_placeholder__",qi=1,sP=2,iP=4,Og=8,Nn=128,Lg=256,uP=Math.min;function cP(e,t){var r=e[1],a=t[1],o=r|a,s=o<(qi|sP|Nn),i=a==Nn&&r==Og||a==Nn&&r==Lg&&e[7].length<=t[8]||a==(Nn|Lg)&&t[7].length<=t[8]&&r==Og;if(!(s||i))return e;a&qi&&(e[2]=t[2],o|=r&qi?0:iP);var u=t[3];if(u){var c=e[3];e[3]=c?aP(c,u,t[4]):u,e[4]=c?_g(e[3],Cg):t[4]}return u=t[5],u&&(c=e[5],e[5]=c?oP(c,u,t[6]):u,e[6]=c?_g(e[5],Cg):t[6]),u=t[7],u&&(e[7]=u),a&Nn&&(e[8]=e[8]==null?t[8]:uP(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=o,e}n(cP,"mergeData");Pg.exports=cP});var kg=p((B2,Ug)=>{"use strict";var pP=/\s/;function lP(e){for(var t=e.length;t--&&pP.test(e.charAt(t)););return t}n(lP,"trimmedEndIndex");Ug.exports=lP});var Mg=p((G2,Dg)=>{"use strict";var dP=kg(),fP=/^\s+/;function mP(e){return e&&e.slice(0,dP(e)+1).replace(fP,"")}n(mP,"baseTrim");Dg.exports=mP});var Cr=p((W2,Bg)=>{"use strict";var gP=Lt(),hP=De(),yP="[object Symbol]";function bP(e){return typeof e=="symbol"||hP(e)&&gP(e)==yP}n(bP,"isSymbol");Bg.exports=bP});var Wg=p((j2,Fg)=>{"use strict";var AP=Mg(),Ng=Ke(),IP=Cr(),Gg=0/0,wP=/^[-+]0x[0-9a-f]+$/i,SP=/^0b[01]+$/i,vP=/^0o[0-7]+$/i,TP=parseInt;function xP(e){if(typeof e=="number")return e;if(IP(e))return Gg;if(Ng(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=Ng(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=AP(e);var r=SP.test(e);return r||vP.test(e)?TP(e.slice(2),r?2:8):wP.test(e)?Gg:+e}n(xP,"toNumber");Fg.exports=xP});var Qg=p((K2,jg)=>{"use strict";var RP=Wg(),$g=1/0,EP=17976931348623157e292;function _P(e){if(!e)return e===0?e:0;if(e=RP(e),e===$g||e===-$g){var t=e<0?-1:1;return t*EP}return e===e?e:0}n(_P,"toFinite");jg.exports=_P});var Ui=p((Y2,Kg)=>{"use strict";var CP=Qg();function OP(e){var t=CP(e),r=t%1;return t===t?r?t-r:t:0}n(OP,"toInteger");Kg.exports=OP});var oo=p((z2,Jg)=>{"use strict";var LP=vi(),PP=Dm(),qP=xg(),UP=Pi(),kP=Eg(),DP=Ri(),MP=qg(),BP=_i(),NP=Ci(),Hg=Ui(),GP="Expected a function",Yg=1,FP=2,ki=8,Di=16,Mi=32,Vg=64,zg=Math.max;function WP(e,t,r,a,o,s,i,u){var c=t&FP;if(!c&&typeof e!="function")throw new TypeError(GP);var d=a?a.length:0;if(d||(t&=~(Mi|Vg),a=o=void 0),i=i===void 0?i:zg(Hg(i),0),u=u===void 0?u:Hg(u),d-=o?o.length:0,t&Vg){var m=a,y=o;a=o=void 0}var g=c?void 0:DP(e),T=[e,t,r,a,o,m,y,s,i,u];if(g&&MP(T,g),e=T[0],t=T[1],r=T[2],a=T[3],o=T[4],u=T[9]=T[9]===void 0?c?0:e.length:zg(T[9]-d,0),!u&&t&(ki|Di)&&(t&=~(ki|Di)),!t||t==Yg)var B=PP(e,t,r);else t==ki||t==Di?B=qP(e,t,u):(t==Mi||t==(Yg|Mi))&&!o.length?B=kP(e,t,r,a):B=UP.apply(void 0,T);var D=g?LP:BP;return NP(D(B,T),e,t)}n(WP,"createWrap");Jg.exports=WP});var Zg=p((X2,Xg)=>{"use strict";var $P=oo(),jP=128;function QP(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,$P(e,jP,void 0,void 0,void 0,void 0,t)}n(QP,"ary");Xg.exports=QP});var th=p((eH,eh)=>{"use strict";var KP=ms(),HP=KP(Object.keys,Object);eh.exports=HP});var Bi=p((tH,rh)=>{"use strict";var YP=Ta(),VP=th(),zP=Object.prototype,JP=zP.hasOwnProperty;function XP(e){if(!YP(e))return VP(e);var t=[];for(var r in Object(e))JP.call(e,r)&&r!="constructor"&&t.push(r);return t}n(XP,"baseKeys");rh.exports=XP});var Or=p((nH,nh)=>{"use strict";var ZP=Is(),eq=Bi(),tq=mr();function rq(e){return tq(e)?ZP(e):eq(e)}n(rq,"keys");nh.exports=rq});var Ni=p((oH,ah)=>{"use strict";var nq=Ir(),aq=Or();function oq(e,t){return e&&nq(t,aq(t),e)}n(oq,"baseAssign");ah.exports=oq});var sh=p((iH,oh)=>{"use strict";var sq=Ir(),iq=wr();function uq(e,t){return e&&sq(t,iq(t),e)}n(uq,"baseAssignIn");oh.exports=uq});var uh=p((cH,ih)=>{"use strict";function cq(e,t){for(var r=-1,a=e==null?0:e.length,o=0,s=[];++r<a;){var i=e[r];t(i,r,e)&&(s[o++]=i)}return s}n(cq,"arrayFilter");ih.exports=cq});var Gi=p((lH,ch)=>{"use strict";function pq(){return[]}n(pq,"stubArray");ch.exports=pq});var so=p((fH,lh)=>{"use strict";var lq=uh(),dq=Gi(),fq=Object.prototype,mq=fq.propertyIsEnumerable,ph=Object.getOwnPropertySymbols,gq=ph?function(e){return e==null?[]:(e=Object(e),lq(ph(e),function(t){return mq.call(e,t)}))}:dq;lh.exports=gq});var fh=p((mH,dh)=>{"use strict";var hq=Ir(),yq=so();function bq(e,t){return hq(e,yq(e),t)}n(bq,"copySymbols");dh.exports=bq});var Fi=p((hH,mh)=>{"use strict";var Aq=ma(),Iq=va(),wq=so(),Sq=Gi(),vq=Object.getOwnPropertySymbols,Tq=vq?function(e){for(var t=[];e;)Aq(t,wq(e)),e=Iq(e);return t}:Sq;mh.exports=Tq});var hh=p((yH,gh)=>{"use strict";var xq=Ir(),Rq=Fi();function Eq(e,t){return xq(e,Rq(e),t)}n(Eq,"copySymbolsIn");gh.exports=Eq});var Wi=p((AH,yh)=>{"use strict";var _q=ma(),Cq=Te();function Oq(e,t,r){var a=t(e);return Cq(e)?a:_q(a,r(e))}n(Oq,"baseGetAllKeys");yh.exports=Oq});var $i=p((wH,bh)=>{"use strict";var Lq=Wi(),Pq=so(),qq=Or();function Uq(e){return Lq(e,qq,Pq)}n(Uq,"getAllKeys");bh.exports=Uq});var Ih=p((vH,Ah)=>{"use strict";var kq=Wi(),Dq=Fi(),Mq=wr();function Bq(e){return kq(e,Mq,Dq)}n(Bq,"getAllKeysIn");Ah.exports=Bq});var Sh=p((xH,wh)=>{"use strict";var Nq=Pt(),Gq=Ee(),Fq=Nq(Gq,"DataView");wh.exports=Fq});var Th=p((RH,vh)=>{"use strict";var Wq=Pt(),$q=Ee(),jq=Wq($q,"Promise");vh.exports=jq});var Pr=p((EH,Lh)=>{"use strict";var ji=Sh(),Qi=ya(),Ki=Th(),Hi=os(),Yi=wi(),Oh=Lt(),Lr=Xo(),xh="[object Map]",Qq="[object Object]",Rh="[object Promise]",Eh="[object Set]",_h="[object WeakMap]",Ch="[object DataView]",Kq=Lr(ji),Hq=Lr(Qi),Yq=Lr(Ki),Vq=Lr(Hi),zq=Lr(Yi),Jt=Oh;(ji&&Jt(new ji(new ArrayBuffer(1)))!=Ch||Qi&&Jt(new Qi)!=xh||Ki&&Jt(Ki.resolve())!=Rh||Hi&&Jt(new Hi)!=Eh||Yi&&Jt(new Yi)!=_h)&&(Jt=n(function(e){var t=Oh(e),r=t==Qq?e.constructor:void 0,a=r?Lr(r):"";if(a)switch(a){case Kq:return Ch;case Hq:return xh;case Yq:return Rh;case Vq:return Eh;case zq:return _h}return t},"getTag"));Lh.exports=Jt});var qh=p((CH,Ph)=>{"use strict";var Jq=Object.prototype,Xq=Jq.hasOwnProperty;function Zq(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&Xq.call(e,"index")&&(r.index=e.index,r.input=e.input),r}n(Zq,"initCloneArray");Ph.exports=Zq});var kh=p((LH,Uh)=>{"use strict";var eU=Sa();function tU(e,t){var r=t?eU(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}n(tU,"cloneDataView");Uh.exports=tU});var Mh=p((qH,Dh)=>{"use strict";var rU=/\w*$/;function nU(e){var t=new e.constructor(e.source,rU.exec(e));return t.lastIndex=e.lastIndex,t}n(nU,"cloneRegExp");Dh.exports=nU});var Wh=p((kH,Fh)=>{"use strict";var Bh=jt(),Nh=Bh?Bh.prototype:void 0,Gh=Nh?Nh.valueOf:void 0;function aU(e){return Gh?Object(Gh.call(e)):{}}n(aU,"cloneSymbol");Fh.exports=aU});var jh=p((MH,$h)=>{"use strict";var oU=Sa(),sU=kh(),iU=Mh(),uU=Wh(),cU=fs(),pU="[object Boolean]",lU="[object Date]",dU="[object Map]",fU="[object Number]",mU="[object RegExp]",gU="[object Set]",hU="[object String]",yU="[object Symbol]",bU="[object ArrayBuffer]",AU="[object DataView]",IU="[object Float32Array]",wU="[object Float64Array]",SU="[object Int8Array]",vU="[object Int16Array]",TU="[object Int32Array]",xU="[object Uint8Array]",RU="[object Uint8ClampedArray]",EU="[object Uint16Array]",_U="[object Uint32Array]";function CU(e,t,r){var a=e.constructor;switch(t){case bU:return oU(e);case pU:case lU:return new a(+e);case AU:return sU(e,r);case IU:case wU:case SU:case vU:case TU:case xU:case RU:case EU:case _U:return cU(e,r);case dU:return new a;case fU:case hU:return new a(e);case mU:return iU(e);case gU:return new a;case yU:return uU(e)}}n(CU,"initCloneByTag");$h.exports=CU});var Kh=p((NH,Qh)=>{"use strict";var OU=Pr(),LU=De(),PU="[object Map]";function qU(e){return LU(e)&&OU(e)==PU}n(qU,"baseIsMap");Qh.exports=qU});var zh=p((FH,Vh)=>{"use strict";var UU=Kh(),kU=xa(),Hh=Ra(),Yh=Hh&&Hh.isMap,DU=Yh?kU(Yh):UU;Vh.exports=DU});var Xh=p((WH,Jh)=>{"use strict";var MU=Pr(),BU=De(),NU="[object Set]";function GU(e){return BU(e)&&MU(e)==NU}n(GU,"baseIsSet");Jh.exports=GU});var ry=p((jH,ty)=>{"use strict";var FU=Xh(),WU=xa(),Zh=Ra(),ey=Zh&&Zh.isSet,$U=ey?WU(ey):FU;ty.exports=$U});var Vi=p((QH,sy)=>{"use strict";var jU=In(),QU=no(),KU=As(),HU=Ni(),YU=sh(),VU=ls(),zU=yr(),JU=fh(),XU=hh(),ZU=$i(),ek=Ih(),tk=Pr(),rk=qh(),nk=jh(),ak=gs(),ok=Te(),sk=xn(),ik=zh(),uk=Ke(),ck=ry(),pk=Or(),lk=wr(),dk=1,fk=2,mk=4,ny="[object Arguments]",gk="[object Array]",hk="[object Boolean]",yk="[object Date]",bk="[object Error]",ay="[object Function]",Ak="[object GeneratorFunction]",Ik="[object Map]",wk="[object Number]",oy="[object Object]",Sk="[object RegExp]",vk="[object Set]",Tk="[object String]",xk="[object Symbol]",Rk="[object WeakMap]",Ek="[object ArrayBuffer]",_k="[object DataView]",Ck="[object Float32Array]",Ok="[object Float64Array]",Lk="[object Int8Array]",Pk="[object Int16Array]",qk="[object Int32Array]",Uk="[object Uint8Array]",kk="[object Uint8ClampedArray]",Dk="[object Uint16Array]",Mk="[object Uint32Array]",H={};H[ny]=H[gk]=H[Ek]=H[_k]=H[hk]=H[yk]=H[Ck]=H[Ok]=H[Lk]=H[Pk]=H[qk]=H[Ik]=H[wk]=H[oy]=H[Sk]=H[vk]=H[Tk]=H[xk]=H[Uk]=H[kk]=H[Dk]=H[Mk]=!0;H[bk]=H[ay]=H[Rk]=!1;function io(e,t,r,a,o,s){var i,u=t&dk,c=t&fk,d=t&mk;if(r&&(i=o?r(e,a,o,s):r(e)),i!==void 0)return i;if(!uk(e))return e;var m=ok(e);if(m){if(i=rk(e),!u)return zU(e,i)}else{var y=tk(e),g=y==ay||y==Ak;if(sk(e))return VU(e,u);if(y==oy||y==ny||g&&!o){if(i=c||g?{}:ak(e),!u)return c?XU(e,YU(i,e)):JU(e,HU(i,e))}else{if(!H[y])return o?e:{};i=nk(e,y,u)}}s||(s=new jU);var T=s.get(e);if(T)return T;s.set(e,i),ck(e)?e.forEach(function(k){i.add(io(k,t,r,k,e,s))}):ik(e)&&e.forEach(function(k,C){i.set(C,io(k,t,r,C,e,s))});var B=d?c?ek:ZU:c?lk:pk,D=m?void 0:B(e);return QU(D||e,function(k,C){D&&(C=k,k=e[C]),KU(i,C,io(k,t,r,C,e,s))}),i}n(io,"baseClone");sy.exports=io});var uy=p((HH,iy)=>{"use strict";var Bk=Vi(),Nk=4;function Gk(e){return Bk(e,Nk)}n(Gk,"clone");iy.exports=Gk});var py=p((VH,cy)=>{"use strict";var Fk=oo(),Wk=8;function zi(e,t,r){t=r?void 0:t;var a=Fk(e,Wk,void 0,void 0,void 0,void 0,void 0,t);return a.placeholder=zi.placeholder,a}n(zi,"curry");zi.placeholder={};cy.exports=zi});var dy=p((JH,ly)=>{"use strict";var $k=Lt(),jk=De(),Qk=hs(),Kk="[object DOMException]",Hk="[object Error]";function Yk(e){if(!jk(e))return!1;var t=$k(e);return t==Hk||t==Kk||typeof e.message=="string"&&typeof e.name=="string"&&!Qk(e)}n(Yk,"isError");ly.exports=Yk});var my=p((ZH,fy)=>{"use strict";var Vk=Pr(),zk=De(),Jk="[object WeakMap]";function Xk(e){return zk(e)&&Vk(e)==Jk}n(Xk,"isWeakMap");fy.exports=Xk});var hy=p((tY,gy)=>{"use strict";function Zk(e,t){for(var r=-1,a=e==null?0:e.length;++r<a;)if(t(e[r],r,e))return!0;return!1}n(Zk,"arraySome");gy.exports=Zk});var Ji=p((nY,yy)=>{"use strict";var eD=rs(),tD=hy(),rD=as(),nD=1,aD=2;function oD(e,t,r,a,o,s){var i=r&nD,u=e.length,c=t.length;if(u!=c&&!(i&&c>u))return!1;var d=s.get(e),m=s.get(t);if(d&&m)return d==t&&m==e;var y=-1,g=!0,T=r&aD?new eD:void 0;for(s.set(e,t),s.set(t,e);++y<u;){var B=e[y],D=t[y];if(a)var k=i?a(D,B,y,t,e,s):a(B,D,y,e,t,s);if(k!==void 0){if(k)continue;g=!1;break}if(T){if(!tD(t,function(C,W){if(!rD(T,W)&&(B===C||o(B,C,r,a,s)))return T.push(W)})){g=!1;break}}else if(!(B===D||o(B,D,r,a,s))){g=!1;break}}return s.delete(e),s.delete(t),g}n(oD,"equalArrays");yy.exports=oD});var Ay=p((oY,by)=>{"use strict";function sD(e){var t=-1,r=Array(e.size);return e.forEach(function(a,o){r[++t]=[o,a]}),r}n(sD,"mapToArray");by.exports=sD});var Ty=p((iY,vy)=>{"use strict";var Iy=jt(),wy=ds(),iD=lr(),uD=Ji(),cD=Ay(),pD=Ia(),lD=1,dD=2,fD="[object Boolean]",mD="[object Date]",gD="[object Error]",hD="[object Map]",yD="[object Number]",bD="[object RegExp]",AD="[object Set]",ID="[object String]",wD="[object Symbol]",SD="[object ArrayBuffer]",vD="[object DataView]",Sy=Iy?Iy.prototype:void 0,Xi=Sy?Sy.valueOf:void 0;function TD(e,t,r,a,o,s,i){switch(r){case vD:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case SD:return!(e.byteLength!=t.byteLength||!s(new wy(e),new wy(t)));case fD:case mD:case yD:return iD(+e,+t);case gD:return e.name==t.name&&e.message==t.message;case bD:case ID:return e==t+"";case hD:var u=cD;case AD:var c=a&lD;if(u||(u=pD),e.size!=t.size&&!c)return!1;var d=i.get(e);if(d)return d==t;a|=dD,i.set(e,t);var m=uD(u(e),u(t),a,o,s,i);return i.delete(e),m;case wD:if(Xi)return Xi.call(e)==Xi.call(t)}return!1}n(TD,"equalByTag");vy.exports=TD});var Ey=p((cY,Ry)=>{"use strict";var xy=$i(),xD=1,RD=Object.prototype,ED=RD.hasOwnProperty;function _D(e,t,r,a,o,s){var i=r&xD,u=xy(e),c=u.length,d=xy(t),m=d.length;if(c!=m&&!i)return!1;for(var y=c;y--;){var g=u[y];if(!(i?g in t:ED.call(t,g)))return!1}var T=s.get(e),B=s.get(t);if(T&&B)return T==t&&B==e;var D=!0;s.set(e,t),s.set(t,e);for(var k=i;++y<c;){g=u[y];var C=e[g],W=t[g];if(a)var Ae=i?a(W,C,g,t,e,s):a(C,W,g,e,t,s);if(!(Ae===void 0?C===W||o(C,W,r,a,s):Ae)){D=!1;break}k||(k=g=="constructor")}if(D&&!k){var ie=e.constructor,Ve=t.constructor;ie!=Ve&&"constructor"in e&&"constructor"in t&&!(typeof ie=="function"&&ie instanceof ie&&typeof Ve=="function"&&Ve instanceof Ve)&&(D=!1)}return s.delete(e),s.delete(t),D}n(_D,"equalObjects");Ry.exports=_D});var ky=p((lY,Uy)=>{"use strict";var Zi=In(),CD=Ji(),OD=Ty(),LD=Ey(),_y=Pr(),Cy=Te(),Oy=xn(),PD=Ea(),qD=1,Ly="[object Arguments]",Py="[object Array]",uo="[object Object]",UD=Object.prototype,qy=UD.hasOwnProperty;function kD(e,t,r,a,o,s){var i=Cy(e),u=Cy(t),c=i?Py:_y(e),d=u?Py:_y(t);c=c==Ly?uo:c,d=d==Ly?uo:d;var m=c==uo,y=d==uo,g=c==d;if(g&&Oy(e)){if(!Oy(t))return!1;i=!0,m=!1}if(g&&!m)return s||(s=new Zi),i||PD(e)?CD(e,t,r,a,o,s):OD(e,t,c,r,a,o,s);if(!(r&qD)){var T=m&&qy.call(e,"__wrapped__"),B=y&&qy.call(t,"__wrapped__");if(T||B){var D=T?e.value():e,k=B?t.value():t;return s||(s=new Zi),o(D,k,r,a,s)}}return g?(s||(s=new Zi),LD(e,t,r,a,o,s)):!1}n(kD,"baseIsEqualDeep");Uy.exports=kD});var eu=p((fY,By)=>{"use strict";var DD=ky(),Dy=De();function My(e,t,r,a,o){return e===t?!0:e==null||t==null||!Dy(e)&&!Dy(t)?e!==e&&t!==t:DD(e,t,r,a,My,o)}n(My,"baseIsEqual");By.exports=My});var Gy=p((gY,Ny)=>{"use strict";var MD=In(),BD=eu(),ND=1,GD=2;function FD(e,t,r,a){var o=r.length,s=o,i=!a;if(e==null)return!s;for(e=Object(e);o--;){var u=r[o];if(i&&u[2]?u[1]!==e[u[0]]:!(u[0]in e))return!1}for(;++o<s;){u=r[o];var c=u[0],d=e[c],m=u[1];if(i&&u[2]){if(d===void 0&&!(c in e))return!1}else{var y=new MD;if(a)var g=a(d,m,c,e,t,y);if(!(g===void 0?BD(m,d,ND|GD,a,y):g))return!1}}return!0}n(FD,"baseIsMatch");Ny.exports=FD});var tu=p((yY,Fy)=>{"use strict";var WD=Ke();function $D(e){return e===e&&!WD(e)}n($D,"isStrictComparable");Fy.exports=$D});var $y=p((AY,Wy)=>{"use strict";var jD=tu(),QD=Or();function KD(e){for(var t=QD(e),r=t.length;r--;){var a=t[r],o=e[a];t[r]=[a,o,jD(o)]}return t}n(KD,"getMatchData");Wy.exports=KD});var ru=p((wY,jy)=>{"use strict";function HD(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}n(HD,"matchesStrictComparable");jy.exports=HD});var Ky=p((vY,Qy)=>{"use strict";var YD=Gy(),VD=$y(),zD=ru();function JD(e){var t=VD(e);return t.length==1&&t[0][2]?zD(t[0][0],t[0][1]):function(r){return r===e||YD(r,e,t)}}n(JD,"baseMatches");Qy.exports=JD});var co=p((xY,Hy)=>{"use strict";var XD=Te(),ZD=Cr(),eM=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,tM=/^\w*$/;function rM(e,t){if(XD(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||ZD(e)?!0:tM.test(e)||!eM.test(e)||t!=null&&e in Object(t)}n(rM,"isKey");Hy.exports=rM});var zy=p((EY,Vy)=>{"use strict";var Yy=ba(),nM="Expected a function";function nu(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(nM);var r=n(function(){var a=arguments,o=t?t.apply(this,a):a[0],s=r.cache;if(s.has(o))return s.get(o);var i=e.apply(this,a);return r.cache=s.set(o,i)||s,i},"memoized");return r.cache=new(nu.Cache||Yy),r}n(nu,"memoize");nu.Cache=Yy;Vy.exports=nu});var Xy=p((CY,Jy)=>{"use strict";var aM=zy(),oM=500;function sM(e){var t=aM(e,function(a){return r.size===oM&&r.clear(),a}),r=t.cache;return t}n(sM,"memoizeCapped");Jy.exports=sM});var au=p((LY,Zy)=>{"use strict";var iM=Xy(),uM=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,cM=/\\(\\)?/g,pM=iM(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(uM,function(r,a,o,s){t.push(o?s.replace(cM,"$1"):a||r)}),t});Zy.exports=pM});var ou=p((PY,eb)=>{"use strict";function lM(e,t){for(var r=-1,a=e==null?0:e.length,o=Array(a);++r<a;)o[r]=t(e[r],r,e);return o}n(lM,"arrayMap");eb.exports=lM});var sb=p((UY,ob)=>{"use strict";var tb=jt(),dM=ou(),fM=Te(),mM=Cr(),gM=1/0,rb=tb?tb.prototype:void 0,nb=rb?rb.toString:void 0;function ab(e){if(typeof e=="string")return e;if(fM(e))return dM(e,ab)+"";if(mM(e))return nb?nb.call(e):"";var t=e+"";return t=="0"&&1/e==-gM?"-0":t}n(ab,"baseToString");ob.exports=ab});var su=p((DY,ib)=>{"use strict";var hM=sb();function yM(e){return e==null?"":hM(e)}n(yM,"toString");ib.exports=yM});var iu=p((BY,ub)=>{"use strict";var bM=Te(),AM=co(),IM=au(),wM=su();function SM(e,t){return bM(e)?e:AM(e,t)?[e]:IM(wM(e))}n(SM,"castPath");ub.exports=SM});var qr=p((GY,cb)=>{"use strict";var vM=Cr(),TM=1/0;function xM(e){if(typeof e=="string"||vM(e))return e;var t=e+"";return t=="0"&&1/e==-TM?"-0":t}n(xM,"toKey");cb.exports=xM});var uu=p((WY,pb)=>{"use strict";var RM=iu(),EM=qr();function _M(e,t){t=RM(t,e);for(var r=0,a=t.length;e!=null&&r<a;)e=e[EM(t[r++])];return r&&r==a?e:void 0}n(_M,"baseGet");pb.exports=_M});var fb=p((jY,lb)=>{"use strict";var CM=uu();function OM(e,t,r){var a=e==null?void 0:CM(e,t);return a===void 0?r:a}n(OM,"get");lb.exports=OM});var gb=p((KY,mb)=>{"use strict";function LM(e,t){return e!=null&&t in Object(e)}n(LM,"baseHasIn");mb.exports=LM});var yb=p((YY,hb)=>{"use strict";var PM=iu(),qM=fn(),UM=Te(),kM=_n(),DM=wa(),MM=qr();function BM(e,t,r){t=PM(t,e);for(var a=-1,o=t.length,s=!1;++a<o;){var i=MM(t[a]);if(!(s=e!=null&&r(e,i)))break;e=e[i]}return s||++a!=o?s:(o=e==null?0:e.length,!!o&&DM(o)&&kM(i,o)&&(UM(e)||qM(e)))}n(BM,"hasPath");hb.exports=BM});var Ab=p((zY,bb)=>{"use strict";var NM=gb(),GM=yb();function FM(e,t){return e!=null&&GM(e,t,NM)}n(FM,"hasIn");bb.exports=FM});var wb=p((XY,Ib)=>{"use strict";var WM=eu(),$M=fb(),jM=Ab(),QM=co(),KM=tu(),HM=ru(),YM=qr(),VM=1,zM=2;function JM(e,t){return QM(e)&&KM(t)?HM(YM(e),t):function(r){var a=$M(r,e);return a===void 0&&a===t?jM(r,e):WM(t,a,VM|zM)}}n(JM,"baseMatchesProperty");Ib.exports=JM});var vb=p((eV,Sb)=>{"use strict";function XM(e){return function(t){return t?.[e]}}n(XM,"baseProperty");Sb.exports=XM});var xb=p((rV,Tb)=>{"use strict";var ZM=uu();function eB(e){return function(t){return ZM(t,e)}}n(eB,"basePropertyDeep");Tb.exports=eB});var Eb=p((aV,Rb)=>{"use strict";var tB=vb(),rB=xb(),nB=co(),aB=qr();function oB(e){return nB(e)?tB(aB(e)):rB(e)}n(oB,"property");Rb.exports=oB});var cu=p((sV,_b)=>{"use strict";var sB=Ky(),iB=wb(),uB=mn(),cB=Te(),pB=Eb();function lB(e){return typeof e=="function"?e:e==null?uB:typeof e=="object"?cB(e)?iB(e[0],e[1]):sB(e):pB(e)}n(lB,"baseIteratee");_b.exports=lB});var Ob=p((uV,Cb)=>{"use strict";var dB=Vi(),fB=cu(),mB=1;function gB(e){return fB(typeof e=="function"?e:dB(e,mB))}n(gB,"iteratee");Cb.exports=gB});var Pb=p((pV,Lb)=>{"use strict";var hB=Vo();function yB(e){var t=e==null?0:e.length;return t?hB(e,1):[]}n(yB,"flatten");Lb.exports=yB});var Ub=p((dV,qb)=>{"use strict";var bB=Pb(),AB=zo(),IB=ha();function wB(e){return IB(AB(e,void 0,bB),e+"")}n(wB,"flatRest");qb.exports=wB});var Db=p((mV,kb)=>{"use strict";var SB=oo(),vB=Ub(),TB=256,xB=vB(function(e,t){return SB(e,TB,void 0,void 0,void 0,t)});kb.exports=xB});var Bb=p((gV,Mb)=>{"use strict";var RB=ou(),EB=yr(),_B=Te(),CB=Cr(),OB=au(),LB=qr(),PB=su();function qB(e){return _B(e)?RB(e,LB):CB(e)?[e]:EB(OB(PB(e)))}n(qB,"toPath");Mb.exports=qB});var Gb=p((yV,Nb)=>{"use strict";Nb.exports={ary:Zg(),assign:Ni(),clone:uy(),curry:py(),forEach:no(),isArray:Te(),isError:dy(),isFunction:gn(),isWeakMap:my(),iteratee:Ob(),keys:Bi(),rearg:Db(),toInteger:Ui(),toPath:Bb()}});var Wb=p((bV,Fb)=>{"use strict";var UB=_m(),kB=Gb();function DB(e,t,r){return UB(kB,e,t,r)}n(DB,"convert");Fb.exports=DB});var pu=p((IV,jb)=>{"use strict";var MB=Wb(),$b=MB("merge",ws());$b.placeholder=yi();jb.exports=$b});var Vb=p((lu,du)=>{"use strict";(function(e,t){typeof lu=="object"&&typeof du<"u"?du.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs=t()})(lu,function(){"use strict";var e=1e3,t=6e4,r=36e5,a="millisecond",o="second",s="minute",i="hour",u="day",c="week",d="month",m="quarter",y="year",g="date",T="Invalid Date",B=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,D=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,k={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(O){var S=["th","st","nd","rd"],b=O%100;return"["+O+(S[(b-20)%10]||S[b]||S[0])+"]"}},C=n(function(O,S,b){var E=String(O);return!E||E.length>=S?O:""+Array(S+1-E.length).join(b)+O},"m"),W={s:C,z:function(O){var S=-O.utcOffset(),b=Math.abs(S),E=Math.floor(b/60),w=b%60;return(S<=0?"+":"-")+C(E,2,"0")+":"+C(w,2,"0")},m:n(function O(S,b){if(S.date()<b.date())return-O(b,S);var E=12*(b.year()-S.year())+(b.month()-S.month()),w=S.clone().add(E,d),q=b-w<0,P=S.clone().add(E+(q?-1:1),d);return+(-(E+(b-w)/(q?w-P:P-w))||0)},"t"),a:function(O){return O<0?Math.ceil(O)||0:Math.floor(O)},p:function(O){return{M:d,y,w:c,d:u,D:g,h:i,m:s,s:o,ms:a,Q:m}[O]||String(O||"").toLowerCase().replace(/s$/,"")},u:function(O){return O===void 0}},Ae="en",ie={};ie[Ae]=k;var Ve="$isDayjsObject",ot=n(function(O){return O instanceof Nt||!(!O||!O[Ve])},"S"),st=n(function O(S,b,E){var w;if(!S)return Ae;if(typeof S=="string"){var q=S.toLowerCase();ie[q]&&(w=q),b&&(ie[q]=b,w=q);var P=S.split("-");if(!w&&P.length>1)return O(P[0])}else{var $=S.name;ie[$]=S,w=$}return!E&&w&&(Ae=w),w||!E&&Ae},"t"),V=n(function(O,S){if(ot(O))return O.clone();var b=typeof S=="object"?S:{};return b.date=O,b.args=arguments,new Nt(b)},"O"),F=W;F.l=st,F.i=ot,F.w=function(O,S){return V(O,{locale:S.$L,utc:S.$u,x:S.$x,$offset:S.$offset})};var Nt=function(){function O(b){this.$L=st(b.locale,null,!0),this.parse(b),this.$x=this.$x||b.x||{},this[Ve]=!0}n(O,"M");var S=O.prototype;return S.parse=function(b){this.$d=function(E){var w=E.date,q=E.utc;if(w===null)return new Date(NaN);if(F.u(w))return new Date;if(w instanceof Date)return new Date(w);if(typeof w=="string"&&!/Z$/i.test(w)){var P=w.match(B);if(P){var $=P[2]-1||0,Z=(P[7]||"0").substring(0,3);return q?new Date(Date.UTC(P[1],$,P[3]||1,P[4]||0,P[5]||0,P[6]||0,Z)):new Date(P[1],$,P[3]||1,P[4]||0,P[5]||0,P[6]||0,Z)}}return new Date(w)}(b),this.init()},S.init=function(){var b=this.$d;this.$y=b.getFullYear(),this.$M=b.getMonth(),this.$D=b.getDate(),this.$W=b.getDay(),this.$H=b.getHours(),this.$m=b.getMinutes(),this.$s=b.getSeconds(),this.$ms=b.getMilliseconds()},S.$utils=function(){return F},S.isValid=function(){return this.$d.toString()!==T},S.isSame=function(b,E){var w=V(b);return this.startOf(E)<=w&&w<=this.endOf(E)},S.isAfter=function(b,E){return V(b)<this.startOf(E)},S.isBefore=function(b,E){return this.endOf(E)<V(b)},S.$g=function(b,E,w){return F.u(b)?this[E]:this.set(w,b)},S.unix=function(){return Math.floor(this.valueOf()/1e3)},S.valueOf=function(){return this.$d.getTime()},S.startOf=function(b,E){var w=this,q=!!F.u(E)||E,P=F.p(b),$=n(function(I,R){var U=F.w(w.$u?Date.UTC(w.$y,R,I):new Date(w.$y,R,I),w);return q?U:U.endOf(u)},"l"),Z=n(function(I,R){return F.w(w.toDate()[I].apply(w.toDate("s"),(q?[0,0,0,0]:[23,59,59,999]).slice(R)),w)},"$"),ae=this.$W,pe=this.$M,K=this.$D,Fe="set"+(this.$u?"UTC":"");switch(P){case y:return q?$(1,0):$(31,11);case d:return q?$(1,pe):$(0,pe+1);case c:var x=this.$locale().weekStart||0,A=(ae<x?ae+7:ae)-x;return $(q?K-A:K+(6-A),pe);case u:case g:return Z(Fe+"Hours",0);case i:return Z(Fe+"Minutes",1);case s:return Z(Fe+"Seconds",2);case o:return Z(Fe+"Milliseconds",3);default:return this.clone()}},S.endOf=function(b){return this.startOf(b,!1)},S.$set=function(b,E){var w,q=F.p(b),P="set"+(this.$u?"UTC":""),$=(w={},w[u]=P+"Date",w[g]=P+"Date",w[d]=P+"Month",w[y]=P+"FullYear",w[i]=P+"Hours",w[s]=P+"Minutes",w[o]=P+"Seconds",w[a]=P+"Milliseconds",w)[q],Z=q===u?this.$D+(E-this.$W):E;if(q===d||q===y){var ae=this.clone().set(g,1);ae.$d[$](Z),ae.init(),this.$d=ae.set(g,Math.min(this.$D,ae.daysInMonth())).$d}else $&&this.$d[$](Z);return this.init(),this},S.set=function(b,E){return this.clone().$set(b,E)},S.get=function(b){return this[F.p(b)]()},S.add=function(b,E){var w,q=this;b=Number(b);var P=F.p(E),$=n(function(pe){var K=V(q);return F.w(K.date(K.date()+Math.round(pe*b)),q)},"y");if(P===d)return this.set(d,this.$M+b);if(P===y)return this.set(y,this.$y+b);if(P===u)return $(1);if(P===c)return $(7);var Z=(w={},w[s]=t,w[i]=r,w[o]=e,w)[P]||1,ae=this.$d.getTime()+b*Z;return F.w(ae,this)},S.subtract=function(b,E){return this.add(-1*b,E)},S.format=function(b){var E=this,w=this.$locale();if(!this.isValid())return w.invalidDate||T;var q=b||"YYYY-MM-DDTHH:mm:ssZ",P=F.z(this),$=this.$H,Z=this.$m,ae=this.$M,pe=w.weekdays,K=w.months,Fe=w.meridiem,x=n(function(R,U,oe,xe){return R&&(R[U]||R(E,q))||oe[U].slice(0,xe)},"h"),A=n(function(R){return F.s($%12||12,R,"0")},"d"),I=Fe||function(R,U,oe){var xe=R<12?"AM":"PM";return oe?xe.toLowerCase():xe};return q.replace(D,function(R,U){return U||function(oe){switch(oe){case"YY":return String(E.$y).slice(-2);case"YYYY":return F.s(E.$y,4,"0");case"M":return ae+1;case"MM":return F.s(ae+1,2,"0");case"MMM":return x(w.monthsShort,ae,K,3);case"MMMM":return x(K,ae);case"D":return E.$D;case"DD":return F.s(E.$D,2,"0");case"d":return String(E.$W);case"dd":return x(w.weekdaysMin,E.$W,pe,2);case"ddd":return x(w.weekdaysShort,E.$W,pe,3);case"dddd":return pe[E.$W];case"H":return String($);case"HH":return F.s($,2,"0");case"h":return A(1);case"hh":return A(2);case"a":return I($,Z,!0);case"A":return I($,Z,!1);case"m":return String(Z);case"mm":return F.s(Z,2,"0");case"s":return String(E.$s);case"ss":return F.s(E.$s,2,"0");case"SSS":return F.s(E.$ms,3,"0");case"Z":return P}return null}(R)||P.replace(":","")})},S.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},S.diff=function(b,E,w){var q,P=this,$=F.p(E),Z=V(b),ae=(Z.utcOffset()-this.utcOffset())*t,pe=this-Z,K=n(function(){return F.m(P,Z)},"D");switch($){case y:q=K()/12;break;case d:q=K();break;case m:q=K()/3;break;case c:q=(pe-ae)/6048e5;break;case u:q=(pe-ae)/864e5;break;case i:q=pe/r;break;case s:q=pe/t;break;case o:q=pe/e;break;default:q=pe}return w?q:F.a(q)},S.daysInMonth=function(){return this.endOf(d).$D},S.$locale=function(){return ie[this.$L]},S.locale=function(b,E){if(!b)return this.$L;var w=this.clone(),q=st(b,E,!0);return q&&(w.$L=q),w},S.clone=function(){return F.w(this.$d,this)},S.toDate=function(){return new Date(this.valueOf())},S.toJSON=function(){return this.isValid()?this.toISOString():null},S.toISOString=function(){return this.$d.toISOString()},S.toString=function(){return this.$d.toUTCString()},O}(),Jn=Nt.prototype;return V.prototype=Jn,[["$ms",a],["$s",o],["$m",s],["$H",i],["$W",u],["$M",d],["$y",y],["$D",g]].forEach(function(O){Jn[O[1]]=function(S){return this.$g(S,O[0],O[1])}}),V.extend=function(O,S){return O.$i||(O(S,Nt,V),O.$i=!0),V},V.locale=st,V.isDayjs=ot,V.unix=function(O){return V(1e3*O)},V.en=ie[Ae],V.Ls=ie,V.p={},V})});var KA=p((M4,QA)=>{"use strict";function oN(e,t,r,a){for(var o=-1,s=e==null?0:e.length;++o<s;){var i=e[o];t(a,i,r(i),e)}return a}n(oN,"arrayAggregator");QA.exports=oN});var YA=p((N4,HA)=>{"use strict";var sN=ps(),iN=Or();function uN(e,t){return e&&sN(e,t,iN)}n(uN,"baseForOwn");HA.exports=uN});var zA=p((F4,VA)=>{"use strict";var cN=mr();function pN(e,t){return function(r,a){if(r==null)return r;if(!cN(r))return e(r,a);for(var o=r.length,s=t?o:-1,i=Object(r);(t?s--:++s<o)&&a(i[s],s,i)!==!1;);return r}}n(pN,"createBaseEach");VA.exports=pN});var XA=p(($4,JA)=>{"use strict";var lN=YA(),dN=zA(),fN=dN(lN);JA.exports=fN});var eI=p((j4,ZA)=>{"use strict";var mN=XA();function gN(e,t,r,a){return mN(e,function(o,s,i){t(a,o,r(o),i)}),a}n(gN,"baseAggregator");ZA.exports=gN});var rI=p((K4,tI)=>{"use strict";var hN=KA(),yN=eI(),bN=cu(),AN=Te();function IN(e,t){return function(r,a){var o=AN(r)?hN:yN,s=t?t():{};return o(r,e,bN(a,2),s)}}n(IN,"createAggregator");tI.exports=IN});var aI=p((Y4,nI)=>{"use strict";var wN=wn(),SN=rI(),vN=Object.prototype,TN=vN.hasOwnProperty,xN=SN(function(e,t,r){TN.call(e,r)?e[r].push(t):wN(e,r,[t])});nI.exports=xN});var zN={};_(zN,{Method:()=>Eo,ai:()=>Ju,api:()=>xu,auditLogs:()=>kt,automations:()=>Ka,backups:()=>Ne,branding:()=>qa,constants:()=>on,environmentVariables:()=>ft,features:()=>et,groups:()=>re,init:()=>Sm,licensing:()=>ut,logger:()=>Xt,mappers:()=>ce,middleware:()=>Au,plugins:()=>Ha,publicApi:()=>za,quotas:()=>dt,scimGroups:()=>Ur,scimUsers:()=>Ue,sdk:()=>fu,users:()=>Wa,utils:()=>cr});module.exports=FI(zN);var Eo=(s=>(s.POST="POST",s.GET="GET",s.PATCH="PATCH",s.DELETE="DELETE",s.PUT="PUT",s))(Eo||{});var fu={};_(fu,{ai:()=>Ns,auditLogs:()=>kt,automations:()=>Ka,backups:()=>Ne,branding:()=>qa,environmentVariables:()=>ft,features:()=>et,groups:()=>re,init:()=>Sm,licensing:()=>ut,logger:()=>Xt,plugins:()=>Ha,publicApi:()=>za,quotas:()=>dt,scimGroups:()=>Ur,scimUsers:()=>Ue,users:()=>Wa,utils:()=>cr});var qa={};_(qa,{getBrandingConfig:()=>U_});var et={};_(et,{checkBackups:()=>_e,checkFeature:()=>La,checkFeatures:()=>Ps,checkSCIM:()=>Ms,isAppBuildersEnabled:()=>ks,isAuditLogsEnabled:()=>Pa,isBackupsEnabled:()=>qs,isBrandingEnabled:()=>Us,isEnforceableSSO:()=>Df,isExpandedPublicApiEnabled:()=>At,isPWAEnabled:()=>R_,isPkceOidcEnabled:()=>__,isRecaptchaEnabled:()=>E_,isSSOEnforced:()=>O_,isSyncAutomationsEnabled:()=>T_,isTranslationsEnabled:()=>C_,isTriggerAutomationRunEnabled:()=>x_,isUserGroupsEnabled:()=>Ds,isViewPermissionEnabled:()=>L_,isViewReadonlyColumnsEnabled:()=>P_});var bt=require("@budibase/backend-core"),ge=require("@budibase/types");var ut={};_(ut,{cache:()=>Xe,client:()=>Ot,features:()=>da,getFreeLicense:()=>Cs,getLicense:()=>Es,getLicenseFromKey:()=>_s,keys:()=>Ls,offline:()=>_a,quotas:()=>fa});var Xe={};_(Xe,{getCachedLicense:()=>Uf,invalidate:()=>kf,refresh:()=>Qt});var Xn=require("@budibase/backend-core");var Mr,WI=n(async()=>{Mr=await Xn.RedisClient.init(Xn.redis.utils.Databases.LICENSES)},"init"),$I=n(async()=>{Mr&&await Mr.finish()},"shutdown");process.on("exit",async()=>{await $I()});var _o=n(async()=>(Mr||await WI(),Mr),"getClient");var Ot={};_(Ot,{activateLicenseKey:()=>jo,getLicense:()=>ir,getLicenseFromKey:()=>$o,triggerQuota:()=>Cw});var ec=G(require("node-fetch"));var tc=require("@budibase/backend-core"),Co=require("dd-trace"),rc=require("dd-trace/ext/formats");var Oo=class{constructor(t){this.apiCall=t=>async(r="",a={})=>await Co.tracer.trace(`api.${t}`,async o=>{o.setTag("url",r);let s={...a.headers};s["Content-Type"]||(s["Content-Type"]="application/json",s.Accept="application/json");let i=s["Content-Type"]==="application/json";tc.logging.correlation.setHeader(s),Co.tracer.inject(o,rc.HTTP_HEADERS,s);let u={method:t,body:i?JSON.stringify(a.body):a.body,headers:s,credentials:"include"};return(0,ec.default)(`${this.host}${r}`,u)});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}static{n(this,"API")}},Lo=Oo;var nc=require("@budibase/backend-core");var{getDispatcher:QI}=nc.utils;async function Zn(e,t,r){let a=typeof e=="string"?e:e instanceof URL?e.href:e.url,o=QI({rejectUnauthorized:r?.rejectUnauthorized,url:a});return fetch(e,{...t,dispatcher:o})}n(Zn,"proxyFetch");var sr=require("@budibase/types"),N=require("@budibase/backend-core");var ze={};_(ze,{bustCache:()=>Uo,getCurrentUsageValues:()=>lc,getQuotaUsage:()=>Gt,setAllUsage:()=>Do,setAppUsageValue:()=>ko,setUsage:()=>uc,setUsagePerApp:()=>cc,utils:()=>Fr});var Le=require("@budibase/backend-core"),Re=require("@budibase/types");var Fr={};_(Fr,{generateBaseQuotaUsage:()=>ta,generateNewMonthlyQuotas:()=>Gr,generateNewQuotaUsage:()=>qo,getBreakdownName:()=>na,getCurrentMonthString:()=>Et,getQuotaDocId:()=>Nr,setCurrentMonth:()=>ra,setQuotaReset:()=>Po});var Br=require("@budibase/backend-core"),ea=require("@budibase/shared-core"),le=require("@budibase/types");var Nr=n(()=>Br.context.isSelfHostUsingCloud()?`quota_usage_${Br.context.getTenantId()}`:Br.db.StaticDatabases.GLOBAL.docs.usageQuota,"getQuotaDocId"),ac=n(()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},"getNextQuotaReset"),Po=n(e=>{e.quotaReset=ac()},"setQuotaReset"),Et=n(()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},"getCurrentMonthString"),ta=n(()=>({usageQuota:{[le.StaticQuotaName.WORKSPACES]:0,[le.StaticQuotaName.ROWS]:0,[le.StaticQuotaName.PLUGINS]:0,[le.StaticQuotaName.USERS]:0,[le.StaticQuotaName.CREATORS]:0,[le.StaticQuotaName.USER_GROUPS]:0,[le.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[Et()]:Gr()}}),"generateBaseQuotaUsage"),qo=n(()=>{let e={_id:Nr(),quotaReset:ac(),...ta(),apps:{}};return ra(e),e},"generateNewQuotaUsage"),Gr=n(()=>({[le.MonthlyQuotaName.QUERIES]:0,[le.MonthlyQuotaName.AUTOMATIONS]:0,[le.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,[le.MonthlyQuotaName.ACTIONS]:0,triggers:{}}),"generateNewMonthlyQuotas"),ra=n(e=>{let t=Et();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=Gr()),e.monthly.current=e.monthly[t]},"setCurrentMonth"),na=n((e,t)=>{if(!(!t||!e))switch(e){case le.MonthlyQuotaName.AUTOMATIONS:return le.BreakdownQuotaName.AUTOMATIONS;case le.MonthlyQuotaName.QUERIES:return(0,ea.isTableIdOrExternalTableId)(t)?le.BreakdownQuotaName.ROW_QUERIES:(0,ea.isDatasourceOrDatasourcePlusId)(t)?le.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}},"getBreakdownName");var oc=Le.Duration.fromSeconds(60).toMs(),{Writethrough:sc}=Le.cache.writethrough;function KI(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}n(KI,"clearDeprecated");var aa=n(()=>Le.tenancy.isSelfHostUsingCloud()?new sc(Le.tenancy.getSelfHostCloudDB(),oc):new sc(Le.tenancy.getGlobalDB(),oc),"getDB");async function Uo(e=0){let r=aa(),a=Nr(),o=await r.tryGet(a);o&&o._rev&&await r.remove(a,o._rev).catch(async s=>{if(e<1)return await Uo(e+1);throw s})}n(Uo,"bustCache");var Gt=n(async()=>{let e=aa(),t=await e.tryGet(Nr());if(!t){t=qo();let{rev:r}=await e.put(t);t._rev=r}return ra(t),Po(t),KI(t)},"getQuotaUsage"),uc=n(async(e,t,r)=>Do({name:t,type:r,values:{total:e}}),"setUsage"),cc=n(async(e,t,r)=>{let a=aa(),o=await Gt(),s=Object.values(e).reduce((u,c)=>u+c,0);for(let[u,c]of Object.entries(e))o=pc(o,t,r,{total:s,app:c},{appId:u});let i=await a.put(o);return o._rev=i.rev,o},"setUsagePerApp"),HI=n((e,t,r,a)=>{let o=na(t,r);if(!o||!a?.breakdown)return e;e.breakdown||(e.breakdown={}),e.breakdown[o]||(e.breakdown[o]={parent:t,values:{}});let s=e.breakdown[o];return s.values[r]=a.breakdown,e},"setBreakdown"),ko=n((e,t,r,a={},o)=>{let s;try{s=Le.db.getProdWorkspaceID(a?.appId||Le.context.getWorkspaceId())}catch{}if(!s||!o.app||!Re.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[s]||(e.apps={...e.apps,[s]:ta()});let i=e.apps[s];switch(r){case Re.QuotaUsageType.STATIC:i.usageQuota[t]=o.app;break;case Re.QuotaUsageType.MONTHLY:{let u=Et(),c=t,d=i.monthly[u];d||(i.monthly[u]=Gr(),d=i.monthly[u]),d[c]=o.app,Re.BREAKDOWN_QUOTA_NAMES.includes(c)&&a?.id&&(d=HI(d,c,a.id,o));break}}return e},"setAppUsageValue"),ic=n((e,t,r,a)=>{if(!Re.APP_QUOTA_NAMES.includes(r))return{};let o;try{o=Le.db.getProdWorkspaceID(Le.context.getWorkspaceId())}catch{}if(!o||!e.apps||!e.apps[o])return{app:0};let s=e.apps[o];switch(t){case Re.QuotaUsageType.STATIC:if(s.usageQuota?.[r])return{app:s.usageQuota[r]};break;case Re.QuotaUsageType.MONTHLY:{let i=Et(),u=r;if(!s.monthly?.[i]?.[u])break;let c=s.monthly[i],d=c[u],m,y=na(u,a);return y&&a&&c.breakdown?.[y]&&(m=c.breakdown[y]?.values[a]),{app:d,breakdown:m||0}}}return{app:0}},"getAppUsageValue"),YI=n((e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},"setStaticTriggers"),VI=n((e,t,r,a)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),a&&(r.monthly[t].triggers[e]=a)},"setMonthlyTriggers"),pc=n((e,t,r,a,o={})=>{if(r===Re.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=a.total,YI(t,e,a.triggers);else if(r===Re.QuotaUsageType.MONTHLY){t=t;let s=Et();e.monthly[s][t]=a.total,VI(t,s,e,a.triggers)}else throw new Error(`Invalid usage type: ${r}`);return ko(e,t,r,o,a)},"coreUsageUpdate"),Do=n(async e=>{let t=Array.isArray(e)?e:[e],r=aa(),a=await Gt();for(let s of t)a=pc(a,s.name,s.type,s.values,s.opts);let o=await r.put(a,0);return a._rev=o.rev,a},"setAllUsage"),lc=n(async(e,t,r)=>{let a=await Gt(),o=0,s={};switch(e){case Re.QuotaUsageType.STATIC:if(a.usageQuota[t]){let i=t;o=a.usageQuota[i],s=ic(a,e,t,r)}break;case Re.QuotaUsageType.MONTHLY:{let i=Et(),u=t;a.monthly[i][u]&&(o=a.monthly[i][u],s=ic(a,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return Re.APP_QUOTA_NAMES.includes(t)&&!(s.app||s.breakdown)&&(s.app=s.app||0,s.breakdown=s.breakdown||0),{total:o,app:s.app,breakdown:s.breakdown}},"getCurrentUsageValues");var $e={};_($e,{destroy:()=>XI,get:()=>Mo,save:()=>JI});var _t=require("@budibase/backend-core");var zI=n(()=>({_id:_t.StaticDatabases.GLOBAL.docs.licenseInfo}),"newLicenseInfo"),JI=n(async e=>{let t=await Mo();t={...t,...e};let a=await _t.tenancy.getGlobalDB().put(t);return t._rev=a.rev,t},"save"),Mo=n(async()=>{let e=_t.tenancy.getGlobalDB();try{return await e.get(_t.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return zI();throw t}},"get"),XI=n(async()=>{let e=_t.tenancy.getGlobalDB(),t=await Mo();t&&t._rev&&await e.remove(_t.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)},"destroy");var z={};_(z,{bulkSave:()=>pw,destroy:()=>lw,fetch:()=>sw,generateUserGroupID:()=>aw,get:()=>iw,getBulk:()=>uw,getByName:()=>Bo,getGroupUsers:()=>sa,getGroupUsersParams:()=>hc,getUserGroupsParams:()=>gc,save:()=>cw});var j=require("@budibase/backend-core");var Je=require("@budibase/types"),nr=require("@budibase/backend-core");async function dc(){let e=nr.sql.designDoc.base("type");e.sql.tables={[Je.AUDIT_LOG_TYPE]:{fields:{appId:Je.SQLiteType.TEXT,event:Je.SQLiteType.TEXT,userId:Je.SQLiteType.TEXT,timestamp:Je.SQLiteType.TEXT,metadata:Je.SQLiteType.TEXT,name:Je.SQLiteType.TEXT,type:Je.SQLiteType.TEXT,fallback:Je.SQLiteType.TEXT}}};let t=nr.context.getAuditLogsDB(),r;try{r=await t.get(nr.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(a){if(a.status===404)r=e;else throw a}await t.put(r)}n(dc,"createAuditLogDesignDocSQL");var oa=require("@budibase/backend-core");var{ViewName:ZI,SEPARATOR:ew,DocumentType:tw,createView:rw}=oa.db,nw=tw.USER+ew;async function fc(){let e=oa.tenancy.getGlobalDB(),t=`function(doc) {
|
|
3
|
+
`)}n(JO,"insertWrapDetails");sg.exports=JO});var no=p((h2,ug)=>{"use strict";function XO(e,t){for(var r=-1,a=e==null?0:e.length;++r<a&&t(e[r],r,e)!==!1;);return e}n(XO,"arrayEach");ug.exports=XO});var pg=p((b2,cg)=>{"use strict";var ZO=no(),eL=ns(),tL=1,rL=2,nL=8,aL=16,oL=32,sL=64,iL=128,uL=256,cL=512,pL=[["ary",iL],["bind",tL],["bindKey",rL],["curry",nL],["curryRight",aL],["flip",cL],["partial",oL],["partialRight",sL],["rearg",uL]];function lL(e,t){return ZO(pL,function(r){var a="_."+r[0];t&r[1]&&!eL(e,a)&&e.push(a)}),e.sort()}n(lL,"updateWrapDetails");cg.exports=lL});var Ci=p((I2,lg)=>{"use strict";var dL=og(),fL=ig(),mL=ha(),gL=pg();function hL(e,t,r){var a=t+"";return mL(e,fL(a,gL(dL(a),r)))}n(hL,"setWrapToString");lg.exports=hL});var Oi=p((S2,mg)=>{"use strict";var yL=rg(),bL=_i(),AL=Ci(),IL=1,wL=2,SL=4,vL=8,dg=32,fg=64;function TL(e,t,r,a,o,s,i,u,c,d){var m=t&vL,y=m?i:void 0,g=m?void 0:i,T=m?s:void 0,B=m?void 0:s;t|=m?dg:fg,t&=~(m?fg:dg),t&SL||(t&=~(IL|wL));var D=[e,t,o,T,y,B,g,u,c,d],k=r.apply(void 0,D);return yL(e)&&bL(k,D),k.placeholder=a,AL(k,e,t)}n(TL,"createRecurry");mg.exports=TL});var Li=p((T2,gg)=>{"use strict";function xL(e){var t=e;return t.placeholder}n(xL,"getHolder");gg.exports=xL});var yg=p((R2,hg)=>{"use strict";var RL=yr(),EL=_n(),_L=Math.min;function CL(e,t){for(var r=e.length,a=_L(t.length,r),o=RL(e);a--;){var s=t[a];e[a]=EL(s,r)?o[s]:void 0}return e}n(CL,"reorder");hg.exports=CL});var ao=p((_2,Ag)=>{"use strict";var bg="__lodash_placeholder__";function OL(e,t){for(var r=-1,a=e.length,o=0,s=[];++r<a;){var i=e[r];(i===t||i===bg)&&(e[r]=bg,s[o++]=r)}return s}n(OL,"replaceHolders");Ag.exports=OL});var Pi=p((O2,Sg)=>{"use strict";var LL=Ti(),PL=xi(),qL=Nm(),Ig=Bn(),UL=Oi(),kL=Li(),DL=yg(),ML=ao(),BL=Ee(),NL=1,GL=2,FL=8,WL=16,$L=128,jL=512;function wg(e,t,r,a,o,s,i,u,c,d){var m=t&$L,y=t&NL,g=t&GL,T=t&(FL|WL),B=t&jL,D=g?void 0:Ig(e);function k(){for(var C=arguments.length,W=Array(C),Ae=C;Ae--;)W[Ae]=arguments[Ae];if(T)var ie=kL(k),Ve=qL(W,ie);if(a&&(W=LL(W,a,o,T)),s&&(W=PL(W,s,i,T)),C-=Ve,T&&C<d){var ot=ML(W,ie);return UL(e,t,wg,k.placeholder,r,W,ot,u,c,d-C)}var st=y?r:this,V=g?st[e]:e;return C=W.length,u?W=DL(W,u):B&&C>1&&W.reverse(),m&&c<C&&(W.length=c),this&&this!==BL&&this instanceof k&&(V=D||Ig(V)),V.apply(st,W)}return n(k,"wrapper"),k}n(wg,"createHybrid");Sg.exports=wg});var Tg=p((P2,vg)=>{"use strict";var QL=ga(),KL=Bn(),HL=Pi(),YL=Oi(),VL=Li(),zL=ao(),JL=Ee();function XL(e,t,r){var a=KL(e);function o(){for(var s=arguments.length,i=Array(s),u=s,c=VL(o);u--;)i[u]=arguments[u];var d=s<3&&i[0]!==c&&i[s-1]!==c?[]:zL(i,c);if(s-=d.length,s<r)return YL(e,t,HL,o.placeholder,void 0,i,d,void 0,void 0,r-s);var m=this&&this!==JL&&this instanceof o?a:e;return QL(m,this,i)}return n(o,"wrapper"),o}n(XL,"createCurry");vg.exports=XL});var Rg=p((U2,xg)=>{"use strict";var ZL=ga(),eP=Bn(),tP=Ee(),rP=1;function nP(e,t,r,a){var o=t&rP,s=eP(e);function i(){for(var u=-1,c=arguments.length,d=-1,m=a.length,y=Array(m+c),g=this&&this!==tP&&this instanceof i?s:e;++d<m;)y[d]=a[d];for(;c--;)y[d++]=arguments[++u];return ZL(g,o?r:this,y)}return n(i,"wrapper"),i}n(nP,"createPartial");xg.exports=nP});var Pg=p((D2,Lg)=>{"use strict";var aP=Ti(),oP=xi(),Eg=ao(),_g="__lodash_placeholder__",qi=1,sP=2,iP=4,Cg=8,Nn=128,Og=256,uP=Math.min;function cP(e,t){var r=e[1],a=t[1],o=r|a,s=o<(qi|sP|Nn),i=a==Nn&&r==Cg||a==Nn&&r==Og&&e[7].length<=t[8]||a==(Nn|Og)&&t[7].length<=t[8]&&r==Cg;if(!(s||i))return e;a&qi&&(e[2]=t[2],o|=r&qi?0:iP);var u=t[3];if(u){var c=e[3];e[3]=c?aP(c,u,t[4]):u,e[4]=c?Eg(e[3],_g):t[4]}return u=t[5],u&&(c=e[5],e[5]=c?oP(c,u,t[6]):u,e[6]=c?Eg(e[5],_g):t[6]),u=t[7],u&&(e[7]=u),a&Nn&&(e[8]=e[8]==null?t[8]:uP(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=o,e}n(cP,"mergeData");Lg.exports=cP});var Ug=p((B2,qg)=>{"use strict";var pP=/\s/;function lP(e){for(var t=e.length;t--&&pP.test(e.charAt(t)););return t}n(lP,"trimmedEndIndex");qg.exports=lP});var Dg=p((G2,kg)=>{"use strict";var dP=Ug(),fP=/^\s+/;function mP(e){return e&&e.slice(0,dP(e)+1).replace(fP,"")}n(mP,"baseTrim");kg.exports=mP});var Cr=p((W2,Mg)=>{"use strict";var gP=Lt(),hP=De(),yP="[object Symbol]";function bP(e){return typeof e=="symbol"||hP(e)&&gP(e)==yP}n(bP,"isSymbol");Mg.exports=bP});var Fg=p((j2,Gg)=>{"use strict";var AP=Dg(),Bg=Ke(),IP=Cr(),Ng=0/0,wP=/^[-+]0x[0-9a-f]+$/i,SP=/^0b[01]+$/i,vP=/^0o[0-7]+$/i,TP=parseInt;function xP(e){if(typeof e=="number")return e;if(IP(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=AP(e);var r=SP.test(e);return r||vP.test(e)?TP(e.slice(2),r?2:8):wP.test(e)?Ng:+e}n(xP,"toNumber");Gg.exports=xP});var jg=p((K2,$g)=>{"use strict";var RP=Fg(),Wg=1/0,EP=17976931348623157e292;function _P(e){if(!e)return e===0?e:0;if(e=RP(e),e===Wg||e===-Wg){var t=e<0?-1:1;return t*EP}return e===e?e:0}n(_P,"toFinite");$g.exports=_P});var Ui=p((Y2,Qg)=>{"use strict";var CP=jg();function OP(e){var t=CP(e),r=t%1;return t===t?r?t-r:t:0}n(OP,"toInteger");Qg.exports=OP});var oo=p((z2,zg)=>{"use strict";var LP=vi(),PP=km(),qP=Tg(),UP=Pi(),kP=Rg(),DP=Ri(),MP=Pg(),BP=_i(),NP=Ci(),Kg=Ui(),GP="Expected a function",Hg=1,FP=2,ki=8,Di=16,Mi=32,Yg=64,Vg=Math.max;function WP(e,t,r,a,o,s,i,u){var c=t&FP;if(!c&&typeof e!="function")throw new TypeError(GP);var d=a?a.length:0;if(d||(t&=~(Mi|Yg),a=o=void 0),i=i===void 0?i:Vg(Kg(i),0),u=u===void 0?u:Kg(u),d-=o?o.length:0,t&Yg){var m=a,y=o;a=o=void 0}var g=c?void 0:DP(e),T=[e,t,r,a,o,m,y,s,i,u];if(g&&MP(T,g),e=T[0],t=T[1],r=T[2],a=T[3],o=T[4],u=T[9]=T[9]===void 0?c?0:e.length:Vg(T[9]-d,0),!u&&t&(ki|Di)&&(t&=~(ki|Di)),!t||t==Hg)var B=PP(e,t,r);else t==ki||t==Di?B=qP(e,t,u):(t==Mi||t==(Hg|Mi))&&!o.length?B=kP(e,t,r,a):B=UP.apply(void 0,T);var D=g?LP:BP;return NP(D(B,T),e,t)}n(WP,"createWrap");zg.exports=WP});var Xg=p((X2,Jg)=>{"use strict";var $P=oo(),jP=128;function QP(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,$P(e,jP,void 0,void 0,void 0,void 0,t)}n(QP,"ary");Jg.exports=QP});var eh=p((eH,Zg)=>{"use strict";var KP=ms(),HP=KP(Object.keys,Object);Zg.exports=HP});var Bi=p((tH,th)=>{"use strict";var YP=Ta(),VP=eh(),zP=Object.prototype,JP=zP.hasOwnProperty;function XP(e){if(!YP(e))return VP(e);var t=[];for(var r in Object(e))JP.call(e,r)&&r!="constructor"&&t.push(r);return t}n(XP,"baseKeys");th.exports=XP});var Or=p((nH,rh)=>{"use strict";var ZP=Is(),eq=Bi(),tq=mr();function rq(e){return tq(e)?ZP(e):eq(e)}n(rq,"keys");rh.exports=rq});var Ni=p((oH,nh)=>{"use strict";var nq=Ir(),aq=Or();function oq(e,t){return e&&nq(t,aq(t),e)}n(oq,"baseAssign");nh.exports=oq});var oh=p((iH,ah)=>{"use strict";var sq=Ir(),iq=wr();function uq(e,t){return e&&sq(t,iq(t),e)}n(uq,"baseAssignIn");ah.exports=uq});var ih=p((cH,sh)=>{"use strict";function cq(e,t){for(var r=-1,a=e==null?0:e.length,o=0,s=[];++r<a;){var i=e[r];t(i,r,e)&&(s[o++]=i)}return s}n(cq,"arrayFilter");sh.exports=cq});var Gi=p((lH,uh)=>{"use strict";function pq(){return[]}n(pq,"stubArray");uh.exports=pq});var so=p((fH,ph)=>{"use strict";var lq=ih(),dq=Gi(),fq=Object.prototype,mq=fq.propertyIsEnumerable,ch=Object.getOwnPropertySymbols,gq=ch?function(e){return e==null?[]:(e=Object(e),lq(ch(e),function(t){return mq.call(e,t)}))}:dq;ph.exports=gq});var dh=p((mH,lh)=>{"use strict";var hq=Ir(),yq=so();function bq(e,t){return hq(e,yq(e),t)}n(bq,"copySymbols");lh.exports=bq});var Fi=p((hH,fh)=>{"use strict";var Aq=ma(),Iq=va(),wq=so(),Sq=Gi(),vq=Object.getOwnPropertySymbols,Tq=vq?function(e){for(var t=[];e;)Aq(t,wq(e)),e=Iq(e);return t}:Sq;fh.exports=Tq});var gh=p((yH,mh)=>{"use strict";var xq=Ir(),Rq=Fi();function Eq(e,t){return xq(e,Rq(e),t)}n(Eq,"copySymbolsIn");mh.exports=Eq});var Wi=p((AH,hh)=>{"use strict";var _q=ma(),Cq=Te();function Oq(e,t,r){var a=t(e);return Cq(e)?a:_q(a,r(e))}n(Oq,"baseGetAllKeys");hh.exports=Oq});var $i=p((wH,yh)=>{"use strict";var Lq=Wi(),Pq=so(),qq=Or();function Uq(e){return Lq(e,qq,Pq)}n(Uq,"getAllKeys");yh.exports=Uq});var Ah=p((vH,bh)=>{"use strict";var kq=Wi(),Dq=Fi(),Mq=wr();function Bq(e){return kq(e,Mq,Dq)}n(Bq,"getAllKeysIn");bh.exports=Bq});var wh=p((xH,Ih)=>{"use strict";var Nq=Pt(),Gq=Ee(),Fq=Nq(Gq,"DataView");Ih.exports=Fq});var vh=p((RH,Sh)=>{"use strict";var Wq=Pt(),$q=Ee(),jq=Wq($q,"Promise");Sh.exports=jq});var Pr=p((EH,Oh)=>{"use strict";var ji=wh(),Qi=ya(),Ki=vh(),Hi=os(),Yi=wi(),Ch=Lt(),Lr=Xo(),Th="[object Map]",Qq="[object Object]",xh="[object Promise]",Rh="[object Set]",Eh="[object WeakMap]",_h="[object DataView]",Kq=Lr(ji),Hq=Lr(Qi),Yq=Lr(Ki),Vq=Lr(Hi),zq=Lr(Yi),Jt=Ch;(ji&&Jt(new ji(new ArrayBuffer(1)))!=_h||Qi&&Jt(new Qi)!=Th||Ki&&Jt(Ki.resolve())!=xh||Hi&&Jt(new Hi)!=Rh||Yi&&Jt(new Yi)!=Eh)&&(Jt=n(function(e){var t=Ch(e),r=t==Qq?e.constructor:void 0,a=r?Lr(r):"";if(a)switch(a){case Kq:return _h;case Hq:return Th;case Yq:return xh;case Vq:return Rh;case zq:return Eh}return t},"getTag"));Oh.exports=Jt});var Ph=p((CH,Lh)=>{"use strict";var Jq=Object.prototype,Xq=Jq.hasOwnProperty;function Zq(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&Xq.call(e,"index")&&(r.index=e.index,r.input=e.input),r}n(Zq,"initCloneArray");Lh.exports=Zq});var Uh=p((LH,qh)=>{"use strict";var eU=Sa();function tU(e,t){var r=t?eU(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}n(tU,"cloneDataView");qh.exports=tU});var Dh=p((qH,kh)=>{"use strict";var rU=/\w*$/;function nU(e){var t=new e.constructor(e.source,rU.exec(e));return t.lastIndex=e.lastIndex,t}n(nU,"cloneRegExp");kh.exports=nU});var Fh=p((kH,Gh)=>{"use strict";var Mh=jt(),Bh=Mh?Mh.prototype:void 0,Nh=Bh?Bh.valueOf:void 0;function aU(e){return Nh?Object(Nh.call(e)):{}}n(aU,"cloneSymbol");Gh.exports=aU});var $h=p((MH,Wh)=>{"use strict";var oU=Sa(),sU=Uh(),iU=Dh(),uU=Fh(),cU=fs(),pU="[object Boolean]",lU="[object Date]",dU="[object Map]",fU="[object Number]",mU="[object RegExp]",gU="[object Set]",hU="[object String]",yU="[object Symbol]",bU="[object ArrayBuffer]",AU="[object DataView]",IU="[object Float32Array]",wU="[object Float64Array]",SU="[object Int8Array]",vU="[object Int16Array]",TU="[object Int32Array]",xU="[object Uint8Array]",RU="[object Uint8ClampedArray]",EU="[object Uint16Array]",_U="[object Uint32Array]";function CU(e,t,r){var a=e.constructor;switch(t){case bU:return oU(e);case pU:case lU:return new a(+e);case AU:return sU(e,r);case IU:case wU:case SU:case vU:case TU:case xU:case RU:case EU:case _U:return cU(e,r);case dU:return new a;case fU:case hU:return new a(e);case mU:return iU(e);case gU:return new a;case yU:return uU(e)}}n(CU,"initCloneByTag");Wh.exports=CU});var Qh=p((NH,jh)=>{"use strict";var OU=Pr(),LU=De(),PU="[object Map]";function qU(e){return LU(e)&&OU(e)==PU}n(qU,"baseIsMap");jh.exports=qU});var Vh=p((FH,Yh)=>{"use strict";var UU=Qh(),kU=xa(),Kh=Ra(),Hh=Kh&&Kh.isMap,DU=Hh?kU(Hh):UU;Yh.exports=DU});var Jh=p((WH,zh)=>{"use strict";var MU=Pr(),BU=De(),NU="[object Set]";function GU(e){return BU(e)&&MU(e)==NU}n(GU,"baseIsSet");zh.exports=GU});var ty=p((jH,ey)=>{"use strict";var FU=Jh(),WU=xa(),Xh=Ra(),Zh=Xh&&Xh.isSet,$U=Zh?WU(Zh):FU;ey.exports=$U});var Vi=p((QH,oy)=>{"use strict";var jU=In(),QU=no(),KU=As(),HU=Ni(),YU=oh(),VU=ls(),zU=yr(),JU=dh(),XU=gh(),ZU=$i(),ek=Ah(),tk=Pr(),rk=Ph(),nk=$h(),ak=gs(),ok=Te(),sk=xn(),ik=Vh(),uk=Ke(),ck=ty(),pk=Or(),lk=wr(),dk=1,fk=2,mk=4,ry="[object Arguments]",gk="[object Array]",hk="[object Boolean]",yk="[object Date]",bk="[object Error]",ny="[object Function]",Ak="[object GeneratorFunction]",Ik="[object Map]",wk="[object Number]",ay="[object Object]",Sk="[object RegExp]",vk="[object Set]",Tk="[object String]",xk="[object Symbol]",Rk="[object WeakMap]",Ek="[object ArrayBuffer]",_k="[object DataView]",Ck="[object Float32Array]",Ok="[object Float64Array]",Lk="[object Int8Array]",Pk="[object Int16Array]",qk="[object Int32Array]",Uk="[object Uint8Array]",kk="[object Uint8ClampedArray]",Dk="[object Uint16Array]",Mk="[object Uint32Array]",H={};H[ry]=H[gk]=H[Ek]=H[_k]=H[hk]=H[yk]=H[Ck]=H[Ok]=H[Lk]=H[Pk]=H[qk]=H[Ik]=H[wk]=H[ay]=H[Sk]=H[vk]=H[Tk]=H[xk]=H[Uk]=H[kk]=H[Dk]=H[Mk]=!0;H[bk]=H[ny]=H[Rk]=!1;function io(e,t,r,a,o,s){var i,u=t&dk,c=t&fk,d=t&mk;if(r&&(i=o?r(e,a,o,s):r(e)),i!==void 0)return i;if(!uk(e))return e;var m=ok(e);if(m){if(i=rk(e),!u)return zU(e,i)}else{var y=tk(e),g=y==ny||y==Ak;if(sk(e))return VU(e,u);if(y==ay||y==ry||g&&!o){if(i=c||g?{}:ak(e),!u)return c?XU(e,YU(i,e)):JU(e,HU(i,e))}else{if(!H[y])return o?e:{};i=nk(e,y,u)}}s||(s=new jU);var T=s.get(e);if(T)return T;s.set(e,i),ck(e)?e.forEach(function(k){i.add(io(k,t,r,k,e,s))}):ik(e)&&e.forEach(function(k,C){i.set(C,io(k,t,r,C,e,s))});var B=d?c?ek:ZU:c?lk:pk,D=m?void 0:B(e);return QU(D||e,function(k,C){D&&(C=k,k=e[C]),KU(i,C,io(k,t,r,C,e,s))}),i}n(io,"baseClone");oy.exports=io});var iy=p((HH,sy)=>{"use strict";var Bk=Vi(),Nk=4;function Gk(e){return Bk(e,Nk)}n(Gk,"clone");sy.exports=Gk});var cy=p((VH,uy)=>{"use strict";var Fk=oo(),Wk=8;function zi(e,t,r){t=r?void 0:t;var a=Fk(e,Wk,void 0,void 0,void 0,void 0,void 0,t);return a.placeholder=zi.placeholder,a}n(zi,"curry");zi.placeholder={};uy.exports=zi});var ly=p((JH,py)=>{"use strict";var $k=Lt(),jk=De(),Qk=hs(),Kk="[object DOMException]",Hk="[object Error]";function Yk(e){if(!jk(e))return!1;var t=$k(e);return t==Hk||t==Kk||typeof e.message=="string"&&typeof e.name=="string"&&!Qk(e)}n(Yk,"isError");py.exports=Yk});var fy=p((ZH,dy)=>{"use strict";var Vk=Pr(),zk=De(),Jk="[object WeakMap]";function Xk(e){return zk(e)&&Vk(e)==Jk}n(Xk,"isWeakMap");dy.exports=Xk});var gy=p((tY,my)=>{"use strict";function Zk(e,t){for(var r=-1,a=e==null?0:e.length;++r<a;)if(t(e[r],r,e))return!0;return!1}n(Zk,"arraySome");my.exports=Zk});var Ji=p((nY,hy)=>{"use strict";var eD=rs(),tD=gy(),rD=as(),nD=1,aD=2;function oD(e,t,r,a,o,s){var i=r&nD,u=e.length,c=t.length;if(u!=c&&!(i&&c>u))return!1;var d=s.get(e),m=s.get(t);if(d&&m)return d==t&&m==e;var y=-1,g=!0,T=r&aD?new eD:void 0;for(s.set(e,t),s.set(t,e);++y<u;){var B=e[y],D=t[y];if(a)var k=i?a(D,B,y,t,e,s):a(B,D,y,e,t,s);if(k!==void 0){if(k)continue;g=!1;break}if(T){if(!tD(t,function(C,W){if(!rD(T,W)&&(B===C||o(B,C,r,a,s)))return T.push(W)})){g=!1;break}}else if(!(B===D||o(B,D,r,a,s))){g=!1;break}}return s.delete(e),s.delete(t),g}n(oD,"equalArrays");hy.exports=oD});var by=p((oY,yy)=>{"use strict";function sD(e){var t=-1,r=Array(e.size);return e.forEach(function(a,o){r[++t]=[o,a]}),r}n(sD,"mapToArray");yy.exports=sD});var vy=p((iY,Sy)=>{"use strict";var Ay=jt(),Iy=ds(),iD=lr(),uD=Ji(),cD=by(),pD=Ia(),lD=1,dD=2,fD="[object Boolean]",mD="[object Date]",gD="[object Error]",hD="[object Map]",yD="[object Number]",bD="[object RegExp]",AD="[object Set]",ID="[object String]",wD="[object Symbol]",SD="[object ArrayBuffer]",vD="[object DataView]",wy=Ay?Ay.prototype:void 0,Xi=wy?wy.valueOf:void 0;function TD(e,t,r,a,o,s,i){switch(r){case vD:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case SD:return!(e.byteLength!=t.byteLength||!s(new Iy(e),new Iy(t)));case fD:case mD:case yD:return iD(+e,+t);case gD:return e.name==t.name&&e.message==t.message;case bD:case ID:return e==t+"";case hD:var u=cD;case AD:var c=a&lD;if(u||(u=pD),e.size!=t.size&&!c)return!1;var d=i.get(e);if(d)return d==t;a|=dD,i.set(e,t);var m=uD(u(e),u(t),a,o,s,i);return i.delete(e),m;case wD:if(Xi)return Xi.call(e)==Xi.call(t)}return!1}n(TD,"equalByTag");Sy.exports=TD});var Ry=p((cY,xy)=>{"use strict";var Ty=$i(),xD=1,RD=Object.prototype,ED=RD.hasOwnProperty;function _D(e,t,r,a,o,s){var i=r&xD,u=Ty(e),c=u.length,d=Ty(t),m=d.length;if(c!=m&&!i)return!1;for(var y=c;y--;){var g=u[y];if(!(i?g in t:ED.call(t,g)))return!1}var T=s.get(e),B=s.get(t);if(T&&B)return T==t&&B==e;var D=!0;s.set(e,t),s.set(t,e);for(var k=i;++y<c;){g=u[y];var C=e[g],W=t[g];if(a)var Ae=i?a(W,C,g,t,e,s):a(C,W,g,e,t,s);if(!(Ae===void 0?C===W||o(C,W,r,a,s):Ae)){D=!1;break}k||(k=g=="constructor")}if(D&&!k){var ie=e.constructor,Ve=t.constructor;ie!=Ve&&"constructor"in e&&"constructor"in t&&!(typeof ie=="function"&&ie instanceof ie&&typeof Ve=="function"&&Ve instanceof Ve)&&(D=!1)}return s.delete(e),s.delete(t),D}n(_D,"equalObjects");xy.exports=_D});var Uy=p((lY,qy)=>{"use strict";var Zi=In(),CD=Ji(),OD=vy(),LD=Ry(),Ey=Pr(),_y=Te(),Cy=xn(),PD=Ea(),qD=1,Oy="[object Arguments]",Ly="[object Array]",uo="[object Object]",UD=Object.prototype,Py=UD.hasOwnProperty;function kD(e,t,r,a,o,s){var i=_y(e),u=_y(t),c=i?Ly:Ey(e),d=u?Ly:Ey(t);c=c==Oy?uo:c,d=d==Oy?uo:d;var m=c==uo,y=d==uo,g=c==d;if(g&&Cy(e)){if(!Cy(t))return!1;i=!0,m=!1}if(g&&!m)return s||(s=new Zi),i||PD(e)?CD(e,t,r,a,o,s):OD(e,t,c,r,a,o,s);if(!(r&qD)){var T=m&&Py.call(e,"__wrapped__"),B=y&&Py.call(t,"__wrapped__");if(T||B){var D=T?e.value():e,k=B?t.value():t;return s||(s=new Zi),o(D,k,r,a,s)}}return g?(s||(s=new Zi),LD(e,t,r,a,o,s)):!1}n(kD,"baseIsEqualDeep");qy.exports=kD});var eu=p((fY,My)=>{"use strict";var DD=Uy(),ky=De();function Dy(e,t,r,a,o){return e===t?!0:e==null||t==null||!ky(e)&&!ky(t)?e!==e&&t!==t:DD(e,t,r,a,Dy,o)}n(Dy,"baseIsEqual");My.exports=Dy});var Ny=p((gY,By)=>{"use strict";var MD=In(),BD=eu(),ND=1,GD=2;function FD(e,t,r,a){var o=r.length,s=o,i=!a;if(e==null)return!s;for(e=Object(e);o--;){var u=r[o];if(i&&u[2]?u[1]!==e[u[0]]:!(u[0]in e))return!1}for(;++o<s;){u=r[o];var c=u[0],d=e[c],m=u[1];if(i&&u[2]){if(d===void 0&&!(c in e))return!1}else{var y=new MD;if(a)var g=a(d,m,c,e,t,y);if(!(g===void 0?BD(m,d,ND|GD,a,y):g))return!1}}return!0}n(FD,"baseIsMatch");By.exports=FD});var tu=p((yY,Gy)=>{"use strict";var WD=Ke();function $D(e){return e===e&&!WD(e)}n($D,"isStrictComparable");Gy.exports=$D});var Wy=p((AY,Fy)=>{"use strict";var jD=tu(),QD=Or();function KD(e){for(var t=QD(e),r=t.length;r--;){var a=t[r],o=e[a];t[r]=[a,o,jD(o)]}return t}n(KD,"getMatchData");Fy.exports=KD});var ru=p((wY,$y)=>{"use strict";function HD(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}n(HD,"matchesStrictComparable");$y.exports=HD});var Qy=p((vY,jy)=>{"use strict";var YD=Ny(),VD=Wy(),zD=ru();function JD(e){var t=VD(e);return t.length==1&&t[0][2]?zD(t[0][0],t[0][1]):function(r){return r===e||YD(r,e,t)}}n(JD,"baseMatches");jy.exports=JD});var co=p((xY,Ky)=>{"use strict";var XD=Te(),ZD=Cr(),eM=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,tM=/^\w*$/;function rM(e,t){if(XD(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||ZD(e)?!0:tM.test(e)||!eM.test(e)||t!=null&&e in Object(t)}n(rM,"isKey");Ky.exports=rM});var Vy=p((EY,Yy)=>{"use strict";var Hy=ba(),nM="Expected a function";function nu(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(nM);var r=n(function(){var a=arguments,o=t?t.apply(this,a):a[0],s=r.cache;if(s.has(o))return s.get(o);var i=e.apply(this,a);return r.cache=s.set(o,i)||s,i},"memoized");return r.cache=new(nu.Cache||Hy),r}n(nu,"memoize");nu.Cache=Hy;Yy.exports=nu});var Jy=p((CY,zy)=>{"use strict";var aM=Vy(),oM=500;function sM(e){var t=aM(e,function(a){return r.size===oM&&r.clear(),a}),r=t.cache;return t}n(sM,"memoizeCapped");zy.exports=sM});var au=p((LY,Xy)=>{"use strict";var iM=Jy(),uM=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,cM=/\\(\\)?/g,pM=iM(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(uM,function(r,a,o,s){t.push(o?s.replace(cM,"$1"):a||r)}),t});Xy.exports=pM});var ou=p((PY,Zy)=>{"use strict";function lM(e,t){for(var r=-1,a=e==null?0:e.length,o=Array(a);++r<a;)o[r]=t(e[r],r,e);return o}n(lM,"arrayMap");Zy.exports=lM});var ob=p((UY,ab)=>{"use strict";var eb=jt(),dM=ou(),fM=Te(),mM=Cr(),gM=1/0,tb=eb?eb.prototype:void 0,rb=tb?tb.toString:void 0;function nb(e){if(typeof e=="string")return e;if(fM(e))return dM(e,nb)+"";if(mM(e))return rb?rb.call(e):"";var t=e+"";return t=="0"&&1/e==-gM?"-0":t}n(nb,"baseToString");ab.exports=nb});var su=p((DY,sb)=>{"use strict";var hM=ob();function yM(e){return e==null?"":hM(e)}n(yM,"toString");sb.exports=yM});var iu=p((BY,ib)=>{"use strict";var bM=Te(),AM=co(),IM=au(),wM=su();function SM(e,t){return bM(e)?e:AM(e,t)?[e]:IM(wM(e))}n(SM,"castPath");ib.exports=SM});var qr=p((GY,ub)=>{"use strict";var vM=Cr(),TM=1/0;function xM(e){if(typeof e=="string"||vM(e))return e;var t=e+"";return t=="0"&&1/e==-TM?"-0":t}n(xM,"toKey");ub.exports=xM});var uu=p((WY,cb)=>{"use strict";var RM=iu(),EM=qr();function _M(e,t){t=RM(t,e);for(var r=0,a=t.length;e!=null&&r<a;)e=e[EM(t[r++])];return r&&r==a?e:void 0}n(_M,"baseGet");cb.exports=_M});var lb=p((jY,pb)=>{"use strict";var CM=uu();function OM(e,t,r){var a=e==null?void 0:CM(e,t);return a===void 0?r:a}n(OM,"get");pb.exports=OM});var mb=p((KY,fb)=>{"use strict";function LM(e,t){return e!=null&&t in Object(e)}n(LM,"baseHasIn");fb.exports=LM});var hb=p((YY,gb)=>{"use strict";var PM=iu(),qM=fn(),UM=Te(),kM=_n(),DM=wa(),MM=qr();function BM(e,t,r){t=PM(t,e);for(var a=-1,o=t.length,s=!1;++a<o;){var i=MM(t[a]);if(!(s=e!=null&&r(e,i)))break;e=e[i]}return s||++a!=o?s:(o=e==null?0:e.length,!!o&&DM(o)&&kM(i,o)&&(UM(e)||qM(e)))}n(BM,"hasPath");gb.exports=BM});var bb=p((zY,yb)=>{"use strict";var NM=mb(),GM=hb();function FM(e,t){return e!=null&&GM(e,t,NM)}n(FM,"hasIn");yb.exports=FM});var Ib=p((XY,Ab)=>{"use strict";var WM=eu(),$M=lb(),jM=bb(),QM=co(),KM=tu(),HM=ru(),YM=qr(),VM=1,zM=2;function JM(e,t){return QM(e)&&KM(t)?HM(YM(e),t):function(r){var a=$M(r,e);return a===void 0&&a===t?jM(r,e):WM(t,a,VM|zM)}}n(JM,"baseMatchesProperty");Ab.exports=JM});var Sb=p((eV,wb)=>{"use strict";function XM(e){return function(t){return t?.[e]}}n(XM,"baseProperty");wb.exports=XM});var Tb=p((rV,vb)=>{"use strict";var ZM=uu();function eB(e){return function(t){return ZM(t,e)}}n(eB,"basePropertyDeep");vb.exports=eB});var Rb=p((aV,xb)=>{"use strict";var tB=Sb(),rB=Tb(),nB=co(),aB=qr();function oB(e){return nB(e)?tB(aB(e)):rB(e)}n(oB,"property");xb.exports=oB});var cu=p((sV,Eb)=>{"use strict";var sB=Qy(),iB=Ib(),uB=mn(),cB=Te(),pB=Rb();function lB(e){return typeof e=="function"?e:e==null?uB:typeof e=="object"?cB(e)?iB(e[0],e[1]):sB(e):pB(e)}n(lB,"baseIteratee");Eb.exports=lB});var Cb=p((uV,_b)=>{"use strict";var dB=Vi(),fB=cu(),mB=1;function gB(e){return fB(typeof e=="function"?e:dB(e,mB))}n(gB,"iteratee");_b.exports=gB});var Lb=p((pV,Ob)=>{"use strict";var hB=Vo();function yB(e){var t=e==null?0:e.length;return t?hB(e,1):[]}n(yB,"flatten");Ob.exports=yB});var qb=p((dV,Pb)=>{"use strict";var bB=Lb(),AB=zo(),IB=ha();function wB(e){return IB(AB(e,void 0,bB),e+"")}n(wB,"flatRest");Pb.exports=wB});var kb=p((mV,Ub)=>{"use strict";var SB=oo(),vB=qb(),TB=256,xB=vB(function(e,t){return SB(e,TB,void 0,void 0,void 0,t)});Ub.exports=xB});var Mb=p((gV,Db)=>{"use strict";var RB=ou(),EB=yr(),_B=Te(),CB=Cr(),OB=au(),LB=qr(),PB=su();function qB(e){return _B(e)?RB(e,LB):CB(e)?[e]:EB(OB(PB(e)))}n(qB,"toPath");Db.exports=qB});var Nb=p((yV,Bb)=>{"use strict";Bb.exports={ary:Xg(),assign:Ni(),clone:iy(),curry:cy(),forEach:no(),isArray:Te(),isError:ly(),isFunction:gn(),isWeakMap:fy(),iteratee:Cb(),keys:Bi(),rearg:kb(),toInteger:Ui(),toPath:Mb()}});var Fb=p((bV,Gb)=>{"use strict";var UB=Em(),kB=Nb();function DB(e,t,r){return UB(kB,e,t,r)}n(DB,"convert");Gb.exports=DB});var pu=p((IV,$b)=>{"use strict";var MB=Fb(),Wb=MB("merge",ws());Wb.placeholder=yi();$b.exports=Wb});var Yb=p((lu,du)=>{"use strict";(function(e,t){typeof lu=="object"&&typeof du<"u"?du.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs=t()})(lu,function(){"use strict";var e=1e3,t=6e4,r=36e5,a="millisecond",o="second",s="minute",i="hour",u="day",c="week",d="month",m="quarter",y="year",g="date",T="Invalid Date",B=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,D=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,k={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(O){var S=["th","st","nd","rd"],b=O%100;return"["+O+(S[(b-20)%10]||S[b]||S[0])+"]"}},C=n(function(O,S,b){var E=String(O);return!E||E.length>=S?O:""+Array(S+1-E.length).join(b)+O},"m"),W={s:C,z:function(O){var S=-O.utcOffset(),b=Math.abs(S),E=Math.floor(b/60),w=b%60;return(S<=0?"+":"-")+C(E,2,"0")+":"+C(w,2,"0")},m:n(function O(S,b){if(S.date()<b.date())return-O(b,S);var E=12*(b.year()-S.year())+(b.month()-S.month()),w=S.clone().add(E,d),q=b-w<0,P=S.clone().add(E+(q?-1:1),d);return+(-(E+(b-w)/(q?w-P:P-w))||0)},"t"),a:function(O){return O<0?Math.ceil(O)||0:Math.floor(O)},p:function(O){return{M:d,y,w:c,d:u,D:g,h:i,m:s,s:o,ms:a,Q:m}[O]||String(O||"").toLowerCase().replace(/s$/,"")},u:function(O){return O===void 0}},Ae="en",ie={};ie[Ae]=k;var Ve="$isDayjsObject",ot=n(function(O){return O instanceof Nt||!(!O||!O[Ve])},"S"),st=n(function O(S,b,E){var w;if(!S)return Ae;if(typeof S=="string"){var q=S.toLowerCase();ie[q]&&(w=q),b&&(ie[q]=b,w=q);var P=S.split("-");if(!w&&P.length>1)return O(P[0])}else{var $=S.name;ie[$]=S,w=$}return!E&&w&&(Ae=w),w||!E&&Ae},"t"),V=n(function(O,S){if(ot(O))return O.clone();var b=typeof S=="object"?S:{};return b.date=O,b.args=arguments,new Nt(b)},"O"),F=W;F.l=st,F.i=ot,F.w=function(O,S){return V(O,{locale:S.$L,utc:S.$u,x:S.$x,$offset:S.$offset})};var Nt=function(){function O(b){this.$L=st(b.locale,null,!0),this.parse(b),this.$x=this.$x||b.x||{},this[Ve]=!0}n(O,"M");var S=O.prototype;return S.parse=function(b){this.$d=function(E){var w=E.date,q=E.utc;if(w===null)return new Date(NaN);if(F.u(w))return new Date;if(w instanceof Date)return new Date(w);if(typeof w=="string"&&!/Z$/i.test(w)){var P=w.match(B);if(P){var $=P[2]-1||0,Z=(P[7]||"0").substring(0,3);return q?new Date(Date.UTC(P[1],$,P[3]||1,P[4]||0,P[5]||0,P[6]||0,Z)):new Date(P[1],$,P[3]||1,P[4]||0,P[5]||0,P[6]||0,Z)}}return new Date(w)}(b),this.init()},S.init=function(){var b=this.$d;this.$y=b.getFullYear(),this.$M=b.getMonth(),this.$D=b.getDate(),this.$W=b.getDay(),this.$H=b.getHours(),this.$m=b.getMinutes(),this.$s=b.getSeconds(),this.$ms=b.getMilliseconds()},S.$utils=function(){return F},S.isValid=function(){return this.$d.toString()!==T},S.isSame=function(b,E){var w=V(b);return this.startOf(E)<=w&&w<=this.endOf(E)},S.isAfter=function(b,E){return V(b)<this.startOf(E)},S.isBefore=function(b,E){return this.endOf(E)<V(b)},S.$g=function(b,E,w){return F.u(b)?this[E]:this.set(w,b)},S.unix=function(){return Math.floor(this.valueOf()/1e3)},S.valueOf=function(){return this.$d.getTime()},S.startOf=function(b,E){var w=this,q=!!F.u(E)||E,P=F.p(b),$=n(function(I,R){var U=F.w(w.$u?Date.UTC(w.$y,R,I):new Date(w.$y,R,I),w);return q?U:U.endOf(u)},"l"),Z=n(function(I,R){return F.w(w.toDate()[I].apply(w.toDate("s"),(q?[0,0,0,0]:[23,59,59,999]).slice(R)),w)},"$"),ae=this.$W,pe=this.$M,K=this.$D,Fe="set"+(this.$u?"UTC":"");switch(P){case y:return q?$(1,0):$(31,11);case d:return q?$(1,pe):$(0,pe+1);case c:var x=this.$locale().weekStart||0,A=(ae<x?ae+7:ae)-x;return $(q?K-A:K+(6-A),pe);case u:case g:return Z(Fe+"Hours",0);case i:return Z(Fe+"Minutes",1);case s:return Z(Fe+"Seconds",2);case o:return Z(Fe+"Milliseconds",3);default:return this.clone()}},S.endOf=function(b){return this.startOf(b,!1)},S.$set=function(b,E){var w,q=F.p(b),P="set"+(this.$u?"UTC":""),$=(w={},w[u]=P+"Date",w[g]=P+"Date",w[d]=P+"Month",w[y]=P+"FullYear",w[i]=P+"Hours",w[s]=P+"Minutes",w[o]=P+"Seconds",w[a]=P+"Milliseconds",w)[q],Z=q===u?this.$D+(E-this.$W):E;if(q===d||q===y){var ae=this.clone().set(g,1);ae.$d[$](Z),ae.init(),this.$d=ae.set(g,Math.min(this.$D,ae.daysInMonth())).$d}else $&&this.$d[$](Z);return this.init(),this},S.set=function(b,E){return this.clone().$set(b,E)},S.get=function(b){return this[F.p(b)]()},S.add=function(b,E){var w,q=this;b=Number(b);var P=F.p(E),$=n(function(pe){var K=V(q);return F.w(K.date(K.date()+Math.round(pe*b)),q)},"y");if(P===d)return this.set(d,this.$M+b);if(P===y)return this.set(y,this.$y+b);if(P===u)return $(1);if(P===c)return $(7);var Z=(w={},w[s]=t,w[i]=r,w[o]=e,w)[P]||1,ae=this.$d.getTime()+b*Z;return F.w(ae,this)},S.subtract=function(b,E){return this.add(-1*b,E)},S.format=function(b){var E=this,w=this.$locale();if(!this.isValid())return w.invalidDate||T;var q=b||"YYYY-MM-DDTHH:mm:ssZ",P=F.z(this),$=this.$H,Z=this.$m,ae=this.$M,pe=w.weekdays,K=w.months,Fe=w.meridiem,x=n(function(R,U,oe,xe){return R&&(R[U]||R(E,q))||oe[U].slice(0,xe)},"h"),A=n(function(R){return F.s($%12||12,R,"0")},"d"),I=Fe||function(R,U,oe){var xe=R<12?"AM":"PM";return oe?xe.toLowerCase():xe};return q.replace(D,function(R,U){return U||function(oe){switch(oe){case"YY":return String(E.$y).slice(-2);case"YYYY":return F.s(E.$y,4,"0");case"M":return ae+1;case"MM":return F.s(ae+1,2,"0");case"MMM":return x(w.monthsShort,ae,K,3);case"MMMM":return x(K,ae);case"D":return E.$D;case"DD":return F.s(E.$D,2,"0");case"d":return String(E.$W);case"dd":return x(w.weekdaysMin,E.$W,pe,2);case"ddd":return x(w.weekdaysShort,E.$W,pe,3);case"dddd":return pe[E.$W];case"H":return String($);case"HH":return F.s($,2,"0");case"h":return A(1);case"hh":return A(2);case"a":return I($,Z,!0);case"A":return I($,Z,!1);case"m":return String(Z);case"mm":return F.s(Z,2,"0");case"s":return String(E.$s);case"ss":return F.s(E.$s,2,"0");case"SSS":return F.s(E.$ms,3,"0");case"Z":return P}return null}(R)||P.replace(":","")})},S.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},S.diff=function(b,E,w){var q,P=this,$=F.p(E),Z=V(b),ae=(Z.utcOffset()-this.utcOffset())*t,pe=this-Z,K=n(function(){return F.m(P,Z)},"D");switch($){case y:q=K()/12;break;case d:q=K();break;case m:q=K()/3;break;case c:q=(pe-ae)/6048e5;break;case u:q=(pe-ae)/864e5;break;case i:q=pe/r;break;case s:q=pe/t;break;case o:q=pe/e;break;default:q=pe}return w?q:F.a(q)},S.daysInMonth=function(){return this.endOf(d).$D},S.$locale=function(){return ie[this.$L]},S.locale=function(b,E){if(!b)return this.$L;var w=this.clone(),q=st(b,E,!0);return q&&(w.$L=q),w},S.clone=function(){return F.w(this.$d,this)},S.toDate=function(){return new Date(this.valueOf())},S.toJSON=function(){return this.isValid()?this.toISOString():null},S.toISOString=function(){return this.$d.toISOString()},S.toString=function(){return this.$d.toUTCString()},O}(),Jn=Nt.prototype;return V.prototype=Jn,[["$ms",a],["$s",o],["$m",s],["$H",i],["$W",u],["$M",d],["$y",y],["$D",g]].forEach(function(O){Jn[O[1]]=function(S){return this.$g(S,O[0],O[1])}}),V.extend=function(O,S){return O.$i||(O(S,Nt,V),O.$i=!0),V},V.locale=st,V.isDayjs=ot,V.unix=function(O){return V(1e3*O)},V.en=ie[Ae],V.Ls=ie,V.p={},V})});var QA=p((M4,jA)=>{"use strict";function oN(e,t,r,a){for(var o=-1,s=e==null?0:e.length;++o<s;){var i=e[o];t(a,i,r(i),e)}return a}n(oN,"arrayAggregator");jA.exports=oN});var HA=p((N4,KA)=>{"use strict";var sN=ps(),iN=Or();function uN(e,t){return e&&sN(e,t,iN)}n(uN,"baseForOwn");KA.exports=uN});var VA=p((F4,YA)=>{"use strict";var cN=mr();function pN(e,t){return function(r,a){if(r==null)return r;if(!cN(r))return e(r,a);for(var o=r.length,s=t?o:-1,i=Object(r);(t?s--:++s<o)&&a(i[s],s,i)!==!1;);return r}}n(pN,"createBaseEach");YA.exports=pN});var JA=p(($4,zA)=>{"use strict";var lN=HA(),dN=VA(),fN=dN(lN);zA.exports=fN});var ZA=p((j4,XA)=>{"use strict";var mN=JA();function gN(e,t,r,a){return mN(e,function(o,s,i){t(a,o,r(o),i)}),a}n(gN,"baseAggregator");XA.exports=gN});var tI=p((K4,eI)=>{"use strict";var hN=QA(),yN=ZA(),bN=cu(),AN=Te();function IN(e,t){return function(r,a){var o=AN(r)?hN:yN,s=t?t():{};return o(r,e,bN(a,2),s)}}n(IN,"createAggregator");eI.exports=IN});var nI=p((Y4,rI)=>{"use strict";var wN=wn(),SN=tI(),vN=Object.prototype,TN=vN.hasOwnProperty,xN=SN(function(e,t,r){TN.call(e,r)?e[r].push(t):wN(e,r,[t])});rI.exports=xN});var zN={};_(zN,{Method:()=>Eo,ai:()=>zu,api:()=>xu,auditLogs:()=>kt,automations:()=>Ka,backups:()=>Ne,branding:()=>qa,constants:()=>on,environmentVariables:()=>ft,features:()=>et,groups:()=>re,init:()=>wm,licensing:()=>ut,logger:()=>Xt,mappers:()=>ce,middleware:()=>Au,plugins:()=>Ha,publicApi:()=>za,quotas:()=>dt,scimGroups:()=>Ur,scimUsers:()=>Ue,sdk:()=>fu,users:()=>Wa,utils:()=>cr});module.exports=FI(zN);var Eo=(s=>(s.POST="POST",s.GET="GET",s.PATCH="PATCH",s.DELETE="DELETE",s.PUT="PUT",s))(Eo||{});var fu={};_(fu,{ai:()=>Ns,auditLogs:()=>kt,automations:()=>Ka,backups:()=>Ne,branding:()=>qa,environmentVariables:()=>ft,features:()=>et,groups:()=>re,init:()=>wm,licensing:()=>ut,logger:()=>Xt,plugins:()=>Ha,publicApi:()=>za,quotas:()=>dt,scimGroups:()=>Ur,scimUsers:()=>Ue,users:()=>Wa,utils:()=>cr});var qa={};_(qa,{getBrandingConfig:()=>U_});var et={};_(et,{checkBackups:()=>_e,checkFeature:()=>La,checkFeatures:()=>Ps,checkSCIM:()=>Ms,isAppBuildersEnabled:()=>ks,isAuditLogsEnabled:()=>Pa,isBackupsEnabled:()=>qs,isBrandingEnabled:()=>Us,isEnforceableSSO:()=>kf,isExpandedPublicApiEnabled:()=>At,isPWAEnabled:()=>R_,isPkceOidcEnabled:()=>__,isRecaptchaEnabled:()=>E_,isSSOEnforced:()=>O_,isSyncAutomationsEnabled:()=>T_,isTranslationsEnabled:()=>C_,isTriggerAutomationRunEnabled:()=>x_,isUserGroupsEnabled:()=>Ds,isViewPermissionEnabled:()=>L_,isViewReadonlyColumnsEnabled:()=>P_});var bt=require("@budibase/backend-core"),ge=require("@budibase/types");var ut={};_(ut,{cache:()=>Xe,client:()=>Ot,features:()=>da,getFreeLicense:()=>Cs,getLicense:()=>Es,getLicenseFromKey:()=>_s,keys:()=>Ls,offline:()=>_a,quotas:()=>fa});var Xe={};_(Xe,{getCachedLicense:()=>qf,invalidate:()=>Uf,refresh:()=>Qt});var Xn=require("@budibase/backend-core");var Mr,WI=n(async()=>{Mr=await Xn.RedisClient.init(Xn.redis.utils.Databases.LICENSES)},"init"),$I=n(async()=>{Mr&&await Mr.finish()},"shutdown");process.on("exit",async()=>{await $I()});var _o=n(async()=>(Mr||await WI(),Mr),"getClient");var Ot={};_(Ot,{activateLicenseKey:()=>jo,getLicense:()=>ir,getLicenseFromKey:()=>$o,triggerQuota:()=>Cw});var Zu=G(require("node-fetch"));var ec=require("@budibase/backend-core"),Co=require("dd-trace"),tc=require("dd-trace/ext/formats");var Oo=class{constructor(t){this.apiCall=t=>async(r="",a={})=>await Co.tracer.trace(`api.${t}`,async o=>{o.setTag("url",r);let s={...a.headers};s["Content-Type"]||(s["Content-Type"]="application/json",s.Accept="application/json");let i=s["Content-Type"]==="application/json";ec.logging.correlation.setHeader(s),Co.tracer.inject(o,tc.HTTP_HEADERS,s);let u={method:t,body:i?JSON.stringify(a.body):a.body,headers:s,credentials:"include"};return(0,Zu.default)(`${this.host}${r}`,u)});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}static{n(this,"API")}},Lo=Oo;var rc=require("@budibase/backend-core");var{getDispatcher:QI}=rc.utils;async function Zn(e,t,r){let a=typeof e=="string"?e:e instanceof URL?e.href:e.url,o=QI({rejectUnauthorized:r?.rejectUnauthorized,url:a});return fetch(e,{...t,dispatcher:o})}n(Zn,"proxyFetch");var sr=require("@budibase/types"),N=require("@budibase/backend-core");var ze={};_(ze,{bustCache:()=>Uo,getCurrentUsageValues:()=>pc,getQuotaUsage:()=>Gt,setAllUsage:()=>Do,setAppUsageValue:()=>ko,setUsage:()=>ic,setUsagePerApp:()=>uc,utils:()=>Fr});var Le=require("@budibase/backend-core"),Re=require("@budibase/types");var Fr={};_(Fr,{generateBaseQuotaUsage:()=>ta,generateNewMonthlyQuotas:()=>Gr,generateNewQuotaUsage:()=>qo,getBreakdownName:()=>na,getCurrentMonthString:()=>Et,getQuotaDocId:()=>Nr,setCurrentMonth:()=>ra,setQuotaReset:()=>Po});var Br=require("@budibase/backend-core"),ea=require("@budibase/shared-core"),le=require("@budibase/types");var Nr=n(()=>Br.context.isSelfHostUsingCloud()?`quota_usage_${Br.context.getTenantId()}`:Br.db.StaticDatabases.GLOBAL.docs.usageQuota,"getQuotaDocId"),nc=n(()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},"getNextQuotaReset"),Po=n(e=>{e.quotaReset=nc()},"setQuotaReset"),Et=n(()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},"getCurrentMonthString"),ta=n(()=>({usageQuota:{[le.StaticQuotaName.WORKSPACES]:0,[le.StaticQuotaName.ROWS]:0,[le.StaticQuotaName.PLUGINS]:0,[le.StaticQuotaName.USERS]:0,[le.StaticQuotaName.CREATORS]:0,[le.StaticQuotaName.USER_GROUPS]:0,[le.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[Et()]:Gr()}}),"generateBaseQuotaUsage"),qo=n(()=>{let e={_id:Nr(),quotaReset:nc(),...ta(),apps:{}};return ra(e),e},"generateNewQuotaUsage"),Gr=n(()=>({[le.MonthlyQuotaName.QUERIES]:0,[le.MonthlyQuotaName.AUTOMATIONS]:0,[le.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,[le.MonthlyQuotaName.ACTIONS]:0,triggers:{}}),"generateNewMonthlyQuotas"),ra=n(e=>{let t=Et();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=Gr()),e.monthly.current=e.monthly[t]},"setCurrentMonth"),na=n((e,t)=>{if(!(!t||!e))switch(e){case le.MonthlyQuotaName.AUTOMATIONS:return le.BreakdownQuotaName.AUTOMATIONS;case le.MonthlyQuotaName.QUERIES:return(0,ea.isTableIdOrExternalTableId)(t)?le.BreakdownQuotaName.ROW_QUERIES:(0,ea.isDatasourceOrDatasourcePlusId)(t)?le.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}},"getBreakdownName");var ac=Le.Duration.fromSeconds(60).toMs(),{Writethrough:oc}=Le.cache.writethrough;function KI(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}n(KI,"clearDeprecated");var aa=n(()=>Le.tenancy.isSelfHostUsingCloud()?new oc(Le.tenancy.getSelfHostCloudDB(),ac):new oc(Le.tenancy.getGlobalDB(),ac),"getDB");async function Uo(e=0){let r=aa(),a=Nr(),o=await r.tryGet(a);o&&o._rev&&await r.remove(a,o._rev).catch(async s=>{if(e<1)return await Uo(e+1);throw s})}n(Uo,"bustCache");var Gt=n(async()=>{let e=aa(),t=await e.tryGet(Nr());if(!t){t=qo();let{rev:r}=await e.put(t);t._rev=r}return ra(t),Po(t),KI(t)},"getQuotaUsage"),ic=n(async(e,t,r)=>Do({name:t,type:r,values:{total:e}}),"setUsage"),uc=n(async(e,t,r)=>{let a=aa(),o=await Gt(),s=Object.values(e).reduce((u,c)=>u+c,0);for(let[u,c]of Object.entries(e))o=cc(o,t,r,{total:s,app:c},{appId:u});let i=await a.put(o);return o._rev=i.rev,o},"setUsagePerApp"),HI=n((e,t,r,a)=>{let o=na(t,r);if(!o||!a?.breakdown)return e;e.breakdown||(e.breakdown={}),e.breakdown[o]||(e.breakdown[o]={parent:t,values:{}});let s=e.breakdown[o];return s.values[r]=a.breakdown,e},"setBreakdown"),ko=n((e,t,r,a={},o)=>{let s;try{s=Le.db.getProdWorkspaceID(a?.appId||Le.context.getWorkspaceId())}catch{}if(!s||!o.app||!Re.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[s]||(e.apps={...e.apps,[s]:ta()});let i=e.apps[s];switch(r){case Re.QuotaUsageType.STATIC:i.usageQuota[t]=o.app;break;case Re.QuotaUsageType.MONTHLY:{let u=Et(),c=t,d=i.monthly[u];d||(i.monthly[u]=Gr(),d=i.monthly[u]),d[c]=o.app,Re.BREAKDOWN_QUOTA_NAMES.includes(c)&&a?.id&&(d=HI(d,c,a.id,o));break}}return e},"setAppUsageValue"),sc=n((e,t,r,a)=>{if(!Re.APP_QUOTA_NAMES.includes(r))return{};let o;try{o=Le.db.getProdWorkspaceID(Le.context.getWorkspaceId())}catch{}if(!o||!e.apps||!e.apps[o])return{app:0};let s=e.apps[o];switch(t){case Re.QuotaUsageType.STATIC:if(s.usageQuota?.[r])return{app:s.usageQuota[r]};break;case Re.QuotaUsageType.MONTHLY:{let i=Et(),u=r;if(!s.monthly?.[i]?.[u])break;let c=s.monthly[i],d=c[u],m,y=na(u,a);return y&&a&&c.breakdown?.[y]&&(m=c.breakdown[y]?.values[a]),{app:d,breakdown:m||0}}}return{app:0}},"getAppUsageValue"),YI=n((e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},"setStaticTriggers"),VI=n((e,t,r,a)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),a&&(r.monthly[t].triggers[e]=a)},"setMonthlyTriggers"),cc=n((e,t,r,a,o={})=>{if(r===Re.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=a.total,YI(t,e,a.triggers);else if(r===Re.QuotaUsageType.MONTHLY){t=t;let s=Et();e.monthly[s][t]=a.total,VI(t,s,e,a.triggers)}else throw new Error(`Invalid usage type: ${r}`);return ko(e,t,r,o,a)},"coreUsageUpdate"),Do=n(async e=>{let t=Array.isArray(e)?e:[e],r=aa(),a=await Gt();for(let s of t)a=cc(a,s.name,s.type,s.values,s.opts);let o=await r.put(a,0);return a._rev=o.rev,a},"setAllUsage"),pc=n(async(e,t,r)=>{let a=await Gt(),o=0,s={};switch(e){case Re.QuotaUsageType.STATIC:if(a.usageQuota[t]){let i=t;o=a.usageQuota[i],s=sc(a,e,t,r)}break;case Re.QuotaUsageType.MONTHLY:{let i=Et(),u=t;a.monthly[i][u]&&(o=a.monthly[i][u],s=sc(a,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return Re.APP_QUOTA_NAMES.includes(t)&&!(s.app||s.breakdown)&&(s.app=s.app||0,s.breakdown=s.breakdown||0),{total:o,app:s.app,breakdown:s.breakdown}},"getCurrentUsageValues");var $e={};_($e,{destroy:()=>XI,get:()=>Mo,save:()=>JI});var _t=require("@budibase/backend-core");var zI=n(()=>({_id:_t.StaticDatabases.GLOBAL.docs.licenseInfo}),"newLicenseInfo"),JI=n(async e=>{let t=await Mo();t={...t,...e};let a=await _t.tenancy.getGlobalDB().put(t);return t._rev=a.rev,t},"save"),Mo=n(async()=>{let e=_t.tenancy.getGlobalDB();try{return await e.get(_t.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return zI();throw t}},"get"),XI=n(async()=>{let e=_t.tenancy.getGlobalDB(),t=await Mo();t&&t._rev&&await e.remove(_t.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)},"destroy");var z={};_(z,{bulkSave:()=>pw,destroy:()=>lw,fetch:()=>sw,generateUserGroupID:()=>aw,get:()=>iw,getBulk:()=>uw,getByName:()=>Bo,getGroupUsers:()=>sa,getGroupUsersParams:()=>gc,getUserGroupsParams:()=>mc,save:()=>cw});var j=require("@budibase/backend-core");var Je=require("@budibase/types"),nr=require("@budibase/backend-core");async function lc(){let e=nr.sql.designDoc.base("type");e.sql.tables={[Je.AUDIT_LOG_TYPE]:{fields:{appId:Je.SQLiteType.TEXT,event:Je.SQLiteType.TEXT,userId:Je.SQLiteType.TEXT,timestamp:Je.SQLiteType.TEXT,metadata:Je.SQLiteType.TEXT,name:Je.SQLiteType.TEXT,type:Je.SQLiteType.TEXT,fallback:Je.SQLiteType.TEXT}}};let t=nr.context.getAuditLogsDB(),r;try{r=await t.get(nr.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(a){if(a.status===404)r=e;else throw a}await t.put(r)}n(lc,"createAuditLogDesignDocSQL");var oa=require("@budibase/backend-core");var{ViewName:ZI,SEPARATOR:ew,DocumentType:tw,createView:rw}=oa.db,nw=tw.USER+ew;async function dc(){let e=oa.tenancy.getGlobalDB(),t=`function(doc) {
|
|
4
4
|
if (doc._id.startsWith("${nw}") && 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 rw(e,t,ZI.USER_BY_GROUP)}n(
|
|
10
|
+
}`;await rw(e,t,ZI.USER_BY_GROUP)}n(dc,"createGroupUserLookupView");var fc=`${j.DocumentType.GROUP}${j.SEPARATOR}`,Wr=n(async()=>(await j.db.getAllWorkspaces({dev:!0,efficient:!0,idsOnly:!0})).map(t=>j.db.getProdWorkspaceID(t)),"getAppIDs");function mc(e,t={}){e||(e="");let r=e?.startsWith(j.DocumentType.GROUP)?"":fc;return{...t,startkey:`${r}${e}`,endkey:`${r}${e}${j.UNICODE_MAX}`}}n(mc,"getUserGroupsParams");function gc(e,t={}){e||(e="");let{emailSearch:r,bookmark:a,...o}=t;return r?{...o,startkey:`e_${e}${a||r}`,endkey:`e_${e}${r}${j.UNICODE_MAX}`}:{...t,startkey:`g_${e}`,endkey:`g_${e}${j.UNICODE_MAX}`,startkey_docid:a}}n(gc,"getGroupUsersParams");function aw(){return`${fc}${j.utils.newid()}`}n(aw,"generateUserGroupID");async function sa(e,t){let r=j.tenancy.getGlobalDB();return(await j.db.queryView(j.db.ViewName.USER_BY_GROUP,gc(e,t),r,dc,{arrayResponse:!0})).map(o=>({_id:o.userId,email:o.email}))||[]}n(sa,"getGroupUsers");async function $r(e,t){let r=await sa(e._id);return e.roles&&(e.roles=Object.fromEntries(Object.entries(e.roles).filter(([a])=>t.includes(a)))),{...e,users:r}}n($r,"enrichGroup");async function ow(e){let r=(await $r(e,await Wr())).users?.map(s=>s._id),a=await j.users.bulkGetGlobalUsersById(r),o=[];for(let s of a){if(!s.userGroups)continue;let i=s.userGroups.length;s.userGroups=s.userGroups.filter(u=>u!==e._id),s.userGroups.length!==i&&o.push(s)}o.length&&await j.users.bulkUpdateGlobalUsers(o)}n(ow,"cleanupUsers");async function hc(){return(await j.tenancy.getGlobalDB().allDocs(mc(null,{include_docs:!0}))).rows.map(t=>t.doc)}n(hc,"getAllGroupDocuments");async function sw(){let[e,t]=await Promise.all([hc(),Wr()]),r=[];for(let a of e)r.push($r(a,t));return await Promise.all(r)}n(sw,"fetch");async function iw(e){let t=j.tenancy.getGlobalDB(),[r,a]=await Promise.all([t.get(e),Wr()]);return await $r(r,a)}n(iw,"get");async function uw(e,t={enriched:!0}){let r=j.tenancy.getGlobalDB(),[a,o]=await Promise.all([r.getMultiple(e,{allowMissing:!0}),Wr()]);if(t?.enriched){let s=[];for(let i of a)s.push($r(i,o));return await Promise.all(s)}else return a}n(uw,"getBulk");async function cw(e){return await j.tenancy.getGlobalDB().put(e)}n(cw,"save");async function pw(e){return await j.tenancy.getGlobalDB().bulkDocs(e)}n(pw,"bulkSave");async function lw(e,t){let r=j.tenancy.getGlobalDB(),a=await r.get(e),o=await r.remove(e,t);return await ow(a),o}n(lw,"destroy");async function Bo(e){let t=e.toLowerCase(),[r,a]=await Promise.all([hc(),Wr()]),o=r.find(s=>s.name.toLowerCase()===t);if(o)return await $r(o,a)}n(Bo,"getByName");var Qe={};_(Qe,{deleteAppBackupMetadata:()=>Tw,fetchAppBackups:()=>ww,generateAppBackupID:()=>Oc,getAppBackupMetadata:()=>xw,oldestBackupDate:()=>_c,storeAppBackupMetadata:()=>Sw,updateAppBackupMetadata:()=>vw});var te=require("@budibase/backend-core"),Ec=require("@budibase/types");var on={};_(on,{GENERIC_PAGE_SIZE:()=>an,auditLogs:()=>ar,licenses:()=>je,quotas:()=>yt,versions:()=>nn});var je={};_(je,{CLOUD_FREE_LICENSE:()=>fw,SELF_FREE_LICENSE:()=>No,UNLIMITED:()=>ee,UNLIMITED_LICENSE:()=>mw});var Ct=require("@budibase/types");var yt={};_(yt,{UNLIMITED:()=>dw,actions:()=>Zr,appBackupRetentionDays:()=>tn,apps:()=>Qr,automationLogRetentionDays:()=>en,automations:()=>Jr,budibaseAICredits:()=>Xr,creators:()=>Hr,customAIConfigurations:()=>rn,plugins:()=>Vr,queries:()=>zr,rows:()=>jr,userGroups:()=>Yr,users:()=>Kr});var ve=require("@budibase/types");var dw=-1,jr=n(e=>({[ve.StaticQuotaName.ROWS]:{name:"Rows",value:e,triggers:[90,100]}}),"rows"),Qr=n(e=>({[ve.StaticQuotaName.WORKSPACES]:{name:"Workspaces",value:e,triggers:[100]}}),"apps"),Kr=n(e=>({[ve.StaticQuotaName.USERS]:{name:"Users",value:e,triggers:[80,100]}}),"users"),Hr=n(e=>({[ve.StaticQuotaName.CREATORS]:{name:"Creators",value:e,triggers:[]}}),"creators"),Yr=n(e=>({[ve.StaticQuotaName.USER_GROUPS]:{name:"User Groups",value:e,triggers:[80,100]}}),"userGroups"),Vr=n(e=>({[ve.StaticQuotaName.PLUGINS]:{name:"Plugins",value:e,triggers:[90,100]}}),"plugins"),zr=n(e=>({[ve.MonthlyQuotaName.QUERIES]:{name:"Queries",value:e,triggers:[]}}),"queries"),Jr=n(e=>({[ve.MonthlyQuotaName.AUTOMATIONS]:{name:"Automations",value:e,triggers:[80,90,100]}}),"automations"),Xr=n(e=>({[ve.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:{name:"Budibase AI Credits",value:e,triggers:[80,90,100]}}),"budibaseAICredits"),Zr=n(e=>({[ve.MonthlyQuotaName.ACTIONS]:{name:"Actions",value:e,triggers:[80,90,100]}}),"actions"),en=n(e=>({[ve.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS]:{name:"Automation Logs",value:e,triggers:[]}}),"automationLogRetentionDays"),tn=n(e=>({[ve.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS]:{name:"App Backups",value:e,triggers:[]}}),"appBackupRetentionDays"),rn=n(e=>({[ve.StaticQuotaName.AI_CUSTOM_CONFIGS]:{name:"Custom AI Configuration",value:e,triggers:[]}}),"customAIConfigurations");var ee=-1,fw={features:[],quotas:{usage:{monthly:{...zr(ee),...Jr(200),...Xr(5e4),...Zr(ee)},static:{...Qr(ee),...jr(2e3),...Kr(5),...Hr(5),...Yr(0),...Vr(10),...rn(0)}},constant:{...en(1),...tn(0)}},plan:{type:Ct.PlanType.FREE,usesInvoicing:!1,model:Ct.PlanModel.PER_USER}},No={features:[],quotas:{usage:{monthly:{...zr(ee),...Jr(ee),...Xr(5e4),...Zr(ee)},static:{...jr(ee),...Qr(ee),...Kr(20),...Hr(ee),...Yr(0),...Vr(10),...rn(0)}},constant:{...en(1),...tn(0)}},plan:{type:Ct.PlanType.FREE,usesInvoicing:!1,model:Ct.PlanModel.PER_USER}},mw={features:[],quotas:{usage:{monthly:{...zr(ee),...Jr(ee),...Xr(ee),...Zr(ee)},static:{...Qr(ee),...jr(ee),...Kr(ee),...Hr(ee),...Yr(ee),...Vr(ee),...rn(ee)}},constant:{...en(ee),...tn(ee)}},plan:{type:Ct.PlanType.FREE,usesInvoicing:!1,model:Ct.PlanModel.PER_USER}};var nn={};_(nn,{getLicenseVersion:()=>gw,getProVersion:()=>bc});var Ft=require("@budibase/backend-core"),ia=G(require("fs")),yc=G(require("path"));var gw=n(()=>{if(Ft.env.isDev()){let e="dev-version.txt",t=yc.default.join(Ft.objectStore.budibaseTempDir(),e);if(ia.default.existsSync(t))return ia.default.readFileSync(t,"utf8");{let r=Ft.utils.newid();return ia.default.writeFileSync(t,r),r}}else return bc()},"getLicenseVersion"),bc=n(()=>{let e=Ft.env.VERSION;if(!e)throw new Error("No budibase pro version was specified");return e},"getProVersion");var ar={};_(ar,{searchTable:()=>hw});var Wt=require("@budibase/types"),Ac=require("@budibase/backend-core");function hw(){return{type:"table",sourceType:Wt.TableSourceType.INTERNAL,name:Wt.AUDIT_LOG_TYPE,sourceId:Ac.SQS_DATASOURCE_INTERNAL,primary:["_id"],schema:{metadata:{name:"metadata",type:Wt.FieldType.JSON},fallback:{name:"fallback",type:Wt.FieldType.JSON}}}}n(hw,"searchTable");var an=9;function sn(e,t){let r=e.rows.map(o=>o.doc?o.doc:o);if(!t?.paginate)return{data:r,hasNextPage:!1,totalRows:e.total_rows};let a=r.length>t?.pageSize;return{data:r.slice(0,t?.pageSize),hasNextPage:a,nextPage:a?e.rows[t?.pageSize]?.key:void 0,totalRows:e.total_rows}}n(sn,"pagination");var Ic=require("@budibase/types");var yw=new Date(864e13).toISOString(),bw=1e3*60*60*24;async function ua(e){let r=(await Xe.getCachedLicense()).quotas?.[Ic.QuotaType.CONSTANT]?.[e]?.value||0;return r===je.UNLIMITED?new Date(yw).toISOString():new Date(new Date().getTime()-bw*r).toISOString()}n(ua,"getOldestRetentionDate");var or=require("@budibase/backend-core");var{ViewName:Sc,AutomationViewMode:Go,SEPARATOR:ct,DocumentType:vc,createView:Tc}=or.db,Aw=vc.AUTOMATION_LOG+ct,wc=vc.APP_BACKUP+ct;async function xc(){let e=or.context.getProdWorkspaceDB(),t=`function(doc) {
|
|
11
11
|
if (doc._id.startsWith("${Aw}")) {
|
|
12
12
|
let autoId = doc.automationId + "${ct}"
|
|
13
13
|
let status = doc.status + "${ct}"
|
|
@@ -18,14 +18,14 @@
|
|
|
18
18
|
emit(autoKey)
|
|
19
19
|
emit(allKey)
|
|
20
20
|
}
|
|
21
|
-
}`;await
|
|
22
|
-
if (doc._id.startsWith("${
|
|
21
|
+
}`;await Tc(e,t,Sc.AUTOMATION_LOGS)}n(xc,"createLogByAutomationView");async function Rc(){let e=or.tenancy.getGlobalDB(),t=`function(doc) {
|
|
22
|
+
if (doc._id.startsWith("${wc}") && doc.type && doc.trigger) {
|
|
23
23
|
let full = doc.appId + "${ct}"
|
|
24
24
|
full += doc.trigger.toLowerCase() + "${ct}"
|
|
25
25
|
full += doc.type.toLowerCase() + "${ct}"
|
|
26
|
-
emit("${
|
|
26
|
+
emit("${wc}" + full + doc.timestamp)
|
|
27
27
|
}
|
|
28
|
-
}`;await
|
|
28
|
+
}`;await Tc(e,t,Sc.WORKSPACE_BACKUP_BY_TRIGGER)}n(Rc,"createAppBackupTriggerView");async function _c(){return ua(Ec.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS)}n(_c,"oldestBackupDate");var Fo=`${te.db.DocumentType.APP_BACKUP}${te.db.SEPARATOR}`;async function Iw(e,t,r={}){let a=await _c(),o=te.db.getProdWorkspaceID(e),s=o,i=o;if(t.trigger&&t.type){let u=`${te.db.SEPARATOR}${t.trigger}`;u+=`${te.db.SEPARATOR}${t.type}`,s+=u,i+=u}return(!t.startDate||t.startDate<a)&&(t.startDate=a),t.startDate&&(i+=`${te.db.SEPARATOR}${t.startDate}`),t.endDate&&(s+=`${te.db.SEPARATOR}${t.endDate}`),{...r,descending:!0,startkey:`${Fo}${s}${te.db.UNICODE_MAX}`,endkey:`${Fo}${i}`}}n(Iw,"getAppBackupParams");async function Cc(e,t){try{let r=te.db.getQueryIndex(te.db.ViewName.WORKSPACE_BACKUP_BY_TRIGGER);return await e.query(r,t)}catch(r){if(r!=null&&r.error==="not_found")return await Rc(),Cc(e,t);throw r}}n(Cc,"getAppBackupsByTrigger");function Oc(e,t){return`${Fo}${e}${te.db.SEPARATOR}${t}`}n(Oc,"generateAppBackupID");async function ww(e,t={}){let r=te.tenancy.getGlobalDB(),a,o=t.limit||9,s=await Iw(e,t,{include_docs:!0,limit:o+1});t.page&&(s.startkey=t.page),!t.trigger||!t.type?a=await r.allDocs(s):a=await Cc(r,s);let i=sn(a,{paginate:t.paginate,pageSize:o}),u=[...new Set(i.data.filter(d=>d.createdBy).map(d=>d.createdBy))],c=await te.users.bulkGetGlobalUsersById(u,{cleanup:!0});for(let d of c)for(let m of i.data)d?._id===m.createdBy&&(m.createdBy=d);return i}n(ww,"fetchAppBackups");async function Sw(e,t={}){let r=te.tenancy.getGlobalDB(),a=te.db.getProdWorkspaceID(e.appId),o=Oc(a,e.timestamp),s={...e,_id:o,appId:a,name:e.name};return s._id=t.docId||s._id,s._rev=t.docRev||s._rev,t.filename&&(s.filename=t.filename),e.createdBy&&(s.createdBy=te.db.getGlobalIDFromUserMetadataID(e.createdBy)),await r.put(s)}n(Sw,"storeAppBackupMetadata");async function vw(e,t){let r=te.tenancy.getGlobalDB(),a=await r.get(e);return a.name=t,await r.put(a)}n(vw,"updateAppBackupMetadata");async function Tw(e){let t=te.tenancy.getGlobalDB(),r=await t.get(e);await t.remove(r._id,r._rev)}n(Tw,"deleteAppBackupMetadata");async function xw(e){return await te.tenancy.getGlobalDB().get(e)}n(xw,"getAppBackupMetadata");var $t={};_($t,{get:()=>Ew,getCacheEnvVarID:()=>qc,getEnvVarID:()=>ca,update:()=>_w});var Ze=require("@budibase/backend-core"),Pc=G(require("lru-cache"));var Rw=1e3,Lc=new Pc.default({max:Rw});function ca(){return Ze.StaticDatabases.GLOBAL.docs.environmentVariables}n(ca,"getEnvVarID");function qc(e){return`${Ze.tenancy.getTenantId()}/${ca()}/${e||""}`}n(qc,"getCacheEnvVarID");async function Ew(){let e=ca(),t=Ze.tenancy.getGlobalDB(),r,a=!1;try{r=await t.get(e)}catch(u){if(u.status==404)a=!0;else throw u}let o=qc(r?._rev),s=Lc.get(o);if(s)return s;let i;return!a&&r?i={...r,variables:JSON.parse(Ze.encryption.decrypt(r.variables,Ze.encryption.SecretOption.ENCRYPTION))}:i={_id:e,variables:{}},Lc.set(o,i),i}n(Ew,"get");async function _w(e){let t=ca();return await Ze.tenancy.getGlobalDB().put({_id:e._id||t,_rev:e._rev||void 0,variables:Ze.encryption.encrypt(JSON.stringify(e.variables),Ze.encryption.SecretOption.ENCRYPTION)})}n(_w,"update");var Wo=require("dd-trace");var pa=new Lo(N.env.INTERNAL_ACCOUNT_PORTAL_URL||N.env.ACCOUNT_PORTAL_URL),la=n(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{}},"getResponseErrorMessage"),Uc=n(async e=>{let t,r;if(N.env.SELF_HOSTED){if(t=await $e.get(),!t.licenseKey)return;r={[N.constants.Header.LICENSE_KEY]:t.licenseKey}}else{let a=N.tenancy.getTenantId();r={[N.constants.Header.API_KEY]:N.env.ACCOUNT_PORTAL_API_KEY,[N.constants.Header.TENANT_ID]:a}}return e(r)},"authAware"),kc=n(async()=>await Wo.tracer.trace("_getLicense",async()=>await Uc(async e=>{let t=await ze.getQuotaUsage();if(t.usageQuota.users==null){let c=await N.users.getUserCount();console.info(`Syncing user count quota to ${c}`),t.usageQuota.users=c,await ze.setUsage(c,sr.StaticQuotaName.USERS,sr.QuotaUsageType.STATIC)}let r=await N.users.getCreatorCount();t.usageQuota.creators=r,await ze.setUsage(r,sr.StaticQuotaName.CREATORS,sr.QuotaUsageType.STATIC);let a=await N.installation.getInstallFromDB(),o=N.tenancy.getTenantId(),s=await N.events.identification.getUniqueTenantId(o),i=nn.getProVersion(),u={quotaUsage:t,tenantId:o,install:{id:a.installId,tenantId:s,version:i}};try{let c=await pa.post("/api/license",{headers:{...e},body:u});if(c.status===404||c.status===403)return;if(c.status!==200){let d=await la(c);throw new N.HTTPError(`Error getting license: ${d}`,c.status)}return c.json()}catch(c){if(N.env.DISABLE_ACCOUNT_PORTAL)return;throw c}})),"_getLicense");N.env.isJest()&&(kc=jest.fn());var ir=kc;async function $o(e){return await Wo.tracer.trace("getLicenseFromKey",async t=>{let r;if(!N.env.ACCOUNT_PORTAL_API_KEY)throw new Error("getLicenseFromKey requires ACCOUNT_PORTAL_API_KEY to be set");try{r=await pa.get(`/api/license/${e}`,{headers:{[N.constants.Header.API_KEY]:N.env.ACCOUNT_PORTAL_API_KEY}})}catch(a){if(N.env.DISABLE_ACCOUNT_PORTAL)return;throw a}if(r.status===404||r.status===403){t.addTags({licenseFound:!1});return}if(r.status!==200){let a=await la(r);throw new N.HTTPError(`Error getting license: ${a}`,r.status)}return r.json()})}n($o,"getLicenseFromKey");var Cw=n(e=>Uc(async t=>{let r=await pa.post("/api/license/usage/triggered",{headers:{...t},body:e});if(r.status!==200){let a=await la(r);N.logging.logAlert(`Error triggering quota usage: ${a}`)}}),"triggerQuota"),jo=n(async e=>{let t=await N.installation.getInstall(),r={installVersion:t.version,installId:t.installId},a=await pa.post("/api/license/activate",{headers:{[N.constants.Header.LICENSE_KEY]:e},body:r});if(a.status===403)throw new N.HTTPError("Invalid license key",400);if(a.status===409)throw new N.HTTPError("License key has already been activated",409);if(a.status!==200){let o=await la(a);throw new N.HTTPError(`Error activating license key: ${o}`,a.status)}return a.json()},"activateLicenseKey");var Rs=require("@budibase/backend-core");var _a={};_(_a,{activateOfflineLicenseToken:()=>d_,deleteOfflineLicenseToken:()=>f_,dev:()=>On,enrichLicense:()=>Ef,getIdentifier:()=>Ss,getIdentifierBase64:()=>m_,getIdentifierFromBase64:()=>g_,getOfflineLicense:()=>vs,getOfflineLicenseToken:()=>Tf,signing:()=>pn,verifyExpiry:()=>xf,verifyInstallation:()=>Rf});var pn={};_(pn,{sign:()=>Lw,verifyLicenseToken:()=>cn});var Qo=G(require("jsonwebtoken"));var Ow=`-----BEGIN PUBLIC KEY-----
|
|
29
29
|
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvz3jePLCFBXZ19c8Dpkv
|
|
30
30
|
XtSgOhKFOcvQdo/LV0KJRUzQWDPWuO4ILtBtnqhjtIzZH4CH0qCYBet5L6Qr4CM1
|
|
31
31
|
l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
|
|
@@ -34,8 +34,8 @@ l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
|
|
|
34
34
|
d/o3ZWE1TTj1zYwlCLN5qRKr3hU8nC3xEYNEbkB9SfTRaOq9Q7P8WmfLkoCPm3pR
|
|
35
35
|
mwIDAQAB
|
|
36
36
|
-----END PUBLIC KEY-----
|
|
37
|
-
`;function cn(e){return Qo.default.verify(e,Ow,{algorithms:["RS256"]})}n(cn,"verifyLicenseToken");function Lw(e,t){return Qo.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}n(Lw,"sign");var da={};_(da,{getOfflineFeatures:()=>Ko});var h=require("@budibase/types");var Pw={[h.PlanType.FREE]:[...je.SELF_FREE_LICENSE.features],[h.PlanType.PREMIUM]:[h.Feature.WORKSPACE_BACKUPS,h.Feature.BRANDING,h.Feature.APP_BUILDERS,h.Feature.VIEW_PERMISSIONS,h.Feature.PDF],[h.PlanType.PREMIUM_PLUS]:[h.Feature.WORKSPACE_BACKUPS,h.Feature.BRANDING,h.Feature.SYNC_AUTOMATIONS,h.Feature.APP_BUILDERS,h.Feature.VIEW_PERMISSIONS,h.Feature.TRIGGER_AUTOMATION_RUN,h.Feature.VIEW_READONLY_COLUMNS,h.Feature.AI_CUSTOM_CONFIGS,h.Feature.PDF,h.Feature.BUDIBASE_AI],[h.PlanType.PREMIUM_PLUS_TRIAL]:[h.Feature.WORKSPACE_BACKUPS,h.Feature.BRANDING,h.Feature.SYNC_AUTOMATIONS,h.Feature.APP_BUILDERS,h.Feature.VIEW_PERMISSIONS,h.Feature.TRIGGER_AUTOMATION_RUN,h.Feature.VIEW_READONLY_COLUMNS,h.Feature.AI_CUSTOM_CONFIGS,h.Feature.PDF,h.Feature.BUDIBASE_AI],[h.PlanType.PRO]:[h.Feature.USER_GROUPS,h.Feature.WORKSPACE_BACKUPS],[h.PlanType.TEAM]:[h.Feature.USER_GROUPS,h.Feature.WORKSPACE_BACKUPS],[h.PlanType.BUSINESS]:[h.Feature.USER_GROUPS,h.Feature.WORKSPACE_BACKUPS,h.Feature.ENVIRONMENT_VARIABLES,h.Feature.AUDIT_LOGS,h.Feature.BRANDING,h.Feature.SYNC_AUTOMATIONS,h.Feature.APP_BUILDERS,h.Feature.EXPANDED_PUBLIC_API,h.Feature.VIEW_PERMISSIONS,h.Feature.PDF,h.Feature.BUDIBASE_AI],[h.PlanType.ENTERPRISE_BASIC]:[h.Feature.USER_GROUPS,h.Feature.WORKSPACE_BACKUPS,h.Feature.ENVIRONMENT_VARIABLES,h.Feature.ENFORCEABLE_SSO,h.Feature.AUDIT_LOGS,h.Feature.BRANDING,h.Feature.SYNC_AUTOMATIONS,h.Feature.OFFLINE,h.Feature.APP_BUILDERS,h.Feature.EXPANDED_PUBLIC_API,h.Feature.VIEW_PERMISSIONS,h.Feature.TRIGGER_AUTOMATION_RUN,h.Feature.SCIM,h.Feature.VIEW_READONLY_COLUMNS,h.Feature.AI_CUSTOM_CONFIGS,h.Feature.PWA,h.Feature.CUSTOM_APP_SCRIPTS,h.Feature.PDF,h.Feature.BUDIBASE_AI,h.Feature.RECAPTCHA,h.Feature.PKCE_OIDC,h.Feature.TRANSLATIONS],[h.PlanType.ENTERPRISE_BASIC_TRIAL]:[h.Feature.USER_GROUPS,h.Feature.WORKSPACE_BACKUPS,h.Feature.ENVIRONMENT_VARIABLES,h.Feature.ENFORCEABLE_SSO,h.Feature.BRANDING,h.Feature.SYNC_AUTOMATIONS,h.Feature.APP_BUILDERS,h.Feature.EXPANDED_PUBLIC_API,h.Feature.VIEW_PERMISSIONS,h.Feature.TRIGGER_AUTOMATION_RUN,h.Feature.SCIM,h.Feature.VIEW_READONLY_COLUMNS,h.Feature.AI_CUSTOM_CONFIGS,h.Feature.PWA,h.Feature.CUSTOM_APP_SCRIPTS,h.Feature.PDF,h.Feature.BUDIBASE_AI,h.Feature.RECAPTCHA,h.Feature.PKCE_OIDC,h.Feature.TRANSLATIONS],[h.PlanType.ENTERPRISE]:[h.Feature.USER_GROUPS,h.Feature.WORKSPACE_BACKUPS,h.Feature.ENVIRONMENT_VARIABLES,h.Feature.ENFORCEABLE_SSO,h.Feature.AUDIT_LOGS,h.Feature.BRANDING,h.Feature.SYNC_AUTOMATIONS,h.Feature.OFFLINE,h.Feature.APP_BUILDERS,h.Feature.EXPANDED_PUBLIC_API,h.Feature.VIEW_PERMISSIONS,h.Feature.TRIGGER_AUTOMATION_RUN,h.Feature.SCIM,h.Feature.VIEW_READONLY_COLUMNS,h.Feature.AI_CUSTOM_CONFIGS,h.Feature.PWA,h.Feature.CUSTOM_APP_SCRIPTS,h.Feature.PDF,h.Feature.BUDIBASE_AI,h.Feature.RECAPTCHA,h.Feature.PKCE_OIDC,h.Feature.TRANSLATIONS]};function Ko(e){function t(r){let a=r[e];if(!a)throw new Error(`Features do not exist for planType=${e}`);return a}return n(t,"readFeatures"),t(Pw)}n(Ko,"getOfflineFeatures");var fa={};_(fa,{UNLIMITED:()=>f,getQuotas:()=>Ho});var J=require("@budibase/types");var l=yt,Mc=je,f=-1,ln=n(e=>e*1e6,"millions"),qw={[J.PlanType.FREE]:{...Mc.CLOUD_FREE_LICENSE.quotas},[J.PlanType.PREMIUM]:{usage:{monthly:{...l.queries(f),...l.automations(1e3),...l.budibaseAICredits(0),...l.actions(f)},static:{...l.rows(1e4),...l.apps(f),...l.users(f),...l.creators(f),...l.userGroups(0),...l.plugins(f),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(7),...l.appBackupRetentionDays(7)}},[J.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...l.queries(f),...l.automations(5e3),...l.budibaseAICredits(ln(2)),...l.actions(f)},static:{...l.rows(25e3),...l.apps(f),...l.users(f),...l.creators(f),...l.userGroups(0),...l.plugins(f),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[J.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...l.queries(f),...l.automations(5e3),...l.budibaseAICredits(ln(2)),...l.actions(f)},static:{...l.rows(25e3),...l.apps(f),...l.users(f),...l.creators(f),...l.userGroups(0),...l.plugins(f),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[J.PlanType.PRO]:{usage:{monthly:{...l.queries(f),...l.automations(1e3),...l.budibaseAICredits(0),...l.actions(f)},static:{...l.rows(f),...l.apps(f),...l.users(f),...l.creators(f),...l.userGroups(5),...l.plugins(f),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(7),...l.appBackupRetentionDays(7)}},[J.PlanType.TEAM]:{usage:{monthly:{...l.queries(f),...l.automations(5e3),...l.budibaseAICredits(0),...l.actions(f)},static:{...l.rows(f),...l.apps(f),...l.users(f),...l.creators(f),...l.userGroups(10),...l.plugins(f),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(90)}},[J.PlanType.BUSINESS]:{usage:{monthly:{...l.queries(f),...l.automations(1e4),...l.budibaseAICredits(0),...l.actions(f)},static:{...l.rows(5e4),...l.apps(f),...l.users(f),...l.creators(f),...l.userGroups(50),...l.plugins(f),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(365),...l.appBackupRetentionDays(365)}},[J.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...l.queries(f),...l.automations(f),...l.budibaseAICredits(ln(4)),...l.actions(f)},static:{...l.rows(f),...l.apps(f),...l.users(f),...l.creators(f),...l.userGroups(f),...l.plugins(f),...l.customAIConfigurations(f)}},constant:{...l.automationLogRetentionDays(f),...l.appBackupRetentionDays(f)}},[J.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...l.queries(f),...l.automations(f),...l.budibaseAICredits(ln(4)),...l.actions(f)},static:{...l.rows(f),...l.apps(f),...l.users(f),...l.creators(f),...l.userGroups(f),...l.plugins(f),...l.customAIConfigurations(f)}},constant:{...l.automationLogRetentionDays(15),...l.appBackupRetentionDays(15)}},[J.PlanType.ENTERPRISE]:{usage:{monthly:{...l.queries(f),...l.automations(f),...l.budibaseAICredits(ln(4)),...l.actions(f)},static:{...l.rows(f),...l.apps(f),...l.users(f),...l.creators(f),...l.userGroups(f),...l.plugins(f),...l.customAIConfigurations(f)}},constant:{...l.automationLogRetentionDays(f),...l.appBackupRetentionDays(f)}}},Uw={[J.PlanType.FREE]:{...Mc.SELF_FREE_LICENSE.quotas},[J.PlanType.PREMIUM]:void 0,[J.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...l.queries(f),...l.automations(f),...l.budibaseAICredits(0),...l.actions(f)},static:{...l.rows(f),...l.apps(f),...l.users(f),...l.creators(f),...l.userGroups(0),...l.plugins(f),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[J.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...l.queries(f),...l.automations(f),...l.budibaseAICredits(0),...l.actions(f)},static:{...l.rows(f),...l.apps(f),...l.users(f),...l.creators(f),...l.userGroups(0),...l.plugins(f),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[J.PlanType.PRO]:{usage:{monthly:{...l.queries(f),...l.automations(f),...l.budibaseAICredits(0),...l.actions(f)},static:{...l.rows(f),...l.apps(f),...l.users(f),...l.creators(f),...l.userGroups(5),...l.plugins(f),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(7),...l.appBackupRetentionDays(7)}},[J.PlanType.TEAM]:{usage:{monthly:{...l.queries(f),...l.automations(f),...l.budibaseAICredits(0),...l.actions(f)},static:{...l.rows(f),...l.apps(f),...l.users(f),...l.creators(f),...l.userGroups(10),...l.plugins(f),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(90)}},[J.PlanType.BUSINESS]:{usage:{monthly:{...l.queries(f),...l.automations(f),...l.budibaseAICredits(0),...l.actions(f)},static:{...l.rows(f),...l.apps(f),...l.users(f),...l.creators(f),...l.userGroups(50),...l.plugins(f),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(90),...l.appBackupRetentionDays(365)}},[J.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...l.queries(f),...l.automations(f),...l.budibaseAICredits(0),...l.actions(f)},static:{...l.rows(f),...l.apps(f),...l.users(f),...l.creators(f),...l.userGroups(f),...l.plugins(f),...l.customAIConfigurations(f)}},constant:{...l.automationLogRetentionDays(f),...l.appBackupRetentionDays(f)}},[J.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...l.queries(f),...l.automations(f),...l.budibaseAICredits(0),...l.actions(f)},static:{...l.rows(f),...l.apps(f),...l.users(f),...l.creators(f),...l.userGroups(f),...l.plugins(f),...l.customAIConfigurations(f)}},constant:{...l.automationLogRetentionDays(15),...l.appBackupRetentionDays(15)}},[J.PlanType.ENTERPRISE]:{usage:{monthly:{...l.queries(f),...l.automations(f),...l.budibaseAICredits(0),...l.actions(f)},static:{...l.rows(f),...l.apps(f),...l.users(f),...l.creators(f),...l.userGroups(f),...l.plugins(f),...l.customAIConfigurations(f)}},constant:{...l.automationLogRetentionDays(f),...l.appBackupRetentionDays(f)}}};function Ho(e,t){let r;function a(o){let s=o[t];if(!s)throw new Error(`Quotas do not exist for planType=${t} and hosting=${e}`);return s}switch(n(a,"readQuotas"),e){case J.Hosting.SELF:r=a(Uw);break;case J.Hosting.CLOUD:r=a(qw);break}return JSON.parse(JSON.stringify(r))}n(Ho,"getQuotas");var cr={};_(cr,{encoding:()=>ur,workspaceExists:()=>kw});var Bc=require("@budibase/backend-core");async function kw(e){return(await Bc.db.getAllWorkspaces({all:!0,idsOnly:!0})).includes(e)}n(kw,"workspaceExists");var ur={};_(ur,{base64ToObject:()=>Mw,objectToBase64:()=>Dw});function Dw(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}n(Dw,"objectToBase64");function Mw(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}n(Mw,"base64ToObject");var Sf=require("@budibase/types"),Sr=require("@budibase/backend-core"),vf=G(ed()),Tf=G(ws());async function d_(e){await $e.save({offlineLicenseToken:e}),await Qt()}n(d_,"activateOfflineLicenseToken");async function f_(){await $e.save({offlineLicenseToken:void 0}),await Qt()}n(f_,"deleteOfflineLicenseToken");async function xf(){return(await $e.get()).offlineLicenseToken}n(xf,"getOfflineLicenseToken");async function Ss(){let t=(await Sr.installation.getInstall()).installId,r=Sr.context.getTenantId(),a=await Sr.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:a}}n(Ss,"getIdentifier");async function m_(){let e=await Ss();return ur.objectToBase64(e)}n(m_,"getIdentifierBase64");function g_(e){return ur.base64ToObject(e)}n(g_,"getIdentifierFromBase64");function Rf(e){let t=Date.now(),r=new Date(e.expireAt).getTime();if(t>r)throw new Error(`Offline license has expired. expireAt=${e.expireAt}`)}n(Rf,"verifyExpiry");async function Ef(e){let t=await Ss();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}n(Ef,"verifyInstallation");function _f(e){let t=e.plan.type,r=Sf.Hosting.SELF,a=Ko(t),o=Ho(r,t);return e.features=(0,vf.default)(e.features,a),e.quotas=(0,Tf.default)(e.quotas,o),e}n(_f,"enrichLicense");async function vs(){try{let e=await xf();if(e){let t=await cn(e);return Rf(t),await Ef(t),_f(t)}}catch(e){console.error("Error retrieving offline license",e)}}n(vs,"getOfflineLicense");var On={};_(On,{deleteDevLicense:()=>I_,getOfflineLicense:()=>b_,writeDevLicenseToDisk:()=>A_});var Cf=require("@budibase/backend-core"),xs=require("path"),Of=require("os"),Kt=G(require("fs"));var h_=Cf.env.isTest()?".budibase-test":".budibase",Ts=(0,xs.join)((0,Of.tmpdir)(),h_),y_="dev_license.txt",Cn=(0,xs.join)(Ts,y_);if(!Kt.default.existsSync(Ts))try{Kt.default.mkdirSync(Ts)}catch{}function b_(){try{if(Kt.default.existsSync(Cn)){let e=Kt.default.readFileSync(Cn,{encoding:"utf-8"});return cn(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}n(b_,"getOfflineLicense");function A_(e){console.log(`Writing license to: ${Cn}`),Kt.default.writeFileSync(Cn,e,{encoding:"utf-8"})}n(A_,"writeDevLicenseToDisk");function I_(){Kt.default.rmSync(Cn,{force:!0})}n(I_,"deleteDevLicense");var Lf=require("dd-trace");var Es=n(async()=>await Lf.tracer.trace("getLicense",async e=>{if(Rs.env.OFFLINE_MODE)return e.addTags({offline:!0}),vs();let t=await ir();return t||(e.addTags({offlineFallback:!0}),t=On.getOfflineLicense()),t}),"getLicense"),_s=n(e=>$o(e),"getLicenseFromKey"),Cs=n(()=>Rs.env.SELF_HOSTED?je.SELF_FREE_LICENSE:je.CLOUD_FREE_LICENSE,"getFreeLicense");var Ls={};_(Ls,{activateLicenseKey:()=>w_,deleteLicenseKey:()=>S_,getLicenseKey:()=>Ca});var Os=G(require("dd-trace"));async function w_(e){await jo(e),await $e.save({licenseKey:e}),await Qt()}n(w_,"activateLicenseKey");async function Ca(){return await Os.default.trace("getLicenseKey",async e=>{let t=await $e.get();return e.addTags({licenseKey:t.licenseKey}),t.licenseKey})}n(Ca,"getLicenseKey");async function S_(){return await Os.default.trace("deleteLicenseKey",async()=>{await $e.save({licenseKey:void 0}),await Qt()})}n(S_,"deleteLicenseKey");var Ht=require("@budibase/backend-core"),Oa=G(require("dd-trace"));var Pf=3600,Qt=n(async()=>{await kf(),await Uf()},"refresh"),qf=n(async(e,t)=>{let{populateLicense:r=Es,populateFreeLicense:a=Cs}=t||{};return await Oa.default.trace("getCachedLicense",async o=>{let s=Ht.context.getLicense();if(s)return o.addTags({foundInContext:!0,features:s.features,plan:s.plan,quotas:s.quotas}),s;let i=Ht.tenancy.getTenantId(),u=await _o(),c=await u.get(i);return o.addTags({tenantId:i,foundInCache:!!c}),c?(o.addTags({foundInCache:!0,refreshedAt:c.refreshedAt,features:c.features,plan:c.plan,quotas:c.quotas}),c):(c=await Oa.default.trace("populateLicense",async()=>await r(i)),o.addTags({populatedLicense:!!c}),c||(c=Oa.default.trace("populateFreeLicense",()=>a(e,i)),o.addTags({populatedFreeLicense:!!c})),c.refreshedAt=new Date().toISOString(),o.addTags({refreshedAt:c.refreshedAt,features:c.features,plan:c.plan,quotas:c.quotas,expirySeconds:Pf}),await u.store(i,c,Pf),c)})},"_getCachedLicense");Ht.env.isJest()&&(qf=jest.fn());var Uf=qf,kf=n(async()=>{let e=Ht.tenancy.getTenantId();await(await _o()).delete(e)},"invalidate");async function he(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}n(he,"areFeaturesEnabled");async function La(e,t){if(!await he(e,t))throw new bt.FeatureDisabledWarning(e)}n(La,"checkFeature");async function Ps(e,t){if(!await he(e,t)){let r=e.join(", ");throw new bt.FeatureDisabledWarning(r)}}n(Ps,"checkFeatures");function _e(e){return async(...t)=>(await La(ge.Feature.WORKSPACE_BACKUPS),e(...t))}n(_e,"checkBackups");async function qs(){return he(ge.Feature.WORKSPACE_BACKUPS)}n(qs,"isBackupsEnabled");async function Us(){return he(ge.Feature.BRANDING)}n(Us,"isBrandingEnabled");async function Df(){return he(ge.Feature.ENFORCEABLE_SSO)}n(Df,"isEnforceableSSO");async function T_(){return he(ge.Feature.SYNC_AUTOMATIONS)}n(T_,"isSyncAutomationsEnabled");async function x_(){return he(ge.Feature.TRIGGER_AUTOMATION_RUN)}n(x_,"isTriggerAutomationRunEnabled");async function ks(){return he(ge.Feature.APP_BUILDERS)}n(ks,"isAppBuildersEnabled");async function Pa(){return he(ge.Feature.AUDIT_LOGS)}n(Pa,"isAuditLogsEnabled");async function Ds(){return he(ge.Feature.USER_GROUPS)}n(Ds,"isUserGroupsEnabled");function R_(){return he(ge.Feature.PWA)}n(R_,"isPWAEnabled");function E_(){return he(ge.Feature.RECAPTCHA)}n(E_,"isRecaptchaEnabled");var __=n(()=>he(ge.Feature.PKCE_OIDC),"isPkceOidcEnabled");async function C_(){return he(ge.Feature.TRANSLATIONS)}n(C_,"isTranslationsEnabled");async function At(){return he(ge.Feature.EXPANDED_PUBLIC_API)}n(At,"isExpandedPublicApiEnabled");async function O_(e){if(bt.env.ENABLE_SSO_MAINTENANCE_MODE||!await Df())return!1;let r;return e?.config?r=e.config:r=await bt.configs.getSettingsConfig(),!!r.isSSOEnforced}n(O_,"isSSOEnforced");var Ms=n(async()=>{let e=ge.Feature.SCIM,t=await he(e),r=await bt.configs.getSCIMConfig();if(!t||!r?.enabled)throw new bt.FeatureDisabledWarning(e);return!0},"checkSCIM");async function L_(){return he(ge.Feature.VIEW_PERMISSIONS)}n(L_,"isViewPermissionEnabled");async function P_(){return he(ge.Feature.VIEW_READONLY_COLUMNS)}n(P_,"isViewReadonlyColumnsEnabled");var q_={faviconUrl:void 0,faviconUrlEtag:void 0,emailBrandingEnabled:!0,platformTitle:void 0,loginHeading:void 0,loginButton:void 0,metaDescription:void 0,metaImageUrl:void 0,metaTitle:void 0};async function U_(e){return await Us()?{faviconUrl:e.faviconUrl,faviconUrlEtag:e.faviconUrlEtag,emailBrandingEnabled:e.emailBrandingEnabled,platformTitle:e.platformTitle,loginHeading:e.loginHeading,loginButton:e.loginButton,metaDescription:e.metaDescription,metaImageUrl:e.metaImageUrl,metaTitle:e.metaTitle}:q_}n(U_,"getBrandingConfig");var Ns={};_(Ns,{enrichAIConfig:()=>Bs});var Mf=require("@budibase/backend-core");var k_="budibase_ai";async function Bs(e){if(Mf.env.SELF_HOSTED)return e;for(let t of Object.values(e.config))if(t.provider==="BudibaseAI")return e;return e.config[k_]={provider:"BudibaseAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-5-mini",name:"Budibase AI"},e}n(Bs,"enrichAIConfig");var dt={};_(dt,{addAction:()=>G_,addApp:()=>F_,addAutomation:()=>H_,addGroup:()=>Fs,addPlugin:()=>$s,addRow:()=>$_,addRows:()=>Q_,addUsers:()=>Da,bustCache:()=>Uo,decrement:()=>It,decrementMany:()=>Ln,getCurrentUsageValues:()=>lc,getLicensedQuota:()=>Nf,getQuotaUsage:()=>Gt,increment:()=>Me,incrementBudibaseAICredits:()=>Ba,incrementMany:()=>Vt,removeApp:()=>W_,removeGroup:()=>Ws,removePlugin:()=>Qs,removeRow:()=>j_,removeRows:()=>K_,removeUsers:()=>Rr,set:()=>Gs,setAllUsage:()=>Do,setAppUsageValue:()=>ko,setUsage:()=>uc,setUsagePerApp:()=>cc,updatePluginCount:()=>Ks,updateUsage:()=>vr,usageLimitIsExceeded:()=>N_,utils:()=>Fr});var Ua=require("@budibase/types");var tt=require("@budibase/backend-core"),de=require("@budibase/types"),Yt=require("dd-trace");var Me=n(async(e,t,r)=>await Yt.tracer.trace("quotas.increment",async a=>(a.addTags({name:e,type:t}),await Bf({change:1,name:e,type:t,opts:r}))),"increment"),Vt=n(e=>Yt.tracer.trace("quotas.incrementMany",async()=>Bf(e)),"incrementMany"),Bf=n(async e=>await Yt.tracer.trace("quotas.tryIncrement",async t=>{let r=Array.isArray(e)?e:[e];t.addTags({numActions:r.length}),await vr(r.map(o=>({usageChange:o.change,name:o.name,type:o.type,opts:{dryRun:!0,suppressErrorLog:o.opts?.suppressErrorLog,id:o.opts?.id}})));let a=[];for(let o of r)await Yt.tracer.trace("quotas.incrementMany.fn",async s=>{s.addTags({actionName:o.name,actionType:o.type,actionChange:o.change});let i=o.opts?.fn;i&&a.push(await i())});return await vr(r.map(o=>({usageChange:o.change,name:o.name,type:o.type,opts:{dryRun:!1,valueFn:o.opts?.valueFn,suppressErrorLog:o.opts?.suppressErrorLog,id:o.opts?.id}}))),a[0]}),"tryIncrement"),It=n((e,t,r={})=>vr({usageChange:-1,name:e,type:t,opts:r}),"decrement"),Ln=n(e=>{let t=Array.isArray(e)?e:[e];return vr(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},"decrementMany"),Gs=n(async(e,t,r)=>ze.setUsage(r,e,t),"set"),D_=n((e,t,r)=>{if(e==de.QuotaUsageType.STATIC){let a=r.usageQuota.triggers;return a?a[t]||{}:{}}else{let a=ze.utils.getCurrentMonthString(),o=r.monthly[a].triggers;return o?o[t]||{}:{}}},"getExistingTriggers"),M_=n(async(e,t,r,a)=>{try{await tt.locks.doWithLock({type:de.LockType.TRY_ONCE,name:de.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let o={percentage:r,name:t.name};a&&(o.resetDate=a),await Ot.triggerQuota(o)})}catch(o){tt.logging.logAlert("Error triggering quota",o)}},"triggerQuota"),B_=n(async(e,t,r,a)=>{let o=await Gt(),s=e===de.QuotaUsageType.MONTHLY?o.quotaReset:void 0,i=await D_(e,t,o),u=a.triggers,c=r/a.value*100;c>100&&(c=100);for(let[d,m]of u.entries())if(c>=m&&a.value!==yt.UNLIMITED){if(!i[m]){i[m]=new Date().toISOString();let g=u[d+1]||100;(!(c>=g)||c===m)&&await M_(t,a,c,s)}}else i[m]=void 0;return i},"checkTriggers"),vr=n(async e=>{await Yt.tracer.trace("quotas.updateUsage",async t=>{let r=tt.tenancy.getTenantId(),a=Array.isArray(e)?e:[e];t.addTags({numActions:a.length,tenantId:r});let o,s,i=[],u={},c={},d={},m={};for(let g of a)await Yt.tracer.trace("quotas.updateUsage.action",async T=>{T.addTags({actionName:g.name,actionType:g.type,actionUsageChange:g.usageChange});try{o=tt.context.getWorkspaceId()}catch{}if(de.APP_QUOTA_NAMES.includes(g.name)&&!o)throw new Error("App context required for quota update");try{s=await Nf(de.QuotaType.USAGE,g.name,g.type),i.push(s);let{total:D,app:k,breakdown:C}=await ze.getCurrentUsageValues(g.type,g.name,g.opts?.id);D+=g.usageChange,k!=null&&(k+=g.usageChange),C!=null&&(C+=g.usageChange);let W={};if(g.opts?.dryRun||(W=await B_(g.type,g.name,D,s),m={...m,[g.name]:W}),s.value!==yt.UNLIMITED&&D>s.value&&g.usageChange>0)throw new tt.UsageLimitWarning(`${g.name}`);if(D=Math.max(0,D),k&&(k=Math.max(0,k)),C&&(C=Math.max(0,C),d={...d,[g.name]:C}),!g.opts?.dryRun){let Ae=g.opts?.valueFn;Ae&&(D=await Ae(),k=D),u={...u,[g.name]:D},c={...c,[g.name]:k}}}catch(D){throw g.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${g.name}`,D),D}});let y=a.filter(g=>!g.opts?.dryRun).map(g=>({name:g.name,type:g.type,values:{total:u[g.name],app:c[g.name],breakdown:d[g.name],triggers:m[g.name]},opts:{...g.opts,tenantId:r}}));y.length>0&&await ze.setAllUsage(y)})},"updateUsage"),Nf=n(async(e,t,r)=>{let a=await Xe.getCachedLicense();if(!a){let o=tt.tenancy.getTenantId();throw new Error("License not found for tenant id "+o)}if(r&&(0,de.isStaticQuota)(e,r,t))return a.quotas[e][r][t];if(r&&(0,de.isMonthlyQuota)(e,r,t))return a.quotas[e][r][t];if((0,de.isConstantQuota)(e,t))return a.quotas[e][t];throw new Error("Invalid quota type")},"getLicensedQuota"),N_=n(async({name:e,type:t,usageChange:r})=>{try{return await vr({usageChange:r,name:e,type:t,opts:{dryRun:!0}}),!1}catch(a){if(a.code===de.APIWarningCode.USAGE_LIMIT_EXCEEDED)return!0;throw a}},"usageLimitIsExceeded");var G_=n(async e=>Me(Ua.MonthlyQuotaName.ACTIONS,Ua.QuotaUsageType.MONTHLY,{fn:e}),"addAction");var Gf=require("@budibase/backend-core"),Tr=require("@budibase/types");var Ff=n(async()=>{let e=await Gf.db.getAllWorkspaces({dev:!0});return e?e.length:0},"getDevAppsCount"),F_=n(async(e,{appId:t}={})=>Me(Tr.StaticQuotaName.WORKSPACES,Tr.QuotaUsageType.STATIC,{fn:e,valueFn:Ff,id:t}),"addApp"),W_=n(async({appId:e}={})=>It(Tr.StaticQuotaName.WORKSPACES,Tr.QuotaUsageType.STATIC,{valueFn:Ff,id:e}),"removeApp");var pt=require("@budibase/types");var $_=n(async(e,{tableId:t}={})=>Me(pt.StaticQuotaName.ROWS,pt.QuotaUsageType.STATIC,{fn:e,id:t}),"addRow"),j_=n(async({tableId:e}={})=>It(pt.StaticQuotaName.ROWS,pt.QuotaUsageType.STATIC,{id:e}),"removeRow"),Q_=n(async(e,t,{tableId:r}={})=>Vt({change:e,name:pt.StaticQuotaName.ROWS,type:pt.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),"addRows"),K_=n(async(e,{tableId:t}={})=>Ln({change:e,name:pt.StaticQuotaName.ROWS,type:pt.QuotaUsageType.STATIC,opts:{id:t}}),"removeRows");var ka=require("@budibase/types");var H_=n(async(e,{automationId:t}={})=>Me(ka.MonthlyQuotaName.AUTOMATIONS,ka.QuotaUsageType.MONTHLY,{fn:e,id:t}),"addAutomation");var xr=require("@budibase/types");var Fs=n(async e=>Me(xr.StaticQuotaName.USER_GROUPS,xr.QuotaUsageType.STATIC,{fn:e}),"addGroup"),Ws=n(async()=>It(xr.StaticQuotaName.USER_GROUPS,xr.QuotaUsageType.STATIC),"removeGroup");var Ut=require("@budibase/types");var $s=n(async e=>Me(Ut.StaticQuotaName.PLUGINS,Ut.QuotaUsageType.STATIC,{fn:e}),"addPlugin"),Qs=n(async()=>It(Ut.StaticQuotaName.PLUGINS,Ut.QuotaUsageType.STATIC),"removePlugin"),Ks=n(async e=>Gs(Ut.StaticQuotaName.PLUGINS,Ut.QuotaUsageType.STATIC,e),"updatePluginCount");var lt=require("@budibase/types"),Pn=require("@budibase/backend-core");var Da=n(async(e,t,r)=>{let a=[{change:e,name:lt.StaticQuotaName.USERS,type:lt.QuotaUsageType.STATIC,opts:{fn:r,valueFn:Pn.users.getUserCount}}];t>0&&a.push({change:t,name:lt.StaticQuotaName.CREATORS,type:lt.QuotaUsageType.STATIC,opts:{valueFn:Pn.users.getCreatorCount}});let o=await Vt(a);return await ir(),o},"addUsers"),Rr=n(async(e,t)=>{let r=[{change:e,name:lt.StaticQuotaName.USERS,type:lt.QuotaUsageType.STATIC,opts:{valueFn:Pn.users.getUserCount}}];t>0&&r.push({change:t,name:lt.StaticQuotaName.CREATORS,type:lt.QuotaUsageType.STATIC,opts:{valueFn:Pn.users.getCreatorCount}}),await Ln(r),await ir()},"removeUsers");var Ma=require("@budibase/types");var Ba=n(async e=>Vt({change:e,name:Ma.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:Ma.QuotaUsageType.MONTHLY}),"incrementBudibaseAICredits");var Wa={};_(Wa,{db:()=>Be});var Js=require("@budibase/backend-core");var re={};_(re,{addUsers:()=>Fa,adjustGroupCreatorsQuotas:()=>J_,cleanupApp:()=>z_,enrichUserRolesFromGroups:()=>V_,fetch:()=>qn,get:()=>Er,getBulk:()=>Hf,getGroupBuilderAppIds:()=>Kf,getGroupRoleId:()=>Y_,remove:()=>Ys,removeUsers:()=>Vs,save:()=>Ga,updateGroupApps:()=>zs});var M=require("@budibase/backend-core");var Wf=require("@budibase/backend-core");var Na=class extends Wf.HTTPError{static{n(this,"GroupNameUnavailableError")}constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function Hs(e,t){try{let r=[];for(let u of e)if(u.roles){let c=u.roles[M.db.getProdWorkspaceID(t)];c&&r.push(c)}let a=await Promise.all(r.map(async u=>({[u]:await M.roles.roleToNumber(u)}))),o,s,i={};a.forEach(u=>{let[c,d]=Object.entries(u)[0];i[c]={roleId:c,roleNum:d}});for(let{roleId:u,roleNum:c}of Object.values(i))(s===void 0||c>s)&&(s=c,o=u);return o}catch(r){throw M.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}n(Hs,"findHighestRole");async function Qf(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await z.getBulk(e,{enriched:!1}),t}n(Qf,"groupList");async function Kf(e,t){if(!e.userGroups)return[];let r=await Qf(e.userGroups,t?.groups),a=t?.appId?M.db.getProdWorkspaceID(t?.appId):null,o=[];for(let s of r){let i=s.builder?.apps;a&&i?.includes(a)?o.push(a):a||(o=o.concat(i||[]))}return[...new Set(o)]}n(Kf,"getGroupBuilderAppIds");async function Y_(e,t,r){if(!e.userGroups)return null;let a=await Qf(e.userGroups,r?.groups),o=M.db.getProdWorkspaceID(t);return e.roles?.[o]?e.roles[o]:(a=a.filter(u=>u?.roles?Object.keys(u.roles).includes(o):!1),M.context.getCurrentContext()?.appId===t?Hs(a,t):await M.context.doInWorkspaceContext(t,async()=>Hs(a,t)))}n(Y_,"getGroupRoleId");async function V_(e){if(!e||!e.userGroups)return e;let t=await Hf(e.userGroups,{enriched:!1}),r=[];for(let o of t)o?.roles&&(r=r.concat(Object.keys(o.roles)));r=[...new Set(r)];for(let o of r)await M.context.doInWorkspaceContext(o,async()=>{if(e.roles[o])return;let s=await Hs(t,o);s&&(e.roles[o]=s)});let a=await Kf(e,{groups:t});if(a.length&&!e.builder?.global){let o=e.builder?.apps||[];e.builder={...e.builder,apps:o.concat(a)}}return e}n(V_,"enrichUserRolesFromGroups");async function qn(){return await z.fetch()}n(qn,"fetch");async function Er(e){return await z.get(e)}n(Er,"get");async function Hf(e,t={enriched:!0}){return z.getBulk(e,t)}n(Hf,"getBulk");async function $f(e){if(await z.getByName(e))throw new Na(e)}n($f,"guardNameAvailability");async function jf(e){let t=await z.getGroupUsers(e._id);if(!t.length)return 0;let a=await M.tenancy.getGlobalDB().getMultiple(t.map(s=>s._id));return(await M.userUtils.creatorsInList(a)).filter(s=>s).length}n(jf,"getCreatorsCountInGroup");async function Ga(e){let t=[],r=!e._id,a=0;if(!e._id)e._id=z.generateUserGroupID(),await $f(e.name),t.push(M.events.group.created(e));else{let u=await z.get(e._id);if(u.name!==e.name&&await $f(e.name),t.push(M.events.group.updated(e)),JSON.stringify(u.roles)!==JSON.stringify(e.roles)){let c=u.users?.length||0,d=0;c>0&&(d=await jf(u)),Object.values(e.roles).includes("CREATOR")?a=c-d:a=-c,t.push(M.events.group.permissionsEdited(e))}}await Promise.all(t);let{users:o,...s}=e,i=n(()=>z.save(s),"saveGroup");if(r)return await Fs(i);{let u=await i();if(a>0)await Da(0,a);else if(a<0){let c=await jf(e),d=Math.abs(a)-c;d>0&&await Rr(0,d)}return u}}n(Ga,"save");async function Ys(e,t){let r;try{r=await z.get(e)}catch{throw new Error("Group not found")}let a=Object.values(r.roles||{}).includes("CREATOR"),o=n(()=>{},"recalculateCreatorsQuotasFn");if(a){let i=M.tenancy.getGlobalDB(),u=await z.getGroupUsers(e),d=(await Promise.all(u.map(T=>i.get(T._id)))).map(T=>({...T,userGroups:T.userGroups.filter(B=>B!==e)})),y=(await M.userUtils.creatorsInList(d)).filter(T=>T).length,g=u.length-y;g&&(o=n(()=>Rr(0,g),"recalculateCreatorsQuotasFn"))}let s=await z.destroy(e,t);return await M.events.group.deleted(r),await Ws(),await o(),s}n(Ys,"remove");async function Fa(e,t){let r=await z.get(e),a=await M.users.bulkGetGlobalUsersById(t),o=[];for(let c of a)c.userGroups||(c.userGroups=[]),c.userGroups.includes(e)||o.push(c);if(!o.length)return o;let s=o.map(c=>({...c,userGroups:[...c?.userGroups||[],e]}));if(await M.users.bulkUpdateGlobalUsers(s),Object.values(r.roles||{}).includes("CREATOR")){let d=(await M.userUtils.creatorsInList(o)).filter(y=>y).length,m=o.length-d;m&&await Da(0,m)}let u=[];for(let c of t)u.push(M.cache.user.invalidateUser(c));return await Promise.all(u),await M.events.group.usersAdded(s.length,r,t),s}n(Fa,"addUsers");async function Vs(e,t){let r=await z.get(e),a=await M.users.bulkGetGlobalUsersById(t),o=[];for(let u of a){if(!u.userGroups||!u.userGroups.includes(e))continue;let c=u.userGroups.indexOf(e);u.userGroups.splice(c,1),o.push(u)}if(await M.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes("CREATOR")){let c=(await M.userUtils.creatorsInList(o)).filter(m=>m).length,d=o.length-c;d&&await Rr(0,d)}let i=[];for(let u of t)i.push(M.cache.user.invalidateUser(u));return await Promise.all(i),o.length&&await M.events.group.usersDeleted(o.length,r,t),o}n(Vs,"removeUsers");async function zs(e,t){let r=await Er(e);if(r.roles||(r.roles={}),t.appsToAdd)for(let a of t.appsToAdd)r.roles[a.appId]=a.roleId;if(t.appsToRemove)for(let a of t.appsToRemove)delete r.roles[a.appId];if(r.builder={apps:Object.entries(r.roles).filter(([a,o])=>o==="CREATOR").map(([a])=>a)},r.builder.apps.length&&!ks())throw new M.HTTPError("Feature not enabled, please check license",400);return await Ga(r)}n(zs,"updateGroupApps");async function z_(e){let t=await qn(),r=[];for(let a of t)!a.roles||!a.roles[e]||(delete a.roles[e],r.push(a));return await z.bulkSave(r)}n(z_,"cleanupApp");async function J_(){if(!await Ds()){let e=M.tenancy.getGlobalDB(),r=(await qn()||[]).filter(a=>Object.values(a?.roles||{}).includes("CREATOR"));for(let a of r){let o=await z.getGroupUsers(a._id),i=(await Promise.all(o.map(m=>e.get(m._id)))).map(m=>({...m,userGroups:m.userGroups.filter(y=>y!==a._id)})),c=(await M.userUtils.creatorsInList(i)).filter(m=>m).length,d=o.length-c;await z.save({...a,roles:{}}),d&&await Rr(0,d)}}}n(J_,"adjustGroupCreatorsQuotas");Js.users.UserDB.init(dt,re,et);var Be=Js.users.UserDB;var Ka={};_(Ka,{logs:()=>ai});var ai={};_(ai,{logSearch:()=>sC,oldestLogDate:()=>em,storeLog:()=>iC});var Qa=require("@budibase/backend-core"),Zf=require("@budibase/types");var ye=require("@budibase/backend-core"),ja=require("@budibase/types");var Yf=require("@budibase/backend-core");async function Vf(e,t){let r,a=5,o=!1,s,i=!0;for(;a>0;a--)try{i?s=await e():s=await exports.randomDelay(e),o=!0;break}catch(u){r=u}return o||Yf.logging.logWarn(`Failed to backoff: ${t}`,r),s}n(Vf,"backOff");var{SEPARATOR:wt,UNICODE_MAX:X_,DocumentType:zf,AutomationViewMode:Xs,ViewName:Z_,getQueryIndex:eC}=ye.db,tC=new Date(0).toISOString(),rC=100,$a=10,Zs=n(async()=>ua(ja.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS),"oldestLogDate");function Jf(e,t,{status:r,automationId:a}={},o={}){let s=a?`${a}${wt}`:"",i=r?`${r}${wt}`:"",u;return r&&a?u=`${Xs.ALL}${wt}${i}${s}`:r?u=`${Xs.STATUS}${wt}${i}`:a?u=`${Xs.AUTOMATION}${wt}${s}`:u=`${zf.AUTOMATION_LOG}${wt}`,{...o,descending:!0,startkey:`${u}${t}${X_}`,endkey:`${u}${e}`}}n(Jf,"getAutomationLogParams");function nC(e,t,r){return`${zf.AUTOMATION_LOG}${wt}${e}${wt}${r}${wt}${t}`}n(nC,"generateAutomationLogID");async function ei(e,t,r={docs:!0}){let a=ye.context.getProdWorkspaceDB();await a.exists()||(a=ye.context.getDevWorkspaceDB());let o={status:r.status},s=r?.limit?r.limit:r?.paginate?$a+1:void 0,i=Jf(e,t,o,{include_docs:r.docs,limit:s});r?.page&&(i.startkey=r.page);let u=await a.allDocs(i),c=sn(u,{paginate:r?.paginate,pageSize:$a});return{...c,totalLogs:c.totalRows}}n(ei,"getAllLogs");async function ti(e,t,r={}){let a=ye.context.getProdWorkspaceDB();await a.exists()||(a=ye.context.getDevWorkspaceDB());let o;try{let i={automationId:r?.automationId,status:r?.status},u=Jf(e,t,i,{include_docs:!0,limit:$a+1});r?.page&&(u.startkey=r.page),o=await a.query(eC(Z_.AUTOMATION_LOGS),u)}catch(i){if(i!=null&&(i.name==="not_found"||i.error==="not_found"))return await Rc(),ti(e,t,r);throw i}let s=sn(o,{paginate:!0,pageSize:$a});return{...s,totalLogs:s.totalRows/3}}n(ti,"getLogsByView");async function Xf(e,t){let r=ye.context.getProdWorkspaceDB(),a=e._id,o=e.name,s=new Date().toISOString(),i=nC(s,t.status,a),u={...t,automationId:a,status:t.status,automationName:o,createdAt:s,_id:i};return await r.put(u),i}n(Xf,"writeLog");async function ri(e,{clearing:t}={clearing:!1}){let r=ye.context.getProdWorkspaceDB();await Vf(async()=>{let a=await r.get(ye.db.DocumentType.WORKSPACE_METADATA);for(let o of e){let s=o.split(ye.db.SEPARATOR),i=`${s[s.length-3]}${ye.db.SEPARATOR}${s[s.length-2]}`,u={};a.automationErrors&&(u=a.automationErrors),Array.isArray(u[i])||(u[i]=[]);let c=u[i].indexOf(o);t&&c!==-1?u[i].splice(c,1):u[i].push(o),u[i].length===0&&delete u[i],a.automationErrors=u}await r.put(a),await ye.cache.workspace.invalidateWorkspaceMetadata(a.appId,a)},"Failed to update app metadata with automation log error")}n(ri,"updateAppMetadataWithErrors");async function aC(){let e=await Zs();try{return await ei(tC,e,{docs:!1,paginate:!1,limit:rC})}catch{return{data:[],hasNextPage:!1,totalLogs:0}}}n(aC,"getExpiredLogs");async function ni(){let e=ye.context.getProdWorkspaceDB();try{let t=await aC();if(!t.data||t.data.length===0)return;let r=t.data.map(o=>({_id:o.id,_rev:o.value.rev,_deleted:!0})),a=t.data.filter(o=>{let s=o.id.split(ye.db.SEPARATOR);return s[s.length-1]===ja.AutomationStatus.ERROR}).map(o=>o.id);await e.bulkDocs(r),a.length&&await ri(a,{clearing:!0})}catch(t){ye.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}n(ni,"clearOldHistory");var em=Zs;async function oC(e,t,r,a){let o,s=new Date().toISOString(),i=await em();return(!e||e<i)&&(e=i),r||t?o=await ti(e,s,{automationId:r,status:t,page:a}):o=await ei(e,s,{status:t,page:a,docs:!0,paginate:!0}),o}n(oC,"getLogs");async function sC(e){return await ni(),await oC(e.startDate,e.status,e.automationId,e.page)}n(sC,"logSearch");async function iC(e,t){if(!Qa.db.isProdWorkspaceID(Qa.context.getWorkspaceId()))return;let r=await Xf(e,t);t.status===Zf.AutomationStatus.ERROR&&await ri([r]),await ni()}n(iC,"storeLog");var Ha={};_(Ha,{checkPluginQuotas:()=>pC,deletePlugin:()=>cC,storePlugin:()=>uC});var am=require("@budibase/types"),fe=require("@budibase/backend-core");var tm=G(require("fs")),rm=require("path");function nm(e,t){return tm.default.readFileSync((0,rm.join)(e,t),"utf8")}n(nm,"loadJSFile");async function uC(metadata,directory,source,origin){let db=fe.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=fe.objectStore.getPluginS3Dir(name),files=await fe.objectStore.uploadDirectory(fe.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===am.PluginType.DATASOURCE){let js=nm(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=fe.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}),origin&&origin.source==="github"&&(doc.origin=origin);let write=n(async()=>{let e=await db.put(doc);return await fe.events.plugin.imported(doc),{...doc,_rev:e.rev}},"write");return rev?await write():await $s(write)}n(uC,"storePlugin");async function cC(e){let t=fe.tenancy.getGlobalDB();try{let r=await t.get(e),a=fe.objectStore.getPluginS3Dir(r.name);await fe.objectStore.deleteFolder(fe.objectStore.ObjectStoreBuckets.PLUGINS,a),await t.remove(e,r._rev),await fe.events.plugin.deleted(r),await Qs()}catch(r){let a=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${a}`)}}n(cC,"deletePlugin");async function pC(){let e=fe.tenancy.getGlobalDB();try{let r=(await e.allDocs(fe.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await Ks(r)}catch(t){fe.logging.logAlert("Unable to retrieve plugins for quota check",t)}}n(pC,"checkPluginQuotas");var ft={};_(ft,{fetch:()=>dC,fetchValues:()=>fC,isEncryptionKeyAvailable:()=>lC,isValid:()=>im,remove:()=>gC,update:()=>mC});var om=require("@budibase/backend-core"),Un=require("@budibase/types");function lC(){return!!om.env.ENCRYPTION_KEY}n(lC,"isEncryptionKeyAvailable");async function dC(){let e=await $t.get();return Object.keys(e.variables)}n(dC,"fetch");async function fC(e){let r=(await $t.get()).variables,a={};for(let[o,s]of Object.entries(r))switch(e){case Un.Environment.DEVELOPMENT:a[o]=s.development;break;case Un.Environment.PRODUCTION:default:a[o]=s.production;break}return a}n(fC,"fetchValues");async function sm(e){if(!(await ut.cache.getCachedLicense()).features.includes(Un.Feature.ENVIRONMENT_VARIABLES))throw new Error("User does not have access to environment variables feature.");let r=await $t.get();r.variables=e(r.variables),await $t.update(r)}n(sm,"changeValues");async function mC(e,t){if(im(e))await sm(a=>(a[e]=t,a));else throw new Error("Variable name has characters that are not allowed")}n(mC,"update");async function gC(e){await sm(t=>(delete t[e],t))}n(gC,"remove");function im(e){return/^[a-zA-Z0-9-_]+$/.test(e)}n(im,"isValid");var kt={};_(kt,{definitions:()=>RC,download:()=>xC,fetch:()=>TC,write:()=>SC});var Pe=require("@budibase/backend-core"),Va=require("@budibase/types");var ue=require("@budibase/backend-core"),rt=require("@budibase/types");var um=require("memorystream"),cm=new ue.sql.Sql(rt.SqlClient.SQL_LITE);async function hC(e,t,r){let a={operation:rt.Operation.READ,table:ar.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:rt.SortOrder.DESCENDING,type:rt.SortType.STRING}}},o=cm._query(a);if(Array.isArray(o))throw new Error("Cannot execute multiple queries for audit log search");return{sql:o.sql,bindings:o.bindings}}n(hC,"getAuditLogSqlQuery");function yC(e){return`${ue.DocumentType.AUDIT_LOG}${ue.SEPARATOR}${e}${ue.SEPARATOR}${ue.utils.newid()}`}n(yC,"generateAuditLogID");async function pm(e){e._id||(e._id=yC(e.timestamp)),e.type||(e.type=rt.AUDIT_LOG_TYPE);try{let r=await ue.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){ue.logging.logAlert("Failed to write audit log",t)}}n(pm,"save");async function oi(e,t,r){t||(t=1);let a=ue.context.getAuditLogsDB();try{let o=9+1,s=await hC(e,t,o),i=ar.searchTable(),u=cm.convertJsonStringColumns(i,await a.sql(s.sql,s.bindings)),c;u.length>o&&(c=u.pop());let d={rows:u,hasNextPage:!!c};return d.hasNextPage&&(d.bookmark=t+1),d}catch(o){if(o.status===404&&!r?.isRetry)return await bC(),await dc(),await oi(e,t,{isRetry:!0});throw o}}n(oi,"searchSQL");async function bC(){let e=ue.context.getAuditLogsDB(),r=(await e.allDocs(ue.db.getDocParams(ue.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(a=>a.doc).filter(a=>a&&!a.type).map(a=>({...a,type:rt.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}n(bC,"migrate");function lm(e){let t=ue.context.getAuditLogsDB(),r=new um,a=t.dump(r,{filter:s=>{let i=s;if(!i._id?.startsWith(ue.DocumentType.AUDIT_LOG))return!1;let u=!0,c=n((d,m)=>{!d||d.length===0||(u=!!(u&&m&&d.includes(m)))},"matcher");if(c(e.userIds,i.userId),c(e.appIds,i.appId),c(e.events,i.event),(e.startDate||e.endDate)&&(u=u&&i.timestamp>=e.startDate&&i.timestamp<=e.endDate),e.fullSearch){let d=JSON.stringify(s);u=u&&d.includes(e.fullSearch)}return u}}),o=new um;return r.on("data",s=>{let i=JSON.parse(Buffer.from(s).toString());if(Array.isArray(i.docs)){let u="";for(let c of i.docs)u+=JSON.stringify(c)+`
|
|
38
|
-
`;o.write(u)}}),r.on("end",()=>{o.end()}),{promise:a,stream:o}}n(lm,"dump");var kn=require("@budibase/backend-core"),Dn=require("@budibase/string-templates"),Ya=require("@budibase/types");var IC=kn.constants.MIN_VALID_DATE.toISOString(),wC=kn.constants.MAX_VALID_DATE.toISOString();function si(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||IC,e.endDate=e.endDate||wC),e}n(si,"fillDates");async function dm(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(a=>kn.db.getProdWorkspaceID(a)));let t={};function r(a,o){o?.length&&(t.oneOf={...t.oneOf,[a]:o})}return n(r,"addStringParams"),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=si(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}n(dm,"getSearchFilters");function ii(e,t,r){let a={_id:e,status:Ya.AuditLogResourceStatus.DELETED};switch(t){case"app":a.name=r?.appName;break;case"user":a.email=r?.email;break}return a}n(ii,"deleted");function ui(e){let t=(0,Dn.findHBSBlocks)(e);for(let r of t){let a=` "${r}"`;e=e.replace(e.includes(a)?a:` ${r}`,""),e=(0,Dn.processStringSync)(e,{})}return e}n(ui,"removeTemplateStrings");function fm(e,t){let r=Ya.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let a=(0,Dn.processStringSync)(r,t);return a.includes('""')&&(a=ui(r)),a}n(fm,"getEventFriendlyName");async function SC(e,t,r){if(!await Pa()||!Pe.utils.isAudited(e))return;let a=fm(e,t),o=new Date;r?.timestamp&&(o=new Date(r.timestamp));let s={timestamp:o.toISOString(),event:e,name:a,userId:r?.userId||Va.AuditLogSystemUser,metadata:{...t,...r?.hostInfo}},i={};try{if(r?.appId){s.appId=Pe.db.getProdWorkspaceID(r.appId);let u=await Pe.cache.workspace.getWorkspaceMetadata(r.appId);"name"in u&&(i.appName=u.name)}if(r?.userId){let u=await Pe.users.getById(r?.userId);i.email=u.email}}catch(u){Pe.logging.logAlert("Failed to retrieve fallback information for audit log",u)}return s.fallback=i,await pm(s)}n(SC,"write");async function vC(e){let t=e.map(u=>u.userId),a=e.filter(u=>u.appId).map(u=>Pe.db.getDevWorkspaceID(u.appId)),o=await Pe.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),s=await Pe.db.getWorkspacesByIDs([...new Set(a)]),i=[];for(let u of e){let c=o.find(y=>y?._id===u.userId),d=s.find(y=>Pe.db.isSameWorkspaceID(y?.appId,u.appId)),m={event:u.event,timestamp:u.timestamp,name:u.name,metadata:u.metadata,user:c||ii(u.userId,"user",u.fallback)};u.appId&&(m.app=d||ii(u.appId,"app",u.fallback)),i.push(m)}return i}n(vC,"enrich");async function TC(e){if(!await Pa())throw new Error("Audit logs not available - license required.");let t=await dm(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await oi(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await vC(r.rows)}}n(TC,"fetch");function xC(e){return e=si(e),lm(e)}n(xC,"download");function RC(){let e=Object.entries(Va.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=ui(r[1]);return t}n(RC,"definitions");var za={};_(za,{applications:()=>di,roles:()=>pi,users:()=>ci});var ci={};_(ci,{roleCheck:()=>_C});function EC(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}n(EC,"removeRoles");async function _C(e,t){return await At()||EC(e,t),e}n(_C,"roleCheck");var pi={};_(pi,{assign:()=>CC,unAssign:()=>OC});var Mn=require("@budibase/backend-core");async function CC(e,t){if(!await At())throw new Error("Unable to assign roles - license required.");let r=await Be.bulkGet(e);for(let a of r){if(t.role&&t.role.roleId){let o=Mn.db.getProdWorkspaceID(t.role.appId);a.roles[o]=t.role.roleId}if(t.appBuilder){let o=Mn.db.getProdWorkspaceID(t.appBuilder.appId),s=a.builder?.apps||[];a.builder={apps:s.concat([o])}}t.builder&&(a.builder={global:!0}),t.admin&&(a.admin={global:!0}),a.roles}await Be.bulkUpdate(r)}n(CC,"assign");async function OC(e,t){if(!await At())throw new Error("Unable to un-assign roles - license required.");let r=await Be.bulkGet(e);for(let a of r){if(t.role){let o=Mn.db.getProdWorkspaceID(t.role?.appId);a.roles[o]===t.role.roleId&&delete a.roles[o]}if(t.appBuilder&&a.builder?.apps){let o=Mn.db.getProdWorkspaceID(t.appBuilder.appId);a.builder.apps=a.builder.apps.filter(s=>s!==o)}t.builder&&a.builder&&delete a.builder,t.admin&&a.admin&&delete a.admin}await Be.bulkUpdate(r)}n(OC,"unAssign");var di={};_(di,{buildExportFn:()=>qC,buildImportFn:()=>PC});var li=require("@budibase/backend-core");var LC=n(e=>{if(e){if(e.appExport)return e.appExport;if(e.file)return e.file}},"ensureAppExportFile");function PC(e){return async(t,r)=>{await At()||t.throw(403,"Endpoint unavailable, license required."),LC(t.request.files)||t.throw(400,"Must provide app export file for import."),await li.context.doInWorkspaceContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}n(PC,"buildImportFn");function qC(e){return async(t,r)=>{await At()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:a,excludeRows:o}=t.request.body;await li.context.doInWorkspaceContext(t.params.appId,async()=>{t.request.body={encryptPassword:a,excludeRows:o},t.query.appId=t.params.appId,await e(t),await r()})}}n(qC,"buildExportFn");var we=require("@budibase/backend-core"),Ie=require("@budibase/types"),hm=G(require("fs")),ym=require("path");var fi=require("@budibase/backend-core");var mm;function gm(){mm=new fi.queue.BudibaseQueue(fi.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}n(gm,"init");function zt(){return mm}n(zt,"getBackupQueue");async function mi(e,t={}){return Qe.storeAppBackupMetadata(e,t)}n(mi,"storeAppBackupMetadata");function bm(e){let t=new Date().toISOString();switch(e){case Ie.BackupStatus.COMPLETE:case Ie.BackupStatus.FAILED:return{timestamp:t,finishedAt:t};case Ie.BackupStatus.STARTED:return{timestamp:t,startedAt:t};case Ie.BackupStatus.PENDING:return{timestamp:t,createdAt:t}}}n(bm,"getTimestamps");async function UC(e,t,r,a){let o=await Ja(e);return await Qe.storeAppBackupMetadata({...o,...bm(t),contents:r,status:t,type:Ie.BackupType.BACKUP},{filename:a,docId:e})}n(UC,"updateBackupStatus");async function kC(e,t,r){let a=await Ja(e);return await Qe.storeAppBackupMetadata({...a,...bm(r),status:r,type:Ie.BackupType.RESTORE,trigger:Ie.BackupTrigger.MANUAL},{docId:e,docRev:t})}n(kC,"updateRestoreStatus");async function Ja(e){return Qe.getAppBackupMetadata(e)}n(Ja,"getAppBackup");async function DC(e,t){return Qe.updateAppBackupMetadata(e,t)}n(DC,"updateAppBackup");async function Am(e){let t=await Qe.getAppBackupMetadata(e);return t.filename&&await we.objectStore.deleteFile(we.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),Qe.deleteAppBackupMetadata(e)}n(Am,"deleteAppBackup");async function MC(e){let t=[];for(let r of e)try{await Am(r),t.push({backupId:r,success:!0})}catch(a){t.push({backupId:r,success:!1,error:a instanceof Error?a.message:"Unknown error"})}return t}n(MC,"deleteAppBackups");async function BC(e,t){return Qe.fetchAppBackups(e,t)}n(BC,"fetchAppBackups");async function Im(e){let t=await Qe.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let{stream:r}=await we.objectStore.getReadStream(we.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}n(Im,"getBackupDownloadStream");async function NC(e){let{stream:t}=await Im(e),r=(0,ym.join)(we.objectStore.budibaseTempDir(),we.utils.newid()),a=hm.default.createWriteStream(r);return new Promise((o,s)=>{t.on("error",s),a.on("error",s),t.pipe(a).on("close",()=>o(r))})}n(NC,"downloadAppBackup");async function GC(e,t,r={}){let a;try{a=await mi({appId:e,trigger:t,timestamp:new Date().toISOString(),status:Ie.BackupStatus.PENDING,type:Ie.BackupType.BACKUP,...r})}catch(o){if(o.status===409)return;throw o}return await zt().add({docId:a.id,docRev:a.rev,appId:e,export:{trigger:t,...r}}),await we.events.backup.appBackupTriggered(e,a.id,Ie.BackupType.BACKUP,t,r?.name),a.id}n(GC,"triggerAppBackup");async function FC(e,t,r,a){let o=await Ja(t),s;try{s=await mi({appId:e,timestamp:new Date().toISOString(),status:Ie.BackupStatus.PENDING,type:Ie.BackupType.RESTORE,createdBy:a})}catch(i){if(i?.status===409)return;throw i}return await zt().add({appId:e,docId:s.id,docRev:s.rev,import:{nameForBackup:r,backupId:t,createdBy:a}}),{restoreId:s.id,metadata:o}}n(FC,"triggerAppRestore");async function WC(e,t,r){let a=we.db.getProdWorkspaceID(e);await we.context.doInWorkspaceContext(a,async()=>{let o=we.context.getProdWorkspaceDB();if(!await o.exists())return;let i=await o.tryGet(Ie.DocumentType.WORKSPACE_METADATA);i&&(i.backupErrors||(i.backupErrors={}),i.backupErrors[t]||(i.backupErrors[t]=[]),i.backupErrors[t].push(r),await o.put(i),await we.cache.workspace.invalidateWorkspaceMetadata(i.appId,i))})}n(WC,"trackBackupError");var $C={isEnabled:qs,triggerAppRestore:_e(FC),triggerAppBackup:_e(GC),getBackupDownloadStream:_e(Im),downloadAppBackup:_e(NC),fetchAppBackups:_e(BC),storeAppBackupMetadata:_e(mi),updateBackupStatus:_e(UC),updateRestoreStatus:_e(kC),getAppBackup:_e(Ja),updateAppBackup:_e(DC),deleteAppBackup:_e(Am),deleteAppBackups:_e(MC),trackBackupError:_e(WC)},He=$C;var hi={};_(hi,{init:()=>gi});var ne=require("@budibase/backend-core"),nt=require("@budibase/types"),_r=G(require("fs"));async function gi(e){zt().process(async t=>{let r=t.data;try{if(r.export)return console.log("Exporting app backup:",r.appId,r.export.trigger),KC(t,e);if(r.import)return console.log("Importing app backup:",r.appId,r.import.backupId),QC(t,e)}catch(a){ne.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,a)}})}n(gi,"init");async function jC(e){await ne.db.getDB(e,{skip_setup:!0}).destroy()}n(jC,"removeExistingApp");async function wm(e,t,r,a){let o=ne.db.getDevWorkspaceID(r),s=ne.db.getProdWorkspaceID(r),i=new Date().toISOString(),u=n(async(c,d)=>{a?.doc?await He.updateBackupStatus(a.doc.id,c,d?.contents,d?.filename):await He.storeAppBackupMetadata({appId:s,timestamp:i,trigger:e,status:c,name:a?.name,type:nt.BackupType.BACKUP,contents:d?.contents,createdBy:a?.createdBy},{filename:d?.filename})},"updateMetadata");try{let c=await a.processing.exportAppFn(o,{tar:!0}),d=await a.processing.statsFn(o),m=`${s}/backup-${i}.tar.gz`,y=ne.objectStore.ObjectStoreBuckets.BACKUPS,g=_r.default.createReadStream(c);await ne.objectStore.streamUpload({bucket:y,filename:m,stream:g,extra:{type:"application/gzip",metadata:{name:a?.name,trigger:e,timestamp:i,appId:s}}}),await u(nt.BackupStatus.COMPLETE,{filename:m,contents:d}),_r.default.existsSync(c)&&_r.default.rmSync(c)}catch(c){ne.logging.logAlert("App backup error",c),await u(nt.BackupStatus.FAILED);let d=a?.doc?.id||`backup-${i}`,m=c instanceof Error?c.message:String(c);await He.trackBackupError(s,d,`Backup export failed: ${m}`)}}n(wm,"runBackup");async function QC(e,t){let r=e.data,a=r.appId,o=r.import.backupId,s=r.import.nameForBackup,i=r.import.createdBy,u=ne.tenancy.getTenantIDFromWorkspaceID(a);return ne.tenancy.doInTenant(u,async()=>{let c=ne.db.getDevWorkspaceID(a),d=`${c}_temp_${Date.now()}`,{rev:m}=await He.updateRestoreStatus(r.docId,r.docRev,nt.BackupStatus.STARTED);await wm(nt.BackupTrigger.RESTORING,u,a,{processing:t,createdBy:i,name:s});let y=await He.downloadAppBackup(o),g=nt.BackupStatus.COMPLETE;try{await t.importAppFn(d,ne.db.getDB(d),{file:{type:"application/gzip",path:y},key:y}),await jC(c),await new ne.db.Replication({source:d,target:c}).replicate()}catch(T){ne.logging.logAlert("App restore error",T),g=nt.BackupStatus.FAILED;let B=T instanceof Error?T.message:String(T);await He.trackBackupError(a,o,`Backup restore failed: ${B}`)}finally{try{await ne.db.getDB(d,{skip_setup:!0}).destroy()}catch{}}await He.updateRestoreStatus(r.docId,m,g),_r.default.existsSync(y)&&_r.default.rmSync(y,{force:!0})})}n(QC,"importProcessor");async function KC(e,t){let r=e.data,a=r.appId,o=r.export.trigger,s=r.export.name,i=ne.tenancy.getTenantIDFromWorkspaceID(a);await ne.tenancy.doInTenant(i,async()=>{try{let{rev:u}=await He.updateBackupStatus(r.docId,nt.BackupStatus.STARTED);return wm(o,i,a,{processing:t,doc:{id:r.docId,rev:u},name:s})}catch(u){ne.logging.logAlert("App backup error",u);let c=u instanceof Error?u.message:String(u);await He.trackBackupError(a,r.docId,`Backup export failed: ${c}`)}})}n(KC,"exportProcessor");var HC=n(async e=>{gm(),await gi(e.processing)},"init"),Ne={...He,processing:hi,init:HC,getBackupQueue:zt};var Sm=n(async e=>{e.backups&&await Ne.init(e.backups)},"init");var Ue={};_(Ue,{create:()=>GB,find:()=>NB,get:()=>BB,remove:()=>WB,update:()=>FB});var Qb=G(pu()),St=require("@budibase/backend-core");var Kb=require("@budibase/types");async function BB(e){let t=St.tenancy.getGlobalDB(),r=new St.db.QueryBuilder(t.name,Kb.SearchIndex.USER);r.setIndexBuilder(St.db.searchIndexes.createUserIndex),r.setLimit(e.pageSize),r.addEqual("scimInfo.isSync",!0);for(let[o,s]of Object.entries(e.filters?.equal??{}))r.addEqual(o,s);r.setSort("_id"),r.setSkip(e.skip);let a=await r.run();return{users:a.rows,total:a.totalRows}}n(BB,"get");async function NB(e){return await St.users.getById(e)}n(NB,"find");async function GB(e){let t=await Be.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new St.HTTPError("User is already synched",409);e={...t,scimInfo:(0,Qb.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await Be.save(e,{requirePassword:!1})}n(GB,"create");async function FB(e,t){return await Be.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}n(FB,"update");async function WB(e){return await Be.destroy(e)}n(WB,"remove");var Ur={};_(Ur,{create:()=>$B});var Hb=G(pu());var Yb=require("@budibase/backend-core");async function $B(e){let t=await Bo(e.name),r;if(!t)r=(await re.save(e)).id;else{if(t.scimInfo?.isSync)throw new Yb.HTTPError("Group is already synched",409);r=t._id,t.users.length&&await re.removeUsers(r,t.users.map(o=>o._id)),t.scimInfo=(0,Hb.default)(t.scimInfo,e.scimInfo),await re.save(t)}return await re.get(r)}n($B,"create");var Xt={};_(Xt,{logRequest:()=>KB,logResponse:()=>HB});var at=require("@budibase/backend-core"),zb=G(Vb());var{DocWritethrough:jB}=at.cache.docWritethrough;function QB(){return`${at.db.DocumentType.SCIM_LOG}${at.db.SEPARATOR}${(0,zb.default)().format("YYYYMMDD")}`}n(QB,"getLogDocId");var Jb=n(()=>{let e=at.context.getScimDBName();return new jB(at.db.getDB(e),QB())},"getDB");async function KB(e){at.logging.logWarn("SCIM request log",e);let t=Date.now().toString();return await Jb().patch({[`${t}_request`]:{ts:new Date().toISOString(),...e}}),t}n(KB,"logRequest");async function HB(e,t){at.logging.logWarn("SCIM response",t),await Jb().patch({[`${e}_response`]:{ts:new Date().toISOString(),...t}})}n(HB,"logResponse");var Au={};_(Au,{doInScimContext:()=>mu,feature:()=>Se,internalGroupOnly:()=>Wn,licenseAuth:()=>bu,licensing:()=>Xb,requireSCIM:()=>gu,scimGroupOnly:()=>Fn,scimUserOnly:()=>Gn});var Dt=require("@budibase/backend-core");var po=require("@budibase/types");var YB=n((e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(Dt.env.SELF_HOSTED&&Dt.env.DEFAULT_LICENSE)return t.user.license=No,r();t.user.license=await ut.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(Dt.utils.isServingApp(t)||Dt.utils.isServingBuilder(t)||Dt.utils.isServingBuilderPreview(t)||Dt.utils.isPublicApiRequest(t))&&await dt.usageLimitIsExceeded({name:po.StaticQuotaName.USERS,type:po.QuotaUsageType.STATIC,usageChange:0})}return r()},"licensing"),Xb=YB;var Se={};_(Se,{requireFeature:()=>VB,requireFeatures:()=>zB});var VB=n(e=>async(t,r)=>{await La(e),await r()},"requireFeature"),zB=n((...e)=>async(t,r)=>{await Ps(e),await r()},"requireFeatures");var lo=require("@budibase/backend-core");var mu=n(async(e,t)=>{let r;return lo.env.ENABLE_SCIM_LOGGER&&(r=await Xt.logRequest({...e.request.toJSON(),body:e.request.body})),await lo.context.doInScimContext(async()=>{let a=await t();return r&&await Xt.logResponse(r,{...e.response.toJSON(),body:e.response.body}),a})},"doInScimContext");var gu=n(async(e,t)=>{await Ms(),await t()},"requireSCIM");var Zb=require("@budibase/backend-core");var Gn=n(e=>hu(Zb.users.getById,e,!0),"scimUserOnly"),Fn=n(e=>hu(z.get,e,!0),"scimGroupOnly"),Wn=n(e=>hu(z.get,e,!1),"internalGroupOnly");function hu(e,t,r){return async(a,o)=>{let s=a.params[t];return typeof s!="string"&&a.throw(404),!!(await e(s)).scimInfo?.isSync!==r&&a.throw(404),o()}}n(hu,"scimSyncChecks");var $n=require("@budibase/backend-core");var yu=require("dd-trace");async function bu(e,t){await yu.tracer.trace("licenseAuth",async r=>{let a=e.request.headers[$n.constants.Header.LICENSE_KEY];Array.isArray(a)&&(a=a[0]),r.addTags({licenseKey:a}),a||e.throw(403,"License key not provided");let o=await _s(a);o||(r.addTags({licenseFound:!1}),e.throw(403,"License not found or invalid")),o.tenantId||e.throw(403,"License does not have a tenant ID"),yu.tracer.setUser({id:"anonymous",tenantId:o.tenantId}),await $n.context.doInSelfHostTenantUsingCloud(o.tenantId,async()=>{await $n.context.doInLicenseContext(o,async()=>{await t()})})})}n(bu,"default");var xu={};_(xu,{appBackups:()=>cA,auditLogs:()=>yA,environmentVariables:()=>RA,groups:()=>BA,scim:()=>mI});var vt=require("@budibase/backend-core"),mo=require("@budibase/types"),iA=G(require("@koa/router")),er=G(require("joi"));var fo=require("@budibase/backend-core"),Iu=require("@budibase/types");async function Zt(e,t){t||e.throw(400,"App ID missing"),await cr.workspaceExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}n(Zt,"checkAppID");async function eA(e){let t=e.params.appId;await Zt(e,t);let{body:r}=e.request,a=e.user?._id,o=await Ne.triggerAppBackup(t,Iu.BackupTrigger.MANUAL,{name:r.name,createdBy:a});o||e.throw(500,"Unable to start backup."),e.body={backupId:o,message:"Backup triggered - process starting."}}n(eA,"manualBackup");async function tA(e){let t=e.params.appId;await Zt(e,t);let r=e.params.backupId,a=e.request.body.name,o=await Ne.triggerAppRestore(t,r,a,e.user?._id);o||e.throw(500,"Unable to start restore."),await fo.events.backup.appBackupRestored(o.metadata),e.body={restoreId:o?.restoreId,message:"Restore triggered - process starting."}}n(tA,"importBackup");async function rA(e){let t=e.params.appId;await Zt(e,t);let r=e.params.backupId;await Ne.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}n(rA,"deleteBackup");async function nA(e){let t=fo.context.getWorkspaceId();await Zt(e,t);let{backupIds:r}=e.request.body;(!Array.isArray(r)||r.length===0)&&e.throw(400,"backupIds must be a non-empty array");let a=await Ne.deleteAppBackups(r),o=a.filter(i=>i.success).length,s=a.length-o;e.body={message:`${o} backups deleted successfully${s>0?`, ${s} failed`:""}.`,results:a,successCount:o,failureCount:s}}n(nA,"deleteBackups");async function aA(e){let t=e.params.appId;await Zt(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(Iu.BackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await Ne.fetchAppBackups(t,{paginate:!0,...r})}n(aA,"fetchBackups");async function oA(e){let t=e.params.appId;await Zt(e,t);let r=e.params.backupId,a=e.request.body;e.body=await Ne.updateAppBackup(r,a.name)}n(oA,"updateBackup");async function sA(e){let t=e.params.appId;await Zt(e,t);let r=e.params.backupId,{metadata:a,stream:o}=await Ne.getBackupDownloadStream(r);e.attachment(`backup-${a.timestamp}.tar.gz`),e.body=o}n(sA,"downloadBackup");var uA=new iA.default;function XB(){return vt.auth.joiValidator.body(er.default.object({trigger:er.default.string().valid(...Object.values(mo.BackupTrigger)),type:er.default.string().valid(...Object.values(mo.BackupType)),startDate:er.default.date(),endDate:er.default.date(),page:er.default.string()}))}n(XB,"validateBackupSearch");uA.post("/api/apps/:appId/backups",vt.auth.builderOrAdmin,eA).post("/api/apps/:appId/backups/search",vt.auth.builderOrAdmin,XB(),aA).get("/api/apps/:appId/backups/:backupId/file",vt.auth.builderOrAdmin,sA).patch("/api/apps/:appId/backups/:backupId",vt.auth.builderOrAdmin,oA).delete("/api/apps/:appId/backups/:backupId",vt.auth.builderOrAdmin,rA).delete("/api/apps/:appId/backups",vt.auth.builderOrAdmin,nA).post("/api/apps/:appId/backups/:backupId/import",vt.auth.builderOrAdmin,tA);var cA=uA;var wu=require("@budibase/backend-core");async function pA(e){let t=e.request.body,r=await kt.fetch(t);await wu.events.auditLog.filtered(t),e.body=r}n(pA,"search");async function lA(e){let t=e.request.body,{stream:r}=kt.download(t);await wu.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}n(lA,"download");async function dA(e){e.body={events:kt.definitions()}}n(dA,"definitions");var mA=require("@budibase/types"),tr=require("@budibase/backend-core"),gA=G(require("@koa/router")),Ye=G(require("joi"));function fA(){return tr.auth.joiValidator.body(Ye.default.object({userIds:Ye.default.array().items(Ye.default.string()).optional(),appIds:Ye.default.array().items(Ye.default.string()).optional(),events:Ye.default.array().items(Ye.default.string().valid(...Object.values(mA.Event))).optional(),startDate:Ye.default.string().optional().allow(""),endDate:Ye.default.string().optional().allow(""),fullSearch:Ye.default.string().optional().allow(""),bookmark:Ye.default.number()}))}n(fA,"buildAuditLogSearchValidator");var hA=new gA.default;hA.post("/api/global/auditlogs/search",tr.auth.adminOnly,fA(),pA).get("/api/global/auditlogs/download",tr.auth.adminOnly,tr.middleware.querystringToBody,fA(),lA).get("/api/global/auditlogs/definitions",tr.auth.adminOnly,dA);var yA=hA;var vu=require("@budibase/backend-core"),Su=require("@budibase/types");async function bA(e){e.body={encryptionKeyAvailable:ft.isEncryptionKeyAvailable()}}n(bA,"status");async function AA(e){e.body={variables:await ft.fetch()}}n(AA,"fetch");async function IA(e){let{name:t,production:r,development:a}=e.request.body;await ft.update(t,{production:r,development:a});let o=[Su.Environment.PRODUCTION];r!==a&&o.push(Su.Environment.DEVELOPMENT),await vu.events.environmentVariable.created(t,o),e.body={message:`Environment variable "${t}" created.`}}n(IA,"create");async function wA(e){let{production:t,development:r}=e.request.body,a=e.params.varName;await ft.update(a,{production:t,development:r}),e.body={message:`Environment variable "${a}" updated.`}}n(wA,"update");async function SA(e){let t=e.params.varName;await ft.remove(t),await vu.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}n(SA,"destroy");var rr=require("@budibase/backend-core"),TA=G(require("@koa/router")),jn=G(require("joi"));var xA=new TA.default;function vA(){return rr.auth.joiValidator.body(jn.default.object({name:jn.default.string().optional(),production:jn.default.string().required(),development:jn.default.string().required()}))}n(vA,"buildEnvVarUpdateValidator");xA.get("/api/env/variables/status",rr.auth.builderOrAdmin,bA).get("/api/env/variables",rr.auth.builderOrAdmin,AA).post("/api/env/variables",rr.auth.builderOrAdmin,vA(),IA).patch("/api/env/variables/:varName",rr.auth.builderOrAdmin,vA(),wA).delete("/api/env/variables/:varName",rr.auth.builderOrAdmin,SA);var RA=xA;var mt=require("@budibase/backend-core"),Tt=require("@budibase/types"),DA=G(require("@koa/router")),Ce=G(require("joi"));var EA=require("@budibase/backend-core");async function _A(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let a=await Er(t._id);t.roles=a.roles,t.scimInfo=a.scimInfo}let r=await Ga(t);e.body={_id:r.id,_rev:r.rev}}n(_A,"save");async function CA(e){let t=e.params.groupId,r=e.request.body.add,a=e.request.body.remove;(r&&!Array.isArray(r)||a&&!Array.isArray(a))&&e.throw(400,"Must supply a list of users to add or to remove");let o,s;r&&(o=await Fa(t,r)),a&&(s=await Vs(t,a)),e.body={added:o,removed:s}}n(CA,"updateGroupUsers");async function OA(e){let t=e.params.groupId,r=e.request.body.add,a=e.request.body.remove;(r&&!Array.isArray(r)||a&&!Array.isArray(a))&&e.throw(400,"Must supply a list of objects, with appId and roleId to add or remove"),e.body=await zs(t,{appsToAdd:r,appsToRemove:a})}n(OA,"updateGroupApps");async function LA(e){e.body={data:await qn()}}n(LA,"fetch");async function PA(e){let{groupId:t,rev:r}=e.params;try{await Ys(t,r),e.body={message:"Group deleted successfully"}}catch(a){e.throw(a.status,a)}}n(PA,"destroy");async function qA(e){try{e.body=await Er(e.params.groupId)}catch(t){e.throw(t.status,t)}}n(qA,"find");async function UA(e){let{pageSize:t=10,bookmark:r,emailSearch:a}=e.request.query,o=e.params.groupId,s={limit:t+1},i=await sa(o,{...s,emailSearch:a,bookmark:r}),u=a?i[t]?.email:i[t]?._id,c=!!u;e.body={users:i.slice(0,t),bookmark:u,hasNextPage:c}}n(UA,"searchUsers");async function kA(e){let{groupId:t}=e.params,{csvContent:r}=e.request.body;(r===void 0||r.trim().length===0)&&e.throw(400,"CSV is empty");let a=await EA.csv.jsonFromCsvString(r,{allowSingleColumn:!0});(!a||a.length===0)&&e.throw(400,"CSV file is invalid");let s=Object.keys(a[0]).find(y=>/^(email|e-mail|email address|mail|e_mail)$/i.test(y.trim()));s||e.throw(400,"CSV file must contain an email column");let i=Array.from(new Set(a.map(y=>y[s]).filter(y=>y&&typeof y=="string"&&y.trim().length>0).map(y=>y.trim())));i.length===0&&e.throw(400,"No valid email addresses found in CSV");try{await Er(t)}catch(y){if(y.status===404)e.throw(404,"Group not found");else throw y}let u=[],c=[],d=[],m=await Promise.all(i.map(y=>Be.getUserByEmail(y)));for(let y of i){let g=m.find(T=>T?.email===y);g?(u.push({_id:g._id,email:g.email}),d.push(g._id)):c.push({email:y,reason:"User not found"})}d.length>0&&await Fa(t,d),e.body={added:u,skipped:c}}n(kA,"bulkAddUsersFromCsv");var MA=new DA.default;function rN(){return mt.auth.joiValidator.body(Ce.default.object({_id:Ce.default.string().optional(),_rev:Ce.default.string().optional(),color:Ce.default.string().required(),icon:Ce.default.string().required(),name:Ce.default.string().trim().required().max(50),role:Ce.default.string().optional(),users:Ce.default.array().optional(),apps:Ce.default.array().optional(),roles:Ce.default.object().optional(),createdAt:Ce.default.string().optional(),updatedAt:Ce.default.string().optional()}).required())}n(rN,"buildGroupSaveValidation");MA.post("/api/global/groups",mt.auth.adminOnly,Se.requireFeature(Tt.Feature.USER_GROUPS),rN(),_A).get("/api/global/groups",Se.requireFeature(Tt.Feature.USER_GROUPS),LA).delete("/api/global/groups/:groupId/:rev",Se.requireFeature(Tt.Feature.USER_GROUPS),mt.auth.adminOnly,Wn("groupId"),PA).get("/api/global/groups/:groupId",Se.requireFeature(Tt.Feature.USER_GROUPS),mt.auth.builderOrAdmin,qA).get("/api/global/groups/:groupId/users",Se.requireFeature(Tt.Feature.USER_GROUPS),mt.auth.builderOrAdmin,UA).post("/api/global/groups/:groupId/users",mt.auth.adminOnly,Se.requireFeature(Tt.Feature.USER_GROUPS),Wn("groupId"),CA).post("/api/global/groups/:groupId/users/bulk",mt.auth.adminOnly,Se.requireFeature(Tt.Feature.USER_GROUPS),Wn("groupId"),mt.auth.joiValidator.body(Ce.default.object({csvContent:Ce.default.string().required()}).required()),kA).post("/api/global/groups/:groupId/apps",mt.auth.builderOrAdmin,Se.requireFeature(Tt.Feature.USER_GROUPS),OA);var BA=MA;var fI=G(require("@koa/router"));var go=require("scim-patch");var GA=require("@budibase/backend-core");function NA(e,t){let r=e.request.query[t];if(r!==void 0)return+r}n(NA,"tryGetQueryAsNumber");var FA=n(async e=>{let t=NA(e,"pageSize")??20,r=NA(e,"startIndex"),a;e.request.query.filter&&(a=ce.user.userFilters(e.request.query.filter));let o=await Ue.get({pageSize:t,skip:r,filters:a});e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:o.total,Resources:o.users.map(ce.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},"get"),WA=n(async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await Ue.find(t);e.body=ce.user.toScimUserResponse(r)},"find"),$A=n(async e=>{let t=ce.user.fromScimUser(e.request.body);try{let r=await Ue.create(t);e.body=ce.user.toScimUserResponse(r)}catch(r){throw r instanceof GA.EmailUnavailableError&&e.throw(409,"Email already in use"),r}},"create");function nN(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}n(nN,"isDeactivation");var jA=n(async e=>{let t=await Ue.find(e.params.id);t||e.throw(404);let r=ce.user.toScimUserResponse(t),a=e.request.body;try{(0,go.patchBodyValidation)(a)}catch{}if(nN(a))return Tu(e);let o;try{o=(0,go.scimPatch)(r,a.Operations)}catch{}o||e.throw(500);let s=ce.user.fromScimUser(o);await Ue.update(s,{allowChangingEmail:!0}),e.body=ce.user.toScimUserResponse(s)},"update"),Tu=n(async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await Ue.remove(t),e.status=204},"remove");var oI=G(aI()),sI=require("@budibase/shared-core"),ho=require("scim-patch");var yo=require("scim2-parse-filter");function iI(e,t){for(let r of t.split(","))delete e[r]}n(iI,"cleanResponse");var uI=n(async e=>{let r=(await re.fetch()).filter(s=>s.scimInfo?.isSync).map(ce.group.toScimGroupResponse),{filter:a,excludedAttributes:o}=e.request.query;if(a){let s=(0,yo.filter)((0,yo.parse)(a));r=r.filter(s)}o&&r.forEach(s=>{iI(s,o)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},"get"),cI=n(async e=>{let t=ce.group.fromScimGroup(e.request.body),r=await Ur.create(t);e.body=ce.group.toScimGroupResponse(r)},"create"),pI=n(async e=>{let{id:t}=e.params,r=await re.get(t),a=ce.group.toScimGroupResponse(r),{excludedAttributes:o}=e.request.query;o&&iI(a,o),e.body=a},"find"),lI=n(async e=>{let{id:t}=e.params,r=await re.get(t);await re.remove(t,r._rev),e.status=204},"remove"),dI=n(async e=>{let{id:t}=e.params,r=await re.get(t),a=ce.group.toScimGroupResponse(r),o=e.request.body;try{(0,ho.patchBodyValidation)(o)}catch{e.throw(400)}let{true:s,false:i}=(0,oI.default)(o.Operations,u=>u.path==="members");if(i?.length){let u=(0,ho.scimPatch)(a,i);u||e.throw(500);let c={...ce.group.fromScimGroup(u),_rev:r._rev};await re.save(c)}if(s?.length){let u=[],c=[];for(let{op:d,value:m}of s)switch(d){case"add":case"Add":for(let y of m)u.push(await Ue.find(y.value));break;case"remove":case"Remove":for(let y of m)try{c.push(await Ue.find(y.value))}catch(g){if(g.status!==404)throw g}break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:sI.utils.unreachable(d)}u.length&&await re.addUsers(t,u.map(d=>d._id)),c.length&&await re.removeUsers(t,c.map(d=>d._id))}e.body=ce.group.toScimGroupResponse(await re.get(t))},"update");var Qn=require("@budibase/types"),Ge=new fI.default({prefix:"/api/global/scim/v2"});Ge.use(gu);Ge.use(mu);Ge.get("/users",FA);Ge.get("/users/:id",Gn("id"),WA);Ge.post("/users",$A);Ge.patch("/users/:id",Gn("id"),jA);Ge.delete("/users/:id",Gn("id"),Tu);Ge.get("/groups",uI);Ge.post("/groups",Se.requireFeature(Qn.Feature.USER_GROUPS),cI);Ge.get("/groups/:id",Se.requireFeature(Qn.Feature.USER_GROUPS),Fn("id"),pI);Ge.delete("/groups/:id",Se.requireFeature(Qn.Feature.USER_GROUPS),Fn("id"),lI);Ge.patch("/groups/:id",Se.requireFeature(Qn.Feature.USER_GROUPS),Fn("id"),dI);var mI=Ge;var ce={};_(ce,{group:()=>Eu,user:()=>Ru});var Ru={};_(Ru,{fromScimUser:()=>LN,toScimUserResponse:()=>_N,userFilters:()=>PN});var gI=require("@budibase/backend-core"),hI=require("@budibase/shared-core"),bo=require("@budibase/types"),yI=require("scim2-parse-filter");var{unreachable:EN}=hI.utils,_N=n(e=>{let{isSync:t,roles:r,...a}=e.scimInfo||{},o={...a,schemas:["urn:ietf:params:scim:schemas:core:2.0:User"],id:e._id,meta:{resourceType:"User",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},active:e.status===bo.UserStatus.ACTIVE};(e.firstName||e.lastName)&&(o.name={formatted:[e.firstName,e.lastName].filter(i=>i).join(" "),familyName:e.lastName,givenName:e.firstName});let s="urn:ietf:params:scim:schemas:extension:enterprise:2.0:User";if(o[s]?.manager){let i=o[s].manager;typeof i=="string"&&(o[s].manager={value:i})}return o},"toScimUserResponse"),CN=n(e=>!!e?.id,"isScimUserResponse");function ON(e){if(gI.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}n(ON,"tryGetEmail");var LN=n(e=>{let t=CN(e)?e:void 0,r=ON(e);if(!r)throw new Error("Email is required");let a;switch(e.active){case"True":case"true":case!0:a=!0;break;case"False":case"false":case!1:a=!1;break;default:EN(e.active)}let o,s;return e.name?.givenName?(o=e.name?.givenName,s=e.name?.familyName):o=e.displayName,{tenantId:"",_id:t?.id,userId:t?.id,email:r,firstName:o,lastName:s,scimInfo:{...e,isSync:!0},roles:{},status:a?bo.UserStatus.ACTIVE:bo.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},"fromScimUser"),PN=n(e=>{let t={equal:{}},r=(0,yI.parse)(e);function a(o){switch(o.op){case"eq":{let s=o.attrPath,i;switch(s){case"emails.value":i="email";break;default:i=`scimInfo.${s}`}t.equal[i]=o.compValue;break}case"and":for(let s of o.filters)a(s);break;default:console.warn("Filter not handled",{filter:o})}}return n(a,"parseFilters"),a(r),t},"userFilters");var Eu={};_(Eu,{fromScimGroup:()=>kN,toScimGroupResponse:()=>qN});var qN=n(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}))}),"toScimGroupResponse"),UN=n(e=>!!e?.id,"isScimGroup"),kN=n(e=>{let t=UN(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()}},"fromScimGroup");var Ju={};_(Ju,{LLM:()=>gt,LLMRequest:()=>se,TableGeneration:()=>zu,agentHistoryTitleSystemPrompt:()=>YN,agentSystemPrompt:()=>HN,aiColumnSchemas:()=>Yu,aiTableResponseToTableSchema:()=>ju,appendAIColumns:()=>Qu,classifyText:()=>Ou,cleanData:()=>Lu,composeAutomationAgentSystemPrompt:()=>QN,composeAutomationAgentToolGuidelines:()=>KN,createLiteLLMOpenAI:()=>RI,extractFileData:()=>FN,generateAIColumns:()=>Wu,generateCode:()=>jN,generateCronExpression:()=>Pu,generateData:()=>$u,generateJs:()=>Du,generateSQL:()=>$N,generateTables:()=>Fu,generationStructure:()=>Hu,getChatLLM:()=>LI,getLLM:()=>Yn,getLLMConfig:()=>Gu,getLLMOrThrow:()=>OI,getLiteLLMProvider:()=>Nu,getLiteLLMProviderOptions:()=>xI,normalizeContentType:()=>_u,parseResponseFormat:()=>Io,sanitiseToolName:()=>DN,searchWeb:()=>ku,sentimentAnalysis:()=>Uu,summarizeText:()=>Ao,tableDataStructuredOutput:()=>Vu,translate:()=>qu});var Kn=require("@budibase/types");function DN(e){if(e.length>64)throw new Error("Tool name must be under 64 characters long");return e.replace(/[^a-zA-Z0-9_-]/g,"_")}n(DN,"sanitiseToolName");function _u(e){return e?e.includes("/")?e:{[Kn.SupportedFileType.PDF]:"application/pdf",[Kn.SupportedFileType.JPG]:"image/jpeg",[Kn.SupportedFileType.JPEG]:"image/jpeg",[Kn.SupportedFileType.PNG]:"image/png"}[e.toLowerCase()]||"application/octet-stream":"application/octet-stream"}n(_u,"normalizeContentType");var Ro=require("@budibase/types");var ht=require("@budibase/backend-core"),EI=require("@budibase/types"),kr=require("dd-trace"),_I=require("zod");var II=require("@budibase/types"),wo=G(require("openai"));var bI=require("@budibase/shared-core"),Mt=require("@budibase/types"),Bt=G(require("dd-trace"));function Cu(e,t){return t.map(r=>e[r]).join(" ")}n(Cu,"extractTextFromColumns");var gt=class{static{n(this,"LLM")}constructor({model:t,apiKey:r,maxTokens:a}){this._model=t,this._apiKey=r,this._maxTokens=a??parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"1000")}get model(){return this._model}get apiKey(){return this._apiKey}get maxTokens(){return this._maxTokens}async prompt(t){return await Bt.default.trace("prompt",async()=>{let r=typeof t=="string"?new se().addUserMessage(t):t,{messages:a,tokensUsed:o}=await Bt.default.trace("chatCompletion",()=>this.chatCompletion(r));return!a||a.length===0?{message:"",tokensUsed:o}:{message:a[a.length-1].content||"",tokensUsed:o}})}async chat(t){return await Bt.default.trace("chat",async()=>await this.chatCompletion(t))}async*chatStream(t){yield*this.chatCompletionStream(t)}async summarizeText(t){return Bt.default.trace("summarizeText",()=>this.prompt(Ao(t)))}async generateCronExpression(t){return Bt.default.trace("generateCronExpression",()=>this.prompt(Pu(t)))}async operation(t,r){return Bt.default.trace("operation",a=>{a.addTags({operation:t.operation,rowId:r.id});let o=this.promptForOperation(t,r);return this.prompt(o)})}promptForOperation(t,r){let{operation:a,column:o,columns:s,language:i,categories:u,prompt:c}=t;switch(a){case Mt.AIOperationEnum.SUMMARISE_TEXT:return Ao(Cu(r,s));case Mt.AIOperationEnum.CLEAN_DATA:return Lu(r[o]);case Mt.AIOperationEnum.TRANSLATE:return qu(r[o],i);case Mt.AIOperationEnum.CATEGORISE_TEXT:if(!u)throw Error("No categories provided for categorise text operation. Please provide categories.");return Ou(Cu(r,s),u.split(","));case Mt.AIOperationEnum.SENTIMENT_ANALYSIS:return Uu(r[o]);case Mt.AIOperationEnum.PROMPT:return c;case Mt.AIOperationEnum.SEARCH_WEB:return ku(Cu(r,s));default:throw bI.utils.unreachable(a)}}async generateJs(t,r){return await Bt.default.trace("generateJs",async()=>{let{bindings:a=[],snippets:o=[]}=r||{};return await this.prompt(Du(a,o).addUserMessage(t))})}};var Hn=(a=>(a.GPT_5_MINI="gpt-5-mini",a.GPT_5="gpt-5",a.GPT_5_NANO="gpt-5-nano",a))(Hn||{});function Io(e){if(e)return e==="text"?{type:"text"}:e==="json"?{type:"json_object"}:e}n(Io,"parseResponseFormat");function AI(e){if(!e)return 0;let t=e.prompt_tokens;return e.completion_tokens*3+t}n(AI,"calculateBudibaseAICredits");var ke=class extends gt{constructor(r){super(r);this.client=this.getClient(r)}static{n(this,"OpenAI")}getVerbosityForModel(){if(Object.values(Hn).includes(this.model))return"low"}getClient(r){if(!r.apiKey)throw new Error("No OpenAI API key found");return new wo.default({apiKey:r.apiKey})}async uploadFile(r,a,o){let s=_u(o);if(II.ImageContentTypes.includes(s.toLowerCase())){let c;if(Buffer.isBuffer(r))c=r;else{let m=[];for await(let y of r)m.push(new Uint8Array(y));c=Buffer.concat(m)}let d=c.toString("base64");return`data:${s};base64,${d}`}let i=await(0,wo.toFile)(r,a);return(await this.client.files.create({file:i,purpose:"assistants"})).id}async chatCompletion(r){let a={model:this.model,messages:r.messages,max_completion_tokens:this._maxTokens,response_format:Io(r.format)};if(Object.values(Hn).includes(this.model)){let i=this.getVerbosityForModel();i&&(a.verbosity=i),a.reasoning_effort="minimal"}let o=await this.client.chat.completions.create(a),s=o?.choices?.[0]?.message;if(s?.content)return{messages:[...r.messages,{role:s.role,content:s.content}],tokensUsed:AI(o.usage)};throw new Error("No response found")}async*chatCompletionStream(r){let a={model:this.model,messages:r.messages,max_tokens:this.maxTokens,response_format:Io(r.format),stream:!0};try{let o=await this.client.chat.completions.create(a),s="",i=null;for await(let c of o){let d=c?.choices?.[0]?.delta;d&&(d.content&&(s+=d.content,yield{type:"content",content:d.content}),c.usage&&(i=c.usage))}let u=i?AI(i):0;s&&r.addMessage({role:"assistant",content:s}),yield{type:"done",messages:r.messages,tokensUsed:u}}catch(o){yield{type:"error",content:o.message}}}};var Mu=G(require("@anthropic-ai/sdk"));function MN(e){if(!e)return 0;let t=e.input_tokens;return e.output_tokens*3+t}n(MN,"calculateBudibaseAICredits");var So=class extends gt{constructor(r){super(r);this.client=new Mu.default({apiKey:r.apiKey})}static{n(this,"Anthropic")}firstTextBlock(r){for(let a of r.content)if(a.type==="text")return a.text}async uploadFile(r,a,o){throw new Error("File upload not supported for this LLM provider")}async chatCompletion(r){try{let a=await this.client.messages.create({model:this.model,messages:r.messages.map(({content:s})=>{if(s==null)return{role:"user",content:""};if(typeof s=="string")return{role:"user",content:s};let i="";for(let u of s)u.type==="text"?i+=u.text:["image_url","input_audio","file"].includes(u.type);return{role:"user",content:i}}),max_tokens:this.maxTokens}),o=this.firstTextBlock(a)||"";return{messages:[...r.messages,{role:"assistant",content:o}],tokensUsed:MN(a.usage)}}catch(a){throw a instanceof Mu.default.APIError&&console.error(`Anthropic Prompt failed with error ${a.name} and status: ${a.status}`),a}}async*chatCompletionStream(r){try{let a=await this.chatCompletion(r);if(a.messages.length>0){let o=a.messages[a.messages.length-1];o.content&&(yield{type:"content",content:o.content})}yield{type:"done",messages:a.messages,tokensUsed:a.tokensUsed}}catch(a){yield{type:"error",content:a.message}}}};var wI=require("openai");var vo=class extends ke{static{n(this,"AzureOpenAI")}getClient(t){if(!t.apiKey)throw new Error("No Azure OpenAI API key found");if(!t.model)throw new Error("No Azure OpenAI model specified");return new wI.AzureOpenAI({apiKey:t.apiKey,apiVersion:"2024-10-01-preview",baseURL:t.baseUrl})}getVerbosityForModel(){return Object.values(Hn).includes(this.model)?"medium":void 0}};var be=require("@budibase/backend-core"),SI=require("@budibase/types"),Bu=require("dd-trace");var To=class extends gt{static{n(this,"BudibaseAI")}async prompt(t){let r=await super.prompt(t);return r.tokensUsed&&await Ba(r.tokensUsed),r}async chat(t){let r=await super.chat(t);return r.tokensUsed&&await Ba(r.tokensUsed),r}async uploadFile(t,r,a){return be.env.SELF_HOSTED?this.uploadFileSelfHost(t,r,a):this.uploadFileCloud(t,r,a)}async uploadFileCloud(t,r,a){return new ke({apiKey:be.env.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).uploadFile(t,r,a)}async uploadFileSelfHost(t,r,a){let o;if(Buffer.isBuffer(t))o=t;else{let m=[];for await(let y of t)m.push(new Uint8Array(y));o=Buffer.concat(m)}let s=o.toString("base64");if(a&&SI.ImageContentTypes.includes(a.toLowerCase()))return`data:image/jpeg;base64,${s}`;if(!be.env.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(!this._apiKey){let m=await Ca();if(!m)throw new Error("No license key found");this._apiKey=m}let i=`${be.env.BUDICLOUD_URL}/api/ai/upload-file`,u={method:"POST",headers:{"Content-Type":"application/json",[be.constants.Header.LICENSE_KEY]:this._apiKey},body:JSON.stringify({data:s,filename:r,contentType:a})};console.debug("[BudibaseAI] uploadFileSelfHost - Making network call",{url:i,method:u.method,headers:u.headers,bodyKeys:["data","filename","contentType"],filename:r,contentType:a});let c=await Zn(i,u);if(console.debug("[BudibaseAI] uploadFileSelfHost - Network response",{url:i,status:c.status,statusText:c.statusText,ok:c.ok}),!c.ok)throw await be.HTTPError.fromResponse(c);return(await c.json()).fileId}async chatCompletion(t){return be.env.SELF_HOSTED?this.chatCompletionSelfHost(t):this.chatCompletionCloud(t)}async chatCompletionCloud(t){return await Bu.tracer.trace("chatCompletionCloud",async()=>await new ke({apiKey:be.env.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).chatCompletion(t))}async chatCompletionSelfHost(t){return await Bu.tracer.trace("chatCompletionSelfHost",async r=>{if(!be.env.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(r.addTags({budicloudUrl:be.env.BUDICLOUD_URL}),!this._apiKey){let c=await Ca();if(!c)throw new Error("No license key found");this._apiKey=c,r.addTags({licenseKey:this._apiKey})}let a={messages:t.messages,format:t.format},o=`${be.env.BUDICLOUD_URL}/api/ai/chat`,s={method:"POST",headers:{"Content-Type":"application/json",[be.constants.Header.LICENSE_KEY]:this._apiKey},body:JSON.stringify(a)};console.debug("[BudibaseAI] chatCompletionSelfHost - Making network call",{url:o,method:s.method,headers:s.headers,bodyKeys:Object.keys(a),messagesCount:t.messages.length,format:a.format});let i=await Zn(o,s);if(console.debug("[BudibaseAI] chatCompletionSelfHost - Network response",{url:o,status:i.status,statusText:i.statusText,ok:i.ok}),!i.ok)throw await be.HTTPError.fromResponse(i);let u=await i.json();return console.debug("[BudibaseAI] chatCompletionSelfHost - Response data",{url:o,tokensUsed:u.tokensUsed,messagesCount:u.messages?.length}),u})}async*chatCompletionStream(t){be.env.SELF_HOSTED?yield*this.chatCompletionStreamSelfHost(t):yield*this.chatCompletionStreamCloud(t)}async*chatCompletionStreamCloud(t){yield*new ke({apiKey:be.env.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).chatCompletionStream(t)}async*chatCompletionStreamSelfHost(t){console.debug("[BudibaseAI] chatCompletionStreamSelfHost - Starting streaming (fallback to non-streaming)",{messagesCount:t.messages.length});try{let r=await this.chatCompletionSelfHost(t);if(console.debug("[BudibaseAI] chatCompletionStreamSelfHost - Yielding response chunks",{responseMessagesCount:r.messages.length,tokensUsed:r.tokensUsed}),r.messages.length>0){let a=r.messages[r.messages.length-1];a.content&&(yield{type:"content",content:a.content})}yield{type:"done",messages:r.messages,tokensUsed:r.tokensUsed}}catch(r){console.debug("[BudibaseAI] chatCompletionStreamSelfHost - Error occurred",{error:r.message}),yield{type:"error",content:r.message}}}};var vI=G(require("openai")),TI=require("@ai-sdk/openai");var xo=class extends ke{static{n(this,"LiteLLMAI")}getClient(t){if(!t.apiKey)throw new Error("No LiteLLM API key found");return new vI.default({apiKey:t.apiKey,baseURL:t.baseUrl})}},Nu=n(e=>{let[t]=e.split("/");return t||"openai"},"getLiteLLMProvider"),xI=n(e=>{let t=Nu(e),r={parallelToolCalls:!0};return t==="openai"||t==="groq"?{...r,reasoningEffort:"low"}:r},"getLiteLLMProviderOptions"),RI=n(e=>{let{apiKey:t,baseUrl:r,fetch:a}=e,o={apiKey:t,baseURL:r,name:"litellm"};return a&&(o.fetch=a),(0,TI.createOpenAI)(o)},"createLiteLLMOpenAI");var CI={OpenAI:"gpt-5-mini",TogetherAI:"gpt-5-mini",AzureOpenAI:"gpt-4.1",Custom:"gpt-5-mini",Anthropic:"claude-3-5-sonnet-20240620",BudibaseAI:"gpt-5-mini"},BN={OpenAI:ke,TogetherAI:ke,AzureOpenAI:vo,Custom:ke,Anthropic:So,BudibaseAI:To};async function NN(){return await kr.tracer.trace("getAIConfig",async e=>{let t={type:EI.ConfigType.AI,config:{}};if(!ht.context.isSelfHostUsingCloud()){let a=await ht.configs.getAIConfig();a&&(t=a)}await Bs(t);let r=Object.values(t.config).find(a=>a.active&&a.isDefault);if(!r){e.addTags({enabled:!1,reason:"no provider found"});return}return e.addTags({enabled:!0}),{provider:r.provider,model:r.defaultModel||CI[r.provider],apiKey:r.apiKey,baseUrl:r.baseUrl}})}n(NN,"getAIConfig");async function GN(){return kr.tracer.trace("getSelfHostOpenAIKeyConfig",e=>{if(!ht.env.SELF_HOSTED){e.addTags({enabled:!1,reason:"not self host"});return}if(!ht.env.OPENAI_API_KEY){e.addTags({enabled:!1,reason:"no OPENAI_API_KEY"});return}return e.addTags({enabled:!0}),{provider:"OpenAI",model:CI.OpenAI,apiKey:ht.env.OPENAI_API_KEY}})}n(GN,"getSelfHostOpenAIKeyConfig");async function Gu(){return kr.tracer.trace("getLLMConfig",async()=>await NN()||await GN())}n(Gu,"getLLMConfig");async function Yn(e){return await kr.tracer.trace("getLLM",async t=>{let{model:r,maxTokens:a}=e||{},o=await Gu();if(!o){t.addTags({enabled:!1,reason:"no config found"});return}r&&(o.model=r),a&&(o.maxTokens=a);let s=BN[o.provider];if(!s){t.addTags({enabled:!1,reason:"no provider found",provider:o.provider});return}return new s(o)})}n(Yn,"getLLM");async function OI(){let e=await Yn();if(!e)throw new ht.HTTPError("No available LLM configurations",500);return e}n(OI,"getLLMOrThrow");async function LI(e){return await kr.tracer.trace("getChatLLM",async()=>new xo(e))}n(LI,"getChatLLM");var se=class e{constructor(){this.messages=[]}static{n(this,"LLMRequest")}withFormat(t){return t instanceof _I.z.ZodType?this.format={type:"json_schema",json_schema:{name:"response",strict:!1,schema:t.toJSONSchema({target:"draft-7"})}}:this.format=t,this}addMessage(t){return this.messages.push(t),this}addMessages(t){return this.messages.push(...t),this}addUserMessage(t){return this.messages.push({role:"user",content:t}),this}addSystemMessage(t){return this.messages.push({role:"system",content:t}),this}static fromRequest(t){let r=new e;return t.messages&&r.addMessages(t.messages),t.format&&r.withFormat(t.format),r}};var xt=require("zod");function Ao(e,t){let r=`Summarize this text:
|
|
37
|
+
`;function cn(e){return Qo.default.verify(e,Ow,{algorithms:["RS256"]})}n(cn,"verifyLicenseToken");function Lw(e,t){return Qo.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}n(Lw,"sign");var da={};_(da,{getOfflineFeatures:()=>Ko});var h=require("@budibase/types");var Pw={[h.PlanType.FREE]:[...je.SELF_FREE_LICENSE.features],[h.PlanType.PREMIUM]:[h.Feature.WORKSPACE_BACKUPS,h.Feature.BRANDING,h.Feature.APP_BUILDERS,h.Feature.VIEW_PERMISSIONS,h.Feature.PDF],[h.PlanType.PREMIUM_PLUS]:[h.Feature.WORKSPACE_BACKUPS,h.Feature.BRANDING,h.Feature.SYNC_AUTOMATIONS,h.Feature.APP_BUILDERS,h.Feature.VIEW_PERMISSIONS,h.Feature.TRIGGER_AUTOMATION_RUN,h.Feature.VIEW_READONLY_COLUMNS,h.Feature.AI_CUSTOM_CONFIGS,h.Feature.PDF,h.Feature.BUDIBASE_AI],[h.PlanType.PREMIUM_PLUS_TRIAL]:[h.Feature.WORKSPACE_BACKUPS,h.Feature.BRANDING,h.Feature.SYNC_AUTOMATIONS,h.Feature.APP_BUILDERS,h.Feature.VIEW_PERMISSIONS,h.Feature.TRIGGER_AUTOMATION_RUN,h.Feature.VIEW_READONLY_COLUMNS,h.Feature.AI_CUSTOM_CONFIGS,h.Feature.PDF,h.Feature.BUDIBASE_AI],[h.PlanType.PRO]:[h.Feature.USER_GROUPS,h.Feature.WORKSPACE_BACKUPS],[h.PlanType.TEAM]:[h.Feature.USER_GROUPS,h.Feature.WORKSPACE_BACKUPS],[h.PlanType.BUSINESS]:[h.Feature.USER_GROUPS,h.Feature.WORKSPACE_BACKUPS,h.Feature.ENVIRONMENT_VARIABLES,h.Feature.AUDIT_LOGS,h.Feature.BRANDING,h.Feature.SYNC_AUTOMATIONS,h.Feature.APP_BUILDERS,h.Feature.EXPANDED_PUBLIC_API,h.Feature.VIEW_PERMISSIONS,h.Feature.PDF,h.Feature.BUDIBASE_AI],[h.PlanType.ENTERPRISE_BASIC]:[h.Feature.USER_GROUPS,h.Feature.WORKSPACE_BACKUPS,h.Feature.ENVIRONMENT_VARIABLES,h.Feature.ENFORCEABLE_SSO,h.Feature.AUDIT_LOGS,h.Feature.BRANDING,h.Feature.SYNC_AUTOMATIONS,h.Feature.OFFLINE,h.Feature.APP_BUILDERS,h.Feature.EXPANDED_PUBLIC_API,h.Feature.VIEW_PERMISSIONS,h.Feature.TRIGGER_AUTOMATION_RUN,h.Feature.SCIM,h.Feature.VIEW_READONLY_COLUMNS,h.Feature.AI_CUSTOM_CONFIGS,h.Feature.PWA,h.Feature.CUSTOM_APP_SCRIPTS,h.Feature.PDF,h.Feature.BUDIBASE_AI,h.Feature.RECAPTCHA,h.Feature.PKCE_OIDC,h.Feature.TRANSLATIONS],[h.PlanType.ENTERPRISE_BASIC_TRIAL]:[h.Feature.USER_GROUPS,h.Feature.WORKSPACE_BACKUPS,h.Feature.ENVIRONMENT_VARIABLES,h.Feature.ENFORCEABLE_SSO,h.Feature.BRANDING,h.Feature.SYNC_AUTOMATIONS,h.Feature.APP_BUILDERS,h.Feature.EXPANDED_PUBLIC_API,h.Feature.VIEW_PERMISSIONS,h.Feature.TRIGGER_AUTOMATION_RUN,h.Feature.SCIM,h.Feature.VIEW_READONLY_COLUMNS,h.Feature.AI_CUSTOM_CONFIGS,h.Feature.PWA,h.Feature.CUSTOM_APP_SCRIPTS,h.Feature.PDF,h.Feature.BUDIBASE_AI,h.Feature.RECAPTCHA,h.Feature.PKCE_OIDC,h.Feature.TRANSLATIONS],[h.PlanType.ENTERPRISE]:[h.Feature.USER_GROUPS,h.Feature.WORKSPACE_BACKUPS,h.Feature.ENVIRONMENT_VARIABLES,h.Feature.ENFORCEABLE_SSO,h.Feature.AUDIT_LOGS,h.Feature.BRANDING,h.Feature.SYNC_AUTOMATIONS,h.Feature.OFFLINE,h.Feature.APP_BUILDERS,h.Feature.EXPANDED_PUBLIC_API,h.Feature.VIEW_PERMISSIONS,h.Feature.TRIGGER_AUTOMATION_RUN,h.Feature.SCIM,h.Feature.VIEW_READONLY_COLUMNS,h.Feature.AI_CUSTOM_CONFIGS,h.Feature.PWA,h.Feature.CUSTOM_APP_SCRIPTS,h.Feature.PDF,h.Feature.BUDIBASE_AI,h.Feature.RECAPTCHA,h.Feature.PKCE_OIDC,h.Feature.TRANSLATIONS]};function Ko(e){function t(r){let a=r[e];if(!a)throw new Error(`Features do not exist for planType=${e}`);return a}return n(t,"readFeatures"),t(Pw)}n(Ko,"getOfflineFeatures");var fa={};_(fa,{UNLIMITED:()=>f,getQuotas:()=>Ho});var J=require("@budibase/types");var l=yt,Dc=je,f=-1,ln=n(e=>e*1e6,"millions"),qw={[J.PlanType.FREE]:{...Dc.CLOUD_FREE_LICENSE.quotas},[J.PlanType.PREMIUM]:{usage:{monthly:{...l.queries(f),...l.automations(1e3),...l.budibaseAICredits(0),...l.actions(f)},static:{...l.rows(1e4),...l.apps(f),...l.users(f),...l.creators(f),...l.userGroups(0),...l.plugins(f),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(7),...l.appBackupRetentionDays(7)}},[J.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...l.queries(f),...l.automations(5e3),...l.budibaseAICredits(ln(2)),...l.actions(f)},static:{...l.rows(25e3),...l.apps(f),...l.users(f),...l.creators(f),...l.userGroups(0),...l.plugins(f),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[J.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...l.queries(f),...l.automations(5e3),...l.budibaseAICredits(ln(2)),...l.actions(f)},static:{...l.rows(25e3),...l.apps(f),...l.users(f),...l.creators(f),...l.userGroups(0),...l.plugins(f),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[J.PlanType.PRO]:{usage:{monthly:{...l.queries(f),...l.automations(1e3),...l.budibaseAICredits(0),...l.actions(f)},static:{...l.rows(f),...l.apps(f),...l.users(f),...l.creators(f),...l.userGroups(5),...l.plugins(f),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(7),...l.appBackupRetentionDays(7)}},[J.PlanType.TEAM]:{usage:{monthly:{...l.queries(f),...l.automations(5e3),...l.budibaseAICredits(0),...l.actions(f)},static:{...l.rows(f),...l.apps(f),...l.users(f),...l.creators(f),...l.userGroups(10),...l.plugins(f),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(90)}},[J.PlanType.BUSINESS]:{usage:{monthly:{...l.queries(f),...l.automations(1e4),...l.budibaseAICredits(0),...l.actions(f)},static:{...l.rows(5e4),...l.apps(f),...l.users(f),...l.creators(f),...l.userGroups(50),...l.plugins(f),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(365),...l.appBackupRetentionDays(365)}},[J.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...l.queries(f),...l.automations(f),...l.budibaseAICredits(ln(4)),...l.actions(f)},static:{...l.rows(f),...l.apps(f),...l.users(f),...l.creators(f),...l.userGroups(f),...l.plugins(f),...l.customAIConfigurations(f)}},constant:{...l.automationLogRetentionDays(f),...l.appBackupRetentionDays(f)}},[J.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...l.queries(f),...l.automations(f),...l.budibaseAICredits(ln(4)),...l.actions(f)},static:{...l.rows(f),...l.apps(f),...l.users(f),...l.creators(f),...l.userGroups(f),...l.plugins(f),...l.customAIConfigurations(f)}},constant:{...l.automationLogRetentionDays(15),...l.appBackupRetentionDays(15)}},[J.PlanType.ENTERPRISE]:{usage:{monthly:{...l.queries(f),...l.automations(f),...l.budibaseAICredits(ln(4)),...l.actions(f)},static:{...l.rows(f),...l.apps(f),...l.users(f),...l.creators(f),...l.userGroups(f),...l.plugins(f),...l.customAIConfigurations(f)}},constant:{...l.automationLogRetentionDays(f),...l.appBackupRetentionDays(f)}}},Uw={[J.PlanType.FREE]:{...Dc.SELF_FREE_LICENSE.quotas},[J.PlanType.PREMIUM]:void 0,[J.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...l.queries(f),...l.automations(f),...l.budibaseAICredits(0),...l.actions(f)},static:{...l.rows(f),...l.apps(f),...l.users(f),...l.creators(f),...l.userGroups(0),...l.plugins(f),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[J.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...l.queries(f),...l.automations(f),...l.budibaseAICredits(0),...l.actions(f)},static:{...l.rows(f),...l.apps(f),...l.users(f),...l.creators(f),...l.userGroups(0),...l.plugins(f),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[J.PlanType.PRO]:{usage:{monthly:{...l.queries(f),...l.automations(f),...l.budibaseAICredits(0),...l.actions(f)},static:{...l.rows(f),...l.apps(f),...l.users(f),...l.creators(f),...l.userGroups(5),...l.plugins(f),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(7),...l.appBackupRetentionDays(7)}},[J.PlanType.TEAM]:{usage:{monthly:{...l.queries(f),...l.automations(f),...l.budibaseAICredits(0),...l.actions(f)},static:{...l.rows(f),...l.apps(f),...l.users(f),...l.creators(f),...l.userGroups(10),...l.plugins(f),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(90)}},[J.PlanType.BUSINESS]:{usage:{monthly:{...l.queries(f),...l.automations(f),...l.budibaseAICredits(0),...l.actions(f)},static:{...l.rows(f),...l.apps(f),...l.users(f),...l.creators(f),...l.userGroups(50),...l.plugins(f),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(90),...l.appBackupRetentionDays(365)}},[J.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...l.queries(f),...l.automations(f),...l.budibaseAICredits(0),...l.actions(f)},static:{...l.rows(f),...l.apps(f),...l.users(f),...l.creators(f),...l.userGroups(f),...l.plugins(f),...l.customAIConfigurations(f)}},constant:{...l.automationLogRetentionDays(f),...l.appBackupRetentionDays(f)}},[J.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...l.queries(f),...l.automations(f),...l.budibaseAICredits(0),...l.actions(f)},static:{...l.rows(f),...l.apps(f),...l.users(f),...l.creators(f),...l.userGroups(f),...l.plugins(f),...l.customAIConfigurations(f)}},constant:{...l.automationLogRetentionDays(15),...l.appBackupRetentionDays(15)}},[J.PlanType.ENTERPRISE]:{usage:{monthly:{...l.queries(f),...l.automations(f),...l.budibaseAICredits(0),...l.actions(f)},static:{...l.rows(f),...l.apps(f),...l.users(f),...l.creators(f),...l.userGroups(f),...l.plugins(f),...l.customAIConfigurations(f)}},constant:{...l.automationLogRetentionDays(f),...l.appBackupRetentionDays(f)}}};function Ho(e,t){let r;function a(o){let s=o[t];if(!s)throw new Error(`Quotas do not exist for planType=${t} and hosting=${e}`);return s}switch(n(a,"readQuotas"),e){case J.Hosting.SELF:r=a(Uw);break;case J.Hosting.CLOUD:r=a(qw);break}return JSON.parse(JSON.stringify(r))}n(Ho,"getQuotas");var cr={};_(cr,{encoding:()=>ur,workspaceExists:()=>kw});var Mc=require("@budibase/backend-core");async function kw(e){return(await Mc.db.getAllWorkspaces({all:!0,idsOnly:!0})).includes(e)}n(kw,"workspaceExists");var ur={};_(ur,{base64ToObject:()=>Mw,objectToBase64:()=>Dw});function Dw(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}n(Dw,"objectToBase64");function Mw(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}n(Mw,"base64ToObject");var wf=require("@budibase/types"),Sr=require("@budibase/backend-core"),Sf=G(Zl()),vf=G(ws());async function d_(e){await $e.save({offlineLicenseToken:e}),await Qt()}n(d_,"activateOfflineLicenseToken");async function f_(){await $e.save({offlineLicenseToken:void 0}),await Qt()}n(f_,"deleteOfflineLicenseToken");async function Tf(){return(await $e.get()).offlineLicenseToken}n(Tf,"getOfflineLicenseToken");async function Ss(){let t=(await Sr.installation.getInstall()).installId,r=Sr.context.getTenantId(),a=await Sr.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:a}}n(Ss,"getIdentifier");async function m_(){let e=await Ss();return ur.objectToBase64(e)}n(m_,"getIdentifierBase64");function g_(e){return ur.base64ToObject(e)}n(g_,"getIdentifierFromBase64");function xf(e){let t=Date.now(),r=new Date(e.expireAt).getTime();if(t>r)throw new Error(`Offline license has expired. expireAt=${e.expireAt}`)}n(xf,"verifyExpiry");async function Rf(e){let t=await Ss();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}n(Rf,"verifyInstallation");function Ef(e){let t=e.plan.type,r=wf.Hosting.SELF,a=Ko(t),o=Ho(r,t);return e.features=(0,Sf.default)(e.features,a),e.quotas=(0,vf.default)(e.quotas,o),e}n(Ef,"enrichLicense");async function vs(){try{let e=await Tf();if(e){let t=await cn(e);return xf(t),await Rf(t),Ef(t)}}catch(e){console.error("Error retrieving offline license",e)}}n(vs,"getOfflineLicense");var On={};_(On,{deleteDevLicense:()=>I_,getOfflineLicense:()=>b_,writeDevLicenseToDisk:()=>A_});var _f=require("@budibase/backend-core"),xs=require("path"),Cf=require("os"),Kt=G(require("fs"));var h_=_f.env.isTest()?".budibase-test":".budibase",Ts=(0,xs.join)((0,Cf.tmpdir)(),h_),y_="dev_license.txt",Cn=(0,xs.join)(Ts,y_);if(!Kt.default.existsSync(Ts))try{Kt.default.mkdirSync(Ts)}catch{}function b_(){try{if(Kt.default.existsSync(Cn)){let e=Kt.default.readFileSync(Cn,{encoding:"utf-8"});return cn(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}n(b_,"getOfflineLicense");function A_(e){console.log(`Writing license to: ${Cn}`),Kt.default.writeFileSync(Cn,e,{encoding:"utf-8"})}n(A_,"writeDevLicenseToDisk");function I_(){Kt.default.rmSync(Cn,{force:!0})}n(I_,"deleteDevLicense");var Of=require("dd-trace");var Es=n(async()=>await Of.tracer.trace("getLicense",async e=>{if(Rs.env.OFFLINE_MODE)return e.addTags({offline:!0}),vs();let t=await ir();return t||(e.addTags({offlineFallback:!0}),t=On.getOfflineLicense()),t}),"getLicense"),_s=n(e=>$o(e),"getLicenseFromKey"),Cs=n(()=>Rs.env.SELF_HOSTED?je.SELF_FREE_LICENSE:je.CLOUD_FREE_LICENSE,"getFreeLicense");var Ls={};_(Ls,{activateLicenseKey:()=>w_,deleteLicenseKey:()=>S_,getLicenseKey:()=>Ca});var Os=G(require("dd-trace"));async function w_(e){await jo(e),await $e.save({licenseKey:e}),await Qt()}n(w_,"activateLicenseKey");async function Ca(){return await Os.default.trace("getLicenseKey",async e=>{let t=await $e.get();return e.addTags({licenseKey:t.licenseKey}),t.licenseKey})}n(Ca,"getLicenseKey");async function S_(){return await Os.default.trace("deleteLicenseKey",async()=>{await $e.save({licenseKey:void 0}),await Qt()})}n(S_,"deleteLicenseKey");var Ht=require("@budibase/backend-core"),Oa=G(require("dd-trace"));var Lf=3600,Qt=n(async()=>{await Uf(),await qf()},"refresh"),Pf=n(async(e,t)=>{let{populateLicense:r=Es,populateFreeLicense:a=Cs}=t||{};return await Oa.default.trace("getCachedLicense",async o=>{let s=Ht.context.getLicense();if(s)return o.addTags({foundInContext:!0,features:s.features,plan:s.plan,quotas:s.quotas}),s;let i=Ht.tenancy.getTenantId(),u=await _o(),c=await u.get(i);return o.addTags({tenantId:i,foundInCache:!!c}),c?(o.addTags({foundInCache:!0,refreshedAt:c.refreshedAt,features:c.features,plan:c.plan,quotas:c.quotas}),c):(c=await Oa.default.trace("populateLicense",async()=>await r(i)),o.addTags({populatedLicense:!!c}),c||(c=Oa.default.trace("populateFreeLicense",()=>a(e,i)),o.addTags({populatedFreeLicense:!!c})),c.refreshedAt=new Date().toISOString(),o.addTags({refreshedAt:c.refreshedAt,features:c.features,plan:c.plan,quotas:c.quotas,expirySeconds:Lf}),await u.store(i,c,Lf),c)})},"_getCachedLicense");Ht.env.isJest()&&(Pf=jest.fn());var qf=Pf,Uf=n(async()=>{let e=Ht.tenancy.getTenantId();await(await _o()).delete(e)},"invalidate");async function he(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}n(he,"areFeaturesEnabled");async function La(e,t){if(!await he(e,t))throw new bt.FeatureDisabledWarning(e)}n(La,"checkFeature");async function Ps(e,t){if(!await he(e,t)){let r=e.join(", ");throw new bt.FeatureDisabledWarning(r)}}n(Ps,"checkFeatures");function _e(e){return async(...t)=>(await La(ge.Feature.WORKSPACE_BACKUPS),e(...t))}n(_e,"checkBackups");async function qs(){return he(ge.Feature.WORKSPACE_BACKUPS)}n(qs,"isBackupsEnabled");async function Us(){return he(ge.Feature.BRANDING)}n(Us,"isBrandingEnabled");async function kf(){return he(ge.Feature.ENFORCEABLE_SSO)}n(kf,"isEnforceableSSO");async function T_(){return he(ge.Feature.SYNC_AUTOMATIONS)}n(T_,"isSyncAutomationsEnabled");async function x_(){return he(ge.Feature.TRIGGER_AUTOMATION_RUN)}n(x_,"isTriggerAutomationRunEnabled");async function ks(){return he(ge.Feature.APP_BUILDERS)}n(ks,"isAppBuildersEnabled");async function Pa(){return he(ge.Feature.AUDIT_LOGS)}n(Pa,"isAuditLogsEnabled");async function Ds(){return he(ge.Feature.USER_GROUPS)}n(Ds,"isUserGroupsEnabled");function R_(){return he(ge.Feature.PWA)}n(R_,"isPWAEnabled");function E_(){return he(ge.Feature.RECAPTCHA)}n(E_,"isRecaptchaEnabled");var __=n(()=>he(ge.Feature.PKCE_OIDC),"isPkceOidcEnabled");async function C_(){return he(ge.Feature.TRANSLATIONS)}n(C_,"isTranslationsEnabled");async function At(){return he(ge.Feature.EXPANDED_PUBLIC_API)}n(At,"isExpandedPublicApiEnabled");async function O_(e){if(bt.env.ENABLE_SSO_MAINTENANCE_MODE||!await kf())return!1;let r;return e?.config?r=e.config:r=await bt.configs.getSettingsConfig(),!!r.isSSOEnforced}n(O_,"isSSOEnforced");var Ms=n(async()=>{let e=ge.Feature.SCIM,t=await he(e),r=await bt.configs.getSCIMConfig();if(!t||!r?.enabled)throw new bt.FeatureDisabledWarning(e);return!0},"checkSCIM");async function L_(){return he(ge.Feature.VIEW_PERMISSIONS)}n(L_,"isViewPermissionEnabled");async function P_(){return he(ge.Feature.VIEW_READONLY_COLUMNS)}n(P_,"isViewReadonlyColumnsEnabled");var q_={faviconUrl:void 0,faviconUrlEtag:void 0,emailBrandingEnabled:!0,platformTitle:void 0,loginHeading:void 0,loginButton:void 0,metaDescription:void 0,metaImageUrl:void 0,metaTitle:void 0};async function U_(e){return await Us()?{faviconUrl:e.faviconUrl,faviconUrlEtag:e.faviconUrlEtag,emailBrandingEnabled:e.emailBrandingEnabled,platformTitle:e.platformTitle,loginHeading:e.loginHeading,loginButton:e.loginButton,metaDescription:e.metaDescription,metaImageUrl:e.metaImageUrl,metaTitle:e.metaTitle}:q_}n(U_,"getBrandingConfig");var Ns={};_(Ns,{enrichAIConfig:()=>Bs});var Df=require("@budibase/backend-core");var k_="budibase_ai";async function Bs(e){if(Df.env.SELF_HOSTED)return e;for(let t of Object.values(e.config))if(t.provider==="BudibaseAI")return e;return e.config[k_]={provider:"BudibaseAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-5-mini",name:"Budibase AI"},e}n(Bs,"enrichAIConfig");var dt={};_(dt,{addAction:()=>G_,addApp:()=>F_,addAutomation:()=>H_,addGroup:()=>Fs,addPlugin:()=>$s,addRow:()=>$_,addRows:()=>Q_,addUsers:()=>Da,bustCache:()=>Uo,decrement:()=>It,decrementMany:()=>Ln,getCurrentUsageValues:()=>pc,getLicensedQuota:()=>Bf,getQuotaUsage:()=>Gt,increment:()=>Me,incrementBudibaseAICredits:()=>Ba,incrementMany:()=>Vt,removeApp:()=>W_,removeGroup:()=>Ws,removePlugin:()=>Qs,removeRow:()=>j_,removeRows:()=>K_,removeUsers:()=>Rr,set:()=>Gs,setAllUsage:()=>Do,setAppUsageValue:()=>ko,setUsage:()=>ic,setUsagePerApp:()=>uc,updatePluginCount:()=>Ks,updateUsage:()=>vr,usageLimitIsExceeded:()=>N_,utils:()=>Fr});var Ua=require("@budibase/types");var tt=require("@budibase/backend-core"),de=require("@budibase/types"),Yt=require("dd-trace");var Me=n(async(e,t,r)=>await Yt.tracer.trace("quotas.increment",async a=>(a.addTags({name:e,type:t}),await Mf({change:1,name:e,type:t,opts:r}))),"increment"),Vt=n(e=>Yt.tracer.trace("quotas.incrementMany",async()=>Mf(e)),"incrementMany"),Mf=n(async e=>await Yt.tracer.trace("quotas.tryIncrement",async t=>{let r=Array.isArray(e)?e:[e];t.addTags({numActions:r.length}),await vr(r.map(o=>({usageChange:o.change,name:o.name,type:o.type,opts:{dryRun:!0,suppressErrorLog:o.opts?.suppressErrorLog,id:o.opts?.id}})));let a=[];for(let o of r)await Yt.tracer.trace("quotas.incrementMany.fn",async s=>{s.addTags({actionName:o.name,actionType:o.type,actionChange:o.change});let i=o.opts?.fn;i&&a.push(await i())});return await vr(r.map(o=>({usageChange:o.change,name:o.name,type:o.type,opts:{dryRun:!1,valueFn:o.opts?.valueFn,suppressErrorLog:o.opts?.suppressErrorLog,id:o.opts?.id}}))),a[0]}),"tryIncrement"),It=n((e,t,r={})=>vr({usageChange:-1,name:e,type:t,opts:r}),"decrement"),Ln=n(e=>{let t=Array.isArray(e)?e:[e];return vr(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},"decrementMany"),Gs=n(async(e,t,r)=>ze.setUsage(r,e,t),"set"),D_=n((e,t,r)=>{if(e==de.QuotaUsageType.STATIC){let a=r.usageQuota.triggers;return a?a[t]||{}:{}}else{let a=ze.utils.getCurrentMonthString(),o=r.monthly[a].triggers;return o?o[t]||{}:{}}},"getExistingTriggers"),M_=n(async(e,t,r,a)=>{try{await tt.locks.doWithLock({type:de.LockType.TRY_ONCE,name:de.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let o={percentage:r,name:t.name};a&&(o.resetDate=a),await Ot.triggerQuota(o)})}catch(o){tt.logging.logAlert("Error triggering quota",o)}},"triggerQuota"),B_=n(async(e,t,r,a)=>{let o=await Gt(),s=e===de.QuotaUsageType.MONTHLY?o.quotaReset:void 0,i=await D_(e,t,o),u=a.triggers,c=r/a.value*100;c>100&&(c=100);for(let[d,m]of u.entries())if(c>=m&&a.value!==yt.UNLIMITED){if(!i[m]){i[m]=new Date().toISOString();let g=u[d+1]||100;(!(c>=g)||c===m)&&await M_(t,a,c,s)}}else i[m]=void 0;return i},"checkTriggers"),vr=n(async e=>{await Yt.tracer.trace("quotas.updateUsage",async t=>{let r=tt.tenancy.getTenantId(),a=Array.isArray(e)?e:[e];t.addTags({numActions:a.length,tenantId:r});let o,s,i=[],u={},c={},d={},m={};for(let g of a)await Yt.tracer.trace("quotas.updateUsage.action",async T=>{T.addTags({actionName:g.name,actionType:g.type,actionUsageChange:g.usageChange});try{o=tt.context.getWorkspaceId()}catch{}if(de.APP_QUOTA_NAMES.includes(g.name)&&!o)throw new Error("App context required for quota update");try{s=await Bf(de.QuotaType.USAGE,g.name,g.type),i.push(s);let{total:D,app:k,breakdown:C}=await ze.getCurrentUsageValues(g.type,g.name,g.opts?.id);D+=g.usageChange,k!=null&&(k+=g.usageChange),C!=null&&(C+=g.usageChange);let W={};if(g.opts?.dryRun||(W=await B_(g.type,g.name,D,s),m={...m,[g.name]:W}),s.value!==yt.UNLIMITED&&D>s.value&&g.usageChange>0)throw new tt.UsageLimitWarning(`${g.name}`);if(D=Math.max(0,D),k&&(k=Math.max(0,k)),C&&(C=Math.max(0,C),d={...d,[g.name]:C}),!g.opts?.dryRun){let Ae=g.opts?.valueFn;Ae&&(D=await Ae(),k=D),u={...u,[g.name]:D},c={...c,[g.name]:k}}}catch(D){throw g.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${g.name}`,D),D}});let y=a.filter(g=>!g.opts?.dryRun).map(g=>({name:g.name,type:g.type,values:{total:u[g.name],app:c[g.name],breakdown:d[g.name],triggers:m[g.name]},opts:{...g.opts,tenantId:r}}));y.length>0&&await ze.setAllUsage(y)})},"updateUsage"),Bf=n(async(e,t,r)=>{let a=await Xe.getCachedLicense();if(!a){let o=tt.tenancy.getTenantId();throw new Error("License not found for tenant id "+o)}if(r&&(0,de.isStaticQuota)(e,r,t))return a.quotas[e][r][t];if(r&&(0,de.isMonthlyQuota)(e,r,t))return a.quotas[e][r][t];if((0,de.isConstantQuota)(e,t))return a.quotas[e][t];throw new Error("Invalid quota type")},"getLicensedQuota"),N_=n(async({name:e,type:t,usageChange:r})=>{try{return await vr({usageChange:r,name:e,type:t,opts:{dryRun:!0}}),!1}catch(a){if(a.code===de.APIWarningCode.USAGE_LIMIT_EXCEEDED)return!0;throw a}},"usageLimitIsExceeded");var G_=n(async e=>Me(Ua.MonthlyQuotaName.ACTIONS,Ua.QuotaUsageType.MONTHLY,{fn:e}),"addAction");var Nf=require("@budibase/backend-core"),Tr=require("@budibase/types");var Gf=n(async()=>{let e=await Nf.db.getAllWorkspaces({dev:!0});return e?e.length:0},"getDevAppsCount"),F_=n(async(e,{appId:t}={})=>Me(Tr.StaticQuotaName.WORKSPACES,Tr.QuotaUsageType.STATIC,{fn:e,valueFn:Gf,id:t}),"addApp"),W_=n(async({appId:e}={})=>It(Tr.StaticQuotaName.WORKSPACES,Tr.QuotaUsageType.STATIC,{valueFn:Gf,id:e}),"removeApp");var pt=require("@budibase/types");var $_=n(async(e,{tableId:t}={})=>Me(pt.StaticQuotaName.ROWS,pt.QuotaUsageType.STATIC,{fn:e,id:t}),"addRow"),j_=n(async({tableId:e}={})=>It(pt.StaticQuotaName.ROWS,pt.QuotaUsageType.STATIC,{id:e}),"removeRow"),Q_=n(async(e,t,{tableId:r}={})=>Vt({change:e,name:pt.StaticQuotaName.ROWS,type:pt.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),"addRows"),K_=n(async(e,{tableId:t}={})=>Ln({change:e,name:pt.StaticQuotaName.ROWS,type:pt.QuotaUsageType.STATIC,opts:{id:t}}),"removeRows");var ka=require("@budibase/types");var H_=n(async(e,{automationId:t}={})=>Me(ka.MonthlyQuotaName.AUTOMATIONS,ka.QuotaUsageType.MONTHLY,{fn:e,id:t}),"addAutomation");var xr=require("@budibase/types");var Fs=n(async e=>Me(xr.StaticQuotaName.USER_GROUPS,xr.QuotaUsageType.STATIC,{fn:e}),"addGroup"),Ws=n(async()=>It(xr.StaticQuotaName.USER_GROUPS,xr.QuotaUsageType.STATIC),"removeGroup");var Ut=require("@budibase/types");var $s=n(async e=>Me(Ut.StaticQuotaName.PLUGINS,Ut.QuotaUsageType.STATIC,{fn:e}),"addPlugin"),Qs=n(async()=>It(Ut.StaticQuotaName.PLUGINS,Ut.QuotaUsageType.STATIC),"removePlugin"),Ks=n(async e=>Gs(Ut.StaticQuotaName.PLUGINS,Ut.QuotaUsageType.STATIC,e),"updatePluginCount");var lt=require("@budibase/types"),Pn=require("@budibase/backend-core");var Da=n(async(e,t,r)=>{let a=[{change:e,name:lt.StaticQuotaName.USERS,type:lt.QuotaUsageType.STATIC,opts:{fn:r,valueFn:Pn.users.getUserCount}}];t>0&&a.push({change:t,name:lt.StaticQuotaName.CREATORS,type:lt.QuotaUsageType.STATIC,opts:{valueFn:Pn.users.getCreatorCount}});let o=await Vt(a);return await ir(),o},"addUsers"),Rr=n(async(e,t)=>{let r=[{change:e,name:lt.StaticQuotaName.USERS,type:lt.QuotaUsageType.STATIC,opts:{valueFn:Pn.users.getUserCount}}];t>0&&r.push({change:t,name:lt.StaticQuotaName.CREATORS,type:lt.QuotaUsageType.STATIC,opts:{valueFn:Pn.users.getCreatorCount}}),await Ln(r),await ir()},"removeUsers");var Ma=require("@budibase/types");var Ba=n(async e=>Vt({change:e,name:Ma.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:Ma.QuotaUsageType.MONTHLY}),"incrementBudibaseAICredits");var Wa={};_(Wa,{db:()=>Be});var Js=require("@budibase/backend-core");var re={};_(re,{addUsers:()=>Fa,adjustGroupCreatorsQuotas:()=>J_,cleanupApp:()=>z_,enrichUserRolesFromGroups:()=>V_,fetch:()=>qn,get:()=>Er,getBulk:()=>Kf,getGroupBuilderAppIds:()=>Qf,getGroupRoleId:()=>Y_,remove:()=>Ys,removeUsers:()=>Vs,save:()=>Ga,updateGroupApps:()=>zs});var M=require("@budibase/backend-core");var Ff=require("@budibase/backend-core");var Na=class extends Ff.HTTPError{static{n(this,"GroupNameUnavailableError")}constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function Hs(e,t){try{let r=[];for(let u of e)if(u.roles){let c=u.roles[M.db.getProdWorkspaceID(t)];c&&r.push(c)}let a=await Promise.all(r.map(async u=>({[u]:await M.roles.roleToNumber(u)}))),o,s,i={};a.forEach(u=>{let[c,d]=Object.entries(u)[0];i[c]={roleId:c,roleNum:d}});for(let{roleId:u,roleNum:c}of Object.values(i))(s===void 0||c>s)&&(s=c,o=u);return o}catch(r){throw M.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}n(Hs,"findHighestRole");async function jf(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await z.getBulk(e,{enriched:!1}),t}n(jf,"groupList");async function Qf(e,t){if(!e.userGroups)return[];let r=await jf(e.userGroups,t?.groups),a=t?.appId?M.db.getProdWorkspaceID(t?.appId):null,o=[];for(let s of r){let i=s.builder?.apps;a&&i?.includes(a)?o.push(a):a||(o=o.concat(i||[]))}return[...new Set(o)]}n(Qf,"getGroupBuilderAppIds");async function Y_(e,t,r){if(!e.userGroups)return null;let a=await jf(e.userGroups,r?.groups),o=M.db.getProdWorkspaceID(t);return e.roles?.[o]?e.roles[o]:(a=a.filter(u=>u?.roles?Object.keys(u.roles).includes(o):!1),M.context.getCurrentContext()?.appId===t?Hs(a,t):await M.context.doInWorkspaceContext(t,async()=>Hs(a,t)))}n(Y_,"getGroupRoleId");async function V_(e){if(!e||!e.userGroups)return e;let t=await Kf(e.userGroups,{enriched:!1}),r=[];for(let o of t)o?.roles&&(r=r.concat(Object.keys(o.roles)));r=[...new Set(r)];for(let o of r)await M.context.doInWorkspaceContext(o,async()=>{if(e.roles[o])return;let s=await Hs(t,o);s&&(e.roles[o]=s)});let a=await Qf(e,{groups:t});if(a.length&&!e.builder?.global){let o=e.builder?.apps||[];e.builder={...e.builder,apps:o.concat(a)}}return e}n(V_,"enrichUserRolesFromGroups");async function qn(){return await z.fetch()}n(qn,"fetch");async function Er(e){return await z.get(e)}n(Er,"get");async function Kf(e,t={enriched:!0}){return z.getBulk(e,t)}n(Kf,"getBulk");async function Wf(e){if(await z.getByName(e))throw new Na(e)}n(Wf,"guardNameAvailability");async function $f(e){let t=await z.getGroupUsers(e._id);if(!t.length)return 0;let a=await M.tenancy.getGlobalDB().getMultiple(t.map(s=>s._id));return(await M.userUtils.creatorsInList(a)).filter(s=>s).length}n($f,"getCreatorsCountInGroup");async function Ga(e){let t=[],r=!e._id,a=0;if(!e._id)e._id=z.generateUserGroupID(),await Wf(e.name),t.push(M.events.group.created(e));else{let u=await z.get(e._id);if(u.name!==e.name&&await Wf(e.name),t.push(M.events.group.updated(e)),JSON.stringify(u.roles)!==JSON.stringify(e.roles)){let c=u.users?.length||0,d=0;c>0&&(d=await $f(u)),Object.values(e.roles).includes("CREATOR")?a=c-d:a=-c,t.push(M.events.group.permissionsEdited(e))}}await Promise.all(t);let{users:o,...s}=e,i=n(()=>z.save(s),"saveGroup");if(r)return await Fs(i);{let u=await i();if(a>0)await Da(0,a);else if(a<0){let c=await $f(e),d=Math.abs(a)-c;d>0&&await Rr(0,d)}return u}}n(Ga,"save");async function Ys(e,t){let r;try{r=await z.get(e)}catch{throw new Error("Group not found")}let a=Object.values(r.roles||{}).includes("CREATOR"),o=n(()=>{},"recalculateCreatorsQuotasFn");if(a){let i=M.tenancy.getGlobalDB(),u=await z.getGroupUsers(e),d=(await Promise.all(u.map(T=>i.get(T._id)))).map(T=>({...T,userGroups:T.userGroups.filter(B=>B!==e)})),y=(await M.userUtils.creatorsInList(d)).filter(T=>T).length,g=u.length-y;g&&(o=n(()=>Rr(0,g),"recalculateCreatorsQuotasFn"))}let s=await z.destroy(e,t);return await M.events.group.deleted(r),await Ws(),await o(),s}n(Ys,"remove");async function Fa(e,t){let r=await z.get(e),a=await M.users.bulkGetGlobalUsersById(t),o=[];for(let c of a)c.userGroups||(c.userGroups=[]),c.userGroups.includes(e)||o.push(c);if(!o.length)return o;let s=o.map(c=>({...c,userGroups:[...c?.userGroups||[],e]}));if(await M.users.bulkUpdateGlobalUsers(s),Object.values(r.roles||{}).includes("CREATOR")){let d=(await M.userUtils.creatorsInList(o)).filter(y=>y).length,m=o.length-d;m&&await Da(0,m)}let u=[];for(let c of t)u.push(M.cache.user.invalidateUser(c));return await Promise.all(u),await M.events.group.usersAdded(s.length,r,t),s}n(Fa,"addUsers");async function Vs(e,t){let r=await z.get(e),a=await M.users.bulkGetGlobalUsersById(t),o=[];for(let u of a){if(!u.userGroups||!u.userGroups.includes(e))continue;let c=u.userGroups.indexOf(e);u.userGroups.splice(c,1),o.push(u)}if(await M.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes("CREATOR")){let c=(await M.userUtils.creatorsInList(o)).filter(m=>m).length,d=o.length-c;d&&await Rr(0,d)}let i=[];for(let u of t)i.push(M.cache.user.invalidateUser(u));return await Promise.all(i),o.length&&await M.events.group.usersDeleted(o.length,r,t),o}n(Vs,"removeUsers");async function zs(e,t){let r=await Er(e);if(r.roles||(r.roles={}),t.appsToAdd)for(let a of t.appsToAdd)r.roles[a.appId]=a.roleId;if(t.appsToRemove)for(let a of t.appsToRemove)delete r.roles[a.appId];if(r.builder={apps:Object.entries(r.roles).filter(([a,o])=>o==="CREATOR").map(([a])=>a)},r.builder.apps.length&&!ks())throw new M.HTTPError("Feature not enabled, please check license",400);return await Ga(r)}n(zs,"updateGroupApps");async function z_(e){let t=await qn(),r=[];for(let a of t)!a.roles||!a.roles[e]||(delete a.roles[e],r.push(a));return await z.bulkSave(r)}n(z_,"cleanupApp");async function J_(){if(!await Ds()){let e=M.tenancy.getGlobalDB(),r=(await qn()||[]).filter(a=>Object.values(a?.roles||{}).includes("CREATOR"));for(let a of r){let o=await z.getGroupUsers(a._id),i=(await Promise.all(o.map(m=>e.get(m._id)))).map(m=>({...m,userGroups:m.userGroups.filter(y=>y!==a._id)})),c=(await M.userUtils.creatorsInList(i)).filter(m=>m).length,d=o.length-c;await z.save({...a,roles:{}}),d&&await Rr(0,d)}}}n(J_,"adjustGroupCreatorsQuotas");Js.users.UserDB.init(dt,re,et);var Be=Js.users.UserDB;var Ka={};_(Ka,{logs:()=>ai});var ai={};_(ai,{logSearch:()=>sC,oldestLogDate:()=>Zf,storeLog:()=>iC});var Qa=require("@budibase/backend-core"),Xf=require("@budibase/types");var ye=require("@budibase/backend-core"),ja=require("@budibase/types");var Hf=require("@budibase/backend-core");async function Yf(e,t){let r,a=5,o=!1,s,i=!0;for(;a>0;a--)try{i?s=await e():s=await exports.randomDelay(e),o=!0;break}catch(u){r=u}return o||Hf.logging.logWarn(`Failed to backoff: ${t}`,r),s}n(Yf,"backOff");var{SEPARATOR:wt,UNICODE_MAX:X_,DocumentType:Vf,AutomationViewMode:Xs,ViewName:Z_,getQueryIndex:eC}=ye.db,tC=new Date(0).toISOString(),rC=100,$a=10,Zs=n(async()=>ua(ja.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS),"oldestLogDate");function zf(e,t,{status:r,automationId:a}={},o={}){let s=a?`${a}${wt}`:"",i=r?`${r}${wt}`:"",u;return r&&a?u=`${Xs.ALL}${wt}${i}${s}`:r?u=`${Xs.STATUS}${wt}${i}`:a?u=`${Xs.AUTOMATION}${wt}${s}`:u=`${Vf.AUTOMATION_LOG}${wt}`,{...o,descending:!0,startkey:`${u}${t}${X_}`,endkey:`${u}${e}`}}n(zf,"getAutomationLogParams");function nC(e,t,r){return`${Vf.AUTOMATION_LOG}${wt}${e}${wt}${r}${wt}${t}`}n(nC,"generateAutomationLogID");async function ei(e,t,r={docs:!0}){let a=ye.context.getProdWorkspaceDB();await a.exists()||(a=ye.context.getDevWorkspaceDB());let o={status:r.status},s=r?.limit?r.limit:r?.paginate?$a+1:void 0,i=zf(e,t,o,{include_docs:r.docs,limit:s});r?.page&&(i.startkey=r.page);let u=await a.allDocs(i),c=sn(u,{paginate:r?.paginate,pageSize:$a});return{...c,totalLogs:c.totalRows}}n(ei,"getAllLogs");async function ti(e,t,r={}){let a=ye.context.getProdWorkspaceDB();await a.exists()||(a=ye.context.getDevWorkspaceDB());let o;try{let i={automationId:r?.automationId,status:r?.status},u=zf(e,t,i,{include_docs:!0,limit:$a+1});r?.page&&(u.startkey=r.page),o=await a.query(eC(Z_.AUTOMATION_LOGS),u)}catch(i){if(i!=null&&(i.name==="not_found"||i.error==="not_found"))return await xc(),ti(e,t,r);throw i}let s=sn(o,{paginate:!0,pageSize:$a});return{...s,totalLogs:s.totalRows/3}}n(ti,"getLogsByView");async function Jf(e,t){let r=ye.context.getProdWorkspaceDB(),a=e._id,o=e.name,s=new Date().toISOString(),i=nC(s,t.status,a),u={...t,automationId:a,status:t.status,automationName:o,createdAt:s,_id:i};return await r.put(u),i}n(Jf,"writeLog");async function ri(e,{clearing:t}={clearing:!1}){let r=ye.context.getProdWorkspaceDB();await Yf(async()=>{let a=await r.get(ye.db.DocumentType.WORKSPACE_METADATA);for(let o of e){let s=o.split(ye.db.SEPARATOR),i=`${s[s.length-3]}${ye.db.SEPARATOR}${s[s.length-2]}`,u={};a.automationErrors&&(u=a.automationErrors),Array.isArray(u[i])||(u[i]=[]);let c=u[i].indexOf(o);t&&c!==-1?u[i].splice(c,1):u[i].push(o),u[i].length===0&&delete u[i],a.automationErrors=u}await r.put(a),await ye.cache.workspace.invalidateWorkspaceMetadata(a.appId,a)},"Failed to update app metadata with automation log error")}n(ri,"updateAppMetadataWithErrors");async function aC(){let e=await Zs();try{return await ei(tC,e,{docs:!1,paginate:!1,limit:rC})}catch{return{data:[],hasNextPage:!1,totalLogs:0}}}n(aC,"getExpiredLogs");async function ni(){let e=ye.context.getProdWorkspaceDB();try{let t=await aC();if(!t.data||t.data.length===0)return;let r=t.data.map(o=>({_id:o.id,_rev:o.value.rev,_deleted:!0})),a=t.data.filter(o=>{let s=o.id.split(ye.db.SEPARATOR);return s[s.length-1]===ja.AutomationStatus.ERROR}).map(o=>o.id);await e.bulkDocs(r),a.length&&await ri(a,{clearing:!0})}catch(t){ye.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}n(ni,"clearOldHistory");var Zf=Zs;async function oC(e,t,r,a){let o,s=new Date().toISOString(),i=await Zf();return(!e||e<i)&&(e=i),r||t?o=await ti(e,s,{automationId:r,status:t,page:a}):o=await ei(e,s,{status:t,page:a,docs:!0,paginate:!0}),o}n(oC,"getLogs");async function sC(e){return await ni(),await oC(e.startDate,e.status,e.automationId,e.page)}n(sC,"logSearch");async function iC(e,t){if(!Qa.db.isProdWorkspaceID(Qa.context.getWorkspaceId()))return;let r=await Jf(e,t);t.status===Xf.AutomationStatus.ERROR&&await ri([r]),await ni()}n(iC,"storeLog");var Ha={};_(Ha,{checkPluginQuotas:()=>pC,deletePlugin:()=>cC,storePlugin:()=>uC});var nm=require("@budibase/types"),fe=require("@budibase/backend-core");var em=G(require("fs")),tm=require("path");function rm(e,t){return em.default.readFileSync((0,tm.join)(e,t),"utf8")}n(rm,"loadJSFile");async function uC(metadata,directory,source,origin){let db=fe.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=fe.objectStore.getPluginS3Dir(name),files=await fe.objectStore.uploadDirectory(fe.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===nm.PluginType.DATASOURCE){let js=rm(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=fe.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}),origin&&origin.source==="github"&&(doc.origin=origin);let write=n(async()=>{let e=await db.put(doc);return await fe.events.plugin.imported(doc),{...doc,_rev:e.rev}},"write");return rev?await write():await $s(write)}n(uC,"storePlugin");async function cC(e){let t=fe.tenancy.getGlobalDB();try{let r=await t.get(e),a=fe.objectStore.getPluginS3Dir(r.name);await fe.objectStore.deleteFolder(fe.objectStore.ObjectStoreBuckets.PLUGINS,a),await t.remove(e,r._rev),await fe.events.plugin.deleted(r),await Qs()}catch(r){let a=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${a}`)}}n(cC,"deletePlugin");async function pC(){let e=fe.tenancy.getGlobalDB();try{let r=(await e.allDocs(fe.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await Ks(r)}catch(t){fe.logging.logAlert("Unable to retrieve plugins for quota check",t)}}n(pC,"checkPluginQuotas");var ft={};_(ft,{fetch:()=>dC,fetchValues:()=>fC,isEncryptionKeyAvailable:()=>lC,isValid:()=>sm,remove:()=>gC,update:()=>mC});var am=require("@budibase/backend-core"),Un=require("@budibase/types");function lC(){return!!am.env.ENCRYPTION_KEY}n(lC,"isEncryptionKeyAvailable");async function dC(){let e=await $t.get();return Object.keys(e.variables)}n(dC,"fetch");async function fC(e){let r=(await $t.get()).variables,a={};for(let[o,s]of Object.entries(r))switch(e){case Un.Environment.DEVELOPMENT:a[o]=s.development;break;case Un.Environment.PRODUCTION:default:a[o]=s.production;break}return a}n(fC,"fetchValues");async function om(e){if(!(await ut.cache.getCachedLicense()).features.includes(Un.Feature.ENVIRONMENT_VARIABLES))throw new Error("User does not have access to environment variables feature.");let r=await $t.get();r.variables=e(r.variables),await $t.update(r)}n(om,"changeValues");async function mC(e,t){if(sm(e))await om(a=>(a[e]=t,a));else throw new Error("Variable name has characters that are not allowed")}n(mC,"update");async function gC(e){await om(t=>(delete t[e],t))}n(gC,"remove");function sm(e){return/^[a-zA-Z0-9-_]+$/.test(e)}n(sm,"isValid");var kt={};_(kt,{definitions:()=>RC,download:()=>xC,fetch:()=>TC,write:()=>SC});var Pe=require("@budibase/backend-core"),Va=require("@budibase/types");var ue=require("@budibase/backend-core"),rt=require("@budibase/types");var im=require("memorystream"),um=new ue.sql.Sql(rt.SqlClient.SQL_LITE);async function hC(e,t,r){let a={operation:rt.Operation.READ,table:ar.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:rt.SortOrder.DESCENDING,type:rt.SortType.STRING}}},o=um._query(a);if(Array.isArray(o))throw new Error("Cannot execute multiple queries for audit log search");return{sql:o.sql,bindings:o.bindings}}n(hC,"getAuditLogSqlQuery");function yC(e){return`${ue.DocumentType.AUDIT_LOG}${ue.SEPARATOR}${e}${ue.SEPARATOR}${ue.utils.newid()}`}n(yC,"generateAuditLogID");async function cm(e){e._id||(e._id=yC(e.timestamp)),e.type||(e.type=rt.AUDIT_LOG_TYPE);try{let r=await ue.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){ue.logging.logAlert("Failed to write audit log",t)}}n(cm,"save");async function oi(e,t,r){t||(t=1);let a=ue.context.getAuditLogsDB();try{let o=9+1,s=await hC(e,t,o),i=ar.searchTable(),u=um.convertJsonStringColumns(i,await a.sql(s.sql,s.bindings)),c;u.length>o&&(c=u.pop());let d={rows:u,hasNextPage:!!c};return d.hasNextPage&&(d.bookmark=t+1),d}catch(o){if(o.status===404&&!r?.isRetry)return await bC(),await lc(),await oi(e,t,{isRetry:!0});throw o}}n(oi,"searchSQL");async function bC(){let e=ue.context.getAuditLogsDB(),r=(await e.allDocs(ue.db.getDocParams(ue.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(a=>a.doc).filter(a=>a&&!a.type).map(a=>({...a,type:rt.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}n(bC,"migrate");function pm(e){let t=ue.context.getAuditLogsDB(),r=new im,a=t.dump(r,{filter:s=>{let i=s;if(!i._id?.startsWith(ue.DocumentType.AUDIT_LOG))return!1;let u=!0,c=n((d,m)=>{!d||d.length===0||(u=!!(u&&m&&d.includes(m)))},"matcher");if(c(e.userIds,i.userId),c(e.appIds,i.appId),c(e.events,i.event),(e.startDate||e.endDate)&&(u=u&&i.timestamp>=e.startDate&&i.timestamp<=e.endDate),e.fullSearch){let d=JSON.stringify(s);u=u&&d.includes(e.fullSearch)}return u}}),o=new im;return r.on("data",s=>{let i=JSON.parse(Buffer.from(s).toString());if(Array.isArray(i.docs)){let u="";for(let c of i.docs)u+=JSON.stringify(c)+`
|
|
38
|
+
`;o.write(u)}}),r.on("end",()=>{o.end()}),{promise:a,stream:o}}n(pm,"dump");var kn=require("@budibase/backend-core"),Dn=require("@budibase/string-templates"),Ya=require("@budibase/types");var IC=kn.constants.MIN_VALID_DATE.toISOString(),wC=kn.constants.MAX_VALID_DATE.toISOString();function si(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||IC,e.endDate=e.endDate||wC),e}n(si,"fillDates");async function lm(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(a=>kn.db.getProdWorkspaceID(a)));let t={};function r(a,o){o?.length&&(t.oneOf={...t.oneOf,[a]:o})}return n(r,"addStringParams"),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=si(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}n(lm,"getSearchFilters");function ii(e,t,r){let a={_id:e,status:Ya.AuditLogResourceStatus.DELETED};switch(t){case"app":a.name=r?.appName;break;case"user":a.email=r?.email;break}return a}n(ii,"deleted");function ui(e){let t=(0,Dn.findHBSBlocks)(e);for(let r of t){let a=` "${r}"`;e=e.replace(e.includes(a)?a:` ${r}`,""),e=(0,Dn.processStringSync)(e,{})}return e}n(ui,"removeTemplateStrings");function dm(e,t){let r=Ya.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let a=(0,Dn.processStringSync)(r,t);return a.includes('""')&&(a=ui(r)),a}n(dm,"getEventFriendlyName");async function SC(e,t,r){if(!await Pa()||!Pe.utils.isAudited(e))return;let a=dm(e,t),o=new Date;r?.timestamp&&(o=new Date(r.timestamp));let s={timestamp:o.toISOString(),event:e,name:a,userId:r?.userId||Va.AuditLogSystemUser,metadata:{...t,...r?.hostInfo}},i={};try{if(r?.appId){s.appId=Pe.db.getProdWorkspaceID(r.appId);let u=await Pe.cache.workspace.getWorkspaceMetadata(r.appId);"name"in u&&(i.appName=u.name)}if(r?.userId){let u=await Pe.users.getById(r?.userId);i.email=u.email}}catch(u){Pe.logging.logAlert("Failed to retrieve fallback information for audit log",u)}return s.fallback=i,await cm(s)}n(SC,"write");async function vC(e){let t=e.map(u=>u.userId),a=e.filter(u=>u.appId).map(u=>Pe.db.getDevWorkspaceID(u.appId)),o=await Pe.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),s=await Pe.db.getWorkspacesByIDs([...new Set(a)]),i=[];for(let u of e){let c=o.find(y=>y?._id===u.userId),d=s.find(y=>Pe.db.isSameWorkspaceID(y?.appId,u.appId)),m={event:u.event,timestamp:u.timestamp,name:u.name,metadata:u.metadata,user:c||ii(u.userId,"user",u.fallback)};u.appId&&(m.app=d||ii(u.appId,"app",u.fallback)),i.push(m)}return i}n(vC,"enrich");async function TC(e){if(!await Pa())throw new Error("Audit logs not available - license required.");let t=await lm(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await oi(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await vC(r.rows)}}n(TC,"fetch");function xC(e){return e=si(e),pm(e)}n(xC,"download");function RC(){let e=Object.entries(Va.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=ui(r[1]);return t}n(RC,"definitions");var za={};_(za,{applications:()=>di,roles:()=>pi,users:()=>ci});var ci={};_(ci,{roleCheck:()=>_C});function EC(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}n(EC,"removeRoles");async function _C(e,t){return await At()||EC(e,t),e}n(_C,"roleCheck");var pi={};_(pi,{assign:()=>CC,unAssign:()=>OC});var Mn=require("@budibase/backend-core");async function CC(e,t){if(!await At())throw new Error("Unable to assign roles - license required.");let r=await Be.bulkGet(e);for(let a of r){if(t.role&&t.role.roleId){let o=Mn.db.getProdWorkspaceID(t.role.appId);a.roles[o]=t.role.roleId}if(t.appBuilder){let o=Mn.db.getProdWorkspaceID(t.appBuilder.appId),s=a.builder?.apps||[];a.builder={apps:s.concat([o])}}t.builder&&(a.builder={global:!0}),t.admin&&(a.admin={global:!0}),a.roles}await Be.bulkUpdate(r)}n(CC,"assign");async function OC(e,t){if(!await At())throw new Error("Unable to un-assign roles - license required.");let r=await Be.bulkGet(e);for(let a of r){if(t.role){let o=Mn.db.getProdWorkspaceID(t.role?.appId);a.roles[o]===t.role.roleId&&delete a.roles[o]}if(t.appBuilder&&a.builder?.apps){let o=Mn.db.getProdWorkspaceID(t.appBuilder.appId);a.builder.apps=a.builder.apps.filter(s=>s!==o)}t.builder&&a.builder&&delete a.builder,t.admin&&a.admin&&delete a.admin}await Be.bulkUpdate(r)}n(OC,"unAssign");var di={};_(di,{buildExportFn:()=>qC,buildImportFn:()=>PC});var li=require("@budibase/backend-core");var LC=n(e=>{if(e){if(e.appExport)return e.appExport;if(e.file)return e.file}},"ensureAppExportFile");function PC(e){return async(t,r)=>{await At()||t.throw(403,"Endpoint unavailable, license required."),LC(t.request.files)||t.throw(400,"Must provide app export file for import."),await li.context.doInWorkspaceContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}n(PC,"buildImportFn");function qC(e){return async(t,r)=>{await At()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:a,excludeRows:o}=t.request.body;await li.context.doInWorkspaceContext(t.params.appId,async()=>{t.request.body={encryptPassword:a,excludeRows:o},t.query.appId=t.params.appId,await e(t),await r()})}}n(qC,"buildExportFn");var we=require("@budibase/backend-core"),Ie=require("@budibase/types"),gm=G(require("fs")),hm=require("path");var fi=require("@budibase/backend-core");var fm;function mm(){fm=new fi.queue.BudibaseQueue(fi.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}n(mm,"init");function zt(){return fm}n(zt,"getBackupQueue");async function mi(e,t={}){return Qe.storeAppBackupMetadata(e,t)}n(mi,"storeAppBackupMetadata");function ym(e){let t=new Date().toISOString();switch(e){case Ie.BackupStatus.COMPLETE:case Ie.BackupStatus.FAILED:return{timestamp:t,finishedAt:t};case Ie.BackupStatus.STARTED:return{timestamp:t,startedAt:t};case Ie.BackupStatus.PENDING:return{timestamp:t,createdAt:t}}}n(ym,"getTimestamps");async function UC(e,t,r,a){let o=await Ja(e);return await Qe.storeAppBackupMetadata({...o,...ym(t),contents:r,status:t,type:Ie.BackupType.BACKUP},{filename:a,docId:e})}n(UC,"updateBackupStatus");async function kC(e,t,r){let a=await Ja(e);return await Qe.storeAppBackupMetadata({...a,...ym(r),status:r,type:Ie.BackupType.RESTORE,trigger:Ie.BackupTrigger.MANUAL},{docId:e,docRev:t})}n(kC,"updateRestoreStatus");async function Ja(e){return Qe.getAppBackupMetadata(e)}n(Ja,"getAppBackup");async function DC(e,t){return Qe.updateAppBackupMetadata(e,t)}n(DC,"updateAppBackup");async function bm(e){let t=await Qe.getAppBackupMetadata(e);return t.filename&&await we.objectStore.deleteFile(we.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),Qe.deleteAppBackupMetadata(e)}n(bm,"deleteAppBackup");async function MC(e){let t=[];for(let r of e)try{await bm(r),t.push({backupId:r,success:!0})}catch(a){t.push({backupId:r,success:!1,error:a instanceof Error?a.message:"Unknown error"})}return t}n(MC,"deleteAppBackups");async function BC(e,t){return Qe.fetchAppBackups(e,t)}n(BC,"fetchAppBackups");async function Am(e){let t=await Qe.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let{stream:r}=await we.objectStore.getReadStream(we.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}n(Am,"getBackupDownloadStream");async function NC(e){let{stream:t}=await Am(e),r=(0,hm.join)(we.objectStore.budibaseTempDir(),we.utils.newid()),a=gm.default.createWriteStream(r);return new Promise((o,s)=>{t.on("error",s),a.on("error",s),t.pipe(a).on("close",()=>o(r))})}n(NC,"downloadAppBackup");async function GC(e,t,r={}){let a;try{a=await mi({appId:e,trigger:t,timestamp:new Date().toISOString(),status:Ie.BackupStatus.PENDING,type:Ie.BackupType.BACKUP,...r})}catch(o){if(o.status===409)return;throw o}return await zt().add({docId:a.id,docRev:a.rev,appId:e,export:{trigger:t,...r}}),await we.events.backup.appBackupTriggered(e,a.id,Ie.BackupType.BACKUP,t,r?.name),a.id}n(GC,"triggerAppBackup");async function FC(e,t,r,a){let o=await Ja(t),s;try{s=await mi({appId:e,timestamp:new Date().toISOString(),status:Ie.BackupStatus.PENDING,type:Ie.BackupType.RESTORE,createdBy:a})}catch(i){if(i?.status===409)return;throw i}return await zt().add({appId:e,docId:s.id,docRev:s.rev,import:{nameForBackup:r,backupId:t,createdBy:a}}),{restoreId:s.id,metadata:o}}n(FC,"triggerAppRestore");async function WC(e,t,r){let a=we.db.getProdWorkspaceID(e);await we.context.doInWorkspaceContext(a,async()=>{let o=we.context.getProdWorkspaceDB();if(!await o.exists())return;let i=await o.tryGet(Ie.DocumentType.WORKSPACE_METADATA);i&&(i.backupErrors||(i.backupErrors={}),i.backupErrors[t]||(i.backupErrors[t]=[]),i.backupErrors[t].push(r),await o.put(i),await we.cache.workspace.invalidateWorkspaceMetadata(i.appId,i))})}n(WC,"trackBackupError");var $C={isEnabled:qs,triggerAppRestore:_e(FC),triggerAppBackup:_e(GC),getBackupDownloadStream:_e(Am),downloadAppBackup:_e(NC),fetchAppBackups:_e(BC),storeAppBackupMetadata:_e(mi),updateBackupStatus:_e(UC),updateRestoreStatus:_e(kC),getAppBackup:_e(Ja),updateAppBackup:_e(DC),deleteAppBackup:_e(bm),deleteAppBackups:_e(MC),trackBackupError:_e(WC)},He=$C;var hi={};_(hi,{init:()=>gi});var ne=require("@budibase/backend-core"),nt=require("@budibase/types"),_r=G(require("fs"));async function gi(e){zt().process(async t=>{let r=t.data;try{if(r.export)return console.log("Exporting app backup:",r.appId,r.export.trigger),KC(t,e);if(r.import)return console.log("Importing app backup:",r.appId,r.import.backupId),QC(t,e)}catch(a){ne.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,a)}})}n(gi,"init");async function jC(e){await ne.db.getDB(e,{skip_setup:!0}).destroy()}n(jC,"removeExistingApp");async function Im(e,t,r,a){let o=ne.db.getDevWorkspaceID(r),s=ne.db.getProdWorkspaceID(r),i=new Date().toISOString(),u=n(async(c,d)=>{a?.doc?await He.updateBackupStatus(a.doc.id,c,d?.contents,d?.filename):await He.storeAppBackupMetadata({appId:s,timestamp:i,trigger:e,status:c,name:a?.name,type:nt.BackupType.BACKUP,contents:d?.contents,createdBy:a?.createdBy},{filename:d?.filename})},"updateMetadata");try{let c=await a.processing.exportAppFn(o,{tar:!0}),d=await a.processing.statsFn(o),m=`${s}/backup-${i}.tar.gz`,y=ne.objectStore.ObjectStoreBuckets.BACKUPS,g=_r.default.createReadStream(c);await ne.objectStore.streamUpload({bucket:y,filename:m,stream:g,extra:{type:"application/gzip",metadata:{name:a?.name,trigger:e,timestamp:i,appId:s}}}),await u(nt.BackupStatus.COMPLETE,{filename:m,contents:d}),_r.default.existsSync(c)&&_r.default.rmSync(c)}catch(c){ne.logging.logAlert("App backup error",c),await u(nt.BackupStatus.FAILED);let d=a?.doc?.id||`backup-${i}`,m=c instanceof Error?c.message:String(c);await He.trackBackupError(s,d,`Backup export failed: ${m}`)}}n(Im,"runBackup");async function QC(e,t){let r=e.data,a=r.appId,o=r.import.backupId,s=r.import.nameForBackup,i=r.import.createdBy,u=ne.tenancy.getTenantIDFromWorkspaceID(a);return ne.tenancy.doInTenant(u,async()=>{let c=ne.db.getDevWorkspaceID(a),d=`${c}_temp_${Date.now()}`,{rev:m}=await He.updateRestoreStatus(r.docId,r.docRev,nt.BackupStatus.STARTED);await Im(nt.BackupTrigger.RESTORING,u,a,{processing:t,createdBy:i,name:s});let y=await He.downloadAppBackup(o),g=nt.BackupStatus.COMPLETE;try{await t.importAppFn(d,ne.db.getDB(d),{file:{type:"application/gzip",path:y},key:y}),await jC(c),await new ne.db.Replication({source:d,target:c}).replicate()}catch(T){ne.logging.logAlert("App restore error",T),g=nt.BackupStatus.FAILED;let B=T instanceof Error?T.message:String(T);await He.trackBackupError(a,o,`Backup restore failed: ${B}`)}finally{try{await ne.db.getDB(d,{skip_setup:!0}).destroy()}catch{}}await He.updateRestoreStatus(r.docId,m,g),_r.default.existsSync(y)&&_r.default.rmSync(y,{force:!0})})}n(QC,"importProcessor");async function KC(e,t){let r=e.data,a=r.appId,o=r.export.trigger,s=r.export.name,i=ne.tenancy.getTenantIDFromWorkspaceID(a);await ne.tenancy.doInTenant(i,async()=>{try{let{rev:u}=await He.updateBackupStatus(r.docId,nt.BackupStatus.STARTED);return Im(o,i,a,{processing:t,doc:{id:r.docId,rev:u},name:s})}catch(u){ne.logging.logAlert("App backup error",u);let c=u instanceof Error?u.message:String(u);await He.trackBackupError(a,r.docId,`Backup export failed: ${c}`)}})}n(KC,"exportProcessor");var HC=n(async e=>{mm(),await gi(e.processing)},"init"),Ne={...He,processing:hi,init:HC,getBackupQueue:zt};var wm=n(async e=>{e.backups&&await Ne.init(e.backups)},"init");var Ue={};_(Ue,{create:()=>GB,find:()=>NB,get:()=>BB,remove:()=>WB,update:()=>FB});var jb=G(pu()),St=require("@budibase/backend-core");var Qb=require("@budibase/types");async function BB(e){let t=St.tenancy.getGlobalDB(),r=new St.db.QueryBuilder(t.name,Qb.SearchIndex.USER);r.setIndexBuilder(St.db.searchIndexes.createUserIndex),r.setLimit(e.pageSize),r.addEqual("scimInfo.isSync",!0);for(let[o,s]of Object.entries(e.filters?.equal??{}))r.addEqual(o,s);r.setSort("_id"),r.setSkip(e.skip);let a=await r.run();return{users:a.rows,total:a.totalRows}}n(BB,"get");async function NB(e){return await St.users.getById(e)}n(NB,"find");async function GB(e){let t=await Be.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new St.HTTPError("User is already synched",409);e={...t,scimInfo:(0,jb.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await Be.save(e,{requirePassword:!1})}n(GB,"create");async function FB(e,t){return await Be.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}n(FB,"update");async function WB(e){return await Be.destroy(e)}n(WB,"remove");var Ur={};_(Ur,{create:()=>$B});var Kb=G(pu());var Hb=require("@budibase/backend-core");async function $B(e){let t=await Bo(e.name),r;if(!t)r=(await re.save(e)).id;else{if(t.scimInfo?.isSync)throw new Hb.HTTPError("Group is already synched",409);r=t._id,t.users.length&&await re.removeUsers(r,t.users.map(o=>o._id)),t.scimInfo=(0,Kb.default)(t.scimInfo,e.scimInfo),await re.save(t)}return await re.get(r)}n($B,"create");var Xt={};_(Xt,{logRequest:()=>KB,logResponse:()=>HB});var at=require("@budibase/backend-core"),Vb=G(Yb());var{DocWritethrough:jB}=at.cache.docWritethrough;function QB(){return`${at.db.DocumentType.SCIM_LOG}${at.db.SEPARATOR}${(0,Vb.default)().format("YYYYMMDD")}`}n(QB,"getLogDocId");var zb=n(()=>{let e=at.context.getScimDBName();return new jB(at.db.getDB(e),QB())},"getDB");async function KB(e){at.logging.logWarn("SCIM request log",e);let t=Date.now().toString();return await zb().patch({[`${t}_request`]:{ts:new Date().toISOString(),...e}}),t}n(KB,"logRequest");async function HB(e,t){at.logging.logWarn("SCIM response",t),await zb().patch({[`${e}_response`]:{ts:new Date().toISOString(),...t}})}n(HB,"logResponse");var Au={};_(Au,{doInScimContext:()=>mu,feature:()=>Se,internalGroupOnly:()=>Wn,licenseAuth:()=>bu,licensing:()=>Jb,requireSCIM:()=>gu,scimGroupOnly:()=>Fn,scimUserOnly:()=>Gn});var Dt=require("@budibase/backend-core");var po=require("@budibase/types");var YB=n((e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(Dt.env.SELF_HOSTED&&Dt.env.DEFAULT_LICENSE)return t.user.license=No,r();t.user.license=await ut.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(Dt.utils.isServingApp(t)||Dt.utils.isServingBuilder(t)||Dt.utils.isServingBuilderPreview(t)||Dt.utils.isPublicApiRequest(t))&&await dt.usageLimitIsExceeded({name:po.StaticQuotaName.USERS,type:po.QuotaUsageType.STATIC,usageChange:0})}return r()},"licensing"),Jb=YB;var Se={};_(Se,{requireFeature:()=>VB,requireFeatures:()=>zB});var VB=n(e=>async(t,r)=>{await La(e),await r()},"requireFeature"),zB=n((...e)=>async(t,r)=>{await Ps(e),await r()},"requireFeatures");var lo=require("@budibase/backend-core");var mu=n(async(e,t)=>{let r;return lo.env.ENABLE_SCIM_LOGGER&&(r=await Xt.logRequest({...e.request.toJSON(),body:e.request.body})),await lo.context.doInScimContext(async()=>{let a=await t();return r&&await Xt.logResponse(r,{...e.response.toJSON(),body:e.response.body}),a})},"doInScimContext");var gu=n(async(e,t)=>{await Ms(),await t()},"requireSCIM");var Xb=require("@budibase/backend-core");var Gn=n(e=>hu(Xb.users.getById,e,!0),"scimUserOnly"),Fn=n(e=>hu(z.get,e,!0),"scimGroupOnly"),Wn=n(e=>hu(z.get,e,!1),"internalGroupOnly");function hu(e,t,r){return async(a,o)=>{let s=a.params[t];return typeof s!="string"&&a.throw(404),!!(await e(s)).scimInfo?.isSync!==r&&a.throw(404),o()}}n(hu,"scimSyncChecks");var $n=require("@budibase/backend-core");var yu=require("dd-trace");async function bu(e,t){await yu.tracer.trace("licenseAuth",async r=>{let a=e.request.headers[$n.constants.Header.LICENSE_KEY];Array.isArray(a)&&(a=a[0]),r.addTags({licenseKey:a}),a||e.throw(403,"License key not provided");let o=await _s(a);o||(r.addTags({licenseFound:!1}),e.throw(403,"License not found or invalid")),o.tenantId||e.throw(403,"License does not have a tenant ID"),yu.tracer.setUser({id:"anonymous",tenantId:o.tenantId}),await $n.context.doInSelfHostTenantUsingCloud(o.tenantId,async()=>{await $n.context.doInLicenseContext(o,async()=>{await t()})})})}n(bu,"default");var xu={};_(xu,{appBackups:()=>uA,auditLogs:()=>hA,environmentVariables:()=>xA,groups:()=>MA,scim:()=>fI});var vt=require("@budibase/backend-core"),mo=require("@budibase/types"),sA=G(require("@koa/router")),er=G(require("joi"));var fo=require("@budibase/backend-core"),Iu=require("@budibase/types");async function Zt(e,t){t||e.throw(400,"App ID missing"),await cr.workspaceExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}n(Zt,"checkAppID");async function Zb(e){let t=e.params.appId;await Zt(e,t);let{body:r}=e.request,a=e.user?._id,o=await Ne.triggerAppBackup(t,Iu.BackupTrigger.MANUAL,{name:r.name,createdBy:a});o||e.throw(500,"Unable to start backup."),e.body={backupId:o,message:"Backup triggered - process starting."}}n(Zb,"manualBackup");async function eA(e){let t=e.params.appId;await Zt(e,t);let r=e.params.backupId,a=e.request.body.name,o=await Ne.triggerAppRestore(t,r,a,e.user?._id);o||e.throw(500,"Unable to start restore."),await fo.events.backup.appBackupRestored(o.metadata),e.body={restoreId:o?.restoreId,message:"Restore triggered - process starting."}}n(eA,"importBackup");async function tA(e){let t=e.params.appId;await Zt(e,t);let r=e.params.backupId;await Ne.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}n(tA,"deleteBackup");async function rA(e){let t=fo.context.getWorkspaceId();await Zt(e,t);let{backupIds:r}=e.request.body;(!Array.isArray(r)||r.length===0)&&e.throw(400,"backupIds must be a non-empty array");let a=await Ne.deleteAppBackups(r),o=a.filter(i=>i.success).length,s=a.length-o;e.body={message:`${o} backups deleted successfully${s>0?`, ${s} failed`:""}.`,results:a,successCount:o,failureCount:s}}n(rA,"deleteBackups");async function nA(e){let t=e.params.appId;await Zt(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(Iu.BackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await Ne.fetchAppBackups(t,{paginate:!0,...r})}n(nA,"fetchBackups");async function aA(e){let t=e.params.appId;await Zt(e,t);let r=e.params.backupId,a=e.request.body;e.body=await Ne.updateAppBackup(r,a.name)}n(aA,"updateBackup");async function oA(e){let t=e.params.appId;await Zt(e,t);let r=e.params.backupId,{metadata:a,stream:o}=await Ne.getBackupDownloadStream(r);e.attachment(`backup-${a.timestamp}.tar.gz`),e.body=o}n(oA,"downloadBackup");var iA=new sA.default;function XB(){return vt.auth.joiValidator.body(er.default.object({trigger:er.default.string().valid(...Object.values(mo.BackupTrigger)),type:er.default.string().valid(...Object.values(mo.BackupType)),startDate:er.default.date(),endDate:er.default.date(),page:er.default.string()}))}n(XB,"validateBackupSearch");iA.post("/api/apps/:appId/backups",vt.auth.builderOrAdmin,Zb).post("/api/apps/:appId/backups/search",vt.auth.builderOrAdmin,XB(),nA).get("/api/apps/:appId/backups/:backupId/file",vt.auth.builderOrAdmin,oA).patch("/api/apps/:appId/backups/:backupId",vt.auth.builderOrAdmin,aA).delete("/api/apps/:appId/backups/:backupId",vt.auth.builderOrAdmin,tA).delete("/api/apps/:appId/backups",vt.auth.builderOrAdmin,rA).post("/api/apps/:appId/backups/:backupId/import",vt.auth.builderOrAdmin,eA);var uA=iA;var wu=require("@budibase/backend-core");async function cA(e){let t=e.request.body,r=await kt.fetch(t);await wu.events.auditLog.filtered(t),e.body=r}n(cA,"search");async function pA(e){let t=e.request.body,{stream:r}=kt.download(t);await wu.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}n(pA,"download");async function lA(e){e.body={events:kt.definitions()}}n(lA,"definitions");var fA=require("@budibase/types"),tr=require("@budibase/backend-core"),mA=G(require("@koa/router")),Ye=G(require("joi"));function dA(){return tr.auth.joiValidator.body(Ye.default.object({userIds:Ye.default.array().items(Ye.default.string()).optional(),appIds:Ye.default.array().items(Ye.default.string()).optional(),events:Ye.default.array().items(Ye.default.string().valid(...Object.values(fA.Event))).optional(),startDate:Ye.default.string().optional().allow(""),endDate:Ye.default.string().optional().allow(""),fullSearch:Ye.default.string().optional().allow(""),bookmark:Ye.default.number()}))}n(dA,"buildAuditLogSearchValidator");var gA=new mA.default;gA.post("/api/global/auditlogs/search",tr.auth.adminOnly,dA(),cA).get("/api/global/auditlogs/download",tr.auth.adminOnly,tr.middleware.querystringToBody,dA(),pA).get("/api/global/auditlogs/definitions",tr.auth.adminOnly,lA);var hA=gA;var vu=require("@budibase/backend-core"),Su=require("@budibase/types");async function yA(e){e.body={encryptionKeyAvailable:ft.isEncryptionKeyAvailable()}}n(yA,"status");async function bA(e){e.body={variables:await ft.fetch()}}n(bA,"fetch");async function AA(e){let{name:t,production:r,development:a}=e.request.body;await ft.update(t,{production:r,development:a});let o=[Su.Environment.PRODUCTION];r!==a&&o.push(Su.Environment.DEVELOPMENT),await vu.events.environmentVariable.created(t,o),e.body={message:`Environment variable "${t}" created.`}}n(AA,"create");async function IA(e){let{production:t,development:r}=e.request.body,a=e.params.varName;await ft.update(a,{production:t,development:r}),e.body={message:`Environment variable "${a}" updated.`}}n(IA,"update");async function wA(e){let t=e.params.varName;await ft.remove(t),await vu.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}n(wA,"destroy");var rr=require("@budibase/backend-core"),vA=G(require("@koa/router")),jn=G(require("joi"));var TA=new vA.default;function SA(){return rr.auth.joiValidator.body(jn.default.object({name:jn.default.string().optional(),production:jn.default.string().required(),development:jn.default.string().required()}))}n(SA,"buildEnvVarUpdateValidator");TA.get("/api/env/variables/status",rr.auth.builderOrAdmin,yA).get("/api/env/variables",rr.auth.builderOrAdmin,bA).post("/api/env/variables",rr.auth.builderOrAdmin,SA(),AA).patch("/api/env/variables/:varName",rr.auth.builderOrAdmin,SA(),IA).delete("/api/env/variables/:varName",rr.auth.builderOrAdmin,wA);var xA=TA;var mt=require("@budibase/backend-core"),Tt=require("@budibase/types"),kA=G(require("@koa/router")),Ce=G(require("joi"));var RA=require("@budibase/backend-core");async function EA(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let a=await Er(t._id);t.roles=a.roles,t.scimInfo=a.scimInfo}let r=await Ga(t);e.body={_id:r.id,_rev:r.rev}}n(EA,"save");async function _A(e){let t=e.params.groupId,r=e.request.body.add,a=e.request.body.remove;(r&&!Array.isArray(r)||a&&!Array.isArray(a))&&e.throw(400,"Must supply a list of users to add or to remove");let o,s;r&&(o=await Fa(t,r)),a&&(s=await Vs(t,a)),e.body={added:o,removed:s}}n(_A,"updateGroupUsers");async function CA(e){let t=e.params.groupId,r=e.request.body.add,a=e.request.body.remove;(r&&!Array.isArray(r)||a&&!Array.isArray(a))&&e.throw(400,"Must supply a list of objects, with appId and roleId to add or remove"),e.body=await zs(t,{appsToAdd:r,appsToRemove:a})}n(CA,"updateGroupApps");async function OA(e){e.body={data:await qn()}}n(OA,"fetch");async function LA(e){let{groupId:t,rev:r}=e.params;try{await Ys(t,r),e.body={message:"Group deleted successfully"}}catch(a){e.throw(a.status,a)}}n(LA,"destroy");async function PA(e){try{e.body=await Er(e.params.groupId)}catch(t){e.throw(t.status,t)}}n(PA,"find");async function qA(e){let{pageSize:t=10,bookmark:r,emailSearch:a}=e.request.query,o=e.params.groupId,s={limit:t+1},i=await sa(o,{...s,emailSearch:a,bookmark:r}),u=a?i[t]?.email:i[t]?._id,c=!!u;e.body={users:i.slice(0,t),bookmark:u,hasNextPage:c}}n(qA,"searchUsers");async function UA(e){let{groupId:t}=e.params,{csvContent:r}=e.request.body;(r===void 0||r.trim().length===0)&&e.throw(400,"CSV is empty");let a=await RA.csv.jsonFromCsvString(r,{allowSingleColumn:!0});(!a||a.length===0)&&e.throw(400,"CSV file is invalid");let s=Object.keys(a[0]).find(y=>/^(email|e-mail|email address|mail|e_mail)$/i.test(y.trim()));s||e.throw(400,"CSV file must contain an email column");let i=Array.from(new Set(a.map(y=>y[s]).filter(y=>y&&typeof y=="string"&&y.trim().length>0).map(y=>y.trim())));i.length===0&&e.throw(400,"No valid email addresses found in CSV");try{await Er(t)}catch(y){if(y.status===404)e.throw(404,"Group not found");else throw y}let u=[],c=[],d=[],m=await Promise.all(i.map(y=>Be.getUserByEmail(y)));for(let y of i){let g=m.find(T=>T?.email===y);g?(u.push({_id:g._id,email:g.email}),d.push(g._id)):c.push({email:y,reason:"User not found"})}d.length>0&&await Fa(t,d),e.body={added:u,skipped:c}}n(UA,"bulkAddUsersFromCsv");var DA=new kA.default;function rN(){return mt.auth.joiValidator.body(Ce.default.object({_id:Ce.default.string().optional(),_rev:Ce.default.string().optional(),color:Ce.default.string().required(),icon:Ce.default.string().required(),name:Ce.default.string().trim().required().max(50),role:Ce.default.string().optional(),users:Ce.default.array().optional(),apps:Ce.default.array().optional(),roles:Ce.default.object().optional(),createdAt:Ce.default.string().optional(),updatedAt:Ce.default.string().optional()}).required())}n(rN,"buildGroupSaveValidation");DA.post("/api/global/groups",mt.auth.adminOnly,Se.requireFeature(Tt.Feature.USER_GROUPS),rN(),EA).get("/api/global/groups",Se.requireFeature(Tt.Feature.USER_GROUPS),OA).delete("/api/global/groups/:groupId/:rev",Se.requireFeature(Tt.Feature.USER_GROUPS),mt.auth.adminOnly,Wn("groupId"),LA).get("/api/global/groups/:groupId",Se.requireFeature(Tt.Feature.USER_GROUPS),mt.auth.builderOrAdmin,PA).get("/api/global/groups/:groupId/users",Se.requireFeature(Tt.Feature.USER_GROUPS),mt.auth.builderOrAdmin,qA).post("/api/global/groups/:groupId/users",mt.auth.adminOnly,Se.requireFeature(Tt.Feature.USER_GROUPS),Wn("groupId"),_A).post("/api/global/groups/:groupId/users/bulk",mt.auth.adminOnly,Se.requireFeature(Tt.Feature.USER_GROUPS),Wn("groupId"),mt.auth.joiValidator.body(Ce.default.object({csvContent:Ce.default.string().required()}).required()),UA).post("/api/global/groups/:groupId/apps",mt.auth.builderOrAdmin,Se.requireFeature(Tt.Feature.USER_GROUPS),CA);var MA=DA;var dI=G(require("@koa/router"));var go=require("scim-patch");var NA=require("@budibase/backend-core");function BA(e,t){let r=e.request.query[t];if(r!==void 0)return+r}n(BA,"tryGetQueryAsNumber");var GA=n(async e=>{let t=BA(e,"pageSize")??20,r=BA(e,"startIndex"),a;e.request.query.filter&&(a=ce.user.userFilters(e.request.query.filter));let o=await Ue.get({pageSize:t,skip:r,filters:a});e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:o.total,Resources:o.users.map(ce.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},"get"),FA=n(async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await Ue.find(t);e.body=ce.user.toScimUserResponse(r)},"find"),WA=n(async e=>{let t=ce.user.fromScimUser(e.request.body);try{let r=await Ue.create(t);e.body=ce.user.toScimUserResponse(r)}catch(r){throw r instanceof NA.EmailUnavailableError&&e.throw(409,"Email already in use"),r}},"create");function nN(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}n(nN,"isDeactivation");var $A=n(async e=>{let t=await Ue.find(e.params.id);t||e.throw(404);let r=ce.user.toScimUserResponse(t),a=e.request.body;try{(0,go.patchBodyValidation)(a)}catch{}if(nN(a))return Tu(e);let o;try{o=(0,go.scimPatch)(r,a.Operations)}catch{}o||e.throw(500);let s=ce.user.fromScimUser(o);await Ue.update(s,{allowChangingEmail:!0}),e.body=ce.user.toScimUserResponse(s)},"update"),Tu=n(async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await Ue.remove(t),e.status=204},"remove");var aI=G(nI()),oI=require("@budibase/shared-core"),ho=require("scim-patch");var yo=require("scim2-parse-filter");function sI(e,t){for(let r of t.split(","))delete e[r]}n(sI,"cleanResponse");var iI=n(async e=>{let r=(await re.fetch()).filter(s=>s.scimInfo?.isSync).map(ce.group.toScimGroupResponse),{filter:a,excludedAttributes:o}=e.request.query;if(a){let s=(0,yo.filter)((0,yo.parse)(a));r=r.filter(s)}o&&r.forEach(s=>{sI(s,o)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},"get"),uI=n(async e=>{let t=ce.group.fromScimGroup(e.request.body),r=await Ur.create(t);e.body=ce.group.toScimGroupResponse(r)},"create"),cI=n(async e=>{let{id:t}=e.params,r=await re.get(t),a=ce.group.toScimGroupResponse(r),{excludedAttributes:o}=e.request.query;o&&sI(a,o),e.body=a},"find"),pI=n(async e=>{let{id:t}=e.params,r=await re.get(t);await re.remove(t,r._rev),e.status=204},"remove"),lI=n(async e=>{let{id:t}=e.params,r=await re.get(t),a=ce.group.toScimGroupResponse(r),o=e.request.body;try{(0,ho.patchBodyValidation)(o)}catch{e.throw(400)}let{true:s,false:i}=(0,aI.default)(o.Operations,u=>u.path==="members");if(i?.length){let u=(0,ho.scimPatch)(a,i);u||e.throw(500);let c={...ce.group.fromScimGroup(u),_rev:r._rev};await re.save(c)}if(s?.length){let u=[],c=[];for(let{op:d,value:m}of s)switch(d){case"add":case"Add":for(let y of m)u.push(await Ue.find(y.value));break;case"remove":case"Remove":for(let y of m)try{c.push(await Ue.find(y.value))}catch(g){if(g.status!==404)throw g}break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:oI.utils.unreachable(d)}u.length&&await re.addUsers(t,u.map(d=>d._id)),c.length&&await re.removeUsers(t,c.map(d=>d._id))}e.body=ce.group.toScimGroupResponse(await re.get(t))},"update");var Qn=require("@budibase/types"),Ge=new dI.default({prefix:"/api/global/scim/v2"});Ge.use(gu);Ge.use(mu);Ge.get("/users",GA);Ge.get("/users/:id",Gn("id"),FA);Ge.post("/users",WA);Ge.patch("/users/:id",Gn("id"),$A);Ge.delete("/users/:id",Gn("id"),Tu);Ge.get("/groups",iI);Ge.post("/groups",Se.requireFeature(Qn.Feature.USER_GROUPS),uI);Ge.get("/groups/:id",Se.requireFeature(Qn.Feature.USER_GROUPS),Fn("id"),cI);Ge.delete("/groups/:id",Se.requireFeature(Qn.Feature.USER_GROUPS),Fn("id"),pI);Ge.patch("/groups/:id",Se.requireFeature(Qn.Feature.USER_GROUPS),Fn("id"),lI);var fI=Ge;var ce={};_(ce,{group:()=>Eu,user:()=>Ru});var Ru={};_(Ru,{fromScimUser:()=>LN,toScimUserResponse:()=>_N,userFilters:()=>PN});var mI=require("@budibase/backend-core"),gI=require("@budibase/shared-core"),bo=require("@budibase/types"),hI=require("scim2-parse-filter");var{unreachable:EN}=gI.utils,_N=n(e=>{let{isSync:t,roles:r,...a}=e.scimInfo||{},o={...a,schemas:["urn:ietf:params:scim:schemas:core:2.0:User"],id:e._id,meta:{resourceType:"User",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},active:e.status===bo.UserStatus.ACTIVE};(e.firstName||e.lastName)&&(o.name={formatted:[e.firstName,e.lastName].filter(i=>i).join(" "),familyName:e.lastName,givenName:e.firstName});let s="urn:ietf:params:scim:schemas:extension:enterprise:2.0:User";if(o[s]?.manager){let i=o[s].manager;typeof i=="string"&&(o[s].manager={value:i})}return o},"toScimUserResponse"),CN=n(e=>!!e?.id,"isScimUserResponse");function ON(e){if(mI.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}n(ON,"tryGetEmail");var LN=n(e=>{let t=CN(e)?e:void 0,r=ON(e);if(!r)throw new Error("Email is required");let a;switch(e.active){case"True":case"true":case!0:a=!0;break;case"False":case"false":case!1:a=!1;break;default:EN(e.active)}let o,s;return e.name?.givenName?(o=e.name?.givenName,s=e.name?.familyName):o=e.displayName,{tenantId:"",_id:t?.id,userId:t?.id,email:r,firstName:o,lastName:s,scimInfo:{...e,isSync:!0},roles:{},status:a?bo.UserStatus.ACTIVE:bo.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},"fromScimUser"),PN=n(e=>{let t={equal:{}},r=(0,hI.parse)(e);function a(o){switch(o.op){case"eq":{let s=o.attrPath,i;switch(s){case"emails.value":i="email";break;default:i=`scimInfo.${s}`}t.equal[i]=o.compValue;break}case"and":for(let s of o.filters)a(s);break;default:console.warn("Filter not handled",{filter:o})}}return n(a,"parseFilters"),a(r),t},"userFilters");var Eu={};_(Eu,{fromScimGroup:()=>kN,toScimGroupResponse:()=>qN});var qN=n(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}))}),"toScimGroupResponse"),UN=n(e=>!!e?.id,"isScimGroup"),kN=n(e=>{let t=UN(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()}},"fromScimGroup");var zu={};_(zu,{LLM:()=>gt,LLMRequest:()=>se,TableGeneration:()=>Vu,agentHistoryTitleSystemPrompt:()=>YN,agentSystemPrompt:()=>HN,aiColumnSchemas:()=>Hu,aiTableResponseToTableSchema:()=>$u,appendAIColumns:()=>ju,classifyText:()=>Ou,cleanData:()=>Lu,composeAutomationAgentSystemPrompt:()=>QN,composeAutomationAgentToolGuidelines:()=>KN,createLiteLLMOpenAI:()=>RI,extractFileData:()=>FN,generateAIColumns:()=>Fu,generateCode:()=>jN,generateCronExpression:()=>Pu,generateData:()=>Wu,generateJs:()=>Du,generateSQL:()=>$N,generateTables:()=>Gu,generationStructure:()=>Ku,getChatLLM:()=>LI,getLLM:()=>Yn,getLLMConfig:()=>Nu,getLLMOrThrow:()=>OI,getLiteLLMProvider:()=>TI,getLiteLLMProviderOptions:()=>xI,normalizeContentType:()=>_u,parseResponseFormat:()=>Io,sanitiseToolName:()=>DN,searchWeb:()=>ku,sentimentAnalysis:()=>Uu,summarizeText:()=>Ao,tableDataStructuredOutput:()=>Yu,translate:()=>qu});var Kn=require("@budibase/types");function DN(e){if(e.length>64)throw new Error("Tool name must be under 64 characters long");return e.replace(/[^a-zA-Z0-9_-]/g,"_")}n(DN,"sanitiseToolName");function _u(e){return e?e.includes("/")?e:{[Kn.SupportedFileType.PDF]:"application/pdf",[Kn.SupportedFileType.JPG]:"image/jpeg",[Kn.SupportedFileType.JPEG]:"image/jpeg",[Kn.SupportedFileType.PNG]:"image/png"}[e.toLowerCase()]||"application/octet-stream":"application/octet-stream"}n(_u,"normalizeContentType");var Ro=require("@budibase/types");var ht=require("@budibase/backend-core"),EI=require("@budibase/types"),kr=require("dd-trace"),_I=require("zod");var AI=require("@budibase/types"),wo=G(require("openai"));var yI=require("@budibase/shared-core"),Mt=require("@budibase/types"),Bt=G(require("dd-trace"));function Cu(e,t){return t.map(r=>e[r]).join(" ")}n(Cu,"extractTextFromColumns");var gt=class{static{n(this,"LLM")}constructor({model:t,apiKey:r,maxTokens:a}){this._model=t,this._apiKey=r,this._maxTokens=a??parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"1000")}get model(){return this._model}get apiKey(){return this._apiKey}get maxTokens(){return this._maxTokens}async prompt(t){return await Bt.default.trace("prompt",async()=>{let r=typeof t=="string"?new se().addUserMessage(t):t,{messages:a,tokensUsed:o}=await Bt.default.trace("chatCompletion",()=>this.chatCompletion(r));return!a||a.length===0?{message:"",tokensUsed:o}:{message:a[a.length-1].content||"",tokensUsed:o}})}async chat(t){return await Bt.default.trace("chat",async()=>await this.chatCompletion(t))}async*chatStream(t){yield*this.chatCompletionStream(t)}async summarizeText(t){return Bt.default.trace("summarizeText",()=>this.prompt(Ao(t)))}async generateCronExpression(t){return Bt.default.trace("generateCronExpression",()=>this.prompt(Pu(t)))}async operation(t,r){return Bt.default.trace("operation",a=>{a.addTags({operation:t.operation,rowId:r.id});let o=this.promptForOperation(t,r);return this.prompt(o)})}promptForOperation(t,r){let{operation:a,column:o,columns:s,language:i,categories:u,prompt:c}=t;switch(a){case Mt.AIOperationEnum.SUMMARISE_TEXT:return Ao(Cu(r,s));case Mt.AIOperationEnum.CLEAN_DATA:return Lu(r[o]);case Mt.AIOperationEnum.TRANSLATE:return qu(r[o],i);case Mt.AIOperationEnum.CATEGORISE_TEXT:if(!u)throw Error("No categories provided for categorise text operation. Please provide categories.");return Ou(Cu(r,s),u.split(","));case Mt.AIOperationEnum.SENTIMENT_ANALYSIS:return Uu(r[o]);case Mt.AIOperationEnum.PROMPT:return c;case Mt.AIOperationEnum.SEARCH_WEB:return ku(Cu(r,s));default:throw yI.utils.unreachable(a)}}async generateJs(t,r){return await Bt.default.trace("generateJs",async()=>{let{bindings:a=[],snippets:o=[]}=r||{};return await this.prompt(Du(a,o).addUserMessage(t))})}};var Hn=(a=>(a.GPT_5_MINI="gpt-5-mini",a.GPT_5="gpt-5",a.GPT_5_NANO="gpt-5-nano",a))(Hn||{});function Io(e){if(e)return e==="text"?{type:"text"}:e==="json"?{type:"json_object"}:e}n(Io,"parseResponseFormat");function bI(e){if(!e)return 0;let t=e.prompt_tokens;return e.completion_tokens*3+t}n(bI,"calculateBudibaseAICredits");var ke=class extends gt{constructor(r){super(r);this.client=this.getClient(r)}static{n(this,"OpenAI")}getVerbosityForModel(){if(Object.values(Hn).includes(this.model))return"low"}getClient(r){if(!r.apiKey)throw new Error("No OpenAI API key found");return new wo.default({apiKey:r.apiKey})}async uploadFile(r,a,o){let s=_u(o);if(AI.ImageContentTypes.includes(s.toLowerCase())){let c;if(Buffer.isBuffer(r))c=r;else{let m=[];for await(let y of r)m.push(new Uint8Array(y));c=Buffer.concat(m)}let d=c.toString("base64");return`data:${s};base64,${d}`}let i=await(0,wo.toFile)(r,a);return(await this.client.files.create({file:i,purpose:"assistants"})).id}async chatCompletion(r){let a={model:this.model,messages:r.messages,max_completion_tokens:this._maxTokens,response_format:Io(r.format)};if(Object.values(Hn).includes(this.model)){let i=this.getVerbosityForModel();i&&(a.verbosity=i),a.reasoning_effort="minimal"}let o=await this.client.chat.completions.create(a),s=o?.choices?.[0]?.message;if(s?.content)return{messages:[...r.messages,{role:s.role,content:s.content}],tokensUsed:bI(o.usage)};throw new Error("No response found")}async*chatCompletionStream(r){let a={model:this.model,messages:r.messages,max_tokens:this.maxTokens,response_format:Io(r.format),stream:!0};try{let o=await this.client.chat.completions.create(a),s="",i=null;for await(let c of o){let d=c?.choices?.[0]?.delta;d&&(d.content&&(s+=d.content,yield{type:"content",content:d.content}),c.usage&&(i=c.usage))}let u=i?bI(i):0;s&&r.addMessage({role:"assistant",content:s}),yield{type:"done",messages:r.messages,tokensUsed:u}}catch(o){yield{type:"error",content:o.message}}}};var Mu=G(require("@anthropic-ai/sdk"));function MN(e){if(!e)return 0;let t=e.input_tokens;return e.output_tokens*3+t}n(MN,"calculateBudibaseAICredits");var So=class extends gt{constructor(r){super(r);this.client=new Mu.default({apiKey:r.apiKey})}static{n(this,"Anthropic")}firstTextBlock(r){for(let a of r.content)if(a.type==="text")return a.text}async uploadFile(r,a,o){throw new Error("File upload not supported for this LLM provider")}async chatCompletion(r){try{let a=await this.client.messages.create({model:this.model,messages:r.messages.map(({content:s})=>{if(s==null)return{role:"user",content:""};if(typeof s=="string")return{role:"user",content:s};let i="";for(let u of s)u.type==="text"?i+=u.text:["image_url","input_audio","file"].includes(u.type);return{role:"user",content:i}}),max_tokens:this.maxTokens}),o=this.firstTextBlock(a)||"";return{messages:[...r.messages,{role:"assistant",content:o}],tokensUsed:MN(a.usage)}}catch(a){throw a instanceof Mu.default.APIError&&console.error(`Anthropic Prompt failed with error ${a.name} and status: ${a.status}`),a}}async*chatCompletionStream(r){try{let a=await this.chatCompletion(r);if(a.messages.length>0){let o=a.messages[a.messages.length-1];o.content&&(yield{type:"content",content:o.content})}yield{type:"done",messages:a.messages,tokensUsed:a.tokensUsed}}catch(a){yield{type:"error",content:a.message}}}};var II=require("openai");var vo=class extends ke{static{n(this,"AzureOpenAI")}getClient(t){if(!t.apiKey)throw new Error("No Azure OpenAI API key found");if(!t.model)throw new Error("No Azure OpenAI model specified");return new II.AzureOpenAI({apiKey:t.apiKey,apiVersion:"2024-10-01-preview",baseURL:t.baseUrl})}getVerbosityForModel(){return Object.values(Hn).includes(this.model)?"medium":void 0}};var be=require("@budibase/backend-core"),wI=require("@budibase/types"),Bu=require("dd-trace");var To=class extends gt{static{n(this,"BudibaseAI")}async prompt(t){let r=await super.prompt(t);return r.tokensUsed&&await Ba(r.tokensUsed),r}async chat(t){let r=await super.chat(t);return r.tokensUsed&&await Ba(r.tokensUsed),r}async uploadFile(t,r,a){return be.env.SELF_HOSTED?this.uploadFileSelfHost(t,r,a):this.uploadFileCloud(t,r,a)}async uploadFileCloud(t,r,a){return new ke({apiKey:be.env.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).uploadFile(t,r,a)}async uploadFileSelfHost(t,r,a){let o;if(Buffer.isBuffer(t))o=t;else{let m=[];for await(let y of t)m.push(new Uint8Array(y));o=Buffer.concat(m)}let s=o.toString("base64");if(a&&wI.ImageContentTypes.includes(a.toLowerCase()))return`data:image/jpeg;base64,${s}`;if(!be.env.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(!this._apiKey){let m=await Ca();if(!m)throw new Error("No license key found");this._apiKey=m}let i=`${be.env.BUDICLOUD_URL}/api/ai/upload-file`,u={method:"POST",headers:{"Content-Type":"application/json",[be.constants.Header.LICENSE_KEY]:this._apiKey},body:JSON.stringify({data:s,filename:r,contentType:a})};console.debug("[BudibaseAI] uploadFileSelfHost - Making network call",{url:i,method:u.method,headers:u.headers,bodyKeys:["data","filename","contentType"],filename:r,contentType:a});let c=await Zn(i,u);if(console.debug("[BudibaseAI] uploadFileSelfHost - Network response",{url:i,status:c.status,statusText:c.statusText,ok:c.ok}),!c.ok)throw await be.HTTPError.fromResponse(c);return(await c.json()).fileId}async chatCompletion(t){return be.env.SELF_HOSTED?this.chatCompletionSelfHost(t):this.chatCompletionCloud(t)}async chatCompletionCloud(t){return await Bu.tracer.trace("chatCompletionCloud",async()=>await new ke({apiKey:be.env.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).chatCompletion(t))}async chatCompletionSelfHost(t){return await Bu.tracer.trace("chatCompletionSelfHost",async r=>{if(!be.env.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(r.addTags({budicloudUrl:be.env.BUDICLOUD_URL}),!this._apiKey){let c=await Ca();if(!c)throw new Error("No license key found");this._apiKey=c,r.addTags({licenseKey:this._apiKey})}let a={messages:t.messages,format:t.format},o=`${be.env.BUDICLOUD_URL}/api/ai/chat`,s={method:"POST",headers:{"Content-Type":"application/json",[be.constants.Header.LICENSE_KEY]:this._apiKey},body:JSON.stringify(a)};console.debug("[BudibaseAI] chatCompletionSelfHost - Making network call",{url:o,method:s.method,headers:s.headers,bodyKeys:Object.keys(a),messagesCount:t.messages.length,format:a.format});let i=await Zn(o,s);if(console.debug("[BudibaseAI] chatCompletionSelfHost - Network response",{url:o,status:i.status,statusText:i.statusText,ok:i.ok}),!i.ok)throw await be.HTTPError.fromResponse(i);let u=await i.json();return console.debug("[BudibaseAI] chatCompletionSelfHost - Response data",{url:o,tokensUsed:u.tokensUsed,messagesCount:u.messages?.length}),u})}async*chatCompletionStream(t){be.env.SELF_HOSTED?yield*this.chatCompletionStreamSelfHost(t):yield*this.chatCompletionStreamCloud(t)}async*chatCompletionStreamCloud(t){yield*new ke({apiKey:be.env.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).chatCompletionStream(t)}async*chatCompletionStreamSelfHost(t){console.debug("[BudibaseAI] chatCompletionStreamSelfHost - Starting streaming (fallback to non-streaming)",{messagesCount:t.messages.length});try{let r=await this.chatCompletionSelfHost(t);if(console.debug("[BudibaseAI] chatCompletionStreamSelfHost - Yielding response chunks",{responseMessagesCount:r.messages.length,tokensUsed:r.tokensUsed}),r.messages.length>0){let a=r.messages[r.messages.length-1];a.content&&(yield{type:"content",content:a.content})}yield{type:"done",messages:r.messages,tokensUsed:r.tokensUsed}}catch(r){console.debug("[BudibaseAI] chatCompletionStreamSelfHost - Error occurred",{error:r.message}),yield{type:"error",content:r.message}}}};var SI=G(require("openai")),vI=require("@ai-sdk/openai");var xo=class extends ke{static{n(this,"LiteLLMAI")}getClient(t){if(!t.apiKey)throw new Error("No LiteLLM API key found");return new SI.default({apiKey:t.apiKey,baseURL:t.baseUrl})}},TI=n(e=>{let[t]=e.split("/");return t||"openai"},"getLiteLLMProvider"),xI=n(()=>({openai:{parallelToolCalls:!0,reasoningEffort:"low"}}),"getLiteLLMProviderOptions"),RI=n(e=>{let{apiKey:t,baseUrl:r,fetch:a}=e,o={apiKey:t,baseURL:r,name:"litellm"};return a&&(o.fetch=a),(0,vI.createOpenAI)(o)},"createLiteLLMOpenAI");var CI={OpenAI:"gpt-5-mini",TogetherAI:"gpt-5-mini",AzureOpenAI:"gpt-4.1",Custom:"gpt-5-mini",Anthropic:"claude-3-5-sonnet-20240620",BudibaseAI:"gpt-5-mini"},BN={OpenAI:ke,TogetherAI:ke,AzureOpenAI:vo,Custom:ke,Anthropic:So,BudibaseAI:To};async function NN(){return await kr.tracer.trace("getAIConfig",async e=>{let t={type:EI.ConfigType.AI,config:{}};if(!ht.context.isSelfHostUsingCloud()){let a=await ht.configs.getAIConfig();a&&(t=a)}await Bs(t);let r=Object.values(t.config).find(a=>a.active&&a.isDefault);if(!r){e.addTags({enabled:!1,reason:"no provider found"});return}return e.addTags({enabled:!0}),{provider:r.provider,model:r.defaultModel||CI[r.provider],apiKey:r.apiKey,baseUrl:r.baseUrl}})}n(NN,"getAIConfig");async function GN(){return kr.tracer.trace("getSelfHostOpenAIKeyConfig",e=>{if(!ht.env.SELF_HOSTED){e.addTags({enabled:!1,reason:"not self host"});return}if(!ht.env.OPENAI_API_KEY){e.addTags({enabled:!1,reason:"no OPENAI_API_KEY"});return}return e.addTags({enabled:!0}),{provider:"OpenAI",model:CI.OpenAI,apiKey:ht.env.OPENAI_API_KEY}})}n(GN,"getSelfHostOpenAIKeyConfig");async function Nu(){return kr.tracer.trace("getLLMConfig",async()=>await NN()||await GN())}n(Nu,"getLLMConfig");async function Yn(e){return await kr.tracer.trace("getLLM",async t=>{let{model:r,maxTokens:a}=e||{},o=await Nu();if(!o){t.addTags({enabled:!1,reason:"no config found"});return}r&&(o.model=r),a&&(o.maxTokens=a);let s=BN[o.provider];if(!s){t.addTags({enabled:!1,reason:"no provider found",provider:o.provider});return}return new s(o)})}n(Yn,"getLLM");async function OI(){let e=await Yn();if(!e)throw new ht.HTTPError("No available LLM configurations",500);return e}n(OI,"getLLMOrThrow");async function LI(e){return await kr.tracer.trace("getChatLLM",async()=>new xo(e))}n(LI,"getChatLLM");var se=class e{constructor(){this.messages=[]}static{n(this,"LLMRequest")}withFormat(t){return t instanceof _I.z.ZodType?this.format={type:"json_schema",json_schema:{name:"response",strict:!1,schema:t.toJSONSchema({target:"draft-7"})}}:this.format=t,this}addMessage(t){return this.messages.push(t),this}addMessages(t){return this.messages.push(...t),this}addUserMessage(t){return this.messages.push({role:"user",content:t}),this}addSystemMessage(t){return this.messages.push({role:"system",content:t}),this}static fromRequest(t){let r=new e;return t.messages&&r.addMessages(t.messages),t.format&&r.withFormat(t.format),r}};var xt=require("zod");function Ao(e,t){let r=`Summarize this text:
|
|
39
39
|
${e}`,a="";if(t)switch(t){case Ro.SummariseLength.SHORT:a="In 1-2 concise sentences, ";break;case Ro.SummariseLength.MEDIUM:a="In 2-3 paragraphs, ";break;case Ro.SummariseLength.LONG:a="In multiple detailed paragraphs, ";break}return new se().addUserMessage(`${a}${r}.
|
|
40
40
|
Only return the summary.`)}n(Ao,"summarizeText");function FN(e,t){let r=["You are a data extraction assistant.","Extract data from the attached document/image that matches the provided schema.","The schema defines the structure where values like 'string', 'number', 'boolean' indicate the expected data types.","Extract all items that match the schema from the document.","Return the data in json format","If no matching data is found, return an empty data array."].join(`
|
|
41
41
|
|
|
@@ -144,7 +144,7 @@ a variable, it will be provided to you as a binding.
|
|
|
144
144
|
|
|
145
145
|
${a}
|
|
146
146
|
|
|
147
|
-
${r}`)}n(Du,"generateJs");function
|
|
147
|
+
${r}`)}n(Du,"generateJs");function Gu(){let e=`
|
|
148
148
|
You are generating Budibase table schemas from user prompts.
|
|
149
149
|
Always return at least 2 tables, and define only one side of relationships using a link field.
|
|
150
150
|
Exclude id, created_at, and updated_at (Budibase adds them).
|
|
@@ -152,10 +152,10 @@ Include a variety of column types: text, dropdown, date, number.
|
|
|
152
152
|
Add at least one formula column, one attachment, and one multi-attachment column across the tables.
|
|
153
153
|
Budibase handles reverse relationships and many-to-many links \u2014 never define join tables or reverse fields.
|
|
154
154
|
You may specify foreignColumnName, but do not create that field manually.
|
|
155
|
-
`;return new se().addSystemMessage(e)}n(
|
|
155
|
+
`;return new se().addSystemMessage(e)}n(Gu,"generateTables");function Fu(){let e='Given the generated schema, add only one field of type "AI" to relevant tables to add value to the Budibase user.';return new se().addSystemMessage(e)}n(Fu,"generateAIColumns");function Wu(){let e=`
|
|
156
156
|
For each table, populate the data field with realistic-looking sample records.
|
|
157
157
|
Avoid placeholder values like "foo" or "bar". Use real names, emails, etc., and ensure values are unique across rows.
|
|
158
|
-
`;return new se().addSystemMessage(e)}n(
|
|
158
|
+
`;return new se().addSystemMessage(e)}n(Wu,"generateData");function QN(e){let{baseSystemPrompt:t,goal:r,promptInstructions:a,toolGuidelines:o,includeGoal:s=!0}=e,i=[];if(t&&t.trim())i.push(t.trim());else{let u=`
|
|
159
159
|
You are a helpful automation agent running inside a Budibase workflow.
|
|
160
160
|
|
|
161
161
|
- You can call tools to read and write data or talk to external services.
|
|
@@ -193,13 +193,13 @@ Data formatting rules (IMPORTANT):
|
|
|
193
193
|
${JSON.stringify(e)}
|
|
194
194
|
\`\`\``}n(HN,"agentSystemPrompt");function YN(){return`You will be provided with a set of history, a conversation between a user and an AI. Using this
|
|
195
195
|
information generate a title for the conversation, this should start with a capital letter and MUST be
|
|
196
|
-
less than five words.`}n(YN,"agentHistoryTitleSystemPrompt");var Vn=require("@budibase/backend-core"),UI=require("@budibase/shared-core");var Rt=require("@budibase/types"),PI=require("@budibase/backend-core");function
|
|
196
|
+
less than five words.`}n(YN,"agentHistoryTitleSystemPrompt");var Vn=require("@budibase/backend-core"),UI=require("@budibase/shared-core");var Rt=require("@budibase/types"),PI=require("@budibase/backend-core");function $u(e){let t=[],r=[];for(let a of e.tables){let o=a.schema.reduce((s,i)=>{if(i.type===Rt.FieldType.LINK){if(!r.includes(i.relationshipId)){let u={[Rt.RelationshipType.MANY_TO_ONE]:Rt.RelationshipType.ONE_TO_MANY,[Rt.RelationshipType.ONE_TO_MANY]:Rt.RelationshipType.MANY_TO_ONE,[Rt.RelationshipType.MANY_TO_MANY]:Rt.RelationshipType.MANY_TO_MANY},{reverseFieldName:c,relationshipId:d,...m}=i;s[i.name]={...m,fieldName:c,relationshipType:u[i.relationshipType]},r.push(d)}}else s[i.name]=i;return s},{});t.push({_id:PI.docIds.generateTableID(),name:a.name,primaryDisplay:a.primaryDisplay,schema:o})}return t}n($u,"aiTableResponseToTableSchema");function ju(e,t){let r=[];for(let a of e)r.push({...a,schema:{...a.schema,...t[a.name]?.reduce((o,s)=>(o[s.name]=s,o),{})}});return r}n(ju,"appendAIColumns");var L=require("@budibase/types"),v=require("zod");var Oe=v.z.object({name:v.z.string().describe("A human readable name for the field. It MUST be alpha-numeric and capitalised.")}),Qu=Oe.extend({type:v.z.literal(L.FieldType.LINK),tableId:v.z.string().describe("This must match one of the generated table names"),reverseFieldName:v.z.string().describe("Only the *name* of the field that will appear in the foreign table. Budibase creates this automatically. Do not define the column yourself."),relationshipId:v.z.string().describe("The ID of the relationship. It must be used in pairs, paring many-to-ones and one-to-manys, or many-to-manys with each other.")}),VN=v.z.array(v.z.union([Oe.extend({type:v.z.enum([L.FieldType.STRING,L.FieldType.NUMBER,L.FieldType.BOOLEAN,L.FieldType.LONGFORM]),constraints:v.z.object({presence:v.z.boolean()}).optional().nullable()}),Qu.extend({relationshipType:v.z.enum([L.RelationshipType.MANY_TO_ONE])}).describe("Many-to-one relationship, where the current table is the 'many' side. Defines the initiating side of the relationship. Only this side should be defined. The reverse column will be created automatically."),Qu.extend({relationshipType:v.z.enum([L.RelationshipType.ONE_TO_MANY])}).describe("One-to-many relationship, where the current table is the 'one' side. Defines the initiating side of the relationship. Only this side should be defined. The reverse column will be created automatically."),Qu.extend({relationshipType:v.z.enum([L.RelationshipType.MANY_TO_MANY])}).describe("Many to many relationship. Defines the initiating side of the relationship. Only this side should be defined. The reverse column will be created automatically."),Oe.extend({type:v.z.literal(L.FieldType.OPTIONS),constraints:v.z.object({inclusion:v.z.array(v.z.string()).describe("The options for the field"),presence:v.z.boolean()})}).describe("A single option from closed set of options"),Oe.extend({type:v.z.literal(L.FieldType.ARRAY),constraints:v.z.object({inclusion:v.z.array(v.z.string()).describe("The options for the field"),presence:v.z.boolean(),type:v.z.literal(L.JsonFieldSubType.ARRAY)}).describe("Multiple selected options from closed set of options")}),Oe.extend({type:v.z.literal(L.FieldType.FORMULA),formula:v.z.string().describe(`
|
|
197
197
|
A JavaScript expression using only previously defined fields.
|
|
198
198
|
Reference fields using $("Field name"). Must end with: return ...
|
|
199
199
|
Example: return $("Score") + $("Weight")
|
|
200
|
-
`),responseType:v.z.enum([L.FieldType.STRING,L.FieldType.NUMBER,L.FieldType.BOOLEAN,L.FieldType.DATETIME])}).describe("Define these types after the other types"),Oe.extend({type:v.z.literal(L.FieldType.DATETIME),ignoreTimezones:v.z.boolean()}).describe("A datetime field, storing date and time"),Oe.extend({type:v.z.literal(L.FieldType.DATETIME),ignoreTimezones:v.z.boolean(),timeOnly:v.z.literal(!0)}).describe("A time only field"),Oe.extend({type:v.z.literal(L.FieldType.DATETIME),ignoreTimezones:v.z.boolean(),dateOnly:v.z.literal(!0)}).describe("A date only field"),Oe.extend({type:v.z.literal(L.FieldType.ATTACHMENT_SINGLE),subtype:v.z.literal(L.AttachmentSubType.IMAGE)}).describe("Single image column"),Oe.extend({type:v.z.literal(L.FieldType.ATTACHMENT_SINGLE)}).describe("Single attachment column. It stores a single document: pdf, word, etc. Use an appropriate name for the column, like 'Invoice', 'Document', etc."),Oe.extend({type:v.z.literal(L.FieldType.ATTACHMENTS),subtype:v.z.literal(L.AttachmentSubType.IMAGE)}).describe("Multiple images column. Use an appropiate name for the columns, like 'Gallery', 'Photos', etc."),Oe.extend({type:v.z.literal(L.FieldType.ATTACHMENTS)}).describe("Multiple attachments column. It might hold different kind of documents mixed up: pdf, txt, etc. Use an appropiate name for the columns, like 'Invoices', 'Documents', 'Attachments', etc.")])),
|
|
200
|
+
`),responseType:v.z.enum([L.FieldType.STRING,L.FieldType.NUMBER,L.FieldType.BOOLEAN,L.FieldType.DATETIME])}).describe("Define these types after the other types"),Oe.extend({type:v.z.literal(L.FieldType.DATETIME),ignoreTimezones:v.z.boolean()}).describe("A datetime field, storing date and time"),Oe.extend({type:v.z.literal(L.FieldType.DATETIME),ignoreTimezones:v.z.boolean(),timeOnly:v.z.literal(!0)}).describe("A time only field"),Oe.extend({type:v.z.literal(L.FieldType.DATETIME),ignoreTimezones:v.z.boolean(),dateOnly:v.z.literal(!0)}).describe("A date only field"),Oe.extend({type:v.z.literal(L.FieldType.ATTACHMENT_SINGLE),subtype:v.z.literal(L.AttachmentSubType.IMAGE)}).describe("Single image column"),Oe.extend({type:v.z.literal(L.FieldType.ATTACHMENT_SINGLE)}).describe("Single attachment column. It stores a single document: pdf, word, etc. Use an appropriate name for the column, like 'Invoice', 'Document', etc."),Oe.extend({type:v.z.literal(L.FieldType.ATTACHMENTS),subtype:v.z.literal(L.AttachmentSubType.IMAGE)}).describe("Multiple images column. Use an appropiate name for the columns, like 'Gallery', 'Photos', etc."),Oe.extend({type:v.z.literal(L.FieldType.ATTACHMENTS)}).describe("Multiple attachments column. It might hold different kind of documents mixed up: pdf, txt, etc. Use an appropiate name for the columns, like 'Invoices', 'Documents', 'Attachments', etc.")])),Ku=v.z.object({tables:v.z.array(v.z.object({name:v.z.string(),schema:VN,primaryDisplay:v.z.string().describe("The column will be used as display, so pick the clearer option. This must match EXACTLY one of the created fields names in the schema.")}))});function Hu(e){let t=v.z.object({});for(let r of e){let a=Object.values(r.schema),o=[Oe.extend({type:v.z.literal(L.FieldType.AI),operation:v.z.literal(L.AIOperationEnum.TRANSLATE),column:v.z.enum(a.filter(s=>[L.FieldType.STRING,L.FieldType.LONGFORM].includes(s.type)).map(s=>s.name)).describe("The columns to translate"),language:v.z.string()}).describe("This column will be autogenerated via AI to translate one column. Use it for reasonable cases, like translating descriptions or similar."),Oe.extend({type:v.z.literal(L.FieldType.AI),operation:v.z.literal(L.AIOperationEnum.CATEGORISE_TEXT),columns:v.z.array(v.z.enum(a.filter(s=>[L.FieldType.STRING,L.FieldType.LONGFORM,L.FieldType.BOOLEAN,L.FieldType.NUMBER,L.FieldType.DATETIME].includes(s.type)).map(s=>s.name))).describe("The columns to be used as context"),categories:v.z.string().describe("CSV list of categories")}).describe("This column will be autogenerated via AI to categorise a row based on one or many columns.")];a.some(s=>s.type===L.FieldType.LONGFORM)&&o.push(Oe.extend({type:v.z.literal(L.FieldType.AI),operation:v.z.literal(L.AIOperationEnum.SUMMARISE_TEXT),columns:v.z.array(v.z.enum(a.filter(s=>[L.FieldType.STRING,L.FieldType.LONGFORM].includes(s.type)).map(s=>s.name))).describe("Columns, from the current table, to be passed in the context. Use at least one.")}).describe("This column will be autogenerated via AI to summarise one or many columns.")),t=t.extend({[r.name]:v.z.array(v.z.union(o))})}return t}n(Hu,"aiColumnSchemas");var X=require("zod"),qI=require("@budibase/shared-core"),Q=require("@budibase/types");function Yu(e){let t=X.z.object({});for(let r of e){let a={_id:X.z.string().describe("Unique ID for the row")},o=X.z.union([X.z.literal("https://picsum.photos/600/600").describe("For profile pictures and similar"),X.z.literal("https://picsum.photos/1920/1080").describe("For anything else")]),s=X.z.object({fileName:X.z.string(),extension:X.z.enum([".pdf",".txt"]),content:X.z.string().describe("Random content for the file")});for(let i of Object.values(r.schema)){let{type:u}=i;switch(u){case Q.FieldType.STRING:case Q.FieldType.LONGFORM:a[i.name]=X.z.string();break;case Q.FieldType.NUMBER:case Q.FieldType.BIGINT:a[i.name]=X.z.number();break;case Q.FieldType.BOOLEAN:a[i.name]=X.z.boolean();break;case Q.FieldType.DATETIME:a[i.name]=X.z.string().describe(`ISO datetime. Use realistic dates, based on today's date, ${new Date().toISOString()}`);break;case Q.FieldType.ATTACHMENT_SINGLE:i.subtype===Q.AttachmentSubType.IMAGE?a[i.name]=o:a[i.name]=s;break;case Q.FieldType.ATTACHMENTS:i.subtype===Q.AttachmentSubType.IMAGE?a[i.name]=X.z.array(o):a[i.name]=X.z.array(s),a[i.name]=a[i.name].describe("Between 2 and 5 items.");break;case Q.FieldType.OPTIONS:a[i.name]=X.z.enum(i.constraints.inclusion);break;case Q.FieldType.LINK:{let c=X.z.string().describe(`Match one of the _ids created for table "${i.tableId}"`);i.relationshipType===Q.RelationshipType.ONE_TO_MANY?a[i.name]=X.z.array(c).describe("Array with a single item"):i.relationshipType===Q.RelationshipType.MANY_TO_MANY&&(a[i.name]=X.z.array(c).describe("Array with a one or many items. You can repeat the same ids between rows"))}break;case Q.FieldType.ARRAY:a[i.name]=X.z.array(X.z.enum(i.constraints.inclusion));break;case Q.FieldType.AI:case Q.FieldType.AUTO:case Q.FieldType.SIGNATURE_SINGLE:case Q.FieldType.BB_REFERENCE:case Q.FieldType.JSON:case Q.FieldType.FORMULA:case Q.FieldType.INTERNAL:case Q.FieldType.BARCODEQR:case Q.FieldType.BB_REFERENCE_SINGLE:break;default:throw qI.utils.unreachable(u)}}t=t.extend({[r.name]:X.z.array(X.z.object(a))}).describe(`Each table should include at least a few items (min 3, max 18). The number of items should not be evenly distributed. Instead, follow natural relationships and usage patterns based on the tables nature. For example:
|
|
201
201
|
1. If we have posts and comments, there should be more posts than users, and more comments than posts.
|
|
202
202
|
2. If it's a ticketing system, there may be more tickets than users, and some users may have submitted several tickets.
|
|
203
203
|
3. In a CRM, there are fewer users than customers, and customers may have many deals.
|
|
204
|
-
4. In a project management tool, projects might have many tasks, and tasks might have multiple comments.`)}return t}n(
|
|
205
|
-
"${t}"`).withFormat(
|
|
204
|
+
4. In a project management tool, projects might have many tasks, and tasks might have multiple comments.`)}return t}n(Yu,"tableDataStructuredOutput");var zn=G(require("dd-trace"));var Vu=class e{constructor(t,r){this.llmFunctions={getTableStructure:async t=>zn.default.trace("llm.getTableStructure",async()=>{let r=await this.llm.prompt(Gu().addUserMessage(t).withFormat(Ku));try{let a=JSON.parse(r.message);return $u(a)}catch{throw new Vn.HTTPError("Error generating tables",500)}}),generateAIColumns:(t,r)=>zn.default.trace("llm.generateAIColumns",async()=>this.generateAIColumns(t,r)),generateData:async(t,r)=>zn.default.trace("llm.generateData",async()=>{let a=await this.llm.prompt(Wu().addUserMessage(t).withFormat(Yu(r)));try{return JSON.parse(a.message)}catch{throw new Vn.HTTPError("Error generating data",500)}})};this.llm=t,this.delegates=r}static{n(this,"TableGeneration")}static async init(t){let r=await Yn({model:"gpt-5-mini",maxTokens:5e3});if(!r)throw new Vn.HTTPError("LLM not available",422);return new e(r,t)}async generate(t,r){return zn.default.trace("tableGeneration.generate",async a=>{let o=await this.generateTables(t,r);return a.addTags({table_count:o.length}),o})}async generateTables(t,r){let a=await this.llmFunctions.getTableStructure(t),o=await this.llmFunctions.generateAIColumns(t,a),s=await this.llmFunctions.generateData(t,a),i=await this.delegates.generateTablesDelegate(ju(a,o));return await this.delegates.generateDataDelegate(s,r,UI.utils.toMap("name",a)),i}async generateAIColumns(t,r){let a=await this.llm.prompt(Fu().addUserMessage(`This is the initial user prompt that generated the given schema:
|
|
205
|
+
"${t}"`).withFormat(Hu(r)));try{return JSON.parse(a.message)}catch{throw new Vn.HTTPError("Error generating columns",500)}}};0&&(module.exports={Method,ai,api,auditLogs,automations,backups,branding,constants,environmentVariables,features,groups,init,licensing,logger,mappers,middleware,plugins,publicApi,quotas,scimGroups,scimUsers,sdk,users,utils});
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"dist"
|
|
5
5
|
],
|
|
6
6
|
"license": "UNLICENSED",
|
|
7
|
-
"version": "3.25.
|
|
7
|
+
"version": "3.25.3",
|
|
8
8
|
"description": "Budibase Pro (Backend)",
|
|
9
9
|
"main": "dist/index.js",
|
|
10
10
|
"types": "dist/index.d.ts",
|
|
@@ -71,5 +71,5 @@
|
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
},
|
|
74
|
-
"gitHead": "
|
|
74
|
+
"gitHead": "3d525c90d28822598f5ef863dd4de3c4ad31dbb4"
|
|
75
75
|
}
|