@budibase/pro 3.9.3 → 3.9.5
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/generators/index.d.ts +1 -0
- package/dist/ai/generators/tableGeneration.d.ts +27 -0
- package/dist/ai/index.d.ts +3 -1
- package/dist/ai/prompts/index.d.ts +6 -1
- package/dist/ai/structuredOutputs/index.d.ts +3 -6
- package/dist/ai/structuredOutputs/mappers/index.d.ts +1 -0
- package/dist/ai/structuredOutputs/mappers/tables.d.ts +3 -0
- package/dist/ai/structuredOutputs/tableData.d.ts +3 -0
- package/dist/ai/structuredOutputs/tables.d.ts +592 -0
- package/dist/ai/types/index.d.ts +1 -0
- package/dist/ai/types/table.d.ts +2 -0
- package/dist/index.js +65 -28
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
"use strict";var Jb=Object.create;var _n=Object.defineProperty;var zb=Object.getOwnPropertyDescriptor;var Xb=Object.getOwnPropertyNames;var Zb=Object.getPrototypeOf,eI=Object.prototype.hasOwnProperty;var u=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),S=(e,t)=>{for(var r in t)_n(e,r,{get:t[r],enumerable:!0})},iu=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of Xb(t))!eI.call(e,a)&&a!==r&&_n(e,a,{get:()=>t[a],enumerable:!(n=zb(t,a))||n.enumerable});return e};var C=(e,t,r)=>(r=e!=null?Jb(Zb(e)):{},iu(t||!e||!e.__esModule?_n(r,"default",{value:e,enumerable:!0}):r,e)),tI=e=>iu(_n({},"__esModule",{value:!0}),e);var Fn=u((b0,$u)=>{"use strict";function XI(e,t){for(var r=-1,n=t.length,a=e.length;++r<n;)e[a+r]=t[r];return e}$u.exports=XI});var io=u((I0,Vu)=>{"use strict";var ZI=typeof global=="object"&&global&&global.Object===Object&&global;Vu.exports=ZI});var te=u((S0,Ku)=>{"use strict";var eS=io(),tS=typeof self=="object"&&self&&self.Object===Object&&self,rS=eS||tS||Function("return this")();Ku.exports=rS});var St=u((w0,Hu)=>{"use strict";var nS=te(),aS=nS.Symbol;Hu.exports=aS});var Xu=u((v0,zu)=>{"use strict";var Yu=St(),Ju=Object.prototype,oS=Ju.hasOwnProperty,sS=Ju.toString,Wr=Yu?Yu.toStringTag:void 0;function iS(e){var t=oS.call(e,Wr),r=e[Wr];try{e[Wr]=void 0;var n=!0}catch{}var a=sS.call(e);return n&&(t?e[Wr]=r:delete e[Wr]),a}zu.exports=iS});var ep=u((E0,Zu)=>{"use strict";var uS=Object.prototype,pS=uS.toString;function cS(e){return pS.call(e)}Zu.exports=cS});var st=u((R0,np)=>{"use strict";var tp=St(),lS=Xu(),dS=ep(),fS="[object Null]",gS="[object Undefined]",rp=tp?tp.toStringTag:void 0;function mS(e){return e==null?e===void 0?gS:fS:rp&&rp in Object(e)?lS(e):dS(e)}np.exports=mS});var ce=u((_0,ap)=>{"use strict";function yS(e){return e!=null&&typeof e=="object"}ap.exports=yS});var sp=u((x0,op)=>{"use strict";var AS=st(),hS=ce(),bS="[object Arguments]";function IS(e){return hS(e)&&AS(e)==bS}op.exports=IS});var $r=u((T0,pp)=>{"use strict";var ip=sp(),SS=ce(),up=Object.prototype,wS=up.hasOwnProperty,vS=up.propertyIsEnumerable,ES=ip(function(){return arguments}())?ip:function(e){return SS(e)&&wS.call(e,"callee")&&!vS.call(e,"callee")};pp.exports=ES});var z=u((P0,cp)=>{"use strict";var RS=Array.isArray;cp.exports=RS});var gp=u((C0,fp)=>{"use strict";var lp=St(),_S=$r(),xS=z(),dp=lp?lp.isConcatSpreadable:void 0;function TS(e){return xS(e)||_S(e)||!!(dp&&e&&e[dp])}fp.exports=TS});var uo=u((O0,yp)=>{"use strict";var PS=Fn(),CS=gp();function mp(e,t,r,n,a){var o=-1,i=e.length;for(r||(r=CS),a||(a=[]);++o<i;){var s=e[o];t>0&&r(s)?t>1?mp(s,t-1,r,n,a):PS(a,s):n||(a[a.length]=s)}return a}yp.exports=mp});var Vr=u((L0,Ap)=>{"use strict";function OS(e){return e}Ap.exports=OS});var Qn=u((q0,hp)=>{"use strict";function LS(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=LS});var po=u((U0,Ip)=>{"use strict";var qS=Qn(),bp=Math.max;function US(e,t,r){return t=bp(t===void 0?e.length-1:t,0),function(){for(var n=arguments,a=-1,o=bp(n.length-t,0),i=Array(o);++a<o;)i[a]=n[t+a];a=-1;for(var s=Array(t+1);++a<t;)s[a]=n[a];return s[t]=r(i),qS(e,this,s)}}Ip.exports=US});var wp=u((D0,Sp)=>{"use strict";function DS(e){return function(){return e}}Sp.exports=DS});var Se=u((B0,vp)=>{"use strict";function BS(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}vp.exports=BS});var Kr=u((N0,Ep)=>{"use strict";var NS=st(),MS=Se(),GS="[object AsyncFunction]",kS="[object Function]",FS="[object GeneratorFunction]",QS="[object Proxy]";function jS(e){if(!MS(e))return!1;var t=NS(e);return t==kS||t==FS||t==GS||t==QS}Ep.exports=jS});var _p=u((M0,Rp)=>{"use strict";var WS=te(),$S=WS["__core-js_shared__"];Rp.exports=$S});var Pp=u((G0,Tp)=>{"use strict";var co=_p(),xp=function(){var e=/[^.]+$/.exec(co&&co.keys&&co.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function VS(e){return!!xp&&xp in e}Tp.exports=VS});var lo=u((k0,Cp)=>{"use strict";var KS=Function.prototype,HS=KS.toString;function YS(e){if(e!=null){try{return HS.call(e)}catch{}try{return e+""}catch{}}return""}Cp.exports=YS});var Lp=u((F0,Op)=>{"use strict";var JS=Kr(),zS=Pp(),XS=Se(),ZS=lo(),ew=/[\\^$.*+?()[\]{}|]/g,tw=/^\[object .+?Constructor\]$/,rw=Function.prototype,nw=Object.prototype,aw=rw.toString,ow=nw.hasOwnProperty,sw=RegExp("^"+aw.call(ow).replace(ew,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function iw(e){if(!XS(e)||zS(e))return!1;var t=JS(e)?sw:tw;return t.test(ZS(e))}Op.exports=iw});var Up=u((Q0,qp)=>{"use strict";function uw(e,t){return e?.[t]}qp.exports=uw});var it=u((j0,Dp)=>{"use strict";var pw=Lp(),cw=Up();function lw(e,t){var r=cw(e,t);return pw(r)?r:void 0}Dp.exports=lw});var fo=u((W0,Bp)=>{"use strict";var dw=it(),fw=function(){try{var e=dw(Object,"defineProperty");return e({},"",{}),e}catch{}}();Bp.exports=fw});var Gp=u(($0,Mp)=>{"use strict";var gw=wp(),Np=fo(),mw=Vr(),yw=Np?function(e,t){return Np(e,"toString",{configurable:!0,enumerable:!1,value:gw(t),writable:!0})}:mw;Mp.exports=yw});var go=u((V0,kp)=>{"use strict";var Aw=800,hw=16,bw=Date.now;function Iw(e){var t=0,r=0;return function(){var n=bw(),a=hw-(n-r);if(r=n,a>0){if(++t>=Aw)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}kp.exports=Iw});var jn=u((K0,Fp)=>{"use strict";var Sw=Gp(),ww=go(),vw=ww(Sw);Fp.exports=vw});var mo=u((H0,Qp)=>{"use strict";var Ew=Vr(),Rw=po(),_w=jn();function xw(e,t){return _w(Rw(e,t,Ew),e+"")}Qp.exports=xw});var Hr=u((Y0,jp)=>{"use strict";var Tw=it(),Pw=Tw(Object,"create");jp.exports=Pw});var Vp=u((J0,$p)=>{"use strict";var Wp=Hr();function Cw(){this.__data__=Wp?Wp(null):{},this.size=0}$p.exports=Cw});var Hp=u((z0,Kp)=>{"use strict";function Ow(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}Kp.exports=Ow});var Jp=u((X0,Yp)=>{"use strict";var Lw=Hr(),qw="__lodash_hash_undefined__",Uw=Object.prototype,Dw=Uw.hasOwnProperty;function Bw(e){var t=this.__data__;if(Lw){var r=t[e];return r===qw?void 0:r}return Dw.call(t,e)?t[e]:void 0}Yp.exports=Bw});var Xp=u((Z0,zp)=>{"use strict";var Nw=Hr(),Mw=Object.prototype,Gw=Mw.hasOwnProperty;function kw(e){var t=this.__data__;return Nw?t[e]!==void 0:Gw.call(t,e)}zp.exports=kw});var ec=u((ek,Zp)=>{"use strict";var Fw=Hr(),Qw="__lodash_hash_undefined__";function jw(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=Fw&&t===void 0?Qw:t,this}Zp.exports=jw});var rc=u((tk,tc)=>{"use strict";var Ww=Vp(),$w=Hp(),Vw=Jp(),Kw=Xp(),Hw=ec();function $t(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}$t.prototype.clear=Ww;$t.prototype.delete=$w;$t.prototype.get=Vw;$t.prototype.has=Kw;$t.prototype.set=Hw;tc.exports=$t});var ac=u((rk,nc)=>{"use strict";function Yw(){this.__data__=[],this.size=0}nc.exports=Yw});var Vt=u((nk,oc)=>{"use strict";function Jw(e,t){return e===t||e!==e&&t!==t}oc.exports=Jw});var Yr=u((ak,sc)=>{"use strict";var zw=Vt();function Xw(e,t){for(var r=e.length;r--;)if(zw(e[r][0],t))return r;return-1}sc.exports=Xw});var uc=u((ok,ic)=>{"use strict";var Zw=Yr(),ev=Array.prototype,tv=ev.splice;function rv(e){var t=this.__data__,r=Zw(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():tv.call(t,r,1),--this.size,!0}ic.exports=rv});var cc=u((sk,pc)=>{"use strict";var nv=Yr();function av(e){var t=this.__data__,r=nv(t,e);return r<0?void 0:t[r][1]}pc.exports=av});var dc=u((ik,lc)=>{"use strict";var ov=Yr();function sv(e){return ov(this.__data__,e)>-1}lc.exports=sv});var gc=u((uk,fc)=>{"use strict";var iv=Yr();function uv(e,t){var r=this.__data__,n=iv(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}fc.exports=uv});var Jr=u((pk,mc)=>{"use strict";var pv=ac(),cv=uc(),lv=cc(),dv=dc(),fv=gc();function Kt(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])}}Kt.prototype.clear=pv;Kt.prototype.delete=cv;Kt.prototype.get=lv;Kt.prototype.has=dv;Kt.prototype.set=fv;mc.exports=Kt});var Wn=u((ck,yc)=>{"use strict";var gv=it(),mv=te(),yv=gv(mv,"Map");yc.exports=yv});var bc=u((lk,hc)=>{"use strict";var Ac=rc(),Av=Jr(),hv=Wn();function bv(){this.size=0,this.__data__={hash:new Ac,map:new(hv||Av),string:new Ac}}hc.exports=bv});var Sc=u((dk,Ic)=>{"use strict";function Iv(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}Ic.exports=Iv});var zr=u((fk,wc)=>{"use strict";var Sv=Sc();function wv(e,t){var r=e.__data__;return Sv(t)?r[typeof t=="string"?"string":"hash"]:r.map}wc.exports=wv});var Ec=u((gk,vc)=>{"use strict";var vv=zr();function Ev(e){var t=vv(this,e).delete(e);return this.size-=t?1:0,t}vc.exports=Ev});var _c=u((mk,Rc)=>{"use strict";var Rv=zr();function _v(e){return Rv(this,e).get(e)}Rc.exports=_v});var Tc=u((yk,xc)=>{"use strict";var xv=zr();function Tv(e){return xv(this,e).has(e)}xc.exports=Tv});var Cc=u((Ak,Pc)=>{"use strict";var Pv=zr();function Cv(e,t){var r=Pv(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}Pc.exports=Cv});var $n=u((hk,Oc)=>{"use strict";var Ov=bc(),Lv=Ec(),qv=_c(),Uv=Tc(),Dv=Cc();function Ht(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])}}Ht.prototype.clear=Ov;Ht.prototype.delete=Lv;Ht.prototype.get=qv;Ht.prototype.has=Uv;Ht.prototype.set=Dv;Oc.exports=Ht});var qc=u((bk,Lc)=>{"use strict";var Bv="__lodash_hash_undefined__";function Nv(e){return this.__data__.set(e,Bv),this}Lc.exports=Nv});var Dc=u((Ik,Uc)=>{"use strict";function Mv(e){return this.__data__.has(e)}Uc.exports=Mv});var yo=u((Sk,Bc)=>{"use strict";var Gv=$n(),kv=qc(),Fv=Dc();function Vn(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new Gv;++t<r;)this.add(e[t])}Vn.prototype.add=Vn.prototype.push=kv;Vn.prototype.has=Fv;Bc.exports=Vn});var Mc=u((wk,Nc)=>{"use strict";function Qv(e,t,r,n){for(var a=e.length,o=r+(n?1:-1);n?o--:++o<a;)if(t(e[o],o,e))return o;return-1}Nc.exports=Qv});var kc=u((vk,Gc)=>{"use strict";function jv(e){return e!==e}Gc.exports=jv});var Qc=u((Ek,Fc)=>{"use strict";function Wv(e,t,r){for(var n=r-1,a=e.length;++n<a;)if(e[n]===t)return n;return-1}Fc.exports=Wv});var Wc=u((Rk,jc)=>{"use strict";var $v=Mc(),Vv=kc(),Kv=Qc();function Hv(e,t,r){return t===t?Kv(e,t,r):$v(e,Vv,r)}jc.exports=Hv});var Ao=u((_k,$c)=>{"use strict";var Yv=Wc();function Jv(e,t){var r=e==null?0:e.length;return!!r&&Yv(e,t,0)>-1}$c.exports=Jv});var Kc=u((xk,Vc)=>{"use strict";function zv(e,t,r){for(var n=-1,a=e==null?0:e.length;++n<a;)if(r(t,e[n]))return!0;return!1}Vc.exports=zv});var ho=u((Tk,Hc)=>{"use strict";function Xv(e,t){return e.has(t)}Hc.exports=Xv});var bo=u((Pk,Yc)=>{"use strict";var Zv=it(),eE=te(),tE=Zv(eE,"Set");Yc.exports=tE});var Io=u((Ck,Jc)=>{"use strict";function rE(){}Jc.exports=rE});var Kn=u((Ok,zc)=>{"use strict";function nE(e){var t=-1,r=Array(e.size);return e.forEach(function(n){r[++t]=n}),r}zc.exports=nE});var Zc=u((Lk,Xc)=>{"use strict";var So=bo(),aE=Io(),oE=Kn(),sE=1/0,iE=So&&1/oE(new So([,-0]))[1]==sE?function(e){return new So(e)}:aE;Xc.exports=iE});var tl=u((qk,el)=>{"use strict";var uE=yo(),pE=Ao(),cE=Kc(),lE=ho(),dE=Zc(),fE=Kn(),gE=200;function mE(e,t,r){var n=-1,a=pE,o=e.length,i=!0,s=[],c=s;if(r)i=!1,a=cE;else if(o>=gE){var f=t?null:dE(e);if(f)return fE(f);i=!1,a=lE,c=new uE}else c=t?[]:s;e:for(;++n<o;){var m=e[n],g=t?t(m):m;if(m=r||m!==0?m:0,i&&g===g){for(var y=c.length;y--;)if(c[y]===g)continue e;t&&c.push(g),s.push(m)}else a(c,g,r)||(c!==s&&c.push(g),s.push(m))}return s}el.exports=mE});var Hn=u((Uk,rl)=>{"use strict";var yE=9007199254740991;function AE(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=yE}rl.exports=AE});var Yt=u((Dk,nl)=>{"use strict";var hE=Kr(),bE=Hn();function IE(e){return e!=null&&bE(e.length)&&!hE(e)}nl.exports=IE});var wo=u((Bk,al)=>{"use strict";var SE=Yt(),wE=ce();function vE(e){return wE(e)&&SE(e)}al.exports=vE});var sl=u((Nk,ol)=>{"use strict";var EE=uo(),RE=mo(),_E=tl(),xE=wo(),TE=RE(function(e){return _E(EE(e,1,xE,!0))});ol.exports=TE});var ul=u((Mk,il)=>{"use strict";var PE=Jr();function CE(){this.__data__=new PE,this.size=0}il.exports=CE});var cl=u((Gk,pl)=>{"use strict";function OE(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}pl.exports=OE});var dl=u((kk,ll)=>{"use strict";function LE(e){return this.__data__.get(e)}ll.exports=LE});var gl=u((Fk,fl)=>{"use strict";function qE(e){return this.__data__.has(e)}fl.exports=qE});var yl=u((Qk,ml)=>{"use strict";var UE=Jr(),DE=Wn(),BE=$n(),NE=200;function ME(e,t){var r=this.__data__;if(r instanceof UE){var n=r.__data__;if(!DE||n.length<NE-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new BE(n)}return r.set(e,t),this.size=r.size,this}ml.exports=ME});var Xr=u((jk,Al)=>{"use strict";var GE=Jr(),kE=ul(),FE=cl(),QE=dl(),jE=gl(),WE=yl();function Jt(e){var t=this.__data__=new GE(e);this.size=t.size}Jt.prototype.clear=kE;Jt.prototype.delete=FE;Jt.prototype.get=QE;Jt.prototype.has=jE;Jt.prototype.set=WE;Al.exports=Jt});var Zr=u((Wk,bl)=>{"use strict";var hl=fo();function $E(e,t,r){t=="__proto__"&&hl?hl(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}bl.exports=$E});var vo=u(($k,Il)=>{"use strict";var VE=Zr(),KE=Vt();function HE(e,t,r){(r!==void 0&&!KE(e[t],r)||r===void 0&&!(t in e))&&VE(e,t,r)}Il.exports=HE});var wl=u((Vk,Sl)=>{"use strict";function YE(e){return function(t,r,n){for(var a=-1,o=Object(t),i=n(t),s=i.length;s--;){var c=i[e?s:++a];if(r(o[c],c,o)===!1)break}return t}}Sl.exports=YE});var Eo=u((Kk,vl)=>{"use strict";var JE=wl(),zE=JE();vl.exports=zE});var Ro=u((en,zt)=>{"use strict";var XE=te(),xl=typeof en=="object"&&en&&!en.nodeType&&en,El=xl&&typeof zt=="object"&&zt&&!zt.nodeType&&zt,ZE=El&&El.exports===xl,Rl=ZE?XE.Buffer:void 0,_l=Rl?Rl.allocUnsafe:void 0;function eR(e,t){if(t)return e.slice();var r=e.length,n=_l?_l(r):new e.constructor(r);return e.copy(n),n}zt.exports=eR});var _o=u((Hk,Tl)=>{"use strict";var tR=te(),rR=tR.Uint8Array;Tl.exports=rR});var Yn=u((Yk,Cl)=>{"use strict";var Pl=_o();function nR(e){var t=new e.constructor(e.byteLength);return new Pl(t).set(new Pl(e)),t}Cl.exports=nR});var xo=u((Jk,Ol)=>{"use strict";var aR=Yn();function oR(e,t){var r=t?aR(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}Ol.exports=oR});var Xt=u((zk,Ll)=>{"use strict";function sR(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t}Ll.exports=sR});var tn=u((Xk,Ul)=>{"use strict";var iR=Se(),ql=Object.create,uR=function(){function e(){}return function(t){if(!iR(t))return{};if(ql)return ql(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();Ul.exports=uR});var To=u((Zk,Dl)=>{"use strict";function pR(e,t){return function(r){return e(t(r))}}Dl.exports=pR});var Jn=u((eF,Bl)=>{"use strict";var cR=To(),lR=cR(Object.getPrototypeOf,Object);Bl.exports=lR});var zn=u((tF,Nl)=>{"use strict";var dR=Object.prototype;function fR(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||dR;return e===r}Nl.exports=fR});var Po=u((rF,Ml)=>{"use strict";var gR=tn(),mR=Jn(),yR=zn();function AR(e){return typeof e.constructor=="function"&&!yR(e)?gR(mR(e)):{}}Ml.exports=AR});var kl=u((nF,Gl)=>{"use strict";function hR(){return!1}Gl.exports=hR});var nn=u((rn,Zt)=>{"use strict";var bR=te(),IR=kl(),jl=typeof rn=="object"&&rn&&!rn.nodeType&&rn,Fl=jl&&typeof Zt=="object"&&Zt&&!Zt.nodeType&&Zt,SR=Fl&&Fl.exports===jl,Ql=SR?bR.Buffer:void 0,wR=Ql?Ql.isBuffer:void 0,vR=wR||IR;Zt.exports=vR});var Co=u((aF,$l)=>{"use strict";var ER=st(),RR=Jn(),_R=ce(),xR="[object Object]",TR=Function.prototype,PR=Object.prototype,Wl=TR.toString,CR=PR.hasOwnProperty,OR=Wl.call(Object);function LR(e){if(!_R(e)||ER(e)!=xR)return!1;var t=RR(e);if(t===null)return!0;var r=CR.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Wl.call(r)==OR}$l.exports=LR});var Kl=u((oF,Vl)=>{"use strict";var qR=st(),UR=Hn(),DR=ce(),BR="[object Arguments]",NR="[object Array]",MR="[object Boolean]",GR="[object Date]",kR="[object Error]",FR="[object Function]",QR="[object Map]",jR="[object Number]",WR="[object Object]",$R="[object RegExp]",VR="[object Set]",KR="[object String]",HR="[object WeakMap]",YR="[object ArrayBuffer]",JR="[object DataView]",zR="[object Float32Array]",XR="[object Float64Array]",ZR="[object Int8Array]",e_="[object Int16Array]",t_="[object Int32Array]",r_="[object Uint8Array]",n_="[object Uint8ClampedArray]",a_="[object Uint16Array]",o_="[object Uint32Array]",q={};q[zR]=q[XR]=q[ZR]=q[e_]=q[t_]=q[r_]=q[n_]=q[a_]=q[o_]=!0;q[BR]=q[NR]=q[YR]=q[MR]=q[JR]=q[GR]=q[kR]=q[FR]=q[QR]=q[jR]=q[WR]=q[$R]=q[VR]=q[KR]=q[HR]=!1;function s_(e){return DR(e)&&UR(e.length)&&!!q[qR(e)]}Vl.exports=s_});var Xn=u((sF,Hl)=>{"use strict";function i_(e){return function(t){return e(t)}}Hl.exports=i_});var Zn=u((an,er)=>{"use strict";var u_=io(),Yl=typeof an=="object"&&an&&!an.nodeType&&an,on=Yl&&typeof er=="object"&&er&&!er.nodeType&&er,p_=on&&on.exports===Yl,Oo=p_&&u_.process,c_=function(){try{var e=on&&on.require&&on.require("util").types;return e||Oo&&Oo.binding&&Oo.binding("util")}catch{}}();er.exports=c_});var ea=u((iF,Xl)=>{"use strict";var l_=Kl(),d_=Xn(),Jl=Zn(),zl=Jl&&Jl.isTypedArray,f_=zl?d_(zl):l_;Xl.exports=f_});var Lo=u((uF,Zl)=>{"use strict";function g_(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}Zl.exports=g_});var qo=u((pF,ed)=>{"use strict";var m_=Zr(),y_=Vt(),A_=Object.prototype,h_=A_.hasOwnProperty;function b_(e,t,r){var n=e[t];(!(h_.call(e,t)&&y_(n,r))||r===void 0&&!(t in e))&&m_(e,t,r)}ed.exports=b_});var tr=u((cF,td)=>{"use strict";var I_=qo(),S_=Zr();function w_(e,t,r,n){var a=!r;r||(r={});for(var o=-1,i=t.length;++o<i;){var s=t[o],c=n?n(r[s],e[s],s,r,e):void 0;c===void 0&&(c=e[s]),a?S_(r,s,c):I_(r,s,c)}return r}td.exports=w_});var nd=u((lF,rd)=>{"use strict";function v_(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}rd.exports=v_});var sn=u((dF,ad)=>{"use strict";var E_=9007199254740991,R_=/^(?:0|[1-9]\d*)$/;function __(e,t){var r=typeof e;return t=t??E_,!!t&&(r=="number"||r!="symbol"&&R_.test(e))&&e>-1&&e%1==0&&e<t}ad.exports=__});var Uo=u((fF,od)=>{"use strict";var x_=nd(),T_=$r(),P_=z(),C_=nn(),O_=sn(),L_=ea(),q_=Object.prototype,U_=q_.hasOwnProperty;function D_(e,t){var r=P_(e),n=!r&&T_(e),a=!r&&!n&&C_(e),o=!r&&!n&&!a&&L_(e),i=r||n||a||o,s=i?x_(e.length,String):[],c=s.length;for(var f in e)(t||U_.call(e,f))&&!(i&&(f=="length"||a&&(f=="offset"||f=="parent")||o&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||O_(f,c)))&&s.push(f);return s}od.exports=D_});var id=u((gF,sd)=>{"use strict";function B_(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}sd.exports=B_});var pd=u((mF,ud)=>{"use strict";var N_=Se(),M_=zn(),G_=id(),k_=Object.prototype,F_=k_.hasOwnProperty;function Q_(e){if(!N_(e))return G_(e);var t=M_(e),r=[];for(var n in e)n=="constructor"&&(t||!F_.call(e,n))||r.push(n);return r}ud.exports=Q_});var rr=u((yF,cd)=>{"use strict";var j_=Uo(),W_=pd(),$_=Yt();function V_(e){return $_(e)?j_(e,!0):W_(e)}cd.exports=V_});var dd=u((AF,ld)=>{"use strict";var K_=tr(),H_=rr();function Y_(e){return K_(e,H_(e))}ld.exports=Y_});var hd=u((hF,Ad)=>{"use strict";var fd=vo(),J_=Ro(),z_=xo(),X_=Xt(),Z_=Po(),gd=$r(),md=z(),ex=wo(),tx=nn(),rx=Kr(),nx=Se(),ax=Co(),ox=ea(),yd=Lo(),sx=dd();function ix(e,t,r,n,a,o,i){var s=yd(e,r),c=yd(t,r),f=i.get(c);if(f){fd(e,r,f);return}var m=o?o(s,c,r+"",e,t,i):void 0,g=m===void 0;if(g){var y=md(c),h=!y&&tx(c),v=!y&&!h&&ox(c);m=c,y||h||v?md(s)?m=s:ex(s)?m=X_(s):h?(g=!1,m=J_(c,!0)):v?(g=!1,m=z_(c,!0)):m=[]:ax(c)||gd(c)?(m=s,gd(s)?m=sx(s):(!nx(s)||rx(s))&&(m=Z_(c))):g=!1}g&&(i.set(c,m),a(m,c,n,o,i),i.delete(c)),fd(e,r,m)}Ad.exports=ix});var Sd=u((bF,Id)=>{"use strict";var ux=Xr(),px=vo(),cx=Eo(),lx=hd(),dx=Se(),fx=rr(),gx=Lo();function bd(e,t,r,n,a){e!==t&&cx(t,function(o,i){if(a||(a=new ux),dx(o))lx(e,t,i,r,bd,n,a);else{var s=n?n(gx(e,i),o,i+"",e,t,a):void 0;s===void 0&&(s=o),px(e,i,s)}},fx)}Id.exports=bd});var vd=u((IF,wd)=>{"use strict";var mx=Vt(),yx=Yt(),Ax=sn(),hx=Se();function bx(e,t,r){if(!hx(r))return!1;var n=typeof t;return(n=="number"?yx(r)&&Ax(t,r.length):n=="string"&&t in r)?mx(r[t],e):!1}wd.exports=bx});var Rd=u((SF,Ed)=>{"use strict";var Ix=mo(),Sx=vd();function wx(e){return Ix(function(t,r){var n=-1,a=r.length,o=a>1?r[a-1]:void 0,i=a>2?r[2]:void 0;for(o=e.length>3&&typeof o=="function"?(a--,o):void 0,i&&Sx(r[0],r[1],i)&&(o=a<3?void 0:o,a=1),t=Object(t);++n<a;){var s=r[n];s&&e(t,s,n,o)}return t})}Ed.exports=wx});var Do=u((wF,_d)=>{"use strict";var vx=Sd(),Ex=Rd(),Rx=Ex(function(e,t,r){vx(e,t,r)});_d.exports=Rx});var xf=u(oe=>{"use strict";oe.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"};oe.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"],4:["fill","setWith","updateWith"]};oe.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};oe.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2};oe.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};oe.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]};oe.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}};oe.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}};oe.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=oe.aliasToReal,r={};for(var n in t){var a=t[n];e.call(r,a)?r[a].push(n):r[a]=[n]}return r}();oe.remap={assignAll:"assign",assignAllWith:"assignWith",assignInAll:"assignIn",assignInAllWith:"assignInWith",curryN:"curry",curryRightN:"curryRight",defaultsAll:"defaults",defaultsDeepAll:"defaultsDeep",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",mergeAll:"merge",mergeAllWith:"mergeWith",padChars:"pad",padCharsEnd:"padEnd",padCharsStart:"padStart",propertyOf:"get",rangeStep:"range",rangeStepRight:"rangeRight",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart",zipAll:"zip"};oe.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};oe.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}});var Ls=u((WQ,Tf)=>{"use strict";Tf.exports={}});var Lf=u(($Q,Of)=>{"use strict";var $=xf(),uP=Ls(),Pf=Array.prototype.push;function pP(e,t){return t==2?function(r,n){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}function qs(e,t){return t==2?function(r,n){return e(r,n)}:function(r){return e(r)}}function Cf(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}function cP(e){return function(t){return e({},t)}}function lP(e,t){return function(){for(var r=arguments.length,n=r-1,a=Array(r);r--;)a[r]=arguments[r];var o=a[t],i=a.slice(0,t);return o&&Pf.apply(i,o),t!=n&&Pf.apply(i,a.slice(t+1)),e.apply(this,i)}}function Us(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 Ds(e,t,r,n){var a=typeof t=="function",o=t===Object(t);if(o&&(n=r,r=t,t=void 0),r==null)throw new TypeError;n||(n={});var i={cap:"cap"in n?n.cap:!0,curry:"curry"in n?n.curry:!0,fixed:"fixed"in n?n.fixed:!0,immutable:"immutable"in n?n.immutable:!0,rearg:"rearg"in n?n.rearg:!0},s=a?r:uP,c="curry"in n&&n.curry,f="fixed"in n&&n.fixed,m="rearg"in n&&n.rearg,g=a?r.runInContext():void 0,y=a?r:{ary:e.ary,assign:e.assign,clone:e.clone,curry:e.curry,forEach:e.forEach,isArray:e.isArray,isError:e.isError,isFunction:e.isFunction,isWeakMap:e.isWeakMap,iteratee:e.iteratee,keys:e.keys,rearg:e.rearg,toInteger:e.toInteger,toPath:e.toPath},h=y.ary,v=y.assign,P=y.clone,_=y.curry,E=y.forEach,U=y.isArray,et=y.isError,Ae=y.isFunction,tt=y.isWeakMap,Mt=y.keys,Ar=y.rearg,hr=y.toInteger,Fb=y.toPath,eu=Mt($.aryMethod),Qb={castArray:function(I){return function(){var A=arguments[0];return U(A)?I(Cf(A)):I.apply(void 0,arguments)}},iteratee:function(I){return function(){var A=arguments[0],b=arguments[1],w=I(A,b),x=w.length;return i.cap&&typeof b=="number"?(b=b>2?b-2:1,x&&x<=b?w:qs(w,b)):w}},mixin:function(I){return function(A){var b=this;if(!Ae(b))return I(b,Object(A));var w=[];return E(Mt(A),function(x){Ae(A[x])&&w.push([x,b.prototype[x]])}),I(b,Object(A)),E(w,function(x){var X=x[1];Ae(X)?b.prototype[x[0]]=X:delete b.prototype[x[0]]}),b}},nthArg:function(I){return function(A){var b=A<0?1:hr(A)+1;return _(I(A),b)}},rearg:function(I){return function(A,b){var w=b?b.length:0;return _(I(A,b),w)}},runInContext:function(I){return function(A){return Ds(e,I(A),n)}}};function jb(I,A){if(i.cap){var b=$.iterateeRearg[I];if(b)return Hb(A,b);var w=!a&&$.iterateeAry[I];if(w)return Kb(A,w)}return A}function Wb(I,A,b){return c||i.curry&&b>1?_(A,b):A}function tu(I,A,b){if(i.fixed&&(f||!$.skipFixed[I])){var w=$.methodSpread[I],x=w&&w.start;return x===void 0?h(A,b):lP(A,x)}return A}function ru(I,A,b){return i.rearg&&b>1&&(m||!$.skipRearg[I])?Ar(A,$.methodRearg[I]||$.aryRearg[b]):A}function $b(I,A){A=Fb(A);for(var b=-1,w=A.length,x=w-1,X=P(Object(I)),qe=X;qe!=null&&++b<w;){var he=A[b],Ue=qe[he];Ue!=null&&!(Ae(Ue)||et(Ue)||tt(Ue))&&(qe[he]=P(b==x?Ue:Object(Ue))),qe=qe[he]}return X}function Vb(I){return ue.runInContext.convert(I)(void 0)}function nu(I,A){var b=$.aliasToReal[I]||I,w=$.remap[b]||b,x=n;return function(X){var qe=a?g:y,he=a?g[w]:A,Ue=v(v({},x),X);return Ds(qe,b,he,Ue)}}function Kb(I,A){return au(I,function(b){return typeof b=="function"?qs(b,A):b})}function Hb(I,A){return au(I,function(b){var w=A.length;return pP(Ar(qs(b,w),A),w)})}function au(I,A){return function(){var b=arguments.length;if(!b)return I();for(var w=Array(b);b--;)w[b]=arguments[b];var x=i.rearg?0:b-1;return w[x]=A(w[x]),I.apply(void 0,w)}}function ou(I,A,b){var w,x=$.aliasToReal[I]||I,X=A,qe=Qb[x];return qe?X=qe(A):i.immutable&&($.mutate.array[x]?X=Us(A,Cf):$.mutate.object[x]?X=Us(A,cP(A)):$.mutate.set[x]&&(X=Us(A,$b))),E(eu,function(he){return E($.aryMethod[he],function(Ue){if(x==Ue){var su=$.methodSpread[x],Yb=su&&su.afterRearg;return w=Yb?tu(x,ru(x,X,he),he):ru(x,tu(x,X,he),he),w=jb(x,w),w=Wb(x,w,he),!1}}),!w}),w||(w=X),w==A&&(w=c?_(w,1):function(){return A.apply(this,arguments)}),w.convert=nu(x,A),w.placeholder=A.placeholder=b,w}if(!o)return ou(t,r,s);var ue=r,br=[];return E(eu,function(I){E($.aryMethod[I],function(A){var b=ue[$.remap[A]||A];b&&br.push([A,ou(A,b,ue)])})}),E(Mt(ue),function(I){var A=ue[I];if(typeof A=="function"){for(var b=br.length;b--;)if(br[b][0]==I)return;A.convert=nu(I,A),br.push([I,A])}}),E(br,function(I){ue[I[0]]=I[1]}),ue.convert=Vb,ue.placeholder=ue,E(Mt(ue),function(I){E($.realToAlias[I]||[],function(A){ue[A]=ue[I]})}),ue}Of.exports=Ds});var Bs=u((VQ,qf)=>{"use strict";var dP=it(),fP=te(),gP=dP(fP,"WeakMap");qf.exports=gP});var Ns=u((KQ,Df)=>{"use strict";var Uf=Bs(),mP=Uf&&new Uf;Df.exports=mP});var Ms=u((HQ,Nf)=>{"use strict";var yP=Vr(),Bf=Ns(),AP=Bf?function(e,t){return Bf.set(e,t),e}:yP;Nf.exports=AP});var hn=u((YQ,Mf)=>{"use strict";var hP=tn(),bP=Se();function IP(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=hP(e.prototype),n=e.apply(r,t);return bP(n)?n:r}}Mf.exports=IP});var kf=u((JQ,Gf)=>{"use strict";var SP=hn(),wP=te(),vP=1;function EP(e,t,r){var n=t&vP,a=SP(e);function o(){var i=this&&this!==wP&&this instanceof o?a:e;return i.apply(n?r:this,arguments)}return o}Gf.exports=EP});var Gs=u((zQ,Ff)=>{"use strict";var RP=Math.max;function _P(e,t,r,n){for(var a=-1,o=e.length,i=r.length,s=-1,c=t.length,f=RP(o-i,0),m=Array(c+f),g=!n;++s<c;)m[s]=t[s];for(;++a<i;)(g||a<o)&&(m[r[a]]=e[a]);for(;f--;)m[s++]=e[a++];return m}Ff.exports=_P});var ks=u((XQ,Qf)=>{"use strict";var xP=Math.max;function TP(e,t,r,n){for(var a=-1,o=e.length,i=-1,s=r.length,c=-1,f=t.length,m=xP(o-s,0),g=Array(m+f),y=!n;++a<m;)g[a]=e[a];for(var h=a;++c<f;)g[h+c]=t[c];for(;++i<s;)(y||a<o)&&(g[h+r[i]]=e[a++]);return g}Qf.exports=TP});var Wf=u((ZQ,jf)=>{"use strict";function PP(e,t){for(var r=e.length,n=0;r--;)e[r]===t&&++n;return n}jf.exports=PP});var ya=u((ej,$f)=>{"use strict";function CP(){}$f.exports=CP});var ha=u((tj,Vf)=>{"use strict";var OP=tn(),LP=ya(),qP=4294967295;function Aa(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=qP,this.__views__=[]}Aa.prototype=OP(LP.prototype);Aa.prototype.constructor=Aa;Vf.exports=Aa});var Fs=u((rj,Hf)=>{"use strict";var Kf=Ns(),UP=Io(),DP=Kf?function(e){return Kf.get(e)}:UP;Hf.exports=DP});var Jf=u((nj,Yf)=>{"use strict";var BP={};Yf.exports=BP});var Zf=u((aj,Xf)=>{"use strict";var zf=Jf(),NP=Object.prototype,MP=NP.hasOwnProperty;function GP(e){for(var t=e.name+"",r=zf[t],n=MP.call(zf,t)?r.length:0;n--;){var a=r[n],o=a.func;if(o==null||o==e)return a.name}return t}Xf.exports=GP});var Qs=u((oj,eg)=>{"use strict";var kP=tn(),FP=ya();function ba(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}ba.prototype=kP(FP.prototype);ba.prototype.constructor=ba;eg.exports=ba});var rg=u((sj,tg)=>{"use strict";var QP=ha(),jP=Qs(),WP=Xt();function $P(e){if(e instanceof QP)return e.clone();var t=new jP(e.__wrapped__,e.__chain__);return t.__actions__=WP(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}tg.exports=$P});var og=u((ij,ag)=>{"use strict";var VP=ha(),ng=Qs(),KP=ya(),HP=z(),YP=ce(),JP=rg(),zP=Object.prototype,XP=zP.hasOwnProperty;function Ia(e){if(YP(e)&&!HP(e)&&!(e instanceof VP)){if(e instanceof ng)return e;if(XP.call(e,"__wrapped__"))return JP(e)}return new ng(e)}Ia.prototype=KP.prototype;Ia.prototype.constructor=Ia;ag.exports=Ia});var ig=u((uj,sg)=>{"use strict";var ZP=ha(),eC=Fs(),tC=Zf(),rC=og();function nC(e){var t=tC(e),r=rC[t];if(typeof r!="function"||!(t in ZP.prototype))return!1;if(e===r)return!0;var n=eC(r);return!!n&&e===n[0]}sg.exports=nC});var Ws=u((pj,ug)=>{"use strict";var aC=Ms(),oC=go(),sC=oC(aC);ug.exports=sC});var cg=u((cj,pg)=>{"use strict";var iC=/\{\n\/\* \[wrapped with (.+)\] \*/,uC=/,? & /;function pC(e){var t=e.match(iC);return t?t[1].split(uC):[]}pg.exports=pC});var dg=u((lj,lg)=>{"use strict";var cC=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function lC(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(cC,`{
|
|
1
|
+
"use strict";var N_=Object.create;var Ln=Object.defineProperty;var k_=Object.getOwnPropertyDescriptor;var D_=Object.getOwnPropertyNames;var B_=Object.getPrototypeOf,M_=Object.prototype.hasOwnProperty;var c=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),T=(e,t)=>{for(var r in t)Ln(e,r,{get:t[r],enumerable:!0})},Gc=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of D_(t))!M_.call(e,n)&&n!==r&&Ln(e,n,{get:()=>t[n],enumerable:!(a=k_(t,n))||a.enumerable});return e};var F=(e,t,r)=>(r=e!=null?N_(B_(e)):{},Gc(t||!e||!e.__esModule?Ln(r,"default",{value:e,enumerable:!0}):r,e)),G_=e=>Gc(Ln({},"__esModule",{value:!0}),e);var Kn=c((c1,Sp)=>{"use strict";function DI(e,t){for(var r=-1,a=t.length,n=e.length;++r<a;)e[n+r]=t[r];return e}Sp.exports=DI});var _i=c((p1,xp)=>{"use strict";var BI=typeof global=="object"&&global&&global.Object===Object&&global;xp.exports=BI});var ge=c((l1,Tp)=>{"use strict";var MI=_i(),GI=typeof self=="object"&&self&&self.Object===Object&&self,FI=MI||GI||Function("return this")();Tp.exports=FI});var Jt=c((d1,Ep)=>{"use strict";var jI=ge(),QI=jI.Symbol;Ep.exports=QI});var Pp=c((f1,Cp)=>{"use strict";var Rp=Jt(),Op=Object.prototype,$I=Op.hasOwnProperty,WI=Op.toString,Wa=Rp?Rp.toStringTag:void 0;function VI(e){var t=$I.call(e,Wa),r=e[Wa];try{e[Wa]=void 0;var a=!0}catch{}var n=WI.call(e);return a&&(t?e[Wa]=r:delete e[Wa]),n}Cp.exports=VI});var Up=c((m1,Lp)=>{"use strict";var KI=Object.prototype,YI=KI.toString;function HI(e){return YI.call(e)}Lp.exports=HI});var Ut=c((g1,kp)=>{"use strict";var qp=Jt(),ZI=Pp(),zI=Up(),JI="[object Null]",XI="[object Undefined]",Np=qp?qp.toStringTag:void 0;function ew(e){return e==null?e===void 0?XI:JI:Np&&Np in Object(e)?ZI(e):zI(e)}kp.exports=ew});var Ee=c((h1,Dp)=>{"use strict";function tw(e){return e!=null&&typeof e=="object"}Dp.exports=tw});var Mp=c((y1,Bp)=>{"use strict";var rw=Ut(),aw=Ee(),nw="[object Arguments]";function sw(e){return aw(e)&&rw(e)==nw}Bp.exports=sw});var Va=c((b1,jp)=>{"use strict";var Gp=Mp(),iw=Ee(),Fp=Object.prototype,ow=Fp.hasOwnProperty,uw=Fp.propertyIsEnumerable,cw=Gp(function(){return arguments}())?Gp:function(e){return iw(e)&&ow.call(e,"callee")&&!uw.call(e,"callee")};jp.exports=cw});var pe=c((A1,Qp)=>{"use strict";var pw=Array.isArray;Qp.exports=pw});var Kp=c((v1,Vp)=>{"use strict";var $p=Jt(),lw=Va(),dw=pe(),Wp=$p?$p.isConcatSpreadable:void 0;function fw(e){return dw(e)||lw(e)||!!(Wp&&e&&e[Wp])}Vp.exports=fw});var Ii=c((_1,Hp)=>{"use strict";var mw=Kn(),gw=Kp();function Yp(e,t,r,a,n){var s=-1,o=e.length;for(r||(r=gw),n||(n=[]);++s<o;){var i=e[s];t>0&&r(i)?t>1?Yp(i,t-1,r,a,n):mw(n,i):a||(n[n.length]=i)}return n}Hp.exports=Yp});var Ka=c((I1,Zp)=>{"use strict";function hw(e){return e}Zp.exports=hw});var Yn=c((w1,zp)=>{"use strict";function yw(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)}zp.exports=yw});var wi=c((S1,Xp)=>{"use strict";var bw=Yn(),Jp=Math.max;function Aw(e,t,r){return t=Jp(t===void 0?e.length-1:t,0),function(){for(var a=arguments,n=-1,s=Jp(a.length-t,0),o=Array(s);++n<s;)o[n]=a[t+n];n=-1;for(var i=Array(t+1);++n<t;)i[n]=a[n];return i[t]=r(o),bw(e,this,i)}}Xp.exports=Aw});var tl=c((x1,el)=>{"use strict";function vw(e){return function(){return e}}el.exports=vw});var Me=c((T1,rl)=>{"use strict";function _w(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}rl.exports=_w});var Ya=c((E1,al)=>{"use strict";var Iw=Ut(),ww=Me(),Sw="[object AsyncFunction]",xw="[object Function]",Tw="[object GeneratorFunction]",Ew="[object Proxy]";function Rw(e){if(!ww(e))return!1;var t=Iw(e);return t==xw||t==Tw||t==Sw||t==Ew}al.exports=Rw});var sl=c((R1,nl)=>{"use strict";var Ow=ge(),Cw=Ow["__core-js_shared__"];nl.exports=Cw});var ul=c((O1,ol)=>{"use strict";var Si=sl(),il=function(){var e=/[^.]+$/.exec(Si&&Si.keys&&Si.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function Pw(e){return!!il&&il in e}ol.exports=Pw});var xi=c((C1,cl)=>{"use strict";var Lw=Function.prototype,Uw=Lw.toString;function qw(e){if(e!=null){try{return Uw.call(e)}catch{}try{return e+""}catch{}}return""}cl.exports=qw});var ll=c((P1,pl)=>{"use strict";var Nw=Ya(),kw=ul(),Dw=Me(),Bw=xi(),Mw=/[\\^$.*+?()[\]{}|]/g,Gw=/^\[object .+?Constructor\]$/,Fw=Function.prototype,jw=Object.prototype,Qw=Fw.toString,$w=jw.hasOwnProperty,Ww=RegExp("^"+Qw.call($w).replace(Mw,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Vw(e){if(!Dw(e)||kw(e))return!1;var t=Nw(e)?Ww:Gw;return t.test(Bw(e))}pl.exports=Vw});var fl=c((L1,dl)=>{"use strict";function Kw(e,t){return e?.[t]}dl.exports=Kw});var qt=c((U1,ml)=>{"use strict";var Yw=ll(),Hw=fl();function Zw(e,t){var r=Hw(e,t);return Yw(r)?r:void 0}ml.exports=Zw});var Ti=c((q1,gl)=>{"use strict";var zw=qt(),Jw=function(){try{var e=zw(Object,"defineProperty");return e({},"",{}),e}catch{}}();gl.exports=Jw});var bl=c((N1,yl)=>{"use strict";var Xw=tl(),hl=Ti(),eS=Ka(),tS=hl?function(e,t){return hl(e,"toString",{configurable:!0,enumerable:!1,value:Xw(t),writable:!0})}:eS;yl.exports=tS});var Ei=c((k1,Al)=>{"use strict";var rS=800,aS=16,nS=Date.now;function sS(e){var t=0,r=0;return function(){var a=nS(),n=aS-(a-r);if(r=a,n>0){if(++t>=rS)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}Al.exports=sS});var Hn=c((D1,vl)=>{"use strict";var iS=bl(),oS=Ei(),uS=oS(iS);vl.exports=uS});var Ri=c((B1,_l)=>{"use strict";var cS=Ka(),pS=wi(),lS=Hn();function dS(e,t){return lS(pS(e,t,cS),e+"")}_l.exports=dS});var Ha=c((M1,Il)=>{"use strict";var fS=qt(),mS=fS(Object,"create");Il.exports=mS});var xl=c((G1,Sl)=>{"use strict";var wl=Ha();function gS(){this.__data__=wl?wl(null):{},this.size=0}Sl.exports=gS});var El=c((F1,Tl)=>{"use strict";function hS(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}Tl.exports=hS});var Ol=c((j1,Rl)=>{"use strict";var yS=Ha(),bS="__lodash_hash_undefined__",AS=Object.prototype,vS=AS.hasOwnProperty;function _S(e){var t=this.__data__;if(yS){var r=t[e];return r===bS?void 0:r}return vS.call(t,e)?t[e]:void 0}Rl.exports=_S});var Pl=c((Q1,Cl)=>{"use strict";var IS=Ha(),wS=Object.prototype,SS=wS.hasOwnProperty;function xS(e){var t=this.__data__;return IS?t[e]!==void 0:SS.call(t,e)}Cl.exports=xS});var Ul=c(($1,Ll)=>{"use strict";var TS=Ha(),ES="__lodash_hash_undefined__";function RS(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=TS&&t===void 0?ES:t,this}Ll.exports=RS});var Nl=c((W1,ql)=>{"use strict";var OS=xl(),CS=El(),PS=Ol(),LS=Pl(),US=Ul();function Dr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var a=e[t];this.set(a[0],a[1])}}Dr.prototype.clear=OS;Dr.prototype.delete=CS;Dr.prototype.get=PS;Dr.prototype.has=LS;Dr.prototype.set=US;ql.exports=Dr});var Dl=c((V1,kl)=>{"use strict";function qS(){this.__data__=[],this.size=0}kl.exports=qS});var Br=c((K1,Bl)=>{"use strict";function NS(e,t){return e===t||e!==e&&t!==t}Bl.exports=NS});var Za=c((Y1,Ml)=>{"use strict";var kS=Br();function DS(e,t){for(var r=e.length;r--;)if(kS(e[r][0],t))return r;return-1}Ml.exports=DS});var Fl=c((H1,Gl)=>{"use strict";var BS=Za(),MS=Array.prototype,GS=MS.splice;function FS(e){var t=this.__data__,r=BS(t,e);if(r<0)return!1;var a=t.length-1;return r==a?t.pop():GS.call(t,r,1),--this.size,!0}Gl.exports=FS});var Ql=c((Z1,jl)=>{"use strict";var jS=Za();function QS(e){var t=this.__data__,r=jS(t,e);return r<0?void 0:t[r][1]}jl.exports=QS});var Wl=c((z1,$l)=>{"use strict";var $S=Za();function WS(e){return $S(this.__data__,e)>-1}$l.exports=WS});var Kl=c((J1,Vl)=>{"use strict";var VS=Za();function KS(e,t){var r=this.__data__,a=VS(r,e);return a<0?(++this.size,r.push([e,t])):r[a][1]=t,this}Vl.exports=KS});var za=c((X1,Yl)=>{"use strict";var YS=Dl(),HS=Fl(),ZS=Ql(),zS=Wl(),JS=Kl();function Mr(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])}}Mr.prototype.clear=YS;Mr.prototype.delete=HS;Mr.prototype.get=ZS;Mr.prototype.has=zS;Mr.prototype.set=JS;Yl.exports=Mr});var Zn=c((ej,Hl)=>{"use strict";var XS=qt(),ex=ge(),tx=XS(ex,"Map");Hl.exports=tx});var Jl=c((tj,zl)=>{"use strict";var Zl=Nl(),rx=za(),ax=Zn();function nx(){this.size=0,this.__data__={hash:new Zl,map:new(ax||rx),string:new Zl}}zl.exports=nx});var ed=c((rj,Xl)=>{"use strict";function sx(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}Xl.exports=sx});var Ja=c((aj,td)=>{"use strict";var ix=ed();function ox(e,t){var r=e.__data__;return ix(t)?r[typeof t=="string"?"string":"hash"]:r.map}td.exports=ox});var ad=c((nj,rd)=>{"use strict";var ux=Ja();function cx(e){var t=ux(this,e).delete(e);return this.size-=t?1:0,t}rd.exports=cx});var sd=c((sj,nd)=>{"use strict";var px=Ja();function lx(e){return px(this,e).get(e)}nd.exports=lx});var od=c((ij,id)=>{"use strict";var dx=Ja();function fx(e){return dx(this,e).has(e)}id.exports=fx});var cd=c((oj,ud)=>{"use strict";var mx=Ja();function gx(e,t){var r=mx(this,e),a=r.size;return r.set(e,t),this.size+=r.size==a?0:1,this}ud.exports=gx});var zn=c((uj,pd)=>{"use strict";var hx=Jl(),yx=ad(),bx=sd(),Ax=od(),vx=cd();function Gr(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])}}Gr.prototype.clear=hx;Gr.prototype.delete=yx;Gr.prototype.get=bx;Gr.prototype.has=Ax;Gr.prototype.set=vx;pd.exports=Gr});var dd=c((cj,ld)=>{"use strict";var _x="__lodash_hash_undefined__";function Ix(e){return this.__data__.set(e,_x),this}ld.exports=Ix});var md=c((pj,fd)=>{"use strict";function wx(e){return this.__data__.has(e)}fd.exports=wx});var Oi=c((lj,gd)=>{"use strict";var Sx=zn(),xx=dd(),Tx=md();function Jn(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new Sx;++t<r;)this.add(e[t])}Jn.prototype.add=Jn.prototype.push=xx;Jn.prototype.has=Tx;gd.exports=Jn});var yd=c((dj,hd)=>{"use strict";function Ex(e,t,r,a){for(var n=e.length,s=r+(a?1:-1);a?s--:++s<n;)if(t(e[s],s,e))return s;return-1}hd.exports=Ex});var Ad=c((fj,bd)=>{"use strict";function Rx(e){return e!==e}bd.exports=Rx});var _d=c((mj,vd)=>{"use strict";function Ox(e,t,r){for(var a=r-1,n=e.length;++a<n;)if(e[a]===t)return a;return-1}vd.exports=Ox});var wd=c((gj,Id)=>{"use strict";var Cx=yd(),Px=Ad(),Lx=_d();function Ux(e,t,r){return t===t?Lx(e,t,r):Cx(e,Px,r)}Id.exports=Ux});var Ci=c((hj,Sd)=>{"use strict";var qx=wd();function Nx(e,t){var r=e==null?0:e.length;return!!r&&qx(e,t,0)>-1}Sd.exports=Nx});var Td=c((yj,xd)=>{"use strict";function kx(e,t,r){for(var a=-1,n=e==null?0:e.length;++a<n;)if(r(t,e[a]))return!0;return!1}xd.exports=kx});var Pi=c((bj,Ed)=>{"use strict";function Dx(e,t){return e.has(t)}Ed.exports=Dx});var Li=c((Aj,Rd)=>{"use strict";var Bx=qt(),Mx=ge(),Gx=Bx(Mx,"Set");Rd.exports=Gx});var Ui=c((vj,Od)=>{"use strict";function Fx(){}Od.exports=Fx});var Xn=c((_j,Cd)=>{"use strict";function jx(e){var t=-1,r=Array(e.size);return e.forEach(function(a){r[++t]=a}),r}Cd.exports=jx});var Ld=c((Ij,Pd)=>{"use strict";var qi=Li(),Qx=Ui(),$x=Xn(),Wx=1/0,Vx=qi&&1/$x(new qi([,-0]))[1]==Wx?function(e){return new qi(e)}:Qx;Pd.exports=Vx});var qd=c((wj,Ud)=>{"use strict";var Kx=Oi(),Yx=Ci(),Hx=Td(),Zx=Pi(),zx=Ld(),Jx=Xn(),Xx=200;function eT(e,t,r){var a=-1,n=Yx,s=e.length,o=!0,i=[],u=i;if(r)o=!1,n=Hx;else if(s>=Xx){var d=t?null:zx(e);if(d)return Jx(d);o=!1,n=Zx,u=new Kx}else u=t?[]:i;e:for(;++a<s;){var f=e[a],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 n(u,g,r)||(u!==i&&u.push(g),i.push(f))}return i}Ud.exports=eT});var es=c((Sj,Nd)=>{"use strict";var tT=9007199254740991;function rT(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=tT}Nd.exports=rT});var Fr=c((xj,kd)=>{"use strict";var aT=Ya(),nT=es();function sT(e){return e!=null&&nT(e.length)&&!aT(e)}kd.exports=sT});var Ni=c((Tj,Dd)=>{"use strict";var iT=Fr(),oT=Ee();function uT(e){return oT(e)&&iT(e)}Dd.exports=uT});var Md=c((Ej,Bd)=>{"use strict";var cT=Ii(),pT=Ri(),lT=qd(),dT=Ni(),fT=pT(function(e){return lT(cT(e,1,dT,!0))});Bd.exports=fT});var Fd=c((Rj,Gd)=>{"use strict";var mT=za();function gT(){this.__data__=new mT,this.size=0}Gd.exports=gT});var Qd=c((Oj,jd)=>{"use strict";function hT(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}jd.exports=hT});var Wd=c((Cj,$d)=>{"use strict";function yT(e){return this.__data__.get(e)}$d.exports=yT});var Kd=c((Pj,Vd)=>{"use strict";function bT(e){return this.__data__.has(e)}Vd.exports=bT});var Hd=c((Lj,Yd)=>{"use strict";var AT=za(),vT=Zn(),_T=zn(),IT=200;function wT(e,t){var r=this.__data__;if(r instanceof AT){var a=r.__data__;if(!vT||a.length<IT-1)return a.push([e,t]),this.size=++r.size,this;r=this.__data__=new _T(a)}return r.set(e,t),this.size=r.size,this}Yd.exports=wT});var Xa=c((Uj,Zd)=>{"use strict";var ST=za(),xT=Fd(),TT=Qd(),ET=Wd(),RT=Kd(),OT=Hd();function jr(e){var t=this.__data__=new ST(e);this.size=t.size}jr.prototype.clear=xT;jr.prototype.delete=TT;jr.prototype.get=ET;jr.prototype.has=RT;jr.prototype.set=OT;Zd.exports=jr});var en=c((qj,Jd)=>{"use strict";var zd=Ti();function CT(e,t,r){t=="__proto__"&&zd?zd(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}Jd.exports=CT});var ki=c((Nj,Xd)=>{"use strict";var PT=en(),LT=Br();function UT(e,t,r){(r!==void 0&&!LT(e[t],r)||r===void 0&&!(t in e))&&PT(e,t,r)}Xd.exports=UT});var tf=c((kj,ef)=>{"use strict";function qT(e){return function(t,r,a){for(var n=-1,s=Object(t),o=a(t),i=o.length;i--;){var u=o[e?i:++n];if(r(s[u],u,s)===!1)break}return t}}ef.exports=qT});var Di=c((Dj,rf)=>{"use strict";var NT=tf(),kT=NT();rf.exports=kT});var Bi=c((tn,Qr)=>{"use strict";var DT=ge(),of=typeof tn=="object"&&tn&&!tn.nodeType&&tn,af=of&&typeof Qr=="object"&&Qr&&!Qr.nodeType&&Qr,BT=af&&af.exports===of,nf=BT?DT.Buffer:void 0,sf=nf?nf.allocUnsafe:void 0;function MT(e,t){if(t)return e.slice();var r=e.length,a=sf?sf(r):new e.constructor(r);return e.copy(a),a}Qr.exports=MT});var Mi=c((Bj,uf)=>{"use strict";var GT=ge(),FT=GT.Uint8Array;uf.exports=FT});var ts=c((Mj,pf)=>{"use strict";var cf=Mi();function jT(e){var t=new e.constructor(e.byteLength);return new cf(t).set(new cf(e)),t}pf.exports=jT});var Gi=c((Gj,lf)=>{"use strict";var QT=ts();function $T(e,t){var r=t?QT(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}lf.exports=$T});var $r=c((Fj,df)=>{"use strict";function WT(e,t){var r=-1,a=e.length;for(t||(t=Array(a));++r<a;)t[r]=e[r];return t}df.exports=WT});var rn=c((jj,mf)=>{"use strict";var VT=Me(),ff=Object.create,KT=function(){function e(){}return function(t){if(!VT(t))return{};if(ff)return ff(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();mf.exports=KT});var Fi=c((Qj,gf)=>{"use strict";function YT(e,t){return function(r){return e(t(r))}}gf.exports=YT});var rs=c(($j,hf)=>{"use strict";var HT=Fi(),ZT=HT(Object.getPrototypeOf,Object);hf.exports=ZT});var as=c((Wj,yf)=>{"use strict";var zT=Object.prototype;function JT(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||zT;return e===r}yf.exports=JT});var ji=c((Vj,bf)=>{"use strict";var XT=rn(),eE=rs(),tE=as();function rE(e){return typeof e.constructor=="function"&&!tE(e)?XT(eE(e)):{}}bf.exports=rE});var vf=c((Kj,Af)=>{"use strict";function aE(){return!1}Af.exports=aE});var nn=c((an,Wr)=>{"use strict";var nE=ge(),sE=vf(),wf=typeof an=="object"&&an&&!an.nodeType&&an,_f=wf&&typeof Wr=="object"&&Wr&&!Wr.nodeType&&Wr,iE=_f&&_f.exports===wf,If=iE?nE.Buffer:void 0,oE=If?If.isBuffer:void 0,uE=oE||sE;Wr.exports=uE});var Qi=c((Yj,xf)=>{"use strict";var cE=Ut(),pE=rs(),lE=Ee(),dE="[object Object]",fE=Function.prototype,mE=Object.prototype,Sf=fE.toString,gE=mE.hasOwnProperty,hE=Sf.call(Object);function yE(e){if(!lE(e)||cE(e)!=dE)return!1;var t=pE(e);if(t===null)return!0;var r=gE.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Sf.call(r)==hE}xf.exports=yE});var Ef=c((Hj,Tf)=>{"use strict";var bE=Ut(),AE=es(),vE=Ee(),_E="[object Arguments]",IE="[object Array]",wE="[object Boolean]",SE="[object Date]",xE="[object Error]",TE="[object Function]",EE="[object Map]",RE="[object Number]",OE="[object Object]",CE="[object RegExp]",PE="[object Set]",LE="[object String]",UE="[object WeakMap]",qE="[object ArrayBuffer]",NE="[object DataView]",kE="[object Float32Array]",DE="[object Float64Array]",BE="[object Int8Array]",ME="[object Int16Array]",GE="[object Int32Array]",FE="[object Uint8Array]",jE="[object Uint8ClampedArray]",QE="[object Uint16Array]",$E="[object Uint32Array]",W={};W[kE]=W[DE]=W[BE]=W[ME]=W[GE]=W[FE]=W[jE]=W[QE]=W[$E]=!0;W[_E]=W[IE]=W[qE]=W[wE]=W[NE]=W[SE]=W[xE]=W[TE]=W[EE]=W[RE]=W[OE]=W[CE]=W[PE]=W[LE]=W[UE]=!1;function WE(e){return vE(e)&&AE(e.length)&&!!W[bE(e)]}Tf.exports=WE});var ns=c((Zj,Rf)=>{"use strict";function VE(e){return function(t){return e(t)}}Rf.exports=VE});var ss=c((sn,Vr)=>{"use strict";var KE=_i(),Of=typeof sn=="object"&&sn&&!sn.nodeType&&sn,on=Of&&typeof Vr=="object"&&Vr&&!Vr.nodeType&&Vr,YE=on&&on.exports===Of,$i=YE&&KE.process,HE=function(){try{var e=on&&on.require&&on.require("util").types;return e||$i&&$i.binding&&$i.binding("util")}catch{}}();Vr.exports=HE});var is=c((zj,Lf)=>{"use strict";var ZE=Ef(),zE=ns(),Cf=ss(),Pf=Cf&&Cf.isTypedArray,JE=Pf?zE(Pf):ZE;Lf.exports=JE});var Wi=c((Jj,Uf)=>{"use strict";function XE(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}Uf.exports=XE});var Vi=c((Xj,qf)=>{"use strict";var eR=en(),tR=Br(),rR=Object.prototype,aR=rR.hasOwnProperty;function nR(e,t,r){var a=e[t];(!(aR.call(e,t)&&tR(a,r))||r===void 0&&!(t in e))&&eR(e,t,r)}qf.exports=nR});var Kr=c((eQ,Nf)=>{"use strict";var sR=Vi(),iR=en();function oR(e,t,r,a){var n=!r;r||(r={});for(var s=-1,o=t.length;++s<o;){var i=t[s],u=a?a(r[i],e[i],i,r,e):void 0;u===void 0&&(u=e[i]),n?iR(r,i,u):sR(r,i,u)}return r}Nf.exports=oR});var Df=c((tQ,kf)=>{"use strict";function uR(e,t){for(var r=-1,a=Array(e);++r<e;)a[r]=t(r);return a}kf.exports=uR});var un=c((rQ,Bf)=>{"use strict";var cR=9007199254740991,pR=/^(?:0|[1-9]\d*)$/;function lR(e,t){var r=typeof e;return t=t??cR,!!t&&(r=="number"||r!="symbol"&&pR.test(e))&&e>-1&&e%1==0&&e<t}Bf.exports=lR});var Ki=c((aQ,Mf)=>{"use strict";var dR=Df(),fR=Va(),mR=pe(),gR=nn(),hR=un(),yR=is(),bR=Object.prototype,AR=bR.hasOwnProperty;function vR(e,t){var r=mR(e),a=!r&&fR(e),n=!r&&!a&&gR(e),s=!r&&!a&&!n&&yR(e),o=r||a||n||s,i=o?dR(e.length,String):[],u=i.length;for(var d in e)(t||AR.call(e,d))&&!(o&&(d=="length"||n&&(d=="offset"||d=="parent")||s&&(d=="buffer"||d=="byteLength"||d=="byteOffset")||hR(d,u)))&&i.push(d);return i}Mf.exports=vR});var Ff=c((nQ,Gf)=>{"use strict";function _R(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}Gf.exports=_R});var Qf=c((sQ,jf)=>{"use strict";var IR=Me(),wR=as(),SR=Ff(),xR=Object.prototype,TR=xR.hasOwnProperty;function ER(e){if(!IR(e))return SR(e);var t=wR(e),r=[];for(var a in e)a=="constructor"&&(t||!TR.call(e,a))||r.push(a);return r}jf.exports=ER});var Yr=c((iQ,$f)=>{"use strict";var RR=Ki(),OR=Qf(),CR=Fr();function PR(e){return CR(e)?RR(e,!0):OR(e)}$f.exports=PR});var Vf=c((oQ,Wf)=>{"use strict";var LR=Kr(),UR=Yr();function qR(e){return LR(e,UR(e))}Wf.exports=qR});var Jf=c((uQ,zf)=>{"use strict";var Kf=ki(),NR=Bi(),kR=Gi(),DR=$r(),BR=ji(),Yf=Va(),Hf=pe(),MR=Ni(),GR=nn(),FR=Ya(),jR=Me(),QR=Qi(),$R=is(),Zf=Wi(),WR=Vf();function VR(e,t,r,a,n,s,o){var i=Zf(e,r),u=Zf(t,r),d=o.get(u);if(d){Kf(e,r,d);return}var f=s?s(i,u,r+"",e,t,o):void 0,g=f===void 0;if(g){var A=Hf(u),I=!A&&GR(u),U=!A&&!I&&$R(u);f=u,A||I||U?Hf(i)?f=i:MR(i)?f=DR(i):I?(g=!1,f=NR(u,!0)):U?(g=!1,f=kR(u,!0)):f=[]:QR(u)||Yf(u)?(f=i,Yf(i)?f=WR(i):(!jR(i)||FR(i))&&(f=BR(u))):g=!1}g&&(o.set(u,f),n(f,u,a,s,o),o.delete(u)),Kf(e,r,f)}zf.exports=VR});var tm=c((cQ,em)=>{"use strict";var KR=Xa(),YR=ki(),HR=Di(),ZR=Jf(),zR=Me(),JR=Yr(),XR=Wi();function Xf(e,t,r,a,n){e!==t&&HR(t,function(s,o){if(n||(n=new KR),zR(s))ZR(e,t,o,r,Xf,a,n);else{var i=a?a(XR(e,o),s,o+"",e,t,n):void 0;i===void 0&&(i=s),YR(e,o,i)}},JR)}em.exports=Xf});var am=c((pQ,rm)=>{"use strict";var eO=Br(),tO=Fr(),rO=un(),aO=Me();function nO(e,t,r){if(!aO(r))return!1;var a=typeof t;return(a=="number"?tO(r)&&rO(t,r.length):a=="string"&&t in r)?eO(r[t],e):!1}rm.exports=nO});var sm=c((lQ,nm)=>{"use strict";var sO=Ri(),iO=am();function oO(e){return sO(function(t,r){var a=-1,n=r.length,s=n>1?r[n-1]:void 0,o=n>2?r[2]:void 0;for(s=e.length>3&&typeof s=="function"?(n--,s):void 0,o&&iO(r[0],r[1],o)&&(s=n<3?void 0:s,n=1),t=Object(t);++a<n;){var i=r[a];i&&e(t,i,a,s)}return t})}nm.exports=oO});var Yi=c((dQ,im)=>{"use strict";var uO=tm(),cO=sm(),pO=cO(function(e,t,r){uO(e,t,r)});im.exports=pO});var ig=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 a in t){var n=t[a];e.call(r,n)?r[n].push(a):r[n]=[a]}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 Vo=c((qW,og)=>{"use strict";og.exports={}});var lg=c((NW,pg)=>{"use strict";var ne=ig(),KC=Vo(),ug=Array.prototype.push;function YC(e,t){return t==2?function(r,a){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}function Ko(e,t){return t==2?function(r,a){return e(r,a)}:function(r){return e(r)}}function cg(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,a=r-1,n=Array(r);r--;)n[r]=arguments[r];var s=n[t],o=n.slice(0,t);return s&&ug.apply(o,s),t!=a&&ug.apply(o,n.slice(t+1)),e.apply(this,o)}}function Yo(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 Ho(e,t,r,a){var n=typeof t=="function",s=t===Object(t);if(s&&(a=r,r=t,t=void 0),r==null)throw new TypeError;a||(a={});var o={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:KC,u="curry"in a&&a.curry,d="fixed"in a&&a.fixed,f="rearg"in a&&a.rearg,g=n?r.runInContext():void 0,A=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},I=A.ary,U=A.assign,G=A.clone,k=A.curry,q=A.forEach,V=A.isArray,Et=A.isError,Ne=A.isFunction,Rt=A.isWeakMap,Cr=A.keys,ba=A.rearg,Aa=A.toInteger,T_=A.toPath,Uc=Cr(ne.aryMethod),E_={castArray:function(x){return function(){var _=arguments[0];return V(_)?x(cg(_)):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:Ko(C,w)):C}},mixin:function(x){return function(_){var w=this;if(!Ne(w))return x(w,Object(_));var C=[];return q(Cr(_),function(D){Ne(_[D])&&C.push([D,w.prototype[D]])}),x(w,Object(_)),q(C,function(D){var de=D[1];Ne(de)?w.prototype[D[0]]=de:delete w.prototype[D[0]]}),w}},nthArg:function(x){return function(_){var w=_<0?1:Aa(_)+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 Ho(e,x(_),a)}}};function R_(x,_){if(o.cap){var w=ne.iterateeRearg[x];if(w)return U_(_,w);var C=!n&&ne.iterateeAry[x];if(C)return L_(_,C)}return _}function O_(x,_,w){return u||o.curry&&w>1?k(_,w):_}function qc(x,_,w){if(o.fixed&&(d||!ne.skipFixed[x])){var C=ne.methodSpread[x],D=C&&C.start;return D===void 0?I(_,w):ZC(_,D)}return _}function Nc(x,_,w){return o.rearg&&w>1&&(f||!ne.skipRearg[x])?ba(_,ne.methodRearg[x]||ne.aryRearg[w]):_}function C_(x,_){_=T_(_);for(var w=-1,C=_.length,D=C-1,de=G(Object(x)),tt=de;tt!=null&&++w<C;){var ke=_[w],rt=tt[ke];rt!=null&&!(Ne(rt)||Et(rt)||Rt(rt))&&(tt[ke]=G(w==D?rt:Object(rt))),tt=tt[ke]}return de}function P_(x){return xe.runInContext.convert(x)(void 0)}function kc(x,_){var w=ne.aliasToReal[x]||x,C=ne.remap[w]||w,D=a;return function(de){var tt=n?g:A,ke=n?g[C]:_,rt=U(U({},D),de);return Ho(tt,w,ke,rt)}}function L_(x,_){return Dc(x,function(w){return typeof w=="function"?Ko(w,_):w})}function U_(x,_){return Dc(x,function(w){var C=_.length;return YC(ba(Ko(w,C),_),C)})}function Dc(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 Bc(x,_,w){var C,D=ne.aliasToReal[x]||x,de=_,tt=E_[D];return tt?de=tt(_):o.immutable&&(ne.mutate.array[D]?de=Yo(_,cg):ne.mutate.object[D]?de=Yo(_,HC(_)):ne.mutate.set[D]&&(de=Yo(_,C_))),q(Uc,function(ke){return q(ne.aryMethod[ke],function(rt){if(D==rt){var Mc=ne.methodSpread[D],q_=Mc&&Mc.afterRearg;return C=q_?qc(D,Nc(D,de,ke),ke):Nc(D,qc(D,de,ke),ke),C=R_(D,C),C=O_(D,C,ke),!1}}),!C}),C||(C=de),C==_&&(C=u?k(C,1):function(){return _.apply(this,arguments)}),C.convert=kc(D,_),C.placeholder=_.placeholder=w,C}if(!s)return Bc(t,r,i);var xe=r,va=[];return q(Uc,function(x){q(ne.aryMethod[x],function(_){var w=xe[ne.remap[_]||_];w&&va.push([_,Bc(_,w,xe)])})}),q(Cr(xe),function(x){var _=xe[x];if(typeof _=="function"){for(var w=va.length;w--;)if(va[w][0]==x)return;_.convert=kc(x,_),va.push([x,_])}}),q(va,function(x){xe[x[0]]=x[1]}),xe.convert=P_,xe.placeholder=xe,q(Cr(xe),function(x){q(ne.realToAlias[x]||[],function(_){xe[_]=xe[x]})}),xe}pg.exports=Ho});var Zo=c((kW,dg)=>{"use strict";var zC=qt(),JC=ge(),XC=zC(JC,"WeakMap");dg.exports=XC});var zo=c((DW,mg)=>{"use strict";var fg=Zo(),eP=fg&&new fg;mg.exports=eP});var Jo=c((BW,hg)=>{"use strict";var tP=Ka(),gg=zo(),rP=gg?function(e,t){return gg.set(e,t),e}:tP;hg.exports=rP});var An=c((MW,yg)=>{"use strict";var aP=rn(),nP=Me();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=aP(e.prototype),a=e.apply(r,t);return nP(a)?a:r}}yg.exports=sP});var Ag=c((GW,bg)=>{"use strict";var iP=An(),oP=ge(),uP=1;function cP(e,t,r){var a=t&uP,n=iP(e);function s(){var o=this&&this!==oP&&this instanceof s?n:e;return o.apply(a?r:this,arguments)}return s}bg.exports=cP});var Xo=c((FW,vg)=>{"use strict";var pP=Math.max;function lP(e,t,r,a){for(var n=-1,s=e.length,o=r.length,i=-1,u=t.length,d=pP(s-o,0),f=Array(u+d),g=!a;++i<u;)f[i]=t[i];for(;++n<o;)(g||n<s)&&(f[r[n]]=e[n]);for(;d--;)f[i++]=e[n++];return f}vg.exports=lP});var eu=c((jW,_g)=>{"use strict";var dP=Math.max;function fP(e,t,r,a){for(var n=-1,s=e.length,o=-1,i=r.length,u=-1,d=t.length,f=dP(s-i,0),g=Array(f+d),A=!a;++n<f;)g[n]=e[n];for(var I=n;++u<d;)g[I+u]=t[u];for(;++o<i;)(A||n<s)&&(g[I+r[o]]=e[n++]);return g}_g.exports=fP});var wg=c((QW,Ig)=>{"use strict";function mP(e,t){for(var r=e.length,a=0;r--;)e[r]===t&&++a;return a}Ig.exports=mP});var Is=c(($W,Sg)=>{"use strict";function gP(){}Sg.exports=gP});var Ss=c((WW,xg)=>{"use strict";var hP=rn(),yP=Is(),bP=4294967295;function ws(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=bP,this.__views__=[]}ws.prototype=hP(yP.prototype);ws.prototype.constructor=ws;xg.exports=ws});var tu=c((VW,Eg)=>{"use strict";var Tg=zo(),AP=Ui(),vP=Tg?function(e){return Tg.get(e)}:AP;Eg.exports=vP});var Og=c((KW,Rg)=>{"use strict";var _P={};Rg.exports=_P});var Lg=c((YW,Pg)=>{"use strict";var Cg=Og(),IP=Object.prototype,wP=IP.hasOwnProperty;function SP(e){for(var t=e.name+"",r=Cg[t],a=wP.call(Cg,t)?r.length:0;a--;){var n=r[a],s=n.func;if(s==null||s==e)return n.name}return t}Pg.exports=SP});var ru=c((HW,Ug)=>{"use strict";var xP=rn(),TP=Is();function xs(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}xs.prototype=xP(TP.prototype);xs.prototype.constructor=xs;Ug.exports=xs});var Ng=c((ZW,qg)=>{"use strict";var EP=Ss(),RP=ru(),OP=$r();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 Bg=c((zW,Dg)=>{"use strict";var PP=Ss(),kg=ru(),LP=Is(),UP=pe(),qP=Ee(),NP=Ng(),kP=Object.prototype,DP=kP.hasOwnProperty;function Ts(e){if(qP(e)&&!UP(e)&&!(e instanceof PP)){if(e instanceof kg)return e;if(DP.call(e,"__wrapped__"))return NP(e)}return new kg(e)}Ts.prototype=LP.prototype;Ts.prototype.constructor=Ts;Dg.exports=Ts});var Gg=c((JW,Mg)=>{"use strict";var BP=Ss(),MP=tu(),GP=Lg(),FP=Bg();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 a=MP(r);return!!a&&e===a[0]}Mg.exports=jP});var au=c((XW,Fg)=>{"use strict";var QP=Jo(),$P=Ei(),WP=$P(QP);Fg.exports=WP});var Qg=c((eV,jg)=>{"use strict";var VP=/\{\n\/\* \[wrapped with (.+)\] \*/,KP=/,? & /;function YP(e){var t=e.match(VP);return t?t[1].split(KP):[]}jg.exports=YP});var Wg=c((tV,$g)=>{"use strict";var HP=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function ZP(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(HP,`{
|
|
2
2
|
/* [wrapped with `+t+`] */
|
|
3
|
-
`)}lg.exports=lC});var Sa=u((dj,fg)=>{"use strict";function dC(e,t){for(var r=-1,n=e==null?0:e.length;++r<n&&t(e[r],r,e)!==!1;);return e}fg.exports=dC});var mg=u((fj,gg)=>{"use strict";var fC=Sa(),gC=Ao(),mC=1,yC=2,AC=8,hC=16,bC=32,IC=64,SC=128,wC=256,vC=512,EC=[["ary",SC],["bind",mC],["bindKey",yC],["curry",AC],["curryRight",hC],["flip",vC],["partial",bC],["partialRight",IC],["rearg",wC]];function RC(e,t){return fC(EC,function(r){var n="_."+r[0];t&r[1]&&!gC(e,n)&&e.push(n)}),e.sort()}gg.exports=RC});var $s=u((gj,yg)=>{"use strict";var _C=cg(),xC=dg(),TC=jn(),PC=mg();function CC(e,t,r){var n=t+"";return TC(e,xC(n,PC(_C(n),r)))}yg.exports=CC});var Vs=u((mj,bg)=>{"use strict";var OC=ig(),LC=Ws(),qC=$s(),UC=1,DC=2,BC=4,NC=8,Ag=32,hg=64;function MC(e,t,r,n,a,o,i,s,c,f){var m=t&NC,g=m?i:void 0,y=m?void 0:i,h=m?o:void 0,v=m?void 0:o;t|=m?Ag:hg,t&=~(m?hg:Ag),t&BC||(t&=~(UC|DC));var P=[e,t,a,h,g,v,y,s,c,f],_=r.apply(void 0,P);return OC(e)&&LC(_,P),_.placeholder=n,qC(_,e,t)}bg.exports=MC});var Ks=u((yj,Ig)=>{"use strict";function GC(e){var t=e;return t.placeholder}Ig.exports=GC});var wg=u((Aj,Sg)=>{"use strict";var kC=Xt(),FC=sn(),QC=Math.min;function jC(e,t){for(var r=e.length,n=QC(t.length,r),a=kC(e);n--;){var o=t[n];e[n]=FC(o,r)?a[o]:void 0}return e}Sg.exports=jC});var wa=u((hj,Eg)=>{"use strict";var vg="__lodash_placeholder__";function WC(e,t){for(var r=-1,n=e.length,a=0,o=[];++r<n;){var i=e[r];(i===t||i===vg)&&(e[r]=vg,o[a++]=r)}return o}Eg.exports=WC});var Hs=u((bj,xg)=>{"use strict";var $C=Gs(),VC=ks(),KC=Wf(),Rg=hn(),HC=Vs(),YC=Ks(),JC=wg(),zC=wa(),XC=te(),ZC=1,eO=2,tO=8,rO=16,nO=128,aO=512;function _g(e,t,r,n,a,o,i,s,c,f){var m=t&nO,g=t&ZC,y=t&eO,h=t&(tO|rO),v=t&aO,P=y?void 0:Rg(e);function _(){for(var E=arguments.length,U=Array(E),et=E;et--;)U[et]=arguments[et];if(h)var Ae=YC(_),tt=KC(U,Ae);if(n&&(U=$C(U,n,a,h)),o&&(U=VC(U,o,i,h)),E-=tt,h&&E<f){var Mt=zC(U,Ae);return HC(e,t,_g,_.placeholder,r,U,Mt,s,c,f-E)}var Ar=g?r:this,hr=y?Ar[e]:e;return E=U.length,s?U=JC(U,s):v&&E>1&&U.reverse(),m&&c<E&&(U.length=c),this&&this!==XC&&this instanceof _&&(hr=P||Rg(hr)),hr.apply(Ar,U)}return _}xg.exports=_g});var Pg=u((Ij,Tg)=>{"use strict";var oO=Qn(),sO=hn(),iO=Hs(),uO=Vs(),pO=Ks(),cO=wa(),lO=te();function dO(e,t,r){var n=sO(e);function a(){for(var o=arguments.length,i=Array(o),s=o,c=pO(a);s--;)i[s]=arguments[s];var f=o<3&&i[0]!==c&&i[o-1]!==c?[]:cO(i,c);if(o-=f.length,o<r)return uO(e,t,iO,a.placeholder,void 0,i,f,void 0,void 0,r-o);var m=this&&this!==lO&&this instanceof a?n:e;return oO(m,this,i)}return a}Tg.exports=dO});var Og=u((Sj,Cg)=>{"use strict";var fO=Qn(),gO=hn(),mO=te(),yO=1;function AO(e,t,r,n){var a=t&yO,o=gO(e);function i(){for(var s=-1,c=arguments.length,f=-1,m=n.length,g=Array(m+c),y=this&&this!==mO&&this instanceof i?o:e;++f<m;)g[f]=n[f];for(;c--;)g[f++]=arguments[++s];return fO(y,a?r:this,g)}return i}Cg.exports=AO});var Ng=u((wj,Bg)=>{"use strict";var hO=Gs(),bO=ks(),Lg=wa(),qg="__lodash_placeholder__",Ys=1,IO=2,SO=4,Ug=8,bn=128,Dg=256,wO=Math.min;function vO(e,t){var r=e[1],n=t[1],a=r|n,o=a<(Ys|IO|bn),i=n==bn&&r==Ug||n==bn&&r==Dg&&e[7].length<=t[8]||n==(bn|Dg)&&t[7].length<=t[8]&&r==Ug;if(!(o||i))return e;n&Ys&&(e[2]=t[2],a|=r&Ys?0:SO);var s=t[3];if(s){var c=e[3];e[3]=c?hO(c,s,t[4]):s,e[4]=c?Lg(e[3],qg):t[4]}return s=t[5],s&&(c=e[5],e[5]=c?bO(c,s,t[6]):s,e[6]=c?Lg(e[5],qg):t[6]),s=t[7],s&&(e[7]=s),n&bn&&(e[8]=e[8]==null?t[8]:wO(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=a,e}Bg.exports=vO});var Gg=u((vj,Mg)=>{"use strict";var EO=/\s/;function RO(e){for(var t=e.length;t--&&EO.test(e.charAt(t)););return t}Mg.exports=RO});var Fg=u((Ej,kg)=>{"use strict";var _O=Gg(),xO=/^\s+/;function TO(e){return e&&e.slice(0,_O(e)+1).replace(xO,"")}kg.exports=TO});var cr=u((Rj,Qg)=>{"use strict";var PO=st(),CO=ce(),OO="[object Symbol]";function LO(e){return typeof e=="symbol"||CO(e)&&PO(e)==OO}Qg.exports=LO});var Vg=u((_j,$g)=>{"use strict";var qO=Fg(),jg=Se(),UO=cr(),Wg=0/0,DO=/^[-+]0x[0-9a-f]+$/i,BO=/^0b[01]+$/i,NO=/^0o[0-7]+$/i,MO=parseInt;function GO(e){if(typeof e=="number")return e;if(UO(e))return Wg;if(jg(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=jg(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=qO(e);var r=BO.test(e);return r||NO.test(e)?MO(e.slice(2),r?2:8):DO.test(e)?Wg:+e}$g.exports=GO});var Yg=u((xj,Hg)=>{"use strict";var kO=Vg(),Kg=1/0,FO=17976931348623157e292;function QO(e){if(!e)return e===0?e:0;if(e=kO(e),e===Kg||e===-Kg){var t=e<0?-1:1;return t*FO}return e===e?e:0}Hg.exports=QO});var Js=u((Tj,Jg)=>{"use strict";var jO=Yg();function WO(e){var t=jO(e),r=t%1;return t===t?r?t-r:t:0}Jg.exports=WO});var va=u((Pj,tm)=>{"use strict";var $O=Ms(),VO=kf(),KO=Pg(),HO=Hs(),YO=Og(),JO=Fs(),zO=Ng(),XO=Ws(),ZO=$s(),zg=Js(),eL="Expected a function",Xg=1,tL=2,zs=8,Xs=16,Zs=32,Zg=64,em=Math.max;function rL(e,t,r,n,a,o,i,s){var c=t&tL;if(!c&&typeof e!="function")throw new TypeError(eL);var f=n?n.length:0;if(f||(t&=~(Zs|Zg),n=a=void 0),i=i===void 0?i:em(zg(i),0),s=s===void 0?s:zg(s),f-=a?a.length:0,t&Zg){var m=n,g=a;n=a=void 0}var y=c?void 0:JO(e),h=[e,t,r,n,a,m,g,o,i,s];if(y&&zO(h,y),e=h[0],t=h[1],r=h[2],n=h[3],a=h[4],s=h[9]=h[9]===void 0?c?0:e.length:em(h[9]-f,0),!s&&t&(zs|Xs)&&(t&=~(zs|Xs)),!t||t==Xg)var v=VO(e,t,r);else t==zs||t==Xs?v=KO(e,t,s):(t==Zs||t==(Xg|Zs))&&!a.length?v=YO(e,t,r,n):v=HO.apply(void 0,h);var P=y?$O:XO;return ZO(P(v,h),e,t)}tm.exports=rL});var nm=u((Cj,rm)=>{"use strict";var nL=va(),aL=128;function oL(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,nL(e,aL,void 0,void 0,void 0,void 0,t)}rm.exports=oL});var om=u((Oj,am)=>{"use strict";var sL=To(),iL=sL(Object.keys,Object);am.exports=iL});var ei=u((Lj,sm)=>{"use strict";var uL=zn(),pL=om(),cL=Object.prototype,lL=cL.hasOwnProperty;function dL(e){if(!uL(e))return pL(e);var t=[];for(var r in Object(e))lL.call(e,r)&&r!="constructor"&&t.push(r);return t}sm.exports=dL});var lr=u((qj,im)=>{"use strict";var fL=Uo(),gL=ei(),mL=Yt();function yL(e){return mL(e)?fL(e):gL(e)}im.exports=yL});var ti=u((Uj,um)=>{"use strict";var AL=tr(),hL=lr();function bL(e,t){return e&&AL(t,hL(t),e)}um.exports=bL});var cm=u((Dj,pm)=>{"use strict";var IL=tr(),SL=rr();function wL(e,t){return e&&IL(t,SL(t),e)}pm.exports=wL});var dm=u((Bj,lm)=>{"use strict";function vL(e,t){for(var r=-1,n=e==null?0:e.length,a=0,o=[];++r<n;){var i=e[r];t(i,r,e)&&(o[a++]=i)}return o}lm.exports=vL});var ri=u((Nj,fm)=>{"use strict";function EL(){return[]}fm.exports=EL});var Ea=u((Mj,mm)=>{"use strict";var RL=dm(),_L=ri(),xL=Object.prototype,TL=xL.propertyIsEnumerable,gm=Object.getOwnPropertySymbols,PL=gm?function(e){return e==null?[]:(e=Object(e),RL(gm(e),function(t){return TL.call(e,t)}))}:_L;mm.exports=PL});var Am=u((Gj,ym)=>{"use strict";var CL=tr(),OL=Ea();function LL(e,t){return CL(e,OL(e),t)}ym.exports=LL});var ni=u((kj,hm)=>{"use strict";var qL=Fn(),UL=Jn(),DL=Ea(),BL=ri(),NL=Object.getOwnPropertySymbols,ML=NL?function(e){for(var t=[];e;)qL(t,DL(e)),e=UL(e);return t}:BL;hm.exports=ML});var Im=u((Fj,bm)=>{"use strict";var GL=tr(),kL=ni();function FL(e,t){return GL(e,kL(e),t)}bm.exports=FL});var ai=u((Qj,Sm)=>{"use strict";var QL=Fn(),jL=z();function WL(e,t,r){var n=t(e);return jL(e)?n:QL(n,r(e))}Sm.exports=WL});var oi=u((jj,wm)=>{"use strict";var $L=ai(),VL=Ea(),KL=lr();function HL(e){return $L(e,KL,VL)}wm.exports=HL});var Em=u((Wj,vm)=>{"use strict";var YL=ai(),JL=ni(),zL=rr();function XL(e){return YL(e,zL,JL)}vm.exports=XL});var _m=u(($j,Rm)=>{"use strict";var ZL=it(),eq=te(),tq=ZL(eq,"DataView");Rm.exports=tq});var Tm=u((Vj,xm)=>{"use strict";var rq=it(),nq=te(),aq=rq(nq,"Promise");xm.exports=aq});var fr=u((Kj,Dm)=>{"use strict";var si=_m(),ii=Wn(),ui=Tm(),pi=bo(),ci=Bs(),Um=st(),dr=lo(),Pm="[object Map]",oq="[object Object]",Cm="[object Promise]",Om="[object Set]",Lm="[object WeakMap]",qm="[object DataView]",sq=dr(si),iq=dr(ii),uq=dr(ui),pq=dr(pi),cq=dr(ci),Ot=Um;(si&&Ot(new si(new ArrayBuffer(1)))!=qm||ii&&Ot(new ii)!=Pm||ui&&Ot(ui.resolve())!=Cm||pi&&Ot(new pi)!=Om||ci&&Ot(new ci)!=Lm)&&(Ot=function(e){var t=Um(e),r=t==oq?e.constructor:void 0,n=r?dr(r):"";if(n)switch(n){case sq:return qm;case iq:return Pm;case uq:return Cm;case pq:return Om;case cq:return Lm}return t});Dm.exports=Ot});var Nm=u((Hj,Bm)=>{"use strict";var lq=Object.prototype,dq=lq.hasOwnProperty;function fq(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&dq.call(e,"index")&&(r.index=e.index,r.input=e.input),r}Bm.exports=fq});var Gm=u((Yj,Mm)=>{"use strict";var gq=Yn();function mq(e,t){var r=t?gq(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}Mm.exports=mq});var Fm=u((Jj,km)=>{"use strict";var yq=/\w*$/;function Aq(e){var t=new e.constructor(e.source,yq.exec(e));return t.lastIndex=e.lastIndex,t}km.exports=Aq});var Vm=u((zj,$m)=>{"use strict";var Qm=St(),jm=Qm?Qm.prototype:void 0,Wm=jm?jm.valueOf:void 0;function hq(e){return Wm?Object(Wm.call(e)):{}}$m.exports=hq});var Hm=u((Xj,Km)=>{"use strict";var bq=Yn(),Iq=Gm(),Sq=Fm(),wq=Vm(),vq=xo(),Eq="[object Boolean]",Rq="[object Date]",_q="[object Map]",xq="[object Number]",Tq="[object RegExp]",Pq="[object Set]",Cq="[object String]",Oq="[object Symbol]",Lq="[object ArrayBuffer]",qq="[object DataView]",Uq="[object Float32Array]",Dq="[object Float64Array]",Bq="[object Int8Array]",Nq="[object Int16Array]",Mq="[object Int32Array]",Gq="[object Uint8Array]",kq="[object Uint8ClampedArray]",Fq="[object Uint16Array]",Qq="[object Uint32Array]";function jq(e,t,r){var n=e.constructor;switch(t){case Lq:return bq(e);case Eq:case Rq:return new n(+e);case qq:return Iq(e,r);case Uq:case Dq:case Bq:case Nq:case Mq:case Gq:case kq:case Fq:case Qq:return vq(e,r);case _q:return new n;case xq:case Cq:return new n(e);case Tq:return Sq(e);case Pq:return new n;case Oq:return wq(e)}}Km.exports=jq});var Jm=u((Zj,Ym)=>{"use strict";var Wq=fr(),$q=ce(),Vq="[object Map]";function Kq(e){return $q(e)&&Wq(e)==Vq}Ym.exports=Kq});var ey=u((eW,Zm)=>{"use strict";var Hq=Jm(),Yq=Xn(),zm=Zn(),Xm=zm&&zm.isMap,Jq=Xm?Yq(Xm):Hq;Zm.exports=Jq});var ry=u((tW,ty)=>{"use strict";var zq=fr(),Xq=ce(),Zq="[object Set]";function eU(e){return Xq(e)&&zq(e)==Zq}ty.exports=eU});var sy=u((rW,oy)=>{"use strict";var tU=ry(),rU=Xn(),ny=Zn(),ay=ny&&ny.isSet,nU=ay?rU(ay):tU;oy.exports=nU});var li=u((nW,cy)=>{"use strict";var aU=Xr(),oU=Sa(),sU=qo(),iU=ti(),uU=cm(),pU=Ro(),cU=Xt(),lU=Am(),dU=Im(),fU=oi(),gU=Em(),mU=fr(),yU=Nm(),AU=Hm(),hU=Po(),bU=z(),IU=nn(),SU=ey(),wU=Se(),vU=sy(),EU=lr(),RU=rr(),_U=1,xU=2,TU=4,iy="[object Arguments]",PU="[object Array]",CU="[object Boolean]",OU="[object Date]",LU="[object Error]",uy="[object Function]",qU="[object GeneratorFunction]",UU="[object Map]",DU="[object Number]",py="[object Object]",BU="[object RegExp]",NU="[object Set]",MU="[object String]",GU="[object Symbol]",kU="[object WeakMap]",FU="[object ArrayBuffer]",QU="[object DataView]",jU="[object Float32Array]",WU="[object Float64Array]",$U="[object Int8Array]",VU="[object Int16Array]",KU="[object Int32Array]",HU="[object Uint8Array]",YU="[object Uint8ClampedArray]",JU="[object Uint16Array]",zU="[object Uint32Array]",O={};O[iy]=O[PU]=O[FU]=O[QU]=O[CU]=O[OU]=O[jU]=O[WU]=O[$U]=O[VU]=O[KU]=O[UU]=O[DU]=O[py]=O[BU]=O[NU]=O[MU]=O[GU]=O[HU]=O[YU]=O[JU]=O[zU]=!0;O[LU]=O[uy]=O[kU]=!1;function Ra(e,t,r,n,a,o){var i,s=t&_U,c=t&xU,f=t&TU;if(r&&(i=a?r(e,n,a,o):r(e)),i!==void 0)return i;if(!wU(e))return e;var m=bU(e);if(m){if(i=yU(e),!s)return cU(e,i)}else{var g=mU(e),y=g==uy||g==qU;if(IU(e))return pU(e,s);if(g==py||g==iy||y&&!a){if(i=c||y?{}:hU(e),!s)return c?dU(e,uU(i,e)):lU(e,iU(i,e))}else{if(!O[g])return a?e:{};i=AU(e,g,s)}}o||(o=new aU);var h=o.get(e);if(h)return h;o.set(e,i),vU(e)?e.forEach(function(_){i.add(Ra(_,t,r,_,e,o))}):SU(e)&&e.forEach(function(_,E){i.set(E,Ra(_,t,r,E,e,o))});var v=f?c?gU:fU:c?RU:EU,P=m?void 0:v(e);return oU(P||e,function(_,E){P&&(E=_,_=e[E]),sU(i,E,Ra(_,t,r,E,e,o))}),i}cy.exports=Ra});var dy=u((aW,ly)=>{"use strict";var XU=li(),ZU=4;function eD(e){return XU(e,ZU)}ly.exports=eD});var gy=u((oW,fy)=>{"use strict";var tD=va(),rD=8;function di(e,t,r){t=r?void 0:t;var n=tD(e,rD,void 0,void 0,void 0,void 0,void 0,t);return n.placeholder=di.placeholder,n}di.placeholder={};fy.exports=di});var yy=u((sW,my)=>{"use strict";var nD=st(),aD=ce(),oD=Co(),sD="[object DOMException]",iD="[object Error]";function uD(e){if(!aD(e))return!1;var t=nD(e);return t==iD||t==sD||typeof e.message=="string"&&typeof e.name=="string"&&!oD(e)}my.exports=uD});var hy=u((iW,Ay)=>{"use strict";var pD=fr(),cD=ce(),lD="[object WeakMap]";function dD(e){return cD(e)&&pD(e)==lD}Ay.exports=dD});var Iy=u((uW,by)=>{"use strict";function fD(e,t){for(var r=-1,n=e==null?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}by.exports=fD});var fi=u((pW,Sy)=>{"use strict";var gD=yo(),mD=Iy(),yD=ho(),AD=1,hD=2;function bD(e,t,r,n,a,o){var i=r&AD,s=e.length,c=t.length;if(s!=c&&!(i&&c>s))return!1;var f=o.get(e),m=o.get(t);if(f&&m)return f==t&&m==e;var g=-1,y=!0,h=r&hD?new gD:void 0;for(o.set(e,t),o.set(t,e);++g<s;){var v=e[g],P=t[g];if(n)var _=i?n(P,v,g,t,e,o):n(v,P,g,e,t,o);if(_!==void 0){if(_)continue;y=!1;break}if(h){if(!mD(t,function(E,U){if(!yD(h,U)&&(v===E||a(v,E,r,n,o)))return h.push(U)})){y=!1;break}}else if(!(v===P||a(v,P,r,n,o))){y=!1;break}}return o.delete(e),o.delete(t),y}Sy.exports=bD});var vy=u((cW,wy)=>{"use strict";function ID(e){var t=-1,r=Array(e.size);return e.forEach(function(n,a){r[++t]=[a,n]}),r}wy.exports=ID});var Ty=u((lW,xy)=>{"use strict";var Ey=St(),Ry=_o(),SD=Vt(),wD=fi(),vD=vy(),ED=Kn(),RD=1,_D=2,xD="[object Boolean]",TD="[object Date]",PD="[object Error]",CD="[object Map]",OD="[object Number]",LD="[object RegExp]",qD="[object Set]",UD="[object String]",DD="[object Symbol]",BD="[object ArrayBuffer]",ND="[object DataView]",_y=Ey?Ey.prototype:void 0,gi=_y?_y.valueOf:void 0;function MD(e,t,r,n,a,o,i){switch(r){case ND:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case BD:return!(e.byteLength!=t.byteLength||!o(new Ry(e),new Ry(t)));case xD:case TD:case OD:return SD(+e,+t);case PD:return e.name==t.name&&e.message==t.message;case LD:case UD:return e==t+"";case CD:var s=vD;case qD:var c=n&RD;if(s||(s=ED),e.size!=t.size&&!c)return!1;var f=i.get(e);if(f)return f==t;n|=_D,i.set(e,t);var m=wD(s(e),s(t),n,a,o,i);return i.delete(e),m;case DD:if(gi)return gi.call(e)==gi.call(t)}return!1}xy.exports=MD});var Oy=u((dW,Cy)=>{"use strict";var Py=oi(),GD=1,kD=Object.prototype,FD=kD.hasOwnProperty;function QD(e,t,r,n,a,o){var i=r&GD,s=Py(e),c=s.length,f=Py(t),m=f.length;if(c!=m&&!i)return!1;for(var g=c;g--;){var y=s[g];if(!(i?y in t:FD.call(t,y)))return!1}var h=o.get(e),v=o.get(t);if(h&&v)return h==t&&v==e;var P=!0;o.set(e,t),o.set(t,e);for(var _=i;++g<c;){y=s[g];var E=e[y],U=t[y];if(n)var et=i?n(U,E,y,t,e,o):n(E,U,y,e,t,o);if(!(et===void 0?E===U||a(E,U,r,n,o):et)){P=!1;break}_||(_=y=="constructor")}if(P&&!_){var Ae=e.constructor,tt=t.constructor;Ae!=tt&&"constructor"in e&&"constructor"in t&&!(typeof Ae=="function"&&Ae instanceof Ae&&typeof tt=="function"&&tt instanceof tt)&&(P=!1)}return o.delete(e),o.delete(t),P}Cy.exports=QD});var Gy=u((fW,My)=>{"use strict";var mi=Xr(),jD=fi(),WD=Ty(),$D=Oy(),Ly=fr(),qy=z(),Uy=nn(),VD=ea(),KD=1,Dy="[object Arguments]",By="[object Array]",_a="[object Object]",HD=Object.prototype,Ny=HD.hasOwnProperty;function YD(e,t,r,n,a,o){var i=qy(e),s=qy(t),c=i?By:Ly(e),f=s?By:Ly(t);c=c==Dy?_a:c,f=f==Dy?_a:f;var m=c==_a,g=f==_a,y=c==f;if(y&&Uy(e)){if(!Uy(t))return!1;i=!0,m=!1}if(y&&!m)return o||(o=new mi),i||VD(e)?jD(e,t,r,n,a,o):WD(e,t,c,r,n,a,o);if(!(r&KD)){var h=m&&Ny.call(e,"__wrapped__"),v=g&&Ny.call(t,"__wrapped__");if(h||v){var P=h?e.value():e,_=v?t.value():t;return o||(o=new mi),a(P,_,r,n,o)}}return y?(o||(o=new mi),$D(e,t,r,n,a,o)):!1}My.exports=YD});var yi=u((gW,Qy)=>{"use strict";var JD=Gy(),ky=ce();function Fy(e,t,r,n,a){return e===t?!0:e==null||t==null||!ky(e)&&!ky(t)?e!==e&&t!==t:JD(e,t,r,n,Fy,a)}Qy.exports=Fy});var Wy=u((mW,jy)=>{"use strict";var zD=Xr(),XD=yi(),ZD=1,eB=2;function tB(e,t,r,n){var a=r.length,o=a,i=!n;if(e==null)return!o;for(e=Object(e);a--;){var s=r[a];if(i&&s[2]?s[1]!==e[s[0]]:!(s[0]in e))return!1}for(;++a<o;){s=r[a];var c=s[0],f=e[c],m=s[1];if(i&&s[2]){if(f===void 0&&!(c in e))return!1}else{var g=new zD;if(n)var y=n(f,m,c,e,t,g);if(!(y===void 0?XD(m,f,ZD|eB,n,g):y))return!1}}return!0}jy.exports=tB});var Ai=u((yW,$y)=>{"use strict";var rB=Se();function nB(e){return e===e&&!rB(e)}$y.exports=nB});var Ky=u((AW,Vy)=>{"use strict";var aB=Ai(),oB=lr();function sB(e){for(var t=oB(e),r=t.length;r--;){var n=t[r],a=e[n];t[r]=[n,a,aB(a)]}return t}Vy.exports=sB});var hi=u((hW,Hy)=>{"use strict";function iB(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}Hy.exports=iB});var Jy=u((bW,Yy)=>{"use strict";var uB=Wy(),pB=Ky(),cB=hi();function lB(e){var t=pB(e);return t.length==1&&t[0][2]?cB(t[0][0],t[0][1]):function(r){return r===e||uB(r,e,t)}}Yy.exports=lB});var xa=u((IW,zy)=>{"use strict";var dB=z(),fB=cr(),gB=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,mB=/^\w*$/;function yB(e,t){if(dB(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||fB(e)?!0:mB.test(e)||!gB.test(e)||t!=null&&e in Object(t)}zy.exports=yB});var eA=u((SW,Zy)=>{"use strict";var Xy=$n(),AB="Expected a function";function bi(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(AB);var r=function(){var n=arguments,a=t?t.apply(this,n):n[0],o=r.cache;if(o.has(a))return o.get(a);var i=e.apply(this,n);return r.cache=o.set(a,i)||o,i};return r.cache=new(bi.Cache||Xy),r}bi.Cache=Xy;Zy.exports=bi});var rA=u((wW,tA)=>{"use strict";var hB=eA(),bB=500;function IB(e){var t=hB(e,function(n){return r.size===bB&&r.clear(),n}),r=t.cache;return t}tA.exports=IB});var Ii=u((vW,nA)=>{"use strict";var SB=rA(),wB=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,vB=/\\(\\)?/g,EB=SB(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(wB,function(r,n,a,o){t.push(a?o.replace(vB,"$1"):n||r)}),t});nA.exports=EB});var Si=u((EW,aA)=>{"use strict";function RB(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}aA.exports=RB});var cA=u((RW,pA)=>{"use strict";var oA=St(),_B=Si(),xB=z(),TB=cr(),PB=1/0,sA=oA?oA.prototype:void 0,iA=sA?sA.toString:void 0;function uA(e){if(typeof e=="string")return e;if(xB(e))return _B(e,uA)+"";if(TB(e))return iA?iA.call(e):"";var t=e+"";return t=="0"&&1/e==-PB?"-0":t}pA.exports=uA});var wi=u((_W,lA)=>{"use strict";var CB=cA();function OB(e){return e==null?"":CB(e)}lA.exports=OB});var vi=u((xW,dA)=>{"use strict";var LB=z(),qB=xa(),UB=Ii(),DB=wi();function BB(e,t){return LB(e)?e:qB(e,t)?[e]:UB(DB(e))}dA.exports=BB});var gr=u((TW,fA)=>{"use strict";var NB=cr(),MB=1/0;function GB(e){if(typeof e=="string"||NB(e))return e;var t=e+"";return t=="0"&&1/e==-MB?"-0":t}fA.exports=GB});var Ei=u((PW,gA)=>{"use strict";var kB=vi(),FB=gr();function QB(e,t){t=kB(t,e);for(var r=0,n=t.length;e!=null&&r<n;)e=e[FB(t[r++])];return r&&r==n?e:void 0}gA.exports=QB});var yA=u((CW,mA)=>{"use strict";var jB=Ei();function WB(e,t,r){var n=e==null?void 0:jB(e,t);return n===void 0?r:n}mA.exports=WB});var hA=u((OW,AA)=>{"use strict";function $B(e,t){return e!=null&&t in Object(e)}AA.exports=$B});var IA=u((LW,bA)=>{"use strict";var VB=vi(),KB=$r(),HB=z(),YB=sn(),JB=Hn(),zB=gr();function XB(e,t,r){t=VB(t,e);for(var n=-1,a=t.length,o=!1;++n<a;){var i=zB(t[n]);if(!(o=e!=null&&r(e,i)))break;e=e[i]}return o||++n!=a?o:(a=e==null?0:e.length,!!a&&JB(a)&&YB(i,a)&&(HB(e)||KB(e)))}bA.exports=XB});var wA=u((qW,SA)=>{"use strict";var ZB=hA(),eN=IA();function tN(e,t){return e!=null&&eN(e,t,ZB)}SA.exports=tN});var EA=u((UW,vA)=>{"use strict";var rN=yi(),nN=yA(),aN=wA(),oN=xa(),sN=Ai(),iN=hi(),uN=gr(),pN=1,cN=2;function lN(e,t){return oN(e)&&sN(t)?iN(uN(e),t):function(r){var n=nN(r,e);return n===void 0&&n===t?aN(r,e):rN(t,n,pN|cN)}}vA.exports=lN});var _A=u((DW,RA)=>{"use strict";function dN(e){return function(t){return t?.[e]}}RA.exports=dN});var TA=u((BW,xA)=>{"use strict";var fN=Ei();function gN(e){return function(t){return fN(t,e)}}xA.exports=gN});var CA=u((NW,PA)=>{"use strict";var mN=_A(),yN=TA(),AN=xa(),hN=gr();function bN(e){return AN(e)?mN(hN(e)):yN(e)}PA.exports=bN});var Ri=u((MW,OA)=>{"use strict";var IN=Jy(),SN=EA(),wN=Vr(),vN=z(),EN=CA();function RN(e){return typeof e=="function"?e:e==null?wN:typeof e=="object"?vN(e)?SN(e[0],e[1]):IN(e):EN(e)}OA.exports=RN});var qA=u((GW,LA)=>{"use strict";var _N=li(),xN=Ri(),TN=1;function PN(e){return xN(typeof e=="function"?e:_N(e,TN))}LA.exports=PN});var DA=u((kW,UA)=>{"use strict";var CN=uo();function ON(e){var t=e==null?0:e.length;return t?CN(e,1):[]}UA.exports=ON});var NA=u((FW,BA)=>{"use strict";var LN=DA(),qN=po(),UN=jn();function DN(e){return UN(qN(e,void 0,LN),e+"")}BA.exports=DN});var GA=u((QW,MA)=>{"use strict";var BN=va(),NN=NA(),MN=256,GN=NN(function(e,t){return BN(e,MN,void 0,void 0,void 0,t)});MA.exports=GN});var FA=u((jW,kA)=>{"use strict";var kN=Si(),FN=Xt(),QN=z(),jN=cr(),WN=Ii(),$N=gr(),VN=wi();function KN(e){return QN(e)?kN(e,$N):jN(e)?[e]:FN(WN(VN(e)))}kA.exports=KN});var jA=u((WW,QA)=>{"use strict";QA.exports={ary:nm(),assign:ti(),clone:dy(),curry:gy(),forEach:Sa(),isArray:z(),isError:yy(),isFunction:Kr(),isWeakMap:hy(),iteratee:qA(),keys:ei(),rearg:GA(),toInteger:Js(),toPath:FA()}});var $A=u(($W,WA)=>{"use strict";var HN=Lf(),YN=jA();function JN(e,t,r){return HN(YN,e,t,r)}WA.exports=JN});var _i=u((VW,KA)=>{"use strict";var zN=$A(),VA=zN("merge",Do());VA.placeholder=Ls();KA.exports=VA});var pb=u((xV,ub)=>{"use strict";function _M(e,t,r,n){for(var a=-1,o=e==null?0:e.length;++a<o;){var i=e[a];t(n,i,r(i),e)}return n}ub.exports=_M});var lb=u((TV,cb)=>{"use strict";var xM=Eo(),TM=lr();function PM(e,t){return e&&xM(e,t,TM)}cb.exports=PM});var gb=u((PV,fb)=>{"use strict";var CM=Yt();function OM(e,t){return function(r,n){if(r==null)return r;if(!CM(r))return e(r,n);for(var a=r.length,o=t?a:-1,i=Object(r);(t?o--:++o<a)&&n(i[o],o,i)!==!1;);return r}}fb.exports=OM});var yb=u((CV,mb)=>{"use strict";var LM=lb(),qM=gb(),UM=qM(LM);mb.exports=UM});var hb=u((OV,Ab)=>{"use strict";var DM=yb();function BM(e,t,r,n){return DM(e,function(a,o,i){t(n,a,r(a),i)}),n}Ab.exports=BM});var Ib=u((LV,bb)=>{"use strict";var NM=pb(),MM=hb(),GM=Ri(),kM=z();function FM(e,t){return function(r,n){var a=kM(r)?NM:MM,o=t?t():{};return a(r,e,GM(n,2),o)}}bb.exports=FM});var wb=u((qV,Sb)=>{"use strict";var QM=Zr(),jM=Ib(),WM=Object.prototype,$M=WM.hasOwnProperty,VM=jM(function(e,t,r){$M.call(e,r)?e[r].push(t):QM(e,r,[t])});Sb.exports=VM});var aG={};S(aG,{Method:()=>Fa,ai:()=>Gi,api:()=>zi,auditLogs:()=>ct,automations:()=>ca,backups:()=>ve,branding:()=>oa,constants:()=>Gr,environmentVariables:()=>je,features:()=>we,groups:()=>M,init:()=>_f,licensing:()=>Me,logger:()=>Lt,mappers:()=>Q,middleware:()=>Li,plugins:()=>la,publicApi:()=>ga,quotas:()=>Fe,scimGroups:()=>mr,scimUsers:()=>se,sdk:()=>Ti,users:()=>Je,utils:()=>Wt});module.exports=tI(aG);var Fa=(o=>(o.POST="POST",o.GET="GET",o.PATCH="PATCH",o.DELETE="DELETE",o.PUT="PUT",o))(Fa||{});var Ti={};S(Ti,{ai:()=>Xo,auditLogs:()=>ct,automations:()=>ca,backups:()=>ve,branding:()=>oa,environmentVariables:()=>je,features:()=>we,groups:()=>M,init:()=>_f,licensing:()=>Me,logger:()=>Lt,plugins:()=>la,publicApi:()=>ga,quotas:()=>Fe,scimGroups:()=>mr,scimUsers:()=>se,users:()=>Je,utils:()=>Wt});var oa={};S(oa,{getBrandingConfig:()=>$x});var we={};S(we,{checkBackups:()=>le,checkFeature:()=>na,checkFeatures:()=>Vo,checkSCIM:()=>Jo,isAICustomConfigsEnabled:()=>zo,isAppBuildersEnabled:()=>Rt,isAuditLogsEnabled:()=>aa,isBackupsEnabled:()=>Ko,isBrandingEnabled:()=>Ho,isBudibaseAIEnabled:()=>cn,isEnforceableSSO:()=>kd,isExpandedPublicApiEnabled:()=>Ye,isPWAEnabled:()=>kx,isSSOEnforced:()=>Fx,isSyncAutomationsEnabled:()=>Mx,isTriggerAutomationRunEnabled:()=>Gx,isUserGroupsEnabled:()=>Yo,isViewPermissionEnabled:()=>Qx,isViewReadonlyColumnsEnabled:()=>jx});var H=require("@budibase/types"),He=require("@budibase/backend-core");var Me={};S(Me,{cache:()=>xe,client:()=>ot,features:()=>Gn,getFreeLicense:()=>jo,getLicense:()=>Fo,getLicenseFromKey:()=>Qo,keys:()=>$o,offline:()=>ta,quotas:()=>kn});var xe={};S(xe,{getCachedLicense:()=>Md,invalidate:()=>Gd,refresh:()=>wt});var Qa=require("@budibase/backend-core"),Ir,rI=async()=>{Ir=await new Qa.redis.Client(Qa.redis.utils.Databases.LICENSES).init()},nI=async()=>{Ir&&await Ir.finish()};process.on("exit",async()=>{await nI()});var ja=async()=>(Ir||await rI(),Ir);var ot={};S(ot,{activateLicenseKey:()=>no,getLicense:()=>Qt,getLicenseFromKey:()=>ro,triggerQuota:()=>QI});var uu=C(require("node-fetch"));var pu=require("@budibase/backend-core"),Wa=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";pu.logging.correlation.setHeader(n.headers);let o={method:t,body:a?JSON.stringify(n.body):n.body,headers:n.headers,credentials:"include"};return(0,uu.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}},$a=Wa;var Bn=require("@budibase/types"),T=require("@budibase/backend-core");var De={};S(De,{bustCache:()=>Ha,getCurrentUsageValues:()=>Au,getQuotaUsage:()=>At,setAllUsage:()=>Ja,setAppUsageValue:()=>Ya,setUsage:()=>gu,setUsagePerApp:()=>mu,utils:()=>vr});var Z=require("@budibase/types"),ne=require("@budibase/backend-core");var vr={};S(vr,{generateBaseQuotaUsage:()=>xn,generateNewMonthlyQuotas:()=>wr,generateNewQuotaUsage:()=>Ka,getBreakdownName:()=>Pn,getCurrentMonthString:()=>rt,getQuotaDocId:()=>Sr,setCurrentMonth:()=>Tn,setQuotaReset:()=>Va});var V=require("@budibase/types"),yt=require("@budibase/backend-core"),Sr=()=>yt.context.isSelfHostUsingCloud()?`quota_usage_${yt.context.getTenantId()}`:yt.db.StaticDatabases.GLOBAL.docs.usageQuota,cu=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},Va=e=>{e.quotaReset=cu()},rt=()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},xn=()=>({usageQuota:{[V.StaticQuotaName.APPS]:0,[V.StaticQuotaName.ROWS]:0,[V.StaticQuotaName.PLUGINS]:0,[V.StaticQuotaName.USERS]:0,[V.StaticQuotaName.CREATORS]:0,[V.StaticQuotaName.USER_GROUPS]:0,[V.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[rt()]:wr()}}),Ka=()=>{let e={_id:Sr(),quotaReset:cu(),...xn(),apps:{}};return Tn(e),e},wr=()=>({[V.MonthlyQuotaName.QUERIES]:0,[V.MonthlyQuotaName.AUTOMATIONS]:0,[V.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,triggers:{}}),Tn=e=>{let t=rt();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=wr()),e.monthly.current=e.monthly[t]},Pn=(e,t)=>{if(!(!t||!e))switch(e){case V.MonthlyQuotaName.AUTOMATIONS:return V.BreakdownQuotaName.AUTOMATIONS;case V.MonthlyQuotaName.QUERIES:return yt.db.isTableId(t)?V.BreakdownQuotaName.ROW_QUERIES:yt.db.isDatasourceId(t)?V.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}};var lu=ne.Duration.fromSeconds(60).toMs(),{Writethrough:du}=ne.cache.writethrough;function oI(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 Cn=()=>ne.tenancy.isSelfHostUsingCloud()?new du(ne.tenancy.getSelfHostCloudDB(),lu):new du(ne.tenancy.getGlobalDB(),lu);async function Ha(e=0){let r=Cn(),n=Sr(),a=await r.tryGet(n);a&&a._rev&&await r.remove(n,a._rev).catch(async o=>{if(e<1)return await Ha(e+1);throw o})}var At=async()=>{let e=Cn(),t=await e.tryGet(Sr());if(!t){t=Ka();let{rev:r}=await e.put(t);t._rev=r}return Tn(t),Va(t),oI(t)},gu=async(e,t,r)=>Ja({name:t,type:r,values:{total:e}}),mu=async(e,t,r)=>{let n=Cn(),a=await At(),o=Object.values(e).reduce((s,c)=>s+c,0);for(let[s,c]of Object.entries(e))a=yu(a,t,r,{total:o,app:c},{appId:s});let i=await n.put(a);return a._rev=i.rev,a},sI=(e,t,r,n)=>{let a=Pn(t,r);if(!a||!n?.breakdown)return e;e.breakdown||(e.breakdown={}),e.breakdown[a]||(e.breakdown[a]={parent:t,values:{}});let o=e.breakdown[a];return o.values[r]=n.breakdown,e},Ya=(e,t,r,n={},a)=>{let o;try{o=ne.db.getProdAppID(n?.appId||ne.context.getAppId())}catch{}if(!o||!a.app||!Z.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[o]||(e.apps={...e.apps,[o]:xn()});let i=e.apps[o];switch(r){case Z.QuotaUsageType.STATIC:i.usageQuota[t]=a.app;break;case Z.QuotaUsageType.MONTHLY:{let s=rt(),c=t,f=i.monthly[s];f||(i.monthly[s]=wr(),f=i.monthly[s]),f[c]=a.app,Z.BREAKDOWN_QUOTA_NAMES.includes(c)&&n?.id&&(f=sI(f,c,n.id,a));break}}return e},fu=(e,t,r,n)=>{if(!Z.APP_QUOTA_NAMES.includes(r))return{};let a;try{a=ne.db.getProdAppID(ne.context.getAppId())}catch{}if(!a||!e.apps||!e.apps[a])return{app:0};let o=e.apps[a];switch(t){case Z.QuotaUsageType.STATIC:if(o.usageQuota?.[r])return{app:o.usageQuota[r]};break;case Z.QuotaUsageType.MONTHLY:{let i=rt(),s=r;if(!o.monthly?.[i]?.[s])break;let c=o.monthly[i],f=c[s],m,g=Pn(s,n);return g&&n&&c.breakdown?.[g]&&(m=c.breakdown[g]?.values[n]),{app:f,breakdown:m||0}}}return{app:0}},iI=(e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},uI=(e,t,r,n)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),n&&(r.monthly[t].triggers[e]=n)},yu=(e,t,r,n,a={})=>{if(r===Z.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=n.total,iI(t,e,n.triggers);else if(r===Z.QuotaUsageType.MONTHLY){t=t;let o=rt();e.monthly[o][t]=n.total,uI(t,o,e,n.triggers)}else throw new Error(`Invalid usage type: ${r}`);return Ya(e,t,r,a,n)},Ja=async e=>{let t=Array.isArray(e)?e:[e],r=Cn(),n=await At();for(let o of t)n=yu(n,o.name,o.type,o.values,o.opts);let a=await r.put(n,0);return n._rev=a.rev,n},Au=async(e,t,r)=>{let n=await At(),a=0,o={};switch(e){case Z.QuotaUsageType.STATIC:if(n.usageQuota[t]){let i=t;a=n.usageQuota[i],o=fu(n,e,t,r)}break;case Z.QuotaUsageType.MONTHLY:{let i=rt(),s=t;n.monthly[i][s]&&(a=n.monthly[i][s],o=fu(n,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return Z.APP_QUOTA_NAMES.includes(t)&&!(o.app||o.breakdown)&&(o.app=o.app||0,o.breakdown=o.breakdown||0),{total:a,app:o.app,breakdown:o.breakdown}};var be={};S(be,{destroy:()=>lI,get:()=>za,save:()=>cI});var nt=require("@budibase/backend-core"),pI=()=>({_id:nt.StaticDatabases.GLOBAL.docs.licenseInfo}),cI=async e=>{let t=await za();t={...t,...e};let n=await nt.tenancy.getGlobalDB().put(t);return t._rev=n.rev,t},za=async()=>{let e=nt.tenancy.getGlobalDB();try{return await e.get(nt.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return pI();throw t}},lI=async()=>{let e=nt.tenancy.getGlobalDB(),t=await za();t&&t._rev&&await e.remove(nt.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)};var D={};S(D,{bulkSave:()=>vI,destroy:()=>EI,fetch:()=>bI,generateUserGroupID:()=>AI,get:()=>II,getBulk:()=>SI,getByName:()=>Xa,getGroupUsers:()=>Ln,getGroupUsersParams:()=>wu,getUserGroupsParams:()=>Su,save:()=>wI});var L=require("@budibase/backend-core");var _e=require("@budibase/types"),Gt=require("@budibase/backend-core");async function hu(){let e=Gt.sql.designDoc.base("type");e.sql.tables={[_e.AUDIT_LOG_TYPE]:{fields:{appId:_e.SQLiteType.TEXT,event:_e.SQLiteType.TEXT,userId:_e.SQLiteType.TEXT,timestamp:_e.SQLiteType.TEXT,metadata:_e.SQLiteType.TEXT,name:_e.SQLiteType.TEXT,type:_e.SQLiteType.TEXT,fallback:_e.SQLiteType.TEXT}}};let t=Gt.context.getAuditLogsDB(),r;try{r=await t.get(Gt.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(n){if(n.status===404)r=e;else throw n}await t.put(r)}var On=require("@budibase/backend-core"),{ViewName:dI,SEPARATOR:fI,DocumentType:gI,createView:mI}=On.db,yI=gI.USER+fI;async function bu(){let e=On.tenancy.getGlobalDB(),t=`function(doc) {
|
|
4
|
-
if (doc._id.startsWith("${
|
|
3
|
+
`)}$g.exports=ZP});var Es=c((rV,Vg)=>{"use strict";function zP(e,t){for(var r=-1,a=e==null?0:e.length;++r<a&&t(e[r],r,e)!==!1;);return e}Vg.exports=zP});var Yg=c((aV,Kg)=>{"use strict";var JP=Es(),XP=Ci(),eL=1,tL=2,rL=8,aL=16,nL=32,sL=64,iL=128,oL=256,uL=512,cL=[["ary",iL],["bind",eL],["bindKey",tL],["curry",rL],["curryRight",aL],["flip",uL],["partial",nL],["partialRight",sL],["rearg",oL]];function pL(e,t){return JP(cL,function(r){var a="_."+r[0];t&r[1]&&!XP(e,a)&&e.push(a)}),e.sort()}Kg.exports=pL});var nu=c((nV,Hg)=>{"use strict";var lL=Qg(),dL=Wg(),fL=Hn(),mL=Yg();function gL(e,t,r){var a=t+"";return fL(e,dL(a,mL(lL(a),r)))}Hg.exports=gL});var su=c((sV,Jg)=>{"use strict";var hL=Gg(),yL=au(),bL=nu(),AL=1,vL=2,_L=4,IL=8,Zg=32,zg=64;function wL(e,t,r,a,n,s,o,i,u,d){var f=t&IL,g=f?o:void 0,A=f?void 0:o,I=f?s:void 0,U=f?void 0:s;t|=f?Zg:zg,t&=~(f?zg:Zg),t&_L||(t&=~(AL|vL));var G=[e,t,n,I,g,U,A,i,u,d],k=r.apply(void 0,G);return hL(e)&&yL(k,G),k.placeholder=a,bL(k,e,t)}Jg.exports=wL});var iu=c((iV,Xg)=>{"use strict";function SL(e){var t=e;return t.placeholder}Xg.exports=SL});var th=c((oV,eh)=>{"use strict";var xL=$r(),TL=un(),EL=Math.min;function RL(e,t){for(var r=e.length,a=EL(t.length,r),n=xL(e);a--;){var s=t[a];e[a]=TL(s,r)?n[s]:void 0}return e}eh.exports=RL});var Rs=c((uV,ah)=>{"use strict";var rh="__lodash_placeholder__";function OL(e,t){for(var r=-1,a=e.length,n=0,s=[];++r<a;){var o=e[r];(o===t||o===rh)&&(e[r]=rh,s[n++]=r)}return s}ah.exports=OL});var ou=c((cV,ih)=>{"use strict";var CL=Xo(),PL=eu(),LL=wg(),nh=An(),UL=su(),qL=iu(),NL=th(),kL=Rs(),DL=ge(),BL=1,ML=2,GL=8,FL=16,jL=128,QL=512;function sh(e,t,r,a,n,s,o,i,u,d){var f=t&jL,g=t&BL,A=t&ML,I=t&(GL|FL),U=t&QL,G=A?void 0:nh(e);function k(){for(var q=arguments.length,V=Array(q),Et=q;Et--;)V[Et]=arguments[Et];if(I)var Ne=qL(k),Rt=LL(V,Ne);if(a&&(V=CL(V,a,n,I)),s&&(V=PL(V,s,o,I)),q-=Rt,I&&q<d){var Cr=kL(V,Ne);return UL(e,t,sh,k.placeholder,r,V,Cr,i,u,d-q)}var ba=g?r:this,Aa=A?ba[e]:e;return q=V.length,i?V=NL(V,i):U&&q>1&&V.reverse(),f&&u<q&&(V.length=u),this&&this!==DL&&this instanceof k&&(Aa=G||nh(Aa)),Aa.apply(ba,V)}return k}ih.exports=sh});var uh=c((pV,oh)=>{"use strict";var $L=Yn(),WL=An(),VL=ou(),KL=su(),YL=iu(),HL=Rs(),ZL=ge();function zL(e,t,r){var a=WL(e);function n(){for(var s=arguments.length,o=Array(s),i=s,u=YL(n);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,n.placeholder,void 0,o,d,void 0,void 0,r-s);var f=this&&this!==ZL&&this instanceof n?a:e;return $L(f,this,o)}return n}oh.exports=zL});var ph=c((lV,ch)=>{"use strict";var JL=Yn(),XL=An(),eU=ge(),tU=1;function rU(e,t,r,a){var n=t&tU,s=XL(e);function o(){for(var i=-1,u=arguments.length,d=-1,f=a.length,g=Array(f+u),A=this&&this!==eU&&this instanceof o?s:e;++d<f;)g[d]=a[d];for(;u--;)g[d++]=arguments[++i];return JL(A,n?r:this,g)}return o}ch.exports=rU});var hh=c((dV,gh)=>{"use strict";var aU=Xo(),nU=eu(),lh=Rs(),dh="__lodash_placeholder__",uu=1,sU=2,iU=4,fh=8,vn=128,mh=256,oU=Math.min;function uU(e,t){var r=e[1],a=t[1],n=r|a,s=n<(uu|sU|vn),o=a==vn&&r==fh||a==vn&&r==mh&&e[7].length<=t[8]||a==(vn|mh)&&t[7].length<=t[8]&&r==fh;if(!(s||o))return e;a&uu&&(e[2]=t[2],n|=r&uu?0:iU);var i=t[3];if(i){var u=e[3];e[3]=u?aU(u,i,t[4]):i,e[4]=u?lh(e[3],dh):t[4]}return i=t[5],i&&(u=e[5],e[5]=u?nU(u,i,t[6]):i,e[6]=u?lh(e[5],dh):t[6]),i=t[7],i&&(e[7]=i),a&vn&&(e[8]=e[8]==null?t[8]:oU(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=n,e}gh.exports=uU});var bh=c((fV,yh)=>{"use strict";var cU=/\s/;function pU(e){for(var t=e.length;t--&&cU.test(e.charAt(t)););return t}yh.exports=pU});var vh=c((mV,Ah)=>{"use strict";var lU=bh(),dU=/^\s+/;function fU(e){return e&&e.slice(0,lU(e)+1).replace(dU,"")}Ah.exports=fU});var ra=c((gV,_h)=>{"use strict";var mU=Ut(),gU=Ee(),hU="[object Symbol]";function yU(e){return typeof e=="symbol"||gU(e)&&mU(e)==hU}_h.exports=yU});var xh=c((hV,Sh)=>{"use strict";var bU=vh(),Ih=Me(),AU=ra(),wh=0/0,vU=/^[-+]0x[0-9a-f]+$/i,_U=/^0b[01]+$/i,IU=/^0o[0-7]+$/i,wU=parseInt;function SU(e){if(typeof e=="number")return e;if(AU(e))return wh;if(Ih(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=Ih(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=bU(e);var r=_U.test(e);return r||IU.test(e)?wU(e.slice(2),r?2:8):vU.test(e)?wh:+e}Sh.exports=SU});var Rh=c((yV,Eh)=>{"use strict";var xU=xh(),Th=1/0,TU=17976931348623157e292;function EU(e){if(!e)return e===0?e:0;if(e=xU(e),e===Th||e===-Th){var t=e<0?-1:1;return t*TU}return e===e?e:0}Eh.exports=EU});var cu=c((bV,Oh)=>{"use strict";var RU=Rh();function OU(e){var t=RU(e),r=t%1;return t===t?r?t-r:t:0}Oh.exports=OU});var Os=c((AV,qh)=>{"use strict";var CU=Jo(),PU=Ag(),LU=uh(),UU=ou(),qU=ph(),NU=tu(),kU=hh(),DU=au(),BU=nu(),Ch=cu(),MU="Expected a function",Ph=1,GU=2,pu=8,lu=16,du=32,Lh=64,Uh=Math.max;function FU(e,t,r,a,n,s,o,i){var u=t&GU;if(!u&&typeof e!="function")throw new TypeError(MU);var d=a?a.length:0;if(d||(t&=~(du|Lh),a=n=void 0),o=o===void 0?o:Uh(Ch(o),0),i=i===void 0?i:Ch(i),d-=n?n.length:0,t&Lh){var f=a,g=n;a=n=void 0}var A=u?void 0:NU(e),I=[e,t,r,a,n,f,g,s,o,i];if(A&&kU(I,A),e=I[0],t=I[1],r=I[2],a=I[3],n=I[4],i=I[9]=I[9]===void 0?u?0:e.length:Uh(I[9]-d,0),!i&&t&(pu|lu)&&(t&=~(pu|lu)),!t||t==Ph)var U=PU(e,t,r);else t==pu||t==lu?U=LU(e,t,i):(t==du||t==(Ph|du))&&!n.length?U=qU(e,t,r,a):U=UU.apply(void 0,I);var G=A?CU:DU;return BU(G(U,I),e,t)}qh.exports=FU});var kh=c((vV,Nh)=>{"use strict";var jU=Os(),QU=128;function $U(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,jU(e,QU,void 0,void 0,void 0,void 0,t)}Nh.exports=$U});var Bh=c((_V,Dh)=>{"use strict";var WU=Fi(),VU=WU(Object.keys,Object);Dh.exports=VU});var fu=c((IV,Mh)=>{"use strict";var KU=as(),YU=Bh(),HU=Object.prototype,ZU=HU.hasOwnProperty;function zU(e){if(!KU(e))return YU(e);var t=[];for(var r in Object(e))ZU.call(e,r)&&r!="constructor"&&t.push(r);return t}Mh.exports=zU});var aa=c((wV,Gh)=>{"use strict";var JU=Ki(),XU=fu(),eq=Fr();function tq(e){return eq(e)?JU(e):XU(e)}Gh.exports=tq});var mu=c((SV,Fh)=>{"use strict";var rq=Kr(),aq=aa();function nq(e,t){return e&&rq(t,aq(t),e)}Fh.exports=nq});var Qh=c((xV,jh)=>{"use strict";var sq=Kr(),iq=Yr();function oq(e,t){return e&&sq(t,iq(t),e)}jh.exports=oq});var Wh=c((TV,$h)=>{"use strict";function uq(e,t){for(var r=-1,a=e==null?0:e.length,n=0,s=[];++r<a;){var o=e[r];t(o,r,e)&&(s[n++]=o)}return s}$h.exports=uq});var gu=c((EV,Vh)=>{"use strict";function cq(){return[]}Vh.exports=cq});var Cs=c((RV,Yh)=>{"use strict";var pq=Wh(),lq=gu(),dq=Object.prototype,fq=dq.propertyIsEnumerable,Kh=Object.getOwnPropertySymbols,mq=Kh?function(e){return e==null?[]:(e=Object(e),pq(Kh(e),function(t){return fq.call(e,t)}))}:lq;Yh.exports=mq});var Zh=c((OV,Hh)=>{"use strict";var gq=Kr(),hq=Cs();function yq(e,t){return gq(e,hq(e),t)}Hh.exports=yq});var hu=c((CV,zh)=>{"use strict";var bq=Kn(),Aq=rs(),vq=Cs(),_q=gu(),Iq=Object.getOwnPropertySymbols,wq=Iq?function(e){for(var t=[];e;)bq(t,vq(e)),e=Aq(e);return t}:_q;zh.exports=wq});var Xh=c((PV,Jh)=>{"use strict";var Sq=Kr(),xq=hu();function Tq(e,t){return Sq(e,xq(e),t)}Jh.exports=Tq});var yu=c((LV,ey)=>{"use strict";var Eq=Kn(),Rq=pe();function Oq(e,t,r){var a=t(e);return Rq(e)?a:Eq(a,r(e))}ey.exports=Oq});var bu=c((UV,ty)=>{"use strict";var Cq=yu(),Pq=Cs(),Lq=aa();function Uq(e){return Cq(e,Lq,Pq)}ty.exports=Uq});var ay=c((qV,ry)=>{"use strict";var qq=yu(),Nq=hu(),kq=Yr();function Dq(e){return qq(e,kq,Nq)}ry.exports=Dq});var sy=c((NV,ny)=>{"use strict";var Bq=qt(),Mq=ge(),Gq=Bq(Mq,"DataView");ny.exports=Gq});var oy=c((kV,iy)=>{"use strict";var Fq=qt(),jq=ge(),Qq=Fq(jq,"Promise");iy.exports=Qq});var sa=c((DV,my)=>{"use strict";var Au=sy(),vu=Zn(),_u=oy(),Iu=Li(),wu=Zo(),fy=Ut(),na=xi(),uy="[object Map]",$q="[object Object]",cy="[object Promise]",py="[object Set]",ly="[object WeakMap]",dy="[object DataView]",Wq=na(Au),Vq=na(vu),Kq=na(_u),Yq=na(Iu),Hq=na(wu),ur=fy;(Au&&ur(new Au(new ArrayBuffer(1)))!=dy||vu&&ur(new vu)!=uy||_u&&ur(_u.resolve())!=cy||Iu&&ur(new Iu)!=py||wu&&ur(new wu)!=ly)&&(ur=function(e){var t=fy(e),r=t==$q?e.constructor:void 0,a=r?na(r):"";if(a)switch(a){case Wq:return dy;case Vq:return uy;case Kq:return cy;case Yq:return py;case Hq:return ly}return t});my.exports=ur});var hy=c((BV,gy)=>{"use strict";var Zq=Object.prototype,zq=Zq.hasOwnProperty;function Jq(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&zq.call(e,"index")&&(r.index=e.index,r.input=e.input),r}gy.exports=Jq});var by=c((MV,yy)=>{"use strict";var Xq=ts();function eN(e,t){var r=t?Xq(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}yy.exports=eN});var vy=c((GV,Ay)=>{"use strict";var tN=/\w*$/;function rN(e){var t=new e.constructor(e.source,tN.exec(e));return t.lastIndex=e.lastIndex,t}Ay.exports=rN});var xy=c((FV,Sy)=>{"use strict";var _y=Jt(),Iy=_y?_y.prototype:void 0,wy=Iy?Iy.valueOf:void 0;function aN(e){return wy?Object(wy.call(e)):{}}Sy.exports=aN});var Ey=c((jV,Ty)=>{"use strict";var nN=ts(),sN=by(),iN=vy(),oN=xy(),uN=Gi(),cN="[object Boolean]",pN="[object Date]",lN="[object Map]",dN="[object Number]",fN="[object RegExp]",mN="[object Set]",gN="[object String]",hN="[object Symbol]",yN="[object ArrayBuffer]",bN="[object DataView]",AN="[object Float32Array]",vN="[object Float64Array]",_N="[object Int8Array]",IN="[object Int16Array]",wN="[object Int32Array]",SN="[object Uint8Array]",xN="[object Uint8ClampedArray]",TN="[object Uint16Array]",EN="[object Uint32Array]";function RN(e,t,r){var a=e.constructor;switch(t){case yN:return nN(e);case cN:case pN:return new a(+e);case bN:return sN(e,r);case AN:case vN:case _N:case IN:case wN:case SN:case xN:case TN:case EN:return uN(e,r);case lN:return new a;case dN:case gN:return new a(e);case fN:return iN(e);case mN:return new a;case hN:return oN(e)}}Ty.exports=RN});var Oy=c((QV,Ry)=>{"use strict";var ON=sa(),CN=Ee(),PN="[object Map]";function LN(e){return CN(e)&&ON(e)==PN}Ry.exports=LN});var Uy=c(($V,Ly)=>{"use strict";var UN=Oy(),qN=ns(),Cy=ss(),Py=Cy&&Cy.isMap,NN=Py?qN(Py):UN;Ly.exports=NN});var Ny=c((WV,qy)=>{"use strict";var kN=sa(),DN=Ee(),BN="[object Set]";function MN(e){return DN(e)&&kN(e)==BN}qy.exports=MN});var My=c((VV,By)=>{"use strict";var GN=Ny(),FN=ns(),ky=ss(),Dy=ky&&ky.isSet,jN=Dy?FN(Dy):GN;By.exports=jN});var Su=c((KV,Qy)=>{"use strict";var QN=Xa(),$N=Es(),WN=Vi(),VN=mu(),KN=Qh(),YN=Bi(),HN=$r(),ZN=Zh(),zN=Xh(),JN=bu(),XN=ay(),ek=sa(),tk=hy(),rk=Ey(),ak=ji(),nk=pe(),sk=nn(),ik=Uy(),ok=Me(),uk=My(),ck=aa(),pk=Yr(),lk=1,dk=2,fk=4,Gy="[object Arguments]",mk="[object Array]",gk="[object Boolean]",hk="[object Date]",yk="[object Error]",Fy="[object Function]",bk="[object GeneratorFunction]",Ak="[object Map]",vk="[object Number]",jy="[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]",Uk="[object Uint8Array]",qk="[object Uint8ClampedArray]",Nk="[object Uint16Array]",kk="[object Uint32Array]",Q={};Q[Gy]=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[jy]=Q[_k]=Q[Ik]=Q[wk]=Q[Sk]=Q[Uk]=Q[qk]=Q[Nk]=Q[kk]=!0;Q[yk]=Q[Fy]=Q[xk]=!1;function Ps(e,t,r,a,n,s){var o,i=t&lk,u=t&dk,d=t&fk;if(r&&(o=n?r(e,a,n,s):r(e)),o!==void 0)return o;if(!ok(e))return e;var f=nk(e);if(f){if(o=tk(e),!i)return HN(e,o)}else{var g=ek(e),A=g==Fy||g==bk;if(sk(e))return YN(e,i);if(g==jy||g==Gy||A&&!n){if(o=u||A?{}:ak(e),!i)return u?zN(e,KN(o,e)):ZN(e,VN(o,e))}else{if(!Q[g])return n?e:{};o=rk(e,g,i)}}s||(s=new QN);var I=s.get(e);if(I)return I;s.set(e,o),uk(e)?e.forEach(function(k){o.add(Ps(k,t,r,k,e,s))}):ik(e)&&e.forEach(function(k,q){o.set(q,Ps(k,t,r,q,e,s))});var U=d?u?XN:JN:u?pk:ck,G=f?void 0:U(e);return $N(G||e,function(k,q){G&&(q=k,k=e[q]),WN(o,q,Ps(k,t,r,q,e,s))}),o}Qy.exports=Ps});var Wy=c((YV,$y)=>{"use strict";var Dk=Su(),Bk=4;function Mk(e){return Dk(e,Bk)}$y.exports=Mk});var Ky=c((HV,Vy)=>{"use strict";var Gk=Os(),Fk=8;function xu(e,t,r){t=r?void 0:t;var a=Gk(e,Fk,void 0,void 0,void 0,void 0,void 0,t);return a.placeholder=xu.placeholder,a}xu.placeholder={};Vy.exports=xu});var Hy=c((ZV,Yy)=>{"use strict";var jk=Ut(),Qk=Ee(),$k=Qi(),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)}Yy.exports=Kk});var zy=c((zV,Zy)=>{"use strict";var Yk=sa(),Hk=Ee(),Zk="[object WeakMap]";function zk(e){return Hk(e)&&Yk(e)==Zk}Zy.exports=zk});var Xy=c((JV,Jy)=>{"use strict";function Jk(e,t){for(var r=-1,a=e==null?0:e.length;++r<a;)if(t(e[r],r,e))return!0;return!1}Jy.exports=Jk});var Tu=c((XV,eb)=>{"use strict";var Xk=Oi(),eD=Xy(),tD=Pi(),rD=1,aD=2;function nD(e,t,r,a,n,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&aD?new Xk:void 0;for(s.set(e,t),s.set(t,e);++g<i;){var U=e[g],G=t[g];if(a)var k=o?a(G,U,g,t,e,s):a(U,G,g,e,t,s);if(k!==void 0){if(k)continue;A=!1;break}if(I){if(!eD(t,function(q,V){if(!tD(I,V)&&(U===q||n(U,q,r,a,s)))return I.push(V)})){A=!1;break}}else if(!(U===G||n(U,G,r,a,s))){A=!1;break}}return s.delete(e),s.delete(t),A}eb.exports=nD});var rb=c((e2,tb)=>{"use strict";function sD(e){var t=-1,r=Array(e.size);return e.forEach(function(a,n){r[++t]=[n,a]}),r}tb.exports=sD});var ob=c((t2,ib)=>{"use strict";var ab=Jt(),nb=Mi(),iD=Br(),oD=Tu(),uD=rb(),cD=Xn(),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]",sb=ab?ab.prototype:void 0,Eu=sb?sb.valueOf:void 0;function wD(e,t,r,a,n,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 iD(+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=a&pD;if(i||(i=cD),e.size!=t.size&&!u)return!1;var d=o.get(e);if(d)return d==t;a|=lD,o.set(e,t);var f=oD(i(e),i(t),a,n,s,o);return o.delete(e),f;case vD:if(Eu)return Eu.call(e)==Eu.call(t)}return!1}ib.exports=wD});var pb=c((r2,cb)=>{"use strict";var ub=bu(),SD=1,xD=Object.prototype,TD=xD.hasOwnProperty;function ED(e,t,r,a,n,s){var o=r&SD,i=ub(e),u=i.length,d=ub(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),U=s.get(t);if(I&&U)return I==t&&U==e;var G=!0;s.set(e,t),s.set(t,e);for(var k=o;++g<u;){A=i[g];var q=e[A],V=t[A];if(a)var Et=o?a(V,q,A,t,e,s):a(q,V,A,e,t,s);if(!(Et===void 0?q===V||n(q,V,r,a,s):Et)){G=!1;break}k||(k=A=="constructor")}if(G&&!k){var Ne=e.constructor,Rt=t.constructor;Ne!=Rt&&"constructor"in e&&"constructor"in t&&!(typeof Ne=="function"&&Ne instanceof Ne&&typeof Rt=="function"&&Rt instanceof Rt)&&(G=!1)}return s.delete(e),s.delete(t),G}cb.exports=ED});var Ab=c((a2,bb)=>{"use strict";var Ru=Xa(),RD=Tu(),OD=ob(),CD=pb(),lb=sa(),fb=pe(),mb=nn(),PD=is(),LD=1,gb="[object Arguments]",hb="[object Array]",Ls="[object Object]",UD=Object.prototype,yb=UD.hasOwnProperty;function qD(e,t,r,a,n,s){var o=fb(e),i=fb(t),u=o?hb:lb(e),d=i?hb:lb(t);u=u==gb?Ls:u,d=d==gb?Ls:d;var f=u==Ls,g=d==Ls,A=u==d;if(A&&mb(e)){if(!mb(t))return!1;o=!0,f=!1}if(A&&!f)return s||(s=new Ru),o||PD(e)?RD(e,t,r,a,n,s):OD(e,t,u,r,a,n,s);if(!(r&LD)){var I=f&&yb.call(e,"__wrapped__"),U=g&&yb.call(t,"__wrapped__");if(I||U){var G=I?e.value():e,k=U?t.value():t;return s||(s=new Ru),n(G,k,r,a,s)}}return A?(s||(s=new Ru),CD(e,t,r,a,n,s)):!1}bb.exports=qD});var Ou=c((n2,Ib)=>{"use strict";var ND=Ab(),vb=Ee();function _b(e,t,r,a,n){return e===t?!0:e==null||t==null||!vb(e)&&!vb(t)?e!==e&&t!==t:ND(e,t,r,a,_b,n)}Ib.exports=_b});var Sb=c((s2,wb)=>{"use strict";var kD=Xa(),DD=Ou(),BD=1,MD=2;function GD(e,t,r,a){var n=r.length,s=n,o=!a;if(e==null)return!s;for(e=Object(e);n--;){var i=r[n];if(o&&i[2]?i[1]!==e[i[0]]:!(i[0]in e))return!1}for(;++n<s;){i=r[n];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(a)var A=a(d,f,u,e,t,g);if(!(A===void 0?DD(f,d,BD|MD,a,g):A))return!1}}return!0}wb.exports=GD});var Cu=c((i2,xb)=>{"use strict";var FD=Me();function jD(e){return e===e&&!FD(e)}xb.exports=jD});var Eb=c((o2,Tb)=>{"use strict";var QD=Cu(),$D=aa();function WD(e){for(var t=$D(e),r=t.length;r--;){var a=t[r],n=e[a];t[r]=[a,n,QD(n)]}return t}Tb.exports=WD});var Pu=c((u2,Rb)=>{"use strict";function VD(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}Rb.exports=VD});var Cb=c((c2,Ob)=>{"use strict";var KD=Sb(),YD=Eb(),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)}}Ob.exports=ZD});var Us=c((p2,Pb)=>{"use strict";var zD=pe(),JD=ra(),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)}Pb.exports=tB});var qb=c((l2,Ub)=>{"use strict";var Lb=zn(),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 a=arguments,n=t?t.apply(this,a):a[0],s=r.cache;if(s.has(n))return s.get(n);var o=e.apply(this,a);return r.cache=s.set(n,o)||s,o};return r.cache=new(Lu.Cache||Lb),r}Lu.Cache=Lb;Ub.exports=Lu});var kb=c((d2,Nb)=>{"use strict";var aB=qb(),nB=500;function sB(e){var t=aB(e,function(a){return r.size===nB&&r.clear(),a}),r=t.cache;return t}Nb.exports=sB});var Uu=c((f2,Db)=>{"use strict";var iB=kb(),oB=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,uB=/\\(\\)?/g,cB=iB(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(oB,function(r,a,n,s){t.push(n?s.replace(uB,"$1"):a||r)}),t});Db.exports=cB});var qu=c((m2,Bb)=>{"use strict";function pB(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}Bb.exports=pB});var $b=c((g2,Qb)=>{"use strict";var Mb=Jt(),lB=qu(),dB=pe(),fB=ra(),mB=1/0,Gb=Mb?Mb.prototype:void 0,Fb=Gb?Gb.toString:void 0;function jb(e){if(typeof e=="string")return e;if(dB(e))return lB(e,jb)+"";if(fB(e))return Fb?Fb.call(e):"";var t=e+"";return t=="0"&&1/e==-mB?"-0":t}Qb.exports=jb});var Nu=c((h2,Wb)=>{"use strict";var gB=$b();function hB(e){return e==null?"":gB(e)}Wb.exports=hB});var ku=c((y2,Vb)=>{"use strict";var yB=pe(),bB=Us(),AB=Uu(),vB=Nu();function _B(e,t){return yB(e)?e:bB(e,t)?[e]:AB(vB(e))}Vb.exports=_B});var ia=c((b2,Kb)=>{"use strict";var IB=ra(),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}Kb.exports=SB});var Du=c((A2,Yb)=>{"use strict";var xB=ku(),TB=ia();function EB(e,t){t=xB(t,e);for(var r=0,a=t.length;e!=null&&r<a;)e=e[TB(t[r++])];return r&&r==a?e:void 0}Yb.exports=EB});var Zb=c((v2,Hb)=>{"use strict";var RB=Du();function OB(e,t,r){var a=e==null?void 0:RB(e,t);return a===void 0?r:a}Hb.exports=OB});var Jb=c((_2,zb)=>{"use strict";function CB(e,t){return e!=null&&t in Object(e)}zb.exports=CB});var eA=c((I2,Xb)=>{"use strict";var PB=ku(),LB=Va(),UB=pe(),qB=un(),NB=es(),kB=ia();function DB(e,t,r){t=PB(t,e);for(var a=-1,n=t.length,s=!1;++a<n;){var o=kB(t[a]);if(!(s=e!=null&&r(e,o)))break;e=e[o]}return s||++a!=n?s:(n=e==null?0:e.length,!!n&&NB(n)&&qB(o,n)&&(UB(e)||LB(e)))}Xb.exports=DB});var rA=c((w2,tA)=>{"use strict";var BB=Jb(),MB=eA();function GB(e,t){return e!=null&&MB(e,t,BB)}tA.exports=GB});var nA=c((S2,aA)=>{"use strict";var FB=Ou(),jB=Zb(),QB=rA(),$B=Us(),WB=Cu(),VB=Pu(),KB=ia(),YB=1,HB=2;function ZB(e,t){return $B(e)&&WB(t)?VB(KB(e),t):function(r){var a=jB(r,e);return a===void 0&&a===t?QB(r,e):FB(t,a,YB|HB)}}aA.exports=ZB});var iA=c((x2,sA)=>{"use strict";function zB(e){return function(t){return t?.[e]}}sA.exports=zB});var uA=c((T2,oA)=>{"use strict";var JB=Du();function XB(e){return function(t){return JB(t,e)}}oA.exports=XB});var pA=c((E2,cA)=>{"use strict";var e0=iA(),t0=uA(),r0=Us(),a0=ia();function n0(e){return r0(e)?e0(a0(e)):t0(e)}cA.exports=n0});var Bu=c((R2,lA)=>{"use strict";var s0=Cb(),i0=nA(),o0=Ka(),u0=pe(),c0=pA();function p0(e){return typeof e=="function"?e:e==null?o0:typeof e=="object"?u0(e)?i0(e[0],e[1]):s0(e):c0(e)}lA.exports=p0});var fA=c((O2,dA)=>{"use strict";var l0=Su(),d0=Bu(),f0=1;function m0(e){return d0(typeof e=="function"?e:l0(e,f0))}dA.exports=m0});var gA=c((C2,mA)=>{"use strict";var g0=Ii();function h0(e){var t=e==null?0:e.length;return t?g0(e,1):[]}mA.exports=h0});var yA=c((P2,hA)=>{"use strict";var y0=gA(),b0=wi(),A0=Hn();function v0(e){return A0(b0(e,void 0,y0),e+"")}hA.exports=v0});var AA=c((L2,bA)=>{"use strict";var _0=Os(),I0=yA(),w0=256,S0=I0(function(e,t){return _0(e,w0,void 0,void 0,void 0,t)});bA.exports=S0});var _A=c((U2,vA)=>{"use strict";var x0=qu(),T0=$r(),E0=pe(),R0=ra(),O0=Uu(),C0=ia(),P0=Nu();function L0(e){return E0(e)?x0(e,C0):R0(e)?[e]:T0(O0(P0(e)))}vA.exports=L0});var wA=c((q2,IA)=>{"use strict";IA.exports={ary:kh(),assign:mu(),clone:Wy(),curry:Ky(),forEach:Es(),isArray:pe(),isError:Hy(),isFunction:Ya(),isWeakMap:zy(),iteratee:fA(),keys:fu(),rearg:AA(),toInteger:cu(),toPath:_A()}});var xA=c((N2,SA)=>{"use strict";var U0=lg(),q0=wA();function N0(e,t,r){return U0(q0,e,t,r)}SA.exports=N0});var Mu=c((k2,EA)=>{"use strict";var k0=xA(),TA=k0("merge",Yi());TA.placeholder=Vo();EA.exports=TA});var Hv=c((GY,Yv)=>{"use strict";function hG(e,t,r,a){for(var n=-1,s=e==null?0:e.length;++n<s;){var o=e[n];t(a,o,r(o),e)}return a}Yv.exports=hG});var zv=c((FY,Zv)=>{"use strict";var yG=Di(),bG=aa();function AG(e,t){return e&&yG(e,t,bG)}Zv.exports=AG});var Xv=c((jY,Jv)=>{"use strict";var vG=Fr();function _G(e,t){return function(r,a){if(r==null)return r;if(!vG(r))return e(r,a);for(var n=r.length,s=t?n:-1,o=Object(r);(t?s--:++s<n)&&a(o[s],s,o)!==!1;);return r}}Jv.exports=_G});var t_=c((QY,e_)=>{"use strict";var IG=zv(),wG=Xv(),SG=wG(IG);e_.exports=SG});var a_=c(($Y,r_)=>{"use strict";var xG=t_();function TG(e,t,r,a){return xG(e,function(n,s,o){t(a,n,r(n),o)}),a}r_.exports=TG});var s_=c((WY,n_)=>{"use strict";var EG=Hv(),RG=a_(),OG=Bu(),CG=pe();function PG(e,t){return function(r,a){var n=CG(r)?EG:RG,s=t?t():{};return n(r,e,OG(a,2),s)}}n_.exports=PG});var o_=c((VY,i_)=>{"use strict";var LG=en(),UG=s_(),qG=Object.prototype,NG=qG.hasOwnProperty,kG=UG(function(e,t,r){NG.call(e,r)?e[r].push(t):LG(e,r,[t])});i_.exports=kG});var YG={};T(YG,{Method:()=>ti,ai:()=>Ac,api:()=>Cc,auditLogs:()=>Dt,automations:()=>hs,backups:()=>Fe,branding:()=>ls,constants:()=>Ga,environmentVariables:()=>lt,features:()=>Ge,groups:()=>Z,init:()=>sg,licensing:()=>it,logger:()=>cr,mappers:()=>te,middleware:()=>Wu,plugins:()=>ys,publicApi:()=>vs,quotas:()=>ct,scimGroups:()=>oa,scimUsers:()=>Ie,sdk:()=>Fu,users:()=>At,utils:()=>kr});module.exports=G_(YG);var ti=(s=>(s.POST="POST",s.GET="GET",s.PATCH="PATCH",s.DELETE="DELETE",s.PUT="PUT",s))(ti||{});var Fu={};T(Fu,{ai:()=>lo,auditLogs:()=>Dt,automations:()=>hs,backups:()=>Fe,branding:()=>ls,environmentVariables:()=>lt,features:()=>Ge,groups:()=>Z,init:()=>sg,licensing:()=>it,logger:()=>cr,plugins:()=>ys,publicApi:()=>vs,quotas:()=>ct,scimGroups:()=>oa,scimUsers:()=>Ie,users:()=>At,utils:()=>kr});var ls={};T(ls,{getBrandingConfig:()=>CO});var Ge={};T(Ge,{checkBackups:()=>Re,checkFeature:()=>cs,checkFeatures:()=>so,checkSCIM:()=>co,isAICustomConfigsEnabled:()=>po,isAppBuildersEnabled:()=>rr,isAuditLogsEnabled:()=>ps,isBackupsEnabled:()=>io,isBrandingEnabled:()=>oo,isBudibaseAIEnabled:()=>ln,isEnforceableSSO:()=>vm,isExpandedPublicApiEnabled:()=>bt,isPWAEnabled:()=>xO,isSSOEnforced:()=>TO,isSyncAutomationsEnabled:()=>wO,isTriggerAutomationRunEnabled:()=>SO,isUserGroupsEnabled:()=>uo,isViewPermissionEnabled:()=>EO,isViewReadonlyColumnsEnabled:()=>RO});var oe=require("@budibase/types"),yt=require("@budibase/backend-core");var it={};T(it,{cache:()=>Ke,client:()=>Lt,features:()=>Wn,getFreeLicense:()=>ro,getLicense:()=>eo,getLicenseFromKey:()=>to,keys:()=>no,offline:()=>os,quotas:()=>Vn});var Ke={};T(Ke,{getCachedLicense:()=>bm,invalidate:()=>Am,refresh:()=>Xt});var ri=require("@budibase/backend-core"),_a,F_=async()=>{_a=await new ri.redis.Client(ri.redis.utils.Databases.LICENSES).init()},j_=async()=>{_a&&await _a.finish()};process.on("exit",async()=>{await j_()});var ai=async()=>(_a||await F_(),_a);var Lt={};T(Lt,{activateLicenseKey:()=>yi,getLicense:()=>qr,getLicenseFromKey:()=>hi,triggerQuota:()=>EI});var Fc=F(require("node-fetch"));var jc=require("@budibase/backend-core"),ni=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";jc.logging.correlation.setHeader(a.headers);let s={method:t,body:n?JSON.stringify(a.body):a.body,headers:a.headers,credentials:"include"};return(0,Fc.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}},si=ni;var jn=require("@budibase/types"),M=require("@budibase/backend-core");var at={};T(at,{bustCache:()=>ui,getCurrentUsageValues:()=>Zc,getQuotaUsage:()=>Yt,setAllUsage:()=>pi,setAppUsageValue:()=>ci,setUsage:()=>Kc,setUsagePerApp:()=>Yc,utils:()=>Sa});var fe=require("@budibase/types"),Ae=require("@budibase/backend-core");var Sa={};T(Sa,{generateBaseQuotaUsage:()=>Un,generateNewMonthlyQuotas:()=>wa,generateNewQuotaUsage:()=>oi,getBreakdownName:()=>Nn,getCurrentMonthString:()=>Ot,getQuotaDocId:()=>Ia,setCurrentMonth:()=>qn,setQuotaReset:()=>ii});var se=require("@budibase/types"),Kt=require("@budibase/backend-core"),Ia=()=>Kt.context.isSelfHostUsingCloud()?`quota_usage_${Kt.context.getTenantId()}`:Kt.db.StaticDatabases.GLOBAL.docs.usageQuota,Qc=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},ii=e=>{e.quotaReset=Qc()},Ot=()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},Un=()=>({usageQuota:{[se.StaticQuotaName.APPS]:0,[se.StaticQuotaName.ROWS]:0,[se.StaticQuotaName.PLUGINS]:0,[se.StaticQuotaName.USERS]:0,[se.StaticQuotaName.CREATORS]:0,[se.StaticQuotaName.USER_GROUPS]:0,[se.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[Ot()]:wa()}}),oi=()=>{let e={_id:Ia(),quotaReset:Qc(),...Un(),apps:{}};return qn(e),e},wa=()=>({[se.MonthlyQuotaName.QUERIES]:0,[se.MonthlyQuotaName.AUTOMATIONS]:0,[se.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,triggers:{}}),qn=e=>{let t=Ot();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=wa()),e.monthly.current=e.monthly[t]},Nn=(e,t)=>{if(!(!t||!e))switch(e){case se.MonthlyQuotaName.AUTOMATIONS:return se.BreakdownQuotaName.AUTOMATIONS;case se.MonthlyQuotaName.QUERIES:return Kt.db.isTableId(t)?se.BreakdownQuotaName.ROW_QUERIES:Kt.db.isDatasourceId(t)?se.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}};var $c=Ae.Duration.fromSeconds(60).toMs(),{Writethrough:Wc}=Ae.cache.writethrough;function $_(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 kn=()=>Ae.tenancy.isSelfHostUsingCloud()?new Wc(Ae.tenancy.getSelfHostCloudDB(),$c):new Wc(Ae.tenancy.getGlobalDB(),$c);async function ui(e=0){let r=kn(),a=Ia(),n=await r.tryGet(a);n&&n._rev&&await r.remove(a,n._rev).catch(async s=>{if(e<1)return await ui(e+1);throw s})}var Yt=async()=>{let e=kn(),t=await e.tryGet(Ia());if(!t){t=oi();let{rev:r}=await e.put(t);t._rev=r}return qn(t),ii(t),$_(t)},Kc=async(e,t,r)=>pi({name:t,type:r,values:{total:e}}),Yc=async(e,t,r)=>{let a=kn(),n=await Yt(),s=Object.values(e).reduce((i,u)=>i+u,0);for(let[i,u]of Object.entries(e))n=Hc(n,t,r,{total:s,app:u},{appId:i});let o=await a.put(n);return n._rev=o.rev,n},W_=(e,t,r,a)=>{let n=Nn(t,r);if(!n||!a?.breakdown)return e;e.breakdown||(e.breakdown={}),e.breakdown[n]||(e.breakdown[n]={parent:t,values:{}});let s=e.breakdown[n];return s.values[r]=a.breakdown,e},ci=(e,t,r,a={},n)=>{let s;try{s=Ae.db.getProdAppID(a?.appId||Ae.context.getAppId())}catch{}if(!s||!n.app||!fe.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[s]||(e.apps={...e.apps,[s]:Un()});let o=e.apps[s];switch(r){case fe.QuotaUsageType.STATIC:o.usageQuota[t]=n.app;break;case fe.QuotaUsageType.MONTHLY:{let i=Ot(),u=t,d=o.monthly[i];d||(o.monthly[i]=wa(),d=o.monthly[i]),d[u]=n.app,fe.BREAKDOWN_QUOTA_NAMES.includes(u)&&a?.id&&(d=W_(d,u,a.id,n));break}}return e},Vc=(e,t,r,a)=>{if(!fe.APP_QUOTA_NAMES.includes(r))return{};let n;try{n=Ae.db.getProdAppID(Ae.context.getAppId())}catch{}if(!n||!e.apps||!e.apps[n])return{app:0};let s=e.apps[n];switch(t){case fe.QuotaUsageType.STATIC:if(s.usageQuota?.[r])return{app:s.usageQuota[r]};break;case fe.QuotaUsageType.MONTHLY:{let o=Ot(),i=r;if(!s.monthly?.[o]?.[i])break;let u=s.monthly[o],d=u[i],f,g=Nn(i,a);return g&&a&&u.breakdown?.[g]&&(f=u.breakdown[g]?.values[a]),{app:d,breakdown:f||0}}}return{app:0}},V_=(e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},K_=(e,t,r,a)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),a&&(r.monthly[t].triggers[e]=a)},Hc=(e,t,r,a,n={})=>{if(r===fe.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=a.total,V_(t,e,a.triggers);else if(r===fe.QuotaUsageType.MONTHLY){t=t;let s=Ot();e.monthly[s][t]=a.total,K_(t,s,e,a.triggers)}else throw new Error(`Invalid usage type: ${r}`);return ci(e,t,r,n,a)},pi=async e=>{let t=Array.isArray(e)?e:[e],r=kn(),a=await Yt();for(let s of t)a=Hc(a,s.name,s.type,s.values,s.opts);let n=await r.put(a,0);return a._rev=n.rev,a},Zc=async(e,t,r)=>{let a=await Yt(),n=0,s={};switch(e){case fe.QuotaUsageType.STATIC:if(a.usageQuota[t]){let o=t;n=a.usageQuota[o],s=Vc(a,e,t,r)}break;case fe.QuotaUsageType.MONTHLY:{let o=Ot(),i=t;a.monthly[o][i]&&(n=a.monthly[o][i],s=Vc(a,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return fe.APP_QUOTA_NAMES.includes(t)&&!(s.app||s.breakdown)&&(s.app=s.app||0,s.breakdown=s.breakdown||0),{total:n,app:s.app,breakdown:s.breakdown}};var De={};T(De,{destroy:()=>Z_,get:()=>li,save:()=>H_});var Ct=require("@budibase/backend-core"),Y_=()=>({_id:Ct.StaticDatabases.GLOBAL.docs.licenseInfo}),H_=async e=>{let t=await li();t={...t,...e};let a=await Ct.tenancy.getGlobalDB().put(t);return t._rev=a.rev,t},li=async()=>{let e=Ct.tenancy.getGlobalDB();try{return await e.get(Ct.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return Y_();throw t}},Z_=async()=>{let e=Ct.tenancy.getGlobalDB(),t=await li();t&&t._rev&&await e.remove(Ct.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)};var K={};T(K,{bulkSave:()=>uI,destroy:()=>cI,fetch:()=>nI,generateUserGroupID:()=>rI,get:()=>sI,getBulk:()=>iI,getByName:()=>di,getGroupUsers:()=>Bn,getGroupUsersParams:()=>tp,getUserGroupsParams:()=>ep,save:()=>oI});var $=require("@budibase/backend-core");var Ve=require("@budibase/types"),Pr=require("@budibase/backend-core");async function zc(){let e=Pr.sql.designDoc.base("type");e.sql.tables={[Ve.AUDIT_LOG_TYPE]:{fields:{appId:Ve.SQLiteType.TEXT,event:Ve.SQLiteType.TEXT,userId:Ve.SQLiteType.TEXT,timestamp:Ve.SQLiteType.TEXT,metadata:Ve.SQLiteType.TEXT,name:Ve.SQLiteType.TEXT,type:Ve.SQLiteType.TEXT,fallback:Ve.SQLiteType.TEXT}}};let t=Pr.context.getAuditLogsDB(),r;try{r=await t.get(Pr.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(a){if(a.status===404)r=e;else throw a}await t.put(r)}var Dn=require("@budibase/backend-core"),{ViewName:z_,SEPARATOR:J_,DocumentType:X_,createView:eI}=Dn.db,tI=X_.USER+J_;async function Jc(){let e=Dn.tenancy.getGlobalDB(),t=`function(doc) {
|
|
4
|
+
if (doc._id.startsWith("${tI}") && 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 eI(e,t,z_.USER_BY_GROUP)}var Xc=`${$.DocumentType.GROUP}${$.SEPARATOR}`;function ep(e,t={}){e||(e="");let r=e?.startsWith($.DocumentType.GROUP)?"":Xc;return{...t,startkey:`${r}${e}`,endkey:`${r}${e}${$.UNICODE_MAX}`}}function tp(e,t={}){e||(e="");let{emailSearch:r,bookmark:a,...n}=t;return r?{...n,startkey:`e_${e}${a||r}`,endkey:`e_${e}${r}${$.UNICODE_MAX}`}:{...t,startkey:`g_${e}`,endkey:`g_${e}${$.UNICODE_MAX}`,startkey_docid:a}}function rI(){return`${Xc}${$.utils.newid()}`}async function Bn(e,t){let r=$.tenancy.getGlobalDB();return(await $.db.queryView($.db.ViewName.USER_BY_GROUP,tp(e,t),r,Jc,{arrayResponse:!0})).map(n=>({_id:n.userId,email:n.email}))||[]}async function xa(e){return e.users=await Bn(e._id),e}async function aI(e){let r=(await xa(e)).users?.map(s=>s._id),a=await $.users.bulkGetGlobalUsersById(r),n=[];for(let s of a){if(!s.userGroups)continue;let o=s.userGroups.length;s.userGroups=s.userGroups.filter(i=>i!==e._id),s.userGroups.length!==o&&n.push(s)}n.length&&await $.users.bulkUpdateGlobalUsers(n)}async function rp(){return(await $.tenancy.getGlobalDB().allDocs(ep(null,{include_docs:!0}))).rows.map(t=>t.doc)}async function nI(){let e=await rp(),t=[];for(let r of e)t.push(xa(r));return await Promise.all(t)}async function sI(e){let r=await $.tenancy.getGlobalDB().get(e);return await xa(r)}async function iI(e,t={enriched:!0}){let a=await $.tenancy.getGlobalDB().getMultiple(e,{allowMissing:!0});if(t?.enriched){let n=[];for(let s of a)n.push(xa(s));return await Promise.all(n)}else return a}async function oI(e){return await $.tenancy.getGlobalDB().put(e)}async function uI(e){return await $.tenancy.getGlobalDB().bulkDocs(e)}async function cI(e,t){let r=$.tenancy.getGlobalDB(),a=await r.get(e),n=await r.remove(e,t);return await aI(a),n}async function di(e){let t=e.toLowerCase(),a=(await rp()).find(n=>n.name.toLowerCase()===t);if(a)return await xa(a)}var Be={};T(Be,{deleteAppBackupMetadata:()=>II,fetchAppBackups:()=>AI,generateAppBackupID:()=>hp,getAppBackupMetadata:()=>wI,oldestBackupDate:()=>mp,storeAppBackupMetadata:()=>vI,updateAppBackupMetadata:()=>_I});var H=require("@budibase/backend-core"),fp=require("@budibase/types");function Ta(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 Lr=require("@budibase/backend-core"),{ViewName:np,AutomationViewMode:fi,SEPARATOR:nt,DocumentType:sp,createView:ip}=Lr.db,pI=sp.AUTOMATION_LOG+nt,ap=sp.APP_BACKUP+nt;async function op(){let e=Lr.context.getProdAppDB(),t=`function(doc) {
|
|
11
|
+
if (doc._id.startsWith("${pI}")) {
|
|
12
|
+
let autoId = doc.automationId + "${nt}"
|
|
13
|
+
let status = doc.status + "${nt}"
|
|
14
|
+
let autoKey = "${fi.AUTOMATION}${nt}" + autoId + doc.createdAt
|
|
15
|
+
let statusKey = "${fi.STATUS}${nt}" + status + doc.createdAt
|
|
16
|
+
let allKey = "${fi.ALL}${nt}" + 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 ip(e,t,np.AUTOMATION_LOGS)}async function up(){let e=Lr.tenancy.getGlobalDB(),t=`function(doc) {
|
|
22
|
+
if (doc._id.startsWith("${ap}") && doc.type && doc.trigger) {
|
|
23
|
+
let full = doc.appId + "${nt}"
|
|
24
|
+
full += doc.trigger.toLowerCase() + "${nt}"
|
|
25
|
+
full += doc.type.toLowerCase() + "${nt}"
|
|
26
|
+
emit("${ap}" + full + doc.timestamp)
|
|
27
27
|
}
|
|
28
|
-
}`;await
|
|
28
|
+
}`;await ip(e,t,np.APP_BACKUP_BY_TRIGGER)}var dp=require("@budibase/types");var Ga={};T(Ga,{GENERIC_PAGE_SIZE:()=>st,auditLogs:()=>Ur,licenses:()=>Te,quotas:()=>ht,versions:()=>Ma});var Te={};T(Te,{CLOUD_FREE_LICENSE:()=>dI,SELF_FREE_LICENSE:()=>mi,UNLIMITED:()=>J,UNLIMITED_LICENSE:()=>fI});var Pt=require("@budibase/types");var ht={};T(ht,{UNLIMITED:()=>lI,appBackupRetentionDays:()=>Da,apps:()=>Ra,automationLogRetentionDays:()=>ka,automations:()=>qa,budibaseAICredits:()=>Na,creators:()=>Ca,customAIConfigurations:()=>Ba,plugins:()=>La,queries:()=>Ua,rows:()=>Ea,userGroups:()=>Pa,users:()=>Oa});var me=require("@budibase/types"),lI=-1,Ea=e=>({[me.StaticQuotaName.ROWS]:{name:"Rows",value:e,triggers:[90,100]}}),Ra=e=>({[me.StaticQuotaName.APPS]:{name:"Apps",value:e,triggers:[100]}}),Oa=e=>({[me.StaticQuotaName.USERS]:{name:"Users",value:e,triggers:[80,100]}}),Ca=e=>({[me.StaticQuotaName.CREATORS]:{name:"Creators",value:e,triggers:[]}}),Pa=e=>({[me.StaticQuotaName.USER_GROUPS]:{name:"User Groups",value:e,triggers:[80,100]}}),La=e=>({[me.StaticQuotaName.PLUGINS]:{name:"Plugins",value:e,triggers:[90,100]}}),Ua=e=>({[me.MonthlyQuotaName.QUERIES]:{name:"Queries",value:e,triggers:[]}}),qa=e=>({[me.MonthlyQuotaName.AUTOMATIONS]:{name:"Automations",value:e,triggers:[80,90,100]}}),Na=e=>({[me.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:{name:"Budibase AI Credits",value:e,triggers:[80,90,100]}}),ka=e=>({[me.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS]:{name:"Automation Logs",value:e,triggers:[]}}),Da=e=>({[me.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS]:{name:"App Backups",value:e,triggers:[]}}),Ba=e=>({[me.StaticQuotaName.AI_CUSTOM_CONFIGS]:{name:"Custom AI Configuration",value:e,triggers:[]}});var J=-1,dI={features:[],quotas:{usage:{monthly:{...Ua(J),...qa(200),...Na(0)},static:{...Ra(J),...Ea(2e3),...Oa(5),...Ca(5),...Pa(0),...La(10),...Ba(0)}},constant:{...ka(1),...Da(0)}},plan:{type:Pt.PlanType.FREE,usesInvoicing:!1,model:Pt.PlanModel.PER_USER}},mi={features:[],quotas:{usage:{monthly:{...Ua(J),...qa(J),...Na(0)},static:{...Ea(J),...Ra(J),...Oa(20),...Ca(J),...Pa(0),...La(10),...Ba(0)}},constant:{...ka(1),...Da(0)}},plan:{type:Pt.PlanType.FREE,usesInvoicing:!1,model:Pt.PlanModel.PER_USER}},fI={features:[],quotas:{usage:{monthly:{...Ua(J),...qa(J),...Na(J)},static:{...Ra(J),...Ea(J),...Oa(J),...Ca(J),...Pa(J),...La(J),...Ba(J)}},constant:{...ka(J),...Da(J)}},plan:{type:Pt.PlanType.FREE,usesInvoicing:!1,model:Pt.PlanModel.PER_USER}};var Ma={};T(Ma,{getLicenseVersion:()=>mI,getProVersion:()=>pp});var Ht=require("@budibase/backend-core"),Mn=F(require("fs")),cp=F(require("path")),mI=()=>{if(Ht.env.isDev()){let e="dev-version.txt",t=cp.default.join(Ht.objectStore.budibaseTempDir(),e);if(Mn.default.existsSync(t))return Mn.default.readFileSync(t,"utf8");{let r=Ht.utils.newid();return Mn.default.writeFileSync(t,r),r}}else return pp()},pp=()=>{let e=Ht.env.VERSION;if(!e)throw new Error("No budibase pro version was specified");return e};var Ur={};T(Ur,{searchTable:()=>gI});var Zt=require("@budibase/types"),lp=require("@budibase/backend-core");function gI(){return{type:"table",sourceType:Zt.TableSourceType.INTERNAL,name:Zt.AUDIT_LOG_TYPE,sourceId:lp.SQS_DATASOURCE_INTERNAL,primary:["_id"],schema:{metadata:{name:"metadata",type:Zt.FieldType.JSON},fallback:{name:"fallback",type:Zt.FieldType.JSON}}}}var st=9;var hI=new Date(864e13).toISOString(),yI=1e3*60*60*24;async function Gn(e){let r=(await Ke.getCachedLicense()).quotas?.[dp.QuotaType.CONSTANT]?.[e]?.value||0;return r===Te.UNLIMITED?new Date(hI).toISOString():new Date(new Date().getTime()-yI*r).toISOString()}async function mp(){return Gn(fp.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS)}var gi=`${H.db.DocumentType.APP_BACKUP}${H.db.SEPARATOR}`;async function bI(e,t,r={}){let a=await mp(),n=H.db.getProdAppID(e),s=n,o=n;if(t.trigger&&t.type){let i=`${H.db.SEPARATOR}${t.trigger}`;i+=`${H.db.SEPARATOR}${t.type}`,s+=i,o+=i}return(!t.startDate||t.startDate<a)&&(t.startDate=a),t.startDate&&(o+=`${H.db.SEPARATOR}${t.startDate}`),t.endDate&&(s+=`${H.db.SEPARATOR}${t.endDate}`),{...r,descending:!0,startkey:`${gi}${s}${H.db.UNICODE_MAX}`,endkey:`${gi}${o}`}}async function gp(e,t){try{let r=H.db.getQueryIndex(H.db.ViewName.APP_BACKUP_BY_TRIGGER);return await e.query(r,t)}catch(r){if(r!=null&&r.error==="not_found")return await up(),gp(e,t);throw r}}function hp(e,t){return`${gi}${e}${H.db.SEPARATOR}${t}`}async function AI(e,t={}){let r=H.tenancy.getGlobalDB(),a,n=t.limit||9,s=await bI(e,t,{include_docs:!0,limit:n+1});t.page&&(s.startkey=t.page),!t.trigger||!t.type?a=await r.allDocs(s):a=await gp(r,s);let o=Ta(a,{paginate:t.paginate,pageSize:n}),i=[...new Set(o.data.filter(d=>d.createdBy).map(d=>d.createdBy))],u=await H.users.bulkGetGlobalUsersById(i,{cleanup:!0});for(let d of u)for(let f of o.data)d?._id===f.createdBy&&(f.createdBy=d);return o}async function vI(e,t={}){let r=H.tenancy.getGlobalDB(),a=H.db.getProdAppID(e.appId),n=hp(a,e.timestamp),s={...e,_id:n,appId:a,name:e.name};return s._id=t.docId||s._id,s._rev=t.docRev||s._rev,t.filename&&(s.filename=t.filename),e.createdBy&&(s.createdBy=H.db.getGlobalIDFromUserMetadataID(e.createdBy)),await r.put(s)}async function _I(e,t){let r=H.tenancy.getGlobalDB(),a=await r.get(e);return a.name=t,await r.put(a)}async function II(e){let t=H.tenancy.getGlobalDB(),r=await t.get(e);await t.remove(r._id,r._rev)}async function wI(e){return await H.tenancy.getGlobalDB().get(e)}var zt={};T(zt,{get:()=>xI,getCacheEnvVarID:()=>Ap,getEnvVarID:()=>Fn,update:()=>TI});var Ye=require("@budibase/backend-core"),bp=F(require("lru-cache")),SI=1e3,yp=new bp.default({max:SI});function Fn(){return Ye.StaticDatabases.GLOBAL.docs.environmentVariables}function Ap(e){return`${Ye.tenancy.getTenantId()}/${Fn()}/${e||""}`}async function xI(){let e=Fn(),t=Ye.tenancy.getGlobalDB(),r,a=!1;try{r=await t.get(e)}catch(i){if(i.status==404)a=!0;else throw i}let n=Ap(r?._rev),s=yp.get(n);if(s)return s;let o;return!a&&r?o={...r,variables:JSON.parse(Ye.encryption.decrypt(r.variables,Ye.encryption.SecretOption.ENCRYPTION))}:o={_id:e,variables:{}},yp.set(n,o),o}async function TI(e){let t=Fn();return await Ye.tenancy.getGlobalDB().put({_id:e._id||t,_rev:e._rev||void 0,variables:Ye.encryption.encrypt(JSON.stringify(e.variables),Ye.encryption.SecretOption.ENCRYPTION)})}var Qn=new si(M.env.ACCOUNT_PORTAL_URL),$n=async e=>{try{let t=await e.json();if(t.message)return t.message}catch{}try{let t=await e.text();if(t)return t}catch{}},vp=async e=>{let t,r;if(M.env.SELF_HOSTED){if(t=await De.get(),!t.licenseKey)return;r={[M.constants.Header.LICENSE_KEY]:t.licenseKey}}else{let a=M.tenancy.getTenantId();r={[M.constants.Header.API_KEY]:M.env.ACCOUNT_PORTAL_API_KEY,[M.constants.Header.TENANT_ID]:a}}return e(r)},_p=async()=>vp(async e=>{let t=await at.getQuotaUsage();if(t.usageQuota.users==null){let i=await M.users.getUserCount();console.info(`Syncing user count quota to ${i}`),t.usageQuota.users=i,await at.setUsage(i,jn.StaticQuotaName.USERS,jn.QuotaUsageType.STATIC)}let r=await M.installation.getInstallFromDB(),a=M.tenancy.getTenantId(),n=await M.events.identification.getUniqueTenantId(a),s=Ma.getProVersion(),o={quotaUsage:t,tenantId:a,install:{id:r.installId,tenantId:n,version:s}};try{let i=await Qn.post("/api/license",{headers:{...e},body:o});if(i.status===404||i.status===403)return;if(i.status!==200){let u=await $n(i);throw new M.HTTPError(`Error getting license: ${u}`,i.status)}return i.json()}catch(i){if(M.env.DISABLE_ACCOUNT_PORTAL)return;throw i}});M.env.isJest()&&(_p=jest.fn());var qr=_p;async function hi(e){let t;if(!M.env.INTERNAL_API_KEY)throw new Error("getLicenseFromKey requires INTERNAL_API_KEY to be set");try{t=await Qn.get(`/api/license/${e}`,{headers:{[M.constants.Header.API_KEY]:M.env.INTERNAL_API_KEY}})}catch(r){if(M.env.DISABLE_ACCOUNT_PORTAL)return;throw r}if(!(t.status===404||t.status===403)){if(t.status!==200){let r=await $n(t);throw new M.HTTPError(`Error getting license: ${r}`,t.status)}return t.json()}}var EI=e=>vp(async t=>{let r=await Qn.post("/api/license/usage/triggered",{headers:{...t},body:e});if(r.status!==200){let a=await $n(r);M.logging.logAlert(`Error triggering quota usage: ${a}`)}}),yi=async e=>{let t=await M.installation.getInstall(),r={installVersion:t.version,installId:t.installId},a=await Qn.post("/api/license/activate",{headers:{[M.constants.Header.LICENSE_KEY]:e},body:r});if(a.status===403)throw new M.HTTPError("Invalid license key",400);if(a.status===409)throw new M.HTTPError("License key has already been activated",409);if(a.status!==200){let n=await $n(a);throw new M.HTTPError(`Error activating license key: ${n}`,a.status)}return a.json()};var Xi=require("@budibase/backend-core");var os={};T(os,{activateOfflineLicenseToken:()=>lO,deleteOfflineLicenseToken:()=>dO,dev:()=>pn,enrichLicense:()=>fm,getIdentifier:()=>Hi,getIdentifierBase64:()=>fO,getIdentifierFromBase64:()=>mO,getOfflineLicense:()=>Zi,getOfflineLicenseToken:()=>pm,signing:()=>Qa,verifyExpiry:()=>lm,verifyInstallation:()=>dm});var Qa={};T(Qa,{sign:()=>OI,verifyLicenseToken:()=>ja});var bi=F(require("jsonwebtoken")),RI=`-----BEGIN PUBLIC KEY-----
|
|
29
29
|
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvz3jePLCFBXZ19c8Dpkv
|
|
30
30
|
XtSgOhKFOcvQdo/LV0KJRUzQWDPWuO4ILtBtnqhjtIzZH4CH0qCYBet5L6Qr4CM1
|
|
31
31
|
l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
|
|
@@ -34,17 +34,24 @@ l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
|
|
|
34
34
|
d/o3ZWE1TTj1zYwlCLN5qRKr3hU8nC3xEYNEbkB9SfTRaOq9Q7P8WmfLkoCPm3pR
|
|
35
35
|
mwIDAQAB
|
|
36
36
|
-----END PUBLIC KEY-----
|
|
37
|
-
`;function Fr(e){return ao.default.verify(e,jI,{algorithms:["RS256"]})}function WI(e,t){return ao.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}var Gn={};S(Gn,{getFeatures:()=>oo});var p=require("@budibase/types");var $I={[p.PlanType.FREE]:[...pe.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]},VI={[p.PlanType.FREE]:[...pe.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 oo(e,t){let r=[];function n(a){let o=a[t];if(!o)throw new Error(`Features do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case p.Hosting.SELF:r=n($I);break;case p.Hosting.CLOUD:r=n(VI);break}return r}var kn={};S(kn,{UNLIMITED:()=>d,getQuotas:()=>so});var B=require("@budibase/types");var l=Ke,ju=pe,d=-1,jr=e=>e*1e6,KI={[B.PlanType.FREE]:{...ju.CLOUD_FREE_LICENSE.quotas},[B.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)}},[B.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...l.queries(d),...l.automations(5e3),...l.budibaseAICredits(jr(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)}},[B.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...l.queries(d),...l.automations(5e3),...l.budibaseAICredits(jr(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)}},[B.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)}},[B.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)}},[B.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)}},[B.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(jr(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)}},[B.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(jr(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)}},[B.PlanType.ENTERPRISE]:{usage:{monthly:{...l.queries(d),...l.automations(d),...l.budibaseAICredits(jr(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)}}},HI={[B.PlanType.FREE]:{...ju.SELF_FREE_LICENSE.quotas},[B.PlanType.PREMIUM]:void 0,[B.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)}},[B.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)}},[B.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)}},[B.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)}},[B.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)}},[B.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)}},[B.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)}},[B.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 so(e,t){let r;function n(a){let o=a[t];if(!o)throw new Error(`Quotas do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case B.Hosting.SELF:r=n(HI);break;case B.Hosting.CLOUD:r=n(KI);break}return JSON.parse(JSON.stringify(r))}var Wt={};S(Wt,{appExists:()=>YI,encoding:()=>jt});var Wu=require("@budibase/backend-core");async function YI(e){return(await Wu.db.getAllApps({all:!0,idsOnly:!0})).includes(e)}var jt={};S(jt,{base64ToObject:()=>zI,objectToBase64:()=>JI});function JI(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}function zI(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}var xd=require("@budibase/types"),nr=require("@budibase/backend-core"),Td=C(sl()),Pd=C(Do());async function _x(e){await be.save({offlineLicenseToken:e}),await wt()}async function xx(){await be.save({offlineLicenseToken:void 0}),await wt()}async function Cd(){return(await be.get()).offlineLicenseToken}async function Bo(){let t=(await nr.installation.getInstall()).installId,r=nr.context.getTenantId(),n=await nr.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:n}}async function Tx(){let e=await Bo();return jt.objectToBase64(e)}function Px(e){return jt.base64ToObject(e)}function Od(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 Ld(e){let t=await Bo();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}function qd(e){let t=e.plan.type,r=xd.Hosting.SELF,n=oo(r,t),a=so(r,t);return e.features=(0,Td.default)(e.features,n),e.quotas=(0,Pd.default)(e.quotas,a),e}async function No(){try{let e=await Cd();if(e){let t=await Fr(e);return Od(t),await Ld(t),qd(t)}}catch(e){console.error("Error retrieving offline license",e)}}var pn={};S(pn,{deleteDevLicense:()=>Ux,getOfflineLicense:()=>Lx,writeDevLicenseToDisk:()=>qx});var Ud=require("@budibase/backend-core"),Go=require("path"),Dd=require("os"),vt=C(require("fs"));var Cx=Ud.env.isTest()?".budibase-test":".budibase",Mo=(0,Go.join)((0,Dd.tmpdir)(),Cx),Ox="dev_license.txt",un=(0,Go.join)(Mo,Ox);if(!vt.default.existsSync(Mo))try{vt.default.mkdirSync(Mo)}catch{}function Lx(){try{if(vt.default.existsSync(un)){let e=vt.default.readFileSync(un,{encoding:"utf-8"});return Fr(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}function qx(e){console.log(`Writing license to: ${un}`),vt.default.writeFileSync(un,e,{encoding:"utf-8"})}function Ux(){vt.default.rmSync(un,{force:!0})}var Fo=async()=>{if(ko.env.OFFLINE_MODE)return No();let e=await Qt();return e||(e=pn.getOfflineLicense()),e},Qo=e=>ro(e),jo=()=>ko.env.SELF_HOSTED?pe.SELF_FREE_LICENSE:pe.CLOUD_FREE_LICENSE;var $o={};S($o,{activateLicenseKey:()=>Dx,deleteLicenseKey:()=>Bx,getLicenseKey:()=>Wo});async function Dx(e){await no(e),await be.save({licenseKey:e}),await wt()}async function Wo(){return(await be.get()).licenseKey}async function Bx(){await be.save({licenseKey:void 0}),await wt()}var Et=require("@budibase/backend-core"),ra=C(require("dd-trace")),Bd=3600,wt=async()=>{await Gd(),await Md()},Nd=async(e,t)=>{let{populateLicense:r=Fo,populateFreeLicense:n=jo}=t||{};return await ra.default.trace("getCachedLicense",async a=>{let o=Et.context.getLicense();if(o)return a.addTags({foundInContext:!0,features:o.features,plan:o.plan,quotas:o.quotas}),o;let i=Et.tenancy.getTenantId(),s=await ja(),c=await s.get(i);return a.addTags({tenantId:i,foundInCache:!!c}),c?(a.addTags({foundInCache:!0,refreshedAt:c.refreshedAt,features:c.features,plan:c.plan,quotas:c.quotas}),c):(c=await ra.default.trace("populateLicense",async()=>await r(i)),a.addTags({populatedLicense:!!c}),c||(c=ra.default.trace("populateFreeLicense",()=>n(e,i)),a.addTags({populatedFreeLicense:!!c})),c.refreshedAt=new Date().toISOString(),a.addTags({refreshedAt:c.refreshedAt,features:c.features,plan:c.plan,quotas:c.quotas,expirySeconds:Bd}),await s.store(i,c,Bd),c)})};Et.env.isJest()&&(Nd=jest.fn());var Md=Nd,Gd=async()=>{let e=Et.tenancy.getTenantId();await(await ja()).delete(e)};async function Y(e,t){Array.isArray(e)||(e=[e]),t||(t=await xe.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}async function na(e,t){if(!await Y(e,t))throw new He.FeatureDisabledError(`${e} is not currently enabled`,e)}async function Vo(e,t){if(!await Y(e,t)){let r=e.join(", ");throw new He.FeatureDisabledError(`${r} are not currently enabled`,r)}}function le(e){return async(...t)=>(await na(H.Feature.APP_BACKUPS),e(...t))}async function Ko(){return Y(H.Feature.APP_BACKUPS)}async function Ho(){return Y(H.Feature.BRANDING)}async function kd(){return Y(H.Feature.ENFORCEABLE_SSO)}async function Mx(){return Y(H.Feature.SYNC_AUTOMATIONS)}async function Gx(){return Y(H.Feature.TRIGGER_AUTOMATION_RUN)}async function Rt(){return Y(H.Feature.APP_BUILDERS)}async function aa(){return Y(H.Feature.AUDIT_LOGS)}async function Yo(){return Y(H.Feature.USER_GROUPS)}function kx(){return Y(H.Feature.PWA)}async function Ye(){return Y(H.Feature.EXPANDED_PUBLIC_API)}async function Fx(e){if(He.env.ENABLE_SSO_MAINTENANCE_MODE||!await kd())return!1;let r;return e?.config?r=e.config:r=await He.configs.getSettingsConfig(),!!r.isSSOEnforced}var Jo=async()=>{let e=H.Feature.SCIM,t=await Y(e),r=await He.configs.getSCIMConfig();if(!t||!r?.enabled)throw new He.FeatureDisabledError(`${e} is not currently enabled`,e);return!0};async function Qx(){return Y(H.Feature.VIEW_PERMISSIONS)}async function jx(){return Y(H.Feature.VIEW_READONLY_COLUMNS)}async function cn(){return Y(H.Feature.BUDIBASE_AI)}async function zo(){return Y(H.Feature.AI_CUSTOM_CONFIGS)}var Wx={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 $x(e){return await Ho()?{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}:Wx}var Xo={};S(Xo,{enrichAIConfig:()=>Kx});var Vx="budibase_ai";async function Kx(e){return await cn()&&(e.config[Vx]={provider:"OpenAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),isBudibaseAI:!0,defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-4o-mini",apiKey:process.env.OPENAI_API_KEY,name:"Budibase AI"}),e}var Fe={};S(Fe,{addApp:()=>Xx,addAutomation:()=>aT,addCustomAIConfig:()=>oT,addGroup:()=>es,addPlugin:()=>rs,addRow:()=>eT,addRows:()=>rT,addUsers:()=>ia,bustCache:()=>Ha,decrement:()=>Pe,decrementMany:()=>xt,getCurrentUsageValues:()=>Au,getLicensedQuota:()=>Qd,getQuotaUsage:()=>At,increment:()=>fe,incrementBudibaseAICredits:()=>os,incrementMany:()=>_t,removeApp:()=>Zx,removeCustomAIConfig:()=>sT,removeCustomAIConfigs:()=>iT,removeGroup:()=>ts,removePlugin:()=>ns,removeRow:()=>tT,removeRows:()=>nT,removeUsers:()=>ir,set:()=>Zo,setAllUsage:()=>Ja,setAppUsageValue:()=>Ya,setUsage:()=>gu,setUsagePerApp:()=>mu,updatePluginCount:()=>as,updateUsage:()=>ar,usageLimitIsExceeded:()=>zx,utils:()=>vr});var J=require("@budibase/types");var de=require("@budibase/backend-core");var fe=(e,t,r)=>Fd({change:1,name:e,type:t,opts:r}),_t=e=>Fd(e),Fd=async e=>{let t=Array.isArray(e)?e:[e];await ar(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 ar(t.map(n=>({usageChange:n.change,name:n.name,type:n.type,opts:{dryRun:!1,valueFn:n.opts?.valueFn,suppressErrorLog:n.opts?.suppressErrorLog,id:n.opts?.id}}))),r[0]},Pe=(e,t,r={})=>ar({usageChange:-1,name:e,type:t,opts:r}),xt=e=>{let t=Array.isArray(e)?e:[e];return ar(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},Zo=async(e,t,r)=>De.setUsage(r,e,t),Hx=(e,t,r)=>{if(e==J.QuotaUsageType.STATIC){let n=r.usageQuota.triggers;return n?n[t]||{}:{}}else{let n=De.utils.getCurrentMonthString(),a=r.monthly[n].triggers;return a?a[t]||{}:{}}},Yx=async(e,t,r,n)=>{try{await de.locks.doWithLock({type:J.LockType.TRY_ONCE,name:J.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let a={percentage:r,name:t.name};n&&(a.resetDate=n),await ot.triggerQuota(a)})}catch(a){de.logging.logAlert("Error triggering quota",a)}},Jx=async(e,t,r,n)=>{let a=await At(),o=e===J.QuotaUsageType.MONTHLY?a.quotaReset:void 0,i=await Hx(e,t,a),s=n.triggers,c=r/n.value*100;c>100&&(c=100);for(let[f,m]of s.entries())if(c>=m&&n.value!==Ke.UNLIMITED){if(!i[m]){i[m]=new Date().toISOString();let y=s[f+1]||100;(!(c>=y)||c===m)&&await Yx(t,n,c,o)}}else i[m]=void 0;return i},ar=async e=>{let t=de.tenancy.getTenantId(),r=Array.isArray(e)?e:[e],n=null,a,o=[],i={},s={},c={},f={};for(let g of r){try{n=de.context.getAppId()}catch{}if(J.APP_QUOTA_NAMES.includes(g.name)&&!n)throw new Error("App context required for quota update");try{a=await Qd(J.QuotaType.USAGE,g.name,g.type),o.push(a);let{total:h,app:v,breakdown:P}=await De.getCurrentUsageValues(g.type,g.name,g.opts?.id);h+=g.usageChange,v!=null&&(v+=g.usageChange),P!=null&&(P+=g.usageChange);let _={};if(g.opts?.dryRun||(_=await Jx(g.type,g.name,h,a),f={...f,[g.name]:_}),a.value!==Ke.UNLIMITED&&h>a.value&&g.usageChange>0)throw new de.UsageLimitError(`Licensed ${a.name} of ${a.value} has been exceeded`,a.name);if(h=Math.max(0,h),v&&(v=Math.max(0,v)),P&&(P=Math.max(0,P),c={...c,[g.name]:P}),!g.opts?.dryRun){let E=g.opts?.valueFn;E&&(h=await E(),v=h),i={...i,[g.name]:h},s={...s,[g.name]:v}}}catch(h){throw g.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${g.name}`,h),h}}let m=r.filter(g=>!g.opts?.dryRun).map(g=>({name:g.name,type:g.type,values:{total:i[g.name],app:s[g.name],breakdown:c[g.name],triggers:f[g.name]},opts:{...g.opts,tenantId:t}}));m.length>0&&await De.setAllUsage(m)},Qd=async(e,t,r)=>{let n=await xe.getCachedLicense();if(!n){let a=de.tenancy.getTenantId();throw new Error("License not found for tenant id "+a)}if(r&&(0,J.isStaticQuota)(e,r,t))return n.quotas[e][r][t];if(r&&(0,J.isMonthlyQuota)(e,r,t))return n.quotas[e][r][t];if((0,J.isConstantQuota)(e,t))return n.quotas[e][t];throw new Error("Invalid quota type")},zx=async(e,t)=>{try{return await ar({usageChange:1,name:e,type:t,opts:{dryRun:!0}}),!1}catch(r){if(r.code===de.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw r}};var or=require("@budibase/types"),jd=require("@budibase/backend-core"),Wd=async()=>{let e=await jd.db.getAllApps({dev:!0});return e?e.length:0},Xx=async(e,{appId:t}={})=>fe(or.StaticQuotaName.APPS,or.QuotaUsageType.STATIC,{fn:e,valueFn:Wd,id:t}),Zx=async({appId:e}={})=>Pe(or.StaticQuotaName.APPS,or.QuotaUsageType.STATIC,{valueFn:Wd,id:e});var Ge=require("@budibase/types"),eT=async(e,{tableId:t}={})=>fe(Ge.StaticQuotaName.ROWS,Ge.QuotaUsageType.STATIC,{fn:e,id:t}),tT=async({tableId:e}={})=>Pe(Ge.StaticQuotaName.ROWS,Ge.QuotaUsageType.STATIC,{id:e}),rT=async(e,t,{tableId:r}={})=>_t({change:e,name:Ge.StaticQuotaName.ROWS,type:Ge.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),nT=async(e,{tableId:t}={})=>xt({change:e,name:Ge.StaticQuotaName.ROWS,type:Ge.QuotaUsageType.STATIC,opts:{id:t}});var sa=require("@budibase/types"),aT=async(e,{automationId:t}={})=>fe(sa.MonthlyQuotaName.AUTOMATIONS,sa.QuotaUsageType.MONTHLY,{fn:e,id:t});var sr=require("@budibase/types"),es=async e=>fe(sr.StaticQuotaName.USER_GROUPS,sr.QuotaUsageType.STATIC,{fn:e}),ts=async()=>Pe(sr.StaticQuotaName.USER_GROUPS,sr.QuotaUsageType.STATIC);var ut=require("@budibase/types"),rs=async e=>fe(ut.StaticQuotaName.PLUGINS,ut.QuotaUsageType.STATIC,{fn:e}),ns=async()=>Pe(ut.StaticQuotaName.PLUGINS,ut.QuotaUsageType.STATIC),as=async e=>Zo(ut.StaticQuotaName.PLUGINS,ut.QuotaUsageType.STATIC,e);var ke=require("@budibase/types"),ln=require("@budibase/backend-core");var ia=async(e,t,r)=>{let n=[{change:e,name:ke.StaticQuotaName.USERS,type:ke.QuotaUsageType.STATIC,opts:{fn:r,valueFn:ln.users.getUserCount}}];t>0&&n.push({change:t,name:ke.StaticQuotaName.CREATORS,type:ke.QuotaUsageType.STATIC,opts:{valueFn:ln.users.getCreatorCount}});let a=await _t(n);return await Qt(),a},ir=async(e,t)=>{let r=[{change:e,name:ke.StaticQuotaName.USERS,type:ke.QuotaUsageType.STATIC,opts:{valueFn:ln.users.getUserCount}}];t>0&&r.push({change:t,name:ke.StaticQuotaName.CREATORS,type:ke.QuotaUsageType.STATIC,opts:{valueFn:ln.users.getCreatorCount}}),await xt(r),await Qt()};var Ce=require("@budibase/types"),os=async e=>_t({change:e,name:Ce.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:Ce.QuotaUsageType.MONTHLY}),oT=async()=>fe(Ce.StaticQuotaName.AI_CUSTOM_CONFIGS,Ce.QuotaUsageType.STATIC),sT=async()=>Pe(Ce.StaticQuotaName.AI_CUSTOM_CONFIGS,Ce.QuotaUsageType.STATIC),iT=async e=>xt({change:e,name:Ce.StaticQuotaName.AI_CUSTOM_CONFIGS,type:Ce.QuotaUsageType.STATIC});var Je={};S(Je,{addAppBuilder:()=>dT,db:()=>Qe,removeAppBuilder:()=>fT});var fn=require("@budibase/backend-core");var M={};S(M,{addAppBuilder:()=>cs,addUsers:()=>is,adjustGroupCreatorsQuotas:()=>lT,cleanupApp:()=>cT,enrichUserRolesFromGroups:()=>pT,fetch:()=>dn,get:()=>Pt,getBulk:()=>zd,getGroupBuilderAppIds:()=>Jd,getGroupRoleId:()=>uT,remove:()=>ss,removeAppBuilder:()=>ls,removeUsers:()=>us,save:()=>ur,updateGroupApps:()=>ps});var R=require("@budibase/backend-core");var $d=require("@budibase/backend-core"),ua=class extends $d.HTTPError{constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function Hd(e,t){try{let r=[];for(let s of e)if(s.roles){let c=s.roles[R.db.getProdAppID(t)];c&&r.push(c)}let n=await Promise.all(r.map(async s=>({[s]:await R.roles.roleToNumber(s)}))),a,o,i={};n.forEach(s=>{let[c,f]=Object.entries(s)[0];i[c]={roleId:c,roleNum:f}});for(let{roleId:s,roleNum:c}of Object.values(i))(o===void 0||c>o)&&(o=c,a=s);return a}catch(r){throw R.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}async function Yd(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await D.getBulk(e,{enriched:!1}),t}async function Jd(e,t){if(!e.userGroups)return[];let r=await Yd(e.userGroups,t?.groups),n=t?.appId?R.db.getProdAppID(t?.appId):null,a=[];for(let o of r){let i=o.builder?.apps;n&&i?.includes(n)?a.push(n):n||(a=a.concat(i||[]))}return[...new Set(a)]}async function uT(e,t,r){if(!e.userGroups)return null;let n=await Yd(e.userGroups,r?.groups),a=R.db.getProdAppID(t);return e.roles?.[a]?e.roles[a]:(n=n.filter(o=>o?.roles?Object.keys(o.roles).includes(a):!1),await Hd(n,t))}async function pT(e){if(!e||!e.userGroups)return e;let t=await zd(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 R.context.doInAppContext(a,async()=>{if(e.roles[a])return;let o=await Hd(t,a);o&&(e.roles[a]=o)});let n=await Jd(e,{groups:t});if(n.length&&!e.builder?.global){let a=e.builder?.apps||[];e.builder={apps:a.concat(n)}}return e}async function dn(){return await D.fetch()}async function Pt(e){return await D.get(e)}async function zd(e,t={enriched:!0}){return await D.getBulk(e,t)}async function Vd(e){if(await D.getByName(e))throw new ua(e)}async function Kd(e){let t=await D.getGroupUsers(e._id);if(!t.length)return 0;let n=await R.tenancy.getGlobalDB().getMultiple(t.map(o=>o._id));return(await R.userUtils.creatorsInList(n)).filter(o=>o).length}async function ur(e){let t=[],r=!e._id,n=0;if(delete e.users,!e._id)e._id=D.generateUserGroupID(),await Vd(e.name),t.push(R.events.group.created(e));else{let o=await D.get(e._id);if(o.name!==e.name&&await Vd(e.name),t.push(R.events.group.updated(e)),JSON.stringify(o.roles)!==JSON.stringify(e.roles)){let i=o.users?.length||0,s=0;i>0&&(s=await Kd(o)),Object.values(e.roles).includes("CREATOR")?n=i-s:n=-i,t.push(R.events.group.permissionsEdited(e))}}await Promise.all(t);let a=()=>D.save(e);if(r)return await es(a);{let o=await a();if(n>0)await ia(0,n);else if(n<0){let i=await Kd(e),s=Math.abs(n)-i;s>0&&await ir(0,s)}return o}}async function ss(e,t){let r;try{r=await D.get(e)}catch{throw new Error("Group not found")}let n=Object.values(r.roles||{}).includes("CREATOR"),a=()=>{};if(n){let i=R.tenancy.getGlobalDB(),s=await D.getGroupUsers(e),f=(await Promise.all(s.map(h=>i.get(h._id)))).map(h=>({...h,userGroups:h.userGroups.filter(v=>v!==e)})),g=(await R.userUtils.creatorsInList(f)).filter(h=>h).length,y=s.length-g;y&&(a=()=>ir(0,y))}let o=await D.destroy(e,t);return await R.events.group.deleted(r),await ts(),await a(),o}async function is(e,t){let r=await D.get(e),n=await R.users.bulkGetGlobalUsersById(t),a=[];for(let c of n)c.userGroups||(c.userGroups=[]),c.userGroups.includes(e)||a.push(c);if(!a.length)return a;let o=a.map(c=>({...c,userGroups:[...c?.userGroups||[],e]}));if(await R.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes("CREATOR")){let f=(await R.userUtils.creatorsInList(a)).filter(g=>g).length,m=a.length-f;m&&await ia(0,m)}let s=[];for(let c of t)s.push(R.cache.user.invalidateUser(c));return await Promise.all(s),await R.events.group.usersAdded(o.length,r),o}async function us(e,t){let r=await D.get(e),n=await R.users.bulkGetGlobalUsersById(t),a=[];for(let s of n){if(!s.userGroups||!s.userGroups.includes(e))continue;let c=s.userGroups.indexOf(e);s.userGroups.splice(c,1),a.push(s)}if(await R.users.bulkUpdateGlobalUsers(a),Object.values(r.roles||{}).includes("CREATOR")){let c=(await R.userUtils.creatorsInList(a)).filter(m=>m).length,f=a.length-c;f&&await ir(0,f)}let i=[];for(let s of t)i.push(R.cache.user.invalidateUser(s));return await Promise.all(i),a.length&&await R.events.group.usersDeleted(a.length,r),a}async function ps(e,t){let r=await Pt(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 ur(r)}async function cT(e){let t=await dn(),r=[];for(let n of t)!n.roles||!n.roles[e]||(delete n.roles[e],r.push(n));return await D.bulkSave(r)}async function cs(e,t){if(!await Rt())throw new Error("Feature not enabled, please check license");let r=R.db.getProdAppID(t),n=await Pt(e);n.builder??={apps:[]},n.builder.apps.includes(t)||(n.builder.apps.push(r),await ur(n))}async function ls(e,t){if(!await Rt())throw new Error("Feature not enabled, please check license");let r=R.db.getProdAppID(t),n=await Pt(e);n.builder?.apps.includes(t)&&(n.builder.apps=n.builder.apps.filter(a=>a!==r),await ur(n))}async function lT(){if(!await Yo()){let e=R.tenancy.getGlobalDB(),r=(await dn()||[]).filter(n=>Object.values(n?.roles||{}).includes("CREATOR"));for(let n of r){let a=await D.getGroupUsers(n._id),i=(await Promise.all(a.map(m=>e.get(m._id)))).map(m=>({...m,userGroups:m.userGroups.filter(g=>g!==n._id)})),c=(await R.userUtils.creatorsInList(i)).filter(m=>m).length,f=a.length-c;await D.save({...n,roles:{}}),f&&await ir(0,f)}}}fn.users.UserDB.init(Fe,M,we);var Qe=fn.users.UserDB;async function dT(e,t){if(!await Rt())throw new Error("Feature not enabled, please check license");await fn.users.addAppBuilder(e,t)}async function fT(e,t){if(!await Rt())throw new Error("Feature not enabled, please check license");await fn.users.removeAppBuilder(e,t)}var ca={};S(ca,{logs:()=>bs});var bs={};S(bs,{logSearch:()=>wT,oldestLogDate:()=>af,storeLog:()=>vT});var nf=require("@budibase/types"),pa=require("@budibase/backend-core");var pt=require("@budibase/types");var K=require("@budibase/backend-core");var Xd=require("@budibase/backend-core");async function Zd(e,t){let r,n=5,a=!1,o,i=!0;for(;n>0;n--)try{i?o=await e():o=await exports.randomDelay(e),a=!0;break}catch(s){r=s}return a||Xd.logging.logWarn(`Failed to backoff: ${t}`,r),o}var{SEPARATOR:ze,UNICODE_MAX:gT,DocumentType:ef,AutomationViewMode:ds,ViewName:mT,getQueryIndex:yT}=K.db,AT=new Date(0).toISOString(),hT=100,fs=async()=>Un(pt.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS);function tf(e,t,{status:r,automationId:n}={},a={}){let o=n?`${n}${ze}`:"",i=r?`${r}${ze}`:"",s;return r&&n?s=`${ds.ALL}${ze}${i}${o}`:r?s=`${ds.STATUS}${ze}${i}`:n?s=`${ds.AUTOMATION}${ze}${o}`:s=`${ef.AUTOMATION_LOG}${ze}`,{...a,descending:!0,startkey:`${s}${t}${gT}`,endkey:`${s}${e}`}}function gs(e){let t=pt.AutomationStatus.SUCCESS,r=!0;for(let n of e.steps){let a=n.outputs?.status?.toLowerCase(),o=a==="stopped_error";if(r&&!o){r=!1;continue}if(o){t=pt.AutomationStatus.STOPPED_ERROR;break}else if(n.outputs?.success){if(a==="stopped"){t=pt.AutomationStatus.STOPPED;break}}else{t=pt.AutomationStatus.ERROR;break}}return t}function bT(e,t,r){return`${ef.AUTOMATION_LOG}${ze}${e}${ze}${r}${ze}${t}`}async function ms(e,t,r={docs:!0}){let n=K.context.getProdAppDB();await n.exists()||(n=K.context.getDevAppDB());let a={status:r.status},o=r?.limit?r.limit:r?.paginate?9+1:void 0,i=tf(e,t,a,{include_docs:r.docs,limit:o});r?.page&&(i.startkey=r.page);let s=await n.allDocs(i);return Rr(s,{paginate:r?.paginate,pageSize:9})}async function ys(e,t,r={}){let n=K.context.getProdAppDB();await n.exists()||(n=K.context.getDevAppDB());let a;try{let o={automationId:r?.automationId,status:r?.status},i=tf(e,t,o,{include_docs:!0,limit:9+1});r?.page&&(i.startkey=r.page),a=await n.query(yT(mT.AUTOMATION_LOGS),i)}catch(o){if(o!=null&&(o.name==="not_found"||o.error==="not_found"))return await Tu(),ys(e,t,r);throw o}return Rr(a,{paginate:!0,pageSize:9})}async function rf(e,t){let r=K.context.getProdAppDB(),n=e._id,a=e.name,o=gs(t),i=new Date().toISOString(),s=bT(i,o,n),c={...t,automationId:n,status:o,automationName:a,createdAt:i,_id:s};return await r.put(c),s}async function As(e,{clearing:t}={clearing:!1}){let r=K.context.getProdAppDB();await Zd(async()=>{let n=await r.get(K.db.DocumentType.APP_METADATA);for(let a of e){let o=a.split(K.db.SEPARATOR),i=`${o[o.length-3]}${K.db.SEPARATOR}${o[o.length-2]}`,s={};n.automationErrors&&(s=n.automationErrors),Array.isArray(s[i])||(s[i]=[]);let c=s[i].indexOf(a);t&&c!==-1?s[i].splice(c,1):s[i].push(a),s[i].length===0&&delete s[i],n.automationErrors=s}await r.put(n),await K.cache.app.invalidateAppMetadata(n.appId,n)},"Failed to update app metadata with automation log error")}async function IT(){let e=await fs();try{return await ms(AT,e,{docs:!1,paginate:!1,limit:hT})}catch{return{data:[],hasNextPage:!1}}}async function hs(){let e=K.context.getProdAppDB();try{let t=await IT();if(!t.data||t.data.length===0)return;let r=t.data.map(a=>({_id:a.id,_rev:a.value.rev,_deleted:!0})),n=t.data.filter(a=>{let o=a.id.split(K.db.SEPARATOR);return o[o.length-1]===pt.AutomationStatus.ERROR}).map(a=>a.id);await e.bulkDocs(r),n.length&&await As(n,{clearing:!0})}catch(t){K.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}var af=fs;async function ST(e,t,r,n){let a,o=new Date().toISOString(),i=await af();return(!e||e<i)&&(e=i),r||t?a=await ys(e,o,{automationId:r,status:t,page:n}):a=await ms(e,o,{status:t,page:n,docs:!0,paginate:!0}),a}async function wT(e){return await hs(),await ST(e.startDate,e.status,e.automationId,e.page)}async function vT(e,t){if(!pa.db.isProdAppID(pa.context.getAppId()))return;let r=gs(t),n=await rf(e,t);r===nf.AutomationStatus.ERROR&&await As([n]),await hs()}var la={};S(la,{checkPluginQuotas:()=>_T,deletePlugin:()=>RT,storePlugin:()=>ET});var pf=require("@budibase/types"),j=require("@budibase/backend-core");var of=C(require("fs")),sf=require("path");function uf(e,t){return of.default.readFileSync((0,sf.join)(e,t),"utf8")}async function ET(metadata,directory,source){let db=j.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=j.objectStore.getPluginS3Dir(name),files=await j.objectStore.uploadDirectory(j.objectStore.ObjectStoreBuckets.PLUGINS,directory,bucketPath),jsFile=files.find(e=>e.name.endsWith(".js")),iconFile=files.find(e=>e.name.endsWith(".svg"));if(!jsFile)throw new Error("Plugin missing .js file.");if(metadata.schema.type===pf.PluginType.DATASOURCE){let js=uf(directory,jsFile.name);try{eval(js)}catch(e){let t=e?.message?e.message:JSON.stringify(e);throw new Error(`JS invalid: ${t}`)}}let iconFileName=iconFile?iconFile.name:null,pluginId=j.db.generatePluginID(name),rev;try{rev=(await db.get(pluginId))._rev}catch(e){rev=void 0}let doc={_id:pluginId,_rev:rev,...metadata,name,version,hash,description,source};iconFileName&&(doc.iconFileName=iconFileName),source&&(doc={...doc,source});let write=async()=>{let e=await db.put(doc);return await j.events.plugin.imported(doc),{...doc,_rev:e.rev}};return rev?await write():await rs(write)}async function RT(e){let t=j.tenancy.getGlobalDB();try{let r=await t.get(e),n=j.objectStore.getPluginS3Dir(r.name);await j.objectStore.deleteFolder(j.objectStore.ObjectStoreBuckets.PLUGINS,n),await t.remove(e,r._rev),await j.events.plugin.deleted(r),await ns()}catch(r){let n=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${n}`)}}async function _T(){let e=j.tenancy.getGlobalDB();try{let r=(await e.allDocs(j.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await as(r)}catch(t){j.logging.logAlert("Unable to retrieve plugins for quota check",t)}}var je={};S(je,{fetch:()=>TT,fetchValues:()=>PT,isEncryptionKeyAvailable:()=>xT,isValid:()=>df,remove:()=>OT,update:()=>CT});var gn=require("@budibase/types"),cf=require("@budibase/backend-core");function xT(){return!!cf.env.ENCRYPTION_KEY}async function TT(){let e=await It.get();return Object.keys(e.variables)}async function PT(e){let r=(await It.get()).variables,n={};for(let[a,o]of Object.entries(r))switch(e){case gn.AppEnvironment.DEVELOPMENT:n[a]=o.development;break;case gn.AppEnvironment.PRODUCTION:default:n[a]=o.production;break}return n}async function lf(e){if(!(await Me.cache.getCachedLicense()).features.includes(gn.Feature.ENVIRONMENT_VARIABLES))throw new Error("User does not have access to environment variables feature.");let r=await It.get();r.variables=e(r.variables),await It.update(r)}async function CT(e,t){if(df(e))await lf(n=>(n[e]=t,n));else throw new Error("Variable name has characters that are not allowed")}async function OT(e){await lf(t=>(delete t[e],t))}function df(e){return/^[a-zA-Z0-9-_]+$/.test(e)}var ct={};S(ct,{definitions:()=>QT,download:()=>FT,fetch:()=>kT,write:()=>MT});var fa=require("@budibase/types");var F=require("@budibase/backend-core"),Oe=require("@budibase/types");var ff=require("memorystream"),gf=new F.sql.Sql(Oe.SqlClient.SQL_LITE);async function LT(e,t,r){let n={operation:Oe.Operation.READ,table:Ft.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:Oe.SortOrder.DESCENDING,type:Oe.SortType.STRING}}},a=gf._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 qT(e){return`${F.DocumentType.AUDIT_LOG}${F.SEPARATOR}${e}${F.SEPARATOR}${F.utils.newid()}`}async function mf(e){e._id||(e._id=qT(e.timestamp)),e.type||(e.type=Oe.AUDIT_LOG_TYPE);try{let r=await F.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){F.logging.logAlert("Failed to write audit log",t)}}async function Is(e,t,r){t||(t=1);let n=F.context.getAuditLogsDB();try{let a=9+1,o=await LT(e,t,a),i=Ft.searchTable(),s=gf.convertJsonStringColumns(i,await n.sql(o.sql,o.bindings)),c;s.length>a&&(c=s.pop());let f={rows:s,hasNextPage:!!c};return f.hasNextPage&&(f.bookmark=t+1),f}catch(a){if(a.status===404&&!r?.isRetry)return await UT(),await hu(),await Is(e,t,{isRetry:!0});throw a}}async function UT(){let e=F.context.getAuditLogsDB(),r=(await e.allDocs(F.db.getDocParams(F.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(n=>n.doc).filter(n=>n&&!n.type).map(n=>({...n,type:Oe.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}function yf(e){let t=F.context.getAuditLogsDB(),r=new ff,n=t.dump(r,{filter:o=>{let i=o;if(!i._id?.startsWith(F.DocumentType.AUDIT_LOG))return!1;let s=!0,c=(f,m)=>{!f||f.length===0||(s=!!(s&&m&&f.includes(m)))};if(c(e.userIds,i.userId),c(e.appIds,i.appId),c(e.events,i.event),(e.startDate||e.endDate)&&(s=s&&i.timestamp>=e.startDate&&i.timestamp<=e.endDate),e.fullSearch){let f=JSON.stringify(o);s=s&&f.includes(e.fullSearch)}return s}}),a=new ff;return r.on("data",o=>{let i=JSON.parse(Buffer.from(o).toString());if(Array.isArray(i.docs)){let s="";for(let c of i.docs)s+=JSON.stringify(c)+`
|
|
38
|
-
`;a.write(s)}}),r.on("end",()=>{a.end()}),{promise:n,stream:a}}var ae=require("@budibase/backend-core");var da=require("@budibase/types"),mn=require("@budibase/string-templates"),yn=require("@budibase/backend-core"),BT=yn.constants.MIN_VALID_DATE.toISOString(),NT=yn.constants.MAX_VALID_DATE.toISOString();function Ss(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||BT,e.endDate=e.endDate||NT),e}async function Af(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(n=>yn.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=Ss(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}function ws(e,t,r){let n={_id:e,status:da.AuditLogResourceStatus.DELETED};switch(t){case"app":n.name=r?.appName;break;case"user":n.email=r?.email;break}return n}function vs(e){let t=(0,mn.findHBSBlocks)(e);for(let r of t){let n=` "${r}"`;e=e.replace(e.includes(n)?n:` ${r}`,""),e=(0,mn.processStringSync)(e,{})}return e}function hf(e,t){let r=da.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let n=(0,mn.processStringSync)(r,t);return n.includes('""')&&(n=vs(r)),n}async function MT(e,t,r){if(!await aa()||!ae.utils.isAudited(e))return;let n=hf(e,t),a=new Date;r?.timestamp&&(a=new Date(r.timestamp));let o={timestamp:a.toISOString(),event:e,name:n,userId:r?.userId||fa.AuditLogSystemUser,metadata:{...t,...r?.hostInfo}},i={};try{if(r?.appId){o.appId=ae.db.getProdAppID(r.appId);let s=await ae.cache.app.getAppMetadata(r.appId);"name"in s&&(i.appName=s.name)}if(r?.userId){let s=await ae.users.getById(r?.userId);i.email=s.email}}catch(s){ae.logging.logAlert("Failed to retrieve fallback information for audit log",s)}return o.fallback=i,await mf(o)}async function GT(e){let t=e.map(s=>s.userId),n=e.filter(s=>s.appId).map(s=>ae.db.getDevAppID(s.appId)),a=await ae.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),o=await ae.db.getAppsByIDs([...new Set(n)]),i=[];for(let s of e){let c=a.find(g=>g?._id===s.userId),f=o.find(g=>ae.db.isSameAppID(g?.appId,s.appId)),m={event:s.event,timestamp:s.timestamp,name:s.name,metadata:s.metadata,user:c||ws(s.userId,"user",s.fallback)};s.appId&&(m.app=f||ws(s.appId,"app",s.fallback)),i.push(m)}return i}async function kT(e){if(!await aa())throw new Error("Audit logs not available - license required.");let t=await Af(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await Is(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await GT(r.rows)}}function FT(e){return e=Ss(e),yf(e)}function QT(){let e=Object.entries(fa.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=vs(r[1]);return t}var ga={};S(ga,{applications:()=>xs,roles:()=>Rs,users:()=>Es});var Es={};S(Es,{roleCheck:()=>WT});function jT(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 WT(e,t){return await Ye()||jT(e,t),e}var Rs={};S(Rs,{assign:()=>$T,unAssign:()=>VT});var An=require("@budibase/backend-core");async function $T(e,t){if(!await Ye())throw new Error("Unable to assign roles - license required.");let r=await Qe.bulkGet(e);for(let n of r){if(t.role&&t.role.roleId){let a=An.db.getProdAppID(t.role.appId);n.roles[a]=t.role.roleId}if(t.appBuilder){let a=An.db.getProdAppID(t.appBuilder.appId),o=n.builder?.apps||[];n.builder={apps:o.concat([a])}}t.builder&&(n.builder={global:!0}),t.admin&&(n.admin={global:!0}),n.roles}await Qe.bulkUpdate(r)}async function VT(e,t){if(!await Ye())throw new Error("Unable to un-assign roles - license required.");let r=await Qe.bulkGet(e);for(let n of r){if(t.role){let a=An.db.getProdAppID(t.role?.appId);n.roles[a]===t.role.roleId&&delete n.roles[a]}if(t.appBuilder&&n.builder?.apps){let a=An.db.getProdAppID(t.appBuilder.appId);n.builder.apps=n.builder.apps.filter(o=>o!==a)}t.builder&&n.builder&&delete n.builder,t.admin&&n.admin&&delete n.admin}}var xs={};S(xs,{buildExportFn:()=>HT,buildImportFn:()=>KT});var _s=require("@budibase/backend-core");function KT(e){return async(t,r)=>{await Ye()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await _s.context.doInAppContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}function HT(e){return async(t,r)=>{await Ye()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:n,excludeRows:a}=t.request.body;await _s.context.doInAppContext(t.params.appId,async()=>{t.request.body={encryptPassword:n,excludeRows:a},t.query.appId=t.params.appId,await e(t),await r()})}}var We=require("@budibase/backend-core"),re=require("@budibase/types");var Ts=require("@budibase/backend-core"),bf;function If(){bf=new Ts.queue.BudibaseQueue(Ts.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}function Ct(){return bf}var Sf=require("path"),wf=C(require("fs"));async function Ps(e,t={}){return Ie.storeAppBackupMetadata(e,t)}function vf(e){let t=new Date().toISOString();switch(e){case re.AppBackupStatus.COMPLETE:case re.AppBackupStatus.FAILED:return{timestamp:t,finishedAt:t};case re.AppBackupStatus.STARTED:return{timestamp:t,startedAt:t};case re.AppBackupStatus.PENDING:return{timestamp:t,createdAt:t}}}async function YT(e,t,r,n){let a=await ma(e);return await Ie.storeAppBackupMetadata({...a,...vf(t),contents:r,status:t,type:re.AppBackupType.BACKUP},{filename:n,docId:e})}async function JT(e,t,r){let n=await ma(e);return await Ie.storeAppBackupMetadata({...n,...vf(r),status:r,type:re.AppBackupType.RESTORE,trigger:re.AppBackupTrigger.MANUAL},{docId:e,docRev:t})}async function ma(e){return Ie.getAppBackupMetadata(e)}async function zT(e,t){return Ie.updateAppBackupMetadata(e,t)}async function XT(e){let t=await Ie.getAppBackupMetadata(e);return t.filename&&await We.objectStore.deleteFile(We.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),Ie.deleteAppBackupMetadata(e)}async function ZT(e,t){return Ie.fetchAppBackups(e,t)}async function Ef(e){let t=await Ie.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let r=await We.objectStore.getReadStream(We.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}async function eP(e){let{stream:t}=await Ef(e),r=(0,Sf.join)(We.objectStore.budibaseTempDir(),We.utils.newid()),n=wf.default.createWriteStream(r);return new Promise((a,o)=>{t.on("error",o),n.on("error",o),t.pipe(n).on("close",()=>a(r))})}async function tP(e,t,r={}){let n;try{n=await Ps({appId:e,trigger:t,timestamp:new Date().toISOString(),status:re.AppBackupStatus.PENDING,type:re.AppBackupType.BACKUP,...r})}catch(a){if(a.status===409)return;throw a}return await Ct().add({docId:n.id,docRev:n.rev,appId:e,export:{trigger:t,...r}}),await We.events.backup.appBackupTriggered(e,n.id,re.AppBackupType.BACKUP,t,r?.name),n.id}async function rP(e,t,r,n){let a=await ma(t),o;try{o=await Ps({appId:e,timestamp:new Date().toISOString(),status:re.AppBackupStatus.PENDING,type:re.AppBackupType.RESTORE,createdBy:n})}catch(i){if(i?.status===409)return;throw i}return await Ct().add({appId:e,docId:o.id,docRev:o.rev,import:{nameForBackup:r,backupId:t,createdBy:n}}),{restoreId:o.id,metadata:a}}var nP={isEnabled:Ko,triggerAppRestore:le(rP),triggerAppBackup:le(tP),getBackupDownloadStream:le(Ef),downloadAppBackup:le(eP),fetchAppBackups:le(ZT),storeAppBackupMetadata:le(Ps),updateBackupStatus:le(YT),updateRestoreStatus:le(JT),getAppBackup:le(ma),updateAppBackup:le(zT),deleteAppBackup:le(XT)},Xe=nP;var Os={};S(Os,{init:()=>Cs});var W=require("@budibase/backend-core");var Le=require("@budibase/types");var pr=C(require("fs"));async function Cs(e){Ct().process(async t=>{let r=t.data;try{if(r.export)return sP(t,e);if(r.import)return oP(t,e)}catch(n){W.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,n)}})}async function aP(e){await W.db.getDB(e,{skip_setup:!0}).destroy()}async function Rf(e,t,r,n){let a=W.db.getDevAppID(r),o=W.db.getProdAppID(r),i=new Date().toISOString(),s=async(c,f)=>{n?.doc?await Xe.updateBackupStatus(n.doc.id,c,f?.contents,f?.filename):await Xe.storeAppBackupMetadata({appId:o,timestamp:i,trigger:e,status:c,name:n?.name,type:Le.AppBackupType.BACKUP,contents:f?.contents,createdBy:n?.createdBy},{filename:f?.filename})};try{let c=await n.processing.exportAppFn(a,{tar:!0}),f=await n.processing.statsFn(a),m=`${o}/backup-${i}.tar.gz`,g=W.objectStore.ObjectStoreBuckets.BACKUPS,y=pr.default.createReadStream(c);await W.objectStore.streamUpload({bucket:g,filename:m,stream:y,extra:{type:"application/gzip",metadata:{name:n?.name,trigger:e,timestamp:i,appId:o}}}),await s(Le.AppBackupStatus.COMPLETE,{filename:m,contents:f}),pr.default.existsSync(c)&&pr.default.rmSync(c)}catch(c){W.logging.logAlert("App backup error",c),await s(Le.AppBackupStatus.FAILED)}}async function oP(e,t){let r=e.data,n=r.appId,a=r.import.backupId,o=r.import.nameForBackup,i=r.import.createdBy,s=W.tenancy.getTenantIDFromAppID(n);return W.tenancy.doInTenant(s,async()=>{let c=W.db.getDevAppID(n),{rev:f}=await Xe.updateRestoreStatus(r.docId,r.docRev,Le.AppBackupStatus.STARTED);await Rf(Le.AppBackupTrigger.RESTORING,s,n,{processing:t,createdBy:i,name:o});let m=await Xe.downloadAppBackup(a);await aP(c);let g=Le.AppBackupStatus.COMPLETE;try{await t.importAppFn(c,W.db.getDB(c),{file:{type:"application/gzip",path:m},key:m})}catch(y){W.logging.logAlert("App restore error",y),g=Le.AppBackupStatus.FAILED}await Xe.updateRestoreStatus(r.docId,f,g),pr.default.existsSync(m)&&pr.default.rmSync(m,{force:!0})})}async function sP(e,t){let r=e.data,n=r.appId,a=r.export.trigger,o=r.export.name,i=W.tenancy.getTenantIDFromAppID(n);await W.tenancy.doInTenant(i,async()=>{try{let{rev:s}=await Xe.updateBackupStatus(r.docId,Le.AppBackupStatus.STARTED);return Rf(a,i,n,{processing:t,doc:{id:r.docId,rev:s},name:o})}catch(s){W.logging.logAlert("App backup error",s)}})}var iP=async e=>{If(),await Cs(e.processing)},ve={...Xe,processing:Os,init:iP,getBackupQueue:Ct};var _f=async e=>{e.backups&&await ve.init(e.backups)};var se={};S(se,{create:()=>eM,find:()=>ZN,get:()=>XN,remove:()=>rM,update:()=>tM});var HA=C(_i()),Ze=require("@budibase/backend-core");var YA=require("@budibase/types");async function XN(e){let t=Ze.tenancy.getGlobalDB(),r=new Ze.db.QueryBuilder(t.name,YA.SearchIndex.USER);r.setIndexBuilder(Ze.db.searchIndexes.createUserIndex),r.setLimit(e.pageSize),r.addEqual("scimInfo.isSync",!0);for(let[a,o]of Object.entries(e.filters?.equal??{}))r.addEqual(a,o);r.setSort("_id"),r.setSkip(e.skip);let n=await r.run();return{users:n.rows,total:n.totalRows}}async function ZN(e){return await Ze.users.getById(e)}async function eM(e){let t=await Qe.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new Ze.HTTPError("User is already synched",409);e={...t,scimInfo:(0,HA.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await Qe.save(e,{requirePassword:!1})}async function tM(e,t){return await Qe.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}async function rM(e){return await Qe.destroy(e)}var mr={};S(mr,{create:()=>nM});var JA=C(_i());var zA=require("@budibase/backend-core");async function nM(e){let t=await Xa(e.name),r;if(!t)r=(await M.save(e)).id;else{if(t.scimInfo?.isSync)throw new zA.HTTPError("Group is already synched",409);r=t._id,t.users&&(await M.removeUsers(r,t.users.map(a=>a._id)),delete t.users),t.scimInfo=(0,JA.default)(t.scimInfo,e.scimInfo),await M.save(t)}return await M.get(r)}var Lt={};S(Lt,{logRequest:()=>aM,logResponse:()=>oM});var xi=require("@budibase/backend-core");async function aM(e){xi.logging.logWarn("SCIM request log",e)}async function oM(e){xi.logging.logWarn("SCIM response error",e)}var Li={};S(Li,{doInScimContext:()=>Pi,feature:()=>G,internalGroupOnly:()=>Ca,licensing:()=>XA,requireSCIM:()=>Ci,scimGroupOnly:()=>Sn,scimUserOnly:()=>In});var lt=require("@budibase/backend-core");var Ta=require("@budibase/types"),sM=(e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(lt.env.SELF_HOSTED&<.env.DEFAULT_LICENSE)return t.user.license=eo,r();t.user.license=await Me.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(lt.utils.isServingApp(t)||lt.utils.isServingBuilder(t)||lt.utils.isServingBuilderPreview(t)||lt.utils.isPublicApiRequest(t))&&await Fe.usageLimitIsExceeded(Ta.StaticQuotaName.USERS,Ta.QuotaUsageType.STATIC)}return r()},XA=sM;var G={};S(G,{requireFeature:()=>iM,requireFeatures:()=>uM});var iM=e=>async(t,r)=>{await na(e),await r()},uM=(...e)=>async(t,r)=>{await Vo(e),await r()};var Pa=require("@budibase/backend-core");var Pi=async(e,t)=>(Pa.env.DISABLE_SCIM_CALLS||await Lt.logRequest({...e.request.toJSON(),body:e.request.body}),await Pa.context.doInScimContext(async()=>{let r=await t();return await Lt.logResponse({...e.response.toJSON(),body:e.response.body}),r}));var Ci=async(e,t)=>{await Jo(),await t()};var ZA=require("@budibase/backend-core");var In=e=>Oi(ZA.users.getById,e,!0),Sn=e=>Oi(D.get,e,!0),Ca=e=>Oi(D.get,e,!1);function Oi(e,t,r){return async(n,a)=>{let o=n.params[t];return typeof o!="string"&&n.throw(404),!!(await e(o)).scimInfo?.isSync!==r&&n.throw(404),a()}}var zi={};S(zi,{ai:()=>yh,appBackups:()=>tb,auditLogs:()=>$h,environmentVariables:()=>Nh,groups:()=>Th,scim:()=>Lb,users:()=>Nb});var ki=require("@budibase/types");var Gi={};S(Gi,{getLLM:()=>Ua,getLLMConfig:()=>Mi,openai:()=>mM,structuredOutputs:()=>wn});var ge=require("@budibase/backend-core"),ch=require("@budibase/types");var Di=C(require("openai"));var dt=require("@budibase/types");var eh=require("@budibase/backend-core");var wn=[];var ie=class e{constructor(t){this.messages=t}get responseFormat(){return this._responseFormat}format(t){if(t!=="text"&&t!=="json"&&!wn[t])throw new eh.HTTPError(`Format "${t}" is not allowed`,400);return 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 qi(e){return ie.user(`Summarize this text:
|
|
37
|
+
`;function ja(e){return bi.default.verify(e,RI,{algorithms:["RS256"]})}function OI(e,t){return bi.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}var Wn={};T(Wn,{getFeatures:()=>Ai});var p=require("@budibase/types");var CI={[p.PlanType.FREE]:[...Te.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]},PI={[p.PlanType.FREE]:[...Te.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 Ai(e,t){let r=[];function a(n){let s=n[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=a(CI);break;case p.Hosting.CLOUD:r=a(PI);break}return r}var Vn={};T(Vn,{UNLIMITED:()=>m,getQuotas:()=>vi});var Y=require("@budibase/types");var l=ht,Ip=Te,m=-1,$a=e=>e*1e6,LI={[Y.PlanType.FREE]:{...Ip.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($a(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($a(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($a(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($a(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($a(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)}}},UI={[Y.PlanType.FREE]:{...Ip.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 vi(e,t){let r;function a(n){let s=n[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=a(UI);break;case Y.Hosting.CLOUD:r=a(LI);break}return JSON.parse(JSON.stringify(r))}var kr={};T(kr,{appExists:()=>qI,encoding:()=>Nr});var wp=require("@budibase/backend-core");async function qI(e){return(await wp.db.getAllApps({all:!0,idsOnly:!0})).includes(e)}var Nr={};T(Nr,{base64ToObject:()=>kI,objectToBase64:()=>NI});function NI(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}function kI(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}var om=require("@budibase/types"),Hr=require("@budibase/backend-core"),um=F(Md()),cm=F(Yi());async function lO(e){await De.save({offlineLicenseToken:e}),await Xt()}async function dO(){await De.save({offlineLicenseToken:void 0}),await Xt()}async function pm(){return(await De.get()).offlineLicenseToken}async function Hi(){let t=(await Hr.installation.getInstall()).installId,r=Hr.context.getTenantId(),a=await Hr.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:a}}async function fO(){let e=await Hi();return Nr.objectToBase64(e)}function mO(e){return Nr.base64ToObject(e)}function lm(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 dm(e){let t=await Hi();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}function fm(e){let t=e.plan.type,r=om.Hosting.SELF,a=Ai(r,t),n=vi(r,t);return e.features=(0,um.default)(e.features,a),e.quotas=(0,cm.default)(e.quotas,n),e}async function Zi(){try{let e=await pm();if(e){let t=await ja(e);return lm(t),await dm(t),fm(t)}}catch(e){console.error("Error retrieving offline license",e)}}var pn={};T(pn,{deleteDevLicense:()=>AO,getOfflineLicense:()=>yO,writeDevLicenseToDisk:()=>bO});var mm=require("@budibase/backend-core"),Ji=require("path"),gm=require("os"),er=F(require("fs"));var gO=mm.env.isTest()?".budibase-test":".budibase",zi=(0,Ji.join)((0,gm.tmpdir)(),gO),hO="dev_license.txt",cn=(0,Ji.join)(zi,hO);if(!er.default.existsSync(zi))try{er.default.mkdirSync(zi)}catch{}function yO(){try{if(er.default.existsSync(cn)){let e=er.default.readFileSync(cn,{encoding:"utf-8"});return ja(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}function bO(e){console.log(`Writing license to: ${cn}`),er.default.writeFileSync(cn,e,{encoding:"utf-8"})}function AO(){er.default.rmSync(cn,{force:!0})}var eo=async()=>{if(Xi.env.OFFLINE_MODE)return Zi();let e=await qr();return e||(e=pn.getOfflineLicense()),e},to=e=>hi(e),ro=()=>Xi.env.SELF_HOSTED?Te.SELF_FREE_LICENSE:Te.CLOUD_FREE_LICENSE;var no={};T(no,{activateLicenseKey:()=>vO,deleteLicenseKey:()=>_O,getLicenseKey:()=>ao});async function vO(e){await yi(e),await De.save({licenseKey:e}),await Xt()}async function ao(){return(await De.get()).licenseKey}async function _O(){await De.save({licenseKey:void 0}),await Xt()}var tr=require("@budibase/backend-core"),us=F(require("dd-trace")),hm=3600,Xt=async()=>{await Am(),await bm()},ym=async(e,t)=>{let{populateLicense:r=eo,populateFreeLicense:a=ro}=t||{};return await us.default.trace("getCachedLicense",async n=>{let s=tr.context.getLicense();if(s)return n.addTags({foundInContext:!0,features:s.features,plan:s.plan,quotas:s.quotas}),s;let o=tr.tenancy.getTenantId(),i=await ai(),u=await i.get(o);return n.addTags({tenantId:o,foundInCache:!!u}),u?(n.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)),n.addTags({populatedLicense:!!u}),u||(u=us.default.trace("populateFreeLicense",()=>a(e,o)),n.addTags({populatedFreeLicense:!!u})),u.refreshedAt=new Date().toISOString(),n.addTags({refreshedAt:u.refreshedAt,features:u.features,plan:u.plan,quotas:u.quotas,expirySeconds:hm}),await i.store(o,u,hm),u)})};tr.env.isJest()&&(ym=jest.fn());var bm=ym,Am=async()=>{let e=tr.tenancy.getTenantId();await(await ai()).delete(e)};async function ue(e,t){Array.isArray(e)||(e=[e]),t||(t=await Ke.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}async function cs(e,t){if(!await ue(e,t))throw new yt.FeatureDisabledError(`${e} is not currently enabled`,e)}async function so(e,t){if(!await ue(e,t)){let r=e.join(", ");throw new yt.FeatureDisabledError(`${r} are not currently enabled`,r)}}function Re(e){return async(...t)=>(await cs(oe.Feature.APP_BACKUPS),e(...t))}async function io(){return ue(oe.Feature.APP_BACKUPS)}async function oo(){return ue(oe.Feature.BRANDING)}async function vm(){return ue(oe.Feature.ENFORCEABLE_SSO)}async function wO(){return ue(oe.Feature.SYNC_AUTOMATIONS)}async function SO(){return ue(oe.Feature.TRIGGER_AUTOMATION_RUN)}async function rr(){return ue(oe.Feature.APP_BUILDERS)}async function ps(){return ue(oe.Feature.AUDIT_LOGS)}async function uo(){return ue(oe.Feature.USER_GROUPS)}function xO(){return ue(oe.Feature.PWA)}async function bt(){return ue(oe.Feature.EXPANDED_PUBLIC_API)}async function TO(e){if(yt.env.ENABLE_SSO_MAINTENANCE_MODE||!await vm())return!1;let r;return e?.config?r=e.config:r=await yt.configs.getSettingsConfig(),!!r.isSSOEnforced}var co=async()=>{let e=oe.Feature.SCIM,t=await ue(e),r=await yt.configs.getSCIMConfig();if(!t||!r?.enabled)throw new yt.FeatureDisabledError(`${e} is not currently enabled`,e);return!0};async function EO(){return ue(oe.Feature.VIEW_PERMISSIONS)}async function RO(){return ue(oe.Feature.VIEW_READONLY_COLUMNS)}async function ln(){return ue(oe.Feature.BUDIBASE_AI)}async function po(){return ue(oe.Feature.AI_CUSTOM_CONFIGS)}var OO={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 CO(e){return await oo()?{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}:OO}var lo={};T(lo,{enrichAIConfig:()=>LO});var PO="budibase_ai";async function LO(e){return await ln()&&(e.config[PO]={provider:"OpenAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),isBudibaseAI:!0,defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-4o-mini",apiKey:process.env.OPENAI_API_KEY,name:"Budibase AI"}),e}var ct={};T(ct,{addApp:()=>DO,addAutomation:()=>QO,addCustomAIConfig:()=>$O,addGroup:()=>mo,addPlugin:()=>ho,addRow:()=>MO,addRows:()=>FO,addUsers:()=>fs,bustCache:()=>ui,decrement:()=>He,decrementMany:()=>nr,getCurrentUsageValues:()=>Zc,getLicensedQuota:()=>Im,getQuotaUsage:()=>Yt,increment:()=>Ce,incrementBudibaseAICredits:()=>Ao,incrementMany:()=>ar,removeApp:()=>BO,removeCustomAIConfig:()=>WO,removeCustomAIConfigs:()=>VO,removeGroup:()=>go,removePlugin:()=>yo,removeRow:()=>GO,removeRows:()=>jO,removeUsers:()=>Xr,set:()=>fo,setAllUsage:()=>pi,setAppUsageValue:()=>ci,setUsage:()=>Kc,setUsagePerApp:()=>Yc,updatePluginCount:()=>bo,updateUsage:()=>Zr,usageLimitIsExceeded:()=>kO,utils:()=>Sa});var ce=require("@budibase/types");var Oe=require("@budibase/backend-core");var Ce=(e,t,r)=>_m({change:1,name:e,type:t,opts:r}),ar=e=>_m(e),_m=async e=>{let t=Array.isArray(e)?e:[e];await Zr(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 Zr(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]},He=(e,t,r={})=>Zr({usageChange:-1,name:e,type:t,opts:r}),nr=e=>{let t=Array.isArray(e)?e:[e];return Zr(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},fo=async(e,t,r)=>at.setUsage(r,e,t),UO=(e,t,r)=>{if(e==ce.QuotaUsageType.STATIC){let a=r.usageQuota.triggers;return a?a[t]||{}:{}}else{let a=at.utils.getCurrentMonthString(),n=r.monthly[a].triggers;return n?n[t]||{}:{}}},qO=async(e,t,r,a)=>{try{await Oe.locks.doWithLock({type:ce.LockType.TRY_ONCE,name:ce.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){Oe.logging.logAlert("Error triggering quota",n)}},NO=async(e,t,r,a)=>{let n=await Yt(),s=e===ce.QuotaUsageType.MONTHLY?n.quotaReset:void 0,o=await UO(e,t,n),i=a.triggers,u=r/a.value*100;u>100&&(u=100);for(let[d,f]of i.entries())if(u>=f&&a.value!==ht.UNLIMITED){if(!o[f]){o[f]=new Date().toISOString();let A=i[d+1]||100;(!(u>=A)||u===f)&&await qO(t,a,u,s)}}else o[f]=void 0;return o},Zr=async e=>{let t=Oe.tenancy.getTenantId(),r=Array.isArray(e)?e:[e],a=null,n,s=[],o={},i={},u={},d={};for(let g of r){try{a=Oe.context.getAppId()}catch{}if(ce.APP_QUOTA_NAMES.includes(g.name)&&!a)throw new Error("App context required for quota update");try{n=await Im(ce.QuotaType.USAGE,g.name,g.type),s.push(n);let{total:I,app:U,breakdown:G}=await at.getCurrentUsageValues(g.type,g.name,g.opts?.id);I+=g.usageChange,U!=null&&(U+=g.usageChange),G!=null&&(G+=g.usageChange);let k={};if(g.opts?.dryRun||(k=await NO(g.type,g.name,I,n),d={...d,[g.name]:k}),n.value!==ht.UNLIMITED&&I>n.value&&g.usageChange>0)throw new Oe.UsageLimitError(`Licensed ${n.name} of ${n.value} has been exceeded`,n.name);if(I=Math.max(0,I),U&&(U=Math.max(0,U)),G&&(G=Math.max(0,G),u={...u,[g.name]:G}),!g.opts?.dryRun){let q=g.opts?.valueFn;q&&(I=await q(),U=I),o={...o,[g.name]:I},i={...i,[g.name]:U}}}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 at.setAllUsage(f)},Im=async(e,t,r)=>{let a=await Ke.getCachedLicense();if(!a){let n=Oe.tenancy.getTenantId();throw new Error("License not found for tenant id "+n)}if(r&&(0,ce.isStaticQuota)(e,r,t))return a.quotas[e][r][t];if(r&&(0,ce.isMonthlyQuota)(e,r,t))return a.quotas[e][r][t];if((0,ce.isConstantQuota)(e,t))return a.quotas[e][t];throw new Error("Invalid quota type")},kO=async(e,t)=>{try{return await Zr({usageChange:1,name:e,type:t,opts:{dryRun:!0}}),!1}catch(r){if(r.code===Oe.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw r}};var zr=require("@budibase/types"),wm=require("@budibase/backend-core"),Sm=async()=>{let e=await wm.db.getAllApps({dev:!0});return e?e.length:0},DO=async(e,{appId:t}={})=>Ce(zr.StaticQuotaName.APPS,zr.QuotaUsageType.STATIC,{fn:e,valueFn:Sm,id:t}),BO=async({appId:e}={})=>He(zr.StaticQuotaName.APPS,zr.QuotaUsageType.STATIC,{valueFn:Sm,id:e});var ot=require("@budibase/types"),MO=async(e,{tableId:t}={})=>Ce(ot.StaticQuotaName.ROWS,ot.QuotaUsageType.STATIC,{fn:e,id:t}),GO=async({tableId:e}={})=>He(ot.StaticQuotaName.ROWS,ot.QuotaUsageType.STATIC,{id:e}),FO=async(e,t,{tableId:r}={})=>ar({change:e,name:ot.StaticQuotaName.ROWS,type:ot.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),jO=async(e,{tableId:t}={})=>nr({change:e,name:ot.StaticQuotaName.ROWS,type:ot.QuotaUsageType.STATIC,opts:{id:t}});var ds=require("@budibase/types"),QO=async(e,{automationId:t}={})=>Ce(ds.MonthlyQuotaName.AUTOMATIONS,ds.QuotaUsageType.MONTHLY,{fn:e,id:t});var Jr=require("@budibase/types"),mo=async e=>Ce(Jr.StaticQuotaName.USER_GROUPS,Jr.QuotaUsageType.STATIC,{fn:e}),go=async()=>He(Jr.StaticQuotaName.USER_GROUPS,Jr.QuotaUsageType.STATIC);var Nt=require("@budibase/types"),ho=async e=>Ce(Nt.StaticQuotaName.PLUGINS,Nt.QuotaUsageType.STATIC,{fn:e}),yo=async()=>He(Nt.StaticQuotaName.PLUGINS,Nt.QuotaUsageType.STATIC),bo=async e=>fo(Nt.StaticQuotaName.PLUGINS,Nt.QuotaUsageType.STATIC,e);var ut=require("@budibase/types"),dn=require("@budibase/backend-core");var fs=async(e,t,r)=>{let a=[{change:e,name:ut.StaticQuotaName.USERS,type:ut.QuotaUsageType.STATIC,opts:{fn:r,valueFn:dn.users.getUserCount}}];t>0&&a.push({change:t,name:ut.StaticQuotaName.CREATORS,type:ut.QuotaUsageType.STATIC,opts:{valueFn:dn.users.getCreatorCount}});let n=await ar(a);return await qr(),n},Xr=async(e,t)=>{let r=[{change:e,name:ut.StaticQuotaName.USERS,type:ut.QuotaUsageType.STATIC,opts:{valueFn:dn.users.getUserCount}}];t>0&&r.push({change:t,name:ut.StaticQuotaName.CREATORS,type:ut.QuotaUsageType.STATIC,opts:{valueFn:dn.users.getCreatorCount}}),await nr(r),await qr()};var Ze=require("@budibase/types"),Ao=async e=>ar({change:e,name:Ze.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:Ze.QuotaUsageType.MONTHLY}),$O=async()=>Ce(Ze.StaticQuotaName.AI_CUSTOM_CONFIGS,Ze.QuotaUsageType.STATIC),WO=async()=>He(Ze.StaticQuotaName.AI_CUSTOM_CONFIGS,Ze.QuotaUsageType.STATIC),VO=async e=>nr({change:e,name:Ze.StaticQuotaName.AI_CUSTOM_CONFIGS,type:Ze.QuotaUsageType.STATIC});var At={};T(At,{addAppBuilder:()=>zO,db:()=>pt,removeAppBuilder:()=>JO});var mn=require("@budibase/backend-core");var Z={};T(Z,{addAppBuilder:()=>So,addUsers:()=>_o,adjustGroupCreatorsQuotas:()=>ZO,cleanupApp:()=>HO,enrichUserRolesFromGroups:()=>YO,fetch:()=>fn,get:()=>ir,getBulk:()=>Pm,getGroupBuilderAppIds:()=>Cm,getGroupRoleId:()=>KO,remove:()=>vo,removeAppBuilder:()=>xo,removeUsers:()=>Io,save:()=>ea,updateGroupApps:()=>wo});var N=require("@budibase/backend-core");var xm=require("@budibase/backend-core"),ms=class extends xm.HTTPError{constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function Rm(e,t){try{let r=[];for(let i of e)if(i.roles){let u=i.roles[N.db.getProdAppID(t)];u&&r.push(u)}let a=await Promise.all(r.map(async i=>({[i]:await N.roles.roleToNumber(i)}))),n,s,o={};a.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,n=i);return n}catch(r){throw N.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}async function Om(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await K.getBulk(e,{enriched:!1}),t}async function Cm(e,t){if(!e.userGroups)return[];let r=await Om(e.userGroups,t?.groups),a=t?.appId?N.db.getProdAppID(t?.appId):null,n=[];for(let s of r){let o=s.builder?.apps;a&&o?.includes(a)?n.push(a):a||(n=n.concat(o||[]))}return[...new Set(n)]}async function KO(e,t,r){if(!e.userGroups)return null;let a=await Om(e.userGroups,r?.groups),n=N.db.getProdAppID(t);return e.roles?.[n]?e.roles[n]:(a=a.filter(s=>s?.roles?Object.keys(s.roles).includes(n):!1),await Rm(a,t))}async function YO(e){if(!e||!e.userGroups)return e;let t=await Pm(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 N.context.doInAppContext(n,async()=>{if(e.roles[n])return;let s=await Rm(t,n);s&&(e.roles[n]=s)});let a=await Cm(e,{groups:t});if(a.length&&!e.builder?.global){let n=e.builder?.apps||[];e.builder={apps:n.concat(a)}}return e}async function fn(){return await K.fetch()}async function ir(e){return await K.get(e)}async function Pm(e,t={enriched:!0}){return await K.getBulk(e,t)}async function Tm(e){if(await K.getByName(e))throw new ms(e)}async function Em(e){let t=await K.getGroupUsers(e._id);if(!t.length)return 0;let a=await N.tenancy.getGlobalDB().getMultiple(t.map(s=>s._id));return(await N.userUtils.creatorsInList(a)).filter(s=>s).length}async function ea(e){let t=[],r=!e._id,a=0;if(delete e.users,!e._id)e._id=K.generateUserGroupID(),await Tm(e.name),t.push(N.events.group.created(e));else{let s=await K.get(e._id);if(s.name!==e.name&&await Tm(e.name),t.push(N.events.group.updated(e)),JSON.stringify(s.roles)!==JSON.stringify(e.roles)){let o=s.users?.length||0,i=0;o>0&&(i=await Em(s)),Object.values(e.roles).includes("CREATOR")?a=o-i:a=-o,t.push(N.events.group.permissionsEdited(e))}}await Promise.all(t);let n=()=>K.save(e);if(r)return await mo(n);{let s=await n();if(a>0)await fs(0,a);else if(a<0){let o=await Em(e),i=Math.abs(a)-o;i>0&&await Xr(0,i)}return s}}async function vo(e,t){let r;try{r=await K.get(e)}catch{throw new Error("Group not found")}let a=Object.values(r.roles||{}).includes("CREATOR"),n=()=>{};if(a){let o=N.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(U=>U!==e)})),g=(await N.userUtils.creatorsInList(d)).filter(I=>I).length,A=i.length-g;A&&(n=()=>Xr(0,A))}let s=await K.destroy(e,t);return await N.events.group.deleted(r),await go(),await n(),s}async function _o(e,t){let r=await K.get(e),a=await N.users.bulkGetGlobalUsersById(t),n=[];for(let u of a)u.userGroups||(u.userGroups=[]),u.userGroups.includes(e)||n.push(u);if(!n.length)return n;let s=n.map(u=>({...u,userGroups:[...u?.userGroups||[],e]}));if(await N.users.bulkUpdateGlobalUsers(s),Object.values(r.roles||{}).includes("CREATOR")){let d=(await N.userUtils.creatorsInList(n)).filter(g=>g).length,f=n.length-d;f&&await fs(0,f)}let i=[];for(let u of t)i.push(N.cache.user.invalidateUser(u));return await Promise.all(i),await N.events.group.usersAdded(s.length,r),s}async function Io(e,t){let r=await K.get(e),a=await N.users.bulkGetGlobalUsersById(t),n=[];for(let i of a){if(!i.userGroups||!i.userGroups.includes(e))continue;let u=i.userGroups.indexOf(e);i.userGroups.splice(u,1),n.push(i)}if(await N.users.bulkUpdateGlobalUsers(n),Object.values(r.roles||{}).includes("CREATOR")){let u=(await N.userUtils.creatorsInList(n)).filter(f=>f).length,d=n.length-u;d&&await Xr(0,d)}let o=[];for(let i of t)o.push(N.cache.user.invalidateUser(i));return await Promise.all(o),n.length&&await N.events.group.usersDeleted(n.length,r),n}async function wo(e,t){let r=await ir(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 ea(r)}async function HO(e){let t=await fn(),r=[];for(let a of t)!a.roles||!a.roles[e]||(delete a.roles[e],r.push(a));return await K.bulkSave(r)}async function So(e,t){if(!await rr())throw new Error("Feature not enabled, please check license");let r=N.db.getProdAppID(t),a=await ir(e);a.builder??={apps:[]},a.builder.apps.includes(t)||(a.builder.apps.push(r),await ea(a))}async function xo(e,t){if(!await rr())throw new Error("Feature not enabled, please check license");let r=N.db.getProdAppID(t),a=await ir(e);a.builder?.apps.includes(t)&&(a.builder.apps=a.builder.apps.filter(n=>n!==r),await ea(a))}async function ZO(){if(!await uo()){let e=N.tenancy.getGlobalDB(),r=(await fn()||[]).filter(a=>Object.values(a?.roles||{}).includes("CREATOR"));for(let a of r){let n=await K.getGroupUsers(a._id),o=(await Promise.all(n.map(f=>e.get(f._id)))).map(f=>({...f,userGroups:f.userGroups.filter(g=>g!==a._id)})),u=(await N.userUtils.creatorsInList(o)).filter(f=>f).length,d=n.length-u;await K.save({...a,roles:{}}),d&&await Xr(0,d)}}}mn.users.UserDB.init(ct,Z,Ge);var pt=mn.users.UserDB;async function zO(e,t){if(!await rr())throw new Error("Feature not enabled, please check license");await mn.users.addAppBuilder(e,t)}async function JO(e,t){if(!await rr())throw new Error("Feature not enabled, please check license");await mn.users.removeAppBuilder(e,t)}var hs={};T(hs,{logs:()=>Uo});var Uo={};T(Uo,{logSearch:()=>oC,oldestLogDate:()=>Bm,storeLog:()=>uC});var Dm=require("@budibase/types"),gs=require("@budibase/backend-core");var kt=require("@budibase/types");var ie=require("@budibase/backend-core");var Lm=require("@budibase/backend-core");async function Um(e,t){let r,a=5,n=!1,s,o=!0;for(;a>0;a--)try{o?s=await e():s=await exports.randomDelay(e),n=!0;break}catch(i){r=i}return n||Lm.logging.logWarn(`Failed to backoff: ${t}`,r),s}var{SEPARATOR:vt,UNICODE_MAX:XO,DocumentType:qm,AutomationViewMode:To,ViewName:eC,getQueryIndex:tC}=ie.db,rC=new Date(0).toISOString(),aC=100,Eo=async()=>Gn(kt.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS);function Nm(e,t,{status:r,automationId:a}={},n={}){let s=a?`${a}${vt}`:"",o=r?`${r}${vt}`:"",i;return r&&a?i=`${To.ALL}${vt}${o}${s}`:r?i=`${To.STATUS}${vt}${o}`:a?i=`${To.AUTOMATION}${vt}${s}`:i=`${qm.AUTOMATION_LOG}${vt}`,{...n,descending:!0,startkey:`${i}${t}${XO}`,endkey:`${i}${e}`}}function Ro(e){let t=kt.AutomationStatus.SUCCESS,r=!0;for(let a of e.steps){let n=a.outputs?.status?.toLowerCase(),s=n==="stopped_error";if(r&&!s){r=!1;continue}if(s){t=kt.AutomationStatus.STOPPED_ERROR;break}else if(a.outputs?.success){if(n==="stopped"){t=kt.AutomationStatus.STOPPED;break}}else{t=kt.AutomationStatus.ERROR;break}}return t}function nC(e,t,r){return`${qm.AUTOMATION_LOG}${vt}${e}${vt}${r}${vt}${t}`}async function Oo(e,t,r={docs:!0}){let a=ie.context.getProdAppDB();await a.exists()||(a=ie.context.getDevAppDB());let n={status:r.status},s=r?.limit?r.limit:r?.paginate?9+1:void 0,o=Nm(e,t,n,{include_docs:r.docs,limit:s});r?.page&&(o.startkey=r.page);let i=await a.allDocs(o);return Ta(i,{paginate:r?.paginate,pageSize:9})}async function Co(e,t,r={}){let a=ie.context.getProdAppDB();await a.exists()||(a=ie.context.getDevAppDB());let n;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),n=await a.query(tC(eC.AUTOMATION_LOGS),o)}catch(s){if(s!=null&&(s.name==="not_found"||s.error==="not_found"))return await op(),Co(e,t,r);throw s}return Ta(n,{paginate:!0,pageSize:9})}async function km(e,t){let r=ie.context.getProdAppDB(),a=e._id,n=e.name,s=Ro(t),o=new Date().toISOString(),i=nC(o,s,a),u={...t,automationId:a,status:s,automationName:n,createdAt:o,_id:i};return await r.put(u),i}async function Po(e,{clearing:t}={clearing:!1}){let r=ie.context.getProdAppDB();await Um(async()=>{let a=await r.get(ie.db.DocumentType.APP_METADATA);for(let n of e){let s=n.split(ie.db.SEPARATOR),o=`${s[s.length-3]}${ie.db.SEPARATOR}${s[s.length-2]}`,i={};a.automationErrors&&(i=a.automationErrors),Array.isArray(i[o])||(i[o]=[]);let u=i[o].indexOf(n);t&&u!==-1?i[o].splice(u,1):i[o].push(n),i[o].length===0&&delete i[o],a.automationErrors=i}await r.put(a),await ie.cache.app.invalidateAppMetadata(a.appId,a)},"Failed to update app metadata with automation log error")}async function sC(){let e=await Eo();try{return await Oo(rC,e,{docs:!1,paginate:!1,limit:aC})}catch{return{data:[],hasNextPage:!1}}}async function Lo(){let e=ie.context.getProdAppDB();try{let t=await sC();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 s=n.id.split(ie.db.SEPARATOR);return s[s.length-1]===kt.AutomationStatus.ERROR}).map(n=>n.id);await e.bulkDocs(r),a.length&&await Po(a,{clearing:!0})}catch(t){ie.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}var Bm=Eo;async function iC(e,t,r,a){let n,s=new Date().toISOString(),o=await Bm();return(!e||e<o)&&(e=o),r||t?n=await Co(e,s,{automationId:r,status:t,page:a}):n=await Oo(e,s,{status:t,page:a,docs:!0,paginate:!0}),n}async function oC(e){return await Lo(),await iC(e.startDate,e.status,e.automationId,e.page)}async function uC(e,t){if(!gs.db.isProdAppID(gs.context.getAppId()))return;let r=Ro(t),a=await km(e,t);r===Dm.AutomationStatus.ERROR&&await Po([a]),await Lo()}var ys={};T(ys,{checkPluginQuotas:()=>lC,deletePlugin:()=>pC,storePlugin:()=>cC});var jm=require("@budibase/types"),re=require("@budibase/backend-core");var Mm=F(require("fs")),Gm=require("path");function Fm(e,t){return Mm.default.readFileSync((0,Gm.join)(e,t),"utf8")}async function cC(metadata,directory,source){let db=re.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=re.objectStore.getPluginS3Dir(name),files=await re.objectStore.uploadDirectory(re.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===jm.PluginType.DATASOURCE){let js=Fm(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=re.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 re.events.plugin.imported(doc),{...doc,_rev:e.rev}};return rev?await write():await ho(write)}async function pC(e){let t=re.tenancy.getGlobalDB();try{let r=await t.get(e),a=re.objectStore.getPluginS3Dir(r.name);await re.objectStore.deleteFolder(re.objectStore.ObjectStoreBuckets.PLUGINS,a),await t.remove(e,r._rev),await re.events.plugin.deleted(r),await yo()}catch(r){let a=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${a}`)}}async function lC(){let e=re.tenancy.getGlobalDB();try{let r=(await e.allDocs(re.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await bo(r)}catch(t){re.logging.logAlert("Unable to retrieve plugins for quota check",t)}}var lt={};T(lt,{fetch:()=>fC,fetchValues:()=>mC,isEncryptionKeyAvailable:()=>dC,isValid:()=>Wm,remove:()=>hC,update:()=>gC});var gn=require("@budibase/types"),Qm=require("@budibase/backend-core");function dC(){return!!Qm.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,a={};for(let[n,s]of Object.entries(r))switch(e){case gn.AppEnvironment.DEVELOPMENT:a[n]=s.development;break;case gn.AppEnvironment.PRODUCTION:default:a[n]=s.production;break}return a}async function $m(e){if(!(await it.cache.getCachedLicense()).features.includes(gn.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(Wm(e))await $m(a=>(a[e]=t,a));else throw new Error("Variable name has characters that are not allowed")}async function hC(e){await $m(t=>(delete t[e],t))}function Wm(e){return/^[a-zA-Z0-9-_]+$/.test(e)}var Dt={};T(Dt,{definitions:()=>EC,download:()=>TC,fetch:()=>xC,write:()=>wC});var As=require("@budibase/types");var X=require("@budibase/backend-core"),ze=require("@budibase/types");var Vm=require("memorystream"),Km=new X.sql.Sql(ze.SqlClient.SQL_LITE);async function yC(e,t,r){let a={operation:ze.Operation.READ,table:Ur.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:ze.SortOrder.DESCENDING,type:ze.SortType.STRING}}},n=Km._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 bC(e){return`${X.DocumentType.AUDIT_LOG}${X.SEPARATOR}${e}${X.SEPARATOR}${X.utils.newid()}`}async function Ym(e){e._id||(e._id=bC(e.timestamp)),e.type||(e.type=ze.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 qo(e,t,r){t||(t=1);let a=X.context.getAuditLogsDB();try{let n=9+1,s=await yC(e,t,n),o=Ur.searchTable(),i=Km.convertJsonStringColumns(o,await a.sql(s.sql,s.bindings)),u;i.length>n&&(u=i.pop());let d={rows:i,hasNextPage:!!u};return d.hasNextPage&&(d.bookmark=t+1),d}catch(n){if(n.status===404&&!r?.isRetry)return await AC(),await zc(),await qo(e,t,{isRetry:!0});throw n}}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(a=>a.doc).filter(a=>a&&!a.type).map(a=>({...a,type:ze.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}function Hm(e){let t=X.context.getAuditLogsDB(),r=new Vm,a=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}}),n=new Vm;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
|
+
`;n.write(i)}}),r.on("end",()=>{n.end()}),{promise:a,stream:n}}var ve=require("@budibase/backend-core");var bs=require("@budibase/types"),hn=require("@budibase/string-templates"),yn=require("@budibase/backend-core"),_C=yn.constants.MIN_VALID_DATE.toISOString(),IC=yn.constants.MAX_VALID_DATE.toISOString();function No(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||_C,e.endDate=e.endDate||IC),e}async function Zm(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(a=>yn.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=No(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}function ko(e,t,r){let a={_id:e,status:bs.AuditLogResourceStatus.DELETED};switch(t){case"app":a.name=r?.appName;break;case"user":a.email=r?.email;break}return a}function Do(e){let t=(0,hn.findHBSBlocks)(e);for(let r of t){let a=` "${r}"`;e=e.replace(e.includes(a)?a:` ${r}`,""),e=(0,hn.processStringSync)(e,{})}return e}function zm(e,t){let r=bs.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let a=(0,hn.processStringSync)(r,t);return a.includes('""')&&(a=Do(r)),a}async function wC(e,t,r){if(!await ps()||!ve.utils.isAudited(e))return;let a=zm(e,t),n=new Date;r?.timestamp&&(n=new Date(r.timestamp));let s={timestamp:n.toISOString(),event:e,name:a,userId:r?.userId||As.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 Ym(s)}async function SC(e){let t=e.map(i=>i.userId),a=e.filter(i=>i.appId).map(i=>ve.db.getDevAppID(i.appId)),n=await ve.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),s=await ve.db.getAppsByIDs([...new Set(a)]),o=[];for(let i of e){let u=n.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||ko(i.userId,"user",i.fallback)};i.appId&&(f.app=d||ko(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 Zm(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await qo(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await SC(r.rows)}}function TC(e){return e=No(e),Hm(e)}function EC(){let e=Object.entries(As.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=Do(r[1]);return t}var vs={};T(vs,{applications:()=>Fo,roles:()=>Mo,users:()=>Bo});var Bo={};T(Bo,{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 bt()||RC(e,t),e}var Mo={};T(Mo,{assign:()=>CC,unAssign:()=>PC});var bn=require("@budibase/backend-core");async function CC(e,t){if(!await bt())throw new Error("Unable to assign roles - license required.");let r=await pt.bulkGet(e);for(let a of r){if(t.role&&t.role.roleId){let n=bn.db.getProdAppID(t.role.appId);a.roles[n]=t.role.roleId}if(t.appBuilder){let n=bn.db.getProdAppID(t.appBuilder.appId),s=a.builder?.apps||[];a.builder={apps:s.concat([n])}}t.builder&&(a.builder={global:!0}),t.admin&&(a.admin={global:!0}),a.roles}await pt.bulkUpdate(r)}async function PC(e,t){if(!await bt())throw new Error("Unable to un-assign roles - license required.");let r=await pt.bulkGet(e);for(let a of r){if(t.role){let n=bn.db.getProdAppID(t.role?.appId);a.roles[n]===t.role.roleId&&delete a.roles[n]}if(t.appBuilder&&a.builder?.apps){let n=bn.db.getProdAppID(t.appBuilder.appId);a.builder.apps=a.builder.apps.filter(s=>s!==n)}t.builder&&a.builder&&delete a.builder,t.admin&&a.admin&&delete a.admin}}var Fo={};T(Fo,{buildExportFn:()=>UC,buildImportFn:()=>LC});var Go=require("@budibase/backend-core");function LC(e){return async(t,r)=>{await bt()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await Go.context.doInAppContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}function UC(e){return async(t,r)=>{await bt()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:a,excludeRows:n}=t.request.body;await Go.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 dt=require("@budibase/backend-core"),he=require("@budibase/types");var jo=require("@budibase/backend-core"),Jm;function Xm(){Jm=new jo.queue.BudibaseQueue(jo.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}function or(){return Jm}var eg=require("path"),tg=F(require("fs"));async function Qo(e,t={}){return Be.storeAppBackupMetadata(e,t)}function rg(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 qC(e,t,r,a){let n=await _s(e);return await Be.storeAppBackupMetadata({...n,...rg(t),contents:r,status:t,type:he.AppBackupType.BACKUP},{filename:a,docId:e})}async function NC(e,t,r){let a=await _s(e);return await Be.storeAppBackupMetadata({...a,...rg(r),status:r,type:he.AppBackupType.RESTORE,trigger:he.AppBackupTrigger.MANUAL},{docId:e,docRev:t})}async function _s(e){return Be.getAppBackupMetadata(e)}async function kC(e,t){return Be.updateAppBackupMetadata(e,t)}async function DC(e){let t=await Be.getAppBackupMetadata(e);return t.filename&&await dt.objectStore.deleteFile(dt.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),Be.deleteAppBackupMetadata(e)}async function BC(e,t){return Be.fetchAppBackups(e,t)}async function ag(e){let t=await Be.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let r=await dt.objectStore.getReadStream(dt.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}async function MC(e){let{stream:t}=await ag(e),r=(0,eg.join)(dt.objectStore.budibaseTempDir(),dt.utils.newid()),a=tg.default.createWriteStream(r);return new Promise((n,s)=>{t.on("error",s),a.on("error",s),t.pipe(a).on("close",()=>n(r))})}async function GC(e,t,r={}){let a;try{a=await Qo({appId:e,trigger:t,timestamp:new Date().toISOString(),status:he.AppBackupStatus.PENDING,type:he.AppBackupType.BACKUP,...r})}catch(n){if(n.status===409)return;throw n}return await or().add({docId:a.id,docRev:a.rev,appId:e,export:{trigger:t,...r}}),await dt.events.backup.appBackupTriggered(e,a.id,he.AppBackupType.BACKUP,t,r?.name),a.id}async function FC(e,t,r,a){let n=await _s(t),s;try{s=await Qo({appId:e,timestamp:new Date().toISOString(),status:he.AppBackupStatus.PENDING,type:he.AppBackupType.RESTORE,createdBy:a})}catch(o){if(o?.status===409)return;throw o}return await or().add({appId:e,docId:s.id,docRev:s.rev,import:{nameForBackup:r,backupId:t,createdBy:a}}),{restoreId:s.id,metadata:n}}var jC={isEnabled:io,triggerAppRestore:Re(FC),triggerAppBackup:Re(GC),getBackupDownloadStream:Re(ag),downloadAppBackup:Re(MC),fetchAppBackups:Re(BC),storeAppBackupMetadata:Re(Qo),updateBackupStatus:Re(qC),updateRestoreStatus:Re(NC),getAppBackup:Re(_s),updateAppBackup:Re(kC),deleteAppBackup:Re(DC)},_t=jC;var Wo={};T(Wo,{init:()=>$o});var ae=require("@budibase/backend-core");var Je=require("@budibase/types");var ta=F(require("fs"));async function $o(e){or().process(async t=>{let r=t.data;try{if(r.export)return WC(t,e);if(r.import)return $C(t,e)}catch(a){ae.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,a)}})}async function QC(e){await ae.db.getDB(e,{skip_setup:!0}).destroy()}async function ng(e,t,r,a){let n=ae.db.getDevAppID(r),s=ae.db.getProdAppID(r),o=new Date().toISOString(),i=async(u,d)=>{a?.doc?await _t.updateBackupStatus(a.doc.id,u,d?.contents,d?.filename):await _t.storeAppBackupMetadata({appId:s,timestamp:o,trigger:e,status:u,name:a?.name,type:Je.AppBackupType.BACKUP,contents:d?.contents,createdBy:a?.createdBy},{filename:d?.filename})};try{let u=await a.processing.exportAppFn(n,{tar:!0}),d=await a.processing.statsFn(n),f=`${s}/backup-${o}.tar.gz`,g=ae.objectStore.ObjectStoreBuckets.BACKUPS,A=ta.default.createReadStream(u);await ae.objectStore.streamUpload({bucket:g,filename:f,stream:A,extra:{type:"application/gzip",metadata:{name:a?.name,trigger:e,timestamp:o,appId:s}}}),await i(Je.AppBackupStatus.COMPLETE,{filename:f,contents:d}),ta.default.existsSync(u)&&ta.default.rmSync(u)}catch(u){ae.logging.logAlert("App backup error",u),await i(Je.AppBackupStatus.FAILED)}}async function $C(e,t){let r=e.data,a=r.appId,n=r.import.backupId,s=r.import.nameForBackup,o=r.import.createdBy,i=ae.tenancy.getTenantIDFromAppID(a);return ae.tenancy.doInTenant(i,async()=>{let u=ae.db.getDevAppID(a),{rev:d}=await _t.updateRestoreStatus(r.docId,r.docRev,Je.AppBackupStatus.STARTED);await ng(Je.AppBackupTrigger.RESTORING,i,a,{processing:t,createdBy:o,name:s});let f=await _t.downloadAppBackup(n);await QC(u);let g=Je.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=Je.AppBackupStatus.FAILED}await _t.updateRestoreStatus(r.docId,d,g),ta.default.existsSync(f)&&ta.default.rmSync(f,{force:!0})})}async function WC(e,t){let r=e.data,a=r.appId,n=r.export.trigger,s=r.export.name,o=ae.tenancy.getTenantIDFromAppID(a);await ae.tenancy.doInTenant(o,async()=>{try{let{rev:i}=await _t.updateBackupStatus(r.docId,Je.AppBackupStatus.STARTED);return ng(n,o,a,{processing:t,doc:{id:r.docId,rev:i},name:s})}catch(i){ae.logging.logAlert("App backup error",i)}})}var VC=async e=>{Xm(),await $o(e.processing)},Fe={..._t,processing:Wo,init:VC,getBackupQueue:or};var sg=async e=>{e.backups&&await Fe.init(e.backups)};var Ie={};T(Ie,{create:()=>M0,find:()=>B0,get:()=>D0,remove:()=>F0,update:()=>G0});var RA=F(Mu()),It=require("@budibase/backend-core");var OA=require("@budibase/types");async function D0(e){let t=It.tenancy.getGlobalDB(),r=new It.db.QueryBuilder(t.name,OA.SearchIndex.USER);r.setIndexBuilder(It.db.searchIndexes.createUserIndex),r.setLimit(e.pageSize),r.addEqual("scimInfo.isSync",!0);for(let[n,s]of Object.entries(e.filters?.equal??{}))r.addEqual(n,s);r.setSort("_id"),r.setSkip(e.skip);let a=await r.run();return{users:a.rows,total:a.totalRows}}async function B0(e){return await It.users.getById(e)}async function M0(e){let t=await pt.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new It.HTTPError("User is already synched",409);e={...t,scimInfo:(0,RA.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await pt.save(e,{requirePassword:!1})}async function G0(e,t){return await pt.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}async function F0(e){return await pt.destroy(e)}var oa={};T(oa,{create:()=>j0});var CA=F(Mu());var PA=require("@budibase/backend-core");async function j0(e){let t=await di(e.name),r;if(!t)r=(await Z.save(e)).id;else{if(t.scimInfo?.isSync)throw new PA.HTTPError("Group is already synched",409);r=t._id,t.users&&(await Z.removeUsers(r,t.users.map(n=>n._id)),delete t.users),t.scimInfo=(0,CA.default)(t.scimInfo,e.scimInfo),await Z.save(t)}return await Z.get(r)}var cr={};T(cr,{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:()=>ks,licensing:()=>LA,requireSCIM:()=>Qu,scimGroupOnly:()=>In,scimUserOnly:()=>_n});var Bt=require("@budibase/backend-core");var qs=require("@budibase/types"),W0=(e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(Bt.env.SELF_HOSTED&&Bt.env.DEFAULT_LICENSE)return t.user.license=mi,r();t.user.license=await it.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(Bt.utils.isServingApp(t)||Bt.utils.isServingBuilder(t)||Bt.utils.isServingBuilderPreview(t)||Bt.utils.isPublicApiRequest(t))&&await ct.usageLimitIsExceeded(qs.StaticQuotaName.USERS,qs.QuotaUsageType.STATIC)}return r()},LA=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 so(e),await r()};var Ns=require("@budibase/backend-core");var ju=async(e,t)=>(Ns.env.DISABLE_SCIM_CALLS||await cr.logRequest({...e.request.toJSON(),body:e.request.body}),await Ns.context.doInScimContext(async()=>{let r=await t();return await cr.logResponse({...e.response.toJSON(),body:e.response.body}),r}));var Qu=async(e,t)=>{await co(),await t()};var UA=require("@budibase/backend-core");var _n=e=>$u(UA.users.getById,e,!0),In=e=>$u(K.get,e,!0),ks=e=>$u(K.get,e,!1);function $u(e,t,r){return async(a,n)=>{let s=a.params[t];return typeof s!="string"&&a.throw(404),!!(await e(s)).scimInfo?.isSync!==r&&a.throw(404),n()}}var Cc={};T(Cc,{ai:()=>rv,appBackups:()=>Fv,auditLogs:()=>Pv,environmentVariables:()=>wv,groups:()=>mv,scim:()=>y_,users:()=>I_});var Ys=require("@budibase/types");var Ac={};T(Ac,{Prompt:()=>ee,TableGeneration:()=>bc,aiColumnSchemas:()=>hc,aiTableResponseToTableSchema:()=>fc,classifyText:()=>zu,cleanData:()=>Ju,generateAIColumns:()=>sc,generateCode:()=>zM,generateCronExpression:()=>Xu,generateData:()=>ic,generateJs:()=>ac,generateSQL:()=>ZM,generateTables:()=>nc,generationStructure:()=>gc,getLLM:()=>ha,getLLMConfig:()=>dc,openai:()=>sG,searchWeb:()=>rc,sentimentAnalysis:()=>tc,summarizeText:()=>$s,tableDataStructuredOutput:()=>yc,translate:()=>ec});var uc=F(require("openai"));var Qt=require("@budibase/types");var B;(function(e){e.assertEqual=n=>n;function t(n){}e.assertIs=t;function r(n){throw new Error}e.assertNever=r,e.arrayToEnum=n=>{let s={};for(let o of n)s[o]=o;return s},e.getValidEnumValues=n=>{let s=e.objectKeys(n).filter(i=>typeof n[n[i]]!="number"),o={};for(let i of s)o[i]=n[i];return e.objectValues(o)},e.objectValues=n=>e.objectKeys(n).map(function(s){return n[s]}),e.objectKeys=typeof Object.keys=="function"?n=>Object.keys(n):n=>{let s=[];for(let o in n)Object.prototype.hasOwnProperty.call(n,o)&&s.push(o);return s},e.find=(n,s)=>{for(let o of n)if(s(o))return o},e.isInteger=typeof Number.isInteger=="function"?n=>Number.isInteger(n):n=>typeof n=="number"&&isFinite(n)&&Math.floor(n)===n;function a(n,s=" | "){return n.map(o=>typeof o=="string"?`'${o}'`:o).join(s)}e.joinValues=a,e.jsonStringifyReplacer=(n,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"]),Mt=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:"),Pe=class e extends Error{constructor(t){super(),this.issues=[],this.addIssue=a=>{this.issues=[...this.issues,a]},this.addIssues=(a=[])=>{this.issues=[...this.issues,...a]};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},a={_errors:[]},n=s=>{for(let o of s.issues)if(o.code==="invalid_union")o.unionErrors.map(n);else if(o.code==="invalid_return_type")n(o.returnTypeError);else if(o.code==="invalid_arguments")n(o.argumentsError);else if(o.path.length===0)a._errors.push(r(o));else{let i=a,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 n(this),a}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={},a=[];for(let n of this.issues)n.path.length>0?(r[n.path[0]]=r[n.path[0]]||[],r[n.path[0]].push(t(n))):a.push(t(n));return{formErrors:a,fieldErrors:r}}get formErrors(){return this.flatten()}};Pe.create=e=>new Pe(e);var pa=(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}},kA=pa;function H0(e){kA=e}function Ds(){return kA}var Bs=e=>{let{data:t,path:r,errorMaps:a,issueData:n}=e,s=[...r,...n.path||[]],o={...n,path:s};if(n.message!==void 0)return{...n,path:s,message:n.message};let i="",u=a.filter(d=>!!d).slice().reverse();for(let d of u)i=d(o,{data:t,defaultError:i}).message;return{...n,path:s,message:i}},Z0=[];function b(e,t){let r=Ds(),a=Bs({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,r,r===pa?void 0:pa].filter(n=>!!n)});e.common.issues.push(a)}var le=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 a=[];for(let n of r){if(n.status==="aborted")return R;n.status==="dirty"&&t.dirty(),a.push(n.value)}return{status:t.value,value:a}}static async mergeObjectAsync(t,r){let a=[];for(let n of r){let s=await n.key,o=await n.value;a.push({key:s,value:o})}return e.mergeObjectSync(t,a)}static mergeObjectSync(t,r){let a={};for(let n of r){let{key:s,value:o}=n;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"||n.alwaysSet)&&(a[s.value]=o.value)}return{status:t.value,value:a}}},R=Object.freeze({status:"aborted"}),ca=e=>({status:"dirty",value:e}),ye=e=>({status:"valid",value:e}),Yu=e=>e.status==="aborted",Hu=e=>e.status==="dirty",xn=e=>e.status==="valid",Tn=e=>typeof Promise<"u"&&e instanceof Promise;function Ms(e,t,r,a){if(r==="a"&&!a)throw new TypeError("Private accessor was defined without a getter");if(typeof t=="function"?e!==t||!a:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return r==="m"?a:r==="a"?a.call(e):a?a.value:t.get(e)}function DA(e,t,r,a,n){if(a==="m")throw new TypeError("Private method is not writable");if(a==="a"&&!n)throw new TypeError("Private accessor was defined without a setter");if(typeof t=="function"?e!==t||!n:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return a==="a"?n.call(e,r):n?n.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 wn,Sn,Qe=class{constructor(t,r,a,n){this._cachedPath=[],this.parent=t,this.data=r,this._path=a,this._key=n}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(xn(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 Pe(e.common.issues);return this._error=r,this._error}}};function P(e){if(!e)return{};let{errorMap:t,invalid_type_error:r,required_error:a,description:n}=e;if(t&&(r||a))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return t?{errorMap:t,description:n}:{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??a)!==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:n}}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 Mt(t.data)}_getOrReturnCtx(t,r){return r||{common:t.parent.common,data:t.data,parsedType:Mt(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}_processInputParams(t){return{status:new le,ctx:{common:t.parent.common,data:t.data,parsedType:Mt(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}}_parseSync(t){let r=this._parse(t);if(Tn(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 a=this.safeParse(t,r);if(a.success)return a.data;throw a.error}safeParse(t,r){var a;let n={common:{issues:[],async:(a=r?.async)!==null&&a!==void 0?a:!1,contextualErrorMap:r?.errorMap},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:Mt(t)},s=this._parseSync({data:t,path:n.path,parent:n});return qA(n,s)}async parseAsync(t,r){let a=await this.safeParseAsync(t,r);if(a.success)return a.data;throw a.error}async safeParseAsync(t,r){let a={common:{issues:[],contextualErrorMap:r?.errorMap,async:!0},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:Mt(t)},n=this._parse({data:t,path:a.path,parent:a}),s=await(Tn(n)?n:Promise.resolve(n));return qA(a,s)}refine(t,r){let a=n=>typeof r=="string"||typeof r>"u"?{message:r}:typeof r=="function"?r(n):r;return this._refinement((n,s)=>{let o=t(n),i=()=>s.addIssue({code:h.custom,...a(n)});return typeof Promise<"u"&&o instanceof Promise?o.then(u=>u?!0:(i(),!1)):o?!0:(i(),!1)})}refinement(t,r){return this._refinement((a,n)=>t(a)?!0:(n.addIssue(typeof r=="function"?r(a,n):r),!1))}_refinement(t){return new Le({schema:this,typeName:E.ZodEffects,effect:{type:"refinement",refinement:t}})}superRefine(t){return this._refinement(t)}optional(){return je.create(this,this._def)}nullable(){return mt.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return xt.create(this,this._def)}promise(){return jt.create(this,this._def)}or(t){return hr.create([this,t],this._def)}and(t){return yr.create(this,t,this._def)}transform(t){return new Le({...P(this._def),schema:this,typeName:E.ZodEffects,effect:{type:"transform",transform:t}})}default(t){let r=typeof t=="function"?t:()=>t;return new Ir({...P(this._def),innerType:this,defaultValue:r,typeName:E.ZodDefault})}brand(){return new En({typeName:E.ZodBranded,type:this,...P(this._def)})}catch(t){let r=typeof t=="function"?t:()=>t;return new wr({...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 Rn.create(this,t)}readonly(){return Sr.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)?)??$/,aM=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,nM="^(\\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])$/,iM=/^(([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})))$/,oM=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,BA="((\\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(`^${BA}$`);function MA(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(`^${MA(e)}$`)}function GA(e){let t=`${BA}T${MA(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)&&iM.test(e))}var Gt=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 a=new le,n;for(let s of this._def.checks)if(s.kind==="min")t.data.length<s.value&&(n=this._getOrReturnCtx(t,n),b(n,{code:h.too_small,minimum:s.value,type:"string",inclusive:!0,exact:!1,message:s.message}),a.dirty());else if(s.kind==="max")t.data.length>s.value&&(n=this._getOrReturnCtx(t,n),b(n,{code:h.too_big,maximum:s.value,type:"string",inclusive:!0,exact:!1,message:s.message}),a.dirty());else if(s.kind==="length"){let o=t.data.length>s.value,i=t.data.length<s.value;(o||i)&&(n=this._getOrReturnCtx(t,n),o?b(n,{code:h.too_big,maximum:s.value,type:"string",inclusive:!0,exact:!0,message:s.message}):i&&b(n,{code:h.too_small,minimum:s.value,type:"string",inclusive:!0,exact:!0,message:s.message}),a.dirty())}else if(s.kind==="email")aM.test(t.data)||(n=this._getOrReturnCtx(t,n),b(n,{validation:"email",code:h.invalid_string,message:s.message}),a.dirty());else if(s.kind==="emoji")Vu||(Vu=new RegExp(nM,"u")),Vu.test(t.data)||(n=this._getOrReturnCtx(t,n),b(n,{validation:"emoji",code:h.invalid_string,message:s.message}),a.dirty());else if(s.kind==="uuid")eM.test(t.data)||(n=this._getOrReturnCtx(t,n),b(n,{validation:"uuid",code:h.invalid_string,message:s.message}),a.dirty());else if(s.kind==="nanoid")tM.test(t.data)||(n=this._getOrReturnCtx(t,n),b(n,{validation:"nanoid",code:h.invalid_string,message:s.message}),a.dirty());else if(s.kind==="cuid")z0.test(t.data)||(n=this._getOrReturnCtx(t,n),b(n,{validation:"cuid",code:h.invalid_string,message:s.message}),a.dirty());else if(s.kind==="cuid2")J0.test(t.data)||(n=this._getOrReturnCtx(t,n),b(n,{validation:"cuid2",code:h.invalid_string,message:s.message}),a.dirty());else if(s.kind==="ulid")X0.test(t.data)||(n=this._getOrReturnCtx(t,n),b(n,{validation:"ulid",code:h.invalid_string,message:s.message}),a.dirty());else if(s.kind==="url")try{new URL(t.data)}catch{n=this._getOrReturnCtx(t,n),b(n,{validation:"url",code:h.invalid_string,message:s.message}),a.dirty()}else s.kind==="regex"?(s.regex.lastIndex=0,s.regex.test(t.data)||(n=this._getOrReturnCtx(t,n),b(n,{validation:"regex",code:h.invalid_string,message:s.message}),a.dirty())):s.kind==="trim"?t.data=t.data.trim():s.kind==="includes"?t.data.includes(s.value,s.position)||(n=this._getOrReturnCtx(t,n),b(n,{code:h.invalid_string,validation:{includes:s.value,position:s.position},message:s.message}),a.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)||(n=this._getOrReturnCtx(t,n),b(n,{code:h.invalid_string,validation:{startsWith:s.value},message:s.message}),a.dirty()):s.kind==="endsWith"?t.data.endsWith(s.value)||(n=this._getOrReturnCtx(t,n),b(n,{code:h.invalid_string,validation:{endsWith:s.value},message:s.message}),a.dirty()):s.kind==="datetime"?GA(s).test(t.data)||(n=this._getOrReturnCtx(t,n),b(n,{code:h.invalid_string,validation:"datetime",message:s.message}),a.dirty()):s.kind==="date"?uM.test(t.data)||(n=this._getOrReturnCtx(t,n),b(n,{code:h.invalid_string,validation:"date",message:s.message}),a.dirty()):s.kind==="time"?cM(s).test(t.data)||(n=this._getOrReturnCtx(t,n),b(n,{code:h.invalid_string,validation:"time",message:s.message}),a.dirty()):s.kind==="duration"?rM.test(t.data)||(n=this._getOrReturnCtx(t,n),b(n,{validation:"duration",code:h.invalid_string,message:s.message}),a.dirty()):s.kind==="ip"?pM(t.data,s.version)||(n=this._getOrReturnCtx(t,n),b(n,{validation:"ip",code:h.invalid_string,message:s.message}),a.dirty()):s.kind==="base64"?oM.test(t.data)||(n=this._getOrReturnCtx(t,n),b(n,{validation:"base64",code:h.invalid_string,message:s.message}),a.dirty()):B.assertNever(s);return{status:a.value,value:t.data}}_regex(t,r,a){return this.refinement(n=>t.test(n),{validation:r,code:h.invalid_string,...S.errToObj(a)})}_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,a;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:(a=t?.local)!==null&&a!==void 0?a:!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}};Gt.create=e=>{var t;return new Gt({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,a=(t.toString().split(".")[1]||"").length,n=r>a?r:a,s=parseInt(e.toFixed(n).replace(".","")),o=parseInt(t.toFixed(n).replace(".",""));return s%o/Math.pow(10,n)}var pr=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 a,n=new le;for(let s of this._def.checks)s.kind==="int"?B.isInteger(t.data)||(a=this._getOrReturnCtx(t,a),b(a,{code:h.invalid_type,expected:"integer",received:"float",message:s.message}),n.dirty()):s.kind==="min"?(s.inclusive?t.data<s.value:t.data<=s.value)&&(a=this._getOrReturnCtx(t,a),b(a,{code:h.too_small,minimum:s.value,type:"number",inclusive:s.inclusive,exact:!1,message:s.message}),n.dirty()):s.kind==="max"?(s.inclusive?t.data>s.value:t.data>=s.value)&&(a=this._getOrReturnCtx(t,a),b(a,{code:h.too_big,maximum:s.value,type:"number",inclusive:s.inclusive,exact:!1,message:s.message}),n.dirty()):s.kind==="multipleOf"?lM(t.data,s.value)!==0&&(a=this._getOrReturnCtx(t,a),b(a,{code:h.not_multiple_of,multipleOf:s.value,message:s.message}),n.dirty()):s.kind==="finite"?Number.isFinite(t.data)||(a=this._getOrReturnCtx(t,a),b(a,{code:h.not_finite,message:s.message}),n.dirty()):B.assertNever(s);return{status:n.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,a,n){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:r,inclusive:a,message:S.toString(n)}]})}_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 a of this._def.checks){if(a.kind==="finite"||a.kind==="int"||a.kind==="multipleOf")return!0;a.kind==="min"?(r===null||a.value>r)&&(r=a.value):a.kind==="max"&&(t===null||a.value<t)&&(t=a.value)}return Number.isFinite(r)&&Number.isFinite(t)}};pr.create=e=>new pr({checks:[],typeName:E.ZodNumber,coerce:e?.coerce||!1,...P(e)});var lr=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 a,n=new le;for(let s of this._def.checks)s.kind==="min"?(s.inclusive?t.data<s.value:t.data<=s.value)&&(a=this._getOrReturnCtx(t,a),b(a,{code:h.too_small,type:"bigint",minimum:s.value,inclusive:s.inclusive,message:s.message}),n.dirty()):s.kind==="max"?(s.inclusive?t.data>s.value:t.data>=s.value)&&(a=this._getOrReturnCtx(t,a),b(a,{code:h.too_big,type:"bigint",maximum:s.value,inclusive:s.inclusive,message:s.message}),n.dirty()):s.kind==="multipleOf"?t.data%s.value!==BigInt(0)&&(a=this._getOrReturnCtx(t,a),b(a,{code:h.not_multiple_of,multipleOf:s.value,message:s.message}),n.dirty()):B.assertNever(s);return{status:n.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,a,n){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:r,inclusive:a,message:S.toString(n)}]})}_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}};lr.create=e=>{var t;return new lr({checks:[],typeName:E.ZodBigInt,coerce:(t=e?.coerce)!==null&&t!==void 0?t:!1,...P(e)})};var dr=class extends L{_parse(t){if(this._def.coerce&&(t.data=!!t.data),this._getType(t)!==v.boolean){let a=this._getOrReturnCtx(t);return b(a,{code:h.invalid_type,expected:v.boolean,received:a.parsedType}),R}return ye(t.data)}};dr.create=e=>new dr({typeName:E.ZodBoolean,coerce:e?.coerce||!1,...P(e)});var fr=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 a=new le,n;for(let s of this._def.checks)s.kind==="min"?t.data.getTime()<s.value&&(n=this._getOrReturnCtx(t,n),b(n,{code:h.too_small,message:s.message,inclusive:!0,exact:!1,minimum:s.value,type:"date"}),a.dirty()):s.kind==="max"?t.data.getTime()>s.value&&(n=this._getOrReturnCtx(t,n),b(n,{code:h.too_big,message:s.message,inclusive:!0,exact:!1,maximum:s.value,type:"date"}),a.dirty()):B.assertNever(s);return{status:a.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}};fr.create=e=>new fr({checks:[],coerce:e?.coerce||!1,typeName:E.ZodDate,...P(e)});var la=class extends L{_parse(t){if(this._getType(t)!==v.symbol){let a=this._getOrReturnCtx(t);return b(a,{code:h.invalid_type,expected:v.symbol,received:a.parsedType}),R}return ye(t.data)}};la.create=e=>new la({typeName:E.ZodSymbol,...P(e)});var mr=class extends L{_parse(t){if(this._getType(t)!==v.undefined){let a=this._getOrReturnCtx(t);return b(a,{code:h.invalid_type,expected:v.undefined,received:a.parsedType}),R}return ye(t.data)}};mr.create=e=>new mr({typeName:E.ZodUndefined,...P(e)});var gr=class extends L{_parse(t){if(this._getType(t)!==v.null){let a=this._getOrReturnCtx(t);return b(a,{code:h.invalid_type,expected:v.null,received:a.parsedType}),R}return ye(t.data)}};gr.create=e=>new gr({typeName:E.ZodNull,...P(e)});var Ft=class extends L{constructor(){super(...arguments),this._any=!0}_parse(t){return ye(t.data)}};Ft.create=e=>new Ft({typeName:E.ZodAny,...P(e)});var St=class extends L{constructor(){super(...arguments),this._unknown=!0}_parse(t){return ye(t.data)}};St.create=e=>new St({typeName:E.ZodUnknown,...P(e)});var Xe=class extends L{_parse(t){let r=this._getOrReturnCtx(t);return b(r,{code:h.invalid_type,expected:v.never,received:r.parsedType}),R}};Xe.create=e=>new Xe({typeName:E.ZodNever,...P(e)});var da=class extends L{_parse(t){if(this._getType(t)!==v.undefined){let a=this._getOrReturnCtx(t);return b(a,{code:h.invalid_type,expected:v.void,received:a.parsedType}),R}return ye(t.data)}};da.create=e=>new da({typeName:E.ZodVoid,...P(e)});var xt=class e extends L{_parse(t){let{ctx:r,status:a}=this._processInputParams(t),n=this._def;if(r.parsedType!==v.array)return b(r,{code:h.invalid_type,expected:v.array,received:r.parsedType}),R;if(n.exactLength!==null){let o=r.data.length>n.exactLength.value,i=r.data.length<n.exactLength.value;(o||i)&&(b(r,{code:o?h.too_big:h.too_small,minimum:i?n.exactLength.value:void 0,maximum:o?n.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:n.exactLength.message}),a.dirty())}if(n.minLength!==null&&r.data.length<n.minLength.value&&(b(r,{code:h.too_small,minimum:n.minLength.value,type:"array",inclusive:!0,exact:!1,message:n.minLength.message}),a.dirty()),n.maxLength!==null&&r.data.length>n.maxLength.value&&(b(r,{code:h.too_big,maximum:n.maxLength.value,type:"array",inclusive:!0,exact:!1,message:n.maxLength.message}),a.dirty()),r.common.async)return Promise.all([...r.data].map((o,i)=>n.type._parseAsync(new Qe(r,o,r.path,i)))).then(o=>le.mergeArray(a,o));let s=[...r.data].map((o,i)=>n.type._parseSync(new Qe(r,o,r.path,i)));return le.mergeArray(a,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)}};xt.create=(e,t)=>new xt({type:e,minLength:null,maxLength:null,exactLength:null,typeName:E.ZodArray,...P(t)});function ua(e){if(e instanceof we){let t={};for(let r in e.shape){let a=e.shape[r];t[r]=je.create(ua(a))}return new we({...e._def,shape:()=>t})}else return e instanceof xt?new xt({...e._def,type:ua(e.element)}):e instanceof je?je.create(ua(e.unwrap())):e instanceof mt?mt.create(ua(e.unwrap())):e instanceof ft?ft.create(e.items.map(t=>ua(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:a,ctx:n}=this._processInputParams(t),{shape:s,keys:o}=this._getCached(),i=[];if(!(this._def.catchall instanceof Xe&&this._def.unknownKeys==="strip"))for(let d in n.data)o.includes(d)||i.push(d);let u=[];for(let d of o){let f=s[d],g=n.data[d];u.push({key:{status:"valid",value:d},value:f._parse(new Qe(n,g,n.path,d)),alwaysSet:d in n.data})}if(this._def.catchall instanceof Xe){let d=this._def.unknownKeys;if(d==="passthrough")for(let f of i)u.push({key:{status:"valid",value:f},value:{status:"valid",value:n.data[f]}});else if(d==="strict")i.length>0&&(b(n,{code:h.unrecognized_keys,keys:i}),a.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=n.data[f];u.push({key:{status:"valid",value:f},value:d._parse(new Qe(n,g,n.path,f)),alwaysSet:f in n.data})}}return n.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=>le.mergeObjectSync(a,d)):le.mergeObjectSync(a,u)}get shape(){return this._def.shape()}strict(t){return S.errToObj,new e({...this._def,unknownKeys:"strict",...t!==void 0?{errorMap:(r,a)=>{var n,s,o,i;let u=(o=(s=(n=this._def).errorMap)===null||s===void 0?void 0:s.call(n,r,a).message)!==null&&o!==void 0?o:a.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(a=>{t[a]&&this.shape[a]&&(r[a]=this.shape[a])}),new e({...this._def,shape:()=>r})}omit(t){let r={};return B.objectKeys(this.shape).forEach(a=>{t[a]||(r[a]=this.shape[a])}),new e({...this._def,shape:()=>r})}deepPartial(){return ua(this)}partial(t){let r={};return B.objectKeys(this.shape).forEach(a=>{let n=this.shape[a];t&&!t[a]?r[a]=n:r[a]=n.optional()}),new e({...this._def,shape:()=>r})}required(t){let r={};return B.objectKeys(this.shape).forEach(a=>{if(t&&!t[a])r[a]=this.shape[a];else{let s=this.shape[a];for(;s instanceof je;)s=s._def.innerType;r[a]=s}}),new e({...this._def,shape:()=>r})}keyof(){return FA(B.objectKeys(this.shape))}};we.create=(e,t)=>new we({shape:()=>e,unknownKeys:"strip",catchall:Xe.create(),typeName:E.ZodObject,...P(t)});we.strictCreate=(e,t)=>new we({shape:()=>e,unknownKeys:"strict",catchall:Xe.create(),typeName:E.ZodObject,...P(t)});we.lazycreate=(e,t)=>new we({shape:e,unknownKeys:"strip",catchall:Xe.create(),typeName:E.ZodObject,...P(t)});var hr=class extends L{_parse(t){let{ctx:r}=this._processInputParams(t),a=this._def.options;function n(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 Pe(i.ctx.common.issues));return b(r,{code:h.invalid_union,unionErrors:o}),R}if(r.common.async)return Promise.all(a.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(n);{let s,o=[];for(let u of a){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 Pe(u));return b(r,{code:h.invalid_union,unionErrors:i}),R}}get options(){return this._def.options}};hr.create=(e,t)=>new hr({options:e,typeName:E.ZodUnion,...P(t)});var wt=e=>e instanceof br?wt(e.schema):e instanceof Le?wt(e.innerType()):e instanceof Ar?[e.value]:e instanceof vr?e.options:e instanceof _r?B.objectValues(e.enum):e instanceof Ir?wt(e._def.innerType):e instanceof mr?[void 0]:e instanceof gr?[null]:e instanceof je?[void 0,...wt(e.unwrap())]:e instanceof mt?[null,...wt(e.unwrap())]:e instanceof En||e instanceof Sr?wt(e.unwrap()):e instanceof wr?wt(e._def.innerType):[],Gs=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 a=this.discriminator,n=r.data[a],s=this.optionsMap.get(n);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:[a]}),R)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(t,r,a){let n=new Map;for(let s of r){let o=wt(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(n.has(i))throw new Error(`Discriminator property ${String(t)} has duplicate value ${String(i)}`);n.set(i,s)}}return new e({typeName:E.ZodDiscriminatedUnion,discriminator:t,options:r,optionsMap:n,...P(a)})}};function Zu(e,t){let r=Mt(e),a=Mt(t);if(e===t)return{valid:!0,data:e};if(r===v.object&&a===v.object){let n=B.objectKeys(t),s=B.objectKeys(e).filter(i=>n.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&&a===v.array){if(e.length!==t.length)return{valid:!1};let n=[];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};n.push(u.data)}return{valid:!0,data:n}}else return r===v.date&&a===v.date&&+e==+t?{valid:!0,data:e}:{valid:!1}}var yr=class extends L{_parse(t){let{status:r,ctx:a}=this._processInputParams(t),n=(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(a,{code:h.invalid_intersection_types}),R)};return a.common.async?Promise.all([this._def.left._parseAsync({data:a.data,path:a.path,parent:a}),this._def.right._parseAsync({data:a.data,path:a.path,parent:a})]).then(([s,o])=>n(s,o)):n(this._def.left._parseSync({data:a.data,path:a.path,parent:a}),this._def.right._parseSync({data:a.data,path:a.path,parent:a}))}};yr.create=(e,t,r)=>new yr({left:e,right:t,typeName:E.ZodIntersection,...P(r)});var ft=class e extends L{_parse(t){let{status:r,ctx:a}=this._processInputParams(t);if(a.parsedType!==v.array)return b(a,{code:h.invalid_type,expected:v.array,received:a.parsedType}),R;if(a.data.length<this._def.items.length)return b(a,{code:h.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),R;!this._def.rest&&a.data.length>this._def.items.length&&(b(a,{code:h.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),r.dirty());let s=[...a.data].map((o,i)=>{let u=this._def.items[i]||this._def.rest;return u?u._parse(new Qe(a,o,a.path,i)):null}).filter(o=>!!o);return a.common.async?Promise.all(s).then(o=>le.mergeArray(r,o)):le.mergeArray(r,s)}get items(){return this._def.items}rest(t){return new e({...this._def,rest:t})}};ft.create=(e,t)=>{if(!Array.isArray(e))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new ft({items:e,typeName:E.ZodTuple,rest:null,...P(t)})};var Fs=class e extends L{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){let{status:r,ctx:a}=this._processInputParams(t);if(a.parsedType!==v.object)return b(a,{code:h.invalid_type,expected:v.object,received:a.parsedType}),R;let n=[],s=this._def.keyType,o=this._def.valueType;for(let i in a.data)n.push({key:s._parse(new Qe(a,i,a.path,i)),value:o._parse(new Qe(a,a.data[i],a.path,i)),alwaysSet:i in a.data});return a.common.async?le.mergeObjectAsync(r,n):le.mergeObjectSync(r,n)}get element(){return this._def.valueType}static create(t,r,a){return r instanceof L?new e({keyType:t,valueType:r,typeName:E.ZodRecord,...P(a)}):new e({keyType:Gt.create(),valueType:t,typeName:E.ZodRecord,...P(r)})}},fa=class extends L{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){let{status:r,ctx:a}=this._processInputParams(t);if(a.parsedType!==v.map)return b(a,{code:h.invalid_type,expected:v.map,received:a.parsedType}),R;let n=this._def.keyType,s=this._def.valueType,o=[...a.data.entries()].map(([i,u],d)=>({key:n._parse(new Qe(a,i,a.path,[d,"key"])),value:s._parse(new Qe(a,u,a.path,[d,"value"]))}));if(a.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}}}};fa.create=(e,t,r)=>new fa({valueType:t,keyType:e,typeName:E.ZodMap,...P(r)});var ma=class e extends L{_parse(t){let{status:r,ctx:a}=this._processInputParams(t);if(a.parsedType!==v.set)return b(a,{code:h.invalid_type,expected:v.set,received:a.parsedType}),R;let n=this._def;n.minSize!==null&&a.data.size<n.minSize.value&&(b(a,{code:h.too_small,minimum:n.minSize.value,type:"set",inclusive:!0,exact:!1,message:n.minSize.message}),r.dirty()),n.maxSize!==null&&a.data.size>n.maxSize.value&&(b(a,{code:h.too_big,maximum:n.maxSize.value,type:"set",inclusive:!0,exact:!1,message:n.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=[...a.data.values()].map((u,d)=>s._parse(new Qe(a,u,a.path,d)));return a.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)}};ma.create=(e,t)=>new ma({valueType:e,minSize:null,maxSize:null,typeName:E.ZodSet,...P(t)});var Qs=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 a(i,u){return Bs({data:i,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,Ds(),pa].filter(d=>!!d),issueData:{code:h.invalid_arguments,argumentsError:u}})}function n(i,u){return Bs({data:i,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,Ds(),pa].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 jt){let i=this;return ye(async function(...u){let d=new Pe([]),f=await i._def.args.parseAsync(u,s).catch(I=>{throw d.addIssue(a(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(n(g,I)),d})})}else{let i=this;return ye(function(...u){let d=i._def.args.safeParse(u,s);if(!d.success)throw new Pe([a(u,d.error)]);let f=Reflect.apply(o,this,d.data),g=i._def.returns.safeParse(f,s);if(!g.success)throw new Pe([n(f,g.error)]);return g.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...t){return new e({...this._def,args:ft.create(t).rest(St.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,a){return new e({args:t||ft.create([]).rest(St.create()),returns:r||St.create(),typeName:E.ZodFunction,...P(a)})}},br=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})}};br.create=(e,t)=>new br({getter:e,typeName:E.ZodLazy,...P(t)});var Ar=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}};Ar.create=(e,t)=>new Ar({value:e,typeName:E.ZodLiteral,...P(t)});function FA(e,t){return new vr({values:e,typeName:E.ZodEnum,...P(t)})}var vr=class e extends L{constructor(){super(...arguments),wn.set(this,void 0)}_parse(t){if(typeof t.data!="string"){let r=this._getOrReturnCtx(t),a=this._def.values;return b(r,{expected:B.joinValues(a),received:r.parsedType,code:h.invalid_type}),R}if(Ms(this,wn,"f")||DA(this,wn,new Set(this._def.values),"f"),!Ms(this,wn,"f").has(t.data)){let r=this._getOrReturnCtx(t),a=this._def.values;return b(r,{received:r.data,code:h.invalid_enum_value,options:a}),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(a=>!t.includes(a)),{...this._def,...r})}};wn=new WeakMap;vr.create=FA;var _r=class extends L{constructor(){super(...arguments),Sn.set(this,void 0)}_parse(t){let r=B.getValidEnumValues(this._def.values),a=this._getOrReturnCtx(t);if(a.parsedType!==v.string&&a.parsedType!==v.number){let n=B.objectValues(r);return b(a,{expected:B.joinValues(n),received:a.parsedType,code:h.invalid_type}),R}if(Ms(this,Sn,"f")||DA(this,Sn,new Set(B.getValidEnumValues(this._def.values)),"f"),!Ms(this,Sn,"f").has(t.data)){let n=B.objectValues(r);return b(a,{received:a.data,code:h.invalid_enum_value,options:n}),R}return ye(t.data)}get enum(){return this._def.values}};Sn=new WeakMap;_r.create=(e,t)=>new _r({values:e,typeName:E.ZodNativeEnum,...P(t)});var jt=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 a=r.parsedType===v.promise?r.data:Promise.resolve(r.data);return ye(a.then(n=>this._def.type.parseAsync(n,{path:r.path,errorMap:r.common.contextualErrorMap})))}};jt.create=(e,t)=>new jt({type:e,typeName:E.ZodPromise,...P(t)});var Le=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:a}=this._processInputParams(t),n=this._def.effect||null,s={addIssue:o=>{b(a,o),o.fatal?r.abort():r.dirty()},get path(){return a.path}};if(s.addIssue=s.addIssue.bind(s),n.type==="preprocess"){let o=n.transform(a.data,s);if(a.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:a.path,parent:a});return u.status==="aborted"?R:u.status==="dirty"||r.value==="dirty"?ca(u.value):u});{if(r.value==="aborted")return R;let i=this._def.schema._parseSync({data:o,path:a.path,parent:a});return i.status==="aborted"?R:i.status==="dirty"||r.value==="dirty"?ca(i.value):i}}if(n.type==="refinement"){let o=i=>{let u=n.refinement(i,s);if(a.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(a.common.async===!1){let i=this._def.schema._parseSync({data:a.data,path:a.path,parent:a});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:a.data,path:a.path,parent:a}).then(i=>i.status==="aborted"?R:(i.status==="dirty"&&r.dirty(),o(i.value).then(()=>({status:r.value,value:i.value}))))}if(n.type==="transform")if(a.common.async===!1){let o=this._def.schema._parseSync({data:a.data,path:a.path,parent:a});if(!xn(o))return o;let i=n.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:a.data,path:a.path,parent:a}).then(o=>xn(o)?Promise.resolve(n.transform(o.value,s)).then(i=>({status:r.value,value:i})):o);B.assertNever(n)}};Le.create=(e,t,r)=>new Le({schema:e,typeName:E.ZodEffects,effect:t,...P(r)});Le.createWithPreprocess=(e,t,r)=>new Le({schema:t,effect:{type:"preprocess",transform:e},typeName:E.ZodEffects,...P(r)});var je=class extends L{_parse(t){return this._getType(t)===v.undefined?ye(void 0):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}};je.create=(e,t)=>new je({innerType:e,typeName:E.ZodOptional,...P(t)});var mt=class extends L{_parse(t){return this._getType(t)===v.null?ye(null):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}};mt.create=(e,t)=>new mt({innerType:e,typeName:E.ZodNullable,...P(t)});var Ir=class extends L{_parse(t){let{ctx:r}=this._processInputParams(t),a=r.data;return r.parsedType===v.undefined&&(a=this._def.defaultValue()),this._def.innerType._parse({data:a,path:r.path,parent:r})}removeDefault(){return this._def.innerType}};Ir.create=(e,t)=>new Ir({innerType:e,typeName:E.ZodDefault,defaultValue:typeof t.default=="function"?t.default:()=>t.default,...P(t)});var wr=class extends L{_parse(t){let{ctx:r}=this._processInputParams(t),a={...r,common:{...r.common,issues:[]}},n=this._def.innerType._parse({data:a.data,path:a.path,parent:{...a}});return Tn(n)?n.then(s=>({status:"valid",value:s.status==="valid"?s.value:this._def.catchValue({get error(){return new Pe(a.common.issues)},input:a.data})})):{status:"valid",value:n.status==="valid"?n.value:this._def.catchValue({get error(){return new Pe(a.common.issues)},input:a.data})}}removeCatch(){return this._def.innerType}};wr.create=(e,t)=>new wr({innerType:e,typeName:E.ZodCatch,catchValue:typeof t.catch=="function"?t.catch:()=>t.catch,...P(t)});var ga=class extends L{_parse(t){if(this._getType(t)!==v.nan){let a=this._getOrReturnCtx(t);return b(a,{code:h.invalid_type,expected:v.nan,received:a.parsedType}),R}return{status:"valid",value:t.data}}};ga.create=e=>new ga({typeName:E.ZodNaN,...P(e)});var dM=Symbol("zod_brand"),En=class extends L{_parse(t){let{ctx:r}=this._processInputParams(t),a=r.data;return this._def.type._parse({data:a,path:r.path,parent:r})}unwrap(){return this._def.type}},Rn=class e extends L{_parse(t){let{status:r,ctx:a}=this._processInputParams(t);if(a.common.async)return(async()=>{let s=await this._def.in._parseAsync({data:a.data,path:a.path,parent:a});return s.status==="aborted"?R:s.status==="dirty"?(r.dirty(),ca(s.value)):this._def.out._parseAsync({data:s.value,path:a.path,parent:a})})();{let n=this._def.in._parseSync({data:a.data,path:a.path,parent:a});return n.status==="aborted"?R:n.status==="dirty"?(r.dirty(),{status:"dirty",value:n.value}):this._def.out._parseSync({data:n.value,path:a.path,parent:a})}}static create(t,r){return new e({in:t,out:r,typeName:E.ZodPipeline})}},Sr=class extends L{_parse(t){let r=this._def.innerType._parse(t),a=n=>(xn(n)&&(n.value=Object.freeze(n.value)),n);return Tn(r)?r.then(n=>a(n)):a(r)}unwrap(){return this._def.innerType}};Sr.create=(e,t)=>new Sr({innerType:e,typeName:E.ZodReadonly,...P(t)});function jA(e,t={},r){return e?Ft.create().superRefine((a,n)=>{var s,o;if(!e(a)){let i=typeof t=="function"?t(a):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;n.addIssue({code:"custom",...d,fatal:u})}}):Ft.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}`})=>jA(r=>r instanceof e,t),QA=Gt.create,$A=pr.create,gM=ga.create,hM=lr.create,WA=dr.create,yM=fr.create,bM=la.create,AM=mr.create,vM=gr.create,_M=Ft.create,IM=St.create,wM=Xe.create,SM=da.create,xM=xt.create,TM=we.create,EM=we.strictCreate,RM=hr.create,OM=Gs.create,CM=yr.create,PM=ft.create,LM=Fs.create,UM=fa.create,qM=ma.create,NM=Qs.create,kM=br.create,DM=Ar.create,BM=vr.create,MM=_r.create,GM=jt.create,NA=Le.create,FM=je.create,jM=mt.create,QM=Le.createWithPreprocess,$M=Rn.create,WM=()=>QA().optional(),VM=()=>$A().optional(),KM=()=>WA().optional(),YM={string:e=>Gt.create({...e,coerce:!0}),number:e=>pr.create({...e,coerce:!0}),boolean:e=>dr.create({...e,coerce:!0}),bigint:e=>lr.create({...e,coerce:!0}),date:e=>fr.create({...e,coerce:!0})},HM=R,y=Object.freeze({__proto__:null,defaultErrorMap:pa,setErrorMap:H0,getErrorMap:Ds,makeIssue:Bs,EMPTY_PATH:Z0,addIssueToContext:b,ParseStatus:le,INVALID:R,DIRTY:ca,OK:ye,isAborted:Yu,isDirty:Hu,isValid:xn,isAsync:Tn,get util(){return B},get objectUtil(){return Ku},ZodParsedType:v,getParsedType:Mt,ZodType:L,datetimeRegex:GA,ZodString:Gt,ZodNumber:pr,ZodBigInt:lr,ZodBoolean:dr,ZodDate:fr,ZodSymbol:la,ZodUndefined:mr,ZodNull:gr,ZodAny:Ft,ZodUnknown:St,ZodNever:Xe,ZodVoid:da,ZodArray:xt,ZodObject:we,ZodUnion:hr,ZodDiscriminatedUnion:Gs,ZodIntersection:yr,ZodTuple:ft,ZodRecord:Fs,ZodMap:fa,ZodSet:ma,ZodFunction:Qs,ZodLazy:br,ZodLiteral:Ar,ZodEnum:vr,ZodNativeEnum:_r,ZodPromise:jt,ZodEffects:Le,ZodTransformer:Le,ZodOptional:je,ZodNullable:mt,ZodDefault:Ir,ZodCatch:wr,ZodNaN:ga,BRAND:dM,ZodBranded:En,ZodPipeline:Rn,ZodReadonly:Sr,custom:jA,Schema:L,ZodSchema:L,late:fM,get ZodFirstPartyTypeKind(){return E},coerce:YM,any:_M,array:xM,bigint:hM,boolean:WA,date:yM,discriminatedUnion:OM,effect:NA,enum:BM,function:NM,instanceof:mM,intersection:CM,lazy:kM,literal:DM,map:UM,nan:gM,nativeEnum:MM,never:wM,null:vM,nullable:jM,number:$A,object:TM,oboolean:KM,onumber:VM,optional:FM,ostring:WM,pipeline:$M,preprocess:QM,promise:GM,record:LM,set:qM,strictObject:EM,string:QA,symbol:bM,transformer:NA,tuple:PM,undefined:AM,union:RM,unknown:IM,void:SM,NEVER:HM,ZodIssueCode:h,quotelessJson:Y0,ZodError:Pe});var VA=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,VA.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 $s(e){return ee.user(`Summarize this text:
|
|
39
39
|
${e}.
|
|
40
|
-
Only return the summary.`)}function
|
|
41
|
-
${
|
|
40
|
+
Only return the summary.`)}function zu(e,t){return ee.user(`Return the category of this text: "${e}". Based on these categories: ${t.join(", ")}. Only return the category.`)}function Ju(e){return ee.user(`Clean the following string: "${e}". Remove any spelling mistakes or data issues. Only return the cleaned string itself and nothing else.`)}function ZM(e,t){return ee.user(`Given the table schema:
|
|
41
|
+
${t}
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
Generate a SQL query for the following request:
|
|
44
|
+
${e}.
|
|
45
|
+
Only provide the SQL.`)}function zM(e){return ee.user(`Generate JavaScript code for the following request:
|
|
46
|
+
${e}.
|
|
47
|
+
Only provide the JS and nothing else.`)}function Xu(e){return ee.user(`Generate a node-cron compatible expression based on the following prompt. Return only the cron expression (without backticks), and if not possible return only 'Error generating cron' with a short explanation:
|
|
48
|
+
${e}`)}function ec(e,t){return ee.user(`Translate the following text: "${e}" into ${t}. Only return the translation.`)}function tc(e){return ee.user(`Return the sentiment of this text: "${e}". Only return the sentiment.`)}function rc(e){return ee.user(`Search the web for the following: "${e}". Only return the top results.`)}function ac(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:
|
|
45
49
|
|
|
46
|
-
${
|
|
47
|
-
`)}`)
|
|
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
|
+
|
|
53
|
+
${t.map(({name:n,code:s})=>{let o=s.replace(/^\s*return /g,"");return`- snippets.${n} = ${o.trim()}`}).join(`
|
|
54
|
+
`)}`),ee.system(`
|
|
48
55
|
You are a helpful expert in writing JavaScript. A user is asking you for help
|
|
49
56
|
writing some JavaScript for their application.
|
|
50
57
|
|
|
@@ -131,6 +138,36 @@ This is incorrect because it references an undefined variable "amount". It is
|
|
|
131
138
|
important that you never reference a variable that is not defined. If you need
|
|
132
139
|
a variable, it will be provided to you as a binding.
|
|
133
140
|
|
|
134
|
-
${
|
|
135
|
-
|
|
136
|
-
${r}`)}var uh=require("@budibase/shared-core");function Ui(e,t){return t.map(r=>e[r]).join(" ")}var ft=class{constructor({model:t,apiKey:r,measureUsage:n}){this.model=t,this.apiKey=r,this.measureUsage=n,this.maxTokens=parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"300")}async prompt(t){typeof t=="string"&&(t=ie.user(t));let r=await this.chatCompletion(t);return this.measureUsage&&r.tokensUsed!==void 0&&r.tokensUsed>0&&await os(r.tokensUsed),r}async summarizeText(t){return this.prompt(qi(t))}async generateCronExpression(t){return this.prompt(nh(t))}async operation(t,r){let n=this.promptForOperation(t,r);return this.prompt(n)}promptForOperation(t,r){let{operation:n,column:a,columns:o,language:i,categories:s,prompt:c}=t;switch(n){case dt.AIOperationEnum.SUMMARISE_TEXT:return qi(Ui(r,o));case dt.AIOperationEnum.CLEAN_DATA:return rh(r[a]);case dt.AIOperationEnum.TRANSLATE:return ah(r[a],i);case dt.AIOperationEnum.CATEGORISE_TEXT:if(!s)throw Error("No categories provided for categorise text operation. Please provide categories.");return th(Ui(r,o),s.split(","));case dt.AIOperationEnum.SENTIMENT_ANALYSIS:return oh(r[a]);case dt.AIOperationEnum.PROMPT:return c;case dt.AIOperationEnum.SEARCH_WEB:return sh(Ui(r,o));default:throw uh.utils.unreachable(n)}}async generateJs(t,r){let{bindings:n=[],snippets:a=[]}=r||{};return await this.prompt(ih(n,a).user(t))}};var ph=require("openai/helpers/zod");function Bi(e){if(!e)return;if(e==="text")return{type:"text"};if(e==="json")return{type:"json_object"};let{validator:t,key:r}=wn[e];return(0,ph.zodResponseFormat)(t,r)}var qt=class extends ft{constructor({model:r,apiKey:n,measureUsage:a}){super({model:r,apiKey:n,measureUsage:a});this.client=new Di.default({apiKey:n})}measureTokenUsage(r){if(!r)return 0;let n=r.prompt_tokens;return r.completion_tokens*3+n}async chatCompletion(r){try{let n=await this.client.chat.completions.create({model:this.model,messages:r.messages,max_tokens:this.maxTokens,response_format:Bi(r.responseFormat)}),a=this.measureTokenUsage(n.usage);return{message:n.choices[0]?.message.content||void 0,tokensUsed:a}}catch(n){throw n instanceof Di.default.APIError&&console.error(`OpenAI Prompt failed with error of type ${n.type} and status: ${n.status}:${n.code} - ${n.message}`),n}}};var Ni=C(require("@anthropic-ai/sdk"));var Oa=class extends ft{constructor(r){super(r);this.client=new Ni.default({apiKey:r.apiKey})}firstTextBlock(r){for(let n of r.content)if(n.type==="text")return n.text}async chatCompletion(r){try{let n=await this.client.messages.create({model:this.model,messages:r.messages.map(({content:o})=>({role:"user",content:o})),max_tokens:this.maxTokens});return{message:this.firstTextBlock(n)}}catch(n){throw n instanceof Ni.default.APIError&&console.error(`Anthropic Prompt failed with error ${n.name} and status: ${n.status}`),n}}};var gt=require("@budibase/backend-core"),La=class extends ft{constructor(t){if(super(t),!gt.env.SELF_HOSTED)throw new Error("BudibaseAI LLM provider is only for use in self-host environments.");if(!gt.env.BUDICLOUD_URL)throw new Error("BUDICLOUD_URL is not set");if(!this.apiKey)throw new Error("BudibaseAI API key is not set")}async chatCompletion(t){let r=await fetch(`${gt.env.BUDICLOUD_URL}/api/ai/chat`,{method:"POST",headers:{"Content-Type":"application/json",[gt.constants.Header.LICENSE_KEY]:this.apiKey},body:JSON.stringify({messages:t.messages})});if(!r.ok)throw await gt.HTTPError.fromResponse(r);let n=await r.json();return{message:n.message,tokensUsed:n.tokensUsed}}};var Ut=require("dd-trace"),qa="gpt-4o-mini",pM={OpenAI:qt,Anthropic:Oa,TogetherAI:qt,AzureOpenAI:qt,Custom:qt,BudibaseAI:La};function cM(e){for(let t in e)if(e[t].isDefault)return e[t]}async function lM(){return await Ut.tracer.trace("getAICustomConfig",async e=>{if(!await zo()){e.addTags({enabled:!1,reason:"feature flag disabled"});return}if(ge.context.isSelfHostUsingCloud()){e.addTags({enabled:!1,reason:"is self host using cloud"});return}let t=await ge.configs.getAIConfig();if(!t){e.addTags({enabled:!1,reason:"no config found"});return}let r=cM(t.config);if(!r){e.addTags({enabled:!1,reason:"no provider found"});return}if(!r.apiKey){e.addTags({enabled:!1,reason:"no api key found"});return}return e.addTags({enabled:!0}),{provider:r.provider,model:r.defaultModel||qa,apiKey:r.apiKey,measureUsage:!1}})}function dM(){return Ut.tracer.trace("getSelfHostOpenAIKeyConfig",e=>{if(!ge.env.SELF_HOSTED||!ge.env.OPENAI_API_KEY){e.addTags({enabled:!1,reason:"not self host or no api key"});return}return e.addTags({enabled:!0}),{provider:"OpenAI",model:qa,apiKey:ge.env.OPENAI_API_KEY,measureUsage:!1}})}async function fM(){return await Ut.tracer.trace("getBudibaseAIConfig",async e=>{if(!await cn()){e.addTags({enabled:!1,reason:"feature flag disabled"});return}if(!ge.env.OPENAI_API_KEY){e.addTags({enabled:!1,reason:"no api key found"});return}return e.addTags({enabled:!0}),{provider:"OpenAI",apiKey:ge.env.OPENAI_API_KEY,model:qa,measureUsage:!0}})}async function gM(){return await Ut.tracer.trace("getSelfHostBudibaseAIConfig",async e=>{if(!await ge.features.isEnabled(ch.FeatureFlag.AI_JS_GENERATION)){e.addTags({enabled:!1,reason:"feature flag disabled"});return}if(ge.context.isSelfHostUsingCloud()){e.addTags({enabled:!1,reason:"is self host using cloud"});return}let t=await Wo();if(!t){e.addTags({enabled:!1,reason:"no license key found"});return}return e.addTags({enabled:!0}),{provider:"BudibaseAI",apiKey:t,model:qa,measureUsage:!0}})}async function Mi(){return await Ut.tracer.trace("getLLMConfig",async()=>await lM()||dM()||await fM()||await gM())}async function Ua(e){return await Ut.tracer.trace("getLLM",async t=>{let r=await Mi();if(!r){t.addTags({enabled:!1,reason:"no config found"});return}e&&(r.model=e);let n=pM[r.provider];if(!n){t.addTags({enabled:!1,reason:"no provider found",provider:r.provider});return}return new n(r)})}var mM={parseResponseFormat:Bi};var $e=require("@budibase/backend-core");var yM=/```(?:\w+)?\n([\s\S]+?)\n```/;async function Fi(){let e=await Ua();if(!e)throw new $e.HTTPError("No available LLM configurations",500);return e}async function lh(e){let t=await Fi(),{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 dh(e){await $e.features.isEnabled(ki.FeatureFlag.AI_JS_GENERATION)||e.throw(500,"AI JS generation is disabled");let t=await Fi();await $e.context.ensureSnippetContext();let n=$e.context.getCurrentContext()?.snippets||[],{prompt:a,bindings:o=[]}=e.request.body,i=(await t.generateJs(a,{bindings:o,snippets:n})).message||"",s=i.match(yM);s&&(i=s[1]),e.body={code:i}}async function fh(e){await $e.features.isEnabled(ki.FeatureFlag.AI_JS_GENERATION)||e.throw(500,"AI JS generation is disabled"),$e.env.SELF_HOSTED&&e.throw(500,"Budibase AI endpoints are not available in self-host");let t=await Fi(),r=ie.fromRequest(e.request.body),{message:n,tokensUsed:a}=await t.prompt(r);e.body={message:n,tokensUsed:a}}var mh=C(require("@koa/router")),Qi=require("@budibase/backend-core");var vn=require("@budibase/backend-core");async function gh(e,t){let r=e.request.headers[vn.constants.Header.LICENSE_KEY];Array.isArray(r)&&(r=r[0]),r||e.throw(403,"License key not provided");let n=await Qo(r);n||e.throw(403,"License not found or invalid"),n.tenantId||e.throw(403,"License does not have a tenant ID"),await vn.context.doInSelfHostTenantUsingCloud(n.tenantId,async()=>{await vn.context.doInLicenseContext(n,async()=>{await t()})})}var Da=new mh.default;Da.post("/api/ai/cron",Qi.auth.builderOrAdmin,lh);Da.post("/api/ai/js",Qi.auth.builderOrAdmin,dh);Da.post("/api/ai/chat",gh,fh);var yh=Da;async function Ah(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let n=await Pt(t._id);t.roles=n.roles,t.scimInfo=n.scimInfo}let r=await ur(t);e.body={_id:r.id,_rev:r.rev}}async function hh(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of users to add or to remove");let a,o;r&&(a=await is(t,r)),n&&(o=await us(t,n)),e.body={added:a,removed:o}}async function bh(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 ps(t,{appsToAdd:r,appsToRemove:n})}async function Ih(e){e.body={data:await dn()}}async function Sh(e){let{groupId:t,rev:r}=e.params;try{await ss(t,r),e.body={message:"Group deleted successfully"}}catch(n){e.throw(n.status,n)}}async function wh(e){try{e.body=await Pt(e.params.groupId)}catch(t){e.throw(t.status,t)}}async function vh(e){let{pageSize:t=10,bookmark:r,emailSearch:n}=e.request.query,a=e.params.groupId,o={limit:t+1},i=await Ln(a,{...o,emailSearch:n,bookmark:r}),s=n?i[t]?.email:i[t]?._id,c=!!s;e.body={users:i.slice(0,t),bookmark:s,hasNextPage:c}}async function Eh(e){let{groupId:t,appId:r}=e.params;await cs(t,r),e.body={message:"Group app builder access updated."}}async function Rh(e){let{groupId:t,appId:r}=e.params;await ls(t,r),e.body={message:"group app builder access removed."}}var _h=C(require("@koa/router")),me=C(require("joi"));var Ee=require("@budibase/types"),Ve=require("@budibase/backend-core"),xh=new _h.default;function bM(){return Ve.auth.joiValidator.body(me.default.object({_id:me.default.string().optional(),_rev:me.default.string().optional(),color:me.default.string().required(),icon:me.default.string().required(),name:me.default.string().trim().required().max(50),role:me.default.string().optional(),users:me.default.array().optional(),apps:me.default.array().optional(),roles:me.default.object().optional(),createdAt:me.default.string().optional(),updatedAt:me.default.string().optional()}).required())}xh.post("/api/global/groups",Ve.auth.adminOnly,G.requireFeature(Ee.Feature.USER_GROUPS),bM(),Ah).get("/api/global/groups",G.requireFeature(Ee.Feature.USER_GROUPS),Ih).delete("/api/global/groups/:groupId/:rev",G.requireFeature(Ee.Feature.USER_GROUPS),Ve.auth.adminOnly,Ca("groupId"),Sh).get("/api/global/groups/:groupId",G.requireFeature(Ee.Feature.USER_GROUPS),Ve.auth.builderOrAdmin,wh).get("/api/global/groups/:groupId/users",G.requireFeature(Ee.Feature.USER_GROUPS),Ve.auth.builderOrAdmin,vh).post("/api/global/groups/:groupId/users",Ve.auth.adminOnly,G.requireFeature(Ee.Feature.USER_GROUPS),Ca("groupId"),hh).post("/api/global/groups/:groupId/apps",Ve.auth.builderOrAdmin,G.requireFeature(Ee.Feature.USER_GROUPS),bh).post("/api/global/groups/:groupId/app/:appId/builder",Ve.auth.builderOrAdmin,G.requireFeatures(Ee.Feature.USER_GROUPS,Ee.Feature.APP_BUILDERS),Eh).delete("/api/global/groups/:groupId/app/:appId/builder",Ve.auth.builderOrAdmin,G.requireFeatures(Ee.Feature.USER_GROUPS,Ee.Feature.APP_BUILDERS),Rh);var Th=xh;var ji=require("@budibase/types");var Wi=require("@budibase/backend-core");async function Ph(e){e.body={encryptionKeyAvailable:je.isEncryptionKeyAvailable()}}async function Ch(e){e.body={variables:await je.fetch()}}async function Oh(e){let{name:t,production:r,development:n}=e.request.body;await je.update(t,{production:r,development:n});let a=[ji.AppEnvironment.PRODUCTION];r!==n&&a.push(ji.AppEnvironment.DEVELOPMENT),await Wi.events.environmentVariable.created(t,a),e.body={message:`Environment variable "${t}" created.`}}async function Lh(e){let{production:t,development:r}=e.request.body,n=e.params.varName;await je.update(n,{production:t,development:r}),e.body={message:`Environment variable "${n}" updated.`}}async function qh(e){let t=e.params.varName;await je.remove(t),await Wi.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}var Dt=require("@budibase/backend-core"),Dh=C(require("@koa/router")),En=C(require("joi")),Bh=new Dh.default;function Uh(){return Dt.auth.joiValidator.body(En.default.object({name:En.default.string().optional(),production:En.default.string().required(),development:En.default.string().required()}))}Bh.get("/api/env/variables/status",Dt.auth.builderOrAdmin,Ph).get("/api/env/variables",Dt.auth.builderOrAdmin,Ch).post("/api/env/variables",Dt.auth.builderOrAdmin,Uh(),Oh).patch("/api/env/variables/:varName",Dt.auth.builderOrAdmin,Uh(),Lh).delete("/api/env/variables/:varName",Dt.auth.builderOrAdmin,qh);var Nh=Bh;var $i=require("@budibase/backend-core");async function Mh(e){let t=e.request.body,r=await ct.fetch(t);await $i.events.auditLog.filtered(t),e.body=r}async function Gh(e){let t=e.request.body,{stream:r}=ct.download(t);await $i.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}async function kh(e){e.body={events:ct.definitions()}}var Qh=require("@budibase/types"),Bt=require("@budibase/backend-core"),jh=C(require("@koa/router")),Re=C(require("joi"));function Fh(){return Bt.auth.joiValidator.body(Re.default.object({userIds:Re.default.array().items(Re.default.string()).optional(),appIds:Re.default.array().items(Re.default.string()).optional(),events:Re.default.array().items(Re.default.string().valid(...Object.values(Qh.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 Wh=new jh.default;Wh.post("/api/global/auditlogs/search",Bt.auth.adminOnly,Fh(),Mh).get("/api/global/auditlogs/download",Bt.auth.adminOnly,Bt.middleware.querystringToBody,Fh(),Gh).get("/api/global/auditlogs/definitions",Bt.auth.adminOnly,kh);var $h=Wh;var Vi=require("@budibase/types");var Vh=require("@budibase/backend-core");async function yr(e,t){await Wt.appExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}async function Kh(e){let t=e.params.appId;await yr(e,t);let r=e.request.body,n=e.user?._id,a=await ve.triggerAppBackup(t,Vi.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 Hh(e){let t=e.params.appId;await yr(e,t);let r=e.params.backupId,n=e.request.body.name,a=await ve.triggerAppRestore(t,r,n,e.user?._id);a||e.throw(500,"Unable to start restore."),await Vh.events.backup.appBackupRestored(a.metadata),e.body={restoredId:a?.restoreId,message:"Restore triggered - process starting."}}async function Yh(e){let t=e.params.appId;await yr(e,t);let r=e.params.backupId;await ve.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}async function Jh(e){let t=e.params.appId;await yr(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(Vi.AppBackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await ve.fetchAppBackups(t,{paginate:!0,...r})}async function zh(e){let t=e.params.appId;await yr(e,t);let r=e.params.backupId,n=e.request.body;e.body=await ve.updateAppBackup(r,n.name)}async function Xh(e){let t=e.params.appId;await yr(e,t);let r=e.params.backupId,{metadata:n,stream:a}=await ve.getBackupDownloadStream(r);e.attachment(`backup-${n.timestamp}.tar.gz`),e.body=a}var Zh=C(require("@koa/router")),Nt=C(require("joi")),Ba=require("@budibase/types"),mt=require("@budibase/backend-core"),eb=new Zh.default;function vM(){return mt.auth.joiValidator.body(Nt.default.object({trigger:Nt.default.string().valid(...Object.values(Ba.AppBackupTrigger)),type:Nt.default.string().valid(...Object.values(Ba.AppBackupType)),startDate:Nt.default.date(),endDate:Nt.default.date(),page:Nt.default.string()}))}eb.post("/api/apps/:appId/backups",mt.auth.builderOrAdmin,Kh).post("/api/apps/:appId/backups/search",mt.auth.builderOrAdmin,vM(),Jh).get("/api/apps/:appId/backups/:backupId/file",mt.auth.builderOrAdmin,Xh).patch("/api/apps/:appId/backups/:backupId",mt.auth.builderOrAdmin,zh).delete("/api/apps/:appId/backups/:backupId",mt.auth.builderOrAdmin,Yh).post("/api/apps/:appId/backups/:backupId/import",mt.auth.builderOrAdmin,Hh);var tb=eb;var Ob=C(require("@koa/router"));var Na=require("scim-patch");var nb=require("@budibase/backend-core");function rb(e,t){let r=e.request.query[t];if(r!==void 0)return+r}var ab=async e=>{let t=rb(e,"pageSize")??20,r=rb(e,"startIndex"),n;e.request.query.filter&&(n=Q.user.userFilters(e.request.query.filter));let a=await se.get({pageSize:t,skip:r,filters:n});e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:a.total,Resources:a.users.map(Q.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},ob=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await se.find(t);e.body=Q.user.toScimUserResponse(r)},sb=async e=>{let t=Q.user.fromScimUser(e.request.body);try{let r=await se.create(t);e.body=Q.user.toScimUserResponse(r)}catch(r){throw r instanceof nb.EmailUnavailableError&&e.throw(409,"Email already in use"),r}};function EM(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 se.find(e.params.id);t||e.throw(404);let r=Q.user.toScimUserResponse(t),n=e.request.body;try{(0,Na.patchBodyValidation)(n)}catch{}if(EM(n))return Ki(e);let a;try{a=(0,Na.scimPatch)(r,n.Operations)}catch{}a||e.throw(500);let o=Q.user.fromScimUser(a);await se.update(o,{allowChangingEmail:!0}),e.body=Q.user.toScimUserResponse(o)},Ki=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await se.remove(t),e.status=204};var vb=C(wb()),Eb=require("@budibase/shared-core"),Ma=require("scim-patch");var Ga=require("scim2-parse-filter");function Rb(e,t){for(let r of t.split(","))delete e[r]}var _b=async e=>{let r=(await M.fetch()).filter(o=>o.scimInfo?.isSync).map(Q.group.toScimGroupResponse),{filter:n,excludedAttributes:a}=e.request.query;if(n){let o=(0,Ga.filter)((0,Ga.parse)(n));r=r.filter(o)}a&&r.forEach(o=>{Rb(o,a)}),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=Q.group.fromScimGroup(e.request.body),r=await mr.create(t);e.body=Q.group.toScimGroupResponse(r)},Tb=async e=>{let{id:t}=e.params,r=await M.get(t),n=Q.group.toScimGroupResponse(r),{excludedAttributes:a}=e.request.query;a&&Rb(n,a),e.body=n},Pb=async e=>{let{id:t}=e.params,r=await M.get(t);await M.remove(t,r._rev),e.status=204},Cb=async e=>{let{id:t}=e.params,r=await M.get(t),n=Q.group.toScimGroupResponse(r),a=e.request.body;try{(0,Ma.patchBodyValidation)(a)}catch{e.throw(400)}let{true:o,false:i}=(0,vb.default)(a.Operations,s=>s.path==="members");if(i?.length){let s=(0,Ma.scimPatch)(n,i);s||e.throw(500);let c={...Q.group.fromScimGroup(s),_rev:r._rev};await M.save(c)}if(o?.length){let s=[],c=[];for(let{op:f,value:m}of o)switch(f){case"add":case"Add":for(let g of m)s.push(await se.find(g.value));break;case"remove":case"Remove":for(let g of m)c.push(await se.find(g.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:Eb.utils.unreachable(f)}s.length&&await M.addUsers(t,s.map(f=>f._id)),c.length&&await M.removeUsers(t,c.map(f=>f._id))}e.body=Q.group.toScimGroupResponse(await M.get(t))};var Rn=require("@budibase/types"),ye=new Ob.default({prefix:"/api/global/scim/v2"});ye.use(Ci);ye.use(Pi);ye.get("/users",ab);ye.get("/users/:id",In("id"),ob);ye.post("/users",sb);ye.patch("/users/:id",In("id"),ib);ye.delete("/users/:id",In("id"),Ki);ye.get("/groups",_b);ye.post("/groups",G.requireFeature(Rn.Feature.USER_GROUPS),xb);ye.get("/groups/:id",G.requireFeature(Rn.Feature.USER_GROUPS),Sn("id"),Tb);ye.delete("/groups/:id",G.requireFeature(Rn.Feature.USER_GROUPS),Sn("id"),Pb);ye.patch("/groups/:id",G.requireFeature(Rn.Feature.USER_GROUPS),Sn("id"),Cb);var Lb=ye;var Db=C(require("@koa/router"));var Hi=require("@budibase/backend-core");async function qb(e){let{userId:t,appId:r}=e.params,n=await Je.db.getUser(t);if(Hi.users.isGlobalBuilder(n)){e.body={message:"User already admin - no permissions updated."};return}await Je.addAppBuilder(n,r),e.body={message:`User "${n.email}" app builder access updated.`}}async function Ub(e){let{userId:t,appId:r}=e.params,n=await Je.db.getUser(t);if(Hi.users.isGlobalBuilder(n)){e.body={message:"User already admin - no permissions removed."};return}await Je.removeAppBuilder(n,r),e.body={message:`User "${n.email}" app builder access removed.`}}var Yi=require("@budibase/types"),Ji=require("@budibase/backend-core"),Bb=new Db.default;Bb.post("/api/global/users/:userId/app/:appId/builder",Ji.auth.builderOrAdmin,G.requireFeatures(Yi.Feature.APP_BUILDERS),qb).delete("/api/global/users/:userId/app/:appId/builder",Ji.auth.builderOrAdmin,G.requireFeatures(Yi.Feature.APP_BUILDERS),Ub);var Nb=Bb;var Q={};S(Q,{group:()=>Zi,user:()=>Xi});var Xi={};S(Xi,{fromScimUser:()=>ZM,toScimUserResponse:()=>JM,userFilters:()=>eG});var ka=require("@budibase/types"),Mb=require("scim2-parse-filter"),Gb=require("@budibase/backend-core"),kb=require("@budibase/shared-core"),{unreachable:YM}=kb.utils,JM=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===ka.UserStatus.ACTIVE};return(e.firstName||e.lastName)&&(a.name={formatted:[e.firstName,e.lastName].filter(o=>o).join(" "),familyName:e.lastName,givenName:e.firstName}),a},zM=e=>!!e?.id;function XM(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 ZM=e=>{let t=zM(e)?e:void 0,r=XM(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:YM(e.active)}let a,o;return e.name?.givenName?(a=e.name?.givenName,o=e.name?.familyName):a=e.displayName,{tenantId:"",_id:t?.id,userId:t?.id,email:r,firstName:a,lastName:o,scimInfo:{...e,isSync:!0},roles:{},status:n?ka.UserStatus.ACTIVE:ka.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},eG=e=>{let t={equal:{}},r=(0,Mb.parse)(e);function n(a){switch(a.op){case"eq":{let o=a.attrPath,i;switch(o){case"emails.value":i="email";break;default:i=`scimInfo.${o}`}t.equal[i]=a.compValue;break}case"and":for(let o of a.filters)n(o);break;default:console.warn("Filter not handled",{filter:a})}}return n(r),t};var Zi={};S(Zi,{fromScimGroup:()=>nG,toScimGroupResponse:()=>tG});var tG=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}))}),rG=e=>!!e?.id,nG=e=>{let t=rG(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});
|
|
141
|
+
${a}
|
|
142
|
+
|
|
143
|
+
${r}`)}function nc(){let e=`
|
|
144
|
+
Given the following user request, generate a structured JSON schema for Budibase tables. The schema must include table names, fields, data types, and relationships based on the described request. If relevant, infer common fields like timestamps and user references.
|
|
145
|
+
|
|
146
|
+
**Requirements:**
|
|
147
|
+
- **Always generate at least 2 tables.**
|
|
148
|
+
- **A single table is NEVER valid.**
|
|
149
|
+
- **Ensure that at least one table links to another.**
|
|
150
|
+
- **Include a variety of column types, such as text, dropdowns, dates, and numbers.**
|
|
151
|
+
- **Include at least a formula column in one of the tables.**
|
|
152
|
+
- **Include at least a single attachment column in one of the tables.**
|
|
153
|
+
- **Include at least a multiple attachments column in one of the tables.**
|
|
154
|
+
- Define only one side of each relationship. Never define both sides:
|
|
155
|
+
- Always define the side of the relationship that contains the LINK field.
|
|
156
|
+
- Budibase will automatically create the reverse field in the related table. You must **not** define it yourself.
|
|
157
|
+
- Do not manually create any column for the reverse direction \u2014 define only the field that creates the link.
|
|
158
|
+
- You may specify foreignColumnName, but this is just the name the reverse field should have \u2014 do not include the actual reverse column.
|
|
159
|
+
- The reverse field will be created automatically by Budibase, also for many-to-many relationships.
|
|
160
|
+
- **Do not create join-tables. Our structure supports many-to-many out-of-the-box.**
|
|
161
|
+
- **Never include "id", "created_at", or "updated_at" fields** (Budibase adds them automatically).
|
|
162
|
+
`;return ee.system(e)}function sc(){let e='Given the generated schema, add one or more fields of type "AI" to relevant tables to add value to the Budibase user.';return ee.system(e)}function ic(){let e=`
|
|
163
|
+
For each table, populate the data field, add some random data to be created for the given tables.
|
|
164
|
+
|
|
165
|
+
**Requirements:**
|
|
166
|
+
- The data should be random, but not too random. It should look like real data, so don't use things like "foo" or "bar" as values. Use real names, emails, etc.
|
|
167
|
+
- Don't use the same data for different records. Each record should have unique values.
|
|
168
|
+
`;return ee.system(e)}var KA=require("@budibase/shared-core");function oc(e,t){return t.map(r=>e[r]).join(" ")}var $t=class{constructor({model:t,apiKey:r,measureUsage:a}){this.model=t,this.apiKey=r,this.measureUsage=a,this.maxTokens=parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"300")}async prompt(t){typeof t=="string"&&(t=ee.user(t));let r=await this.chatCompletion(t);return this.measureUsage&&r.tokensUsed!==void 0&&r.tokensUsed>0&&await Ao(r.tokensUsed),r}async summarizeText(t){return this.prompt($s(t))}async generateCronExpression(t){return this.prompt(Xu(t))}async operation(t,r){let a=this.promptForOperation(t,r);return this.prompt(a)}promptForOperation(t,r){let{operation:a,column:n,columns:s,language:o,categories:i,prompt:u}=t;switch(a){case Qt.AIOperationEnum.SUMMARISE_TEXT:return $s(oc(r,s));case Qt.AIOperationEnum.CLEAN_DATA:return Ju(r[n]);case Qt.AIOperationEnum.TRANSLATE:return ec(r[n],o);case Qt.AIOperationEnum.CATEGORISE_TEXT:if(!i)throw Error("No categories provided for categorise text operation. Please provide categories.");return zu(oc(r,s),i.split(","));case Qt.AIOperationEnum.SENTIMENT_ANALYSIS:return tc(r[n]);case Qt.AIOperationEnum.PROMPT:return u;case Qt.AIOperationEnum.SEARCH_WEB:return rc(oc(r,s));default:throw KA.utils.unreachable(a)}}async generateJs(t,r){let{bindings:a=[],snippets:n=[]}=r||{};return await this.prompt(ac(a,n).user(t))}};function cc(e){if(e)return e==="text"?{type:"text"}:e==="json"?{type:"json_object"}:e}var xr=class extends $t{constructor({model:r,apiKey:a,measureUsage:n}){super({model:r,apiKey:a,measureUsage:n});this.client=new uc.default({apiKey:a})}measureTokenUsage(r){if(!r)return 0;let a=r.prompt_tokens;return r.completion_tokens*3+a}async chatCompletion(r){try{let a=await this.client.chat.completions.create({model:this.model,messages:r.messages,max_tokens:this.maxTokens,response_format:cc(r.responseFormat)}),n=this.measureTokenUsage(a.usage);return{message:a.choices[0]?.message.content||void 0,tokensUsed:n}}catch(a){throw a instanceof uc.default.APIError&&console.error(`OpenAI Prompt failed with error of type ${a.type} and status: ${a.status}:${a.code} - ${a.message}`),a}}};var Se=require("@budibase/backend-core"),lc=require("@budibase/types");var pc=F(require("@anthropic-ai/sdk"));var Ws=class extends $t{constructor(r){super(r);this.client=new pc.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:s})=>({role:"user",content:s})),max_tokens:this.maxTokens});return{message:this.firstTextBlock(a)}}catch(a){throw a instanceof pc.default.APIError&&console.error(`Anthropic Prompt failed with error ${a.name} and status: ${a.status}`),a}}};var Wt=require("@budibase/backend-core"),Vs=class extends $t{constructor(t){if(super(t),!Wt.env.SELF_HOSTED)throw new Error("BudibaseAI LLM provider is only for use in self-host environments.");if(!Wt.env.BUDICLOUD_URL)throw new Error("BUDICLOUD_URL is not set");if(!this.apiKey)throw new Error("BudibaseAI API key is not set")}async chatCompletion(t){let r=await fetch(`${Wt.env.BUDICLOUD_URL}/api/ai/chat`,{method:"POST",headers:{"Content-Type":"application/json",[Wt.constants.Header.LICENSE_KEY]:this.apiKey},body:JSON.stringify({messages:t.messages,responseFormat:t.responseFormat})});if(!r.ok)throw await Wt.HTTPError.fromResponse(r);let a=await r.json();return{message:a.message,tokensUsed:a.tokensUsed}}};var Tr=require("dd-trace"),Ks="gpt-4o-mini",JM={OpenAI:xr,Anthropic:Ws,TogetherAI:xr,AzureOpenAI:xr,Custom:xr,BudibaseAI:Vs};function XM(e){for(let t in e)if(e[t].isDefault)return e[t]}async function eG(){return await Tr.tracer.trace("getAICustomConfig",async e=>{if(!await po()){e.addTags({enabled:!1,reason:"feature flag disabled"});return}if(Se.context.isSelfHostUsingCloud()){e.addTags({enabled:!1,reason:"is self host using cloud"});return}let t=await Se.configs.getAIConfig();if(!t){e.addTags({enabled:!1,reason:"no config found"});return}let r=XM(t.config);if(!r){e.addTags({enabled:!1,reason:"no provider found"});return}if(!r.apiKey){e.addTags({enabled:!1,reason:"no api key found"});return}return e.addTags({enabled:!0}),{provider:r.provider,model:r.defaultModel||Ks,apiKey:r.apiKey,measureUsage:!1}})}function tG(){return Tr.tracer.trace("getSelfHostOpenAIKeyConfig",e=>{if(!Se.env.SELF_HOSTED||!Se.env.OPENAI_API_KEY){e.addTags({enabled:!1,reason:"not self host or no api key"});return}return e.addTags({enabled:!0}),{provider:"OpenAI",model:Ks,apiKey:Se.env.OPENAI_API_KEY,measureUsage:!1}})}async function rG(){return await Tr.tracer.trace("getBudibaseAIConfig",async e=>{if(!await ln()){e.addTags({enabled:!1,reason:"feature flag disabled"});return}if(!Se.env.OPENAI_API_KEY){e.addTags({enabled:!1,reason:"no api key found"});return}return e.addTags({enabled:!0}),{provider:"OpenAI",apiKey:Se.env.OPENAI_API_KEY,model:Ks,measureUsage:!0}})}async function aG(){return await Tr.tracer.trace("getSelfHostBudibaseAIConfig",async e=>{if(!await Se.features.isEnabled(lc.FeatureFlag.AI_JS_GENERATION)&&!await Se.features.isEnabled(lc.FeatureFlag.AI_TABLE_GENERATION)){e.addTags({enabled:!1,reason:"feature flag disabled"});return}if(Se.context.isSelfHostUsingCloud()){e.addTags({enabled:!1,reason:"is self host using cloud"});return}let t=await ao();if(!t){e.addTags({enabled:!1,reason:"no license key found"});return}return e.addTags({enabled:!0}),{provider:"BudibaseAI",apiKey:t,model:Ks,measureUsage:!0}})}async function dc(){return await Tr.tracer.trace("getLLMConfig",async()=>await eG()||tG()||await rG()||await aG())}async function ha(e){return await Tr.tracer.trace("getLLM",async t=>{let r=await dc();if(!r){t.addTags({enabled:!1,reason:"no config found"});return}e&&(r.model=e);let a=JM[r.provider];if(!a){t.addTags({enabled:!1,reason:"no provider found",provider:r.provider});return}return new a(r)})}var HA=require("@budibase/backend-core");var Tt=require("@budibase/types");function fc(e,t){let r=[],a=[];for(let n of e.tables){let s=n.schema.reduce((o,i)=>{if(i.type===Tt.FieldType.LINK){if(!a.includes(i.relationshipId)){let u={[Tt.RelationshipType.MANY_TO_ONE]:Tt.RelationshipType.ONE_TO_MANY,[Tt.RelationshipType.ONE_TO_MANY]:Tt.RelationshipType.MANY_TO_ONE,[Tt.RelationshipType.MANY_TO_MANY]:Tt.RelationshipType.MANY_TO_MANY},{reverseFieldName:d,relationshipId:f,...g}=i;o[i.name]={...g,fieldName:d,relationshipType:u[i.relationshipType]},a.push(f)}}else o[i.name]=i;return o},{});s={...s,...t[n.name]?.reduce((o,i)=>(o[i.name]=i,o),{})},r.push({name:n.name,primaryDisplay:n.primaryDisplay,schema:s})}return r}var O=require("@budibase/types");var be=y.object({name:y.string().describe("A human readable name for the field. It MUST be alpha-numeric and capitalised.")}),mc=be.extend({type:y.literal(O.FieldType.LINK),tableId:y.string().describe("This must match one of the generated table names"),reverseFieldName:y.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:y.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.")}),nG=y.array(y.union([be.extend({type:y.enum([O.FieldType.STRING,O.FieldType.NUMBER,O.FieldType.BOOLEAN,O.FieldType.LONGFORM]),constraints:y.object({presence:y.boolean()}).optional()}),mc.extend({relationshipType:y.enum([O.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."),mc.extend({relationshipType:y.enum([O.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."),mc.extend({relationshipType:y.enum([O.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."),be.extend({type:y.literal(O.FieldType.OPTIONS),constraints:y.object({inclusion:y.array(y.string()).describe("The options for the field"),presence:y.boolean()})}).describe("A single option from closed set of options"),be.extend({type:y.literal(O.FieldType.ARRAY),constraints:y.object({inclusion:y.array(y.string()).describe("The options for the field"),presence:y.boolean(),type:y.literal(O.JsonFieldSubType.ARRAY)}).describe("Multiple selected options from closed set of options")}),be.extend({type:y.literal(O.FieldType.FORMULA),formula:y.string().describe('The formula to be used, using javascript. The function must always end up with a return statment, and to access the row data, use the $("row" variable. For example: return $("Link column").length + $("Weight")'),responseType:y.enum([O.FieldType.STRING,O.FieldType.NUMBER,O.FieldType.BOOLEAN,O.FieldType.DATETIME])}),be.extend({type:y.literal(O.FieldType.DATETIME),ignoreTimezones:y.boolean()}).describe("A datetime field, storing date and time"),be.extend({type:y.literal(O.FieldType.DATETIME),ignoreTimezones:y.boolean(),timeOnly:y.literal(!0)}).describe("A time only field"),be.extend({type:y.literal(O.FieldType.DATETIME),ignoreTimezones:y.boolean(),dateOnly:y.literal(!0)}).describe("A date only field"),be.extend({type:y.literal(O.FieldType.ATTACHMENT_SINGLE),subtype:y.literal(O.AttachmentSubType.IMAGE)}).describe("Single image column"),be.extend({type:y.literal(O.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."),be.extend({type:y.literal(O.FieldType.ATTACHMENTS),subtype:y.literal(O.AttachmentSubType.IMAGE)}).describe("Multiple images column. Use an appropiate name for the columns, like 'Gallery', 'Photos', etc."),be.extend({type:y.literal(O.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.")])),gc=y.object({tables:y.array(y.object({name:y.string(),schema:nG,primaryDisplay:y.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 hc(e){let t=y.object({});for(let r of e.tables){let a=[be.extend({type:y.literal(O.FieldType.AI),operation:y.literal(O.AIOperationEnum.TRANSLATE),column:y.enum(r.schema.filter(n=>[O.FieldType.STRING,O.FieldType.LONGFORM].includes(n.type)).map(n=>n.name)).describe("The columns to translate"),language:y.string()}).describe("This column will be autogenerated via AI to translate one column. Use it for reasonable cases, like translating descriptions or similar."),be.extend({type:y.literal(O.FieldType.AI),operation:y.literal(O.AIOperationEnum.CATEGORISE_TEXT),columns:y.array(y.enum(r.schema.filter(n=>[O.FieldType.STRING,O.FieldType.LONGFORM,O.FieldType.BOOLEAN,O.FieldType.NUMBER,O.FieldType.DATETIME].includes(n.type)).map(n=>n.name))).describe("The columns to be used as context"),categories:y.string().describe("CSV list of categories")}).describe("This column will be autogenerated via AI to categorise a row based on one or many columns.")];r.schema.some(n=>n.type===O.FieldType.LONGFORM)&&a.push(be.extend({type:y.literal(O.FieldType.AI),operation:y.literal(O.AIOperationEnum.SUMMARISE_TEXT),columns:y.array(y.enum(r.schema.filter(n=>[O.FieldType.STRING,O.FieldType.LONGFORM].includes(n.type)).map(n=>n.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]:y.array(y.union(a))})}return t}var YA=require("@budibase/shared-core"),j=require("@budibase/types");function yc(e){let t=y.object({}),r=e.reduce((a,n)=>(a[n._id]=n,a),{});for(let a of e){let n={_id:y.string().describe("Unique ID for the row")},s=y.union([y.literal("https://picsum.photos/600/600").describe("For profile pictures and similar"),y.literal("https://picsum.photos/1920/1080").describe("For anything else")]),o=y.object({fileName:y.string(),extension:y.enum([".pdf",".txt"]),content:y.string().describe("Random content for the file")});for(let i of Object.values(a.schema)){let{type:u}=i;switch(u){case j.FieldType.STRING:case j.FieldType.LONGFORM:n[i.name]=y.string();break;case j.FieldType.NUMBER:case j.FieldType.BIGINT:n[i.name]=y.number();break;case j.FieldType.BOOLEAN:n[i.name]=y.boolean();break;case j.FieldType.DATETIME:n[i.name]=y.string().describe(`ISO datetime. Use realistic dates, based on today's date, ${new Date().toISOString()}`);break;case j.FieldType.ATTACHMENT_SINGLE:i.subtype===j.AttachmentSubType.IMAGE?n[i.name]=s:n[i.name]=o;break;case j.FieldType.ATTACHMENTS:i.subtype===j.AttachmentSubType.IMAGE?n[i.name]=y.array(s):n[i.name]=y.array(o),n[i.name]=n[i.name].describe("Between 2 and 5 items.");break;case j.FieldType.OPTIONS:n[i.name]=y.enum(i.constraints.inclusion);break;case j.FieldType.LINK:{let d=y.string().describe(`Match one of the _ids created for table "${r[i.tableId].name}"`);i.relationshipType===j.RelationshipType.ONE_TO_MANY?n[i.name]=y.array(d).describe("Array with a single item"):i.relationshipType===j.RelationshipType.MANY_TO_MANY&&(n[i.name]=y.array(d).describe("Array with a one or many items. You can repeat the same ids between rows"))}break;case j.FieldType.ARRAY:n[i.name]=y.array(y.enum(i.constraints.inclusion));break;case j.FieldType.AI:case j.FieldType.AUTO:case j.FieldType.SIGNATURE_SINGLE:case j.FieldType.BB_REFERENCE:case j.FieldType.JSON:case j.FieldType.FORMULA:case j.FieldType.INTERNAL:case j.FieldType.BARCODEQR:case j.FieldType.BB_REFERENCE_SINGLE:break;default:throw YA.utils.unreachable(u)}}t=t.extend({[a.name]:y.array(y.object(n))}).describe(`Each table should include at least a few items (min 3, max 18). The number of items should not be evenly distributed. Instead, follow natural relationships and usage patterns based on the tables nature. For example:
|
|
169
|
+
1. If we have posts and comments, there should be more posts than users, and more comments than posts.
|
|
170
|
+
2. If it's a ticketing system, there may be more tickets than users, and some users may have submitted several tickets.
|
|
171
|
+
3. In a CRM, there are fewer users than customers, and customers may have many deals.
|
|
172
|
+
4. In a project management tool, projects might have many tasks, and tasks might have multiple comments.`)}return t}var ZA=F(require("dd-trace")),bc=class e{constructor(t,r){this.addData=!1;this.llm=t,this.delegates=r}static async init(t){let r=await ha("gpt-4o");if(!r)throw new HA.HTTPError("LLM not available",422);return r.maxTokens=2e3,new e(r,t)}withData(t){return this.userId=t,this.addData=!0,this}async generate(t){return ZA.default.trace("tableGeneration.generate",async r=>{let a=await this.generateTables(t);return r.addTags({table_count:a.length}),a})}async generateTables(t){let r=await this.llm.prompt(nc().user(t).format(gc)),a=JSON.parse(r.message),n=await this.generateAIColumns(t,a),s=await this.delegates.generateTablesDelegate(fc(a,n));if(this.addData){let o=await this.delegates.getTablesDelegate(s.map(i=>i.id));await this.generateData(t,o)}return s}async generateAIColumns(t,r){let a=await this.llm.prompt(sc().user(`This is the initial user prompt that generated the given schema:
|
|
173
|
+
"${t}"`).format(hc(r)));return JSON.parse(a.message)}async generateData(t,r){let a=await this.llm.prompt(ic().user(t).format(yc(r))),n=r.reduce((o,i)=>(o[i.name]=i,o),{}),s=JSON.parse(a.message);await this.delegates.generateDataDelegate(s,this.userId,n)}};var sG={parseResponseFormat:cc};var et=require("@budibase/backend-core");var iG=/```(?:\w+)?\n([\s\S]+?)\n```/;async function vc(){let e=await ha();if(!e)throw new et.HTTPError("No available LLM configurations",500);return e}async function zA(e){let t=await vc(),{prompt:r}=e.request.body,{message:a}=await t.generateCronExpression(r);a?.startsWith("Error generating cron:")?e.throw(400,a):e.body={message:a}}async function JA(e){await et.features.isEnabled(Ys.FeatureFlag.AI_JS_GENERATION)||e.throw(500,"AI JS generation is disabled");let t=await vc();await et.context.ensureSnippetContext();let a=et.context.getCurrentContext()?.snippets||[],{prompt:n,bindings:s=[]}=e.request.body,o=(await t.generateJs(n,{bindings:s,snippets:a})).message||"",i=o.match(iG);i&&(o=i[1]),e.body={code:o}}async function XA(e){!await et.features.isEnabled(Ys.FeatureFlag.AI_JS_GENERATION)&&!await et.features.isEnabled(Ys.FeatureFlag.AI_TABLE_GENERATION)&&e.throw(500,"AI generation is disabled"),et.env.SELF_HOSTED&&e.throw(500,"Budibase AI endpoints are not available in self-host");let t=await vc(),r=ee.fromRequest(e.request.body),{message:a,tokensUsed:n}=await t.prompt(r);e.body={message:a,tokensUsed:n}}var tv=F(require("@koa/router")),_c=require("@budibase/backend-core");var On=require("@budibase/backend-core");async function ev(e,t){let r=e.request.headers[On.constants.Header.LICENSE_KEY];Array.isArray(r)&&(r=r[0]),r||e.throw(403,"License key not provided");let a=await to(r);a||e.throw(403,"License not found or invalid"),a.tenantId||e.throw(403,"License does not have a tenant ID"),await On.context.doInSelfHostTenantUsingCloud(a.tenantId,async()=>{await On.context.doInLicenseContext(a,async()=>{await t()})})}var Hs=new tv.default;Hs.post("/api/ai/cron",_c.auth.builderOrAdmin,zA);Hs.post("/api/ai/js",_c.auth.builderOrAdmin,JA);Hs.post("/api/ai/chat",ev,XA);var rv=Hs;async function av(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let a=await ir(t._id);t.roles=a.roles,t.scimInfo=a.scimInfo}let r=await ea(t);e.body={_id:r.id,_rev:r.rev}}async function nv(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,s;r&&(n=await _o(t,r)),a&&(s=await Io(t,a)),e.body={added:n,removed:s}}async function sv(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 wo(t,{appsToAdd:r,appsToRemove:a})}async function iv(e){e.body={data:await fn()}}async function ov(e){let{groupId:t,rev:r}=e.params;try{await vo(t,r),e.body={message:"Group deleted successfully"}}catch(a){e.throw(a.status,a)}}async function uv(e){try{e.body=await ir(e.params.groupId)}catch(t){e.throw(t.status,t)}}async function cv(e){let{pageSize:t=10,bookmark:r,emailSearch:a}=e.request.query,n=e.params.groupId,s={limit:t+1},o=await Bn(n,{...s,emailSearch:a,bookmark:r}),i=a?o[t]?.email:o[t]?._id,u=!!i;e.body={users:o.slice(0,t),bookmark:i,hasNextPage:u}}async function pv(e){let{groupId:t,appId:r}=e.params;await So(t,r),e.body={message:"Group app builder access updated."}}async function lv(e){let{groupId:t,appId:r}=e.params;await xo(t,r),e.body={message:"group app builder access removed."}}var dv=F(require("@koa/router")),Ue=F(require("joi"));var $e=require("@budibase/types"),gt=require("@budibase/backend-core"),fv=new dv.default;function cG(){return gt.auth.joiValidator.body(Ue.default.object({_id:Ue.default.string().optional(),_rev:Ue.default.string().optional(),color:Ue.default.string().required(),icon:Ue.default.string().required(),name:Ue.default.string().trim().required().max(50),role:Ue.default.string().optional(),users:Ue.default.array().optional(),apps:Ue.default.array().optional(),roles:Ue.default.object().optional(),createdAt:Ue.default.string().optional(),updatedAt:Ue.default.string().optional()}).required())}fv.post("/api/global/groups",gt.auth.adminOnly,z.requireFeature($e.Feature.USER_GROUPS),cG(),av).get("/api/global/groups",z.requireFeature($e.Feature.USER_GROUPS),iv).delete("/api/global/groups/:groupId/:rev",z.requireFeature($e.Feature.USER_GROUPS),gt.auth.adminOnly,ks("groupId"),ov).get("/api/global/groups/:groupId",z.requireFeature($e.Feature.USER_GROUPS),gt.auth.builderOrAdmin,uv).get("/api/global/groups/:groupId/users",z.requireFeature($e.Feature.USER_GROUPS),gt.auth.builderOrAdmin,cv).post("/api/global/groups/:groupId/users",gt.auth.adminOnly,z.requireFeature($e.Feature.USER_GROUPS),ks("groupId"),nv).post("/api/global/groups/:groupId/apps",gt.auth.builderOrAdmin,z.requireFeature($e.Feature.USER_GROUPS),sv).post("/api/global/groups/:groupId/app/:appId/builder",gt.auth.builderOrAdmin,z.requireFeatures($e.Feature.USER_GROUPS,$e.Feature.APP_BUILDERS),pv).delete("/api/global/groups/:groupId/app/:appId/builder",gt.auth.builderOrAdmin,z.requireFeatures($e.Feature.USER_GROUPS,$e.Feature.APP_BUILDERS),lv);var mv=fv;var Ic=require("@budibase/types");var wc=require("@budibase/backend-core");async function gv(e){e.body={encryptionKeyAvailable:lt.isEncryptionKeyAvailable()}}async function hv(e){e.body={variables:await lt.fetch()}}async function yv(e){let{name:t,production:r,development:a}=e.request.body;await lt.update(t,{production:r,development:a});let n=[Ic.AppEnvironment.PRODUCTION];r!==a&&n.push(Ic.AppEnvironment.DEVELOPMENT),await wc.events.environmentVariable.created(t,n),e.body={message:`Environment variable "${t}" created.`}}async function bv(e){let{production:t,development:r}=e.request.body,a=e.params.varName;await lt.update(a,{production:t,development:r}),e.body={message:`Environment variable "${a}" updated.`}}async function Av(e){let t=e.params.varName;await lt.remove(t),await wc.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}var Er=require("@budibase/backend-core"),_v=F(require("@koa/router")),Cn=F(require("joi")),Iv=new _v.default;function vv(){return Er.auth.joiValidator.body(Cn.default.object({name:Cn.default.string().optional(),production:Cn.default.string().required(),development:Cn.default.string().required()}))}Iv.get("/api/env/variables/status",Er.auth.builderOrAdmin,gv).get("/api/env/variables",Er.auth.builderOrAdmin,hv).post("/api/env/variables",Er.auth.builderOrAdmin,vv(),yv).patch("/api/env/variables/:varName",Er.auth.builderOrAdmin,vv(),bv).delete("/api/env/variables/:varName",Er.auth.builderOrAdmin,Av);var wv=Iv;var Sc=require("@budibase/backend-core");async function Sv(e){let t=e.request.body,r=await Dt.fetch(t);await Sc.events.auditLog.filtered(t),e.body=r}async function xv(e){let t=e.request.body,{stream:r}=Dt.download(t);await Sc.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}async function Tv(e){e.body={events:Dt.definitions()}}var Rv=require("@budibase/types"),Rr=require("@budibase/backend-core"),Ov=F(require("@koa/router")),We=F(require("joi"));function Ev(){return Rr.auth.joiValidator.body(We.default.object({userIds:We.default.array().items(We.default.string()).optional(),appIds:We.default.array().items(We.default.string()).optional(),events:We.default.array().items(We.default.string().valid(...Object.values(Rv.Event))).optional(),startDate:We.default.string().optional().allow(""),endDate:We.default.string().optional().allow(""),fullSearch:We.default.string().optional().allow(""),bookmark:We.default.number()}))}var Cv=new Ov.default;Cv.post("/api/global/auditlogs/search",Rr.auth.adminOnly,Ev(),Sv).get("/api/global/auditlogs/download",Rr.auth.adminOnly,Rr.middleware.querystringToBody,Ev(),xv).get("/api/global/auditlogs/definitions",Rr.auth.adminOnly,Tv);var Pv=Cv;var xc=require("@budibase/types");var Lv=require("@budibase/backend-core");async function ya(e,t){await kr.appExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}async function Uv(e){let t=e.params.appId;await ya(e,t);let r=e.request.body,a=e.user?._id,n=await Fe.triggerAppBackup(t,xc.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 qv(e){let t=e.params.appId;await ya(e,t);let r=e.params.backupId,a=e.request.body.name,n=await Fe.triggerAppRestore(t,r,a,e.user?._id);n||e.throw(500,"Unable to start restore."),await Lv.events.backup.appBackupRestored(n.metadata),e.body={restoredId:n?.restoreId,message:"Restore triggered - process starting."}}async function Nv(e){let t=e.params.appId;await ya(e,t);let r=e.params.backupId;await Fe.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}async function kv(e){let t=e.params.appId;await ya(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(xc.AppBackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await Fe.fetchAppBackups(t,{paginate:!0,...r})}async function Dv(e){let t=e.params.appId;await ya(e,t);let r=e.params.backupId,a=e.request.body;e.body=await Fe.updateAppBackup(r,a.name)}async function Bv(e){let t=e.params.appId;await ya(e,t);let r=e.params.backupId,{metadata:a,stream:n}=await Fe.getBackupDownloadStream(r);e.attachment(`backup-${a.timestamp}.tar.gz`),e.body=n}var Mv=F(require("@koa/router")),Or=F(require("joi")),Zs=require("@budibase/types"),Vt=require("@budibase/backend-core"),Gv=new Mv.default;function fG(){return Vt.auth.joiValidator.body(Or.default.object({trigger:Or.default.string().valid(...Object.values(Zs.AppBackupTrigger)),type:Or.default.string().valid(...Object.values(Zs.AppBackupType)),startDate:Or.default.date(),endDate:Or.default.date(),page:Or.default.string()}))}Gv.post("/api/apps/:appId/backups",Vt.auth.builderOrAdmin,Uv).post("/api/apps/:appId/backups/search",Vt.auth.builderOrAdmin,fG(),kv).get("/api/apps/:appId/backups/:backupId/file",Vt.auth.builderOrAdmin,Bv).patch("/api/apps/:appId/backups/:backupId",Vt.auth.builderOrAdmin,Dv).delete("/api/apps/:appId/backups/:backupId",Vt.auth.builderOrAdmin,Nv).post("/api/apps/:appId/backups/:backupId/import",Vt.auth.builderOrAdmin,qv);var Fv=Gv;var h_=F(require("@koa/router"));var zs=require("scim-patch");var Qv=require("@budibase/backend-core");function jv(e,t){let r=e.request.query[t];if(r!==void 0)return+r}var $v=async e=>{let t=jv(e,"pageSize")??20,r=jv(e,"startIndex"),a;e.request.query.filter&&(a=te.user.userFilters(e.request.query.filter));let n=await Ie.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(te.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},Wv=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)},Vv=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 Qv.EmailUnavailableError&&e.throw(409,"Email already in use"),r}};function mG(e){let t=e.Operations.find(r=>(r.op==="Replace"||r.op==="replace")&&r.path==="active");return t?t.value===!1||t.value?.toLowerCase?.()==="false":!1}var Kv=async e=>{let t=await Ie.find(e.params.id);t||e.throw(404);let r=te.user.toScimUserResponse(t),a=e.request.body;try{(0,zs.patchBodyValidation)(a)}catch{}if(mG(a))return Tc(e);let n;try{n=(0,zs.scimPatch)(r,a.Operations)}catch{}n||e.throw(500);let s=te.user.fromScimUser(n);await Ie.update(s,{allowChangingEmail:!0}),e.body=te.user.toScimUserResponse(s)},Tc=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await Ie.remove(t),e.status=204};var u_=F(o_()),c_=require("@budibase/shared-core"),Js=require("scim-patch");var Xs=require("scim2-parse-filter");function p_(e,t){for(let r of t.split(","))delete e[r]}var l_=async e=>{let r=(await Z.fetch()).filter(s=>s.scimInfo?.isSync).map(te.group.toScimGroupResponse),{filter:a,excludedAttributes:n}=e.request.query;if(a){let s=(0,Xs.filter)((0,Xs.parse)(a));r=r.filter(s)}n&&r.forEach(s=>{p_(s,n)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},d_=async e=>{let t=te.group.fromScimGroup(e.request.body),r=await oa.create(t);e.body=te.group.toScimGroupResponse(r)},f_=async e=>{let{id:t}=e.params,r=await Z.get(t),a=te.group.toScimGroupResponse(r),{excludedAttributes:n}=e.request.query;n&&p_(a,n),e.body=a},m_=async e=>{let{id:t}=e.params,r=await Z.get(t);await Z.remove(t,r._rev),e.status=204},g_=async e=>{let{id:t}=e.params,r=await Z.get(t),a=te.group.toScimGroupResponse(r),n=e.request.body;try{(0,Js.patchBodyValidation)(n)}catch{e.throw(400)}let{true:s,false:o}=(0,u_.default)(n.Operations,i=>i.path==="members");if(o?.length){let i=(0,Js.scimPatch)(a,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:c_.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 Pn=require("@budibase/types"),qe=new h_.default({prefix:"/api/global/scim/v2"});qe.use(Qu);qe.use(ju);qe.get("/users",$v);qe.get("/users/:id",_n("id"),Wv);qe.post("/users",Vv);qe.patch("/users/:id",_n("id"),Kv);qe.delete("/users/:id",_n("id"),Tc);qe.get("/groups",l_);qe.post("/groups",z.requireFeature(Pn.Feature.USER_GROUPS),d_);qe.get("/groups/:id",z.requireFeature(Pn.Feature.USER_GROUPS),In("id"),f_);qe.delete("/groups/:id",z.requireFeature(Pn.Feature.USER_GROUPS),In("id"),m_);qe.patch("/groups/:id",z.requireFeature(Pn.Feature.USER_GROUPS),In("id"),g_);var y_=qe;var v_=F(require("@koa/router"));var Ec=require("@budibase/backend-core");async function b_(e){let{userId:t,appId:r}=e.params,a=await At.db.getUser(t);if(Ec.users.isGlobalBuilder(a)){e.body={message:"User already admin - no permissions updated."};return}await At.addAppBuilder(a,r),e.body={message:`User "${a.email}" app builder access updated.`}}async function A_(e){let{userId:t,appId:r}=e.params,a=await At.db.getUser(t);if(Ec.users.isGlobalBuilder(a)){e.body={message:"User already admin - no permissions removed."};return}await At.removeAppBuilder(a,r),e.body={message:`User "${a.email}" app builder access removed.`}}var Rc=require("@budibase/types"),Oc=require("@budibase/backend-core"),__=new v_.default;__.post("/api/global/users/:userId/app/:appId/builder",Oc.auth.builderOrAdmin,z.requireFeatures(Rc.Feature.APP_BUILDERS),b_).delete("/api/global/users/:userId/app/:appId/builder",Oc.auth.builderOrAdmin,z.requireFeatures(Rc.Feature.APP_BUILDERS),A_);var I_=__;var te={};T(te,{group:()=>Lc,user:()=>Pc});var Pc={};T(Pc,{fromScimUser:()=>QG,toScimUserResponse:()=>GG,userFilters:()=>$G});var ei=require("@budibase/types"),w_=require("scim2-parse-filter"),S_=require("@budibase/backend-core"),x_=require("@budibase/shared-core"),{unreachable:MG}=x_.utils,GG=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===ei.UserStatus.ACTIVE};return(e.firstName||e.lastName)&&(n.name={formatted:[e.firstName,e.lastName].filter(s=>s).join(" "),familyName:e.lastName,givenName:e.firstName}),n},FG=e=>!!e?.id;function jG(e){if(S_.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}var QG=e=>{let t=FG(e)?e:void 0,r=jG(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:MG(e.active)}let n,s;return e.name?.givenName?(n=e.name?.givenName,s=e.name?.familyName):n=e.displayName,{tenantId:"",_id:t?.id,userId:t?.id,email:r,firstName:n,lastName:s,scimInfo:{...e,isSync:!0},roles:{},status:a?ei.UserStatus.ACTIVE:ei.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},$G=e=>{let t={equal:{}},r=(0,w_.parse)(e);function a(n){switch(n.op){case"eq":{let s=n.attrPath,o;switch(s){case"emails.value":o="email";break;default:o=`scimInfo.${s}`}t.equal[o]=n.compValue;break}case"and":for(let s of n.filters)a(s);break;default:console.warn("Filter not handled",{filter:n})}}return a(r),t};var Lc={};T(Lc,{fromScimGroup:()=>KG,toScimGroupResponse:()=>WG});var WG=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}))}),VG=e=>!!e?.id,KG=e=>{let t=VG(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});
|