@budibase/pro 3.22.7 → 3.23.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai/index.d.ts +1 -1
- package/dist/ai/llm.d.ts +4 -2
- package/dist/index.js +17 -17
- package/package.json +2 -2
package/dist/ai/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export * from "./utils";
|
|
2
2
|
export * from "./prompts";
|
|
3
3
|
export { parseResponseFormat } from "./models/openai";
|
|
4
|
-
export { getLLM, getLLMConfig, getLLMOrThrow, LLMRequest } from "./llm";
|
|
4
|
+
export { getLLM, getLLMConfig, getLLMOrThrow, LLMRequest, getChatLLM, } from "./llm";
|
|
5
5
|
export { LLM } from "./models/base";
|
|
6
6
|
export * from "./prompts";
|
|
7
7
|
export * from "./generators";
|
package/dist/ai/llm.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import { ChatCompletionRequest, LLMConfigOptions, LLMProviderConfig, Message, ResponseFormat, Tool } from "@budibase/types";
|
|
2
|
-
import { LLM } from "./models/base";
|
|
1
|
+
import { ChatCompletionRequest, LLMConfigOptions, LLMProviderConfig, Message, ResponseFormat, Tool, WithRequired } from "@budibase/types";
|
|
3
2
|
import openai from "openai";
|
|
4
3
|
import { z } from "zod";
|
|
4
|
+
import { LLM } from "./models/base";
|
|
5
|
+
import { OpenAI } from "./models/openai";
|
|
5
6
|
export declare function getLLMConfig(): Promise<LLMProviderConfig | undefined>;
|
|
6
7
|
export declare function getLLM(options?: LLMConfigOptions): Promise<LLM | undefined>;
|
|
7
8
|
export declare function getLLMOrThrow(): Promise<LLM>;
|
|
9
|
+
export declare function getChatLLM(config: WithRequired<LLMConfigOptions, "baseUrl">): Promise<OpenAI>;
|
|
8
10
|
export declare function getOpenAIUsingLocalAPIKey(): Promise<LLM | undefined>;
|
|
9
11
|
export declare class LLMRequest {
|
|
10
12
|
messages: Message[];
|
package/dist/index.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
"use strict";var OI=Object.create;var Dr=Object.defineProperty;var LI=Object.getOwnPropertyDescriptor;var PI=Object.getOwnPropertyNames;var UI=Object.getPrototypeOf,qI=Object.prototype.hasOwnProperty;var a=(e,t)=>Dr(e,"name",{value:t,configurable:!0});var p=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),x=(e,t)=>{for(var r in t)Dr(e,r,{get:t[r],enumerable:!0})},zu=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of PI(t))!qI.call(e,o)&&o!==r&&Dr(e,o,{get:()=>t[o],enumerable:!(n=LI(t,o))||n.enumerable});return e};var F=(e,t,r)=>(r=e!=null?OI(UI(e)):{},zu(t||!e||!e.__esModule?Dr(r,"default",{value:e,enumerable:!0}):r,e)),DI=e=>zu(Dr({},"__esModule",{value:!0}),e);var mn=p((xG,kc)=>{"use strict";function US(e,t){for(var r=-1,n=t.length,o=e.length;++r<n;)e[o+r]=t[r];return e}a(US,"arrayPush");kc.exports=US});var Ko=p((OG,Mc)=>{"use strict";var qS=typeof global=="object"&&global&&global.Object===Object&&global;Mc.exports=qS});var _e=p((LG,Nc)=>{"use strict";var DS=Ko(),kS=typeof self=="object"&&self&&self.Object===Object&&self,MS=DS||kS||Function("return this")();Nc.exports=MS});var Qt=p((PG,Bc)=>{"use strict";var NS=_e(),BS=NS.Symbol;Bc.exports=BS});var $c=p((UG,Wc)=>{"use strict";var Gc=Qt(),Fc=Object.prototype,GS=Fc.hasOwnProperty,FS=Fc.toString,ca=Gc?Gc.toStringTag:void 0;function WS(e){var t=GS.call(e,ca),r=e[ca];try{e[ca]=void 0;var n=!0}catch{}var o=FS.call(e);return n&&(t?e[ca]=r:delete e[ca]),o}a(WS,"getRawTag");Wc.exports=WS});var Qc=p((DG,jc)=>{"use strict";var $S=Object.prototype,jS=$S.toString;function QS(e){return jS.call(e)}a(QS,"objectToString");jc.exports=QS});var Pt=p((MG,Hc)=>{"use strict";var Kc=Qt(),KS=$c(),VS=Qc(),HS="[object Null]",YS="[object Undefined]",Vc=Kc?Kc.toStringTag:void 0;function zS(e){return e==null?e===void 0?YS:HS:Vc&&Vc in Object(e)?KS(e):VS(e)}a(zS,"baseGetTag");Hc.exports=zS});var ke=p((BG,Yc)=>{"use strict";function JS(e){return e!=null&&typeof e=="object"}a(JS,"isObjectLike");Yc.exports=JS});var Jc=p((FG,zc)=>{"use strict";var XS=Pt(),ZS=ke(),ew="[object Arguments]";function tw(e){return ZS(e)&&XS(e)==ew}a(tw,"baseIsArguments");zc.exports=tw});var pa=p(($G,ep)=>{"use strict";var Xc=Jc(),rw=ke(),Zc=Object.prototype,aw=Zc.hasOwnProperty,nw=Zc.propertyIsEnumerable,ow=Xc(function(){return arguments}())?Xc:function(e){return rw(e)&&aw.call(e,"callee")&&!nw.call(e,"callee")};ep.exports=ow});var Ee=p((jG,tp)=>{"use strict";var sw=Array.isArray;tp.exports=sw});var op=p((QG,np)=>{"use strict";var rp=Qt(),iw=pa(),uw=Ee(),ap=rp?rp.isConcatSpreadable:void 0;function cw(e){return uw(e)||iw(e)||!!(ap&&e&&e[ap])}a(cw,"isFlattenable");np.exports=cw});var Vo=p((VG,ip)=>{"use strict";var pw=mn(),lw=op();function sp(e,t,r,n,o){var s=-1,i=e.length;for(r||(r=lw),o||(o=[]);++s<i;){var u=e[s];t>0&&r(u)?t>1?sp(u,t-1,r,n,o):pw(o,u):n||(o[o.length]=u)}return o}a(sp,"baseFlatten");ip.exports=sp});var la=p((YG,up)=>{"use strict";function dw(e){return e}a(dw,"identity");up.exports=dw});var gn=p((JG,cp)=>{"use strict";function fw(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)}a(fw,"apply");cp.exports=fw});var Ho=p((ZG,lp)=>{"use strict";var mw=gn(),pp=Math.max;function gw(e,t,r){return t=pp(t===void 0?e.length-1:t,0),function(){for(var n=arguments,o=-1,s=pp(n.length-t,0),i=Array(s);++o<s;)i[o]=n[t+o];o=-1;for(var u=Array(t+1);++o<t;)u[o]=n[o];return u[t]=r(i),mw(e,this,u)}}a(gw,"overRest");lp.exports=gw});var fp=p((tF,dp)=>{"use strict";function hw(e){return function(){return e}}a(hw,"constant");dp.exports=hw});var je=p((aF,mp)=>{"use strict";function yw(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}a(yw,"isObject");mp.exports=yw});var da=p((oF,gp)=>{"use strict";var Aw=Pt(),bw=je(),Iw="[object AsyncFunction]",Sw="[object Function]",ww="[object GeneratorFunction]",Tw="[object Proxy]";function Ew(e){if(!bw(e))return!1;var t=Aw(e);return t==Sw||t==ww||t==Iw||t==Tw}a(Ew,"isFunction");gp.exports=Ew});var yp=p((iF,hp)=>{"use strict";var Rw=_e(),vw=Rw["__core-js_shared__"];hp.exports=vw});var Ip=p((uF,bp)=>{"use strict";var Yo=yp(),Ap=function(){var e=/[^.]+$/.exec(Yo&&Yo.keys&&Yo.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function _w(e){return!!Ap&&Ap in e}a(_w,"isMasked");bp.exports=_w});var zo=p((pF,Sp)=>{"use strict";var xw=Function.prototype,Cw=xw.toString;function Ow(e){if(e!=null){try{return Cw.call(e)}catch{}try{return e+""}catch{}}return""}a(Ow,"toSource");Sp.exports=Ow});var Tp=p((dF,wp)=>{"use strict";var Lw=da(),Pw=Ip(),Uw=je(),qw=zo(),Dw=/[\\^$.*+?()[\]{}|]/g,kw=/^\[object .+?Constructor\]$/,Mw=Function.prototype,Nw=Object.prototype,Bw=Mw.toString,Gw=Nw.hasOwnProperty,Fw=RegExp("^"+Bw.call(Gw).replace(Dw,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Ww(e){if(!Uw(e)||Pw(e))return!1;var t=Lw(e)?Fw:kw;return t.test(qw(e))}a(Ww,"baseIsNative");wp.exports=Ww});var Rp=p((mF,Ep)=>{"use strict";function $w(e,t){return e?.[t]}a($w,"getValue");Ep.exports=$w});var Ut=p((hF,vp)=>{"use strict";var jw=Tp(),Qw=Rp();function Kw(e,t){var r=Qw(e,t);return jw(r)?r:void 0}a(Kw,"getNative");vp.exports=Kw});var Jo=p((AF,_p)=>{"use strict";var Vw=Ut(),Hw=function(){try{var e=Vw(Object,"defineProperty");return e({},"",{}),e}catch{}}();_p.exports=Hw});var Op=p((bF,Cp)=>{"use strict";var Yw=fp(),xp=Jo(),zw=la(),Jw=xp?function(e,t){return xp(e,"toString",{configurable:!0,enumerable:!1,value:Yw(t),writable:!0})}:zw;Cp.exports=Jw});var Xo=p((IF,Lp)=>{"use strict";var Xw=800,Zw=16,eT=Date.now;function tT(e){var t=0,r=0;return function(){var n=eT(),o=Zw-(n-r);if(r=n,o>0){if(++t>=Xw)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}a(tT,"shortOut");Lp.exports=tT});var hn=p((wF,Pp)=>{"use strict";var rT=Op(),aT=Xo(),nT=aT(rT);Pp.exports=nT});var Zo=p((TF,Up)=>{"use strict";var oT=la(),sT=Ho(),iT=hn();function uT(e,t){return iT(sT(e,t,oT),e+"")}a(uT,"baseRest");Up.exports=uT});var fa=p((RF,qp)=>{"use strict";var cT=Ut(),pT=cT(Object,"create");qp.exports=pT});var Mp=p((vF,kp)=>{"use strict";var Dp=fa();function lT(){this.__data__=Dp?Dp(null):{},this.size=0}a(lT,"hashClear");kp.exports=lT});var Bp=p((xF,Np)=>{"use strict";function dT(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}a(dT,"hashDelete");Np.exports=dT});var Fp=p((OF,Gp)=>{"use strict";var fT=fa(),mT="__lodash_hash_undefined__",gT=Object.prototype,hT=gT.hasOwnProperty;function yT(e){var t=this.__data__;if(fT){var r=t[e];return r===mT?void 0:r}return hT.call(t,e)?t[e]:void 0}a(yT,"hashGet");Gp.exports=yT});var $p=p((PF,Wp)=>{"use strict";var AT=fa(),bT=Object.prototype,IT=bT.hasOwnProperty;function ST(e){var t=this.__data__;return AT?t[e]!==void 0:IT.call(t,e)}a(ST,"hashHas");Wp.exports=ST});var Qp=p((qF,jp)=>{"use strict";var wT=fa(),TT="__lodash_hash_undefined__";function ET(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=wT&&t===void 0?TT:t,this}a(ET,"hashSet");jp.exports=ET});var Vp=p((kF,Kp)=>{"use strict";var RT=Mp(),vT=Bp(),_T=Fp(),xT=$p(),CT=Qp();function pr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}a(pr,"Hash");pr.prototype.clear=RT;pr.prototype.delete=vT;pr.prototype.get=_T;pr.prototype.has=xT;pr.prototype.set=CT;Kp.exports=pr});var Yp=p((NF,Hp)=>{"use strict";function OT(){this.__data__=[],this.size=0}a(OT,"listCacheClear");Hp.exports=OT});var lr=p((GF,zp)=>{"use strict";function LT(e,t){return e===t||e!==e&&t!==t}a(LT,"eq");zp.exports=LT});var ma=p((WF,Jp)=>{"use strict";var PT=lr();function UT(e,t){for(var r=e.length;r--;)if(PT(e[r][0],t))return r;return-1}a(UT,"assocIndexOf");Jp.exports=UT});var Zp=p((jF,Xp)=>{"use strict";var qT=ma(),DT=Array.prototype,kT=DT.splice;function MT(e){var t=this.__data__,r=qT(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():kT.call(t,r,1),--this.size,!0}a(MT,"listCacheDelete");Xp.exports=MT});var tl=p((KF,el)=>{"use strict";var NT=ma();function BT(e){var t=this.__data__,r=NT(t,e);return r<0?void 0:t[r][1]}a(BT,"listCacheGet");el.exports=BT});var al=p((HF,rl)=>{"use strict";var GT=ma();function FT(e){return GT(this.__data__,e)>-1}a(FT,"listCacheHas");rl.exports=FT});var ol=p((zF,nl)=>{"use strict";var WT=ma();function $T(e,t){var r=this.__data__,n=WT(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}a($T,"listCacheSet");nl.exports=$T});var ga=p((XF,sl)=>{"use strict";var jT=Yp(),QT=Zp(),KT=tl(),VT=al(),HT=ol();function dr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}a(dr,"ListCache");dr.prototype.clear=jT;dr.prototype.delete=QT;dr.prototype.get=KT;dr.prototype.has=VT;dr.prototype.set=HT;sl.exports=dr});var yn=p((e1,il)=>{"use strict";var YT=Ut(),zT=_e(),JT=YT(zT,"Map");il.exports=JT});var pl=p((t1,cl)=>{"use strict";var ul=Vp(),XT=ga(),ZT=yn();function eE(){this.size=0,this.__data__={hash:new ul,map:new(ZT||XT),string:new ul}}a(eE,"mapCacheClear");cl.exports=eE});var dl=p((a1,ll)=>{"use strict";function tE(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}a(tE,"isKeyable");ll.exports=tE});var ha=p((o1,fl)=>{"use strict";var rE=dl();function aE(e,t){var r=e.__data__;return rE(t)?r[typeof t=="string"?"string":"hash"]:r.map}a(aE,"getMapData");fl.exports=aE});var gl=p((i1,ml)=>{"use strict";var nE=ha();function oE(e){var t=nE(this,e).delete(e);return this.size-=t?1:0,t}a(oE,"mapCacheDelete");ml.exports=oE});var yl=p((c1,hl)=>{"use strict";var sE=ha();function iE(e){return sE(this,e).get(e)}a(iE,"mapCacheGet");hl.exports=iE});var bl=p((l1,Al)=>{"use strict";var uE=ha();function cE(e){return uE(this,e).has(e)}a(cE,"mapCacheHas");Al.exports=cE});var Sl=p((f1,Il)=>{"use strict";var pE=ha();function lE(e,t){var r=pE(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}a(lE,"mapCacheSet");Il.exports=lE});var An=p((g1,wl)=>{"use strict";var dE=pl(),fE=gl(),mE=yl(),gE=bl(),hE=Sl();function fr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}a(fr,"MapCache");fr.prototype.clear=dE;fr.prototype.delete=fE;fr.prototype.get=mE;fr.prototype.has=gE;fr.prototype.set=hE;wl.exports=fr});var El=p((y1,Tl)=>{"use strict";var yE="__lodash_hash_undefined__";function AE(e){return this.__data__.set(e,yE),this}a(AE,"setCacheAdd");Tl.exports=AE});var vl=p((b1,Rl)=>{"use strict";function bE(e){return this.__data__.has(e)}a(bE,"setCacheHas");Rl.exports=bE});var es=p((S1,_l)=>{"use strict";var IE=An(),SE=El(),wE=vl();function bn(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new IE;++t<r;)this.add(e[t])}a(bn,"SetCache");bn.prototype.add=bn.prototype.push=SE;bn.prototype.has=wE;_l.exports=bn});var Cl=p((T1,xl)=>{"use strict";function TE(e,t,r,n){for(var o=e.length,s=r+(n?1:-1);n?s--:++s<o;)if(t(e[s],s,e))return s;return-1}a(TE,"baseFindIndex");xl.exports=TE});var Ll=p((R1,Ol)=>{"use strict";function EE(e){return e!==e}a(EE,"baseIsNaN");Ol.exports=EE});var Ul=p((_1,Pl)=>{"use strict";function RE(e,t,r){for(var n=r-1,o=e.length;++n<o;)if(e[n]===t)return n;return-1}a(RE,"strictIndexOf");Pl.exports=RE});var Dl=p((C1,ql)=>{"use strict";var vE=Cl(),_E=Ll(),xE=Ul();function CE(e,t,r){return t===t?xE(e,t,r):vE(e,_E,r)}a(CE,"baseIndexOf");ql.exports=CE});var ts=p((L1,kl)=>{"use strict";var OE=Dl();function LE(e,t){var r=e==null?0:e.length;return!!r&&OE(e,t,0)>-1}a(LE,"arrayIncludes");kl.exports=LE});var Nl=p((U1,Ml)=>{"use strict";function PE(e,t,r){for(var n=-1,o=e==null?0:e.length;++n<o;)if(r(t,e[n]))return!0;return!1}a(PE,"arrayIncludesWith");Ml.exports=PE});var rs=p((D1,Bl)=>{"use strict";function UE(e,t){return e.has(t)}a(UE,"cacheHas");Bl.exports=UE});var as=p((M1,Gl)=>{"use strict";var qE=Ut(),DE=_e(),kE=qE(DE,"Set");Gl.exports=kE});var ns=p((N1,Fl)=>{"use strict";function ME(){}a(ME,"noop");Fl.exports=ME});var In=p((G1,Wl)=>{"use strict";function NE(e){var t=-1,r=Array(e.size);return e.forEach(function(n){r[++t]=n}),r}a(NE,"setToArray");Wl.exports=NE});var jl=p((W1,$l)=>{"use strict";var os=as(),BE=ns(),GE=In(),FE=1/0,WE=os&&1/GE(new os([,-0]))[1]==FE?function(e){return new os(e)}:BE;$l.exports=WE});var Kl=p(($1,Ql)=>{"use strict";var $E=es(),jE=ts(),QE=Nl(),KE=rs(),VE=jl(),HE=In(),YE=200;function zE(e,t,r){var n=-1,o=jE,s=e.length,i=!0,u=[],c=u;if(r)i=!1,o=QE;else if(s>=YE){var f=t?null:VE(e);if(f)return HE(f);i=!1,o=KE,c=new $E}else c=t?[]:u;e:for(;++n<s;){var g=e[n],h=t?t(g):g;if(g=r||g!==0?g:0,i&&h===h){for(var y=c.length;y--;)if(c[y]===h)continue e;t&&c.push(h),u.push(g)}else o(c,h,r)||(c!==u&&c.push(h),u.push(g))}return u}a(zE,"baseUniq");Ql.exports=zE});var Sn=p((Q1,Vl)=>{"use strict";var JE=9007199254740991;function XE(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=JE}a(XE,"isLength");Vl.exports=XE});var mr=p((V1,Hl)=>{"use strict";var ZE=da(),eR=Sn();function tR(e){return e!=null&&eR(e.length)&&!ZE(e)}a(tR,"isArrayLike");Hl.exports=tR});var ss=p((Y1,Yl)=>{"use strict";var rR=mr(),aR=ke();function nR(e){return aR(e)&&rR(e)}a(nR,"isArrayLikeObject");Yl.exports=nR});var Jl=p((J1,zl)=>{"use strict";var oR=Vo(),sR=Zo(),iR=Kl(),uR=ss(),cR=sR(function(e){return iR(oR(e,1,uR,!0))});zl.exports=cR});var Zl=p((X1,Xl)=>{"use strict";var pR=ga();function lR(){this.__data__=new pR,this.size=0}a(lR,"stackClear");Xl.exports=lR});var td=p((eW,ed)=>{"use strict";function dR(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}a(dR,"stackDelete");ed.exports=dR});var ad=p((rW,rd)=>{"use strict";function fR(e){return this.__data__.get(e)}a(fR,"stackGet");rd.exports=fR});var od=p((nW,nd)=>{"use strict";function mR(e){return this.__data__.has(e)}a(mR,"stackHas");nd.exports=mR});var id=p((sW,sd)=>{"use strict";var gR=ga(),hR=yn(),yR=An(),AR=200;function bR(e,t){var r=this.__data__;if(r instanceof gR){var n=r.__data__;if(!hR||n.length<AR-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new yR(n)}return r.set(e,t),this.size=r.size,this}a(bR,"stackSet");sd.exports=bR});var ya=p((uW,ud)=>{"use strict";var IR=ga(),SR=Zl(),wR=td(),TR=ad(),ER=od(),RR=id();function gr(e){var t=this.__data__=new IR(e);this.size=t.size}a(gr,"Stack");gr.prototype.clear=SR;gr.prototype.delete=wR;gr.prototype.get=TR;gr.prototype.has=ER;gr.prototype.set=RR;ud.exports=gr});var Aa=p((pW,pd)=>{"use strict";var cd=Jo();function vR(e,t,r){t=="__proto__"&&cd?cd(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}a(vR,"baseAssignValue");pd.exports=vR});var is=p((dW,ld)=>{"use strict";var _R=Aa(),xR=lr();function CR(e,t,r){(r!==void 0&&!xR(e[t],r)||r===void 0&&!(t in e))&&_R(e,t,r)}a(CR,"assignMergeValue");ld.exports=CR});var fd=p((mW,dd)=>{"use strict";function OR(e){return function(t,r,n){for(var o=-1,s=Object(t),i=n(t),u=i.length;u--;){var c=i[e?u:++o];if(r(s[c],c,s)===!1)break}return t}}a(OR,"createBaseFor");dd.exports=OR});var us=p((hW,md)=>{"use strict";var LR=fd(),PR=LR();md.exports=PR});var cs=p((ba,hr)=>{"use strict";var UR=_e(),Ad=typeof ba=="object"&&ba&&!ba.nodeType&&ba,gd=Ad&&typeof hr=="object"&&hr&&!hr.nodeType&&hr,qR=gd&&gd.exports===Ad,hd=qR?UR.Buffer:void 0,yd=hd?hd.allocUnsafe:void 0;function DR(e,t){if(t)return e.slice();var r=e.length,n=yd?yd(r):new e.constructor(r);return e.copy(n),n}a(DR,"cloneBuffer");hr.exports=DR});var ps=p((AW,bd)=>{"use strict";var kR=_e(),MR=kR.Uint8Array;bd.exports=MR});var wn=p((bW,Sd)=>{"use strict";var Id=ps();function NR(e){var t=new e.constructor(e.byteLength);return new Id(t).set(new Id(e)),t}a(NR,"cloneArrayBuffer");Sd.exports=NR});var ls=p((SW,wd)=>{"use strict";var BR=wn();function GR(e,t){var r=t?BR(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}a(GR,"cloneTypedArray");wd.exports=GR});var yr=p((TW,Td)=>{"use strict";function FR(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t}a(FR,"copyArray");Td.exports=FR});var Ia=p((RW,Rd)=>{"use strict";var WR=je(),Ed=Object.create,$R=function(){function e(){}return a(e,"object"),function(t){if(!WR(t))return{};if(Ed)return Ed(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();Rd.exports=$R});var ds=p((_W,vd)=>{"use strict";function jR(e,t){return function(r){return e(t(r))}}a(jR,"overArg");vd.exports=jR});var Tn=p((CW,_d)=>{"use strict";var QR=ds(),KR=QR(Object.getPrototypeOf,Object);_d.exports=KR});var En=p((OW,xd)=>{"use strict";var VR=Object.prototype;function HR(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||VR;return e===r}a(HR,"isPrototype");xd.exports=HR});var fs=p((PW,Cd)=>{"use strict";var YR=Ia(),zR=Tn(),JR=En();function XR(e){return typeof e.constructor=="function"&&!JR(e)?YR(zR(e)):{}}a(XR,"initCloneObject");Cd.exports=XR});var Ld=p((qW,Od)=>{"use strict";function ZR(){return!1}a(ZR,"stubFalse");Od.exports=ZR});var wa=p((Sa,Ar)=>{"use strict";var ev=_e(),tv=Ld(),qd=typeof Sa=="object"&&Sa&&!Sa.nodeType&&Sa,Pd=qd&&typeof Ar=="object"&&Ar&&!Ar.nodeType&&Ar,rv=Pd&&Pd.exports===qd,Ud=rv?ev.Buffer:void 0,av=Ud?Ud.isBuffer:void 0,nv=av||tv;Ar.exports=nv});var ms=p((kW,kd)=>{"use strict";var ov=Pt(),sv=Tn(),iv=ke(),uv="[object Object]",cv=Function.prototype,pv=Object.prototype,Dd=cv.toString,lv=pv.hasOwnProperty,dv=Dd.call(Object);function fv(e){if(!iv(e)||ov(e)!=uv)return!1;var t=sv(e);if(t===null)return!0;var r=lv.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Dd.call(r)==dv}a(fv,"isPlainObject");kd.exports=fv});var Nd=p((NW,Md)=>{"use strict";var mv=Pt(),gv=Sn(),hv=ke(),yv="[object Arguments]",Av="[object Array]",bv="[object Boolean]",Iv="[object Date]",Sv="[object Error]",wv="[object Function]",Tv="[object Map]",Ev="[object Number]",Rv="[object Object]",vv="[object RegExp]",_v="[object Set]",xv="[object String]",Cv="[object WeakMap]",Ov="[object ArrayBuffer]",Lv="[object DataView]",Pv="[object Float32Array]",Uv="[object Float64Array]",qv="[object Int8Array]",Dv="[object Int16Array]",kv="[object Int32Array]",Mv="[object Uint8Array]",Nv="[object Uint8ClampedArray]",Bv="[object Uint16Array]",Gv="[object Uint32Array]",H={};H[Pv]=H[Uv]=H[qv]=H[Dv]=H[kv]=H[Mv]=H[Nv]=H[Bv]=H[Gv]=!0;H[yv]=H[Av]=H[Ov]=H[bv]=H[Lv]=H[Iv]=H[Sv]=H[wv]=H[Tv]=H[Ev]=H[Rv]=H[vv]=H[_v]=H[xv]=H[Cv]=!1;function Fv(e){return hv(e)&&gv(e.length)&&!!H[mv(e)]}a(Fv,"baseIsTypedArray");Md.exports=Fv});var Rn=p((GW,Bd)=>{"use strict";function Wv(e){return function(t){return e(t)}}a(Wv,"baseUnary");Bd.exports=Wv});var vn=p((Ta,br)=>{"use strict";var $v=Ko(),Gd=typeof Ta=="object"&&Ta&&!Ta.nodeType&&Ta,Ea=Gd&&typeof br=="object"&&br&&!br.nodeType&&br,jv=Ea&&Ea.exports===Gd,gs=jv&&$v.process,Qv=function(){try{var e=Ea&&Ea.require&&Ea.require("util").types;return e||gs&&gs.binding&&gs.binding("util")}catch{}}();br.exports=Qv});var _n=p((WW,$d)=>{"use strict";var Kv=Nd(),Vv=Rn(),Fd=vn(),Wd=Fd&&Fd.isTypedArray,Hv=Wd?Vv(Wd):Kv;$d.exports=Hv});var hs=p(($W,jd)=>{"use strict";function Yv(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}a(Yv,"safeGet");jd.exports=Yv});var ys=p((QW,Qd)=>{"use strict";var zv=Aa(),Jv=lr(),Xv=Object.prototype,Zv=Xv.hasOwnProperty;function e_(e,t,r){var n=e[t];(!(Zv.call(e,t)&&Jv(n,r))||r===void 0&&!(t in e))&&zv(e,t,r)}a(e_,"assignValue");Qd.exports=e_});var Ir=p((VW,Kd)=>{"use strict";var t_=ys(),r_=Aa();function a_(e,t,r,n){var o=!r;r||(r={});for(var s=-1,i=t.length;++s<i;){var u=t[s],c=n?n(r[u],e[u],u,r,e):void 0;c===void 0&&(c=e[u]),o?r_(r,u,c):t_(r,u,c)}return r}a(a_,"copyObject");Kd.exports=a_});var Hd=p((YW,Vd)=>{"use strict";function n_(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}a(n_,"baseTimes");Vd.exports=n_});var Ra=p((JW,Yd)=>{"use strict";var o_=9007199254740991,s_=/^(?:0|[1-9]\d*)$/;function i_(e,t){var r=typeof e;return t=t??o_,!!t&&(r=="number"||r!="symbol"&&s_.test(e))&&e>-1&&e%1==0&&e<t}a(i_,"isIndex");Yd.exports=i_});var As=p((ZW,zd)=>{"use strict";var u_=Hd(),c_=pa(),p_=Ee(),l_=wa(),d_=Ra(),f_=_n(),m_=Object.prototype,g_=m_.hasOwnProperty;function h_(e,t){var r=p_(e),n=!r&&c_(e),o=!r&&!n&&l_(e),s=!r&&!n&&!o&&f_(e),i=r||n||o||s,u=i?u_(e.length,String):[],c=u.length;for(var f in e)(t||g_.call(e,f))&&!(i&&(f=="length"||o&&(f=="offset"||f=="parent")||s&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||d_(f,c)))&&u.push(f);return u}a(h_,"arrayLikeKeys");zd.exports=h_});var Xd=p((t$,Jd)=>{"use strict";function y_(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}a(y_,"nativeKeysIn");Jd.exports=y_});var ef=p((a$,Zd)=>{"use strict";var A_=je(),b_=En(),I_=Xd(),S_=Object.prototype,w_=S_.hasOwnProperty;function T_(e){if(!A_(e))return I_(e);var t=b_(e),r=[];for(var n in e)n=="constructor"&&(t||!w_.call(e,n))||r.push(n);return r}a(T_,"baseKeysIn");Zd.exports=T_});var Sr=p((o$,tf)=>{"use strict";var E_=As(),R_=ef(),v_=mr();function __(e){return v_(e)?E_(e,!0):R_(e)}a(__,"keysIn");tf.exports=__});var af=p((i$,rf)=>{"use strict";var x_=Ir(),C_=Sr();function O_(e){return x_(e,C_(e))}a(O_,"toPlainObject");rf.exports=O_});var pf=p((c$,cf)=>{"use strict";var nf=is(),L_=cs(),P_=ls(),U_=yr(),q_=fs(),of=pa(),sf=Ee(),D_=ss(),k_=wa(),M_=da(),N_=je(),B_=ms(),G_=_n(),uf=hs(),F_=af();function W_(e,t,r,n,o,s,i){var u=uf(e,r),c=uf(t,r),f=i.get(c);if(f){nf(e,r,f);return}var g=s?s(u,c,r+"",e,t,i):void 0,h=g===void 0;if(h){var y=sf(c),E=!y&&k_(c),M=!y&&!E&&G_(c);g=c,y||E||M?sf(u)?g=u:D_(u)?g=U_(u):E?(h=!1,g=L_(c,!0)):M?(h=!1,g=P_(c,!0)):g=[]:B_(c)||of(c)?(g=u,of(u)?g=F_(u):(!N_(u)||M_(u))&&(g=q_(c))):h=!1}h&&(i.set(c,g),o(g,c,n,s,i),i.delete(c)),nf(e,r,g)}a(W_,"baseMergeDeep");cf.exports=W_});var ff=p((l$,df)=>{"use strict";var $_=ya(),j_=is(),Q_=us(),K_=pf(),V_=je(),H_=Sr(),Y_=hs();function lf(e,t,r,n,o){e!==t&&Q_(t,function(s,i){if(o||(o=new $_),V_(s))K_(e,t,i,r,lf,n,o);else{var u=n?n(Y_(e,i),s,i+"",e,t,o):void 0;u===void 0&&(u=s),j_(e,i,u)}},H_)}a(lf,"baseMerge");df.exports=lf});var gf=p((f$,mf)=>{"use strict";var z_=lr(),J_=mr(),X_=Ra(),Z_=je();function ex(e,t,r){if(!Z_(r))return!1;var n=typeof t;return(n=="number"?J_(r)&&X_(t,r.length):n=="string"&&t in r)?z_(r[t],e):!1}a(ex,"isIterateeCall");mf.exports=ex});var yf=p((g$,hf)=>{"use strict";var tx=Zo(),rx=gf();function ax(e){return tx(function(t,r){var n=-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&&rx(r[0],r[1],i)&&(s=o<3?void 0:s,o=1),t=Object(t);++n<o;){var u=r[n];u&&e(t,u,n,s)}return t})}a(ax,"createAssigner");hf.exports=ax});var bs=p((y$,Af)=>{"use strict";var nx=ff(),ox=yf(),sx=ox(function(e,t,r){nx(e,t,r)});Af.exports=sx});var Sm=p(Ue=>{"use strict";Ue.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"};Ue.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"]};Ue.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};Ue.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};Ue.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};Ue.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]};Ue.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}};Ue.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}};Ue.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=Ue.aliasToReal,r={};for(var n in t){var o=t[n];e.call(r,o)?r[o].push(n):r[o]=[n]}return r}();Ue.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"};Ue.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};Ue.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 mi=p((RK,wm)=>{"use strict";wm.exports={}});var vm=p((vK,Rm)=>{"use strict";var me=Sm(),FC=mi(),Tm=Array.prototype.push;function WC(e,t){return t==2?function(r,n){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}a(WC,"baseArity");function gi(e,t){return t==2?function(r,n){return e(r,n)}:function(r){return e(r)}}a(gi,"baseAry");function Em(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}a(Em,"cloneArray");function $C(e){return function(t){return e({},t)}}a($C,"createCloner");function jC(e,t){return function(){for(var r=arguments.length,n=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!=n&&Tm.apply(i,o.slice(t+1)),e.apply(this,i)}}a(jC,"flatSpread");function hi(e,t){return function(){var r=arguments.length;if(r){for(var n=Array(r);r--;)n[r]=arguments[r];var o=n[0]=t.apply(void 0,n);return e.apply(void 0,n),o}}}a(hi,"wrapImmutable");function yi(e,t,r,n){var o=typeof t=="function",s=t===Object(t);if(s&&(n=r,r=t,t=void 0),r==null)throw new TypeError;n||(n={});var i={cap:"cap"in n?n.cap:!0,curry:"curry"in n?n.curry:!0,fixed:"fixed"in n?n.fixed:!0,immutable:"immutable"in n?n.immutable:!0,rearg:"rearg"in n?n.rearg:!0},u=o?r:FC,c="curry"in n&&n.curry,f="fixed"in n&&n.fixed,g="rearg"in n&&n.rearg,h=o?r.runInContext():void 0,y=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},E=y.ary,M=y.assign,k=y.clone,D=y.curry,C=y.forEach,W=y.isArray,ye=y.isError,ie=y.isFunction,Ye=y.isWeakMap,nt=y.keys,ot=y.rearg,Y=y.toInteger,G=y.toPath,Gt=nt(me.aryMethod),Ya={castArray:function(R){return function(){var b=arguments[0];return W(b)?R(Em(b)):R.apply(void 0,arguments)}},iteratee:function(R){return function(){var b=arguments[0],I=arguments[1],v=R(b,I),q=v.length;return i.cap&&typeof I=="number"?(I=I>2?I-2:1,q&&q<=I?v:gi(v,I)):v}},mixin:function(R){return function(b){var I=this;if(!ie(I))return R(I,Object(b));var v=[];return C(nt(b),function(q){ie(b[q])&&v.push([q,I.prototype[q]])}),R(I,Object(b)),C(v,function(q){var oe=q[1];ie(oe)?I.prototype[q[0]]=oe:delete I.prototype[q[0]]}),I}},nthArg:function(R){return function(b){var I=b<0?1:Y(b)+1;return D(R(b),I)}},rearg:function(R){return function(b,I){var v=I?I.length:0;return D(R(b,I),v)}},runInContext:function(R){return function(b){return yi(e,R(b),n)}}};function O(R,b){if(i.cap){var I=me.iterateeRearg[R];if(I)return Z(b,I);var v=!o&&me.iterateeAry[R];if(v)return $(b,v)}return b}a(O,"castCap");function w(R,b,I){return c||i.curry&&I>1?D(b,I):b}a(w,"castCurry");function A(R,b,I){if(i.fixed&&(f||!me.skipFixed[R])){var v=me.methodSpread[R],q=v&&v.start;return q===void 0?E(b,I):jC(b,q)}return b}a(A,"castFixed");function _(R,b,I){return i.rearg&&I>1&&(g||!me.skipRearg[R])?ot(b,me.methodRearg[R]||me.aryRearg[I]):b}a(_,"castRearg");function S(R,b){b=G(b);for(var I=-1,v=b.length,q=v-1,oe=k(Object(R)),Re=oe;Re!=null&&++I<v;){var Fe=b[I],st=Re[Fe];st!=null&&!(ie(st)||ye(st)||Ye(st))&&(Re[Fe]=k(I==q?st:Object(st))),Re=Re[Fe]}return oe}a(S,"cloneByPath");function U(R){return K.runInContext.convert(R)(void 0)}a(U,"convertLib");function P(R,b){var I=me.aliasToReal[R]||R,v=me.remap[I]||I,q=n;return function(oe){var Re=o?h:y,Fe=o?h[v]:b,st=M(M({},q),oe);return yi(Re,I,Fe,st)}}a(P,"createConverter");function $(R,b){return ne(R,function(I){return typeof I=="function"?gi(I,b):I})}a($,"iterateeAry");function Z(R,b){return ne(R,function(I){var v=b.length;return WC(ot(gi(I,v),b),v)})}a(Z,"iterateeRearg");function ne(R,b){return function(){var I=arguments.length;if(!I)return R();for(var v=Array(I);I--;)v[I]=arguments[I];var q=i.rearg?0:I-1;return v[q]=b(v[q]),R.apply(void 0,v)}}a(ne,"overArg");function pe(R,b,I){var v,q=me.aliasToReal[R]||R,oe=b,Re=Ya[q];return Re?oe=Re(b):i.immutable&&(me.mutate.array[q]?oe=hi(b,Em):me.mutate.object[q]?oe=hi(b,$C(b)):me.mutate.set[q]&&(oe=hi(b,S))),C(Gt,function(Fe){return C(me.aryMethod[Fe],function(st){if(q==st){var Yu=me.methodSpread[q],CI=Yu&&Yu.afterRearg;return v=CI?A(q,_(q,oe,Fe),Fe):_(q,A(q,oe,Fe),Fe),v=O(q,v),v=w(q,v,Fe),!1}}),!v}),v||(v=oe),v==b&&(v=c?D(v,1):function(){return b.apply(this,arguments)}),v.convert=P(q,b),v.placeholder=b.placeholder=I,v}if(a(pe,"wrap"),!s)return pe(t,r,u);var K=r,Ge=[];return C(Gt,function(R){C(me.aryMethod[R],function(b){var I=K[me.remap[b]||b];I&&Ge.push([b,pe(b,I,K)])})}),C(nt(K),function(R){var b=K[R];if(typeof b=="function"){for(var I=Ge.length;I--;)if(Ge[I][0]==R)return;b.convert=P(R,b),Ge.push([R,b])}}),C(Ge,function(R){K[R[0]]=R[1]}),K.convert=U,K.placeholder=K,C(nt(K),function(R){C(me.realToAlias[R]||[],function(b){K[b]=K[R]})}),K}a(yi,"baseConvert");Rm.exports=yi});var Ai=p((xK,_m)=>{"use strict";var QC=Ut(),KC=_e(),VC=QC(KC,"WeakMap");_m.exports=VC});var bi=p((CK,Cm)=>{"use strict";var xm=Ai(),HC=xm&&new xm;Cm.exports=HC});var Ii=p((OK,Lm)=>{"use strict";var YC=la(),Om=bi(),zC=Om?function(e,t){return Om.set(e,t),e}:YC;Lm.exports=zC});var Da=p((LK,Pm)=>{"use strict";var JC=Ia(),XC=je();function ZC(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=JC(e.prototype),n=e.apply(r,t);return XC(n)?n:r}}a(ZC,"createCtor");Pm.exports=ZC});var qm=p((UK,Um)=>{"use strict";var eO=Da(),tO=_e(),rO=1;function aO(e,t,r){var n=t&rO,o=eO(e);function s(){var i=this&&this!==tO&&this instanceof s?o:e;return i.apply(n?r:this,arguments)}return a(s,"wrapper"),s}a(aO,"createBind");Um.exports=aO});var Si=p((DK,Dm)=>{"use strict";var nO=Math.max;function oO(e,t,r,n){for(var o=-1,s=e.length,i=r.length,u=-1,c=t.length,f=nO(s-i,0),g=Array(c+f),h=!n;++u<c;)g[u]=t[u];for(;++o<i;)(h||o<s)&&(g[r[o]]=e[o]);for(;f--;)g[u++]=e[o++];return g}a(oO,"composeArgs");Dm.exports=oO});var wi=p((MK,km)=>{"use strict";var sO=Math.max;function iO(e,t,r,n){for(var o=-1,s=e.length,i=-1,u=r.length,c=-1,f=t.length,g=sO(s-u,0),h=Array(g+f),y=!n;++o<g;)h[o]=e[o];for(var E=o;++c<f;)h[E+c]=t[c];for(;++i<u;)(y||o<s)&&(h[E+r[i]]=e[o++]);return h}a(iO,"composeArgsRight");km.exports=iO});var Nm=p((BK,Mm)=>{"use strict";function uO(e,t){for(var r=e.length,n=0;r--;)e[r]===t&&++n;return n}a(uO,"countHolders");Mm.exports=uO});var Jn=p((FK,Bm)=>{"use strict";function cO(){}a(cO,"baseLodash");Bm.exports=cO});var Zn=p(($K,Gm)=>{"use strict";var pO=Ia(),lO=Jn(),dO=4294967295;function Xn(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=dO,this.__views__=[]}a(Xn,"LazyWrapper");Xn.prototype=pO(lO.prototype);Xn.prototype.constructor=Xn;Gm.exports=Xn});var Ti=p((QK,Wm)=>{"use strict";var Fm=bi(),fO=ns(),mO=Fm?function(e){return Fm.get(e)}:fO;Wm.exports=mO});var jm=p((KK,$m)=>{"use strict";var gO={};$m.exports=gO});var Vm=p((VK,Km)=>{"use strict";var Qm=jm(),hO=Object.prototype,yO=hO.hasOwnProperty;function AO(e){for(var t=e.name+"",r=Qm[t],n=yO.call(Qm,t)?r.length:0;n--;){var o=r[n],s=o.func;if(s==null||s==e)return o.name}return t}a(AO,"getFuncName");Km.exports=AO});var Ei=p((YK,Hm)=>{"use strict";var bO=Ia(),IO=Jn();function eo(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}a(eo,"LodashWrapper");eo.prototype=bO(IO.prototype);eo.prototype.constructor=eo;Hm.exports=eo});var zm=p((JK,Ym)=>{"use strict";var SO=Zn(),wO=Ei(),TO=yr();function EO(e){if(e instanceof SO)return e.clone();var t=new wO(e.__wrapped__,e.__chain__);return t.__actions__=TO(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}a(EO,"wrapperClone");Ym.exports=EO});var Zm=p((ZK,Xm)=>{"use strict";var RO=Zn(),Jm=Ei(),vO=Jn(),_O=Ee(),xO=ke(),CO=zm(),OO=Object.prototype,LO=OO.hasOwnProperty;function to(e){if(xO(e)&&!_O(e)&&!(e instanceof RO)){if(e instanceof Jm)return e;if(LO.call(e,"__wrapped__"))return CO(e)}return new Jm(e)}a(to,"lodash");to.prototype=vO.prototype;to.prototype.constructor=to;Xm.exports=to});var tg=p((t2,eg)=>{"use strict";var PO=Zn(),UO=Ti(),qO=Vm(),DO=Zm();function kO(e){var t=qO(e),r=DO[t];if(typeof r!="function"||!(t in PO.prototype))return!1;if(e===r)return!0;var n=UO(r);return!!n&&e===n[0]}a(kO,"isLaziable");eg.exports=kO});var Ri=p((a2,rg)=>{"use strict";var MO=Ii(),NO=Xo(),BO=NO(MO);rg.exports=BO});var ng=p((n2,ag)=>{"use strict";var GO=/\{\n\/\* \[wrapped with (.+)\] \*/,FO=/,? & /;function WO(e){var t=e.match(GO);return t?t[1].split(FO):[]}a(WO,"getWrapDetails");ag.exports=WO});var sg=p((s2,og)=>{"use strict";var $O=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function jO(e,t){var r=t.length;if(!r)return e;var n=r-1;return t[n]=(r>1?"& ":"")+t[n],t=t.join(r>2?", ":" "),e.replace($O,`{
|
|
1
|
+
"use strict";var PI=Object.create;var kr=Object.defineProperty;var UI=Object.getOwnPropertyDescriptor;var qI=Object.getOwnPropertyNames;var DI=Object.getPrototypeOf,kI=Object.prototype.hasOwnProperty;var a=(e,t)=>kr(e,"name",{value:t,configurable:!0});var p=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),x=(e,t)=>{for(var r in t)kr(e,r,{get:t[r],enumerable:!0})},zu=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of qI(t))!kI.call(e,o)&&o!==r&&kr(e,o,{get:()=>t[o],enumerable:!(n=UI(t,o))||n.enumerable});return e};var F=(e,t,r)=>(r=e!=null?PI(DI(e)):{},zu(t||!e||!e.__esModule?kr(r,"default",{value:e,enumerable:!0}):r,e)),MI=e=>zu(kr({},"__esModule",{value:!0}),e);var mn=p((CG,kc)=>{"use strict";function DS(e,t){for(var r=-1,n=t.length,o=e.length;++r<n;)e[o+r]=t[r];return e}a(DS,"arrayPush");kc.exports=DS});var Ko=p((LG,Mc)=>{"use strict";var kS=typeof global=="object"&&global&&global.Object===Object&&global;Mc.exports=kS});var _e=p((PG,Nc)=>{"use strict";var MS=Ko(),NS=typeof self=="object"&&self&&self.Object===Object&&self,BS=MS||NS||Function("return this")();Nc.exports=BS});var Qt=p((UG,Bc)=>{"use strict";var GS=_e(),FS=GS.Symbol;Bc.exports=FS});var $c=p((qG,Wc)=>{"use strict";var Gc=Qt(),Fc=Object.prototype,WS=Fc.hasOwnProperty,$S=Fc.toString,pa=Gc?Gc.toStringTag:void 0;function jS(e){var t=WS.call(e,pa),r=e[pa];try{e[pa]=void 0;var n=!0}catch{}var o=$S.call(e);return n&&(t?e[pa]=r:delete e[pa]),o}a(jS,"getRawTag");Wc.exports=jS});var Qc=p((kG,jc)=>{"use strict";var QS=Object.prototype,KS=QS.toString;function VS(e){return KS.call(e)}a(VS,"objectToString");jc.exports=VS});var Pt=p((NG,Hc)=>{"use strict";var Kc=Qt(),HS=$c(),YS=Qc(),zS="[object Null]",JS="[object Undefined]",Vc=Kc?Kc.toStringTag:void 0;function XS(e){return e==null?e===void 0?JS:zS:Vc&&Vc in Object(e)?HS(e):YS(e)}a(XS,"baseGetTag");Hc.exports=XS});var ke=p((GG,Yc)=>{"use strict";function ZS(e){return e!=null&&typeof e=="object"}a(ZS,"isObjectLike");Yc.exports=ZS});var Jc=p((WG,zc)=>{"use strict";var ew=Pt(),tw=ke(),rw="[object Arguments]";function aw(e){return tw(e)&&ew(e)==rw}a(aw,"baseIsArguments");zc.exports=aw});var la=p((jG,ep)=>{"use strict";var Xc=Jc(),nw=ke(),Zc=Object.prototype,ow=Zc.hasOwnProperty,sw=Zc.propertyIsEnumerable,iw=Xc(function(){return arguments}())?Xc:function(e){return nw(e)&&ow.call(e,"callee")&&!sw.call(e,"callee")};ep.exports=iw});var Ee=p((QG,tp)=>{"use strict";var uw=Array.isArray;tp.exports=uw});var op=p((KG,np)=>{"use strict";var rp=Qt(),cw=la(),pw=Ee(),ap=rp?rp.isConcatSpreadable:void 0;function lw(e){return pw(e)||cw(e)||!!(ap&&e&&e[ap])}a(lw,"isFlattenable");np.exports=lw});var Vo=p((HG,ip)=>{"use strict";var dw=mn(),fw=op();function sp(e,t,r,n,o){var s=-1,i=e.length;for(r||(r=fw),o||(o=[]);++s<i;){var u=e[s];t>0&&r(u)?t>1?sp(u,t-1,r,n,o):dw(o,u):n||(o[o.length]=u)}return o}a(sp,"baseFlatten");ip.exports=sp});var da=p((zG,up)=>{"use strict";function mw(e){return e}a(mw,"identity");up.exports=mw});var gn=p((XG,cp)=>{"use strict";function gw(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)}a(gw,"apply");cp.exports=gw});var Ho=p((eF,lp)=>{"use strict";var hw=gn(),pp=Math.max;function yw(e,t,r){return t=pp(t===void 0?e.length-1:t,0),function(){for(var n=arguments,o=-1,s=pp(n.length-t,0),i=Array(s);++o<s;)i[o]=n[t+o];o=-1;for(var u=Array(t+1);++o<t;)u[o]=n[o];return u[t]=r(i),hw(e,this,u)}}a(yw,"overRest");lp.exports=yw});var fp=p((rF,dp)=>{"use strict";function Aw(e){return function(){return e}}a(Aw,"constant");dp.exports=Aw});var Qe=p((nF,mp)=>{"use strict";function bw(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}a(bw,"isObject");mp.exports=bw});var fa=p((sF,gp)=>{"use strict";var Iw=Pt(),Sw=Qe(),ww="[object AsyncFunction]",Tw="[object Function]",Ew="[object GeneratorFunction]",Rw="[object Proxy]";function vw(e){if(!Sw(e))return!1;var t=Iw(e);return t==Tw||t==Ew||t==ww||t==Rw}a(vw,"isFunction");gp.exports=vw});var yp=p((uF,hp)=>{"use strict";var _w=_e(),xw=_w["__core-js_shared__"];hp.exports=xw});var Ip=p((cF,bp)=>{"use strict";var Yo=yp(),Ap=function(){var e=/[^.]+$/.exec(Yo&&Yo.keys&&Yo.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function Cw(e){return!!Ap&&Ap in e}a(Cw,"isMasked");bp.exports=Cw});var zo=p((lF,Sp)=>{"use strict";var Ow=Function.prototype,Lw=Ow.toString;function Pw(e){if(e!=null){try{return Lw.call(e)}catch{}try{return e+""}catch{}}return""}a(Pw,"toSource");Sp.exports=Pw});var Tp=p((fF,wp)=>{"use strict";var Uw=fa(),qw=Ip(),Dw=Qe(),kw=zo(),Mw=/[\\^$.*+?()[\]{}|]/g,Nw=/^\[object .+?Constructor\]$/,Bw=Function.prototype,Gw=Object.prototype,Fw=Bw.toString,Ww=Gw.hasOwnProperty,$w=RegExp("^"+Fw.call(Ww).replace(Mw,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function jw(e){if(!Dw(e)||qw(e))return!1;var t=Uw(e)?$w:Nw;return t.test(kw(e))}a(jw,"baseIsNative");wp.exports=jw});var Rp=p((gF,Ep)=>{"use strict";function Qw(e,t){return e?.[t]}a(Qw,"getValue");Ep.exports=Qw});var Ut=p((yF,vp)=>{"use strict";var Kw=Tp(),Vw=Rp();function Hw(e,t){var r=Vw(e,t);return Kw(r)?r:void 0}a(Hw,"getNative");vp.exports=Hw});var Jo=p((bF,_p)=>{"use strict";var Yw=Ut(),zw=function(){try{var e=Yw(Object,"defineProperty");return e({},"",{}),e}catch{}}();_p.exports=zw});var Op=p((IF,Cp)=>{"use strict";var Jw=fp(),xp=Jo(),Xw=da(),Zw=xp?function(e,t){return xp(e,"toString",{configurable:!0,enumerable:!1,value:Jw(t),writable:!0})}:Xw;Cp.exports=Zw});var Xo=p((SF,Lp)=>{"use strict";var eT=800,tT=16,rT=Date.now;function aT(e){var t=0,r=0;return function(){var n=rT(),o=tT-(n-r);if(r=n,o>0){if(++t>=eT)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}a(aT,"shortOut");Lp.exports=aT});var hn=p((TF,Pp)=>{"use strict";var nT=Op(),oT=Xo(),sT=oT(nT);Pp.exports=sT});var Zo=p((EF,Up)=>{"use strict";var iT=da(),uT=Ho(),cT=hn();function pT(e,t){return cT(uT(e,t,iT),e+"")}a(pT,"baseRest");Up.exports=pT});var ma=p((vF,qp)=>{"use strict";var lT=Ut(),dT=lT(Object,"create");qp.exports=dT});var Mp=p((_F,kp)=>{"use strict";var Dp=ma();function fT(){this.__data__=Dp?Dp(null):{},this.size=0}a(fT,"hashClear");kp.exports=fT});var Bp=p((CF,Np)=>{"use strict";function mT(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}a(mT,"hashDelete");Np.exports=mT});var Fp=p((LF,Gp)=>{"use strict";var gT=ma(),hT="__lodash_hash_undefined__",yT=Object.prototype,AT=yT.hasOwnProperty;function bT(e){var t=this.__data__;if(gT){var r=t[e];return r===hT?void 0:r}return AT.call(t,e)?t[e]:void 0}a(bT,"hashGet");Gp.exports=bT});var $p=p((UF,Wp)=>{"use strict";var IT=ma(),ST=Object.prototype,wT=ST.hasOwnProperty;function TT(e){var t=this.__data__;return IT?t[e]!==void 0:wT.call(t,e)}a(TT,"hashHas");Wp.exports=TT});var Qp=p((DF,jp)=>{"use strict";var ET=ma(),RT="__lodash_hash_undefined__";function vT(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=ET&&t===void 0?RT:t,this}a(vT,"hashSet");jp.exports=vT});var Vp=p((MF,Kp)=>{"use strict";var _T=Mp(),xT=Bp(),CT=Fp(),OT=$p(),LT=Qp();function pr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}a(pr,"Hash");pr.prototype.clear=_T;pr.prototype.delete=xT;pr.prototype.get=CT;pr.prototype.has=OT;pr.prototype.set=LT;Kp.exports=pr});var Yp=p((BF,Hp)=>{"use strict";function PT(){this.__data__=[],this.size=0}a(PT,"listCacheClear");Hp.exports=PT});var lr=p((FF,zp)=>{"use strict";function UT(e,t){return e===t||e!==e&&t!==t}a(UT,"eq");zp.exports=UT});var ga=p(($F,Jp)=>{"use strict";var qT=lr();function DT(e,t){for(var r=e.length;r--;)if(qT(e[r][0],t))return r;return-1}a(DT,"assocIndexOf");Jp.exports=DT});var Zp=p((QF,Xp)=>{"use strict";var kT=ga(),MT=Array.prototype,NT=MT.splice;function BT(e){var t=this.__data__,r=kT(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():NT.call(t,r,1),--this.size,!0}a(BT,"listCacheDelete");Xp.exports=BT});var tl=p((VF,el)=>{"use strict";var GT=ga();function FT(e){var t=this.__data__,r=GT(t,e);return r<0?void 0:t[r][1]}a(FT,"listCacheGet");el.exports=FT});var al=p((YF,rl)=>{"use strict";var WT=ga();function $T(e){return WT(this.__data__,e)>-1}a($T,"listCacheHas");rl.exports=$T});var ol=p((JF,nl)=>{"use strict";var jT=ga();function QT(e,t){var r=this.__data__,n=jT(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}a(QT,"listCacheSet");nl.exports=QT});var ha=p((ZF,sl)=>{"use strict";var KT=Yp(),VT=Zp(),HT=tl(),YT=al(),zT=ol();function dr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}a(dr,"ListCache");dr.prototype.clear=KT;dr.prototype.delete=VT;dr.prototype.get=HT;dr.prototype.has=YT;dr.prototype.set=zT;sl.exports=dr});var yn=p((t1,il)=>{"use strict";var JT=Ut(),XT=_e(),ZT=JT(XT,"Map");il.exports=ZT});var pl=p((r1,cl)=>{"use strict";var ul=Vp(),eE=ha(),tE=yn();function rE(){this.size=0,this.__data__={hash:new ul,map:new(tE||eE),string:new ul}}a(rE,"mapCacheClear");cl.exports=rE});var dl=p((n1,ll)=>{"use strict";function aE(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}a(aE,"isKeyable");ll.exports=aE});var ya=p((s1,fl)=>{"use strict";var nE=dl();function oE(e,t){var r=e.__data__;return nE(t)?r[typeof t=="string"?"string":"hash"]:r.map}a(oE,"getMapData");fl.exports=oE});var gl=p((u1,ml)=>{"use strict";var sE=ya();function iE(e){var t=sE(this,e).delete(e);return this.size-=t?1:0,t}a(iE,"mapCacheDelete");ml.exports=iE});var yl=p((p1,hl)=>{"use strict";var uE=ya();function cE(e){return uE(this,e).get(e)}a(cE,"mapCacheGet");hl.exports=cE});var bl=p((d1,Al)=>{"use strict";var pE=ya();function lE(e){return pE(this,e).has(e)}a(lE,"mapCacheHas");Al.exports=lE});var Sl=p((m1,Il)=>{"use strict";var dE=ya();function fE(e,t){var r=dE(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}a(fE,"mapCacheSet");Il.exports=fE});var An=p((h1,wl)=>{"use strict";var mE=pl(),gE=gl(),hE=yl(),yE=bl(),AE=Sl();function fr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}a(fr,"MapCache");fr.prototype.clear=mE;fr.prototype.delete=gE;fr.prototype.get=hE;fr.prototype.has=yE;fr.prototype.set=AE;wl.exports=fr});var El=p((A1,Tl)=>{"use strict";var bE="__lodash_hash_undefined__";function IE(e){return this.__data__.set(e,bE),this}a(IE,"setCacheAdd");Tl.exports=IE});var vl=p((I1,Rl)=>{"use strict";function SE(e){return this.__data__.has(e)}a(SE,"setCacheHas");Rl.exports=SE});var es=p((w1,_l)=>{"use strict";var wE=An(),TE=El(),EE=vl();function bn(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new wE;++t<r;)this.add(e[t])}a(bn,"SetCache");bn.prototype.add=bn.prototype.push=TE;bn.prototype.has=EE;_l.exports=bn});var Cl=p((E1,xl)=>{"use strict";function RE(e,t,r,n){for(var o=e.length,s=r+(n?1:-1);n?s--:++s<o;)if(t(e[s],s,e))return s;return-1}a(RE,"baseFindIndex");xl.exports=RE});var Ll=p((v1,Ol)=>{"use strict";function vE(e){return e!==e}a(vE,"baseIsNaN");Ol.exports=vE});var Ul=p((x1,Pl)=>{"use strict";function _E(e,t,r){for(var n=r-1,o=e.length;++n<o;)if(e[n]===t)return n;return-1}a(_E,"strictIndexOf");Pl.exports=_E});var Dl=p((O1,ql)=>{"use strict";var xE=Cl(),CE=Ll(),OE=Ul();function LE(e,t,r){return t===t?OE(e,t,r):xE(e,CE,r)}a(LE,"baseIndexOf");ql.exports=LE});var ts=p((P1,kl)=>{"use strict";var PE=Dl();function UE(e,t){var r=e==null?0:e.length;return!!r&&PE(e,t,0)>-1}a(UE,"arrayIncludes");kl.exports=UE});var Nl=p((q1,Ml)=>{"use strict";function qE(e,t,r){for(var n=-1,o=e==null?0:e.length;++n<o;)if(r(t,e[n]))return!0;return!1}a(qE,"arrayIncludesWith");Ml.exports=qE});var rs=p((k1,Bl)=>{"use strict";function DE(e,t){return e.has(t)}a(DE,"cacheHas");Bl.exports=DE});var as=p((N1,Gl)=>{"use strict";var kE=Ut(),ME=_e(),NE=kE(ME,"Set");Gl.exports=NE});var ns=p((B1,Fl)=>{"use strict";function BE(){}a(BE,"noop");Fl.exports=BE});var In=p((F1,Wl)=>{"use strict";function GE(e){var t=-1,r=Array(e.size);return e.forEach(function(n){r[++t]=n}),r}a(GE,"setToArray");Wl.exports=GE});var jl=p(($1,$l)=>{"use strict";var os=as(),FE=ns(),WE=In(),$E=1/0,jE=os&&1/WE(new os([,-0]))[1]==$E?function(e){return new os(e)}:FE;$l.exports=jE});var Kl=p((j1,Ql)=>{"use strict";var QE=es(),KE=ts(),VE=Nl(),HE=rs(),YE=jl(),zE=In(),JE=200;function XE(e,t,r){var n=-1,o=KE,s=e.length,i=!0,u=[],c=u;if(r)i=!1,o=VE;else if(s>=JE){var f=t?null:YE(e);if(f)return zE(f);i=!1,o=HE,c=new QE}else c=t?[]:u;e:for(;++n<s;){var g=e[n],h=t?t(g):g;if(g=r||g!==0?g:0,i&&h===h){for(var y=c.length;y--;)if(c[y]===h)continue e;t&&c.push(h),u.push(g)}else o(c,h,r)||(c!==u&&c.push(h),u.push(g))}return u}a(XE,"baseUniq");Ql.exports=XE});var Sn=p((K1,Vl)=>{"use strict";var ZE=9007199254740991;function eR(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=ZE}a(eR,"isLength");Vl.exports=eR});var mr=p((H1,Hl)=>{"use strict";var tR=fa(),rR=Sn();function aR(e){return e!=null&&rR(e.length)&&!tR(e)}a(aR,"isArrayLike");Hl.exports=aR});var ss=p((z1,Yl)=>{"use strict";var nR=mr(),oR=ke();function sR(e){return oR(e)&&nR(e)}a(sR,"isArrayLikeObject");Yl.exports=sR});var Jl=p((X1,zl)=>{"use strict";var iR=Vo(),uR=Zo(),cR=Kl(),pR=ss(),lR=uR(function(e){return cR(iR(e,1,pR,!0))});zl.exports=lR});var Zl=p((Z1,Xl)=>{"use strict";var dR=ha();function fR(){this.__data__=new dR,this.size=0}a(fR,"stackClear");Xl.exports=fR});var td=p((tW,ed)=>{"use strict";function mR(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}a(mR,"stackDelete");ed.exports=mR});var ad=p((aW,rd)=>{"use strict";function gR(e){return this.__data__.get(e)}a(gR,"stackGet");rd.exports=gR});var od=p((oW,nd)=>{"use strict";function hR(e){return this.__data__.has(e)}a(hR,"stackHas");nd.exports=hR});var id=p((iW,sd)=>{"use strict";var yR=ha(),AR=yn(),bR=An(),IR=200;function SR(e,t){var r=this.__data__;if(r instanceof yR){var n=r.__data__;if(!AR||n.length<IR-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new bR(n)}return r.set(e,t),this.size=r.size,this}a(SR,"stackSet");sd.exports=SR});var Aa=p((cW,ud)=>{"use strict";var wR=ha(),TR=Zl(),ER=td(),RR=ad(),vR=od(),_R=id();function gr(e){var t=this.__data__=new wR(e);this.size=t.size}a(gr,"Stack");gr.prototype.clear=TR;gr.prototype.delete=ER;gr.prototype.get=RR;gr.prototype.has=vR;gr.prototype.set=_R;ud.exports=gr});var ba=p((lW,pd)=>{"use strict";var cd=Jo();function xR(e,t,r){t=="__proto__"&&cd?cd(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}a(xR,"baseAssignValue");pd.exports=xR});var is=p((fW,ld)=>{"use strict";var CR=ba(),OR=lr();function LR(e,t,r){(r!==void 0&&!OR(e[t],r)||r===void 0&&!(t in e))&&CR(e,t,r)}a(LR,"assignMergeValue");ld.exports=LR});var fd=p((gW,dd)=>{"use strict";function PR(e){return function(t,r,n){for(var o=-1,s=Object(t),i=n(t),u=i.length;u--;){var c=i[e?u:++o];if(r(s[c],c,s)===!1)break}return t}}a(PR,"createBaseFor");dd.exports=PR});var us=p((yW,md)=>{"use strict";var UR=fd(),qR=UR();md.exports=qR});var cs=p((Ia,hr)=>{"use strict";var DR=_e(),Ad=typeof Ia=="object"&&Ia&&!Ia.nodeType&&Ia,gd=Ad&&typeof hr=="object"&&hr&&!hr.nodeType&&hr,kR=gd&&gd.exports===Ad,hd=kR?DR.Buffer:void 0,yd=hd?hd.allocUnsafe:void 0;function MR(e,t){if(t)return e.slice();var r=e.length,n=yd?yd(r):new e.constructor(r);return e.copy(n),n}a(MR,"cloneBuffer");hr.exports=MR});var ps=p((bW,bd)=>{"use strict";var NR=_e(),BR=NR.Uint8Array;bd.exports=BR});var wn=p((IW,Sd)=>{"use strict";var Id=ps();function GR(e){var t=new e.constructor(e.byteLength);return new Id(t).set(new Id(e)),t}a(GR,"cloneArrayBuffer");Sd.exports=GR});var ls=p((wW,wd)=>{"use strict";var FR=wn();function WR(e,t){var r=t?FR(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}a(WR,"cloneTypedArray");wd.exports=WR});var yr=p((EW,Td)=>{"use strict";function $R(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t}a($R,"copyArray");Td.exports=$R});var Sa=p((vW,Rd)=>{"use strict";var jR=Qe(),Ed=Object.create,QR=function(){function e(){}return a(e,"object"),function(t){if(!jR(t))return{};if(Ed)return Ed(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();Rd.exports=QR});var ds=p((xW,vd)=>{"use strict";function KR(e,t){return function(r){return e(t(r))}}a(KR,"overArg");vd.exports=KR});var Tn=p((OW,_d)=>{"use strict";var VR=ds(),HR=VR(Object.getPrototypeOf,Object);_d.exports=HR});var En=p((LW,xd)=>{"use strict";var YR=Object.prototype;function zR(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||YR;return e===r}a(zR,"isPrototype");xd.exports=zR});var fs=p((UW,Cd)=>{"use strict";var JR=Sa(),XR=Tn(),ZR=En();function ev(e){return typeof e.constructor=="function"&&!ZR(e)?JR(XR(e)):{}}a(ev,"initCloneObject");Cd.exports=ev});var Ld=p((DW,Od)=>{"use strict";function tv(){return!1}a(tv,"stubFalse");Od.exports=tv});var Ta=p((wa,Ar)=>{"use strict";var rv=_e(),av=Ld(),qd=typeof wa=="object"&&wa&&!wa.nodeType&&wa,Pd=qd&&typeof Ar=="object"&&Ar&&!Ar.nodeType&&Ar,nv=Pd&&Pd.exports===qd,Ud=nv?rv.Buffer:void 0,ov=Ud?Ud.isBuffer:void 0,sv=ov||av;Ar.exports=sv});var ms=p((MW,kd)=>{"use strict";var iv=Pt(),uv=Tn(),cv=ke(),pv="[object Object]",lv=Function.prototype,dv=Object.prototype,Dd=lv.toString,fv=dv.hasOwnProperty,mv=Dd.call(Object);function gv(e){if(!cv(e)||iv(e)!=pv)return!1;var t=uv(e);if(t===null)return!0;var r=fv.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Dd.call(r)==mv}a(gv,"isPlainObject");kd.exports=gv});var Nd=p((BW,Md)=>{"use strict";var hv=Pt(),yv=Sn(),Av=ke(),bv="[object Arguments]",Iv="[object Array]",Sv="[object Boolean]",wv="[object Date]",Tv="[object Error]",Ev="[object Function]",Rv="[object Map]",vv="[object Number]",_v="[object Object]",xv="[object RegExp]",Cv="[object Set]",Ov="[object String]",Lv="[object WeakMap]",Pv="[object ArrayBuffer]",Uv="[object DataView]",qv="[object Float32Array]",Dv="[object Float64Array]",kv="[object Int8Array]",Mv="[object Int16Array]",Nv="[object Int32Array]",Bv="[object Uint8Array]",Gv="[object Uint8ClampedArray]",Fv="[object Uint16Array]",Wv="[object Uint32Array]",H={};H[qv]=H[Dv]=H[kv]=H[Mv]=H[Nv]=H[Bv]=H[Gv]=H[Fv]=H[Wv]=!0;H[bv]=H[Iv]=H[Pv]=H[Sv]=H[Uv]=H[wv]=H[Tv]=H[Ev]=H[Rv]=H[vv]=H[_v]=H[xv]=H[Cv]=H[Ov]=H[Lv]=!1;function $v(e){return Av(e)&&yv(e.length)&&!!H[hv(e)]}a($v,"baseIsTypedArray");Md.exports=$v});var Rn=p((FW,Bd)=>{"use strict";function jv(e){return function(t){return e(t)}}a(jv,"baseUnary");Bd.exports=jv});var vn=p((Ea,br)=>{"use strict";var Qv=Ko(),Gd=typeof Ea=="object"&&Ea&&!Ea.nodeType&&Ea,Ra=Gd&&typeof br=="object"&&br&&!br.nodeType&&br,Kv=Ra&&Ra.exports===Gd,gs=Kv&&Qv.process,Vv=function(){try{var e=Ra&&Ra.require&&Ra.require("util").types;return e||gs&&gs.binding&&gs.binding("util")}catch{}}();br.exports=Vv});var _n=p(($W,$d)=>{"use strict";var Hv=Nd(),Yv=Rn(),Fd=vn(),Wd=Fd&&Fd.isTypedArray,zv=Wd?Yv(Wd):Hv;$d.exports=zv});var hs=p((jW,jd)=>{"use strict";function Jv(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}a(Jv,"safeGet");jd.exports=Jv});var ys=p((KW,Qd)=>{"use strict";var Xv=ba(),Zv=lr(),e_=Object.prototype,t_=e_.hasOwnProperty;function r_(e,t,r){var n=e[t];(!(t_.call(e,t)&&Zv(n,r))||r===void 0&&!(t in e))&&Xv(e,t,r)}a(r_,"assignValue");Qd.exports=r_});var Ir=p((HW,Kd)=>{"use strict";var a_=ys(),n_=ba();function o_(e,t,r,n){var o=!r;r||(r={});for(var s=-1,i=t.length;++s<i;){var u=t[s],c=n?n(r[u],e[u],u,r,e):void 0;c===void 0&&(c=e[u]),o?n_(r,u,c):a_(r,u,c)}return r}a(o_,"copyObject");Kd.exports=o_});var Hd=p((zW,Vd)=>{"use strict";function s_(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}a(s_,"baseTimes");Vd.exports=s_});var va=p((XW,Yd)=>{"use strict";var i_=9007199254740991,u_=/^(?:0|[1-9]\d*)$/;function c_(e,t){var r=typeof e;return t=t??i_,!!t&&(r=="number"||r!="symbol"&&u_.test(e))&&e>-1&&e%1==0&&e<t}a(c_,"isIndex");Yd.exports=c_});var As=p((e$,zd)=>{"use strict";var p_=Hd(),l_=la(),d_=Ee(),f_=Ta(),m_=va(),g_=_n(),h_=Object.prototype,y_=h_.hasOwnProperty;function A_(e,t){var r=d_(e),n=!r&&l_(e),o=!r&&!n&&f_(e),s=!r&&!n&&!o&&g_(e),i=r||n||o||s,u=i?p_(e.length,String):[],c=u.length;for(var f in e)(t||y_.call(e,f))&&!(i&&(f=="length"||o&&(f=="offset"||f=="parent")||s&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||m_(f,c)))&&u.push(f);return u}a(A_,"arrayLikeKeys");zd.exports=A_});var Xd=p((r$,Jd)=>{"use strict";function b_(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}a(b_,"nativeKeysIn");Jd.exports=b_});var ef=p((n$,Zd)=>{"use strict";var I_=Qe(),S_=En(),w_=Xd(),T_=Object.prototype,E_=T_.hasOwnProperty;function R_(e){if(!I_(e))return w_(e);var t=S_(e),r=[];for(var n in e)n=="constructor"&&(t||!E_.call(e,n))||r.push(n);return r}a(R_,"baseKeysIn");Zd.exports=R_});var Sr=p((s$,tf)=>{"use strict";var v_=As(),__=ef(),x_=mr();function C_(e){return x_(e)?v_(e,!0):__(e)}a(C_,"keysIn");tf.exports=C_});var af=p((u$,rf)=>{"use strict";var O_=Ir(),L_=Sr();function P_(e){return O_(e,L_(e))}a(P_,"toPlainObject");rf.exports=P_});var pf=p((p$,cf)=>{"use strict";var nf=is(),U_=cs(),q_=ls(),D_=yr(),k_=fs(),of=la(),sf=Ee(),M_=ss(),N_=Ta(),B_=fa(),G_=Qe(),F_=ms(),W_=_n(),uf=hs(),$_=af();function j_(e,t,r,n,o,s,i){var u=uf(e,r),c=uf(t,r),f=i.get(c);if(f){nf(e,r,f);return}var g=s?s(u,c,r+"",e,t,i):void 0,h=g===void 0;if(h){var y=sf(c),E=!y&&N_(c),M=!y&&!E&&W_(c);g=c,y||E||M?sf(u)?g=u:M_(u)?g=D_(u):E?(h=!1,g=U_(c,!0)):M?(h=!1,g=q_(c,!0)):g=[]:F_(c)||of(c)?(g=u,of(u)?g=$_(u):(!G_(u)||B_(u))&&(g=k_(c))):h=!1}h&&(i.set(c,g),o(g,c,n,s,i),i.delete(c)),nf(e,r,g)}a(j_,"baseMergeDeep");cf.exports=j_});var ff=p((d$,df)=>{"use strict";var Q_=Aa(),K_=is(),V_=us(),H_=pf(),Y_=Qe(),z_=Sr(),J_=hs();function lf(e,t,r,n,o){e!==t&&V_(t,function(s,i){if(o||(o=new Q_),Y_(s))H_(e,t,i,r,lf,n,o);else{var u=n?n(J_(e,i),s,i+"",e,t,o):void 0;u===void 0&&(u=s),K_(e,i,u)}},z_)}a(lf,"baseMerge");df.exports=lf});var gf=p((m$,mf)=>{"use strict";var X_=lr(),Z_=mr(),ex=va(),tx=Qe();function rx(e,t,r){if(!tx(r))return!1;var n=typeof t;return(n=="number"?Z_(r)&&ex(t,r.length):n=="string"&&t in r)?X_(r[t],e):!1}a(rx,"isIterateeCall");mf.exports=rx});var yf=p((h$,hf)=>{"use strict";var ax=Zo(),nx=gf();function ox(e){return ax(function(t,r){var n=-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&&nx(r[0],r[1],i)&&(s=o<3?void 0:s,o=1),t=Object(t);++n<o;){var u=r[n];u&&e(t,u,n,s)}return t})}a(ox,"createAssigner");hf.exports=ox});var bs=p((A$,Af)=>{"use strict";var sx=ff(),ix=yf(),ux=ix(function(e,t,r){sx(e,t,r)});Af.exports=ux});var Sm=p(Ue=>{"use strict";Ue.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"};Ue.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"]};Ue.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};Ue.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};Ue.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};Ue.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]};Ue.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}};Ue.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}};Ue.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=Ue.aliasToReal,r={};for(var n in t){var o=t[n];e.call(r,o)?r[o].push(n):r[o]=[n]}return r}();Ue.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"};Ue.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};Ue.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 mi=p((vK,wm)=>{"use strict";wm.exports={}});var vm=p((_K,Rm)=>{"use strict";var me=Sm(),$C=mi(),Tm=Array.prototype.push;function jC(e,t){return t==2?function(r,n){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}a(jC,"baseArity");function gi(e,t){return t==2?function(r,n){return e(r,n)}:function(r){return e(r)}}a(gi,"baseAry");function Em(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}a(Em,"cloneArray");function QC(e){return function(t){return e({},t)}}a(QC,"createCloner");function KC(e,t){return function(){for(var r=arguments.length,n=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!=n&&Tm.apply(i,o.slice(t+1)),e.apply(this,i)}}a(KC,"flatSpread");function hi(e,t){return function(){var r=arguments.length;if(r){for(var n=Array(r);r--;)n[r]=arguments[r];var o=n[0]=t.apply(void 0,n);return e.apply(void 0,n),o}}}a(hi,"wrapImmutable");function yi(e,t,r,n){var o=typeof t=="function",s=t===Object(t);if(s&&(n=r,r=t,t=void 0),r==null)throw new TypeError;n||(n={});var i={cap:"cap"in n?n.cap:!0,curry:"curry"in n?n.curry:!0,fixed:"fixed"in n?n.fixed:!0,immutable:"immutable"in n?n.immutable:!0,rearg:"rearg"in n?n.rearg:!0},u=o?r:$C,c="curry"in n&&n.curry,f="fixed"in n&&n.fixed,g="rearg"in n&&n.rearg,h=o?r.runInContext():void 0,y=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},E=y.ary,M=y.assign,k=y.clone,D=y.curry,C=y.forEach,W=y.isArray,ye=y.isError,ie=y.isFunction,Ye=y.isWeakMap,nt=y.keys,ot=y.rearg,Y=y.toInteger,G=y.toPath,Gt=nt(me.aryMethod),Ya={castArray:function(R){return function(){var b=arguments[0];return W(b)?R(Em(b)):R.apply(void 0,arguments)}},iteratee:function(R){return function(){var b=arguments[0],I=arguments[1],v=R(b,I),q=v.length;return i.cap&&typeof I=="number"?(I=I>2?I-2:1,q&&q<=I?v:gi(v,I)):v}},mixin:function(R){return function(b){var I=this;if(!ie(I))return R(I,Object(b));var v=[];return C(nt(b),function(q){ie(b[q])&&v.push([q,I.prototype[q]])}),R(I,Object(b)),C(v,function(q){var oe=q[1];ie(oe)?I.prototype[q[0]]=oe:delete I.prototype[q[0]]}),I}},nthArg:function(R){return function(b){var I=b<0?1:Y(b)+1;return D(R(b),I)}},rearg:function(R){return function(b,I){var v=I?I.length:0;return D(R(b,I),v)}},runInContext:function(R){return function(b){return yi(e,R(b),n)}}};function O(R,b){if(i.cap){var I=me.iterateeRearg[R];if(I)return Z(b,I);var v=!o&&me.iterateeAry[R];if(v)return $(b,v)}return b}a(O,"castCap");function w(R,b,I){return c||i.curry&&I>1?D(b,I):b}a(w,"castCurry");function A(R,b,I){if(i.fixed&&(f||!me.skipFixed[R])){var v=me.methodSpread[R],q=v&&v.start;return q===void 0?E(b,I):KC(b,q)}return b}a(A,"castFixed");function _(R,b,I){return i.rearg&&I>1&&(g||!me.skipRearg[R])?ot(b,me.methodRearg[R]||me.aryRearg[I]):b}a(_,"castRearg");function S(R,b){b=G(b);for(var I=-1,v=b.length,q=v-1,oe=k(Object(R)),Re=oe;Re!=null&&++I<v;){var We=b[I],st=Re[We];st!=null&&!(ie(st)||ye(st)||Ye(st))&&(Re[We]=k(I==q?st:Object(st))),Re=Re[We]}return oe}a(S,"cloneByPath");function U(R){return K.runInContext.convert(R)(void 0)}a(U,"convertLib");function P(R,b){var I=me.aliasToReal[R]||R,v=me.remap[I]||I,q=n;return function(oe){var Re=o?h:y,We=o?h[v]:b,st=M(M({},q),oe);return yi(Re,I,We,st)}}a(P,"createConverter");function $(R,b){return ne(R,function(I){return typeof I=="function"?gi(I,b):I})}a($,"iterateeAry");function Z(R,b){return ne(R,function(I){var v=b.length;return jC(ot(gi(I,v),b),v)})}a(Z,"iterateeRearg");function ne(R,b){return function(){var I=arguments.length;if(!I)return R();for(var v=Array(I);I--;)v[I]=arguments[I];var q=i.rearg?0:I-1;return v[q]=b(v[q]),R.apply(void 0,v)}}a(ne,"overArg");function pe(R,b,I){var v,q=me.aliasToReal[R]||R,oe=b,Re=Ya[q];return Re?oe=Re(b):i.immutable&&(me.mutate.array[q]?oe=hi(b,Em):me.mutate.object[q]?oe=hi(b,QC(b)):me.mutate.set[q]&&(oe=hi(b,S))),C(Gt,function(We){return C(me.aryMethod[We],function(st){if(q==st){var Yu=me.methodSpread[q],LI=Yu&&Yu.afterRearg;return v=LI?A(q,_(q,oe,We),We):_(q,A(q,oe,We),We),v=O(q,v),v=w(q,v,We),!1}}),!v}),v||(v=oe),v==b&&(v=c?D(v,1):function(){return b.apply(this,arguments)}),v.convert=P(q,b),v.placeholder=b.placeholder=I,v}if(a(pe,"wrap"),!s)return pe(t,r,u);var K=r,Fe=[];return C(Gt,function(R){C(me.aryMethod[R],function(b){var I=K[me.remap[b]||b];I&&Fe.push([b,pe(b,I,K)])})}),C(nt(K),function(R){var b=K[R];if(typeof b=="function"){for(var I=Fe.length;I--;)if(Fe[I][0]==R)return;b.convert=P(R,b),Fe.push([R,b])}}),C(Fe,function(R){K[R[0]]=R[1]}),K.convert=U,K.placeholder=K,C(nt(K),function(R){C(me.realToAlias[R]||[],function(b){K[b]=K[R]})}),K}a(yi,"baseConvert");Rm.exports=yi});var Ai=p((CK,_m)=>{"use strict";var VC=Ut(),HC=_e(),YC=VC(HC,"WeakMap");_m.exports=YC});var bi=p((OK,Cm)=>{"use strict";var xm=Ai(),zC=xm&&new xm;Cm.exports=zC});var Ii=p((LK,Lm)=>{"use strict";var JC=da(),Om=bi(),XC=Om?function(e,t){return Om.set(e,t),e}:JC;Lm.exports=XC});var ka=p((PK,Pm)=>{"use strict";var ZC=Sa(),eO=Qe();function tO(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=ZC(e.prototype),n=e.apply(r,t);return eO(n)?n:r}}a(tO,"createCtor");Pm.exports=tO});var qm=p((qK,Um)=>{"use strict";var rO=ka(),aO=_e(),nO=1;function oO(e,t,r){var n=t&nO,o=rO(e);function s(){var i=this&&this!==aO&&this instanceof s?o:e;return i.apply(n?r:this,arguments)}return a(s,"wrapper"),s}a(oO,"createBind");Um.exports=oO});var Si=p((kK,Dm)=>{"use strict";var sO=Math.max;function iO(e,t,r,n){for(var o=-1,s=e.length,i=r.length,u=-1,c=t.length,f=sO(s-i,0),g=Array(c+f),h=!n;++u<c;)g[u]=t[u];for(;++o<i;)(h||o<s)&&(g[r[o]]=e[o]);for(;f--;)g[u++]=e[o++];return g}a(iO,"composeArgs");Dm.exports=iO});var wi=p((NK,km)=>{"use strict";var uO=Math.max;function cO(e,t,r,n){for(var o=-1,s=e.length,i=-1,u=r.length,c=-1,f=t.length,g=uO(s-u,0),h=Array(g+f),y=!n;++o<g;)h[o]=e[o];for(var E=o;++c<f;)h[E+c]=t[c];for(;++i<u;)(y||o<s)&&(h[E+r[i]]=e[o++]);return h}a(cO,"composeArgsRight");km.exports=cO});var Nm=p((GK,Mm)=>{"use strict";function pO(e,t){for(var r=e.length,n=0;r--;)e[r]===t&&++n;return n}a(pO,"countHolders");Mm.exports=pO});var Jn=p((WK,Bm)=>{"use strict";function lO(){}a(lO,"baseLodash");Bm.exports=lO});var Zn=p((jK,Gm)=>{"use strict";var dO=Sa(),fO=Jn(),mO=4294967295;function Xn(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=mO,this.__views__=[]}a(Xn,"LazyWrapper");Xn.prototype=dO(fO.prototype);Xn.prototype.constructor=Xn;Gm.exports=Xn});var Ti=p((KK,Wm)=>{"use strict";var Fm=bi(),gO=ns(),hO=Fm?function(e){return Fm.get(e)}:gO;Wm.exports=hO});var jm=p((VK,$m)=>{"use strict";var yO={};$m.exports=yO});var Vm=p((HK,Km)=>{"use strict";var Qm=jm(),AO=Object.prototype,bO=AO.hasOwnProperty;function IO(e){for(var t=e.name+"",r=Qm[t],n=bO.call(Qm,t)?r.length:0;n--;){var o=r[n],s=o.func;if(s==null||s==e)return o.name}return t}a(IO,"getFuncName");Km.exports=IO});var Ei=p((zK,Hm)=>{"use strict";var SO=Sa(),wO=Jn();function eo(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}a(eo,"LodashWrapper");eo.prototype=SO(wO.prototype);eo.prototype.constructor=eo;Hm.exports=eo});var zm=p((XK,Ym)=>{"use strict";var TO=Zn(),EO=Ei(),RO=yr();function vO(e){if(e instanceof TO)return e.clone();var t=new EO(e.__wrapped__,e.__chain__);return t.__actions__=RO(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}a(vO,"wrapperClone");Ym.exports=vO});var Zm=p((e2,Xm)=>{"use strict";var _O=Zn(),Jm=Ei(),xO=Jn(),CO=Ee(),OO=ke(),LO=zm(),PO=Object.prototype,UO=PO.hasOwnProperty;function to(e){if(OO(e)&&!CO(e)&&!(e instanceof _O)){if(e instanceof Jm)return e;if(UO.call(e,"__wrapped__"))return LO(e)}return new Jm(e)}a(to,"lodash");to.prototype=xO.prototype;to.prototype.constructor=to;Xm.exports=to});var tg=p((r2,eg)=>{"use strict";var qO=Zn(),DO=Ti(),kO=Vm(),MO=Zm();function NO(e){var t=kO(e),r=MO[t];if(typeof r!="function"||!(t in qO.prototype))return!1;if(e===r)return!0;var n=DO(r);return!!n&&e===n[0]}a(NO,"isLaziable");eg.exports=NO});var Ri=p((n2,rg)=>{"use strict";var BO=Ii(),GO=Xo(),FO=GO(BO);rg.exports=FO});var ng=p((o2,ag)=>{"use strict";var WO=/\{\n\/\* \[wrapped with (.+)\] \*/,$O=/,? & /;function jO(e){var t=e.match(WO);return t?t[1].split($O):[]}a(jO,"getWrapDetails");ag.exports=jO});var sg=p((i2,og)=>{"use strict";var QO=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function KO(e,t){var r=t.length;if(!r)return e;var n=r-1;return t[n]=(r>1?"& ":"")+t[n],t=t.join(r>2?", ":" "),e.replace(QO,`{
|
|
2
2
|
/* [wrapped with `+t+`] */
|
|
3
|
-
`)}a(jO,"insertWrapDetails");og.exports=jO});var ro=p((u2,ig)=>{"use strict";function QO(e,t){for(var r=-1,n=e==null?0:e.length;++r<n&&t(e[r],r,e)!==!1;);return e}a(QO,"arrayEach");ig.exports=QO});var cg=p((p2,ug)=>{"use strict";var KO=ro(),VO=ts(),HO=1,YO=2,zO=8,JO=16,XO=32,ZO=64,eL=128,tL=256,rL=512,aL=[["ary",eL],["bind",HO],["bindKey",YO],["curry",zO],["curryRight",JO],["flip",rL],["partial",XO],["partialRight",ZO],["rearg",tL]];function nL(e,t){return KO(aL,function(r){var n="_."+r[0];t&r[1]&&!VO(e,n)&&e.push(n)}),e.sort()}a(nL,"updateWrapDetails");ug.exports=nL});var vi=p((d2,pg)=>{"use strict";var oL=ng(),sL=sg(),iL=hn(),uL=cg();function cL(e,t,r){var n=t+"";return iL(e,sL(n,uL(oL(n),r)))}a(cL,"setWrapToString");pg.exports=cL});var _i=p((m2,fg)=>{"use strict";var pL=tg(),lL=Ri(),dL=vi(),fL=1,mL=2,gL=4,hL=8,lg=32,dg=64;function yL(e,t,r,n,o,s,i,u,c,f){var g=t&hL,h=g?i:void 0,y=g?void 0:i,E=g?s:void 0,M=g?void 0:s;t|=g?lg:dg,t&=~(g?dg:lg),t&gL||(t&=~(fL|mL));var k=[e,t,o,E,h,M,y,u,c,f],D=r.apply(void 0,k);return pL(e)&&lL(D,k),D.placeholder=n,dL(D,e,t)}a(yL,"createRecurry");fg.exports=yL});var xi=p((h2,mg)=>{"use strict";function AL(e){var t=e;return t.placeholder}a(AL,"getHolder");mg.exports=AL});var hg=p((A2,gg)=>{"use strict";var bL=yr(),IL=Ra(),SL=Math.min;function wL(e,t){for(var r=e.length,n=SL(t.length,r),o=bL(e);n--;){var s=t[n];e[n]=IL(s,r)?o[s]:void 0}return e}a(wL,"reorder");gg.exports=wL});var ao=p((I2,Ag)=>{"use strict";var yg="__lodash_placeholder__";function TL(e,t){for(var r=-1,n=e.length,o=0,s=[];++r<n;){var i=e[r];(i===t||i===yg)&&(e[r]=yg,s[o++]=r)}return s}a(TL,"replaceHolders");Ag.exports=TL});var Ci=p((w2,Sg)=>{"use strict";var EL=Si(),RL=wi(),vL=Nm(),bg=Da(),_L=_i(),xL=xi(),CL=hg(),OL=ao(),LL=_e(),PL=1,UL=2,qL=8,DL=16,kL=128,ML=512;function Ig(e,t,r,n,o,s,i,u,c,f){var g=t&kL,h=t&PL,y=t&UL,E=t&(qL|DL),M=t&ML,k=y?void 0:bg(e);function D(){for(var C=arguments.length,W=Array(C),ye=C;ye--;)W[ye]=arguments[ye];if(E)var ie=xL(D),Ye=vL(W,ie);if(n&&(W=EL(W,n,o,E)),s&&(W=RL(W,s,i,E)),C-=Ye,E&&C<f){var nt=OL(W,ie);return _L(e,t,Ig,D.placeholder,r,W,nt,u,c,f-C)}var ot=h?r:this,Y=y?ot[e]:e;return C=W.length,u?W=CL(W,u):M&&C>1&&W.reverse(),g&&c<C&&(W.length=c),this&&this!==LL&&this instanceof D&&(Y=k||bg(Y)),Y.apply(ot,W)}return a(D,"wrapper"),D}a(Ig,"createHybrid");Sg.exports=Ig});var Tg=p((E2,wg)=>{"use strict";var NL=gn(),BL=Da(),GL=Ci(),FL=_i(),WL=xi(),$L=ao(),jL=_e();function QL(e,t,r){var n=BL(e);function o(){for(var s=arguments.length,i=Array(s),u=s,c=WL(o);u--;)i[u]=arguments[u];var f=s<3&&i[0]!==c&&i[s-1]!==c?[]:$L(i,c);if(s-=f.length,s<r)return FL(e,t,GL,o.placeholder,void 0,i,f,void 0,void 0,r-s);var g=this&&this!==jL&&this instanceof o?n:e;return NL(g,this,i)}return a(o,"wrapper"),o}a(QL,"createCurry");wg.exports=QL});var Rg=p((v2,Eg)=>{"use strict";var KL=gn(),VL=Da(),HL=_e(),YL=1;function zL(e,t,r,n){var o=t&YL,s=VL(e);function i(){for(var u=-1,c=arguments.length,f=-1,g=n.length,h=Array(g+c),y=this&&this!==HL&&this instanceof i?s:e;++f<g;)h[f]=n[f];for(;c--;)h[f++]=arguments[++u];return KL(y,o?r:this,h)}return a(i,"wrapper"),i}a(zL,"createPartial");Eg.exports=zL});var Lg=p((x2,Og)=>{"use strict";var JL=Si(),XL=wi(),vg=ao(),_g="__lodash_placeholder__",Oi=1,ZL=2,eP=4,xg=8,ka=128,Cg=256,tP=Math.min;function rP(e,t){var r=e[1],n=t[1],o=r|n,s=o<(Oi|ZL|ka),i=n==ka&&r==xg||n==ka&&r==Cg&&e[7].length<=t[8]||n==(ka|Cg)&&t[7].length<=t[8]&&r==xg;if(!(s||i))return e;n&Oi&&(e[2]=t[2],o|=r&Oi?0:eP);var u=t[3];if(u){var c=e[3];e[3]=c?JL(c,u,t[4]):u,e[4]=c?vg(e[3],_g):t[4]}return u=t[5],u&&(c=e[5],e[5]=c?XL(c,u,t[6]):u,e[6]=c?vg(e[5],_g):t[6]),u=t[7],u&&(e[7]=u),n&ka&&(e[8]=e[8]==null?t[8]:tP(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=o,e}a(rP,"mergeData");Og.exports=rP});var Ug=p((O2,Pg)=>{"use strict";var aP=/\s/;function nP(e){for(var t=e.length;t--&&aP.test(e.charAt(t)););return t}a(nP,"trimmedEndIndex");Pg.exports=nP});var Dg=p((P2,qg)=>{"use strict";var oP=Ug(),sP=/^\s+/;function iP(e){return e&&e.slice(0,oP(e)+1).replace(sP,"")}a(iP,"baseTrim");qg.exports=iP});var Cr=p((q2,kg)=>{"use strict";var uP=Pt(),cP=ke(),pP="[object Symbol]";function lP(e){return typeof e=="symbol"||cP(e)&&uP(e)==pP}a(lP,"isSymbol");kg.exports=lP});var Gg=p((k2,Bg)=>{"use strict";var dP=Dg(),Mg=je(),fP=Cr(),Ng=0/0,mP=/^[-+]0x[0-9a-f]+$/i,gP=/^0b[01]+$/i,hP=/^0o[0-7]+$/i,yP=parseInt;function AP(e){if(typeof e=="number")return e;if(fP(e))return Ng;if(Mg(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=Mg(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=dP(e);var r=gP.test(e);return r||hP.test(e)?yP(e.slice(2),r?2:8):mP.test(e)?Ng:+e}a(AP,"toNumber");Bg.exports=AP});var $g=p((N2,Wg)=>{"use strict";var bP=Gg(),Fg=1/0,IP=17976931348623157e292;function SP(e){if(!e)return e===0?e:0;if(e=bP(e),e===Fg||e===-Fg){var t=e<0?-1:1;return t*IP}return e===e?e:0}a(SP,"toFinite");Wg.exports=SP});var Li=p((G2,jg)=>{"use strict";var wP=$g();function TP(e){var t=wP(e),r=t%1;return t===t?r?t-r:t:0}a(TP,"toInteger");jg.exports=TP});var no=p((W2,Yg)=>{"use strict";var EP=Ii(),RP=qm(),vP=Tg(),_P=Ci(),xP=Rg(),CP=Ti(),OP=Lg(),LP=Ri(),PP=vi(),Qg=Li(),UP="Expected a function",Kg=1,qP=2,Pi=8,Ui=16,qi=32,Vg=64,Hg=Math.max;function DP(e,t,r,n,o,s,i,u){var c=t&qP;if(!c&&typeof e!="function")throw new TypeError(UP);var f=n?n.length:0;if(f||(t&=~(qi|Vg),n=o=void 0),i=i===void 0?i:Hg(Qg(i),0),u=u===void 0?u:Qg(u),f-=o?o.length:0,t&Vg){var g=n,h=o;n=o=void 0}var y=c?void 0:CP(e),E=[e,t,r,n,o,g,h,s,i,u];if(y&&OP(E,y),e=E[0],t=E[1],r=E[2],n=E[3],o=E[4],u=E[9]=E[9]===void 0?c?0:e.length:Hg(E[9]-f,0),!u&&t&(Pi|Ui)&&(t&=~(Pi|Ui)),!t||t==Kg)var M=RP(e,t,r);else t==Pi||t==Ui?M=vP(e,t,u):(t==qi||t==(Kg|qi))&&!o.length?M=xP(e,t,r,n):M=_P.apply(void 0,E);var k=y?EP:LP;return PP(k(M,E),e,t)}a(DP,"createWrap");Yg.exports=DP});var Jg=p((j2,zg)=>{"use strict";var kP=no(),MP=128;function NP(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,kP(e,MP,void 0,void 0,void 0,void 0,t)}a(NP,"ary");zg.exports=NP});var Zg=p((K2,Xg)=>{"use strict";var BP=ds(),GP=BP(Object.keys,Object);Xg.exports=GP});var Di=p((V2,eh)=>{"use strict";var FP=En(),WP=Zg(),$P=Object.prototype,jP=$P.hasOwnProperty;function QP(e){if(!FP(e))return WP(e);var t=[];for(var r in Object(e))jP.call(e,r)&&r!="constructor"&&t.push(r);return t}a(QP,"baseKeys");eh.exports=QP});var Or=p((Y2,th)=>{"use strict";var KP=As(),VP=Di(),HP=mr();function YP(e){return HP(e)?KP(e):VP(e)}a(YP,"keys");th.exports=YP});var ki=p((J2,rh)=>{"use strict";var zP=Ir(),JP=Or();function XP(e,t){return e&&zP(t,JP(t),e)}a(XP,"baseAssign");rh.exports=XP});var nh=p((Z2,ah)=>{"use strict";var ZP=Ir(),eU=Sr();function tU(e,t){return e&&ZP(t,eU(t),e)}a(tU,"baseAssignIn");ah.exports=tU});var sh=p((tV,oh)=>{"use strict";function rU(e,t){for(var r=-1,n=e==null?0:e.length,o=0,s=[];++r<n;){var i=e[r];t(i,r,e)&&(s[o++]=i)}return s}a(rU,"arrayFilter");oh.exports=rU});var Mi=p((aV,ih)=>{"use strict";function aU(){return[]}a(aU,"stubArray");ih.exports=aU});var oo=p((oV,ch)=>{"use strict";var nU=sh(),oU=Mi(),sU=Object.prototype,iU=sU.propertyIsEnumerable,uh=Object.getOwnPropertySymbols,uU=uh?function(e){return e==null?[]:(e=Object(e),nU(uh(e),function(t){return iU.call(e,t)}))}:oU;ch.exports=uU});var lh=p((sV,ph)=>{"use strict";var cU=Ir(),pU=oo();function lU(e,t){return cU(e,pU(e),t)}a(lU,"copySymbols");ph.exports=lU});var Ni=p((uV,dh)=>{"use strict";var dU=mn(),fU=Tn(),mU=oo(),gU=Mi(),hU=Object.getOwnPropertySymbols,yU=hU?function(e){for(var t=[];e;)dU(t,mU(e)),e=fU(e);return t}:gU;dh.exports=yU});var mh=p((cV,fh)=>{"use strict";var AU=Ir(),bU=Ni();function IU(e,t){return AU(e,bU(e),t)}a(IU,"copySymbolsIn");fh.exports=IU});var Bi=p((lV,gh)=>{"use strict";var SU=mn(),wU=Ee();function TU(e,t,r){var n=t(e);return wU(e)?n:SU(n,r(e))}a(TU,"baseGetAllKeys");gh.exports=TU});var Gi=p((fV,hh)=>{"use strict";var EU=Bi(),RU=oo(),vU=Or();function _U(e){return EU(e,vU,RU)}a(_U,"getAllKeys");hh.exports=_U});var Ah=p((gV,yh)=>{"use strict";var xU=Bi(),CU=Ni(),OU=Sr();function LU(e){return xU(e,OU,CU)}a(LU,"getAllKeysIn");yh.exports=LU});var Ih=p((yV,bh)=>{"use strict";var PU=Ut(),UU=_e(),qU=PU(UU,"DataView");bh.exports=qU});var wh=p((AV,Sh)=>{"use strict";var DU=Ut(),kU=_e(),MU=DU(kU,"Promise");Sh.exports=MU});var Pr=p((bV,Ch)=>{"use strict";var Fi=Ih(),Wi=yn(),$i=wh(),ji=as(),Qi=Ai(),xh=Pt(),Lr=zo(),Th="[object Map]",NU="[object Object]",Eh="[object Promise]",Rh="[object Set]",vh="[object WeakMap]",_h="[object DataView]",BU=Lr(Fi),GU=Lr(Wi),FU=Lr($i),WU=Lr(ji),$U=Lr(Qi),Xt=xh;(Fi&&Xt(new Fi(new ArrayBuffer(1)))!=_h||Wi&&Xt(new Wi)!=Th||$i&&Xt($i.resolve())!=Eh||ji&&Xt(new ji)!=Rh||Qi&&Xt(new Qi)!=vh)&&(Xt=a(function(e){var t=xh(e),r=t==NU?e.constructor:void 0,n=r?Lr(r):"";if(n)switch(n){case BU:return _h;case GU:return Th;case FU:return Eh;case WU:return Rh;case $U:return vh}return t},"getTag"));Ch.exports=Xt});var Lh=p((SV,Oh)=>{"use strict";var jU=Object.prototype,QU=jU.hasOwnProperty;function KU(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&QU.call(e,"index")&&(r.index=e.index,r.input=e.input),r}a(KU,"initCloneArray");Oh.exports=KU});var Uh=p((TV,Ph)=>{"use strict";var VU=wn();function HU(e,t){var r=t?VU(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}a(HU,"cloneDataView");Ph.exports=HU});var Dh=p((RV,qh)=>{"use strict";var YU=/\w*$/;function zU(e){var t=new e.constructor(e.source,YU.exec(e));return t.lastIndex=e.lastIndex,t}a(zU,"cloneRegExp");qh.exports=zU});var Gh=p((_V,Bh)=>{"use strict";var kh=Qt(),Mh=kh?kh.prototype:void 0,Nh=Mh?Mh.valueOf:void 0;function JU(e){return Nh?Object(Nh.call(e)):{}}a(JU,"cloneSymbol");Bh.exports=JU});var Wh=p((CV,Fh)=>{"use strict";var XU=wn(),ZU=Uh(),eq=Dh(),tq=Gh(),rq=ls(),aq="[object Boolean]",nq="[object Date]",oq="[object Map]",sq="[object Number]",iq="[object RegExp]",uq="[object Set]",cq="[object String]",pq="[object Symbol]",lq="[object ArrayBuffer]",dq="[object DataView]",fq="[object Float32Array]",mq="[object Float64Array]",gq="[object Int8Array]",hq="[object Int16Array]",yq="[object Int32Array]",Aq="[object Uint8Array]",bq="[object Uint8ClampedArray]",Iq="[object Uint16Array]",Sq="[object Uint32Array]";function wq(e,t,r){var n=e.constructor;switch(t){case lq:return XU(e);case aq:case nq:return new n(+e);case dq:return ZU(e,r);case fq:case mq:case gq:case hq:case yq:case Aq:case bq:case Iq:case Sq:return rq(e,r);case oq:return new n;case sq:case cq:return new n(e);case iq:return eq(e);case uq:return new n;case pq:return tq(e)}}a(wq,"initCloneByTag");Fh.exports=wq});var jh=p((LV,$h)=>{"use strict";var Tq=Pr(),Eq=ke(),Rq="[object Map]";function vq(e){return Eq(e)&&Tq(e)==Rq}a(vq,"baseIsMap");$h.exports=vq});var Hh=p((UV,Vh)=>{"use strict";var _q=jh(),xq=Rn(),Qh=vn(),Kh=Qh&&Qh.isMap,Cq=Kh?xq(Kh):_q;Vh.exports=Cq});var zh=p((qV,Yh)=>{"use strict";var Oq=Pr(),Lq=ke(),Pq="[object Set]";function Uq(e){return Lq(e)&&Oq(e)==Pq}a(Uq,"baseIsSet");Yh.exports=Uq});var ey=p((kV,Zh)=>{"use strict";var qq=zh(),Dq=Rn(),Jh=vn(),Xh=Jh&&Jh.isSet,kq=Xh?Dq(Xh):qq;Zh.exports=kq});var Ki=p((MV,ny)=>{"use strict";var Mq=ya(),Nq=ro(),Bq=ys(),Gq=ki(),Fq=nh(),Wq=cs(),$q=yr(),jq=lh(),Qq=mh(),Kq=Gi(),Vq=Ah(),Hq=Pr(),Yq=Lh(),zq=Wh(),Jq=fs(),Xq=Ee(),Zq=wa(),eD=Hh(),tD=je(),rD=ey(),aD=Or(),nD=Sr(),oD=1,sD=2,iD=4,ty="[object Arguments]",uD="[object Array]",cD="[object Boolean]",pD="[object Date]",lD="[object Error]",ry="[object Function]",dD="[object GeneratorFunction]",fD="[object Map]",mD="[object Number]",ay="[object Object]",gD="[object RegExp]",hD="[object Set]",yD="[object String]",AD="[object Symbol]",bD="[object WeakMap]",ID="[object ArrayBuffer]",SD="[object DataView]",wD="[object Float32Array]",TD="[object Float64Array]",ED="[object Int8Array]",RD="[object Int16Array]",vD="[object Int32Array]",_D="[object Uint8Array]",xD="[object Uint8ClampedArray]",CD="[object Uint16Array]",OD="[object Uint32Array]",V={};V[ty]=V[uD]=V[ID]=V[SD]=V[cD]=V[pD]=V[wD]=V[TD]=V[ED]=V[RD]=V[vD]=V[fD]=V[mD]=V[ay]=V[gD]=V[hD]=V[yD]=V[AD]=V[_D]=V[xD]=V[CD]=V[OD]=!0;V[lD]=V[ry]=V[bD]=!1;function so(e,t,r,n,o,s){var i,u=t&oD,c=t&sD,f=t&iD;if(r&&(i=o?r(e,n,o,s):r(e)),i!==void 0)return i;if(!tD(e))return e;var g=Xq(e);if(g){if(i=Yq(e),!u)return $q(e,i)}else{var h=Hq(e),y=h==ry||h==dD;if(Zq(e))return Wq(e,u);if(h==ay||h==ty||y&&!o){if(i=c||y?{}:Jq(e),!u)return c?Qq(e,Fq(i,e)):jq(e,Gq(i,e))}else{if(!V[h])return o?e:{};i=zq(e,h,u)}}s||(s=new Mq);var E=s.get(e);if(E)return E;s.set(e,i),rD(e)?e.forEach(function(D){i.add(so(D,t,r,D,e,s))}):eD(e)&&e.forEach(function(D,C){i.set(C,so(D,t,r,C,e,s))});var M=f?c?Vq:Kq:c?nD:aD,k=g?void 0:M(e);return Nq(k||e,function(D,C){k&&(C=D,D=e[C]),Bq(i,C,so(D,t,r,C,e,s))}),i}a(so,"baseClone");ny.exports=so});var sy=p((BV,oy)=>{"use strict";var LD=Ki(),PD=4;function UD(e){return LD(e,PD)}a(UD,"clone");oy.exports=UD});var uy=p((FV,iy)=>{"use strict";var qD=no(),DD=8;function Vi(e,t,r){t=r?void 0:t;var n=qD(e,DD,void 0,void 0,void 0,void 0,void 0,t);return n.placeholder=Vi.placeholder,n}a(Vi,"curry");Vi.placeholder={};iy.exports=Vi});var py=p(($V,cy)=>{"use strict";var kD=Pt(),MD=ke(),ND=ms(),BD="[object DOMException]",GD="[object Error]";function FD(e){if(!MD(e))return!1;var t=kD(e);return t==GD||t==BD||typeof e.message=="string"&&typeof e.name=="string"&&!ND(e)}a(FD,"isError");cy.exports=FD});var dy=p((QV,ly)=>{"use strict";var WD=Pr(),$D=ke(),jD="[object WeakMap]";function QD(e){return $D(e)&&WD(e)==jD}a(QD,"isWeakMap");ly.exports=QD});var my=p((VV,fy)=>{"use strict";function KD(e,t){for(var r=-1,n=e==null?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}a(KD,"arraySome");fy.exports=KD});var Hi=p((YV,gy)=>{"use strict";var VD=es(),HD=my(),YD=rs(),zD=1,JD=2;function XD(e,t,r,n,o,s){var i=r&zD,u=e.length,c=t.length;if(u!=c&&!(i&&c>u))return!1;var f=s.get(e),g=s.get(t);if(f&&g)return f==t&&g==e;var h=-1,y=!0,E=r&JD?new VD:void 0;for(s.set(e,t),s.set(t,e);++h<u;){var M=e[h],k=t[h];if(n)var D=i?n(k,M,h,t,e,s):n(M,k,h,e,t,s);if(D!==void 0){if(D)continue;y=!1;break}if(E){if(!HD(t,function(C,W){if(!YD(E,W)&&(M===C||o(M,C,r,n,s)))return E.push(W)})){y=!1;break}}else if(!(M===k||o(M,k,r,n,s))){y=!1;break}}return s.delete(e),s.delete(t),y}a(XD,"equalArrays");gy.exports=XD});var yy=p((JV,hy)=>{"use strict";function ZD(e){var t=-1,r=Array(e.size);return e.forEach(function(n,o){r[++t]=[o,n]}),r}a(ZD,"mapToArray");hy.exports=ZD});var wy=p((ZV,Sy)=>{"use strict";var Ay=Qt(),by=ps(),ek=lr(),tk=Hi(),rk=yy(),ak=In(),nk=1,ok=2,sk="[object Boolean]",ik="[object Date]",uk="[object Error]",ck="[object Map]",pk="[object Number]",lk="[object RegExp]",dk="[object Set]",fk="[object String]",mk="[object Symbol]",gk="[object ArrayBuffer]",hk="[object DataView]",Iy=Ay?Ay.prototype:void 0,Yi=Iy?Iy.valueOf:void 0;function yk(e,t,r,n,o,s,i){switch(r){case hk:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case gk:return!(e.byteLength!=t.byteLength||!s(new by(e),new by(t)));case sk:case ik:case pk:return ek(+e,+t);case uk:return e.name==t.name&&e.message==t.message;case lk:case fk:return e==t+"";case ck:var u=rk;case dk:var c=n&nk;if(u||(u=ak),e.size!=t.size&&!c)return!1;var f=i.get(e);if(f)return f==t;n|=ok,i.set(e,t);var g=tk(u(e),u(t),n,o,s,i);return i.delete(e),g;case mk:if(Yi)return Yi.call(e)==Yi.call(t)}return!1}a(yk,"equalByTag");Sy.exports=yk});var Ry=p((tH,Ey)=>{"use strict";var Ty=Gi(),Ak=1,bk=Object.prototype,Ik=bk.hasOwnProperty;function Sk(e,t,r,n,o,s){var i=r&Ak,u=Ty(e),c=u.length,f=Ty(t),g=f.length;if(c!=g&&!i)return!1;for(var h=c;h--;){var y=u[h];if(!(i?y in t:Ik.call(t,y)))return!1}var E=s.get(e),M=s.get(t);if(E&&M)return E==t&&M==e;var k=!0;s.set(e,t),s.set(t,e);for(var D=i;++h<c;){y=u[h];var C=e[y],W=t[y];if(n)var ye=i?n(W,C,y,t,e,s):n(C,W,y,e,t,s);if(!(ye===void 0?C===W||o(C,W,r,n,s):ye)){k=!1;break}D||(D=y=="constructor")}if(k&&!D){var ie=e.constructor,Ye=t.constructor;ie!=Ye&&"constructor"in e&&"constructor"in t&&!(typeof ie=="function"&&ie instanceof ie&&typeof Ye=="function"&&Ye instanceof Ye)&&(k=!1)}return s.delete(e),s.delete(t),k}a(Sk,"equalObjects");Ey.exports=Sk});var Uy=p((aH,Py)=>{"use strict";var zi=ya(),wk=Hi(),Tk=wy(),Ek=Ry(),vy=Pr(),_y=Ee(),xy=wa(),Rk=_n(),vk=1,Cy="[object Arguments]",Oy="[object Array]",io="[object Object]",_k=Object.prototype,Ly=_k.hasOwnProperty;function xk(e,t,r,n,o,s){var i=_y(e),u=_y(t),c=i?Oy:vy(e),f=u?Oy:vy(t);c=c==Cy?io:c,f=f==Cy?io:f;var g=c==io,h=f==io,y=c==f;if(y&&xy(e)){if(!xy(t))return!1;i=!0,g=!1}if(y&&!g)return s||(s=new zi),i||Rk(e)?wk(e,t,r,n,o,s):Tk(e,t,c,r,n,o,s);if(!(r&vk)){var E=g&&Ly.call(e,"__wrapped__"),M=h&&Ly.call(t,"__wrapped__");if(E||M){var k=E?e.value():e,D=M?t.value():t;return s||(s=new zi),o(k,D,r,n,s)}}return y?(s||(s=new zi),Ek(e,t,r,n,o,s)):!1}a(xk,"baseIsEqualDeep");Py.exports=xk});var Ji=p((oH,ky)=>{"use strict";var Ck=Uy(),qy=ke();function Dy(e,t,r,n,o){return e===t?!0:e==null||t==null||!qy(e)&&!qy(t)?e!==e&&t!==t:Ck(e,t,r,n,Dy,o)}a(Dy,"baseIsEqual");ky.exports=Dy});var Ny=p((iH,My)=>{"use strict";var Ok=ya(),Lk=Ji(),Pk=1,Uk=2;function qk(e,t,r,n){var o=r.length,s=o,i=!n;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],f=e[c],g=u[1];if(i&&u[2]){if(f===void 0&&!(c in e))return!1}else{var h=new Ok;if(n)var y=n(f,g,c,e,t,h);if(!(y===void 0?Lk(g,f,Pk|Uk,n,h):y))return!1}}return!0}a(qk,"baseIsMatch");My.exports=qk});var Xi=p((cH,By)=>{"use strict";var Dk=je();function kk(e){return e===e&&!Dk(e)}a(kk,"isStrictComparable");By.exports=kk});var Fy=p((lH,Gy)=>{"use strict";var Mk=Xi(),Nk=Or();function Bk(e){for(var t=Nk(e),r=t.length;r--;){var n=t[r],o=e[n];t[r]=[n,o,Mk(o)]}return t}a(Bk,"getMatchData");Gy.exports=Bk});var Zi=p((fH,Wy)=>{"use strict";function Gk(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}a(Gk,"matchesStrictComparable");Wy.exports=Gk});var jy=p((gH,$y)=>{"use strict";var Fk=Ny(),Wk=Fy(),$k=Zi();function jk(e){var t=Wk(e);return t.length==1&&t[0][2]?$k(t[0][0],t[0][1]):function(r){return r===e||Fk(r,e,t)}}a(jk,"baseMatches");$y.exports=jk});var uo=p((yH,Qy)=>{"use strict";var Qk=Ee(),Kk=Cr(),Vk=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Hk=/^\w*$/;function Yk(e,t){if(Qk(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||Kk(e)?!0:Hk.test(e)||!Vk.test(e)||t!=null&&e in Object(t)}a(Yk,"isKey");Qy.exports=Yk});var Hy=p((bH,Vy)=>{"use strict";var Ky=An(),zk="Expected a function";function eu(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(zk);var r=a(function(){var n=arguments,o=t?t.apply(this,n):n[0],s=r.cache;if(s.has(o))return s.get(o);var i=e.apply(this,n);return r.cache=s.set(o,i)||s,i},"memoized");return r.cache=new(eu.Cache||Ky),r}a(eu,"memoize");eu.Cache=Ky;Vy.exports=eu});var zy=p((SH,Yy)=>{"use strict";var Jk=Hy(),Xk=500;function Zk(e){var t=Jk(e,function(n){return r.size===Xk&&r.clear(),n}),r=t.cache;return t}a(Zk,"memoizeCapped");Yy.exports=Zk});var tu=p((TH,Jy)=>{"use strict";var eM=zy(),tM=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,rM=/\\(\\)?/g,aM=eM(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(tM,function(r,n,o,s){t.push(o?s.replace(rM,"$1"):n||r)}),t});Jy.exports=aM});var ru=p((EH,Xy)=>{"use strict";function nM(e,t){for(var r=-1,n=e==null?0:e.length,o=Array(n);++r<n;)o[r]=t(e[r],r,e);return o}a(nM,"arrayMap");Xy.exports=nM});var nA=p((vH,aA)=>{"use strict";var Zy=Qt(),oM=ru(),sM=Ee(),iM=Cr(),uM=1/0,eA=Zy?Zy.prototype:void 0,tA=eA?eA.toString:void 0;function rA(e){if(typeof e=="string")return e;if(sM(e))return oM(e,rA)+"";if(iM(e))return tA?tA.call(e):"";var t=e+"";return t=="0"&&1/e==-uM?"-0":t}a(rA,"baseToString");aA.exports=rA});var au=p((xH,oA)=>{"use strict";var cM=nA();function pM(e){return e==null?"":cM(e)}a(pM,"toString");oA.exports=pM});var nu=p((OH,sA)=>{"use strict";var lM=Ee(),dM=uo(),fM=tu(),mM=au();function gM(e,t){return lM(e)?e:dM(e,t)?[e]:fM(mM(e))}a(gM,"castPath");sA.exports=gM});var Ur=p((PH,iA)=>{"use strict";var hM=Cr(),yM=1/0;function AM(e){if(typeof e=="string"||hM(e))return e;var t=e+"";return t=="0"&&1/e==-yM?"-0":t}a(AM,"toKey");iA.exports=AM});var ou=p((qH,uA)=>{"use strict";var bM=nu(),IM=Ur();function SM(e,t){t=bM(t,e);for(var r=0,n=t.length;e!=null&&r<n;)e=e[IM(t[r++])];return r&&r==n?e:void 0}a(SM,"baseGet");uA.exports=SM});var pA=p((kH,cA)=>{"use strict";var wM=ou();function TM(e,t,r){var n=e==null?void 0:wM(e,t);return n===void 0?r:n}a(TM,"get");cA.exports=TM});var dA=p((NH,lA)=>{"use strict";function EM(e,t){return e!=null&&t in Object(e)}a(EM,"baseHasIn");lA.exports=EM});var mA=p((GH,fA)=>{"use strict";var RM=nu(),vM=pa(),_M=Ee(),xM=Ra(),CM=Sn(),OM=Ur();function LM(e,t,r){t=RM(t,e);for(var n=-1,o=t.length,s=!1;++n<o;){var i=OM(t[n]);if(!(s=e!=null&&r(e,i)))break;e=e[i]}return s||++n!=o?s:(o=e==null?0:e.length,!!o&&CM(o)&&xM(i,o)&&(_M(e)||vM(e)))}a(LM,"hasPath");fA.exports=LM});var hA=p((WH,gA)=>{"use strict";var PM=dA(),UM=mA();function qM(e,t){return e!=null&&UM(e,t,PM)}a(qM,"hasIn");gA.exports=qM});var AA=p((jH,yA)=>{"use strict";var DM=Ji(),kM=pA(),MM=hA(),NM=uo(),BM=Xi(),GM=Zi(),FM=Ur(),WM=1,$M=2;function jM(e,t){return NM(e)&&BM(t)?GM(FM(e),t):function(r){var n=kM(r,e);return n===void 0&&n===t?MM(r,e):DM(t,n,WM|$M)}}a(jM,"baseMatchesProperty");yA.exports=jM});var IA=p((KH,bA)=>{"use strict";function QM(e){return function(t){return t?.[e]}}a(QM,"baseProperty");bA.exports=QM});var wA=p((HH,SA)=>{"use strict";var KM=ou();function VM(e){return function(t){return KM(t,e)}}a(VM,"basePropertyDeep");SA.exports=VM});var EA=p((zH,TA)=>{"use strict";var HM=IA(),YM=wA(),zM=uo(),JM=Ur();function XM(e){return zM(e)?HM(JM(e)):YM(e)}a(XM,"property");TA.exports=XM});var su=p((XH,RA)=>{"use strict";var ZM=jy(),eN=AA(),tN=la(),rN=Ee(),aN=EA();function nN(e){return typeof e=="function"?e:e==null?tN:typeof e=="object"?rN(e)?eN(e[0],e[1]):ZM(e):aN(e)}a(nN,"baseIteratee");RA.exports=nN});var _A=p((eY,vA)=>{"use strict";var oN=Ki(),sN=su(),iN=1;function uN(e){return sN(typeof e=="function"?e:oN(e,iN))}a(uN,"iteratee");vA.exports=uN});var CA=p((rY,xA)=>{"use strict";var cN=Vo();function pN(e){var t=e==null?0:e.length;return t?cN(e,1):[]}a(pN,"flatten");xA.exports=pN});var LA=p((nY,OA)=>{"use strict";var lN=CA(),dN=Ho(),fN=hn();function mN(e){return fN(dN(e,void 0,lN),e+"")}a(mN,"flatRest");OA.exports=mN});var UA=p((sY,PA)=>{"use strict";var gN=no(),hN=LA(),yN=256,AN=hN(function(e,t){return gN(e,yN,void 0,void 0,void 0,t)});PA.exports=AN});var DA=p((iY,qA)=>{"use strict";var bN=ru(),IN=yr(),SN=Ee(),wN=Cr(),TN=tu(),EN=Ur(),RN=au();function vN(e){return SN(e)?bN(e,EN):wN(e)?[e]:IN(TN(RN(e)))}a(vN,"toPath");qA.exports=vN});var MA=p((cY,kA)=>{"use strict";kA.exports={ary:Jg(),assign:ki(),clone:sy(),curry:uy(),forEach:ro(),isArray:Ee(),isError:py(),isFunction:da(),isWeakMap:dy(),iteratee:_A(),keys:Di(),rearg:UA(),toInteger:Li(),toPath:DA()}});var BA=p((pY,NA)=>{"use strict";var _N=vm(),xN=MA();function CN(e,t,r){return _N(xN,e,t,r)}a(CN,"convert");NA.exports=CN});var iu=p((dY,FA)=>{"use strict";var ON=BA(),GA=ON("merge",bs());GA.placeholder=mi();FA.exports=GA});var KA=p((uu,cu)=>{"use strict";(function(e,t){typeof uu=="object"&&typeof cu<"u"?cu.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs=t()})(uu,function(){"use strict";var e=1e3,t=6e4,r=36e5,n="millisecond",o="second",s="minute",i="hour",u="day",c="week",f="month",g="quarter",h="year",y="date",E="Invalid Date",M=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,k=/\[([^\]]+)]|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,D={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 w=["th","st","nd","rd"],A=O%100;return"["+O+(w[(A-20)%10]||w[A]||w[0])+"]"}},C=a(function(O,w,A){var _=String(O);return!_||_.length>=w?O:""+Array(w+1-_.length).join(A)+O},"m"),W={s:C,z:function(O){var w=-O.utcOffset(),A=Math.abs(w),_=Math.floor(A/60),S=A%60;return(w<=0?"+":"-")+C(_,2,"0")+":"+C(S,2,"0")},m:a(function O(w,A){if(w.date()<A.date())return-O(A,w);var _=12*(A.year()-w.year())+(A.month()-w.month()),S=w.clone().add(_,f),U=A-S<0,P=w.clone().add(_+(U?-1:1),f);return+(-(_+(A-S)/(U?S-P:P-S))||0)},"t"),a:function(O){return O<0?Math.ceil(O)||0:Math.floor(O)},p:function(O){return{M:f,y:h,w:c,d:u,D:y,h:i,m:s,s:o,ms:n,Q:g}[O]||String(O||"").toLowerCase().replace(/s$/,"")},u:function(O){return O===void 0}},ye="en",ie={};ie[ye]=D;var Ye="$isDayjsObject",nt=a(function(O){return O instanceof Gt||!(!O||!O[Ye])},"S"),ot=a(function O(w,A,_){var S;if(!w)return ye;if(typeof w=="string"){var U=w.toLowerCase();ie[U]&&(S=U),A&&(ie[U]=A,S=U);var P=w.split("-");if(!S&&P.length>1)return O(P[0])}else{var $=w.name;ie[$]=w,S=$}return!_&&S&&(ye=S),S||!_&&ye},"t"),Y=a(function(O,w){if(nt(O))return O.clone();var A=typeof w=="object"?w:{};return A.date=O,A.args=arguments,new Gt(A)},"O"),G=W;G.l=ot,G.i=nt,G.w=function(O,w){return Y(O,{locale:w.$L,utc:w.$u,x:w.$x,$offset:w.$offset})};var Gt=function(){function O(A){this.$L=ot(A.locale,null,!0),this.parse(A),this.$x=this.$x||A.x||{},this[Ye]=!0}a(O,"M");var w=O.prototype;return w.parse=function(A){this.$d=function(_){var S=_.date,U=_.utc;if(S===null)return new Date(NaN);if(G.u(S))return new Date;if(S instanceof Date)return new Date(S);if(typeof S=="string"&&!/Z$/i.test(S)){var P=S.match(M);if(P){var $=P[2]-1||0,Z=(P[7]||"0").substring(0,3);return U?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(S)}(A),this.init()},w.init=function(){var A=this.$d;this.$y=A.getFullYear(),this.$M=A.getMonth(),this.$D=A.getDate(),this.$W=A.getDay(),this.$H=A.getHours(),this.$m=A.getMinutes(),this.$s=A.getSeconds(),this.$ms=A.getMilliseconds()},w.$utils=function(){return G},w.isValid=function(){return this.$d.toString()!==E},w.isSame=function(A,_){var S=Y(A);return this.startOf(_)<=S&&S<=this.endOf(_)},w.isAfter=function(A,_){return Y(A)<this.startOf(_)},w.isBefore=function(A,_){return this.endOf(_)<Y(A)},w.$g=function(A,_,S){return G.u(A)?this[_]:this.set(S,A)},w.unix=function(){return Math.floor(this.valueOf()/1e3)},w.valueOf=function(){return this.$d.getTime()},w.startOf=function(A,_){var S=this,U=!!G.u(_)||_,P=G.p(A),$=a(function(I,v){var q=G.w(S.$u?Date.UTC(S.$y,v,I):new Date(S.$y,v,I),S);return U?q:q.endOf(u)},"l"),Z=a(function(I,v){return G.w(S.toDate()[I].apply(S.toDate("s"),(U?[0,0,0,0]:[23,59,59,999]).slice(v)),S)},"$"),ne=this.$W,pe=this.$M,K=this.$D,Ge="set"+(this.$u?"UTC":"");switch(P){case h:return U?$(1,0):$(31,11);case f:return U?$(1,pe):$(0,pe+1);case c:var R=this.$locale().weekStart||0,b=(ne<R?ne+7:ne)-R;return $(U?K-b:K+(6-b),pe);case u:case y:return Z(Ge+"Hours",0);case i:return Z(Ge+"Minutes",1);case s:return Z(Ge+"Seconds",2);case o:return Z(Ge+"Milliseconds",3);default:return this.clone()}},w.endOf=function(A){return this.startOf(A,!1)},w.$set=function(A,_){var S,U=G.p(A),P="set"+(this.$u?"UTC":""),$=(S={},S[u]=P+"Date",S[y]=P+"Date",S[f]=P+"Month",S[h]=P+"FullYear",S[i]=P+"Hours",S[s]=P+"Minutes",S[o]=P+"Seconds",S[n]=P+"Milliseconds",S)[U],Z=U===u?this.$D+(_-this.$W):_;if(U===f||U===h){var ne=this.clone().set(y,1);ne.$d[$](Z),ne.init(),this.$d=ne.set(y,Math.min(this.$D,ne.daysInMonth())).$d}else $&&this.$d[$](Z);return this.init(),this},w.set=function(A,_){return this.clone().$set(A,_)},w.get=function(A){return this[G.p(A)]()},w.add=function(A,_){var S,U=this;A=Number(A);var P=G.p(_),$=a(function(pe){var K=Y(U);return G.w(K.date(K.date()+Math.round(pe*A)),U)},"y");if(P===f)return this.set(f,this.$M+A);if(P===h)return this.set(h,this.$y+A);if(P===u)return $(1);if(P===c)return $(7);var Z=(S={},S[s]=t,S[i]=r,S[o]=e,S)[P]||1,ne=this.$d.getTime()+A*Z;return G.w(ne,this)},w.subtract=function(A,_){return this.add(-1*A,_)},w.format=function(A){var _=this,S=this.$locale();if(!this.isValid())return S.invalidDate||E;var U=A||"YYYY-MM-DDTHH:mm:ssZ",P=G.z(this),$=this.$H,Z=this.$m,ne=this.$M,pe=S.weekdays,K=S.months,Ge=S.meridiem,R=a(function(v,q,oe,Re){return v&&(v[q]||v(_,U))||oe[q].slice(0,Re)},"h"),b=a(function(v){return G.s($%12||12,v,"0")},"d"),I=Ge||function(v,q,oe){var Re=v<12?"AM":"PM";return oe?Re.toLowerCase():Re};return U.replace(k,function(v,q){return q||function(oe){switch(oe){case"YY":return String(_.$y).slice(-2);case"YYYY":return G.s(_.$y,4,"0");case"M":return ne+1;case"MM":return G.s(ne+1,2,"0");case"MMM":return R(S.monthsShort,ne,K,3);case"MMMM":return R(K,ne);case"D":return _.$D;case"DD":return G.s(_.$D,2,"0");case"d":return String(_.$W);case"dd":return R(S.weekdaysMin,_.$W,pe,2);case"ddd":return R(S.weekdaysShort,_.$W,pe,3);case"dddd":return pe[_.$W];case"H":return String($);case"HH":return G.s($,2,"0");case"h":return b(1);case"hh":return b(2);case"a":return I($,Z,!0);case"A":return I($,Z,!1);case"m":return String(Z);case"mm":return G.s(Z,2,"0");case"s":return String(_.$s);case"ss":return G.s(_.$s,2,"0");case"SSS":return G.s(_.$ms,3,"0");case"Z":return P}return null}(v)||P.replace(":","")})},w.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},w.diff=function(A,_,S){var U,P=this,$=G.p(_),Z=Y(A),ne=(Z.utcOffset()-this.utcOffset())*t,pe=this-Z,K=a(function(){return G.m(P,Z)},"D");switch($){case h:U=K()/12;break;case f:U=K();break;case g:U=K()/3;break;case c:U=(pe-ne)/6048e5;break;case u:U=(pe-ne)/864e5;break;case i:U=pe/r;break;case s:U=pe/t;break;case o:U=pe/e;break;default:U=pe}return S?U:G.a(U)},w.daysInMonth=function(){return this.endOf(f).$D},w.$locale=function(){return ie[this.$L]},w.locale=function(A,_){if(!A)return this.$L;var S=this.clone(),U=ot(A,_,!0);return U&&(S.$L=U),S},w.clone=function(){return G.w(this.$d,this)},w.toDate=function(){return new Date(this.valueOf())},w.toJSON=function(){return this.isValid()?this.toISOString():null},w.toISOString=function(){return this.$d.toISOString()},w.toString=function(){return this.$d.toUTCString()},O}(),Ya=Gt.prototype;return Y.prototype=Ya,[["$ms",n],["$s",o],["$m",s],["$H",i],["$W",u],["$M",f],["$y",h],["$D",y]].forEach(function(O){Ya[O[1]]=function(w){return this.$g(w,O[0],O[1])}}),Y.extend=function(O,w){return O.$i||(O(w,Gt,Y),O.$i=!0),Y},Y.locale=ot,Y.isDayjs=nt,Y.unix=function(O){return Y(1e3*O)},Y.en=ie[ye],Y.Ls=ie,Y.p={},Y})});var jb=p((C4,$b)=>{"use strict";function XN(e,t,r,n){for(var o=-1,s=e==null?0:e.length;++o<s;){var i=e[o];t(n,i,r(i),e)}return n}a(XN,"arrayAggregator");$b.exports=XN});var Kb=p((L4,Qb)=>{"use strict";var ZN=us(),eB=Or();function tB(e,t){return e&&ZN(e,t,eB)}a(tB,"baseForOwn");Qb.exports=tB});var Hb=p((U4,Vb)=>{"use strict";var rB=mr();function aB(e,t){return function(r,n){if(r==null)return r;if(!rB(r))return e(r,n);for(var o=r.length,s=t?o:-1,i=Object(r);(t?s--:++s<o)&&n(i[s],s,i)!==!1;);return r}}a(aB,"createBaseEach");Vb.exports=aB});var zb=p((D4,Yb)=>{"use strict";var nB=Kb(),oB=Hb(),sB=oB(nB);Yb.exports=sB});var Xb=p((k4,Jb)=>{"use strict";var iB=zb();function uB(e,t,r,n){return iB(e,function(o,s,i){t(n,o,r(o),i)}),n}a(uB,"baseAggregator");Jb.exports=uB});var eI=p((N4,Zb)=>{"use strict";var cB=jb(),pB=Xb(),lB=su(),dB=Ee();function fB(e,t){return function(r,n){var o=dB(r)?cB:pB,s=t?t():{};return o(r,e,lB(n,2),s)}}a(fB,"createAggregator");Zb.exports=fB});var rI=p((G4,tI)=>{"use strict";var mB=Aa(),gB=eI(),hB=Object.prototype,yB=hB.hasOwnProperty,AB=gB(function(e,t,r){yB.call(e,r)?e[r].push(t):mB(e,r,[t])});tI.exports=AB});var FB={};x(FB,{Method:()=>Ro,ai:()=>Hu,api:()=>wu,auditLogs:()=>kt,automations:()=>Qn,backups:()=>Ne,branding:()=>Un,constants:()=>aa,environmentVariables:()=>mt,features:()=>Ze,groups:()=>re,init:()=>Im,licensing:()=>ct,logger:()=>Zt,mappers:()=>ce,middleware:()=>hu,plugins:()=>Kn,publicApi:()=>Yn,quotas:()=>ft,scimGroups:()=>qr,scimUsers:()=>qe,sdk:()=>pu,users:()=>Wn,utils:()=>cr});module.exports=DI(FB);var Ro=(s=>(s.POST="POST",s.GET="GET",s.PATCH="PATCH",s.DELETE="DELETE",s.PUT="PUT",s))(Ro||{});var pu={};x(pu,{ai:()=>Ms,auditLogs:()=>kt,automations:()=>Qn,backups:()=>Ne,branding:()=>Un,environmentVariables:()=>mt,features:()=>Ze,groups:()=>re,init:()=>Im,licensing:()=>ct,logger:()=>Zt,plugins:()=>Kn,publicApi:()=>Yn,quotas:()=>ft,scimGroups:()=>qr,scimUsers:()=>qe,users:()=>Wn,utils:()=>cr});var Un={};x(Un,{getBrandingConfig:()=>xx});var Ze={};x(Ze,{checkBackups:()=>xe,checkFeature:()=>Ln,checkFeatures:()=>Os,checkSCIM:()=>Ds,isAppBuildersEnabled:()=>Us,isAuditLogsEnabled:()=>Pn,isBackupsEnabled:()=>Ls,isBrandingEnabled:()=>Ps,isEnforceableSSO:()=>Uf,isExpandedPublicApiEnabled:()=>It,isPWAEnabled:()=>Sx,isPkceOidcEnabled:()=>Tx,isRecaptchaEnabled:()=>wx,isSSOEnforced:()=>Ex,isSyncAutomationsEnabled:()=>bx,isTriggerAutomationRunEnabled:()=>Ix,isUserGroupsEnabled:()=>qs,isViewPermissionEnabled:()=>Rx,isViewReadonlyColumnsEnabled:()=>vx});var bt=require("@budibase/backend-core"),Ae=require("@budibase/types");var ct={};x(ct,{cache:()=>Je,client:()=>Lt,features:()=>dn,getFreeLicense:()=>_s,getLicense:()=>Rs,getLicenseFromKey:()=>vs,keys:()=>Cs,offline:()=>xn,quotas:()=>fn});var Je={};x(Je,{getCachedLicense:()=>Lf,invalidate:()=>Pf,refresh:()=>Kt});var za=require("@budibase/backend-core");var kr,kI=a(async()=>{kr=await za.RedisClient.init(za.redis.utils.Databases.LICENSES)},"init"),MI=a(async()=>{kr&&await kr.finish()},"shutdown");process.on("exit",async()=>{await MI()});var vo=a(async()=>(kr||await kI(),kr),"getClient");var Lt={};x(Lt,{activateLicenseKey:()=>Wo,getLicense:()=>ir,getLicenseFromKey:()=>Fo,triggerQuota:()=>TS});var Ju=F(require("node-fetch"));var Xu=require("@budibase/backend-core"),_o=require("dd-trace"),Zu=require("dd-trace/ext/formats");var xo=class{constructor(t){this.apiCall=t=>async(r="",n={})=>await _o.tracer.trace(`api.${t}`,async o=>{o.setTag("url",r);let s={...n.headers};s["Content-Type"]||(s["Content-Type"]="application/json",s.Accept="application/json");let i=s["Content-Type"]==="application/json";Xu.logging.correlation.setHeader(s),_o.tracer.inject(o,Zu.HTTP_HEADERS,s);let u={method:t,body:i?JSON.stringify(n.body):n.body,headers:s,credentials:"include"};return(0,Ju.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{a(this,"API")}},Co=xo;var ec=require("@budibase/backend-core");var{getProxyDispatcher:BI}=ec.utils;async function Ja(e,t,r){let n=BI({rejectUnauthorized:r?.rejectUnauthorized});return n?(console.log("[proxyFetch] Using proxy for request",{url:typeof e=="string"?e:e instanceof URL?e.href:e.url,hasDispatcher:!0,rejectUnauthorized:r?.rejectUnauthorized}),fetch(e,{...t,dispatcher:n})):(console.log("[proxyFetch] No proxy configured, using direct fetch",{url:typeof e=="string"?e:e instanceof URL?e.href:e.url}),fetch(e,t))}a(Ja,"proxyFetch");var cn=require("@budibase/types"),B=require("@budibase/backend-core");var it={};x(it,{bustCache:()=>Po,getCurrentUsageValues:()=>uc,getQuotaUsage:()=>Ft,setAllUsage:()=>qo,setAppUsageValue:()=>Uo,setUsage:()=>oc,setUsagePerApp:()=>sc,utils:()=>Gr});var Le=require("@budibase/backend-core"),ve=require("@budibase/types");var Gr={};x(Gr,{generateBaseQuotaUsage:()=>Za,generateNewMonthlyQuotas:()=>Br,generateNewQuotaUsage:()=>Lo,getBreakdownName:()=>tn,getCurrentMonthString:()=>xt,getQuotaDocId:()=>Nr,setCurrentMonth:()=>en,setQuotaReset:()=>Oo});var Mr=require("@budibase/backend-core"),Xa=require("@budibase/shared-core"),le=require("@budibase/types");var Nr=a(()=>Mr.context.isSelfHostUsingCloud()?`quota_usage_${Mr.context.getTenantId()}`:Mr.db.StaticDatabases.GLOBAL.docs.usageQuota,"getQuotaDocId"),tc=a(()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},"getNextQuotaReset"),Oo=a(e=>{e.quotaReset=tc()},"setQuotaReset"),xt=a(()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},"getCurrentMonthString"),Za=a(()=>({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:{[xt()]:Br()}}),"generateBaseQuotaUsage"),Lo=a(()=>{let e={_id:Nr(),quotaReset:tc(),...Za(),apps:{}};return en(e),e},"generateNewQuotaUsage"),Br=a(()=>({[le.MonthlyQuotaName.QUERIES]:0,[le.MonthlyQuotaName.AUTOMATIONS]:0,[le.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,[le.MonthlyQuotaName.ACTIONS]:0,triggers:{}}),"generateNewMonthlyQuotas"),en=a(e=>{let t=xt();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=Br()),e.monthly.current=e.monthly[t]},"setCurrentMonth"),tn=a((e,t)=>{if(!(!t||!e))switch(e){case le.MonthlyQuotaName.AUTOMATIONS:return le.BreakdownQuotaName.AUTOMATIONS;case le.MonthlyQuotaName.QUERIES:return(0,Xa.isTableIdOrExternalTableId)(t)?le.BreakdownQuotaName.ROW_QUERIES:(0,Xa.isDatasourceOrDatasourcePlusId)(t)?le.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}},"getBreakdownName");var rc=Le.Duration.fromSeconds(60).toMs(),{Writethrough:ac}=Le.cache.writethrough;function GI(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}a(GI,"clearDeprecated");var rn=a(()=>Le.tenancy.isSelfHostUsingCloud()?new ac(Le.tenancy.getSelfHostCloudDB(),rc):new ac(Le.tenancy.getGlobalDB(),rc),"getDB");async function Po(e=0){let r=rn(),n=Nr(),o=await r.tryGet(n);o&&o._rev&&await r.remove(n,o._rev).catch(async s=>{if(e<1)return await Po(e+1);throw s})}a(Po,"bustCache");var Ft=a(async()=>{let e=rn(),t=await e.tryGet(Nr());if(!t){t=Lo();let{rev:r}=await e.put(t);t._rev=r}return en(t),Oo(t),GI(t)},"getQuotaUsage"),oc=a(async(e,t,r)=>qo({name:t,type:r,values:{total:e}}),"setUsage"),sc=a(async(e,t,r)=>{let n=rn(),o=await Ft(),s=Object.values(e).reduce((u,c)=>u+c,0);for(let[u,c]of Object.entries(e))o=ic(o,t,r,{total:s,app:c},{appId:u});let i=await n.put(o);return o._rev=i.rev,o},"setUsagePerApp"),FI=a((e,t,r,n)=>{let o=tn(t,r);if(!o||!n?.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]=n.breakdown,e},"setBreakdown"),Uo=a((e,t,r,n={},o)=>{let s;try{s=Le.db.getProdWorkspaceID(n?.appId||Le.context.getWorkspaceId())}catch{}if(!s||!o.app||!ve.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[s]||(e.apps={...e.apps,[s]:Za()});let i=e.apps[s];switch(r){case ve.QuotaUsageType.STATIC:i.usageQuota[t]=o.app;break;case ve.QuotaUsageType.MONTHLY:{let u=xt(),c=t,f=i.monthly[u];f||(i.monthly[u]=Br(),f=i.monthly[u]),f[c]=o.app,ve.BREAKDOWN_QUOTA_NAMES.includes(c)&&n?.id&&(f=FI(f,c,n.id,o));break}}return e},"setAppUsageValue"),nc=a((e,t,r,n)=>{if(!ve.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 ve.QuotaUsageType.STATIC:if(s.usageQuota?.[r])return{app:s.usageQuota[r]};break;case ve.QuotaUsageType.MONTHLY:{let i=xt(),u=r;if(!s.monthly?.[i]?.[u])break;let c=s.monthly[i],f=c[u],g,h=tn(u,n);return h&&n&&c.breakdown?.[h]&&(g=c.breakdown[h]?.values[n]),{app:f,breakdown:g||0}}}return{app:0}},"getAppUsageValue"),WI=a((e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},"setStaticTriggers"),$I=a((e,t,r,n)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),n&&(r.monthly[t].triggers[e]=n)},"setMonthlyTriggers"),ic=a((e,t,r,n,o={})=>{if(r===ve.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=n.total,WI(t,e,n.triggers);else if(r===ve.QuotaUsageType.MONTHLY){t=t;let s=xt();e.monthly[s][t]=n.total,$I(t,s,e,n.triggers)}else throw new Error(`Invalid usage type: ${r}`);return Uo(e,t,r,o,n)},"coreUsageUpdate"),qo=a(async e=>{let t=Array.isArray(e)?e:[e],r=rn(),n=await Ft();for(let s of t)n=ic(n,s.name,s.type,s.values,s.opts);let o=await r.put(n,0);return n._rev=o.rev,n},"setAllUsage"),uc=a(async(e,t,r)=>{let n=await Ft(),o=0,s={};switch(e){case ve.QuotaUsageType.STATIC:if(n.usageQuota[t]){let i=t;o=n.usageQuota[i],s=nc(n,e,t,r)}break;case ve.QuotaUsageType.MONTHLY:{let i=xt(),u=t;n.monthly[i][u]&&(o=n.monthly[i][u],s=nc(n,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return ve.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 We={};x(We,{destroy:()=>KI,get:()=>Do,save:()=>QI});var Ct=require("@budibase/backend-core");var jI=a(()=>({_id:Ct.StaticDatabases.GLOBAL.docs.licenseInfo}),"newLicenseInfo"),QI=a(async e=>{let t=await Do();t={...t,...e};let n=await Ct.tenancy.getGlobalDB().put(t);return t._rev=n.rev,t},"save"),Do=a(async()=>{let e=Ct.tenancy.getGlobalDB();try{return await e.get(Ct.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return jI();throw t}},"get"),KI=a(async()=>{let e=Ct.tenancy.getGlobalDB(),t=await Do();t&&t._rev&&await e.remove(Ct.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)},"destroy");var z={};x(z,{bulkSave:()=>nS,destroy:()=>oS,fetch:()=>eS,generateUserGroupID:()=>XI,get:()=>tS,getBulk:()=>rS,getByName:()=>ko,getGroupUsers:()=>nn,getGroupUsersParams:()=>fc,getUserGroupsParams:()=>dc,save:()=>aS});var j=require("@budibase/backend-core");var ze=require("@budibase/types"),nr=require("@budibase/backend-core");async function cc(){let e=nr.sql.designDoc.base("type");e.sql.tables={[ze.AUDIT_LOG_TYPE]:{fields:{appId:ze.SQLiteType.TEXT,event:ze.SQLiteType.TEXT,userId:ze.SQLiteType.TEXT,timestamp:ze.SQLiteType.TEXT,metadata:ze.SQLiteType.TEXT,name:ze.SQLiteType.TEXT,type:ze.SQLiteType.TEXT,fallback:ze.SQLiteType.TEXT}}};let t=nr.context.getAuditLogsDB(),r;try{r=await t.get(nr.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(n){if(n.status===404)r=e;else throw n}await t.put(r)}a(cc,"createAuditLogDesignDocSQL");var an=require("@budibase/backend-core");var{ViewName:VI,SEPARATOR:HI,DocumentType:YI,createView:zI}=an.db,JI=YI.USER+HI;async function pc(){let e=an.tenancy.getGlobalDB(),t=`function(doc) {
|
|
4
|
-
if (doc._id.startsWith("${
|
|
3
|
+
`)}a(KO,"insertWrapDetails");og.exports=KO});var ro=p((c2,ig)=>{"use strict";function VO(e,t){for(var r=-1,n=e==null?0:e.length;++r<n&&t(e[r],r,e)!==!1;);return e}a(VO,"arrayEach");ig.exports=VO});var cg=p((l2,ug)=>{"use strict";var HO=ro(),YO=ts(),zO=1,JO=2,XO=8,ZO=16,eL=32,tL=64,rL=128,aL=256,nL=512,oL=[["ary",rL],["bind",zO],["bindKey",JO],["curry",XO],["curryRight",ZO],["flip",nL],["partial",eL],["partialRight",tL],["rearg",aL]];function sL(e,t){return HO(oL,function(r){var n="_."+r[0];t&r[1]&&!YO(e,n)&&e.push(n)}),e.sort()}a(sL,"updateWrapDetails");ug.exports=sL});var vi=p((f2,pg)=>{"use strict";var iL=ng(),uL=sg(),cL=hn(),pL=cg();function lL(e,t,r){var n=t+"";return cL(e,uL(n,pL(iL(n),r)))}a(lL,"setWrapToString");pg.exports=lL});var _i=p((g2,fg)=>{"use strict";var dL=tg(),fL=Ri(),mL=vi(),gL=1,hL=2,yL=4,AL=8,lg=32,dg=64;function bL(e,t,r,n,o,s,i,u,c,f){var g=t&AL,h=g?i:void 0,y=g?void 0:i,E=g?s:void 0,M=g?void 0:s;t|=g?lg:dg,t&=~(g?dg:lg),t&yL||(t&=~(gL|hL));var k=[e,t,o,E,h,M,y,u,c,f],D=r.apply(void 0,k);return dL(e)&&fL(D,k),D.placeholder=n,mL(D,e,t)}a(bL,"createRecurry");fg.exports=bL});var xi=p((y2,mg)=>{"use strict";function IL(e){var t=e;return t.placeholder}a(IL,"getHolder");mg.exports=IL});var hg=p((b2,gg)=>{"use strict";var SL=yr(),wL=va(),TL=Math.min;function EL(e,t){for(var r=e.length,n=TL(t.length,r),o=SL(e);n--;){var s=t[n];e[n]=wL(s,r)?o[s]:void 0}return e}a(EL,"reorder");gg.exports=EL});var ao=p((S2,Ag)=>{"use strict";var yg="__lodash_placeholder__";function RL(e,t){for(var r=-1,n=e.length,o=0,s=[];++r<n;){var i=e[r];(i===t||i===yg)&&(e[r]=yg,s[o++]=r)}return s}a(RL,"replaceHolders");Ag.exports=RL});var Ci=p((T2,Sg)=>{"use strict";var vL=Si(),_L=wi(),xL=Nm(),bg=ka(),CL=_i(),OL=xi(),LL=hg(),PL=ao(),UL=_e(),qL=1,DL=2,kL=8,ML=16,NL=128,BL=512;function Ig(e,t,r,n,o,s,i,u,c,f){var g=t&NL,h=t&qL,y=t&DL,E=t&(kL|ML),M=t&BL,k=y?void 0:bg(e);function D(){for(var C=arguments.length,W=Array(C),ye=C;ye--;)W[ye]=arguments[ye];if(E)var ie=OL(D),Ye=xL(W,ie);if(n&&(W=vL(W,n,o,E)),s&&(W=_L(W,s,i,E)),C-=Ye,E&&C<f){var nt=PL(W,ie);return CL(e,t,Ig,D.placeholder,r,W,nt,u,c,f-C)}var ot=h?r:this,Y=y?ot[e]:e;return C=W.length,u?W=LL(W,u):M&&C>1&&W.reverse(),g&&c<C&&(W.length=c),this&&this!==UL&&this instanceof D&&(Y=k||bg(Y)),Y.apply(ot,W)}return a(D,"wrapper"),D}a(Ig,"createHybrid");Sg.exports=Ig});var Tg=p((R2,wg)=>{"use strict";var GL=gn(),FL=ka(),WL=Ci(),$L=_i(),jL=xi(),QL=ao(),KL=_e();function VL(e,t,r){var n=FL(e);function o(){for(var s=arguments.length,i=Array(s),u=s,c=jL(o);u--;)i[u]=arguments[u];var f=s<3&&i[0]!==c&&i[s-1]!==c?[]:QL(i,c);if(s-=f.length,s<r)return $L(e,t,WL,o.placeholder,void 0,i,f,void 0,void 0,r-s);var g=this&&this!==KL&&this instanceof o?n:e;return GL(g,this,i)}return a(o,"wrapper"),o}a(VL,"createCurry");wg.exports=VL});var Rg=p((_2,Eg)=>{"use strict";var HL=gn(),YL=ka(),zL=_e(),JL=1;function XL(e,t,r,n){var o=t&JL,s=YL(e);function i(){for(var u=-1,c=arguments.length,f=-1,g=n.length,h=Array(g+c),y=this&&this!==zL&&this instanceof i?s:e;++f<g;)h[f]=n[f];for(;c--;)h[f++]=arguments[++u];return HL(y,o?r:this,h)}return a(i,"wrapper"),i}a(XL,"createPartial");Eg.exports=XL});var Lg=p((C2,Og)=>{"use strict";var ZL=Si(),eP=wi(),vg=ao(),_g="__lodash_placeholder__",Oi=1,tP=2,rP=4,xg=8,Ma=128,Cg=256,aP=Math.min;function nP(e,t){var r=e[1],n=t[1],o=r|n,s=o<(Oi|tP|Ma),i=n==Ma&&r==xg||n==Ma&&r==Cg&&e[7].length<=t[8]||n==(Ma|Cg)&&t[7].length<=t[8]&&r==xg;if(!(s||i))return e;n&Oi&&(e[2]=t[2],o|=r&Oi?0:rP);var u=t[3];if(u){var c=e[3];e[3]=c?ZL(c,u,t[4]):u,e[4]=c?vg(e[3],_g):t[4]}return u=t[5],u&&(c=e[5],e[5]=c?eP(c,u,t[6]):u,e[6]=c?vg(e[5],_g):t[6]),u=t[7],u&&(e[7]=u),n&Ma&&(e[8]=e[8]==null?t[8]:aP(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=o,e}a(nP,"mergeData");Og.exports=nP});var Ug=p((L2,Pg)=>{"use strict";var oP=/\s/;function sP(e){for(var t=e.length;t--&&oP.test(e.charAt(t)););return t}a(sP,"trimmedEndIndex");Pg.exports=sP});var Dg=p((U2,qg)=>{"use strict";var iP=Ug(),uP=/^\s+/;function cP(e){return e&&e.slice(0,iP(e)+1).replace(uP,"")}a(cP,"baseTrim");qg.exports=cP});var Cr=p((D2,kg)=>{"use strict";var pP=Pt(),lP=ke(),dP="[object Symbol]";function fP(e){return typeof e=="symbol"||lP(e)&&pP(e)==dP}a(fP,"isSymbol");kg.exports=fP});var Gg=p((M2,Bg)=>{"use strict";var mP=Dg(),Mg=Qe(),gP=Cr(),Ng=0/0,hP=/^[-+]0x[0-9a-f]+$/i,yP=/^0b[01]+$/i,AP=/^0o[0-7]+$/i,bP=parseInt;function IP(e){if(typeof e=="number")return e;if(gP(e))return Ng;if(Mg(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=Mg(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=mP(e);var r=yP.test(e);return r||AP.test(e)?bP(e.slice(2),r?2:8):hP.test(e)?Ng:+e}a(IP,"toNumber");Bg.exports=IP});var $g=p((B2,Wg)=>{"use strict";var SP=Gg(),Fg=1/0,wP=17976931348623157e292;function TP(e){if(!e)return e===0?e:0;if(e=SP(e),e===Fg||e===-Fg){var t=e<0?-1:1;return t*wP}return e===e?e:0}a(TP,"toFinite");Wg.exports=TP});var Li=p((F2,jg)=>{"use strict";var EP=$g();function RP(e){var t=EP(e),r=t%1;return t===t?r?t-r:t:0}a(RP,"toInteger");jg.exports=RP});var no=p(($2,Yg)=>{"use strict";var vP=Ii(),_P=qm(),xP=Tg(),CP=Ci(),OP=Rg(),LP=Ti(),PP=Lg(),UP=Ri(),qP=vi(),Qg=Li(),DP="Expected a function",Kg=1,kP=2,Pi=8,Ui=16,qi=32,Vg=64,Hg=Math.max;function MP(e,t,r,n,o,s,i,u){var c=t&kP;if(!c&&typeof e!="function")throw new TypeError(DP);var f=n?n.length:0;if(f||(t&=~(qi|Vg),n=o=void 0),i=i===void 0?i:Hg(Qg(i),0),u=u===void 0?u:Qg(u),f-=o?o.length:0,t&Vg){var g=n,h=o;n=o=void 0}var y=c?void 0:LP(e),E=[e,t,r,n,o,g,h,s,i,u];if(y&&PP(E,y),e=E[0],t=E[1],r=E[2],n=E[3],o=E[4],u=E[9]=E[9]===void 0?c?0:e.length:Hg(E[9]-f,0),!u&&t&(Pi|Ui)&&(t&=~(Pi|Ui)),!t||t==Kg)var M=_P(e,t,r);else t==Pi||t==Ui?M=xP(e,t,u):(t==qi||t==(Kg|qi))&&!o.length?M=OP(e,t,r,n):M=CP.apply(void 0,E);var k=y?vP:UP;return qP(k(M,E),e,t)}a(MP,"createWrap");Yg.exports=MP});var Jg=p((Q2,zg)=>{"use strict";var NP=no(),BP=128;function GP(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,NP(e,BP,void 0,void 0,void 0,void 0,t)}a(GP,"ary");zg.exports=GP});var Zg=p((V2,Xg)=>{"use strict";var FP=ds(),WP=FP(Object.keys,Object);Xg.exports=WP});var Di=p((H2,eh)=>{"use strict";var $P=En(),jP=Zg(),QP=Object.prototype,KP=QP.hasOwnProperty;function VP(e){if(!$P(e))return jP(e);var t=[];for(var r in Object(e))KP.call(e,r)&&r!="constructor"&&t.push(r);return t}a(VP,"baseKeys");eh.exports=VP});var Or=p((z2,th)=>{"use strict";var HP=As(),YP=Di(),zP=mr();function JP(e){return zP(e)?HP(e):YP(e)}a(JP,"keys");th.exports=JP});var ki=p((X2,rh)=>{"use strict";var XP=Ir(),ZP=Or();function eU(e,t){return e&&XP(t,ZP(t),e)}a(eU,"baseAssign");rh.exports=eU});var nh=p((eV,ah)=>{"use strict";var tU=Ir(),rU=Sr();function aU(e,t){return e&&tU(t,rU(t),e)}a(aU,"baseAssignIn");ah.exports=aU});var sh=p((rV,oh)=>{"use strict";function nU(e,t){for(var r=-1,n=e==null?0:e.length,o=0,s=[];++r<n;){var i=e[r];t(i,r,e)&&(s[o++]=i)}return s}a(nU,"arrayFilter");oh.exports=nU});var Mi=p((nV,ih)=>{"use strict";function oU(){return[]}a(oU,"stubArray");ih.exports=oU});var oo=p((sV,ch)=>{"use strict";var sU=sh(),iU=Mi(),uU=Object.prototype,cU=uU.propertyIsEnumerable,uh=Object.getOwnPropertySymbols,pU=uh?function(e){return e==null?[]:(e=Object(e),sU(uh(e),function(t){return cU.call(e,t)}))}:iU;ch.exports=pU});var lh=p((iV,ph)=>{"use strict";var lU=Ir(),dU=oo();function fU(e,t){return lU(e,dU(e),t)}a(fU,"copySymbols");ph.exports=fU});var Ni=p((cV,dh)=>{"use strict";var mU=mn(),gU=Tn(),hU=oo(),yU=Mi(),AU=Object.getOwnPropertySymbols,bU=AU?function(e){for(var t=[];e;)mU(t,hU(e)),e=gU(e);return t}:yU;dh.exports=bU});var mh=p((pV,fh)=>{"use strict";var IU=Ir(),SU=Ni();function wU(e,t){return IU(e,SU(e),t)}a(wU,"copySymbolsIn");fh.exports=wU});var Bi=p((dV,gh)=>{"use strict";var TU=mn(),EU=Ee();function RU(e,t,r){var n=t(e);return EU(e)?n:TU(n,r(e))}a(RU,"baseGetAllKeys");gh.exports=RU});var Gi=p((mV,hh)=>{"use strict";var vU=Bi(),_U=oo(),xU=Or();function CU(e){return vU(e,xU,_U)}a(CU,"getAllKeys");hh.exports=CU});var Ah=p((hV,yh)=>{"use strict";var OU=Bi(),LU=Ni(),PU=Sr();function UU(e){return OU(e,PU,LU)}a(UU,"getAllKeysIn");yh.exports=UU});var Ih=p((AV,bh)=>{"use strict";var qU=Ut(),DU=_e(),kU=qU(DU,"DataView");bh.exports=kU});var wh=p((bV,Sh)=>{"use strict";var MU=Ut(),NU=_e(),BU=MU(NU,"Promise");Sh.exports=BU});var Pr=p((IV,Ch)=>{"use strict";var Fi=Ih(),Wi=yn(),$i=wh(),ji=as(),Qi=Ai(),xh=Pt(),Lr=zo(),Th="[object Map]",GU="[object Object]",Eh="[object Promise]",Rh="[object Set]",vh="[object WeakMap]",_h="[object DataView]",FU=Lr(Fi),WU=Lr(Wi),$U=Lr($i),jU=Lr(ji),QU=Lr(Qi),Xt=xh;(Fi&&Xt(new Fi(new ArrayBuffer(1)))!=_h||Wi&&Xt(new Wi)!=Th||$i&&Xt($i.resolve())!=Eh||ji&&Xt(new ji)!=Rh||Qi&&Xt(new Qi)!=vh)&&(Xt=a(function(e){var t=xh(e),r=t==GU?e.constructor:void 0,n=r?Lr(r):"";if(n)switch(n){case FU:return _h;case WU:return Th;case $U:return Eh;case jU:return Rh;case QU:return vh}return t},"getTag"));Ch.exports=Xt});var Lh=p((wV,Oh)=>{"use strict";var KU=Object.prototype,VU=KU.hasOwnProperty;function HU(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&VU.call(e,"index")&&(r.index=e.index,r.input=e.input),r}a(HU,"initCloneArray");Oh.exports=HU});var Uh=p((EV,Ph)=>{"use strict";var YU=wn();function zU(e,t){var r=t?YU(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}a(zU,"cloneDataView");Ph.exports=zU});var Dh=p((vV,qh)=>{"use strict";var JU=/\w*$/;function XU(e){var t=new e.constructor(e.source,JU.exec(e));return t.lastIndex=e.lastIndex,t}a(XU,"cloneRegExp");qh.exports=XU});var Gh=p((xV,Bh)=>{"use strict";var kh=Qt(),Mh=kh?kh.prototype:void 0,Nh=Mh?Mh.valueOf:void 0;function ZU(e){return Nh?Object(Nh.call(e)):{}}a(ZU,"cloneSymbol");Bh.exports=ZU});var Wh=p((OV,Fh)=>{"use strict";var eq=wn(),tq=Uh(),rq=Dh(),aq=Gh(),nq=ls(),oq="[object Boolean]",sq="[object Date]",iq="[object Map]",uq="[object Number]",cq="[object RegExp]",pq="[object Set]",lq="[object String]",dq="[object Symbol]",fq="[object ArrayBuffer]",mq="[object DataView]",gq="[object Float32Array]",hq="[object Float64Array]",yq="[object Int8Array]",Aq="[object Int16Array]",bq="[object Int32Array]",Iq="[object Uint8Array]",Sq="[object Uint8ClampedArray]",wq="[object Uint16Array]",Tq="[object Uint32Array]";function Eq(e,t,r){var n=e.constructor;switch(t){case fq:return eq(e);case oq:case sq:return new n(+e);case mq:return tq(e,r);case gq:case hq:case yq:case Aq:case bq:case Iq:case Sq:case wq:case Tq:return nq(e,r);case iq:return new n;case uq:case lq:return new n(e);case cq:return rq(e);case pq:return new n;case dq:return aq(e)}}a(Eq,"initCloneByTag");Fh.exports=Eq});var jh=p((PV,$h)=>{"use strict";var Rq=Pr(),vq=ke(),_q="[object Map]";function xq(e){return vq(e)&&Rq(e)==_q}a(xq,"baseIsMap");$h.exports=xq});var Hh=p((qV,Vh)=>{"use strict";var Cq=jh(),Oq=Rn(),Qh=vn(),Kh=Qh&&Qh.isMap,Lq=Kh?Oq(Kh):Cq;Vh.exports=Lq});var zh=p((DV,Yh)=>{"use strict";var Pq=Pr(),Uq=ke(),qq="[object Set]";function Dq(e){return Uq(e)&&Pq(e)==qq}a(Dq,"baseIsSet");Yh.exports=Dq});var ey=p((MV,Zh)=>{"use strict";var kq=zh(),Mq=Rn(),Jh=vn(),Xh=Jh&&Jh.isSet,Nq=Xh?Mq(Xh):kq;Zh.exports=Nq});var Ki=p((NV,ny)=>{"use strict";var Bq=Aa(),Gq=ro(),Fq=ys(),Wq=ki(),$q=nh(),jq=cs(),Qq=yr(),Kq=lh(),Vq=mh(),Hq=Gi(),Yq=Ah(),zq=Pr(),Jq=Lh(),Xq=Wh(),Zq=fs(),eD=Ee(),tD=Ta(),rD=Hh(),aD=Qe(),nD=ey(),oD=Or(),sD=Sr(),iD=1,uD=2,cD=4,ty="[object Arguments]",pD="[object Array]",lD="[object Boolean]",dD="[object Date]",fD="[object Error]",ry="[object Function]",mD="[object GeneratorFunction]",gD="[object Map]",hD="[object Number]",ay="[object Object]",yD="[object RegExp]",AD="[object Set]",bD="[object String]",ID="[object Symbol]",SD="[object WeakMap]",wD="[object ArrayBuffer]",TD="[object DataView]",ED="[object Float32Array]",RD="[object Float64Array]",vD="[object Int8Array]",_D="[object Int16Array]",xD="[object Int32Array]",CD="[object Uint8Array]",OD="[object Uint8ClampedArray]",LD="[object Uint16Array]",PD="[object Uint32Array]",V={};V[ty]=V[pD]=V[wD]=V[TD]=V[lD]=V[dD]=V[ED]=V[RD]=V[vD]=V[_D]=V[xD]=V[gD]=V[hD]=V[ay]=V[yD]=V[AD]=V[bD]=V[ID]=V[CD]=V[OD]=V[LD]=V[PD]=!0;V[fD]=V[ry]=V[SD]=!1;function so(e,t,r,n,o,s){var i,u=t&iD,c=t&uD,f=t&cD;if(r&&(i=o?r(e,n,o,s):r(e)),i!==void 0)return i;if(!aD(e))return e;var g=eD(e);if(g){if(i=Jq(e),!u)return Qq(e,i)}else{var h=zq(e),y=h==ry||h==mD;if(tD(e))return jq(e,u);if(h==ay||h==ty||y&&!o){if(i=c||y?{}:Zq(e),!u)return c?Vq(e,$q(i,e)):Kq(e,Wq(i,e))}else{if(!V[h])return o?e:{};i=Xq(e,h,u)}}s||(s=new Bq);var E=s.get(e);if(E)return E;s.set(e,i),nD(e)?e.forEach(function(D){i.add(so(D,t,r,D,e,s))}):rD(e)&&e.forEach(function(D,C){i.set(C,so(D,t,r,C,e,s))});var M=f?c?Yq:Hq:c?sD:oD,k=g?void 0:M(e);return Gq(k||e,function(D,C){k&&(C=D,D=e[C]),Fq(i,C,so(D,t,r,C,e,s))}),i}a(so,"baseClone");ny.exports=so});var sy=p((GV,oy)=>{"use strict";var UD=Ki(),qD=4;function DD(e){return UD(e,qD)}a(DD,"clone");oy.exports=DD});var uy=p((WV,iy)=>{"use strict";var kD=no(),MD=8;function Vi(e,t,r){t=r?void 0:t;var n=kD(e,MD,void 0,void 0,void 0,void 0,void 0,t);return n.placeholder=Vi.placeholder,n}a(Vi,"curry");Vi.placeholder={};iy.exports=Vi});var py=p((jV,cy)=>{"use strict";var ND=Pt(),BD=ke(),GD=ms(),FD="[object DOMException]",WD="[object Error]";function $D(e){if(!BD(e))return!1;var t=ND(e);return t==WD||t==FD||typeof e.message=="string"&&typeof e.name=="string"&&!GD(e)}a($D,"isError");cy.exports=$D});var dy=p((KV,ly)=>{"use strict";var jD=Pr(),QD=ke(),KD="[object WeakMap]";function VD(e){return QD(e)&&jD(e)==KD}a(VD,"isWeakMap");ly.exports=VD});var my=p((HV,fy)=>{"use strict";function HD(e,t){for(var r=-1,n=e==null?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}a(HD,"arraySome");fy.exports=HD});var Hi=p((zV,gy)=>{"use strict";var YD=es(),zD=my(),JD=rs(),XD=1,ZD=2;function ek(e,t,r,n,o,s){var i=r&XD,u=e.length,c=t.length;if(u!=c&&!(i&&c>u))return!1;var f=s.get(e),g=s.get(t);if(f&&g)return f==t&&g==e;var h=-1,y=!0,E=r&ZD?new YD:void 0;for(s.set(e,t),s.set(t,e);++h<u;){var M=e[h],k=t[h];if(n)var D=i?n(k,M,h,t,e,s):n(M,k,h,e,t,s);if(D!==void 0){if(D)continue;y=!1;break}if(E){if(!zD(t,function(C,W){if(!JD(E,W)&&(M===C||o(M,C,r,n,s)))return E.push(W)})){y=!1;break}}else if(!(M===k||o(M,k,r,n,s))){y=!1;break}}return s.delete(e),s.delete(t),y}a(ek,"equalArrays");gy.exports=ek});var yy=p((XV,hy)=>{"use strict";function tk(e){var t=-1,r=Array(e.size);return e.forEach(function(n,o){r[++t]=[o,n]}),r}a(tk,"mapToArray");hy.exports=tk});var wy=p((eH,Sy)=>{"use strict";var Ay=Qt(),by=ps(),rk=lr(),ak=Hi(),nk=yy(),ok=In(),sk=1,ik=2,uk="[object Boolean]",ck="[object Date]",pk="[object Error]",lk="[object Map]",dk="[object Number]",fk="[object RegExp]",mk="[object Set]",gk="[object String]",hk="[object Symbol]",yk="[object ArrayBuffer]",Ak="[object DataView]",Iy=Ay?Ay.prototype:void 0,Yi=Iy?Iy.valueOf:void 0;function bk(e,t,r,n,o,s,i){switch(r){case Ak:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case yk:return!(e.byteLength!=t.byteLength||!s(new by(e),new by(t)));case uk:case ck:case dk:return rk(+e,+t);case pk:return e.name==t.name&&e.message==t.message;case fk:case gk:return e==t+"";case lk:var u=nk;case mk:var c=n&sk;if(u||(u=ok),e.size!=t.size&&!c)return!1;var f=i.get(e);if(f)return f==t;n|=ik,i.set(e,t);var g=ak(u(e),u(t),n,o,s,i);return i.delete(e),g;case hk:if(Yi)return Yi.call(e)==Yi.call(t)}return!1}a(bk,"equalByTag");Sy.exports=bk});var Ry=p((rH,Ey)=>{"use strict";var Ty=Gi(),Ik=1,Sk=Object.prototype,wk=Sk.hasOwnProperty;function Tk(e,t,r,n,o,s){var i=r&Ik,u=Ty(e),c=u.length,f=Ty(t),g=f.length;if(c!=g&&!i)return!1;for(var h=c;h--;){var y=u[h];if(!(i?y in t:wk.call(t,y)))return!1}var E=s.get(e),M=s.get(t);if(E&&M)return E==t&&M==e;var k=!0;s.set(e,t),s.set(t,e);for(var D=i;++h<c;){y=u[h];var C=e[y],W=t[y];if(n)var ye=i?n(W,C,y,t,e,s):n(C,W,y,e,t,s);if(!(ye===void 0?C===W||o(C,W,r,n,s):ye)){k=!1;break}D||(D=y=="constructor")}if(k&&!D){var ie=e.constructor,Ye=t.constructor;ie!=Ye&&"constructor"in e&&"constructor"in t&&!(typeof ie=="function"&&ie instanceof ie&&typeof Ye=="function"&&Ye instanceof Ye)&&(k=!1)}return s.delete(e),s.delete(t),k}a(Tk,"equalObjects");Ey.exports=Tk});var Uy=p((nH,Py)=>{"use strict";var zi=Aa(),Ek=Hi(),Rk=wy(),vk=Ry(),vy=Pr(),_y=Ee(),xy=Ta(),_k=_n(),xk=1,Cy="[object Arguments]",Oy="[object Array]",io="[object Object]",Ck=Object.prototype,Ly=Ck.hasOwnProperty;function Ok(e,t,r,n,o,s){var i=_y(e),u=_y(t),c=i?Oy:vy(e),f=u?Oy:vy(t);c=c==Cy?io:c,f=f==Cy?io:f;var g=c==io,h=f==io,y=c==f;if(y&&xy(e)){if(!xy(t))return!1;i=!0,g=!1}if(y&&!g)return s||(s=new zi),i||_k(e)?Ek(e,t,r,n,o,s):Rk(e,t,c,r,n,o,s);if(!(r&xk)){var E=g&&Ly.call(e,"__wrapped__"),M=h&&Ly.call(t,"__wrapped__");if(E||M){var k=E?e.value():e,D=M?t.value():t;return s||(s=new zi),o(k,D,r,n,s)}}return y?(s||(s=new zi),vk(e,t,r,n,o,s)):!1}a(Ok,"baseIsEqualDeep");Py.exports=Ok});var Ji=p((sH,ky)=>{"use strict";var Lk=Uy(),qy=ke();function Dy(e,t,r,n,o){return e===t?!0:e==null||t==null||!qy(e)&&!qy(t)?e!==e&&t!==t:Lk(e,t,r,n,Dy,o)}a(Dy,"baseIsEqual");ky.exports=Dy});var Ny=p((uH,My)=>{"use strict";var Pk=Aa(),Uk=Ji(),qk=1,Dk=2;function kk(e,t,r,n){var o=r.length,s=o,i=!n;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],f=e[c],g=u[1];if(i&&u[2]){if(f===void 0&&!(c in e))return!1}else{var h=new Pk;if(n)var y=n(f,g,c,e,t,h);if(!(y===void 0?Uk(g,f,qk|Dk,n,h):y))return!1}}return!0}a(kk,"baseIsMatch");My.exports=kk});var Xi=p((pH,By)=>{"use strict";var Mk=Qe();function Nk(e){return e===e&&!Mk(e)}a(Nk,"isStrictComparable");By.exports=Nk});var Fy=p((dH,Gy)=>{"use strict";var Bk=Xi(),Gk=Or();function Fk(e){for(var t=Gk(e),r=t.length;r--;){var n=t[r],o=e[n];t[r]=[n,o,Bk(o)]}return t}a(Fk,"getMatchData");Gy.exports=Fk});var Zi=p((mH,Wy)=>{"use strict";function Wk(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}a(Wk,"matchesStrictComparable");Wy.exports=Wk});var jy=p((hH,$y)=>{"use strict";var $k=Ny(),jk=Fy(),Qk=Zi();function Kk(e){var t=jk(e);return t.length==1&&t[0][2]?Qk(t[0][0],t[0][1]):function(r){return r===e||$k(r,e,t)}}a(Kk,"baseMatches");$y.exports=Kk});var uo=p((AH,Qy)=>{"use strict";var Vk=Ee(),Hk=Cr(),Yk=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,zk=/^\w*$/;function Jk(e,t){if(Vk(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||Hk(e)?!0:zk.test(e)||!Yk.test(e)||t!=null&&e in Object(t)}a(Jk,"isKey");Qy.exports=Jk});var Hy=p((IH,Vy)=>{"use strict";var Ky=An(),Xk="Expected a function";function eu(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(Xk);var r=a(function(){var n=arguments,o=t?t.apply(this,n):n[0],s=r.cache;if(s.has(o))return s.get(o);var i=e.apply(this,n);return r.cache=s.set(o,i)||s,i},"memoized");return r.cache=new(eu.Cache||Ky),r}a(eu,"memoize");eu.Cache=Ky;Vy.exports=eu});var zy=p((wH,Yy)=>{"use strict";var Zk=Hy(),eM=500;function tM(e){var t=Zk(e,function(n){return r.size===eM&&r.clear(),n}),r=t.cache;return t}a(tM,"memoizeCapped");Yy.exports=tM});var tu=p((EH,Jy)=>{"use strict";var rM=zy(),aM=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,nM=/\\(\\)?/g,oM=rM(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(aM,function(r,n,o,s){t.push(o?s.replace(nM,"$1"):n||r)}),t});Jy.exports=oM});var ru=p((RH,Xy)=>{"use strict";function sM(e,t){for(var r=-1,n=e==null?0:e.length,o=Array(n);++r<n;)o[r]=t(e[r],r,e);return o}a(sM,"arrayMap");Xy.exports=sM});var nA=p((_H,aA)=>{"use strict";var Zy=Qt(),iM=ru(),uM=Ee(),cM=Cr(),pM=1/0,eA=Zy?Zy.prototype:void 0,tA=eA?eA.toString:void 0;function rA(e){if(typeof e=="string")return e;if(uM(e))return iM(e,rA)+"";if(cM(e))return tA?tA.call(e):"";var t=e+"";return t=="0"&&1/e==-pM?"-0":t}a(rA,"baseToString");aA.exports=rA});var au=p((CH,oA)=>{"use strict";var lM=nA();function dM(e){return e==null?"":lM(e)}a(dM,"toString");oA.exports=dM});var nu=p((LH,sA)=>{"use strict";var fM=Ee(),mM=uo(),gM=tu(),hM=au();function yM(e,t){return fM(e)?e:mM(e,t)?[e]:gM(hM(e))}a(yM,"castPath");sA.exports=yM});var Ur=p((UH,iA)=>{"use strict";var AM=Cr(),bM=1/0;function IM(e){if(typeof e=="string"||AM(e))return e;var t=e+"";return t=="0"&&1/e==-bM?"-0":t}a(IM,"toKey");iA.exports=IM});var ou=p((DH,uA)=>{"use strict";var SM=nu(),wM=Ur();function TM(e,t){t=SM(t,e);for(var r=0,n=t.length;e!=null&&r<n;)e=e[wM(t[r++])];return r&&r==n?e:void 0}a(TM,"baseGet");uA.exports=TM});var pA=p((MH,cA)=>{"use strict";var EM=ou();function RM(e,t,r){var n=e==null?void 0:EM(e,t);return n===void 0?r:n}a(RM,"get");cA.exports=RM});var dA=p((BH,lA)=>{"use strict";function vM(e,t){return e!=null&&t in Object(e)}a(vM,"baseHasIn");lA.exports=vM});var mA=p((FH,fA)=>{"use strict";var _M=nu(),xM=la(),CM=Ee(),OM=va(),LM=Sn(),PM=Ur();function UM(e,t,r){t=_M(t,e);for(var n=-1,o=t.length,s=!1;++n<o;){var i=PM(t[n]);if(!(s=e!=null&&r(e,i)))break;e=e[i]}return s||++n!=o?s:(o=e==null?0:e.length,!!o&&LM(o)&&OM(i,o)&&(CM(e)||xM(e)))}a(UM,"hasPath");fA.exports=UM});var hA=p(($H,gA)=>{"use strict";var qM=dA(),DM=mA();function kM(e,t){return e!=null&&DM(e,t,qM)}a(kM,"hasIn");gA.exports=kM});var AA=p((QH,yA)=>{"use strict";var MM=Ji(),NM=pA(),BM=hA(),GM=uo(),FM=Xi(),WM=Zi(),$M=Ur(),jM=1,QM=2;function KM(e,t){return GM(e)&&FM(t)?WM($M(e),t):function(r){var n=NM(r,e);return n===void 0&&n===t?BM(r,e):MM(t,n,jM|QM)}}a(KM,"baseMatchesProperty");yA.exports=KM});var IA=p((VH,bA)=>{"use strict";function VM(e){return function(t){return t?.[e]}}a(VM,"baseProperty");bA.exports=VM});var wA=p((YH,SA)=>{"use strict";var HM=ou();function YM(e){return function(t){return HM(t,e)}}a(YM,"basePropertyDeep");SA.exports=YM});var EA=p((JH,TA)=>{"use strict";var zM=IA(),JM=wA(),XM=uo(),ZM=Ur();function eN(e){return XM(e)?zM(ZM(e)):JM(e)}a(eN,"property");TA.exports=eN});var su=p((ZH,RA)=>{"use strict";var tN=jy(),rN=AA(),aN=da(),nN=Ee(),oN=EA();function sN(e){return typeof e=="function"?e:e==null?aN:typeof e=="object"?nN(e)?rN(e[0],e[1]):tN(e):oN(e)}a(sN,"baseIteratee");RA.exports=sN});var _A=p((tY,vA)=>{"use strict";var iN=Ki(),uN=su(),cN=1;function pN(e){return uN(typeof e=="function"?e:iN(e,cN))}a(pN,"iteratee");vA.exports=pN});var CA=p((aY,xA)=>{"use strict";var lN=Vo();function dN(e){var t=e==null?0:e.length;return t?lN(e,1):[]}a(dN,"flatten");xA.exports=dN});var LA=p((oY,OA)=>{"use strict";var fN=CA(),mN=Ho(),gN=hn();function hN(e){return gN(mN(e,void 0,fN),e+"")}a(hN,"flatRest");OA.exports=hN});var UA=p((iY,PA)=>{"use strict";var yN=no(),AN=LA(),bN=256,IN=AN(function(e,t){return yN(e,bN,void 0,void 0,void 0,t)});PA.exports=IN});var DA=p((uY,qA)=>{"use strict";var SN=ru(),wN=yr(),TN=Ee(),EN=Cr(),RN=tu(),vN=Ur(),_N=au();function xN(e){return TN(e)?SN(e,vN):EN(e)?[e]:wN(RN(_N(e)))}a(xN,"toPath");qA.exports=xN});var MA=p((pY,kA)=>{"use strict";kA.exports={ary:Jg(),assign:ki(),clone:sy(),curry:uy(),forEach:ro(),isArray:Ee(),isError:py(),isFunction:fa(),isWeakMap:dy(),iteratee:_A(),keys:Di(),rearg:UA(),toInteger:Li(),toPath:DA()}});var BA=p((lY,NA)=>{"use strict";var CN=vm(),ON=MA();function LN(e,t,r){return CN(ON,e,t,r)}a(LN,"convert");NA.exports=LN});var iu=p((fY,FA)=>{"use strict";var PN=BA(),GA=PN("merge",bs());GA.placeholder=mi();FA.exports=GA});var KA=p((uu,cu)=>{"use strict";(function(e,t){typeof uu=="object"&&typeof cu<"u"?cu.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs=t()})(uu,function(){"use strict";var e=1e3,t=6e4,r=36e5,n="millisecond",o="second",s="minute",i="hour",u="day",c="week",f="month",g="quarter",h="year",y="date",E="Invalid Date",M=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,k=/\[([^\]]+)]|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,D={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 w=["th","st","nd","rd"],A=O%100;return"["+O+(w[(A-20)%10]||w[A]||w[0])+"]"}},C=a(function(O,w,A){var _=String(O);return!_||_.length>=w?O:""+Array(w+1-_.length).join(A)+O},"m"),W={s:C,z:function(O){var w=-O.utcOffset(),A=Math.abs(w),_=Math.floor(A/60),S=A%60;return(w<=0?"+":"-")+C(_,2,"0")+":"+C(S,2,"0")},m:a(function O(w,A){if(w.date()<A.date())return-O(A,w);var _=12*(A.year()-w.year())+(A.month()-w.month()),S=w.clone().add(_,f),U=A-S<0,P=w.clone().add(_+(U?-1:1),f);return+(-(_+(A-S)/(U?S-P:P-S))||0)},"t"),a:function(O){return O<0?Math.ceil(O)||0:Math.floor(O)},p:function(O){return{M:f,y:h,w:c,d:u,D:y,h:i,m:s,s:o,ms:n,Q:g}[O]||String(O||"").toLowerCase().replace(/s$/,"")},u:function(O){return O===void 0}},ye="en",ie={};ie[ye]=D;var Ye="$isDayjsObject",nt=a(function(O){return O instanceof Gt||!(!O||!O[Ye])},"S"),ot=a(function O(w,A,_){var S;if(!w)return ye;if(typeof w=="string"){var U=w.toLowerCase();ie[U]&&(S=U),A&&(ie[U]=A,S=U);var P=w.split("-");if(!S&&P.length>1)return O(P[0])}else{var $=w.name;ie[$]=w,S=$}return!_&&S&&(ye=S),S||!_&&ye},"t"),Y=a(function(O,w){if(nt(O))return O.clone();var A=typeof w=="object"?w:{};return A.date=O,A.args=arguments,new Gt(A)},"O"),G=W;G.l=ot,G.i=nt,G.w=function(O,w){return Y(O,{locale:w.$L,utc:w.$u,x:w.$x,$offset:w.$offset})};var Gt=function(){function O(A){this.$L=ot(A.locale,null,!0),this.parse(A),this.$x=this.$x||A.x||{},this[Ye]=!0}a(O,"M");var w=O.prototype;return w.parse=function(A){this.$d=function(_){var S=_.date,U=_.utc;if(S===null)return new Date(NaN);if(G.u(S))return new Date;if(S instanceof Date)return new Date(S);if(typeof S=="string"&&!/Z$/i.test(S)){var P=S.match(M);if(P){var $=P[2]-1||0,Z=(P[7]||"0").substring(0,3);return U?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(S)}(A),this.init()},w.init=function(){var A=this.$d;this.$y=A.getFullYear(),this.$M=A.getMonth(),this.$D=A.getDate(),this.$W=A.getDay(),this.$H=A.getHours(),this.$m=A.getMinutes(),this.$s=A.getSeconds(),this.$ms=A.getMilliseconds()},w.$utils=function(){return G},w.isValid=function(){return this.$d.toString()!==E},w.isSame=function(A,_){var S=Y(A);return this.startOf(_)<=S&&S<=this.endOf(_)},w.isAfter=function(A,_){return Y(A)<this.startOf(_)},w.isBefore=function(A,_){return this.endOf(_)<Y(A)},w.$g=function(A,_,S){return G.u(A)?this[_]:this.set(S,A)},w.unix=function(){return Math.floor(this.valueOf()/1e3)},w.valueOf=function(){return this.$d.getTime()},w.startOf=function(A,_){var S=this,U=!!G.u(_)||_,P=G.p(A),$=a(function(I,v){var q=G.w(S.$u?Date.UTC(S.$y,v,I):new Date(S.$y,v,I),S);return U?q:q.endOf(u)},"l"),Z=a(function(I,v){return G.w(S.toDate()[I].apply(S.toDate("s"),(U?[0,0,0,0]:[23,59,59,999]).slice(v)),S)},"$"),ne=this.$W,pe=this.$M,K=this.$D,Fe="set"+(this.$u?"UTC":"");switch(P){case h:return U?$(1,0):$(31,11);case f:return U?$(1,pe):$(0,pe+1);case c:var R=this.$locale().weekStart||0,b=(ne<R?ne+7:ne)-R;return $(U?K-b:K+(6-b),pe);case u:case y: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()}},w.endOf=function(A){return this.startOf(A,!1)},w.$set=function(A,_){var S,U=G.p(A),P="set"+(this.$u?"UTC":""),$=(S={},S[u]=P+"Date",S[y]=P+"Date",S[f]=P+"Month",S[h]=P+"FullYear",S[i]=P+"Hours",S[s]=P+"Minutes",S[o]=P+"Seconds",S[n]=P+"Milliseconds",S)[U],Z=U===u?this.$D+(_-this.$W):_;if(U===f||U===h){var ne=this.clone().set(y,1);ne.$d[$](Z),ne.init(),this.$d=ne.set(y,Math.min(this.$D,ne.daysInMonth())).$d}else $&&this.$d[$](Z);return this.init(),this},w.set=function(A,_){return this.clone().$set(A,_)},w.get=function(A){return this[G.p(A)]()},w.add=function(A,_){var S,U=this;A=Number(A);var P=G.p(_),$=a(function(pe){var K=Y(U);return G.w(K.date(K.date()+Math.round(pe*A)),U)},"y");if(P===f)return this.set(f,this.$M+A);if(P===h)return this.set(h,this.$y+A);if(P===u)return $(1);if(P===c)return $(7);var Z=(S={},S[s]=t,S[i]=r,S[o]=e,S)[P]||1,ne=this.$d.getTime()+A*Z;return G.w(ne,this)},w.subtract=function(A,_){return this.add(-1*A,_)},w.format=function(A){var _=this,S=this.$locale();if(!this.isValid())return S.invalidDate||E;var U=A||"YYYY-MM-DDTHH:mm:ssZ",P=G.z(this),$=this.$H,Z=this.$m,ne=this.$M,pe=S.weekdays,K=S.months,Fe=S.meridiem,R=a(function(v,q,oe,Re){return v&&(v[q]||v(_,U))||oe[q].slice(0,Re)},"h"),b=a(function(v){return G.s($%12||12,v,"0")},"d"),I=Fe||function(v,q,oe){var Re=v<12?"AM":"PM";return oe?Re.toLowerCase():Re};return U.replace(k,function(v,q){return q||function(oe){switch(oe){case"YY":return String(_.$y).slice(-2);case"YYYY":return G.s(_.$y,4,"0");case"M":return ne+1;case"MM":return G.s(ne+1,2,"0");case"MMM":return R(S.monthsShort,ne,K,3);case"MMMM":return R(K,ne);case"D":return _.$D;case"DD":return G.s(_.$D,2,"0");case"d":return String(_.$W);case"dd":return R(S.weekdaysMin,_.$W,pe,2);case"ddd":return R(S.weekdaysShort,_.$W,pe,3);case"dddd":return pe[_.$W];case"H":return String($);case"HH":return G.s($,2,"0");case"h":return b(1);case"hh":return b(2);case"a":return I($,Z,!0);case"A":return I($,Z,!1);case"m":return String(Z);case"mm":return G.s(Z,2,"0");case"s":return String(_.$s);case"ss":return G.s(_.$s,2,"0");case"SSS":return G.s(_.$ms,3,"0");case"Z":return P}return null}(v)||P.replace(":","")})},w.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},w.diff=function(A,_,S){var U,P=this,$=G.p(_),Z=Y(A),ne=(Z.utcOffset()-this.utcOffset())*t,pe=this-Z,K=a(function(){return G.m(P,Z)},"D");switch($){case h:U=K()/12;break;case f:U=K();break;case g:U=K()/3;break;case c:U=(pe-ne)/6048e5;break;case u:U=(pe-ne)/864e5;break;case i:U=pe/r;break;case s:U=pe/t;break;case o:U=pe/e;break;default:U=pe}return S?U:G.a(U)},w.daysInMonth=function(){return this.endOf(f).$D},w.$locale=function(){return ie[this.$L]},w.locale=function(A,_){if(!A)return this.$L;var S=this.clone(),U=ot(A,_,!0);return U&&(S.$L=U),S},w.clone=function(){return G.w(this.$d,this)},w.toDate=function(){return new Date(this.valueOf())},w.toJSON=function(){return this.isValid()?this.toISOString():null},w.toISOString=function(){return this.$d.toISOString()},w.toString=function(){return this.$d.toUTCString()},O}(),Ya=Gt.prototype;return Y.prototype=Ya,[["$ms",n],["$s",o],["$m",s],["$H",i],["$W",u],["$M",f],["$y",h],["$D",y]].forEach(function(O){Ya[O[1]]=function(w){return this.$g(w,O[0],O[1])}}),Y.extend=function(O,w){return O.$i||(O(w,Gt,Y),O.$i=!0),Y},Y.locale=ot,Y.isDayjs=nt,Y.unix=function(O){return Y(1e3*O)},Y.en=ie[ye],Y.Ls=ie,Y.p={},Y})});var jb=p((O4,$b)=>{"use strict";function eB(e,t,r,n){for(var o=-1,s=e==null?0:e.length;++o<s;){var i=e[o];t(n,i,r(i),e)}return n}a(eB,"arrayAggregator");$b.exports=eB});var Kb=p((P4,Qb)=>{"use strict";var tB=us(),rB=Or();function aB(e,t){return e&&tB(e,t,rB)}a(aB,"baseForOwn");Qb.exports=aB});var Hb=p((q4,Vb)=>{"use strict";var nB=mr();function oB(e,t){return function(r,n){if(r==null)return r;if(!nB(r))return e(r,n);for(var o=r.length,s=t?o:-1,i=Object(r);(t?s--:++s<o)&&n(i[s],s,i)!==!1;);return r}}a(oB,"createBaseEach");Vb.exports=oB});var zb=p((k4,Yb)=>{"use strict";var sB=Kb(),iB=Hb(),uB=iB(sB);Yb.exports=uB});var Xb=p((M4,Jb)=>{"use strict";var cB=zb();function pB(e,t,r,n){return cB(e,function(o,s,i){t(n,o,r(o),i)}),n}a(pB,"baseAggregator");Jb.exports=pB});var eI=p((B4,Zb)=>{"use strict";var lB=jb(),dB=Xb(),fB=su(),mB=Ee();function gB(e,t){return function(r,n){var o=mB(r)?lB:dB,s=t?t():{};return o(r,e,fB(n,2),s)}}a(gB,"createAggregator");Zb.exports=gB});var rI=p((F4,tI)=>{"use strict";var hB=ba(),yB=eI(),AB=Object.prototype,bB=AB.hasOwnProperty,IB=yB(function(e,t,r){bB.call(e,r)?e[r].push(t):hB(e,r,[t])});tI.exports=IB});var WB={};x(WB,{Method:()=>Ro,ai:()=>Hu,api:()=>wu,auditLogs:()=>kt,automations:()=>Qn,backups:()=>Ne,branding:()=>Un,constants:()=>na,environmentVariables:()=>mt,features:()=>Ze,groups:()=>re,init:()=>Im,licensing:()=>ct,logger:()=>Zt,mappers:()=>ce,middleware:()=>hu,plugins:()=>Kn,publicApi:()=>Yn,quotas:()=>ft,scimGroups:()=>qr,scimUsers:()=>qe,sdk:()=>pu,users:()=>Wn,utils:()=>cr});module.exports=MI(WB);var Ro=(s=>(s.POST="POST",s.GET="GET",s.PATCH="PATCH",s.DELETE="DELETE",s.PUT="PUT",s))(Ro||{});var pu={};x(pu,{ai:()=>Ms,auditLogs:()=>kt,automations:()=>Qn,backups:()=>Ne,branding:()=>Un,environmentVariables:()=>mt,features:()=>Ze,groups:()=>re,init:()=>Im,licensing:()=>ct,logger:()=>Zt,plugins:()=>Kn,publicApi:()=>Yn,quotas:()=>ft,scimGroups:()=>qr,scimUsers:()=>qe,users:()=>Wn,utils:()=>cr});var Un={};x(Un,{getBrandingConfig:()=>Ox});var Ze={};x(Ze,{checkBackups:()=>xe,checkFeature:()=>Ln,checkFeatures:()=>Os,checkSCIM:()=>Ds,isAppBuildersEnabled:()=>Us,isAuditLogsEnabled:()=>Pn,isBackupsEnabled:()=>Ls,isBrandingEnabled:()=>Ps,isEnforceableSSO:()=>Uf,isExpandedPublicApiEnabled:()=>It,isPWAEnabled:()=>Tx,isPkceOidcEnabled:()=>Rx,isRecaptchaEnabled:()=>Ex,isSSOEnforced:()=>vx,isSyncAutomationsEnabled:()=>Sx,isTriggerAutomationRunEnabled:()=>wx,isUserGroupsEnabled:()=>qs,isViewPermissionEnabled:()=>_x,isViewReadonlyColumnsEnabled:()=>xx});var bt=require("@budibase/backend-core"),Ae=require("@budibase/types");var ct={};x(ct,{cache:()=>Je,client:()=>Lt,features:()=>dn,getFreeLicense:()=>_s,getLicense:()=>Rs,getLicenseFromKey:()=>vs,keys:()=>Cs,offline:()=>xn,quotas:()=>fn});var Je={};x(Je,{getCachedLicense:()=>Lf,invalidate:()=>Pf,refresh:()=>Kt});var za=require("@budibase/backend-core");var Mr,NI=a(async()=>{Mr=await za.RedisClient.init(za.redis.utils.Databases.LICENSES)},"init"),BI=a(async()=>{Mr&&await Mr.finish()},"shutdown");process.on("exit",async()=>{await BI()});var vo=a(async()=>(Mr||await NI(),Mr),"getClient");var Lt={};x(Lt,{activateLicenseKey:()=>Wo,getLicense:()=>ir,getLicenseFromKey:()=>Fo,triggerQuota:()=>RS});var Ju=F(require("node-fetch"));var Xu=require("@budibase/backend-core"),_o=require("dd-trace"),Zu=require("dd-trace/ext/formats");var xo=class{constructor(t){this.apiCall=t=>async(r="",n={})=>await _o.tracer.trace(`api.${t}`,async o=>{o.setTag("url",r);let s={...n.headers};s["Content-Type"]||(s["Content-Type"]="application/json",s.Accept="application/json");let i=s["Content-Type"]==="application/json";Xu.logging.correlation.setHeader(s),_o.tracer.inject(o,Zu.HTTP_HEADERS,s);let u={method:t,body:i?JSON.stringify(n.body):n.body,headers:s,credentials:"include"};return(0,Ju.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{a(this,"API")}},Co=xo;var ec=require("@budibase/backend-core");var{getProxyDispatcher:FI}=ec.utils;async function Ja(e,t,r){let n=FI({rejectUnauthorized:r?.rejectUnauthorized});return n?(console.log("[proxyFetch] Using proxy for request",{url:typeof e=="string"?e:e instanceof URL?e.href:e.url,hasDispatcher:!0,rejectUnauthorized:r?.rejectUnauthorized}),fetch(e,{...t,dispatcher:n})):(console.log("[proxyFetch] No proxy configured, using direct fetch",{url:typeof e=="string"?e:e instanceof URL?e.href:e.url}),fetch(e,t))}a(Ja,"proxyFetch");var cn=require("@budibase/types"),B=require("@budibase/backend-core");var it={};x(it,{bustCache:()=>Po,getCurrentUsageValues:()=>uc,getQuotaUsage:()=>Ft,setAllUsage:()=>qo,setAppUsageValue:()=>Uo,setUsage:()=>oc,setUsagePerApp:()=>sc,utils:()=>Fr});var Le=require("@budibase/backend-core"),ve=require("@budibase/types");var Fr={};x(Fr,{generateBaseQuotaUsage:()=>Za,generateNewMonthlyQuotas:()=>Gr,generateNewQuotaUsage:()=>Lo,getBreakdownName:()=>tn,getCurrentMonthString:()=>xt,getQuotaDocId:()=>Br,setCurrentMonth:()=>en,setQuotaReset:()=>Oo});var Nr=require("@budibase/backend-core"),Xa=require("@budibase/shared-core"),le=require("@budibase/types");var Br=a(()=>Nr.context.isSelfHostUsingCloud()?`quota_usage_${Nr.context.getTenantId()}`:Nr.db.StaticDatabases.GLOBAL.docs.usageQuota,"getQuotaDocId"),tc=a(()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},"getNextQuotaReset"),Oo=a(e=>{e.quotaReset=tc()},"setQuotaReset"),xt=a(()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},"getCurrentMonthString"),Za=a(()=>({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:{[xt()]:Gr()}}),"generateBaseQuotaUsage"),Lo=a(()=>{let e={_id:Br(),quotaReset:tc(),...Za(),apps:{}};return en(e),e},"generateNewQuotaUsage"),Gr=a(()=>({[le.MonthlyQuotaName.QUERIES]:0,[le.MonthlyQuotaName.AUTOMATIONS]:0,[le.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,[le.MonthlyQuotaName.ACTIONS]:0,triggers:{}}),"generateNewMonthlyQuotas"),en=a(e=>{let t=xt();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=Gr()),e.monthly.current=e.monthly[t]},"setCurrentMonth"),tn=a((e,t)=>{if(!(!t||!e))switch(e){case le.MonthlyQuotaName.AUTOMATIONS:return le.BreakdownQuotaName.AUTOMATIONS;case le.MonthlyQuotaName.QUERIES:return(0,Xa.isTableIdOrExternalTableId)(t)?le.BreakdownQuotaName.ROW_QUERIES:(0,Xa.isDatasourceOrDatasourcePlusId)(t)?le.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}},"getBreakdownName");var rc=Le.Duration.fromSeconds(60).toMs(),{Writethrough:ac}=Le.cache.writethrough;function WI(e){return delete e.usageLimits,delete e.usageQuota.automationRuns,delete e.usageQuota.emails,delete e.usageQuota.storage,delete e.usageQuota.views,delete e.usageQuota.publishedApps,delete e.usageQuota.developers,e}a(WI,"clearDeprecated");var rn=a(()=>Le.tenancy.isSelfHostUsingCloud()?new ac(Le.tenancy.getSelfHostCloudDB(),rc):new ac(Le.tenancy.getGlobalDB(),rc),"getDB");async function Po(e=0){let r=rn(),n=Br(),o=await r.tryGet(n);o&&o._rev&&await r.remove(n,o._rev).catch(async s=>{if(e<1)return await Po(e+1);throw s})}a(Po,"bustCache");var Ft=a(async()=>{let e=rn(),t=await e.tryGet(Br());if(!t){t=Lo();let{rev:r}=await e.put(t);t._rev=r}return en(t),Oo(t),WI(t)},"getQuotaUsage"),oc=a(async(e,t,r)=>qo({name:t,type:r,values:{total:e}}),"setUsage"),sc=a(async(e,t,r)=>{let n=rn(),o=await Ft(),s=Object.values(e).reduce((u,c)=>u+c,0);for(let[u,c]of Object.entries(e))o=ic(o,t,r,{total:s,app:c},{appId:u});let i=await n.put(o);return o._rev=i.rev,o},"setUsagePerApp"),$I=a((e,t,r,n)=>{let o=tn(t,r);if(!o||!n?.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]=n.breakdown,e},"setBreakdown"),Uo=a((e,t,r,n={},o)=>{let s;try{s=Le.db.getProdWorkspaceID(n?.appId||Le.context.getWorkspaceId())}catch{}if(!s||!o.app||!ve.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[s]||(e.apps={...e.apps,[s]:Za()});let i=e.apps[s];switch(r){case ve.QuotaUsageType.STATIC:i.usageQuota[t]=o.app;break;case ve.QuotaUsageType.MONTHLY:{let u=xt(),c=t,f=i.monthly[u];f||(i.monthly[u]=Gr(),f=i.monthly[u]),f[c]=o.app,ve.BREAKDOWN_QUOTA_NAMES.includes(c)&&n?.id&&(f=$I(f,c,n.id,o));break}}return e},"setAppUsageValue"),nc=a((e,t,r,n)=>{if(!ve.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 ve.QuotaUsageType.STATIC:if(s.usageQuota?.[r])return{app:s.usageQuota[r]};break;case ve.QuotaUsageType.MONTHLY:{let i=xt(),u=r;if(!s.monthly?.[i]?.[u])break;let c=s.monthly[i],f=c[u],g,h=tn(u,n);return h&&n&&c.breakdown?.[h]&&(g=c.breakdown[h]?.values[n]),{app:f,breakdown:g||0}}}return{app:0}},"getAppUsageValue"),jI=a((e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},"setStaticTriggers"),QI=a((e,t,r,n)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),n&&(r.monthly[t].triggers[e]=n)},"setMonthlyTriggers"),ic=a((e,t,r,n,o={})=>{if(r===ve.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=n.total,jI(t,e,n.triggers);else if(r===ve.QuotaUsageType.MONTHLY){t=t;let s=xt();e.monthly[s][t]=n.total,QI(t,s,e,n.triggers)}else throw new Error(`Invalid usage type: ${r}`);return Uo(e,t,r,o,n)},"coreUsageUpdate"),qo=a(async e=>{let t=Array.isArray(e)?e:[e],r=rn(),n=await Ft();for(let s of t)n=ic(n,s.name,s.type,s.values,s.opts);let o=await r.put(n,0);return n._rev=o.rev,n},"setAllUsage"),uc=a(async(e,t,r)=>{let n=await Ft(),o=0,s={};switch(e){case ve.QuotaUsageType.STATIC:if(n.usageQuota[t]){let i=t;o=n.usageQuota[i],s=nc(n,e,t,r)}break;case ve.QuotaUsageType.MONTHLY:{let i=xt(),u=t;n.monthly[i][u]&&(o=n.monthly[i][u],s=nc(n,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return ve.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={};x($e,{destroy:()=>HI,get:()=>Do,save:()=>VI});var Ct=require("@budibase/backend-core");var KI=a(()=>({_id:Ct.StaticDatabases.GLOBAL.docs.licenseInfo}),"newLicenseInfo"),VI=a(async e=>{let t=await Do();t={...t,...e};let n=await Ct.tenancy.getGlobalDB().put(t);return t._rev=n.rev,t},"save"),Do=a(async()=>{let e=Ct.tenancy.getGlobalDB();try{return await e.get(Ct.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return KI();throw t}},"get"),HI=a(async()=>{let e=Ct.tenancy.getGlobalDB(),t=await Do();t&&t._rev&&await e.remove(Ct.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)},"destroy");var z={};x(z,{bulkSave:()=>sS,destroy:()=>iS,fetch:()=>rS,generateUserGroupID:()=>eS,get:()=>aS,getBulk:()=>nS,getByName:()=>ko,getGroupUsers:()=>nn,getGroupUsersParams:()=>fc,getUserGroupsParams:()=>dc,save:()=>oS});var j=require("@budibase/backend-core");var ze=require("@budibase/types"),nr=require("@budibase/backend-core");async function cc(){let e=nr.sql.designDoc.base("type");e.sql.tables={[ze.AUDIT_LOG_TYPE]:{fields:{appId:ze.SQLiteType.TEXT,event:ze.SQLiteType.TEXT,userId:ze.SQLiteType.TEXT,timestamp:ze.SQLiteType.TEXT,metadata:ze.SQLiteType.TEXT,name:ze.SQLiteType.TEXT,type:ze.SQLiteType.TEXT,fallback:ze.SQLiteType.TEXT}}};let t=nr.context.getAuditLogsDB(),r;try{r=await t.get(nr.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(n){if(n.status===404)r=e;else throw n}await t.put(r)}a(cc,"createAuditLogDesignDocSQL");var an=require("@budibase/backend-core");var{ViewName:YI,SEPARATOR:zI,DocumentType:JI,createView:XI}=an.db,ZI=JI.USER+zI;async function pc(){let e=an.tenancy.getGlobalDB(),t=`function(doc) {
|
|
4
|
+
if (doc._id.startsWith("${ZI}") && Array.isArray(doc.userGroups)) {
|
|
5
5
|
for (let groupId of doc.userGroups) {
|
|
6
6
|
emit("g_" + groupId, { email: doc.email, userId: doc._id })
|
|
7
7
|
emit("e_" + groupId + doc.email, { email: doc.email, userId: doc._id })
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
|
-
}`;await
|
|
11
|
-
if (doc._id.startsWith("${
|
|
10
|
+
}`;await XI(e,t,YI.USER_BY_GROUP)}a(pc,"createGroupUserLookupView");var lc=`${j.DocumentType.GROUP}${j.SEPARATOR}`,Wr=a(async()=>(await j.db.getAllWorkspaces({dev:!0,efficient:!0,idsOnly:!0})).map(t=>j.db.getProdWorkspaceID(t)),"getAppIDs");function dc(e,t={}){e||(e="");let r=e?.startsWith(j.DocumentType.GROUP)?"":lc;return{...t,startkey:`${r}${e}`,endkey:`${r}${e}${j.UNICODE_MAX}`}}a(dc,"getUserGroupsParams");function fc(e,t={}){e||(e="");let{emailSearch:r,bookmark:n,...o}=t;return r?{...o,startkey:`e_${e}${n||r}`,endkey:`e_${e}${r}${j.UNICODE_MAX}`}:{...t,startkey:`g_${e}`,endkey:`g_${e}${j.UNICODE_MAX}`,startkey_docid:n}}a(fc,"getGroupUsersParams");function eS(){return`${lc}${j.utils.newid()}`}a(eS,"generateUserGroupID");async function nn(e,t){let r=j.tenancy.getGlobalDB();return(await j.db.queryView(j.db.ViewName.USER_BY_GROUP,fc(e,t),r,pc,{arrayResponse:!0})).map(o=>({_id:o.userId,email:o.email}))||[]}a(nn,"getGroupUsers");async function $r(e,t){return e.users=await nn(e._id),e.roles&&(e.roles=Object.fromEntries(Object.entries(e.roles).filter(([r])=>t.includes(r)))),e}a($r,"enrichGroup");async function tS(e){let r=(await $r(e,await Wr())).users?.map(s=>s._id),n=await j.users.bulkGetGlobalUsersById(r),o=[];for(let s of n){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)}a(tS,"cleanupUsers");async function mc(){return(await j.tenancy.getGlobalDB().allDocs(dc(null,{include_docs:!0}))).rows.map(t=>t.doc)}a(mc,"getAllGroupDocuments");async function rS(){let[e,t]=await Promise.all([mc(),Wr()]),r=[];for(let n of e)r.push($r(n,t));return await Promise.all(r)}a(rS,"fetch");async function aS(e){let t=j.tenancy.getGlobalDB(),[r,n]=await Promise.all([t.get(e),Wr()]);return await $r(r,n)}a(aS,"get");async function nS(e,t={enriched:!0}){let r=j.tenancy.getGlobalDB(),[n,o]=await Promise.all([r.getMultiple(e,{allowMissing:!0}),Wr()]);if(t?.enriched){let s=[];for(let i of n)s.push($r(i,o));return await Promise.all(s)}else return n}a(nS,"getBulk");async function oS(e){return await j.tenancy.getGlobalDB().put(e)}a(oS,"save");async function sS(e){return await j.tenancy.getGlobalDB().bulkDocs(e)}a(sS,"bulkSave");async function iS(e,t){let r=j.tenancy.getGlobalDB(),n=await r.get(e),o=await r.remove(e,t);return await tS(n),o}a(iS,"destroy");async function ko(e){let t=e.toLowerCase(),[r,n]=await Promise.all([mc(),Wr()]),o=r.find(s=>s.name.toLowerCase()===t);if(o)return await $r(o,n)}a(ko,"getByName");var je={};x(je,{deleteAppBackupMetadata:()=>IS,fetchAppBackups:()=>yS,generateAppBackupID:()=>xc,getAppBackupMetadata:()=>SS,oldestBackupDate:()=>vc,storeAppBackupMetadata:()=>AS,updateAppBackupMetadata:()=>bS});var te=require("@budibase/backend-core"),Rc=require("@budibase/types");var na={};x(na,{GENERIC_PAGE_SIZE:()=>ut,auditLogs:()=>or,licenses:()=>De,quotas:()=>At,versions:()=>aa});var De={};x(De,{CLOUD_FREE_LICENSE:()=>cS,SELF_FREE_LICENSE:()=>Mo,UNLIMITED:()=>ee,UNLIMITED_LICENSE:()=>pS});var Ot=require("@budibase/types");var At={};x(At,{UNLIMITED:()=>uS,actions:()=>Zr,appBackupRetentionDays:()=>ta,apps:()=>Qr,automationLogRetentionDays:()=>ea,automations:()=>Jr,budibaseAICredits:()=>Xr,creators:()=>Vr,customAIConfigurations:()=>ra,plugins:()=>Yr,queries:()=>zr,rows:()=>jr,userGroups:()=>Hr,users:()=>Kr});var Te=require("@budibase/types");var uS=-1,jr=a(e=>({[Te.StaticQuotaName.ROWS]:{name:"Rows",value:e,triggers:[90,100]}}),"rows"),Qr=a(e=>({[Te.StaticQuotaName.WORKSPACES]:{name:"Workspaces",value:e,triggers:[100]}}),"apps"),Kr=a(e=>({[Te.StaticQuotaName.USERS]:{name:"Users",value:e,triggers:[80,100]}}),"users"),Vr=a(e=>({[Te.StaticQuotaName.CREATORS]:{name:"Creators",value:e,triggers:[]}}),"creators"),Hr=a(e=>({[Te.StaticQuotaName.USER_GROUPS]:{name:"User Groups",value:e,triggers:[80,100]}}),"userGroups"),Yr=a(e=>({[Te.StaticQuotaName.PLUGINS]:{name:"Plugins",value:e,triggers:[90,100]}}),"plugins"),zr=a(e=>({[Te.MonthlyQuotaName.QUERIES]:{name:"Queries",value:e,triggers:[]}}),"queries"),Jr=a(e=>({[Te.MonthlyQuotaName.AUTOMATIONS]:{name:"Automations",value:e,triggers:[80,90,100]}}),"automations"),Xr=a(e=>({[Te.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:{name:"Budibase AI Credits",value:e,triggers:[80,90,100]}}),"budibaseAICredits"),Zr=a(e=>({[Te.MonthlyQuotaName.ACTIONS]:{name:"Actions",value:e,triggers:[80,90,100]}}),"actions"),ea=a(e=>({[Te.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS]:{name:"Automation Logs",value:e,triggers:[]}}),"automationLogRetentionDays"),ta=a(e=>({[Te.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS]:{name:"App Backups",value:e,triggers:[]}}),"appBackupRetentionDays"),ra=a(e=>({[Te.StaticQuotaName.AI_CUSTOM_CONFIGS]:{name:"Custom AI Configuration",value:e,triggers:[]}}),"customAIConfigurations");var ee=-1,cS={features:[],quotas:{usage:{monthly:{...zr(ee),...Jr(200),...Xr(5e4),...Zr(ee)},static:{...Qr(ee),...jr(2e3),...Kr(5),...Vr(5),...Hr(0),...Yr(10),...ra(0)}},constant:{...ea(1),...ta(0)}},plan:{type:Ot.PlanType.FREE,usesInvoicing:!1,model:Ot.PlanModel.PER_USER}},Mo={features:[],quotas:{usage:{monthly:{...zr(ee),...Jr(ee),...Xr(5e4),...Zr(ee)},static:{...jr(ee),...Qr(ee),...Kr(20),...Vr(ee),...Hr(0),...Yr(10),...ra(0)}},constant:{...ea(1),...ta(0)}},plan:{type:Ot.PlanType.FREE,usesInvoicing:!1,model:Ot.PlanModel.PER_USER}},pS={features:[],quotas:{usage:{monthly:{...zr(ee),...Jr(ee),...Xr(ee),...Zr(ee)},static:{...Qr(ee),...jr(ee),...Kr(ee),...Vr(ee),...Hr(ee),...Yr(ee),...ra(ee)}},constant:{...ea(ee),...ta(ee)}},plan:{type:Ot.PlanType.FREE,usesInvoicing:!1,model:Ot.PlanModel.PER_USER}};var aa={};x(aa,{getLicenseVersion:()=>lS,getProVersion:()=>hc});var Wt=require("@budibase/backend-core"),on=F(require("fs")),gc=F(require("path"));var lS=a(()=>{if(Wt.env.isDev()){let e="dev-version.txt",t=gc.default.join(Wt.objectStore.budibaseTempDir(),e);if(on.default.existsSync(t))return on.default.readFileSync(t,"utf8");{let r=Wt.utils.newid();return on.default.writeFileSync(t,r),r}}else return hc()},"getLicenseVersion"),hc=a(()=>{let e=Wt.env.VERSION;if(!e)throw new Error("No budibase pro version was specified");return e},"getProVersion");var or={};x(or,{searchTable:()=>dS});var $t=require("@budibase/types"),yc=require("@budibase/backend-core");function dS(){return{type:"table",sourceType:$t.TableSourceType.INTERNAL,name:$t.AUDIT_LOG_TYPE,sourceId:yc.SQS_DATASOURCE_INTERNAL,primary:["_id"],schema:{metadata:{name:"metadata",type:$t.FieldType.JSON},fallback:{name:"fallback",type:$t.FieldType.JSON}}}}a(dS,"searchTable");var ut=9;function oa(e,t){let r=e.rows.map(o=>o.doc?o.doc:o);if(!t?.paginate)return{data:r,hasNextPage:!1};let n=r.length>t?.pageSize;return{data:r.slice(0,t?.pageSize),hasNextPage:n,nextPage:n?e.rows[t?.pageSize]?.key:void 0}}a(oa,"pagination");var Ac=require("@budibase/types");var fS=new Date(864e13).toISOString(),mS=1e3*60*60*24;async function sn(e){let r=(await Je.getCachedLicense()).quotas?.[Ac.QuotaType.CONSTANT]?.[e]?.value||0;return r===De.UNLIMITED?new Date(fS).toISOString():new Date(new Date().getTime()-mS*r).toISOString()}a(sn,"getOldestRetentionDate");var sr=require("@budibase/backend-core");var{ViewName:Ic,AutomationViewMode:No,SEPARATOR:pt,DocumentType:Sc,createView:wc}=sr.db,gS=Sc.AUTOMATION_LOG+pt,bc=Sc.APP_BACKUP+pt;async function Tc(){let e=sr.context.getProdWorkspaceDB(),t=`function(doc) {
|
|
11
|
+
if (doc._id.startsWith("${gS}")) {
|
|
12
12
|
let autoId = doc.automationId + "${pt}"
|
|
13
13
|
let status = doc.status + "${pt}"
|
|
14
14
|
let autoKey = "${No.AUTOMATION}${pt}" + autoId + doc.createdAt
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
full += doc.type.toLowerCase() + "${pt}"
|
|
26
26
|
emit("${bc}" + full + doc.timestamp)
|
|
27
27
|
}
|
|
28
|
-
}`;await wc(e,t,Ic.WORKSPACE_BACKUP_BY_TRIGGER)}a(Ec,"createAppBackupTriggerView");async function vc(){return sn(Rc.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS)}a(vc,"oldestBackupDate");var Bo=`${te.db.DocumentType.APP_BACKUP}${te.db.SEPARATOR}`;async function
|
|
28
|
+
}`;await wc(e,t,Ic.WORKSPACE_BACKUP_BY_TRIGGER)}a(Ec,"createAppBackupTriggerView");async function vc(){return sn(Rc.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS)}a(vc,"oldestBackupDate");var Bo=`${te.db.DocumentType.APP_BACKUP}${te.db.SEPARATOR}`;async function hS(e,t,r={}){let n=await vc(),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<n)&&(t.startDate=n),t.startDate&&(i+=`${te.db.SEPARATOR}${t.startDate}`),t.endDate&&(s+=`${te.db.SEPARATOR}${t.endDate}`),{...r,descending:!0,startkey:`${Bo}${s}${te.db.UNICODE_MAX}`,endkey:`${Bo}${i}`}}a(hS,"getAppBackupParams");async function _c(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 Ec(),_c(e,t);throw r}}a(_c,"getAppBackupsByTrigger");function xc(e,t){return`${Bo}${e}${te.db.SEPARATOR}${t}`}a(xc,"generateAppBackupID");async function yS(e,t={}){let r=te.tenancy.getGlobalDB(),n,o=t.limit||9,s=await hS(e,t,{include_docs:!0,limit:o+1});t.page&&(s.startkey=t.page),!t.trigger||!t.type?n=await r.allDocs(s):n=await _c(r,s);let i=oa(n,{paginate:t.paginate,pageSize:o}),u=[...new Set(i.data.filter(f=>f.createdBy).map(f=>f.createdBy))],c=await te.users.bulkGetGlobalUsersById(u,{cleanup:!0});for(let f of c)for(let g of i.data)f?._id===g.createdBy&&(g.createdBy=f);return i}a(yS,"fetchAppBackups");async function AS(e,t={}){let r=te.tenancy.getGlobalDB(),n=te.db.getProdWorkspaceID(e.appId),o=xc(n,e.timestamp),s={...e,_id:o,appId:n,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)}a(AS,"storeAppBackupMetadata");async function bS(e,t){let r=te.tenancy.getGlobalDB(),n=await r.get(e);return n.name=t,await r.put(n)}a(bS,"updateAppBackupMetadata");async function IS(e){let t=te.tenancy.getGlobalDB(),r=await t.get(e);await t.remove(r._id,r._rev)}a(IS,"deleteAppBackupMetadata");async function SS(e){return await te.tenancy.getGlobalDB().get(e)}a(SS,"getAppBackupMetadata");var jt={};x(jt,{get:()=>TS,getCacheEnvVarID:()=>Lc,getEnvVarID:()=>un,update:()=>ES});var Xe=require("@budibase/backend-core"),Oc=F(require("lru-cache"));var wS=1e3,Cc=new Oc.default({max:wS});function un(){return Xe.StaticDatabases.GLOBAL.docs.environmentVariables}a(un,"getEnvVarID");function Lc(e){return`${Xe.tenancy.getTenantId()}/${un()}/${e||""}`}a(Lc,"getCacheEnvVarID");async function TS(){let e=un(),t=Xe.tenancy.getGlobalDB(),r,n=!1;try{r=await t.get(e)}catch(u){if(u.status==404)n=!0;else throw u}let o=Lc(r?._rev),s=Cc.get(o);if(s)return s;let i;return!n&&r?i={...r,variables:JSON.parse(Xe.encryption.decrypt(r.variables,Xe.encryption.SecretOption.ENCRYPTION))}:i={_id:e,variables:{}},Cc.set(o,i),i}a(TS,"get");async function ES(e){let t=un();return await Xe.tenancy.getGlobalDB().put({_id:e._id||t,_rev:e._rev||void 0,variables:Xe.encryption.encrypt(JSON.stringify(e.variables),Xe.encryption.SecretOption.ENCRYPTION)})}a(ES,"update");var Go=require("dd-trace");var pn=new Co(B.env.INTERNAL_ACCOUNT_PORTAL_URL),ln=a(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"),Pc=a(async e=>{let t,r;if(B.env.SELF_HOSTED){if(t=await $e.get(),!t.licenseKey)return;r={[B.constants.Header.LICENSE_KEY]:t.licenseKey}}else{let n=B.tenancy.getTenantId();r={[B.constants.Header.API_KEY]:B.env.ACCOUNT_PORTAL_API_KEY,[B.constants.Header.TENANT_ID]:n}}return e(r)},"authAware"),Uc=a(async()=>await Go.tracer.trace("_getLicense",async()=>await Pc(async e=>{let t=await it.getQuotaUsage();if(t.usageQuota.users==null){let u=await B.users.getUserCount();console.info(`Syncing user count quota to ${u}`),t.usageQuota.users=u,await it.setUsage(u,cn.StaticQuotaName.USERS,cn.QuotaUsageType.STATIC)}let r=await B.installation.getInstallFromDB(),n=B.tenancy.getTenantId(),o=await B.events.identification.getUniqueTenantId(n),s=aa.getProVersion(),i={quotaUsage:t,tenantId:n,install:{id:r.installId,tenantId:o,version:s}};try{let u=await pn.post("/api/license",{headers:{...e},body:i});if(u.status===404||u.status===403)return;if(u.status!==200){let c=await ln(u);throw new B.HTTPError(`Error getting license: ${c}`,u.status)}return u.json()}catch(u){if(B.env.DISABLE_ACCOUNT_PORTAL)return;throw u}})),"_getLicense");B.env.isJest()&&(Uc=jest.fn());var ir=Uc;async function Fo(e){return await Go.tracer.trace("getLicenseFromKey",async t=>{let r;if(!B.env.ACCOUNT_PORTAL_API_KEY)throw new Error("getLicenseFromKey requires ACCOUNT_PORTAL_API_KEY to be set");try{r=await pn.get(`/api/license/${e}`,{headers:{[B.constants.Header.API_KEY]:B.env.ACCOUNT_PORTAL_API_KEY}})}catch(n){if(B.env.DISABLE_ACCOUNT_PORTAL)return;throw n}if(r.status===404||r.status===403){t.addTags({licenseFound:!1});return}if(r.status!==200){let n=await ln(r);throw new B.HTTPError(`Error getting license: ${n}`,r.status)}return r.json()})}a(Fo,"getLicenseFromKey");var RS=a(e=>Pc(async t=>{let r=await pn.post("/api/license/usage/triggered",{headers:{...t},body:e});if(r.status!==200){let n=await ln(r);B.logging.logAlert(`Error triggering quota usage: ${n}`)}}),"triggerQuota"),Wo=a(async e=>{let t=await B.installation.getInstall(),r={installVersion:t.version,installId:t.installId},n=await pn.post("/api/license/activate",{headers:{[B.constants.Header.LICENSE_KEY]:e},body:r});if(n.status===403)throw new B.HTTPError("Invalid license key",400);if(n.status===409)throw new B.HTTPError("License key has already been activated",409);if(n.status!==200){let o=await ln(n);throw new B.HTTPError(`Error activating license key: ${o}`,n.status)}return n.json()},"activateLicenseKey");var Es=require("@budibase/backend-core");var xn={};x(xn,{activateOfflineLicenseToken:()=>cx,deleteOfflineLicenseToken:()=>px,dev:()=>xa,enrichLicense:()=>Rf,getIdentifier:()=>Is,getIdentifierBase64:()=>lx,getIdentifierFromBase64:()=>dx,getOfflineLicense:()=>Ss,getOfflineLicenseToken:()=>wf,signing:()=>ua,verifyExpiry:()=>Tf,verifyInstallation:()=>Ef});var ua={};x(ua,{sign:()=>_S,verifyLicenseToken:()=>ia});var $o=F(require("jsonwebtoken"));var vS=`-----BEGIN PUBLIC KEY-----
|
|
29
29
|
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvz3jePLCFBXZ19c8Dpkv
|
|
30
30
|
XtSgOhKFOcvQdo/LV0KJRUzQWDPWuO4ILtBtnqhjtIzZH4CH0qCYBet5L6Qr4CM1
|
|
31
31
|
l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
|
|
@@ -34,21 +34,21 @@ l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
|
|
|
34
34
|
d/o3ZWE1TTj1zYwlCLN5qRKr3hU8nC3xEYNEbkB9SfTRaOq9Q7P8WmfLkoCPm3pR
|
|
35
35
|
mwIDAQAB
|
|
36
36
|
-----END PUBLIC KEY-----
|
|
37
|
-
`;function sa(e){return $o.default.verify(e,ES,{algorithms:["RS256"]})}a(sa,"verifyLicenseToken");function RS(e,t){return $o.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}a(RS,"sign");var dn={};x(dn,{getFeatures:()=>jo});var l=require("@budibase/types");var vS={[l.PlanType.FREE]:[...De.SELF_FREE_LICENSE.features],[l.PlanType.PREMIUM]:[l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.PDF],[l.PlanType.PREMIUM_PLUS]:[l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.BUDIBASE_AI,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.BUDIBASE_AI,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.BUDIBASE_AI,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC]},_S={[l.PlanType.FREE]:[...De.CLOUD_FREE_LICENSE.features],[l.PlanType.PREMIUM]:[l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.PDF],[l.PlanType.PREMIUM_PLUS]:[l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.BUDIBASE_AI,l.Feature.PDF],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.BUDIBASE_AI,l.Feature.PDF],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.BUDIBASE_AI,l.Feature.PDF],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC]};function jo(e,t){let r=[];function n(o){let s=o[t];if(!s)throw new Error(`Features do not exist for planType=${t} and hosting=${e}`);return s}switch(a(n,"readFeatures"),e){case l.Hosting.SELF:r=n(vS);break;case l.Hosting.CLOUD:r=n(_S);break}return r}a(jo,"getFeatures");var fn={};x(fn,{UNLIMITED:()=>m,getQuotas:()=>Qo});var J=require("@budibase/types");var d=At,qc=De,m=-1,ua=a(e=>e*1e6,"millions"),xS={[J.PlanType.FREE]:{...qc.CLOUD_FREE_LICENSE.quotas},[J.PlanType.PREMIUM]:{usage:{monthly:{...d.queries(m),...d.automations(1e3),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(1e4),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(7),...d.appBackupRetentionDays(7)}},[J.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...d.queries(m),...d.automations(5e3),...d.budibaseAICredits(ua(2)),...d.actions(m)},static:{...d.rows(25e3),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(1)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(30)}},[J.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...d.queries(m),...d.automations(5e3),...d.budibaseAICredits(ua(2)),...d.actions(m)},static:{...d.rows(25e3),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(1)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(30)}},[J.PlanType.PRO]:{usage:{monthly:{...d.queries(m),...d.automations(1e3),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(5),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(7),...d.appBackupRetentionDays(7)}},[J.PlanType.TEAM]:{usage:{monthly:{...d.queries(m),...d.automations(5e3),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(10),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(90)}},[J.PlanType.BUSINESS]:{usage:{monthly:{...d.queries(m),...d.automations(1e4),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(5e4),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(50),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(365),...d.appBackupRetentionDays(365)}},[J.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(ua(4)),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(m),...d.appBackupRetentionDays(m)}},[J.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(ua(4)),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(15),...d.appBackupRetentionDays(15)}},[J.PlanType.ENTERPRISE]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(ua(4)),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(m),...d.appBackupRetentionDays(m)}}},CS={[J.PlanType.FREE]:{...qc.SELF_FREE_LICENSE.quotas},[J.PlanType.PREMIUM]:void 0,[J.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(1)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(30)}},[J.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(1)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(30)}},[J.PlanType.PRO]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(5),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(7),...d.appBackupRetentionDays(7)}},[J.PlanType.TEAM]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(10),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(90)}},[J.PlanType.BUSINESS]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(50),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(90),...d.appBackupRetentionDays(365)}},[J.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(m),...d.appBackupRetentionDays(m)}},[J.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(15),...d.appBackupRetentionDays(15)}},[J.PlanType.ENTERPRISE]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(m),...d.appBackupRetentionDays(m)}}};function Qo(e,t){let r;function n(o){let s=o[t];if(!s)throw new Error(`Quotas do not exist for planType=${t} and hosting=${e}`);return s}switch(a(n,"readQuotas"),e){case J.Hosting.SELF:r=n(CS);break;case J.Hosting.CLOUD:r=n(xS);break}return JSON.parse(JSON.stringify(r))}a(Qo,"getQuotas");var cr={};x(cr,{encoding:()=>ur,workspaceExists:()=>OS});var Dc=require("@budibase/backend-core");async function OS(e){return(await Dc.db.getAllWorkspaces({all:!0,idsOnly:!0})).includes(e)}a(OS,"workspaceExists");var ur={};x(ur,{base64ToObject:()=>PS,objectToBase64:()=>LS});function LS(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}a(LS,"objectToBase64");function PS(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}a(PS,"base64ToObject");var bf=require("@budibase/types"),wr=require("@budibase/backend-core"),If=F(Jl()),Sf=F(bs());async function ix(e){await We.save({offlineLicenseToken:e}),await Kt()}a(ix,"activateOfflineLicenseToken");async function ux(){await We.save({offlineLicenseToken:void 0}),await Kt()}a(ux,"deleteOfflineLicenseToken");async function wf(){return(await We.get()).offlineLicenseToken}a(wf,"getOfflineLicenseToken");async function Is(){let t=(await wr.installation.getInstall()).installId,r=wr.context.getTenantId(),n=await wr.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:n}}a(Is,"getIdentifier");async function cx(){let e=await Is();return ur.objectToBase64(e)}a(cx,"getIdentifierBase64");function px(e){return ur.base64ToObject(e)}a(px,"getIdentifierFromBase64");function Tf(e){let t=Date.now(),r=new Date(e.expireAt).getTime();if(t>r)throw new Error(`Offline license has expired. expireAt=${e.expireAt}`)}a(Tf,"verifyExpiry");async function Ef(e){let t=await Is();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}a(Ef,"verifyInstallation");function Rf(e){let t=e.plan.type,r=bf.Hosting.SELF,n=jo(r,t),o=Qo(r,t);return e.features=(0,If.default)(e.features,n),e.quotas=(0,Sf.default)(e.quotas,o),e}a(Rf,"enrichLicense");async function Ss(){try{let e=await wf();if(e){let t=await sa(e);return Tf(t),await Ef(t),Rf(t)}}catch(e){console.error("Error retrieving offline license",e)}}a(Ss,"getOfflineLicense");var _a={};x(_a,{deleteDevLicense:()=>gx,getOfflineLicense:()=>fx,writeDevLicenseToDisk:()=>mx});var vf=require("@budibase/backend-core"),Ts=require("path"),_f=require("os"),Vt=F(require("fs"));var lx=vf.env.isTest()?".budibase-test":".budibase",ws=(0,Ts.join)((0,_f.tmpdir)(),lx),dx="dev_license.txt",va=(0,Ts.join)(ws,dx);if(!Vt.default.existsSync(ws))try{Vt.default.mkdirSync(ws)}catch{}function fx(){try{if(Vt.default.existsSync(va)){let e=Vt.default.readFileSync(va,{encoding:"utf-8"});return sa(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}a(fx,"getOfflineLicense");function mx(e){console.log(`Writing license to: ${va}`),Vt.default.writeFileSync(va,e,{encoding:"utf-8"})}a(mx,"writeDevLicenseToDisk");function gx(){Vt.default.rmSync(va,{force:!0})}a(gx,"deleteDevLicense");var xf=require("dd-trace");var Rs=a(async()=>await xf.tracer.trace("getLicense",async e=>{if(Es.env.OFFLINE_MODE)return e.addTags({offline:!0}),Ss();let t=await ir();return t||(e.addTags({offlineFallback:!0}),t=_a.getOfflineLicense()),t}),"getLicense"),vs=a(e=>Fo(e),"getLicenseFromKey"),_s=a(()=>Es.env.SELF_HOSTED?De.SELF_FREE_LICENSE:De.CLOUD_FREE_LICENSE,"getFreeLicense");var Cs={};x(Cs,{activateLicenseKey:()=>hx,deleteLicenseKey:()=>yx,getLicenseKey:()=>Cn});var xs=F(require("dd-trace"));async function hx(e){await Wo(e),await We.save({licenseKey:e}),await Kt()}a(hx,"activateLicenseKey");async function Cn(){return await xs.default.trace("getLicenseKey",async e=>{let t=await We.get();return e.addTags({licenseKey:t.licenseKey}),t.licenseKey})}a(Cn,"getLicenseKey");async function yx(){return await xs.default.trace("deleteLicenseKey",async()=>{await We.save({licenseKey:void 0}),await Kt()})}a(yx,"deleteLicenseKey");var Ht=require("@budibase/backend-core"),On=F(require("dd-trace"));var Cf=3600,Kt=a(async()=>{await Pf(),await Lf()},"refresh"),Of=a(async(e,t)=>{let{populateLicense:r=Rs,populateFreeLicense:n=_s}=t||{};return await On.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 vo(),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 On.default.trace("populateLicense",async()=>await r(i)),o.addTags({populatedLicense:!!c}),c||(c=On.default.trace("populateFreeLicense",()=>n(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:Cf}),await u.store(i,c,Cf),c)})},"_getCachedLicense");Ht.env.isJest()&&(Of=jest.fn());var Lf=Of,Pf=a(async()=>{let e=Ht.tenancy.getTenantId();await(await vo()).delete(e)},"invalidate");async function be(e,t){Array.isArray(e)||(e=[e]),t||(t=await Je.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}a(be,"areFeaturesEnabled");async function Ln(e,t){if(!await be(e,t))throw new bt.FeatureDisabledError(`${e} is not currently enabled`,e)}a(Ln,"checkFeature");async function Os(e,t){if(!await be(e,t)){let r=e.join(", ");throw new bt.FeatureDisabledError(`${r} are not currently enabled`,r)}}a(Os,"checkFeatures");function xe(e){return async(...t)=>(await Ln(Ae.Feature.WORKSPACE_BACKUPS),e(...t))}a(xe,"checkBackups");async function Ls(){return be(Ae.Feature.WORKSPACE_BACKUPS)}a(Ls,"isBackupsEnabled");async function Ps(){return be(Ae.Feature.BRANDING)}a(Ps,"isBrandingEnabled");async function Uf(){return be(Ae.Feature.ENFORCEABLE_SSO)}a(Uf,"isEnforceableSSO");async function bx(){return be(Ae.Feature.SYNC_AUTOMATIONS)}a(bx,"isSyncAutomationsEnabled");async function Ix(){return be(Ae.Feature.TRIGGER_AUTOMATION_RUN)}a(Ix,"isTriggerAutomationRunEnabled");async function Us(){return be(Ae.Feature.APP_BUILDERS)}a(Us,"isAppBuildersEnabled");async function Pn(){return be(Ae.Feature.AUDIT_LOGS)}a(Pn,"isAuditLogsEnabled");async function qs(){return be(Ae.Feature.USER_GROUPS)}a(qs,"isUserGroupsEnabled");function Sx(){return be(Ae.Feature.PWA)}a(Sx,"isPWAEnabled");function wx(){return be(Ae.Feature.RECAPTCHA)}a(wx,"isRecaptchaEnabled");var Tx=a(()=>be(Ae.Feature.PKCE_OIDC),"isPkceOidcEnabled");async function It(){return be(Ae.Feature.EXPANDED_PUBLIC_API)}a(It,"isExpandedPublicApiEnabled");async function Ex(e){if(bt.env.ENABLE_SSO_MAINTENANCE_MODE||!await Uf())return!1;let r;return e?.config?r=e.config:r=await bt.configs.getSettingsConfig(),!!r.isSSOEnforced}a(Ex,"isSSOEnforced");var Ds=a(async()=>{let e=Ae.Feature.SCIM,t=await be(e),r=await bt.configs.getSCIMConfig();if(!t||!r?.enabled)throw new bt.FeatureDisabledError(`${e} is not currently enabled`,e);return!0},"checkSCIM");async function Rx(){return be(Ae.Feature.VIEW_PERMISSIONS)}a(Rx,"isViewPermissionEnabled");async function vx(){return be(Ae.Feature.VIEW_READONLY_COLUMNS)}a(vx,"isViewReadonlyColumnsEnabled");var _x={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 xx(e){return await Ps()?{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}:_x}a(xx,"getBrandingConfig");var Ms={};x(Ms,{enrichAIConfig:()=>ks});var qf=require("@budibase/backend-core");var Cx="budibase_ai";async function ks(e){if(qf.env.SELF_HOSTED)return e;for(let t of Object.values(e.config))if(t.provider==="BudibaseAI")return e;return e.config[Cx]={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}a(ks,"enrichAIConfig");var ft={};x(ft,{addAction:()=>qx,addApp:()=>Dx,addAutomation:()=>Fx,addGroup:()=>Bs,addPlugin:()=>Fs,addRow:()=>Mx,addRows:()=>Bx,addUsers:()=>kn,bustCache:()=>Po,decrement:()=>St,decrementMany:()=>xa,getCurrentUsageValues:()=>uc,getLicensedQuota:()=>kf,getQuotaUsage:()=>Ft,increment:()=>Me,incrementBudibaseAICredits:()=>Nn,incrementMany:()=>zt,removeApp:()=>kx,removeGroup:()=>Gs,removePlugin:()=>Ws,removeRow:()=>Nx,removeRows:()=>Gx,removeUsers:()=>vr,set:()=>Ns,setAllUsage:()=>qo,setAppUsageValue:()=>Uo,setUsage:()=>oc,setUsagePerApp:()=>sc,updatePluginCount:()=>$s,updateUsage:()=>Tr,usageLimitIsExceeded:()=>Ux,utils:()=>Gr});var qn=require("@budibase/types");var et=require("@budibase/backend-core"),de=require("@budibase/types"),Yt=require("dd-trace");var Me=a(async(e,t,r)=>await Yt.tracer.trace("quotas.increment",async n=>(n.addTags({name:e,type:t}),await Df({change:1,name:e,type:t,opts:r}))),"increment"),zt=a(e=>Yt.tracer.trace("quotas.incrementMany",async()=>Df(e)),"incrementMany"),Df=a(async e=>await Yt.tracer.trace("quotas.tryIncrement",async t=>{let r=Array.isArray(e)?e:[e];t.addTags({numActions:r.length}),await Tr(r.map(o=>({usageChange:o.change,name:o.name,type:o.type,opts:{dryRun:!0,suppressErrorLog:o.opts?.suppressErrorLog,id:o.opts?.id}})));let n=[];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&&n.push(await i())});return await Tr(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}}))),n[0]}),"tryIncrement"),St=a((e,t,r={})=>Tr({usageChange:-1,name:e,type:t,opts:r}),"decrement"),xa=a(e=>{let t=Array.isArray(e)?e:[e];return Tr(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},"decrementMany"),Ns=a(async(e,t,r)=>it.setUsage(r,e,t),"set"),Ox=a((e,t,r)=>{if(e==de.QuotaUsageType.STATIC){let n=r.usageQuota.triggers;return n?n[t]||{}:{}}else{let n=it.utils.getCurrentMonthString(),o=r.monthly[n].triggers;return o?o[t]||{}:{}}},"getExistingTriggers"),Lx=a(async(e,t,r,n)=>{try{await et.locks.doWithLock({type:de.LockType.TRY_ONCE,name:de.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let o={percentage:r,name:t.name};n&&(o.resetDate=n),await Lt.triggerQuota(o)})}catch(o){et.logging.logAlert("Error triggering quota",o)}},"triggerQuota"),Px=a(async(e,t,r,n)=>{let o=await Ft(),s=e===de.QuotaUsageType.MONTHLY?o.quotaReset:void 0,i=await Ox(e,t,o),u=n.triggers,c=r/n.value*100;c>100&&(c=100);for(let[f,g]of u.entries())if(c>=g&&n.value!==At.UNLIMITED){if(!i[g]){i[g]=new Date().toISOString();let y=u[f+1]||100;(!(c>=y)||c===g)&&await Lx(t,n,c,s)}}else i[g]=void 0;return i},"checkTriggers"),Tr=a(async e=>{await Yt.tracer.trace("quotas.updateUsage",async t=>{let r=et.tenancy.getTenantId(),n=Array.isArray(e)?e:[e];t.addTags({numActions:n.length,tenantId:r});let o,s,i=[],u={},c={},f={},g={};for(let y of n)await Yt.tracer.trace("quotas.updateUsage.action",async E=>{E.addTags({actionName:y.name,actionType:y.type,actionUsageChange:y.usageChange});try{o=et.context.getWorkspaceId()}catch{}if(de.APP_QUOTA_NAMES.includes(y.name)&&!o)throw new Error("App context required for quota update");try{s=await kf(de.QuotaType.USAGE,y.name,y.type),i.push(s);let{total:k,app:D,breakdown:C}=await it.getCurrentUsageValues(y.type,y.name,y.opts?.id);k+=y.usageChange,D!=null&&(D+=y.usageChange),C!=null&&(C+=y.usageChange);let W={};if(y.opts?.dryRun||(W=await Px(y.type,y.name,k,s),g={...g,[y.name]:W}),s.value!==At.UNLIMITED&&k>s.value&&y.usageChange>0)throw new et.UsageLimitError(`Licensed ${s.name} of ${s.value} has been exceeded`,s.name);if(k=Math.max(0,k),D&&(D=Math.max(0,D)),C&&(C=Math.max(0,C),f={...f,[y.name]:C}),!y.opts?.dryRun){let ye=y.opts?.valueFn;ye&&(k=await ye(),D=k),u={...u,[y.name]:k},c={...c,[y.name]:D}}}catch(k){throw y.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${y.name}`,k),k}});let h=n.filter(y=>!y.opts?.dryRun).map(y=>({name:y.name,type:y.type,values:{total:u[y.name],app:c[y.name],breakdown:f[y.name],triggers:g[y.name]},opts:{...y.opts,tenantId:r}}));h.length>0&&await it.setAllUsage(h)})},"updateUsage"),kf=a(async(e,t,r)=>{let n=await Je.getCachedLicense();if(!n){let o=et.tenancy.getTenantId();throw new Error("License not found for tenant id "+o)}if(r&&(0,de.isStaticQuota)(e,r,t))return n.quotas[e][r][t];if(r&&(0,de.isMonthlyQuota)(e,r,t))return n.quotas[e][r][t];if((0,de.isConstantQuota)(e,t))return n.quotas[e][t];throw new Error("Invalid quota type")},"getLicensedQuota"),Ux=a(async({name:e,type:t,usageChange:r})=>{try{return await Tr({usageChange:r,name:e,type:t,opts:{dryRun:!0}}),!1}catch(n){if(n.code===de.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw n}},"usageLimitIsExceeded");var qx=a(async e=>Me(qn.MonthlyQuotaName.ACTIONS,qn.QuotaUsageType.MONTHLY,{fn:e}),"addAction");var Mf=require("@budibase/backend-core"),Er=require("@budibase/types");var Nf=a(async()=>{let e=await Mf.db.getAllWorkspaces({dev:!0});return e?e.length:0},"getDevAppsCount"),Dx=a(async(e,{appId:t}={})=>Me(Er.StaticQuotaName.WORKSPACES,Er.QuotaUsageType.STATIC,{fn:e,valueFn:Nf,id:t}),"addApp"),kx=a(async({appId:e}={})=>St(Er.StaticQuotaName.WORKSPACES,Er.QuotaUsageType.STATIC,{valueFn:Nf,id:e}),"removeApp");var lt=require("@budibase/types");var Mx=a(async(e,{tableId:t}={})=>Me(lt.StaticQuotaName.ROWS,lt.QuotaUsageType.STATIC,{fn:e,id:t}),"addRow"),Nx=a(async({tableId:e}={})=>St(lt.StaticQuotaName.ROWS,lt.QuotaUsageType.STATIC,{id:e}),"removeRow"),Bx=a(async(e,t,{tableId:r}={})=>zt({change:e,name:lt.StaticQuotaName.ROWS,type:lt.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),"addRows"),Gx=a(async(e,{tableId:t}={})=>xa({change:e,name:lt.StaticQuotaName.ROWS,type:lt.QuotaUsageType.STATIC,opts:{id:t}}),"removeRows");var Dn=require("@budibase/types");var Fx=a(async(e,{automationId:t}={})=>Me(Dn.MonthlyQuotaName.AUTOMATIONS,Dn.QuotaUsageType.MONTHLY,{fn:e,id:t}),"addAutomation");var Rr=require("@budibase/types");var Bs=a(async e=>Me(Rr.StaticQuotaName.USER_GROUPS,Rr.QuotaUsageType.STATIC,{fn:e}),"addGroup"),Gs=a(async()=>St(Rr.StaticQuotaName.USER_GROUPS,Rr.QuotaUsageType.STATIC),"removeGroup");var Dt=require("@budibase/types");var Fs=a(async e=>Me(Dt.StaticQuotaName.PLUGINS,Dt.QuotaUsageType.STATIC,{fn:e}),"addPlugin"),Ws=a(async()=>St(Dt.StaticQuotaName.PLUGINS,Dt.QuotaUsageType.STATIC),"removePlugin"),$s=a(async e=>Ns(Dt.StaticQuotaName.PLUGINS,Dt.QuotaUsageType.STATIC,e),"updatePluginCount");var dt=require("@budibase/types"),Ca=require("@budibase/backend-core");var kn=a(async(e,t,r)=>{let n=[{change:e,name:dt.StaticQuotaName.USERS,type:dt.QuotaUsageType.STATIC,opts:{fn:r,valueFn:Ca.users.getUserCount}}];t>0&&n.push({change:t,name:dt.StaticQuotaName.CREATORS,type:dt.QuotaUsageType.STATIC,opts:{valueFn:Ca.users.getCreatorCount}});let o=await zt(n);return await ir(),o},"addUsers"),vr=a(async(e,t)=>{let r=[{change:e,name:dt.StaticQuotaName.USERS,type:dt.QuotaUsageType.STATIC,opts:{valueFn:Ca.users.getUserCount}}];t>0&&r.push({change:t,name:dt.StaticQuotaName.CREATORS,type:dt.QuotaUsageType.STATIC,opts:{valueFn:Ca.users.getCreatorCount}}),await xa(r),await ir()},"removeUsers");var Mn=require("@budibase/types");var Nn=a(async e=>zt({change:e,name:Mn.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:Mn.QuotaUsageType.MONTHLY}),"incrementBudibaseAICredits");var Wn={};x(Wn,{db:()=>Qe});var Hs=require("@budibase/backend-core");var re={};x(re,{addUsers:()=>Fn,adjustGroupCreatorsQuotas:()=>Qx,cleanupApp:()=>jx,enrichUserRolesFromGroups:()=>$x,fetch:()=>Oa,get:()=>_r,getBulk:()=>Qf,getGroupBuilderAppIds:()=>jf,getGroupRoleId:()=>Wx,remove:()=>Qs,removeUsers:()=>Ks,save:()=>Gn,updateGroupApps:()=>Vs});var N=require("@budibase/backend-core");var Bf=require("@budibase/backend-core");var Bn=class extends Bf.HTTPError{static{a(this,"GroupNameUnavailableError")}constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function Wf(e,t){try{let r=[];for(let u of e)if(u.roles){let c=u.roles[N.db.getProdWorkspaceID(t)];c&&r.push(c)}let n=await Promise.all(r.map(async u=>({[u]:await N.roles.roleToNumber(u)}))),o,s,i={};n.forEach(u=>{let[c,f]=Object.entries(u)[0];i[c]={roleId:c,roleNum:f}});for(let{roleId:u,roleNum:c}of Object.values(i))(s===void 0||c>s)&&(s=c,o=u);return o}catch(r){throw N.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}a(Wf,"findHighestRole");async function $f(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await z.getBulk(e,{enriched:!1}),t}a($f,"groupList");async function jf(e,t){if(!e.userGroups)return[];let r=await $f(e.userGroups,t?.groups),n=t?.appId?N.db.getProdWorkspaceID(t?.appId):null,o=[];for(let s of r){let i=s.builder?.apps;n&&i?.includes(n)?o.push(n):n||(o=o.concat(i||[]))}return[...new Set(o)]}a(jf,"getGroupBuilderAppIds");async function Wx(e,t,r){if(!e.userGroups)return null;let n=await $f(e.userGroups,r?.groups),o=N.db.getProdWorkspaceID(t);return e.roles?.[o]?e.roles[o]:(n=n.filter(s=>s?.roles?Object.keys(s.roles).includes(o):!1),await Wf(n,t))}a(Wx,"getGroupRoleId");async function $x(e){if(!e||!e.userGroups)return e;let t=await Qf(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 N.context.doInWorkspaceContext(o,async()=>{if(e.roles[o])return;let s=await Wf(t,o);s&&(e.roles[o]=s)});let n=await jf(e,{groups:t});if(n.length&&!e.builder?.global){let o=e.builder?.apps||[];e.builder={apps:o.concat(n)}}return e}a($x,"enrichUserRolesFromGroups");async function Oa(){return await z.fetch()}a(Oa,"fetch");async function _r(e){return await z.get(e)}a(_r,"get");async function Qf(e,t={enriched:!0}){return await z.getBulk(e,t)}a(Qf,"getBulk");async function Gf(e){if(await z.getByName(e))throw new Bn(e)}a(Gf,"guardNameAvailability");async function Ff(e){let t=await z.getGroupUsers(e._id);if(!t.length)return 0;let n=await N.tenancy.getGlobalDB().getMultiple(t.map(s=>s._id));return(await N.userUtils.creatorsInList(n)).filter(s=>s).length}a(Ff,"getCreatorsCountInGroup");async function Gn(e){let t=[],r=!e._id,n=0;if(delete e.users,!e._id)e._id=z.generateUserGroupID(),await Gf(e.name),t.push(N.events.group.created(e));else{let s=await z.get(e._id);if(s.name!==e.name&&await Gf(e.name),t.push(N.events.group.updated(e)),JSON.stringify(s.roles)!==JSON.stringify(e.roles)){let i=s.users?.length||0,u=0;i>0&&(u=await Ff(s)),Object.values(e.roles).includes("CREATOR")?n=i-u:n=-i,t.push(N.events.group.permissionsEdited(e))}}await Promise.all(t);let o=a(()=>z.save(e),"saveGroup");if(r)return await Bs(o);{let s=await o();if(n>0)await kn(0,n);else if(n<0){let i=await Ff(e),u=Math.abs(n)-i;u>0&&await vr(0,u)}return s}}a(Gn,"save");async function Qs(e,t){let r;try{r=await z.get(e)}catch{throw new Error("Group not found")}let n=Object.values(r.roles||{}).includes("CREATOR"),o=a(()=>{},"recalculateCreatorsQuotasFn");if(n){let i=N.tenancy.getGlobalDB(),u=await z.getGroupUsers(e),f=(await Promise.all(u.map(E=>i.get(E._id)))).map(E=>({...E,userGroups:E.userGroups.filter(M=>M!==e)})),h=(await N.userUtils.creatorsInList(f)).filter(E=>E).length,y=u.length-h;y&&(o=a(()=>vr(0,y),"recalculateCreatorsQuotasFn"))}let s=await z.destroy(e,t);return await N.events.group.deleted(r),await Gs(),await o(),s}a(Qs,"remove");async function Fn(e,t){let r=await z.get(e),n=await N.users.bulkGetGlobalUsersById(t),o=[];for(let c of n)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 N.users.bulkUpdateGlobalUsers(s),Object.values(r.roles||{}).includes("CREATOR")){let f=(await N.userUtils.creatorsInList(o)).filter(h=>h).length,g=o.length-f;g&&await kn(0,g)}let u=[];for(let c of t)u.push(N.cache.user.invalidateUser(c));return await Promise.all(u),await N.events.group.usersAdded(s.length,r,t),s}a(Fn,"addUsers");async function Ks(e,t){let r=await z.get(e),n=await N.users.bulkGetGlobalUsersById(t),o=[];for(let u of n){if(!u.userGroups||!u.userGroups.includes(e))continue;let c=u.userGroups.indexOf(e);u.userGroups.splice(c,1),o.push(u)}if(await N.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes("CREATOR")){let c=(await N.userUtils.creatorsInList(o)).filter(g=>g).length,f=o.length-c;f&&await vr(0,f)}let i=[];for(let u of t)i.push(N.cache.user.invalidateUser(u));return await Promise.all(i),o.length&&await N.events.group.usersDeleted(o.length,r,t),o}a(Ks,"removeUsers");async function Vs(e,t){let r=await _r(e);if(r.roles||(r.roles={}),t.appsToAdd)for(let n of t.appsToAdd)r.roles[n.appId]=n.roleId;if(t.appsToRemove)for(let n of t.appsToRemove)delete r.roles[n.appId];if(r.builder={apps:Object.entries(r.roles).filter(([n,o])=>o==="CREATOR").map(([n])=>n)},r.builder.apps.length&&!Us())throw new N.HTTPError("Feature not enabled, please check license",400);return await Gn(r)}a(Vs,"updateGroupApps");async function jx(e){let t=await Oa(),r=[];for(let n of t)!n.roles||!n.roles[e]||(delete n.roles[e],r.push(n));return await z.bulkSave(r)}a(jx,"cleanupApp");async function Qx(){if(!await qs()){let e=N.tenancy.getGlobalDB(),r=(await Oa()||[]).filter(n=>Object.values(n?.roles||{}).includes("CREATOR"));for(let n of r){let o=await z.getGroupUsers(n._id),i=(await Promise.all(o.map(g=>e.get(g._id)))).map(g=>({...g,userGroups:g.userGroups.filter(h=>h!==n._id)})),c=(await N.userUtils.creatorsInList(i)).filter(g=>g).length,f=o.length-c;await z.save({...n,roles:{}}),f&&await vr(0,f)}}}a(Qx,"adjustGroupCreatorsQuotas");Hs.users.UserDB.init(ft,re,Ze);var Qe=Hs.users.UserDB;var Qn={};x(Qn,{logs:()=>ti});var ti={};x(ti,{logSearch:()=>eC,oldestLogDate:()=>Xf,storeLog:()=>tC});var jn=require("@budibase/backend-core"),Jf=require("@budibase/types");var ge=require("@budibase/backend-core"),$n=require("@budibase/types");var Kf=require("@budibase/backend-core");async function Vf(e,t){let r,n=5,o=!1,s,i=!0;for(;n>0;n--)try{i?s=await e():s=await exports.randomDelay(e),o=!0;break}catch(u){r=u}return o||Kf.logging.logWarn(`Failed to backoff: ${t}`,r),s}a(Vf,"backOff");var{SEPARATOR:wt,UNICODE_MAX:Kx,DocumentType:Hf,AutomationViewMode:Ys,ViewName:Vx,getQueryIndex:Hx}=ge.db,Yx=new Date(0).toISOString(),zx=100,zs=a(async()=>sn($n.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS),"oldestLogDate");function Yf(e,t,{status:r,automationId:n}={},o={}){let s=n?`${n}${wt}`:"",i=r?`${r}${wt}`:"",u;return r&&n?u=`${Ys.ALL}${wt}${i}${s}`:r?u=`${Ys.STATUS}${wt}${i}`:n?u=`${Ys.AUTOMATION}${wt}${s}`:u=`${Hf.AUTOMATION_LOG}${wt}`,{...o,descending:!0,startkey:`${u}${t}${Kx}`,endkey:`${u}${e}`}}a(Yf,"getAutomationLogParams");function Jx(e,t,r){return`${Hf.AUTOMATION_LOG}${wt}${e}${wt}${r}${wt}${t}`}a(Jx,"generateAutomationLogID");async function Js(e,t,r={docs:!0}){let n=ge.context.getProdWorkspaceDB();await n.exists()||(n=ge.context.getDevWorkspaceDB());let o={status:r.status},s=r?.limit?r.limit:r?.paginate?9+1:void 0,i=Yf(e,t,o,{include_docs:r.docs,limit:s});r?.page&&(i.startkey=r.page);let u=await n.allDocs(i);return na(u,{paginate:r?.paginate,pageSize:9})}a(Js,"getAllLogs");async function Xs(e,t,r={}){let n=ge.context.getProdWorkspaceDB();await n.exists()||(n=ge.context.getDevWorkspaceDB());let o;try{let s={automationId:r?.automationId,status:r?.status},i=Yf(e,t,s,{include_docs:!0,limit:9+1});r?.page&&(i.startkey=r.page),o=await n.query(Hx(Vx.AUTOMATION_LOGS),i)}catch(s){if(s!=null&&(s.name==="not_found"||s.error==="not_found"))return await Tc(),Xs(e,t,r);throw s}return na(o,{paginate:!0,pageSize:9})}a(Xs,"getLogsByView");async function zf(e,t){let r=ge.context.getProdWorkspaceDB(),n=e._id,o=e.name,s=new Date().toISOString(),i=Jx(s,t.status,n),u={...t,automationId:n,status:t.status,automationName:o,createdAt:s,_id:i};return await r.put(u),i}a(zf,"writeLog");async function Zs(e,{clearing:t}={clearing:!1}){let r=ge.context.getProdWorkspaceDB();await Vf(async()=>{let n=await r.get(ge.db.DocumentType.WORKSPACE_METADATA);for(let o of e){let s=o.split(ge.db.SEPARATOR),i=`${s[s.length-3]}${ge.db.SEPARATOR}${s[s.length-2]}`,u={};n.automationErrors&&(u=n.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],n.automationErrors=u}await r.put(n),await ge.cache.workspace.invalidateWorkspaceMetadata(n.appId,n)},"Failed to update app metadata with automation log error")}a(Zs,"updateAppMetadataWithErrors");async function Xx(){let e=await zs();try{return await Js(Yx,e,{docs:!1,paginate:!1,limit:zx})}catch{return{data:[],hasNextPage:!1}}}a(Xx,"getExpiredLogs");async function ei(){let e=ge.context.getProdWorkspaceDB();try{let t=await Xx();if(!t.data||t.data.length===0)return;let r=t.data.map(o=>({_id:o.id,_rev:o.value.rev,_deleted:!0})),n=t.data.filter(o=>{let s=o.id.split(ge.db.SEPARATOR);return s[s.length-1]===$n.AutomationStatus.ERROR}).map(o=>o.id);await e.bulkDocs(r),n.length&&await Zs(n,{clearing:!0})}catch(t){ge.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}a(ei,"clearOldHistory");var Xf=zs;async function Zx(e,t,r,n){let o,s=new Date().toISOString(),i=await Xf();return(!e||e<i)&&(e=i),r||t?o=await Xs(e,s,{automationId:r,status:t,page:n}):o=await Js(e,s,{status:t,page:n,docs:!0,paginate:!0}),o}a(Zx,"getLogs");async function eC(e){return await ei(),await Zx(e.startDate,e.status,e.automationId,e.page)}a(eC,"logSearch");async function tC(e,t){if(!jn.db.isProdWorkspaceID(jn.context.getWorkspaceId()))return;let r=await zf(e,t);t.status===Jf.AutomationStatus.ERROR&&await Zs([r]),await ei()}a(tC,"storeLog");var Kn={};x(Kn,{checkPluginQuotas:()=>nC,deletePlugin:()=>aC,storePlugin:()=>rC});var rm=require("@budibase/types"),fe=require("@budibase/backend-core");var Zf=F(require("fs")),em=require("path");function tm(e,t){return Zf.default.readFileSync((0,em.join)(e,t),"utf8")}a(tm,"loadJSFile");async function rC(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===rm.PluginType.DATASOURCE){let js=tm(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=a(async()=>{let e=await db.put(doc);return await fe.events.plugin.imported(doc),{...doc,_rev:e.rev}},"write");return rev?await write():await Fs(write)}a(rC,"storePlugin");async function aC(e){let t=fe.tenancy.getGlobalDB();try{let r=await t.get(e),n=fe.objectStore.getPluginS3Dir(r.name);await fe.objectStore.deleteFolder(fe.objectStore.ObjectStoreBuckets.PLUGINS,n),await t.remove(e,r._rev),await fe.events.plugin.deleted(r),await Ws()}catch(r){let n=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${n}`)}}a(aC,"deletePlugin");async function nC(){let e=fe.tenancy.getGlobalDB();try{let r=(await e.allDocs(fe.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await $s(r)}catch(t){fe.logging.logAlert("Unable to retrieve plugins for quota check",t)}}a(nC,"checkPluginQuotas");var mt={};x(mt,{fetch:()=>sC,fetchValues:()=>iC,isEncryptionKeyAvailable:()=>oC,isValid:()=>om,remove:()=>cC,update:()=>uC});var am=require("@budibase/backend-core"),La=require("@budibase/types");function oC(){return!!am.env.ENCRYPTION_KEY}a(oC,"isEncryptionKeyAvailable");async function sC(){let e=await jt.get();return Object.keys(e.variables)}a(sC,"fetch");async function iC(e){let r=(await jt.get()).variables,n={};for(let[o,s]of Object.entries(r))switch(e){case La.Environment.DEVELOPMENT:n[o]=s.development;break;case La.Environment.PRODUCTION:default:n[o]=s.production;break}return n}a(iC,"fetchValues");async function nm(e){if(!(await ct.cache.getCachedLicense()).features.includes(La.Feature.ENVIRONMENT_VARIABLES))throw new Error("User does not have access to environment variables feature.");let r=await jt.get();r.variables=e(r.variables),await jt.update(r)}a(nm,"changeValues");async function uC(e,t){if(om(e))await nm(n=>(n[e]=t,n));else throw new Error("Variable name has characters that are not allowed")}a(uC,"update");async function cC(e){await nm(t=>(delete t[e],t))}a(cC,"remove");function om(e){return/^[a-zA-Z0-9-_]+$/.test(e)}a(om,"isValid");var kt={};x(kt,{definitions:()=>IC,download:()=>bC,fetch:()=>AC,write:()=>hC});var Pe=require("@budibase/backend-core"),Hn=require("@budibase/types");var ue=require("@budibase/backend-core"),tt=require("@budibase/types");var sm=require("memorystream"),im=new ue.sql.Sql(tt.SqlClient.SQL_LITE);async function pC(e,t,r){let n={operation:tt.Operation.READ,table:or.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:tt.SortOrder.DESCENDING,type:tt.SortType.STRING}}},o=im._query(n);if(Array.isArray(o))throw new Error("Cannot execute multiple queries for audit log search");return{sql:o.sql,bindings:o.bindings}}a(pC,"getAuditLogSqlQuery");function lC(e){return`${ue.DocumentType.AUDIT_LOG}${ue.SEPARATOR}${e}${ue.SEPARATOR}${ue.utils.newid()}`}a(lC,"generateAuditLogID");async function um(e){e._id||(e._id=lC(e.timestamp)),e.type||(e.type=tt.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)}}a(um,"save");async function ri(e,t,r){t||(t=1);let n=ue.context.getAuditLogsDB();try{let o=9+1,s=await pC(e,t,o),i=or.searchTable(),u=im.convertJsonStringColumns(i,await n.sql(s.sql,s.bindings)),c;u.length>o&&(c=u.pop());let f={rows:u,hasNextPage:!!c};return f.hasNextPage&&(f.bookmark=t+1),f}catch(o){if(o.status===404&&!r?.isRetry)return await dC(),await cc(),await ri(e,t,{isRetry:!0});throw o}}a(ri,"searchSQL");async function dC(){let e=ue.context.getAuditLogsDB(),r=(await e.allDocs(ue.db.getDocParams(ue.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(n=>n.doc).filter(n=>n&&!n.type).map(n=>({...n,type:tt.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}a(dC,"migrate");function cm(e){let t=ue.context.getAuditLogsDB(),r=new sm,n=t.dump(r,{filter:s=>{let i=s;if(!i._id?.startsWith(ue.DocumentType.AUDIT_LOG))return!1;let u=!0,c=a((f,g)=>{!f||f.length===0||(u=!!(u&&g&&f.includes(g)))},"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 f=JSON.stringify(s);u=u&&f.includes(e.fullSearch)}return u}}),o=new sm;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:n,stream:o}}a(cm,"dump");var Pa=require("@budibase/backend-core"),Ua=require("@budibase/string-templates"),Vn=require("@budibase/types");var mC=Pa.constants.MIN_VALID_DATE.toISOString(),gC=Pa.constants.MAX_VALID_DATE.toISOString();function ai(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||mC,e.endDate=e.endDate||gC),e}a(ai,"fillDates");async function pm(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(n=>Pa.db.getProdWorkspaceID(n)));let t={};function r(n,o){o?.length&&(t.oneOf={...t.oneOf,[n]:o})}return a(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=ai(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}a(pm,"getSearchFilters");function ni(e,t,r){let n={_id:e,status:Vn.AuditLogResourceStatus.DELETED};switch(t){case"app":n.name=r?.appName;break;case"user":n.email=r?.email;break}return n}a(ni,"deleted");function oi(e){let t=(0,Ua.findHBSBlocks)(e);for(let r of t){let n=` "${r}"`;e=e.replace(e.includes(n)?n:` ${r}`,""),e=(0,Ua.processStringSync)(e,{})}return e}a(oi,"removeTemplateStrings");function lm(e,t){let r=Vn.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let n=(0,Ua.processStringSync)(r,t);return n.includes('""')&&(n=oi(r)),n}a(lm,"getEventFriendlyName");async function hC(e,t,r){if(!await Pn()||!Pe.utils.isAudited(e))return;let n=lm(e,t),o=new Date;r?.timestamp&&(o=new Date(r.timestamp));let s={timestamp:o.toISOString(),event:e,name:n,userId:r?.userId||Hn.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 um(s)}a(hC,"write");async function yC(e){let t=e.map(u=>u.userId),n=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(n)]),i=[];for(let u of e){let c=o.find(h=>h?._id===u.userId),f=s.find(h=>Pe.db.isSameWorkspaceID(h?.appId,u.appId)),g={event:u.event,timestamp:u.timestamp,name:u.name,metadata:u.metadata,user:c||ni(u.userId,"user",u.fallback)};u.appId&&(g.app=f||ni(u.appId,"app",u.fallback)),i.push(g)}return i}a(yC,"enrich");async function AC(e){if(!await Pn())throw new Error("Audit logs not available - license required.");let t=await pm(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await ri(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await yC(r.rows)}}a(AC,"fetch");function bC(e){return e=ai(e),cm(e)}a(bC,"download");function IC(){let e=Object.entries(Hn.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=oi(r[1]);return t}a(IC,"definitions");var Yn={};x(Yn,{applications:()=>ci,roles:()=>ii,users:()=>si});var si={};x(si,{roleCheck:()=>wC});function SC(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}a(SC,"removeRoles");async function wC(e,t){return await It()||SC(e,t),e}a(wC,"roleCheck");var ii={};x(ii,{assign:()=>TC,unAssign:()=>EC});var qa=require("@budibase/backend-core");async function TC(e,t){if(!await It())throw new Error("Unable to assign roles - license required.");let r=await Qe.bulkGet(e);for(let n of r){if(t.role&&t.role.roleId){let o=qa.db.getProdWorkspaceID(t.role.appId);n.roles[o]=t.role.roleId}if(t.appBuilder){let o=qa.db.getProdWorkspaceID(t.appBuilder.appId),s=n.builder?.apps||[];n.builder={apps:s.concat([o])}}t.builder&&(n.builder={global:!0}),t.admin&&(n.admin={global:!0}),n.roles}await Qe.bulkUpdate(r)}a(TC,"assign");async function EC(e,t){if(!await It())throw new Error("Unable to un-assign roles - license required.");let r=await Qe.bulkGet(e);for(let n of r){if(t.role){let o=qa.db.getProdWorkspaceID(t.role?.appId);n.roles[o]===t.role.roleId&&delete n.roles[o]}if(t.appBuilder&&n.builder?.apps){let o=qa.db.getProdWorkspaceID(t.appBuilder.appId);n.builder.apps=n.builder.apps.filter(s=>s!==o)}t.builder&&n.builder&&delete n.builder,t.admin&&n.admin&&delete n.admin}}a(EC,"unAssign");var ci={};x(ci,{buildExportFn:()=>vC,buildImportFn:()=>RC});var ui=require("@budibase/backend-core");function RC(e){return async(t,r)=>{await It()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await ui.context.doInWorkspaceContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}a(RC,"buildImportFn");function vC(e){return async(t,r)=>{await It()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:n,excludeRows:o}=t.request.body;await ui.context.doInWorkspaceContext(t.params.appId,async()=>{t.request.body={encryptPassword:n,excludeRows:o},t.query.appId=t.params.appId,await e(t),await r()})}}a(vC,"buildExportFn");var Se=require("@budibase/backend-core"),Ie=require("@budibase/types"),mm=F(require("fs")),gm=require("path");var pi=require("@budibase/backend-core");var dm;function fm(){dm=new pi.queue.BudibaseQueue(pi.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}a(fm,"init");function Jt(){return dm}a(Jt,"getBackupQueue");async function li(e,t={}){return $e.storeAppBackupMetadata(e,t)}a(li,"storeAppBackupMetadata");function hm(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}}}a(hm,"getTimestamps");async function _C(e,t,r,n){let o=await zn(e);return await $e.storeAppBackupMetadata({...o,...hm(t),contents:r,status:t,type:Ie.BackupType.BACKUP},{filename:n,docId:e})}a(_C,"updateBackupStatus");async function xC(e,t,r){let n=await zn(e);return await $e.storeAppBackupMetadata({...n,...hm(r),status:r,type:Ie.BackupType.RESTORE,trigger:Ie.BackupTrigger.MANUAL},{docId:e,docRev:t})}a(xC,"updateRestoreStatus");async function zn(e){return $e.getAppBackupMetadata(e)}a(zn,"getAppBackup");async function CC(e,t){return $e.updateAppBackupMetadata(e,t)}a(CC,"updateAppBackup");async function ym(e){let t=await $e.getAppBackupMetadata(e);return t.filename&&await Se.objectStore.deleteFile(Se.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),$e.deleteAppBackupMetadata(e)}a(ym,"deleteAppBackup");async function OC(e){let t=[];for(let r of e)try{await ym(r),t.push({backupId:r,success:!0})}catch(n){t.push({backupId:r,success:!1,error:n instanceof Error?n.message:"Unknown error"})}return t}a(OC,"deleteAppBackups");async function LC(e,t){return $e.fetchAppBackups(e,t)}a(LC,"fetchAppBackups");async function Am(e){let t=await $e.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let{stream:r}=await Se.objectStore.getReadStream(Se.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}a(Am,"getBackupDownloadStream");async function PC(e){let{stream:t}=await Am(e),r=(0,gm.join)(Se.objectStore.budibaseTempDir(),Se.utils.newid()),n=mm.default.createWriteStream(r);return new Promise((o,s)=>{t.on("error",s),n.on("error",s),t.pipe(n).on("close",()=>o(r))})}a(PC,"downloadAppBackup");async function UC(e,t,r={}){let n;try{n=await li({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 Jt().add({docId:n.id,docRev:n.rev,appId:e,export:{trigger:t,...r}}),await Se.events.backup.appBackupTriggered(e,n.id,Ie.BackupType.BACKUP,t,r?.name),n.id}a(UC,"triggerAppBackup");async function qC(e,t,r,n){let o=await zn(t),s;try{s=await li({appId:e,timestamp:new Date().toISOString(),status:Ie.BackupStatus.PENDING,type:Ie.BackupType.RESTORE,createdBy:n})}catch(i){if(i?.status===409)return;throw i}return await Jt().add({appId:e,docId:s.id,docRev:s.rev,import:{nameForBackup:r,backupId:t,createdBy:n}}),{restoreId:s.id,metadata:o}}a(qC,"triggerAppRestore");async function DC(e,t,r){let n=Se.db.getProdWorkspaceID(e);await Se.context.doInWorkspaceContext(n,async()=>{let o=Se.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 Se.cache.workspace.invalidateWorkspaceMetadata(i.appId,i))})}a(DC,"trackBackupError");var kC={isEnabled:Ls,triggerAppRestore:xe(qC),triggerAppBackup:xe(UC),getBackupDownloadStream:xe(Am),downloadAppBackup:xe(PC),fetchAppBackups:xe(LC),storeAppBackupMetadata:xe(li),updateBackupStatus:xe(_C),updateRestoreStatus:xe(xC),getAppBackup:xe(zn),updateAppBackup:xe(CC),deleteAppBackup:xe(ym),deleteAppBackups:xe(OC),trackBackupError:xe(DC)},Ke=kC;var fi={};x(fi,{init:()=>di});var ae=require("@budibase/backend-core"),rt=require("@budibase/types"),xr=F(require("fs"));async function di(e){Jt().process(async t=>{let r=t.data;try{if(r.export)return console.log("Exporting app backup:",r.appId,r.export.trigger),BC(t,e);if(r.import)return console.log("Importing app backup:",r.appId,r.import.backupId),NC(t,e)}catch(n){ae.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,n)}})}a(di,"init");async function MC(e){await ae.db.getDB(e,{skip_setup:!0}).destroy()}a(MC,"removeExistingApp");async function bm(e,t,r,n){let o=ae.db.getDevWorkspaceID(r),s=ae.db.getProdWorkspaceID(r),i=new Date().toISOString(),u=a(async(c,f)=>{n?.doc?await Ke.updateBackupStatus(n.doc.id,c,f?.contents,f?.filename):await Ke.storeAppBackupMetadata({appId:s,timestamp:i,trigger:e,status:c,name:n?.name,type:rt.BackupType.BACKUP,contents:f?.contents,createdBy:n?.createdBy},{filename:f?.filename})},"updateMetadata");try{let c=await n.processing.exportAppFn(o,{tar:!0}),f=await n.processing.statsFn(o),g=`${s}/backup-${i}.tar.gz`,h=ae.objectStore.ObjectStoreBuckets.BACKUPS,y=xr.default.createReadStream(c);await ae.objectStore.streamUpload({bucket:h,filename:g,stream:y,extra:{type:"application/gzip",metadata:{name:n?.name,trigger:e,timestamp:i,appId:s}}}),await u(rt.BackupStatus.COMPLETE,{filename:g,contents:f}),xr.default.existsSync(c)&&xr.default.rmSync(c)}catch(c){ae.logging.logAlert("App backup error",c),await u(rt.BackupStatus.FAILED);let f=n?.doc?.id||`backup-${i}`,g=c instanceof Error?c.message:String(c);await Ke.trackBackupError(s,f,`Backup export failed: ${g}`)}}a(bm,"runBackup");async function NC(e,t){let r=e.data,n=r.appId,o=r.import.backupId,s=r.import.nameForBackup,i=r.import.createdBy,u=ae.tenancy.getTenantIDFromWorkspaceID(n);return ae.tenancy.doInTenant(u,async()=>{let c=ae.db.getDevWorkspaceID(n),f=`${c}_temp_${Date.now()}`,{rev:g}=await Ke.updateRestoreStatus(r.docId,r.docRev,rt.BackupStatus.STARTED);await bm(rt.BackupTrigger.RESTORING,u,n,{processing:t,createdBy:i,name:s});let h=await Ke.downloadAppBackup(o),y=rt.BackupStatus.COMPLETE;try{await t.importAppFn(f,ae.db.getDB(f),{file:{type:"application/gzip",path:h},key:h}),await MC(c),await new ae.db.Replication({source:f,target:c}).replicate()}catch(E){ae.logging.logAlert("App restore error",E),y=rt.BackupStatus.FAILED;let M=E instanceof Error?E.message:String(E);await Ke.trackBackupError(n,o,`Backup restore failed: ${M}`)}finally{try{await ae.db.getDB(f,{skip_setup:!0}).destroy()}catch{}}await Ke.updateRestoreStatus(r.docId,g,y),xr.default.existsSync(h)&&xr.default.rmSync(h,{force:!0})})}a(NC,"importProcessor");async function BC(e,t){let r=e.data,n=r.appId,o=r.export.trigger,s=r.export.name,i=ae.tenancy.getTenantIDFromWorkspaceID(n);await ae.tenancy.doInTenant(i,async()=>{try{let{rev:u}=await Ke.updateBackupStatus(r.docId,rt.BackupStatus.STARTED);return bm(o,i,n,{processing:t,doc:{id:r.docId,rev:u},name:s})}catch(u){ae.logging.logAlert("App backup error",u);let c=u instanceof Error?u.message:String(u);await Ke.trackBackupError(n,r.docId,`Backup export failed: ${c}`)}})}a(BC,"exportProcessor");var GC=a(async e=>{fm(),await di(e.processing)},"init"),Ne={...Ke,processing:fi,init:GC,getBackupQueue:Jt};var Im=a(async e=>{e.backups&&await Ne.init(e.backups)},"init");var qe={};x(qe,{create:()=>UN,find:()=>PN,get:()=>LN,remove:()=>DN,update:()=>qN});var WA=F(iu()),Tt=require("@budibase/backend-core");var $A=require("@budibase/types");async function LN(e){let t=Tt.tenancy.getGlobalDB(),r=new Tt.db.QueryBuilder(t.name,$A.SearchIndex.USER);r.setIndexBuilder(Tt.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 n=await r.run();return{users:n.rows,total:n.totalRows}}a(LN,"get");async function PN(e){return await Tt.users.getById(e)}a(PN,"find");async function UN(e){let t=await Qe.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new Tt.HTTPError("User is already synched",409);e={...t,scimInfo:(0,WA.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await Qe.save(e,{requirePassword:!1})}a(UN,"create");async function qN(e,t){return await Qe.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}a(qN,"update");async function DN(e){return await Qe.destroy(e)}a(DN,"remove");var qr={};x(qr,{create:()=>kN});var jA=F(iu());var QA=require("@budibase/backend-core");async function kN(e){let t=await ko(e.name),r;if(!t)r=(await re.save(e)).id;else{if(t.scimInfo?.isSync)throw new QA.HTTPError("Group is already synched",409);r=t._id,t.users&&(await re.removeUsers(r,t.users.map(o=>o._id)),delete t.users),t.scimInfo=(0,jA.default)(t.scimInfo,e.scimInfo),await re.save(t)}return await re.get(r)}a(kN,"create");var Zt={};x(Zt,{logRequest:()=>BN,logResponse:()=>GN});var at=require("@budibase/backend-core"),VA=F(KA());var{DocWritethrough:MN}=at.cache.docWritethrough;function NN(){return`${at.db.DocumentType.SCIM_LOG}${at.db.SEPARATOR}${(0,VA.default)().format("YYYYMMDD")}`}a(NN,"getLogDocId");var HA=a(()=>{let e=at.context.getScimDBName();return new MN(at.db.getDB(e),NN())},"getDB");async function BN(e){at.logging.logWarn("SCIM request log",e);let t=Date.now().toString();return await HA().patch({[`${t}_request`]:{ts:new Date().toISOString(),...e}}),t}a(BN,"logRequest");async function GN(e,t){at.logging.logWarn("SCIM response",t),await HA().patch({[`${e}_response`]:{ts:new Date().toISOString(),...t}})}a(GN,"logResponse");var hu={};x(hu,{doInScimContext:()=>lu,feature:()=>we,internalGroupOnly:()=>Ba,licenseAuth:()=>gu,licensing:()=>YA,requireSCIM:()=>du,scimGroupOnly:()=>Na,scimUserOnly:()=>Ma});var Mt=require("@budibase/backend-core");var co=require("@budibase/types");var FN=a((e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(Mt.env.SELF_HOSTED&&Mt.env.DEFAULT_LICENSE)return t.user.license=Mo,r();t.user.license=await ct.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(Mt.utils.isServingApp(t)||Mt.utils.isServingBuilder(t)||Mt.utils.isServingBuilderPreview(t)||Mt.utils.isPublicApiRequest(t))&&await ft.usageLimitIsExceeded({name:co.StaticQuotaName.USERS,type:co.QuotaUsageType.STATIC,usageChange:0})}return r()},"licensing"),YA=FN;var we={};x(we,{requireFeature:()=>WN,requireFeatures:()=>$N});var WN=a(e=>async(t,r)=>{await Ln(e),await r()},"requireFeature"),$N=a((...e)=>async(t,r)=>{await Os(e),await r()},"requireFeatures");var po=require("@budibase/backend-core");var lu=a(async(e,t)=>{let r;return po.env.ENABLE_SCIM_LOGGER&&(r=await Zt.logRequest({...e.request.toJSON(),body:e.request.body})),await po.context.doInScimContext(async()=>{let n=await t();return r&&await Zt.logResponse(r,{...e.response.toJSON(),body:e.response.body}),n})},"doInScimContext");var du=a(async(e,t)=>{await Ds(),await t()},"requireSCIM");var zA=require("@budibase/backend-core");var Ma=a(e=>fu(zA.users.getById,e,!0),"scimUserOnly"),Na=a(e=>fu(z.get,e,!0),"scimGroupOnly"),Ba=a(e=>fu(z.get,e,!1),"internalGroupOnly");function fu(e,t,r){return async(n,o)=>{let s=n.params[t];return typeof s!="string"&&n.throw(404),!!(await e(s)).scimInfo?.isSync!==r&&n.throw(404),o()}}a(fu,"scimSyncChecks");var Ga=require("@budibase/backend-core");var mu=require("dd-trace");async function gu(e,t){await mu.tracer.trace("licenseAuth",async r=>{let n=e.request.headers[Ga.constants.Header.LICENSE_KEY];Array.isArray(n)&&(n=n[0]),r.addTags({licenseKey:n}),n||e.throw(403,"License key not provided");let o=await vs(n);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"),mu.tracer.setUser({id:"anonymous",tenantId:o.tenantId}),await Ga.context.doInSelfHostTenantUsingCloud(o.tenantId,async()=>{await Ga.context.doInLicenseContext(o,async()=>{await t()})})})}a(gu,"default");var wu={};x(wu,{appBackups:()=>sb,auditLogs:()=>gb,environmentVariables:()=>Eb,groups:()=>kb,scim:()=>dI});var Et=require("@budibase/backend-core"),fo=require("@budibase/types"),nb=F(require("@koa/router")),tr=F(require("joi"));var lo=require("@budibase/backend-core"),yu=require("@budibase/types");async function er(e,t){t||e.throw(400,"App ID missing"),await cr.workspaceExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}a(er,"checkAppID");async function JA(e){let t=e.params.appId;await er(e,t);let{body:r}=e.request,n=e.user?._id,o=await Ne.triggerAppBackup(t,yu.BackupTrigger.MANUAL,{name:r.name,createdBy:n});o||e.throw(500,"Unable to start backup."),e.body={backupId:o,message:"Backup triggered - process starting."}}a(JA,"manualBackup");async function XA(e){let t=e.params.appId;await er(e,t);let r=e.params.backupId,n=e.request.body.name,o=await Ne.triggerAppRestore(t,r,n,e.user?._id);o||e.throw(500,"Unable to start restore."),await lo.events.backup.appBackupRestored(o.metadata),e.body={restoreId:o?.restoreId,message:"Restore triggered - process starting."}}a(XA,"importBackup");async function ZA(e){let t=e.params.appId;await er(e,t);let r=e.params.backupId;await Ne.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}a(ZA,"deleteBackup");async function eb(e){let t=lo.context.getWorkspaceId();await er(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 n=await Ne.deleteAppBackups(r),o=n.filter(i=>i.success).length,s=n.length-o;e.body={message:`${o} backups deleted successfully${s>0?`, ${s} failed`:""}.`,results:n,successCount:o,failureCount:s}}a(eb,"deleteBackups");async function tb(e){let t=e.params.appId;await er(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(yu.BackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await Ne.fetchAppBackups(t,{paginate:!0,...r})}a(tb,"fetchBackups");async function rb(e){let t=e.params.appId;await er(e,t);let r=e.params.backupId,n=e.request.body;e.body=await Ne.updateAppBackup(r,n.name)}a(rb,"updateBackup");async function ab(e){let t=e.params.appId;await er(e,t);let r=e.params.backupId,{metadata:n,stream:o}=await Ne.getBackupDownloadStream(r);e.attachment(`backup-${n.timestamp}.tar.gz`),e.body=o}a(ab,"downloadBackup");var ob=new nb.default;function QN(){return Et.auth.joiValidator.body(tr.default.object({trigger:tr.default.string().valid(...Object.values(fo.BackupTrigger)),type:tr.default.string().valid(...Object.values(fo.BackupType)),startDate:tr.default.date(),endDate:tr.default.date(),page:tr.default.string()}))}a(QN,"validateBackupSearch");ob.post("/api/apps/:appId/backups",Et.auth.builderOrAdmin,JA).post("/api/apps/:appId/backups/search",Et.auth.builderOrAdmin,QN(),tb).get("/api/apps/:appId/backups/:backupId/file",Et.auth.builderOrAdmin,ab).patch("/api/apps/:appId/backups/:backupId",Et.auth.builderOrAdmin,rb).delete("/api/apps/:appId/backups/:backupId",Et.auth.builderOrAdmin,ZA).delete("/api/apps/:appId/backups",Et.auth.builderOrAdmin,eb).post("/api/apps/:appId/backups/:backupId/import",Et.auth.builderOrAdmin,XA);var sb=ob;var Au=require("@budibase/backend-core");async function ib(e){let t=e.request.body,r=await kt.fetch(t);await Au.events.auditLog.filtered(t),e.body=r}a(ib,"search");async function ub(e){let t=e.request.body,{stream:r}=kt.download(t);await Au.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}a(ub,"download");async function cb(e){e.body={events:kt.definitions()}}a(cb,"definitions");var lb=require("@budibase/types"),rr=require("@budibase/backend-core"),fb=F(require("@koa/router")),Ve=F(require("joi"));function pb(){return rr.auth.joiValidator.body(Ve.default.object({userIds:Ve.default.array().items(Ve.default.string()).optional(),appIds:Ve.default.array().items(Ve.default.string()).optional(),events:Ve.default.array().items(Ve.default.string().valid(...Object.values(lb.Event))).optional(),startDate:Ve.default.string().optional().allow(""),endDate:Ve.default.string().optional().allow(""),fullSearch:Ve.default.string().optional().allow(""),bookmark:Ve.default.number()}))}a(pb,"buildAuditLogSearchValidator");var mb=new fb.default;mb.post("/api/global/auditlogs/search",rr.auth.adminOnly,pb(),ib).get("/api/global/auditlogs/download",rr.auth.adminOnly,rr.middleware.querystringToBody,pb(),ub).get("/api/global/auditlogs/definitions",rr.auth.adminOnly,cb);var gb=mb;var Iu=require("@budibase/backend-core"),bu=require("@budibase/types");async function hb(e){e.body={encryptionKeyAvailable:mt.isEncryptionKeyAvailable()}}a(hb,"status");async function yb(e){e.body={variables:await mt.fetch()}}a(yb,"fetch");async function Ab(e){let{name:t,production:r,development:n}=e.request.body;await mt.update(t,{production:r,development:n});let o=[bu.Environment.PRODUCTION];r!==n&&o.push(bu.Environment.DEVELOPMENT),await Iu.events.environmentVariable.created(t,o),e.body={message:`Environment variable "${t}" created.`}}a(Ab,"create");async function bb(e){let{production:t,development:r}=e.request.body,n=e.params.varName;await mt.update(n,{production:t,development:r}),e.body={message:`Environment variable "${n}" updated.`}}a(bb,"update");async function Ib(e){let t=e.params.varName;await mt.remove(t),await Iu.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}a(Ib,"destroy");var ar=require("@budibase/backend-core"),wb=F(require("@koa/router")),Fa=F(require("joi"));var Tb=new wb.default;function Sb(){return ar.auth.joiValidator.body(Fa.default.object({name:Fa.default.string().optional(),production:Fa.default.string().required(),development:Fa.default.string().required()}))}a(Sb,"buildEnvVarUpdateValidator");Tb.get("/api/env/variables/status",ar.auth.builderOrAdmin,hb).get("/api/env/variables",ar.auth.builderOrAdmin,yb).post("/api/env/variables",ar.auth.builderOrAdmin,Sb(),Ab).patch("/api/env/variables/:varName",ar.auth.builderOrAdmin,Sb(),bb).delete("/api/env/variables/:varName",ar.auth.builderOrAdmin,Ib);var Eb=Tb;var gt=require("@budibase/backend-core"),Rt=require("@budibase/types"),qb=F(require("@koa/router")),Ce=F(require("joi"));var Rb=require("@budibase/backend-core");async function vb(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let n=await _r(t._id);t.roles=n.roles,t.scimInfo=n.scimInfo}let r=await Gn(t);e.body={_id:r.id,_rev:r.rev}}a(vb,"save");async function _b(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of users to add or to remove");let o,s;r&&(o=await Fn(t,r)),n&&(s=await Ks(t,n)),e.body={added:o,removed:s}}a(_b,"updateGroupUsers");async function xb(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of objects, with appId and roleId to add or remove"),e.body=await Vs(t,{appsToAdd:r,appsToRemove:n})}a(xb,"updateGroupApps");async function Cb(e){e.body={data:await Oa()}}a(Cb,"fetch");async function Ob(e){let{groupId:t,rev:r}=e.params;try{await Qs(t,r),e.body={message:"Group deleted successfully"}}catch(n){e.throw(n.status,n)}}a(Ob,"destroy");async function Lb(e){try{e.body=await _r(e.params.groupId)}catch(t){e.throw(t.status,t)}}a(Lb,"find");async function Pb(e){let{pageSize:t=10,bookmark:r,emailSearch:n}=e.request.query,o=e.params.groupId,s={limit:t+1},i=await nn(o,{...s,emailSearch:n,bookmark:r}),u=n?i[t]?.email:i[t]?._id,c=!!u;e.body={users:i.slice(0,t),bookmark:u,hasNextPage:c}}a(Pb,"searchUsers");async function Ub(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 n=await Rb.csv.jsonFromCsvString(r,{allowSingleColumn:!0});(!n||n.length===0)&&e.throw(400,"CSV file is invalid");let s=Object.keys(n[0]).find(h=>/^(email|e-mail|email address|mail|e_mail)$/i.test(h.trim()));s||e.throw(400,"CSV file must contain an email column");let i=Array.from(new Set(n.map(h=>h[s]).filter(h=>h&&typeof h=="string"&&h.trim().length>0).map(h=>h.trim())));i.length===0&&e.throw(400,"No valid email addresses found in CSV");try{await _r(t)}catch(h){if(h.status===404)e.throw(404,"Group not found");else throw h}let u=[],c=[],f=[],g=await Promise.all(i.map(h=>Qe.getUserByEmail(h)));for(let h of i){let y=g.find(E=>E?.email===h);y?(u.push({_id:y._id,email:y.email}),f.push(y._id)):c.push({email:h,reason:"User not found"})}f.length>0&&await Fn(t,f),e.body={added:u,skipped:c}}a(Ub,"bulkAddUsersFromCsv");var Db=new qb.default;function YN(){return gt.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())}a(YN,"buildGroupSaveValidation");Db.post("/api/global/groups",gt.auth.adminOnly,we.requireFeature(Rt.Feature.USER_GROUPS),YN(),vb).get("/api/global/groups",we.requireFeature(Rt.Feature.USER_GROUPS),Cb).delete("/api/global/groups/:groupId/:rev",we.requireFeature(Rt.Feature.USER_GROUPS),gt.auth.adminOnly,Ba("groupId"),Ob).get("/api/global/groups/:groupId",we.requireFeature(Rt.Feature.USER_GROUPS),gt.auth.builderOrAdmin,Lb).get("/api/global/groups/:groupId/users",we.requireFeature(Rt.Feature.USER_GROUPS),gt.auth.builderOrAdmin,Pb).post("/api/global/groups/:groupId/users",gt.auth.adminOnly,we.requireFeature(Rt.Feature.USER_GROUPS),Ba("groupId"),_b).post("/api/global/groups/:groupId/users/bulk",gt.auth.adminOnly,we.requireFeature(Rt.Feature.USER_GROUPS),Ba("groupId"),gt.auth.joiValidator.body(Ce.default.object({csvContent:Ce.default.string().required()}).required()),Ub).post("/api/global/groups/:groupId/apps",gt.auth.builderOrAdmin,we.requireFeature(Rt.Feature.USER_GROUPS),xb);var kb=Db;var lI=F(require("@koa/router"));var mo=require("scim-patch");var Nb=require("@budibase/backend-core");function Mb(e,t){let r=e.request.query[t];if(r!==void 0)return+r}a(Mb,"tryGetQueryAsNumber");var Bb=a(async e=>{let t=Mb(e,"pageSize")??20,r=Mb(e,"startIndex"),n;e.request.query.filter&&(n=ce.user.userFilters(e.request.query.filter));let o=await qe.get({pageSize:t,skip:r,filters:n});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"),Gb=a(async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await qe.find(t);e.body=ce.user.toScimUserResponse(r)},"find"),Fb=a(async e=>{let t=ce.user.fromScimUser(e.request.body);try{let r=await qe.create(t);e.body=ce.user.toScimUserResponse(r)}catch(r){throw r instanceof Nb.EmailUnavailableError&&e.throw(409,"Email already in use"),r}},"create");function zN(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}a(zN,"isDeactivation");var Wb=a(async e=>{let t=await qe.find(e.params.id);t||e.throw(404);let r=ce.user.toScimUserResponse(t),n=e.request.body;try{(0,mo.patchBodyValidation)(n)}catch{}if(zN(n))return Su(e);let o;try{o=(0,mo.scimPatch)(r,n.Operations)}catch{}o||e.throw(500);let s=ce.user.fromScimUser(o);await qe.update(s,{allowChangingEmail:!0}),e.body=ce.user.toScimUserResponse(s)},"update"),Su=a(async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await qe.remove(t),e.status=204},"remove");var aI=F(rI()),nI=require("@budibase/shared-core"),go=require("scim-patch");var ho=require("scim2-parse-filter");function oI(e,t){for(let r of t.split(","))delete e[r]}a(oI,"cleanResponse");var sI=a(async e=>{let r=(await re.fetch()).filter(s=>s.scimInfo?.isSync).map(ce.group.toScimGroupResponse),{filter:n,excludedAttributes:o}=e.request.query;if(n){let s=(0,ho.filter)((0,ho.parse)(n));r=r.filter(s)}o&&r.forEach(s=>{oI(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"),iI=a(async e=>{let t=ce.group.fromScimGroup(e.request.body),r=await qr.create(t);e.body=ce.group.toScimGroupResponse(r)},"create"),uI=a(async e=>{let{id:t}=e.params,r=await re.get(t),n=ce.group.toScimGroupResponse(r),{excludedAttributes:o}=e.request.query;o&&oI(n,o),e.body=n},"find"),cI=a(async e=>{let{id:t}=e.params,r=await re.get(t);await re.remove(t,r._rev),e.status=204},"remove"),pI=a(async e=>{let{id:t}=e.params,r=await re.get(t),n=ce.group.toScimGroupResponse(r),o=e.request.body;try{(0,go.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,go.scimPatch)(n,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:f,value:g}of s)switch(f){case"add":case"Add":for(let h of g)u.push(await qe.find(h.value));break;case"remove":case"Remove":for(let h of g)try{c.push(await qe.find(h.value))}catch(y){if(y.status!==404)throw y}break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:nI.utils.unreachable(f)}u.length&&await re.addUsers(t,u.map(f=>f._id)),c.length&&await re.removeUsers(t,c.map(f=>f._id))}e.body=ce.group.toScimGroupResponse(await re.get(t))},"update");var Wa=require("@budibase/types"),Be=new lI.default({prefix:"/api/global/scim/v2"});Be.use(du);Be.use(lu);Be.get("/users",Bb);Be.get("/users/:id",Ma("id"),Gb);Be.post("/users",Fb);Be.patch("/users/:id",Ma("id"),Wb);Be.delete("/users/:id",Ma("id"),Su);Be.get("/groups",sI);Be.post("/groups",we.requireFeature(Wa.Feature.USER_GROUPS),iI);Be.get("/groups/:id",we.requireFeature(Wa.Feature.USER_GROUPS),Na("id"),uI);Be.delete("/groups/:id",we.requireFeature(Wa.Feature.USER_GROUPS),Na("id"),cI);Be.patch("/groups/:id",we.requireFeature(Wa.Feature.USER_GROUPS),Na("id"),pI);var dI=Be;var ce={};x(ce,{group:()=>Eu,user:()=>Tu});var Tu={};x(Tu,{fromScimUser:()=>EB,toScimUserResponse:()=>SB,userFilters:()=>RB});var fI=require("@budibase/backend-core"),mI=require("@budibase/shared-core"),yo=require("@budibase/types"),gI=require("scim2-parse-filter");var{unreachable:IB}=mI.utils,SB=a(e=>{let{isSync:t,roles:r,...n}=e.scimInfo||{},o={...n,schemas:["urn:ietf:params:scim:schemas:core:2.0:User"],id:e._id,meta:{resourceType:"User",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},active:e.status===yo.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"),wB=a(e=>!!e?.id,"isScimUserResponse");function TB(e){if(fI.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}a(TB,"tryGetEmail");var EB=a(e=>{let t=wB(e)?e:void 0,r=TB(e);if(!r)throw new Error("Email is required");let n;switch(e.active){case"True":case"true":case!0:n=!0;break;case"False":case"false":case!1:n=!1;break;default:IB(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:n?yo.UserStatus.ACTIVE:yo.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},"fromScimUser"),RB=a(e=>{let t={equal:{}},r=(0,gI.parse)(e);function n(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)n(s);break;default:console.warn("Filter not handled",{filter:o})}}return a(n,"parseFilters"),n(r),t},"userFilters");var Eu={};x(Eu,{fromScimGroup:()=>xB,toScimGroupResponse:()=>vB});var vB=a(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"),_B=a(e=>!!e?.id,"isScimGroup"),xB=a(e=>{let t=_B(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 Hu={};x(Hu,{LLM:()=>ht,LLMRequest:()=>se,TableGeneration:()=>Vu,agentHistoryTitleSystemPrompt:()=>BB,agentSystemPrompt:()=>NB,aiColumnSchemas:()=>Qu,aiTableResponseToTableSchema:()=>Fu,appendAIColumns:()=>Wu,classifyText:()=>_u,cleanData:()=>xu,extractFileData:()=>qB,generateAIColumns:()=>Bu,generateCode:()=>MB,generateCronExpression:()=>Cu,generateData:()=>Gu,generateJs:()=>Uu,generateSQL:()=>kB,generateTables:()=>Nu,generationStructure:()=>ju,getLLM:()=>Ka,getLLMConfig:()=>Mu,getLLMOrThrow:()=>RI,normalizeContentType:()=>Ru,parseResponseFormat:()=>bo,sanitiseToolName:()=>CB,searchWeb:()=>Pu,sentimentAnalysis:()=>Lu,summarizeText:()=>Ao,tableDataStructuredOutput:()=>Ku,translate:()=>Ou});var $a=require("@budibase/types");function CB(e){if(e.length>64)throw new Error("Tool name must be under 64 characters long");return e.replace(/[^a-zA-Z0-9_-]/g,"_")}a(CB,"sanitiseToolName");function Ru(e){return e?e.includes("/")?e:{[$a.SupportedFileType.PDF]:"application/pdf",[$a.SupportedFileType.JPG]:"image/jpeg",[$a.SupportedFileType.JPEG]:"image/jpeg",[$a.SupportedFileType.PNG]:"image/png"}[e.toLowerCase()]||"application/octet-stream":"application/octet-stream"}a(Ru,"normalizeContentType");var Eo=require("@budibase/types");var yt=require("@budibase/backend-core"),SI=require("@budibase/types");var Io=F(require("openai"));var Nt=require("@budibase/types");var hI=require("@budibase/shared-core");var Bt=F(require("dd-trace"));function vu(e,t){return t.map(r=>e[r]).join(" ")}a(vu,"extractTextFromColumns");var ht=class{static{a(this,"LLM")}constructor({model:t,apiKey:r,maxTokens:n}){this._model=t,this._apiKey=r,this._maxTokens=n??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:n,tokensUsed:o}=await Bt.default.trace("chatCompletion",()=>this.chatCompletion(r));return!n||n.length===0?{message:"",tokensUsed:o}:{message:n[n.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(Cu(t)))}async operation(t,r){return Bt.default.trace("operation",n=>{n.addTags({operation:t.operation,rowId:r.id});let o=this.promptForOperation(t,r);return this.prompt(o)})}promptForOperation(t,r){let{operation:n,column:o,columns:s,language:i,categories:u,prompt:c}=t;switch(n){case Nt.AIOperationEnum.SUMMARISE_TEXT:return Ao(vu(r,s));case Nt.AIOperationEnum.CLEAN_DATA:return xu(r[o]);case Nt.AIOperationEnum.TRANSLATE:return Ou(r[o],i);case Nt.AIOperationEnum.CATEGORISE_TEXT:if(!u)throw Error("No categories provided for categorise text operation. Please provide categories.");return _u(vu(r,s),u.split(","));case Nt.AIOperationEnum.SENTIMENT_ANALYSIS:return Lu(r[o]);case Nt.AIOperationEnum.PROMPT:return c;case Nt.AIOperationEnum.SEARCH_WEB:return Pu(vu(r,s));default:throw hI.utils.unreachable(n)}}async generateJs(t,r){return await Bt.default.trace("generateJs",async()=>{let{bindings:n=[],snippets:o=[]}=r||{};return await this.prompt(Uu(n,o).addUserMessage(t))})}};var AI=require("@budibase/types"),qu=require("openai/helpers/zod");var ja=(n=>(n.GPT_5_MINI="gpt-5-mini",n.GPT_5="gpt-5",n.GPT_5_NANO="gpt-5-nano",n))(ja||{});function bo(e){if(e)return e==="text"?{type:"text"}:e==="json"?{type:"json_object"}:e}a(bo,"parseResponseFormat");function yI(e){if(!e)return 0;let t=e.prompt_tokens;return e.completion_tokens*3+t}a(yI,"calculateBudibaseAICredits");var He=class extends ht{constructor(r){super(r);this.client=this.getClient(r)}static{a(this,"OpenAI")}getVerbosityForModel(){if(Object.values(ja).includes(this.model))return"low"}getClient(r){if(!r.apiKey)throw new Error("No OpenAI API key found");return new Io.default({apiKey:r.apiKey})}async uploadFile(r,n,o){let s=Ru(o);if(AI.ImageContentTypes.includes(s.toLowerCase())){let c;if(Buffer.isBuffer(r))c=r;else{let g=[];for await(let h of r)g.push(new Uint8Array(h));c=Buffer.concat(g)}let f=c.toString("base64");return`data:${s};base64,${f}`}let i=await(0,Io.toFile)(r,n);return(await this.client.files.create({file:i,purpose:"assistants"})).id}async chatCompletion(r){let n={model:this.model,messages:r.messages,max_completion_tokens:this._maxTokens,response_format:bo(r.format)};if(Object.values(ja).includes(this.model)){let i=this.getVerbosityForModel();i&&(n.verbosity=i),n.reasoning_effort="minimal"}r.tools&&r.tools.length>0&&(n.tool_choice="auto",n.tools=r.tools.map(qu.zodFunction));let o=await this.client.chat.completions.create(n),s=o?.choices?.[0]?.message;if(s?.tool_calls){r.addMessage(s);let i=[];for(let u of s.tool_calls){if(u.type!=="function"||!u.function){console.warn(`[OPENAI TOOL WARN] Unsupported tool call type: ${u.type}`);continue}let c=u.function.name,f=r.findTool(c);if(!f)throw new Error(`Tool ${c} not found in prompt tools`);let g=JSON.parse(u.function.arguments);i.push(f.handler(g).then(h=>({role:"tool",tool_call_id:u.id,content:h})).catch(h=>(console.error(`[OPENAI TOOL ERROR] Tool ${c} failed in OpenAI handler:`,h),{role:"tool",tool_call_id:u.id,content:`Error: ${h.message}`})))}return r.addMessages(await Promise.all(i)),this.chatCompletion(r)}else{if(s?.content)return{messages:[...r.messages,{role:s.role,content:s.content}],tokensUsed:yI(o.usage)};throw new Error("No response found")}}async*chatCompletionStream(r){let n={model:this.model,messages:r.messages,max_tokens:this.maxTokens,response_format:bo(r.format),stream:!0};r.tools&&r.tools.length>0&&(n.tool_choice="auto",n.tools=r.tools.map(qu.zodFunction));try{let o=await this.client.chat.completions.create(n),s=null,i="",u=null;for await(let f of o){let g=f?.choices?.[0]?.delta;if(g){if(g.content&&(i+=g.content,yield{type:"content",content:g.content}),g.tool_calls&&g.tool_calls.length>0){let h=g.tool_calls[0];h.id?(s={id:h.id,name:h.function?.name||"",arguments:h.function?.arguments||""},yield{type:"tool_call_start",toolCall:{id:s.id,name:s.name,arguments:s.arguments}}):s&&h.function?.arguments&&(s.arguments+=h.function.arguments,yield{type:"tool_call_start",toolCall:{id:s.id,name:s.name,arguments:s.arguments}})}f.usage&&(u=f.usage)}}let c=u?yI(u):0;if(s){r.addMessage({role:"assistant",content:"",tool_calls:[{id:s.id,type:"function",function:{name:s.name,arguments:s.arguments}}]});let f=r.findTool(s.name);if(f)try{let g=JSON.parse(s.arguments),h=await f.handler(g);yield{type:"tool_call_result",toolResult:{id:s.id,result:h}},r.addMessage({role:"tool",tool_call_id:s.id,content:h}),yield*this.chatCompletionStream(r);return}catch(g){yield{type:"tool_call_result",toolResult:{id:s.id,result:`Error: ${g.message}`,error:g.message}},r.addMessage({role:"tool",tool_call_id:s.id,content:`Error: ${g.message}`}),yield*this.chatCompletionStream(r);return}else{let g=`Tool '${s.name}' not found`;yield{type:"tool_call_result",toolResult:{id:s.id,result:g,error:g}},r.addMessage({role:"tool",tool_call_id:s.id,content:g}),yield*this.chatCompletionStream(r);return}}i&&r.addMessage({role:"assistant",content:i}),yield{type:"done",messages:r.messages,tokensUsed:c}}catch(o){yield{type:"error",content:o.message}}}};var he=require("@budibase/backend-core"),bI=require("@budibase/types");var Du=require("dd-trace");var So=class extends ht{static{a(this,"BudibaseAI")}async prompt(t){let r=await super.prompt(t);return r.tokensUsed&&await Nn(r.tokensUsed),r}async chat(t){let r=await super.chat(t);return r.tokensUsed&&await Nn(r.tokensUsed),r}async uploadFile(t,r,n){return he.env.SELF_HOSTED?this.uploadFileSelfHost(t,r,n):this.uploadFileCloud(t,r,n)}async uploadFileCloud(t,r,n){return new He({apiKey:he.env.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).uploadFile(t,r,n)}async uploadFileSelfHost(t,r,n){let o;if(Buffer.isBuffer(t))o=t;else{let g=[];for await(let h of t)g.push(new Uint8Array(h));o=Buffer.concat(g)}let s=o.toString("base64");if(n&&bI.ImageContentTypes.includes(n.toLowerCase()))return`data:image/jpeg;base64,${s}`;if(!he.env.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(!this._apiKey){let g=await Cn();if(!g)throw new Error("No license key found");this._apiKey=g}let i=`${he.env.BUDICLOUD_URL}/api/ai/upload-file`,u={method:"POST",headers:{"Content-Type":"application/json",[he.constants.Header.LICENSE_KEY]:this._apiKey},body:JSON.stringify({data:s,filename:r,contentType:n})};console.debug("[BudibaseAI] uploadFileSelfHost - Making network call",{url:i,method:u.method,headers:u.headers,bodyKeys:["data","filename","contentType"],filename:r,contentType:n});let c=await Ja(i,u);if(console.debug("[BudibaseAI] uploadFileSelfHost - Network response",{url:i,status:c.status,statusText:c.statusText,ok:c.ok}),!c.ok)throw await he.HTTPError.fromResponse(c);return(await c.json()).fileId}async chatCompletion(t){return he.env.SELF_HOSTED?this.chatCompletionSelfHost(t):this.chatCompletionCloud(t)}async chatCompletionCloud(t){return await Du.tracer.trace("chatCompletionCloud",async()=>await new He({apiKey:he.env.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).chatCompletion(t))}async chatCompletionSelfHost(t){return await Du.tracer.trace("chatCompletionSelfHost",async r=>{if(!he.env.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(r.addTags({budicloudUrl:he.env.BUDICLOUD_URL}),!this._apiKey){let c=await Cn();if(!c)throw new Error("No license key found");this._apiKey=c,r.addTags({licenseKey:this._apiKey})}let n={messages:t.messages,format:t.format,useTools:t.tools.length>0},o=`${he.env.BUDICLOUD_URL}/api/ai/chat`,s={method:"POST",headers:{"Content-Type":"application/json",[he.constants.Header.LICENSE_KEY]:this._apiKey},body:JSON.stringify(n)};console.debug("[BudibaseAI] chatCompletionSelfHost - Making network call",{url:o,method:s.method,headers:s.headers,bodyKeys:Object.keys(n),messagesCount:t.messages.length,useTools:n.useTools,format:n.format});let i=await Ja(o,s);if(console.debug("[BudibaseAI] chatCompletionSelfHost - Network response",{url:o,status:i.status,statusText:i.statusText,ok:i.ok}),!i.ok)throw await he.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){he.env.SELF_HOSTED?yield*this.chatCompletionStreamSelfHost(t):yield*this.chatCompletionStreamCloud(t)}async*chatCompletionStreamCloud(t){yield*new He({apiKey:he.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,toolsCount:t.tools.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 n=r.messages[r.messages.length-1];n.content&&(yield{type:"content",content:n.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 Qa=require("dd-trace");var ku=F(require("@anthropic-ai/sdk"));function OB(e){if(!e)return 0;let t=e.input_tokens;return e.output_tokens*3+t}a(OB,"calculateBudibaseAICredits");var wo=class extends ht{constructor(r){super(r);this.client=new ku.default({apiKey:r.apiKey})}static{a(this,"Anthropic")}firstTextBlock(r){for(let n of r.content)if(n.type==="text")return n.text}async uploadFile(r,n,o){throw new Error("File upload not supported for this LLM provider")}async chatCompletion(r){try{let n=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(n)||"";return{messages:[...r.messages,{role:"assistant",content:o}],tokensUsed:OB(n.usage)}}catch(n){throw n instanceof ku.default.APIError&&console.error(`Anthropic Prompt failed with error ${n.name} and status: ${n.status}`),n}}async*chatCompletionStream(r){try{let n=await this.chatCompletion(r);if(n.messages.length>0){let o=n.messages[n.messages.length-1];o.content&&(yield{type:"content",content:o.content})}yield{type:"done",messages:n.messages,tokensUsed:n.tokensUsed}}catch(n){yield{type:"error",content:n.message}}}};var wI=require("zod"),TI=require("openai/helpers/zod");var II=require("openai");var To=class extends He{static{a(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(ja).includes(this.model)?"medium":void 0}};var EI={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"},LB={OpenAI:He,TogetherAI:He,AzureOpenAI:To,Custom:He,Anthropic:wo,BudibaseAI:So};async function PB(){return await Qa.tracer.trace("getAIConfig",async e=>{let t={type:SI.ConfigType.AI,config:{}};if(!yt.context.isSelfHostUsingCloud()){let n=await yt.configs.getAIConfig();n&&(t=n)}await ks(t);let r=Object.values(t.config).find(n=>n.active&&n.isDefault);if(!r){e.addTags({enabled:!1,reason:"no provider found"});return}return e.addTags({enabled:!0}),{provider:r.provider,model:r.defaultModel||EI[r.provider],apiKey:r.apiKey,baseUrl:r.baseUrl}})}a(PB,"getAIConfig");async function UB(){return Qa.tracer.trace("getSelfHostOpenAIKeyConfig",e=>{if(!yt.env.SELF_HOSTED){e.addTags({enabled:!1,reason:"not self host"});return}if(!yt.env.OPENAI_API_KEY){e.addTags({enabled:!1,reason:"no OPENAI_API_KEY"});return}return e.addTags({enabled:!0}),{provider:"OpenAI",model:EI.OpenAI,apiKey:yt.env.OPENAI_API_KEY}})}a(UB,"getSelfHostOpenAIKeyConfig");async function Mu(){return Qa.tracer.trace("getLLMConfig",async()=>await PB()||await UB())}a(Mu,"getLLMConfig");async function Ka(e){return await Qa.tracer.trace("getLLM",async t=>{let{model:r,maxTokens:n}=e||{},o=await Mu();if(!o){t.addTags({enabled:!1,reason:"no config found"});return}r&&(o.model=r),n&&(o.maxTokens=n);let s=LB[o.provider];if(!s){t.addTags({enabled:!1,reason:"no provider found",provider:o.provider});return}return new s(o)})}a(Ka,"getLLM");async function RI(){let e=await Ka();if(!e)throw new yt.HTTPError("No available LLM configurations",500);return e}a(RI,"getLLMOrThrow");var se=class e{constructor(){this.messages=[];this.tools=[]}static{a(this,"LLMRequest")}addTool(t){return this.tools.push(t),this}addTools(t){return this.tools.push(...t),this}findTool(t){return this.tools.find(r=>r.name===t)}withFormat(t){return t instanceof wI.z.ZodType?this.format=(0,TI.zodResponseFormat)(t,"key"):this.format=t,this}addMessage(t){return this.messages.push(t),this}addMessages(t){return this.messages.push(...t),this}addUserMessage(t){return this.messages.push({role:"user",content:t}),this}addSystemMessage(t){return this.messages.push({role:"system",content:t}),this}static fromRequest(t){let r=new e;return t.messages&&r.addMessages(t.messages),t.format&&r.withFormat(t.format),r}};var vt=require("zod");function Ao(e,t){let r=`Summarize this text:
|
|
37
|
+
`;function ia(e){return $o.default.verify(e,vS,{algorithms:["RS256"]})}a(ia,"verifyLicenseToken");function _S(e,t){return $o.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}a(_S,"sign");var dn={};x(dn,{getFeatures:()=>jo});var l=require("@budibase/types");var xS={[l.PlanType.FREE]:[...De.SELF_FREE_LICENSE.features],[l.PlanType.PREMIUM]:[l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.PDF],[l.PlanType.PREMIUM_PLUS]:[l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.BUDIBASE_AI,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.BUDIBASE_AI,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.BUDIBASE_AI,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC]},CS={[l.PlanType.FREE]:[...De.CLOUD_FREE_LICENSE.features],[l.PlanType.PREMIUM]:[l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.PDF],[l.PlanType.PREMIUM_PLUS]:[l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.BUDIBASE_AI,l.Feature.PDF],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.BUDIBASE_AI,l.Feature.PDF],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.BUDIBASE_AI,l.Feature.PDF],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC]};function jo(e,t){let r=[];function n(o){let s=o[t];if(!s)throw new Error(`Features do not exist for planType=${t} and hosting=${e}`);return s}switch(a(n,"readFeatures"),e){case l.Hosting.SELF:r=n(xS);break;case l.Hosting.CLOUD:r=n(CS);break}return r}a(jo,"getFeatures");var fn={};x(fn,{UNLIMITED:()=>m,getQuotas:()=>Qo});var J=require("@budibase/types");var d=At,qc=De,m=-1,ca=a(e=>e*1e6,"millions"),OS={[J.PlanType.FREE]:{...qc.CLOUD_FREE_LICENSE.quotas},[J.PlanType.PREMIUM]:{usage:{monthly:{...d.queries(m),...d.automations(1e3),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(1e4),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(7),...d.appBackupRetentionDays(7)}},[J.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...d.queries(m),...d.automations(5e3),...d.budibaseAICredits(ca(2)),...d.actions(m)},static:{...d.rows(25e3),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(1)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(30)}},[J.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...d.queries(m),...d.automations(5e3),...d.budibaseAICredits(ca(2)),...d.actions(m)},static:{...d.rows(25e3),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(1)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(30)}},[J.PlanType.PRO]:{usage:{monthly:{...d.queries(m),...d.automations(1e3),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(5),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(7),...d.appBackupRetentionDays(7)}},[J.PlanType.TEAM]:{usage:{monthly:{...d.queries(m),...d.automations(5e3),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(10),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(90)}},[J.PlanType.BUSINESS]:{usage:{monthly:{...d.queries(m),...d.automations(1e4),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(5e4),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(50),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(365),...d.appBackupRetentionDays(365)}},[J.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(ca(4)),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(m),...d.appBackupRetentionDays(m)}},[J.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(ca(4)),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(15),...d.appBackupRetentionDays(15)}},[J.PlanType.ENTERPRISE]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(ca(4)),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(m),...d.appBackupRetentionDays(m)}}},LS={[J.PlanType.FREE]:{...qc.SELF_FREE_LICENSE.quotas},[J.PlanType.PREMIUM]:void 0,[J.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(1)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(30)}},[J.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(1)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(30)}},[J.PlanType.PRO]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(5),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(7),...d.appBackupRetentionDays(7)}},[J.PlanType.TEAM]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(10),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(90)}},[J.PlanType.BUSINESS]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(50),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(90),...d.appBackupRetentionDays(365)}},[J.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(m),...d.appBackupRetentionDays(m)}},[J.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(15),...d.appBackupRetentionDays(15)}},[J.PlanType.ENTERPRISE]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(m),...d.appBackupRetentionDays(m)}}};function Qo(e,t){let r;function n(o){let s=o[t];if(!s)throw new Error(`Quotas do not exist for planType=${t} and hosting=${e}`);return s}switch(a(n,"readQuotas"),e){case J.Hosting.SELF:r=n(LS);break;case J.Hosting.CLOUD:r=n(OS);break}return JSON.parse(JSON.stringify(r))}a(Qo,"getQuotas");var cr={};x(cr,{encoding:()=>ur,workspaceExists:()=>PS});var Dc=require("@budibase/backend-core");async function PS(e){return(await Dc.db.getAllWorkspaces({all:!0,idsOnly:!0})).includes(e)}a(PS,"workspaceExists");var ur={};x(ur,{base64ToObject:()=>qS,objectToBase64:()=>US});function US(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}a(US,"objectToBase64");function qS(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}a(qS,"base64ToObject");var bf=require("@budibase/types"),wr=require("@budibase/backend-core"),If=F(Jl()),Sf=F(bs());async function cx(e){await $e.save({offlineLicenseToken:e}),await Kt()}a(cx,"activateOfflineLicenseToken");async function px(){await $e.save({offlineLicenseToken:void 0}),await Kt()}a(px,"deleteOfflineLicenseToken");async function wf(){return(await $e.get()).offlineLicenseToken}a(wf,"getOfflineLicenseToken");async function Is(){let t=(await wr.installation.getInstall()).installId,r=wr.context.getTenantId(),n=await wr.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:n}}a(Is,"getIdentifier");async function lx(){let e=await Is();return ur.objectToBase64(e)}a(lx,"getIdentifierBase64");function dx(e){return ur.base64ToObject(e)}a(dx,"getIdentifierFromBase64");function Tf(e){let t=Date.now(),r=new Date(e.expireAt).getTime();if(t>r)throw new Error(`Offline license has expired. expireAt=${e.expireAt}`)}a(Tf,"verifyExpiry");async function Ef(e){let t=await Is();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}a(Ef,"verifyInstallation");function Rf(e){let t=e.plan.type,r=bf.Hosting.SELF,n=jo(r,t),o=Qo(r,t);return e.features=(0,If.default)(e.features,n),e.quotas=(0,Sf.default)(e.quotas,o),e}a(Rf,"enrichLicense");async function Ss(){try{let e=await wf();if(e){let t=await ia(e);return Tf(t),await Ef(t),Rf(t)}}catch(e){console.error("Error retrieving offline license",e)}}a(Ss,"getOfflineLicense");var xa={};x(xa,{deleteDevLicense:()=>yx,getOfflineLicense:()=>gx,writeDevLicenseToDisk:()=>hx});var vf=require("@budibase/backend-core"),Ts=require("path"),_f=require("os"),Vt=F(require("fs"));var fx=vf.env.isTest()?".budibase-test":".budibase",ws=(0,Ts.join)((0,_f.tmpdir)(),fx),mx="dev_license.txt",_a=(0,Ts.join)(ws,mx);if(!Vt.default.existsSync(ws))try{Vt.default.mkdirSync(ws)}catch{}function gx(){try{if(Vt.default.existsSync(_a)){let e=Vt.default.readFileSync(_a,{encoding:"utf-8"});return ia(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}a(gx,"getOfflineLicense");function hx(e){console.log(`Writing license to: ${_a}`),Vt.default.writeFileSync(_a,e,{encoding:"utf-8"})}a(hx,"writeDevLicenseToDisk");function yx(){Vt.default.rmSync(_a,{force:!0})}a(yx,"deleteDevLicense");var xf=require("dd-trace");var Rs=a(async()=>await xf.tracer.trace("getLicense",async e=>{if(Es.env.OFFLINE_MODE)return e.addTags({offline:!0}),Ss();let t=await ir();return t||(e.addTags({offlineFallback:!0}),t=xa.getOfflineLicense()),t}),"getLicense"),vs=a(e=>Fo(e),"getLicenseFromKey"),_s=a(()=>Es.env.SELF_HOSTED?De.SELF_FREE_LICENSE:De.CLOUD_FREE_LICENSE,"getFreeLicense");var Cs={};x(Cs,{activateLicenseKey:()=>Ax,deleteLicenseKey:()=>bx,getLicenseKey:()=>Cn});var xs=F(require("dd-trace"));async function Ax(e){await Wo(e),await $e.save({licenseKey:e}),await Kt()}a(Ax,"activateLicenseKey");async function Cn(){return await xs.default.trace("getLicenseKey",async e=>{let t=await $e.get();return e.addTags({licenseKey:t.licenseKey}),t.licenseKey})}a(Cn,"getLicenseKey");async function bx(){return await xs.default.trace("deleteLicenseKey",async()=>{await $e.save({licenseKey:void 0}),await Kt()})}a(bx,"deleteLicenseKey");var Ht=require("@budibase/backend-core"),On=F(require("dd-trace"));var Cf=3600,Kt=a(async()=>{await Pf(),await Lf()},"refresh"),Of=a(async(e,t)=>{let{populateLicense:r=Rs,populateFreeLicense:n=_s}=t||{};return await On.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 vo(),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 On.default.trace("populateLicense",async()=>await r(i)),o.addTags({populatedLicense:!!c}),c||(c=On.default.trace("populateFreeLicense",()=>n(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:Cf}),await u.store(i,c,Cf),c)})},"_getCachedLicense");Ht.env.isJest()&&(Of=jest.fn());var Lf=Of,Pf=a(async()=>{let e=Ht.tenancy.getTenantId();await(await vo()).delete(e)},"invalidate");async function be(e,t){Array.isArray(e)||(e=[e]),t||(t=await Je.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}a(be,"areFeaturesEnabled");async function Ln(e,t){if(!await be(e,t))throw new bt.FeatureDisabledError(`${e} is not currently enabled`,e)}a(Ln,"checkFeature");async function Os(e,t){if(!await be(e,t)){let r=e.join(", ");throw new bt.FeatureDisabledError(`${r} are not currently enabled`,r)}}a(Os,"checkFeatures");function xe(e){return async(...t)=>(await Ln(Ae.Feature.WORKSPACE_BACKUPS),e(...t))}a(xe,"checkBackups");async function Ls(){return be(Ae.Feature.WORKSPACE_BACKUPS)}a(Ls,"isBackupsEnabled");async function Ps(){return be(Ae.Feature.BRANDING)}a(Ps,"isBrandingEnabled");async function Uf(){return be(Ae.Feature.ENFORCEABLE_SSO)}a(Uf,"isEnforceableSSO");async function Sx(){return be(Ae.Feature.SYNC_AUTOMATIONS)}a(Sx,"isSyncAutomationsEnabled");async function wx(){return be(Ae.Feature.TRIGGER_AUTOMATION_RUN)}a(wx,"isTriggerAutomationRunEnabled");async function Us(){return be(Ae.Feature.APP_BUILDERS)}a(Us,"isAppBuildersEnabled");async function Pn(){return be(Ae.Feature.AUDIT_LOGS)}a(Pn,"isAuditLogsEnabled");async function qs(){return be(Ae.Feature.USER_GROUPS)}a(qs,"isUserGroupsEnabled");function Tx(){return be(Ae.Feature.PWA)}a(Tx,"isPWAEnabled");function Ex(){return be(Ae.Feature.RECAPTCHA)}a(Ex,"isRecaptchaEnabled");var Rx=a(()=>be(Ae.Feature.PKCE_OIDC),"isPkceOidcEnabled");async function It(){return be(Ae.Feature.EXPANDED_PUBLIC_API)}a(It,"isExpandedPublicApiEnabled");async function vx(e){if(bt.env.ENABLE_SSO_MAINTENANCE_MODE||!await Uf())return!1;let r;return e?.config?r=e.config:r=await bt.configs.getSettingsConfig(),!!r.isSSOEnforced}a(vx,"isSSOEnforced");var Ds=a(async()=>{let e=Ae.Feature.SCIM,t=await be(e),r=await bt.configs.getSCIMConfig();if(!t||!r?.enabled)throw new bt.FeatureDisabledError(`${e} is not currently enabled`,e);return!0},"checkSCIM");async function _x(){return be(Ae.Feature.VIEW_PERMISSIONS)}a(_x,"isViewPermissionEnabled");async function xx(){return be(Ae.Feature.VIEW_READONLY_COLUMNS)}a(xx,"isViewReadonlyColumnsEnabled");var Cx={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 Ox(e){return await Ps()?{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}:Cx}a(Ox,"getBrandingConfig");var Ms={};x(Ms,{enrichAIConfig:()=>ks});var qf=require("@budibase/backend-core");var Lx="budibase_ai";async function ks(e){if(qf.env.SELF_HOSTED)return e;for(let t of Object.values(e.config))if(t.provider==="BudibaseAI")return e;return e.config[Lx]={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}a(ks,"enrichAIConfig");var ft={};x(ft,{addAction:()=>kx,addApp:()=>Mx,addAutomation:()=>$x,addGroup:()=>Bs,addPlugin:()=>Fs,addRow:()=>Bx,addRows:()=>Fx,addUsers:()=>kn,bustCache:()=>Po,decrement:()=>St,decrementMany:()=>Ca,getCurrentUsageValues:()=>uc,getLicensedQuota:()=>kf,getQuotaUsage:()=>Ft,increment:()=>Me,incrementBudibaseAICredits:()=>Nn,incrementMany:()=>zt,removeApp:()=>Nx,removeGroup:()=>Gs,removePlugin:()=>Ws,removeRow:()=>Gx,removeRows:()=>Wx,removeUsers:()=>vr,set:()=>Ns,setAllUsage:()=>qo,setAppUsageValue:()=>Uo,setUsage:()=>oc,setUsagePerApp:()=>sc,updatePluginCount:()=>$s,updateUsage:()=>Tr,usageLimitIsExceeded:()=>Dx,utils:()=>Fr});var qn=require("@budibase/types");var et=require("@budibase/backend-core"),de=require("@budibase/types"),Yt=require("dd-trace");var Me=a(async(e,t,r)=>await Yt.tracer.trace("quotas.increment",async n=>(n.addTags({name:e,type:t}),await Df({change:1,name:e,type:t,opts:r}))),"increment"),zt=a(e=>Yt.tracer.trace("quotas.incrementMany",async()=>Df(e)),"incrementMany"),Df=a(async e=>await Yt.tracer.trace("quotas.tryIncrement",async t=>{let r=Array.isArray(e)?e:[e];t.addTags({numActions:r.length}),await Tr(r.map(o=>({usageChange:o.change,name:o.name,type:o.type,opts:{dryRun:!0,suppressErrorLog:o.opts?.suppressErrorLog,id:o.opts?.id}})));let n=[];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&&n.push(await i())});return await Tr(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}}))),n[0]}),"tryIncrement"),St=a((e,t,r={})=>Tr({usageChange:-1,name:e,type:t,opts:r}),"decrement"),Ca=a(e=>{let t=Array.isArray(e)?e:[e];return Tr(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},"decrementMany"),Ns=a(async(e,t,r)=>it.setUsage(r,e,t),"set"),Px=a((e,t,r)=>{if(e==de.QuotaUsageType.STATIC){let n=r.usageQuota.triggers;return n?n[t]||{}:{}}else{let n=it.utils.getCurrentMonthString(),o=r.monthly[n].triggers;return o?o[t]||{}:{}}},"getExistingTriggers"),Ux=a(async(e,t,r,n)=>{try{await et.locks.doWithLock({type:de.LockType.TRY_ONCE,name:de.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let o={percentage:r,name:t.name};n&&(o.resetDate=n),await Lt.triggerQuota(o)})}catch(o){et.logging.logAlert("Error triggering quota",o)}},"triggerQuota"),qx=a(async(e,t,r,n)=>{let o=await Ft(),s=e===de.QuotaUsageType.MONTHLY?o.quotaReset:void 0,i=await Px(e,t,o),u=n.triggers,c=r/n.value*100;c>100&&(c=100);for(let[f,g]of u.entries())if(c>=g&&n.value!==At.UNLIMITED){if(!i[g]){i[g]=new Date().toISOString();let y=u[f+1]||100;(!(c>=y)||c===g)&&await Ux(t,n,c,s)}}else i[g]=void 0;return i},"checkTriggers"),Tr=a(async e=>{await Yt.tracer.trace("quotas.updateUsage",async t=>{let r=et.tenancy.getTenantId(),n=Array.isArray(e)?e:[e];t.addTags({numActions:n.length,tenantId:r});let o,s,i=[],u={},c={},f={},g={};for(let y of n)await Yt.tracer.trace("quotas.updateUsage.action",async E=>{E.addTags({actionName:y.name,actionType:y.type,actionUsageChange:y.usageChange});try{o=et.context.getWorkspaceId()}catch{}if(de.APP_QUOTA_NAMES.includes(y.name)&&!o)throw new Error("App context required for quota update");try{s=await kf(de.QuotaType.USAGE,y.name,y.type),i.push(s);let{total:k,app:D,breakdown:C}=await it.getCurrentUsageValues(y.type,y.name,y.opts?.id);k+=y.usageChange,D!=null&&(D+=y.usageChange),C!=null&&(C+=y.usageChange);let W={};if(y.opts?.dryRun||(W=await qx(y.type,y.name,k,s),g={...g,[y.name]:W}),s.value!==At.UNLIMITED&&k>s.value&&y.usageChange>0)throw new et.UsageLimitError(`Licensed ${s.name} of ${s.value} has been exceeded`,s.name);if(k=Math.max(0,k),D&&(D=Math.max(0,D)),C&&(C=Math.max(0,C),f={...f,[y.name]:C}),!y.opts?.dryRun){let ye=y.opts?.valueFn;ye&&(k=await ye(),D=k),u={...u,[y.name]:k},c={...c,[y.name]:D}}}catch(k){throw y.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${y.name}`,k),k}});let h=n.filter(y=>!y.opts?.dryRun).map(y=>({name:y.name,type:y.type,values:{total:u[y.name],app:c[y.name],breakdown:f[y.name],triggers:g[y.name]},opts:{...y.opts,tenantId:r}}));h.length>0&&await it.setAllUsage(h)})},"updateUsage"),kf=a(async(e,t,r)=>{let n=await Je.getCachedLicense();if(!n){let o=et.tenancy.getTenantId();throw new Error("License not found for tenant id "+o)}if(r&&(0,de.isStaticQuota)(e,r,t))return n.quotas[e][r][t];if(r&&(0,de.isMonthlyQuota)(e,r,t))return n.quotas[e][r][t];if((0,de.isConstantQuota)(e,t))return n.quotas[e][t];throw new Error("Invalid quota type")},"getLicensedQuota"),Dx=a(async({name:e,type:t,usageChange:r})=>{try{return await Tr({usageChange:r,name:e,type:t,opts:{dryRun:!0}}),!1}catch(n){if(n.code===de.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw n}},"usageLimitIsExceeded");var kx=a(async e=>Me(qn.MonthlyQuotaName.ACTIONS,qn.QuotaUsageType.MONTHLY,{fn:e}),"addAction");var Mf=require("@budibase/backend-core"),Er=require("@budibase/types");var Nf=a(async()=>{let e=await Mf.db.getAllWorkspaces({dev:!0});return e?e.length:0},"getDevAppsCount"),Mx=a(async(e,{appId:t}={})=>Me(Er.StaticQuotaName.WORKSPACES,Er.QuotaUsageType.STATIC,{fn:e,valueFn:Nf,id:t}),"addApp"),Nx=a(async({appId:e}={})=>St(Er.StaticQuotaName.WORKSPACES,Er.QuotaUsageType.STATIC,{valueFn:Nf,id:e}),"removeApp");var lt=require("@budibase/types");var Bx=a(async(e,{tableId:t}={})=>Me(lt.StaticQuotaName.ROWS,lt.QuotaUsageType.STATIC,{fn:e,id:t}),"addRow"),Gx=a(async({tableId:e}={})=>St(lt.StaticQuotaName.ROWS,lt.QuotaUsageType.STATIC,{id:e}),"removeRow"),Fx=a(async(e,t,{tableId:r}={})=>zt({change:e,name:lt.StaticQuotaName.ROWS,type:lt.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),"addRows"),Wx=a(async(e,{tableId:t}={})=>Ca({change:e,name:lt.StaticQuotaName.ROWS,type:lt.QuotaUsageType.STATIC,opts:{id:t}}),"removeRows");var Dn=require("@budibase/types");var $x=a(async(e,{automationId:t}={})=>Me(Dn.MonthlyQuotaName.AUTOMATIONS,Dn.QuotaUsageType.MONTHLY,{fn:e,id:t}),"addAutomation");var Rr=require("@budibase/types");var Bs=a(async e=>Me(Rr.StaticQuotaName.USER_GROUPS,Rr.QuotaUsageType.STATIC,{fn:e}),"addGroup"),Gs=a(async()=>St(Rr.StaticQuotaName.USER_GROUPS,Rr.QuotaUsageType.STATIC),"removeGroup");var Dt=require("@budibase/types");var Fs=a(async e=>Me(Dt.StaticQuotaName.PLUGINS,Dt.QuotaUsageType.STATIC,{fn:e}),"addPlugin"),Ws=a(async()=>St(Dt.StaticQuotaName.PLUGINS,Dt.QuotaUsageType.STATIC),"removePlugin"),$s=a(async e=>Ns(Dt.StaticQuotaName.PLUGINS,Dt.QuotaUsageType.STATIC,e),"updatePluginCount");var dt=require("@budibase/types"),Oa=require("@budibase/backend-core");var kn=a(async(e,t,r)=>{let n=[{change:e,name:dt.StaticQuotaName.USERS,type:dt.QuotaUsageType.STATIC,opts:{fn:r,valueFn:Oa.users.getUserCount}}];t>0&&n.push({change:t,name:dt.StaticQuotaName.CREATORS,type:dt.QuotaUsageType.STATIC,opts:{valueFn:Oa.users.getCreatorCount}});let o=await zt(n);return await ir(),o},"addUsers"),vr=a(async(e,t)=>{let r=[{change:e,name:dt.StaticQuotaName.USERS,type:dt.QuotaUsageType.STATIC,opts:{valueFn:Oa.users.getUserCount}}];t>0&&r.push({change:t,name:dt.StaticQuotaName.CREATORS,type:dt.QuotaUsageType.STATIC,opts:{valueFn:Oa.users.getCreatorCount}}),await Ca(r),await ir()},"removeUsers");var Mn=require("@budibase/types");var Nn=a(async e=>zt({change:e,name:Mn.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:Mn.QuotaUsageType.MONTHLY}),"incrementBudibaseAICredits");var Wn={};x(Wn,{db:()=>Ke});var Hs=require("@budibase/backend-core");var re={};x(re,{addUsers:()=>Fn,adjustGroupCreatorsQuotas:()=>Vx,cleanupApp:()=>Kx,enrichUserRolesFromGroups:()=>Qx,fetch:()=>La,get:()=>_r,getBulk:()=>Qf,getGroupBuilderAppIds:()=>jf,getGroupRoleId:()=>jx,remove:()=>Qs,removeUsers:()=>Ks,save:()=>Gn,updateGroupApps:()=>Vs});var N=require("@budibase/backend-core");var Bf=require("@budibase/backend-core");var Bn=class extends Bf.HTTPError{static{a(this,"GroupNameUnavailableError")}constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function Wf(e,t){try{let r=[];for(let u of e)if(u.roles){let c=u.roles[N.db.getProdWorkspaceID(t)];c&&r.push(c)}let n=await Promise.all(r.map(async u=>({[u]:await N.roles.roleToNumber(u)}))),o,s,i={};n.forEach(u=>{let[c,f]=Object.entries(u)[0];i[c]={roleId:c,roleNum:f}});for(let{roleId:u,roleNum:c}of Object.values(i))(s===void 0||c>s)&&(s=c,o=u);return o}catch(r){throw N.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}a(Wf,"findHighestRole");async function $f(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await z.getBulk(e,{enriched:!1}),t}a($f,"groupList");async function jf(e,t){if(!e.userGroups)return[];let r=await $f(e.userGroups,t?.groups),n=t?.appId?N.db.getProdWorkspaceID(t?.appId):null,o=[];for(let s of r){let i=s.builder?.apps;n&&i?.includes(n)?o.push(n):n||(o=o.concat(i||[]))}return[...new Set(o)]}a(jf,"getGroupBuilderAppIds");async function jx(e,t,r){if(!e.userGroups)return null;let n=await $f(e.userGroups,r?.groups),o=N.db.getProdWorkspaceID(t);return e.roles?.[o]?e.roles[o]:(n=n.filter(s=>s?.roles?Object.keys(s.roles).includes(o):!1),await Wf(n,t))}a(jx,"getGroupRoleId");async function Qx(e){if(!e||!e.userGroups)return e;let t=await Qf(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 N.context.doInWorkspaceContext(o,async()=>{if(e.roles[o])return;let s=await Wf(t,o);s&&(e.roles[o]=s)});let n=await jf(e,{groups:t});if(n.length&&!e.builder?.global){let o=e.builder?.apps||[];e.builder={apps:o.concat(n)}}return e}a(Qx,"enrichUserRolesFromGroups");async function La(){return await z.fetch()}a(La,"fetch");async function _r(e){return await z.get(e)}a(_r,"get");async function Qf(e,t={enriched:!0}){return await z.getBulk(e,t)}a(Qf,"getBulk");async function Gf(e){if(await z.getByName(e))throw new Bn(e)}a(Gf,"guardNameAvailability");async function Ff(e){let t=await z.getGroupUsers(e._id);if(!t.length)return 0;let n=await N.tenancy.getGlobalDB().getMultiple(t.map(s=>s._id));return(await N.userUtils.creatorsInList(n)).filter(s=>s).length}a(Ff,"getCreatorsCountInGroup");async function Gn(e){let t=[],r=!e._id,n=0;if(delete e.users,!e._id)e._id=z.generateUserGroupID(),await Gf(e.name),t.push(N.events.group.created(e));else{let s=await z.get(e._id);if(s.name!==e.name&&await Gf(e.name),t.push(N.events.group.updated(e)),JSON.stringify(s.roles)!==JSON.stringify(e.roles)){let i=s.users?.length||0,u=0;i>0&&(u=await Ff(s)),Object.values(e.roles).includes("CREATOR")?n=i-u:n=-i,t.push(N.events.group.permissionsEdited(e))}}await Promise.all(t);let o=a(()=>z.save(e),"saveGroup");if(r)return await Bs(o);{let s=await o();if(n>0)await kn(0,n);else if(n<0){let i=await Ff(e),u=Math.abs(n)-i;u>0&&await vr(0,u)}return s}}a(Gn,"save");async function Qs(e,t){let r;try{r=await z.get(e)}catch{throw new Error("Group not found")}let n=Object.values(r.roles||{}).includes("CREATOR"),o=a(()=>{},"recalculateCreatorsQuotasFn");if(n){let i=N.tenancy.getGlobalDB(),u=await z.getGroupUsers(e),f=(await Promise.all(u.map(E=>i.get(E._id)))).map(E=>({...E,userGroups:E.userGroups.filter(M=>M!==e)})),h=(await N.userUtils.creatorsInList(f)).filter(E=>E).length,y=u.length-h;y&&(o=a(()=>vr(0,y),"recalculateCreatorsQuotasFn"))}let s=await z.destroy(e,t);return await N.events.group.deleted(r),await Gs(),await o(),s}a(Qs,"remove");async function Fn(e,t){let r=await z.get(e),n=await N.users.bulkGetGlobalUsersById(t),o=[];for(let c of n)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 N.users.bulkUpdateGlobalUsers(s),Object.values(r.roles||{}).includes("CREATOR")){let f=(await N.userUtils.creatorsInList(o)).filter(h=>h).length,g=o.length-f;g&&await kn(0,g)}let u=[];for(let c of t)u.push(N.cache.user.invalidateUser(c));return await Promise.all(u),await N.events.group.usersAdded(s.length,r,t),s}a(Fn,"addUsers");async function Ks(e,t){let r=await z.get(e),n=await N.users.bulkGetGlobalUsersById(t),o=[];for(let u of n){if(!u.userGroups||!u.userGroups.includes(e))continue;let c=u.userGroups.indexOf(e);u.userGroups.splice(c,1),o.push(u)}if(await N.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes("CREATOR")){let c=(await N.userUtils.creatorsInList(o)).filter(g=>g).length,f=o.length-c;f&&await vr(0,f)}let i=[];for(let u of t)i.push(N.cache.user.invalidateUser(u));return await Promise.all(i),o.length&&await N.events.group.usersDeleted(o.length,r,t),o}a(Ks,"removeUsers");async function Vs(e,t){let r=await _r(e);if(r.roles||(r.roles={}),t.appsToAdd)for(let n of t.appsToAdd)r.roles[n.appId]=n.roleId;if(t.appsToRemove)for(let n of t.appsToRemove)delete r.roles[n.appId];if(r.builder={apps:Object.entries(r.roles).filter(([n,o])=>o==="CREATOR").map(([n])=>n)},r.builder.apps.length&&!Us())throw new N.HTTPError("Feature not enabled, please check license",400);return await Gn(r)}a(Vs,"updateGroupApps");async function Kx(e){let t=await La(),r=[];for(let n of t)!n.roles||!n.roles[e]||(delete n.roles[e],r.push(n));return await z.bulkSave(r)}a(Kx,"cleanupApp");async function Vx(){if(!await qs()){let e=N.tenancy.getGlobalDB(),r=(await La()||[]).filter(n=>Object.values(n?.roles||{}).includes("CREATOR"));for(let n of r){let o=await z.getGroupUsers(n._id),i=(await Promise.all(o.map(g=>e.get(g._id)))).map(g=>({...g,userGroups:g.userGroups.filter(h=>h!==n._id)})),c=(await N.userUtils.creatorsInList(i)).filter(g=>g).length,f=o.length-c;await z.save({...n,roles:{}}),f&&await vr(0,f)}}}a(Vx,"adjustGroupCreatorsQuotas");Hs.users.UserDB.init(ft,re,Ze);var Ke=Hs.users.UserDB;var Qn={};x(Qn,{logs:()=>ti});var ti={};x(ti,{logSearch:()=>rC,oldestLogDate:()=>Xf,storeLog:()=>aC});var jn=require("@budibase/backend-core"),Jf=require("@budibase/types");var ge=require("@budibase/backend-core"),$n=require("@budibase/types");var Kf=require("@budibase/backend-core");async function Vf(e,t){let r,n=5,o=!1,s,i=!0;for(;n>0;n--)try{i?s=await e():s=await exports.randomDelay(e),o=!0;break}catch(u){r=u}return o||Kf.logging.logWarn(`Failed to backoff: ${t}`,r),s}a(Vf,"backOff");var{SEPARATOR:wt,UNICODE_MAX:Hx,DocumentType:Hf,AutomationViewMode:Ys,ViewName:Yx,getQueryIndex:zx}=ge.db,Jx=new Date(0).toISOString(),Xx=100,zs=a(async()=>sn($n.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS),"oldestLogDate");function Yf(e,t,{status:r,automationId:n}={},o={}){let s=n?`${n}${wt}`:"",i=r?`${r}${wt}`:"",u;return r&&n?u=`${Ys.ALL}${wt}${i}${s}`:r?u=`${Ys.STATUS}${wt}${i}`:n?u=`${Ys.AUTOMATION}${wt}${s}`:u=`${Hf.AUTOMATION_LOG}${wt}`,{...o,descending:!0,startkey:`${u}${t}${Hx}`,endkey:`${u}${e}`}}a(Yf,"getAutomationLogParams");function Zx(e,t,r){return`${Hf.AUTOMATION_LOG}${wt}${e}${wt}${r}${wt}${t}`}a(Zx,"generateAutomationLogID");async function Js(e,t,r={docs:!0}){let n=ge.context.getProdWorkspaceDB();await n.exists()||(n=ge.context.getDevWorkspaceDB());let o={status:r.status},s=r?.limit?r.limit:r?.paginate?9+1:void 0,i=Yf(e,t,o,{include_docs:r.docs,limit:s});r?.page&&(i.startkey=r.page);let u=await n.allDocs(i);return oa(u,{paginate:r?.paginate,pageSize:9})}a(Js,"getAllLogs");async function Xs(e,t,r={}){let n=ge.context.getProdWorkspaceDB();await n.exists()||(n=ge.context.getDevWorkspaceDB());let o;try{let s={automationId:r?.automationId,status:r?.status},i=Yf(e,t,s,{include_docs:!0,limit:9+1});r?.page&&(i.startkey=r.page),o=await n.query(zx(Yx.AUTOMATION_LOGS),i)}catch(s){if(s!=null&&(s.name==="not_found"||s.error==="not_found"))return await Tc(),Xs(e,t,r);throw s}return oa(o,{paginate:!0,pageSize:9})}a(Xs,"getLogsByView");async function zf(e,t){let r=ge.context.getProdWorkspaceDB(),n=e._id,o=e.name,s=new Date().toISOString(),i=Zx(s,t.status,n),u={...t,automationId:n,status:t.status,automationName:o,createdAt:s,_id:i};return await r.put(u),i}a(zf,"writeLog");async function Zs(e,{clearing:t}={clearing:!1}){let r=ge.context.getProdWorkspaceDB();await Vf(async()=>{let n=await r.get(ge.db.DocumentType.WORKSPACE_METADATA);for(let o of e){let s=o.split(ge.db.SEPARATOR),i=`${s[s.length-3]}${ge.db.SEPARATOR}${s[s.length-2]}`,u={};n.automationErrors&&(u=n.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],n.automationErrors=u}await r.put(n),await ge.cache.workspace.invalidateWorkspaceMetadata(n.appId,n)},"Failed to update app metadata with automation log error")}a(Zs,"updateAppMetadataWithErrors");async function eC(){let e=await zs();try{return await Js(Jx,e,{docs:!1,paginate:!1,limit:Xx})}catch{return{data:[],hasNextPage:!1}}}a(eC,"getExpiredLogs");async function ei(){let e=ge.context.getProdWorkspaceDB();try{let t=await eC();if(!t.data||t.data.length===0)return;let r=t.data.map(o=>({_id:o.id,_rev:o.value.rev,_deleted:!0})),n=t.data.filter(o=>{let s=o.id.split(ge.db.SEPARATOR);return s[s.length-1]===$n.AutomationStatus.ERROR}).map(o=>o.id);await e.bulkDocs(r),n.length&&await Zs(n,{clearing:!0})}catch(t){ge.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}a(ei,"clearOldHistory");var Xf=zs;async function tC(e,t,r,n){let o,s=new Date().toISOString(),i=await Xf();return(!e||e<i)&&(e=i),r||t?o=await Xs(e,s,{automationId:r,status:t,page:n}):o=await Js(e,s,{status:t,page:n,docs:!0,paginate:!0}),o}a(tC,"getLogs");async function rC(e){return await ei(),await tC(e.startDate,e.status,e.automationId,e.page)}a(rC,"logSearch");async function aC(e,t){if(!jn.db.isProdWorkspaceID(jn.context.getWorkspaceId()))return;let r=await zf(e,t);t.status===Jf.AutomationStatus.ERROR&&await Zs([r]),await ei()}a(aC,"storeLog");var Kn={};x(Kn,{checkPluginQuotas:()=>sC,deletePlugin:()=>oC,storePlugin:()=>nC});var rm=require("@budibase/types"),fe=require("@budibase/backend-core");var Zf=F(require("fs")),em=require("path");function tm(e,t){return Zf.default.readFileSync((0,em.join)(e,t),"utf8")}a(tm,"loadJSFile");async function nC(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===rm.PluginType.DATASOURCE){let js=tm(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=a(async()=>{let e=await db.put(doc);return await fe.events.plugin.imported(doc),{...doc,_rev:e.rev}},"write");return rev?await write():await Fs(write)}a(nC,"storePlugin");async function oC(e){let t=fe.tenancy.getGlobalDB();try{let r=await t.get(e),n=fe.objectStore.getPluginS3Dir(r.name);await fe.objectStore.deleteFolder(fe.objectStore.ObjectStoreBuckets.PLUGINS,n),await t.remove(e,r._rev),await fe.events.plugin.deleted(r),await Ws()}catch(r){let n=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${n}`)}}a(oC,"deletePlugin");async function sC(){let e=fe.tenancy.getGlobalDB();try{let r=(await e.allDocs(fe.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await $s(r)}catch(t){fe.logging.logAlert("Unable to retrieve plugins for quota check",t)}}a(sC,"checkPluginQuotas");var mt={};x(mt,{fetch:()=>uC,fetchValues:()=>cC,isEncryptionKeyAvailable:()=>iC,isValid:()=>om,remove:()=>lC,update:()=>pC});var am=require("@budibase/backend-core"),Pa=require("@budibase/types");function iC(){return!!am.env.ENCRYPTION_KEY}a(iC,"isEncryptionKeyAvailable");async function uC(){let e=await jt.get();return Object.keys(e.variables)}a(uC,"fetch");async function cC(e){let r=(await jt.get()).variables,n={};for(let[o,s]of Object.entries(r))switch(e){case Pa.Environment.DEVELOPMENT:n[o]=s.development;break;case Pa.Environment.PRODUCTION:default:n[o]=s.production;break}return n}a(cC,"fetchValues");async function nm(e){if(!(await ct.cache.getCachedLicense()).features.includes(Pa.Feature.ENVIRONMENT_VARIABLES))throw new Error("User does not have access to environment variables feature.");let r=await jt.get();r.variables=e(r.variables),await jt.update(r)}a(nm,"changeValues");async function pC(e,t){if(om(e))await nm(n=>(n[e]=t,n));else throw new Error("Variable name has characters that are not allowed")}a(pC,"update");async function lC(e){await nm(t=>(delete t[e],t))}a(lC,"remove");function om(e){return/^[a-zA-Z0-9-_]+$/.test(e)}a(om,"isValid");var kt={};x(kt,{definitions:()=>wC,download:()=>SC,fetch:()=>IC,write:()=>AC});var Pe=require("@budibase/backend-core"),Hn=require("@budibase/types");var ue=require("@budibase/backend-core"),tt=require("@budibase/types");var sm=require("memorystream"),im=new ue.sql.Sql(tt.SqlClient.SQL_LITE);async function dC(e,t,r){let n={operation:tt.Operation.READ,table:or.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:tt.SortOrder.DESCENDING,type:tt.SortType.STRING}}},o=im._query(n);if(Array.isArray(o))throw new Error("Cannot execute multiple queries for audit log search");return{sql:o.sql,bindings:o.bindings}}a(dC,"getAuditLogSqlQuery");function fC(e){return`${ue.DocumentType.AUDIT_LOG}${ue.SEPARATOR}${e}${ue.SEPARATOR}${ue.utils.newid()}`}a(fC,"generateAuditLogID");async function um(e){e._id||(e._id=fC(e.timestamp)),e.type||(e.type=tt.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)}}a(um,"save");async function ri(e,t,r){t||(t=1);let n=ue.context.getAuditLogsDB();try{let o=9+1,s=await dC(e,t,o),i=or.searchTable(),u=im.convertJsonStringColumns(i,await n.sql(s.sql,s.bindings)),c;u.length>o&&(c=u.pop());let f={rows:u,hasNextPage:!!c};return f.hasNextPage&&(f.bookmark=t+1),f}catch(o){if(o.status===404&&!r?.isRetry)return await mC(),await cc(),await ri(e,t,{isRetry:!0});throw o}}a(ri,"searchSQL");async function mC(){let e=ue.context.getAuditLogsDB(),r=(await e.allDocs(ue.db.getDocParams(ue.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(n=>n.doc).filter(n=>n&&!n.type).map(n=>({...n,type:tt.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}a(mC,"migrate");function cm(e){let t=ue.context.getAuditLogsDB(),r=new sm,n=t.dump(r,{filter:s=>{let i=s;if(!i._id?.startsWith(ue.DocumentType.AUDIT_LOG))return!1;let u=!0,c=a((f,g)=>{!f||f.length===0||(u=!!(u&&g&&f.includes(g)))},"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 f=JSON.stringify(s);u=u&&f.includes(e.fullSearch)}return u}}),o=new sm;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:n,stream:o}}a(cm,"dump");var Ua=require("@budibase/backend-core"),qa=require("@budibase/string-templates"),Vn=require("@budibase/types");var hC=Ua.constants.MIN_VALID_DATE.toISOString(),yC=Ua.constants.MAX_VALID_DATE.toISOString();function ai(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||hC,e.endDate=e.endDate||yC),e}a(ai,"fillDates");async function pm(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(n=>Ua.db.getProdWorkspaceID(n)));let t={};function r(n,o){o?.length&&(t.oneOf={...t.oneOf,[n]:o})}return a(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=ai(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}a(pm,"getSearchFilters");function ni(e,t,r){let n={_id:e,status:Vn.AuditLogResourceStatus.DELETED};switch(t){case"app":n.name=r?.appName;break;case"user":n.email=r?.email;break}return n}a(ni,"deleted");function oi(e){let t=(0,qa.findHBSBlocks)(e);for(let r of t){let n=` "${r}"`;e=e.replace(e.includes(n)?n:` ${r}`,""),e=(0,qa.processStringSync)(e,{})}return e}a(oi,"removeTemplateStrings");function lm(e,t){let r=Vn.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let n=(0,qa.processStringSync)(r,t);return n.includes('""')&&(n=oi(r)),n}a(lm,"getEventFriendlyName");async function AC(e,t,r){if(!await Pn()||!Pe.utils.isAudited(e))return;let n=lm(e,t),o=new Date;r?.timestamp&&(o=new Date(r.timestamp));let s={timestamp:o.toISOString(),event:e,name:n,userId:r?.userId||Hn.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 um(s)}a(AC,"write");async function bC(e){let t=e.map(u=>u.userId),n=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(n)]),i=[];for(let u of e){let c=o.find(h=>h?._id===u.userId),f=s.find(h=>Pe.db.isSameWorkspaceID(h?.appId,u.appId)),g={event:u.event,timestamp:u.timestamp,name:u.name,metadata:u.metadata,user:c||ni(u.userId,"user",u.fallback)};u.appId&&(g.app=f||ni(u.appId,"app",u.fallback)),i.push(g)}return i}a(bC,"enrich");async function IC(e){if(!await Pn())throw new Error("Audit logs not available - license required.");let t=await pm(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await ri(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await bC(r.rows)}}a(IC,"fetch");function SC(e){return e=ai(e),cm(e)}a(SC,"download");function wC(){let e=Object.entries(Hn.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=oi(r[1]);return t}a(wC,"definitions");var Yn={};x(Yn,{applications:()=>ci,roles:()=>ii,users:()=>si});var si={};x(si,{roleCheck:()=>EC});function TC(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}a(TC,"removeRoles");async function EC(e,t){return await It()||TC(e,t),e}a(EC,"roleCheck");var ii={};x(ii,{assign:()=>RC,unAssign:()=>vC});var Da=require("@budibase/backend-core");async function RC(e,t){if(!await It())throw new Error("Unable to assign roles - license required.");let r=await Ke.bulkGet(e);for(let n of r){if(t.role&&t.role.roleId){let o=Da.db.getProdWorkspaceID(t.role.appId);n.roles[o]=t.role.roleId}if(t.appBuilder){let o=Da.db.getProdWorkspaceID(t.appBuilder.appId),s=n.builder?.apps||[];n.builder={apps:s.concat([o])}}t.builder&&(n.builder={global:!0}),t.admin&&(n.admin={global:!0}),n.roles}await Ke.bulkUpdate(r)}a(RC,"assign");async function vC(e,t){if(!await It())throw new Error("Unable to un-assign roles - license required.");let r=await Ke.bulkGet(e);for(let n of r){if(t.role){let o=Da.db.getProdWorkspaceID(t.role?.appId);n.roles[o]===t.role.roleId&&delete n.roles[o]}if(t.appBuilder&&n.builder?.apps){let o=Da.db.getProdWorkspaceID(t.appBuilder.appId);n.builder.apps=n.builder.apps.filter(s=>s!==o)}t.builder&&n.builder&&delete n.builder,t.admin&&n.admin&&delete n.admin}}a(vC,"unAssign");var ci={};x(ci,{buildExportFn:()=>xC,buildImportFn:()=>_C});var ui=require("@budibase/backend-core");function _C(e){return async(t,r)=>{await It()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await ui.context.doInWorkspaceContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}a(_C,"buildImportFn");function xC(e){return async(t,r)=>{await It()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:n,excludeRows:o}=t.request.body;await ui.context.doInWorkspaceContext(t.params.appId,async()=>{t.request.body={encryptPassword:n,excludeRows:o},t.query.appId=t.params.appId,await e(t),await r()})}}a(xC,"buildExportFn");var Se=require("@budibase/backend-core"),Ie=require("@budibase/types"),mm=F(require("fs")),gm=require("path");var pi=require("@budibase/backend-core");var dm;function fm(){dm=new pi.queue.BudibaseQueue(pi.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}a(fm,"init");function Jt(){return dm}a(Jt,"getBackupQueue");async function li(e,t={}){return je.storeAppBackupMetadata(e,t)}a(li,"storeAppBackupMetadata");function hm(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}}}a(hm,"getTimestamps");async function CC(e,t,r,n){let o=await zn(e);return await je.storeAppBackupMetadata({...o,...hm(t),contents:r,status:t,type:Ie.BackupType.BACKUP},{filename:n,docId:e})}a(CC,"updateBackupStatus");async function OC(e,t,r){let n=await zn(e);return await je.storeAppBackupMetadata({...n,...hm(r),status:r,type:Ie.BackupType.RESTORE,trigger:Ie.BackupTrigger.MANUAL},{docId:e,docRev:t})}a(OC,"updateRestoreStatus");async function zn(e){return je.getAppBackupMetadata(e)}a(zn,"getAppBackup");async function LC(e,t){return je.updateAppBackupMetadata(e,t)}a(LC,"updateAppBackup");async function ym(e){let t=await je.getAppBackupMetadata(e);return t.filename&&await Se.objectStore.deleteFile(Se.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),je.deleteAppBackupMetadata(e)}a(ym,"deleteAppBackup");async function PC(e){let t=[];for(let r of e)try{await ym(r),t.push({backupId:r,success:!0})}catch(n){t.push({backupId:r,success:!1,error:n instanceof Error?n.message:"Unknown error"})}return t}a(PC,"deleteAppBackups");async function UC(e,t){return je.fetchAppBackups(e,t)}a(UC,"fetchAppBackups");async function Am(e){let t=await je.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let{stream:r}=await Se.objectStore.getReadStream(Se.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}a(Am,"getBackupDownloadStream");async function qC(e){let{stream:t}=await Am(e),r=(0,gm.join)(Se.objectStore.budibaseTempDir(),Se.utils.newid()),n=mm.default.createWriteStream(r);return new Promise((o,s)=>{t.on("error",s),n.on("error",s),t.pipe(n).on("close",()=>o(r))})}a(qC,"downloadAppBackup");async function DC(e,t,r={}){let n;try{n=await li({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 Jt().add({docId:n.id,docRev:n.rev,appId:e,export:{trigger:t,...r}}),await Se.events.backup.appBackupTriggered(e,n.id,Ie.BackupType.BACKUP,t,r?.name),n.id}a(DC,"triggerAppBackup");async function kC(e,t,r,n){let o=await zn(t),s;try{s=await li({appId:e,timestamp:new Date().toISOString(),status:Ie.BackupStatus.PENDING,type:Ie.BackupType.RESTORE,createdBy:n})}catch(i){if(i?.status===409)return;throw i}return await Jt().add({appId:e,docId:s.id,docRev:s.rev,import:{nameForBackup:r,backupId:t,createdBy:n}}),{restoreId:s.id,metadata:o}}a(kC,"triggerAppRestore");async function MC(e,t,r){let n=Se.db.getProdWorkspaceID(e);await Se.context.doInWorkspaceContext(n,async()=>{let o=Se.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 Se.cache.workspace.invalidateWorkspaceMetadata(i.appId,i))})}a(MC,"trackBackupError");var NC={isEnabled:Ls,triggerAppRestore:xe(kC),triggerAppBackup:xe(DC),getBackupDownloadStream:xe(Am),downloadAppBackup:xe(qC),fetchAppBackups:xe(UC),storeAppBackupMetadata:xe(li),updateBackupStatus:xe(CC),updateRestoreStatus:xe(OC),getAppBackup:xe(zn),updateAppBackup:xe(LC),deleteAppBackup:xe(ym),deleteAppBackups:xe(PC),trackBackupError:xe(MC)},Ve=NC;var fi={};x(fi,{init:()=>di});var ae=require("@budibase/backend-core"),rt=require("@budibase/types"),xr=F(require("fs"));async function di(e){Jt().process(async t=>{let r=t.data;try{if(r.export)return console.log("Exporting app backup:",r.appId,r.export.trigger),FC(t,e);if(r.import)return console.log("Importing app backup:",r.appId,r.import.backupId),GC(t,e)}catch(n){ae.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,n)}})}a(di,"init");async function BC(e){await ae.db.getDB(e,{skip_setup:!0}).destroy()}a(BC,"removeExistingApp");async function bm(e,t,r,n){let o=ae.db.getDevWorkspaceID(r),s=ae.db.getProdWorkspaceID(r),i=new Date().toISOString(),u=a(async(c,f)=>{n?.doc?await Ve.updateBackupStatus(n.doc.id,c,f?.contents,f?.filename):await Ve.storeAppBackupMetadata({appId:s,timestamp:i,trigger:e,status:c,name:n?.name,type:rt.BackupType.BACKUP,contents:f?.contents,createdBy:n?.createdBy},{filename:f?.filename})},"updateMetadata");try{let c=await n.processing.exportAppFn(o,{tar:!0}),f=await n.processing.statsFn(o),g=`${s}/backup-${i}.tar.gz`,h=ae.objectStore.ObjectStoreBuckets.BACKUPS,y=xr.default.createReadStream(c);await ae.objectStore.streamUpload({bucket:h,filename:g,stream:y,extra:{type:"application/gzip",metadata:{name:n?.name,trigger:e,timestamp:i,appId:s}}}),await u(rt.BackupStatus.COMPLETE,{filename:g,contents:f}),xr.default.existsSync(c)&&xr.default.rmSync(c)}catch(c){ae.logging.logAlert("App backup error",c),await u(rt.BackupStatus.FAILED);let f=n?.doc?.id||`backup-${i}`,g=c instanceof Error?c.message:String(c);await Ve.trackBackupError(s,f,`Backup export failed: ${g}`)}}a(bm,"runBackup");async function GC(e,t){let r=e.data,n=r.appId,o=r.import.backupId,s=r.import.nameForBackup,i=r.import.createdBy,u=ae.tenancy.getTenantIDFromWorkspaceID(n);return ae.tenancy.doInTenant(u,async()=>{let c=ae.db.getDevWorkspaceID(n),f=`${c}_temp_${Date.now()}`,{rev:g}=await Ve.updateRestoreStatus(r.docId,r.docRev,rt.BackupStatus.STARTED);await bm(rt.BackupTrigger.RESTORING,u,n,{processing:t,createdBy:i,name:s});let h=await Ve.downloadAppBackup(o),y=rt.BackupStatus.COMPLETE;try{await t.importAppFn(f,ae.db.getDB(f),{file:{type:"application/gzip",path:h},key:h}),await BC(c),await new ae.db.Replication({source:f,target:c}).replicate()}catch(E){ae.logging.logAlert("App restore error",E),y=rt.BackupStatus.FAILED;let M=E instanceof Error?E.message:String(E);await Ve.trackBackupError(n,o,`Backup restore failed: ${M}`)}finally{try{await ae.db.getDB(f,{skip_setup:!0}).destroy()}catch{}}await Ve.updateRestoreStatus(r.docId,g,y),xr.default.existsSync(h)&&xr.default.rmSync(h,{force:!0})})}a(GC,"importProcessor");async function FC(e,t){let r=e.data,n=r.appId,o=r.export.trigger,s=r.export.name,i=ae.tenancy.getTenantIDFromWorkspaceID(n);await ae.tenancy.doInTenant(i,async()=>{try{let{rev:u}=await Ve.updateBackupStatus(r.docId,rt.BackupStatus.STARTED);return bm(o,i,n,{processing:t,doc:{id:r.docId,rev:u},name:s})}catch(u){ae.logging.logAlert("App backup error",u);let c=u instanceof Error?u.message:String(u);await Ve.trackBackupError(n,r.docId,`Backup export failed: ${c}`)}})}a(FC,"exportProcessor");var WC=a(async e=>{fm(),await di(e.processing)},"init"),Ne={...Ve,processing:fi,init:WC,getBackupQueue:Jt};var Im=a(async e=>{e.backups&&await Ne.init(e.backups)},"init");var qe={};x(qe,{create:()=>DN,find:()=>qN,get:()=>UN,remove:()=>MN,update:()=>kN});var WA=F(iu()),Tt=require("@budibase/backend-core");var $A=require("@budibase/types");async function UN(e){let t=Tt.tenancy.getGlobalDB(),r=new Tt.db.QueryBuilder(t.name,$A.SearchIndex.USER);r.setIndexBuilder(Tt.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 n=await r.run();return{users:n.rows,total:n.totalRows}}a(UN,"get");async function qN(e){return await Tt.users.getById(e)}a(qN,"find");async function DN(e){let t=await Ke.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new Tt.HTTPError("User is already synched",409);e={...t,scimInfo:(0,WA.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await Ke.save(e,{requirePassword:!1})}a(DN,"create");async function kN(e,t){return await Ke.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}a(kN,"update");async function MN(e){return await Ke.destroy(e)}a(MN,"remove");var qr={};x(qr,{create:()=>NN});var jA=F(iu());var QA=require("@budibase/backend-core");async function NN(e){let t=await ko(e.name),r;if(!t)r=(await re.save(e)).id;else{if(t.scimInfo?.isSync)throw new QA.HTTPError("Group is already synched",409);r=t._id,t.users&&(await re.removeUsers(r,t.users.map(o=>o._id)),delete t.users),t.scimInfo=(0,jA.default)(t.scimInfo,e.scimInfo),await re.save(t)}return await re.get(r)}a(NN,"create");var Zt={};x(Zt,{logRequest:()=>FN,logResponse:()=>WN});var at=require("@budibase/backend-core"),VA=F(KA());var{DocWritethrough:BN}=at.cache.docWritethrough;function GN(){return`${at.db.DocumentType.SCIM_LOG}${at.db.SEPARATOR}${(0,VA.default)().format("YYYYMMDD")}`}a(GN,"getLogDocId");var HA=a(()=>{let e=at.context.getScimDBName();return new BN(at.db.getDB(e),GN())},"getDB");async function FN(e){at.logging.logWarn("SCIM request log",e);let t=Date.now().toString();return await HA().patch({[`${t}_request`]:{ts:new Date().toISOString(),...e}}),t}a(FN,"logRequest");async function WN(e,t){at.logging.logWarn("SCIM response",t),await HA().patch({[`${e}_response`]:{ts:new Date().toISOString(),...t}})}a(WN,"logResponse");var hu={};x(hu,{doInScimContext:()=>lu,feature:()=>we,internalGroupOnly:()=>Ga,licenseAuth:()=>gu,licensing:()=>YA,requireSCIM:()=>du,scimGroupOnly:()=>Ba,scimUserOnly:()=>Na});var Mt=require("@budibase/backend-core");var co=require("@budibase/types");var $N=a((e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(Mt.env.SELF_HOSTED&&Mt.env.DEFAULT_LICENSE)return t.user.license=Mo,r();t.user.license=await ct.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(Mt.utils.isServingApp(t)||Mt.utils.isServingBuilder(t)||Mt.utils.isServingBuilderPreview(t)||Mt.utils.isPublicApiRequest(t))&&await ft.usageLimitIsExceeded({name:co.StaticQuotaName.USERS,type:co.QuotaUsageType.STATIC,usageChange:0})}return r()},"licensing"),YA=$N;var we={};x(we,{requireFeature:()=>jN,requireFeatures:()=>QN});var jN=a(e=>async(t,r)=>{await Ln(e),await r()},"requireFeature"),QN=a((...e)=>async(t,r)=>{await Os(e),await r()},"requireFeatures");var po=require("@budibase/backend-core");var lu=a(async(e,t)=>{let r;return po.env.ENABLE_SCIM_LOGGER&&(r=await Zt.logRequest({...e.request.toJSON(),body:e.request.body})),await po.context.doInScimContext(async()=>{let n=await t();return r&&await Zt.logResponse(r,{...e.response.toJSON(),body:e.response.body}),n})},"doInScimContext");var du=a(async(e,t)=>{await Ds(),await t()},"requireSCIM");var zA=require("@budibase/backend-core");var Na=a(e=>fu(zA.users.getById,e,!0),"scimUserOnly"),Ba=a(e=>fu(z.get,e,!0),"scimGroupOnly"),Ga=a(e=>fu(z.get,e,!1),"internalGroupOnly");function fu(e,t,r){return async(n,o)=>{let s=n.params[t];return typeof s!="string"&&n.throw(404),!!(await e(s)).scimInfo?.isSync!==r&&n.throw(404),o()}}a(fu,"scimSyncChecks");var Fa=require("@budibase/backend-core");var mu=require("dd-trace");async function gu(e,t){await mu.tracer.trace("licenseAuth",async r=>{let n=e.request.headers[Fa.constants.Header.LICENSE_KEY];Array.isArray(n)&&(n=n[0]),r.addTags({licenseKey:n}),n||e.throw(403,"License key not provided");let o=await vs(n);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"),mu.tracer.setUser({id:"anonymous",tenantId:o.tenantId}),await Fa.context.doInSelfHostTenantUsingCloud(o.tenantId,async()=>{await Fa.context.doInLicenseContext(o,async()=>{await t()})})})}a(gu,"default");var wu={};x(wu,{appBackups:()=>sb,auditLogs:()=>gb,environmentVariables:()=>Eb,groups:()=>kb,scim:()=>dI});var Et=require("@budibase/backend-core"),fo=require("@budibase/types"),nb=F(require("@koa/router")),tr=F(require("joi"));var lo=require("@budibase/backend-core"),yu=require("@budibase/types");async function er(e,t){t||e.throw(400,"App ID missing"),await cr.workspaceExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}a(er,"checkAppID");async function JA(e){let t=e.params.appId;await er(e,t);let{body:r}=e.request,n=e.user?._id,o=await Ne.triggerAppBackup(t,yu.BackupTrigger.MANUAL,{name:r.name,createdBy:n});o||e.throw(500,"Unable to start backup."),e.body={backupId:o,message:"Backup triggered - process starting."}}a(JA,"manualBackup");async function XA(e){let t=e.params.appId;await er(e,t);let r=e.params.backupId,n=e.request.body.name,o=await Ne.triggerAppRestore(t,r,n,e.user?._id);o||e.throw(500,"Unable to start restore."),await lo.events.backup.appBackupRestored(o.metadata),e.body={restoreId:o?.restoreId,message:"Restore triggered - process starting."}}a(XA,"importBackup");async function ZA(e){let t=e.params.appId;await er(e,t);let r=e.params.backupId;await Ne.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}a(ZA,"deleteBackup");async function eb(e){let t=lo.context.getWorkspaceId();await er(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 n=await Ne.deleteAppBackups(r),o=n.filter(i=>i.success).length,s=n.length-o;e.body={message:`${o} backups deleted successfully${s>0?`, ${s} failed`:""}.`,results:n,successCount:o,failureCount:s}}a(eb,"deleteBackups");async function tb(e){let t=e.params.appId;await er(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(yu.BackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await Ne.fetchAppBackups(t,{paginate:!0,...r})}a(tb,"fetchBackups");async function rb(e){let t=e.params.appId;await er(e,t);let r=e.params.backupId,n=e.request.body;e.body=await Ne.updateAppBackup(r,n.name)}a(rb,"updateBackup");async function ab(e){let t=e.params.appId;await er(e,t);let r=e.params.backupId,{metadata:n,stream:o}=await Ne.getBackupDownloadStream(r);e.attachment(`backup-${n.timestamp}.tar.gz`),e.body=o}a(ab,"downloadBackup");var ob=new nb.default;function VN(){return Et.auth.joiValidator.body(tr.default.object({trigger:tr.default.string().valid(...Object.values(fo.BackupTrigger)),type:tr.default.string().valid(...Object.values(fo.BackupType)),startDate:tr.default.date(),endDate:tr.default.date(),page:tr.default.string()}))}a(VN,"validateBackupSearch");ob.post("/api/apps/:appId/backups",Et.auth.builderOrAdmin,JA).post("/api/apps/:appId/backups/search",Et.auth.builderOrAdmin,VN(),tb).get("/api/apps/:appId/backups/:backupId/file",Et.auth.builderOrAdmin,ab).patch("/api/apps/:appId/backups/:backupId",Et.auth.builderOrAdmin,rb).delete("/api/apps/:appId/backups/:backupId",Et.auth.builderOrAdmin,ZA).delete("/api/apps/:appId/backups",Et.auth.builderOrAdmin,eb).post("/api/apps/:appId/backups/:backupId/import",Et.auth.builderOrAdmin,XA);var sb=ob;var Au=require("@budibase/backend-core");async function ib(e){let t=e.request.body,r=await kt.fetch(t);await Au.events.auditLog.filtered(t),e.body=r}a(ib,"search");async function ub(e){let t=e.request.body,{stream:r}=kt.download(t);await Au.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}a(ub,"download");async function cb(e){e.body={events:kt.definitions()}}a(cb,"definitions");var lb=require("@budibase/types"),rr=require("@budibase/backend-core"),fb=F(require("@koa/router")),He=F(require("joi"));function pb(){return rr.auth.joiValidator.body(He.default.object({userIds:He.default.array().items(He.default.string()).optional(),appIds:He.default.array().items(He.default.string()).optional(),events:He.default.array().items(He.default.string().valid(...Object.values(lb.Event))).optional(),startDate:He.default.string().optional().allow(""),endDate:He.default.string().optional().allow(""),fullSearch:He.default.string().optional().allow(""),bookmark:He.default.number()}))}a(pb,"buildAuditLogSearchValidator");var mb=new fb.default;mb.post("/api/global/auditlogs/search",rr.auth.adminOnly,pb(),ib).get("/api/global/auditlogs/download",rr.auth.adminOnly,rr.middleware.querystringToBody,pb(),ub).get("/api/global/auditlogs/definitions",rr.auth.adminOnly,cb);var gb=mb;var Iu=require("@budibase/backend-core"),bu=require("@budibase/types");async function hb(e){e.body={encryptionKeyAvailable:mt.isEncryptionKeyAvailable()}}a(hb,"status");async function yb(e){e.body={variables:await mt.fetch()}}a(yb,"fetch");async function Ab(e){let{name:t,production:r,development:n}=e.request.body;await mt.update(t,{production:r,development:n});let o=[bu.Environment.PRODUCTION];r!==n&&o.push(bu.Environment.DEVELOPMENT),await Iu.events.environmentVariable.created(t,o),e.body={message:`Environment variable "${t}" created.`}}a(Ab,"create");async function bb(e){let{production:t,development:r}=e.request.body,n=e.params.varName;await mt.update(n,{production:t,development:r}),e.body={message:`Environment variable "${n}" updated.`}}a(bb,"update");async function Ib(e){let t=e.params.varName;await mt.remove(t),await Iu.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}a(Ib,"destroy");var ar=require("@budibase/backend-core"),wb=F(require("@koa/router")),Wa=F(require("joi"));var Tb=new wb.default;function Sb(){return ar.auth.joiValidator.body(Wa.default.object({name:Wa.default.string().optional(),production:Wa.default.string().required(),development:Wa.default.string().required()}))}a(Sb,"buildEnvVarUpdateValidator");Tb.get("/api/env/variables/status",ar.auth.builderOrAdmin,hb).get("/api/env/variables",ar.auth.builderOrAdmin,yb).post("/api/env/variables",ar.auth.builderOrAdmin,Sb(),Ab).patch("/api/env/variables/:varName",ar.auth.builderOrAdmin,Sb(),bb).delete("/api/env/variables/:varName",ar.auth.builderOrAdmin,Ib);var Eb=Tb;var gt=require("@budibase/backend-core"),Rt=require("@budibase/types"),qb=F(require("@koa/router")),Ce=F(require("joi"));var Rb=require("@budibase/backend-core");async function vb(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let n=await _r(t._id);t.roles=n.roles,t.scimInfo=n.scimInfo}let r=await Gn(t);e.body={_id:r.id,_rev:r.rev}}a(vb,"save");async function _b(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of users to add or to remove");let o,s;r&&(o=await Fn(t,r)),n&&(s=await Ks(t,n)),e.body={added:o,removed:s}}a(_b,"updateGroupUsers");async function xb(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of objects, with appId and roleId to add or remove"),e.body=await Vs(t,{appsToAdd:r,appsToRemove:n})}a(xb,"updateGroupApps");async function Cb(e){e.body={data:await La()}}a(Cb,"fetch");async function Ob(e){let{groupId:t,rev:r}=e.params;try{await Qs(t,r),e.body={message:"Group deleted successfully"}}catch(n){e.throw(n.status,n)}}a(Ob,"destroy");async function Lb(e){try{e.body=await _r(e.params.groupId)}catch(t){e.throw(t.status,t)}}a(Lb,"find");async function Pb(e){let{pageSize:t=10,bookmark:r,emailSearch:n}=e.request.query,o=e.params.groupId,s={limit:t+1},i=await nn(o,{...s,emailSearch:n,bookmark:r}),u=n?i[t]?.email:i[t]?._id,c=!!u;e.body={users:i.slice(0,t),bookmark:u,hasNextPage:c}}a(Pb,"searchUsers");async function Ub(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 n=await Rb.csv.jsonFromCsvString(r,{allowSingleColumn:!0});(!n||n.length===0)&&e.throw(400,"CSV file is invalid");let s=Object.keys(n[0]).find(h=>/^(email|e-mail|email address|mail|e_mail)$/i.test(h.trim()));s||e.throw(400,"CSV file must contain an email column");let i=Array.from(new Set(n.map(h=>h[s]).filter(h=>h&&typeof h=="string"&&h.trim().length>0).map(h=>h.trim())));i.length===0&&e.throw(400,"No valid email addresses found in CSV");try{await _r(t)}catch(h){if(h.status===404)e.throw(404,"Group not found");else throw h}let u=[],c=[],f=[],g=await Promise.all(i.map(h=>Ke.getUserByEmail(h)));for(let h of i){let y=g.find(E=>E?.email===h);y?(u.push({_id:y._id,email:y.email}),f.push(y._id)):c.push({email:h,reason:"User not found"})}f.length>0&&await Fn(t,f),e.body={added:u,skipped:c}}a(Ub,"bulkAddUsersFromCsv");var Db=new qb.default;function JN(){return gt.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())}a(JN,"buildGroupSaveValidation");Db.post("/api/global/groups",gt.auth.adminOnly,we.requireFeature(Rt.Feature.USER_GROUPS),JN(),vb).get("/api/global/groups",we.requireFeature(Rt.Feature.USER_GROUPS),Cb).delete("/api/global/groups/:groupId/:rev",we.requireFeature(Rt.Feature.USER_GROUPS),gt.auth.adminOnly,Ga("groupId"),Ob).get("/api/global/groups/:groupId",we.requireFeature(Rt.Feature.USER_GROUPS),gt.auth.builderOrAdmin,Lb).get("/api/global/groups/:groupId/users",we.requireFeature(Rt.Feature.USER_GROUPS),gt.auth.builderOrAdmin,Pb).post("/api/global/groups/:groupId/users",gt.auth.adminOnly,we.requireFeature(Rt.Feature.USER_GROUPS),Ga("groupId"),_b).post("/api/global/groups/:groupId/users/bulk",gt.auth.adminOnly,we.requireFeature(Rt.Feature.USER_GROUPS),Ga("groupId"),gt.auth.joiValidator.body(Ce.default.object({csvContent:Ce.default.string().required()}).required()),Ub).post("/api/global/groups/:groupId/apps",gt.auth.builderOrAdmin,we.requireFeature(Rt.Feature.USER_GROUPS),xb);var kb=Db;var lI=F(require("@koa/router"));var mo=require("scim-patch");var Nb=require("@budibase/backend-core");function Mb(e,t){let r=e.request.query[t];if(r!==void 0)return+r}a(Mb,"tryGetQueryAsNumber");var Bb=a(async e=>{let t=Mb(e,"pageSize")??20,r=Mb(e,"startIndex"),n;e.request.query.filter&&(n=ce.user.userFilters(e.request.query.filter));let o=await qe.get({pageSize:t,skip:r,filters:n});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"),Gb=a(async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await qe.find(t);e.body=ce.user.toScimUserResponse(r)},"find"),Fb=a(async e=>{let t=ce.user.fromScimUser(e.request.body);try{let r=await qe.create(t);e.body=ce.user.toScimUserResponse(r)}catch(r){throw r instanceof Nb.EmailUnavailableError&&e.throw(409,"Email already in use"),r}},"create");function XN(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}a(XN,"isDeactivation");var Wb=a(async e=>{let t=await qe.find(e.params.id);t||e.throw(404);let r=ce.user.toScimUserResponse(t),n=e.request.body;try{(0,mo.patchBodyValidation)(n)}catch{}if(XN(n))return Su(e);let o;try{o=(0,mo.scimPatch)(r,n.Operations)}catch{}o||e.throw(500);let s=ce.user.fromScimUser(o);await qe.update(s,{allowChangingEmail:!0}),e.body=ce.user.toScimUserResponse(s)},"update"),Su=a(async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await qe.remove(t),e.status=204},"remove");var aI=F(rI()),nI=require("@budibase/shared-core"),go=require("scim-patch");var ho=require("scim2-parse-filter");function oI(e,t){for(let r of t.split(","))delete e[r]}a(oI,"cleanResponse");var sI=a(async e=>{let r=(await re.fetch()).filter(s=>s.scimInfo?.isSync).map(ce.group.toScimGroupResponse),{filter:n,excludedAttributes:o}=e.request.query;if(n){let s=(0,ho.filter)((0,ho.parse)(n));r=r.filter(s)}o&&r.forEach(s=>{oI(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"),iI=a(async e=>{let t=ce.group.fromScimGroup(e.request.body),r=await qr.create(t);e.body=ce.group.toScimGroupResponse(r)},"create"),uI=a(async e=>{let{id:t}=e.params,r=await re.get(t),n=ce.group.toScimGroupResponse(r),{excludedAttributes:o}=e.request.query;o&&oI(n,o),e.body=n},"find"),cI=a(async e=>{let{id:t}=e.params,r=await re.get(t);await re.remove(t,r._rev),e.status=204},"remove"),pI=a(async e=>{let{id:t}=e.params,r=await re.get(t),n=ce.group.toScimGroupResponse(r),o=e.request.body;try{(0,go.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,go.scimPatch)(n,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:f,value:g}of s)switch(f){case"add":case"Add":for(let h of g)u.push(await qe.find(h.value));break;case"remove":case"Remove":for(let h of g)try{c.push(await qe.find(h.value))}catch(y){if(y.status!==404)throw y}break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:nI.utils.unreachable(f)}u.length&&await re.addUsers(t,u.map(f=>f._id)),c.length&&await re.removeUsers(t,c.map(f=>f._id))}e.body=ce.group.toScimGroupResponse(await re.get(t))},"update");var $a=require("@budibase/types"),Be=new lI.default({prefix:"/api/global/scim/v2"});Be.use(du);Be.use(lu);Be.get("/users",Bb);Be.get("/users/:id",Na("id"),Gb);Be.post("/users",Fb);Be.patch("/users/:id",Na("id"),Wb);Be.delete("/users/:id",Na("id"),Su);Be.get("/groups",sI);Be.post("/groups",we.requireFeature($a.Feature.USER_GROUPS),iI);Be.get("/groups/:id",we.requireFeature($a.Feature.USER_GROUPS),Ba("id"),uI);Be.delete("/groups/:id",we.requireFeature($a.Feature.USER_GROUPS),Ba("id"),cI);Be.patch("/groups/:id",we.requireFeature($a.Feature.USER_GROUPS),Ba("id"),pI);var dI=Be;var ce={};x(ce,{group:()=>Eu,user:()=>Tu});var Tu={};x(Tu,{fromScimUser:()=>vB,toScimUserResponse:()=>TB,userFilters:()=>_B});var fI=require("@budibase/backend-core"),mI=require("@budibase/shared-core"),yo=require("@budibase/types"),gI=require("scim2-parse-filter");var{unreachable:wB}=mI.utils,TB=a(e=>{let{isSync:t,roles:r,...n}=e.scimInfo||{},o={...n,schemas:["urn:ietf:params:scim:schemas:core:2.0:User"],id:e._id,meta:{resourceType:"User",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},active:e.status===yo.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"),EB=a(e=>!!e?.id,"isScimUserResponse");function RB(e){if(fI.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}a(RB,"tryGetEmail");var vB=a(e=>{let t=EB(e)?e:void 0,r=RB(e);if(!r)throw new Error("Email is required");let n;switch(e.active){case"True":case"true":case!0:n=!0;break;case"False":case"false":case!1:n=!1;break;default:wB(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:n?yo.UserStatus.ACTIVE:yo.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},"fromScimUser"),_B=a(e=>{let t={equal:{}},r=(0,gI.parse)(e);function n(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)n(s);break;default:console.warn("Filter not handled",{filter:o})}}return a(n,"parseFilters"),n(r),t},"userFilters");var Eu={};x(Eu,{fromScimGroup:()=>OB,toScimGroupResponse:()=>xB});var xB=a(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"),CB=a(e=>!!e?.id,"isScimGroup"),OB=a(e=>{let t=CB(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 Hu={};x(Hu,{LLM:()=>ht,LLMRequest:()=>se,TableGeneration:()=>Vu,agentHistoryTitleSystemPrompt:()=>GB,agentSystemPrompt:()=>BB,aiColumnSchemas:()=>Qu,aiTableResponseToTableSchema:()=>Fu,appendAIColumns:()=>Wu,classifyText:()=>_u,cleanData:()=>xu,extractFileData:()=>DB,generateAIColumns:()=>Bu,generateCode:()=>NB,generateCronExpression:()=>Cu,generateData:()=>Gu,generateJs:()=>Uu,generateSQL:()=>MB,generateTables:()=>Nu,generationStructure:()=>ju,getChatLLM:()=>_I,getLLM:()=>Ka,getLLMConfig:()=>Mu,getLLMOrThrow:()=>vI,normalizeContentType:()=>Ru,parseResponseFormat:()=>bo,sanitiseToolName:()=>LB,searchWeb:()=>Pu,sentimentAnalysis:()=>Lu,summarizeText:()=>Ao,tableDataStructuredOutput:()=>Ku,translate:()=>Ou});var ja=require("@budibase/types");function LB(e){if(e.length>64)throw new Error("Tool name must be under 64 characters long");return e.replace(/[^a-zA-Z0-9_-]/g,"_")}a(LB,"sanitiseToolName");function Ru(e){return e?e.includes("/")?e:{[ja.SupportedFileType.PDF]:"application/pdf",[ja.SupportedFileType.JPG]:"image/jpeg",[ja.SupportedFileType.JPEG]:"image/jpeg",[ja.SupportedFileType.PNG]:"image/png"}[e.toLowerCase()]||"application/octet-stream":"application/octet-stream"}a(Ru,"normalizeContentType");var Eo=require("@budibase/types");var yt=require("@budibase/backend-core"),SI=require("@budibase/types"),Dr=require("dd-trace"),wI=require("openai/helpers/zod"),TI=require("zod");var Io=F(require("openai"));var Nt=require("@budibase/types");var hI=require("@budibase/shared-core");var Bt=F(require("dd-trace"));function vu(e,t){return t.map(r=>e[r]).join(" ")}a(vu,"extractTextFromColumns");var ht=class{static{a(this,"LLM")}constructor({model:t,apiKey:r,maxTokens:n}){this._model=t,this._apiKey=r,this._maxTokens=n??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:n,tokensUsed:o}=await Bt.default.trace("chatCompletion",()=>this.chatCompletion(r));return!n||n.length===0?{message:"",tokensUsed:o}:{message:n[n.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(Cu(t)))}async operation(t,r){return Bt.default.trace("operation",n=>{n.addTags({operation:t.operation,rowId:r.id});let o=this.promptForOperation(t,r);return this.prompt(o)})}promptForOperation(t,r){let{operation:n,column:o,columns:s,language:i,categories:u,prompt:c}=t;switch(n){case Nt.AIOperationEnum.SUMMARISE_TEXT:return Ao(vu(r,s));case Nt.AIOperationEnum.CLEAN_DATA:return xu(r[o]);case Nt.AIOperationEnum.TRANSLATE:return Ou(r[o],i);case Nt.AIOperationEnum.CATEGORISE_TEXT:if(!u)throw Error("No categories provided for categorise text operation. Please provide categories.");return _u(vu(r,s),u.split(","));case Nt.AIOperationEnum.SENTIMENT_ANALYSIS:return Lu(r[o]);case Nt.AIOperationEnum.PROMPT:return c;case Nt.AIOperationEnum.SEARCH_WEB:return Pu(vu(r,s));default:throw hI.utils.unreachable(n)}}async generateJs(t,r){return await Bt.default.trace("generateJs",async()=>{let{bindings:n=[],snippets:o=[]}=r||{};return await this.prompt(Uu(n,o).addUserMessage(t))})}};var AI=require("@budibase/types"),qu=require("openai/helpers/zod");var Qa=(n=>(n.GPT_5_MINI="gpt-5-mini",n.GPT_5="gpt-5",n.GPT_5_NANO="gpt-5-nano",n))(Qa||{});function bo(e){if(e)return e==="text"?{type:"text"}:e==="json"?{type:"json_object"}:e}a(bo,"parseResponseFormat");function yI(e){if(!e)return 0;let t=e.prompt_tokens;return e.completion_tokens*3+t}a(yI,"calculateBudibaseAICredits");var Ge=class extends ht{constructor(r){super(r);this.client=this.getClient(r)}static{a(this,"OpenAI")}getVerbosityForModel(){if(Object.values(Qa).includes(this.model))return"low"}getClient(r){if(!r.apiKey)throw new Error("No OpenAI API key found");return new Io.default({apiKey:r.apiKey,baseURL:r.baseUrl})}async uploadFile(r,n,o){let s=Ru(o);if(AI.ImageContentTypes.includes(s.toLowerCase())){let c;if(Buffer.isBuffer(r))c=r;else{let g=[];for await(let h of r)g.push(new Uint8Array(h));c=Buffer.concat(g)}let f=c.toString("base64");return`data:${s};base64,${f}`}let i=await(0,Io.toFile)(r,n);return(await this.client.files.create({file:i,purpose:"assistants"})).id}async chatCompletion(r){let n={model:this.model,messages:r.messages,max_completion_tokens:this._maxTokens,response_format:bo(r.format)};if(Object.values(Qa).includes(this.model)){let i=this.getVerbosityForModel();i&&(n.verbosity=i),n.reasoning_effort="minimal"}r.tools&&r.tools.length>0&&(n.tool_choice="auto",n.tools=r.tools.map(qu.zodFunction));let o=await this.client.chat.completions.create(n),s=o?.choices?.[0]?.message;if(s?.tool_calls){r.addMessage(s);let i=[];for(let u of s.tool_calls){if(u.type!=="function"||!u.function){console.warn(`[OPENAI TOOL WARN] Unsupported tool call type: ${u.type}`);continue}let c=u.function.name,f=r.findTool(c);if(!f)throw new Error(`Tool ${c} not found in prompt tools`);let g=JSON.parse(u.function.arguments);i.push(f.handler(g).then(h=>({role:"tool",tool_call_id:u.id,content:h})).catch(h=>(console.error(`[OPENAI TOOL ERROR] Tool ${c} failed in OpenAI handler:`,h),{role:"tool",tool_call_id:u.id,content:`Error: ${h.message}`})))}return r.addMessages(await Promise.all(i)),this.chatCompletion(r)}else{if(s?.content)return{messages:[...r.messages,{role:s.role,content:s.content}],tokensUsed:yI(o.usage)};throw new Error("No response found")}}async*chatCompletionStream(r){let n={model:this.model,messages:r.messages,max_tokens:this.maxTokens,response_format:bo(r.format),stream:!0};r.tools&&r.tools.length>0&&(n.tool_choice="auto",n.tools=r.tools.map(qu.zodFunction));try{let o=await this.client.chat.completions.create(n),s=null,i="",u=null;for await(let f of o){let g=f?.choices?.[0]?.delta;if(g){if(g.content&&(i+=g.content,yield{type:"content",content:g.content}),g.tool_calls&&g.tool_calls.length>0){let h=g.tool_calls[0];h.id?(s={id:h.id,name:h.function?.name||"",arguments:h.function?.arguments||""},yield{type:"tool_call_start",toolCall:{id:s.id,name:s.name,arguments:s.arguments}}):s&&h.function?.arguments&&(s.arguments+=h.function.arguments,yield{type:"tool_call_start",toolCall:{id:s.id,name:s.name,arguments:s.arguments}})}f.usage&&(u=f.usage)}}let c=u?yI(u):0;if(s){r.addMessage({role:"assistant",content:"",tool_calls:[{id:s.id,type:"function",function:{name:s.name,arguments:s.arguments}}]});let f=r.findTool(s.name);if(f)try{let g=JSON.parse(s.arguments),h=await f.handler(g);yield{type:"tool_call_result",toolResult:{id:s.id,result:h}},r.addMessage({role:"tool",tool_call_id:s.id,content:h}),yield*this.chatCompletionStream(r);return}catch(g){yield{type:"tool_call_result",toolResult:{id:s.id,result:`Error: ${g.message}`,error:g.message}},r.addMessage({role:"tool",tool_call_id:s.id,content:`Error: ${g.message}`}),yield*this.chatCompletionStream(r);return}else{let g=`Tool '${s.name}' not found`;yield{type:"tool_call_result",toolResult:{id:s.id,result:g,error:g}},r.addMessage({role:"tool",tool_call_id:s.id,content:g}),yield*this.chatCompletionStream(r);return}}i&&r.addMessage({role:"assistant",content:i}),yield{type:"done",messages:r.messages,tokensUsed:c}}catch(o){yield{type:"error",content:o.message}}}};var Du=F(require("@anthropic-ai/sdk"));function PB(e){if(!e)return 0;let t=e.input_tokens;return e.output_tokens*3+t}a(PB,"calculateBudibaseAICredits");var So=class extends ht{constructor(r){super(r);this.client=new Du.default({apiKey:r.apiKey})}static{a(this,"Anthropic")}firstTextBlock(r){for(let n of r.content)if(n.type==="text")return n.text}async uploadFile(r,n,o){throw new Error("File upload not supported for this LLM provider")}async chatCompletion(r){try{let n=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(n)||"";return{messages:[...r.messages,{role:"assistant",content:o}],tokensUsed:PB(n.usage)}}catch(n){throw n instanceof Du.default.APIError&&console.error(`Anthropic Prompt failed with error ${n.name} and status: ${n.status}`),n}}async*chatCompletionStream(r){try{let n=await this.chatCompletion(r);if(n.messages.length>0){let o=n.messages[n.messages.length-1];o.content&&(yield{type:"content",content:o.content})}yield{type:"done",messages:n.messages,tokensUsed:n.tokensUsed}}catch(n){yield{type:"error",content:n.message}}}};var bI=require("openai");var wo=class extends Ge{static{a(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 bI.AzureOpenAI({apiKey:t.apiKey,apiVersion:"2024-10-01-preview",baseURL:t.baseUrl})}getVerbosityForModel(){return Object.values(Qa).includes(this.model)?"medium":void 0}};var he=require("@budibase/backend-core"),II=require("@budibase/types");var ku=require("dd-trace");var To=class extends ht{static{a(this,"BudibaseAI")}async prompt(t){let r=await super.prompt(t);return r.tokensUsed&&await Nn(r.tokensUsed),r}async chat(t){let r=await super.chat(t);return r.tokensUsed&&await Nn(r.tokensUsed),r}async uploadFile(t,r,n){return he.env.SELF_HOSTED?this.uploadFileSelfHost(t,r,n):this.uploadFileCloud(t,r,n)}async uploadFileCloud(t,r,n){return new Ge({apiKey:he.env.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).uploadFile(t,r,n)}async uploadFileSelfHost(t,r,n){let o;if(Buffer.isBuffer(t))o=t;else{let g=[];for await(let h of t)g.push(new Uint8Array(h));o=Buffer.concat(g)}let s=o.toString("base64");if(n&&II.ImageContentTypes.includes(n.toLowerCase()))return`data:image/jpeg;base64,${s}`;if(!he.env.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(!this._apiKey){let g=await Cn();if(!g)throw new Error("No license key found");this._apiKey=g}let i=`${he.env.BUDICLOUD_URL}/api/ai/upload-file`,u={method:"POST",headers:{"Content-Type":"application/json",[he.constants.Header.LICENSE_KEY]:this._apiKey},body:JSON.stringify({data:s,filename:r,contentType:n})};console.debug("[BudibaseAI] uploadFileSelfHost - Making network call",{url:i,method:u.method,headers:u.headers,bodyKeys:["data","filename","contentType"],filename:r,contentType:n});let c=await Ja(i,u);if(console.debug("[BudibaseAI] uploadFileSelfHost - Network response",{url:i,status:c.status,statusText:c.statusText,ok:c.ok}),!c.ok)throw await he.HTTPError.fromResponse(c);return(await c.json()).fileId}async chatCompletion(t){return he.env.SELF_HOSTED?this.chatCompletionSelfHost(t):this.chatCompletionCloud(t)}async chatCompletionCloud(t){return await ku.tracer.trace("chatCompletionCloud",async()=>await new Ge({apiKey:he.env.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).chatCompletion(t))}async chatCompletionSelfHost(t){return await ku.tracer.trace("chatCompletionSelfHost",async r=>{if(!he.env.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(r.addTags({budicloudUrl:he.env.BUDICLOUD_URL}),!this._apiKey){let c=await Cn();if(!c)throw new Error("No license key found");this._apiKey=c,r.addTags({licenseKey:this._apiKey})}let n={messages:t.messages,format:t.format,useTools:t.tools.length>0},o=`${he.env.BUDICLOUD_URL}/api/ai/chat`,s={method:"POST",headers:{"Content-Type":"application/json",[he.constants.Header.LICENSE_KEY]:this._apiKey},body:JSON.stringify(n)};console.debug("[BudibaseAI] chatCompletionSelfHost - Making network call",{url:o,method:s.method,headers:s.headers,bodyKeys:Object.keys(n),messagesCount:t.messages.length,useTools:n.useTools,format:n.format});let i=await Ja(o,s);if(console.debug("[BudibaseAI] chatCompletionSelfHost - Network response",{url:o,status:i.status,statusText:i.statusText,ok:i.ok}),!i.ok)throw await he.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){he.env.SELF_HOSTED?yield*this.chatCompletionStreamSelfHost(t):yield*this.chatCompletionStreamCloud(t)}async*chatCompletionStreamCloud(t){yield*new Ge({apiKey:he.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,toolsCount:t.tools.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 n=r.messages[r.messages.length-1];n.content&&(yield{type:"content",content:n.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 EI={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"},RI={OpenAI:Ge,TogetherAI:Ge,AzureOpenAI:wo,Custom:Ge,Anthropic:So,BudibaseAI:To,Chat:Ge};async function UB(){return await Dr.tracer.trace("getAIConfig",async e=>{let t={type:SI.ConfigType.AI,config:{}};if(!yt.context.isSelfHostUsingCloud()){let n=await yt.configs.getAIConfig();n&&(t=n)}await ks(t);let r=Object.values(t.config).find(n=>n.active&&n.isDefault);if(!r){e.addTags({enabled:!1,reason:"no provider found"});return}return e.addTags({enabled:!0}),{provider:r.provider,model:r.defaultModel||EI[r.provider],apiKey:r.apiKey,baseUrl:r.baseUrl}})}a(UB,"getAIConfig");async function qB(){return Dr.tracer.trace("getSelfHostOpenAIKeyConfig",e=>{if(!yt.env.SELF_HOSTED){e.addTags({enabled:!1,reason:"not self host"});return}if(!yt.env.OPENAI_API_KEY){e.addTags({enabled:!1,reason:"no OPENAI_API_KEY"});return}return e.addTags({enabled:!0}),{provider:"OpenAI",model:EI.OpenAI,apiKey:yt.env.OPENAI_API_KEY}})}a(qB,"getSelfHostOpenAIKeyConfig");async function Mu(){return Dr.tracer.trace("getLLMConfig",async()=>await UB()||await qB())}a(Mu,"getLLMConfig");async function Ka(e){return await Dr.tracer.trace("getLLM",async t=>{let{model:r,maxTokens:n}=e||{},o=await Mu();if(!o){t.addTags({enabled:!1,reason:"no config found"});return}r&&(o.model=r),n&&(o.maxTokens=n);let s=RI[o.provider];if(!s){t.addTags({enabled:!1,reason:"no provider found",provider:o.provider});return}return new s(o)})}a(Ka,"getLLM");async function vI(){let e=await Ka();if(!e)throw new yt.HTTPError("No available LLM configurations",500);return e}a(vI,"getLLMOrThrow");async function _I(e){return await Dr.tracer.trace("getChatLLM",async()=>new RI.Chat(e))}a(_I,"getChatLLM");var se=class e{constructor(){this.messages=[];this.tools=[]}static{a(this,"LLMRequest")}addTool(t){return this.tools.push(t),this}addTools(t){return this.tools.push(...t),this}findTool(t){return this.tools.find(r=>r.name===t)}withFormat(t){return t instanceof TI.z.ZodType?this.format=(0,wI.zodResponseFormat)(t,"key"):this.format=t,this}addMessage(t){return this.messages.push(t),this}addMessages(t){return this.messages.push(...t),this}addUserMessage(t){return this.messages.push({role:"user",content:t}),this}addSystemMessage(t){return this.messages.push({role:"system",content:t}),this}static fromRequest(t){let r=new e;return t.messages&&r.addMessages(t.messages),t.format&&r.withFormat(t.format),r}};var vt=require("zod");function Ao(e,t){let r=`Summarize this text:
|
|
39
39
|
${e}`,n="";if(t)switch(t){case Eo.SummariseLength.SHORT:n="In 1-2 concise sentences, ";break;case Eo.SummariseLength.MEDIUM:n="In 2-3 paragraphs, ";break;case Eo.SummariseLength.LONG:n="In multiple detailed paragraphs, ";break}return new se().addUserMessage(`${n}${r}.
|
|
40
|
-
Only return the summary.`)}a(Ao,"summarizeText");function
|
|
40
|
+
Only return the summary.`)}a(Ao,"summarizeText");function DB(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
|
|
|
42
42
|
`),o=t.startsWith("data:")?[{type:"image_url",image_url:{url:t}},{type:"text",text:r}]:[{type:"text",text:`${r}
|
|
43
43
|
|
|
44
|
-
File ID: ${t}`}],s=
|
|
44
|
+
File ID: ${t}`}],s=kB(e),i=vt.z.object({data:vt.z.array(s)});return new se().addMessages([{role:"user",content:o}]).withFormat(i)}a(DB,"extractFileData");function kB(e){let t={};for(let[r,n]of Object.entries(e))if(typeof n=="string")switch(n.toLowerCase()){case"string":t[r]=vt.z.string();break;case"number":t[r]=vt.z.number();break;case"boolean":t[r]=vt.z.boolean();break;default:t[r]=vt.z.string()}else t[r]=vt.z.string();return vt.z.object(t)}a(kB,"createZodSchemaFromRecord");function _u(e,t){return new se().addUserMessage(`Return the category of this text: "${e}". Based on these categories: ${t.join(", ")}. Only return the category. Do not add any extra punctuation or fix spelling mistakes. It should exactly match one of the categories. `)}a(_u,"classifyText");function xu(e){return new se().addUserMessage(`Clean the following string: "${e}". Remove any spelling mistakes or data issues. Only return the cleaned string itself and nothing else.`)}a(xu,"cleanData");function MB(e,t){return new se().addUserMessage(`Given the table schema:
|
|
45
45
|
${t}
|
|
46
46
|
|
|
47
47
|
Generate a SQL query for the following request:
|
|
48
48
|
${e}.
|
|
49
|
-
Only provide the SQL.`)}a(
|
|
49
|
+
Only provide the SQL.`)}a(MB,"generateSQL");function NB(e){return new se().addUserMessage(`Generate JavaScript code for the following request:
|
|
50
50
|
${e}.
|
|
51
|
-
Only provide the JS and nothing else.`)}a(
|
|
51
|
+
Only provide the JS and nothing else.`)}a(NB,"generateCode");function Cu(e){return new se().addUserMessage(`Generate a node-cron compatible expression based on the following prompt. Return only the cron expression (without backticks), and if not possible return only 'Error generating cron' with a short explanation:
|
|
52
52
|
${e}`)}a(Cu,"generateCronExpression");function Ou(e,t){return new se().addUserMessage(`Translate the following text: "${e}" into ${t}. Only return the translation.`)}a(Ou,"translate");function Lu(e){return new se().addUserMessage(`Return the sentiment of this text: "${e}". Only return the sentiment.`)}a(Lu,"sentimentAnalysis");function Pu(e){return new se().addUserMessage(`Search the web for the following: "${e}". Only return the top results.`)}a(Pu,"searchWeb");function Uu(e,t){let r="You do not have access to any bindings in this request.";e&&e.length>0&&(r=`The bindings you have access to are:
|
|
53
53
|
|
|
54
54
|
${e.map(({readableBinding:o})=>`- $("${o}")`).join(`
|
|
@@ -155,7 +155,7 @@ You may specify foreignColumnName, but do not create that field manually.
|
|
|
155
155
|
`;return new se().addSystemMessage(e)}a(Nu,"generateTables");function Bu(){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)}a(Bu,"generateAIColumns");function Gu(){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)}a(Gu,"generateData");function
|
|
158
|
+
`;return new se().addSystemMessage(e)}a(Gu,"generateData");function BB(e){return`You are a helpful support agent who uses workflows to resolve user issues efficiently.
|
|
159
159
|
|
|
160
160
|
- The user will ask support queries.
|
|
161
161
|
- Your replies MUST be short, concise, and directly answer the user's question as quickly and clearly as possible.
|
|
@@ -170,15 +170,15 @@ Avoid placeholder values like "foo" or "bar". Use real names, emails, etc., and
|
|
|
170
170
|
|
|
171
171
|
\`\`\`
|
|
172
172
|
${JSON.stringify(e)}
|
|
173
|
-
\`\`\``}a(
|
|
173
|
+
\`\`\``}a(BB,"agentSystemPrompt");function GB(){return`You will be provided with a set of history, a conversation between a user and an AI. Using this
|
|
174
174
|
information generate a title for the conversation, this should start with a capital letter and MUST be
|
|
175
|
-
less than five words.`}a(
|
|
175
|
+
less than five words.`}a(GB,"agentHistoryTitleSystemPrompt");var Va=require("@budibase/backend-core"),OI=require("@budibase/shared-core");var _t=require("@budibase/types"),xI=require("@budibase/backend-core");function Fu(e){let t=[],r=[];for(let n of e.tables){let o=n.schema.reduce((s,i)=>{if(i.type===_t.FieldType.LINK){if(!r.includes(i.relationshipId)){let u={[_t.RelationshipType.MANY_TO_ONE]:_t.RelationshipType.ONE_TO_MANY,[_t.RelationshipType.ONE_TO_MANY]:_t.RelationshipType.MANY_TO_ONE,[_t.RelationshipType.MANY_TO_MANY]:_t.RelationshipType.MANY_TO_MANY},{reverseFieldName:c,relationshipId:f,...g}=i;s[i.name]={...g,fieldName:c,relationshipType:u[i.relationshipType]},r.push(f)}}else s[i.name]=i;return s},{});t.push({_id:xI.docIds.generateTableID(),name:n.name,primaryDisplay:n.primaryDisplay,schema:o})}return t}a(Fu,"aiTableResponseToTableSchema");function Wu(e,t){let r=[];for(let n of e)r.push({...n,schema:{...n.schema,...t[n.name]?.reduce((o,s)=>(o[s.name]=s,o),{})}});return r}a(Wu,"appendAIColumns");var L=require("@budibase/types"),T=require("zod");var Oe=T.z.object({name:T.z.string().describe("A human readable name for the field. It MUST be alpha-numeric and capitalised.")}),$u=Oe.extend({type:T.z.literal(L.FieldType.LINK),tableId:T.z.string().describe("This must match one of the generated table names"),reverseFieldName:T.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:T.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.")}),FB=T.z.array(T.z.union([Oe.extend({type:T.z.enum([L.FieldType.STRING,L.FieldType.NUMBER,L.FieldType.BOOLEAN,L.FieldType.LONGFORM]),constraints:T.z.object({presence:T.z.boolean()}).optional().nullable()}),$u.extend({relationshipType:T.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."),$u.extend({relationshipType:T.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."),$u.extend({relationshipType:T.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:T.z.literal(L.FieldType.OPTIONS),constraints:T.z.object({inclusion:T.z.array(T.z.string()).describe("The options for the field"),presence:T.z.boolean()})}).describe("A single option from closed set of options"),Oe.extend({type:T.z.literal(L.FieldType.ARRAY),constraints:T.z.object({inclusion:T.z.array(T.z.string()).describe("The options for the field"),presence:T.z.boolean(),type:T.z.literal(L.JsonFieldSubType.ARRAY)}).describe("Multiple selected options from closed set of options")}),Oe.extend({type:T.z.literal(L.FieldType.FORMULA),formula:T.z.string().describe(`
|
|
176
176
|
A JavaScript expression using only previously defined fields.
|
|
177
177
|
Reference fields using $("Field name"). Must end with: return ...
|
|
178
178
|
Example: return $("Score") + $("Weight")
|
|
179
|
-
`),responseType:T.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:T.z.literal(L.FieldType.DATETIME),ignoreTimezones:T.z.boolean()}).describe("A datetime field, storing date and time"),Oe.extend({type:T.z.literal(L.FieldType.DATETIME),ignoreTimezones:T.z.boolean(),timeOnly:T.z.literal(!0)}).describe("A time only field"),Oe.extend({type:T.z.literal(L.FieldType.DATETIME),ignoreTimezones:T.z.boolean(),dateOnly:T.z.literal(!0)}).describe("A date only field"),Oe.extend({type:T.z.literal(L.FieldType.ATTACHMENT_SINGLE),subtype:T.z.literal(L.AttachmentSubType.IMAGE)}).describe("Single image column"),Oe.extend({type:T.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:T.z.literal(L.FieldType.ATTACHMENTS),subtype:T.z.literal(L.AttachmentSubType.IMAGE)}).describe("Multiple images column. Use an appropiate name for the columns, like 'Gallery', 'Photos', etc."),Oe.extend({type:T.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.")])),ju=T.z.object({tables:T.z.array(T.z.object({name:T.z.string(),schema:
|
|
179
|
+
`),responseType:T.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:T.z.literal(L.FieldType.DATETIME),ignoreTimezones:T.z.boolean()}).describe("A datetime field, storing date and time"),Oe.extend({type:T.z.literal(L.FieldType.DATETIME),ignoreTimezones:T.z.boolean(),timeOnly:T.z.literal(!0)}).describe("A time only field"),Oe.extend({type:T.z.literal(L.FieldType.DATETIME),ignoreTimezones:T.z.boolean(),dateOnly:T.z.literal(!0)}).describe("A date only field"),Oe.extend({type:T.z.literal(L.FieldType.ATTACHMENT_SINGLE),subtype:T.z.literal(L.AttachmentSubType.IMAGE)}).describe("Single image column"),Oe.extend({type:T.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:T.z.literal(L.FieldType.ATTACHMENTS),subtype:T.z.literal(L.AttachmentSubType.IMAGE)}).describe("Multiple images column. Use an appropiate name for the columns, like 'Gallery', 'Photos', etc."),Oe.extend({type:T.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.")])),ju=T.z.object({tables:T.z.array(T.z.object({name:T.z.string(),schema:FB,primaryDisplay:T.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 Qu(e){let t=T.z.object({});for(let r of e){let n=Object.values(r.schema),o=[Oe.extend({type:T.z.literal(L.FieldType.AI),operation:T.z.literal(L.AIOperationEnum.TRANSLATE),column:T.z.enum(n.filter(s=>[L.FieldType.STRING,L.FieldType.LONGFORM].includes(s.type)).map(s=>s.name)).describe("The columns to translate"),language:T.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:T.z.literal(L.FieldType.AI),operation:T.z.literal(L.AIOperationEnum.CATEGORISE_TEXT),columns:T.z.array(T.z.enum(n.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:T.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.")];n.some(s=>s.type===L.FieldType.LONGFORM)&&o.push(Oe.extend({type:T.z.literal(L.FieldType.AI),operation:T.z.literal(L.AIOperationEnum.SUMMARISE_TEXT),columns:T.z.array(T.z.enum(n.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]:T.z.array(T.z.union(o))})}return t}a(Qu,"aiColumnSchemas");var X=require("zod"),CI=require("@budibase/shared-core"),Q=require("@budibase/types");function Ku(e){let t=X.z.object({});for(let r of e){let n={_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:n[i.name]=X.z.string();break;case Q.FieldType.NUMBER:case Q.FieldType.BIGINT:n[i.name]=X.z.number();break;case Q.FieldType.BOOLEAN:n[i.name]=X.z.boolean();break;case Q.FieldType.DATETIME:n[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?n[i.name]=o:n[i.name]=s;break;case Q.FieldType.ATTACHMENTS:i.subtype===Q.AttachmentSubType.IMAGE?n[i.name]=X.z.array(o):n[i.name]=X.z.array(s),n[i.name]=n[i.name].describe("Between 2 and 5 items.");break;case Q.FieldType.OPTIONS:n[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?n[i.name]=X.z.array(c).describe("Array with a single item"):i.relationshipType===Q.RelationshipType.MANY_TO_MANY&&(n[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:n[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 CI.utils.unreachable(u)}}t=t.extend({[r.name]:X.z.array(X.z.object(n))}).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:
|
|
180
180
|
1. If we have posts and comments, there should be more posts than users, and more comments than posts.
|
|
181
181
|
2. If it's a ticketing system, there may be more tickets than users, and some users may have submitted several tickets.
|
|
182
182
|
3. In a CRM, there are fewer users than customers, and customers may have many deals.
|
|
183
|
-
4. In a project management tool, projects might have many tasks, and tasks might have multiple comments.`)}return t}a(Ku,"tableDataStructuredOutput");var Ha=F(require("dd-trace"));var Vu=class e{constructor(t,r){this.llmFunctions={getTableStructure:async t=>Ha.default.trace("llm.getTableStructure",async()=>{let r=await this.llm.prompt(Nu().addUserMessage(t).withFormat(ju));try{let n=JSON.parse(r.message);return Fu(n)}catch{throw new Va.HTTPError("Error generating tables",500)}}),generateAIColumns:(t,r)=>Ha.default.trace("llm.generateAIColumns",async()=>this.generateAIColumns(t,r)),generateData:async(t,r)=>Ha.default.trace("llm.generateData",async()=>{let n=await this.llm.prompt(Gu().addUserMessage(t).withFormat(Ku(r)));try{return JSON.parse(n.message)}catch{throw new Va.HTTPError("Error generating data",500)}})};this.llm=t,this.delegates=r}static{a(this,"TableGeneration")}static async init(t){let r=await Ka({model:"gpt-5-mini",maxTokens:5e3});if(!r)throw new Va.HTTPError("LLM not available",422);return new e(r,t)}async generate(t,r){return Ha.default.trace("tableGeneration.generate",async n=>{let o=await this.generateTables(t,r);return n.addTags({table_count:o.length}),o})}async generateTables(t,r){let n=await this.llmFunctions.getTableStructure(t),o=this.llmFunctions.generateAIColumns(t,n).then(u=>this.delegates.generateTablesDelegate(Wu(n,u))),s=await this.llmFunctions.generateData(t,n),i=await o;return await this.delegates.generateDataDelegate(s,r,
|
|
183
|
+
4. In a project management tool, projects might have many tasks, and tasks might have multiple comments.`)}return t}a(Ku,"tableDataStructuredOutput");var Ha=F(require("dd-trace"));var Vu=class e{constructor(t,r){this.llmFunctions={getTableStructure:async t=>Ha.default.trace("llm.getTableStructure",async()=>{let r=await this.llm.prompt(Nu().addUserMessage(t).withFormat(ju));try{let n=JSON.parse(r.message);return Fu(n)}catch{throw new Va.HTTPError("Error generating tables",500)}}),generateAIColumns:(t,r)=>Ha.default.trace("llm.generateAIColumns",async()=>this.generateAIColumns(t,r)),generateData:async(t,r)=>Ha.default.trace("llm.generateData",async()=>{let n=await this.llm.prompt(Gu().addUserMessage(t).withFormat(Ku(r)));try{return JSON.parse(n.message)}catch{throw new Va.HTTPError("Error generating data",500)}})};this.llm=t,this.delegates=r}static{a(this,"TableGeneration")}static async init(t){let r=await Ka({model:"gpt-5-mini",maxTokens:5e3});if(!r)throw new Va.HTTPError("LLM not available",422);return new e(r,t)}async generate(t,r){return Ha.default.trace("tableGeneration.generate",async n=>{let o=await this.generateTables(t,r);return n.addTags({table_count:o.length}),o})}async generateTables(t,r){let n=await this.llmFunctions.getTableStructure(t),o=this.llmFunctions.generateAIColumns(t,n).then(u=>this.delegates.generateTablesDelegate(Wu(n,u))),s=await this.llmFunctions.generateData(t,n),i=await o;return await this.delegates.generateDataDelegate(s,r,OI.utils.toMap("name",n)),i}async generateAIColumns(t,r){let n=await this.llm.prompt(Bu().addUserMessage(`This is the initial user prompt that generated the given schema:
|
|
184
184
|
"${t}"`).withFormat(Qu(r)));try{return JSON.parse(n.message)}catch{throw new Va.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.
|
|
7
|
+
"version": "3.23.1",
|
|
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": "ade970d3ee9b56413873984aefa4b39297002204"
|
|
75
75
|
}
|