@budibase/pro 3.8.0 → 3.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai/llm.d.ts +1 -0
- package/dist/ai/models/anthropic.d.ts +1 -1
- package/dist/ai/models/base.d.ts +1 -1
- package/dist/ai/models/budibaseai.d.ts +7 -0
- package/dist/ai/models/openai.d.ts +1 -1
- package/dist/ai/prompts/index.d.ts +2 -5
- package/dist/api/controllers/ai/index.d.ts +3 -2
- package/dist/index.js +22 -22
- package/dist/types/ai.d.ts +1 -1
- package/package.json +2 -2
package/dist/ai/llm.d.ts
CHANGED
|
@@ -7,5 +7,5 @@ export declare class Anthropic extends LLM {
|
|
|
7
7
|
private client;
|
|
8
8
|
constructor(opts: AIConfigOptions);
|
|
9
9
|
firstTextBlock(message: AnthropicClient.Messages.Message): string | undefined;
|
|
10
|
-
|
|
10
|
+
chatCompletion(prompt: Prompt): Promise<LLMPromptResponse>;
|
|
11
11
|
}
|
package/dist/ai/models/base.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ export declare abstract class LLM {
|
|
|
12
12
|
measureUsage: boolean;
|
|
13
13
|
maxTokens: number;
|
|
14
14
|
constructor({ model, apiKey, measureUsage }: AIConfigOptions);
|
|
15
|
-
|
|
15
|
+
abstract chatCompletion(prompt: Prompt): Promise<LLMPromptResponse>;
|
|
16
16
|
prompt(prompt: string | Prompt): Promise<LLMPromptResponse>;
|
|
17
17
|
summarizeText(prompt: string): Promise<LLMPromptResponse>;
|
|
18
18
|
generateCronExpression(prompt: string): Promise<LLMPromptResponse>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { LLMPromptResponse } from "../../types/ai";
|
|
2
|
+
import { LLM } from "./base";
|
|
3
|
+
import { Prompt } from "../prompts";
|
|
4
|
+
export declare class BudibaseAI extends LLM {
|
|
5
|
+
constructor(args: ConstructorParameters<typeof LLM>[0]);
|
|
6
|
+
chatCompletion(prompt: Prompt): Promise<LLMPromptResponse>;
|
|
7
|
+
}
|
|
@@ -7,5 +7,5 @@ export declare class OpenAI extends LLM {
|
|
|
7
7
|
private client;
|
|
8
8
|
constructor({ model, apiKey, measureUsage }: AIConfigOptions);
|
|
9
9
|
measureTokenUsage(usage?: OpenAIClient.CompletionUsage): number;
|
|
10
|
-
|
|
10
|
+
chatCompletion(prompt: Prompt): Promise<LLMPromptResponse>;
|
|
11
11
|
}
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
import { EnrichedBinding, Snippet } from "@budibase/types";
|
|
2
|
-
export interface Message {
|
|
3
|
-
role: "system" | "user";
|
|
4
|
-
content: string;
|
|
5
|
-
}
|
|
1
|
+
import { ChatCompletionRequest, EnrichedBinding, Message, Snippet } from "@budibase/types";
|
|
6
2
|
export declare class Prompt {
|
|
7
3
|
messages: Message[];
|
|
8
4
|
constructor(messages: Message[]);
|
|
@@ -10,6 +6,7 @@ export declare class Prompt {
|
|
|
10
6
|
system(content: string): this;
|
|
11
7
|
static user(content: string): Prompt;
|
|
12
8
|
static system(content: string): Prompt;
|
|
9
|
+
static fromRequest(req: ChatCompletionRequest): Prompt;
|
|
13
10
|
}
|
|
14
11
|
export declare function summarizeText(text: string): Prompt;
|
|
15
12
|
export declare function classifyText(text: string, categories: string[]): Prompt;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import { Ctx, GenerateJsRequest, GenerateJsResponse, UserCtx } from "@budibase/types";
|
|
2
|
-
export declare function generateCronExpression(ctx: Ctx): Promise<void>;
|
|
1
|
+
import { ChatCompletionRequest, ChatCompletionResponse, Ctx, GenerateCronRequest, GenerateCronResponse, GenerateJsRequest, GenerateJsResponse, UserCtx } from "@budibase/types";
|
|
2
|
+
export declare function generateCronExpression(ctx: Ctx<GenerateCronRequest, GenerateCronResponse>): Promise<void>;
|
|
3
3
|
export declare function generateJs(ctx: UserCtx<GenerateJsRequest, GenerateJsResponse>): Promise<void>;
|
|
4
|
+
export declare function chatCompletion(ctx: Ctx<ChatCompletionRequest, ChatCompletionResponse>): Promise<void>;
|
package/dist/index.js
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
"use strict";var Ub=Object.create;var ba=Object.defineProperty;var Lb=Object.getOwnPropertyDescriptor;var Db=Object.getOwnPropertyNames;var Bb=Object.getPrototypeOf,Nb=Object.prototype.hasOwnProperty;var u=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),S=(e,t)=>{for(var r in t)ba(e,r,{get:t[r],enumerable:!0})},Vi=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Db(t))!Nb.call(e,n)&&n!==r&&ba(e,n,{get:()=>t[n],enumerable:!(a=Lb(t,n))||a.enumerable});return e};var O=(e,t,r)=>(r=e!=null?Ub(Bb(e)):{},Vi(t||!e||!e.__esModule?ba(r,"default",{value:e,enumerable:!0}):r,e)),Gb=e=>Vi(ba({},"__esModule",{value:!0}),e);var La=u((r0,Pu)=>{"use strict";function NI(e,t){for(var r=-1,a=t.length,n=e.length;++r<a;)e[n+r]=t[r];return e}Pu.exports=NI});var Xn=u((a0,Ou)=>{"use strict";var GI=typeof global=="object"&&global&&global.Object===Object&&global;Ou.exports=GI});var re=u((n0,Cu)=>{"use strict";var MI=Xn(),kI=typeof self=="object"&&self&&self.Object===Object&&self,FI=MI||kI||Function("return this")();Cu.exports=FI});var yt=u((o0,qu)=>{"use strict";var QI=re(),jI=QI.Symbol;qu.exports=jI});var Bu=u((s0,Du)=>{"use strict";var Uu=yt(),Lu=Object.prototype,WI=Lu.hasOwnProperty,$I=Lu.toString,Nr=Uu?Uu.toStringTag:void 0;function VI(e){var t=WI.call(e,Nr),r=e[Nr];try{e[Nr]=void 0;var a=!0}catch{}var n=$I.call(e);return a&&(t?e[Nr]=r:delete e[Nr]),n}Du.exports=VI});var Gu=u((i0,Nu)=>{"use strict";var KI=Object.prototype,YI=KI.toString;function HI(e){return YI.call(e)}Nu.exports=HI});var nt=u((u0,Fu)=>{"use strict";var Mu=yt(),zI=Bu(),JI=Gu(),XI="[object Null]",ZI="[object Undefined]",ku=Mu?Mu.toStringTag:void 0;function eS(e){return e==null?e===void 0?ZI:XI:ku&&ku in Object(e)?zI(e):JI(e)}Fu.exports=eS});var pe=u((p0,Qu)=>{"use strict";function tS(e){return e!=null&&typeof e=="object"}Qu.exports=tS});var Wu=u((c0,ju)=>{"use strict";var rS=nt(),aS=pe(),nS="[object Arguments]";function oS(e){return aS(e)&&rS(e)==nS}ju.exports=oS});var Gr=u((l0,Ku)=>{"use strict";var $u=Wu(),sS=pe(),Vu=Object.prototype,iS=Vu.hasOwnProperty,uS=Vu.propertyIsEnumerable,pS=$u(function(){return arguments}())?$u:function(e){return sS(e)&&iS.call(e,"callee")&&!uS.call(e,"callee")};Ku.exports=pS});var z=u((d0,Yu)=>{"use strict";var cS=Array.isArray;Yu.exports=cS});var Xu=u((f0,Ju)=>{"use strict";var Hu=yt(),lS=Gr(),dS=z(),zu=Hu?Hu.isConcatSpreadable:void 0;function fS(e){return dS(e)||lS(e)||!!(zu&&e&&e[zu])}Ju.exports=fS});var Zn=u((g0,ep)=>{"use strict";var gS=La(),mS=Xu();function Zu(e,t,r,a,n){var o=-1,i=e.length;for(r||(r=mS),n||(n=[]);++o<i;){var s=e[o];t>0&&r(s)?t>1?Zu(s,t-1,r,a,n):gS(n,s):a||(n[n.length]=s)}return n}ep.exports=Zu});var Mr=u((m0,tp)=>{"use strict";function yS(e){return e}tp.exports=yS});var Da=u((y0,rp)=>{"use strict";function AS(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)}rp.exports=AS});var eo=u((A0,np)=>{"use strict";var hS=Da(),ap=Math.max;function bS(e,t,r){return t=ap(t===void 0?e.length-1:t,0),function(){for(var a=arguments,n=-1,o=ap(a.length-t,0),i=Array(o);++n<o;)i[n]=a[t+n];n=-1;for(var s=Array(t+1);++n<t;)s[n]=a[n];return s[t]=r(i),hS(e,this,s)}}np.exports=bS});var sp=u((h0,op)=>{"use strict";function IS(e){return function(){return e}}op.exports=IS});var Ie=u((b0,ip)=>{"use strict";function SS(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}ip.exports=SS});var kr=u((I0,up)=>{"use strict";var wS=nt(),vS=Ie(),ES="[object AsyncFunction]",RS="[object Function]",xS="[object GeneratorFunction]",_S="[object Proxy]";function TS(e){if(!vS(e))return!1;var t=wS(e);return t==RS||t==xS||t==ES||t==_S}up.exports=TS});var cp=u((S0,pp)=>{"use strict";var PS=re(),OS=PS["__core-js_shared__"];pp.exports=OS});var fp=u((w0,dp)=>{"use strict";var to=cp(),lp=function(){var e=/[^.]+$/.exec(to&&to.keys&&to.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function CS(e){return!!lp&&lp in e}dp.exports=CS});var ro=u((v0,gp)=>{"use strict";var qS=Function.prototype,US=qS.toString;function LS(e){if(e!=null){try{return US.call(e)}catch{}try{return e+""}catch{}}return""}gp.exports=LS});var yp=u((E0,mp)=>{"use strict";var DS=kr(),BS=fp(),NS=Ie(),GS=ro(),MS=/[\\^$.*+?()[\]{}|]/g,kS=/^\[object .+?Constructor\]$/,FS=Function.prototype,QS=Object.prototype,jS=FS.toString,WS=QS.hasOwnProperty,$S=RegExp("^"+jS.call(WS).replace(MS,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function VS(e){if(!NS(e)||BS(e))return!1;var t=DS(e)?$S:kS;return t.test(GS(e))}mp.exports=VS});var hp=u((R0,Ap)=>{"use strict";function KS(e,t){return e?.[t]}Ap.exports=KS});var ot=u((x0,bp)=>{"use strict";var YS=yp(),HS=hp();function zS(e,t){var r=HS(e,t);return YS(r)?r:void 0}bp.exports=zS});var ao=u((_0,Ip)=>{"use strict";var JS=ot(),XS=function(){try{var e=JS(Object,"defineProperty");return e({},"",{}),e}catch{}}();Ip.exports=XS});var vp=u((T0,wp)=>{"use strict";var ZS=sp(),Sp=ao(),ew=Mr(),tw=Sp?function(e,t){return Sp(e,"toString",{configurable:!0,enumerable:!1,value:ZS(t),writable:!0})}:ew;wp.exports=tw});var no=u((P0,Ep)=>{"use strict";var rw=800,aw=16,nw=Date.now;function ow(e){var t=0,r=0;return function(){var a=nw(),n=aw-(a-r);if(r=a,n>0){if(++t>=rw)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}Ep.exports=ow});var Ba=u((O0,Rp)=>{"use strict";var sw=vp(),iw=no(),uw=iw(sw);Rp.exports=uw});var oo=u((C0,xp)=>{"use strict";var pw=Mr(),cw=eo(),lw=Ba();function dw(e,t){return lw(cw(e,t,pw),e+"")}xp.exports=dw});var Fr=u((q0,_p)=>{"use strict";var fw=ot(),gw=fw(Object,"create");_p.exports=gw});var Op=u((U0,Pp)=>{"use strict";var Tp=Fr();function mw(){this.__data__=Tp?Tp(null):{},this.size=0}Pp.exports=mw});var qp=u((L0,Cp)=>{"use strict";function yw(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}Cp.exports=yw});var Lp=u((D0,Up)=>{"use strict";var Aw=Fr(),hw="__lodash_hash_undefined__",bw=Object.prototype,Iw=bw.hasOwnProperty;function Sw(e){var t=this.__data__;if(Aw){var r=t[e];return r===hw?void 0:r}return Iw.call(t,e)?t[e]:void 0}Up.exports=Sw});var Bp=u((B0,Dp)=>{"use strict";var ww=Fr(),vw=Object.prototype,Ew=vw.hasOwnProperty;function Rw(e){var t=this.__data__;return ww?t[e]!==void 0:Ew.call(t,e)}Dp.exports=Rw});var Gp=u((N0,Np)=>{"use strict";var xw=Fr(),_w="__lodash_hash_undefined__";function Tw(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=xw&&t===void 0?_w:t,this}Np.exports=Tw});var kp=u((G0,Mp)=>{"use strict";var Pw=Op(),Ow=qp(),Cw=Lp(),qw=Bp(),Uw=Gp();function Gt(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])}}Gt.prototype.clear=Pw;Gt.prototype.delete=Ow;Gt.prototype.get=Cw;Gt.prototype.has=qw;Gt.prototype.set=Uw;Mp.exports=Gt});var Qp=u((M0,Fp)=>{"use strict";function Lw(){this.__data__=[],this.size=0}Fp.exports=Lw});var Mt=u((k0,jp)=>{"use strict";function Dw(e,t){return e===t||e!==e&&t!==t}jp.exports=Dw});var Qr=u((F0,Wp)=>{"use strict";var Bw=Mt();function Nw(e,t){for(var r=e.length;r--;)if(Bw(e[r][0],t))return r;return-1}Wp.exports=Nw});var Vp=u((Q0,$p)=>{"use strict";var Gw=Qr(),Mw=Array.prototype,kw=Mw.splice;function Fw(e){var t=this.__data__,r=Gw(t,e);if(r<0)return!1;var a=t.length-1;return r==a?t.pop():kw.call(t,r,1),--this.size,!0}$p.exports=Fw});var Yp=u((j0,Kp)=>{"use strict";var Qw=Qr();function jw(e){var t=this.__data__,r=Qw(t,e);return r<0?void 0:t[r][1]}Kp.exports=jw});var zp=u((W0,Hp)=>{"use strict";var Ww=Qr();function $w(e){return Ww(this.__data__,e)>-1}Hp.exports=$w});var Xp=u(($0,Jp)=>{"use strict";var Vw=Qr();function Kw(e,t){var r=this.__data__,a=Vw(r,e);return a<0?(++this.size,r.push([e,t])):r[a][1]=t,this}Jp.exports=Kw});var jr=u((V0,Zp)=>{"use strict";var Yw=Qp(),Hw=Vp(),zw=Yp(),Jw=zp(),Xw=Xp();function kt(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var a=e[t];this.set(a[0],a[1])}}kt.prototype.clear=Yw;kt.prototype.delete=Hw;kt.prototype.get=zw;kt.prototype.has=Jw;kt.prototype.set=Xw;Zp.exports=kt});var Na=u((K0,ec)=>{"use strict";var Zw=ot(),ev=re(),tv=Zw(ev,"Map");ec.exports=tv});var ac=u((Y0,rc)=>{"use strict";var tc=kp(),rv=jr(),av=Na();function nv(){this.size=0,this.__data__={hash:new tc,map:new(av||rv),string:new tc}}rc.exports=nv});var oc=u((H0,nc)=>{"use strict";function ov(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}nc.exports=ov});var Wr=u((z0,sc)=>{"use strict";var sv=oc();function iv(e,t){var r=e.__data__;return sv(t)?r[typeof t=="string"?"string":"hash"]:r.map}sc.exports=iv});var uc=u((J0,ic)=>{"use strict";var uv=Wr();function pv(e){var t=uv(this,e).delete(e);return this.size-=t?1:0,t}ic.exports=pv});var cc=u((X0,pc)=>{"use strict";var cv=Wr();function lv(e){return cv(this,e).get(e)}pc.exports=lv});var dc=u((Z0,lc)=>{"use strict";var dv=Wr();function fv(e){return dv(this,e).has(e)}lc.exports=fv});var gc=u((ek,fc)=>{"use strict";var gv=Wr();function mv(e,t){var r=gv(this,e),a=r.size;return r.set(e,t),this.size+=r.size==a?0:1,this}fc.exports=mv});var Ga=u((tk,mc)=>{"use strict";var yv=ac(),Av=uc(),hv=cc(),bv=dc(),Iv=gc();function Ft(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])}}Ft.prototype.clear=yv;Ft.prototype.delete=Av;Ft.prototype.get=hv;Ft.prototype.has=bv;Ft.prototype.set=Iv;mc.exports=Ft});var Ac=u((rk,yc)=>{"use strict";var Sv="__lodash_hash_undefined__";function wv(e){return this.__data__.set(e,Sv),this}yc.exports=wv});var bc=u((ak,hc)=>{"use strict";function vv(e){return this.__data__.has(e)}hc.exports=vv});var so=u((nk,Ic)=>{"use strict";var Ev=Ga(),Rv=Ac(),xv=bc();function Ma(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new Ev;++t<r;)this.add(e[t])}Ma.prototype.add=Ma.prototype.push=Rv;Ma.prototype.has=xv;Ic.exports=Ma});var wc=u((ok,Sc)=>{"use strict";function _v(e,t,r,a){for(var n=e.length,o=r+(a?1:-1);a?o--:++o<n;)if(t(e[o],o,e))return o;return-1}Sc.exports=_v});var Ec=u((sk,vc)=>{"use strict";function Tv(e){return e!==e}vc.exports=Tv});var xc=u((ik,Rc)=>{"use strict";function Pv(e,t,r){for(var a=r-1,n=e.length;++a<n;)if(e[a]===t)return a;return-1}Rc.exports=Pv});var Tc=u((uk,_c)=>{"use strict";var Ov=wc(),Cv=Ec(),qv=xc();function Uv(e,t,r){return t===t?qv(e,t,r):Ov(e,Cv,r)}_c.exports=Uv});var io=u((pk,Pc)=>{"use strict";var Lv=Tc();function Dv(e,t){var r=e==null?0:e.length;return!!r&&Lv(e,t,0)>-1}Pc.exports=Dv});var Cc=u((ck,Oc)=>{"use strict";function Bv(e,t,r){for(var a=-1,n=e==null?0:e.length;++a<n;)if(r(t,e[a]))return!0;return!1}Oc.exports=Bv});var uo=u((lk,qc)=>{"use strict";function Nv(e,t){return e.has(t)}qc.exports=Nv});var po=u((dk,Uc)=>{"use strict";var Gv=ot(),Mv=re(),kv=Gv(Mv,"Set");Uc.exports=kv});var co=u((fk,Lc)=>{"use strict";function Fv(){}Lc.exports=Fv});var ka=u((gk,Dc)=>{"use strict";function Qv(e){var t=-1,r=Array(e.size);return e.forEach(function(a){r[++t]=a}),r}Dc.exports=Qv});var Nc=u((mk,Bc)=>{"use strict";var lo=po(),jv=co(),Wv=ka(),$v=1/0,Vv=lo&&1/Wv(new lo([,-0]))[1]==$v?function(e){return new lo(e)}:jv;Bc.exports=Vv});var Mc=u((yk,Gc)=>{"use strict";var Kv=so(),Yv=io(),Hv=Cc(),zv=uo(),Jv=Nc(),Xv=ka(),Zv=200;function eE(e,t,r){var a=-1,n=Yv,o=e.length,i=!0,s=[],c=s;if(r)i=!1,n=Hv;else if(o>=Zv){var f=t?null:Jv(e);if(f)return Xv(f);i=!1,n=zv,c=new Kv}else c=t?[]:s;e:for(;++a<o;){var m=e[a],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 n(c,g,r)||(c!==s&&c.push(g),s.push(m))}return s}Gc.exports=eE});var Fa=u((Ak,kc)=>{"use strict";var tE=9007199254740991;function rE(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=tE}kc.exports=rE});var Qt=u((hk,Fc)=>{"use strict";var aE=kr(),nE=Fa();function oE(e){return e!=null&&nE(e.length)&&!aE(e)}Fc.exports=oE});var fo=u((bk,Qc)=>{"use strict";var sE=Qt(),iE=pe();function uE(e){return iE(e)&&sE(e)}Qc.exports=uE});var Wc=u((Ik,jc)=>{"use strict";var pE=Zn(),cE=oo(),lE=Mc(),dE=fo(),fE=cE(function(e){return lE(pE(e,1,dE,!0))});jc.exports=fE});var Vc=u((Sk,$c)=>{"use strict";var gE=jr();function mE(){this.__data__=new gE,this.size=0}$c.exports=mE});var Yc=u((wk,Kc)=>{"use strict";function yE(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}Kc.exports=yE});var zc=u((vk,Hc)=>{"use strict";function AE(e){return this.__data__.get(e)}Hc.exports=AE});var Xc=u((Ek,Jc)=>{"use strict";function hE(e){return this.__data__.has(e)}Jc.exports=hE});var el=u((Rk,Zc)=>{"use strict";var bE=jr(),IE=Na(),SE=Ga(),wE=200;function vE(e,t){var r=this.__data__;if(r instanceof bE){var a=r.__data__;if(!IE||a.length<wE-1)return a.push([e,t]),this.size=++r.size,this;r=this.__data__=new SE(a)}return r.set(e,t),this.size=r.size,this}Zc.exports=vE});var $r=u((xk,tl)=>{"use strict";var EE=jr(),RE=Vc(),xE=Yc(),_E=zc(),TE=Xc(),PE=el();function jt(e){var t=this.__data__=new EE(e);this.size=t.size}jt.prototype.clear=RE;jt.prototype.delete=xE;jt.prototype.get=_E;jt.prototype.has=TE;jt.prototype.set=PE;tl.exports=jt});var Vr=u((_k,al)=>{"use strict";var rl=ao();function OE(e,t,r){t=="__proto__"&&rl?rl(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}al.exports=OE});var go=u((Tk,nl)=>{"use strict";var CE=Vr(),qE=Mt();function UE(e,t,r){(r!==void 0&&!qE(e[t],r)||r===void 0&&!(t in e))&&CE(e,t,r)}nl.exports=UE});var sl=u((Pk,ol)=>{"use strict";function LE(e){return function(t,r,a){for(var n=-1,o=Object(t),i=a(t),s=i.length;s--;){var c=i[e?s:++n];if(r(o[c],c,o)===!1)break}return t}}ol.exports=LE});var mo=u((Ok,il)=>{"use strict";var DE=sl(),BE=DE();il.exports=BE});var yo=u((Kr,Wt)=>{"use strict";var NE=re(),ll=typeof Kr=="object"&&Kr&&!Kr.nodeType&&Kr,ul=ll&&typeof Wt=="object"&&Wt&&!Wt.nodeType&&Wt,GE=ul&&ul.exports===ll,pl=GE?NE.Buffer:void 0,cl=pl?pl.allocUnsafe:void 0;function ME(e,t){if(t)return e.slice();var r=e.length,a=cl?cl(r):new e.constructor(r);return e.copy(a),a}Wt.exports=ME});var Ao=u((Ck,dl)=>{"use strict";var kE=re(),FE=kE.Uint8Array;dl.exports=FE});var Qa=u((qk,gl)=>{"use strict";var fl=Ao();function QE(e){var t=new e.constructor(e.byteLength);return new fl(t).set(new fl(e)),t}gl.exports=QE});var ho=u((Uk,ml)=>{"use strict";var jE=Qa();function WE(e,t){var r=t?jE(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}ml.exports=WE});var $t=u((Lk,yl)=>{"use strict";function $E(e,t){var r=-1,a=e.length;for(t||(t=Array(a));++r<a;)t[r]=e[r];return t}yl.exports=$E});var Yr=u((Dk,hl)=>{"use strict";var VE=Ie(),Al=Object.create,KE=function(){function e(){}return function(t){if(!VE(t))return{};if(Al)return Al(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();hl.exports=KE});var bo=u((Bk,bl)=>{"use strict";function YE(e,t){return function(r){return e(t(r))}}bl.exports=YE});var ja=u((Nk,Il)=>{"use strict";var HE=bo(),zE=HE(Object.getPrototypeOf,Object);Il.exports=zE});var Wa=u((Gk,Sl)=>{"use strict";var JE=Object.prototype;function XE(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||JE;return e===r}Sl.exports=XE});var Io=u((Mk,wl)=>{"use strict";var ZE=Yr(),eR=ja(),tR=Wa();function rR(e){return typeof e.constructor=="function"&&!tR(e)?ZE(eR(e)):{}}wl.exports=rR});var El=u((kk,vl)=>{"use strict";function aR(){return!1}vl.exports=aR});var zr=u((Hr,Vt)=>{"use strict";var nR=re(),oR=El(),_l=typeof Hr=="object"&&Hr&&!Hr.nodeType&&Hr,Rl=_l&&typeof Vt=="object"&&Vt&&!Vt.nodeType&&Vt,sR=Rl&&Rl.exports===_l,xl=sR?nR.Buffer:void 0,iR=xl?xl.isBuffer:void 0,uR=iR||oR;Vt.exports=uR});var So=u((Fk,Pl)=>{"use strict";var pR=nt(),cR=ja(),lR=pe(),dR="[object Object]",fR=Function.prototype,gR=Object.prototype,Tl=fR.toString,mR=gR.hasOwnProperty,yR=Tl.call(Object);function AR(e){if(!lR(e)||pR(e)!=dR)return!1;var t=cR(e);if(t===null)return!0;var r=mR.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Tl.call(r)==yR}Pl.exports=AR});var Cl=u((Qk,Ol)=>{"use strict";var hR=nt(),bR=Fa(),IR=pe(),SR="[object Arguments]",wR="[object Array]",vR="[object Boolean]",ER="[object Date]",RR="[object Error]",xR="[object Function]",_R="[object Map]",TR="[object Number]",PR="[object Object]",OR="[object RegExp]",CR="[object Set]",qR="[object String]",UR="[object WeakMap]",LR="[object ArrayBuffer]",DR="[object DataView]",BR="[object Float32Array]",NR="[object Float64Array]",GR="[object Int8Array]",MR="[object Int16Array]",kR="[object Int32Array]",FR="[object Uint8Array]",QR="[object Uint8ClampedArray]",jR="[object Uint16Array]",WR="[object Uint32Array]",U={};U[BR]=U[NR]=U[GR]=U[MR]=U[kR]=U[FR]=U[QR]=U[jR]=U[WR]=!0;U[SR]=U[wR]=U[LR]=U[vR]=U[DR]=U[ER]=U[RR]=U[xR]=U[_R]=U[TR]=U[PR]=U[OR]=U[CR]=U[qR]=U[UR]=!1;function $R(e){return IR(e)&&bR(e.length)&&!!U[hR(e)]}Ol.exports=$R});var $a=u((jk,ql)=>{"use strict";function VR(e){return function(t){return e(t)}}ql.exports=VR});var Va=u((Jr,Kt)=>{"use strict";var KR=Xn(),Ul=typeof Jr=="object"&&Jr&&!Jr.nodeType&&Jr,Xr=Ul&&typeof Kt=="object"&&Kt&&!Kt.nodeType&&Kt,YR=Xr&&Xr.exports===Ul,wo=YR&&KR.process,HR=function(){try{var e=Xr&&Xr.require&&Xr.require("util").types;return e||wo&&wo.binding&&wo.binding("util")}catch{}}();Kt.exports=HR});var Ka=u((Wk,Bl)=>{"use strict";var zR=Cl(),JR=$a(),Ll=Va(),Dl=Ll&&Ll.isTypedArray,XR=Dl?JR(Dl):zR;Bl.exports=XR});var vo=u(($k,Nl)=>{"use strict";function ZR(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}Nl.exports=ZR});var Eo=u((Vk,Gl)=>{"use strict";var ex=Vr(),tx=Mt(),rx=Object.prototype,ax=rx.hasOwnProperty;function nx(e,t,r){var a=e[t];(!(ax.call(e,t)&&tx(a,r))||r===void 0&&!(t in e))&&ex(e,t,r)}Gl.exports=nx});var Yt=u((Kk,Ml)=>{"use strict";var ox=Eo(),sx=Vr();function ix(e,t,r,a){var n=!r;r||(r={});for(var o=-1,i=t.length;++o<i;){var s=t[o],c=a?a(r[s],e[s],s,r,e):void 0;c===void 0&&(c=e[s]),n?sx(r,s,c):ox(r,s,c)}return r}Ml.exports=ix});var Fl=u((Yk,kl)=>{"use strict";function ux(e,t){for(var r=-1,a=Array(e);++r<e;)a[r]=t(r);return a}kl.exports=ux});var Zr=u((Hk,Ql)=>{"use strict";var px=9007199254740991,cx=/^(?:0|[1-9]\d*)$/;function lx(e,t){var r=typeof e;return t=t??px,!!t&&(r=="number"||r!="symbol"&&cx.test(e))&&e>-1&&e%1==0&&e<t}Ql.exports=lx});var Ro=u((zk,jl)=>{"use strict";var dx=Fl(),fx=Gr(),gx=z(),mx=zr(),yx=Zr(),Ax=Ka(),hx=Object.prototype,bx=hx.hasOwnProperty;function Ix(e,t){var r=gx(e),a=!r&&fx(e),n=!r&&!a&&mx(e),o=!r&&!a&&!n&&Ax(e),i=r||a||n||o,s=i?dx(e.length,String):[],c=s.length;for(var f in e)(t||bx.call(e,f))&&!(i&&(f=="length"||n&&(f=="offset"||f=="parent")||o&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||yx(f,c)))&&s.push(f);return s}jl.exports=Ix});var $l=u((Jk,Wl)=>{"use strict";function Sx(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}Wl.exports=Sx});var Kl=u((Xk,Vl)=>{"use strict";var wx=Ie(),vx=Wa(),Ex=$l(),Rx=Object.prototype,xx=Rx.hasOwnProperty;function _x(e){if(!wx(e))return Ex(e);var t=vx(e),r=[];for(var a in e)a=="constructor"&&(t||!xx.call(e,a))||r.push(a);return r}Vl.exports=_x});var Ht=u((Zk,Yl)=>{"use strict";var Tx=Ro(),Px=Kl(),Ox=Qt();function Cx(e){return Ox(e)?Tx(e,!0):Px(e)}Yl.exports=Cx});var zl=u((eF,Hl)=>{"use strict";var qx=Yt(),Ux=Ht();function Lx(e){return qx(e,Ux(e))}Hl.exports=Lx});var rd=u((tF,td)=>{"use strict";var Jl=go(),Dx=yo(),Bx=ho(),Nx=$t(),Gx=Io(),Xl=Gr(),Zl=z(),Mx=fo(),kx=zr(),Fx=kr(),Qx=Ie(),jx=So(),Wx=Ka(),ed=vo(),$x=zl();function Vx(e,t,r,a,n,o,i){var s=ed(e,r),c=ed(t,r),f=i.get(c);if(f){Jl(e,r,f);return}var m=o?o(s,c,r+"",e,t,i):void 0,g=m===void 0;if(g){var y=Zl(c),h=!y&&kx(c),E=!y&&!h&&Wx(c);m=c,y||h||E?Zl(s)?m=s:Mx(s)?m=Nx(s):h?(g=!1,m=Dx(c,!0)):E?(g=!1,m=Bx(c,!0)):m=[]:jx(c)||Xl(c)?(m=s,Xl(s)?m=$x(s):(!Qx(s)||Fx(s))&&(m=Gx(c))):g=!1}g&&(i.set(c,m),n(m,c,a,o,i),i.delete(c)),Jl(e,r,m)}td.exports=Vx});var od=u((rF,nd)=>{"use strict";var Kx=$r(),Yx=go(),Hx=mo(),zx=rd(),Jx=Ie(),Xx=Ht(),Zx=vo();function ad(e,t,r,a,n){e!==t&&Hx(t,function(o,i){if(n||(n=new Kx),Jx(o))zx(e,t,i,r,ad,a,n);else{var s=a?a(Zx(e,i),o,i+"",e,t,n):void 0;s===void 0&&(s=o),Yx(e,i,s)}},Xx)}nd.exports=ad});var id=u((aF,sd)=>{"use strict";var e_=Mt(),t_=Qt(),r_=Zr(),a_=Ie();function n_(e,t,r){if(!a_(r))return!1;var a=typeof t;return(a=="number"?t_(r)&&r_(t,r.length):a=="string"&&t in r)?e_(r[t],e):!1}sd.exports=n_});var pd=u((nF,ud)=>{"use strict";var o_=oo(),s_=id();function i_(e){return o_(function(t,r){var a=-1,n=r.length,o=n>1?r[n-1]:void 0,i=n>2?r[2]:void 0;for(o=e.length>3&&typeof o=="function"?(n--,o):void 0,i&&s_(r[0],r[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++a<n;){var s=r[a];s&&e(t,s,a,o)}return t})}ud.exports=i_});var xo=u((oF,cd)=>{"use strict";var u_=od(),p_=pd(),c_=p_(function(e,t,r){u_(e,t,r)});cd.exports=c_});var lf=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 a in t){var n=t[a];e.call(r,n)?r[n].push(a):r[n]=[a]}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 Is=u((_Q,df)=>{"use strict";df.exports={}});var yf=u((TQ,mf)=>{"use strict";var $=lf(),YT=Is(),ff=Array.prototype.push;function HT(e,t){return t==2?function(r,a){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}function Ss(e,t){return t==2?function(r,a){return e(r,a)}:function(r){return e(r)}}function gf(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}function zT(e){return function(t){return e({},t)}}function JT(e,t){return function(){for(var r=arguments.length,a=r-1,n=Array(r);r--;)n[r]=arguments[r];var o=n[t],i=n.slice(0,t);return o&&ff.apply(i,o),t!=a&&ff.apply(i,n.slice(t+1)),e.apply(this,i)}}function ws(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 vs(e,t,r,a){var n=typeof t=="function",o=t===Object(t);if(o&&(a=r,r=t,t=void 0),r==null)throw new TypeError;a||(a={});var i={cap:"cap"in a?a.cap:!0,curry:"curry"in a?a.curry:!0,fixed:"fixed"in a?a.fixed:!0,immutable:"immutable"in a?a.immutable:!0,rearg:"rearg"in a?a.rearg:!0},s=n?r:YT,c="curry"in a&&a.curry,f="fixed"in a&&a.fixed,m="rearg"in a&&a.rearg,g=n?r.runInContext():void 0,y=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},h=y.ary,E=y.assign,T=y.clone,x=y.curry,R=y.forEach,L=y.isArray,Xe=y.isError,ye=y.isFunction,Ze=y.isWeakMap,Ct=y.keys,lr=y.rearg,dr=y.toInteger,Eb=y.toPath,Mi=Ct($.aryMethod),Rb={castArray:function(I){return function(){var A=arguments[0];return L(A)?I(gf(A)):I.apply(void 0,arguments)}},iteratee:function(I){return function(){var A=arguments[0],b=arguments[1],w=I(A,b),_=w.length;return i.cap&&typeof b=="number"?(b=b>2?b-2:1,_&&_<=b?w:Ss(w,b)):w}},mixin:function(I){return function(A){var b=this;if(!ye(b))return I(b,Object(A));var w=[];return R(Ct(A),function(_){ye(A[_])&&w.push([_,b.prototype[_]])}),I(b,Object(A)),R(w,function(_){var Z=_[1];ye(Z)?b.prototype[_[0]]=Z:delete b.prototype[_[0]]}),b}},nthArg:function(I){return function(A){var b=A<0?1:dr(A)+1;return x(I(A),b)}},rearg:function(I){return function(A,b){var w=b?b.length:0;return x(I(A,b),w)}},runInContext:function(I){return function(A){return vs(e,I(A),a)}}};function xb(I,A){if(i.cap){var b=$.iterateeRearg[I];if(b)return Cb(A,b);var w=!n&&$.iterateeAry[I];if(w)return Ob(A,w)}return A}function _b(I,A,b){return c||i.curry&&b>1?x(A,b):A}function ki(I,A,b){if(i.fixed&&(f||!$.skipFixed[I])){var w=$.methodSpread[I],_=w&&w.start;return _===void 0?h(A,b):JT(A,_)}return A}function Fi(I,A,b){return i.rearg&&b>1&&(m||!$.skipRearg[I])?lr(A,$.methodRearg[I]||$.aryRearg[b]):A}function Tb(I,A){A=Eb(A);for(var b=-1,w=A.length,_=w-1,Z=T(Object(I)),qe=Z;qe!=null&&++b<w;){var Ae=A[b],Ue=qe[Ae];Ue!=null&&!(ye(Ue)||Xe(Ue)||Ze(Ue))&&(qe[Ae]=T(b==_?Ue:Object(Ue))),qe=qe[Ae]}return Z}function Pb(I){return ie.runInContext.convert(I)(void 0)}function Qi(I,A){var b=$.aliasToReal[I]||I,w=$.remap[b]||b,_=a;return function(Z){var qe=n?g:y,Ae=n?g[w]:A,Ue=E(E({},_),Z);return vs(qe,b,Ae,Ue)}}function Ob(I,A){return ji(I,function(b){return typeof b=="function"?Ss(b,A):b})}function Cb(I,A){return ji(I,function(b){var w=A.length;return HT(lr(Ss(b,w),A),w)})}function ji(I,A){return function(){var b=arguments.length;if(!b)return I();for(var w=Array(b);b--;)w[b]=arguments[b];var _=i.rearg?0:b-1;return w[_]=A(w[_]),I.apply(void 0,w)}}function Wi(I,A,b){var w,_=$.aliasToReal[I]||I,Z=A,qe=Rb[_];return qe?Z=qe(A):i.immutable&&($.mutate.array[_]?Z=ws(A,gf):$.mutate.object[_]?Z=ws(A,zT(A)):$.mutate.set[_]&&(Z=ws(A,Tb))),R(Mi,function(Ae){return R($.aryMethod[Ae],function(Ue){if(_==Ue){var $i=$.methodSpread[_],qb=$i&&$i.afterRearg;return w=qb?ki(_,Fi(_,Z,Ae),Ae):Fi(_,ki(_,Z,Ae),Ae),w=xb(_,w),w=_b(_,w,Ae),!1}}),!w}),w||(w=Z),w==A&&(w=c?x(w,1):function(){return A.apply(this,arguments)}),w.convert=Qi(_,A),w.placeholder=A.placeholder=b,w}if(!o)return Wi(t,r,s);var ie=r,fr=[];return R(Mi,function(I){R($.aryMethod[I],function(A){var b=ie[$.remap[A]||A];b&&fr.push([A,Wi(A,b,ie)])})}),R(Ct(ie),function(I){var A=ie[I];if(typeof A=="function"){for(var b=fr.length;b--;)if(fr[b][0]==I)return;A.convert=Qi(I,A),fr.push([I,A])}}),R(fr,function(I){ie[I[0]]=I[1]}),ie.convert=Pb,ie.placeholder=ie,R(Ct(ie),function(I){R($.realToAlias[I]||[],function(A){ie[A]=ie[I]})}),ie}mf.exports=vs});var Es=u((PQ,Af)=>{"use strict";var XT=ot(),ZT=re(),eP=XT(ZT,"WeakMap");Af.exports=eP});var Rs=u((OQ,bf)=>{"use strict";var hf=Es(),tP=hf&&new hf;bf.exports=tP});var xs=u((CQ,Sf)=>{"use strict";var rP=Mr(),If=Rs(),aP=If?function(e,t){return If.set(e,t),e}:rP;Sf.exports=aP});var la=u((qQ,wf)=>{"use strict";var nP=Yr(),oP=Ie();function sP(e){return function(){var t=arguments;switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3]);case 5:return new e(t[0],t[1],t[2],t[3],t[4]);case 6:return new e(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var r=nP(e.prototype),a=e.apply(r,t);return oP(a)?a:r}}wf.exports=sP});var Ef=u((UQ,vf)=>{"use strict";var iP=la(),uP=re(),pP=1;function cP(e,t,r){var a=t&pP,n=iP(e);function o(){var i=this&&this!==uP&&this instanceof o?n:e;return i.apply(a?r:this,arguments)}return o}vf.exports=cP});var _s=u((LQ,Rf)=>{"use strict";var lP=Math.max;function dP(e,t,r,a){for(var n=-1,o=e.length,i=r.length,s=-1,c=t.length,f=lP(o-i,0),m=Array(c+f),g=!a;++s<c;)m[s]=t[s];for(;++n<i;)(g||n<o)&&(m[r[n]]=e[n]);for(;f--;)m[s++]=e[n++];return m}Rf.exports=dP});var Ts=u((DQ,xf)=>{"use strict";var fP=Math.max;function gP(e,t,r,a){for(var n=-1,o=e.length,i=-1,s=r.length,c=-1,f=t.length,m=fP(o-s,0),g=Array(m+f),y=!a;++n<m;)g[n]=e[n];for(var h=n;++c<f;)g[h+c]=t[c];for(;++i<s;)(y||n<o)&&(g[h+r[i]]=e[n++]);return g}xf.exports=gP});var Tf=u((BQ,_f)=>{"use strict";function mP(e,t){for(var r=e.length,a=0;r--;)e[r]===t&&++a;return a}_f.exports=mP});var ln=u((NQ,Pf)=>{"use strict";function yP(){}Pf.exports=yP});var fn=u((GQ,Of)=>{"use strict";var AP=Yr(),hP=ln(),bP=4294967295;function dn(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=bP,this.__views__=[]}dn.prototype=AP(hP.prototype);dn.prototype.constructor=dn;Of.exports=dn});var Ps=u((MQ,qf)=>{"use strict";var Cf=Rs(),IP=co(),SP=Cf?function(e){return Cf.get(e)}:IP;qf.exports=SP});var Lf=u((kQ,Uf)=>{"use strict";var wP={};Uf.exports=wP});var Nf=u((FQ,Bf)=>{"use strict";var Df=Lf(),vP=Object.prototype,EP=vP.hasOwnProperty;function RP(e){for(var t=e.name+"",r=Df[t],a=EP.call(Df,t)?r.length:0;a--;){var n=r[a],o=n.func;if(o==null||o==e)return n.name}return t}Bf.exports=RP});var Os=u((QQ,Gf)=>{"use strict";var xP=Yr(),_P=ln();function gn(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}gn.prototype=xP(_P.prototype);gn.prototype.constructor=gn;Gf.exports=gn});var kf=u((jQ,Mf)=>{"use strict";var TP=fn(),PP=Os(),OP=$t();function CP(e){if(e instanceof TP)return e.clone();var t=new PP(e.__wrapped__,e.__chain__);return t.__actions__=OP(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}Mf.exports=CP});var jf=u((WQ,Qf)=>{"use strict";var qP=fn(),Ff=Os(),UP=ln(),LP=z(),DP=pe(),BP=kf(),NP=Object.prototype,GP=NP.hasOwnProperty;function mn(e){if(DP(e)&&!LP(e)&&!(e instanceof qP)){if(e instanceof Ff)return e;if(GP.call(e,"__wrapped__"))return BP(e)}return new Ff(e)}mn.prototype=UP.prototype;mn.prototype.constructor=mn;Qf.exports=mn});var $f=u(($Q,Wf)=>{"use strict";var MP=fn(),kP=Ps(),FP=Nf(),QP=jf();function jP(e){var t=FP(e),r=QP[t];if(typeof r!="function"||!(t in MP.prototype))return!1;if(e===r)return!0;var a=kP(r);return!!a&&e===a[0]}Wf.exports=jP});var Cs=u((VQ,Vf)=>{"use strict";var WP=xs(),$P=no(),VP=$P(WP);Vf.exports=VP});var Yf=u((KQ,Kf)=>{"use strict";var KP=/\{\n\/\* \[wrapped with (.+)\] \*/,YP=/,? & /;function HP(e){var t=e.match(KP);return t?t[1].split(YP):[]}Kf.exports=HP});var zf=u((YQ,Hf)=>{"use strict";var zP=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function JP(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(zP,`{
|
|
1
|
+
"use strict";var kI=Object.create;var Sn=Object.defineProperty;var FI=Object.getOwnPropertyDescriptor;var QI=Object.getOwnPropertyNames;var jI=Object.getPrototypeOf,WI=Object.prototype.hasOwnProperty;var u=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),S=(e,t)=>{for(var r in t)Sn(e,r,{get:t[r],enumerable:!0})},tu=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of QI(t))!WI.call(e,a)&&a!==r&&Sn(e,a,{get:()=>t[a],enumerable:!(n=FI(t,a))||n.enumerable});return e};var O=(e,t,r)=>(r=e!=null?kI(jI(e)):{},tu(t||!e||!e.__esModule?Sn(r,"default",{value:e,enumerable:!0}):r,e)),$I=e=>tu(Sn({},"__esModule",{value:!0}),e);var Bn=u((c0,Gu)=>{"use strict";function $b(e,t){for(var r=-1,n=t.length,a=e.length;++r<n;)e[a+r]=t[r];return e}Gu.exports=$b});var no=u((l0,Mu)=>{"use strict";var Vb=typeof global=="object"&&global&&global.Object===Object&&global;Mu.exports=Vb});var re=u((d0,ku)=>{"use strict";var Kb=no(),Yb=typeof self=="object"&&self&&self.Object===Object&&self,Hb=Kb||Yb||Function("return this")();ku.exports=Hb});var bt=u((f0,Fu)=>{"use strict";var Jb=re(),zb=Jb.Symbol;Fu.exports=zb});var $u=u((g0,Wu)=>{"use strict";var Qu=bt(),ju=Object.prototype,Xb=ju.hasOwnProperty,Zb=ju.toString,kr=Qu?Qu.toStringTag:void 0;function eS(e){var t=Xb.call(e,kr),r=e[kr];try{e[kr]=void 0;var n=!0}catch{}var a=Zb.call(e);return n&&(t?e[kr]=r:delete e[kr]),a}Wu.exports=eS});var Ku=u((m0,Vu)=>{"use strict";var tS=Object.prototype,rS=tS.toString;function nS(e){return rS.call(e)}Vu.exports=nS});var st=u((y0,Ju)=>{"use strict";var Yu=bt(),aS=$u(),oS=Ku(),sS="[object Null]",iS="[object Undefined]",Hu=Yu?Yu.toStringTag:void 0;function uS(e){return e==null?e===void 0?iS:sS:Hu&&Hu in Object(e)?aS(e):oS(e)}Ju.exports=uS});var ce=u((A0,zu)=>{"use strict";function pS(e){return e!=null&&typeof e=="object"}zu.exports=pS});var Zu=u((h0,Xu)=>{"use strict";var cS=st(),lS=ce(),dS="[object Arguments]";function fS(e){return lS(e)&&cS(e)==dS}Xu.exports=fS});var Fr=u((I0,rp)=>{"use strict";var ep=Zu(),gS=ce(),tp=Object.prototype,mS=tp.hasOwnProperty,yS=tp.propertyIsEnumerable,AS=ep(function(){return arguments}())?ep:function(e){return gS(e)&&mS.call(e,"callee")&&!yS.call(e,"callee")};rp.exports=AS});var J=u((b0,np)=>{"use strict";var hS=Array.isArray;np.exports=hS});var ip=u((S0,sp)=>{"use strict";var ap=bt(),IS=Fr(),bS=J(),op=ap?ap.isConcatSpreadable:void 0;function SS(e){return bS(e)||IS(e)||!!(op&&e&&e[op])}sp.exports=SS});var ao=u((w0,pp)=>{"use strict";var wS=Bn(),vS=ip();function up(e,t,r,n,a){var o=-1,i=e.length;for(r||(r=vS),a||(a=[]);++o<i;){var s=e[o];t>0&&r(s)?t>1?up(s,t-1,r,n,a):wS(a,s):n||(a[a.length]=s)}return a}pp.exports=up});var Qr=u((v0,cp)=>{"use strict";function ES(e){return e}cp.exports=ES});var Nn=u((E0,lp)=>{"use strict";function RS(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}lp.exports=RS});var oo=u((R0,fp)=>{"use strict";var _S=Nn(),dp=Math.max;function xS(e,t,r){return t=dp(t===void 0?e.length-1:t,0),function(){for(var n=arguments,a=-1,o=dp(n.length-t,0),i=Array(o);++a<o;)i[a]=n[t+a];a=-1;for(var s=Array(t+1);++a<t;)s[a]=n[a];return s[t]=r(i),_S(e,this,s)}}fp.exports=xS});var mp=u((_0,gp)=>{"use strict";function TS(e){return function(){return e}}gp.exports=TS});var be=u((x0,yp)=>{"use strict";function PS(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}yp.exports=PS});var jr=u((T0,Ap)=>{"use strict";var OS=st(),CS=be(),qS="[object AsyncFunction]",LS="[object Function]",US="[object GeneratorFunction]",DS="[object Proxy]";function BS(e){if(!CS(e))return!1;var t=OS(e);return t==LS||t==US||t==qS||t==DS}Ap.exports=BS});var Ip=u((P0,hp)=>{"use strict";var NS=re(),GS=NS["__core-js_shared__"];hp.exports=GS});var wp=u((O0,Sp)=>{"use strict";var so=Ip(),bp=function(){var e=/[^.]+$/.exec(so&&so.keys&&so.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function MS(e){return!!bp&&bp in e}Sp.exports=MS});var io=u((C0,vp)=>{"use strict";var kS=Function.prototype,FS=kS.toString;function QS(e){if(e!=null){try{return FS.call(e)}catch{}try{return e+""}catch{}}return""}vp.exports=QS});var Rp=u((q0,Ep)=>{"use strict";var jS=jr(),WS=wp(),$S=be(),VS=io(),KS=/[\\^$.*+?()[\]{}|]/g,YS=/^\[object .+?Constructor\]$/,HS=Function.prototype,JS=Object.prototype,zS=HS.toString,XS=JS.hasOwnProperty,ZS=RegExp("^"+zS.call(XS).replace(KS,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function ew(e){if(!$S(e)||WS(e))return!1;var t=jS(e)?ZS:YS;return t.test(VS(e))}Ep.exports=ew});var xp=u((L0,_p)=>{"use strict";function tw(e,t){return e?.[t]}_p.exports=tw});var it=u((U0,Tp)=>{"use strict";var rw=Rp(),nw=xp();function aw(e,t){var r=nw(e,t);return rw(r)?r:void 0}Tp.exports=aw});var uo=u((D0,Pp)=>{"use strict";var ow=it(),sw=function(){try{var e=ow(Object,"defineProperty");return e({},"",{}),e}catch{}}();Pp.exports=sw});var qp=u((B0,Cp)=>{"use strict";var iw=mp(),Op=uo(),uw=Qr(),pw=Op?function(e,t){return Op(e,"toString",{configurable:!0,enumerable:!1,value:iw(t),writable:!0})}:uw;Cp.exports=pw});var po=u((N0,Lp)=>{"use strict";var cw=800,lw=16,dw=Date.now;function fw(e){var t=0,r=0;return function(){var n=dw(),a=lw-(n-r);if(r=n,a>0){if(++t>=cw)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}Lp.exports=fw});var Gn=u((G0,Up)=>{"use strict";var gw=qp(),mw=po(),yw=mw(gw);Up.exports=yw});var co=u((M0,Dp)=>{"use strict";var Aw=Qr(),hw=oo(),Iw=Gn();function bw(e,t){return Iw(hw(e,t,Aw),e+"")}Dp.exports=bw});var Wr=u((k0,Bp)=>{"use strict";var Sw=it(),ww=Sw(Object,"create");Bp.exports=ww});var Mp=u((F0,Gp)=>{"use strict";var Np=Wr();function vw(){this.__data__=Np?Np(null):{},this.size=0}Gp.exports=vw});var Fp=u((Q0,kp)=>{"use strict";function Ew(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}kp.exports=Ew});var jp=u((j0,Qp)=>{"use strict";var Rw=Wr(),_w="__lodash_hash_undefined__",xw=Object.prototype,Tw=xw.hasOwnProperty;function Pw(e){var t=this.__data__;if(Rw){var r=t[e];return r===_w?void 0:r}return Tw.call(t,e)?t[e]:void 0}Qp.exports=Pw});var $p=u((W0,Wp)=>{"use strict";var Ow=Wr(),Cw=Object.prototype,qw=Cw.hasOwnProperty;function Lw(e){var t=this.__data__;return Ow?t[e]!==void 0:qw.call(t,e)}Wp.exports=Lw});var Kp=u(($0,Vp)=>{"use strict";var Uw=Wr(),Dw="__lodash_hash_undefined__";function Bw(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=Uw&&t===void 0?Dw:t,this}Vp.exports=Bw});var Hp=u((V0,Yp)=>{"use strict";var Nw=Mp(),Gw=Fp(),Mw=jp(),kw=$p(),Fw=Kp();function Qt(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}Qt.prototype.clear=Nw;Qt.prototype.delete=Gw;Qt.prototype.get=Mw;Qt.prototype.has=kw;Qt.prototype.set=Fw;Yp.exports=Qt});var zp=u((K0,Jp)=>{"use strict";function Qw(){this.__data__=[],this.size=0}Jp.exports=Qw});var jt=u((Y0,Xp)=>{"use strict";function jw(e,t){return e===t||e!==e&&t!==t}Xp.exports=jw});var $r=u((H0,Zp)=>{"use strict";var Ww=jt();function $w(e,t){for(var r=e.length;r--;)if(Ww(e[r][0],t))return r;return-1}Zp.exports=$w});var tc=u((J0,ec)=>{"use strict";var Vw=$r(),Kw=Array.prototype,Yw=Kw.splice;function Hw(e){var t=this.__data__,r=Vw(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():Yw.call(t,r,1),--this.size,!0}ec.exports=Hw});var nc=u((z0,rc)=>{"use strict";var Jw=$r();function zw(e){var t=this.__data__,r=Jw(t,e);return r<0?void 0:t[r][1]}rc.exports=zw});var oc=u((X0,ac)=>{"use strict";var Xw=$r();function Zw(e){return Xw(this.__data__,e)>-1}ac.exports=Zw});var ic=u((Z0,sc)=>{"use strict";var ev=$r();function tv(e,t){var r=this.__data__,n=ev(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}sc.exports=tv});var Vr=u((ek,uc)=>{"use strict";var rv=zp(),nv=tc(),av=nc(),ov=oc(),sv=ic();function Wt(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}Wt.prototype.clear=rv;Wt.prototype.delete=nv;Wt.prototype.get=av;Wt.prototype.has=ov;Wt.prototype.set=sv;uc.exports=Wt});var Mn=u((tk,pc)=>{"use strict";var iv=it(),uv=re(),pv=iv(uv,"Map");pc.exports=pv});var dc=u((rk,lc)=>{"use strict";var cc=Hp(),cv=Vr(),lv=Mn();function dv(){this.size=0,this.__data__={hash:new cc,map:new(lv||cv),string:new cc}}lc.exports=dv});var gc=u((nk,fc)=>{"use strict";function fv(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}fc.exports=fv});var Kr=u((ak,mc)=>{"use strict";var gv=gc();function mv(e,t){var r=e.__data__;return gv(t)?r[typeof t=="string"?"string":"hash"]:r.map}mc.exports=mv});var Ac=u((ok,yc)=>{"use strict";var yv=Kr();function Av(e){var t=yv(this,e).delete(e);return this.size-=t?1:0,t}yc.exports=Av});var Ic=u((sk,hc)=>{"use strict";var hv=Kr();function Iv(e){return hv(this,e).get(e)}hc.exports=Iv});var Sc=u((ik,bc)=>{"use strict";var bv=Kr();function Sv(e){return bv(this,e).has(e)}bc.exports=Sv});var vc=u((uk,wc)=>{"use strict";var wv=Kr();function vv(e,t){var r=wv(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}wc.exports=vv});var kn=u((pk,Ec)=>{"use strict";var Ev=dc(),Rv=Ac(),_v=Ic(),xv=Sc(),Tv=vc();function $t(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}$t.prototype.clear=Ev;$t.prototype.delete=Rv;$t.prototype.get=_v;$t.prototype.has=xv;$t.prototype.set=Tv;Ec.exports=$t});var _c=u((ck,Rc)=>{"use strict";var Pv="__lodash_hash_undefined__";function Ov(e){return this.__data__.set(e,Pv),this}Rc.exports=Ov});var Tc=u((lk,xc)=>{"use strict";function Cv(e){return this.__data__.has(e)}xc.exports=Cv});var lo=u((dk,Pc)=>{"use strict";var qv=kn(),Lv=_c(),Uv=Tc();function Fn(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new qv;++t<r;)this.add(e[t])}Fn.prototype.add=Fn.prototype.push=Lv;Fn.prototype.has=Uv;Pc.exports=Fn});var Cc=u((fk,Oc)=>{"use strict";function Dv(e,t,r,n){for(var a=e.length,o=r+(n?1:-1);n?o--:++o<a;)if(t(e[o],o,e))return o;return-1}Oc.exports=Dv});var Lc=u((gk,qc)=>{"use strict";function Bv(e){return e!==e}qc.exports=Bv});var Dc=u((mk,Uc)=>{"use strict";function Nv(e,t,r){for(var n=r-1,a=e.length;++n<a;)if(e[n]===t)return n;return-1}Uc.exports=Nv});var Nc=u((yk,Bc)=>{"use strict";var Gv=Cc(),Mv=Lc(),kv=Dc();function Fv(e,t,r){return t===t?kv(e,t,r):Gv(e,Mv,r)}Bc.exports=Fv});var fo=u((Ak,Gc)=>{"use strict";var Qv=Nc();function jv(e,t){var r=e==null?0:e.length;return!!r&&Qv(e,t,0)>-1}Gc.exports=jv});var kc=u((hk,Mc)=>{"use strict";function Wv(e,t,r){for(var n=-1,a=e==null?0:e.length;++n<a;)if(r(t,e[n]))return!0;return!1}Mc.exports=Wv});var go=u((Ik,Fc)=>{"use strict";function $v(e,t){return e.has(t)}Fc.exports=$v});var mo=u((bk,Qc)=>{"use strict";var Vv=it(),Kv=re(),Yv=Vv(Kv,"Set");Qc.exports=Yv});var yo=u((Sk,jc)=>{"use strict";function Hv(){}jc.exports=Hv});var Qn=u((wk,Wc)=>{"use strict";function Jv(e){var t=-1,r=Array(e.size);return e.forEach(function(n){r[++t]=n}),r}Wc.exports=Jv});var Vc=u((vk,$c)=>{"use strict";var Ao=mo(),zv=yo(),Xv=Qn(),Zv=1/0,eE=Ao&&1/Xv(new Ao([,-0]))[1]==Zv?function(e){return new Ao(e)}:zv;$c.exports=eE});var Yc=u((Ek,Kc)=>{"use strict";var tE=lo(),rE=fo(),nE=kc(),aE=go(),oE=Vc(),sE=Qn(),iE=200;function uE(e,t,r){var n=-1,a=rE,o=e.length,i=!0,s=[],c=s;if(r)i=!1,a=nE;else if(o>=iE){var f=t?null:oE(e);if(f)return sE(f);i=!1,a=aE,c=new tE}else c=t?[]:s;e:for(;++n<o;){var m=e[n],g=t?t(m):m;if(m=r||m!==0?m:0,i&&g===g){for(var y=c.length;y--;)if(c[y]===g)continue e;t&&c.push(g),s.push(m)}else a(c,g,r)||(c!==s&&c.push(g),s.push(m))}return s}Kc.exports=uE});var jn=u((Rk,Hc)=>{"use strict";var pE=9007199254740991;function cE(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=pE}Hc.exports=cE});var Vt=u((_k,Jc)=>{"use strict";var lE=jr(),dE=jn();function fE(e){return e!=null&&dE(e.length)&&!lE(e)}Jc.exports=fE});var ho=u((xk,zc)=>{"use strict";var gE=Vt(),mE=ce();function yE(e){return mE(e)&&gE(e)}zc.exports=yE});var Zc=u((Tk,Xc)=>{"use strict";var AE=ao(),hE=co(),IE=Yc(),bE=ho(),SE=hE(function(e){return IE(AE(e,1,bE,!0))});Xc.exports=SE});var tl=u((Pk,el)=>{"use strict";var wE=Vr();function vE(){this.__data__=new wE,this.size=0}el.exports=vE});var nl=u((Ok,rl)=>{"use strict";function EE(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}rl.exports=EE});var ol=u((Ck,al)=>{"use strict";function RE(e){return this.__data__.get(e)}al.exports=RE});var il=u((qk,sl)=>{"use strict";function _E(e){return this.__data__.has(e)}sl.exports=_E});var pl=u((Lk,ul)=>{"use strict";var xE=Vr(),TE=Mn(),PE=kn(),OE=200;function CE(e,t){var r=this.__data__;if(r instanceof xE){var n=r.__data__;if(!TE||n.length<OE-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new PE(n)}return r.set(e,t),this.size=r.size,this}ul.exports=CE});var Yr=u((Uk,cl)=>{"use strict";var qE=Vr(),LE=tl(),UE=nl(),DE=ol(),BE=il(),NE=pl();function Kt(e){var t=this.__data__=new qE(e);this.size=t.size}Kt.prototype.clear=LE;Kt.prototype.delete=UE;Kt.prototype.get=DE;Kt.prototype.has=BE;Kt.prototype.set=NE;cl.exports=Kt});var Hr=u((Dk,dl)=>{"use strict";var ll=uo();function GE(e,t,r){t=="__proto__"&&ll?ll(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}dl.exports=GE});var Io=u((Bk,fl)=>{"use strict";var ME=Hr(),kE=jt();function FE(e,t,r){(r!==void 0&&!kE(e[t],r)||r===void 0&&!(t in e))&&ME(e,t,r)}fl.exports=FE});var ml=u((Nk,gl)=>{"use strict";function QE(e){return function(t,r,n){for(var a=-1,o=Object(t),i=n(t),s=i.length;s--;){var c=i[e?s:++a];if(r(o[c],c,o)===!1)break}return t}}gl.exports=QE});var bo=u((Gk,yl)=>{"use strict";var jE=ml(),WE=jE();yl.exports=WE});var So=u((Jr,Yt)=>{"use strict";var $E=re(),bl=typeof Jr=="object"&&Jr&&!Jr.nodeType&&Jr,Al=bl&&typeof Yt=="object"&&Yt&&!Yt.nodeType&&Yt,VE=Al&&Al.exports===bl,hl=VE?$E.Buffer:void 0,Il=hl?hl.allocUnsafe:void 0;function KE(e,t){if(t)return e.slice();var r=e.length,n=Il?Il(r):new e.constructor(r);return e.copy(n),n}Yt.exports=KE});var wo=u((Mk,Sl)=>{"use strict";var YE=re(),HE=YE.Uint8Array;Sl.exports=HE});var Wn=u((kk,vl)=>{"use strict";var wl=wo();function JE(e){var t=new e.constructor(e.byteLength);return new wl(t).set(new wl(e)),t}vl.exports=JE});var vo=u((Fk,El)=>{"use strict";var zE=Wn();function XE(e,t){var r=t?zE(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}El.exports=XE});var Ht=u((Qk,Rl)=>{"use strict";function ZE(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t}Rl.exports=ZE});var zr=u((jk,xl)=>{"use strict";var eR=be(),_l=Object.create,tR=function(){function e(){}return function(t){if(!eR(t))return{};if(_l)return _l(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();xl.exports=tR});var Eo=u((Wk,Tl)=>{"use strict";function rR(e,t){return function(r){return e(t(r))}}Tl.exports=rR});var $n=u(($k,Pl)=>{"use strict";var nR=Eo(),aR=nR(Object.getPrototypeOf,Object);Pl.exports=aR});var Vn=u((Vk,Ol)=>{"use strict";var oR=Object.prototype;function sR(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||oR;return e===r}Ol.exports=sR});var Ro=u((Kk,Cl)=>{"use strict";var iR=zr(),uR=$n(),pR=Vn();function cR(e){return typeof e.constructor=="function"&&!pR(e)?iR(uR(e)):{}}Cl.exports=cR});var Ll=u((Yk,ql)=>{"use strict";function lR(){return!1}ql.exports=lR});var Zr=u((Xr,Jt)=>{"use strict";var dR=re(),fR=Ll(),Bl=typeof Xr=="object"&&Xr&&!Xr.nodeType&&Xr,Ul=Bl&&typeof Jt=="object"&&Jt&&!Jt.nodeType&&Jt,gR=Ul&&Ul.exports===Bl,Dl=gR?dR.Buffer:void 0,mR=Dl?Dl.isBuffer:void 0,yR=mR||fR;Jt.exports=yR});var _o=u((Hk,Gl)=>{"use strict";var AR=st(),hR=$n(),IR=ce(),bR="[object Object]",SR=Function.prototype,wR=Object.prototype,Nl=SR.toString,vR=wR.hasOwnProperty,ER=Nl.call(Object);function RR(e){if(!IR(e)||AR(e)!=bR)return!1;var t=hR(e);if(t===null)return!0;var r=vR.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Nl.call(r)==ER}Gl.exports=RR});var kl=u((Jk,Ml)=>{"use strict";var _R=st(),xR=jn(),TR=ce(),PR="[object Arguments]",OR="[object Array]",CR="[object Boolean]",qR="[object Date]",LR="[object Error]",UR="[object Function]",DR="[object Map]",BR="[object Number]",NR="[object Object]",GR="[object RegExp]",MR="[object Set]",kR="[object String]",FR="[object WeakMap]",QR="[object ArrayBuffer]",jR="[object DataView]",WR="[object Float32Array]",$R="[object Float64Array]",VR="[object Int8Array]",KR="[object Int16Array]",YR="[object Int32Array]",HR="[object Uint8Array]",JR="[object Uint8ClampedArray]",zR="[object Uint16Array]",XR="[object Uint32Array]",L={};L[WR]=L[$R]=L[VR]=L[KR]=L[YR]=L[HR]=L[JR]=L[zR]=L[XR]=!0;L[PR]=L[OR]=L[QR]=L[CR]=L[jR]=L[qR]=L[LR]=L[UR]=L[DR]=L[BR]=L[NR]=L[GR]=L[MR]=L[kR]=L[FR]=!1;function ZR(e){return TR(e)&&xR(e.length)&&!!L[_R(e)]}Ml.exports=ZR});var Kn=u((zk,Fl)=>{"use strict";function e_(e){return function(t){return e(t)}}Fl.exports=e_});var Yn=u((en,zt)=>{"use strict";var t_=no(),Ql=typeof en=="object"&&en&&!en.nodeType&&en,tn=Ql&&typeof zt=="object"&&zt&&!zt.nodeType&&zt,r_=tn&&tn.exports===Ql,xo=r_&&t_.process,n_=function(){try{var e=tn&&tn.require&&tn.require("util").types;return e||xo&&xo.binding&&xo.binding("util")}catch{}}();zt.exports=n_});var Hn=u((Xk,$l)=>{"use strict";var a_=kl(),o_=Kn(),jl=Yn(),Wl=jl&&jl.isTypedArray,s_=Wl?o_(Wl):a_;$l.exports=s_});var To=u((Zk,Vl)=>{"use strict";function i_(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}Vl.exports=i_});var Po=u((eF,Kl)=>{"use strict";var u_=Hr(),p_=jt(),c_=Object.prototype,l_=c_.hasOwnProperty;function d_(e,t,r){var n=e[t];(!(l_.call(e,t)&&p_(n,r))||r===void 0&&!(t in e))&&u_(e,t,r)}Kl.exports=d_});var Xt=u((tF,Yl)=>{"use strict";var f_=Po(),g_=Hr();function m_(e,t,r,n){var a=!r;r||(r={});for(var o=-1,i=t.length;++o<i;){var s=t[o],c=n?n(r[s],e[s],s,r,e):void 0;c===void 0&&(c=e[s]),a?g_(r,s,c):f_(r,s,c)}return r}Yl.exports=m_});var Jl=u((rF,Hl)=>{"use strict";function y_(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}Hl.exports=y_});var rn=u((nF,zl)=>{"use strict";var A_=9007199254740991,h_=/^(?:0|[1-9]\d*)$/;function I_(e,t){var r=typeof e;return t=t??A_,!!t&&(r=="number"||r!="symbol"&&h_.test(e))&&e>-1&&e%1==0&&e<t}zl.exports=I_});var Oo=u((aF,Xl)=>{"use strict";var b_=Jl(),S_=Fr(),w_=J(),v_=Zr(),E_=rn(),R_=Hn(),__=Object.prototype,x_=__.hasOwnProperty;function T_(e,t){var r=w_(e),n=!r&&S_(e),a=!r&&!n&&v_(e),o=!r&&!n&&!a&&R_(e),i=r||n||a||o,s=i?b_(e.length,String):[],c=s.length;for(var f in e)(t||x_.call(e,f))&&!(i&&(f=="length"||a&&(f=="offset"||f=="parent")||o&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||E_(f,c)))&&s.push(f);return s}Xl.exports=T_});var ed=u((oF,Zl)=>{"use strict";function P_(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}Zl.exports=P_});var rd=u((sF,td)=>{"use strict";var O_=be(),C_=Vn(),q_=ed(),L_=Object.prototype,U_=L_.hasOwnProperty;function D_(e){if(!O_(e))return q_(e);var t=C_(e),r=[];for(var n in e)n=="constructor"&&(t||!U_.call(e,n))||r.push(n);return r}td.exports=D_});var Zt=u((iF,nd)=>{"use strict";var B_=Oo(),N_=rd(),G_=Vt();function M_(e){return G_(e)?B_(e,!0):N_(e)}nd.exports=M_});var od=u((uF,ad)=>{"use strict";var k_=Xt(),F_=Zt();function Q_(e){return k_(e,F_(e))}ad.exports=Q_});var ld=u((pF,cd)=>{"use strict";var sd=Io(),j_=So(),W_=vo(),$_=Ht(),V_=Ro(),id=Fr(),ud=J(),K_=ho(),Y_=Zr(),H_=jr(),J_=be(),z_=_o(),X_=Hn(),pd=To(),Z_=od();function ex(e,t,r,n,a,o,i){var s=pd(e,r),c=pd(t,r),f=i.get(c);if(f){sd(e,r,f);return}var m=o?o(s,c,r+"",e,t,i):void 0,g=m===void 0;if(g){var y=ud(c),h=!y&&Y_(c),E=!y&&!h&&X_(c);m=c,y||h||E?ud(s)?m=s:K_(s)?m=$_(s):h?(g=!1,m=j_(c,!0)):E?(g=!1,m=W_(c,!0)):m=[]:z_(c)||id(c)?(m=s,id(s)?m=Z_(s):(!J_(s)||H_(s))&&(m=V_(c))):g=!1}g&&(i.set(c,m),a(m,c,n,o,i),i.delete(c)),sd(e,r,m)}cd.exports=ex});var gd=u((cF,fd)=>{"use strict";var tx=Yr(),rx=Io(),nx=bo(),ax=ld(),ox=be(),sx=Zt(),ix=To();function dd(e,t,r,n,a){e!==t&&nx(t,function(o,i){if(a||(a=new tx),ox(o))ax(e,t,i,r,dd,n,a);else{var s=n?n(ix(e,i),o,i+"",e,t,a):void 0;s===void 0&&(s=o),rx(e,i,s)}},sx)}fd.exports=dd});var yd=u((lF,md)=>{"use strict";var ux=jt(),px=Vt(),cx=rn(),lx=be();function dx(e,t,r){if(!lx(r))return!1;var n=typeof t;return(n=="number"?px(r)&&cx(t,r.length):n=="string"&&t in r)?ux(r[t],e):!1}md.exports=dx});var hd=u((dF,Ad)=>{"use strict";var fx=co(),gx=yd();function mx(e){return fx(function(t,r){var n=-1,a=r.length,o=a>1?r[a-1]:void 0,i=a>2?r[2]:void 0;for(o=e.length>3&&typeof o=="function"?(a--,o):void 0,i&&gx(r[0],r[1],i)&&(o=a<3?void 0:o,a=1),t=Object(t);++n<a;){var s=r[n];s&&e(t,s,n,o)}return t})}Ad.exports=mx});var Co=u((fF,Id)=>{"use strict";var yx=gd(),Ax=hd(),hx=Ax(function(e,t,r){yx(e,t,r)});Id.exports=hx});var bf=u(oe=>{"use strict";oe.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"};oe.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"],4:["fill","setWith","updateWith"]};oe.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};oe.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2};oe.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};oe.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]};oe.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}};oe.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}};oe.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=oe.aliasToReal,r={};for(var n in t){var a=t[n];e.call(r,a)?r[a].push(n):r[a]=[n]}return r}();oe.remap={assignAll:"assign",assignAllWith:"assignWith",assignInAll:"assignIn",assignInAllWith:"assignInWith",curryN:"curry",curryRightN:"curryRight",defaultsAll:"defaults",defaultsDeepAll:"defaultsDeep",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",mergeAll:"merge",mergeAllWith:"mergeWith",padChars:"pad",padCharsEnd:"padEnd",padCharsStart:"padStart",propertyOf:"get",rangeStep:"range",rangeStepRight:"rangeRight",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart",zipAll:"zip"};oe.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};oe.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}});var Ts=u((DQ,Sf)=>{"use strict";Sf.exports={}});var Rf=u((BQ,Ef)=>{"use strict";var $=bf(),eP=Ts(),wf=Array.prototype.push;function tP(e,t){return t==2?function(r,n){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}function Ps(e,t){return t==2?function(r,n){return e(r,n)}:function(r){return e(r)}}function vf(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}function rP(e){return function(t){return e({},t)}}function nP(e,t){return function(){for(var r=arguments.length,n=r-1,a=Array(r);r--;)a[r]=arguments[r];var o=a[t],i=a.slice(0,t);return o&&wf.apply(i,o),t!=n&&wf.apply(i,a.slice(t+1)),e.apply(this,i)}}function Os(e,t){return function(){var r=arguments.length;if(r){for(var n=Array(r);r--;)n[r]=arguments[r];var a=n[0]=t.apply(void 0,n);return e.apply(void 0,n),a}}}function Cs(e,t,r,n){var a=typeof t=="function",o=t===Object(t);if(o&&(n=r,r=t,t=void 0),r==null)throw new TypeError;n||(n={});var i={cap:"cap"in n?n.cap:!0,curry:"curry"in n?n.curry:!0,fixed:"fixed"in n?n.fixed:!0,immutable:"immutable"in n?n.immutable:!0,rearg:"rearg"in n?n.rearg:!0},s=a?r:eP,c="curry"in n&&n.curry,f="fixed"in n&&n.fixed,m="rearg"in n&&n.rearg,g=a?r.runInContext():void 0,y=a?r:{ary:e.ary,assign:e.assign,clone:e.clone,curry:e.curry,forEach:e.forEach,isArray:e.isArray,isError:e.isError,isFunction:e.isFunction,isWeakMap:e.isWeakMap,iteratee:e.iteratee,keys:e.keys,rearg:e.rearg,toInteger:e.toInteger,toPath:e.toPath},h=y.ary,E=y.assign,T=y.clone,_=y.curry,R=y.forEach,U=y.isArray,et=y.isError,ye=y.isFunction,tt=y.isWeakMap,Dt=y.keys,gr=y.rearg,mr=y.toInteger,CI=y.toPath,Yi=Dt($.aryMethod),qI={castArray:function(b){return function(){var A=arguments[0];return U(A)?b(vf(A)):b.apply(void 0,arguments)}},iteratee:function(b){return function(){var A=arguments[0],I=arguments[1],w=b(A,I),x=w.length;return i.cap&&typeof I=="number"?(I=I>2?I-2:1,x&&x<=I?w:Ps(w,I)):w}},mixin:function(b){return function(A){var I=this;if(!ye(I))return b(I,Object(A));var w=[];return R(Dt(A),function(x){ye(A[x])&&w.push([x,I.prototype[x]])}),b(I,Object(A)),R(w,function(x){var Z=x[1];ye(Z)?I.prototype[x[0]]=Z:delete I.prototype[x[0]]}),I}},nthArg:function(b){return function(A){var I=A<0?1:mr(A)+1;return _(b(A),I)}},rearg:function(b){return function(A,I){var w=I?I.length:0;return _(b(A,I),w)}},runInContext:function(b){return function(A){return Cs(e,b(A),n)}}};function LI(b,A){if(i.cap){var I=$.iterateeRearg[b];if(I)return GI(A,I);var w=!a&&$.iterateeAry[b];if(w)return NI(A,w)}return A}function UI(b,A,I){return c||i.curry&&I>1?_(A,I):A}function Hi(b,A,I){if(i.fixed&&(f||!$.skipFixed[b])){var w=$.methodSpread[b],x=w&&w.start;return x===void 0?h(A,I):nP(A,x)}return A}function Ji(b,A,I){return i.rearg&&I>1&&(m||!$.skipRearg[b])?gr(A,$.methodRearg[b]||$.aryRearg[I]):A}function DI(b,A){A=CI(A);for(var I=-1,w=A.length,x=w-1,Z=T(Object(b)),qe=Z;qe!=null&&++I<w;){var Ae=A[I],Le=qe[Ae];Le!=null&&!(ye(Le)||et(Le)||tt(Le))&&(qe[Ae]=T(I==x?Le:Object(Le))),qe=qe[Ae]}return Z}function BI(b){return ue.runInContext.convert(b)(void 0)}function zi(b,A){var I=$.aliasToReal[b]||b,w=$.remap[I]||I,x=n;return function(Z){var qe=a?g:y,Ae=a?g[w]:A,Le=E(E({},x),Z);return Cs(qe,I,Ae,Le)}}function NI(b,A){return Xi(b,function(I){return typeof I=="function"?Ps(I,A):I})}function GI(b,A){return Xi(b,function(I){var w=A.length;return tP(gr(Ps(I,w),A),w)})}function Xi(b,A){return function(){var I=arguments.length;if(!I)return b();for(var w=Array(I);I--;)w[I]=arguments[I];var x=i.rearg?0:I-1;return w[x]=A(w[x]),b.apply(void 0,w)}}function Zi(b,A,I){var w,x=$.aliasToReal[b]||b,Z=A,qe=qI[x];return qe?Z=qe(A):i.immutable&&($.mutate.array[x]?Z=Os(A,vf):$.mutate.object[x]?Z=Os(A,rP(A)):$.mutate.set[x]&&(Z=Os(A,DI))),R(Yi,function(Ae){return R($.aryMethod[Ae],function(Le){if(x==Le){var eu=$.methodSpread[x],MI=eu&&eu.afterRearg;return w=MI?Hi(x,Ji(x,Z,Ae),Ae):Ji(x,Hi(x,Z,Ae),Ae),w=LI(x,w),w=UI(x,w,Ae),!1}}),!w}),w||(w=Z),w==A&&(w=c?_(w,1):function(){return A.apply(this,arguments)}),w.convert=zi(x,A),w.placeholder=A.placeholder=I,w}if(!o)return Zi(t,r,s);var ue=r,yr=[];return R(Yi,function(b){R($.aryMethod[b],function(A){var I=ue[$.remap[A]||A];I&&yr.push([A,Zi(A,I,ue)])})}),R(Dt(ue),function(b){var A=ue[b];if(typeof A=="function"){for(var I=yr.length;I--;)if(yr[I][0]==b)return;A.convert=zi(b,A),yr.push([b,A])}}),R(yr,function(b){ue[b[0]]=b[1]}),ue.convert=BI,ue.placeholder=ue,R(Dt(ue),function(b){R($.realToAlias[b]||[],function(A){ue[A]=ue[b]})}),ue}Ef.exports=Cs});var qs=u((NQ,_f)=>{"use strict";var aP=it(),oP=re(),sP=aP(oP,"WeakMap");_f.exports=sP});var Ls=u((GQ,Tf)=>{"use strict";var xf=qs(),iP=xf&&new xf;Tf.exports=iP});var Us=u((MQ,Of)=>{"use strict";var uP=Qr(),Pf=Ls(),pP=Pf?function(e,t){return Pf.set(e,t),e}:uP;Of.exports=pP});var mn=u((kQ,Cf)=>{"use strict";var cP=zr(),lP=be();function dP(e){return function(){var t=arguments;switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3]);case 5:return new e(t[0],t[1],t[2],t[3],t[4]);case 6:return new e(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var r=cP(e.prototype),n=e.apply(r,t);return lP(n)?n:r}}Cf.exports=dP});var Lf=u((FQ,qf)=>{"use strict";var fP=mn(),gP=re(),mP=1;function yP(e,t,r){var n=t&mP,a=fP(e);function o(){var i=this&&this!==gP&&this instanceof o?a:e;return i.apply(n?r:this,arguments)}return o}qf.exports=yP});var Ds=u((QQ,Uf)=>{"use strict";var AP=Math.max;function hP(e,t,r,n){for(var a=-1,o=e.length,i=r.length,s=-1,c=t.length,f=AP(o-i,0),m=Array(c+f),g=!n;++s<c;)m[s]=t[s];for(;++a<i;)(g||a<o)&&(m[r[a]]=e[a]);for(;f--;)m[s++]=e[a++];return m}Uf.exports=hP});var Bs=u((jQ,Df)=>{"use strict";var IP=Math.max;function bP(e,t,r,n){for(var a=-1,o=e.length,i=-1,s=r.length,c=-1,f=t.length,m=IP(o-s,0),g=Array(m+f),y=!n;++a<m;)g[a]=e[a];for(var h=a;++c<f;)g[h+c]=t[c];for(;++i<s;)(y||a<o)&&(g[h+r[i]]=e[a++]);return g}Df.exports=bP});var Nf=u((WQ,Bf)=>{"use strict";function SP(e,t){for(var r=e.length,n=0;r--;)e[r]===t&&++n;return n}Bf.exports=SP});var la=u(($Q,Gf)=>{"use strict";function wP(){}Gf.exports=wP});var fa=u((VQ,Mf)=>{"use strict";var vP=zr(),EP=la(),RP=4294967295;function da(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=RP,this.__views__=[]}da.prototype=vP(EP.prototype);da.prototype.constructor=da;Mf.exports=da});var Ns=u((KQ,Ff)=>{"use strict";var kf=Ls(),_P=yo(),xP=kf?function(e){return kf.get(e)}:_P;Ff.exports=xP});var jf=u((YQ,Qf)=>{"use strict";var TP={};Qf.exports=TP});var Vf=u((HQ,$f)=>{"use strict";var Wf=jf(),PP=Object.prototype,OP=PP.hasOwnProperty;function CP(e){for(var t=e.name+"",r=Wf[t],n=OP.call(Wf,t)?r.length:0;n--;){var a=r[n],o=a.func;if(o==null||o==e)return a.name}return t}$f.exports=CP});var Gs=u((JQ,Kf)=>{"use strict";var qP=zr(),LP=la();function ga(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}ga.prototype=qP(LP.prototype);ga.prototype.constructor=ga;Kf.exports=ga});var Hf=u((zQ,Yf)=>{"use strict";var UP=fa(),DP=Gs(),BP=Ht();function NP(e){if(e instanceof UP)return e.clone();var t=new DP(e.__wrapped__,e.__chain__);return t.__actions__=BP(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}Yf.exports=NP});var Xf=u((XQ,zf)=>{"use strict";var GP=fa(),Jf=Gs(),MP=la(),kP=J(),FP=ce(),QP=Hf(),jP=Object.prototype,WP=jP.hasOwnProperty;function ma(e){if(FP(e)&&!kP(e)&&!(e instanceof GP)){if(e instanceof Jf)return e;if(WP.call(e,"__wrapped__"))return QP(e)}return new Jf(e)}ma.prototype=MP.prototype;ma.prototype.constructor=ma;zf.exports=ma});var eg=u((ZQ,Zf)=>{"use strict";var $P=fa(),VP=Ns(),KP=Vf(),YP=Xf();function HP(e){var t=KP(e),r=YP[t];if(typeof r!="function"||!(t in $P.prototype))return!1;if(e===r)return!0;var n=VP(r);return!!n&&e===n[0]}Zf.exports=HP});var Ms=u((ej,tg)=>{"use strict";var JP=Us(),zP=po(),XP=zP(JP);tg.exports=XP});var ng=u((tj,rg)=>{"use strict";var ZP=/\{\n\/\* \[wrapped with (.+)\] \*/,eO=/,? & /;function tO(e){var t=e.match(ZP);return t?t[1].split(eO):[]}rg.exports=tO});var og=u((rj,ag)=>{"use strict";var rO=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function nO(e,t){var r=t.length;if(!r)return e;var n=r-1;return t[n]=(r>1?"& ":"")+t[n],t=t.join(r>2?", ":" "),e.replace(rO,`{
|
|
2
2
|
/* [wrapped with `+t+`] */
|
|
3
|
-
`)}Hf.exports=JP});var yn=u((HQ,Jf)=>{"use strict";function XP(e,t){for(var r=-1,a=e==null?0:e.length;++r<a&&t(e[r],r,e)!==!1;);return e}Jf.exports=XP});var Zf=u((zQ,Xf)=>{"use strict";var ZP=yn(),eO=io(),tO=1,rO=2,aO=8,nO=16,oO=32,sO=64,iO=128,uO=256,pO=512,cO=[["ary",iO],["bind",tO],["bindKey",rO],["curry",aO],["curryRight",nO],["flip",pO],["partial",oO],["partialRight",sO],["rearg",uO]];function lO(e,t){return ZP(cO,function(r){var a="_."+r[0];t&r[1]&&!eO(e,a)&&e.push(a)}),e.sort()}Xf.exports=lO});var qs=u((JQ,eg)=>{"use strict";var dO=Yf(),fO=zf(),gO=Ba(),mO=Zf();function yO(e,t,r){var a=t+"";return gO(e,fO(a,mO(dO(a),r)))}eg.exports=yO});var Us=u((XQ,ag)=>{"use strict";var AO=$f(),hO=Cs(),bO=qs(),IO=1,SO=2,wO=4,vO=8,tg=32,rg=64;function EO(e,t,r,a,n,o,i,s,c,f){var m=t&vO,g=m?i:void 0,y=m?void 0:i,h=m?o:void 0,E=m?void 0:o;t|=m?tg:rg,t&=~(m?rg:tg),t&wO||(t&=~(IO|SO));var T=[e,t,n,h,g,E,y,s,c,f],x=r.apply(void 0,T);return AO(e)&&hO(x,T),x.placeholder=a,bO(x,e,t)}ag.exports=EO});var Ls=u((ZQ,ng)=>{"use strict";function RO(e){var t=e;return t.placeholder}ng.exports=RO});var sg=u((ej,og)=>{"use strict";var xO=$t(),_O=Zr(),TO=Math.min;function PO(e,t){for(var r=e.length,a=TO(t.length,r),n=xO(e);a--;){var o=t[a];e[a]=_O(o,r)?n[o]:void 0}return e}og.exports=PO});var An=u((tj,ug)=>{"use strict";var ig="__lodash_placeholder__";function OO(e,t){for(var r=-1,a=e.length,n=0,o=[];++r<a;){var i=e[r];(i===t||i===ig)&&(e[r]=ig,o[n++]=r)}return o}ug.exports=OO});var Ds=u((rj,lg)=>{"use strict";var CO=_s(),qO=Ts(),UO=Tf(),pg=la(),LO=Us(),DO=Ls(),BO=sg(),NO=An(),GO=re(),MO=1,kO=2,FO=8,QO=16,jO=128,WO=512;function cg(e,t,r,a,n,o,i,s,c,f){var m=t&jO,g=t&MO,y=t&kO,h=t&(FO|QO),E=t&WO,T=y?void 0:pg(e);function x(){for(var R=arguments.length,L=Array(R),Xe=R;Xe--;)L[Xe]=arguments[Xe];if(h)var ye=DO(x),Ze=UO(L,ye);if(a&&(L=CO(L,a,n,h)),o&&(L=qO(L,o,i,h)),R-=Ze,h&&R<f){var Ct=NO(L,ye);return LO(e,t,cg,x.placeholder,r,L,Ct,s,c,f-R)}var lr=g?r:this,dr=y?lr[e]:e;return R=L.length,s?L=BO(L,s):E&&R>1&&L.reverse(),m&&c<R&&(L.length=c),this&&this!==GO&&this instanceof x&&(dr=T||pg(dr)),dr.apply(lr,L)}return x}lg.exports=cg});var fg=u((aj,dg)=>{"use strict";var $O=Da(),VO=la(),KO=Ds(),YO=Us(),HO=Ls(),zO=An(),JO=re();function XO(e,t,r){var a=VO(e);function n(){for(var o=arguments.length,i=Array(o),s=o,c=HO(n);s--;)i[s]=arguments[s];var f=o<3&&i[0]!==c&&i[o-1]!==c?[]:zO(i,c);if(o-=f.length,o<r)return YO(e,t,KO,n.placeholder,void 0,i,f,void 0,void 0,r-o);var m=this&&this!==JO&&this instanceof n?a:e;return $O(m,this,i)}return n}dg.exports=XO});var mg=u((nj,gg)=>{"use strict";var ZO=Da(),eC=la(),tC=re(),rC=1;function aC(e,t,r,a){var n=t&rC,o=eC(e);function i(){for(var s=-1,c=arguments.length,f=-1,m=a.length,g=Array(m+c),y=this&&this!==tC&&this instanceof i?o:e;++f<m;)g[f]=a[f];for(;c--;)g[f++]=arguments[++s];return ZO(y,n?r:this,g)}return i}gg.exports=aC});var Sg=u((oj,Ig)=>{"use strict";var nC=_s(),oC=Ts(),yg=An(),Ag="__lodash_placeholder__",Bs=1,sC=2,iC=4,hg=8,da=128,bg=256,uC=Math.min;function pC(e,t){var r=e[1],a=t[1],n=r|a,o=n<(Bs|sC|da),i=a==da&&r==hg||a==da&&r==bg&&e[7].length<=t[8]||a==(da|bg)&&t[7].length<=t[8]&&r==hg;if(!(o||i))return e;a&Bs&&(e[2]=t[2],n|=r&Bs?0:iC);var s=t[3];if(s){var c=e[3];e[3]=c?nC(c,s,t[4]):s,e[4]=c?yg(e[3],Ag):t[4]}return s=t[5],s&&(c=e[5],e[5]=c?oC(c,s,t[6]):s,e[6]=c?yg(e[5],Ag):t[6]),s=t[7],s&&(e[7]=s),a&da&&(e[8]=e[8]==null?t[8]:uC(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=n,e}Ig.exports=pC});var vg=u((sj,wg)=>{"use strict";var cC=/\s/;function lC(e){for(var t=e.length;t--&&cC.test(e.charAt(t)););return t}wg.exports=lC});var Rg=u((ij,Eg)=>{"use strict";var dC=vg(),fC=/^\s+/;function gC(e){return e&&e.slice(0,dC(e)+1).replace(fC,"")}Eg.exports=gC});var ar=u((uj,xg)=>{"use strict";var mC=nt(),yC=pe(),AC="[object Symbol]";function hC(e){return typeof e=="symbol"||yC(e)&&mC(e)==AC}xg.exports=hC});var Og=u((pj,Pg)=>{"use strict";var bC=Rg(),_g=Ie(),IC=ar(),Tg=0/0,SC=/^[-+]0x[0-9a-f]+$/i,wC=/^0b[01]+$/i,vC=/^0o[0-7]+$/i,EC=parseInt;function RC(e){if(typeof e=="number")return e;if(IC(e))return Tg;if(_g(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=_g(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=bC(e);var r=wC.test(e);return r||vC.test(e)?EC(e.slice(2),r?2:8):SC.test(e)?Tg:+e}Pg.exports=RC});var Ug=u((cj,qg)=>{"use strict";var xC=Og(),Cg=1/0,_C=17976931348623157e292;function TC(e){if(!e)return e===0?e:0;if(e=xC(e),e===Cg||e===-Cg){var t=e<0?-1:1;return t*_C}return e===e?e:0}qg.exports=TC});var Ns=u((lj,Lg)=>{"use strict";var PC=Ug();function OC(e){var t=PC(e),r=t%1;return t===t?r?t-r:t:0}Lg.exports=OC});var hn=u((dj,Mg)=>{"use strict";var CC=xs(),qC=Ef(),UC=fg(),LC=Ds(),DC=mg(),BC=Ps(),NC=Sg(),GC=Cs(),MC=qs(),Dg=Ns(),kC="Expected a function",Bg=1,FC=2,Gs=8,Ms=16,ks=32,Ng=64,Gg=Math.max;function QC(e,t,r,a,n,o,i,s){var c=t&FC;if(!c&&typeof e!="function")throw new TypeError(kC);var f=a?a.length:0;if(f||(t&=~(ks|Ng),a=n=void 0),i=i===void 0?i:Gg(Dg(i),0),s=s===void 0?s:Dg(s),f-=n?n.length:0,t&Ng){var m=a,g=n;a=n=void 0}var y=c?void 0:BC(e),h=[e,t,r,a,n,m,g,o,i,s];if(y&&NC(h,y),e=h[0],t=h[1],r=h[2],a=h[3],n=h[4],s=h[9]=h[9]===void 0?c?0:e.length:Gg(h[9]-f,0),!s&&t&(Gs|Ms)&&(t&=~(Gs|Ms)),!t||t==Bg)var E=qC(e,t,r);else t==Gs||t==Ms?E=UC(e,t,s):(t==ks||t==(Bg|ks))&&!n.length?E=DC(e,t,r,a):E=LC.apply(void 0,h);var T=y?CC:GC;return MC(T(E,h),e,t)}Mg.exports=QC});var Fg=u((fj,kg)=>{"use strict";var jC=hn(),WC=128;function $C(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,jC(e,WC,void 0,void 0,void 0,void 0,t)}kg.exports=$C});var jg=u((gj,Qg)=>{"use strict";var VC=bo(),KC=VC(Object.keys,Object);Qg.exports=KC});var Fs=u((mj,Wg)=>{"use strict";var YC=Wa(),HC=jg(),zC=Object.prototype,JC=zC.hasOwnProperty;function XC(e){if(!YC(e))return HC(e);var t=[];for(var r in Object(e))JC.call(e,r)&&r!="constructor"&&t.push(r);return t}Wg.exports=XC});var nr=u((yj,$g)=>{"use strict";var ZC=Ro(),eq=Fs(),tq=Qt();function rq(e){return tq(e)?ZC(e):eq(e)}$g.exports=rq});var Qs=u((Aj,Vg)=>{"use strict";var aq=Yt(),nq=nr();function oq(e,t){return e&&aq(t,nq(t),e)}Vg.exports=oq});var Yg=u((hj,Kg)=>{"use strict";var sq=Yt(),iq=Ht();function uq(e,t){return e&&sq(t,iq(t),e)}Kg.exports=uq});var zg=u((bj,Hg)=>{"use strict";function pq(e,t){for(var r=-1,a=e==null?0:e.length,n=0,o=[];++r<a;){var i=e[r];t(i,r,e)&&(o[n++]=i)}return o}Hg.exports=pq});var Ws=u((Ij,Jg)=>{"use strict";function cq(){return[]}Jg.exports=cq});var bn=u((Sj,Zg)=>{"use strict";var lq=zg(),dq=Ws(),fq=Object.prototype,gq=fq.propertyIsEnumerable,Xg=Object.getOwnPropertySymbols,mq=Xg?function(e){return e==null?[]:(e=Object(e),lq(Xg(e),function(t){return gq.call(e,t)}))}:dq;Zg.exports=mq});var tm=u((wj,em)=>{"use strict";var yq=Yt(),Aq=bn();function hq(e,t){return yq(e,Aq(e),t)}em.exports=hq});var $s=u((vj,rm)=>{"use strict";var bq=La(),Iq=ja(),Sq=bn(),wq=Ws(),vq=Object.getOwnPropertySymbols,Eq=vq?function(e){for(var t=[];e;)bq(t,Sq(e)),e=Iq(e);return t}:wq;rm.exports=Eq});var nm=u((Ej,am)=>{"use strict";var Rq=Yt(),xq=$s();function _q(e,t){return Rq(e,xq(e),t)}am.exports=_q});var Vs=u((Rj,om)=>{"use strict";var Tq=La(),Pq=z();function Oq(e,t,r){var a=t(e);return Pq(e)?a:Tq(a,r(e))}om.exports=Oq});var Ks=u((xj,sm)=>{"use strict";var Cq=Vs(),qq=bn(),Uq=nr();function Lq(e){return Cq(e,Uq,qq)}sm.exports=Lq});var um=u((_j,im)=>{"use strict";var Dq=Vs(),Bq=$s(),Nq=Ht();function Gq(e){return Dq(e,Nq,Bq)}im.exports=Gq});var cm=u((Tj,pm)=>{"use strict";var Mq=ot(),kq=re(),Fq=Mq(kq,"DataView");pm.exports=Fq});var dm=u((Pj,lm)=>{"use strict";var Qq=ot(),jq=re(),Wq=Qq(jq,"Promise");lm.exports=Wq});var sr=u((Oj,bm)=>{"use strict";var Ys=cm(),Hs=Na(),zs=dm(),Js=po(),Xs=Es(),hm=nt(),or=ro(),fm="[object Map]",$q="[object Object]",gm="[object Promise]",mm="[object Set]",ym="[object WeakMap]",Am="[object DataView]",Vq=or(Ys),Kq=or(Hs),Yq=or(zs),Hq=or(Js),zq=or(Xs),Rt=hm;(Ys&&Rt(new Ys(new ArrayBuffer(1)))!=Am||Hs&&Rt(new Hs)!=fm||zs&&Rt(zs.resolve())!=gm||Js&&Rt(new Js)!=mm||Xs&&Rt(new Xs)!=ym)&&(Rt=function(e){var t=hm(e),r=t==$q?e.constructor:void 0,a=r?or(r):"";if(a)switch(a){case Vq:return Am;case Kq:return fm;case Yq:return gm;case Hq:return mm;case zq:return ym}return t});bm.exports=Rt});var Sm=u((Cj,Im)=>{"use strict";var Jq=Object.prototype,Xq=Jq.hasOwnProperty;function Zq(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&Xq.call(e,"index")&&(r.index=e.index,r.input=e.input),r}Im.exports=Zq});var vm=u((qj,wm)=>{"use strict";var eU=Qa();function tU(e,t){var r=t?eU(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}wm.exports=tU});var Rm=u((Uj,Em)=>{"use strict";var rU=/\w*$/;function aU(e){var t=new e.constructor(e.source,rU.exec(e));return t.lastIndex=e.lastIndex,t}Em.exports=aU});var Om=u((Lj,Pm)=>{"use strict";var xm=yt(),_m=xm?xm.prototype:void 0,Tm=_m?_m.valueOf:void 0;function nU(e){return Tm?Object(Tm.call(e)):{}}Pm.exports=nU});var qm=u((Dj,Cm)=>{"use strict";var oU=Qa(),sU=vm(),iU=Rm(),uU=Om(),pU=ho(),cU="[object Boolean]",lU="[object Date]",dU="[object Map]",fU="[object Number]",gU="[object RegExp]",mU="[object Set]",yU="[object String]",AU="[object Symbol]",hU="[object ArrayBuffer]",bU="[object DataView]",IU="[object Float32Array]",SU="[object Float64Array]",wU="[object Int8Array]",vU="[object Int16Array]",EU="[object Int32Array]",RU="[object Uint8Array]",xU="[object Uint8ClampedArray]",_U="[object Uint16Array]",TU="[object Uint32Array]";function PU(e,t,r){var a=e.constructor;switch(t){case hU:return oU(e);case cU:case lU:return new a(+e);case bU:return sU(e,r);case IU:case SU:case wU:case vU:case EU:case RU:case xU:case _U:case TU:return pU(e,r);case dU:return new a;case fU:case yU:return new a(e);case gU:return iU(e);case mU:return new a;case AU:return uU(e)}}Cm.exports=PU});var Lm=u((Bj,Um)=>{"use strict";var OU=sr(),CU=pe(),qU="[object Map]";function UU(e){return CU(e)&&OU(e)==qU}Um.exports=UU});var Gm=u((Nj,Nm)=>{"use strict";var LU=Lm(),DU=$a(),Dm=Va(),Bm=Dm&&Dm.isMap,BU=Bm?DU(Bm):LU;Nm.exports=BU});var km=u((Gj,Mm)=>{"use strict";var NU=sr(),GU=pe(),MU="[object Set]";function kU(e){return GU(e)&&NU(e)==MU}Mm.exports=kU});var Wm=u((Mj,jm)=>{"use strict";var FU=km(),QU=$a(),Fm=Va(),Qm=Fm&&Fm.isSet,jU=Qm?QU(Qm):FU;jm.exports=jU});var Zs=u((kj,Ym)=>{"use strict";var WU=$r(),$U=yn(),VU=Eo(),KU=Qs(),YU=Yg(),HU=yo(),zU=$t(),JU=tm(),XU=nm(),ZU=Ks(),eL=um(),tL=sr(),rL=Sm(),aL=qm(),nL=Io(),oL=z(),sL=zr(),iL=Gm(),uL=Ie(),pL=Wm(),cL=nr(),lL=Ht(),dL=1,fL=2,gL=4,$m="[object Arguments]",mL="[object Array]",yL="[object Boolean]",AL="[object Date]",hL="[object Error]",Vm="[object Function]",bL="[object GeneratorFunction]",IL="[object Map]",SL="[object Number]",Km="[object Object]",wL="[object RegExp]",vL="[object Set]",EL="[object String]",RL="[object Symbol]",xL="[object WeakMap]",_L="[object ArrayBuffer]",TL="[object DataView]",PL="[object Float32Array]",OL="[object Float64Array]",CL="[object Int8Array]",qL="[object Int16Array]",UL="[object Int32Array]",LL="[object Uint8Array]",DL="[object Uint8ClampedArray]",BL="[object Uint16Array]",NL="[object Uint32Array]",C={};C[$m]=C[mL]=C[_L]=C[TL]=C[yL]=C[AL]=C[PL]=C[OL]=C[CL]=C[qL]=C[UL]=C[IL]=C[SL]=C[Km]=C[wL]=C[vL]=C[EL]=C[RL]=C[LL]=C[DL]=C[BL]=C[NL]=!0;C[hL]=C[Vm]=C[xL]=!1;function In(e,t,r,a,n,o){var i,s=t&dL,c=t&fL,f=t&gL;if(r&&(i=n?r(e,a,n,o):r(e)),i!==void 0)return i;if(!uL(e))return e;var m=oL(e);if(m){if(i=rL(e),!s)return zU(e,i)}else{var g=tL(e),y=g==Vm||g==bL;if(sL(e))return HU(e,s);if(g==Km||g==$m||y&&!n){if(i=c||y?{}:nL(e),!s)return c?XU(e,YU(i,e)):JU(e,KU(i,e))}else{if(!C[g])return n?e:{};i=aL(e,g,s)}}o||(o=new WU);var h=o.get(e);if(h)return h;o.set(e,i),pL(e)?e.forEach(function(x){i.add(In(x,t,r,x,e,o))}):iL(e)&&e.forEach(function(x,R){i.set(R,In(x,t,r,R,e,o))});var E=f?c?eL:ZU:c?lL:cL,T=m?void 0:E(e);return $U(T||e,function(x,R){T&&(R=x,x=e[R]),VU(i,R,In(x,t,r,R,e,o))}),i}Ym.exports=In});var zm=u((Fj,Hm)=>{"use strict";var GL=Zs(),ML=4;function kL(e){return GL(e,ML)}Hm.exports=kL});var Xm=u((Qj,Jm)=>{"use strict";var FL=hn(),QL=8;function ei(e,t,r){t=r?void 0:t;var a=FL(e,QL,void 0,void 0,void 0,void 0,void 0,t);return a.placeholder=ei.placeholder,a}ei.placeholder={};Jm.exports=ei});var ey=u((jj,Zm)=>{"use strict";var jL=nt(),WL=pe(),$L=So(),VL="[object DOMException]",KL="[object Error]";function YL(e){if(!WL(e))return!1;var t=jL(e);return t==KL||t==VL||typeof e.message=="string"&&typeof e.name=="string"&&!$L(e)}Zm.exports=YL});var ry=u((Wj,ty)=>{"use strict";var HL=sr(),zL=pe(),JL="[object WeakMap]";function XL(e){return zL(e)&&HL(e)==JL}ty.exports=XL});var ny=u(($j,ay)=>{"use strict";function ZL(e,t){for(var r=-1,a=e==null?0:e.length;++r<a;)if(t(e[r],r,e))return!0;return!1}ay.exports=ZL});var ti=u((Vj,oy)=>{"use strict";var eD=so(),tD=ny(),rD=uo(),aD=1,nD=2;function oD(e,t,r,a,n,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&nD?new eD:void 0;for(o.set(e,t),o.set(t,e);++g<s;){var E=e[g],T=t[g];if(a)var x=i?a(T,E,g,t,e,o):a(E,T,g,e,t,o);if(x!==void 0){if(x)continue;y=!1;break}if(h){if(!tD(t,function(R,L){if(!rD(h,L)&&(E===R||n(E,R,r,a,o)))return h.push(L)})){y=!1;break}}else if(!(E===T||n(E,T,r,a,o))){y=!1;break}}return o.delete(e),o.delete(t),y}oy.exports=oD});var iy=u((Kj,sy)=>{"use strict";function sD(e){var t=-1,r=Array(e.size);return e.forEach(function(a,n){r[++t]=[n,a]}),r}sy.exports=sD});var dy=u((Yj,ly)=>{"use strict";var uy=yt(),py=Ao(),iD=Mt(),uD=ti(),pD=iy(),cD=ka(),lD=1,dD=2,fD="[object Boolean]",gD="[object Date]",mD="[object Error]",yD="[object Map]",AD="[object Number]",hD="[object RegExp]",bD="[object Set]",ID="[object String]",SD="[object Symbol]",wD="[object ArrayBuffer]",vD="[object DataView]",cy=uy?uy.prototype:void 0,ri=cy?cy.valueOf:void 0;function ED(e,t,r,a,n,o,i){switch(r){case vD:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case wD:return!(e.byteLength!=t.byteLength||!o(new py(e),new py(t)));case fD:case gD:case AD:return iD(+e,+t);case mD:return e.name==t.name&&e.message==t.message;case hD:case ID:return e==t+"";case yD:var s=pD;case bD:var c=a&lD;if(s||(s=cD),e.size!=t.size&&!c)return!1;var f=i.get(e);if(f)return f==t;a|=dD,i.set(e,t);var m=uD(s(e),s(t),a,n,o,i);return i.delete(e),m;case SD:if(ri)return ri.call(e)==ri.call(t)}return!1}ly.exports=ED});var my=u((Hj,gy)=>{"use strict";var fy=Ks(),RD=1,xD=Object.prototype,_D=xD.hasOwnProperty;function TD(e,t,r,a,n,o){var i=r&RD,s=fy(e),c=s.length,f=fy(t),m=f.length;if(c!=m&&!i)return!1;for(var g=c;g--;){var y=s[g];if(!(i?y in t:_D.call(t,y)))return!1}var h=o.get(e),E=o.get(t);if(h&&E)return h==t&&E==e;var T=!0;o.set(e,t),o.set(t,e);for(var x=i;++g<c;){y=s[g];var R=e[y],L=t[y];if(a)var Xe=i?a(L,R,y,t,e,o):a(R,L,y,e,t,o);if(!(Xe===void 0?R===L||n(R,L,r,a,o):Xe)){T=!1;break}x||(x=y=="constructor")}if(T&&!x){var ye=e.constructor,Ze=t.constructor;ye!=Ze&&"constructor"in e&&"constructor"in t&&!(typeof ye=="function"&&ye instanceof ye&&typeof Ze=="function"&&Ze instanceof Ze)&&(T=!1)}return o.delete(e),o.delete(t),T}gy.exports=TD});var vy=u((zj,wy)=>{"use strict";var ai=$r(),PD=ti(),OD=dy(),CD=my(),yy=sr(),Ay=z(),hy=zr(),qD=Ka(),UD=1,by="[object Arguments]",Iy="[object Array]",Sn="[object Object]",LD=Object.prototype,Sy=LD.hasOwnProperty;function DD(e,t,r,a,n,o){var i=Ay(e),s=Ay(t),c=i?Iy:yy(e),f=s?Iy:yy(t);c=c==by?Sn:c,f=f==by?Sn:f;var m=c==Sn,g=f==Sn,y=c==f;if(y&&hy(e)){if(!hy(t))return!1;i=!0,m=!1}if(y&&!m)return o||(o=new ai),i||qD(e)?PD(e,t,r,a,n,o):OD(e,t,c,r,a,n,o);if(!(r&UD)){var h=m&&Sy.call(e,"__wrapped__"),E=g&&Sy.call(t,"__wrapped__");if(h||E){var T=h?e.value():e,x=E?t.value():t;return o||(o=new ai),n(T,x,r,a,o)}}return y?(o||(o=new ai),CD(e,t,r,a,n,o)):!1}wy.exports=DD});var ni=u((Jj,xy)=>{"use strict";var BD=vy(),Ey=pe();function Ry(e,t,r,a,n){return e===t?!0:e==null||t==null||!Ey(e)&&!Ey(t)?e!==e&&t!==t:BD(e,t,r,a,Ry,n)}xy.exports=Ry});var Ty=u((Xj,_y)=>{"use strict";var ND=$r(),GD=ni(),MD=1,kD=2;function FD(e,t,r,a){var n=r.length,o=n,i=!a;if(e==null)return!o;for(e=Object(e);n--;){var s=r[n];if(i&&s[2]?s[1]!==e[s[0]]:!(s[0]in e))return!1}for(;++n<o;){s=r[n];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 ND;if(a)var y=a(f,m,c,e,t,g);if(!(y===void 0?GD(m,f,MD|kD,a,g):y))return!1}}return!0}_y.exports=FD});var oi=u((Zj,Py)=>{"use strict";var QD=Ie();function jD(e){return e===e&&!QD(e)}Py.exports=jD});var Cy=u((eW,Oy)=>{"use strict";var WD=oi(),$D=nr();function VD(e){for(var t=$D(e),r=t.length;r--;){var a=t[r],n=e[a];t[r]=[a,n,WD(n)]}return t}Oy.exports=VD});var si=u((tW,qy)=>{"use strict";function KD(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}qy.exports=KD});var Ly=u((rW,Uy)=>{"use strict";var YD=Ty(),HD=Cy(),zD=si();function JD(e){var t=HD(e);return t.length==1&&t[0][2]?zD(t[0][0],t[0][1]):function(r){return r===e||YD(r,e,t)}}Uy.exports=JD});var wn=u((aW,Dy)=>{"use strict";var XD=z(),ZD=ar(),eB=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,tB=/^\w*$/;function rB(e,t){if(XD(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||ZD(e)?!0:tB.test(e)||!eB.test(e)||t!=null&&e in Object(t)}Dy.exports=rB});var Gy=u((nW,Ny)=>{"use strict";var By=Ga(),aB="Expected a function";function ii(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(aB);var r=function(){var a=arguments,n=t?t.apply(this,a):a[0],o=r.cache;if(o.has(n))return o.get(n);var i=e.apply(this,a);return r.cache=o.set(n,i)||o,i};return r.cache=new(ii.Cache||By),r}ii.Cache=By;Ny.exports=ii});var ky=u((oW,My)=>{"use strict";var nB=Gy(),oB=500;function sB(e){var t=nB(e,function(a){return r.size===oB&&r.clear(),a}),r=t.cache;return t}My.exports=sB});var ui=u((sW,Fy)=>{"use strict";var iB=ky(),uB=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,pB=/\\(\\)?/g,cB=iB(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(uB,function(r,a,n,o){t.push(n?o.replace(pB,"$1"):a||r)}),t});Fy.exports=cB});var pi=u((iW,Qy)=>{"use strict";function lB(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}Qy.exports=lB});var Yy=u((uW,Ky)=>{"use strict";var jy=yt(),dB=pi(),fB=z(),gB=ar(),mB=1/0,Wy=jy?jy.prototype:void 0,$y=Wy?Wy.toString:void 0;function Vy(e){if(typeof e=="string")return e;if(fB(e))return dB(e,Vy)+"";if(gB(e))return $y?$y.call(e):"";var t=e+"";return t=="0"&&1/e==-mB?"-0":t}Ky.exports=Vy});var ci=u((pW,Hy)=>{"use strict";var yB=Yy();function AB(e){return e==null?"":yB(e)}Hy.exports=AB});var li=u((cW,zy)=>{"use strict";var hB=z(),bB=wn(),IB=ui(),SB=ci();function wB(e,t){return hB(e)?e:bB(e,t)?[e]:IB(SB(e))}zy.exports=wB});var ir=u((lW,Jy)=>{"use strict";var vB=ar(),EB=1/0;function RB(e){if(typeof e=="string"||vB(e))return e;var t=e+"";return t=="0"&&1/e==-EB?"-0":t}Jy.exports=RB});var di=u((dW,Xy)=>{"use strict";var xB=li(),_B=ir();function TB(e,t){t=xB(t,e);for(var r=0,a=t.length;e!=null&&r<a;)e=e[_B(t[r++])];return r&&r==a?e:void 0}Xy.exports=TB});var eA=u((fW,Zy)=>{"use strict";var PB=di();function OB(e,t,r){var a=e==null?void 0:PB(e,t);return a===void 0?r:a}Zy.exports=OB});var rA=u((gW,tA)=>{"use strict";function CB(e,t){return e!=null&&t in Object(e)}tA.exports=CB});var nA=u((mW,aA)=>{"use strict";var qB=li(),UB=Gr(),LB=z(),DB=Zr(),BB=Fa(),NB=ir();function GB(e,t,r){t=qB(t,e);for(var a=-1,n=t.length,o=!1;++a<n;){var i=NB(t[a]);if(!(o=e!=null&&r(e,i)))break;e=e[i]}return o||++a!=n?o:(n=e==null?0:e.length,!!n&&BB(n)&&DB(i,n)&&(LB(e)||UB(e)))}aA.exports=GB});var sA=u((yW,oA)=>{"use strict";var MB=rA(),kB=nA();function FB(e,t){return e!=null&&kB(e,t,MB)}oA.exports=FB});var uA=u((AW,iA)=>{"use strict";var QB=ni(),jB=eA(),WB=sA(),$B=wn(),VB=oi(),KB=si(),YB=ir(),HB=1,zB=2;function JB(e,t){return $B(e)&&VB(t)?KB(YB(e),t):function(r){var a=jB(r,e);return a===void 0&&a===t?WB(r,e):QB(t,a,HB|zB)}}iA.exports=JB});var cA=u((hW,pA)=>{"use strict";function XB(e){return function(t){return t?.[e]}}pA.exports=XB});var dA=u((bW,lA)=>{"use strict";var ZB=di();function eN(e){return function(t){return ZB(t,e)}}lA.exports=eN});var gA=u((IW,fA)=>{"use strict";var tN=cA(),rN=dA(),aN=wn(),nN=ir();function oN(e){return aN(e)?tN(nN(e)):rN(e)}fA.exports=oN});var fi=u((SW,mA)=>{"use strict";var sN=Ly(),iN=uA(),uN=Mr(),pN=z(),cN=gA();function lN(e){return typeof e=="function"?e:e==null?uN:typeof e=="object"?pN(e)?iN(e[0],e[1]):sN(e):cN(e)}mA.exports=lN});var AA=u((wW,yA)=>{"use strict";var dN=Zs(),fN=fi(),gN=1;function mN(e){return fN(typeof e=="function"?e:dN(e,gN))}yA.exports=mN});var bA=u((vW,hA)=>{"use strict";var yN=Zn();function AN(e){var t=e==null?0:e.length;return t?yN(e,1):[]}hA.exports=AN});var SA=u((EW,IA)=>{"use strict";var hN=bA(),bN=eo(),IN=Ba();function SN(e){return IN(bN(e,void 0,hN),e+"")}IA.exports=SN});var vA=u((RW,wA)=>{"use strict";var wN=hn(),vN=SA(),EN=256,RN=vN(function(e,t){return wN(e,EN,void 0,void 0,void 0,t)});wA.exports=RN});var RA=u((xW,EA)=>{"use strict";var xN=pi(),_N=$t(),TN=z(),PN=ar(),ON=ui(),CN=ir(),qN=ci();function UN(e){return TN(e)?xN(e,CN):PN(e)?[e]:_N(ON(qN(e)))}EA.exports=UN});var _A=u((_W,xA)=>{"use strict";xA.exports={ary:Fg(),assign:Qs(),clone:zm(),curry:Xm(),forEach:yn(),isArray:z(),isError:ey(),isFunction:kr(),isWeakMap:ry(),iteratee:AA(),keys:Fs(),rearg:vA(),toInteger:Ns(),toPath:RA()}});var PA=u((TW,TA)=>{"use strict";var LN=yf(),DN=_A();function BN(e,t,r){return LN(DN,e,t,r)}TA.exports=BN});var gi=u((PW,CA)=>{"use strict";var NN=PA(),OA=NN("merge",xo());OA.placeholder=Is();CA.exports=OA});var Vh=u(($$,$h)=>{"use strict";function pG(e,t,r,a){for(var n=-1,o=e==null?0:e.length;++n<o;){var i=e[n];t(a,i,r(i),e)}return a}$h.exports=pG});var Yh=u((V$,Kh)=>{"use strict";var cG=mo(),lG=nr();function dG(e,t){return e&&cG(e,t,lG)}Kh.exports=dG});var zh=u((K$,Hh)=>{"use strict";var fG=Qt();function gG(e,t){return function(r,a){if(r==null)return r;if(!fG(r))return e(r,a);for(var n=r.length,o=t?n:-1,i=Object(r);(t?o--:++o<n)&&a(i[o],o,i)!==!1;);return r}}Hh.exports=gG});var Xh=u((Y$,Jh)=>{"use strict";var mG=Yh(),yG=zh(),AG=yG(mG);Jh.exports=AG});var eb=u((H$,Zh)=>{"use strict";var hG=Xh();function bG(e,t,r,a){return hG(e,function(n,o,i){t(a,n,r(n),i)}),a}Zh.exports=bG});var rb=u((z$,tb)=>{"use strict";var IG=Vh(),SG=eb(),wG=fi(),vG=z();function EG(e,t){return function(r,a){var n=vG(r)?IG:SG,o=t?t():{};return n(r,e,wG(a,2),o)}}tb.exports=EG});var nb=u((J$,ab)=>{"use strict";var RG=Vr(),xG=rb(),_G=Object.prototype,TG=_G.hasOwnProperty,PG=xG(function(e,t,r){TG.call(e,r)?e[r].push(t):RG(e,r,[t])});ab.exports=PG});var FG={};S(FG,{Method:()=>qn,ai:()=>Ri,api:()=>Bi,auditLogs:()=>ut,automations:()=>nn,backups:()=>Se,branding:()=>Xa,constants:()=>qr,environmentVariables:()=>Qe,features:()=>le,groups:()=>M,init:()=>cf,licensing:()=>Ne,logger:()=>xt,mappers:()=>Q,middleware:()=>Ii,plugins:()=>on,publicApi:()=>pn,quotas:()=>ke,scimGroups:()=>ur,scimUsers:()=>se,sdk:()=>yi,users:()=>Ye,utils:()=>Nt});module.exports=Gb(FG);var qn=(o=>(o.POST="POST",o.GET="GET",o.PATCH="PATCH",o.DELETE="DELETE",o.PUT="PUT",o))(qn||{});var yi={};S(yi,{ai:()=>Za,auditLogs:()=>ut,automations:()=>nn,backups:()=>Se,branding:()=>Xa,environmentVariables:()=>Qe,features:()=>le,groups:()=>M,init:()=>cf,licensing:()=>Ne,logger:()=>xt,plugins:()=>on,publicApi:()=>pn,quotas:()=>ke,scimGroups:()=>ur,scimUsers:()=>se,users:()=>Ye,utils:()=>Nt});var Xa={};S(Xa,{getBrandingConfig:()=>q_});var le={};S(le,{checkBackups:()=>ce,checkFeature:()=>za,checkFeatures:()=>Do,checkSCIM:()=>Mo,isAICustomConfigsEnabled:()=>O_,isAppBuildersEnabled:()=>bt,isAuditLogsEnabled:()=>Ja,isBackupsEnabled:()=>Bo,isBrandingEnabled:()=>No,isBudibaseAIEnabled:()=>aa,isEnforceableSSO:()=>Ed,isExpandedPublicApiEnabled:()=>Ke,isSSOEnforced:()=>__,isSyncAutomationsEnabled:()=>R_,isTriggerAutomationRunEnabled:()=>x_,isUserGroupsEnabled:()=>Go,isViewPermissionEnabled:()=>T_,isViewReadonlyColumnsEnabled:()=>P_});var J=require("@budibase/types"),Ve=require("@budibase/backend-core");var Ne={};S(Ne,{cache:()=>xe,client:()=>at,features:()=>qa,getFreeLicense:()=>Uo,getLicense:()=>qo,getLicenseFromKey:()=>I_,keys:()=>Lo,offline:()=>Ya,quotas:()=>Ua});var xe={};S(xe,{getCachedLicense:()=>wd,invalidate:()=>vd,refresh:()=>At});var Un=require("@budibase/backend-core"),gr,Mb=async()=>{gr=await new Un.redis.Client(Un.redis.utils.Databases.LICENSES).init()},kb=async()=>{gr&&await gr.finish()};process.on("exit",async()=>{await kb()});var Ln=async()=>(gr||await Mb(),gr);var at={};S(at,{activateLicenseKey:()=>Yn,getLicense:()=>Dt,getLicenseFromKey:()=>Kn,triggerQuota:()=>_I});var Ki=O(require("node-fetch"));var Yi=require("@budibase/backend-core"),Dn=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";Yi.logging.correlation.setHeader(a.headers);let o={method:t,body:n?JSON.stringify(a.body):a.body,headers:a.headers,credentials:"include"};return(0,Ki.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}},Bn=Dn;var Pa=require("@budibase/types"),P=require("@budibase/backend-core");var Le={};S(Le,{bustCache:()=>Ji,getCurrentUsageValues:()=>tu,getQuotaUsage:()=>dt,setAllUsage:()=>Fn,setAppUsageValue:()=>kn,setUsage:()=>Xi,setUsagePerApp:()=>Zi,utils:()=>yr});var ee=require("@budibase/types"),H=require("@budibase/backend-core");var yr={};S(yr,{generateBaseQuotaUsage:()=>Sa,generateNewMonthlyQuotas:()=>mr,generateNewQuotaUsage:()=>Gn,getBreakdownName:()=>va,getCurrentMonthString:()=>et,setCurrentMonth:()=>wa,setQuotaReset:()=>Nn});var V=require("@budibase/types"),Ia=require("@budibase/backend-core"),Hi=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},Nn=e=>{e.quotaReset=Hi()},et=()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},Sa=()=>({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:{[et()]:mr()}}),Gn=()=>{let e={_id:Ia.db.StaticDatabases.GLOBAL.docs.usageQuota,quotaReset:Hi(),...Sa(),apps:{}};return wa(e),e},mr=()=>({[V.MonthlyQuotaName.QUERIES]:0,[V.MonthlyQuotaName.AUTOMATIONS]:0,[V.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,triggers:{}}),wa=e=>{let t=et();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=mr()),e.monthly.current=e.monthly[t]},va=(e,t)=>{if(!(!t||!e))switch(e){case V.MonthlyQuotaName.AUTOMATIONS:return V.BreakdownQuotaName.AUTOMATIONS;case V.MonthlyQuotaName.QUERIES:return Ia.db.isTableId(t)?V.BreakdownQuotaName.ROW_QUERIES:Ia.db.isDatasourceId(t)?V.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}};var Qb=H.Duration.fromSeconds(60).toMs(),{Writethrough:jb}=H.cache.writethrough;function Wb(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 Mn=()=>new jb(H.tenancy.getGlobalDB(),Qb),Ji=async()=>{let e=H.tenancy.getGlobalDB();try{let t=await e.get(H.db.StaticDatabases.GLOBAL.docs.usageQuota);t?._rev&&await e.remove(H.db.StaticDatabases.GLOBAL.docs.usageQuota,t._rev)}catch(t){if(t.status!==404)throw t}},dt=async()=>{let e=Mn(),t;try{t=await e.get(H.db.StaticDatabases.GLOBAL.docs.usageQuota),wa(t),Nn(t)}catch(r){if(r.status===404){t=Gn();let a=await e.put(t);t._rev=a.rev}else throw r}return Wb(t)},Xi=async(e,t,r)=>Fn({name:t,type:r,values:{total:e}}),Zi=async(e,t,r)=>{let a=Mn(),n=await dt(),o=Object.values(e).reduce((s,c)=>s+c,0);for(let[s,c]of Object.entries(e))n=eu(n,t,r,{total:o,app:c},{appId:s});let i=await a.put(n);return n._rev=i.rev,n},$b=(e,t,r,a)=>{let n=va(t,r);if(!n||!a?.breakdown)return e;e.breakdown||(e.breakdown={}),e.breakdown[n]||(e.breakdown[n]={parent:t,values:{}});let o=e.breakdown[n];return o.values[r]=a.breakdown,e},kn=(e,t,r,a={},n)=>{let o;try{o=H.db.getProdAppID(a?.appId||H.context.getAppId())}catch{}if(!o||!n.app||!ee.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[o]||(e.apps={...e.apps,[o]:Sa()});let i=e.apps[o];switch(r){case ee.QuotaUsageType.STATIC:i.usageQuota[t]=n.app;break;case ee.QuotaUsageType.MONTHLY:{let s=et(),c=t,f=i.monthly[s];f||(i.monthly[s]=mr(),f=i.monthly[s]),f[c]=n.app,ee.BREAKDOWN_QUOTA_NAMES.includes(c)&&a?.id&&(f=$b(f,c,a.id,n));break}}return e},zi=(e,t,r,a)=>{if(!ee.APP_QUOTA_NAMES.includes(r))return{};let n;try{n=H.db.getProdAppID(H.context.getAppId())}catch{}if(!n||!e.apps||!e.apps[n])return{app:0};let o=e.apps[n];switch(t){case ee.QuotaUsageType.STATIC:if(o.usageQuota?.[r])return{app:o.usageQuota[r]};break;case ee.QuotaUsageType.MONTHLY:{let i=et(),s=r;if(!o.monthly?.[i]?.[s])break;let c=o.monthly[i],f=c[s],m,g=va(s,a);return g&&a&&c.breakdown?.[g]&&(m=c.breakdown[g]?.values[a]),{app:f,breakdown:m||0}}}return{app:0}},Vb=(e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},Kb=(e,t,r,a)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),a&&(r.monthly[t].triggers[e]=a)},eu=(e,t,r,a,n={})=>{if(r===ee.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=a.total,Vb(t,e,a.triggers);else if(r===ee.QuotaUsageType.MONTHLY){t=t;let o=et();e.monthly[o][t]=a.total,Kb(t,o,e,a.triggers)}else throw new Error(`Invalid usage type: ${r}`);return kn(e,t,r,n,a)},Fn=async e=>{let t=Array.isArray(e)?e:[e],r=Mn(),a=await dt();for(let o of t)a=eu(a,o.name,o.type,o.values,o.opts);let n=await r.put(a,0);return a._rev=n.rev,a},tu=async(e,t,r)=>{let a=await dt(),n=0,o={};switch(e){case ee.QuotaUsageType.STATIC:if(a.usageQuota[t]){let i=t;n=a.usageQuota[i],o=zi(a,e,t,r)}break;case ee.QuotaUsageType.MONTHLY:{let i=et(),s=t;a.monthly[i][s]&&(n=a.monthly[i][s],o=zi(a,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return ee.APP_QUOTA_NAMES.includes(t)&&!(o.app||o.breakdown)&&(o.app=o.app||0,o.breakdown=o.breakdown||0),{total:n,app:o.app,breakdown:o.breakdown}};var he={};S(he,{destroy:()=>zb,get:()=>Qn,save:()=>Hb});var tt=require("@budibase/backend-core"),Yb=()=>({_id:tt.StaticDatabases.GLOBAL.docs.licenseInfo}),Hb=async e=>{let t=await Qn();t={...t,...e};let a=await tt.tenancy.getGlobalDB().put(t);return t._rev=a.rev,t},Qn=async()=>{let e=tt.tenancy.getGlobalDB();try{return await e.get(tt.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return Yb();throw t}},zb=async()=>{let e=tt.tenancy.getGlobalDB(),t=await Qn();t&&t._rev&&await e.remove(tt.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)};var D={};S(D,{bulkSave:()=>uI,destroy:()=>pI,fetch:()=>nI,generateUserGroupID:()=>rI,get:()=>oI,getBulk:()=>sI,getByName:()=>jn,getGroupUsers:()=>Ra,getGroupUsersParams:()=>su,getUserGroupsParams:()=>ou,save:()=>iI});var q=require("@budibase/backend-core");var Re=require("@budibase/types"),qt=require("@budibase/backend-core");async function ru(){let e=qt.sql.designDoc.base("type");e.sql.tables={[Re.AUDIT_LOG_TYPE]:{fields:{appId:Re.SQLiteType.TEXT,event:Re.SQLiteType.TEXT,userId:Re.SQLiteType.TEXT,timestamp:Re.SQLiteType.TEXT,metadata:Re.SQLiteType.TEXT,name:Re.SQLiteType.TEXT,type:Re.SQLiteType.TEXT,fallback:Re.SQLiteType.TEXT}}};let t=qt.context.getAuditLogsDB(),r;try{r=await t.get(qt.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(a){if(a.status===404)r=e;else throw a}await t.put(r)}var Ea=require("@budibase/backend-core"),{ViewName:Jb,SEPARATOR:Xb,DocumentType:Zb,createView:eI}=Ea.db,tI=Zb.USER+Xb;async function au(){let e=Ea.tenancy.getGlobalDB(),t=`function(doc) {
|
|
4
|
-
if (doc._id.startsWith("${
|
|
3
|
+
`)}ag.exports=nO});var ya=u((nj,sg)=>{"use strict";function aO(e,t){for(var r=-1,n=e==null?0:e.length;++r<n&&t(e[r],r,e)!==!1;);return e}sg.exports=aO});var ug=u((aj,ig)=>{"use strict";var oO=ya(),sO=fo(),iO=1,uO=2,pO=8,cO=16,lO=32,dO=64,fO=128,gO=256,mO=512,yO=[["ary",fO],["bind",iO],["bindKey",uO],["curry",pO],["curryRight",cO],["flip",mO],["partial",lO],["partialRight",dO],["rearg",gO]];function AO(e,t){return oO(yO,function(r){var n="_."+r[0];t&r[1]&&!sO(e,n)&&e.push(n)}),e.sort()}ig.exports=AO});var ks=u((oj,pg)=>{"use strict";var hO=ng(),IO=og(),bO=Gn(),SO=ug();function wO(e,t,r){var n=t+"";return bO(e,IO(n,SO(hO(n),r)))}pg.exports=wO});var Fs=u((sj,dg)=>{"use strict";var vO=eg(),EO=Ms(),RO=ks(),_O=1,xO=2,TO=4,PO=8,cg=32,lg=64;function OO(e,t,r,n,a,o,i,s,c,f){var m=t&PO,g=m?i:void 0,y=m?void 0:i,h=m?o:void 0,E=m?void 0:o;t|=m?cg:lg,t&=~(m?lg:cg),t&TO||(t&=~(_O|xO));var T=[e,t,a,h,g,E,y,s,c,f],_=r.apply(void 0,T);return vO(e)&&EO(_,T),_.placeholder=n,RO(_,e,t)}dg.exports=OO});var Qs=u((ij,fg)=>{"use strict";function CO(e){var t=e;return t.placeholder}fg.exports=CO});var mg=u((uj,gg)=>{"use strict";var qO=Ht(),LO=rn(),UO=Math.min;function DO(e,t){for(var r=e.length,n=UO(t.length,r),a=qO(e);n--;){var o=t[n];e[n]=LO(o,r)?a[o]:void 0}return e}gg.exports=DO});var Aa=u((pj,Ag)=>{"use strict";var yg="__lodash_placeholder__";function BO(e,t){for(var r=-1,n=e.length,a=0,o=[];++r<n;){var i=e[r];(i===t||i===yg)&&(e[r]=yg,o[a++]=r)}return o}Ag.exports=BO});var Ws=u((cj,bg)=>{"use strict";var NO=Ds(),GO=Bs(),MO=Nf(),hg=mn(),kO=Fs(),FO=Qs(),QO=mg(),jO=Aa(),WO=re(),$O=1,VO=2,KO=8,YO=16,HO=128,JO=512;function Ig(e,t,r,n,a,o,i,s,c,f){var m=t&HO,g=t&$O,y=t&VO,h=t&(KO|YO),E=t&JO,T=y?void 0:hg(e);function _(){for(var R=arguments.length,U=Array(R),et=R;et--;)U[et]=arguments[et];if(h)var ye=FO(_),tt=MO(U,ye);if(n&&(U=NO(U,n,a,h)),o&&(U=GO(U,o,i,h)),R-=tt,h&&R<f){var Dt=jO(U,ye);return kO(e,t,Ig,_.placeholder,r,U,Dt,s,c,f-R)}var gr=g?r:this,mr=y?gr[e]:e;return R=U.length,s?U=QO(U,s):E&&R>1&&U.reverse(),m&&c<R&&(U.length=c),this&&this!==WO&&this instanceof _&&(mr=T||hg(mr)),mr.apply(gr,U)}return _}bg.exports=Ig});var wg=u((lj,Sg)=>{"use strict";var zO=Nn(),XO=mn(),ZO=Ws(),eC=Fs(),tC=Qs(),rC=Aa(),nC=re();function aC(e,t,r){var n=XO(e);function a(){for(var o=arguments.length,i=Array(o),s=o,c=tC(a);s--;)i[s]=arguments[s];var f=o<3&&i[0]!==c&&i[o-1]!==c?[]:rC(i,c);if(o-=f.length,o<r)return eC(e,t,ZO,a.placeholder,void 0,i,f,void 0,void 0,r-o);var m=this&&this!==nC&&this instanceof a?n:e;return zO(m,this,i)}return a}Sg.exports=aC});var Eg=u((dj,vg)=>{"use strict";var oC=Nn(),sC=mn(),iC=re(),uC=1;function pC(e,t,r,n){var a=t&uC,o=sC(e);function i(){for(var s=-1,c=arguments.length,f=-1,m=n.length,g=Array(m+c),y=this&&this!==iC&&this instanceof i?o:e;++f<m;)g[f]=n[f];for(;c--;)g[f++]=arguments[++s];return oC(y,a?r:this,g)}return i}vg.exports=pC});var Og=u((fj,Pg)=>{"use strict";var cC=Ds(),lC=Bs(),Rg=Aa(),_g="__lodash_placeholder__",$s=1,dC=2,fC=4,xg=8,yn=128,Tg=256,gC=Math.min;function mC(e,t){var r=e[1],n=t[1],a=r|n,o=a<($s|dC|yn),i=n==yn&&r==xg||n==yn&&r==Tg&&e[7].length<=t[8]||n==(yn|Tg)&&t[7].length<=t[8]&&r==xg;if(!(o||i))return e;n&$s&&(e[2]=t[2],a|=r&$s?0:fC);var s=t[3];if(s){var c=e[3];e[3]=c?cC(c,s,t[4]):s,e[4]=c?Rg(e[3],_g):t[4]}return s=t[5],s&&(c=e[5],e[5]=c?lC(c,s,t[6]):s,e[6]=c?Rg(e[5],_g):t[6]),s=t[7],s&&(e[7]=s),n&yn&&(e[8]=e[8]==null?t[8]:gC(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=a,e}Pg.exports=mC});var qg=u((gj,Cg)=>{"use strict";var yC=/\s/;function AC(e){for(var t=e.length;t--&&yC.test(e.charAt(t)););return t}Cg.exports=AC});var Ug=u((mj,Lg)=>{"use strict";var hC=qg(),IC=/^\s+/;function bC(e){return e&&e.slice(0,hC(e)+1).replace(IC,"")}Lg.exports=bC});var ir=u((yj,Dg)=>{"use strict";var SC=st(),wC=ce(),vC="[object Symbol]";function EC(e){return typeof e=="symbol"||wC(e)&&SC(e)==vC}Dg.exports=EC});var Mg=u((Aj,Gg)=>{"use strict";var RC=Ug(),Bg=be(),_C=ir(),Ng=0/0,xC=/^[-+]0x[0-9a-f]+$/i,TC=/^0b[01]+$/i,PC=/^0o[0-7]+$/i,OC=parseInt;function CC(e){if(typeof e=="number")return e;if(_C(e))return Ng;if(Bg(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=Bg(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=RC(e);var r=TC.test(e);return r||PC.test(e)?OC(e.slice(2),r?2:8):xC.test(e)?Ng:+e}Gg.exports=CC});var Qg=u((hj,Fg)=>{"use strict";var qC=Mg(),kg=1/0,LC=17976931348623157e292;function UC(e){if(!e)return e===0?e:0;if(e=qC(e),e===kg||e===-kg){var t=e<0?-1:1;return t*LC}return e===e?e:0}Fg.exports=UC});var Vs=u((Ij,jg)=>{"use strict";var DC=Qg();function BC(e){var t=DC(e),r=t%1;return t===t?r?t-r:t:0}jg.exports=BC});var ha=u((bj,Yg)=>{"use strict";var NC=Us(),GC=Lf(),MC=wg(),kC=Ws(),FC=Eg(),QC=Ns(),jC=Og(),WC=Ms(),$C=ks(),Wg=Vs(),VC="Expected a function",$g=1,KC=2,Ks=8,Ys=16,Hs=32,Vg=64,Kg=Math.max;function YC(e,t,r,n,a,o,i,s){var c=t&KC;if(!c&&typeof e!="function")throw new TypeError(VC);var f=n?n.length:0;if(f||(t&=~(Hs|Vg),n=a=void 0),i=i===void 0?i:Kg(Wg(i),0),s=s===void 0?s:Wg(s),f-=a?a.length:0,t&Vg){var m=n,g=a;n=a=void 0}var y=c?void 0:QC(e),h=[e,t,r,n,a,m,g,o,i,s];if(y&&jC(h,y),e=h[0],t=h[1],r=h[2],n=h[3],a=h[4],s=h[9]=h[9]===void 0?c?0:e.length:Kg(h[9]-f,0),!s&&t&(Ks|Ys)&&(t&=~(Ks|Ys)),!t||t==$g)var E=GC(e,t,r);else t==Ks||t==Ys?E=MC(e,t,s):(t==Hs||t==($g|Hs))&&!a.length?E=FC(e,t,r,n):E=kC.apply(void 0,h);var T=y?NC:WC;return $C(T(E,h),e,t)}Yg.exports=YC});var Jg=u((Sj,Hg)=>{"use strict";var HC=ha(),JC=128;function zC(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,HC(e,JC,void 0,void 0,void 0,void 0,t)}Hg.exports=zC});var Xg=u((wj,zg)=>{"use strict";var XC=Eo(),ZC=XC(Object.keys,Object);zg.exports=ZC});var Js=u((vj,Zg)=>{"use strict";var eq=Vn(),tq=Xg(),rq=Object.prototype,nq=rq.hasOwnProperty;function aq(e){if(!eq(e))return tq(e);var t=[];for(var r in Object(e))nq.call(e,r)&&r!="constructor"&&t.push(r);return t}Zg.exports=aq});var ur=u((Ej,em)=>{"use strict";var oq=Oo(),sq=Js(),iq=Vt();function uq(e){return iq(e)?oq(e):sq(e)}em.exports=uq});var zs=u((Rj,tm)=>{"use strict";var pq=Xt(),cq=ur();function lq(e,t){return e&&pq(t,cq(t),e)}tm.exports=lq});var nm=u((_j,rm)=>{"use strict";var dq=Xt(),fq=Zt();function gq(e,t){return e&&dq(t,fq(t),e)}rm.exports=gq});var om=u((xj,am)=>{"use strict";function mq(e,t){for(var r=-1,n=e==null?0:e.length,a=0,o=[];++r<n;){var i=e[r];t(i,r,e)&&(o[a++]=i)}return o}am.exports=mq});var Xs=u((Tj,sm)=>{"use strict";function yq(){return[]}sm.exports=yq});var Ia=u((Pj,um)=>{"use strict";var Aq=om(),hq=Xs(),Iq=Object.prototype,bq=Iq.propertyIsEnumerable,im=Object.getOwnPropertySymbols,Sq=im?function(e){return e==null?[]:(e=Object(e),Aq(im(e),function(t){return bq.call(e,t)}))}:hq;um.exports=Sq});var cm=u((Oj,pm)=>{"use strict";var wq=Xt(),vq=Ia();function Eq(e,t){return wq(e,vq(e),t)}pm.exports=Eq});var Zs=u((Cj,lm)=>{"use strict";var Rq=Bn(),_q=$n(),xq=Ia(),Tq=Xs(),Pq=Object.getOwnPropertySymbols,Oq=Pq?function(e){for(var t=[];e;)Rq(t,xq(e)),e=_q(e);return t}:Tq;lm.exports=Oq});var fm=u((qj,dm)=>{"use strict";var Cq=Xt(),qq=Zs();function Lq(e,t){return Cq(e,qq(e),t)}dm.exports=Lq});var ei=u((Lj,gm)=>{"use strict";var Uq=Bn(),Dq=J();function Bq(e,t,r){var n=t(e);return Dq(e)?n:Uq(n,r(e))}gm.exports=Bq});var ti=u((Uj,mm)=>{"use strict";var Nq=ei(),Gq=Ia(),Mq=ur();function kq(e){return Nq(e,Mq,Gq)}mm.exports=kq});var Am=u((Dj,ym)=>{"use strict";var Fq=ei(),Qq=Zs(),jq=Zt();function Wq(e){return Fq(e,jq,Qq)}ym.exports=Wq});var Im=u((Bj,hm)=>{"use strict";var $q=it(),Vq=re(),Kq=$q(Vq,"DataView");hm.exports=Kq});var Sm=u((Nj,bm)=>{"use strict";var Yq=it(),Hq=re(),Jq=Yq(Hq,"Promise");bm.exports=Jq});var cr=u((Gj,Tm)=>{"use strict";var ri=Im(),ni=Mn(),ai=Sm(),oi=mo(),si=qs(),xm=st(),pr=io(),wm="[object Map]",zq="[object Object]",vm="[object Promise]",Em="[object Set]",Rm="[object WeakMap]",_m="[object DataView]",Xq=pr(ri),Zq=pr(ni),eL=pr(ai),tL=pr(oi),rL=pr(si),Pt=xm;(ri&&Pt(new ri(new ArrayBuffer(1)))!=_m||ni&&Pt(new ni)!=wm||ai&&Pt(ai.resolve())!=vm||oi&&Pt(new oi)!=Em||si&&Pt(new si)!=Rm)&&(Pt=function(e){var t=xm(e),r=t==zq?e.constructor:void 0,n=r?pr(r):"";if(n)switch(n){case Xq:return _m;case Zq:return wm;case eL:return vm;case tL:return Em;case rL:return Rm}return t});Tm.exports=Pt});var Om=u((Mj,Pm)=>{"use strict";var nL=Object.prototype,aL=nL.hasOwnProperty;function oL(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&aL.call(e,"index")&&(r.index=e.index,r.input=e.input),r}Pm.exports=oL});var qm=u((kj,Cm)=>{"use strict";var sL=Wn();function iL(e,t){var r=t?sL(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}Cm.exports=iL});var Um=u((Fj,Lm)=>{"use strict";var uL=/\w*$/;function pL(e){var t=new e.constructor(e.source,uL.exec(e));return t.lastIndex=e.lastIndex,t}Lm.exports=pL});var Mm=u((Qj,Gm)=>{"use strict";var Dm=bt(),Bm=Dm?Dm.prototype:void 0,Nm=Bm?Bm.valueOf:void 0;function cL(e){return Nm?Object(Nm.call(e)):{}}Gm.exports=cL});var Fm=u((jj,km)=>{"use strict";var lL=Wn(),dL=qm(),fL=Um(),gL=Mm(),mL=vo(),yL="[object Boolean]",AL="[object Date]",hL="[object Map]",IL="[object Number]",bL="[object RegExp]",SL="[object Set]",wL="[object String]",vL="[object Symbol]",EL="[object ArrayBuffer]",RL="[object DataView]",_L="[object Float32Array]",xL="[object Float64Array]",TL="[object Int8Array]",PL="[object Int16Array]",OL="[object Int32Array]",CL="[object Uint8Array]",qL="[object Uint8ClampedArray]",LL="[object Uint16Array]",UL="[object Uint32Array]";function DL(e,t,r){var n=e.constructor;switch(t){case EL:return lL(e);case yL:case AL:return new n(+e);case RL:return dL(e,r);case _L:case xL:case TL:case PL:case OL:case CL:case qL:case LL:case UL:return mL(e,r);case hL:return new n;case IL:case wL:return new n(e);case bL:return fL(e);case SL:return new n;case vL:return gL(e)}}km.exports=DL});var jm=u((Wj,Qm)=>{"use strict";var BL=cr(),NL=ce(),GL="[object Map]";function ML(e){return NL(e)&&BL(e)==GL}Qm.exports=ML});var Km=u(($j,Vm)=>{"use strict";var kL=jm(),FL=Kn(),Wm=Yn(),$m=Wm&&Wm.isMap,QL=$m?FL($m):kL;Vm.exports=QL});var Hm=u((Vj,Ym)=>{"use strict";var jL=cr(),WL=ce(),$L="[object Set]";function VL(e){return WL(e)&&jL(e)==$L}Ym.exports=VL});var Zm=u((Kj,Xm)=>{"use strict";var KL=Hm(),YL=Kn(),Jm=Yn(),zm=Jm&&Jm.isSet,HL=zm?YL(zm):KL;Xm.exports=HL});var ii=u((Yj,ny)=>{"use strict";var JL=Yr(),zL=ya(),XL=Po(),ZL=zs(),eU=nm(),tU=So(),rU=Ht(),nU=cm(),aU=fm(),oU=ti(),sU=Am(),iU=cr(),uU=Om(),pU=Fm(),cU=Ro(),lU=J(),dU=Zr(),fU=Km(),gU=be(),mU=Zm(),yU=ur(),AU=Zt(),hU=1,IU=2,bU=4,ey="[object Arguments]",SU="[object Array]",wU="[object Boolean]",vU="[object Date]",EU="[object Error]",ty="[object Function]",RU="[object GeneratorFunction]",_U="[object Map]",xU="[object Number]",ry="[object Object]",TU="[object RegExp]",PU="[object Set]",OU="[object String]",CU="[object Symbol]",qU="[object WeakMap]",LU="[object ArrayBuffer]",UU="[object DataView]",DU="[object Float32Array]",BU="[object Float64Array]",NU="[object Int8Array]",GU="[object Int16Array]",MU="[object Int32Array]",kU="[object Uint8Array]",FU="[object Uint8ClampedArray]",QU="[object Uint16Array]",jU="[object Uint32Array]",C={};C[ey]=C[SU]=C[LU]=C[UU]=C[wU]=C[vU]=C[DU]=C[BU]=C[NU]=C[GU]=C[MU]=C[_U]=C[xU]=C[ry]=C[TU]=C[PU]=C[OU]=C[CU]=C[kU]=C[FU]=C[QU]=C[jU]=!0;C[EU]=C[ty]=C[qU]=!1;function ba(e,t,r,n,a,o){var i,s=t&hU,c=t&IU,f=t&bU;if(r&&(i=a?r(e,n,a,o):r(e)),i!==void 0)return i;if(!gU(e))return e;var m=lU(e);if(m){if(i=uU(e),!s)return rU(e,i)}else{var g=iU(e),y=g==ty||g==RU;if(dU(e))return tU(e,s);if(g==ry||g==ey||y&&!a){if(i=c||y?{}:cU(e),!s)return c?aU(e,eU(i,e)):nU(e,ZL(i,e))}else{if(!C[g])return a?e:{};i=pU(e,g,s)}}o||(o=new JL);var h=o.get(e);if(h)return h;o.set(e,i),mU(e)?e.forEach(function(_){i.add(ba(_,t,r,_,e,o))}):fU(e)&&e.forEach(function(_,R){i.set(R,ba(_,t,r,R,e,o))});var E=f?c?sU:oU:c?AU:yU,T=m?void 0:E(e);return zL(T||e,function(_,R){T&&(R=_,_=e[R]),XL(i,R,ba(_,t,r,R,e,o))}),i}ny.exports=ba});var oy=u((Hj,ay)=>{"use strict";var WU=ii(),$U=4;function VU(e){return WU(e,$U)}ay.exports=VU});var iy=u((Jj,sy)=>{"use strict";var KU=ha(),YU=8;function ui(e,t,r){t=r?void 0:t;var n=KU(e,YU,void 0,void 0,void 0,void 0,void 0,t);return n.placeholder=ui.placeholder,n}ui.placeholder={};sy.exports=ui});var py=u((zj,uy)=>{"use strict";var HU=st(),JU=ce(),zU=_o(),XU="[object DOMException]",ZU="[object Error]";function eD(e){if(!JU(e))return!1;var t=HU(e);return t==ZU||t==XU||typeof e.message=="string"&&typeof e.name=="string"&&!zU(e)}uy.exports=eD});var ly=u((Xj,cy)=>{"use strict";var tD=cr(),rD=ce(),nD="[object WeakMap]";function aD(e){return rD(e)&&tD(e)==nD}cy.exports=aD});var fy=u((Zj,dy)=>{"use strict";function oD(e,t){for(var r=-1,n=e==null?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}dy.exports=oD});var pi=u((eW,gy)=>{"use strict";var sD=lo(),iD=fy(),uD=go(),pD=1,cD=2;function lD(e,t,r,n,a,o){var i=r&pD,s=e.length,c=t.length;if(s!=c&&!(i&&c>s))return!1;var f=o.get(e),m=o.get(t);if(f&&m)return f==t&&m==e;var g=-1,y=!0,h=r&cD?new sD:void 0;for(o.set(e,t),o.set(t,e);++g<s;){var E=e[g],T=t[g];if(n)var _=i?n(T,E,g,t,e,o):n(E,T,g,e,t,o);if(_!==void 0){if(_)continue;y=!1;break}if(h){if(!iD(t,function(R,U){if(!uD(h,U)&&(E===R||a(E,R,r,n,o)))return h.push(U)})){y=!1;break}}else if(!(E===T||a(E,T,r,n,o))){y=!1;break}}return o.delete(e),o.delete(t),y}gy.exports=lD});var yy=u((tW,my)=>{"use strict";function dD(e){var t=-1,r=Array(e.size);return e.forEach(function(n,a){r[++t]=[a,n]}),r}my.exports=dD});var Sy=u((rW,by)=>{"use strict";var Ay=bt(),hy=wo(),fD=jt(),gD=pi(),mD=yy(),yD=Qn(),AD=1,hD=2,ID="[object Boolean]",bD="[object Date]",SD="[object Error]",wD="[object Map]",vD="[object Number]",ED="[object RegExp]",RD="[object Set]",_D="[object String]",xD="[object Symbol]",TD="[object ArrayBuffer]",PD="[object DataView]",Iy=Ay?Ay.prototype:void 0,ci=Iy?Iy.valueOf:void 0;function OD(e,t,r,n,a,o,i){switch(r){case PD:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case TD:return!(e.byteLength!=t.byteLength||!o(new hy(e),new hy(t)));case ID:case bD:case vD:return fD(+e,+t);case SD:return e.name==t.name&&e.message==t.message;case ED:case _D:return e==t+"";case wD:var s=mD;case RD:var c=n&AD;if(s||(s=yD),e.size!=t.size&&!c)return!1;var f=i.get(e);if(f)return f==t;n|=hD,i.set(e,t);var m=gD(s(e),s(t),n,a,o,i);return i.delete(e),m;case xD:if(ci)return ci.call(e)==ci.call(t)}return!1}by.exports=OD});var Ey=u((nW,vy)=>{"use strict";var wy=ti(),CD=1,qD=Object.prototype,LD=qD.hasOwnProperty;function UD(e,t,r,n,a,o){var i=r&CD,s=wy(e),c=s.length,f=wy(t),m=f.length;if(c!=m&&!i)return!1;for(var g=c;g--;){var y=s[g];if(!(i?y in t:LD.call(t,y)))return!1}var h=o.get(e),E=o.get(t);if(h&&E)return h==t&&E==e;var T=!0;o.set(e,t),o.set(t,e);for(var _=i;++g<c;){y=s[g];var R=e[y],U=t[y];if(n)var et=i?n(U,R,y,t,e,o):n(R,U,y,e,t,o);if(!(et===void 0?R===U||a(R,U,r,n,o):et)){T=!1;break}_||(_=y=="constructor")}if(T&&!_){var ye=e.constructor,tt=t.constructor;ye!=tt&&"constructor"in e&&"constructor"in t&&!(typeof ye=="function"&&ye instanceof ye&&typeof tt=="function"&&tt instanceof tt)&&(T=!1)}return o.delete(e),o.delete(t),T}vy.exports=UD});var qy=u((aW,Cy)=>{"use strict";var li=Yr(),DD=pi(),BD=Sy(),ND=Ey(),Ry=cr(),_y=J(),xy=Zr(),GD=Hn(),MD=1,Ty="[object Arguments]",Py="[object Array]",Sa="[object Object]",kD=Object.prototype,Oy=kD.hasOwnProperty;function FD(e,t,r,n,a,o){var i=_y(e),s=_y(t),c=i?Py:Ry(e),f=s?Py:Ry(t);c=c==Ty?Sa:c,f=f==Ty?Sa:f;var m=c==Sa,g=f==Sa,y=c==f;if(y&&xy(e)){if(!xy(t))return!1;i=!0,m=!1}if(y&&!m)return o||(o=new li),i||GD(e)?DD(e,t,r,n,a,o):BD(e,t,c,r,n,a,o);if(!(r&MD)){var h=m&&Oy.call(e,"__wrapped__"),E=g&&Oy.call(t,"__wrapped__");if(h||E){var T=h?e.value():e,_=E?t.value():t;return o||(o=new li),a(T,_,r,n,o)}}return y?(o||(o=new li),ND(e,t,r,n,a,o)):!1}Cy.exports=FD});var di=u((oW,Dy)=>{"use strict";var QD=qy(),Ly=ce();function Uy(e,t,r,n,a){return e===t?!0:e==null||t==null||!Ly(e)&&!Ly(t)?e!==e&&t!==t:QD(e,t,r,n,Uy,a)}Dy.exports=Uy});var Ny=u((sW,By)=>{"use strict";var jD=Yr(),WD=di(),$D=1,VD=2;function KD(e,t,r,n){var a=r.length,o=a,i=!n;if(e==null)return!o;for(e=Object(e);a--;){var s=r[a];if(i&&s[2]?s[1]!==e[s[0]]:!(s[0]in e))return!1}for(;++a<o;){s=r[a];var c=s[0],f=e[c],m=s[1];if(i&&s[2]){if(f===void 0&&!(c in e))return!1}else{var g=new jD;if(n)var y=n(f,m,c,e,t,g);if(!(y===void 0?WD(m,f,$D|VD,n,g):y))return!1}}return!0}By.exports=KD});var fi=u((iW,Gy)=>{"use strict";var YD=be();function HD(e){return e===e&&!YD(e)}Gy.exports=HD});var ky=u((uW,My)=>{"use strict";var JD=fi(),zD=ur();function XD(e){for(var t=zD(e),r=t.length;r--;){var n=t[r],a=e[n];t[r]=[n,a,JD(a)]}return t}My.exports=XD});var gi=u((pW,Fy)=>{"use strict";function ZD(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}Fy.exports=ZD});var jy=u((cW,Qy)=>{"use strict";var eB=Ny(),tB=ky(),rB=gi();function nB(e){var t=tB(e);return t.length==1&&t[0][2]?rB(t[0][0],t[0][1]):function(r){return r===e||eB(r,e,t)}}Qy.exports=nB});var wa=u((lW,Wy)=>{"use strict";var aB=J(),oB=ir(),sB=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,iB=/^\w*$/;function uB(e,t){if(aB(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||oB(e)?!0:iB.test(e)||!sB.test(e)||t!=null&&e in Object(t)}Wy.exports=uB});var Ky=u((dW,Vy)=>{"use strict";var $y=kn(),pB="Expected a function";function mi(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(pB);var r=function(){var n=arguments,a=t?t.apply(this,n):n[0],o=r.cache;if(o.has(a))return o.get(a);var i=e.apply(this,n);return r.cache=o.set(a,i)||o,i};return r.cache=new(mi.Cache||$y),r}mi.Cache=$y;Vy.exports=mi});var Hy=u((fW,Yy)=>{"use strict";var cB=Ky(),lB=500;function dB(e){var t=cB(e,function(n){return r.size===lB&&r.clear(),n}),r=t.cache;return t}Yy.exports=dB});var yi=u((gW,Jy)=>{"use strict";var fB=Hy(),gB=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,mB=/\\(\\)?/g,yB=fB(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(gB,function(r,n,a,o){t.push(a?o.replace(mB,"$1"):n||r)}),t});Jy.exports=yB});var Ai=u((mW,zy)=>{"use strict";function AB(e,t){for(var r=-1,n=e==null?0:e.length,a=Array(n);++r<n;)a[r]=t(e[r],r,e);return a}zy.exports=AB});var nA=u((yW,rA)=>{"use strict";var Xy=bt(),hB=Ai(),IB=J(),bB=ir(),SB=1/0,Zy=Xy?Xy.prototype:void 0,eA=Zy?Zy.toString:void 0;function tA(e){if(typeof e=="string")return e;if(IB(e))return hB(e,tA)+"";if(bB(e))return eA?eA.call(e):"";var t=e+"";return t=="0"&&1/e==-SB?"-0":t}rA.exports=tA});var hi=u((AW,aA)=>{"use strict";var wB=nA();function vB(e){return e==null?"":wB(e)}aA.exports=vB});var Ii=u((hW,oA)=>{"use strict";var EB=J(),RB=wa(),_B=yi(),xB=hi();function TB(e,t){return EB(e)?e:RB(e,t)?[e]:_B(xB(e))}oA.exports=TB});var lr=u((IW,sA)=>{"use strict";var PB=ir(),OB=1/0;function CB(e){if(typeof e=="string"||PB(e))return e;var t=e+"";return t=="0"&&1/e==-OB?"-0":t}sA.exports=CB});var bi=u((bW,iA)=>{"use strict";var qB=Ii(),LB=lr();function UB(e,t){t=qB(t,e);for(var r=0,n=t.length;e!=null&&r<n;)e=e[LB(t[r++])];return r&&r==n?e:void 0}iA.exports=UB});var pA=u((SW,uA)=>{"use strict";var DB=bi();function BB(e,t,r){var n=e==null?void 0:DB(e,t);return n===void 0?r:n}uA.exports=BB});var lA=u((wW,cA)=>{"use strict";function NB(e,t){return e!=null&&t in Object(e)}cA.exports=NB});var fA=u((vW,dA)=>{"use strict";var GB=Ii(),MB=Fr(),kB=J(),FB=rn(),QB=jn(),jB=lr();function WB(e,t,r){t=GB(t,e);for(var n=-1,a=t.length,o=!1;++n<a;){var i=jB(t[n]);if(!(o=e!=null&&r(e,i)))break;e=e[i]}return o||++n!=a?o:(a=e==null?0:e.length,!!a&&QB(a)&&FB(i,a)&&(kB(e)||MB(e)))}dA.exports=WB});var mA=u((EW,gA)=>{"use strict";var $B=lA(),VB=fA();function KB(e,t){return e!=null&&VB(e,t,$B)}gA.exports=KB});var AA=u((RW,yA)=>{"use strict";var YB=di(),HB=pA(),JB=mA(),zB=wa(),XB=fi(),ZB=gi(),eN=lr(),tN=1,rN=2;function nN(e,t){return zB(e)&&XB(t)?ZB(eN(e),t):function(r){var n=HB(r,e);return n===void 0&&n===t?JB(r,e):YB(t,n,tN|rN)}}yA.exports=nN});var IA=u((_W,hA)=>{"use strict";function aN(e){return function(t){return t?.[e]}}hA.exports=aN});var SA=u((xW,bA)=>{"use strict";var oN=bi();function sN(e){return function(t){return oN(t,e)}}bA.exports=sN});var vA=u((TW,wA)=>{"use strict";var iN=IA(),uN=SA(),pN=wa(),cN=lr();function lN(e){return pN(e)?iN(cN(e)):uN(e)}wA.exports=lN});var Si=u((PW,EA)=>{"use strict";var dN=jy(),fN=AA(),gN=Qr(),mN=J(),yN=vA();function AN(e){return typeof e=="function"?e:e==null?gN:typeof e=="object"?mN(e)?fN(e[0],e[1]):dN(e):yN(e)}EA.exports=AN});var _A=u((OW,RA)=>{"use strict";var hN=ii(),IN=Si(),bN=1;function SN(e){return IN(typeof e=="function"?e:hN(e,bN))}RA.exports=SN});var TA=u((CW,xA)=>{"use strict";var wN=ao();function vN(e){var t=e==null?0:e.length;return t?wN(e,1):[]}xA.exports=vN});var OA=u((qW,PA)=>{"use strict";var EN=TA(),RN=oo(),_N=Gn();function xN(e){return _N(RN(e,void 0,EN),e+"")}PA.exports=xN});var qA=u((LW,CA)=>{"use strict";var TN=ha(),PN=OA(),ON=256,CN=PN(function(e,t){return TN(e,ON,void 0,void 0,void 0,t)});CA.exports=CN});var UA=u((UW,LA)=>{"use strict";var qN=Ai(),LN=Ht(),UN=J(),DN=ir(),BN=yi(),NN=lr(),GN=hi();function MN(e){return UN(e)?qN(e,NN):DN(e)?[e]:LN(BN(GN(e)))}LA.exports=MN});var BA=u((DW,DA)=>{"use strict";DA.exports={ary:Jg(),assign:zs(),clone:oy(),curry:iy(),forEach:ya(),isArray:J(),isError:py(),isFunction:jr(),isWeakMap:ly(),iteratee:_A(),keys:Js(),rearg:qA(),toInteger:Vs(),toPath:UA()}});var GA=u((BW,NA)=>{"use strict";var kN=Rf(),FN=BA();function QN(e,t,r){return kN(FN,e,t,r)}NA.exports=QN});var wi=u((NW,kA)=>{"use strict";var jN=GA(),MA=jN("merge",Co());MA.placeholder=Ts();kA.exports=MA});var eI=u((dV,Zh)=>{"use strict";function AG(e,t,r,n){for(var a=-1,o=e==null?0:e.length;++a<o;){var i=e[a];t(n,i,r(i),e)}return n}Zh.exports=AG});var rI=u((fV,tI)=>{"use strict";var hG=bo(),IG=ur();function bG(e,t){return e&&hG(e,t,IG)}tI.exports=bG});var aI=u((gV,nI)=>{"use strict";var SG=Vt();function wG(e,t){return function(r,n){if(r==null)return r;if(!SG(r))return e(r,n);for(var a=r.length,o=t?a:-1,i=Object(r);(t?o--:++o<a)&&n(i[o],o,i)!==!1;);return r}}nI.exports=wG});var sI=u((mV,oI)=>{"use strict";var vG=rI(),EG=aI(),RG=EG(vG);oI.exports=RG});var uI=u((yV,iI)=>{"use strict";var _G=sI();function xG(e,t,r,n){return _G(e,function(a,o,i){t(n,a,r(a),i)}),n}iI.exports=xG});var cI=u((AV,pI)=>{"use strict";var TG=eI(),PG=uI(),OG=Si(),CG=J();function qG(e,t){return function(r,n){var a=CG(r)?TG:PG,o=t?t():{};return a(r,e,OG(n,2),o)}}pI.exports=qG});var dI=u((hV,lI)=>{"use strict";var LG=Hr(),UG=cI(),DG=Object.prototype,BG=DG.hasOwnProperty,NG=UG(function(e,t,r){BG.call(e,r)?e[r].push(t):LG(e,r,[t])});lI.exports=NG});var HG={};S(HG,{Method:()=>Na,ai:()=>Li,api:()=>$i,auditLogs:()=>ct,automations:()=>oa,backups:()=>we,branding:()=>ea,constants:()=>Dr,environmentVariables:()=>Qe,features:()=>Se,groups:()=>G,init:()=>If,licensing:()=>Ne,logger:()=>Ot,mappers:()=>Q,middleware:()=>Ti,plugins:()=>sa,publicApi:()=>pa,quotas:()=>ke,scimGroups:()=>dr,scimUsers:()=>se,sdk:()=>Ei,users:()=>Je,utils:()=>Ft});module.exports=$I(HG);var Na=(o=>(o.POST="POST",o.GET="GET",o.PATCH="PATCH",o.DELETE="DELETE",o.PUT="PUT",o))(Na||{});var Ei={};S(Ei,{ai:()=>Yo,auditLogs:()=>ct,automations:()=>oa,backups:()=>we,branding:()=>ea,environmentVariables:()=>Qe,features:()=>Se,groups:()=>G,init:()=>If,licensing:()=>Ne,logger:()=>Ot,plugins:()=>sa,publicApi:()=>pa,quotas:()=>ke,scimGroups:()=>dr,scimUsers:()=>se,users:()=>Je,utils:()=>Ft});var ea={};S(ea,{getBrandingConfig:()=>Nx});var Se={};S(Se,{checkBackups:()=>le,checkFeature:()=>Xn,checkFeatures:()=>Qo,checkSCIM:()=>Vo,isAICustomConfigsEnabled:()=>Ko,isAppBuildersEnabled:()=>vt,isAuditLogsEnabled:()=>Zn,isBackupsEnabled:()=>jo,isBrandingEnabled:()=>Wo,isBudibaseAIEnabled:()=>sn,isEnforceableSSO:()=>Ld,isExpandedPublicApiEnabled:()=>He,isSSOEnforced:()=>Lx,isSyncAutomationsEnabled:()=>Cx,isTriggerAutomationRunEnabled:()=>qx,isUserGroupsEnabled:()=>$o,isViewPermissionEnabled:()=>Ux,isViewReadonlyColumnsEnabled:()=>Dx});var z=require("@budibase/types"),Ye=require("@budibase/backend-core");var Ne={};S(Ne,{cache:()=>_e,client:()=>ot,features:()=>Un,getFreeLicense:()=>Mo,getLicense:()=>No,getLicenseFromKey:()=>Go,keys:()=>Fo,offline:()=>Jn,quotas:()=>Dn});var _e={};S(_e,{getCachedLicense:()=>Cd,invalidate:()=>qd,refresh:()=>St});var Ga=require("@budibase/backend-core"),Ar,VI=async()=>{Ar=await new Ga.redis.Client(Ga.redis.utils.Databases.LICENSES).init()},KI=async()=>{Ar&&await Ar.finish()};process.on("exit",async()=>{await KI()});var Ma=async()=>(Ar||await VI(),Ar);var ot={};S(ot,{activateLicenseKey:()=>Za,getLicense:()=>Mt,getLicenseFromKey:()=>Xa,triggerQuota:()=>Db});var ru=O(require("node-fetch"));var nu=require("@budibase/backend-core"),ka=class{constructor(t){this.apiCall=t=>async(r="",n={})=>{n.headers||(n.headers={}),n.headers["Content-Type"]||(n.headers={"Content-Type":"application/json",Accept:"application/json",...n.headers});let a=n.headers["Content-Type"]==="application/json";nu.logging.correlation.setHeader(n.headers);let o={method:t,body:a?JSON.stringify(n.body):n.body,headers:n.headers,credentials:"include"};return(0,ru.default)(`${this.host}${r}`,o)};this.post=this.apiCall("POST");this.get=this.apiCall("GET");this.patch=this.apiCall("PATCH");this.del=this.apiCall("DELETE");this.put=this.apiCall("PUT");this.host=t}},Fa=ka;var Cn=require("@budibase/types"),P=require("@budibase/backend-core");var Ue={};S(Ue,{bustCache:()=>su,getCurrentUsageValues:()=>cu,getQuotaUsage:()=>yt,setAllUsage:()=>Va,setAppUsageValue:()=>$a,setUsage:()=>iu,setUsagePerApp:()=>uu,utils:()=>Ir});var ee=require("@budibase/types"),H=require("@budibase/backend-core");var Ir={};S(Ir,{generateBaseQuotaUsage:()=>vn,generateNewMonthlyQuotas:()=>hr,generateNewQuotaUsage:()=>ja,getBreakdownName:()=>Rn,getCurrentMonthString:()=>rt,setCurrentMonth:()=>En,setQuotaReset:()=>Qa});var V=require("@budibase/types"),wn=require("@budibase/backend-core"),au=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},Qa=e=>{e.quotaReset=au()},rt=()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},vn=()=>({usageQuota:{[V.StaticQuotaName.APPS]:0,[V.StaticQuotaName.ROWS]:0,[V.StaticQuotaName.PLUGINS]:0,[V.StaticQuotaName.USERS]:0,[V.StaticQuotaName.CREATORS]:0,[V.StaticQuotaName.USER_GROUPS]:0,[V.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[rt()]:hr()}}),ja=()=>{let e={_id:wn.db.StaticDatabases.GLOBAL.docs.usageQuota,quotaReset:au(),...vn(),apps:{}};return En(e),e},hr=()=>({[V.MonthlyQuotaName.QUERIES]:0,[V.MonthlyQuotaName.AUTOMATIONS]:0,[V.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,triggers:{}}),En=e=>{let t=rt();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=hr()),e.monthly.current=e.monthly[t]},Rn=(e,t)=>{if(!(!t||!e))switch(e){case V.MonthlyQuotaName.AUTOMATIONS:return V.BreakdownQuotaName.AUTOMATIONS;case V.MonthlyQuotaName.QUERIES:return wn.db.isTableId(t)?V.BreakdownQuotaName.ROW_QUERIES:wn.db.isDatasourceId(t)?V.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}};var HI=H.Duration.fromSeconds(60).toMs(),{Writethrough:JI}=H.cache.writethrough;function zI(e){return delete e.usageLimits,delete e.usageQuota.automationRuns,delete e.usageQuota.emails,delete e.usageQuota.storage,delete e.usageQuota.views,delete e.usageQuota.publishedApps,delete e.usageQuota.developers,e}var Wa=()=>new JI(H.tenancy.getGlobalDB(),HI),su=async()=>{let e=H.tenancy.getGlobalDB();try{let t=await e.get(H.db.StaticDatabases.GLOBAL.docs.usageQuota);t?._rev&&await e.remove(H.db.StaticDatabases.GLOBAL.docs.usageQuota,t._rev)}catch(t){if(t.status!==404)throw t}},yt=async()=>{let e=Wa(),t;try{t=await e.get(H.db.StaticDatabases.GLOBAL.docs.usageQuota),En(t),Qa(t)}catch(r){if(r.status===404){t=ja();let n=await e.put(t);t._rev=n.rev}else throw r}return zI(t)},iu=async(e,t,r)=>Va({name:t,type:r,values:{total:e}}),uu=async(e,t,r)=>{let n=Wa(),a=await yt(),o=Object.values(e).reduce((s,c)=>s+c,0);for(let[s,c]of Object.entries(e))a=pu(a,t,r,{total:o,app:c},{appId:s});let i=await n.put(a);return a._rev=i.rev,a},XI=(e,t,r,n)=>{let a=Rn(t,r);if(!a||!n?.breakdown)return e;e.breakdown||(e.breakdown={}),e.breakdown[a]||(e.breakdown[a]={parent:t,values:{}});let o=e.breakdown[a];return o.values[r]=n.breakdown,e},$a=(e,t,r,n={},a)=>{let o;try{o=H.db.getProdAppID(n?.appId||H.context.getAppId())}catch{}if(!o||!a.app||!ee.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[o]||(e.apps={...e.apps,[o]:vn()});let i=e.apps[o];switch(r){case ee.QuotaUsageType.STATIC:i.usageQuota[t]=a.app;break;case ee.QuotaUsageType.MONTHLY:{let s=rt(),c=t,f=i.monthly[s];f||(i.monthly[s]=hr(),f=i.monthly[s]),f[c]=a.app,ee.BREAKDOWN_QUOTA_NAMES.includes(c)&&n?.id&&(f=XI(f,c,n.id,a));break}}return e},ou=(e,t,r,n)=>{if(!ee.APP_QUOTA_NAMES.includes(r))return{};let a;try{a=H.db.getProdAppID(H.context.getAppId())}catch{}if(!a||!e.apps||!e.apps[a])return{app:0};let o=e.apps[a];switch(t){case ee.QuotaUsageType.STATIC:if(o.usageQuota?.[r])return{app:o.usageQuota[r]};break;case ee.QuotaUsageType.MONTHLY:{let i=rt(),s=r;if(!o.monthly?.[i]?.[s])break;let c=o.monthly[i],f=c[s],m,g=Rn(s,n);return g&&n&&c.breakdown?.[g]&&(m=c.breakdown[g]?.values[n]),{app:f,breakdown:m||0}}}return{app:0}},ZI=(e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},eb=(e,t,r,n)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),n&&(r.monthly[t].triggers[e]=n)},pu=(e,t,r,n,a={})=>{if(r===ee.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=n.total,ZI(t,e,n.triggers);else if(r===ee.QuotaUsageType.MONTHLY){t=t;let o=rt();e.monthly[o][t]=n.total,eb(t,o,e,n.triggers)}else throw new Error(`Invalid usage type: ${r}`);return $a(e,t,r,a,n)},Va=async e=>{let t=Array.isArray(e)?e:[e],r=Wa(),n=await yt();for(let o of t)n=pu(n,o.name,o.type,o.values,o.opts);let a=await r.put(n,0);return n._rev=a.rev,n},cu=async(e,t,r)=>{let n=await yt(),a=0,o={};switch(e){case ee.QuotaUsageType.STATIC:if(n.usageQuota[t]){let i=t;a=n.usageQuota[i],o=ou(n,e,t,r)}break;case ee.QuotaUsageType.MONTHLY:{let i=rt(),s=t;n.monthly[i][s]&&(a=n.monthly[i][s],o=ou(n,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return ee.APP_QUOTA_NAMES.includes(t)&&!(o.app||o.breakdown)&&(o.app=o.app||0,o.breakdown=o.breakdown||0),{total:a,app:o.app,breakdown:o.breakdown}};var he={};S(he,{destroy:()=>nb,get:()=>Ka,save:()=>rb});var nt=require("@budibase/backend-core"),tb=()=>({_id:nt.StaticDatabases.GLOBAL.docs.licenseInfo}),rb=async e=>{let t=await Ka();t={...t,...e};let n=await nt.tenancy.getGlobalDB().put(t);return t._rev=n.rev,t},Ka=async()=>{let e=nt.tenancy.getGlobalDB();try{return await e.get(nt.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return tb();throw t}},nb=async()=>{let e=nt.tenancy.getGlobalDB(),t=await Ka();t&&t._rev&&await e.remove(nt.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)};var D={};S(D,{bulkSave:()=>yb,destroy:()=>Ab,fetch:()=>lb,generateUserGroupID:()=>pb,get:()=>fb,getBulk:()=>gb,getByName:()=>Ya,getGroupUsers:()=>xn,getGroupUsersParams:()=>mu,getUserGroupsParams:()=>gu,save:()=>mb});var q=require("@budibase/backend-core");var Re=require("@budibase/types"),Bt=require("@budibase/backend-core");async function lu(){let e=Bt.sql.designDoc.base("type");e.sql.tables={[Re.AUDIT_LOG_TYPE]:{fields:{appId:Re.SQLiteType.TEXT,event:Re.SQLiteType.TEXT,userId:Re.SQLiteType.TEXT,timestamp:Re.SQLiteType.TEXT,metadata:Re.SQLiteType.TEXT,name:Re.SQLiteType.TEXT,type:Re.SQLiteType.TEXT,fallback:Re.SQLiteType.TEXT}}};let t=Bt.context.getAuditLogsDB(),r;try{r=await t.get(Bt.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(n){if(n.status===404)r=e;else throw n}await t.put(r)}var _n=require("@budibase/backend-core"),{ViewName:ab,SEPARATOR:ob,DocumentType:sb,createView:ib}=_n.db,ub=sb.USER+ob;async function du(){let e=_n.tenancy.getGlobalDB(),t=`function(doc) {
|
|
4
|
+
if (doc._id.startsWith("${ub}") && Array.isArray(doc.userGroups)) {
|
|
5
5
|
for (let groupId of doc.userGroups) {
|
|
6
6
|
emit("g_" + groupId, { email: doc.email, userId: doc._id })
|
|
7
7
|
emit("e_" + groupId + doc.email, { email: doc.email, userId: doc._id })
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
|
-
}`;await
|
|
11
|
-
if (doc._id.startsWith("${
|
|
10
|
+
}`;await ib(e,t,ab.USER_BY_GROUP)}var fu=`${q.DocumentType.GROUP}${q.SEPARATOR}`;function gu(e,t={}){e||(e="");let r=e?.startsWith(q.DocumentType.GROUP)?"":fu;return{...t,startkey:`${r}${e}`,endkey:`${r}${e}${q.UNICODE_MAX}`}}function mu(e,t={}){e||(e="");let{emailSearch:r,bookmark:n,...a}=t;return r?{...a,startkey:`e_${e}${n||r}`,endkey:`e_${e}${r}${q.UNICODE_MAX}`}:{...t,startkey:`g_${e}`,endkey:`g_${e}${q.UNICODE_MAX}`,startkey_docid:n}}function pb(){return`${fu}${q.utils.newid()}`}async function xn(e,t){let r=q.tenancy.getGlobalDB();return(await q.db.queryView(q.db.ViewName.USER_BY_GROUP,mu(e,t),r,du,{arrayResponse:!0})).map(a=>({_id:a.userId,email:a.email}))||[]}async function br(e){return e.users=await xn(e._id),e}async function cb(e){let r=(await br(e)).users?.map(o=>o._id),n=await q.users.bulkGetGlobalUsersById(r),a=[];for(let o of n){if(!o.userGroups)continue;let i=o.userGroups.length;o.userGroups=o.userGroups.filter(s=>s!==e._id),o.userGroups.length!==i&&a.push(o)}a.length&&await q.users.bulkUpdateGlobalUsers(a)}async function yu(){return(await q.tenancy.getGlobalDB().allDocs(gu(null,{include_docs:!0}))).rows.map(t=>t.doc)}async function lb(){let e=await yu(),t=[];for(let r of e)t.push(br(r));return await Promise.all(t)}async function fb(e){let r=await q.tenancy.getGlobalDB().get(e);return await br(r)}async function gb(e,t={enriched:!0}){let n=await q.tenancy.getGlobalDB().getMultiple(e,{allowMissing:!0});if(t?.enriched){let a=[];for(let o of n)a.push(br(o));return await Promise.all(a)}else return n}async function mb(e){return await q.tenancy.getGlobalDB().put(e)}async function yb(e){return await q.tenancy.getGlobalDB().bulkDocs(e)}async function Ab(e,t){let r=q.tenancy.getGlobalDB(),n=await r.get(e),a=await r.remove(e,t);return await cb(n),a}async function Ya(e){let t=e.toLowerCase(),n=(await yu()).find(a=>a.name.toLowerCase()===t);if(n)return await br(n)}var Ie={};S(Ie,{deleteAppBackupMetadata:()=>Ob,fetchAppBackups:()=>xb,generateAppBackupID:()=>Ou,getAppBackupMetadata:()=>Cb,oldestBackupDate:()=>Tu,storeAppBackupMetadata:()=>Tb,updateAppBackupMetadata:()=>Pb});var N=require("@budibase/backend-core"),xu=require("@budibase/types");function Sr(e,t){let r=e.rows.map(a=>a.doc?a.doc:a);if(!t?.paginate)return{data:r,hasNextPage:!1};let n=r.length>t?.pageSize;return{data:r.slice(0,t?.pageSize),hasNextPage:n,nextPage:n?e.rows[t?.pageSize]?.key:void 0}}var Nt=require("@budibase/backend-core"),{ViewName:hu,AutomationViewMode:Ha,SEPARATOR:De,DocumentType:Iu,createView:bu}=Nt.db,hb=Iu.AUTOMATION_LOG+De,Au=Iu.APP_BACKUP+De;async function Su(){let e=Nt.context.getProdAppDB(),t=`function(doc) {
|
|
11
|
+
if (doc._id.startsWith("${hb}")) {
|
|
12
12
|
let autoId = doc.automationId + "${De}"
|
|
13
13
|
let status = doc.status + "${De}"
|
|
14
|
-
let autoKey = "${
|
|
15
|
-
let statusKey = "${
|
|
16
|
-
let allKey = "${
|
|
14
|
+
let autoKey = "${Ha.AUTOMATION}${De}" + autoId + doc.createdAt
|
|
15
|
+
let statusKey = "${Ha.STATUS}${De}" + status + doc.createdAt
|
|
16
|
+
let allKey = "${Ha.ALL}${De}" + 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("${
|
|
21
|
+
}`;await bu(e,t,hu.AUTOMATION_LOGS)}async function wu(){let e=Nt.tenancy.getGlobalDB(),t=`function(doc) {
|
|
22
|
+
if (doc._id.startsWith("${Au}") && doc.type && doc.trigger) {
|
|
23
23
|
let full = doc.appId + "${De}"
|
|
24
24
|
full += doc.trigger.toLowerCase() + "${De}"
|
|
25
25
|
full += doc.type.toLowerCase() + "${De}"
|
|
26
|
-
emit("${
|
|
26
|
+
emit("${Au}" + full + doc.timestamp)
|
|
27
27
|
}
|
|
28
|
-
}`;await
|
|
28
|
+
}`;await bu(e,t,hu.APP_BACKUP_BY_TRIGGER)}var _u=require("@budibase/types");var Dr={};S(Dr,{GENERIC_PAGE_SIZE:()=>Be,auditLogs:()=>Gt,licenses:()=>pe,quotas:()=>Ke,versions:()=>Ur});var pe={};S(pe,{CLOUD_FREE_LICENSE:()=>bb,SELF_FREE_LICENSE:()=>Ja,UNLIMITED:()=>k,UNLIMITED_LICENSE:()=>Sb});var at=require("@budibase/types");var Ke={};S(Ke,{UNLIMITED:()=>Ib,appBackupRetentionDays:()=>qr,apps:()=>vr,automationLogRetentionDays:()=>Cr,automations:()=>Pr,budibaseAICredits:()=>Or,creators:()=>Rr,customAIConfigurations:()=>Lr,plugins:()=>xr,queries:()=>Tr,rows:()=>wr,userGroups:()=>_r,users:()=>Er});var te=require("@budibase/types"),Ib=-1,wr=e=>({[te.StaticQuotaName.ROWS]:{name:"Rows",value:e,triggers:[90,100]}}),vr=e=>({[te.StaticQuotaName.APPS]:{name:"Apps",value:e,triggers:[100]}}),Er=e=>({[te.StaticQuotaName.USERS]:{name:"Users",value:e,triggers:[80,100]}}),Rr=e=>({[te.StaticQuotaName.CREATORS]:{name:"Creators",value:e,triggers:[]}}),_r=e=>({[te.StaticQuotaName.USER_GROUPS]:{name:"User Groups",value:e,triggers:[80,100]}}),xr=e=>({[te.StaticQuotaName.PLUGINS]:{name:"Plugins",value:e,triggers:[90,100]}}),Tr=e=>({[te.MonthlyQuotaName.QUERIES]:{name:"Queries",value:e,triggers:[]}}),Pr=e=>({[te.MonthlyQuotaName.AUTOMATIONS]:{name:"Automations",value:e,triggers:[80,90,100]}}),Or=e=>({[te.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:{name:"Budibase AI Credits",value:e,triggers:[80,90,100]}}),Cr=e=>({[te.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS]:{name:"Automation Logs",value:e,triggers:[]}}),qr=e=>({[te.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS]:{name:"App Backups",value:e,triggers:[]}}),Lr=e=>({[te.StaticQuotaName.AI_CUSTOM_CONFIGS]:{name:"Custom AI Configuration",value:e,triggers:[]}});var k=-1,bb={features:[],quotas:{usage:{monthly:{...Tr(k),...Pr(200),...Or(0)},static:{...vr(k),...wr(2e3),...Er(5),...Rr(5),..._r(0),...xr(10),...Lr(0)}},constant:{...Cr(1),...qr(0)}},plan:{type:at.PlanType.FREE,usesInvoicing:!1,model:at.PlanModel.PER_USER}},Ja={features:[],quotas:{usage:{monthly:{...Tr(k),...Pr(k),...Or(0)},static:{...wr(k),...vr(k),...Er(20),...Rr(k),..._r(0),...xr(10),...Lr(0)}},constant:{...Cr(1),...qr(0)}},plan:{type:at.PlanType.FREE,usesInvoicing:!1,model:at.PlanModel.PER_USER}},Sb={features:[],quotas:{usage:{monthly:{...Tr(k),...Pr(k),...Or(k)},static:{...vr(k),...wr(k),...Er(k),...Rr(k),..._r(k),...xr(k),...Lr(k)}},constant:{...Cr(k),...qr(k)}},plan:{type:at.PlanType.FREE,usesInvoicing:!1,model:at.PlanModel.PER_USER}};var Ur={};S(Ur,{getLicenseVersion:()=>wb,getProVersion:()=>Eu});var At=require("@budibase/backend-core"),Tn=O(require("fs")),vu=O(require("path")),wb=()=>{if(At.env.isDev()){let e="dev-version.txt",t=vu.default.join(At.objectStore.budibaseTempDir(),e);if(Tn.default.existsSync(t))return Tn.default.readFileSync(t,"utf8");{let r=At.utils.newid();return Tn.default.writeFileSync(t,r),r}}else return Eu()},Eu=()=>{let e=At.env.VERSION;if(!e)throw new Error("No budibase pro version was specified");return e};var Gt={};S(Gt,{searchTable:()=>vb});var ht=require("@budibase/types"),Ru=require("@budibase/backend-core");function vb(){return{type:"table",sourceType:ht.TableSourceType.INTERNAL,name:ht.AUDIT_LOG_TYPE,sourceId:Ru.SQS_DATASOURCE_INTERNAL,primary:["_id"],schema:{metadata:{name:"metadata",type:ht.FieldType.JSON},fallback:{name:"fallback",type:ht.FieldType.JSON}}}}var Be=9;var Eb=new Date(864e13).toISOString(),Rb=1e3*60*60*24;async function Pn(e){let r=(await _e.getCachedLicense()).quotas?.[_u.QuotaType.CONSTANT]?.[e]?.value||0;return r===pe.UNLIMITED?new Date(Eb).toISOString():new Date(new Date().getTime()-Rb*r).toISOString()}async function Tu(){return Pn(xu.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS)}var za=`${N.db.DocumentType.APP_BACKUP}${N.db.SEPARATOR}`;async function _b(e,t,r={}){let n=await Tu(),a=N.db.getProdAppID(e),o=a,i=a;if(t.trigger&&t.type){let s=`${N.db.SEPARATOR}${t.trigger}`;s+=`${N.db.SEPARATOR}${t.type}`,o+=s,i+=s}return(!t.startDate||t.startDate<n)&&(t.startDate=n),t.startDate&&(i+=`${N.db.SEPARATOR}${t.startDate}`),t.endDate&&(o+=`${N.db.SEPARATOR}${t.endDate}`),{...r,descending:!0,startkey:`${za}${o}${N.db.UNICODE_MAX}`,endkey:`${za}${i}`}}async function Pu(e,t){try{let r=N.db.getQueryIndex(N.db.ViewName.APP_BACKUP_BY_TRIGGER);return await e.query(r,t)}catch(r){if(r!=null&&r.error==="not_found")return await wu(),Pu(e,t);throw r}}function Ou(e,t){return`${za}${e}${N.db.SEPARATOR}${t}`}async function xb(e,t={}){let r=N.tenancy.getGlobalDB(),n,a=t.limit||9,o=await _b(e,t,{include_docs:!0,limit:a+1});t.page&&(o.startkey=t.page),!t.trigger||!t.type?n=await r.allDocs(o):n=await Pu(r,o);let i=Sr(n,{paginate:t.paginate,pageSize:a}),s=[...new Set(i.data.filter(f=>f.createdBy).map(f=>f.createdBy))],c=await N.users.bulkGetGlobalUsersById(s,{cleanup:!0});for(let f of c)for(let m of i.data)f?._id===m.createdBy&&(m.createdBy=f);return i}async function Tb(e,t={}){let r=N.tenancy.getGlobalDB(),n=N.db.getProdAppID(e.appId),a=Ou(n,e.timestamp),o={...e,_id:a,appId:n,name:e.name};return o._id=t.docId||o._id,o._rev=t.docRev||o._rev,t.filename&&(o.filename=t.filename),e.createdBy&&(o.createdBy=N.db.getGlobalIDFromUserMetadataID(e.createdBy)),await r.put(o)}async function Pb(e,t){let r=N.tenancy.getGlobalDB(),n=await r.get(e);return n.name=t,await r.put(n)}async function Ob(e){let t=N.tenancy.getGlobalDB(),r=await t.get(e);await t.remove(r._id,r._rev)}async function Cb(e){return await N.tenancy.getGlobalDB().get(e)}var It={};S(It,{get:()=>Lb,getCacheEnvVarID:()=>Lu,getEnvVarID:()=>On,update:()=>Ub});var xe=require("@budibase/backend-core"),qu=O(require("lru-cache")),qb=1e3,Cu=new qu.default({max:qb});function On(){return xe.StaticDatabases.GLOBAL.docs.environmentVariables}function Lu(e){return`${xe.tenancy.getTenantId()}/${On()}/${e||""}`}async function Lb(){let e=On(),t=xe.tenancy.getGlobalDB(),r,n=!1;try{r=await t.get(e)}catch(s){if(s.status==404)n=!0;else throw s}let a=Lu(r?._rev),o=Cu.get(a);if(o)return o;let i;return!n&&r?i={...r,variables:JSON.parse(xe.encryption.decrypt(r.variables,xe.encryption.SecretOption.ENCRYPTION))}:i={_id:e,variables:{}},Cu.set(a,i),i}async function Ub(e){let t=On();return await xe.tenancy.getGlobalDB().put({_id:e._id||t,_rev:e._rev||void 0,variables:xe.encryption.encrypt(JSON.stringify(e.variables),xe.encryption.SecretOption.ENCRYPTION)})}var qn=new Fa(P.env.ACCOUNT_PORTAL_URL),Ln=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{}},Uu=async e=>{let t,r;if(P.env.SELF_HOSTED){if(t=await he.get(),!t.licenseKey)return;r={[P.constants.Header.LICENSE_KEY]:t.licenseKey}}else{let n=P.tenancy.getTenantId();r={[P.constants.Header.API_KEY]:P.env.ACCOUNT_PORTAL_API_KEY,[P.constants.Header.TENANT_ID]:n}}return e(r)},Du=async()=>Uu(async e=>{let t=await Ue.getQuotaUsage();if(t.usageQuota.users==null){let s=await P.users.getUserCount();console.info(`Syncing user count quota to ${s}`),t.usageQuota.users=s,await Ue.setUsage(s,Cn.StaticQuotaName.USERS,Cn.QuotaUsageType.STATIC)}let r=await P.installation.getInstallFromDB(),n=P.tenancy.getTenantId(),a=await P.events.identification.getUniqueTenantId(n),o=Ur.getProVersion(),i={quotaUsage:t,tenantId:n,install:{id:r.installId,tenantId:a,version:o}};try{let s=await qn.post("/api/license",{headers:{...e},body:i});if(s.status===404||s.status===403)return;if(s.status!==200){let c=await Ln(s);throw new P.HTTPError(`Error getting license: ${c}`,s.status)}return s.json()}catch(s){if(P.env.DISABLE_ACCOUNT_PORTAL)return;throw s}});P.env.isJest()&&(Du=jest.fn());var Mt=Du;async function Xa(e){let t;try{t=await qn.get("/api/license",{headers:{[P.constants.Header.LICENSE_KEY]:e}})}catch(r){if(P.env.DISABLE_ACCOUNT_PORTAL)return;throw r}if(!(t.status===404||t.status===403)){if(t.status!==200){let r=await Ln(t);throw new P.HTTPError(`Error getting license: ${r}`,t.status)}return t.json()}}var Db=e=>Uu(async t=>{let r=await qn.post("/api/license/usage/triggered",{headers:{...t},body:e});if(r.status!==200){let n=await Ln(r);P.logging.logAlert(`Error triggering quota usage: ${n}`)}}),Za=async e=>{let t=await P.installation.getInstall(),r={installVersion:t.version,installId:t.installId},n=await qn.post("/api/license/activate",{headers:{[P.constants.Header.LICENSE_KEY]:e},body:r});if(n.status===403)throw new P.HTTPError("Invalid license key",400);if(n.status!==200){let a=await Ln(n);throw new P.HTTPError(`Error activating license key: ${a}`,n.status)}return n.json()};var Bo=require("@budibase/backend-core");var Jn={};S(Jn,{activateOfflineLicenseToken:()=>Ix,deleteOfflineLicenseToken:()=>bx,dev:()=>an,enrichLicense:()=>_d,getIdentifier:()=>qo,getIdentifierBase64:()=>Sx,getIdentifierFromBase64:()=>wx,getOfflineLicense:()=>Lo,getOfflineLicenseToken:()=>vd,signing:()=>Gr,verifyExpiry:()=>Ed,verifyInstallation:()=>Rd});var Gr={};S(Gr,{sign:()=>Nb,verifyLicenseToken:()=>Nr});var eo=O(require("jsonwebtoken")),Bb=`-----BEGIN PUBLIC KEY-----
|
|
29
29
|
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvz3jePLCFBXZ19c8Dpkv
|
|
30
30
|
XtSgOhKFOcvQdo/LV0KJRUzQWDPWuO4ILtBtnqhjtIzZH4CH0qCYBet5L6Qr4CM1
|
|
31
31
|
l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
|
|
@@ -34,17 +34,17 @@ l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
|
|
|
34
34
|
d/o3ZWE1TTj1zYwlCLN5qRKr3hU8nC3xEYNEbkB9SfTRaOq9Q7P8WmfLkoCPm3pR
|
|
35
35
|
mwIDAQAB
|
|
36
36
|
-----END PUBLIC KEY-----
|
|
37
|
-
`;function Lr(e){return Hn.default.verify(e,TI,{algorithms:["RS256"]})}function PI(e,t){return Hn.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}var qa={};S(qa,{getFeatures:()=>zn});var l=require("@budibase/types");var OI={[l.PlanType.FREE]:[...ue.SELF_FREE_LICENSE.features],[l.PlanType.PREMIUM]:void 0,[l.PlanType.PREMIUM_PLUS]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.CUSTOM_APP_SCRIPTS],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.CUSTOM_APP_SCRIPTS],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.CUSTOM_APP_SCRIPTS]},CI={[l.PlanType.FREE]:[...ue.CLOUD_FREE_LICENSE.features],[l.PlanType.PREMIUM]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS],[l.PlanType.PREMIUM_PLUS]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.BUDIBASE_AI],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.BUDIBASE_AI],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.BRANDING],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.BRANDING],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.CUSTOM_APP_SCRIPTS],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.CUSTOM_APP_SCRIPTS],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.CUSTOM_APP_SCRIPTS]};function zn(e,t){let r=[];function a(n){let o=n[t];if(!o)throw new Error(`Features do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case l.Hosting.SELF:r=a(OI);break;case l.Hosting.CLOUD:r=a(CI);break}return r}var Ua={};S(Ua,{UNLIMITED:()=>d,getQuotas:()=>Jn});var B=require("@budibase/types");var p=$e,_u=ue,d=-1,Br=e=>e*1e6,qI={[B.PlanType.FREE]:{..._u.CLOUD_FREE_LICENSE.quotas},[B.PlanType.PREMIUM]:{usage:{monthly:{...p.queries(d),...p.automations(1e3),...p.budibaseAICredits(0)},static:{...p.rows(1e4),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(0),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[B.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...p.queries(d),...p.automations(5e3),...p.budibaseAICredits(Br(2))},static:{...p.rows(25e3),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(0),...p.plugins(d),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[B.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...p.queries(d),...p.automations(5e3),...p.budibaseAICredits(Br(2))},static:{...p.rows(25e3),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(0),...p.plugins(d),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[B.PlanType.PRO]:{usage:{monthly:{...p.queries(d),...p.automations(1e3),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(5),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[B.PlanType.TEAM]:{usage:{monthly:{...p.queries(d),...p.automations(5e3),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(10),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(90)}},[B.PlanType.BUSINESS]:{usage:{monthly:{...p.queries(d),...p.automations(1e4),...p.budibaseAICredits(0)},static:{...p.rows(5e4),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(50),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(365),...p.appBackupRetentionDays(365)}},[B.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(Br(4))},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(d),...p.plugins(d),...p.customAIConfigurations(d)}},constant:{...p.automationLogRetentionDays(d),...p.appBackupRetentionDays(d)}},[B.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(Br(4))},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(d),...p.plugins(d),...p.customAIConfigurations(d)}},constant:{...p.automationLogRetentionDays(15),...p.appBackupRetentionDays(15)}},[B.PlanType.ENTERPRISE]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(Br(4))},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(d),...p.plugins(d),...p.customAIConfigurations(d)}},constant:{...p.automationLogRetentionDays(d),...p.appBackupRetentionDays(d)}}},UI={[B.PlanType.FREE]:{..._u.SELF_FREE_LICENSE.quotas},[B.PlanType.PREMIUM]:void 0,[B.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(0),...p.plugins(d),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[B.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(0),...p.plugins(d),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[B.PlanType.PRO]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(5),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[B.PlanType.TEAM]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(10),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(90)}},[B.PlanType.BUSINESS]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(50),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(90),...p.appBackupRetentionDays(365)}},[B.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(d),...p.plugins(d),...p.customAIConfigurations(d)}},constant:{...p.automationLogRetentionDays(d),...p.appBackupRetentionDays(d)}},[B.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(d),...p.plugins(d),...p.customAIConfigurations(d)}},constant:{...p.automationLogRetentionDays(15),...p.appBackupRetentionDays(15)}},[B.PlanType.ENTERPRISE]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(d),...p.plugins(d),...p.customAIConfigurations(d)}},constant:{...p.automationLogRetentionDays(d),...p.appBackupRetentionDays(d)}}};function Jn(e,t){let r;function a(n){let o=n[t];if(!o)throw new Error(`Quotas do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case B.Hosting.SELF:r=a(UI);break;case B.Hosting.CLOUD:r=a(qI);break}return JSON.parse(JSON.stringify(r))}var Nt={};S(Nt,{appExists:()=>LI,encoding:()=>Bt});var Tu=require("@budibase/backend-core");async function LI(e){return(await Tu.db.getAllApps({all:!0,idsOnly:!0})).includes(e)}var Bt={};S(Bt,{base64ToObject:()=>BI,objectToBase64:()=>DI});function DI(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}function BI(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}var ld=require("@budibase/types"),zt=require("@budibase/backend-core"),dd=O(Wc()),fd=O(xo());async function l_(e){await he.save({offlineLicenseToken:e}),await At()}async function d_(){await he.save({offlineLicenseToken:void 0}),await At()}async function gd(){return(await he.get()).offlineLicenseToken}async function _o(){let t=(await zt.installation.getInstall()).installId,r=zt.context.getTenantId(),a=await zt.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:a}}async function f_(){let e=await _o();return Bt.objectToBase64(e)}function g_(e){return Bt.base64ToObject(e)}function md(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 yd(e){let t=await _o();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}function Ad(e){let t=e.plan.type,r=ld.Hosting.SELF,a=zn(r,t),n=Jn(r,t);return e.features=(0,dd.default)(e.features,a),e.quotas=(0,fd.default)(e.quotas,n),e}async function To(){try{let e=await gd();if(e){let t=await Lr(e);return md(t),await yd(t),Ad(t)}}catch(e){console.error("Error retrieving offline license",e)}}var ta={};S(ta,{deleteDevLicense:()=>b_,getOfflineLicense:()=>A_,writeDevLicenseToDisk:()=>h_});var hd=require("@budibase/backend-core"),Oo=require("path"),bd=require("os"),ht=O(require("fs"));var m_=hd.env.isTest()?".budibase-test":".budibase",Po=(0,Oo.join)((0,bd.tmpdir)(),m_),y_="dev_license.txt",ea=(0,Oo.join)(Po,y_);if(!ht.default.existsSync(Po))try{ht.default.mkdirSync(Po)}catch{}function A_(){try{if(ht.default.existsSync(ea)){let e=ht.default.readFileSync(ea,{encoding:"utf-8"});return Lr(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}function h_(e){console.log(`Writing license to: ${ea}`),ht.default.writeFileSync(ea,e,{encoding:"utf-8"})}function b_(){ht.default.rmSync(ea,{force:!0})}var qo=async()=>{if(Co.env.OFFLINE_MODE)return To();let e=await Dt();return e||(e=ta.getOfflineLicense()),e},I_=e=>Kn(e),Uo=()=>Co.env.SELF_HOSTED?ue.SELF_FREE_LICENSE:ue.CLOUD_FREE_LICENSE;var Lo={};S(Lo,{activateLicenseKey:()=>S_,deleteLicenseKey:()=>v_,getLicenseKey:()=>w_});async function S_(e){await Yn(e),await he.save({licenseKey:e}),await At()}async function w_(){return(await he.get()).licenseKey}async function v_(){await he.save({licenseKey:void 0}),await At()}var ra=require("@budibase/backend-core"),Ha=O(require("dd-trace")),Id=3600,At=async()=>{await vd(),await wd()},Sd=async(e,t)=>{let{populateLicense:r=qo,populateFreeLicense:a=Uo}=t||{};return await Ha.default.trace("getCachedLicense",async n=>{let o=ra.tenancy.getTenantId(),i=await Ln(),s=await i.get(o);return n.addTags({tenantId:o,foundInCache:!!s}),s||(s=await Ha.default.trace("populateLicense",async()=>await r(o)),n.addTags({populatedLicense:!!s}),s||(s=Ha.default.trace("populateFreeLicense",()=>a(e,o)),n.addTags({populatedFreeLicense:!!s})),s.refreshedAt=new Date().toISOString(),n.addTags({refreshedAt:s.refreshedAt,expirySeconds:Id}),await i.store(o,s,Id),s)})};ra.env.isJest()&&(Sd=jest.fn());var wd=Sd,vd=async()=>{let e=ra.tenancy.getTenantId();await(await Ln()).delete(e)};async function X(e,t){Array.isArray(e)||(e=[e]),t||(t=await xe.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}async function za(e,t){if(!await X(e,t))throw new Ve.FeatureDisabledError(`${e} is not currently enabled`,e)}async function Do(e,t){if(!await X(e,t)){let r=e.join(", ");throw new Ve.FeatureDisabledError(`${r} are not currently enabled`,r)}}function ce(e){return async(...t)=>(await za(J.Feature.APP_BACKUPS),e(...t))}async function Bo(){return X(J.Feature.APP_BACKUPS)}async function No(){return X(J.Feature.BRANDING)}async function Ed(){return X(J.Feature.ENFORCEABLE_SSO)}async function R_(){return X(J.Feature.SYNC_AUTOMATIONS)}async function x_(){return X(J.Feature.TRIGGER_AUTOMATION_RUN)}async function bt(){return X(J.Feature.APP_BUILDERS)}async function Ja(){return X(J.Feature.AUDIT_LOGS)}async function Go(){return X(J.Feature.USER_GROUPS)}async function Ke(){return X(J.Feature.EXPANDED_PUBLIC_API)}async function __(e){if(Ve.env.ENABLE_SSO_MAINTENANCE_MODE||!await Ed())return!1;let r;return e?.config?r=e.config:r=await Ve.configs.getSettingsConfig(),!!r.isSSOEnforced}var Mo=async()=>{let e=J.Feature.SCIM,t=await X(e),r=await Ve.configs.getSCIMConfig();if(!t||!r?.enabled)throw new Ve.FeatureDisabledError(`${e} is not currently enabled`,e);return!0};async function T_(){return X(J.Feature.VIEW_PERMISSIONS)}async function P_(){return X(J.Feature.VIEW_READONLY_COLUMNS)}async function aa(){return X(J.Feature.BUDIBASE_AI)}async function O_(){return X(J.Feature.AI_CUSTOM_CONFIGS)}var C_={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 q_(e){return await No()?{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}:C_}var Za={};S(Za,{enrichAIConfig:()=>ko});var U_="budibase_ai";async function ko(e){return await aa()&&(e.config[U_]={provider:"OpenAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),isBudibaseAI:!0,defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-4o-mini",apiKey:process.env.OPENAI_API_KEY,name:"Budibase AI"}),e}var ke={};S(ke,{addApp:()=>G_,addAutomation:()=>W_,addCustomAIConfig:()=>$_,addGroup:()=>Qo,addPlugin:()=>Wo,addRow:()=>k_,addRows:()=>Q_,addUsers:()=>tn,bustCache:()=>Ji,decrement:()=>Te,decrementMany:()=>St,getCurrentUsageValues:()=>tu,getLicensedQuota:()=>xd,getQuotaUsage:()=>dt,increment:()=>fe,incrementBudibaseAICredits:()=>Ko,incrementMany:()=>It,removeApp:()=>M_,removeCustomAIConfig:()=>V_,removeCustomAIConfigs:()=>K_,removeGroup:()=>jo,removePlugin:()=>$o,removeRow:()=>F_,removeRows:()=>j_,removeUsers:()=>er,set:()=>Fo,setAllUsage:()=>Fn,setAppUsageValue:()=>kn,setUsage:()=>Xi,setUsagePerApp:()=>Zi,updatePluginCount:()=>Vo,updateUsage:()=>Jt,usageLimitIsExceeded:()=>N_,utils:()=>yr});var Y=require("@budibase/types");var de=require("@budibase/backend-core");var fe=(e,t,r)=>Rd({change:1,name:e,type:t,opts:r}),It=e=>Rd(e),Rd=async e=>{let t=Array.isArray(e)?e:[e];await Jt(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 Jt(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]},Te=(e,t,r={})=>Jt({usageChange:-1,name:e,type:t,opts:r}),St=e=>{let t=Array.isArray(e)?e:[e];return Jt(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},Fo=async(e,t,r)=>Le.setUsage(r,e,t),L_=(e,t,r)=>{if(e==Y.QuotaUsageType.STATIC){let a=r.usageQuota.triggers;return a?a[t]||{}:{}}else{let a=Le.utils.getCurrentMonthString(),n=r.monthly[a].triggers;return n?n[t]||{}:{}}},D_=async(e,t,r,a)=>{try{await de.locks.doWithLock({type:Y.LockType.TRY_ONCE,name:Y.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let n={percentage:r,name:t.name};a&&(n.resetDate=a),await at.triggerQuota(n)})}catch(n){de.logging.logAlert("Error triggering quota",n)}},B_=async(e,t,r,a)=>{let n=await dt(),o=e===Y.QuotaUsageType.MONTHLY?n.quotaReset:void 0,i=await L_(e,t,n),s=a.triggers,c=r/a.value*100;c>100&&(c=100);for(let[f,m]of s.entries())if(c>=m&&a.value!==$e.UNLIMITED){if(!i[m]){i[m]=new Date().toISOString();let y=s[f+1]||100;(!(c>=y)||c===m)&&await D_(t,a,c,o)}}else i[m]=void 0;return i},Jt=async e=>{let t=de.tenancy.getTenantId(),r=Array.isArray(e)?e:[e],a=null,n,o=[],i={},s={},c={},f={};for(let g of r){try{a=de.context.getAppId()}catch{}if(Y.APP_QUOTA_NAMES.includes(g.name)&&!a)throw new Error("App context required for quota update");try{n=await xd(Y.QuotaType.USAGE,g.name,g.type),o.push(n);let{total:h,app:E,breakdown:T}=await Le.getCurrentUsageValues(g.type,g.name,g.opts?.id);h+=g.usageChange,E!=null&&(E+=g.usageChange),T!=null&&(T+=g.usageChange);let x={};if(g.opts?.dryRun||(x=await B_(g.type,g.name,h,n),f={...f,[g.name]:x}),n.value!==$e.UNLIMITED&&h>n.value&&g.usageChange>0)throw new de.UsageLimitError(`Licensed ${n.name} of ${n.value} has been exceeded`,n.name);if(h=Math.max(0,h),E&&(E=Math.max(0,E)),T&&(T=Math.max(0,T),c={...c,[g.name]:T}),!g.opts?.dryRun){let R=g.opts?.valueFn;R&&(h=await R(),E=h),i={...i,[g.name]:h},s={...s,[g.name]:E}}}catch(h){throw g.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${g.name}`,h),h}}let m=r.filter(g=>!g.opts?.dryRun).map(g=>({name:g.name,type:g.type,values:{total:i[g.name],app:s[g.name],breakdown:c[g.name],triggers:f[g.name]},opts:{...g.opts,tenantId:t}}));m.length>0&&await Le.setAllUsage(m)},xd=async(e,t,r)=>{let a=await xe.getCachedLicense();if(!a){let n=de.tenancy.getTenantId();throw new Error("License not found for tenant id "+n)}if(r&&(0,Y.isStaticQuota)(e,r,t))return a.quotas[e][r][t];if(r&&(0,Y.isMonthlyQuota)(e,r,t))return a.quotas[e][r][t];if((0,Y.isConstantQuota)(e,t))return a.quotas[e][t];throw new Error("Invalid quota type")},N_=async(e,t)=>{try{return await Jt({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 Xt=require("@budibase/types"),_d=require("@budibase/backend-core"),Td=async()=>{let e=await _d.db.getAllApps({dev:!0});return e?e.length:0},G_=async(e,{appId:t}={})=>fe(Xt.StaticQuotaName.APPS,Xt.QuotaUsageType.STATIC,{fn:e,valueFn:Td,id:t}),M_=async({appId:e}={})=>Te(Xt.StaticQuotaName.APPS,Xt.QuotaUsageType.STATIC,{valueFn:Td,id:e});var Ge=require("@budibase/types"),k_=async(e,{tableId:t}={})=>fe(Ge.StaticQuotaName.ROWS,Ge.QuotaUsageType.STATIC,{fn:e,id:t}),F_=async({tableId:e}={})=>Te(Ge.StaticQuotaName.ROWS,Ge.QuotaUsageType.STATIC,{id:e}),Q_=async(e,t,{tableId:r}={})=>It({change:e,name:Ge.StaticQuotaName.ROWS,type:Ge.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),j_=async(e,{tableId:t}={})=>St({change:e,name:Ge.StaticQuotaName.ROWS,type:Ge.QuotaUsageType.STATIC,opts:{id:t}});var en=require("@budibase/types"),W_=async(e,{automationId:t}={})=>fe(en.MonthlyQuotaName.AUTOMATIONS,en.QuotaUsageType.MONTHLY,{fn:e,id:t});var Zt=require("@budibase/types"),Qo=async e=>fe(Zt.StaticQuotaName.USER_GROUPS,Zt.QuotaUsageType.STATIC,{fn:e}),jo=async()=>Te(Zt.StaticQuotaName.USER_GROUPS,Zt.QuotaUsageType.STATIC);var st=require("@budibase/types"),Wo=async e=>fe(st.StaticQuotaName.PLUGINS,st.QuotaUsageType.STATIC,{fn:e}),$o=async()=>Te(st.StaticQuotaName.PLUGINS,st.QuotaUsageType.STATIC),Vo=async e=>Fo(st.StaticQuotaName.PLUGINS,st.QuotaUsageType.STATIC,e);var Me=require("@budibase/types"),na=require("@budibase/backend-core");var tn=async(e,t,r)=>{let a=[{change:e,name:Me.StaticQuotaName.USERS,type:Me.QuotaUsageType.STATIC,opts:{fn:r,valueFn:na.users.getUserCount}}];t>0&&a.push({change:t,name:Me.StaticQuotaName.CREATORS,type:Me.QuotaUsageType.STATIC,opts:{valueFn:na.users.getCreatorCount}});let n=await It(a);return await Dt(),n},er=async(e,t)=>{let r=[{change:e,name:Me.StaticQuotaName.USERS,type:Me.QuotaUsageType.STATIC,opts:{valueFn:na.users.getUserCount}}];t>0&&r.push({change:t,name:Me.StaticQuotaName.CREATORS,type:Me.QuotaUsageType.STATIC,opts:{valueFn:na.users.getCreatorCount}}),await St(r),await Dt()};var Pe=require("@budibase/types"),Ko=async e=>It({change:e,name:Pe.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:Pe.QuotaUsageType.MONTHLY}),$_=async()=>fe(Pe.StaticQuotaName.AI_CUSTOM_CONFIGS,Pe.QuotaUsageType.STATIC),V_=async()=>Te(Pe.StaticQuotaName.AI_CUSTOM_CONFIGS,Pe.QuotaUsageType.STATIC),K_=async e=>St({change:e,name:Pe.StaticQuotaName.AI_CUSTOM_CONFIGS,type:Pe.QuotaUsageType.STATIC});var Ye={};S(Ye,{addAppBuilder:()=>X_,db:()=>Fe,removeAppBuilder:()=>Z_});var sa=require("@budibase/backend-core");var M={};S(M,{addAppBuilder:()=>Xo,addUsers:()=>Ho,adjustGroupCreatorsQuotas:()=>J_,cleanupApp:()=>z_,enrichUserRolesFromGroups:()=>H_,fetch:()=>oa,get:()=>vt,getBulk:()=>Dd,getGroupBuilderAppIds:()=>Ld,getGroupRoleId:()=>Y_,remove:()=>Yo,removeAppBuilder:()=>Zo,removeUsers:()=>zo,save:()=>tr,updateGroupApps:()=>Jo});var v=require("@budibase/backend-core");var Pd=require("@budibase/backend-core"),rn=class extends Pd.HTTPError{constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function qd(e,t){try{let r=[];for(let s of e)if(s.roles){let c=s.roles[v.db.getProdAppID(t)];c&&r.push(c)}let a=await Promise.all(r.map(async s=>({[s]:await v.roles.roleToNumber(s)}))),n,o,i={};a.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,n=s);return n}catch(r){throw v.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}async function Ud(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await D.getBulk(e,{enriched:!1}),t}async function Ld(e,t){if(!e.userGroups)return[];let r=await Ud(e.userGroups,t?.groups),a=t?.appId?v.db.getProdAppID(t?.appId):null,n=[];for(let o of r){let i=o.builder?.apps;a&&i?.includes(a)?n.push(a):a||(n=n.concat(i||[]))}return[...new Set(n)]}async function Y_(e,t,r){if(!e.userGroups)return null;let a=await Ud(e.userGroups,r?.groups),n=v.db.getProdAppID(t);return e.roles?.[n]?e.roles[n]:(a=a.filter(o=>o?.roles?Object.keys(o.roles).includes(n):!1),await qd(a,t))}async function H_(e){if(!e||!e.userGroups)return e;let t=await Dd(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 v.context.doInAppContext(n,async()=>{if(e.roles[n])return;let o=await qd(t,n);o&&(e.roles[n]=o)});let a=await Ld(e,{groups:t});if(a.length&&!e.builder?.global){let n=e.builder?.apps||[];e.builder={apps:n.concat(a)}}return e}async function oa(){return await D.fetch()}async function vt(e){return await D.get(e)}async function Dd(e,t={enriched:!0}){return await D.getBulk(e,t)}async function Od(e){if(await D.getByName(e))throw new rn(e)}async function Cd(e){let t=await D.getGroupUsers(e._id);if(!t.length)return 0;let a=await v.tenancy.getGlobalDB().getMultiple(t.map(o=>o._id));return(await v.userUtils.creatorsInList(a)).filter(o=>o).length}async function tr(e){let t=[],r=!e._id,a=0;if(delete e.users,!e._id)e._id=D.generateUserGroupID(),await Od(e.name),t.push(v.events.group.created(e));else{let o=await D.get(e._id);if(o.name!==e.name&&await Od(e.name),t.push(v.events.group.updated(e)),JSON.stringify(o.roles)!==JSON.stringify(e.roles)){let i=o.users?.length||0,s=0;i>0&&(s=await Cd(o)),Object.values(e.roles).includes(v.roles.BUILTIN_ROLE_IDS.ADMIN)?a=i-s:a=-i,t.push(v.events.group.permissionsEdited(e))}}await Promise.all(t);let n=()=>D.save(e);if(r)return await Qo(n);{let o=await n();if(a>0)await tn(0,a);else if(a<0){let i=await Cd(e),s=Math.abs(a)-i;s>0&&await er(0,s)}return o}}async function Yo(e,t){let r;try{r=await D.get(e)}catch{throw new Error("Group not found")}let a=Object.values(r.roles||{}).includes(v.roles.BUILTIN_ROLE_IDS.ADMIN),n=()=>{};if(a){let i=v.tenancy.getGlobalDB(),s=await D.getGroupUsers(e),f=(await Promise.all(s.map(h=>i.get(h._id)))).map(h=>({...h,userGroups:h.userGroups.filter(E=>E!==e)})),g=(await v.userUtils.creatorsInList(f)).filter(h=>h).length,y=s.length-g;y&&(n=()=>er(0,y))}let o=await D.destroy(e,t);return await v.events.group.deleted(r),await jo(),await n(),o}async function Ho(e,t){let r=await D.get(e),a=await v.users.bulkGetGlobalUsersById(t),n=[];for(let c of a)c.userGroups||(c.userGroups=[]),c.userGroups.includes(e)||n.push(c);if(!n.length)return n;let o=n.map(c=>({...c,userGroups:[...c?.userGroups||[],e]}));if(await v.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes(v.roles.BUILTIN_ROLE_IDS.ADMIN)){let f=(await v.userUtils.creatorsInList(n)).filter(g=>g).length,m=n.length-f;m&&await tn(0,m)}let s=[];for(let c of t)s.push(v.cache.user.invalidateUser(c));return await Promise.all(s),await v.events.group.usersAdded(o.length,r),o}async function zo(e,t){let r=await D.get(e),a=await v.users.bulkGetGlobalUsersById(t),n=[];for(let s of a){if(!s.userGroups||!s.userGroups.includes(e))continue;let c=s.userGroups.indexOf(e);s.userGroups.splice(c,1),n.push(s)}if(await v.users.bulkUpdateGlobalUsers(n),Object.values(r.roles||{}).includes(v.roles.BUILTIN_ROLE_IDS.ADMIN)){let c=(await v.userUtils.creatorsInList(n)).filter(m=>m).length,f=n.length-c;f&&await er(0,f)}let i=[];for(let s of t)i.push(v.cache.user.invalidateUser(s));return await Promise.all(i),n.length&&await v.events.group.usersDeleted(n.length,r),n}async function Jo(e,t){let r=await vt(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 tr(r)}async function z_(e){let t=await oa(),r=[];for(let a of t)!a.roles||!a.roles[e]||(delete a.roles[e],r.push(a));return await D.bulkSave(r)}async function Xo(e,t){if(!await bt())throw new Error("Feature not enabled, please check license");let r=v.db.getProdAppID(t),a=await vt(e);a.builder??={apps:[]},a.builder.apps.includes(t)||(a.builder.apps.push(r),await tr(a))}async function Zo(e,t){if(!await bt())throw new Error("Feature not enabled, please check license");let r=v.db.getProdAppID(t),a=await vt(e);a.builder?.apps.includes(t)&&(a.builder.apps=a.builder.apps.filter(n=>n!==r),await tr(a))}async function J_(){if(!await Go()){let e=v.tenancy.getGlobalDB(),r=(await oa()||[]).filter(a=>Object.values(a?.roles||{}).includes(v.roles.BUILTIN_ROLE_IDS.ADMIN));for(let a of r){let n=await D.getGroupUsers(a._id),i=(await Promise.all(n.map(m=>e.get(m._id)))).map(m=>({...m,userGroups:m.userGroups.filter(g=>g!==a._id)})),c=(await v.userUtils.creatorsInList(i)).filter(m=>m).length,f=n.length-c;await D.save({...a,roles:{}}),f&&await er(0,f)}}}sa.users.UserDB.init(ke,M,le);var Fe=sa.users.UserDB;async function X_(e,t){if(!await bt())throw new Error("Feature not enabled, please check license");await sa.users.addAppBuilder(e,t)}async function Z_(e,t){if(!await bt())throw new Error("Feature not enabled, please check license");await sa.users.removeAppBuilder(e,t)}var nn={};S(nn,{logs:()=>is});var is={};S(is,{logSearch:()=>uT,oldestLogDate:()=>Qd,storeLog:()=>pT});var Fd=require("@budibase/types"),an=require("@budibase/backend-core");var it=require("@budibase/types");var K=require("@budibase/backend-core");var Bd=require("@budibase/backend-core");async function Nd(e,t){let r,a=5,n=!1,o,i=!0;for(;a>0;a--)try{i?o=await e():o=await exports.randomDelay(e),n=!0;break}catch(s){r=s}return n||Bd.logging.logWarn(`Failed to backoff: ${t}`,r),o}var{SEPARATOR:He,UNICODE_MAX:eT,DocumentType:Gd,AutomationViewMode:es,ViewName:tT,getQueryIndex:rT}=K.db,aT=new Date(0).toISOString(),nT=100,ts=async()=>_a(it.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS);function Md(e,t,{status:r,automationId:a}={},n={}){let o=a?`${a}${He}`:"",i=r?`${r}${He}`:"",s;return r&&a?s=`${es.ALL}${He}${i}${o}`:r?s=`${es.STATUS}${He}${i}`:a?s=`${es.AUTOMATION}${He}${o}`:s=`${Gd.AUTOMATION_LOG}${He}`,{...n,descending:!0,startkey:`${s}${t}${eT}`,endkey:`${s}${e}`}}function rs(e){let t=it.AutomationStatus.SUCCESS,r=!0;for(let a of e.steps){let n=a.outputs?.status?.toLowerCase(),o=n==="stopped_error";if(r&&!o){r=!1;continue}if(o){t=it.AutomationStatus.STOPPED_ERROR;break}else if(a.outputs?.success){if(n==="stopped"){t=it.AutomationStatus.STOPPED;break}}else{t=it.AutomationStatus.ERROR;break}}return t}function oT(e,t,r){return`${Gd.AUTOMATION_LOG}${He}${e}${He}${r}${He}${t}`}async function as(e,t,r={docs:!0}){let a=K.context.getProdAppDB();await a.exists()||(a=K.context.getDevAppDB());let n={status:r.status},o=r?.limit?r.limit:r?.paginate?9+1:void 0,i=Md(e,t,n,{include_docs:r.docs,limit:o});r?.page&&(i.startkey=r.page);let s=await a.allDocs(i);return hr(s,{paginate:r?.paginate,pageSize:9})}async function ns(e,t,r={}){let a=K.context.getProdAppDB();await a.exists()||(a=K.context.getDevAppDB());let n;try{let o={automationId:r?.automationId,status:r?.status},i=Md(e,t,o,{include_docs:!0,limit:9+1});r?.page&&(i.startkey=r.page),n=await a.query(rT(tT.AUTOMATION_LOGS),i)}catch(o){if(o!=null&&(o.name==="not_found"||o.error==="not_found"))return await du(),ns(e,t,r);throw o}return hr(n,{paginate:!0,pageSize:9})}async function kd(e,t){let r=K.context.getProdAppDB(),a=e._id,n=e.name,o=rs(t),i=new Date().toISOString(),s=oT(i,o,a),c={...t,automationId:a,status:o,automationName:n,createdAt:i,_id:s};return await r.put(c),s}async function os(e,{clearing:t}={clearing:!1}){let r=K.context.getProdAppDB();await Nd(async()=>{let a=await r.get(K.db.DocumentType.APP_METADATA);for(let n of e){let o=n.split(K.db.SEPARATOR),i=`${o[o.length-3]}${K.db.SEPARATOR}${o[o.length-2]}`,s={};a.automationErrors&&(s=a.automationErrors),Array.isArray(s[i])||(s[i]=[]);let c=s[i].indexOf(n);t&&c!==-1?s[i].splice(c,1):s[i].push(n),s[i].length===0&&delete s[i],a.automationErrors=s}await r.put(a),await K.cache.app.invalidateAppMetadata(a.appId,a)},"Failed to update app metadata with automation log error")}async function sT(){let e=await ts();try{return await as(aT,e,{docs:!1,paginate:!1,limit:nT})}catch{return{data:[],hasNextPage:!1}}}async function ss(){let e=K.context.getProdAppDB();try{let t=await sT();if(!t.data||t.data.length===0)return;let r=t.data.map(n=>({_id:n.id,_rev:n.value.rev,_deleted:!0})),a=t.data.filter(n=>{let o=n.id.split(K.db.SEPARATOR);return o[o.length-1]===it.AutomationStatus.ERROR}).map(n=>n.id);await e.bulkDocs(r),a.length&&await os(a,{clearing:!0})}catch(t){K.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}var Qd=ts;async function iT(e,t,r,a){let n,o=new Date().toISOString(),i=await Qd();return(!e||e<i)&&(e=i),r||t?n=await ns(e,o,{automationId:r,status:t,page:a}):n=await as(e,o,{status:t,page:a,docs:!0,paginate:!0}),n}async function uT(e){return await ss(),await iT(e.startDate,e.status,e.automationId,e.page)}async function pT(e,t){if(!an.db.isProdAppID(an.context.getAppId()))return;let r=rs(t),a=await kd(e,t);r===Fd.AutomationStatus.ERROR&&await os([a]),await ss()}var on={};S(on,{checkPluginQuotas:()=>dT,deletePlugin:()=>lT,storePlugin:()=>cT});var Vd=require("@budibase/types"),j=require("@budibase/backend-core");var jd=O(require("fs")),Wd=require("path");function $d(e,t){return jd.default.readFileSync((0,Wd.join)(e,t),"utf8")}async function cT(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===Vd.PluginType.DATASOURCE){let js=$d(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 Wo(write)}async function lT(e){let t=j.tenancy.getGlobalDB();try{let r=await t.get(e),a=j.objectStore.getPluginS3Dir(r.name);await j.objectStore.deleteFolder(j.objectStore.ObjectStoreBuckets.PLUGINS,a),await t.remove(e,r._rev),await j.events.plugin.deleted(r),await $o()}catch(r){let a=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${a}`)}}async function dT(){let e=j.tenancy.getGlobalDB();try{let r=(await e.allDocs(j.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await Vo(r)}catch(t){j.logging.logAlert("Unable to retrieve plugins for quota check",t)}}var Qe={};S(Qe,{fetch:()=>gT,fetchValues:()=>mT,isEncryptionKeyAvailable:()=>fT,isValid:()=>Hd,remove:()=>AT,update:()=>yT});var ia=require("@budibase/types"),Kd=require("@budibase/backend-core");function fT(){return!!Kd.env.ENCRYPTION_KEY}async function gT(){let e=await mt.get();return Object.keys(e.variables)}async function mT(e){let r=(await mt.get()).variables,a={};for(let[n,o]of Object.entries(r))switch(e){case ia.AppEnvironment.DEVELOPMENT:a[n]=o.development;break;case ia.AppEnvironment.PRODUCTION:default:a[n]=o.production;break}return a}async function Yd(e){if(!(await Ne.cache.getCachedLicense()).features.includes(ia.Feature.ENVIRONMENT_VARIABLES))throw new Error("User does not have access to environment variables feature.");let r=await mt.get();r.variables=e(r.variables),await mt.update(r)}async function yT(e,t){if(Hd(e))await Yd(a=>(a[e]=t,a));else throw new Error("Variable name has characters that are not allowed")}async function AT(e){await Yd(t=>(delete t[e],t))}function Hd(e){return/^[a-zA-Z0-9-_]+$/.test(e)}var ut={};S(ut,{definitions:()=>TT,download:()=>_T,fetch:()=>xT,write:()=>ET});var un=require("@budibase/types");var F=require("@budibase/backend-core"),Oe=require("@budibase/types");var zd=require("memorystream"),Jd=new F.sql.Sql(Oe.SqlClient.SQL_LITE);async function hT(e,t,r){let a={operation:Oe.Operation.READ,table:Lt.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:Oe.SortOrder.DESCENDING,type:Oe.SortType.STRING}}},n=Jd._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 bT(e){return`${F.DocumentType.AUDIT_LOG}${F.SEPARATOR}${e}${F.SEPARATOR}${F.utils.newid()}`}async function Xd(e){e._id||(e._id=bT(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 us(e,t,r){t||(t=1);let a=F.context.getAuditLogsDB();try{let n=9+1,o=await hT(e,t,n),i=Lt.searchTable(),s=Jd.convertJsonStringColumns(i,await a.sql(o.sql,o.bindings)),c;s.length>n&&(c=s.pop());let f={rows:s,hasNextPage:!!c};return f.hasNextPage&&(f.bookmark=t+1),f}catch(n){if(n.status===404&&!r?.isRetry)return await IT(),await ru(),await us(e,t,{isRetry:!0});throw n}}async function IT(){let e=F.context.getAuditLogsDB(),r=(await e.allDocs(F.db.getDocParams(F.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(a=>a.doc).filter(a=>a&&!a.type).map(a=>({...a,type:Oe.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}function Zd(e){let t=F.context.getAuditLogsDB(),r=new zd,a=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}}),n=new zd;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
|
-
`;n.write(s)}}),r.on("end",()=>{n.end()}),{promise:a,stream:n}}var ne=require("@budibase/backend-core");var sn=require("@budibase/types"),ua=require("@budibase/string-templates"),pa=require("@budibase/backend-core"),wT=pa.constants.MIN_VALID_DATE.toISOString(),vT=pa.constants.MAX_VALID_DATE.toISOString();function ps(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||wT,e.endDate=e.endDate||vT),e}async function ef(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(a=>pa.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=ps(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}function cs(e,t,r){let a={_id:e,status:sn.AuditLogResourceStatus.DELETED};switch(t){case"app":a.name=r?.appName;break;case"user":a.email=r?.email;break}return a}function ls(e){let t=(0,ua.findHBSBlocks)(e);for(let r of t){let a=` "${r}"`;e=e.replace(e.includes(a)?a:` ${r}`,""),e=(0,ua.processStringSync)(e,{})}return e}function tf(e,t){let r=sn.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let a=(0,ua.processStringSync)(r,t);return a.includes('""')&&(a=ls(r)),a}async function ET(e,t,r){if(!await Ja()||!ne.utils.isAudited(e))return;let a=tf(e,t),n=new Date;r?.timestamp&&(n=new Date(r.timestamp));let o={timestamp:n.toISOString(),event:e,name:a,userId:r?.userId||un.AuditLogSystemUser,metadata:{...t,...r?.hostInfo}},i={};try{if(r?.appId){o.appId=ne.db.getProdAppID(r.appId);let s=await ne.cache.app.getAppMetadata(r.appId);"name"in s&&(i.appName=s.name)}if(r?.userId){let s=await ne.users.getById(r?.userId);i.email=s.email}}catch(s){ne.logging.logAlert("Failed to retrieve fallback information for audit log",s)}return o.fallback=i,await Xd(o)}async function RT(e){let t=e.map(s=>s.userId),a=e.filter(s=>s.appId).map(s=>ne.db.getDevAppID(s.appId)),n=await ne.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),o=await ne.db.getAppsByIDs([...new Set(a)]),i=[];for(let s of e){let c=n.find(g=>g?._id===s.userId),f=o.find(g=>ne.db.isSameAppID(g?.appId,s.appId)),m={event:s.event,timestamp:s.timestamp,name:s.name,metadata:s.metadata,user:c||cs(s.userId,"user",s.fallback)};s.appId&&(m.app=f||cs(s.appId,"app",s.fallback)),i.push(m)}return i}async function xT(e){if(!await Ja())throw new Error("Audit logs not available - license required.");let t=await ef(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await us(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await RT(r.rows)}}function _T(e){return e=ps(e),Zd(e)}function TT(){let e=Object.entries(un.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=ls(r[1]);return t}var pn={};S(pn,{applications:()=>ms,roles:()=>fs,users:()=>ds});var ds={};S(ds,{roleCheck:()=>OT});function PT(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 OT(e,t){return await Ke()||PT(e,t),e}var fs={};S(fs,{assign:()=>CT,unAssign:()=>qT});var ca=require("@budibase/backend-core");async function CT(e,t){if(!await Ke())throw new Error("Unable to assign roles - license required.");let r=await Fe.bulkGet(e);for(let a of r){if(t.role&&t.role.roleId){let n=ca.db.getProdAppID(t.role.appId);a.roles[n]=t.role.roleId}if(t.appBuilder){let n=ca.db.getProdAppID(t.appBuilder.appId),o=a.builder?.apps||[];a.builder={apps:o.concat([n])}}t.builder&&(a.builder={global:!0}),t.admin&&(a.admin={global:!0}),a.roles}await Fe.bulkUpdate(r)}async function qT(e,t){if(!await Ke())throw new Error("Unable to un-assign roles - license required.");let r=await Fe.bulkGet(e);for(let a of r){if(t.role){let n=ca.db.getProdAppID(t.role?.appId);a.roles[n]===t.role.roleId&&delete a.roles[n]}if(t.appBuilder&&a.builder?.apps){let n=ca.db.getProdAppID(t.appBuilder.appId);a.builder.apps=a.builder.apps.filter(o=>o!==n)}t.builder&&a.builder&&delete a.builder,t.admin&&a.admin&&delete a.admin}}var ms={};S(ms,{buildExportFn:()=>LT,buildImportFn:()=>UT});var gs=require("@budibase/backend-core");function UT(e){return async(t,r)=>{await Ke()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await gs.context.doInAppContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}function LT(e){return async(t,r)=>{await Ke()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:a,excludeRows:n}=t.request.body;await gs.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 je=require("@budibase/backend-core"),ae=require("@budibase/types");var ys=require("@budibase/backend-core"),rf;function af(){rf=new ys.queue.BudibaseQueue(ys.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}function Et(){return rf}var nf=require("path"),of=O(require("fs"));async function As(e,t={}){return be.storeAppBackupMetadata(e,t)}function sf(e){let t=new Date().toISOString();switch(e){case ae.AppBackupStatus.COMPLETE:case ae.AppBackupStatus.FAILED:return{timestamp:t,finishedAt:t};case ae.AppBackupStatus.STARTED:return{timestamp:t,startedAt:t};case ae.AppBackupStatus.PENDING:return{timestamp:t,createdAt:t}}}async function DT(e,t,r,a){let n=await cn(e);return await be.storeAppBackupMetadata({...n,...sf(t),contents:r,status:t,type:ae.AppBackupType.BACKUP},{filename:a,docId:e})}async function BT(e,t,r){let a=await cn(e);return await be.storeAppBackupMetadata({...a,...sf(r),status:r,type:ae.AppBackupType.RESTORE,trigger:ae.AppBackupTrigger.MANUAL},{docId:e,docRev:t})}async function cn(e){return be.getAppBackupMetadata(e)}async function NT(e,t){return be.updateAppBackupMetadata(e,t)}async function GT(e){let t=await be.getAppBackupMetadata(e);return t.filename&&await je.objectStore.deleteFile(je.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),be.deleteAppBackupMetadata(e)}async function MT(e,t){return be.fetchAppBackups(e,t)}async function uf(e){let t=await be.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let r=await je.objectStore.getReadStream(je.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}async function kT(e){let{stream:t}=await uf(e),r=(0,nf.join)(je.objectStore.budibaseTempDir(),je.utils.newid()),a=of.default.createWriteStream(r);return new Promise((n,o)=>{t.on("error",o),a.on("error",o),t.pipe(a).on("close",()=>n(r))})}async function FT(e,t,r={}){let a;try{a=await As({appId:e,trigger:t,timestamp:new Date().toISOString(),status:ae.AppBackupStatus.PENDING,type:ae.AppBackupType.BACKUP,...r})}catch(n){if(n.status===409)return;throw n}return await Et().add({docId:a.id,docRev:a.rev,appId:e,export:{trigger:t,...r}}),await je.events.backup.appBackupTriggered(e,a.id,ae.AppBackupType.BACKUP,t,r?.name),a.id}async function QT(e,t,r,a){let n=await cn(t),o;try{o=await As({appId:e,timestamp:new Date().toISOString(),status:ae.AppBackupStatus.PENDING,type:ae.AppBackupType.RESTORE,createdBy:a})}catch(i){if(i?.status===409)return;throw i}return await Et().add({appId:e,docId:o.id,docRev:o.rev,import:{nameForBackup:r,backupId:t,createdBy:a}}),{restoreId:o.id,metadata:n}}var jT={isEnabled:Bo,triggerAppRestore:ce(QT),triggerAppBackup:ce(FT),getBackupDownloadStream:ce(uf),downloadAppBackup:ce(kT),fetchAppBackups:ce(MT),storeAppBackupMetadata:ce(As),updateBackupStatus:ce(DT),updateRestoreStatus:ce(BT),getAppBackup:ce(cn),updateAppBackup:ce(NT),deleteAppBackup:ce(GT)},ze=jT;var bs={};S(bs,{init:()=>hs});var W=require("@budibase/backend-core");var Ce=require("@budibase/types");var rr=O(require("fs"));async function hs(e){Et().process(async t=>{let r=t.data;try{if(r.export)return VT(t,e);if(r.import)return $T(t,e)}catch(a){W.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,a)}})}async function WT(e){await W.db.getDB(e,{skip_setup:!0}).destroy()}async function pf(e,t,r,a){let n=W.db.getDevAppID(r),o=W.db.getProdAppID(r),i=new Date().toISOString(),s=async(c,f)=>{a?.doc?await ze.updateBackupStatus(a.doc.id,c,f?.contents,f?.filename):await ze.storeAppBackupMetadata({appId:o,timestamp:i,trigger:e,status:c,name:a?.name,type:Ce.AppBackupType.BACKUP,contents:f?.contents,createdBy:a?.createdBy},{filename:f?.filename})};try{let c=await a.processing.exportAppFn(n,{tar:!0}),f=await a.processing.statsFn(n),m=`${o}/backup-${i}.tar.gz`,g=W.objectStore.ObjectStoreBuckets.BACKUPS,y=rr.default.createReadStream(c);await W.objectStore.streamUpload({bucket:g,filename:m,stream:y,extra:{type:"application/gzip",metadata:{name:a?.name,trigger:e,timestamp:i,appId:o}}}),await s(Ce.AppBackupStatus.COMPLETE,{filename:m,contents:f}),rr.default.existsSync(c)&&rr.default.rmSync(c)}catch(c){W.logging.logAlert("App backup error",c),await s(Ce.AppBackupStatus.FAILED)}}async function $T(e,t){let r=e.data,a=r.appId,n=r.import.backupId,o=r.import.nameForBackup,i=r.import.createdBy,s=W.tenancy.getTenantIDFromAppID(a);return W.tenancy.doInTenant(s,async()=>{let c=W.db.getDevAppID(a),{rev:f}=await ze.updateRestoreStatus(r.docId,r.docRev,Ce.AppBackupStatus.STARTED);await pf(Ce.AppBackupTrigger.RESTORING,s,a,{processing:t,createdBy:i,name:o});let m=await ze.downloadAppBackup(n);await WT(c);let g=Ce.AppBackupStatus.COMPLETE;try{await t.importAppFn(c,W.db.getDB(c),{file:{type:"application/gzip",path:m},key:m})}catch(y){W.logging.logAlert("App restore error",y),g=Ce.AppBackupStatus.FAILED}await ze.updateRestoreStatus(r.docId,f,g),rr.default.existsSync(m)&&rr.default.rmSync(m,{force:!0})})}async function VT(e,t){let r=e.data,a=r.appId,n=r.export.trigger,o=r.export.name,i=W.tenancy.getTenantIDFromAppID(a);await W.tenancy.doInTenant(i,async()=>{try{let{rev:s}=await ze.updateBackupStatus(r.docId,Ce.AppBackupStatus.STARTED);return pf(n,i,a,{processing:t,doc:{id:r.docId,rev:s},name:o})}catch(s){W.logging.logAlert("App backup error",s)}})}var KT=async e=>{af(),await hs(e.processing)},Se={...ze,processing:bs,init:KT,getBackupQueue:Et};var cf=async e=>{e.backups&&await Se.init(e.backups)};var se={};S(se,{create:()=>kN,find:()=>MN,get:()=>GN,remove:()=>QN,update:()=>FN});var qA=O(gi()),Je=require("@budibase/backend-core");var UA=require("@budibase/types");async function GN(e){let t=Je.tenancy.getGlobalDB(),r=new Je.db.QueryBuilder(t.name,UA.SearchIndex.USER);r.setIndexBuilder(Je.db.searchIndexes.createUserIndex),r.setLimit(e.pageSize),r.addEqual("scimInfo.isSync",!0);for(let[n,o]of Object.entries(e.filters?.equal??{}))r.addEqual(n,o);r.setSort("_id"),r.setSkip(e.skip);let a=await r.run();return{users:a.rows,total:a.totalRows}}async function MN(e){return await Je.users.getById(e)}async function kN(e){let t=await Fe.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new Je.HTTPError("User is already synched",409);e={...t,scimInfo:(0,qA.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await Fe.save(e,{requirePassword:!1})}async function FN(e,t){return await Fe.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}async function QN(e){return await Fe.destroy(e)}var ur={};S(ur,{create:()=>jN});var LA=O(gi());var DA=require("@budibase/backend-core");async function jN(e){let t=await jn(e.name),r;if(!t)r=(await M.save(e)).id;else{if(t.scimInfo?.isSync)throw new DA.HTTPError("Group is already synched",409);r=t._id,t.users&&(await M.removeUsers(r,t.users.map(n=>n._id)),delete t.users),t.scimInfo=(0,LA.default)(t.scimInfo,e.scimInfo),await M.save(t)}return await M.get(r)}var xt={};S(xt,{logRequest:()=>WN,logResponse:()=>$N});var mi=require("@budibase/backend-core");async function WN(e){mi.logging.logWarn("SCIM request log",e)}async function $N(e){mi.logging.logWarn("SCIM response error",e)}var Ii={};S(Ii,{doInScimContext:()=>Ai,feature:()=>N,internalGroupOnly:()=>Rn,licensing:()=>BA,requireSCIM:()=>hi,scimGroupOnly:()=>ga,scimUserOnly:()=>fa});var pt=require("@budibase/backend-core");var vn=require("@budibase/types"),VN=(e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(pt.env.SELF_HOSTED&&pt.env.DEFAULT_LICENSE)return t.user.license=$n,r();t.user.license=await Ne.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(pt.utils.isServingApp(t)||pt.utils.isServingBuilder(t)||pt.utils.isServingBuilderPreview(t)||pt.utils.isPublicApiRequest(t))&&await ke.usageLimitIsExceeded(vn.StaticQuotaName.USERS,vn.QuotaUsageType.STATIC)}return r()},BA=VN;var N={};S(N,{requireFeature:()=>KN,requireFeatures:()=>YN});var KN=e=>async(t,r)=>{await za(e),await r()},YN=(...e)=>async(t,r)=>{await Do(e),await r()};var En=require("@budibase/backend-core");var Ai=async(e,t)=>(En.env.DISABLE_SCIM_CALLS||await xt.logRequest({...e.request.toJSON(),body:e.request.body}),await En.context.doInScimContext(async()=>{let r=await t();return await xt.logResponse({...e.response.toJSON(),body:e.response.body}),r}));var hi=async(e,t)=>{await Mo(),await t()};var NA=require("@budibase/backend-core");var fa=e=>bi(NA.users.getById,e,!0),ga=e=>bi(D.get,e,!0),Rn=e=>bi(D.get,e,!1);function bi(e,t,r){return async(a,n)=>{let o=a.params[t];return typeof o!="string"&&a.throw(404),!!(await e(o)).scimInfo?.isSync!==r&&a.throw(404),n()}}var Bi={};S(Bi,{ai:()=>ZA,appBackups:()=>Gh,auditLogs:()=>Th,environmentVariables:()=>Ih,groups:()=>lh,scim:()=>mb,users:()=>Ib});var YA=require("@budibase/types");var Ri={};S(Ri,{getLLM:()=>ma});var VA=require("@budibase/backend-core"),KA=require("@budibase/types");var vi=O(require("openai"));var ct=require("@budibase/types");var we=class e{constructor(t){this.messages=t}user(t){return this.messages.push({role:"user",content:t}),this}system(t){return this.messages.push({role:"system",content:t}),this}static user(t){return new e([{role:"user",content:t}])}static system(t){return new e([{role:"system",content:t}])}};function Si(e){return we.user(`Summarize this text:
|
|
37
|
+
`;function Nr(e){return eo.default.verify(e,Bb,{algorithms:["RS256"]})}function Nb(e,t){return eo.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}var Un={};S(Un,{getFeatures:()=>to});var l=require("@budibase/types");var Gb={[l.PlanType.FREE]:[...pe.SELF_FREE_LICENSE.features],[l.PlanType.PREMIUM]:void 0,[l.PlanType.PREMIUM_PLUS]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.CUSTOM_APP_SCRIPTS],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.CUSTOM_APP_SCRIPTS],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.CUSTOM_APP_SCRIPTS]},Mb={[l.PlanType.FREE]:[...pe.CLOUD_FREE_LICENSE.features],[l.PlanType.PREMIUM]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS],[l.PlanType.PREMIUM_PLUS]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.BUDIBASE_AI],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.BUDIBASE_AI],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.BRANDING],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.BRANDING],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.CUSTOM_APP_SCRIPTS],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.CUSTOM_APP_SCRIPTS],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.CUSTOM_APP_SCRIPTS]};function to(e,t){let r=[];function n(a){let o=a[t];if(!o)throw new Error(`Features do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case l.Hosting.SELF:r=n(Gb);break;case l.Hosting.CLOUD:r=n(Mb);break}return r}var Dn={};S(Dn,{UNLIMITED:()=>d,getQuotas:()=>ro});var B=require("@budibase/types");var p=Ke,Bu=pe,d=-1,Mr=e=>e*1e6,kb={[B.PlanType.FREE]:{...Bu.CLOUD_FREE_LICENSE.quotas},[B.PlanType.PREMIUM]:{usage:{monthly:{...p.queries(d),...p.automations(1e3),...p.budibaseAICredits(0)},static:{...p.rows(1e4),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(0),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[B.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...p.queries(d),...p.automations(5e3),...p.budibaseAICredits(Mr(2))},static:{...p.rows(25e3),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(0),...p.plugins(d),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[B.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...p.queries(d),...p.automations(5e3),...p.budibaseAICredits(Mr(2))},static:{...p.rows(25e3),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(0),...p.plugins(d),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[B.PlanType.PRO]:{usage:{monthly:{...p.queries(d),...p.automations(1e3),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(5),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[B.PlanType.TEAM]:{usage:{monthly:{...p.queries(d),...p.automations(5e3),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(10),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(90)}},[B.PlanType.BUSINESS]:{usage:{monthly:{...p.queries(d),...p.automations(1e4),...p.budibaseAICredits(0)},static:{...p.rows(5e4),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(50),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(365),...p.appBackupRetentionDays(365)}},[B.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(Mr(4))},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(d),...p.plugins(d),...p.customAIConfigurations(d)}},constant:{...p.automationLogRetentionDays(d),...p.appBackupRetentionDays(d)}},[B.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(Mr(4))},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(d),...p.plugins(d),...p.customAIConfigurations(d)}},constant:{...p.automationLogRetentionDays(15),...p.appBackupRetentionDays(15)}},[B.PlanType.ENTERPRISE]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(Mr(4))},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(d),...p.plugins(d),...p.customAIConfigurations(d)}},constant:{...p.automationLogRetentionDays(d),...p.appBackupRetentionDays(d)}}},Fb={[B.PlanType.FREE]:{...Bu.SELF_FREE_LICENSE.quotas},[B.PlanType.PREMIUM]:void 0,[B.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(0),...p.plugins(d),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[B.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(0),...p.plugins(d),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[B.PlanType.PRO]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(5),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[B.PlanType.TEAM]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(10),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(90)}},[B.PlanType.BUSINESS]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(50),...p.plugins(d),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(90),...p.appBackupRetentionDays(365)}},[B.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(d),...p.plugins(d),...p.customAIConfigurations(d)}},constant:{...p.automationLogRetentionDays(d),...p.appBackupRetentionDays(d)}},[B.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(d),...p.plugins(d),...p.customAIConfigurations(d)}},constant:{...p.automationLogRetentionDays(15),...p.appBackupRetentionDays(15)}},[B.PlanType.ENTERPRISE]:{usage:{monthly:{...p.queries(d),...p.automations(d),...p.budibaseAICredits(0)},static:{...p.rows(d),...p.apps(d),...p.users(d),...p.creators(d),...p.userGroups(d),...p.plugins(d),...p.customAIConfigurations(d)}},constant:{...p.automationLogRetentionDays(d),...p.appBackupRetentionDays(d)}}};function ro(e,t){let r;function n(a){let o=a[t];if(!o)throw new Error(`Quotas do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case B.Hosting.SELF:r=n(Fb);break;case B.Hosting.CLOUD:r=n(kb);break}return JSON.parse(JSON.stringify(r))}var Ft={};S(Ft,{appExists:()=>Qb,encoding:()=>kt});var Nu=require("@budibase/backend-core");async function Qb(e){return(await Nu.db.getAllApps({all:!0,idsOnly:!0})).includes(e)}var kt={};S(kt,{base64ToObject:()=>Wb,objectToBase64:()=>jb});function jb(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}function Wb(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}var bd=require("@budibase/types"),er=require("@budibase/backend-core"),Sd=O(Zc()),wd=O(Co());async function Ix(e){await he.save({offlineLicenseToken:e}),await St()}async function bx(){await he.save({offlineLicenseToken:void 0}),await St()}async function vd(){return(await he.get()).offlineLicenseToken}async function qo(){let t=(await er.installation.getInstall()).installId,r=er.context.getTenantId(),n=await er.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:n}}async function Sx(){let e=await qo();return kt.objectToBase64(e)}function wx(e){return kt.base64ToObject(e)}function Ed(e){let t=Date.now(),r=new Date(e.expireAt).getTime();if(t>r)throw new Error(`Offline license has expired. expireAt=${e.expireAt}`)}async function Rd(e){let t=await qo();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}function _d(e){let t=e.plan.type,r=bd.Hosting.SELF,n=to(r,t),a=ro(r,t);return e.features=(0,Sd.default)(e.features,n),e.quotas=(0,wd.default)(e.quotas,a),e}async function Lo(){try{let e=await vd();if(e){let t=await Nr(e);return Ed(t),await Rd(t),_d(t)}}catch(e){console.error("Error retrieving offline license",e)}}var an={};S(an,{deleteDevLicense:()=>xx,getOfflineLicense:()=>Rx,writeDevLicenseToDisk:()=>_x});var xd=require("@budibase/backend-core"),Do=require("path"),Td=require("os"),wt=O(require("fs"));var vx=xd.env.isTest()?".budibase-test":".budibase",Uo=(0,Do.join)((0,Td.tmpdir)(),vx),Ex="dev_license.txt",nn=(0,Do.join)(Uo,Ex);if(!wt.default.existsSync(Uo))try{wt.default.mkdirSync(Uo)}catch{}function Rx(){try{if(wt.default.existsSync(nn)){let e=wt.default.readFileSync(nn,{encoding:"utf-8"});return Nr(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}function _x(e){console.log(`Writing license to: ${nn}`),wt.default.writeFileSync(nn,e,{encoding:"utf-8"})}function xx(){wt.default.rmSync(nn,{force:!0})}var No=async()=>{if(Bo.env.OFFLINE_MODE)return Lo();let e=await Mt();return e||(e=an.getOfflineLicense()),e},Go=e=>Xa(e),Mo=()=>Bo.env.SELF_HOSTED?pe.SELF_FREE_LICENSE:pe.CLOUD_FREE_LICENSE;var Fo={};S(Fo,{activateLicenseKey:()=>Tx,deleteLicenseKey:()=>Px,getLicenseKey:()=>ko});async function Tx(e){await Za(e),await he.save({licenseKey:e}),await St()}async function ko(){return(await he.get()).licenseKey}async function Px(){await he.save({licenseKey:void 0}),await St()}var on=require("@budibase/backend-core"),zn=O(require("dd-trace")),Pd=3600,St=async()=>{await qd(),await Cd()},Od=async(e,t)=>{let{populateLicense:r=No,populateFreeLicense:n=Mo}=t||{};return await zn.default.trace("getCachedLicense",async a=>{let o=on.tenancy.getTenantId(),i=await Ma(),s=await i.get(o);return a.addTags({tenantId:o,foundInCache:!!s}),s||(s=await zn.default.trace("populateLicense",async()=>await r(o)),a.addTags({populatedLicense:!!s}),s||(s=zn.default.trace("populateFreeLicense",()=>n(e,o)),a.addTags({populatedFreeLicense:!!s})),s.refreshedAt=new Date().toISOString(),a.addTags({refreshedAt:s.refreshedAt,expirySeconds:Pd}),await i.store(o,s,Pd),s)})};on.env.isJest()&&(Od=jest.fn());var Cd=Od,qd=async()=>{let e=on.tenancy.getTenantId();await(await Ma()).delete(e)};async function X(e,t){Array.isArray(e)||(e=[e]),t||(t=await _e.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}async function Xn(e,t){if(!await X(e,t))throw new Ye.FeatureDisabledError(`${e} is not currently enabled`,e)}async function Qo(e,t){if(!await X(e,t)){let r=e.join(", ");throw new Ye.FeatureDisabledError(`${r} are not currently enabled`,r)}}function le(e){return async(...t)=>(await Xn(z.Feature.APP_BACKUPS),e(...t))}async function jo(){return X(z.Feature.APP_BACKUPS)}async function Wo(){return X(z.Feature.BRANDING)}async function Ld(){return X(z.Feature.ENFORCEABLE_SSO)}async function Cx(){return X(z.Feature.SYNC_AUTOMATIONS)}async function qx(){return X(z.Feature.TRIGGER_AUTOMATION_RUN)}async function vt(){return X(z.Feature.APP_BUILDERS)}async function Zn(){return X(z.Feature.AUDIT_LOGS)}async function $o(){return X(z.Feature.USER_GROUPS)}async function He(){return X(z.Feature.EXPANDED_PUBLIC_API)}async function Lx(e){if(Ye.env.ENABLE_SSO_MAINTENANCE_MODE||!await Ld())return!1;let r;return e?.config?r=e.config:r=await Ye.configs.getSettingsConfig(),!!r.isSSOEnforced}var Vo=async()=>{let e=z.Feature.SCIM,t=await X(e),r=await Ye.configs.getSCIMConfig();if(!t||!r?.enabled)throw new Ye.FeatureDisabledError(`${e} is not currently enabled`,e);return!0};async function Ux(){return X(z.Feature.VIEW_PERMISSIONS)}async function Dx(){return X(z.Feature.VIEW_READONLY_COLUMNS)}async function sn(){return X(z.Feature.BUDIBASE_AI)}async function Ko(){return X(z.Feature.AI_CUSTOM_CONFIGS)}var Bx={faviconUrl:void 0,faviconUrlEtag:void 0,emailBrandingEnabled:!0,testimonialsEnabled:!0,platformTitle:void 0,loginHeading:void 0,loginButton:void 0,metaDescription:void 0,metaImageUrl:void 0,metaTitle:void 0};async function Nx(e){return await Wo()?{faviconUrl:e.faviconUrl,faviconUrlEtag:e.faviconUrlEtag,emailBrandingEnabled:e.emailBrandingEnabled,testimonialsEnabled:e.testimonialsEnabled,platformTitle:e.platformTitle,loginHeading:e.loginHeading,loginButton:e.loginButton,metaDescription:e.metaDescription,metaImageUrl:e.metaImageUrl,metaTitle:e.metaTitle}:Bx}var Yo={};S(Yo,{enrichAIConfig:()=>Mx});var Gx="budibase_ai";async function Mx(e){return await sn()&&(e.config[Gx]={provider:"OpenAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),isBudibaseAI:!0,defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-4o-mini",apiKey:process.env.OPENAI_API_KEY,name:"Budibase AI"}),e}var ke={};S(ke,{addApp:()=>Wx,addAutomation:()=>Jx,addCustomAIConfig:()=>zx,addGroup:()=>Jo,addPlugin:()=>Xo,addRow:()=>Vx,addRows:()=>Yx,addUsers:()=>ra,bustCache:()=>su,decrement:()=>Te,decrementMany:()=>Rt,getCurrentUsageValues:()=>cu,getLicensedQuota:()=>Dd,getQuotaUsage:()=>yt,increment:()=>fe,incrementBudibaseAICredits:()=>ts,incrementMany:()=>Et,removeApp:()=>$x,removeCustomAIConfig:()=>Xx,removeCustomAIConfigs:()=>Zx,removeGroup:()=>zo,removePlugin:()=>Zo,removeRow:()=>Kx,removeRows:()=>Hx,removeUsers:()=>ar,set:()=>Ho,setAllUsage:()=>Va,setAppUsageValue:()=>$a,setUsage:()=>iu,setUsagePerApp:()=>uu,updatePluginCount:()=>es,updateUsage:()=>tr,usageLimitIsExceeded:()=>jx,utils:()=>Ir});var Y=require("@budibase/types");var de=require("@budibase/backend-core");var fe=(e,t,r)=>Ud({change:1,name:e,type:t,opts:r}),Et=e=>Ud(e),Ud=async e=>{let t=Array.isArray(e)?e:[e];await tr(t.map(n=>({usageChange:n.change,name:n.name,type:n.type,opts:{dryRun:!0,suppressErrorLog:n.opts?.suppressErrorLog,id:n.opts?.id}})));let r=[];for(let n of t){let a=n.opts?.fn;a&&r.push(await a())}return await tr(t.map(n=>({usageChange:n.change,name:n.name,type:n.type,opts:{dryRun:!1,valueFn:n.opts?.valueFn,suppressErrorLog:n.opts?.suppressErrorLog,id:n.opts?.id}}))),r[0]},Te=(e,t,r={})=>tr({usageChange:-1,name:e,type:t,opts:r}),Rt=e=>{let t=Array.isArray(e)?e:[e];return tr(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},Ho=async(e,t,r)=>Ue.setUsage(r,e,t),kx=(e,t,r)=>{if(e==Y.QuotaUsageType.STATIC){let n=r.usageQuota.triggers;return n?n[t]||{}:{}}else{let n=Ue.utils.getCurrentMonthString(),a=r.monthly[n].triggers;return a?a[t]||{}:{}}},Fx=async(e,t,r,n)=>{try{await de.locks.doWithLock({type:Y.LockType.TRY_ONCE,name:Y.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let a={percentage:r,name:t.name};n&&(a.resetDate=n),await ot.triggerQuota(a)})}catch(a){de.logging.logAlert("Error triggering quota",a)}},Qx=async(e,t,r,n)=>{let a=await yt(),o=e===Y.QuotaUsageType.MONTHLY?a.quotaReset:void 0,i=await kx(e,t,a),s=n.triggers,c=r/n.value*100;c>100&&(c=100);for(let[f,m]of s.entries())if(c>=m&&n.value!==Ke.UNLIMITED){if(!i[m]){i[m]=new Date().toISOString();let y=s[f+1]||100;(!(c>=y)||c===m)&&await Fx(t,n,c,o)}}else i[m]=void 0;return i},tr=async e=>{let t=de.tenancy.getTenantId(),r=Array.isArray(e)?e:[e],n=null,a,o=[],i={},s={},c={},f={};for(let g of r){try{n=de.context.getAppId()}catch{}if(Y.APP_QUOTA_NAMES.includes(g.name)&&!n)throw new Error("App context required for quota update");try{a=await Dd(Y.QuotaType.USAGE,g.name,g.type),o.push(a);let{total:h,app:E,breakdown:T}=await Ue.getCurrentUsageValues(g.type,g.name,g.opts?.id);h+=g.usageChange,E!=null&&(E+=g.usageChange),T!=null&&(T+=g.usageChange);let _={};if(g.opts?.dryRun||(_=await Qx(g.type,g.name,h,a),f={...f,[g.name]:_}),a.value!==Ke.UNLIMITED&&h>a.value&&g.usageChange>0)throw new de.UsageLimitError(`Licensed ${a.name} of ${a.value} has been exceeded`,a.name);if(h=Math.max(0,h),E&&(E=Math.max(0,E)),T&&(T=Math.max(0,T),c={...c,[g.name]:T}),!g.opts?.dryRun){let R=g.opts?.valueFn;R&&(h=await R(),E=h),i={...i,[g.name]:h},s={...s,[g.name]:E}}}catch(h){throw g.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${g.name}`,h),h}}let m=r.filter(g=>!g.opts?.dryRun).map(g=>({name:g.name,type:g.type,values:{total:i[g.name],app:s[g.name],breakdown:c[g.name],triggers:f[g.name]},opts:{...g.opts,tenantId:t}}));m.length>0&&await Ue.setAllUsage(m)},Dd=async(e,t,r)=>{let n=await _e.getCachedLicense();if(!n){let a=de.tenancy.getTenantId();throw new Error("License not found for tenant id "+a)}if(r&&(0,Y.isStaticQuota)(e,r,t))return n.quotas[e][r][t];if(r&&(0,Y.isMonthlyQuota)(e,r,t))return n.quotas[e][r][t];if((0,Y.isConstantQuota)(e,t))return n.quotas[e][t];throw new Error("Invalid quota type")},jx=async(e,t)=>{try{return await tr({usageChange:1,name:e,type:t,opts:{dryRun:!0}}),!1}catch(r){if(r.code===de.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw r}};var rr=require("@budibase/types"),Bd=require("@budibase/backend-core"),Nd=async()=>{let e=await Bd.db.getAllApps({dev:!0});return e?e.length:0},Wx=async(e,{appId:t}={})=>fe(rr.StaticQuotaName.APPS,rr.QuotaUsageType.STATIC,{fn:e,valueFn:Nd,id:t}),$x=async({appId:e}={})=>Te(rr.StaticQuotaName.APPS,rr.QuotaUsageType.STATIC,{valueFn:Nd,id:e});var Ge=require("@budibase/types"),Vx=async(e,{tableId:t}={})=>fe(Ge.StaticQuotaName.ROWS,Ge.QuotaUsageType.STATIC,{fn:e,id:t}),Kx=async({tableId:e}={})=>Te(Ge.StaticQuotaName.ROWS,Ge.QuotaUsageType.STATIC,{id:e}),Yx=async(e,t,{tableId:r}={})=>Et({change:e,name:Ge.StaticQuotaName.ROWS,type:Ge.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),Hx=async(e,{tableId:t}={})=>Rt({change:e,name:Ge.StaticQuotaName.ROWS,type:Ge.QuotaUsageType.STATIC,opts:{id:t}});var ta=require("@budibase/types"),Jx=async(e,{automationId:t}={})=>fe(ta.MonthlyQuotaName.AUTOMATIONS,ta.QuotaUsageType.MONTHLY,{fn:e,id:t});var nr=require("@budibase/types"),Jo=async e=>fe(nr.StaticQuotaName.USER_GROUPS,nr.QuotaUsageType.STATIC,{fn:e}),zo=async()=>Te(nr.StaticQuotaName.USER_GROUPS,nr.QuotaUsageType.STATIC);var ut=require("@budibase/types"),Xo=async e=>fe(ut.StaticQuotaName.PLUGINS,ut.QuotaUsageType.STATIC,{fn:e}),Zo=async()=>Te(ut.StaticQuotaName.PLUGINS,ut.QuotaUsageType.STATIC),es=async e=>Ho(ut.StaticQuotaName.PLUGINS,ut.QuotaUsageType.STATIC,e);var Me=require("@budibase/types"),un=require("@budibase/backend-core");var ra=async(e,t,r)=>{let n=[{change:e,name:Me.StaticQuotaName.USERS,type:Me.QuotaUsageType.STATIC,opts:{fn:r,valueFn:un.users.getUserCount}}];t>0&&n.push({change:t,name:Me.StaticQuotaName.CREATORS,type:Me.QuotaUsageType.STATIC,opts:{valueFn:un.users.getCreatorCount}});let a=await Et(n);return await Mt(),a},ar=async(e,t)=>{let r=[{change:e,name:Me.StaticQuotaName.USERS,type:Me.QuotaUsageType.STATIC,opts:{valueFn:un.users.getUserCount}}];t>0&&r.push({change:t,name:Me.StaticQuotaName.CREATORS,type:Me.QuotaUsageType.STATIC,opts:{valueFn:un.users.getCreatorCount}}),await Rt(r),await Mt()};var Pe=require("@budibase/types"),ts=async e=>Et({change:e,name:Pe.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:Pe.QuotaUsageType.MONTHLY}),zx=async()=>fe(Pe.StaticQuotaName.AI_CUSTOM_CONFIGS,Pe.QuotaUsageType.STATIC),Xx=async()=>Te(Pe.StaticQuotaName.AI_CUSTOM_CONFIGS,Pe.QuotaUsageType.STATIC),Zx=async e=>Rt({change:e,name:Pe.StaticQuotaName.AI_CUSTOM_CONFIGS,type:Pe.QuotaUsageType.STATIC});var Je={};S(Je,{addAppBuilder:()=>aT,db:()=>Fe,removeAppBuilder:()=>oT});var cn=require("@budibase/backend-core");var G={};S(G,{addAppBuilder:()=>ss,addUsers:()=>ns,adjustGroupCreatorsQuotas:()=>nT,cleanupApp:()=>rT,enrichUserRolesFromGroups:()=>tT,fetch:()=>pn,get:()=>xt,getBulk:()=>Wd,getGroupBuilderAppIds:()=>jd,getGroupRoleId:()=>eT,remove:()=>rs,removeAppBuilder:()=>is,removeUsers:()=>as,save:()=>or,updateGroupApps:()=>os});var v=require("@budibase/backend-core");var Gd=require("@budibase/backend-core"),na=class extends Gd.HTTPError{constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function Fd(e,t){try{let r=[];for(let s of e)if(s.roles){let c=s.roles[v.db.getProdAppID(t)];c&&r.push(c)}let n=await Promise.all(r.map(async s=>({[s]:await v.roles.roleToNumber(s)}))),a,o,i={};n.forEach(s=>{let[c,f]=Object.entries(s)[0];i[c]={roleId:c,roleNum:f}});for(let{roleId:s,roleNum:c}of Object.values(i))(o===void 0||c>o)&&(o=c,a=s);return a}catch(r){throw v.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}async function Qd(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await D.getBulk(e,{enriched:!1}),t}async function jd(e,t){if(!e.userGroups)return[];let r=await Qd(e.userGroups,t?.groups),n=t?.appId?v.db.getProdAppID(t?.appId):null,a=[];for(let o of r){let i=o.builder?.apps;n&&i?.includes(n)?a.push(n):n||(a=a.concat(i||[]))}return[...new Set(a)]}async function eT(e,t,r){if(!e.userGroups)return null;let n=await Qd(e.userGroups,r?.groups),a=v.db.getProdAppID(t);return e.roles?.[a]?e.roles[a]:(n=n.filter(o=>o?.roles?Object.keys(o.roles).includes(a):!1),await Fd(n,t))}async function tT(e){if(!e||!e.userGroups)return e;let t=await Wd(e.userGroups,{enriched:!1}),r=[];for(let a of t)a?.roles&&(r=r.concat(Object.keys(a.roles)));r=[...new Set(r)];for(let a of r)await v.context.doInAppContext(a,async()=>{if(e.roles[a])return;let o=await Fd(t,a);o&&(e.roles[a]=o)});let n=await jd(e,{groups:t});if(n.length&&!e.builder?.global){let a=e.builder?.apps||[];e.builder={apps:a.concat(n)}}return e}async function pn(){return await D.fetch()}async function xt(e){return await D.get(e)}async function Wd(e,t={enriched:!0}){return await D.getBulk(e,t)}async function Md(e){if(await D.getByName(e))throw new na(e)}async function kd(e){let t=await D.getGroupUsers(e._id);if(!t.length)return 0;let n=await v.tenancy.getGlobalDB().getMultiple(t.map(o=>o._id));return(await v.userUtils.creatorsInList(n)).filter(o=>o).length}async function or(e){let t=[],r=!e._id,n=0;if(delete e.users,!e._id)e._id=D.generateUserGroupID(),await Md(e.name),t.push(v.events.group.created(e));else{let o=await D.get(e._id);if(o.name!==e.name&&await Md(e.name),t.push(v.events.group.updated(e)),JSON.stringify(o.roles)!==JSON.stringify(e.roles)){let i=o.users?.length||0,s=0;i>0&&(s=await kd(o)),Object.values(e.roles).includes(v.roles.BUILTIN_ROLE_IDS.ADMIN)?n=i-s:n=-i,t.push(v.events.group.permissionsEdited(e))}}await Promise.all(t);let a=()=>D.save(e);if(r)return await Jo(a);{let o=await a();if(n>0)await ra(0,n);else if(n<0){let i=await kd(e),s=Math.abs(n)-i;s>0&&await ar(0,s)}return o}}async function rs(e,t){let r;try{r=await D.get(e)}catch{throw new Error("Group not found")}let n=Object.values(r.roles||{}).includes(v.roles.BUILTIN_ROLE_IDS.ADMIN),a=()=>{};if(n){let i=v.tenancy.getGlobalDB(),s=await D.getGroupUsers(e),f=(await Promise.all(s.map(h=>i.get(h._id)))).map(h=>({...h,userGroups:h.userGroups.filter(E=>E!==e)})),g=(await v.userUtils.creatorsInList(f)).filter(h=>h).length,y=s.length-g;y&&(a=()=>ar(0,y))}let o=await D.destroy(e,t);return await v.events.group.deleted(r),await zo(),await a(),o}async function ns(e,t){let r=await D.get(e),n=await v.users.bulkGetGlobalUsersById(t),a=[];for(let c of n)c.userGroups||(c.userGroups=[]),c.userGroups.includes(e)||a.push(c);if(!a.length)return a;let o=a.map(c=>({...c,userGroups:[...c?.userGroups||[],e]}));if(await v.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes(v.roles.BUILTIN_ROLE_IDS.ADMIN)){let f=(await v.userUtils.creatorsInList(a)).filter(g=>g).length,m=a.length-f;m&&await ra(0,m)}let s=[];for(let c of t)s.push(v.cache.user.invalidateUser(c));return await Promise.all(s),await v.events.group.usersAdded(o.length,r),o}async function as(e,t){let r=await D.get(e),n=await v.users.bulkGetGlobalUsersById(t),a=[];for(let s of n){if(!s.userGroups||!s.userGroups.includes(e))continue;let c=s.userGroups.indexOf(e);s.userGroups.splice(c,1),a.push(s)}if(await v.users.bulkUpdateGlobalUsers(a),Object.values(r.roles||{}).includes(v.roles.BUILTIN_ROLE_IDS.ADMIN)){let c=(await v.userUtils.creatorsInList(a)).filter(m=>m).length,f=a.length-c;f&&await ar(0,f)}let i=[];for(let s of t)i.push(v.cache.user.invalidateUser(s));return await Promise.all(i),a.length&&await v.events.group.usersDeleted(a.length,r),a}async function os(e,t){let r=await xt(e);if(r.roles||(r.roles={}),t.appsToAdd)for(let n of t.appsToAdd)r.roles[n.appId]=n.roleId;if(t.appsToRemove)for(let n of t.appsToRemove)delete r.roles[n.appId];return await or(r)}async function rT(e){let t=await pn(),r=[];for(let n of t)!n.roles||!n.roles[e]||(delete n.roles[e],r.push(n));return await D.bulkSave(r)}async function ss(e,t){if(!await vt())throw new Error("Feature not enabled, please check license");let r=v.db.getProdAppID(t),n=await xt(e);n.builder??={apps:[]},n.builder.apps.includes(t)||(n.builder.apps.push(r),await or(n))}async function is(e,t){if(!await vt())throw new Error("Feature not enabled, please check license");let r=v.db.getProdAppID(t),n=await xt(e);n.builder?.apps.includes(t)&&(n.builder.apps=n.builder.apps.filter(a=>a!==r),await or(n))}async function nT(){if(!await $o()){let e=v.tenancy.getGlobalDB(),r=(await pn()||[]).filter(n=>Object.values(n?.roles||{}).includes(v.roles.BUILTIN_ROLE_IDS.ADMIN));for(let n of r){let a=await D.getGroupUsers(n._id),i=(await Promise.all(a.map(m=>e.get(m._id)))).map(m=>({...m,userGroups:m.userGroups.filter(g=>g!==n._id)})),c=(await v.userUtils.creatorsInList(i)).filter(m=>m).length,f=a.length-c;await D.save({...n,roles:{}}),f&&await ar(0,f)}}}cn.users.UserDB.init(ke,G,Se);var Fe=cn.users.UserDB;async function aT(e,t){if(!await vt())throw new Error("Feature not enabled, please check license");await cn.users.addAppBuilder(e,t)}async function oT(e,t){if(!await vt())throw new Error("Feature not enabled, please check license");await cn.users.removeAppBuilder(e,t)}var oa={};S(oa,{logs:()=>ms});var ms={};S(ms,{logSearch:()=>gT,oldestLogDate:()=>zd,storeLog:()=>mT});var Jd=require("@budibase/types"),aa=require("@budibase/backend-core");var pt=require("@budibase/types");var K=require("@budibase/backend-core");var $d=require("@budibase/backend-core");async function Vd(e,t){let r,n=5,a=!1,o,i=!0;for(;n>0;n--)try{i?o=await e():o=await exports.randomDelay(e),a=!0;break}catch(s){r=s}return a||$d.logging.logWarn(`Failed to backoff: ${t}`,r),o}var{SEPARATOR:ze,UNICODE_MAX:sT,DocumentType:Kd,AutomationViewMode:us,ViewName:iT,getQueryIndex:uT}=K.db,pT=new Date(0).toISOString(),cT=100,ps=async()=>Pn(pt.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS);function Yd(e,t,{status:r,automationId:n}={},a={}){let o=n?`${n}${ze}`:"",i=r?`${r}${ze}`:"",s;return r&&n?s=`${us.ALL}${ze}${i}${o}`:r?s=`${us.STATUS}${ze}${i}`:n?s=`${us.AUTOMATION}${ze}${o}`:s=`${Kd.AUTOMATION_LOG}${ze}`,{...a,descending:!0,startkey:`${s}${t}${sT}`,endkey:`${s}${e}`}}function cs(e){let t=pt.AutomationStatus.SUCCESS,r=!0;for(let n of e.steps){let a=n.outputs?.status?.toLowerCase(),o=a==="stopped_error";if(r&&!o){r=!1;continue}if(o){t=pt.AutomationStatus.STOPPED_ERROR;break}else if(n.outputs?.success){if(a==="stopped"){t=pt.AutomationStatus.STOPPED;break}}else{t=pt.AutomationStatus.ERROR;break}}return t}function lT(e,t,r){return`${Kd.AUTOMATION_LOG}${ze}${e}${ze}${r}${ze}${t}`}async function ls(e,t,r={docs:!0}){let n=K.context.getProdAppDB();await n.exists()||(n=K.context.getDevAppDB());let a={status:r.status},o=r?.limit?r.limit:r?.paginate?9+1:void 0,i=Yd(e,t,a,{include_docs:r.docs,limit:o});r?.page&&(i.startkey=r.page);let s=await n.allDocs(i);return Sr(s,{paginate:r?.paginate,pageSize:9})}async function ds(e,t,r={}){let n=K.context.getProdAppDB();await n.exists()||(n=K.context.getDevAppDB());let a;try{let o={automationId:r?.automationId,status:r?.status},i=Yd(e,t,o,{include_docs:!0,limit:9+1});r?.page&&(i.startkey=r.page),a=await n.query(uT(iT.AUTOMATION_LOGS),i)}catch(o){if(o!=null&&(o.name==="not_found"||o.error==="not_found"))return await Su(),ds(e,t,r);throw o}return Sr(a,{paginate:!0,pageSize:9})}async function Hd(e,t){let r=K.context.getProdAppDB(),n=e._id,a=e.name,o=cs(t),i=new Date().toISOString(),s=lT(i,o,n),c={...t,automationId:n,status:o,automationName:a,createdAt:i,_id:s};return await r.put(c),s}async function fs(e,{clearing:t}={clearing:!1}){let r=K.context.getProdAppDB();await Vd(async()=>{let n=await r.get(K.db.DocumentType.APP_METADATA);for(let a of e){let o=a.split(K.db.SEPARATOR),i=`${o[o.length-3]}${K.db.SEPARATOR}${o[o.length-2]}`,s={};n.automationErrors&&(s=n.automationErrors),Array.isArray(s[i])||(s[i]=[]);let c=s[i].indexOf(a);t&&c!==-1?s[i].splice(c,1):s[i].push(a),s[i].length===0&&delete s[i],n.automationErrors=s}await r.put(n),await K.cache.app.invalidateAppMetadata(n.appId,n)},"Failed to update app metadata with automation log error")}async function dT(){let e=await ps();try{return await ls(pT,e,{docs:!1,paginate:!1,limit:cT})}catch{return{data:[],hasNextPage:!1}}}async function gs(){let e=K.context.getProdAppDB();try{let t=await dT();if(!t.data||t.data.length===0)return;let r=t.data.map(a=>({_id:a.id,_rev:a.value.rev,_deleted:!0})),n=t.data.filter(a=>{let o=a.id.split(K.db.SEPARATOR);return o[o.length-1]===pt.AutomationStatus.ERROR}).map(a=>a.id);await e.bulkDocs(r),n.length&&await fs(n,{clearing:!0})}catch(t){K.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}var zd=ps;async function fT(e,t,r,n){let a,o=new Date().toISOString(),i=await zd();return(!e||e<i)&&(e=i),r||t?a=await ds(e,o,{automationId:r,status:t,page:n}):a=await ls(e,o,{status:t,page:n,docs:!0,paginate:!0}),a}async function gT(e){return await gs(),await fT(e.startDate,e.status,e.automationId,e.page)}async function mT(e,t){if(!aa.db.isProdAppID(aa.context.getAppId()))return;let r=cs(t),n=await Hd(e,t);r===Jd.AutomationStatus.ERROR&&await fs([n]),await gs()}var sa={};S(sa,{checkPluginQuotas:()=>hT,deletePlugin:()=>AT,storePlugin:()=>yT});var tf=require("@budibase/types"),j=require("@budibase/backend-core");var Xd=O(require("fs")),Zd=require("path");function ef(e,t){return Xd.default.readFileSync((0,Zd.join)(e,t),"utf8")}async function yT(metadata,directory,source){let db=j.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=j.objectStore.getPluginS3Dir(name),files=await j.objectStore.uploadDirectory(j.objectStore.ObjectStoreBuckets.PLUGINS,directory,bucketPath),jsFile=files.find(e=>e.name.endsWith(".js")),iconFile=files.find(e=>e.name.endsWith(".svg"));if(!jsFile)throw new Error("Plugin missing .js file.");if(metadata.schema.type===tf.PluginType.DATASOURCE){let js=ef(directory,jsFile.name);try{eval(js)}catch(e){let t=e?.message?e.message:JSON.stringify(e);throw new Error(`JS invalid: ${t}`)}}let iconFileName=iconFile?iconFile.name:null,pluginId=j.db.generatePluginID(name),rev;try{rev=(await db.get(pluginId))._rev}catch(e){rev=void 0}let doc={_id:pluginId,_rev:rev,...metadata,name,version,hash,description,source};iconFileName&&(doc.iconFileName=iconFileName),source&&(doc={...doc,source});let write=async()=>{let e=await db.put(doc);return await j.events.plugin.imported(doc),{...doc,_rev:e.rev}};return rev?await write():await Xo(write)}async function AT(e){let t=j.tenancy.getGlobalDB();try{let r=await t.get(e),n=j.objectStore.getPluginS3Dir(r.name);await j.objectStore.deleteFolder(j.objectStore.ObjectStoreBuckets.PLUGINS,n),await t.remove(e,r._rev),await j.events.plugin.deleted(r),await Zo()}catch(r){let n=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${n}`)}}async function hT(){let e=j.tenancy.getGlobalDB();try{let r=(await e.allDocs(j.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await es(r)}catch(t){j.logging.logAlert("Unable to retrieve plugins for quota check",t)}}var Qe={};S(Qe,{fetch:()=>bT,fetchValues:()=>ST,isEncryptionKeyAvailable:()=>IT,isValid:()=>af,remove:()=>vT,update:()=>wT});var ln=require("@budibase/types"),rf=require("@budibase/backend-core");function IT(){return!!rf.env.ENCRYPTION_KEY}async function bT(){let e=await It.get();return Object.keys(e.variables)}async function ST(e){let r=(await It.get()).variables,n={};for(let[a,o]of Object.entries(r))switch(e){case ln.AppEnvironment.DEVELOPMENT:n[a]=o.development;break;case ln.AppEnvironment.PRODUCTION:default:n[a]=o.production;break}return n}async function nf(e){if(!(await Ne.cache.getCachedLicense()).features.includes(ln.Feature.ENVIRONMENT_VARIABLES))throw new Error("User does not have access to environment variables feature.");let r=await It.get();r.variables=e(r.variables),await It.update(r)}async function wT(e,t){if(af(e))await nf(n=>(n[e]=t,n));else throw new Error("Variable name has characters that are not allowed")}async function vT(e){await nf(t=>(delete t[e],t))}function af(e){return/^[a-zA-Z0-9-_]+$/.test(e)}var ct={};S(ct,{definitions:()=>UT,download:()=>LT,fetch:()=>qT,write:()=>OT});var ua=require("@budibase/types");var F=require("@budibase/backend-core"),Oe=require("@budibase/types");var of=require("memorystream"),sf=new F.sql.Sql(Oe.SqlClient.SQL_LITE);async function ET(e,t,r){let n={operation:Oe.Operation.READ,table:Gt.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:Oe.SortOrder.DESCENDING,type:Oe.SortType.STRING}}},a=sf._query(n);if(Array.isArray(a))throw new Error("Cannot execute multiple queries for audit log search");return{sql:a.sql,bindings:a.bindings}}function RT(e){return`${F.DocumentType.AUDIT_LOG}${F.SEPARATOR}${e}${F.SEPARATOR}${F.utils.newid()}`}async function uf(e){e._id||(e._id=RT(e.timestamp)),e.type||(e.type=Oe.AUDIT_LOG_TYPE);try{let r=await F.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){F.logging.logAlert("Failed to write audit log",t)}}async function ys(e,t,r){t||(t=1);let n=F.context.getAuditLogsDB();try{let a=9+1,o=await ET(e,t,a),i=Gt.searchTable(),s=sf.convertJsonStringColumns(i,await n.sql(o.sql,o.bindings)),c;s.length>a&&(c=s.pop());let f={rows:s,hasNextPage:!!c};return f.hasNextPage&&(f.bookmark=t+1),f}catch(a){if(a.status===404&&!r?.isRetry)return await _T(),await lu(),await ys(e,t,{isRetry:!0});throw a}}async function _T(){let e=F.context.getAuditLogsDB(),r=(await e.allDocs(F.db.getDocParams(F.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(n=>n.doc).filter(n=>n&&!n.type).map(n=>({...n,type:Oe.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}function pf(e){let t=F.context.getAuditLogsDB(),r=new of,n=t.dump(r,{filter:o=>{let i=o;if(!i._id?.startsWith(F.DocumentType.AUDIT_LOG))return!1;let s=!0,c=(f,m)=>{!f||f.length===0||(s=!!(s&&m&&f.includes(m)))};if(c(e.userIds,i.userId),c(e.appIds,i.appId),c(e.events,i.event),(e.startDate||e.endDate)&&(s=s&&i.timestamp>=e.startDate&&i.timestamp<=e.endDate),e.fullSearch){let f=JSON.stringify(o);s=s&&f.includes(e.fullSearch)}return s}}),a=new of;return r.on("data",o=>{let i=JSON.parse(Buffer.from(o).toString());if(Array.isArray(i.docs)){let s="";for(let c of i.docs)s+=JSON.stringify(c)+`
|
|
38
|
+
`;a.write(s)}}),r.on("end",()=>{a.end()}),{promise:n,stream:a}}var ae=require("@budibase/backend-core");var ia=require("@budibase/types"),dn=require("@budibase/string-templates"),fn=require("@budibase/backend-core"),TT=fn.constants.MIN_VALID_DATE.toISOString(),PT=fn.constants.MAX_VALID_DATE.toISOString();function As(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||TT,e.endDate=e.endDate||PT),e}async function cf(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(n=>fn.db.getProdAppID(n)));let t={};function r(n,a){a?.length&&(t.oneOf={...t.oneOf,[n]:a})}return r("userId",e.userIds),r("appId",e.appIds),r("event",e.events),e.fullSearch&&(t.fuzzyOr=!0,t.fuzzy={name:e.fullSearch,fallback:e.fullSearch}),(e.startDate||e.endDate)&&(e=As(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}function hs(e,t,r){let n={_id:e,status:ia.AuditLogResourceStatus.DELETED};switch(t){case"app":n.name=r?.appName;break;case"user":n.email=r?.email;break}return n}function Is(e){let t=(0,dn.findHBSBlocks)(e);for(let r of t){let n=` "${r}"`;e=e.replace(e.includes(n)?n:` ${r}`,""),e=(0,dn.processStringSync)(e,{})}return e}function lf(e,t){let r=ia.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let n=(0,dn.processStringSync)(r,t);return n.includes('""')&&(n=Is(r)),n}async function OT(e,t,r){if(!await Zn()||!ae.utils.isAudited(e))return;let n=lf(e,t),a=new Date;r?.timestamp&&(a=new Date(r.timestamp));let o={timestamp:a.toISOString(),event:e,name:n,userId:r?.userId||ua.AuditLogSystemUser,metadata:{...t,...r?.hostInfo}},i={};try{if(r?.appId){o.appId=ae.db.getProdAppID(r.appId);let s=await ae.cache.app.getAppMetadata(r.appId);"name"in s&&(i.appName=s.name)}if(r?.userId){let s=await ae.users.getById(r?.userId);i.email=s.email}}catch(s){ae.logging.logAlert("Failed to retrieve fallback information for audit log",s)}return o.fallback=i,await uf(o)}async function CT(e){let t=e.map(s=>s.userId),n=e.filter(s=>s.appId).map(s=>ae.db.getDevAppID(s.appId)),a=await ae.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),o=await ae.db.getAppsByIDs([...new Set(n)]),i=[];for(let s of e){let c=a.find(g=>g?._id===s.userId),f=o.find(g=>ae.db.isSameAppID(g?.appId,s.appId)),m={event:s.event,timestamp:s.timestamp,name:s.name,metadata:s.metadata,user:c||hs(s.userId,"user",s.fallback)};s.appId&&(m.app=f||hs(s.appId,"app",s.fallback)),i.push(m)}return i}async function qT(e){if(!await Zn())throw new Error("Audit logs not available - license required.");let t=await cf(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await ys(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await CT(r.rows)}}function LT(e){return e=As(e),pf(e)}function UT(){let e=Object.entries(ua.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=Is(r[1]);return t}var pa={};S(pa,{applications:()=>vs,roles:()=>Ss,users:()=>bs});var bs={};S(bs,{roleCheck:()=>BT});function DT(e,t){let r=e.request.body;return r.builder&&(r.builder=t?.builder||void 0),r.admin&&(r.admin=t?.admin||void 0),r.roles&&(r.roles=t?.roles||{}),e.request.body=r,e}async function BT(e,t){return await He()||DT(e,t),e}var Ss={};S(Ss,{assign:()=>NT,unAssign:()=>GT});var gn=require("@budibase/backend-core");async function NT(e,t){if(!await He())throw new Error("Unable to assign roles - license required.");let r=await Fe.bulkGet(e);for(let n of r){if(t.role&&t.role.roleId){let a=gn.db.getProdAppID(t.role.appId);n.roles[a]=t.role.roleId}if(t.appBuilder){let a=gn.db.getProdAppID(t.appBuilder.appId),o=n.builder?.apps||[];n.builder={apps:o.concat([a])}}t.builder&&(n.builder={global:!0}),t.admin&&(n.admin={global:!0}),n.roles}await Fe.bulkUpdate(r)}async function GT(e,t){if(!await He())throw new Error("Unable to un-assign roles - license required.");let r=await Fe.bulkGet(e);for(let n of r){if(t.role){let a=gn.db.getProdAppID(t.role?.appId);n.roles[a]===t.role.roleId&&delete n.roles[a]}if(t.appBuilder&&n.builder?.apps){let a=gn.db.getProdAppID(t.appBuilder.appId);n.builder.apps=n.builder.apps.filter(o=>o!==a)}t.builder&&n.builder&&delete n.builder,t.admin&&n.admin&&delete n.admin}}var vs={};S(vs,{buildExportFn:()=>kT,buildImportFn:()=>MT});var ws=require("@budibase/backend-core");function MT(e){return async(t,r)=>{await He()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await ws.context.doInAppContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}function kT(e){return async(t,r)=>{await He()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:n,excludeRows:a}=t.request.body;await ws.context.doInAppContext(t.params.appId,async()=>{t.request.body={encryptPassword:n,excludeRows:a},t.query.appId=t.params.appId,await e(t),await r()})}}var je=require("@budibase/backend-core"),ne=require("@budibase/types");var Es=require("@budibase/backend-core"),df;function ff(){df=new Es.queue.BudibaseQueue(Es.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}function Tt(){return df}var gf=require("path"),mf=O(require("fs"));async function Rs(e,t={}){return Ie.storeAppBackupMetadata(e,t)}function yf(e){let t=new Date().toISOString();switch(e){case ne.AppBackupStatus.COMPLETE:case ne.AppBackupStatus.FAILED:return{timestamp:t,finishedAt:t};case ne.AppBackupStatus.STARTED:return{timestamp:t,startedAt:t};case ne.AppBackupStatus.PENDING:return{timestamp:t,createdAt:t}}}async function FT(e,t,r,n){let a=await ca(e);return await Ie.storeAppBackupMetadata({...a,...yf(t),contents:r,status:t,type:ne.AppBackupType.BACKUP},{filename:n,docId:e})}async function QT(e,t,r){let n=await ca(e);return await Ie.storeAppBackupMetadata({...n,...yf(r),status:r,type:ne.AppBackupType.RESTORE,trigger:ne.AppBackupTrigger.MANUAL},{docId:e,docRev:t})}async function ca(e){return Ie.getAppBackupMetadata(e)}async function jT(e,t){return Ie.updateAppBackupMetadata(e,t)}async function WT(e){let t=await Ie.getAppBackupMetadata(e);return t.filename&&await je.objectStore.deleteFile(je.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),Ie.deleteAppBackupMetadata(e)}async function $T(e,t){return Ie.fetchAppBackups(e,t)}async function Af(e){let t=await Ie.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let r=await je.objectStore.getReadStream(je.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}async function VT(e){let{stream:t}=await Af(e),r=(0,gf.join)(je.objectStore.budibaseTempDir(),je.utils.newid()),n=mf.default.createWriteStream(r);return new Promise((a,o)=>{t.on("error",o),n.on("error",o),t.pipe(n).on("close",()=>a(r))})}async function KT(e,t,r={}){let n;try{n=await Rs({appId:e,trigger:t,timestamp:new Date().toISOString(),status:ne.AppBackupStatus.PENDING,type:ne.AppBackupType.BACKUP,...r})}catch(a){if(a.status===409)return;throw a}return await Tt().add({docId:n.id,docRev:n.rev,appId:e,export:{trigger:t,...r}}),await je.events.backup.appBackupTriggered(e,n.id,ne.AppBackupType.BACKUP,t,r?.name),n.id}async function YT(e,t,r,n){let a=await ca(t),o;try{o=await Rs({appId:e,timestamp:new Date().toISOString(),status:ne.AppBackupStatus.PENDING,type:ne.AppBackupType.RESTORE,createdBy:n})}catch(i){if(i?.status===409)return;throw i}return await Tt().add({appId:e,docId:o.id,docRev:o.rev,import:{nameForBackup:r,backupId:t,createdBy:n}}),{restoreId:o.id,metadata:a}}var HT={isEnabled:jo,triggerAppRestore:le(YT),triggerAppBackup:le(KT),getBackupDownloadStream:le(Af),downloadAppBackup:le(VT),fetchAppBackups:le($T),storeAppBackupMetadata:le(Rs),updateBackupStatus:le(FT),updateRestoreStatus:le(QT),getAppBackup:le(ca),updateAppBackup:le(jT),deleteAppBackup:le(WT)},Xe=HT;var xs={};S(xs,{init:()=>_s});var W=require("@budibase/backend-core");var Ce=require("@budibase/types");var sr=O(require("fs"));async function _s(e){Tt().process(async t=>{let r=t.data;try{if(r.export)return XT(t,e);if(r.import)return zT(t,e)}catch(n){W.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,n)}})}async function JT(e){await W.db.getDB(e,{skip_setup:!0}).destroy()}async function hf(e,t,r,n){let a=W.db.getDevAppID(r),o=W.db.getProdAppID(r),i=new Date().toISOString(),s=async(c,f)=>{n?.doc?await Xe.updateBackupStatus(n.doc.id,c,f?.contents,f?.filename):await Xe.storeAppBackupMetadata({appId:o,timestamp:i,trigger:e,status:c,name:n?.name,type:Ce.AppBackupType.BACKUP,contents:f?.contents,createdBy:n?.createdBy},{filename:f?.filename})};try{let c=await n.processing.exportAppFn(a,{tar:!0}),f=await n.processing.statsFn(a),m=`${o}/backup-${i}.tar.gz`,g=W.objectStore.ObjectStoreBuckets.BACKUPS,y=sr.default.createReadStream(c);await W.objectStore.streamUpload({bucket:g,filename:m,stream:y,extra:{type:"application/gzip",metadata:{name:n?.name,trigger:e,timestamp:i,appId:o}}}),await s(Ce.AppBackupStatus.COMPLETE,{filename:m,contents:f}),sr.default.existsSync(c)&&sr.default.rmSync(c)}catch(c){W.logging.logAlert("App backup error",c),await s(Ce.AppBackupStatus.FAILED)}}async function zT(e,t){let r=e.data,n=r.appId,a=r.import.backupId,o=r.import.nameForBackup,i=r.import.createdBy,s=W.tenancy.getTenantIDFromAppID(n);return W.tenancy.doInTenant(s,async()=>{let c=W.db.getDevAppID(n),{rev:f}=await Xe.updateRestoreStatus(r.docId,r.docRev,Ce.AppBackupStatus.STARTED);await hf(Ce.AppBackupTrigger.RESTORING,s,n,{processing:t,createdBy:i,name:o});let m=await Xe.downloadAppBackup(a);await JT(c);let g=Ce.AppBackupStatus.COMPLETE;try{await t.importAppFn(c,W.db.getDB(c),{file:{type:"application/gzip",path:m},key:m})}catch(y){W.logging.logAlert("App restore error",y),g=Ce.AppBackupStatus.FAILED}await Xe.updateRestoreStatus(r.docId,f,g),sr.default.existsSync(m)&&sr.default.rmSync(m,{force:!0})})}async function XT(e,t){let r=e.data,n=r.appId,a=r.export.trigger,o=r.export.name,i=W.tenancy.getTenantIDFromAppID(n);await W.tenancy.doInTenant(i,async()=>{try{let{rev:s}=await Xe.updateBackupStatus(r.docId,Ce.AppBackupStatus.STARTED);return hf(a,i,n,{processing:t,doc:{id:r.docId,rev:s},name:o})}catch(s){W.logging.logAlert("App backup error",s)}})}var ZT=async e=>{ff(),await _s(e.processing)},we={...Xe,processing:xs,init:ZT,getBackupQueue:Tt};var If=async e=>{e.backups&&await we.init(e.backups)};var se={};S(se,{create:()=>VN,find:()=>$N,get:()=>WN,remove:()=>YN,update:()=>KN});var FA=O(wi()),Ze=require("@budibase/backend-core");var QA=require("@budibase/types");async function WN(e){let t=Ze.tenancy.getGlobalDB(),r=new Ze.db.QueryBuilder(t.name,QA.SearchIndex.USER);r.setIndexBuilder(Ze.db.searchIndexes.createUserIndex),r.setLimit(e.pageSize),r.addEqual("scimInfo.isSync",!0);for(let[a,o]of Object.entries(e.filters?.equal??{}))r.addEqual(a,o);r.setSort("_id"),r.setSkip(e.skip);let n=await r.run();return{users:n.rows,total:n.totalRows}}async function $N(e){return await Ze.users.getById(e)}async function VN(e){let t=await Fe.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new Ze.HTTPError("User is already synched",409);e={...t,scimInfo:(0,FA.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await Fe.save(e,{requirePassword:!1})}async function KN(e,t){return await Fe.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}async function YN(e){return await Fe.destroy(e)}var dr={};S(dr,{create:()=>HN});var jA=O(wi());var WA=require("@budibase/backend-core");async function HN(e){let t=await Ya(e.name),r;if(!t)r=(await G.save(e)).id;else{if(t.scimInfo?.isSync)throw new WA.HTTPError("Group is already synched",409);r=t._id,t.users&&(await G.removeUsers(r,t.users.map(a=>a._id)),delete t.users),t.scimInfo=(0,jA.default)(t.scimInfo,e.scimInfo),await G.save(t)}return await G.get(r)}var Ot={};S(Ot,{logRequest:()=>JN,logResponse:()=>zN});var vi=require("@budibase/backend-core");async function JN(e){vi.logging.logWarn("SCIM request log",e)}async function zN(e){vi.logging.logWarn("SCIM response error",e)}var Ti={};S(Ti,{doInScimContext:()=>Ri,feature:()=>M,internalGroupOnly:()=>Ra,licensing:()=>$A,requireSCIM:()=>_i,scimGroupOnly:()=>hn,scimUserOnly:()=>An});var lt=require("@budibase/backend-core");var va=require("@budibase/types"),XN=(e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(lt.env.SELF_HOSTED&<.env.DEFAULT_LICENSE)return t.user.license=Ja,r();t.user.license=await Ne.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(lt.utils.isServingApp(t)||lt.utils.isServingBuilder(t)||lt.utils.isServingBuilderPreview(t)||lt.utils.isPublicApiRequest(t))&&await ke.usageLimitIsExceeded(va.StaticQuotaName.USERS,va.QuotaUsageType.STATIC)}return r()},$A=XN;var M={};S(M,{requireFeature:()=>ZN,requireFeatures:()=>eG});var ZN=e=>async(t,r)=>{await Xn(e),await r()},eG=(...e)=>async(t,r)=>{await Qo(e),await r()};var Ea=require("@budibase/backend-core");var Ri=async(e,t)=>(Ea.env.DISABLE_SCIM_CALLS||await Ot.logRequest({...e.request.toJSON(),body:e.request.body}),await Ea.context.doInScimContext(async()=>{let r=await t();return await Ot.logResponse({...e.response.toJSON(),body:e.response.body}),r}));var _i=async(e,t)=>{await Vo(),await t()};var VA=require("@budibase/backend-core");var An=e=>xi(VA.users.getById,e,!0),hn=e=>xi(D.get,e,!0),Ra=e=>xi(D.get,e,!1);function xi(e,t,r){return async(n,a)=>{let o=n.params[t];return typeof o!="string"&&n.throw(404),!!(await e(o)).scimInfo?.isSync!==r&&n.throw(404),a()}}var $i={};S($i,{ai:()=>ih,appBackups:()=>Vh,auditLogs:()=>Bh,environmentVariables:()=>Th,groups:()=>Ih,scim:()=>wI,users:()=>xI});var Ui=require("@budibase/types");var Li={};S(Li,{getLLM:()=>Pa});var We=require("@budibase/backend-core"),th=require("@budibase/types");var Ci=O(require("openai"));var dt=require("@budibase/types");var ie=class e{constructor(t){this.messages=t}user(t){return this.messages.push({role:"user",content:t}),this}system(t){return this.messages.push({role:"system",content:t}),this}static user(t){return new e([{role:"user",content:t}])}static system(t){return new e([{role:"system",content:t}])}static fromRequest(t){return new e(t.messages)}};function Pi(e){return ie.user(`Summarize this text:
|
|
39
39
|
${e}.
|
|
40
|
-
Only return the summary.`)}function
|
|
41
|
-
${e}`)}function
|
|
40
|
+
Only return the summary.`)}function KA(e,t){return ie.user(`Return the category of this text: "${e}". Based on these categories: ${t.join(", ")}. Only return the category.`)}function YA(e){return ie.user(`Clean the following string: "${e}". Remove any spelling mistakes or data issues. Only return the cleaned string itself and nothing else.`)}function HA(e){return ie.user(`Generate a node-cron compatible expression based on the following prompt. Return only the cron expression (without backticks), and if not possible return only 'Error generating cron' with a short explanation:
|
|
41
|
+
${e}`)}function JA(e,t){return ie.user(`Translate the following text: "${e}" into ${t}. Only return the translation.`)}function zA(e){return ie.user(`Return the sentiment of this text: "${e}". Only return the sentiment.`)}function XA(e){return ie.user(`Search the web for the following: "${e}". Only return the top results.`)}function ZA(e,t){let r="You do not have access to any bindings in this request.";e&&e.length>0&&(r=`The bindings you have access to are:
|
|
42
42
|
|
|
43
|
-
${e.map(({readableBinding:
|
|
44
|
-
`)}`);let
|
|
43
|
+
${e.map(({readableBinding:a})=>`- $("${a}")`).join(`
|
|
44
|
+
`)}`);let n="You do not have access to any snippets in this request.";return t.length>0&&(n=`The snippets you have access to are:
|
|
45
45
|
|
|
46
|
-
${t.map(({name:
|
|
47
|
-
`)}`),
|
|
46
|
+
${t.map(({name:a,code:o})=>{let i=o.replace(/^\s*return /g,"");return`- snippets.${a} = ${i.trim()}`}).join(`
|
|
47
|
+
`)}`),ie.system(`
|
|
48
48
|
You are a helpful expert in writing JavaScript. A user is asking you for help
|
|
49
49
|
writing some JavaScript for their application.
|
|
50
50
|
|
|
@@ -131,6 +131,6 @@ This is incorrect because it references an undefined variable "amount". It is
|
|
|
131
131
|
important that you never reference a variable that is not defined. If you need
|
|
132
132
|
a variable, it will be provided to you as a binding.
|
|
133
133
|
|
|
134
|
-
${
|
|
134
|
+
${n}
|
|
135
135
|
|
|
136
|
-
${r}`)}var $A=require("@budibase/shared-core");function wi(e,t){return t.map(r=>e[r]).join(" ")}var pr=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=we.user(t));let r=await this.chatCompletion(t);return this.measureUsage&&r.tokensUsed!==void 0&&r.tokensUsed>0&&await Ko(r.tokensUsed),r}async summarizeText(t){return this.prompt(Si(t))}async generateCronExpression(t){return this.prompt(kA(t))}async operation(t,r){let a=this.promptForOperation(t,r);return this.prompt(a)}promptForOperation(t,r){let{operation:a,column:n,columns:o,language:i,categories:s,prompt:c}=t;switch(a){case ct.AIOperationEnum.SUMMARISE_TEXT:return Si(wi(r,o));case ct.AIOperationEnum.CLEAN_DATA:return MA(r[n]);case ct.AIOperationEnum.TRANSLATE:return FA(r[n],i);case ct.AIOperationEnum.CATEGORISE_TEXT:if(!s)throw Error("No categories provided for categorise text operation. Please provide categories.");return GA(wi(r,o),s.split(","));case ct.AIOperationEnum.SENTIMENT_ANALYSIS:return QA(r[n]);case ct.AIOperationEnum.PROMPT:return c;case ct.AIOperationEnum.SEARCH_WEB:return jA(wi(r,o));default:throw $A.utils.unreachable(a)}}async generateJs(t,r){let{bindings:a=[],snippets:n=[]}=r||{};return await this.prompt(WA(a,n).user(t))}};var _t=class extends pr{constructor({model:r,apiKey:a,measureUsage:n}){super({model:r,apiKey:a,measureUsage:n});this.client=new vi.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}),n=this.measureTokenUsage(a.usage);return{message:a.choices[0]?.message.content,tokensUsed:n}}catch(a){throw a instanceof vi.default.APIError&&console.error(`OpenAI Prompt failed with error of type ${a.type} and status: ${a.status}:${a.code} - ${a.message}`),a}}};var Ei=O(require("@anthropic-ai/sdk"));var xn=class extends pr{constructor(r){super(r);this.client=new Ei.default({apiKey:r.apiKey})}firstTextBlock(r){for(let a of r.content)if(a.type==="text")return a.text}async chatCompletion(r){try{let a=await this.client.messages.create({model:this.model,messages:r.messages.map(({content:o})=>({role:"user",content:o})),max_tokens:this.maxTokens});return{message:this.firstTextBlock(a)}}catch(a){throw a instanceof Ei.default.APIError&&console.error(`Anthropic Prompt failed with error ${a.name} and status: ${a.status}`),a}}};var zN="gpt-4o-mini",JN={OpenAI:_t,Anthropic:xn,TogetherAI:_t,AzureOpenAI:_t,Custom:_t};function XN(e){for(let t in e)if(e[t].isDefault)return e[t]}async function ma(e){let t=await VA.configs.getAIConfig(),r=await aa();if(!t&&!r)return;t||(t={type:KA.ConfigType.AI,config:{}});let a=await ko(t),n=XN(a.config);if(!n)return;if(!n.apiKey)throw Error("No API key provided for Budibase AI. Please provide an API key.");let o={model:e||n.defaultModel||zN,apiKey:n.apiKey,measureUsage:n.isBudibaseAI===!0},i=JN[n.provider];if(i)return new i(o)}var ya=require("@budibase/backend-core"),ZN=/```(?:\w+)?\n([\s\S]+?)\n```/;async function HA(e){let{prompt:t}=e.request.body,r=await ma();r||e.throw(500,"AI config not found");let{message:a}=await r.generateCronExpression(t);a?.startsWith("Error generating cron:")?e.throw(400,a):e.body={message:a}}async function zA(e){await ya.features.isEnabled(YA.FeatureFlag.AI_JS_GENERATION)||e.throw(500,"AI JS generation is disabled");let t=await ma();t||e.throw(500,"AI config not found"),await ya.context.ensureSnippetContext();let a=ya.context.getCurrentContext()?.snippets||[],{prompt:n,bindings:o=[]}=e.request.body,i=(await t.generateJs(n,{bindings:o,snippets:a})).message||"",s=i.match(ZN);s&&(i=s[1]),e.body={code:i}}var JA=require("@budibase/types"),XA=O(require("@koa/router")),xi=require("@budibase/backend-core"),_i=new XA.default;_i.post("/api/ai/cron",N.requireFeature(JA.Feature.BUDIBASE_AI),xi.auth.builderOrAdmin,HA);_i.post("/api/ai/js",xi.auth.builderOrAdmin,zA);var ZA=_i;async function eh(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let a=await vt(t._id);t.roles=a.roles,t.scimInfo=a.scimInfo}let r=await tr(t);e.body={_id:r.id,_rev:r.rev}}async function th(e){let t=e.params.groupId,r=e.request.body.add,a=e.request.body.remove;(r&&!Array.isArray(r)||a&&!Array.isArray(a))&&e.throw(400,"Must supply a list of users to add or to remove");let n,o;r&&(n=await Ho(t,r)),a&&(o=await zo(t,a)),e.body={added:n,removed:o}}async function rh(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 Jo(t,{appsToAdd:r,appsToRemove:a})}async function ah(e){e.body={data:await oa()}}async function nh(e){let{groupId:t,rev:r}=e.params;try{await Yo(t,r),e.body={message:"Group deleted successfully"}}catch(a){e.throw(a.status,a)}}async function oh(e){try{e.body=await vt(e.params.groupId)}catch(t){e.throw(t.status,t)}}async function sh(e){let{pageSize:t=10,bookmark:r,emailSearch:a}=e.request.query,n=e.params.groupId,o={limit:t+1},i=await Ra(n,{...o,emailSearch:a,bookmark:r}),s=a?i[t]?.email:i[t]?._id,c=!!s;e.body={users:i.slice(0,t),bookmark:s,hasNextPage:c}}async function ih(e){let{groupId:t,appId:r}=e.params;await Xo(t,r),e.body={message:"Group app builder access updated."}}async function uh(e){let{groupId:t,appId:r}=e.params;await Zo(t,r),e.body={message:"group app builder access removed."}}var ph=O(require("@koa/router")),ge=O(require("joi"));var ve=require("@budibase/types"),We=require("@budibase/backend-core"),ch=new ph.default;function rG(){return We.auth.joiValidator.body(ge.default.object({_id:ge.default.string().optional(),_rev:ge.default.string().optional(),color:ge.default.string().required(),icon:ge.default.string().required(),name:ge.default.string().trim().required().max(50),role:ge.default.string().optional(),users:ge.default.array().optional(),apps:ge.default.array().optional(),roles:ge.default.object().optional(),createdAt:ge.default.string().optional(),updatedAt:ge.default.string().optional()}).required())}ch.post("/api/global/groups",We.auth.adminOnly,N.requireFeature(ve.Feature.USER_GROUPS),rG(),eh).get("/api/global/groups",N.requireFeature(ve.Feature.USER_GROUPS),ah).delete("/api/global/groups/:groupId/:rev",N.requireFeature(ve.Feature.USER_GROUPS),We.auth.adminOnly,Rn("groupId"),nh).get("/api/global/groups/:groupId",N.requireFeature(ve.Feature.USER_GROUPS),We.auth.builderOrAdmin,oh).get("/api/global/groups/:groupId/users",N.requireFeature(ve.Feature.USER_GROUPS),We.auth.builderOrAdmin,sh).post("/api/global/groups/:groupId/users",We.auth.adminOnly,N.requireFeature(ve.Feature.USER_GROUPS),Rn("groupId"),th).post("/api/global/groups/:groupId/apps",We.auth.builderOrAdmin,N.requireFeature(ve.Feature.USER_GROUPS),rh).post("/api/global/groups/:groupId/app/:appId/builder",We.auth.builderOrAdmin,N.requireFeatures(ve.Feature.USER_GROUPS,ve.Feature.APP_BUILDERS),ih).delete("/api/global/groups/:groupId/app/:appId/builder",We.auth.builderOrAdmin,N.requireFeatures(ve.Feature.USER_GROUPS,ve.Feature.APP_BUILDERS),uh);var lh=ch;var Ti=require("@budibase/types");var Pi=require("@budibase/backend-core");async function dh(e){e.body={encryptionKeyAvailable:Qe.isEncryptionKeyAvailable()}}async function fh(e){e.body={variables:await Qe.fetch()}}async function gh(e){let{name:t,production:r,development:a}=e.request.body;await Qe.update(t,{production:r,development:a});let n=[Ti.AppEnvironment.PRODUCTION];r!==a&&n.push(Ti.AppEnvironment.DEVELOPMENT),await Pi.events.environmentVariable.created(t,n),e.body={message:`Environment variable "${t}" created.`}}async function mh(e){let{production:t,development:r}=e.request.body,a=e.params.varName;await Qe.update(a,{production:t,development:r}),e.body={message:`Environment variable "${a}" updated.`}}async function yh(e){let t=e.params.varName;await Qe.remove(t),await Pi.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}var Tt=require("@budibase/backend-core"),hh=O(require("@koa/router")),Aa=O(require("joi")),bh=new hh.default;function Ah(){return Tt.auth.joiValidator.body(Aa.default.object({name:Aa.default.string().optional(),production:Aa.default.string().required(),development:Aa.default.string().required()}))}bh.get("/api/env/variables/status",Tt.auth.builderOrAdmin,dh).get("/api/env/variables",Tt.auth.builderOrAdmin,fh).post("/api/env/variables",Tt.auth.builderOrAdmin,Ah(),gh).patch("/api/env/variables/:varName",Tt.auth.builderOrAdmin,Ah(),mh).delete("/api/env/variables/:varName",Tt.auth.builderOrAdmin,yh);var Ih=bh;var Oi=require("@budibase/backend-core");async function Sh(e){let t=e.request.body,r=await ut.fetch(t);await Oi.events.auditLog.filtered(t),e.body=r}async function wh(e){let t=e.request.body,{stream:r}=ut.download(t);await Oi.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}async function vh(e){e.body={events:ut.definitions()}}var Rh=require("@budibase/types"),Pt=require("@budibase/backend-core"),xh=O(require("@koa/router")),Ee=O(require("joi"));function Eh(){return Pt.auth.joiValidator.body(Ee.default.object({userIds:Ee.default.array().items(Ee.default.string()).optional(),appIds:Ee.default.array().items(Ee.default.string()).optional(),events:Ee.default.array().items(Ee.default.string().valid(...Object.values(Rh.Event))).optional(),startDate:Ee.default.string().optional().allow(""),endDate:Ee.default.string().optional().allow(""),fullSearch:Ee.default.string().optional().allow(""),bookmark:Ee.default.number()}))}var _h=new xh.default;_h.post("/api/global/auditlogs/search",Pt.auth.adminOnly,Eh(),Sh).get("/api/global/auditlogs/download",Pt.auth.adminOnly,Pt.middleware.querystringToBody,Eh(),wh).get("/api/global/auditlogs/definitions",Pt.auth.adminOnly,vh);var Th=_h;var Ci=require("@budibase/types");var Ph=require("@budibase/backend-core");async function cr(e,t){await Nt.appExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}async function Oh(e){let t=e.params.appId;await cr(e,t);let r=e.request.body,a=e.user?._id,n=await Se.triggerAppBackup(t,Ci.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 Ch(e){let t=e.params.appId;await cr(e,t);let r=e.params.backupId,a=e.request.body.name,n=await Se.triggerAppRestore(t,r,a,e.user?._id);n||e.throw(500,"Unable to start restore."),await Ph.events.backup.appBackupRestored(n.metadata),e.body={restoredId:n?.restoreId,message:"Restore triggered - process starting."}}async function qh(e){let t=e.params.appId;await cr(e,t);let r=e.params.backupId;await Se.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}async function Uh(e){let t=e.params.appId;await cr(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(Ci.AppBackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await Se.fetchAppBackups(t,{paginate:!0,...r})}async function Lh(e){let t=e.params.appId;await cr(e,t);let r=e.params.backupId,a=e.request.body;e.body=await Se.updateAppBackup(r,a.name)}async function Dh(e){let t=e.params.appId;await cr(e,t);let r=e.params.backupId,{metadata:a,stream:n}=await Se.getBackupDownloadStream(r);e.attachment(`backup-${a.timestamp}.tar.gz`),e.body=n}var Bh=O(require("@koa/router")),Ot=O(require("joi")),_n=require("@budibase/types"),lt=require("@budibase/backend-core"),Nh=new Bh.default;function sG(){return lt.auth.joiValidator.body(Ot.default.object({trigger:Ot.default.string().valid(...Object.values(_n.AppBackupTrigger)),type:Ot.default.string().valid(...Object.values(_n.AppBackupType)),startDate:Ot.default.date(),endDate:Ot.default.date(),page:Ot.default.string()}))}Nh.post("/api/apps/:appId/backups",lt.auth.builderOrAdmin,Oh).post("/api/apps/:appId/backups/search",lt.auth.builderOrAdmin,sG(),Uh).get("/api/apps/:appId/backups/:backupId/file",lt.auth.builderOrAdmin,Dh).patch("/api/apps/:appId/backups/:backupId",lt.auth.builderOrAdmin,Lh).delete("/api/apps/:appId/backups/:backupId",lt.auth.builderOrAdmin,qh).post("/api/apps/:appId/backups/:backupId/import",lt.auth.builderOrAdmin,Ch);var Gh=Nh;var gb=O(require("@koa/router"));var Tn=require("scim-patch");var kh=require("@budibase/backend-core");function Mh(e,t){let r=e.request.query[t];if(r!==void 0)return+r}var Fh=async e=>{let t=Mh(e,"pageSize")??20,r=Mh(e,"startIndex"),a;e.request.query.filter&&(a=Q.user.userFilters(e.request.query.filter));let n=await se.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(Q.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},Qh=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)},jh=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 kh.EmailUnavailableError&&e.throw(409,"Email already in use"),r}};function iG(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 Wh=async e=>{let t=await se.find(e.params.id);t||e.throw(404);let r=Q.user.toScimUserResponse(t),a=e.request.body;try{(0,Tn.patchBodyValidation)(a)}catch{}if(iG(a))return qi(e);let n;try{n=(0,Tn.scimPatch)(r,a.Operations)}catch{}n||e.throw(500);let o=Q.user.fromScimUser(n);await se.update(o,{allowChangingEmail:!0}),e.body=Q.user.toScimUserResponse(o)},qi=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await se.remove(t),e.status=204};var ob=O(nb()),sb=require("@budibase/shared-core"),Pn=require("scim-patch");var On=require("scim2-parse-filter");function ib(e,t){for(let r of t.split(","))delete e[r]}var ub=async e=>{let r=(await M.fetch()).filter(o=>o.scimInfo?.isSync).map(Q.group.toScimGroupResponse),{filter:a,excludedAttributes:n}=e.request.query;if(a){let o=(0,On.filter)((0,On.parse)(a));r=r.filter(o)}n&&r.forEach(o=>{ib(o,n)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},pb=async e=>{let t=Q.group.fromScimGroup(e.request.body),r=await ur.create(t);e.body=Q.group.toScimGroupResponse(r)},cb=async e=>{let{id:t}=e.params,r=await M.get(t),a=Q.group.toScimGroupResponse(r),{excludedAttributes:n}=e.request.query;n&&ib(a,n),e.body=a},lb=async e=>{let{id:t}=e.params,r=await M.get(t);await M.remove(t,r._rev),e.status=204},fb=async e=>{let{id:t}=e.params,r=await M.get(t),a=Q.group.toScimGroupResponse(r),n=e.request.body;try{(0,Pn.patchBodyValidation)(n)}catch{e.throw(400)}let{true:o,false:i}=(0,ob.default)(n.Operations,s=>s.path==="members");if(i?.length){let s=(0,Pn.scimPatch)(a,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:sb.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 ha=require("@budibase/types"),me=new gb.default({prefix:"/api/global/scim/v2"});me.use(hi);me.use(Ai);me.get("/users",Fh);me.get("/users/:id",fa("id"),Qh);me.post("/users",jh);me.patch("/users/:id",fa("id"),Wh);me.delete("/users/:id",fa("id"),qi);me.get("/groups",ub);me.post("/groups",N.requireFeature(ha.Feature.USER_GROUPS),pb);me.get("/groups/:id",N.requireFeature(ha.Feature.USER_GROUPS),ga("id"),cb);me.delete("/groups/:id",N.requireFeature(ha.Feature.USER_GROUPS),ga("id"),lb);me.patch("/groups/:id",N.requireFeature(ha.Feature.USER_GROUPS),ga("id"),fb);var mb=me;var hb=O(require("@koa/router"));var Ui=require("@budibase/backend-core");async function yb(e){let{userId:t,appId:r}=e.params,a=await Ye.db.getUser(t);if(Ui.users.isGlobalBuilder(a)){e.body={message:"User already admin - no permissions updated."};return}await Ye.addAppBuilder(a,r),e.body={message:`User "${a.email}" app builder access updated.`}}async function Ab(e){let{userId:t,appId:r}=e.params,a=await Ye.db.getUser(t);if(Ui.users.isGlobalBuilder(a)){e.body={message:"User already admin - no permissions removed."};return}await Ye.removeAppBuilder(a,r),e.body={message:`User "${a.email}" app builder access removed.`}}var Li=require("@budibase/types"),Di=require("@budibase/backend-core"),bb=new hb.default;bb.post("/api/global/users/:userId/app/:appId/builder",Di.auth.builderOrAdmin,N.requireFeatures(Li.Feature.APP_BUILDERS),yb).delete("/api/global/users/:userId/app/:appId/builder",Di.auth.builderOrAdmin,N.requireFeatures(Li.Feature.APP_BUILDERS),Ab);var Ib=bb;var Q={};S(Q,{group:()=>Gi,user:()=>Ni});var Ni={};S(Ni,{fromScimUser:()=>BG,toScimUserResponse:()=>UG,userFilters:()=>NG});var Cn=require("@budibase/types"),Sb=require("scim2-parse-filter"),wb=require("@budibase/backend-core"),vb=require("@budibase/shared-core"),{unreachable:qG}=vb.utils,UG=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===Cn.UserStatus.ACTIVE};return(e.firstName||e.lastName)&&(n.name={formatted:[e.firstName,e.lastName].filter(o=>o).join(" "),familyName:e.lastName,givenName:e.firstName}),n},LG=e=>!!e?.id;function DG(e){if(wb.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}var BG=e=>{let t=LG(e)?e:void 0,r=DG(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:qG(e.active)}let n,o;return e.name?.givenName?(n=e.name?.givenName,o=e.name?.familyName):n=e.displayName,{tenantId:"",_id:t?.id,userId:t?.id,email:r,firstName:n,lastName:o,scimInfo:{...e,isSync:!0},roles:{},status:a?Cn.UserStatus.ACTIVE:Cn.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},NG=e=>{let t={equal:{}},r=(0,Sb.parse)(e);function a(n){switch(n.op){case"eq":{let o=n.attrPath,i;switch(o){case"emails.value":i="email";break;default:i=`scimInfo.${o}`}t.equal[i]=n.compValue;break}case"and":for(let o of n.filters)a(o);break;default:console.warn("Filter not handled",{filter:n})}}return a(r),t};var Gi={};S(Gi,{fromScimGroup:()=>kG,toScimGroupResponse:()=>GG});var GG=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}))}),MG=e=>!!e?.id,kG=e=>{let t=MG(e)?e:void 0;return{_id:t?.id,name:e.displayName,scimInfo:{externalId:e.externalId,isSync:!0},icon:"UserGroup",color:"var(--spectrum-global-color-blue-600)",createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}};0&&(module.exports={Method,ai,api,auditLogs,automations,backups,branding,constants,environmentVariables,features,groups,init,licensing,logger,mappers,middleware,plugins,publicApi,quotas,scimGroups,scimUsers,sdk,users,utils});
|
|
136
|
+
${r}`)}var eh=require("@budibase/shared-core");function Oi(e,t){return t.map(r=>e[r]).join(" ")}var ft=class{constructor({model:t,apiKey:r,measureUsage:n}){this.model=t,this.apiKey=r,this.measureUsage=n,this.maxTokens=parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"300")}async prompt(t){typeof t=="string"&&(t=ie.user(t));let r=await this.chatCompletion(t);return this.measureUsage&&r.tokensUsed!==void 0&&r.tokensUsed>0&&await ts(r.tokensUsed),r}async summarizeText(t){return this.prompt(Pi(t))}async generateCronExpression(t){return this.prompt(HA(t))}async operation(t,r){let n=this.promptForOperation(t,r);return this.prompt(n)}promptForOperation(t,r){let{operation:n,column:a,columns:o,language:i,categories:s,prompt:c}=t;switch(n){case dt.AIOperationEnum.SUMMARISE_TEXT:return Pi(Oi(r,o));case dt.AIOperationEnum.CLEAN_DATA:return YA(r[a]);case dt.AIOperationEnum.TRANSLATE:return JA(r[a],i);case dt.AIOperationEnum.CATEGORISE_TEXT:if(!s)throw Error("No categories provided for categorise text operation. Please provide categories.");return KA(Oi(r,o),s.split(","));case dt.AIOperationEnum.SENTIMENT_ANALYSIS:return zA(r[a]);case dt.AIOperationEnum.PROMPT:return c;case dt.AIOperationEnum.SEARCH_WEB:return XA(Oi(r,o));default:throw eh.utils.unreachable(n)}}async generateJs(t,r){let{bindings:n=[],snippets:a=[]}=r||{};return await this.prompt(ZA(n,a).user(t))}};var Ct=class extends ft{constructor({model:r,apiKey:n,measureUsage:a}){super({model:r,apiKey:n,measureUsage:a});this.client=new Ci.default({apiKey:n})}measureTokenUsage(r){if(!r)return 0;let n=r.prompt_tokens;return r.completion_tokens*3+n}async chatCompletion(r){try{let n=await this.client.chat.completions.create({model:this.model,messages:r.messages,max_tokens:this.maxTokens}),a=this.measureTokenUsage(n.usage);return{message:n.choices[0]?.message.content||void 0,tokensUsed:a}}catch(n){throw n instanceof Ci.default.APIError&&console.error(`OpenAI Prompt failed with error of type ${n.type} and status: ${n.status}:${n.code} - ${n.message}`),n}}};var qi=O(require("@anthropic-ai/sdk"));var _a=class extends ft{constructor(r){super(r);this.client=new qi.default({apiKey:r.apiKey})}firstTextBlock(r){for(let n of r.content)if(n.type==="text")return n.text}async chatCompletion(r){try{let n=await this.client.messages.create({model:this.model,messages:r.messages.map(({content:o})=>({role:"user",content:o})),max_tokens:this.maxTokens});return{message:this.firstTextBlock(n)}}catch(n){throw n instanceof qi.default.APIError&&console.error(`Anthropic Prompt failed with error ${n.name} and status: ${n.status}`),n}}};var gt=require("@budibase/backend-core"),xa=class extends ft{constructor(t){if(super(t),!gt.env.SELF_HOSTED)throw new Error("BudibaseAI LLM provider is only for use in self-host environments.");if(!gt.env.BUDICLOUD_URL)throw new Error("BUDICLOUD_URL is not set");if(!this.apiKey)throw new Error("BudibaseAI API key is not set")}async chatCompletion(t){let r=await fetch(`${gt.env.BUDICLOUD_URL}/api/ai/chat`,{method:"POST",headers:{"Content-Type":"application/json",[gt.constants.Header.LICENSE_KEY]:this.apiKey},body:JSON.stringify({messages:t.messages})});if(!r.ok)throw new gt.HTTPError(r.statusText,r.status);return{message:(await r.json()).message}}};var Ta="gpt-4o-mini",tG={OpenAI:Ct,Anthropic:_a,TogetherAI:Ct,AzureOpenAI:Ct,Custom:Ct,BudibaseAI:xa};function rG(e){for(let t in e)if(e[t].isDefault)return e[t]}async function nG(){if(!await Ko())return;let e=await We.configs.getAIConfig();if(!e)return;let t=rG(e.config);if(!(!t||!t.apiKey))return{provider:t.provider,model:t.defaultModel||Ta,apiKey:t.apiKey,measureUsage:!1}}function aG(){if(!(!We.env.SELF_HOSTED||!We.env.OPENAI_API_KEY))return{provider:"OpenAI",model:Ta,apiKey:We.env.OPENAI_API_KEY,measureUsage:!1}}async function oG(){if(await sn()&&We.env.OPENAI_API_KEY)return{provider:"OpenAI",apiKey:We.env.OPENAI_API_KEY,model:Ta,measureUsage:!0}}async function sG(){if(!await We.features.isEnabled(th.FeatureFlag.AI_JS_GENERATION))return;let e=await ko();if(e)return{provider:"BudibaseAI",apiKey:e,model:Ta,measureUsage:!1}}async function Pa(e){let t=await nG()||aG()||await oG()||await sG();if(!t)return;e&&(t.model=e);let r=tG[t.provider];if(r)return new r(t)}var $e=require("@budibase/backend-core");var iG=/```(?:\w+)?\n([\s\S]+?)\n```/;async function Di(){let e=await Pa();if(!e)throw new $e.HTTPError("No available LLM configurations",500);return e}async function rh(e){let t=await Di(),{prompt:r}=e.request.body,{message:n}=await t.generateCronExpression(r);n?.startsWith("Error generating cron:")?e.throw(400,n):e.body={message:n}}async function nh(e){await $e.features.isEnabled(Ui.FeatureFlag.AI_JS_GENERATION)||e.throw(500,"AI JS generation is disabled");let t=await Di();await $e.context.ensureSnippetContext();let n=$e.context.getCurrentContext()?.snippets||[],{prompt:a,bindings:o=[]}=e.request.body,i=(await t.generateJs(a,{bindings:o,snippets:n})).message||"",s=i.match(iG);s&&(i=s[1]),e.body={code:i}}async function ah(e){await $e.features.isEnabled(Ui.FeatureFlag.AI_JS_GENERATION)||e.throw(500,"AI JS generation is disabled"),$e.env.SELF_HOSTED&&e.throw(500,"Budibase AI endpoints are not available in self-host");let t=await Di(),r=ie.fromRequest(e.request.body),{message:n}=await t.chatCompletion(r);e.body={message:n}}var sh=O(require("@koa/router")),Bi=require("@budibase/backend-core");var Oa=require("@budibase/backend-core");async function oh(e,t){let r=e.request.headers[Oa.constants.Header.LICENSE_KEY];Array.isArray(r)&&(r=r[0]),r||e.throw(403,"License key not provided");let n=await Go(r);n||e.throw(403,"License not found or invalid"),await Oa.context.doInTenant(n.tenantId,async()=>{await t()})}var Ca=new sh.default;Ca.post("/api/ai/cron",Bi.auth.builderOrAdmin,rh);Ca.post("/api/ai/js",Bi.auth.builderOrAdmin,nh);Ca.post("/api/ai/chat",oh,ah);var ih=Ca;async function uh(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let n=await xt(t._id);t.roles=n.roles,t.scimInfo=n.scimInfo}let r=await or(t);e.body={_id:r.id,_rev:r.rev}}async function ph(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of users to add or to remove");let a,o;r&&(a=await ns(t,r)),n&&(o=await as(t,n)),e.body={added:a,removed:o}}async function ch(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of objects, with appId and roleId to add or remove"),e.body=await os(t,{appsToAdd:r,appsToRemove:n})}async function lh(e){e.body={data:await pn()}}async function dh(e){let{groupId:t,rev:r}=e.params;try{await rs(t,r),e.body={message:"Group deleted successfully"}}catch(n){e.throw(n.status,n)}}async function fh(e){try{e.body=await xt(e.params.groupId)}catch(t){e.throw(t.status,t)}}async function gh(e){let{pageSize:t=10,bookmark:r,emailSearch:n}=e.request.query,a=e.params.groupId,o={limit:t+1},i=await xn(a,{...o,emailSearch:n,bookmark:r}),s=n?i[t]?.email:i[t]?._id,c=!!s;e.body={users:i.slice(0,t),bookmark:s,hasNextPage:c}}async function mh(e){let{groupId:t,appId:r}=e.params;await ss(t,r),e.body={message:"Group app builder access updated."}}async function yh(e){let{groupId:t,appId:r}=e.params;await is(t,r),e.body={message:"group app builder access removed."}}var Ah=O(require("@koa/router")),ge=O(require("joi"));var ve=require("@budibase/types"),Ve=require("@budibase/backend-core"),hh=new Ah.default;function cG(){return Ve.auth.joiValidator.body(ge.default.object({_id:ge.default.string().optional(),_rev:ge.default.string().optional(),color:ge.default.string().required(),icon:ge.default.string().required(),name:ge.default.string().trim().required().max(50),role:ge.default.string().optional(),users:ge.default.array().optional(),apps:ge.default.array().optional(),roles:ge.default.object().optional(),createdAt:ge.default.string().optional(),updatedAt:ge.default.string().optional()}).required())}hh.post("/api/global/groups",Ve.auth.adminOnly,M.requireFeature(ve.Feature.USER_GROUPS),cG(),uh).get("/api/global/groups",M.requireFeature(ve.Feature.USER_GROUPS),lh).delete("/api/global/groups/:groupId/:rev",M.requireFeature(ve.Feature.USER_GROUPS),Ve.auth.adminOnly,Ra("groupId"),dh).get("/api/global/groups/:groupId",M.requireFeature(ve.Feature.USER_GROUPS),Ve.auth.builderOrAdmin,fh).get("/api/global/groups/:groupId/users",M.requireFeature(ve.Feature.USER_GROUPS),Ve.auth.builderOrAdmin,gh).post("/api/global/groups/:groupId/users",Ve.auth.adminOnly,M.requireFeature(ve.Feature.USER_GROUPS),Ra("groupId"),ph).post("/api/global/groups/:groupId/apps",Ve.auth.builderOrAdmin,M.requireFeature(ve.Feature.USER_GROUPS),ch).post("/api/global/groups/:groupId/app/:appId/builder",Ve.auth.builderOrAdmin,M.requireFeatures(ve.Feature.USER_GROUPS,ve.Feature.APP_BUILDERS),mh).delete("/api/global/groups/:groupId/app/:appId/builder",Ve.auth.builderOrAdmin,M.requireFeatures(ve.Feature.USER_GROUPS,ve.Feature.APP_BUILDERS),yh);var Ih=hh;var Ni=require("@budibase/types");var Gi=require("@budibase/backend-core");async function bh(e){e.body={encryptionKeyAvailable:Qe.isEncryptionKeyAvailable()}}async function Sh(e){e.body={variables:await Qe.fetch()}}async function wh(e){let{name:t,production:r,development:n}=e.request.body;await Qe.update(t,{production:r,development:n});let a=[Ni.AppEnvironment.PRODUCTION];r!==n&&a.push(Ni.AppEnvironment.DEVELOPMENT),await Gi.events.environmentVariable.created(t,a),e.body={message:`Environment variable "${t}" created.`}}async function vh(e){let{production:t,development:r}=e.request.body,n=e.params.varName;await Qe.update(n,{production:t,development:r}),e.body={message:`Environment variable "${n}" updated.`}}async function Eh(e){let t=e.params.varName;await Qe.remove(t),await Gi.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}var qt=require("@budibase/backend-core"),_h=O(require("@koa/router")),In=O(require("joi")),xh=new _h.default;function Rh(){return qt.auth.joiValidator.body(In.default.object({name:In.default.string().optional(),production:In.default.string().required(),development:In.default.string().required()}))}xh.get("/api/env/variables/status",qt.auth.builderOrAdmin,bh).get("/api/env/variables",qt.auth.builderOrAdmin,Sh).post("/api/env/variables",qt.auth.builderOrAdmin,Rh(),wh).patch("/api/env/variables/:varName",qt.auth.builderOrAdmin,Rh(),vh).delete("/api/env/variables/:varName",qt.auth.builderOrAdmin,Eh);var Th=xh;var Mi=require("@budibase/backend-core");async function Ph(e){let t=e.request.body,r=await ct.fetch(t);await Mi.events.auditLog.filtered(t),e.body=r}async function Oh(e){let t=e.request.body,{stream:r}=ct.download(t);await Mi.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}async function Ch(e){e.body={events:ct.definitions()}}var Lh=require("@budibase/types"),Lt=require("@budibase/backend-core"),Uh=O(require("@koa/router")),Ee=O(require("joi"));function qh(){return Lt.auth.joiValidator.body(Ee.default.object({userIds:Ee.default.array().items(Ee.default.string()).optional(),appIds:Ee.default.array().items(Ee.default.string()).optional(),events:Ee.default.array().items(Ee.default.string().valid(...Object.values(Lh.Event))).optional(),startDate:Ee.default.string().optional().allow(""),endDate:Ee.default.string().optional().allow(""),fullSearch:Ee.default.string().optional().allow(""),bookmark:Ee.default.number()}))}var Dh=new Uh.default;Dh.post("/api/global/auditlogs/search",Lt.auth.adminOnly,qh(),Ph).get("/api/global/auditlogs/download",Lt.auth.adminOnly,Lt.middleware.querystringToBody,qh(),Oh).get("/api/global/auditlogs/definitions",Lt.auth.adminOnly,Ch);var Bh=Dh;var ki=require("@budibase/types");var Nh=require("@budibase/backend-core");async function fr(e,t){await Ft.appExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}async function Gh(e){let t=e.params.appId;await fr(e,t);let r=e.request.body,n=e.user?._id,a=await we.triggerAppBackup(t,ki.AppBackupTrigger.MANUAL,{name:r.name,createdBy:n});a||e.throw(500,"Unable to start backup."),e.body={backupId:a,message:"Backup triggered - process starting."}}async function Mh(e){let t=e.params.appId;await fr(e,t);let r=e.params.backupId,n=e.request.body.name,a=await we.triggerAppRestore(t,r,n,e.user?._id);a||e.throw(500,"Unable to start restore."),await Nh.events.backup.appBackupRestored(a.metadata),e.body={restoredId:a?.restoreId,message:"Restore triggered - process starting."}}async function kh(e){let t=e.params.appId;await fr(e,t);let r=e.params.backupId;await we.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}async function Fh(e){let t=e.params.appId;await fr(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(ki.AppBackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await we.fetchAppBackups(t,{paginate:!0,...r})}async function Qh(e){let t=e.params.appId;await fr(e,t);let r=e.params.backupId,n=e.request.body;e.body=await we.updateAppBackup(r,n.name)}async function jh(e){let t=e.params.appId;await fr(e,t);let r=e.params.backupId,{metadata:n,stream:a}=await we.getBackupDownloadStream(r);e.attachment(`backup-${n.timestamp}.tar.gz`),e.body=a}var Wh=O(require("@koa/router")),Ut=O(require("joi")),qa=require("@budibase/types"),mt=require("@budibase/backend-core"),$h=new Wh.default;function gG(){return mt.auth.joiValidator.body(Ut.default.object({trigger:Ut.default.string().valid(...Object.values(qa.AppBackupTrigger)),type:Ut.default.string().valid(...Object.values(qa.AppBackupType)),startDate:Ut.default.date(),endDate:Ut.default.date(),page:Ut.default.string()}))}$h.post("/api/apps/:appId/backups",mt.auth.builderOrAdmin,Gh).post("/api/apps/:appId/backups/search",mt.auth.builderOrAdmin,gG(),Fh).get("/api/apps/:appId/backups/:backupId/file",mt.auth.builderOrAdmin,jh).patch("/api/apps/:appId/backups/:backupId",mt.auth.builderOrAdmin,Qh).delete("/api/apps/:appId/backups/:backupId",mt.auth.builderOrAdmin,kh).post("/api/apps/:appId/backups/:backupId/import",mt.auth.builderOrAdmin,Mh);var Vh=$h;var SI=O(require("@koa/router"));var La=require("scim-patch");var Yh=require("@budibase/backend-core");function Kh(e,t){let r=e.request.query[t];if(r!==void 0)return+r}var Hh=async e=>{let t=Kh(e,"pageSize")??20,r=Kh(e,"startIndex"),n;e.request.query.filter&&(n=Q.user.userFilters(e.request.query.filter));let a=await se.get({pageSize:t,skip:r,filters:n});e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:a.total,Resources:a.users.map(Q.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},Jh=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await se.find(t);e.body=Q.user.toScimUserResponse(r)},zh=async e=>{let t=Q.user.fromScimUser(e.request.body);try{let r=await se.create(t);e.body=Q.user.toScimUserResponse(r)}catch(r){throw r instanceof Yh.EmailUnavailableError&&e.throw(409,"Email already in use"),r}};function mG(e){let t=e.Operations.find(r=>(r.op==="Replace"||r.op==="replace")&&r.path==="active");return t?t.value===!1||t.value?.toLowerCase?.()==="false":!1}var Xh=async e=>{let t=await se.find(e.params.id);t||e.throw(404);let r=Q.user.toScimUserResponse(t),n=e.request.body;try{(0,La.patchBodyValidation)(n)}catch{}if(mG(n))return Fi(e);let a;try{a=(0,La.scimPatch)(r,n.Operations)}catch{}a||e.throw(500);let o=Q.user.fromScimUser(a);await se.update(o,{allowChangingEmail:!0}),e.body=Q.user.toScimUserResponse(o)},Fi=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await se.remove(t),e.status=204};var fI=O(dI()),gI=require("@budibase/shared-core"),Ua=require("scim-patch");var Da=require("scim2-parse-filter");function mI(e,t){for(let r of t.split(","))delete e[r]}var yI=async e=>{let r=(await G.fetch()).filter(o=>o.scimInfo?.isSync).map(Q.group.toScimGroupResponse),{filter:n,excludedAttributes:a}=e.request.query;if(n){let o=(0,Da.filter)((0,Da.parse)(n));r=r.filter(o)}a&&r.forEach(o=>{mI(o,a)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},AI=async e=>{let t=Q.group.fromScimGroup(e.request.body),r=await dr.create(t);e.body=Q.group.toScimGroupResponse(r)},hI=async e=>{let{id:t}=e.params,r=await G.get(t),n=Q.group.toScimGroupResponse(r),{excludedAttributes:a}=e.request.query;a&&mI(n,a),e.body=n},II=async e=>{let{id:t}=e.params,r=await G.get(t);await G.remove(t,r._rev),e.status=204},bI=async e=>{let{id:t}=e.params,r=await G.get(t),n=Q.group.toScimGroupResponse(r),a=e.request.body;try{(0,Ua.patchBodyValidation)(a)}catch{e.throw(400)}let{true:o,false:i}=(0,fI.default)(a.Operations,s=>s.path==="members");if(i?.length){let s=(0,Ua.scimPatch)(n,i);s||e.throw(500);let c={...Q.group.fromScimGroup(s),_rev:r._rev};await G.save(c)}if(o?.length){let s=[],c=[];for(let{op:f,value:m}of o)switch(f){case"add":case"Add":for(let g of m)s.push(await se.find(g.value));break;case"remove":case"Remove":for(let g of m)c.push(await se.find(g.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:gI.utils.unreachable(f)}s.length&&await G.addUsers(t,s.map(f=>f._id)),c.length&&await G.removeUsers(t,c.map(f=>f._id))}e.body=Q.group.toScimGroupResponse(await G.get(t))};var bn=require("@budibase/types"),me=new SI.default({prefix:"/api/global/scim/v2"});me.use(_i);me.use(Ri);me.get("/users",Hh);me.get("/users/:id",An("id"),Jh);me.post("/users",zh);me.patch("/users/:id",An("id"),Xh);me.delete("/users/:id",An("id"),Fi);me.get("/groups",yI);me.post("/groups",M.requireFeature(bn.Feature.USER_GROUPS),AI);me.get("/groups/:id",M.requireFeature(bn.Feature.USER_GROUPS),hn("id"),hI);me.delete("/groups/:id",M.requireFeature(bn.Feature.USER_GROUPS),hn("id"),II);me.patch("/groups/:id",M.requireFeature(bn.Feature.USER_GROUPS),hn("id"),bI);var wI=me;var RI=O(require("@koa/router"));var Qi=require("@budibase/backend-core");async function vI(e){let{userId:t,appId:r}=e.params,n=await Je.db.getUser(t);if(Qi.users.isGlobalBuilder(n)){e.body={message:"User already admin - no permissions updated."};return}await Je.addAppBuilder(n,r),e.body={message:`User "${n.email}" app builder access updated.`}}async function EI(e){let{userId:t,appId:r}=e.params,n=await Je.db.getUser(t);if(Qi.users.isGlobalBuilder(n)){e.body={message:"User already admin - no permissions removed."};return}await Je.removeAppBuilder(n,r),e.body={message:`User "${n.email}" app builder access removed.`}}var ji=require("@budibase/types"),Wi=require("@budibase/backend-core"),_I=new RI.default;_I.post("/api/global/users/:userId/app/:appId/builder",Wi.auth.builderOrAdmin,M.requireFeatures(ji.Feature.APP_BUILDERS),vI).delete("/api/global/users/:userId/app/:appId/builder",Wi.auth.builderOrAdmin,M.requireFeatures(ji.Feature.APP_BUILDERS),EI);var xI=_I;var Q={};S(Q,{group:()=>Ki,user:()=>Vi});var Vi={};S(Vi,{fromScimUser:()=>WG,toScimUserResponse:()=>FG,userFilters:()=>$G});var Ba=require("@budibase/types"),TI=require("scim2-parse-filter"),PI=require("@budibase/backend-core"),OI=require("@budibase/shared-core"),{unreachable:kG}=OI.utils,FG=e=>{let{isSync:t,roles:r,...n}=e.scimInfo||{},a={...n,schemas:["urn:ietf:params:scim:schemas:core:2.0:User"],id:e._id,meta:{resourceType:"User",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},active:e.status===Ba.UserStatus.ACTIVE};return(e.firstName||e.lastName)&&(a.name={formatted:[e.firstName,e.lastName].filter(o=>o).join(" "),familyName:e.lastName,givenName:e.firstName}),a},QG=e=>!!e?.id;function jG(e){if(PI.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}var WG=e=>{let t=QG(e)?e:void 0,r=jG(e);if(!r)throw new Error("Email is required");let n;switch(e.active){case"True":case"true":case!0:n=!0;break;case"False":case"false":case!1:n=!1;break;default:kG(e.active)}let a,o;return e.name?.givenName?(a=e.name?.givenName,o=e.name?.familyName):a=e.displayName,{tenantId:"",_id:t?.id,userId:t?.id,email:r,firstName:a,lastName:o,scimInfo:{...e,isSync:!0},roles:{},status:n?Ba.UserStatus.ACTIVE:Ba.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},$G=e=>{let t={equal:{}},r=(0,TI.parse)(e);function n(a){switch(a.op){case"eq":{let o=a.attrPath,i;switch(o){case"emails.value":i="email";break;default:i=`scimInfo.${o}`}t.equal[i]=a.compValue;break}case"and":for(let o of a.filters)n(o);break;default:console.warn("Filter not handled",{filter:a})}}return n(r),t};var Ki={};S(Ki,{fromScimGroup:()=>YG,toScimGroupResponse:()=>VG});var VG=e=>({schemas:["urn:ietf:params:scim:schemas:core:2.0:Group"],id:e._id,externalId:e.scimInfo.externalId,meta:{resourceType:"Group",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},displayName:e.name,members:e.users?.map(t=>({value:t._id}))}),KG=e=>!!e?.id,YG=e=>{let t=KG(e)?e:void 0;return{_id:t?.id,name:e.displayName,scimInfo:{externalId:e.externalId,isSync:!0},icon:"UserGroup",color:"var(--spectrum-global-color-blue-600)",createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}};0&&(module.exports={Method,ai,api,auditLogs,automations,backups,branding,constants,environmentVariables,features,groups,init,licensing,logger,mappers,middleware,plugins,publicApi,quotas,scimGroups,scimUsers,sdk,users,utils});
|
package/dist/types/ai.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"dist"
|
|
5
5
|
],
|
|
6
6
|
"license": "UNLICENSED",
|
|
7
|
-
"version": "3.8.
|
|
7
|
+
"version": "3.8.1",
|
|
8
8
|
"description": "Budibase Pro (Backend)",
|
|
9
9
|
"main": "dist/index.js",
|
|
10
10
|
"types": "dist/index.d.ts",
|
|
@@ -72,5 +72,5 @@
|
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
},
|
|
75
|
-
"gitHead": "
|
|
75
|
+
"gitHead": "83252b200ac59f338be6101f148966b2ed8ec83e"
|
|
76
76
|
}
|