@budibase/pro 3.10.5 → 3.10.6
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 +4 -5
- package/dist/ai/llm.d.ts +18 -1
- package/dist/ai/models/anthropic.d.ts +3 -3
- package/dist/ai/models/base.d.ts +5 -4
- package/dist/ai/models/budibaseai.d.ts +7 -6
- package/dist/ai/models/openai.d.ts +3 -3
- package/dist/ai/prompts/index.d.ts +17 -28
- package/dist/ai/utils.d.ts +1 -0
- package/dist/api/index.d.ts +0 -1
- package/dist/index.js +53 -34
- package/dist/middleware/index.d.ts +1 -0
- package/dist/sdk/licensing/cache/redis.d.ts +2 -1
- package/dist/types/ai.d.ts +7 -2
- package/dist/types/index.d.ts +1 -0
- package/package.json +4 -3
- package/dist/api/controllers/ai/index.d.ts +0 -4
- package/dist/api/routes/ai/index.d.ts +0 -3
package/dist/index.js
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
"use strict";var M_=Object.create;var La=Object.defineProperty;var G_=Object.getOwnPropertyDescriptor;var F_=Object.getOwnPropertyNames;var j_=Object.getPrototypeOf,Q_=Object.prototype.hasOwnProperty;var c=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),T=(e,t)=>{for(var r in t)La(e,r,{get:t[r],enumerable:!0})},Bc=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of F_(t))!Q_.call(e,a)&&a!==r&&La(e,a,{get:()=>t[a],enumerable:!(n=G_(t,a))||n.enumerable});return e};var F=(e,t,r)=>(r=e!=null?M_(j_(e)):{},Bc(t||!e||!e.__esModule?La(r,"default",{value:e,enumerable:!0}):r,e)),$_=e=>Bc(La({},"__esModule",{value:!0}),e);var Ka=c((i1,Ip)=>{"use strict";function FI(e,t){for(var r=-1,n=t.length,a=e.length;++r<n;)e[a+r]=t[r];return e}Ip.exports=FI});var Io=c((u1,wp)=>{"use strict";var jI=typeof global=="object"&&global&&global.Object===Object&&global;wp.exports=jI});var fe=c((c1,Sp)=>{"use strict";var QI=Io(),$I=typeof self=="object"&&self&&self.Object===Object&&self,WI=QI||$I||Function("return this")();Sp.exports=WI});var zt=c((p1,xp)=>{"use strict";var VI=fe(),KI=VI.Symbol;xp.exports=KI});var Op=c((l1,Rp)=>{"use strict";var Tp=zt(),Ep=Object.prototype,YI=Ep.hasOwnProperty,HI=Ep.toString,Qn=Tp?Tp.toStringTag:void 0;function ZI(e){var t=YI.call(e,Qn),r=e[Qn];try{e[Qn]=void 0;var n=!0}catch{}var a=HI.call(e);return n&&(t?e[Qn]=r:delete e[Qn]),a}Rp.exports=ZI});var Pp=c((d1,Cp)=>{"use strict";var zI=Object.prototype,JI=zI.toString;function XI(e){return JI.call(e)}Cp.exports=XI});var Lt=c((f1,Np)=>{"use strict";var Lp=zt(),ew=Op(),tw=Pp(),rw="[object Null]",nw="[object Undefined]",qp=Lp?Lp.toStringTag:void 0;function aw(e){return e==null?e===void 0?nw:rw:qp&&qp in Object(e)?ew(e):tw(e)}Np.exports=aw});var Te=c((m1,Up)=>{"use strict";function sw(e){return e!=null&&typeof e=="object"}Up.exports=sw});var Dp=c((g1,kp)=>{"use strict";var ow=Lt(),iw=Te(),uw="[object Arguments]";function cw(e){return iw(e)&&ow(e)==uw}kp.exports=cw});var $n=c((h1,Gp)=>{"use strict";var Bp=Dp(),pw=Te(),Mp=Object.prototype,lw=Mp.hasOwnProperty,dw=Mp.propertyIsEnumerable,fw=Bp(function(){return arguments}())?Bp:function(e){return pw(e)&&lw.call(e,"callee")&&!dw.call(e,"callee")};Gp.exports=fw});var ue=c((y1,Fp)=>{"use strict";var mw=Array.isArray;Fp.exports=mw});var Wp=c((b1,$p)=>{"use strict";var jp=zt(),gw=$n(),hw=ue(),Qp=jp?jp.isConcatSpreadable:void 0;function yw(e){return hw(e)||gw(e)||!!(Qp&&e&&e[Qp])}$p.exports=yw});var wo=c((A1,Kp)=>{"use strict";var bw=Ka(),Aw=Wp();function Vp(e,t,r,n,a){var s=-1,o=e.length;for(r||(r=Aw),a||(a=[]);++s<o;){var i=e[s];t>0&&r(i)?t>1?Vp(i,t-1,r,n,a):bw(a,i):n||(a[a.length]=i)}return a}Kp.exports=Vp});var Wn=c((v1,Yp)=>{"use strict";function vw(e){return e}Yp.exports=vw});var Ya=c((_1,Hp)=>{"use strict";function _w(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)}Hp.exports=_w});var So=c((I1,zp)=>{"use strict";var Iw=Ya(),Zp=Math.max;function ww(e,t,r){return t=Zp(t===void 0?e.length-1:t,0),function(){for(var n=arguments,a=-1,s=Zp(n.length-t,0),o=Array(s);++a<s;)o[a]=n[t+a];a=-1;for(var i=Array(t+1);++a<t;)i[a]=n[a];return i[t]=r(o),Iw(e,this,i)}}zp.exports=ww});var Xp=c((w1,Jp)=>{"use strict";function Sw(e){return function(){return e}}Jp.exports=Sw});var ke=c((S1,el)=>{"use strict";function xw(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}el.exports=xw});var Vn=c((x1,tl)=>{"use strict";var Tw=Lt(),Ew=ke(),Rw="[object AsyncFunction]",Ow="[object Function]",Cw="[object GeneratorFunction]",Pw="[object Proxy]";function Lw(e){if(!Ew(e))return!1;var t=Tw(e);return t==Ow||t==Cw||t==Rw||t==Pw}tl.exports=Lw});var nl=c((T1,rl)=>{"use strict";var qw=fe(),Nw=qw["__core-js_shared__"];rl.exports=Nw});var ol=c((E1,sl)=>{"use strict";var xo=nl(),al=function(){var e=/[^.]+$/.exec(xo&&xo.keys&&xo.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function Uw(e){return!!al&&al in e}sl.exports=Uw});var To=c((R1,il)=>{"use strict";var kw=Function.prototype,Dw=kw.toString;function Bw(e){if(e!=null){try{return Dw.call(e)}catch{}try{return e+""}catch{}}return""}il.exports=Bw});var cl=c((O1,ul)=>{"use strict";var Mw=Vn(),Gw=ol(),Fw=ke(),jw=To(),Qw=/[\\^$.*+?()[\]{}|]/g,$w=/^\[object .+?Constructor\]$/,Ww=Function.prototype,Vw=Object.prototype,Kw=Ww.toString,Yw=Vw.hasOwnProperty,Hw=RegExp("^"+Kw.call(Yw).replace(Qw,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Zw(e){if(!Fw(e)||Gw(e))return!1;var t=Mw(e)?Hw:$w;return t.test(jw(e))}ul.exports=Zw});var ll=c((C1,pl)=>{"use strict";function zw(e,t){return e?.[t]}pl.exports=zw});var qt=c((P1,dl)=>{"use strict";var Jw=cl(),Xw=ll();function eS(e,t){var r=Xw(e,t);return Jw(r)?r:void 0}dl.exports=eS});var Eo=c((L1,fl)=>{"use strict";var tS=qt(),rS=function(){try{var e=tS(Object,"defineProperty");return e({},"",{}),e}catch{}}();fl.exports=rS});var hl=c((q1,gl)=>{"use strict";var nS=Xp(),ml=Eo(),aS=Wn(),sS=ml?function(e,t){return ml(e,"toString",{configurable:!0,enumerable:!1,value:nS(t),writable:!0})}:aS;gl.exports=sS});var Ro=c((N1,yl)=>{"use strict";var oS=800,iS=16,uS=Date.now;function cS(e){var t=0,r=0;return function(){var n=uS(),a=iS-(n-r);if(r=n,a>0){if(++t>=oS)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}yl.exports=cS});var Ha=c((U1,bl)=>{"use strict";var pS=hl(),lS=Ro(),dS=lS(pS);bl.exports=dS});var Oo=c((k1,Al)=>{"use strict";var fS=Wn(),mS=So(),gS=Ha();function hS(e,t){return gS(mS(e,t,fS),e+"")}Al.exports=hS});var Kn=c((D1,vl)=>{"use strict";var yS=qt(),bS=yS(Object,"create");vl.exports=bS});var wl=c((B1,Il)=>{"use strict";var _l=Kn();function AS(){this.__data__=_l?_l(null):{},this.size=0}Il.exports=AS});var xl=c((M1,Sl)=>{"use strict";function vS(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}Sl.exports=vS});var El=c((G1,Tl)=>{"use strict";var _S=Kn(),IS="__lodash_hash_undefined__",wS=Object.prototype,SS=wS.hasOwnProperty;function xS(e){var t=this.__data__;if(_S){var r=t[e];return r===IS?void 0:r}return SS.call(t,e)?t[e]:void 0}Tl.exports=xS});var Ol=c((F1,Rl)=>{"use strict";var TS=Kn(),ES=Object.prototype,RS=ES.hasOwnProperty;function OS(e){var t=this.__data__;return TS?t[e]!==void 0:RS.call(t,e)}Rl.exports=OS});var Pl=c((j1,Cl)=>{"use strict";var CS=Kn(),PS="__lodash_hash_undefined__";function LS(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=CS&&t===void 0?PS:t,this}Cl.exports=LS});var ql=c((Q1,Ll)=>{"use strict";var qS=wl(),NS=xl(),US=El(),kS=Ol(),DS=Pl();function Nr(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])}}Nr.prototype.clear=qS;Nr.prototype.delete=NS;Nr.prototype.get=US;Nr.prototype.has=kS;Nr.prototype.set=DS;Ll.exports=Nr});var Ul=c(($1,Nl)=>{"use strict";function BS(){this.__data__=[],this.size=0}Nl.exports=BS});var Ur=c((W1,kl)=>{"use strict";function MS(e,t){return e===t||e!==e&&t!==t}kl.exports=MS});var Yn=c((V1,Dl)=>{"use strict";var GS=Ur();function FS(e,t){for(var r=e.length;r--;)if(GS(e[r][0],t))return r;return-1}Dl.exports=FS});var Ml=c((K1,Bl)=>{"use strict";var jS=Yn(),QS=Array.prototype,$S=QS.splice;function WS(e){var t=this.__data__,r=jS(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():$S.call(t,r,1),--this.size,!0}Bl.exports=WS});var Fl=c((Y1,Gl)=>{"use strict";var VS=Yn();function KS(e){var t=this.__data__,r=VS(t,e);return r<0?void 0:t[r][1]}Gl.exports=KS});var Ql=c((H1,jl)=>{"use strict";var YS=Yn();function HS(e){return YS(this.__data__,e)>-1}jl.exports=HS});var Wl=c((Z1,$l)=>{"use strict";var ZS=Yn();function zS(e,t){var r=this.__data__,n=ZS(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}$l.exports=zS});var Hn=c((z1,Vl)=>{"use strict";var JS=Ul(),XS=Ml(),ex=Fl(),tx=Ql(),rx=Wl();function kr(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])}}kr.prototype.clear=JS;kr.prototype.delete=XS;kr.prototype.get=ex;kr.prototype.has=tx;kr.prototype.set=rx;Vl.exports=kr});var Za=c((J1,Kl)=>{"use strict";var nx=qt(),ax=fe(),sx=nx(ax,"Map");Kl.exports=sx});var Zl=c((X1,Hl)=>{"use strict";var Yl=ql(),ox=Hn(),ix=Za();function ux(){this.size=0,this.__data__={hash:new Yl,map:new(ix||ox),string:new Yl}}Hl.exports=ux});var Jl=c((ej,zl)=>{"use strict";function cx(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}zl.exports=cx});var Zn=c((tj,Xl)=>{"use strict";var px=Jl();function lx(e,t){var r=e.__data__;return px(t)?r[typeof t=="string"?"string":"hash"]:r.map}Xl.exports=lx});var td=c((rj,ed)=>{"use strict";var dx=Zn();function fx(e){var t=dx(this,e).delete(e);return this.size-=t?1:0,t}ed.exports=fx});var nd=c((nj,rd)=>{"use strict";var mx=Zn();function gx(e){return mx(this,e).get(e)}rd.exports=gx});var sd=c((aj,ad)=>{"use strict";var hx=Zn();function yx(e){return hx(this,e).has(e)}ad.exports=yx});var id=c((sj,od)=>{"use strict";var bx=Zn();function Ax(e,t){var r=bx(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}od.exports=Ax});var za=c((oj,ud)=>{"use strict";var vx=Zl(),_x=td(),Ix=nd(),wx=sd(),Sx=id();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])}}Dr.prototype.clear=vx;Dr.prototype.delete=_x;Dr.prototype.get=Ix;Dr.prototype.has=wx;Dr.prototype.set=Sx;ud.exports=Dr});var pd=c((ij,cd)=>{"use strict";var xx="__lodash_hash_undefined__";function Tx(e){return this.__data__.set(e,xx),this}cd.exports=Tx});var dd=c((uj,ld)=>{"use strict";function Ex(e){return this.__data__.has(e)}ld.exports=Ex});var Co=c((cj,fd)=>{"use strict";var Rx=za(),Ox=pd(),Cx=dd();function Ja(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new Rx;++t<r;)this.add(e[t])}Ja.prototype.add=Ja.prototype.push=Ox;Ja.prototype.has=Cx;fd.exports=Ja});var gd=c((pj,md)=>{"use strict";function Px(e,t,r,n){for(var a=e.length,s=r+(n?1:-1);n?s--:++s<a;)if(t(e[s],s,e))return s;return-1}md.exports=Px});var yd=c((lj,hd)=>{"use strict";function Lx(e){return e!==e}hd.exports=Lx});var Ad=c((dj,bd)=>{"use strict";function qx(e,t,r){for(var n=r-1,a=e.length;++n<a;)if(e[n]===t)return n;return-1}bd.exports=qx});var _d=c((fj,vd)=>{"use strict";var Nx=gd(),Ux=yd(),kx=Ad();function Dx(e,t,r){return t===t?kx(e,t,r):Nx(e,Ux,r)}vd.exports=Dx});var Po=c((mj,Id)=>{"use strict";var Bx=_d();function Mx(e,t){var r=e==null?0:e.length;return!!r&&Bx(e,t,0)>-1}Id.exports=Mx});var Sd=c((gj,wd)=>{"use strict";function Gx(e,t,r){for(var n=-1,a=e==null?0:e.length;++n<a;)if(r(t,e[n]))return!0;return!1}wd.exports=Gx});var Lo=c((hj,xd)=>{"use strict";function Fx(e,t){return e.has(t)}xd.exports=Fx});var qo=c((yj,Td)=>{"use strict";var jx=qt(),Qx=fe(),$x=jx(Qx,"Set");Td.exports=$x});var No=c((bj,Ed)=>{"use strict";function Wx(){}Ed.exports=Wx});var Xa=c((Aj,Rd)=>{"use strict";function Vx(e){var t=-1,r=Array(e.size);return e.forEach(function(n){r[++t]=n}),r}Rd.exports=Vx});var Cd=c((vj,Od)=>{"use strict";var Uo=qo(),Kx=No(),Yx=Xa(),Hx=1/0,Zx=Uo&&1/Yx(new Uo([,-0]))[1]==Hx?function(e){return new Uo(e)}:Kx;Od.exports=Zx});var Ld=c((_j,Pd)=>{"use strict";var zx=Co(),Jx=Po(),Xx=Sd(),eT=Lo(),tT=Cd(),rT=Xa(),nT=200;function aT(e,t,r){var n=-1,a=Jx,s=e.length,o=!0,i=[],u=i;if(r)o=!1,a=Xx;else if(s>=nT){var d=t?null:tT(e);if(d)return rT(d);o=!1,a=eT,u=new zx}else u=t?[]:i;e:for(;++n<s;){var f=e[n],g=t?t(f):f;if(f=r||f!==0?f:0,o&&g===g){for(var A=u.length;A--;)if(u[A]===g)continue e;t&&u.push(g),i.push(f)}else a(u,g,r)||(u!==i&&u.push(g),i.push(f))}return i}Pd.exports=aT});var es=c((Ij,qd)=>{"use strict";var sT=9007199254740991;function oT(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=sT}qd.exports=oT});var Br=c((wj,Nd)=>{"use strict";var iT=Vn(),uT=es();function cT(e){return e!=null&&uT(e.length)&&!iT(e)}Nd.exports=cT});var ko=c((Sj,Ud)=>{"use strict";var pT=Br(),lT=Te();function dT(e){return lT(e)&&pT(e)}Ud.exports=dT});var Dd=c((xj,kd)=>{"use strict";var fT=wo(),mT=Oo(),gT=Ld(),hT=ko(),yT=mT(function(e){return gT(fT(e,1,hT,!0))});kd.exports=yT});var Md=c((Tj,Bd)=>{"use strict";var bT=Hn();function AT(){this.__data__=new bT,this.size=0}Bd.exports=AT});var Fd=c((Ej,Gd)=>{"use strict";function vT(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}Gd.exports=vT});var Qd=c((Rj,jd)=>{"use strict";function _T(e){return this.__data__.get(e)}jd.exports=_T});var Wd=c((Oj,$d)=>{"use strict";function IT(e){return this.__data__.has(e)}$d.exports=IT});var Kd=c((Cj,Vd)=>{"use strict";var wT=Hn(),ST=Za(),xT=za(),TT=200;function ET(e,t){var r=this.__data__;if(r instanceof wT){var n=r.__data__;if(!ST||n.length<TT-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new xT(n)}return r.set(e,t),this.size=r.size,this}Vd.exports=ET});var zn=c((Pj,Yd)=>{"use strict";var RT=Hn(),OT=Md(),CT=Fd(),PT=Qd(),LT=Wd(),qT=Kd();function Mr(e){var t=this.__data__=new RT(e);this.size=t.size}Mr.prototype.clear=OT;Mr.prototype.delete=CT;Mr.prototype.get=PT;Mr.prototype.has=LT;Mr.prototype.set=qT;Yd.exports=Mr});var Jn=c((Lj,Zd)=>{"use strict";var Hd=Eo();function NT(e,t,r){t=="__proto__"&&Hd?Hd(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}Zd.exports=NT});var Do=c((qj,zd)=>{"use strict";var UT=Jn(),kT=Ur();function DT(e,t,r){(r!==void 0&&!kT(e[t],r)||r===void 0&&!(t in e))&&UT(e,t,r)}zd.exports=DT});var Xd=c((Nj,Jd)=>{"use strict";function BT(e){return function(t,r,n){for(var a=-1,s=Object(t),o=n(t),i=o.length;i--;){var u=o[e?i:++a];if(r(s[u],u,s)===!1)break}return t}}Jd.exports=BT});var Bo=c((Uj,ef)=>{"use strict";var MT=Xd(),GT=MT();ef.exports=GT});var Mo=c((Xn,Gr)=>{"use strict";var FT=fe(),af=typeof Xn=="object"&&Xn&&!Xn.nodeType&&Xn,tf=af&&typeof Gr=="object"&&Gr&&!Gr.nodeType&&Gr,jT=tf&&tf.exports===af,rf=jT?FT.Buffer:void 0,nf=rf?rf.allocUnsafe:void 0;function QT(e,t){if(t)return e.slice();var r=e.length,n=nf?nf(r):new e.constructor(r);return e.copy(n),n}Gr.exports=QT});var Go=c((kj,sf)=>{"use strict";var $T=fe(),WT=$T.Uint8Array;sf.exports=WT});var ts=c((Dj,uf)=>{"use strict";var of=Go();function VT(e){var t=new e.constructor(e.byteLength);return new of(t).set(new of(e)),t}uf.exports=VT});var Fo=c((Bj,cf)=>{"use strict";var KT=ts();function YT(e,t){var r=t?KT(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}cf.exports=YT});var Fr=c((Mj,pf)=>{"use strict";function HT(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t}pf.exports=HT});var ea=c((Gj,df)=>{"use strict";var ZT=ke(),lf=Object.create,zT=function(){function e(){}return function(t){if(!ZT(t))return{};if(lf)return lf(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();df.exports=zT});var jo=c((Fj,ff)=>{"use strict";function JT(e,t){return function(r){return e(t(r))}}ff.exports=JT});var rs=c((jj,mf)=>{"use strict";var XT=jo(),eE=XT(Object.getPrototypeOf,Object);mf.exports=eE});var ns=c((Qj,gf)=>{"use strict";var tE=Object.prototype;function rE(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||tE;return e===r}gf.exports=rE});var Qo=c(($j,hf)=>{"use strict";var nE=ea(),aE=rs(),sE=ns();function oE(e){return typeof e.constructor=="function"&&!sE(e)?nE(aE(e)):{}}hf.exports=oE});var bf=c((Wj,yf)=>{"use strict";function iE(){return!1}yf.exports=iE});var ra=c((ta,jr)=>{"use strict";var uE=fe(),cE=bf(),_f=typeof ta=="object"&&ta&&!ta.nodeType&&ta,Af=_f&&typeof jr=="object"&&jr&&!jr.nodeType&&jr,pE=Af&&Af.exports===_f,vf=pE?uE.Buffer:void 0,lE=vf?vf.isBuffer:void 0,dE=lE||cE;jr.exports=dE});var $o=c((Vj,wf)=>{"use strict";var fE=Lt(),mE=rs(),gE=Te(),hE="[object Object]",yE=Function.prototype,bE=Object.prototype,If=yE.toString,AE=bE.hasOwnProperty,vE=If.call(Object);function _E(e){if(!gE(e)||fE(e)!=hE)return!1;var t=mE(e);if(t===null)return!0;var r=AE.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&If.call(r)==vE}wf.exports=_E});var xf=c((Kj,Sf)=>{"use strict";var IE=Lt(),wE=es(),SE=Te(),xE="[object Arguments]",TE="[object Array]",EE="[object Boolean]",RE="[object Date]",OE="[object Error]",CE="[object Function]",PE="[object Map]",LE="[object Number]",qE="[object Object]",NE="[object RegExp]",UE="[object Set]",kE="[object String]",DE="[object WeakMap]",BE="[object ArrayBuffer]",ME="[object DataView]",GE="[object Float32Array]",FE="[object Float64Array]",jE="[object Int8Array]",QE="[object Int16Array]",$E="[object Int32Array]",WE="[object Uint8Array]",VE="[object Uint8ClampedArray]",KE="[object Uint16Array]",YE="[object Uint32Array]",W={};W[GE]=W[FE]=W[jE]=W[QE]=W[$E]=W[WE]=W[VE]=W[KE]=W[YE]=!0;W[xE]=W[TE]=W[BE]=W[EE]=W[ME]=W[RE]=W[OE]=W[CE]=W[PE]=W[LE]=W[qE]=W[NE]=W[UE]=W[kE]=W[DE]=!1;function HE(e){return SE(e)&&wE(e.length)&&!!W[IE(e)]}Sf.exports=HE});var as=c((Yj,Tf)=>{"use strict";function ZE(e){return function(t){return e(t)}}Tf.exports=ZE});var ss=c((na,Qr)=>{"use strict";var zE=Io(),Ef=typeof na=="object"&&na&&!na.nodeType&&na,aa=Ef&&typeof Qr=="object"&&Qr&&!Qr.nodeType&&Qr,JE=aa&&aa.exports===Ef,Wo=JE&&zE.process,XE=function(){try{var e=aa&&aa.require&&aa.require("util").types;return e||Wo&&Wo.binding&&Wo.binding("util")}catch{}}();Qr.exports=XE});var os=c((Hj,Cf)=>{"use strict";var eR=xf(),tR=as(),Rf=ss(),Of=Rf&&Rf.isTypedArray,rR=Of?tR(Of):eR;Cf.exports=rR});var Vo=c((Zj,Pf)=>{"use strict";function nR(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}Pf.exports=nR});var Ko=c((zj,Lf)=>{"use strict";var aR=Jn(),sR=Ur(),oR=Object.prototype,iR=oR.hasOwnProperty;function uR(e,t,r){var n=e[t];(!(iR.call(e,t)&&sR(n,r))||r===void 0&&!(t in e))&&aR(e,t,r)}Lf.exports=uR});var $r=c((Jj,qf)=>{"use strict";var cR=Ko(),pR=Jn();function lR(e,t,r,n){var a=!r;r||(r={});for(var s=-1,o=t.length;++s<o;){var i=t[s],u=n?n(r[i],e[i],i,r,e):void 0;u===void 0&&(u=e[i]),a?pR(r,i,u):cR(r,i,u)}return r}qf.exports=lR});var Uf=c((Xj,Nf)=>{"use strict";function dR(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}Nf.exports=dR});var sa=c((eQ,kf)=>{"use strict";var fR=9007199254740991,mR=/^(?:0|[1-9]\d*)$/;function gR(e,t){var r=typeof e;return t=t??fR,!!t&&(r=="number"||r!="symbol"&&mR.test(e))&&e>-1&&e%1==0&&e<t}kf.exports=gR});var Yo=c((tQ,Df)=>{"use strict";var hR=Uf(),yR=$n(),bR=ue(),AR=ra(),vR=sa(),_R=os(),IR=Object.prototype,wR=IR.hasOwnProperty;function SR(e,t){var r=bR(e),n=!r&&yR(e),a=!r&&!n&&AR(e),s=!r&&!n&&!a&&_R(e),o=r||n||a||s,i=o?hR(e.length,String):[],u=i.length;for(var d in e)(t||wR.call(e,d))&&!(o&&(d=="length"||a&&(d=="offset"||d=="parent")||s&&(d=="buffer"||d=="byteLength"||d=="byteOffset")||vR(d,u)))&&i.push(d);return i}Df.exports=SR});var Mf=c((rQ,Bf)=>{"use strict";function xR(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}Bf.exports=xR});var Ff=c((nQ,Gf)=>{"use strict";var TR=ke(),ER=ns(),RR=Mf(),OR=Object.prototype,CR=OR.hasOwnProperty;function PR(e){if(!TR(e))return RR(e);var t=ER(e),r=[];for(var n in e)n=="constructor"&&(t||!CR.call(e,n))||r.push(n);return r}Gf.exports=PR});var Wr=c((aQ,jf)=>{"use strict";var LR=Yo(),qR=Ff(),NR=Br();function UR(e){return NR(e)?LR(e,!0):qR(e)}jf.exports=UR});var $f=c((sQ,Qf)=>{"use strict";var kR=$r(),DR=Wr();function BR(e){return kR(e,DR(e))}Qf.exports=BR});var Zf=c((oQ,Hf)=>{"use strict";var Wf=Do(),MR=Mo(),GR=Fo(),FR=Fr(),jR=Qo(),Vf=$n(),Kf=ue(),QR=ko(),$R=ra(),WR=Vn(),VR=ke(),KR=$o(),YR=os(),Yf=Vo(),HR=$f();function ZR(e,t,r,n,a,s,o){var i=Yf(e,r),u=Yf(t,r),d=o.get(u);if(d){Wf(e,r,d);return}var f=s?s(i,u,r+"",e,t,o):void 0,g=f===void 0;if(g){var A=Kf(u),I=!A&&$R(u),q=!A&&!I&&YR(u);f=u,A||I||q?Kf(i)?f=i:QR(i)?f=FR(i):I?(g=!1,f=MR(u,!0)):q?(g=!1,f=GR(u,!0)):f=[]:KR(u)||Vf(u)?(f=i,Vf(i)?f=HR(i):(!VR(i)||WR(i))&&(f=jR(u))):g=!1}g&&(o.set(u,f),a(f,u,n,s,o),o.delete(u)),Wf(e,r,f)}Hf.exports=ZR});var Xf=c((iQ,Jf)=>{"use strict";var zR=zn(),JR=Do(),XR=Bo(),eO=Zf(),tO=ke(),rO=Wr(),nO=Vo();function zf(e,t,r,n,a){e!==t&&XR(t,function(s,o){if(a||(a=new zR),tO(s))eO(e,t,o,r,zf,n,a);else{var i=n?n(nO(e,o),s,o+"",e,t,a):void 0;i===void 0&&(i=s),JR(e,o,i)}},rO)}Jf.exports=zf});var tm=c((uQ,em)=>{"use strict";var aO=Ur(),sO=Br(),oO=sa(),iO=ke();function uO(e,t,r){if(!iO(r))return!1;var n=typeof t;return(n=="number"?sO(r)&&oO(t,r.length):n=="string"&&t in r)?aO(r[t],e):!1}em.exports=uO});var nm=c((cQ,rm)=>{"use strict";var cO=Oo(),pO=tm();function lO(e){return cO(function(t,r){var n=-1,a=r.length,s=a>1?r[a-1]:void 0,o=a>2?r[2]:void 0;for(s=e.length>3&&typeof s=="function"?(a--,s):void 0,o&&pO(r[0],r[1],o)&&(s=a<3?void 0:s,a=1),t=Object(t);++n<a;){var i=r[n];i&&e(t,i,n,s)}return t})}rm.exports=lO});var Ho=c((pQ,am)=>{"use strict";var dO=Xf(),fO=nm(),mO=fO(function(e,t,r){dO(e,t,r)});am.exports=mO});var sg=c(_e=>{"use strict";_e.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"};_e.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"]};_e.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};_e.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};_e.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};_e.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]};_e.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}};_e.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}};_e.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=_e.aliasToReal,r={};for(var n in t){var a=t[n];e.call(r,a)?r[a].push(n):r[a]=[n]}return r}();_e.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"};_e.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};_e.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 Vi=c((LW,og)=>{"use strict";og.exports={}});var pg=c((qW,cg)=>{"use strict";var se=sg(),KC=Vi(),ig=Array.prototype.push;function YC(e,t){return t==2?function(r,n){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}function Ki(e,t){return t==2?function(r,n){return e(r,n)}:function(r){return e(r)}}function ug(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}function HC(e){return function(t){return e({},t)}}function ZC(e,t){return function(){for(var r=arguments.length,n=r-1,a=Array(r);r--;)a[r]=arguments[r];var s=a[t],o=a.slice(0,t);return s&&ig.apply(o,s),t!=n&&ig.apply(o,a.slice(t+1)),e.apply(this,o)}}function Yi(e,t){return function(){var r=arguments.length;if(r){for(var n=Array(r);r--;)n[r]=arguments[r];var a=n[0]=t.apply(void 0,n);return e.apply(void 0,n),a}}}function Hi(e,t,r,n){var a=typeof t=="function",s=t===Object(t);if(s&&(n=r,r=t,t=void 0),r==null)throw new TypeError;n||(n={});var o={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},i=a?r:KC,u="curry"in n&&n.curry,d="fixed"in n&&n.fixed,f="rearg"in n&&n.rearg,g=a?r.runInContext():void 0,A=a?r:{ary:e.ary,assign:e.assign,clone:e.clone,curry:e.curry,forEach:e.forEach,isArray:e.isArray,isError:e.isError,isFunction:e.isFunction,isWeakMap:e.isWeakMap,iteratee:e.iteratee,keys:e.keys,rearg:e.rearg,toInteger:e.toInteger,toPath:e.toPath},I=A.ary,q=A.assign,G=A.clone,k=A.curry,N=A.forEach,V=A.isArray,Tt=A.isError,Le=A.isFunction,Et=A.isWeakMap,Er=A.keys,hn=A.rearg,yn=A.toInteger,C_=A.toPath,Pc=Er(se.aryMethod),P_={castArray:function(x){return function(){var _=arguments[0];return V(_)?x(ug(_)):x.apply(void 0,arguments)}},iteratee:function(x){return function(){var _=arguments[0],w=arguments[1],C=x(_,w),D=C.length;return o.cap&&typeof w=="number"?(w=w>2?w-2:1,D&&D<=w?C:Ki(C,w)):C}},mixin:function(x){return function(_){var w=this;if(!Le(w))return x(w,Object(_));var C=[];return N(Er(_),function(D){Le(_[D])&&C.push([D,w.prototype[D]])}),x(w,Object(_)),N(C,function(D){var pe=D[1];Le(pe)?w.prototype[D[0]]=pe:delete w.prototype[D[0]]}),w}},nthArg:function(x){return function(_){var w=_<0?1:yn(_)+1;return k(x(_),w)}},rearg:function(x){return function(_,w){var C=w?w.length:0;return k(x(_,w),C)}},runInContext:function(x){return function(_){return Hi(e,x(_),n)}}};function L_(x,_){if(o.cap){var w=se.iterateeRearg[x];if(w)return D_(_,w);var C=!a&&se.iterateeAry[x];if(C)return k_(_,C)}return _}function q_(x,_,w){return u||o.curry&&w>1?k(_,w):_}function Lc(x,_,w){if(o.fixed&&(d||!se.skipFixed[x])){var C=se.methodSpread[x],D=C&&C.start;return D===void 0?I(_,w):ZC(_,D)}return _}function qc(x,_,w){return o.rearg&&w>1&&(f||!se.skipRearg[x])?hn(_,se.methodRearg[x]||se.aryRearg[w]):_}function N_(x,_){_=C_(_);for(var w=-1,C=_.length,D=C-1,pe=G(Object(x)),Je=pe;Je!=null&&++w<C;){var qe=_[w],Xe=Je[qe];Xe!=null&&!(Le(Xe)||Tt(Xe)||Et(Xe))&&(Je[qe]=G(w==D?Xe:Object(Xe))),Je=Je[qe]}return pe}function U_(x){return Se.runInContext.convert(x)(void 0)}function Nc(x,_){var w=se.aliasToReal[x]||x,C=se.remap[w]||w,D=n;return function(pe){var Je=a?g:A,qe=a?g[C]:_,Xe=q(q({},D),pe);return Hi(Je,w,qe,Xe)}}function k_(x,_){return Uc(x,function(w){return typeof w=="function"?Ki(w,_):w})}function D_(x,_){return Uc(x,function(w){var C=_.length;return YC(hn(Ki(w,C),_),C)})}function Uc(x,_){return function(){var w=arguments.length;if(!w)return x();for(var C=Array(w);w--;)C[w]=arguments[w];var D=o.rearg?0:w-1;return C[D]=_(C[D]),x.apply(void 0,C)}}function kc(x,_,w){var C,D=se.aliasToReal[x]||x,pe=_,Je=P_[D];return Je?pe=Je(_):o.immutable&&(se.mutate.array[D]?pe=Yi(_,ug):se.mutate.object[D]?pe=Yi(_,HC(_)):se.mutate.set[D]&&(pe=Yi(_,N_))),N(Pc,function(qe){return N(se.aryMethod[qe],function(Xe){if(D==Xe){var Dc=se.methodSpread[D],B_=Dc&&Dc.afterRearg;return C=B_?Lc(D,qc(D,pe,qe),qe):qc(D,Lc(D,pe,qe),qe),C=L_(D,C),C=q_(D,C,qe),!1}}),!C}),C||(C=pe),C==_&&(C=u?k(C,1):function(){return _.apply(this,arguments)}),C.convert=Nc(D,_),C.placeholder=_.placeholder=w,C}if(!s)return kc(t,r,i);var Se=r,bn=[];return N(Pc,function(x){N(se.aryMethod[x],function(_){var w=Se[se.remap[_]||_];w&&bn.push([_,kc(_,w,Se)])})}),N(Er(Se),function(x){var _=Se[x];if(typeof _=="function"){for(var w=bn.length;w--;)if(bn[w][0]==x)return;_.convert=Nc(x,_),bn.push([x,_])}}),N(bn,function(x){Se[x[0]]=x[1]}),Se.convert=U_,Se.placeholder=Se,N(Er(Se),function(x){N(se.realToAlias[x]||[],function(_){Se[_]=Se[x]})}),Se}cg.exports=Hi});var Zi=c((NW,lg)=>{"use strict";var zC=qt(),JC=fe(),XC=zC(JC,"WeakMap");lg.exports=XC});var zi=c((UW,fg)=>{"use strict";var dg=Zi(),eP=dg&&new dg;fg.exports=eP});var Ji=c((kW,gg)=>{"use strict";var tP=Wn(),mg=zi(),rP=mg?function(e,t){return mg.set(e,t),e}:tP;gg.exports=rP});var ha=c((DW,hg)=>{"use strict";var nP=ea(),aP=ke();function sP(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=nP(e.prototype),n=e.apply(r,t);return aP(n)?n:r}}hg.exports=sP});var bg=c((BW,yg)=>{"use strict";var oP=ha(),iP=fe(),uP=1;function cP(e,t,r){var n=t&uP,a=oP(e);function s(){var o=this&&this!==iP&&this instanceof s?a:e;return o.apply(n?r:this,arguments)}return s}yg.exports=cP});var Xi=c((MW,Ag)=>{"use strict";var pP=Math.max;function lP(e,t,r,n){for(var a=-1,s=e.length,o=r.length,i=-1,u=t.length,d=pP(s-o,0),f=Array(u+d),g=!n;++i<u;)f[i]=t[i];for(;++a<o;)(g||a<s)&&(f[r[a]]=e[a]);for(;d--;)f[i++]=e[a++];return f}Ag.exports=lP});var eu=c((GW,vg)=>{"use strict";var dP=Math.max;function fP(e,t,r,n){for(var a=-1,s=e.length,o=-1,i=r.length,u=-1,d=t.length,f=dP(s-i,0),g=Array(f+d),A=!n;++a<f;)g[a]=e[a];for(var I=a;++u<d;)g[I+u]=t[u];for(;++o<i;)(A||a<s)&&(g[I+r[o]]=e[a++]);return g}vg.exports=fP});var Ig=c((FW,_g)=>{"use strict";function mP(e,t){for(var r=e.length,n=0;r--;)e[r]===t&&++n;return n}_g.exports=mP});var ws=c((jW,wg)=>{"use strict";function gP(){}wg.exports=gP});var xs=c((QW,Sg)=>{"use strict";var hP=ea(),yP=ws(),bP=4294967295;function Ss(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=bP,this.__views__=[]}Ss.prototype=hP(yP.prototype);Ss.prototype.constructor=Ss;Sg.exports=Ss});var tu=c(($W,Tg)=>{"use strict";var xg=zi(),AP=No(),vP=xg?function(e){return xg.get(e)}:AP;Tg.exports=vP});var Rg=c((WW,Eg)=>{"use strict";var _P={};Eg.exports=_P});var Pg=c((VW,Cg)=>{"use strict";var Og=Rg(),IP=Object.prototype,wP=IP.hasOwnProperty;function SP(e){for(var t=e.name+"",r=Og[t],n=wP.call(Og,t)?r.length:0;n--;){var a=r[n],s=a.func;if(s==null||s==e)return a.name}return t}Cg.exports=SP});var ru=c((KW,Lg)=>{"use strict";var xP=ea(),TP=ws();function Ts(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}Ts.prototype=xP(TP.prototype);Ts.prototype.constructor=Ts;Lg.exports=Ts});var Ng=c((YW,qg)=>{"use strict";var EP=xs(),RP=ru(),OP=Fr();function CP(e){if(e instanceof EP)return e.clone();var t=new RP(e.__wrapped__,e.__chain__);return t.__actions__=OP(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}qg.exports=CP});var Dg=c((HW,kg)=>{"use strict";var PP=xs(),Ug=ru(),LP=ws(),qP=ue(),NP=Te(),UP=Ng(),kP=Object.prototype,DP=kP.hasOwnProperty;function Es(e){if(NP(e)&&!qP(e)&&!(e instanceof PP)){if(e instanceof Ug)return e;if(DP.call(e,"__wrapped__"))return UP(e)}return new Ug(e)}Es.prototype=LP.prototype;Es.prototype.constructor=Es;kg.exports=Es});var Mg=c((ZW,Bg)=>{"use strict";var BP=xs(),MP=tu(),GP=Pg(),FP=Dg();function jP(e){var t=GP(e),r=FP[t];if(typeof r!="function"||!(t in BP.prototype))return!1;if(e===r)return!0;var n=MP(r);return!!n&&e===n[0]}Bg.exports=jP});var nu=c((zW,Gg)=>{"use strict";var QP=Ji(),$P=Ro(),WP=$P(QP);Gg.exports=WP});var jg=c((JW,Fg)=>{"use strict";var VP=/\{\n\/\* \[wrapped with (.+)\] \*/,KP=/,? & /;function YP(e){var t=e.match(VP);return t?t[1].split(KP):[]}Fg.exports=YP});var $g=c((XW,Qg)=>{"use strict";var HP=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function ZP(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(HP,`{
|
|
1
|
+
"use strict";var uI=Object.create;var Oa=Object.defineProperty;var pI=Object.getOwnPropertyDescriptor;var cI=Object.getOwnPropertyNames;var lI=Object.getPrototypeOf,dI=Object.prototype.hasOwnProperty;var u=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),w=(e,t)=>{for(var r in t)Oa(e,r,{get:t[r],enumerable:!0})},wu=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of cI(t))!dI.call(e,n)&&n!==r&&Oa(e,n,{get:()=>t[n],enumerable:!(a=pI(t,n))||a.enumerable});return e};var C=(e,t,r)=>(r=e!=null?uI(lI(e)):{},wu(t||!e||!e.__esModule?Oa(r,"default",{value:e,enumerable:!0}):r,e)),fI=e=>wu(Oa({},"__esModule",{value:!0}),e);var $a=u((P0,sp)=>{"use strict";function cS(e,t){for(var r=-1,a=t.length,n=e.length;++r<a;)e[n+r]=t[r];return e}sp.exports=cS});var lo=u((L0,ip)=>{"use strict";var lS=typeof global=="object"&&global&&global.Object===Object&&global;ip.exports=lS});var ne=u((C0,up)=>{"use strict";var dS=lo(),fS=typeof self=="object"&&self&&self.Object===Object&&self,mS=dS||fS||Function("return this")();up.exports=mS});var Rt=u((q0,pp)=>{"use strict";var gS=ne(),hS=gS.Symbol;pp.exports=hS});var fp=u((U0,dp)=>{"use strict";var cp=Rt(),lp=Object.prototype,yS=lp.hasOwnProperty,AS=lp.toString,Vr=cp?cp.toStringTag:void 0;function bS(e){var t=yS.call(e,Vr),r=e[Vr];try{e[Vr]=void 0;var a=!0}catch{}var n=AS.call(e);return a&&(t?e[Vr]=r:delete e[Vr]),n}dp.exports=bS});var gp=u((D0,mp)=>{"use strict";var IS=Object.prototype,SS=IS.toString;function wS(e){return SS.call(e)}mp.exports=wS});var dt=u((N0,Ap)=>{"use strict";var hp=Rt(),vS=fp(),TS=gp(),ES="[object Null]",RS="[object Undefined]",yp=hp?hp.toStringTag:void 0;function xS(e){return e==null?e===void 0?RS:ES:yp&&yp in Object(e)?vS(e):TS(e)}Ap.exports=xS});var ge=u((B0,bp)=>{"use strict";function _S(e){return e!=null&&typeof e=="object"}bp.exports=_S});var Sp=u((M0,Ip)=>{"use strict";var OS=dt(),PS=ge(),LS="[object Arguments]";function CS(e){return PS(e)&&OS(e)==LS}Ip.exports=CS});var Kr=u((G0,Tp)=>{"use strict";var wp=Sp(),qS=ge(),vp=Object.prototype,US=vp.hasOwnProperty,DS=vp.propertyIsEnumerable,NS=wp(function(){return arguments}())?wp:function(e){return qS(e)&&US.call(e,"callee")&&!DS.call(e,"callee")};Tp.exports=NS});var ee=u((k0,Ep)=>{"use strict";var BS=Array.isArray;Ep.exports=BS});var Op=u((F0,_p)=>{"use strict";var Rp=Rt(),MS=Kr(),GS=ee(),xp=Rp?Rp.isConcatSpreadable:void 0;function kS(e){return GS(e)||MS(e)||!!(xp&&e&&e[xp])}_p.exports=kS});var fo=u((Q0,Lp)=>{"use strict";var FS=$a(),QS=Op();function Pp(e,t,r,a,n){var o=-1,s=e.length;for(r||(r=QS),n||(n=[]);++o<s;){var i=e[o];t>0&&r(i)?t>1?Pp(i,t-1,r,a,n):FS(n,i):a||(n[n.length]=i)}return n}Lp.exports=Pp});var Yr=u((j0,Cp)=>{"use strict";function jS(e){return e}Cp.exports=jS});var Va=u((W0,qp)=>{"use strict";function WS(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}qp.exports=WS});var mo=u(($0,Dp)=>{"use strict";var $S=Va(),Up=Math.max;function VS(e,t,r){return t=Up(t===void 0?e.length-1:t,0),function(){for(var a=arguments,n=-1,o=Up(a.length-t,0),s=Array(o);++n<o;)s[n]=a[t+n];n=-1;for(var i=Array(t+1);++n<t;)i[n]=a[n];return i[t]=r(s),$S(e,this,i)}}Dp.exports=VS});var Bp=u((V0,Np)=>{"use strict";function KS(e){return function(){return e}}Np.exports=KS});var ve=u((K0,Mp)=>{"use strict";function YS(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}Mp.exports=YS});var Hr=u((Y0,Gp)=>{"use strict";var HS=dt(),zS=ve(),JS="[object AsyncFunction]",XS="[object Function]",ZS="[object GeneratorFunction]",ew="[object Proxy]";function tw(e){if(!zS(e))return!1;var t=HS(e);return t==XS||t==ZS||t==JS||t==ew}Gp.exports=tw});var Fp=u((H0,kp)=>{"use strict";var rw=ne(),aw=rw["__core-js_shared__"];kp.exports=aw});var Wp=u((z0,jp)=>{"use strict";var go=Fp(),Qp=function(){var e=/[^.]+$/.exec(go&&go.keys&&go.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function nw(e){return!!Qp&&Qp in e}jp.exports=nw});var ho=u((J0,$p)=>{"use strict";var ow=Function.prototype,sw=ow.toString;function iw(e){if(e!=null){try{return sw.call(e)}catch{}try{return e+""}catch{}}return""}$p.exports=iw});var Kp=u((X0,Vp)=>{"use strict";var uw=Hr(),pw=Wp(),cw=ve(),lw=ho(),dw=/[\\^$.*+?()[\]{}|]/g,fw=/^\[object .+?Constructor\]$/,mw=Function.prototype,gw=Object.prototype,hw=mw.toString,yw=gw.hasOwnProperty,Aw=RegExp("^"+hw.call(yw).replace(dw,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function bw(e){if(!cw(e)||pw(e))return!1;var t=uw(e)?Aw:fw;return t.test(lw(e))}Vp.exports=bw});var Hp=u((Z0,Yp)=>{"use strict";function Iw(e,t){return e?.[t]}Yp.exports=Iw});var ft=u((ek,zp)=>{"use strict";var Sw=Kp(),ww=Hp();function vw(e,t){var r=ww(e,t);return Sw(r)?r:void 0}zp.exports=vw});var yo=u((tk,Jp)=>{"use strict";var Tw=ft(),Ew=function(){try{var e=Tw(Object,"defineProperty");return e({},"",{}),e}catch{}}();Jp.exports=Ew});var ec=u((rk,Zp)=>{"use strict";var Rw=Bp(),Xp=yo(),xw=Yr(),_w=Xp?function(e,t){return Xp(e,"toString",{configurable:!0,enumerable:!1,value:Rw(t),writable:!0})}:xw;Zp.exports=_w});var Ao=u((ak,tc)=>{"use strict";var Ow=800,Pw=16,Lw=Date.now;function Cw(e){var t=0,r=0;return function(){var a=Lw(),n=Pw-(a-r);if(r=a,n>0){if(++t>=Ow)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}tc.exports=Cw});var Ka=u((nk,rc)=>{"use strict";var qw=ec(),Uw=Ao(),Dw=Uw(qw);rc.exports=Dw});var bo=u((ok,ac)=>{"use strict";var Nw=Yr(),Bw=mo(),Mw=Ka();function Gw(e,t){return Mw(Bw(e,t,Nw),e+"")}ac.exports=Gw});var zr=u((sk,nc)=>{"use strict";var kw=ft(),Fw=kw(Object,"create");nc.exports=Fw});var ic=u((ik,sc)=>{"use strict";var oc=zr();function Qw(){this.__data__=oc?oc(null):{},this.size=0}sc.exports=Qw});var pc=u((uk,uc)=>{"use strict";function jw(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}uc.exports=jw});var lc=u((pk,cc)=>{"use strict";var Ww=zr(),$w="__lodash_hash_undefined__",Vw=Object.prototype,Kw=Vw.hasOwnProperty;function Yw(e){var t=this.__data__;if(Ww){var r=t[e];return r===$w?void 0:r}return Kw.call(t,e)?t[e]:void 0}cc.exports=Yw});var fc=u((ck,dc)=>{"use strict";var Hw=zr(),zw=Object.prototype,Jw=zw.hasOwnProperty;function Xw(e){var t=this.__data__;return Hw?t[e]!==void 0:Jw.call(t,e)}dc.exports=Xw});var gc=u((lk,mc)=>{"use strict";var Zw=zr(),ev="__lodash_hash_undefined__";function tv(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=Zw&&t===void 0?ev:t,this}mc.exports=tv});var yc=u((dk,hc)=>{"use strict";var rv=ic(),av=pc(),nv=lc(),ov=fc(),sv=gc();function Kt(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var a=e[t];this.set(a[0],a[1])}}Kt.prototype.clear=rv;Kt.prototype.delete=av;Kt.prototype.get=nv;Kt.prototype.has=ov;Kt.prototype.set=sv;hc.exports=Kt});var bc=u((fk,Ac)=>{"use strict";function iv(){this.__data__=[],this.size=0}Ac.exports=iv});var Yt=u((mk,Ic)=>{"use strict";function uv(e,t){return e===t||e!==e&&t!==t}Ic.exports=uv});var Jr=u((gk,Sc)=>{"use strict";var pv=Yt();function cv(e,t){for(var r=e.length;r--;)if(pv(e[r][0],t))return r;return-1}Sc.exports=cv});var vc=u((hk,wc)=>{"use strict";var lv=Jr(),dv=Array.prototype,fv=dv.splice;function mv(e){var t=this.__data__,r=lv(t,e);if(r<0)return!1;var a=t.length-1;return r==a?t.pop():fv.call(t,r,1),--this.size,!0}wc.exports=mv});var Ec=u((yk,Tc)=>{"use strict";var gv=Jr();function hv(e){var t=this.__data__,r=gv(t,e);return r<0?void 0:t[r][1]}Tc.exports=hv});var xc=u((Ak,Rc)=>{"use strict";var yv=Jr();function Av(e){return yv(this.__data__,e)>-1}Rc.exports=Av});var Oc=u((bk,_c)=>{"use strict";var bv=Jr();function Iv(e,t){var r=this.__data__,a=bv(r,e);return a<0?(++this.size,r.push([e,t])):r[a][1]=t,this}_c.exports=Iv});var Xr=u((Ik,Pc)=>{"use strict";var Sv=bc(),wv=vc(),vv=Ec(),Tv=xc(),Ev=Oc();function Ht(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var a=e[t];this.set(a[0],a[1])}}Ht.prototype.clear=Sv;Ht.prototype.delete=wv;Ht.prototype.get=vv;Ht.prototype.has=Tv;Ht.prototype.set=Ev;Pc.exports=Ht});var Ya=u((Sk,Lc)=>{"use strict";var Rv=ft(),xv=ne(),_v=Rv(xv,"Map");Lc.exports=_v});var Uc=u((wk,qc)=>{"use strict";var Cc=yc(),Ov=Xr(),Pv=Ya();function Lv(){this.size=0,this.__data__={hash:new Cc,map:new(Pv||Ov),string:new Cc}}qc.exports=Lv});var Nc=u((vk,Dc)=>{"use strict";function Cv(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}Dc.exports=Cv});var Zr=u((Tk,Bc)=>{"use strict";var qv=Nc();function Uv(e,t){var r=e.__data__;return qv(t)?r[typeof t=="string"?"string":"hash"]:r.map}Bc.exports=Uv});var Gc=u((Ek,Mc)=>{"use strict";var Dv=Zr();function Nv(e){var t=Dv(this,e).delete(e);return this.size-=t?1:0,t}Mc.exports=Nv});var Fc=u((Rk,kc)=>{"use strict";var Bv=Zr();function Mv(e){return Bv(this,e).get(e)}kc.exports=Mv});var jc=u((xk,Qc)=>{"use strict";var Gv=Zr();function kv(e){return Gv(this,e).has(e)}Qc.exports=kv});var $c=u((_k,Wc)=>{"use strict";var Fv=Zr();function Qv(e,t){var r=Fv(this,e),a=r.size;return r.set(e,t),this.size+=r.size==a?0:1,this}Wc.exports=Qv});var Ha=u((Ok,Vc)=>{"use strict";var jv=Uc(),Wv=Gc(),$v=Fc(),Vv=jc(),Kv=$c();function zt(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var a=e[t];this.set(a[0],a[1])}}zt.prototype.clear=jv;zt.prototype.delete=Wv;zt.prototype.get=$v;zt.prototype.has=Vv;zt.prototype.set=Kv;Vc.exports=zt});var Yc=u((Pk,Kc)=>{"use strict";var Yv="__lodash_hash_undefined__";function Hv(e){return this.__data__.set(e,Yv),this}Kc.exports=Hv});var zc=u((Lk,Hc)=>{"use strict";function zv(e){return this.__data__.has(e)}Hc.exports=zv});var Io=u((Ck,Jc)=>{"use strict";var Jv=Ha(),Xv=Yc(),Zv=zc();function za(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new Jv;++t<r;)this.add(e[t])}za.prototype.add=za.prototype.push=Xv;za.prototype.has=Zv;Jc.exports=za});var Zc=u((qk,Xc)=>{"use strict";function eT(e,t,r,a){for(var n=e.length,o=r+(a?1:-1);a?o--:++o<n;)if(t(e[o],o,e))return o;return-1}Xc.exports=eT});var tl=u((Uk,el)=>{"use strict";function tT(e){return e!==e}el.exports=tT});var al=u((Dk,rl)=>{"use strict";function rT(e,t,r){for(var a=r-1,n=e.length;++a<n;)if(e[a]===t)return a;return-1}rl.exports=rT});var ol=u((Nk,nl)=>{"use strict";var aT=Zc(),nT=tl(),oT=al();function sT(e,t,r){return t===t?oT(e,t,r):aT(e,nT,r)}nl.exports=sT});var So=u((Bk,sl)=>{"use strict";var iT=ol();function uT(e,t){var r=e==null?0:e.length;return!!r&&iT(e,t,0)>-1}sl.exports=uT});var ul=u((Mk,il)=>{"use strict";function pT(e,t,r){for(var a=-1,n=e==null?0:e.length;++a<n;)if(r(t,e[a]))return!0;return!1}il.exports=pT});var wo=u((Gk,pl)=>{"use strict";function cT(e,t){return e.has(t)}pl.exports=cT});var vo=u((kk,cl)=>{"use strict";var lT=ft(),dT=ne(),fT=lT(dT,"Set");cl.exports=fT});var To=u((Fk,ll)=>{"use strict";function mT(){}ll.exports=mT});var Ja=u((Qk,dl)=>{"use strict";function gT(e){var t=-1,r=Array(e.size);return e.forEach(function(a){r[++t]=a}),r}dl.exports=gT});var ml=u((jk,fl)=>{"use strict";var Eo=vo(),hT=To(),yT=Ja(),AT=1/0,bT=Eo&&1/yT(new Eo([,-0]))[1]==AT?function(e){return new Eo(e)}:hT;fl.exports=bT});var hl=u((Wk,gl)=>{"use strict";var IT=Io(),ST=So(),wT=ul(),vT=wo(),TT=ml(),ET=Ja(),RT=200;function xT(e,t,r){var a=-1,n=ST,o=e.length,s=!0,i=[],p=i;if(r)s=!1,n=wT;else if(o>=RT){var f=t?null:TT(e);if(f)return ET(f);s=!1,n=vT,p=new IT}else p=t?[]:i;e:for(;++a<o;){var m=e[a],g=t?t(m):m;if(m=r||m!==0?m:0,s&&g===g){for(var h=p.length;h--;)if(p[h]===g)continue e;t&&p.push(g),i.push(m)}else n(p,g,r)||(p!==i&&p.push(g),i.push(m))}return i}gl.exports=xT});var Xa=u(($k,yl)=>{"use strict";var _T=9007199254740991;function OT(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=_T}yl.exports=OT});var Jt=u((Vk,Al)=>{"use strict";var PT=Hr(),LT=Xa();function CT(e){return e!=null&<(e.length)&&!PT(e)}Al.exports=CT});var Ro=u((Kk,bl)=>{"use strict";var qT=Jt(),UT=ge();function DT(e){return UT(e)&&qT(e)}bl.exports=DT});var Sl=u((Yk,Il)=>{"use strict";var NT=fo(),BT=bo(),MT=hl(),GT=Ro(),kT=BT(function(e){return MT(NT(e,1,GT,!0))});Il.exports=kT});var vl=u((Hk,wl)=>{"use strict";var FT=Xr();function QT(){this.__data__=new FT,this.size=0}wl.exports=QT});var El=u((zk,Tl)=>{"use strict";function jT(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}Tl.exports=jT});var xl=u((Jk,Rl)=>{"use strict";function WT(e){return this.__data__.get(e)}Rl.exports=WT});var Ol=u((Xk,_l)=>{"use strict";function $T(e){return this.__data__.has(e)}_l.exports=$T});var Ll=u((Zk,Pl)=>{"use strict";var VT=Xr(),KT=Ya(),YT=Ha(),HT=200;function zT(e,t){var r=this.__data__;if(r instanceof VT){var a=r.__data__;if(!KT||a.length<HT-1)return a.push([e,t]),this.size=++r.size,this;r=this.__data__=new YT(a)}return r.set(e,t),this.size=r.size,this}Pl.exports=zT});var ea=u((eF,Cl)=>{"use strict";var JT=Xr(),XT=vl(),ZT=El(),eE=xl(),tE=Ol(),rE=Ll();function Xt(e){var t=this.__data__=new JT(e);this.size=t.size}Xt.prototype.clear=XT;Xt.prototype.delete=ZT;Xt.prototype.get=eE;Xt.prototype.has=tE;Xt.prototype.set=rE;Cl.exports=Xt});var ta=u((tF,Ul)=>{"use strict";var ql=yo();function aE(e,t,r){t=="__proto__"&&ql?ql(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}Ul.exports=aE});var xo=u((rF,Dl)=>{"use strict";var nE=ta(),oE=Yt();function sE(e,t,r){(r!==void 0&&!oE(e[t],r)||r===void 0&&!(t in e))&&nE(e,t,r)}Dl.exports=sE});var Bl=u((aF,Nl)=>{"use strict";function iE(e){return function(t,r,a){for(var n=-1,o=Object(t),s=a(t),i=s.length;i--;){var p=s[e?i:++n];if(r(o[p],p,o)===!1)break}return t}}Nl.exports=iE});var _o=u((nF,Ml)=>{"use strict";var uE=Bl(),pE=uE();Ml.exports=pE});var Oo=u((ra,Zt)=>{"use strict";var cE=ne(),Ql=typeof ra=="object"&&ra&&!ra.nodeType&&ra,Gl=Ql&&typeof Zt=="object"&&Zt&&!Zt.nodeType&&Zt,lE=Gl&&Gl.exports===Ql,kl=lE?cE.Buffer:void 0,Fl=kl?kl.allocUnsafe:void 0;function dE(e,t){if(t)return e.slice();var r=e.length,a=Fl?Fl(r):new e.constructor(r);return e.copy(a),a}Zt.exports=dE});var Po=u((oF,jl)=>{"use strict";var fE=ne(),mE=fE.Uint8Array;jl.exports=mE});var Za=u((sF,$l)=>{"use strict";var Wl=Po();function gE(e){var t=new e.constructor(e.byteLength);return new Wl(t).set(new Wl(e)),t}$l.exports=gE});var Lo=u((iF,Vl)=>{"use strict";var hE=Za();function yE(e,t){var r=t?hE(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}Vl.exports=yE});var er=u((uF,Kl)=>{"use strict";function AE(e,t){var r=-1,a=e.length;for(t||(t=Array(a));++r<a;)t[r]=e[r];return t}Kl.exports=AE});var aa=u((pF,Hl)=>{"use strict";var bE=ve(),Yl=Object.create,IE=function(){function e(){}return function(t){if(!bE(t))return{};if(Yl)return Yl(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();Hl.exports=IE});var Co=u((cF,zl)=>{"use strict";function SE(e,t){return function(r){return e(t(r))}}zl.exports=SE});var en=u((lF,Jl)=>{"use strict";var wE=Co(),vE=wE(Object.getPrototypeOf,Object);Jl.exports=vE});var tn=u((dF,Xl)=>{"use strict";var TE=Object.prototype;function EE(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||TE;return e===r}Xl.exports=EE});var qo=u((fF,Zl)=>{"use strict";var RE=aa(),xE=en(),_E=tn();function OE(e){return typeof e.constructor=="function"&&!_E(e)?RE(xE(e)):{}}Zl.exports=OE});var td=u((mF,ed)=>{"use strict";function PE(){return!1}ed.exports=PE});var oa=u((na,tr)=>{"use strict";var LE=ne(),CE=td(),nd=typeof na=="object"&&na&&!na.nodeType&&na,rd=nd&&typeof tr=="object"&&tr&&!tr.nodeType&&tr,qE=rd&&rd.exports===nd,ad=qE?LE.Buffer:void 0,UE=ad?ad.isBuffer:void 0,DE=UE||CE;tr.exports=DE});var Uo=u((gF,sd)=>{"use strict";var NE=dt(),BE=en(),ME=ge(),GE="[object Object]",kE=Function.prototype,FE=Object.prototype,od=kE.toString,QE=FE.hasOwnProperty,jE=od.call(Object);function WE(e){if(!ME(e)||NE(e)!=GE)return!1;var t=BE(e);if(t===null)return!0;var r=QE.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&od.call(r)==jE}sd.exports=WE});var ud=u((hF,id)=>{"use strict";var $E=dt(),VE=Xa(),KE=ge(),YE="[object Arguments]",HE="[object Array]",zE="[object Boolean]",JE="[object Date]",XE="[object Error]",ZE="[object Function]",eR="[object Map]",tR="[object Number]",rR="[object Object]",aR="[object RegExp]",nR="[object Set]",oR="[object String]",sR="[object WeakMap]",iR="[object ArrayBuffer]",uR="[object DataView]",pR="[object Float32Array]",cR="[object Float64Array]",lR="[object Int8Array]",dR="[object Int16Array]",fR="[object Int32Array]",mR="[object Uint8Array]",gR="[object Uint8ClampedArray]",hR="[object Uint16Array]",yR="[object Uint32Array]",N={};N[pR]=N[cR]=N[lR]=N[dR]=N[fR]=N[mR]=N[gR]=N[hR]=N[yR]=!0;N[YE]=N[HE]=N[iR]=N[zE]=N[uR]=N[JE]=N[XE]=N[ZE]=N[eR]=N[tR]=N[rR]=N[aR]=N[nR]=N[oR]=N[sR]=!1;function AR(e){return KE(e)&&VE(e.length)&&!!N[$E(e)]}id.exports=AR});var rn=u((yF,pd)=>{"use strict";function bR(e){return function(t){return e(t)}}pd.exports=bR});var an=u((sa,rr)=>{"use strict";var IR=lo(),cd=typeof sa=="object"&&sa&&!sa.nodeType&&sa,ia=cd&&typeof rr=="object"&&rr&&!rr.nodeType&&rr,SR=ia&&ia.exports===cd,Do=SR&&IR.process,wR=function(){try{var e=ia&&ia.require&&ia.require("util").types;return e||Do&&Do.binding&&Do.binding("util")}catch{}}();rr.exports=wR});var nn=u((AF,fd)=>{"use strict";var vR=ud(),TR=rn(),ld=an(),dd=ld&&ld.isTypedArray,ER=dd?TR(dd):vR;fd.exports=ER});var No=u((bF,md)=>{"use strict";function RR(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}md.exports=RR});var Bo=u((IF,gd)=>{"use strict";var xR=ta(),_R=Yt(),OR=Object.prototype,PR=OR.hasOwnProperty;function LR(e,t,r){var a=e[t];(!(PR.call(e,t)&&_R(a,r))||r===void 0&&!(t in e))&&xR(e,t,r)}gd.exports=LR});var ar=u((SF,hd)=>{"use strict";var CR=Bo(),qR=ta();function UR(e,t,r,a){var n=!r;r||(r={});for(var o=-1,s=t.length;++o<s;){var i=t[o],p=a?a(r[i],e[i],i,r,e):void 0;p===void 0&&(p=e[i]),n?qR(r,i,p):CR(r,i,p)}return r}hd.exports=UR});var Ad=u((wF,yd)=>{"use strict";function DR(e,t){for(var r=-1,a=Array(e);++r<e;)a[r]=t(r);return a}yd.exports=DR});var ua=u((vF,bd)=>{"use strict";var NR=9007199254740991,BR=/^(?:0|[1-9]\d*)$/;function MR(e,t){var r=typeof e;return t=t??NR,!!t&&(r=="number"||r!="symbol"&&BR.test(e))&&e>-1&&e%1==0&&e<t}bd.exports=MR});var Mo=u((TF,Id)=>{"use strict";var GR=Ad(),kR=Kr(),FR=ee(),QR=oa(),jR=ua(),WR=nn(),$R=Object.prototype,VR=$R.hasOwnProperty;function KR(e,t){var r=FR(e),a=!r&&kR(e),n=!r&&!a&&QR(e),o=!r&&!a&&!n&&WR(e),s=r||a||n||o,i=s?GR(e.length,String):[],p=i.length;for(var f in e)(t||VR.call(e,f))&&!(s&&(f=="length"||n&&(f=="offset"||f=="parent")||o&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||jR(f,p)))&&i.push(f);return i}Id.exports=KR});var wd=u((EF,Sd)=>{"use strict";function YR(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}Sd.exports=YR});var Td=u((RF,vd)=>{"use strict";var HR=ve(),zR=tn(),JR=wd(),XR=Object.prototype,ZR=XR.hasOwnProperty;function ex(e){if(!HR(e))return JR(e);var t=zR(e),r=[];for(var a in e)a=="constructor"&&(t||!ZR.call(e,a))||r.push(a);return r}vd.exports=ex});var nr=u((xF,Ed)=>{"use strict";var tx=Mo(),rx=Td(),ax=Jt();function nx(e){return ax(e)?tx(e,!0):rx(e)}Ed.exports=nx});var xd=u((_F,Rd)=>{"use strict";var ox=ar(),sx=nr();function ix(e){return ox(e,sx(e))}Rd.exports=ix});var qd=u((OF,Cd)=>{"use strict";var _d=xo(),ux=Oo(),px=Lo(),cx=er(),lx=qo(),Od=Kr(),Pd=ee(),dx=Ro(),fx=oa(),mx=Hr(),gx=ve(),hx=Uo(),yx=nn(),Ld=No(),Ax=xd();function bx(e,t,r,a,n,o,s){var i=Ld(e,r),p=Ld(t,r),f=s.get(p);if(f){_d(e,r,f);return}var m=o?o(i,p,r+"",e,t,s):void 0,g=m===void 0;if(g){var h=Pd(p),b=!h&&fx(p),E=!h&&!b&&yx(p);m=p,h||b||E?Pd(i)?m=i:dx(i)?m=cx(i):b?(g=!1,m=ux(p,!0)):E?(g=!1,m=px(p,!0)):m=[]:hx(p)||Od(p)?(m=i,Od(i)?m=Ax(i):(!gx(i)||mx(i))&&(m=lx(p))):g=!1}g&&(s.set(p,m),n(m,p,a,o,s),s.delete(p)),_d(e,r,m)}Cd.exports=bx});var Nd=u((PF,Dd)=>{"use strict";var Ix=ea(),Sx=xo(),wx=_o(),vx=qd(),Tx=ve(),Ex=nr(),Rx=No();function Ud(e,t,r,a,n){e!==t&&wx(t,function(o,s){if(n||(n=new Ix),Tx(o))vx(e,t,s,r,Ud,a,n);else{var i=a?a(Rx(e,s),o,s+"",e,t,n):void 0;i===void 0&&(i=o),Sx(e,s,i)}},Ex)}Dd.exports=Ud});var Md=u((LF,Bd)=>{"use strict";var xx=Yt(),_x=Jt(),Ox=ua(),Px=ve();function Lx(e,t,r){if(!Px(r))return!1;var a=typeof t;return(a=="number"?_x(r)&&Ox(t,r.length):a=="string"&&t in r)?xx(r[t],e):!1}Bd.exports=Lx});var kd=u((CF,Gd)=>{"use strict";var Cx=bo(),qx=Md();function Ux(e){return Cx(function(t,r){var a=-1,n=r.length,o=n>1?r[n-1]:void 0,s=n>2?r[2]:void 0;for(o=e.length>3&&typeof o=="function"?(n--,o):void 0,s&&qx(r[0],r[1],s)&&(o=n<3?void 0:o,n=1),t=Object(t);++a<n;){var i=r[a];i&&e(t,i,a,o)}return t})}Gd.exports=Ux});var Go=u((qF,Fd)=>{"use strict";var Dx=Nd(),Nx=kd(),Bx=Nx(function(e,t,r){Dx(e,t,r)});Fd.exports=Bx});var jf=u(le=>{"use strict";le.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"};le.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"],4:["fill","setWith","updateWith"]};le.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};le.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2};le.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};le.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]};le.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}};le.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}};le.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=le.aliasToReal,r={};for(var a in t){var n=t[a];e.call(r,n)?r[n].push(a):r[n]=[a]}return r}();le.remap={assignAll:"assign",assignAllWith:"assignWith",assignInAll:"assignIn",assignInAllWith:"assignInWith",curryN:"curry",curryRightN:"curryRight",defaultsAll:"defaults",defaultsDeepAll:"defaultsDeep",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",mergeAll:"merge",mergeAllWith:"mergeWith",padChars:"pad",padCharsEnd:"padEnd",padCharsStart:"padStart",propertyOf:"get",rangeStep:"range",rangeStepRight:"rangeRight",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart",zipAll:"zip"};le.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};le.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}});var Ds=u((tj,Wf)=>{"use strict";Wf.exports={}});var Yf=u((rj,Kf)=>{"use strict";var J=jf(),hO=Ds(),$f=Array.prototype.push;function yO(e,t){return t==2?function(r,a){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}function Ns(e,t){return t==2?function(r,a){return e(r,a)}:function(r){return e(r)}}function Vf(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}function AO(e){return function(t){return e({},t)}}function bO(e,t){return function(){for(var r=arguments.length,a=r-1,n=Array(r);r--;)n[r]=arguments[r];var o=n[t],s=n.slice(0,t);return o&&$f.apply(s,o),t!=a&&$f.apply(s,n.slice(t+1)),e.apply(this,s)}}function Bs(e,t){return function(){var r=arguments.length;if(r){for(var a=Array(r);r--;)a[r]=arguments[r];var n=a[0]=t.apply(void 0,a);return e.apply(void 0,a),n}}}function Ms(e,t,r,a){var n=typeof t=="function",o=t===Object(t);if(o&&(a=r,r=t,t=void 0),r==null)throw new TypeError;a||(a={});var s={cap:"cap"in a?a.cap:!0,curry:"curry"in a?a.curry:!0,fixed:"fixed"in a?a.fixed:!0,immutable:"immutable"in a?a.immutable:!0,rearg:"rearg"in a?a.rearg:!0},i=n?r:hO,p="curry"in a&&a.curry,f="fixed"in a&&a.fixed,m="rearg"in a&&a.rearg,g=n?r.runInContext():void 0,h=n?r:{ary:e.ary,assign:e.assign,clone:e.clone,curry:e.curry,forEach:e.forEach,isArray:e.isArray,isError:e.isError,isFunction:e.isFunction,isWeakMap:e.isWeakMap,iteratee:e.iteratee,keys:e.keys,rearg:e.rearg,toInteger:e.toInteger,toPath:e.toPath},b=h.ary,E=h.assign,L=h.clone,_=h.curry,R=h.forEach,B=h.isArray,st=h.isError,be=h.isFunction,it=h.isWeakMap,kt=h.keys,br=h.rearg,Ir=h.toInteger,Zb=h.toPath,gu=kt(J.aryMethod),eI={castArray:function(S){return function(){var y=arguments[0];return B(y)?S(Vf(y)):S.apply(void 0,arguments)}},iteratee:function(S){return function(){var y=arguments[0],I=arguments[1],T=S(y,I),O=T.length;return s.cap&&typeof I=="number"?(I=I>2?I-2:1,O&&O<=I?T:Ns(T,I)):T}},mixin:function(S){return function(y){var I=this;if(!be(I))return S(I,Object(y));var T=[];return R(kt(y),function(O){be(y[O])&&T.push([O,I.prototype[O]])}),S(I,Object(y)),R(T,function(O){var te=O[1];be(te)?I.prototype[O[0]]=te:delete I.prototype[O[0]]}),I}},nthArg:function(S){return function(y){var I=y<0?1:Ir(y)+1;return _(S(y),I)}},rearg:function(S){return function(y,I){var T=I?I.length:0;return _(S(y,I),T)}},runInContext:function(S){return function(y){return Ms(e,S(y),a)}}};function tI(S,y){if(s.cap){var I=J.iterateeRearg[S];if(I)return sI(y,I);var T=!n&&J.iterateeAry[S];if(T)return oI(y,T)}return y}function rI(S,y,I){return p||s.curry&&I>1?_(y,I):y}function hu(S,y,I){if(s.fixed&&(f||!J.skipFixed[S])){var T=J.methodSpread[S],O=T&&T.start;return O===void 0?b(y,I):bO(y,O)}return y}function yu(S,y,I){return s.rearg&&I>1&&(m||!J.skipRearg[S])?br(y,J.methodRearg[S]||J.aryRearg[I]):y}function aI(S,y){y=Zb(y);for(var I=-1,T=y.length,O=T-1,te=L(Object(S)),De=te;De!=null&&++I<T;){var Ie=y[I],Ne=De[Ie];Ne!=null&&!(be(Ne)||st(Ne)||it(Ne))&&(De[Ie]=L(I==O?Ne:Object(Ne))),De=De[Ie]}return te}function nI(S){return fe.runInContext.convert(S)(void 0)}function Au(S,y){var I=J.aliasToReal[S]||S,T=J.remap[I]||I,O=a;return function(te){var De=n?g:h,Ie=n?g[T]:y,Ne=E(E({},O),te);return Ms(De,I,Ie,Ne)}}function oI(S,y){return bu(S,function(I){return typeof I=="function"?Ns(I,y):I})}function sI(S,y){return bu(S,function(I){var T=y.length;return yO(br(Ns(I,T),y),T)})}function bu(S,y){return function(){var I=arguments.length;if(!I)return S();for(var T=Array(I);I--;)T[I]=arguments[I];var O=s.rearg?0:I-1;return T[O]=y(T[O]),S.apply(void 0,T)}}function Iu(S,y,I){var T,O=J.aliasToReal[S]||S,te=y,De=eI[O];return De?te=De(y):s.immutable&&(J.mutate.array[O]?te=Bs(y,Vf):J.mutate.object[O]?te=Bs(y,AO(y)):J.mutate.set[O]&&(te=Bs(y,aI))),R(gu,function(Ie){return R(J.aryMethod[Ie],function(Ne){if(O==Ne){var Su=J.methodSpread[O],iI=Su&&Su.afterRearg;return T=iI?hu(O,yu(O,te,Ie),Ie):yu(O,hu(O,te,Ie),Ie),T=tI(O,T),T=rI(O,T,Ie),!1}}),!T}),T||(T=te),T==y&&(T=p?_(T,1):function(){return y.apply(this,arguments)}),T.convert=Au(O,y),T.placeholder=y.placeholder=I,T}if(!o)return Iu(t,r,i);var fe=r,Sr=[];return R(gu,function(S){R(J.aryMethod[S],function(y){var I=fe[J.remap[y]||y];I&&Sr.push([y,Iu(y,I,fe)])})}),R(kt(fe),function(S){var y=fe[S];if(typeof y=="function"){for(var I=Sr.length;I--;)if(Sr[I][0]==S)return;y.convert=Au(S,y),Sr.push([S,y])}}),R(Sr,function(S){fe[S[0]]=S[1]}),fe.convert=nI,fe.placeholder=fe,R(kt(fe),function(S){R(J.realToAlias[S]||[],function(y){fe[y]=fe[S]})}),fe}Kf.exports=Ms});var Gs=u((aj,Hf)=>{"use strict";var IO=ft(),SO=ne(),wO=IO(SO,"WeakMap");Hf.exports=wO});var ks=u((nj,Jf)=>{"use strict";var zf=Gs(),vO=zf&&new zf;Jf.exports=vO});var Fs=u((oj,Zf)=>{"use strict";var TO=Yr(),Xf=ks(),EO=Xf?function(e,t){return Xf.set(e,t),e}:TO;Zf.exports=EO});var ba=u((sj,em)=>{"use strict";var RO=aa(),xO=ve();function _O(e){return function(){var t=arguments;switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3]);case 5:return new e(t[0],t[1],t[2],t[3],t[4]);case 6:return new e(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var r=RO(e.prototype),a=e.apply(r,t);return xO(a)?a:r}}em.exports=_O});var rm=u((ij,tm)=>{"use strict";var OO=ba(),PO=ne(),LO=1;function CO(e,t,r){var a=t&LO,n=OO(e);function o(){var s=this&&this!==PO&&this instanceof o?n:e;return s.apply(a?r:this,arguments)}return o}tm.exports=CO});var Qs=u((uj,am)=>{"use strict";var qO=Math.max;function UO(e,t,r,a){for(var n=-1,o=e.length,s=r.length,i=-1,p=t.length,f=qO(o-s,0),m=Array(p+f),g=!a;++i<p;)m[i]=t[i];for(;++n<s;)(g||n<o)&&(m[r[n]]=e[n]);for(;f--;)m[i++]=e[n++];return m}am.exports=UO});var Ws=u((pj,nm)=>{"use strict";var DO=Math.max;function NO(e,t,r,a){for(var n=-1,o=e.length,s=-1,i=r.length,p=-1,f=t.length,m=DO(o-i,0),g=Array(m+f),h=!a;++n<m;)g[n]=e[n];for(var b=n;++p<f;)g[b+p]=t[p];for(;++s<i;)(h||n<o)&&(g[b+r[s]]=e[n++]);return g}nm.exports=NO});var sm=u((cj,om)=>{"use strict";function BO(e,t){for(var r=e.length,a=0;r--;)e[r]===t&&++a;return a}om.exports=BO});var vn=u((lj,im)=>{"use strict";function MO(){}im.exports=MO});var En=u((dj,um)=>{"use strict";var GO=aa(),kO=vn(),FO=4294967295;function Tn(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=FO,this.__views__=[]}Tn.prototype=GO(kO.prototype);Tn.prototype.constructor=Tn;um.exports=Tn});var $s=u((fj,cm)=>{"use strict";var pm=ks(),QO=To(),jO=pm?function(e){return pm.get(e)}:QO;cm.exports=jO});var dm=u((mj,lm)=>{"use strict";var WO={};lm.exports=WO});var gm=u((gj,mm)=>{"use strict";var fm=dm(),$O=Object.prototype,VO=$O.hasOwnProperty;function KO(e){for(var t=e.name+"",r=fm[t],a=VO.call(fm,t)?r.length:0;a--;){var n=r[a],o=n.func;if(o==null||o==e)return n.name}return t}mm.exports=KO});var Vs=u((hj,hm)=>{"use strict";var YO=aa(),HO=vn();function Rn(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}Rn.prototype=YO(HO.prototype);Rn.prototype.constructor=Rn;hm.exports=Rn});var Am=u((yj,ym)=>{"use strict";var zO=En(),JO=Vs(),XO=er();function ZO(e){if(e instanceof zO)return e.clone();var t=new JO(e.__wrapped__,e.__chain__);return t.__actions__=XO(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}ym.exports=ZO});var Sm=u((Aj,Im)=>{"use strict";var eP=En(),bm=Vs(),tP=vn(),rP=ee(),aP=ge(),nP=Am(),oP=Object.prototype,sP=oP.hasOwnProperty;function xn(e){if(aP(e)&&!rP(e)&&!(e instanceof eP)){if(e instanceof bm)return e;if(sP.call(e,"__wrapped__"))return nP(e)}return new bm(e)}xn.prototype=tP.prototype;xn.prototype.constructor=xn;Im.exports=xn});var vm=u((bj,wm)=>{"use strict";var iP=En(),uP=$s(),pP=gm(),cP=Sm();function lP(e){var t=pP(e),r=cP[t];if(typeof r!="function"||!(t in iP.prototype))return!1;if(e===r)return!0;var a=uP(r);return!!a&&e===a[0]}wm.exports=lP});var Ks=u((Ij,Tm)=>{"use strict";var dP=Fs(),fP=Ao(),mP=fP(dP);Tm.exports=mP});var Rm=u((Sj,Em)=>{"use strict";var gP=/\{\n\/\* \[wrapped with (.+)\] \*/,hP=/,? & /;function yP(e){var t=e.match(gP);return t?t[1].split(hP):[]}Em.exports=yP});var _m=u((wj,xm)=>{"use strict";var AP=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function bP(e,t){var r=t.length;if(!r)return e;var a=r-1;return t[a]=(r>1?"& ":"")+t[a],t=t.join(r>2?", ":" "),e.replace(AP,`{
|
|
2
2
|
/* [wrapped with `+t+`] */
|
|
3
|
-
`)}Qg.exports=ZP});var Rs=c((eV,Wg)=>{"use strict";function zP(e,t){for(var r=-1,n=e==null?0:e.length;++r<n&&t(e[r],r,e)!==!1;);return e}Wg.exports=zP});var Kg=c((tV,Vg)=>{"use strict";var JP=Rs(),XP=Po(),eL=1,tL=2,rL=8,nL=16,aL=32,sL=64,oL=128,iL=256,uL=512,cL=[["ary",oL],["bind",eL],["bindKey",tL],["curry",rL],["curryRight",nL],["flip",uL],["partial",aL],["partialRight",sL],["rearg",iL]];function pL(e,t){return JP(cL,function(r){var n="_."+r[0];t&r[1]&&!XP(e,n)&&e.push(n)}),e.sort()}Vg.exports=pL});var au=c((rV,Yg)=>{"use strict";var lL=jg(),dL=$g(),fL=Ha(),mL=Kg();function gL(e,t,r){var n=t+"";return fL(e,dL(n,mL(lL(n),r)))}Yg.exports=gL});var su=c((nV,zg)=>{"use strict";var hL=Mg(),yL=nu(),bL=au(),AL=1,vL=2,_L=4,IL=8,Hg=32,Zg=64;function wL(e,t,r,n,a,s,o,i,u,d){var f=t&IL,g=f?o:void 0,A=f?void 0:o,I=f?s:void 0,q=f?void 0:s;t|=f?Hg:Zg,t&=~(f?Zg:Hg),t&_L||(t&=~(AL|vL));var G=[e,t,a,I,g,q,A,i,u,d],k=r.apply(void 0,G);return hL(e)&&yL(k,G),k.placeholder=n,bL(k,e,t)}zg.exports=wL});var ou=c((aV,Jg)=>{"use strict";function SL(e){var t=e;return t.placeholder}Jg.exports=SL});var eh=c((sV,Xg)=>{"use strict";var xL=Fr(),TL=sa(),EL=Math.min;function RL(e,t){for(var r=e.length,n=EL(t.length,r),a=xL(e);n--;){var s=t[n];e[n]=TL(s,r)?a[s]:void 0}return e}Xg.exports=RL});var Os=c((oV,rh)=>{"use strict";var th="__lodash_placeholder__";function OL(e,t){for(var r=-1,n=e.length,a=0,s=[];++r<n;){var o=e[r];(o===t||o===th)&&(e[r]=th,s[a++]=r)}return s}rh.exports=OL});var iu=c((iV,sh)=>{"use strict";var CL=Xi(),PL=eu(),LL=Ig(),nh=ha(),qL=su(),NL=ou(),UL=eh(),kL=Os(),DL=fe(),BL=1,ML=2,GL=8,FL=16,jL=128,QL=512;function ah(e,t,r,n,a,s,o,i,u,d){var f=t&jL,g=t&BL,A=t&ML,I=t&(GL|FL),q=t&QL,G=A?void 0:nh(e);function k(){for(var N=arguments.length,V=Array(N),Tt=N;Tt--;)V[Tt]=arguments[Tt];if(I)var Le=NL(k),Et=LL(V,Le);if(n&&(V=CL(V,n,a,I)),s&&(V=PL(V,s,o,I)),N-=Et,I&&N<d){var Er=kL(V,Le);return qL(e,t,ah,k.placeholder,r,V,Er,i,u,d-N)}var hn=g?r:this,yn=A?hn[e]:e;return N=V.length,i?V=UL(V,i):q&&N>1&&V.reverse(),f&&u<N&&(V.length=u),this&&this!==DL&&this instanceof k&&(yn=G||nh(yn)),yn.apply(hn,V)}return k}sh.exports=ah});var ih=c((uV,oh)=>{"use strict";var $L=Ya(),WL=ha(),VL=iu(),KL=su(),YL=ou(),HL=Os(),ZL=fe();function zL(e,t,r){var n=WL(e);function a(){for(var s=arguments.length,o=Array(s),i=s,u=YL(a);i--;)o[i]=arguments[i];var d=s<3&&o[0]!==u&&o[s-1]!==u?[]:HL(o,u);if(s-=d.length,s<r)return KL(e,t,VL,a.placeholder,void 0,o,d,void 0,void 0,r-s);var f=this&&this!==ZL&&this instanceof a?n:e;return $L(f,this,o)}return a}oh.exports=zL});var ch=c((cV,uh)=>{"use strict";var JL=Ya(),XL=ha(),eq=fe(),tq=1;function rq(e,t,r,n){var a=t&tq,s=XL(e);function o(){for(var i=-1,u=arguments.length,d=-1,f=n.length,g=Array(f+u),A=this&&this!==eq&&this instanceof o?s:e;++d<f;)g[d]=n[d];for(;u--;)g[d++]=arguments[++i];return JL(A,a?r:this,g)}return o}uh.exports=rq});var gh=c((pV,mh)=>{"use strict";var nq=Xi(),aq=eu(),ph=Os(),lh="__lodash_placeholder__",uu=1,sq=2,oq=4,dh=8,ya=128,fh=256,iq=Math.min;function uq(e,t){var r=e[1],n=t[1],a=r|n,s=a<(uu|sq|ya),o=n==ya&&r==dh||n==ya&&r==fh&&e[7].length<=t[8]||n==(ya|fh)&&t[7].length<=t[8]&&r==dh;if(!(s||o))return e;n&uu&&(e[2]=t[2],a|=r&uu?0:oq);var i=t[3];if(i){var u=e[3];e[3]=u?nq(u,i,t[4]):i,e[4]=u?ph(e[3],lh):t[4]}return i=t[5],i&&(u=e[5],e[5]=u?aq(u,i,t[6]):i,e[6]=u?ph(e[5],lh):t[6]),i=t[7],i&&(e[7]=i),n&ya&&(e[8]=e[8]==null?t[8]:iq(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=a,e}mh.exports=uq});var yh=c((lV,hh)=>{"use strict";var cq=/\s/;function pq(e){for(var t=e.length;t--&&cq.test(e.charAt(t)););return t}hh.exports=pq});var Ah=c((dV,bh)=>{"use strict";var lq=yh(),dq=/^\s+/;function fq(e){return e&&e.slice(0,lq(e)+1).replace(dq,"")}bh.exports=fq});var Xr=c((fV,vh)=>{"use strict";var mq=Lt(),gq=Te(),hq="[object Symbol]";function yq(e){return typeof e=="symbol"||gq(e)&&mq(e)==hq}vh.exports=yq});var Sh=c((mV,wh)=>{"use strict";var bq=Ah(),_h=ke(),Aq=Xr(),Ih=0/0,vq=/^[-+]0x[0-9a-f]+$/i,_q=/^0b[01]+$/i,Iq=/^0o[0-7]+$/i,wq=parseInt;function Sq(e){if(typeof e=="number")return e;if(Aq(e))return Ih;if(_h(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=_h(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=bq(e);var r=_q.test(e);return r||Iq.test(e)?wq(e.slice(2),r?2:8):vq.test(e)?Ih:+e}wh.exports=Sq});var Eh=c((gV,Th)=>{"use strict";var xq=Sh(),xh=1/0,Tq=17976931348623157e292;function Eq(e){if(!e)return e===0?e:0;if(e=xq(e),e===xh||e===-xh){var t=e<0?-1:1;return t*Tq}return e===e?e:0}Th.exports=Eq});var cu=c((hV,Rh)=>{"use strict";var Rq=Eh();function Oq(e){var t=Rq(e),r=t%1;return t===t?r?t-r:t:0}Rh.exports=Oq});var Cs=c((yV,qh)=>{"use strict";var Cq=Ji(),Pq=bg(),Lq=ih(),qq=iu(),Nq=ch(),Uq=tu(),kq=gh(),Dq=nu(),Bq=au(),Oh=cu(),Mq="Expected a function",Ch=1,Gq=2,pu=8,lu=16,du=32,Ph=64,Lh=Math.max;function Fq(e,t,r,n,a,s,o,i){var u=t&Gq;if(!u&&typeof e!="function")throw new TypeError(Mq);var d=n?n.length:0;if(d||(t&=~(du|Ph),n=a=void 0),o=o===void 0?o:Lh(Oh(o),0),i=i===void 0?i:Oh(i),d-=a?a.length:0,t&Ph){var f=n,g=a;n=a=void 0}var A=u?void 0:Uq(e),I=[e,t,r,n,a,f,g,s,o,i];if(A&&kq(I,A),e=I[0],t=I[1],r=I[2],n=I[3],a=I[4],i=I[9]=I[9]===void 0?u?0:e.length:Lh(I[9]-d,0),!i&&t&(pu|lu)&&(t&=~(pu|lu)),!t||t==Ch)var q=Pq(e,t,r);else t==pu||t==lu?q=Lq(e,t,i):(t==du||t==(Ch|du))&&!a.length?q=Nq(e,t,r,n):q=qq.apply(void 0,I);var G=A?Cq:Dq;return Bq(G(q,I),e,t)}qh.exports=Fq});var Uh=c((bV,Nh)=>{"use strict";var jq=Cs(),Qq=128;function $q(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,jq(e,Qq,void 0,void 0,void 0,void 0,t)}Nh.exports=$q});var Dh=c((AV,kh)=>{"use strict";var Wq=jo(),Vq=Wq(Object.keys,Object);kh.exports=Vq});var fu=c((vV,Bh)=>{"use strict";var Kq=ns(),Yq=Dh(),Hq=Object.prototype,Zq=Hq.hasOwnProperty;function zq(e){if(!Kq(e))return Yq(e);var t=[];for(var r in Object(e))Zq.call(e,r)&&r!="constructor"&&t.push(r);return t}Bh.exports=zq});var en=c((_V,Mh)=>{"use strict";var Jq=Yo(),Xq=fu(),eN=Br();function tN(e){return eN(e)?Jq(e):Xq(e)}Mh.exports=tN});var mu=c((IV,Gh)=>{"use strict";var rN=$r(),nN=en();function aN(e,t){return e&&rN(t,nN(t),e)}Gh.exports=aN});var jh=c((wV,Fh)=>{"use strict";var sN=$r(),oN=Wr();function iN(e,t){return e&&sN(t,oN(t),e)}Fh.exports=iN});var $h=c((SV,Qh)=>{"use strict";function uN(e,t){for(var r=-1,n=e==null?0:e.length,a=0,s=[];++r<n;){var o=e[r];t(o,r,e)&&(s[a++]=o)}return s}Qh.exports=uN});var gu=c((xV,Wh)=>{"use strict";function cN(){return[]}Wh.exports=cN});var Ps=c((TV,Kh)=>{"use strict";var pN=$h(),lN=gu(),dN=Object.prototype,fN=dN.propertyIsEnumerable,Vh=Object.getOwnPropertySymbols,mN=Vh?function(e){return e==null?[]:(e=Object(e),pN(Vh(e),function(t){return fN.call(e,t)}))}:lN;Kh.exports=mN});var Hh=c((EV,Yh)=>{"use strict";var gN=$r(),hN=Ps();function yN(e,t){return gN(e,hN(e),t)}Yh.exports=yN});var hu=c((RV,Zh)=>{"use strict";var bN=Ka(),AN=rs(),vN=Ps(),_N=gu(),IN=Object.getOwnPropertySymbols,wN=IN?function(e){for(var t=[];e;)bN(t,vN(e)),e=AN(e);return t}:_N;Zh.exports=wN});var Jh=c((OV,zh)=>{"use strict";var SN=$r(),xN=hu();function TN(e,t){return SN(e,xN(e),t)}zh.exports=TN});var yu=c((CV,Xh)=>{"use strict";var EN=Ka(),RN=ue();function ON(e,t,r){var n=t(e);return RN(e)?n:EN(n,r(e))}Xh.exports=ON});var bu=c((PV,ey)=>{"use strict";var CN=yu(),PN=Ps(),LN=en();function qN(e){return CN(e,LN,PN)}ey.exports=qN});var ry=c((LV,ty)=>{"use strict";var NN=yu(),UN=hu(),kN=Wr();function DN(e){return NN(e,kN,UN)}ty.exports=DN});var ay=c((qV,ny)=>{"use strict";var BN=qt(),MN=fe(),GN=BN(MN,"DataView");ny.exports=GN});var oy=c((NV,sy)=>{"use strict";var FN=qt(),jN=fe(),QN=FN(jN,"Promise");sy.exports=QN});var rn=c((UV,fy)=>{"use strict";var Au=ay(),vu=Za(),_u=oy(),Iu=qo(),wu=Zi(),dy=Lt(),tn=To(),iy="[object Map]",$N="[object Object]",uy="[object Promise]",cy="[object Set]",py="[object WeakMap]",ly="[object DataView]",WN=tn(Au),VN=tn(vu),KN=tn(_u),YN=tn(Iu),HN=tn(wu),or=dy;(Au&&or(new Au(new ArrayBuffer(1)))!=ly||vu&&or(new vu)!=iy||_u&&or(_u.resolve())!=uy||Iu&&or(new Iu)!=cy||wu&&or(new wu)!=py)&&(or=function(e){var t=dy(e),r=t==$N?e.constructor:void 0,n=r?tn(r):"";if(n)switch(n){case WN:return ly;case VN:return iy;case KN:return uy;case YN:return cy;case HN:return py}return t});fy.exports=or});var gy=c((kV,my)=>{"use strict";var ZN=Object.prototype,zN=ZN.hasOwnProperty;function JN(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&zN.call(e,"index")&&(r.index=e.index,r.input=e.input),r}my.exports=JN});var yy=c((DV,hy)=>{"use strict";var XN=ts();function eU(e,t){var r=t?XN(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}hy.exports=eU});var Ay=c((BV,by)=>{"use strict";var tU=/\w*$/;function rU(e){var t=new e.constructor(e.source,tU.exec(e));return t.lastIndex=e.lastIndex,t}by.exports=rU});var Sy=c((MV,wy)=>{"use strict";var vy=zt(),_y=vy?vy.prototype:void 0,Iy=_y?_y.valueOf:void 0;function nU(e){return Iy?Object(Iy.call(e)):{}}wy.exports=nU});var Ty=c((GV,xy)=>{"use strict";var aU=ts(),sU=yy(),oU=Ay(),iU=Sy(),uU=Fo(),cU="[object Boolean]",pU="[object Date]",lU="[object Map]",dU="[object Number]",fU="[object RegExp]",mU="[object Set]",gU="[object String]",hU="[object Symbol]",yU="[object ArrayBuffer]",bU="[object DataView]",AU="[object Float32Array]",vU="[object Float64Array]",_U="[object Int8Array]",IU="[object Int16Array]",wU="[object Int32Array]",SU="[object Uint8Array]",xU="[object Uint8ClampedArray]",TU="[object Uint16Array]",EU="[object Uint32Array]";function RU(e,t,r){var n=e.constructor;switch(t){case yU:return aU(e);case cU:case pU:return new n(+e);case bU:return sU(e,r);case AU:case vU:case _U:case IU:case wU:case SU:case xU:case TU:case EU:return uU(e,r);case lU:return new n;case dU:case gU:return new n(e);case fU:return oU(e);case mU:return new n;case hU:return iU(e)}}xy.exports=RU});var Ry=c((FV,Ey)=>{"use strict";var OU=rn(),CU=Te(),PU="[object Map]";function LU(e){return CU(e)&&OU(e)==PU}Ey.exports=LU});var Ly=c((jV,Py)=>{"use strict";var qU=Ry(),NU=as(),Oy=ss(),Cy=Oy&&Oy.isMap,UU=Cy?NU(Cy):qU;Py.exports=UU});var Ny=c((QV,qy)=>{"use strict";var kU=rn(),DU=Te(),BU="[object Set]";function MU(e){return DU(e)&&kU(e)==BU}qy.exports=MU});var By=c(($V,Dy)=>{"use strict";var GU=Ny(),FU=as(),Uy=ss(),ky=Uy&&Uy.isSet,jU=ky?FU(ky):GU;Dy.exports=jU});var Su=c((WV,jy)=>{"use strict";var QU=zn(),$U=Rs(),WU=Ko(),VU=mu(),KU=jh(),YU=Mo(),HU=Fr(),ZU=Hh(),zU=Jh(),JU=bu(),XU=ry(),ek=rn(),tk=gy(),rk=Ty(),nk=Qo(),ak=ue(),sk=ra(),ok=Ly(),ik=ke(),uk=By(),ck=en(),pk=Wr(),lk=1,dk=2,fk=4,My="[object Arguments]",mk="[object Array]",gk="[object Boolean]",hk="[object Date]",yk="[object Error]",Gy="[object Function]",bk="[object GeneratorFunction]",Ak="[object Map]",vk="[object Number]",Fy="[object Object]",_k="[object RegExp]",Ik="[object Set]",wk="[object String]",Sk="[object Symbol]",xk="[object WeakMap]",Tk="[object ArrayBuffer]",Ek="[object DataView]",Rk="[object Float32Array]",Ok="[object Float64Array]",Ck="[object Int8Array]",Pk="[object Int16Array]",Lk="[object Int32Array]",qk="[object Uint8Array]",Nk="[object Uint8ClampedArray]",Uk="[object Uint16Array]",kk="[object Uint32Array]",Q={};Q[My]=Q[mk]=Q[Tk]=Q[Ek]=Q[gk]=Q[hk]=Q[Rk]=Q[Ok]=Q[Ck]=Q[Pk]=Q[Lk]=Q[Ak]=Q[vk]=Q[Fy]=Q[_k]=Q[Ik]=Q[wk]=Q[Sk]=Q[qk]=Q[Nk]=Q[Uk]=Q[kk]=!0;Q[yk]=Q[Gy]=Q[xk]=!1;function Ls(e,t,r,n,a,s){var o,i=t&lk,u=t&dk,d=t&fk;if(r&&(o=a?r(e,n,a,s):r(e)),o!==void 0)return o;if(!ik(e))return e;var f=ak(e);if(f){if(o=tk(e),!i)return HU(e,o)}else{var g=ek(e),A=g==Gy||g==bk;if(sk(e))return YU(e,i);if(g==Fy||g==My||A&&!a){if(o=u||A?{}:nk(e),!i)return u?zU(e,KU(o,e)):ZU(e,VU(o,e))}else{if(!Q[g])return a?e:{};o=rk(e,g,i)}}s||(s=new QU);var I=s.get(e);if(I)return I;s.set(e,o),uk(e)?e.forEach(function(k){o.add(Ls(k,t,r,k,e,s))}):ok(e)&&e.forEach(function(k,N){o.set(N,Ls(k,t,r,N,e,s))});var q=d?u?XU:JU:u?pk:ck,G=f?void 0:q(e);return $U(G||e,function(k,N){G&&(N=k,k=e[N]),WU(o,N,Ls(k,t,r,N,e,s))}),o}jy.exports=Ls});var $y=c((VV,Qy)=>{"use strict";var Dk=Su(),Bk=4;function Mk(e){return Dk(e,Bk)}Qy.exports=Mk});var Vy=c((KV,Wy)=>{"use strict";var Gk=Cs(),Fk=8;function xu(e,t,r){t=r?void 0:t;var n=Gk(e,Fk,void 0,void 0,void 0,void 0,void 0,t);return n.placeholder=xu.placeholder,n}xu.placeholder={};Wy.exports=xu});var Yy=c((YV,Ky)=>{"use strict";var jk=Lt(),Qk=Te(),$k=$o(),Wk="[object DOMException]",Vk="[object Error]";function Kk(e){if(!Qk(e))return!1;var t=jk(e);return t==Vk||t==Wk||typeof e.message=="string"&&typeof e.name=="string"&&!$k(e)}Ky.exports=Kk});var Zy=c((HV,Hy)=>{"use strict";var Yk=rn(),Hk=Te(),Zk="[object WeakMap]";function zk(e){return Hk(e)&&Yk(e)==Zk}Hy.exports=zk});var Jy=c((ZV,zy)=>{"use strict";function Jk(e,t){for(var r=-1,n=e==null?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}zy.exports=Jk});var Tu=c((zV,Xy)=>{"use strict";var Xk=Co(),eD=Jy(),tD=Lo(),rD=1,nD=2;function aD(e,t,r,n,a,s){var o=r&rD,i=e.length,u=t.length;if(i!=u&&!(o&&u>i))return!1;var d=s.get(e),f=s.get(t);if(d&&f)return d==t&&f==e;var g=-1,A=!0,I=r&nD?new Xk:void 0;for(s.set(e,t),s.set(t,e);++g<i;){var q=e[g],G=t[g];if(n)var k=o?n(G,q,g,t,e,s):n(q,G,g,e,t,s);if(k!==void 0){if(k)continue;A=!1;break}if(I){if(!eD(t,function(N,V){if(!tD(I,V)&&(q===N||a(q,N,r,n,s)))return I.push(V)})){A=!1;break}}else if(!(q===G||a(q,G,r,n,s))){A=!1;break}}return s.delete(e),s.delete(t),A}Xy.exports=aD});var tb=c((JV,eb)=>{"use strict";function sD(e){var t=-1,r=Array(e.size);return e.forEach(function(n,a){r[++t]=[a,n]}),r}eb.exports=sD});var ob=c((XV,sb)=>{"use strict";var rb=zt(),nb=Go(),oD=Ur(),iD=Tu(),uD=tb(),cD=Xa(),pD=1,lD=2,dD="[object Boolean]",fD="[object Date]",mD="[object Error]",gD="[object Map]",hD="[object Number]",yD="[object RegExp]",bD="[object Set]",AD="[object String]",vD="[object Symbol]",_D="[object ArrayBuffer]",ID="[object DataView]",ab=rb?rb.prototype:void 0,Eu=ab?ab.valueOf:void 0;function wD(e,t,r,n,a,s,o){switch(r){case ID:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case _D:return!(e.byteLength!=t.byteLength||!s(new nb(e),new nb(t)));case dD:case fD:case hD:return oD(+e,+t);case mD:return e.name==t.name&&e.message==t.message;case yD:case AD:return e==t+"";case gD:var i=uD;case bD:var u=n&pD;if(i||(i=cD),e.size!=t.size&&!u)return!1;var d=o.get(e);if(d)return d==t;n|=lD,o.set(e,t);var f=iD(i(e),i(t),n,a,s,o);return o.delete(e),f;case vD:if(Eu)return Eu.call(e)==Eu.call(t)}return!1}sb.exports=wD});var cb=c((e2,ub)=>{"use strict";var ib=bu(),SD=1,xD=Object.prototype,TD=xD.hasOwnProperty;function ED(e,t,r,n,a,s){var o=r&SD,i=ib(e),u=i.length,d=ib(t),f=d.length;if(u!=f&&!o)return!1;for(var g=u;g--;){var A=i[g];if(!(o?A in t:TD.call(t,A)))return!1}var I=s.get(e),q=s.get(t);if(I&&q)return I==t&&q==e;var G=!0;s.set(e,t),s.set(t,e);for(var k=o;++g<u;){A=i[g];var N=e[A],V=t[A];if(n)var Tt=o?n(V,N,A,t,e,s):n(N,V,A,e,t,s);if(!(Tt===void 0?N===V||a(N,V,r,n,s):Tt)){G=!1;break}k||(k=A=="constructor")}if(G&&!k){var Le=e.constructor,Et=t.constructor;Le!=Et&&"constructor"in e&&"constructor"in t&&!(typeof Le=="function"&&Le instanceof Le&&typeof Et=="function"&&Et instanceof Et)&&(G=!1)}return s.delete(e),s.delete(t),G}ub.exports=ED});var bb=c((t2,yb)=>{"use strict";var Ru=zn(),RD=Tu(),OD=ob(),CD=cb(),pb=rn(),lb=ue(),fb=ra(),PD=os(),LD=1,mb="[object Arguments]",gb="[object Array]",qs="[object Object]",qD=Object.prototype,hb=qD.hasOwnProperty;function ND(e,t,r,n,a,s){var o=lb(e),i=lb(t),u=o?gb:pb(e),d=i?gb:pb(t);u=u==mb?qs:u,d=d==mb?qs:d;var f=u==qs,g=d==qs,A=u==d;if(A&&fb(e)){if(!fb(t))return!1;o=!0,f=!1}if(A&&!f)return s||(s=new Ru),o||PD(e)?RD(e,t,r,n,a,s):OD(e,t,u,r,n,a,s);if(!(r&LD)){var I=f&&hb.call(e,"__wrapped__"),q=g&&hb.call(t,"__wrapped__");if(I||q){var G=I?e.value():e,k=q?t.value():t;return s||(s=new Ru),a(G,k,r,n,s)}}return A?(s||(s=new Ru),CD(e,t,r,n,a,s)):!1}yb.exports=ND});var Ou=c((r2,_b)=>{"use strict";var UD=bb(),Ab=Te();function vb(e,t,r,n,a){return e===t?!0:e==null||t==null||!Ab(e)&&!Ab(t)?e!==e&&t!==t:UD(e,t,r,n,vb,a)}_b.exports=vb});var wb=c((n2,Ib)=>{"use strict";var kD=zn(),DD=Ou(),BD=1,MD=2;function GD(e,t,r,n){var a=r.length,s=a,o=!n;if(e==null)return!s;for(e=Object(e);a--;){var i=r[a];if(o&&i[2]?i[1]!==e[i[0]]:!(i[0]in e))return!1}for(;++a<s;){i=r[a];var u=i[0],d=e[u],f=i[1];if(o&&i[2]){if(d===void 0&&!(u in e))return!1}else{var g=new kD;if(n)var A=n(d,f,u,e,t,g);if(!(A===void 0?DD(f,d,BD|MD,n,g):A))return!1}}return!0}Ib.exports=GD});var Cu=c((a2,Sb)=>{"use strict";var FD=ke();function jD(e){return e===e&&!FD(e)}Sb.exports=jD});var Tb=c((s2,xb)=>{"use strict";var QD=Cu(),$D=en();function WD(e){for(var t=$D(e),r=t.length;r--;){var n=t[r],a=e[n];t[r]=[n,a,QD(a)]}return t}xb.exports=WD});var Pu=c((o2,Eb)=>{"use strict";function VD(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}Eb.exports=VD});var Ob=c((i2,Rb)=>{"use strict";var KD=wb(),YD=Tb(),HD=Pu();function ZD(e){var t=YD(e);return t.length==1&&t[0][2]?HD(t[0][0],t[0][1]):function(r){return r===e||KD(r,e,t)}}Rb.exports=ZD});var Ns=c((u2,Cb)=>{"use strict";var zD=ue(),JD=Xr(),XD=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,eB=/^\w*$/;function tB(e,t){if(zD(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||JD(e)?!0:eB.test(e)||!XD.test(e)||t!=null&&e in Object(t)}Cb.exports=tB});var qb=c((c2,Lb)=>{"use strict";var Pb=za(),rB="Expected a function";function Lu(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(rB);var r=function(){var n=arguments,a=t?t.apply(this,n):n[0],s=r.cache;if(s.has(a))return s.get(a);var o=e.apply(this,n);return r.cache=s.set(a,o)||s,o};return r.cache=new(Lu.Cache||Pb),r}Lu.Cache=Pb;Lb.exports=Lu});var Ub=c((p2,Nb)=>{"use strict";var nB=qb(),aB=500;function sB(e){var t=nB(e,function(n){return r.size===aB&&r.clear(),n}),r=t.cache;return t}Nb.exports=sB});var qu=c((l2,kb)=>{"use strict";var oB=Ub(),iB=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,uB=/\\(\\)?/g,cB=oB(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(iB,function(r,n,a,s){t.push(a?s.replace(uB,"$1"):n||r)}),t});kb.exports=cB});var Nu=c((d2,Db)=>{"use strict";function pB(e,t){for(var r=-1,n=e==null?0:e.length,a=Array(n);++r<n;)a[r]=t(e[r],r,e);return a}Db.exports=pB});var Qb=c((f2,jb)=>{"use strict";var Bb=zt(),lB=Nu(),dB=ue(),fB=Xr(),mB=1/0,Mb=Bb?Bb.prototype:void 0,Gb=Mb?Mb.toString:void 0;function Fb(e){if(typeof e=="string")return e;if(dB(e))return lB(e,Fb)+"";if(fB(e))return Gb?Gb.call(e):"";var t=e+"";return t=="0"&&1/e==-mB?"-0":t}jb.exports=Fb});var Uu=c((m2,$b)=>{"use strict";var gB=Qb();function hB(e){return e==null?"":gB(e)}$b.exports=hB});var ku=c((g2,Wb)=>{"use strict";var yB=ue(),bB=Ns(),AB=qu(),vB=Uu();function _B(e,t){return yB(e)?e:bB(e,t)?[e]:AB(vB(e))}Wb.exports=_B});var nn=c((h2,Vb)=>{"use strict";var IB=Xr(),wB=1/0;function SB(e){if(typeof e=="string"||IB(e))return e;var t=e+"";return t=="0"&&1/e==-wB?"-0":t}Vb.exports=SB});var Du=c((y2,Kb)=>{"use strict";var xB=ku(),TB=nn();function EB(e,t){t=xB(t,e);for(var r=0,n=t.length;e!=null&&r<n;)e=e[TB(t[r++])];return r&&r==n?e:void 0}Kb.exports=EB});var Hb=c((b2,Yb)=>{"use strict";var RB=Du();function OB(e,t,r){var n=e==null?void 0:RB(e,t);return n===void 0?r:n}Yb.exports=OB});var zb=c((A2,Zb)=>{"use strict";function CB(e,t){return e!=null&&t in Object(e)}Zb.exports=CB});var Xb=c((v2,Jb)=>{"use strict";var PB=ku(),LB=$n(),qB=ue(),NB=sa(),UB=es(),kB=nn();function DB(e,t,r){t=PB(t,e);for(var n=-1,a=t.length,s=!1;++n<a;){var o=kB(t[n]);if(!(s=e!=null&&r(e,o)))break;e=e[o]}return s||++n!=a?s:(a=e==null?0:e.length,!!a&&UB(a)&&NB(o,a)&&(qB(e)||LB(e)))}Jb.exports=DB});var tA=c((_2,eA)=>{"use strict";var BB=zb(),MB=Xb();function GB(e,t){return e!=null&&MB(e,t,BB)}eA.exports=GB});var nA=c((I2,rA)=>{"use strict";var FB=Ou(),jB=Hb(),QB=tA(),$B=Ns(),WB=Cu(),VB=Pu(),KB=nn(),YB=1,HB=2;function ZB(e,t){return $B(e)&&WB(t)?VB(KB(e),t):function(r){var n=jB(r,e);return n===void 0&&n===t?QB(r,e):FB(t,n,YB|HB)}}rA.exports=ZB});var sA=c((w2,aA)=>{"use strict";function zB(e){return function(t){return t?.[e]}}aA.exports=zB});var iA=c((S2,oA)=>{"use strict";var JB=Du();function XB(e){return function(t){return JB(t,e)}}oA.exports=XB});var cA=c((x2,uA)=>{"use strict";var e0=sA(),t0=iA(),r0=Ns(),n0=nn();function a0(e){return r0(e)?e0(n0(e)):t0(e)}uA.exports=a0});var Bu=c((T2,pA)=>{"use strict";var s0=Ob(),o0=nA(),i0=Wn(),u0=ue(),c0=cA();function p0(e){return typeof e=="function"?e:e==null?i0:typeof e=="object"?u0(e)?o0(e[0],e[1]):s0(e):c0(e)}pA.exports=p0});var dA=c((E2,lA)=>{"use strict";var l0=Su(),d0=Bu(),f0=1;function m0(e){return d0(typeof e=="function"?e:l0(e,f0))}lA.exports=m0});var mA=c((R2,fA)=>{"use strict";var g0=wo();function h0(e){var t=e==null?0:e.length;return t?g0(e,1):[]}fA.exports=h0});var hA=c((O2,gA)=>{"use strict";var y0=mA(),b0=So(),A0=Ha();function v0(e){return A0(b0(e,void 0,y0),e+"")}gA.exports=v0});var bA=c((C2,yA)=>{"use strict";var _0=Cs(),I0=hA(),w0=256,S0=I0(function(e,t){return _0(e,w0,void 0,void 0,void 0,t)});yA.exports=S0});var vA=c((P2,AA)=>{"use strict";var x0=Nu(),T0=Fr(),E0=ue(),R0=Xr(),O0=qu(),C0=nn(),P0=Uu();function L0(e){return E0(e)?x0(e,C0):R0(e)?[e]:T0(O0(P0(e)))}AA.exports=L0});var IA=c((L2,_A)=>{"use strict";_A.exports={ary:Uh(),assign:mu(),clone:$y(),curry:Vy(),forEach:Rs(),isArray:ue(),isError:Yy(),isFunction:Vn(),isWeakMap:Zy(),iteratee:dA(),keys:fu(),rearg:bA(),toInteger:cu(),toPath:vA()}});var SA=c((q2,wA)=>{"use strict";var q0=pg(),N0=IA();function U0(e,t,r){return q0(N0,e,t,r)}wA.exports=U0});var Mu=c((N2,TA)=>{"use strict";var k0=SA(),xA=k0("merge",Ho());xA.placeholder=Vi();TA.exports=xA});var Xv=c((FY,Jv)=>{"use strict";function mG(e,t,r,n){for(var a=-1,s=e==null?0:e.length;++a<s;){var o=e[a];t(n,o,r(o),e)}return n}Jv.exports=mG});var t_=c((jY,e_)=>{"use strict";var gG=Bo(),hG=en();function yG(e,t){return e&&gG(e,t,hG)}e_.exports=yG});var n_=c((QY,r_)=>{"use strict";var bG=Br();function AG(e,t){return function(r,n){if(r==null)return r;if(!bG(r))return e(r,n);for(var a=r.length,s=t?a:-1,o=Object(r);(t?s--:++s<a)&&n(o[s],s,o)!==!1;);return r}}r_.exports=AG});var s_=c(($Y,a_)=>{"use strict";var vG=t_(),_G=n_(),IG=_G(vG);a_.exports=IG});var i_=c((WY,o_)=>{"use strict";var wG=s_();function SG(e,t,r,n){return wG(e,function(a,s,o){t(n,a,r(a),o)}),n}o_.exports=SG});var c_=c((VY,u_)=>{"use strict";var xG=Xv(),TG=i_(),EG=Bu(),RG=ue();function OG(e,t){return function(r,n){var a=RG(r)?xG:TG,s=t?t():{};return a(r,e,EG(n,2),s)}}u_.exports=OG});var l_=c((KY,p_)=>{"use strict";var CG=Jn(),PG=c_(),LG=Object.prototype,qG=LG.hasOwnProperty,NG=PG(function(e,t,r){qG.call(e,r)?e[r].push(t):CG(e,r,[t])});p_.exports=NG});var VG={};T(VG,{Method:()=>to,ai:()=>yc,api:()=>Rc,auditLogs:()=>kt,automations:()=>ys,backups:()=>De,branding:()=>ls,constants:()=>Bn,environmentVariables:()=>ut,features:()=>We,groups:()=>Z,init:()=>ag,licensing:()=>nt,logger:()=>ir,mappers:()=>te,middleware:()=>Wu,plugins:()=>bs,publicApi:()=>_s,quotas:()=>ot,scimGroups:()=>an,scimUsers:()=>Ie,sdk:()=>Fu,users:()=>bt,utils:()=>qr});module.exports=$_(VG);var to=(s=>(s.POST="POST",s.GET="GET",s.PATCH="PATCH",s.DELETE="DELETE",s.PUT="PUT",s))(to||{});var Fu={};T(Fu,{ai:()=>di,auditLogs:()=>kt,automations:()=>ys,backups:()=>De,branding:()=>ls,environmentVariables:()=>ut,features:()=>We,groups:()=>Z,init:()=>ag,licensing:()=>nt,logger:()=>ir,plugins:()=>bs,publicApi:()=>_s,quotas:()=>ot,scimGroups:()=>an,scimUsers:()=>Ie,users:()=>bt,utils:()=>qr});var ls={};T(ls,{getBrandingConfig:()=>NO});var We={};T(We,{checkBackups:()=>Ee,checkFeature:()=>cs,checkFeatures:()=>oi,checkSCIM:()=>pi,isAppBuildersEnabled:()=>tr,isAuditLogsEnabled:()=>ps,isBackupsEnabled:()=>ii,isBrandingEnabled:()=>ui,isEnforceableSSO:()=>bm,isExpandedPublicApiEnabled:()=>ht,isPWAEnabled:()=>OO,isSSOEnforced:()=>CO,isSyncAutomationsEnabled:()=>EO,isTriggerAutomationRunEnabled:()=>RO,isUserGroupsEnabled:()=>ci,isViewPermissionEnabled:()=>PO,isViewReadonlyColumnsEnabled:()=>LO});var me=require("@budibase/types"),gt=require("@budibase/backend-core");var nt={};T(nt,{cache:()=>Qe,client:()=>Pt,features:()=>Wa,getFreeLicense:()=>ni,getLicense:()=>ti,getLicenseFromKey:()=>ri,keys:()=>si,offline:()=>is,quotas:()=>Va});var Qe={};T(Qe,{getCachedLicense:()=>hm,invalidate:()=>ym,refresh:()=>Jt});var ro=require("@budibase/backend-core"),An,W_=async()=>{An=await new ro.redis.Client(ro.redis.utils.Databases.LICENSES).init()},V_=async()=>{An&&await An.finish()};process.on("exit",async()=>{await V_()});var no=async()=>(An||await W_(),An);var Pt={};T(Pt,{activateLicenseKey:()=>bo,getLicense:()=>Pr,getLicenseFromKey:()=>yo,triggerQuota:()=>PI});var Mc=F(require("node-fetch"));var Gc=require("@budibase/backend-core"),ao=class{constructor(t){this.apiCall=t=>async(r="",n={})=>{n.headers||(n.headers={}),n.headers["Content-Type"]||(n.headers={"Content-Type":"application/json",Accept:"application/json",...n.headers});let a=n.headers["Content-Type"]==="application/json";Gc.logging.correlation.setHeader(n.headers);let s={method:t,body:a?JSON.stringify(n.body):n.body,headers:n.headers,credentials:"include"};return(0,Mc.default)(`${this.host}${r}`,s)};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}},so=ao;var ja=require("@budibase/types"),M=require("@budibase/backend-core");var et={};T(et,{bustCache:()=>uo,getCurrentUsageValues:()=>Yc,getQuotaUsage:()=>Kt,setAllUsage:()=>po,setAppUsageValue:()=>co,setUsage:()=>Wc,setUsagePerApp:()=>Vc,utils:()=>In});var le=require("@budibase/types"),Ae=require("@budibase/backend-core");var In={};T(In,{generateBaseQuotaUsage:()=>qa,generateNewMonthlyQuotas:()=>_n,generateNewQuotaUsage:()=>io,getBreakdownName:()=>Ua,getCurrentMonthString:()=>Rt,getQuotaDocId:()=>vn,setCurrentMonth:()=>Na,setQuotaReset:()=>oo});var oe=require("@budibase/types"),Vt=require("@budibase/backend-core"),vn=()=>Vt.context.isSelfHostUsingCloud()?`quota_usage_${Vt.context.getTenantId()}`:Vt.db.StaticDatabases.GLOBAL.docs.usageQuota,Fc=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},oo=e=>{e.quotaReset=Fc()},Rt=()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},qa=()=>({usageQuota:{[oe.StaticQuotaName.APPS]:0,[oe.StaticQuotaName.ROWS]:0,[oe.StaticQuotaName.PLUGINS]:0,[oe.StaticQuotaName.USERS]:0,[oe.StaticQuotaName.CREATORS]:0,[oe.StaticQuotaName.USER_GROUPS]:0,[oe.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[Rt()]:_n()}}),io=()=>{let e={_id:vn(),quotaReset:Fc(),...qa(),apps:{}};return Na(e),e},_n=()=>({[oe.MonthlyQuotaName.QUERIES]:0,[oe.MonthlyQuotaName.AUTOMATIONS]:0,[oe.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,triggers:{}}),Na=e=>{let t=Rt();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=_n()),e.monthly.current=e.monthly[t]},Ua=(e,t)=>{if(!(!t||!e))switch(e){case oe.MonthlyQuotaName.AUTOMATIONS:return oe.BreakdownQuotaName.AUTOMATIONS;case oe.MonthlyQuotaName.QUERIES:return Vt.db.isTableId(t)?oe.BreakdownQuotaName.ROW_QUERIES:Vt.db.isDatasourceId(t)?oe.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}};var jc=Ae.Duration.fromSeconds(60).toMs(),{Writethrough:Qc}=Ae.cache.writethrough;function Y_(e){return delete e.usageLimits,delete e.usageQuota.automationRuns,delete e.usageQuota.emails,delete e.usageQuota.storage,delete e.usageQuota.views,delete e.usageQuota.publishedApps,delete e.usageQuota.developers,e}var ka=()=>Ae.tenancy.isSelfHostUsingCloud()?new Qc(Ae.tenancy.getSelfHostCloudDB(),jc):new Qc(Ae.tenancy.getGlobalDB(),jc);async function uo(e=0){let r=ka(),n=vn(),a=await r.tryGet(n);a&&a._rev&&await r.remove(n,a._rev).catch(async s=>{if(e<1)return await uo(e+1);throw s})}var Kt=async()=>{let e=ka(),t=await e.tryGet(vn());if(!t){t=io();let{rev:r}=await e.put(t);t._rev=r}return Na(t),oo(t),Y_(t)},Wc=async(e,t,r)=>po({name:t,type:r,values:{total:e}}),Vc=async(e,t,r)=>{let n=ka(),a=await Kt(),s=Object.values(e).reduce((i,u)=>i+u,0);for(let[i,u]of Object.entries(e))a=Kc(a,t,r,{total:s,app:u},{appId:i});let o=await n.put(a);return a._rev=o.rev,a},H_=(e,t,r,n)=>{let a=Ua(t,r);if(!a||!n?.breakdown)return e;e.breakdown||(e.breakdown={}),e.breakdown[a]||(e.breakdown[a]={parent:t,values:{}});let s=e.breakdown[a];return s.values[r]=n.breakdown,e},co=(e,t,r,n={},a)=>{let s;try{s=Ae.db.getProdAppID(n?.appId||Ae.context.getAppId())}catch{}if(!s||!a.app||!le.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[s]||(e.apps={...e.apps,[s]:qa()});let o=e.apps[s];switch(r){case le.QuotaUsageType.STATIC:o.usageQuota[t]=a.app;break;case le.QuotaUsageType.MONTHLY:{let i=Rt(),u=t,d=o.monthly[i];d||(o.monthly[i]=_n(),d=o.monthly[i]),d[u]=a.app,le.BREAKDOWN_QUOTA_NAMES.includes(u)&&n?.id&&(d=H_(d,u,n.id,a));break}}return e},$c=(e,t,r,n)=>{if(!le.APP_QUOTA_NAMES.includes(r))return{};let a;try{a=Ae.db.getProdAppID(Ae.context.getAppId())}catch{}if(!a||!e.apps||!e.apps[a])return{app:0};let s=e.apps[a];switch(t){case le.QuotaUsageType.STATIC:if(s.usageQuota?.[r])return{app:s.usageQuota[r]};break;case le.QuotaUsageType.MONTHLY:{let o=Rt(),i=r;if(!s.monthly?.[o]?.[i])break;let u=s.monthly[o],d=u[i],f,g=Ua(i,n);return g&&n&&u.breakdown?.[g]&&(f=u.breakdown[g]?.values[n]),{app:d,breakdown:f||0}}}return{app:0}},Z_=(e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},z_=(e,t,r,n)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),n&&(r.monthly[t].triggers[e]=n)},Kc=(e,t,r,n,a={})=>{if(r===le.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=n.total,Z_(t,e,n.triggers);else if(r===le.QuotaUsageType.MONTHLY){t=t;let s=Rt();e.monthly[s][t]=n.total,z_(t,s,e,n.triggers)}else throw new Error(`Invalid usage type: ${r}`);return co(e,t,r,a,n)},po=async e=>{let t=Array.isArray(e)?e:[e],r=ka(),n=await Kt();for(let s of t)n=Kc(n,s.name,s.type,s.values,s.opts);let a=await r.put(n,0);return n._rev=a.rev,n},Yc=async(e,t,r)=>{let n=await Kt(),a=0,s={};switch(e){case le.QuotaUsageType.STATIC:if(n.usageQuota[t]){let o=t;a=n.usageQuota[o],s=$c(n,e,t,r)}break;case le.QuotaUsageType.MONTHLY:{let o=Rt(),i=t;n.monthly[o][i]&&(a=n.monthly[o][i],s=$c(n,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return le.APP_QUOTA_NAMES.includes(t)&&!(s.app||s.breakdown)&&(s.app=s.app||0,s.breakdown=s.breakdown||0),{total:a,app:s.app,breakdown:s.breakdown}};var Ne={};T(Ne,{destroy:()=>eI,get:()=>lo,save:()=>X_});var Ot=require("@budibase/backend-core"),J_=()=>({_id:Ot.StaticDatabases.GLOBAL.docs.licenseInfo}),X_=async e=>{let t=await lo();t={...t,...e};let n=await Ot.tenancy.getGlobalDB().put(t);return t._rev=n.rev,t},lo=async()=>{let e=Ot.tenancy.getGlobalDB();try{return await e.get(Ot.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return J_();throw t}},eI=async()=>{let e=Ot.tenancy.getGlobalDB(),t=await lo();t&&t._rev&&await e.remove(Ot.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)};var K={};T(K,{bulkSave:()=>dI,destroy:()=>fI,fetch:()=>uI,generateUserGroupID:()=>oI,get:()=>cI,getBulk:()=>pI,getByName:()=>fo,getGroupUsers:()=>Ba,getGroupUsersParams:()=>Xc,getUserGroupsParams:()=>Jc,save:()=>lI});var $=require("@budibase/backend-core");var je=require("@budibase/types"),Rr=require("@budibase/backend-core");async function Hc(){let e=Rr.sql.designDoc.base("type");e.sql.tables={[je.AUDIT_LOG_TYPE]:{fields:{appId:je.SQLiteType.TEXT,event:je.SQLiteType.TEXT,userId:je.SQLiteType.TEXT,timestamp:je.SQLiteType.TEXT,metadata:je.SQLiteType.TEXT,name:je.SQLiteType.TEXT,type:je.SQLiteType.TEXT,fallback:je.SQLiteType.TEXT}}};let t=Rr.context.getAuditLogsDB(),r;try{r=await t.get(Rr.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(n){if(n.status===404)r=e;else throw n}await t.put(r)}var Da=require("@budibase/backend-core"),{ViewName:tI,SEPARATOR:rI,DocumentType:nI,createView:aI}=Da.db,sI=nI.USER+rI;async function Zc(){let e=Da.tenancy.getGlobalDB(),t=`function(doc) {
|
|
4
|
-
if (doc._id.startsWith("${
|
|
3
|
+
`)}xm.exports=bP});var _n=u((vj,Om)=>{"use strict";function IP(e,t){for(var r=-1,a=e==null?0:e.length;++r<a&&t(e[r],r,e)!==!1;);return e}Om.exports=IP});var Lm=u((Tj,Pm)=>{"use strict";var SP=_n(),wP=So(),vP=1,TP=2,EP=8,RP=16,xP=32,_P=64,OP=128,PP=256,LP=512,CP=[["ary",OP],["bind",vP],["bindKey",TP],["curry",EP],["curryRight",RP],["flip",LP],["partial",xP],["partialRight",_P],["rearg",PP]];function qP(e,t){return SP(CP,function(r){var a="_."+r[0];t&r[1]&&!wP(e,a)&&e.push(a)}),e.sort()}Pm.exports=qP});var Ys=u((Ej,Cm)=>{"use strict";var UP=Rm(),DP=_m(),NP=Ka(),BP=Lm();function MP(e,t,r){var a=t+"";return NP(e,DP(a,BP(UP(a),r)))}Cm.exports=MP});var Hs=u((Rj,Dm)=>{"use strict";var GP=vm(),kP=Ks(),FP=Ys(),QP=1,jP=2,WP=4,$P=8,qm=32,Um=64;function VP(e,t,r,a,n,o,s,i,p,f){var m=t&$P,g=m?s:void 0,h=m?void 0:s,b=m?o:void 0,E=m?void 0:o;t|=m?qm:Um,t&=~(m?Um:qm),t&WP||(t&=~(QP|jP));var L=[e,t,n,b,g,E,h,i,p,f],_=r.apply(void 0,L);return GP(e)&&kP(_,L),_.placeholder=a,FP(_,e,t)}Dm.exports=VP});var zs=u((xj,Nm)=>{"use strict";function KP(e){var t=e;return t.placeholder}Nm.exports=KP});var Mm=u((_j,Bm)=>{"use strict";var YP=er(),HP=ua(),zP=Math.min;function JP(e,t){for(var r=e.length,a=zP(t.length,r),n=YP(e);a--;){var o=t[a];e[a]=HP(o,r)?n[o]:void 0}return e}Bm.exports=JP});var On=u((Oj,km)=>{"use strict";var Gm="__lodash_placeholder__";function XP(e,t){for(var r=-1,a=e.length,n=0,o=[];++r<a;){var s=e[r];(s===t||s===Gm)&&(e[r]=Gm,o[n++]=r)}return o}km.exports=XP});var Js=u((Pj,jm)=>{"use strict";var ZP=Qs(),eL=Ws(),tL=sm(),Fm=ba(),rL=Hs(),aL=zs(),nL=Mm(),oL=On(),sL=ne(),iL=1,uL=2,pL=8,cL=16,lL=128,dL=512;function Qm(e,t,r,a,n,o,s,i,p,f){var m=t&lL,g=t&iL,h=t&uL,b=t&(pL|cL),E=t&dL,L=h?void 0:Fm(e);function _(){for(var R=arguments.length,B=Array(R),st=R;st--;)B[st]=arguments[st];if(b)var be=aL(_),it=tL(B,be);if(a&&(B=ZP(B,a,n,b)),o&&(B=eL(B,o,s,b)),R-=it,b&&R<f){var kt=oL(B,be);return rL(e,t,Qm,_.placeholder,r,B,kt,i,p,f-R)}var br=g?r:this,Ir=h?br[e]:e;return R=B.length,i?B=nL(B,i):E&&R>1&&B.reverse(),m&&p<R&&(B.length=p),this&&this!==sL&&this instanceof _&&(Ir=L||Fm(Ir)),Ir.apply(br,B)}return _}jm.exports=Qm});var $m=u((Lj,Wm)=>{"use strict";var fL=Va(),mL=ba(),gL=Js(),hL=Hs(),yL=zs(),AL=On(),bL=ne();function IL(e,t,r){var a=mL(e);function n(){for(var o=arguments.length,s=Array(o),i=o,p=yL(n);i--;)s[i]=arguments[i];var f=o<3&&s[0]!==p&&s[o-1]!==p?[]:AL(s,p);if(o-=f.length,o<r)return hL(e,t,gL,n.placeholder,void 0,s,f,void 0,void 0,r-o);var m=this&&this!==bL&&this instanceof n?a:e;return fL(m,this,s)}return n}Wm.exports=IL});var Km=u((Cj,Vm)=>{"use strict";var SL=Va(),wL=ba(),vL=ne(),TL=1;function EL(e,t,r,a){var n=t&TL,o=wL(e);function s(){for(var i=-1,p=arguments.length,f=-1,m=a.length,g=Array(m+p),h=this&&this!==vL&&this instanceof s?o:e;++f<m;)g[f]=a[f];for(;p--;)g[f++]=arguments[++i];return SL(h,n?r:this,g)}return s}Vm.exports=EL});var Zm=u((qj,Xm)=>{"use strict";var RL=Qs(),xL=Ws(),Ym=On(),Hm="__lodash_placeholder__",Xs=1,_L=2,OL=4,zm=8,Ia=128,Jm=256,PL=Math.min;function LL(e,t){var r=e[1],a=t[1],n=r|a,o=n<(Xs|_L|Ia),s=a==Ia&&r==zm||a==Ia&&r==Jm&&e[7].length<=t[8]||a==(Ia|Jm)&&t[7].length<=t[8]&&r==zm;if(!(o||s))return e;a&Xs&&(e[2]=t[2],n|=r&Xs?0:OL);var i=t[3];if(i){var p=e[3];e[3]=p?RL(p,i,t[4]):i,e[4]=p?Ym(e[3],Hm):t[4]}return i=t[5],i&&(p=e[5],e[5]=p?xL(p,i,t[6]):i,e[6]=p?Ym(e[5],Hm):t[6]),i=t[7],i&&(e[7]=i),a&Ia&&(e[8]=e[8]==null?t[8]:PL(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=n,e}Xm.exports=LL});var tg=u((Uj,eg)=>{"use strict";var CL=/\s/;function qL(e){for(var t=e.length;t--&&CL.test(e.charAt(t)););return t}eg.exports=qL});var ag=u((Dj,rg)=>{"use strict";var UL=tg(),DL=/^\s+/;function NL(e){return e&&e.slice(0,UL(e)+1).replace(DL,"")}rg.exports=NL});var dr=u((Nj,ng)=>{"use strict";var BL=dt(),ML=ge(),GL="[object Symbol]";function kL(e){return typeof e=="symbol"||ML(e)&&BL(e)==GL}ng.exports=kL});var ug=u((Bj,ig)=>{"use strict";var FL=ag(),og=ve(),QL=dr(),sg=0/0,jL=/^[-+]0x[0-9a-f]+$/i,WL=/^0b[01]+$/i,$L=/^0o[0-7]+$/i,VL=parseInt;function KL(e){if(typeof e=="number")return e;if(QL(e))return sg;if(og(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=og(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=FL(e);var r=WL.test(e);return r||$L.test(e)?VL(e.slice(2),r?2:8):jL.test(e)?sg:+e}ig.exports=KL});var lg=u((Mj,cg)=>{"use strict";var YL=ug(),pg=1/0,HL=17976931348623157e292;function zL(e){if(!e)return e===0?e:0;if(e=YL(e),e===pg||e===-pg){var t=e<0?-1:1;return t*HL}return e===e?e:0}cg.exports=zL});var Zs=u((Gj,dg)=>{"use strict";var JL=lg();function XL(e){var t=JL(e),r=t%1;return t===t?r?t-r:t:0}dg.exports=XL});var Pn=u((kj,yg)=>{"use strict";var ZL=Fs(),eC=rm(),tC=$m(),rC=Js(),aC=Km(),nC=$s(),oC=Zm(),sC=Ks(),iC=Ys(),fg=Zs(),uC="Expected a function",mg=1,pC=2,ei=8,ti=16,ri=32,gg=64,hg=Math.max;function cC(e,t,r,a,n,o,s,i){var p=t&pC;if(!p&&typeof e!="function")throw new TypeError(uC);var f=a?a.length:0;if(f||(t&=~(ri|gg),a=n=void 0),s=s===void 0?s:hg(fg(s),0),i=i===void 0?i:fg(i),f-=n?n.length:0,t&gg){var m=a,g=n;a=n=void 0}var h=p?void 0:nC(e),b=[e,t,r,a,n,m,g,o,s,i];if(h&&oC(b,h),e=b[0],t=b[1],r=b[2],a=b[3],n=b[4],i=b[9]=b[9]===void 0?p?0:e.length:hg(b[9]-f,0),!i&&t&(ei|ti)&&(t&=~(ei|ti)),!t||t==mg)var E=eC(e,t,r);else t==ei||t==ti?E=tC(e,t,i):(t==ri||t==(mg|ri))&&!n.length?E=aC(e,t,r,a):E=rC.apply(void 0,b);var L=h?ZL:sC;return iC(L(E,b),e,t)}yg.exports=cC});var bg=u((Fj,Ag)=>{"use strict";var lC=Pn(),dC=128;function fC(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,lC(e,dC,void 0,void 0,void 0,void 0,t)}Ag.exports=fC});var Sg=u((Qj,Ig)=>{"use strict";var mC=Co(),gC=mC(Object.keys,Object);Ig.exports=gC});var ai=u((jj,wg)=>{"use strict";var hC=tn(),yC=Sg(),AC=Object.prototype,bC=AC.hasOwnProperty;function IC(e){if(!hC(e))return yC(e);var t=[];for(var r in Object(e))bC.call(e,r)&&r!="constructor"&&t.push(r);return t}wg.exports=IC});var fr=u((Wj,vg)=>{"use strict";var SC=Mo(),wC=ai(),vC=Jt();function TC(e){return vC(e)?SC(e):wC(e)}vg.exports=TC});var ni=u(($j,Tg)=>{"use strict";var EC=ar(),RC=fr();function xC(e,t){return e&&EC(t,RC(t),e)}Tg.exports=xC});var Rg=u((Vj,Eg)=>{"use strict";var _C=ar(),OC=nr();function PC(e,t){return e&&_C(t,OC(t),e)}Eg.exports=PC});var _g=u((Kj,xg)=>{"use strict";function LC(e,t){for(var r=-1,a=e==null?0:e.length,n=0,o=[];++r<a;){var s=e[r];t(s,r,e)&&(o[n++]=s)}return o}xg.exports=LC});var oi=u((Yj,Og)=>{"use strict";function CC(){return[]}Og.exports=CC});var Ln=u((Hj,Lg)=>{"use strict";var qC=_g(),UC=oi(),DC=Object.prototype,NC=DC.propertyIsEnumerable,Pg=Object.getOwnPropertySymbols,BC=Pg?function(e){return e==null?[]:(e=Object(e),qC(Pg(e),function(t){return NC.call(e,t)}))}:UC;Lg.exports=BC});var qg=u((zj,Cg)=>{"use strict";var MC=ar(),GC=Ln();function kC(e,t){return MC(e,GC(e),t)}Cg.exports=kC});var si=u((Jj,Ug)=>{"use strict";var FC=$a(),QC=en(),jC=Ln(),WC=oi(),$C=Object.getOwnPropertySymbols,VC=$C?function(e){for(var t=[];e;)FC(t,jC(e)),e=QC(e);return t}:WC;Ug.exports=VC});var Ng=u((Xj,Dg)=>{"use strict";var KC=ar(),YC=si();function HC(e,t){return KC(e,YC(e),t)}Dg.exports=HC});var ii=u((Zj,Bg)=>{"use strict";var zC=$a(),JC=ee();function XC(e,t,r){var a=t(e);return JC(e)?a:zC(a,r(e))}Bg.exports=XC});var ui=u((eW,Mg)=>{"use strict";var ZC=ii(),eq=Ln(),tq=fr();function rq(e){return ZC(e,tq,eq)}Mg.exports=rq});var kg=u((tW,Gg)=>{"use strict";var aq=ii(),nq=si(),oq=nr();function sq(e){return aq(e,oq,nq)}Gg.exports=sq});var Qg=u((rW,Fg)=>{"use strict";var iq=ft(),uq=ne(),pq=iq(uq,"DataView");Fg.exports=pq});var Wg=u((aW,jg)=>{"use strict";var cq=ft(),lq=ne(),dq=cq(lq,"Promise");jg.exports=dq});var gr=u((nW,Jg)=>{"use strict";var pi=Qg(),ci=Ya(),li=Wg(),di=vo(),fi=Gs(),zg=dt(),mr=ho(),$g="[object Map]",fq="[object Object]",Vg="[object Promise]",Kg="[object Set]",Yg="[object WeakMap]",Hg="[object DataView]",mq=mr(pi),gq=mr(ci),hq=mr(li),yq=mr(di),Aq=mr(fi),Dt=zg;(pi&&Dt(new pi(new ArrayBuffer(1)))!=Hg||ci&&Dt(new ci)!=$g||li&&Dt(li.resolve())!=Vg||di&&Dt(new di)!=Kg||fi&&Dt(new fi)!=Yg)&&(Dt=function(e){var t=zg(e),r=t==fq?e.constructor:void 0,a=r?mr(r):"";if(a)switch(a){case mq:return Hg;case gq:return $g;case hq:return Vg;case yq:return Kg;case Aq:return Yg}return t});Jg.exports=Dt});var Zg=u((oW,Xg)=>{"use strict";var bq=Object.prototype,Iq=bq.hasOwnProperty;function Sq(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&Iq.call(e,"index")&&(r.index=e.index,r.input=e.input),r}Xg.exports=Sq});var th=u((sW,eh)=>{"use strict";var wq=Za();function vq(e,t){var r=t?wq(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}eh.exports=vq});var ah=u((iW,rh)=>{"use strict";var Tq=/\w*$/;function Eq(e){var t=new e.constructor(e.source,Tq.exec(e));return t.lastIndex=e.lastIndex,t}rh.exports=Eq});var uh=u((uW,ih)=>{"use strict";var nh=Rt(),oh=nh?nh.prototype:void 0,sh=oh?oh.valueOf:void 0;function Rq(e){return sh?Object(sh.call(e)):{}}ih.exports=Rq});var ch=u((pW,ph)=>{"use strict";var xq=Za(),_q=th(),Oq=ah(),Pq=uh(),Lq=Lo(),Cq="[object Boolean]",qq="[object Date]",Uq="[object Map]",Dq="[object Number]",Nq="[object RegExp]",Bq="[object Set]",Mq="[object String]",Gq="[object Symbol]",kq="[object ArrayBuffer]",Fq="[object DataView]",Qq="[object Float32Array]",jq="[object Float64Array]",Wq="[object Int8Array]",$q="[object Int16Array]",Vq="[object Int32Array]",Kq="[object Uint8Array]",Yq="[object Uint8ClampedArray]",Hq="[object Uint16Array]",zq="[object Uint32Array]";function Jq(e,t,r){var a=e.constructor;switch(t){case kq:return xq(e);case Cq:case qq:return new a(+e);case Fq:return _q(e,r);case Qq:case jq:case Wq:case $q:case Vq:case Kq:case Yq:case Hq:case zq:return Lq(e,r);case Uq:return new a;case Dq:case Mq:return new a(e);case Nq:return Oq(e);case Bq:return new a;case Gq:return Pq(e)}}ph.exports=Jq});var dh=u((cW,lh)=>{"use strict";var Xq=gr(),Zq=ge(),eU="[object Map]";function tU(e){return Zq(e)&&Xq(e)==eU}lh.exports=tU});var hh=u((lW,gh)=>{"use strict";var rU=dh(),aU=rn(),fh=an(),mh=fh&&fh.isMap,nU=mh?aU(mh):rU;gh.exports=nU});var Ah=u((dW,yh)=>{"use strict";var oU=gr(),sU=ge(),iU="[object Set]";function uU(e){return sU(e)&&oU(e)==iU}yh.exports=uU});var wh=u((fW,Sh)=>{"use strict";var pU=Ah(),cU=rn(),bh=an(),Ih=bh&&bh.isSet,lU=Ih?cU(Ih):pU;Sh.exports=lU});var mi=u((mW,Rh)=>{"use strict";var dU=ea(),fU=_n(),mU=Bo(),gU=ni(),hU=Rg(),yU=Oo(),AU=er(),bU=qg(),IU=Ng(),SU=ui(),wU=kg(),vU=gr(),TU=Zg(),EU=ch(),RU=qo(),xU=ee(),_U=oa(),OU=hh(),PU=ve(),LU=wh(),CU=fr(),qU=nr(),UU=1,DU=2,NU=4,vh="[object Arguments]",BU="[object Array]",MU="[object Boolean]",GU="[object Date]",kU="[object Error]",Th="[object Function]",FU="[object GeneratorFunction]",QU="[object Map]",jU="[object Number]",Eh="[object Object]",WU="[object RegExp]",$U="[object Set]",VU="[object String]",KU="[object Symbol]",YU="[object WeakMap]",HU="[object ArrayBuffer]",zU="[object DataView]",JU="[object Float32Array]",XU="[object Float64Array]",ZU="[object Int8Array]",eD="[object Int16Array]",tD="[object Int32Array]",rD="[object Uint8Array]",aD="[object Uint8ClampedArray]",nD="[object Uint16Array]",oD="[object Uint32Array]",U={};U[vh]=U[BU]=U[HU]=U[zU]=U[MU]=U[GU]=U[JU]=U[XU]=U[ZU]=U[eD]=U[tD]=U[QU]=U[jU]=U[Eh]=U[WU]=U[$U]=U[VU]=U[KU]=U[rD]=U[aD]=U[nD]=U[oD]=!0;U[kU]=U[Th]=U[YU]=!1;function Cn(e,t,r,a,n,o){var s,i=t&UU,p=t&DU,f=t&NU;if(r&&(s=n?r(e,a,n,o):r(e)),s!==void 0)return s;if(!PU(e))return e;var m=xU(e);if(m){if(s=TU(e),!i)return AU(e,s)}else{var g=vU(e),h=g==Th||g==FU;if(_U(e))return yU(e,i);if(g==Eh||g==vh||h&&!n){if(s=p||h?{}:RU(e),!i)return p?IU(e,hU(s,e)):bU(e,gU(s,e))}else{if(!U[g])return n?e:{};s=EU(e,g,i)}}o||(o=new dU);var b=o.get(e);if(b)return b;o.set(e,s),LU(e)?e.forEach(function(_){s.add(Cn(_,t,r,_,e,o))}):OU(e)&&e.forEach(function(_,R){s.set(R,Cn(_,t,r,R,e,o))});var E=f?p?wU:SU:p?qU:CU,L=m?void 0:E(e);return fU(L||e,function(_,R){L&&(R=_,_=e[R]),mU(s,R,Cn(_,t,r,R,e,o))}),s}Rh.exports=Cn});var _h=u((gW,xh)=>{"use strict";var sD=mi(),iD=4;function uD(e){return sD(e,iD)}xh.exports=uD});var Ph=u((hW,Oh)=>{"use strict";var pD=Pn(),cD=8;function gi(e,t,r){t=r?void 0:t;var a=pD(e,cD,void 0,void 0,void 0,void 0,void 0,t);return a.placeholder=gi.placeholder,a}gi.placeholder={};Oh.exports=gi});var Ch=u((yW,Lh)=>{"use strict";var lD=dt(),dD=ge(),fD=Uo(),mD="[object DOMException]",gD="[object Error]";function hD(e){if(!dD(e))return!1;var t=lD(e);return t==gD||t==mD||typeof e.message=="string"&&typeof e.name=="string"&&!fD(e)}Lh.exports=hD});var Uh=u((AW,qh)=>{"use strict";var yD=gr(),AD=ge(),bD="[object WeakMap]";function ID(e){return AD(e)&&yD(e)==bD}qh.exports=ID});var Nh=u((bW,Dh)=>{"use strict";function SD(e,t){for(var r=-1,a=e==null?0:e.length;++r<a;)if(t(e[r],r,e))return!0;return!1}Dh.exports=SD});var hi=u((IW,Bh)=>{"use strict";var wD=Io(),vD=Nh(),TD=wo(),ED=1,RD=2;function xD(e,t,r,a,n,o){var s=r&ED,i=e.length,p=t.length;if(i!=p&&!(s&&p>i))return!1;var f=o.get(e),m=o.get(t);if(f&&m)return f==t&&m==e;var g=-1,h=!0,b=r&RD?new wD:void 0;for(o.set(e,t),o.set(t,e);++g<i;){var E=e[g],L=t[g];if(a)var _=s?a(L,E,g,t,e,o):a(E,L,g,e,t,o);if(_!==void 0){if(_)continue;h=!1;break}if(b){if(!vD(t,function(R,B){if(!TD(b,B)&&(E===R||n(E,R,r,a,o)))return b.push(B)})){h=!1;break}}else if(!(E===L||n(E,L,r,a,o))){h=!1;break}}return o.delete(e),o.delete(t),h}Bh.exports=xD});var Gh=u((SW,Mh)=>{"use strict";function _D(e){var t=-1,r=Array(e.size);return e.forEach(function(a,n){r[++t]=[n,a]}),r}Mh.exports=_D});var Wh=u((wW,jh)=>{"use strict";var kh=Rt(),Fh=Po(),OD=Yt(),PD=hi(),LD=Gh(),CD=Ja(),qD=1,UD=2,DD="[object Boolean]",ND="[object Date]",BD="[object Error]",MD="[object Map]",GD="[object Number]",kD="[object RegExp]",FD="[object Set]",QD="[object String]",jD="[object Symbol]",WD="[object ArrayBuffer]",$D="[object DataView]",Qh=kh?kh.prototype:void 0,yi=Qh?Qh.valueOf:void 0;function VD(e,t,r,a,n,o,s){switch(r){case $D:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case WD:return!(e.byteLength!=t.byteLength||!o(new Fh(e),new Fh(t)));case DD:case ND:case GD:return OD(+e,+t);case BD:return e.name==t.name&&e.message==t.message;case kD:case QD:return e==t+"";case MD:var i=LD;case FD:var p=a&qD;if(i||(i=CD),e.size!=t.size&&!p)return!1;var f=s.get(e);if(f)return f==t;a|=UD,s.set(e,t);var m=PD(i(e),i(t),a,n,o,s);return s.delete(e),m;case jD:if(yi)return yi.call(e)==yi.call(t)}return!1}jh.exports=VD});var Kh=u((vW,Vh)=>{"use strict";var $h=ui(),KD=1,YD=Object.prototype,HD=YD.hasOwnProperty;function zD(e,t,r,a,n,o){var s=r&KD,i=$h(e),p=i.length,f=$h(t),m=f.length;if(p!=m&&!s)return!1;for(var g=p;g--;){var h=i[g];if(!(s?h in t:HD.call(t,h)))return!1}var b=o.get(e),E=o.get(t);if(b&&E)return b==t&&E==e;var L=!0;o.set(e,t),o.set(t,e);for(var _=s;++g<p;){h=i[g];var R=e[h],B=t[h];if(a)var st=s?a(B,R,h,t,e,o):a(R,B,h,e,t,o);if(!(st===void 0?R===B||n(R,B,r,a,o):st)){L=!1;break}_||(_=h=="constructor")}if(L&&!_){var be=e.constructor,it=t.constructor;be!=it&&"constructor"in e&&"constructor"in t&&!(typeof be=="function"&&be instanceof be&&typeof it=="function"&&it instanceof it)&&(L=!1)}return o.delete(e),o.delete(t),L}Vh.exports=zD});var ty=u((TW,ey)=>{"use strict";var Ai=ea(),JD=hi(),XD=Wh(),ZD=Kh(),Yh=gr(),Hh=ee(),zh=oa(),eN=nn(),tN=1,Jh="[object Arguments]",Xh="[object Array]",qn="[object Object]",rN=Object.prototype,Zh=rN.hasOwnProperty;function aN(e,t,r,a,n,o){var s=Hh(e),i=Hh(t),p=s?Xh:Yh(e),f=i?Xh:Yh(t);p=p==Jh?qn:p,f=f==Jh?qn:f;var m=p==qn,g=f==qn,h=p==f;if(h&&zh(e)){if(!zh(t))return!1;s=!0,m=!1}if(h&&!m)return o||(o=new Ai),s||eN(e)?JD(e,t,r,a,n,o):XD(e,t,p,r,a,n,o);if(!(r&tN)){var b=m&&Zh.call(e,"__wrapped__"),E=g&&Zh.call(t,"__wrapped__");if(b||E){var L=b?e.value():e,_=E?t.value():t;return o||(o=new Ai),n(L,_,r,a,o)}}return h?(o||(o=new Ai),ZD(e,t,r,a,n,o)):!1}ey.exports=aN});var bi=u((EW,ny)=>{"use strict";var nN=ty(),ry=ge();function ay(e,t,r,a,n){return e===t?!0:e==null||t==null||!ry(e)&&!ry(t)?e!==e&&t!==t:nN(e,t,r,a,ay,n)}ny.exports=ay});var sy=u((RW,oy)=>{"use strict";var oN=ea(),sN=bi(),iN=1,uN=2;function pN(e,t,r,a){var n=r.length,o=n,s=!a;if(e==null)return!o;for(e=Object(e);n--;){var i=r[n];if(s&&i[2]?i[1]!==e[i[0]]:!(i[0]in e))return!1}for(;++n<o;){i=r[n];var p=i[0],f=e[p],m=i[1];if(s&&i[2]){if(f===void 0&&!(p in e))return!1}else{var g=new oN;if(a)var h=a(f,m,p,e,t,g);if(!(h===void 0?sN(m,f,iN|uN,a,g):h))return!1}}return!0}oy.exports=pN});var Ii=u((xW,iy)=>{"use strict";var cN=ve();function lN(e){return e===e&&!cN(e)}iy.exports=lN});var py=u((_W,uy)=>{"use strict";var dN=Ii(),fN=fr();function mN(e){for(var t=fN(e),r=t.length;r--;){var a=t[r],n=e[a];t[r]=[a,n,dN(n)]}return t}uy.exports=mN});var Si=u((OW,cy)=>{"use strict";function gN(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}cy.exports=gN});var dy=u((PW,ly)=>{"use strict";var hN=sy(),yN=py(),AN=Si();function bN(e){var t=yN(e);return t.length==1&&t[0][2]?AN(t[0][0],t[0][1]):function(r){return r===e||hN(r,e,t)}}ly.exports=bN});var Un=u((LW,fy)=>{"use strict";var IN=ee(),SN=dr(),wN=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,vN=/^\w*$/;function TN(e,t){if(IN(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||SN(e)?!0:vN.test(e)||!wN.test(e)||t!=null&&e in Object(t)}fy.exports=TN});var hy=u((CW,gy)=>{"use strict";var my=Ha(),EN="Expected a function";function wi(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(EN);var r=function(){var a=arguments,n=t?t.apply(this,a):a[0],o=r.cache;if(o.has(n))return o.get(n);var s=e.apply(this,a);return r.cache=o.set(n,s)||o,s};return r.cache=new(wi.Cache||my),r}wi.Cache=my;gy.exports=wi});var Ay=u((qW,yy)=>{"use strict";var RN=hy(),xN=500;function _N(e){var t=RN(e,function(a){return r.size===xN&&r.clear(),a}),r=t.cache;return t}yy.exports=_N});var vi=u((UW,by)=>{"use strict";var ON=Ay(),PN=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,LN=/\\(\\)?/g,CN=ON(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(PN,function(r,a,n,o){t.push(n?o.replace(LN,"$1"):a||r)}),t});by.exports=CN});var Ti=u((DW,Iy)=>{"use strict";function qN(e,t){for(var r=-1,a=e==null?0:e.length,n=Array(a);++r<a;)n[r]=t(e[r],r,e);return n}Iy.exports=qN});var Ry=u((NW,Ey)=>{"use strict";var Sy=Rt(),UN=Ti(),DN=ee(),NN=dr(),BN=1/0,wy=Sy?Sy.prototype:void 0,vy=wy?wy.toString:void 0;function Ty(e){if(typeof e=="string")return e;if(DN(e))return UN(e,Ty)+"";if(NN(e))return vy?vy.call(e):"";var t=e+"";return t=="0"&&1/e==-BN?"-0":t}Ey.exports=Ty});var Ei=u((BW,xy)=>{"use strict";var MN=Ry();function GN(e){return e==null?"":MN(e)}xy.exports=GN});var Ri=u((MW,_y)=>{"use strict";var kN=ee(),FN=Un(),QN=vi(),jN=Ei();function WN(e,t){return kN(e)?e:FN(e,t)?[e]:QN(jN(e))}_y.exports=WN});var hr=u((GW,Oy)=>{"use strict";var $N=dr(),VN=1/0;function KN(e){if(typeof e=="string"||$N(e))return e;var t=e+"";return t=="0"&&1/e==-VN?"-0":t}Oy.exports=KN});var xi=u((kW,Py)=>{"use strict";var YN=Ri(),HN=hr();function zN(e,t){t=YN(t,e);for(var r=0,a=t.length;e!=null&&r<a;)e=e[HN(t[r++])];return r&&r==a?e:void 0}Py.exports=zN});var Cy=u((FW,Ly)=>{"use strict";var JN=xi();function XN(e,t,r){var a=e==null?void 0:JN(e,t);return a===void 0?r:a}Ly.exports=XN});var Uy=u((QW,qy)=>{"use strict";function ZN(e,t){return e!=null&&t in Object(e)}qy.exports=ZN});var Ny=u((jW,Dy)=>{"use strict";var eB=Ri(),tB=Kr(),rB=ee(),aB=ua(),nB=Xa(),oB=hr();function sB(e,t,r){t=eB(t,e);for(var a=-1,n=t.length,o=!1;++a<n;){var s=oB(t[a]);if(!(o=e!=null&&r(e,s)))break;e=e[s]}return o||++a!=n?o:(n=e==null?0:e.length,!!n&&nB(n)&&aB(s,n)&&(rB(e)||tB(e)))}Dy.exports=sB});var My=u((WW,By)=>{"use strict";var iB=Uy(),uB=Ny();function pB(e,t){return e!=null&&uB(e,t,iB)}By.exports=pB});var ky=u(($W,Gy)=>{"use strict";var cB=bi(),lB=Cy(),dB=My(),fB=Un(),mB=Ii(),gB=Si(),hB=hr(),yB=1,AB=2;function bB(e,t){return fB(e)&&mB(t)?gB(hB(e),t):function(r){var a=lB(r,e);return a===void 0&&a===t?dB(r,e):cB(t,a,yB|AB)}}Gy.exports=bB});var Qy=u((VW,Fy)=>{"use strict";function IB(e){return function(t){return t?.[e]}}Fy.exports=IB});var Wy=u((KW,jy)=>{"use strict";var SB=xi();function wB(e){return function(t){return SB(t,e)}}jy.exports=wB});var Vy=u((YW,$y)=>{"use strict";var vB=Qy(),TB=Wy(),EB=Un(),RB=hr();function xB(e){return EB(e)?vB(RB(e)):TB(e)}$y.exports=xB});var _i=u((HW,Ky)=>{"use strict";var _B=dy(),OB=ky(),PB=Yr(),LB=ee(),CB=Vy();function qB(e){return typeof e=="function"?e:e==null?PB:typeof e=="object"?LB(e)?OB(e[0],e[1]):_B(e):CB(e)}Ky.exports=qB});var Hy=u((zW,Yy)=>{"use strict";var UB=mi(),DB=_i(),NB=1;function BB(e){return DB(typeof e=="function"?e:UB(e,NB))}Yy.exports=BB});var Jy=u((JW,zy)=>{"use strict";var MB=fo();function GB(e){var t=e==null?0:e.length;return t?MB(e,1):[]}zy.exports=GB});var Zy=u((XW,Xy)=>{"use strict";var kB=Jy(),FB=mo(),QB=Ka();function jB(e){return QB(FB(e,void 0,kB),e+"")}Xy.exports=jB});var tA=u((ZW,eA)=>{"use strict";var WB=Pn(),$B=Zy(),VB=256,KB=$B(function(e,t){return WB(e,VB,void 0,void 0,void 0,t)});eA.exports=KB});var aA=u((e$,rA)=>{"use strict";var YB=Ti(),HB=er(),zB=ee(),JB=dr(),XB=vi(),ZB=hr(),eM=Ei();function tM(e){return zB(e)?YB(e,ZB):JB(e)?[e]:HB(XB(eM(e)))}rA.exports=tM});var oA=u((t$,nA)=>{"use strict";nA.exports={ary:bg(),assign:ni(),clone:_h(),curry:Ph(),forEach:_n(),isArray:ee(),isError:Ch(),isFunction:Hr(),isWeakMap:Uh(),iteratee:Hy(),keys:ai(),rearg:tA(),toInteger:Zs(),toPath:aA()}});var iA=u((r$,sA)=>{"use strict";var rM=Yf(),aM=oA();function nM(e,t,r){return rM(aM,e,t,r)}sA.exports=nM});var Oi=u((a$,pA)=>{"use strict";var oM=iA(),uA=oM("merge",Go());uA.placeholder=Ds();pA.exports=uA});var pb=u((H$,ub)=>{"use strict";function EM(e,t,r,a){for(var n=-1,o=e==null?0:e.length;++n<o;){var s=e[n];t(a,s,r(s),e)}return a}ub.exports=EM});var lb=u((z$,cb)=>{"use strict";var RM=_o(),xM=fr();function _M(e,t){return e&&RM(e,t,xM)}cb.exports=_M});var mb=u((J$,fb)=>{"use strict";var OM=Jt();function PM(e,t){return function(r,a){if(r==null)return r;if(!OM(r))return e(r,a);for(var n=r.length,o=t?n:-1,s=Object(r);(t?o--:++o<n)&&a(s[o],o,s)!==!1;);return r}}fb.exports=PM});var hb=u((X$,gb)=>{"use strict";var LM=lb(),CM=mb(),qM=CM(LM);gb.exports=qM});var Ab=u((Z$,yb)=>{"use strict";var UM=hb();function DM(e,t,r,a){return UM(e,function(n,o,s){t(a,n,r(n),s)}),a}yb.exports=DM});var Ib=u((eV,bb)=>{"use strict";var NM=pb(),BM=Ab(),MM=_i(),GM=ee();function kM(e,t){return function(r,a){var n=GM(r)?NM:BM,o=t?t():{};return n(r,e,MM(a,2),o)}}bb.exports=kM});var wb=u((tV,Sb)=>{"use strict";var FM=ta(),QM=Ib(),jM=Object.prototype,WM=jM.hasOwnProperty,$M=QM(function(e,t,r){WM.call(e,r)?e[r].push(t):FM(e,r,[t])});Sb.exports=$M});var mG={};w(mG,{Method:()=>Vn,ai:()=>mu,api:()=>Wi,auditLogs:()=>ht,automations:()=>yn,backups:()=>Te,branding:()=>cn,constants:()=>Fr,environmentVariables:()=>$e,features:()=>Pe,groups:()=>Q,init:()=>Qf,licensing:()=>ke,logger:()=>Nt,mappers:()=>V,middleware:()=>Di,plugins:()=>An,publicApi:()=>Sn,quotas:()=>je,scimGroups:()=>yr,scimUsers:()=>de,sdk:()=>Li,users:()=>Ze,utils:()=>Vt});module.exports=fI(mG);var Vn=(o=>(o.POST="POST",o.GET="GET",o.PATCH="PATCH",o.DELETE="DELETE",o.PUT="PUT",o))(Vn||{});var Li={};w(Li,{ai:()=>rs,auditLogs:()=>ht,automations:()=>yn,backups:()=>Te,branding:()=>cn,environmentVariables:()=>$e,features:()=>Pe,groups:()=>Q,init:()=>Qf,licensing:()=>ke,logger:()=>Nt,plugins:()=>An,publicApi:()=>Sn,quotas:()=>je,scimGroups:()=>yr,scimUsers:()=>de,users:()=>Ze,utils:()=>Vt});var cn={};w(cn,{getBrandingConfig:()=>a_});var Pe={};w(Pe,{checkBackups:()=>he,checkFeature:()=>un,checkFeatures:()=>zo,checkSCIM:()=>es,isAppBuildersEnabled:()=>Pt,isAuditLogsEnabled:()=>pn,isBackupsEnabled:()=>Jo,isBrandingEnabled:()=>Xo,isEnforceableSSO:()=>tf,isExpandedPublicApiEnabled:()=>Je,isPWAEnabled:()=>Xx,isSSOEnforced:()=>Zx,isSyncAutomationsEnabled:()=>zx,isTriggerAutomationRunEnabled:()=>Jx,isUserGroupsEnabled:()=>Zo,isViewPermissionEnabled:()=>e_,isViewReadonlyColumnsEnabled:()=>t_});var oe=require("@budibase/types"),ze=require("@budibase/backend-core");var ke={};w(ke,{cache:()=>_e,client:()=>lt,features:()=>ja,getFreeLicense:()=>Ko,getLicense:()=>$o,getLicenseFromKey:()=>Vo,keys:()=>Ho,offline:()=>on,quotas:()=>Wa});var _e={};w(_e,{getCachedLicense:()=>Zd,invalidate:()=>ef,refresh:()=>xt});var Pa=require("@budibase/backend-core"),wr,mI=async()=>{wr=await Pa.RedisClient.init(Pa.redis.utils.Databases.LICENSES)},gI=async()=>{wr&&await wr.finish()};process.on("exit",async()=>{await gI()});var Kn=async()=>(wr||await mI(),wr);var lt={};w(lt,{activateLicenseKey:()=>io,getLicense:()=>Wt,getLicenseFromKey:()=>so,triggerQuota:()=>eS});var vu=C(require("node-fetch"));var Tu=require("@budibase/backend-core"),Yn=class{constructor(t){this.apiCall=t=>async(r="",a={})=>{a.headers||(a.headers={}),a.headers["Content-Type"]||(a.headers={"Content-Type":"application/json",Accept:"application/json",...a.headers});let n=a.headers["Content-Type"]==="application/json";Tu.logging.correlation.setHeader(a.headers);let o={method:t,body:n?JSON.stringify(a.body):a.body,headers:a.headers,credentials:"include"};return(0,vu.default)(`${this.host}${r}`,o)};this.post=this.apiCall("POST");this.get=this.apiCall("GET");this.patch=this.apiCall("PATCH");this.del=this.apiCall("DELETE");this.put=this.apiCall("PUT");this.host=t}},Hn=Yn;var ka=require("@budibase/types"),P=require("@budibase/backend-core");var Be={};w(Be,{bustCache:()=>Xn,getCurrentUsageValues:()=>Cu,getQuotaUsage:()=>wt,setAllUsage:()=>eo,setAppUsageValue:()=>Zn,setUsage:()=>Ou,setUsagePerApp:()=>Pu,utils:()=>Er});var re=require("@budibase/types"),pe=require("@budibase/backend-core");var Er={};w(Er,{generateBaseQuotaUsage:()=>La,generateNewMonthlyQuotas:()=>Tr,generateNewQuotaUsage:()=>Jn,getBreakdownName:()=>qa,getCurrentMonthString:()=>ut,getQuotaDocId:()=>vr,setCurrentMonth:()=>Ca,setQuotaReset:()=>zn});var X=require("@budibase/types"),St=require("@budibase/backend-core"),vr=()=>St.context.isSelfHostUsingCloud()?`quota_usage_${St.context.getTenantId()}`:St.db.StaticDatabases.GLOBAL.docs.usageQuota,Eu=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},zn=e=>{e.quotaReset=Eu()},ut=()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},La=()=>({usageQuota:{[X.StaticQuotaName.APPS]:0,[X.StaticQuotaName.ROWS]:0,[X.StaticQuotaName.PLUGINS]:0,[X.StaticQuotaName.USERS]:0,[X.StaticQuotaName.CREATORS]:0,[X.StaticQuotaName.USER_GROUPS]:0,[X.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[ut()]:Tr()}}),Jn=()=>{let e={_id:vr(),quotaReset:Eu(),...La(),apps:{}};return Ca(e),e},Tr=()=>({[X.MonthlyQuotaName.QUERIES]:0,[X.MonthlyQuotaName.AUTOMATIONS]:0,[X.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,triggers:{}}),Ca=e=>{let t=ut();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=Tr()),e.monthly.current=e.monthly[t]},qa=(e,t)=>{if(!(!t||!e))switch(e){case X.MonthlyQuotaName.AUTOMATIONS:return X.BreakdownQuotaName.AUTOMATIONS;case X.MonthlyQuotaName.QUERIES:return St.db.isTableId(t)?X.BreakdownQuotaName.ROW_QUERIES:St.db.isDatasourceId(t)?X.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}};var Ru=pe.Duration.fromSeconds(60).toMs(),{Writethrough:xu}=pe.cache.writethrough;function yI(e){return delete e.usageLimits,delete e.usageQuota.automationRuns,delete e.usageQuota.emails,delete e.usageQuota.storage,delete e.usageQuota.views,delete e.usageQuota.publishedApps,delete e.usageQuota.developers,e}var Ua=()=>pe.tenancy.isSelfHostUsingCloud()?new xu(pe.tenancy.getSelfHostCloudDB(),Ru):new xu(pe.tenancy.getGlobalDB(),Ru);async function Xn(e=0){let r=Ua(),a=vr(),n=await r.tryGet(a);n&&n._rev&&await r.remove(a,n._rev).catch(async o=>{if(e<1)return await Xn(e+1);throw o})}var wt=async()=>{let e=Ua(),t=await e.tryGet(vr());if(!t){t=Jn();let{rev:r}=await e.put(t);t._rev=r}return Ca(t),zn(t),yI(t)},Ou=async(e,t,r)=>eo({name:t,type:r,values:{total:e}}),Pu=async(e,t,r)=>{let a=Ua(),n=await wt(),o=Object.values(e).reduce((i,p)=>i+p,0);for(let[i,p]of Object.entries(e))n=Lu(n,t,r,{total:o,app:p},{appId:i});let s=await a.put(n);return n._rev=s.rev,n},AI=(e,t,r,a)=>{let n=qa(t,r);if(!n||!a?.breakdown)return e;e.breakdown||(e.breakdown={}),e.breakdown[n]||(e.breakdown[n]={parent:t,values:{}});let o=e.breakdown[n];return o.values[r]=a.breakdown,e},Zn=(e,t,r,a={},n)=>{let o;try{o=pe.db.getProdAppID(a?.appId||pe.context.getAppId())}catch{}if(!o||!n.app||!re.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[o]||(e.apps={...e.apps,[o]:La()});let s=e.apps[o];switch(r){case re.QuotaUsageType.STATIC:s.usageQuota[t]=n.app;break;case re.QuotaUsageType.MONTHLY:{let i=ut(),p=t,f=s.monthly[i];f||(s.monthly[i]=Tr(),f=s.monthly[i]),f[p]=n.app,re.BREAKDOWN_QUOTA_NAMES.includes(p)&&a?.id&&(f=AI(f,p,a.id,n));break}}return e},_u=(e,t,r,a)=>{if(!re.APP_QUOTA_NAMES.includes(r))return{};let n;try{n=pe.db.getProdAppID(pe.context.getAppId())}catch{}if(!n||!e.apps||!e.apps[n])return{app:0};let o=e.apps[n];switch(t){case re.QuotaUsageType.STATIC:if(o.usageQuota?.[r])return{app:o.usageQuota[r]};break;case re.QuotaUsageType.MONTHLY:{let s=ut(),i=r;if(!o.monthly?.[s]?.[i])break;let p=o.monthly[s],f=p[i],m,g=qa(i,a);return g&&a&&p.breakdown?.[g]&&(m=p.breakdown[g]?.values[a]),{app:f,breakdown:m||0}}}return{app:0}},bI=(e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},II=(e,t,r,a)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),a&&(r.monthly[t].triggers[e]=a)},Lu=(e,t,r,a,n={})=>{if(r===re.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=a.total,bI(t,e,a.triggers);else if(r===re.QuotaUsageType.MONTHLY){t=t;let o=ut();e.monthly[o][t]=a.total,II(t,o,e,a.triggers)}else throw new Error(`Invalid usage type: ${r}`);return Zn(e,t,r,n,a)},eo=async e=>{let t=Array.isArray(e)?e:[e],r=Ua(),a=await wt();for(let o of t)a=Lu(a,o.name,o.type,o.values,o.opts);let n=await r.put(a,0);return a._rev=n.rev,a},Cu=async(e,t,r)=>{let a=await wt(),n=0,o={};switch(e){case re.QuotaUsageType.STATIC:if(a.usageQuota[t]){let s=t;n=a.usageQuota[s],o=_u(a,e,t,r)}break;case re.QuotaUsageType.MONTHLY:{let s=ut(),i=t;a.monthly[s][i]&&(n=a.monthly[s][i],o=_u(a,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return re.APP_QUOTA_NAMES.includes(t)&&!(o.app||o.breakdown)&&(o.app=o.app||0,o.breakdown=o.breakdown||0),{total:n,app:o.app,breakdown:o.breakdown}};var Se={};w(Se,{destroy:()=>vI,get:()=>to,save:()=>wI});var pt=require("@budibase/backend-core"),SI=()=>({_id:pt.StaticDatabases.GLOBAL.docs.licenseInfo}),wI=async e=>{let t=await to();t={...t,...e};let a=await pt.tenancy.getGlobalDB().put(t);return t._rev=a.rev,t},to=async()=>{let e=pt.tenancy.getGlobalDB();try{return await e.get(pt.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return SI();throw t}},vI=async()=>{let e=pt.tenancy.getGlobalDB(),t=await to();t&&t._rev&&await e.remove(pt.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)};var M={};w(M,{bulkSave:()=>DI,destroy:()=>NI,fetch:()=>LI,generateUserGroupID:()=>OI,get:()=>CI,getBulk:()=>qI,getByName:()=>ro,getGroupUsers:()=>Na,getGroupUsersParams:()=>Bu,getUserGroupsParams:()=>Nu,save:()=>UI});var D=require("@budibase/backend-core");var xe=require("@budibase/types"),Ft=require("@budibase/backend-core");async function qu(){let e=Ft.sql.designDoc.base("type");e.sql.tables={[xe.AUDIT_LOG_TYPE]:{fields:{appId:xe.SQLiteType.TEXT,event:xe.SQLiteType.TEXT,userId:xe.SQLiteType.TEXT,timestamp:xe.SQLiteType.TEXT,metadata:xe.SQLiteType.TEXT,name:xe.SQLiteType.TEXT,type:xe.SQLiteType.TEXT,fallback:xe.SQLiteType.TEXT}}};let t=Ft.context.getAuditLogsDB(),r;try{r=await t.get(Ft.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(a){if(a.status===404)r=e;else throw a}await t.put(r)}var Da=require("@budibase/backend-core"),{ViewName:TI,SEPARATOR:EI,DocumentType:RI,createView:xI}=Da.db,_I=RI.USER+EI;async function Uu(){let e=Da.tenancy.getGlobalDB(),t=`function(doc) {
|
|
4
|
+
if (doc._id.startsWith("${_I}") && Array.isArray(doc.userGroups)) {
|
|
5
5
|
for (let groupId of doc.userGroups) {
|
|
6
6
|
emit("g_" + groupId, { email: doc.email, userId: doc._id })
|
|
7
7
|
emit("e_" + groupId + doc.email, { email: doc.email, userId: doc._id })
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
|
-
}`;await
|
|
11
|
-
if (doc._id.startsWith("${
|
|
12
|
-
let autoId = doc.automationId + "${
|
|
13
|
-
let status = doc.status + "${
|
|
14
|
-
let autoKey = "${
|
|
15
|
-
let statusKey = "${
|
|
16
|
-
let allKey = "${
|
|
10
|
+
}`;await xI(e,t,TI.USER_BY_GROUP)}var Du=`${D.DocumentType.GROUP}${D.SEPARATOR}`;function Nu(e,t={}){e||(e="");let r=e?.startsWith(D.DocumentType.GROUP)?"":Du;return{...t,startkey:`${r}${e}`,endkey:`${r}${e}${D.UNICODE_MAX}`}}function Bu(e,t={}){e||(e="");let{emailSearch:r,bookmark:a,...n}=t;return r?{...n,startkey:`e_${e}${a||r}`,endkey:`e_${e}${r}${D.UNICODE_MAX}`}:{...t,startkey:`g_${e}`,endkey:`g_${e}${D.UNICODE_MAX}`,startkey_docid:a}}function OI(){return`${Du}${D.utils.newid()}`}async function Na(e,t){let r=D.tenancy.getGlobalDB();return(await D.db.queryView(D.db.ViewName.USER_BY_GROUP,Bu(e,t),r,Uu,{arrayResponse:!0})).map(n=>({_id:n.userId,email:n.email}))||[]}async function Rr(e){return e.users=await Na(e._id),e}async function PI(e){let r=(await Rr(e)).users?.map(o=>o._id),a=await D.users.bulkGetGlobalUsersById(r),n=[];for(let o of a){if(!o.userGroups)continue;let s=o.userGroups.length;o.userGroups=o.userGroups.filter(i=>i!==e._id),o.userGroups.length!==s&&n.push(o)}n.length&&await D.users.bulkUpdateGlobalUsers(n)}async function Mu(){return(await D.tenancy.getGlobalDB().allDocs(Nu(null,{include_docs:!0}))).rows.map(t=>t.doc)}async function LI(){let e=await Mu(),t=[];for(let r of e)t.push(Rr(r));return await Promise.all(t)}async function CI(e){let r=await D.tenancy.getGlobalDB().get(e);return await Rr(r)}async function qI(e,t={enriched:!0}){let a=await D.tenancy.getGlobalDB().getMultiple(e,{allowMissing:!0});if(t?.enriched){let n=[];for(let o of a)n.push(Rr(o));return await Promise.all(n)}else return a}async function UI(e){return await D.tenancy.getGlobalDB().put(e)}async function DI(e){return await D.tenancy.getGlobalDB().bulkDocs(e)}async function NI(e,t){let r=D.tenancy.getGlobalDB(),a=await r.get(e),n=await r.remove(e,t);return await PI(a),n}async function ro(e){let t=e.toLowerCase(),a=(await Mu()).find(n=>n.name.toLowerCase()===t);if(a)return await Rr(a)}var we={};w(we,{deleteAppBackupMetadata:()=>HI,fetchAppBackups:()=>VI,generateAppBackupID:()=>Xu,getAppBackupMetadata:()=>zI,oldestBackupDate:()=>zu,storeAppBackupMetadata:()=>KI,updateAppBackupMetadata:()=>YI});var F=require("@budibase/backend-core"),Hu=require("@budibase/types");function xr(e,t){let r=e.rows.map(n=>n.doc?n.doc:n);if(!t?.paginate)return{data:r,hasNextPage:!1};let a=r.length>t?.pageSize;return{data:r.slice(0,t?.pageSize),hasNextPage:a,nextPage:a?e.rows[t?.pageSize]?.key:void 0}}var Qt=require("@budibase/backend-core"),{ViewName:ku,AutomationViewMode:ao,SEPARATOR:Me,DocumentType:Fu,createView:Qu}=Qt.db,BI=Fu.AUTOMATION_LOG+Me,Gu=Fu.APP_BACKUP+Me;async function ju(){let e=Qt.context.getProdAppDB(),t=`function(doc) {
|
|
11
|
+
if (doc._id.startsWith("${BI}")) {
|
|
12
|
+
let autoId = doc.automationId + "${Me}"
|
|
13
|
+
let status = doc.status + "${Me}"
|
|
14
|
+
let autoKey = "${ao.AUTOMATION}${Me}" + autoId + doc.createdAt
|
|
15
|
+
let statusKey = "${ao.STATUS}${Me}" + status + doc.createdAt
|
|
16
|
+
let allKey = "${ao.ALL}${Me}" + status + autoId + doc.createdAt
|
|
17
17
|
emit(statusKey)
|
|
18
18
|
emit(autoKey)
|
|
19
19
|
emit(allKey)
|
|
20
20
|
}
|
|
21
|
-
}`;await
|
|
22
|
-
if (doc._id.startsWith("${
|
|
23
|
-
let full = doc.appId + "${
|
|
24
|
-
full += doc.trigger.toLowerCase() + "${
|
|
25
|
-
full += doc.type.toLowerCase() + "${
|
|
26
|
-
emit("${
|
|
21
|
+
}`;await Qu(e,t,ku.AUTOMATION_LOGS)}async function Wu(){let e=Qt.tenancy.getGlobalDB(),t=`function(doc) {
|
|
22
|
+
if (doc._id.startsWith("${Gu}") && doc.type && doc.trigger) {
|
|
23
|
+
let full = doc.appId + "${Me}"
|
|
24
|
+
full += doc.trigger.toLowerCase() + "${Me}"
|
|
25
|
+
full += doc.type.toLowerCase() + "${Me}"
|
|
26
|
+
emit("${Gu}" + full + doc.timestamp)
|
|
27
27
|
}
|
|
28
|
-
}`;await
|
|
28
|
+
}`;await Qu(e,t,ku.APP_BACKUP_BY_TRIGGER)}var Yu=require("@budibase/types");var Fr={};w(Fr,{GENERIC_PAGE_SIZE:()=>Ge,auditLogs:()=>jt,licenses:()=>me,quotas:()=>He,versions:()=>kr});var me={};w(me,{CLOUD_FREE_LICENSE:()=>GI,SELF_FREE_LICENSE:()=>no,UNLIMITED:()=>W,UNLIMITED_LICENSE:()=>kI});var ct=require("@budibase/types");var He={};w(He,{UNLIMITED:()=>MI,appBackupRetentionDays:()=>Mr,apps:()=>Or,automationLogRetentionDays:()=>Br,automations:()=>Dr,budibaseAICredits:()=>Nr,creators:()=>Lr,customAIConfigurations:()=>Gr,plugins:()=>qr,queries:()=>Ur,rows:()=>_r,userGroups:()=>Cr,users:()=>Pr});var ae=require("@budibase/types"),MI=-1,_r=e=>({[ae.StaticQuotaName.ROWS]:{name:"Rows",value:e,triggers:[90,100]}}),Or=e=>({[ae.StaticQuotaName.APPS]:{name:"Apps",value:e,triggers:[100]}}),Pr=e=>({[ae.StaticQuotaName.USERS]:{name:"Users",value:e,triggers:[80,100]}}),Lr=e=>({[ae.StaticQuotaName.CREATORS]:{name:"Creators",value:e,triggers:[]}}),Cr=e=>({[ae.StaticQuotaName.USER_GROUPS]:{name:"User Groups",value:e,triggers:[80,100]}}),qr=e=>({[ae.StaticQuotaName.PLUGINS]:{name:"Plugins",value:e,triggers:[90,100]}}),Ur=e=>({[ae.MonthlyQuotaName.QUERIES]:{name:"Queries",value:e,triggers:[]}}),Dr=e=>({[ae.MonthlyQuotaName.AUTOMATIONS]:{name:"Automations",value:e,triggers:[80,90,100]}}),Nr=e=>({[ae.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:{name:"Budibase AI Credits",value:e,triggers:[80,90,100]}}),Br=e=>({[ae.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS]:{name:"Automation Logs",value:e,triggers:[]}}),Mr=e=>({[ae.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS]:{name:"App Backups",value:e,triggers:[]}}),Gr=e=>({[ae.StaticQuotaName.AI_CUSTOM_CONFIGS]:{name:"Custom AI Configuration",value:e,triggers:[]}});var W=-1,GI={features:[],quotas:{usage:{monthly:{...Ur(W),...Dr(200),...Nr(5e4)},static:{...Or(W),..._r(2e3),...Pr(5),...Lr(5),...Cr(0),...qr(10),...Gr(0)}},constant:{...Br(1),...Mr(0)}},plan:{type:ct.PlanType.FREE,usesInvoicing:!1,model:ct.PlanModel.PER_USER}},no={features:[],quotas:{usage:{monthly:{...Ur(W),...Dr(W),...Nr(5e4)},static:{..._r(W),...Or(W),...Pr(20),...Lr(W),...Cr(0),...qr(10),...Gr(0)}},constant:{...Br(1),...Mr(0)}},plan:{type:ct.PlanType.FREE,usesInvoicing:!1,model:ct.PlanModel.PER_USER}},kI={features:[],quotas:{usage:{monthly:{...Ur(W),...Dr(W),...Nr(W)},static:{...Or(W),..._r(W),...Pr(W),...Lr(W),...Cr(W),...qr(W),...Gr(W)}},constant:{...Br(W),...Mr(W)}},plan:{type:ct.PlanType.FREE,usesInvoicing:!1,model:ct.PlanModel.PER_USER}};var kr={};w(kr,{getLicenseVersion:()=>FI,getProVersion:()=>Vu});var vt=require("@budibase/backend-core"),Ba=C(require("fs")),$u=C(require("path")),FI=()=>{if(vt.env.isDev()){let e="dev-version.txt",t=$u.default.join(vt.objectStore.budibaseTempDir(),e);if(Ba.default.existsSync(t))return Ba.default.readFileSync(t,"utf8");{let r=vt.utils.newid();return Ba.default.writeFileSync(t,r),r}}else return Vu()},Vu=()=>{let e=vt.env.VERSION;if(!e)throw new Error("No budibase pro version was specified");return e};var jt={};w(jt,{searchTable:()=>QI});var Tt=require("@budibase/types"),Ku=require("@budibase/backend-core");function QI(){return{type:"table",sourceType:Tt.TableSourceType.INTERNAL,name:Tt.AUDIT_LOG_TYPE,sourceId:Ku.SQS_DATASOURCE_INTERNAL,primary:["_id"],schema:{metadata:{name:"metadata",type:Tt.FieldType.JSON},fallback:{name:"fallback",type:Tt.FieldType.JSON}}}}var Ge=9;var jI=new Date(864e13).toISOString(),WI=1e3*60*60*24;async function Ma(e){let r=(await _e.getCachedLicense()).quotas?.[Yu.QuotaType.CONSTANT]?.[e]?.value||0;return r===me.UNLIMITED?new Date(jI).toISOString():new Date(new Date().getTime()-WI*r).toISOString()}async function zu(){return Ma(Hu.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS)}var oo=`${F.db.DocumentType.APP_BACKUP}${F.db.SEPARATOR}`;async function $I(e,t,r={}){let a=await zu(),n=F.db.getProdAppID(e),o=n,s=n;if(t.trigger&&t.type){let i=`${F.db.SEPARATOR}${t.trigger}`;i+=`${F.db.SEPARATOR}${t.type}`,o+=i,s+=i}return(!t.startDate||t.startDate<a)&&(t.startDate=a),t.startDate&&(s+=`${F.db.SEPARATOR}${t.startDate}`),t.endDate&&(o+=`${F.db.SEPARATOR}${t.endDate}`),{...r,descending:!0,startkey:`${oo}${o}${F.db.UNICODE_MAX}`,endkey:`${oo}${s}`}}async function Ju(e,t){try{let r=F.db.getQueryIndex(F.db.ViewName.APP_BACKUP_BY_TRIGGER);return await e.query(r,t)}catch(r){if(r!=null&&r.error==="not_found")return await Wu(),Ju(e,t);throw r}}function Xu(e,t){return`${oo}${e}${F.db.SEPARATOR}${t}`}async function VI(e,t={}){let r=F.tenancy.getGlobalDB(),a,n=t.limit||9,o=await $I(e,t,{include_docs:!0,limit:n+1});t.page&&(o.startkey=t.page),!t.trigger||!t.type?a=await r.allDocs(o):a=await Ju(r,o);let s=xr(a,{paginate:t.paginate,pageSize:n}),i=[...new Set(s.data.filter(f=>f.createdBy).map(f=>f.createdBy))],p=await F.users.bulkGetGlobalUsersById(i,{cleanup:!0});for(let f of p)for(let m of s.data)f?._id===m.createdBy&&(m.createdBy=f);return s}async function KI(e,t={}){let r=F.tenancy.getGlobalDB(),a=F.db.getProdAppID(e.appId),n=Xu(a,e.timestamp),o={...e,_id:n,appId:a,name:e.name};return o._id=t.docId||o._id,o._rev=t.docRev||o._rev,t.filename&&(o.filename=t.filename),e.createdBy&&(o.createdBy=F.db.getGlobalIDFromUserMetadataID(e.createdBy)),await r.put(o)}async function YI(e,t){let r=F.tenancy.getGlobalDB(),a=await r.get(e);return a.name=t,await r.put(a)}async function HI(e){let t=F.tenancy.getGlobalDB(),r=await t.get(e);await t.remove(r._id,r._rev)}async function zI(e){return await F.tenancy.getGlobalDB().get(e)}var Et={};w(Et,{get:()=>XI,getCacheEnvVarID:()=>tp,getEnvVarID:()=>Ga,update:()=>ZI});var Oe=require("@budibase/backend-core"),ep=C(require("lru-cache")),JI=1e3,Zu=new ep.default({max:JI});function Ga(){return Oe.StaticDatabases.GLOBAL.docs.environmentVariables}function tp(e){return`${Oe.tenancy.getTenantId()}/${Ga()}/${e||""}`}async function XI(){let e=Ga(),t=Oe.tenancy.getGlobalDB(),r,a=!1;try{r=await t.get(e)}catch(i){if(i.status==404)a=!0;else throw i}let n=tp(r?._rev),o=Zu.get(n);if(o)return o;let s;return!a&&r?s={...r,variables:JSON.parse(Oe.encryption.decrypt(r.variables,Oe.encryption.SecretOption.ENCRYPTION))}:s={_id:e,variables:{}},Zu.set(n,s),s}async function ZI(e){let t=Ga();return await Oe.tenancy.getGlobalDB().put({_id:e._id||t,_rev:e._rev||void 0,variables:Oe.encryption.encrypt(JSON.stringify(e.variables),Oe.encryption.SecretOption.ENCRYPTION)})}var Fa=new Hn(P.env.ACCOUNT_PORTAL_URL),Qa=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{}},rp=async e=>{let t,r;if(P.env.SELF_HOSTED){if(t=await Se.get(),!t.licenseKey)return;r={[P.constants.Header.LICENSE_KEY]:t.licenseKey}}else{let a=P.tenancy.getTenantId();r={[P.constants.Header.API_KEY]:P.env.ACCOUNT_PORTAL_API_KEY,[P.constants.Header.TENANT_ID]:a}}return e(r)},ap=async()=>rp(async e=>{let t=await Be.getQuotaUsage();if(t.usageQuota.users==null){let i=await P.users.getUserCount();console.info(`Syncing user count quota to ${i}`),t.usageQuota.users=i,await Be.setUsage(i,ka.StaticQuotaName.USERS,ka.QuotaUsageType.STATIC)}let r=await P.installation.getInstallFromDB(),a=P.tenancy.getTenantId(),n=await P.events.identification.getUniqueTenantId(a),o=kr.getProVersion(),s={quotaUsage:t,tenantId:a,install:{id:r.installId,tenantId:n,version:o}};try{let i=await Fa.post("/api/license",{headers:{...e},body:s});if(i.status===404||i.status===403)return;if(i.status!==200){let p=await Qa(i);throw new P.HTTPError(`Error getting license: ${p}`,i.status)}return i.json()}catch(i){if(P.env.DISABLE_ACCOUNT_PORTAL)return;throw i}});P.env.isJest()&&(ap=jest.fn());var Wt=ap;async function so(e){let t;if(!P.env.INTERNAL_API_KEY)throw new Error("getLicenseFromKey requires INTERNAL_API_KEY to be set");try{t=await Fa.get(`/api/license/${e}`,{headers:{[P.constants.Header.API_KEY]:P.env.INTERNAL_API_KEY}})}catch(r){if(P.env.DISABLE_ACCOUNT_PORTAL)return;throw r}if(!(t.status===404||t.status===403)){if(t.status!==200){let r=await Qa(t);throw new P.HTTPError(`Error getting license: ${r}`,t.status)}return t.json()}}var eS=e=>rp(async t=>{let r=await Fa.post("/api/license/usage/triggered",{headers:{...t},body:e});if(r.status!==200){let a=await Qa(r);P.logging.logAlert(`Error triggering quota usage: ${a}`)}}),io=async e=>{let t=await P.installation.getInstall(),r={installVersion:t.version,installId:t.installId},a=await Fa.post("/api/license/activate",{headers:{[P.constants.Header.LICENSE_KEY]:e},body:r});if(a.status===403)throw new P.HTTPError("Invalid license key",400);if(a.status===409)throw new P.HTTPError("License key has already been activated",409);if(a.status!==200){let n=await Qa(a);throw new P.HTTPError(`Error activating license key: ${n}`,a.status)}return a.json()};var Wo=require("@budibase/backend-core");var on={};w(on,{activateOfflineLicenseToken:()=>Mx,deleteOfflineLicenseToken:()=>Gx,dev:()=>ca,enrichLicense:()=>Yd,getIdentifier:()=>ko,getIdentifierBase64:()=>kx,getIdentifierFromBase64:()=>Fx,getOfflineLicense:()=>Fo,getOfflineLicenseToken:()=>$d,signing:()=>Wr,verifyExpiry:()=>Vd,verifyInstallation:()=>Kd});var Wr={};w(Wr,{sign:()=>rS,verifyLicenseToken:()=>jr});var uo=C(require("jsonwebtoken")),tS=`-----BEGIN PUBLIC KEY-----
|
|
29
29
|
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvz3jePLCFBXZ19c8Dpkv
|
|
30
30
|
XtSgOhKFOcvQdo/LV0KJRUzQWDPWuO4ILtBtnqhjtIzZH4CH0qCYBet5L6Qr4CM1
|
|
31
31
|
l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
|
|
@@ -34,24 +34,24 @@ l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
|
|
|
34
34
|
d/o3ZWE1TTj1zYwlCLN5qRKr3hU8nC3xEYNEbkB9SfTRaOq9Q7P8WmfLkoCPm3pR
|
|
35
35
|
mwIDAQAB
|
|
36
36
|
-----END PUBLIC KEY-----
|
|
37
|
-
`;function Gn(e){return Ao.default.verify(e,LI,{algorithms:["RS256"]})}function qI(e,t){return Ao.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}var Wa={};T(Wa,{getFeatures:()=>vo});var p=require("@budibase/types");var NI={[p.PlanType.FREE]:[...xe.SELF_FREE_LICENSE.features],[p.PlanType.PREMIUM]:void 0,[p.PlanType.PREMIUM_PLUS]:[p.Feature.APP_BACKUPS,p.Feature.BRANDING,p.Feature.SYNC_AUTOMATIONS,p.Feature.APP_BUILDERS,p.Feature.VIEW_PERMISSIONS,p.Feature.TRIGGER_AUTOMATION_RUN,p.Feature.VIEW_READONLY_COLUMNS,p.Feature.AI_CUSTOM_CONFIGS,p.Feature.PDF,p.Feature.BUDIBASE_AI],[p.PlanType.PREMIUM_PLUS_TRIAL]:[p.Feature.APP_BACKUPS,p.Feature.BRANDING,p.Feature.SYNC_AUTOMATIONS,p.Feature.APP_BUILDERS,p.Feature.VIEW_PERMISSIONS,p.Feature.TRIGGER_AUTOMATION_RUN,p.Feature.VIEW_READONLY_COLUMNS,p.Feature.AI_CUSTOM_CONFIGS,p.Feature.PDF,p.Feature.BUDIBASE_AI],[p.PlanType.PRO]:[p.Feature.USER_GROUPS,p.Feature.APP_BACKUPS],[p.PlanType.TEAM]:[p.Feature.USER_GROUPS,p.Feature.APP_BACKUPS],[p.PlanType.BUSINESS]:[p.Feature.USER_GROUPS,p.Feature.APP_BACKUPS,p.Feature.ENVIRONMENT_VARIABLES,p.Feature.AUDIT_LOGS,p.Feature.BRANDING,p.Feature.SYNC_AUTOMATIONS,p.Feature.APP_BUILDERS,p.Feature.EXPANDED_PUBLIC_API,p.Feature.VIEW_PERMISSIONS,p.Feature.PDF,p.Feature.BUDIBASE_AI],[p.PlanType.ENTERPRISE_BASIC]:[p.Feature.USER_GROUPS,p.Feature.APP_BACKUPS,p.Feature.ENVIRONMENT_VARIABLES,p.Feature.ENFORCEABLE_SSO,p.Feature.AUDIT_LOGS,p.Feature.BRANDING,p.Feature.SYNC_AUTOMATIONS,p.Feature.OFFLINE,p.Feature.APP_BUILDERS,p.Feature.EXPANDED_PUBLIC_API,p.Feature.VIEW_PERMISSIONS,p.Feature.TRIGGER_AUTOMATION_RUN,p.Feature.SCIM,p.Feature.VIEW_READONLY_COLUMNS,p.Feature.AI_CUSTOM_CONFIGS,p.Feature.PWA,p.Feature.CUSTOM_APP_SCRIPTS,p.Feature.PDF,p.Feature.BUDIBASE_AI],[p.PlanType.ENTERPRISE_BASIC_TRIAL]:[p.Feature.USER_GROUPS,p.Feature.APP_BACKUPS,p.Feature.ENVIRONMENT_VARIABLES,p.Feature.ENFORCEABLE_SSO,p.Feature.BRANDING,p.Feature.SYNC_AUTOMATIONS,p.Feature.APP_BUILDERS,p.Feature.EXPANDED_PUBLIC_API,p.Feature.VIEW_PERMISSIONS,p.Feature.TRIGGER_AUTOMATION_RUN,p.Feature.SCIM,p.Feature.VIEW_READONLY_COLUMNS,p.Feature.AI_CUSTOM_CONFIGS,p.Feature.PWA,p.Feature.CUSTOM_APP_SCRIPTS,p.Feature.PDF,p.Feature.BUDIBASE_AI],[p.PlanType.ENTERPRISE]:[p.Feature.USER_GROUPS,p.Feature.APP_BACKUPS,p.Feature.ENVIRONMENT_VARIABLES,p.Feature.ENFORCEABLE_SSO,p.Feature.AUDIT_LOGS,p.Feature.BRANDING,p.Feature.SYNC_AUTOMATIONS,p.Feature.OFFLINE,p.Feature.APP_BUILDERS,p.Feature.EXPANDED_PUBLIC_API,p.Feature.VIEW_PERMISSIONS,p.Feature.TRIGGER_AUTOMATION_RUN,p.Feature.SCIM,p.Feature.VIEW_READONLY_COLUMNS,p.Feature.AI_CUSTOM_CONFIGS,p.Feature.PWA,p.Feature.CUSTOM_APP_SCRIPTS,p.Feature.PDF,p.Feature.BUDIBASE_AI]},UI={[p.PlanType.FREE]:[...xe.CLOUD_FREE_LICENSE.features],[p.PlanType.PREMIUM]:[p.Feature.APP_BACKUPS,p.Feature.BRANDING,p.Feature.APP_BUILDERS,p.Feature.VIEW_PERMISSIONS,p.Feature.PDF],[p.PlanType.PREMIUM_PLUS]:[p.Feature.APP_BACKUPS,p.Feature.BRANDING,p.Feature.SYNC_AUTOMATIONS,p.Feature.APP_BUILDERS,p.Feature.VIEW_PERMISSIONS,p.Feature.TRIGGER_AUTOMATION_RUN,p.Feature.VIEW_READONLY_COLUMNS,p.Feature.BUDIBASE_AI,p.Feature.PDF],[p.PlanType.PREMIUM_PLUS_TRIAL]:[p.Feature.APP_BACKUPS,p.Feature.BRANDING,p.Feature.SYNC_AUTOMATIONS,p.Feature.APP_BUILDERS,p.Feature.VIEW_PERMISSIONS,p.Feature.TRIGGER_AUTOMATION_RUN,p.Feature.VIEW_READONLY_COLUMNS,p.Feature.BUDIBASE_AI,p.Feature.PDF],[p.PlanType.PRO]:[p.Feature.USER_GROUPS,p.Feature.APP_BACKUPS,p.Feature.BRANDING],[p.PlanType.TEAM]:[p.Feature.USER_GROUPS,p.Feature.APP_BACKUPS,p.Feature.BRANDING],[p.PlanType.BUSINESS]:[p.Feature.USER_GROUPS,p.Feature.APP_BACKUPS,p.Feature.ENVIRONMENT_VARIABLES,p.Feature.AUDIT_LOGS,p.Feature.BRANDING,p.Feature.SYNC_AUTOMATIONS,p.Feature.APP_BUILDERS,p.Feature.EXPANDED_PUBLIC_API,p.Feature.VIEW_PERMISSIONS,p.Feature.BUDIBASE_AI,p.Feature.PDF],[p.PlanType.ENTERPRISE_BASIC]:[p.Feature.USER_GROUPS,p.Feature.APP_BACKUPS,p.Feature.ENVIRONMENT_VARIABLES,p.Feature.ENFORCEABLE_SSO,p.Feature.AUDIT_LOGS,p.Feature.BRANDING,p.Feature.SYNC_AUTOMATIONS,p.Feature.OFFLINE,p.Feature.APP_BUILDERS,p.Feature.EXPANDED_PUBLIC_API,p.Feature.VIEW_PERMISSIONS,p.Feature.TRIGGER_AUTOMATION_RUN,p.Feature.SCIM,p.Feature.VIEW_READONLY_COLUMNS,p.Feature.AI_CUSTOM_CONFIGS,p.Feature.BUDIBASE_AI,p.Feature.PWA,p.Feature.CUSTOM_APP_SCRIPTS,p.Feature.PDF],[p.PlanType.ENTERPRISE_BASIC_TRIAL]:[p.Feature.USER_GROUPS,p.Feature.APP_BACKUPS,p.Feature.ENVIRONMENT_VARIABLES,p.Feature.ENFORCEABLE_SSO,p.Feature.BRANDING,p.Feature.SYNC_AUTOMATIONS,p.Feature.APP_BUILDERS,p.Feature.EXPANDED_PUBLIC_API,p.Feature.VIEW_PERMISSIONS,p.Feature.TRIGGER_AUTOMATION_RUN,p.Feature.SCIM,p.Feature.VIEW_READONLY_COLUMNS,p.Feature.AI_CUSTOM_CONFIGS,p.Feature.BUDIBASE_AI,p.Feature.PWA,p.Feature.CUSTOM_APP_SCRIPTS,p.Feature.PDF],[p.PlanType.ENTERPRISE]:[p.Feature.USER_GROUPS,p.Feature.APP_BACKUPS,p.Feature.ENVIRONMENT_VARIABLES,p.Feature.ENFORCEABLE_SSO,p.Feature.AUDIT_LOGS,p.Feature.BRANDING,p.Feature.SYNC_AUTOMATIONS,p.Feature.APP_BUILDERS,p.Feature.EXPANDED_PUBLIC_API,p.Feature.VIEW_PERMISSIONS,p.Feature.TRIGGER_AUTOMATION_RUN,p.Feature.SCIM,p.Feature.VIEW_READONLY_COLUMNS,p.Feature.AI_CUSTOM_CONFIGS,p.Feature.BUDIBASE_AI,p.Feature.PWA,p.Feature.CUSTOM_APP_SCRIPTS,p.Feature.PDF]};function vo(e,t){let r=[];function n(a){let s=a[t];if(!s)throw new Error(`Features do not exist for planType=${t} and hosting=${e}`);return s}switch(e){case p.Hosting.SELF:r=n(NI);break;case p.Hosting.CLOUD:r=n(UI);break}return r}var Va={};T(Va,{UNLIMITED:()=>m,getQuotas:()=>_o});var Y=require("@budibase/types");var l=mt,vp=xe,m=-1,jn=e=>e*1e6,kI={[Y.PlanType.FREE]:{...vp.CLOUD_FREE_LICENSE.quotas},[Y.PlanType.PREMIUM]:{usage:{monthly:{...l.queries(m),...l.automations(1e3),...l.budibaseAICredits(0)},static:{...l.rows(1e4),...l.apps(m),...l.users(m),...l.creators(m),...l.userGroups(0),...l.plugins(m),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(7),...l.appBackupRetentionDays(7)}},[Y.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...l.queries(m),...l.automations(5e3),...l.budibaseAICredits(jn(2))},static:{...l.rows(25e3),...l.apps(m),...l.users(m),...l.creators(m),...l.userGroups(0),...l.plugins(m),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[Y.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...l.queries(m),...l.automations(5e3),...l.budibaseAICredits(jn(2))},static:{...l.rows(25e3),...l.apps(m),...l.users(m),...l.creators(m),...l.userGroups(0),...l.plugins(m),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[Y.PlanType.PRO]:{usage:{monthly:{...l.queries(m),...l.automations(1e3),...l.budibaseAICredits(0)},static:{...l.rows(m),...l.apps(m),...l.users(m),...l.creators(m),...l.userGroups(5),...l.plugins(m),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(7),...l.appBackupRetentionDays(7)}},[Y.PlanType.TEAM]:{usage:{monthly:{...l.queries(m),...l.automations(5e3),...l.budibaseAICredits(0)},static:{...l.rows(m),...l.apps(m),...l.users(m),...l.creators(m),...l.userGroups(10),...l.plugins(m),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(90)}},[Y.PlanType.BUSINESS]:{usage:{monthly:{...l.queries(m),...l.automations(1e4),...l.budibaseAICredits(0)},static:{...l.rows(5e4),...l.apps(m),...l.users(m),...l.creators(m),...l.userGroups(50),...l.plugins(m),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(365),...l.appBackupRetentionDays(365)}},[Y.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...l.queries(m),...l.automations(m),...l.budibaseAICredits(jn(4))},static:{...l.rows(m),...l.apps(m),...l.users(m),...l.creators(m),...l.userGroups(m),...l.plugins(m),...l.customAIConfigurations(m)}},constant:{...l.automationLogRetentionDays(m),...l.appBackupRetentionDays(m)}},[Y.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...l.queries(m),...l.automations(m),...l.budibaseAICredits(jn(4))},static:{...l.rows(m),...l.apps(m),...l.users(m),...l.creators(m),...l.userGroups(m),...l.plugins(m),...l.customAIConfigurations(m)}},constant:{...l.automationLogRetentionDays(15),...l.appBackupRetentionDays(15)}},[Y.PlanType.ENTERPRISE]:{usage:{monthly:{...l.queries(m),...l.automations(m),...l.budibaseAICredits(jn(4))},static:{...l.rows(m),...l.apps(m),...l.users(m),...l.creators(m),...l.userGroups(m),...l.plugins(m),...l.customAIConfigurations(m)}},constant:{...l.automationLogRetentionDays(m),...l.appBackupRetentionDays(m)}}},DI={[Y.PlanType.FREE]:{...vp.SELF_FREE_LICENSE.quotas},[Y.PlanType.PREMIUM]:void 0,[Y.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...l.queries(m),...l.automations(m),...l.budibaseAICredits(0)},static:{...l.rows(m),...l.apps(m),...l.users(m),...l.creators(m),...l.userGroups(0),...l.plugins(m),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[Y.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...l.queries(m),...l.automations(m),...l.budibaseAICredits(0)},static:{...l.rows(m),...l.apps(m),...l.users(m),...l.creators(m),...l.userGroups(0),...l.plugins(m),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[Y.PlanType.PRO]:{usage:{monthly:{...l.queries(m),...l.automations(m),...l.budibaseAICredits(0)},static:{...l.rows(m),...l.apps(m),...l.users(m),...l.creators(m),...l.userGroups(5),...l.plugins(m),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(7),...l.appBackupRetentionDays(7)}},[Y.PlanType.TEAM]:{usage:{monthly:{...l.queries(m),...l.automations(m),...l.budibaseAICredits(0)},static:{...l.rows(m),...l.apps(m),...l.users(m),...l.creators(m),...l.userGroups(10),...l.plugins(m),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(90)}},[Y.PlanType.BUSINESS]:{usage:{monthly:{...l.queries(m),...l.automations(m),...l.budibaseAICredits(0)},static:{...l.rows(m),...l.apps(m),...l.users(m),...l.creators(m),...l.userGroups(50),...l.plugins(m),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(90),...l.appBackupRetentionDays(365)}},[Y.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...l.queries(m),...l.automations(m),...l.budibaseAICredits(0)},static:{...l.rows(m),...l.apps(m),...l.users(m),...l.creators(m),...l.userGroups(m),...l.plugins(m),...l.customAIConfigurations(m)}},constant:{...l.automationLogRetentionDays(m),...l.appBackupRetentionDays(m)}},[Y.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...l.queries(m),...l.automations(m),...l.budibaseAICredits(0)},static:{...l.rows(m),...l.apps(m),...l.users(m),...l.creators(m),...l.userGroups(m),...l.plugins(m),...l.customAIConfigurations(m)}},constant:{...l.automationLogRetentionDays(15),...l.appBackupRetentionDays(15)}},[Y.PlanType.ENTERPRISE]:{usage:{monthly:{...l.queries(m),...l.automations(m),...l.budibaseAICredits(0)},static:{...l.rows(m),...l.apps(m),...l.users(m),...l.creators(m),...l.userGroups(m),...l.plugins(m),...l.customAIConfigurations(m)}},constant:{...l.automationLogRetentionDays(m),...l.appBackupRetentionDays(m)}}};function _o(e,t){let r;function n(a){let s=a[t];if(!s)throw new Error(`Quotas do not exist for planType=${t} and hosting=${e}`);return s}switch(e){case Y.Hosting.SELF:r=n(DI);break;case Y.Hosting.CLOUD:r=n(kI);break}return JSON.parse(JSON.stringify(r))}var qr={};T(qr,{appExists:()=>BI,encoding:()=>Lr});var _p=require("@budibase/backend-core");async function BI(e){return(await _p.db.getAllApps({all:!0,idsOnly:!0})).includes(e)}var Lr={};T(Lr,{base64ToObject:()=>GI,objectToBase64:()=>MI});function MI(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}function GI(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}var sm=require("@budibase/types"),Vr=require("@budibase/backend-core"),om=F(Dd()),im=F(Ho());async function gO(e){await Ne.save({offlineLicenseToken:e}),await Jt()}async function hO(){await Ne.save({offlineLicenseToken:void 0}),await Jt()}async function um(){return(await Ne.get()).offlineLicenseToken}async function Zo(){let t=(await Vr.installation.getInstall()).installId,r=Vr.context.getTenantId(),n=await Vr.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:n}}async function yO(){let e=await Zo();return Lr.objectToBase64(e)}function bO(e){return Lr.base64ToObject(e)}function cm(e){let t=Date.now(),r=new Date(e.expireAt).getTime();if(t>r)throw new Error(`Offline license has expired. expireAt=${e.expireAt}`)}async function pm(e){let t=await Zo();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}function lm(e){let t=e.plan.type,r=sm.Hosting.SELF,n=vo(r,t),a=_o(r,t);return e.features=(0,om.default)(e.features,n),e.quotas=(0,im.default)(e.quotas,a),e}async function zo(){try{let e=await um();if(e){let t=await Gn(e);return cm(t),await pm(t),lm(t)}}catch(e){console.error("Error retrieving offline license",e)}}var ia={};T(ia,{deleteDevLicense:()=>wO,getOfflineLicense:()=>_O,writeDevLicenseToDisk:()=>IO});var dm=require("@budibase/backend-core"),Xo=require("path"),fm=require("os"),Xt=F(require("fs"));var AO=dm.env.isTest()?".budibase-test":".budibase",Jo=(0,Xo.join)((0,fm.tmpdir)(),AO),vO="dev_license.txt",oa=(0,Xo.join)(Jo,vO);if(!Xt.default.existsSync(Jo))try{Xt.default.mkdirSync(Jo)}catch{}function _O(){try{if(Xt.default.existsSync(oa)){let e=Xt.default.readFileSync(oa,{encoding:"utf-8"});return Gn(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}function IO(e){console.log(`Writing license to: ${oa}`),Xt.default.writeFileSync(oa,e,{encoding:"utf-8"})}function wO(){Xt.default.rmSync(oa,{force:!0})}var ti=async()=>{if(ei.env.OFFLINE_MODE)return zo();let e=await Pr();return e||(e=ia.getOfflineLicense()),e},ri=e=>yo(e),ni=()=>ei.env.SELF_HOSTED?xe.SELF_FREE_LICENSE:xe.CLOUD_FREE_LICENSE;var si={};T(si,{activateLicenseKey:()=>SO,deleteLicenseKey:()=>xO,getLicenseKey:()=>ai});async function SO(e){await bo(e),await Ne.save({licenseKey:e}),await Jt()}async function ai(){return(await Ne.get()).licenseKey}async function xO(){await Ne.save({licenseKey:void 0}),await Jt()}var er=require("@budibase/backend-core"),us=F(require("dd-trace")),mm=3600,Jt=async()=>{await ym(),await hm()},gm=async(e,t)=>{let{populateLicense:r=ti,populateFreeLicense:n=ni}=t||{};return await us.default.trace("getCachedLicense",async a=>{let s=er.context.getLicense();if(s)return a.addTags({foundInContext:!0,features:s.features,plan:s.plan,quotas:s.quotas}),s;let o=er.tenancy.getTenantId(),i=await no(),u=await i.get(o);return a.addTags({tenantId:o,foundInCache:!!u}),u?(a.addTags({foundInCache:!0,refreshedAt:u.refreshedAt,features:u.features,plan:u.plan,quotas:u.quotas}),u):(u=await us.default.trace("populateLicense",async()=>await r(o)),a.addTags({populatedLicense:!!u}),u||(u=us.default.trace("populateFreeLicense",()=>n(e,o)),a.addTags({populatedFreeLicense:!!u})),u.refreshedAt=new Date().toISOString(),a.addTags({refreshedAt:u.refreshedAt,features:u.features,plan:u.plan,quotas:u.quotas,expirySeconds:mm}),await i.store(o,u,mm),u)})};er.env.isJest()&&(gm=jest.fn());var hm=gm,ym=async()=>{let e=er.tenancy.getTenantId();await(await no()).delete(e)};async function ge(e,t){Array.isArray(e)||(e=[e]),t||(t=await Qe.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}async function cs(e,t){if(!await ge(e,t))throw new gt.FeatureDisabledError(`${e} is not currently enabled`,e)}async function oi(e,t){if(!await ge(e,t)){let r=e.join(", ");throw new gt.FeatureDisabledError(`${r} are not currently enabled`,r)}}function Ee(e){return async(...t)=>(await cs(me.Feature.APP_BACKUPS),e(...t))}async function ii(){return ge(me.Feature.APP_BACKUPS)}async function ui(){return ge(me.Feature.BRANDING)}async function bm(){return ge(me.Feature.ENFORCEABLE_SSO)}async function EO(){return ge(me.Feature.SYNC_AUTOMATIONS)}async function RO(){return ge(me.Feature.TRIGGER_AUTOMATION_RUN)}async function tr(){return ge(me.Feature.APP_BUILDERS)}async function ps(){return ge(me.Feature.AUDIT_LOGS)}async function ci(){return ge(me.Feature.USER_GROUPS)}function OO(){return ge(me.Feature.PWA)}async function ht(){return ge(me.Feature.EXPANDED_PUBLIC_API)}async function CO(e){if(gt.env.ENABLE_SSO_MAINTENANCE_MODE||!await bm())return!1;let r;return e?.config?r=e.config:r=await gt.configs.getSettingsConfig(),!!r.isSSOEnforced}var pi=async()=>{let e=me.Feature.SCIM,t=await ge(e),r=await gt.configs.getSCIMConfig();if(!t||!r?.enabled)throw new gt.FeatureDisabledError(`${e} is not currently enabled`,e);return!0};async function PO(){return ge(me.Feature.VIEW_PERMISSIONS)}async function LO(){return ge(me.Feature.VIEW_READONLY_COLUMNS)}var qO={faviconUrl:void 0,faviconUrlEtag:void 0,emailBrandingEnabled:!0,testimonialsEnabled:!0,platformTitle:void 0,loginHeading:void 0,loginButton:void 0,metaDescription:void 0,metaImageUrl:void 0,metaTitle:void 0};async function NO(e){return await ui()?{faviconUrl:e.faviconUrl,faviconUrlEtag:e.faviconUrlEtag,emailBrandingEnabled:e.emailBrandingEnabled,testimonialsEnabled:e.testimonialsEnabled,platformTitle:e.platformTitle,loginHeading:e.loginHeading,loginButton:e.loginButton,metaDescription:e.metaDescription,metaImageUrl:e.metaImageUrl,metaTitle:e.metaTitle}:qO}var di={};T(di,{enrichAIConfig:()=>li});var Am=require("@budibase/backend-core"),UO="budibase_ai";async function li(e){if(Am.env.SELF_HOSTED)return e;for(let t of Object.values(e.config))if(t.provider==="BudibaseAI")return e;return e.config[UO]={provider:"BudibaseAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-4o-mini",name:"Budibase AI"},e}var ot={};T(ot,{addApp:()=>GO,addAutomation:()=>VO,addGroup:()=>mi,addPlugin:()=>hi,addRow:()=>jO,addRows:()=>$O,addUsers:()=>fs,bustCache:()=>uo,decrement:()=>yt,decrementMany:()=>ua,getCurrentUsageValues:()=>Yc,getLicensedQuota:()=>_m,getQuotaUsage:()=>Kt,increment:()=>Ke,incrementBudibaseAICredits:()=>Ai,incrementMany:()=>rr,removeApp:()=>FO,removeGroup:()=>gi,removePlugin:()=>yi,removeRow:()=>QO,removeRows:()=>WO,removeUsers:()=>Zr,set:()=>fi,setAllUsage:()=>po,setAppUsageValue:()=>co,setUsage:()=>Wc,setUsagePerApp:()=>Vc,updatePluginCount:()=>bi,updateUsage:()=>Kr,usageLimitIsExceeded:()=>MO,utils:()=>In});var re=require("@budibase/types");var Ve=require("@budibase/backend-core");var Ke=(e,t,r)=>vm({change:1,name:e,type:t,opts:r}),rr=e=>vm(e),vm=async e=>{let t=Array.isArray(e)?e:[e];await Kr(t.map(n=>({usageChange:n.change,name:n.name,type:n.type,opts:{dryRun:!0,suppressErrorLog:n.opts?.suppressErrorLog,id:n.opts?.id}})));let r=[];for(let n of t){let a=n.opts?.fn;a&&r.push(await a())}return await Kr(t.map(n=>({usageChange:n.change,name:n.name,type:n.type,opts:{dryRun:!1,valueFn:n.opts?.valueFn,suppressErrorLog:n.opts?.suppressErrorLog,id:n.opts?.id}}))),r[0]},yt=(e,t,r={})=>Kr({usageChange:-1,name:e,type:t,opts:r}),ua=e=>{let t=Array.isArray(e)?e:[e];return Kr(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},fi=async(e,t,r)=>et.setUsage(r,e,t),kO=(e,t,r)=>{if(e==re.QuotaUsageType.STATIC){let n=r.usageQuota.triggers;return n?n[t]||{}:{}}else{let n=et.utils.getCurrentMonthString(),a=r.monthly[n].triggers;return a?a[t]||{}:{}}},DO=async(e,t,r,n)=>{try{await Ve.locks.doWithLock({type:re.LockType.TRY_ONCE,name:re.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let a={percentage:r,name:t.name};n&&(a.resetDate=n),await Pt.triggerQuota(a)})}catch(a){Ve.logging.logAlert("Error triggering quota",a)}},BO=async(e,t,r,n)=>{let a=await Kt(),s=e===re.QuotaUsageType.MONTHLY?a.quotaReset:void 0,o=await kO(e,t,a),i=n.triggers,u=r/n.value*100;u>100&&(u=100);for(let[d,f]of i.entries())if(u>=f&&n.value!==mt.UNLIMITED){if(!o[f]){o[f]=new Date().toISOString();let A=i[d+1]||100;(!(u>=A)||u===f)&&await DO(t,n,u,s)}}else o[f]=void 0;return o},Kr=async e=>{let t=Ve.tenancy.getTenantId(),r=Array.isArray(e)?e:[e],n=null,a,s=[],o={},i={},u={},d={};for(let g of r){try{n=Ve.context.getAppId()}catch{}if(re.APP_QUOTA_NAMES.includes(g.name)&&!n)throw new Error("App context required for quota update");try{a=await _m(re.QuotaType.USAGE,g.name,g.type),s.push(a);let{total:I,app:q,breakdown:G}=await et.getCurrentUsageValues(g.type,g.name,g.opts?.id);I+=g.usageChange,q!=null&&(q+=g.usageChange),G!=null&&(G+=g.usageChange);let k={};if(g.opts?.dryRun||(k=await BO(g.type,g.name,I,a),d={...d,[g.name]:k}),a.value!==mt.UNLIMITED&&I>a.value&&g.usageChange>0)throw new Ve.UsageLimitError(`Licensed ${a.name} of ${a.value} has been exceeded`,a.name);if(I=Math.max(0,I),q&&(q=Math.max(0,q)),G&&(G=Math.max(0,G),u={...u,[g.name]:G}),!g.opts?.dryRun){let N=g.opts?.valueFn;N&&(I=await N(),q=I),o={...o,[g.name]:I},i={...i,[g.name]:q}}}catch(I){throw g.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${g.name}`,I),I}}let f=r.filter(g=>!g.opts?.dryRun).map(g=>({name:g.name,type:g.type,values:{total:o[g.name],app:i[g.name],breakdown:u[g.name],triggers:d[g.name]},opts:{...g.opts,tenantId:t}}));f.length>0&&await et.setAllUsage(f)},_m=async(e,t,r)=>{let n=await Qe.getCachedLicense();if(!n){let a=Ve.tenancy.getTenantId();throw new Error("License not found for tenant id "+a)}if(r&&(0,re.isStaticQuota)(e,r,t))return n.quotas[e][r][t];if(r&&(0,re.isMonthlyQuota)(e,r,t))return n.quotas[e][r][t];if((0,re.isConstantQuota)(e,t))return n.quotas[e][t];throw new Error("Invalid quota type")},MO=async(e,t)=>{try{return await Kr({usageChange:1,name:e,type:t,opts:{dryRun:!0}}),!1}catch(r){if(r.code===re.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw r}};var Yr=require("@budibase/types"),Im=require("@budibase/backend-core"),wm=async()=>{let e=await Im.db.getAllApps({dev:!0});return e?e.length:0},GO=async(e,{appId:t}={})=>Ke(Yr.StaticQuotaName.APPS,Yr.QuotaUsageType.STATIC,{fn:e,valueFn:wm,id:t}),FO=async({appId:e}={})=>yt(Yr.StaticQuotaName.APPS,Yr.QuotaUsageType.STATIC,{valueFn:wm,id:e});var at=require("@budibase/types"),jO=async(e,{tableId:t}={})=>Ke(at.StaticQuotaName.ROWS,at.QuotaUsageType.STATIC,{fn:e,id:t}),QO=async({tableId:e}={})=>yt(at.StaticQuotaName.ROWS,at.QuotaUsageType.STATIC,{id:e}),$O=async(e,t,{tableId:r}={})=>rr({change:e,name:at.StaticQuotaName.ROWS,type:at.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),WO=async(e,{tableId:t}={})=>ua({change:e,name:at.StaticQuotaName.ROWS,type:at.QuotaUsageType.STATIC,opts:{id:t}});var ds=require("@budibase/types"),VO=async(e,{automationId:t}={})=>Ke(ds.MonthlyQuotaName.AUTOMATIONS,ds.QuotaUsageType.MONTHLY,{fn:e,id:t});var Hr=require("@budibase/types"),mi=async e=>Ke(Hr.StaticQuotaName.USER_GROUPS,Hr.QuotaUsageType.STATIC,{fn:e}),gi=async()=>yt(Hr.StaticQuotaName.USER_GROUPS,Hr.QuotaUsageType.STATIC);var Nt=require("@budibase/types"),hi=async e=>Ke(Nt.StaticQuotaName.PLUGINS,Nt.QuotaUsageType.STATIC,{fn:e}),yi=async()=>yt(Nt.StaticQuotaName.PLUGINS,Nt.QuotaUsageType.STATIC),bi=async e=>fi(Nt.StaticQuotaName.PLUGINS,Nt.QuotaUsageType.STATIC,e);var st=require("@budibase/types"),ca=require("@budibase/backend-core");var fs=async(e,t,r)=>{let n=[{change:e,name:st.StaticQuotaName.USERS,type:st.QuotaUsageType.STATIC,opts:{fn:r,valueFn:ca.users.getUserCount}}];t>0&&n.push({change:t,name:st.StaticQuotaName.CREATORS,type:st.QuotaUsageType.STATIC,opts:{valueFn:ca.users.getCreatorCount}});let a=await rr(n);return await Pr(),a},Zr=async(e,t)=>{let r=[{change:e,name:st.StaticQuotaName.USERS,type:st.QuotaUsageType.STATIC,opts:{valueFn:ca.users.getUserCount}}];t>0&&r.push({change:t,name:st.StaticQuotaName.CREATORS,type:st.QuotaUsageType.STATIC,opts:{valueFn:ca.users.getCreatorCount}}),await ua(r),await Pr()};var ms=require("@budibase/types"),Ai=async e=>rr({change:e,name:ms.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:ms.QuotaUsageType.MONTHLY});var bt={};T(bt,{addAppBuilder:()=>zO,db:()=>it,removeAppBuilder:()=>JO});var la=require("@budibase/backend-core");var Z={};T(Z,{addAppBuilder:()=>Si,addUsers:()=>_i,adjustGroupCreatorsQuotas:()=>ZO,cleanupApp:()=>HO,enrichUserRolesFromGroups:()=>YO,fetch:()=>pa,get:()=>ar,getBulk:()=>Cm,getGroupBuilderAppIds:()=>Om,getGroupRoleId:()=>KO,remove:()=>vi,removeAppBuilder:()=>xi,removeUsers:()=>Ii,save:()=>zr,updateGroupApps:()=>wi});var U=require("@budibase/backend-core");var Sm=require("@budibase/backend-core"),gs=class extends Sm.HTTPError{constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function Em(e,t){try{let r=[];for(let i of e)if(i.roles){let u=i.roles[U.db.getProdAppID(t)];u&&r.push(u)}let n=await Promise.all(r.map(async i=>({[i]:await U.roles.roleToNumber(i)}))),a,s,o={};n.forEach(i=>{let[u,d]=Object.entries(i)[0];o[u]={roleId:u,roleNum:d}});for(let{roleId:i,roleNum:u}of Object.values(o))(s===void 0||u>s)&&(s=u,a=i);return a}catch(r){throw U.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}async function Rm(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await K.getBulk(e,{enriched:!1}),t}async function Om(e,t){if(!e.userGroups)return[];let r=await Rm(e.userGroups,t?.groups),n=t?.appId?U.db.getProdAppID(t?.appId):null,a=[];for(let s of r){let o=s.builder?.apps;n&&o?.includes(n)?a.push(n):n||(a=a.concat(o||[]))}return[...new Set(a)]}async function KO(e,t,r){if(!e.userGroups)return null;let n=await Rm(e.userGroups,r?.groups),a=U.db.getProdAppID(t);return e.roles?.[a]?e.roles[a]:(n=n.filter(s=>s?.roles?Object.keys(s.roles).includes(a):!1),await Em(n,t))}async function YO(e){if(!e||!e.userGroups)return e;let t=await Cm(e.userGroups,{enriched:!1}),r=[];for(let a of t)a?.roles&&(r=r.concat(Object.keys(a.roles)));r=[...new Set(r)];for(let a of r)await U.context.doInAppContext(a,async()=>{if(e.roles[a])return;let s=await Em(t,a);s&&(e.roles[a]=s)});let n=await Om(e,{groups:t});if(n.length&&!e.builder?.global){let a=e.builder?.apps||[];e.builder={apps:a.concat(n)}}return e}async function pa(){return await K.fetch()}async function ar(e){return await K.get(e)}async function Cm(e,t={enriched:!0}){return await K.getBulk(e,t)}async function xm(e){if(await K.getByName(e))throw new gs(e)}async function Tm(e){let t=await K.getGroupUsers(e._id);if(!t.length)return 0;let n=await U.tenancy.getGlobalDB().getMultiple(t.map(s=>s._id));return(await U.userUtils.creatorsInList(n)).filter(s=>s).length}async function zr(e){let t=[],r=!e._id,n=0;if(delete e.users,!e._id)e._id=K.generateUserGroupID(),await xm(e.name),t.push(U.events.group.created(e));else{let s=await K.get(e._id);if(s.name!==e.name&&await xm(e.name),t.push(U.events.group.updated(e)),JSON.stringify(s.roles)!==JSON.stringify(e.roles)){let o=s.users?.length||0,i=0;o>0&&(i=await Tm(s)),Object.values(e.roles).includes("CREATOR")?n=o-i:n=-o,t.push(U.events.group.permissionsEdited(e))}}await Promise.all(t);let a=()=>K.save(e);if(r)return await mi(a);{let s=await a();if(n>0)await fs(0,n);else if(n<0){let o=await Tm(e),i=Math.abs(n)-o;i>0&&await Zr(0,i)}return s}}async function vi(e,t){let r;try{r=await K.get(e)}catch{throw new Error("Group not found")}let n=Object.values(r.roles||{}).includes("CREATOR"),a=()=>{};if(n){let o=U.tenancy.getGlobalDB(),i=await K.getGroupUsers(e),d=(await Promise.all(i.map(I=>o.get(I._id)))).map(I=>({...I,userGroups:I.userGroups.filter(q=>q!==e)})),g=(await U.userUtils.creatorsInList(d)).filter(I=>I).length,A=i.length-g;A&&(a=()=>Zr(0,A))}let s=await K.destroy(e,t);return await U.events.group.deleted(r),await gi(),await a(),s}async function _i(e,t){let r=await K.get(e),n=await U.users.bulkGetGlobalUsersById(t),a=[];for(let u of n)u.userGroups||(u.userGroups=[]),u.userGroups.includes(e)||a.push(u);if(!a.length)return a;let s=a.map(u=>({...u,userGroups:[...u?.userGroups||[],e]}));if(await U.users.bulkUpdateGlobalUsers(s),Object.values(r.roles||{}).includes("CREATOR")){let d=(await U.userUtils.creatorsInList(a)).filter(g=>g).length,f=a.length-d;f&&await fs(0,f)}let i=[];for(let u of t)i.push(U.cache.user.invalidateUser(u));return await Promise.all(i),await U.events.group.usersAdded(s.length,r),s}async function Ii(e,t){let r=await K.get(e),n=await U.users.bulkGetGlobalUsersById(t),a=[];for(let i of n){if(!i.userGroups||!i.userGroups.includes(e))continue;let u=i.userGroups.indexOf(e);i.userGroups.splice(u,1),a.push(i)}if(await U.users.bulkUpdateGlobalUsers(a),Object.values(r.roles||{}).includes("CREATOR")){let u=(await U.userUtils.creatorsInList(a)).filter(f=>f).length,d=a.length-u;d&&await Zr(0,d)}let o=[];for(let i of t)o.push(U.cache.user.invalidateUser(i));return await Promise.all(o),a.length&&await U.events.group.usersDeleted(a.length,r),a}async function wi(e,t){let r=await ar(e);if(r.roles||(r.roles={}),t.appsToAdd)for(let n of t.appsToAdd)r.roles[n.appId]=n.roleId;if(t.appsToRemove)for(let n of t.appsToRemove)delete r.roles[n.appId];return await zr(r)}async function HO(e){let t=await pa(),r=[];for(let n of t)!n.roles||!n.roles[e]||(delete n.roles[e],r.push(n));return await K.bulkSave(r)}async function Si(e,t){if(!await tr())throw new Error("Feature not enabled, please check license");let r=U.db.getProdAppID(t),n=await ar(e);n.builder??={apps:[]},n.builder.apps.includes(t)||(n.builder.apps.push(r),await zr(n))}async function xi(e,t){if(!await tr())throw new Error("Feature not enabled, please check license");let r=U.db.getProdAppID(t),n=await ar(e);n.builder?.apps.includes(t)&&(n.builder.apps=n.builder.apps.filter(a=>a!==r),await zr(n))}async function ZO(){if(!await ci()){let e=U.tenancy.getGlobalDB(),r=(await pa()||[]).filter(n=>Object.values(n?.roles||{}).includes("CREATOR"));for(let n of r){let a=await K.getGroupUsers(n._id),o=(await Promise.all(a.map(f=>e.get(f._id)))).map(f=>({...f,userGroups:f.userGroups.filter(g=>g!==n._id)})),u=(await U.userUtils.creatorsInList(o)).filter(f=>f).length,d=a.length-u;await K.save({...n,roles:{}}),d&&await Zr(0,d)}}}la.users.UserDB.init(ot,Z,We);var it=la.users.UserDB;async function zO(e,t){if(!await tr())throw new Error("Feature not enabled, please check license");await la.users.addAppBuilder(e,t)}async function JO(e,t){if(!await tr())throw new Error("Feature not enabled, please check license");await la.users.removeAppBuilder(e,t)}var ys={};T(ys,{logs:()=>qi});var qi={};T(qi,{logSearch:()=>iC,oldestLogDate:()=>Dm,storeLog:()=>uC});var km=require("@budibase/types"),hs=require("@budibase/backend-core");var Ut=require("@budibase/types");var ie=require("@budibase/backend-core");var Pm=require("@budibase/backend-core");async function Lm(e,t){let r,n=5,a=!1,s,o=!0;for(;n>0;n--)try{o?s=await e():s=await exports.randomDelay(e),a=!0;break}catch(i){r=i}return a||Pm.logging.logWarn(`Failed to backoff: ${t}`,r),s}var{SEPARATOR:At,UNICODE_MAX:XO,DocumentType:qm,AutomationViewMode:Ti,ViewName:eC,getQueryIndex:tC}=ie.db,rC=new Date(0).toISOString(),nC=100,Ei=async()=>Ga(Ut.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS);function Nm(e,t,{status:r,automationId:n}={},a={}){let s=n?`${n}${At}`:"",o=r?`${r}${At}`:"",i;return r&&n?i=`${Ti.ALL}${At}${o}${s}`:r?i=`${Ti.STATUS}${At}${o}`:n?i=`${Ti.AUTOMATION}${At}${s}`:i=`${qm.AUTOMATION_LOG}${At}`,{...a,descending:!0,startkey:`${i}${t}${XO}`,endkey:`${i}${e}`}}function Ri(e){let t=Ut.AutomationStatus.SUCCESS,r=!0;for(let n of e.steps){let a=n.outputs?.status?.toLowerCase(),s=a==="stopped_error";if(r&&!s){r=!1;continue}if(s){t=Ut.AutomationStatus.STOPPED_ERROR;break}else if(n.outputs?.success){if(a==="stopped"){t=Ut.AutomationStatus.STOPPED;break}}else{t=Ut.AutomationStatus.ERROR;break}}return t}function aC(e,t,r){return`${qm.AUTOMATION_LOG}${At}${e}${At}${r}${At}${t}`}async function Oi(e,t,r={docs:!0}){let n=ie.context.getProdAppDB();await n.exists()||(n=ie.context.getDevAppDB());let a={status:r.status},s=r?.limit?r.limit:r?.paginate?9+1:void 0,o=Nm(e,t,a,{include_docs:r.docs,limit:s});r?.page&&(o.startkey=r.page);let i=await n.allDocs(o);return Sn(i,{paginate:r?.paginate,pageSize:9})}async function Ci(e,t,r={}){let n=ie.context.getProdAppDB();await n.exists()||(n=ie.context.getDevAppDB());let a;try{let s={automationId:r?.automationId,status:r?.status},o=Nm(e,t,s,{include_docs:!0,limit:9+1});r?.page&&(o.startkey=r.page),a=await n.query(tC(eC.AUTOMATION_LOGS),o)}catch(s){if(s!=null&&(s.name==="not_found"||s.error==="not_found"))return await sp(),Ci(e,t,r);throw s}return Sn(a,{paginate:!0,pageSize:9})}async function Um(e,t){let r=ie.context.getProdAppDB(),n=e._id,a=e.name,s=Ri(t),o=new Date().toISOString(),i=aC(o,s,n),u={...t,automationId:n,status:s,automationName:a,createdAt:o,_id:i};return await r.put(u),i}async function Pi(e,{clearing:t}={clearing:!1}){let r=ie.context.getProdAppDB();await Lm(async()=>{let n=await r.get(ie.db.DocumentType.APP_METADATA);for(let a of e){let s=a.split(ie.db.SEPARATOR),o=`${s[s.length-3]}${ie.db.SEPARATOR}${s[s.length-2]}`,i={};n.automationErrors&&(i=n.automationErrors),Array.isArray(i[o])||(i[o]=[]);let u=i[o].indexOf(a);t&&u!==-1?i[o].splice(u,1):i[o].push(a),i[o].length===0&&delete i[o],n.automationErrors=i}await r.put(n),await ie.cache.app.invalidateAppMetadata(n.appId,n)},"Failed to update app metadata with automation log error")}async function sC(){let e=await Ei();try{return await Oi(rC,e,{docs:!1,paginate:!1,limit:nC})}catch{return{data:[],hasNextPage:!1}}}async function Li(){let e=ie.context.getProdAppDB();try{let t=await sC();if(!t.data||t.data.length===0)return;let r=t.data.map(a=>({_id:a.id,_rev:a.value.rev,_deleted:!0})),n=t.data.filter(a=>{let s=a.id.split(ie.db.SEPARATOR);return s[s.length-1]===Ut.AutomationStatus.ERROR}).map(a=>a.id);await e.bulkDocs(r),n.length&&await Pi(n,{clearing:!0})}catch(t){ie.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}var Dm=Ei;async function oC(e,t,r,n){let a,s=new Date().toISOString(),o=await Dm();return(!e||e<o)&&(e=o),r||t?a=await Ci(e,s,{automationId:r,status:t,page:n}):a=await Oi(e,s,{status:t,page:n,docs:!0,paginate:!0}),a}async function iC(e){return await Li(),await oC(e.startDate,e.status,e.automationId,e.page)}async function uC(e,t){if(!hs.db.isProdAppID(hs.context.getAppId()))return;let r=Ri(t),n=await Um(e,t);r===km.AutomationStatus.ERROR&&await Pi([n]),await Li()}var bs={};T(bs,{checkPluginQuotas:()=>lC,deletePlugin:()=>pC,storePlugin:()=>cC});var Fm=require("@budibase/types"),ne=require("@budibase/backend-core");var Bm=F(require("fs")),Mm=require("path");function Gm(e,t){return Bm.default.readFileSync((0,Mm.join)(e,t),"utf8")}async function cC(metadata,directory,source){let db=ne.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=ne.objectStore.getPluginS3Dir(name),files=await ne.objectStore.uploadDirectory(ne.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===Fm.PluginType.DATASOURCE){let js=Gm(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=ne.db.generatePluginID(name),rev;try{rev=(await db.get(pluginId))._rev}catch(e){rev=void 0}let doc={_id:pluginId,_rev:rev,...metadata,name,version,hash,description,source};iconFileName&&(doc.iconFileName=iconFileName),source&&(doc={...doc,source});let write=async()=>{let e=await db.put(doc);return await ne.events.plugin.imported(doc),{...doc,_rev:e.rev}};return rev?await write():await hi(write)}async function pC(e){let t=ne.tenancy.getGlobalDB();try{let r=await t.get(e),n=ne.objectStore.getPluginS3Dir(r.name);await ne.objectStore.deleteFolder(ne.objectStore.ObjectStoreBuckets.PLUGINS,n),await t.remove(e,r._rev),await ne.events.plugin.deleted(r),await yi()}catch(r){let n=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${n}`)}}async function lC(){let e=ne.tenancy.getGlobalDB();try{let r=(await e.allDocs(ne.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await bi(r)}catch(t){ne.logging.logAlert("Unable to retrieve plugins for quota check",t)}}var ut={};T(ut,{fetch:()=>fC,fetchValues:()=>mC,isEncryptionKeyAvailable:()=>dC,isValid:()=>$m,remove:()=>hC,update:()=>gC});var da=require("@budibase/types"),jm=require("@budibase/backend-core");function dC(){return!!jm.env.ENCRYPTION_KEY}async function fC(){let e=await Zt.get();return Object.keys(e.variables)}async function mC(e){let r=(await Zt.get()).variables,n={};for(let[a,s]of Object.entries(r))switch(e){case da.AppEnvironment.DEVELOPMENT:n[a]=s.development;break;case da.AppEnvironment.PRODUCTION:default:n[a]=s.production;break}return n}async function Qm(e){if(!(await nt.cache.getCachedLicense()).features.includes(da.Feature.ENVIRONMENT_VARIABLES))throw new Error("User does not have access to environment variables feature.");let r=await Zt.get();r.variables=e(r.variables),await Zt.update(r)}async function gC(e,t){if($m(e))await Qm(n=>(n[e]=t,n));else throw new Error("Variable name has characters that are not allowed")}async function hC(e){await Qm(t=>(delete t[e],t))}function $m(e){return/^[a-zA-Z0-9-_]+$/.test(e)}var kt={};T(kt,{definitions:()=>EC,download:()=>TC,fetch:()=>xC,write:()=>wC});var vs=require("@budibase/types");var X=require("@budibase/backend-core"),Ye=require("@budibase/types");var Wm=require("memorystream"),Vm=new X.sql.Sql(Ye.SqlClient.SQL_LITE);async function yC(e,t,r){let n={operation:Ye.Operation.READ,table:Cr.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:Ye.SortOrder.DESCENDING,type:Ye.SortType.STRING}}},a=Vm._query(n);if(Array.isArray(a))throw new Error("Cannot execute multiple queries for audit log search");return{sql:a.sql,bindings:a.bindings}}function bC(e){return`${X.DocumentType.AUDIT_LOG}${X.SEPARATOR}${e}${X.SEPARATOR}${X.utils.newid()}`}async function Km(e){e._id||(e._id=bC(e.timestamp)),e.type||(e.type=Ye.AUDIT_LOG_TYPE);try{let r=await X.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){X.logging.logAlert("Failed to write audit log",t)}}async function Ni(e,t,r){t||(t=1);let n=X.context.getAuditLogsDB();try{let a=9+1,s=await yC(e,t,a),o=Cr.searchTable(),i=Vm.convertJsonStringColumns(o,await n.sql(s.sql,s.bindings)),u;i.length>a&&(u=i.pop());let d={rows:i,hasNextPage:!!u};return d.hasNextPage&&(d.bookmark=t+1),d}catch(a){if(a.status===404&&!r?.isRetry)return await AC(),await Hc(),await Ni(e,t,{isRetry:!0});throw a}}async function AC(){let e=X.context.getAuditLogsDB(),r=(await e.allDocs(X.db.getDocParams(X.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(n=>n.doc).filter(n=>n&&!n.type).map(n=>({...n,type:Ye.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}function Ym(e){let t=X.context.getAuditLogsDB(),r=new Wm,n=t.dump(r,{filter:s=>{let o=s;if(!o._id?.startsWith(X.DocumentType.AUDIT_LOG))return!1;let i=!0,u=(d,f)=>{!d||d.length===0||(i=!!(i&&f&&d.includes(f)))};if(u(e.userIds,o.userId),u(e.appIds,o.appId),u(e.events,o.event),(e.startDate||e.endDate)&&(i=i&&o.timestamp>=e.startDate&&o.timestamp<=e.endDate),e.fullSearch){let d=JSON.stringify(s);i=i&&d.includes(e.fullSearch)}return i}}),a=new Wm;return r.on("data",s=>{let o=JSON.parse(Buffer.from(s).toString());if(Array.isArray(o.docs)){let i="";for(let u of o.docs)i+=JSON.stringify(u)+`
|
|
38
|
-
`;a.write(i)}}),r.on("end",()=>{a.end()}),{promise:n,stream:a}}var ve=require("@budibase/backend-core");var As=require("@budibase/types"),fa=require("@budibase/string-templates"),ma=require("@budibase/backend-core"),_C=ma.constants.MIN_VALID_DATE.toISOString(),IC=ma.constants.MAX_VALID_DATE.toISOString();function Ui(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||_C,e.endDate=e.endDate||IC),e}async function Hm(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(n=>ma.db.getProdAppID(n)));let t={};function r(n,a){a?.length&&(t.oneOf={...t.oneOf,[n]:a})}return r("userId",e.userIds),r("appId",e.appIds),r("event",e.events),e.fullSearch&&(t.fuzzyOr=!0,t.fuzzy={name:e.fullSearch,fallback:e.fullSearch}),(e.startDate||e.endDate)&&(e=Ui(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}function ki(e,t,r){let n={_id:e,status:As.AuditLogResourceStatus.DELETED};switch(t){case"app":n.name=r?.appName;break;case"user":n.email=r?.email;break}return n}function Di(e){let t=(0,fa.findHBSBlocks)(e);for(let r of t){let n=` "${r}"`;e=e.replace(e.includes(n)?n:` ${r}`,""),e=(0,fa.processStringSync)(e,{})}return e}function Zm(e,t){let r=As.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let n=(0,fa.processStringSync)(r,t);return n.includes('""')&&(n=Di(r)),n}async function wC(e,t,r){if(!await ps()||!ve.utils.isAudited(e))return;let n=Zm(e,t),a=new Date;r?.timestamp&&(a=new Date(r.timestamp));let s={timestamp:a.toISOString(),event:e,name:n,userId:r?.userId||vs.AuditLogSystemUser,metadata:{...t,...r?.hostInfo}},o={};try{if(r?.appId){s.appId=ve.db.getProdAppID(r.appId);let i=await ve.cache.app.getAppMetadata(r.appId);"name"in i&&(o.appName=i.name)}if(r?.userId){let i=await ve.users.getById(r?.userId);o.email=i.email}}catch(i){ve.logging.logAlert("Failed to retrieve fallback information for audit log",i)}return s.fallback=o,await Km(s)}async function SC(e){let t=e.map(i=>i.userId),n=e.filter(i=>i.appId).map(i=>ve.db.getDevAppID(i.appId)),a=await ve.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),s=await ve.db.getAppsByIDs([...new Set(n)]),o=[];for(let i of e){let u=a.find(g=>g?._id===i.userId),d=s.find(g=>ve.db.isSameAppID(g?.appId,i.appId)),f={event:i.event,timestamp:i.timestamp,name:i.name,metadata:i.metadata,user:u||ki(i.userId,"user",i.fallback)};i.appId&&(f.app=d||ki(i.appId,"app",i.fallback)),o.push(f)}return o}async function xC(e){if(!await ps())throw new Error("Audit logs not available - license required.");let t=await Hm(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await Ni(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await SC(r.rows)}}function TC(e){return e=Ui(e),Ym(e)}function EC(){let e=Object.entries(vs.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=Di(r[1]);return t}var _s={};T(_s,{applications:()=>Fi,roles:()=>Mi,users:()=>Bi});var Bi={};T(Bi,{roleCheck:()=>OC});function RC(e,t){let r=e.request.body;return r.builder&&(r.builder=t?.builder||void 0),r.admin&&(r.admin=t?.admin||void 0),r.roles&&(r.roles=t?.roles||{}),e.request.body=r,e}async function OC(e,t){return await ht()||RC(e,t),e}var Mi={};T(Mi,{assign:()=>CC,unAssign:()=>PC});var ga=require("@budibase/backend-core");async function CC(e,t){if(!await ht())throw new Error("Unable to assign roles - license required.");let r=await it.bulkGet(e);for(let n of r){if(t.role&&t.role.roleId){let a=ga.db.getProdAppID(t.role.appId);n.roles[a]=t.role.roleId}if(t.appBuilder){let a=ga.db.getProdAppID(t.appBuilder.appId),s=n.builder?.apps||[];n.builder={apps:s.concat([a])}}t.builder&&(n.builder={global:!0}),t.admin&&(n.admin={global:!0}),n.roles}await it.bulkUpdate(r)}async function PC(e,t){if(!await ht())throw new Error("Unable to un-assign roles - license required.");let r=await it.bulkGet(e);for(let n of r){if(t.role){let a=ga.db.getProdAppID(t.role?.appId);n.roles[a]===t.role.roleId&&delete n.roles[a]}if(t.appBuilder&&n.builder?.apps){let a=ga.db.getProdAppID(t.appBuilder.appId);n.builder.apps=n.builder.apps.filter(s=>s!==a)}t.builder&&n.builder&&delete n.builder,t.admin&&n.admin&&delete n.admin}}var Fi={};T(Fi,{buildExportFn:()=>qC,buildImportFn:()=>LC});var Gi=require("@budibase/backend-core");function LC(e){return async(t,r)=>{await ht()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await Gi.context.doInAppContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}function qC(e){return async(t,r)=>{await ht()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:n,excludeRows:a}=t.request.body;await Gi.context.doInAppContext(t.params.appId,async()=>{t.request.body={encryptPassword:n,excludeRows:a},t.query.appId=t.params.appId,await e(t),await r()})}}var ct=require("@budibase/backend-core"),he=require("@budibase/types");var ji=require("@budibase/backend-core"),zm;function Jm(){zm=new ji.queue.BudibaseQueue(ji.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}function sr(){return zm}var Xm=require("path"),eg=F(require("fs"));async function Qi(e,t={}){return Ue.storeAppBackupMetadata(e,t)}function tg(e){let t=new Date().toISOString();switch(e){case he.AppBackupStatus.COMPLETE:case he.AppBackupStatus.FAILED:return{timestamp:t,finishedAt:t};case he.AppBackupStatus.STARTED:return{timestamp:t,startedAt:t};case he.AppBackupStatus.PENDING:return{timestamp:t,createdAt:t}}}async function NC(e,t,r,n){let a=await Is(e);return await Ue.storeAppBackupMetadata({...a,...tg(t),contents:r,status:t,type:he.AppBackupType.BACKUP},{filename:n,docId:e})}async function UC(e,t,r){let n=await Is(e);return await Ue.storeAppBackupMetadata({...n,...tg(r),status:r,type:he.AppBackupType.RESTORE,trigger:he.AppBackupTrigger.MANUAL},{docId:e,docRev:t})}async function Is(e){return Ue.getAppBackupMetadata(e)}async function kC(e,t){return Ue.updateAppBackupMetadata(e,t)}async function DC(e){let t=await Ue.getAppBackupMetadata(e);return t.filename&&await ct.objectStore.deleteFile(ct.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),Ue.deleteAppBackupMetadata(e)}async function BC(e,t){return Ue.fetchAppBackups(e,t)}async function rg(e){let t=await Ue.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let r=await ct.objectStore.getReadStream(ct.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}async function MC(e){let{stream:t}=await rg(e),r=(0,Xm.join)(ct.objectStore.budibaseTempDir(),ct.utils.newid()),n=eg.default.createWriteStream(r);return new Promise((a,s)=>{t.on("error",s),n.on("error",s),t.pipe(n).on("close",()=>a(r))})}async function GC(e,t,r={}){let n;try{n=await Qi({appId:e,trigger:t,timestamp:new Date().toISOString(),status:he.AppBackupStatus.PENDING,type:he.AppBackupType.BACKUP,...r})}catch(a){if(a.status===409)return;throw a}return await sr().add({docId:n.id,docRev:n.rev,appId:e,export:{trigger:t,...r}}),await ct.events.backup.appBackupTriggered(e,n.id,he.AppBackupType.BACKUP,t,r?.name),n.id}async function FC(e,t,r,n){let a=await Is(t),s;try{s=await Qi({appId:e,timestamp:new Date().toISOString(),status:he.AppBackupStatus.PENDING,type:he.AppBackupType.RESTORE,createdBy:n})}catch(o){if(o?.status===409)return;throw o}return await sr().add({appId:e,docId:s.id,docRev:s.rev,import:{nameForBackup:r,backupId:t,createdBy:n}}),{restoreId:s.id,metadata:a}}var jC={isEnabled:ii,triggerAppRestore:Ee(FC),triggerAppBackup:Ee(GC),getBackupDownloadStream:Ee(rg),downloadAppBackup:Ee(MC),fetchAppBackups:Ee(BC),storeAppBackupMetadata:Ee(Qi),updateBackupStatus:Ee(NC),updateRestoreStatus:Ee(UC),getAppBackup:Ee(Is),updateAppBackup:Ee(kC),deleteAppBackup:Ee(DC)},vt=jC;var Wi={};T(Wi,{init:()=>$i});var ae=require("@budibase/backend-core");var He=require("@budibase/types");var Jr=F(require("fs"));async function $i(e){sr().process(async t=>{let r=t.data;try{if(r.export)return WC(t,e);if(r.import)return $C(t,e)}catch(n){ae.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,n)}})}async function QC(e){await ae.db.getDB(e,{skip_setup:!0}).destroy()}async function ng(e,t,r,n){let a=ae.db.getDevAppID(r),s=ae.db.getProdAppID(r),o=new Date().toISOString(),i=async(u,d)=>{n?.doc?await vt.updateBackupStatus(n.doc.id,u,d?.contents,d?.filename):await vt.storeAppBackupMetadata({appId:s,timestamp:o,trigger:e,status:u,name:n?.name,type:He.AppBackupType.BACKUP,contents:d?.contents,createdBy:n?.createdBy},{filename:d?.filename})};try{let u=await n.processing.exportAppFn(a,{tar:!0}),d=await n.processing.statsFn(a),f=`${s}/backup-${o}.tar.gz`,g=ae.objectStore.ObjectStoreBuckets.BACKUPS,A=Jr.default.createReadStream(u);await ae.objectStore.streamUpload({bucket:g,filename:f,stream:A,extra:{type:"application/gzip",metadata:{name:n?.name,trigger:e,timestamp:o,appId:s}}}),await i(He.AppBackupStatus.COMPLETE,{filename:f,contents:d}),Jr.default.existsSync(u)&&Jr.default.rmSync(u)}catch(u){ae.logging.logAlert("App backup error",u),await i(He.AppBackupStatus.FAILED)}}async function $C(e,t){let r=e.data,n=r.appId,a=r.import.backupId,s=r.import.nameForBackup,o=r.import.createdBy,i=ae.tenancy.getTenantIDFromAppID(n);return ae.tenancy.doInTenant(i,async()=>{let u=ae.db.getDevAppID(n),{rev:d}=await vt.updateRestoreStatus(r.docId,r.docRev,He.AppBackupStatus.STARTED);await ng(He.AppBackupTrigger.RESTORING,i,n,{processing:t,createdBy:o,name:s});let f=await vt.downloadAppBackup(a);await QC(u);let g=He.AppBackupStatus.COMPLETE;try{await t.importAppFn(u,ae.db.getDB(u),{file:{type:"application/gzip",path:f},key:f})}catch(A){ae.logging.logAlert("App restore error",A),g=He.AppBackupStatus.FAILED}await vt.updateRestoreStatus(r.docId,d,g),Jr.default.existsSync(f)&&Jr.default.rmSync(f,{force:!0})})}async function WC(e,t){let r=e.data,n=r.appId,a=r.export.trigger,s=r.export.name,o=ae.tenancy.getTenantIDFromAppID(n);await ae.tenancy.doInTenant(o,async()=>{try{let{rev:i}=await vt.updateBackupStatus(r.docId,He.AppBackupStatus.STARTED);return ng(a,o,n,{processing:t,doc:{id:r.docId,rev:i},name:s})}catch(i){ae.logging.logAlert("App backup error",i)}})}var VC=async e=>{Jm(),await $i(e.processing)},De={...vt,processing:Wi,init:VC,getBackupQueue:sr};var ag=async e=>{e.backups&&await De.init(e.backups)};var Ie={};T(Ie,{create:()=>M0,find:()=>B0,get:()=>D0,remove:()=>F0,update:()=>G0});var EA=F(Mu()),_t=require("@budibase/backend-core");var RA=require("@budibase/types");async function D0(e){let t=_t.tenancy.getGlobalDB(),r=new _t.db.QueryBuilder(t.name,RA.SearchIndex.USER);r.setIndexBuilder(_t.db.searchIndexes.createUserIndex),r.setLimit(e.pageSize),r.addEqual("scimInfo.isSync",!0);for(let[a,s]of Object.entries(e.filters?.equal??{}))r.addEqual(a,s);r.setSort("_id"),r.setSkip(e.skip);let n=await r.run();return{users:n.rows,total:n.totalRows}}async function B0(e){return await _t.users.getById(e)}async function M0(e){let t=await it.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new _t.HTTPError("User is already synched",409);e={...t,scimInfo:(0,EA.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await it.save(e,{requirePassword:!1})}async function G0(e,t){return await it.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}async function F0(e){return await it.destroy(e)}var an={};T(an,{create:()=>j0});var OA=F(Mu());var CA=require("@budibase/backend-core");async function j0(e){let t=await fo(e.name),r;if(!t)r=(await Z.save(e)).id;else{if(t.scimInfo?.isSync)throw new CA.HTTPError("Group is already synched",409);r=t._id,t.users&&(await Z.removeUsers(r,t.users.map(a=>a._id)),delete t.users),t.scimInfo=(0,OA.default)(t.scimInfo,e.scimInfo),await Z.save(t)}return await Z.get(r)}var ir={};T(ir,{logRequest:()=>Q0,logResponse:()=>$0});var Gu=require("@budibase/backend-core");async function Q0(e){Gu.logging.logWarn("SCIM request log",e)}async function $0(e){Gu.logging.logWarn("SCIM response error",e)}var Wu={};T(Wu,{doInScimContext:()=>ju,feature:()=>z,internalGroupOnly:()=>Ds,licensing:()=>PA,requireSCIM:()=>Qu,scimGroupOnly:()=>Aa,scimUserOnly:()=>ba});var Dt=require("@budibase/backend-core");var Us=require("@budibase/types"),W0=(e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(Dt.env.SELF_HOSTED&&Dt.env.DEFAULT_LICENSE)return t.user.license=go,r();t.user.license=await nt.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(Dt.utils.isServingApp(t)||Dt.utils.isServingBuilder(t)||Dt.utils.isServingBuilderPreview(t)||Dt.utils.isPublicApiRequest(t))&&await ot.usageLimitIsExceeded(Us.StaticQuotaName.USERS,Us.QuotaUsageType.STATIC)}return r()},PA=W0;var z={};T(z,{requireFeature:()=>V0,requireFeatures:()=>K0});var V0=e=>async(t,r)=>{await cs(e),await r()},K0=(...e)=>async(t,r)=>{await oi(e),await r()};var ks=require("@budibase/backend-core");var ju=async(e,t)=>(ks.env.DISABLE_SCIM_CALLS||await ir.logRequest({...e.request.toJSON(),body:e.request.body}),await ks.context.doInScimContext(async()=>{let r=await t();return await ir.logResponse({...e.response.toJSON(),body:e.response.body}),r}));var Qu=async(e,t)=>{await pi(),await t()};var LA=require("@budibase/backend-core");var ba=e=>$u(LA.users.getById,e,!0),Aa=e=>$u(K.get,e,!0),Ds=e=>$u(K.get,e,!1);function $u(e,t,r){return async(n,a)=>{let s=n.params[t];return typeof s!="string"&&n.throw(404),!!(await e(s)).scimInfo?.isSync!==r&&n.throw(404),a()}}var Rc={};T(Rc,{ai:()=>ov,appBackups:()=>Wv,auditLogs:()=>Uv,environmentVariables:()=>Ev,groups:()=>bv,scim:()=>__,users:()=>T_});var Ys=require("@budibase/types");var yc={};T(yc,{Prompt:()=>ee,TableGeneration:()=>hc,aiColumnSchemas:()=>mc,aiTableResponseToTableSchema:()=>pc,appendAIColumns:()=>lc,classifyText:()=>zu,cleanData:()=>Ju,generateAIColumns:()=>sc,generateCode:()=>zM,generateCronExpression:()=>Xu,generateData:()=>oc,generateJs:()=>nc,generateSQL:()=>ZM,generateTables:()=>ac,generationStructure:()=>fc,getLLM:()=>mn,getLLMConfig:()=>cc,openai:()=>nG,searchWeb:()=>rc,sentimentAnalysis:()=>tc,summarizeText:()=>Ws,tableDataStructuredOutput:()=>gc,translate:()=>ec});var KA=F(require("openai"));var jt=require("@budibase/types");var B;(function(e){e.assertEqual=a=>a;function t(a){}e.assertIs=t;function r(a){throw new Error}e.assertNever=r,e.arrayToEnum=a=>{let s={};for(let o of a)s[o]=o;return s},e.getValidEnumValues=a=>{let s=e.objectKeys(a).filter(i=>typeof a[a[i]]!="number"),o={};for(let i of s)o[i]=a[i];return e.objectValues(o)},e.objectValues=a=>e.objectKeys(a).map(function(s){return a[s]}),e.objectKeys=typeof Object.keys=="function"?a=>Object.keys(a):a=>{let s=[];for(let o in a)Object.prototype.hasOwnProperty.call(a,o)&&s.push(o);return s},e.find=(a,s)=>{for(let o of a)if(s(o))return o},e.isInteger=typeof Number.isInteger=="function"?a=>Number.isInteger(a):a=>typeof a=="number"&&isFinite(a)&&Math.floor(a)===a;function n(a,s=" | "){return a.map(o=>typeof o=="string"?`'${o}'`:o).join(s)}e.joinValues=n,e.jsonStringifyReplacer=(a,s)=>typeof s=="bigint"?s.toString():s})(B||(B={}));var Ku;(function(e){e.mergeShapes=(t,r)=>({...t,...r})})(Ku||(Ku={}));var v=B.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),Bt=e=>{switch(typeof e){case"undefined":return v.undefined;case"string":return v.string;case"number":return isNaN(e)?v.nan:v.number;case"boolean":return v.boolean;case"function":return v.function;case"bigint":return v.bigint;case"symbol":return v.symbol;case"object":return Array.isArray(e)?v.array:e===null?v.null:e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?v.promise:typeof Map<"u"&&e instanceof Map?v.map:typeof Set<"u"&&e instanceof Set?v.set:typeof Date<"u"&&e instanceof Date?v.date:v.object;default:return v.unknown}},h=B.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),Y0=e=>JSON.stringify(e,null,2).replace(/"([^"]+)":/g,"$1:"),Re=class e extends Error{constructor(t){super(),this.issues=[],this.addIssue=n=>{this.issues=[...this.issues,n]},this.addIssues=(n=[])=>{this.issues=[...this.issues,...n]};let r=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,r):this.__proto__=r,this.name="ZodError",this.issues=t}get errors(){return this.issues}format(t){let r=t||function(s){return s.message},n={_errors:[]},a=s=>{for(let o of s.issues)if(o.code==="invalid_union")o.unionErrors.map(a);else if(o.code==="invalid_return_type")a(o.returnTypeError);else if(o.code==="invalid_arguments")a(o.argumentsError);else if(o.path.length===0)n._errors.push(r(o));else{let i=n,u=0;for(;u<o.path.length;){let d=o.path[u];u===o.path.length-1?(i[d]=i[d]||{_errors:[]},i[d]._errors.push(r(o))):i[d]=i[d]||{_errors:[]},i=i[d],u++}}};return a(this),n}static assert(t){if(!(t instanceof e))throw new Error(`Not a ZodError: ${t}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,B.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(t=r=>r.message){let r={},n=[];for(let a of this.issues)a.path.length>0?(r[a.path[0]]=r[a.path[0]]||[],r[a.path[0]].push(t(a))):n.push(t(a));return{formErrors:n,fieldErrors:r}}get formErrors(){return this.flatten()}};Re.create=e=>new Re(e);var un=(e,t)=>{let r;switch(e.code){case h.invalid_type:e.received===v.undefined?r="Required":r=`Expected ${e.expected}, received ${e.received}`;break;case h.invalid_literal:r=`Invalid literal value, expected ${JSON.stringify(e.expected,B.jsonStringifyReplacer)}`;break;case h.unrecognized_keys:r=`Unrecognized key(s) in object: ${B.joinValues(e.keys,", ")}`;break;case h.invalid_union:r="Invalid input";break;case h.invalid_union_discriminator:r=`Invalid discriminator value. Expected ${B.joinValues(e.options)}`;break;case h.invalid_enum_value:r=`Invalid enum value. Expected ${B.joinValues(e.options)}, received '${e.received}'`;break;case h.invalid_arguments:r="Invalid function arguments";break;case h.invalid_return_type:r="Invalid function return type";break;case h.invalid_date:r="Invalid date";break;case h.invalid_string:typeof e.validation=="object"?"includes"in e.validation?(r=`Invalid input: must include "${e.validation.includes}"`,typeof e.validation.position=="number"&&(r=`${r} at one or more positions greater than or equal to ${e.validation.position}`)):"startsWith"in e.validation?r=`Invalid input: must start with "${e.validation.startsWith}"`:"endsWith"in e.validation?r=`Invalid input: must end with "${e.validation.endsWith}"`:B.assertNever(e.validation):e.validation!=="regex"?r=`Invalid ${e.validation}`:r="Invalid";break;case h.too_small:e.type==="array"?r=`Array must contain ${e.exact?"exactly":e.inclusive?"at least":"more than"} ${e.minimum} element(s)`:e.type==="string"?r=`String must contain ${e.exact?"exactly":e.inclusive?"at least":"over"} ${e.minimum} character(s)`:e.type==="number"?r=`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:e.type==="date"?r=`Date must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(e.minimum))}`:r="Invalid input";break;case h.too_big:e.type==="array"?r=`Array must contain ${e.exact?"exactly":e.inclusive?"at most":"less than"} ${e.maximum} element(s)`:e.type==="string"?r=`String must contain ${e.exact?"exactly":e.inclusive?"at most":"under"} ${e.maximum} character(s)`:e.type==="number"?r=`Number must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:e.type==="bigint"?r=`BigInt must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:e.type==="date"?r=`Date must be ${e.exact?"exactly":e.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(e.maximum))}`:r="Invalid input";break;case h.custom:r="Invalid input";break;case h.invalid_intersection_types:r="Intersection results could not be merged";break;case h.not_multiple_of:r=`Number must be a multiple of ${e.multipleOf}`;break;case h.not_finite:r="Number must be finite";break;default:r=t.defaultError,B.assertNever(e)}return{message:r}},UA=un;function H0(e){UA=e}function Bs(){return UA}var Ms=e=>{let{data:t,path:r,errorMaps:n,issueData:a}=e,s=[...r,...a.path||[]],o={...a,path:s};if(a.message!==void 0)return{...a,path:s,message:a.message};let i="",u=n.filter(d=>!!d).slice().reverse();for(let d of u)i=d(o,{data:t,defaultError:i}).message;return{...a,path:s,message:i}},Z0=[];function b(e,t){let r=Bs(),n=Ms({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,r,r===un?void 0:un].filter(a=>!!a)});e.common.issues.push(n)}var ce=class e{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(t,r){let n=[];for(let a of r){if(a.status==="aborted")return R;a.status==="dirty"&&t.dirty(),n.push(a.value)}return{status:t.value,value:n}}static async mergeObjectAsync(t,r){let n=[];for(let a of r){let s=await a.key,o=await a.value;n.push({key:s,value:o})}return e.mergeObjectSync(t,n)}static mergeObjectSync(t,r){let n={};for(let a of r){let{key:s,value:o}=a;if(s.status==="aborted"||o.status==="aborted")return R;s.status==="dirty"&&t.dirty(),o.status==="dirty"&&t.dirty(),s.value!=="__proto__"&&(typeof o.value<"u"||a.alwaysSet)&&(n[s.value]=o.value)}return{status:t.value,value:n}}},R=Object.freeze({status:"aborted"}),on=e=>({status:"dirty",value:e}),ye=e=>({status:"valid",value:e}),Yu=e=>e.status==="aborted",Hu=e=>e.status==="dirty",Ia=e=>e.status==="valid",wa=e=>typeof Promise<"u"&&e instanceof Promise;function Gs(e,t,r,n){if(r==="a"&&!n)throw new TypeError("Private accessor was defined without a getter");if(typeof t=="function"?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return r==="m"?n:r==="a"?n.call(e):n?n.value:t.get(e)}function kA(e,t,r,n,a){if(n==="m")throw new TypeError("Private method is not writable");if(n==="a"&&!a)throw new TypeError("Private accessor was defined without a setter");if(typeof t=="function"?e!==t||!a:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return n==="a"?a.call(e,r):a?a.value=r:t.set(e,r),r}var S;(function(e){e.errToObj=t=>typeof t=="string"?{message:t}:t||{},e.toString=t=>typeof t=="string"?t:t?.message})(S||(S={}));var va,_a,Me=class{constructor(t,r,n,a){this._cachedPath=[],this.parent=t,this.data=r,this._path=n,this._key=a}get path(){return this._cachedPath.length||(this._key instanceof Array?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},qA=(e,t)=>{if(Ia(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let r=new Re(e.common.issues);return this._error=r,this._error}}};function P(e){if(!e)return{};let{errorMap:t,invalid_type_error:r,required_error:n,description:a}=e;if(t&&(r||n))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return t?{errorMap:t,description:a}:{errorMap:(o,i)=>{var u,d;let{message:f}=e;return o.code==="invalid_enum_value"?{message:f??i.defaultError}:typeof i.data>"u"?{message:(u=f??n)!==null&&u!==void 0?u:i.defaultError}:o.code!=="invalid_type"?{message:i.defaultError}:{message:(d=f??r)!==null&&d!==void 0?d:i.defaultError}},description:a}}var L=class{constructor(t){this.spa=this.safeParseAsync,this._def=t,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this)}get description(){return this._def.description}_getType(t){return Bt(t.data)}_getOrReturnCtx(t,r){return r||{common:t.parent.common,data:t.data,parsedType:Bt(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}_processInputParams(t){return{status:new ce,ctx:{common:t.parent.common,data:t.data,parsedType:Bt(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}}_parseSync(t){let r=this._parse(t);if(wa(r))throw new Error("Synchronous parse encountered promise.");return r}_parseAsync(t){let r=this._parse(t);return Promise.resolve(r)}parse(t,r){let n=this.safeParse(t,r);if(n.success)return n.data;throw n.error}safeParse(t,r){var n;let a={common:{issues:[],async:(n=r?.async)!==null&&n!==void 0?n:!1,contextualErrorMap:r?.errorMap},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:Bt(t)},s=this._parseSync({data:t,path:a.path,parent:a});return qA(a,s)}async parseAsync(t,r){let n=await this.safeParseAsync(t,r);if(n.success)return n.data;throw n.error}async safeParseAsync(t,r){let n={common:{issues:[],contextualErrorMap:r?.errorMap,async:!0},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:Bt(t)},a=this._parse({data:t,path:n.path,parent:n}),s=await(wa(a)?a:Promise.resolve(a));return qA(n,s)}refine(t,r){let n=a=>typeof r=="string"||typeof r>"u"?{message:r}:typeof r=="function"?r(a):r;return this._refinement((a,s)=>{let o=t(a),i=()=>s.addIssue({code:h.custom,...n(a)});return typeof Promise<"u"&&o instanceof Promise?o.then(u=>u?!0:(i(),!1)):o?!0:(i(),!1)})}refinement(t,r){return this._refinement((n,a)=>t(n)?!0:(a.addIssue(typeof r=="function"?r(n,a):r),!1))}_refinement(t){return new Oe({schema:this,typeName:E.ZodEffects,effect:{type:"refinement",refinement:t}})}superRefine(t){return this._refinement(t)}optional(){return Be.create(this,this._def)}nullable(){return lt.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return St.create(this,this._def)}promise(){return Ft.create(this,this._def)}or(t){return mr.create([this,t],this._def)}and(t){return gr.create(this,t,this._def)}transform(t){return new Oe({...P(this._def),schema:this,typeName:E.ZodEffects,effect:{type:"transform",transform:t}})}default(t){let r=typeof t=="function"?t:()=>t;return new vr({...P(this._def),innerType:this,defaultValue:r,typeName:E.ZodDefault})}brand(){return new Sa({typeName:E.ZodBranded,type:this,...P(this._def)})}catch(t){let r=typeof t=="function"?t:()=>t;return new _r({...P(this._def),innerType:this,catchValue:r,typeName:E.ZodCatch})}describe(t){let r=this.constructor;return new r({...this._def,description:t})}pipe(t){return xa.create(this,t)}readonly(){return Ir.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},z0=/^c[^\s-]{8,}$/i,J0=/^[0-9a-z]+$/,X0=/^[0-9A-HJKMNP-TV-Z]{26}$/,eM=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,tM=/^[a-z0-9_-]{21}$/i,rM=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,nM=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,aM="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",Vu,sM=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,oM=/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,iM=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,DA="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",uM=new RegExp(`^${DA}$`);function BA(e){let t="([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d";return e.precision?t=`${t}\\.\\d{${e.precision}}`:e.precision==null&&(t=`${t}(\\.\\d+)?`),t}function cM(e){return new RegExp(`^${BA(e)}$`)}function MA(e){let t=`${DA}T${BA(e)}`,r=[];return r.push(e.local?"Z?":"Z"),e.offset&&r.push("([+-]\\d{2}:?\\d{2})"),t=`${t}(${r.join("|")})`,new RegExp(`^${t}$`)}function pM(e,t){return!!((t==="v4"||!t)&&sM.test(e)||(t==="v6"||!t)&&oM.test(e))}var Mt=class e extends L{_parse(t){if(this._def.coerce&&(t.data=String(t.data)),this._getType(t)!==v.string){let s=this._getOrReturnCtx(t);return b(s,{code:h.invalid_type,expected:v.string,received:s.parsedType}),R}let n=new ce,a;for(let s of this._def.checks)if(s.kind==="min")t.data.length<s.value&&(a=this._getOrReturnCtx(t,a),b(a,{code:h.too_small,minimum:s.value,type:"string",inclusive:!0,exact:!1,message:s.message}),n.dirty());else if(s.kind==="max")t.data.length>s.value&&(a=this._getOrReturnCtx(t,a),b(a,{code:h.too_big,maximum:s.value,type:"string",inclusive:!0,exact:!1,message:s.message}),n.dirty());else if(s.kind==="length"){let o=t.data.length>s.value,i=t.data.length<s.value;(o||i)&&(a=this._getOrReturnCtx(t,a),o?b(a,{code:h.too_big,maximum:s.value,type:"string",inclusive:!0,exact:!0,message:s.message}):i&&b(a,{code:h.too_small,minimum:s.value,type:"string",inclusive:!0,exact:!0,message:s.message}),n.dirty())}else if(s.kind==="email")nM.test(t.data)||(a=this._getOrReturnCtx(t,a),b(a,{validation:"email",code:h.invalid_string,message:s.message}),n.dirty());else if(s.kind==="emoji")Vu||(Vu=new RegExp(aM,"u")),Vu.test(t.data)||(a=this._getOrReturnCtx(t,a),b(a,{validation:"emoji",code:h.invalid_string,message:s.message}),n.dirty());else if(s.kind==="uuid")eM.test(t.data)||(a=this._getOrReturnCtx(t,a),b(a,{validation:"uuid",code:h.invalid_string,message:s.message}),n.dirty());else if(s.kind==="nanoid")tM.test(t.data)||(a=this._getOrReturnCtx(t,a),b(a,{validation:"nanoid",code:h.invalid_string,message:s.message}),n.dirty());else if(s.kind==="cuid")z0.test(t.data)||(a=this._getOrReturnCtx(t,a),b(a,{validation:"cuid",code:h.invalid_string,message:s.message}),n.dirty());else if(s.kind==="cuid2")J0.test(t.data)||(a=this._getOrReturnCtx(t,a),b(a,{validation:"cuid2",code:h.invalid_string,message:s.message}),n.dirty());else if(s.kind==="ulid")X0.test(t.data)||(a=this._getOrReturnCtx(t,a),b(a,{validation:"ulid",code:h.invalid_string,message:s.message}),n.dirty());else if(s.kind==="url")try{new URL(t.data)}catch{a=this._getOrReturnCtx(t,a),b(a,{validation:"url",code:h.invalid_string,message:s.message}),n.dirty()}else s.kind==="regex"?(s.regex.lastIndex=0,s.regex.test(t.data)||(a=this._getOrReturnCtx(t,a),b(a,{validation:"regex",code:h.invalid_string,message:s.message}),n.dirty())):s.kind==="trim"?t.data=t.data.trim():s.kind==="includes"?t.data.includes(s.value,s.position)||(a=this._getOrReturnCtx(t,a),b(a,{code:h.invalid_string,validation:{includes:s.value,position:s.position},message:s.message}),n.dirty()):s.kind==="toLowerCase"?t.data=t.data.toLowerCase():s.kind==="toUpperCase"?t.data=t.data.toUpperCase():s.kind==="startsWith"?t.data.startsWith(s.value)||(a=this._getOrReturnCtx(t,a),b(a,{code:h.invalid_string,validation:{startsWith:s.value},message:s.message}),n.dirty()):s.kind==="endsWith"?t.data.endsWith(s.value)||(a=this._getOrReturnCtx(t,a),b(a,{code:h.invalid_string,validation:{endsWith:s.value},message:s.message}),n.dirty()):s.kind==="datetime"?MA(s).test(t.data)||(a=this._getOrReturnCtx(t,a),b(a,{code:h.invalid_string,validation:"datetime",message:s.message}),n.dirty()):s.kind==="date"?uM.test(t.data)||(a=this._getOrReturnCtx(t,a),b(a,{code:h.invalid_string,validation:"date",message:s.message}),n.dirty()):s.kind==="time"?cM(s).test(t.data)||(a=this._getOrReturnCtx(t,a),b(a,{code:h.invalid_string,validation:"time",message:s.message}),n.dirty()):s.kind==="duration"?rM.test(t.data)||(a=this._getOrReturnCtx(t,a),b(a,{validation:"duration",code:h.invalid_string,message:s.message}),n.dirty()):s.kind==="ip"?pM(t.data,s.version)||(a=this._getOrReturnCtx(t,a),b(a,{validation:"ip",code:h.invalid_string,message:s.message}),n.dirty()):s.kind==="base64"?iM.test(t.data)||(a=this._getOrReturnCtx(t,a),b(a,{validation:"base64",code:h.invalid_string,message:s.message}),n.dirty()):B.assertNever(s);return{status:n.value,value:t.data}}_regex(t,r,n){return this.refinement(a=>t.test(a),{validation:r,code:h.invalid_string,...S.errToObj(n)})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}email(t){return this._addCheck({kind:"email",...S.errToObj(t)})}url(t){return this._addCheck({kind:"url",...S.errToObj(t)})}emoji(t){return this._addCheck({kind:"emoji",...S.errToObj(t)})}uuid(t){return this._addCheck({kind:"uuid",...S.errToObj(t)})}nanoid(t){return this._addCheck({kind:"nanoid",...S.errToObj(t)})}cuid(t){return this._addCheck({kind:"cuid",...S.errToObj(t)})}cuid2(t){return this._addCheck({kind:"cuid2",...S.errToObj(t)})}ulid(t){return this._addCheck({kind:"ulid",...S.errToObj(t)})}base64(t){return this._addCheck({kind:"base64",...S.errToObj(t)})}ip(t){return this._addCheck({kind:"ip",...S.errToObj(t)})}datetime(t){var r,n;return typeof t=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:t}):this._addCheck({kind:"datetime",precision:typeof t?.precision>"u"?null:t?.precision,offset:(r=t?.offset)!==null&&r!==void 0?r:!1,local:(n=t?.local)!==null&&n!==void 0?n:!1,...S.errToObj(t?.message)})}date(t){return this._addCheck({kind:"date",message:t})}time(t){return typeof t=="string"?this._addCheck({kind:"time",precision:null,message:t}):this._addCheck({kind:"time",precision:typeof t?.precision>"u"?null:t?.precision,...S.errToObj(t?.message)})}duration(t){return this._addCheck({kind:"duration",...S.errToObj(t)})}regex(t,r){return this._addCheck({kind:"regex",regex:t,...S.errToObj(r)})}includes(t,r){return this._addCheck({kind:"includes",value:t,position:r?.position,...S.errToObj(r?.message)})}startsWith(t,r){return this._addCheck({kind:"startsWith",value:t,...S.errToObj(r)})}endsWith(t,r){return this._addCheck({kind:"endsWith",value:t,...S.errToObj(r)})}min(t,r){return this._addCheck({kind:"min",value:t,...S.errToObj(r)})}max(t,r){return this._addCheck({kind:"max",value:t,...S.errToObj(r)})}length(t,r){return this._addCheck({kind:"length",value:t,...S.errToObj(r)})}nonempty(t){return this.min(1,S.errToObj(t))}trim(){return new e({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new e({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new e({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(t=>t.kind==="datetime")}get isDate(){return!!this._def.checks.find(t=>t.kind==="date")}get isTime(){return!!this._def.checks.find(t=>t.kind==="time")}get isDuration(){return!!this._def.checks.find(t=>t.kind==="duration")}get isEmail(){return!!this._def.checks.find(t=>t.kind==="email")}get isURL(){return!!this._def.checks.find(t=>t.kind==="url")}get isEmoji(){return!!this._def.checks.find(t=>t.kind==="emoji")}get isUUID(){return!!this._def.checks.find(t=>t.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(t=>t.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(t=>t.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(t=>t.kind==="cuid2")}get isULID(){return!!this._def.checks.find(t=>t.kind==="ulid")}get isIP(){return!!this._def.checks.find(t=>t.kind==="ip")}get isBase64(){return!!this._def.checks.find(t=>t.kind==="base64")}get minLength(){let t=null;for(let r of this._def.checks)r.kind==="min"&&(t===null||r.value>t)&&(t=r.value);return t}get maxLength(){let t=null;for(let r of this._def.checks)r.kind==="max"&&(t===null||r.value<t)&&(t=r.value);return t}};Mt.create=e=>{var t;return new Mt({checks:[],typeName:E.ZodString,coerce:(t=e?.coerce)!==null&&t!==void 0?t:!1,...P(e)})};function lM(e,t){let r=(e.toString().split(".")[1]||"").length,n=(t.toString().split(".")[1]||"").length,a=r>n?r:n,s=parseInt(e.toFixed(a).replace(".","")),o=parseInt(t.toFixed(a).replace(".",""));return s%o/Math.pow(10,a)}var ur=class e extends L{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(t){if(this._def.coerce&&(t.data=Number(t.data)),this._getType(t)!==v.number){let s=this._getOrReturnCtx(t);return b(s,{code:h.invalid_type,expected:v.number,received:s.parsedType}),R}let n,a=new ce;for(let s of this._def.checks)s.kind==="int"?B.isInteger(t.data)||(n=this._getOrReturnCtx(t,n),b(n,{code:h.invalid_type,expected:"integer",received:"float",message:s.message}),a.dirty()):s.kind==="min"?(s.inclusive?t.data<s.value:t.data<=s.value)&&(n=this._getOrReturnCtx(t,n),b(n,{code:h.too_small,minimum:s.value,type:"number",inclusive:s.inclusive,exact:!1,message:s.message}),a.dirty()):s.kind==="max"?(s.inclusive?t.data>s.value:t.data>=s.value)&&(n=this._getOrReturnCtx(t,n),b(n,{code:h.too_big,maximum:s.value,type:"number",inclusive:s.inclusive,exact:!1,message:s.message}),a.dirty()):s.kind==="multipleOf"?lM(t.data,s.value)!==0&&(n=this._getOrReturnCtx(t,n),b(n,{code:h.not_multiple_of,multipleOf:s.value,message:s.message}),a.dirty()):s.kind==="finite"?Number.isFinite(t.data)||(n=this._getOrReturnCtx(t,n),b(n,{code:h.not_finite,message:s.message}),a.dirty()):B.assertNever(s);return{status:a.value,value:t.data}}gte(t,r){return this.setLimit("min",t,!0,S.toString(r))}gt(t,r){return this.setLimit("min",t,!1,S.toString(r))}lte(t,r){return this.setLimit("max",t,!0,S.toString(r))}lt(t,r){return this.setLimit("max",t,!1,S.toString(r))}setLimit(t,r,n,a){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:r,inclusive:n,message:S.toString(a)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}int(t){return this._addCheck({kind:"int",message:S.toString(t)})}positive(t){return this._addCheck({kind:"min",value:0,inclusive:!1,message:S.toString(t)})}negative(t){return this._addCheck({kind:"max",value:0,inclusive:!1,message:S.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:0,inclusive:!0,message:S.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:0,inclusive:!0,message:S.toString(t)})}multipleOf(t,r){return this._addCheck({kind:"multipleOf",value:t,message:S.toString(r)})}finite(t){return this._addCheck({kind:"finite",message:S.toString(t)})}safe(t){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:S.toString(t)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:S.toString(t)})}get minValue(){let t=null;for(let r of this._def.checks)r.kind==="min"&&(t===null||r.value>t)&&(t=r.value);return t}get maxValue(){let t=null;for(let r of this._def.checks)r.kind==="max"&&(t===null||r.value<t)&&(t=r.value);return t}get isInt(){return!!this._def.checks.find(t=>t.kind==="int"||t.kind==="multipleOf"&&B.isInteger(t.value))}get isFinite(){let t=null,r=null;for(let n of this._def.checks){if(n.kind==="finite"||n.kind==="int"||n.kind==="multipleOf")return!0;n.kind==="min"?(r===null||n.value>r)&&(r=n.value):n.kind==="max"&&(t===null||n.value<t)&&(t=n.value)}return Number.isFinite(r)&&Number.isFinite(t)}};ur.create=e=>new ur({checks:[],typeName:E.ZodNumber,coerce:e?.coerce||!1,...P(e)});var cr=class e extends L{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(t){if(this._def.coerce&&(t.data=BigInt(t.data)),this._getType(t)!==v.bigint){let s=this._getOrReturnCtx(t);return b(s,{code:h.invalid_type,expected:v.bigint,received:s.parsedType}),R}let n,a=new ce;for(let s of this._def.checks)s.kind==="min"?(s.inclusive?t.data<s.value:t.data<=s.value)&&(n=this._getOrReturnCtx(t,n),b(n,{code:h.too_small,type:"bigint",minimum:s.value,inclusive:s.inclusive,message:s.message}),a.dirty()):s.kind==="max"?(s.inclusive?t.data>s.value:t.data>=s.value)&&(n=this._getOrReturnCtx(t,n),b(n,{code:h.too_big,type:"bigint",maximum:s.value,inclusive:s.inclusive,message:s.message}),a.dirty()):s.kind==="multipleOf"?t.data%s.value!==BigInt(0)&&(n=this._getOrReturnCtx(t,n),b(n,{code:h.not_multiple_of,multipleOf:s.value,message:s.message}),a.dirty()):B.assertNever(s);return{status:a.value,value:t.data}}gte(t,r){return this.setLimit("min",t,!0,S.toString(r))}gt(t,r){return this.setLimit("min",t,!1,S.toString(r))}lte(t,r){return this.setLimit("max",t,!0,S.toString(r))}lt(t,r){return this.setLimit("max",t,!1,S.toString(r))}setLimit(t,r,n,a){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:r,inclusive:n,message:S.toString(a)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}positive(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:S.toString(t)})}negative(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:S.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:S.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:S.toString(t)})}multipleOf(t,r){return this._addCheck({kind:"multipleOf",value:t,message:S.toString(r)})}get minValue(){let t=null;for(let r of this._def.checks)r.kind==="min"&&(t===null||r.value>t)&&(t=r.value);return t}get maxValue(){let t=null;for(let r of this._def.checks)r.kind==="max"&&(t===null||r.value<t)&&(t=r.value);return t}};cr.create=e=>{var t;return new cr({checks:[],typeName:E.ZodBigInt,coerce:(t=e?.coerce)!==null&&t!==void 0?t:!1,...P(e)})};var pr=class extends L{_parse(t){if(this._def.coerce&&(t.data=!!t.data),this._getType(t)!==v.boolean){let n=this._getOrReturnCtx(t);return b(n,{code:h.invalid_type,expected:v.boolean,received:n.parsedType}),R}return ye(t.data)}};pr.create=e=>new pr({typeName:E.ZodBoolean,coerce:e?.coerce||!1,...P(e)});var lr=class e extends L{_parse(t){if(this._def.coerce&&(t.data=new Date(t.data)),this._getType(t)!==v.date){let s=this._getOrReturnCtx(t);return b(s,{code:h.invalid_type,expected:v.date,received:s.parsedType}),R}if(isNaN(t.data.getTime())){let s=this._getOrReturnCtx(t);return b(s,{code:h.invalid_date}),R}let n=new ce,a;for(let s of this._def.checks)s.kind==="min"?t.data.getTime()<s.value&&(a=this._getOrReturnCtx(t,a),b(a,{code:h.too_small,message:s.message,inclusive:!0,exact:!1,minimum:s.value,type:"date"}),n.dirty()):s.kind==="max"?t.data.getTime()>s.value&&(a=this._getOrReturnCtx(t,a),b(a,{code:h.too_big,message:s.message,inclusive:!0,exact:!1,maximum:s.value,type:"date"}),n.dirty()):B.assertNever(s);return{status:n.value,value:new Date(t.data.getTime())}}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}min(t,r){return this._addCheck({kind:"min",value:t.getTime(),message:S.toString(r)})}max(t,r){return this._addCheck({kind:"max",value:t.getTime(),message:S.toString(r)})}get minDate(){let t=null;for(let r of this._def.checks)r.kind==="min"&&(t===null||r.value>t)&&(t=r.value);return t!=null?new Date(t):null}get maxDate(){let t=null;for(let r of this._def.checks)r.kind==="max"&&(t===null||r.value<t)&&(t=r.value);return t!=null?new Date(t):null}};lr.create=e=>new lr({checks:[],coerce:e?.coerce||!1,typeName:E.ZodDate,...P(e)});var cn=class extends L{_parse(t){if(this._getType(t)!==v.symbol){let n=this._getOrReturnCtx(t);return b(n,{code:h.invalid_type,expected:v.symbol,received:n.parsedType}),R}return ye(t.data)}};cn.create=e=>new cn({typeName:E.ZodSymbol,...P(e)});var dr=class extends L{_parse(t){if(this._getType(t)!==v.undefined){let n=this._getOrReturnCtx(t);return b(n,{code:h.invalid_type,expected:v.undefined,received:n.parsedType}),R}return ye(t.data)}};dr.create=e=>new dr({typeName:E.ZodUndefined,...P(e)});var fr=class extends L{_parse(t){if(this._getType(t)!==v.null){let n=this._getOrReturnCtx(t);return b(n,{code:h.invalid_type,expected:v.null,received:n.parsedType}),R}return ye(t.data)}};fr.create=e=>new fr({typeName:E.ZodNull,...P(e)});var Gt=class extends L{constructor(){super(...arguments),this._any=!0}_parse(t){return ye(t.data)}};Gt.create=e=>new Gt({typeName:E.ZodAny,...P(e)});var wt=class extends L{constructor(){super(...arguments),this._unknown=!0}_parse(t){return ye(t.data)}};wt.create=e=>new wt({typeName:E.ZodUnknown,...P(e)});var Ze=class extends L{_parse(t){let r=this._getOrReturnCtx(t);return b(r,{code:h.invalid_type,expected:v.never,received:r.parsedType}),R}};Ze.create=e=>new Ze({typeName:E.ZodNever,...P(e)});var pn=class extends L{_parse(t){if(this._getType(t)!==v.undefined){let n=this._getOrReturnCtx(t);return b(n,{code:h.invalid_type,expected:v.void,received:n.parsedType}),R}return ye(t.data)}};pn.create=e=>new pn({typeName:E.ZodVoid,...P(e)});var St=class e extends L{_parse(t){let{ctx:r,status:n}=this._processInputParams(t),a=this._def;if(r.parsedType!==v.array)return b(r,{code:h.invalid_type,expected:v.array,received:r.parsedType}),R;if(a.exactLength!==null){let o=r.data.length>a.exactLength.value,i=r.data.length<a.exactLength.value;(o||i)&&(b(r,{code:o?h.too_big:h.too_small,minimum:i?a.exactLength.value:void 0,maximum:o?a.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:a.exactLength.message}),n.dirty())}if(a.minLength!==null&&r.data.length<a.minLength.value&&(b(r,{code:h.too_small,minimum:a.minLength.value,type:"array",inclusive:!0,exact:!1,message:a.minLength.message}),n.dirty()),a.maxLength!==null&&r.data.length>a.maxLength.value&&(b(r,{code:h.too_big,maximum:a.maxLength.value,type:"array",inclusive:!0,exact:!1,message:a.maxLength.message}),n.dirty()),r.common.async)return Promise.all([...r.data].map((o,i)=>a.type._parseAsync(new Me(r,o,r.path,i)))).then(o=>ce.mergeArray(n,o));let s=[...r.data].map((o,i)=>a.type._parseSync(new Me(r,o,r.path,i)));return ce.mergeArray(n,s)}get element(){return this._def.type}min(t,r){return new e({...this._def,minLength:{value:t,message:S.toString(r)}})}max(t,r){return new e({...this._def,maxLength:{value:t,message:S.toString(r)}})}length(t,r){return new e({...this._def,exactLength:{value:t,message:S.toString(r)}})}nonempty(t){return this.min(1,t)}};St.create=(e,t)=>new St({type:e,minLength:null,maxLength:null,exactLength:null,typeName:E.ZodArray,...P(t)});function sn(e){if(e instanceof we){let t={};for(let r in e.shape){let n=e.shape[r];t[r]=Be.create(sn(n))}return new we({...e._def,shape:()=>t})}else return e instanceof St?new St({...e._def,type:sn(e.element)}):e instanceof Be?Be.create(sn(e.unwrap())):e instanceof lt?lt.create(sn(e.unwrap())):e instanceof pt?pt.create(e.items.map(t=>sn(t))):e}var we=class e extends L{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let t=this._def.shape(),r=B.objectKeys(t);return this._cached={shape:t,keys:r}}_parse(t){if(this._getType(t)!==v.object){let d=this._getOrReturnCtx(t);return b(d,{code:h.invalid_type,expected:v.object,received:d.parsedType}),R}let{status:n,ctx:a}=this._processInputParams(t),{shape:s,keys:o}=this._getCached(),i=[];if(!(this._def.catchall instanceof Ze&&this._def.unknownKeys==="strip"))for(let d in a.data)o.includes(d)||i.push(d);let u=[];for(let d of o){let f=s[d],g=a.data[d];u.push({key:{status:"valid",value:d},value:f._parse(new Me(a,g,a.path,d)),alwaysSet:d in a.data})}if(this._def.catchall instanceof Ze){let d=this._def.unknownKeys;if(d==="passthrough")for(let f of i)u.push({key:{status:"valid",value:f},value:{status:"valid",value:a.data[f]}});else if(d==="strict")i.length>0&&(b(a,{code:h.unrecognized_keys,keys:i}),n.dirty());else if(d!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{let d=this._def.catchall;for(let f of i){let g=a.data[f];u.push({key:{status:"valid",value:f},value:d._parse(new Me(a,g,a.path,f)),alwaysSet:f in a.data})}}return a.common.async?Promise.resolve().then(async()=>{let d=[];for(let f of u){let g=await f.key,A=await f.value;d.push({key:g,value:A,alwaysSet:f.alwaysSet})}return d}).then(d=>ce.mergeObjectSync(n,d)):ce.mergeObjectSync(n,u)}get shape(){return this._def.shape()}strict(t){return S.errToObj,new e({...this._def,unknownKeys:"strict",...t!==void 0?{errorMap:(r,n)=>{var a,s,o,i;let u=(o=(s=(a=this._def).errorMap)===null||s===void 0?void 0:s.call(a,r,n).message)!==null&&o!==void 0?o:n.defaultError;return r.code==="unrecognized_keys"?{message:(i=S.errToObj(t).message)!==null&&i!==void 0?i:u}:{message:u}}}:{}})}strip(){return new e({...this._def,unknownKeys:"strip"})}passthrough(){return new e({...this._def,unknownKeys:"passthrough"})}extend(t){return new e({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new e({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:E.ZodObject})}setKey(t,r){return this.augment({[t]:r})}catchall(t){return new e({...this._def,catchall:t})}pick(t){let r={};return B.objectKeys(t).forEach(n=>{t[n]&&this.shape[n]&&(r[n]=this.shape[n])}),new e({...this._def,shape:()=>r})}omit(t){let r={};return B.objectKeys(this.shape).forEach(n=>{t[n]||(r[n]=this.shape[n])}),new e({...this._def,shape:()=>r})}deepPartial(){return sn(this)}partial(t){let r={};return B.objectKeys(this.shape).forEach(n=>{let a=this.shape[n];t&&!t[n]?r[n]=a:r[n]=a.optional()}),new e({...this._def,shape:()=>r})}required(t){let r={};return B.objectKeys(this.shape).forEach(n=>{if(t&&!t[n])r[n]=this.shape[n];else{let s=this.shape[n];for(;s instanceof Be;)s=s._def.innerType;r[n]=s}}),new e({...this._def,shape:()=>r})}keyof(){return GA(B.objectKeys(this.shape))}};we.create=(e,t)=>new we({shape:()=>e,unknownKeys:"strip",catchall:Ze.create(),typeName:E.ZodObject,...P(t)});we.strictCreate=(e,t)=>new we({shape:()=>e,unknownKeys:"strict",catchall:Ze.create(),typeName:E.ZodObject,...P(t)});we.lazycreate=(e,t)=>new we({shape:e,unknownKeys:"strip",catchall:Ze.create(),typeName:E.ZodObject,...P(t)});var mr=class extends L{_parse(t){let{ctx:r}=this._processInputParams(t),n=this._def.options;function a(s){for(let i of s)if(i.result.status==="valid")return i.result;for(let i of s)if(i.result.status==="dirty")return r.common.issues.push(...i.ctx.common.issues),i.result;let o=s.map(i=>new Re(i.ctx.common.issues));return b(r,{code:h.invalid_union,unionErrors:o}),R}if(r.common.async)return Promise.all(n.map(async s=>{let o={...r,common:{...r.common,issues:[]},parent:null};return{result:await s._parseAsync({data:r.data,path:r.path,parent:o}),ctx:o}})).then(a);{let s,o=[];for(let u of n){let d={...r,common:{...r.common,issues:[]},parent:null},f=u._parseSync({data:r.data,path:r.path,parent:d});if(f.status==="valid")return f;f.status==="dirty"&&!s&&(s={result:f,ctx:d}),d.common.issues.length&&o.push(d.common.issues)}if(s)return r.common.issues.push(...s.ctx.common.issues),s.result;let i=o.map(u=>new Re(u));return b(r,{code:h.invalid_union,unionErrors:i}),R}}get options(){return this._def.options}};mr.create=(e,t)=>new mr({options:e,typeName:E.ZodUnion,...P(t)});var It=e=>e instanceof hr?It(e.schema):e instanceof Oe?It(e.innerType()):e instanceof yr?[e.value]:e instanceof br?e.options:e instanceof Ar?B.objectValues(e.enum):e instanceof vr?It(e._def.innerType):e instanceof dr?[void 0]:e instanceof fr?[null]:e instanceof Be?[void 0,...It(e.unwrap())]:e instanceof lt?[null,...It(e.unwrap())]:e instanceof Sa||e instanceof Ir?It(e.unwrap()):e instanceof _r?It(e._def.innerType):[],Fs=class e extends L{_parse(t){let{ctx:r}=this._processInputParams(t);if(r.parsedType!==v.object)return b(r,{code:h.invalid_type,expected:v.object,received:r.parsedType}),R;let n=this.discriminator,a=r.data[n],s=this.optionsMap.get(a);return s?r.common.async?s._parseAsync({data:r.data,path:r.path,parent:r}):s._parseSync({data:r.data,path:r.path,parent:r}):(b(r,{code:h.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[n]}),R)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(t,r,n){let a=new Map;for(let s of r){let o=It(s.shape[t]);if(!o.length)throw new Error(`A discriminator value for key \`${t}\` could not be extracted from all schema options`);for(let i of o){if(a.has(i))throw new Error(`Discriminator property ${String(t)} has duplicate value ${String(i)}`);a.set(i,s)}}return new e({typeName:E.ZodDiscriminatedUnion,discriminator:t,options:r,optionsMap:a,...P(n)})}};function Zu(e,t){let r=Bt(e),n=Bt(t);if(e===t)return{valid:!0,data:e};if(r===v.object&&n===v.object){let a=B.objectKeys(t),s=B.objectKeys(e).filter(i=>a.indexOf(i)!==-1),o={...e,...t};for(let i of s){let u=Zu(e[i],t[i]);if(!u.valid)return{valid:!1};o[i]=u.data}return{valid:!0,data:o}}else if(r===v.array&&n===v.array){if(e.length!==t.length)return{valid:!1};let a=[];for(let s=0;s<e.length;s++){let o=e[s],i=t[s],u=Zu(o,i);if(!u.valid)return{valid:!1};a.push(u.data)}return{valid:!0,data:a}}else return r===v.date&&n===v.date&&+e==+t?{valid:!0,data:e}:{valid:!1}}var gr=class extends L{_parse(t){let{status:r,ctx:n}=this._processInputParams(t),a=(s,o)=>{if(Yu(s)||Yu(o))return R;let i=Zu(s.value,o.value);return i.valid?((Hu(s)||Hu(o))&&r.dirty(),{status:r.value,value:i.data}):(b(n,{code:h.invalid_intersection_types}),R)};return n.common.async?Promise.all([this._def.left._parseAsync({data:n.data,path:n.path,parent:n}),this._def.right._parseAsync({data:n.data,path:n.path,parent:n})]).then(([s,o])=>a(s,o)):a(this._def.left._parseSync({data:n.data,path:n.path,parent:n}),this._def.right._parseSync({data:n.data,path:n.path,parent:n}))}};gr.create=(e,t,r)=>new gr({left:e,right:t,typeName:E.ZodIntersection,...P(r)});var pt=class e extends L{_parse(t){let{status:r,ctx:n}=this._processInputParams(t);if(n.parsedType!==v.array)return b(n,{code:h.invalid_type,expected:v.array,received:n.parsedType}),R;if(n.data.length<this._def.items.length)return b(n,{code:h.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),R;!this._def.rest&&n.data.length>this._def.items.length&&(b(n,{code:h.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),r.dirty());let s=[...n.data].map((o,i)=>{let u=this._def.items[i]||this._def.rest;return u?u._parse(new Me(n,o,n.path,i)):null}).filter(o=>!!o);return n.common.async?Promise.all(s).then(o=>ce.mergeArray(r,o)):ce.mergeArray(r,s)}get items(){return this._def.items}rest(t){return new e({...this._def,rest:t})}};pt.create=(e,t)=>{if(!Array.isArray(e))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new pt({items:e,typeName:E.ZodTuple,rest:null,...P(t)})};var Qs=class e extends L{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){let{status:r,ctx:n}=this._processInputParams(t);if(n.parsedType!==v.object)return b(n,{code:h.invalid_type,expected:v.object,received:n.parsedType}),R;let a=[],s=this._def.keyType,o=this._def.valueType;for(let i in n.data)a.push({key:s._parse(new Me(n,i,n.path,i)),value:o._parse(new Me(n,n.data[i],n.path,i)),alwaysSet:i in n.data});return n.common.async?ce.mergeObjectAsync(r,a):ce.mergeObjectSync(r,a)}get element(){return this._def.valueType}static create(t,r,n){return r instanceof L?new e({keyType:t,valueType:r,typeName:E.ZodRecord,...P(n)}):new e({keyType:Mt.create(),valueType:t,typeName:E.ZodRecord,...P(r)})}},ln=class extends L{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){let{status:r,ctx:n}=this._processInputParams(t);if(n.parsedType!==v.map)return b(n,{code:h.invalid_type,expected:v.map,received:n.parsedType}),R;let a=this._def.keyType,s=this._def.valueType,o=[...n.data.entries()].map(([i,u],d)=>({key:a._parse(new Me(n,i,n.path,[d,"key"])),value:s._parse(new Me(n,u,n.path,[d,"value"]))}));if(n.common.async){let i=new Map;return Promise.resolve().then(async()=>{for(let u of o){let d=await u.key,f=await u.value;if(d.status==="aborted"||f.status==="aborted")return R;(d.status==="dirty"||f.status==="dirty")&&r.dirty(),i.set(d.value,f.value)}return{status:r.value,value:i}})}else{let i=new Map;for(let u of o){let d=u.key,f=u.value;if(d.status==="aborted"||f.status==="aborted")return R;(d.status==="dirty"||f.status==="dirty")&&r.dirty(),i.set(d.value,f.value)}return{status:r.value,value:i}}}};ln.create=(e,t,r)=>new ln({valueType:t,keyType:e,typeName:E.ZodMap,...P(r)});var dn=class e extends L{_parse(t){let{status:r,ctx:n}=this._processInputParams(t);if(n.parsedType!==v.set)return b(n,{code:h.invalid_type,expected:v.set,received:n.parsedType}),R;let a=this._def;a.minSize!==null&&n.data.size<a.minSize.value&&(b(n,{code:h.too_small,minimum:a.minSize.value,type:"set",inclusive:!0,exact:!1,message:a.minSize.message}),r.dirty()),a.maxSize!==null&&n.data.size>a.maxSize.value&&(b(n,{code:h.too_big,maximum:a.maxSize.value,type:"set",inclusive:!0,exact:!1,message:a.maxSize.message}),r.dirty());let s=this._def.valueType;function o(u){let d=new Set;for(let f of u){if(f.status==="aborted")return R;f.status==="dirty"&&r.dirty(),d.add(f.value)}return{status:r.value,value:d}}let i=[...n.data.values()].map((u,d)=>s._parse(new Me(n,u,n.path,d)));return n.common.async?Promise.all(i).then(u=>o(u)):o(i)}min(t,r){return new e({...this._def,minSize:{value:t,message:S.toString(r)}})}max(t,r){return new e({...this._def,maxSize:{value:t,message:S.toString(r)}})}size(t,r){return this.min(t,r).max(t,r)}nonempty(t){return this.min(1,t)}};dn.create=(e,t)=>new dn({valueType:e,minSize:null,maxSize:null,typeName:E.ZodSet,...P(t)});var $s=class e extends L{constructor(){super(...arguments),this.validate=this.implement}_parse(t){let{ctx:r}=this._processInputParams(t);if(r.parsedType!==v.function)return b(r,{code:h.invalid_type,expected:v.function,received:r.parsedType}),R;function n(i,u){return Ms({data:i,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,Bs(),un].filter(d=>!!d),issueData:{code:h.invalid_arguments,argumentsError:u}})}function a(i,u){return Ms({data:i,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,Bs(),un].filter(d=>!!d),issueData:{code:h.invalid_return_type,returnTypeError:u}})}let s={errorMap:r.common.contextualErrorMap},o=r.data;if(this._def.returns instanceof Ft){let i=this;return ye(async function(...u){let d=new Re([]),f=await i._def.args.parseAsync(u,s).catch(I=>{throw d.addIssue(n(u,I)),d}),g=await Reflect.apply(o,this,f);return await i._def.returns._def.type.parseAsync(g,s).catch(I=>{throw d.addIssue(a(g,I)),d})})}else{let i=this;return ye(function(...u){let d=i._def.args.safeParse(u,s);if(!d.success)throw new Re([n(u,d.error)]);let f=Reflect.apply(o,this,d.data),g=i._def.returns.safeParse(f,s);if(!g.success)throw new Re([a(f,g.error)]);return g.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...t){return new e({...this._def,args:pt.create(t).rest(wt.create())})}returns(t){return new e({...this._def,returns:t})}implement(t){return this.parse(t)}strictImplement(t){return this.parse(t)}static create(t,r,n){return new e({args:t||pt.create([]).rest(wt.create()),returns:r||wt.create(),typeName:E.ZodFunction,...P(n)})}},hr=class extends L{get schema(){return this._def.getter()}_parse(t){let{ctx:r}=this._processInputParams(t);return this._def.getter()._parse({data:r.data,path:r.path,parent:r})}};hr.create=(e,t)=>new hr({getter:e,typeName:E.ZodLazy,...P(t)});var yr=class extends L{_parse(t){if(t.data!==this._def.value){let r=this._getOrReturnCtx(t);return b(r,{received:r.data,code:h.invalid_literal,expected:this._def.value}),R}return{status:"valid",value:t.data}}get value(){return this._def.value}};yr.create=(e,t)=>new yr({value:e,typeName:E.ZodLiteral,...P(t)});function GA(e,t){return new br({values:e,typeName:E.ZodEnum,...P(t)})}var br=class e extends L{constructor(){super(...arguments),va.set(this,void 0)}_parse(t){if(typeof t.data!="string"){let r=this._getOrReturnCtx(t),n=this._def.values;return b(r,{expected:B.joinValues(n),received:r.parsedType,code:h.invalid_type}),R}if(Gs(this,va,"f")||kA(this,va,new Set(this._def.values),"f"),!Gs(this,va,"f").has(t.data)){let r=this._getOrReturnCtx(t),n=this._def.values;return b(r,{received:r.data,code:h.invalid_enum_value,options:n}),R}return ye(t.data)}get options(){return this._def.values}get enum(){let t={};for(let r of this._def.values)t[r]=r;return t}get Values(){let t={};for(let r of this._def.values)t[r]=r;return t}get Enum(){let t={};for(let r of this._def.values)t[r]=r;return t}extract(t,r=this._def){return e.create(t,{...this._def,...r})}exclude(t,r=this._def){return e.create(this.options.filter(n=>!t.includes(n)),{...this._def,...r})}};va=new WeakMap;br.create=GA;var Ar=class extends L{constructor(){super(...arguments),_a.set(this,void 0)}_parse(t){let r=B.getValidEnumValues(this._def.values),n=this._getOrReturnCtx(t);if(n.parsedType!==v.string&&n.parsedType!==v.number){let a=B.objectValues(r);return b(n,{expected:B.joinValues(a),received:n.parsedType,code:h.invalid_type}),R}if(Gs(this,_a,"f")||kA(this,_a,new Set(B.getValidEnumValues(this._def.values)),"f"),!Gs(this,_a,"f").has(t.data)){let a=B.objectValues(r);return b(n,{received:n.data,code:h.invalid_enum_value,options:a}),R}return ye(t.data)}get enum(){return this._def.values}};_a=new WeakMap;Ar.create=(e,t)=>new Ar({values:e,typeName:E.ZodNativeEnum,...P(t)});var Ft=class extends L{unwrap(){return this._def.type}_parse(t){let{ctx:r}=this._processInputParams(t);if(r.parsedType!==v.promise&&r.common.async===!1)return b(r,{code:h.invalid_type,expected:v.promise,received:r.parsedType}),R;let n=r.parsedType===v.promise?r.data:Promise.resolve(r.data);return ye(n.then(a=>this._def.type.parseAsync(a,{path:r.path,errorMap:r.common.contextualErrorMap})))}};Ft.create=(e,t)=>new Ft({type:e,typeName:E.ZodPromise,...P(t)});var Oe=class extends L{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===E.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(t){let{status:r,ctx:n}=this._processInputParams(t),a=this._def.effect||null,s={addIssue:o=>{b(n,o),o.fatal?r.abort():r.dirty()},get path(){return n.path}};if(s.addIssue=s.addIssue.bind(s),a.type==="preprocess"){let o=a.transform(n.data,s);if(n.common.async)return Promise.resolve(o).then(async i=>{if(r.value==="aborted")return R;let u=await this._def.schema._parseAsync({data:i,path:n.path,parent:n});return u.status==="aborted"?R:u.status==="dirty"||r.value==="dirty"?on(u.value):u});{if(r.value==="aborted")return R;let i=this._def.schema._parseSync({data:o,path:n.path,parent:n});return i.status==="aborted"?R:i.status==="dirty"||r.value==="dirty"?on(i.value):i}}if(a.type==="refinement"){let o=i=>{let u=a.refinement(i,s);if(n.common.async)return Promise.resolve(u);if(u instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return i};if(n.common.async===!1){let i=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});return i.status==="aborted"?R:(i.status==="dirty"&&r.dirty(),o(i.value),{status:r.value,value:i.value})}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(i=>i.status==="aborted"?R:(i.status==="dirty"&&r.dirty(),o(i.value).then(()=>({status:r.value,value:i.value}))))}if(a.type==="transform")if(n.common.async===!1){let o=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});if(!Ia(o))return o;let i=a.transform(o.value,s);if(i instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:r.value,value:i}}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(o=>Ia(o)?Promise.resolve(a.transform(o.value,s)).then(i=>({status:r.value,value:i})):o);B.assertNever(a)}};Oe.create=(e,t,r)=>new Oe({schema:e,typeName:E.ZodEffects,effect:t,...P(r)});Oe.createWithPreprocess=(e,t,r)=>new Oe({schema:t,effect:{type:"preprocess",transform:e},typeName:E.ZodEffects,...P(r)});var Be=class extends L{_parse(t){return this._getType(t)===v.undefined?ye(void 0):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}};Be.create=(e,t)=>new Be({innerType:e,typeName:E.ZodOptional,...P(t)});var lt=class extends L{_parse(t){return this._getType(t)===v.null?ye(null):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}};lt.create=(e,t)=>new lt({innerType:e,typeName:E.ZodNullable,...P(t)});var vr=class extends L{_parse(t){let{ctx:r}=this._processInputParams(t),n=r.data;return r.parsedType===v.undefined&&(n=this._def.defaultValue()),this._def.innerType._parse({data:n,path:r.path,parent:r})}removeDefault(){return this._def.innerType}};vr.create=(e,t)=>new vr({innerType:e,typeName:E.ZodDefault,defaultValue:typeof t.default=="function"?t.default:()=>t.default,...P(t)});var _r=class extends L{_parse(t){let{ctx:r}=this._processInputParams(t),n={...r,common:{...r.common,issues:[]}},a=this._def.innerType._parse({data:n.data,path:n.path,parent:{...n}});return wa(a)?a.then(s=>({status:"valid",value:s.status==="valid"?s.value:this._def.catchValue({get error(){return new Re(n.common.issues)},input:n.data})})):{status:"valid",value:a.status==="valid"?a.value:this._def.catchValue({get error(){return new Re(n.common.issues)},input:n.data})}}removeCatch(){return this._def.innerType}};_r.create=(e,t)=>new _r({innerType:e,typeName:E.ZodCatch,catchValue:typeof t.catch=="function"?t.catch:()=>t.catch,...P(t)});var fn=class extends L{_parse(t){if(this._getType(t)!==v.nan){let n=this._getOrReturnCtx(t);return b(n,{code:h.invalid_type,expected:v.nan,received:n.parsedType}),R}return{status:"valid",value:t.data}}};fn.create=e=>new fn({typeName:E.ZodNaN,...P(e)});var dM=Symbol("zod_brand"),Sa=class extends L{_parse(t){let{ctx:r}=this._processInputParams(t),n=r.data;return this._def.type._parse({data:n,path:r.path,parent:r})}unwrap(){return this._def.type}},xa=class e extends L{_parse(t){let{status:r,ctx:n}=this._processInputParams(t);if(n.common.async)return(async()=>{let s=await this._def.in._parseAsync({data:n.data,path:n.path,parent:n});return s.status==="aborted"?R:s.status==="dirty"?(r.dirty(),on(s.value)):this._def.out._parseAsync({data:s.value,path:n.path,parent:n})})();{let a=this._def.in._parseSync({data:n.data,path:n.path,parent:n});return a.status==="aborted"?R:a.status==="dirty"?(r.dirty(),{status:"dirty",value:a.value}):this._def.out._parseSync({data:a.value,path:n.path,parent:n})}}static create(t,r){return new e({in:t,out:r,typeName:E.ZodPipeline})}},Ir=class extends L{_parse(t){let r=this._def.innerType._parse(t),n=a=>(Ia(a)&&(a.value=Object.freeze(a.value)),a);return wa(r)?r.then(a=>n(a)):n(r)}unwrap(){return this._def.innerType}};Ir.create=(e,t)=>new Ir({innerType:e,typeName:E.ZodReadonly,...P(t)});function FA(e,t={},r){return e?Gt.create().superRefine((n,a)=>{var s,o;if(!e(n)){let i=typeof t=="function"?t(n):typeof t=="string"?{message:t}:t,u=(o=(s=i.fatal)!==null&&s!==void 0?s:r)!==null&&o!==void 0?o:!0,d=typeof i=="string"?{message:i}:i;a.addIssue({code:"custom",...d,fatal:u})}}):Gt.create()}var fM={object:we.lazycreate},E;(function(e){e.ZodString="ZodString",e.ZodNumber="ZodNumber",e.ZodNaN="ZodNaN",e.ZodBigInt="ZodBigInt",e.ZodBoolean="ZodBoolean",e.ZodDate="ZodDate",e.ZodSymbol="ZodSymbol",e.ZodUndefined="ZodUndefined",e.ZodNull="ZodNull",e.ZodAny="ZodAny",e.ZodUnknown="ZodUnknown",e.ZodNever="ZodNever",e.ZodVoid="ZodVoid",e.ZodArray="ZodArray",e.ZodObject="ZodObject",e.ZodUnion="ZodUnion",e.ZodDiscriminatedUnion="ZodDiscriminatedUnion",e.ZodIntersection="ZodIntersection",e.ZodTuple="ZodTuple",e.ZodRecord="ZodRecord",e.ZodMap="ZodMap",e.ZodSet="ZodSet",e.ZodFunction="ZodFunction",e.ZodLazy="ZodLazy",e.ZodLiteral="ZodLiteral",e.ZodEnum="ZodEnum",e.ZodEffects="ZodEffects",e.ZodNativeEnum="ZodNativeEnum",e.ZodOptional="ZodOptional",e.ZodNullable="ZodNullable",e.ZodDefault="ZodDefault",e.ZodCatch="ZodCatch",e.ZodPromise="ZodPromise",e.ZodBranded="ZodBranded",e.ZodPipeline="ZodPipeline",e.ZodReadonly="ZodReadonly"})(E||(E={}));var mM=(e,t={message:`Input not instance of ${e.name}`})=>FA(r=>r instanceof e,t),jA=Mt.create,QA=ur.create,gM=fn.create,hM=cr.create,$A=pr.create,yM=lr.create,bM=cn.create,AM=dr.create,vM=fr.create,_M=Gt.create,IM=wt.create,wM=Ze.create,SM=pn.create,xM=St.create,TM=we.create,EM=we.strictCreate,RM=mr.create,OM=Fs.create,CM=gr.create,PM=pt.create,LM=Qs.create,qM=ln.create,NM=dn.create,UM=$s.create,kM=hr.create,DM=yr.create,BM=br.create,MM=Ar.create,GM=Ft.create,NA=Oe.create,FM=Be.create,jM=lt.create,QM=Oe.createWithPreprocess,$M=xa.create,WM=()=>jA().optional(),VM=()=>QA().optional(),KM=()=>$A().optional(),YM={string:e=>Mt.create({...e,coerce:!0}),number:e=>ur.create({...e,coerce:!0}),boolean:e=>pr.create({...e,coerce:!0}),bigint:e=>cr.create({...e,coerce:!0}),date:e=>lr.create({...e,coerce:!0})},HM=R,y=Object.freeze({__proto__:null,defaultErrorMap:un,setErrorMap:H0,getErrorMap:Bs,makeIssue:Ms,EMPTY_PATH:Z0,addIssueToContext:b,ParseStatus:ce,INVALID:R,DIRTY:on,OK:ye,isAborted:Yu,isDirty:Hu,isValid:Ia,isAsync:wa,get util(){return B},get objectUtil(){return Ku},ZodParsedType:v,getParsedType:Bt,ZodType:L,datetimeRegex:MA,ZodString:Mt,ZodNumber:ur,ZodBigInt:cr,ZodBoolean:pr,ZodDate:lr,ZodSymbol:cn,ZodUndefined:dr,ZodNull:fr,ZodAny:Gt,ZodUnknown:wt,ZodNever:Ze,ZodVoid:pn,ZodArray:St,ZodObject:we,ZodUnion:mr,ZodDiscriminatedUnion:Fs,ZodIntersection:gr,ZodTuple:pt,ZodRecord:Qs,ZodMap:ln,ZodSet:dn,ZodFunction:$s,ZodLazy:hr,ZodLiteral:yr,ZodEnum:br,ZodNativeEnum:Ar,ZodPromise:Ft,ZodEffects:Oe,ZodTransformer:Oe,ZodOptional:Be,ZodNullable:lt,ZodDefault:vr,ZodCatch:_r,ZodNaN:fn,BRAND:dM,ZodBranded:Sa,ZodPipeline:xa,ZodReadonly:Ir,custom:FA,Schema:L,ZodSchema:L,late:fM,get ZodFirstPartyTypeKind(){return E},coerce:YM,any:_M,array:xM,bigint:hM,boolean:$A,date:yM,discriminatedUnion:OM,effect:NA,enum:BM,function:UM,instanceof:mM,intersection:CM,lazy:kM,literal:DM,map:qM,nan:gM,nativeEnum:MM,never:wM,null:vM,nullable:jM,number:QA,object:TM,oboolean:KM,onumber:VM,optional:FM,ostring:WM,pipeline:$M,preprocess:QM,promise:GM,record:LM,set:NM,strictObject:EM,string:jA,symbol:bM,transformer:NA,tuple:PM,undefined:AM,union:RM,unknown:IM,void:SM,NEVER:HM,ZodIssueCode:h,quotelessJson:Y0,ZodError:Re});var WA=require("openai/helpers/zod"),ee=class e{constructor(t){this.messages=t}get responseFormat(){return this._responseFormat}format(t){return t instanceof y.ZodType?this._responseFormat=(0,WA.zodResponseFormat)(t,"key"):this._responseFormat=t,this}user(t){return this.messages.push({role:"user",content:t}),this}system(t){return this.messages.push({role:"system",content:t}),this}static user(t){return new e([{role:"user",content:t}])}static system(t){return new e([{role:"system",content:t}])}static fromRequest(t){let r=new e(t.messages);return t.format&&r.format(t.format),r}};function Ws(e){return ee.user(`Summarize this text:
|
|
37
|
+
`;function jr(e){return uo.default.verify(e,tS,{algorithms:["RS256"]})}function rS(e,t){return uo.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}var ja={};w(ja,{getFeatures:()=>po});var c=require("@budibase/types");var aS={[c.PlanType.FREE]:[...me.SELF_FREE_LICENSE.features],[c.PlanType.PREMIUM]:void 0,[c.PlanType.PREMIUM_PLUS]:[c.Feature.APP_BACKUPS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.PDF,c.Feature.BUDIBASE_AI],[c.PlanType.PREMIUM_PLUS_TRIAL]:[c.Feature.APP_BACKUPS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.PDF,c.Feature.BUDIBASE_AI],[c.PlanType.PRO]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS],[c.PlanType.TEAM]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS],[c.PlanType.BUSINESS]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.PDF,c.Feature.BUDIBASE_AI],[c.PlanType.ENTERPRISE_BASIC]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.OFFLINE,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.PWA,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF,c.Feature.BUDIBASE_AI],[c.PlanType.ENTERPRISE_BASIC_TRIAL]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.PWA,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF,c.Feature.BUDIBASE_AI],[c.PlanType.ENTERPRISE]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.OFFLINE,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.PWA,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF,c.Feature.BUDIBASE_AI]},nS={[c.PlanType.FREE]:[...me.CLOUD_FREE_LICENSE.features],[c.PlanType.PREMIUM]:[c.Feature.APP_BACKUPS,c.Feature.BRANDING,c.Feature.APP_BUILDERS,c.Feature.VIEW_PERMISSIONS,c.Feature.PDF],[c.PlanType.PREMIUM_PLUS]:[c.Feature.APP_BACKUPS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.BUDIBASE_AI,c.Feature.PDF],[c.PlanType.PREMIUM_PLUS_TRIAL]:[c.Feature.APP_BACKUPS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.BUDIBASE_AI,c.Feature.PDF],[c.PlanType.PRO]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.BRANDING],[c.PlanType.TEAM]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.BRANDING],[c.PlanType.BUSINESS]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.BUDIBASE_AI,c.Feature.PDF],[c.PlanType.ENTERPRISE_BASIC]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.OFFLINE,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.BUDIBASE_AI,c.Feature.PWA,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF],[c.PlanType.ENTERPRISE_BASIC_TRIAL]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.BUDIBASE_AI,c.Feature.PWA,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF],[c.PlanType.ENTERPRISE]:[c.Feature.USER_GROUPS,c.Feature.APP_BACKUPS,c.Feature.ENVIRONMENT_VARIABLES,c.Feature.ENFORCEABLE_SSO,c.Feature.AUDIT_LOGS,c.Feature.BRANDING,c.Feature.SYNC_AUTOMATIONS,c.Feature.APP_BUILDERS,c.Feature.EXPANDED_PUBLIC_API,c.Feature.VIEW_PERMISSIONS,c.Feature.TRIGGER_AUTOMATION_RUN,c.Feature.SCIM,c.Feature.VIEW_READONLY_COLUMNS,c.Feature.AI_CUSTOM_CONFIGS,c.Feature.BUDIBASE_AI,c.Feature.PWA,c.Feature.CUSTOM_APP_SCRIPTS,c.Feature.PDF]};function po(e,t){let r=[];function a(n){let o=n[t];if(!o)throw new Error(`Features do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case c.Hosting.SELF:r=a(aS);break;case c.Hosting.CLOUD:r=a(nS);break}return r}var Wa={};w(Wa,{UNLIMITED:()=>d,getQuotas:()=>co});var G=require("@budibase/types");var l=He,np=me,d=-1,$r=e=>e*1e6,oS={[G.PlanType.FREE]:{...np.CLOUD_FREE_LICENSE.quotas},[G.PlanType.PREMIUM]:{usage:{monthly:{...l.queries(d),...l.automations(1e3),...l.budibaseAICredits(0)},static:{...l.rows(1e4),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(0),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(7),...l.appBackupRetentionDays(7)}},[G.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...l.queries(d),...l.automations(5e3),...l.budibaseAICredits($r(2))},static:{...l.rows(25e3),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(0),...l.plugins(d),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[G.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...l.queries(d),...l.automations(5e3),...l.budibaseAICredits($r(2))},static:{...l.rows(25e3),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(0),...l.plugins(d),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[G.PlanType.PRO]:{usage:{monthly:{...l.queries(d),...l.automations(1e3),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(5),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(7),...l.appBackupRetentionDays(7)}},[G.PlanType.TEAM]:{usage:{monthly:{...l.queries(d),...l.automations(5e3),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(10),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(90)}},[G.PlanType.BUSINESS]:{usage:{monthly:{...l.queries(d),...l.automations(1e4),...l.budibaseAICredits(0)},static:{...l.rows(5e4),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(50),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(365),...l.appBackupRetentionDays(365)}},[G.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits($r(4))},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(d),...l.appBackupRetentionDays(d)}},[G.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits($r(4))},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(15),...l.appBackupRetentionDays(15)}},[G.PlanType.ENTERPRISE]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits($r(4))},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(d),...l.appBackupRetentionDays(d)}}},sS={[G.PlanType.FREE]:{...np.SELF_FREE_LICENSE.quotas},[G.PlanType.PREMIUM]:void 0,[G.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(0),...l.plugins(d),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[G.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(0),...l.plugins(d),...l.customAIConfigurations(1)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(30)}},[G.PlanType.PRO]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(5),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(7),...l.appBackupRetentionDays(7)}},[G.PlanType.TEAM]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(10),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(30),...l.appBackupRetentionDays(90)}},[G.PlanType.BUSINESS]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(50),...l.plugins(d),...l.customAIConfigurations(0)}},constant:{...l.automationLogRetentionDays(90),...l.appBackupRetentionDays(365)}},[G.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(d),...l.appBackupRetentionDays(d)}},[G.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(15),...l.appBackupRetentionDays(15)}},[G.PlanType.ENTERPRISE]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(0)},static:{...l.rows(d),...l.apps(d),...l.users(d),...l.creators(d),...l.userGroups(d),...l.plugins(d),...l.customAIConfigurations(d)}},constant:{...l.automationLogRetentionDays(d),...l.appBackupRetentionDays(d)}}};function co(e,t){let r;function a(n){let o=n[t];if(!o)throw new Error(`Quotas do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case G.Hosting.SELF:r=a(sS);break;case G.Hosting.CLOUD:r=a(oS);break}return JSON.parse(JSON.stringify(r))}var Vt={};w(Vt,{appExists:()=>iS,encoding:()=>$t});var op=require("@budibase/backend-core");async function iS(e){return(await op.db.getAllApps({all:!0,idsOnly:!0})).includes(e)}var $t={};w($t,{base64ToObject:()=>pS,objectToBase64:()=>uS});function uS(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}function pS(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}var Qd=require("@budibase/types"),or=require("@budibase/backend-core"),jd=C(Sl()),Wd=C(Go());async function Mx(e){await Se.save({offlineLicenseToken:e}),await xt()}async function Gx(){await Se.save({offlineLicenseToken:void 0}),await xt()}async function $d(){return(await Se.get()).offlineLicenseToken}async function ko(){let t=(await or.installation.getInstall()).installId,r=or.context.getTenantId(),a=await or.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:a}}async function kx(){let e=await ko();return $t.objectToBase64(e)}function Fx(e){return $t.base64ToObject(e)}function Vd(e){let t=Date.now(),r=new Date(e.expireAt).getTime();if(t>r)throw new Error(`Offline license has expired. expireAt=${e.expireAt}`)}async function Kd(e){let t=await ko();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}function Yd(e){let t=e.plan.type,r=Qd.Hosting.SELF,a=po(r,t),n=co(r,t);return e.features=(0,jd.default)(e.features,a),e.quotas=(0,Wd.default)(e.quotas,n),e}async function Fo(){try{let e=await $d();if(e){let t=await jr(e);return Vd(t),await Kd(t),Yd(t)}}catch(e){console.error("Error retrieving offline license",e)}}var ca={};w(ca,{deleteDevLicense:()=>Vx,getOfflineLicense:()=>Wx,writeDevLicenseToDisk:()=>$x});var Hd=require("@budibase/backend-core"),jo=require("path"),zd=require("os"),_t=C(require("fs"));var Qx=Hd.env.isTest()?".budibase-test":".budibase",Qo=(0,jo.join)((0,zd.tmpdir)(),Qx),jx="dev_license.txt",pa=(0,jo.join)(Qo,jx);if(!_t.default.existsSync(Qo))try{_t.default.mkdirSync(Qo)}catch{}function Wx(){try{if(_t.default.existsSync(pa)){let e=_t.default.readFileSync(pa,{encoding:"utf-8"});return jr(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}function $x(e){console.log(`Writing license to: ${pa}`),_t.default.writeFileSync(pa,e,{encoding:"utf-8"})}function Vx(){_t.default.rmSync(pa,{force:!0})}var $o=async()=>{if(Wo.env.OFFLINE_MODE)return Fo();let e=await Wt();return e||(e=ca.getOfflineLicense()),e},Vo=e=>so(e),Ko=()=>Wo.env.SELF_HOSTED?me.SELF_FREE_LICENSE:me.CLOUD_FREE_LICENSE;var Ho={};w(Ho,{activateLicenseKey:()=>Kx,deleteLicenseKey:()=>Yx,getLicenseKey:()=>Yo});async function Kx(e){await io(e),await Se.save({licenseKey:e}),await xt()}async function Yo(){return(await Se.get()).licenseKey}async function Yx(){await Se.save({licenseKey:void 0}),await xt()}var Ot=require("@budibase/backend-core"),sn=C(require("dd-trace")),Jd=3600,xt=async()=>{await ef(),await Zd()},Xd=async(e,t)=>{let{populateLicense:r=$o,populateFreeLicense:a=Ko}=t||{};return await sn.default.trace("getCachedLicense",async n=>{let o=Ot.context.getLicense();if(o)return n.addTags({foundInContext:!0,features:o.features,plan:o.plan,quotas:o.quotas}),o;let s=Ot.tenancy.getTenantId(),i=await Kn(),p=await i.get(s);return n.addTags({tenantId:s,foundInCache:!!p}),p?(n.addTags({foundInCache:!0,refreshedAt:p.refreshedAt,features:p.features,plan:p.plan,quotas:p.quotas}),p):(p=await sn.default.trace("populateLicense",async()=>await r(s)),n.addTags({populatedLicense:!!p}),p||(p=sn.default.trace("populateFreeLicense",()=>a(e,s)),n.addTags({populatedFreeLicense:!!p})),p.refreshedAt=new Date().toISOString(),n.addTags({refreshedAt:p.refreshedAt,features:p.features,plan:p.plan,quotas:p.quotas,expirySeconds:Jd}),await i.store(s,p,Jd),p)})};Ot.env.isJest()&&(Xd=jest.fn());var Zd=Xd,ef=async()=>{let e=Ot.tenancy.getTenantId();await(await Kn()).delete(e)};async function se(e,t){Array.isArray(e)||(e=[e]),t||(t=await _e.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}async function un(e,t){if(!await se(e,t))throw new ze.FeatureDisabledError(`${e} is not currently enabled`,e)}async function zo(e,t){if(!await se(e,t)){let r=e.join(", ");throw new ze.FeatureDisabledError(`${r} are not currently enabled`,r)}}function he(e){return async(...t)=>(await un(oe.Feature.APP_BACKUPS),e(...t))}async function Jo(){return se(oe.Feature.APP_BACKUPS)}async function Xo(){return se(oe.Feature.BRANDING)}async function tf(){return se(oe.Feature.ENFORCEABLE_SSO)}async function zx(){return se(oe.Feature.SYNC_AUTOMATIONS)}async function Jx(){return se(oe.Feature.TRIGGER_AUTOMATION_RUN)}async function Pt(){return se(oe.Feature.APP_BUILDERS)}async function pn(){return se(oe.Feature.AUDIT_LOGS)}async function Zo(){return se(oe.Feature.USER_GROUPS)}function Xx(){return se(oe.Feature.PWA)}async function Je(){return se(oe.Feature.EXPANDED_PUBLIC_API)}async function Zx(e){if(ze.env.ENABLE_SSO_MAINTENANCE_MODE||!await tf())return!1;let r;return e?.config?r=e.config:r=await ze.configs.getSettingsConfig(),!!r.isSSOEnforced}var es=async()=>{let e=oe.Feature.SCIM,t=await se(e),r=await ze.configs.getSCIMConfig();if(!t||!r?.enabled)throw new ze.FeatureDisabledError(`${e} is not currently enabled`,e);return!0};async function e_(){return se(oe.Feature.VIEW_PERMISSIONS)}async function t_(){return se(oe.Feature.VIEW_READONLY_COLUMNS)}var r_={faviconUrl:void 0,faviconUrlEtag:void 0,emailBrandingEnabled:!0,testimonialsEnabled:!0,platformTitle:void 0,loginHeading:void 0,loginButton:void 0,metaDescription:void 0,metaImageUrl:void 0,metaTitle:void 0};async function a_(e){return await Xo()?{faviconUrl:e.faviconUrl,faviconUrlEtag:e.faviconUrlEtag,emailBrandingEnabled:e.emailBrandingEnabled,testimonialsEnabled:e.testimonialsEnabled,platformTitle:e.platformTitle,loginHeading:e.loginHeading,loginButton:e.loginButton,metaDescription:e.metaDescription,metaImageUrl:e.metaImageUrl,metaTitle:e.metaTitle}:r_}var rs={};w(rs,{enrichAIConfig:()=>ts});var rf=require("@budibase/backend-core"),n_="budibase_ai";async function ts(e){if(rf.env.SELF_HOSTED)return e;for(let t of Object.values(e.config))if(t.provider==="BudibaseAI")return e;return e.config[n_]={provider:"BudibaseAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-4o-mini",name:"Budibase AI"},e}var je={};w(je,{addApp:()=>p_,addAutomation:()=>g_,addGroup:()=>ns,addPlugin:()=>ss,addRow:()=>l_,addRows:()=>f_,addUsers:()=>dn,bustCache:()=>Xn,decrement:()=>Xe,decrementMany:()=>la,getCurrentUsageValues:()=>Cu,getLicensedQuota:()=>nf,getQuotaUsage:()=>wt,increment:()=>Ce,incrementBudibaseAICredits:()=>mn,incrementMany:()=>Lt,removeApp:()=>c_,removeGroup:()=>os,removePlugin:()=>is,removeRow:()=>d_,removeRows:()=>m_,removeUsers:()=>pr,set:()=>as,setAllUsage:()=>eo,setAppUsageValue:()=>Zn,setUsage:()=>Ou,setUsagePerApp:()=>Pu,updatePluginCount:()=>us,updateUsage:()=>sr,usageLimitIsExceeded:()=>u_,utils:()=>Er});var Y=require("@budibase/types");var Le=require("@budibase/backend-core");var Ce=(e,t,r)=>af({change:1,name:e,type:t,opts:r}),Lt=e=>af(e),af=async e=>{let t=Array.isArray(e)?e:[e];await sr(t.map(a=>({usageChange:a.change,name:a.name,type:a.type,opts:{dryRun:!0,suppressErrorLog:a.opts?.suppressErrorLog,id:a.opts?.id}})));let r=[];for(let a of t){let n=a.opts?.fn;n&&r.push(await n())}return await sr(t.map(a=>({usageChange:a.change,name:a.name,type:a.type,opts:{dryRun:!1,valueFn:a.opts?.valueFn,suppressErrorLog:a.opts?.suppressErrorLog,id:a.opts?.id}}))),r[0]},Xe=(e,t,r={})=>sr({usageChange:-1,name:e,type:t,opts:r}),la=e=>{let t=Array.isArray(e)?e:[e];return sr(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},as=async(e,t,r)=>Be.setUsage(r,e,t),o_=(e,t,r)=>{if(e==Y.QuotaUsageType.STATIC){let a=r.usageQuota.triggers;return a?a[t]||{}:{}}else{let a=Be.utils.getCurrentMonthString(),n=r.monthly[a].triggers;return n?n[t]||{}:{}}},s_=async(e,t,r,a)=>{try{await Le.locks.doWithLock({type:Y.LockType.TRY_ONCE,name:Y.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let n={percentage:r,name:t.name};a&&(n.resetDate=a),await lt.triggerQuota(n)})}catch(n){Le.logging.logAlert("Error triggering quota",n)}},i_=async(e,t,r,a)=>{let n=await wt(),o=e===Y.QuotaUsageType.MONTHLY?n.quotaReset:void 0,s=await o_(e,t,n),i=a.triggers,p=r/a.value*100;p>100&&(p=100);for(let[f,m]of i.entries())if(p>=m&&a.value!==He.UNLIMITED){if(!s[m]){s[m]=new Date().toISOString();let h=i[f+1]||100;(!(p>=h)||p===m)&&await s_(t,a,p,o)}}else s[m]=void 0;return s},sr=async e=>{let t=Le.tenancy.getTenantId(),r=Array.isArray(e)?e:[e],a=null,n,o=[],s={},i={},p={},f={};for(let g of r){try{a=Le.context.getAppId()}catch{}if(Y.APP_QUOTA_NAMES.includes(g.name)&&!a)throw new Error("App context required for quota update");try{n=await nf(Y.QuotaType.USAGE,g.name,g.type),o.push(n);let{total:b,app:E,breakdown:L}=await Be.getCurrentUsageValues(g.type,g.name,g.opts?.id);b+=g.usageChange,E!=null&&(E+=g.usageChange),L!=null&&(L+=g.usageChange);let _={};if(g.opts?.dryRun||(_=await i_(g.type,g.name,b,n),f={...f,[g.name]:_}),n.value!==He.UNLIMITED&&b>n.value&&g.usageChange>0)throw new Le.UsageLimitError(`Licensed ${n.name} of ${n.value} has been exceeded`,n.name);if(b=Math.max(0,b),E&&(E=Math.max(0,E)),L&&(L=Math.max(0,L),p={...p,[g.name]:L}),!g.opts?.dryRun){let R=g.opts?.valueFn;R&&(b=await R(),E=b),s={...s,[g.name]:b},i={...i,[g.name]:E}}}catch(b){throw g.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${g.name}`,b),b}}let m=r.filter(g=>!g.opts?.dryRun).map(g=>({name:g.name,type:g.type,values:{total:s[g.name],app:i[g.name],breakdown:p[g.name],triggers:f[g.name]},opts:{...g.opts,tenantId:t}}));m.length>0&&await Be.setAllUsage(m)},nf=async(e,t,r)=>{let a=await _e.getCachedLicense();if(!a){let n=Le.tenancy.getTenantId();throw new Error("License not found for tenant id "+n)}if(r&&(0,Y.isStaticQuota)(e,r,t))return a.quotas[e][r][t];if(r&&(0,Y.isMonthlyQuota)(e,r,t))return a.quotas[e][r][t];if((0,Y.isConstantQuota)(e,t))return a.quotas[e][t];throw new Error("Invalid quota type")},u_=async(e,t)=>{try{return await sr({usageChange:1,name:e,type:t,opts:{dryRun:!0}}),!1}catch(r){if(r.code===Y.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw r}};var ir=require("@budibase/types"),of=require("@budibase/backend-core"),sf=async()=>{let e=await of.db.getAllApps({dev:!0});return e?e.length:0},p_=async(e,{appId:t}={})=>Ce(ir.StaticQuotaName.APPS,ir.QuotaUsageType.STATIC,{fn:e,valueFn:sf,id:t}),c_=async({appId:e}={})=>Xe(ir.StaticQuotaName.APPS,ir.QuotaUsageType.STATIC,{valueFn:sf,id:e});var Fe=require("@budibase/types"),l_=async(e,{tableId:t}={})=>Ce(Fe.StaticQuotaName.ROWS,Fe.QuotaUsageType.STATIC,{fn:e,id:t}),d_=async({tableId:e}={})=>Xe(Fe.StaticQuotaName.ROWS,Fe.QuotaUsageType.STATIC,{id:e}),f_=async(e,t,{tableId:r}={})=>Lt({change:e,name:Fe.StaticQuotaName.ROWS,type:Fe.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),m_=async(e,{tableId:t}={})=>la({change:e,name:Fe.StaticQuotaName.ROWS,type:Fe.QuotaUsageType.STATIC,opts:{id:t}});var ln=require("@budibase/types"),g_=async(e,{automationId:t}={})=>Ce(ln.MonthlyQuotaName.AUTOMATIONS,ln.QuotaUsageType.MONTHLY,{fn:e,id:t});var ur=require("@budibase/types"),ns=async e=>Ce(ur.StaticQuotaName.USER_GROUPS,ur.QuotaUsageType.STATIC,{fn:e}),os=async()=>Xe(ur.StaticQuotaName.USER_GROUPS,ur.QuotaUsageType.STATIC);var mt=require("@budibase/types"),ss=async e=>Ce(mt.StaticQuotaName.PLUGINS,mt.QuotaUsageType.STATIC,{fn:e}),is=async()=>Xe(mt.StaticQuotaName.PLUGINS,mt.QuotaUsageType.STATIC),us=async e=>as(mt.StaticQuotaName.PLUGINS,mt.QuotaUsageType.STATIC,e);var Qe=require("@budibase/types"),da=require("@budibase/backend-core");var dn=async(e,t,r)=>{let a=[{change:e,name:Qe.StaticQuotaName.USERS,type:Qe.QuotaUsageType.STATIC,opts:{fn:r,valueFn:da.users.getUserCount}}];t>0&&a.push({change:t,name:Qe.StaticQuotaName.CREATORS,type:Qe.QuotaUsageType.STATIC,opts:{valueFn:da.users.getCreatorCount}});let n=await Lt(a);return await Wt(),n},pr=async(e,t)=>{let r=[{change:e,name:Qe.StaticQuotaName.USERS,type:Qe.QuotaUsageType.STATIC,opts:{valueFn:da.users.getUserCount}}];t>0&&r.push({change:t,name:Qe.StaticQuotaName.CREATORS,type:Qe.QuotaUsageType.STATIC,opts:{valueFn:da.users.getCreatorCount}}),await la(r),await Wt()};var fn=require("@budibase/types"),mn=async e=>Lt({change:e,name:fn.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:fn.QuotaUsageType.MONTHLY});var Ze={};w(Ze,{addAppBuilder:()=>I_,db:()=>We,removeAppBuilder:()=>S_});var ma=require("@budibase/backend-core");var Q={};w(Q,{addAppBuilder:()=>fs,addUsers:()=>cs,adjustGroupCreatorsQuotas:()=>b_,cleanupApp:()=>A_,enrichUserRolesFromGroups:()=>y_,fetch:()=>fa,get:()=>qt,getBulk:()=>mf,getGroupBuilderAppIds:()=>ff,getGroupRoleId:()=>h_,remove:()=>ps,removeAppBuilder:()=>ms,removeUsers:()=>ls,save:()=>cr,updateGroupApps:()=>ds});var x=require("@budibase/backend-core");var uf=require("@budibase/backend-core"),gn=class extends uf.HTTPError{constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function lf(e,t){try{let r=[];for(let i of e)if(i.roles){let p=i.roles[x.db.getProdAppID(t)];p&&r.push(p)}let a=await Promise.all(r.map(async i=>({[i]:await x.roles.roleToNumber(i)}))),n,o,s={};a.forEach(i=>{let[p,f]=Object.entries(i)[0];s[p]={roleId:p,roleNum:f}});for(let{roleId:i,roleNum:p}of Object.values(s))(o===void 0||p>o)&&(o=p,n=i);return n}catch(r){throw x.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}async function df(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await M.getBulk(e,{enriched:!1}),t}async function ff(e,t){if(!e.userGroups)return[];let r=await df(e.userGroups,t?.groups),a=t?.appId?x.db.getProdAppID(t?.appId):null,n=[];for(let o of r){let s=o.builder?.apps;a&&s?.includes(a)?n.push(a):a||(n=n.concat(s||[]))}return[...new Set(n)]}async function h_(e,t,r){if(!e.userGroups)return null;let a=await df(e.userGroups,r?.groups),n=x.db.getProdAppID(t);return e.roles?.[n]?e.roles[n]:(a=a.filter(o=>o?.roles?Object.keys(o.roles).includes(n):!1),await lf(a,t))}async function y_(e){if(!e||!e.userGroups)return e;let t=await mf(e.userGroups,{enriched:!1}),r=[];for(let n of t)n?.roles&&(r=r.concat(Object.keys(n.roles)));r=[...new Set(r)];for(let n of r)await x.context.doInAppContext(n,async()=>{if(e.roles[n])return;let o=await lf(t,n);o&&(e.roles[n]=o)});let a=await ff(e,{groups:t});if(a.length&&!e.builder?.global){let n=e.builder?.apps||[];e.builder={apps:n.concat(a)}}return e}async function fa(){return await M.fetch()}async function qt(e){return await M.get(e)}async function mf(e,t={enriched:!0}){return await M.getBulk(e,t)}async function pf(e){if(await M.getByName(e))throw new gn(e)}async function cf(e){let t=await M.getGroupUsers(e._id);if(!t.length)return 0;let a=await x.tenancy.getGlobalDB().getMultiple(t.map(o=>o._id));return(await x.userUtils.creatorsInList(a)).filter(o=>o).length}async function cr(e){let t=[],r=!e._id,a=0;if(delete e.users,!e._id)e._id=M.generateUserGroupID(),await pf(e.name),t.push(x.events.group.created(e));else{let o=await M.get(e._id);if(o.name!==e.name&&await pf(e.name),t.push(x.events.group.updated(e)),JSON.stringify(o.roles)!==JSON.stringify(e.roles)){let s=o.users?.length||0,i=0;s>0&&(i=await cf(o)),Object.values(e.roles).includes("CREATOR")?a=s-i:a=-s,t.push(x.events.group.permissionsEdited(e))}}await Promise.all(t);let n=()=>M.save(e);if(r)return await ns(n);{let o=await n();if(a>0)await dn(0,a);else if(a<0){let s=await cf(e),i=Math.abs(a)-s;i>0&&await pr(0,i)}return o}}async function ps(e,t){let r;try{r=await M.get(e)}catch{throw new Error("Group not found")}let a=Object.values(r.roles||{}).includes("CREATOR"),n=()=>{};if(a){let s=x.tenancy.getGlobalDB(),i=await M.getGroupUsers(e),f=(await Promise.all(i.map(b=>s.get(b._id)))).map(b=>({...b,userGroups:b.userGroups.filter(E=>E!==e)})),g=(await x.userUtils.creatorsInList(f)).filter(b=>b).length,h=i.length-g;h&&(n=()=>pr(0,h))}let o=await M.destroy(e,t);return await x.events.group.deleted(r),await os(),await n(),o}async function cs(e,t){let r=await M.get(e),a=await x.users.bulkGetGlobalUsersById(t),n=[];for(let p of a)p.userGroups||(p.userGroups=[]),p.userGroups.includes(e)||n.push(p);if(!n.length)return n;let o=n.map(p=>({...p,userGroups:[...p?.userGroups||[],e]}));if(await x.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes("CREATOR")){let f=(await x.userUtils.creatorsInList(n)).filter(g=>g).length,m=n.length-f;m&&await dn(0,m)}let i=[];for(let p of t)i.push(x.cache.user.invalidateUser(p));return await Promise.all(i),await x.events.group.usersAdded(o.length,r),o}async function ls(e,t){let r=await M.get(e),a=await x.users.bulkGetGlobalUsersById(t),n=[];for(let i of a){if(!i.userGroups||!i.userGroups.includes(e))continue;let p=i.userGroups.indexOf(e);i.userGroups.splice(p,1),n.push(i)}if(await x.users.bulkUpdateGlobalUsers(n),Object.values(r.roles||{}).includes("CREATOR")){let p=(await x.userUtils.creatorsInList(n)).filter(m=>m).length,f=n.length-p;f&&await pr(0,f)}let s=[];for(let i of t)s.push(x.cache.user.invalidateUser(i));return await Promise.all(s),n.length&&await x.events.group.usersDeleted(n.length,r),n}async function ds(e,t){let r=await qt(e);if(r.roles||(r.roles={}),t.appsToAdd)for(let a of t.appsToAdd)r.roles[a.appId]=a.roleId;if(t.appsToRemove)for(let a of t.appsToRemove)delete r.roles[a.appId];return await cr(r)}async function A_(e){let t=await fa(),r=[];for(let a of t)!a.roles||!a.roles[e]||(delete a.roles[e],r.push(a));return await M.bulkSave(r)}async function fs(e,t){if(!await Pt())throw new Error("Feature not enabled, please check license");let r=x.db.getProdAppID(t),a=await qt(e);a.builder??={apps:[]},a.builder.apps.includes(t)||(a.builder.apps.push(r),await cr(a))}async function ms(e,t){if(!await Pt())throw new Error("Feature not enabled, please check license");let r=x.db.getProdAppID(t),a=await qt(e);a.builder?.apps.includes(t)&&(a.builder.apps=a.builder.apps.filter(n=>n!==r),await cr(a))}async function b_(){if(!await Zo()){let e=x.tenancy.getGlobalDB(),r=(await fa()||[]).filter(a=>Object.values(a?.roles||{}).includes("CREATOR"));for(let a of r){let n=await M.getGroupUsers(a._id),s=(await Promise.all(n.map(m=>e.get(m._id)))).map(m=>({...m,userGroups:m.userGroups.filter(g=>g!==a._id)})),p=(await x.userUtils.creatorsInList(s)).filter(m=>m).length,f=n.length-p;await M.save({...a,roles:{}}),f&&await pr(0,f)}}}ma.users.UserDB.init(je,Q,Pe);var We=ma.users.UserDB;async function I_(e,t){if(!await Pt())throw new Error("Feature not enabled, please check license");await ma.users.addAppBuilder(e,t)}async function S_(e,t){if(!await Pt())throw new Error("Feature not enabled, please check license");await ma.users.removeAppBuilder(e,t)}var yn={};w(yn,{logs:()=>ws});var ws={};w(ws,{logSearch:()=>P_,oldestLogDate:()=>Sf,storeLog:()=>L_});var If=require("@budibase/types"),hn=require("@budibase/backend-core");var gt=require("@budibase/types");var Z=require("@budibase/backend-core");var gf=require("@budibase/backend-core");async function hf(e,t){let r,a=5,n=!1,o,s=!0;for(;a>0;a--)try{s?o=await e():o=await exports.randomDelay(e),n=!0;break}catch(i){r=i}return n||gf.logging.logWarn(`Failed to backoff: ${t}`,r),o}var{SEPARATOR:et,UNICODE_MAX:w_,DocumentType:yf,AutomationViewMode:gs,ViewName:v_,getQueryIndex:T_}=Z.db,E_=new Date(0).toISOString(),R_=100,hs=async()=>Ma(gt.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS);function Af(e,t,{status:r,automationId:a}={},n={}){let o=a?`${a}${et}`:"",s=r?`${r}${et}`:"",i;return r&&a?i=`${gs.ALL}${et}${s}${o}`:r?i=`${gs.STATUS}${et}${s}`:a?i=`${gs.AUTOMATION}${et}${o}`:i=`${yf.AUTOMATION_LOG}${et}`,{...n,descending:!0,startkey:`${i}${t}${w_}`,endkey:`${i}${e}`}}function ys(e){let t=gt.AutomationStatus.SUCCESS,r=!0;for(let a of e.steps){let n=a.outputs?.status?.toLowerCase(),o=n==="stopped_error";if(r&&!o){r=!1;continue}if(o){t=gt.AutomationStatus.STOPPED_ERROR;break}else if(a.outputs?.success){if(n==="stopped"){t=gt.AutomationStatus.STOPPED;break}}else{t=gt.AutomationStatus.ERROR;break}}return t}function x_(e,t,r){return`${yf.AUTOMATION_LOG}${et}${e}${et}${r}${et}${t}`}async function As(e,t,r={docs:!0}){let a=Z.context.getProdAppDB();await a.exists()||(a=Z.context.getDevAppDB());let n={status:r.status},o=r?.limit?r.limit:r?.paginate?9+1:void 0,s=Af(e,t,n,{include_docs:r.docs,limit:o});r?.page&&(s.startkey=r.page);let i=await a.allDocs(s);return xr(i,{paginate:r?.paginate,pageSize:9})}async function bs(e,t,r={}){let a=Z.context.getProdAppDB();await a.exists()||(a=Z.context.getDevAppDB());let n;try{let o={automationId:r?.automationId,status:r?.status},s=Af(e,t,o,{include_docs:!0,limit:9+1});r?.page&&(s.startkey=r.page),n=await a.query(T_(v_.AUTOMATION_LOGS),s)}catch(o){if(o!=null&&(o.name==="not_found"||o.error==="not_found"))return await ju(),bs(e,t,r);throw o}return xr(n,{paginate:!0,pageSize:9})}async function bf(e,t){let r=Z.context.getProdAppDB(),a=e._id,n=e.name,o=ys(t),s=new Date().toISOString(),i=x_(s,o,a),p={...t,automationId:a,status:o,automationName:n,createdAt:s,_id:i};return await r.put(p),i}async function Is(e,{clearing:t}={clearing:!1}){let r=Z.context.getProdAppDB();await hf(async()=>{let a=await r.get(Z.db.DocumentType.APP_METADATA);for(let n of e){let o=n.split(Z.db.SEPARATOR),s=`${o[o.length-3]}${Z.db.SEPARATOR}${o[o.length-2]}`,i={};a.automationErrors&&(i=a.automationErrors),Array.isArray(i[s])||(i[s]=[]);let p=i[s].indexOf(n);t&&p!==-1?i[s].splice(p,1):i[s].push(n),i[s].length===0&&delete i[s],a.automationErrors=i}await r.put(a),await Z.cache.app.invalidateAppMetadata(a.appId,a)},"Failed to update app metadata with automation log error")}async function __(){let e=await hs();try{return await As(E_,e,{docs:!1,paginate:!1,limit:R_})}catch{return{data:[],hasNextPage:!1}}}async function Ss(){let e=Z.context.getProdAppDB();try{let t=await __();if(!t.data||t.data.length===0)return;let r=t.data.map(n=>({_id:n.id,_rev:n.value.rev,_deleted:!0})),a=t.data.filter(n=>{let o=n.id.split(Z.db.SEPARATOR);return o[o.length-1]===gt.AutomationStatus.ERROR}).map(n=>n.id);await e.bulkDocs(r),a.length&&await Is(a,{clearing:!0})}catch(t){Z.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}var Sf=hs;async function O_(e,t,r,a){let n,o=new Date().toISOString(),s=await Sf();return(!e||e<s)&&(e=s),r||t?n=await bs(e,o,{automationId:r,status:t,page:a}):n=await As(e,o,{status:t,page:a,docs:!0,paginate:!0}),n}async function P_(e){return await Ss(),await O_(e.startDate,e.status,e.automationId,e.page)}async function L_(e,t){if(!hn.db.isProdAppID(hn.context.getAppId()))return;let r=ys(t),a=await bf(e,t);r===If.AutomationStatus.ERROR&&await Is([a]),await Ss()}var An={};w(An,{checkPluginQuotas:()=>U_,deletePlugin:()=>q_,storePlugin:()=>C_});var Ef=require("@budibase/types"),H=require("@budibase/backend-core");var wf=C(require("fs")),vf=require("path");function Tf(e,t){return wf.default.readFileSync((0,vf.join)(e,t),"utf8")}async function C_(metadata,directory,source){let db=H.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=H.objectStore.getPluginS3Dir(name),files=await H.objectStore.uploadDirectory(H.objectStore.ObjectStoreBuckets.PLUGINS,directory,bucketPath),jsFile=files.find(e=>e.name.endsWith(".js")),iconFile=files.find(e=>e.name.endsWith(".svg"));if(!jsFile)throw new Error("Plugin missing .js file.");if(metadata.schema.type===Ef.PluginType.DATASOURCE){let js=Tf(directory,jsFile.name);try{eval(js)}catch(e){let t=e?.message?e.message:JSON.stringify(e);throw new Error(`JS invalid: ${t}`)}}let iconFileName=iconFile?iconFile.name:null,pluginId=H.db.generatePluginID(name),rev;try{rev=(await db.get(pluginId))._rev}catch(e){rev=void 0}let doc={_id:pluginId,_rev:rev,...metadata,name,version,hash,description,source};iconFileName&&(doc.iconFileName=iconFileName),source&&(doc={...doc,source});let write=async()=>{let e=await db.put(doc);return await H.events.plugin.imported(doc),{...doc,_rev:e.rev}};return rev?await write():await ss(write)}async function q_(e){let t=H.tenancy.getGlobalDB();try{let r=await t.get(e),a=H.objectStore.getPluginS3Dir(r.name);await H.objectStore.deleteFolder(H.objectStore.ObjectStoreBuckets.PLUGINS,a),await t.remove(e,r._rev),await H.events.plugin.deleted(r),await is()}catch(r){let a=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${a}`)}}async function U_(){let e=H.tenancy.getGlobalDB();try{let r=(await e.allDocs(H.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await us(r)}catch(t){H.logging.logAlert("Unable to retrieve plugins for quota check",t)}}var $e={};w($e,{fetch:()=>N_,fetchValues:()=>B_,isEncryptionKeyAvailable:()=>D_,isValid:()=>_f,remove:()=>G_,update:()=>M_});var ga=require("@budibase/types"),Rf=require("@budibase/backend-core");function D_(){return!!Rf.env.ENCRYPTION_KEY}async function N_(){let e=await Et.get();return Object.keys(e.variables)}async function B_(e){let r=(await Et.get()).variables,a={};for(let[n,o]of Object.entries(r))switch(e){case ga.AppEnvironment.DEVELOPMENT:a[n]=o.development;break;case ga.AppEnvironment.PRODUCTION:default:a[n]=o.production;break}return a}async function xf(e){if(!(await ke.cache.getCachedLicense()).features.includes(ga.Feature.ENVIRONMENT_VARIABLES))throw new Error("User does not have access to environment variables feature.");let r=await Et.get();r.variables=e(r.variables),await Et.update(r)}async function M_(e,t){if(_f(e))await xf(a=>(a[e]=t,a));else throw new Error("Variable name has characters that are not allowed")}async function G_(e){await xf(t=>(delete t[e],t))}function _f(e){return/^[a-zA-Z0-9-_]+$/.test(e)}var ht={};w(ht,{definitions:()=>z_,download:()=>H_,fetch:()=>Y_,write:()=>V_});var In=require("@budibase/types");var $=require("@budibase/backend-core"),qe=require("@budibase/types");var Of=require("memorystream"),Pf=new $.sql.Sql(qe.SqlClient.SQL_LITE);async function k_(e,t,r){let a={operation:qe.Operation.READ,table:jt.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:qe.SortOrder.DESCENDING,type:qe.SortType.STRING}}},n=Pf._query(a);if(Array.isArray(n))throw new Error("Cannot execute multiple queries for audit log search");return{sql:n.sql,bindings:n.bindings}}function F_(e){return`${$.DocumentType.AUDIT_LOG}${$.SEPARATOR}${e}${$.SEPARATOR}${$.utils.newid()}`}async function Lf(e){e._id||(e._id=F_(e.timestamp)),e.type||(e.type=qe.AUDIT_LOG_TYPE);try{let r=await $.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){$.logging.logAlert("Failed to write audit log",t)}}async function vs(e,t,r){t||(t=1);let a=$.context.getAuditLogsDB();try{let n=9+1,o=await k_(e,t,n),s=jt.searchTable(),i=Pf.convertJsonStringColumns(s,await a.sql(o.sql,o.bindings)),p;i.length>n&&(p=i.pop());let f={rows:i,hasNextPage:!!p};return f.hasNextPage&&(f.bookmark=t+1),f}catch(n){if(n.status===404&&!r?.isRetry)return await Q_(),await qu(),await vs(e,t,{isRetry:!0});throw n}}async function Q_(){let e=$.context.getAuditLogsDB(),r=(await e.allDocs($.db.getDocParams($.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(a=>a.doc).filter(a=>a&&!a.type).map(a=>({...a,type:qe.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}function Cf(e){let t=$.context.getAuditLogsDB(),r=new Of,a=t.dump(r,{filter:o=>{let s=o;if(!s._id?.startsWith($.DocumentType.AUDIT_LOG))return!1;let i=!0,p=(f,m)=>{!f||f.length===0||(i=!!(i&&m&&f.includes(m)))};if(p(e.userIds,s.userId),p(e.appIds,s.appId),p(e.events,s.event),(e.startDate||e.endDate)&&(i=i&&s.timestamp>=e.startDate&&s.timestamp<=e.endDate),e.fullSearch){let f=JSON.stringify(o);i=i&&f.includes(e.fullSearch)}return i}}),n=new Of;return r.on("data",o=>{let s=JSON.parse(Buffer.from(o).toString());if(Array.isArray(s.docs)){let i="";for(let p of s.docs)i+=JSON.stringify(p)+`
|
|
38
|
+
`;n.write(i)}}),r.on("end",()=>{n.end()}),{promise:a,stream:n}}var ce=require("@budibase/backend-core");var bn=require("@budibase/types"),ha=require("@budibase/string-templates"),ya=require("@budibase/backend-core"),W_=ya.constants.MIN_VALID_DATE.toISOString(),$_=ya.constants.MAX_VALID_DATE.toISOString();function Ts(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||W_,e.endDate=e.endDate||$_),e}async function qf(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(a=>ya.db.getProdAppID(a)));let t={};function r(a,n){n?.length&&(t.oneOf={...t.oneOf,[a]:n})}return r("userId",e.userIds),r("appId",e.appIds),r("event",e.events),e.fullSearch&&(t.fuzzyOr=!0,t.fuzzy={name:e.fullSearch,fallback:e.fullSearch}),(e.startDate||e.endDate)&&(e=Ts(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}function Es(e,t,r){let a={_id:e,status:bn.AuditLogResourceStatus.DELETED};switch(t){case"app":a.name=r?.appName;break;case"user":a.email=r?.email;break}return a}function Rs(e){let t=(0,ha.findHBSBlocks)(e);for(let r of t){let a=` "${r}"`;e=e.replace(e.includes(a)?a:` ${r}`,""),e=(0,ha.processStringSync)(e,{})}return e}function Uf(e,t){let r=bn.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let a=(0,ha.processStringSync)(r,t);return a.includes('""')&&(a=Rs(r)),a}async function V_(e,t,r){if(!await pn()||!ce.utils.isAudited(e))return;let a=Uf(e,t),n=new Date;r?.timestamp&&(n=new Date(r.timestamp));let o={timestamp:n.toISOString(),event:e,name:a,userId:r?.userId||In.AuditLogSystemUser,metadata:{...t,...r?.hostInfo}},s={};try{if(r?.appId){o.appId=ce.db.getProdAppID(r.appId);let i=await ce.cache.app.getAppMetadata(r.appId);"name"in i&&(s.appName=i.name)}if(r?.userId){let i=await ce.users.getById(r?.userId);s.email=i.email}}catch(i){ce.logging.logAlert("Failed to retrieve fallback information for audit log",i)}return o.fallback=s,await Lf(o)}async function K_(e){let t=e.map(i=>i.userId),a=e.filter(i=>i.appId).map(i=>ce.db.getDevAppID(i.appId)),n=await ce.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),o=await ce.db.getAppsByIDs([...new Set(a)]),s=[];for(let i of e){let p=n.find(g=>g?._id===i.userId),f=o.find(g=>ce.db.isSameAppID(g?.appId,i.appId)),m={event:i.event,timestamp:i.timestamp,name:i.name,metadata:i.metadata,user:p||Es(i.userId,"user",i.fallback)};i.appId&&(m.app=f||Es(i.appId,"app",i.fallback)),s.push(m)}return s}async function Y_(e){if(!await pn())throw new Error("Audit logs not available - license required.");let t=await qf(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await vs(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await K_(r.rows)}}function H_(e){return e=Ts(e),Cf(e)}function z_(){let e=Object.entries(In.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=Rs(r[1]);return t}var Sn={};w(Sn,{applications:()=>Ps,roles:()=>_s,users:()=>xs});var xs={};w(xs,{roleCheck:()=>X_});function J_(e,t){let r=e.request.body;return r.builder&&(r.builder=t?.builder||void 0),r.admin&&(r.admin=t?.admin||void 0),r.roles&&(r.roles=t?.roles||{}),e.request.body=r,e}async function X_(e,t){return await Je()||J_(e,t),e}var _s={};w(_s,{assign:()=>Z_,unAssign:()=>eO});var Aa=require("@budibase/backend-core");async function Z_(e,t){if(!await Je())throw new Error("Unable to assign roles - license required.");let r=await We.bulkGet(e);for(let a of r){if(t.role&&t.role.roleId){let n=Aa.db.getProdAppID(t.role.appId);a.roles[n]=t.role.roleId}if(t.appBuilder){let n=Aa.db.getProdAppID(t.appBuilder.appId),o=a.builder?.apps||[];a.builder={apps:o.concat([n])}}t.builder&&(a.builder={global:!0}),t.admin&&(a.admin={global:!0}),a.roles}await We.bulkUpdate(r)}async function eO(e,t){if(!await Je())throw new Error("Unable to un-assign roles - license required.");let r=await We.bulkGet(e);for(let a of r){if(t.role){let n=Aa.db.getProdAppID(t.role?.appId);a.roles[n]===t.role.roleId&&delete a.roles[n]}if(t.appBuilder&&a.builder?.apps){let n=Aa.db.getProdAppID(t.appBuilder.appId);a.builder.apps=a.builder.apps.filter(o=>o!==n)}t.builder&&a.builder&&delete a.builder,t.admin&&a.admin&&delete a.admin}}var Ps={};w(Ps,{buildExportFn:()=>rO,buildImportFn:()=>tO});var Os=require("@budibase/backend-core");function tO(e){return async(t,r)=>{await Je()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await Os.context.doInAppContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}function rO(e){return async(t,r)=>{await Je()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:a,excludeRows:n}=t.request.body;await Os.context.doInAppContext(t.params.appId,async()=>{t.request.body={encryptPassword:a,excludeRows:n},t.query.appId=t.params.appId,await e(t),await r()})}}var Ve=require("@budibase/backend-core"),ie=require("@budibase/types");var Ls=require("@budibase/backend-core"),Df;function Nf(){Df=new Ls.queue.BudibaseQueue(Ls.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}function Ut(){return Df}var Bf=require("path"),Mf=C(require("fs"));async function Cs(e,t={}){return we.storeAppBackupMetadata(e,t)}function Gf(e){let t=new Date().toISOString();switch(e){case ie.AppBackupStatus.COMPLETE:case ie.AppBackupStatus.FAILED:return{timestamp:t,finishedAt:t};case ie.AppBackupStatus.STARTED:return{timestamp:t,startedAt:t};case ie.AppBackupStatus.PENDING:return{timestamp:t,createdAt:t}}}async function aO(e,t,r,a){let n=await wn(e);return await we.storeAppBackupMetadata({...n,...Gf(t),contents:r,status:t,type:ie.AppBackupType.BACKUP},{filename:a,docId:e})}async function nO(e,t,r){let a=await wn(e);return await we.storeAppBackupMetadata({...a,...Gf(r),status:r,type:ie.AppBackupType.RESTORE,trigger:ie.AppBackupTrigger.MANUAL},{docId:e,docRev:t})}async function wn(e){return we.getAppBackupMetadata(e)}async function oO(e,t){return we.updateAppBackupMetadata(e,t)}async function sO(e){let t=await we.getAppBackupMetadata(e);return t.filename&&await Ve.objectStore.deleteFile(Ve.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),we.deleteAppBackupMetadata(e)}async function iO(e,t){return we.fetchAppBackups(e,t)}async function kf(e){let t=await we.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let r=await Ve.objectStore.getReadStream(Ve.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}async function uO(e){let{stream:t}=await kf(e),r=(0,Bf.join)(Ve.objectStore.budibaseTempDir(),Ve.utils.newid()),a=Mf.default.createWriteStream(r);return new Promise((n,o)=>{t.on("error",o),a.on("error",o),t.pipe(a).on("close",()=>n(r))})}async function pO(e,t,r={}){let a;try{a=await Cs({appId:e,trigger:t,timestamp:new Date().toISOString(),status:ie.AppBackupStatus.PENDING,type:ie.AppBackupType.BACKUP,...r})}catch(n){if(n.status===409)return;throw n}return await Ut().add({docId:a.id,docRev:a.rev,appId:e,export:{trigger:t,...r}}),await Ve.events.backup.appBackupTriggered(e,a.id,ie.AppBackupType.BACKUP,t,r?.name),a.id}async function cO(e,t,r,a){let n=await wn(t),o;try{o=await Cs({appId:e,timestamp:new Date().toISOString(),status:ie.AppBackupStatus.PENDING,type:ie.AppBackupType.RESTORE,createdBy:a})}catch(s){if(s?.status===409)return;throw s}return await Ut().add({appId:e,docId:o.id,docRev:o.rev,import:{nameForBackup:r,backupId:t,createdBy:a}}),{restoreId:o.id,metadata:n}}var lO={isEnabled:Jo,triggerAppRestore:he(cO),triggerAppBackup:he(pO),getBackupDownloadStream:he(kf),downloadAppBackup:he(uO),fetchAppBackups:he(iO),storeAppBackupMetadata:he(Cs),updateBackupStatus:he(aO),updateRestoreStatus:he(nO),getAppBackup:he(wn),updateAppBackup:he(oO),deleteAppBackup:he(sO)},tt=lO;var Us={};w(Us,{init:()=>qs});var z=require("@budibase/backend-core");var Ue=require("@budibase/types");var lr=C(require("fs"));async function qs(e){Ut().process(async t=>{let r=t.data;try{if(r.export)return mO(t,e);if(r.import)return fO(t,e)}catch(a){z.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,a)}})}async function dO(e){await z.db.getDB(e,{skip_setup:!0}).destroy()}async function Ff(e,t,r,a){let n=z.db.getDevAppID(r),o=z.db.getProdAppID(r),s=new Date().toISOString(),i=async(p,f)=>{a?.doc?await tt.updateBackupStatus(a.doc.id,p,f?.contents,f?.filename):await tt.storeAppBackupMetadata({appId:o,timestamp:s,trigger:e,status:p,name:a?.name,type:Ue.AppBackupType.BACKUP,contents:f?.contents,createdBy:a?.createdBy},{filename:f?.filename})};try{let p=await a.processing.exportAppFn(n,{tar:!0}),f=await a.processing.statsFn(n),m=`${o}/backup-${s}.tar.gz`,g=z.objectStore.ObjectStoreBuckets.BACKUPS,h=lr.default.createReadStream(p);await z.objectStore.streamUpload({bucket:g,filename:m,stream:h,extra:{type:"application/gzip",metadata:{name:a?.name,trigger:e,timestamp:s,appId:o}}}),await i(Ue.AppBackupStatus.COMPLETE,{filename:m,contents:f}),lr.default.existsSync(p)&&lr.default.rmSync(p)}catch(p){z.logging.logAlert("App backup error",p),await i(Ue.AppBackupStatus.FAILED)}}async function fO(e,t){let r=e.data,a=r.appId,n=r.import.backupId,o=r.import.nameForBackup,s=r.import.createdBy,i=z.tenancy.getTenantIDFromAppID(a);return z.tenancy.doInTenant(i,async()=>{let p=z.db.getDevAppID(a),{rev:f}=await tt.updateRestoreStatus(r.docId,r.docRev,Ue.AppBackupStatus.STARTED);await Ff(Ue.AppBackupTrigger.RESTORING,i,a,{processing:t,createdBy:s,name:o});let m=await tt.downloadAppBackup(n);await dO(p);let g=Ue.AppBackupStatus.COMPLETE;try{await t.importAppFn(p,z.db.getDB(p),{file:{type:"application/gzip",path:m},key:m})}catch(h){z.logging.logAlert("App restore error",h),g=Ue.AppBackupStatus.FAILED}await tt.updateRestoreStatus(r.docId,f,g),lr.default.existsSync(m)&&lr.default.rmSync(m,{force:!0})})}async function mO(e,t){let r=e.data,a=r.appId,n=r.export.trigger,o=r.export.name,s=z.tenancy.getTenantIDFromAppID(a);await z.tenancy.doInTenant(s,async()=>{try{let{rev:i}=await tt.updateBackupStatus(r.docId,Ue.AppBackupStatus.STARTED);return Ff(n,s,a,{processing:t,doc:{id:r.docId,rev:i},name:o})}catch(i){z.logging.logAlert("App backup error",i)}})}var gO=async e=>{Nf(),await qs(e.processing)},Te={...tt,processing:Us,init:gO,getBackupQueue:Ut};var Qf=async e=>{e.backups&&await Te.init(e.backups)};var de={};w(de,{create:()=>uM,find:()=>iM,get:()=>sM,remove:()=>cM,update:()=>pM});var cA=C(Oi()),rt=require("@budibase/backend-core");var lA=require("@budibase/types");async function sM(e){let t=rt.tenancy.getGlobalDB(),r=new rt.db.QueryBuilder(t.name,lA.SearchIndex.USER);r.setIndexBuilder(rt.db.searchIndexes.createUserIndex),r.setLimit(e.pageSize),r.addEqual("scimInfo.isSync",!0);for(let[n,o]of Object.entries(e.filters?.equal??{}))r.addEqual(n,o);r.setSort("_id"),r.setSkip(e.skip);let a=await r.run();return{users:a.rows,total:a.totalRows}}async function iM(e){return await rt.users.getById(e)}async function uM(e){let t=await We.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new rt.HTTPError("User is already synched",409);e={...t,scimInfo:(0,cA.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await We.save(e,{requirePassword:!1})}async function pM(e,t){return await We.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}async function cM(e){return await We.destroy(e)}var yr={};w(yr,{create:()=>lM});var dA=C(Oi());var fA=require("@budibase/backend-core");async function lM(e){let t=await ro(e.name),r;if(!t)r=(await Q.save(e)).id;else{if(t.scimInfo?.isSync)throw new fA.HTTPError("Group is already synched",409);r=t._id,t.users&&(await Q.removeUsers(r,t.users.map(n=>n._id)),delete t.users),t.scimInfo=(0,dA.default)(t.scimInfo,e.scimInfo),await Q.save(t)}return await Q.get(r)}var Nt={};w(Nt,{logRequest:()=>dM,logResponse:()=>fM});var Pi=require("@budibase/backend-core");async function dM(e){Pi.logging.logWarn("SCIM request log",e)}async function fM(e){Pi.logging.logWarn("SCIM response error",e)}var Di={};w(Di,{doInScimContext:()=>Ci,feature:()=>j,internalGroupOnly:()=>Bn,licenseAuth:()=>hA,licensing:()=>mA,requireSCIM:()=>qi,scimGroupOnly:()=>wa,scimUserOnly:()=>Sa});var yt=require("@budibase/backend-core");var Dn=require("@budibase/types"),mM=(e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(yt.env.SELF_HOSTED&&yt.env.DEFAULT_LICENSE)return t.user.license=no,r();t.user.license=await ke.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(yt.utils.isServingApp(t)||yt.utils.isServingBuilder(t)||yt.utils.isServingBuilderPreview(t)||yt.utils.isPublicApiRequest(t))&&await je.usageLimitIsExceeded(Dn.StaticQuotaName.USERS,Dn.QuotaUsageType.STATIC)}return r()},mA=mM;var j={};w(j,{requireFeature:()=>gM,requireFeatures:()=>hM});var gM=e=>async(t,r)=>{await un(e),await r()},hM=(...e)=>async(t,r)=>{await zo(e),await r()};var Nn=require("@budibase/backend-core");var Ci=async(e,t)=>(Nn.env.DISABLE_SCIM_CALLS||await Nt.logRequest({...e.request.toJSON(),body:e.request.body}),await Nn.context.doInScimContext(async()=>{let r=await t();return await Nt.logResponse({...e.response.toJSON(),body:e.response.body}),r}));var qi=async(e,t)=>{await es(),await t()};var gA=require("@budibase/backend-core");var Sa=e=>Ui(gA.users.getById,e,!0),wa=e=>Ui(M.get,e,!0),Bn=e=>Ui(M.get,e,!1);function Ui(e,t,r){return async(a,n)=>{let o=a.params[t];return typeof o!="string"&&a.throw(404),!!(await e(o)).scimInfo?.isSync!==r&&a.throw(404),n()}}var va=require("@budibase/backend-core");async function hA(e,t){let r=e.request.headers[va.constants.Header.LICENSE_KEY];Array.isArray(r)&&(r=r[0]),r||e.throw(403,"License key not provided");let a=await Vo(r);a||e.throw(403,"License not found or invalid"),a.tenantId||e.throw(403,"License does not have a tenant ID"),await va.context.doInSelfHostTenantUsingCloud(a.tenantId,async()=>{await va.context.doInLicenseContext(a,async()=>{await t()})})}var Wi={};w(Wi,{appBackups:()=>tb,auditLogs:()=>$A,environmentVariables:()=>BA,groups:()=>_A,scim:()=>Cb,users:()=>Bb});async function yA(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let a=await qt(t._id);t.roles=a.roles,t.scimInfo=a.scimInfo}let r=await cr(t);e.body={_id:r.id,_rev:r.rev}}async function AA(e){let t=e.params.groupId,r=e.request.body.add,a=e.request.body.remove;(r&&!Array.isArray(r)||a&&!Array.isArray(a))&&e.throw(400,"Must supply a list of users to add or to remove");let n,o;r&&(n=await cs(t,r)),a&&(o=await ls(t,a)),e.body={added:n,removed:o}}async function bA(e){let t=e.params.groupId,r=e.request.body.add,a=e.request.body.remove;(r&&!Array.isArray(r)||a&&!Array.isArray(a))&&e.throw(400,"Must supply a list of objects, with appId and roleId to add or remove"),e.body=await ds(t,{appsToAdd:r,appsToRemove:a})}async function IA(e){e.body={data:await fa()}}async function SA(e){let{groupId:t,rev:r}=e.params;try{await ps(t,r),e.body={message:"Group deleted successfully"}}catch(a){e.throw(a.status,a)}}async function wA(e){try{e.body=await qt(e.params.groupId)}catch(t){e.throw(t.status,t)}}async function vA(e){let{pageSize:t=10,bookmark:r,emailSearch:a}=e.request.query,n=e.params.groupId,o={limit:t+1},s=await Na(n,{...o,emailSearch:a,bookmark:r}),i=a?s[t]?.email:s[t]?._id,p=!!i;e.body={users:s.slice(0,t),bookmark:i,hasNextPage:p}}async function TA(e){let{groupId:t,appId:r}=e.params;await fs(t,r),e.body={message:"Group app builder access updated."}}async function EA(e){let{groupId:t,appId:r}=e.params;await ms(t,r),e.body={message:"group app builder access removed."}}var RA=C(require("@koa/router")),ye=C(require("joi"));var Ee=require("@budibase/types"),Ke=require("@budibase/backend-core"),xA=new RA.default;function AM(){return Ke.auth.joiValidator.body(ye.default.object({_id:ye.default.string().optional(),_rev:ye.default.string().optional(),color:ye.default.string().required(),icon:ye.default.string().required(),name:ye.default.string().trim().required().max(50),role:ye.default.string().optional(),users:ye.default.array().optional(),apps:ye.default.array().optional(),roles:ye.default.object().optional(),createdAt:ye.default.string().optional(),updatedAt:ye.default.string().optional()}).required())}xA.post("/api/global/groups",Ke.auth.adminOnly,j.requireFeature(Ee.Feature.USER_GROUPS),AM(),yA).get("/api/global/groups",j.requireFeature(Ee.Feature.USER_GROUPS),IA).delete("/api/global/groups/:groupId/:rev",j.requireFeature(Ee.Feature.USER_GROUPS),Ke.auth.adminOnly,Bn("groupId"),SA).get("/api/global/groups/:groupId",j.requireFeature(Ee.Feature.USER_GROUPS),Ke.auth.builderOrAdmin,wA).get("/api/global/groups/:groupId/users",j.requireFeature(Ee.Feature.USER_GROUPS),Ke.auth.builderOrAdmin,vA).post("/api/global/groups/:groupId/users",Ke.auth.adminOnly,j.requireFeature(Ee.Feature.USER_GROUPS),Bn("groupId"),AA).post("/api/global/groups/:groupId/apps",Ke.auth.builderOrAdmin,j.requireFeature(Ee.Feature.USER_GROUPS),bA).post("/api/global/groups/:groupId/app/:appId/builder",Ke.auth.builderOrAdmin,j.requireFeatures(Ee.Feature.USER_GROUPS,Ee.Feature.APP_BUILDERS),TA).delete("/api/global/groups/:groupId/app/:appId/builder",Ke.auth.builderOrAdmin,j.requireFeatures(Ee.Feature.USER_GROUPS,Ee.Feature.APP_BUILDERS),EA);var _A=xA;var Ni=require("@budibase/types");var Bi=require("@budibase/backend-core");async function OA(e){e.body={encryptionKeyAvailable:$e.isEncryptionKeyAvailable()}}async function PA(e){e.body={variables:await $e.fetch()}}async function LA(e){let{name:t,production:r,development:a}=e.request.body;await $e.update(t,{production:r,development:a});let n=[Ni.AppEnvironment.PRODUCTION];r!==a&&n.push(Ni.AppEnvironment.DEVELOPMENT),await Bi.events.environmentVariable.created(t,n),e.body={message:`Environment variable "${t}" created.`}}async function CA(e){let{production:t,development:r}=e.request.body,a=e.params.varName;await $e.update(a,{production:t,development:r}),e.body={message:`Environment variable "${a}" updated.`}}async function qA(e){let t=e.params.varName;await $e.remove(t),await Bi.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}var Bt=require("@budibase/backend-core"),DA=C(require("@koa/router")),Ta=C(require("joi")),NA=new DA.default;function UA(){return Bt.auth.joiValidator.body(Ta.default.object({name:Ta.default.string().optional(),production:Ta.default.string().required(),development:Ta.default.string().required()}))}NA.get("/api/env/variables/status",Bt.auth.builderOrAdmin,OA).get("/api/env/variables",Bt.auth.builderOrAdmin,PA).post("/api/env/variables",Bt.auth.builderOrAdmin,UA(),LA).patch("/api/env/variables/:varName",Bt.auth.builderOrAdmin,UA(),CA).delete("/api/env/variables/:varName",Bt.auth.builderOrAdmin,qA);var BA=NA;var Mi=require("@budibase/backend-core");async function MA(e){let t=e.request.body,r=await ht.fetch(t);await Mi.events.auditLog.filtered(t),e.body=r}async function GA(e){let t=e.request.body,{stream:r}=ht.download(t);await Mi.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}async function kA(e){e.body={events:ht.definitions()}}var QA=require("@budibase/types"),Mt=require("@budibase/backend-core"),jA=C(require("@koa/router")),Re=C(require("joi"));function FA(){return Mt.auth.joiValidator.body(Re.default.object({userIds:Re.default.array().items(Re.default.string()).optional(),appIds:Re.default.array().items(Re.default.string()).optional(),events:Re.default.array().items(Re.default.string().valid(...Object.values(QA.Event))).optional(),startDate:Re.default.string().optional().allow(""),endDate:Re.default.string().optional().allow(""),fullSearch:Re.default.string().optional().allow(""),bookmark:Re.default.number()}))}var WA=new jA.default;WA.post("/api/global/auditlogs/search",Mt.auth.adminOnly,FA(),MA).get("/api/global/auditlogs/download",Mt.auth.adminOnly,Mt.middleware.querystringToBody,FA(),GA).get("/api/global/auditlogs/definitions",Mt.auth.adminOnly,kA);var $A=WA;var Gi=require("@budibase/types");var VA=require("@budibase/backend-core");async function Ar(e,t){await Vt.appExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}async function KA(e){let t=e.params.appId;await Ar(e,t);let r=e.request.body,a=e.user?._id,n=await Te.triggerAppBackup(t,Gi.AppBackupTrigger.MANUAL,{name:r.name,createdBy:a});n||e.throw(500,"Unable to start backup."),e.body={backupId:n,message:"Backup triggered - process starting."}}async function YA(e){let t=e.params.appId;await Ar(e,t);let r=e.params.backupId,a=e.request.body.name,n=await Te.triggerAppRestore(t,r,a,e.user?._id);n||e.throw(500,"Unable to start restore."),await VA.events.backup.appBackupRestored(n.metadata),e.body={restoredId:n?.restoreId,message:"Restore triggered - process starting."}}async function HA(e){let t=e.params.appId;await Ar(e,t);let r=e.params.backupId;await Te.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}async function zA(e){let t=e.params.appId;await Ar(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(Gi.AppBackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await Te.fetchAppBackups(t,{paginate:!0,...r})}async function JA(e){let t=e.params.appId;await Ar(e,t);let r=e.params.backupId,a=e.request.body;e.body=await Te.updateAppBackup(r,a.name)}async function XA(e){let t=e.params.appId;await Ar(e,t);let r=e.params.backupId,{metadata:a,stream:n}=await Te.getBackupDownloadStream(r);e.attachment(`backup-${a.timestamp}.tar.gz`),e.body=n}var ZA=C(require("@koa/router")),Gt=C(require("joi")),Mn=require("@budibase/types"),At=require("@budibase/backend-core"),eb=new ZA.default;function wM(){return At.auth.joiValidator.body(Gt.default.object({trigger:Gt.default.string().valid(...Object.values(Mn.AppBackupTrigger)),type:Gt.default.string().valid(...Object.values(Mn.AppBackupType)),startDate:Gt.default.date(),endDate:Gt.default.date(),page:Gt.default.string()}))}eb.post("/api/apps/:appId/backups",At.auth.builderOrAdmin,KA).post("/api/apps/:appId/backups/search",At.auth.builderOrAdmin,wM(),zA).get("/api/apps/:appId/backups/:backupId/file",At.auth.builderOrAdmin,XA).patch("/api/apps/:appId/backups/:backupId",At.auth.builderOrAdmin,JA).delete("/api/apps/:appId/backups/:backupId",At.auth.builderOrAdmin,HA).post("/api/apps/:appId/backups/:backupId/import",At.auth.builderOrAdmin,YA);var tb=eb;var Lb=C(require("@koa/router"));var Gn=require("scim-patch");var ab=require("@budibase/backend-core");function rb(e,t){let r=e.request.query[t];if(r!==void 0)return+r}var nb=async e=>{let t=rb(e,"pageSize")??20,r=rb(e,"startIndex"),a;e.request.query.filter&&(a=V.user.userFilters(e.request.query.filter));let n=await de.get({pageSize:t,skip:r,filters:a});e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:n.total,Resources:n.users.map(V.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},ob=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await de.find(t);e.body=V.user.toScimUserResponse(r)},sb=async e=>{let t=V.user.fromScimUser(e.request.body);try{let r=await de.create(t);e.body=V.user.toScimUserResponse(r)}catch(r){throw r instanceof ab.EmailUnavailableError&&e.throw(409,"Email already in use"),r}};function vM(e){let t=e.Operations.find(r=>(r.op==="Replace"||r.op==="replace")&&r.path==="active");return t?t.value===!1||t.value?.toLowerCase?.()==="false":!1}var ib=async e=>{let t=await de.find(e.params.id);t||e.throw(404);let r=V.user.toScimUserResponse(t),a=e.request.body;try{(0,Gn.patchBodyValidation)(a)}catch{}if(vM(a))return ki(e);let n;try{n=(0,Gn.scimPatch)(r,a.Operations)}catch{}n||e.throw(500);let o=V.user.fromScimUser(n);await de.update(o,{allowChangingEmail:!0}),e.body=V.user.toScimUserResponse(o)},ki=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await de.remove(t),e.status=204};var vb=C(wb()),Tb=require("@budibase/shared-core"),kn=require("scim-patch");var Fn=require("scim2-parse-filter");function Eb(e,t){for(let r of t.split(","))delete e[r]}var Rb=async e=>{let r=(await Q.fetch()).filter(o=>o.scimInfo?.isSync).map(V.group.toScimGroupResponse),{filter:a,excludedAttributes:n}=e.request.query;if(a){let o=(0,Fn.filter)((0,Fn.parse)(a));r=r.filter(o)}n&&r.forEach(o=>{Eb(o,n)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},xb=async e=>{let t=V.group.fromScimGroup(e.request.body),r=await yr.create(t);e.body=V.group.toScimGroupResponse(r)},_b=async e=>{let{id:t}=e.params,r=await Q.get(t),a=V.group.toScimGroupResponse(r),{excludedAttributes:n}=e.request.query;n&&Eb(a,n),e.body=a},Ob=async e=>{let{id:t}=e.params,r=await Q.get(t);await Q.remove(t,r._rev),e.status=204},Pb=async e=>{let{id:t}=e.params,r=await Q.get(t),a=V.group.toScimGroupResponse(r),n=e.request.body;try{(0,kn.patchBodyValidation)(n)}catch{e.throw(400)}let{true:o,false:s}=(0,vb.default)(n.Operations,i=>i.path==="members");if(s?.length){let i=(0,kn.scimPatch)(a,s);i||e.throw(500);let p={...V.group.fromScimGroup(i),_rev:r._rev};await Q.save(p)}if(o?.length){let i=[],p=[];for(let{op:f,value:m}of o)switch(f){case"add":case"Add":for(let g of m)i.push(await de.find(g.value));break;case"remove":case"Remove":for(let g of m)p.push(await de.find(g.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:Tb.utils.unreachable(f)}i.length&&await Q.addUsers(t,i.map(f=>f._id)),p.length&&await Q.removeUsers(t,p.map(f=>f._id))}e.body=V.group.toScimGroupResponse(await Q.get(t))};var Ea=require("@budibase/types"),Ae=new Lb.default({prefix:"/api/global/scim/v2"});Ae.use(qi);Ae.use(Ci);Ae.get("/users",nb);Ae.get("/users/:id",Sa("id"),ob);Ae.post("/users",sb);Ae.patch("/users/:id",Sa("id"),ib);Ae.delete("/users/:id",Sa("id"),ki);Ae.get("/groups",Rb);Ae.post("/groups",j.requireFeature(Ea.Feature.USER_GROUPS),xb);Ae.get("/groups/:id",j.requireFeature(Ea.Feature.USER_GROUPS),wa("id"),_b);Ae.delete("/groups/:id",j.requireFeature(Ea.Feature.USER_GROUPS),wa("id"),Ob);Ae.patch("/groups/:id",j.requireFeature(Ea.Feature.USER_GROUPS),wa("id"),Pb);var Cb=Ae;var Db=C(require("@koa/router"));var Fi=require("@budibase/backend-core");async function qb(e){let{userId:t,appId:r}=e.params,a=await Ze.db.getUser(t);if(Fi.users.isGlobalBuilder(a)){e.body={message:"User already admin - no permissions updated."};return}await Ze.addAppBuilder(a,r),e.body={message:`User "${a.email}" app builder access updated.`}}async function Ub(e){let{userId:t,appId:r}=e.params,a=await Ze.db.getUser(t);if(Fi.users.isGlobalBuilder(a)){e.body={message:"User already admin - no permissions removed."};return}await Ze.removeAppBuilder(a,r),e.body={message:`User "${a.email}" app builder access removed.`}}var Qi=require("@budibase/types"),ji=require("@budibase/backend-core"),Nb=new Db.default;Nb.post("/api/global/users/:userId/app/:appId/builder",ji.auth.builderOrAdmin,j.requireFeatures(Qi.Feature.APP_BUILDERS),qb).delete("/api/global/users/:userId/app/:appId/builder",ji.auth.builderOrAdmin,j.requireFeatures(Qi.Feature.APP_BUILDERS),Ub);var Bb=Nb;var V={};w(V,{group:()=>Vi,user:()=>$i});var $i={};w($i,{fromScimUser:()=>XM,toScimUserResponse:()=>HM,userFilters:()=>ZM});var Qn=require("@budibase/types"),Mb=require("scim2-parse-filter"),Gb=require("@budibase/backend-core"),kb=require("@budibase/shared-core"),{unreachable:YM}=kb.utils,HM=e=>{let{isSync:t,roles:r,...a}=e.scimInfo||{},n={...a,schemas:["urn:ietf:params:scim:schemas:core:2.0:User"],id:e._id,meta:{resourceType:"User",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},active:e.status===Qn.UserStatus.ACTIVE};return(e.firstName||e.lastName)&&(n.name={formatted:[e.firstName,e.lastName].filter(o=>o).join(" "),familyName:e.lastName,givenName:e.firstName}),n},zM=e=>!!e?.id;function JM(e){if(Gb.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}var XM=e=>{let t=zM(e)?e:void 0,r=JM(e);if(!r)throw new Error("Email is required");let a;switch(e.active){case"True":case"true":case!0:a=!0;break;case"False":case"false":case!1:a=!1;break;default:YM(e.active)}let n,o;return e.name?.givenName?(n=e.name?.givenName,o=e.name?.familyName):n=e.displayName,{tenantId:"",_id:t?.id,userId:t?.id,email:r,firstName:n,lastName:o,scimInfo:{...e,isSync:!0},roles:{},status:a?Qn.UserStatus.ACTIVE:Qn.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},ZM=e=>{let t={equal:{}},r=(0,Mb.parse)(e);function a(n){switch(n.op){case"eq":{let o=n.attrPath,s;switch(o){case"emails.value":s="email";break;default:s=`scimInfo.${o}`}t.equal[s]=n.compValue;break}case"and":for(let o of n.filters)a(o);break;default:console.warn("Filter not handled",{filter:n})}}return a(r),t};var Vi={};w(Vi,{fromScimGroup:()=>rG,toScimGroupResponse:()=>eG});var eG=e=>({schemas:["urn:ietf:params:scim:schemas:core:2.0:Group"],id:e._id,externalId:e.scimInfo.externalId,meta:{resourceType:"Group",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},displayName:e.name,members:e.users?.map(t=>({value:t._id}))}),tG=e=>!!e?.id,rG=e=>{let t=tG(e)?e:void 0;return{_id:t?.id,name:e.displayName,scimInfo:{externalId:e.externalId,isSync:!0},icon:"UserGroup",color:"var(--spectrum-global-color-blue-600)",createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}};var mu={};w(mu,{LLMRequest:()=>K,TableGeneration:()=>fu,agentHistoryTitleSystemPrompt:()=>dG,agentSystemPrompt:()=>lG,aiColumnSchemas:()=>lu,aiTableResponseToTableSchema:()=>iu,appendAIColumns:()=>uu,classifyText:()=>Yi,cleanData:()=>Hi,generateAIColumns:()=>ou,generateCode:()=>cG,generateCronExpression:()=>zi,generateData:()=>su,generateJs:()=>eu,generateSQL:()=>pG,generateTables:()=>nu,generationStructure:()=>cu,getLLM:()=>xa,getLLMConfig:()=>au,getLLMOrThrow:()=>Yb,parseResponseFormat:()=>tu,sanitiseToolName:()=>aG,searchWeb:()=>Zi,sentimentAnalysis:()=>Xi,summarizeText:()=>jn,tableDataStructuredOutput:()=>du,translate:()=>Ji});function aG(e){if(e.length>64)throw new Error("Tool name must be under 64 characters long");return e.replace(/[^a-zA-Z0-9_-]/g,"_")}var Ye=require("@budibase/backend-core"),Wb=require("@budibase/types");var Qb=C(require("openai"));var bt=require("@budibase/types");var Fb=require("@budibase/shared-core");function Ki(e,t){return t.map(r=>e[r]).join(" ")}var It=class{constructor({model:t,apiKey:r}){this.model=t,this.apiKey=r,this.maxTokens=parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"300")}async prompt(t){typeof t=="string"&&(t=new K().addUserMessage(t));let{messages:r,tokensUsed:a}=await this.chatCompletion(t);return!r||r.length===0?{message:"",tokensUsed:a}:{message:r[r.length-1].content||"",tokensUsed:a}}async chat(t){return await this.chatCompletion(t)}async summarizeText(t){return this.prompt(jn(t))}async generateCronExpression(t){return this.prompt(zi(t))}async operation(t,r){let a=this.promptForOperation(t,r);return this.prompt(a)}promptForOperation(t,r){let{operation:a,column:n,columns:o,language:s,categories:i,prompt:p}=t;switch(a){case bt.AIOperationEnum.SUMMARISE_TEXT:return jn(Ki(r,o));case bt.AIOperationEnum.CLEAN_DATA:return Hi(r[n]);case bt.AIOperationEnum.TRANSLATE:return Ji(r[n],s);case bt.AIOperationEnum.CATEGORISE_TEXT:if(!i)throw Error("No categories provided for categorise text operation. Please provide categories.");return Yi(Ki(r,o),i.split(","));case bt.AIOperationEnum.SENTIMENT_ANALYSIS:return Xi(r[n]);case bt.AIOperationEnum.PROMPT:return p;case bt.AIOperationEnum.SEARCH_WEB:return Zi(Ki(r,o));default:throw Fb.utils.unreachable(a)}}async generateJs(t,r){let{bindings:a=[],snippets:n=[]}=r||{};return await this.prompt(eu(a,n).addUserMessage(t))}};var jb=require("openai/helpers/zod");function tu(e){if(e)return e==="text"?{type:"text"}:e==="json"?{type:"json_object"}:e}function nG(e){if(!e)return 0;let t=e.prompt_tokens;return e.completion_tokens*3+t}var at=class extends It{constructor(r){super(r);if(!r.apiKey)throw new Error("No OpenAI API key found");this.client=new Qb.default({apiKey:r.apiKey})}async chatCompletion(r){let a={model:this.model,messages:r.messages,max_tokens:this.maxTokens,response_format:tu(r.format)};r.tools&&r.tools.length>0&&(a.tool_choice="auto",a.tools=r.tools.map(jb.zodFunction));let n=await this.client.chat.completions.create(a),o=n.choices[0]?.message;if(o?.tool_calls){r.addMessage(o);let s=[];for(let i of o.tool_calls){let p=r.findTool(i.function.name);if(!p)throw new Error(`Tool ${i.function.name} not found in prompt tools`);let f=JSON.parse(i.function.arguments);s.push(p.handler(f).then(m=>({role:"tool",tool_call_id:i.id,content:m})))}return r.addMessages(await Promise.all(s)),this.chatCompletion(r)}else{if(o?.content)return{messages:[...r.messages,{role:o.role,content:o.content}],tokensUsed:nG(n.usage)};throw new Error("No response found")}}};var nt=require("@budibase/backend-core");var Wn=class extends It{async prompt(t){let r=await super.prompt(t);return r.tokensUsed&&await mn(r.tokensUsed),r}async chat(t){let r=await super.chat(t);return r.tokensUsed&&await mn(r.tokensUsed),r}async chatCompletion(t){return nt.env.SELF_HOSTED?this.chatCompletionSelfHost(t):this.chatCompletionCloud(t)}async chatCompletionCloud(t){return await new at({apiKey:nt.env.OPENAI_API_KEY,model:this.model}).chatCompletion(t)}async chatCompletionSelfHost(t){if(!nt.env.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(!this.apiKey){let n=await Yo();if(!n)throw new Error("No license key found");this.apiKey=n}let r={messages:t.messages,format:t.format,useTools:t.tools.length>0},a=await fetch(`${nt.env.BUDICLOUD_URL}/api/ai/chat`,{method:"POST",headers:{"Content-Type":"application/json",[nt.constants.Header.LICENSE_KEY]:this.apiKey},body:JSON.stringify(r)});if(!a.ok)throw await nt.HTTPError.fromResponse(a);return await a.json()}};var Ra=require("dd-trace");var ru=C(require("@anthropic-ai/sdk"));function oG(e){if(!e)return 0;let t=e.input_tokens;return e.output_tokens*3+t}var $n=class extends It{constructor(r){super(r);this.client=new ru.default({apiKey:r.apiKey})}firstTextBlock(r){for(let a of r.content)if(a.type==="text")return a.text}async chatCompletion(r){try{let a=await this.client.messages.create({model:this.model,messages:r.messages.map(({content:o})=>({role:"user",content:o||""})),max_tokens:this.maxTokens}),n=this.firstTextBlock(a)||"";return{messages:[...r.messages,{role:"assistant",content:n}],tokensUsed:oG(a.usage)}}catch(a){throw a instanceof ru.default.APIError&&console.error(`Anthropic Prompt failed with error ${a.name} and status: ${a.status}`),a}}};var $b=require("zod"),Vb=require("openai/helpers/zod"),Kb="gpt-4o-mini",sG={OpenAI:at,TogetherAI:at,AzureOpenAI:at,Custom:at,Anthropic:$n,BudibaseAI:Wn};async function iG(){return await Ra.tracer.trace("getAIConfig",async e=>{let t={type:Wb.ConfigType.AI,config:{}};if(!Ye.context.isSelfHostUsingCloud()){let a=await Ye.configs.getAIConfig();a&&(t=a)}await ts(t);let r=Object.values(t.config).find(a=>a.active&&a.isDefault);if(!r){e.addTags({enabled:!1,reason:"no provider found"});return}return e.addTags({enabled:!0}),{provider:r.provider,model:r.defaultModel||Kb,apiKey:r.apiKey}})}async function uG(){return Ra.tracer.trace("getSelfHostOpenAIKeyConfig",e=>{if(!Ye.env.SELF_HOSTED){e.addTags({enabled:!1,reason:"not self host"});return}if(!Ye.env.OPENAI_API_KEY){e.addTags({enabled:!1,reason:"no OPENAI_API_KEY"});return}return e.addTags({enabled:!0}),{provider:"OpenAI",model:Kb,apiKey:Ye.env.OPENAI_API_KEY}})}async function au(){return Ra.tracer.trace("getLLMConfig",async()=>await iG()||await uG())}async function xa(e){return await Ra.tracer.trace("getLLM",async t=>{let r=await au();if(!r){t.addTags({enabled:!1,reason:"no config found"});return}e&&(r.model=e);let a=sG[r.provider];if(!a){t.addTags({enabled:!1,reason:"no provider found",provider:r.provider});return}return new a(r)})}async function Yb(){let e=await xa();if(!e)throw new Ye.HTTPError("No available LLM configurations",500);return e}var K=class e{constructor(){this.messages=[];this.tools=[]}addTool(t){return this.tools.push(t),this}addTools(t){return this.tools.push(...t),this}findTool(t){return this.tools.find(r=>r.name===t)}withFormat(t){return t instanceof $b.z.ZodType?this.format=(0,Vb.zodResponseFormat)(t,"key"):this.format=t,this}addMessage(t){return this.messages.push(t),this}addMessages(t){return this.messages.push(...t),this}addUserMessage(t){return this.messages.push({role:"user",content:t}),this}addSystemMessage(t){return this.messages.push({role:"system",content:t}),this}static fromRequest(t){let r=new e;return t.messages&&r.addMessages(t.messages),t.format&&r.withFormat(t.format),r}};function jn(e){return new K().addUserMessage(`Summarize this text:
|
|
39
39
|
${e}.
|
|
40
|
-
Only return the summary.`)}function
|
|
40
|
+
Only return the summary.`)}function Yi(e,t){return new K().addUserMessage(`Return the category of this text: "${e}". Based on these categories: ${t.join(", ")}. Only return the category.`)}function Hi(e){return new K().addUserMessage(`Clean the following string: "${e}". Remove any spelling mistakes or data issues. Only return the cleaned string itself and nothing else.`)}function pG(e,t){return new K().addUserMessage(`Given the table schema:
|
|
41
41
|
${t}
|
|
42
42
|
|
|
43
43
|
Generate a SQL query for the following request:
|
|
44
44
|
${e}.
|
|
45
|
-
Only provide the SQL.`)}function
|
|
45
|
+
Only provide the SQL.`)}function cG(e){return new K().addUserMessage(`Generate JavaScript code for the following request:
|
|
46
46
|
${e}.
|
|
47
|
-
Only provide the JS and nothing else.`)}function
|
|
48
|
-
${e}`)}function
|
|
47
|
+
Only provide the JS and nothing else.`)}function zi(e){return new K().addUserMessage(`Generate a node-cron compatible expression based on the following prompt. Return only the cron expression (without backticks), and if not possible return only 'Error generating cron' with a short explanation:
|
|
48
|
+
${e}`)}function Ji(e,t){return new K().addUserMessage(`Translate the following text: "${e}" into ${t}. Only return the translation.`)}function Xi(e){return new K().addUserMessage(`Return the sentiment of this text: "${e}". Only return the sentiment.`)}function Zi(e){return new K().addUserMessage(`Search the web for the following: "${e}". Only return the top results.`)}function eu(e,t){let r="You do not have access to any bindings in this request.";e&&e.length>0&&(r=`The bindings you have access to are:
|
|
49
49
|
|
|
50
|
-
${e.map(({readableBinding:
|
|
51
|
-
`)}`);let
|
|
50
|
+
${e.map(({readableBinding:n})=>`- $("${n}")`).join(`
|
|
51
|
+
`)}`);let a="You do not have access to any snippets in this request.";return t.length>0&&(a=`The snippets you have access to are:
|
|
52
52
|
|
|
53
|
-
${t.map(({name:
|
|
54
|
-
`)}`),
|
|
53
|
+
${t.map(({name:n,code:o})=>{let s=o.replace(/^\s*return /g,"");return`- snippets.${n} = ${s.trim()}`}).join(`
|
|
54
|
+
`)}`),new K().addSystemMessage(`
|
|
55
55
|
You are a helpful expert in writing JavaScript. A user is asking you for help
|
|
56
56
|
writing some JavaScript for their application.
|
|
57
57
|
|
|
@@ -138,9 +138,9 @@ This is incorrect because it references an undefined variable "amount". It is
|
|
|
138
138
|
important that you never reference a variable that is not defined. If you need
|
|
139
139
|
a variable, it will be provided to you as a binding.
|
|
140
140
|
|
|
141
|
-
${
|
|
141
|
+
${a}
|
|
142
142
|
|
|
143
|
-
${r}`)}function
|
|
143
|
+
${r}`)}function nu(){let e=`
|
|
144
144
|
You are generating Budibase table schemas from user prompts.
|
|
145
145
|
Always return at least 2 tables, and define only one side of relationships using a link field.
|
|
146
146
|
Exclude id, created_at, and updated_at (Budibase adds them).
|
|
@@ -148,16 +148,35 @@ Include a variety of column types: text, dropdown, date, number.
|
|
|
148
148
|
Add at least one formula column, one attachment, and one multi-attachment column across the tables.
|
|
149
149
|
Budibase handles reverse relationships and many-to-many links \u2014 never define join tables or reverse fields.
|
|
150
150
|
You may specify foreignColumnName, but do not create that field manually.
|
|
151
|
-
`;return
|
|
151
|
+
`;return new K().addSystemMessage(e)}function ou(){let e='Given the generated schema, add only one field of type "AI" to relevant tables to add value to the Budibase user.';return new K().addSystemMessage(e)}function su(){let e=`
|
|
152
152
|
For each table, populate the data field with realistic-looking sample records.
|
|
153
153
|
Avoid placeholder values like "foo" or "bar". Use real names, emails, etc., and ensure values are unique across rows.
|
|
154
|
-
`;return
|
|
154
|
+
`;return new K().addSystemMessage(e)}function lG(e){return`You are a helpful support agent, using workflows to solve problems for users.
|
|
155
|
+
The user is asking you for help with a support query.
|
|
156
|
+
|
|
157
|
+
Your reply MUST be short and concise, answering the user's query as quickly and
|
|
158
|
+
easily as possible.
|
|
159
|
+
|
|
160
|
+
You MUST use markdown for any formatting in your response message.
|
|
161
|
+
|
|
162
|
+
Do not tell the user about the format of the parameters, for example if a date is required to be
|
|
163
|
+
supplied in ISO format, you should convert it to that, allowing the user to provide the date
|
|
164
|
+
in any human readable format.
|
|
165
|
+
|
|
166
|
+
If asked you can supply the list of "automations" to the user, this is the list of tool names available.
|
|
167
|
+
|
|
168
|
+
Information about the user making the request can be found below:
|
|
169
|
+
\`\`\`
|
|
170
|
+
${JSON.stringify(e)}
|
|
171
|
+
\`\`\``}function dG(){return`You will be provided with a set of history, a conversation between a user and an AI. Using this
|
|
172
|
+
information generate a title for the conversation, this should start with a capital letter and MUST be
|
|
173
|
+
less than five words.`}var Jb=require("@budibase/backend-core"),Xb=require("@budibase/shared-core");var ot=require("@budibase/types"),Hb=require("@budibase/backend-core");function iu(e){let t=[],r=[];for(let a of e.tables){let n=a.schema.reduce((o,s)=>{if(s.type===ot.FieldType.LINK){if(!r.includes(s.relationshipId)){let i={[ot.RelationshipType.MANY_TO_ONE]:ot.RelationshipType.ONE_TO_MANY,[ot.RelationshipType.ONE_TO_MANY]:ot.RelationshipType.MANY_TO_ONE,[ot.RelationshipType.MANY_TO_MANY]:ot.RelationshipType.MANY_TO_MANY},{reverseFieldName:p,relationshipId:f,...m}=s;o[s.name]={...m,fieldName:p,relationshipType:i[s.relationshipType]},r.push(f)}}else o[s.name]=s;return o},{});t.push({_id:Hb.docIds.generateTableID(),name:a.name,primaryDisplay:a.primaryDisplay,schema:n})}return t}function uu(e,t){let r=[];for(let a of e)r.push({...a,schema:{...a.schema,...t[a.name]?.reduce((n,o)=>(n[o.name]=o,n),{})}});return r}var v=require("@budibase/types"),A=require("zod"),ue=A.z.object({name:A.z.string().describe("A human readable name for the field. It MUST be alpha-numeric and capitalised.")}),pu=ue.extend({type:A.z.literal(v.FieldType.LINK),tableId:A.z.string().describe("This must match one of the generated table names"),reverseFieldName:A.z.string().describe("Only the *name* of the field that will appear in the foreign table. Budibase creates this automatically. Do not define the column yourself."),relationshipId:A.z.string().describe("The ID of the relationship. It must be used in pairs, paring many-to-ones and one-to-manys, or many-to-manys with each other.")}),fG=A.z.array(A.z.union([ue.extend({type:A.z.enum([v.FieldType.STRING,v.FieldType.NUMBER,v.FieldType.BOOLEAN,v.FieldType.LONGFORM]),constraints:A.z.object({presence:A.z.boolean()}).optional()}),pu.extend({relationshipType:A.z.enum([v.RelationshipType.MANY_TO_ONE])}).describe("Many-to-one relationship, where the current table is the 'many' side. Defines the initiating side of the relationship. Only this side should be defined. The reverse column will be created automatically."),pu.extend({relationshipType:A.z.enum([v.RelationshipType.ONE_TO_MANY])}).describe("One-to-many relationship, where the current table is the 'one' side. Defines the initiating side of the relationship. Only this side should be defined. The reverse column will be created automatically."),pu.extend({relationshipType:A.z.enum([v.RelationshipType.MANY_TO_MANY])}).describe("Many to many relationship. Defines the initiating side of the relationship. Only this side should be defined. The reverse column will be created automatically."),ue.extend({type:A.z.literal(v.FieldType.OPTIONS),constraints:A.z.object({inclusion:A.z.array(A.z.string()).describe("The options for the field"),presence:A.z.boolean()})}).describe("A single option from closed set of options"),ue.extend({type:A.z.literal(v.FieldType.ARRAY),constraints:A.z.object({inclusion:A.z.array(A.z.string()).describe("The options for the field"),presence:A.z.boolean(),type:A.z.literal(v.JsonFieldSubType.ARRAY)}).describe("Multiple selected options from closed set of options")}),ue.extend({type:A.z.literal(v.FieldType.FORMULA),formula:A.z.string().describe(`
|
|
155
174
|
A JavaScript expression using only previously defined fields.
|
|
156
175
|
Reference fields using $("Field name"). Must end with: return ...
|
|
157
176
|
Example: return $("Score") + $("Weight")
|
|
158
|
-
`),responseType:
|
|
177
|
+
`),responseType:A.z.enum([v.FieldType.STRING,v.FieldType.NUMBER,v.FieldType.BOOLEAN,v.FieldType.DATETIME])}).describe("Define these types after the other types"),ue.extend({type:A.z.literal(v.FieldType.DATETIME),ignoreTimezones:A.z.boolean()}).describe("A datetime field, storing date and time"),ue.extend({type:A.z.literal(v.FieldType.DATETIME),ignoreTimezones:A.z.boolean(),timeOnly:A.z.literal(!0)}).describe("A time only field"),ue.extend({type:A.z.literal(v.FieldType.DATETIME),ignoreTimezones:A.z.boolean(),dateOnly:A.z.literal(!0)}).describe("A date only field"),ue.extend({type:A.z.literal(v.FieldType.ATTACHMENT_SINGLE),subtype:A.z.literal(v.AttachmentSubType.IMAGE)}).describe("Single image column"),ue.extend({type:A.z.literal(v.FieldType.ATTACHMENT_SINGLE)}).describe("Single attachment column. It stores a single document: pdf, word, etc. Use an appropriate name for the column, like 'Invoice', 'Document', etc."),ue.extend({type:A.z.literal(v.FieldType.ATTACHMENTS),subtype:A.z.literal(v.AttachmentSubType.IMAGE)}).describe("Multiple images column. Use an appropiate name for the columns, like 'Gallery', 'Photos', etc."),ue.extend({type:A.z.literal(v.FieldType.ATTACHMENTS)}).describe("Multiple attachments column. It might hold different kind of documents mixed up: pdf, txt, etc. Use an appropiate name for the columns, like 'Invoices', 'Documents', 'Attachments', etc.")])),cu=A.z.object({tables:A.z.array(A.z.object({name:A.z.string(),schema:fG,primaryDisplay:A.z.string().describe("The column will be used as display, so pick the clearer option. This must match EXACTLY one of the created fields names in the schema.")}))});function lu(e){let t=A.z.object({});for(let r of e){let a=Object.values(r.schema),n=[ue.extend({type:A.z.literal(v.FieldType.AI),operation:A.z.literal(v.AIOperationEnum.TRANSLATE),column:A.z.enum(a.filter(o=>[v.FieldType.STRING,v.FieldType.LONGFORM].includes(o.type)).map(o=>o.name)).describe("The columns to translate"),language:A.z.string()}).describe("This column will be autogenerated via AI to translate one column. Use it for reasonable cases, like translating descriptions or similar."),ue.extend({type:A.z.literal(v.FieldType.AI),operation:A.z.literal(v.AIOperationEnum.CATEGORISE_TEXT),columns:A.z.array(A.z.enum(a.filter(o=>[v.FieldType.STRING,v.FieldType.LONGFORM,v.FieldType.BOOLEAN,v.FieldType.NUMBER,v.FieldType.DATETIME].includes(o.type)).map(o=>o.name))).describe("The columns to be used as context"),categories:A.z.string().describe("CSV list of categories")}).describe("This column will be autogenerated via AI to categorise a row based on one or many columns.")];a.some(o=>o.type===v.FieldType.LONGFORM)&&n.push(ue.extend({type:A.z.literal(v.FieldType.AI),operation:A.z.literal(v.AIOperationEnum.SUMMARISE_TEXT),columns:A.z.array(A.z.enum(a.filter(o=>[v.FieldType.STRING,v.FieldType.LONGFORM].includes(o.type)).map(o=>o.name))).describe("Columns, from the current table, to be passed in the context. Use at least one.")}).describe("This column will be autogenerated via AI to summarise one or many columns.")),t=t.extend({[r.name]:A.z.array(A.z.union(n))})}return t}var k=require("zod"),zb=require("@budibase/shared-core"),q=require("@budibase/types");function du(e){let t=k.z.object({});for(let r of e){let a={_id:k.z.string().describe("Unique ID for the row")},n=k.z.union([k.z.literal("https://picsum.photos/600/600").describe("For profile pictures and similar"),k.z.literal("https://picsum.photos/1920/1080").describe("For anything else")]),o=k.z.object({fileName:k.z.string(),extension:k.z.enum([".pdf",".txt"]),content:k.z.string().describe("Random content for the file")});for(let s of Object.values(r.schema)){let{type:i}=s;switch(i){case q.FieldType.STRING:case q.FieldType.LONGFORM:a[s.name]=k.z.string();break;case q.FieldType.NUMBER:case q.FieldType.BIGINT:a[s.name]=k.z.number();break;case q.FieldType.BOOLEAN:a[s.name]=k.z.boolean();break;case q.FieldType.DATETIME:a[s.name]=k.z.string().describe(`ISO datetime. Use realistic dates, based on today's date, ${new Date().toISOString()}`);break;case q.FieldType.ATTACHMENT_SINGLE:s.subtype===q.AttachmentSubType.IMAGE?a[s.name]=n:a[s.name]=o;break;case q.FieldType.ATTACHMENTS:s.subtype===q.AttachmentSubType.IMAGE?a[s.name]=k.z.array(n):a[s.name]=k.z.array(o),a[s.name]=a[s.name].describe("Between 2 and 5 items.");break;case q.FieldType.OPTIONS:a[s.name]=k.z.enum(s.constraints.inclusion);break;case q.FieldType.LINK:{let p=k.z.string().describe(`Match one of the _ids created for table "${s.tableId}"`);s.relationshipType===q.RelationshipType.ONE_TO_MANY?a[s.name]=k.z.array(p).describe("Array with a single item"):s.relationshipType===q.RelationshipType.MANY_TO_MANY&&(a[s.name]=k.z.array(p).describe("Array with a one or many items. You can repeat the same ids between rows"))}break;case q.FieldType.ARRAY:a[s.name]=k.z.array(k.z.enum(s.constraints.inclusion));break;case q.FieldType.AI:case q.FieldType.AUTO:case q.FieldType.SIGNATURE_SINGLE:case q.FieldType.BB_REFERENCE:case q.FieldType.JSON:case q.FieldType.FORMULA:case q.FieldType.INTERNAL:case q.FieldType.BARCODEQR:case q.FieldType.BB_REFERENCE_SINGLE:break;default:throw zb.utils.unreachable(i)}}t=t.extend({[r.name]:k.z.array(k.z.object(a))}).describe(`Each table should include at least a few items (min 3, max 18). The number of items should not be evenly distributed. Instead, follow natural relationships and usage patterns based on the tables nature. For example:
|
|
159
178
|
1. If we have posts and comments, there should be more posts than users, and more comments than posts.
|
|
160
179
|
2. If it's a ticketing system, there may be more tickets than users, and some users may have submitted several tickets.
|
|
161
180
|
3. In a CRM, there are fewer users than customers, and customers may have many deals.
|
|
162
|
-
4. In a project management tool, projects might have many tasks, and tasks might have multiple comments.`)}return t}var
|
|
163
|
-
"${t}"`).format(mc(r)));return JSON.parse(n.message)}};var nG={parseResponseFormat:Ta};var ze=require("@budibase/backend-core");var aG=/```(?:\w+)?\n([\s\S]+?)\n```/;async function bc(){let e=await mn();if(!e)throw new ze.HTTPError("No available LLM configurations",500);return e}async function tv(e){let t=await bc(),{prompt:r}=e.request.body,{message:n}=await t.generateCronExpression(r);n?.startsWith("Error generating cron:")?e.throw(400,n):e.body={message:n}}async function rv(e){await ze.features.isEnabled(Ys.FeatureFlag.AI_JS_GENERATION)||e.throw(500,"AI JS generation is disabled");let t=await bc();await ze.context.ensureSnippetContext();let n=ze.context.getCurrentContext()?.snippets||[],{prompt:a,bindings:s=[]}=e.request.body,o=(await t.generateJs(a,{bindings:s,snippets:n})).message||"",i=o.match(aG);i&&(o=i[1]),e.body={code:o}}async function nv(e){!await ze.features.isEnabled(Ys.FeatureFlag.AI_JS_GENERATION)&&!await ze.features.isEnabled(Ys.FeatureFlag.AI_TABLE_GENERATION)&&e.throw(500,"AI generation is disabled"),ze.env.SELF_HOSTED&&e.throw(500,"Budibase AI endpoints are not available in self-host");let t=await bc(),r=ee.fromRequest(e.request.body),{message:n,tokensUsed:a}=await t.prompt(r);e.body={message:n,tokensUsed:a}}var sv=F(require("@koa/router")),Ac=require("@budibase/backend-core");var Oa=require("@budibase/backend-core");async function av(e,t){let r=e.request.headers[Oa.constants.Header.LICENSE_KEY];Array.isArray(r)&&(r=r[0]),r||e.throw(403,"License key not provided");let n=await ri(r);n||e.throw(403,"License not found or invalid"),n.tenantId||e.throw(403,"License does not have a tenant ID"),await Oa.context.doInSelfHostTenantUsingCloud(n.tenantId,async()=>{await Oa.context.doInLicenseContext(n,async()=>{await t()})})}var Hs=new sv.default;Hs.post("/api/ai/cron",Ac.auth.builderOrAdmin,tv);Hs.post("/api/ai/js",Ac.auth.builderOrAdmin,rv);Hs.post("/api/ai/chat",av,nv);var ov=Hs;async function iv(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let n=await ar(t._id);t.roles=n.roles,t.scimInfo=n.scimInfo}let r=await zr(t);e.body={_id:r.id,_rev:r.rev}}async function uv(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of users to add or to remove");let a,s;r&&(a=await _i(t,r)),n&&(s=await Ii(t,n)),e.body={added:a,removed:s}}async function cv(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 wi(t,{appsToAdd:r,appsToRemove:n})}async function pv(e){e.body={data:await pa()}}async function lv(e){let{groupId:t,rev:r}=e.params;try{await vi(t,r),e.body={message:"Group deleted successfully"}}catch(n){e.throw(n.status,n)}}async function dv(e){try{e.body=await ar(e.params.groupId)}catch(t){e.throw(t.status,t)}}async function fv(e){let{pageSize:t=10,bookmark:r,emailSearch:n}=e.request.query,a=e.params.groupId,s={limit:t+1},o=await Ba(a,{...s,emailSearch:n,bookmark:r}),i=n?o[t]?.email:o[t]?._id,u=!!i;e.body={users:o.slice(0,t),bookmark:i,hasNextPage:u}}async function mv(e){let{groupId:t,appId:r}=e.params;await Si(t,r),e.body={message:"Group app builder access updated."}}async function gv(e){let{groupId:t,appId:r}=e.params;await xi(t,r),e.body={message:"group app builder access removed."}}var hv=F(require("@koa/router")),Ce=F(require("joi"));var Ge=require("@budibase/types"),ft=require("@budibase/backend-core"),yv=new hv.default;function iG(){return ft.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())}yv.post("/api/global/groups",ft.auth.adminOnly,z.requireFeature(Ge.Feature.USER_GROUPS),iG(),iv).get("/api/global/groups",z.requireFeature(Ge.Feature.USER_GROUPS),pv).delete("/api/global/groups/:groupId/:rev",z.requireFeature(Ge.Feature.USER_GROUPS),ft.auth.adminOnly,Ds("groupId"),lv).get("/api/global/groups/:groupId",z.requireFeature(Ge.Feature.USER_GROUPS),ft.auth.builderOrAdmin,dv).get("/api/global/groups/:groupId/users",z.requireFeature(Ge.Feature.USER_GROUPS),ft.auth.builderOrAdmin,fv).post("/api/global/groups/:groupId/users",ft.auth.adminOnly,z.requireFeature(Ge.Feature.USER_GROUPS),Ds("groupId"),uv).post("/api/global/groups/:groupId/apps",ft.auth.builderOrAdmin,z.requireFeature(Ge.Feature.USER_GROUPS),cv).post("/api/global/groups/:groupId/app/:appId/builder",ft.auth.builderOrAdmin,z.requireFeatures(Ge.Feature.USER_GROUPS,Ge.Feature.APP_BUILDERS),mv).delete("/api/global/groups/:groupId/app/:appId/builder",ft.auth.builderOrAdmin,z.requireFeatures(Ge.Feature.USER_GROUPS,Ge.Feature.APP_BUILDERS),gv);var bv=yv;var vc=require("@budibase/types");var _c=require("@budibase/backend-core");async function Av(e){e.body={encryptionKeyAvailable:ut.isEncryptionKeyAvailable()}}async function vv(e){e.body={variables:await ut.fetch()}}async function _v(e){let{name:t,production:r,development:n}=e.request.body;await ut.update(t,{production:r,development:n});let a=[vc.AppEnvironment.PRODUCTION];r!==n&&a.push(vc.AppEnvironment.DEVELOPMENT),await _c.events.environmentVariable.created(t,a),e.body={message:`Environment variable "${t}" created.`}}async function Iv(e){let{production:t,development:r}=e.request.body,n=e.params.varName;await ut.update(n,{production:t,development:r}),e.body={message:`Environment variable "${n}" updated.`}}async function wv(e){let t=e.params.varName;await ut.remove(t),await _c.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}var Sr=require("@budibase/backend-core"),xv=F(require("@koa/router")),Ca=F(require("joi")),Tv=new xv.default;function Sv(){return Sr.auth.joiValidator.body(Ca.default.object({name:Ca.default.string().optional(),production:Ca.default.string().required(),development:Ca.default.string().required()}))}Tv.get("/api/env/variables/status",Sr.auth.builderOrAdmin,Av).get("/api/env/variables",Sr.auth.builderOrAdmin,vv).post("/api/env/variables",Sr.auth.builderOrAdmin,Sv(),_v).patch("/api/env/variables/:varName",Sr.auth.builderOrAdmin,Sv(),Iv).delete("/api/env/variables/:varName",Sr.auth.builderOrAdmin,wv);var Ev=Tv;var Ic=require("@budibase/backend-core");async function Rv(e){let t=e.request.body,r=await kt.fetch(t);await Ic.events.auditLog.filtered(t),e.body=r}async function Ov(e){let t=e.request.body,{stream:r}=kt.download(t);await Ic.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}async function Cv(e){e.body={events:kt.definitions()}}var Lv=require("@budibase/types"),xr=require("@budibase/backend-core"),qv=F(require("@koa/router")),Fe=F(require("joi"));function Pv(){return xr.auth.joiValidator.body(Fe.default.object({userIds:Fe.default.array().items(Fe.default.string()).optional(),appIds:Fe.default.array().items(Fe.default.string()).optional(),events:Fe.default.array().items(Fe.default.string().valid(...Object.values(Lv.Event))).optional(),startDate:Fe.default.string().optional().allow(""),endDate:Fe.default.string().optional().allow(""),fullSearch:Fe.default.string().optional().allow(""),bookmark:Fe.default.number()}))}var Nv=new qv.default;Nv.post("/api/global/auditlogs/search",xr.auth.adminOnly,Pv(),Rv).get("/api/global/auditlogs/download",xr.auth.adminOnly,xr.middleware.querystringToBody,Pv(),Ov).get("/api/global/auditlogs/definitions",xr.auth.adminOnly,Cv);var Uv=Nv;var wc=require("@budibase/types");var kv=require("@budibase/backend-core");async function gn(e,t){await qr.appExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}async function Dv(e){let t=e.params.appId;await gn(e,t);let r=e.request.body,n=e.user?._id,a=await De.triggerAppBackup(t,wc.AppBackupTrigger.MANUAL,{name:r.name,createdBy:n});a||e.throw(500,"Unable to start backup."),e.body={backupId:a,message:"Backup triggered - process starting."}}async function Bv(e){let t=e.params.appId;await gn(e,t);let r=e.params.backupId,n=e.request.body.name,a=await De.triggerAppRestore(t,r,n,e.user?._id);a||e.throw(500,"Unable to start restore."),await kv.events.backup.appBackupRestored(a.metadata),e.body={restoredId:a?.restoreId,message:"Restore triggered - process starting."}}async function Mv(e){let t=e.params.appId;await gn(e,t);let r=e.params.backupId;await De.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}async function Gv(e){let t=e.params.appId;await gn(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(wc.AppBackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await De.fetchAppBackups(t,{paginate:!0,...r})}async function Fv(e){let t=e.params.appId;await gn(e,t);let r=e.params.backupId,n=e.request.body;e.body=await De.updateAppBackup(r,n.name)}async function jv(e){let t=e.params.appId;await gn(e,t);let r=e.params.backupId,{metadata:n,stream:a}=await De.getBackupDownloadStream(r);e.attachment(`backup-${n.timestamp}.tar.gz`),e.body=a}var Qv=F(require("@koa/router")),Tr=F(require("joi")),Zs=require("@budibase/types"),Wt=require("@budibase/backend-core"),$v=new Qv.default;function lG(){return Wt.auth.joiValidator.body(Tr.default.object({trigger:Tr.default.string().valid(...Object.values(Zs.AppBackupTrigger)),type:Tr.default.string().valid(...Object.values(Zs.AppBackupType)),startDate:Tr.default.date(),endDate:Tr.default.date(),page:Tr.default.string()}))}$v.post("/api/apps/:appId/backups",Wt.auth.builderOrAdmin,Dv).post("/api/apps/:appId/backups/search",Wt.auth.builderOrAdmin,lG(),Gv).get("/api/apps/:appId/backups/:backupId/file",Wt.auth.builderOrAdmin,jv).patch("/api/apps/:appId/backups/:backupId",Wt.auth.builderOrAdmin,Fv).delete("/api/apps/:appId/backups/:backupId",Wt.auth.builderOrAdmin,Mv).post("/api/apps/:appId/backups/:backupId/import",Wt.auth.builderOrAdmin,Bv);var Wv=$v;var v_=F(require("@koa/router"));var zs=require("scim-patch");var Kv=require("@budibase/backend-core");function Vv(e,t){let r=e.request.query[t];if(r!==void 0)return+r}var Yv=async e=>{let t=Vv(e,"pageSize")??20,r=Vv(e,"startIndex"),n;e.request.query.filter&&(n=te.user.userFilters(e.request.query.filter));let a=await Ie.get({pageSize:t,skip:r,filters:n});e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:a.total,Resources:a.users.map(te.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},Hv=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await Ie.find(t);e.body=te.user.toScimUserResponse(r)},Zv=async e=>{let t=te.user.fromScimUser(e.request.body);try{let r=await Ie.create(t);e.body=te.user.toScimUserResponse(r)}catch(r){throw r instanceof Kv.EmailUnavailableError&&e.throw(409,"Email already in use"),r}};function dG(e){let t=e.Operations.find(r=>(r.op==="Replace"||r.op==="replace")&&r.path==="active");return t?t.value===!1||t.value?.toLowerCase?.()==="false":!1}var zv=async e=>{let t=await Ie.find(e.params.id);t||e.throw(404);let r=te.user.toScimUserResponse(t),n=e.request.body;try{(0,zs.patchBodyValidation)(n)}catch{}if(dG(n))return Sc(e);let a;try{a=(0,zs.scimPatch)(r,n.Operations)}catch{}a||e.throw(500);let s=te.user.fromScimUser(a);await Ie.update(s,{allowChangingEmail:!0}),e.body=te.user.toScimUserResponse(s)},Sc=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await Ie.remove(t),e.status=204};var d_=F(l_()),f_=require("@budibase/shared-core"),Js=require("scim-patch");var Xs=require("scim2-parse-filter");function m_(e,t){for(let r of t.split(","))delete e[r]}var g_=async e=>{let r=(await Z.fetch()).filter(s=>s.scimInfo?.isSync).map(te.group.toScimGroupResponse),{filter:n,excludedAttributes:a}=e.request.query;if(n){let s=(0,Xs.filter)((0,Xs.parse)(n));r=r.filter(s)}a&&r.forEach(s=>{m_(s,a)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},h_=async e=>{let t=te.group.fromScimGroup(e.request.body),r=await an.create(t);e.body=te.group.toScimGroupResponse(r)},y_=async e=>{let{id:t}=e.params,r=await Z.get(t),n=te.group.toScimGroupResponse(r),{excludedAttributes:a}=e.request.query;a&&m_(n,a),e.body=n},b_=async e=>{let{id:t}=e.params,r=await Z.get(t);await Z.remove(t,r._rev),e.status=204},A_=async e=>{let{id:t}=e.params,r=await Z.get(t),n=te.group.toScimGroupResponse(r),a=e.request.body;try{(0,Js.patchBodyValidation)(a)}catch{e.throw(400)}let{true:s,false:o}=(0,d_.default)(a.Operations,i=>i.path==="members");if(o?.length){let i=(0,Js.scimPatch)(n,o);i||e.throw(500);let u={...te.group.fromScimGroup(i),_rev:r._rev};await Z.save(u)}if(s?.length){let i=[],u=[];for(let{op:d,value:f}of s)switch(d){case"add":case"Add":for(let g of f)i.push(await Ie.find(g.value));break;case"remove":case"Remove":for(let g of f)u.push(await Ie.find(g.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:f_.utils.unreachable(d)}i.length&&await Z.addUsers(t,i.map(d=>d._id)),u.length&&await Z.removeUsers(t,u.map(d=>d._id))}e.body=te.group.toScimGroupResponse(await Z.get(t))};var Pa=require("@budibase/types"),Pe=new v_.default({prefix:"/api/global/scim/v2"});Pe.use(Qu);Pe.use(ju);Pe.get("/users",Yv);Pe.get("/users/:id",ba("id"),Hv);Pe.post("/users",Zv);Pe.patch("/users/:id",ba("id"),zv);Pe.delete("/users/:id",ba("id"),Sc);Pe.get("/groups",g_);Pe.post("/groups",z.requireFeature(Pa.Feature.USER_GROUPS),h_);Pe.get("/groups/:id",z.requireFeature(Pa.Feature.USER_GROUPS),Aa("id"),y_);Pe.delete("/groups/:id",z.requireFeature(Pa.Feature.USER_GROUPS),Aa("id"),b_);Pe.patch("/groups/:id",z.requireFeature(Pa.Feature.USER_GROUPS),Aa("id"),A_);var __=Pe;var S_=F(require("@koa/router"));var xc=require("@budibase/backend-core");async function I_(e){let{userId:t,appId:r}=e.params,n=await bt.db.getUser(t);if(xc.users.isGlobalBuilder(n)){e.body={message:"User already admin - no permissions updated."};return}await bt.addAppBuilder(n,r),e.body={message:`User "${n.email}" app builder access updated.`}}async function w_(e){let{userId:t,appId:r}=e.params,n=await bt.db.getUser(t);if(xc.users.isGlobalBuilder(n)){e.body={message:"User already admin - no permissions removed."};return}await bt.removeAppBuilder(n,r),e.body={message:`User "${n.email}" app builder access removed.`}}var Tc=require("@budibase/types"),Ec=require("@budibase/backend-core"),x_=new S_.default;x_.post("/api/global/users/:userId/app/:appId/builder",Ec.auth.builderOrAdmin,z.requireFeatures(Tc.Feature.APP_BUILDERS),I_).delete("/api/global/users/:userId/app/:appId/builder",Ec.auth.builderOrAdmin,z.requireFeatures(Tc.Feature.APP_BUILDERS),w_);var T_=x_;var te={};T(te,{group:()=>Cc,user:()=>Oc});var Oc={};T(Oc,{fromScimUser:()=>FG,toScimUserResponse:()=>BG,userFilters:()=>jG});var eo=require("@budibase/types"),E_=require("scim2-parse-filter"),R_=require("@budibase/backend-core"),O_=require("@budibase/shared-core"),{unreachable:DG}=O_.utils,BG=e=>{let{isSync:t,roles:r,...n}=e.scimInfo||{},a={...n,schemas:["urn:ietf:params:scim:schemas:core:2.0:User"],id:e._id,meta:{resourceType:"User",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},active:e.status===eo.UserStatus.ACTIVE};return(e.firstName||e.lastName)&&(a.name={formatted:[e.firstName,e.lastName].filter(s=>s).join(" "),familyName:e.lastName,givenName:e.firstName}),a},MG=e=>!!e?.id;function GG(e){if(R_.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}var FG=e=>{let t=MG(e)?e:void 0,r=GG(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:DG(e.active)}let a,s;return e.name?.givenName?(a=e.name?.givenName,s=e.name?.familyName):a=e.displayName,{tenantId:"",_id:t?.id,userId:t?.id,email:r,firstName:a,lastName:s,scimInfo:{...e,isSync:!0},roles:{},status:n?eo.UserStatus.ACTIVE:eo.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},jG=e=>{let t={equal:{}},r=(0,E_.parse)(e);function n(a){switch(a.op){case"eq":{let s=a.attrPath,o;switch(s){case"emails.value":o="email";break;default:o=`scimInfo.${s}`}t.equal[o]=a.compValue;break}case"and":for(let s of a.filters)n(s);break;default:console.warn("Filter not handled",{filter:a})}}return n(r),t};var Cc={};T(Cc,{fromScimGroup:()=>WG,toScimGroupResponse:()=>QG});var QG=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}))}),$G=e=>!!e?.id,WG=e=>{let t=$G(e)?e:void 0;return{_id:t?.id,name:e.displayName,scimInfo:{externalId:e.externalId,isSync:!0},icon:"UserGroup",color:"var(--spectrum-global-color-blue-600)",createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}};0&&(module.exports={Method,ai,api,auditLogs,automations,backups,branding,constants,environmentVariables,features,groups,init,licensing,logger,mappers,middleware,plugins,publicApi,quotas,scimGroups,scimUsers,sdk,users,utils});
|
|
181
|
+
4. In a project management tool, projects might have many tasks, and tasks might have multiple comments.`)}return t}var _a=C(require("dd-trace")),fu=class e{constructor(t,r){this.llmFunctions={getTableStructure:async t=>_a.default.trace("llm.getTableStructure",async()=>{let r=await this.llm.prompt(nu().addUserMessage(t).withFormat(cu)),a=JSON.parse(r.message);return iu(a)}),generateAIColumns:(t,r)=>_a.default.trace("llm.generateAIColumns",async()=>this.generateAIColumns(t,r)),generateData:async(t,r)=>_a.default.trace("llm.generateData",async()=>{let a=await this.llm.prompt(su().addUserMessage(t).withFormat(du(r)));return JSON.parse(a.message)})};this.llm=t,this.delegates=r}static async init(t){let r=await xa("gpt-4o");if(!r)throw new Jb.HTTPError("LLM not available",422);return r.maxTokens=2e3,new e(r,t)}async generate(t,r){return _a.default.trace("tableGeneration.generate",async a=>{let n=await this.generateTables(t,r);return a.addTags({table_count:n.length}),n})}async generateTables(t,r){let a=await this.llmFunctions.getTableStructure(t),n=this.llmFunctions.generateAIColumns(t,a).then(i=>this.delegates.generateTablesDelegate(uu(a,i))),o=await this.llmFunctions.generateData(t,a),s=await n;return await this.delegates.generateDataDelegate(o,r,Xb.utils.toMap("name",a)),s}async generateAIColumns(t,r){let a=await this.llm.prompt(ou().addUserMessage(`This is the initial user prompt that generated the given schema:
|
|
182
|
+
"${t}"`).withFormat(lu(r)));return JSON.parse(a.message)}};0&&(module.exports={Method,ai,api,auditLogs,automations,backups,branding,constants,environmentVariables,features,groups,init,licensing,logger,mappers,middleware,plugins,publicApi,quotas,scimGroups,scimUsers,sdk,users,utils});
|