@budibase/pro 3.6.0 → 3.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai/index.d.ts +1 -1
- package/dist/ai/llm.d.ts +2 -0
- package/dist/ai/models/anthropic.d.ts +8 -12
- package/dist/ai/models/base.d.ts +25 -0
- package/dist/ai/models/openai.d.ts +6 -13
- package/dist/ai/prompts/index.d.ts +23 -9
- package/dist/db/quotas/quotas.d.ts +1 -0
- package/dist/index.js +26 -26
- package/dist/middleware/licenseAuth.d.ts +3 -0
- package/dist/sdk/ai/ai.d.ts +1 -2
- package/dist/sdk/licensing/licenses/client.d.ts +1 -0
- package/dist/sdk/licensing/licenses/licenses.d.ts +1 -0
- package/dist/types/ai.d.ts +0 -4
- package/package.json +4 -4
- package/dist/ai/LargeLanguageModel.d.ts +0 -18
package/dist/ai/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { getLLM } from "./llm";
|
package/dist/ai/llm.d.ts
ADDED
|
@@ -1,15 +1,11 @@
|
|
|
1
|
-
import
|
|
1
|
+
import AnthropicClient from "@anthropic-ai/sdk";
|
|
2
|
+
import { LLMPromptResponse } from "../../types/ai";
|
|
3
|
+
import { AIConfigOptions, LLM } from "./base";
|
|
4
|
+
import { Prompt } from "../prompts";
|
|
2
5
|
export type AnthropicModel = "claude-3-5-sonnet-20240620" | "claude-3-sonnet-20240229" | "claude-3-opus-20240229" | "claude-3-haiku-20240307";
|
|
3
|
-
export
|
|
4
|
-
model: AnthropicModel;
|
|
5
|
-
apiKey: string;
|
|
6
|
-
measureUsage?: boolean;
|
|
7
|
-
}
|
|
8
|
-
export declare class Anthropic implements ILargeLanguageModel {
|
|
6
|
+
export declare class Anthropic extends LLM {
|
|
9
7
|
private client;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
chatCompletion(prompt:
|
|
13
|
-
prompt(prompt: string): Promise<LLMPromptResponse>;
|
|
14
|
-
summarizeText(prompt: string): Promise<LLMPromptResponse>;
|
|
8
|
+
constructor(opts: AIConfigOptions);
|
|
9
|
+
firstTextBlock(message: AnthropicClient.Messages.Message): string | undefined;
|
|
10
|
+
protected chatCompletion(prompt: Prompt): Promise<LLMPromptResponse>;
|
|
15
11
|
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { AIFieldMetadata, EnrichedBinding, Row, Snippet } from "@budibase/types";
|
|
2
|
+
import { LLMPromptResponse } from "../../types/ai";
|
|
3
|
+
import { Prompt } from "../prompts";
|
|
4
|
+
export interface AIConfigOptions {
|
|
5
|
+
model: string;
|
|
6
|
+
apiKey: string;
|
|
7
|
+
measureUsage: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare abstract class LLM {
|
|
10
|
+
model: string;
|
|
11
|
+
apiKey: string;
|
|
12
|
+
measureUsage: boolean;
|
|
13
|
+
maxTokens: number;
|
|
14
|
+
constructor({ model, apiKey, measureUsage }: AIConfigOptions);
|
|
15
|
+
protected abstract chatCompletion(prompt: Prompt): Promise<LLMPromptResponse>;
|
|
16
|
+
prompt(prompt: string | Prompt): Promise<LLMPromptResponse>;
|
|
17
|
+
summarizeText(prompt: string): Promise<LLMPromptResponse>;
|
|
18
|
+
generateCronExpression(prompt: string): Promise<LLMPromptResponse>;
|
|
19
|
+
operation(schema: AIFieldMetadata, row: Row): Promise<LLMPromptResponse>;
|
|
20
|
+
private promptForOperation;
|
|
21
|
+
generateJs(prompt: string, opts?: {
|
|
22
|
+
bindings: EnrichedBinding[];
|
|
23
|
+
snippets: Snippet[];
|
|
24
|
+
}): Promise<LLMPromptResponse>;
|
|
25
|
+
}
|
|
@@ -1,18 +1,11 @@
|
|
|
1
1
|
import OpenAIClient from "openai";
|
|
2
|
-
import {
|
|
2
|
+
import { LLMPromptResponse } from "../../types/ai";
|
|
3
|
+
import { AIConfigOptions, LLM } from "./base";
|
|
4
|
+
import { Prompt } from "../prompts";
|
|
3
5
|
export type OpenAIModel = "gpt-4o-mini" | "gpt-4o" | "gpt-4" | "gpt-4-turbo" | "gpt-3.5-turbo";
|
|
4
|
-
export
|
|
5
|
-
model: OpenAIModel;
|
|
6
|
-
apiKey: string;
|
|
7
|
-
measureUsage: boolean;
|
|
8
|
-
}
|
|
9
|
-
export declare class OpenAI implements ILargeLanguageModel {
|
|
6
|
+
export declare class OpenAI extends LLM {
|
|
10
7
|
private client;
|
|
11
|
-
model:
|
|
12
|
-
measureUsage: boolean;
|
|
13
|
-
constructor({ model, apiKey, measureUsage }: OpenAIConfigOptions);
|
|
8
|
+
constructor({ model, apiKey, measureUsage }: AIConfigOptions);
|
|
14
9
|
measureTokenUsage(usage?: OpenAIClient.CompletionUsage): number;
|
|
15
|
-
chatCompletion(prompt:
|
|
16
|
-
prompt(prompt: string): Promise<LLMPromptResponse>;
|
|
17
|
-
summarizeText(prompt: string): Promise<LLMPromptResponse>;
|
|
10
|
+
protected chatCompletion(prompt: Prompt): Promise<LLMPromptResponse>;
|
|
18
11
|
}
|
|
@@ -1,9 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export declare
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import { EnrichedBinding, Snippet } from "@budibase/types";
|
|
2
|
+
export interface Message {
|
|
3
|
+
role: "system" | "user";
|
|
4
|
+
content: string;
|
|
5
|
+
}
|
|
6
|
+
export declare class Prompt {
|
|
7
|
+
messages: Message[];
|
|
8
|
+
constructor(messages: Message[]);
|
|
9
|
+
user(content: string): this;
|
|
10
|
+
system(content: string): this;
|
|
11
|
+
static user(content: string): Prompt;
|
|
12
|
+
static system(content: string): Prompt;
|
|
13
|
+
}
|
|
14
|
+
export declare function summarizeText(text: string): Prompt;
|
|
15
|
+
export declare function classifyText(text: string, categories: string[]): Prompt;
|
|
16
|
+
export declare function cleanData(text: string): Prompt;
|
|
17
|
+
export declare function generateSQL(prompt: string, tableSchema: string): Prompt;
|
|
18
|
+
export declare function generateCode(prompt: string): Prompt;
|
|
19
|
+
export declare function generateCronExpression(text: string): Prompt;
|
|
20
|
+
export declare function translate(text: string, language: string): Prompt;
|
|
21
|
+
export declare function sentimentAnalysis(text: string): Prompt;
|
|
22
|
+
export declare function searchWeb(text: string): Prompt;
|
|
23
|
+
export declare function generateJs(bindings: EnrichedBinding[], snippets: Snippet[]): Prompt;
|
package/dist/index.js
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
"use strict";var Nb=Object.create;var Bn=Object.defineProperty;var Mb=Object.getOwnPropertyDescriptor;var Gb=Object.getOwnPropertyNames;var kb=Object.getPrototypeOf,Fb=Object.prototype.hasOwnProperty;var u=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),x=(e,t)=>{for(var r in t)Bn(e,r,{get:t[r],enumerable:!0})},tu=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of Gb(t))!Fb.call(e,a)&&a!==r&&Bn(e,a,{get:()=>t[a],enumerable:!(n=Mb(t,a))||n.enumerable});return e};var N=(e,t,r)=>(r=e!=null?Nb(kb(e)):{},tu(t||!e||!e.__esModule?Bn(r,"default",{value:e,enumerable:!0}):r,e)),$b=e=>tu(Bn({},"__esModule",{value:!0}),e);var Hn=u((sG,Mu)=>{"use strict";function FI(e,t){for(var r=-1,n=t.length,a=e.length;++r<n;)e[a+r]=t[r];return e}Mu.exports=FI});var go=u((iG,Gu)=>{"use strict";var $I=typeof global=="object"&&global&&global.Object===Object&&global;Gu.exports=$I});var Ae=u((uG,ku)=>{"use strict";var QI=go(),jI=typeof self=="object"&&self&&self.Object===Object&&self,WI=QI||jI||Function("return this")();ku.exports=WI});var Ut=u((pG,Fu)=>{"use strict";var VI=Ae(),YI=VI.Symbol;Fu.exports=YI});var Wu=u((cG,ju)=>{"use strict";var $u=Ut(),Qu=Object.prototype,KI=Qu.hasOwnProperty,HI=Qu.toString,Zr=$u?$u.toStringTag:void 0;function zI(e){var t=KI.call(e,Zr),r=e[Zr];try{e[Zr]=void 0;var n=!0}catch{}var a=HI.call(e);return n&&(t?e[Zr]=r:delete e[Zr]),a}ju.exports=zI});var Yu=u((lG,Vu)=>{"use strict";var JI=Object.prototype,XI=JI.toString;function ZI(e){return XI.call(e)}Vu.exports=ZI});var bt=u((dG,zu)=>{"use strict";var Ku=Ut(),eS=Wu(),tS=Yu(),rS="[object Null]",nS="[object Undefined]",Hu=Ku?Ku.toStringTag:void 0;function aS(e){return e==null?e===void 0?nS:rS:Hu&&Hu in Object(e)?eS(e):tS(e)}zu.exports=aS});var _e=u((fG,Ju)=>{"use strict";function oS(e){return e!=null&&typeof e=="object"}Ju.exports=oS});var Zu=u((gG,Xu)=>{"use strict";var sS=bt(),iS=_e(),uS="[object Arguments]";function pS(e){return iS(e)&&sS(e)==uS}Xu.exports=pS});var en=u((mG,rp)=>{"use strict";var ep=Zu(),cS=_e(),tp=Object.prototype,lS=tp.hasOwnProperty,dS=tp.propertyIsEnumerable,fS=ep(function(){return arguments}())?ep:function(e){return cS(e)&&lS.call(e,"callee")&&!dS.call(e,"callee")};rp.exports=fS});var de=u((yG,np)=>{"use strict";var gS=Array.isArray;np.exports=gS});var ip=u((hG,sp)=>{"use strict";var ap=Ut(),mS=en(),yS=de(),op=ap?ap.isConcatSpreadable:void 0;function hS(e){return yS(e)||mS(e)||!!(op&&e&&e[op])}sp.exports=hS});var mo=u((AG,pp)=>{"use strict";var AS=Hn(),bS=ip();function up(e,t,r,n,a){var o=-1,i=e.length;for(r||(r=bS),a||(a=[]);++o<i;){var s=e[o];t>0&&r(s)?t>1?up(s,t-1,r,n,a):AS(a,s):n||(a[a.length]=s)}return a}pp.exports=up});var tn=u((bG,cp)=>{"use strict";function IS(e){return e}cp.exports=IS});var zn=u((IG,lp)=>{"use strict";function SS(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=SS});var yo=u((SG,fp)=>{"use strict";var wS=zn(),dp=Math.max;function vS(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),wS(e,this,s)}}fp.exports=vS});var mp=u((wG,gp)=>{"use strict";function ES(e){return function(){return e}}gp.exports=ES});var De=u((vG,yp)=>{"use strict";function _S(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}yp.exports=_S});var rn=u((EG,hp)=>{"use strict";var xS=bt(),RS=De(),TS="[object AsyncFunction]",OS="[object Function]",PS="[object GeneratorFunction]",qS="[object Proxy]";function CS(e){if(!RS(e))return!1;var t=xS(e);return t==OS||t==PS||t==TS||t==qS}hp.exports=CS});var bp=u((_G,Ap)=>{"use strict";var US=Ae(),LS=US["__core-js_shared__"];Ap.exports=LS});var wp=u((xG,Sp)=>{"use strict";var ho=bp(),Ip=function(){var e=/[^.]+$/.exec(ho&&ho.keys&&ho.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function DS(e){return!!Ip&&Ip in e}Sp.exports=DS});var Ao=u((RG,vp)=>{"use strict";var BS=Function.prototype,NS=BS.toString;function MS(e){if(e!=null){try{return NS.call(e)}catch{}try{return e+""}catch{}}return""}vp.exports=MS});var _p=u((TG,Ep)=>{"use strict";var GS=rn(),kS=wp(),FS=De(),$S=Ao(),QS=/[\\^$.*+?()[\]{}|]/g,jS=/^\[object .+?Constructor\]$/,WS=Function.prototype,VS=Object.prototype,YS=WS.toString,KS=VS.hasOwnProperty,HS=RegExp("^"+YS.call(KS).replace(QS,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function zS(e){if(!FS(e)||kS(e))return!1;var t=GS(e)?HS:jS;return t.test($S(e))}Ep.exports=zS});var Rp=u((OG,xp)=>{"use strict";function JS(e,t){return e?.[t]}xp.exports=JS});var It=u((PG,Tp)=>{"use strict";var XS=_p(),ZS=Rp();function ew(e,t){var r=ZS(e,t);return XS(r)?r:void 0}Tp.exports=ew});var bo=u((qG,Op)=>{"use strict";var tw=It(),rw=function(){try{var e=tw(Object,"defineProperty");return e({},"",{}),e}catch{}}();Op.exports=rw});var Cp=u((CG,qp)=>{"use strict";var nw=mp(),Pp=bo(),aw=tn(),ow=Pp?function(e,t){return Pp(e,"toString",{configurable:!0,enumerable:!1,value:nw(t),writable:!0})}:aw;qp.exports=ow});var Io=u((UG,Up)=>{"use strict";var sw=800,iw=16,uw=Date.now;function pw(e){var t=0,r=0;return function(){var n=uw(),a=iw-(n-r);if(r=n,a>0){if(++t>=sw)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}Up.exports=pw});var Jn=u((LG,Lp)=>{"use strict";var cw=Cp(),lw=Io(),dw=lw(cw);Lp.exports=dw});var So=u((DG,Dp)=>{"use strict";var fw=tn(),gw=yo(),mw=Jn();function yw(e,t){return mw(gw(e,t,fw),e+"")}Dp.exports=yw});var nn=u((BG,Bp)=>{"use strict";var hw=It(),Aw=hw(Object,"create");Bp.exports=Aw});var Gp=u((NG,Mp)=>{"use strict";var Np=nn();function bw(){this.__data__=Np?Np(null):{},this.size=0}Mp.exports=bw});var Fp=u((MG,kp)=>{"use strict";function Iw(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}kp.exports=Iw});var Qp=u((GG,$p)=>{"use strict";var Sw=nn(),ww="__lodash_hash_undefined__",vw=Object.prototype,Ew=vw.hasOwnProperty;function _w(e){var t=this.__data__;if(Sw){var r=t[e];return r===ww?void 0:r}return Ew.call(t,e)?t[e]:void 0}$p.exports=_w});var Wp=u((kG,jp)=>{"use strict";var xw=nn(),Rw=Object.prototype,Tw=Rw.hasOwnProperty;function Ow(e){var t=this.__data__;return xw?t[e]!==void 0:Tw.call(t,e)}jp.exports=Ow});var Yp=u((FG,Vp)=>{"use strict";var Pw=nn(),qw="__lodash_hash_undefined__";function Cw(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=Pw&&t===void 0?qw:t,this}Vp.exports=Cw});var Hp=u(($G,Kp)=>{"use strict";var Uw=Gp(),Lw=Fp(),Dw=Qp(),Bw=Wp(),Nw=Yp();function tr(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])}}tr.prototype.clear=Uw;tr.prototype.delete=Lw;tr.prototype.get=Dw;tr.prototype.has=Bw;tr.prototype.set=Nw;Kp.exports=tr});var Jp=u((QG,zp)=>{"use strict";function Mw(){this.__data__=[],this.size=0}zp.exports=Mw});var rr=u((jG,Xp)=>{"use strict";function Gw(e,t){return e===t||e!==e&&t!==t}Xp.exports=Gw});var an=u((WG,Zp)=>{"use strict";var kw=rr();function Fw(e,t){for(var r=e.length;r--;)if(kw(e[r][0],t))return r;return-1}Zp.exports=Fw});var tc=u((VG,ec)=>{"use strict";var $w=an(),Qw=Array.prototype,jw=Qw.splice;function Ww(e){var t=this.__data__,r=$w(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():jw.call(t,r,1),--this.size,!0}ec.exports=Ww});var nc=u((YG,rc)=>{"use strict";var Vw=an();function Yw(e){var t=this.__data__,r=Vw(t,e);return r<0?void 0:t[r][1]}rc.exports=Yw});var oc=u((KG,ac)=>{"use strict";var Kw=an();function Hw(e){return Kw(this.__data__,e)>-1}ac.exports=Hw});var ic=u((HG,sc)=>{"use strict";var zw=an();function Jw(e,t){var r=this.__data__,n=zw(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}sc.exports=Jw});var on=u((zG,uc)=>{"use strict";var Xw=Jp(),Zw=tc(),ev=nc(),tv=oc(),rv=ic();function nr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}nr.prototype.clear=Xw;nr.prototype.delete=Zw;nr.prototype.get=ev;nr.prototype.has=tv;nr.prototype.set=rv;uc.exports=nr});var Xn=u((JG,pc)=>{"use strict";var nv=It(),av=Ae(),ov=nv(av,"Map");pc.exports=ov});var dc=u((XG,lc)=>{"use strict";var cc=Hp(),sv=on(),iv=Xn();function uv(){this.size=0,this.__data__={hash:new cc,map:new(iv||sv),string:new cc}}lc.exports=uv});var gc=u((ZG,fc)=>{"use strict";function pv(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}fc.exports=pv});var sn=u((ek,mc)=>{"use strict";var cv=gc();function lv(e,t){var r=e.__data__;return cv(t)?r[typeof t=="string"?"string":"hash"]:r.map}mc.exports=lv});var hc=u((tk,yc)=>{"use strict";var dv=sn();function fv(e){var t=dv(this,e).delete(e);return this.size-=t?1:0,t}yc.exports=fv});var bc=u((rk,Ac)=>{"use strict";var gv=sn();function mv(e){return gv(this,e).get(e)}Ac.exports=mv});var Sc=u((nk,Ic)=>{"use strict";var yv=sn();function hv(e){return yv(this,e).has(e)}Ic.exports=hv});var vc=u((ak,wc)=>{"use strict";var Av=sn();function bv(e,t){var r=Av(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}wc.exports=bv});var Zn=u((ok,Ec)=>{"use strict";var Iv=dc(),Sv=hc(),wv=bc(),vv=Sc(),Ev=vc();function ar(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])}}ar.prototype.clear=Iv;ar.prototype.delete=Sv;ar.prototype.get=wv;ar.prototype.has=vv;ar.prototype.set=Ev;Ec.exports=ar});var xc=u((sk,_c)=>{"use strict";var _v="__lodash_hash_undefined__";function xv(e){return this.__data__.set(e,_v),this}_c.exports=xv});var Tc=u((ik,Rc)=>{"use strict";function Rv(e){return this.__data__.has(e)}Rc.exports=Rv});var wo=u((uk,Oc)=>{"use strict";var Tv=Zn(),Ov=xc(),Pv=Tc();function ea(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new Tv;++t<r;)this.add(e[t])}ea.prototype.add=ea.prototype.push=Ov;ea.prototype.has=Pv;Oc.exports=ea});var qc=u((pk,Pc)=>{"use strict";function qv(e,t,r,n){for(var a=e.length,o=r+(n?1:-1);n?o--:++o<a;)if(t(e[o],o,e))return o;return-1}Pc.exports=qv});var Uc=u((ck,Cc)=>{"use strict";function Cv(e){return e!==e}Cc.exports=Cv});var Dc=u((lk,Lc)=>{"use strict";function Uv(e,t,r){for(var n=r-1,a=e.length;++n<a;)if(e[n]===t)return n;return-1}Lc.exports=Uv});var Nc=u((dk,Bc)=>{"use strict";var Lv=qc(),Dv=Uc(),Bv=Dc();function Nv(e,t,r){return t===t?Bv(e,t,r):Lv(e,Dv,r)}Bc.exports=Nv});var vo=u((fk,Mc)=>{"use strict";var Mv=Nc();function Gv(e,t){var r=e==null?0:e.length;return!!r&&Mv(e,t,0)>-1}Mc.exports=Gv});var kc=u((gk,Gc)=>{"use strict";function kv(e,t,r){for(var n=-1,a=e==null?0:e.length;++n<a;)if(r(t,e[n]))return!0;return!1}Gc.exports=kv});var Eo=u((mk,Fc)=>{"use strict";function Fv(e,t){return e.has(t)}Fc.exports=Fv});var _o=u((yk,$c)=>{"use strict";var $v=It(),Qv=Ae(),jv=$v(Qv,"Set");$c.exports=jv});var xo=u((hk,Qc)=>{"use strict";function Wv(){}Qc.exports=Wv});var ta=u((Ak,jc)=>{"use strict";function Vv(e){var t=-1,r=Array(e.size);return e.forEach(function(n){r[++t]=n}),r}jc.exports=Vv});var Vc=u((bk,Wc)=>{"use strict";var Ro=_o(),Yv=xo(),Kv=ta(),Hv=1/0,zv=Ro&&1/Kv(new Ro([,-0]))[1]==Hv?function(e){return new Ro(e)}:Yv;Wc.exports=zv});var Kc=u((Ik,Yc)=>{"use strict";var Jv=wo(),Xv=vo(),Zv=kc(),eE=Eo(),tE=Vc(),rE=ta(),nE=200;function aE(e,t,r){var n=-1,a=Xv,o=e.length,i=!0,s=[],c=s;if(r)i=!1,a=Zv;else if(o>=nE){var f=t?null:tE(e);if(f)return rE(f);i=!1,a=eE,c=new Jv}else c=t?[]:s;e:for(;++n<o;){var d=e[n],y=t?t(d):d;if(d=r||d!==0?d:0,i&&y===y){for(var m=c.length;m--;)if(c[m]===y)continue e;t&&c.push(y),s.push(d)}else a(c,y,r)||(c!==s&&c.push(y),s.push(d))}return s}Yc.exports=aE});var ra=u((Sk,Hc)=>{"use strict";var oE=9007199254740991;function sE(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=oE}Hc.exports=sE});var or=u((wk,zc)=>{"use strict";var iE=rn(),uE=ra();function pE(e){return e!=null&&uE(e.length)&&!iE(e)}zc.exports=pE});var To=u((vk,Jc)=>{"use strict";var cE=or(),lE=_e();function dE(e){return lE(e)&&cE(e)}Jc.exports=dE});var Zc=u((Ek,Xc)=>{"use strict";var fE=mo(),gE=So(),mE=Kc(),yE=To(),hE=gE(function(e){return mE(fE(e,1,yE,!0))});Xc.exports=hE});var tl=u((_k,el)=>{"use strict";var AE=on();function bE(){this.__data__=new AE,this.size=0}el.exports=bE});var nl=u((xk,rl)=>{"use strict";function IE(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}rl.exports=IE});var ol=u((Rk,al)=>{"use strict";function SE(e){return this.__data__.get(e)}al.exports=SE});var il=u((Tk,sl)=>{"use strict";function wE(e){return this.__data__.has(e)}sl.exports=wE});var pl=u((Ok,ul)=>{"use strict";var vE=on(),EE=Xn(),_E=Zn(),xE=200;function RE(e,t){var r=this.__data__;if(r instanceof vE){var n=r.__data__;if(!EE||n.length<xE-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new _E(n)}return r.set(e,t),this.size=r.size,this}ul.exports=RE});var un=u((Pk,cl)=>{"use strict";var TE=on(),OE=tl(),PE=nl(),qE=ol(),CE=il(),UE=pl();function sr(e){var t=this.__data__=new TE(e);this.size=t.size}sr.prototype.clear=OE;sr.prototype.delete=PE;sr.prototype.get=qE;sr.prototype.has=CE;sr.prototype.set=UE;cl.exports=sr});var pn=u((qk,dl)=>{"use strict";var ll=bo();function LE(e,t,r){t=="__proto__"&&ll?ll(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}dl.exports=LE});var Oo=u((Ck,fl)=>{"use strict";var DE=pn(),BE=rr();function NE(e,t,r){(r!==void 0&&!BE(e[t],r)||r===void 0&&!(t in e))&&DE(e,t,r)}fl.exports=NE});var ml=u((Uk,gl)=>{"use strict";function ME(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=ME});var Po=u((Lk,yl)=>{"use strict";var GE=ml(),kE=GE();yl.exports=kE});var qo=u((cn,ir)=>{"use strict";var FE=Ae(),Il=typeof cn=="object"&&cn&&!cn.nodeType&&cn,hl=Il&&typeof ir=="object"&&ir&&!ir.nodeType&&ir,$E=hl&&hl.exports===Il,Al=$E?FE.Buffer:void 0,bl=Al?Al.allocUnsafe:void 0;function QE(e,t){if(t)return e.slice();var r=e.length,n=bl?bl(r):new e.constructor(r);return e.copy(n),n}ir.exports=QE});var Co=u((Dk,Sl)=>{"use strict";var jE=Ae(),WE=jE.Uint8Array;Sl.exports=WE});var na=u((Bk,vl)=>{"use strict";var wl=Co();function VE(e){var t=new e.constructor(e.byteLength);return new wl(t).set(new wl(e)),t}vl.exports=VE});var Uo=u((Nk,El)=>{"use strict";var YE=na();function KE(e,t){var r=t?YE(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}El.exports=KE});var ur=u((Mk,_l)=>{"use strict";function HE(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t}_l.exports=HE});var ln=u((Gk,Rl)=>{"use strict";var zE=De(),xl=Object.create,JE=function(){function e(){}return function(t){if(!zE(t))return{};if(xl)return xl(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();Rl.exports=JE});var Lo=u((kk,Tl)=>{"use strict";function XE(e,t){return function(r){return e(t(r))}}Tl.exports=XE});var aa=u((Fk,Ol)=>{"use strict";var ZE=Lo(),e_=ZE(Object.getPrototypeOf,Object);Ol.exports=e_});var oa=u(($k,Pl)=>{"use strict";var t_=Object.prototype;function r_(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||t_;return e===r}Pl.exports=r_});var Do=u((Qk,ql)=>{"use strict";var n_=ln(),a_=aa(),o_=oa();function s_(e){return typeof e.constructor=="function"&&!o_(e)?n_(a_(e)):{}}ql.exports=s_});var Ul=u((jk,Cl)=>{"use strict";function i_(){return!1}Cl.exports=i_});var fn=u((dn,pr)=>{"use strict";var u_=Ae(),p_=Ul(),Bl=typeof dn=="object"&&dn&&!dn.nodeType&&dn,Ll=Bl&&typeof pr=="object"&&pr&&!pr.nodeType&&pr,c_=Ll&&Ll.exports===Bl,Dl=c_?u_.Buffer:void 0,l_=Dl?Dl.isBuffer:void 0,d_=l_||p_;pr.exports=d_});var Bo=u((Wk,Ml)=>{"use strict";var f_=bt(),g_=aa(),m_=_e(),y_="[object Object]",h_=Function.prototype,A_=Object.prototype,Nl=h_.toString,b_=A_.hasOwnProperty,I_=Nl.call(Object);function S_(e){if(!m_(e)||f_(e)!=y_)return!1;var t=g_(e);if(t===null)return!0;var r=b_.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Nl.call(r)==I_}Ml.exports=S_});var kl=u((Vk,Gl)=>{"use strict";var w_=bt(),v_=ra(),E_=_e(),__="[object Arguments]",x_="[object Array]",R_="[object Boolean]",T_="[object Date]",O_="[object Error]",P_="[object Function]",q_="[object Map]",C_="[object Number]",U_="[object Object]",L_="[object RegExp]",D_="[object Set]",B_="[object String]",N_="[object WeakMap]",M_="[object ArrayBuffer]",G_="[object DataView]",k_="[object Float32Array]",F_="[object Float64Array]",$_="[object Int8Array]",Q_="[object Int16Array]",j_="[object Int32Array]",W_="[object Uint8Array]",V_="[object Uint8ClampedArray]",Y_="[object Uint16Array]",K_="[object Uint32Array]",j={};j[k_]=j[F_]=j[$_]=j[Q_]=j[j_]=j[W_]=j[V_]=j[Y_]=j[K_]=!0;j[__]=j[x_]=j[M_]=j[R_]=j[G_]=j[T_]=j[O_]=j[P_]=j[q_]=j[C_]=j[U_]=j[L_]=j[D_]=j[B_]=j[N_]=!1;function H_(e){return E_(e)&&v_(e.length)&&!!j[w_(e)]}Gl.exports=H_});var sa=u((Yk,Fl)=>{"use strict";function z_(e){return function(t){return e(t)}}Fl.exports=z_});var ia=u((gn,cr)=>{"use strict";var J_=go(),$l=typeof gn=="object"&&gn&&!gn.nodeType&&gn,mn=$l&&typeof cr=="object"&&cr&&!cr.nodeType&&cr,X_=mn&&mn.exports===$l,No=X_&&J_.process,Z_=function(){try{var e=mn&&mn.require&&mn.require("util").types;return e||No&&No.binding&&No.binding("util")}catch{}}();cr.exports=Z_});var ua=u((Kk,Wl)=>{"use strict";var ex=kl(),tx=sa(),Ql=ia(),jl=Ql&&Ql.isTypedArray,rx=jl?tx(jl):ex;Wl.exports=rx});var Mo=u((Hk,Vl)=>{"use strict";function nx(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}Vl.exports=nx});var Go=u((zk,Yl)=>{"use strict";var ax=pn(),ox=rr(),sx=Object.prototype,ix=sx.hasOwnProperty;function ux(e,t,r){var n=e[t];(!(ix.call(e,t)&&ox(n,r))||r===void 0&&!(t in e))&&ax(e,t,r)}Yl.exports=ux});var lr=u((Jk,Kl)=>{"use strict";var px=Go(),cx=pn();function lx(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?cx(r,s,c):px(r,s,c)}return r}Kl.exports=lx});var zl=u((Xk,Hl)=>{"use strict";function dx(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}Hl.exports=dx});var yn=u((Zk,Jl)=>{"use strict";var fx=9007199254740991,gx=/^(?:0|[1-9]\d*)$/;function mx(e,t){var r=typeof e;return t=t??fx,!!t&&(r=="number"||r!="symbol"&&gx.test(e))&&e>-1&&e%1==0&&e<t}Jl.exports=mx});var ko=u((eF,Xl)=>{"use strict";var yx=zl(),hx=en(),Ax=de(),bx=fn(),Ix=yn(),Sx=ua(),wx=Object.prototype,vx=wx.hasOwnProperty;function Ex(e,t){var r=Ax(e),n=!r&&hx(e),a=!r&&!n&&bx(e),o=!r&&!n&&!a&&Sx(e),i=r||n||a||o,s=i?yx(e.length,String):[],c=s.length;for(var f in e)(t||vx.call(e,f))&&!(i&&(f=="length"||a&&(f=="offset"||f=="parent")||o&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||Ix(f,c)))&&s.push(f);return s}Xl.exports=Ex});var ed=u((tF,Zl)=>{"use strict";function _x(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}Zl.exports=_x});var rd=u((rF,td)=>{"use strict";var xx=De(),Rx=oa(),Tx=ed(),Ox=Object.prototype,Px=Ox.hasOwnProperty;function qx(e){if(!xx(e))return Tx(e);var t=Rx(e),r=[];for(var n in e)n=="constructor"&&(t||!Px.call(e,n))||r.push(n);return r}td.exports=qx});var dr=u((nF,nd)=>{"use strict";var Cx=ko(),Ux=rd(),Lx=or();function Dx(e){return Lx(e)?Cx(e,!0):Ux(e)}nd.exports=Dx});var od=u((aF,ad)=>{"use strict";var Bx=lr(),Nx=dr();function Mx(e){return Bx(e,Nx(e))}ad.exports=Mx});var ld=u((oF,cd)=>{"use strict";var sd=Oo(),Gx=qo(),kx=Uo(),Fx=ur(),$x=Do(),id=en(),ud=de(),Qx=To(),jx=fn(),Wx=rn(),Vx=De(),Yx=Bo(),Kx=ua(),pd=Mo(),Hx=od();function zx(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 d=o?o(s,c,r+"",e,t,i):void 0,y=d===void 0;if(y){var m=ud(c),w=!m&&jx(c),T=!m&&!w&&Kx(c);d=c,m||w||T?ud(s)?d=s:Qx(s)?d=Fx(s):w?(y=!1,d=Gx(c,!0)):T?(y=!1,d=kx(c,!0)):d=[]:Yx(c)||id(c)?(d=s,id(s)?d=Hx(s):(!Vx(s)||Wx(s))&&(d=$x(c))):y=!1}y&&(i.set(c,d),a(d,c,n,o,i),i.delete(c)),sd(e,r,d)}cd.exports=zx});var gd=u((sF,fd)=>{"use strict";var Jx=un(),Xx=Oo(),Zx=Po(),eR=ld(),tR=De(),rR=dr(),nR=Mo();function dd(e,t,r,n,a){e!==t&&Zx(t,function(o,i){if(a||(a=new Jx),tR(o))eR(e,t,i,r,dd,n,a);else{var s=n?n(nR(e,i),o,i+"",e,t,a):void 0;s===void 0&&(s=o),Xx(e,i,s)}},rR)}fd.exports=dd});var yd=u((iF,md)=>{"use strict";var aR=rr(),oR=or(),sR=yn(),iR=De();function uR(e,t,r){if(!iR(r))return!1;var n=typeof t;return(n=="number"?oR(r)&&sR(t,r.length):n=="string"&&t in r)?aR(r[t],e):!1}md.exports=uR});var Ad=u((uF,hd)=>{"use strict";var pR=So(),cR=yd();function lR(e){return pR(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&&cR(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})}hd.exports=lR});var Fo=u((pF,bd)=>{"use strict";var dR=gd(),fR=Ad(),gR=fR(function(e,t,r){dR(e,t,r)});bd.exports=gR});var wf=u(we=>{"use strict";we.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"};we.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"]};we.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};we.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};we.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};we.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]};we.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}};we.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}};we.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=we.aliasToReal,r={};for(var n in t){var a=t[n];e.call(r,a)?r[a].push(n):r[a]=[n]}return r}();we.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"};we.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};we.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}});var Ds=u((q$,vf)=>{"use strict";vf.exports={}});var Rf=u((C$,xf)=>{"use strict";var ie=wf(),ZT=Ds(),Ef=Array.prototype.push;function eO(e,t){return t==2?function(r,n){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}function Bs(e,t){return t==2?function(r,n){return e(r,n)}:function(r){return e(r)}}function _f(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}function tO(e){return function(t){return e({},t)}}function rO(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&&Ef.apply(i,o),t!=n&&Ef.apply(i,a.slice(t+1)),e.apply(this,i)}}function Ns(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 Ms(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:ZT,c="curry"in n&&n.curry,f="fixed"in n&&n.fixed,d="rearg"in n&&n.rearg,y=a?r.runInContext():void 0,m=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},w=m.ary,T=m.assign,D=m.clone,L=m.curry,U=m.forEach,k=m.isArray,Ie=m.isError,ee=m.isFunction,ke=m.isWeakMap,He=m.keys,ze=m.rearg,W=m.toInteger,B=m.toPath,Tt=He(ie.aryMethod),Dn={castArray:function(v){return function(){var A=arguments[0];return k(A)?v(_f(A)):v.apply(void 0,arguments)}},iteratee:function(v){return function(){var A=arguments[0],b=arguments[1],E=v(A,b),q=E.length;return i.cap&&typeof b=="number"?(b=b>2?b-2:1,q&&q<=b?E:Bs(E,b)):E}},mixin:function(v){return function(A){var b=this;if(!ee(b))return v(b,Object(A));var E=[];return U(He(A),function(q){ee(A[q])&&E.push([q,b.prototype[q]])}),v(b,Object(A)),U(E,function(q){var Z=q[1];ee(Z)?b.prototype[q[0]]=Z:delete b.prototype[q[0]]}),b}},nthArg:function(v){return function(A){var b=A<0?1:W(A)+1;return L(v(A),b)}},rearg:function(v){return function(A,b){var E=b?b.length:0;return L(v(A,b),E)}},runInContext:function(v){return function(A){return Ms(e,v(A),n)}}};function R(v,A){if(i.cap){var b=ie.iterateeRearg[v];if(b)return K(A,b);var E=!a&&ie.iterateeAry[v];if(E)return M(A,E)}return A}function S(v,A,b){return c||i.curry&&b>1?L(A,b):A}function h(v,A,b){if(i.fixed&&(f||!ie.skipFixed[v])){var E=ie.methodSpread[v],q=E&&E.start;return q===void 0?w(A,b):rO(A,q)}return A}function _(v,A,b){return i.rearg&&b>1&&(d||!ie.skipRearg[v])?ze(A,ie.methodRearg[v]||ie.aryRearg[b]):A}function I(v,A){A=B(A);for(var b=-1,E=A.length,q=E-1,Z=D(Object(v)),me=Z;me!=null&&++b<E;){var Ce=A[b],Je=me[Ce];Je!=null&&!(ee(Je)||Ie(Je)||ke(Je))&&(me[Ce]=D(b==q?Je:Object(Je))),me=me[Ce]}return Z}function P(v){return F.runInContext.convert(v)(void 0)}function O(v,A){var b=ie.aliasToReal[v]||v,E=ie.remap[b]||b,q=n;return function(Z){var me=a?y:m,Ce=a?y[E]:A,Je=T(T({},q),Z);return Ms(me,b,Ce,Je)}}function M(v,A){return X(v,function(b){return typeof b=="function"?Bs(b,A):b})}function K(v,A){return X(v,function(b){var E=A.length;return eO(ze(Bs(b,E),A),E)})}function X(v,A){return function(){var b=arguments.length;if(!b)return v();for(var E=Array(b);b--;)E[b]=arguments[b];var q=i.rearg?0:b-1;return E[q]=A(E[q]),v.apply(void 0,E)}}function ae(v,A,b){var E,q=ie.aliasToReal[v]||v,Z=A,me=Dn[q];return me?Z=me(A):i.immutable&&(ie.mutate.array[q]?Z=Ns(A,_f):ie.mutate.object[q]?Z=Ns(A,tO(A)):ie.mutate.set[q]&&(Z=Ns(A,I))),U(Tt,function(Ce){return U(ie.aryMethod[Ce],function(Je){if(q==Je){var eu=ie.methodSpread[q],Bb=eu&&eu.afterRearg;return E=Bb?h(q,_(q,Z,Ce),Ce):_(q,h(q,Z,Ce),Ce),E=R(q,E),E=S(q,E,Ce),!1}}),!E}),E||(E=Z),E==A&&(E=c?L(E,1):function(){return A.apply(this,arguments)}),E.convert=O(q,A),E.placeholder=A.placeholder=b,E}if(!o)return ae(t,r,s);var F=r,qe=[];return U(Tt,function(v){U(ie.aryMethod[v],function(A){var b=F[ie.remap[A]||A];b&&qe.push([A,ae(A,b,F)])})}),U(He(F),function(v){var A=F[v];if(typeof A=="function"){for(var b=qe.length;b--;)if(qe[b][0]==v)return;A.convert=O(v,A),qe.push([v,A])}}),U(qe,function(v){F[v[0]]=v[1]}),F.convert=P,F.placeholder=F,U(He(F),function(v){U(ie.realToAlias[v]||[],function(A){F[A]=F[v]})}),F}xf.exports=Ms});var Gs=u((U$,Tf)=>{"use strict";var nO=It(),aO=Ae(),oO=nO(aO,"WeakMap");Tf.exports=oO});var ks=u((L$,Pf)=>{"use strict";var Of=Gs(),sO=Of&&new Of;Pf.exports=sO});var Fs=u((D$,Cf)=>{"use strict";var iO=tn(),qf=ks(),uO=qf?function(e,t){return qf.set(e,t),e}:iO;Cf.exports=uO});var On=u((B$,Uf)=>{"use strict";var pO=ln(),cO=De();function lO(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=pO(e.prototype),n=e.apply(r,t);return cO(n)?n:r}}Uf.exports=lO});var Df=u((N$,Lf)=>{"use strict";var dO=On(),fO=Ae(),gO=1;function mO(e,t,r){var n=t&gO,a=dO(e);function o(){var i=this&&this!==fO&&this instanceof o?a:e;return i.apply(n?r:this,arguments)}return o}Lf.exports=mO});var $s=u((M$,Bf)=>{"use strict";var yO=Math.max;function hO(e,t,r,n){for(var a=-1,o=e.length,i=r.length,s=-1,c=t.length,f=yO(o-i,0),d=Array(c+f),y=!n;++s<c;)d[s]=t[s];for(;++a<i;)(y||a<o)&&(d[r[a]]=e[a]);for(;f--;)d[s++]=e[a++];return d}Bf.exports=hO});var Qs=u((G$,Nf)=>{"use strict";var AO=Math.max;function bO(e,t,r,n){for(var a=-1,o=e.length,i=-1,s=r.length,c=-1,f=t.length,d=AO(o-s,0),y=Array(d+f),m=!n;++a<d;)y[a]=e[a];for(var w=a;++c<f;)y[w+c]=t[c];for(;++i<s;)(m||a<o)&&(y[w+r[i]]=e[a++]);return y}Nf.exports=bO});var Gf=u((k$,Mf)=>{"use strict";function IO(e,t){for(var r=e.length,n=0;r--;)e[r]===t&&++n;return n}Mf.exports=IO});var Ea=u((F$,kf)=>{"use strict";function SO(){}kf.exports=SO});var xa=u(($$,Ff)=>{"use strict";var wO=ln(),vO=Ea(),EO=4294967295;function _a(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=EO,this.__views__=[]}_a.prototype=wO(vO.prototype);_a.prototype.constructor=_a;Ff.exports=_a});var Ws=u((Q$,Qf)=>{"use strict";var $f=ks(),_O=xo(),xO=$f?function(e){return $f.get(e)}:_O;Qf.exports=xO});var Wf=u((j$,jf)=>{"use strict";var RO={};jf.exports=RO});var Kf=u((W$,Yf)=>{"use strict";var Vf=Wf(),TO=Object.prototype,OO=TO.hasOwnProperty;function PO(e){for(var t=e.name+"",r=Vf[t],n=OO.call(Vf,t)?r.length:0;n--;){var a=r[n],o=a.func;if(o==null||o==e)return a.name}return t}Yf.exports=PO});var Vs=u((V$,Hf)=>{"use strict";var qO=ln(),CO=Ea();function Ra(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}Ra.prototype=qO(CO.prototype);Ra.prototype.constructor=Ra;Hf.exports=Ra});var Jf=u((Y$,zf)=>{"use strict";var UO=xa(),LO=Vs(),DO=ur();function BO(e){if(e instanceof UO)return e.clone();var t=new LO(e.__wrapped__,e.__chain__);return t.__actions__=DO(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}zf.exports=BO});var eg=u((K$,Zf)=>{"use strict";var NO=xa(),Xf=Vs(),MO=Ea(),GO=de(),kO=_e(),FO=Jf(),$O=Object.prototype,QO=$O.hasOwnProperty;function Ta(e){if(kO(e)&&!GO(e)&&!(e instanceof NO)){if(e instanceof Xf)return e;if(QO.call(e,"__wrapped__"))return FO(e)}return new Xf(e)}Ta.prototype=MO.prototype;Ta.prototype.constructor=Ta;Zf.exports=Ta});var rg=u((H$,tg)=>{"use strict";var jO=xa(),WO=Ws(),VO=Kf(),YO=eg();function KO(e){var t=VO(e),r=YO[t];if(typeof r!="function"||!(t in jO.prototype))return!1;if(e===r)return!0;var n=WO(r);return!!n&&e===n[0]}tg.exports=KO});var Ys=u((z$,ng)=>{"use strict";var HO=Fs(),zO=Io(),JO=zO(HO);ng.exports=JO});var og=u((J$,ag)=>{"use strict";var XO=/\{\n\/\* \[wrapped with (.+)\] \*/,ZO=/,? & /;function eP(e){var t=e.match(XO);return t?t[1].split(ZO):[]}ag.exports=eP});var ig=u((X$,sg)=>{"use strict";var tP=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function rP(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(tP,`{
|
|
1
|
+
"use strict";var Gb=Object.create;var Dn=Object.defineProperty;var kb=Object.getOwnPropertyDescriptor;var Fb=Object.getOwnPropertyNames;var $b=Object.getPrototypeOf,Qb=Object.prototype.hasOwnProperty;var u=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),x=(e,t)=>{for(var r in t)Dn(e,r,{get:t[r],enumerable:!0})},ru=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of Fb(t))!Qb.call(e,a)&&a!==r&&Dn(e,a,{get:()=>t[a],enumerable:!(n=kb(t,a))||n.enumerable});return e};var M=(e,t,r)=>(r=e!=null?Gb($b(e)):{},ru(t||!e||!e.__esModule?Dn(r,"default",{value:e,enumerable:!0}):r,e)),jb=e=>ru(Dn({},"__esModule",{value:!0}),e);var Jn=u((cG,Gu)=>{"use strict";function QI(e,t){for(var r=-1,n=t.length,a=e.length;++r<n;)e[a+r]=t[r];return e}Gu.exports=QI});var go=u((lG,ku)=>{"use strict";var jI=typeof global=="object"&&global&&global.Object===Object&&global;ku.exports=jI});var Ae=u((dG,Fu)=>{"use strict";var WI=go(),VI=typeof self=="object"&&self&&self.Object===Object&&self,YI=WI||VI||Function("return this")();Fu.exports=YI});var Lt=u((fG,$u)=>{"use strict";var KI=Ae(),HI=KI.Symbol;$u.exports=HI});var Vu=u((gG,Wu)=>{"use strict";var Qu=Lt(),ju=Object.prototype,JI=ju.hasOwnProperty,zI=ju.toString,zr=Qu?Qu.toStringTag:void 0;function XI(e){var t=JI.call(e,zr),r=e[zr];try{e[zr]=void 0;var n=!0}catch{}var a=zI.call(e);return n&&(t?e[zr]=r:delete e[zr]),a}Wu.exports=XI});var Ku=u((mG,Yu)=>{"use strict";var ZI=Object.prototype,eS=ZI.toString;function tS(e){return eS.call(e)}Yu.exports=tS});var It=u((yG,zu)=>{"use strict";var Hu=Lt(),rS=Vu(),nS=Ku(),aS="[object Null]",oS="[object Undefined]",Ju=Hu?Hu.toStringTag:void 0;function sS(e){return e==null?e===void 0?oS:aS:Ju&&Ju in Object(e)?rS(e):nS(e)}zu.exports=sS});var _e=u((hG,Xu)=>{"use strict";function iS(e){return e!=null&&typeof e=="object"}Xu.exports=iS});var ep=u((AG,Zu)=>{"use strict";var uS=It(),pS=_e(),cS="[object Arguments]";function lS(e){return pS(e)&&uS(e)==cS}Zu.exports=lS});var Xr=u((bG,np)=>{"use strict";var tp=ep(),dS=_e(),rp=Object.prototype,fS=rp.hasOwnProperty,gS=rp.propertyIsEnumerable,mS=tp(function(){return arguments}())?tp:function(e){return dS(e)&&fS.call(e,"callee")&&!gS.call(e,"callee")};np.exports=mS});var de=u((IG,ap)=>{"use strict";var yS=Array.isArray;ap.exports=yS});var up=u((SG,ip)=>{"use strict";var op=Lt(),hS=Xr(),AS=de(),sp=op?op.isConcatSpreadable:void 0;function bS(e){return AS(e)||hS(e)||!!(sp&&e&&e[sp])}ip.exports=bS});var mo=u((wG,cp)=>{"use strict";var IS=Jn(),SS=up();function pp(e,t,r,n,a){var o=-1,i=e.length;for(r||(r=SS),a||(a=[]);++o<i;){var s=e[o];t>0&&r(s)?t>1?pp(s,t-1,r,n,a):IS(a,s):n||(a[a.length]=s)}return a}cp.exports=pp});var Zr=u((vG,lp)=>{"use strict";function wS(e){return e}lp.exports=wS});var zn=u((EG,dp)=>{"use strict";function vS(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)}dp.exports=vS});var yo=u((_G,gp)=>{"use strict";var ES=zn(),fp=Math.max;function _S(e,t,r){return t=fp(t===void 0?e.length-1:t,0),function(){for(var n=arguments,a=-1,o=fp(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),ES(e,this,s)}}gp.exports=_S});var yp=u((xG,mp)=>{"use strict";function xS(e){return function(){return e}}mp.exports=xS});var Be=u((RG,hp)=>{"use strict";function RS(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}hp.exports=RS});var en=u((TG,Ap)=>{"use strict";var TS=It(),OS=Be(),PS="[object AsyncFunction]",CS="[object Function]",qS="[object GeneratorFunction]",US="[object Proxy]";function LS(e){if(!OS(e))return!1;var t=TS(e);return t==CS||t==qS||t==PS||t==US}Ap.exports=LS});var Ip=u((OG,bp)=>{"use strict";var DS=Ae(),BS=DS["__core-js_shared__"];bp.exports=BS});var vp=u((PG,wp)=>{"use strict";var ho=Ip(),Sp=function(){var e=/[^.]+$/.exec(ho&&ho.keys&&ho.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function NS(e){return!!Sp&&Sp in e}wp.exports=NS});var Ao=u((CG,Ep)=>{"use strict";var MS=Function.prototype,GS=MS.toString;function kS(e){if(e!=null){try{return GS.call(e)}catch{}try{return e+""}catch{}}return""}Ep.exports=kS});var xp=u((qG,_p)=>{"use strict";var FS=en(),$S=vp(),QS=Be(),jS=Ao(),WS=/[\\^$.*+?()[\]{}|]/g,VS=/^\[object .+?Constructor\]$/,YS=Function.prototype,KS=Object.prototype,HS=YS.toString,JS=KS.hasOwnProperty,zS=RegExp("^"+HS.call(JS).replace(WS,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function XS(e){if(!QS(e)||$S(e))return!1;var t=FS(e)?zS:VS;return t.test(jS(e))}_p.exports=XS});var Tp=u((UG,Rp)=>{"use strict";function ZS(e,t){return e?.[t]}Rp.exports=ZS});var St=u((LG,Op)=>{"use strict";var ew=xp(),tw=Tp();function rw(e,t){var r=tw(e,t);return ew(r)?r:void 0}Op.exports=rw});var bo=u((DG,Pp)=>{"use strict";var nw=St(),aw=function(){try{var e=nw(Object,"defineProperty");return e({},"",{}),e}catch{}}();Pp.exports=aw});var Up=u((BG,qp)=>{"use strict";var ow=yp(),Cp=bo(),sw=Zr(),iw=Cp?function(e,t){return Cp(e,"toString",{configurable:!0,enumerable:!1,value:ow(t),writable:!0})}:sw;qp.exports=iw});var Io=u((NG,Lp)=>{"use strict";var uw=800,pw=16,cw=Date.now;function lw(e){var t=0,r=0;return function(){var n=cw(),a=pw-(n-r);if(r=n,a>0){if(++t>=uw)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}Lp.exports=lw});var Xn=u((MG,Dp)=>{"use strict";var dw=Up(),fw=Io(),gw=fw(dw);Dp.exports=gw});var So=u((GG,Bp)=>{"use strict";var mw=Zr(),yw=yo(),hw=Xn();function Aw(e,t){return hw(yw(e,t,mw),e+"")}Bp.exports=Aw});var tn=u((kG,Np)=>{"use strict";var bw=St(),Iw=bw(Object,"create");Np.exports=Iw});var kp=u((FG,Gp)=>{"use strict";var Mp=tn();function Sw(){this.__data__=Mp?Mp(null):{},this.size=0}Gp.exports=Sw});var $p=u(($G,Fp)=>{"use strict";function ww(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}Fp.exports=ww});var jp=u((QG,Qp)=>{"use strict";var vw=tn(),Ew="__lodash_hash_undefined__",_w=Object.prototype,xw=_w.hasOwnProperty;function Rw(e){var t=this.__data__;if(vw){var r=t[e];return r===Ew?void 0:r}return xw.call(t,e)?t[e]:void 0}Qp.exports=Rw});var Vp=u((jG,Wp)=>{"use strict";var Tw=tn(),Ow=Object.prototype,Pw=Ow.hasOwnProperty;function Cw(e){var t=this.__data__;return Tw?t[e]!==void 0:Pw.call(t,e)}Wp.exports=Cw});var Kp=u((WG,Yp)=>{"use strict";var qw=tn(),Uw="__lodash_hash_undefined__";function Lw(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=qw&&t===void 0?Uw:t,this}Yp.exports=Lw});var Jp=u((VG,Hp)=>{"use strict";var Dw=kp(),Bw=$p(),Nw=jp(),Mw=Vp(),Gw=Kp();function tr(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])}}tr.prototype.clear=Dw;tr.prototype.delete=Bw;tr.prototype.get=Nw;tr.prototype.has=Mw;tr.prototype.set=Gw;Hp.exports=tr});var Xp=u((YG,zp)=>{"use strict";function kw(){this.__data__=[],this.size=0}zp.exports=kw});var rr=u((KG,Zp)=>{"use strict";function Fw(e,t){return e===t||e!==e&&t!==t}Zp.exports=Fw});var rn=u((HG,ec)=>{"use strict";var $w=rr();function Qw(e,t){for(var r=e.length;r--;)if($w(e[r][0],t))return r;return-1}ec.exports=Qw});var rc=u((JG,tc)=>{"use strict";var jw=rn(),Ww=Array.prototype,Vw=Ww.splice;function Yw(e){var t=this.__data__,r=jw(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():Vw.call(t,r,1),--this.size,!0}tc.exports=Yw});var ac=u((zG,nc)=>{"use strict";var Kw=rn();function Hw(e){var t=this.__data__,r=Kw(t,e);return r<0?void 0:t[r][1]}nc.exports=Hw});var sc=u((XG,oc)=>{"use strict";var Jw=rn();function zw(e){return Jw(this.__data__,e)>-1}oc.exports=zw});var uc=u((ZG,ic)=>{"use strict";var Xw=rn();function Zw(e,t){var r=this.__data__,n=Xw(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}ic.exports=Zw});var nn=u((ek,pc)=>{"use strict";var ev=Xp(),tv=rc(),rv=ac(),nv=sc(),av=uc();function nr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}nr.prototype.clear=ev;nr.prototype.delete=tv;nr.prototype.get=rv;nr.prototype.has=nv;nr.prototype.set=av;pc.exports=nr});var Zn=u((tk,cc)=>{"use strict";var ov=St(),sv=Ae(),iv=ov(sv,"Map");cc.exports=iv});var fc=u((rk,dc)=>{"use strict";var lc=Jp(),uv=nn(),pv=Zn();function cv(){this.size=0,this.__data__={hash:new lc,map:new(pv||uv),string:new lc}}dc.exports=cv});var mc=u((nk,gc)=>{"use strict";function lv(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}gc.exports=lv});var an=u((ak,yc)=>{"use strict";var dv=mc();function fv(e,t){var r=e.__data__;return dv(t)?r[typeof t=="string"?"string":"hash"]:r.map}yc.exports=fv});var Ac=u((ok,hc)=>{"use strict";var gv=an();function mv(e){var t=gv(this,e).delete(e);return this.size-=t?1:0,t}hc.exports=mv});var Ic=u((sk,bc)=>{"use strict";var yv=an();function hv(e){return yv(this,e).get(e)}bc.exports=hv});var wc=u((ik,Sc)=>{"use strict";var Av=an();function bv(e){return Av(this,e).has(e)}Sc.exports=bv});var Ec=u((uk,vc)=>{"use strict";var Iv=an();function Sv(e,t){var r=Iv(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}vc.exports=Sv});var ea=u((pk,_c)=>{"use strict";var wv=fc(),vv=Ac(),Ev=Ic(),_v=wc(),xv=Ec();function ar(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])}}ar.prototype.clear=wv;ar.prototype.delete=vv;ar.prototype.get=Ev;ar.prototype.has=_v;ar.prototype.set=xv;_c.exports=ar});var Rc=u((ck,xc)=>{"use strict";var Rv="__lodash_hash_undefined__";function Tv(e){return this.__data__.set(e,Rv),this}xc.exports=Tv});var Oc=u((lk,Tc)=>{"use strict";function Ov(e){return this.__data__.has(e)}Tc.exports=Ov});var wo=u((dk,Pc)=>{"use strict";var Pv=ea(),Cv=Rc(),qv=Oc();function ta(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new Pv;++t<r;)this.add(e[t])}ta.prototype.add=ta.prototype.push=Cv;ta.prototype.has=qv;Pc.exports=ta});var qc=u((fk,Cc)=>{"use strict";function Uv(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}Cc.exports=Uv});var Lc=u((gk,Uc)=>{"use strict";function Lv(e){return e!==e}Uc.exports=Lv});var Bc=u((mk,Dc)=>{"use strict";function Dv(e,t,r){for(var n=r-1,a=e.length;++n<a;)if(e[n]===t)return n;return-1}Dc.exports=Dv});var Mc=u((yk,Nc)=>{"use strict";var Bv=qc(),Nv=Lc(),Mv=Bc();function Gv(e,t,r){return t===t?Mv(e,t,r):Bv(e,Nv,r)}Nc.exports=Gv});var vo=u((hk,Gc)=>{"use strict";var kv=Mc();function Fv(e,t){var r=e==null?0:e.length;return!!r&&kv(e,t,0)>-1}Gc.exports=Fv});var Fc=u((Ak,kc)=>{"use strict";function $v(e,t,r){for(var n=-1,a=e==null?0:e.length;++n<a;)if(r(t,e[n]))return!0;return!1}kc.exports=$v});var Eo=u((bk,$c)=>{"use strict";function Qv(e,t){return e.has(t)}$c.exports=Qv});var _o=u((Ik,Qc)=>{"use strict";var jv=St(),Wv=Ae(),Vv=jv(Wv,"Set");Qc.exports=Vv});var xo=u((Sk,jc)=>{"use strict";function Yv(){}jc.exports=Yv});var ra=u((wk,Wc)=>{"use strict";function Kv(e){var t=-1,r=Array(e.size);return e.forEach(function(n){r[++t]=n}),r}Wc.exports=Kv});var Yc=u((vk,Vc)=>{"use strict";var Ro=_o(),Hv=xo(),Jv=ra(),zv=1/0,Xv=Ro&&1/Jv(new Ro([,-0]))[1]==zv?function(e){return new Ro(e)}:Hv;Vc.exports=Xv});var Hc=u((Ek,Kc)=>{"use strict";var Zv=wo(),eE=vo(),tE=Fc(),rE=Eo(),nE=Yc(),aE=ra(),oE=200;function sE(e,t,r){var n=-1,a=eE,o=e.length,i=!0,s=[],c=s;if(r)i=!1,a=tE;else if(o>=oE){var d=t?null:nE(e);if(d)return aE(d);i=!1,a=rE,c=new Zv}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=sE});var na=u((_k,Jc)=>{"use strict";var iE=9007199254740991;function uE(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=iE}Jc.exports=uE});var or=u((xk,zc)=>{"use strict";var pE=en(),cE=na();function lE(e){return e!=null&&cE(e.length)&&!pE(e)}zc.exports=lE});var To=u((Rk,Xc)=>{"use strict";var dE=or(),fE=_e();function gE(e){return fE(e)&&dE(e)}Xc.exports=gE});var el=u((Tk,Zc)=>{"use strict";var mE=mo(),yE=So(),hE=Hc(),AE=To(),bE=yE(function(e){return hE(mE(e,1,AE,!0))});Zc.exports=bE});var rl=u((Ok,tl)=>{"use strict";var IE=nn();function SE(){this.__data__=new IE,this.size=0}tl.exports=SE});var al=u((Pk,nl)=>{"use strict";function wE(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}nl.exports=wE});var sl=u((Ck,ol)=>{"use strict";function vE(e){return this.__data__.get(e)}ol.exports=vE});var ul=u((qk,il)=>{"use strict";function EE(e){return this.__data__.has(e)}il.exports=EE});var cl=u((Uk,pl)=>{"use strict";var _E=nn(),xE=Zn(),RE=ea(),TE=200;function OE(e,t){var r=this.__data__;if(r instanceof _E){var n=r.__data__;if(!xE||n.length<TE-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new RE(n)}return r.set(e,t),this.size=r.size,this}pl.exports=OE});var on=u((Lk,ll)=>{"use strict";var PE=nn(),CE=rl(),qE=al(),UE=sl(),LE=ul(),DE=cl();function sr(e){var t=this.__data__=new PE(e);this.size=t.size}sr.prototype.clear=CE;sr.prototype.delete=qE;sr.prototype.get=UE;sr.prototype.has=LE;sr.prototype.set=DE;ll.exports=sr});var sn=u((Dk,fl)=>{"use strict";var dl=bo();function BE(e,t,r){t=="__proto__"&&dl?dl(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}fl.exports=BE});var Oo=u((Bk,gl)=>{"use strict";var NE=sn(),ME=rr();function GE(e,t,r){(r!==void 0&&!ME(e[t],r)||r===void 0&&!(t in e))&&NE(e,t,r)}gl.exports=GE});var yl=u((Nk,ml)=>{"use strict";function kE(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}}ml.exports=kE});var Po=u((Mk,hl)=>{"use strict";var FE=yl(),$E=FE();hl.exports=$E});var Co=u((un,ir)=>{"use strict";var QE=Ae(),Sl=typeof un=="object"&&un&&!un.nodeType&&un,Al=Sl&&typeof ir=="object"&&ir&&!ir.nodeType&&ir,jE=Al&&Al.exports===Sl,bl=jE?QE.Buffer:void 0,Il=bl?bl.allocUnsafe:void 0;function WE(e,t){if(t)return e.slice();var r=e.length,n=Il?Il(r):new e.constructor(r);return e.copy(n),n}ir.exports=WE});var qo=u((Gk,wl)=>{"use strict";var VE=Ae(),YE=VE.Uint8Array;wl.exports=YE});var aa=u((kk,El)=>{"use strict";var vl=qo();function KE(e){var t=new e.constructor(e.byteLength);return new vl(t).set(new vl(e)),t}El.exports=KE});var Uo=u((Fk,_l)=>{"use strict";var HE=aa();function JE(e,t){var r=t?HE(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}_l.exports=JE});var ur=u(($k,xl)=>{"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}xl.exports=zE});var pn=u((Qk,Tl)=>{"use strict";var XE=Be(),Rl=Object.create,ZE=function(){function e(){}return function(t){if(!XE(t))return{};if(Rl)return Rl(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();Tl.exports=ZE});var Lo=u((jk,Ol)=>{"use strict";function e_(e,t){return function(r){return e(t(r))}}Ol.exports=e_});var oa=u((Wk,Pl)=>{"use strict";var t_=Lo(),r_=t_(Object.getPrototypeOf,Object);Pl.exports=r_});var sa=u((Vk,Cl)=>{"use strict";var n_=Object.prototype;function a_(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||n_;return e===r}Cl.exports=a_});var Do=u((Yk,ql)=>{"use strict";var o_=pn(),s_=oa(),i_=sa();function u_(e){return typeof e.constructor=="function"&&!i_(e)?o_(s_(e)):{}}ql.exports=u_});var Ll=u((Kk,Ul)=>{"use strict";function p_(){return!1}Ul.exports=p_});var ln=u((cn,pr)=>{"use strict";var c_=Ae(),l_=Ll(),Nl=typeof cn=="object"&&cn&&!cn.nodeType&&cn,Dl=Nl&&typeof pr=="object"&&pr&&!pr.nodeType&&pr,d_=Dl&&Dl.exports===Nl,Bl=d_?c_.Buffer:void 0,f_=Bl?Bl.isBuffer:void 0,g_=f_||l_;pr.exports=g_});var Bo=u((Hk,Gl)=>{"use strict";var m_=It(),y_=oa(),h_=_e(),A_="[object Object]",b_=Function.prototype,I_=Object.prototype,Ml=b_.toString,S_=I_.hasOwnProperty,w_=Ml.call(Object);function v_(e){if(!h_(e)||m_(e)!=A_)return!1;var t=y_(e);if(t===null)return!0;var r=S_.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Ml.call(r)==w_}Gl.exports=v_});var Fl=u((Jk,kl)=>{"use strict";var E_=It(),__=na(),x_=_e(),R_="[object Arguments]",T_="[object Array]",O_="[object Boolean]",P_="[object Date]",C_="[object Error]",q_="[object Function]",U_="[object Map]",L_="[object Number]",D_="[object Object]",B_="[object RegExp]",N_="[object Set]",M_="[object String]",G_="[object WeakMap]",k_="[object ArrayBuffer]",F_="[object DataView]",$_="[object Float32Array]",Q_="[object Float64Array]",j_="[object Int8Array]",W_="[object Int16Array]",V_="[object Int32Array]",Y_="[object Uint8Array]",K_="[object Uint8ClampedArray]",H_="[object Uint16Array]",J_="[object Uint32Array]",j={};j[$_]=j[Q_]=j[j_]=j[W_]=j[V_]=j[Y_]=j[K_]=j[H_]=j[J_]=!0;j[R_]=j[T_]=j[k_]=j[O_]=j[F_]=j[P_]=j[C_]=j[q_]=j[U_]=j[L_]=j[D_]=j[B_]=j[N_]=j[M_]=j[G_]=!1;function z_(e){return x_(e)&&__(e.length)&&!!j[E_(e)]}kl.exports=z_});var ia=u((zk,$l)=>{"use strict";function X_(e){return function(t){return e(t)}}$l.exports=X_});var ua=u((dn,cr)=>{"use strict";var Z_=go(),Ql=typeof dn=="object"&&dn&&!dn.nodeType&&dn,fn=Ql&&typeof cr=="object"&&cr&&!cr.nodeType&&cr,ex=fn&&fn.exports===Ql,No=ex&&Z_.process,tx=function(){try{var e=fn&&fn.require&&fn.require("util").types;return e||No&&No.binding&&No.binding("util")}catch{}}();cr.exports=tx});var pa=u((Xk,Vl)=>{"use strict";var rx=Fl(),nx=ia(),jl=ua(),Wl=jl&&jl.isTypedArray,ax=Wl?nx(Wl):rx;Vl.exports=ax});var Mo=u((Zk,Yl)=>{"use strict";function ox(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}Yl.exports=ox});var Go=u((eF,Kl)=>{"use strict";var sx=sn(),ix=rr(),ux=Object.prototype,px=ux.hasOwnProperty;function cx(e,t,r){var n=e[t];(!(px.call(e,t)&&ix(n,r))||r===void 0&&!(t in e))&&sx(e,t,r)}Kl.exports=cx});var lr=u((tF,Hl)=>{"use strict";var lx=Go(),dx=sn();function fx(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?dx(r,s,c):lx(r,s,c)}return r}Hl.exports=fx});var zl=u((rF,Jl)=>{"use strict";function gx(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}Jl.exports=gx});var gn=u((nF,Xl)=>{"use strict";var mx=9007199254740991,yx=/^(?:0|[1-9]\d*)$/;function hx(e,t){var r=typeof e;return t=t??mx,!!t&&(r=="number"||r!="symbol"&&yx.test(e))&&e>-1&&e%1==0&&e<t}Xl.exports=hx});var ko=u((aF,Zl)=>{"use strict";var Ax=zl(),bx=Xr(),Ix=de(),Sx=ln(),wx=gn(),vx=pa(),Ex=Object.prototype,_x=Ex.hasOwnProperty;function xx(e,t){var r=Ix(e),n=!r&&bx(e),a=!r&&!n&&Sx(e),o=!r&&!n&&!a&&vx(e),i=r||n||a||o,s=i?Ax(e.length,String):[],c=s.length;for(var d in e)(t||_x.call(e,d))&&!(i&&(d=="length"||a&&(d=="offset"||d=="parent")||o&&(d=="buffer"||d=="byteLength"||d=="byteOffset")||wx(d,c)))&&s.push(d);return s}Zl.exports=xx});var td=u((oF,ed)=>{"use strict";function Rx(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}ed.exports=Rx});var nd=u((sF,rd)=>{"use strict";var Tx=Be(),Ox=sa(),Px=td(),Cx=Object.prototype,qx=Cx.hasOwnProperty;function Ux(e){if(!Tx(e))return Px(e);var t=Ox(e),r=[];for(var n in e)n=="constructor"&&(t||!qx.call(e,n))||r.push(n);return r}rd.exports=Ux});var dr=u((iF,ad)=>{"use strict";var Lx=ko(),Dx=nd(),Bx=or();function Nx(e){return Bx(e)?Lx(e,!0):Dx(e)}ad.exports=Nx});var sd=u((uF,od)=>{"use strict";var Mx=lr(),Gx=dr();function kx(e){return Mx(e,Gx(e))}od.exports=kx});var dd=u((pF,ld)=>{"use strict";var id=Oo(),Fx=Co(),$x=Uo(),Qx=ur(),jx=Do(),ud=Xr(),pd=de(),Wx=To(),Vx=ln(),Yx=en(),Kx=Be(),Hx=Bo(),Jx=pa(),cd=Mo(),zx=sd();function Xx(e,t,r,n,a,o,i){var s=cd(e,r),c=cd(t,r),d=i.get(c);if(d){id(e,r,d);return}var m=o?o(s,c,r+"",e,t,i):void 0,g=m===void 0;if(g){var y=pd(c),w=!y&&Vx(c),C=!y&&!w&&Jx(c);m=c,y||w||C?pd(s)?m=s:Wx(s)?m=Qx(s):w?(g=!1,m=Fx(c,!0)):C?(g=!1,m=$x(c,!0)):m=[]:Hx(c)||ud(c)?(m=s,ud(s)?m=zx(s):(!Kx(s)||Yx(s))&&(m=jx(c))):g=!1}g&&(i.set(c,m),a(m,c,n,o,i),i.delete(c)),id(e,r,m)}ld.exports=Xx});var md=u((cF,gd)=>{"use strict";var Zx=on(),eR=Oo(),tR=Po(),rR=dd(),nR=Be(),aR=dr(),oR=Mo();function fd(e,t,r,n,a){e!==t&&tR(t,function(o,i){if(a||(a=new Zx),nR(o))rR(e,t,i,r,fd,n,a);else{var s=n?n(oR(e,i),o,i+"",e,t,a):void 0;s===void 0&&(s=o),eR(e,i,s)}},aR)}gd.exports=fd});var hd=u((lF,yd)=>{"use strict";var sR=rr(),iR=or(),uR=gn(),pR=Be();function cR(e,t,r){if(!pR(r))return!1;var n=typeof t;return(n=="number"?iR(r)&&uR(t,r.length):n=="string"&&t in r)?sR(r[t],e):!1}yd.exports=cR});var bd=u((dF,Ad)=>{"use strict";var lR=So(),dR=hd();function fR(e){return lR(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&&dR(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=fR});var Fo=u((fF,Id)=>{"use strict";var gR=md(),mR=bd(),yR=mR(function(e,t,r){gR(e,t,r)});Id.exports=yR});var Sf=u(we=>{"use strict";we.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"};we.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"]};we.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};we.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};we.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};we.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]};we.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}};we.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}};we.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=we.aliasToReal,r={};for(var n in t){var a=t[n];e.call(r,a)?r[a].push(n):r[a]=[n]}return r}();we.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"};we.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};we.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}});var Ds=u((D$,wf)=>{"use strict";wf.exports={}});var xf=u((B$,_f)=>{"use strict";var ie=Sf(),eO=Ds(),vf=Array.prototype.push;function tO(e,t){return t==2?function(r,n){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}function Bs(e,t){return t==2?function(r,n){return e(r,n)}:function(r){return e(r)}}function Ef(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}function rO(e){return function(t){return e({},t)}}function nO(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&&vf.apply(i,o),t!=n&&vf.apply(i,a.slice(t+1)),e.apply(this,i)}}function Ns(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 Ms(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:eO,c="curry"in n&&n.curry,d="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},w=y.ary,C=y.assign,D=y.clone,L=y.curry,q=y.forEach,k=y.isArray,Ie=y.isError,ee=y.isFunction,Fe=y.isWeakMap,He=y.keys,Je=y.rearg,W=y.toInteger,B=y.toPath,Ot=He(ie.aryMethod),Ln={castArray:function(v){return function(){var A=arguments[0];return k(A)?v(Ef(A)):v.apply(void 0,arguments)}},iteratee:function(v){return function(){var A=arguments[0],b=arguments[1],E=v(A,b),P=E.length;return i.cap&&typeof b=="number"?(b=b>2?b-2:1,P&&P<=b?E:Bs(E,b)):E}},mixin:function(v){return function(A){var b=this;if(!ee(b))return v(b,Object(A));var E=[];return q(He(A),function(P){ee(A[P])&&E.push([P,b.prototype[P]])}),v(b,Object(A)),q(E,function(P){var Z=P[1];ee(Z)?b.prototype[P[0]]=Z:delete b.prototype[P[0]]}),b}},nthArg:function(v){return function(A){var b=A<0?1:W(A)+1;return L(v(A),b)}},rearg:function(v){return function(A,b){var E=b?b.length:0;return L(v(A,b),E)}},runInContext:function(v){return function(A){return Ms(e,v(A),n)}}};function R(v,A){if(i.cap){var b=ie.iterateeRearg[v];if(b)return K(A,b);var E=!a&&ie.iterateeAry[v];if(E)return G(A,E)}return A}function S(v,A,b){return c||i.curry&&b>1?L(A,b):A}function h(v,A,b){if(i.fixed&&(d||!ie.skipFixed[v])){var E=ie.methodSpread[v],P=E&&E.start;return P===void 0?w(A,b):nO(A,P)}return A}function _(v,A,b){return i.rearg&&b>1&&(m||!ie.skipRearg[v])?Je(A,ie.methodRearg[v]||ie.aryRearg[b]):A}function I(v,A){A=B(A);for(var b=-1,E=A.length,P=E-1,Z=D(Object(v)),me=Z;me!=null&&++b<E;){var Ue=A[b],ze=me[Ue];ze!=null&&!(ee(ze)||Ie(ze)||Fe(ze))&&(me[Ue]=D(b==P?ze:Object(ze))),me=me[Ue]}return Z}function O(v){return F.runInContext.convert(v)(void 0)}function T(v,A){var b=ie.aliasToReal[v]||v,E=ie.remap[b]||b,P=n;return function(Z){var me=a?g:y,Ue=a?g[E]:A,ze=C(C({},P),Z);return Ms(me,b,Ue,ze)}}function G(v,A){return X(v,function(b){return typeof b=="function"?Bs(b,A):b})}function K(v,A){return X(v,function(b){var E=A.length;return tO(Je(Bs(b,E),A),E)})}function X(v,A){return function(){var b=arguments.length;if(!b)return v();for(var E=Array(b);b--;)E[b]=arguments[b];var P=i.rearg?0:b-1;return E[P]=A(E[P]),v.apply(void 0,E)}}function ae(v,A,b){var E,P=ie.aliasToReal[v]||v,Z=A,me=Ln[P];return me?Z=me(A):i.immutable&&(ie.mutate.array[P]?Z=Ns(A,Ef):ie.mutate.object[P]?Z=Ns(A,rO(A)):ie.mutate.set[P]&&(Z=Ns(A,I))),q(Ot,function(Ue){return q(ie.aryMethod[Ue],function(ze){if(P==ze){var tu=ie.methodSpread[P],Mb=tu&&tu.afterRearg;return E=Mb?h(P,_(P,Z,Ue),Ue):_(P,h(P,Z,Ue),Ue),E=R(P,E),E=S(P,E,Ue),!1}}),!E}),E||(E=Z),E==A&&(E=c?L(E,1):function(){return A.apply(this,arguments)}),E.convert=T(P,A),E.placeholder=A.placeholder=b,E}if(!o)return ae(t,r,s);var F=r,qe=[];return q(Ot,function(v){q(ie.aryMethod[v],function(A){var b=F[ie.remap[A]||A];b&&qe.push([A,ae(A,b,F)])})}),q(He(F),function(v){var A=F[v];if(typeof A=="function"){for(var b=qe.length;b--;)if(qe[b][0]==v)return;A.convert=T(v,A),qe.push([v,A])}}),q(qe,function(v){F[v[0]]=v[1]}),F.convert=O,F.placeholder=F,q(He(F),function(v){q(ie.realToAlias[v]||[],function(A){F[A]=F[v]})}),F}_f.exports=Ms});var Gs=u((N$,Rf)=>{"use strict";var aO=St(),oO=Ae(),sO=aO(oO,"WeakMap");Rf.exports=sO});var ks=u((M$,Of)=>{"use strict";var Tf=Gs(),iO=Tf&&new Tf;Of.exports=iO});var Fs=u((G$,Cf)=>{"use strict";var uO=Zr(),Pf=ks(),pO=Pf?function(e,t){return Pf.set(e,t),e}:uO;Cf.exports=pO});var xn=u((k$,qf)=>{"use strict";var cO=pn(),lO=Be();function dO(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=cO(e.prototype),n=e.apply(r,t);return lO(n)?n:r}}qf.exports=dO});var Lf=u((F$,Uf)=>{"use strict";var fO=xn(),gO=Ae(),mO=1;function yO(e,t,r){var n=t&mO,a=fO(e);function o(){var i=this&&this!==gO&&this instanceof o?a:e;return i.apply(n?r:this,arguments)}return o}Uf.exports=yO});var $s=u(($$,Df)=>{"use strict";var hO=Math.max;function AO(e,t,r,n){for(var a=-1,o=e.length,i=r.length,s=-1,c=t.length,d=hO(o-i,0),m=Array(c+d),g=!n;++s<c;)m[s]=t[s];for(;++a<i;)(g||a<o)&&(m[r[a]]=e[a]);for(;d--;)m[s++]=e[a++];return m}Df.exports=AO});var Qs=u((Q$,Bf)=>{"use strict";var bO=Math.max;function IO(e,t,r,n){for(var a=-1,o=e.length,i=-1,s=r.length,c=-1,d=t.length,m=bO(o-s,0),g=Array(m+d),y=!n;++a<m;)g[a]=e[a];for(var w=a;++c<d;)g[w+c]=t[c];for(;++i<s;)(y||a<o)&&(g[w+r[i]]=e[a++]);return g}Bf.exports=IO});var Mf=u((j$,Nf)=>{"use strict";function SO(e,t){for(var r=e.length,n=0;r--;)e[r]===t&&++n;return n}Nf.exports=SO});var xa=u((W$,Gf)=>{"use strict";function wO(){}Gf.exports=wO});var Ta=u((V$,kf)=>{"use strict";var vO=pn(),EO=xa(),_O=4294967295;function Ra(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=_O,this.__views__=[]}Ra.prototype=vO(EO.prototype);Ra.prototype.constructor=Ra;kf.exports=Ra});var Ws=u((Y$,$f)=>{"use strict";var Ff=ks(),xO=xo(),RO=Ff?function(e){return Ff.get(e)}:xO;$f.exports=RO});var jf=u((K$,Qf)=>{"use strict";var TO={};Qf.exports=TO});var Yf=u((H$,Vf)=>{"use strict";var Wf=jf(),OO=Object.prototype,PO=OO.hasOwnProperty;function CO(e){for(var t=e.name+"",r=Wf[t],n=PO.call(Wf,t)?r.length:0;n--;){var a=r[n],o=a.func;if(o==null||o==e)return a.name}return t}Vf.exports=CO});var Vs=u((J$,Kf)=>{"use strict";var qO=pn(),UO=xa();function Oa(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}Oa.prototype=qO(UO.prototype);Oa.prototype.constructor=Oa;Kf.exports=Oa});var Jf=u((z$,Hf)=>{"use strict";var LO=Ta(),DO=Vs(),BO=ur();function NO(e){if(e instanceof LO)return e.clone();var t=new DO(e.__wrapped__,e.__chain__);return t.__actions__=BO(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}Hf.exports=NO});var Zf=u((X$,Xf)=>{"use strict";var MO=Ta(),zf=Vs(),GO=xa(),kO=de(),FO=_e(),$O=Jf(),QO=Object.prototype,jO=QO.hasOwnProperty;function Pa(e){if(FO(e)&&!kO(e)&&!(e instanceof MO)){if(e instanceof zf)return e;if(jO.call(e,"__wrapped__"))return $O(e)}return new zf(e)}Pa.prototype=GO.prototype;Pa.prototype.constructor=Pa;Xf.exports=Pa});var tg=u((Z$,eg)=>{"use strict";var WO=Ta(),VO=Ws(),YO=Yf(),KO=Zf();function HO(e){var t=YO(e),r=KO[t];if(typeof r!="function"||!(t in WO.prototype))return!1;if(e===r)return!0;var n=VO(r);return!!n&&e===n[0]}eg.exports=HO});var Ys=u((eQ,rg)=>{"use strict";var JO=Fs(),zO=Io(),XO=zO(JO);rg.exports=XO});var ag=u((tQ,ng)=>{"use strict";var ZO=/\{\n\/\* \[wrapped with (.+)\] \*/,eP=/,? & /;function tP(e){var t=e.match(ZO);return t?t[1].split(eP):[]}ng.exports=tP});var sg=u((rQ,og)=>{"use strict";var rP=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function nP(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(rP,`{
|
|
2
2
|
/* [wrapped with `+t+`] */
|
|
3
|
-
`)}sg.exports=rP});var Oa=u((Z$,ug)=>{"use strict";function nP(e,t){for(var r=-1,n=e==null?0:e.length;++r<n&&t(e[r],r,e)!==!1;);return e}ug.exports=nP});var cg=u((eQ,pg)=>{"use strict";var aP=Oa(),oP=vo(),sP=1,iP=2,uP=8,pP=16,cP=32,lP=64,dP=128,fP=256,gP=512,mP=[["ary",dP],["bind",sP],["bindKey",iP],["curry",uP],["curryRight",pP],["flip",gP],["partial",cP],["partialRight",lP],["rearg",fP]];function yP(e,t){return aP(mP,function(r){var n="_."+r[0];t&r[1]&&!oP(e,n)&&e.push(n)}),e.sort()}pg.exports=yP});var Ks=u((tQ,lg)=>{"use strict";var hP=og(),AP=ig(),bP=Jn(),IP=cg();function SP(e,t,r){var n=t+"";return bP(e,AP(n,IP(hP(n),r)))}lg.exports=SP});var Hs=u((rQ,gg)=>{"use strict";var wP=rg(),vP=Ys(),EP=Ks(),_P=1,xP=2,RP=4,TP=8,dg=32,fg=64;function OP(e,t,r,n,a,o,i,s,c,f){var d=t&TP,y=d?i:void 0,m=d?void 0:i,w=d?o:void 0,T=d?void 0:o;t|=d?dg:fg,t&=~(d?fg:dg),t&RP||(t&=~(_P|xP));var D=[e,t,a,w,y,T,m,s,c,f],L=r.apply(void 0,D);return wP(e)&&vP(L,D),L.placeholder=n,EP(L,e,t)}gg.exports=OP});var zs=u((nQ,mg)=>{"use strict";function PP(e){var t=e;return t.placeholder}mg.exports=PP});var hg=u((aQ,yg)=>{"use strict";var qP=ur(),CP=yn(),UP=Math.min;function LP(e,t){for(var r=e.length,n=UP(t.length,r),a=qP(e);n--;){var o=t[n];e[n]=CP(o,r)?a[o]:void 0}return e}yg.exports=LP});var Pa=u((oQ,bg)=>{"use strict";var Ag="__lodash_placeholder__";function DP(e,t){for(var r=-1,n=e.length,a=0,o=[];++r<n;){var i=e[r];(i===t||i===Ag)&&(e[r]=Ag,o[a++]=r)}return o}bg.exports=DP});var Js=u((sQ,wg)=>{"use strict";var BP=$s(),NP=Qs(),MP=Gf(),Ig=On(),GP=Hs(),kP=zs(),FP=hg(),$P=Pa(),QP=Ae(),jP=1,WP=2,VP=8,YP=16,KP=128,HP=512;function Sg(e,t,r,n,a,o,i,s,c,f){var d=t&KP,y=t&jP,m=t&WP,w=t&(VP|YP),T=t&HP,D=m?void 0:Ig(e);function L(){for(var U=arguments.length,k=Array(U),Ie=U;Ie--;)k[Ie]=arguments[Ie];if(w)var ee=kP(L),ke=MP(k,ee);if(n&&(k=BP(k,n,a,w)),o&&(k=NP(k,o,i,w)),U-=ke,w&&U<f){var He=$P(k,ee);return GP(e,t,Sg,L.placeholder,r,k,He,s,c,f-U)}var ze=y?r:this,W=m?ze[e]:e;return U=k.length,s?k=FP(k,s):T&&U>1&&k.reverse(),d&&c<U&&(k.length=c),this&&this!==QP&&this instanceof L&&(W=D||Ig(W)),W.apply(ze,k)}return L}wg.exports=Sg});var Eg=u((iQ,vg)=>{"use strict";var zP=zn(),JP=On(),XP=Js(),ZP=Hs(),eq=zs(),tq=Pa(),rq=Ae();function nq(e,t,r){var n=JP(e);function a(){for(var o=arguments.length,i=Array(o),s=o,c=eq(a);s--;)i[s]=arguments[s];var f=o<3&&i[0]!==c&&i[o-1]!==c?[]:tq(i,c);if(o-=f.length,o<r)return ZP(e,t,XP,a.placeholder,void 0,i,f,void 0,void 0,r-o);var d=this&&this!==rq&&this instanceof a?n:e;return zP(d,this,i)}return a}vg.exports=nq});var xg=u((uQ,_g)=>{"use strict";var aq=zn(),oq=On(),sq=Ae(),iq=1;function uq(e,t,r,n){var a=t&iq,o=oq(e);function i(){for(var s=-1,c=arguments.length,f=-1,d=n.length,y=Array(d+c),m=this&&this!==sq&&this instanceof i?o:e;++f<d;)y[f]=n[f];for(;c--;)y[f++]=arguments[++s];return aq(m,a?r:this,y)}return i}_g.exports=uq});var Cg=u((pQ,qg)=>{"use strict";var pq=$s(),cq=Qs(),Rg=Pa(),Tg="__lodash_placeholder__",Xs=1,lq=2,dq=4,Og=8,Pn=128,Pg=256,fq=Math.min;function gq(e,t){var r=e[1],n=t[1],a=r|n,o=a<(Xs|lq|Pn),i=n==Pn&&r==Og||n==Pn&&r==Pg&&e[7].length<=t[8]||n==(Pn|Pg)&&t[7].length<=t[8]&&r==Og;if(!(o||i))return e;n&Xs&&(e[2]=t[2],a|=r&Xs?0:dq);var s=t[3];if(s){var c=e[3];e[3]=c?pq(c,s,t[4]):s,e[4]=c?Rg(e[3],Tg):t[4]}return s=t[5],s&&(c=e[5],e[5]=c?cq(c,s,t[6]):s,e[6]=c?Rg(e[5],Tg):t[6]),s=t[7],s&&(e[7]=s),n&Pn&&(e[8]=e[8]==null?t[8]:fq(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=a,e}qg.exports=gq});var Lg=u((cQ,Ug)=>{"use strict";var mq=/\s/;function yq(e){for(var t=e.length;t--&&mq.test(e.charAt(t)););return t}Ug.exports=yq});var Bg=u((lQ,Dg)=>{"use strict";var hq=Lg(),Aq=/^\s+/;function bq(e){return e&&e.slice(0,hq(e)+1).replace(Aq,"")}Dg.exports=bq});var Sr=u((dQ,Ng)=>{"use strict";var Iq=bt(),Sq=_e(),wq="[object Symbol]";function vq(e){return typeof e=="symbol"||Sq(e)&&Iq(e)==wq}Ng.exports=vq});var Fg=u((fQ,kg)=>{"use strict";var Eq=Bg(),Mg=De(),_q=Sr(),Gg=0/0,xq=/^[-+]0x[0-9a-f]+$/i,Rq=/^0b[01]+$/i,Tq=/^0o[0-7]+$/i,Oq=parseInt;function Pq(e){if(typeof e=="number")return e;if(_q(e))return Gg;if(Mg(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=Mg(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=Eq(e);var r=Rq.test(e);return r||Tq.test(e)?Oq(e.slice(2),r?2:8):xq.test(e)?Gg:+e}kg.exports=Pq});var jg=u((gQ,Qg)=>{"use strict";var qq=Fg(),$g=1/0,Cq=17976931348623157e292;function Uq(e){if(!e)return e===0?e:0;if(e=qq(e),e===$g||e===-$g){var t=e<0?-1:1;return t*Cq}return e===e?e:0}Qg.exports=Uq});var Zs=u((mQ,Wg)=>{"use strict";var Lq=jg();function Dq(e){var t=Lq(e),r=t%1;return t===t?r?t-r:t:0}Wg.exports=Dq});var qa=u((yQ,zg)=>{"use strict";var Bq=Fs(),Nq=Df(),Mq=Eg(),Gq=Js(),kq=xg(),Fq=Ws(),$q=Cg(),Qq=Ys(),jq=Ks(),Vg=Zs(),Wq="Expected a function",Yg=1,Vq=2,ei=8,ti=16,ri=32,Kg=64,Hg=Math.max;function Yq(e,t,r,n,a,o,i,s){var c=t&Vq;if(!c&&typeof e!="function")throw new TypeError(Wq);var f=n?n.length:0;if(f||(t&=~(ri|Kg),n=a=void 0),i=i===void 0?i:Hg(Vg(i),0),s=s===void 0?s:Vg(s),f-=a?a.length:0,t&Kg){var d=n,y=a;n=a=void 0}var m=c?void 0:Fq(e),w=[e,t,r,n,a,d,y,o,i,s];if(m&&$q(w,m),e=w[0],t=w[1],r=w[2],n=w[3],a=w[4],s=w[9]=w[9]===void 0?c?0:e.length:Hg(w[9]-f,0),!s&&t&(ei|ti)&&(t&=~(ei|ti)),!t||t==Yg)var T=Nq(e,t,r);else t==ei||t==ti?T=Mq(e,t,s):(t==ri||t==(Yg|ri))&&!a.length?T=kq(e,t,r,n):T=Gq.apply(void 0,w);var D=m?Bq:Qq;return jq(D(T,w),e,t)}zg.exports=Yq});var Xg=u((hQ,Jg)=>{"use strict";var Kq=qa(),Hq=128;function zq(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,Kq(e,Hq,void 0,void 0,void 0,void 0,t)}Jg.exports=zq});var em=u((AQ,Zg)=>{"use strict";var Jq=Lo(),Xq=Jq(Object.keys,Object);Zg.exports=Xq});var ni=u((bQ,tm)=>{"use strict";var Zq=oa(),eC=em(),tC=Object.prototype,rC=tC.hasOwnProperty;function nC(e){if(!Zq(e))return eC(e);var t=[];for(var r in Object(e))rC.call(e,r)&&r!="constructor"&&t.push(r);return t}tm.exports=nC});var wr=u((IQ,rm)=>{"use strict";var aC=ko(),oC=ni(),sC=or();function iC(e){return sC(e)?aC(e):oC(e)}rm.exports=iC});var ai=u((SQ,nm)=>{"use strict";var uC=lr(),pC=wr();function cC(e,t){return e&&uC(t,pC(t),e)}nm.exports=cC});var om=u((wQ,am)=>{"use strict";var lC=lr(),dC=dr();function fC(e,t){return e&&lC(t,dC(t),e)}am.exports=fC});var im=u((vQ,sm)=>{"use strict";function gC(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}sm.exports=gC});var oi=u((EQ,um)=>{"use strict";function mC(){return[]}um.exports=mC});var Ca=u((_Q,cm)=>{"use strict";var yC=im(),hC=oi(),AC=Object.prototype,bC=AC.propertyIsEnumerable,pm=Object.getOwnPropertySymbols,IC=pm?function(e){return e==null?[]:(e=Object(e),yC(pm(e),function(t){return bC.call(e,t)}))}:hC;cm.exports=IC});var dm=u((xQ,lm)=>{"use strict";var SC=lr(),wC=Ca();function vC(e,t){return SC(e,wC(e),t)}lm.exports=vC});var si=u((RQ,fm)=>{"use strict";var EC=Hn(),_C=aa(),xC=Ca(),RC=oi(),TC=Object.getOwnPropertySymbols,OC=TC?function(e){for(var t=[];e;)EC(t,xC(e)),e=_C(e);return t}:RC;fm.exports=OC});var mm=u((TQ,gm)=>{"use strict";var PC=lr(),qC=si();function CC(e,t){return PC(e,qC(e),t)}gm.exports=CC});var ii=u((OQ,ym)=>{"use strict";var UC=Hn(),LC=de();function DC(e,t,r){var n=t(e);return LC(e)?n:UC(n,r(e))}ym.exports=DC});var ui=u((PQ,hm)=>{"use strict";var BC=ii(),NC=Ca(),MC=wr();function GC(e){return BC(e,MC,NC)}hm.exports=GC});var bm=u((qQ,Am)=>{"use strict";var kC=ii(),FC=si(),$C=dr();function QC(e){return kC(e,$C,FC)}Am.exports=QC});var Sm=u((CQ,Im)=>{"use strict";var jC=It(),WC=Ae(),VC=jC(WC,"DataView");Im.exports=VC});var vm=u((UQ,wm)=>{"use strict";var YC=It(),KC=Ae(),HC=YC(KC,"Promise");wm.exports=HC});var Er=u((LQ,Pm)=>{"use strict";var pi=Sm(),ci=Xn(),li=vm(),di=_o(),fi=Gs(),Om=bt(),vr=Ao(),Em="[object Map]",zC="[object Object]",_m="[object Promise]",xm="[object Set]",Rm="[object WeakMap]",Tm="[object DataView]",JC=vr(pi),XC=vr(ci),ZC=vr(li),eU=vr(di),tU=vr(fi),$t=Om;(pi&&$t(new pi(new ArrayBuffer(1)))!=Tm||ci&&$t(new ci)!=Em||li&&$t(li.resolve())!=_m||di&&$t(new di)!=xm||fi&&$t(new fi)!=Rm)&&($t=function(e){var t=Om(e),r=t==zC?e.constructor:void 0,n=r?vr(r):"";if(n)switch(n){case JC:return Tm;case XC:return Em;case ZC:return _m;case eU:return xm;case tU:return Rm}return t});Pm.exports=$t});var Cm=u((DQ,qm)=>{"use strict";var rU=Object.prototype,nU=rU.hasOwnProperty;function aU(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&nU.call(e,"index")&&(r.index=e.index,r.input=e.input),r}qm.exports=aU});var Lm=u((BQ,Um)=>{"use strict";var oU=na();function sU(e,t){var r=t?oU(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}Um.exports=sU});var Bm=u((NQ,Dm)=>{"use strict";var iU=/\w*$/;function uU(e){var t=new e.constructor(e.source,iU.exec(e));return t.lastIndex=e.lastIndex,t}Dm.exports=uU});var Fm=u((MQ,km)=>{"use strict";var Nm=Ut(),Mm=Nm?Nm.prototype:void 0,Gm=Mm?Mm.valueOf:void 0;function pU(e){return Gm?Object(Gm.call(e)):{}}km.exports=pU});var Qm=u((GQ,$m)=>{"use strict";var cU=na(),lU=Lm(),dU=Bm(),fU=Fm(),gU=Uo(),mU="[object Boolean]",yU="[object Date]",hU="[object Map]",AU="[object Number]",bU="[object RegExp]",IU="[object Set]",SU="[object String]",wU="[object Symbol]",vU="[object ArrayBuffer]",EU="[object DataView]",_U="[object Float32Array]",xU="[object Float64Array]",RU="[object Int8Array]",TU="[object Int16Array]",OU="[object Int32Array]",PU="[object Uint8Array]",qU="[object Uint8ClampedArray]",CU="[object Uint16Array]",UU="[object Uint32Array]";function LU(e,t,r){var n=e.constructor;switch(t){case vU:return cU(e);case mU:case yU:return new n(+e);case EU:return lU(e,r);case _U:case xU:case RU:case TU:case OU:case PU:case qU:case CU:case UU:return gU(e,r);case hU:return new n;case AU:case SU:return new n(e);case bU:return dU(e);case IU:return new n;case wU:return fU(e)}}$m.exports=LU});var Wm=u((kQ,jm)=>{"use strict";var DU=Er(),BU=_e(),NU="[object Map]";function MU(e){return BU(e)&&DU(e)==NU}jm.exports=MU});var Hm=u((FQ,Km)=>{"use strict";var GU=Wm(),kU=sa(),Vm=ia(),Ym=Vm&&Vm.isMap,FU=Ym?kU(Ym):GU;Km.exports=FU});var Jm=u(($Q,zm)=>{"use strict";var $U=Er(),QU=_e(),jU="[object Set]";function WU(e){return QU(e)&&$U(e)==jU}zm.exports=WU});var ty=u((QQ,ey)=>{"use strict";var VU=Jm(),YU=sa(),Xm=ia(),Zm=Xm&&Xm.isSet,KU=Zm?YU(Zm):VU;ey.exports=KU});var gi=u((jQ,oy)=>{"use strict";var HU=un(),zU=Oa(),JU=Go(),XU=ai(),ZU=om(),eL=qo(),tL=ur(),rL=dm(),nL=mm(),aL=ui(),oL=bm(),sL=Er(),iL=Cm(),uL=Qm(),pL=Do(),cL=de(),lL=fn(),dL=Hm(),fL=De(),gL=ty(),mL=wr(),yL=dr(),hL=1,AL=2,bL=4,ry="[object Arguments]",IL="[object Array]",SL="[object Boolean]",wL="[object Date]",vL="[object Error]",ny="[object Function]",EL="[object GeneratorFunction]",_L="[object Map]",xL="[object Number]",ay="[object Object]",RL="[object RegExp]",TL="[object Set]",OL="[object String]",PL="[object Symbol]",qL="[object WeakMap]",CL="[object ArrayBuffer]",UL="[object DataView]",LL="[object Float32Array]",DL="[object Float64Array]",BL="[object Int8Array]",NL="[object Int16Array]",ML="[object Int32Array]",GL="[object Uint8Array]",kL="[object Uint8ClampedArray]",FL="[object Uint16Array]",$L="[object Uint32Array]",$={};$[ry]=$[IL]=$[CL]=$[UL]=$[SL]=$[wL]=$[LL]=$[DL]=$[BL]=$[NL]=$[ML]=$[_L]=$[xL]=$[ay]=$[RL]=$[TL]=$[OL]=$[PL]=$[GL]=$[kL]=$[FL]=$[$L]=!0;$[vL]=$[ny]=$[qL]=!1;function Ua(e,t,r,n,a,o){var i,s=t&hL,c=t&AL,f=t&bL;if(r&&(i=a?r(e,n,a,o):r(e)),i!==void 0)return i;if(!fL(e))return e;var d=cL(e);if(d){if(i=iL(e),!s)return tL(e,i)}else{var y=sL(e),m=y==ny||y==EL;if(lL(e))return eL(e,s);if(y==ay||y==ry||m&&!a){if(i=c||m?{}:pL(e),!s)return c?nL(e,ZU(i,e)):rL(e,XU(i,e))}else{if(!$[y])return a?e:{};i=uL(e,y,s)}}o||(o=new HU);var w=o.get(e);if(w)return w;o.set(e,i),gL(e)?e.forEach(function(L){i.add(Ua(L,t,r,L,e,o))}):dL(e)&&e.forEach(function(L,U){i.set(U,Ua(L,t,r,U,e,o))});var T=f?c?oL:aL:c?yL:mL,D=d?void 0:T(e);return zU(D||e,function(L,U){D&&(U=L,L=e[U]),JU(i,U,Ua(L,t,r,U,e,o))}),i}oy.exports=Ua});var iy=u((WQ,sy)=>{"use strict";var QL=gi(),jL=4;function WL(e){return QL(e,jL)}sy.exports=WL});var py=u((VQ,uy)=>{"use strict";var VL=qa(),YL=8;function mi(e,t,r){t=r?void 0:t;var n=VL(e,YL,void 0,void 0,void 0,void 0,void 0,t);return n.placeholder=mi.placeholder,n}mi.placeholder={};uy.exports=mi});var ly=u((YQ,cy)=>{"use strict";var KL=bt(),HL=_e(),zL=Bo(),JL="[object DOMException]",XL="[object Error]";function ZL(e){if(!HL(e))return!1;var t=KL(e);return t==XL||t==JL||typeof e.message=="string"&&typeof e.name=="string"&&!zL(e)}cy.exports=ZL});var fy=u((KQ,dy)=>{"use strict";var eD=Er(),tD=_e(),rD="[object WeakMap]";function nD(e){return tD(e)&&eD(e)==rD}dy.exports=nD});var my=u((HQ,gy)=>{"use strict";function aD(e,t){for(var r=-1,n=e==null?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}gy.exports=aD});var yi=u((zQ,yy)=>{"use strict";var oD=wo(),sD=my(),iD=Eo(),uD=1,pD=2;function cD(e,t,r,n,a,o){var i=r&uD,s=e.length,c=t.length;if(s!=c&&!(i&&c>s))return!1;var f=o.get(e),d=o.get(t);if(f&&d)return f==t&&d==e;var y=-1,m=!0,w=r&pD?new oD:void 0;for(o.set(e,t),o.set(t,e);++y<s;){var T=e[y],D=t[y];if(n)var L=i?n(D,T,y,t,e,o):n(T,D,y,e,t,o);if(L!==void 0){if(L)continue;m=!1;break}if(w){if(!sD(t,function(U,k){if(!iD(w,k)&&(T===U||a(T,U,r,n,o)))return w.push(k)})){m=!1;break}}else if(!(T===D||a(T,D,r,n,o))){m=!1;break}}return o.delete(e),o.delete(t),m}yy.exports=cD});var Ay=u((JQ,hy)=>{"use strict";function lD(e){var t=-1,r=Array(e.size);return e.forEach(function(n,a){r[++t]=[a,n]}),r}hy.exports=lD});var vy=u((XQ,wy)=>{"use strict";var by=Ut(),Iy=Co(),dD=rr(),fD=yi(),gD=Ay(),mD=ta(),yD=1,hD=2,AD="[object Boolean]",bD="[object Date]",ID="[object Error]",SD="[object Map]",wD="[object Number]",vD="[object RegExp]",ED="[object Set]",_D="[object String]",xD="[object Symbol]",RD="[object ArrayBuffer]",TD="[object DataView]",Sy=by?by.prototype:void 0,hi=Sy?Sy.valueOf:void 0;function OD(e,t,r,n,a,o,i){switch(r){case TD:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case RD:return!(e.byteLength!=t.byteLength||!o(new Iy(e),new Iy(t)));case AD:case bD:case wD:return dD(+e,+t);case ID:return e.name==t.name&&e.message==t.message;case vD:case _D:return e==t+"";case SD:var s=gD;case ED:var c=n&yD;if(s||(s=mD),e.size!=t.size&&!c)return!1;var f=i.get(e);if(f)return f==t;n|=hD,i.set(e,t);var d=fD(s(e),s(t),n,a,o,i);return i.delete(e),d;case xD:if(hi)return hi.call(e)==hi.call(t)}return!1}wy.exports=OD});var xy=u((ZQ,_y)=>{"use strict";var Ey=ui(),PD=1,qD=Object.prototype,CD=qD.hasOwnProperty;function UD(e,t,r,n,a,o){var i=r&PD,s=Ey(e),c=s.length,f=Ey(t),d=f.length;if(c!=d&&!i)return!1;for(var y=c;y--;){var m=s[y];if(!(i?m in t:CD.call(t,m)))return!1}var w=o.get(e),T=o.get(t);if(w&&T)return w==t&&T==e;var D=!0;o.set(e,t),o.set(t,e);for(var L=i;++y<c;){m=s[y];var U=e[m],k=t[m];if(n)var Ie=i?n(k,U,m,t,e,o):n(U,k,m,e,t,o);if(!(Ie===void 0?U===k||a(U,k,r,n,o):Ie)){D=!1;break}L||(L=m=="constructor")}if(D&&!L){var ee=e.constructor,ke=t.constructor;ee!=ke&&"constructor"in e&&"constructor"in t&&!(typeof ee=="function"&&ee instanceof ee&&typeof ke=="function"&&ke instanceof ke)&&(D=!1)}return o.delete(e),o.delete(t),D}_y.exports=UD});var Ly=u((ej,Uy)=>{"use strict";var Ai=un(),LD=yi(),DD=vy(),BD=xy(),Ry=Er(),Ty=de(),Oy=fn(),ND=ua(),MD=1,Py="[object Arguments]",qy="[object Array]",La="[object Object]",GD=Object.prototype,Cy=GD.hasOwnProperty;function kD(e,t,r,n,a,o){var i=Ty(e),s=Ty(t),c=i?qy:Ry(e),f=s?qy:Ry(t);c=c==Py?La:c,f=f==Py?La:f;var d=c==La,y=f==La,m=c==f;if(m&&Oy(e)){if(!Oy(t))return!1;i=!0,d=!1}if(m&&!d)return o||(o=new Ai),i||ND(e)?LD(e,t,r,n,a,o):DD(e,t,c,r,n,a,o);if(!(r&MD)){var w=d&&Cy.call(e,"__wrapped__"),T=y&&Cy.call(t,"__wrapped__");if(w||T){var D=w?e.value():e,L=T?t.value():t;return o||(o=new Ai),a(D,L,r,n,o)}}return m?(o||(o=new Ai),BD(e,t,r,n,a,o)):!1}Uy.exports=kD});var bi=u((tj,Ny)=>{"use strict";var FD=Ly(),Dy=_e();function By(e,t,r,n,a){return e===t?!0:e==null||t==null||!Dy(e)&&!Dy(t)?e!==e&&t!==t:FD(e,t,r,n,By,a)}Ny.exports=By});var Gy=u((rj,My)=>{"use strict";var $D=un(),QD=bi(),jD=1,WD=2;function VD(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],d=s[1];if(i&&s[2]){if(f===void 0&&!(c in e))return!1}else{var y=new $D;if(n)var m=n(f,d,c,e,t,y);if(!(m===void 0?QD(d,f,jD|WD,n,y):m))return!1}}return!0}My.exports=VD});var Ii=u((nj,ky)=>{"use strict";var YD=De();function KD(e){return e===e&&!YD(e)}ky.exports=KD});var $y=u((aj,Fy)=>{"use strict";var HD=Ii(),zD=wr();function JD(e){for(var t=zD(e),r=t.length;r--;){var n=t[r],a=e[n];t[r]=[n,a,HD(a)]}return t}Fy.exports=JD});var Si=u((oj,Qy)=>{"use strict";function XD(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}Qy.exports=XD});var Wy=u((sj,jy)=>{"use strict";var ZD=Gy(),eB=$y(),tB=Si();function rB(e){var t=eB(e);return t.length==1&&t[0][2]?tB(t[0][0],t[0][1]):function(r){return r===e||ZD(r,e,t)}}jy.exports=rB});var Da=u((ij,Vy)=>{"use strict";var nB=de(),aB=Sr(),oB=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,sB=/^\w*$/;function iB(e,t){if(nB(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||aB(e)?!0:sB.test(e)||!oB.test(e)||t!=null&&e in Object(t)}Vy.exports=iB});var Hy=u((uj,Ky)=>{"use strict";var Yy=Zn(),uB="Expected a function";function wi(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(uB);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(wi.Cache||Yy),r}wi.Cache=Yy;Ky.exports=wi});var Jy=u((pj,zy)=>{"use strict";var pB=Hy(),cB=500;function lB(e){var t=pB(e,function(n){return r.size===cB&&r.clear(),n}),r=t.cache;return t}zy.exports=lB});var vi=u((cj,Xy)=>{"use strict";var dB=Jy(),fB=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,gB=/\\(\\)?/g,mB=dB(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(fB,function(r,n,a,o){t.push(a?o.replace(gB,"$1"):n||r)}),t});Xy.exports=mB});var Ei=u((lj,Zy)=>{"use strict";function yB(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=yB});var oh=u((dj,ah)=>{"use strict";var eh=Ut(),hB=Ei(),AB=de(),bB=Sr(),IB=1/0,th=eh?eh.prototype:void 0,rh=th?th.toString:void 0;function nh(e){if(typeof e=="string")return e;if(AB(e))return hB(e,nh)+"";if(bB(e))return rh?rh.call(e):"";var t=e+"";return t=="0"&&1/e==-IB?"-0":t}ah.exports=nh});var _i=u((fj,sh)=>{"use strict";var SB=oh();function wB(e){return e==null?"":SB(e)}sh.exports=wB});var xi=u((gj,ih)=>{"use strict";var vB=de(),EB=Da(),_B=vi(),xB=_i();function RB(e,t){return vB(e)?e:EB(e,t)?[e]:_B(xB(e))}ih.exports=RB});var _r=u((mj,uh)=>{"use strict";var TB=Sr(),OB=1/0;function PB(e){if(typeof e=="string"||TB(e))return e;var t=e+"";return t=="0"&&1/e==-OB?"-0":t}uh.exports=PB});var Ri=u((yj,ph)=>{"use strict";var qB=xi(),CB=_r();function UB(e,t){t=qB(t,e);for(var r=0,n=t.length;e!=null&&r<n;)e=e[CB(t[r++])];return r&&r==n?e:void 0}ph.exports=UB});var lh=u((hj,ch)=>{"use strict";var LB=Ri();function DB(e,t,r){var n=e==null?void 0:LB(e,t);return n===void 0?r:n}ch.exports=DB});var fh=u((Aj,dh)=>{"use strict";function BB(e,t){return e!=null&&t in Object(e)}dh.exports=BB});var mh=u((bj,gh)=>{"use strict";var NB=xi(),MB=en(),GB=de(),kB=yn(),FB=ra(),$B=_r();function QB(e,t,r){t=NB(t,e);for(var n=-1,a=t.length,o=!1;++n<a;){var i=$B(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&&FB(a)&&kB(i,a)&&(GB(e)||MB(e)))}gh.exports=QB});var hh=u((Ij,yh)=>{"use strict";var jB=fh(),WB=mh();function VB(e,t){return e!=null&&WB(e,t,jB)}yh.exports=VB});var bh=u((Sj,Ah)=>{"use strict";var YB=bi(),KB=lh(),HB=hh(),zB=Da(),JB=Ii(),XB=Si(),ZB=_r(),eN=1,tN=2;function rN(e,t){return zB(e)&&JB(t)?XB(ZB(e),t):function(r){var n=KB(r,e);return n===void 0&&n===t?HB(r,e):YB(t,n,eN|tN)}}Ah.exports=rN});var Sh=u((wj,Ih)=>{"use strict";function nN(e){return function(t){return t?.[e]}}Ih.exports=nN});var vh=u((vj,wh)=>{"use strict";var aN=Ri();function oN(e){return function(t){return aN(t,e)}}wh.exports=oN});var _h=u((Ej,Eh)=>{"use strict";var sN=Sh(),iN=vh(),uN=Da(),pN=_r();function cN(e){return uN(e)?sN(pN(e)):iN(e)}Eh.exports=cN});var Ti=u((_j,xh)=>{"use strict";var lN=Wy(),dN=bh(),fN=tn(),gN=de(),mN=_h();function yN(e){return typeof e=="function"?e:e==null?fN:typeof e=="object"?gN(e)?dN(e[0],e[1]):lN(e):mN(e)}xh.exports=yN});var Th=u((xj,Rh)=>{"use strict";var hN=gi(),AN=Ti(),bN=1;function IN(e){return AN(typeof e=="function"?e:hN(e,bN))}Rh.exports=IN});var Ph=u((Rj,Oh)=>{"use strict";var SN=mo();function wN(e){var t=e==null?0:e.length;return t?SN(e,1):[]}Oh.exports=wN});var Ch=u((Tj,qh)=>{"use strict";var vN=Ph(),EN=yo(),_N=Jn();function xN(e){return _N(EN(e,void 0,vN),e+"")}qh.exports=xN});var Lh=u((Oj,Uh)=>{"use strict";var RN=qa(),TN=Ch(),ON=256,PN=TN(function(e,t){return RN(e,ON,void 0,void 0,void 0,t)});Uh.exports=PN});var Bh=u((Pj,Dh)=>{"use strict";var qN=Ei(),CN=ur(),UN=de(),LN=Sr(),DN=vi(),BN=_r(),NN=_i();function MN(e){return UN(e)?qN(e,BN):LN(e)?[e]:CN(DN(NN(e)))}Dh.exports=MN});var Mh=u((qj,Nh)=>{"use strict";Nh.exports={ary:Xg(),assign:ai(),clone:iy(),curry:py(),forEach:Oa(),isArray:de(),isError:ly(),isFunction:rn(),isWeakMap:fy(),iteratee:Th(),keys:ni(),rearg:Lh(),toInteger:Zs(),toPath:Bh()}});var kh=u((Cj,Gh)=>{"use strict";var GN=Rf(),kN=Mh();function FN(e,t,r){return GN(kN,e,t,r)}Gh.exports=FN});var Oi=u((Uj,$h)=>{"use strict";var $N=kh(),Fh=$N("merge",Fo());Fh.placeholder=Ds();$h.exports=Fh});var Yh=u((Pi,qi)=>{"use strict";(function(e,t){typeof Pi=="object"&&typeof qi<"u"?qi.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs=t()})(Pi,function(){"use strict";var e=1e3,t=6e4,r=36e5,n="millisecond",a="second",o="minute",i="hour",s="day",c="week",f="month",d="quarter",y="year",m="date",w="Invalid Date",T=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,D=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,L={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(R){var S=["th","st","nd","rd"],h=R%100;return"["+R+(S[(h-20)%10]||S[h]||S[0])+"]"}},U=function(R,S,h){var _=String(R);return!_||_.length>=S?R:""+Array(S+1-_.length).join(h)+R},k={s:U,z:function(R){var S=-R.utcOffset(),h=Math.abs(S),_=Math.floor(h/60),I=h%60;return(S<=0?"+":"-")+U(_,2,"0")+":"+U(I,2,"0")},m:function R(S,h){if(S.date()<h.date())return-R(h,S);var _=12*(h.year()-S.year())+(h.month()-S.month()),I=S.clone().add(_,f),P=h-I<0,O=S.clone().add(_+(P?-1:1),f);return+(-(_+(h-I)/(P?I-O:O-I))||0)},a:function(R){return R<0?Math.ceil(R)||0:Math.floor(R)},p:function(R){return{M:f,y,w:c,d:s,D:m,h:i,m:o,s:a,ms:n,Q:d}[R]||String(R||"").toLowerCase().replace(/s$/,"")},u:function(R){return R===void 0}},Ie="en",ee={};ee[Ie]=L;var ke="$isDayjsObject",He=function(R){return R instanceof Tt||!(!R||!R[ke])},ze=function R(S,h,_){var I;if(!S)return Ie;if(typeof S=="string"){var P=S.toLowerCase();ee[P]&&(I=P),h&&(ee[P]=h,I=P);var O=S.split("-");if(!I&&O.length>1)return R(O[0])}else{var M=S.name;ee[M]=S,I=M}return!_&&I&&(Ie=I),I||!_&&Ie},W=function(R,S){if(He(R))return R.clone();var h=typeof S=="object"?S:{};return h.date=R,h.args=arguments,new Tt(h)},B=k;B.l=ze,B.i=He,B.w=function(R,S){return W(R,{locale:S.$L,utc:S.$u,x:S.$x,$offset:S.$offset})};var Tt=function(){function R(h){this.$L=ze(h.locale,null,!0),this.parse(h),this.$x=this.$x||h.x||{},this[ke]=!0}var S=R.prototype;return S.parse=function(h){this.$d=function(_){var I=_.date,P=_.utc;if(I===null)return new Date(NaN);if(B.u(I))return new Date;if(I instanceof Date)return new Date(I);if(typeof I=="string"&&!/Z$/i.test(I)){var O=I.match(T);if(O){var M=O[2]-1||0,K=(O[7]||"0").substring(0,3);return P?new Date(Date.UTC(O[1],M,O[3]||1,O[4]||0,O[5]||0,O[6]||0,K)):new Date(O[1],M,O[3]||1,O[4]||0,O[5]||0,O[6]||0,K)}}return new Date(I)}(h),this.init()},S.init=function(){var h=this.$d;this.$y=h.getFullYear(),this.$M=h.getMonth(),this.$D=h.getDate(),this.$W=h.getDay(),this.$H=h.getHours(),this.$m=h.getMinutes(),this.$s=h.getSeconds(),this.$ms=h.getMilliseconds()},S.$utils=function(){return B},S.isValid=function(){return this.$d.toString()!==w},S.isSame=function(h,_){var I=W(h);return this.startOf(_)<=I&&I<=this.endOf(_)},S.isAfter=function(h,_){return W(h)<this.startOf(_)},S.isBefore=function(h,_){return this.endOf(_)<W(h)},S.$g=function(h,_,I){return B.u(h)?this[_]:this.set(I,h)},S.unix=function(){return Math.floor(this.valueOf()/1e3)},S.valueOf=function(){return this.$d.getTime()},S.startOf=function(h,_){var I=this,P=!!B.u(_)||_,O=B.p(h),M=function(b,E){var q=B.w(I.$u?Date.UTC(I.$y,E,b):new Date(I.$y,E,b),I);return P?q:q.endOf(s)},K=function(b,E){return B.w(I.toDate()[b].apply(I.toDate("s"),(P?[0,0,0,0]:[23,59,59,999]).slice(E)),I)},X=this.$W,ae=this.$M,F=this.$D,qe="set"+(this.$u?"UTC":"");switch(O){case y:return P?M(1,0):M(31,11);case f:return P?M(1,ae):M(0,ae+1);case c:var v=this.$locale().weekStart||0,A=(X<v?X+7:X)-v;return M(P?F-A:F+(6-A),ae);case s:case m:return K(qe+"Hours",0);case i:return K(qe+"Minutes",1);case o:return K(qe+"Seconds",2);case a:return K(qe+"Milliseconds",3);default:return this.clone()}},S.endOf=function(h){return this.startOf(h,!1)},S.$set=function(h,_){var I,P=B.p(h),O="set"+(this.$u?"UTC":""),M=(I={},I[s]=O+"Date",I[m]=O+"Date",I[f]=O+"Month",I[y]=O+"FullYear",I[i]=O+"Hours",I[o]=O+"Minutes",I[a]=O+"Seconds",I[n]=O+"Milliseconds",I)[P],K=P===s?this.$D+(_-this.$W):_;if(P===f||P===y){var X=this.clone().set(m,1);X.$d[M](K),X.init(),this.$d=X.set(m,Math.min(this.$D,X.daysInMonth())).$d}else M&&this.$d[M](K);return this.init(),this},S.set=function(h,_){return this.clone().$set(h,_)},S.get=function(h){return this[B.p(h)]()},S.add=function(h,_){var I,P=this;h=Number(h);var O=B.p(_),M=function(ae){var F=W(P);return B.w(F.date(F.date()+Math.round(ae*h)),P)};if(O===f)return this.set(f,this.$M+h);if(O===y)return this.set(y,this.$y+h);if(O===s)return M(1);if(O===c)return M(7);var K=(I={},I[o]=t,I[i]=r,I[a]=e,I)[O]||1,X=this.$d.getTime()+h*K;return B.w(X,this)},S.subtract=function(h,_){return this.add(-1*h,_)},S.format=function(h){var _=this,I=this.$locale();if(!this.isValid())return I.invalidDate||w;var P=h||"YYYY-MM-DDTHH:mm:ssZ",O=B.z(this),M=this.$H,K=this.$m,X=this.$M,ae=I.weekdays,F=I.months,qe=I.meridiem,v=function(E,q,Z,me){return E&&(E[q]||E(_,P))||Z[q].slice(0,me)},A=function(E){return B.s(M%12||12,E,"0")},b=qe||function(E,q,Z){var me=E<12?"AM":"PM";return Z?me.toLowerCase():me};return P.replace(D,function(E,q){return q||function(Z){switch(Z){case"YY":return String(_.$y).slice(-2);case"YYYY":return B.s(_.$y,4,"0");case"M":return X+1;case"MM":return B.s(X+1,2,"0");case"MMM":return v(I.monthsShort,X,F,3);case"MMMM":return v(F,X);case"D":return _.$D;case"DD":return B.s(_.$D,2,"0");case"d":return String(_.$W);case"dd":return v(I.weekdaysMin,_.$W,ae,2);case"ddd":return v(I.weekdaysShort,_.$W,ae,3);case"dddd":return ae[_.$W];case"H":return String(M);case"HH":return B.s(M,2,"0");case"h":return A(1);case"hh":return A(2);case"a":return b(M,K,!0);case"A":return b(M,K,!1);case"m":return String(K);case"mm":return B.s(K,2,"0");case"s":return String(_.$s);case"ss":return B.s(_.$s,2,"0");case"SSS":return B.s(_.$ms,3,"0");case"Z":return O}return null}(E)||O.replace(":","")})},S.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},S.diff=function(h,_,I){var P,O=this,M=B.p(_),K=W(h),X=(K.utcOffset()-this.utcOffset())*t,ae=this-K,F=function(){return B.m(O,K)};switch(M){case y:P=F()/12;break;case f:P=F();break;case d:P=F()/3;break;case c:P=(ae-X)/6048e5;break;case s:P=(ae-X)/864e5;break;case i:P=ae/r;break;case o:P=ae/t;break;case a:P=ae/e;break;default:P=ae}return I?P:B.a(P)},S.daysInMonth=function(){return this.endOf(f).$D},S.$locale=function(){return ee[this.$L]},S.locale=function(h,_){if(!h)return this.$L;var I=this.clone(),P=ze(h,_,!0);return P&&(I.$L=P),I},S.clone=function(){return B.w(this.$d,this)},S.toDate=function(){return new Date(this.valueOf())},S.toJSON=function(){return this.isValid()?this.toISOString():null},S.toISOString=function(){return this.$d.toISOString()},S.toString=function(){return this.$d.toUTCString()},R}(),Dn=Tt.prototype;return W.prototype=Dn,[["$ms",n],["$s",a],["$m",o],["$H",i],["$W",s],["$M",f],["$y",y],["$D",m]].forEach(function(R){Dn[R[1]]=function(S){return this.$g(S,R[0],R[1])}}),W.extend=function(R,S){return R.$i||(R(S,Tt,W),R.$i=!0),W},W.locale=ze,W.isDayjs=He,W.unix=function(R){return W(1e3*R)},W.en=ee[Ie],W.Ls=ee,W.p={},W})});var ab=u((kW,nb)=>{"use strict";function fM(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}nb.exports=fM});var sb=u((FW,ob)=>{"use strict";var gM=Po(),mM=wr();function yM(e,t){return e&&gM(e,t,mM)}ob.exports=yM});var ub=u(($W,ib)=>{"use strict";var hM=or();function AM(e,t){return function(r,n){if(r==null)return r;if(!hM(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}}ib.exports=AM});var cb=u((QW,pb)=>{"use strict";var bM=sb(),IM=ub(),SM=IM(bM);pb.exports=SM});var fb=u((jW,lb)=>{"use strict";var wM=cb();function vM(e,t,r,n){return wM(e,function(a,o,i){t(n,a,r(a),i)}),n}lb.exports=vM});var mb=u((WW,gb)=>{"use strict";var EM=ab(),_M=fb(),xM=Ti(),RM=de();function TM(e,t){return function(r,n){var a=RM(r)?EM:_M,o=t?t():{};return a(r,e,xM(n,2),o)}}gb.exports=TM});var hb=u((VW,yb)=>{"use strict";var OM=pn(),PM=mb(),qM=Object.prototype,CM=qM.hasOwnProperty,UM=PM(function(e,t,r){CM.call(e,r)?e[r].push(t):OM(e,r,[t])});yb.exports=UM});var WM={};x(WM,{Method:()=>Va,ai:()=>ki,api:()=>Ji,auditLogs:()=>vt,automations:()=>Aa,backups:()=>Ne,branding:()=>fa,constants:()=>Kr,environmentVariables:()=>ot,features:()=>Re,groups:()=>J,init:()=>Sf,licensing:()=>tt,logger:()=>Qt,mappers:()=>ne,middleware:()=>Bi,plugins:()=>ba,publicApi:()=>wa,quotas:()=>Ve,scimGroups:()=>xr,scimUsers:()=>ve,sdk:()=>Ci,users:()=>lt,utils:()=>er});module.exports=$b(WM);var Va=(o=>(o.POST="POST",o.GET="GET",o.PATCH="PATCH",o.DELETE="DELETE",o.PUT="PUT",o))(Va||{});var Ci={};x(Ci,{ai:()=>gr,auditLogs:()=>vt,automations:()=>Aa,backups:()=>Ne,branding:()=>fa,environmentVariables:()=>ot,features:()=>Re,groups:()=>J,init:()=>Sf,licensing:()=>tt,logger:()=>Qt,plugins:()=>ba,publicApi:()=>wa,quotas:()=>Ve,scimGroups:()=>xr,scimUsers:()=>ve,users:()=>lt,utils:()=>er});var fa={};x(fa,{getBrandingConfig:()=>DR});var Re={};x(Re,{checkBackups:()=>xe,checkFeature:()=>la,checkFeatures:()=>zo,checkSCIM:()=>es,isAICustomConfigsEnabled:()=>UR,isAppBuildersEnabled:()=>Bt,isAuditLogsEnabled:()=>da,isBackupsEnabled:()=>Jo,isBrandingEnabled:()=>Xo,isBudibaseAIEnabled:()=>In,isEnforceableSSO:()=>Ud,isExpandedPublicApiEnabled:()=>ct,isSSOEnforced:()=>PR,isSyncAutomationsEnabled:()=>TR,isTriggerAutomationRunEnabled:()=>OR,isUserGroupsEnabled:()=>Zo,isViewPermissionEnabled:()=>qR,isViewReadonlyColumnsEnabled:()=>CR});var fe=require("@budibase/types"),pt=require("@budibase/backend-core");var tt={};x(tt,{cache:()=>$e,client:()=>At,features:()=>Yn,getFreeLicense:()=>Ko,getLicense:()=>Yo,keys:()=>Ho,offline:()=>pa,quotas:()=>Kn});var $e={};x($e,{getCachedLicense:()=>qd,invalidate:()=>Cd,refresh:()=>Lt});var Ya=require("@budibase/backend-core"),Pr,Qb=async()=>{Pr=await new Ya.redis.Client(Ya.redis.utils.Databases.LICENSES).init()},jb=async()=>{Pr&&await Pr.finish()};process.on("exit",async()=>{await jb()});var Ka=async()=>(Pr||await Qb(),Pr);var At={};x(At,{activateLicenseKey:()=>po,getLicense:()=>Xt,triggerQuota:()=>qI});var ru=N(require("node-fetch"));var nu=require("@budibase/backend-core"),Ha=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}},za=Ha;var Vn=require("@budibase/types"),G=require("@budibase/backend-core");var Xe={};x(Xe,{bustCache:()=>su,getCurrentUsageValues:()=>cu,getQuotaUsage:()=>Ot,setAllUsage:()=>to,setAppUsageValue:()=>eo,setUsage:()=>iu,setUsagePerApp:()=>uu,utils:()=>Cr});var ye=require("@budibase/types"),le=require("@budibase/backend-core");var Cr={};x(Cr,{generateBaseQuotaUsage:()=>Mn,generateNewMonthlyQuotas:()=>qr,generateNewQuotaUsage:()=>Xa,getBreakdownName:()=>kn,getCurrentMonthString:()=>mt,setCurrentMonth:()=>Gn,setQuotaReset:()=>Ja});var ue=require("@budibase/types"),Nn=require("@budibase/backend-core"),au=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},Ja=e=>{e.quotaReset=au()},mt=()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},Mn=()=>({usageQuota:{[ue.StaticQuotaName.APPS]:0,[ue.StaticQuotaName.ROWS]:0,[ue.StaticQuotaName.PLUGINS]:0,[ue.StaticQuotaName.USERS]:0,[ue.StaticQuotaName.CREATORS]:0,[ue.StaticQuotaName.USER_GROUPS]:0,[ue.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[mt()]:qr()}}),Xa=()=>{let e={_id:Nn.db.StaticDatabases.GLOBAL.docs.usageQuota,quotaReset:au(),...Mn(),apps:{}};return Gn(e),e},qr=()=>({[ue.MonthlyQuotaName.QUERIES]:0,[ue.MonthlyQuotaName.AUTOMATIONS]:0,[ue.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,triggers:{}}),Gn=e=>{let t=mt();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=qr()),e.monthly.current=e.monthly[t]},kn=(e,t)=>{if(!(!t||!e))switch(e){case ue.MonthlyQuotaName.AUTOMATIONS:return ue.BreakdownQuotaName.AUTOMATIONS;case ue.MonthlyQuotaName.QUERIES:return Nn.db.isTableId(t)?ue.BreakdownQuotaName.ROW_QUERIES:Nn.db.isDatasourceId(t)?ue.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}};var Vb=le.Duration.fromSeconds(60).toMs(),{Writethrough:Yb}=le.cache.writethrough;function Kb(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 Za=()=>new Yb(le.tenancy.getGlobalDB(),Vb),su=async()=>{let e=le.tenancy.getGlobalDB();try{let t=await e.get(le.db.StaticDatabases.GLOBAL.docs.usageQuota);t?._rev&&await e.remove(le.db.StaticDatabases.GLOBAL.docs.usageQuota,t._rev)}catch(t){if(t.status!==404)throw t}},Ot=async()=>{let e=Za(),t;try{t=await e.get(le.db.StaticDatabases.GLOBAL.docs.usageQuota),Gn(t),Ja(t)}catch(r){if(r.status===404){t=Xa();let n=await e.put(t);t._rev=n.rev}else throw r}return Kb(t)},iu=async(e,t,r)=>to({name:t,type:r,values:{total:e}}),uu=async(e,t,r)=>{let n=Za(),a=await Ot(),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},Hb=(e,t,r,n)=>{let a=kn(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},eo=(e,t,r,n={},a)=>{let o;try{o=le.db.getProdAppID(n?.appId||le.context.getAppId())}catch{}if(!o||!a.app||!ye.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[o]||(e.apps={...e.apps,[o]:Mn()});let i=e.apps[o];switch(r){case ye.QuotaUsageType.STATIC:i.usageQuota[t]=a.app;break;case ye.QuotaUsageType.MONTHLY:{let s=mt(),c=t,f=i.monthly[s];f||(i.monthly[s]=qr(),f=i.monthly[s]),f[c]=a.app,ye.BREAKDOWN_QUOTA_NAMES.includes(c)&&n?.id&&(f=Hb(f,c,n.id,a));break}}return e},ou=(e,t,r,n)=>{if(!ye.APP_QUOTA_NAMES.includes(r))return{};let a;try{a=le.db.getProdAppID(le.context.getAppId())}catch{}if(!a||!e.apps||!e.apps[a])return{app:0};let o=e.apps[a];switch(t){case ye.QuotaUsageType.STATIC:if(o.usageQuota?.[r])return{app:o.usageQuota[r]};break;case ye.QuotaUsageType.MONTHLY:{let i=mt(),s=r;if(!o.monthly?.[i]?.[s])break;let c=o.monthly[i],f=c[s],d,y=kn(s,n);return y&&n&&c.breakdown?.[y]&&(d=c.breakdown[y]?.values[n]),{app:f,breakdown:d||0}}}return{app:0}},zb=(e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},Jb=(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===ye.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=n.total,zb(t,e,n.triggers);else if(r===ye.QuotaUsageType.MONTHLY){t=t;let o=mt();e.monthly[o][t]=n.total,Jb(t,o,e,n.triggers)}else throw new Error(`Invalid usage type: ${r}`);return eo(e,t,r,a,n)},to=async e=>{let t=Array.isArray(e)?e:[e],r=Za(),n=await Ot();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 Ot(),a=0,o={};switch(e){case ye.QuotaUsageType.STATIC:if(n.usageQuota[t]){let i=t;a=n.usageQuota[i],o=ou(n,e,t,r)}break;case ye.QuotaUsageType.MONTHLY:{let i=mt(),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 ye.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 Ue={};x(Ue,{destroy:()=>eI,get:()=>ro,save:()=>Zb});var yt=require("@budibase/backend-core"),Xb=()=>({_id:yt.StaticDatabases.GLOBAL.docs.licenseInfo}),Zb=async e=>{let t=await ro();t={...t,...e};let n=await yt.tenancy.getGlobalDB().put(t);return t._rev=n.rev,t},ro=async()=>{let e=yt.tenancy.getGlobalDB();try{return await e.get(yt.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return Xb();throw t}},eI=async()=>{let e=yt.tenancy.getGlobalDB(),t=await ro();t&&t._rev&&await e.remove(yt.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)};var V={};x(V,{bulkSave:()=>dI,destroy:()=>fI,fetch:()=>uI,generateUserGroupID:()=>sI,get:()=>pI,getBulk:()=>cI,getByName:()=>no,getGroupUsers:()=>$n,getGroupUsersParams:()=>mu,getUserGroupsParams:()=>gu,save:()=>lI});var Q=require("@budibase/backend-core");var Fe=require("@budibase/types"),Ht=require("@budibase/backend-core");async function lu(){let e=Ht.sql.designDoc.base("type");e.sql.tables={[Fe.AUDIT_LOG_TYPE]:{fields:{appId:Fe.SQLiteType.TEXT,event:Fe.SQLiteType.TEXT,userId:Fe.SQLiteType.TEXT,timestamp:Fe.SQLiteType.TEXT,metadata:Fe.SQLiteType.TEXT,name:Fe.SQLiteType.TEXT,type:Fe.SQLiteType.TEXT,fallback:Fe.SQLiteType.TEXT}}};let t=Ht.context.getAuditLogsDB(),r;try{r=await t.get(Ht.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(n){if(n.status===404)r=e;else throw n}await t.put(r)}var Fn=require("@budibase/backend-core"),{ViewName:tI,SEPARATOR:rI,DocumentType:nI,createView:aI}=Fn.db,oI=nI.USER+rI;async function du(){let e=Fn.tenancy.getGlobalDB(),t=`function(doc) {
|
|
4
|
-
if (doc._id.startsWith("${
|
|
3
|
+
`)}og.exports=nP});var Ca=u((nQ,ig)=>{"use strict";function aP(e,t){for(var r=-1,n=e==null?0:e.length;++r<n&&t(e[r],r,e)!==!1;);return e}ig.exports=aP});var pg=u((aQ,ug)=>{"use strict";var oP=Ca(),sP=vo(),iP=1,uP=2,pP=8,cP=16,lP=32,dP=64,fP=128,gP=256,mP=512,yP=[["ary",fP],["bind",iP],["bindKey",uP],["curry",pP],["curryRight",cP],["flip",mP],["partial",lP],["partialRight",dP],["rearg",gP]];function hP(e,t){return oP(yP,function(r){var n="_."+r[0];t&r[1]&&!sP(e,n)&&e.push(n)}),e.sort()}ug.exports=hP});var Ks=u((oQ,cg)=>{"use strict";var AP=ag(),bP=sg(),IP=Xn(),SP=pg();function wP(e,t,r){var n=t+"";return IP(e,bP(n,SP(AP(n),r)))}cg.exports=wP});var Hs=u((sQ,fg)=>{"use strict";var vP=tg(),EP=Ys(),_P=Ks(),xP=1,RP=2,TP=4,OP=8,lg=32,dg=64;function PP(e,t,r,n,a,o,i,s,c,d){var m=t&OP,g=m?i:void 0,y=m?void 0:i,w=m?o:void 0,C=m?void 0:o;t|=m?lg:dg,t&=~(m?dg:lg),t&TP||(t&=~(xP|RP));var D=[e,t,a,w,g,C,y,s,c,d],L=r.apply(void 0,D);return vP(e)&&EP(L,D),L.placeholder=n,_P(L,e,t)}fg.exports=PP});var Js=u((iQ,gg)=>{"use strict";function CP(e){var t=e;return t.placeholder}gg.exports=CP});var yg=u((uQ,mg)=>{"use strict";var qP=ur(),UP=gn(),LP=Math.min;function DP(e,t){for(var r=e.length,n=LP(t.length,r),a=qP(e);n--;){var o=t[n];e[n]=UP(o,r)?a[o]:void 0}return e}mg.exports=DP});var qa=u((pQ,Ag)=>{"use strict";var hg="__lodash_placeholder__";function BP(e,t){for(var r=-1,n=e.length,a=0,o=[];++r<n;){var i=e[r];(i===t||i===hg)&&(e[r]=hg,o[a++]=r)}return o}Ag.exports=BP});var zs=u((cQ,Sg)=>{"use strict";var NP=$s(),MP=Qs(),GP=Mf(),bg=xn(),kP=Hs(),FP=Js(),$P=yg(),QP=qa(),jP=Ae(),WP=1,VP=2,YP=8,KP=16,HP=128,JP=512;function Ig(e,t,r,n,a,o,i,s,c,d){var m=t&HP,g=t&WP,y=t&VP,w=t&(YP|KP),C=t&JP,D=y?void 0:bg(e);function L(){for(var q=arguments.length,k=Array(q),Ie=q;Ie--;)k[Ie]=arguments[Ie];if(w)var ee=FP(L),Fe=GP(k,ee);if(n&&(k=NP(k,n,a,w)),o&&(k=MP(k,o,i,w)),q-=Fe,w&&q<d){var He=QP(k,ee);return kP(e,t,Ig,L.placeholder,r,k,He,s,c,d-q)}var Je=g?r:this,W=y?Je[e]:e;return q=k.length,s?k=$P(k,s):C&&q>1&&k.reverse(),m&&c<q&&(k.length=c),this&&this!==jP&&this instanceof L&&(W=D||bg(W)),W.apply(Je,k)}return L}Sg.exports=Ig});var vg=u((lQ,wg)=>{"use strict";var zP=zn(),XP=xn(),ZP=zs(),eC=Hs(),tC=Js(),rC=qa(),nC=Ae();function aC(e,t,r){var n=XP(e);function a(){for(var o=arguments.length,i=Array(o),s=o,c=tC(a);s--;)i[s]=arguments[s];var d=o<3&&i[0]!==c&&i[o-1]!==c?[]:rC(i,c);if(o-=d.length,o<r)return eC(e,t,ZP,a.placeholder,void 0,i,d,void 0,void 0,r-o);var m=this&&this!==nC&&this instanceof a?n:e;return zP(m,this,i)}return a}wg.exports=aC});var _g=u((dQ,Eg)=>{"use strict";var oC=zn(),sC=xn(),iC=Ae(),uC=1;function pC(e,t,r,n){var a=t&uC,o=sC(e);function i(){for(var s=-1,c=arguments.length,d=-1,m=n.length,g=Array(m+c),y=this&&this!==iC&&this instanceof i?o:e;++d<m;)g[d]=n[d];for(;c--;)g[d++]=arguments[++s];return oC(y,a?r:this,g)}return i}Eg.exports=pC});var Cg=u((fQ,Pg)=>{"use strict";var cC=$s(),lC=Qs(),xg=qa(),Rg="__lodash_placeholder__",Xs=1,dC=2,fC=4,Tg=8,Rn=128,Og=256,gC=Math.min;function mC(e,t){var r=e[1],n=t[1],a=r|n,o=a<(Xs|dC|Rn),i=n==Rn&&r==Tg||n==Rn&&r==Og&&e[7].length<=t[8]||n==(Rn|Og)&&t[7].length<=t[8]&&r==Tg;if(!(o||i))return e;n&Xs&&(e[2]=t[2],a|=r&Xs?0:fC);var s=t[3];if(s){var c=e[3];e[3]=c?cC(c,s,t[4]):s,e[4]=c?xg(e[3],Rg):t[4]}return s=t[5],s&&(c=e[5],e[5]=c?lC(c,s,t[6]):s,e[6]=c?xg(e[5],Rg):t[6]),s=t[7],s&&(e[7]=s),n&Rn&&(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 Ug=u((gQ,qg)=>{"use strict";var yC=/\s/;function hC(e){for(var t=e.length;t--&&yC.test(e.charAt(t)););return t}qg.exports=hC});var Dg=u((mQ,Lg)=>{"use strict";var AC=Ug(),bC=/^\s+/;function IC(e){return e&&e.slice(0,AC(e)+1).replace(bC,"")}Lg.exports=IC});var Ir=u((yQ,Bg)=>{"use strict";var SC=It(),wC=_e(),vC="[object Symbol]";function EC(e){return typeof e=="symbol"||wC(e)&&SC(e)==vC}Bg.exports=EC});var kg=u((hQ,Gg)=>{"use strict";var _C=Dg(),Ng=Be(),xC=Ir(),Mg=0/0,RC=/^[-+]0x[0-9a-f]+$/i,TC=/^0b[01]+$/i,OC=/^0o[0-7]+$/i,PC=parseInt;function CC(e){if(typeof e=="number")return e;if(xC(e))return Mg;if(Ng(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=Ng(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=_C(e);var r=TC.test(e);return r||OC.test(e)?PC(e.slice(2),r?2:8):RC.test(e)?Mg:+e}Gg.exports=CC});var Qg=u((AQ,$g)=>{"use strict";var qC=kg(),Fg=1/0,UC=17976931348623157e292;function LC(e){if(!e)return e===0?e:0;if(e=qC(e),e===Fg||e===-Fg){var t=e<0?-1:1;return t*UC}return e===e?e:0}$g.exports=LC});var Zs=u((bQ,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 Ua=u((IQ,Hg)=>{"use strict";var NC=Fs(),MC=Lf(),GC=vg(),kC=zs(),FC=_g(),$C=Ws(),QC=Cg(),jC=Ys(),WC=Ks(),Wg=Zs(),VC="Expected a function",Vg=1,YC=2,ei=8,ti=16,ri=32,Yg=64,Kg=Math.max;function KC(e,t,r,n,a,o,i,s){var c=t&YC;if(!c&&typeof e!="function")throw new TypeError(VC);var d=n?n.length:0;if(d||(t&=~(ri|Yg),n=a=void 0),i=i===void 0?i:Kg(Wg(i),0),s=s===void 0?s:Wg(s),d-=a?a.length:0,t&Yg){var m=n,g=a;n=a=void 0}var y=c?void 0:$C(e),w=[e,t,r,n,a,m,g,o,i,s];if(y&&QC(w,y),e=w[0],t=w[1],r=w[2],n=w[3],a=w[4],s=w[9]=w[9]===void 0?c?0:e.length:Kg(w[9]-d,0),!s&&t&(ei|ti)&&(t&=~(ei|ti)),!t||t==Vg)var C=MC(e,t,r);else t==ei||t==ti?C=GC(e,t,s):(t==ri||t==(Vg|ri))&&!a.length?C=FC(e,t,r,n):C=kC.apply(void 0,w);var D=y?NC:jC;return WC(D(C,w),e,t)}Hg.exports=KC});var zg=u((SQ,Jg)=>{"use strict";var HC=Ua(),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)}Jg.exports=zC});var Zg=u((wQ,Xg)=>{"use strict";var XC=Lo(),ZC=XC(Object.keys,Object);Xg.exports=ZC});var ni=u((vQ,em)=>{"use strict";var eq=sa(),tq=Zg(),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}em.exports=aq});var Sr=u((EQ,tm)=>{"use strict";var oq=ko(),sq=ni(),iq=or();function uq(e){return iq(e)?oq(e):sq(e)}tm.exports=uq});var ai=u((_Q,rm)=>{"use strict";var pq=lr(),cq=Sr();function lq(e,t){return e&&pq(t,cq(t),e)}rm.exports=lq});var am=u((xQ,nm)=>{"use strict";var dq=lr(),fq=dr();function gq(e,t){return e&&dq(t,fq(t),e)}nm.exports=gq});var sm=u((RQ,om)=>{"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}om.exports=mq});var oi=u((TQ,im)=>{"use strict";function yq(){return[]}im.exports=yq});var La=u((OQ,pm)=>{"use strict";var hq=sm(),Aq=oi(),bq=Object.prototype,Iq=bq.propertyIsEnumerable,um=Object.getOwnPropertySymbols,Sq=um?function(e){return e==null?[]:(e=Object(e),hq(um(e),function(t){return Iq.call(e,t)}))}:Aq;pm.exports=Sq});var lm=u((PQ,cm)=>{"use strict";var wq=lr(),vq=La();function Eq(e,t){return wq(e,vq(e),t)}cm.exports=Eq});var si=u((CQ,dm)=>{"use strict";var _q=Jn(),xq=oa(),Rq=La(),Tq=oi(),Oq=Object.getOwnPropertySymbols,Pq=Oq?function(e){for(var t=[];e;)_q(t,Rq(e)),e=xq(e);return t}:Tq;dm.exports=Pq});var gm=u((qQ,fm)=>{"use strict";var Cq=lr(),qq=si();function Uq(e,t){return Cq(e,qq(e),t)}fm.exports=Uq});var ii=u((UQ,mm)=>{"use strict";var Lq=Jn(),Dq=de();function Bq(e,t,r){var n=t(e);return Dq(e)?n:Lq(n,r(e))}mm.exports=Bq});var ui=u((LQ,ym)=>{"use strict";var Nq=ii(),Mq=La(),Gq=Sr();function kq(e){return Nq(e,Gq,Mq)}ym.exports=kq});var Am=u((DQ,hm)=>{"use strict";var Fq=ii(),$q=si(),Qq=dr();function jq(e){return Fq(e,Qq,$q)}hm.exports=jq});var Im=u((BQ,bm)=>{"use strict";var Wq=St(),Vq=Ae(),Yq=Wq(Vq,"DataView");bm.exports=Yq});var wm=u((NQ,Sm)=>{"use strict";var Kq=St(),Hq=Ae(),Jq=Kq(Hq,"Promise");Sm.exports=Jq});var vr=u((MQ,Om)=>{"use strict";var pi=Im(),ci=Zn(),li=wm(),di=_o(),fi=Gs(),Tm=It(),wr=Ao(),vm="[object Map]",zq="[object Object]",Em="[object Promise]",_m="[object Set]",xm="[object WeakMap]",Rm="[object DataView]",Xq=wr(pi),Zq=wr(ci),eU=wr(li),tU=wr(di),rU=wr(fi),Qt=Tm;(pi&&Qt(new pi(new ArrayBuffer(1)))!=Rm||ci&&Qt(new ci)!=vm||li&&Qt(li.resolve())!=Em||di&&Qt(new di)!=_m||fi&&Qt(new fi)!=xm)&&(Qt=function(e){var t=Tm(e),r=t==zq?e.constructor:void 0,n=r?wr(r):"";if(n)switch(n){case Xq:return Rm;case Zq:return vm;case eU:return Em;case tU:return _m;case rU:return xm}return t});Om.exports=Qt});var Cm=u((GQ,Pm)=>{"use strict";var nU=Object.prototype,aU=nU.hasOwnProperty;function oU(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&aU.call(e,"index")&&(r.index=e.index,r.input=e.input),r}Pm.exports=oU});var Um=u((kQ,qm)=>{"use strict";var sU=aa();function iU(e,t){var r=t?sU(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}qm.exports=iU});var Dm=u((FQ,Lm)=>{"use strict";var uU=/\w*$/;function pU(e){var t=new e.constructor(e.source,uU.exec(e));return t.lastIndex=e.lastIndex,t}Lm.exports=pU});var km=u(($Q,Gm)=>{"use strict";var Bm=Lt(),Nm=Bm?Bm.prototype:void 0,Mm=Nm?Nm.valueOf:void 0;function cU(e){return Mm?Object(Mm.call(e)):{}}Gm.exports=cU});var $m=u((QQ,Fm)=>{"use strict";var lU=aa(),dU=Um(),fU=Dm(),gU=km(),mU=Uo(),yU="[object Boolean]",hU="[object Date]",AU="[object Map]",bU="[object Number]",IU="[object RegExp]",SU="[object Set]",wU="[object String]",vU="[object Symbol]",EU="[object ArrayBuffer]",_U="[object DataView]",xU="[object Float32Array]",RU="[object Float64Array]",TU="[object Int8Array]",OU="[object Int16Array]",PU="[object Int32Array]",CU="[object Uint8Array]",qU="[object Uint8ClampedArray]",UU="[object Uint16Array]",LU="[object Uint32Array]";function DU(e,t,r){var n=e.constructor;switch(t){case EU:return lU(e);case yU:case hU:return new n(+e);case _U:return dU(e,r);case xU:case RU:case TU:case OU:case PU:case CU:case qU:case UU:case LU:return mU(e,r);case AU:return new n;case bU:case wU:return new n(e);case IU:return fU(e);case SU:return new n;case vU:return gU(e)}}Fm.exports=DU});var jm=u((jQ,Qm)=>{"use strict";var BU=vr(),NU=_e(),MU="[object Map]";function GU(e){return NU(e)&&BU(e)==MU}Qm.exports=GU});var Km=u((WQ,Ym)=>{"use strict";var kU=jm(),FU=ia(),Wm=ua(),Vm=Wm&&Wm.isMap,$U=Vm?FU(Vm):kU;Ym.exports=$U});var Jm=u((VQ,Hm)=>{"use strict";var QU=vr(),jU=_e(),WU="[object Set]";function VU(e){return jU(e)&&QU(e)==WU}Hm.exports=VU});var ey=u((YQ,Zm)=>{"use strict";var YU=Jm(),KU=ia(),zm=ua(),Xm=zm&&zm.isSet,HU=Xm?KU(Xm):YU;Zm.exports=HU});var gi=u((KQ,ay)=>{"use strict";var JU=on(),zU=Ca(),XU=Go(),ZU=ai(),eL=am(),tL=Co(),rL=ur(),nL=lm(),aL=gm(),oL=ui(),sL=Am(),iL=vr(),uL=Cm(),pL=$m(),cL=Do(),lL=de(),dL=ln(),fL=Km(),gL=Be(),mL=ey(),yL=Sr(),hL=dr(),AL=1,bL=2,IL=4,ty="[object Arguments]",SL="[object Array]",wL="[object Boolean]",vL="[object Date]",EL="[object Error]",ry="[object Function]",_L="[object GeneratorFunction]",xL="[object Map]",RL="[object Number]",ny="[object Object]",TL="[object RegExp]",OL="[object Set]",PL="[object String]",CL="[object Symbol]",qL="[object WeakMap]",UL="[object ArrayBuffer]",LL="[object DataView]",DL="[object Float32Array]",BL="[object Float64Array]",NL="[object Int8Array]",ML="[object Int16Array]",GL="[object Int32Array]",kL="[object Uint8Array]",FL="[object Uint8ClampedArray]",$L="[object Uint16Array]",QL="[object Uint32Array]",$={};$[ty]=$[SL]=$[UL]=$[LL]=$[wL]=$[vL]=$[DL]=$[BL]=$[NL]=$[ML]=$[GL]=$[xL]=$[RL]=$[ny]=$[TL]=$[OL]=$[PL]=$[CL]=$[kL]=$[FL]=$[$L]=$[QL]=!0;$[EL]=$[ry]=$[qL]=!1;function Da(e,t,r,n,a,o){var i,s=t&AL,c=t&bL,d=t&IL;if(r&&(i=a?r(e,n,a,o):r(e)),i!==void 0)return i;if(!gL(e))return e;var m=lL(e);if(m){if(i=uL(e),!s)return rL(e,i)}else{var g=iL(e),y=g==ry||g==_L;if(dL(e))return tL(e,s);if(g==ny||g==ty||y&&!a){if(i=c||y?{}:cL(e),!s)return c?aL(e,eL(i,e)):nL(e,ZU(i,e))}else{if(!$[g])return a?e:{};i=pL(e,g,s)}}o||(o=new JU);var w=o.get(e);if(w)return w;o.set(e,i),mL(e)?e.forEach(function(L){i.add(Da(L,t,r,L,e,o))}):fL(e)&&e.forEach(function(L,q){i.set(q,Da(L,t,r,q,e,o))});var C=d?c?sL:oL:c?hL:yL,D=m?void 0:C(e);return zU(D||e,function(L,q){D&&(q=L,L=e[q]),XU(i,q,Da(L,t,r,q,e,o))}),i}ay.exports=Da});var sy=u((HQ,oy)=>{"use strict";var jL=gi(),WL=4;function VL(e){return jL(e,WL)}oy.exports=VL});var uy=u((JQ,iy)=>{"use strict";var YL=Ua(),KL=8;function mi(e,t,r){t=r?void 0:t;var n=YL(e,KL,void 0,void 0,void 0,void 0,void 0,t);return n.placeholder=mi.placeholder,n}mi.placeholder={};iy.exports=mi});var cy=u((zQ,py)=>{"use strict";var HL=It(),JL=_e(),zL=Bo(),XL="[object DOMException]",ZL="[object Error]";function eD(e){if(!JL(e))return!1;var t=HL(e);return t==ZL||t==XL||typeof e.message=="string"&&typeof e.name=="string"&&!zL(e)}py.exports=eD});var dy=u((XQ,ly)=>{"use strict";var tD=vr(),rD=_e(),nD="[object WeakMap]";function aD(e){return rD(e)&&tD(e)==nD}ly.exports=aD});var gy=u((ZQ,fy)=>{"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}fy.exports=oD});var yi=u((ej,my)=>{"use strict";var sD=wo(),iD=gy(),uD=Eo(),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 d=o.get(e),m=o.get(t);if(d&&m)return d==t&&m==e;var g=-1,y=!0,w=r&cD?new sD:void 0;for(o.set(e,t),o.set(t,e);++g<s;){var C=e[g],D=t[g];if(n)var L=i?n(D,C,g,t,e,o):n(C,D,g,e,t,o);if(L!==void 0){if(L)continue;y=!1;break}if(w){if(!iD(t,function(q,k){if(!uD(w,k)&&(C===q||a(C,q,r,n,o)))return w.push(k)})){y=!1;break}}else if(!(C===D||a(C,D,r,n,o))){y=!1;break}}return o.delete(e),o.delete(t),y}my.exports=lD});var hy=u((tj,yy)=>{"use strict";function dD(e){var t=-1,r=Array(e.size);return e.forEach(function(n,a){r[++t]=[a,n]}),r}yy.exports=dD});var wy=u((rj,Sy)=>{"use strict";var Ay=Lt(),by=qo(),fD=rr(),gD=yi(),mD=hy(),yD=ra(),hD=1,AD=2,bD="[object Boolean]",ID="[object Date]",SD="[object Error]",wD="[object Map]",vD="[object Number]",ED="[object RegExp]",_D="[object Set]",xD="[object String]",RD="[object Symbol]",TD="[object ArrayBuffer]",OD="[object DataView]",Iy=Ay?Ay.prototype:void 0,hi=Iy?Iy.valueOf:void 0;function PD(e,t,r,n,a,o,i){switch(r){case OD: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 by(e),new by(t)));case bD:case ID:case vD:return fD(+e,+t);case SD:return e.name==t.name&&e.message==t.message;case ED:case xD:return e==t+"";case wD:var s=mD;case _D:var c=n&hD;if(s||(s=yD),e.size!=t.size&&!c)return!1;var d=i.get(e);if(d)return d==t;n|=AD,i.set(e,t);var m=gD(s(e),s(t),n,a,o,i);return i.delete(e),m;case RD:if(hi)return hi.call(e)==hi.call(t)}return!1}Sy.exports=PD});var _y=u((nj,Ey)=>{"use strict";var vy=ui(),CD=1,qD=Object.prototype,UD=qD.hasOwnProperty;function LD(e,t,r,n,a,o){var i=r&CD,s=vy(e),c=s.length,d=vy(t),m=d.length;if(c!=m&&!i)return!1;for(var g=c;g--;){var y=s[g];if(!(i?y in t:UD.call(t,y)))return!1}var w=o.get(e),C=o.get(t);if(w&&C)return w==t&&C==e;var D=!0;o.set(e,t),o.set(t,e);for(var L=i;++g<c;){y=s[g];var q=e[y],k=t[y];if(n)var Ie=i?n(k,q,y,t,e,o):n(q,k,y,e,t,o);if(!(Ie===void 0?q===k||a(q,k,r,n,o):Ie)){D=!1;break}L||(L=y=="constructor")}if(D&&!L){var ee=e.constructor,Fe=t.constructor;ee!=Fe&&"constructor"in e&&"constructor"in t&&!(typeof ee=="function"&&ee instanceof ee&&typeof Fe=="function"&&Fe instanceof Fe)&&(D=!1)}return o.delete(e),o.delete(t),D}Ey.exports=LD});var Uy=u((aj,qy)=>{"use strict";var Ai=on(),DD=yi(),BD=wy(),ND=_y(),xy=vr(),Ry=de(),Ty=ln(),MD=pa(),GD=1,Oy="[object Arguments]",Py="[object Array]",Ba="[object Object]",kD=Object.prototype,Cy=kD.hasOwnProperty;function FD(e,t,r,n,a,o){var i=Ry(e),s=Ry(t),c=i?Py:xy(e),d=s?Py:xy(t);c=c==Oy?Ba:c,d=d==Oy?Ba:d;var m=c==Ba,g=d==Ba,y=c==d;if(y&&Ty(e)){if(!Ty(t))return!1;i=!0,m=!1}if(y&&!m)return o||(o=new Ai),i||MD(e)?DD(e,t,r,n,a,o):BD(e,t,c,r,n,a,o);if(!(r&GD)){var w=m&&Cy.call(e,"__wrapped__"),C=g&&Cy.call(t,"__wrapped__");if(w||C){var D=w?e.value():e,L=C?t.value():t;return o||(o=new Ai),a(D,L,r,n,o)}}return y?(o||(o=new Ai),ND(e,t,r,n,a,o)):!1}qy.exports=FD});var bi=u((oj,By)=>{"use strict";var $D=Uy(),Ly=_e();function Dy(e,t,r,n,a){return e===t?!0:e==null||t==null||!Ly(e)&&!Ly(t)?e!==e&&t!==t:$D(e,t,r,n,Dy,a)}By.exports=Dy});var My=u((sj,Ny)=>{"use strict";var QD=on(),jD=bi(),WD=1,VD=2;function YD(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],d=e[c],m=s[1];if(i&&s[2]){if(d===void 0&&!(c in e))return!1}else{var g=new QD;if(n)var y=n(d,m,c,e,t,g);if(!(y===void 0?jD(m,d,WD|VD,n,g):y))return!1}}return!0}Ny.exports=YD});var Ii=u((ij,Gy)=>{"use strict";var KD=Be();function HD(e){return e===e&&!KD(e)}Gy.exports=HD});var Fy=u((uj,ky)=>{"use strict";var JD=Ii(),zD=Sr();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}ky.exports=XD});var Si=u((pj,$y)=>{"use strict";function ZD(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}$y.exports=ZD});var jy=u((cj,Qy)=>{"use strict";var eB=My(),tB=Fy(),rB=Si();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 Na=u((lj,Wy)=>{"use strict";var aB=de(),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((dj,Yy)=>{"use strict";var Vy=ea(),pB="Expected a function";function wi(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(wi.Cache||Vy),r}wi.Cache=Vy;Yy.exports=wi});var Jy=u((fj,Hy)=>{"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}Hy.exports=dB});var vi=u((gj,zy)=>{"use strict";var fB=Jy(),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});zy.exports=yB});var Ei=u((mj,Xy)=>{"use strict";function hB(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}Xy.exports=hB});var ah=u((yj,nh)=>{"use strict";var Zy=Lt(),AB=Ei(),bB=de(),IB=Ir(),SB=1/0,eh=Zy?Zy.prototype:void 0,th=eh?eh.toString:void 0;function rh(e){if(typeof e=="string")return e;if(bB(e))return AB(e,rh)+"";if(IB(e))return th?th.call(e):"";var t=e+"";return t=="0"&&1/e==-SB?"-0":t}nh.exports=rh});var _i=u((hj,oh)=>{"use strict";var wB=ah();function vB(e){return e==null?"":wB(e)}oh.exports=vB});var xi=u((Aj,sh)=>{"use strict";var EB=de(),_B=Na(),xB=vi(),RB=_i();function TB(e,t){return EB(e)?e:_B(e,t)?[e]:xB(RB(e))}sh.exports=TB});var Er=u((bj,ih)=>{"use strict";var OB=Ir(),PB=1/0;function CB(e){if(typeof e=="string"||OB(e))return e;var t=e+"";return t=="0"&&1/e==-PB?"-0":t}ih.exports=CB});var Ri=u((Ij,uh)=>{"use strict";var qB=xi(),UB=Er();function LB(e,t){t=qB(t,e);for(var r=0,n=t.length;e!=null&&r<n;)e=e[UB(t[r++])];return r&&r==n?e:void 0}uh.exports=LB});var ch=u((Sj,ph)=>{"use strict";var DB=Ri();function BB(e,t,r){var n=e==null?void 0:DB(e,t);return n===void 0?r:n}ph.exports=BB});var dh=u((wj,lh)=>{"use strict";function NB(e,t){return e!=null&&t in Object(e)}lh.exports=NB});var gh=u((vj,fh)=>{"use strict";var MB=xi(),GB=Xr(),kB=de(),FB=gn(),$B=na(),QB=Er();function jB(e,t,r){t=MB(t,e);for(var n=-1,a=t.length,o=!1;++n<a;){var i=QB(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&&$B(a)&&FB(i,a)&&(kB(e)||GB(e)))}fh.exports=jB});var yh=u((Ej,mh)=>{"use strict";var WB=dh(),VB=gh();function YB(e,t){return e!=null&&VB(e,t,WB)}mh.exports=YB});var Ah=u((_j,hh)=>{"use strict";var KB=bi(),HB=ch(),JB=yh(),zB=Na(),XB=Ii(),ZB=Si(),eN=Er(),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):KB(t,n,tN|rN)}}hh.exports=nN});var Ih=u((xj,bh)=>{"use strict";function aN(e){return function(t){return t?.[e]}}bh.exports=aN});var wh=u((Rj,Sh)=>{"use strict";var oN=Ri();function sN(e){return function(t){return oN(t,e)}}Sh.exports=sN});var Eh=u((Tj,vh)=>{"use strict";var iN=Ih(),uN=wh(),pN=Na(),cN=Er();function lN(e){return pN(e)?iN(cN(e)):uN(e)}vh.exports=lN});var Ti=u((Oj,_h)=>{"use strict";var dN=jy(),fN=Ah(),gN=Zr(),mN=de(),yN=Eh();function hN(e){return typeof e=="function"?e:e==null?gN:typeof e=="object"?mN(e)?fN(e[0],e[1]):dN(e):yN(e)}_h.exports=hN});var Rh=u((Pj,xh)=>{"use strict";var AN=gi(),bN=Ti(),IN=1;function SN(e){return bN(typeof e=="function"?e:AN(e,IN))}xh.exports=SN});var Oh=u((Cj,Th)=>{"use strict";var wN=mo();function vN(e){var t=e==null?0:e.length;return t?wN(e,1):[]}Th.exports=vN});var Ch=u((qj,Ph)=>{"use strict";var EN=Oh(),_N=yo(),xN=Xn();function RN(e){return xN(_N(e,void 0,EN),e+"")}Ph.exports=RN});var Uh=u((Uj,qh)=>{"use strict";var TN=Ua(),ON=Ch(),PN=256,CN=ON(function(e,t){return TN(e,PN,void 0,void 0,void 0,t)});qh.exports=CN});var Dh=u((Lj,Lh)=>{"use strict";var qN=Ei(),UN=ur(),LN=de(),DN=Ir(),BN=vi(),NN=Er(),MN=_i();function GN(e){return LN(e)?qN(e,NN):DN(e)?[e]:UN(BN(MN(e)))}Lh.exports=GN});var Nh=u((Dj,Bh)=>{"use strict";Bh.exports={ary:zg(),assign:ai(),clone:sy(),curry:uy(),forEach:Ca(),isArray:de(),isError:cy(),isFunction:en(),isWeakMap:dy(),iteratee:Rh(),keys:ni(),rearg:Uh(),toInteger:Zs(),toPath:Dh()}});var Gh=u((Bj,Mh)=>{"use strict";var kN=xf(),FN=Nh();function $N(e,t,r){return kN(FN,e,t,r)}Mh.exports=$N});var Oi=u((Nj,Fh)=>{"use strict";var QN=Gh(),kh=QN("merge",Fo());kh.placeholder=Ds();Fh.exports=kh});var Vh=u((Pi,Ci)=>{"use strict";(function(e,t){typeof Pi=="object"&&typeof Ci<"u"?Ci.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs=t()})(Pi,function(){"use strict";var e=1e3,t=6e4,r=36e5,n="millisecond",a="second",o="minute",i="hour",s="day",c="week",d="month",m="quarter",g="year",y="date",w="Invalid Date",C=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,D=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,L={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(R){var S=["th","st","nd","rd"],h=R%100;return"["+R+(S[(h-20)%10]||S[h]||S[0])+"]"}},q=function(R,S,h){var _=String(R);return!_||_.length>=S?R:""+Array(S+1-_.length).join(h)+R},k={s:q,z:function(R){var S=-R.utcOffset(),h=Math.abs(S),_=Math.floor(h/60),I=h%60;return(S<=0?"+":"-")+q(_,2,"0")+":"+q(I,2,"0")},m:function R(S,h){if(S.date()<h.date())return-R(h,S);var _=12*(h.year()-S.year())+(h.month()-S.month()),I=S.clone().add(_,d),O=h-I<0,T=S.clone().add(_+(O?-1:1),d);return+(-(_+(h-I)/(O?I-T:T-I))||0)},a:function(R){return R<0?Math.ceil(R)||0:Math.floor(R)},p:function(R){return{M:d,y:g,w:c,d:s,D:y,h:i,m:o,s:a,ms:n,Q:m}[R]||String(R||"").toLowerCase().replace(/s$/,"")},u:function(R){return R===void 0}},Ie="en",ee={};ee[Ie]=L;var Fe="$isDayjsObject",He=function(R){return R instanceof Ot||!(!R||!R[Fe])},Je=function R(S,h,_){var I;if(!S)return Ie;if(typeof S=="string"){var O=S.toLowerCase();ee[O]&&(I=O),h&&(ee[O]=h,I=O);var T=S.split("-");if(!I&&T.length>1)return R(T[0])}else{var G=S.name;ee[G]=S,I=G}return!_&&I&&(Ie=I),I||!_&&Ie},W=function(R,S){if(He(R))return R.clone();var h=typeof S=="object"?S:{};return h.date=R,h.args=arguments,new Ot(h)},B=k;B.l=Je,B.i=He,B.w=function(R,S){return W(R,{locale:S.$L,utc:S.$u,x:S.$x,$offset:S.$offset})};var Ot=function(){function R(h){this.$L=Je(h.locale,null,!0),this.parse(h),this.$x=this.$x||h.x||{},this[Fe]=!0}var S=R.prototype;return S.parse=function(h){this.$d=function(_){var I=_.date,O=_.utc;if(I===null)return new Date(NaN);if(B.u(I))return new Date;if(I instanceof Date)return new Date(I);if(typeof I=="string"&&!/Z$/i.test(I)){var T=I.match(C);if(T){var G=T[2]-1||0,K=(T[7]||"0").substring(0,3);return O?new Date(Date.UTC(T[1],G,T[3]||1,T[4]||0,T[5]||0,T[6]||0,K)):new Date(T[1],G,T[3]||1,T[4]||0,T[5]||0,T[6]||0,K)}}return new Date(I)}(h),this.init()},S.init=function(){var h=this.$d;this.$y=h.getFullYear(),this.$M=h.getMonth(),this.$D=h.getDate(),this.$W=h.getDay(),this.$H=h.getHours(),this.$m=h.getMinutes(),this.$s=h.getSeconds(),this.$ms=h.getMilliseconds()},S.$utils=function(){return B},S.isValid=function(){return this.$d.toString()!==w},S.isSame=function(h,_){var I=W(h);return this.startOf(_)<=I&&I<=this.endOf(_)},S.isAfter=function(h,_){return W(h)<this.startOf(_)},S.isBefore=function(h,_){return this.endOf(_)<W(h)},S.$g=function(h,_,I){return B.u(h)?this[_]:this.set(I,h)},S.unix=function(){return Math.floor(this.valueOf()/1e3)},S.valueOf=function(){return this.$d.getTime()},S.startOf=function(h,_){var I=this,O=!!B.u(_)||_,T=B.p(h),G=function(b,E){var P=B.w(I.$u?Date.UTC(I.$y,E,b):new Date(I.$y,E,b),I);return O?P:P.endOf(s)},K=function(b,E){return B.w(I.toDate()[b].apply(I.toDate("s"),(O?[0,0,0,0]:[23,59,59,999]).slice(E)),I)},X=this.$W,ae=this.$M,F=this.$D,qe="set"+(this.$u?"UTC":"");switch(T){case g:return O?G(1,0):G(31,11);case d:return O?G(1,ae):G(0,ae+1);case c:var v=this.$locale().weekStart||0,A=(X<v?X+7:X)-v;return G(O?F-A:F+(6-A),ae);case s:case y:return K(qe+"Hours",0);case i:return K(qe+"Minutes",1);case o:return K(qe+"Seconds",2);case a:return K(qe+"Milliseconds",3);default:return this.clone()}},S.endOf=function(h){return this.startOf(h,!1)},S.$set=function(h,_){var I,O=B.p(h),T="set"+(this.$u?"UTC":""),G=(I={},I[s]=T+"Date",I[y]=T+"Date",I[d]=T+"Month",I[g]=T+"FullYear",I[i]=T+"Hours",I[o]=T+"Minutes",I[a]=T+"Seconds",I[n]=T+"Milliseconds",I)[O],K=O===s?this.$D+(_-this.$W):_;if(O===d||O===g){var X=this.clone().set(y,1);X.$d[G](K),X.init(),this.$d=X.set(y,Math.min(this.$D,X.daysInMonth())).$d}else G&&this.$d[G](K);return this.init(),this},S.set=function(h,_){return this.clone().$set(h,_)},S.get=function(h){return this[B.p(h)]()},S.add=function(h,_){var I,O=this;h=Number(h);var T=B.p(_),G=function(ae){var F=W(O);return B.w(F.date(F.date()+Math.round(ae*h)),O)};if(T===d)return this.set(d,this.$M+h);if(T===g)return this.set(g,this.$y+h);if(T===s)return G(1);if(T===c)return G(7);var K=(I={},I[o]=t,I[i]=r,I[a]=e,I)[T]||1,X=this.$d.getTime()+h*K;return B.w(X,this)},S.subtract=function(h,_){return this.add(-1*h,_)},S.format=function(h){var _=this,I=this.$locale();if(!this.isValid())return I.invalidDate||w;var O=h||"YYYY-MM-DDTHH:mm:ssZ",T=B.z(this),G=this.$H,K=this.$m,X=this.$M,ae=I.weekdays,F=I.months,qe=I.meridiem,v=function(E,P,Z,me){return E&&(E[P]||E(_,O))||Z[P].slice(0,me)},A=function(E){return B.s(G%12||12,E,"0")},b=qe||function(E,P,Z){var me=E<12?"AM":"PM";return Z?me.toLowerCase():me};return O.replace(D,function(E,P){return P||function(Z){switch(Z){case"YY":return String(_.$y).slice(-2);case"YYYY":return B.s(_.$y,4,"0");case"M":return X+1;case"MM":return B.s(X+1,2,"0");case"MMM":return v(I.monthsShort,X,F,3);case"MMMM":return v(F,X);case"D":return _.$D;case"DD":return B.s(_.$D,2,"0");case"d":return String(_.$W);case"dd":return v(I.weekdaysMin,_.$W,ae,2);case"ddd":return v(I.weekdaysShort,_.$W,ae,3);case"dddd":return ae[_.$W];case"H":return String(G);case"HH":return B.s(G,2,"0");case"h":return A(1);case"hh":return A(2);case"a":return b(G,K,!0);case"A":return b(G,K,!1);case"m":return String(K);case"mm":return B.s(K,2,"0");case"s":return String(_.$s);case"ss":return B.s(_.$s,2,"0");case"SSS":return B.s(_.$ms,3,"0");case"Z":return T}return null}(E)||T.replace(":","")})},S.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},S.diff=function(h,_,I){var O,T=this,G=B.p(_),K=W(h),X=(K.utcOffset()-this.utcOffset())*t,ae=this-K,F=function(){return B.m(T,K)};switch(G){case g:O=F()/12;break;case d:O=F();break;case m:O=F()/3;break;case c:O=(ae-X)/6048e5;break;case s:O=(ae-X)/864e5;break;case i:O=ae/r;break;case o:O=ae/t;break;case a:O=ae/e;break;default:O=ae}return I?O:B.a(O)},S.daysInMonth=function(){return this.endOf(d).$D},S.$locale=function(){return ee[this.$L]},S.locale=function(h,_){if(!h)return this.$L;var I=this.clone(),O=Je(h,_,!0);return O&&(I.$L=O),I},S.clone=function(){return B.w(this.$d,this)},S.toDate=function(){return new Date(this.valueOf())},S.toJSON=function(){return this.isValid()?this.toISOString():null},S.toISOString=function(){return this.$d.toISOString()},S.toString=function(){return this.$d.toUTCString()},R}(),Ln=Ot.prototype;return W.prototype=Ln,[["$ms",n],["$s",a],["$m",o],["$H",i],["$W",s],["$M",d],["$y",g],["$D",y]].forEach(function(R){Ln[R[1]]=function(S){return this.$g(S,R[0],R[1])}}),W.extend=function(R,S){return R.$i||(R(S,Ot,W),R.$i=!0),W},W.locale=Je,W.isDayjs=He,W.unix=function(R){return W(1e3*R)},W.en=ee[Ie],W.Ls=ee,W.p={},W})});var sb=u((ZW,ob)=>{"use strict";function hM(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}ob.exports=hM});var ub=u((e2,ib)=>{"use strict";var AM=Po(),bM=Sr();function IM(e,t){return e&&AM(e,t,bM)}ib.exports=IM});var cb=u((t2,pb)=>{"use strict";var SM=or();function wM(e,t){return function(r,n){if(r==null)return r;if(!SM(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}}pb.exports=wM});var fb=u((r2,lb)=>{"use strict";var vM=ub(),EM=cb(),_M=EM(vM);lb.exports=_M});var mb=u((n2,gb)=>{"use strict";var xM=fb();function RM(e,t,r,n){return xM(e,function(a,o,i){t(n,a,r(a),i)}),n}gb.exports=RM});var hb=u((a2,yb)=>{"use strict";var TM=sb(),OM=mb(),PM=Ti(),CM=de();function qM(e,t){return function(r,n){var a=CM(r)?TM:OM,o=t?t():{};return a(r,e,PM(n,2),o)}}yb.exports=qM});var bb=u((o2,Ab)=>{"use strict";var UM=sn(),LM=hb(),DM=Object.prototype,BM=DM.hasOwnProperty,NM=LM(function(e,t,r){BM.call(e,r)?e[r].push(t):UM(e,r,[t])});Ab.exports=NM});var HM={};x(HM,{Method:()=>Ya,ai:()=>Fi,api:()=>Xi,auditLogs:()=>Et,automations:()=>Ia,backups:()=>Ne,branding:()=>ga,constants:()=>Vr,environmentVariables:()=>st,features:()=>Re,groups:()=>z,init:()=>If,licensing:()=>tt,logger:()=>jt,mappers:()=>ne,middleware:()=>Bi,plugins:()=>Sa,publicApi:()=>Ea,quotas:()=>at,scimGroups:()=>_r,scimUsers:()=>ve,sdk:()=>qi,users:()=>dt,utils:()=>er});module.exports=jb(HM);var Ya=(o=>(o.POST="POST",o.GET="GET",o.PATCH="PATCH",o.DELETE="DELETE",o.PUT="PUT",o))(Ya||{});var qi={};x(qi,{ai:()=>ma,auditLogs:()=>Et,automations:()=>Ia,backups:()=>Ne,branding:()=>ga,environmentVariables:()=>st,features:()=>Re,groups:()=>z,init:()=>If,licensing:()=>tt,logger:()=>jt,plugins:()=>Sa,publicApi:()=>Ea,quotas:()=>at,scimGroups:()=>_r,scimUsers:()=>ve,users:()=>dt,utils:()=>er});var ga={};x(ga,{getBrandingConfig:()=>MR});var Re={};x(Re,{checkBackups:()=>xe,checkFeature:()=>da,checkFeatures:()=>Jo,checkSCIM:()=>es,isAICustomConfigsEnabled:()=>BR,isAppBuildersEnabled:()=>Nt,isAuditLogsEnabled:()=>fa,isBackupsEnabled:()=>zo,isBrandingEnabled:()=>Xo,isBudibaseAIEnabled:()=>An,isEnforceableSSO:()=>Ld,isExpandedPublicApiEnabled:()=>lt,isSSOEnforced:()=>UR,isSyncAutomationsEnabled:()=>CR,isTriggerAutomationRunEnabled:()=>qR,isUserGroupsEnabled:()=>Zo,isViewPermissionEnabled:()=>LR,isViewReadonlyColumnsEnabled:()=>DR});var fe=require("@budibase/types"),ct=require("@budibase/backend-core");var tt={};x(tt,{cache:()=>Qe,client:()=>bt,features:()=>Kn,getFreeLicense:()=>Ko,getLicense:()=>Yo,getLicenseFromKey:()=>xR,keys:()=>Ho,offline:()=>ca,quotas:()=>Hn});var Qe={};x(Qe,{getCachedLicense:()=>qd,invalidate:()=>Ud,refresh:()=>Dt});var Ka=require("@budibase/backend-core"),Tr,Wb=async()=>{Tr=await new Ka.redis.Client(Ka.redis.utils.Databases.LICENSES).init()},Vb=async()=>{Tr&&await Tr.finish()};process.on("exit",async()=>{await Vb()});var Ha=async()=>(Tr||await Wb(),Tr);var bt={};x(bt,{activateLicenseKey:()=>po,getLicense:()=>Xt,getLicenseFromKey:()=>uo,triggerQuota:()=>UI});var nu=M(require("node-fetch"));var au=require("@budibase/backend-core"),Ja=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";au.logging.correlation.setHeader(n.headers);let o={method:t,body:a?JSON.stringify(n.body):n.body,headers:n.headers,credentials:"include"};return(0,nu.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}},za=Ja;var Wn=require("@budibase/types"),N=require("@budibase/backend-core");var Xe={};x(Xe,{bustCache:()=>iu,getCurrentUsageValues:()=>lu,getQuotaUsage:()=>Pt,setAllUsage:()=>ro,setAppUsageValue:()=>to,setUsage:()=>uu,setUsagePerApp:()=>pu,utils:()=>Pr});var ye=require("@budibase/types"),le=require("@budibase/backend-core");var Pr={};x(Pr,{generateBaseQuotaUsage:()=>Nn,generateNewMonthlyQuotas:()=>Or,generateNewQuotaUsage:()=>Za,getBreakdownName:()=>Gn,getCurrentMonthString:()=>yt,setCurrentMonth:()=>Mn,setQuotaReset:()=>Xa});var ue=require("@budibase/types"),Bn=require("@budibase/backend-core"),ou=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},Xa=e=>{e.quotaReset=ou()},yt=()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},Nn=()=>({usageQuota:{[ue.StaticQuotaName.APPS]:0,[ue.StaticQuotaName.ROWS]:0,[ue.StaticQuotaName.PLUGINS]:0,[ue.StaticQuotaName.USERS]:0,[ue.StaticQuotaName.CREATORS]:0,[ue.StaticQuotaName.USER_GROUPS]:0,[ue.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[yt()]:Or()}}),Za=()=>{let e={_id:Bn.db.StaticDatabases.GLOBAL.docs.usageQuota,quotaReset:ou(),...Nn(),apps:{}};return Mn(e),e},Or=()=>({[ue.MonthlyQuotaName.QUERIES]:0,[ue.MonthlyQuotaName.AUTOMATIONS]:0,[ue.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,triggers:{}}),Mn=e=>{let t=yt();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=Or()),e.monthly.current=e.monthly[t]},Gn=(e,t)=>{if(!(!t||!e))switch(e){case ue.MonthlyQuotaName.AUTOMATIONS:return ue.BreakdownQuotaName.AUTOMATIONS;case ue.MonthlyQuotaName.QUERIES:return Bn.db.isTableId(t)?ue.BreakdownQuotaName.ROW_QUERIES:Bn.db.isDatasourceId(t)?ue.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}};var Kb=le.Duration.fromSeconds(60).toMs(),{Writethrough:Hb}=le.cache.writethrough;function Jb(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 eo=()=>new Hb(le.tenancy.getGlobalDB(),Kb),iu=async()=>{let e=le.tenancy.getGlobalDB();try{let t=await e.get(le.db.StaticDatabases.GLOBAL.docs.usageQuota);t?._rev&&await e.remove(le.db.StaticDatabases.GLOBAL.docs.usageQuota,t._rev)}catch(t){if(t.status!==404)throw t}},Pt=async()=>{let e=eo(),t;try{t=await e.get(le.db.StaticDatabases.GLOBAL.docs.usageQuota),Mn(t),Xa(t)}catch(r){if(r.status===404){t=Za();let n=await e.put(t);t._rev=n.rev}else throw r}return Jb(t)},uu=async(e,t,r)=>ro({name:t,type:r,values:{total:e}}),pu=async(e,t,r)=>{let n=eo(),a=await Pt(),o=Object.values(e).reduce((s,c)=>s+c,0);for(let[s,c]of Object.entries(e))a=cu(a,t,r,{total:o,app:c},{appId:s});let i=await n.put(a);return a._rev=i.rev,a},zb=(e,t,r,n)=>{let a=Gn(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},to=(e,t,r,n={},a)=>{let o;try{o=le.db.getProdAppID(n?.appId||le.context.getAppId())}catch{}if(!o||!a.app||!ye.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[o]||(e.apps={...e.apps,[o]:Nn()});let i=e.apps[o];switch(r){case ye.QuotaUsageType.STATIC:i.usageQuota[t]=a.app;break;case ye.QuotaUsageType.MONTHLY:{let s=yt(),c=t,d=i.monthly[s];d||(i.monthly[s]=Or(),d=i.monthly[s]),d[c]=a.app,ye.BREAKDOWN_QUOTA_NAMES.includes(c)&&n?.id&&(d=zb(d,c,n.id,a));break}}return e},su=(e,t,r,n)=>{if(!ye.APP_QUOTA_NAMES.includes(r))return{};let a;try{a=le.db.getProdAppID(le.context.getAppId())}catch{}if(!a||!e.apps||!e.apps[a])return{app:0};let o=e.apps[a];switch(t){case ye.QuotaUsageType.STATIC:if(o.usageQuota?.[r])return{app:o.usageQuota[r]};break;case ye.QuotaUsageType.MONTHLY:{let i=yt(),s=r;if(!o.monthly?.[i]?.[s])break;let c=o.monthly[i],d=c[s],m,g=Gn(s,n);return g&&n&&c.breakdown?.[g]&&(m=c.breakdown[g]?.values[n]),{app:d,breakdown:m||0}}}return{app:0}},Xb=(e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},Zb=(e,t,r,n)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),n&&(r.monthly[t].triggers[e]=n)},cu=(e,t,r,n,a={})=>{if(r===ye.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=n.total,Xb(t,e,n.triggers);else if(r===ye.QuotaUsageType.MONTHLY){t=t;let o=yt();e.monthly[o][t]=n.total,Zb(t,o,e,n.triggers)}else throw new Error(`Invalid usage type: ${r}`);return to(e,t,r,a,n)},ro=async e=>{let t=Array.isArray(e)?e:[e],r=eo(),n=await Pt();for(let o of t)n=cu(n,o.name,o.type,o.values,o.opts);let a=await r.put(n,0);return n._rev=a.rev,n},lu=async(e,t,r)=>{let n=await Pt(),a=0,o={};switch(e){case ye.QuotaUsageType.STATIC:if(n.usageQuota[t]){let i=t;a=n.usageQuota[i],o=su(n,e,t,r)}break;case ye.QuotaUsageType.MONTHLY:{let i=yt(),s=t;n.monthly[i][s]&&(a=n.monthly[i][s],o=su(n,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return ye.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 Le={};x(Le,{destroy:()=>rI,get:()=>no,save:()=>tI});var ht=require("@budibase/backend-core"),eI=()=>({_id:ht.StaticDatabases.GLOBAL.docs.licenseInfo}),tI=async e=>{let t=await no();t={...t,...e};let n=await ht.tenancy.getGlobalDB().put(t);return t._rev=n.rev,t},no=async()=>{let e=ht.tenancy.getGlobalDB();try{return await e.get(ht.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return eI();throw t}},rI=async()=>{let e=ht.tenancy.getGlobalDB(),t=await no();t&&t._rev&&await e.remove(ht.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)};var V={};x(V,{bulkSave:()=>gI,destroy:()=>mI,fetch:()=>cI,generateUserGroupID:()=>uI,get:()=>lI,getBulk:()=>dI,getByName:()=>ao,getGroupUsers:()=>Fn,getGroupUsersParams:()=>yu,getUserGroupsParams:()=>mu,save:()=>fI});var Q=require("@budibase/backend-core");var $e=require("@budibase/types"),Ht=require("@budibase/backend-core");async function du(){let e=Ht.sql.designDoc.base("type");e.sql.tables={[$e.AUDIT_LOG_TYPE]:{fields:{appId:$e.SQLiteType.TEXT,event:$e.SQLiteType.TEXT,userId:$e.SQLiteType.TEXT,timestamp:$e.SQLiteType.TEXT,metadata:$e.SQLiteType.TEXT,name:$e.SQLiteType.TEXT,type:$e.SQLiteType.TEXT,fallback:$e.SQLiteType.TEXT}}};let t=Ht.context.getAuditLogsDB(),r;try{r=await t.get(Ht.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(n){if(n.status===404)r=e;else throw n}await t.put(r)}var kn=require("@budibase/backend-core"),{ViewName:nI,SEPARATOR:aI,DocumentType:oI,createView:sI}=kn.db,iI=oI.USER+aI;async function fu(){let e=kn.tenancy.getGlobalDB(),t=`function(doc) {
|
|
4
|
+
if (doc._id.startsWith("${iI}") && 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 sI(e,t,nI.USER_BY_GROUP)}var gu=`${Q.DocumentType.GROUP}${Q.SEPARATOR}`;function mu(e,t={}){e||(e="");let r=e?.startsWith(Q.DocumentType.GROUP)?"":gu;return{...t,startkey:`${r}${e}`,endkey:`${r}${e}${Q.UNICODE_MAX}`}}function yu(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 uI(){return`${gu}${Q.utils.newid()}`}async function Fn(e,t){let r=Q.tenancy.getGlobalDB();return(await Q.db.queryView(Q.db.ViewName.USER_BY_GROUP,yu(e,t),r,fu,{arrayResponse:!0})).map(a=>({_id:a.userId,email:a.email}))||[]}async function Cr(e){return e.users=await Fn(e._id),e}async function pI(e){let r=(await Cr(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 hu(){return(await Q.tenancy.getGlobalDB().allDocs(mu(null,{include_docs:!0}))).rows.map(t=>t.doc)}async function cI(){let e=await hu(),t=[];for(let r of e)t.push(Cr(r));return await Promise.all(t)}async function lI(e){let r=await Q.tenancy.getGlobalDB().get(e);return await Cr(r)}async function dI(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(Cr(o));return await Promise.all(a)}else return n}async function fI(e){return await Q.tenancy.getGlobalDB().put(e)}async function gI(e){return await Q.tenancy.getGlobalDB().bulkDocs(e)}async function mI(e,t){let r=Q.tenancy.getGlobalDB(),n=await r.get(e),a=await r.remove(e,t);return await pI(n),a}async function ao(e){let t=e.toLowerCase(),n=(await hu()).find(a=>a.name.toLowerCase()===t);if(n)return await Cr(n)}var De={};x(De,{deleteAppBackupMetadata:()=>TI,fetchAppBackups:()=>_I,generateAppBackupID:()=>Cu,getAppBackupMetadata:()=>OI,oldestBackupDate:()=>Ou,storeAppBackupMetadata:()=>xI,updateAppBackupMetadata:()=>RI});var J=require("@budibase/backend-core"),Tu=require("@budibase/types");function qr(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 Jt=require("@budibase/backend-core"),{ViewName:bu,AutomationViewMode:oo,SEPARATOR:Ze,DocumentType:Iu,createView:Su}=Jt.db,yI=Iu.AUTOMATION_LOG+Ze,Au=Iu.APP_BACKUP+Ze;async function wu(){let e=Jt.context.getProdAppDB(),t=`function(doc) {
|
|
11
|
+
if (doc._id.startsWith("${yI}")) {
|
|
12
12
|
let autoId = doc.automationId + "${Ze}"
|
|
13
13
|
let status = doc.status + "${Ze}"
|
|
14
|
-
let autoKey = "${
|
|
15
|
-
let statusKey = "${
|
|
16
|
-
let allKey = "${
|
|
14
|
+
let autoKey = "${oo.AUTOMATION}${Ze}" + autoId + doc.createdAt
|
|
15
|
+
let statusKey = "${oo.STATUS}${Ze}" + status + doc.createdAt
|
|
16
|
+
let allKey = "${oo.ALL}${Ze}" + 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 Su(e,t,bu.AUTOMATION_LOGS)}async function vu(){let e=Jt.tenancy.getGlobalDB(),t=`function(doc) {
|
|
22
|
+
if (doc._id.startsWith("${Au}") && doc.type && doc.trigger) {
|
|
23
23
|
let full = doc.appId + "${Ze}"
|
|
24
24
|
full += doc.trigger.toLowerCase() + "${Ze}"
|
|
25
25
|
full += doc.type.toLowerCase() + "${Ze}"
|
|
26
|
-
emit("${
|
|
26
|
+
emit("${Au}" + full + doc.timestamp)
|
|
27
27
|
}
|
|
28
|
-
}`;await
|
|
28
|
+
}`;await Su(e,t,bu.APP_BACKUP_BY_TRIGGER)}var Ru=require("@budibase/types");var Vr={};x(Vr,{GENERIC_PAGE_SIZE:()=>et,auditLogs:()=>zt,licenses:()=>Ee,quotas:()=>pt,versions:()=>Wr});var Ee={};x(Ee,{CLOUD_FREE_LICENSE:()=>AI,SELF_FREE_LICENSE:()=>so,UNLIMITED:()=>te,UNLIMITED_LICENSE:()=>bI});var At=require("@budibase/types");var pt={};x(pt,{UNLIMITED:()=>hI,appBackupRetentionDays:()=>Qr,apps:()=>Lr,automationLogRetentionDays:()=>$r,automations:()=>kr,budibaseAICredits:()=>Fr,creators:()=>Br,customAIConfigurations:()=>jr,plugins:()=>Mr,queries:()=>Gr,rows:()=>Ur,userGroups:()=>Nr,users:()=>Dr});var he=require("@budibase/types"),hI=-1,Ur=e=>({[he.StaticQuotaName.ROWS]:{name:"Rows",value:e,triggers:[90,100]}}),Lr=e=>({[he.StaticQuotaName.APPS]:{name:"Apps",value:e,triggers:[100]}}),Dr=e=>({[he.StaticQuotaName.USERS]:{name:"Users",value:e,triggers:[80,100]}}),Br=e=>({[he.StaticQuotaName.CREATORS]:{name:"Creators",value:e,triggers:[]}}),Nr=e=>({[he.StaticQuotaName.USER_GROUPS]:{name:"User Groups",value:e,triggers:[80,100]}}),Mr=e=>({[he.StaticQuotaName.PLUGINS]:{name:"Plugins",value:e,triggers:[90,100]}}),Gr=e=>({[he.MonthlyQuotaName.QUERIES]:{name:"Queries",value:e,triggers:[]}}),kr=e=>({[he.MonthlyQuotaName.AUTOMATIONS]:{name:"Automations",value:e,triggers:[80,90,100]}}),Fr=e=>({[he.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:{name:"Budibase AI Credits",value:e,triggers:[80,90,100]}}),$r=e=>({[he.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS]:{name:"Automation Logs",value:e,triggers:[]}}),Qr=e=>({[he.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS]:{name:"App Backups",value:e,triggers:[]}}),jr=e=>({[he.StaticQuotaName.AI_CUSTOM_CONFIGS]:{name:"Custom AI Configuration",value:e,triggers:[]}});var te=-1,AI={features:[],quotas:{usage:{monthly:{...Gr(te),...kr(200),...Fr(0)},static:{...Lr(te),...Ur(2e3),...Dr(5),...Br(5),...Nr(0),...Mr(10),...jr(0)}},constant:{...$r(1),...Qr(0)}},plan:{type:At.PlanType.FREE,usesInvoicing:!1,model:At.PlanModel.PER_USER}},so={features:[],quotas:{usage:{monthly:{...Gr(te),...kr(te),...Fr(0)},static:{...Ur(te),...Lr(te),...Dr(20),...Br(te),...Nr(0),...Mr(10),...jr(0)}},constant:{...$r(1),...Qr(0)}},plan:{type:At.PlanType.FREE,usesInvoicing:!1,model:At.PlanModel.PER_USER}},bI={features:[],quotas:{usage:{monthly:{...Gr(te),...kr(te),...Fr(te)},static:{...Lr(te),...Ur(te),...Dr(te),...Br(te),...Nr(te),...Mr(te),...jr(te)}},constant:{...$r(te),...Qr(te)}},plan:{type:At.PlanType.FREE,usesInvoicing:!1,model:At.PlanModel.PER_USER}};var Wr={};x(Wr,{getLicenseVersion:()=>II,getProVersion:()=>_u});var Ct=require("@budibase/backend-core"),$n=M(require("fs")),Eu=M(require("path")),II=()=>{if(Ct.env.isDev()){let e="dev-version.txt",t=Eu.default.join(Ct.objectStore.budibaseTempDir(),e);if($n.default.existsSync(t))return $n.default.readFileSync(t,"utf8");{let r=Ct.utils.newid();return $n.default.writeFileSync(t,r),r}}else return _u()},_u=()=>{let e=Ct.env.VERSION;if(!e)throw new Error("No budibase pro version was specified");return e};var zt={};x(zt,{searchTable:()=>SI});var qt=require("@budibase/types"),xu=require("@budibase/backend-core");function SI(){return{type:"table",sourceType:qt.TableSourceType.INTERNAL,name:qt.AUDIT_LOG_TYPE,sourceId:xu.SQS_DATASOURCE_INTERNAL,primary:["_id"],schema:{metadata:{name:"metadata",type:qt.FieldType.JSON},fallback:{name:"fallback",type:qt.FieldType.JSON}}}}var et=9;var wI=new Date(864e13).toISOString(),vI=1e3*60*60*24;async function Qn(e){let r=(await Qe.getCachedLicense()).quotas?.[Ru.QuotaType.CONSTANT]?.[e]?.value||0;return r===Ee.UNLIMITED?new Date(wI).toISOString():new Date(new Date().getTime()-vI*r).toISOString()}async function Ou(){return Qn(Tu.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS)}var io=`${J.db.DocumentType.APP_BACKUP}${J.db.SEPARATOR}`;async function EI(e,t,r={}){let n=await Ou(),a=J.db.getProdAppID(e),o=a,i=a;if(t.trigger&&t.type){let s=`${J.db.SEPARATOR}${t.trigger}`;s+=`${J.db.SEPARATOR}${t.type}`,o+=s,i+=s}return(!t.startDate||t.startDate<n)&&(t.startDate=n),t.startDate&&(i+=`${J.db.SEPARATOR}${t.startDate}`),t.endDate&&(o+=`${J.db.SEPARATOR}${t.endDate}`),{...r,descending:!0,startkey:`${io}${o}${J.db.UNICODE_MAX}`,endkey:`${io}${i}`}}async function Pu(e,t){try{let r=J.db.getQueryIndex(J.db.ViewName.APP_BACKUP_BY_TRIGGER);return await e.query(r,t)}catch(r){if(r!=null&&r.error==="not_found")return await vu(),Pu(e,t);throw r}}function Cu(e,t){return`${io}${e}${J.db.SEPARATOR}${t}`}async function _I(e,t={}){let r=J.tenancy.getGlobalDB(),n,a=t.limit||9,o=await EI(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=qr(n,{paginate:t.paginate,pageSize:a}),s=[...new Set(i.data.filter(d=>d.createdBy).map(d=>d.createdBy))],c=await J.users.bulkGetGlobalUsersById(s,{cleanup:!0});for(let d of c)for(let m of i.data)d?._id===m.createdBy&&(m.createdBy=d);return i}async function xI(e,t={}){let r=J.tenancy.getGlobalDB(),n=J.db.getProdAppID(e.appId),a=Cu(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=J.db.getGlobalIDFromUserMetadataID(e.createdBy)),await r.put(o)}async function RI(e,t){let r=J.tenancy.getGlobalDB(),n=await r.get(e);return n.name=t,await r.put(n)}async function TI(e){let t=J.tenancy.getGlobalDB(),r=await t.get(e);await t.remove(r._id,r._rev)}async function OI(e){return await J.tenancy.getGlobalDB().get(e)}var Ut={};x(Ut,{get:()=>CI,getCacheEnvVarID:()=>Lu,getEnvVarID:()=>jn,update:()=>qI});var je=require("@budibase/backend-core"),Uu=M(require("lru-cache")),PI=1e3,qu=new Uu.default({max:PI});function jn(){return je.StaticDatabases.GLOBAL.docs.environmentVariables}function Lu(e){return`${je.tenancy.getTenantId()}/${jn()}/${e||""}`}async function CI(){let e=jn(),t=je.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=qu.get(a);if(o)return o;let i;return!n&&r?i={...r,variables:JSON.parse(je.encryption.decrypt(r.variables,je.encryption.SecretOption.ENCRYPTION))}:i={_id:e,variables:{}},qu.set(a,i),i}async function qI(e){let t=jn();return await je.tenancy.getGlobalDB().put({_id:e._id||t,_rev:e._rev||void 0,variables:je.encryption.encrypt(JSON.stringify(e.variables),je.encryption.SecretOption.ENCRYPTION)})}var Vn=new za(N.env.ACCOUNT_PORTAL_URL),Yn=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{}},Du=async e=>{let t,r;if(N.env.SELF_HOSTED){if(t=await Le.get(),!t.licenseKey)return;r={[N.constants.Header.LICENSE_KEY]:t.licenseKey}}else{let n=N.tenancy.getTenantId();r={[N.constants.Header.API_KEY]:N.env.ACCOUNT_PORTAL_API_KEY,[N.constants.Header.TENANT_ID]:n}}return e(r)},Bu=async()=>Du(async e=>{let t=await Xe.getQuotaUsage();if(t.usageQuota.users==null){let s=await N.users.getUserCount();console.info(`Syncing user count quota to ${s}`),t.usageQuota.users=s,await Xe.setUsage(s,Wn.StaticQuotaName.USERS,Wn.QuotaUsageType.STATIC)}let r=await N.installation.getInstallFromDB(),n=N.tenancy.getTenantId(),a=await N.events.identification.getUniqueTenantId(n),o=Wr.getProVersion(),i={quotaUsage:t,tenantId:n,install:{id:r.installId,tenantId:a,version:o}};try{let s=await Vn.post("/api/license",{headers:{...e},body:i});if(s.status===404||s.status===403)return;if(s.status!==200){let c=await Yn(s);throw new N.HTTPError(`Error getting license: ${c}`,s.status)}return s.json()}catch(s){if(N.env.DISABLE_ACCOUNT_PORTAL)return;throw s}});N.env.isJest()&&(Bu=jest.fn());var Xt=Bu;async function uo(e){let t;try{t=await Vn.get("/api/license",{headers:{[N.constants.Header.LICENSE_KEY]:e}})}catch(r){if(N.env.DISABLE_ACCOUNT_PORTAL)return;throw r}if(!(t.status===404||t.status===403)){if(t.status!==200){let r=await Yn(t);throw new N.HTTPError(`Error getting license: ${r}`,t.status)}return t.json()}}var UI=e=>Du(async t=>{let r=await Vn.post("/api/license/usage/triggered",{headers:{...t},body:e});if(r.status!==200){let n=await Yn(r);N.logging.logAlert(`Error triggering quota usage: ${n}`)}}),po=async e=>{let t=await N.installation.getInstall(),r={installVersion:t.version,installId:t.installId},n=await Vn.post("/api/license/activate",{headers:{[N.constants.Header.LICENSE_KEY]:e},body:r});if(n.status===403)throw new N.HTTPError("Invalid license key",400);if(n.status!==200){let a=await Yn(n);throw new N.HTTPError(`Error activating license key: ${a}`,n.status)}return n.json()};var Vo=require("@budibase/backend-core");var ca={};x(ca,{activateOfflineLicenseToken:()=>hR,deleteOfflineLicenseToken:()=>AR,dev:()=>yn,enrichLicense:()=>Rd,getIdentifier:()=>$o,getIdentifierBase64:()=>bR,getIdentifierFromBase64:()=>IR,getOfflineLicense:()=>Qo,getOfflineLicenseToken:()=>Ed,signing:()=>Hr,verifyExpiry:()=>_d,verifyInstallation:()=>xd});var Hr={};x(Hr,{sign:()=>DI,verifyLicenseToken:()=>Kr});var co=M(require("jsonwebtoken")),LI=`-----BEGIN PUBLIC KEY-----
|
|
29
29
|
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvz3jePLCFBXZ19c8Dpkv
|
|
30
30
|
XtSgOhKFOcvQdo/LV0KJRUzQWDPWuO4ILtBtnqhjtIzZH4CH0qCYBet5L6Qr4CM1
|
|
31
31
|
l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
|
|
@@ -34,16 +34,20 @@ l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
|
|
|
34
34
|
d/o3ZWE1TTj1zYwlCLN5qRKr3hU8nC3xEYNEbkB9SfTRaOq9Q7P8WmfLkoCPm3pR
|
|
35
35
|
mwIDAQAB
|
|
36
36
|
-----END PUBLIC KEY-----
|
|
37
|
-
`;function zr(e){return co.default.verify(e,CI,{algorithms:["RS256"]})}function UI(e,t){return co.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}var Yn={};x(Yn,{getFeatures:()=>lo});var l=require("@budibase/types");var LI={[l.PlanType.FREE]:[...Ee.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.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.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]},DI={[l.PlanType.FREE]:[...Ee.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.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.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]};function lo(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(LI);break;case l.Hosting.CLOUD:r=n(DI);break}return r}var Kn={};x(Kn,{UNLIMITED:()=>g,getQuotas:()=>fo});var Y=require("@budibase/types");var p=ut,Bu=Ee,g=-1,Xr=e=>e*1e6,BI={[Y.PlanType.FREE]:{...Bu.CLOUD_FREE_LICENSE.quotas},[Y.PlanType.PREMIUM]:{usage:{monthly:{...p.queries(g),...p.automations(1e3),...p.budibaseAICredits(0)},static:{...p.rows(1e4),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(0),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[Y.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...p.queries(g),...p.automations(5e3),...p.budibaseAICredits(Xr(2))},static:{...p.rows(25e3),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(0),...p.plugins(g),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[Y.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...p.queries(g),...p.automations(5e3),...p.budibaseAICredits(Xr(2))},static:{...p.rows(25e3),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(0),...p.plugins(g),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[Y.PlanType.PRO]:{usage:{monthly:{...p.queries(g),...p.automations(1e3),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(5),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[Y.PlanType.TEAM]:{usage:{monthly:{...p.queries(g),...p.automations(5e3),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(10),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(90)}},[Y.PlanType.BUSINESS]:{usage:{monthly:{...p.queries(g),...p.automations(1e4),...p.budibaseAICredits(0)},static:{...p.rows(5e4),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(50),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(365),...p.appBackupRetentionDays(365)}},[Y.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(Xr(4))},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(g),...p.plugins(g),...p.customAIConfigurations(g)}},constant:{...p.automationLogRetentionDays(g),...p.appBackupRetentionDays(g)}},[Y.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(Xr(4))},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(g),...p.plugins(g),...p.customAIConfigurations(g)}},constant:{...p.automationLogRetentionDays(15),...p.appBackupRetentionDays(15)}},[Y.PlanType.ENTERPRISE]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(Xr(4))},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(g),...p.plugins(g),...p.customAIConfigurations(g)}},constant:{...p.automationLogRetentionDays(g),...p.appBackupRetentionDays(g)}}},NI={[Y.PlanType.FREE]:{...Bu.SELF_FREE_LICENSE.quotas},[Y.PlanType.PREMIUM]:void 0,[Y.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(0),...p.plugins(g),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[Y.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(0),...p.plugins(g),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[Y.PlanType.PRO]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(5),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[Y.PlanType.TEAM]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(10),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(90)}},[Y.PlanType.BUSINESS]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(50),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(90),...p.appBackupRetentionDays(365)}},[Y.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(g),...p.plugins(g),...p.customAIConfigurations(g)}},constant:{...p.automationLogRetentionDays(g),...p.appBackupRetentionDays(g)}},[Y.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(g),...p.plugins(g),...p.customAIConfigurations(g)}},constant:{...p.automationLogRetentionDays(15),...p.appBackupRetentionDays(15)}},[Y.PlanType.ENTERPRISE]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(g),...p.plugins(g),...p.customAIConfigurations(g)}},constant:{...p.automationLogRetentionDays(g),...p.appBackupRetentionDays(g)}}};function fo(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 Y.Hosting.SELF:r=n(NI);break;case Y.Hosting.CLOUD:r=n(BI);break}return JSON.parse(JSON.stringify(r))}var er={};x(er,{appExists:()=>MI,encoding:()=>Zt});var Nu=require("@budibase/backend-core");async function MI(e){return(await Nu.db.getAllApps({all:!0,idsOnly:!0})).includes(e)}var Zt={};x(Zt,{base64ToObject:()=>kI,objectToBase64:()=>GI});function GI(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}function kI(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}var Id=require("@budibase/types"),fr=require("@budibase/backend-core"),Sd=N(Zc()),wd=N(Fo());async function mR(e){await Ue.save({offlineLicenseToken:e}),await Lt()}async function yR(){await Ue.save({offlineLicenseToken:void 0}),await Lt()}async function vd(){return(await Ue.get()).offlineLicenseToken}async function $o(){let t=(await fr.installation.getInstall()).installId,r=fr.context.getTenantId(),n=await fr.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:n}}async function hR(){let e=await $o();return Zt.objectToBase64(e)}function AR(e){return Zt.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 _d(e){let t=await $o();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}function xd(e){let t=e.plan.type,r=Id.Hosting.SELF,n=lo(r,t),a=fo(r,t);return e.features=(0,Sd.default)(e.features,n),e.quotas=(0,wd.default)(e.quotas,a),e}async function Qo(){try{let e=await vd();if(e){let t=await zr(e);return Ed(t),await _d(t),xd(t)}}catch(e){console.error("Error retrieving offline license",e)}}var An={};x(An,{deleteDevLicense:()=>vR,getOfflineLicense:()=>SR,writeDevLicenseToDisk:()=>wR});var Rd=require("@budibase/backend-core"),Wo=require("path"),Td=require("os"),Dt=N(require("fs"));var bR=Rd.env.isTest()?".budibase-test":".budibase",jo=(0,Wo.join)((0,Td.tmpdir)(),bR),IR="dev_license.txt",hn=(0,Wo.join)(jo,IR);if(!Dt.default.existsSync(jo))try{Dt.default.mkdirSync(jo)}catch{}function SR(){try{if(Dt.default.existsSync(hn)){let e=Dt.default.readFileSync(hn,{encoding:"utf-8"});return zr(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}function wR(e){console.log(`Writing license to: ${hn}`),Dt.default.writeFileSync(hn,e,{encoding:"utf-8"})}function vR(){Dt.default.rmSync(hn,{force:!0})}var Yo=async()=>{if(Vo.env.OFFLINE_MODE)return Qo();let e=await Xt();return e||(e=An.getOfflineLicense()),e},Ko=()=>Vo.env.SELF_HOSTED?Ee.SELF_FREE_LICENSE:Ee.CLOUD_FREE_LICENSE;var Ho={};x(Ho,{activateLicenseKey:()=>ER,deleteLicenseKey:()=>xR,getLicenseKey:()=>_R});async function ER(e){await po(e),await Ue.save({licenseKey:e}),await Lt()}async function _R(){return(await Ue.get()).licenseKey}async function xR(){await Ue.save({licenseKey:void 0}),await Lt()}var bn=require("@budibase/backend-core"),ca=N(require("dd-trace")),Od=3600,Lt=async()=>{await Cd(),await qd()},Pd=async(e,t)=>{let{populateLicense:r=Yo,populateFreeLicense:n=Ko}=t||{};return await ca.default.trace("getCachedLicense",async a=>{let o=bn.tenancy.getTenantId(),i=await Ka(),s=await i.get(o);return a.addTags({tenantId:o,foundInCache:!!s}),s||(s=await ca.default.trace("populateLicense",async()=>await r(o)),a.addTags({populatedLicense:!!s}),s||(s=ca.default.trace("populateFreeLicense",()=>n(e,o)),a.addTags({populatedFreeLicense:!!s})),s.refreshedAt=new Date().toISOString(),a.addTags({refreshedAt:s.refreshedAt,expirySeconds:Od}),await i.store(o,s,Od),s)})};bn.env.isJest()&&(Pd=jest.fn());var qd=Pd,Cd=async()=>{let e=bn.tenancy.getTenantId();await(await Ka()).delete(e)};async function ge(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 la(e,t){if(!await ge(e,t))throw new pt.FeatureDisabledError(`${e} is not currently enabled`,e)}async function zo(e,t){if(!await ge(e,t)){let r=e.join(", ");throw new pt.FeatureDisabledError(`${r} are not currently enabled`,r)}}function xe(e){return async(...t)=>(await la(fe.Feature.APP_BACKUPS),e(...t))}async function Jo(){return ge(fe.Feature.APP_BACKUPS)}async function Xo(){return ge(fe.Feature.BRANDING)}async function Ud(){return ge(fe.Feature.ENFORCEABLE_SSO)}async function TR(){return ge(fe.Feature.SYNC_AUTOMATIONS)}async function OR(){return ge(fe.Feature.TRIGGER_AUTOMATION_RUN)}async function Bt(){return ge(fe.Feature.APP_BUILDERS)}async function da(){return ge(fe.Feature.AUDIT_LOGS)}async function Zo(){return ge(fe.Feature.USER_GROUPS)}async function ct(){return ge(fe.Feature.EXPANDED_PUBLIC_API)}async function PR(e){if(pt.env.ENABLE_SSO_MAINTENANCE_MODE||!await Ud())return!1;let r;return e?.config?r=e.config:r=await pt.configs.getSettingsConfig(),!!r.isSSOEnforced}var es=async()=>{let e=fe.Feature.SCIM,t=await ge(e),r=await pt.configs.getSCIMConfig();if(!t||!r?.enabled)throw new pt.FeatureDisabledError(`${e} is not currently enabled`,e);return!0};async function qR(){return ge(fe.Feature.VIEW_PERMISSIONS)}async function CR(){return ge(fe.Feature.VIEW_READONLY_COLUMNS)}async function In(){return ge(fe.Feature.BUDIBASE_AI)}async function UR(){return ge(fe.Feature.AI_CUSTOM_CONFIGS)}var LR={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 DR(e){return await Xo()?{faviconUrl:e.faviconUrl,faviconUrlEtag:e.faviconUrlEtag,emailBrandingEnabled:e.emailBrandingEnabled,testimonialsEnabled:e.testimonialsEnabled,platformTitle:e.platformTitle,loginHeading:e.loginHeading,loginButton:e.loginButton,metaDescription:e.metaDescription,metaImageUrl:e.metaImageUrl,metaTitle:e.metaTitle}:LR}var gr={};x(gr,{enrichAIConfig:()=>ts,generateJs:()=>MR});var Sn=require("@budibase/backend-core"),Ld=N(require("openai")),Dd=require("@budibase/string-templates"),BR="budibase_ai",NR=/```(?:\w+)?\n([\s\S]+?)\n```/;async function ts(e){return await In()&&(e.config[BR]={provider:"OpenAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-4o-mini",apiKey:process.env.OPENAI_API_KEY,name:"Budibase AI"}),e}async function MR(e,t=[],r=[]){if(!Sn.env.OPENAI_API_KEY)throw new Sn.HTTPError("OpenAI API key is not set",500);let n=new Ld.default({apiKey:Sn.env.OPENAI_API_KEY}),a="You do not have access to any bindings in this request.";t&&t.length>0&&(a=`The bindings you have access to are:
|
|
37
|
+
`;function Kr(e){return co.default.verify(e,LI,{algorithms:["RS256"]})}function DI(e,t){return co.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}var Kn={};x(Kn,{getFeatures:()=>lo});var l=require("@budibase/types");var BI={[l.PlanType.FREE]:[...Ee.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]},NI={[l.PlanType.FREE]:[...Ee.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 lo(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(BI);break;case l.Hosting.CLOUD:r=n(NI);break}return r}var Hn={};x(Hn,{UNLIMITED:()=>f,getQuotas:()=>fo});var Y=require("@budibase/types");var p=pt,Nu=Ee,f=-1,Jr=e=>e*1e6,MI={[Y.PlanType.FREE]:{...Nu.CLOUD_FREE_LICENSE.quotas},[Y.PlanType.PREMIUM]:{usage:{monthly:{...p.queries(f),...p.automations(1e3),...p.budibaseAICredits(0)},static:{...p.rows(1e4),...p.apps(f),...p.users(f),...p.creators(f),...p.userGroups(0),...p.plugins(f),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[Y.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...p.queries(f),...p.automations(5e3),...p.budibaseAICredits(Jr(2))},static:{...p.rows(25e3),...p.apps(f),...p.users(f),...p.creators(f),...p.userGroups(0),...p.plugins(f),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[Y.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...p.queries(f),...p.automations(5e3),...p.budibaseAICredits(Jr(2))},static:{...p.rows(25e3),...p.apps(f),...p.users(f),...p.creators(f),...p.userGroups(0),...p.plugins(f),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[Y.PlanType.PRO]:{usage:{monthly:{...p.queries(f),...p.automations(1e3),...p.budibaseAICredits(0)},static:{...p.rows(f),...p.apps(f),...p.users(f),...p.creators(f),...p.userGroups(5),...p.plugins(f),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[Y.PlanType.TEAM]:{usage:{monthly:{...p.queries(f),...p.automations(5e3),...p.budibaseAICredits(0)},static:{...p.rows(f),...p.apps(f),...p.users(f),...p.creators(f),...p.userGroups(10),...p.plugins(f),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(90)}},[Y.PlanType.BUSINESS]:{usage:{monthly:{...p.queries(f),...p.automations(1e4),...p.budibaseAICredits(0)},static:{...p.rows(5e4),...p.apps(f),...p.users(f),...p.creators(f),...p.userGroups(50),...p.plugins(f),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(365),...p.appBackupRetentionDays(365)}},[Y.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...p.queries(f),...p.automations(f),...p.budibaseAICredits(Jr(4))},static:{...p.rows(f),...p.apps(f),...p.users(f),...p.creators(f),...p.userGroups(f),...p.plugins(f),...p.customAIConfigurations(f)}},constant:{...p.automationLogRetentionDays(f),...p.appBackupRetentionDays(f)}},[Y.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...p.queries(f),...p.automations(f),...p.budibaseAICredits(Jr(4))},static:{...p.rows(f),...p.apps(f),...p.users(f),...p.creators(f),...p.userGroups(f),...p.plugins(f),...p.customAIConfigurations(f)}},constant:{...p.automationLogRetentionDays(15),...p.appBackupRetentionDays(15)}},[Y.PlanType.ENTERPRISE]:{usage:{monthly:{...p.queries(f),...p.automations(f),...p.budibaseAICredits(Jr(4))},static:{...p.rows(f),...p.apps(f),...p.users(f),...p.creators(f),...p.userGroups(f),...p.plugins(f),...p.customAIConfigurations(f)}},constant:{...p.automationLogRetentionDays(f),...p.appBackupRetentionDays(f)}}},GI={[Y.PlanType.FREE]:{...Nu.SELF_FREE_LICENSE.quotas},[Y.PlanType.PREMIUM]:void 0,[Y.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...p.queries(f),...p.automations(f),...p.budibaseAICredits(0)},static:{...p.rows(f),...p.apps(f),...p.users(f),...p.creators(f),...p.userGroups(0),...p.plugins(f),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[Y.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...p.queries(f),...p.automations(f),...p.budibaseAICredits(0)},static:{...p.rows(f),...p.apps(f),...p.users(f),...p.creators(f),...p.userGroups(0),...p.plugins(f),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[Y.PlanType.PRO]:{usage:{monthly:{...p.queries(f),...p.automations(f),...p.budibaseAICredits(0)},static:{...p.rows(f),...p.apps(f),...p.users(f),...p.creators(f),...p.userGroups(5),...p.plugins(f),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[Y.PlanType.TEAM]:{usage:{monthly:{...p.queries(f),...p.automations(f),...p.budibaseAICredits(0)},static:{...p.rows(f),...p.apps(f),...p.users(f),...p.creators(f),...p.userGroups(10),...p.plugins(f),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(90)}},[Y.PlanType.BUSINESS]:{usage:{monthly:{...p.queries(f),...p.automations(f),...p.budibaseAICredits(0)},static:{...p.rows(f),...p.apps(f),...p.users(f),...p.creators(f),...p.userGroups(50),...p.plugins(f),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(90),...p.appBackupRetentionDays(365)}},[Y.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...p.queries(f),...p.automations(f),...p.budibaseAICredits(0)},static:{...p.rows(f),...p.apps(f),...p.users(f),...p.creators(f),...p.userGroups(f),...p.plugins(f),...p.customAIConfigurations(f)}},constant:{...p.automationLogRetentionDays(f),...p.appBackupRetentionDays(f)}},[Y.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...p.queries(f),...p.automations(f),...p.budibaseAICredits(0)},static:{...p.rows(f),...p.apps(f),...p.users(f),...p.creators(f),...p.userGroups(f),...p.plugins(f),...p.customAIConfigurations(f)}},constant:{...p.automationLogRetentionDays(15),...p.appBackupRetentionDays(15)}},[Y.PlanType.ENTERPRISE]:{usage:{monthly:{...p.queries(f),...p.automations(f),...p.budibaseAICredits(0)},static:{...p.rows(f),...p.apps(f),...p.users(f),...p.creators(f),...p.userGroups(f),...p.plugins(f),...p.customAIConfigurations(f)}},constant:{...p.automationLogRetentionDays(f),...p.appBackupRetentionDays(f)}}};function fo(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 Y.Hosting.SELF:r=n(GI);break;case Y.Hosting.CLOUD:r=n(MI);break}return JSON.parse(JSON.stringify(r))}var er={};x(er,{appExists:()=>kI,encoding:()=>Zt});var Mu=require("@budibase/backend-core");async function kI(e){return(await Mu.db.getAllApps({all:!0,idsOnly:!0})).includes(e)}var Zt={};x(Zt,{base64ToObject:()=>$I,objectToBase64:()=>FI});function FI(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}function $I(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}var Sd=require("@budibase/types"),fr=require("@budibase/backend-core"),wd=M(el()),vd=M(Fo());async function hR(e){await Le.save({offlineLicenseToken:e}),await Dt()}async function AR(){await Le.save({offlineLicenseToken:void 0}),await Dt()}async function Ed(){return(await Le.get()).offlineLicenseToken}async function $o(){let t=(await fr.installation.getInstall()).installId,r=fr.context.getTenantId(),n=await fr.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:n}}async function bR(){let e=await $o();return Zt.objectToBase64(e)}function IR(e){return Zt.base64ToObject(e)}function _d(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 xd(e){let t=await $o();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}function Rd(e){let t=e.plan.type,r=Sd.Hosting.SELF,n=lo(r,t),a=fo(r,t);return e.features=(0,wd.default)(e.features,n),e.quotas=(0,vd.default)(e.quotas,a),e}async function Qo(){try{let e=await Ed();if(e){let t=await Kr(e);return _d(t),await xd(t),Rd(t)}}catch(e){console.error("Error retrieving offline license",e)}}var yn={};x(yn,{deleteDevLicense:()=>_R,getOfflineLicense:()=>vR,writeDevLicenseToDisk:()=>ER});var Td=require("@budibase/backend-core"),Wo=require("path"),Od=require("os"),Bt=M(require("fs"));var SR=Td.env.isTest()?".budibase-test":".budibase",jo=(0,Wo.join)((0,Od.tmpdir)(),SR),wR="dev_license.txt",mn=(0,Wo.join)(jo,wR);if(!Bt.default.existsSync(jo))try{Bt.default.mkdirSync(jo)}catch{}function vR(){try{if(Bt.default.existsSync(mn)){let e=Bt.default.readFileSync(mn,{encoding:"utf-8"});return Kr(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}function ER(e){console.log(`Writing license to: ${mn}`),Bt.default.writeFileSync(mn,e,{encoding:"utf-8"})}function _R(){Bt.default.rmSync(mn,{force:!0})}var Yo=async()=>{if(Vo.env.OFFLINE_MODE)return Qo();let e=await Xt();return e||(e=yn.getOfflineLicense()),e},xR=e=>uo(e),Ko=()=>Vo.env.SELF_HOSTED?Ee.SELF_FREE_LICENSE:Ee.CLOUD_FREE_LICENSE;var Ho={};x(Ho,{activateLicenseKey:()=>RR,deleteLicenseKey:()=>OR,getLicenseKey:()=>TR});async function RR(e){await po(e),await Le.save({licenseKey:e}),await Dt()}async function TR(){return(await Le.get()).licenseKey}async function OR(){await Le.save({licenseKey:void 0}),await Dt()}var hn=require("@budibase/backend-core"),la=M(require("dd-trace")),Pd=3600,Dt=async()=>{await Ud(),await qd()},Cd=async(e,t)=>{let{populateLicense:r=Yo,populateFreeLicense:n=Ko}=t||{};return await la.default.trace("getCachedLicense",async a=>{let o=hn.tenancy.getTenantId(),i=await Ha(),s=await i.get(o);return a.addTags({tenantId:o,foundInCache:!!s}),s||(s=await la.default.trace("populateLicense",async()=>await r(o)),a.addTags({populatedLicense:!!s}),s||(s=la.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)})};hn.env.isJest()&&(Cd=jest.fn());var qd=Cd,Ud=async()=>{let e=hn.tenancy.getTenantId();await(await Ha()).delete(e)};async function ge(e,t){Array.isArray(e)||(e=[e]),t||(t=await Qe.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}async function da(e,t){if(!await ge(e,t))throw new ct.FeatureDisabledError(`${e} is not currently enabled`,e)}async function Jo(e,t){if(!await ge(e,t)){let r=e.join(", ");throw new ct.FeatureDisabledError(`${r} are not currently enabled`,r)}}function xe(e){return async(...t)=>(await da(fe.Feature.APP_BACKUPS),e(...t))}async function zo(){return ge(fe.Feature.APP_BACKUPS)}async function Xo(){return ge(fe.Feature.BRANDING)}async function Ld(){return ge(fe.Feature.ENFORCEABLE_SSO)}async function CR(){return ge(fe.Feature.SYNC_AUTOMATIONS)}async function qR(){return ge(fe.Feature.TRIGGER_AUTOMATION_RUN)}async function Nt(){return ge(fe.Feature.APP_BUILDERS)}async function fa(){return ge(fe.Feature.AUDIT_LOGS)}async function Zo(){return ge(fe.Feature.USER_GROUPS)}async function lt(){return ge(fe.Feature.EXPANDED_PUBLIC_API)}async function UR(e){if(ct.env.ENABLE_SSO_MAINTENANCE_MODE||!await Ld())return!1;let r;return e?.config?r=e.config:r=await ct.configs.getSettingsConfig(),!!r.isSSOEnforced}var es=async()=>{let e=fe.Feature.SCIM,t=await ge(e),r=await ct.configs.getSCIMConfig();if(!t||!r?.enabled)throw new ct.FeatureDisabledError(`${e} is not currently enabled`,e);return!0};async function LR(){return ge(fe.Feature.VIEW_PERMISSIONS)}async function DR(){return ge(fe.Feature.VIEW_READONLY_COLUMNS)}async function An(){return ge(fe.Feature.BUDIBASE_AI)}async function BR(){return ge(fe.Feature.AI_CUSTOM_CONFIGS)}var NR={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 MR(e){return await Xo()?{faviconUrl:e.faviconUrl,faviconUrlEtag:e.faviconUrlEtag,emailBrandingEnabled:e.emailBrandingEnabled,testimonialsEnabled:e.testimonialsEnabled,platformTitle:e.platformTitle,loginHeading:e.loginHeading,loginButton:e.loginButton,metaDescription:e.metaDescription,metaImageUrl:e.metaImageUrl,metaTitle:e.metaTitle}:NR}var ma={};x(ma,{enrichAIConfig:()=>ts});var GR="budibase_ai";async function ts(e){return await An()&&(e.config[GR]={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 at={};x(at,{addApp:()=>jR,addAutomation:()=>JR,addCustomAIConfig:()=>zR,addGroup:()=>ns,addPlugin:()=>os,addRow:()=>VR,addRows:()=>KR,addUsers:()=>ha,bustCache:()=>iu,decrement:()=>We,decrementMany:()=>Gt,getCurrentUsageValues:()=>lu,getLicensedQuota:()=>Bd,getQuotaUsage:()=>Pt,increment:()=>Oe,incrementBudibaseAICredits:()=>us,incrementMany:()=>Mt,removeApp:()=>WR,removeCustomAIConfig:()=>XR,removeCustomAIConfigs:()=>ZR,removeGroup:()=>as,removePlugin:()=>ss,removeRow:()=>YR,removeRows:()=>HR,removeUsers:()=>hr,set:()=>rs,setAllUsage:()=>ro,setAppUsageValue:()=>to,setUsage:()=>uu,setUsagePerApp:()=>pu,updatePluginCount:()=>is,updateUsage:()=>gr,usageLimitIsExceeded:()=>QR,utils:()=>Pr});var ce=require("@budibase/types");var Te=require("@budibase/backend-core");var Oe=(e,t,r)=>Dd({change:1,name:e,type:t,opts:r}),Mt=e=>Dd(e),Dd=async e=>{let t=Array.isArray(e)?e:[e];await gr(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 gr(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]},We=(e,t,r={})=>gr({usageChange:-1,name:e,type:t,opts:r}),Gt=e=>{let t=Array.isArray(e)?e:[e];return gr(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},rs=async(e,t,r)=>Xe.setUsage(r,e,t),kR=(e,t,r)=>{if(e==ce.QuotaUsageType.STATIC){let n=r.usageQuota.triggers;return n?n[t]||{}:{}}else{let n=Xe.utils.getCurrentMonthString(),a=r.monthly[n].triggers;return a?a[t]||{}:{}}},FR=async(e,t,r,n)=>{try{await Te.locks.doWithLock({type:ce.LockType.TRY_ONCE,name:ce.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let a={percentage:r,name:t.name};n&&(a.resetDate=n),await bt.triggerQuota(a)})}catch(a){Te.logging.logAlert("Error triggering quota",a)}},$R=async(e,t,r,n)=>{let a=await Pt(),o=e===ce.QuotaUsageType.MONTHLY?a.quotaReset:void 0,i=await kR(e,t,a),s=n.triggers,c=r/n.value*100;c>100&&(c=100);for(let[d,m]of s.entries())if(c>=m&&n.value!==pt.UNLIMITED){if(!i[m]){i[m]=new Date().toISOString();let y=s[d+1]||100;(!(c>=y)||c===m)&&await FR(t,n,c,o)}}else i[m]=void 0;return i},gr=async e=>{let t=Te.tenancy.getTenantId(),r=Array.isArray(e)?e:[e],n=null,a,o=[],i={},s={},c={},d={};for(let g of r){try{n=Te.context.getAppId()}catch{}if(ce.APP_QUOTA_NAMES.includes(g.name)&&!n)throw new Error("App context required for quota update");try{a=await Bd(ce.QuotaType.USAGE,g.name,g.type),o.push(a);let{total:w,app:C,breakdown:D}=await Xe.getCurrentUsageValues(g.type,g.name,g.opts?.id);w+=g.usageChange,C!=null&&(C+=g.usageChange),D!=null&&(D+=g.usageChange);let L={};if(g.opts?.dryRun||(L=await $R(g.type,g.name,w,a),d={...d,[g.name]:L}),a.value!==pt.UNLIMITED&&w>a.value&&g.usageChange>0)throw new Te.UsageLimitError(`Licensed ${a.name} of ${a.value} has been exceeded`,a.name);if(w=Math.max(0,w),C&&(C=Math.max(0,C)),D&&(D=Math.max(0,D),c={...c,[g.name]:D}),!g.opts?.dryRun){let q=g.opts?.valueFn;q&&(w=await q(),C=w),i={...i,[g.name]:w},s={...s,[g.name]:C}}}catch(w){throw g.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${g.name}`,w),w}}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:d[g.name]},opts:{...g.opts,tenantId:t}}));m.length>0&&await Xe.setAllUsage(m)},Bd=async(e,t,r)=>{let n=await Qe.getCachedLicense();if(!n){let a=Te.tenancy.getTenantId();throw new Error("License not found for tenant id "+a)}if(r&&(0,ce.isStaticQuota)(e,r,t))return n.quotas[e][r][t];if(r&&(0,ce.isMonthlyQuota)(e,r,t))return n.quotas[e][r][t];if((0,ce.isConstantQuota)(e,t))return n.quotas[e][t];throw new Error("Invalid quota type")},QR=async(e,t)=>{try{return await gr({usageChange:1,name:e,type:t,opts:{dryRun:!0}}),!1}catch(r){if(r.code===Te.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw r}};var mr=require("@budibase/types"),Nd=require("@budibase/backend-core"),Md=async()=>{let e=await Nd.db.getAllApps({dev:!0});return e?e.length:0},jR=async(e,{appId:t}={})=>Oe(mr.StaticQuotaName.APPS,mr.QuotaUsageType.STATIC,{fn:e,valueFn:Md,id:t}),WR=async({appId:e}={})=>We(mr.StaticQuotaName.APPS,mr.QuotaUsageType.STATIC,{valueFn:Md,id:e});var rt=require("@budibase/types"),VR=async(e,{tableId:t}={})=>Oe(rt.StaticQuotaName.ROWS,rt.QuotaUsageType.STATIC,{fn:e,id:t}),YR=async({tableId:e}={})=>We(rt.StaticQuotaName.ROWS,rt.QuotaUsageType.STATIC,{id:e}),KR=async(e,t,{tableId:r}={})=>Mt({change:e,name:rt.StaticQuotaName.ROWS,type:rt.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),HR=async(e,{tableId:t}={})=>Gt({change:e,name:rt.StaticQuotaName.ROWS,type:rt.QuotaUsageType.STATIC,opts:{id:t}});var ya=require("@budibase/types"),JR=async(e,{automationId:t}={})=>Oe(ya.MonthlyQuotaName.AUTOMATIONS,ya.QuotaUsageType.MONTHLY,{fn:e,id:t});var yr=require("@budibase/types"),ns=async e=>Oe(yr.StaticQuotaName.USER_GROUPS,yr.QuotaUsageType.STATIC,{fn:e}),as=async()=>We(yr.StaticQuotaName.USER_GROUPS,yr.QuotaUsageType.STATIC);var wt=require("@budibase/types"),os=async e=>Oe(wt.StaticQuotaName.PLUGINS,wt.QuotaUsageType.STATIC,{fn:e}),ss=async()=>We(wt.StaticQuotaName.PLUGINS,wt.QuotaUsageType.STATIC),is=async e=>rs(wt.StaticQuotaName.PLUGINS,wt.QuotaUsageType.STATIC,e);var nt=require("@budibase/types"),bn=require("@budibase/backend-core");var ha=async(e,t,r)=>{let n=[{change:e,name:nt.StaticQuotaName.USERS,type:nt.QuotaUsageType.STATIC,opts:{fn:r,valueFn:bn.users.getUserCount}}];t>0&&n.push({change:t,name:nt.StaticQuotaName.CREATORS,type:nt.QuotaUsageType.STATIC,opts:{valueFn:bn.users.getCreatorCount}});let a=await Mt(n);return await Xt(),a},hr=async(e,t)=>{let r=[{change:e,name:nt.StaticQuotaName.USERS,type:nt.QuotaUsageType.STATIC,opts:{valueFn:bn.users.getUserCount}}];t>0&&r.push({change:t,name:nt.StaticQuotaName.CREATORS,type:nt.QuotaUsageType.STATIC,opts:{valueFn:bn.users.getCreatorCount}}),await Gt(r),await Xt()};var Ve=require("@budibase/types"),us=async e=>Mt({change:e,name:Ve.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:Ve.QuotaUsageType.MONTHLY}),zR=async()=>Oe(Ve.StaticQuotaName.AI_CUSTOM_CONFIGS,Ve.QuotaUsageType.STATIC),XR=async()=>We(Ve.StaticQuotaName.AI_CUSTOM_CONFIGS,Ve.QuotaUsageType.STATIC),ZR=async e=>Gt({change:e,name:Ve.StaticQuotaName.AI_CUSTOM_CONFIGS,type:Ve.QuotaUsageType.STATIC});var dt={};x(dt,{addAppBuilder:()=>aT,db:()=>ot,removeAppBuilder:()=>oT});var Sn=require("@budibase/backend-core");var z={};x(z,{addAppBuilder:()=>fs,addUsers:()=>cs,adjustGroupCreatorsQuotas:()=>nT,cleanupApp:()=>rT,enrichUserRolesFromGroups:()=>tT,fetch:()=>In,get:()=>Ft,getBulk:()=>Wd,getGroupBuilderAppIds:()=>jd,getGroupRoleId:()=>eT,remove:()=>ps,removeAppBuilder:()=>gs,removeUsers:()=>ls,save:()=>Ar,updateGroupApps:()=>ds});var U=require("@budibase/backend-core");var Gd=require("@budibase/backend-core"),Aa=class extends Gd.HTTPError{constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function $d(e,t){try{let r=[];for(let s of e)if(s.roles){let c=s.roles[U.db.getProdAppID(t)];c&&r.push(c)}let n=await Promise.all(r.map(async s=>({[s]:await U.roles.roleToNumber(s)}))),a,o,i={};n.forEach(s=>{let[c,d]=Object.entries(s)[0];i[c]={roleId:c,roleNum:d}});for(let{roleId:s,roleNum:c}of Object.values(i))(o===void 0||c>o)&&(o=c,a=s);return a}catch(r){throw U.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 V.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?U.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=U.db.getProdAppID(t);return e.roles?.[a]?e.roles[a]:(n=n.filter(o=>o?.roles?Object.keys(o.roles).includes(a):!1),await $d(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 U.context.doInAppContext(a,async()=>{if(e.roles[a])return;let o=await $d(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 In(){return await V.fetch()}async function Ft(e){return await V.get(e)}async function Wd(e,t={enriched:!0}){return await V.getBulk(e,t)}async function kd(e){if(await V.getByName(e))throw new Aa(e)}async function Fd(e){let t=await V.getGroupUsers(e._id);if(!t.length)return 0;let n=await U.tenancy.getGlobalDB().getMultiple(t.map(o=>o._id));return(await U.userUtils.creatorsInList(n)).filter(o=>o).length}async function Ar(e){let t=[],r=!e._id,n=0;if(delete e.users,!e._id)e._id=V.generateUserGroupID(),await kd(e.name),t.push(U.events.group.created(e));else{let o=await V.get(e._id);if(o.name!==e.name&&await kd(e.name),t.push(U.events.group.updated(e)),JSON.stringify(o.roles)!==JSON.stringify(e.roles)){let i=o.users?.length||0,s=0;i>0&&(s=await Fd(o)),Object.values(e.roles).includes(U.roles.BUILTIN_ROLE_IDS.ADMIN)?n=i-s:n=-i,t.push(U.events.group.permissionsEdited(e))}}await Promise.all(t);let a=()=>V.save(e);if(r)return await ns(a);{let o=await a();if(n>0)await ha(0,n);else if(n<0){let i=await Fd(e),s=Math.abs(n)-i;s>0&&await hr(0,s)}return o}}async function ps(e,t){let r;try{r=await V.get(e)}catch{throw new Error("Group not found")}let n=Object.values(r.roles||{}).includes(U.roles.BUILTIN_ROLE_IDS.ADMIN),a=()=>{};if(n){let i=U.tenancy.getGlobalDB(),s=await V.getGroupUsers(e),d=(await Promise.all(s.map(w=>i.get(w._id)))).map(w=>({...w,userGroups:w.userGroups.filter(C=>C!==e)})),g=(await U.userUtils.creatorsInList(d)).filter(w=>w).length,y=s.length-g;y&&(a=()=>hr(0,y))}let o=await V.destroy(e,t);return await U.events.group.deleted(r),await as(),await a(),o}async function cs(e,t){let r=await V.get(e),n=await U.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 U.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes(U.roles.BUILTIN_ROLE_IDS.ADMIN)){let d=(await U.userUtils.creatorsInList(a)).filter(g=>g).length,m=a.length-d;m&&await ha(0,m)}let s=[];for(let c of t)s.push(U.cache.user.invalidateUser(c));return await Promise.all(s),await U.events.group.usersAdded(o.length,r),o}async function ls(e,t){let r=await V.get(e),n=await U.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 U.users.bulkUpdateGlobalUsers(a),Object.values(r.roles||{}).includes(U.roles.BUILTIN_ROLE_IDS.ADMIN)){let c=(await U.userUtils.creatorsInList(a)).filter(m=>m).length,d=a.length-c;d&&await hr(0,d)}let i=[];for(let s of t)i.push(U.cache.user.invalidateUser(s));return await Promise.all(i),a.length&&await U.events.group.usersDeleted(a.length,r),a}async function ds(e,t){let r=await Ft(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 Ar(r)}async function rT(e){let t=await In(),r=[];for(let n of t)!n.roles||!n.roles[e]||(delete n.roles[e],r.push(n));return await V.bulkSave(r)}async function fs(e,t){if(!await Nt())throw new Error("Feature not enabled, please check license");let r=U.db.getProdAppID(t),n=await Ft(e);n.builder??={apps:[]},n.builder.apps.includes(t)||(n.builder.apps.push(r),await Ar(n))}async function gs(e,t){if(!await Nt())throw new Error("Feature not enabled, please check license");let r=U.db.getProdAppID(t),n=await Ft(e);n.builder?.apps.includes(t)&&(n.builder.apps=n.builder.apps.filter(a=>a!==r),await Ar(n))}async function nT(){if(!await Zo()){let e=U.tenancy.getGlobalDB(),r=(await In()||[]).filter(n=>Object.values(n?.roles||{}).includes(U.roles.BUILTIN_ROLE_IDS.ADMIN));for(let n of r){let a=await V.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 U.userUtils.creatorsInList(i)).filter(m=>m).length,d=a.length-c;await V.save({...n,roles:{}}),d&&await hr(0,d)}}}Sn.users.UserDB.init(at,z,Re);var ot=Sn.users.UserDB;async function aT(e,t){if(!await Nt())throw new Error("Feature not enabled, please check license");await Sn.users.addAppBuilder(e,t)}async function oT(e,t){if(!await Nt())throw new Error("Feature not enabled, please check license");await Sn.users.removeAppBuilder(e,t)}var Ia={};x(Ia,{logs:()=>ws});var ws={};x(ws,{logSearch:()=>gT,oldestLogDate:()=>Xd,storeLog:()=>mT});var zd=require("@budibase/types"),ba=require("@budibase/backend-core");var vt=require("@budibase/types");var pe=require("@budibase/backend-core");var Vd=require("@budibase/backend-core");async function Yd(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||Vd.logging.logWarn(`Failed to backoff: ${t}`,r),o}var{SEPARATOR:ft,UNICODE_MAX:sT,DocumentType:Kd,AutomationViewMode:ms,ViewName:iT,getQueryIndex:uT}=pe.db,pT=new Date(0).toISOString(),cT=100,ys=async()=>Qn(vt.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS);function Hd(e,t,{status:r,automationId:n}={},a={}){let o=n?`${n}${ft}`:"",i=r?`${r}${ft}`:"",s;return r&&n?s=`${ms.ALL}${ft}${i}${o}`:r?s=`${ms.STATUS}${ft}${i}`:n?s=`${ms.AUTOMATION}${ft}${o}`:s=`${Kd.AUTOMATION_LOG}${ft}`,{...a,descending:!0,startkey:`${s}${t}${sT}`,endkey:`${s}${e}`}}function hs(e){let t=vt.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=vt.AutomationStatus.STOPPED_ERROR;break}else if(n.outputs?.success){if(a==="stopped"){t=vt.AutomationStatus.STOPPED;break}}else{t=vt.AutomationStatus.ERROR;break}}return t}function lT(e,t,r){return`${Kd.AUTOMATION_LOG}${ft}${e}${ft}${r}${ft}${t}`}async function As(e,t,r={docs:!0}){let n=pe.context.getProdAppDB();await n.exists()||(n=pe.context.getDevAppDB());let a={status:r.status},o=r?.limit?r.limit:r?.paginate?9+1:void 0,i=Hd(e,t,a,{include_docs:r.docs,limit:o});r?.page&&(i.startkey=r.page);let s=await n.allDocs(i);return qr(s,{paginate:r?.paginate,pageSize:9})}async function bs(e,t,r={}){let n=pe.context.getProdAppDB();await n.exists()||(n=pe.context.getDevAppDB());let a;try{let o={automationId:r?.automationId,status:r?.status},i=Hd(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 wu(),bs(e,t,r);throw o}return qr(a,{paginate:!0,pageSize:9})}async function Jd(e,t){let r=pe.context.getProdAppDB(),n=e._id,a=e.name,o=hs(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 Is(e,{clearing:t}={clearing:!1}){let r=pe.context.getProdAppDB();await Yd(async()=>{let n=await r.get(pe.db.DocumentType.APP_METADATA);for(let a of e){let o=a.split(pe.db.SEPARATOR),i=`${o[o.length-3]}${pe.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 pe.cache.app.invalidateAppMetadata(n.appId,n)},"Failed to update app metadata with automation log error")}async function dT(){let e=await ys();try{return await As(pT,e,{docs:!1,paginate:!1,limit:cT})}catch{return{data:[],hasNextPage:!1}}}async function Ss(){let e=pe.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(pe.db.SEPARATOR);return o[o.length-1]===vt.AutomationStatus.ERROR}).map(a=>a.id);await e.bulkDocs(r),n.length&&await Is(n,{clearing:!0})}catch(t){pe.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}var Xd=ys;async function fT(e,t,r,n){let a,o=new Date().toISOString(),i=await Xd();return(!e||e<i)&&(e=i),r||t?a=await bs(e,o,{automationId:r,status:t,page:n}):a=await As(e,o,{status:t,page:n,docs:!0,paginate:!0}),a}async function gT(e){return await Ss(),await fT(e.startDate,e.status,e.automationId,e.page)}async function mT(e,t){if(!ba.db.isProdAppID(ba.context.getAppId()))return;let r=hs(t),n=await Jd(e,t);r===zd.AutomationStatus.ERROR&&await Is([n]),await Ss()}var Sa={};x(Sa,{checkPluginQuotas:()=>AT,deletePlugin:()=>hT,storePlugin:()=>yT});var rf=require("@budibase/types"),oe=require("@budibase/backend-core");var Zd=M(require("fs")),ef=require("path");function tf(e,t){return Zd.default.readFileSync((0,ef.join)(e,t),"utf8")}async function yT(metadata,directory,source){let db=oe.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=oe.objectStore.getPluginS3Dir(name),files=await oe.objectStore.uploadDirectory(oe.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===rf.PluginType.DATASOURCE){let js=tf(directory,jsFile.name);try{eval(js)}catch(e){let t=e?.message?e.message:JSON.stringify(e);throw new Error(`JS invalid: ${t}`)}}let iconFileName=iconFile?iconFile.name:null,pluginId=oe.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 oe.events.plugin.imported(doc),{...doc,_rev:e.rev}};return rev?await write():await os(write)}async function hT(e){let t=oe.tenancy.getGlobalDB();try{let r=await t.get(e),n=oe.objectStore.getPluginS3Dir(r.name);await oe.objectStore.deleteFolder(oe.objectStore.ObjectStoreBuckets.PLUGINS,n),await t.remove(e,r._rev),await oe.events.plugin.deleted(r),await ss()}catch(r){let n=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${n}`)}}async function AT(){let e=oe.tenancy.getGlobalDB();try{let r=(await e.allDocs(oe.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await is(r)}catch(t){oe.logging.logAlert("Unable to retrieve plugins for quota check",t)}}var st={};x(st,{fetch:()=>IT,fetchValues:()=>ST,isEncryptionKeyAvailable:()=>bT,isValid:()=>of,remove:()=>vT,update:()=>wT});var wn=require("@budibase/types"),nf=require("@budibase/backend-core");function bT(){return!!nf.env.ENCRYPTION_KEY}async function IT(){let e=await Ut.get();return Object.keys(e.variables)}async function ST(e){let r=(await Ut.get()).variables,n={};for(let[a,o]of Object.entries(r))switch(e){case wn.AppEnvironment.DEVELOPMENT:n[a]=o.development;break;case wn.AppEnvironment.PRODUCTION:default:n[a]=o.production;break}return n}async function af(e){if(!(await tt.cache.getCachedLicense()).features.includes(wn.Feature.ENVIRONMENT_VARIABLES))throw new Error("User does not have access to environment variables feature.");let r=await Ut.get();r.variables=e(r.variables),await Ut.update(r)}async function wT(e,t){if(of(e))await af(n=>(n[e]=t,n));else throw new Error("Variable name has characters that are not allowed")}async function vT(e){await af(t=>(delete t[e],t))}function of(e){return/^[a-zA-Z0-9-_]+$/.test(e)}var Et={};x(Et,{definitions:()=>LT,download:()=>UT,fetch:()=>qT,write:()=>PT});var va=require("@budibase/types");var re=require("@budibase/backend-core"),Ye=require("@budibase/types");var sf=require("memorystream"),uf=new re.sql.Sql(Ye.SqlClient.SQL_LITE);async function ET(e,t,r){let n={operation:Ye.Operation.READ,table:zt.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:Ye.SortOrder.DESCENDING,type:Ye.SortType.STRING}}},a=uf._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 _T(e){return`${re.DocumentType.AUDIT_LOG}${re.SEPARATOR}${e}${re.SEPARATOR}${re.utils.newid()}`}async function pf(e){e._id||(e._id=_T(e.timestamp)),e.type||(e.type=Ye.AUDIT_LOG_TYPE);try{let r=await re.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){re.logging.logAlert("Failed to write audit log",t)}}async function vs(e,t,r){t||(t=1);let n=re.context.getAuditLogsDB();try{let a=9+1,o=await ET(e,t,a),i=zt.searchTable(),s=uf.convertJsonStringColumns(i,await n.sql(o.sql,o.bindings)),c;s.length>a&&(c=s.pop());let d={rows:s,hasNextPage:!!c};return d.hasNextPage&&(d.bookmark=t+1),d}catch(a){if(a.status===404&&!r?.isRetry)return await xT(),await du(),await vs(e,t,{isRetry:!0});throw a}}async function xT(){let e=re.context.getAuditLogsDB(),r=(await e.allDocs(re.db.getDocParams(re.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(n=>n.doc).filter(n=>n&&!n.type).map(n=>({...n,type:Ye.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}function cf(e){let t=re.context.getAuditLogsDB(),r=new sf,n=t.dump(r,{filter:o=>{let i=o;if(!i._id?.startsWith(re.DocumentType.AUDIT_LOG))return!1;let s=!0,c=(d,m)=>{!d||d.length===0||(s=!!(s&&m&&d.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 d=JSON.stringify(o);s=s&&d.includes(e.fullSearch)}return s}}),a=new sf;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 Se=require("@budibase/backend-core");var wa=require("@budibase/types"),vn=require("@budibase/string-templates"),En=require("@budibase/backend-core"),TT=En.constants.MIN_VALID_DATE.toISOString(),OT=En.constants.MAX_VALID_DATE.toISOString();function Es(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||TT,e.endDate=e.endDate||OT),e}async function lf(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(n=>En.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=Es(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}function _s(e,t,r){let n={_id:e,status:wa.AuditLogResourceStatus.DELETED};switch(t){case"app":n.name=r?.appName;break;case"user":n.email=r?.email;break}return n}function xs(e){let t=(0,vn.findHBSBlocks)(e);for(let r of t){let n=` "${r}"`;e=e.replace(e.includes(n)?n:` ${r}`,""),e=(0,vn.processStringSync)(e,{})}return e}function df(e,t){let r=wa.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let n=(0,vn.processStringSync)(r,t);return n.includes('""')&&(n=xs(r)),n}async function PT(e,t,r){if(!await fa()||!Se.utils.isAudited(e))return;let n=df(e,t),a=new Date;r?.timestamp&&(a=new Date(r.timestamp));let o={timestamp:a.toISOString(),event:e,name:n,userId:r?.userId||va.AuditLogSystemUser,metadata:{...t,...r?.hostInfo}},i={};try{if(r?.appId){o.appId=Se.db.getProdAppID(r.appId);let s=await Se.cache.app.getAppMetadata(r.appId);"name"in s&&(i.appName=s.name)}if(r?.userId){let s=await Se.users.getById(r?.userId);i.email=s.email}}catch(s){Se.logging.logAlert("Failed to retrieve fallback information for audit log",s)}return o.fallback=i,await pf(o)}async function CT(e){let t=e.map(s=>s.userId),n=e.filter(s=>s.appId).map(s=>Se.db.getDevAppID(s.appId)),a=await Se.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),o=await Se.db.getAppsByIDs([...new Set(n)]),i=[];for(let s of e){let c=a.find(g=>g?._id===s.userId),d=o.find(g=>Se.db.isSameAppID(g?.appId,s.appId)),m={event:s.event,timestamp:s.timestamp,name:s.name,metadata:s.metadata,user:c||_s(s.userId,"user",s.fallback)};s.appId&&(m.app=d||_s(s.appId,"app",s.fallback)),i.push(m)}return i}async function qT(e){if(!await fa())throw new Error("Audit logs not available - license required.");let t=await lf(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await vs(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await CT(r.rows)}}function UT(e){return e=Es(e),cf(e)}function LT(){let e=Object.entries(va.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=xs(r[1]);return t}var Ea={};x(Ea,{applications:()=>Ps,roles:()=>Ts,users:()=>Rs});var Rs={};x(Rs,{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 lt()||DT(e,t),e}var Ts={};x(Ts,{assign:()=>NT,unAssign:()=>MT});var _n=require("@budibase/backend-core");async function NT(e,t){if(!await lt())throw new Error("Unable to assign roles - license required.");let r=await ot.bulkGet(e);for(let n of r){if(t.role&&t.role.roleId){let a=_n.db.getProdAppID(t.role.appId);n.roles[a]=t.role.roleId}if(t.appBuilder){let a=_n.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 ot.bulkUpdate(r)}async function MT(e,t){if(!await lt())throw new Error("Unable to un-assign roles - license required.");let r=await ot.bulkGet(e);for(let n of r){if(t.role){let a=_n.db.getProdAppID(t.role?.appId);n.roles[a]===t.role.roleId&&delete n.roles[a]}if(t.appBuilder&&n.builder?.apps){let a=_n.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 Ps={};x(Ps,{buildExportFn:()=>kT,buildImportFn:()=>GT});var Os=require("@budibase/backend-core");function GT(e){return async(t,r)=>{await lt()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await Os.context.doInAppContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}function kT(e){return async(t,r)=>{await lt()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:n,excludeRows:a}=t.request.body;await Os.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 it=require("@budibase/backend-core"),be=require("@budibase/types");var Cs=require("@budibase/backend-core"),ff;function gf(){ff=Cs.queue.createQueue(Cs.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}function $t(){return ff}var mf=require("path"),yf=M(require("fs"));async function qs(e,t={}){return De.storeAppBackupMetadata(e,t)}function hf(e){let t=new Date().toISOString();switch(e){case be.AppBackupStatus.COMPLETE:case be.AppBackupStatus.FAILED:return{timestamp:t,finishedAt:t};case be.AppBackupStatus.STARTED:return{timestamp:t,startedAt:t};case be.AppBackupStatus.PENDING:return{timestamp:t,createdAt:t}}}async function FT(e,t,r,n){let a=await _a(e);return await De.storeAppBackupMetadata({...a,...hf(t),contents:r,status:t,type:be.AppBackupType.BACKUP},{filename:n,docId:e})}async function $T(e,t,r){let n=await _a(e);return await De.storeAppBackupMetadata({...n,...hf(r),status:r,type:be.AppBackupType.RESTORE,trigger:be.AppBackupTrigger.MANUAL},{docId:e,docRev:t})}async function _a(e){return De.getAppBackupMetadata(e)}async function QT(e,t){return De.updateAppBackupMetadata(e,t)}async function jT(e){let t=await De.getAppBackupMetadata(e);return t.filename&&await it.objectStore.deleteFile(it.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),De.deleteAppBackupMetadata(e)}async function WT(e,t){return De.fetchAppBackups(e,t)}async function Af(e){let t=await De.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let r=await it.objectStore.getReadStream(it.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}async function VT(e){let{stream:t}=await Af(e),r=(0,mf.join)(it.objectStore.budibaseTempDir(),it.utils.newid()),n=yf.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 YT(e,t,r={}){let n;try{n=await qs({appId:e,trigger:t,timestamp:new Date().toISOString(),status:be.AppBackupStatus.PENDING,type:be.AppBackupType.BACKUP,...r})}catch(a){if(a.status===409)return;throw a}return await $t().add({docId:n.id,docRev:n.rev,appId:e,export:{trigger:t,...r}}),await it.events.backup.appBackupTriggered(e,n.id,be.AppBackupType.BACKUP,t,r?.name),n.id}async function KT(e,t,r,n){let a=await _a(t),o;try{o=await qs({appId:e,timestamp:new Date().toISOString(),status:be.AppBackupStatus.PENDING,type:be.AppBackupType.RESTORE,createdBy:n})}catch(i){if(i?.status===409)return;throw i}return await $t().add({appId:e,docId:o.id,docRev:o.rev,import:{nameForBackup:r,backupId:t,createdBy:n}}),{restoreId:o.id,metadata:a}}var HT={isEnabled:zo,triggerAppRestore:xe(KT),triggerAppBackup:xe(YT),getBackupDownloadStream:xe(Af),downloadAppBackup:xe(VT),fetchAppBackups:xe(WT),storeAppBackupMetadata:xe(qs),updateBackupStatus:xe(FT),updateRestoreStatus:xe($T),getAppBackup:xe(_a),updateAppBackup:xe(QT),deleteAppBackup:xe(jT)},gt=HT;var Ls={};x(Ls,{init:()=>Us});var se=require("@budibase/backend-core");var Ke=require("@budibase/types");var br=M(require("fs"));async function Us(e){$t().process(async t=>{let r=t.data;try{if(r.export)return XT(t,e);if(r.import)return zT(t,e)}catch(n){se.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,n)}})}async function JT(e){await se.db.getDB(e,{skip_setup:!0}).destroy()}async function bf(e,t,r,n){let a=se.db.getDevAppID(r),o=se.db.getProdAppID(r),i=new Date().toISOString(),s=async(c,d)=>{n?.doc?await gt.updateBackupStatus(n.doc.id,c,d?.contents,d?.filename):await gt.storeAppBackupMetadata({appId:o,timestamp:i,trigger:e,status:c,name:n?.name,type:Ke.AppBackupType.BACKUP,contents:d?.contents,createdBy:n?.createdBy},{filename:d?.filename})};try{let c=await n.processing.exportAppFn(a,{tar:!0}),d=await n.processing.statsFn(a),m=`${o}/backup-${i}.tar.gz`,g=se.objectStore.ObjectStoreBuckets.BACKUPS,y=br.default.createReadStream(c);await se.objectStore.streamUpload({bucket:g,filename:m,stream:y,extra:{type:"application/gzip",metadata:{name:n?.name,trigger:e,timestamp:i,appId:o}}}),await s(Ke.AppBackupStatus.COMPLETE,{filename:m,contents:d}),br.default.existsSync(c)&&br.default.rmSync(c)}catch(c){se.logging.logAlert("App backup error",c),await s(Ke.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=se.tenancy.getTenantIDFromAppID(n);return se.tenancy.doInTenant(s,async()=>{let c=se.db.getDevAppID(n),{rev:d}=await gt.updateRestoreStatus(r.docId,r.docRev,Ke.AppBackupStatus.STARTED);await bf(Ke.AppBackupTrigger.RESTORING,s,n,{processing:t,createdBy:i,name:o});let m=await gt.downloadAppBackup(a);await JT(c);let g=Ke.AppBackupStatus.COMPLETE;try{await t.importAppFn(c,se.db.getDB(c),{file:{type:"application/gzip",path:m},key:m})}catch(y){se.logging.logAlert("App restore error",y),g=Ke.AppBackupStatus.FAILED}await gt.updateRestoreStatus(r.docId,d,g),br.default.existsSync(m)&&br.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=se.tenancy.getTenantIDFromAppID(n);await se.tenancy.doInTenant(i,async()=>{try{let{rev:s}=await gt.updateBackupStatus(r.docId,Ke.AppBackupStatus.STARTED);return bf(a,i,n,{processing:t,doc:{id:r.docId,rev:s},name:o})}catch(s){se.logging.logAlert("App backup error",s)}})}var ZT=async e=>{gf(),await Us(e.processing)},Ne={...gt,processing:Ls,init:ZT,getBackupQueue:$t};var If=async e=>{e.backups&&await Ne.init(e.backups)};var ve={};x(ve,{create:()=>VN,find:()=>WN,get:()=>jN,remove:()=>KN,update:()=>YN});var $h=M(Oi()),mt=require("@budibase/backend-core");var Qh=require("@budibase/types");async function jN(e){let t=mt.tenancy.getGlobalDB(),r=new mt.db.QueryBuilder(t.name,Qh.SearchIndex.USER);r.setIndexBuilder(mt.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 WN(e){return await mt.users.getById(e)}async function VN(e){let t=await ot.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new mt.HTTPError("User is already synched",409);e={...t,scimInfo:(0,$h.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await ot.save(e,{requirePassword:!1})}async function YN(e,t){return await ot.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}async function KN(e){return await ot.destroy(e)}var _r={};x(_r,{create:()=>HN});var jh=M(Oi());var Wh=require("@budibase/backend-core");async function HN(e){let t=await ao(e.name),r;if(!t)r=(await z.save(e)).id;else{if(t.scimInfo?.isSync)throw new Wh.HTTPError("Group is already synched",409);r=t._id,t.users&&(await z.removeUsers(r,t.users.map(a=>a._id)),delete t.users),t.scimInfo=(0,jh.default)(t.scimInfo,e.scimInfo),await z.save(t)}return await z.get(r)}var jt={};x(jt,{logRequest:()=>XN,logResponse:()=>ZN});var Yh=M(Vh()),_t=require("@budibase/backend-core"),{DocWritethrough:JN}=_t.cache.docWritethrough;function zN(){return`${_t.db.DocumentType.SCIM_LOG}${_t.db.SEPARATOR}${(0,Yh.default)().format("YYYYMMDD")}`}var Kh=async()=>{let e=_t.context.getScimDBName();return new JN(_t.db.getDB(e),zN())};async function XN(e){let t=Date.now().toString();return await(await Kh()).patch({[`${t}_request`]:{ts:new Date().toISOString(),...e}}),t}async function ZN(e,t){await(await Kh()).patch({[`${e}_response`]:{ts:new Date().toISOString(),...t}})}var Bi={};x(Bi,{doInScimContext:()=>Ui,feature:()=>H,internalGroupOnly:()=>ka,licensing:()=>Hh,requireSCIM:()=>Li,scimGroupOnly:()=>On,scimUserOnly:()=>Tn});var xt=require("@budibase/backend-core");var Ma=require("@budibase/types"),eM=(e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(xt.env.SELF_HOSTED&&xt.env.DEFAULT_LICENSE)return t.user.license=so,r();t.user.license=await tt.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(xt.utils.isServingApp(t)||xt.utils.isServingBuilder(t)||xt.utils.isServingBuilderPreview(t)||xt.utils.isPublicApiRequest(t))&&await at.usageLimitIsExceeded(Ma.StaticQuotaName.USERS,Ma.QuotaUsageType.STATIC)}return r()},Hh=eM;var H={};x(H,{requireFeature:()=>tM,requireFeatures:()=>rM});var tM=e=>async(t,r)=>{await da(e),await r()},rM=(...e)=>async(t,r)=>{await Jo(e),await r()};var Ga=require("@budibase/backend-core");var Ui=async(e,t)=>{let r;return Ga.env.DISABLE_SCIM_CALLS||(r=await jt.logRequest({...e.request.toJSON(),body:e.request.body})),await Ga.context.doInScimContext(async()=>{let n=await t();return r&&await jt.logResponse(r,{...e.response.toJSON(),body:e.response.body}),n})};var Li=async(e,t)=>{await es(),await t()};var Jh=require("@budibase/backend-core");var Tn=e=>Di(Jh.users.getById,e,!0),On=e=>Di(V.get,e,!0),ka=e=>Di(V.get,e,!1);function Di(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 Xi={};x(Xi,{ai:()=>fA,appBackups:()=>XA,auditLogs:()=>$A,environmentVariables:()=>LA,groups:()=>_A,scim:()=>Ob,users:()=>Lb});var uA=require("@budibase/types");var Fi={};x(Fi,{getLLM:()=>Pn});var sA=require("@budibase/backend-core"),iA=require("@budibase/types");var Gi=M(require("openai"));var Rt=require("@budibase/types");var zh=require("@budibase/string-templates"),Me=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 Ni(e){return Me.user(`Summarize this text:
|
|
39
|
+
${e}.
|
|
40
|
+
Only return the summary.`)}function Xh(e,t){return Me.user(`Return the category of this text: "${e}". Based on these categories: ${t.join(", ")}. Only return the category.`)}function Zh(e){return Me.user(`Clean the following string: "${e}". Remove any spelling mistakes or data issues. Only return the cleaned string itself and nothing else.`)}function eA(e){return Me.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 tA(e,t){return Me.user(`Translate the following text: "${e}" into ${t}. Only return the translation.`)}function rA(e){return Me.user(`Return the sentiment of this text: "${e}". Only return the sentiment.`)}function nA(e){return Me.user(`Search the web for the following: "${e}". Only return the top results.`)}function aA(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:
|
|
38
42
|
|
|
39
|
-
${
|
|
40
|
-
`)}`);let
|
|
43
|
+
${e.map(({readableBinding:i})=>`- $("${i}")`).join(`
|
|
44
|
+
`)}`);let n="You do not have access to any snippets in this request.";t.length>0&&(n=`The snippets you have access to are:
|
|
41
45
|
|
|
42
|
-
${
|
|
43
|
-
`)}`);let
|
|
46
|
+
${t.map(({name:i,code:s})=>{let c=s.replace(/^\s*return /g,"");return`- snippets.${i} = ${c.trim()}`}).join(`
|
|
47
|
+
`)}`);let a=(0,zh.getManifest)(),o=`You have access to the following helpers:
|
|
44
48
|
|
|
45
|
-
`;for(let
|
|
46
|
-
`}
|
|
49
|
+
`;for(let i of Object.values(a))for(let[s,{args:c,description:d}]of Object.entries(i)){let m=`${s}(${c.join(", ")})`;o+=`- helpers.${m}: ${d.trim()}
|
|
50
|
+
`}return Me.system(`
|
|
47
51
|
You are a helpful expert in writing JavaScript. A user is asking you for help
|
|
48
52
|
writing some JavaScript for their application.
|
|
49
53
|
|
|
@@ -141,12 +145,8 @@ This is incorrect because it references an undefined variable "amount". It is
|
|
|
141
145
|
important that you never reference a variable that is not defined. If you need
|
|
142
146
|
a variable, it will be provided to you as a binding.
|
|
143
147
|
|
|
144
|
-
${s}
|
|
145
|
-
|
|
146
148
|
${o}
|
|
147
149
|
|
|
148
|
-
${a}`,d=(await n.chat.completions.create({model:"gpt-4o",messages:[{role:"system",content:c},{role:"user",content:e}]})).choices[0].message.content,y=d.match(NR);return y&&(d=y[1]),d}var Ve={};x(Ve,{addApp:()=>QR,addAutomation:()=>HR,addCustomAIConfig:()=>zR,addGroup:()=>ns,addPlugin:()=>os,addRow:()=>WR,addRows:()=>YR,addUsers:()=>ma,bustCache:()=>su,decrement:()=>je,decrementMany:()=>Mt,getCurrentUsageValues:()=>cu,getLicensedQuota:()=>Nd,getQuotaUsage:()=>Ot,increment:()=>Te,incrementBudibaseAICredits:()=>us,incrementMany:()=>Nt,removeApp:()=>jR,removeCustomAIConfig:()=>JR,removeCustomAIConfigs:()=>XR,removeGroup:()=>as,removePlugin:()=>ss,removeRow:()=>VR,removeRows:()=>KR,removeUsers:()=>Ar,set:()=>rs,setAllUsage:()=>to,setAppUsageValue:()=>eo,setUsage:()=>iu,setUsagePerApp:()=>uu,updatePluginCount:()=>is,updateUsage:()=>mr,usageLimitIsExceeded:()=>$R,utils:()=>Cr});var ce=require("@budibase/types");var Be=require("@budibase/backend-core");var Te=(e,t,r)=>Bd({change:1,name:e,type:t,opts:r}),Nt=e=>Bd(e),Bd=async e=>{let t=Array.isArray(e)?e:[e];await mr(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 mr(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]},je=(e,t,r={})=>mr({usageChange:-1,name:e,type:t,opts:r}),Mt=e=>{let t=Array.isArray(e)?e:[e];return mr(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},rs=async(e,t,r)=>Xe.setUsage(r,e,t),GR=(e,t,r)=>{if(e==ce.QuotaUsageType.STATIC){let n=r.usageQuota.triggers;return n?n[t]||{}:{}}else{let n=Xe.utils.getCurrentMonthString(),a=r.monthly[n].triggers;return a?a[t]||{}:{}}},kR=async(e,t,r,n)=>{try{await Be.locks.doWithLock({type:ce.LockType.TRY_ONCE,name:ce.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let a={percentage:r,name:t.name};n&&(a.resetDate=n),await At.triggerQuota(a)})}catch(a){Be.logging.logAlert("Error triggering quota",a)}},FR=async(e,t,r,n)=>{let a=await Ot(),o=e===ce.QuotaUsageType.MONTHLY?a.quotaReset:void 0,i=await GR(e,t,a),s=n.triggers,c=r/n.value*100;c>100&&(c=100);for(let[f,d]of s.entries())if(c>=d&&n.value!==ut.UNLIMITED){if(!i[d]){i[d]=new Date().toISOString();let m=s[f+1]||100;(!(c>=m)||c===d)&&await kR(t,n,c,o)}}else i[d]=void 0;return i},mr=async e=>{let t=Array.isArray(e)?e:[e],r=null,n,a=[],o={},i={},s={},c={};for(let d of t){try{r=Be.context.getAppId()}catch{}if(ce.APP_QUOTA_NAMES.includes(d.name)&&!r)throw new Error("App context required for quota update");try{n=await Nd(ce.QuotaType.USAGE,d.name,d.type),a.push(n);let{total:m,app:w,breakdown:T}=await Xe.getCurrentUsageValues(d.type,d.name,d.opts?.id);m+=d.usageChange,w!=null&&(w+=d.usageChange),T!=null&&(T+=d.usageChange);let D={};if(d.opts?.dryRun||(D=await FR(d.type,d.name,m,n),c={...c,[d.name]:D}),n.value!==ut.UNLIMITED&&m>n.value&&d.usageChange>0)throw new Be.UsageLimitError(`Licensed ${n.name} of ${n.value} has been exceeded`,n.name);if(m=Math.max(0,m),w&&(w=Math.max(0,w)),T&&(T=Math.max(0,T),s={...s,[d.name]:T}),!d.opts?.dryRun){let L=d.opts?.valueFn;L&&(m=await L(),w=m),o={...o,[d.name]:m},i={...i,[d.name]:w}}}catch(m){throw d.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${d.name}`,m),m}}let f=t.filter(d=>!d.opts?.dryRun).map(d=>({name:d.name,type:d.type,values:{total:o[d.name],app:i[d.name],breakdown:s[d.name],triggers:c[d.name]},opts:d.opts}));f.length>0&&await Xe.setAllUsage(f)},Nd=async(e,t,r)=>{let n=await $e.getCachedLicense();if(!n){let a=Be.tenancy.getTenantId();throw new Error("License not found for tenant id "+a)}if(r&&(0,ce.isStaticQuota)(e,r,t))return n.quotas[e][r][t];if(r&&(0,ce.isMonthlyQuota)(e,r,t))return n.quotas[e][r][t];if((0,ce.isConstantQuota)(e,t))return n.quotas[e][t];throw new Error("Invalid quota type")},$R=async(e,t)=>{try{return await mr({usageChange:1,name:e,type:t,opts:{dryRun:!0}}),!1}catch(r){if(r.code===Be.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw r}};var yr=require("@budibase/types"),Md=require("@budibase/backend-core"),Gd=async()=>{let e=await Md.db.getAllApps({dev:!0});return e?e.length:0},QR=async(e,{appId:t}={})=>Te(yr.StaticQuotaName.APPS,yr.QuotaUsageType.STATIC,{fn:e,valueFn:Gd,id:t}),jR=async({appId:e}={})=>je(yr.StaticQuotaName.APPS,yr.QuotaUsageType.STATIC,{valueFn:Gd,id:e});var rt=require("@budibase/types"),WR=async(e,{tableId:t}={})=>Te(rt.StaticQuotaName.ROWS,rt.QuotaUsageType.STATIC,{fn:e,id:t}),VR=async({tableId:e}={})=>je(rt.StaticQuotaName.ROWS,rt.QuotaUsageType.STATIC,{id:e}),YR=async(e,t,{tableId:r}={})=>Nt({change:e,name:rt.StaticQuotaName.ROWS,type:rt.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),KR=async(e,{tableId:t}={})=>Mt({change:e,name:rt.StaticQuotaName.ROWS,type:rt.QuotaUsageType.STATIC,opts:{id:t}});var ga=require("@budibase/types"),HR=async(e,{automationId:t}={})=>Te(ga.MonthlyQuotaName.AUTOMATIONS,ga.QuotaUsageType.MONTHLY,{fn:e,id:t});var hr=require("@budibase/types"),ns=async e=>Te(hr.StaticQuotaName.USER_GROUPS,hr.QuotaUsageType.STATIC,{fn:e}),as=async()=>je(hr.StaticQuotaName.USER_GROUPS,hr.QuotaUsageType.STATIC);var St=require("@budibase/types"),os=async e=>Te(St.StaticQuotaName.PLUGINS,St.QuotaUsageType.STATIC,{fn:e}),ss=async()=>je(St.StaticQuotaName.PLUGINS,St.QuotaUsageType.STATIC),is=async e=>rs(St.StaticQuotaName.PLUGINS,St.QuotaUsageType.STATIC,e);var nt=require("@budibase/types"),wn=require("@budibase/backend-core");var ma=async(e,t,r)=>{let n=[{change:e,name:nt.StaticQuotaName.USERS,type:nt.QuotaUsageType.STATIC,opts:{fn:r,valueFn:wn.users.getUserCount}}];t>0&&n.push({change:t,name:nt.StaticQuotaName.CREATORS,type:nt.QuotaUsageType.STATIC,opts:{valueFn:wn.users.getCreatorCount}});let a=await Nt(n);return await Xt(),a},Ar=async(e,t)=>{let r=[{change:e,name:nt.StaticQuotaName.USERS,type:nt.QuotaUsageType.STATIC,opts:{valueFn:wn.users.getUserCount}}];t>0&&r.push({change:t,name:nt.StaticQuotaName.CREATORS,type:nt.QuotaUsageType.STATIC,opts:{valueFn:wn.users.getCreatorCount}}),await Mt(r),await Xt()};var We=require("@budibase/types"),us=async e=>Nt({change:e,name:We.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:We.QuotaUsageType.MONTHLY}),zR=async()=>Te(We.StaticQuotaName.AI_CUSTOM_CONFIGS,We.QuotaUsageType.STATIC),JR=async()=>je(We.StaticQuotaName.AI_CUSTOM_CONFIGS,We.QuotaUsageType.STATIC),XR=async e=>Mt({change:e,name:We.StaticQuotaName.AI_CUSTOM_CONFIGS,type:We.QuotaUsageType.STATIC});var lt={};x(lt,{addAppBuilder:()=>nT,db:()=>at,removeAppBuilder:()=>aT});var En=require("@budibase/backend-core");var J={};x(J,{addAppBuilder:()=>fs,addUsers:()=>cs,adjustGroupCreatorsQuotas:()=>rT,cleanupApp:()=>tT,enrichUserRolesFromGroups:()=>eT,fetch:()=>vn,get:()=>kt,getBulk:()=>Vd,getGroupBuilderAppIds:()=>Wd,getGroupRoleId:()=>ZR,remove:()=>ps,removeAppBuilder:()=>gs,removeUsers:()=>ls,save:()=>br,updateGroupApps:()=>ds});var C=require("@budibase/backend-core");var kd=require("@budibase/backend-core"),ya=class extends kd.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[C.db.getProdAppID(t)];c&&r.push(c)}let n=await Promise.all(r.map(async s=>({[s]:await C.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 C.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}async function jd(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await V.getBulk(e,{enriched:!1}),t}async function Wd(e,t){if(!e.userGroups)return[];let r=await jd(e.userGroups,t?.groups),n=t?.appId?C.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 ZR(e,t,r){if(!e.userGroups)return null;let n=await jd(e.userGroups,r?.groups),a=C.db.getProdAppID(t);return e.roles?.[a]?e.roles[a]:(n=n.filter(o=>o?.roles?Object.keys(o.roles).includes(a):!1),await Qd(n,t))}async function eT(e){if(!e||!e.userGroups)return e;let t=await Vd(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 C.context.doInAppContext(a,async()=>{if(e.roles[a])return;let o=await Qd(t,a);o&&(e.roles[a]=o)});let n=await Wd(e,{groups:t});if(n.length&&!e.builder?.global){let a=e.builder?.apps||[];e.builder={apps:a.concat(n)}}return e}async function vn(){return await V.fetch()}async function kt(e){return await V.get(e)}async function Vd(e,t={enriched:!0}){return await V.getBulk(e,t)}async function Fd(e){if(await V.getByName(e))throw new ya(e)}async function $d(e){let t=await V.getGroupUsers(e._id);if(!t.length)return 0;let n=await C.tenancy.getGlobalDB().getMultiple(t.map(o=>o._id));return(await C.userUtils.creatorsInList(n)).filter(o=>o).length}async function br(e){let t=[],r=!e._id,n=0;if(delete e.users,!e._id)e._id=V.generateUserGroupID(),await Fd(e.name),t.push(C.events.group.created(e));else{let o=await V.get(e._id);if(o.name!==e.name&&await Fd(e.name),t.push(C.events.group.updated(e)),JSON.stringify(o.roles)!==JSON.stringify(e.roles)){let i=o.users?.length||0,s=0;i>0&&(s=await $d(o)),Object.values(e.roles).includes(C.roles.BUILTIN_ROLE_IDS.ADMIN)?n=i-s:n=-i,t.push(C.events.group.permissionsEdited(e))}}await Promise.all(t);let a=()=>V.save(e);if(r)return await ns(a);{let o=await a();if(n>0)await ma(0,n);else if(n<0){let i=await $d(e),s=Math.abs(n)-i;s>0&&await Ar(0,s)}return o}}async function ps(e,t){let r;try{r=await V.get(e)}catch{throw new Error("Group not found")}let n=Object.values(r.roles||{}).includes(C.roles.BUILTIN_ROLE_IDS.ADMIN),a=()=>{};if(n){let i=C.tenancy.getGlobalDB(),s=await V.getGroupUsers(e),f=(await Promise.all(s.map(w=>i.get(w._id)))).map(w=>({...w,userGroups:w.userGroups.filter(T=>T!==e)})),y=(await C.userUtils.creatorsInList(f)).filter(w=>w).length,m=s.length-y;m&&(a=()=>Ar(0,m))}let o=await V.destroy(e,t);return await C.events.group.deleted(r),await as(),await a(),o}async function cs(e,t){let r=await V.get(e),n=await C.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 C.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes(C.roles.BUILTIN_ROLE_IDS.ADMIN)){let f=(await C.userUtils.creatorsInList(a)).filter(y=>y).length,d=a.length-f;d&&await ma(0,d)}let s=[];for(let c of t)s.push(C.cache.user.invalidateUser(c));return await Promise.all(s),await C.events.group.usersAdded(o.length,r),o}async function ls(e,t){let r=await V.get(e),n=await C.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 C.users.bulkUpdateGlobalUsers(a),Object.values(r.roles||{}).includes(C.roles.BUILTIN_ROLE_IDS.ADMIN)){let c=(await C.userUtils.creatorsInList(a)).filter(d=>d).length,f=a.length-c;f&&await Ar(0,f)}let i=[];for(let s of t)i.push(C.cache.user.invalidateUser(s));return await Promise.all(i),a.length&&await C.events.group.usersDeleted(a.length,r),a}async function ds(e,t){let r=await kt(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 br(r)}async function tT(e){let t=await vn(),r=[];for(let n of t)!n.roles||!n.roles[e]||(delete n.roles[e],r.push(n));return await V.bulkSave(r)}async function fs(e,t){if(!await Bt())throw new Error("Feature not enabled, please check license");let r=C.db.getProdAppID(t),n=await kt(e);n.builder??={apps:[]},n.builder.apps.includes(t)||(n.builder.apps.push(r),await br(n))}async function gs(e,t){if(!await Bt())throw new Error("Feature not enabled, please check license");let r=C.db.getProdAppID(t),n=await kt(e);n.builder?.apps.includes(t)&&(n.builder.apps=n.builder.apps.filter(a=>a!==r),await br(n))}async function rT(){if(!await Zo()){let e=C.tenancy.getGlobalDB(),r=(await vn()||[]).filter(n=>Object.values(n?.roles||{}).includes(C.roles.BUILTIN_ROLE_IDS.ADMIN));for(let n of r){let a=await V.getGroupUsers(n._id),i=(await Promise.all(a.map(d=>e.get(d._id)))).map(d=>({...d,userGroups:d.userGroups.filter(y=>y!==n._id)})),c=(await C.userUtils.creatorsInList(i)).filter(d=>d).length,f=a.length-c;await V.save({...n,roles:{}}),f&&await Ar(0,f)}}}En.users.UserDB.init(Ve,J,Re);var at=En.users.UserDB;async function nT(e,t){if(!await Bt())throw new Error("Feature not enabled, please check license");await En.users.addAppBuilder(e,t)}async function aT(e,t){if(!await Bt())throw new Error("Feature not enabled, please check license");await En.users.removeAppBuilder(e,t)}var Aa={};x(Aa,{logs:()=>ws});var ws={};x(ws,{logSearch:()=>fT,oldestLogDate:()=>Zd,storeLog:()=>gT});var Xd=require("@budibase/types"),ha=require("@budibase/backend-core");var wt=require("@budibase/types");var pe=require("@budibase/backend-core");var Yd=require("@budibase/backend-core");async function Kd(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||Yd.logging.logWarn(`Failed to backoff: ${t}`,r),o}var{SEPARATOR:dt,UNICODE_MAX:oT,DocumentType:Hd,AutomationViewMode:ms,ViewName:sT,getQueryIndex:iT}=pe.db,uT=new Date(0).toISOString(),pT=100,ys=async()=>jn(wt.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS);function zd(e,t,{status:r,automationId:n}={},a={}){let o=n?`${n}${dt}`:"",i=r?`${r}${dt}`:"",s;return r&&n?s=`${ms.ALL}${dt}${i}${o}`:r?s=`${ms.STATUS}${dt}${i}`:n?s=`${ms.AUTOMATION}${dt}${o}`:s=`${Hd.AUTOMATION_LOG}${dt}`,{...a,descending:!0,startkey:`${s}${t}${oT}`,endkey:`${s}${e}`}}function hs(e){let t=wt.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=wt.AutomationStatus.STOPPED_ERROR;break}else if(n.outputs?.success){if(a==="stopped"){t=wt.AutomationStatus.STOPPED;break}}else{t=wt.AutomationStatus.ERROR;break}}return t}function cT(e,t,r){return`${Hd.AUTOMATION_LOG}${dt}${e}${dt}${r}${dt}${t}`}async function As(e,t,r={docs:!0}){let n=pe.context.getProdAppDB();await n.exists()||(n=pe.context.getDevAppDB());let a={status:r.status},o=r?.limit?r.limit:r?.paginate?9+1:void 0,i=zd(e,t,a,{include_docs:r.docs,limit:o});r?.page&&(i.startkey=r.page);let s=await n.allDocs(i);return Lr(s,{paginate:r?.paginate,pageSize:9})}async function bs(e,t,r={}){let n=pe.context.getProdAppDB();await n.exists()||(n=pe.context.getDevAppDB());let a;try{let o={automationId:r?.automationId,status:r?.status},i=zd(e,t,o,{include_docs:!0,limit:9+1});r?.page&&(i.startkey=r.page),a=await n.query(iT(sT.AUTOMATION_LOGS),i)}catch(o){if(o!=null&&(o.name==="not_found"||o.error==="not_found"))return await Su(),bs(e,t,r);throw o}return Lr(a,{paginate:!0,pageSize:9})}async function Jd(e,t){let r=pe.context.getProdAppDB(),n=e._id,a=e.name,o=hs(t),i=new Date().toISOString(),s=cT(i,o,n),c={...t,automationId:n,status:o,automationName:a,createdAt:i,_id:s};return await r.put(c),s}async function Is(e,{clearing:t}={clearing:!1}){let r=pe.context.getProdAppDB();await Kd(async()=>{let n=await r.get(pe.db.DocumentType.APP_METADATA);for(let a of e){let o=a.split(pe.db.SEPARATOR),i=`${o[o.length-3]}${pe.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 pe.cache.app.invalidateAppMetadata(n.appId,n)},"Failed to update app metadata with automation log error")}async function lT(){let e=await ys();try{return await As(uT,e,{docs:!1,paginate:!1,limit:pT})}catch{return{data:[],hasNextPage:!1}}}async function Ss(){let e=pe.context.getProdAppDB();try{let t=await lT();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(pe.db.SEPARATOR);return o[o.length-1]===wt.AutomationStatus.ERROR}).map(a=>a.id);await e.bulkDocs(r),n.length&&await Is(n,{clearing:!0})}catch(t){pe.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}var Zd=ys;async function dT(e,t,r,n){let a,o=new Date().toISOString(),i=await Zd();return(!e||e<i)&&(e=i),r||t?a=await bs(e,o,{automationId:r,status:t,page:n}):a=await As(e,o,{status:t,page:n,docs:!0,paginate:!0}),a}async function fT(e){return await Ss(),await dT(e.startDate,e.status,e.automationId,e.page)}async function gT(e,t){if(!ha.db.isProdAppID(ha.context.getAppId()))return;let r=hs(t),n=await Jd(e,t);r===Xd.AutomationStatus.ERROR&&await Is([n]),await Ss()}var ba={};x(ba,{checkPluginQuotas:()=>hT,deletePlugin:()=>yT,storePlugin:()=>mT});var nf=require("@budibase/types"),oe=require("@budibase/backend-core");var ef=N(require("fs")),tf=require("path");function rf(e,t){return ef.default.readFileSync((0,tf.join)(e,t),"utf8")}async function mT(metadata,directory,source){let db=oe.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=oe.objectStore.getPluginS3Dir(name),files=await oe.objectStore.uploadDirectory(oe.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===nf.PluginType.DATASOURCE){let js=rf(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=oe.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 oe.events.plugin.imported(doc),{...doc,_rev:e.rev}};return rev?await write():await os(write)}async function yT(e){let t=oe.tenancy.getGlobalDB();try{let r=await t.get(e),n=oe.objectStore.getPluginS3Dir(r.name);await oe.objectStore.deleteFolder(oe.objectStore.ObjectStoreBuckets.PLUGINS,n),await t.remove(e,r._rev),await oe.events.plugin.deleted(r),await ss()}catch(r){let n=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${n}`)}}async function hT(){let e=oe.tenancy.getGlobalDB();try{let r=(await e.allDocs(oe.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await is(r)}catch(t){oe.logging.logAlert("Unable to retrieve plugins for quota check",t)}}var ot={};x(ot,{fetch:()=>bT,fetchValues:()=>IT,isEncryptionKeyAvailable:()=>AT,isValid:()=>sf,remove:()=>wT,update:()=>ST});var _n=require("@budibase/types"),af=require("@budibase/backend-core");function AT(){return!!af.env.ENCRYPTION_KEY}async function bT(){let e=await Ct.get();return Object.keys(e.variables)}async function IT(e){let r=(await Ct.get()).variables,n={};for(let[a,o]of Object.entries(r))switch(e){case _n.AppEnvironment.DEVELOPMENT:n[a]=o.development;break;case _n.AppEnvironment.PRODUCTION:default:n[a]=o.production;break}return n}async function of(e){if(!(await tt.cache.getCachedLicense()).features.includes(_n.Feature.ENVIRONMENT_VARIABLES))throw new Error("User does not have access to environment variables feature.");let r=await Ct.get();r.variables=e(r.variables),await Ct.update(r)}async function ST(e,t){if(sf(e))await of(n=>(n[e]=t,n));else throw new Error("Variable name has characters that are not allowed")}async function wT(e){await of(t=>(delete t[e],t))}function sf(e){return/^[a-zA-Z0-9-_]+$/.test(e)}var vt={};x(vt,{definitions:()=>UT,download:()=>CT,fetch:()=>qT,write:()=>OT});var Sa=require("@budibase/types");var re=require("@budibase/backend-core"),Ye=require("@budibase/types");var uf=require("memorystream"),pf=new re.sql.Sql(Ye.SqlClient.SQL_LITE);async function vT(e,t,r){let n={operation:Ye.Operation.READ,table:Jt.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:Ye.SortOrder.DESCENDING,type:Ye.SortType.STRING}}},a=pf._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 ET(e){return`${re.DocumentType.AUDIT_LOG}${re.SEPARATOR}${e}${re.SEPARATOR}${re.utils.newid()}`}async function cf(e){e._id||(e._id=ET(e.timestamp)),e.type||(e.type=Ye.AUDIT_LOG_TYPE);try{let r=await re.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){re.logging.logAlert("Failed to write audit log",t)}}async function vs(e,t,r){t||(t=1);let n=re.context.getAuditLogsDB();try{let a=9+1,o=await vT(e,t,a),i=Jt.searchTable(),s=pf.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 vs(e,t,{isRetry:!0});throw a}}async function _T(){let e=re.context.getAuditLogsDB(),r=(await e.allDocs(re.db.getDocParams(re.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(n=>n.doc).filter(n=>n&&!n.type).map(n=>({...n,type:Ye.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}function lf(e){let t=re.context.getAuditLogsDB(),r=new uf,n=t.dump(r,{filter:o=>{let i=o;if(!i._id?.startsWith(re.DocumentType.AUDIT_LOG))return!1;let s=!0,c=(f,d)=>{!f||f.length===0||(s=!!(s&&d&&f.includes(d)))};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 uf;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)+`
|
|
149
|
-
`;a.write(s)}}),r.on("end",()=>{a.end()}),{promise:n,stream:a}}var Se=require("@budibase/backend-core");var Ia=require("@budibase/types"),xn=require("@budibase/string-templates"),Rn=require("@budibase/backend-core"),RT=Rn.constants.MIN_VALID_DATE.toISOString(),TT=Rn.constants.MAX_VALID_DATE.toISOString();function Es(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||RT,e.endDate=e.endDate||TT),e}async function df(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(n=>Rn.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=Es(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}function _s(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 xs(e){let t=(0,xn.findHBSBlocks)(e);for(let r of t){let n=` "${r}"`;e=e.replace(e.includes(n)?n:` ${r}`,""),e=(0,xn.processStringSync)(e,{})}return e}function ff(e,t){let r=Ia.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let n=(0,xn.processStringSync)(r,t);return n.includes('""')&&(n=xs(r)),n}async function OT(e,t,r){if(!await da()||!Se.utils.isAudited(e))return;let n=ff(e,t),a=new Date;r?.timestamp&&(a=new Date(r.timestamp));let o={timestamp:a.toISOString(),event:e,name:n,userId:r?.userId||Sa.AuditLogSystemUser,metadata:{...t,...r?.hostInfo}},i={};try{if(r?.appId){o.appId=Se.db.getProdAppID(r.appId);let s=await Se.cache.app.getAppMetadata(r.appId);"name"in s&&(i.appName=s.name)}if(r?.userId){let s=await Se.users.getById(r?.userId);i.email=s.email}}catch(s){Se.logging.logAlert("Failed to retrieve fallback information for audit log",s)}return o.fallback=i,await cf(o)}async function PT(e){let t=e.map(s=>s.userId),n=e.filter(s=>s.appId).map(s=>Se.db.getDevAppID(s.appId)),a=await Se.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),o=await Se.db.getAppsByIDs([...new Set(n)]),i=[];for(let s of e){let c=a.find(y=>y?._id===s.userId),f=o.find(y=>Se.db.isSameAppID(y?.appId,s.appId)),d={event:s.event,timestamp:s.timestamp,name:s.name,metadata:s.metadata,user:c||_s(s.userId,"user",s.fallback)};s.appId&&(d.app=f||_s(s.appId,"app",s.fallback)),i.push(d)}return i}async function qT(e){if(!await da())throw new Error("Audit logs not available - license required.");let t=await df(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await vs(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await PT(r.rows)}}function CT(e){return e=Es(e),lf(e)}function UT(){let e=Object.entries(Sa.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=xs(r[1]);return t}var wa={};x(wa,{applications:()=>Ps,roles:()=>Ts,users:()=>Rs});var Rs={};x(Rs,{roleCheck:()=>DT});function LT(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 DT(e,t){return await ct()||LT(e,t),e}var Ts={};x(Ts,{assign:()=>BT,unAssign:()=>NT});var Tn=require("@budibase/backend-core");async function BT(e,t){if(!await ct())throw new Error("Unable to assign roles - license required.");let r=await at.bulkGet(e);for(let n of r){if(t.role&&t.role.roleId){let a=Tn.db.getProdAppID(t.role.appId);n.roles[a]=t.role.roleId}if(t.appBuilder){let a=Tn.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 at.bulkUpdate(r)}async function NT(e,t){if(!await ct())throw new Error("Unable to un-assign roles - license required.");let r=await at.bulkGet(e);for(let n of r){if(t.role){let a=Tn.db.getProdAppID(t.role?.appId);n.roles[a]===t.role.roleId&&delete n.roles[a]}if(t.appBuilder&&n.builder?.apps){let a=Tn.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 Ps={};x(Ps,{buildExportFn:()=>GT,buildImportFn:()=>MT});var Os=require("@budibase/backend-core");function MT(e){return async(t,r)=>{await ct()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await Os.context.doInAppContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}function GT(e){return async(t,r)=>{await ct()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:n,excludeRows:a}=t.request.body;await Os.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 st=require("@budibase/backend-core"),be=require("@budibase/types");var qs=require("@budibase/backend-core"),gf;function mf(){gf=qs.queue.createQueue(qs.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}function Ft(){return gf}var yf=require("path"),hf=N(require("fs"));async function Cs(e,t={}){return Le.storeAppBackupMetadata(e,t)}function Af(e){let t=new Date().toISOString();switch(e){case be.AppBackupStatus.COMPLETE:case be.AppBackupStatus.FAILED:return{timestamp:t,finishedAt:t};case be.AppBackupStatus.STARTED:return{timestamp:t,startedAt:t};case be.AppBackupStatus.PENDING:return{timestamp:t,createdAt:t}}}async function kT(e,t,r,n){let a=await va(e);return await Le.storeAppBackupMetadata({...a,...Af(t),contents:r,status:t,type:be.AppBackupType.BACKUP},{filename:n,docId:e})}async function FT(e,t,r){let n=await va(e);return await Le.storeAppBackupMetadata({...n,...Af(r),status:r,type:be.AppBackupType.RESTORE,trigger:be.AppBackupTrigger.MANUAL},{docId:e,docRev:t})}async function va(e){return Le.getAppBackupMetadata(e)}async function $T(e,t){return Le.updateAppBackupMetadata(e,t)}async function QT(e){let t=await Le.getAppBackupMetadata(e);return t.filename&&await st.objectStore.deleteFile(st.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),Le.deleteAppBackupMetadata(e)}async function jT(e,t){return Le.fetchAppBackups(e,t)}async function bf(e){let t=await Le.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let r=await st.objectStore.getReadStream(st.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}async function WT(e){let{stream:t}=await bf(e),r=(0,yf.join)(st.objectStore.budibaseTempDir(),st.utils.newid()),n=hf.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 VT(e,t,r={}){let n;try{n=await Cs({appId:e,trigger:t,timestamp:new Date().toISOString(),status:be.AppBackupStatus.PENDING,type:be.AppBackupType.BACKUP,...r})}catch(a){if(a.status===409)return;throw a}return await Ft().add({docId:n.id,docRev:n.rev,appId:e,export:{trigger:t,...r}}),await st.events.backup.appBackupTriggered(e,n.id,be.AppBackupType.BACKUP,t,r?.name),n.id}async function YT(e,t,r,n){let a=await va(t),o;try{o=await Cs({appId:e,timestamp:new Date().toISOString(),status:be.AppBackupStatus.PENDING,type:be.AppBackupType.RESTORE,createdBy:n})}catch(i){if(i?.status===409)return;throw i}return await Ft().add({appId:e,docId:o.id,docRev:o.rev,import:{nameForBackup:r,backupId:t,createdBy:n}}),{restoreId:o.id,metadata:a}}var KT={isEnabled:Jo,triggerAppRestore:xe(YT),triggerAppBackup:xe(VT),getBackupDownloadStream:xe(bf),downloadAppBackup:xe(WT),fetchAppBackups:xe(jT),storeAppBackupMetadata:xe(Cs),updateBackupStatus:xe(kT),updateRestoreStatus:xe(FT),getAppBackup:xe(va),updateAppBackup:xe($T),deleteAppBackup:xe(QT)},ft=KT;var Ls={};x(Ls,{init:()=>Us});var se=require("@budibase/backend-core");var Ke=require("@budibase/types");var Ir=N(require("fs"));async function Us(e){Ft().process(async t=>{let r=t.data;try{if(r.export)return JT(t,e);if(r.import)return zT(t,e)}catch(n){se.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,n)}})}async function HT(e){await se.db.getDB(e,{skip_setup:!0}).destroy()}async function If(e,t,r,n){let a=se.db.getDevAppID(r),o=se.db.getProdAppID(r),i=new Date().toISOString(),s=async(c,f)=>{n?.doc?await ft.updateBackupStatus(n.doc.id,c,f?.contents,f?.filename):await ft.storeAppBackupMetadata({appId:o,timestamp:i,trigger:e,status:c,name:n?.name,type:Ke.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),d=`${o}/backup-${i}.tar.gz`,y=se.objectStore.ObjectStoreBuckets.BACKUPS,m=Ir.default.createReadStream(c);await se.objectStore.streamUpload({bucket:y,filename:d,stream:m,extra:{type:"application/gzip",metadata:{name:n?.name,trigger:e,timestamp:i,appId:o}}}),await s(Ke.AppBackupStatus.COMPLETE,{filename:d,contents:f}),Ir.default.existsSync(c)&&Ir.default.rmSync(c)}catch(c){se.logging.logAlert("App backup error",c),await s(Ke.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=se.tenancy.getTenantIDFromAppID(n);return se.tenancy.doInTenant(s,async()=>{let c=se.db.getDevAppID(n),{rev:f}=await ft.updateRestoreStatus(r.docId,r.docRev,Ke.AppBackupStatus.STARTED);await If(Ke.AppBackupTrigger.RESTORING,s,n,{processing:t,createdBy:i,name:o});let d=await ft.downloadAppBackup(a);await HT(c);let y=Ke.AppBackupStatus.COMPLETE;try{await t.importAppFn(c,se.db.getDB(c),{file:{type:"application/gzip",path:d},key:d})}catch(m){se.logging.logAlert("App restore error",m),y=Ke.AppBackupStatus.FAILED}await ft.updateRestoreStatus(r.docId,f,y),Ir.default.existsSync(d)&&Ir.default.rmSync(d,{force:!0})})}async function JT(e,t){let r=e.data,n=r.appId,a=r.export.trigger,o=r.export.name,i=se.tenancy.getTenantIDFromAppID(n);await se.tenancy.doInTenant(i,async()=>{try{let{rev:s}=await ft.updateBackupStatus(r.docId,Ke.AppBackupStatus.STARTED);return If(a,i,n,{processing:t,doc:{id:r.docId,rev:s},name:o})}catch(s){se.logging.logAlert("App backup error",s)}})}var XT=async e=>{mf(),await Us(e.processing)},Ne={...ft,processing:Ls,init:XT,getBackupQueue:Ft};var Sf=async e=>{e.backups&&await Ne.init(e.backups)};var ve={};x(ve,{create:()=>WN,find:()=>jN,get:()=>QN,remove:()=>YN,update:()=>VN});var Qh=N(Oi()),gt=require("@budibase/backend-core");var jh=require("@budibase/types");async function QN(e){let t=gt.tenancy.getGlobalDB(),r=new gt.db.QueryBuilder(t.name,jh.SearchIndex.USER);r.setIndexBuilder(gt.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 jN(e){return await gt.users.getById(e)}async function WN(e){let t=await at.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new gt.HTTPError("User is already synched",409);e={...t,scimInfo:(0,Qh.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await at.save(e,{requirePassword:!1})}async function VN(e,t){return await at.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}async function YN(e){return await at.destroy(e)}var xr={};x(xr,{create:()=>KN});var Wh=N(Oi());var Vh=require("@budibase/backend-core");async function KN(e){let t=await no(e.name),r;if(!t)r=(await J.save(e)).id;else{if(t.scimInfo?.isSync)throw new Vh.HTTPError("Group is already synched",409);r=t._id,t.users&&(await J.removeUsers(r,t.users.map(a=>a._id)),delete t.users),t.scimInfo=(0,Wh.default)(t.scimInfo,e.scimInfo),await J.save(t)}return await J.get(r)}var Qt={};x(Qt,{logRequest:()=>JN,logResponse:()=>XN});var Kh=N(Yh()),Et=require("@budibase/backend-core"),{DocWritethrough:HN}=Et.cache.docWritethrough;function zN(){return`${Et.db.DocumentType.SCIM_LOG}${Et.db.SEPARATOR}${(0,Kh.default)().format("YYYYMMDD")}`}var Hh=async()=>{let e=Et.context.getScimDBName();return new HN(Et.db.getDB(e),zN())};async function JN(e){let t=Date.now().toString();return await(await Hh()).patch({[`${t}_request`]:{ts:new Date().toISOString(),...e}}),t}async function XN(e,t){await(await Hh()).patch({[`${e}_response`]:{ts:new Date().toISOString(),...t}})}var Bi={};x(Bi,{doInScimContext:()=>Ui,feature:()=>H,internalGroupOnly:()=>Ma,licensing:()=>zh,requireSCIM:()=>Li,scimGroupOnly:()=>Cn,scimUserOnly:()=>qn});var _t=require("@budibase/backend-core");var Ba=require("@budibase/types"),ZN=(e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(_t.env.SELF_HOSTED&&_t.env.DEFAULT_LICENSE)return t.user.license=oo,r();t.user.license=await tt.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(_t.utils.isServingApp(t)||_t.utils.isServingBuilder(t)||_t.utils.isServingBuilderPreview(t)||_t.utils.isPublicApiRequest(t))&&await Ve.usageLimitIsExceeded(Ba.StaticQuotaName.USERS,Ba.QuotaUsageType.STATIC)}return r()},zh=ZN;var H={};x(H,{requireFeature:()=>eM,requireFeatures:()=>tM});var eM=e=>async(t,r)=>{await la(e),await r()},tM=(...e)=>async(t,r)=>{await zo(e),await r()};var Na=require("@budibase/backend-core");var Ui=async(e,t)=>{let r;return Na.env.DISABLE_SCIM_CALLS||(r=await Qt.logRequest({...e.request.toJSON(),body:e.request.body})),await Na.context.doInScimContext(async()=>{let n=await t();return r&&await Qt.logResponse(r,{...e.response.toJSON(),body:e.response.body}),n})};var Li=async(e,t)=>{await es(),await t()};var Jh=require("@budibase/backend-core");var qn=e=>Di(Jh.users.getById,e,!0),Cn=e=>Di(V.get,e,!0),Ma=e=>Di(V.get,e,!1);function Di(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 Ji={};x(Ji,{ai:()=>lA,appBackups:()=>zA,auditLogs:()=>kA,environmentVariables:()=>CA,groups:()=>vA,scim:()=>Rb,users:()=>Cb});var sA=require("@budibase/types");var ki={};x(ki,{LargeLanguageModel:()=>Tr});var aA=require("@budibase/backend-core"),xt=require("@budibase/types"),oA=require("@budibase/shared-core");var Ni=N(require("openai"));function Rr(e){return`Summarize this text:
|
|
150
|
-
${e}.
|
|
151
|
-
Only return the summary.`}function Xh(e,t){return`Return the category of this text: "${e}". Based on these categories: ${t.join(", ")}. Only return the category.`}function Zh(e){return`Clean the following string: "${e}". Remove any spelling mistakes or data issues. Only return the cleaned string itself and nothing else.`}function eA(e){return`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:
|
|
152
|
-
${e}`}function tA(e,t){return`Translate the following text: "${e}" into ${t}. Only return the translation.`}function rA(e){return`Return the sentiment of this text: "${e}". Only return the sentiment.`}function nA(e){return`Search the web for the following: "${e}". Only return the top results.`}var jt=class{constructor({model:t,apiKey:r,measureUsage:n}){this.model=t,this.client=new Ni.default({apiKey:r}),this.measureUsage=n}measureTokenUsage(t){let r=0;if(this.measureUsage&&t){let{prompt_tokens:n,completion_tokens:a}=t;r=a*3+n}return r}async chatCompletion(t){try{let r=await this.client.chat.completions.create({model:this.model,messages:[{role:"user",content:t}],max_tokens:parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"300")}),n=this.measureTokenUsage(r.usage);return{message:r?.choices[0]?.message?.content,tokensUsed:n}}catch(r){throw r instanceof Ni.default.APIError&&console.error(`OpenAI Prompt failed with error of type ${r.type} and status: ${r.status}:${r.code} - ${r.message}`),r}}async prompt(t){return this.chatCompletion(t)}async summarizeText(t){return this.chatCompletion(Rr(t))}};var Mi=N(require("@anthropic-ai/sdk"));var ka=class{constructor({model:t,apiKey:r}){this.model=t,this.client=new Mi.default({apiKey:r})}async chatCompletion(t){try{return{message:((await this.client.messages.create({model:this.model,messages:[{role:"user",content:t}],max_tokens:parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"300")}))?.content[0]).text}}catch(r){throw r instanceof Mi.default.APIError&&console.error(`Anthropic Prompt failed with error ${r.name} and status: ${r.status}`),r}}async prompt(t){return this.chatCompletion(t)}async summarizeText(t){return this.chatCompletion(Rr(t))}};var nM={OpenAI:jt,Anthropic:ka,TogetherAI:jt,AzureOpenAI:jt,Custom:jt};function Gi(e,t){return t.map(r=>e[r]).join(" ")}var Tr=class e{static async forCurrentTenant(t){let r=new e(t);return await r.init(),r}constructor(t){this.model=t}determineDefault(t){for(let r in t)if(t[r].isDefault)return t[r]}async init(){let t=await aA.configs.getAIConfig(),r=await In();if(!t&&!r)return;t||(t={config:{}});let n=await ts(t),a=this.determineDefault(n.config);if(!a)return;let o={model:a.defaultModel||this.model,apiKey:a.apiKey,measureUsage:t?.config?.budibase_ai?.apiKey===a.apiKey},i=nM[a.provider],s=new i(o);if(!s)throw Error("LLM Initialisation failed. No model configured.");this.llm=s}buildPromptFromAIOperation({schema:t,row:r}){let{operation:n}=t;switch(n){case xt.AIOperationEnum.SUMMARISE_TEXT:return Rr(Gi(r,t.columns));case xt.AIOperationEnum.CLEAN_DATA:return Zh(r[t.column]);case xt.AIOperationEnum.TRANSLATE:return tA(r[t.column],t.language);case xt.AIOperationEnum.CATEGORISE_TEXT:if(!t.categories)throw Error("No categories provided for categorise text operation. Please provide categories.");return Xh(Gi(r,t.columns),t.categories.split(","));case xt.AIOperationEnum.SENTIMENT_ANALYSIS:return rA(r[t.column]);case xt.AIOperationEnum.PROMPT:return t.prompt;case xt.AIOperationEnum.SEARCH_WEB:return nA(Gi(r,t.columns));default:throw oA.utils.unreachable(n)}}async run(t){if(!this.llm)throw Error("No model configuration selected. You must instantiate an LLM before prompting.");let r=await this.llm.prompt(t);return await us(r.tokensUsed||0),r.message}};var Wt=require("@budibase/backend-core");async function iA(e){let{prompt:t}=e.request.body,n=await(await Tr.forCurrentTenant("gpt-4o-mini")).run(eA(t));n?.startsWith("Error generating cron:")?e.throw(400,n):e.body={message:n}}async function uA(e){await Wt.features.isEnabled(sA.FeatureFlag.AI_JS_GENERATION)||e.throw(500,"AI JS generation is disabled"),Wt.env.OPENAI_API_KEY||e.throw(500,"OpenAI API key is not set"),await Wt.context.ensureSnippetContext();let r=Wt.context.getCurrentContext()?.snippets||[],{prompt:n,bindings:a}=e.request.body,o=await gr.generateJs(n,a,r);e.body={code:o}}var pA=require("@budibase/types"),cA=N(require("@koa/router")),Fi=require("@budibase/backend-core"),$i=new cA.default;$i.post("/api/ai/cron",H.requireFeature(pA.Feature.BUDIBASE_AI),Fi.auth.builderOrAdmin,iA);$i.post("/api/ai/js",Fi.auth.builderOrAdmin,uA);var lA=$i;async function dA(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let n=await kt(t._id);t.roles=n.roles,t.scimInfo=n.scimInfo}let r=await br(t);e.body={_id:r.id,_rev:r.rev}}async function fA(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 cs(t,r)),n&&(o=await ls(t,n)),e.body={added:a,removed:o}}async function gA(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 ds(t,{appsToAdd:r,appsToRemove:n})}async function mA(e){e.body={data:await vn()}}async function yA(e){let{groupId:t,rev:r}=e.params;try{await ps(t,r),e.body={message:"Group deleted successfully"}}catch(n){e.throw(n.status,n)}}async function hA(e){try{e.body=await kt(e.params.groupId)}catch(t){e.throw(t.status,t)}}async function AA(e){let{pageSize:t=10,bookmark:r,emailSearch:n}=e.request.query,a=e.params.groupId,o={limit:t+1},i=await $n(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 bA(e){let{groupId:t,appId:r}=e.params;await fs(t,r),e.body={message:"Group app builder access updated."}}async function IA(e){let{groupId:t,appId:r}=e.params;await gs(t,r),e.body={message:"group app builder access removed."}}var SA=N(require("@koa/router")),Oe=N(require("joi"));var Me=require("@budibase/types"),it=require("@budibase/backend-core"),wA=new SA.default;function sM(){return it.auth.joiValidator.body(Oe.default.object({_id:Oe.default.string().optional(),_rev:Oe.default.string().optional(),color:Oe.default.string().required(),icon:Oe.default.string().required(),name:Oe.default.string().trim().required().max(50),role:Oe.default.string().optional(),users:Oe.default.array().optional(),apps:Oe.default.array().optional(),roles:Oe.default.object().optional(),createdAt:Oe.default.string().optional(),updatedAt:Oe.default.string().optional()}).required())}wA.post("/api/global/groups",it.auth.adminOnly,H.requireFeature(Me.Feature.USER_GROUPS),sM(),dA).get("/api/global/groups",H.requireFeature(Me.Feature.USER_GROUPS),mA).delete("/api/global/groups/:groupId/:rev",H.requireFeature(Me.Feature.USER_GROUPS),it.auth.adminOnly,Ma("groupId"),yA).get("/api/global/groups/:groupId",H.requireFeature(Me.Feature.USER_GROUPS),it.auth.builderOrAdmin,hA).get("/api/global/groups/:groupId/users",H.requireFeature(Me.Feature.USER_GROUPS),it.auth.builderOrAdmin,AA).post("/api/global/groups/:groupId/users",it.auth.adminOnly,H.requireFeature(Me.Feature.USER_GROUPS),Ma("groupId"),fA).post("/api/global/groups/:groupId/apps",it.auth.builderOrAdmin,H.requireFeature(Me.Feature.USER_GROUPS),gA).post("/api/global/groups/:groupId/app/:appId/builder",it.auth.builderOrAdmin,H.requireFeatures(Me.Feature.USER_GROUPS,Me.Feature.APP_BUILDERS),bA).delete("/api/global/groups/:groupId/app/:appId/builder",it.auth.builderOrAdmin,H.requireFeatures(Me.Feature.USER_GROUPS,Me.Feature.APP_BUILDERS),IA);var vA=wA;var Qi=require("@budibase/types");var ji=require("@budibase/backend-core");async function EA(e){e.body={encryptionKeyAvailable:ot.isEncryptionKeyAvailable()}}async function _A(e){e.body={variables:await ot.fetch()}}async function xA(e){let{name:t,production:r,development:n}=e.request.body;await ot.update(t,{production:r,development:n});let a=[Qi.AppEnvironment.PRODUCTION];r!==n&&a.push(Qi.AppEnvironment.DEVELOPMENT),await ji.events.environmentVariable.created(t,a),e.body={message:`Environment variable "${t}" created.`}}async function RA(e){let{production:t,development:r}=e.request.body,n=e.params.varName;await ot.update(n,{production:t,development:r}),e.body={message:`Environment variable "${n}" updated.`}}async function TA(e){let t=e.params.varName;await ot.remove(t),await ji.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}var Vt=require("@budibase/backend-core"),PA=N(require("@koa/router")),Un=N(require("joi")),qA=new PA.default;function OA(){return Vt.auth.joiValidator.body(Un.default.object({name:Un.default.string().optional(),production:Un.default.string().required(),development:Un.default.string().required()}))}qA.get("/api/env/variables/status",Vt.auth.builderOrAdmin,EA).get("/api/env/variables",Vt.auth.builderOrAdmin,_A).post("/api/env/variables",Vt.auth.builderOrAdmin,OA(),xA).patch("/api/env/variables/:varName",Vt.auth.builderOrAdmin,OA(),RA).delete("/api/env/variables/:varName",Vt.auth.builderOrAdmin,TA);var CA=qA;var Wi=require("@budibase/backend-core");async function UA(e){let t=e.request.body,r=await vt.fetch(t);await Wi.events.auditLog.filtered(t),e.body=r}async function LA(e){let t=e.request.body,{stream:r}=vt.download(t);await Wi.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}async function DA(e){e.body={events:vt.definitions()}}var NA=require("@budibase/types"),Yt=require("@budibase/backend-core"),MA=N(require("@koa/router")),Ge=N(require("joi"));function BA(){return Yt.auth.joiValidator.body(Ge.default.object({userIds:Ge.default.array().items(Ge.default.string()).optional(),appIds:Ge.default.array().items(Ge.default.string()).optional(),events:Ge.default.array().items(Ge.default.string().valid(...Object.values(NA.Event))).optional(),startDate:Ge.default.string().optional().allow(""),endDate:Ge.default.string().optional().allow(""),fullSearch:Ge.default.string().optional().allow(""),bookmark:Ge.default.number()}))}var GA=new MA.default;GA.post("/api/global/auditlogs/search",Yt.auth.adminOnly,BA(),UA).get("/api/global/auditlogs/download",Yt.auth.adminOnly,Yt.middleware.querystringToBody,BA(),LA).get("/api/global/auditlogs/definitions",Yt.auth.adminOnly,DA);var kA=GA;var Vi=require("@budibase/types");var FA=require("@budibase/backend-core");async function Or(e,t){await er.appExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}async function $A(e){let t=e.params.appId;await Or(e,t);let r=e.request.body,n=e.user?._id,a=await Ne.triggerAppBackup(t,Vi.AppBackupTrigger.MANUAL,{name:r.name,createdBy:n});a||e.throw(500,"Unable to start backup."),e.body={backupId:a,message:"Backup triggered - process starting."}}async function QA(e){let t=e.params.appId;await Or(e,t);let r=e.params.backupId,n=e.request.body.name,a=await Ne.triggerAppRestore(t,r,n,e.user?._id);a||e.throw(500,"Unable to start restore."),await FA.events.backup.appBackupRestored(a.metadata),e.body={restoredId:a?.restoreId,message:"Restore triggered - process starting."}}async function jA(e){let t=e.params.appId;await Or(e,t);let r=e.params.backupId;await Ne.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}async function WA(e){let t=e.params.appId;await Or(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(Vi.AppBackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await Ne.fetchAppBackups(t,{paginate:!0,...r})}async function VA(e){let t=e.params.appId;await Or(e,t);let r=e.params.backupId,n=e.request.body;e.body=await Ne.updateAppBackup(r,n.name)}async function YA(e){let t=e.params.appId;await Or(e,t);let r=e.params.backupId,{metadata:n,stream:a}=await Ne.getBackupDownloadStream(r);e.attachment(`backup-${n.timestamp}.tar.gz`),e.body=a}var KA=N(require("@koa/router")),Kt=N(require("joi")),Fa=require("@budibase/types"),Rt=require("@budibase/backend-core"),HA=new KA.default;function cM(){return Rt.auth.joiValidator.body(Kt.default.object({trigger:Kt.default.string().valid(...Object.values(Fa.AppBackupTrigger)),type:Kt.default.string().valid(...Object.values(Fa.AppBackupType)),startDate:Kt.default.date(),endDate:Kt.default.date(),page:Kt.default.string()}))}HA.post("/api/apps/:appId/backups",Rt.auth.builderOrAdmin,$A).post("/api/apps/:appId/backups/search",Rt.auth.builderOrAdmin,cM(),WA).get("/api/apps/:appId/backups/:backupId/file",Rt.auth.builderOrAdmin,YA).patch("/api/apps/:appId/backups/:backupId",Rt.auth.builderOrAdmin,VA).delete("/api/apps/:appId/backups/:backupId",Rt.auth.builderOrAdmin,jA).post("/api/apps/:appId/backups/:backupId/import",Rt.auth.builderOrAdmin,QA);var zA=HA;var xb=N(require("@koa/router"));var $a=require("scim-patch");var XA=require("@budibase/backend-core");function JA(e,t){let r=e.request.query[t];if(r!==void 0)return+r}var ZA=async e=>{let t=JA(e,"pageSize")??20,r=JA(e,"startIndex"),n;e.request.query.filter&&(n=ne.user.userFilters(e.request.query.filter));let a=await ve.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(ne.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},eb=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await ve.find(t);e.body=ne.user.toScimUserResponse(r)},tb=async e=>{let t=ne.user.fromScimUser(e.request.body);try{let r=await ve.create(t);e.body=ne.user.toScimUserResponse(r)}catch(r){throw r instanceof XA.EmailUnavailableError&&e.throw(409,"Email already in use"),r}};function lM(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 rb=async e=>{let t=await ve.find(e.params.id);t||e.throw(404);let r=ne.user.toScimUserResponse(t),n=e.request.body;try{(0,$a.patchBodyValidation)(n)}catch{}if(lM(n))return Yi(e);let a;try{a=(0,$a.scimPatch)(r,n.Operations)}catch{}a||e.throw(500);let o=ne.user.fromScimUser(a);await ve.update(o,{allowChangingEmail:!0}),e.body=ne.user.toScimUserResponse(o)},Yi=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await ve.remove(t),e.status=204};var Ab=N(hb()),bb=require("@budibase/shared-core"),Qa=require("scim-patch");var ja=require("scim2-parse-filter");function Ib(e,t){for(let r of t.split(","))delete e[r]}var Sb=async e=>{let r=(await J.fetch()).filter(o=>o.scimInfo?.isSync).map(ne.group.toScimGroupResponse),{filter:n,excludedAttributes:a}=e.request.query;if(n){let o=(0,ja.filter)((0,ja.parse)(n));r=r.filter(o)}a&&r.forEach(o=>{Ib(o,a)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},wb=async e=>{let t=ne.group.fromScimGroup(e.request.body),r=await xr.create(t);e.body=ne.group.toScimGroupResponse(r)},vb=async e=>{let{id:t}=e.params,r=await J.get(t),n=ne.group.toScimGroupResponse(r),{excludedAttributes:a}=e.request.query;a&&Ib(n,a),e.body=n},Eb=async e=>{let{id:t}=e.params,r=await J.get(t);await J.remove(t,r._rev),e.status=204},_b=async e=>{let{id:t}=e.params,r=await J.get(t),n=ne.group.toScimGroupResponse(r),a=e.request.body;try{(0,Qa.patchBodyValidation)(a)}catch{e.throw(400)}let{true:o,false:i}=(0,Ab.default)(a.Operations,s=>s.path==="members");if(i?.length){let s=(0,Qa.scimPatch)(n,i);s||e.throw(500);let c={...ne.group.fromScimGroup(s),_rev:r._rev};await J.save(c)}if(o?.length){let s=[],c=[];for(let{op:f,value:d}of o)switch(f){case"add":case"Add":for(let y of d)s.push(await ve.find(y.value));break;case"remove":case"Remove":for(let y of d)c.push(await ve.find(y.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:bb.utils.unreachable(f)}s.length&&await J.addUsers(t,s.map(f=>f._id)),c.length&&await J.removeUsers(t,c.map(f=>f._id))}e.body=ne.group.toScimGroupResponse(await J.get(t))};var Ln=require("@budibase/types"),Pe=new xb.default({prefix:"/api/global/scim/v2"});Pe.use(Li);Pe.use(Ui);Pe.get("/users",ZA);Pe.get("/users/:id",qn("id"),eb);Pe.post("/users",tb);Pe.patch("/users/:id",qn("id"),rb);Pe.delete("/users/:id",qn("id"),Yi);Pe.get("/groups",Sb);Pe.post("/groups",H.requireFeature(Ln.Feature.USER_GROUPS),wb);Pe.get("/groups/:id",H.requireFeature(Ln.Feature.USER_GROUPS),Cn("id"),vb);Pe.delete("/groups/:id",H.requireFeature(Ln.Feature.USER_GROUPS),Cn("id"),Eb);Pe.patch("/groups/:id",H.requireFeature(Ln.Feature.USER_GROUPS),Cn("id"),_b);var Rb=Pe;var Pb=N(require("@koa/router"));var Ki=require("@budibase/backend-core");async function Tb(e){let{userId:t,appId:r}=e.params,n=await lt.db.getUser(t);if(Ki.users.isGlobalBuilder(n)){e.body={message:"User already admin - no permissions updated."};return}await lt.addAppBuilder(n,r),e.body={message:`User "${n.email}" app builder access updated.`}}async function Ob(e){let{userId:t,appId:r}=e.params,n=await lt.db.getUser(t);if(Ki.users.isGlobalBuilder(n)){e.body={message:"User already admin - no permissions removed."};return}await lt.removeAppBuilder(n,r),e.body={message:`User "${n.email}" app builder access removed.`}}var Hi=require("@budibase/types"),zi=require("@budibase/backend-core"),qb=new Pb.default;qb.post("/api/global/users/:userId/app/:appId/builder",zi.auth.builderOrAdmin,H.requireFeatures(Hi.Feature.APP_BUILDERS),Tb).delete("/api/global/users/:userId/app/:appId/builder",zi.auth.builderOrAdmin,H.requireFeatures(Hi.Feature.APP_BUILDERS),Ob);var Cb=qb;var ne={};x(ne,{group:()=>Zi,user:()=>Xi});var Xi={};x(Xi,{fromScimUser:()=>kM,toScimUserResponse:()=>NM,userFilters:()=>FM});var Wa=require("@budibase/types"),Ub=require("scim2-parse-filter"),Lb=require("@budibase/backend-core"),Db=require("@budibase/shared-core"),{unreachable:BM}=Db.utils,NM=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===Wa.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},MM=e=>!!e?.id;function GM(e){if(Lb.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}var kM=e=>{let t=MM(e)?e:void 0,r=GM(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:BM(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?Wa.UserStatus.ACTIVE:Wa.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},FM=e=>{let t={equal:{}},r=(0,Ub.parse)(e);function n(a){switch(a.op){case"eq":{let o=a.attrPath,i;switch(o){case"emails.value":i="email";break;default:i=`scimInfo.${o}`}t.equal[i]=a.compValue;break}case"and":for(let o of a.filters)n(o);break;default:console.warn("Filter not handled",{filter:a})}}return n(r),t};var Zi={};x(Zi,{fromScimGroup:()=>jM,toScimGroupResponse:()=>$M});var $M=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}))}),QM=e=>!!e?.id,jM=e=>{let t=QM(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});
|
|
150
|
+
${n}
|
|
151
|
+
|
|
152
|
+
${r}`)}var oA=require("@budibase/shared-core");function Mi(e,t){return t.map(r=>e[r]).join(" ")}var xr=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=Me.user(t));let r=await this.chatCompletion(t);return this.measureUsage&&r.tokensUsed!==void 0&&r.tokensUsed>0&&await us(r.tokensUsed),r}async summarizeText(t){return this.prompt(Ni(t))}async generateCronExpression(t){return this.prompt(eA(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 Rt.AIOperationEnum.SUMMARISE_TEXT:return Ni(Mi(r,o));case Rt.AIOperationEnum.CLEAN_DATA:return Zh(r[a]);case Rt.AIOperationEnum.TRANSLATE:return tA(r[a],i);case Rt.AIOperationEnum.CATEGORISE_TEXT:if(!s)throw Error("No categories provided for categorise text operation. Please provide categories.");return Xh(Mi(r,o),s.split(","));case Rt.AIOperationEnum.SENTIMENT_ANALYSIS:return rA(r[a]);case Rt.AIOperationEnum.PROMPT:return c;case Rt.AIOperationEnum.SEARCH_WEB:return nA(Mi(r,o));default:throw oA.utils.unreachable(n)}}async generateJs(t,r){let{bindings:n=[],snippets:a=[]}=r||{};return await this.prompt(aA(n,a).user(t))}};var Wt=class extends xr{constructor({model:r,apiKey:n,measureUsage:a}){super({model:r,apiKey:n,measureUsage:a});this.client=new Gi.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,tokensUsed:a}}catch(n){throw n instanceof Gi.default.APIError&&console.error(`OpenAI Prompt failed with error of type ${n.type} and status: ${n.status}:${n.code} - ${n.message}`),n}}};var ki=M(require("@anthropic-ai/sdk"));var Fa=class extends xr{constructor(r){super(r);this.client=new ki.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 ki.default.APIError&&console.error(`Anthropic Prompt failed with error ${n.name} and status: ${n.status}`),n}}};var aM="gpt-4o-mini",oM={OpenAI:Wt,Anthropic:Fa,TogetherAI:Wt,AzureOpenAI:Wt,Custom:Wt};function sM(e){for(let t in e)if(e[t].isDefault)return e[t]}async function Pn(e){let t=await sA.configs.getAIConfig(),r=await An();if(!t&&!r)return;t||(t={type:iA.ConfigType.AI,config:{}});let n=await ts(t),a=sM(n.config);if(!a)return;if(!a.apiKey)throw Error("No API key provided for Budibase AI. Please provide an API key.");let o={model:e||a.defaultModel||aM,apiKey:a.apiKey,measureUsage:a.isBudibaseAI===!0},i=oM[a.provider];if(i)return new i(o)}var Cn=require("@budibase/backend-core"),iM=/```(?:\w+)?\n([\s\S]+?)\n```/;async function pA(e){let{prompt:t}=e.request.body,r=await Pn();r||e.throw(500,"AI config not found");let{message:n}=await r.generateCronExpression(t);n?.startsWith("Error generating cron:")?e.throw(400,n):e.body={message:n}}async function cA(e){await Cn.features.isEnabled(uA.FeatureFlag.AI_JS_GENERATION)||e.throw(500,"AI JS generation is disabled");let t=await Pn();t||e.throw(500,"AI config not found"),await Cn.context.ensureSnippetContext();let n=Cn.context.getCurrentContext()?.snippets||[],{prompt:a,bindings:o=[]}=e.request.body,i=(await t.generateJs(a,{bindings:o,snippets:n})).message||"",s=i.match(iM);s&&(i=s[1]),e.body={code:i}}var lA=require("@budibase/types"),dA=M(require("@koa/router")),$i=require("@budibase/backend-core"),Qi=new dA.default;Qi.post("/api/ai/cron",H.requireFeature(lA.Feature.BUDIBASE_AI),$i.auth.builderOrAdmin,pA);Qi.post("/api/ai/js",$i.auth.builderOrAdmin,cA);var fA=Qi;async function gA(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let n=await Ft(t._id);t.roles=n.roles,t.scimInfo=n.scimInfo}let r=await Ar(t);e.body={_id:r.id,_rev:r.rev}}async function mA(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 cs(t,r)),n&&(o=await ls(t,n)),e.body={added:a,removed:o}}async function yA(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 ds(t,{appsToAdd:r,appsToRemove:n})}async function hA(e){e.body={data:await In()}}async function AA(e){let{groupId:t,rev:r}=e.params;try{await ps(t,r),e.body={message:"Group deleted successfully"}}catch(n){e.throw(n.status,n)}}async function bA(e){try{e.body=await Ft(e.params.groupId)}catch(t){e.throw(t.status,t)}}async function IA(e){let{pageSize:t=10,bookmark:r,emailSearch:n}=e.request.query,a=e.params.groupId,o={limit:t+1},i=await Fn(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 SA(e){let{groupId:t,appId:r}=e.params;await fs(t,r),e.body={message:"Group app builder access updated."}}async function wA(e){let{groupId:t,appId:r}=e.params;await gs(t,r),e.body={message:"group app builder access removed."}}var vA=M(require("@koa/router")),Pe=M(require("joi"));var Ge=require("@budibase/types"),ut=require("@budibase/backend-core"),EA=new vA.default;function cM(){return ut.auth.joiValidator.body(Pe.default.object({_id:Pe.default.string().optional(),_rev:Pe.default.string().optional(),color:Pe.default.string().required(),icon:Pe.default.string().required(),name:Pe.default.string().trim().required().max(50),role:Pe.default.string().optional(),users:Pe.default.array().optional(),apps:Pe.default.array().optional(),roles:Pe.default.object().optional(),createdAt:Pe.default.string().optional(),updatedAt:Pe.default.string().optional()}).required())}EA.post("/api/global/groups",ut.auth.adminOnly,H.requireFeature(Ge.Feature.USER_GROUPS),cM(),gA).get("/api/global/groups",H.requireFeature(Ge.Feature.USER_GROUPS),hA).delete("/api/global/groups/:groupId/:rev",H.requireFeature(Ge.Feature.USER_GROUPS),ut.auth.adminOnly,ka("groupId"),AA).get("/api/global/groups/:groupId",H.requireFeature(Ge.Feature.USER_GROUPS),ut.auth.builderOrAdmin,bA).get("/api/global/groups/:groupId/users",H.requireFeature(Ge.Feature.USER_GROUPS),ut.auth.builderOrAdmin,IA).post("/api/global/groups/:groupId/users",ut.auth.adminOnly,H.requireFeature(Ge.Feature.USER_GROUPS),ka("groupId"),mA).post("/api/global/groups/:groupId/apps",ut.auth.builderOrAdmin,H.requireFeature(Ge.Feature.USER_GROUPS),yA).post("/api/global/groups/:groupId/app/:appId/builder",ut.auth.builderOrAdmin,H.requireFeatures(Ge.Feature.USER_GROUPS,Ge.Feature.APP_BUILDERS),SA).delete("/api/global/groups/:groupId/app/:appId/builder",ut.auth.builderOrAdmin,H.requireFeatures(Ge.Feature.USER_GROUPS,Ge.Feature.APP_BUILDERS),wA);var _A=EA;var ji=require("@budibase/types");var Wi=require("@budibase/backend-core");async function xA(e){e.body={encryptionKeyAvailable:st.isEncryptionKeyAvailable()}}async function RA(e){e.body={variables:await st.fetch()}}async function TA(e){let{name:t,production:r,development:n}=e.request.body;await st.update(t,{production:r,development:n});let a=[ji.AppEnvironment.PRODUCTION];r!==n&&a.push(ji.AppEnvironment.DEVELOPMENT),await Wi.events.environmentVariable.created(t,a),e.body={message:`Environment variable "${t}" created.`}}async function OA(e){let{production:t,development:r}=e.request.body,n=e.params.varName;await st.update(n,{production:t,development:r}),e.body={message:`Environment variable "${n}" updated.`}}async function PA(e){let t=e.params.varName;await st.remove(t),await Wi.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}var Vt=require("@budibase/backend-core"),qA=M(require("@koa/router")),qn=M(require("joi")),UA=new qA.default;function CA(){return Vt.auth.joiValidator.body(qn.default.object({name:qn.default.string().optional(),production:qn.default.string().required(),development:qn.default.string().required()}))}UA.get("/api/env/variables/status",Vt.auth.builderOrAdmin,xA).get("/api/env/variables",Vt.auth.builderOrAdmin,RA).post("/api/env/variables",Vt.auth.builderOrAdmin,CA(),TA).patch("/api/env/variables/:varName",Vt.auth.builderOrAdmin,CA(),OA).delete("/api/env/variables/:varName",Vt.auth.builderOrAdmin,PA);var LA=UA;var Vi=require("@budibase/backend-core");async function DA(e){let t=e.request.body,r=await Et.fetch(t);await Vi.events.auditLog.filtered(t),e.body=r}async function BA(e){let t=e.request.body,{stream:r}=Et.download(t);await Vi.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}async function NA(e){e.body={events:Et.definitions()}}var GA=require("@budibase/types"),Yt=require("@budibase/backend-core"),kA=M(require("@koa/router")),ke=M(require("joi"));function MA(){return Yt.auth.joiValidator.body(ke.default.object({userIds:ke.default.array().items(ke.default.string()).optional(),appIds:ke.default.array().items(ke.default.string()).optional(),events:ke.default.array().items(ke.default.string().valid(...Object.values(GA.Event))).optional(),startDate:ke.default.string().optional().allow(""),endDate:ke.default.string().optional().allow(""),fullSearch:ke.default.string().optional().allow(""),bookmark:ke.default.number()}))}var FA=new kA.default;FA.post("/api/global/auditlogs/search",Yt.auth.adminOnly,MA(),DA).get("/api/global/auditlogs/download",Yt.auth.adminOnly,Yt.middleware.querystringToBody,MA(),BA).get("/api/global/auditlogs/definitions",Yt.auth.adminOnly,NA);var $A=FA;var Yi=require("@budibase/types");var QA=require("@budibase/backend-core");async function Rr(e,t){await er.appExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}async function jA(e){let t=e.params.appId;await Rr(e,t);let r=e.request.body,n=e.user?._id,a=await Ne.triggerAppBackup(t,Yi.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 WA(e){let t=e.params.appId;await Rr(e,t);let r=e.params.backupId,n=e.request.body.name,a=await Ne.triggerAppRestore(t,r,n,e.user?._id);a||e.throw(500,"Unable to start restore."),await QA.events.backup.appBackupRestored(a.metadata),e.body={restoredId:a?.restoreId,message:"Restore triggered - process starting."}}async function VA(e){let t=e.params.appId;await Rr(e,t);let r=e.params.backupId;await Ne.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}async function YA(e){let t=e.params.appId;await Rr(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(Yi.AppBackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await Ne.fetchAppBackups(t,{paginate:!0,...r})}async function KA(e){let t=e.params.appId;await Rr(e,t);let r=e.params.backupId,n=e.request.body;e.body=await Ne.updateAppBackup(r,n.name)}async function HA(e){let t=e.params.appId;await Rr(e,t);let r=e.params.backupId,{metadata:n,stream:a}=await Ne.getBackupDownloadStream(r);e.attachment(`backup-${n.timestamp}.tar.gz`),e.body=a}var JA=M(require("@koa/router")),Kt=M(require("joi")),$a=require("@budibase/types"),Tt=require("@budibase/backend-core"),zA=new JA.default;function gM(){return Tt.auth.joiValidator.body(Kt.default.object({trigger:Kt.default.string().valid(...Object.values($a.AppBackupTrigger)),type:Kt.default.string().valid(...Object.values($a.AppBackupType)),startDate:Kt.default.date(),endDate:Kt.default.date(),page:Kt.default.string()}))}zA.post("/api/apps/:appId/backups",Tt.auth.builderOrAdmin,jA).post("/api/apps/:appId/backups/search",Tt.auth.builderOrAdmin,gM(),YA).get("/api/apps/:appId/backups/:backupId/file",Tt.auth.builderOrAdmin,HA).patch("/api/apps/:appId/backups/:backupId",Tt.auth.builderOrAdmin,KA).delete("/api/apps/:appId/backups/:backupId",Tt.auth.builderOrAdmin,VA).post("/api/apps/:appId/backups/:backupId/import",Tt.auth.builderOrAdmin,WA);var XA=zA;var Tb=M(require("@koa/router"));var Qa=require("scim-patch");var eb=require("@budibase/backend-core");function ZA(e,t){let r=e.request.query[t];if(r!==void 0)return+r}var tb=async e=>{let t=ZA(e,"pageSize")??20,r=ZA(e,"startIndex"),n;e.request.query.filter&&(n=ne.user.userFilters(e.request.query.filter));let a=await ve.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(ne.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},rb=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await ve.find(t);e.body=ne.user.toScimUserResponse(r)},nb=async e=>{let t=ne.user.fromScimUser(e.request.body);try{let r=await ve.create(t);e.body=ne.user.toScimUserResponse(r)}catch(r){throw r instanceof eb.EmailUnavailableError&&e.throw(409,"Email already in use"),r}};function mM(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 ab=async e=>{let t=await ve.find(e.params.id);t||e.throw(404);let r=ne.user.toScimUserResponse(t),n=e.request.body;try{(0,Qa.patchBodyValidation)(n)}catch{}if(mM(n))return Ki(e);let a;try{a=(0,Qa.scimPatch)(r,n.Operations)}catch{}a||e.throw(500);let o=ne.user.fromScimUser(a);await ve.update(o,{allowChangingEmail:!0}),e.body=ne.user.toScimUserResponse(o)},Ki=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await ve.remove(t),e.status=204};var Ib=M(bb()),Sb=require("@budibase/shared-core"),ja=require("scim-patch");var Wa=require("scim2-parse-filter");function wb(e,t){for(let r of t.split(","))delete e[r]}var vb=async e=>{let r=(await z.fetch()).filter(o=>o.scimInfo?.isSync).map(ne.group.toScimGroupResponse),{filter:n,excludedAttributes:a}=e.request.query;if(n){let o=(0,Wa.filter)((0,Wa.parse)(n));r=r.filter(o)}a&&r.forEach(o=>{wb(o,a)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},Eb=async e=>{let t=ne.group.fromScimGroup(e.request.body),r=await _r.create(t);e.body=ne.group.toScimGroupResponse(r)},_b=async e=>{let{id:t}=e.params,r=await z.get(t),n=ne.group.toScimGroupResponse(r),{excludedAttributes:a}=e.request.query;a&&wb(n,a),e.body=n},xb=async e=>{let{id:t}=e.params,r=await z.get(t);await z.remove(t,r._rev),e.status=204},Rb=async e=>{let{id:t}=e.params,r=await z.get(t),n=ne.group.toScimGroupResponse(r),a=e.request.body;try{(0,ja.patchBodyValidation)(a)}catch{e.throw(400)}let{true:o,false:i}=(0,Ib.default)(a.Operations,s=>s.path==="members");if(i?.length){let s=(0,ja.scimPatch)(n,i);s||e.throw(500);let c={...ne.group.fromScimGroup(s),_rev:r._rev};await z.save(c)}if(o?.length){let s=[],c=[];for(let{op:d,value:m}of o)switch(d){case"add":case"Add":for(let g of m)s.push(await ve.find(g.value));break;case"remove":case"Remove":for(let g of m)c.push(await ve.find(g.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:Sb.utils.unreachable(d)}s.length&&await z.addUsers(t,s.map(d=>d._id)),c.length&&await z.removeUsers(t,c.map(d=>d._id))}e.body=ne.group.toScimGroupResponse(await z.get(t))};var Un=require("@budibase/types"),Ce=new Tb.default({prefix:"/api/global/scim/v2"});Ce.use(Li);Ce.use(Ui);Ce.get("/users",tb);Ce.get("/users/:id",Tn("id"),rb);Ce.post("/users",nb);Ce.patch("/users/:id",Tn("id"),ab);Ce.delete("/users/:id",Tn("id"),Ki);Ce.get("/groups",vb);Ce.post("/groups",H.requireFeature(Un.Feature.USER_GROUPS),Eb);Ce.get("/groups/:id",H.requireFeature(Un.Feature.USER_GROUPS),On("id"),_b);Ce.delete("/groups/:id",H.requireFeature(Un.Feature.USER_GROUPS),On("id"),xb);Ce.patch("/groups/:id",H.requireFeature(Un.Feature.USER_GROUPS),On("id"),Rb);var Ob=Ce;var qb=M(require("@koa/router"));var Hi=require("@budibase/backend-core");async function Pb(e){let{userId:t,appId:r}=e.params,n=await dt.db.getUser(t);if(Hi.users.isGlobalBuilder(n)){e.body={message:"User already admin - no permissions updated."};return}await dt.addAppBuilder(n,r),e.body={message:`User "${n.email}" app builder access updated.`}}async function Cb(e){let{userId:t,appId:r}=e.params,n=await dt.db.getUser(t);if(Hi.users.isGlobalBuilder(n)){e.body={message:"User already admin - no permissions removed."};return}await dt.removeAppBuilder(n,r),e.body={message:`User "${n.email}" app builder access removed.`}}var Ji=require("@budibase/types"),zi=require("@budibase/backend-core"),Ub=new qb.default;Ub.post("/api/global/users/:userId/app/:appId/builder",zi.auth.builderOrAdmin,H.requireFeatures(Ji.Feature.APP_BUILDERS),Pb).delete("/api/global/users/:userId/app/:appId/builder",zi.auth.builderOrAdmin,H.requireFeatures(Ji.Feature.APP_BUILDERS),Cb);var Lb=Ub;var ne={};x(ne,{group:()=>eu,user:()=>Zi});var Zi={};x(Zi,{fromScimUser:()=>jM,toScimUserResponse:()=>FM,userFilters:()=>WM});var Va=require("@budibase/types"),Db=require("scim2-parse-filter"),Bb=require("@budibase/backend-core"),Nb=require("@budibase/shared-core"),{unreachable:kM}=Nb.utils,FM=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===Va.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},$M=e=>!!e?.id;function QM(e){if(Bb.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}var jM=e=>{let t=$M(e)?e:void 0,r=QM(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:kM(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?Va.UserStatus.ACTIVE:Va.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},WM=e=>{let t={equal:{}},r=(0,Db.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 eu={};x(eu,{fromScimGroup:()=>KM,toScimGroupResponse:()=>VM});var VM=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}))}),YM=e=>!!e?.id,KM=e=>{let t=YM(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/sdk/ai/ai.d.ts
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
import { AIConfig
|
|
1
|
+
import { AIConfig } from "@budibase/types";
|
|
2
2
|
export declare function enrichAIConfig(aiConfig: AIConfig): Promise<AIConfig>;
|
|
3
|
-
export declare function generateJs(prompt: string, bindings?: EnrichedBinding[], snippets?: Snippet[]): Promise<string>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { License, QuotaTriggeredRequest } from "@budibase/types";
|
|
2
2
|
export declare const getLicense: () => Promise<License | undefined>;
|
|
3
|
+
export declare function getLicenseFromKey(licenseKey: string): Promise<License | undefined>;
|
|
3
4
|
export declare const triggerQuota: (body: QuotaTriggeredRequest) => Promise<void | undefined>;
|
|
4
5
|
export declare const activateLicenseKey: (licenseKey: string) => Promise<License | undefined>;
|
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.
|
|
7
|
+
"version": "3.7.0",
|
|
8
8
|
"description": "Budibase Pro (Backend)",
|
|
9
9
|
"main": "dist/index.js",
|
|
10
10
|
"types": "dist/index.d.ts",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"@budibase/types": "*",
|
|
21
21
|
"@koa/router": "13.1.0",
|
|
22
22
|
"bull": "4.10.1",
|
|
23
|
-
"dd-trace": "5.
|
|
23
|
+
"dd-trace": "5.43.0",
|
|
24
24
|
"joi": "17.6.0",
|
|
25
25
|
"jsonwebtoken": "9.0.2",
|
|
26
26
|
"lru-cache": "^7.14.1",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"prebuild": "rimraf dist",
|
|
51
51
|
"build": "node ../../scripts/build.js && tsc -p tsconfig.build.json --emitDeclarationOnly --paths null",
|
|
52
52
|
"check:types": "tsc -p tsconfig.build.json --noEmit --paths null",
|
|
53
|
-
"test": "jest --
|
|
53
|
+
"test": "jest --runInBand",
|
|
54
54
|
"test:watch": "jest --watch --runInBand",
|
|
55
55
|
"license:update": "node scripts/licenses/updateLicense.js",
|
|
56
56
|
"license:generate": "yarn run license:update && ts-node -r tsconfig-paths/register ./scripts/licenses/generate.ts",
|
|
@@ -72,5 +72,5 @@
|
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
},
|
|
75
|
-
"gitHead": "
|
|
75
|
+
"gitHead": "701aef170adfb9552bb88b97a0231e31e6054f64"
|
|
76
76
|
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { ILargeLanguageModel } from "../types/ai";
|
|
2
|
-
import { AIFieldMetadata } from "@budibase/types";
|
|
3
|
-
import { OpenAIModel, AnthropicModel } from "./models";
|
|
4
|
-
type ModelIdentifier = OpenAIModel | AnthropicModel;
|
|
5
|
-
export declare class LargeLanguageModel {
|
|
6
|
-
llm?: ILargeLanguageModel;
|
|
7
|
-
model: ModelIdentifier;
|
|
8
|
-
static forCurrentTenant(model: ModelIdentifier): Promise<LargeLanguageModel>;
|
|
9
|
-
private constructor();
|
|
10
|
-
private determineDefault;
|
|
11
|
-
init(): Promise<void>;
|
|
12
|
-
buildPromptFromAIOperation({ schema, row, }: {
|
|
13
|
-
schema: AIFieldMetadata;
|
|
14
|
-
row: Record<string, any>;
|
|
15
|
-
}): string;
|
|
16
|
-
run(prompt: string): Promise<string | null | undefined>;
|
|
17
|
-
}
|
|
18
|
-
export {};
|