@budibase/backend-core 3.22.6 → 3.23.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/index.js CHANGED
@@ -1,12 +1,12 @@
1
- "use strict";var A_=Object.create;var _i=Object.defineProperty;var __=Object.getOwnPropertyDescriptor;var O_=Object.getOwnPropertyNames;var I_=Object.getPrototypeOf,w_=Object.prototype.hasOwnProperty;var s=(t,e)=>_i(t,"name",{value:e,configurable:!0});var q=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),N=(t,e)=>{for(var r in e)_i(t,r,{get:e[r],enumerable:!0})},Cm=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of O_(e))!w_.call(t,i)&&i!==r&&_i(t,i,{get:()=>e[i],enumerable:!(n=__(e,i))||n.enumerable});return t};var F=(t,e,r)=>(r=t!=null?A_(I_(t)):{},Cm(e||!t||!t.__esModule?_i(r,"default",{value:t,enumerable:!0}):r,t)),D_=t=>Cm(_i({},"__esModule",{value:!0}),t);var Fm=q((Pc,Nc)=>{"use strict";(function(t,e){typeof Pc=="object"&&typeof Nc<"u"?Nc.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs=e()})(Pc,function(){"use strict";var t=1e3,e=6e4,r=36e5,n="millisecond",i="second",o="minute",a="hour",u="day",c="week",l="month",d="quarter",f="year",p="date",m="Invalid Date",h=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,g=/\[([^\]]+)]|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,y={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(B){var L=["th","st","nd","rd"],v=B%100;return"["+B+(L[(v-20)%10]||L[v]||L[0])+"]"}},S=s(function(B,L,v){var $=String(B);return!$||$.length>=L?B:""+Array(L+1-$.length).join(v)+B},"m"),O={s:S,z:function(B){var L=-B.utcOffset(),v=Math.abs(L),$=Math.floor(v/60),w=v%60;return(L<=0?"+":"-")+S($,2,"0")+":"+S(w,2,"0")},m:s(function B(L,v){if(L.date()<v.date())return-B(v,L);var $=12*(v.year()-L.year())+(v.month()-L.month()),w=L.clone().add($,l),K=v-w<0,W=L.clone().add($+(K?-1:1),l);return+(-($+(v-w)/(K?w-W:W-w))||0)},"t"),a:function(B){return B<0?Math.ceil(B)||0:Math.floor(B)},p:function(B){return{M:l,y:f,w:c,d:u,D:p,h:a,m:o,s:i,ms:n,Q:d}[B]||String(B||"").toLowerCase().replace(/s$/,"")},u:function(B){return B===void 0}},_="en",D={};D[_]=y;var T="$isDayjsObject",I=s(function(B){return B instanceof Y||!(!B||!B[T])},"S"),M=s(function B(L,v,$){var w;if(!L)return _;if(typeof L=="string"){var K=L.toLowerCase();D[K]&&(w=K),v&&(D[K]=v,w=K);var W=L.split("-");if(!w&&W.length>1)return B(W[0])}else{var J=L.name;D[J]=L,w=J}return!$&&w&&(_=w),w||!$&&_},"t"),P=s(function(B,L){if(I(B))return B.clone();var v=typeof L=="object"?L:{};return v.date=B,v.args=arguments,new Y(v)},"O"),k=O;k.l=M,k.i=I,k.w=function(B,L){return P(B,{locale:L.$L,utc:L.$u,x:L.$x,$offset:L.$offset})};var Y=function(){function B(v){this.$L=M(v.locale,null,!0),this.parse(v),this.$x=this.$x||v.x||{},this[T]=!0}s(B,"M");var L=B.prototype;return L.parse=function(v){this.$d=function($){var w=$.date,K=$.utc;if(w===null)return new Date(NaN);if(k.u(w))return new Date;if(w instanceof Date)return new Date(w);if(typeof w=="string"&&!/Z$/i.test(w)){var W=w.match(h);if(W){var J=W[2]-1||0,de=(W[7]||"0").substring(0,3);return K?new Date(Date.UTC(W[1],J,W[3]||1,W[4]||0,W[5]||0,W[6]||0,de)):new Date(W[1],J,W[3]||1,W[4]||0,W[5]||0,W[6]||0,de)}}return new Date(w)}(v),this.init()},L.init=function(){var v=this.$d;this.$y=v.getFullYear(),this.$M=v.getMonth(),this.$D=v.getDate(),this.$W=v.getDay(),this.$H=v.getHours(),this.$m=v.getMinutes(),this.$s=v.getSeconds(),this.$ms=v.getMilliseconds()},L.$utils=function(){return k},L.isValid=function(){return this.$d.toString()!==m},L.isSame=function(v,$){var w=P(v);return this.startOf($)<=w&&w<=this.endOf($)},L.isAfter=function(v,$){return P(v)<this.startOf($)},L.isBefore=function(v,$){return this.endOf($)<P(v)},L.$g=function(v,$,w){return k.u(v)?this[$]:this.set(w,v)},L.unix=function(){return Math.floor(this.valueOf()/1e3)},L.valueOf=function(){return this.$d.getTime()},L.startOf=function(v,$){var w=this,K=!!k.u($)||$,W=k.p(v),J=s(function(vr,xe){var Xt=k.w(w.$u?Date.UTC(w.$y,xe,vr):new Date(w.$y,xe,vr),w);return K?Xt:Xt.endOf(u)},"l"),de=s(function(vr,xe){return k.w(w.toDate()[vr].apply(w.toDate("s"),(K?[0,0,0,0]:[23,59,59,999]).slice(xe)),w)},"$"),Te=this.$W,Ie=this.$M,V=this.$D,In="set"+(this.$u?"UTC":"");switch(W){case f:return K?J(1,0):J(31,11);case l:return K?J(1,Ie):J(0,Ie+1);case c:var xr=this.$locale().weekStart||0,Si=(Te<xr?Te+7:Te)-xr;return J(K?V-Si:V+(6-Si),Ie);case u:case p:return de(In+"Hours",0);case a:return de(In+"Minutes",1);case o:return de(In+"Seconds",2);case i:return de(In+"Milliseconds",3);default:return this.clone()}},L.endOf=function(v){return this.startOf(v,!1)},L.$set=function(v,$){var w,K=k.p(v),W="set"+(this.$u?"UTC":""),J=(w={},w[u]=W+"Date",w[p]=W+"Date",w[l]=W+"Month",w[f]=W+"FullYear",w[a]=W+"Hours",w[o]=W+"Minutes",w[i]=W+"Seconds",w[n]=W+"Milliseconds",w)[K],de=K===u?this.$D+($-this.$W):$;if(K===l||K===f){var Te=this.clone().set(p,1);Te.$d[J](de),Te.init(),this.$d=Te.set(p,Math.min(this.$D,Te.daysInMonth())).$d}else J&&this.$d[J](de);return this.init(),this},L.set=function(v,$){return this.clone().$set(v,$)},L.get=function(v){return this[k.p(v)]()},L.add=function(v,$){var w,K=this;v=Number(v);var W=k.p($),J=s(function(Ie){var V=P(K);return k.w(V.date(V.date()+Math.round(Ie*v)),K)},"y");if(W===l)return this.set(l,this.$M+v);if(W===f)return this.set(f,this.$y+v);if(W===u)return J(1);if(W===c)return J(7);var de=(w={},w[o]=e,w[a]=r,w[i]=t,w)[W]||1,Te=this.$d.getTime()+v*de;return k.w(Te,this)},L.subtract=function(v,$){return this.add(-1*v,$)},L.format=function(v){var $=this,w=this.$locale();if(!this.isValid())return w.invalidDate||m;var K=v||"YYYY-MM-DDTHH:mm:ssZ",W=k.z(this),J=this.$H,de=this.$m,Te=this.$M,Ie=w.weekdays,V=w.months,In=w.meridiem,xr=s(function(xe,Xt,Ai,ko){return xe&&(xe[Xt]||xe($,K))||Ai[Xt].slice(0,ko)},"h"),Si=s(function(xe){return k.s(J%12||12,xe,"0")},"d"),vr=In||function(xe,Xt,Ai){var ko=xe<12?"AM":"PM";return Ai?ko.toLowerCase():ko};return K.replace(g,function(xe,Xt){return Xt||function(Ai){switch(Ai){case"YY":return String($.$y).slice(-2);case"YYYY":return k.s($.$y,4,"0");case"M":return Te+1;case"MM":return k.s(Te+1,2,"0");case"MMM":return xr(w.monthsShort,Te,V,3);case"MMMM":return xr(V,Te);case"D":return $.$D;case"DD":return k.s($.$D,2,"0");case"d":return String($.$W);case"dd":return xr(w.weekdaysMin,$.$W,Ie,2);case"ddd":return xr(w.weekdaysShort,$.$W,Ie,3);case"dddd":return Ie[$.$W];case"H":return String(J);case"HH":return k.s(J,2,"0");case"h":return Si(1);case"hh":return Si(2);case"a":return vr(J,de,!0);case"A":return vr(J,de,!1);case"m":return String(de);case"mm":return k.s(de,2,"0");case"s":return String($.$s);case"ss":return k.s($.$s,2,"0");case"SSS":return k.s($.$ms,3,"0");case"Z":return W}return null}(xe)||W.replace(":","")})},L.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},L.diff=function(v,$,w){var K,W=this,J=k.p($),de=P(v),Te=(de.utcOffset()-this.utcOffset())*e,Ie=this-de,V=s(function(){return k.m(W,de)},"D");switch(J){case f:K=V()/12;break;case l:K=V();break;case d:K=V()/3;break;case c:K=(Ie-Te)/6048e5;break;case u:K=(Ie-Te)/864e5;break;case a:K=Ie/r;break;case o:K=Ie/e;break;case i:K=Ie/t;break;default:K=Ie}return w?K:k.a(K)},L.daysInMonth=function(){return this.endOf(l).$D},L.$locale=function(){return D[this.$L]},L.locale=function(v,$){if(!v)return this.$L;var w=this.clone(),K=M(v,$,!0);return K&&(w.$L=K),w},L.clone=function(){return k.w(this.$d,this)},L.toDate=function(){return new Date(this.valueOf())},L.toJSON=function(){return this.isValid()?this.toISOString():null},L.toISOString=function(){return this.$d.toISOString()},L.toString=function(){return this.$d.toUTCString()},B}(),bt=Y.prototype;return P.prototype=bt,[["$ms",n],["$s",i],["$m",o],["$H",a],["$W",u],["$M",l],["$y",f],["$D",p]].forEach(function(B){bt[B[1]]=function(L){return this.$g(L,B[0],B[1])}}),P.extend=function(B,L){return B.$i||(B(L,Y,P),B.$i=!0),P},P.locale=M,P.isDayjs=I,P.unix=function(B){return P(1e3*B)},P.en=D[_],P.Ls=D,P.p={},P})});var it=q(Pe=>{"use strict";Object.defineProperty(Pe,"__esModule",{value:!0});Pe.Err=Pe.Valid=Pe.err=Pe.valid=void 0;var Q_=s(t=>new Qo(t),"valid");Pe.valid=Q_;var j_=s(t=>new jo(t),"err");Pe.err=j_;var Qo=class{static{s(this,"Valid")}constructor(e){this.value=e}isValid(){return!0}isError(){return!this.isValid()}getValue(){return this.value}getError(){throw new Error("Tried to get error from a valid.")}map(e){return(0,Pe.valid)(e(this.value))}mapErr(e){return(0,Pe.valid)(this.value)}};Pe.Valid=Qo;var jo=class{static{s(this,"Err")}constructor(e){this.error=e}isError(){return!0}isValid(){return!this.isError()}getValue(){throw new Error("Tried to get success value from an error.")}getError(){return this.error}map(e){return(0,Pe.err)(this.error)}mapErr(e){return(0,Pe.err)(e(this.error))}};Pe.Err=jo});var st=q(Gm=>{"use strict";Object.defineProperty(Gm,"__esModule",{value:!0})});var rr=q(Mc=>{"use strict";Object.defineProperty(Mc,"__esModule",{value:!0});At();var z=it();st();var Y_=["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"],H_=["sun","mon","tue","wed","thu","fri","sat"],z_=s((t,e)=>e[t].lowerLimit===e.preset[t].minValue&&e[t].upperLimit===e.preset[t].maxValue,"checkWildcardLimit"),Di=s((t,e,r)=>{if(e==="months"&&r.useAliases&&Y_.indexOf(t.toLowerCase())!==-1||e==="daysOfWeek"&&r.useAliases&&H_.indexOf(t.toLowerCase())!==-1)return(0,z.valid)(!0);let n=Number(t);if(isNaN(n))return(0,z.err)(`Element '${t} of ${e} field is invalid.`);let{lowerLimit:i}=r[e],{upperLimit:o}=r[e];return i&&n<i?(0,z.err)(`Number ${n} of ${e} field is smaller than lower limit '${i}'`):o&&n>o?(0,z.err)(`Number ${n} of ${e} field is bigger than upper limit '${o}'`):(0,z.valid)(!0)},"checkSingleElementWithinLimits"),J_=s((t,e,r)=>{if(t==="*")return z_(e,r)?(0,z.valid)(!0):(0,z.err)(`Field ${e} uses wildcard '*', but is limited to ${r[e].lowerLimit}-${r[e].upperLimit}`);if(t==="")return(0,z.err)(`One of the elements is empty in ${e} field.`);if(e==="daysOfMonth"&&r.useLastDayOfMonth&&t==="L")return(0,z.valid)(!0);if(e==="daysOfWeek"&&r.useLastDayOfWeek&&t.endsWith("L")){let n=t.slice(0,-1);return n===""?(0,z.valid)(!0):Di(n,e,r)}if(e==="daysOfMonth"&&r.useNearestWeekday&&t.endsWith("W")){let n=t.slice(0,-1);return n===""?(0,z.err)("The 'W' must be preceded by a day"):r.useLastDayOfMonth&&n==="L"?(0,z.valid)(!0):Di(n,e,r)}if(e==="daysOfWeek"&&r.useNthWeekdayOfMonth&&t.indexOf("#")!==-1){let[n,i,...o]=t.split("#");if(o.length!==0)return(0,z.err)(`Unexpected number of '#' in ${t}, can only be used once.`);let a=Number(i);return!i||isNaN(a)?(0,z.err)(`Unexpected value following the '#' symbol, a positive number was expected but found ${i}.`):a>5?(0,z.err)("Number of occurrence of the day of the week cannot be greater than 5."):Di(n,e,r)}return Di(t,e,r)},"checkSingleElement"),qm=s((t,e,r,n)=>t==="*"?(0,z.err)(`'*' can't be part of a range in ${e} field.`):t===""?(0,z.err)(`One of the range elements is empty in ${e} field.`):r.useLastDayOfMonth&&e==="daysOfMonth"&&t==="L"&&n===0?(0,z.valid)(!0):Di(t,e,r),"checkRangeElement"),Z_=s((t,e,r)=>{let n=t.split("-");if(n.length>2)return(0,z.err)(`List element '${t}' is not valid. (More than one '-')`);if(n.length===1)return J_(n[0],e,r);if(n.length===2){let i=qm(n[0],e,r,0),o=qm(n[1],e,r,1);return i.isError()?i:o.isError()?o:Number(n[0])>Number(n[1])?(0,z.err)(`Lower range end '${n[0]}' is bigger than upper range end '${n[1]}' of ${e} field.`):(0,z.valid)(!0)}return(0,z.err)("Some other error in checkFirstStepElement (rangeArray less than 1)")},"checkFirstStepElement"),X_=s((t,e,r)=>{let n=t.split("/");if(n.length>2)return(0,z.err)(`List element '${t}' is not valid. (More than one '/')`);let i=Z_(n[0],e,r);if(i.isError())return i;if(n.length===2){let o=n[1];if(!o)return(0,z.err)(`Second step element '${o}' of '${t}' is not valid (doesnt exist).`);if(isNaN(Number(o)))return(0,z.err)(`Second step element '${o}' of '${t}' is not valid (not a number).`);if(Number(o)===0)return(0,z.err)(`Second step element '${o}' of '${t}' cannot be zero.`)}return(0,z.valid)(!0)},"checkListElement"),eO=s((t,e,r)=>{if(!["seconds","minutes","hours","daysOfMonth","months","daysOfWeek","years"].includes(e))return(0,z.err)([`Cron field type '${e}' does not exist.`]);if(t==="?")return e==="daysOfMonth"||e==="daysOfWeek"?r.useBlankDay?(0,z.valid)(!0):(0,z.err)([`useBlankDay is not enabled, but is used in ${e} field`]):(0,z.err)([`blank notation is not allowed in ${e} field`]);let n=t.split(","),i=[];if(n.forEach(a=>{i.push(X_(a,e,r))}),i.every(a=>a.isValid()))return(0,z.valid)(!0);let o=[];return i.forEach(a=>{a.isError()&&o.push(a.getError())}),(0,z.err)(o)},"checkField");Mc.default=eO});var Km=q(Ri=>{"use strict";var tO=Ri&&Ri.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Ri,"__esModule",{value:!0});At();var rO=it(),nO=tO(rr());st();var iO=s((t,e)=>{if(!t.seconds)return(0,rO.err)(["seconds field is undefined, but useSeconds options is enabled."]);let{seconds:r}=t;return(0,nO.default)(r,"seconds",e)},"checkSeconds");Ri.default=iO});var Qm=q(Ci=>{"use strict";var sO=Ci&&Ci.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Ci,"__esModule",{value:!0});At();var oO=it(),aO=sO(rr());st();var uO=s((t,e)=>{if(!t.minutes)return(0,oO.err)(["minutes field is undefined."]);let{minutes:r}=t;return(0,aO.default)(r,"minutes",e)},"checkMinutes");Ci.default=uO});var jm=q(bi=>{"use strict";var cO=bi&&bi.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(bi,"__esModule",{value:!0});At();var lO=it(),dO=cO(rr());st();var fO=s((t,e)=>{if(!t.hours)return(0,lO.err)(["hours field is undefined."]);let{hours:r}=t;return(0,dO.default)(r,"hours",e)},"checkHours");bi.default=fO});var Ym=q(vi=>{"use strict";var pO=vi&&vi.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(vi,"__esModule",{value:!0});At();var xi=it(),mO=pO(rr());st();var hO=s((t,e)=>{if(!t.daysOfMonth)return(0,xi.err)(["daysOfMonth field is undefined."]);let{daysOfMonth:r}=t;return e.allowOnlyOneBlankDayField&&e.useBlankDay&&t.daysOfMonth==="?"&&t.daysOfWeek==="?"?(0,xi.err)(["Cannot use blank value in daysOfMonth and daysOfWeek field when allowOnlyOneBlankDayField option is enabled."]):e.mustHaveBlankDayField&&t.daysOfMonth!=="?"&&t.daysOfWeek!=="?"?(0,xi.err)(["Cannot specify both daysOfMonth and daysOfWeek field when mustHaveBlankDayField option is enabled."]):e.useLastDayOfMonth&&t.daysOfMonth.indexOf("L")!==-1&&t.daysOfMonth.match(/[,/]/)?(0,xi.err)(["Cannot specify last day of month with lists, or ranges (symbols ,/)."]):e.useNearestWeekday&&t.daysOfMonth.indexOf("W")!==-1&&t.daysOfMonth.match(/[,/-]/)?(0,xi.err)(["Cannot specify nearest weekday with lists, steps or ranges (symbols ,-/)."]):(0,mO.default)(r,"daysOfMonth",e)},"checkDaysOfMonth");vi.default=hO});var Hm=q(Pi=>{"use strict";var EO=Pi&&Pi.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Pi,"__esModule",{value:!0});At();var gO=it(),yO=EO(rr());st();var TO=s((t,e)=>{if(!t.months)return(0,gO.err)(["months field is undefined."]);let{months:r}=t;return(0,yO.default)(r,"months",e)},"checkMonths");Pi.default=TO});var zm=q(Ui=>{"use strict";var SO=Ui&&Ui.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Ui,"__esModule",{value:!0});At();var Ni=it(),AO=SO(rr());st();var _O=s((t,e)=>{if(!t.daysOfWeek)return(0,Ni.err)(["daysOfWeek field is undefined."]);let{daysOfWeek:r}=t;return e.allowOnlyOneBlankDayField&&t.daysOfMonth==="?"&&t.daysOfWeek==="?"?(0,Ni.err)(["Cannot use blank value in daysOfMonth and daysOfWeek field when allowOnlyOneBlankDayField option is enabled."]):e.mustHaveBlankDayField&&t.daysOfMonth!=="?"&&t.daysOfWeek!=="?"?(0,Ni.err)(["Cannot specify both daysOfMonth and daysOfWeek field when mustHaveBlankDayField option is enabled."]):e.useLastDayOfWeek&&t.daysOfWeek.indexOf("L")!==-1&&t.daysOfWeek.match(/[,/-]/)?(0,Ni.err)(["Cannot specify last day of week with lists, steps or ranges (symbols ,-/)."]):e.useNthWeekdayOfMonth&&t.daysOfWeek.indexOf("#")!==-1&&t.daysOfWeek.match(/[,/-]/)?(0,Ni.err)(["Cannot specify Nth weekday of month with lists, steps or ranges (symbols ,-/)."]):(0,AO.default)(r,"daysOfWeek",e)},"checkDaysOfWeek");Ui.default=_O});var Jm=q(Li=>{"use strict";var OO=Li&&Li.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Li,"__esModule",{value:!0});At();var IO=it(),wO=OO(rr());st();var DO=s((t,e)=>{if(!t.years)return(0,IO.err)(["years field is undefined, but useYears option is enabled."]);let{years:r}=t;return(0,wO.default)(r,"years",e)},"checkYears");Li.default=DO});var th=q((nM,eh)=>{"use strict";var Fc;try{Fc=Map}catch{}var Bc;try{Bc=Set}catch{}function Zm(t,e,r){if(!t||typeof t!="object"||typeof t=="function")return t;if(t.nodeType&&"cloneNode"in t)return t.cloneNode(!0);if(t instanceof Date)return new Date(t.getTime());if(t instanceof RegExp)return new RegExp(t);if(Array.isArray(t))return t.map(Xm);if(Fc&&t instanceof Fc)return new Map(Array.from(t.entries()));if(Bc&&t instanceof Bc)return new Set(Array.from(t.values()));if(t instanceof Object){e.push(t);var n=Object.create(t);r.push(n);for(var i in t){var o=e.findIndex(function(a){return a===t[i]});n[i]=o>-1?r[o]:Zm(t[i],e,r)}return n}return t}s(Zm,"baseClone");function Xm(t){return Zm(t,[],[])}s(Xm,"clone");eh.exports=Xm});var ki=q(Wc=>{"use strict";Object.defineProperty(Wc,"__esModule",{value:!0});Wc.default=NO;var RO=Object.prototype.toString,CO=Error.prototype.toString,bO=RegExp.prototype.toString,xO=typeof Symbol<"u"?Symbol.prototype.toString:()=>"",vO=/^Symbol\((.*)\)(.*)$/;function PO(t){return t!=+t?"NaN":t===0&&1/t<0?"-0":""+t}s(PO,"printNumber");function rh(t,e=!1){if(t==null||t===!0||t===!1)return""+t;let r=typeof t;if(r==="number")return PO(t);if(r==="string")return e?`"${t}"`:t;if(r==="function")return"[Function "+(t.name||"anonymous")+"]";if(r==="symbol")return xO.call(t).replace(vO,"Symbol($1)");let n=RO.call(t).slice(8,-1);return n==="Date"?isNaN(t.getTime())?""+t:t.toISOString(t):n==="Error"||t instanceof Error?"["+CO.call(t)+"]":n==="RegExp"?bO.call(t):null}s(rh,"printSimpleValue");function NO(t,e){let r=rh(t,e);return r!==null?r:JSON.stringify(t,function(n,i){let o=rh(this[n],e);return o!==null?o:i},2)}s(NO,"printValue")});var vt=q(Se=>{"use strict";Object.defineProperty(Se,"__esModule",{value:!0});Se.default=Se.array=Se.object=Se.boolean=Se.date=Se.number=Se.string=Se.mixed=void 0;var nh=UO(ki());function UO(t){return t&&t.__esModule?t:{default:t}}s(UO,"_interopRequireDefault");var ih={default:"${path} is invalid",required:"${path} is a required field",oneOf:"${path} must be one of the following values: ${values}",notOneOf:"${path} must not be one of the following values: ${values}",notType:({path:t,type:e,value:r,originalValue:n})=>{let i=n!=null&&n!==r,o=`${t} must be a \`${e}\` type, but the final value was: \`${(0,nh.default)(r,!0)}\``+(i?` (cast from the value \`${(0,nh.default)(n,!0)}\`).`:".");return r===null&&(o+='\n If "null" is intended as an empty value be sure to mark the schema as `.nullable()`'),o},defined:"${path} must be defined"};Se.mixed=ih;var sh={length:"${path} must be exactly ${length} characters",min:"${path} must be at least ${min} characters",max:"${path} must be at most ${max} characters",matches:'${path} must match the following: "${regex}"',email:"${path} must be a valid email",url:"${path} must be a valid URL",uuid:"${path} must be a valid UUID",trim:"${path} must be a trimmed string",lowercase:"${path} must be a lowercase string",uppercase:"${path} must be a upper case string"};Se.string=sh;var oh={min:"${path} must be greater than or equal to ${min}",max:"${path} must be less than or equal to ${max}",lessThan:"${path} must be less than ${less}",moreThan:"${path} must be greater than ${more}",positive:"${path} must be a positive number",negative:"${path} must be a negative number",integer:"${path} must be an integer"};Se.number=oh;var ah={min:"${path} field must be later than ${min}",max:"${path} field must be at earlier than ${max}"};Se.date=ah;var uh={isValue:"${path} field must be ${value}"};Se.boolean=uh;var ch={noUnknown:"${path} field has unspecified keys: ${unknown}"};Se.object=ch;var lh={min:"${path} field must have at least ${min} items",max:"${path} field must have less than or equal to ${max} items",length:"${path} must be have ${length} items"};Se.array=lh;var LO=Object.assign(Object.create(null),{mixed:ih,string:sh,number:oh,date:ah,object:ch,array:lh,boolean:uh});Se.default=LO});var Rn=q(Yo=>{"use strict";Object.defineProperty(Yo,"__esModule",{value:!0});Yo.default=void 0;var kO=s(t=>t&&t.__isYupSchema__,"_default");Yo.default=kO});var fh=q(Ho=>{"use strict";Object.defineProperty(Ho,"__esModule",{value:!0});Ho.default=void 0;var MO=dh(require("lodash/has")),FO=dh(Rn());function dh(t){return t&&t.__esModule?t:{default:t}}s(dh,"_interopRequireDefault");var $c=class{static{s(this,"Condition")}constructor(e,r){if(this.refs=e,this.refs=e,typeof r=="function"){this.fn=r;return}if(!(0,MO.default)(r,"is"))throw new TypeError("`is:` is required for `when()` conditions");if(!r.then&&!r.otherwise)throw new TypeError("either `then:` or `otherwise:` is required for `when()` conditions");let{is:n,then:i,otherwise:o}=r,a=typeof n=="function"?n:(...u)=>u.every(c=>c===n);this.fn=function(...u){let c=u.pop(),l=u.pop(),d=a(...u)?i:o;if(d)return typeof d=="function"?d(l):l.concat(d.resolve(c))}}resolve(e,r){let n=this.refs.map(o=>o.getValue(r?.value,r?.parent,r?.context)),i=this.fn.apply(e,n.concat(e,r));if(i===void 0||i===e)return e;if(!(0,FO.default)(i))throw new TypeError("conditions must return a schema object");return i.resolve(r)}},BO=$c;Ho.default=BO});var Gc=q(Vc=>{"use strict";Object.defineProperty(Vc,"__esModule",{value:!0});Vc.default=WO;function WO(t){return t==null?[]:[].concat(t)}s(WO,"toArray")});var Nr=q(zo=>{"use strict";Object.defineProperty(zo,"__esModule",{value:!0});zo.default=void 0;var $O=ph(ki()),VO=ph(Gc());function ph(t){return t&&t.__esModule?t:{default:t}}s(ph,"_interopRequireDefault");function qc(){return qc=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},qc.apply(this,arguments)}s(qc,"_extends");var GO=/\$\{\s*(\w+)\s*\}/g,Kc=class t extends Error{static{s(this,"ValidationError")}static formatError(e,r){let n=r.label||r.path||"this";return n!==r.path&&(r=qc({},r,{path:n})),typeof e=="string"?e.replace(GO,(i,o)=>(0,$O.default)(r[o])):typeof e=="function"?e(r):e}static isError(e){return e&&e.name==="ValidationError"}constructor(e,r,n,i){super(),this.name="ValidationError",this.value=r,this.path=n,this.type=i,this.errors=[],this.inner=[],(0,VO.default)(e).forEach(o=>{t.isError(o)?(this.errors.push(...o.errors),this.inner=this.inner.concat(o.inner.length?o.inner:o)):this.errors.push(o)}),this.message=this.errors.length>1?`${this.errors.length} errors occurred`:this.errors[0],Error.captureStackTrace&&Error.captureStackTrace(this,t)}};zo.default=Kc});var Jo=q(jc=>{"use strict";Object.defineProperty(jc,"__esModule",{value:!0});jc.default=QO;var Qc=qO(Nr());function qO(t){return t&&t.__esModule?t:{default:t}}s(qO,"_interopRequireDefault");var KO=s(t=>{let e=!1;return(...r)=>{e||(e=!0,t(...r))}},"once");function QO(t,e){let{endEarly:r,tests:n,args:i,value:o,errors:a,sort:u,path:c}=t,l=KO(e),d=n.length,f=[];if(a=a||[],!d)return a.length?l(new Qc.default(a,o,c)):l(null,o);for(let p=0;p<n.length;p++){let m=n[p];m(i,s(function(g){if(g){if(!Qc.default.isError(g))return l(g,o);if(r)return g.value=o,l(g,o);f.push(g)}if(--d<=0){if(f.length&&(u&&f.sort(u),a.length&&f.push(...a),a=f),a.length){l(new Qc.default(a,o,c),o);return}l(null,o)}},"finishTestRun"))}}s(QO,"runTests")});var Mi=q((TM,yh)=>{"use strict";function Ur(t){this._maxSize=t,this.clear()}s(Ur,"Cache");Ur.prototype.clear=function(){this._size=0,this._values=Object.create(null)};Ur.prototype.get=function(t){return this._values[t]};Ur.prototype.set=function(t,e){return this._size>=this._maxSize&&this.clear(),t in this._values||this._size++,this._values[t]=e};var jO=/[^.^\]^[]+|(?=\[\]|\.\.)/g,gh=/^\d+$/,YO=/^\d/,HO=/[~`!#$%\^&*+=\-\[\]\\';,/{}|\\":<>\?]/g,zO=/^\s*(['"]?)(.*?)(\1)\s*$/,zc=512,mh=new Ur(zc),hh=new Ur(zc),Eh=new Ur(zc);yh.exports={Cache:Ur,split:Hc,normalizePath:Yc,setter:function(t){var e=Yc(t);return hh.get(t)||hh.set(t,s(function(n,i){for(var o=0,a=e.length,u=n;o<a-1;){var c=e[o];if(c==="__proto__"||c==="constructor"||c==="prototype")return n;u=u[e[o++]]}u[e[o]]=i},"setter"))},getter:function(t,e){var r=Yc(t);return Eh.get(t)||Eh.set(t,s(function(i){for(var o=0,a=r.length;o<a;)if(i!=null||!e)i=i[r[o++]];else return;return i},"getter"))},join:function(t){return t.reduce(function(e,r){return e+(Jc(r)||gh.test(r)?"["+r+"]":(e?".":"")+r)},"")},forEach:function(t,e,r){JO(Array.isArray(t)?t:Hc(t),e,r)}};function Yc(t){return mh.get(t)||mh.set(t,Hc(t).map(function(e){return e.replace(zO,"$2")}))}s(Yc,"normalizePath");function Hc(t){return t.match(jO)||[""]}s(Hc,"split");function JO(t,e,r){var n=t.length,i,o,a,u;for(o=0;o<n;o++)i=t[o],i&&(eI(i)&&(i='"'+i+'"'),u=Jc(i),a=!u&&/^\d+$/.test(i),e.call(r,i,u,a,o,t))}s(JO,"forEach");function Jc(t){return typeof t=="string"&&t&&["'",'"'].indexOf(t.charAt(0))!==-1}s(Jc,"isQuoted");function ZO(t){return t.match(YO)&&!t.match(gh)}s(ZO,"hasLeadingNumber");function XO(t){return HO.test(t)}s(XO,"hasSpecialChars");function eI(t){return!Jc(t)&&(ZO(t)||XO(t))}s(eI,"shouldBeQuoted")});var Lr=q(Bi=>{"use strict";Object.defineProperty(Bi,"__esModule",{value:!0});Bi.create=rI;Bi.default=void 0;var tI=Mi(),Zo={context:"$",value:"."};function rI(t,e){return new Fi(t,e)}s(rI,"create");var Fi=class{static{s(this,"Reference")}constructor(e,r={}){if(typeof e!="string")throw new TypeError("ref must be a string, got: "+e);if(this.key=e.trim(),e==="")throw new TypeError("ref must be a non-empty string");this.isContext=this.key[0]===Zo.context,this.isValue=this.key[0]===Zo.value,this.isSibling=!this.isContext&&!this.isValue;let n=this.isContext?Zo.context:this.isValue?Zo.value:"";this.path=this.key.slice(n.length),this.getter=this.path&&(0,tI.getter)(this.path,!0),this.map=r.map}getValue(e,r,n){let i=this.isContext?n:this.isValue?e:r;return this.getter&&(i=this.getter(i||{})),this.map&&(i=this.map(i)),i}cast(e,r){return this.getValue(e,r?.parent,r?.context)}resolve(){return this}describe(){return{type:"ref",key:this.key}}toString(){return`Ref(${this.key})`}static isRef(e){return e&&e.__isYupRef}};Bi.default=Fi;Fi.prototype.__isYupRef=!0});var Th=q(Xc=>{"use strict";Object.defineProperty(Xc,"__esModule",{value:!0});Xc.default=oI;var nI=Zc(require("lodash/mapValues")),Xo=Zc(Nr()),iI=Zc(Lr());function Zc(t){return t&&t.__esModule?t:{default:t}}s(Zc,"_interopRequireDefault");function ea(){return ea=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},ea.apply(this,arguments)}s(ea,"_extends");function sI(t,e){if(t==null)return{};var r={},n=Object.keys(t),i,o;for(o=0;o<n.length;o++)i=n[o],!(e.indexOf(i)>=0)&&(r[i]=t[i]);return r}s(sI,"_objectWithoutPropertiesLoose");function oI(t){function e(r,n){let{value:i,path:o="",label:a,options:u,originalValue:c,sync:l}=r,d=sI(r,["value","path","label","options","originalValue","sync"]),{name:f,test:p,params:m,message:h}=t,{parent:g,context:y}=u;function S(I){return iI.default.isRef(I)?I.getValue(i,g,y):I}s(S,"resolve");function O(I={}){let M=(0,nI.default)(ea({value:i,originalValue:c,label:a,path:I.path||o},m,I.params),S),P=new Xo.default(Xo.default.formatError(I.message||h,M),i,M.path,I.type||f);return P.params=M,P}s(O,"createError");let _=ea({path:o,parent:g,type:f,createError:O,resolve:S,options:u,originalValue:c},d);if(!l){try{Promise.resolve(p.call(_,i,_)).then(I=>{Xo.default.isError(I)?n(I):I?n(null,I):n(O())})}catch(I){n(I)}return}let D;try{var T;if(D=p.call(_,i,_),typeof((T=D)==null?void 0:T.then)=="function")throw new Error(`Validation test of type: "${_.type}" returned a Promise during a synchronous validate. This test will finish after the validate call has returned`)}catch(I){n(I);return}Xo.default.isError(D)?n(D):D?n(null,D):n(O())}return s(e,"validate"),e.OPTIONS=t,e}s(oI,"createValidation")});var el=q(Wi=>{"use strict";Object.defineProperty(Wi,"__esModule",{value:!0});Wi.getIn=Sh;Wi.default=void 0;var aI=Mi(),uI=s(t=>t.substr(0,t.length-1).substr(1),"trim");function Sh(t,e,r,n=r){let i,o,a;return e?((0,aI.forEach)(e,(u,c,l)=>{let d=c?uI(u):u;if(t=t.resolve({context:n,parent:i,value:r}),t.innerType){let f=l?parseInt(d,10):0;if(r&&f>=r.length)throw new Error(`Yup.reach cannot resolve an array item at index: ${u}, in the path: ${e}. because there is no value at that index. `);i=r,r=r&&r[f],t=t.innerType}if(!l){if(!t.fields||!t.fields[d])throw new Error(`The schema does not contain the path: ${e}. (failed at: ${a} which is a type: "${t._type}")`);i=r,r=r&&r[d],t=t.fields[d]}o=d,a=c?"["+u+"]":"."+u}),{schema:t,parent:i,parentPath:o}):{parent:i,parentPath:e,schema:t}}s(Sh,"getIn");var cI=s((t,e,r,n)=>Sh(t,e,r,n).schema,"reach"),lI=cI;Wi.default=lI});var _h=q(ta=>{"use strict";Object.defineProperty(ta,"__esModule",{value:!0});ta.default=void 0;var Ah=dI(Lr());function dI(t){return t&&t.__esModule?t:{default:t}}s(dI,"_interopRequireDefault");var tl=class t{static{s(this,"ReferenceSet")}constructor(){this.list=new Set,this.refs=new Map}get size(){return this.list.size+this.refs.size}describe(){let e=[];for(let r of this.list)e.push(r);for(let[,r]of this.refs)e.push(r.describe());return e}toArray(){return Array.from(this.list).concat(Array.from(this.refs.values()))}add(e){Ah.default.isRef(e)?this.refs.set(e.key,e):this.list.add(e)}delete(e){Ah.default.isRef(e)?this.refs.delete(e.key):this.list.delete(e)}has(e,r){if(this.list.has(e))return!0;let n,i=this.refs.values();for(;n=i.next(),!n.done;)if(r(n.value)===e)return!0;return!1}clone(){let e=new t;return e.list=new Set(this.list),e.refs=new Map(this.refs),e}merge(e,r){let n=this.clone();return e.list.forEach(i=>n.add(i)),e.refs.forEach(i=>n.add(i)),r.list.forEach(i=>n.delete(i)),r.refs.forEach(i=>n.delete(i)),n}};ta.default=tl});var Nt=q(na=>{"use strict";Object.defineProperty(na,"__esModule",{value:!0});na.default=void 0;var Oh=Pt(th()),Cn=vt(),fI=Pt(fh()),Ih=Pt(Jo()),ra=Pt(Th()),wh=Pt(ki()),pI=Pt(Lr()),mI=el(),hI=Pt(Gc()),Dh=Pt(Nr()),Rh=Pt(_h());function Pt(t){return t&&t.__esModule?t:{default:t}}s(Pt,"_interopRequireDefault");function je(){return je=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},je.apply(this,arguments)}s(je,"_extends");var ot=class{static{s(this,"BaseSchema")}constructor(e){this.deps=[],this.conditions=[],this._whitelist=new Rh.default,this._blacklist=new Rh.default,this.exclusiveTests=Object.create(null),this.tests=[],this.transforms=[],this.withMutation(()=>{this.typeError(Cn.mixed.notType)}),this.type=e?.type||"mixed",this.spec=je({strip:!1,strict:!1,abortEarly:!0,recursive:!0,nullable:!1,presence:"optional"},e?.spec)}get _type(){return this.type}_typeCheck(e){return!0}clone(e){if(this._mutate)return e&&Object.assign(this.spec,e),this;let r=Object.create(Object.getPrototypeOf(this));return r.type=this.type,r._typeError=this._typeError,r._whitelistError=this._whitelistError,r._blacklistError=this._blacklistError,r._whitelist=this._whitelist.clone(),r._blacklist=this._blacklist.clone(),r.exclusiveTests=je({},this.exclusiveTests),r.deps=[...this.deps],r.conditions=[...this.conditions],r.tests=[...this.tests],r.transforms=[...this.transforms],r.spec=(0,Oh.default)(je({},this.spec,e)),r}label(e){var r=this.clone();return r.spec.label=e,r}meta(...e){if(e.length===0)return this.spec.meta;let r=this.clone();return r.spec.meta=Object.assign(r.spec.meta||{},e[0]),r}withMutation(e){let r=this._mutate;this._mutate=!0;let n=e(this);return this._mutate=r,n}concat(e){if(!e||e===this)return this;if(e.type!==this.type&&this.type!=="mixed")throw new TypeError(`You cannot \`concat()\` schema's of different types: ${this.type} and ${e.type}`);let r=this,n=e.clone(),i=je({},r.spec,n.spec);return n.spec=i,n._typeError||(n._typeError=r._typeError),n._whitelistError||(n._whitelistError=r._whitelistError),n._blacklistError||(n._blacklistError=r._blacklistError),n._whitelist=r._whitelist.merge(e._whitelist,e._blacklist),n._blacklist=r._blacklist.merge(e._blacklist,e._whitelist),n.tests=r.tests,n.exclusiveTests=r.exclusiveTests,n.withMutation(o=>{e.tests.forEach(a=>{o.test(a.OPTIONS)})}),n}isType(e){return this.spec.nullable&&e===null?!0:this._typeCheck(e)}resolve(e){let r=this;if(r.conditions.length){let n=r.conditions;r=r.clone(),r.conditions=[],r=n.reduce((i,o)=>o.resolve(i,e),r),r=r.resolve(e)}return r}cast(e,r={}){let n=this.resolve(je({value:e},r)),i=n._cast(e,r);if(e!==void 0&&r.assert!==!1&&n.isType(i)!==!0){let o=(0,wh.default)(e),a=(0,wh.default)(i);throw new TypeError(`The value of ${r.path||"field"} could not be cast to a value that satisfies the schema type: "${n._type}".
1
+ "use strict";var A_=Object.create;var _i=Object.defineProperty;var __=Object.getOwnPropertyDescriptor;var O_=Object.getOwnPropertyNames;var I_=Object.getPrototypeOf,w_=Object.prototype.hasOwnProperty;var s=(t,e)=>_i(t,"name",{value:e,configurable:!0});var K=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),N=(t,e)=>{for(var r in e)_i(t,r,{get:e[r],enumerable:!0})},Cm=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of O_(e))!w_.call(t,i)&&i!==r&&_i(t,i,{get:()=>e[i],enumerable:!(n=__(e,i))||n.enumerable});return t};var B=(t,e,r)=>(r=t!=null?A_(I_(t)):{},Cm(e||!t||!t.__esModule?_i(r,"default",{value:t,enumerable:!0}):r,t)),D_=t=>Cm(_i({},"__esModule",{value:!0}),t);var Fm=K((Pc,Nc)=>{"use strict";(function(t,e){typeof Pc=="object"&&typeof Nc<"u"?Nc.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs=e()})(Pc,function(){"use strict";var t=1e3,e=6e4,r=36e5,n="millisecond",i="second",o="minute",a="hour",u="day",c="week",l="month",d="quarter",f="year",p="date",m="Invalid Date",h=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,g=/\[([^\]]+)]|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,y={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(W){var k=["th","st","nd","rd"],v=W%100;return"["+W+(k[(v-20)%10]||k[v]||k[0])+"]"}},S=s(function(W,k,v){var G=String(W);return!G||G.length>=k?W:""+Array(k+1-G.length).join(v)+W},"m"),O={s:S,z:function(W){var k=-W.utcOffset(),v=Math.abs(k),G=Math.floor(v/60),L=v%60;return(k<=0?"+":"-")+S(G,2,"0")+":"+S(L,2,"0")},m:s(function W(k,v){if(k.date()<v.date())return-W(v,k);var G=12*(v.year()-k.year())+(v.month()-k.month()),L=k.clone().add(G,l),D=v-L<0,$=k.clone().add(G+(D?-1:1),l);return+(-(G+(v-L)/(D?L-$:$-L))||0)},"t"),a:function(W){return W<0?Math.ceil(W)||0:Math.floor(W)},p:function(W){return{M:l,y:f,w:c,d:u,D:p,h:a,m:o,s:i,ms:n,Q:d}[W]||String(W||"").toLowerCase().replace(/s$/,"")},u:function(W){return W===void 0}},_="en",w={};w[_]=y;var T="$isDayjsObject",I=s(function(W){return W instanceof Y||!(!W||!W[T])},"S"),F=s(function W(k,v,G){var L;if(!k)return _;if(typeof k=="string"){var D=k.toLowerCase();w[D]&&(L=D),v&&(w[D]=v,L=D);var $=k.split("-");if(!L&&$.length>1)return W($[0])}else{var J=k.name;w[J]=k,L=J}return!G&&L&&(_=L),L||!G&&_},"t"),P=s(function(W,k){if(I(W))return W.clone();var v=typeof k=="object"?k:{};return v.date=W,v.args=arguments,new Y(v)},"O"),M=O;M.l=F,M.i=I,M.w=function(W,k){return P(W,{locale:k.$L,utc:k.$u,x:k.$x,$offset:k.$offset})};var Y=function(){function W(v){this.$L=F(v.locale,null,!0),this.parse(v),this.$x=this.$x||v.x||{},this[T]=!0}s(W,"M");var k=W.prototype;return k.parse=function(v){this.$d=function(G){var L=G.date,D=G.utc;if(L===null)return new Date(NaN);if(M.u(L))return new Date;if(L instanceof Date)return new Date(L);if(typeof L=="string"&&!/Z$/i.test(L)){var $=L.match(h);if($){var J=$[2]-1||0,de=($[7]||"0").substring(0,3);return D?new Date(Date.UTC($[1],J,$[3]||1,$[4]||0,$[5]||0,$[6]||0,de)):new Date($[1],J,$[3]||1,$[4]||0,$[5]||0,$[6]||0,de)}}return new Date(L)}(v),this.init()},k.init=function(){var v=this.$d;this.$y=v.getFullYear(),this.$M=v.getMonth(),this.$D=v.getDate(),this.$W=v.getDay(),this.$H=v.getHours(),this.$m=v.getMinutes(),this.$s=v.getSeconds(),this.$ms=v.getMilliseconds()},k.$utils=function(){return M},k.isValid=function(){return this.$d.toString()!==m},k.isSame=function(v,G){var L=P(v);return this.startOf(G)<=L&&L<=this.endOf(G)},k.isAfter=function(v,G){return P(v)<this.startOf(G)},k.isBefore=function(v,G){return this.endOf(G)<P(v)},k.$g=function(v,G,L){return M.u(v)?this[G]:this.set(L,v)},k.unix=function(){return Math.floor(this.valueOf()/1e3)},k.valueOf=function(){return this.$d.getTime()},k.startOf=function(v,G){var L=this,D=!!M.u(G)||G,$=M.p(v),J=s(function(vr,xe){var Xt=M.w(L.$u?Date.UTC(L.$y,xe,vr):new Date(L.$y,xe,vr),L);return D?Xt:Xt.endOf(u)},"l"),de=s(function(vr,xe){return M.w(L.toDate()[vr].apply(L.toDate("s"),(D?[0,0,0,0]:[23,59,59,999]).slice(xe)),L)},"$"),Te=this.$W,Ie=this.$M,V=this.$D,In="set"+(this.$u?"UTC":"");switch($){case f:return D?J(1,0):J(31,11);case l:return D?J(1,Ie):J(0,Ie+1);case c:var xr=this.$locale().weekStart||0,Si=(Te<xr?Te+7:Te)-xr;return J(D?V-Si:V+(6-Si),Ie);case u:case p:return de(In+"Hours",0);case a:return de(In+"Minutes",1);case o:return de(In+"Seconds",2);case i:return de(In+"Milliseconds",3);default:return this.clone()}},k.endOf=function(v){return this.startOf(v,!1)},k.$set=function(v,G){var L,D=M.p(v),$="set"+(this.$u?"UTC":""),J=(L={},L[u]=$+"Date",L[p]=$+"Date",L[l]=$+"Month",L[f]=$+"FullYear",L[a]=$+"Hours",L[o]=$+"Minutes",L[i]=$+"Seconds",L[n]=$+"Milliseconds",L)[D],de=D===u?this.$D+(G-this.$W):G;if(D===l||D===f){var Te=this.clone().set(p,1);Te.$d[J](de),Te.init(),this.$d=Te.set(p,Math.min(this.$D,Te.daysInMonth())).$d}else J&&this.$d[J](de);return this.init(),this},k.set=function(v,G){return this.clone().$set(v,G)},k.get=function(v){return this[M.p(v)]()},k.add=function(v,G){var L,D=this;v=Number(v);var $=M.p(G),J=s(function(Ie){var V=P(D);return M.w(V.date(V.date()+Math.round(Ie*v)),D)},"y");if($===l)return this.set(l,this.$M+v);if($===f)return this.set(f,this.$y+v);if($===u)return J(1);if($===c)return J(7);var de=(L={},L[o]=e,L[a]=r,L[i]=t,L)[$]||1,Te=this.$d.getTime()+v*de;return M.w(Te,this)},k.subtract=function(v,G){return this.add(-1*v,G)},k.format=function(v){var G=this,L=this.$locale();if(!this.isValid())return L.invalidDate||m;var D=v||"YYYY-MM-DDTHH:mm:ssZ",$=M.z(this),J=this.$H,de=this.$m,Te=this.$M,Ie=L.weekdays,V=L.months,In=L.meridiem,xr=s(function(xe,Xt,Ai,ko){return xe&&(xe[Xt]||xe(G,D))||Ai[Xt].slice(0,ko)},"h"),Si=s(function(xe){return M.s(J%12||12,xe,"0")},"d"),vr=In||function(xe,Xt,Ai){var ko=xe<12?"AM":"PM";return Ai?ko.toLowerCase():ko};return D.replace(g,function(xe,Xt){return Xt||function(Ai){switch(Ai){case"YY":return String(G.$y).slice(-2);case"YYYY":return M.s(G.$y,4,"0");case"M":return Te+1;case"MM":return M.s(Te+1,2,"0");case"MMM":return xr(L.monthsShort,Te,V,3);case"MMMM":return xr(V,Te);case"D":return G.$D;case"DD":return M.s(G.$D,2,"0");case"d":return String(G.$W);case"dd":return xr(L.weekdaysMin,G.$W,Ie,2);case"ddd":return xr(L.weekdaysShort,G.$W,Ie,3);case"dddd":return Ie[G.$W];case"H":return String(J);case"HH":return M.s(J,2,"0");case"h":return Si(1);case"hh":return Si(2);case"a":return vr(J,de,!0);case"A":return vr(J,de,!1);case"m":return String(de);case"mm":return M.s(de,2,"0");case"s":return String(G.$s);case"ss":return M.s(G.$s,2,"0");case"SSS":return M.s(G.$ms,3,"0");case"Z":return $}return null}(xe)||$.replace(":","")})},k.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},k.diff=function(v,G,L){var D,$=this,J=M.p(G),de=P(v),Te=(de.utcOffset()-this.utcOffset())*e,Ie=this-de,V=s(function(){return M.m($,de)},"D");switch(J){case f:D=V()/12;break;case l:D=V();break;case d:D=V()/3;break;case c:D=(Ie-Te)/6048e5;break;case u:D=(Ie-Te)/864e5;break;case a:D=Ie/r;break;case o:D=Ie/e;break;case i:D=Ie/t;break;default:D=Ie}return L?D:M.a(D)},k.daysInMonth=function(){return this.endOf(l).$D},k.$locale=function(){return w[this.$L]},k.locale=function(v,G){if(!v)return this.$L;var L=this.clone(),D=F(v,G,!0);return D&&(L.$L=D),L},k.clone=function(){return M.w(this.$d,this)},k.toDate=function(){return new Date(this.valueOf())},k.toJSON=function(){return this.isValid()?this.toISOString():null},k.toISOString=function(){return this.$d.toISOString()},k.toString=function(){return this.$d.toUTCString()},W}(),bt=Y.prototype;return P.prototype=bt,[["$ms",n],["$s",i],["$m",o],["$H",a],["$W",u],["$M",l],["$y",f],["$D",p]].forEach(function(W){bt[W[1]]=function(k){return this.$g(k,W[0],W[1])}}),P.extend=function(W,k){return W.$i||(W(k,Y,P),W.$i=!0),P},P.locale=F,P.isDayjs=I,P.unix=function(W){return P(1e3*W)},P.en=w[_],P.Ls=w,P.p={},P})});var it=K(Pe=>{"use strict";Object.defineProperty(Pe,"__esModule",{value:!0});Pe.Err=Pe.Valid=Pe.err=Pe.valid=void 0;var z_=s(t=>new Qo(t),"valid");Pe.valid=z_;var J_=s(t=>new jo(t),"err");Pe.err=J_;var Qo=class{static{s(this,"Valid")}constructor(e){this.value=e}isValid(){return!0}isError(){return!this.isValid()}getValue(){return this.value}getError(){throw new Error("Tried to get error from a valid.")}map(e){return(0,Pe.valid)(e(this.value))}mapErr(e){return(0,Pe.valid)(this.value)}};Pe.Valid=Qo;var jo=class{static{s(this,"Err")}constructor(e){this.error=e}isError(){return!0}isValid(){return!this.isError()}getValue(){throw new Error("Tried to get success value from an error.")}getError(){return this.error}map(e){return(0,Pe.err)(this.error)}mapErr(e){return(0,Pe.err)(e(this.error))}};Pe.Err=jo});var st=K(Vm=>{"use strict";Object.defineProperty(Vm,"__esModule",{value:!0})});var rr=K(Mc=>{"use strict";Object.defineProperty(Mc,"__esModule",{value:!0});At();var z=it();st();var Z_=["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"],X_=["sun","mon","tue","wed","thu","fri","sat"],eO=s((t,e)=>e[t].lowerLimit===e.preset[t].minValue&&e[t].upperLimit===e.preset[t].maxValue,"checkWildcardLimit"),Di=s((t,e,r)=>{if(e==="months"&&r.useAliases&&Z_.indexOf(t.toLowerCase())!==-1||e==="daysOfWeek"&&r.useAliases&&X_.indexOf(t.toLowerCase())!==-1)return(0,z.valid)(!0);let n=Number(t);if(isNaN(n))return(0,z.err)(`Element '${t} of ${e} field is invalid.`);let{lowerLimit:i}=r[e],{upperLimit:o}=r[e];return i&&n<i?(0,z.err)(`Number ${n} of ${e} field is smaller than lower limit '${i}'`):o&&n>o?(0,z.err)(`Number ${n} of ${e} field is bigger than upper limit '${o}'`):(0,z.valid)(!0)},"checkSingleElementWithinLimits"),tO=s((t,e,r)=>{if(t==="*")return eO(e,r)?(0,z.valid)(!0):(0,z.err)(`Field ${e} uses wildcard '*', but is limited to ${r[e].lowerLimit}-${r[e].upperLimit}`);if(t==="")return(0,z.err)(`One of the elements is empty in ${e} field.`);if(e==="daysOfMonth"&&r.useLastDayOfMonth&&t==="L")return(0,z.valid)(!0);if(e==="daysOfWeek"&&r.useLastDayOfWeek&&t.endsWith("L")){let n=t.slice(0,-1);return n===""?(0,z.valid)(!0):Di(n,e,r)}if(e==="daysOfMonth"&&r.useNearestWeekday&&t.endsWith("W")){let n=t.slice(0,-1);return n===""?(0,z.err)("The 'W' must be preceded by a day"):r.useLastDayOfMonth&&n==="L"?(0,z.valid)(!0):Di(n,e,r)}if(e==="daysOfWeek"&&r.useNthWeekdayOfMonth&&t.indexOf("#")!==-1){let[n,i,...o]=t.split("#");if(o.length!==0)return(0,z.err)(`Unexpected number of '#' in ${t}, can only be used once.`);let a=Number(i);return!i||isNaN(a)?(0,z.err)(`Unexpected value following the '#' symbol, a positive number was expected but found ${i}.`):a>5?(0,z.err)("Number of occurrence of the day of the week cannot be greater than 5."):Di(n,e,r)}return Di(t,e,r)},"checkSingleElement"),qm=s((t,e,r,n)=>t==="*"?(0,z.err)(`'*' can't be part of a range in ${e} field.`):t===""?(0,z.err)(`One of the range elements is empty in ${e} field.`):r.useLastDayOfMonth&&e==="daysOfMonth"&&t==="L"&&n===0?(0,z.valid)(!0):Di(t,e,r),"checkRangeElement"),rO=s((t,e,r)=>{let n=t.split("-");if(n.length>2)return(0,z.err)(`List element '${t}' is not valid. (More than one '-')`);if(n.length===1)return tO(n[0],e,r);if(n.length===2){let i=qm(n[0],e,r,0),o=qm(n[1],e,r,1);return i.isError()?i:o.isError()?o:Number(n[0])>Number(n[1])?(0,z.err)(`Lower range end '${n[0]}' is bigger than upper range end '${n[1]}' of ${e} field.`):(0,z.valid)(!0)}return(0,z.err)("Some other error in checkFirstStepElement (rangeArray less than 1)")},"checkFirstStepElement"),nO=s((t,e,r)=>{let n=t.split("/");if(n.length>2)return(0,z.err)(`List element '${t}' is not valid. (More than one '/')`);let i=rO(n[0],e,r);if(i.isError())return i;if(n.length===2){let o=n[1];if(!o)return(0,z.err)(`Second step element '${o}' of '${t}' is not valid (doesnt exist).`);if(isNaN(Number(o)))return(0,z.err)(`Second step element '${o}' of '${t}' is not valid (not a number).`);if(Number(o)===0)return(0,z.err)(`Second step element '${o}' of '${t}' cannot be zero.`)}return(0,z.valid)(!0)},"checkListElement"),iO=s((t,e,r)=>{if(!["seconds","minutes","hours","daysOfMonth","months","daysOfWeek","years"].includes(e))return(0,z.err)([`Cron field type '${e}' does not exist.`]);if(t==="?")return e==="daysOfMonth"||e==="daysOfWeek"?r.useBlankDay?(0,z.valid)(!0):(0,z.err)([`useBlankDay is not enabled, but is used in ${e} field`]):(0,z.err)([`blank notation is not allowed in ${e} field`]);let n=t.split(","),i=[];if(n.forEach(a=>{i.push(nO(a,e,r))}),i.every(a=>a.isValid()))return(0,z.valid)(!0);let o=[];return i.forEach(a=>{a.isError()&&o.push(a.getError())}),(0,z.err)(o)},"checkField");Mc.default=iO});var Km=K(Ri=>{"use strict";var sO=Ri&&Ri.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Ri,"__esModule",{value:!0});At();var oO=it(),aO=sO(rr());st();var uO=s((t,e)=>{if(!t.seconds)return(0,oO.err)(["seconds field is undefined, but useSeconds options is enabled."]);let{seconds:r}=t;return(0,aO.default)(r,"seconds",e)},"checkSeconds");Ri.default=uO});var Qm=K(Ci=>{"use strict";var cO=Ci&&Ci.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Ci,"__esModule",{value:!0});At();var lO=it(),dO=cO(rr());st();var fO=s((t,e)=>{if(!t.minutes)return(0,lO.err)(["minutes field is undefined."]);let{minutes:r}=t;return(0,dO.default)(r,"minutes",e)},"checkMinutes");Ci.default=fO});var jm=K(bi=>{"use strict";var pO=bi&&bi.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(bi,"__esModule",{value:!0});At();var mO=it(),hO=pO(rr());st();var EO=s((t,e)=>{if(!t.hours)return(0,mO.err)(["hours field is undefined."]);let{hours:r}=t;return(0,hO.default)(r,"hours",e)},"checkHours");bi.default=EO});var Ym=K(vi=>{"use strict";var gO=vi&&vi.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(vi,"__esModule",{value:!0});At();var xi=it(),yO=gO(rr());st();var TO=s((t,e)=>{if(!t.daysOfMonth)return(0,xi.err)(["daysOfMonth field is undefined."]);let{daysOfMonth:r}=t;return e.allowOnlyOneBlankDayField&&e.useBlankDay&&t.daysOfMonth==="?"&&t.daysOfWeek==="?"?(0,xi.err)(["Cannot use blank value in daysOfMonth and daysOfWeek field when allowOnlyOneBlankDayField option is enabled."]):e.mustHaveBlankDayField&&t.daysOfMonth!=="?"&&t.daysOfWeek!=="?"?(0,xi.err)(["Cannot specify both daysOfMonth and daysOfWeek field when mustHaveBlankDayField option is enabled."]):e.useLastDayOfMonth&&t.daysOfMonth.indexOf("L")!==-1&&t.daysOfMonth.match(/[,/]/)?(0,xi.err)(["Cannot specify last day of month with lists, or ranges (symbols ,/)."]):e.useNearestWeekday&&t.daysOfMonth.indexOf("W")!==-1&&t.daysOfMonth.match(/[,/-]/)?(0,xi.err)(["Cannot specify nearest weekday with lists, steps or ranges (symbols ,-/)."]):(0,yO.default)(r,"daysOfMonth",e)},"checkDaysOfMonth");vi.default=TO});var Hm=K(Pi=>{"use strict";var SO=Pi&&Pi.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Pi,"__esModule",{value:!0});At();var AO=it(),_O=SO(rr());st();var OO=s((t,e)=>{if(!t.months)return(0,AO.err)(["months field is undefined."]);let{months:r}=t;return(0,_O.default)(r,"months",e)},"checkMonths");Pi.default=OO});var zm=K(Ui=>{"use strict";var IO=Ui&&Ui.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Ui,"__esModule",{value:!0});At();var Ni=it(),wO=IO(rr());st();var DO=s((t,e)=>{if(!t.daysOfWeek)return(0,Ni.err)(["daysOfWeek field is undefined."]);let{daysOfWeek:r}=t;return e.allowOnlyOneBlankDayField&&t.daysOfMonth==="?"&&t.daysOfWeek==="?"?(0,Ni.err)(["Cannot use blank value in daysOfMonth and daysOfWeek field when allowOnlyOneBlankDayField option is enabled."]):e.mustHaveBlankDayField&&t.daysOfMonth!=="?"&&t.daysOfWeek!=="?"?(0,Ni.err)(["Cannot specify both daysOfMonth and daysOfWeek field when mustHaveBlankDayField option is enabled."]):e.useLastDayOfWeek&&t.daysOfWeek.indexOf("L")!==-1&&t.daysOfWeek.match(/[,/-]/)?(0,Ni.err)(["Cannot specify last day of week with lists, steps or ranges (symbols ,-/)."]):e.useNthWeekdayOfMonth&&t.daysOfWeek.indexOf("#")!==-1&&t.daysOfWeek.match(/[,/-]/)?(0,Ni.err)(["Cannot specify Nth weekday of month with lists, steps or ranges (symbols ,-/)."]):(0,wO.default)(r,"daysOfWeek",e)},"checkDaysOfWeek");Ui.default=DO});var Jm=K(Li=>{"use strict";var RO=Li&&Li.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Li,"__esModule",{value:!0});At();var CO=it(),bO=RO(rr());st();var xO=s((t,e)=>{if(!t.years)return(0,CO.err)(["years field is undefined, but useYears option is enabled."]);let{years:r}=t;return(0,bO.default)(r,"years",e)},"checkYears");Li.default=xO});var th=K((iM,eh)=>{"use strict";var Fc;try{Fc=Map}catch{}var Bc;try{Bc=Set}catch{}function Zm(t,e,r){if(!t||typeof t!="object"||typeof t=="function")return t;if(t.nodeType&&"cloneNode"in t)return t.cloneNode(!0);if(t instanceof Date)return new Date(t.getTime());if(t instanceof RegExp)return new RegExp(t);if(Array.isArray(t))return t.map(Xm);if(Fc&&t instanceof Fc)return new Map(Array.from(t.entries()));if(Bc&&t instanceof Bc)return new Set(Array.from(t.values()));if(t instanceof Object){e.push(t);var n=Object.create(t);r.push(n);for(var i in t){var o=e.findIndex(function(a){return a===t[i]});n[i]=o>-1?r[o]:Zm(t[i],e,r)}return n}return t}s(Zm,"baseClone");function Xm(t){return Zm(t,[],[])}s(Xm,"clone");eh.exports=Xm});var ki=K(Wc=>{"use strict";Object.defineProperty(Wc,"__esModule",{value:!0});Wc.default=MO;var vO=Object.prototype.toString,PO=Error.prototype.toString,NO=RegExp.prototype.toString,UO=typeof Symbol<"u"?Symbol.prototype.toString:()=>"",LO=/^Symbol\((.*)\)(.*)$/;function kO(t){return t!=+t?"NaN":t===0&&1/t<0?"-0":""+t}s(kO,"printNumber");function rh(t,e=!1){if(t==null||t===!0||t===!1)return""+t;let r=typeof t;if(r==="number")return kO(t);if(r==="string")return e?`"${t}"`:t;if(r==="function")return"[Function "+(t.name||"anonymous")+"]";if(r==="symbol")return UO.call(t).replace(LO,"Symbol($1)");let n=vO.call(t).slice(8,-1);return n==="Date"?isNaN(t.getTime())?""+t:t.toISOString(t):n==="Error"||t instanceof Error?"["+PO.call(t)+"]":n==="RegExp"?NO.call(t):null}s(rh,"printSimpleValue");function MO(t,e){let r=rh(t,e);return r!==null?r:JSON.stringify(t,function(n,i){let o=rh(this[n],e);return o!==null?o:i},2)}s(MO,"printValue")});var vt=K(Se=>{"use strict";Object.defineProperty(Se,"__esModule",{value:!0});Se.default=Se.array=Se.object=Se.boolean=Se.date=Se.number=Se.string=Se.mixed=void 0;var nh=FO(ki());function FO(t){return t&&t.__esModule?t:{default:t}}s(FO,"_interopRequireDefault");var ih={default:"${path} is invalid",required:"${path} is a required field",oneOf:"${path} must be one of the following values: ${values}",notOneOf:"${path} must not be one of the following values: ${values}",notType:({path:t,type:e,value:r,originalValue:n})=>{let i=n!=null&&n!==r,o=`${t} must be a \`${e}\` type, but the final value was: \`${(0,nh.default)(r,!0)}\``+(i?` (cast from the value \`${(0,nh.default)(n,!0)}\`).`:".");return r===null&&(o+='\n If "null" is intended as an empty value be sure to mark the schema as `.nullable()`'),o},defined:"${path} must be defined"};Se.mixed=ih;var sh={length:"${path} must be exactly ${length} characters",min:"${path} must be at least ${min} characters",max:"${path} must be at most ${max} characters",matches:'${path} must match the following: "${regex}"',email:"${path} must be a valid email",url:"${path} must be a valid URL",uuid:"${path} must be a valid UUID",trim:"${path} must be a trimmed string",lowercase:"${path} must be a lowercase string",uppercase:"${path} must be a upper case string"};Se.string=sh;var oh={min:"${path} must be greater than or equal to ${min}",max:"${path} must be less than or equal to ${max}",lessThan:"${path} must be less than ${less}",moreThan:"${path} must be greater than ${more}",positive:"${path} must be a positive number",negative:"${path} must be a negative number",integer:"${path} must be an integer"};Se.number=oh;var ah={min:"${path} field must be later than ${min}",max:"${path} field must be at earlier than ${max}"};Se.date=ah;var uh={isValue:"${path} field must be ${value}"};Se.boolean=uh;var ch={noUnknown:"${path} field has unspecified keys: ${unknown}"};Se.object=ch;var lh={min:"${path} field must have at least ${min} items",max:"${path} field must have less than or equal to ${max} items",length:"${path} must be have ${length} items"};Se.array=lh;var BO=Object.assign(Object.create(null),{mixed:ih,string:sh,number:oh,date:ah,object:ch,array:lh,boolean:uh});Se.default=BO});var Rn=K(Yo=>{"use strict";Object.defineProperty(Yo,"__esModule",{value:!0});Yo.default=void 0;var WO=s(t=>t&&t.__isYupSchema__,"_default");Yo.default=WO});var fh=K(Ho=>{"use strict";Object.defineProperty(Ho,"__esModule",{value:!0});Ho.default=void 0;var $O=dh(require("lodash/has")),GO=dh(Rn());function dh(t){return t&&t.__esModule?t:{default:t}}s(dh,"_interopRequireDefault");var $c=class{static{s(this,"Condition")}constructor(e,r){if(this.refs=e,this.refs=e,typeof r=="function"){this.fn=r;return}if(!(0,$O.default)(r,"is"))throw new TypeError("`is:` is required for `when()` conditions");if(!r.then&&!r.otherwise)throw new TypeError("either `then:` or `otherwise:` is required for `when()` conditions");let{is:n,then:i,otherwise:o}=r,a=typeof n=="function"?n:(...u)=>u.every(c=>c===n);this.fn=function(...u){let c=u.pop(),l=u.pop(),d=a(...u)?i:o;if(d)return typeof d=="function"?d(l):l.concat(d.resolve(c))}}resolve(e,r){let n=this.refs.map(o=>o.getValue(r?.value,r?.parent,r?.context)),i=this.fn.apply(e,n.concat(e,r));if(i===void 0||i===e)return e;if(!(0,GO.default)(i))throw new TypeError("conditions must return a schema object");return i.resolve(r)}},VO=$c;Ho.default=VO});var Vc=K(Gc=>{"use strict";Object.defineProperty(Gc,"__esModule",{value:!0});Gc.default=qO;function qO(t){return t==null?[]:[].concat(t)}s(qO,"toArray")});var Nr=K(zo=>{"use strict";Object.defineProperty(zo,"__esModule",{value:!0});zo.default=void 0;var KO=ph(ki()),QO=ph(Vc());function ph(t){return t&&t.__esModule?t:{default:t}}s(ph,"_interopRequireDefault");function qc(){return qc=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},qc.apply(this,arguments)}s(qc,"_extends");var jO=/\$\{\s*(\w+)\s*\}/g,Kc=class t extends Error{static{s(this,"ValidationError")}static formatError(e,r){let n=r.label||r.path||"this";return n!==r.path&&(r=qc({},r,{path:n})),typeof e=="string"?e.replace(jO,(i,o)=>(0,KO.default)(r[o])):typeof e=="function"?e(r):e}static isError(e){return e&&e.name==="ValidationError"}constructor(e,r,n,i){super(),this.name="ValidationError",this.value=r,this.path=n,this.type=i,this.errors=[],this.inner=[],(0,QO.default)(e).forEach(o=>{t.isError(o)?(this.errors.push(...o.errors),this.inner=this.inner.concat(o.inner.length?o.inner:o)):this.errors.push(o)}),this.message=this.errors.length>1?`${this.errors.length} errors occurred`:this.errors[0],Error.captureStackTrace&&Error.captureStackTrace(this,t)}};zo.default=Kc});var Jo=K(jc=>{"use strict";Object.defineProperty(jc,"__esModule",{value:!0});jc.default=zO;var Qc=YO(Nr());function YO(t){return t&&t.__esModule?t:{default:t}}s(YO,"_interopRequireDefault");var HO=s(t=>{let e=!1;return(...r)=>{e||(e=!0,t(...r))}},"once");function zO(t,e){let{endEarly:r,tests:n,args:i,value:o,errors:a,sort:u,path:c}=t,l=HO(e),d=n.length,f=[];if(a=a||[],!d)return a.length?l(new Qc.default(a,o,c)):l(null,o);for(let p=0;p<n.length;p++){let m=n[p];m(i,s(function(g){if(g){if(!Qc.default.isError(g))return l(g,o);if(r)return g.value=o,l(g,o);f.push(g)}if(--d<=0){if(f.length&&(u&&f.sort(u),a.length&&f.push(...a),a=f),a.length){l(new Qc.default(a,o,c),o);return}l(null,o)}},"finishTestRun"))}}s(zO,"runTests")});var Mi=K((SM,yh)=>{"use strict";function Ur(t){this._maxSize=t,this.clear()}s(Ur,"Cache");Ur.prototype.clear=function(){this._size=0,this._values=Object.create(null)};Ur.prototype.get=function(t){return this._values[t]};Ur.prototype.set=function(t,e){return this._size>=this._maxSize&&this.clear(),t in this._values||this._size++,this._values[t]=e};var JO=/[^.^\]^[]+|(?=\[\]|\.\.)/g,gh=/^\d+$/,ZO=/^\d/,XO=/[~`!#$%\^&*+=\-\[\]\\';,/{}|\\":<>\?]/g,eI=/^\s*(['"]?)(.*?)(\1)\s*$/,zc=512,mh=new Ur(zc),hh=new Ur(zc),Eh=new Ur(zc);yh.exports={Cache:Ur,split:Hc,normalizePath:Yc,setter:function(t){var e=Yc(t);return hh.get(t)||hh.set(t,s(function(n,i){for(var o=0,a=e.length,u=n;o<a-1;){var c=e[o];if(c==="__proto__"||c==="constructor"||c==="prototype")return n;u=u[e[o++]]}u[e[o]]=i},"setter"))},getter:function(t,e){var r=Yc(t);return Eh.get(t)||Eh.set(t,s(function(i){for(var o=0,a=r.length;o<a;)if(i!=null||!e)i=i[r[o++]];else return;return i},"getter"))},join:function(t){return t.reduce(function(e,r){return e+(Jc(r)||gh.test(r)?"["+r+"]":(e?".":"")+r)},"")},forEach:function(t,e,r){tI(Array.isArray(t)?t:Hc(t),e,r)}};function Yc(t){return mh.get(t)||mh.set(t,Hc(t).map(function(e){return e.replace(eI,"$2")}))}s(Yc,"normalizePath");function Hc(t){return t.match(JO)||[""]}s(Hc,"split");function tI(t,e,r){var n=t.length,i,o,a,u;for(o=0;o<n;o++)i=t[o],i&&(iI(i)&&(i='"'+i+'"'),u=Jc(i),a=!u&&/^\d+$/.test(i),e.call(r,i,u,a,o,t))}s(tI,"forEach");function Jc(t){return typeof t=="string"&&t&&["'",'"'].indexOf(t.charAt(0))!==-1}s(Jc,"isQuoted");function rI(t){return t.match(ZO)&&!t.match(gh)}s(rI,"hasLeadingNumber");function nI(t){return XO.test(t)}s(nI,"hasSpecialChars");function iI(t){return!Jc(t)&&(rI(t)||nI(t))}s(iI,"shouldBeQuoted")});var Lr=K(Bi=>{"use strict";Object.defineProperty(Bi,"__esModule",{value:!0});Bi.create=oI;Bi.default=void 0;var sI=Mi(),Zo={context:"$",value:"."};function oI(t,e){return new Fi(t,e)}s(oI,"create");var Fi=class{static{s(this,"Reference")}constructor(e,r={}){if(typeof e!="string")throw new TypeError("ref must be a string, got: "+e);if(this.key=e.trim(),e==="")throw new TypeError("ref must be a non-empty string");this.isContext=this.key[0]===Zo.context,this.isValue=this.key[0]===Zo.value,this.isSibling=!this.isContext&&!this.isValue;let n=this.isContext?Zo.context:this.isValue?Zo.value:"";this.path=this.key.slice(n.length),this.getter=this.path&&(0,sI.getter)(this.path,!0),this.map=r.map}getValue(e,r,n){let i=this.isContext?n:this.isValue?e:r;return this.getter&&(i=this.getter(i||{})),this.map&&(i=this.map(i)),i}cast(e,r){return this.getValue(e,r?.parent,r?.context)}resolve(){return this}describe(){return{type:"ref",key:this.key}}toString(){return`Ref(${this.key})`}static isRef(e){return e&&e.__isYupRef}};Bi.default=Fi;Fi.prototype.__isYupRef=!0});var Th=K(Xc=>{"use strict";Object.defineProperty(Xc,"__esModule",{value:!0});Xc.default=lI;var aI=Zc(require("lodash/mapValues")),Xo=Zc(Nr()),uI=Zc(Lr());function Zc(t){return t&&t.__esModule?t:{default:t}}s(Zc,"_interopRequireDefault");function ea(){return ea=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},ea.apply(this,arguments)}s(ea,"_extends");function cI(t,e){if(t==null)return{};var r={},n=Object.keys(t),i,o;for(o=0;o<n.length;o++)i=n[o],!(e.indexOf(i)>=0)&&(r[i]=t[i]);return r}s(cI,"_objectWithoutPropertiesLoose");function lI(t){function e(r,n){let{value:i,path:o="",label:a,options:u,originalValue:c,sync:l}=r,d=cI(r,["value","path","label","options","originalValue","sync"]),{name:f,test:p,params:m,message:h}=t,{parent:g,context:y}=u;function S(I){return uI.default.isRef(I)?I.getValue(i,g,y):I}s(S,"resolve");function O(I={}){let F=(0,aI.default)(ea({value:i,originalValue:c,label:a,path:I.path||o},m,I.params),S),P=new Xo.default(Xo.default.formatError(I.message||h,F),i,F.path,I.type||f);return P.params=F,P}s(O,"createError");let _=ea({path:o,parent:g,type:f,createError:O,resolve:S,options:u,originalValue:c},d);if(!l){try{Promise.resolve(p.call(_,i,_)).then(I=>{Xo.default.isError(I)?n(I):I?n(null,I):n(O())})}catch(I){n(I)}return}let w;try{var T;if(w=p.call(_,i,_),typeof((T=w)==null?void 0:T.then)=="function")throw new Error(`Validation test of type: "${_.type}" returned a Promise during a synchronous validate. This test will finish after the validate call has returned`)}catch(I){n(I);return}Xo.default.isError(w)?n(w):w?n(null,w):n(O())}return s(e,"validate"),e.OPTIONS=t,e}s(lI,"createValidation")});var el=K(Wi=>{"use strict";Object.defineProperty(Wi,"__esModule",{value:!0});Wi.getIn=Sh;Wi.default=void 0;var dI=Mi(),fI=s(t=>t.substr(0,t.length-1).substr(1),"trim");function Sh(t,e,r,n=r){let i,o,a;return e?((0,dI.forEach)(e,(u,c,l)=>{let d=c?fI(u):u;if(t=t.resolve({context:n,parent:i,value:r}),t.innerType){let f=l?parseInt(d,10):0;if(r&&f>=r.length)throw new Error(`Yup.reach cannot resolve an array item at index: ${u}, in the path: ${e}. because there is no value at that index. `);i=r,r=r&&r[f],t=t.innerType}if(!l){if(!t.fields||!t.fields[d])throw new Error(`The schema does not contain the path: ${e}. (failed at: ${a} which is a type: "${t._type}")`);i=r,r=r&&r[d],t=t.fields[d]}o=d,a=c?"["+u+"]":"."+u}),{schema:t,parent:i,parentPath:o}):{parent:i,parentPath:e,schema:t}}s(Sh,"getIn");var pI=s((t,e,r,n)=>Sh(t,e,r,n).schema,"reach"),mI=pI;Wi.default=mI});var _h=K(ta=>{"use strict";Object.defineProperty(ta,"__esModule",{value:!0});ta.default=void 0;var Ah=hI(Lr());function hI(t){return t&&t.__esModule?t:{default:t}}s(hI,"_interopRequireDefault");var tl=class t{static{s(this,"ReferenceSet")}constructor(){this.list=new Set,this.refs=new Map}get size(){return this.list.size+this.refs.size}describe(){let e=[];for(let r of this.list)e.push(r);for(let[,r]of this.refs)e.push(r.describe());return e}toArray(){return Array.from(this.list).concat(Array.from(this.refs.values()))}add(e){Ah.default.isRef(e)?this.refs.set(e.key,e):this.list.add(e)}delete(e){Ah.default.isRef(e)?this.refs.delete(e.key):this.list.delete(e)}has(e,r){if(this.list.has(e))return!0;let n,i=this.refs.values();for(;n=i.next(),!n.done;)if(r(n.value)===e)return!0;return!1}clone(){let e=new t;return e.list=new Set(this.list),e.refs=new Map(this.refs),e}merge(e,r){let n=this.clone();return e.list.forEach(i=>n.add(i)),e.refs.forEach(i=>n.add(i)),r.list.forEach(i=>n.delete(i)),r.refs.forEach(i=>n.delete(i)),n}};ta.default=tl});var Nt=K(na=>{"use strict";Object.defineProperty(na,"__esModule",{value:!0});na.default=void 0;var Oh=Pt(th()),Cn=vt(),EI=Pt(fh()),Ih=Pt(Jo()),ra=Pt(Th()),wh=Pt(ki()),gI=Pt(Lr()),yI=el(),TI=Pt(Vc()),Dh=Pt(Nr()),Rh=Pt(_h());function Pt(t){return t&&t.__esModule?t:{default:t}}s(Pt,"_interopRequireDefault");function je(){return je=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},je.apply(this,arguments)}s(je,"_extends");var ot=class{static{s(this,"BaseSchema")}constructor(e){this.deps=[],this.conditions=[],this._whitelist=new Rh.default,this._blacklist=new Rh.default,this.exclusiveTests=Object.create(null),this.tests=[],this.transforms=[],this.withMutation(()=>{this.typeError(Cn.mixed.notType)}),this.type=e?.type||"mixed",this.spec=je({strip:!1,strict:!1,abortEarly:!0,recursive:!0,nullable:!1,presence:"optional"},e?.spec)}get _type(){return this.type}_typeCheck(e){return!0}clone(e){if(this._mutate)return e&&Object.assign(this.spec,e),this;let r=Object.create(Object.getPrototypeOf(this));return r.type=this.type,r._typeError=this._typeError,r._whitelistError=this._whitelistError,r._blacklistError=this._blacklistError,r._whitelist=this._whitelist.clone(),r._blacklist=this._blacklist.clone(),r.exclusiveTests=je({},this.exclusiveTests),r.deps=[...this.deps],r.conditions=[...this.conditions],r.tests=[...this.tests],r.transforms=[...this.transforms],r.spec=(0,Oh.default)(je({},this.spec,e)),r}label(e){var r=this.clone();return r.spec.label=e,r}meta(...e){if(e.length===0)return this.spec.meta;let r=this.clone();return r.spec.meta=Object.assign(r.spec.meta||{},e[0]),r}withMutation(e){let r=this._mutate;this._mutate=!0;let n=e(this);return this._mutate=r,n}concat(e){if(!e||e===this)return this;if(e.type!==this.type&&this.type!=="mixed")throw new TypeError(`You cannot \`concat()\` schema's of different types: ${this.type} and ${e.type}`);let r=this,n=e.clone(),i=je({},r.spec,n.spec);return n.spec=i,n._typeError||(n._typeError=r._typeError),n._whitelistError||(n._whitelistError=r._whitelistError),n._blacklistError||(n._blacklistError=r._blacklistError),n._whitelist=r._whitelist.merge(e._whitelist,e._blacklist),n._blacklist=r._blacklist.merge(e._blacklist,e._whitelist),n.tests=r.tests,n.exclusiveTests=r.exclusiveTests,n.withMutation(o=>{e.tests.forEach(a=>{o.test(a.OPTIONS)})}),n}isType(e){return this.spec.nullable&&e===null?!0:this._typeCheck(e)}resolve(e){let r=this;if(r.conditions.length){let n=r.conditions;r=r.clone(),r.conditions=[],r=n.reduce((i,o)=>o.resolve(i,e),r),r=r.resolve(e)}return r}cast(e,r={}){let n=this.resolve(je({value:e},r)),i=n._cast(e,r);if(e!==void 0&&r.assert!==!1&&n.isType(i)!==!0){let o=(0,wh.default)(e),a=(0,wh.default)(i);throw new TypeError(`The value of ${r.path||"field"} could not be cast to a value that satisfies the schema type: "${n._type}".
2
2
 
3
3
  attempted value: ${o}
4
- `+(a!==o?`result of cast: ${a}`:""))}return i}_cast(e,r){let n=e===void 0?e:this.transforms.reduce((i,o)=>o.call(this,i,e,this),e);return n===void 0&&(n=this.getDefault()),n}_validate(e,r={},n){let{sync:i,path:o,from:a=[],originalValue:u=e,strict:c=this.spec.strict,abortEarly:l=this.spec.abortEarly}=r,d=e;c||(d=this._cast(d,je({assert:!1},r)));let f={value:d,path:o,options:r,originalValue:u,schema:this,label:this.spec.label,sync:i,from:a},p=[];this._typeError&&p.push(this._typeError),this._whitelistError&&p.push(this._whitelistError),this._blacklistError&&p.push(this._blacklistError),(0,Ih.default)({args:f,value:d,path:o,sync:i,tests:p,endEarly:l},m=>{if(m)return void n(m,d);(0,Ih.default)({tests:this.tests,args:f,path:o,sync:i,value:d,endEarly:l},n)})}validate(e,r,n){let i=this.resolve(je({},r,{value:e}));return typeof n=="function"?i._validate(e,r,n):new Promise((o,a)=>i._validate(e,r,(u,c)=>{u?a(u):o(c)}))}validateSync(e,r){let n=this.resolve(je({},r,{value:e})),i;return n._validate(e,je({},r,{sync:!0}),(o,a)=>{if(o)throw o;i=a}),i}isValid(e,r){return this.validate(e,r).then(()=>!0,n=>{if(Dh.default.isError(n))return!1;throw n})}isValidSync(e,r){try{return this.validateSync(e,r),!0}catch(n){if(Dh.default.isError(n))return!1;throw n}}_getDefault(){let e=this.spec.default;return e==null?e:typeof e=="function"?e.call(this):(0,Oh.default)(e)}getDefault(e){return this.resolve(e||{})._getDefault()}default(e){return arguments.length===0?this._getDefault():this.clone({default:e})}strict(e=!0){var r=this.clone();return r.spec.strict=e,r}_isPresent(e){return e!=null}defined(e=Cn.mixed.defined){return this.test({message:e,name:"defined",exclusive:!0,test(r){return r!==void 0}})}required(e=Cn.mixed.required){return this.clone({presence:"required"}).withMutation(r=>r.test({message:e,name:"required",exclusive:!0,test(n){return this.schema._isPresent(n)}}))}notRequired(){var e=this.clone({presence:"optional"});return e.tests=e.tests.filter(r=>r.OPTIONS.name!=="required"),e}nullable(e=!0){var r=this.clone({nullable:e!==!1});return r}transform(e){var r=this.clone();return r.transforms.push(e),r}test(...e){let r;if(e.length===1?typeof e[0]=="function"?r={test:e[0]}:r=e[0]:e.length===2?r={name:e[0],test:e[1]}:r={name:e[0],message:e[1],test:e[2]},r.message===void 0&&(r.message=Cn.mixed.default),typeof r.test!="function")throw new TypeError("`test` is a required parameters");let n=this.clone(),i=(0,ra.default)(r),o=r.exclusive||r.name&&n.exclusiveTests[r.name]===!0;if(r.exclusive&&!r.name)throw new TypeError("Exclusive tests must provide a unique `name` identifying the test");return r.name&&(n.exclusiveTests[r.name]=!!r.exclusive),n.tests=n.tests.filter(a=>!(a.OPTIONS.name===r.name&&(o||a.OPTIONS.test===i.OPTIONS.test))),n.tests.push(i),n}when(e,r){!Array.isArray(e)&&typeof e!="string"&&(r=e,e=".");let n=this.clone(),i=(0,hI.default)(e).map(o=>new pI.default(o));return i.forEach(o=>{o.isSibling&&n.deps.push(o.key)}),n.conditions.push(new fI.default(i,r)),n}typeError(e){var r=this.clone();return r._typeError=(0,ra.default)({message:e,name:"typeError",test(n){return n!==void 0&&!this.schema.isType(n)?this.createError({params:{type:this.schema._type}}):!0}}),r}oneOf(e,r=Cn.mixed.oneOf){var n=this.clone();return e.forEach(i=>{n._whitelist.add(i),n._blacklist.delete(i)}),n._whitelistError=(0,ra.default)({message:r,name:"oneOf",test(i){if(i===void 0)return!0;let o=this.schema._whitelist;return o.has(i,this.resolve)?!0:this.createError({params:{values:o.toArray().join(", ")}})}}),n}notOneOf(e,r=Cn.mixed.notOneOf){var n=this.clone();return e.forEach(i=>{n._blacklist.add(i),n._whitelist.delete(i)}),n._blacklistError=(0,ra.default)({message:r,name:"notOneOf",test(i){let o=this.schema._blacklist;return o.has(i,this.resolve)?this.createError({params:{values:o.toArray().join(", ")}}):!0}}),n}strip(e=!0){let r=this.clone();return r.spec.strip=e,r}describe(){let e=this.clone(),{label:r,meta:n}=e.spec;return{meta:n,label:r,type:e.type,oneOf:e._whitelist.describe(),notOneOf:e._blacklist.describe(),tests:e.tests.map(o=>({name:o.OPTIONS.name,params:o.OPTIONS.params})).filter((o,a,u)=>u.findIndex(c=>c.name===o.name)===a)}}};na.default=ot;ot.prototype.__isYupSchema__=!0;for(let t of["validate","validateSync"])ot.prototype[`${t}At`]=function(e,r,n={}){let{parent:i,parentPath:o,schema:a}=(0,mI.getIn)(this,e,r,n.context);return a[t](i&&i[o],je({},n,{parent:i,path:e}))};for(let t of["equals","is"])ot.prototype[t]=ot.prototype.oneOf;for(let t of["not","nope"])ot.prototype[t]=ot.prototype.notOneOf;ot.prototype.optional=ot.prototype.notRequired});var bh=q($i=>{"use strict";Object.defineProperty($i,"__esModule",{value:!0});$i.create=Ch;$i.default=void 0;var EI=gI(Nt());function gI(t){return t&&t.__esModule?t:{default:t}}s(gI,"_interopRequireDefault");var rl=EI.default,yI=rl;$i.default=yI;function Ch(){return new rl}s(Ch,"create");Ch.prototype=rl.prototype});var bn=q(ia=>{"use strict";Object.defineProperty(ia,"__esModule",{value:!0});ia.default=void 0;var TI=s(t=>t==null,"_default");ia.default=TI});var Uh=q(Gi=>{"use strict";Object.defineProperty(Gi,"__esModule",{value:!0});Gi.create=Nh;Gi.default=void 0;var SI=Ph(Nt()),xh=vt(),vh=Ph(bn());function Ph(t){return t&&t.__esModule?t:{default:t}}s(Ph,"_interopRequireDefault");function Nh(){return new Vi}s(Nh,"create");var Vi=class extends SI.default{static{s(this,"BooleanSchema")}constructor(){super({type:"boolean"}),this.withMutation(()=>{this.transform(function(e){if(!this.isType(e)){if(/^(true|1)$/i.test(String(e)))return!0;if(/^(false|0)$/i.test(String(e)))return!1}return e})})}_typeCheck(e){return e instanceof Boolean&&(e=e.valueOf()),typeof e=="boolean"}isTrue(e=xh.boolean.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"true"},test(r){return(0,vh.default)(r)||r===!0}})}isFalse(e=xh.boolean.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"false"},test(r){return(0,vh.default)(r)||r===!1}})}};Gi.default=Vi;Nh.prototype=Vi.prototype});var Mh=q(Ki=>{"use strict";Object.defineProperty(Ki,"__esModule",{value:!0});Ki.create=kh;Ki.default=void 0;var _t=vt(),Ut=Lh(bn()),AI=Lh(Nt());function Lh(t){return t&&t.__esModule?t:{default:t}}s(Lh,"_interopRequireDefault");var _I=/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i,OI=/^((https?|ftp):)?\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i,II=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i,wI=s(t=>(0,Ut.default)(t)||t===t.trim(),"isTrimmed"),DI={}.toString();function kh(){return new qi}s(kh,"create");var qi=class extends AI.default{static{s(this,"StringSchema")}constructor(){super({type:"string"}),this.withMutation(()=>{this.transform(function(e){if(this.isType(e)||Array.isArray(e))return e;let r=e!=null&&e.toString?e.toString():e;return r===DI?e:r})})}_typeCheck(e){return e instanceof String&&(e=e.valueOf()),typeof e=="string"}_isPresent(e){return super._isPresent(e)&&!!e.length}length(e,r=_t.string.length){return this.test({message:r,name:"length",exclusive:!0,params:{length:e},test(n){return(0,Ut.default)(n)||n.length===this.resolve(e)}})}min(e,r=_t.string.min){return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(n){return(0,Ut.default)(n)||n.length>=this.resolve(e)}})}max(e,r=_t.string.max){return this.test({name:"max",exclusive:!0,message:r,params:{max:e},test(n){return(0,Ut.default)(n)||n.length<=this.resolve(e)}})}matches(e,r){let n=!1,i,o;return r&&(typeof r=="object"?{excludeEmptyString:n=!1,message:i,name:o}=r:i=r),this.test({name:o||"matches",message:i||_t.string.matches,params:{regex:e},test:a=>(0,Ut.default)(a)||a===""&&n||a.search(e)!==-1})}email(e=_t.string.email){return this.matches(_I,{name:"email",message:e,excludeEmptyString:!0})}url(e=_t.string.url){return this.matches(OI,{name:"url",message:e,excludeEmptyString:!0})}uuid(e=_t.string.uuid){return this.matches(II,{name:"uuid",message:e,excludeEmptyString:!1})}ensure(){return this.default("").transform(e=>e===null?"":e)}trim(e=_t.string.trim){return this.transform(r=>r!=null?r.trim():r).test({message:e,name:"trim",test:wI})}lowercase(e=_t.string.lowercase){return this.transform(r=>(0,Ut.default)(r)?r:r.toLowerCase()).test({message:e,name:"string_case",exclusive:!0,test:r=>(0,Ut.default)(r)||r===r.toLowerCase()})}uppercase(e=_t.string.uppercase){return this.transform(r=>(0,Ut.default)(r)?r:r.toUpperCase()).test({message:e,name:"string_case",exclusive:!0,test:r=>(0,Ut.default)(r)||r===r.toUpperCase()})}};Ki.default=qi;kh.prototype=qi.prototype});var Wh=q(ji=>{"use strict";Object.defineProperty(ji,"__esModule",{value:!0});ji.create=Bh;ji.default=void 0;var kr=vt(),Mr=Fh(bn()),RI=Fh(Nt());function Fh(t){return t&&t.__esModule?t:{default:t}}s(Fh,"_interopRequireDefault");var CI=s(t=>t!=+t,"isNaN");function Bh(){return new Qi}s(Bh,"create");var Qi=class extends RI.default{static{s(this,"NumberSchema")}constructor(){super({type:"number"}),this.withMutation(()=>{this.transform(function(e){let r=e;if(typeof r=="string"){if(r=r.replace(/\s/g,""),r==="")return NaN;r=+r}return this.isType(r)?r:parseFloat(r)})})}_typeCheck(e){return e instanceof Number&&(e=e.valueOf()),typeof e=="number"&&!CI(e)}min(e,r=kr.number.min){return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(n){return(0,Mr.default)(n)||n>=this.resolve(e)}})}max(e,r=kr.number.max){return this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(n){return(0,Mr.default)(n)||n<=this.resolve(e)}})}lessThan(e,r=kr.number.lessThan){return this.test({message:r,name:"max",exclusive:!0,params:{less:e},test(n){return(0,Mr.default)(n)||n<this.resolve(e)}})}moreThan(e,r=kr.number.moreThan){return this.test({message:r,name:"min",exclusive:!0,params:{more:e},test(n){return(0,Mr.default)(n)||n>this.resolve(e)}})}positive(e=kr.number.positive){return this.moreThan(0,e)}negative(e=kr.number.negative){return this.lessThan(0,e)}integer(e=kr.number.integer){return this.test({name:"integer",message:e,test:r=>(0,Mr.default)(r)||Number.isInteger(r)})}truncate(){return this.transform(e=>(0,Mr.default)(e)?e:e|0)}round(e){var r,n=["ceil","floor","round","trunc"];if(e=((r=e)==null?void 0:r.toLowerCase())||"round",e==="trunc")return this.truncate();if(n.indexOf(e.toLowerCase())===-1)throw new TypeError("Only valid options for round() are: "+n.join(", "));return this.transform(i=>(0,Mr.default)(i)?i:Math[e](i))}};ji.default=Qi;Bh.prototype=Qi.prototype});var $h=q(nl=>{"use strict";Object.defineProperty(nl,"__esModule",{value:!0});nl.default=xI;var bI=/^(\d{4}|[+\-]\d{6})(?:-?(\d{2})(?:-?(\d{2}))?)?(?:[ T]?(\d{2}):?(\d{2})(?::?(\d{2})(?:[,\.](\d{1,}))?)?(?:(Z)|([+\-])(\d{2})(?::?(\d{2}))?)?)?$/;function xI(t){var e=[1,4,5,6,7,10,11],r=0,n,i;if(i=bI.exec(t)){for(var o=0,a;a=e[o];++o)i[a]=+i[a]||0;i[2]=(+i[2]||1)-1,i[3]=+i[3]||1,i[7]=i[7]?String(i[7]).substr(0,3):0,(i[8]===void 0||i[8]==="")&&(i[9]===void 0||i[9]==="")?n=+new Date(i[1],i[2],i[3],i[4],i[5],i[6],i[7]):(i[8]!=="Z"&&i[9]!==void 0&&(r=i[10]*60+i[11],i[9]==="+"&&(r=0-r)),n=Date.UTC(i[1],i[2],i[3],i[4],i[5]+r,i[6],i[7]))}else n=Date.parse?Date.parse(t):NaN;return n}s(xI,"parseIsoDate")});var qh=q(Yi=>{"use strict";Object.defineProperty(Yi,"__esModule",{value:!0});Yi.create=sl;Yi.default=void 0;var vI=sa($h()),Vh=vt(),Gh=sa(bn()),PI=sa(Lr()),NI=sa(Nt());function sa(t){return t&&t.__esModule?t:{default:t}}s(sa,"_interopRequireDefault");var il=new Date(""),UI=s(t=>Object.prototype.toString.call(t)==="[object Date]","isDate");function sl(){return new xn}s(sl,"create");var xn=class extends NI.default{static{s(this,"DateSchema")}constructor(){super({type:"date"}),this.withMutation(()=>{this.transform(function(e){return this.isType(e)?e:(e=(0,vI.default)(e),isNaN(e)?il:new Date(e))})})}_typeCheck(e){return UI(e)&&!isNaN(e.getTime())}prepareParam(e,r){let n;if(PI.default.isRef(e))n=e;else{let i=this.cast(e);if(!this._typeCheck(i))throw new TypeError(`\`${r}\` must be a Date or a value that can be \`cast()\` to a Date`);n=i}return n}min(e,r=Vh.date.min){let n=this.prepareParam(e,"min");return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(i){return(0,Gh.default)(i)||i>=this.resolve(n)}})}max(e,r=Vh.date.max){var n=this.prepareParam(e,"max");return this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(i){return(0,Gh.default)(i)||i<=this.resolve(n)}})}};Yi.default=xn;xn.INVALID_DATE=il;sl.prototype=xn.prototype;sl.INVALID_DATE=il});var Qh=q((KM,ol)=>{"use strict";ol.exports=function(t){return Kh(LI(t),t)};ol.exports.array=Kh;function Kh(t,e){var r=t.length,n=new Array(r),i={},o=r,a=kI(e),u=MI(t);for(e.forEach(function(l){if(!u.has(l[0])||!u.has(l[1]))throw new Error("Unknown node. There is an unknown node in the supplied edges.")});o--;)i[o]||c(t[o],o,new Set);return n;function c(l,d,f){if(f.has(l)){var p;try{p=", node was:"+JSON.stringify(l)}catch{p=""}throw new Error("Cyclic dependency"+p)}if(!u.has(l))throw new Error("Found unknown node. Make sure to provided all involved nodes. Unknown node: "+JSON.stringify(l));if(!i[d]){i[d]=!0;var m=a.get(l)||new Set;if(m=Array.from(m),d=m.length){f.add(l);do{var h=m[--d];c(h,u.get(h),f)}while(d);f.delete(l)}n[--r]=l}}}s(Kh,"toposort");function LI(t){for(var e=new Set,r=0,n=t.length;r<n;r++){var i=t[r];e.add(i[0]),e.add(i[1])}return Array.from(e)}s(LI,"uniqueNodes");function kI(t){for(var e=new Map,r=0,n=t.length;r<n;r++){var i=t[r];e.has(i[0])||e.set(i[0],new Set),e.has(i[1])||e.set(i[1],new Set),e.get(i[0]).add(i[1])}return e}s(kI,"makeOutgoingEdges");function MI(t){for(var e=new Map,r=0,n=t.length;r<n;r++)e.set(t[r],r);return e}s(MI,"makeNodesHash")});var jh=q(al=>{"use strict";Object.defineProperty(al,"__esModule",{value:!0});al.default=GI;var FI=oa(require("lodash/has")),BI=oa(Qh()),WI=Mi(),$I=oa(Lr()),VI=oa(Rn());function oa(t){return t&&t.__esModule?t:{default:t}}s(oa,"_interopRequireDefault");function GI(t,e=[]){let r=[],n=[];function i(o,a){var u=(0,WI.split)(o)[0];~n.indexOf(u)||n.push(u),~e.indexOf(`${a}-${u}`)||r.push([a,u])}s(i,"addNode");for(let o in t)if((0,FI.default)(t,o)){let a=t[o];~n.indexOf(o)||n.push(o),$I.default.isRef(a)&&a.isSibling?i(a.path,o):(0,VI.default)(a)&&"deps"in a&&a.deps.forEach(u=>i(u,o))}return BI.default.array(n,r).reverse()}s(GI,"sortFields")});var Hh=q(ul=>{"use strict";Object.defineProperty(ul,"__esModule",{value:!0});ul.default=qI;function Yh(t,e){let r=1/0;return t.some((n,i)=>{var o;if(((o=e.path)==null?void 0:o.indexOf(n))!==-1)return r=i,!0}),r}s(Yh,"findIndex");function qI(t){return(e,r)=>Yh(t,e)-Yh(t,r)}s(qI,"sortByKeyOrder")});var rE=q(zi=>{"use strict";Object.defineProperty(zi,"__esModule",{value:!0});zi.create=tE;zi.default=void 0;var zh=Ot(require("lodash/has")),Jh=Ot(require("lodash/snakeCase")),KI=Ot(require("lodash/camelCase")),QI=Ot(require("lodash/mapKeys")),jI=Ot(require("lodash/mapValues")),YI=Mi(),Zh=vt(),HI=Ot(jh()),eE=Ot(Hh()),zI=Ot(Jo()),JI=Ot(Nr()),cl=Ot(Nt());function Ot(t){return t&&t.__esModule?t:{default:t}}s(Ot,"_interopRequireDefault");function vn(){return vn=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},vn.apply(this,arguments)}s(vn,"_extends");var Xh=s(t=>Object.prototype.toString.call(t)==="[object Object]","isObject");function ZI(t,e){let r=Object.keys(t.fields);return Object.keys(e).filter(n=>r.indexOf(n)===-1)}s(ZI,"unknown");var XI=(0,eE.default)([]),Hi=class extends cl.default{static{s(this,"ObjectSchema")}constructor(e){super({type:"object"}),this.fields=Object.create(null),this._sortErrors=XI,this._nodes=[],this._excludedEdges=[],this.withMutation(()=>{this.transform(s(function(n){if(typeof n=="string")try{n=JSON.parse(n)}catch{n=null}return this.isType(n)?n:null},"coerce")),e&&this.shape(e)})}_typeCheck(e){return Xh(e)||typeof e=="function"}_cast(e,r={}){var n;let i=super._cast(e,r);if(i===void 0)return this.getDefault();if(!this._typeCheck(i))return i;let o=this.fields,a=(n=r.stripUnknown)!=null?n:this.spec.noUnknown,u=this._nodes.concat(Object.keys(i).filter(f=>this._nodes.indexOf(f)===-1)),c={},l=vn({},r,{parent:c,__validating:r.__validating||!1}),d=!1;for(let f of u){let p=o[f],m=(0,zh.default)(i,f);if(p){let h,g=i[f];l.path=(r.path?`${r.path}.`:"")+f,p=p.resolve({value:g,context:r.context,parent:c});let y="spec"in p?p.spec:void 0,S=y?.strict;if(y?.strip){d=d||f in i;continue}h=!r.__validating||!S?p.cast(i[f],l):i[f],h!==void 0&&(c[f]=h)}else m&&!a&&(c[f]=i[f]);c[f]!==i[f]&&(d=!0)}return d?c:i}_validate(e,r={},n){let i=[],{sync:o,from:a=[],originalValue:u=e,abortEarly:c=this.spec.abortEarly,recursive:l=this.spec.recursive}=r;a=[{schema:this,value:u},...a],r.__validating=!0,r.originalValue=u,r.from=a,super._validate(e,r,(d,f)=>{if(d){if(!JI.default.isError(d)||c)return void n(d,f);i.push(d)}if(!l||!Xh(f)){n(i[0]||null,f);return}u=u||f;let p=this._nodes.map(m=>(h,g)=>{let y=m.indexOf(".")===-1?(r.path?`${r.path}.`:"")+m:`${r.path||""}["${m}"]`,S=this.fields[m];if(S&&"validate"in S){S.validate(f[m],vn({},r,{path:y,from:a,strict:!0,parent:f,originalValue:u[m]}),g);return}g(null)});(0,zI.default)({sync:o,tests:p,value:f,errors:i,endEarly:c,sort:this._sortErrors,path:r.path},n)})}clone(e){let r=super.clone(e);return r.fields=vn({},this.fields),r._nodes=this._nodes,r._excludedEdges=this._excludedEdges,r._sortErrors=this._sortErrors,r}concat(e){let r=super.concat(e),n=r.fields;for(let[i,o]of Object.entries(this.fields)){let a=n[i];a===void 0?n[i]=o:a instanceof cl.default&&o instanceof cl.default&&(n[i]=o.concat(a))}return r.withMutation(()=>r.shape(n))}getDefaultFromShape(){let e={};return this._nodes.forEach(r=>{let n=this.fields[r];e[r]="default"in n?n.getDefault():void 0}),e}_getDefault(){if("default"in this.spec)return super._getDefault();if(this._nodes.length)return this.getDefaultFromShape()}shape(e,r=[]){let n=this.clone(),i=Object.assign(n.fields,e);if(n.fields=i,n._sortErrors=(0,eE.default)(Object.keys(i)),r.length){Array.isArray(r[0])||(r=[r]);let o=r.map(([a,u])=>`${a}-${u}`);n._excludedEdges=n._excludedEdges.concat(o)}return n._nodes=(0,HI.default)(i,n._excludedEdges),n}pick(e){let r={};for(let n of e)this.fields[n]&&(r[n]=this.fields[n]);return this.clone().withMutation(n=>(n.fields={},n.shape(r)))}omit(e){let r=this.clone(),n=r.fields;r.fields={};for(let i of e)delete n[i];return r.withMutation(()=>r.shape(n))}from(e,r,n){let i=(0,YI.getter)(e,!0);return this.transform(o=>{if(o==null)return o;let a=o;return(0,zh.default)(o,e)&&(a=vn({},o),n||delete a[e],a[r]=i(o)),a})}noUnknown(e=!0,r=Zh.object.noUnknown){typeof e=="string"&&(r=e,e=!0);let n=this.test({name:"noUnknown",exclusive:!0,message:r,test(i){if(i==null)return!0;let o=ZI(this.schema,i);return!e||o.length===0||this.createError({params:{unknown:o.join(", ")}})}});return n.spec.noUnknown=e,n}unknown(e=!0,r=Zh.object.noUnknown){return this.noUnknown(!e,r)}transformKeys(e){return this.transform(r=>r&&(0,QI.default)(r,(n,i)=>e(i)))}camelCase(){return this.transformKeys(KI.default)}snakeCase(){return this.transformKeys(Jh.default)}constantCase(){return this.transformKeys(e=>(0,Jh.default)(e).toUpperCase())}describe(){let e=super.describe();return e.fields=(0,jI.default)(this.fields,r=>r.describe()),e}};zi.default=Hi;function tE(t){return new Hi(t)}s(tE,"create");tE.prototype=Hi.prototype});var iE=q(Zi=>{"use strict";Object.defineProperty(Zi,"__esModule",{value:!0});Zi.create=nE;Zi.default=void 0;var ll=Pn(bn()),ew=Pn(Rn()),tw=Pn(ki()),dl=vt(),rw=Pn(Jo()),nw=Pn(Nr()),iw=Pn(Nt());function Pn(t){return t&&t.__esModule?t:{default:t}}s(Pn,"_interopRequireDefault");function aa(){return aa=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},aa.apply(this,arguments)}s(aa,"_extends");function nE(t){return new Ji(t)}s(nE,"create");var Ji=class extends iw.default{static{s(this,"ArraySchema")}constructor(e){super({type:"array"}),this.innerType=e,this.withMutation(()=>{this.transform(function(r){if(typeof r=="string")try{r=JSON.parse(r)}catch{r=null}return this.isType(r)?r:null})})}_typeCheck(e){return Array.isArray(e)}get _subType(){return this.innerType}_cast(e,r){let n=super._cast(e,r);if(!this._typeCheck(n)||!this.innerType)return n;let i=!1,o=n.map((a,u)=>{let c=this.innerType.cast(a,aa({},r,{path:`${r.path||""}[${u}]`}));return c!==a&&(i=!0),c});return i?o:n}_validate(e,r={},n){var i,o;let a=[],u=r.sync,c=r.path,l=this.innerType,d=(i=r.abortEarly)!=null?i:this.spec.abortEarly,f=(o=r.recursive)!=null?o:this.spec.recursive,p=r.originalValue!=null?r.originalValue:e;super._validate(e,r,(m,h)=>{if(m){if(!nw.default.isError(m)||d)return void n(m,h);a.push(m)}if(!f||!l||!this._typeCheck(h)){n(a[0]||null,h);return}p=p||h;let g=new Array(h.length);for(let y=0;y<h.length;y++){let S=h[y],O=`${r.path||""}[${y}]`,_=aa({},r,{path:O,strict:!0,parent:h,index:y,originalValue:p[y]});g[y]=(D,T)=>l.validate(S,_,T)}(0,rw.default)({sync:u,path:c,value:h,errors:a,endEarly:d,tests:g},n)})}clone(e){let r=super.clone(e);return r.innerType=this.innerType,r}concat(e){let r=super.concat(e);return r.innerType=this.innerType,e.innerType&&(r.innerType=r.innerType?r.innerType.concat(e.innerType):e.innerType),r}of(e){let r=this.clone();if(!(0,ew.default)(e))throw new TypeError("`array.of()` sub-schema must be a valid yup schema not: "+(0,tw.default)(e));return r.innerType=e,r}length(e,r=dl.array.length){return this.test({message:r,name:"length",exclusive:!0,params:{length:e},test(n){return(0,ll.default)(n)||n.length===this.resolve(e)}})}min(e,r){return r=r||dl.array.min,this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(n){return(0,ll.default)(n)||n.length>=this.resolve(e)}})}max(e,r){return r=r||dl.array.max,this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(n){return(0,ll.default)(n)||n.length<=this.resolve(e)}})}ensure(){return this.default(()=>[]).transform((e,r)=>this._typeCheck(e)?e:r==null?[]:[].concat(r))}compact(e){let r=e?(n,i,o)=>!e(n,i,o):n=>!!n;return this.transform(n=>n!=null?n.filter(r):n)}describe(){let e=super.describe();return this.innerType&&(e.innerType=this.innerType.describe()),e}nullable(e=!0){return super.nullable(e)}defined(){return super.defined()}required(e){return super.required(e)}};Zi.default=Ji;nE.prototype=Ji.prototype});var sE=q(Xi=>{"use strict";Object.defineProperty(Xi,"__esModule",{value:!0});Xi.create=aw;Xi.default=void 0;var sw=ow(Rn());function ow(t){return t&&t.__esModule?t:{default:t}}s(ow,"_interopRequireDefault");function aw(t){return new ua(t)}s(aw,"create");var ua=class{static{s(this,"Lazy")}constructor(e){this.type="lazy",this.__isYupSchema__=!0,this._resolve=(r,n={})=>{let i=this.builder(r,n);if(!(0,sw.default)(i))throw new TypeError("lazy() functions must return a valid schema");return i.resolve(n)},this.builder=e}resolve(e){return this._resolve(e.value,e)}cast(e,r){return this._resolve(e,r).cast(e,r)}validate(e,r,n){return this._resolve(e,r).validate(e,r,n)}validateSync(e,r){return this._resolve(e,r).validateSync(e,r)}validateAt(e,r,n){return this._resolve(r,n).validateAt(e,r,n)}validateSyncAt(e,r,n){return this._resolve(r,n).validateSyncAt(e,r,n)}describe(){return null}isValid(e,r){return this._resolve(e,r).isValid(e,r)}isValidSync(e,r){return this._resolve(e,r).isValidSync(e,r)}},uw=ua;Xi.default=uw});var oE=q(fl=>{"use strict";Object.defineProperty(fl,"__esModule",{value:!0});fl.default=dw;var cw=lw(vt());function lw(t){return t&&t.__esModule?t:{default:t}}s(lw,"_interopRequireDefault");function dw(t){Object.keys(t).forEach(e=>{Object.keys(t[e]).forEach(r=>{cw.default[e][r]=t[e][r]})})}s(dw,"setLocale")});var ml=q(te=>{"use strict";Object.defineProperty(te,"__esModule",{value:!0});te.addMethod=yw;Object.defineProperty(te,"MixedSchema",{enumerable:!0,get:function(){return aE.default}});Object.defineProperty(te,"mixed",{enumerable:!0,get:function(){return aE.create}});Object.defineProperty(te,"BooleanSchema",{enumerable:!0,get:function(){return pl.default}});Object.defineProperty(te,"bool",{enumerable:!0,get:function(){return pl.create}});Object.defineProperty(te,"boolean",{enumerable:!0,get:function(){return pl.create}});Object.defineProperty(te,"StringSchema",{enumerable:!0,get:function(){return uE.default}});Object.defineProperty(te,"string",{enumerable:!0,get:function(){return uE.create}});Object.defineProperty(te,"NumberSchema",{enumerable:!0,get:function(){return cE.default}});Object.defineProperty(te,"number",{enumerable:!0,get:function(){return cE.create}});Object.defineProperty(te,"DateSchema",{enumerable:!0,get:function(){return lE.default}});Object.defineProperty(te,"date",{enumerable:!0,get:function(){return lE.create}});Object.defineProperty(te,"ObjectSchema",{enumerable:!0,get:function(){return dE.default}});Object.defineProperty(te,"object",{enumerable:!0,get:function(){return dE.create}});Object.defineProperty(te,"ArraySchema",{enumerable:!0,get:function(){return fE.default}});Object.defineProperty(te,"array",{enumerable:!0,get:function(){return fE.create}});Object.defineProperty(te,"ref",{enumerable:!0,get:function(){return fw.create}});Object.defineProperty(te,"lazy",{enumerable:!0,get:function(){return pw.create}});Object.defineProperty(te,"ValidationError",{enumerable:!0,get:function(){return mw.default}});Object.defineProperty(te,"reach",{enumerable:!0,get:function(){return hw.default}});Object.defineProperty(te,"isSchema",{enumerable:!0,get:function(){return pE.default}});Object.defineProperty(te,"setLocale",{enumerable:!0,get:function(){return Ew.default}});Object.defineProperty(te,"BaseSchema",{enumerable:!0,get:function(){return gw.default}});var aE=Fr(bh()),pl=Fr(Uh()),uE=Fr(Mh()),cE=Fr(Wh()),lE=Fr(qh()),dE=Fr(rE()),fE=Fr(iE()),fw=Lr(),pw=sE(),mw=es(Nr()),hw=es(el()),pE=es(Rn()),Ew=es(oE()),gw=es(Nt());function es(t){return t&&t.__esModule?t:{default:t}}s(es,"_interopRequireDefault");function mE(){if(typeof WeakMap!="function")return null;var t=new WeakMap;return mE=s(function(){return t},"_getRequireWildcardCache"),t}s(mE,"_getRequireWildcardCache");function Fr(t){if(t&&t.__esModule)return t;if(t===null||typeof t!="object"&&typeof t!="function")return{default:t};var e=mE();if(e&&e.has(t))return e.get(t);var r={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in t)if(Object.prototype.hasOwnProperty.call(t,i)){var o=n?Object.getOwnPropertyDescriptor(t,i):null;o&&(o.get||o.set)?Object.defineProperty(r,i,o):r[i]=t[i]}return r.default=t,e&&e.set(t,r),r}s(Fr,"_interopRequireWildcard");function yw(t,e,r){if(!t||!(0,pE.default)(t.prototype))throw new TypeError("You must provide a yup schema constructor function");if(typeof e!="string")throw new TypeError("A Method name must be provided");if(typeof r!="function")throw new TypeError("Method function must be provided");t.prototype[e]=r}s(yw,"addMethod")});var hE=q(El=>{"use strict";Object.defineProperty(El,"__esModule",{value:!0});var hl=gl();El.default=()=>{(0,hl.registerOptionPreset)("npm-node-cron",{presetId:"npm-node-cron",useSeconds:!0,useYears:!1,useAliases:!0,useBlankDay:!1,allowOnlyOneBlankDayField:!1,mustHaveBlankDayField:!1,useLastDayOfMonth:!1,useLastDayOfWeek:!1,useNearestWeekday:!1,useNthWeekdayOfMonth:!1,seconds:{minValue:0,maxValue:59},minutes:{minValue:0,maxValue:59},hours:{minValue:0,maxValue:23},daysOfMonth:{minValue:1,maxValue:31},months:{minValue:0,maxValue:11},daysOfWeek:{minValue:0,maxValue:6},years:{minValue:1970,maxValue:2099}}),(0,hl.registerOptionPreset)("aws-cloud-watch",{presetId:"aws-cloud-watch",useSeconds:!1,useYears:!0,useAliases:!0,useBlankDay:!0,allowOnlyOneBlankDayField:!0,mustHaveBlankDayField:!0,useLastDayOfMonth:!0,useLastDayOfWeek:!0,useNearestWeekday:!0,useNthWeekdayOfMonth:!0,seconds:{minValue:0,maxValue:59},minutes:{minValue:0,maxValue:59},hours:{minValue:0,maxValue:23},daysOfMonth:{minValue:1,maxValue:31},months:{minValue:1,maxValue:12},daysOfWeek:{minValue:1,maxValue:7},years:{minValue:1970,maxValue:2199}}),(0,hl.registerOptionPreset)("npm-cron-schedule",{presetId:"npm-cron-schedule",useSeconds:!0,useYears:!1,useAliases:!0,useBlankDay:!1,allowOnlyOneBlankDayField:!1,mustHaveBlankDayField:!1,useLastDayOfMonth:!1,useLastDayOfWeek:!1,useNearestWeekday:!1,useNthWeekdayOfMonth:!1,seconds:{minValue:0,maxValue:59},minutes:{minValue:0,maxValue:59},hours:{minValue:0,maxValue:23},daysOfMonth:{minValue:1,maxValue:31},months:{minValue:1,maxValue:12},daysOfWeek:{minValue:0,maxValue:7},years:{minValue:1970,maxValue:2099}})}});var gl=q(Ae=>{"use strict";var Tw=Ae&&Ae.__createBinding||(Object.create?function(t,e,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(e,r);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,i)}:function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]}),Sw=Ae&&Ae.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Aw=Ae&&Ae.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&Tw(e,t,r);return Sw(e,t),e},_w=Ae&&Ae.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Ae,"__esModule",{value:!0});Ae.validateOptions=Ae.registerOptionPreset=Ae.getOptionPresets=Ae.getOptionPreset=void 0;var R=Aw(ml());ml();var ts=it(),Ow=_w(hE());st();var Br={default:{presetId:"default",useSeconds:!1,useYears:!1,useAliases:!1,useBlankDay:!1,allowOnlyOneBlankDayField:!1,mustHaveBlankDayField:!1,useLastDayOfMonth:!1,useLastDayOfWeek:!1,useNearestWeekday:!1,useNthWeekdayOfMonth:!1,seconds:{minValue:0,maxValue:59},minutes:{minValue:0,maxValue:59},hours:{minValue:0,maxValue:23},daysOfMonth:{minValue:0,maxValue:31},months:{minValue:0,maxValue:12},daysOfWeek:{minValue:0,maxValue:7},years:{minValue:1970,maxValue:2099}}},EE=R.object({presetId:R.string().required(),useSeconds:R.boolean().required(),useYears:R.boolean().required(),useAliases:R.boolean(),useBlankDay:R.boolean().required(),allowOnlyOneBlankDayField:R.boolean().required(),mustHaveBlankDayField:R.boolean(),useLastDayOfMonth:R.boolean(),useLastDayOfWeek:R.boolean(),useNearestWeekday:R.boolean(),useNthWeekdayOfMonth:R.boolean(),seconds:R.object({minValue:R.number().min(0).required(),maxValue:R.number().min(0).required(),lowerLimit:R.number().min(0),upperLimit:R.number().min(0)}).required(),minutes:R.object({minValue:R.number().min(0).required(),maxValue:R.number().min(0).required(),lowerLimit:R.number().min(0),upperLimit:R.number().min(0)}).required(),hours:R.object({minValue:R.number().min(0).required(),maxValue:R.number().min(0).required(),lowerLimit:R.number().min(0),upperLimit:R.number().min(0)}).required(),daysOfMonth:R.object({minValue:R.number().min(0).required(),maxValue:R.number().min(0).required(),lowerLimit:R.number().min(0),upperLimit:R.number().min(0)}).required(),months:R.object({minValue:R.number().min(0).required(),maxValue:R.number().min(0).required(),lowerLimit:R.number().min(0),upperLimit:R.number().min(0)}).required(),daysOfWeek:R.object({minValue:R.number().min(0).required(),maxValue:R.number().min(0).required(),lowerLimit:R.number().min(0),upperLimit:R.number().min(0)}).required(),years:R.object({minValue:R.number().min(0).required(),maxValue:R.number().min(0).required(),lowerLimit:R.number().min(0),upperLimit:R.number().min(0)}).required()}).required(),Iw=s(t=>Br[t]?(0,ts.valid)(Br[t]):(0,ts.err)(`Option preset '${t}' not found.`),"getOptionPreset");Ae.getOptionPreset=Iw;var ww=s(()=>Br,"getOptionPresets");Ae.getOptionPresets=ww;var Dw=s((t,e)=>{Br[t]=EE.validateSync(e,{strict:!1,abortEarly:!1,stripUnknown:!0,recursive:!0})},"registerOptionPreset");Ae.registerOptionPreset=Dw;var Rw=s(t=>{var e,r,n,i,o,a,u,c,l,d,f,p,m,h,g,y,S,O,_,D;try{(0,Ow.default)();let T;if(t.preset)if(typeof t.preset=="string"){if(!Br[t.preset])return(0,ts.err)([`Option preset ${t.preset} does not exist.`]);T=Br[t.preset]}else T=t.preset;else T=Br.default;let I=Object.assign(Object.assign({presetId:T.presetId,preset:T},{useSeconds:T.useSeconds,useYears:T.useYears,useAliases:(e=T.useAliases)!==null&&e!==void 0?e:!1,useBlankDay:T.useBlankDay,allowOnlyOneBlankDayField:T.allowOnlyOneBlankDayField,mustHaveBlankDayField:(r=T.mustHaveBlankDayField)!==null&&r!==void 0?r:!1,useLastDayOfMonth:(n=T.useLastDayOfMonth)!==null&&n!==void 0?n:!1,useLastDayOfWeek:(i=T.useLastDayOfWeek)!==null&&i!==void 0?i:!1,useNearestWeekday:(o=T.useNearestWeekday)!==null&&o!==void 0?o:!1,useNthWeekdayOfMonth:(a=T.useNthWeekdayOfMonth)!==null&&a!==void 0?a:!1,seconds:{lowerLimit:(u=T.seconds.lowerLimit)!==null&&u!==void 0?u:T.seconds.minValue,upperLimit:(c=T.seconds.upperLimit)!==null&&c!==void 0?c:T.seconds.maxValue},minutes:{lowerLimit:(l=T.minutes.lowerLimit)!==null&&l!==void 0?l:T.minutes.minValue,upperLimit:(d=T.minutes.upperLimit)!==null&&d!==void 0?d:T.minutes.maxValue},hours:{lowerLimit:(f=T.hours.lowerLimit)!==null&&f!==void 0?f:T.hours.minValue,upperLimit:(p=T.hours.upperLimit)!==null&&p!==void 0?p:T.hours.maxValue},daysOfMonth:{lowerLimit:(m=T.daysOfMonth.lowerLimit)!==null&&m!==void 0?m:T.daysOfMonth.minValue,upperLimit:(h=T.daysOfMonth.upperLimit)!==null&&h!==void 0?h:T.daysOfMonth.maxValue},months:{lowerLimit:(g=T.months.lowerLimit)!==null&&g!==void 0?g:T.months.minValue,upperLimit:(y=T.months.upperLimit)!==null&&y!==void 0?y:T.months.maxValue},daysOfWeek:{lowerLimit:(S=T.daysOfWeek.lowerLimit)!==null&&S!==void 0?S:T.daysOfWeek.minValue,upperLimit:(O=T.daysOfWeek.upperLimit)!==null&&O!==void 0?O:T.daysOfWeek.maxValue},years:{lowerLimit:(_=T.years.lowerLimit)!==null&&_!==void 0?_:T.years.minValue,upperLimit:(D=T.years.upperLimit)!==null&&D!==void 0?D:T.years.maxValue}}),t.override),P=R.object({presetId:R.string().required(),preset:EE.required(),useSeconds:R.boolean().required(),useYears:R.boolean().required(),useAliases:R.boolean(),useBlankDay:R.boolean().required(),allowOnlyOneBlankDayField:R.boolean().required(),mustHaveBlankDayField:R.boolean(),useLastDayOfMonth:R.boolean(),useLastDayOfWeek:R.boolean(),useNearestWeekday:R.boolean(),useNthWeekdayOfMonth:R.boolean(),seconds:R.object({lowerLimit:R.number().min(T.seconds.minValue).max(T.seconds.maxValue),upperLimit:R.number().min(T.seconds.minValue).max(T.seconds.maxValue)}).required(),minutes:R.object({lowerLimit:R.number().min(T.minutes.minValue).max(T.minutes.maxValue),upperLimit:R.number().min(T.minutes.minValue).max(T.minutes.maxValue)}).required(),hours:R.object({lowerLimit:R.number().min(T.hours.minValue).max(T.hours.maxValue),upperLimit:R.number().min(T.hours.minValue).max(T.hours.maxValue)}).required(),daysOfMonth:R.object({lowerLimit:R.number().min(T.daysOfMonth.minValue).max(T.daysOfMonth.maxValue),upperLimit:R.number().min(T.daysOfMonth.minValue).max(T.daysOfMonth.maxValue)}).required(),months:R.object({lowerLimit:R.number().min(T.months.minValue).max(T.months.maxValue),upperLimit:R.number().min(T.months.minValue).max(T.months.maxValue)}).required(),daysOfWeek:R.object({lowerLimit:R.number().min(T.daysOfWeek.minValue).max(T.daysOfWeek.maxValue),upperLimit:R.number().min(T.daysOfWeek.minValue).max(T.daysOfWeek.maxValue)}).required(),years:R.object({lowerLimit:R.number().min(T.years.minValue).max(T.years.maxValue),upperLimit:R.number().min(T.years.minValue).max(T.years.maxValue)}).required()}).required().validateSync(I,{strict:!1,abortEarly:!1,stripUnknown:!0,recursive:!0});return(0,ts.valid)(P)}catch(T){return(0,ts.err)(T.errors)}},"validateOptions");Ae.validateOptions=Rw});var At=q((rs,Tl)=>{"use strict";var $r=rs&&rs.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(rs,"__esModule",{value:!0});var Wr=it(),Cw=$r(Km()),bw=$r(Qm()),xw=$r(jm()),vw=$r(Ym()),Pw=$r(Hm()),Nw=$r(zm()),Uw=$r(Jm()),Lw=gl();st();var kw=s((t,e)=>{let r=t.trim().split(" ");if(e.useSeconds&&e.useYears&&r.length!==7)return(0,Wr.err)(`Expected 7 values, but got ${r.length}.`);if((e.useSeconds&&!e.useYears||e.useYears&&!e.useSeconds)&&r.length!==6)return(0,Wr.err)(`Expected 6 values, but got ${r.length}.`);if(!e.useSeconds&&!e.useYears&&r.length!==5)return(0,Wr.err)(`Expected 5 values, but got ${r.length}.`);let n={seconds:e.useSeconds?r[0]:void 0,minutes:r[e.useSeconds?1:0],hours:r[e.useSeconds?2:1],daysOfMonth:r[e.useSeconds?3:2],months:r[e.useSeconds?4:3],daysOfWeek:r[e.useSeconds?5:4],years:e.useYears?r[e.useSeconds?6:5]:void 0};return(0,Wr.valid)(n)},"splitCronString"),yl=s((t,e={})=>{let r=(0,Lw.validateOptions)(e);if(r.isError())return r;let n=r.getValue(),i=kw(t,n);if(i.isError())return(0,Wr.err)([`${i.getError()} (Input cron: '${t}')`]);let o=i.getValue(),a=[];if(n.useSeconds&&a.push((0,Cw.default)(o,n)),a.push((0,bw.default)(o,n)),a.push((0,xw.default)(o,n)),a.push((0,vw.default)(o,n)),a.push((0,Pw.default)(o,n)),a.push((0,Nw.default)(o,n)),n.useYears&&a.push((0,Uw.default)(o,n)),a.every(c=>c.isValid()))return(0,Wr.valid)(o);let u=[];return a.forEach(c=>{c.isError()&&c.getError().forEach(l=>{u.push(l)})}),u.forEach((c,l)=>{u[l]=`${c} (Input cron: '${t}')`}),(0,Wr.err)(u)},"cron");rs.default=yl;Tl.exports=yl;Tl.exports.default=yl});var Qg=q(qe=>{"use strict";Object.defineProperty(qe,"__esModule",{value:!0});var kt=class extends Error{static{s(this,"LuxonError")}},bl=class extends kt{static{s(this,"InvalidDateTimeError")}constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}},xl=class extends kt{static{s(this,"InvalidIntervalError")}constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}},vl=class extends kt{static{s(this,"InvalidDurationError")}constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}},sr=class extends kt{static{s(this,"ConflictingSpecificationError")}},Ea=class extends kt{static{s(this,"InvalidUnitError")}constructor(e){super(`Invalid unit ${e}`)}},_e=class extends kt{static{s(this,"InvalidArgumentError")}},It=class extends kt{static{s(this,"ZoneIsAbstractError")}constructor(){super("Zone is an abstract class")}},x="numeric",ct="short",Ve="long",ga={year:x,month:x,day:x},jE={year:x,month:ct,day:x},Mw={year:x,month:ct,day:x,weekday:ct},YE={year:x,month:Ve,day:x},HE={year:x,month:Ve,day:x,weekday:Ve},zE={hour:x,minute:x},JE={hour:x,minute:x,second:x},ZE={hour:x,minute:x,second:x,timeZoneName:ct},XE={hour:x,minute:x,second:x,timeZoneName:Ve},eg={hour:x,minute:x,hourCycle:"h23"},tg={hour:x,minute:x,second:x,hourCycle:"h23"},rg={hour:x,minute:x,second:x,hourCycle:"h23",timeZoneName:ct},ng={hour:x,minute:x,second:x,hourCycle:"h23",timeZoneName:Ve},ig={year:x,month:x,day:x,hour:x,minute:x},sg={year:x,month:x,day:x,hour:x,minute:x,second:x},og={year:x,month:ct,day:x,hour:x,minute:x},ag={year:x,month:ct,day:x,hour:x,minute:x,second:x},Fw={year:x,month:ct,day:x,weekday:ct,hour:x,minute:x},ug={year:x,month:Ve,day:x,hour:x,minute:x,timeZoneName:ct},cg={year:x,month:Ve,day:x,hour:x,minute:x,second:x,timeZoneName:ct},lg={year:x,month:Ve,day:x,weekday:Ve,hour:x,minute:x,timeZoneName:Ve},dg={year:x,month:Ve,day:x,weekday:Ve,hour:x,minute:x,second:x,timeZoneName:Ve},ar=class{static{s(this,"Zone")}get type(){throw new It}get name(){throw new It}get ianaName(){return this.name}get isUniversal(){throw new It}offsetName(e,r){throw new It}formatOffset(e,r){throw new It}offset(e){throw new It}equals(e){throw new It}get isValid(){throw new It}},Sl=null,us=class t extends ar{static{s(this,"SystemZone")}static get instance(){return Sl===null&&(Sl=new t),Sl}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:r,locale:n}){return _g(e,r,n)}formatOffset(e,r){return as(this.offset(e),r)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}},Pl=new Map;function Bw(t){let e=Pl.get(t);return e===void 0&&(e=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:t,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"}),Pl.set(t,e)),e}s(Bw,"makeDTF");var Ww={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function $w(t,e){let r=t.format(e).replace(/\u200E/g,""),n=/(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(r),[,i,o,a,u,c,l,d]=n;return[a,i,o,u,c,l,d]}s($w,"hackyOffset");function Vw(t,e){let r=t.formatToParts(e),n=[];for(let i=0;i<r.length;i++){let{type:o,value:a}=r[i],u=Ww[o];o==="era"?n[u]=a:Q(u)||(n[u]=parseInt(a,10))}return n}s(Vw,"partsOffset");var Al=new Map,Mt=class t extends ar{static{s(this,"IANAZone")}static create(e){let r=Al.get(e);return r===void 0&&Al.set(e,r=new t(e)),r}static resetCache(){Al.clear(),Pl.clear()}static isValidSpecifier(e){return this.isValidZone(e)}static isValidZone(e){if(!e)return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),!0}catch{return!1}}constructor(e){super(),this.zoneName=e,this.valid=t.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:r,locale:n}){return _g(e,r,n,this.name)}formatOffset(e,r){return as(this.offset(e),r)}offset(e){if(!this.valid)return NaN;let r=new Date(e);if(isNaN(r))return NaN;let n=Bw(this.name),[i,o,a,u,c,l,d]=n.formatToParts?Vw(n,r):$w(n,r);u==="BC"&&(i=-Math.abs(i)+1);let p=Ia({year:i,month:o,day:a,hour:c===24?0:c,minute:l,second:d,millisecond:0}),m=+r,h=m%1e3;return m-=h>=0?h:1e3+h,(p-m)/(60*1e3)}equals(e){return e.type==="iana"&&e.name===this.name}get isValid(){return this.valid}},gE={};function Gw(t,e={}){let r=JSON.stringify([t,e]),n=gE[r];return n||(n=new Intl.ListFormat(t,e),gE[r]=n),n}s(Gw,"getCachedLF");var Nl=new Map;function Ul(t,e={}){let r=JSON.stringify([t,e]),n=Nl.get(r);return n===void 0&&(n=new Intl.DateTimeFormat(t,e),Nl.set(r,n)),n}s(Ul,"getCachedDTF");var Ll=new Map;function qw(t,e={}){let r=JSON.stringify([t,e]),n=Ll.get(r);return n===void 0&&(n=new Intl.NumberFormat(t,e),Ll.set(r,n)),n}s(qw,"getCachedINF");var kl=new Map;function Kw(t,e={}){let{base:r,...n}=e,i=JSON.stringify([t,n]),o=kl.get(i);return o===void 0&&(o=new Intl.RelativeTimeFormat(t,e),kl.set(i,o)),o}s(Kw,"getCachedRTF");var is=null;function Qw(){return is||(is=new Intl.DateTimeFormat().resolvedOptions().locale,is)}s(Qw,"systemLocale");var Ml=new Map;function fg(t){let e=Ml.get(t);return e===void 0&&(e=new Intl.DateTimeFormat(t).resolvedOptions(),Ml.set(t,e)),e}s(fg,"getCachedIntResolvedOptions");var Fl=new Map;function jw(t){let e=Fl.get(t);if(!e){let r=new Intl.Locale(t);e="getWeekInfo"in r?r.getWeekInfo():r.weekInfo,"minimalDays"in e||(e={...pg,...e}),Fl.set(t,e)}return e}s(jw,"getCachedWeekInfo");function Yw(t){let e=t.indexOf("-x-");e!==-1&&(t=t.substring(0,e));let r=t.indexOf("-u-");if(r===-1)return[t];{let n,i;try{n=Ul(t).resolvedOptions(),i=t}catch{let c=t.substring(0,r);n=Ul(c).resolvedOptions(),i=c}let{numberingSystem:o,calendar:a}=n;return[i,o,a]}}s(Yw,"parseLocaleString");function Hw(t,e,r){return(r||e)&&(t.includes("-u-")||(t+="-u"),r&&(t+=`-ca-${r}`),e&&(t+=`-nu-${e}`)),t}s(Hw,"intlConfigString");function zw(t){let e=[];for(let r=1;r<=12;r++){let n=oe.utc(2009,r,1);e.push(t(n))}return e}s(zw,"mapMonths");function Jw(t){let e=[];for(let r=1;r<=7;r++){let n=oe.utc(2016,11,13+r);e.push(t(n))}return e}s(Jw,"mapWeekdays");function ca(t,e,r,n){let i=t.listingMode();return i==="error"?null:i==="en"?r(e):n(e)}s(ca,"listStuff");function Zw(t){return t.numberingSystem&&t.numberingSystem!=="latn"?!1:t.numberingSystem==="latn"||!t.locale||t.locale.startsWith("en")||fg(t.locale).numberingSystem==="latn"}s(Zw,"supportsFastNumbers");var Bl=class{static{s(this,"PolyNumberFormatter")}constructor(e,r,n){this.padTo=n.padTo||0,this.floor=n.floor||!1;let{padTo:i,floor:o,...a}=n;if(!r||Object.keys(a).length>0){let u={useGrouping:!1,...n};n.padTo>0&&(u.minimumIntegerDigits=n.padTo),this.inf=qw(e,u)}}format(e){if(this.inf){let r=this.floor?Math.floor(e):e;return this.inf.format(r)}else{let r=this.floor?Math.floor(e):zl(e,3);return me(r,this.padTo)}}},Wl=class{static{s(this,"PolyDateFormatter")}constructor(e,r,n){this.opts=n,this.originalZone=void 0;let i;if(this.opts.timeZone)this.dt=e;else if(e.zone.type==="fixed"){let a=-1*(e.offset/60),u=a>=0?`Etc/GMT+${a}`:`Etc/GMT${a}`;e.offset!==0&&Mt.create(u).valid?(i=u,this.dt=e):(i="UTC",this.dt=e.offset===0?e:e.setZone("UTC").plus({minutes:e.offset}),this.originalZone=e.zone)}else e.zone.type==="system"?this.dt=e:e.zone.type==="iana"?(this.dt=e,i=e.zone.name):(i="UTC",this.dt=e.setZone("UTC").plus({minutes:e.offset}),this.originalZone=e.zone);let o={...this.opts};o.timeZone=o.timeZone||i,this.dtf=Ul(r,o)}format(){return this.originalZone?this.formatToParts().map(({value:e})=>e).join(""):this.dtf.format(this.dt.toJSDate())}formatToParts(){let e=this.dtf.formatToParts(this.dt.toJSDate());return this.originalZone?e.map(r=>{if(r.type==="timeZoneName"){let n=this.originalZone.offsetName(this.dt.ts,{locale:this.dt.locale,format:this.opts.timeZoneName});return{...r,value:n}}else return r}):e}resolvedOptions(){return this.dtf.resolvedOptions()}},$l=class{static{s(this,"PolyRelFormatter")}constructor(e,r,n){this.opts={style:"long",...n},!r&&Sg()&&(this.rtf=Kw(e,n))}format(e,r){return this.rtf?this.rtf.format(e,r):TD(r,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,r){return this.rtf?this.rtf.formatToParts(e,r):[]}},pg={firstDay:1,minimalDays:4,weekend:[6,7]},ee=class t{static{s(this,"Locale")}static fromOpts(e){return t.create(e.locale,e.numberingSystem,e.outputCalendar,e.weekSettings,e.defaultToEN)}static create(e,r,n,i,o=!1){let a=e||re.defaultLocale,u=a||(o?"en-US":Qw()),c=r||re.defaultNumberingSystem,l=n||re.defaultOutputCalendar,d=Gl(i)||re.defaultWeekSettings;return new t(u,c,l,d,a)}static resetCache(){is=null,Nl.clear(),Ll.clear(),kl.clear(),Ml.clear(),Fl.clear()}static fromObject({locale:e,numberingSystem:r,outputCalendar:n,weekSettings:i}={}){return t.create(e,r,n,i)}constructor(e,r,n,i,o){let[a,u,c]=Yw(e);this.locale=a,this.numberingSystem=r||u||null,this.outputCalendar=n||c||null,this.weekSettings=i,this.intl=Hw(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=o,this.fastNumbersCached=null}get fastNumbers(){return this.fastNumbersCached==null&&(this.fastNumbersCached=Zw(this)),this.fastNumbersCached}listingMode(){let e=this.isEnglish(),r=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return e&&r?"en":"intl"}clone(e){return!e||Object.getOwnPropertyNames(e).length===0?this:t.create(e.locale||this.specifiedLocale,e.numberingSystem||this.numberingSystem,e.outputCalendar||this.outputCalendar,Gl(e.weekSettings)||this.weekSettings,e.defaultToEN||!1)}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,r=!1){return ca(this,e,wg,()=>{let n=this.intl==="ja"||this.intl.startsWith("ja-");r&=!n;let i=r?{month:e,day:"numeric"}:{month:e},o=r?"format":"standalone";if(!this.monthsCache[o][e]){let a=n?u=>this.dtFormatter(u,i).format():u=>this.extract(u,i,"month");this.monthsCache[o][e]=zw(a)}return this.monthsCache[o][e]})}weekdays(e,r=!1){return ca(this,e,Cg,()=>{let n=r?{weekday:e,year:"numeric",month:"long",day:"numeric"}:{weekday:e},i=r?"format":"standalone";return this.weekdaysCache[i][e]||(this.weekdaysCache[i][e]=Jw(o=>this.extract(o,n,"weekday"))),this.weekdaysCache[i][e]})}meridiems(){return ca(this,void 0,()=>bg,()=>{if(!this.meridiemCache){let e={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[oe.utc(2016,11,13,9),oe.utc(2016,11,13,19)].map(r=>this.extract(r,e,"dayperiod"))}return this.meridiemCache})}eras(e){return ca(this,e,xg,()=>{let r={era:e};return this.eraCache[e]||(this.eraCache[e]=[oe.utc(-40,1,1),oe.utc(2017,1,1)].map(n=>this.extract(n,r,"era"))),this.eraCache[e]})}extract(e,r,n){let i=this.dtFormatter(e,r),o=i.formatToParts(),a=o.find(u=>u.type.toLowerCase()===n);return a?a.value:null}numberFormatter(e={}){return new Bl(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,r={}){return new Wl(e,this.intl,r)}relFormatter(e={}){return new $l(this.intl,this.isEnglish(),e)}listFormatter(e={}){return Gw(this.intl,e)}isEnglish(){return this.locale==="en"||this.locale.toLowerCase()==="en-us"||fg(this.intl).locale.startsWith("en-us")}getWeekSettings(){return this.weekSettings?this.weekSettings:Ag()?jw(this.locale):pg}getStartOfWeek(){return this.getWeekSettings().firstDay}getMinDaysInFirstWeek(){return this.getWeekSettings().minimalDays}getWeekendDays(){return this.getWeekSettings().weekend}equals(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar}toString(){return`Locale(${this.locale}, ${this.numberingSystem}, ${this.outputCalendar})`}},_l=null,Ge=class t extends ar{static{s(this,"FixedOffsetZone")}static get utcInstance(){return _l===null&&(_l=new t(0)),_l}static instance(e){return e===0?t.utcInstance:new t(e)}static parseSpecifier(e){if(e){let r=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(r)return new t(wa(r[1],r[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${as(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${as(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,r){return as(this.fixed,r)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return e.type==="fixed"&&e.fixed===this.fixed}get isValid(){return!0}},ya=class extends ar{static{s(this,"InvalidZone")}constructor(e){super(),this.zoneName=e}get type(){return"invalid"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return""}offset(){return NaN}equals(){return!1}get isValid(){return!1}};function ir(t,e){if(Q(t)||t===null)return e;if(t instanceof ar)return t;if(iD(t)){let r=t.toLowerCase();return r==="default"?e:r==="local"||r==="system"?us.instance:r==="utc"||r==="gmt"?Ge.utcInstance:Ge.parseSpecifier(r)||Mt.create(t)}else return or(t)?Ge.instance(t):typeof t=="object"&&"offset"in t&&typeof t.offset=="function"?t:new ya(t)}s(ir,"normalizeZone");var Ql={arab:"[\u0660-\u0669]",arabext:"[\u06F0-\u06F9]",bali:"[\u1B50-\u1B59]",beng:"[\u09E6-\u09EF]",deva:"[\u0966-\u096F]",fullwide:"[\uFF10-\uFF19]",gujr:"[\u0AE6-\u0AEF]",hanidec:"[\u3007|\u4E00|\u4E8C|\u4E09|\u56DB|\u4E94|\u516D|\u4E03|\u516B|\u4E5D]",khmr:"[\u17E0-\u17E9]",knda:"[\u0CE6-\u0CEF]",laoo:"[\u0ED0-\u0ED9]",limb:"[\u1946-\u194F]",mlym:"[\u0D66-\u0D6F]",mong:"[\u1810-\u1819]",mymr:"[\u1040-\u1049]",orya:"[\u0B66-\u0B6F]",tamldec:"[\u0BE6-\u0BEF]",telu:"[\u0C66-\u0C6F]",thai:"[\u0E50-\u0E59]",tibt:"[\u0F20-\u0F29]",latn:"\\d"},yE={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},Xw=Ql.hanidec.replace(/[\[|\]]/g,"").split("");function eD(t){let e=parseInt(t,10);if(isNaN(e)){e="";for(let r=0;r<t.length;r++){let n=t.charCodeAt(r);if(t[r].search(Ql.hanidec)!==-1)e+=Xw.indexOf(t[r]);else for(let i in yE){let[o,a]=yE[i];n>=o&&n<=a&&(e+=n-o)}}return parseInt(e,10)}else return e}s(eD,"parseDigits");var Vl=new Map;function tD(){Vl.clear()}s(tD,"resetDigitRegexCache");function at({numberingSystem:t},e=""){let r=t||"latn",n=Vl.get(r);n===void 0&&(n=new Map,Vl.set(r,n));let i=n.get(e);return i===void 0&&(i=new RegExp(`${Ql[r]}${e}`),n.set(e,i)),i}s(at,"digitRegex");var TE=s(()=>Date.now(),"now"),SE="system",AE=null,_E=null,OE=null,IE=60,wE,DE=null,re=class{static{s(this,"Settings")}static get now(){return TE}static set now(e){TE=e}static set defaultZone(e){SE=e}static get defaultZone(){return ir(SE,us.instance)}static get defaultLocale(){return AE}static set defaultLocale(e){AE=e}static get defaultNumberingSystem(){return _E}static set defaultNumberingSystem(e){_E=e}static get defaultOutputCalendar(){return OE}static set defaultOutputCalendar(e){OE=e}static get defaultWeekSettings(){return DE}static set defaultWeekSettings(e){DE=Gl(e)}static get twoDigitCutoffYear(){return IE}static set twoDigitCutoffYear(e){IE=e%100}static get throwOnInvalid(){return wE}static set throwOnInvalid(e){wE=e}static resetCaches(){ee.resetCache(),Mt.resetCache(),oe.resetCache(),tD()}},$e=class{static{s(this,"Invalid")}constructor(e,r){this.reason=e,this.explanation=r}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}},mg=[0,31,59,90,120,151,181,212,243,273,304,334],hg=[0,31,60,91,121,152,182,213,244,274,305,335];function He(t,e){return new $e("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}s(He,"unitOutOfRange");function jl(t,e,r){let n=new Date(Date.UTC(t,e-1,r));t<100&&t>=0&&n.setUTCFullYear(n.getUTCFullYear()-1900);let i=n.getUTCDay();return i===0?7:i}s(jl,"dayOfWeek");function Eg(t,e,r){return r+(ls(t)?hg:mg)[e-1]}s(Eg,"computeOrdinal");function gg(t,e){let r=ls(t)?hg:mg,n=r.findIndex(o=>o<e),i=e-r[n];return{month:n+1,day:i}}s(gg,"uncomputeOrdinal");function Yl(t,e){return(t-e+7)%7+1}s(Yl,"isoWeekdayToLocal");function Ta(t,e=4,r=1){let{year:n,month:i,day:o}=t,a=Eg(n,i,o),u=Yl(jl(n,i,o),r),c=Math.floor((a-u+14-e)/7),l;return c<1?(l=n-1,c=cs(l,e,r)):c>cs(n,e,r)?(l=n+1,c=1):l=n,{weekYear:l,weekNumber:c,weekday:u,...Da(t)}}s(Ta,"gregorianToWeek");function RE(t,e=4,r=1){let{weekYear:n,weekNumber:i,weekday:o}=t,a=Yl(jl(n,1,e),r),u=kn(n),c=i*7+o-a-7+e,l;c<1?(l=n-1,c+=kn(l)):c>u?(l=n+1,c-=kn(n)):l=n;let{month:d,day:f}=gg(l,c);return{year:l,month:d,day:f,...Da(t)}}s(RE,"weekToGregorian");function Ol(t){let{year:e,month:r,day:n}=t,i=Eg(e,r,n);return{year:e,ordinal:i,...Da(t)}}s(Ol,"gregorianToOrdinal");function CE(t){let{year:e,ordinal:r}=t,{month:n,day:i}=gg(e,r);return{year:e,month:n,day:i,...Da(t)}}s(CE,"ordinalToGregorian");function bE(t,e){if(!Q(t.localWeekday)||!Q(t.localWeekNumber)||!Q(t.localWeekYear)){if(!Q(t.weekday)||!Q(t.weekNumber)||!Q(t.weekYear))throw new sr("Cannot mix locale-based week fields with ISO-based week fields");return Q(t.localWeekday)||(t.weekday=t.localWeekday),Q(t.localWeekNumber)||(t.weekNumber=t.localWeekNumber),Q(t.localWeekYear)||(t.weekYear=t.localWeekYear),delete t.localWeekday,delete t.localWeekNumber,delete t.localWeekYear,{minDaysInFirstWeek:e.getMinDaysInFirstWeek(),startOfWeek:e.getStartOfWeek()}}else return{minDaysInFirstWeek:4,startOfWeek:1}}s(bE,"usesLocalWeekValues");function rD(t,e=4,r=1){let n=Oa(t.weekYear),i=ze(t.weekNumber,1,cs(t.weekYear,e,r)),o=ze(t.weekday,1,7);return n?i?o?!1:He("weekday",t.weekday):He("week",t.weekNumber):He("weekYear",t.weekYear)}s(rD,"hasInvalidWeekData");function nD(t){let e=Oa(t.year),r=ze(t.ordinal,1,kn(t.year));return e?r?!1:He("ordinal",t.ordinal):He("year",t.year)}s(nD,"hasInvalidOrdinalData");function yg(t){let e=Oa(t.year),r=ze(t.month,1,12),n=ze(t.day,1,Sa(t.year,t.month));return e?r?n?!1:He("day",t.day):He("month",t.month):He("year",t.year)}s(yg,"hasInvalidGregorianData");function Tg(t){let{hour:e,minute:r,second:n,millisecond:i}=t,o=ze(e,0,23)||e===24&&r===0&&n===0&&i===0,a=ze(r,0,59),u=ze(n,0,59),c=ze(i,0,999);return o?a?u?c?!1:He("millisecond",i):He("second",n):He("minute",r):He("hour",e)}s(Tg,"hasInvalidTimeData");function Q(t){return typeof t>"u"}s(Q,"isUndefined");function or(t){return typeof t=="number"}s(or,"isNumber");function Oa(t){return typeof t=="number"&&t%1===0}s(Oa,"isInteger");function iD(t){return typeof t=="string"}s(iD,"isString");function sD(t){return Object.prototype.toString.call(t)==="[object Date]"}s(sD,"isDate");function Sg(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}s(Sg,"hasRelative");function Ag(){try{return typeof Intl<"u"&&!!Intl.Locale&&("weekInfo"in Intl.Locale.prototype||"getWeekInfo"in Intl.Locale.prototype)}catch{return!1}}s(Ag,"hasLocaleWeekInfo");function oD(t){return Array.isArray(t)?t:[t]}s(oD,"maybeArray");function xE(t,e,r){if(t.length!==0)return t.reduce((n,i)=>{let o=[e(i),i];return n&&r(n[0],o[0])===n[0]?n:o},null)[1]}s(xE,"bestBy");function aD(t,e){return e.reduce((r,n)=>(r[n]=t[n],r),{})}s(aD,"pick");function Fn(t,e){return Object.prototype.hasOwnProperty.call(t,e)}s(Fn,"hasOwnProperty");function Gl(t){if(t==null)return null;if(typeof t!="object")throw new _e("Week settings must be an object");if(!ze(t.firstDay,1,7)||!ze(t.minimalDays,1,7)||!Array.isArray(t.weekend)||t.weekend.some(e=>!ze(e,1,7)))throw new _e("Invalid week settings");return{firstDay:t.firstDay,minimalDays:t.minimalDays,weekend:Array.from(t.weekend)}}s(Gl,"validateWeekSettings");function ze(t,e,r){return Oa(t)&&t>=e&&t<=r}s(ze,"integerBetween");function uD(t,e){return t-e*Math.floor(t/e)}s(uD,"floorMod");function me(t,e=2){let r=t<0,n;return r?n="-"+(""+-t).padStart(e,"0"):n=(""+t).padStart(e,"0"),n}s(me,"padStart");function nr(t){if(!(Q(t)||t===null||t===""))return parseInt(t,10)}s(nr,"parseInteger");function Vr(t){if(!(Q(t)||t===null||t===""))return parseFloat(t)}s(Vr,"parseFloating");function Hl(t){if(!(Q(t)||t===null||t==="")){let e=parseFloat("0."+t)*1e3;return Math.floor(e)}}s(Hl,"parseMillis");function zl(t,e,r="round"){let n=10**e;switch(r){case"expand":return t>0?Math.ceil(t*n)/n:Math.floor(t*n)/n;case"trunc":return Math.trunc(t*n)/n;case"round":return Math.round(t*n)/n;case"floor":return Math.floor(t*n)/n;case"ceil":return Math.ceil(t*n)/n;default:throw new RangeError(`Value rounding ${r} is out of range`)}}s(zl,"roundTo");function ls(t){return t%4===0&&(t%100!==0||t%400===0)}s(ls,"isLeapYear");function kn(t){return ls(t)?366:365}s(kn,"daysInYear");function Sa(t,e){let r=uD(e-1,12)+1,n=t+(e-r)/12;return r===2?ls(n)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][r-1]}s(Sa,"daysInMonth");function Ia(t){let e=Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,t.second,t.millisecond);return t.year<100&&t.year>=0&&(e=new Date(e),e.setUTCFullYear(t.year,t.month-1,t.day)),+e}s(Ia,"objToLocalTS");function vE(t,e,r){return-Yl(jl(t,1,e),r)+e-1}s(vE,"firstWeekOffset");function cs(t,e=4,r=1){let n=vE(t,e,r),i=vE(t+1,e,r);return(kn(t)-n+i)/7}s(cs,"weeksInWeekYear");function ql(t){return t>99?t:t>re.twoDigitCutoffYear?1900+t:2e3+t}s(ql,"untruncateYear");function _g(t,e,r,n=null){let i=new Date(t),o={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};n&&(o.timeZone=n);let a={timeZoneName:e,...o},u=new Intl.DateTimeFormat(r,a).formatToParts(i).find(c=>c.type.toLowerCase()==="timezonename");return u?u.value:null}s(_g,"parseZoneInfo");function wa(t,e){let r=parseInt(t,10);Number.isNaN(r)&&(r=0);let n=parseInt(e,10)||0,i=r<0||Object.is(r,-0)?-n:n;return r*60+i}s(wa,"signedOffset");function Og(t){let e=Number(t);if(typeof t=="boolean"||t===""||!Number.isFinite(e))throw new _e(`Invalid unit value ${t}`);return e}s(Og,"asNumber");function Aa(t,e){let r={};for(let n in t)if(Fn(t,n)){let i=t[n];if(i==null)continue;r[e(n)]=Og(i)}return r}s(Aa,"normalizeObject");function as(t,e){let r=Math.trunc(Math.abs(t/60)),n=Math.trunc(Math.abs(t%60)),i=t>=0?"+":"-";switch(e){case"short":return`${i}${me(r,2)}:${me(n,2)}`;case"narrow":return`${i}${r}${n>0?`:${n}`:""}`;case"techie":return`${i}${me(r,2)}${me(n,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}s(as,"formatOffset");function Da(t){return aD(t,["hour","minute","second","millisecond"])}s(Da,"timeObject");var cD=["January","February","March","April","May","June","July","August","September","October","November","December"],Ig=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],lD=["J","F","M","A","M","J","J","A","S","O","N","D"];function wg(t){switch(t){case"narrow":return[...lD];case"short":return[...Ig];case"long":return[...cD];case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}s(wg,"months");var Dg=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],Rg=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],dD=["M","T","W","T","F","S","S"];function Cg(t){switch(t){case"narrow":return[...dD];case"short":return[...Rg];case"long":return[...Dg];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}s(Cg,"weekdays");var bg=["AM","PM"],fD=["Before Christ","Anno Domini"],pD=["BC","AD"],mD=["B","A"];function xg(t){switch(t){case"narrow":return[...mD];case"short":return[...pD];case"long":return[...fD];default:return null}}s(xg,"eras");function hD(t){return bg[t.hour<12?0:1]}s(hD,"meridiemForDateTime");function ED(t,e){return Cg(e)[t.weekday-1]}s(ED,"weekdayForDateTime");function gD(t,e){return wg(e)[t.month-1]}s(gD,"monthForDateTime");function yD(t,e){return xg(e)[t.year<0?0:1]}s(yD,"eraForDateTime");function TD(t,e,r="always",n=!1){let i={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},o=["hours","minutes","seconds"].indexOf(t)===-1;if(r==="auto"&&o){let f=t==="days";switch(e){case 1:return f?"tomorrow":`next ${i[t][0]}`;case-1:return f?"yesterday":`last ${i[t][0]}`;case 0:return f?"today":`this ${i[t][0]}`}}let a=Object.is(e,-0)||e<0,u=Math.abs(e),c=u===1,l=i[t],d=n?c?l[1]:l[2]||l[1]:c?i[t][0]:t;return a?`${u} ${d} ago`:`in ${u} ${d}`}s(TD,"formatRelativeTime");function PE(t,e){let r="";for(let n of t)n.literal?r+=n.val:r+=e(n.val);return r}s(PE,"stringifyTokens");var SD={D:ga,DD:jE,DDD:YE,DDDD:HE,t:zE,tt:JE,ttt:ZE,tttt:XE,T:eg,TT:tg,TTT:rg,TTTT:ng,f:ig,ff:og,fff:ug,ffff:lg,F:sg,FF:ag,FFF:cg,FFFF:dg},We=class t{static{s(this,"Formatter")}static create(e,r={}){return new t(e,r)}static parseFormat(e){let r=null,n="",i=!1,o=[];for(let a=0;a<e.length;a++){let u=e.charAt(a);u==="'"?((n.length>0||i)&&o.push({literal:i||/^\s+$/.test(n),val:n===""?"'":n}),r=null,n="",i=!i):i||u===r?n+=u:(n.length>0&&o.push({literal:/^\s+$/.test(n),val:n}),n=u,r=u)}return n.length>0&&o.push({literal:i||/^\s+$/.test(n),val:n}),o}static macroTokenToFormatOpts(e){return SD[e]}constructor(e,r){this.opts=r,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,r){return this.systemLoc===null&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(e,{...this.opts,...r}).format()}dtFormatter(e,r={}){return this.loc.dtFormatter(e,{...this.opts,...r})}formatDateTime(e,r){return this.dtFormatter(e,r).format()}formatDateTimeParts(e,r){return this.dtFormatter(e,r).formatToParts()}formatInterval(e,r){return this.dtFormatter(e.start,r).dtf.formatRange(e.start.toJSDate(),e.end.toJSDate())}resolvedOptions(e,r){return this.dtFormatter(e,r).resolvedOptions()}num(e,r=0,n=void 0){if(this.opts.forceSimple)return me(e,r);let i={...this.opts};return r>0&&(i.padTo=r),n&&(i.signDisplay=n),this.loc.numberFormatter(i).format(e)}formatDateTimeFromString(e,r){let n=this.loc.listingMode()==="en",i=this.loc.outputCalendar&&this.loc.outputCalendar!=="gregory",o=s((m,h)=>this.loc.extract(e,m,h),"string"),a=s(m=>e.isOffsetFixed&&e.offset===0&&m.allowZ?"Z":e.isValid?e.zone.formatOffset(e.ts,m.format):"","formatOffset"),u=s(()=>n?hD(e):o({hour:"numeric",hourCycle:"h12"},"dayperiod"),"meridiem"),c=s((m,h)=>n?gD(e,m):o(h?{month:m}:{month:m,day:"numeric"},"month"),"month"),l=s((m,h)=>n?ED(e,m):o(h?{weekday:m}:{weekday:m,month:"long",day:"numeric"},"weekday"),"weekday"),d=s(m=>{let h=t.macroTokenToFormatOpts(m);return h?this.formatWithSystemDefault(e,h):m},"maybeMacro"),f=s(m=>n?yD(e,m):o({era:m},"era"),"era"),p=s(m=>{switch(m){case"S":return this.num(e.millisecond);case"u":case"SSS":return this.num(e.millisecond,3);case"s":return this.num(e.second);case"ss":return this.num(e.second,2);case"uu":return this.num(Math.floor(e.millisecond/10),2);case"uuu":return this.num(Math.floor(e.millisecond/100));case"m":return this.num(e.minute);case"mm":return this.num(e.minute,2);case"h":return this.num(e.hour%12===0?12:e.hour%12);case"hh":return this.num(e.hour%12===0?12:e.hour%12,2);case"H":return this.num(e.hour);case"HH":return this.num(e.hour,2);case"Z":return a({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return a({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return a({format:"techie",allowZ:this.opts.allowZ});case"ZZZZ":return e.zone.offsetName(e.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return e.zone.offsetName(e.ts,{format:"long",locale:this.loc.locale});case"z":return e.zoneName;case"a":return u();case"d":return i?o({day:"numeric"},"day"):this.num(e.day);case"dd":return i?o({day:"2-digit"},"day"):this.num(e.day,2);case"c":return this.num(e.weekday);case"ccc":return l("short",!0);case"cccc":return l("long",!0);case"ccccc":return l("narrow",!0);case"E":return this.num(e.weekday);case"EEE":return l("short",!1);case"EEEE":return l("long",!1);case"EEEEE":return l("narrow",!1);case"L":return i?o({month:"numeric",day:"numeric"},"month"):this.num(e.month);case"LL":return i?o({month:"2-digit",day:"numeric"},"month"):this.num(e.month,2);case"LLL":return c("short",!0);case"LLLL":return c("long",!0);case"LLLLL":return c("narrow",!0);case"M":return i?o({month:"numeric"},"month"):this.num(e.month);case"MM":return i?o({month:"2-digit"},"month"):this.num(e.month,2);case"MMM":return c("short",!1);case"MMMM":return c("long",!1);case"MMMMM":return c("narrow",!1);case"y":return i?o({year:"numeric"},"year"):this.num(e.year);case"yy":return i?o({year:"2-digit"},"year"):this.num(e.year.toString().slice(-2),2);case"yyyy":return i?o({year:"numeric"},"year"):this.num(e.year,4);case"yyyyyy":return i?o({year:"numeric"},"year"):this.num(e.year,6);case"G":return f("short");case"GG":return f("long");case"GGGGG":return f("narrow");case"kk":return this.num(e.weekYear.toString().slice(-2),2);case"kkkk":return this.num(e.weekYear,4);case"W":return this.num(e.weekNumber);case"WW":return this.num(e.weekNumber,2);case"n":return this.num(e.localWeekNumber);case"nn":return this.num(e.localWeekNumber,2);case"ii":return this.num(e.localWeekYear.toString().slice(-2),2);case"iiii":return this.num(e.localWeekYear,4);case"o":return this.num(e.ordinal);case"ooo":return this.num(e.ordinal,3);case"q":return this.num(e.quarter);case"qq":return this.num(e.quarter,2);case"X":return this.num(Math.floor(e.ts/1e3));case"x":return this.num(e.ts);default:return d(m)}},"tokenToString");return PE(t.parseFormat(r),p)}formatDurationFromString(e,r){let n=this.opts.signMode==="negativeLargestOnly"?-1:1,i=s(d=>{switch(d[0]){case"S":return"milliseconds";case"s":return"seconds";case"m":return"minutes";case"h":return"hours";case"d":return"days";case"w":return"weeks";case"M":return"months";case"y":return"years";default:return null}},"tokenToField"),o=s((d,f)=>p=>{let m=i(p);if(m){let h=f.isNegativeDuration&&m!==f.largestUnit?n:1,g;return this.opts.signMode==="negativeLargestOnly"&&m!==f.largestUnit?g="never":this.opts.signMode==="all"?g="always":g="auto",this.num(d.get(m)*h,p.length,g)}else return p},"tokenToString"),a=t.parseFormat(r),u=a.reduce((d,{literal:f,val:p})=>f?d:d.concat(p),[]),c=e.shiftTo(...u.map(i).filter(d=>d)),l={isNegativeDuration:c<0,largestUnit:Object.keys(c.values)[0]};return PE(a,o(c,l))}},vg=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function Bn(...t){let e=t.reduce((r,n)=>r+n.source,"");return RegExp(`^${e}$`)}s(Bn,"combineRegexes");function Wn(...t){return e=>t.reduce(([r,n,i],o)=>{let[a,u,c]=o(e,i);return[{...r,...a},u||n,c]},[{},null,1]).slice(0,2)}s(Wn,"combineExtractors");function $n(t,...e){if(t==null)return[null,null];for(let[r,n]of e){let i=r.exec(t);if(i)return n(i)}return[null,null]}s($n,"parse");function Pg(...t){return(e,r)=>{let n={},i;for(i=0;i<t.length;i++)n[t[i]]=nr(e[r+i]);return[n,null,r+i]}}s(Pg,"simpleParse");var Ng=/(?:([Zz])|([+-]\d\d)(?::?(\d\d))?)/,AD=`(?:${Ng.source}?(?:\\[(${vg.source})\\])?)?`,Jl=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,Ug=RegExp(`${Jl.source}${AD}`),Zl=RegExp(`(?:[Tt]${Ug.source})?`),_D=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,OD=/(\d{4})-?W(\d\d)(?:-?(\d))?/,ID=/(\d{4})-?(\d{3})/,wD=Pg("weekYear","weekNumber","weekDay"),DD=Pg("year","ordinal"),RD=/(\d{4})-(\d\d)-(\d\d)/,Lg=RegExp(`${Jl.source} ?(?:${Ng.source}|(${vg.source}))?`),CD=RegExp(`(?: ${Lg.source})?`);function Mn(t,e,r){let n=t[e];return Q(n)?r:nr(n)}s(Mn,"int");function bD(t,e){return[{year:Mn(t,e),month:Mn(t,e+1,1),day:Mn(t,e+2,1)},null,e+3]}s(bD,"extractISOYmd");function Vn(t,e){return[{hours:Mn(t,e,0),minutes:Mn(t,e+1,0),seconds:Mn(t,e+2,0),milliseconds:Hl(t[e+3])},null,e+4]}s(Vn,"extractISOTime");function ds(t,e){let r=!t[e]&&!t[e+1],n=wa(t[e+1],t[e+2]),i=r?null:Ge.instance(n);return[{},i,e+3]}s(ds,"extractISOOffset");function fs(t,e){let r=t[e]?Mt.create(t[e]):null;return[{},r,e+1]}s(fs,"extractIANAZone");var xD=RegExp(`^T?${Jl.source}$`),vD=/^-?P(?:(?:(-?\d{1,20}(?:\.\d{1,20})?)Y)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20}(?:\.\d{1,20})?)W)?(?:(-?\d{1,20}(?:\.\d{1,20})?)D)?(?:T(?:(-?\d{1,20}(?:\.\d{1,20})?)H)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20})(?:[.,](-?\d{1,20}))?S)?)?)$/;function PD(t){let[e,r,n,i,o,a,u,c,l]=t,d=e[0]==="-",f=c&&c[0]==="-",p=s((m,h=!1)=>m!==void 0&&(h||m&&d)?-m:m,"maybeNegate");return[{years:p(Vr(r)),months:p(Vr(n)),weeks:p(Vr(i)),days:p(Vr(o)),hours:p(Vr(a)),minutes:p(Vr(u)),seconds:p(Vr(c),c==="-0"),milliseconds:p(Hl(l),f)}]}s(PD,"extractISODuration");var ND={GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function Xl(t,e,r,n,i,o,a){let u={year:e.length===2?ql(nr(e)):nr(e),month:Ig.indexOf(r)+1,day:nr(n),hour:nr(i),minute:nr(o)};return a&&(u.second=nr(a)),t&&(u.weekday=t.length>3?Dg.indexOf(t)+1:Rg.indexOf(t)+1),u}s(Xl,"fromStrings");var UD=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function LD(t){let[,e,r,n,i,o,a,u,c,l,d,f]=t,p=Xl(e,i,n,r,o,a,u),m;return c?m=ND[c]:l?m=0:m=wa(d,f),[p,new Ge(m)]}s(LD,"extractRFC2822");function kD(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}s(kD,"preprocessRFC2822");var MD=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,FD=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,BD=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function NE(t){let[,e,r,n,i,o,a,u]=t;return[Xl(e,i,n,r,o,a,u),Ge.utcInstance]}s(NE,"extractRFC1123Or850");function WD(t){let[,e,r,n,i,o,a,u]=t;return[Xl(e,u,r,n,i,o,a),Ge.utcInstance]}s(WD,"extractASCII");var $D=Bn(_D,Zl),VD=Bn(OD,Zl),GD=Bn(ID,Zl),qD=Bn(Ug),kg=Wn(bD,Vn,ds,fs),KD=Wn(wD,Vn,ds,fs),QD=Wn(DD,Vn,ds,fs),jD=Wn(Vn,ds,fs);function YD(t){return $n(t,[$D,kg],[VD,KD],[GD,QD],[qD,jD])}s(YD,"parseISODate");function HD(t){return $n(kD(t),[UD,LD])}s(HD,"parseRFC2822Date");function zD(t){return $n(t,[MD,NE],[FD,NE],[BD,WD])}s(zD,"parseHTTPDate");function JD(t){return $n(t,[vD,PD])}s(JD,"parseISODuration");var ZD=Wn(Vn);function XD(t){return $n(t,[xD,ZD])}s(XD,"parseISOTimeOnly");var eR=Bn(RD,CD),tR=Bn(Lg),rR=Wn(Vn,ds,fs);function nR(t){return $n(t,[eR,kg],[tR,rR])}s(nR,"parseSQL");var UE="Invalid Duration",Mg={weeks:{days:7,hours:7*24,minutes:7*24*60,seconds:7*24*60*60,milliseconds:7*24*60*60*1e3},days:{hours:24,minutes:24*60,seconds:24*60*60,milliseconds:24*60*60*1e3},hours:{minutes:60,seconds:60*60,milliseconds:60*60*1e3},minutes:{seconds:60,milliseconds:60*1e3},seconds:{milliseconds:1e3}},iR={years:{quarters:4,months:12,weeks:52,days:365,hours:365*24,minutes:365*24*60,seconds:365*24*60*60,milliseconds:365*24*60*60*1e3},quarters:{months:3,weeks:13,days:91,hours:91*24,minutes:91*24*60,seconds:91*24*60*60,milliseconds:91*24*60*60*1e3},months:{weeks:4,days:30,hours:30*24,minutes:30*24*60,seconds:30*24*60*60,milliseconds:30*24*60*60*1e3},...Mg},Ye=146097/400,Nn=146097/4800,sR={years:{quarters:4,months:12,weeks:Ye/7,days:Ye,hours:Ye*24,minutes:Ye*24*60,seconds:Ye*24*60*60,milliseconds:Ye*24*60*60*1e3},quarters:{months:3,weeks:Ye/28,days:Ye/4,hours:Ye*24/4,minutes:Ye*24*60/4,seconds:Ye*24*60*60/4,milliseconds:Ye*24*60*60*1e3/4},months:{weeks:Nn/7,days:Nn,hours:Nn*24,minutes:Nn*24*60,seconds:Nn*24*60*60,milliseconds:Nn*24*60*60*1e3},...Mg},qr=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],oR=qr.slice(0).reverse();function Lt(t,e,r=!1){let n={values:r?e.values:{...t.values,...e.values||{}},loc:t.loc.clone(e.loc),conversionAccuracy:e.conversionAccuracy||t.conversionAccuracy,matrix:e.matrix||t.matrix};return new ge(n)}s(Lt,"clone$1");function Fg(t,e){var r;let n=(r=e.milliseconds)!=null?r:0;for(let i of oR.slice(1))e[i]&&(n+=e[i]*t[i].milliseconds);return n}s(Fg,"durationToMillis");function LE(t,e){let r=Fg(t,e)<0?-1:1;qr.reduceRight((n,i)=>{if(Q(e[i]))return n;if(n){let o=e[n]*r,a=t[i][n],u=Math.floor(o/a);e[i]+=u*r,e[n]-=u*a*r}return i},null),qr.reduce((n,i)=>{if(Q(e[i]))return n;if(n){let o=e[n]%1;e[n]-=o,e[i]+=o*t[n][i]}return i},null)}s(LE,"normalizeValues");function kE(t){let e={};for(let[r,n]of Object.entries(t))n!==0&&(e[r]=n);return e}s(kE,"removeZeroes");var ge=class t{static{s(this,"Duration")}constructor(e){let r=e.conversionAccuracy==="longterm"||!1,n=r?sR:iR;e.matrix&&(n=e.matrix),this.values=e.values,this.loc=e.loc||ee.create(),this.conversionAccuracy=r?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n,this.isLuxonDuration=!0}static fromMillis(e,r){return t.fromObject({milliseconds:e},r)}static fromObject(e,r={}){if(e==null||typeof e!="object")throw new _e(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new t({values:Aa(e,t.normalizeUnit),loc:ee.fromObject(r),conversionAccuracy:r.conversionAccuracy,matrix:r.matrix})}static fromDurationLike(e){if(or(e))return t.fromMillis(e);if(t.isDuration(e))return e;if(typeof e=="object")return t.fromObject(e);throw new _e(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,r){let[n]=JD(e);return n?t.fromObject(n,r):t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,r){let[n]=XD(e);return n?t.fromObject(n,r):t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,r=null){if(!e)throw new _e("need to specify a reason the Duration is invalid");let n=e instanceof $e?e:new $e(e,r);if(re.throwOnInvalid)throw new vl(n);return new t({invalid:n})}static normalizeUnit(e){let r={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[e&&e.toLowerCase()];if(!r)throw new Ea(e);return r}static isDuration(e){return e&&e.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(e,r={}){let n={...r,floor:r.round!==!1&&r.floor!==!1};return this.isValid?We.create(this.loc,n).formatDurationFromString(this,e):UE}toHuman(e={}){if(!this.isValid)return UE;let r=e.showZeros!==!1,n=qr.map(i=>{let o=this.values[i];return Q(o)||o===0&&!r?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...e,unit:i.slice(0,-1)}).format(o)}).filter(i=>i);return this.loc.listFormatter({type:"conjunction",style:e.listStyle||"narrow",...e}).format(n)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let e="P";return this.years!==0&&(e+=this.years+"Y"),(this.months!==0||this.quarters!==0)&&(e+=this.months+this.quarters*3+"M"),this.weeks!==0&&(e+=this.weeks+"W"),this.days!==0&&(e+=this.days+"D"),(this.hours!==0||this.minutes!==0||this.seconds!==0||this.milliseconds!==0)&&(e+="T"),this.hours!==0&&(e+=this.hours+"H"),this.minutes!==0&&(e+=this.minutes+"M"),(this.seconds!==0||this.milliseconds!==0)&&(e+=zl(this.seconds+this.milliseconds/1e3,3)+"S"),e==="P"&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;let r=this.toMillis();return r<0||r>=864e5?null:(e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...e,includeOffset:!1},oe.fromMillis(r,{zone:"UTC"}).toISOTime(e))}toJSON(){return this.toISO()}toString(){return this.toISO()}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Duration { values: ${JSON.stringify(this.values)} }`:`Duration { Invalid, reason: ${this.invalidReason} }`}toMillis(){return this.isValid?Fg(this.matrix,this.values):NaN}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;let r=t.fromDurationLike(e),n={};for(let i of qr)(Fn(r.values,i)||Fn(this.values,i))&&(n[i]=r.get(i)+this.get(i));return Lt(this,{values:n},!0)}minus(e){if(!this.isValid)return this;let r=t.fromDurationLike(e);return this.plus(r.negate())}mapUnits(e){if(!this.isValid)return this;let r={};for(let n of Object.keys(this.values))r[n]=Og(e(this.values[n],n));return Lt(this,{values:r},!0)}get(e){return this[t.normalizeUnit(e)]}set(e){if(!this.isValid)return this;let r={...this.values,...Aa(e,t.normalizeUnit)};return Lt(this,{values:r})}reconfigure({locale:e,numberingSystem:r,conversionAccuracy:n,matrix:i}={}){let a={loc:this.loc.clone({locale:e,numberingSystem:r}),matrix:i,conversionAccuracy:n};return Lt(this,a)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;let e=this.toObject();return LE(this.matrix,e),Lt(this,{values:e},!0)}rescale(){if(!this.isValid)return this;let e=kE(this.normalize().shiftToAll().toObject());return Lt(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(a=>t.normalizeUnit(a));let r={},n={},i=this.toObject(),o;for(let a of qr)if(e.indexOf(a)>=0){o=a;let u=0;for(let l in n)u+=this.matrix[l][a]*n[l],n[l]=0;or(i[a])&&(u+=i[a]);let c=Math.trunc(u);r[a]=c,n[a]=(u*1e3-c*1e3)/1e3}else or(i[a])&&(n[a]=i[a]);for(let a in n)n[a]!==0&&(r[o]+=a===o?n[a]:n[a]/this.matrix[o][a]);return LE(this.matrix,r),Lt(this,{values:r},!0)}shiftToAll(){return this.isValid?this.shiftTo("years","months","weeks","days","hours","minutes","seconds","milliseconds"):this}negate(){if(!this.isValid)return this;let e={};for(let r of Object.keys(this.values))e[r]=this.values[r]===0?0:-this.values[r];return Lt(this,{values:e},!0)}removeZeros(){if(!this.isValid)return this;let e=kE(this.values);return Lt(this,{values:e},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(e){if(!this.isValid||!e.isValid||!this.loc.equals(e.loc))return!1;function r(n,i){return n===void 0||n===0?i===void 0||i===0:n===i}s(r,"eq");for(let n of qr)if(!r(this.values[n],e.values[n]))return!1;return!0}},Un="Invalid Interval";function aR(t,e){return!t||!t.isValid?Qr.invalid("missing or invalid start"):!e||!e.isValid?Qr.invalid("missing or invalid end"):e<t?Qr.invalid("end before start",`The end of an interval must be after its start, but you had start=${t.toISO()} and end=${e.toISO()}`):null}s(aR,"validateStartEnd");var Qr=class t{static{s(this,"Interval")}constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,r=null){if(!e)throw new _e("need to specify a reason the Interval is invalid");let n=e instanceof $e?e:new $e(e,r);if(re.throwOnInvalid)throw new xl(n);return new t({invalid:n})}static fromDateTimes(e,r){let n=ns(e),i=ns(r),o=aR(n,i);return o??new t({start:n,end:i})}static after(e,r){let n=ge.fromDurationLike(r),i=ns(e);return t.fromDateTimes(i,i.plus(n))}static before(e,r){let n=ge.fromDurationLike(r),i=ns(e);return t.fromDateTimes(i.minus(n),i)}static fromISO(e,r){let[n,i]=(e||"").split("/",2);if(n&&i){let o,a;try{o=oe.fromISO(n,r),a=o.isValid}catch{a=!1}let u,c;try{u=oe.fromISO(i,r),c=u.isValid}catch{c=!1}if(a&&c)return t.fromDateTimes(o,u);if(a){let l=ge.fromISO(i,r);if(l.isValid)return t.after(o,l)}else if(c){let l=ge.fromISO(n,r);if(l.isValid)return t.before(u,l)}}return t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static isInterval(e){return e&&e.isLuxonInterval||!1}get start(){return this.isValid?this.s:null}get end(){return this.isValid?this.e:null}get lastDateTime(){return this.isValid&&this.e?this.e.minus(1):null}get isValid(){return this.invalidReason===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}length(e="milliseconds"){return this.isValid?this.toDuration(e).get(e):NaN}count(e="milliseconds",r){if(!this.isValid)return NaN;let n=this.start.startOf(e,r),i;return r!=null&&r.useLocaleWeeks?i=this.end.reconfigure({locale:n.locale}):i=this.end,i=i.startOf(e,r),Math.floor(i.diff(n,e).get(e))+(i.valueOf()!==this.end.valueOf())}hasSame(e){return this.isValid?this.isEmpty()||this.e.minus(1).hasSame(this.s,e):!1}isEmpty(){return this.s.valueOf()===this.e.valueOf()}isAfter(e){return this.isValid?this.s>e:!1}isBefore(e){return this.isValid?this.e<=e:!1}contains(e){return this.isValid?this.s<=e&&this.e>e:!1}set({start:e,end:r}={}){return this.isValid?t.fromDateTimes(e||this.s,r||this.e):this}splitAt(...e){if(!this.isValid)return[];let r=e.map(ns).filter(a=>this.contains(a)).sort((a,u)=>a.toMillis()-u.toMillis()),n=[],{s:i}=this,o=0;for(;i<this.e;){let a=r[o]||this.e,u=+a>+this.e?this.e:a;n.push(t.fromDateTimes(i,u)),i=u,o+=1}return n}splitBy(e){let r=ge.fromDurationLike(e);if(!this.isValid||!r.isValid||r.as("milliseconds")===0)return[];let{s:n}=this,i=1,o,a=[];for(;n<this.e;){let u=this.start.plus(r.mapUnits(c=>c*i));o=+u>+this.e?this.e:u,a.push(t.fromDateTimes(n,o)),n=o,i+=1}return a}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s<e.e}abutsStart(e){return this.isValid?+this.e==+e.s:!1}abutsEnd(e){return this.isValid?+e.e==+this.s:!1}engulfs(e){return this.isValid?this.s<=e.s&&this.e>=e.e:!1}equals(e){return!this.isValid||!e.isValid?!1:this.s.equals(e.s)&&this.e.equals(e.e)}intersection(e){if(!this.isValid)return this;let r=this.s>e.s?this.s:e.s,n=this.e<e.e?this.e:e.e;return r>=n?null:t.fromDateTimes(r,n)}union(e){if(!this.isValid)return this;let r=this.s<e.s?this.s:e.s,n=this.e>e.e?this.e:e.e;return t.fromDateTimes(r,n)}static merge(e){let[r,n]=e.sort((i,o)=>i.s-o.s).reduce(([i,o],a)=>o?o.overlaps(a)||o.abutsStart(a)?[i,o.union(a)]:[i.concat([o]),a]:[i,a],[[],null]);return n&&r.push(n),r}static xor(e){let r=null,n=0,i=[],o=e.map(c=>[{time:c.s,type:"s"},{time:c.e,type:"e"}]),a=Array.prototype.concat(...o),u=a.sort((c,l)=>c.time-l.time);for(let c of u)n+=c.type==="s"?1:-1,n===1?r=c.time:(r&&+r!=+c.time&&i.push(t.fromDateTimes(r,c.time)),r=null);return t.merge(i)}difference(...e){return t.xor([this].concat(e)).map(r=>this.intersection(r)).filter(r=>r&&!r.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} \u2013 ${this.e.toISO()})`:Un}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Interval { start: ${this.s.toISO()}, end: ${this.e.toISO()} }`:`Interval { Invalid, reason: ${this.invalidReason} }`}toLocaleString(e=ga,r={}){return this.isValid?We.create(this.s.loc.clone(r),e).formatInterval(this):Un}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:Un}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:Un}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:Un}toFormat(e,{separator:r=" \u2013 "}={}){return this.isValid?`${this.s.toFormat(e)}${r}${this.e.toFormat(e)}`:Un}toDuration(e,r){return this.isValid?this.e.diff(this.s,e,r):ge.invalid(this.invalidReason)}mapEndpoints(e){return t.fromDateTimes(e(this.s),e(this.e))}},Kr=class{static{s(this,"Info")}static hasDST(e=re.defaultZone){let r=oe.now().setZone(e).set({month:12});return!e.isUniversal&&r.offset!==r.set({month:6}).offset}static isValidIANAZone(e){return Mt.isValidZone(e)}static normalizeZone(e){return ir(e,re.defaultZone)}static getStartOfWeek({locale:e=null,locObj:r=null}={}){return(r||ee.create(e)).getStartOfWeek()}static getMinimumDaysInFirstWeek({locale:e=null,locObj:r=null}={}){return(r||ee.create(e)).getMinDaysInFirstWeek()}static getWeekendWeekdays({locale:e=null,locObj:r=null}={}){return(r||ee.create(e)).getWeekendDays().slice()}static months(e="long",{locale:r=null,numberingSystem:n=null,locObj:i=null,outputCalendar:o="gregory"}={}){return(i||ee.create(r,n,o)).months(e)}static monthsFormat(e="long",{locale:r=null,numberingSystem:n=null,locObj:i=null,outputCalendar:o="gregory"}={}){return(i||ee.create(r,n,o)).months(e,!0)}static weekdays(e="long",{locale:r=null,numberingSystem:n=null,locObj:i=null}={}){return(i||ee.create(r,n,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:r=null,numberingSystem:n=null,locObj:i=null}={}){return(i||ee.create(r,n,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return ee.create(e).meridiems()}static eras(e="short",{locale:r=null}={}){return ee.create(r,null,"gregory").eras(e)}static features(){return{relative:Sg(),localeWeek:Ag()}}};function ME(t,e){let r=s(i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),"utcDayStart"),n=r(e)-r(t);return Math.floor(ge.fromMillis(n).as("days"))}s(ME,"dayDiff");function uR(t,e,r){let n=[["years",(c,l)=>l.year-c.year],["quarters",(c,l)=>l.quarter-c.quarter+(l.year-c.year)*4],["months",(c,l)=>l.month-c.month+(l.year-c.year)*12],["weeks",(c,l)=>{let d=ME(c,l);return(d-d%7)/7}],["days",ME]],i={},o=t,a,u;for(let[c,l]of n)r.indexOf(c)>=0&&(a=c,i[c]=l(t,e),u=o.plus(i),u>e?(i[c]--,t=o.plus(i),t>e&&(u=t,i[c]--,t=o.plus(i))):t=u);return[t,i,u,a]}s(uR,"highOrderDiffs");function cR(t,e,r,n){let[i,o,a,u]=uR(t,e,r),c=e-i,l=r.filter(f=>["hours","minutes","seconds","milliseconds"].indexOf(f)>=0);l.length===0&&(a<e&&(a=i.plus({[u]:1})),a!==i&&(o[u]=(o[u]||0)+c/(a-i)));let d=ge.fromObject(o,n);return l.length>0?ge.fromMillis(c,n).shiftTo(...l).plus(d):d}s(cR,"diff");var lR="missing Intl.DateTimeFormat.formatToParts support";function X(t,e=r=>r){return{regex:t,deser:([r])=>e(eD(r))}}s(X,"intUnit");var dR=String.fromCharCode(160),Bg=`[ ${dR}]`,Wg=new RegExp(Bg,"g");function fR(t){return t.replace(/\./g,"\\.?").replace(Wg,Bg)}s(fR,"fixListRegex");function FE(t){return t.replace(/\./g,"").replace(Wg," ").toLowerCase()}s(FE,"stripInsensitivities");function ut(t,e){return t===null?null:{regex:RegExp(t.map(fR).join("|")),deser:([r])=>t.findIndex(n=>FE(r)===FE(n))+e}}s(ut,"oneOf");function BE(t,e){return{regex:t,deser:([,r,n])=>wa(r,n),groups:e}}s(BE,"offset");function la(t){return{regex:t,deser:([e])=>e}}s(la,"simple");function pR(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}s(pR,"escapeToken");function mR(t,e){let r=at(e),n=at(e,"{2}"),i=at(e,"{3}"),o=at(e,"{4}"),a=at(e,"{6}"),u=at(e,"{1,2}"),c=at(e,"{1,3}"),l=at(e,"{1,6}"),d=at(e,"{1,9}"),f=at(e,"{2,4}"),p=at(e,"{4,6}"),m=s(y=>({regex:RegExp(pR(y.val)),deser:([S])=>S,literal:!0}),"literal"),g=s(y=>{if(t.literal)return m(y);switch(y.val){case"G":return ut(e.eras("short"),0);case"GG":return ut(e.eras("long"),0);case"y":return X(l);case"yy":return X(f,ql);case"yyyy":return X(o);case"yyyyy":return X(p);case"yyyyyy":return X(a);case"M":return X(u);case"MM":return X(n);case"MMM":return ut(e.months("short",!0),1);case"MMMM":return ut(e.months("long",!0),1);case"L":return X(u);case"LL":return X(n);case"LLL":return ut(e.months("short",!1),1);case"LLLL":return ut(e.months("long",!1),1);case"d":return X(u);case"dd":return X(n);case"o":return X(c);case"ooo":return X(i);case"HH":return X(n);case"H":return X(u);case"hh":return X(n);case"h":return X(u);case"mm":return X(n);case"m":return X(u);case"q":return X(u);case"qq":return X(n);case"s":return X(u);case"ss":return X(n);case"S":return X(c);case"SSS":return X(i);case"u":return la(d);case"uu":return la(u);case"uuu":return X(r);case"a":return ut(e.meridiems(),0);case"kkkk":return X(o);case"kk":return X(f,ql);case"W":return X(u);case"WW":return X(n);case"E":case"c":return X(r);case"EEE":return ut(e.weekdays("short",!1),1);case"EEEE":return ut(e.weekdays("long",!1),1);case"ccc":return ut(e.weekdays("short",!0),1);case"cccc":return ut(e.weekdays("long",!0),1);case"Z":case"ZZ":return BE(new RegExp(`([+-]${u.source})(?::(${n.source}))?`),2);case"ZZZ":return BE(new RegExp(`([+-]${u.source})(${n.source})?`),2);case"z":return la(/[a-z_+-/]{1,256}?/i);case" ":return la(/[^\S\n\r]/);default:return m(y)}},"unitate")(t)||{invalidReason:lR};return g.token=t,g}s(mR,"unitForToken");var hR={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour12:{numeric:"h","2-digit":"hh"},hour24:{numeric:"H","2-digit":"HH"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"},timeZoneName:{long:"ZZZZZ",short:"ZZZ"}};function ER(t,e,r){let{type:n,value:i}=t;if(n==="literal"){let c=/^\s+$/.test(i);return{literal:!c,val:c?" ":i}}let o=e[n],a=n;n==="hour"&&(e.hour12!=null?a=e.hour12?"hour12":"hour24":e.hourCycle!=null?e.hourCycle==="h11"||e.hourCycle==="h12"?a="hour12":a="hour24":a=r.hour12?"hour12":"hour24");let u=hR[a];if(typeof u=="object"&&(u=u[o]),u)return{literal:!1,val:u}}s(ER,"tokenForPart");function gR(t){return[`^${t.map(r=>r.regex).reduce((r,n)=>`${r}(${n.source})`,"")}$`,t]}s(gR,"buildRegex");function yR(t,e,r){let n=t.match(e);if(n){let i={},o=1;for(let a in r)if(Fn(r,a)){let u=r[a],c=u.groups?u.groups+1:1;!u.literal&&u.token&&(i[u.token.val[0]]=u.deser(n.slice(o,o+c))),o+=c}return[n,i]}else return[n,{}]}s(yR,"match");function TR(t){let e=s(o=>{switch(o){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}},"toField"),r=null,n;return Q(t.z)||(r=Mt.create(t.z)),Q(t.Z)||(r||(r=new Ge(t.Z)),n=t.Z),Q(t.q)||(t.M=(t.q-1)*3+1),Q(t.h)||(t.h<12&&t.a===1?t.h+=12:t.h===12&&t.a===0&&(t.h=0)),t.G===0&&t.y&&(t.y=-t.y),Q(t.u)||(t.S=Hl(t.u)),[Object.keys(t).reduce((o,a)=>{let u=e(a);return u&&(o[u]=t[a]),o},{}),r,n]}s(TR,"dateTimeFromMatches");var Il=null;function SR(){return Il||(Il=oe.fromMillis(1555555555555)),Il}s(SR,"getDummyDateTime");function AR(t,e){if(t.literal)return t;let r=We.macroTokenToFormatOpts(t.val),n=Gg(r,e);return n==null||n.includes(void 0)?t:n}s(AR,"maybeExpandMacroToken");function $g(t,e){return Array.prototype.concat(...t.map(r=>AR(r,e)))}s($g,"expandMacroTokens");var _a=class{static{s(this,"TokenParser")}constructor(e,r){if(this.locale=e,this.format=r,this.tokens=$g(We.parseFormat(r),e),this.units=this.tokens.map(n=>mR(n,e)),this.disqualifyingUnit=this.units.find(n=>n.invalidReason),!this.disqualifyingUnit){let[n,i]=gR(this.units);this.regex=RegExp(n,"i"),this.handlers=i}}explainFromTokens(e){if(this.isValid){let[r,n]=yR(e,this.regex,this.handlers),[i,o,a]=n?TR(n):[null,null,void 0];if(Fn(n,"a")&&Fn(n,"H"))throw new sr("Can't include meridiem when specifying 24-hour format");return{input:e,tokens:this.tokens,regex:this.regex,rawMatches:r,matches:n,result:i,zone:o,specificOffset:a}}else return{input:e,tokens:this.tokens,invalidReason:this.invalidReason}}get isValid(){return!this.disqualifyingUnit}get invalidReason(){return this.disqualifyingUnit?this.disqualifyingUnit.invalidReason:null}};function Vg(t,e,r){return new _a(t,r).explainFromTokens(e)}s(Vg,"explainFromTokens");function _R(t,e,r){let{result:n,zone:i,specificOffset:o,invalidReason:a}=Vg(t,e,r);return[n,i,o,a]}s(_R,"parseFromTokens");function Gg(t,e){if(!t)return null;let n=We.create(e,t).dtFormatter(SR()),i=n.formatToParts(),o=n.resolvedOptions();return i.map(a=>ER(a,t,o))}s(Gg,"formatOptsToTokens");var wl="Invalid DateTime",WE=864e13;function ss(t){return new $e("unsupported zone",`the zone "${t.name}" is not supported`)}s(ss,"unsupportedZone");function Dl(t){return t.weekData===null&&(t.weekData=Ta(t.c)),t.weekData}s(Dl,"possiblyCachedWeekData");function Rl(t){return t.localWeekData===null&&(t.localWeekData=Ta(t.c,t.loc.getMinDaysInFirstWeek(),t.loc.getStartOfWeek())),t.localWeekData}s(Rl,"possiblyCachedLocalWeekData");function Gr(t,e){let r={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new oe({...r,...e,old:r})}s(Gr,"clone");function qg(t,e,r){let n=t-e*60*1e3,i=r.offset(n);if(e===i)return[n,e];n-=(i-e)*60*1e3;let o=r.offset(n);return i===o?[n,i]:[t-Math.min(i,o)*60*1e3,Math.max(i,o)]}s(qg,"fixOffset");function da(t,e){t+=e*60*1e3;let r=new Date(t);return{year:r.getUTCFullYear(),month:r.getUTCMonth()+1,day:r.getUTCDate(),hour:r.getUTCHours(),minute:r.getUTCMinutes(),second:r.getUTCSeconds(),millisecond:r.getUTCMilliseconds()}}s(da,"tsToObj");function pa(t,e,r){return qg(Ia(t),e,r)}s(pa,"objToTS");function $E(t,e){let r=t.o,n=t.c.year+Math.trunc(e.years),i=t.c.month+Math.trunc(e.months)+Math.trunc(e.quarters)*3,o={...t.c,year:n,month:i,day:Math.min(t.c.day,Sa(n,i))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},a=ge.fromObject({years:e.years-Math.trunc(e.years),quarters:e.quarters-Math.trunc(e.quarters),months:e.months-Math.trunc(e.months),weeks:e.weeks-Math.trunc(e.weeks),days:e.days-Math.trunc(e.days),hours:e.hours,minutes:e.minutes,seconds:e.seconds,milliseconds:e.milliseconds}).as("milliseconds"),u=Ia(o),[c,l]=qg(u,r,t.zone);return a!==0&&(c+=a,l=t.zone.offset(c)),{ts:c,o:l}}s($E,"adjustTime");function Ln(t,e,r,n,i,o){let{setZone:a,zone:u}=r;if(t&&Object.keys(t).length!==0||e){let c=e||u,l=oe.fromObject(t,{...r,zone:c,specificOffset:o});return a?l:l.setZone(u)}else return oe.invalid(new $e("unparsable",`the input "${i}" can't be parsed as ${n}`))}s(Ln,"parseDataToDateTime");function fa(t,e,r=!0){return t.isValid?We.create(ee.create("en-US"),{allowZ:r,forceSimple:!0}).formatDateTimeFromString(t,e):null}s(fa,"toTechFormat");function Cl(t,e,r){let n=t.c.year>9999||t.c.year<0,i="";if(n&&t.c.year>=0&&(i+="+"),i+=me(t.c.year,n?6:4),r==="year")return i;if(e){if(i+="-",i+=me(t.c.month),r==="month")return i;i+="-"}else if(i+=me(t.c.month),r==="month")return i;return i+=me(t.c.day),i}s(Cl,"toISODate");function VE(t,e,r,n,i,o,a){let u=!r||t.c.millisecond!==0||t.c.second!==0,c="";switch(a){case"day":case"month":case"year":break;default:if(c+=me(t.c.hour),a==="hour")break;if(e){if(c+=":",c+=me(t.c.minute),a==="minute")break;u&&(c+=":",c+=me(t.c.second))}else{if(c+=me(t.c.minute),a==="minute")break;u&&(c+=me(t.c.second))}if(a==="second")break;u&&(!n||t.c.millisecond!==0)&&(c+=".",c+=me(t.c.millisecond,3))}return i&&(t.isOffsetFixed&&t.offset===0&&!o?c+="Z":t.o<0?(c+="-",c+=me(Math.trunc(-t.o/60)),c+=":",c+=me(Math.trunc(-t.o%60))):(c+="+",c+=me(Math.trunc(t.o/60)),c+=":",c+=me(Math.trunc(t.o%60)))),o&&(c+="["+t.zone.ianaName+"]"),c}s(VE,"toISOTime");var Kg={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},OR={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},IR={ordinal:1,hour:0,minute:0,second:0,millisecond:0},ma=["year","month","day","hour","minute","second","millisecond"],wR=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],DR=["year","ordinal","hour","minute","second","millisecond"];function ha(t){let e={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",quarter:"quarter",quarters:"quarter",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[t.toLowerCase()];if(!e)throw new Ea(t);return e}s(ha,"normalizeUnit");function GE(t){switch(t.toLowerCase()){case"localweekday":case"localweekdays":return"localWeekday";case"localweeknumber":case"localweeknumbers":return"localWeekNumber";case"localweekyear":case"localweekyears":return"localWeekYear";default:return ha(t)}}s(GE,"normalizeUnitWithLocalWeeks");function RR(t){if(os===void 0&&(os=re.now()),t.type!=="iana")return t.offset(os);let e=t.name,r=Kl.get(e);return r===void 0&&(r=t.offset(os),Kl.set(e,r)),r}s(RR,"guessOffsetForZone");function qE(t,e){let r=ir(e.zone,re.defaultZone);if(!r.isValid)return oe.invalid(ss(r));let n=ee.fromObject(e),i,o;if(Q(t.year))i=re.now();else{for(let c of ma)Q(t[c])&&(t[c]=Kg[c]);let a=yg(t)||Tg(t);if(a)return oe.invalid(a);let u=RR(r);[i,o]=pa(t,u,r)}return new oe({ts:i,zone:r,loc:n,o})}s(qE,"quickDT");function KE(t,e,r){let n=Q(r.round)?!0:r.round,i=Q(r.rounding)?"trunc":r.rounding,o=s((u,c)=>(u=zl(u,n||r.calendary?0:2,r.calendary?"round":i),e.loc.clone(r).relFormatter(r).format(u,c)),"format"),a=s(u=>r.calendary?e.hasSame(t,u)?0:e.startOf(u).diff(t.startOf(u),u).get(u):e.diff(t,u).get(u),"differ");if(r.unit)return o(a(r.unit),r.unit);for(let u of r.units){let c=a(u);if(Math.abs(c)>=1)return o(c,u)}return o(t>e?-0:0,r.units[r.units.length-1])}s(KE,"diffRelative");function QE(t){let e={},r;return t.length>0&&typeof t[t.length-1]=="object"?(e=t[t.length-1],r=Array.from(t).slice(0,t.length-1)):r=Array.from(t),[e,r]}s(QE,"lastOpts");var os,Kl=new Map,oe=class t{static{s(this,"DateTime")}constructor(e){let r=e.zone||re.defaultZone,n=e.invalid||(Number.isNaN(e.ts)?new $e("invalid input"):null)||(r.isValid?null:ss(r));this.ts=Q(e.ts)?re.now():e.ts;let i=null,o=null;if(!n)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(r))[i,o]=[e.old.c,e.old.o];else{let u=or(e.o)&&!e.old?e.o:r.offset(this.ts);i=da(this.ts,u),n=Number.isNaN(i.year)?new $e("invalid input"):null,i=n?null:i,o=n?null:u}this._zone=r,this.loc=e.loc||ee.create(),this.invalid=n,this.weekData=null,this.localWeekData=null,this.c=i,this.o=o,this.isLuxonDateTime=!0}static now(){return new t({})}static local(){let[e,r]=QE(arguments),[n,i,o,a,u,c,l]=r;return qE({year:n,month:i,day:o,hour:a,minute:u,second:c,millisecond:l},e)}static utc(){let[e,r]=QE(arguments),[n,i,o,a,u,c,l]=r;return e.zone=Ge.utcInstance,qE({year:n,month:i,day:o,hour:a,minute:u,second:c,millisecond:l},e)}static fromJSDate(e,r={}){let n=sD(e)?e.valueOf():NaN;if(Number.isNaN(n))return t.invalid("invalid input");let i=ir(r.zone,re.defaultZone);return i.isValid?new t({ts:n,zone:i,loc:ee.fromObject(r)}):t.invalid(ss(i))}static fromMillis(e,r={}){if(or(e))return e<-WE||e>WE?t.invalid("Timestamp out of range"):new t({ts:e,zone:ir(r.zone,re.defaultZone),loc:ee.fromObject(r)});throw new _e(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,r={}){if(or(e))return new t({ts:e*1e3,zone:ir(r.zone,re.defaultZone),loc:ee.fromObject(r)});throw new _e("fromSeconds requires a numerical input")}static fromObject(e,r={}){e=e||{};let n=ir(r.zone,re.defaultZone);if(!n.isValid)return t.invalid(ss(n));let i=ee.fromObject(r),o=Aa(e,GE),{minDaysInFirstWeek:a,startOfWeek:u}=bE(o,i),c=re.now(),l=Q(r.specificOffset)?n.offset(c):r.specificOffset,d=!Q(o.ordinal),f=!Q(o.year),p=!Q(o.month)||!Q(o.day),m=f||p,h=o.weekYear||o.weekNumber;if((m||d)&&h)throw new sr("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(p&&d)throw new sr("Can't mix ordinal dates with month/day");let g=h||o.weekday&&!m,y,S,O=da(c,l);g?(y=wR,S=OR,O=Ta(O,a,u)):d?(y=DR,S=IR,O=Ol(O)):(y=ma,S=Kg);let _=!1;for(let Y of y){let bt=o[Y];Q(bt)?_?o[Y]=S[Y]:o[Y]=O[Y]:_=!0}let D=g?rD(o,a,u):d?nD(o):yg(o),T=D||Tg(o);if(T)return t.invalid(T);let I=g?RE(o,a,u):d?CE(o):o,[M,P]=pa(I,l,n),k=new t({ts:M,zone:n,o:P,loc:i});return o.weekday&&m&&e.weekday!==k.weekday?t.invalid("mismatched weekday",`you can't specify both a weekday of ${o.weekday} and a date of ${k.toISO()}`):k.isValid?k:t.invalid(k.invalid)}static fromISO(e,r={}){let[n,i]=YD(e);return Ln(n,i,r,"ISO 8601",e)}static fromRFC2822(e,r={}){let[n,i]=HD(e);return Ln(n,i,r,"RFC 2822",e)}static fromHTTP(e,r={}){let[n,i]=zD(e);return Ln(n,i,r,"HTTP",r)}static fromFormat(e,r,n={}){if(Q(e)||Q(r))throw new _e("fromFormat requires an input string and a format");let{locale:i=null,numberingSystem:o=null}=n,a=ee.fromOpts({locale:i,numberingSystem:o,defaultToEN:!0}),[u,c,l,d]=_R(a,e,r);return d?t.invalid(d):Ln(u,c,n,`format ${r}`,e,l)}static fromString(e,r,n={}){return t.fromFormat(e,r,n)}static fromSQL(e,r={}){let[n,i]=nR(e);return Ln(n,i,r,"SQL",e)}static invalid(e,r=null){if(!e)throw new _e("need to specify a reason the DateTime is invalid");let n=e instanceof $e?e:new $e(e,r);if(re.throwOnInvalid)throw new bl(n);return new t({invalid:n})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}static parseFormatForOpts(e,r={}){let n=Gg(e,ee.fromObject(r));return n?n.map(i=>i?i.val:null).join(""):null}static expandFormat(e,r={}){return $g(We.parseFormat(e),ee.fromObject(r)).map(i=>i.val).join("")}static resetCache(){os=void 0,Kl.clear()}get(e){return this[e]}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?Dl(this).weekYear:NaN}get weekNumber(){return this.isValid?Dl(this).weekNumber:NaN}get weekday(){return this.isValid?Dl(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?Rl(this).weekday:NaN}get localWeekNumber(){return this.isValid?Rl(this).weekNumber:NaN}get localWeekYear(){return this.isValid?Rl(this).weekYear:NaN}get ordinal(){return this.isValid?Ol(this.c).ordinal:NaN}get monthShort(){return this.isValid?Kr.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?Kr.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?Kr.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?Kr.weekdays("long",{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:"short",locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:"long",locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return this.isOffsetFixed?!1:this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset}getPossibleOffsets(){if(!this.isValid||this.isOffsetFixed)return[this];let e=864e5,r=6e4,n=Ia(this.c),i=this.zone.offset(n-e),o=this.zone.offset(n+e),a=this.zone.offset(n-i*r),u=this.zone.offset(n-o*r);if(a===u)return[this];let c=n-a*r,l=n-u*r,d=da(c,a),f=da(l,u);return d.hour===f.hour&&d.minute===f.minute&&d.second===f.second&&d.millisecond===f.millisecond?[Gr(this,{ts:c}),Gr(this,{ts:l})]:[this]}get isInLeapYear(){return ls(this.year)}get daysInMonth(){return Sa(this.year,this.month)}get daysInYear(){return this.isValid?kn(this.year):NaN}get weeksInWeekYear(){return this.isValid?cs(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?cs(this.localWeekYear,this.loc.getMinDaysInFirstWeek(),this.loc.getStartOfWeek()):NaN}resolvedLocaleOptions(e={}){let{locale:r,numberingSystem:n,calendar:i}=We.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:r,numberingSystem:n,outputCalendar:i}}toUTC(e=0,r={}){return this.setZone(Ge.instance(e),r)}toLocal(){return this.setZone(re.defaultZone)}setZone(e,{keepLocalTime:r=!1,keepCalendarTime:n=!1}={}){if(e=ir(e,re.defaultZone),e.equals(this.zone))return this;if(e.isValid){let i=this.ts;if(r||n){let o=e.offset(this.ts),a=this.toObject();[i]=pa(a,o,e)}return Gr(this,{ts:i,zone:e})}else return t.invalid(ss(e))}reconfigure({locale:e,numberingSystem:r,outputCalendar:n}={}){let i=this.loc.clone({locale:e,numberingSystem:r,outputCalendar:n});return Gr(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;let r=Aa(e,GE),{minDaysInFirstWeek:n,startOfWeek:i}=bE(r,this.loc),o=!Q(r.weekYear)||!Q(r.weekNumber)||!Q(r.weekday),a=!Q(r.ordinal),u=!Q(r.year),c=!Q(r.month)||!Q(r.day),l=u||c,d=r.weekYear||r.weekNumber;if((l||a)&&d)throw new sr("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(c&&a)throw new sr("Can't mix ordinal dates with month/day");let f;o?f=RE({...Ta(this.c,n,i),...r},n,i):Q(r.ordinal)?(f={...this.toObject(),...r},Q(r.day)&&(f.day=Math.min(Sa(f.year,f.month),f.day))):f=CE({...Ol(this.c),...r});let[p,m]=pa(f,this.o,this.zone);return Gr(this,{ts:p,o:m})}plus(e){if(!this.isValid)return this;let r=ge.fromDurationLike(e);return Gr(this,$E(this,r))}minus(e){if(!this.isValid)return this;let r=ge.fromDurationLike(e).negate();return Gr(this,$E(this,r))}startOf(e,{useLocaleWeeks:r=!1}={}){if(!this.isValid)return this;let n={},i=ge.normalizeUnit(e);switch(i){case"years":n.month=1;case"quarters":case"months":n.day=1;case"weeks":case"days":n.hour=0;case"hours":n.minute=0;case"minutes":n.second=0;case"seconds":n.millisecond=0;break}if(i==="weeks")if(r){let o=this.loc.getStartOfWeek(),{weekday:a}=this;a<o&&(n.weekNumber=this.weekNumber-1),n.weekday=o}else n.weekday=1;if(i==="quarters"){let o=Math.ceil(this.month/3);n.month=(o-1)*3+1}return this.set(n)}endOf(e,r){return this.isValid?this.plus({[e]:1}).startOf(e,r).minus(1):this}toFormat(e,r={}){return this.isValid?We.create(this.loc.redefaultToEN(r)).formatDateTimeFromString(this,e):wl}toLocaleString(e=ga,r={}){return this.isValid?We.create(this.loc.clone(r),e).formatDateTime(this):wl}toLocaleParts(e={}){return this.isValid?We.create(this.loc.clone(e),e).formatDateTimeParts(this):[]}toISO({format:e="extended",suppressSeconds:r=!1,suppressMilliseconds:n=!1,includeOffset:i=!0,extendedZone:o=!1,precision:a="milliseconds"}={}){if(!this.isValid)return null;a=ha(a);let u=e==="extended",c=Cl(this,u,a);return ma.indexOf(a)>=3&&(c+="T"),c+=VE(this,u,r,n,i,o,a),c}toISODate({format:e="extended",precision:r="day"}={}){return this.isValid?Cl(this,e==="extended",ha(r)):null}toISOWeekDate(){return fa(this,"kkkk-'W'WW-c")}toISOTime({suppressMilliseconds:e=!1,suppressSeconds:r=!1,includeOffset:n=!0,includePrefix:i=!1,extendedZone:o=!1,format:a="extended",precision:u="milliseconds"}={}){return this.isValid?(u=ha(u),(i&&ma.indexOf(u)>=3?"T":"")+VE(this,a==="extended",r,e,n,o,u)):null}toRFC2822(){return fa(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return fa(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?Cl(this,!0):null}toSQLTime({includeOffset:e=!0,includeZone:r=!1,includeOffsetSpace:n=!0}={}){let i="HH:mm:ss.SSS";return(r||e)&&(n&&(i+=" "),r?i+="z":e&&(i+="ZZ")),fa(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():wl}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`DateTime { ts: ${this.toISO()}, zone: ${this.zone.name}, locale: ${this.locale} }`:`DateTime { Invalid, reason: ${this.invalidReason} }`}valueOf(){return this.toMillis()}toMillis(){return this.isValid?this.ts:NaN}toSeconds(){return this.isValid?this.ts/1e3:NaN}toUnixInteger(){return this.isValid?Math.floor(this.ts/1e3):NaN}toJSON(){return this.toISO()}toBSON(){return this.toJSDate()}toObject(e={}){if(!this.isValid)return{};let r={...this.c};return e.includeConfig&&(r.outputCalendar=this.outputCalendar,r.numberingSystem=this.loc.numberingSystem,r.locale=this.loc.locale),r}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(e,r="milliseconds",n={}){if(!this.isValid||!e.isValid)return ge.invalid("created by diffing an invalid DateTime");let i={locale:this.locale,numberingSystem:this.numberingSystem,...n},o=oD(r).map(ge.normalizeUnit),a=e.valueOf()>this.valueOf(),u=a?this:e,c=a?e:this,l=cR(u,c,o,i);return a?l.negate():l}diffNow(e="milliseconds",r={}){return this.diff(t.now(),e,r)}until(e){return this.isValid?Qr.fromDateTimes(this,e):this}hasSame(e,r,n){if(!this.isValid)return!1;let i=e.valueOf(),o=this.setZone(e.zone,{keepLocalTime:!0});return o.startOf(r,n)<=i&&i<=o.endOf(r,n)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(e={}){if(!this.isValid)return null;let r=e.base||t.fromObject({},{zone:this.zone}),n=e.padding?this<r?-e.padding:e.padding:0,i=["years","months","days","hours","minutes","seconds"],o=e.unit;return Array.isArray(e.unit)&&(i=e.unit,o=void 0),KE(r,this.plus(n),{...e,numeric:"always",units:i,unit:o})}toRelativeCalendar(e={}){return this.isValid?KE(e.base||t.fromObject({},{zone:this.zone}),this,{...e,numeric:"auto",units:["years","months","days"],calendary:!0}):null}static min(...e){if(!e.every(t.isDateTime))throw new _e("min requires all arguments be DateTimes");return xE(e,r=>r.valueOf(),Math.min)}static max(...e){if(!e.every(t.isDateTime))throw new _e("max requires all arguments be DateTimes");return xE(e,r=>r.valueOf(),Math.max)}static fromFormatExplain(e,r,n={}){let{locale:i=null,numberingSystem:o=null}=n,a=ee.fromOpts({locale:i,numberingSystem:o,defaultToEN:!0});return Vg(a,e,r)}static fromStringExplain(e,r,n={}){return t.fromFormatExplain(e,r,n)}static buildFormatParser(e,r={}){let{locale:n=null,numberingSystem:i=null}=r,o=ee.fromOpts({locale:n,numberingSystem:i,defaultToEN:!0});return new _a(o,e)}static fromFormatParser(e,r,n={}){if(Q(e)||Q(r))throw new _e("fromFormatParser requires an input string and a format parser");let{locale:i=null,numberingSystem:o=null}=n,a=ee.fromOpts({locale:i,numberingSystem:o,defaultToEN:!0});if(!a.equals(r.locale))throw new _e(`fromFormatParser called with a locale of ${a}, but the format parser was created for ${r.locale}`);let{result:u,zone:c,specificOffset:l,invalidReason:d}=r.explainFromTokens(e);return d?t.invalid(d):Ln(u,c,n,`format ${r.format}`,e,l)}static get DATE_SHORT(){return ga}static get DATE_MED(){return jE}static get DATE_MED_WITH_WEEKDAY(){return Mw}static get DATE_FULL(){return YE}static get DATE_HUGE(){return HE}static get TIME_SIMPLE(){return zE}static get TIME_WITH_SECONDS(){return JE}static get TIME_WITH_SHORT_OFFSET(){return ZE}static get TIME_WITH_LONG_OFFSET(){return XE}static get TIME_24_SIMPLE(){return eg}static get TIME_24_WITH_SECONDS(){return tg}static get TIME_24_WITH_SHORT_OFFSET(){return rg}static get TIME_24_WITH_LONG_OFFSET(){return ng}static get DATETIME_SHORT(){return ig}static get DATETIME_SHORT_WITH_SECONDS(){return sg}static get DATETIME_MED(){return og}static get DATETIME_MED_WITH_SECONDS(){return ag}static get DATETIME_MED_WITH_WEEKDAY(){return Fw}static get DATETIME_FULL(){return ug}static get DATETIME_FULL_WITH_SECONDS(){return cg}static get DATETIME_HUGE(){return lg}static get DATETIME_HUGE_WITH_SECONDS(){return dg}};function ns(t){if(oe.isDateTime(t))return t;if(t&&t.valueOf&&or(t.valueOf()))return oe.fromJSDate(t);if(t&&typeof t=="object")return oe.fromObject(t);throw new _e(`Unknown datetime argument: ${t}, of type ${typeof t}`)}s(ns,"friendlyDateTime");var CR="3.7.1";qe.DateTime=oe;qe.Duration=ge;qe.FixedOffsetZone=Ge;qe.IANAZone=Mt;qe.Info=Kr;qe.Interval=Qr;qe.InvalidZone=ya;qe.Settings=re;qe.SystemZone=us;qe.VERSION=CR;qe.Zone=ar});var Yg=q((pF,jg)=>{"use strict";var jr=Qg();j.prototype.addYear=function(){this._date=this._date.plus({years:1})};j.prototype.addMonth=function(){this._date=this._date.plus({months:1}).startOf("month")};j.prototype.addDay=function(){this._date=this._date.plus({days:1}).startOf("day")};j.prototype.addHour=function(){var t=this._date;this._date=this._date.plus({hours:1}).startOf("hour"),this._date<=t&&(this._date=this._date.plus({hours:1}))};j.prototype.addMinute=function(){var t=this._date;this._date=this._date.plus({minutes:1}).startOf("minute"),this._date<t&&(this._date=this._date.plus({hours:1}))};j.prototype.addSecond=function(){var t=this._date;this._date=this._date.plus({seconds:1}).startOf("second"),this._date<t&&(this._date=this._date.plus({hours:1}))};j.prototype.subtractYear=function(){this._date=this._date.minus({years:1})};j.prototype.subtractMonth=function(){this._date=this._date.minus({months:1}).endOf("month").startOf("second")};j.prototype.subtractDay=function(){this._date=this._date.minus({days:1}).endOf("day").startOf("second")};j.prototype.subtractHour=function(){var t=this._date;this._date=this._date.minus({hours:1}).endOf("hour").startOf("second"),this._date>=t&&(this._date=this._date.minus({hours:1}))};j.prototype.subtractMinute=function(){var t=this._date;this._date=this._date.minus({minutes:1}).endOf("minute").startOf("second"),this._date>t&&(this._date=this._date.minus({hours:1}))};j.prototype.subtractSecond=function(){var t=this._date;this._date=this._date.minus({seconds:1}).startOf("second"),this._date>t&&(this._date=this._date.minus({hours:1}))};j.prototype.getDate=function(){return this._date.day};j.prototype.getFullYear=function(){return this._date.year};j.prototype.getDay=function(){var t=this._date.weekday;return t==7?0:t};j.prototype.getMonth=function(){return this._date.month-1};j.prototype.getHours=function(){return this._date.hour};j.prototype.getMinutes=function(){return this._date.minute};j.prototype.getSeconds=function(){return this._date.second};j.prototype.getMilliseconds=function(){return this._date.millisecond};j.prototype.getTime=function(){return this._date.valueOf()};j.prototype.getUTCDate=function(){return this._getUTC().day};j.prototype.getUTCFullYear=function(){return this._getUTC().year};j.prototype.getUTCDay=function(){var t=this._getUTC().weekday;return t==7?0:t};j.prototype.getUTCMonth=function(){return this._getUTC().month-1};j.prototype.getUTCHours=function(){return this._getUTC().hour};j.prototype.getUTCMinutes=function(){return this._getUTC().minute};j.prototype.getUTCSeconds=function(){return this._getUTC().second};j.prototype.toISOString=function(){return this._date.toUTC().toISO()};j.prototype.toJSON=function(){return this._date.toJSON()};j.prototype.setDate=function(t){this._date=this._date.set({day:t})};j.prototype.setFullYear=function(t){this._date=this._date.set({year:t})};j.prototype.setDay=function(t){this._date=this._date.set({weekday:t})};j.prototype.setMonth=function(t){this._date=this._date.set({month:t+1})};j.prototype.setHours=function(t){this._date=this._date.set({hour:t})};j.prototype.setMinutes=function(t){this._date=this._date.set({minute:t})};j.prototype.setSeconds=function(t){this._date=this._date.set({second:t})};j.prototype.setMilliseconds=function(t){this._date=this._date.set({millisecond:t})};j.prototype._getUTC=function(){return this._date.toUTC()};j.prototype.toString=function(){return this.toDate().toString()};j.prototype.toDate=function(){return this._date.toJSDate()};j.prototype.isLastDayOfMonth=function(){var t=this._date.plus({days:1}).startOf("day");return this._date.month!==t.month};j.prototype.isLastWeekdayOfMonth=function(){var t=this._date.plus({days:7}).startOf("day");return this._date.month!==t.month};function j(t,e){var r={zone:e};if(t?t instanceof j?this._date=t._date:t instanceof Date?this._date=jr.DateTime.fromJSDate(t,r):typeof t=="number"?this._date=jr.DateTime.fromMillis(t,r):typeof t=="string"&&(this._date=jr.DateTime.fromISO(t,r),this._date.isValid||(this._date=jr.DateTime.fromRFC2822(t,r)),this._date.isValid||(this._date=jr.DateTime.fromSQL(t,r)),this._date.isValid||(this._date=jr.DateTime.fromFormat(t,"EEE, d MMM yyyy HH:mm:ss",r))):this._date=jr.DateTime.local(),!this._date||!this._date.isValid)throw new Error("CronDate: unhandled timestamp: "+JSON.stringify(t));e&&e!==this._date.zoneName&&(this._date=this._date.setZone(e))}s(j,"CronDate");jg.exports=j});var Jg=q((hF,zg)=>{"use strict";function Yr(t){return{start:t,count:1}}s(Yr,"buildRange");function Hg(t,e){t.end=e,t.step=e-t.start,t.count=2}s(Hg,"completeRangeWithItem");function ed(t,e,r){e&&(e.count===2?(t.push(Yr(e.start)),t.push(Yr(e.end))):t.push(e)),r&&t.push(r)}s(ed,"finalizeCurrentRange");function bR(t){for(var e=[],r=void 0,n=0;n<t.length;n++){var i=t[n];typeof i!="number"?(ed(e,r,Yr(i)),r=void 0):r?r.count===1?Hg(r,i):r.step===i-r.end?(r.count++,r.end=i):r.count===2?(e.push(Yr(r.start)),r=Yr(r.end),Hg(r,i)):(ed(e,r),r=Yr(i)):r=Yr(i)}return ed(e,r),e}s(bR,"compactField");zg.exports=bR});var Xg=q((gF,Zg)=>{"use strict";var xR=Jg();function vR(t,e,r){var n=xR(t);if(n.length===1){var i=n[0],o=i.step;if(o===1&&i.start===e&&i.end===r)return"*";if(o!==1&&i.start===e&&i.end===r-o+1)return"*/"+o}for(var a=[],u=0,c=n.length;u<c;++u){var l=n[u];if(l.count===1){a.push(l.start);continue}var o=l.step;if(l.step===1){a.push(l.start+"-"+l.end);continue}var d=l.start==0?l.count-1:l.count;l.step*d>l.end?a=a.concat(Array.from({length:l.end-l.start+1}).map(function(p,m){var h=l.start+m;return(h-l.start)%l.step===0?h:null}).filter(function(p){return p!=null})):l.end===r-l.step+1?a.push(l.start+"/"+l.step):a.push(l.start+"-"+l.end+"/"+l.step)}return a.join(",")}s(vR,"stringifyField");Zg.exports=vR});var ry=q((TF,ty)=>{"use strict";var Hr=Yg(),PR=Xg(),ey=1e4;function U(t,e){this._options=e,this._utc=e.utc||!1,this._tz=this._utc?"UTC":e.tz,this._currentDate=new Hr(e.currentDate,this._tz),this._startDate=e.startDate?new Hr(e.startDate,this._tz):null,this._endDate=e.endDate?new Hr(e.endDate,this._tz):null,this._isIterator=e.iterator||!1,this._hasIterated=!1,this._nthDayOfWeek=e.nthDayOfWeek||0,this.fields=U._freezeFields(t)}s(U,"CronExpression");U.map=["second","minute","hour","dayOfMonth","month","dayOfWeek"];U.predefined={"@yearly":"0 0 1 1 *","@monthly":"0 0 1 * *","@weekly":"0 0 * * 0","@daily":"0 0 * * *","@hourly":"0 * * * *"};U.constraints=[{min:0,max:59,chars:[]},{min:0,max:59,chars:[]},{min:0,max:23,chars:[]},{min:1,max:31,chars:["L"]},{min:1,max:12,chars:[]},{min:0,max:7,chars:["L"]}];U.daysInMonth=[31,29,31,30,31,30,31,31,30,31,30,31];U.aliases={month:{jan:1,feb:2,mar:3,apr:4,may:5,jun:6,jul:7,aug:8,sep:9,oct:10,nov:11,dec:12},dayOfWeek:{sun:0,mon:1,tue:2,wed:3,thu:4,fri:5,sat:6}};U.parseDefaults=["0","*","*","*","*","*"];U.standardValidCharacters=/^[,*\d/-]+$/;U.dayOfWeekValidCharacters=/^[?,*\dL#/-]+$/;U.dayOfMonthValidCharacters=/^[?,*\dL/-]+$/;U.validCharacters={second:U.standardValidCharacters,minute:U.standardValidCharacters,hour:U.standardValidCharacters,dayOfMonth:U.dayOfMonthValidCharacters,month:U.standardValidCharacters,dayOfWeek:U.dayOfWeekValidCharacters};U._isValidConstraintChar=s(function(e,r){return typeof r!="string"?!1:e.chars.some(function(n){return r.indexOf(n)>-1})},"_isValidConstraintChar");U._parseField=s(function(e,r,n){switch(e){case"month":case"dayOfWeek":var i=U.aliases[e];r=r.replace(/[a-z]{3}/gi,function(c){if(c=c.toLowerCase(),typeof i[c]<"u")return i[c];throw new Error('Validation error, cannot resolve alias "'+c+'"')});break}if(!U.validCharacters[e].test(r))throw new Error("Invalid characters, got value: "+r);r.indexOf("*")!==-1?r=r.replace(/\*/g,n.min+"-"+n.max):r.indexOf("?")!==-1&&(r=r.replace(/\?/g,n.min+"-"+n.max));function o(c){var l=[];function d(h){if(h instanceof Array)for(var g=0,y=h.length;g<y;g++){var S=h[g];if(U._isValidConstraintChar(n,S)){l.push(S);continue}if(typeof S!="number"||Number.isNaN(S)||S<n.min||S>n.max)throw new Error("Constraint error, got value "+S+" expected range "+n.min+"-"+n.max);l.push(S)}else{if(U._isValidConstraintChar(n,h)){l.push(h);return}var O=+h;if(Number.isNaN(O)||O<n.min||O>n.max)throw new Error("Constraint error, got value "+h+" expected range "+n.min+"-"+n.max);e==="dayOfWeek"&&(O=O%7),l.push(O)}}s(d,"handleResult");var f=c.split(",");if(!f.every(function(h){return h.length>0}))throw new Error("Invalid list value format");if(f.length>1)for(var p=0,m=f.length;p<m;p++)d(a(f[p]));else d(a(c));return l.sort(U._sortCompareFn),l}s(o,"parseSequence");function a(c){var l=1,d=c.split("/");if(d.length>2)throw new Error("Invalid repeat: "+c);return d.length>1?(d[0]==+d[0]&&(d=[d[0]+"-"+n.max,d[1]]),u(d[0],d[d.length-1])):u(c,l)}s(a,"parseRepeat");function u(c,l){var d=[],f=c.split("-");if(f.length>1){if(f.length<2)return+c;if(!f[0].length){if(!f[1].length)throw new Error("Invalid range: "+c);return+c}var p=+f[0],m=+f[1];if(Number.isNaN(p)||Number.isNaN(m)||p<n.min||m>n.max)throw new Error("Constraint error, got range "+p+"-"+m+" expected range "+n.min+"-"+n.max);if(p>m)throw new Error("Invalid range: "+c);var h=+l;if(Number.isNaN(h)||h<=0)throw new Error("Constraint error, cannot repeat at every "+h+" time.");e==="dayOfWeek"&&m%7===0&&d.push(0);for(var g=p,y=m;g<=y;g++){var S=d.indexOf(g)!==-1;!S&&h>0&&h%l===0?(h=1,d.push(g)):h++}return d}return Number.isNaN(+c)?c:+c}return s(u,"parseRange"),o(r)},"_parseField");U._sortCompareFn=function(t,e){var r=typeof t=="number",n=typeof e=="number";return r&&n?t-e:!r&&n?1:r&&!n?-1:t.localeCompare(e)};U._handleMaxDaysInMonth=function(t){if(t.month.length===1){var e=U.daysInMonth[t.month[0]-1];if(t.dayOfMonth[0]>e)throw new Error("Invalid explicit day of month definition");return t.dayOfMonth.filter(function(r){return r==="L"?!0:r<=e}).sort(U._sortCompareFn)}};U._freezeFields=function(t){for(var e=0,r=U.map.length;e<r;++e){var n=U.map[e],i=t[n];t[n]=Object.freeze(i)}return Object.freeze(t)};U.prototype._applyTimezoneShift=function(t,e,r){if(r==="Month"||r==="Day"){var n=t.getTime();t[e+r]();var i=t.getTime();n===i&&(t.getMinutes()===0&&t.getSeconds()===0?t.addHour():t.getMinutes()===59&&t.getSeconds()===59&&t.subtractHour())}else{var o=t.getHours();t[e+r]();var a=t.getHours(),u=a-o;u===2?this.fields.hour.length!==24&&(this._dstStart=a):u===0&&t.getMinutes()===0&&t.getSeconds()===0&&this.fields.hour.length!==24&&(this._dstEnd=a)}};U.prototype._findSchedule=s(function(e){function r(S,O){for(var _=0,D=O.length;_<D;_++)if(O[_]>=S)return O[_]===S;return O[0]===S}s(r,"matchSchedule");function n(S,O){if(O<6){if(S.getDate()<8&&O===1)return!0;var _=S.getDate()%7?1:0,D=S.getDate()-S.getDate()%7,T=Math.floor(D/7)+_;return T===O}return!1}s(n,"isNthDayMatch");function i(S){return S.length>0&&S.some(function(O){return typeof O=="string"&&O.indexOf("L")>=0})}s(i,"isLInExpressions"),e=e||!1;var o=e?"subtract":"add",a=new Hr(this._currentDate,this._tz),u=this._startDate,c=this._endDate,l=a.getTime(),d=0;function f(S){return S.some(function(O){if(!i([O]))return!1;var _=Number.parseInt(O[0])%7;if(Number.isNaN(_))throw new Error("Invalid last weekday of the month expression: "+O);return a.getDay()===_&&a.isLastWeekdayOfMonth()})}for(s(f,"isLastWeekdayOfMonthMatch");d<ey;){if(d++,e){if(u&&a.getTime()-u.getTime()<0)throw new Error("Out of the timespan range")}else if(c&&c.getTime()-a.getTime()<0)throw new Error("Out of the timespan range");var p=r(a.getDate(),this.fields.dayOfMonth);i(this.fields.dayOfMonth)&&(p=p||a.isLastDayOfMonth());var m=r(a.getDay(),this.fields.dayOfWeek);i(this.fields.dayOfWeek)&&(m=m||f(this.fields.dayOfWeek));var h=this.fields.dayOfMonth.length>=U.daysInMonth[a.getMonth()],g=this.fields.dayOfWeek.length===U.constraints[5].max-U.constraints[5].min+1,y=a.getHours();if(!p&&(!m||g)){this._applyTimezoneShift(a,o,"Day");continue}if(!h&&g&&!p){this._applyTimezoneShift(a,o,"Day");continue}if(h&&!g&&!m){this._applyTimezoneShift(a,o,"Day");continue}if(this._nthDayOfWeek>0&&!n(a,this._nthDayOfWeek)){this._applyTimezoneShift(a,o,"Day");continue}if(!r(a.getMonth()+1,this.fields.month)){this._applyTimezoneShift(a,o,"Month");continue}if(r(y,this.fields.hour)){if(this._dstEnd===y&&!e){this._dstEnd=null,this._applyTimezoneShift(a,"add","Hour");continue}}else if(this._dstStart!==y){this._dstStart=null,this._applyTimezoneShift(a,o,"Hour");continue}else if(!r(y-1,this.fields.hour)){a[o+"Hour"]();continue}if(!r(a.getMinutes(),this.fields.minute)){this._applyTimezoneShift(a,o,"Minute");continue}if(!r(a.getSeconds(),this.fields.second)){this._applyTimezoneShift(a,o,"Second");continue}if(l===a.getTime()){o==="add"||a.getMilliseconds()===0?this._applyTimezoneShift(a,o,"Second"):a.setMilliseconds(0);continue}break}if(d>=ey)throw new Error("Invalid expression, loop limit exceeded");return this._currentDate=new Hr(a,this._tz),this._hasIterated=!0,a},"_findSchedule");U.prototype.next=s(function(){var e=this._findSchedule();return this._isIterator?{value:e,done:!this.hasNext()}:e},"next");U.prototype.prev=s(function(){var e=this._findSchedule(!0);return this._isIterator?{value:e,done:!this.hasPrev()}:e},"prev");U.prototype.hasNext=function(){var t=this._currentDate,e=this._hasIterated;try{return this._findSchedule(),!0}catch{return!1}finally{this._currentDate=t,this._hasIterated=e}};U.prototype.hasPrev=function(){var t=this._currentDate,e=this._hasIterated;try{return this._findSchedule(!0),!0}catch{return!1}finally{this._currentDate=t,this._hasIterated=e}};U.prototype.iterate=s(function(e,r){var n=[];if(e>=0)for(var i=0,o=e;i<o;i++)try{var a=this.next();n.push(a),r&&r(a,i)}catch{break}else for(var i=0,o=e;i>o;i--)try{var a=this.prev();n.push(a),r&&r(a,i)}catch{break}return n},"iterate");U.prototype.reset=s(function(e){this._currentDate=new Hr(e||this._options.currentDate)},"reset");U.prototype.stringify=s(function(e){for(var r=[],n=e?0:1,i=U.map.length;n<i;++n){var o=U.map[n],a=this.fields[o],u=U.constraints[n];o==="dayOfMonth"&&this.fields.month.length===1?u={min:1,max:U.daysInMonth[this.fields.month[0]-1]}:o==="dayOfWeek"&&(u={min:0,max:6},a=a[a.length-1]===7?a.slice(0,-1):a),r.push(PR(a,u.min,u.max))}return r.join(" ")},"stringify");U.parse=s(function(e,r){var n=this;typeof r=="function"&&(r={});function i(o,a){a||(a={}),typeof a.currentDate>"u"&&(a.currentDate=new Hr(void 0,n._tz)),U.predefined[o]&&(o=U.predefined[o]);var u=[],c=(o+"").trim().split(/\s+/);if(c.length>6)throw new Error("Invalid cron expression");for(var l=U.map.length-c.length,d=0,f=U.map.length;d<f;++d){var p=U.map[d],m=c[c.length>f?d:d-l];if(d<l||!m)u.push(U._parseField(p,U.parseDefaults[d],U.constraints[d]));else{var h=p==="dayOfWeek"?O(m):m;u.push(U._parseField(p,h,U.constraints[d]))}}for(var g={},d=0,f=U.map.length;d<f;d++){var y=U.map[d];g[y]=u[d]}var S=U._handleMaxDaysInMonth(g);return g.dayOfMonth=S||g.dayOfMonth,new U(g,a);function O(_){var D=_.split("#");if(D.length>1){var T=+D[D.length-1];if(/,/.test(_))throw new Error("Constraint error, invalid dayOfWeek `#` and `,` special characters are incompatible");if(/\//.test(_))throw new Error("Constraint error, invalid dayOfWeek `#` and `/` special characters are incompatible");if(/-/.test(_))throw new Error("Constraint error, invalid dayOfWeek `#` and `-` special characters are incompatible");if(D.length>2||Number.isNaN(T)||T<1||T>5)throw new Error("Constraint error, invalid dayOfWeek occurrence number (#)");return a.nthDayOfWeek=T,D[0]}return _}s(O,"parseNthDay")}return s(i,"parse"),i(e,r)},"parse");U.fieldsToExpression=s(function(e,r){function n(p,m,h){if(!m)throw new Error("Validation error, Field "+p+" is missing");if(m.length===0)throw new Error("Validation error, Field "+p+" contains no values");for(var g=0,y=m.length;g<y;g++){var S=m[g];if(!U._isValidConstraintChar(h,S)&&(typeof S!="number"||Number.isNaN(S)||S<h.min||S>h.max))throw new Error("Constraint error, got value "+S+" expected range "+h.min+"-"+h.max)}}s(n,"validateConstraints");for(var i={},o=0,a=U.map.length;o<a;++o){var u=U.map[o],c=e[u];n(u,c,U.constraints[o]);for(var l=[],d=-1;++d<c.length;)l[d]=c[d];if(c=l.sort(U._sortCompareFn).filter(function(p,m,h){return!m||p!==h[m-1]}),c.length!==l.length)throw new Error("Validation error, Field "+u+" contains duplicate values");i[u]=c}var f=U._handleMaxDaysInMonth(i);return i.dayOfMonth=f||i.dayOfMonth,new U(i,r||{})},"fieldsToExpression");ty.exports=U});var iy=q((AF,ny)=>{"use strict";var Ra=ry();function ur(){}s(ur,"CronParser");ur._parseEntry=s(function(e){var r=e.split(" ");if(r.length===6)return{interval:Ra.parse(e)};if(r.length>6)return{interval:Ra.parse(r.slice(0,6).join(" ")),command:r.slice(6,r.length)};throw new Error("Invalid entry: "+e)},"_parseEntry");ur.parseExpression=s(function(e,r){return Ra.parse(e,r)},"parseExpression");ur.fieldsToExpression=s(function(e,r){return Ra.fieldsToExpression(e,r)},"fieldsToExpression");ur.parseString=s(function(e){for(var r=e.split(`
5
- `),n={variables:{},expressions:[],errors:{}},i=0,o=r.length;i<o;i++){var a=r[i],u=null,c=a.trim();if(c.length>0){if(c.match(/^#/))continue;if(u=c.match(/^(.*)=(.*)$/))n.variables[u[1]]=u[2];else{var l=null;try{l=ur._parseEntry("0 "+c),n.expressions.push(l.interval)}catch(d){n.errors[c]=d}}}}return n},"parseString");ur.parseFile=s(function(e,r){require("fs").readFile(e,function(n,i){if(n){r(n);return}return r(null,ur.parseString(i.toString()))})},"parseFile");ny.exports=ur});var M0={};N(M0,{AutomationViewMode:()=>Ua,BUDIBASE_DATASOURCE_TYPE:()=>Ad,BadRequestError:()=>xu,BudibaseError:()=>ui,Config:()=>Rd,Cookie:()=>zr,DEFAULT_BB_DATASOURCE_ID:()=>Dn,DEFAULT_EMPLOYEE_TABLE_ID:()=>wd,DEFAULT_EXPENSES_TABLE_ID:()=>Id,DEFAULT_INVENTORY_TABLE_ID:()=>Od,DEFAULT_JOBS_TABLE_ID:()=>_d,DEFAULT_TENANT_ID:()=>ae,DeprecatedViews:()=>qn,DesignDocuments:()=>Ts,DocumentType:()=>ce,Duration:()=>Ee,DurationType:()=>xf,EmailUnavailableError:()=>Yt,Endpoint:()=>Oc,EndpointGroup:()=>On,EndpointGroupList:()=>Lo,FeatureDisabledError:()=>Uu,ForbiddenError:()=>vu,GlobalRole:()=>Dd,HTTPError:()=>we,Header:()=>Fe,InternalTable:()=>xt,InvalidAPIKeyError:()=>ci,MAX_VALID_DATE:()=>Ma,MIN_VALID_DATE:()=>Ty,NotFoundError:()=>bu,NotImplementedError:()=>Pu,RedisClient:()=>Ce,SEPARATOR:()=>b,SQLITE_DESIGN_DOC_ID:()=>wt,SQS_DATASOURCE_INTERNAL:()=>Sd,StaticDatabases:()=>fe,UNICODE_MAX:()=>ve,USER_METADATA_PREFIX:()=>ys,UnexpectedError:()=>Cu,UsageLimitError:()=>Nu,UserStatus:()=>ka,ViewName:()=>lr,WORKSPACE_DEV:()=>La,WORKSPACE_DEV_PREFIX:()=>Ze,WORKSPACE_PREFIX:()=>Je,accounts:()=>mn,auth:()=>lm,blacklist:()=>mm,cache:()=>Io,configs:()=>Qt,constants:()=>Cd,context:()=>ue,csv:()=>Dm,db:()=>Er,docIds:()=>yf,docUpdates:()=>Em,encryption:()=>im,env:()=>E,errors:()=>ku,events:()=>fi,features:()=>Au,getPublicError:()=>Lu,init:()=>k0,installation:()=>Gu,locks:()=>yi,logging:()=>no,middleware:()=>cm,objectStore:()=>Hf,permissions:()=>Zp,platform:()=>ao,plugins:()=>fm,queue:()=>tp,redis:()=>pm,roles:()=>Jp,security:()=>pp,sessions:()=>Mu,setEnv:()=>As,sql:()=>wm,tenancy:()=>L0,timers:()=>cu,userUtils:()=>Rp,users:()=>mi,utils:()=>ei,withEnv:()=>Iy});module.exports=D_(M0);var Qt={};N(Qt,{analyticsEnabled:()=>Wu,generateConfigID:()=>ec,getAIConfig:()=>sL,getConfig:()=>rt,getDefaultGoogleConfig:()=>Mp,getGoogleConfig:()=>tc,getGoogleDatasourceConfig:()=>Wp,getOIDCConfig:()=>rL,getOIDCConfigById:()=>$p,getOIDCLogosDoc:()=>eL,getPlatformUrl:()=>bo,getRecaptchaConfig:()=>oL,getSCIMConfig:()=>iL,getSMTPConfig:()=>nL,getSMTPConfigDoc:()=>OA,getSettingsConfig:()=>Bp,getSettingsConfigDoc:()=>ni,save:()=>ZU});var R_=["user:created","user:updated","user:deleted","user:admin:assigned","user:admin:removed","user:builder:assigned","user:builder:removed","user_group:created","user_group:updated","user_group:deleted","user_group:user_added","user_group:users_deleted","user_group:permissions_edited"],C_=["automation:deleted","workspace_app:deleted","datasource:deleted","table:deleted","query:deleted","view:deleted"],bm=[...R_,...C_],xm={"user:created":'User "{{ email }}" created{{#if viaScim}} via SCIM{{/if}}',"user:updated":'User "{{ email }}" updated{{#if viaScim}} via SCIM{{/if}}',"user:deleted":'User "{{ email }}" deleted{{#if viaScim}} via SCIM{{/if}}',"user:admin:assigned":'User "{{ email }}" admin role assigned',"user:admin:removed":'User "{{ email }}" admin role removed',"user:builder:assigned":'User "{{ email }}" builder role assigned',"user:builder:removed":'User "{{ email }}" builder role removed',"user:invited":'User "{{ email }}" invited',"user:invite:accepted":'User "{{ email }}" accepted invite',"user:password:updated":'User "{{ email }}" password updated',"user:password:reset:requested":'User "{{ email }}" password reset requested',"user:password:reset":'User "{{ email }}" password reset',"user_group:created":'User group "{{ name }}" created{{#if viaScim}} via SCIM{{/if}}',"user_group:updated":'User group "{{ name }}" updated{{#if viaScim}} via SCIM{{/if}}',"user_group:deleted":'User group "{{ name }}" deleted{{#if viaScim}} via SCIM{{/if}}',"user_group:user_added":'User group "{{ name }}" {{ count }} users added{{#if viaScim}} via SCIM{{/if}}',"user_group:users_deleted":'User group "{{ name }}" {{ count }} users removed{{#if viaScim}} via SCIM{{/if}}',"user_group:permissions_edited":'User group "{{ name }}" permissions edited',"user:password:force:reset":void 0,"user_group:onboarding_added":void 0,"user:onboarding:complete":void 0,"user:data:collaboration":void 0,"email:smtp:created":"Email configuration created","email:smtp:updated":"Email configuration updated","ai:config:created":"AI configuration created","ai:config:updated":"AI configuration updated","auth:sso:created":"SSO configuration created","auth:sso:updated":"SSO configuration updated","auth:sso:activated":"SSO configuration activated","auth:sso:deactivated":"SSO configuration deactivated","auth:login":'User "{{ email }}" logged in',"auth:logout":'User "{{ email }}" logged out',"org:info:name:updated":"Organisation name updated","org:info:logo:updated":"Organisation logo updated","org:platformurl:updated":"Organisation platform URL updated","app:created":'App "{{ name }}" created',"app:updated":'App "{{ name }}" updated',"app:deleted":'App "{{ name }}" deleted',"app:duplicated":'App "{{ name }}" duplicated',"app:published":'App "{{ name }}" published',"app:unpublished":'App "{{ name }}" unpublished',"app:template:imported":'App "{{ name }}" template imported',"app:file:imported":'App "{{ name }}" file imported',"app:version:updated":'App "{{ name }}" version updated',"app:version:reverted":'App "{{ name }}" version reverted',"app:reverted":'App "{{ name }}" reverted',"app:exported":'App "{{ name }}" exported',"app:backup:restored":'App backup "{{ name }}" restored',"app:backup:triggered":'App backup "{{ name }}" triggered',"datasource:created":"Datasource created","datasource:updated":"Datasource updated","datasource:deleted":"Datasource deleted","query:created":"Query created","query:updated":"Query updated","query:deleted":"Query deleted","query:import":"Query import","queries:run":void 0,"query:previewed":void 0,"table:created":'Table "{{ name }}" created',"table:updated":'Table "{{ name }}" updated',"table:deleted":'Table "{{ name }}" deleted',"table:exported":'Table "{{ name }}" exported',"table:imported":'Table "{{ name }}" imported',"table:data:imported":"Data imported to table","rows:created":"Rows created","rows:imported":"Rows imported","automation:created":'Automation "{{ name }}" created',"automation:deleted":'Automation "{{ name }}" deleted',"automation:step:created":'Automation "{{ name }}" step added',"automation:step:deleted":'Automation "{{ name }}" step removed',"automation:tested":void 0,"automations:run":void 0,"automation:trigger:updated":void 0,"screen:created":'Screen "{{ name }}" created',"screen:deleted":'Screen "{{ name }}" deleted',"component:created":"Component created","component:deleted":"Component deleted","environment_variable:created":"Environment variable created","environment_variable:deleted":"Environment variable deleted","environment_variable:upgrade_panel_opened":void 0,"plugin:imported":"Plugin imported","plugin:deleted":"Plugin deleted","plugin:init":void 0,"action:automation_step:executed":void 0,"action:crud:executed":void 0,"action:ai_agent:executed":void 0,"role:created":void 0,"role:updated":void 0,"role:deleted":void 0,"role:assigned":void 0,"role:unassigned":void 0,"license:plan:changed":void 0,"license:activated":void 0,"license:payment:failed":void 0,"license:payment:recovered":void 0,"license:checkout:opened":void 0,"license:checkout:success":void 0,"license:portal:opened":void 0,"account:created":void 0,"account:deleted":void 0,"account:verified":void 0,"app:backfill:succeeded":void 0,"app:backfill:failed":void 0,"tenant:backfill:succeeded":void 0,"tenant:backfill:failed":void 0,"installation:backfill:succeeded":void 0,"installation:backfill:failed":void 0,"layout:created":void 0,"layout:deleted":void 0,"view:created":void 0,"view:updated":void 0,"view:deleted":void 0,"view:exported":void 0,"view:filter:created":void 0,"view:filter:updated":void 0,"view:filter:deleted":void 0,"view:calculation:created":void 0,"view:calculation:updated":void 0,"view:calculation:deleted":void 0,"view:join:created":void 0,"served:builder":void 0,"served:app":void 0,"served:app:preview":void 0,"analytics:opt:out":void 0,"analytics:opt:in":void 0,"installation:version:checked":void 0,"installation:version:upgraded":void 0,"installation:version:downgraded":void 0,"installation:firstStartup":void 0,"audit_log:filtered":void 0,"audit_log:downloaded":void 0,"row_action:created":void 0,"workspace_app:created":void 0,"workspace_app:deleted":void 0,"workspace_app:updated":void 0,"resource:copied_to_workspace":"{{ resource.type }} copied to workspace"};var Ic=(n=>(n.SQL="sql",n.JSON="json",n.FIELDS="fields",n))(Ic||{}),wc=(p=>(p.STRING="string",p.CODE="code",p.LONGFORM="longForm",p.BOOLEAN="boolean",p.NUMBER="number",p.PASSWORD="password",p.LIST="list",p.OBJECT="object",p.JSON="json",p.FILE="file",p.FIELD_GROUP="fieldGroup",p.SELECT="select",p))(wc||{}),Mo=(S=>(S.AIRTABLE="AIRTABLE",S.ARANGODB="ARANGODB",S.BUDIBASE="BUDIBASE",S.COUCHDB="COUCHDB",S.DYNAMODB="DYNAMODB",S.ELASTICSEARCH="ELASTICSEARCH",S.FIRESTORE="FIRESTORE",S.GOOGLE_SHEETS="GOOGLE_SHEETS",S.MONGODB="MONGODB",S.MYSQL="MYSQL",S.ORACLE="ORACLE",S.POSTGRES="POSTGRES",S.REDIS="REDIS",S.REST="REST",S.S3="S3",S.SNOWFLAKE="SNOWFLAKE",S.SQL_SERVER="SQL_SERVER",S))(Mo||{});var Dc=(n=>(n.CONNECTION_CHECKING="connection",n.FETCH_TABLE_NAMES="fetch_table_names",n.EXPORT_SCHEMA="export_schema",n))(Dc||{});var b_=F(require("lodash/isPlainObject"));var Pr=(a=>(a.EQUAL="equal",a.NOT_EQUAL="notEqual",a.EMPTY="empty",a.NOT_EMPTY="notEmpty",a.FUZZY="fuzzy",a.STRING="string",a))(Pr||{}),er=(i=>(i.CONTAINS="contains",i.NOT_CONTAINS="notContains",i.CONTAINS_ANY="containsAny",i.ONE_OF="oneOf",i))(er||{}),wn=(e=>(e.RANGE="range",e))(wn||{}),Oi=(r=>(r.AND="$and",r.OR="$or",r))(Oi||{});function Fo(t){return Object.values(Oi).includes(t)}s(Fo,"isLogicalSearchOperator");function vm(t){return Object.values(Pr).includes(t)}s(vm,"isBasicSearchOperator");function Pm(t){return Object.values(er).includes(t)}s(Pm,"isArraySearchOperator");function Bo(t){return Object.values(wn).includes(t)}s(Bo,"isRangeSearchOperator");var Nm=s(t=>typeof t=="object"&&t._id&&t._rev,"isDocument");var Ii=(o=>(o.USER="user",o.HEADER="header",o.QUERY="query",o.SUBDOMAIN="subdomain",o.PATH="path",o))(Ii||{});var wi=(i=>(i.READ="read",i.WRITE="write",i.EXECUTE="execute",i.ADMIN="admin",i))(wi||{});var Wo=(f=>(f.WORKSPACE="app",f.TABLE="table",f.USER="user",f.AUTOMATION="automation",f.WEBHOOK="webhook",f.BUILDER="builder",f.CREATOR="creator",f.GLOBAL_BUILDER="globalBuilder",f.QUERY="query",f.VIEW="view",f.LEGACY_VIEW="legacy_view",f))(Wo||{});var $o=s(t=>t.hosting==="cloud","isCloudAccount");var Vo=s(t=>t.authType==="sso","isSSOAccount");var b="_",ve="\uFFF0",tr=s(t=>`${t}${b}`,"prefixed"),ce=(V=>(V.USER="us",V.GROUP="gr",V.CONFIG="config",V.TEMPLATE="template",V.WORKSPACE="app",V.DEV="dev",V.WORKSPACE_DEV="app_dev",V.WORKSPACE_METADATA="app_metadata",V.ROLE="role",V.DEV_INFO="devinfo",V.AUTOMATION_LOG="log_au",V.ACCOUNT_METADATA="acc_metadata",V.PLUGIN="plg",V.DATASOURCE="datasource",V.DATASOURCE_PLUS="datasource_plus",V.APP_BACKUP="backup",V.TABLE="ta",V.ROW="ro",V.AUTOMATION="au",V.LINK="li",V.WEBHOOK="wh",V.INSTANCE="inst",V.LAYOUT="layout",V.SCREEN="screen",V.QUERY="query",V.DEPLOYMENTS="deployments",V.METADATA="metadata",V.MEM_VIEW="view",V.USER_FLAG="flag",V.AUTOMATION_METADATA="meta_au",V.AUDIT_LOG="al",V.SCIM_LOG="scimlog",V.ROW_ACTIONS="ra",V.OAUTH2_CONFIG="oauth2",V.OAUTH2_CONFIG_LOG="oauth2log",V.AGENT_CHAT="agentchat",V.AGENT_TOOL_SOURCE="agenttoolsource",V.WORKSPACE_APP="workspace_app",V.WORKSPACE_FAVOURITE="workspace_favourite",V))(ce||{});var xt=(e=>(e.USER_METADATA="ta_users",e))(xt||{});function Go(t){return!!t.providerType}s(Go,"isSSOUser");var Rc=(d=>(d.OBJECT="object",d.STRING="string",d.BOOLEAN="boolean",d.NUMBER="number",d.ARRAY="array",d.JSON="json",d.DATE="date",d.DATETIME="datetime",d.ATTACHMENT="attachment",d.LONGFORM="longform",d))(Rc||{}),Cc=(D=>(D.TABLE="table",D.ROW="row",D.ROWS="rows",D.WIDE="wide",D.QUERY="query",D.QUERY_PARAMS="queryParams",D.QUERY_LIMIT="queryLimit",D.LOOP_OPTION="loopOption",D.ITEM="item",D.CODE="code",D.FILTERS="filters",D.COLUMN="column",D.TRIGGER_SCHEMA="triggerSchema",D.CRON="cron",D.WEBHOOK_URL="webhookUrl",D.AUTOMATION="automation",D.AUTOMATION_FIELDS="automationFields",D.MULTI_ATTACHMENTS="multi_attachments",D.TRIGGER_FILTER="trigger_filter",D.CATEGORIES="categories",D))(Cc||{}),bc=(u=>(u.ROW_SAVED="ROW_SAVED",u.ROW_UPDATED="ROW_UPDATED",u.ROW_DELETED="ROW_DELETED",u.WEBHOOK="WEBHOOK",u.APP="APP",u.CRON="CRON",u.ROW_ACTION="ROW_ACTION",u))(bc||{});var xc=(w=>(w.SEND_EMAIL_SMTP="SEND_EMAIL_SMTP",w.CREATE_ROW="CREATE_ROW",w.UPDATE_ROW="UPDATE_ROW",w.DELETE_ROW="DELETE_ROW",w.EXECUTE_BASH="EXECUTE_BASH",w.OUTGOING_WEBHOOK="OUTGOING_WEBHOOK",w.EXECUTE_SCRIPT="EXECUTE_SCRIPT",w.EXECUTE_SCRIPT_V2="EXECUTE_SCRIPT_V2",w.EXECUTE_QUERY="EXECUTE_QUERY",w.SERVER_LOG="SERVER_LOG",w.DELAY="DELAY",w.FILTER="FILTER",w.API_REQUEST="API_REQUEST",w.QUERY_ROWS="QUERY_ROWS",w.LOOP="LOOP",w.COLLECT="COLLECT",w.OPENAI="OPENAI",w.TRIGGER_AUTOMATION_RUN="TRIGGER_AUTOMATION_RUN",w.BRANCH="BRANCH",w.CLASSIFY_CONTENT="CLASSIFY_CONTENT",w.PROMPT_LLM="PROMPT_LLM",w.TRANSLATE="TRANSLATE",w.SUMMARISE="SUMMARISE",w.GENERATE_TEXT="GENERATE_TEXT",w.EXTRACT_FILE_DATA="EXTRACT_FILE_DATA",w.EXTRACT_STATE="EXTRACT_STATE",w.LOOP_V2="LOOP_V2",w.discord="discord",w.slack="slack",w.zapier="zapier",w.integromat="integromat",w.n8n="n8n",w))(xc||{}),Um=[...Object.values(xc),...Object.values(bc)];function Lm(t){return t.stepId==="BRANCH"}s(Lm,"isBranchStep");var vc="bb_internal";var km=["attachment_single","attachment","signature_single","bb_reference","json","array"];var Cd={};N(Cd,{AutomationViewMode:()=>Ua,BUDIBASE_DATASOURCE_TYPE:()=>Ad,Config:()=>Rd,Cookie:()=>zr,DEFAULT_BB_DATASOURCE_ID:()=>Dn,DEFAULT_EMPLOYEE_TABLE_ID:()=>wd,DEFAULT_EXPENSES_TABLE_ID:()=>Id,DEFAULT_INVENTORY_TABLE_ID:()=>Od,DEFAULT_JOBS_TABLE_ID:()=>_d,DEFAULT_TENANT_ID:()=>ae,DeprecatedViews:()=>qn,DesignDocuments:()=>Ts,DocumentType:()=>ce,GlobalRole:()=>Dd,Header:()=>Fe,InternalTable:()=>xt,MAX_VALID_DATE:()=>Ma,MIN_VALID_DATE:()=>Ty,SEPARATOR:()=>b,SQLITE_DESIGN_DOC_ID:()=>wt,SQS_DATASOURCE_INTERNAL:()=>Sd,StaticDatabases:()=>fe,UNICODE_MAX:()=>ve,USER_METADATA_PREFIX:()=>ys,UserStatus:()=>ka,ViewName:()=>lr,WORKSPACE_DEV:()=>La,WORKSPACE_DEV_PREFIX:()=>Ze,WORKSPACE_PREFIX:()=>Je});var Fe=(_=>(_.API_KEY="x-budibase-api-key",_.LICENSE_KEY="x-budibase-license-key",_.API_VER="x-budibase-api-version",_.APP_ID="x-budibase-app-id",_.SESSION_ID="x-budibase-session-id",_.CLIENT="x-budibase-client",_.TYPE="x-budibase-type",_.PREVIEW_ROLE="x-budibase-role",_.TENANT_ID="x-budibase-tenant-id",_.VERIFICATION_CODE="x-budibase-verification-code",_.RETURN_VERIFICATION_CODE="x-budibase-return-verification-code",_.RESET_PASSWORD_CODE="x-budibase-reset-password-code",_.RETURN_RESET_PASSWORD_CODE="x-budibase-return-reset-password-code",_.TOKEN="x-budibase-token",_.CSRF_TOKEN="x-csrf-token",_.CORRELATION_ID="x-budibase-correlation-id",_.AUTHORIZATION="authorization",_.MIGRATING_APP="x-budibase-migrating-app",_.COOKIE="cookie",_))(Fe||{});var Be={Equals:{value:"equal",label:"Equals"},NotEquals:{value:"notEqual",label:"Not equals"},Empty:{value:"empty",label:"Is empty"},NotEmpty:{value:"notEmpty",label:"Is not empty"},StartsWith:{value:"string",label:"Starts with"},Like:{value:"fuzzy",label:"Like"},MoreThan:{value:"rangeLow",label:"More than or equal to"},LessThan:{value:"rangeHigh",label:"Less than or equal to"},Contains:{value:"contains",label:"Contains"},NotContains:{value:"notContains",label:"Does not contain"},In:{value:"oneOf",label:"Is in"},ContainsAny:{value:"containsAny",label:"Has any"}},Mm={integer:{max:2147483647,min:-2147483648},int:{max:2147483647,min:-2147483648},smallint:{max:32767,min:-32768},mediumint:{max:8388607,min:-8388608}};var Dn="datasource_internal_bb_default";var cr={};N(cr,{ColumnSplitter:()=>ad,NoEmptyFilterStrings:()=>py,buildQuery:()=>my,cleanupQuery:()=>ld,fixupFilterArrays:()=>fd,getKeyNumbering:()=>dd,getValidOperatorsForType:()=>eC,hasFilters:()=>ud,limit:()=>Ey,recurseLogicalOperators:()=>cd,removeKeyNumbering:()=>qo,runQuery:()=>xa,search:()=>nC,sort:()=>hy,splitFiltersArray:()=>Ko});var Gn=F(Fm());var St={};N(St,{filterValueToLabel:()=>L_,hasSchema:()=>k_,isSupportedUserSearch:()=>$m,parallelForeach:()=>U_,processSearchFilters:()=>Uc,toMap:()=>F_,trimOtherProps:()=>M_,unreachable:()=>N_});var Wm=F(require("lodash/pick"));var P_=["field","operator","value","type","externalType","valueType","noValue","formulaType"];function N_(t,e){let r=e?.message||`No such case in exhaustive switch: ${t}`;if(!!!e?.doNotThrow)throw new Error(r)}s(N_,"unreachable");async function U_(t,e,r){let n=[],i=Symbol.asyncIterator in t,o=i?t[Symbol.asyncIterator]():t[Symbol.iterator](),a=s(async()=>{let u=await(i?o.next():Promise.resolve(o.next()));for(;!u.done;)await e(u.value),u=await(i?o.next():Promise.resolve(o.next()))},"executeNext");for(let u=0;u<r;u++)n.push(a());await Promise.all(n)}s(U_,"parallelForeach");function L_(){return Object.keys(Be).reduce((t,e)=>{let n=Be[e];return t[n.value]=n.label,t},{})}s(L_,"filterValueToLabel");function k_(t){return typeof t=="object"&&!Array.isArray(t)&&t!==null&&!(t instanceof Date)&&Object.keys(t).length>0}s(k_,"hasSchema");function M_(t,e){return Object.keys(t).filter(n=>e.includes(n)).reduce((n,i)=>({...n,[i]:t[i]}),{})}s(M_,"trimOtherProps");function $m(t){let e=[{op:"string",key:"email"},{op:"equal",key:"_id"},{op:"oneOf",key:"_id"}],{allOr:r,onEmptyFilter:n,...i}=t;for(let[o,a]of Object.entries(i)){if(typeof a!="object")return!1;if(Fo(o)){for(let l of t[o].conditions)if(!$m(l))return!1;return!0}let u=Object.keys(a||{});if(u.length===0)continue;if(!e.find(l=>l.op===o&&u.length===1&&u[0]===l.key))return!1}return!0}s($m,"isSupportedUserSearch");function Uc(t){if(!t||t.length===0)return;let{allOr:e,onEmptyFilter:r,filters:n}=Ko(t);return{logicalOperator:"all",onEmptyFilter:r||"all",groups:[{logicalOperator:e?"any":"all",filters:n.map(i=>{let o=(0,Wm.default)(i,P_);return o.field=qo(o.field),o})}]}}s(Uc,"processSearchFilters");function F_(t,e){return e.reduce((r,n)=>(r[n[t]]=n,r),{})}s(F_,"toMap");var Ne={};N(Ne,{cancelableTimeout:()=>Vm,cron:()=>zR,deepGet:()=>Lc,duplicateName:()=>YR,getSequentialName:()=>HR,getUserColor:()=>W_,getUserInitials:()=>B_,getUserLabel:()=>$_,isGoogleSheets:()=>G_,isSQL:()=>q_,lists:()=>sd,retry:()=>K_,roles:()=>id,schema:()=>ps,views:()=>nd,wait:()=>kc,withTimeout:()=>V_});var Lc=s((t,e)=>{if(!t||!e)return null;if(Object.prototype.hasOwnProperty.call(t,e))return t[e];let r=e.split(".");for(let n=0;n<r.length;n++)t=t?.[r[n]];return t},"deepGet"),B_=s(t=>{if(!t)return"?";let e="";return e+=t.firstName?t.firstName[0]:"",e+=t.lastName?t.lastName[0]:"",e!==""?e:t.email?.[0]||"U"},"getUserInitials"),W_=s(t=>{let e=t?._id;if(!e)return"var(--spectrum-global-color-blue-400)";e=e.replace("ro_ta_users_","");let r=1;for(let n=0;n<e.length;n++)r+=e.charCodeAt(n),r=r%36;return`hsl(${r*10}, 50%, 40%)`},"getUserColor"),$_=s(t=>{if(!t)return"";let{firstName:e,lastName:r,email:n}=t;return e&&r?`${e} ${r}`:e||r||n},"getUserLabel");function Vm(t){let e;return[new Promise((r,n)=>{e=setTimeout(()=>{n({status:301,errno:"ETIME"})},t)}),()=>{clearTimeout(e)}]}s(Vm,"cancelableTimeout");async function V_(t,e){let[r,n]=Vm(t),i=await Promise.race([e(),r]);return n(),i}s(V_,"withTimeout");function G_(t){return t==="GOOGLE_SHEETS"}s(G_,"isGoogleSheets");function q_(t){return!t||!t.source?!1:["POSTGRES","SQL_SERVER","MYSQL","ORACLE"].indexOf(t.source)!==-1||t.isSQL===!0}s(q_,"isSQL");async function kc(t){return new Promise(e=>setTimeout(e,t))}s(kc,"wait");async function K_(t,e){let{times:r=3}=e||{};if(r<1)throw new Error(`invalid retry count: ${r}`);let n;for(let i=0;i<r;i++){let o=1.5**i*1e3*(Math.random()+.5);await kc(o);try{return await t()}catch(a){n=a}}throw n}s(K_,"retry");var oy=F(At()),ay=F(iy());var sy="(Input cron: ",NR={"smaller than lower limit":"less than","bigger than upper limit":"greater than",daysOfMonth:"'days of the month'",daysOfWeek:"'days of the week'",years:"'years'",months:"'months'",hours:"'hours'",minutes:"'minutes'",seconds:"'seconds'"};function UR(t){let e=[];for(let r of t){r.includes(sy)&&(r=r.split(sy)[0].trim());for(let[n,i]of Object.entries(NR))r.includes(n)&&(r=r.replace(new RegExp(n,"g"),i));e.push(r)}return e}s(UR,"improveErrors");function uy(t,e=4){let r=ay.default.parseExpression(t),n=[];for(let i=0;i<e;i++)n.push(r.next().toString());return n}s(uy,"getNextExecutionDates");function cy(t){let e=(0,oy.default)(t,{preset:"npm-cron-schedule",override:{useSeconds:!1}});return e.isValid()?{valid:!0}:{valid:!1,err:UR(e.getError())}}s(cy,"validate");var ps={};N(ps,{decodeNonAscii:()=>td,encodeNonAscii:()=>MR,isDeprecatedSingleUserColumn:()=>LR,isNumeric:()=>FR,isRequired:()=>kR});function LR(t){return t.type==="bb_reference"&&t.subtype==="user"&&t.constraints?.type!=="array"}s(LR,"isDeprecatedSingleUserColumn");function kR(t){return!!t&&(typeof t.presence!="boolean"&&t.presence?.allowEmpty===!1||t.presence===!0)}s(kR,"isRequired");function MR(t){return t.split("").map(e=>e.charCodeAt(0)>127?"\\u"+e.charCodeAt(0).toString(16).padStart(4,"0"):e).join("")}s(MR,"encodeNonAscii");function td(t){return t.replace(/\\u([0-9a-fA-F]{4})/g,(e,r)=>String.fromCharCode(parseInt(r,16)))}s(td,"decodeNonAscii");function FR(t){return t.type==="number"||t.type==="bigint"}s(FR,"isNumeric");var nd={};N(nd,{basicFields:()=>GR,calculationFields:()=>VR,hasCalculationFields:()=>$R,isBasicViewField:()=>BR,isCalculationField:()=>ms,isCalculationView:()=>WR,isV2:()=>qR,isVisible:()=>ly});var rd=F(require("lodash/pickBy"));function ms(t){return"calculationType"in t}s(ms,"isCalculationField");function BR(t){return!ms(t)}s(BR,"isBasicViewField");function WR(t){return t.type==="calculation"}s(WR,"isCalculationView");function $R(t){return Object.values(t.schema||{}).some(ms)}s($R,"hasCalculationFields");function VR(t){return(0,rd.default)(t.schema||{},ms)}s(VR,"calculationFields");function ly(t){return t.visible!==!1}s(ly,"isVisible");function GR(t,e){let{visible:r=!0}=e||{};return(0,rd.default)(t.schema||{},n=>!ms(n)&&(!r||ly(n)))}s(GR,"basicFields");function qR(t){return t.version===2}s(qR,"isV2");var id={};N(id,{checkForRoleInheritanceLoops:()=>QR});function KR(t){return`role${b}${t}`}s(KR,"prefixForCheck");function QR(t){let e=new Map;t.forEach(o=>{e.set(o._id,o)});let r=new Set,n=new Set;function i(o){let a=KR(o);if(n.has(o)||n.has(a))return!0;if(r.has(o)||r.has(a))return!1;n.add(o);let u=e.get(a)||e.get(o);if(!u)return n.delete(o),!1;let c=Array.isArray(u.inherits)?u.inherits:[u.inherits];for(let l of c)if(l&&i(l))return!0;return n.delete(o),r.add(o),!1}return s(i,"hasLoop"),!!t.find(o=>i(o._id))}s(QR,"checkForRoleInheritanceLoops");var sd={};N(sd,{punctuateList:()=>jR});function jR(t){return t.length===0?"":t.length===1?t[0]:t.length===2?t.join(" and "):t.slice(0,-1).join(", ")+" and "+t[t.length-1]}s(jR,"punctuateList");var YR=s((t,e)=>{let r=new RegExp("\\s(\\d+)$"),n=t.split(r)[0],i=new RegExp(`${n}\\s(\\d+)$`),o=[];e.filter(u=>{if(u===n)return!0;let c=u.match(i);return c?(o.push(parseInt(c[1])),!0):!1}),o.sort((u,c)=>u-c);let a;if(o.length===0)a=1;else{for(let u=0;u<o.length;u++)if(o[u]!==u+1){a=u+1;break}a||(a=o.length+1)}return`${n} ${a}`},"duplicateName"),HR=s((t,e,{getName:r,numberFirstItem:n,separator:i=""}={})=>{if(!e?.length)return"";let o=e.trim(),a=n?`${e}1`:o;if(!t?.length)return a;let u=0;return t.forEach(c=>{let l=r?.(c)??c;if(typeof l!="string"||!l.startsWith(o))return;let d=l.split(o);if(d.length!==2)return;d[1].trim()===""&&(d[1]="1");let f=parseInt(d[1]);f>u&&(u=f)}),u===0?a:`${e}${i}${u+1}`},"getSequentialName");var zR={getNextExecutionDates:uy,validate:cy};var ba=F(require("lodash/isPlainObject")),od=F(require("lodash/isEmpty"));var ZR=/{{([^{].*?)}}/g,fy=Object.values(Oi),XR=[...Object.values(Pr),...Object.values(er),...Object.values(wn)],eC=s((t,e,r)=>{let n=Be,i=[n.Equals,n.NotEquals,n.StartsWith,n.Like,n.Empty,n.NotEmpty,n.In],o=[n.Equals,n.NotEquals,n.MoreThan,n.LessThan,n.Empty,n.NotEmpty,n.In],a=[n.Contains,n.NotContains,n.ContainsAny,n.Empty,n.NotEmpty],u=[],{type:c,formulaType:l,subtype:d}=t;c==="string"?d==="array"?u=a:u=i:c==="number"||c==="bigint"?u=o:c==="options"?u=[n.Equals,n.NotEquals,n.Empty,n.NotEmpty,n.In]:c==="array"?u=a:c==="boolean"?u=[n.Equals,n.NotEquals,n.Empty,n.NotEmpty]:c==="longform"?u=i:c==="datetime"?u=o:c==="formula"&&l==="static"?u=i.concat([n.MoreThan,n.LessThan]):c==="ai"?u=i.concat([n.MoreThan,n.LessThan]):c==="bb_reference_single"||ps.isDeprecatedSingleUserColumn(t)?u=[n.Equals,n.NotEquals,n.Empty,n.NotEmpty,n.In]:c==="bb_reference"?u=a:c==="barcodeqr"&&(u=i);let f=r?.tableId?.includes("datasource_plus");return e==="_id"&&f&&(u=[n.Equals,n.NotEquals,n.In]),u},"getValidOperatorsForType"),py=[Be.StartsWith.value,Be.Like.value,Be.Equals.value,Be.NotEquals.value,Be.Contains.value,Be.NotContains.value,Be.ContainsAny.value,Be.In.value];function cd(t,e){for(let r of fy)t[r]&&(t[r].conditions=t[r].conditions.map(n=>e(n)));return t}s(cd,"recurseLogicalOperators");var ld=s(t=>{for(let e of py)if(t[e])for(let r of Object.keys(t)){if(r!==e)continue;if(typeof t[r]=="object")for(let[i,o]of Object.entries(t[r]))(o==null||o===""||tC(o))&&delete t[e][i]}return t=cd(t,ld),t},"cleanupQuery");function tC(t){return Array.isArray(t)&&t.length===0}s(tC,"isEmptyArray");var qo=s(t=>dd(t).key,"removeKeyNumbering"),dd=s(t=>{if(typeof t=="string"&&t.match(/\d[0-9]*:/g)!=null){let e=t.split(":");return{prefix:`${e.shift()}:`,key:e.join(":")}}else return{key:t}},"getKeyNumbering"),ad=class{static{s(this,"ColumnSplitter")}constructor(e,r){if(this.tableNames=e.map(n=>n.name),this.tableIds=e.map(n=>n._id),this.relationshipColumnNames=e.flatMap(n=>Object.keys(n.schema).filter(i=>n.schema[i].type==="link")),this.relationships=this.tableNames.concat(this.tableIds).concat(this.relationshipColumnNames).sort((n,i)=>i.length-n.length),r?.aliases){this.aliases={};for(let[n,i]of Object.entries(r.aliases))this.aliases[i]=n}this.columnPrefix=r?.columnPrefix}run(e){let{prefix:r,key:n}=dd(e),i;if(this.aliases)for(let a of Object.keys(this.aliases||{})){let u=`${a}.`;n.startsWith(u)&&(i=this.aliases[a],n=n.slice(u.length))}let o;for(let a of this.relationships){let u=`${a}.`;if(n.startsWith(u)){let c=n.split(u);c.shift(),o=u,n=c.join(".");break}}return this.columnPrefix&&n.startsWith(this.columnPrefix)&&(n=td(n.slice(this.columnPrefix.length))),{tableName:i,numberPrefix:r,relationshipPrefix:o,column:n}}};function rC(t){if(!t||!t?.operator||!t?.field)return;let e={},{operator:r,field:n,type:i,externalType:o}=t,{value:a}=t;(r==="empty"||r==="notEmpty")&&(a=null);let u=typeof a=="string"&&(a.match(ZR)||[]).length>0;switch(i){case"datetime":if(!u&&r!=="empty"&&r!=="notEmpty"){if(!a)return;if(typeof a=="string")a=new Date(a).toISOString();else if(Bo(r))return e[r]??={},e[r][n]=a,e}break;case"number":typeof a=="string"&&!u&&(r==="oneOf"?a=a.split(",").map(parseFloat):a=parseFloat(a));break;case"boolean":a=`${a}`.toLowerCase()==="true";break;case"array":["contains","notContains","containsAny"].includes(r.toLocaleString())&&typeof a=="string"&&(a=a.split(","));break}if(Bo(r)){let l=Mm[o]||{min:Number.MIN_SAFE_INTEGER,max:Number.MAX_SAFE_INTEGER};e[r]??={},e[r][n]={low:i==="number"?l.min:"0000-00-00T00:00:00.000Z",high:i==="number"?l.max:"9999-00-00T00:00:00.000Z"}}else if(r==="rangeHigh"&&a!=null&&a!=="")e.range??={},e.range[n]={...e.range[n],high:a};else if(r==="rangeLow"&&a!=null&&a!=="")e.range??={},e.range[n]={...e.range[n],low:a};else if(vm(r)||Pm(r)||Bo(r))i==="boolean"?r==="equal"&&a===!1?(e.notEqual=e.notEqual||{},e.notEqual[n]=!0):r==="notEqual"&&a===!1?(e.equal=e.equal||{},e.equal[n]=!0):(e[r]??={},e[r][n]=a):(e[r]??={},e[r][n]=a);else throw new Error(`Unsupported operator: ${r}`);return e}s(rC,"buildCondition");function Ko(t){let e={filters:[]};for(let r of t)"operator"in r&&r.operator==="allOr"?e.allOr=!0:"onEmptyFilter"in r?e.onEmptyFilter=r.onEmptyFilter:e.filters.push(r);return e}s(Ko,"splitFiltersArray");function my(t){if(!t)return{};if(Array.isArray(t)&&(t=Uc(t),!t))return{};let e={};t.onEmptyFilter?e.onEmptyFilter=t.onEmptyFilter:e.onEmptyFilter="all";let r=dy(t.logicalOperator||"all");return e[r]={conditions:(t.groups||[]).map(n=>{if(n.groups){let c=my(n);return delete c.onEmptyFilter,c}let{allOr:i,onEmptyFilter:o,filters:a}=Ko(n.filters||[]);o&&(e.onEmptyFilter=o);let u=i?"$or":"$and";return n.logicalOperator&&(u=dy(n.logicalOperator)),{[u]:{conditions:a.map(rC).filter(c=>c)}}})},e}s(my,"buildQuery");function dy(t){return t==="all"?"$and":"$or"}s(dy,"logicalOperatorFromUI");function fd(t){if(!t)return t;for(let e of Object.values(er)){let r=t[e];if(!(r==null||!(0,ba.default)(r)))for(let n of Object.keys(r)){if(Array.isArray(r[n]))continue;let i=r[n];typeof i=="string"?r[n]=i.split(",").map(o=>o.trim()):r[n]=[i]}}return cd(t,fd),t}s(fd,"fixupFilterArrays");function nC(t,e){let r=xa(t,e.query);e.sort&&(r=hy(r,e.sort,e.sortOrder||"ascending",e.sortType));let n=r.length;e.limit&&(r=Ey(r,e.limit.toString()));let i={rows:r};return e.countRows&&(i.totalRows=n),i}s(nC,"search");function xa(t,e){if(!t||!Array.isArray(t))return[];if(!e)return t;if(e=ld(e),e=fd(e),!ud(e)&&e.onEmptyFilter==="none")return[];let r=s((T,I)=>M=>{for(let[P,k]of Object.entries(e[T]||{})){let Y=Fo(T)?M:Lc(M,qo(P)),bt=I(Y,k);if(e.allOr&&bt)return!0;if(!e.allOr&&!bt)return!1}return!e.allOr},"match"),n=r("string",(T,I)=>typeof T!="string"||typeof I!="string"?!1:T.toLowerCase().startsWith(I.toLowerCase())),i=r("fuzzy",(T,I)=>typeof T!="string"||typeof I!="string"?!1:T.toLowerCase().includes(I.toLowerCase())),o=r("range",(T,I)=>{if(T==null||T===""||((0,ba.default)(I.low)&&(0,od.default)(I.low)&&(I.low=void 0),(0,ba.default)(I.high)&&(0,od.default)(I.high)&&(I.high=void 0),I.low==null&&I.high==null))return!1;let M=+T;if(!isNaN(M)){let k=+I.low,Y=+I.high;if(!isNaN(k)&&!isNaN(Y))return M>=k&&M<=Y;if(isNaN(k)){if(!isNaN(Y))return M<=Y}else return M>=k}let P=(0,Gn.default)(T);if(P.isValid()){let k=(0,Gn.default)(I.low||"0000-00-00T00:00:00.000Z"),Y=(0,Gn.default)(I.high||"9999-00-00T00:00:00.000Z");if(k.isValid()&&Y.isValid())return P.isAfter(k)&&P.isBefore(Y)||P.isSame(k)||P.isSame(Y);if(k.isValid())return P.isAfter(k)||P.isSame(k);if(Y.isValid())return P.isBefore(Y)||P.isSame(Y)}return I.low!=null&&I.high!=null?T>=I.low&&T<=I.high:I.low!=null?T>=I.low:I.high!=null?T<=I.high:!1}),a=s((T,I)=>{if(Array.isArray(T)){for(let P of T)if(a(P,I))return!0;return!1}if(T&&typeof T=="object"&&typeof I=="string")return T._id===I;if(T===I)return!0;if(T==null&&I!=null||T!=null&&I==null)return!1;let M=(0,Gn.default)(T);if(M.isValid()){let P=(0,Gn.default)(I);if(P.isValid())return M.isSame(P)}return!1},"_valueMatches"),u=s(T=>(...I)=>!T(...I),"not"),c=r("equal",a),l=r("notEqual",u(a)),d=s(T=>typeof T=="string"?T==="":Array.isArray(T)?T.length===0:T&&typeof T=="object"?Object.keys(T).length===0:T==null,"_empty"),f=r("empty",d),p=r("notEmpty",u(d)),m=r("oneOf",(T,I)=>(typeof I=="string"&&(I=I.split(",")),typeof T=="number"&&(I=I.map(M=>parseFloat(M))),Array.isArray(I)?I.some(M=>a(T,M)):!1)),h=s(T=>(I,M)=>!Array.isArray(I)||(typeof M=="string"&&(M=M.split(","),typeof I[0]=="number"&&(M=M.map(P=>parseFloat(P)))),!Array.isArray(M))?!1:M.length===0?!0:M[T](P=>a(I,P)),"_contains"),g=r("contains",(T,I)=>Array.isArray(I)&&I.length===0?!0:h("every")(T,I)),y=r("notContains",(T,I)=>Array.isArray(I)&&I.length===0?!0:u(h("every"))(T,I)),S=r("containsAny",h("some")),O=r("$and",(T,I)=>{if(!I.length)return!1;for(let M of I)if(!xa([T],M).length)return!1;return!0}),_=r("$or",(T,I)=>{if(!I.length)return!1;for(let M of I)if(xa([T],{...M,allOr:!0}).length)return!0;return!1}),D=s(T=>{let I={string:n,fuzzy:i,range:o,equal:c,notEqual:l,empty:f,notEmpty:p,oneOf:m,contains:g,containsAny:S,notContains:y,$and:O,$or:_},M=Object.entries(e||{}).filter(([P,k])=>!["allOr","onEmptyFilter"].includes(P)&&k&&Object.keys(k).length>0).map(([P])=>I[P]?.(T)??!1);return ud(e)?e.allOr?M.some(P=>P===!0):M.every(P=>P===!0):!0},"docMatch");return t.filter(D)}s(xa,"runQuery");function hy(t,e,r,n="string"){if(!e||!r||!n)return t;let i=s(o=>o==null?o:n==="string"?`${o}`:parseFloat(o),"parse");return t.slice().sort((o,a)=>{let u=i(o[e]),c=i(a[e]),l=c==null||u>c?1:-1;return r.toLowerCase()==="descending"?l*-1:l})}s(hy,"sort");function Ey(t,e){let r=typeof e=="number"?e:parseFloat(e);return isNaN(r)?t:t.slice(0,r)}s(Ey,"limit");var ud=s(t=>{if(!t)return!1;let e=s(r=>{for(let n of fy)if(r[n])for(let i of r[n]?.conditions||[]){let o=e(i);if(o)return o}for(let n of XR){let i=r[n];if(!i||typeof i!="object")continue;if(Object.entries(i).filter(a=>{let u=a[1]!==void 0||a[1]!==null||a[1]!=="";return n==="notEmpty"||u}).length!==0)return!0}return!1},"check");return e(t)},"hasFilters");var Ue={};N(Ue,{applications:()=>md,automations:()=>hd,screens:()=>Td,users:()=>yd});var md={};N(md,{getDevAppID:()=>iC,getProdAppID:()=>Es});var pd=tr("app"),hs=tr("app_dev");function iC(t){if(!t)throw new Error("No app ID provided");if(t.startsWith(hs))return t;let e=t.split(pd);e.shift();let r=e.join(pd);return`${hs}${r}`}s(iC,"getDevAppID");function Es(t){if(!t)throw new Error("No app ID provided");if(!t.startsWith(hs))return t;let e=t.split(hs);e.shift();let r=e.join(hs);return`${pd}${r}`}s(Es,"getProdAppID");var hd={};N(hd,{checkForCollectStep:()=>uC,isAppAction:()=>aC,isRowAction:()=>sC,isWebhookAction:()=>oC});function sC(t){return t.definition.trigger?.stepId==="ROW_ACTION"}s(sC,"isRowAction");function oC(t){return t.definition.trigger?.stepId==="WEBHOOK"}s(oC,"isWebhookAction");function aC(t){return t.definition.trigger?.stepId==="APP"}s(aC,"isAppAction");function gy(t){if(!t||!Array.isArray(t))return!1;for(let e of t){if(e.stepId==="COLLECT")return!0;if(Lm(e)&&e.inputs.children){for(let r of Object.values(e.inputs.children))if(gy(r))return!0}}return!1}s(gy,"hasCollectBlockRecursive");function uC(t){return gy(t.definition.steps)}s(uC,"checkForCollectStep");var yd={};N(yd,{canCreateApps:()=>cC,containsUserID:()=>gC,getGlobalUserID:()=>EC,getUserAppGroups:()=>yC,hasAdminPermissions:()=>gd,hasAppBuilderPermissions:()=>Pa,hasBuilderPermissions:()=>mC,hasCreatorPermissions:()=>Na,isAdmin:()=>gs,isAdminOrBuilder:()=>dC,isAdminOrGlobalBuilder:()=>fC,isAdminOrWorkspaceBuilder:()=>lC,isBuilder:()=>Ed,isCreator:()=>hC,isGlobalBuilder:()=>va,userAppAccessList:()=>TC});function Ed(t,e){return t?t.builder?.global?!0:!!(e&&t.builder?.apps?.includes(Es(e))):!1}s(Ed,"isBuilder");function va(t){return Ed(t)&&!Pa(t)||gs(t)}s(va,"isGlobalBuilder");function cC(t){return va(t)||Na(t)}s(cC,"canCreateApps");function gs(t){return t?gd(t):!1}s(gs,"isAdmin");function lC(t,e){return t?!!(gs(t)||e&&t.builder?.apps?.includes(Es(e))):!1}s(lC,"isAdminOrWorkspaceBuilder");function dC(t,e){return Ed(t,e)||gs(t)}s(dC,"isAdminOrBuilder");function fC(t){return va(t)||gs(t)}s(fC,"isAdminOrGlobalBuilder");function Pa(t){if(!t)return!1;let e=t.builder?.apps?.length;return!!!t.builder?.global&&e!=null&&e>0}s(Pa,"hasAppBuilderPermissions");function pC(t){return t?!!Object.values(t.roles??{}).find(e=>e==="CREATOR"):!1}s(pC,"hasAppCreatorPermissions");function mC(t){return t?t.builder?.global||Pa(t)||Na(t):!1}s(mC,"hasBuilderPermissions");function gd(t){return t?!!t.admin?.global:!1}s(gd,"hasAdminPermissions");function Na(t){return t?!!t.builder?.creator:!1}s(Na,"hasCreatorPermissions");function hC(t){return t?va(t)||gd(t)||Na(t)||Pa(t)||pC(t):!1}s(hC,"isCreator");function EC(t){if(typeof t!="string")return t;let e=`ro${b}ta_users${b}`;return t.startsWith(e)?t.split(e)[1]:t}s(EC,"getGlobalUserID");function gC(t){return typeof t!="string"?!1:t.includes(`us${b}`)}s(gC,"containsUserID");function yy(t,e){return e?.filter(r=>r.users?.find(n=>n._id===t))||[]}s(yy,"getUserGroups");function yC(t,e,r){let n=Es(t);return yy(e,r).filter(o=>Object.keys(o.roles||{}).find(a=>a===n))}s(yC,"getUserAppGroups");function TC(t,e){let n=yy(t._id,e).flatMap(o=>Object.keys(o.roles||{})),i=[...Object.keys(t?.roles||{}),...n];return[...new Set(i)]}s(TC,"userAppAccessList");var Td={};N(Td,{findInSettings:()=>SC});function SC(t,e){let r=[];function n(i,o=""){for(let[a,u]of Object.entries(i))u&&(typeof u=="string"&&u.includes(e)?r.push({setting:o?`${o}.${a}`:a,value:u}):typeof u=="object"&&n(u,a))}return s(n,"recurse"),n(t.props),r}s(SC,"findInSettings");var Ua=(n=>(n.ALL="all",n.AUTOMATION="automation",n.STATUS="status",n))(Ua||{}),lr=(d=>(d.USER_BY_WORKSPACE="by_app",d.USER_BY_EMAIL="by_email2",d.BY_API_KEY="by_api_key",d.LINK="by_link",d.ROUTING="screen_routes_2",d.AUTOMATION_LOGS="automation_logs",d.ACCOUNT_BY_EMAIL="account_by_email",d.PLATFORM_USERS_LOWERCASE="platform_users_lowercase_2",d.USER_BY_GROUP="user_by_group",d.WORKSPACE_BACKUP_BY_TRIGGER="by_trigger",d))(lr||{}),qn={by_email2:["by_email"]},fe={GLOBAL:{name:"global-db",docs:{apiKeys:"apikeys",usageQuota:"usage_quota",licenseInfo:"license_info",environmentVariables:"environmentvariables"}},PLATFORM_INFO:{name:"global-info",docs:{tenants:"tenants",install:"install"}},AUDIT_LOGS:{name:"audit-logs"},SCIM_LOGS:{name:"scim-logs"},SELF_HOST_CLOUD:{name:"self-host-cloud"}},Je=tr("app"),La=tr("app_dev"),Ze=La,Sd="internal",Ad="budibase",wt="_design/sqlite",_d="ta_bb_jobs",Od="ta_bb_inventory",Id="ta_bb_expenses",wd="ta_bb_employee",ys=`ro${b}ta_users${b}`,Ts=(r=>(r[r.SQLITE=wt]="SQLITE",r.MIGRATIONS="_design/migrations",r))(Ts||{});var ka=(r=>(r.ACTIVE="active",r.INACTIVE="inactive",r))(ka||{}),zr=(u=>(u.Auth="budibase:auth",u.Init="budibase:init",u.ACCOUNT_RETURN_URL="budibase:account:returnurl",u.DatasourceAuth="budibase:datasourceauth",u.OIDC_CONFIG="budibase:oidc:config",u.FeatureFlags="budibase:featureflags",u.RecaptchaSession="budibase:recaptcha",u))(zr||{}),Dd=(i=>(i.OWNER="owner",i.ADMIN="admin",i.BUILDER="builder",i.WORKSPACE_MANAGER="workspace_manager",i))(Dd||{}),Rd=(c=>(c.SETTINGS="settings",c.ACCOUNT="account",c.SMTP="smtp",c.GOOGLE="google",c.OIDC="oidc",c.OIDC_LOGOS="logos_oidc",c.SCIM="scim",c.AI="AI",c))(Rd||{}),Ty=new Date(-2147483647e3),Ma=new Date(2147483647e3),ae="default";var Io={};N(Io,{CacheKey:()=>ye,TTL:()=>fn,bustCache:()=>oi,destroy:()=>so,docWritethrough:()=>np,generic:()=>oo,get:()=>pn,invite:()=>sp,keys:()=>Ru,passwordReset:()=>op,store:()=>jt,user:()=>wr,withCache:()=>Ar,withCacheWithDynamicTTL:()=>yS,workspace:()=>Bs,writethrough:()=>kp});var np={};N(np,{DocWritethrough:()=>rp,DocWritethroughProcessor:()=>io,getProcessor:()=>ov,init:()=>gS});var tp={};N(tp,{BudibaseQueue:()=>ht,InMemoryQueue:()=>uu,JobQueue:()=>ti,QueuedProcessor:()=>ep,UnretriableError:()=>wu,shutdown:()=>px});var bd=require("crypto"),Ba=require("fs"),_y=require("lodash"),Ss=require("path");var AC=process.env.TOP_LEVEL_PATH||process.env.SERVER_TOP_LEVEL_PATH||(0,Ss.resolve)((0,Ss.join)(__dirname,"..","..","..")),Sy=!1;!Sy&&Fa()&&!xd()&&(require("dotenv").config({path:(0,Ss.join)(AC,".env")}),Sy=!0);function xd(){return Oy()}s(xd,"isTest");function Oy(){return process.env.NODE_ENV==="jest"||process.env.JEST_WORKER_ID!=null&&process.env.JEST_WORKER_ID!=="null"}s(Oy,"isJest");function Fa(){return process.env.NODE_ENV!=="production"}s(Fa,"isDev");function _C(t){if(t)return parseInt(t)}s(_C,"parseIntSafe");var Kn={BACKUPS:"backups",APPS:"prod-budi-app-assets",TEMPLATES:"templates",GLOBAL:"global",PLUGINS:"plugins",TEMP:"tmp-file-attachments"},Ay=!!parseInt(process.env.SELF_HOSTED||"");function OC(){return process.env.API_ENCRYPTION_KEY?process.env.API_ENCRYPTION_KEY:process.env.JWT_SECRET}s(OC,"getAPIEncryptionKey");function IC(){return process.env.HTTP_LOGGING===void 0?!0:process.env.HTTP_LOGGING}s(IC,"httpLogging");function wC(){function t(r){function n(u,c){let l=`${c}/${u}`;if((0,Ba.existsSync)(l))return l;let d=`${c}/..`;return d===c?null:n(u,d)}s(n,"findFileInAncestors");let i=n(r,process.cwd()),o=(0,Ba.readFileSync)(i,"utf-8");return JSON.parse(o)}s(t,"getParentFile");let e;if(Fa()&&!xd())try{e=`${t("lerna.json").version}+local`}catch{}try{let r=t("package.json");return{VERSION:e||process.env.BUDIBASE_VERSION||r.version,SERVICE_NAME:r.name}}catch{return{VERSION:process.env.BUDIBASE_VERSION||"",SERVICE_NAME:""}}}s(wC,"getPackageJsonFields");function DC(){return lt.SERVICE_TYPE==="worker"}s(DC,"isWorker");function RC(){return lt.SERVICE_TYPE==="apps"}s(RC,"isApps");function CC(){return lt.BUDIBASE_ENVIRONMENT==="QA"}s(CC,"isQA");function bC(){return process.env.SERVICE?process.env.SERVICE:process.env.APPS_SERVICE?process.env.APPS_SERVICE:process.env.WORKER_SERVICE?process.env.WORKER_SERVICE:"budibase"}s(bC,"getServiceName");var lt={isTest:xd,isJest:Oy,isDev:Fa,isWorker:DC,isApps:RC,isQA:CC,isProd:()=>!Fa(),BUDIBASE_ENVIRONMENT:process.env.BUDIBASE_ENVIRONMENT,JS_BCRYPT:process.env.JS_BCRYPT,JWT_SECRET:process.env.JWT_SECRET?(0,bd.createSecretKey)(process.env.JWT_SECRET,"utf8"):void 0,JWT_SECRET_FALLBACK:process.env.JWT_SECRET_FALLBACK?(0,bd.createSecretKey)(process.env.JWT_SECRET_FALLBACK,"utf8"):void 0,ENCRYPTION_KEY:process.env.ENCRYPTION_KEY,API_ENCRYPTION_KEY:OC(),COUCH_DB_URL:process.env.COUCH_DB_URL||"http://localhost:4005",COUCH_DB_SQL_URL:process.env.COUCH_DB_SQL_URL,COUCH_DB_USERNAME:process.env.COUCH_DB_USER,COUCH_DB_PASSWORD:process.env.COUCH_DB_PASSWORD,GOOGLE_CLIENT_ID:process.env.GOOGLE_CLIENT_ID,GOOGLE_CLIENT_SECRET:process.env.GOOGLE_CLIENT_SECRET,SALT_ROUNDS:process.env.SALT_ROUNDS,REDIS_URL:process.env.REDIS_URL||"localhost:6379",REDIS_PASSWORD:process.env.REDIS_PASSWORD,REDIS_CLUSTERED:process.env.REDIS_CLUSTERED,MINIO_ACCESS_KEY:process.env.MINIO_ACCESS_KEY,MINIO_SECRET_KEY:process.env.MINIO_SECRET_KEY,AWS_SESSION_TOKEN:process.env.AWS_SESSION_TOKEN,AWS_REGION:process.env.AWS_REGION||"eu-west-1",MINIO_URL:process.env.MINIO_URL,MINIO_ENABLED:process.env.MINIO_ENABLED||1,INTERNAL_API_KEY:process.env.INTERNAL_API_KEY,INTERNAL_API_KEY_FALLBACK:process.env.INTERNAL_API_KEY_FALLBACK,MULTI_TENANCY:process.env.MULTI_TENANCY,ACCOUNT_PORTAL_URL:process.env.ACCOUNT_PORTAL_URL||"https://account.budibase.app",INTERNAL_ACCOUNT_PORTAL_URL:process.env.INTERNAL_ACCOUNT_PORTAL_URL||process.env.ACCOUNT_PORTAL_URL||"https://account.budibase.app",ACCOUNT_PORTAL_API_KEY:process.env.ACCOUNT_PORTAL_API_KEY||"",BUDICLOUD_URL:process.env.BUDICLOUD_URL||"https://budibase.app",DISABLE_ACCOUNT_PORTAL:process.env.DISABLE_ACCOUNT_PORTAL,SELF_HOSTED:Ay,COOKIE_DOMAIN:process.env.COOKIE_DOMAIN,PLATFORM_URL:process.env.PLATFORM_URL||"",POSTHOG_TOKEN:process.env.POSTHOG_TOKEN,POSTHOG_PERSONAL_TOKEN:process.env.POSTHOG_PERSONAL_TOKEN,POSTHOG_API_HOST:process.env.POSTHOG_API_HOST||"https://us.i.posthog.com",POSTHOG_FEATURE_FLAGS_ENABLED:process.env.POSTHOG_FEATURE_FLAGS_ENABLED,ENABLE_ANALYTICS:process.env.ENABLE_ANALYTICS,TENANT_FEATURE_FLAGS:process.env.TENANT_FEATURE_FLAGS,CLOUDFRONT_CDN:process.env.CLOUDFRONT_CDN,CLOUDFRONT_PRIVATE_KEY_64:process.env.CLOUDFRONT_PRIVATE_KEY_64,CLOUDFRONT_PUBLIC_KEY_ID:process.env.CLOUDFRONT_PUBLIC_KEY_ID,BACKUPS_BUCKET_NAME:process.env.BACKUPS_BUCKET_NAME||Kn.BACKUPS,APPS_BUCKET_NAME:process.env.APPS_BUCKET_NAME||Kn.APPS,TEMPLATES_BUCKET_NAME:process.env.TEMPLATES_BUCKET_NAME||Kn.TEMPLATES,GLOBAL_BUCKET_NAME:process.env.GLOBAL_BUCKET_NAME||Kn.GLOBAL,PLUGIN_BUCKET_NAME:process.env.PLUGIN_BUCKET_NAME||Kn.PLUGINS,TEMP_BUCKET_NAME:process.env.TEMP_BUCKET_NAME||Kn.TEMP,USE_COUCH:process.env.USE_COUCH||!0,MOCK_REDIS:process.env.MOCK_REDIS,DEFAULT_LICENSE:process.env.DEFAULT_LICENSE,SERVICE:bC(),LOG_LEVEL:process.env.LOG_LEVEL||"info",SESSION_UPDATE_PERIOD:process.env.SESSION_UPDATE_PERIOD,DEPLOYMENT_ENVIRONMENT:process.env.DEPLOYMENT_ENVIRONMENT||"docker-compose",HTTP_LOGGING:IC(),ENABLE_AUDIT_LOG_IP_ADDR:process.env.ENABLE_AUDIT_LOG_IP_ADDR,SQL_LOGGING_ENABLE:process.env.SQL_LOGGING_ENABLE,SQL_MAX_ROWS:process.env.SQL_MAX_ROWS,SQL_MAX_RELATED_ROWS:process.env.MAX_RELATED_ROWS,SMTP_FALLBACK_ENABLED:process.env.SMTP_FALLBACK_ENABLED,SMTP_USER:process.env.SMTP_USER,SMTP_PASSWORD:process.env.SMTP_PASSWORD,SMTP_HOST:process.env.SMTP_HOST,SMTP_PORT:parseInt(process.env.SMTP_PORT||""),SMTP_FROM_ADDRESS:process.env.SMTP_FROM_ADDRESS,DISABLE_JWT_WARNING:process.env.DISABLE_JWT_WARNING,BLACKLIST_IPS:process.env.BLACKLIST_IPS,SERVICE_TYPE:"unknown",PASSWORD_MIN_LENGTH:process.env.PASSWORD_MIN_LENGTH,PASSWORD_MAX_LENGTH:process.env.PASSWORD_MAX_LENGTH,ENABLE_SSO_MAINTENANCE_MODE:Ay?process.env.ENABLE_SSO_MAINTENANCE_MODE:!1,...wC(),DISABLE_PINO_LOGGER:process.env.DISABLE_PINO_LOGGER,OFFLINE_MODE:process.env.OFFLINE_MODE,SESSION_EXPIRY_SECONDS:process.env.SESSION_EXPIRY_SECONDS,_set(t,e){process.env[t]=e,lt[t]=e},ROLLING_LOG_MAX_SIZE:process.env.ROLLING_LOG_MAX_SIZE||"10M",ENABLE_SCIM_LOGGER:process.env.ENABLE_SCIM_LOGGER,BB_ADMIN_USER_EMAIL:process.env.BB_ADMIN_USER_EMAIL,BB_ADMIN_USER_PASSWORD:process.env.BB_ADMIN_USER_PASSWORD,OPENAI_API_KEY:process.env.OPENAI_API_KEY,MIN_VERSION_WITHOUT_POWER_ROLE:process.env.MIN_VERSION_WITHOUT_POWER_ROLE||"3.0.0",DISABLE_CONTENT_SECURITY_POLICY:process.env.DISABLE_CONTENT_SECURITY_POLICY,BSON_BUFFER_SIZE:_C(process.env.BSON_BUFFER_SIZE)};function As(t){let e=(0,_y.cloneDeep)(lt),r;for(r in t)lt._set(r,t[r]);return()=>{for(let[n,i]of Object.entries(e))lt._set(n,i)}}s(As,"setEnv");function Iy(t,e){let r=As(t),n=e();return n instanceof Promise?n.finally(r):(r(),n)}s(Iy,"withEnv");var wy=["API_ENCRYPTION_KEY","BB_ADMIN_USER_PASSWORD","COUCH_DB_PASSWORD","COUCH_DB_SQL_URL","COUCH_DB_URL","GOOGLE_CLIENT_SECRET","INTERNAL_API_KEY_FALLBACK","INTERNAL_API_KEY","JWT_SECRET","MINIO_ACCESS_KEY","MINIO_SECRET_KEY","OPENAI_API_KEY","REDIS_PASSWORD"];for(let[t,e]of Object.entries(lt))e==="0"&&(lt[t]=0),e==="false"&&(lt[t]=0);var E=lt;var Va={};N(Va,{Databases:()=>vd,SEPARATOR:()=>Qn,SelectableDatabase:()=>Wa,getRedisClusterOptions:()=>Pd,getRedisConnectionDetails:()=>$a,getRedisOptions:()=>Jr,removeDbPrefix:()=>Nd});var Qn="-",vd=(O=>(O.PW_RESETS="pwReset",O.VERIFICATIONS="verification",O.INVITATIONS="invitation",O.DEV_LOCKS="devLocks",O.DEBOUNCE="debounce",O.SESSIONS="session",O.USER_CACHE="users",O.FLAGS="flags",O.WORKSPACE_METADATA="appMetadata",O.QUERY_VARS="queryVars",O.LICENSES="license",O.GENERIC_CACHE="data_cache",O.WRITE_THROUGH="writeThrough",O.LOCKS="locks",O.SOCKET_IO="socket_io",O.BPM_EVENTS="bpmEvents",O.DOC_WRITE_THROUGH="docWriteThrough",O.RECAPTCHA_SESSION="recaptchaSession",O))(vd||{}),Wa=(y=>(y[y.DEFAULT=0]="DEFAULT",y[y.SOCKET_IO=1]="SOCKET_IO",y[y.RATE_LIMITING=2]="RATE_LIMITING",y[y.UNUSED_2=3]="UNUSED_2",y[y.UNUSED_3=4]="UNUSED_3",y[y.UNUSED_4=5]="UNUSED_4",y[y.UNUSED_5=6]="UNUSED_5",y[y.UNUSED_6=7]="UNUSED_6",y[y.UNUSED_7=8]="UNUSED_7",y[y.UNUSED_8=9]="UNUSED_8",y[y.UNUSED_9=10]="UNUSED_9",y[y.UNUSED_10=11]="UNUSED_10",y[y.UNUSED_11=12]="UNUSED_11",y[y.UNUSED_12=13]="UNUSED_12",y[y.UNUSED_13=14]="UNUSED_13",y[y.UNUSED_14=15]="UNUSED_14",y))(Wa||{});function $a(){let t=E.REDIS_PASSWORD,e=E.REDIS_URL.split("//");e=e.length>1?e[1]:e[0],e=e.split("@"),e.length>1?(t=e[0].split(":")[1],e=e[1]):e=e[0];let[r,n]=e.split(":"),i=parseInt(n);return{host:r,password:t,port:isNaN(i)?6379:i}}s($a,"getRedisConnectionDetails");function Pd(){return{slotsRefreshTimeout:2e3,dnsLookup:(t,e)=>e(null,t),redisOptions:{...Jr(),tls:{}}}}s(Pd,"getRedisClusterOptions");function Jr(){let{host:t,password:e,port:r}=$a();return{connectTimeout:3e4,port:r,host:t,password:e}}s(Jr,"getRedisOptions");function Nd(t){let e=t.split(Qn);return e.length>=2?(e.shift(),e.join(Qn)):e[0]}s(Nd,"removeDbPrefix");var vT=F(require("events"));var ei={};N(ei,{Duration:()=>Ee,DurationType:()=>xf,clearCookie:()=>gr,compare:()=>kd,getAppIdFromCtx:()=>on,getCookie:()=>Gt,getProxyDispatcher:()=>rx,hasCircularStructure:()=>Xb,hash:()=>Ld,isAudited:()=>Cf,isClient:()=>Zb,isPublicApiRequest:()=>zb,isServingApp:()=>jb,isServingBuilder:()=>Yb,isServingBuilderPreview:()=>Hb,isValidInternalAPIKey:()=>js,newid:()=>ne,openJwt:()=>su,resetProxyDispatcherCache:()=>nx,setCookie:()=>CT,time:()=>tx,timeout:()=>Rf,urlHasProtocol:()=>ex,validEmail:()=>bf});var Dy=require("uuid");function ne(){return(0,Dy.v4)().replace(/-/g,"")}s(ne,"newid");var Ud=E.JS_BCRYPT?require("bcryptjs"):require("bcrypt"),xC=E.SALT_ROUNDS||10;async function Ld(t){let e=await Ud.genSalt(xC);return Ud.hash(t,e)}s(Ld,"hash");async function kd(t,e){return Ud.compare(t,e)}s(kd,"compare");var iu=F(require("jsonwebtoken"));var ue={};N(ue,{DEFAULT_TENANT_ID:()=>ae,baseGlobalDBName:()=>Cs,doInAutomationContext:()=>eb,doInContext:()=>ef,doInEnvironmentContext:()=>lb,doInFeatureFlagOverrideContext:()=>uf,doInIPContext:()=>nf,doInIdentityContext:()=>Os,doInLicenseContext:()=>rb,doInScimContext:()=>db,doInSelfHostTenantUsingCloud:()=>tb,doInTenant:()=>Re,doInWorkspaceContext:()=>sb,doInWorkspaceMigrationContext:()=>ab,ensureSnippetContext:()=>Vy,getAuditLogDBName:()=>Wy,getAuditLogsDB:()=>pb,getAutomationId:()=>tf,getCurrentContext:()=>en,getDevWorkspaceDB:()=>hb,getDevWorkspaceId:()=>ub,getEnvironmentVariables:()=>fb,getFeatureFlagOverrides:()=>af,getFeatureFlags:()=>sf,getGlobalDB:()=>H,getGlobalDBName:()=>Xr,getIP:()=>rf,getIdentity:()=>Ft,getLicense:()=>nb,getPlatformURL:()=>Xd,getProdWorkspaceDB:()=>mb,getProdWorkspaceId:()=>cb,getScimDBName:()=>zC,getSelfHostCloudDB:()=>ib,getTableForView:()=>Eb,getTenantIDFromWorkspaceID:()=>zn,getTenantId:()=>G,getWorkspaceDB:()=>Jn,getWorkspaceId:()=>Le,identity:()=>_s,isMultiTenant:()=>pr,isScim:()=>pt,isSelfHostUsingCloud:()=>za,isTenancyEnabled:()=>ZC,isTenantIdSet:()=>JC,setFeatureFlags:()=>of,setTableForView:()=>gb});var _s={};N(_s,{doInAccountContext:()=>vC,doInIdentityContext:()=>Fd,doInUserContext:()=>Bd,getAccountUserId:()=>Ry,getIdentity:()=>Md});function Md(){return Ft()}s(Md,"getIdentity");function Fd(t,e){return Os(t,e)}s(Fd,"doInIdentityContext");function Bd(t,e,r){let n={...t,_id:t._id,type:"user",hostInfo:{ipAddress:e.request.ip,userAgent:e.userAgent.source}};return Fd(n,r)}s(Bd,"doInUserContext");function vC(t,e){let r=Ry(t),n=t.tenantId,i={_id:r,type:"user",tenantId:n,account:t};return Fd(i,e)}s(vC,"doInAccountContext");function Ry(t){let e;return $o(t)?e=t.budibaseUserId:e=t.accountId,e}s(Ry,"getAccountUserId");var dt=s(t=>{let e=Wd(t),r,n;if(e.auth?.username)r=e.auth.username;else if(E.COUCH_DB_USERNAME)r=E.COUCH_DB_USERNAME;else if(!E.isTest())throw new Error("CouchDB username not set");if(e.auth?.password)n=e.auth.password;else if(E.COUCH_DB_PASSWORD)n=E.COUCH_DB_PASSWORD;else if(!E.isTest())throw new Error("CouchDB password not set");let i=Buffer.from(`${r}:${n}`).toString("base64"),o=E.COUCH_DB_SQL_URL;if(E.isDev()&&!o)o="http://localhost:4006";else if(!o&&e.url){let a=new URL(e.url);o=e.url.replace(a.port,"4984")}return{url:e.url,sqlUrl:Wd(o).url,auth:{username:r,password:n},cookie:`Basic ${i}`}},"getCouchInfo"),Wd=s((t=E.COUCH_DB_URL)=>{let e,r,n,i;if(t){/^https?:\/\//i.test(t)||(t=`http://${t}`);let a=t.split("://"),u=a[0],c=a.slice(1).join("://");if(t.includes("@")){let l=c.split("@");i=l[l.length-1];let d=l.slice(0,-1).join("@");if(d.includes(":")){let f=d.split(":");r=f[0],n=f.slice(1).join(":")}else r=d}else i=c;e=`${u}://${i}`}return{url:e,auth:{username:r,password:n}}},"getUrlInfo");var My=F(require("@budibase/nano"));var Cy=F(require("node-fetch"));function qa(t){return t.replace(/(https?:\/\/)|(\/)+/g,"$1$2")}s(qa,"checkSlashesInUrl");async function by(t,e="GET",r){let{url:n,cookie:i}=dt(),o=`${n}/${t}`;return await Is({url:o,cookie:i,method:e,body:r})}s(by,"directCouchCall");async function Is({url:t,cookie:e,method:r,body:n}){let i={method:r,headers:{Authorization:e}};return n&&r!=="GET"&&(typeof n=="string"?(i.body=n,i.headers["Content-Type"]="text/plain"):(i.body=JSON.stringify(n),i.headers["Content-Type"]="application/json")),await(0,Cy.default)(qa(encodeURI(t)),i)}s(Is,"directCouchUrlCall");async function $d(t,e="GET",r){let n=await by(t,e,r);if(n.status<300)return await n.json();throw"Cannot connect to CouchDB instance"}s($d,"directCouchQuery");var Zr=F(require("pouchdb"));var xy,vy=!1,Vd=s((t={})=>{let{url:e,cookie:r}=dt(),n={prefix:e,fetch:(i,o)=>(o.headers.set("Authorization",r),Zr.default.fetch(i,o))};if(t.inMemory){let i=require("pouchdb-adapter-memory");Zr.default.plugin(i),n={adapter:"memory"}}if(t.onDisk&&(n={adapter:"leveldb"}),t.replication){let i=require("@budibase/pouchdb-replication-stream");Zr.default.plugin(i.plugin),Zr.default.adapter("writableStream",i.adapters.writableStream)}if(t.find){let i=require("pouchdb-find");Zr.default.plugin(i)}return Zr.default.defaults(n)},"getPouch");function Ka(t){xy=Vd(t),vy=!0}s(Ka,"init");var PC=s(()=>{if(!vy)throw new Error("init has not been called")},"checkInitialised");function Xe(t,e){PC();let r=new xy(t,e),n=r.put;return r.put=async(i,o={})=>(i.createdAt||(i.createdAt=new Date().toISOString()),i.updatedAt=new Date().toISOString(),n(i,o)),r.exists=async()=>!(await r.info()).error,r}s(Xe,"getPouchDB");async function ws(t){if(!(!t||E.isTest()))try{return await t.close()}catch{}}s(ws,"closePouchDB");var le=F(require("dd-trace"));var jn=class{constructor(e){this.db=e}static{s(this,"DDInstrumentedDatabase")}get name(){return this.db.name}exists(e){return le.default.trace("db.exists",r=>(r.addTags({db_name:this.name,doc_id:e}),e?this.db.exists(e):this.db.exists()))}get(e){return le.default.trace("db.get",r=>(r.addTags({db_name:this.name,doc_id:e}),this.db.get(e)))}tryGet(e){return le.default.trace("db.tryGet",async r=>{r.addTags({db_name:this.name,doc_id:e});let n=await this.db.tryGet(e);return r.addTags({doc_found:n!==void 0}),n})}getMultiple(e,r){return le.default.trace("db.getMultiple",async n=>{n.addTags({db_name:this.name,num_docs:e?.length||0,allow_missing:r?.allowMissing});let i=await this.db.getMultiple(e,r);return n.addTags({num_docs_found:i.length}),i})}remove(e,r){return le.default.trace("db.remove",async n=>{n.addTags({db_name:this.name,doc_id:e,rev:r});let i=typeof e=="object",o=i?e._id:e;r=i?e._rev:r;let a=await this.db.remove(o,r);return n.addTags({ok:a.ok}),a})}bulkRemove(e,r){return le.default.trace("db.bulkRemove",n=>(n.addTags({db_name:this.name,num_docs:e.length,silence_errors:r?.silenceErrors}),this.db.bulkRemove(e,r)))}put(e,r){return le.default.trace("db.put",async n=>{n.addTags({db_name:this.name,doc_id:e._id,force:r?.force,return_doc:r?.returnDoc});let i=await this.db.put(e,r);return n.addTags({ok:i.ok}),i})}bulkDocs(e){return le.default.trace("db.bulkDocs",r=>(r.addTags({db_name:this.name,num_docs:e.length}),this.db.bulkDocs(e)))}async find(e){return le.default.trace("db.find",async r=>{r.addTags({db_name:this.name,...e});let n=await this.db.find(e);return r.addTags({rows_length:n.docs.length}),n})}allDocs(e){return le.default.trace("db.allDocs",async r=>{r.addTags({db_name:this.name,...e});let n=await this.db.allDocs(e);return r.addTags({total_rows:n.total_rows,rows_length:n.rows.length,offset:n.offset}),n})}query(e,r){return le.default.trace("db.query",async n=>{n.addTags({db_name:this.name,view_name:e,...r});let i=await this.db.query(e,r);return n.addTags({total_rows:i.total_rows,rows_length:i.rows.length,offset:i.offset}),i})}destroy(){return le.default.trace("db.destroy",async e=>{e.addTags({db_name:this.name});let r=await this.db.destroy();return e.addTags({ok:r.ok}),r})}compact(){return le.default.trace("db.compact",async e=>{e.addTags({db_name:this.name});let r=await this.db.compact();return e.addTags({ok:r.ok}),r})}dump(e,r){return le.default.trace("db.dump",n=>(n.addTags({db_name:this.name,batch_limit:r?.batch_limit,batch_size:r?.batch_size,style:r?.style,timeout:r?.timeout,num_doc_ids:r?.doc_ids?.length,view:r?.view}),this.db.dump(e,r)))}load(...e){return le.default.trace("db.load",r=>(r.addTags({db_name:this.name,num_args:e.length}),this.db.load(...e)))}createIndex(...e){return le.default.trace("db.createIndex",r=>(r.addTags({db_name:this.name,num_args:e.length}),this.db.createIndex(...e)))}deleteIndex(...e){return le.default.trace("db.deleteIndex",r=>(r.addTags({db_name:this.name,num_args:e.length}),this.db.deleteIndex(...e)))}getIndexes(...e){return le.default.trace("db.getIndexes",r=>(r.addTags({db_name:this.name,num_args:e.length}),this.db.getIndexes(...e)))}sql(e,r){return le.default.trace("db.sql",async n=>{n.addTags({db_name:this.name,num_bindings:r?.length});let i=await this.db.sql(e,r);return n.addTags({num_rows:i.length}),i})}sqlPurgeDocument(e){return le.default.trace("db.sqlPurgeDocument",r=>(r.addTags({db_name:this.name,num_docs:Array.isArray(e)?e.length:1}),this.db.sqlPurgeDocument(e)))}sqlDiskCleanup(){return le.default.trace("db.sqlDiskCleanup",e=>(e.addTags({db_name:this.name}),this.db.sqlDiskCleanup()))}};var zd={};N(zd,{breakExternalTableId:()=>Kd,breakRowIdField:()=>KC,buildExternalTableId:()=>BC,convertRowId:()=>qC,encodeTableId:()=>WC,encodeViewId:()=>$C,extractDate:()=>jd,generateRowIdField:()=>VC,getNativeSql:()=>Yn,isExternalTable:()=>qd,isExternalTableID:()=>Qa,isInternalTableID:()=>FC,isRowId:()=>GC,isValidFilter:()=>Ya,isValidISODateString:()=>ja,isValidISODateStringWithoutTimezone:()=>Qd,isValidTime:()=>Yd,sqlLog:()=>Ds,validateManyToMany:()=>Hd});var Gd=`${b}${b}`,Ny=/^\[.*]$/g,NC=encodeURIComponent(" "),UC=/^\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}:\d{2}(?:.\d{3})?Z)?$/,LC=/^\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}:\d{2}(?:.\d{3})?)?$/,kC=/(\d{4}-\d{2}-\d{2})/,MC=/^(?:\d{2}:)?(?:\d{2}:)(?:\d{2})$/;function Qa(t){return t.startsWith("datasource"+b)}s(Qa,"isExternalTableID");function FC(t){return!Qa(t)}s(FC,"isInternalTableID");function Yn(t){let e=t.toSQL();if(Array.isArray(e))return e;let r;return e.toNative&&(r=e.toNative()),{sql:r?.sql||e.sql,bindings:r?.bindings||e.bindings}}s(Yn,"getNativeSql");function qd(t){return t?.sourceId&&t.sourceId.includes("datasource"+b)&&t?.sourceId!==Dn||t?.sourceType==="external"?!0:!!(t?._id&&Qa(t._id))}s(qd,"isExternalTable");function BC(t,e){return`${t}${Gd}${encodeURIComponent(e)}`}s(BC,"buildExternalTableId");function WC(t){return Qa(t)?encodeURIComponent(t):t}s(WC,"encodeTableId");function $C(t){return encodeURIComponent(t)}s($C,"encodeViewId");function Kd(t){let e=t.split(Gd),r=e.shift(),n=e.join(Gd);if(n.includes(NC)&&(n=decodeURIComponent(n)),!r||!n)throw new Error("Unable to get datasource/table name from table ID");return{datasourceId:r,tableName:n}}s(Kd,"breakExternalTableId");function VC(t=[]){Array.isArray(t)||(t=[t]);for(let e in t)t[e]instanceof Buffer&&(t[e]=t[e].toString());return encodeURIComponent(JSON.stringify(t).replace(/"/g,"'"))}s(VC,"generateRowIdField");function GC(t){return Array.isArray(t)||typeof t=="string"&&t.match(Ny)!=null}s(GC,"isRowId");function qC(t){return Array.isArray(t)?t[0]:typeof t=="string"&&t.match(Ny)!=null?t.substring(1,t.length-1):t}s(qC,"convertRowId");function KC(t){if(!t)return[];let e=typeof t=="string"?t:t._id,r=decodeURIComponent(e).replace(/'/g,'"');try{let n=JSON.parse(r);return Array.isArray(n)?n:[n]}catch{return[t]}}s(KC,"breakRowIdField");function ja(t){let e=t.trim();if(!UC.test(e))return!1;let r=new Date(e);return!isNaN(r.getTime())}s(ja,"isValidISODateString");function Qd(t){let e=t.trim();if(!LC.test(e))return!1;let r=new Date(e);return!isNaN(r.getTime())}s(Qd,"isValidISODateStringWithoutTimezone");function jd(t){let e=t.match(kC);if(e)return e[0]}s(jd,"extractDate");function Ya(t){return t!=null&&t!==""}s(Ya,"isValidFilter");function Yd(t){return MC.test(t)}s(Yd,"isValidTime");function Ds(t,e,r){if(!E.SQL_LOGGING_ENABLE)return;let n=`[SQL] [${t.toUpperCase()}] query="${e}"`;r&&(n+=` values="${r.join(", ")}"`),console.log(n)}s(Ds,"sqlLog");function QC(t){return!!t.through&&!!t.fromPrimary&&!!t.from&&!!t.toPrimary&&!!t.to}s(QC,"isValidManyToManyRelationship");function Hd(t){if(QC(t))return t}s(Hd,"validateManyToMany");var Uy="Database does not exist.";function Ly(t){return(0,My.default)({url:t.url,requestDefaults:{headers:{Authorization:t.cookie}},parseUrl:!1})}s(Ly,"buildNano");var dr=class extends Error{constructor(r,n){super(r);let i=n.status||n.statusCode||500;this.status=i,this.statusCode=i,this.reason=n.reason||"Unknown",this.name=n.name,this.errid=n.errid||"Unknown",this.description=n.description||"Unknown",this.error=n.error||"Not found"}static{s(this,"CouchDBError")}};function jC(t,e,r){if(!t||!e)throw new Error("Unable to create database without database name or connection");let n=new Hn(t,r,e);return new jn(n)}s(jC,"DatabaseWithConnection");var Hn=class t{constructor(e,r,n){this.couchInfo=dt();this.name=e,this.pouchOpts=r||{},n&&(this.couchInfo=dt(n),this.instanceNano=Ly(this.couchInfo)),t.nano||t.init()}static{s(this,"DatabaseImpl")}static init(){let e=dt();t.nano=Ly(e)}exists(e){return e===void 0?this.dbExists():this.docExists(e)}async dbExists(){return(await Is({url:`${this.couchInfo.url}/${this.name}`,method:"HEAD",cookie:this.couchInfo.cookie})).status===200}async docExists(e){try{return await this.performCall(r=>()=>r.head(e)),!0}catch{return!1}}nano(){return this.instanceNano||t.nano}getDb(){return this.nano().db.use(this.name)}async checkAndCreateDb(){let e=!this.pouchOpts?.skip_setup,r=await this.exists();if(!e&&!r)throw new Error("DB does not exist");if(!r)try{await this.nano().db.create(this.name)}catch(n){if(n.statusCode!==412)throw new dr(n.message,n)}return this.getDb()}async performCallWithDBCreation(e){let r=this.getDb(),n=await e(r);try{return await n()}catch(i){if(i.statusCode===404&&i.reason===Uy)return await this.checkAndCreateDb(),await this.performCallWithDBCreation(e);throw new dr(`CouchDB error: ${i.message}`,i)}}async performCall(e){let r=this.getDb(),n=await e(r);try{return await n()}catch(i){throw new dr(`CouchDB error: ${i.message}`,i)}}async get(e){return this.performCall(r=>{if(!e)throw new Error("Unable to get doc without a valid _id.");return()=>r.get(e)})}async tryGet(e){try{return await this.get(e)}catch(r){if(r.statusCode===404)return;throw r}}async getMultiple(e,r){if(!e||e.length===0)return[];e=[...new Set(e)];let n=!r?.excludeDocs,i=await this.allDocs({keys:e,include_docs:n}),o=s(c=>n&&c.doc==null||c.value&&"deleted"in c.value&&c.value.deleted?!0:c.error==="not_found","rowUnavailable"),a=i.rows.filter(c=>!o(c)),u=a.length!==i.rows.length;if(!r?.allowMissing&&u){let l=i.rows.filter(d=>o(d)).map(d=>d.key).join(", ");throw new Error(`Unable to get bulk documents: ${l}`)}return a.map(c=>n?c.doc:c.value)}async remove(e,r){return this.performCall(n=>{let i,o;if(Nm(e)?(i=e._id,o=e._rev):(i=e,o=r),!i||!o)throw new Error("Unable to remove doc without a valid _id and _rev.");return()=>n.destroy(i,o)})}async bulkRemove(e,r){let n=await this.performCall(a=>()=>a.bulk({docs:e.map(u=>({...u,_deleted:!0}))}));if(r?.silenceErrors)return;let i=!1,o="Unable to bulk remove documents: ";for(let a of n)a.error&&(i=!0,o+=a.error);if(i)throw new dr(o,{name:this.name,status:400})}async post(e,r){return e._id||(e._id=ne()),this.put(e,r)}async put(e,r){if(!e._id)throw new Error("Cannot store document without _id field.");return this.performCallWithDBCreation(async n=>{if(e.createdAt||(e.createdAt=new Date().toISOString()),e.updatedAt=new Date().toISOString(),r?.force&&e._id)try{let i=await this.get(e._id);i&&(e._rev=i._rev)}catch(i){if(i.status!==404)throw i}return async()=>{let i=await n.insert(e);return r?.returnDoc?{...i,doc:{...e,_rev:i.rev}}:i}})}async bulkDocs(e){let r=new Date().toISOString();return this.performCallWithDBCreation(n=>()=>n.bulk({docs:e.map(i=>({createdAt:r,...i,updatedAt:r}))}))}async find(e){return this.performCall(r=>async()=>r.find(e))}async allDocs(e){return this.performCall(r=>async()=>{try{return await r.list(e)}catch(n){if(n.reason===Uy)return{offset:0,total_rows:0,rows:[]};throw n}})}async _sqlQuery(e,r,n){e=qa(`${this.couchInfo.sqlUrl}/${e}`);let i={url:e,method:r,cookie:this.couchInfo.cookie};return n&&(i.body=n),this.performCall(()=>async()=>{let o=await Is(i),a=await o.text();if(o.status>300){let u;try{u=JSON.parse(a)}catch{throw console.error(`SQS error: ${a}`),new dr("error while running SQS query, please try again later",{name:"sqs_error",status:o.status})}throw u}return JSON.parse(a)})}async sql(e,r){let i=`/${this.name}/${wt}`;return Ds("sqlite3",e,r),await this._sqlQuery(i,"POST",{query:e,args:r})}async sqlDiskCleanup(){let r=`/${this.name}/_cleanup`;try{await this._sqlQuery(r,"POST")}catch(n){if(n.status!==500)throw n}}async sqlPurgeDocument(e){Array.isArray(e)||(e=[e]);let n=`/${this.name}/_purge`;return await this._sqlQuery(n,"POST",{docs:e})}async query(e,r){return this.performCall(n=>{let[i,o]=e.split("/");return()=>n.view(i,o,r)})}async destroy(){if(await this.exists(wt)){let e=await this.get(wt);e.sql.tables={},await this.put(e),await this.sqlDiskCleanup()}try{return await this.nano().db.destroy(this.name)}catch(e){if(e.statusCode===404)return{ok:!0};throw new dr(e.message,e)}}async compact(){return this.performCall(e=>()=>e.compact())}async dump(e,r){return Xe(this.name).dump(e,r)}async load(e){return Xe(this.name).load(e)}async createIndex(e){return Xe(this.name).createIndex(e)}async deleteIndex(e){return Xe(this.name).deleteIndex(e)}async getIndexes(){return Xe(this.name).getIndexes()}};function De(t,e){return new jn(new Hn(t,e))}s(De,"getDB");async function Ke(t,e,r){let n=De(t,r);return await e(n)}s(Ke,"doWithDB");async function Jd(t){let e="/_all_dbs";return t&&(e+=`?${t}`),await $d(e)}s(Jd,"directCouchAllDbs");var Zd="No app provided";function fr(t){if(!t)throw Zd;return t.startsWith(Ze)}s(fr,"isDevWorkspaceID");function YC(t){if(!t)throw Zd;return t.startsWith(Je)&&!fr(t)}s(YC,"isProdWorkspaceID");function Rs(t){if(!t)throw Zd;return fr(t.appId)}s(Rs,"isDevWorkspace");function Ha(t){if(!t||t.startsWith(Ze))return t;let e=t.split(Je);e.shift();let r=e.join(Je);return`${Ze}${r}`}s(Ha,"getDevWorkspaceID");function Qe(t){if(!t||!t.startsWith(Ze))return t;let e=t.split(Ze);e.shift();let r=e.join(Ze);return`${Je}${r}`}s(Qe,"getProdWorkspaceID");var Fy=require("async_hooks");var he=class t{static{s(this,"Context")}static{this.storage=new Fy.AsyncLocalStorage}static run(e,r){return t.storage.run(e,()=>r())}static get(){return t.storage.getStore()}};var By=null;function Xr(t){return t||(t=G()),Cs(t)}s(Xr,"getGlobalDBName");function Wy(t){return t||(t=G()),t===ae?fe.AUDIT_LOGS.name:`${t}${b}${fe.AUDIT_LOGS.name}`}s(Wy,"getAuditLogDBName");function zC(t){return t||(t=G()),t===ae?fe.SCIM_LOGS.name:`${t}${b}${fe.SCIM_LOGS.name}`}s(zC,"getScimDBName");function Cs(t){return!t||t===ae?fe.GLOBAL.name:`${t}${b}${fe.GLOBAL.name}`}s(Cs,"baseGlobalDBName");function Xd(){return E.PLATFORM_URL}s(Xd,"getPlatformURL");function pr(){return!!E.MULTI_TENANCY}s(pr,"isMultiTenant");function JC(){return!!he.get()?.tenantId}s(JC,"isTenantIdSet");function ZC(){return E.MULTI_TENANCY}s(ZC,"isTenancyEnabled");function zn(t){if(!t)return;if(!pr())return ae;let e=t.split(b),r=e[1]==="dev";if(!(r&&e.length===3||!r&&e.length===2))return r?e[2]:e[1]}s(zn,"getTenantIDFromWorkspaceID");function XC(t){let e;try{e=he.get()}catch{e={}}return e={...e,...t},e}s(XC,"updateContext");async function ft(t,e){ob();let r=XC(t);return he.run(r,e)}s(ft,"newContext");async function eb(t){return await Vy(),await ft({tenantId:zn(t.workspaceId),appId:t.workspaceId,automationId:t.automationId},t.task)}s(eb,"doInAutomationContext");async function ef(t,e){let r=zn(t);return ft({tenantId:r,appId:t},e)}s(ef,"doInContext");async function Re(t,e){return E.MULTI_TENANCY||(t=t||ae),ft(t?{tenantId:t}:{},e)}s(Re,"doInTenant");async function tb(t,e){return ft({tenantId:t,isSelfHostUsingCloud:!0},e)}s(tb,"doInSelfHostTenantUsingCloud");async function rb(t,e){return ft({license:t},e)}s(rb,"doInLicenseContext");function nb(){return he.get()?.license}s(nb,"getLicense");function za(){return!!he.get()?.isSelfHostUsingCloud}s(za,"isSelfHostUsingCloud");function ib(){let t=he.get();if(!t||!t.isSelfHostUsingCloud)throw new Error("Self-host cloud DB not found");return De(fe.SELF_HOST_CLOUD.name)}s(ib,"getSelfHostCloudDB");async function sb(t,e){return $y(t,e)}s(sb,"doInWorkspaceContext");async function $y(t,e,r){if(!t)throw new Error("workspaceId is required");let n=zn(t),i={appId:t,...r};return n&&(i.tenantId=n),ft(i,e)}s($y,"_doInWorkspaceContext");async function Os(t,e){if(!t)throw new Error("identity is required");let r={identity:t};return t.tenantId&&(r.tenantId=t.tenantId),ft(r,e)}s(Os,"doInIdentityContext");function ob(){if(he.get()?.isMigrating)throw new Error("The context cannot be changed, a migration is currently running")}s(ob,"guardMigration");async function ab(t,e){return $y(t,e,{isMigrating:!0})}s(ab,"doInWorkspaceMigrationContext");function Ft(){try{return he.get()?.identity}catch{}}s(Ft,"getIdentity");function G(){if(!pr())return ae;let e=he.get()?.tenantId;if(!e)throw new Error("Tenant id not found");return e}s(G,"getTenantId");function tf(){return he.get()?.automationId}s(tf,"getAutomationId");function Le(){let e=he.get()?.appId;return!e&&E.isTest()&&By?By:e}s(Le,"getWorkspaceId");function rf(){return he.get()?.ip}s(rf,"getIP");var ub=s(()=>{let t=Le();if(!t)throw new Error("Could not get workspaceId");return Ha(t)},"getDevWorkspaceId"),cb=s(()=>{let t=Le();if(!t)throw new Error("Could not get workspaceId");return Qe(t)},"getProdWorkspaceId");function lb(t,e){if(!t)throw new Error("Must supply environment variables.");return ft({environmentVariables:t},e)}s(lb,"doInEnvironmentContext");function db(t){return ft({isScim:!0},t)}s(db,"doInScimContext");function nf(t,e){return ft({ip:t},e)}s(nf,"doInIPContext");async function Vy(){let t=en();if(!t||t.snippets)return;let e,r=Jn();r&&(e=(await r.tryGet("app_metadata"))?.snippets),t.snippets=e||[]}s(Vy,"ensureSnippetContext");function fb(){let t=he.get();return t.environmentVariables?t.environmentVariables:null}s(fb,"getEnvironmentVariables");function H(){let t=he.get();if(!t||E.MULTI_TENANCY&&!t.tenantId)throw new Error("Global DB not found");if(t.isSelfHostUsingCloud)throw new Error("Global DB not found - self-host users using cloud don't have a global DB");return De(Cs(t?.tenantId))}s(H,"getGlobalDB");function pb(){if(!G())throw new Error("No tenant ID found - cannot open audit log DB");return De(Wy())}s(pb,"getAuditLogsDB");function Jn(t){let e=Le();if(!e)throw new Error("Unable to retrieve workspace DB - no workspace ID.");if(za())throw new Error("Workspace DB not found - self-host users using cloud don't have workspace DBs");return De(e,t)}s(Jn,"getWorkspaceDB");function mb(t){let e=Le();if(!e)throw new Error("Unable to retrieve prod DB - no workspace ID.");return De(Qe(e),t)}s(mb,"getProdWorkspaceDB");function hb(t){let e=Le();if(!e)throw new Error("Unable to retrieve dev DB - no workspace ID.");return De(Ha(e),t)}s(hb,"getDevWorkspaceDB");function pt(){return!!he.get()?.isScim}s(pt,"isScim");function en(){try{return he.get()}catch{return}}s(en,"getCurrentContext");function sf(t){let e=en();if(e)return e.featureFlagCache?.[t]}s(sf,"getFeatureFlags");function of(t,e){let r=en();r&&(r.featureFlagCache??={},r.featureFlagCache[t]=e)}s(of,"setFeatureFlags");function af(){return en()?.featureFlagOverrides||{}}s(af,"getFeatureFlagOverrides");async function uf(t,e){return await ft({featureFlagOverrides:t},e)}s(uf,"doInFeatureFlagOverrideContext");function Eb(t){let e=en();if(e)return e.viewToTableCache?.[t]}s(Eb,"getTableForView");function gb(t,e){let r=en();r&&(r.viewToTableCache??={},r.viewToTableCache[t]=e)}s(gb,"setTableForView");var Er={};N(Er,{AutomationViewMode:()=>Ua,BUDIBASE_DATASOURCE_TYPE:()=>Ad,DEFAULT_BB_DATASOURCE_ID:()=>Dn,DEFAULT_EMPLOYEE_TABLE_ID:()=>wd,DEFAULT_EXPENSES_TABLE_ID:()=>Id,DEFAULT_INVENTORY_TABLE_ID:()=>Od,DEFAULT_JOBS_TABLE_ID:()=>_d,DatabaseImpl:()=>Hn,DatabaseWithConnection:()=>jC,DeprecatedViews:()=>qn,DesignDocuments:()=>Ts,DocumentType:()=>ce,InternalTable:()=>xt,QueryBuilder:()=>Vt,Replication:()=>AT,SEPARATOR:()=>b,SQLITE_DESIGN_DOC_ID:()=>wt,SQS_DATASOURCE_INTERNAL:()=>Sd,StaticDatabases:()=>fe,UNICODE_MAX:()=>ve,USER_METADATA_PREFIX:()=>ys,ViewName:()=>lr,WORKSPACE_DEV:()=>La,WORKSPACE_DEV_PREFIX:()=>Ze,WORKSPACE_PREFIX:()=>Je,baseGlobalDBName:()=>Cs,checkErrorCode:()=>wT,closePouchDB:()=>ws,createApiKeyView:()=>ET,createNewUserEmailView:()=>mT,createPlatformAccountEmailView:()=>yT,createPlatformUserView:()=>TT,createUserAppView:()=>hT,createView:()=>Xn,dbExists:()=>Pb,directCouchAllDbs:()=>Jd,directCouchCall:()=>by,directCouchQuery:()=>$d,directCouchUrlCall:()=>Is,doWithDB:()=>Ke,fullSearch:()=>Mb,generateAgentChatID:()=>rT,generateAgentToolSourceID:()=>nT,generateAppUserID:()=>tu,generateDevInfoID:()=>Xy,generateGlobalUserID:()=>Zn,generateOAuth2LogID:()=>tT,generatePluginID:()=>eT,generateRoleID:()=>Ef,generateRowID:()=>hf,generateTableID:()=>Yy,generateTemplateID:()=>Zy,generateUserMetadataID:()=>zy,generateWorkspaceAppID:()=>iT,generateWorkspaceFavouriteID:()=>sT,generateWorkspaceID:()=>jy,getAllDbs:()=>pT,getAllWorkspaces:()=>$s,getCouchInfo:()=>dt,getDB:()=>De,getDevWorkspaceID:()=>Ha,getDevWorkspaceIDs:()=>xb,getDocParams:()=>Wt,getGlobalDBName:()=>Xr,getGlobalIDFromUserMetadataID:()=>Jy,getGlobalUserParams:()=>nn,getOAuth2ConfigParams:()=>lT,getPluginParams:()=>cT,getPouch:()=>Vd,getPouchDB:()=>Xe,getProdWorkpaceIDs:()=>bb,getProdWorkspaceID:()=>Qe,getQueryIndex:()=>oT,getRoleParams:()=>nu,getRowParams:()=>gf,getStartEndKeyURL:()=>Ws,getTemplateParams:()=>uT,getUrlInfo:()=>Wd,getUserMetadataParams:()=>aT,getUsersByWorkspaceParams:()=>ru,getWorkspaceAppParams:()=>dT,getWorkspaceFavouriteParams:()=>fT,getWorkspacesByIDs:()=>Cb,init:()=>Ka,isDevWorkspace:()=>Rs,isDevWorkspaceID:()=>fr,isDocumentConflictError:()=>Bb,isGlobalUserID:()=>Hy,isProdWorkspaceID:()=>YC,isSameWorkspaceID:()=>vb,paginatedSearch:()=>kb,pagination:()=>Tf,prefixRoleID:()=>Bt,queryGlobalView:()=>$t,queryGlobalViewRaw:()=>_f,queryPlatformView:()=>Gs,queryView:()=>Af,queryViewRaw:()=>Vs,removeKeyNumbering:()=>qs,searchIndexes:()=>If});var Bs={};N(Bs,{WorkspaceState:()=>mf,getWorkspaceMetadata:()=>eu,invalidateWorkspaceMetadata:()=>Db});var hr={};N(hr,{getCacheClient:()=>df,getDocWritethroughClient:()=>_b,getInviteClient:()=>rn,getLockClient:()=>pf,getPasswordResetClient:()=>Fs,getSessionClient:()=>mr,getSocketClient:()=>Ab,getUserClient:()=>Ms,getWorkspaceClient:()=>Xa,getWritethroughClient:()=>ff,init:()=>mt,shutdown:()=>Ky});var Za=F(require("ioredis"));var Ja=require("dd-trace"),qy=require("lodash");var Gy;if(E.MOCK_REDIS)try{Gy=require("ioredis-mock")}catch{console.log("Mock redis unavailable")}async function yb(t=0){return await Ja.tracer.trace("Redis.init",async e=>{if(E.MOCK_REDIS)return e.addTags({mock:!0}),new Gy(Jr());let r;if(E.REDIS_CLUSTERED){e.addTags({clustered:!0});let{host:n,port:i}=$a();r=new Za.Cluster([{host:n,port:i}],Pd())}else r=new Za.default(Jr());return new Promise((n,i)=>{r.on("error",o=>{e.addTags({error:!0}),console.error(`failed to connect to redis (db: ${t})`,o),i(o)}),r.on("reconnecting",()=>{console.log(`Redis reconnecting... (db: ${t})`)}),r.on("ready",()=>{e.addTags({connected:!0}),console.log(`Redis ready to receive commands (db: ${t})`),n(r)})})})}s(yb,"init");function Tb(t,e){return new Promise((r,n)=>{let i=new Set;t.on("data",o=>o.forEach(a=>i.add(a))),t.on("error",o=>n(o)),t.on("end",async()=>{try{let o=Array.from(i).map(async a=>{let u=await e.get(a);return u&&(u=JSON.parse(u)),{key:Nd(a),value:u}});r(await Promise.all(o))}catch(o){n(o)}})})}s(Tb,"promisifyStream");function Sb(t){return t.isCluster}s(Sb,"isCluster");var cf=class t{static{s(this,"RedisWrapper")}constructor(e,r){this.client=e,this.db=r}static async init(e,r=0){return await Ja.tracer.trace("RedisWrapper.init",async n=>{let i=await yb(r);return r&&!E.isTest()&&(n.addTags({db:e}),i.select(r)),new t(i,e)})}trace(e,r){return Ja.tracer.trace(e,async n=>(n.addTags({db:this.db}),await r(n)))}prefixed(e){return e.includes(this.db)?e:`${this.db}${Qn}${e}`}async finish(){return await this.trace("RedisWrapper.finish",async()=>{await this.client.quit()})}async scan(e=""){return await this.trace("RedisWrapper.scan",async r=>{r.addTags({key:e}),e=`${this.db}${Qn}${e}`;let n;Sb(this.client)?n=this.client.nodes("master")[0].scanStream({match:e+"*",count:100}):n=this.client.scanStream({match:e+"*",count:100});let i=await Tb(n,this.client);return r.addTags({numKeysFound:i.length}),i})}async keys(e){return await this.trace("RedisWrapper.keys",async r=>(r.addTags({pattern:e}),this.client.keys(this.prefixed(e))))}async exists(e){return await this.trace("RedisWrapper.exists",async r=>(r.addTags({key:e}),await this.client.exists(this.prefixed(e))))}async get(e){return await this.trace("RedisWrapper.get",async r=>{r.addTags({key:e});let n=await this.client.get(this.prefixed(e));n!=null&&n.key&&(n.key=e);try{return JSON.parse(n)}catch{return n}})}async bulkGet(e){return await this.trace("RedisWrapper.bulkGet",async r=>{if(r.addTags({numKeys:e.length}),e.length===0)return{};let n=await this.client.mget(e.map(i=>this.prefixed(i)));return r.addTags({numKeysFound:n.length}),(0,qy.zip)(e,n).reduce((i,[o,a])=>{if(o===void 0||a===void 0)throw new Error(`Keys and response length mismatch: ${e.length} vs ${n.length}`);try{i[o]=a?JSON.parse(a):null}catch{i[o]=a}return i},{})})}async store(e,r,n=null){return await this.trace("RedisWrapper.store",async i=>{i.addTags({key:e,expirySeconds:n}),typeof r=="object"&&(r=JSON.stringify(r)),await this.client.set(this.prefixed(e),r),n&&await this.client.expire(this.prefixed(e),n)})}async bulkStore(e,r=null){return await this.trace("RedisWrapper.bulkStore",async n=>{n.addTags({numKeys:Object.keys(e).length,expirySeconds:r});let i=Object.entries(e).reduce((a,[u,c])=>(a[this.prefixed(u)]=typeof c=="object"?JSON.stringify(c):c,a),{}),o=this.client.pipeline();if(o.mset(i),r!==null)for(let a of Object.keys(i))o.expire(a,r);await o.exec()})}async getTTL(e){return await this.trace("RedisWrapper.getTTL",async r=>(r.addTags({key:e}),await this.client.ttl(this.prefixed(e))))}async setExpiry(e,r){return await this.trace("RedisWrapper.setExpiry",async n=>(n.addTags({key:e,expirySeconds:r}),await this.client.expire(this.prefixed(e),r)))}async delete(e){return await this.trace("RedisWrapper.delete",async r=>{r.addTags({key:e}),await this.client.del(this.prefixed(e))})}async bulkDelete(e){return await this.trace("RedisWrapper.bulkDelete",async r=>{r.addTags({numKeys:e.length}),await this.client.del(e.map(n=>this.prefixed(n)))})}async clear(){return await this.trace("RedisWrapper.clear",async e=>{let r=await this.scan();e.addTags({numKeys:r.length}),await Promise.all(r.map(n=>this.delete(n.key)))})}async increment(e){return await this.trace("RedisWrapper.increment",async r=>{r.addTags({key:e});let n=await this.client.incr(this.prefixed(e));if(isNaN(n))throw new Error(`Redis ${e} does not contain a number`);return n})}async deleteIfValue(e,r){return await this.trace("RedisWrapper.deleteIfValue",async n=>{n.addTags({key:e});let i=`
4
+ `+(a!==o?`result of cast: ${a}`:""))}return i}_cast(e,r){let n=e===void 0?e:this.transforms.reduce((i,o)=>o.call(this,i,e,this),e);return n===void 0&&(n=this.getDefault()),n}_validate(e,r={},n){let{sync:i,path:o,from:a=[],originalValue:u=e,strict:c=this.spec.strict,abortEarly:l=this.spec.abortEarly}=r,d=e;c||(d=this._cast(d,je({assert:!1},r)));let f={value:d,path:o,options:r,originalValue:u,schema:this,label:this.spec.label,sync:i,from:a},p=[];this._typeError&&p.push(this._typeError),this._whitelistError&&p.push(this._whitelistError),this._blacklistError&&p.push(this._blacklistError),(0,Ih.default)({args:f,value:d,path:o,sync:i,tests:p,endEarly:l},m=>{if(m)return void n(m,d);(0,Ih.default)({tests:this.tests,args:f,path:o,sync:i,value:d,endEarly:l},n)})}validate(e,r,n){let i=this.resolve(je({},r,{value:e}));return typeof n=="function"?i._validate(e,r,n):new Promise((o,a)=>i._validate(e,r,(u,c)=>{u?a(u):o(c)}))}validateSync(e,r){let n=this.resolve(je({},r,{value:e})),i;return n._validate(e,je({},r,{sync:!0}),(o,a)=>{if(o)throw o;i=a}),i}isValid(e,r){return this.validate(e,r).then(()=>!0,n=>{if(Dh.default.isError(n))return!1;throw n})}isValidSync(e,r){try{return this.validateSync(e,r),!0}catch(n){if(Dh.default.isError(n))return!1;throw n}}_getDefault(){let e=this.spec.default;return e==null?e:typeof e=="function"?e.call(this):(0,Oh.default)(e)}getDefault(e){return this.resolve(e||{})._getDefault()}default(e){return arguments.length===0?this._getDefault():this.clone({default:e})}strict(e=!0){var r=this.clone();return r.spec.strict=e,r}_isPresent(e){return e!=null}defined(e=Cn.mixed.defined){return this.test({message:e,name:"defined",exclusive:!0,test(r){return r!==void 0}})}required(e=Cn.mixed.required){return this.clone({presence:"required"}).withMutation(r=>r.test({message:e,name:"required",exclusive:!0,test(n){return this.schema._isPresent(n)}}))}notRequired(){var e=this.clone({presence:"optional"});return e.tests=e.tests.filter(r=>r.OPTIONS.name!=="required"),e}nullable(e=!0){var r=this.clone({nullable:e!==!1});return r}transform(e){var r=this.clone();return r.transforms.push(e),r}test(...e){let r;if(e.length===1?typeof e[0]=="function"?r={test:e[0]}:r=e[0]:e.length===2?r={name:e[0],test:e[1]}:r={name:e[0],message:e[1],test:e[2]},r.message===void 0&&(r.message=Cn.mixed.default),typeof r.test!="function")throw new TypeError("`test` is a required parameters");let n=this.clone(),i=(0,ra.default)(r),o=r.exclusive||r.name&&n.exclusiveTests[r.name]===!0;if(r.exclusive&&!r.name)throw new TypeError("Exclusive tests must provide a unique `name` identifying the test");return r.name&&(n.exclusiveTests[r.name]=!!r.exclusive),n.tests=n.tests.filter(a=>!(a.OPTIONS.name===r.name&&(o||a.OPTIONS.test===i.OPTIONS.test))),n.tests.push(i),n}when(e,r){!Array.isArray(e)&&typeof e!="string"&&(r=e,e=".");let n=this.clone(),i=(0,TI.default)(e).map(o=>new gI.default(o));return i.forEach(o=>{o.isSibling&&n.deps.push(o.key)}),n.conditions.push(new EI.default(i,r)),n}typeError(e){var r=this.clone();return r._typeError=(0,ra.default)({message:e,name:"typeError",test(n){return n!==void 0&&!this.schema.isType(n)?this.createError({params:{type:this.schema._type}}):!0}}),r}oneOf(e,r=Cn.mixed.oneOf){var n=this.clone();return e.forEach(i=>{n._whitelist.add(i),n._blacklist.delete(i)}),n._whitelistError=(0,ra.default)({message:r,name:"oneOf",test(i){if(i===void 0)return!0;let o=this.schema._whitelist;return o.has(i,this.resolve)?!0:this.createError({params:{values:o.toArray().join(", ")}})}}),n}notOneOf(e,r=Cn.mixed.notOneOf){var n=this.clone();return e.forEach(i=>{n._blacklist.add(i),n._whitelist.delete(i)}),n._blacklistError=(0,ra.default)({message:r,name:"notOneOf",test(i){let o=this.schema._blacklist;return o.has(i,this.resolve)?this.createError({params:{values:o.toArray().join(", ")}}):!0}}),n}strip(e=!0){let r=this.clone();return r.spec.strip=e,r}describe(){let e=this.clone(),{label:r,meta:n}=e.spec;return{meta:n,label:r,type:e.type,oneOf:e._whitelist.describe(),notOneOf:e._blacklist.describe(),tests:e.tests.map(o=>({name:o.OPTIONS.name,params:o.OPTIONS.params})).filter((o,a,u)=>u.findIndex(c=>c.name===o.name)===a)}}};na.default=ot;ot.prototype.__isYupSchema__=!0;for(let t of["validate","validateSync"])ot.prototype[`${t}At`]=function(e,r,n={}){let{parent:i,parentPath:o,schema:a}=(0,yI.getIn)(this,e,r,n.context);return a[t](i&&i[o],je({},n,{parent:i,path:e}))};for(let t of["equals","is"])ot.prototype[t]=ot.prototype.oneOf;for(let t of["not","nope"])ot.prototype[t]=ot.prototype.notOneOf;ot.prototype.optional=ot.prototype.notRequired});var bh=K($i=>{"use strict";Object.defineProperty($i,"__esModule",{value:!0});$i.create=Ch;$i.default=void 0;var SI=AI(Nt());function AI(t){return t&&t.__esModule?t:{default:t}}s(AI,"_interopRequireDefault");var rl=SI.default,_I=rl;$i.default=_I;function Ch(){return new rl}s(Ch,"create");Ch.prototype=rl.prototype});var bn=K(ia=>{"use strict";Object.defineProperty(ia,"__esModule",{value:!0});ia.default=void 0;var OI=s(t=>t==null,"_default");ia.default=OI});var Uh=K(Vi=>{"use strict";Object.defineProperty(Vi,"__esModule",{value:!0});Vi.create=Nh;Vi.default=void 0;var II=Ph(Nt()),xh=vt(),vh=Ph(bn());function Ph(t){return t&&t.__esModule?t:{default:t}}s(Ph,"_interopRequireDefault");function Nh(){return new Gi}s(Nh,"create");var Gi=class extends II.default{static{s(this,"BooleanSchema")}constructor(){super({type:"boolean"}),this.withMutation(()=>{this.transform(function(e){if(!this.isType(e)){if(/^(true|1)$/i.test(String(e)))return!0;if(/^(false|0)$/i.test(String(e)))return!1}return e})})}_typeCheck(e){return e instanceof Boolean&&(e=e.valueOf()),typeof e=="boolean"}isTrue(e=xh.boolean.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"true"},test(r){return(0,vh.default)(r)||r===!0}})}isFalse(e=xh.boolean.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"false"},test(r){return(0,vh.default)(r)||r===!1}})}};Vi.default=Gi;Nh.prototype=Gi.prototype});var Mh=K(Ki=>{"use strict";Object.defineProperty(Ki,"__esModule",{value:!0});Ki.create=kh;Ki.default=void 0;var _t=vt(),Ut=Lh(bn()),wI=Lh(Nt());function Lh(t){return t&&t.__esModule?t:{default:t}}s(Lh,"_interopRequireDefault");var DI=/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i,RI=/^((https?|ftp):)?\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i,CI=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i,bI=s(t=>(0,Ut.default)(t)||t===t.trim(),"isTrimmed"),xI={}.toString();function kh(){return new qi}s(kh,"create");var qi=class extends wI.default{static{s(this,"StringSchema")}constructor(){super({type:"string"}),this.withMutation(()=>{this.transform(function(e){if(this.isType(e)||Array.isArray(e))return e;let r=e!=null&&e.toString?e.toString():e;return r===xI?e:r})})}_typeCheck(e){return e instanceof String&&(e=e.valueOf()),typeof e=="string"}_isPresent(e){return super._isPresent(e)&&!!e.length}length(e,r=_t.string.length){return this.test({message:r,name:"length",exclusive:!0,params:{length:e},test(n){return(0,Ut.default)(n)||n.length===this.resolve(e)}})}min(e,r=_t.string.min){return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(n){return(0,Ut.default)(n)||n.length>=this.resolve(e)}})}max(e,r=_t.string.max){return this.test({name:"max",exclusive:!0,message:r,params:{max:e},test(n){return(0,Ut.default)(n)||n.length<=this.resolve(e)}})}matches(e,r){let n=!1,i,o;return r&&(typeof r=="object"?{excludeEmptyString:n=!1,message:i,name:o}=r:i=r),this.test({name:o||"matches",message:i||_t.string.matches,params:{regex:e},test:a=>(0,Ut.default)(a)||a===""&&n||a.search(e)!==-1})}email(e=_t.string.email){return this.matches(DI,{name:"email",message:e,excludeEmptyString:!0})}url(e=_t.string.url){return this.matches(RI,{name:"url",message:e,excludeEmptyString:!0})}uuid(e=_t.string.uuid){return this.matches(CI,{name:"uuid",message:e,excludeEmptyString:!1})}ensure(){return this.default("").transform(e=>e===null?"":e)}trim(e=_t.string.trim){return this.transform(r=>r!=null?r.trim():r).test({message:e,name:"trim",test:bI})}lowercase(e=_t.string.lowercase){return this.transform(r=>(0,Ut.default)(r)?r:r.toLowerCase()).test({message:e,name:"string_case",exclusive:!0,test:r=>(0,Ut.default)(r)||r===r.toLowerCase()})}uppercase(e=_t.string.uppercase){return this.transform(r=>(0,Ut.default)(r)?r:r.toUpperCase()).test({message:e,name:"string_case",exclusive:!0,test:r=>(0,Ut.default)(r)||r===r.toUpperCase()})}};Ki.default=qi;kh.prototype=qi.prototype});var Wh=K(ji=>{"use strict";Object.defineProperty(ji,"__esModule",{value:!0});ji.create=Bh;ji.default=void 0;var kr=vt(),Mr=Fh(bn()),vI=Fh(Nt());function Fh(t){return t&&t.__esModule?t:{default:t}}s(Fh,"_interopRequireDefault");var PI=s(t=>t!=+t,"isNaN");function Bh(){return new Qi}s(Bh,"create");var Qi=class extends vI.default{static{s(this,"NumberSchema")}constructor(){super({type:"number"}),this.withMutation(()=>{this.transform(function(e){let r=e;if(typeof r=="string"){if(r=r.replace(/\s/g,""),r==="")return NaN;r=+r}return this.isType(r)?r:parseFloat(r)})})}_typeCheck(e){return e instanceof Number&&(e=e.valueOf()),typeof e=="number"&&!PI(e)}min(e,r=kr.number.min){return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(n){return(0,Mr.default)(n)||n>=this.resolve(e)}})}max(e,r=kr.number.max){return this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(n){return(0,Mr.default)(n)||n<=this.resolve(e)}})}lessThan(e,r=kr.number.lessThan){return this.test({message:r,name:"max",exclusive:!0,params:{less:e},test(n){return(0,Mr.default)(n)||n<this.resolve(e)}})}moreThan(e,r=kr.number.moreThan){return this.test({message:r,name:"min",exclusive:!0,params:{more:e},test(n){return(0,Mr.default)(n)||n>this.resolve(e)}})}positive(e=kr.number.positive){return this.moreThan(0,e)}negative(e=kr.number.negative){return this.lessThan(0,e)}integer(e=kr.number.integer){return this.test({name:"integer",message:e,test:r=>(0,Mr.default)(r)||Number.isInteger(r)})}truncate(){return this.transform(e=>(0,Mr.default)(e)?e:e|0)}round(e){var r,n=["ceil","floor","round","trunc"];if(e=((r=e)==null?void 0:r.toLowerCase())||"round",e==="trunc")return this.truncate();if(n.indexOf(e.toLowerCase())===-1)throw new TypeError("Only valid options for round() are: "+n.join(", "));return this.transform(i=>(0,Mr.default)(i)?i:Math[e](i))}};ji.default=Qi;Bh.prototype=Qi.prototype});var $h=K(nl=>{"use strict";Object.defineProperty(nl,"__esModule",{value:!0});nl.default=UI;var NI=/^(\d{4}|[+\-]\d{6})(?:-?(\d{2})(?:-?(\d{2}))?)?(?:[ T]?(\d{2}):?(\d{2})(?::?(\d{2})(?:[,\.](\d{1,}))?)?(?:(Z)|([+\-])(\d{2})(?::?(\d{2}))?)?)?$/;function UI(t){var e=[1,4,5,6,7,10,11],r=0,n,i;if(i=NI.exec(t)){for(var o=0,a;a=e[o];++o)i[a]=+i[a]||0;i[2]=(+i[2]||1)-1,i[3]=+i[3]||1,i[7]=i[7]?String(i[7]).substr(0,3):0,(i[8]===void 0||i[8]==="")&&(i[9]===void 0||i[9]==="")?n=+new Date(i[1],i[2],i[3],i[4],i[5],i[6],i[7]):(i[8]!=="Z"&&i[9]!==void 0&&(r=i[10]*60+i[11],i[9]==="+"&&(r=0-r)),n=Date.UTC(i[1],i[2],i[3],i[4],i[5]+r,i[6],i[7]))}else n=Date.parse?Date.parse(t):NaN;return n}s(UI,"parseIsoDate")});var qh=K(Yi=>{"use strict";Object.defineProperty(Yi,"__esModule",{value:!0});Yi.create=sl;Yi.default=void 0;var LI=sa($h()),Gh=vt(),Vh=sa(bn()),kI=sa(Lr()),MI=sa(Nt());function sa(t){return t&&t.__esModule?t:{default:t}}s(sa,"_interopRequireDefault");var il=new Date(""),FI=s(t=>Object.prototype.toString.call(t)==="[object Date]","isDate");function sl(){return new xn}s(sl,"create");var xn=class extends MI.default{static{s(this,"DateSchema")}constructor(){super({type:"date"}),this.withMutation(()=>{this.transform(function(e){return this.isType(e)?e:(e=(0,LI.default)(e),isNaN(e)?il:new Date(e))})})}_typeCheck(e){return FI(e)&&!isNaN(e.getTime())}prepareParam(e,r){let n;if(kI.default.isRef(e))n=e;else{let i=this.cast(e);if(!this._typeCheck(i))throw new TypeError(`\`${r}\` must be a Date or a value that can be \`cast()\` to a Date`);n=i}return n}min(e,r=Gh.date.min){let n=this.prepareParam(e,"min");return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(i){return(0,Vh.default)(i)||i>=this.resolve(n)}})}max(e,r=Gh.date.max){var n=this.prepareParam(e,"max");return this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(i){return(0,Vh.default)(i)||i<=this.resolve(n)}})}};Yi.default=xn;xn.INVALID_DATE=il;sl.prototype=xn.prototype;sl.INVALID_DATE=il});var Qh=K((QM,ol)=>{"use strict";ol.exports=function(t){return Kh(BI(t),t)};ol.exports.array=Kh;function Kh(t,e){var r=t.length,n=new Array(r),i={},o=r,a=WI(e),u=$I(t);for(e.forEach(function(l){if(!u.has(l[0])||!u.has(l[1]))throw new Error("Unknown node. There is an unknown node in the supplied edges.")});o--;)i[o]||c(t[o],o,new Set);return n;function c(l,d,f){if(f.has(l)){var p;try{p=", node was:"+JSON.stringify(l)}catch{p=""}throw new Error("Cyclic dependency"+p)}if(!u.has(l))throw new Error("Found unknown node. Make sure to provided all involved nodes. Unknown node: "+JSON.stringify(l));if(!i[d]){i[d]=!0;var m=a.get(l)||new Set;if(m=Array.from(m),d=m.length){f.add(l);do{var h=m[--d];c(h,u.get(h),f)}while(d);f.delete(l)}n[--r]=l}}}s(Kh,"toposort");function BI(t){for(var e=new Set,r=0,n=t.length;r<n;r++){var i=t[r];e.add(i[0]),e.add(i[1])}return Array.from(e)}s(BI,"uniqueNodes");function WI(t){for(var e=new Map,r=0,n=t.length;r<n;r++){var i=t[r];e.has(i[0])||e.set(i[0],new Set),e.has(i[1])||e.set(i[1],new Set),e.get(i[0]).add(i[1])}return e}s(WI,"makeOutgoingEdges");function $I(t){for(var e=new Map,r=0,n=t.length;r<n;r++)e.set(t[r],r);return e}s($I,"makeNodesHash")});var jh=K(al=>{"use strict";Object.defineProperty(al,"__esModule",{value:!0});al.default=jI;var GI=oa(require("lodash/has")),VI=oa(Qh()),qI=Mi(),KI=oa(Lr()),QI=oa(Rn());function oa(t){return t&&t.__esModule?t:{default:t}}s(oa,"_interopRequireDefault");function jI(t,e=[]){let r=[],n=[];function i(o,a){var u=(0,qI.split)(o)[0];~n.indexOf(u)||n.push(u),~e.indexOf(`${a}-${u}`)||r.push([a,u])}s(i,"addNode");for(let o in t)if((0,GI.default)(t,o)){let a=t[o];~n.indexOf(o)||n.push(o),KI.default.isRef(a)&&a.isSibling?i(a.path,o):(0,QI.default)(a)&&"deps"in a&&a.deps.forEach(u=>i(u,o))}return VI.default.array(n,r).reverse()}s(jI,"sortFields")});var Hh=K(ul=>{"use strict";Object.defineProperty(ul,"__esModule",{value:!0});ul.default=YI;function Yh(t,e){let r=1/0;return t.some((n,i)=>{var o;if(((o=e.path)==null?void 0:o.indexOf(n))!==-1)return r=i,!0}),r}s(Yh,"findIndex");function YI(t){return(e,r)=>Yh(t,e)-Yh(t,r)}s(YI,"sortByKeyOrder")});var rE=K(zi=>{"use strict";Object.defineProperty(zi,"__esModule",{value:!0});zi.create=tE;zi.default=void 0;var zh=Ot(require("lodash/has")),Jh=Ot(require("lodash/snakeCase")),HI=Ot(require("lodash/camelCase")),zI=Ot(require("lodash/mapKeys")),JI=Ot(require("lodash/mapValues")),ZI=Mi(),Zh=vt(),XI=Ot(jh()),eE=Ot(Hh()),ew=Ot(Jo()),tw=Ot(Nr()),cl=Ot(Nt());function Ot(t){return t&&t.__esModule?t:{default:t}}s(Ot,"_interopRequireDefault");function vn(){return vn=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},vn.apply(this,arguments)}s(vn,"_extends");var Xh=s(t=>Object.prototype.toString.call(t)==="[object Object]","isObject");function rw(t,e){let r=Object.keys(t.fields);return Object.keys(e).filter(n=>r.indexOf(n)===-1)}s(rw,"unknown");var nw=(0,eE.default)([]),Hi=class extends cl.default{static{s(this,"ObjectSchema")}constructor(e){super({type:"object"}),this.fields=Object.create(null),this._sortErrors=nw,this._nodes=[],this._excludedEdges=[],this.withMutation(()=>{this.transform(s(function(n){if(typeof n=="string")try{n=JSON.parse(n)}catch{n=null}return this.isType(n)?n:null},"coerce")),e&&this.shape(e)})}_typeCheck(e){return Xh(e)||typeof e=="function"}_cast(e,r={}){var n;let i=super._cast(e,r);if(i===void 0)return this.getDefault();if(!this._typeCheck(i))return i;let o=this.fields,a=(n=r.stripUnknown)!=null?n:this.spec.noUnknown,u=this._nodes.concat(Object.keys(i).filter(f=>this._nodes.indexOf(f)===-1)),c={},l=vn({},r,{parent:c,__validating:r.__validating||!1}),d=!1;for(let f of u){let p=o[f],m=(0,zh.default)(i,f);if(p){let h,g=i[f];l.path=(r.path?`${r.path}.`:"")+f,p=p.resolve({value:g,context:r.context,parent:c});let y="spec"in p?p.spec:void 0,S=y?.strict;if(y?.strip){d=d||f in i;continue}h=!r.__validating||!S?p.cast(i[f],l):i[f],h!==void 0&&(c[f]=h)}else m&&!a&&(c[f]=i[f]);c[f]!==i[f]&&(d=!0)}return d?c:i}_validate(e,r={},n){let i=[],{sync:o,from:a=[],originalValue:u=e,abortEarly:c=this.spec.abortEarly,recursive:l=this.spec.recursive}=r;a=[{schema:this,value:u},...a],r.__validating=!0,r.originalValue=u,r.from=a,super._validate(e,r,(d,f)=>{if(d){if(!tw.default.isError(d)||c)return void n(d,f);i.push(d)}if(!l||!Xh(f)){n(i[0]||null,f);return}u=u||f;let p=this._nodes.map(m=>(h,g)=>{let y=m.indexOf(".")===-1?(r.path?`${r.path}.`:"")+m:`${r.path||""}["${m}"]`,S=this.fields[m];if(S&&"validate"in S){S.validate(f[m],vn({},r,{path:y,from:a,strict:!0,parent:f,originalValue:u[m]}),g);return}g(null)});(0,ew.default)({sync:o,tests:p,value:f,errors:i,endEarly:c,sort:this._sortErrors,path:r.path},n)})}clone(e){let r=super.clone(e);return r.fields=vn({},this.fields),r._nodes=this._nodes,r._excludedEdges=this._excludedEdges,r._sortErrors=this._sortErrors,r}concat(e){let r=super.concat(e),n=r.fields;for(let[i,o]of Object.entries(this.fields)){let a=n[i];a===void 0?n[i]=o:a instanceof cl.default&&o instanceof cl.default&&(n[i]=o.concat(a))}return r.withMutation(()=>r.shape(n))}getDefaultFromShape(){let e={};return this._nodes.forEach(r=>{let n=this.fields[r];e[r]="default"in n?n.getDefault():void 0}),e}_getDefault(){if("default"in this.spec)return super._getDefault();if(this._nodes.length)return this.getDefaultFromShape()}shape(e,r=[]){let n=this.clone(),i=Object.assign(n.fields,e);if(n.fields=i,n._sortErrors=(0,eE.default)(Object.keys(i)),r.length){Array.isArray(r[0])||(r=[r]);let o=r.map(([a,u])=>`${a}-${u}`);n._excludedEdges=n._excludedEdges.concat(o)}return n._nodes=(0,XI.default)(i,n._excludedEdges),n}pick(e){let r={};for(let n of e)this.fields[n]&&(r[n]=this.fields[n]);return this.clone().withMutation(n=>(n.fields={},n.shape(r)))}omit(e){let r=this.clone(),n=r.fields;r.fields={};for(let i of e)delete n[i];return r.withMutation(()=>r.shape(n))}from(e,r,n){let i=(0,ZI.getter)(e,!0);return this.transform(o=>{if(o==null)return o;let a=o;return(0,zh.default)(o,e)&&(a=vn({},o),n||delete a[e],a[r]=i(o)),a})}noUnknown(e=!0,r=Zh.object.noUnknown){typeof e=="string"&&(r=e,e=!0);let n=this.test({name:"noUnknown",exclusive:!0,message:r,test(i){if(i==null)return!0;let o=rw(this.schema,i);return!e||o.length===0||this.createError({params:{unknown:o.join(", ")}})}});return n.spec.noUnknown=e,n}unknown(e=!0,r=Zh.object.noUnknown){return this.noUnknown(!e,r)}transformKeys(e){return this.transform(r=>r&&(0,zI.default)(r,(n,i)=>e(i)))}camelCase(){return this.transformKeys(HI.default)}snakeCase(){return this.transformKeys(Jh.default)}constantCase(){return this.transformKeys(e=>(0,Jh.default)(e).toUpperCase())}describe(){let e=super.describe();return e.fields=(0,JI.default)(this.fields,r=>r.describe()),e}};zi.default=Hi;function tE(t){return new Hi(t)}s(tE,"create");tE.prototype=Hi.prototype});var iE=K(Zi=>{"use strict";Object.defineProperty(Zi,"__esModule",{value:!0});Zi.create=nE;Zi.default=void 0;var ll=Pn(bn()),iw=Pn(Rn()),sw=Pn(ki()),dl=vt(),ow=Pn(Jo()),aw=Pn(Nr()),uw=Pn(Nt());function Pn(t){return t&&t.__esModule?t:{default:t}}s(Pn,"_interopRequireDefault");function aa(){return aa=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},aa.apply(this,arguments)}s(aa,"_extends");function nE(t){return new Ji(t)}s(nE,"create");var Ji=class extends uw.default{static{s(this,"ArraySchema")}constructor(e){super({type:"array"}),this.innerType=e,this.withMutation(()=>{this.transform(function(r){if(typeof r=="string")try{r=JSON.parse(r)}catch{r=null}return this.isType(r)?r:null})})}_typeCheck(e){return Array.isArray(e)}get _subType(){return this.innerType}_cast(e,r){let n=super._cast(e,r);if(!this._typeCheck(n)||!this.innerType)return n;let i=!1,o=n.map((a,u)=>{let c=this.innerType.cast(a,aa({},r,{path:`${r.path||""}[${u}]`}));return c!==a&&(i=!0),c});return i?o:n}_validate(e,r={},n){var i,o;let a=[],u=r.sync,c=r.path,l=this.innerType,d=(i=r.abortEarly)!=null?i:this.spec.abortEarly,f=(o=r.recursive)!=null?o:this.spec.recursive,p=r.originalValue!=null?r.originalValue:e;super._validate(e,r,(m,h)=>{if(m){if(!aw.default.isError(m)||d)return void n(m,h);a.push(m)}if(!f||!l||!this._typeCheck(h)){n(a[0]||null,h);return}p=p||h;let g=new Array(h.length);for(let y=0;y<h.length;y++){let S=h[y],O=`${r.path||""}[${y}]`,_=aa({},r,{path:O,strict:!0,parent:h,index:y,originalValue:p[y]});g[y]=(w,T)=>l.validate(S,_,T)}(0,ow.default)({sync:u,path:c,value:h,errors:a,endEarly:d,tests:g},n)})}clone(e){let r=super.clone(e);return r.innerType=this.innerType,r}concat(e){let r=super.concat(e);return r.innerType=this.innerType,e.innerType&&(r.innerType=r.innerType?r.innerType.concat(e.innerType):e.innerType),r}of(e){let r=this.clone();if(!(0,iw.default)(e))throw new TypeError("`array.of()` sub-schema must be a valid yup schema not: "+(0,sw.default)(e));return r.innerType=e,r}length(e,r=dl.array.length){return this.test({message:r,name:"length",exclusive:!0,params:{length:e},test(n){return(0,ll.default)(n)||n.length===this.resolve(e)}})}min(e,r){return r=r||dl.array.min,this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(n){return(0,ll.default)(n)||n.length>=this.resolve(e)}})}max(e,r){return r=r||dl.array.max,this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(n){return(0,ll.default)(n)||n.length<=this.resolve(e)}})}ensure(){return this.default(()=>[]).transform((e,r)=>this._typeCheck(e)?e:r==null?[]:[].concat(r))}compact(e){let r=e?(n,i,o)=>!e(n,i,o):n=>!!n;return this.transform(n=>n!=null?n.filter(r):n)}describe(){let e=super.describe();return this.innerType&&(e.innerType=this.innerType.describe()),e}nullable(e=!0){return super.nullable(e)}defined(){return super.defined()}required(e){return super.required(e)}};Zi.default=Ji;nE.prototype=Ji.prototype});var sE=K(Xi=>{"use strict";Object.defineProperty(Xi,"__esModule",{value:!0});Xi.create=dw;Xi.default=void 0;var cw=lw(Rn());function lw(t){return t&&t.__esModule?t:{default:t}}s(lw,"_interopRequireDefault");function dw(t){return new ua(t)}s(dw,"create");var ua=class{static{s(this,"Lazy")}constructor(e){this.type="lazy",this.__isYupSchema__=!0,this._resolve=(r,n={})=>{let i=this.builder(r,n);if(!(0,cw.default)(i))throw new TypeError("lazy() functions must return a valid schema");return i.resolve(n)},this.builder=e}resolve(e){return this._resolve(e.value,e)}cast(e,r){return this._resolve(e,r).cast(e,r)}validate(e,r,n){return this._resolve(e,r).validate(e,r,n)}validateSync(e,r){return this._resolve(e,r).validateSync(e,r)}validateAt(e,r,n){return this._resolve(r,n).validateAt(e,r,n)}validateSyncAt(e,r,n){return this._resolve(r,n).validateSyncAt(e,r,n)}describe(){return null}isValid(e,r){return this._resolve(e,r).isValid(e,r)}isValidSync(e,r){return this._resolve(e,r).isValidSync(e,r)}},fw=ua;Xi.default=fw});var oE=K(fl=>{"use strict";Object.defineProperty(fl,"__esModule",{value:!0});fl.default=hw;var pw=mw(vt());function mw(t){return t&&t.__esModule?t:{default:t}}s(mw,"_interopRequireDefault");function hw(t){Object.keys(t).forEach(e=>{Object.keys(t[e]).forEach(r=>{pw.default[e][r]=t[e][r]})})}s(hw,"setLocale")});var ml=K(te=>{"use strict";Object.defineProperty(te,"__esModule",{value:!0});te.addMethod=_w;Object.defineProperty(te,"MixedSchema",{enumerable:!0,get:function(){return aE.default}});Object.defineProperty(te,"mixed",{enumerable:!0,get:function(){return aE.create}});Object.defineProperty(te,"BooleanSchema",{enumerable:!0,get:function(){return pl.default}});Object.defineProperty(te,"bool",{enumerable:!0,get:function(){return pl.create}});Object.defineProperty(te,"boolean",{enumerable:!0,get:function(){return pl.create}});Object.defineProperty(te,"StringSchema",{enumerable:!0,get:function(){return uE.default}});Object.defineProperty(te,"string",{enumerable:!0,get:function(){return uE.create}});Object.defineProperty(te,"NumberSchema",{enumerable:!0,get:function(){return cE.default}});Object.defineProperty(te,"number",{enumerable:!0,get:function(){return cE.create}});Object.defineProperty(te,"DateSchema",{enumerable:!0,get:function(){return lE.default}});Object.defineProperty(te,"date",{enumerable:!0,get:function(){return lE.create}});Object.defineProperty(te,"ObjectSchema",{enumerable:!0,get:function(){return dE.default}});Object.defineProperty(te,"object",{enumerable:!0,get:function(){return dE.create}});Object.defineProperty(te,"ArraySchema",{enumerable:!0,get:function(){return fE.default}});Object.defineProperty(te,"array",{enumerable:!0,get:function(){return fE.create}});Object.defineProperty(te,"ref",{enumerable:!0,get:function(){return Ew.create}});Object.defineProperty(te,"lazy",{enumerable:!0,get:function(){return gw.create}});Object.defineProperty(te,"ValidationError",{enumerable:!0,get:function(){return yw.default}});Object.defineProperty(te,"reach",{enumerable:!0,get:function(){return Tw.default}});Object.defineProperty(te,"isSchema",{enumerable:!0,get:function(){return pE.default}});Object.defineProperty(te,"setLocale",{enumerable:!0,get:function(){return Sw.default}});Object.defineProperty(te,"BaseSchema",{enumerable:!0,get:function(){return Aw.default}});var aE=Fr(bh()),pl=Fr(Uh()),uE=Fr(Mh()),cE=Fr(Wh()),lE=Fr(qh()),dE=Fr(rE()),fE=Fr(iE()),Ew=Lr(),gw=sE(),yw=es(Nr()),Tw=es(el()),pE=es(Rn()),Sw=es(oE()),Aw=es(Nt());function es(t){return t&&t.__esModule?t:{default:t}}s(es,"_interopRequireDefault");function mE(){if(typeof WeakMap!="function")return null;var t=new WeakMap;return mE=s(function(){return t},"_getRequireWildcardCache"),t}s(mE,"_getRequireWildcardCache");function Fr(t){if(t&&t.__esModule)return t;if(t===null||typeof t!="object"&&typeof t!="function")return{default:t};var e=mE();if(e&&e.has(t))return e.get(t);var r={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in t)if(Object.prototype.hasOwnProperty.call(t,i)){var o=n?Object.getOwnPropertyDescriptor(t,i):null;o&&(o.get||o.set)?Object.defineProperty(r,i,o):r[i]=t[i]}return r.default=t,e&&e.set(t,r),r}s(Fr,"_interopRequireWildcard");function _w(t,e,r){if(!t||!(0,pE.default)(t.prototype))throw new TypeError("You must provide a yup schema constructor function");if(typeof e!="string")throw new TypeError("A Method name must be provided");if(typeof r!="function")throw new TypeError("Method function must be provided");t.prototype[e]=r}s(_w,"addMethod")});var hE=K(El=>{"use strict";Object.defineProperty(El,"__esModule",{value:!0});var hl=gl();El.default=()=>{(0,hl.registerOptionPreset)("npm-node-cron",{presetId:"npm-node-cron",useSeconds:!0,useYears:!1,useAliases:!0,useBlankDay:!1,allowOnlyOneBlankDayField:!1,mustHaveBlankDayField:!1,useLastDayOfMonth:!1,useLastDayOfWeek:!1,useNearestWeekday:!1,useNthWeekdayOfMonth:!1,seconds:{minValue:0,maxValue:59},minutes:{minValue:0,maxValue:59},hours:{minValue:0,maxValue:23},daysOfMonth:{minValue:1,maxValue:31},months:{minValue:0,maxValue:11},daysOfWeek:{minValue:0,maxValue:6},years:{minValue:1970,maxValue:2099}}),(0,hl.registerOptionPreset)("aws-cloud-watch",{presetId:"aws-cloud-watch",useSeconds:!1,useYears:!0,useAliases:!0,useBlankDay:!0,allowOnlyOneBlankDayField:!0,mustHaveBlankDayField:!0,useLastDayOfMonth:!0,useLastDayOfWeek:!0,useNearestWeekday:!0,useNthWeekdayOfMonth:!0,seconds:{minValue:0,maxValue:59},minutes:{minValue:0,maxValue:59},hours:{minValue:0,maxValue:23},daysOfMonth:{minValue:1,maxValue:31},months:{minValue:1,maxValue:12},daysOfWeek:{minValue:1,maxValue:7},years:{minValue:1970,maxValue:2199}}),(0,hl.registerOptionPreset)("npm-cron-schedule",{presetId:"npm-cron-schedule",useSeconds:!0,useYears:!1,useAliases:!0,useBlankDay:!1,allowOnlyOneBlankDayField:!1,mustHaveBlankDayField:!1,useLastDayOfMonth:!1,useLastDayOfWeek:!1,useNearestWeekday:!1,useNthWeekdayOfMonth:!1,seconds:{minValue:0,maxValue:59},minutes:{minValue:0,maxValue:59},hours:{minValue:0,maxValue:23},daysOfMonth:{minValue:1,maxValue:31},months:{minValue:1,maxValue:12},daysOfWeek:{minValue:0,maxValue:7},years:{minValue:1970,maxValue:2099}})}});var gl=K(Ae=>{"use strict";var Ow=Ae&&Ae.__createBinding||(Object.create?function(t,e,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(e,r);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,i)}:function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]}),Iw=Ae&&Ae.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),ww=Ae&&Ae.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&Ow(e,t,r);return Iw(e,t),e},Dw=Ae&&Ae.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Ae,"__esModule",{value:!0});Ae.validateOptions=Ae.registerOptionPreset=Ae.getOptionPresets=Ae.getOptionPreset=void 0;var R=ww(ml());ml();var ts=it(),Rw=Dw(hE());st();var Br={default:{presetId:"default",useSeconds:!1,useYears:!1,useAliases:!1,useBlankDay:!1,allowOnlyOneBlankDayField:!1,mustHaveBlankDayField:!1,useLastDayOfMonth:!1,useLastDayOfWeek:!1,useNearestWeekday:!1,useNthWeekdayOfMonth:!1,seconds:{minValue:0,maxValue:59},minutes:{minValue:0,maxValue:59},hours:{minValue:0,maxValue:23},daysOfMonth:{minValue:0,maxValue:31},months:{minValue:0,maxValue:12},daysOfWeek:{minValue:0,maxValue:7},years:{minValue:1970,maxValue:2099}}},EE=R.object({presetId:R.string().required(),useSeconds:R.boolean().required(),useYears:R.boolean().required(),useAliases:R.boolean(),useBlankDay:R.boolean().required(),allowOnlyOneBlankDayField:R.boolean().required(),mustHaveBlankDayField:R.boolean(),useLastDayOfMonth:R.boolean(),useLastDayOfWeek:R.boolean(),useNearestWeekday:R.boolean(),useNthWeekdayOfMonth:R.boolean(),seconds:R.object({minValue:R.number().min(0).required(),maxValue:R.number().min(0).required(),lowerLimit:R.number().min(0),upperLimit:R.number().min(0)}).required(),minutes:R.object({minValue:R.number().min(0).required(),maxValue:R.number().min(0).required(),lowerLimit:R.number().min(0),upperLimit:R.number().min(0)}).required(),hours:R.object({minValue:R.number().min(0).required(),maxValue:R.number().min(0).required(),lowerLimit:R.number().min(0),upperLimit:R.number().min(0)}).required(),daysOfMonth:R.object({minValue:R.number().min(0).required(),maxValue:R.number().min(0).required(),lowerLimit:R.number().min(0),upperLimit:R.number().min(0)}).required(),months:R.object({minValue:R.number().min(0).required(),maxValue:R.number().min(0).required(),lowerLimit:R.number().min(0),upperLimit:R.number().min(0)}).required(),daysOfWeek:R.object({minValue:R.number().min(0).required(),maxValue:R.number().min(0).required(),lowerLimit:R.number().min(0),upperLimit:R.number().min(0)}).required(),years:R.object({minValue:R.number().min(0).required(),maxValue:R.number().min(0).required(),lowerLimit:R.number().min(0),upperLimit:R.number().min(0)}).required()}).required(),Cw=s(t=>Br[t]?(0,ts.valid)(Br[t]):(0,ts.err)(`Option preset '${t}' not found.`),"getOptionPreset");Ae.getOptionPreset=Cw;var bw=s(()=>Br,"getOptionPresets");Ae.getOptionPresets=bw;var xw=s((t,e)=>{Br[t]=EE.validateSync(e,{strict:!1,abortEarly:!1,stripUnknown:!0,recursive:!0})},"registerOptionPreset");Ae.registerOptionPreset=xw;var vw=s(t=>{var e,r,n,i,o,a,u,c,l,d,f,p,m,h,g,y,S,O,_,w;try{(0,Rw.default)();let T;if(t.preset)if(typeof t.preset=="string"){if(!Br[t.preset])return(0,ts.err)([`Option preset ${t.preset} does not exist.`]);T=Br[t.preset]}else T=t.preset;else T=Br.default;let I=Object.assign(Object.assign({presetId:T.presetId,preset:T},{useSeconds:T.useSeconds,useYears:T.useYears,useAliases:(e=T.useAliases)!==null&&e!==void 0?e:!1,useBlankDay:T.useBlankDay,allowOnlyOneBlankDayField:T.allowOnlyOneBlankDayField,mustHaveBlankDayField:(r=T.mustHaveBlankDayField)!==null&&r!==void 0?r:!1,useLastDayOfMonth:(n=T.useLastDayOfMonth)!==null&&n!==void 0?n:!1,useLastDayOfWeek:(i=T.useLastDayOfWeek)!==null&&i!==void 0?i:!1,useNearestWeekday:(o=T.useNearestWeekday)!==null&&o!==void 0?o:!1,useNthWeekdayOfMonth:(a=T.useNthWeekdayOfMonth)!==null&&a!==void 0?a:!1,seconds:{lowerLimit:(u=T.seconds.lowerLimit)!==null&&u!==void 0?u:T.seconds.minValue,upperLimit:(c=T.seconds.upperLimit)!==null&&c!==void 0?c:T.seconds.maxValue},minutes:{lowerLimit:(l=T.minutes.lowerLimit)!==null&&l!==void 0?l:T.minutes.minValue,upperLimit:(d=T.minutes.upperLimit)!==null&&d!==void 0?d:T.minutes.maxValue},hours:{lowerLimit:(f=T.hours.lowerLimit)!==null&&f!==void 0?f:T.hours.minValue,upperLimit:(p=T.hours.upperLimit)!==null&&p!==void 0?p:T.hours.maxValue},daysOfMonth:{lowerLimit:(m=T.daysOfMonth.lowerLimit)!==null&&m!==void 0?m:T.daysOfMonth.minValue,upperLimit:(h=T.daysOfMonth.upperLimit)!==null&&h!==void 0?h:T.daysOfMonth.maxValue},months:{lowerLimit:(g=T.months.lowerLimit)!==null&&g!==void 0?g:T.months.minValue,upperLimit:(y=T.months.upperLimit)!==null&&y!==void 0?y:T.months.maxValue},daysOfWeek:{lowerLimit:(S=T.daysOfWeek.lowerLimit)!==null&&S!==void 0?S:T.daysOfWeek.minValue,upperLimit:(O=T.daysOfWeek.upperLimit)!==null&&O!==void 0?O:T.daysOfWeek.maxValue},years:{lowerLimit:(_=T.years.lowerLimit)!==null&&_!==void 0?_:T.years.minValue,upperLimit:(w=T.years.upperLimit)!==null&&w!==void 0?w:T.years.maxValue}}),t.override),P=R.object({presetId:R.string().required(),preset:EE.required(),useSeconds:R.boolean().required(),useYears:R.boolean().required(),useAliases:R.boolean(),useBlankDay:R.boolean().required(),allowOnlyOneBlankDayField:R.boolean().required(),mustHaveBlankDayField:R.boolean(),useLastDayOfMonth:R.boolean(),useLastDayOfWeek:R.boolean(),useNearestWeekday:R.boolean(),useNthWeekdayOfMonth:R.boolean(),seconds:R.object({lowerLimit:R.number().min(T.seconds.minValue).max(T.seconds.maxValue),upperLimit:R.number().min(T.seconds.minValue).max(T.seconds.maxValue)}).required(),minutes:R.object({lowerLimit:R.number().min(T.minutes.minValue).max(T.minutes.maxValue),upperLimit:R.number().min(T.minutes.minValue).max(T.minutes.maxValue)}).required(),hours:R.object({lowerLimit:R.number().min(T.hours.minValue).max(T.hours.maxValue),upperLimit:R.number().min(T.hours.minValue).max(T.hours.maxValue)}).required(),daysOfMonth:R.object({lowerLimit:R.number().min(T.daysOfMonth.minValue).max(T.daysOfMonth.maxValue),upperLimit:R.number().min(T.daysOfMonth.minValue).max(T.daysOfMonth.maxValue)}).required(),months:R.object({lowerLimit:R.number().min(T.months.minValue).max(T.months.maxValue),upperLimit:R.number().min(T.months.minValue).max(T.months.maxValue)}).required(),daysOfWeek:R.object({lowerLimit:R.number().min(T.daysOfWeek.minValue).max(T.daysOfWeek.maxValue),upperLimit:R.number().min(T.daysOfWeek.minValue).max(T.daysOfWeek.maxValue)}).required(),years:R.object({lowerLimit:R.number().min(T.years.minValue).max(T.years.maxValue),upperLimit:R.number().min(T.years.minValue).max(T.years.maxValue)}).required()}).required().validateSync(I,{strict:!1,abortEarly:!1,stripUnknown:!0,recursive:!0});return(0,ts.valid)(P)}catch(T){return(0,ts.err)(T.errors)}},"validateOptions");Ae.validateOptions=vw});var At=K((rs,Tl)=>{"use strict";var $r=rs&&rs.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(rs,"__esModule",{value:!0});var Wr=it(),Pw=$r(Km()),Nw=$r(Qm()),Uw=$r(jm()),Lw=$r(Ym()),kw=$r(Hm()),Mw=$r(zm()),Fw=$r(Jm()),Bw=gl();st();var Ww=s((t,e)=>{let r=t.trim().split(" ");if(e.useSeconds&&e.useYears&&r.length!==7)return(0,Wr.err)(`Expected 7 values, but got ${r.length}.`);if((e.useSeconds&&!e.useYears||e.useYears&&!e.useSeconds)&&r.length!==6)return(0,Wr.err)(`Expected 6 values, but got ${r.length}.`);if(!e.useSeconds&&!e.useYears&&r.length!==5)return(0,Wr.err)(`Expected 5 values, but got ${r.length}.`);let n={seconds:e.useSeconds?r[0]:void 0,minutes:r[e.useSeconds?1:0],hours:r[e.useSeconds?2:1],daysOfMonth:r[e.useSeconds?3:2],months:r[e.useSeconds?4:3],daysOfWeek:r[e.useSeconds?5:4],years:e.useYears?r[e.useSeconds?6:5]:void 0};return(0,Wr.valid)(n)},"splitCronString"),yl=s((t,e={})=>{let r=(0,Bw.validateOptions)(e);if(r.isError())return r;let n=r.getValue(),i=Ww(t,n);if(i.isError())return(0,Wr.err)([`${i.getError()} (Input cron: '${t}')`]);let o=i.getValue(),a=[];if(n.useSeconds&&a.push((0,Pw.default)(o,n)),a.push((0,Nw.default)(o,n)),a.push((0,Uw.default)(o,n)),a.push((0,Lw.default)(o,n)),a.push((0,kw.default)(o,n)),a.push((0,Mw.default)(o,n)),n.useYears&&a.push((0,Fw.default)(o,n)),a.every(c=>c.isValid()))return(0,Wr.valid)(o);let u=[];return a.forEach(c=>{c.isError()&&c.getError().forEach(l=>{u.push(l)})}),u.forEach((c,l)=>{u[l]=`${c} (Input cron: '${t}')`}),(0,Wr.err)(u)},"cron");rs.default=yl;Tl.exports=yl;Tl.exports.default=yl});var Qg=K(qe=>{"use strict";Object.defineProperty(qe,"__esModule",{value:!0});var kt=class extends Error{static{s(this,"LuxonError")}},bl=class extends kt{static{s(this,"InvalidDateTimeError")}constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}},xl=class extends kt{static{s(this,"InvalidIntervalError")}constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}},vl=class extends kt{static{s(this,"InvalidDurationError")}constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}},sr=class extends kt{static{s(this,"ConflictingSpecificationError")}},Ea=class extends kt{static{s(this,"InvalidUnitError")}constructor(e){super(`Invalid unit ${e}`)}},_e=class extends kt{static{s(this,"InvalidArgumentError")}},It=class extends kt{static{s(this,"ZoneIsAbstractError")}constructor(){super("Zone is an abstract class")}},x="numeric",ct="short",Ge="long",ga={year:x,month:x,day:x},jE={year:x,month:ct,day:x},$w={year:x,month:ct,day:x,weekday:ct},YE={year:x,month:Ge,day:x},HE={year:x,month:Ge,day:x,weekday:Ge},zE={hour:x,minute:x},JE={hour:x,minute:x,second:x},ZE={hour:x,minute:x,second:x,timeZoneName:ct},XE={hour:x,minute:x,second:x,timeZoneName:Ge},eg={hour:x,minute:x,hourCycle:"h23"},tg={hour:x,minute:x,second:x,hourCycle:"h23"},rg={hour:x,minute:x,second:x,hourCycle:"h23",timeZoneName:ct},ng={hour:x,minute:x,second:x,hourCycle:"h23",timeZoneName:Ge},ig={year:x,month:x,day:x,hour:x,minute:x},sg={year:x,month:x,day:x,hour:x,minute:x,second:x},og={year:x,month:ct,day:x,hour:x,minute:x},ag={year:x,month:ct,day:x,hour:x,minute:x,second:x},Gw={year:x,month:ct,day:x,weekday:ct,hour:x,minute:x},ug={year:x,month:Ge,day:x,hour:x,minute:x,timeZoneName:ct},cg={year:x,month:Ge,day:x,hour:x,minute:x,second:x,timeZoneName:ct},lg={year:x,month:Ge,day:x,weekday:Ge,hour:x,minute:x,timeZoneName:Ge},dg={year:x,month:Ge,day:x,weekday:Ge,hour:x,minute:x,second:x,timeZoneName:Ge},ar=class{static{s(this,"Zone")}get type(){throw new It}get name(){throw new It}get ianaName(){return this.name}get isUniversal(){throw new It}offsetName(e,r){throw new It}formatOffset(e,r){throw new It}offset(e){throw new It}equals(e){throw new It}get isValid(){throw new It}},Sl=null,us=class t extends ar{static{s(this,"SystemZone")}static get instance(){return Sl===null&&(Sl=new t),Sl}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:r,locale:n}){return _g(e,r,n)}formatOffset(e,r){return as(this.offset(e),r)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}},Pl=new Map;function Vw(t){let e=Pl.get(t);return e===void 0&&(e=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:t,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"}),Pl.set(t,e)),e}s(Vw,"makeDTF");var qw={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function Kw(t,e){let r=t.format(e).replace(/\u200E/g,""),n=/(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(r),[,i,o,a,u,c,l,d]=n;return[a,i,o,u,c,l,d]}s(Kw,"hackyOffset");function Qw(t,e){let r=t.formatToParts(e),n=[];for(let i=0;i<r.length;i++){let{type:o,value:a}=r[i],u=qw[o];o==="era"?n[u]=a:Q(u)||(n[u]=parseInt(a,10))}return n}s(Qw,"partsOffset");var Al=new Map,Mt=class t extends ar{static{s(this,"IANAZone")}static create(e){let r=Al.get(e);return r===void 0&&Al.set(e,r=new t(e)),r}static resetCache(){Al.clear(),Pl.clear()}static isValidSpecifier(e){return this.isValidZone(e)}static isValidZone(e){if(!e)return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),!0}catch{return!1}}constructor(e){super(),this.zoneName=e,this.valid=t.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:r,locale:n}){return _g(e,r,n,this.name)}formatOffset(e,r){return as(this.offset(e),r)}offset(e){if(!this.valid)return NaN;let r=new Date(e);if(isNaN(r))return NaN;let n=Vw(this.name),[i,o,a,u,c,l,d]=n.formatToParts?Qw(n,r):Kw(n,r);u==="BC"&&(i=-Math.abs(i)+1);let p=Ia({year:i,month:o,day:a,hour:c===24?0:c,minute:l,second:d,millisecond:0}),m=+r,h=m%1e3;return m-=h>=0?h:1e3+h,(p-m)/(60*1e3)}equals(e){return e.type==="iana"&&e.name===this.name}get isValid(){return this.valid}},gE={};function jw(t,e={}){let r=JSON.stringify([t,e]),n=gE[r];return n||(n=new Intl.ListFormat(t,e),gE[r]=n),n}s(jw,"getCachedLF");var Nl=new Map;function Ul(t,e={}){let r=JSON.stringify([t,e]),n=Nl.get(r);return n===void 0&&(n=new Intl.DateTimeFormat(t,e),Nl.set(r,n)),n}s(Ul,"getCachedDTF");var Ll=new Map;function Yw(t,e={}){let r=JSON.stringify([t,e]),n=Ll.get(r);return n===void 0&&(n=new Intl.NumberFormat(t,e),Ll.set(r,n)),n}s(Yw,"getCachedINF");var kl=new Map;function Hw(t,e={}){let{base:r,...n}=e,i=JSON.stringify([t,n]),o=kl.get(i);return o===void 0&&(o=new Intl.RelativeTimeFormat(t,e),kl.set(i,o)),o}s(Hw,"getCachedRTF");var is=null;function zw(){return is||(is=new Intl.DateTimeFormat().resolvedOptions().locale,is)}s(zw,"systemLocale");var Ml=new Map;function fg(t){let e=Ml.get(t);return e===void 0&&(e=new Intl.DateTimeFormat(t).resolvedOptions(),Ml.set(t,e)),e}s(fg,"getCachedIntResolvedOptions");var Fl=new Map;function Jw(t){let e=Fl.get(t);if(!e){let r=new Intl.Locale(t);e="getWeekInfo"in r?r.getWeekInfo():r.weekInfo,"minimalDays"in e||(e={...pg,...e}),Fl.set(t,e)}return e}s(Jw,"getCachedWeekInfo");function Zw(t){let e=t.indexOf("-x-");e!==-1&&(t=t.substring(0,e));let r=t.indexOf("-u-");if(r===-1)return[t];{let n,i;try{n=Ul(t).resolvedOptions(),i=t}catch{let c=t.substring(0,r);n=Ul(c).resolvedOptions(),i=c}let{numberingSystem:o,calendar:a}=n;return[i,o,a]}}s(Zw,"parseLocaleString");function Xw(t,e,r){return(r||e)&&(t.includes("-u-")||(t+="-u"),r&&(t+=`-ca-${r}`),e&&(t+=`-nu-${e}`)),t}s(Xw,"intlConfigString");function eD(t){let e=[];for(let r=1;r<=12;r++){let n=oe.utc(2009,r,1);e.push(t(n))}return e}s(eD,"mapMonths");function tD(t){let e=[];for(let r=1;r<=7;r++){let n=oe.utc(2016,11,13+r);e.push(t(n))}return e}s(tD,"mapWeekdays");function ca(t,e,r,n){let i=t.listingMode();return i==="error"?null:i==="en"?r(e):n(e)}s(ca,"listStuff");function rD(t){return t.numberingSystem&&t.numberingSystem!=="latn"?!1:t.numberingSystem==="latn"||!t.locale||t.locale.startsWith("en")||fg(t.locale).numberingSystem==="latn"}s(rD,"supportsFastNumbers");var Bl=class{static{s(this,"PolyNumberFormatter")}constructor(e,r,n){this.padTo=n.padTo||0,this.floor=n.floor||!1;let{padTo:i,floor:o,...a}=n;if(!r||Object.keys(a).length>0){let u={useGrouping:!1,...n};n.padTo>0&&(u.minimumIntegerDigits=n.padTo),this.inf=Yw(e,u)}}format(e){if(this.inf){let r=this.floor?Math.floor(e):e;return this.inf.format(r)}else{let r=this.floor?Math.floor(e):zl(e,3);return me(r,this.padTo)}}},Wl=class{static{s(this,"PolyDateFormatter")}constructor(e,r,n){this.opts=n,this.originalZone=void 0;let i;if(this.opts.timeZone)this.dt=e;else if(e.zone.type==="fixed"){let a=-1*(e.offset/60),u=a>=0?`Etc/GMT+${a}`:`Etc/GMT${a}`;e.offset!==0&&Mt.create(u).valid?(i=u,this.dt=e):(i="UTC",this.dt=e.offset===0?e:e.setZone("UTC").plus({minutes:e.offset}),this.originalZone=e.zone)}else e.zone.type==="system"?this.dt=e:e.zone.type==="iana"?(this.dt=e,i=e.zone.name):(i="UTC",this.dt=e.setZone("UTC").plus({minutes:e.offset}),this.originalZone=e.zone);let o={...this.opts};o.timeZone=o.timeZone||i,this.dtf=Ul(r,o)}format(){return this.originalZone?this.formatToParts().map(({value:e})=>e).join(""):this.dtf.format(this.dt.toJSDate())}formatToParts(){let e=this.dtf.formatToParts(this.dt.toJSDate());return this.originalZone?e.map(r=>{if(r.type==="timeZoneName"){let n=this.originalZone.offsetName(this.dt.ts,{locale:this.dt.locale,format:this.opts.timeZoneName});return{...r,value:n}}else return r}):e}resolvedOptions(){return this.dtf.resolvedOptions()}},$l=class{static{s(this,"PolyRelFormatter")}constructor(e,r,n){this.opts={style:"long",...n},!r&&Sg()&&(this.rtf=Hw(e,n))}format(e,r){return this.rtf?this.rtf.format(e,r):OD(r,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,r){return this.rtf?this.rtf.formatToParts(e,r):[]}},pg={firstDay:1,minimalDays:4,weekend:[6,7]},ee=class t{static{s(this,"Locale")}static fromOpts(e){return t.create(e.locale,e.numberingSystem,e.outputCalendar,e.weekSettings,e.defaultToEN)}static create(e,r,n,i,o=!1){let a=e||re.defaultLocale,u=a||(o?"en-US":zw()),c=r||re.defaultNumberingSystem,l=n||re.defaultOutputCalendar,d=Vl(i)||re.defaultWeekSettings;return new t(u,c,l,d,a)}static resetCache(){is=null,Nl.clear(),Ll.clear(),kl.clear(),Ml.clear(),Fl.clear()}static fromObject({locale:e,numberingSystem:r,outputCalendar:n,weekSettings:i}={}){return t.create(e,r,n,i)}constructor(e,r,n,i,o){let[a,u,c]=Zw(e);this.locale=a,this.numberingSystem=r||u||null,this.outputCalendar=n||c||null,this.weekSettings=i,this.intl=Xw(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=o,this.fastNumbersCached=null}get fastNumbers(){return this.fastNumbersCached==null&&(this.fastNumbersCached=rD(this)),this.fastNumbersCached}listingMode(){let e=this.isEnglish(),r=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return e&&r?"en":"intl"}clone(e){return!e||Object.getOwnPropertyNames(e).length===0?this:t.create(e.locale||this.specifiedLocale,e.numberingSystem||this.numberingSystem,e.outputCalendar||this.outputCalendar,Vl(e.weekSettings)||this.weekSettings,e.defaultToEN||!1)}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,r=!1){return ca(this,e,wg,()=>{let n=this.intl==="ja"||this.intl.startsWith("ja-");r&=!n;let i=r?{month:e,day:"numeric"}:{month:e},o=r?"format":"standalone";if(!this.monthsCache[o][e]){let a=n?u=>this.dtFormatter(u,i).format():u=>this.extract(u,i,"month");this.monthsCache[o][e]=eD(a)}return this.monthsCache[o][e]})}weekdays(e,r=!1){return ca(this,e,Cg,()=>{let n=r?{weekday:e,year:"numeric",month:"long",day:"numeric"}:{weekday:e},i=r?"format":"standalone";return this.weekdaysCache[i][e]||(this.weekdaysCache[i][e]=tD(o=>this.extract(o,n,"weekday"))),this.weekdaysCache[i][e]})}meridiems(){return ca(this,void 0,()=>bg,()=>{if(!this.meridiemCache){let e={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[oe.utc(2016,11,13,9),oe.utc(2016,11,13,19)].map(r=>this.extract(r,e,"dayperiod"))}return this.meridiemCache})}eras(e){return ca(this,e,xg,()=>{let r={era:e};return this.eraCache[e]||(this.eraCache[e]=[oe.utc(-40,1,1),oe.utc(2017,1,1)].map(n=>this.extract(n,r,"era"))),this.eraCache[e]})}extract(e,r,n){let i=this.dtFormatter(e,r),o=i.formatToParts(),a=o.find(u=>u.type.toLowerCase()===n);return a?a.value:null}numberFormatter(e={}){return new Bl(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,r={}){return new Wl(e,this.intl,r)}relFormatter(e={}){return new $l(this.intl,this.isEnglish(),e)}listFormatter(e={}){return jw(this.intl,e)}isEnglish(){return this.locale==="en"||this.locale.toLowerCase()==="en-us"||fg(this.intl).locale.startsWith("en-us")}getWeekSettings(){return this.weekSettings?this.weekSettings:Ag()?Jw(this.locale):pg}getStartOfWeek(){return this.getWeekSettings().firstDay}getMinDaysInFirstWeek(){return this.getWeekSettings().minimalDays}getWeekendDays(){return this.getWeekSettings().weekend}equals(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar}toString(){return`Locale(${this.locale}, ${this.numberingSystem}, ${this.outputCalendar})`}},_l=null,Ve=class t extends ar{static{s(this,"FixedOffsetZone")}static get utcInstance(){return _l===null&&(_l=new t(0)),_l}static instance(e){return e===0?t.utcInstance:new t(e)}static parseSpecifier(e){if(e){let r=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(r)return new t(wa(r[1],r[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${as(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${as(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,r){return as(this.fixed,r)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return e.type==="fixed"&&e.fixed===this.fixed}get isValid(){return!0}},ya=class extends ar{static{s(this,"InvalidZone")}constructor(e){super(),this.zoneName=e}get type(){return"invalid"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return""}offset(){return NaN}equals(){return!1}get isValid(){return!1}};function ir(t,e){if(Q(t)||t===null)return e;if(t instanceof ar)return t;if(uD(t)){let r=t.toLowerCase();return r==="default"?e:r==="local"||r==="system"?us.instance:r==="utc"||r==="gmt"?Ve.utcInstance:Ve.parseSpecifier(r)||Mt.create(t)}else return or(t)?Ve.instance(t):typeof t=="object"&&"offset"in t&&typeof t.offset=="function"?t:new ya(t)}s(ir,"normalizeZone");var Ql={arab:"[\u0660-\u0669]",arabext:"[\u06F0-\u06F9]",bali:"[\u1B50-\u1B59]",beng:"[\u09E6-\u09EF]",deva:"[\u0966-\u096F]",fullwide:"[\uFF10-\uFF19]",gujr:"[\u0AE6-\u0AEF]",hanidec:"[\u3007|\u4E00|\u4E8C|\u4E09|\u56DB|\u4E94|\u516D|\u4E03|\u516B|\u4E5D]",khmr:"[\u17E0-\u17E9]",knda:"[\u0CE6-\u0CEF]",laoo:"[\u0ED0-\u0ED9]",limb:"[\u1946-\u194F]",mlym:"[\u0D66-\u0D6F]",mong:"[\u1810-\u1819]",mymr:"[\u1040-\u1049]",orya:"[\u0B66-\u0B6F]",tamldec:"[\u0BE6-\u0BEF]",telu:"[\u0C66-\u0C6F]",thai:"[\u0E50-\u0E59]",tibt:"[\u0F20-\u0F29]",latn:"\\d"},yE={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},nD=Ql.hanidec.replace(/[\[|\]]/g,"").split("");function iD(t){let e=parseInt(t,10);if(isNaN(e)){e="";for(let r=0;r<t.length;r++){let n=t.charCodeAt(r);if(t[r].search(Ql.hanidec)!==-1)e+=nD.indexOf(t[r]);else for(let i in yE){let[o,a]=yE[i];n>=o&&n<=a&&(e+=n-o)}}return parseInt(e,10)}else return e}s(iD,"parseDigits");var Gl=new Map;function sD(){Gl.clear()}s(sD,"resetDigitRegexCache");function at({numberingSystem:t},e=""){let r=t||"latn",n=Gl.get(r);n===void 0&&(n=new Map,Gl.set(r,n));let i=n.get(e);return i===void 0&&(i=new RegExp(`${Ql[r]}${e}`),n.set(e,i)),i}s(at,"digitRegex");var TE=s(()=>Date.now(),"now"),SE="system",AE=null,_E=null,OE=null,IE=60,wE,DE=null,re=class{static{s(this,"Settings")}static get now(){return TE}static set now(e){TE=e}static set defaultZone(e){SE=e}static get defaultZone(){return ir(SE,us.instance)}static get defaultLocale(){return AE}static set defaultLocale(e){AE=e}static get defaultNumberingSystem(){return _E}static set defaultNumberingSystem(e){_E=e}static get defaultOutputCalendar(){return OE}static set defaultOutputCalendar(e){OE=e}static get defaultWeekSettings(){return DE}static set defaultWeekSettings(e){DE=Vl(e)}static get twoDigitCutoffYear(){return IE}static set twoDigitCutoffYear(e){IE=e%100}static get throwOnInvalid(){return wE}static set throwOnInvalid(e){wE=e}static resetCaches(){ee.resetCache(),Mt.resetCache(),oe.resetCache(),sD()}},$e=class{static{s(this,"Invalid")}constructor(e,r){this.reason=e,this.explanation=r}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}},mg=[0,31,59,90,120,151,181,212,243,273,304,334],hg=[0,31,60,91,121,152,182,213,244,274,305,335];function He(t,e){return new $e("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}s(He,"unitOutOfRange");function jl(t,e,r){let n=new Date(Date.UTC(t,e-1,r));t<100&&t>=0&&n.setUTCFullYear(n.getUTCFullYear()-1900);let i=n.getUTCDay();return i===0?7:i}s(jl,"dayOfWeek");function Eg(t,e,r){return r+(ls(t)?hg:mg)[e-1]}s(Eg,"computeOrdinal");function gg(t,e){let r=ls(t)?hg:mg,n=r.findIndex(o=>o<e),i=e-r[n];return{month:n+1,day:i}}s(gg,"uncomputeOrdinal");function Yl(t,e){return(t-e+7)%7+1}s(Yl,"isoWeekdayToLocal");function Ta(t,e=4,r=1){let{year:n,month:i,day:o}=t,a=Eg(n,i,o),u=Yl(jl(n,i,o),r),c=Math.floor((a-u+14-e)/7),l;return c<1?(l=n-1,c=cs(l,e,r)):c>cs(n,e,r)?(l=n+1,c=1):l=n,{weekYear:l,weekNumber:c,weekday:u,...Da(t)}}s(Ta,"gregorianToWeek");function RE(t,e=4,r=1){let{weekYear:n,weekNumber:i,weekday:o}=t,a=Yl(jl(n,1,e),r),u=kn(n),c=i*7+o-a-7+e,l;c<1?(l=n-1,c+=kn(l)):c>u?(l=n+1,c-=kn(n)):l=n;let{month:d,day:f}=gg(l,c);return{year:l,month:d,day:f,...Da(t)}}s(RE,"weekToGregorian");function Ol(t){let{year:e,month:r,day:n}=t,i=Eg(e,r,n);return{year:e,ordinal:i,...Da(t)}}s(Ol,"gregorianToOrdinal");function CE(t){let{year:e,ordinal:r}=t,{month:n,day:i}=gg(e,r);return{year:e,month:n,day:i,...Da(t)}}s(CE,"ordinalToGregorian");function bE(t,e){if(!Q(t.localWeekday)||!Q(t.localWeekNumber)||!Q(t.localWeekYear)){if(!Q(t.weekday)||!Q(t.weekNumber)||!Q(t.weekYear))throw new sr("Cannot mix locale-based week fields with ISO-based week fields");return Q(t.localWeekday)||(t.weekday=t.localWeekday),Q(t.localWeekNumber)||(t.weekNumber=t.localWeekNumber),Q(t.localWeekYear)||(t.weekYear=t.localWeekYear),delete t.localWeekday,delete t.localWeekNumber,delete t.localWeekYear,{minDaysInFirstWeek:e.getMinDaysInFirstWeek(),startOfWeek:e.getStartOfWeek()}}else return{minDaysInFirstWeek:4,startOfWeek:1}}s(bE,"usesLocalWeekValues");function oD(t,e=4,r=1){let n=Oa(t.weekYear),i=ze(t.weekNumber,1,cs(t.weekYear,e,r)),o=ze(t.weekday,1,7);return n?i?o?!1:He("weekday",t.weekday):He("week",t.weekNumber):He("weekYear",t.weekYear)}s(oD,"hasInvalidWeekData");function aD(t){let e=Oa(t.year),r=ze(t.ordinal,1,kn(t.year));return e?r?!1:He("ordinal",t.ordinal):He("year",t.year)}s(aD,"hasInvalidOrdinalData");function yg(t){let e=Oa(t.year),r=ze(t.month,1,12),n=ze(t.day,1,Sa(t.year,t.month));return e?r?n?!1:He("day",t.day):He("month",t.month):He("year",t.year)}s(yg,"hasInvalidGregorianData");function Tg(t){let{hour:e,minute:r,second:n,millisecond:i}=t,o=ze(e,0,23)||e===24&&r===0&&n===0&&i===0,a=ze(r,0,59),u=ze(n,0,59),c=ze(i,0,999);return o?a?u?c?!1:He("millisecond",i):He("second",n):He("minute",r):He("hour",e)}s(Tg,"hasInvalidTimeData");function Q(t){return typeof t>"u"}s(Q,"isUndefined");function or(t){return typeof t=="number"}s(or,"isNumber");function Oa(t){return typeof t=="number"&&t%1===0}s(Oa,"isInteger");function uD(t){return typeof t=="string"}s(uD,"isString");function cD(t){return Object.prototype.toString.call(t)==="[object Date]"}s(cD,"isDate");function Sg(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}s(Sg,"hasRelative");function Ag(){try{return typeof Intl<"u"&&!!Intl.Locale&&("weekInfo"in Intl.Locale.prototype||"getWeekInfo"in Intl.Locale.prototype)}catch{return!1}}s(Ag,"hasLocaleWeekInfo");function lD(t){return Array.isArray(t)?t:[t]}s(lD,"maybeArray");function xE(t,e,r){if(t.length!==0)return t.reduce((n,i)=>{let o=[e(i),i];return n&&r(n[0],o[0])===n[0]?n:o},null)[1]}s(xE,"bestBy");function dD(t,e){return e.reduce((r,n)=>(r[n]=t[n],r),{})}s(dD,"pick");function Fn(t,e){return Object.prototype.hasOwnProperty.call(t,e)}s(Fn,"hasOwnProperty");function Vl(t){if(t==null)return null;if(typeof t!="object")throw new _e("Week settings must be an object");if(!ze(t.firstDay,1,7)||!ze(t.minimalDays,1,7)||!Array.isArray(t.weekend)||t.weekend.some(e=>!ze(e,1,7)))throw new _e("Invalid week settings");return{firstDay:t.firstDay,minimalDays:t.minimalDays,weekend:Array.from(t.weekend)}}s(Vl,"validateWeekSettings");function ze(t,e,r){return Oa(t)&&t>=e&&t<=r}s(ze,"integerBetween");function fD(t,e){return t-e*Math.floor(t/e)}s(fD,"floorMod");function me(t,e=2){let r=t<0,n;return r?n="-"+(""+-t).padStart(e,"0"):n=(""+t).padStart(e,"0"),n}s(me,"padStart");function nr(t){if(!(Q(t)||t===null||t===""))return parseInt(t,10)}s(nr,"parseInteger");function Gr(t){if(!(Q(t)||t===null||t===""))return parseFloat(t)}s(Gr,"parseFloating");function Hl(t){if(!(Q(t)||t===null||t==="")){let e=parseFloat("0."+t)*1e3;return Math.floor(e)}}s(Hl,"parseMillis");function zl(t,e,r="round"){let n=10**e;switch(r){case"expand":return t>0?Math.ceil(t*n)/n:Math.floor(t*n)/n;case"trunc":return Math.trunc(t*n)/n;case"round":return Math.round(t*n)/n;case"floor":return Math.floor(t*n)/n;case"ceil":return Math.ceil(t*n)/n;default:throw new RangeError(`Value rounding ${r} is out of range`)}}s(zl,"roundTo");function ls(t){return t%4===0&&(t%100!==0||t%400===0)}s(ls,"isLeapYear");function kn(t){return ls(t)?366:365}s(kn,"daysInYear");function Sa(t,e){let r=fD(e-1,12)+1,n=t+(e-r)/12;return r===2?ls(n)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][r-1]}s(Sa,"daysInMonth");function Ia(t){let e=Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,t.second,t.millisecond);return t.year<100&&t.year>=0&&(e=new Date(e),e.setUTCFullYear(t.year,t.month-1,t.day)),+e}s(Ia,"objToLocalTS");function vE(t,e,r){return-Yl(jl(t,1,e),r)+e-1}s(vE,"firstWeekOffset");function cs(t,e=4,r=1){let n=vE(t,e,r),i=vE(t+1,e,r);return(kn(t)-n+i)/7}s(cs,"weeksInWeekYear");function ql(t){return t>99?t:t>re.twoDigitCutoffYear?1900+t:2e3+t}s(ql,"untruncateYear");function _g(t,e,r,n=null){let i=new Date(t),o={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};n&&(o.timeZone=n);let a={timeZoneName:e,...o},u=new Intl.DateTimeFormat(r,a).formatToParts(i).find(c=>c.type.toLowerCase()==="timezonename");return u?u.value:null}s(_g,"parseZoneInfo");function wa(t,e){let r=parseInt(t,10);Number.isNaN(r)&&(r=0);let n=parseInt(e,10)||0,i=r<0||Object.is(r,-0)?-n:n;return r*60+i}s(wa,"signedOffset");function Og(t){let e=Number(t);if(typeof t=="boolean"||t===""||!Number.isFinite(e))throw new _e(`Invalid unit value ${t}`);return e}s(Og,"asNumber");function Aa(t,e){let r={};for(let n in t)if(Fn(t,n)){let i=t[n];if(i==null)continue;r[e(n)]=Og(i)}return r}s(Aa,"normalizeObject");function as(t,e){let r=Math.trunc(Math.abs(t/60)),n=Math.trunc(Math.abs(t%60)),i=t>=0?"+":"-";switch(e){case"short":return`${i}${me(r,2)}:${me(n,2)}`;case"narrow":return`${i}${r}${n>0?`:${n}`:""}`;case"techie":return`${i}${me(r,2)}${me(n,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}s(as,"formatOffset");function Da(t){return dD(t,["hour","minute","second","millisecond"])}s(Da,"timeObject");var pD=["January","February","March","April","May","June","July","August","September","October","November","December"],Ig=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],mD=["J","F","M","A","M","J","J","A","S","O","N","D"];function wg(t){switch(t){case"narrow":return[...mD];case"short":return[...Ig];case"long":return[...pD];case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}s(wg,"months");var Dg=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],Rg=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],hD=["M","T","W","T","F","S","S"];function Cg(t){switch(t){case"narrow":return[...hD];case"short":return[...Rg];case"long":return[...Dg];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}s(Cg,"weekdays");var bg=["AM","PM"],ED=["Before Christ","Anno Domini"],gD=["BC","AD"],yD=["B","A"];function xg(t){switch(t){case"narrow":return[...yD];case"short":return[...gD];case"long":return[...ED];default:return null}}s(xg,"eras");function TD(t){return bg[t.hour<12?0:1]}s(TD,"meridiemForDateTime");function SD(t,e){return Cg(e)[t.weekday-1]}s(SD,"weekdayForDateTime");function AD(t,e){return wg(e)[t.month-1]}s(AD,"monthForDateTime");function _D(t,e){return xg(e)[t.year<0?0:1]}s(_D,"eraForDateTime");function OD(t,e,r="always",n=!1){let i={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},o=["hours","minutes","seconds"].indexOf(t)===-1;if(r==="auto"&&o){let f=t==="days";switch(e){case 1:return f?"tomorrow":`next ${i[t][0]}`;case-1:return f?"yesterday":`last ${i[t][0]}`;case 0:return f?"today":`this ${i[t][0]}`}}let a=Object.is(e,-0)||e<0,u=Math.abs(e),c=u===1,l=i[t],d=n?c?l[1]:l[2]||l[1]:c?i[t][0]:t;return a?`${u} ${d} ago`:`in ${u} ${d}`}s(OD,"formatRelativeTime");function PE(t,e){let r="";for(let n of t)n.literal?r+=n.val:r+=e(n.val);return r}s(PE,"stringifyTokens");var ID={D:ga,DD:jE,DDD:YE,DDDD:HE,t:zE,tt:JE,ttt:ZE,tttt:XE,T:eg,TT:tg,TTT:rg,TTTT:ng,f:ig,ff:og,fff:ug,ffff:lg,F:sg,FF:ag,FFF:cg,FFFF:dg},We=class t{static{s(this,"Formatter")}static create(e,r={}){return new t(e,r)}static parseFormat(e){let r=null,n="",i=!1,o=[];for(let a=0;a<e.length;a++){let u=e.charAt(a);u==="'"?((n.length>0||i)&&o.push({literal:i||/^\s+$/.test(n),val:n===""?"'":n}),r=null,n="",i=!i):i||u===r?n+=u:(n.length>0&&o.push({literal:/^\s+$/.test(n),val:n}),n=u,r=u)}return n.length>0&&o.push({literal:i||/^\s+$/.test(n),val:n}),o}static macroTokenToFormatOpts(e){return ID[e]}constructor(e,r){this.opts=r,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,r){return this.systemLoc===null&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(e,{...this.opts,...r}).format()}dtFormatter(e,r={}){return this.loc.dtFormatter(e,{...this.opts,...r})}formatDateTime(e,r){return this.dtFormatter(e,r).format()}formatDateTimeParts(e,r){return this.dtFormatter(e,r).formatToParts()}formatInterval(e,r){return this.dtFormatter(e.start,r).dtf.formatRange(e.start.toJSDate(),e.end.toJSDate())}resolvedOptions(e,r){return this.dtFormatter(e,r).resolvedOptions()}num(e,r=0,n=void 0){if(this.opts.forceSimple)return me(e,r);let i={...this.opts};return r>0&&(i.padTo=r),n&&(i.signDisplay=n),this.loc.numberFormatter(i).format(e)}formatDateTimeFromString(e,r){let n=this.loc.listingMode()==="en",i=this.loc.outputCalendar&&this.loc.outputCalendar!=="gregory",o=s((m,h)=>this.loc.extract(e,m,h),"string"),a=s(m=>e.isOffsetFixed&&e.offset===0&&m.allowZ?"Z":e.isValid?e.zone.formatOffset(e.ts,m.format):"","formatOffset"),u=s(()=>n?TD(e):o({hour:"numeric",hourCycle:"h12"},"dayperiod"),"meridiem"),c=s((m,h)=>n?AD(e,m):o(h?{month:m}:{month:m,day:"numeric"},"month"),"month"),l=s((m,h)=>n?SD(e,m):o(h?{weekday:m}:{weekday:m,month:"long",day:"numeric"},"weekday"),"weekday"),d=s(m=>{let h=t.macroTokenToFormatOpts(m);return h?this.formatWithSystemDefault(e,h):m},"maybeMacro"),f=s(m=>n?_D(e,m):o({era:m},"era"),"era"),p=s(m=>{switch(m){case"S":return this.num(e.millisecond);case"u":case"SSS":return this.num(e.millisecond,3);case"s":return this.num(e.second);case"ss":return this.num(e.second,2);case"uu":return this.num(Math.floor(e.millisecond/10),2);case"uuu":return this.num(Math.floor(e.millisecond/100));case"m":return this.num(e.minute);case"mm":return this.num(e.minute,2);case"h":return this.num(e.hour%12===0?12:e.hour%12);case"hh":return this.num(e.hour%12===0?12:e.hour%12,2);case"H":return this.num(e.hour);case"HH":return this.num(e.hour,2);case"Z":return a({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return a({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return a({format:"techie",allowZ:this.opts.allowZ});case"ZZZZ":return e.zone.offsetName(e.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return e.zone.offsetName(e.ts,{format:"long",locale:this.loc.locale});case"z":return e.zoneName;case"a":return u();case"d":return i?o({day:"numeric"},"day"):this.num(e.day);case"dd":return i?o({day:"2-digit"},"day"):this.num(e.day,2);case"c":return this.num(e.weekday);case"ccc":return l("short",!0);case"cccc":return l("long",!0);case"ccccc":return l("narrow",!0);case"E":return this.num(e.weekday);case"EEE":return l("short",!1);case"EEEE":return l("long",!1);case"EEEEE":return l("narrow",!1);case"L":return i?o({month:"numeric",day:"numeric"},"month"):this.num(e.month);case"LL":return i?o({month:"2-digit",day:"numeric"},"month"):this.num(e.month,2);case"LLL":return c("short",!0);case"LLLL":return c("long",!0);case"LLLLL":return c("narrow",!0);case"M":return i?o({month:"numeric"},"month"):this.num(e.month);case"MM":return i?o({month:"2-digit"},"month"):this.num(e.month,2);case"MMM":return c("short",!1);case"MMMM":return c("long",!1);case"MMMMM":return c("narrow",!1);case"y":return i?o({year:"numeric"},"year"):this.num(e.year);case"yy":return i?o({year:"2-digit"},"year"):this.num(e.year.toString().slice(-2),2);case"yyyy":return i?o({year:"numeric"},"year"):this.num(e.year,4);case"yyyyyy":return i?o({year:"numeric"},"year"):this.num(e.year,6);case"G":return f("short");case"GG":return f("long");case"GGGGG":return f("narrow");case"kk":return this.num(e.weekYear.toString().slice(-2),2);case"kkkk":return this.num(e.weekYear,4);case"W":return this.num(e.weekNumber);case"WW":return this.num(e.weekNumber,2);case"n":return this.num(e.localWeekNumber);case"nn":return this.num(e.localWeekNumber,2);case"ii":return this.num(e.localWeekYear.toString().slice(-2),2);case"iiii":return this.num(e.localWeekYear,4);case"o":return this.num(e.ordinal);case"ooo":return this.num(e.ordinal,3);case"q":return this.num(e.quarter);case"qq":return this.num(e.quarter,2);case"X":return this.num(Math.floor(e.ts/1e3));case"x":return this.num(e.ts);default:return d(m)}},"tokenToString");return PE(t.parseFormat(r),p)}formatDurationFromString(e,r){let n=this.opts.signMode==="negativeLargestOnly"?-1:1,i=s(d=>{switch(d[0]){case"S":return"milliseconds";case"s":return"seconds";case"m":return"minutes";case"h":return"hours";case"d":return"days";case"w":return"weeks";case"M":return"months";case"y":return"years";default:return null}},"tokenToField"),o=s((d,f)=>p=>{let m=i(p);if(m){let h=f.isNegativeDuration&&m!==f.largestUnit?n:1,g;return this.opts.signMode==="negativeLargestOnly"&&m!==f.largestUnit?g="never":this.opts.signMode==="all"?g="always":g="auto",this.num(d.get(m)*h,p.length,g)}else return p},"tokenToString"),a=t.parseFormat(r),u=a.reduce((d,{literal:f,val:p})=>f?d:d.concat(p),[]),c=e.shiftTo(...u.map(i).filter(d=>d)),l={isNegativeDuration:c<0,largestUnit:Object.keys(c.values)[0]};return PE(a,o(c,l))}},vg=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function Bn(...t){let e=t.reduce((r,n)=>r+n.source,"");return RegExp(`^${e}$`)}s(Bn,"combineRegexes");function Wn(...t){return e=>t.reduce(([r,n,i],o)=>{let[a,u,c]=o(e,i);return[{...r,...a},u||n,c]},[{},null,1]).slice(0,2)}s(Wn,"combineExtractors");function $n(t,...e){if(t==null)return[null,null];for(let[r,n]of e){let i=r.exec(t);if(i)return n(i)}return[null,null]}s($n,"parse");function Pg(...t){return(e,r)=>{let n={},i;for(i=0;i<t.length;i++)n[t[i]]=nr(e[r+i]);return[n,null,r+i]}}s(Pg,"simpleParse");var Ng=/(?:([Zz])|([+-]\d\d)(?::?(\d\d))?)/,wD=`(?:${Ng.source}?(?:\\[(${vg.source})\\])?)?`,Jl=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,Ug=RegExp(`${Jl.source}${wD}`),Zl=RegExp(`(?:[Tt]${Ug.source})?`),DD=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,RD=/(\d{4})-?W(\d\d)(?:-?(\d))?/,CD=/(\d{4})-?(\d{3})/,bD=Pg("weekYear","weekNumber","weekDay"),xD=Pg("year","ordinal"),vD=/(\d{4})-(\d\d)-(\d\d)/,Lg=RegExp(`${Jl.source} ?(?:${Ng.source}|(${vg.source}))?`),PD=RegExp(`(?: ${Lg.source})?`);function Mn(t,e,r){let n=t[e];return Q(n)?r:nr(n)}s(Mn,"int");function ND(t,e){return[{year:Mn(t,e),month:Mn(t,e+1,1),day:Mn(t,e+2,1)},null,e+3]}s(ND,"extractISOYmd");function Gn(t,e){return[{hours:Mn(t,e,0),minutes:Mn(t,e+1,0),seconds:Mn(t,e+2,0),milliseconds:Hl(t[e+3])},null,e+4]}s(Gn,"extractISOTime");function ds(t,e){let r=!t[e]&&!t[e+1],n=wa(t[e+1],t[e+2]),i=r?null:Ve.instance(n);return[{},i,e+3]}s(ds,"extractISOOffset");function fs(t,e){let r=t[e]?Mt.create(t[e]):null;return[{},r,e+1]}s(fs,"extractIANAZone");var UD=RegExp(`^T?${Jl.source}$`),LD=/^-?P(?:(?:(-?\d{1,20}(?:\.\d{1,20})?)Y)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20}(?:\.\d{1,20})?)W)?(?:(-?\d{1,20}(?:\.\d{1,20})?)D)?(?:T(?:(-?\d{1,20}(?:\.\d{1,20})?)H)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20})(?:[.,](-?\d{1,20}))?S)?)?)$/;function kD(t){let[e,r,n,i,o,a,u,c,l]=t,d=e[0]==="-",f=c&&c[0]==="-",p=s((m,h=!1)=>m!==void 0&&(h||m&&d)?-m:m,"maybeNegate");return[{years:p(Gr(r)),months:p(Gr(n)),weeks:p(Gr(i)),days:p(Gr(o)),hours:p(Gr(a)),minutes:p(Gr(u)),seconds:p(Gr(c),c==="-0"),milliseconds:p(Hl(l),f)}]}s(kD,"extractISODuration");var MD={GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function Xl(t,e,r,n,i,o,a){let u={year:e.length===2?ql(nr(e)):nr(e),month:Ig.indexOf(r)+1,day:nr(n),hour:nr(i),minute:nr(o)};return a&&(u.second=nr(a)),t&&(u.weekday=t.length>3?Dg.indexOf(t)+1:Rg.indexOf(t)+1),u}s(Xl,"fromStrings");var FD=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function BD(t){let[,e,r,n,i,o,a,u,c,l,d,f]=t,p=Xl(e,i,n,r,o,a,u),m;return c?m=MD[c]:l?m=0:m=wa(d,f),[p,new Ve(m)]}s(BD,"extractRFC2822");function WD(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}s(WD,"preprocessRFC2822");var $D=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,GD=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,VD=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function NE(t){let[,e,r,n,i,o,a,u]=t;return[Xl(e,i,n,r,o,a,u),Ve.utcInstance]}s(NE,"extractRFC1123Or850");function qD(t){let[,e,r,n,i,o,a,u]=t;return[Xl(e,u,r,n,i,o,a),Ve.utcInstance]}s(qD,"extractASCII");var KD=Bn(DD,Zl),QD=Bn(RD,Zl),jD=Bn(CD,Zl),YD=Bn(Ug),kg=Wn(ND,Gn,ds,fs),HD=Wn(bD,Gn,ds,fs),zD=Wn(xD,Gn,ds,fs),JD=Wn(Gn,ds,fs);function ZD(t){return $n(t,[KD,kg],[QD,HD],[jD,zD],[YD,JD])}s(ZD,"parseISODate");function XD(t){return $n(WD(t),[FD,BD])}s(XD,"parseRFC2822Date");function eR(t){return $n(t,[$D,NE],[GD,NE],[VD,qD])}s(eR,"parseHTTPDate");function tR(t){return $n(t,[LD,kD])}s(tR,"parseISODuration");var rR=Wn(Gn);function nR(t){return $n(t,[UD,rR])}s(nR,"parseISOTimeOnly");var iR=Bn(vD,PD),sR=Bn(Lg),oR=Wn(Gn,ds,fs);function aR(t){return $n(t,[iR,kg],[sR,oR])}s(aR,"parseSQL");var UE="Invalid Duration",Mg={weeks:{days:7,hours:7*24,minutes:7*24*60,seconds:7*24*60*60,milliseconds:7*24*60*60*1e3},days:{hours:24,minutes:24*60,seconds:24*60*60,milliseconds:24*60*60*1e3},hours:{minutes:60,seconds:60*60,milliseconds:60*60*1e3},minutes:{seconds:60,milliseconds:60*1e3},seconds:{milliseconds:1e3}},uR={years:{quarters:4,months:12,weeks:52,days:365,hours:365*24,minutes:365*24*60,seconds:365*24*60*60,milliseconds:365*24*60*60*1e3},quarters:{months:3,weeks:13,days:91,hours:91*24,minutes:91*24*60,seconds:91*24*60*60,milliseconds:91*24*60*60*1e3},months:{weeks:4,days:30,hours:30*24,minutes:30*24*60,seconds:30*24*60*60,milliseconds:30*24*60*60*1e3},...Mg},Ye=146097/400,Nn=146097/4800,cR={years:{quarters:4,months:12,weeks:Ye/7,days:Ye,hours:Ye*24,minutes:Ye*24*60,seconds:Ye*24*60*60,milliseconds:Ye*24*60*60*1e3},quarters:{months:3,weeks:Ye/28,days:Ye/4,hours:Ye*24/4,minutes:Ye*24*60/4,seconds:Ye*24*60*60/4,milliseconds:Ye*24*60*60*1e3/4},months:{weeks:Nn/7,days:Nn,hours:Nn*24,minutes:Nn*24*60,seconds:Nn*24*60*60,milliseconds:Nn*24*60*60*1e3},...Mg},qr=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],lR=qr.slice(0).reverse();function Lt(t,e,r=!1){let n={values:r?e.values:{...t.values,...e.values||{}},loc:t.loc.clone(e.loc),conversionAccuracy:e.conversionAccuracy||t.conversionAccuracy,matrix:e.matrix||t.matrix};return new ge(n)}s(Lt,"clone$1");function Fg(t,e){var r;let n=(r=e.milliseconds)!=null?r:0;for(let i of lR.slice(1))e[i]&&(n+=e[i]*t[i].milliseconds);return n}s(Fg,"durationToMillis");function LE(t,e){let r=Fg(t,e)<0?-1:1;qr.reduceRight((n,i)=>{if(Q(e[i]))return n;if(n){let o=e[n]*r,a=t[i][n],u=Math.floor(o/a);e[i]+=u*r,e[n]-=u*a*r}return i},null),qr.reduce((n,i)=>{if(Q(e[i]))return n;if(n){let o=e[n]%1;e[n]-=o,e[i]+=o*t[n][i]}return i},null)}s(LE,"normalizeValues");function kE(t){let e={};for(let[r,n]of Object.entries(t))n!==0&&(e[r]=n);return e}s(kE,"removeZeroes");var ge=class t{static{s(this,"Duration")}constructor(e){let r=e.conversionAccuracy==="longterm"||!1,n=r?cR:uR;e.matrix&&(n=e.matrix),this.values=e.values,this.loc=e.loc||ee.create(),this.conversionAccuracy=r?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n,this.isLuxonDuration=!0}static fromMillis(e,r){return t.fromObject({milliseconds:e},r)}static fromObject(e,r={}){if(e==null||typeof e!="object")throw new _e(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new t({values:Aa(e,t.normalizeUnit),loc:ee.fromObject(r),conversionAccuracy:r.conversionAccuracy,matrix:r.matrix})}static fromDurationLike(e){if(or(e))return t.fromMillis(e);if(t.isDuration(e))return e;if(typeof e=="object")return t.fromObject(e);throw new _e(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,r){let[n]=tR(e);return n?t.fromObject(n,r):t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,r){let[n]=nR(e);return n?t.fromObject(n,r):t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,r=null){if(!e)throw new _e("need to specify a reason the Duration is invalid");let n=e instanceof $e?e:new $e(e,r);if(re.throwOnInvalid)throw new vl(n);return new t({invalid:n})}static normalizeUnit(e){let r={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[e&&e.toLowerCase()];if(!r)throw new Ea(e);return r}static isDuration(e){return e&&e.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(e,r={}){let n={...r,floor:r.round!==!1&&r.floor!==!1};return this.isValid?We.create(this.loc,n).formatDurationFromString(this,e):UE}toHuman(e={}){if(!this.isValid)return UE;let r=e.showZeros!==!1,n=qr.map(i=>{let o=this.values[i];return Q(o)||o===0&&!r?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...e,unit:i.slice(0,-1)}).format(o)}).filter(i=>i);return this.loc.listFormatter({type:"conjunction",style:e.listStyle||"narrow",...e}).format(n)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let e="P";return this.years!==0&&(e+=this.years+"Y"),(this.months!==0||this.quarters!==0)&&(e+=this.months+this.quarters*3+"M"),this.weeks!==0&&(e+=this.weeks+"W"),this.days!==0&&(e+=this.days+"D"),(this.hours!==0||this.minutes!==0||this.seconds!==0||this.milliseconds!==0)&&(e+="T"),this.hours!==0&&(e+=this.hours+"H"),this.minutes!==0&&(e+=this.minutes+"M"),(this.seconds!==0||this.milliseconds!==0)&&(e+=zl(this.seconds+this.milliseconds/1e3,3)+"S"),e==="P"&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;let r=this.toMillis();return r<0||r>=864e5?null:(e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...e,includeOffset:!1},oe.fromMillis(r,{zone:"UTC"}).toISOTime(e))}toJSON(){return this.toISO()}toString(){return this.toISO()}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Duration { values: ${JSON.stringify(this.values)} }`:`Duration { Invalid, reason: ${this.invalidReason} }`}toMillis(){return this.isValid?Fg(this.matrix,this.values):NaN}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;let r=t.fromDurationLike(e),n={};for(let i of qr)(Fn(r.values,i)||Fn(this.values,i))&&(n[i]=r.get(i)+this.get(i));return Lt(this,{values:n},!0)}minus(e){if(!this.isValid)return this;let r=t.fromDurationLike(e);return this.plus(r.negate())}mapUnits(e){if(!this.isValid)return this;let r={};for(let n of Object.keys(this.values))r[n]=Og(e(this.values[n],n));return Lt(this,{values:r},!0)}get(e){return this[t.normalizeUnit(e)]}set(e){if(!this.isValid)return this;let r={...this.values,...Aa(e,t.normalizeUnit)};return Lt(this,{values:r})}reconfigure({locale:e,numberingSystem:r,conversionAccuracy:n,matrix:i}={}){let a={loc:this.loc.clone({locale:e,numberingSystem:r}),matrix:i,conversionAccuracy:n};return Lt(this,a)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;let e=this.toObject();return LE(this.matrix,e),Lt(this,{values:e},!0)}rescale(){if(!this.isValid)return this;let e=kE(this.normalize().shiftToAll().toObject());return Lt(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(a=>t.normalizeUnit(a));let r={},n={},i=this.toObject(),o;for(let a of qr)if(e.indexOf(a)>=0){o=a;let u=0;for(let l in n)u+=this.matrix[l][a]*n[l],n[l]=0;or(i[a])&&(u+=i[a]);let c=Math.trunc(u);r[a]=c,n[a]=(u*1e3-c*1e3)/1e3}else or(i[a])&&(n[a]=i[a]);for(let a in n)n[a]!==0&&(r[o]+=a===o?n[a]:n[a]/this.matrix[o][a]);return LE(this.matrix,r),Lt(this,{values:r},!0)}shiftToAll(){return this.isValid?this.shiftTo("years","months","weeks","days","hours","minutes","seconds","milliseconds"):this}negate(){if(!this.isValid)return this;let e={};for(let r of Object.keys(this.values))e[r]=this.values[r]===0?0:-this.values[r];return Lt(this,{values:e},!0)}removeZeros(){if(!this.isValid)return this;let e=kE(this.values);return Lt(this,{values:e},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(e){if(!this.isValid||!e.isValid||!this.loc.equals(e.loc))return!1;function r(n,i){return n===void 0||n===0?i===void 0||i===0:n===i}s(r,"eq");for(let n of qr)if(!r(this.values[n],e.values[n]))return!1;return!0}},Un="Invalid Interval";function dR(t,e){return!t||!t.isValid?Qr.invalid("missing or invalid start"):!e||!e.isValid?Qr.invalid("missing or invalid end"):e<t?Qr.invalid("end before start",`The end of an interval must be after its start, but you had start=${t.toISO()} and end=${e.toISO()}`):null}s(dR,"validateStartEnd");var Qr=class t{static{s(this,"Interval")}constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,r=null){if(!e)throw new _e("need to specify a reason the Interval is invalid");let n=e instanceof $e?e:new $e(e,r);if(re.throwOnInvalid)throw new xl(n);return new t({invalid:n})}static fromDateTimes(e,r){let n=ns(e),i=ns(r),o=dR(n,i);return o??new t({start:n,end:i})}static after(e,r){let n=ge.fromDurationLike(r),i=ns(e);return t.fromDateTimes(i,i.plus(n))}static before(e,r){let n=ge.fromDurationLike(r),i=ns(e);return t.fromDateTimes(i.minus(n),i)}static fromISO(e,r){let[n,i]=(e||"").split("/",2);if(n&&i){let o,a;try{o=oe.fromISO(n,r),a=o.isValid}catch{a=!1}let u,c;try{u=oe.fromISO(i,r),c=u.isValid}catch{c=!1}if(a&&c)return t.fromDateTimes(o,u);if(a){let l=ge.fromISO(i,r);if(l.isValid)return t.after(o,l)}else if(c){let l=ge.fromISO(n,r);if(l.isValid)return t.before(u,l)}}return t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static isInterval(e){return e&&e.isLuxonInterval||!1}get start(){return this.isValid?this.s:null}get end(){return this.isValid?this.e:null}get lastDateTime(){return this.isValid&&this.e?this.e.minus(1):null}get isValid(){return this.invalidReason===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}length(e="milliseconds"){return this.isValid?this.toDuration(e).get(e):NaN}count(e="milliseconds",r){if(!this.isValid)return NaN;let n=this.start.startOf(e,r),i;return r!=null&&r.useLocaleWeeks?i=this.end.reconfigure({locale:n.locale}):i=this.end,i=i.startOf(e,r),Math.floor(i.diff(n,e).get(e))+(i.valueOf()!==this.end.valueOf())}hasSame(e){return this.isValid?this.isEmpty()||this.e.minus(1).hasSame(this.s,e):!1}isEmpty(){return this.s.valueOf()===this.e.valueOf()}isAfter(e){return this.isValid?this.s>e:!1}isBefore(e){return this.isValid?this.e<=e:!1}contains(e){return this.isValid?this.s<=e&&this.e>e:!1}set({start:e,end:r}={}){return this.isValid?t.fromDateTimes(e||this.s,r||this.e):this}splitAt(...e){if(!this.isValid)return[];let r=e.map(ns).filter(a=>this.contains(a)).sort((a,u)=>a.toMillis()-u.toMillis()),n=[],{s:i}=this,o=0;for(;i<this.e;){let a=r[o]||this.e,u=+a>+this.e?this.e:a;n.push(t.fromDateTimes(i,u)),i=u,o+=1}return n}splitBy(e){let r=ge.fromDurationLike(e);if(!this.isValid||!r.isValid||r.as("milliseconds")===0)return[];let{s:n}=this,i=1,o,a=[];for(;n<this.e;){let u=this.start.plus(r.mapUnits(c=>c*i));o=+u>+this.e?this.e:u,a.push(t.fromDateTimes(n,o)),n=o,i+=1}return a}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s<e.e}abutsStart(e){return this.isValid?+this.e==+e.s:!1}abutsEnd(e){return this.isValid?+e.e==+this.s:!1}engulfs(e){return this.isValid?this.s<=e.s&&this.e>=e.e:!1}equals(e){return!this.isValid||!e.isValid?!1:this.s.equals(e.s)&&this.e.equals(e.e)}intersection(e){if(!this.isValid)return this;let r=this.s>e.s?this.s:e.s,n=this.e<e.e?this.e:e.e;return r>=n?null:t.fromDateTimes(r,n)}union(e){if(!this.isValid)return this;let r=this.s<e.s?this.s:e.s,n=this.e>e.e?this.e:e.e;return t.fromDateTimes(r,n)}static merge(e){let[r,n]=e.sort((i,o)=>i.s-o.s).reduce(([i,o],a)=>o?o.overlaps(a)||o.abutsStart(a)?[i,o.union(a)]:[i.concat([o]),a]:[i,a],[[],null]);return n&&r.push(n),r}static xor(e){let r=null,n=0,i=[],o=e.map(c=>[{time:c.s,type:"s"},{time:c.e,type:"e"}]),a=Array.prototype.concat(...o),u=a.sort((c,l)=>c.time-l.time);for(let c of u)n+=c.type==="s"?1:-1,n===1?r=c.time:(r&&+r!=+c.time&&i.push(t.fromDateTimes(r,c.time)),r=null);return t.merge(i)}difference(...e){return t.xor([this].concat(e)).map(r=>this.intersection(r)).filter(r=>r&&!r.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} \u2013 ${this.e.toISO()})`:Un}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Interval { start: ${this.s.toISO()}, end: ${this.e.toISO()} }`:`Interval { Invalid, reason: ${this.invalidReason} }`}toLocaleString(e=ga,r={}){return this.isValid?We.create(this.s.loc.clone(r),e).formatInterval(this):Un}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:Un}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:Un}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:Un}toFormat(e,{separator:r=" \u2013 "}={}){return this.isValid?`${this.s.toFormat(e)}${r}${this.e.toFormat(e)}`:Un}toDuration(e,r){return this.isValid?this.e.diff(this.s,e,r):ge.invalid(this.invalidReason)}mapEndpoints(e){return t.fromDateTimes(e(this.s),e(this.e))}},Kr=class{static{s(this,"Info")}static hasDST(e=re.defaultZone){let r=oe.now().setZone(e).set({month:12});return!e.isUniversal&&r.offset!==r.set({month:6}).offset}static isValidIANAZone(e){return Mt.isValidZone(e)}static normalizeZone(e){return ir(e,re.defaultZone)}static getStartOfWeek({locale:e=null,locObj:r=null}={}){return(r||ee.create(e)).getStartOfWeek()}static getMinimumDaysInFirstWeek({locale:e=null,locObj:r=null}={}){return(r||ee.create(e)).getMinDaysInFirstWeek()}static getWeekendWeekdays({locale:e=null,locObj:r=null}={}){return(r||ee.create(e)).getWeekendDays().slice()}static months(e="long",{locale:r=null,numberingSystem:n=null,locObj:i=null,outputCalendar:o="gregory"}={}){return(i||ee.create(r,n,o)).months(e)}static monthsFormat(e="long",{locale:r=null,numberingSystem:n=null,locObj:i=null,outputCalendar:o="gregory"}={}){return(i||ee.create(r,n,o)).months(e,!0)}static weekdays(e="long",{locale:r=null,numberingSystem:n=null,locObj:i=null}={}){return(i||ee.create(r,n,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:r=null,numberingSystem:n=null,locObj:i=null}={}){return(i||ee.create(r,n,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return ee.create(e).meridiems()}static eras(e="short",{locale:r=null}={}){return ee.create(r,null,"gregory").eras(e)}static features(){return{relative:Sg(),localeWeek:Ag()}}};function ME(t,e){let r=s(i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),"utcDayStart"),n=r(e)-r(t);return Math.floor(ge.fromMillis(n).as("days"))}s(ME,"dayDiff");function fR(t,e,r){let n=[["years",(c,l)=>l.year-c.year],["quarters",(c,l)=>l.quarter-c.quarter+(l.year-c.year)*4],["months",(c,l)=>l.month-c.month+(l.year-c.year)*12],["weeks",(c,l)=>{let d=ME(c,l);return(d-d%7)/7}],["days",ME]],i={},o=t,a,u;for(let[c,l]of n)r.indexOf(c)>=0&&(a=c,i[c]=l(t,e),u=o.plus(i),u>e?(i[c]--,t=o.plus(i),t>e&&(u=t,i[c]--,t=o.plus(i))):t=u);return[t,i,u,a]}s(fR,"highOrderDiffs");function pR(t,e,r,n){let[i,o,a,u]=fR(t,e,r),c=e-i,l=r.filter(f=>["hours","minutes","seconds","milliseconds"].indexOf(f)>=0);l.length===0&&(a<e&&(a=i.plus({[u]:1})),a!==i&&(o[u]=(o[u]||0)+c/(a-i)));let d=ge.fromObject(o,n);return l.length>0?ge.fromMillis(c,n).shiftTo(...l).plus(d):d}s(pR,"diff");var mR="missing Intl.DateTimeFormat.formatToParts support";function X(t,e=r=>r){return{regex:t,deser:([r])=>e(iD(r))}}s(X,"intUnit");var hR=String.fromCharCode(160),Bg=`[ ${hR}]`,Wg=new RegExp(Bg,"g");function ER(t){return t.replace(/\./g,"\\.?").replace(Wg,Bg)}s(ER,"fixListRegex");function FE(t){return t.replace(/\./g,"").replace(Wg," ").toLowerCase()}s(FE,"stripInsensitivities");function ut(t,e){return t===null?null:{regex:RegExp(t.map(ER).join("|")),deser:([r])=>t.findIndex(n=>FE(r)===FE(n))+e}}s(ut,"oneOf");function BE(t,e){return{regex:t,deser:([,r,n])=>wa(r,n),groups:e}}s(BE,"offset");function la(t){return{regex:t,deser:([e])=>e}}s(la,"simple");function gR(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}s(gR,"escapeToken");function yR(t,e){let r=at(e),n=at(e,"{2}"),i=at(e,"{3}"),o=at(e,"{4}"),a=at(e,"{6}"),u=at(e,"{1,2}"),c=at(e,"{1,3}"),l=at(e,"{1,6}"),d=at(e,"{1,9}"),f=at(e,"{2,4}"),p=at(e,"{4,6}"),m=s(y=>({regex:RegExp(gR(y.val)),deser:([S])=>S,literal:!0}),"literal"),g=s(y=>{if(t.literal)return m(y);switch(y.val){case"G":return ut(e.eras("short"),0);case"GG":return ut(e.eras("long"),0);case"y":return X(l);case"yy":return X(f,ql);case"yyyy":return X(o);case"yyyyy":return X(p);case"yyyyyy":return X(a);case"M":return X(u);case"MM":return X(n);case"MMM":return ut(e.months("short",!0),1);case"MMMM":return ut(e.months("long",!0),1);case"L":return X(u);case"LL":return X(n);case"LLL":return ut(e.months("short",!1),1);case"LLLL":return ut(e.months("long",!1),1);case"d":return X(u);case"dd":return X(n);case"o":return X(c);case"ooo":return X(i);case"HH":return X(n);case"H":return X(u);case"hh":return X(n);case"h":return X(u);case"mm":return X(n);case"m":return X(u);case"q":return X(u);case"qq":return X(n);case"s":return X(u);case"ss":return X(n);case"S":return X(c);case"SSS":return X(i);case"u":return la(d);case"uu":return la(u);case"uuu":return X(r);case"a":return ut(e.meridiems(),0);case"kkkk":return X(o);case"kk":return X(f,ql);case"W":return X(u);case"WW":return X(n);case"E":case"c":return X(r);case"EEE":return ut(e.weekdays("short",!1),1);case"EEEE":return ut(e.weekdays("long",!1),1);case"ccc":return ut(e.weekdays("short",!0),1);case"cccc":return ut(e.weekdays("long",!0),1);case"Z":case"ZZ":return BE(new RegExp(`([+-]${u.source})(?::(${n.source}))?`),2);case"ZZZ":return BE(new RegExp(`([+-]${u.source})(${n.source})?`),2);case"z":return la(/[a-z_+-/]{1,256}?/i);case" ":return la(/[^\S\n\r]/);default:return m(y)}},"unitate")(t)||{invalidReason:mR};return g.token=t,g}s(yR,"unitForToken");var TR={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour12:{numeric:"h","2-digit":"hh"},hour24:{numeric:"H","2-digit":"HH"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"},timeZoneName:{long:"ZZZZZ",short:"ZZZ"}};function SR(t,e,r){let{type:n,value:i}=t;if(n==="literal"){let c=/^\s+$/.test(i);return{literal:!c,val:c?" ":i}}let o=e[n],a=n;n==="hour"&&(e.hour12!=null?a=e.hour12?"hour12":"hour24":e.hourCycle!=null?e.hourCycle==="h11"||e.hourCycle==="h12"?a="hour12":a="hour24":a=r.hour12?"hour12":"hour24");let u=TR[a];if(typeof u=="object"&&(u=u[o]),u)return{literal:!1,val:u}}s(SR,"tokenForPart");function AR(t){return[`^${t.map(r=>r.regex).reduce((r,n)=>`${r}(${n.source})`,"")}$`,t]}s(AR,"buildRegex");function _R(t,e,r){let n=t.match(e);if(n){let i={},o=1;for(let a in r)if(Fn(r,a)){let u=r[a],c=u.groups?u.groups+1:1;!u.literal&&u.token&&(i[u.token.val[0]]=u.deser(n.slice(o,o+c))),o+=c}return[n,i]}else return[n,{}]}s(_R,"match");function OR(t){let e=s(o=>{switch(o){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}},"toField"),r=null,n;return Q(t.z)||(r=Mt.create(t.z)),Q(t.Z)||(r||(r=new Ve(t.Z)),n=t.Z),Q(t.q)||(t.M=(t.q-1)*3+1),Q(t.h)||(t.h<12&&t.a===1?t.h+=12:t.h===12&&t.a===0&&(t.h=0)),t.G===0&&t.y&&(t.y=-t.y),Q(t.u)||(t.S=Hl(t.u)),[Object.keys(t).reduce((o,a)=>{let u=e(a);return u&&(o[u]=t[a]),o},{}),r,n]}s(OR,"dateTimeFromMatches");var Il=null;function IR(){return Il||(Il=oe.fromMillis(1555555555555)),Il}s(IR,"getDummyDateTime");function wR(t,e){if(t.literal)return t;let r=We.macroTokenToFormatOpts(t.val),n=Vg(r,e);return n==null||n.includes(void 0)?t:n}s(wR,"maybeExpandMacroToken");function $g(t,e){return Array.prototype.concat(...t.map(r=>wR(r,e)))}s($g,"expandMacroTokens");var _a=class{static{s(this,"TokenParser")}constructor(e,r){if(this.locale=e,this.format=r,this.tokens=$g(We.parseFormat(r),e),this.units=this.tokens.map(n=>yR(n,e)),this.disqualifyingUnit=this.units.find(n=>n.invalidReason),!this.disqualifyingUnit){let[n,i]=AR(this.units);this.regex=RegExp(n,"i"),this.handlers=i}}explainFromTokens(e){if(this.isValid){let[r,n]=_R(e,this.regex,this.handlers),[i,o,a]=n?OR(n):[null,null,void 0];if(Fn(n,"a")&&Fn(n,"H"))throw new sr("Can't include meridiem when specifying 24-hour format");return{input:e,tokens:this.tokens,regex:this.regex,rawMatches:r,matches:n,result:i,zone:o,specificOffset:a}}else return{input:e,tokens:this.tokens,invalidReason:this.invalidReason}}get isValid(){return!this.disqualifyingUnit}get invalidReason(){return this.disqualifyingUnit?this.disqualifyingUnit.invalidReason:null}};function Gg(t,e,r){return new _a(t,r).explainFromTokens(e)}s(Gg,"explainFromTokens");function DR(t,e,r){let{result:n,zone:i,specificOffset:o,invalidReason:a}=Gg(t,e,r);return[n,i,o,a]}s(DR,"parseFromTokens");function Vg(t,e){if(!t)return null;let n=We.create(e,t).dtFormatter(IR()),i=n.formatToParts(),o=n.resolvedOptions();return i.map(a=>SR(a,t,o))}s(Vg,"formatOptsToTokens");var wl="Invalid DateTime",WE=864e13;function ss(t){return new $e("unsupported zone",`the zone "${t.name}" is not supported`)}s(ss,"unsupportedZone");function Dl(t){return t.weekData===null&&(t.weekData=Ta(t.c)),t.weekData}s(Dl,"possiblyCachedWeekData");function Rl(t){return t.localWeekData===null&&(t.localWeekData=Ta(t.c,t.loc.getMinDaysInFirstWeek(),t.loc.getStartOfWeek())),t.localWeekData}s(Rl,"possiblyCachedLocalWeekData");function Vr(t,e){let r={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new oe({...r,...e,old:r})}s(Vr,"clone");function qg(t,e,r){let n=t-e*60*1e3,i=r.offset(n);if(e===i)return[n,e];n-=(i-e)*60*1e3;let o=r.offset(n);return i===o?[n,i]:[t-Math.min(i,o)*60*1e3,Math.max(i,o)]}s(qg,"fixOffset");function da(t,e){t+=e*60*1e3;let r=new Date(t);return{year:r.getUTCFullYear(),month:r.getUTCMonth()+1,day:r.getUTCDate(),hour:r.getUTCHours(),minute:r.getUTCMinutes(),second:r.getUTCSeconds(),millisecond:r.getUTCMilliseconds()}}s(da,"tsToObj");function pa(t,e,r){return qg(Ia(t),e,r)}s(pa,"objToTS");function $E(t,e){let r=t.o,n=t.c.year+Math.trunc(e.years),i=t.c.month+Math.trunc(e.months)+Math.trunc(e.quarters)*3,o={...t.c,year:n,month:i,day:Math.min(t.c.day,Sa(n,i))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},a=ge.fromObject({years:e.years-Math.trunc(e.years),quarters:e.quarters-Math.trunc(e.quarters),months:e.months-Math.trunc(e.months),weeks:e.weeks-Math.trunc(e.weeks),days:e.days-Math.trunc(e.days),hours:e.hours,minutes:e.minutes,seconds:e.seconds,milliseconds:e.milliseconds}).as("milliseconds"),u=Ia(o),[c,l]=qg(u,r,t.zone);return a!==0&&(c+=a,l=t.zone.offset(c)),{ts:c,o:l}}s($E,"adjustTime");function Ln(t,e,r,n,i,o){let{setZone:a,zone:u}=r;if(t&&Object.keys(t).length!==0||e){let c=e||u,l=oe.fromObject(t,{...r,zone:c,specificOffset:o});return a?l:l.setZone(u)}else return oe.invalid(new $e("unparsable",`the input "${i}" can't be parsed as ${n}`))}s(Ln,"parseDataToDateTime");function fa(t,e,r=!0){return t.isValid?We.create(ee.create("en-US"),{allowZ:r,forceSimple:!0}).formatDateTimeFromString(t,e):null}s(fa,"toTechFormat");function Cl(t,e,r){let n=t.c.year>9999||t.c.year<0,i="";if(n&&t.c.year>=0&&(i+="+"),i+=me(t.c.year,n?6:4),r==="year")return i;if(e){if(i+="-",i+=me(t.c.month),r==="month")return i;i+="-"}else if(i+=me(t.c.month),r==="month")return i;return i+=me(t.c.day),i}s(Cl,"toISODate");function GE(t,e,r,n,i,o,a){let u=!r||t.c.millisecond!==0||t.c.second!==0,c="";switch(a){case"day":case"month":case"year":break;default:if(c+=me(t.c.hour),a==="hour")break;if(e){if(c+=":",c+=me(t.c.minute),a==="minute")break;u&&(c+=":",c+=me(t.c.second))}else{if(c+=me(t.c.minute),a==="minute")break;u&&(c+=me(t.c.second))}if(a==="second")break;u&&(!n||t.c.millisecond!==0)&&(c+=".",c+=me(t.c.millisecond,3))}return i&&(t.isOffsetFixed&&t.offset===0&&!o?c+="Z":t.o<0?(c+="-",c+=me(Math.trunc(-t.o/60)),c+=":",c+=me(Math.trunc(-t.o%60))):(c+="+",c+=me(Math.trunc(t.o/60)),c+=":",c+=me(Math.trunc(t.o%60)))),o&&(c+="["+t.zone.ianaName+"]"),c}s(GE,"toISOTime");var Kg={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},RR={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},CR={ordinal:1,hour:0,minute:0,second:0,millisecond:0},ma=["year","month","day","hour","minute","second","millisecond"],bR=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],xR=["year","ordinal","hour","minute","second","millisecond"];function ha(t){let e={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",quarter:"quarter",quarters:"quarter",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[t.toLowerCase()];if(!e)throw new Ea(t);return e}s(ha,"normalizeUnit");function VE(t){switch(t.toLowerCase()){case"localweekday":case"localweekdays":return"localWeekday";case"localweeknumber":case"localweeknumbers":return"localWeekNumber";case"localweekyear":case"localweekyears":return"localWeekYear";default:return ha(t)}}s(VE,"normalizeUnitWithLocalWeeks");function vR(t){if(os===void 0&&(os=re.now()),t.type!=="iana")return t.offset(os);let e=t.name,r=Kl.get(e);return r===void 0&&(r=t.offset(os),Kl.set(e,r)),r}s(vR,"guessOffsetForZone");function qE(t,e){let r=ir(e.zone,re.defaultZone);if(!r.isValid)return oe.invalid(ss(r));let n=ee.fromObject(e),i,o;if(Q(t.year))i=re.now();else{for(let c of ma)Q(t[c])&&(t[c]=Kg[c]);let a=yg(t)||Tg(t);if(a)return oe.invalid(a);let u=vR(r);[i,o]=pa(t,u,r)}return new oe({ts:i,zone:r,loc:n,o})}s(qE,"quickDT");function KE(t,e,r){let n=Q(r.round)?!0:r.round,i=Q(r.rounding)?"trunc":r.rounding,o=s((u,c)=>(u=zl(u,n||r.calendary?0:2,r.calendary?"round":i),e.loc.clone(r).relFormatter(r).format(u,c)),"format"),a=s(u=>r.calendary?e.hasSame(t,u)?0:e.startOf(u).diff(t.startOf(u),u).get(u):e.diff(t,u).get(u),"differ");if(r.unit)return o(a(r.unit),r.unit);for(let u of r.units){let c=a(u);if(Math.abs(c)>=1)return o(c,u)}return o(t>e?-0:0,r.units[r.units.length-1])}s(KE,"diffRelative");function QE(t){let e={},r;return t.length>0&&typeof t[t.length-1]=="object"?(e=t[t.length-1],r=Array.from(t).slice(0,t.length-1)):r=Array.from(t),[e,r]}s(QE,"lastOpts");var os,Kl=new Map,oe=class t{static{s(this,"DateTime")}constructor(e){let r=e.zone||re.defaultZone,n=e.invalid||(Number.isNaN(e.ts)?new $e("invalid input"):null)||(r.isValid?null:ss(r));this.ts=Q(e.ts)?re.now():e.ts;let i=null,o=null;if(!n)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(r))[i,o]=[e.old.c,e.old.o];else{let u=or(e.o)&&!e.old?e.o:r.offset(this.ts);i=da(this.ts,u),n=Number.isNaN(i.year)?new $e("invalid input"):null,i=n?null:i,o=n?null:u}this._zone=r,this.loc=e.loc||ee.create(),this.invalid=n,this.weekData=null,this.localWeekData=null,this.c=i,this.o=o,this.isLuxonDateTime=!0}static now(){return new t({})}static local(){let[e,r]=QE(arguments),[n,i,o,a,u,c,l]=r;return qE({year:n,month:i,day:o,hour:a,minute:u,second:c,millisecond:l},e)}static utc(){let[e,r]=QE(arguments),[n,i,o,a,u,c,l]=r;return e.zone=Ve.utcInstance,qE({year:n,month:i,day:o,hour:a,minute:u,second:c,millisecond:l},e)}static fromJSDate(e,r={}){let n=cD(e)?e.valueOf():NaN;if(Number.isNaN(n))return t.invalid("invalid input");let i=ir(r.zone,re.defaultZone);return i.isValid?new t({ts:n,zone:i,loc:ee.fromObject(r)}):t.invalid(ss(i))}static fromMillis(e,r={}){if(or(e))return e<-WE||e>WE?t.invalid("Timestamp out of range"):new t({ts:e,zone:ir(r.zone,re.defaultZone),loc:ee.fromObject(r)});throw new _e(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,r={}){if(or(e))return new t({ts:e*1e3,zone:ir(r.zone,re.defaultZone),loc:ee.fromObject(r)});throw new _e("fromSeconds requires a numerical input")}static fromObject(e,r={}){e=e||{};let n=ir(r.zone,re.defaultZone);if(!n.isValid)return t.invalid(ss(n));let i=ee.fromObject(r),o=Aa(e,VE),{minDaysInFirstWeek:a,startOfWeek:u}=bE(o,i),c=re.now(),l=Q(r.specificOffset)?n.offset(c):r.specificOffset,d=!Q(o.ordinal),f=!Q(o.year),p=!Q(o.month)||!Q(o.day),m=f||p,h=o.weekYear||o.weekNumber;if((m||d)&&h)throw new sr("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(p&&d)throw new sr("Can't mix ordinal dates with month/day");let g=h||o.weekday&&!m,y,S,O=da(c,l);g?(y=bR,S=RR,O=Ta(O,a,u)):d?(y=xR,S=CR,O=Ol(O)):(y=ma,S=Kg);let _=!1;for(let Y of y){let bt=o[Y];Q(bt)?_?o[Y]=S[Y]:o[Y]=O[Y]:_=!0}let w=g?oD(o,a,u):d?aD(o):yg(o),T=w||Tg(o);if(T)return t.invalid(T);let I=g?RE(o,a,u):d?CE(o):o,[F,P]=pa(I,l,n),M=new t({ts:F,zone:n,o:P,loc:i});return o.weekday&&m&&e.weekday!==M.weekday?t.invalid("mismatched weekday",`you can't specify both a weekday of ${o.weekday} and a date of ${M.toISO()}`):M.isValid?M:t.invalid(M.invalid)}static fromISO(e,r={}){let[n,i]=ZD(e);return Ln(n,i,r,"ISO 8601",e)}static fromRFC2822(e,r={}){let[n,i]=XD(e);return Ln(n,i,r,"RFC 2822",e)}static fromHTTP(e,r={}){let[n,i]=eR(e);return Ln(n,i,r,"HTTP",r)}static fromFormat(e,r,n={}){if(Q(e)||Q(r))throw new _e("fromFormat requires an input string and a format");let{locale:i=null,numberingSystem:o=null}=n,a=ee.fromOpts({locale:i,numberingSystem:o,defaultToEN:!0}),[u,c,l,d]=DR(a,e,r);return d?t.invalid(d):Ln(u,c,n,`format ${r}`,e,l)}static fromString(e,r,n={}){return t.fromFormat(e,r,n)}static fromSQL(e,r={}){let[n,i]=aR(e);return Ln(n,i,r,"SQL",e)}static invalid(e,r=null){if(!e)throw new _e("need to specify a reason the DateTime is invalid");let n=e instanceof $e?e:new $e(e,r);if(re.throwOnInvalid)throw new bl(n);return new t({invalid:n})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}static parseFormatForOpts(e,r={}){let n=Vg(e,ee.fromObject(r));return n?n.map(i=>i?i.val:null).join(""):null}static expandFormat(e,r={}){return $g(We.parseFormat(e),ee.fromObject(r)).map(i=>i.val).join("")}static resetCache(){os=void 0,Kl.clear()}get(e){return this[e]}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?Dl(this).weekYear:NaN}get weekNumber(){return this.isValid?Dl(this).weekNumber:NaN}get weekday(){return this.isValid?Dl(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?Rl(this).weekday:NaN}get localWeekNumber(){return this.isValid?Rl(this).weekNumber:NaN}get localWeekYear(){return this.isValid?Rl(this).weekYear:NaN}get ordinal(){return this.isValid?Ol(this.c).ordinal:NaN}get monthShort(){return this.isValid?Kr.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?Kr.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?Kr.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?Kr.weekdays("long",{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:"short",locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:"long",locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return this.isOffsetFixed?!1:this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset}getPossibleOffsets(){if(!this.isValid||this.isOffsetFixed)return[this];let e=864e5,r=6e4,n=Ia(this.c),i=this.zone.offset(n-e),o=this.zone.offset(n+e),a=this.zone.offset(n-i*r),u=this.zone.offset(n-o*r);if(a===u)return[this];let c=n-a*r,l=n-u*r,d=da(c,a),f=da(l,u);return d.hour===f.hour&&d.minute===f.minute&&d.second===f.second&&d.millisecond===f.millisecond?[Vr(this,{ts:c}),Vr(this,{ts:l})]:[this]}get isInLeapYear(){return ls(this.year)}get daysInMonth(){return Sa(this.year,this.month)}get daysInYear(){return this.isValid?kn(this.year):NaN}get weeksInWeekYear(){return this.isValid?cs(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?cs(this.localWeekYear,this.loc.getMinDaysInFirstWeek(),this.loc.getStartOfWeek()):NaN}resolvedLocaleOptions(e={}){let{locale:r,numberingSystem:n,calendar:i}=We.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:r,numberingSystem:n,outputCalendar:i}}toUTC(e=0,r={}){return this.setZone(Ve.instance(e),r)}toLocal(){return this.setZone(re.defaultZone)}setZone(e,{keepLocalTime:r=!1,keepCalendarTime:n=!1}={}){if(e=ir(e,re.defaultZone),e.equals(this.zone))return this;if(e.isValid){let i=this.ts;if(r||n){let o=e.offset(this.ts),a=this.toObject();[i]=pa(a,o,e)}return Vr(this,{ts:i,zone:e})}else return t.invalid(ss(e))}reconfigure({locale:e,numberingSystem:r,outputCalendar:n}={}){let i=this.loc.clone({locale:e,numberingSystem:r,outputCalendar:n});return Vr(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;let r=Aa(e,VE),{minDaysInFirstWeek:n,startOfWeek:i}=bE(r,this.loc),o=!Q(r.weekYear)||!Q(r.weekNumber)||!Q(r.weekday),a=!Q(r.ordinal),u=!Q(r.year),c=!Q(r.month)||!Q(r.day),l=u||c,d=r.weekYear||r.weekNumber;if((l||a)&&d)throw new sr("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(c&&a)throw new sr("Can't mix ordinal dates with month/day");let f;o?f=RE({...Ta(this.c,n,i),...r},n,i):Q(r.ordinal)?(f={...this.toObject(),...r},Q(r.day)&&(f.day=Math.min(Sa(f.year,f.month),f.day))):f=CE({...Ol(this.c),...r});let[p,m]=pa(f,this.o,this.zone);return Vr(this,{ts:p,o:m})}plus(e){if(!this.isValid)return this;let r=ge.fromDurationLike(e);return Vr(this,$E(this,r))}minus(e){if(!this.isValid)return this;let r=ge.fromDurationLike(e).negate();return Vr(this,$E(this,r))}startOf(e,{useLocaleWeeks:r=!1}={}){if(!this.isValid)return this;let n={},i=ge.normalizeUnit(e);switch(i){case"years":n.month=1;case"quarters":case"months":n.day=1;case"weeks":case"days":n.hour=0;case"hours":n.minute=0;case"minutes":n.second=0;case"seconds":n.millisecond=0;break}if(i==="weeks")if(r){let o=this.loc.getStartOfWeek(),{weekday:a}=this;a<o&&(n.weekNumber=this.weekNumber-1),n.weekday=o}else n.weekday=1;if(i==="quarters"){let o=Math.ceil(this.month/3);n.month=(o-1)*3+1}return this.set(n)}endOf(e,r){return this.isValid?this.plus({[e]:1}).startOf(e,r).minus(1):this}toFormat(e,r={}){return this.isValid?We.create(this.loc.redefaultToEN(r)).formatDateTimeFromString(this,e):wl}toLocaleString(e=ga,r={}){return this.isValid?We.create(this.loc.clone(r),e).formatDateTime(this):wl}toLocaleParts(e={}){return this.isValid?We.create(this.loc.clone(e),e).formatDateTimeParts(this):[]}toISO({format:e="extended",suppressSeconds:r=!1,suppressMilliseconds:n=!1,includeOffset:i=!0,extendedZone:o=!1,precision:a="milliseconds"}={}){if(!this.isValid)return null;a=ha(a);let u=e==="extended",c=Cl(this,u,a);return ma.indexOf(a)>=3&&(c+="T"),c+=GE(this,u,r,n,i,o,a),c}toISODate({format:e="extended",precision:r="day"}={}){return this.isValid?Cl(this,e==="extended",ha(r)):null}toISOWeekDate(){return fa(this,"kkkk-'W'WW-c")}toISOTime({suppressMilliseconds:e=!1,suppressSeconds:r=!1,includeOffset:n=!0,includePrefix:i=!1,extendedZone:o=!1,format:a="extended",precision:u="milliseconds"}={}){return this.isValid?(u=ha(u),(i&&ma.indexOf(u)>=3?"T":"")+GE(this,a==="extended",r,e,n,o,u)):null}toRFC2822(){return fa(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return fa(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?Cl(this,!0):null}toSQLTime({includeOffset:e=!0,includeZone:r=!1,includeOffsetSpace:n=!0}={}){let i="HH:mm:ss.SSS";return(r||e)&&(n&&(i+=" "),r?i+="z":e&&(i+="ZZ")),fa(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():wl}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`DateTime { ts: ${this.toISO()}, zone: ${this.zone.name}, locale: ${this.locale} }`:`DateTime { Invalid, reason: ${this.invalidReason} }`}valueOf(){return this.toMillis()}toMillis(){return this.isValid?this.ts:NaN}toSeconds(){return this.isValid?this.ts/1e3:NaN}toUnixInteger(){return this.isValid?Math.floor(this.ts/1e3):NaN}toJSON(){return this.toISO()}toBSON(){return this.toJSDate()}toObject(e={}){if(!this.isValid)return{};let r={...this.c};return e.includeConfig&&(r.outputCalendar=this.outputCalendar,r.numberingSystem=this.loc.numberingSystem,r.locale=this.loc.locale),r}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(e,r="milliseconds",n={}){if(!this.isValid||!e.isValid)return ge.invalid("created by diffing an invalid DateTime");let i={locale:this.locale,numberingSystem:this.numberingSystem,...n},o=lD(r).map(ge.normalizeUnit),a=e.valueOf()>this.valueOf(),u=a?this:e,c=a?e:this,l=pR(u,c,o,i);return a?l.negate():l}diffNow(e="milliseconds",r={}){return this.diff(t.now(),e,r)}until(e){return this.isValid?Qr.fromDateTimes(this,e):this}hasSame(e,r,n){if(!this.isValid)return!1;let i=e.valueOf(),o=this.setZone(e.zone,{keepLocalTime:!0});return o.startOf(r,n)<=i&&i<=o.endOf(r,n)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(e={}){if(!this.isValid)return null;let r=e.base||t.fromObject({},{zone:this.zone}),n=e.padding?this<r?-e.padding:e.padding:0,i=["years","months","days","hours","minutes","seconds"],o=e.unit;return Array.isArray(e.unit)&&(i=e.unit,o=void 0),KE(r,this.plus(n),{...e,numeric:"always",units:i,unit:o})}toRelativeCalendar(e={}){return this.isValid?KE(e.base||t.fromObject({},{zone:this.zone}),this,{...e,numeric:"auto",units:["years","months","days"],calendary:!0}):null}static min(...e){if(!e.every(t.isDateTime))throw new _e("min requires all arguments be DateTimes");return xE(e,r=>r.valueOf(),Math.min)}static max(...e){if(!e.every(t.isDateTime))throw new _e("max requires all arguments be DateTimes");return xE(e,r=>r.valueOf(),Math.max)}static fromFormatExplain(e,r,n={}){let{locale:i=null,numberingSystem:o=null}=n,a=ee.fromOpts({locale:i,numberingSystem:o,defaultToEN:!0});return Gg(a,e,r)}static fromStringExplain(e,r,n={}){return t.fromFormatExplain(e,r,n)}static buildFormatParser(e,r={}){let{locale:n=null,numberingSystem:i=null}=r,o=ee.fromOpts({locale:n,numberingSystem:i,defaultToEN:!0});return new _a(o,e)}static fromFormatParser(e,r,n={}){if(Q(e)||Q(r))throw new _e("fromFormatParser requires an input string and a format parser");let{locale:i=null,numberingSystem:o=null}=n,a=ee.fromOpts({locale:i,numberingSystem:o,defaultToEN:!0});if(!a.equals(r.locale))throw new _e(`fromFormatParser called with a locale of ${a}, but the format parser was created for ${r.locale}`);let{result:u,zone:c,specificOffset:l,invalidReason:d}=r.explainFromTokens(e);return d?t.invalid(d):Ln(u,c,n,`format ${r.format}`,e,l)}static get DATE_SHORT(){return ga}static get DATE_MED(){return jE}static get DATE_MED_WITH_WEEKDAY(){return $w}static get DATE_FULL(){return YE}static get DATE_HUGE(){return HE}static get TIME_SIMPLE(){return zE}static get TIME_WITH_SECONDS(){return JE}static get TIME_WITH_SHORT_OFFSET(){return ZE}static get TIME_WITH_LONG_OFFSET(){return XE}static get TIME_24_SIMPLE(){return eg}static get TIME_24_WITH_SECONDS(){return tg}static get TIME_24_WITH_SHORT_OFFSET(){return rg}static get TIME_24_WITH_LONG_OFFSET(){return ng}static get DATETIME_SHORT(){return ig}static get DATETIME_SHORT_WITH_SECONDS(){return sg}static get DATETIME_MED(){return og}static get DATETIME_MED_WITH_SECONDS(){return ag}static get DATETIME_MED_WITH_WEEKDAY(){return Gw}static get DATETIME_FULL(){return ug}static get DATETIME_FULL_WITH_SECONDS(){return cg}static get DATETIME_HUGE(){return lg}static get DATETIME_HUGE_WITH_SECONDS(){return dg}};function ns(t){if(oe.isDateTime(t))return t;if(t&&t.valueOf&&or(t.valueOf()))return oe.fromJSDate(t);if(t&&typeof t=="object")return oe.fromObject(t);throw new _e(`Unknown datetime argument: ${t}, of type ${typeof t}`)}s(ns,"friendlyDateTime");var PR="3.7.1";qe.DateTime=oe;qe.Duration=ge;qe.FixedOffsetZone=Ve;qe.IANAZone=Mt;qe.Info=Kr;qe.Interval=Qr;qe.InvalidZone=ya;qe.Settings=re;qe.SystemZone=us;qe.VERSION=PR;qe.Zone=ar});var Yg=K((mF,jg)=>{"use strict";var jr=Qg();j.prototype.addYear=function(){this._date=this._date.plus({years:1})};j.prototype.addMonth=function(){this._date=this._date.plus({months:1}).startOf("month")};j.prototype.addDay=function(){this._date=this._date.plus({days:1}).startOf("day")};j.prototype.addHour=function(){var t=this._date;this._date=this._date.plus({hours:1}).startOf("hour"),this._date<=t&&(this._date=this._date.plus({hours:1}))};j.prototype.addMinute=function(){var t=this._date;this._date=this._date.plus({minutes:1}).startOf("minute"),this._date<t&&(this._date=this._date.plus({hours:1}))};j.prototype.addSecond=function(){var t=this._date;this._date=this._date.plus({seconds:1}).startOf("second"),this._date<t&&(this._date=this._date.plus({hours:1}))};j.prototype.subtractYear=function(){this._date=this._date.minus({years:1})};j.prototype.subtractMonth=function(){this._date=this._date.minus({months:1}).endOf("month").startOf("second")};j.prototype.subtractDay=function(){this._date=this._date.minus({days:1}).endOf("day").startOf("second")};j.prototype.subtractHour=function(){var t=this._date;this._date=this._date.minus({hours:1}).endOf("hour").startOf("second"),this._date>=t&&(this._date=this._date.minus({hours:1}))};j.prototype.subtractMinute=function(){var t=this._date;this._date=this._date.minus({minutes:1}).endOf("minute").startOf("second"),this._date>t&&(this._date=this._date.minus({hours:1}))};j.prototype.subtractSecond=function(){var t=this._date;this._date=this._date.minus({seconds:1}).startOf("second"),this._date>t&&(this._date=this._date.minus({hours:1}))};j.prototype.getDate=function(){return this._date.day};j.prototype.getFullYear=function(){return this._date.year};j.prototype.getDay=function(){var t=this._date.weekday;return t==7?0:t};j.prototype.getMonth=function(){return this._date.month-1};j.prototype.getHours=function(){return this._date.hour};j.prototype.getMinutes=function(){return this._date.minute};j.prototype.getSeconds=function(){return this._date.second};j.prototype.getMilliseconds=function(){return this._date.millisecond};j.prototype.getTime=function(){return this._date.valueOf()};j.prototype.getUTCDate=function(){return this._getUTC().day};j.prototype.getUTCFullYear=function(){return this._getUTC().year};j.prototype.getUTCDay=function(){var t=this._getUTC().weekday;return t==7?0:t};j.prototype.getUTCMonth=function(){return this._getUTC().month-1};j.prototype.getUTCHours=function(){return this._getUTC().hour};j.prototype.getUTCMinutes=function(){return this._getUTC().minute};j.prototype.getUTCSeconds=function(){return this._getUTC().second};j.prototype.toISOString=function(){return this._date.toUTC().toISO()};j.prototype.toJSON=function(){return this._date.toJSON()};j.prototype.setDate=function(t){this._date=this._date.set({day:t})};j.prototype.setFullYear=function(t){this._date=this._date.set({year:t})};j.prototype.setDay=function(t){this._date=this._date.set({weekday:t})};j.prototype.setMonth=function(t){this._date=this._date.set({month:t+1})};j.prototype.setHours=function(t){this._date=this._date.set({hour:t})};j.prototype.setMinutes=function(t){this._date=this._date.set({minute:t})};j.prototype.setSeconds=function(t){this._date=this._date.set({second:t})};j.prototype.setMilliseconds=function(t){this._date=this._date.set({millisecond:t})};j.prototype._getUTC=function(){return this._date.toUTC()};j.prototype.toString=function(){return this.toDate().toString()};j.prototype.toDate=function(){return this._date.toJSDate()};j.prototype.isLastDayOfMonth=function(){var t=this._date.plus({days:1}).startOf("day");return this._date.month!==t.month};j.prototype.isLastWeekdayOfMonth=function(){var t=this._date.plus({days:7}).startOf("day");return this._date.month!==t.month};function j(t,e){var r={zone:e};if(t?t instanceof j?this._date=t._date:t instanceof Date?this._date=jr.DateTime.fromJSDate(t,r):typeof t=="number"?this._date=jr.DateTime.fromMillis(t,r):typeof t=="string"&&(this._date=jr.DateTime.fromISO(t,r),this._date.isValid||(this._date=jr.DateTime.fromRFC2822(t,r)),this._date.isValid||(this._date=jr.DateTime.fromSQL(t,r)),this._date.isValid||(this._date=jr.DateTime.fromFormat(t,"EEE, d MMM yyyy HH:mm:ss",r))):this._date=jr.DateTime.local(),!this._date||!this._date.isValid)throw new Error("CronDate: unhandled timestamp: "+JSON.stringify(t));e&&e!==this._date.zoneName&&(this._date=this._date.setZone(e))}s(j,"CronDate");jg.exports=j});var Jg=K((EF,zg)=>{"use strict";function Yr(t){return{start:t,count:1}}s(Yr,"buildRange");function Hg(t,e){t.end=e,t.step=e-t.start,t.count=2}s(Hg,"completeRangeWithItem");function ed(t,e,r){e&&(e.count===2?(t.push(Yr(e.start)),t.push(Yr(e.end))):t.push(e)),r&&t.push(r)}s(ed,"finalizeCurrentRange");function NR(t){for(var e=[],r=void 0,n=0;n<t.length;n++){var i=t[n];typeof i!="number"?(ed(e,r,Yr(i)),r=void 0):r?r.count===1?Hg(r,i):r.step===i-r.end?(r.count++,r.end=i):r.count===2?(e.push(Yr(r.start)),r=Yr(r.end),Hg(r,i)):(ed(e,r),r=Yr(i)):r=Yr(i)}return ed(e,r),e}s(NR,"compactField");zg.exports=NR});var Xg=K((yF,Zg)=>{"use strict";var UR=Jg();function LR(t,e,r){var n=UR(t);if(n.length===1){var i=n[0],o=i.step;if(o===1&&i.start===e&&i.end===r)return"*";if(o!==1&&i.start===e&&i.end===r-o+1)return"*/"+o}for(var a=[],u=0,c=n.length;u<c;++u){var l=n[u];if(l.count===1){a.push(l.start);continue}var o=l.step;if(l.step===1){a.push(l.start+"-"+l.end);continue}var d=l.start==0?l.count-1:l.count;l.step*d>l.end?a=a.concat(Array.from({length:l.end-l.start+1}).map(function(p,m){var h=l.start+m;return(h-l.start)%l.step===0?h:null}).filter(function(p){return p!=null})):l.end===r-l.step+1?a.push(l.start+"/"+l.step):a.push(l.start+"-"+l.end+"/"+l.step)}return a.join(",")}s(LR,"stringifyField");Zg.exports=LR});var ry=K((SF,ty)=>{"use strict";var Hr=Yg(),kR=Xg(),ey=1e4;function U(t,e){this._options=e,this._utc=e.utc||!1,this._tz=this._utc?"UTC":e.tz,this._currentDate=new Hr(e.currentDate,this._tz),this._startDate=e.startDate?new Hr(e.startDate,this._tz):null,this._endDate=e.endDate?new Hr(e.endDate,this._tz):null,this._isIterator=e.iterator||!1,this._hasIterated=!1,this._nthDayOfWeek=e.nthDayOfWeek||0,this.fields=U._freezeFields(t)}s(U,"CronExpression");U.map=["second","minute","hour","dayOfMonth","month","dayOfWeek"];U.predefined={"@yearly":"0 0 1 1 *","@monthly":"0 0 1 * *","@weekly":"0 0 * * 0","@daily":"0 0 * * *","@hourly":"0 * * * *"};U.constraints=[{min:0,max:59,chars:[]},{min:0,max:59,chars:[]},{min:0,max:23,chars:[]},{min:1,max:31,chars:["L"]},{min:1,max:12,chars:[]},{min:0,max:7,chars:["L"]}];U.daysInMonth=[31,29,31,30,31,30,31,31,30,31,30,31];U.aliases={month:{jan:1,feb:2,mar:3,apr:4,may:5,jun:6,jul:7,aug:8,sep:9,oct:10,nov:11,dec:12},dayOfWeek:{sun:0,mon:1,tue:2,wed:3,thu:4,fri:5,sat:6}};U.parseDefaults=["0","*","*","*","*","*"];U.standardValidCharacters=/^[,*\d/-]+$/;U.dayOfWeekValidCharacters=/^[?,*\dL#/-]+$/;U.dayOfMonthValidCharacters=/^[?,*\dL/-]+$/;U.validCharacters={second:U.standardValidCharacters,minute:U.standardValidCharacters,hour:U.standardValidCharacters,dayOfMonth:U.dayOfMonthValidCharacters,month:U.standardValidCharacters,dayOfWeek:U.dayOfWeekValidCharacters};U._isValidConstraintChar=s(function(e,r){return typeof r!="string"?!1:e.chars.some(function(n){return r.indexOf(n)>-1})},"_isValidConstraintChar");U._parseField=s(function(e,r,n){switch(e){case"month":case"dayOfWeek":var i=U.aliases[e];r=r.replace(/[a-z]{3}/gi,function(c){if(c=c.toLowerCase(),typeof i[c]<"u")return i[c];throw new Error('Validation error, cannot resolve alias "'+c+'"')});break}if(!U.validCharacters[e].test(r))throw new Error("Invalid characters, got value: "+r);r.indexOf("*")!==-1?r=r.replace(/\*/g,n.min+"-"+n.max):r.indexOf("?")!==-1&&(r=r.replace(/\?/g,n.min+"-"+n.max));function o(c){var l=[];function d(h){if(h instanceof Array)for(var g=0,y=h.length;g<y;g++){var S=h[g];if(U._isValidConstraintChar(n,S)){l.push(S);continue}if(typeof S!="number"||Number.isNaN(S)||S<n.min||S>n.max)throw new Error("Constraint error, got value "+S+" expected range "+n.min+"-"+n.max);l.push(S)}else{if(U._isValidConstraintChar(n,h)){l.push(h);return}var O=+h;if(Number.isNaN(O)||O<n.min||O>n.max)throw new Error("Constraint error, got value "+h+" expected range "+n.min+"-"+n.max);e==="dayOfWeek"&&(O=O%7),l.push(O)}}s(d,"handleResult");var f=c.split(",");if(!f.every(function(h){return h.length>0}))throw new Error("Invalid list value format");if(f.length>1)for(var p=0,m=f.length;p<m;p++)d(a(f[p]));else d(a(c));return l.sort(U._sortCompareFn),l}s(o,"parseSequence");function a(c){var l=1,d=c.split("/");if(d.length>2)throw new Error("Invalid repeat: "+c);return d.length>1?(d[0]==+d[0]&&(d=[d[0]+"-"+n.max,d[1]]),u(d[0],d[d.length-1])):u(c,l)}s(a,"parseRepeat");function u(c,l){var d=[],f=c.split("-");if(f.length>1){if(f.length<2)return+c;if(!f[0].length){if(!f[1].length)throw new Error("Invalid range: "+c);return+c}var p=+f[0],m=+f[1];if(Number.isNaN(p)||Number.isNaN(m)||p<n.min||m>n.max)throw new Error("Constraint error, got range "+p+"-"+m+" expected range "+n.min+"-"+n.max);if(p>m)throw new Error("Invalid range: "+c);var h=+l;if(Number.isNaN(h)||h<=0)throw new Error("Constraint error, cannot repeat at every "+h+" time.");e==="dayOfWeek"&&m%7===0&&d.push(0);for(var g=p,y=m;g<=y;g++){var S=d.indexOf(g)!==-1;!S&&h>0&&h%l===0?(h=1,d.push(g)):h++}return d}return Number.isNaN(+c)?c:+c}return s(u,"parseRange"),o(r)},"_parseField");U._sortCompareFn=function(t,e){var r=typeof t=="number",n=typeof e=="number";return r&&n?t-e:!r&&n?1:r&&!n?-1:t.localeCompare(e)};U._handleMaxDaysInMonth=function(t){if(t.month.length===1){var e=U.daysInMonth[t.month[0]-1];if(t.dayOfMonth[0]>e)throw new Error("Invalid explicit day of month definition");return t.dayOfMonth.filter(function(r){return r==="L"?!0:r<=e}).sort(U._sortCompareFn)}};U._freezeFields=function(t){for(var e=0,r=U.map.length;e<r;++e){var n=U.map[e],i=t[n];t[n]=Object.freeze(i)}return Object.freeze(t)};U.prototype._applyTimezoneShift=function(t,e,r){if(r==="Month"||r==="Day"){var n=t.getTime();t[e+r]();var i=t.getTime();n===i&&(t.getMinutes()===0&&t.getSeconds()===0?t.addHour():t.getMinutes()===59&&t.getSeconds()===59&&t.subtractHour())}else{var o=t.getHours();t[e+r]();var a=t.getHours(),u=a-o;u===2?this.fields.hour.length!==24&&(this._dstStart=a):u===0&&t.getMinutes()===0&&t.getSeconds()===0&&this.fields.hour.length!==24&&(this._dstEnd=a)}};U.prototype._findSchedule=s(function(e){function r(S,O){for(var _=0,w=O.length;_<w;_++)if(O[_]>=S)return O[_]===S;return O[0]===S}s(r,"matchSchedule");function n(S,O){if(O<6){if(S.getDate()<8&&O===1)return!0;var _=S.getDate()%7?1:0,w=S.getDate()-S.getDate()%7,T=Math.floor(w/7)+_;return T===O}return!1}s(n,"isNthDayMatch");function i(S){return S.length>0&&S.some(function(O){return typeof O=="string"&&O.indexOf("L")>=0})}s(i,"isLInExpressions"),e=e||!1;var o=e?"subtract":"add",a=new Hr(this._currentDate,this._tz),u=this._startDate,c=this._endDate,l=a.getTime(),d=0;function f(S){return S.some(function(O){if(!i([O]))return!1;var _=Number.parseInt(O[0])%7;if(Number.isNaN(_))throw new Error("Invalid last weekday of the month expression: "+O);return a.getDay()===_&&a.isLastWeekdayOfMonth()})}for(s(f,"isLastWeekdayOfMonthMatch");d<ey;){if(d++,e){if(u&&a.getTime()-u.getTime()<0)throw new Error("Out of the timespan range")}else if(c&&c.getTime()-a.getTime()<0)throw new Error("Out of the timespan range");var p=r(a.getDate(),this.fields.dayOfMonth);i(this.fields.dayOfMonth)&&(p=p||a.isLastDayOfMonth());var m=r(a.getDay(),this.fields.dayOfWeek);i(this.fields.dayOfWeek)&&(m=m||f(this.fields.dayOfWeek));var h=this.fields.dayOfMonth.length>=U.daysInMonth[a.getMonth()],g=this.fields.dayOfWeek.length===U.constraints[5].max-U.constraints[5].min+1,y=a.getHours();if(!p&&(!m||g)){this._applyTimezoneShift(a,o,"Day");continue}if(!h&&g&&!p){this._applyTimezoneShift(a,o,"Day");continue}if(h&&!g&&!m){this._applyTimezoneShift(a,o,"Day");continue}if(this._nthDayOfWeek>0&&!n(a,this._nthDayOfWeek)){this._applyTimezoneShift(a,o,"Day");continue}if(!r(a.getMonth()+1,this.fields.month)){this._applyTimezoneShift(a,o,"Month");continue}if(r(y,this.fields.hour)){if(this._dstEnd===y&&!e){this._dstEnd=null,this._applyTimezoneShift(a,"add","Hour");continue}}else if(this._dstStart!==y){this._dstStart=null,this._applyTimezoneShift(a,o,"Hour");continue}else if(!r(y-1,this.fields.hour)){a[o+"Hour"]();continue}if(!r(a.getMinutes(),this.fields.minute)){this._applyTimezoneShift(a,o,"Minute");continue}if(!r(a.getSeconds(),this.fields.second)){this._applyTimezoneShift(a,o,"Second");continue}if(l===a.getTime()){o==="add"||a.getMilliseconds()===0?this._applyTimezoneShift(a,o,"Second"):a.setMilliseconds(0);continue}break}if(d>=ey)throw new Error("Invalid expression, loop limit exceeded");return this._currentDate=new Hr(a,this._tz),this._hasIterated=!0,a},"_findSchedule");U.prototype.next=s(function(){var e=this._findSchedule();return this._isIterator?{value:e,done:!this.hasNext()}:e},"next");U.prototype.prev=s(function(){var e=this._findSchedule(!0);return this._isIterator?{value:e,done:!this.hasPrev()}:e},"prev");U.prototype.hasNext=function(){var t=this._currentDate,e=this._hasIterated;try{return this._findSchedule(),!0}catch{return!1}finally{this._currentDate=t,this._hasIterated=e}};U.prototype.hasPrev=function(){var t=this._currentDate,e=this._hasIterated;try{return this._findSchedule(!0),!0}catch{return!1}finally{this._currentDate=t,this._hasIterated=e}};U.prototype.iterate=s(function(e,r){var n=[];if(e>=0)for(var i=0,o=e;i<o;i++)try{var a=this.next();n.push(a),r&&r(a,i)}catch{break}else for(var i=0,o=e;i>o;i--)try{var a=this.prev();n.push(a),r&&r(a,i)}catch{break}return n},"iterate");U.prototype.reset=s(function(e){this._currentDate=new Hr(e||this._options.currentDate)},"reset");U.prototype.stringify=s(function(e){for(var r=[],n=e?0:1,i=U.map.length;n<i;++n){var o=U.map[n],a=this.fields[o],u=U.constraints[n];o==="dayOfMonth"&&this.fields.month.length===1?u={min:1,max:U.daysInMonth[this.fields.month[0]-1]}:o==="dayOfWeek"&&(u={min:0,max:6},a=a[a.length-1]===7?a.slice(0,-1):a),r.push(kR(a,u.min,u.max))}return r.join(" ")},"stringify");U.parse=s(function(e,r){var n=this;typeof r=="function"&&(r={});function i(o,a){a||(a={}),typeof a.currentDate>"u"&&(a.currentDate=new Hr(void 0,n._tz)),U.predefined[o]&&(o=U.predefined[o]);var u=[],c=(o+"").trim().split(/\s+/);if(c.length>6)throw new Error("Invalid cron expression");for(var l=U.map.length-c.length,d=0,f=U.map.length;d<f;++d){var p=U.map[d],m=c[c.length>f?d:d-l];if(d<l||!m)u.push(U._parseField(p,U.parseDefaults[d],U.constraints[d]));else{var h=p==="dayOfWeek"?O(m):m;u.push(U._parseField(p,h,U.constraints[d]))}}for(var g={},d=0,f=U.map.length;d<f;d++){var y=U.map[d];g[y]=u[d]}var S=U._handleMaxDaysInMonth(g);return g.dayOfMonth=S||g.dayOfMonth,new U(g,a);function O(_){var w=_.split("#");if(w.length>1){var T=+w[w.length-1];if(/,/.test(_))throw new Error("Constraint error, invalid dayOfWeek `#` and `,` special characters are incompatible");if(/\//.test(_))throw new Error("Constraint error, invalid dayOfWeek `#` and `/` special characters are incompatible");if(/-/.test(_))throw new Error("Constraint error, invalid dayOfWeek `#` and `-` special characters are incompatible");if(w.length>2||Number.isNaN(T)||T<1||T>5)throw new Error("Constraint error, invalid dayOfWeek occurrence number (#)");return a.nthDayOfWeek=T,w[0]}return _}s(O,"parseNthDay")}return s(i,"parse"),i(e,r)},"parse");U.fieldsToExpression=s(function(e,r){function n(p,m,h){if(!m)throw new Error("Validation error, Field "+p+" is missing");if(m.length===0)throw new Error("Validation error, Field "+p+" contains no values");for(var g=0,y=m.length;g<y;g++){var S=m[g];if(!U._isValidConstraintChar(h,S)&&(typeof S!="number"||Number.isNaN(S)||S<h.min||S>h.max))throw new Error("Constraint error, got value "+S+" expected range "+h.min+"-"+h.max)}}s(n,"validateConstraints");for(var i={},o=0,a=U.map.length;o<a;++o){var u=U.map[o],c=e[u];n(u,c,U.constraints[o]);for(var l=[],d=-1;++d<c.length;)l[d]=c[d];if(c=l.sort(U._sortCompareFn).filter(function(p,m,h){return!m||p!==h[m-1]}),c.length!==l.length)throw new Error("Validation error, Field "+u+" contains duplicate values");i[u]=c}var f=U._handleMaxDaysInMonth(i);return i.dayOfMonth=f||i.dayOfMonth,new U(i,r||{})},"fieldsToExpression");ty.exports=U});var iy=K((_F,ny)=>{"use strict";var Ra=ry();function ur(){}s(ur,"CronParser");ur._parseEntry=s(function(e){var r=e.split(" ");if(r.length===6)return{interval:Ra.parse(e)};if(r.length>6)return{interval:Ra.parse(r.slice(0,6).join(" ")),command:r.slice(6,r.length)};throw new Error("Invalid entry: "+e)},"_parseEntry");ur.parseExpression=s(function(e,r){return Ra.parse(e,r)},"parseExpression");ur.fieldsToExpression=s(function(e,r){return Ra.fieldsToExpression(e,r)},"fieldsToExpression");ur.parseString=s(function(e){for(var r=e.split(`
5
+ `),n={variables:{},expressions:[],errors:{}},i=0,o=r.length;i<o;i++){var a=r[i],u=null,c=a.trim();if(c.length>0){if(c.match(/^#/))continue;if(u=c.match(/^(.*)=(.*)$/))n.variables[u[1]]=u[2];else{var l=null;try{l=ur._parseEntry("0 "+c),n.expressions.push(l.interval)}catch(d){n.errors[c]=d}}}}return n},"parseString");ur.parseFile=s(function(e,r){require("fs").readFile(e,function(n,i){if(n){r(n);return}return r(null,ur.parseString(i.toString()))})},"parseFile");ny.exports=ur});var F0={};N(F0,{AutomationViewMode:()=>Ua,BUDIBASE_DATASOURCE_TYPE:()=>Ad,BadRequestError:()=>xu,BudibaseError:()=>ui,Config:()=>Rd,Cookie:()=>zr,DEFAULT_BB_DATASOURCE_ID:()=>Dn,DEFAULT_EMPLOYEE_TABLE_ID:()=>wd,DEFAULT_EXPENSES_TABLE_ID:()=>Id,DEFAULT_INVENTORY_TABLE_ID:()=>Od,DEFAULT_JOBS_TABLE_ID:()=>_d,DEFAULT_TENANT_ID:()=>ae,DeprecatedViews:()=>qn,DesignDocuments:()=>Ts,DocumentType:()=>ce,Duration:()=>Ee,DurationType:()=>xf,EmailUnavailableError:()=>Yt,Endpoint:()=>Oc,EndpointGroup:()=>On,EndpointGroupList:()=>Lo,FeatureDisabledError:()=>Uu,ForbiddenError:()=>vu,GlobalRole:()=>Dd,HTTPError:()=>we,Header:()=>Fe,InternalTable:()=>xt,InvalidAPIKeyError:()=>ci,MAX_VALID_DATE:()=>Ma,MIN_VALID_DATE:()=>Ty,NotFoundError:()=>bu,NotImplementedError:()=>Pu,RedisClient:()=>Ce,SEPARATOR:()=>b,SQLITE_DESIGN_DOC_ID:()=>wt,SQS_DATASOURCE_INTERNAL:()=>Sd,StaticDatabases:()=>fe,UNICODE_MAX:()=>ve,USER_METADATA_PREFIX:()=>ys,UnexpectedError:()=>Cu,UsageLimitError:()=>Nu,UserStatus:()=>ka,ViewName:()=>lr,WORKSPACE_DEV:()=>La,WORKSPACE_DEV_PREFIX:()=>Ze,WORKSPACE_PREFIX:()=>Je,accounts:()=>mn,auth:()=>lm,blacklist:()=>mm,cache:()=>Io,configs:()=>Qt,constants:()=>Cd,context:()=>ue,csv:()=>Dm,db:()=>Er,docIds:()=>yf,docUpdates:()=>Em,encryption:()=>im,env:()=>E,errors:()=>ku,events:()=>fi,features:()=>Au,getPublicError:()=>Lu,init:()=>M0,installation:()=>Vu,locks:()=>yi,logging:()=>no,middleware:()=>cm,objectStore:()=>Hf,permissions:()=>Zp,platform:()=>ao,plugins:()=>fm,queue:()=>tp,redis:()=>pm,roles:()=>Jp,security:()=>pp,sessions:()=>Mu,setEnv:()=>As,sql:()=>wm,tenancy:()=>k0,timers:()=>cu,userUtils:()=>Rp,users:()=>mi,utils:()=>ei,withEnv:()=>Iy});module.exports=D_(F0);var Qt={};N(Qt,{analyticsEnabled:()=>Wu,generateConfigID:()=>ec,getAIConfig:()=>oL,getConfig:()=>rt,getDefaultGoogleConfig:()=>Mp,getGoogleConfig:()=>tc,getGoogleDatasourceConfig:()=>Wp,getOIDCConfig:()=>nL,getOIDCConfigById:()=>$p,getOIDCLogosDoc:()=>tL,getPlatformUrl:()=>bo,getRecaptchaConfig:()=>aL,getSCIMConfig:()=>sL,getSMTPConfig:()=>iL,getSMTPConfigDoc:()=>OA,getSettingsConfig:()=>Bp,getSettingsConfigDoc:()=>ni,save:()=>XU});var R_=["user:created","user:updated","user:deleted","user:admin:assigned","user:admin:removed","user:builder:assigned","user:builder:removed","user_group:created","user_group:updated","user_group:deleted","user_group:user_added","user_group:users_deleted","user_group:permissions_edited"],C_=["automation:deleted","workspace_app:deleted","datasource:deleted","table:deleted","query:deleted","view:deleted"],bm=[...R_,...C_],xm={"user:created":'User "{{ email }}" created{{#if viaScim}} via SCIM{{/if}}',"user:updated":'User "{{ email }}" updated{{#if viaScim}} via SCIM{{/if}}',"user:deleted":'User "{{ email }}" deleted{{#if viaScim}} via SCIM{{/if}}',"user:admin:assigned":'User "{{ email }}" admin role assigned',"user:admin:removed":'User "{{ email }}" admin role removed',"user:builder:assigned":'User "{{ email }}" builder role assigned',"user:builder:removed":'User "{{ email }}" builder role removed',"user:invited":'User "{{ email }}" invited',"user:invite:accepted":'User "{{ email }}" accepted invite',"user:password:updated":'User "{{ email }}" password updated',"user:password:reset:requested":'User "{{ email }}" password reset requested',"user:password:reset":'User "{{ email }}" password reset',"user_group:created":'User group "{{ name }}" created{{#if viaScim}} via SCIM{{/if}}',"user_group:updated":'User group "{{ name }}" updated{{#if viaScim}} via SCIM{{/if}}',"user_group:deleted":'User group "{{ name }}" deleted{{#if viaScim}} via SCIM{{/if}}',"user_group:user_added":'User group "{{ name }}" {{ count }} users added{{#if viaScim}} via SCIM{{/if}}',"user_group:users_deleted":'User group "{{ name }}" {{ count }} users removed{{#if viaScim}} via SCIM{{/if}}',"user_group:permissions_edited":'User group "{{ name }}" permissions edited',"user:password:force:reset":void 0,"user_group:onboarding_added":void 0,"user:onboarding:complete":void 0,"user:data:collaboration":void 0,"email:smtp:created":"Email configuration created","email:smtp:updated":"Email configuration updated","ai:config:created":"AI configuration created","ai:config:updated":"AI configuration updated","auth:sso:created":"SSO configuration created","auth:sso:updated":"SSO configuration updated","auth:sso:activated":"SSO configuration activated","auth:sso:deactivated":"SSO configuration deactivated","auth:login":'User "{{ email }}" logged in',"auth:logout":'User "{{ email }}" logged out',"org:info:name:updated":"Organisation name updated","org:info:logo:updated":"Organisation logo updated","org:platformurl:updated":"Organisation platform URL updated","app:created":'App "{{ name }}" created',"app:updated":'App "{{ name }}" updated',"app:deleted":'App "{{ name }}" deleted',"app:duplicated":'App "{{ name }}" duplicated',"app:published":'App "{{ name }}" published',"app:unpublished":'App "{{ name }}" unpublished',"app:template:imported":'App "{{ name }}" template imported',"app:file:imported":'App "{{ name }}" file imported',"app:version:updated":'App "{{ name }}" version updated',"app:version:reverted":'App "{{ name }}" version reverted',"app:reverted":'App "{{ name }}" reverted',"app:exported":'App "{{ name }}" exported',"app:backup:restored":'App backup "{{ name }}" restored',"app:backup:triggered":'App backup "{{ name }}" triggered',"datasource:created":"Datasource created","datasource:updated":"Datasource updated","datasource:deleted":"Datasource deleted","query:created":"Query created","query:updated":"Query updated","query:deleted":"Query deleted","query:import":"Query import","queries:run":void 0,"query:previewed":void 0,"table:created":'Table "{{ name }}" created',"table:updated":'Table "{{ name }}" updated',"table:deleted":'Table "{{ name }}" deleted',"table:exported":'Table "{{ name }}" exported',"table:imported":'Table "{{ name }}" imported',"table:data:imported":"Data imported to table","rows:created":"Rows created","rows:imported":"Rows imported","automation:created":'Automation "{{ name }}" created',"automation:deleted":'Automation "{{ name }}" deleted',"automation:step:created":'Automation "{{ name }}" step added',"automation:step:deleted":'Automation "{{ name }}" step removed',"automation:tested":void 0,"automations:run":void 0,"automation:trigger:updated":void 0,"screen:created":'Screen "{{ name }}" created',"screen:deleted":'Screen "{{ name }}" deleted',"component:created":"Component created","component:deleted":"Component deleted","environment_variable:created":"Environment variable created","environment_variable:deleted":"Environment variable deleted","environment_variable:upgrade_panel_opened":void 0,"plugin:imported":"Plugin imported","plugin:deleted":"Plugin deleted","plugin:init":void 0,"action:automation_step:executed":void 0,"action:crud:executed":void 0,"action:ai_agent:executed":void 0,"role:created":void 0,"role:updated":void 0,"role:deleted":void 0,"role:assigned":void 0,"role:unassigned":void 0,"license:plan:changed":void 0,"license:activated":void 0,"license:payment:failed":void 0,"license:payment:recovered":void 0,"license:checkout:opened":void 0,"license:checkout:success":void 0,"license:portal:opened":void 0,"account:created":void 0,"account:deleted":void 0,"account:verified":void 0,"app:backfill:succeeded":void 0,"app:backfill:failed":void 0,"tenant:backfill:succeeded":void 0,"tenant:backfill:failed":void 0,"installation:backfill:succeeded":void 0,"installation:backfill:failed":void 0,"layout:created":void 0,"layout:deleted":void 0,"view:created":void 0,"view:updated":void 0,"view:deleted":void 0,"view:exported":void 0,"view:filter:created":void 0,"view:filter:updated":void 0,"view:filter:deleted":void 0,"view:calculation:created":void 0,"view:calculation:updated":void 0,"view:calculation:deleted":void 0,"view:join:created":void 0,"served:builder":void 0,"served:app":void 0,"served:app:preview":void 0,"analytics:opt:out":void 0,"analytics:opt:in":void 0,"installation:version:checked":void 0,"installation:version:upgraded":void 0,"installation:version:downgraded":void 0,"installation:firstStartup":void 0,"audit_log:filtered":void 0,"audit_log:downloaded":void 0,"row_action:created":void 0,"workspace_app:created":void 0,"workspace_app:deleted":void 0,"workspace_app:updated":void 0,"resource:copied_to_workspace":"{{ resource.type }} copied to workspace"};var Ic=(n=>(n.SQL="sql",n.JSON="json",n.FIELDS="fields",n))(Ic||{}),wc=(p=>(p.STRING="string",p.CODE="code",p.LONGFORM="longForm",p.BOOLEAN="boolean",p.NUMBER="number",p.PASSWORD="password",p.LIST="list",p.OBJECT="object",p.JSON="json",p.FILE="file",p.FIELD_GROUP="fieldGroup",p.SELECT="select",p))(wc||{}),Mo=(S=>(S.AIRTABLE="AIRTABLE",S.ARANGODB="ARANGODB",S.BUDIBASE="BUDIBASE",S.COUCHDB="COUCHDB",S.DYNAMODB="DYNAMODB",S.ELASTICSEARCH="ELASTICSEARCH",S.FIRESTORE="FIRESTORE",S.GOOGLE_SHEETS="GOOGLE_SHEETS",S.MONGODB="MONGODB",S.MYSQL="MYSQL",S.ORACLE="ORACLE",S.POSTGRES="POSTGRES",S.REDIS="REDIS",S.REST="REST",S.S3="S3",S.SNOWFLAKE="SNOWFLAKE",S.SQL_SERVER="SQL_SERVER",S))(Mo||{});var Dc=(n=>(n.CONNECTION_CHECKING="connection",n.FETCH_TABLE_NAMES="fetch_table_names",n.EXPORT_SCHEMA="export_schema",n))(Dc||{});var b_=B(require("lodash/isPlainObject"));var Pr=(a=>(a.EQUAL="equal",a.NOT_EQUAL="notEqual",a.EMPTY="empty",a.NOT_EMPTY="notEmpty",a.FUZZY="fuzzy",a.STRING="string",a))(Pr||{}),er=(i=>(i.CONTAINS="contains",i.NOT_CONTAINS="notContains",i.CONTAINS_ANY="containsAny",i.ONE_OF="oneOf",i))(er||{}),wn=(e=>(e.RANGE="range",e))(wn||{}),Oi=(r=>(r.AND="$and",r.OR="$or",r))(Oi||{});function Fo(t){return Object.values(Oi).includes(t)}s(Fo,"isLogicalSearchOperator");function vm(t){return Object.values(Pr).includes(t)}s(vm,"isBasicSearchOperator");function Pm(t){return Object.values(er).includes(t)}s(Pm,"isArraySearchOperator");function Bo(t){return Object.values(wn).includes(t)}s(Bo,"isRangeSearchOperator");var Nm=s(t=>typeof t=="object"&&t._id&&t._rev,"isDocument");var Ii=(o=>(o.USER="user",o.HEADER="header",o.QUERY="query",o.SUBDOMAIN="subdomain",o.PATH="path",o))(Ii||{});var wi=(i=>(i.READ="read",i.WRITE="write",i.EXECUTE="execute",i.ADMIN="admin",i))(wi||{});var Wo=(f=>(f.WORKSPACE="app",f.TABLE="table",f.USER="user",f.AUTOMATION="automation",f.WEBHOOK="webhook",f.BUILDER="builder",f.CREATOR="creator",f.GLOBAL_BUILDER="globalBuilder",f.QUERY="query",f.VIEW="view",f.LEGACY_VIEW="legacy_view",f))(Wo||{});var $o=s(t=>t.hosting==="cloud","isCloudAccount");var Go=s(t=>t.authType==="sso","isSSOAccount");var b="_",ve="\uFFF0",tr=s(t=>`${t}${b}`,"prefixed"),ce=(V=>(V.USER="us",V.GROUP="gr",V.CONFIG="config",V.TEMPLATE="template",V.WORKSPACE="app",V.DEV="dev",V.WORKSPACE_DEV="app_dev",V.WORKSPACE_METADATA="app_metadata",V.ROLE="role",V.DEV_INFO="devinfo",V.AUTOMATION_LOG="log_au",V.ACCOUNT_METADATA="acc_metadata",V.PLUGIN="plg",V.DATASOURCE="datasource",V.DATASOURCE_PLUS="datasource_plus",V.APP_BACKUP="backup",V.TABLE="ta",V.ROW="ro",V.AUTOMATION="au",V.LINK="li",V.WEBHOOK="wh",V.INSTANCE="inst",V.LAYOUT="layout",V.SCREEN="screen",V.QUERY="query",V.DEPLOYMENTS="deployments",V.METADATA="metadata",V.MEM_VIEW="view",V.USER_FLAG="flag",V.AUTOMATION_METADATA="meta_au",V.AUDIT_LOG="al",V.SCIM_LOG="scimlog",V.ROW_ACTIONS="ra",V.OAUTH2_CONFIG="oauth2",V.OAUTH2_CONFIG_LOG="oauth2log",V.AGENT_CHAT="agentchat",V.AGENT_TOOL_SOURCE="agenttoolsource",V.WORKSPACE_APP="workspace_app",V.WORKSPACE_FAVOURITE="workspace_favourite",V))(ce||{});var xt=(e=>(e.USER_METADATA="ta_users",e))(xt||{});function Vo(t){return!!t.providerType}s(Vo,"isSSOUser");var Rc=(d=>(d.OBJECT="object",d.STRING="string",d.BOOLEAN="boolean",d.NUMBER="number",d.ARRAY="array",d.JSON="json",d.DATE="date",d.DATETIME="datetime",d.ATTACHMENT="attachment",d.LONGFORM="longform",d))(Rc||{}),Cc=(w=>(w.TABLE="table",w.ROW="row",w.ROWS="rows",w.WIDE="wide",w.QUERY="query",w.QUERY_PARAMS="queryParams",w.QUERY_LIMIT="queryLimit",w.LOOP_OPTION="loopOption",w.ITEM="item",w.CODE="code",w.FILTERS="filters",w.COLUMN="column",w.TRIGGER_SCHEMA="triggerSchema",w.CRON="cron",w.WEBHOOK_URL="webhookUrl",w.AUTOMATION="automation",w.AUTOMATION_FIELDS="automationFields",w.MULTI_ATTACHMENTS="multi_attachments",w.TRIGGER_FILTER="trigger_filter",w.CATEGORIES="categories",w))(Cc||{}),bc=(u=>(u.ROW_SAVED="ROW_SAVED",u.ROW_UPDATED="ROW_UPDATED",u.ROW_DELETED="ROW_DELETED",u.WEBHOOK="WEBHOOK",u.APP="APP",u.CRON="CRON",u.ROW_ACTION="ROW_ACTION",u))(bc||{});var xc=(D=>(D.SEND_EMAIL_SMTP="SEND_EMAIL_SMTP",D.CREATE_ROW="CREATE_ROW",D.GET_ROW="GET_ROW",D.UPDATE_ROW="UPDATE_ROW",D.DELETE_ROW="DELETE_ROW",D.QUERY_ROWS="QUERY_ROWS",D.EXECUTE_BASH="EXECUTE_BASH",D.OUTGOING_WEBHOOK="OUTGOING_WEBHOOK",D.EXECUTE_SCRIPT="EXECUTE_SCRIPT",D.EXECUTE_SCRIPT_V2="EXECUTE_SCRIPT_V2",D.EXECUTE_QUERY="EXECUTE_QUERY",D.SERVER_LOG="SERVER_LOG",D.DELAY="DELAY",D.FILTER="FILTER",D.API_REQUEST="API_REQUEST",D.LOOP="LOOP",D.COLLECT="COLLECT",D.OPENAI="OPENAI",D.TRIGGER_AUTOMATION_RUN="TRIGGER_AUTOMATION_RUN",D.BRANCH="BRANCH",D.CLASSIFY_CONTENT="CLASSIFY_CONTENT",D.PROMPT_LLM="PROMPT_LLM",D.TRANSLATE="TRANSLATE",D.SUMMARISE="SUMMARISE",D.GENERATE_TEXT="GENERATE_TEXT",D.EXTRACT_FILE_DATA="EXTRACT_FILE_DATA",D.EXTRACT_STATE="EXTRACT_STATE",D.LOOP_V2="LOOP_V2",D.discord="discord",D.slack="slack",D.zapier="zapier",D.integromat="integromat",D.n8n="n8n",D))(xc||{}),Um=[...Object.values(xc),...Object.values(bc)];function Lm(t){return t.stepId==="BRANCH"}s(Lm,"isBranchStep");var vc="bb_internal";var km=["attachment_single","attachment","signature_single","bb_reference","json","array"];var Cd={};N(Cd,{AutomationViewMode:()=>Ua,BUDIBASE_DATASOURCE_TYPE:()=>Ad,Config:()=>Rd,Cookie:()=>zr,DEFAULT_BB_DATASOURCE_ID:()=>Dn,DEFAULT_EMPLOYEE_TABLE_ID:()=>wd,DEFAULT_EXPENSES_TABLE_ID:()=>Id,DEFAULT_INVENTORY_TABLE_ID:()=>Od,DEFAULT_JOBS_TABLE_ID:()=>_d,DEFAULT_TENANT_ID:()=>ae,DeprecatedViews:()=>qn,DesignDocuments:()=>Ts,DocumentType:()=>ce,GlobalRole:()=>Dd,Header:()=>Fe,InternalTable:()=>xt,MAX_VALID_DATE:()=>Ma,MIN_VALID_DATE:()=>Ty,SEPARATOR:()=>b,SQLITE_DESIGN_DOC_ID:()=>wt,SQS_DATASOURCE_INTERNAL:()=>Sd,StaticDatabases:()=>fe,UNICODE_MAX:()=>ve,USER_METADATA_PREFIX:()=>ys,UserStatus:()=>ka,ViewName:()=>lr,WORKSPACE_DEV:()=>La,WORKSPACE_DEV_PREFIX:()=>Ze,WORKSPACE_PREFIX:()=>Je});var Fe=(_=>(_.API_KEY="x-budibase-api-key",_.LICENSE_KEY="x-budibase-license-key",_.API_VER="x-budibase-api-version",_.APP_ID="x-budibase-app-id",_.SESSION_ID="x-budibase-session-id",_.CLIENT="x-budibase-client",_.TYPE="x-budibase-type",_.PREVIEW_ROLE="x-budibase-role",_.TENANT_ID="x-budibase-tenant-id",_.VERIFICATION_CODE="x-budibase-verification-code",_.RETURN_VERIFICATION_CODE="x-budibase-return-verification-code",_.RESET_PASSWORD_CODE="x-budibase-reset-password-code",_.RETURN_RESET_PASSWORD_CODE="x-budibase-return-reset-password-code",_.TOKEN="x-budibase-token",_.CSRF_TOKEN="x-csrf-token",_.CORRELATION_ID="x-budibase-correlation-id",_.AUTHORIZATION="authorization",_.MIGRATING_APP="x-budibase-migrating-app",_.COOKIE="cookie",_))(Fe||{});var Be={Equals:{value:"equal",label:"Equals"},NotEquals:{value:"notEqual",label:"Not equals"},Empty:{value:"empty",label:"Is empty"},NotEmpty:{value:"notEmpty",label:"Is not empty"},StartsWith:{value:"string",label:"Starts with"},Like:{value:"fuzzy",label:"Like"},MoreThan:{value:"rangeLow",label:"More than or equal to"},LessThan:{value:"rangeHigh",label:"Less than or equal to"},Contains:{value:"contains",label:"Contains"},NotContains:{value:"notContains",label:"Does not contain"},In:{value:"oneOf",label:"Is in"},ContainsAny:{value:"containsAny",label:"Has any"}},Mm={integer:{max:2147483647,min:-2147483648},int:{max:2147483647,min:-2147483648},smallint:{max:32767,min:-32768},mediumint:{max:8388607,min:-8388608}};var Dn="datasource_internal_bb_default";var cr={};N(cr,{ColumnSplitter:()=>ad,NoEmptyFilterStrings:()=>py,buildQuery:()=>my,cleanupQuery:()=>ld,fixupFilterArrays:()=>fd,getKeyNumbering:()=>dd,getValidOperatorsForType:()=>iC,hasFilters:()=>ud,limit:()=>Ey,recurseLogicalOperators:()=>cd,removeKeyNumbering:()=>qo,runQuery:()=>xa,search:()=>aC,sort:()=>hy,splitFiltersArray:()=>Ko});var Vn=B(Fm());var St={};N(St,{filterValueToLabel:()=>L_,hasSchema:()=>k_,isSupportedUserSearch:()=>$m,nameToUrl:()=>$_,parallelForeach:()=>U_,processSearchFilters:()=>Uc,toMap:()=>F_,trimOtherProps:()=>M_,unreachable:()=>N_});var Wm=B(require("lodash/pick"));var P_=["field","operator","value","type","externalType","valueType","noValue","formulaType"];function N_(t,e){let r=e?.message||`No such case in exhaustive switch: ${t}`;if(!!!e?.doNotThrow)throw new Error(r)}s(N_,"unreachable");async function U_(t,e,r){let n=[],i=Symbol.asyncIterator in t,o=i?t[Symbol.asyncIterator]():t[Symbol.iterator](),a=s(async()=>{let u=await(i?o.next():Promise.resolve(o.next()));for(;!u.done;)await e(u.value),u=await(i?o.next():Promise.resolve(o.next()))},"executeNext");for(let u=0;u<r;u++)n.push(a());await Promise.all(n)}s(U_,"parallelForeach");function L_(){return Object.keys(Be).reduce((t,e)=>{let n=Be[e];return t[n.value]=n.label,t},{})}s(L_,"filterValueToLabel");function k_(t){return typeof t=="object"&&!Array.isArray(t)&&t!==null&&!(t instanceof Date)&&Object.keys(t).length>0}s(k_,"hasSchema");function M_(t,e){return Object.keys(t).filter(n=>e.includes(n)).reduce((n,i)=>({...n,[i]:t[i]}),{})}s(M_,"trimOtherProps");function $m(t){let e=[{op:"string",key:"email"},{op:"equal",key:"_id"},{op:"oneOf",key:"_id"}],{allOr:r,onEmptyFilter:n,...i}=t;for(let[o,a]of Object.entries(i)){if(typeof a!="object")return!1;if(Fo(o)){for(let l of t[o].conditions)if(!$m(l))return!1;return!0}let u=Object.keys(a||{});if(u.length===0)continue;if(!e.find(l=>l.op===o&&u.length===1&&u[0]===l.key))return!1}return!0}s($m,"isSupportedUserSearch");function Uc(t){if(!t||t.length===0)return;let{allOr:e,onEmptyFilter:r,filters:n}=Ko(t);return{logicalOperator:"all",onEmptyFilter:r||"all",groups:[{logicalOperator:e?"any":"all",filters:n.map(i=>{let o=(0,Wm.default)(i,P_);return o.field=qo(o.field),o})}]}}s(Uc,"processSearchFilters");function F_(t,e){return e.reduce((r,n)=>(r[n[t]]=n,r),{})}s(F_,"toMap");var B_=s(t=>t?t.trim():null,"resolveWorkspaceName"),W_=s(t=>{let e,r=B_(t);e=r?r.toLowerCase():"";let n=e?e.replace(/\s+/g,"-"):"";return encodeURI(n)},"resolveWorkspaceUrl"),$_=s(t=>{let e=W_(t);return G_(e)},"nameToUrl"),G_=s(t=>(t&&!t.startsWith("/")&&(t=`/${t}`),t===""?null:t),"tidyUrl");var Ne={};N(Ne,{cancelableTimeout:()=>Gm,cron:()=>eC,deepGet:()=>Lc,duplicateName:()=>ZR,getSequentialName:()=>XR,getUserColor:()=>q_,getUserInitials:()=>V_,getUserLabel:()=>K_,isGoogleSheets:()=>j_,isSQL:()=>Y_,lists:()=>sd,retry:()=>H_,roles:()=>id,schema:()=>ps,views:()=>nd,wait:()=>kc,withTimeout:()=>Q_});var Lc=s((t,e)=>{if(!t||!e)return null;if(Object.prototype.hasOwnProperty.call(t,e))return t[e];let r=e.split(".");for(let n=0;n<r.length;n++)t=t?.[r[n]];return t},"deepGet"),V_=s(t=>{if(!t)return"?";let e="";return e+=t.firstName?t.firstName[0]:"",e+=t.lastName?t.lastName[0]:"",e!==""?e:t.email?.[0]||"U"},"getUserInitials"),q_=s(t=>{let e=t?._id;if(!e)return"var(--spectrum-global-color-blue-400)";e=e.replace("ro_ta_users_","");let r=1;for(let n=0;n<e.length;n++)r+=e.charCodeAt(n),r=r%36;return`hsl(${r*10}, 50%, 40%)`},"getUserColor"),K_=s(t=>{if(!t)return"";let{firstName:e,lastName:r,email:n}=t;return e&&r?`${e} ${r}`:e||r||n},"getUserLabel");function Gm(t){let e;return[new Promise((r,n)=>{e=setTimeout(()=>{n({status:301,errno:"ETIME"})},t)}),()=>{clearTimeout(e)}]}s(Gm,"cancelableTimeout");async function Q_(t,e){let[r,n]=Gm(t),i=await Promise.race([e(),r]);return n(),i}s(Q_,"withTimeout");function j_(t){return t==="GOOGLE_SHEETS"}s(j_,"isGoogleSheets");function Y_(t){return!t||!t.source?!1:["POSTGRES","SQL_SERVER","MYSQL","ORACLE"].indexOf(t.source)!==-1||t.isSQL===!0}s(Y_,"isSQL");async function kc(t){return new Promise(e=>setTimeout(e,t))}s(kc,"wait");async function H_(t,e){let{times:r=3}=e||{};if(r<1)throw new Error(`invalid retry count: ${r}`);let n;for(let i=0;i<r;i++){let o=1.5**i*1e3*(Math.random()+.5);await kc(o);try{return await t()}catch(a){n=a}}throw n}s(H_,"retry");var oy=B(At()),ay=B(iy());var sy="(Input cron: ",MR={"smaller than lower limit":"less than","bigger than upper limit":"greater than",daysOfMonth:"'days of the month'",daysOfWeek:"'days of the week'",years:"'years'",months:"'months'",hours:"'hours'",minutes:"'minutes'",seconds:"'seconds'"};function FR(t){let e=[];for(let r of t){r.includes(sy)&&(r=r.split(sy)[0].trim());for(let[n,i]of Object.entries(MR))r.includes(n)&&(r=r.replace(new RegExp(n,"g"),i));e.push(r)}return e}s(FR,"improveErrors");function uy(t,e=4){let r=ay.default.parseExpression(t),n=[];for(let i=0;i<e;i++)n.push(r.next().toString());return n}s(uy,"getNextExecutionDates");function cy(t){let e=(0,oy.default)(t,{preset:"npm-cron-schedule",override:{useSeconds:!1}});return e.isValid()?{valid:!0}:{valid:!1,err:FR(e.getError())}}s(cy,"validate");var ps={};N(ps,{decodeNonAscii:()=>td,encodeNonAscii:()=>$R,isDeprecatedSingleUserColumn:()=>BR,isNumeric:()=>GR,isRequired:()=>WR});function BR(t){return t.type==="bb_reference"&&t.subtype==="user"&&t.constraints?.type!=="array"}s(BR,"isDeprecatedSingleUserColumn");function WR(t){return!!t&&(typeof t.presence!="boolean"&&t.presence?.allowEmpty===!1||t.presence===!0)}s(WR,"isRequired");function $R(t){return t.split("").map(e=>e.charCodeAt(0)>127?"\\u"+e.charCodeAt(0).toString(16).padStart(4,"0"):e).join("")}s($R,"encodeNonAscii");function td(t){return t.replace(/\\u([0-9a-fA-F]{4})/g,(e,r)=>String.fromCharCode(parseInt(r,16)))}s(td,"decodeNonAscii");function GR(t){return t.type==="number"||t.type==="bigint"}s(GR,"isNumeric");var nd={};N(nd,{basicFields:()=>jR,calculationFields:()=>QR,hasCalculationFields:()=>KR,isBasicViewField:()=>VR,isCalculationField:()=>ms,isCalculationView:()=>qR,isV2:()=>YR,isVisible:()=>ly});var rd=B(require("lodash/pickBy"));function ms(t){return"calculationType"in t}s(ms,"isCalculationField");function VR(t){return!ms(t)}s(VR,"isBasicViewField");function qR(t){return t.type==="calculation"}s(qR,"isCalculationView");function KR(t){return Object.values(t.schema||{}).some(ms)}s(KR,"hasCalculationFields");function QR(t){return(0,rd.default)(t.schema||{},ms)}s(QR,"calculationFields");function ly(t){return t.visible!==!1}s(ly,"isVisible");function jR(t,e){let{visible:r=!0}=e||{};return(0,rd.default)(t.schema||{},n=>!ms(n)&&(!r||ly(n)))}s(jR,"basicFields");function YR(t){return t.version===2}s(YR,"isV2");var id={};N(id,{checkForRoleInheritanceLoops:()=>zR});function HR(t){return`role${b}${t}`}s(HR,"prefixForCheck");function zR(t){let e=new Map;t.forEach(o=>{e.set(o._id,o)});let r=new Set,n=new Set;function i(o){let a=HR(o);if(n.has(o)||n.has(a))return!0;if(r.has(o)||r.has(a))return!1;n.add(o);let u=e.get(a)||e.get(o);if(!u)return n.delete(o),!1;let c=Array.isArray(u.inherits)?u.inherits:[u.inherits];for(let l of c)if(l&&i(l))return!0;return n.delete(o),r.add(o),!1}return s(i,"hasLoop"),!!t.find(o=>i(o._id))}s(zR,"checkForRoleInheritanceLoops");var sd={};N(sd,{punctuateList:()=>JR});function JR(t){return t.length===0?"":t.length===1?t[0]:t.length===2?t.join(" and "):t.slice(0,-1).join(", ")+" and "+t[t.length-1]}s(JR,"punctuateList");var ZR=s((t,e)=>{let r=new RegExp("\\s(\\d+)$"),n=t.split(r)[0],i=new RegExp(`${n}\\s(\\d+)$`),o=[];e.filter(u=>{if(u===n)return!0;let c=u.match(i);return c?(o.push(parseInt(c[1])),!0):!1}),o.sort((u,c)=>u-c);let a;if(o.length===0)a=1;else{for(let u=0;u<o.length;u++)if(o[u]!==u+1){a=u+1;break}a||(a=o.length+1)}return`${n} ${a}`},"duplicateName"),XR=s((t,e,{getName:r,numberFirstItem:n,separator:i=""}={})=>{if(!e?.length)return"";let o=e.trim(),a=n?`${e}1`:o;if(!t?.length)return a;let u=0;return t.forEach(c=>{let l=r?.(c)??c;if(typeof l!="string"||!l.startsWith(o))return;let d=l.split(o);if(d.length!==2)return;d[1].trim()===""&&(d[1]="1");let f=parseInt(d[1]);f>u&&(u=f)}),u===0?a:`${e}${i}${u+1}`},"getSequentialName");var eC={getNextExecutionDates:uy,validate:cy};var ba=B(require("lodash/isPlainObject")),od=B(require("lodash/isEmpty"));var rC=/{{([^{].*?)}}/g,fy=Object.values(Oi),nC=[...Object.values(Pr),...Object.values(er),...Object.values(wn)],iC=s((t,e,r)=>{let n=Be,i=[n.Equals,n.NotEquals,n.StartsWith,n.Like,n.Empty,n.NotEmpty,n.In],o=[n.Equals,n.NotEquals,n.MoreThan,n.LessThan,n.Empty,n.NotEmpty,n.In],a=[n.Contains,n.NotContains,n.ContainsAny,n.Empty,n.NotEmpty],u=[],{type:c,formulaType:l,subtype:d}=t;c==="string"?d==="array"?u=a:u=i:c==="number"||c==="bigint"?u=o:c==="options"?u=[n.Equals,n.NotEquals,n.Empty,n.NotEmpty,n.In]:c==="array"?u=a:c==="boolean"?u=[n.Equals,n.NotEquals,n.Empty,n.NotEmpty]:c==="longform"?u=i:c==="datetime"?u=o:c==="formula"&&l==="static"?u=i.concat([n.MoreThan,n.LessThan]):c==="ai"?u=i.concat([n.MoreThan,n.LessThan]):c==="bb_reference_single"||ps.isDeprecatedSingleUserColumn(t)?u=[n.Equals,n.NotEquals,n.Empty,n.NotEmpty,n.In]:c==="bb_reference"?u=a:c==="barcodeqr"&&(u=i);let f=r?.tableId?.includes("datasource_plus");return e==="_id"&&f&&(u=[n.Equals,n.NotEquals,n.In]),u},"getValidOperatorsForType"),py=[Be.StartsWith.value,Be.Like.value,Be.Equals.value,Be.NotEquals.value,Be.Contains.value,Be.NotContains.value,Be.ContainsAny.value,Be.In.value];function cd(t,e){for(let r of fy)t[r]&&(t[r].conditions=t[r].conditions.map(n=>e(n)));return t}s(cd,"recurseLogicalOperators");var ld=s(t=>{for(let e of py)if(t[e])for(let r of Object.keys(t)){if(r!==e)continue;if(typeof t[r]=="object")for(let[i,o]of Object.entries(t[r]))(o==null||o===""||sC(o))&&delete t[e][i]}return t=cd(t,ld),t},"cleanupQuery");function sC(t){return Array.isArray(t)&&t.length===0}s(sC,"isEmptyArray");var qo=s(t=>dd(t).key,"removeKeyNumbering"),dd=s(t=>{if(typeof t=="string"&&t.match(/\d[0-9]*:/g)!=null){let e=t.split(":");return{prefix:`${e.shift()}:`,key:e.join(":")}}else return{key:t}},"getKeyNumbering"),ad=class{static{s(this,"ColumnSplitter")}constructor(e,r){if(this.tableNames=e.map(n=>n.name),this.tableIds=e.map(n=>n._id),this.relationshipColumnNames=e.flatMap(n=>Object.keys(n.schema).filter(i=>n.schema[i].type==="link")),this.relationships=this.tableNames.concat(this.tableIds).concat(this.relationshipColumnNames).sort((n,i)=>i.length-n.length),r?.aliases){this.aliases={};for(let[n,i]of Object.entries(r.aliases))this.aliases[i]=n}this.columnPrefix=r?.columnPrefix}run(e){let{prefix:r,key:n}=dd(e),i;if(this.aliases)for(let a of Object.keys(this.aliases||{})){let u=`${a}.`;n.startsWith(u)&&(i=this.aliases[a],n=n.slice(u.length))}let o;for(let a of this.relationships){let u=`${a}.`;if(n.startsWith(u)){let c=n.split(u);c.shift(),o=u,n=c.join(".");break}}return this.columnPrefix&&n.startsWith(this.columnPrefix)&&(n=td(n.slice(this.columnPrefix.length))),{tableName:i,numberPrefix:r,relationshipPrefix:o,column:n}}};function oC(t){if(!t||!t?.operator||!t?.field)return;let e={},{operator:r,field:n,type:i,externalType:o}=t,{value:a}=t;(r==="empty"||r==="notEmpty")&&(a=null);let u=typeof a=="string"&&(a.match(rC)||[]).length>0;switch(i){case"datetime":if(!u&&r!=="empty"&&r!=="notEmpty"){if(!a)return;if(typeof a=="string")a=new Date(a).toISOString();else if(Bo(r))return e[r]??={},e[r][n]=a,e}break;case"number":typeof a=="string"&&!u&&(r==="oneOf"?a=a.split(",").map(parseFloat):a=parseFloat(a));break;case"boolean":a=`${a}`.toLowerCase()==="true";break;case"array":["contains","notContains","containsAny"].includes(r.toLocaleString())&&typeof a=="string"&&(a=a.split(","));break}if(Bo(r)){let l=Mm[o]||{min:Number.MIN_SAFE_INTEGER,max:Number.MAX_SAFE_INTEGER};e[r]??={},e[r][n]={low:i==="number"?l.min:"0000-00-00T00:00:00.000Z",high:i==="number"?l.max:"9999-00-00T00:00:00.000Z"}}else if(r==="rangeHigh"&&a!=null&&a!=="")e.range??={},e.range[n]={...e.range[n],high:a};else if(r==="rangeLow"&&a!=null&&a!=="")e.range??={},e.range[n]={...e.range[n],low:a};else if(vm(r)||Pm(r)||Bo(r))i==="boolean"?r==="equal"&&a===!1?(e.notEqual=e.notEqual||{},e.notEqual[n]=!0):r==="notEqual"&&a===!1?(e.equal=e.equal||{},e.equal[n]=!0):(e[r]??={},e[r][n]=a):(e[r]??={},e[r][n]=a);else throw new Error(`Unsupported operator: ${r}`);return e}s(oC,"buildCondition");function Ko(t){let e={filters:[]};for(let r of t)"operator"in r&&r.operator==="allOr"?e.allOr=!0:"onEmptyFilter"in r?e.onEmptyFilter=r.onEmptyFilter:e.filters.push(r);return e}s(Ko,"splitFiltersArray");function my(t){if(!t)return{};if(Array.isArray(t)&&(t=Uc(t),!t))return{};let e={};t.onEmptyFilter?e.onEmptyFilter=t.onEmptyFilter:e.onEmptyFilter="all";let r=dy(t.logicalOperator||"all");return e[r]={conditions:(t.groups||[]).map(n=>{if(n.groups){let c=my(n);return delete c.onEmptyFilter,c}let{allOr:i,onEmptyFilter:o,filters:a}=Ko(n.filters||[]);o&&(e.onEmptyFilter=o);let u=i?"$or":"$and";return n.logicalOperator&&(u=dy(n.logicalOperator)),{[u]:{conditions:a.map(oC).filter(c=>c)}}})},e}s(my,"buildQuery");function dy(t){return t==="all"?"$and":"$or"}s(dy,"logicalOperatorFromUI");function fd(t){if(!t)return t;for(let e of Object.values(er)){let r=t[e];if(!(r==null||!(0,ba.default)(r)))for(let n of Object.keys(r)){if(Array.isArray(r[n]))continue;let i=r[n];typeof i=="string"?r[n]=i.split(",").map(o=>o.trim()):r[n]=[i]}}return cd(t,fd),t}s(fd,"fixupFilterArrays");function aC(t,e){let r=xa(t,e.query);e.sort&&(r=hy(r,e.sort,e.sortOrder||"ascending",e.sortType));let n=r.length;e.limit&&(r=Ey(r,e.limit.toString()));let i={rows:r};return e.countRows&&(i.totalRows=n),i}s(aC,"search");function xa(t,e){if(!t||!Array.isArray(t))return[];if(!e)return t;if(e=ld(e),e=fd(e),!ud(e)&&e.onEmptyFilter==="none")return[];let r=s((T,I)=>F=>{for(let[P,M]of Object.entries(e[T]||{})){let Y=Fo(T)?F:Lc(F,qo(P)),bt=I(Y,M);if(e.allOr&&bt)return!0;if(!e.allOr&&!bt)return!1}return!e.allOr},"match"),n=r("string",(T,I)=>typeof T!="string"||typeof I!="string"?!1:T.toLowerCase().startsWith(I.toLowerCase())),i=r("fuzzy",(T,I)=>typeof T!="string"||typeof I!="string"?!1:T.toLowerCase().includes(I.toLowerCase())),o=r("range",(T,I)=>{if(T==null||T===""||((0,ba.default)(I.low)&&(0,od.default)(I.low)&&(I.low=void 0),(0,ba.default)(I.high)&&(0,od.default)(I.high)&&(I.high=void 0),I.low==null&&I.high==null))return!1;let F=+T;if(!isNaN(F)){let M=+I.low,Y=+I.high;if(!isNaN(M)&&!isNaN(Y))return F>=M&&F<=Y;if(isNaN(M)){if(!isNaN(Y))return F<=Y}else return F>=M}let P=(0,Vn.default)(T);if(P.isValid()){let M=(0,Vn.default)(I.low||"0000-00-00T00:00:00.000Z"),Y=(0,Vn.default)(I.high||"9999-00-00T00:00:00.000Z");if(M.isValid()&&Y.isValid())return P.isAfter(M)&&P.isBefore(Y)||P.isSame(M)||P.isSame(Y);if(M.isValid())return P.isAfter(M)||P.isSame(M);if(Y.isValid())return P.isBefore(Y)||P.isSame(Y)}return I.low!=null&&I.high!=null?T>=I.low&&T<=I.high:I.low!=null?T>=I.low:I.high!=null?T<=I.high:!1}),a=s((T,I)=>{if(Array.isArray(T)){for(let P of T)if(a(P,I))return!0;return!1}if(T&&typeof T=="object"&&typeof I=="string")return T._id===I;if(T===I)return!0;if(T==null&&I!=null||T!=null&&I==null)return!1;let F=(0,Vn.default)(T);if(F.isValid()){let P=(0,Vn.default)(I);if(P.isValid())return F.isSame(P)}return!1},"_valueMatches"),u=s(T=>(...I)=>!T(...I),"not"),c=r("equal",a),l=r("notEqual",u(a)),d=s(T=>typeof T=="string"?T==="":Array.isArray(T)?T.length===0:T&&typeof T=="object"?Object.keys(T).length===0:T==null,"_empty"),f=r("empty",d),p=r("notEmpty",u(d)),m=r("oneOf",(T,I)=>(typeof I=="string"&&(I=I.split(",")),typeof T=="number"&&(I=I.map(F=>parseFloat(F))),Array.isArray(I)?I.some(F=>a(T,F)):!1)),h=s(T=>(I,F)=>!Array.isArray(I)||(typeof F=="string"&&(F=F.split(","),typeof I[0]=="number"&&(F=F.map(P=>parseFloat(P)))),!Array.isArray(F))?!1:F.length===0?!0:F[T](P=>a(I,P)),"_contains"),g=r("contains",(T,I)=>Array.isArray(I)&&I.length===0?!0:h("every")(T,I)),y=r("notContains",(T,I)=>Array.isArray(I)&&I.length===0?!0:u(h("every"))(T,I)),S=r("containsAny",h("some")),O=r("$and",(T,I)=>{if(!I.length)return!1;for(let F of I)if(!xa([T],F).length)return!1;return!0}),_=r("$or",(T,I)=>{if(!I.length)return!1;for(let F of I)if(xa([T],{...F,allOr:!0}).length)return!0;return!1}),w=s(T=>{let I={string:n,fuzzy:i,range:o,equal:c,notEqual:l,empty:f,notEmpty:p,oneOf:m,contains:g,containsAny:S,notContains:y,$and:O,$or:_},F=Object.entries(e||{}).filter(([P,M])=>!["allOr","onEmptyFilter"].includes(P)&&M&&Object.keys(M).length>0).map(([P])=>I[P]?.(T)??!1);return ud(e)?e.allOr?F.some(P=>P===!0):F.every(P=>P===!0):!0},"docMatch");return t.filter(w)}s(xa,"runQuery");function hy(t,e,r,n="string"){if(!e||!r||!n)return t;let i=s(o=>o==null?o:n==="string"?`${o}`:parseFloat(o),"parse");return t.slice().sort((o,a)=>{let u=i(o[e]),c=i(a[e]),l=c==null||u>c?1:-1;return r.toLowerCase()==="descending"?l*-1:l})}s(hy,"sort");function Ey(t,e){let r=typeof e=="number"?e:parseFloat(e);return isNaN(r)?t:t.slice(0,r)}s(Ey,"limit");var ud=s(t=>{if(!t)return!1;let e=s(r=>{for(let n of fy)if(r[n])for(let i of r[n]?.conditions||[]){let o=e(i);if(o)return o}for(let n of nC){let i=r[n];if(!i||typeof i!="object")continue;if(Object.entries(i).filter(a=>{let u=a[1]!==void 0||a[1]!==null||a[1]!=="";return n==="notEmpty"||u}).length!==0)return!0}return!1},"check");return e(t)},"hasFilters");var Ue={};N(Ue,{applications:()=>md,automations:()=>hd,screens:()=>Td,users:()=>yd});var md={};N(md,{getDevAppID:()=>uC,getProdAppID:()=>Es});var pd=tr("app"),hs=tr("app_dev");function uC(t){if(!t)throw new Error("No app ID provided");if(t.startsWith(hs))return t;let e=t.split(pd);e.shift();let r=e.join(pd);return`${hs}${r}`}s(uC,"getDevAppID");function Es(t){if(!t)throw new Error("No app ID provided");if(!t.startsWith(hs))return t;let e=t.split(hs);e.shift();let r=e.join(hs);return`${pd}${r}`}s(Es,"getProdAppID");var hd={};N(hd,{checkForCollectStep:()=>fC,isAppAction:()=>dC,isRowAction:()=>cC,isWebhookAction:()=>lC});function cC(t){return t.definition.trigger?.stepId==="ROW_ACTION"}s(cC,"isRowAction");function lC(t){return t.definition.trigger?.stepId==="WEBHOOK"}s(lC,"isWebhookAction");function dC(t){return t.definition.trigger?.stepId==="APP"}s(dC,"isAppAction");function gy(t){if(!t||!Array.isArray(t))return!1;for(let e of t){if(e.stepId==="COLLECT")return!0;if(Lm(e)&&e.inputs.children){for(let r of Object.values(e.inputs.children))if(gy(r))return!0}}return!1}s(gy,"hasCollectBlockRecursive");function fC(t){return gy(t.definition.steps)}s(fC,"checkForCollectStep");var yd={};N(yd,{canCreateApps:()=>pC,containsUserID:()=>AC,getGlobalUserID:()=>SC,getUserAppGroups:()=>_C,hasAdminPermissions:()=>gd,hasAppBuilderPermissions:()=>Pa,hasBuilderPermissions:()=>yC,hasCreatorPermissions:()=>Na,isAdmin:()=>gs,isAdminOrBuilder:()=>hC,isAdminOrGlobalBuilder:()=>EC,isAdminOrWorkspaceBuilder:()=>mC,isBuilder:()=>Ed,isCreator:()=>TC,isGlobalBuilder:()=>va,userAppAccessList:()=>OC});function Ed(t,e){return t?t.builder?.global?!0:!!(e&&t.builder?.apps?.includes(Es(e))):!1}s(Ed,"isBuilder");function va(t){return Ed(t)&&!Pa(t)||gs(t)}s(va,"isGlobalBuilder");function pC(t){return va(t)||Na(t)}s(pC,"canCreateApps");function gs(t){return t?gd(t):!1}s(gs,"isAdmin");function mC(t,e){return t?!!(gs(t)||e&&t.builder?.apps?.includes(Es(e))):!1}s(mC,"isAdminOrWorkspaceBuilder");function hC(t,e){return Ed(t,e)||gs(t)}s(hC,"isAdminOrBuilder");function EC(t){return va(t)||gs(t)}s(EC,"isAdminOrGlobalBuilder");function Pa(t){if(!t)return!1;let e=t.builder?.apps?.length;return!!!t.builder?.global&&e!=null&&e>0}s(Pa,"hasAppBuilderPermissions");function gC(t){return t?!!Object.values(t.roles??{}).find(e=>e==="CREATOR"):!1}s(gC,"hasAppCreatorPermissions");function yC(t){return t?t.builder?.global||Pa(t)||Na(t):!1}s(yC,"hasBuilderPermissions");function gd(t){return t?!!t.admin?.global:!1}s(gd,"hasAdminPermissions");function Na(t){return t?!!t.builder?.creator:!1}s(Na,"hasCreatorPermissions");function TC(t){return t?va(t)||gd(t)||Na(t)||Pa(t)||gC(t):!1}s(TC,"isCreator");function SC(t){if(typeof t!="string")return t;let e=`ro${b}ta_users${b}`;return t.startsWith(e)?t.split(e)[1]:t}s(SC,"getGlobalUserID");function AC(t){return typeof t!="string"?!1:t.includes(`us${b}`)}s(AC,"containsUserID");function yy(t,e){return e?.filter(r=>r.users?.find(n=>n._id===t))||[]}s(yy,"getUserGroups");function _C(t,e,r){let n=Es(t);return yy(e,r).filter(o=>Object.keys(o.roles||{}).find(a=>a===n))}s(_C,"getUserAppGroups");function OC(t,e){let n=yy(t._id,e).flatMap(o=>Object.keys(o.roles||{})),i=[...Object.keys(t?.roles||{}),...n];return[...new Set(i)]}s(OC,"userAppAccessList");var Td={};N(Td,{findInSettings:()=>IC});function IC(t,e){let r=[];function n(i,o=""){for(let[a,u]of Object.entries(i))u&&(typeof u=="string"&&u.includes(e)?r.push({setting:o?`${o}.${a}`:a,value:u}):typeof u=="object"&&n(u,a))}return s(n,"recurse"),n(t.props),r}s(IC,"findInSettings");var Ua=(n=>(n.ALL="all",n.AUTOMATION="automation",n.STATUS="status",n))(Ua||{}),lr=(d=>(d.USER_BY_WORKSPACE="by_app",d.USER_BY_EMAIL="by_email2",d.BY_API_KEY="by_api_key",d.LINK="by_link",d.ROUTING="screen_routes_2",d.AUTOMATION_LOGS="automation_logs",d.ACCOUNT_BY_EMAIL="account_by_email",d.PLATFORM_USERS_LOWERCASE="platform_users_lowercase_2",d.USER_BY_GROUP="user_by_group",d.WORKSPACE_BACKUP_BY_TRIGGER="by_trigger",d))(lr||{}),qn={by_email2:["by_email"]},fe={GLOBAL:{name:"global-db",docs:{apiKeys:"apikeys",usageQuota:"usage_quota",licenseInfo:"license_info",environmentVariables:"environmentvariables"}},PLATFORM_INFO:{name:"global-info",docs:{tenants:"tenants",install:"install"}},AUDIT_LOGS:{name:"audit-logs"},SCIM_LOGS:{name:"scim-logs"},SELF_HOST_CLOUD:{name:"self-host-cloud"}},Je=tr("app"),La=tr("app_dev"),Ze=La,Sd="internal",Ad="budibase",wt="_design/sqlite",_d="ta_bb_jobs",Od="ta_bb_inventory",Id="ta_bb_expenses",wd="ta_bb_employee",ys=`ro${b}ta_users${b}`,Ts=(r=>(r[r.SQLITE=wt]="SQLITE",r.MIGRATIONS="_design/migrations",r))(Ts||{});var ka=(r=>(r.ACTIVE="active",r.INACTIVE="inactive",r))(ka||{}),zr=(u=>(u.Auth="budibase:auth",u.Init="budibase:init",u.ACCOUNT_RETURN_URL="budibase:account:returnurl",u.DatasourceAuth="budibase:datasourceauth",u.OIDC_CONFIG="budibase:oidc:config",u.FeatureFlags="budibase:featureflags",u.RecaptchaSession="budibase:recaptcha",u))(zr||{}),Dd=(i=>(i.OWNER="owner",i.ADMIN="admin",i.BUILDER="builder",i.WORKSPACE_MANAGER="workspace_manager",i))(Dd||{}),Rd=(c=>(c.SETTINGS="settings",c.ACCOUNT="account",c.SMTP="smtp",c.GOOGLE="google",c.OIDC="oidc",c.OIDC_LOGOS="logos_oidc",c.SCIM="scim",c.AI="AI",c))(Rd||{}),Ty=new Date(-2147483647e3),Ma=new Date(2147483647e3),ae="default";var Io={};N(Io,{CacheKey:()=>ye,TTL:()=>fn,bustCache:()=>oi,destroy:()=>so,docWritethrough:()=>np,generic:()=>oo,get:()=>pn,invite:()=>sp,keys:()=>Ru,passwordReset:()=>op,store:()=>jt,user:()=>wr,withCache:()=>Ar,withCacheWithDynamicTTL:()=>yS,workspace:()=>Bs,writethrough:()=>kp});var np={};N(np,{DocWritethrough:()=>rp,DocWritethroughProcessor:()=>io,getProcessor:()=>av,init:()=>gS});var tp={};N(tp,{BudibaseQueue:()=>ht,InMemoryQueue:()=>uu,JobQueue:()=>ti,QueuedProcessor:()=>ep,UnretriableError:()=>wu,shutdown:()=>mx});var bd=require("crypto"),Ba=require("fs"),_y=require("lodash"),Ss=require("path");var wC=process.env.TOP_LEVEL_PATH||process.env.SERVER_TOP_LEVEL_PATH||(0,Ss.resolve)((0,Ss.join)(__dirname,"..","..","..")),Sy=!1;!Sy&&Fa()&&!xd()&&(require("dotenv").config({path:(0,Ss.join)(wC,".env")}),Sy=!0);function xd(){return Oy()}s(xd,"isTest");function Oy(){return process.env.NODE_ENV==="jest"||process.env.JEST_WORKER_ID!=null&&process.env.JEST_WORKER_ID!=="null"}s(Oy,"isJest");function Fa(){return process.env.NODE_ENV!=="production"}s(Fa,"isDev");function DC(t){if(t)return parseInt(t)}s(DC,"parseIntSafe");var Kn={BACKUPS:"backups",APPS:"prod-budi-app-assets",TEMPLATES:"templates",GLOBAL:"global",PLUGINS:"plugins",TEMP:"tmp-file-attachments"},Ay=!!parseInt(process.env.SELF_HOSTED||"");function RC(){return process.env.API_ENCRYPTION_KEY?process.env.API_ENCRYPTION_KEY:process.env.JWT_SECRET}s(RC,"getAPIEncryptionKey");function CC(){return process.env.HTTP_LOGGING===void 0?!0:process.env.HTTP_LOGGING}s(CC,"httpLogging");function bC(){function t(r){function n(u,c){let l=`${c}/${u}`;if((0,Ba.existsSync)(l))return l;let d=`${c}/..`;return d===c?null:n(u,d)}s(n,"findFileInAncestors");let i=n(r,process.cwd()),o=(0,Ba.readFileSync)(i,"utf-8");return JSON.parse(o)}s(t,"getParentFile");let e;if(Fa()&&!xd())try{e=`${t("lerna.json").version}+local`}catch{}try{let r=t("package.json");return{VERSION:e||process.env.BUDIBASE_VERSION||r.version,SERVICE_NAME:r.name}}catch{return{VERSION:process.env.BUDIBASE_VERSION||"",SERVICE_NAME:""}}}s(bC,"getPackageJsonFields");function xC(){return lt.SERVICE_TYPE==="worker"}s(xC,"isWorker");function vC(){return lt.SERVICE_TYPE==="apps"}s(vC,"isApps");function PC(){return lt.BUDIBASE_ENVIRONMENT==="QA"}s(PC,"isQA");function NC(){return process.env.SERVICE?process.env.SERVICE:process.env.APPS_SERVICE?process.env.APPS_SERVICE:process.env.WORKER_SERVICE?process.env.WORKER_SERVICE:"budibase"}s(NC,"getServiceName");var lt={isTest:xd,isJest:Oy,isDev:Fa,isWorker:xC,isApps:vC,isQA:PC,isProd:()=>!Fa(),BUDIBASE_ENVIRONMENT:process.env.BUDIBASE_ENVIRONMENT,JS_BCRYPT:process.env.JS_BCRYPT,JWT_SECRET:process.env.JWT_SECRET?(0,bd.createSecretKey)(process.env.JWT_SECRET,"utf8"):void 0,JWT_SECRET_FALLBACK:process.env.JWT_SECRET_FALLBACK?(0,bd.createSecretKey)(process.env.JWT_SECRET_FALLBACK,"utf8"):void 0,ENCRYPTION_KEY:process.env.ENCRYPTION_KEY,API_ENCRYPTION_KEY:RC(),COUCH_DB_URL:process.env.COUCH_DB_URL||"http://localhost:4005",COUCH_DB_SQL_URL:process.env.COUCH_DB_SQL_URL,COUCH_DB_USERNAME:process.env.COUCH_DB_USER,COUCH_DB_PASSWORD:process.env.COUCH_DB_PASSWORD,GOOGLE_CLIENT_ID:process.env.GOOGLE_CLIENT_ID,GOOGLE_CLIENT_SECRET:process.env.GOOGLE_CLIENT_SECRET,SALT_ROUNDS:process.env.SALT_ROUNDS,REDIS_URL:process.env.REDIS_URL||"localhost:6379",REDIS_PASSWORD:process.env.REDIS_PASSWORD,REDIS_CLUSTERED:process.env.REDIS_CLUSTERED,MINIO_ACCESS_KEY:process.env.MINIO_ACCESS_KEY,MINIO_SECRET_KEY:process.env.MINIO_SECRET_KEY,AWS_SESSION_TOKEN:process.env.AWS_SESSION_TOKEN,AWS_REGION:process.env.AWS_REGION||"eu-west-1",MINIO_URL:process.env.MINIO_URL,MINIO_ENABLED:process.env.MINIO_ENABLED||1,INTERNAL_API_KEY:process.env.INTERNAL_API_KEY,INTERNAL_API_KEY_FALLBACK:process.env.INTERNAL_API_KEY_FALLBACK,MULTI_TENANCY:process.env.MULTI_TENANCY,ACCOUNT_PORTAL_URL:process.env.ACCOUNT_PORTAL_URL||"https://account.budibase.app",INTERNAL_ACCOUNT_PORTAL_URL:process.env.INTERNAL_ACCOUNT_PORTAL_URL||process.env.ACCOUNT_PORTAL_URL||"https://account.budibase.app",ACCOUNT_PORTAL_API_KEY:process.env.ACCOUNT_PORTAL_API_KEY||"",BUDICLOUD_URL:process.env.BUDICLOUD_URL||"https://budibase.app",DISABLE_ACCOUNT_PORTAL:process.env.DISABLE_ACCOUNT_PORTAL,SELF_HOSTED:Ay,COOKIE_DOMAIN:process.env.COOKIE_DOMAIN,PLATFORM_URL:process.env.PLATFORM_URL||"",POSTHOG_TOKEN:process.env.POSTHOG_TOKEN,POSTHOG_PERSONAL_TOKEN:process.env.POSTHOG_PERSONAL_TOKEN,POSTHOG_API_HOST:process.env.POSTHOG_API_HOST||"https://us.i.posthog.com",POSTHOG_FEATURE_FLAGS_ENABLED:process.env.POSTHOG_FEATURE_FLAGS_ENABLED,ENABLE_ANALYTICS:process.env.ENABLE_ANALYTICS,TENANT_FEATURE_FLAGS:process.env.TENANT_FEATURE_FLAGS,CLOUDFRONT_CDN:process.env.CLOUDFRONT_CDN,CLOUDFRONT_PRIVATE_KEY_64:process.env.CLOUDFRONT_PRIVATE_KEY_64,CLOUDFRONT_PUBLIC_KEY_ID:process.env.CLOUDFRONT_PUBLIC_KEY_ID,BACKUPS_BUCKET_NAME:process.env.BACKUPS_BUCKET_NAME||Kn.BACKUPS,APPS_BUCKET_NAME:process.env.APPS_BUCKET_NAME||Kn.APPS,TEMPLATES_BUCKET_NAME:process.env.TEMPLATES_BUCKET_NAME||Kn.TEMPLATES,GLOBAL_BUCKET_NAME:process.env.GLOBAL_BUCKET_NAME||Kn.GLOBAL,PLUGIN_BUCKET_NAME:process.env.PLUGIN_BUCKET_NAME||Kn.PLUGINS,TEMP_BUCKET_NAME:process.env.TEMP_BUCKET_NAME||Kn.TEMP,USE_COUCH:process.env.USE_COUCH||!0,MOCK_REDIS:process.env.MOCK_REDIS,DEFAULT_LICENSE:process.env.DEFAULT_LICENSE,SERVICE:NC(),LOG_LEVEL:process.env.LOG_LEVEL||"info",SESSION_UPDATE_PERIOD:process.env.SESSION_UPDATE_PERIOD,DEPLOYMENT_ENVIRONMENT:process.env.DEPLOYMENT_ENVIRONMENT||"docker-compose",HTTP_LOGGING:CC(),ENABLE_AUDIT_LOG_IP_ADDR:process.env.ENABLE_AUDIT_LOG_IP_ADDR,SQL_LOGGING_ENABLE:process.env.SQL_LOGGING_ENABLE,SQL_MAX_ROWS:process.env.SQL_MAX_ROWS,SQL_MAX_RELATED_ROWS:process.env.MAX_RELATED_ROWS,SMTP_FALLBACK_ENABLED:process.env.SMTP_FALLBACK_ENABLED,SMTP_USER:process.env.SMTP_USER,SMTP_PASSWORD:process.env.SMTP_PASSWORD,SMTP_HOST:process.env.SMTP_HOST,SMTP_PORT:parseInt(process.env.SMTP_PORT||""),SMTP_FROM_ADDRESS:process.env.SMTP_FROM_ADDRESS,DISABLE_JWT_WARNING:process.env.DISABLE_JWT_WARNING,BLACKLIST_IPS:process.env.BLACKLIST_IPS,SERVICE_TYPE:"unknown",PASSWORD_MIN_LENGTH:process.env.PASSWORD_MIN_LENGTH,PASSWORD_MAX_LENGTH:process.env.PASSWORD_MAX_LENGTH,ENABLE_SSO_MAINTENANCE_MODE:Ay?process.env.ENABLE_SSO_MAINTENANCE_MODE:!1,...bC(),DISABLE_PINO_LOGGER:process.env.DISABLE_PINO_LOGGER,OFFLINE_MODE:process.env.OFFLINE_MODE,SESSION_EXPIRY_SECONDS:process.env.SESSION_EXPIRY_SECONDS,_set(t,e){process.env[t]=e,lt[t]=e},ROLLING_LOG_MAX_SIZE:process.env.ROLLING_LOG_MAX_SIZE||"10M",ENABLE_SCIM_LOGGER:process.env.ENABLE_SCIM_LOGGER,BB_ADMIN_USER_EMAIL:process.env.BB_ADMIN_USER_EMAIL,BB_ADMIN_USER_PASSWORD:process.env.BB_ADMIN_USER_PASSWORD,OPENAI_API_KEY:process.env.OPENAI_API_KEY,MIN_VERSION_WITHOUT_POWER_ROLE:process.env.MIN_VERSION_WITHOUT_POWER_ROLE||"3.0.0",DISABLE_CONTENT_SECURITY_POLICY:process.env.DISABLE_CONTENT_SECURITY_POLICY,BSON_BUFFER_SIZE:DC(process.env.BSON_BUFFER_SIZE)};function As(t){let e=(0,_y.cloneDeep)(lt),r;for(r in t)lt._set(r,t[r]);return()=>{for(let[n,i]of Object.entries(e))lt._set(n,i)}}s(As,"setEnv");function Iy(t,e){let r=As(t),n=e();return n instanceof Promise?n.finally(r):(r(),n)}s(Iy,"withEnv");var wy=["API_ENCRYPTION_KEY","BB_ADMIN_USER_PASSWORD","COUCH_DB_PASSWORD","COUCH_DB_SQL_URL","COUCH_DB_URL","GOOGLE_CLIENT_SECRET","INTERNAL_API_KEY_FALLBACK","INTERNAL_API_KEY","JWT_SECRET","MINIO_ACCESS_KEY","MINIO_SECRET_KEY","OPENAI_API_KEY","REDIS_PASSWORD"];for(let[t,e]of Object.entries(lt))e==="0"&&(lt[t]=0),e==="false"&&(lt[t]=0);var E=lt;var Ga={};N(Ga,{Databases:()=>vd,SEPARATOR:()=>Qn,SelectableDatabase:()=>Wa,getRedisClusterOptions:()=>Pd,getRedisConnectionDetails:()=>$a,getRedisOptions:()=>Jr,removeDbPrefix:()=>Nd});var Qn="-",vd=(O=>(O.PW_RESETS="pwReset",O.VERIFICATIONS="verification",O.INVITATIONS="invitation",O.DEV_LOCKS="devLocks",O.DEBOUNCE="debounce",O.SESSIONS="session",O.USER_CACHE="users",O.FLAGS="flags",O.WORKSPACE_METADATA="appMetadata",O.QUERY_VARS="queryVars",O.LICENSES="license",O.GENERIC_CACHE="data_cache",O.WRITE_THROUGH="writeThrough",O.LOCKS="locks",O.SOCKET_IO="socket_io",O.BPM_EVENTS="bpmEvents",O.DOC_WRITE_THROUGH="docWriteThrough",O.RECAPTCHA_SESSION="recaptchaSession",O))(vd||{}),Wa=(y=>(y[y.DEFAULT=0]="DEFAULT",y[y.SOCKET_IO=1]="SOCKET_IO",y[y.RATE_LIMITING=2]="RATE_LIMITING",y[y.UNUSED_2=3]="UNUSED_2",y[y.UNUSED_3=4]="UNUSED_3",y[y.UNUSED_4=5]="UNUSED_4",y[y.UNUSED_5=6]="UNUSED_5",y[y.UNUSED_6=7]="UNUSED_6",y[y.UNUSED_7=8]="UNUSED_7",y[y.UNUSED_8=9]="UNUSED_8",y[y.UNUSED_9=10]="UNUSED_9",y[y.UNUSED_10=11]="UNUSED_10",y[y.UNUSED_11=12]="UNUSED_11",y[y.UNUSED_12=13]="UNUSED_12",y[y.UNUSED_13=14]="UNUSED_13",y[y.UNUSED_14=15]="UNUSED_14",y))(Wa||{});function $a(){let t=E.REDIS_PASSWORD,e=E.REDIS_URL.split("//");e=e.length>1?e[1]:e[0],e=e.split("@"),e.length>1?(t=e[0].split(":")[1],e=e[1]):e=e[0];let[r,n]=e.split(":"),i=parseInt(n);return{host:r,password:t,port:isNaN(i)?6379:i}}s($a,"getRedisConnectionDetails");function Pd(){return{slotsRefreshTimeout:2e3,dnsLookup:(t,e)=>e(null,t),redisOptions:{...Jr(),tls:{}}}}s(Pd,"getRedisClusterOptions");function Jr(){let{host:t,password:e,port:r}=$a();return{connectTimeout:3e4,port:r,host:t,password:e}}s(Jr,"getRedisOptions");function Nd(t){let e=t.split(Qn);return e.length>=2?(e.shift(),e.join(Qn)):e[0]}s(Nd,"removeDbPrefix");var vT=B(require("events"));var ei={};N(ei,{Duration:()=>Ee,DurationType:()=>xf,clearCookie:()=>gr,compare:()=>kd,getCookie:()=>Vt,getProxyDispatcher:()=>nx,getWorkspaceIdFromCtx:()=>on,hasCircularStructure:()=>ex,hash:()=>Ld,isAudited:()=>Cf,isClient:()=>Xb,isPublicApiRequest:()=>Jb,isServingApp:()=>Yb,isServingBuilder:()=>Hb,isServingBuilderPreview:()=>zb,isValidInternalAPIKey:()=>js,newid:()=>ne,openJwt:()=>su,resetProxyDispatcherCache:()=>ix,setCookie:()=>CT,time:()=>rx,timeout:()=>Rf,urlHasProtocol:()=>tx,validEmail:()=>bf});var Dy=require("uuid");function ne(){return(0,Dy.v4)().replace(/-/g,"")}s(ne,"newid");var Ud=E.JS_BCRYPT?require("bcryptjs"):require("bcrypt"),UC=E.SALT_ROUNDS||10;async function Ld(t){let e=await Ud.genSalt(UC);return Ud.hash(t,e)}s(Ld,"hash");async function kd(t,e){return Ud.compare(t,e)}s(kd,"compare");var iu=B(require("jsonwebtoken"));var ue={};N(ue,{DEFAULT_TENANT_ID:()=>ae,baseGlobalDBName:()=>Cs,doInAutomationContext:()=>ib,doInContext:()=>ef,doInEnvironmentContext:()=>mb,doInFeatureFlagOverrideContext:()=>uf,doInIPContext:()=>nf,doInIdentityContext:()=>Os,doInLicenseContext:()=>ob,doInScimContext:()=>hb,doInSelfHostTenantUsingCloud:()=>sb,doInTenant:()=>Re,doInWorkspaceContext:()=>cb,doInWorkspaceMigrationContext:()=>db,ensureSnippetContext:()=>Gy,getAuditLogDBName:()=>Wy,getAuditLogsDB:()=>gb,getAutomationId:()=>tf,getCurrentContext:()=>en,getDevWorkspaceDB:()=>Tb,getDevWorkspaceId:()=>fb,getEnvironmentVariables:()=>Eb,getFeatureFlagOverrides:()=>af,getFeatureFlags:()=>sf,getGlobalDB:()=>H,getGlobalDBName:()=>Xr,getIP:()=>rf,getIdentity:()=>Ft,getLicense:()=>ab,getPlatformURL:()=>Xd,getProdWorkspaceDB:()=>yb,getProdWorkspaceId:()=>pb,getScimDBName:()=>eb,getSelfHostCloudDB:()=>ub,getTableForView:()=>Sb,getTenantIDFromWorkspaceID:()=>zn,getTenantId:()=>q,getWorkspaceDB:()=>Jn,getWorkspaceId:()=>Le,identity:()=>_s,isMultiTenant:()=>pr,isScim:()=>pt,isSelfHostUsingCloud:()=>za,isTenancyEnabled:()=>rb,isTenantIdSet:()=>tb,setFeatureFlags:()=>of,setTableForView:()=>Ab});var _s={};N(_s,{doInAccountContext:()=>LC,doInIdentityContext:()=>Fd,doInUserContext:()=>Bd,getAccountUserId:()=>Ry,getIdentity:()=>Md});function Md(){return Ft()}s(Md,"getIdentity");function Fd(t,e){return Os(t,e)}s(Fd,"doInIdentityContext");function Bd(t,e,r){let n={...t,_id:t._id,type:"user",hostInfo:{ipAddress:e.request.ip,userAgent:e.userAgent.source}};return Fd(n,r)}s(Bd,"doInUserContext");function LC(t,e){let r=Ry(t),n=t.tenantId,i={_id:r,type:"user",tenantId:n,account:t};return Fd(i,e)}s(LC,"doInAccountContext");function Ry(t){let e;return $o(t)?e=t.budibaseUserId:e=t.accountId,e}s(Ry,"getAccountUserId");var dt=s(t=>{let e=Wd(t),r,n;if(e.auth?.username)r=e.auth.username;else if(E.COUCH_DB_USERNAME)r=E.COUCH_DB_USERNAME;else if(!E.isTest())throw new Error("CouchDB username not set");if(e.auth?.password)n=e.auth.password;else if(E.COUCH_DB_PASSWORD)n=E.COUCH_DB_PASSWORD;else if(!E.isTest())throw new Error("CouchDB password not set");let i=Buffer.from(`${r}:${n}`).toString("base64"),o=E.COUCH_DB_SQL_URL;if(E.isDev()&&!o)o="http://localhost:4006";else if(!o&&e.url){let a=new URL(e.url);o=e.url.replace(a.port,"4984")}return{url:e.url,sqlUrl:Wd(o).url,auth:{username:r,password:n},cookie:`Basic ${i}`}},"getCouchInfo"),Wd=s((t=E.COUCH_DB_URL)=>{let e,r,n,i;if(t){/^https?:\/\//i.test(t)||(t=`http://${t}`);let a=t.split("://"),u=a[0],c=a.slice(1).join("://");if(t.includes("@")){let l=c.split("@");i=l[l.length-1];let d=l.slice(0,-1).join("@");if(d.includes(":")){let f=d.split(":");r=f[0],n=f.slice(1).join(":")}else r=d}else i=c;e=`${u}://${i}`}return{url:e,auth:{username:r,password:n}}},"getUrlInfo");var My=B(require("@budibase/nano"));var Cy=B(require("node-fetch"));function qa(t){return t.replace(/(https?:\/\/)|(\/)+/g,"$1$2")}s(qa,"checkSlashesInUrl");async function by(t,e="GET",r){let{url:n,cookie:i}=dt(),o=`${n}/${t}`;return await Is({url:o,cookie:i,method:e,body:r})}s(by,"directCouchCall");async function Is({url:t,cookie:e,method:r,body:n}){let i={method:r,headers:{Authorization:e}};return n&&r!=="GET"&&(typeof n=="string"?(i.body=n,i.headers["Content-Type"]="text/plain"):(i.body=JSON.stringify(n),i.headers["Content-Type"]="application/json")),await(0,Cy.default)(qa(encodeURI(t)),i)}s(Is,"directCouchUrlCall");async function $d(t,e="GET",r){let n=await by(t,e,r);if(n.status<300)return await n.json();throw"Cannot connect to CouchDB instance"}s($d,"directCouchQuery");var Zr=B(require("pouchdb"));var xy,vy=!1,Gd=s((t={})=>{let{url:e,cookie:r}=dt(),n={prefix:e,fetch:(i,o)=>(o.headers.set("Authorization",r),Zr.default.fetch(i,o))};if(t.inMemory){let i=require("pouchdb-adapter-memory");Zr.default.plugin(i),n={adapter:"memory"}}if(t.onDisk&&(n={adapter:"leveldb"}),t.replication){let i=require("@budibase/pouchdb-replication-stream");Zr.default.plugin(i.plugin),Zr.default.adapter("writableStream",i.adapters.writableStream)}if(t.find){let i=require("pouchdb-find");Zr.default.plugin(i)}return Zr.default.defaults(n)},"getPouch");function Ka(t){xy=Gd(t),vy=!0}s(Ka,"init");var kC=s(()=>{if(!vy)throw new Error("init has not been called")},"checkInitialised");function Xe(t,e){kC();let r=new xy(t,e),n=r.put;return r.put=async(i,o={})=>(i.createdAt||(i.createdAt=new Date().toISOString()),i.updatedAt=new Date().toISOString(),n(i,o)),r.exists=async()=>!(await r.info()).error,r}s(Xe,"getPouchDB");async function ws(t){if(!(!t||E.isTest()))try{return await t.close()}catch{}}s(ws,"closePouchDB");var le=B(require("dd-trace"));var jn=class{constructor(e){this.db=e}static{s(this,"DDInstrumentedDatabase")}get name(){return this.db.name}exists(e){return le.default.trace("db.exists",r=>(r.addTags({db_name:this.name,doc_id:e}),e?this.db.exists(e):this.db.exists()))}get(e){return le.default.trace("db.get",r=>(r.addTags({db_name:this.name,doc_id:e}),this.db.get(e)))}tryGet(e){return le.default.trace("db.tryGet",async r=>{r.addTags({db_name:this.name,doc_id:e});let n=await this.db.tryGet(e);return r.addTags({doc_found:n!==void 0}),n})}getMultiple(e,r){return le.default.trace("db.getMultiple",async n=>{n.addTags({db_name:this.name,num_docs:e?.length||0,allow_missing:r?.allowMissing});let i=await this.db.getMultiple(e,r);return n.addTags({num_docs_found:i.length}),i})}remove(e,r){return le.default.trace("db.remove",async n=>{n.addTags({db_name:this.name,doc_id:e,rev:r});let i=typeof e=="object",o=i?e._id:e;r=i?e._rev:r;let a=await this.db.remove(o,r);return n.addTags({ok:a.ok}),a})}bulkRemove(e,r){return le.default.trace("db.bulkRemove",n=>(n.addTags({db_name:this.name,num_docs:e.length,silence_errors:r?.silenceErrors}),this.db.bulkRemove(e,r)))}put(e,r){return le.default.trace("db.put",async n=>{n.addTags({db_name:this.name,doc_id:e._id,force:r?.force,return_doc:r?.returnDoc});let i=await this.db.put(e,r);return n.addTags({ok:i.ok}),i})}bulkDocs(e){return le.default.trace("db.bulkDocs",r=>(r.addTags({db_name:this.name,num_docs:e.length}),this.db.bulkDocs(e)))}async find(e){return le.default.trace("db.find",async r=>{r.addTags({db_name:this.name,...e});let n=await this.db.find(e);return r.addTags({rows_length:n.docs.length}),n})}allDocs(e){return le.default.trace("db.allDocs",async r=>{r.addTags({db_name:this.name,...e});let n=await this.db.allDocs(e);return r.addTags({total_rows:n.total_rows,rows_length:n.rows.length,offset:n.offset}),n})}query(e,r){return le.default.trace("db.query",async n=>{n.addTags({db_name:this.name,view_name:e,...r});let i=await this.db.query(e,r);return n.addTags({total_rows:i.total_rows,rows_length:i.rows.length,offset:i.offset}),i})}destroy(){return le.default.trace("db.destroy",async e=>{e.addTags({db_name:this.name});let r=await this.db.destroy();return e.addTags({ok:r.ok}),r})}compact(){return le.default.trace("db.compact",async e=>{e.addTags({db_name:this.name});let r=await this.db.compact();return e.addTags({ok:r.ok}),r})}dump(e,r){return le.default.trace("db.dump",n=>(n.addTags({db_name:this.name,batch_limit:r?.batch_limit,batch_size:r?.batch_size,style:r?.style,timeout:r?.timeout,num_doc_ids:r?.doc_ids?.length,view:r?.view}),this.db.dump(e,r)))}load(...e){return le.default.trace("db.load",r=>(r.addTags({db_name:this.name,num_args:e.length}),this.db.load(...e)))}createIndex(...e){return le.default.trace("db.createIndex",r=>(r.addTags({db_name:this.name,num_args:e.length}),this.db.createIndex(...e)))}deleteIndex(...e){return le.default.trace("db.deleteIndex",r=>(r.addTags({db_name:this.name,num_args:e.length}),this.db.deleteIndex(...e)))}getIndexes(...e){return le.default.trace("db.getIndexes",r=>(r.addTags({db_name:this.name,num_args:e.length}),this.db.getIndexes(...e)))}sql(e,r){return le.default.trace("db.sql",async n=>{n.addTags({db_name:this.name,num_bindings:r?.length});let i=await this.db.sql(e,r);return n.addTags({num_rows:i.length}),i})}sqlPurgeDocument(e){return le.default.trace("db.sqlPurgeDocument",r=>(r.addTags({db_name:this.name,num_docs:Array.isArray(e)?e.length:1}),this.db.sqlPurgeDocument(e)))}sqlDiskCleanup(){return le.default.trace("db.sqlDiskCleanup",e=>(e.addTags({db_name:this.name}),this.db.sqlDiskCleanup()))}};var zd={};N(zd,{breakExternalTableId:()=>Kd,breakRowIdField:()=>HC,buildExternalTableId:()=>VC,convertRowId:()=>YC,encodeTableId:()=>qC,encodeViewId:()=>KC,extractDate:()=>jd,generateRowIdField:()=>QC,getNativeSql:()=>Yn,isExternalTable:()=>qd,isExternalTableID:()=>Qa,isInternalTableID:()=>GC,isRowId:()=>jC,isValidFilter:()=>Ya,isValidISODateString:()=>ja,isValidISODateStringWithoutTimezone:()=>Qd,isValidTime:()=>Yd,sqlLog:()=>Ds,validateManyToMany:()=>Hd});var Vd=`${b}${b}`,Ny=/^\[.*]$/g,MC=encodeURIComponent(" "),FC=/^\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}:\d{2}(?:.\d{3})?Z)?$/,BC=/^\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}:\d{2}(?:.\d{3})?)?$/,WC=/(\d{4}-\d{2}-\d{2})/,$C=/^(?:\d{2}:)?(?:\d{2}:)(?:\d{2})$/;function Qa(t){return t.startsWith("datasource"+b)}s(Qa,"isExternalTableID");function GC(t){return!Qa(t)}s(GC,"isInternalTableID");function Yn(t){let e=t.toSQL();if(Array.isArray(e))return e;let r;return e.toNative&&(r=e.toNative()),{sql:r?.sql||e.sql,bindings:r?.bindings||e.bindings}}s(Yn,"getNativeSql");function qd(t){return t?.sourceId&&t.sourceId.includes("datasource"+b)&&t?.sourceId!==Dn||t?.sourceType==="external"?!0:!!(t?._id&&Qa(t._id))}s(qd,"isExternalTable");function VC(t,e){return`${t}${Vd}${encodeURIComponent(e)}`}s(VC,"buildExternalTableId");function qC(t){return Qa(t)?encodeURIComponent(t):t}s(qC,"encodeTableId");function KC(t){return encodeURIComponent(t)}s(KC,"encodeViewId");function Kd(t){let e=t.split(Vd),r=e.shift(),n=e.join(Vd);if(n.includes(MC)&&(n=decodeURIComponent(n)),!r||!n)throw new Error("Unable to get datasource/table name from table ID");return{datasourceId:r,tableName:n}}s(Kd,"breakExternalTableId");function QC(t=[]){Array.isArray(t)||(t=[t]);for(let e in t)t[e]instanceof Buffer&&(t[e]=t[e].toString());return encodeURIComponent(JSON.stringify(t).replace(/"/g,"'"))}s(QC,"generateRowIdField");function jC(t){return Array.isArray(t)||typeof t=="string"&&t.match(Ny)!=null}s(jC,"isRowId");function YC(t){return Array.isArray(t)?t[0]:typeof t=="string"&&t.match(Ny)!=null?t.substring(1,t.length-1):t}s(YC,"convertRowId");function HC(t){if(!t)return[];let e=typeof t=="string"?t:t._id,r=decodeURIComponent(e).replace(/'/g,'"');try{let n=JSON.parse(r);return Array.isArray(n)?n:[n]}catch{return[t]}}s(HC,"breakRowIdField");function ja(t){let e=t.trim();if(!FC.test(e))return!1;let r=new Date(e);return!isNaN(r.getTime())}s(ja,"isValidISODateString");function Qd(t){let e=t.trim();if(!BC.test(e))return!1;let r=new Date(e);return!isNaN(r.getTime())}s(Qd,"isValidISODateStringWithoutTimezone");function jd(t){let e=t.match(WC);if(e)return e[0]}s(jd,"extractDate");function Ya(t){return t!=null&&t!==""}s(Ya,"isValidFilter");function Yd(t){return $C.test(t)}s(Yd,"isValidTime");function Ds(t,e,r){if(!E.SQL_LOGGING_ENABLE)return;let n=`[SQL] [${t.toUpperCase()}] query="${e}"`;r&&(n+=` values="${r.join(", ")}"`),console.log(n)}s(Ds,"sqlLog");function zC(t){return!!t.through&&!!t.fromPrimary&&!!t.from&&!!t.toPrimary&&!!t.to}s(zC,"isValidManyToManyRelationship");function Hd(t){if(zC(t))return t}s(Hd,"validateManyToMany");var Uy="Database does not exist.";function Ly(t){return(0,My.default)({url:t.url,requestDefaults:{headers:{Authorization:t.cookie}},parseUrl:!1})}s(Ly,"buildNano");var dr=class extends Error{constructor(r,n){super(r);let i=n.status||n.statusCode||500;this.status=i,this.statusCode=i,this.reason=n.reason||"Unknown",this.name=n.name,this.errid=n.errid||"Unknown",this.description=n.description||"Unknown",this.error=n.error||"Not found"}static{s(this,"CouchDBError")}};function JC(t,e,r){if(!t||!e)throw new Error("Unable to create database without database name or connection");let n=new Hn(t,r,e);return new jn(n)}s(JC,"DatabaseWithConnection");var Hn=class t{constructor(e,r,n){this.couchInfo=dt();this.name=e,this.pouchOpts=r||{},n&&(this.couchInfo=dt(n),this.instanceNano=Ly(this.couchInfo)),t.nano||t.init()}static{s(this,"DatabaseImpl")}static init(){let e=dt();t.nano=Ly(e)}exists(e){return e===void 0?this.dbExists():this.docExists(e)}async dbExists(){return(await Is({url:`${this.couchInfo.url}/${this.name}`,method:"HEAD",cookie:this.couchInfo.cookie})).status===200}async docExists(e){try{return await this.performCall(r=>()=>r.head(e)),!0}catch{return!1}}nano(){return this.instanceNano||t.nano}getDb(){return this.nano().db.use(this.name)}async checkAndCreateDb(){let e=!this.pouchOpts?.skip_setup,r=await this.exists();if(!e&&!r)throw new Error("DB does not exist");if(!r)try{await this.nano().db.create(this.name)}catch(n){if(n.statusCode!==412)throw new dr(n.message,n)}return this.getDb()}async performCallWithDBCreation(e){let r=this.getDb(),n=await e(r);try{return await n()}catch(i){if(i.statusCode===404&&i.reason===Uy)return await this.checkAndCreateDb(),await this.performCallWithDBCreation(e);throw new dr(`CouchDB error: ${i.message}`,i)}}async performCall(e){let r=this.getDb(),n=await e(r);try{return await n()}catch(i){throw new dr(`CouchDB error: ${i.message}`,i)}}async get(e){return this.performCall(r=>{if(!e)throw new Error("Unable to get doc without a valid _id.");return()=>r.get(e)})}async tryGet(e){try{return await this.get(e)}catch(r){if(r.statusCode===404)return;throw r}}async getMultiple(e,r){if(!e||e.length===0)return[];e=[...new Set(e)];let n=!r?.excludeDocs,i=await this.allDocs({keys:e,include_docs:n}),o=s(c=>n&&c.doc==null||c.value&&"deleted"in c.value&&c.value.deleted?!0:c.error==="not_found","rowUnavailable"),a=i.rows.filter(c=>!o(c)),u=a.length!==i.rows.length;if(!r?.allowMissing&&u){let l=i.rows.filter(d=>o(d)).map(d=>d.key).join(", ");throw new Error(`Unable to get bulk documents: ${l}`)}return a.map(c=>n?c.doc:c.value)}async remove(e,r){return this.performCall(n=>{let i,o;if(Nm(e)?(i=e._id,o=e._rev):(i=e,o=r),!i||!o)throw new Error("Unable to remove doc without a valid _id and _rev.");return()=>n.destroy(i,o)})}async bulkRemove(e,r){let n=await this.performCall(a=>()=>a.bulk({docs:e.map(u=>({...u,_deleted:!0}))}));if(r?.silenceErrors)return;let i=!1,o="Unable to bulk remove documents: ";for(let a of n)a.error&&(i=!0,o+=a.error);if(i)throw new dr(o,{name:this.name,status:400})}async post(e,r){return e._id||(e._id=ne()),this.put(e,r)}async put(e,r){if(!e._id)throw new Error("Cannot store document without _id field.");return this.performCallWithDBCreation(async n=>{if(e.createdAt||(e.createdAt=new Date().toISOString()),e.updatedAt=new Date().toISOString(),r?.force&&e._id)try{let i=await this.get(e._id);i&&(e._rev=i._rev)}catch(i){if(i.status!==404)throw i}return async()=>{let i=await n.insert(e);return r?.returnDoc?{...i,doc:{...e,_rev:i.rev}}:i}})}async bulkDocs(e){let r=new Date().toISOString();return this.performCallWithDBCreation(n=>()=>n.bulk({docs:e.map(i=>({createdAt:r,...i,updatedAt:r}))}))}async find(e){return this.performCall(r=>async()=>r.find(e))}async allDocs(e){return this.performCall(r=>async()=>{try{return await r.list(e)}catch(n){if(n.reason===Uy)return{offset:0,total_rows:0,rows:[]};throw n}})}async _sqlQuery(e,r,n){e=qa(`${this.couchInfo.sqlUrl}/${e}`);let i={url:e,method:r,cookie:this.couchInfo.cookie};return n&&(i.body=n),this.performCall(()=>async()=>{let o=await Is(i),a=await o.text();if(o.status>300){let u;try{u=JSON.parse(a)}catch{throw console.error(`SQS error: ${a}`),new dr("error while running SQS query, please try again later",{name:"sqs_error",status:o.status})}throw u}return JSON.parse(a)})}async sql(e,r){let i=`/${this.name}/${wt}`;return Ds("sqlite3",e,r),await this._sqlQuery(i,"POST",{query:e,args:r})}async sqlDiskCleanup(){let r=`/${this.name}/_cleanup`;try{await this._sqlQuery(r,"POST")}catch(n){if(n.status!==500)throw n}}async sqlPurgeDocument(e){Array.isArray(e)||(e=[e]);let n=`/${this.name}/_purge`;return await this._sqlQuery(n,"POST",{docs:e})}async query(e,r){return this.performCall(n=>{let[i,o]=e.split("/");return()=>n.view(i,o,r)})}async destroy(){if(await this.exists(wt)){let e=await this.get(wt);e.sql.tables={},await this.put(e),await this.sqlDiskCleanup()}try{return await this.nano().db.destroy(this.name)}catch(e){if(e.statusCode===404)return{ok:!0};throw new dr(e.message,e)}}async compact(){return this.performCall(e=>()=>e.compact())}async dump(e,r){return Xe(this.name).dump(e,r)}async load(e){return Xe(this.name).load(e)}async createIndex(e){return Xe(this.name).createIndex(e)}async deleteIndex(e){return Xe(this.name).deleteIndex(e)}async getIndexes(){return Xe(this.name).getIndexes()}};function De(t,e){return new jn(new Hn(t,e))}s(De,"getDB");async function Ke(t,e,r){let n=De(t,r);return await e(n)}s(Ke,"doWithDB");async function Jd(t){let e="/_all_dbs";return t&&(e+=`?${t}`),await $d(e)}s(Jd,"directCouchAllDbs");var Zd="No app provided";function fr(t){if(!t)throw Zd;return t.startsWith(Ze)}s(fr,"isDevWorkspaceID");function ZC(t){if(!t)throw Zd;return t.startsWith(Je)&&!fr(t)}s(ZC,"isProdWorkspaceID");function Rs(t){if(!t)throw Zd;return fr(t.appId)}s(Rs,"isDevWorkspace");function Ha(t){if(!t||t.startsWith(Ze))return t;let e=t.split(Je);e.shift();let r=e.join(Je);return`${Ze}${r}`}s(Ha,"getDevWorkspaceID");function Qe(t){if(!t||!t.startsWith(Ze))return t;let e=t.split(Ze);e.shift();let r=e.join(Ze);return`${Je}${r}`}s(Qe,"getProdWorkspaceID");var Fy=require("async_hooks");var he=class t{static{s(this,"Context")}static{this.storage=new Fy.AsyncLocalStorage}static run(e,r){return t.storage.run(e,()=>r())}static get(){return t.storage.getStore()}};var By=null;function Xr(t){return t||(t=q()),Cs(t)}s(Xr,"getGlobalDBName");function Wy(t){return t||(t=q()),t===ae?fe.AUDIT_LOGS.name:`${t}${b}${fe.AUDIT_LOGS.name}`}s(Wy,"getAuditLogDBName");function eb(t){return t||(t=q()),t===ae?fe.SCIM_LOGS.name:`${t}${b}${fe.SCIM_LOGS.name}`}s(eb,"getScimDBName");function Cs(t){return!t||t===ae?fe.GLOBAL.name:`${t}${b}${fe.GLOBAL.name}`}s(Cs,"baseGlobalDBName");function Xd(){return E.PLATFORM_URL}s(Xd,"getPlatformURL");function pr(){return!!E.MULTI_TENANCY}s(pr,"isMultiTenant");function tb(){return!!he.get()?.tenantId}s(tb,"isTenantIdSet");function rb(){return E.MULTI_TENANCY}s(rb,"isTenancyEnabled");function zn(t){if(!t)return;if(!pr())return ae;let e=t.split(b),r=e[1]==="dev";if(!(r&&e.length===3||!r&&e.length===2))return r?e[2]:e[1]}s(zn,"getTenantIDFromWorkspaceID");function nb(t){let e;try{e=he.get()}catch{e={}}return e={...e,...t},e}s(nb,"updateContext");async function ft(t,e){lb();let r=nb(t);return he.run(r,e)}s(ft,"newContext");async function ib(t){return await Gy(),await ft({tenantId:zn(t.workspaceId),appId:t.workspaceId,automationId:t.automationId},t.task)}s(ib,"doInAutomationContext");async function ef(t,e){let r=zn(t);return ft({tenantId:r,appId:t},e)}s(ef,"doInContext");async function Re(t,e){return E.MULTI_TENANCY||(t=t||ae),ft(t?{tenantId:t}:{},e)}s(Re,"doInTenant");async function sb(t,e){return ft({tenantId:t,isSelfHostUsingCloud:!0},e)}s(sb,"doInSelfHostTenantUsingCloud");async function ob(t,e){return ft({license:t},e)}s(ob,"doInLicenseContext");function ab(){return he.get()?.license}s(ab,"getLicense");function za(){return!!he.get()?.isSelfHostUsingCloud}s(za,"isSelfHostUsingCloud");function ub(){let t=he.get();if(!t||!t.isSelfHostUsingCloud)throw new Error("Self-host cloud DB not found");return De(fe.SELF_HOST_CLOUD.name)}s(ub,"getSelfHostCloudDB");async function cb(t,e){return $y(t,e)}s(cb,"doInWorkspaceContext");async function $y(t,e,r){if(!t)throw new Error("workspaceId is required");let n=zn(t),i={appId:t,...r};return n&&(i.tenantId=n),ft(i,e)}s($y,"_doInWorkspaceContext");async function Os(t,e){if(!t)throw new Error("identity is required");let r={identity:t};return t.tenantId&&(r.tenantId=t.tenantId),ft(r,e)}s(Os,"doInIdentityContext");function lb(){if(he.get()?.isMigrating)throw new Error("The context cannot be changed, a migration is currently running")}s(lb,"guardMigration");async function db(t,e){return $y(t,e,{isMigrating:!0})}s(db,"doInWorkspaceMigrationContext");function Ft(){try{return he.get()?.identity}catch{}}s(Ft,"getIdentity");function q(){if(!pr())return ae;let e=he.get()?.tenantId;if(!e)throw new Error("Tenant id not found");return e}s(q,"getTenantId");function tf(){return he.get()?.automationId}s(tf,"getAutomationId");function Le(){let e=he.get()?.appId;return!e&&E.isTest()&&By?By:e}s(Le,"getWorkspaceId");function rf(){return he.get()?.ip}s(rf,"getIP");var fb=s(()=>{let t=Le();if(!t)throw new Error("Could not get workspaceId");return Ha(t)},"getDevWorkspaceId"),pb=s(()=>{let t=Le();if(!t)throw new Error("Could not get workspaceId");return Qe(t)},"getProdWorkspaceId");function mb(t,e){if(!t)throw new Error("Must supply environment variables.");return ft({environmentVariables:t},e)}s(mb,"doInEnvironmentContext");function hb(t){return ft({isScim:!0},t)}s(hb,"doInScimContext");function nf(t,e){return ft({ip:t},e)}s(nf,"doInIPContext");async function Gy(){let t=en();if(!t||t.snippets)return;let e,r=Jn();r&&(e=(await r.tryGet("app_metadata"))?.snippets),t.snippets=e||[]}s(Gy,"ensureSnippetContext");function Eb(){let t=he.get();return t.environmentVariables?t.environmentVariables:null}s(Eb,"getEnvironmentVariables");function H(){let t=he.get();if(!t||E.MULTI_TENANCY&&!t.tenantId)throw new Error("Global DB not found");if(t.isSelfHostUsingCloud)throw new Error("Global DB not found - self-host users using cloud don't have a global DB");return De(Cs(t?.tenantId))}s(H,"getGlobalDB");function gb(){if(!q())throw new Error("No tenant ID found - cannot open audit log DB");return De(Wy())}s(gb,"getAuditLogsDB");function Jn(t){let e=Le();if(!e)throw new Error("Unable to retrieve workspace DB - no workspace ID.");if(za())throw new Error("Workspace DB not found - self-host users using cloud don't have workspace DBs");return De(e,t)}s(Jn,"getWorkspaceDB");function yb(t){let e=Le();if(!e)throw new Error("Unable to retrieve prod DB - no workspace ID.");return De(Qe(e),t)}s(yb,"getProdWorkspaceDB");function Tb(t){let e=Le();if(!e)throw new Error("Unable to retrieve dev DB - no workspace ID.");return De(Ha(e),t)}s(Tb,"getDevWorkspaceDB");function pt(){return!!he.get()?.isScim}s(pt,"isScim");function en(){try{return he.get()}catch{return}}s(en,"getCurrentContext");function sf(t){let e=en();if(e)return e.featureFlagCache?.[t]}s(sf,"getFeatureFlags");function of(t,e){let r=en();r&&(r.featureFlagCache??={},r.featureFlagCache[t]=e)}s(of,"setFeatureFlags");function af(){return en()?.featureFlagOverrides||{}}s(af,"getFeatureFlagOverrides");async function uf(t,e){return await ft({featureFlagOverrides:t},e)}s(uf,"doInFeatureFlagOverrideContext");function Sb(t){let e=en();if(e)return e.viewToTableCache?.[t]}s(Sb,"getTableForView");function Ab(t,e){let r=en();r&&(r.viewToTableCache??={},r.viewToTableCache[t]=e)}s(Ab,"setTableForView");var Er={};N(Er,{AutomationViewMode:()=>Ua,BUDIBASE_DATASOURCE_TYPE:()=>Ad,DEFAULT_BB_DATASOURCE_ID:()=>Dn,DEFAULT_EMPLOYEE_TABLE_ID:()=>wd,DEFAULT_EXPENSES_TABLE_ID:()=>Id,DEFAULT_INVENTORY_TABLE_ID:()=>Od,DEFAULT_JOBS_TABLE_ID:()=>_d,DatabaseImpl:()=>Hn,DatabaseWithConnection:()=>JC,DeprecatedViews:()=>qn,DesignDocuments:()=>Ts,DocumentType:()=>ce,InternalTable:()=>xt,QueryBuilder:()=>Gt,Replication:()=>AT,SEPARATOR:()=>b,SQLITE_DESIGN_DOC_ID:()=>wt,SQS_DATASOURCE_INTERNAL:()=>Sd,StaticDatabases:()=>fe,UNICODE_MAX:()=>ve,USER_METADATA_PREFIX:()=>ys,ViewName:()=>lr,WORKSPACE_DEV:()=>La,WORKSPACE_DEV_PREFIX:()=>Ze,WORKSPACE_PREFIX:()=>Je,baseGlobalDBName:()=>Cs,checkErrorCode:()=>wT,closePouchDB:()=>ws,createApiKeyView:()=>ET,createNewUserEmailView:()=>mT,createPlatformAccountEmailView:()=>yT,createPlatformUserView:()=>TT,createUserAppView:()=>hT,createView:()=>Xn,dbExists:()=>kb,directCouchAllDbs:()=>Jd,directCouchCall:()=>by,directCouchQuery:()=>$d,directCouchUrlCall:()=>Is,doWithDB:()=>Ke,fullSearch:()=>$b,generateAgentChatID:()=>rT,generateAgentToolSourceID:()=>nT,generateAppUserID:()=>tu,generateDevInfoID:()=>Xy,generateGlobalUserID:()=>Zn,generateOAuth2LogID:()=>tT,generatePluginID:()=>eT,generateRoleID:()=>Ef,generateRowID:()=>hf,generateTableID:()=>Yy,generateTemplateID:()=>Zy,generateUserMetadataID:()=>zy,generateWorkspaceAppID:()=>iT,generateWorkspaceFavouriteID:()=>sT,generateWorkspaceID:()=>jy,getAllDbs:()=>pT,getAllWorkspaces:()=>$s,getCouchInfo:()=>dt,getDB:()=>De,getDevWorkspaceID:()=>Ha,getDevWorkspaceIDs:()=>Ub,getDocParams:()=>Wt,getGlobalDBName:()=>Xr,getGlobalIDFromUserMetadataID:()=>Jy,getGlobalUserParams:()=>nn,getOAuth2ConfigParams:()=>lT,getPluginParams:()=>cT,getPouch:()=>Gd,getPouchDB:()=>Xe,getProdWorkpaceIDs:()=>Nb,getProdWorkspaceID:()=>Qe,getQueryIndex:()=>oT,getRoleParams:()=>nu,getRowParams:()=>gf,getStartEndKeyURL:()=>Ws,getTemplateParams:()=>uT,getUrlInfo:()=>Wd,getUserMetadataParams:()=>aT,getUsersByWorkspaceParams:()=>ru,getWorkspaceAppParams:()=>dT,getWorkspaceFavouriteParams:()=>fT,getWorkspacesByIDs:()=>Pb,init:()=>Ka,isDevWorkspace:()=>Rs,isDevWorkspaceID:()=>fr,isDocumentConflictError:()=>Vb,isGlobalUserID:()=>Hy,isProdWorkspaceID:()=>ZC,isSameWorkspaceID:()=>Lb,paginatedSearch:()=>Wb,pagination:()=>Tf,prefixRoleID:()=>Bt,queryGlobalView:()=>$t,queryGlobalViewRaw:()=>_f,queryPlatformView:()=>Vs,queryView:()=>Af,queryViewRaw:()=>Gs,removeKeyNumbering:()=>qs,searchIndexes:()=>If});var Bs={};N(Bs,{WorkspaceState:()=>mf,getWorkspaceMetadata:()=>eu,invalidateWorkspaceMetadata:()=>xb});var hr={};N(hr,{getCacheClient:()=>df,getDocWritethroughClient:()=>Db,getInviteClient:()=>rn,getLockClient:()=>pf,getPasswordResetClient:()=>Fs,getSessionClient:()=>mr,getSocketClient:()=>wb,getUserClient:()=>Ms,getWorkspaceClient:()=>Xa,getWritethroughClient:()=>ff,init:()=>mt,shutdown:()=>Ky});var Za=B(require("ioredis"));var Ja=require("dd-trace"),qy=require("lodash");var Vy;if(E.MOCK_REDIS)try{Vy=require("ioredis-mock")}catch{console.log("Mock redis unavailable")}async function _b(t=0){return await Ja.tracer.trace("Redis.init",async e=>{if(E.MOCK_REDIS)return e.addTags({mock:!0}),new Vy(Jr());let r;if(E.REDIS_CLUSTERED){e.addTags({clustered:!0});let{host:n,port:i}=$a();r=new Za.Cluster([{host:n,port:i}],Pd())}else r=new Za.default(Jr());return new Promise((n,i)=>{r.on("error",o=>{e.addTags({error:!0}),console.error(`failed to connect to redis (db: ${t})`,o),i(o)}),r.on("reconnecting",()=>{console.log(`Redis reconnecting... (db: ${t})`)}),r.on("ready",()=>{e.addTags({connected:!0}),console.log(`Redis ready to receive commands (db: ${t})`),n(r)})})})}s(_b,"init");function Ob(t,e){return new Promise((r,n)=>{let i=new Set;t.on("data",o=>o.forEach(a=>i.add(a))),t.on("error",o=>n(o)),t.on("end",async()=>{try{let o=Array.from(i).map(async a=>{let u=await e.get(a);return u&&(u=JSON.parse(u)),{key:Nd(a),value:u}});r(await Promise.all(o))}catch(o){n(o)}})})}s(Ob,"promisifyStream");function Ib(t){return t.isCluster}s(Ib,"isCluster");var cf=class t{static{s(this,"RedisWrapper")}constructor(e,r){this.client=e,this.db=r}static async init(e,r=0){return await Ja.tracer.trace("RedisWrapper.init",async n=>{let i=await _b(r);return r&&!E.isTest()&&(n.addTags({db:e}),i.select(r)),new t(i,e)})}trace(e,r){return Ja.tracer.trace(e,async n=>(n.addTags({db:this.db}),await r(n)))}prefixed(e){return e.includes(this.db)?e:`${this.db}${Qn}${e}`}async finish(){return await this.trace("RedisWrapper.finish",async()=>{await this.client.quit()})}async scan(e=""){return await this.trace("RedisWrapper.scan",async r=>{r.addTags({key:e}),e=`${this.db}${Qn}${e}`;let n;Ib(this.client)?n=this.client.nodes("master")[0].scanStream({match:e+"*",count:100}):n=this.client.scanStream({match:e+"*",count:100});let i=await Ob(n,this.client);return r.addTags({numKeysFound:i.length}),i})}async keys(e){return await this.trace("RedisWrapper.keys",async r=>(r.addTags({pattern:e}),this.client.keys(this.prefixed(e))))}async exists(e){return await this.trace("RedisWrapper.exists",async r=>(r.addTags({key:e}),await this.client.exists(this.prefixed(e))))}async get(e){return await this.trace("RedisWrapper.get",async r=>{r.addTags({key:e});let n=await this.client.get(this.prefixed(e));n!=null&&n.key&&(n.key=e);try{return JSON.parse(n)}catch{return n}})}async bulkGet(e){return await this.trace("RedisWrapper.bulkGet",async r=>{if(r.addTags({numKeys:e.length}),e.length===0)return{};let n=await this.client.mget(e.map(i=>this.prefixed(i)));return r.addTags({numKeysFound:n.length}),(0,qy.zip)(e,n).reduce((i,[o,a])=>{if(o===void 0||a===void 0)throw new Error(`Keys and response length mismatch: ${e.length} vs ${n.length}`);try{i[o]=a?JSON.parse(a):null}catch{i[o]=a}return i},{})})}async store(e,r,n=null){return await this.trace("RedisWrapper.store",async i=>{i.addTags({key:e,expirySeconds:n}),typeof r=="object"&&(r=JSON.stringify(r)),await this.client.set(this.prefixed(e),r),n&&await this.client.expire(this.prefixed(e),n)})}async bulkStore(e,r=null){return await this.trace("RedisWrapper.bulkStore",async n=>{n.addTags({numKeys:Object.keys(e).length,expirySeconds:r});let i=Object.entries(e).reduce((a,[u,c])=>(a[this.prefixed(u)]=typeof c=="object"?JSON.stringify(c):c,a),{}),o=this.client.pipeline();if(o.mset(i),r!==null)for(let a of Object.keys(i))o.expire(a,r);await o.exec()})}async getTTL(e){return await this.trace("RedisWrapper.getTTL",async r=>(r.addTags({key:e}),await this.client.ttl(this.prefixed(e))))}async setExpiry(e,r){return await this.trace("RedisWrapper.setExpiry",async n=>(n.addTags({key:e,expirySeconds:r}),await this.client.expire(this.prefixed(e),r)))}async delete(e){return await this.trace("RedisWrapper.delete",async r=>{r.addTags({key:e}),await this.client.del(this.prefixed(e))})}async bulkDelete(e){return await this.trace("RedisWrapper.bulkDelete",async r=>{r.addTags({numKeys:e.length}),await this.client.del(e.map(n=>this.prefixed(n)))})}async clear(){return await this.trace("RedisWrapper.clear",async e=>{let r=await this.scan();e.addTags({numKeys:r.length}),await Promise.all(r.map(n=>this.delete(n.key)))})}async increment(e){return await this.trace("RedisWrapper.increment",async r=>{r.addTags({key:e});let n=await this.client.incr(this.prefixed(e));if(isNaN(n))throw new Error(`Redis ${e} does not contain a number`);return n})}async deleteIfValue(e,r){return await this.trace("RedisWrapper.deleteIfValue",async n=>{n.addTags({key:e});let i=`
6
6
  if redis.call('GET', KEYS[1]) == ARGV[1] then
7
7
  redis.call('DEL', KEYS[1])
8
8
  end
9
- `;await this.client.eval(i,1,this.prefixed(e),r)})}},Ce=cf;var bs,xs,vs,Ps,tn,Ns,Us,Ls,ks,lf;async function mt(){bs=await Ce.init("users"),xs=await Ce.init("session"),vs=await Ce.init("appMetadata"),Ps=await Ce.init("data_cache"),Ns=await Ce.init("locks"),tn=await Ce.init("writeThrough"),Ls=await Ce.init("invitation"),ks=await Ce.init("pwReset"),Us=await Ce.init("socket_io",1),lf=await Ce.init("docWriteThrough")}s(mt,"init");async function Ky(){bs&&await bs.finish(),xs&&await xs.finish(),vs&&await vs.finish(),Ps&&await Ps.finish(),tn&&await tn.finish(),Ns&&await Ns.finish(),Ls&&await Ls.finish(),ks&&await ks.finish(),Us&&await Us.finish(),lf&&await lf.finish()}s(Ky,"shutdown");process.on("exit",async()=>{await Ky()});async function Ms(){return bs||await mt(),bs}s(Ms,"getUserClient");async function mr(){return xs||await mt(),xs}s(mr,"getSessionClient");async function Xa(){return vs||await mt(),vs}s(Xa,"getWorkspaceClient");async function df(){return Ps||await mt(),Ps}s(df,"getCacheClient");async function ff(){return tn||await mt(),tn}s(ff,"getWritethroughClient");async function pf(){return Ns||await mt(),Ns}s(pf,"getLockClient");async function Ab(){return Us||await mt(),Us}s(Ab,"getSocketClient");async function rn(){return Ls||await mt(),Ls}s(rn,"getInviteClient");async function Fs(){return ks||await mt(),ks}s(Fs,"getPasswordResetClient");async function _b(){return tn||await mt(),tn}s(_b,"getDocWritethroughClient");var mf=(e=>(e.INVALID="invalid",e))(mf||{}),Qy=3600,Ob=60;async function Ib(t){return Ke(t,e=>e.get("app_metadata"),{skip_setup:!0})}s(Ib,"populateFromDB");function wb(t){return!t||t.state==="invalid"}s(wb,"isInvalid");async function eu(t){let e=await Xa(),r=await e.get(t);if(!r){let n=Qy;try{r=await Ib(t)}catch(i){if(i&&i.status===404)r={state:"invalid"},n=Ob;else throw i}if(wb(r)){let i=await e.get(t);i&&(r=i)}await e.store(t,r,n)}return r}s(eu,"getWorkspaceMetadata");async function Db(t,e){if(!t)throw"Cannot invalidate if no app ID provided.";let r=await Xa();await r.delete(t),e&&await r.store(t,e,Qy)}s(Db,"invalidateWorkspaceMetadata");var yf={};N(yf,{generateAgentChatID:()=>rT,generateAgentToolSourceID:()=>nT,generateAppUserID:()=>tu,generateDevInfoID:()=>Xy,generateGlobalUserID:()=>Zn,generateOAuth2LogID:()=>tT,generatePluginID:()=>eT,generateRoleID:()=>Ef,generateRowID:()=>hf,generateTableID:()=>Yy,generateTemplateID:()=>Zy,generateUserMetadataID:()=>zy,generateWorkspaceAppID:()=>iT,generateWorkspaceFavouriteID:()=>sT,generateWorkspaceID:()=>jy,getDocParams:()=>Wt,getGlobalIDFromUserMetadataID:()=>Jy,getGlobalUserParams:()=>nn,getOAuth2ConfigParams:()=>lT,getPluginParams:()=>cT,getQueryIndex:()=>oT,getRoleParams:()=>nu,getRowParams:()=>gf,getStartEndKeyURL:()=>Ws,getTemplateParams:()=>uT,getUserMetadataParams:()=>aT,getUsersByWorkspaceParams:()=>ru,getWorkspaceAppParams:()=>dT,getWorkspaceFavouriteParams:()=>fT,isGlobalUserID:()=>Hy,prefixRoleID:()=>Bt});var jy=s(t=>{let e=Je;return t&&(e+=`${t}${b}`),`${e}${ne()}`},"generateWorkspaceID");function Yy(){return`ta${b}${ne()}`}s(Yy,"generateTableID");function hf(t,e){return e=e||ne(),`ro${b}${t}${b}${e}`}s(hf,"generateRowID");function Zn(t){return`us${b}${t||ne()}`}s(Zn,"generateGlobalUserID");var Rb=new RegExp(`^us${b}.+`);function Hy(t){return Rb.test(t)}s(Hy,"isGlobalUserID");function zy(t){return hf("ta_users",t)}s(zy,"generateUserMetadataID");function Jy(t){let e=`ro${b}ta_users${b}`;return!t||!t.includes(e)?t:t.split(e)[1]}s(Jy,"getGlobalIDFromUserMetadataID");function Zy(t){return`template${b}${t}${b}${ne()}`}s(Zy,"generateTemplateID");function tu(t,e){return`${t}${b}${e}`}s(tu,"generateAppUserID");function Ef(t){let e=`role${b}`;return t.startsWith(e)?t:`${e}${t}`}s(Ef,"generateRoleID");function Bt(t){return Ef(t)}s(Bt,"prefixRoleID");var Xy=s(t=>`devinfo${b}${t}`,"generateDevInfoID"),eT=s(t=>`plg${b}${t}`,"generatePluginID"),tT=s(t=>`oauth2log${b}${t}`,"generateOAuth2LogID"),rT=s(()=>`agentchat${b}${ne()}`,"generateAgentChatID"),nT=s(()=>`agenttoolsource${b}${ne()}`,"generateAgentToolSourceID"),iT=s(()=>`workspace_app${b}${ne()}`,"generateWorkspaceAppID"),sT=s(()=>`workspace_favourite${b}${ne()}`,"generateWorkspaceFavouriteID");function Wt(t,e,r={}){return e==null&&(e=""),{...r,startkey:`${t}${b}${e}`,endkey:`${t}${b}${e}${ve}`}}s(Wt,"getDocParams");function gf(t,e,r={}){if(t==null)return Wt("ro",null,r);let n=e??`${t}${b}`;return Wt("ro",n,r)}s(gf,"getRowParams");function oT(t){return`database/${t}`}s(oT,"getQueryIndex");function nn(t,e={}){t||(t="");let r=e?.startkey;return{...e,startkey:r||`us${b}${t}`,endkey:`us${b}${t}${ve}`}}s(nn,"getGlobalUserParams");function aT(t,e={}){return gf("ta_users",t,e)}s(aT,"getUserMetadataParams");function ru(t,e={}){let r=Qe(t);return{...e,startkey:r,endkey:`${r}${ve}`}}s(ru,"getUsersByWorkspaceParams");function uT(t,e,r={}){e||(e="");let n;return e?n=e:n=`template${b}${t}${b}`,{...r,startkey:n,endkey:`${n}${ve}`}}s(uT,"getTemplateParams");function nu(t,e={}){return Wt("role",t,e)}s(nu,"getRoleParams");function Ws(t,e){let r=e?`${b}${e}`:"";return`startkey="${t}${r}"&endkey="${t}${r}${ve}"`}s(Ws,"getStartEndKeyURL");var cT=s((t,e={})=>Wt("plg",t,e),"getPluginParams"),lT=s((t,e={})=>Wt("oauth2",t,e),"getOAuth2ConfigParams"),dT=s((t,e={})=>Wt("workspace_app",t,e),"getWorkspaceAppParams"),fT=s((t,e={})=>Wt("workspace_favourite",t,e),"getWorkspaceFavouriteParams");async function pT(t={efficient:!1}){let e=t&&t.efficient,r=[];async function n(o){let a=await Jd(o);r=r.concat(a)}s(n,"addDbs");let i=G();return!E.MULTI_TENANCY||!e&&i===ae?await n():(await n(Ws("app",i)),await n(Ws("app_dev",i)),r.push(Xr(i))),r}s(pT,"getAllDbs");async function $s({dev:t,all:e,idsOnly:r,efficient:n}={}){let i=G();!E.MULTI_TENANCY&&!i&&(i=ae);let a=(await pT({efficient:n||!1})).filter(c=>{if(E.isTest()&&!c)return!1;let l=c.split(b);if(l[0]==="app"){let d=l[l.length-2],f=l.length===2||d==="dev";return i===ae&&f||d===i}return!1});if(r){let c=a.filter(d=>fr(d)),l=a.filter(d=>!fr(d));switch(t){case!0:return c;case!1:return l;default:return a}}let u=a.map(c=>eu(c));if(u.length===0)return[];{let l=(await Promise.allSettled(u)).filter(d=>d.status==="fulfilled"&&d.value?.state!=="invalid").map(({value:d})=>d);return e?l.map(d=>({...d,status:Rs(d)?"development":"published"})):l.filter(d=>t?Rs(d):!Rs(d))}}s($s,"getAllWorkspaces");async function Cb(t){return(await Promise.allSettled(t.map(r=>eu(r)))).filter(r=>r.status==="fulfilled"&&r.value.state!=="invalid").map(r=>r.value)}s(Cb,"getWorkspacesByIDs");async function bb(){return(await $s({idsOnly:!0})).filter(e=>!fr(e))}s(bb,"getProdWorkpaceIDs");async function xb(){return(await $s({idsOnly:!0})).filter(e=>fr(e))}s(xb,"getDevWorkspaceIDs");function vb(t,e){return t==null||e==null?!1:Qe(t)===Qe(e)}s(vb,"isSameWorkspaceID");async function Pb(t){return Ke(t,async e=>await e.exists(),{skip_setup:!0})}s(Pb,"dbExists");function Tf(t,e,{paginate:r,property:n,getKey:i}={paginate:!0,property:"_id"}){if(!r)return{data:t,hasNextPage:!1};let o=t.length>e,a;return i||(i=s(u=>n?u?.[n]:u?._id,"getKey")),o&&(a=i(t[e])),{data:t.slice(0,e),hasNextPage:o,nextPage:a}}s(Tf,"pagination");var Sf="_design/database";function Nb(){return{_id:Sf,views:{}}}s(Nb,"DesignDoc");async function Ub(t,e){if(qn[e])try{let r=await t.get(Sf);for(let n of qn[e])delete r.views?.[n];await t.put(r)}catch{}}s(Ub,"removeDeprecated");async function Xn(t,e,r){let n;try{n=await t.get(Sf)}catch{n=Nb()}let i={map:e};n.views={...n.views,[r]:i};try{await t.put(n)}catch(o){if(o.status===409)return await Xn(t,e,r);throw o}}s(Xn,"createView");var mT=s(async()=>{let t=H(),e=`function(doc) {
9
+ `;await this.client.eval(i,1,this.prefixed(e),r)})}},Ce=cf;var bs,xs,vs,Ps,tn,Ns,Us,Ls,ks,lf;async function mt(){bs=await Ce.init("users"),xs=await Ce.init("session"),vs=await Ce.init("appMetadata"),Ps=await Ce.init("data_cache"),Ns=await Ce.init("locks"),tn=await Ce.init("writeThrough"),Ls=await Ce.init("invitation"),ks=await Ce.init("pwReset"),Us=await Ce.init("socket_io",1),lf=await Ce.init("docWriteThrough")}s(mt,"init");async function Ky(){bs&&await bs.finish(),xs&&await xs.finish(),vs&&await vs.finish(),Ps&&await Ps.finish(),tn&&await tn.finish(),Ns&&await Ns.finish(),Ls&&await Ls.finish(),ks&&await ks.finish(),Us&&await Us.finish(),lf&&await lf.finish()}s(Ky,"shutdown");process.on("exit",async()=>{await Ky()});async function Ms(){return bs||await mt(),bs}s(Ms,"getUserClient");async function mr(){return xs||await mt(),xs}s(mr,"getSessionClient");async function Xa(){return vs||await mt(),vs}s(Xa,"getWorkspaceClient");async function df(){return Ps||await mt(),Ps}s(df,"getCacheClient");async function ff(){return tn||await mt(),tn}s(ff,"getWritethroughClient");async function pf(){return Ns||await mt(),Ns}s(pf,"getLockClient");async function wb(){return Us||await mt(),Us}s(wb,"getSocketClient");async function rn(){return Ls||await mt(),Ls}s(rn,"getInviteClient");async function Fs(){return ks||await mt(),ks}s(Fs,"getPasswordResetClient");async function Db(){return tn||await mt(),tn}s(Db,"getDocWritethroughClient");var mf=(e=>(e.INVALID="invalid",e))(mf||{}),Qy=3600,Rb=60;async function Cb(t){return Ke(t,e=>e.get("app_metadata"),{skip_setup:!0})}s(Cb,"populateFromDB");function bb(t){return!t||t.state==="invalid"}s(bb,"isInvalid");async function eu(t){let e=await Xa(),r=await e.get(t);if(!r){let n=Qy;try{r=await Cb(t)}catch(i){if(i&&i.status===404)r={state:"invalid"},n=Rb;else throw i}if(bb(r)){let i=await e.get(t);i&&(r=i)}await e.store(t,r,n)}return r}s(eu,"getWorkspaceMetadata");async function xb(t,e){if(!t)throw"Cannot invalidate if no app ID provided.";let r=await Xa();await r.delete(t),e&&await r.store(t,e,Qy)}s(xb,"invalidateWorkspaceMetadata");var yf={};N(yf,{generateAgentChatID:()=>rT,generateAgentToolSourceID:()=>nT,generateAppUserID:()=>tu,generateDevInfoID:()=>Xy,generateGlobalUserID:()=>Zn,generateOAuth2LogID:()=>tT,generatePluginID:()=>eT,generateRoleID:()=>Ef,generateRowID:()=>hf,generateTableID:()=>Yy,generateTemplateID:()=>Zy,generateUserMetadataID:()=>zy,generateWorkspaceAppID:()=>iT,generateWorkspaceFavouriteID:()=>sT,generateWorkspaceID:()=>jy,getDocParams:()=>Wt,getGlobalIDFromUserMetadataID:()=>Jy,getGlobalUserParams:()=>nn,getOAuth2ConfigParams:()=>lT,getPluginParams:()=>cT,getQueryIndex:()=>oT,getRoleParams:()=>nu,getRowParams:()=>gf,getStartEndKeyURL:()=>Ws,getTemplateParams:()=>uT,getUserMetadataParams:()=>aT,getUsersByWorkspaceParams:()=>ru,getWorkspaceAppParams:()=>dT,getWorkspaceFavouriteParams:()=>fT,isGlobalUserID:()=>Hy,prefixRoleID:()=>Bt});var jy=s(t=>{let e=Je;return t&&(e+=`${t}${b}`),`${e}${ne()}`},"generateWorkspaceID");function Yy(){return`ta${b}${ne()}`}s(Yy,"generateTableID");function hf(t,e){return e=e||ne(),`ro${b}${t}${b}${e}`}s(hf,"generateRowID");function Zn(t){return`us${b}${t||ne()}`}s(Zn,"generateGlobalUserID");var vb=new RegExp(`^us${b}.+`);function Hy(t){return vb.test(t)}s(Hy,"isGlobalUserID");function zy(t){return hf("ta_users",t)}s(zy,"generateUserMetadataID");function Jy(t){let e=`ro${b}ta_users${b}`;return!t||!t.includes(e)?t:t.split(e)[1]}s(Jy,"getGlobalIDFromUserMetadataID");function Zy(t){return`template${b}${t}${b}${ne()}`}s(Zy,"generateTemplateID");function tu(t,e){return`${t}${b}${e}`}s(tu,"generateAppUserID");function Ef(t){let e=`role${b}`;return t.startsWith(e)?t:`${e}${t}`}s(Ef,"generateRoleID");function Bt(t){return Ef(t)}s(Bt,"prefixRoleID");var Xy=s(t=>`devinfo${b}${t}`,"generateDevInfoID"),eT=s(t=>`plg${b}${t}`,"generatePluginID"),tT=s(t=>`oauth2log${b}${t}`,"generateOAuth2LogID"),rT=s(()=>`agentchat${b}${ne()}`,"generateAgentChatID"),nT=s(()=>`agenttoolsource${b}${ne()}`,"generateAgentToolSourceID"),iT=s(()=>`workspace_app${b}${ne()}`,"generateWorkspaceAppID"),sT=s(()=>`workspace_favourite${b}${ne()}`,"generateWorkspaceFavouriteID");function Wt(t,e,r={}){return e==null&&(e=""),{...r,startkey:`${t}${b}${e}`,endkey:`${t}${b}${e}${ve}`}}s(Wt,"getDocParams");function gf(t,e,r={}){if(t==null)return Wt("ro",null,r);let n=e??`${t}${b}`;return Wt("ro",n,r)}s(gf,"getRowParams");function oT(t){return`database/${t}`}s(oT,"getQueryIndex");function nn(t,e={}){t||(t="");let r=e?.startkey;return{...e,startkey:r||`us${b}${t}`,endkey:`us${b}${t}${ve}`}}s(nn,"getGlobalUserParams");function aT(t,e={}){return gf("ta_users",t,e)}s(aT,"getUserMetadataParams");function ru(t,e={}){let r=Qe(t);return{...e,startkey:r,endkey:`${r}${ve}`}}s(ru,"getUsersByWorkspaceParams");function uT(t,e,r={}){e||(e="");let n;return e?n=e:n=`template${b}${t}${b}`,{...r,startkey:n,endkey:`${n}${ve}`}}s(uT,"getTemplateParams");function nu(t,e={}){return Wt("role",t,e)}s(nu,"getRoleParams");function Ws(t,e){let r=e?`${b}${e}`:"";return`startkey="${t}${r}"&endkey="${t}${r}${ve}"`}s(Ws,"getStartEndKeyURL");var cT=s((t,e={})=>Wt("plg",t,e),"getPluginParams"),lT=s((t,e={})=>Wt("oauth2",t,e),"getOAuth2ConfigParams"),dT=s((t,e={})=>Wt("workspace_app",t,e),"getWorkspaceAppParams"),fT=s((t,e={})=>Wt("workspace_favourite",t,e),"getWorkspaceFavouriteParams");async function pT(t={efficient:!1}){let e=t&&t.efficient,r=[];async function n(o){let a=await Jd(o);r=r.concat(a)}s(n,"addDbs");let i=q();return!E.MULTI_TENANCY||!e&&i===ae?await n():(await n(Ws("app",i)),await n(Ws("app_dev",i)),r.push(Xr(i))),r}s(pT,"getAllDbs");async function $s({dev:t,all:e,idsOnly:r,efficient:n}={}){let i=q();!E.MULTI_TENANCY&&!i&&(i=ae);let a=(await pT({efficient:n||!1})).filter(c=>{if(E.isTest()&&!c)return!1;let l=c.split(b);if(l[0]==="app"){let d=l[l.length-2],f=l.length===2||d==="dev";return i===ae&&f||d===i}return!1});if(r){let c=a.filter(d=>fr(d)),l=a.filter(d=>!fr(d));switch(t){case!0:return c;case!1:return l;default:return a}}let u=a.map(c=>eu(c));if(u.length===0)return[];{let l=(await Promise.allSettled(u)).filter(d=>d.status==="fulfilled"&&d.value?.state!=="invalid").map(({value:d})=>d);return e?l.map(d=>({...d,status:Rs(d)?"development":"published"})):l.filter(d=>t?Rs(d):!Rs(d))}}s($s,"getAllWorkspaces");async function Pb(t){return(await Promise.allSettled(t.map(r=>eu(r)))).filter(r=>r.status==="fulfilled"&&r.value.state!=="invalid").map(r=>r.value)}s(Pb,"getWorkspacesByIDs");async function Nb(){return(await $s({idsOnly:!0})).filter(e=>!fr(e))}s(Nb,"getProdWorkpaceIDs");async function Ub(){return(await $s({idsOnly:!0})).filter(e=>fr(e))}s(Ub,"getDevWorkspaceIDs");function Lb(t,e){return t==null||e==null?!1:Qe(t)===Qe(e)}s(Lb,"isSameWorkspaceID");async function kb(t){return Ke(t,async e=>await e.exists(),{skip_setup:!0})}s(kb,"dbExists");function Tf(t,e,{paginate:r,property:n,getKey:i}={paginate:!0,property:"_id"}){if(!r)return{data:t,hasNextPage:!1};let o=t.length>e,a;return i||(i=s(u=>n?u?.[n]:u?._id,"getKey")),o&&(a=i(t[e])),{data:t.slice(0,e),hasNextPage:o,nextPage:a}}s(Tf,"pagination");var Sf="_design/database";function Mb(){return{_id:Sf,views:{}}}s(Mb,"DesignDoc");async function Fb(t,e){if(qn[e])try{let r=await t.get(Sf);for(let n of qn[e])delete r.views?.[n];await t.put(r)}catch{}}s(Fb,"removeDeprecated");async function Xn(t,e,r){let n;try{n=await t.get(Sf)}catch{n=Mb()}let i={map:e};n.views={...n.views,[r]:i};try{await t.put(n)}catch(o){if(o.status===409)return await Xn(t,e,r);throw o}}s(Xn,"createView");var mT=s(async()=>{let t=H(),e=`function(doc) {
10
10
  if (doc._id.startsWith("us${b}")) {
11
11
  emit(doc.email.toLowerCase(), doc._id)
12
12
  }
@@ -21,7 +21,7 @@ attempted value: ${o}
21
21
  if (doc._id.startsWith("devinfo") && doc.apiKey) {
22
22
  emit(doc.apiKey, doc.userId)
23
23
  }
24
- }`;await Xn(t,e,"by_api_key")},"createApiKeyView");async function Vs(t,e,r,n,i){try{return await r.query(`database/${t}`,e)}catch(o){let a=o&&o.name==="not_found",u=o&&o.status===404;if(a||u)return await Ub(r,t),await n(),Vs(t,e,r,n,i);if(o.status===409)return Vs(t,e,r,n,i);throw o}}s(Vs,"queryViewRaw");var Af=s(async(t,e,r,n,i)=>{let u=(await Vs(t,e,r,n,i)).rows.map(c=>e.include_docs?c.doc:c.value);return i?.arrayResponse?u:u.length<=1?u[0]:u},"queryView");async function gT(t,e){try{await Ke(fe.PLATFORM_INFO.name,async r=>{await Xn(r,t,e)})}catch(r){if(r.status===409&&E.isTest())return;throw r}}s(gT,"createPlatformView");var yT=s(async()=>{let t=`function(doc) {
24
+ }`;await Xn(t,e,"by_api_key")},"createApiKeyView");async function Gs(t,e,r,n,i){try{return await r.query(`database/${t}`,e)}catch(o){let a=o&&o.name==="not_found",u=o&&o.status===404;if(a||u)return await Fb(r,t),await n(),Gs(t,e,r,n,i);if(o.status===409)return Gs(t,e,r,n,i);throw o}}s(Gs,"queryViewRaw");var Af=s(async(t,e,r,n,i)=>{let u=(await Gs(t,e,r,n,i)).rows.map(c=>e.include_docs?c.doc:c.value);return i?.arrayResponse?u:u.length<=1?u[0]:u},"queryView");async function gT(t,e){try{await Ke(fe.PLATFORM_INFO.name,async r=>{await Xn(r,t,e)})}catch(r){if(r.status===409&&E.isTest())return;throw r}}s(gT,"createPlatformView");var yT=s(async()=>{let t=`function(doc) {
25
25
  if (doc._id.startsWith("acc_metadata${b}")) {
26
26
  emit(doc.email.toLowerCase(), doc._id)
27
27
  }
@@ -33,7 +33,7 @@ attempted value: ${o}
33
33
  if (doc.ssoId) {
34
34
  emit(doc.ssoId, doc._id)
35
35
  }
36
- }`,"platform_users_lowercase_2")},"createPlatformUserView"),Gs=s(async(t,e)=>{let r={account_by_email:yT,platform_users_lowercase_2:TT};return Ke(fe.PLATFORM_INFO.name,async n=>{let i=r[t];return Af(t,e,n,i,{arrayResponse:!0})})},"queryPlatformView"),ST={by_email2:mT,by_api_key:ET,by_app:hT},$t=s(async(t,e,r,n)=>{r||(r=H());let i=ST[t];return Af(t,e,r,i,n)},"queryGlobalView");async function _f(t,e,r){let n=H(),i=ST[t];return Vs(t,e,n,i,r)}s(_f,"queryGlobalViewRaw");var Lb=F(require("pouchdb"));var Of=class{static{s(this,"Replication")}constructor({source:e,target:r}){this.source=Xe(e),this.target=Xe(r),e.startsWith("app_dev")&&r.startsWith("app")?this.direction="toProduction":e.startsWith("app")&&r.startsWith("app_dev")&&(this.direction="toDev")}async close(){await Promise.all([ws(this.source),ws(this.target)])}replicate(e={}){return new Promise(r=>{this.source.replicate.to(this.target,e).on("denied",function(n){throw new Error(`Denied: Document failed to replicate ${n}`)}).on("complete",function(n){return r(n)}).on("error",function(n){throw n})})}async resolveInconsistencies(e){let r=[];for(let n of e)try{let[i,o]=await Promise.all([this.source.get(n),this.target.get(n)]);this.haveReplicationInconsistencies(i,o)&&(await this.target.remove({_id:o._id,_rev:o._rev}),r.push(i._id))}catch{console.warn("Cannot resolve inconsistencies for document",n)}r.length>0&&await this.replicate({doc_ids:r})}haveReplicationInconsistencies(e,r){let n=this.getRevisionNumber(e);return this.getRevisionNumber(r)>n}getRevisionNumber(e){return parseInt(e._rev?.split("-")[0]||"0")}appReplicateOpts(e={}){if(typeof e.filter=="string")return e;let r=e.filter,i=this.direction==="toDev";delete e.filter;let o=e.isCreation,a=e.tablesToSync;delete e.isCreation,delete e.tablesToSync;let u=!1,c;typeof a=="string"&&a==="all"?u=!0:a&&(c=a);let l=s((f,p)=>f?.startsWith(p+b),"startsWithID"),d=s(f=>l(f,"ro")||l(f,"li"),"isData");return{...e,filter:(f,p)=>!o&&f._id==="_design/migrations"||i&&f._id.startsWith("_design")?!1:f._deleted||l(f._id,ys)?!0:d(f._id)?!!c?.find(m=>f._id.includes(m))||u:l(f._id,"log_au")||f._id==="app_metadata"?!1:r?r(f,p):!0}}async rollback(){await this.target.destroy(),this.target=Xe(this.target.name),await this.replicate()}},AT=Of;var OT=F(require("node-fetch"));var qs=cr.removeKeyNumbering;function sn(t){return t==null||t===""}s(sn,"isEmpty");var Vt=class t{static{s(this,"QueryBuilder")}#l;#d;#e;#r;#n;#i;#s;#o;#t;#f;#a;#u=!1;#c;static{this.maxLimit=200}constructor(e,r,n){this.#l=e,this.#d=r,this.#e={allOr:!1,onEmptyFilter:"all",string:{},fuzzy:{},range:{},equal:{},notEqual:{},empty:{},notEmpty:{},oneOf:{},contains:{},notContains:{},containsAny:{},...n},this.#r=50,this.#s="ascending",this.#o="string",this.#t=!0}disableEscaping(){return this.#u=!0,this}setIndexBuilder(e){return this.#a=e,this}setVersion(e){return e!=null&&(this.#f=e),this}setTable(e){return this.#e.equal.tableId=e,this}setLimit(e){return e!=null&&(this.#r=e),this}setSort(e){return e!=null&&(this.#n=e),this}setSortOrder(e){return e!=null&&(this.#s=e),this}setSortType(e){return e!=null&&(this.#o=e),this}setBookmark(e){return e!=null&&(this.#i=e),this}setSkip(e){return this.#c=e,this}excludeDocs(){return this.#t=!1,this}includeDocs(){return this.#t=!0,this}addString(e,r){return this.#e.string[e]=r,this}addFuzzy(e,r){return this.#e.fuzzy[e]=r,this}addRange(e,r,n){return this.#e.range[e]={low:r,high:n},this}addEqual(e,r){return this.#e.equal[e]=r,this}addNotEqual(e,r){return this.#e.notEqual[e]=r,this}addEmpty(e,r){return this.#e.empty[e]=r,this}addNotEmpty(e,r){return this.#e.notEmpty[e]=r,this}addOneOf(e,r){return this.#e.oneOf[e]=r,this}addContains(e,r){return this.#e.contains[e]=r,this}addNotContains(e,r){return this.#e.notContains[e]=r,this}addContainsAny(e,r){return this.#e.containsAny[e]=r,this}setAllOr(){this.#e.allOr=!0}setOnEmptyFilter(e){this.#e.onEmptyFilter=e}handleSpaces(e){return this.#u?e:e.replace(/ /g,"_")}preprocess(e,{escape:r,lowercase:n,wrap:i,type:o}={}){let a=!!this.#f,u=typeof e;return e&&n&&(e=e.toLowerCase?e.toLowerCase():e),!this.#u&&r&&u==="string"&&(e=`${e}`.replace(/[ /#+\-&|!(){}\]^"~*?:\\]/g,"\\$&")),u==="string"&&!isNaN(e)&&!o?e=`"${e}"`:a&&i&&(e=u==="number"?e:`"${e}"`),e}isMultiCondition(){let e=0;for(let r of Object.values(this.#e))typeof r=="object"&&(e+=Object.keys(r).length);return e>1}compressFilters(e){let r={};for(let o of Object.keys(e)){let a=qs(o);r[a]?r[a]=r[a].concat(e[o]):r[a]=e[o]}let n={},i=1;for(let[o,a]of Object.entries(r))n[`${i++}:${o}`]=a;return n}buildSearchQuery(){let e=this,r=this.#e&&this.#e.allOr,n=r?"":"*:*",i=!0,o={escape:!0,lowercase:!0,wrap:!0},a="";this.#e.equal.tableId&&(a=this.#e.equal.tableId,delete this.#e.equal.tableId);let u=s((h,g)=>sn(g)?null:`${h}:${e.preprocess(g,o)}`,"equal"),c=s((h,g,y="AND")=>{if(sn(g))return null;if(!Array.isArray(g))return`${h}:${g}`;let S=`${e.preprocess(g[0],{escape:!0})}`;for(let O=1;O<g.length;O++)S+=` ${y} ${e.preprocess(g[O],{escape:!0})}`;return`${h}:(${S})`},"contains"),l=s((h,g)=>sn(g)?null:(g=e.preprocess(g,{escape:!0,lowercase:!0,type:"fuzzy"}),`${h}:/.*${g}.*/`),"fuzzy"),d=s((h,g)=>{let y=r?"*:* AND ":"",S=r?"AND":void 0;return y+"NOT "+c(h,g,S)},"notContains"),f=s((h,g)=>c(h,g,"OR"),"containsAny"),p=s((h,g)=>{if(sn(g))return"*:*";if(!Array.isArray(g))if(typeof g=="string")g=g.split(",");else return"";let y=`${e.preprocess(g[0],o)}`;for(let S=1;S<g.length;S++)y+=` OR ${e.preprocess(g[S],o)}`;return`${h}:(${y})`},"oneOf");function m(h,g,y){let S="";for(let[O,_]of Object.entries(h)){O=qs(O),O=e.preprocess(e.handleSpaces(O),{escape:!0});let D=g(O,_);if(D!=null){if(S.length>0||n.length>0){let T=y?.mode?y.mode:r?"OR":"AND";S+=` ${T} `}S+=D,(typeof _!="string"&&_!=null||typeof _=="string"&&_!==a&&_!=="")&&(i=!1)}}if(y?.returnBuilt)return S;n+=S}if(s(m,"build"),this.#e.string&&m(this.#e.string,(h,g)=>sn(g)?null:(g=e.preprocess(g,{escape:!0,lowercase:!0,type:"string"}),`${h}:${g}*`)),this.#e.range&&m(this.#e.range,(h,g)=>{if(sn(g)||g.low==null||g.low===""||g.high==null||g.high==="")return null;let y=e.preprocess(g.low,o),S=e.preprocess(g.high,o);return`${h}:[${y} TO ${S}]`}),this.#e.fuzzy&&m(this.#e.fuzzy,l),this.#e.equal&&m(this.#e.equal,u),this.#e.notEqual&&m(this.#e.notEqual,(h,g)=>sn(g)?null:typeof g=="boolean"?`(*:* AND !${h}:${g})`:`!${h}:${e.preprocess(g,o)}`),this.#e.empty&&m(this.#e.empty,h=>(i=!1,`(*:* -${h}:["" TO *])`)),this.#e.notEmpty&&m(this.#e.notEmpty,h=>(i=!1,`${h}:["" TO *]`)),this.#e.oneOf&&m(this.#e.oneOf,p),this.#e.contains&&m(this.#e.contains,c),this.#e.notContains&&m(this.compressFilters(this.#e.notContains),d),this.#e.containsAny&&m(this.#e.containsAny,f),a&&(n=this.isMultiCondition()?`(${n})`:n,r=!1,m({tableId:a},u)),i){if(this.#e.onEmptyFilter==="none")return"";if(this.#e?.allOr)return n.replace("()","(*:*)")}return n}buildSearchBody(){let e={q:this.buildSearchQuery(),limit:Math.min(this.#r,t.maxLimit),include_docs:this.#t};if(this.#i&&(e.bookmark=this.#i),this.#n){let r=this.#s==="descending"?"-":"",n=`<${this.#o}>`;e.sort=`${r}${this.handleSpaces(this.#n)}${n}`}return e}async run(){return this.#c&&await this.#m(this.#c),await this.#p()}async#m(e){let r=this.#t,n=this.#r;this.excludeDocs();let i=e,o=0;do{let a=Math.min(t.maxLimit,i);this.setLimit(a);let{bookmark:u,rows:c}=await this.#p();this.setBookmark(u),o=c.length,i-=c.length}while(i>0&&o>0);this.#t=r,this.#r=n}async#p(){let{url:e,cookie:r}=dt(),n=`${e}/${this.#l}/_design/database/_search/${this.#d}`,i=this.buildSearchBody();try{return await _T(n,i,r)}catch(o){if(o.status===404&&this.#a)return await this.#a(),await _T(n,i,r);throw o}}};async function _T(t,e,r){let n=await(0,OT.default)(t,{body:JSON.stringify(e),method:"POST",headers:{Authorization:r}});if(n.status===404)throw n;let i=await n.json(),o={rows:[],totalRows:0};return i.rows!=null&&i.rows.length>0&&(o.rows=i.rows.map(a=>a.doc)),i.bookmark&&(o.bookmark=i.bookmark),i.total_rows&&(o.totalRows=i.total_rows),o}s(_T,"runQuery");async function IT(t,e,r,n){let i=n.bookmark,o=n.rows||[];if(n.limit&&o.length>=n.limit)return o;let a=Vt.maxLimit;n.limit&&o.length>n.limit-Vt.maxLimit&&(a=n.limit-o.length);let u=new Vt(t,e,r);u.setVersion(n.version).setBookmark(i).setLimit(a).setSort(n.sort).setSortOrder(n.sortOrder).setSortType(n.sortType),n.tableId&&u.setTable(n.tableId);let c=await u.run();if(!c.rows.length)return o;if(c.rows.length<Vt.maxLimit)return[...o,...c.rows];let l={...n,bookmark:c.bookmark,rows:[...o,...c.rows]};return await IT(t,e,r,l)}s(IT,"recursiveSearch");async function kb(t,e,r,n){let i=n.limit;(i==null||isNaN(i)||i<0)&&(i=50),i=Math.min(i,Vt.maxLimit);let o=new Vt(t,e,r);n.version&&o.setVersion(n.version),n.tableId&&o.setTable(n.tableId),n.sort&&o.setSort(n.sort).setSortOrder(n.sortOrder).setSortType(n.sortType),n.indexer&&o.setIndexBuilder(n.indexer),n.disableEscaping&&o.disableEscaping();let a=await o.setBookmark(n.bookmark).setLimit(i).run();o.setBookmark(a.bookmark).setLimit(1),n.tableId&&o.setTable(n.tableId);let u=await o.run();return{...a,hasNextPage:u.rows&&u.rows.length>0}}s(kb,"paginatedSearch");async function Mb(t,e,r,n){let i=n.limit;return(i==null||isNaN(i)||i<0)&&(i=1e3),n.limit=Math.min(i,1e3),{rows:await IT(t,e,r,n)}}s(Mb,"fullSearch");var If={};N(If,{createUserIndex:()=>Fb});async function Fb(){let t=H(),e;try{e=await t.get("_design/database")}catch(n){n.status===404&&(e={_id:"_design/database"})}let r=s(function(n){if(n._id&&!n._id.startsWith("us_"))return;let i=["_id","_rev","password","account","license","budibaseAccess","accountPortalAccess","csrfToken"];function o(a,u){for(let c of Object.keys(a)){if(i.includes(c))continue;let l=u!=null?`${u}.${c}`:c;typeof a[c]=="string"?index(l,a[c].toLowerCase(),{facet:!0}):typeof a[c]!="object"?index(l,a[c],{facet:!0}):o(a[c],l)}}s(o,"idx"),o(n)},"fn");e.indexes={user:{index:r.toString(),analyzer:{default:"keyword",name:"perfield"}}},await t.put(e)}s(Fb,"createUserIndex");function wT(t,e){let r=e.toString();if(typeof t=="object")return t.status===e||t.message?.includes(r);if(typeof t=="number")return t===e;if(typeof t=="string")return t.includes(r)}s(wT,"checkErrorCode");function Bb(t){return wT(t,409)}s(Bb,"isDocumentConflictError");var Qs={};N(Qs,{addTenantToUrl:()=>Wb,getTenantDB:()=>wf,getTenantIDFromCtx:()=>Ks,isUserInAppTenant:()=>$b});function wf(t){return De(Xr(t))}s(wf,"getTenantDB");function Wb(t){let e=G();if(pr()){let r=t.indexOf("?")===-1?"?":"&";t+=`${r}tenantId=${e}`}return t}s(Wb,"addTenantToUrl");var $b=s((t,e)=>{let r;return e?r=e.tenantId||ae:r=G(),(zn(t)||ae)===r},"isUserInAppTenant"),Vb=Object.values(Ii),Ks=s((t,e)=>{if(!pr())return ae;e.allowNoTenant===void 0&&(e.allowNoTenant=!1),e.includeStrategies||(e.includeStrategies=Vb),e.excludeStrategies||(e.excludeStrategies=[]);let r=s(n=>{if(e.excludeStrategies?.includes(n))return!1;if(e.includeStrategies?.includes(n))return!0},"isAllowed");if(r("user")){let n=t.user?.tenantId;if(n)return n}if(r("header")){let n=t.request.headers["x-budibase-tenant-id"];if(n)return n}if(r("query")){let n=t.request.query.tenantId;if(n)return n}if(r("subdomain")){let n;try{n=new URL(Xd()).host.split(":")[0]}catch(o){if(o.code!=="ERR_INVALID_URL")throw o}let i=t.host;if(n&&i.includes(n)){let o=i.substring(0,i.indexOf(`.${n}`));if(o)return o}}if(r("path")){let n=t.matched.find(a=>!!a.paramNames.find(u=>u.name==="tenantId")),i=t.originalUrl,o;if(i.includes("?")?o=i.split("?")[0]:o=i,n){let a=n.params(o,n.captures(o),{});if(a.tenantId)return a.tenantId}}e.allowNoTenant||t.throw(403,"Tenant id not set")},"getTenantIDFromCtx");var Df="app"+b,DT="/app/",Gb="/builder",qb=`${Gb}/workspace/`,Kb="/api/public/v";async function Qb(t){let r=`/${t.path.split("/")[2].toLowerCase()}`,n=G();!E.isDev()&&E.MULTI_TENANCY&&(n=Ks(t,{includeStrategies:["subdomain"]}));let o=(await Re(n,()=>$s({dev:!1}))).filter(a=>a.url&&a.url.toLowerCase()===r)[0];return o&&o.appId?o.appId:void 0}s(Qb,"resolveAppUrl");function jb(t){return t.path.startsWith(`/${Df}`)?!0:t.path.startsWith(DT)}s(jb,"isServingApp");function Yb(t){return t.path.startsWith(qb)}s(Yb,"isServingBuilder");function Hb(t){return RT(t.path)}s(Hb,"isServingBuilderPreview");function RT(t){return new RegExp(/^\/app\/app_\w+\/preview$/).test(t)}s(RT,"isBuilderPreviewUrl");function zb(t){return t.path.startsWith(Kb)}s(zb,"isPublicApiRequest");async function on(t){let e;function r(u){return!u||!u.startsWith(Df)?e:(e&&e!==u&&t.throw("App id conflict",403),e??u)}s(r,"confirmAppId");let n=t.request.headers["x-budibase-app-id"]||[];typeof n=="string"&&(n=[n]);for(let u of n)e=r(u);t.request.body&&t.request.body.appId&&(e=r(t.request.body.appId));let i=Jb(t.path);i&&(e=r(i)),t.query?.appId&&(e=r(t.query?.appId));let o=RT(t.path);return t.path.startsWith(DT)&&!o&&(e=r(await Qb(t))),e}s(on,"getAppIdFromCtx");function Jb(t){if(t)return t.split("?")[0].split("/").find(e=>e.startsWith(Df))}s(Jb,"parseAppIdFromUrlPath");function su(t){if(t)try{return iu.default.verify(t,E.JWT_SECRET)}catch(e){if(E.JWT_SECRET_FALLBACK)return iu.default.verify(t,E.JWT_SECRET_FALLBACK);throw e}}s(su,"openJwt");function js(t){return E.INTERNAL_API_KEY&&E.INTERNAL_API_KEY===t?!0:!!(E.INTERNAL_API_KEY_FALLBACK&&E.INTERNAL_API_KEY_FALLBACK===t)}s(js,"isValidInternalAPIKey");function Gt(t,e){let r=t.cookies.get(e);if(r)return su(r)}s(Gt,"getCookie");function CT(t,e,r="builder",n={sign:!0}){e&&n&&n.sign&&(e=iu.default.sign(e,E.JWT_SECRET));let i={expires:Ma,path:"/",httpOnly:!1,overwrite:!0};E.COOKIE_DOMAIN&&(i.domain=E.COOKIE_DOMAIN),t.cookies.set(r,e,i)}s(CT,"setCookie");function gr(t,e){CT(t,null,e)}s(gr,"clearCookie");function Zb(t){return t.headers["x-budibase-type"]==="client"}s(Zb,"isClient");function Rf(t){return new Promise(e=>setTimeout(e,t))}s(Rf,"timeout");function Cf(t){return!!xm[t]}s(Cf,"isAudited");function Xb(t){if(typeof t!="object")return!1;try{JSON.stringify(t)}catch(e){if(e instanceof Error&&e?.message.includes("circular structure"))return!0}return!1}s(Xb,"hasCircularStructure");function ex(t){return!!t.match(/^.+:\/\/.+$/)}s(ex,"urlHasProtocol");function bf(t){return t&&!!t.match(/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/)}s(bf,"validEmail");var xf=(o=>(o.MILLISECONDS="milliseconds",o.SECONDS="seconds",o.MINUTES="minutes",o.HOURS="hours",o.DAYS="days",o))(xf||{}),ou={milliseconds:1,seconds:1e3,minutes:6e4,hours:36e5,days:864e5},Ee=class t{constructor(e){this.ms=e}static{s(this,"Duration")}to(e){return this.ms/ou[e]}toMs(){return this.ms}toSeconds(){return this.to("seconds")}static convert(e,r,n){return n*ou[e]/ou[r]}static from(e,r){return new t(r*ou[e])}static fromSeconds(e){return t.from("seconds",e)}static fromMinutes(e){return t.from("minutes",e)}static fromHours(e){return t.from("hours",e)}static fromDays(e){return t.from("days",e)}static fromMilliseconds(e){return t.from("milliseconds",e)}};async function tx(t){let e=performance.now();return[await t(),Ee.fromMilliseconds(performance.now()-e)]}s(tx,"time");var xT=require("undici");function bT(t){let e=process.env.GLOBAL_AGENT_HTTP_PROXY||process.env.HTTP_PROXY,n=process.env.GLOBAL_AGENT_HTTPS_PROXY||process.env.HTTPS_PROXY||e;if(!n||!n.trim())return!1;let i=n.trim();try{new URL(i)}catch{return console.log("[fetch] Invalid proxy URL format:",n),!1}let o=t?.rejectUnauthorized!==void 0?t?.rejectUnauthorized:!0;console.log("[fetch] Creating ProxyAgent",{proxyUrl:i,rejectUnauthorized:o});let a={uri:i,requestTls:{rejectUnauthorized:o}};i.startsWith("https://")&&(a.proxyTls={rejectUnauthorized:o});try{return new xT.ProxyAgent(a)}catch(u){return console.log("[fetch] Failed to create ProxyAgent:",u),!1}}s(bT,"createProxyDispatcher");var au=null;function rx(t){return t?bT(t)||!1:(au===null&&(au=bT()),au||!1)}s(rx,"getProxyDispatcher");function nx(){au=null}s(nx,"resetProxyDispatcherCache");function ix(t){let e="",r=-1,n,i,o=t.opts?.repeat;return o&&(i=o.endDate?new Date(o.endDate).getTime():Date.now(),n=o.tz,"cron"in o?e=o.cron:r=o.every),{id:t.id.toString(),name:"",key:t.id.toString(),tz:n,endDate:i,cron:e,every:r,next:0}}s(ix,"jobToJobInformation");var uu=class{static{s(this,"InMemoryQueue")}constructor(e,r){this._name=e,this._opts=r,this._messages=[],this._emitter=new vT.default.EventEmitter,this._runCount=0,this._addCount=0,this._queuedJobIds=new Set,this._attempts=r?.defaultJobOptions?.attempts||1}async process(e,r){r=typeof e=="number"?r:e,this._emitter.on("message",async n=>{if(!n.manualTrigger&&n.opts?.repeat!=null)return;function i(){return r.length===1?r(n):new Promise((c,l)=>{r(n,s((f,p)=>{f?l(f):c(p)},"done"))})}s(i,"execute");let o=this._attempts;async function a(c,l=0){try{return await c}catch(d){if(l++,l<o&&!n._isDiscarded)return await Ne.wait(100*l),await a(i(),l);throw d}}s(a,"retryFunc");try{let c=await a(i());this._emitter.emit("completed",n,c);let l=this._messages.indexOf(n);if(l===-1)throw"Failed deleting a processed message";this._messages.splice(l,1)}catch(c){console.error(c),this._emitter.emit("error",n,c)}this._runCount++;let u=n.opts?.jobId?.toString();u&&n.opts?.removeOnComplete&&this._queuedJobIds.delete(u)})}async isReady(){return this}async add(e,r){if(typeof e=="string")throw new Error("doesn't support named jobs");let n=r,i=n?.jobId?.toString();if(i&&this._queuedJobIds.has(i)){console.log(`Ignoring already queued job ${i}`);return}if(typeof e!="object")throw"Queue only supports carrying JSON.";i&&this._queuedJobIds.add(i);let o=ne(),a=s(()=>{let c={id:o,timestamp:Date.now(),queue:this,data:e,opts:n,discard:async()=>{c._isDiscarded=!0}};this._messages.push(c),this._messages.length>1e3&&this._messages.shift(),this._addCount++,this._emitter.emit("message",c)},"pushMessage"),u=n?.delay;return u?setTimeout(a,u):a(),{id:i,finished:()=>new Promise((c,l)=>{let d=s((p,m)=>{p.id===o&&(this._emitter.off("error",d),this._emitter.off("completed",f),l(m))},"errorHandler"),f=s((p,m)=>{p.id===o&&(this._emitter.off("error",d),this._emitter.off("completed",f),c(m))},"completedHandler");this._emitter.on("error",d),this._emitter.on("completed",f)})}}async close(){}async removeRepeatableByKey(e){for(let[r,n]of this._messages.entries())if(n.id===e){this._messages.splice(r,1),this._emitter.emit("removed",n);return}}async removeJobs(e){}async clean(){return[]}async getJob(e){for(let r of this._messages)if(r.id===e)return r;return null}manualTrigger(e){for(let r of this._messages)if(r.id===e){this._emitter.emit("message",{...r,manualTrigger:!0});return}throw new Error(`Job with id ${e} not found`)}on(e,r){return this._emitter.on(e,r),this}off(e,r){return this._emitter.off(e,r),this}async count(){return this._messages.length}async getCompletedCount(){return this._runCount}async getRepeatableJobs(){return this._messages.filter(e=>e.opts?.repeat!=null).map(e=>ix(e))}async whenCurrentJobsFinished(){do await Rf(50);while(this.hasRunningJobs())}hasRunningJobs(){return this._addCount>this._runCount}},PT=uu;var Nf=F(require("bull"));var ti=(c=>(c.AUTOMATION="automationQueue",c.APP_BACKUP="appBackupQueue",c.AUDIT_LOG="auditLogQueue",c.SYSTEM_EVENT_QUEUE="systemEventQueue",c.APP_MIGRATION="appMigration",c.DOC_WRITETHROUGH_QUEUE="docWritethroughQueue",c.DEV_REVERT_PROCESSOR="devRevertProcessorQueue",c.BATCH_USER_SYNC_PROCESSOR="batchUserSyncProcessorQueue",c))(ti||{});function NT(t,e,r){ax(t,e),r&&sx(t,r)}s(NT,"addListeners");function sx(t,e){t.on("stalled",async r=>{if(e)await e(r);else if(r.opts.repeat){let n=r.id,i=await t.getRepeatableJobs();for(let o of i)o.id===n&&await t.removeRepeatableByKey(o.key);console.log(`jobId=${n} disabled`)}})}s(sx,"handleStalled");function et(t,e,r={},n={}){let i=`[BULL] ${t}=${e}`,o=r.error,a={_logKey:"bull",eventType:t,event:e,job:r.job,jobId:r.jobId||r.job?.id,...n},u;return r.job?.data?.automation&&(u={_logKey:"automation",trigger:r.job?r.job.data.automation.definition.trigger.event:void 0}),[i,o,a,u]}s(et,"getLogParams");var ox={automationQueue:"automation-event",appBackupQueue:"app-backup-event",auditLogQueue:"audit-log-event",systemEventQueue:"system-event",appMigration:"app-migration",docWritethroughQueue:"doc-writethrough",devRevertProcessorQueue:"dev-revert-event",batchUserSyncProcessorQueue:"batch-user-sync-processor"};function ax(t,e){let r=ox[e];function n(i,o){let a=i.data.event?.appId;if(a)return ef(a,o);o()}s(n,"doInJobContext"),t.on("stalled",async i=>{await n(i,()=>{console.error(...et(r,"stalled",{job:i}))})}).on("error",i=>{console.error(...et(r,"error",{error:i}))}),process.env.NODE_DEBUG?.includes("bull")&&t.on("waiting",i=>{console.info(...et(r,"waiting",{jobId:i}))}).on("active",async i=>{await n(i,()=>{console.info(...et(r,"active",{job:i}))})}).on("progress",async(i,o)=>{await n(i,()=>{console.info(...et(r,"progress",{job:i},{progress:o}))})}).on("completed",async(i,o)=>{await n(i,()=>{console.info(...et(r,"completed",{job:i},{result:o}))})}).on("failed",async(i,o)=>{await n(i,()=>{console.error(...et(r,"failed",{job:i,error:o}))})}).on("paused",()=>{console.info(...et(r,"paused"))}).on("resumed",()=>{console.info(...et(r,"resumed"))}).on("cleaned",(i,o)=>{console.info(...et(r,"cleaned",{},{length:i.length,type:o}))}).on("drained",()=>{console.info(...et(r,"drained"))}).on("removed",i=>{console.info(...et(r,"removed",{job:i}))})}s(ax,"logging");var cu={};N(cu,{cleanup:()=>ux,clear:()=>Pf,set:()=>vf});var Ys=[];function vf(t,e){let r=setInterval(t,e);return Ys.push(r),r}s(vf,"set");function Pf(t){let e=Ys.indexOf(t);e!==-1&&Ys.splice(e,1),clearInterval(t)}s(Pf,"clear");function ux(){for(let t of Ys)clearInterval(t);Ys=[]}s(ux,"cleanup");var qt=F(require("dd-trace")),Hs=F(require("object-sizeof"));var cx=Ee.fromMinutes(5).toMs(),lx=Ee.fromSeconds(30).toMs(),Uf=Ee.fromSeconds(60).toMs(),zs=[],lu;async function UT(){for(let t of zs)await t.clean(Uf,"completed"),await t.clean(Uf,"failed")}s(UT,"cleanup");async function dx(t,e,r){let n=performance.now();try{let i=await e();return qt.default.dogstatsd.increment(`${t}.success`,1,r),i}catch(i){throw qt.default.dogstatsd.increment(`${t}.error`,1,r),i}finally{let i=performance.now()-n;qt.default.dogstatsd.distribution(`${t}.duration.ms`,i,r),qt.default.dogstatsd.increment(t,1,r)}}s(dx,"withMetrics");function LT(t){return{"job.opts.attempts":t.attempts,"job.opts.backoff":t.backoff,"job.opts.delay":t.delay,"job.opts.jobId":t.jobId,"job.opts.lifo":t.lifo,"job.opts.preventParsingData":t.preventParsingData,"job.opts.priority":t.priority,"job.opts.removeOnComplete":t.removeOnComplete,"job.opts.removeOnFail":t.removeOnFail,"job.opts.repeat":t.repeat,"job.opts.stackTraceLimit":t.stackTraceLimit,"job.opts.timeout":t.timeout}}s(LT,"jobOptsTags");function fx(t){return{"job.id":t.id,"job.attemptsMade":t.attemptsMade,"job.timestamp":t.timestamp,"job.data.sizeBytes":(0,Hs.default)(t.data),...LT(t.opts||{})}}s(fx,"jobTags");var ht=class{static{s(this,"BudibaseQueue")}constructor(e,r={}){this.opts=r,this.jobQueue=e,this.queue=this.initQueue()}get name(){return this.queue.name}initQueue(){let r={redis:Jr(),settings:{maxStalledCount:this.opts.maxStalledCount?this.opts.maxStalledCount:0,lockDuration:cx,lockRenewTime:lx}};this.opts.jobOptions&&(r.defaultJobOptions=this.opts.jobOptions);let n;return E.isTest()?process.env.BULL_TEST_REDIS_PORT&&!isNaN(+process.env.BULL_TEST_REDIS_PORT)?n=new Nf.default(this.jobQueue,{...r,redis:{host:"localhost",port:+process.env.BULL_TEST_REDIS_PORT}}):n=new PT(this.jobQueue,r):n=new Nf.default(this.jobQueue,r),NT(n,this.jobQueue,this.opts.removeStalledCb),zs.push(n),!lu&&!E.isTest()&&(lu=vf(UT,Uf),UT().catch(i=>{console.error(`Unable to cleanup ${this.jobQueue} initially - ${i}`)})),n}getBullQueue(){return this.queue}process(...e){let r,n;e.length===2?(r=e[0],n=e[1]):n=e[0];let i=s(async(a,u)=>{await qt.default.trace("queue.process",async c=>{if(a.data._parentSpanContext){let l=a.data._parentSpanContext,d={traceId:l.traceId,spanId:l.spanId,toTraceId:()=>l.traceId,toSpanId:()=>l.spanId,toTraceparent:()=>""};c.addLink(d)}c.addTags({"queue.name":this.jobQueue,...fx(a)}),this.opts.jobTags&&c.addTags(this.opts.jobTags(a.data)),qt.default.dogstatsd.distribution("queue.process.sizeBytes",(0,Hs.default)(a.data),this.metricTags()),await this.withMetrics("queue.process",()=>u?n(a,u):n(a))})},"processCallback"),o;return n.length===1?o=s(a=>i(a),"wrappedCb"):o=i,r?this.queue.process(r,o):this.queue.process(o)}async add(e,r){return await qt.default.trace("queue.add",async n=>(n.addTags({"queue.name":this.jobQueue,"job.data.sizeBytes":(0,Hs.default)(e),...LT(r||{})}),this.opts.jobTags&&n.addTags(this.opts.jobTags(e)),e._parentSpanContext={traceId:n.context().toTraceId(),spanId:n.context().toSpanId()},qt.default.dogstatsd.distribution("queue.add.sizeBytes",(0,Hs.default)(e),this.metricTags()),await this.withMetrics("queue.add",()=>this.queue.add(e,r))))}withMetrics(e,r){return dx(e,r,this.metricTags())}metricTags(){return{queueName:this.jobQueue}}close(e){return this.queue.close(e)}whenCurrentJobsFinished(){return this.queue.whenCurrentJobsFinished()}};async function px(){lu&&Pf(lu),console.log("Waiting for current queue jobs to finish...");for(let t of zs)await t.whenCurrentJobsFinished();console.log("Closing queue Redis connections...");for(let t of zs)await t.close();zs=[],console.log("Queues shutdown")}s(px,"shutdown");var no={};N(no,{correlation:()=>Js,logAlert:()=>cn,logAlertWithInfo:()=>iv,logWarn:()=>si,logger:()=>Iu,system:()=>Zf});var Js={};N(Js,{getId:()=>Lf,setHeader:()=>mx});var kT=require("correlation-id"),mx=s(t=>{let e=kT.getId();e&&(t["x-budibase-correlation-id"]=e)},"setHeader");function Lf(){return kT.getId()}s(Lf,"getId");var Ou=F(require("pino")),hS=F(require("pino-pretty")),Xf=F(require("dd-trace")),ES=require("dd-trace/ext");var Zf={};N(Zf,{getLogReadStream:()=>Zx,getSingleFileMaxSizeInfo:()=>mS,localFileDestination:()=>Jf});var ro=F(require("fs")),zf=F(require("path")),lS=F(require("rotating-file-stream"));var Hf={};N(Hf,{ObjectStore:()=>tt,ObjectStoreBuckets:()=>Ex,SIGNED_FILE_PREFIX:()=>Vf,bucketTTLConfig:()=>du,budibaseTempDir:()=>an,client3rdPartyLibrary:()=>Kx,clientLibraryPath:()=>qx,clientLibraryUrl:()=>Qx,createBucketIfNotExists:()=>to,deleteFile:()=>Cx,deleteFiles:()=>bx,deleteFolder:()=>jT,downloadTarball:()=>vx,downloadTarballDirect:()=>xx,enrichPWAImages:()=>jx,enrichPluginURLs:()=>Hx,extractBucketAndPath:()=>kf,getAllFiles:()=>wx,getAppFileUrl:()=>rS,getClientCacheKey:()=>tS,getGlobalFileS3Key:()=>nS,getGlobalFileUrl:()=>Yx,getObjectMetadata:()=>Px,getPluginIconKey:()=>oS,getPluginJSKey:()=>sS,getPluginS3Dir:()=>uS,getPresignedUrl:()=>un,getReadStream:()=>fu,listAllObjects:()=>Gf,objectExists:()=>Kf,processAutomationAttachment:()=>yx,processObjectStoreAttachment:()=>$T,retrieve:()=>QT,retrieveDirectory:()=>Rx,retrieveToTmp:()=>Dx,sanitizeBucket:()=>be,sanitizeKey:()=>pe,streamUpload:()=>KT,streamUploadMany:()=>Ix,upload:()=>Ox,uploadDirectory:()=>qf});var mu=require("@aws-sdk/client-s3"),Mf=require("@aws-sdk/lib-storage"),VT=require("@aws-sdk/s3-request-presigner");var Kt=F(require("dd-trace")),ri=F(require("fs")),Xs=F(require("fs/promises")),Ff=F(require("node-fetch")),Tr=require("path"),hu=F(require("stream")),eo=require("stream/promises"),Bf=F(require("tar-fs")),Wf=require("uuid"),$f=F(require("zlib"));var MT=F(require("fs")),FT=require("os"),Zs=F(require("path")),BT=F(require("stream"));var Ex={BACKUPS:E.BACKUPS_BUCKET_NAME,APPS:E.APPS_BUCKET_NAME,TEMPLATES:E.TEMPLATES_BUCKET_NAME,GLOBAL:E.GLOBAL_BUCKET_NAME,PLUGINS:E.PLUGIN_BUCKET_NAME,TEMP:E.TEMP_BUCKET_NAME},WT=(0,Zs.join)((0,FT.tmpdir)(),".budibase");try{MT.default.mkdirSync(WT)}catch(t){if(t.code!=="EEXIST")throw t}function an(){return WT}s(an,"budibaseTempDir");var du=s((t,e)=>{let n={Rules:[{ID:`${t}-ExpireAfter${e}days`,Prefix:"",Status:"Enabled",Expiration:{Days:e}}]};return{Bucket:t,LifecycleConfiguration:n}},"bucketTTLConfig");async function gx(t){let e=await fetch(t.url);if(!e.ok||!e.body)throw new Error(`Unexpected response ${e.statusText}`);let r=Zs.default.basename(new URL(t.url).pathname);if(!e.body)throw new Error("No response received for attachment");return{filename:t.filename||r,content:BT.default.Readable.fromWeb(e.body)}}s(gx,"processUrlAttachment");async function $T(t){let e=kf(t.url);if(e===null)throw new Error("Invalid signed URL");let{bucket:r,path:n}=e,{stream:i}=await fu(r,n),o=Zs.default.basename(n);return{bucket:r,path:n,filename:t.filename||o,content:i}}s($T,"processObjectStoreAttachment");async function yx(t){return t.url?.startsWith("http://")||t.url?.startsWith("https://")?await gx(t):await $T(t)}s(yx,"processAutomationAttachment");var Tx=require("sanitize-s3-objectkey"),Sx={bucketCreationPromises:{}},Vf="/files/signed",yr={txt:"text/plain",html:"text/html",css:"text/css",js:"application/javascript",json:"application/json",gz:"application/gzip",svg:"image/svg+xml",form:"multipart/form-data"},Ax=[yr.html,yr.css,yr.js,yr.json];function pe(t){return Tx(be(t)).replace(/\\/g,"/")}s(pe,"sanitizeKey");function be(t){return t.replace(new RegExp(Ze,"g"),Je)}s(be,"sanitizeBucket");function tt(t={presigning:!1}){let e={forcePathStyle:!0,credentials:{accessKeyId:E.MINIO_ACCESS_KEY,secretAccessKey:E.MINIO_SECRET_KEY},region:E.AWS_REGION};return!E.MINIO_ENABLED&&E.AWS_SESSION_TOKEN&&(e.credentials={accessKeyId:E.MINIO_ACCESS_KEY,secretAccessKey:E.MINIO_SECRET_KEY,sessionToken:E.AWS_SESSION_TOKEN}),E.MINIO_URL&&(t.presigning&&E.MINIO_ENABLED?e.endpoint="http://minio-service":e.endpoint=E.MINIO_URL),new mu.S3(e)}s(tt,"ObjectStore");async function to(t,e){e=be(e);try{return await t.headBucket({Bucket:e}),{created:!1,exists:!0}}catch(r){let n=r.statusCode||r.$response?.statusCode,i=Sx.bucketCreationPromises,o=n===404,a=n===403;if(i[e])return await i[e],{created:!1,exists:!0};if(o||a){if(o)return i[e]=t.createBucket({Bucket:e}).catch(u=>{if(u.Code!=="BucketAlreadyOwnedByYou")throw u}),await i[e],delete i[e],{created:!0,exists:!1};throw new Error("Access denied to object store bucket."+r)}else throw new Error("Unable to write to object store bucket.")}}s(to,"createBucketIfNotExists");var _x=s((t,e)=>{if(e)return e;let r=t.split(".").pop();return r?yr[r.toLowerCase()]:yr.txt},"resolveContentType"),GT=s(async(t,e,r)=>{let n=be(t),i=tt(),o=await to(i,n);if(r.addTags({bucketCreated:o.created,bucketExists:o.exists}),e&&o.created){let a=du(n,e);await i.putBucketLifecycleConfiguration(a)}return{bucket:n,client:i,bucketCreated:o}},"initialiseBucket"),qT=s(async({client:t,bucket:e,filename:r,stream:n,type:i,extra:o})=>{if(!n)throw new Error("Stream to upload is invalid/undefined");let a=_x(r,i),u=pe(r),c={Bucket:e,Key:u,Body:n,ContentType:a,...o??{}};return{details:await new Mf.Upload({client:t,params:c}).done(),contentType:a}},"streamUploadInternal");async function Ox({bucket:t,filename:e,path:r,type:n,metadata:i,body:o,ttl:a}){let u=e.split(".").pop(),c=r?(await Xs.default.open(r)).createReadStream():o,l=tt(),d=await to(l,t);if(a&&d.created){let g=du(t,a);await l.putBucketLifecycleConfiguration(g)}let f=n,p=f||(u?yr[u.toLowerCase()]:yr.txt),m={Bucket:be(t),Key:pe(e),Body:c,ContentType:p};if(i&&typeof i=="object"){for(let g of Object.keys(i))(!i[g]||typeof i[g]!="string")&&delete i[g];m.Metadata=i}return new Mf.Upload({client:l,params:m}).done()}s(Ox,"upload");async function KT({bucket:t,stream:e,filename:r,type:n,extra:i,ttl:o}){return await Kt.default.trace("streamUpload",async a=>{a.addTags({bucketName:t,filename:r,type:n,ttl:o});let u=r.split(".").pop();a.addTags({extension:u});let{bucket:c,client:l}=await GT(t,o,a),{details:d,contentType:f}=await qT({client:l,bucket:c,filename:r,stream:e,type:n,extra:i}),p=await l.headObject({Bucket:c,Key:pe(r)});return a.addTags({contentType:f,contentLength:p.ContentLength}),{...d,ContentLength:p.ContentLength}})}s(KT,"streamUpload");async function Ix({bucket:t,files:e,ttl:r}){return await Kt.default.trace("streamUploadMany",async i=>{if(i.addTags({bucketName:t,ttl:r,fileCount:e.length}),!e.length)return[];let{bucket:o,client:a}=await GT(t,r,i),u=e.map((l,d)=>({...l,index:d})),c=new Array(e.length);return await St.parallelForeach(u,async l=>{let{details:d}=await qT({client:a,bucket:o,filename:l.filename,stream:l.stream,type:l.type,extra:l.extra});c[l.index]=d},10),c})}s(Ix,"streamUploadMany");async function QT(t,e){return await Kt.default.trace("retrieve",async r=>{r.addTags({bucketName:t,filepath:e});let n=tt(),i={Bucket:be(t),Key:pe(e)},o=await n.getObject(i);if(!o.Body)throw new Error("Unable to retrieve object");if(r.addTags({contentLength:o.ContentLength,contentType:o.ContentType}),Ax.includes(o.ContentType))return r.addTags({string:!0}),o.Body.transformToString();{r.addTags({string:!1});let a=o.Body.transformToWebStream();return hu.default.Readable.fromWeb(a)}})}s(QT,"retrieve");async function*Gf(t,e){let r=tt(),n=s((a={})=>r.listObjectsV2({...a,Bucket:be(t),Prefix:pe(e)}),"list"),i=!1,o;do{let a={};o&&(a.ContinuationToken=o);let u=await n(a);if(u.Contents)for(let c of u.Contents)yield c;i=!!u.IsTruncated,o=u.NextContinuationToken}while(i&&o)}s(Gf,"listAllObjects");async function wx(t,e){let r={};return await St.parallelForeach(Gf(t,e),async n=>{if(!n.Key)throw new Error("file.Key must be defined");r[n.Key]=n},5),r}s(wx,"getAllFiles");async function un(t,e,r=3600){let n=tt({presigning:!0}),i={Bucket:be(t),Key:pe(e)},o=await(0,VT.getSignedUrl)(n,new mu.GetObjectCommand(i),{expiresIn:r});if(E.MINIO_ENABLED){let a=new URL(o),u=a.pathname,c=a.search;return`${Vf}${u}${c}`}else return o}s(un,"getPresignedUrl");async function Dx(t,e){return await Kt.default.trace("retrieveToTmp",async r=>{r.addTags({bucketName:t,filepath:e}),t=be(t),e=pe(e);let n=await QT(t,e),i=(0,Tr.join)(an(),(0,Wf.v4)());return r.addTags({outputPath:i}),n instanceof hu.default.Readable?(r.addTags({stream:!0}),await(0,eo.pipeline)(n,ri.default.createWriteStream(i))):(r.addTags({stream:!1}),ri.default.writeFileSync(i,n)),i})}s(Dx,"retrieveToTmp");async function Rx(t,e,r){return await Kt.default.trace("retrieveDirectory",async n=>{n.addTags({bucketName:t,path:e});let i=(0,Tr.join)(an(),(0,Wf.v4)());await Xs.default.mkdir(i,{recursive:!0});let o=0;return await St.parallelForeach(Gf(t,e),async a=>{let{Key:u}=a;!u||r?.some(c=>c.test(u))||(o++,await Kt.default.trace("retrieveDirectory.object",async c=>{let l=a.Key;c.addTags({filename:l});let{stream:d}=await fu(t,l),f=l.split("/"),p=f.slice(0,f.length-1),m=(0,Tr.join)(i,...p);f.length>1&&!ri.default.existsSync(m)&&await Xs.default.mkdir(m,{recursive:!0}),await(0,eo.pipeline)(d,ri.default.createWriteStream((0,Tr.join)(i,...f),{mode:420}))}))},5),n.addTags({numObjects:o}),i})}s(Rx,"retrieveDirectory");async function Cx(t,e){let r=tt();await to(r,t);let n={Bucket:t,Key:pe(e)};return r.deleteObject(n)}s(Cx,"deleteFile");async function bx(t,e){let r=tt();await to(r,t);let n={Bucket:t,Delete:{Objects:e.map(i=>({Key:pe(i)}))}};return r.deleteObjects(n)}s(bx,"deleteFiles");async function jT(t,e){t=be(t),e=pe(e);let r=tt(),n={Bucket:t,Prefix:e},i=await r.listObjects(n);if(i.Contents?.length===0)return;let o={Bucket:t,Delete:{Objects:[]}};if(i.Contents?.forEach(a=>{o.Delete.Objects.push({Key:a.Key})}),o.Delete.Objects.length&&(await r.deleteObjects(o)).Deleted?.length===1e3)return jT(t,e)}s(jT,"deleteFolder");async function qf(t,e,r){return await Kt.default.trace("uploadDirectory",async n=>{n.addTags({bucketName:t,localPath:e,bucketPath:r}),t=be(t);let i=await Xs.default.readdir(e,{withFileTypes:!0});n.addTags({numFiles:i.length});for(let o of i){let a=pe((0,Tr.join)(r,o.name)),u=(0,Tr.join)(e,o.name);o.isDirectory()?await qf(t,u,a):await KT({bucket:t,filename:a,stream:ri.default.createReadStream(u)})}return i})}s(qf,"uploadDirectory");async function xx(t,e,r={}){e=pe(e);let n=await(0,Ff.default)(t,{headers:r});if(!n.ok)throw new Error(`unexpected response ${n.statusText}`);await(0,eo.pipeline)(n.body,$f.default.createUnzip(),Bf.default.extract(e))}s(xx,"downloadTarballDirect");async function vx(t,e,r){e=be(e),r=pe(r);let n=await(0,Ff.default)(t);if(!n.ok)throw new Error(`unexpected response ${n.statusText}`);let i=(0,Tr.join)(an(),r);return await(0,eo.pipeline)(n.body,$f.default.createUnzip(),Bf.default.extract(i)),!E.isTest()&&E.SELF_HOSTED&&await qf(e,i,r),i}s(vx,"downloadTarball");async function fu(t,e){return await Kt.default.trace("getReadStream",async r=>{t=be(t),e=pe(e),r.addTags({bucketName:t,path:e});let n=tt(),i={Bucket:t,Key:e},o=await n.getObject(i);if(!o.Body||!(o.Body instanceof hu.default.Readable))throw new Error("Unable to retrieve stream - invalid response");return r.addTags({contentLength:o.ContentLength,contentType:o.ContentType}),{stream:o.Body,contentLength:o.ContentLength,contentType:o.ContentType}})}s(fu,"getReadStream");async function Px(t,e){t=be(t),e=pe(e);let r=tt(),n={Bucket:t,Key:e};try{return await r.headObject(n)}catch{throw new Error("Unable to retrieve metadata from object")}}s(Px,"getObjectMetadata");async function Kf(t,e){t=be(t),e=pe(e);let r=tt(),n={Bucket:t,Key:e};try{return await r.headObject(n),!0}catch(i){if((i.statusCode||i.$response?.statusCode)===404)return!1;throw i}}s(Kf,"objectExists");function kf(t){let e=t.split("?")[0],r=new RegExp(`^${Vf}/(?<bucket>[^/]+)/(?<path>.+)$`),n=e.match(r);if(n&&n.groups){let{bucket:i,path:o}=n.groups;return{bucket:i,path:o}}return null}s(kf,"extractBucketAndPath");var eS=F(require("querystring"));var Au={};N(Au,{FlagSet:()=>gu,all:()=>Mx,flags:()=>Qf,getEnvFlags:()=>JT,init:()=>Ux,isEnabled:()=>Su,parseEnvFlags:()=>Tu,shutdown:()=>Lx,testutils:()=>jf});var yu=F(require("crypto")),YT=F(require("dd-trace")),HT=require("lodash"),zT=require("posthog-node");var Eu;function Ux(t){E.POSTHOG_TOKEN&&E.POSTHOG_API_HOST&&!E.SELF_HOSTED&&E.POSTHOG_FEATURE_FLAGS_ENABLED?(console.log("initializing posthog client..."),Eu=new zT.PostHog(E.POSTHOG_TOKEN,{host:E.POSTHOG_API_HOST,personalApiKey:E.POSTHOG_PERSONAL_TOKEN,featureFlagsPollingInterval:Ee.fromMinutes(3).toMs(),...t})):console.log("posthog disabled")}s(Ux,"init");function Lx(){Eu?.shutdown()}s(Lx,"shutdown");function Tu(t){let e=t.split(",").map(n=>n.split(":")),r=[];for(let[n,...i]of e)for(let o of i){let a=!0;o.startsWith("!")&&(o=o.slice(1),a=!1),r.push({tenantId:n,key:o,value:a})}return r}s(Tu,"parseEnvFlags");function JT(){return Tu(E.TENANT_FEATURE_FLAGS||"")}s(JT,"getEnvFlags");var gu=class{constructor(e){this.flagSchema=e;this.setId=yu.randomUUID()}static{s(this,"FlagSet")}defaults(){return(0,HT.cloneDeep)(this.flagSchema)}isFlagName(e){return this.flagSchema[e]!==void 0}async isEnabled(e){return(await this.fetch())[e]}async fetch(){return await YT.default.trace("features.fetch",async e=>{let r=sf(this.setId);if(r)return e?.addTags({fromCache:!0}),r;let n={},i=this.defaults(),o=G(),a=new Set;if(za())return i;for(let{tenantId:f,key:p,value:m}of JT())if(!(!f||f!=="*"&&f!==o)&&(n.readFromEnvironmentVars=!0,m===!1&&a.add(p),!!this.isFlagName(p))){if(typeof i[p]!="boolean")throw new Error(`Feature: ${p} is not a boolean`);i[p]=m,n[`flags.${p}.source`]="environment"}let u=Ft(),c=u?._id;if(!c){let f=rf();f&&(c=yu.createHash("sha512").update(f).digest("hex"))}let l=u?.tenantId;if(l||(l=o),n["identity.type"]=u?.type,n["identity._id"]=u?._id,n.tenantId=l,n.userId=c,Eu&&c){n.readFromPostHog=!0;let f=await ni(),p={tenantId:l},m={tenant:{id:l}};f.config.createdVersion&&(m.tenant.createdVersion=f.config.createdVersion),f.createdAt&&(m.tenant.createdAt=`${f.createdAt}`);let h=await Eu.getAllFlags(c,{personProperties:p,onlyEvaluateLocally:!0,groups:{tenant:l},groupProperties:m});for(let[g,y]of Object.entries(h))if(this.isFlagName(g)){if(typeof y!="boolean"){console.warn(`Invalid value for posthog flag "${g}": ${y}`);continue}if(!(i[g]===!0||a.has(g)))try{i[g]=y,n[`flags.${g}.source`]="posthog"}catch(S){console.warn(`Error parsing posthog flag "${g}": ${y}`,S)}}}let d=af();for(let[f,p]of Object.entries(d))this.isFlagName(f)&&typeof p=="boolean"&&(i[f]=p,n[`flags.${f}.source`]="override");of(this.setId,i);for(let[f,p]of Object.entries(i))n[`flags.${f}.value`]=p;return e?.addTags(n),i})}},kx={USE_ZOD_VALIDATOR:!1,AI_AGENTS:!1,ESM_CLIENT:!1,DEBUG_UI:E.isDev(),DEV_USE_CLIENT_FROM_STORAGE:!1,DUPLICATE_APP:!1,COPY_RESOURCES_BETWEEN_WORKSPACES:!1},Qf=new gu(kx);async function Su(t){return await Qf.isEnabled(t)}s(Su,"isEnabled");async function Mx(){return await Qf.fetch()}s(Mx,"all");var jf={};N(jf,{setFeatureFlags:()=>ZT,withFeatureFlags:()=>Wx});function Fx(){let t={};for(let{tenantId:e,key:r,value:n}of Tu(process.env.TENANT_FEATURE_FLAGS||"")){let i=t[e]||{};i[r]!==!1&&(i[r]=n,t[e]=i)}return t}s(Fx,"getCurrentFlags");function Bx(t){let e=[];for(let[r,n]of Object.entries(t))for(let[i,o]of Object.entries(n))o===!1?e.push(`${r}:!${i}`):e.push(`${r}:${i}`);return e.join(",")}s(Bx,"buildFlagString");function ZT(t,e){let r=Fx();for(let[i,o]of Object.entries(e)){let a=r[t]||{};a[i]=o,r[t]=a}let n=Bx(r);return As({TENANT_FEATURE_FLAGS:n})}s(ZT,"setFeatureFlags");function Wx(t,e,r){let n=ZT(t,e),i=r();return i instanceof Promise?i.finally(n):(n(),i)}s(Wx,"withFeatureFlags");var XT=F(require("aws-cloudfront-sign"));var _u;function $x(){if(!E.CLOUDFRONT_PRIVATE_KEY_64)throw new Error("CLOUDFRONT_PRIVATE_KEY_64 is not set");return _u||(_u=Buffer.from(E.CLOUDFRONT_PRIVATE_KEY_64,"base64").toString("utf-8"),_u)}s($x,"getPrivateKey");var Vx=s(()=>({keypairId:E.CLOUDFRONT_PUBLIC_KEY_ID,privateKeyString:$x(),expireTime:new Date().getTime()+1e3*60*60*24}),"getCloudfrontSignParams"),ii=s(t=>{let e=Gx(t);return XT.getSignedUrl(e,Vx())},"getPresignedUrl"),Gx=s(t=>{let e="/";return t.startsWith("/")&&(e=""),`${E.CLOUDFRONT_CDN}${e}${t}`},"getUrl");async function qx(t){let e=`${pe(t)}/budibase-client.js`,r=`${pe(t)}/budibase-client.esm.js`;return await Su("ESM_CLIENT")&&await Kf(E.APPS_BUCKET_NAME,r)?r:e}s(qx,"clientLibraryPath");function Kx(t,e){return`${pe(t)}/${e}`}s(Kx,"client3rdPartyLibrary");async function Qx(t,e){return`/api/assets/${t}/client?${await tS(e)}`}s(Qx,"clientLibraryUrl");async function tS(t){let e,r;try{e=G()}finally{r={version:t}}return e&&e!==ae&&(r.tenantId=e),r.dynamic=await Su("ESM_CLIENT"),eS.default.encode(r)}s(tS,"getClientCacheKey");async function rS(t){return E.CLOUDFRONT_CDN?ii(t):await un(E.APPS_BUCKET_NAME,t)}s(rS,"getAppFileUrl");async function jx(t){if(t.length===0)return[];try{return await Promise.all(t.map(async e=>({...e,src:await rS(e.src),type:e.type||"image/png"})))}catch(e){return console.error("Error enriching PWA images:",e),t}}s(jx,"enrichPWAImages");var Yx=s(async(t,e,r)=>{let n=nS(t,e);return E.CLOUDFRONT_CDN?(r&&(n=`${n}?etag=${r}`),ii(n)):await un(E.GLOBAL_BUCKET_NAME,n)},"getGlobalFileUrl"),nS=s((t,e)=>{let r=`${t}/${e}`;return E.MULTI_TENANCY&&(r=`${G()}/${r}`),r},"getGlobalFileS3Key");async function Hx(t){return!t||!t.length?[]:await Promise.all(t.map(async e=>{let r=await zx(e),n=await Jx(e);return{...e,jsUrl:r,iconUrl:n}}))}s(Hx,"enrichPluginURLs");async function zx(t){let e=sS(t);return iS(e)}s(zx,"getPluginJSUrl");async function Jx(t){let e=oS(t);if(e)return iS(e)}s(Jx,"getPluginIconUrl");async function iS(t){return E.CLOUDFRONT_CDN?ii(t):await un(E.PLUGIN_BUCKET_NAME,t)}s(iS,"getPluginUrl");function sS(t){return aS(t,"plugin.min.js")}s(sS,"getPluginJSKey");function oS(t){let e=t.iconUrl?"icon.svg":t.iconFileName;if(e)return aS(t,e)}s(oS,"getPluginIconKey");function aS(t,e){return`${uS(t.name)}/${e}`}s(aS,"getPluginS3Key");function uS(t){let e=`${t}`;return E.MULTI_TENANCY&&(e=`${G()}/${e}`),E.CLOUDFRONT_CDN&&(e=`plugins/${e}`),e}s(uS,"getPluginS3Dir");var dS="budibase.log",fS="budibase-logs-history.txt",pS=zf.default.join(an(),"systemlogs");function cS(t){return zf.default.join(pS,t)}s(cS,"getFullPath");function mS(t){let e=/(\d+)([A-Za-z])/,r=t?.match(e);if(!r){console.warn("totalMaxSize does not have a valid value",{totalMaxSize:t});return}let n=+r[1],i=r[2];if(n===1)switch(i){case"B":return{size:`${n}B`,totalHistoryFiles:1};case"K":return{size:`${n*1e3/2}B`,totalHistoryFiles:1};case"M":return{size:`${n*1e3/2}K`,totalHistoryFiles:1};case"G":return{size:`${n*1e3/2}M`,totalHistoryFiles:1};default:return}return n%2===0?{size:`${n/2}${i}`,totalHistoryFiles:1}:{size:`1${i}`,totalHistoryFiles:n-1}}s(mS,"getSingleFileMaxSizeInfo");function Jf(){let t=mS(E.ROLLING_LOG_MAX_SIZE);return lS.createStream(dS,{size:t?.size,path:pS,maxFiles:t?.totalHistoryFiles||1,immutable:!0,history:fS,initialRotation:!1})}s(Jf,"localFileDestination");function Zx(){let t=[],e=cS(fS);if(ro.default.existsSync(e)){let i=ro.default.readFileSync(e,"utf-8").split(`
37
- `);for(let o of i.filter(a=>a))t.push(ro.default.readFileSync(o))}return t.push(ro.default.readFileSync(cS(dS))),Buffer.concat(t.map(n=>new Uint8Array(n)))}s(Zx,"getLogReadStream");function Xx(t){return typeof t=="object"&&t!==null&&!(t instanceof Error)}s(Xx,"isPlainObject");function ev(t){return t instanceof Error}s(ev,"isError");function tv(t){return typeof t=="string"}s(tv,"isMessage");var Sr;if(!E.DISABLE_PINO_LOGGER){let t=E.LOG_LEVEL,e={level:t,formatters:{level:c=>({level:c.toUpperCase()}),bindings:()=>E.SELF_HOSTED?{service:E.SERVICE_NAME}:{}},timestamp:()=>`,"timestamp":"${new Date(Date.now()).toISOString()}"`},r=[];r.push(E.isDev()?{stream:(0,hS.default)({singleLine:!0}),level:t}:{stream:process.stdout,level:t}),E.SELF_HOSTED&&r.push({stream:Jf(),level:t}),Sr=r.length?(0,Ou.default)(e,Ou.default.multistream(r)):(0,Ou.default)(e);let n=s(c=>{let l,d=[],f="";c.forEach(y=>{tv(y)&&(f=`${f} ${y}`.trimStart()),Xx(y)&&d.push(y),ev(y)&&(l=y)});let p=u(),m={};m={tenantId:i(),appId:o(),automationId:a(),identityId:p?._id,identityType:p?.type,correlationId:Lf()};let h=Xf.default.scope().active();h&&Xf.default.inject(h.context(),ES.formats.LOG,m);let g={err:l,pid:process.pid,...m};if(d.length){let y={},S=0;for(let O=0;O<d.length;O++){let _=d[O],D=_._logKey;D?(delete _._logKey,g[D]=_):(y[S]=_,S++)}Object.keys(y).length&&(g.data=y)}return[g,f]},"getLogParams");console.log=(...c)=>{let[l,d]=n(c);Sr?.info(l,d)},console.info=(...c)=>{let[l,d]=n(c);Sr?.info(l,d)},console.warn=(...c)=>{let[l,d]=n(c);Sr?.warn(l,d)},console.error=(...c)=>{let[l,d]=n(c);Sr?.error(l,d)},console.trace=(...c)=>{let[l,d]=n(c);l.err||(l.err=new Error),Sr?.trace(l,d)},console.debug=(...c)=>{let[l,d]=n(c);Sr?.debug(l,d)};let i=s(()=>{let c;try{c=G()}catch{}return c},"getTenantId"),o=s(()=>{let c;try{c=Le()}catch{}return c},"getAppId"),a=s(()=>{let c;try{c=tf()}catch{}return c},"getAutomationId"),u=s(()=>{let c;try{c=Ft()}catch{}return c},"getIdentity")}var Iu=Sr;var rv=["AccountError"];function nv(t){return t&&t.suppressAlert}s(nv,"isSuppressed");function cn(t,e){e&&rv.includes(e.name)&&nv(e)||console.error(`bb-alert: ${t}`,e)}s(cn,"logAlert");function iv(t,e,r,n){t=`${t} - db: ${e} - doc: ${r} - error: `,cn(t,n)}s(iv,"logAlertWithInfo");function si(t,e){console.warn(`bb-warn: ${t}`,e)}s(si,"logWarn");var wu=class extends Error{static{s(this,"UnretriableError")}constructor(e){super(e),this.name="PermanentError"}},ep=class{static{s(this,"QueuedProcessor")}constructor(e,r={}){let{maxAttempts:n=3,removeOnFail:i=!0,removeOnComplete:o=!0,maxStalledCount:a=3}=r;this.waitForCompletionMs=r.waitForCompletionMs||1e4,this._queue=new ht(e,{maxStalledCount:a,jobOptions:{attempts:n,removeOnFail:i,removeOnComplete:o}}),this._queue.process(async(u,c)=>{try{let l=await this.processFn(u.data);c?.(null,l)}catch(l){l instanceof wu&&await u.discard(),cn(`Failed to process job in ${this._queue.name}`,l),c?.(l)}})}async close(e){await this._queue.close(e)}async execute(e){try{let r=await this._queue.add(e);return{success:!0,result:await Ne.withTimeout(this.waitForCompletionMs,()=>r.finished())}}catch(r){if(r.errno!=="ETIME")throw r;return{success:!1,reason:"timeout"}}}};var sv=100,Du,io=class t{static{s(this,"DocWritethroughProcessor")}static get queue(){return t._queue||(t._queue=new ht("docWritethroughQueue",{jobOptions:{attempts:sv}})),t._queue}init(){return t.queue.process(async e=>{try{await this.persistToDb(e.data)}catch(r){throw r.status===409?new Error(`Conflict persisting message ${e.id}. Attempt ${e.attemptsMade}`):r}}),this}async persistToDb({dbName:e,docId:r,data:n}){if(r.startsWith("scimlog"))return;let i=De(e),o;try{o=await i.get(r)}catch{o={_id:r}}o={...o,...n},await i.put(o)}},rp=class{static{s(this,"DocWritethrough")}constructor(e,r){this.db=e,this._docId=r}get docId(){return this._docId}async patch(e){await io.queue.add({dbName:this.db.name,docId:this.docId,data:e})}};function gS(){return Du=new io().init(),Du}s(gS,"init");function ov(){return Du||gS()}s(ov,"getProcessor");var oo={};N(oo,{CacheKey:()=>ye,TTL:()=>fn,bustCache:()=>oi,destroy:()=>so,get:()=>pn,keys:()=>Ru,store:()=>jt,withCache:()=>Ar,withCacheWithDynamicTTL:()=>yS});function Dt(t){let e=G();return`${t}:${e}`}s(Dt,"generateTenantKey");var ln=class{static{s(this,"BaseCache")}constructor(e=void 0){this.client=e}async getClient(){return this.client?this.client:await df()}async keys(e){return(await this.getClient()).keys(e)}async exists(e,r={useTenancy:!0}){return e=r.useTenancy?Dt(e):e,(await this.getClient()).exists(e)}async scan(e,r={useTenancy:!0}){return e=r.useTenancy?Dt(e):e,(await this.getClient()).scan(e)}async get(e,r={useTenancy:!0}){return e=r.useTenancy?Dt(e):e,(await this.getClient()).get(e)}async bulkGet(e,r={useTenancy:!0}){return e=r.useTenancy?e.map(i=>Dt(i)):e,(await this.getClient()).bulkGet(e)}async store(e,r,n=null,i={useTenancy:!0}){e=i.useTenancy?Dt(e):e,await(await this.getClient()).store(e,r,n)}async bulkStore(e,r=null,n={useTenancy:!0}){n.useTenancy&&(e=Object.entries(e).reduce((o,[a,u])=>(o[Dt(a)]=u,o),{})),await(await this.getClient()).bulkStore(e,r)}async delete(e,r={useTenancy:!0}){return e=r.useTenancy?Dt(e):e,(await this.getClient()).delete(e)}async bulkDelete(e,r={useTenancy:!0}){return e=r.useTenancy?e.map(i=>Dt(i)):e,(await this.getClient()).bulkDelete(e)}async withCache(e,r=null,n,i={useTenancy:!0}){let o=await this.get(e,i);if(o)return o;try{let a=await n();return await this.store(e,a,r,i),a}catch(a){throw console.error("Error fetching before cache - ",a),a}}async withCacheWithDynamicTTL(e,r,n={useTenancy:!0}){let i=await this.get(e,n);if(i)return i;try{let o=await r(),{value:a,ttl:u}=o;return await this.store(e,a,u,{useTenancy:n.useTenancy}),a}catch(o){throw console.error("Error fetching before cache - ",o),o}}async bustCache(e){let r=await this.getClient();try{await r.delete(Dt(e))}catch(n){throw console.error("Error busting cache - ",n),n}}async deleteIfValue(e,r,n={useTenancy:!0}){e=n.useTenancy?Dt(e):e,await(await this.getClient()).deleteIfValue(e,r)}};var dn=new ln,ye={CHECKLIST:"checklist",INSTALLATION:"installation",ANALYTICS_ENABLED:"analyticsEnabled",UNIQUE_TENANT_ID:"uniqueTenantId",EVENTS:"events",BACKFILL_METADATA:"backfillMetadata",EVENTS_RATE_LIMIT:"eventsRateLimit",OAUTH2_TOKEN:t=>`oauth2Token_${t}`},fn=(n=>(n[n.ONE_MINUTE=600]="ONE_MINUTE",n[n.ONE_HOUR=3600]="ONE_HOUR",n[n.ONE_DAY=86400]="ONE_DAY",n))(fn||{}),Ru=s((...t)=>dn.keys(...t),"keys"),pn=s((...t)=>dn.get(...t),"get"),jt=s((...t)=>dn.store(...t),"store"),so=s((...t)=>dn.delete(...t),"destroy"),Ar=s((...t)=>dn.withCache(...t),"withCache"),yS=s((...t)=>dn.withCacheWithDynamicTTL(...t),"withCacheWithDynamicTTL"),oi=s((...t)=>dn.bustCache(...t),"bustCache");var sp={};N(sp,{createCode:()=>uv,deleteCode:()=>lv,getCode:()=>cv,getExistingInvites:()=>ip,getInviteCodes:()=>SS,updateCode:()=>av});var TS=Ee.fromDays(7).toSeconds();async function av(t,e){await(await rn()).store(t,e,TS)}s(av,"updateCode");async function uv(t,e){let r=ne();return await(await rn()).store(r,{email:t,info:e},TS),r}s(uv,"createCode");async function cv(t){let r=await(await rn()).get(t);if(!r)throw"Invitation is not valid or has expired, please request a new one.";return r}s(cv,"getCode");async function lv(t){await(await rn()).delete(t)}s(lv,"deleteCode");async function SS(){let r=(await(await rn()).scan()).map(i=>({...i.value,code:i.key}));if(!E.MULTI_TENANCY)return r;let n=G();return r.filter(i=>n===i.info.tenantId)}s(SS,"getInviteCodes");async function ip(t){return(await SS()).filter(e=>t.includes(e.email))}s(ip,"getExistingInvites");var op={};N(op,{createCode:()=>fv,getCode:()=>pv,invalidateCode:()=>mv});var dv=Ee.fromHours(1).toSeconds();async function fv(t,e){let r=ne();return await(await Fs()).store(r,{userId:t,info:e},dv),r}s(fv,"createCode");async function pv(t){let r=await(await Fs()).get(t);if(!r)throw new Error("Provided information is not valid, cannot reset password - please try again.");return r}s(pv,"getCode");async function mv(t){await(await Fs()).delete(t)}s(mv,"invalidateCode");var wr={};N(wr,{getUser:()=>Do,getUsers:()=>qU,invalidateUser:()=>Ro});var ao={};N(ao,{getPlatformDB:()=>_r,users:()=>Et});var Et={};N(Et,{addSsoUser:()=>_S,addUser:()=>Sv,getUserDoc:()=>AS,lookupTenantId:()=>hv,removeUser:()=>Av,updateUserDoc:()=>Ev});function _r(){return De(fe.PLATFORM_INFO.name)}s(_r,"getPlatformDB");async function hv(t){return E.MULTI_TENANCY?(await AS(t)).tenantId:ae}s(hv,"lookupTenantId");async function AS(t){return _r().get(t)}s(AS,"getUserDoc");async function Ev(t){await _r().put(t)}s(Ev,"updateUserDoc");function gv(t,e){return{_id:t,tenantId:e}}s(gv,"newUserIdDoc");function yv(t,e,r){return{_id:e,userId:t,tenantId:r}}s(yv,"newUserEmailDoc");function Tv(t,e,r,n){return{_id:t,userId:r,email:e,tenantId:n}}s(Tv,"newUserSsoIdDoc");async function ap(t,e){let r=_r(),n;try{await r.get(t)}catch(i){if(i.status===404)n=e(),await r.put(n);else throw i}}s(ap,"addUserDoc");async function _S(t,e,r,n){return ap(t,()=>Tv(t,e,r,n))}s(_S,"addSsoUser");async function Sv(t,e,r,n){let i=[ap(e,()=>gv(e,t)),ap(r,()=>yv(e,r,t))];n&&i.push(_S(n,r,e,t)),await Promise.all(i)}s(Sv,"addUser");async function Av(t){let e=_r(),r=[t._id,t.email],n=await e.allDocs({keys:r,include_docs:!0});await e.bulkRemove(n.rows.map(i=>i.doc),{silenceErrors:!0})}s(Av,"removeUser");var mn={};N(mn,{getAccount:()=>Or,getAccountByTenantId:()=>ai,getStatus:()=>_v});var OS=F(require("node-fetch"));var uo=class{static{s(this,"API")}constructor(e){this.host=e}async apiCall(e,r,n){n.headers||(n.headers={}),n.headers["Content-Type"]||(n.headers={"Content-Type":"application/json",Accept:"application/json",...n.headers});let i=n.headers["Content-Type"]==="application/json";Js.setHeader(n.headers);let o={method:e,body:i?JSON.stringify(n.body):n.body,headers:n.headers,credentials:"include"};return await(0,OS.default)(`${this.host}${r}`,o)}async post(e,r){return this.apiCall("POST",e,r)}async get(e,r){return this.apiCall("GET",e,r)}async patch(e,r){return this.apiCall("PATCH",e,r)}async del(e,r){return this.apiCall("DELETE",e,r)}async put(e,r){return this.apiCall("PUT",e,r)}};var up=new uo(E.INTERNAL_ACCOUNT_PORTAL_URL),cp=E.SELF_HOSTED||E.DISABLE_ACCOUNT_PORTAL,Or=s(async t=>{if(cp)return;let e={email:t},r=await up.post("/api/accounts/search",{body:e,headers:{"x-budibase-api-key":E.ACCOUNT_PORTAL_API_KEY}});if(r.status!==200)throw new Error(`Error getting account by email ${t}`);return(await r.json())[0]},"getAccount"),ai=s(async t=>{if(cp)return;let e={tenantId:t},r=await up.post("/api/accounts/search",{body:e,headers:{"x-budibase-api-key":E.ACCOUNT_PORTAL_API_KEY}});if(r.status!==200)throw new Error(`Error getting account by tenantId ${t}`);return(await r.json())[0]},"getAccountByTenantId"),_v=s(async()=>{if(cp)return;let t=await up.get("/api/status",{headers:{"x-budibase-api-key":E.ACCOUNT_PORTAL_API_KEY}}),e=await t.json();if(t.status!==200)throw new Error("Error getting status");return e},"getStatus");var mi={};N(mi,{UserDB:()=>Ct,addAppBuilder:()=>WU,bulkGetGlobalUsersById:()=>Ju,bulkUpdateGlobalUsers:()=>Oo,cleanseUserObject:()=>vp,creatorsInList:()=>gn,doesUserExist:()=>LU,getAccountHolderFromUsers:()=>zu,getAllUserIds:()=>NU,getAllUsers:()=>UU,getById:()=>yn,getCreatorCount:()=>FU,getExistingAccounts:()=>pi,getExistingPlatformUsers:()=>lA,getExistingTenantUsers:()=>cA,getFirstPlatformUser:()=>Ao,getGlobalUserByAppPage:()=>EA,getGlobalUserByEmail:()=>Tt,getPlatformUsers:()=>Qu,getUserCount:()=>MU,hasAdminPermissions:()=>Ir,hasAppBuilderPermissions:()=>pA,hasBuilderPermissions:()=>ke,isAdmin:()=>Rt,isAdminOrBuilder:()=>fA,isAdminOrWorkspaceBuilder:()=>ju,isBuilder:()=>Ei,isCreatorAsync:()=>_o,isCreatorSync:()=>Yu,isGlobalBuilder:()=>dA,paginatedUsers:()=>yA,removeAppBuilder:()=>$U,removePortalUserPermissions:()=>BU,searchExistingEmails:()=>Dp,searchGlobalUsersByApp:()=>Zu,searchGlobalUsersByAppAccess:()=>xp,searchGlobalUsersByEmail:()=>gA,validateUniqueUser:()=>Hu});var ku={};N(ku,{BadRequestError:()=>xu,BudibaseError:()=>ui,EmailUnavailableError:()=>Yt,FeatureDisabledError:()=>Uu,ForbiddenError:()=>vu,HTTPError:()=>we,InvalidAPIKeyError:()=>ci,NotFoundError:()=>bu,NotImplementedError:()=>Pu,UnexpectedError:()=>Cu,UsageLimitError:()=>Nu,getPublicError:()=>Lu});var ui=class extends Error{constructor(r,n){super(r);this.code=n}static{s(this,"BudibaseError")}},Lu=s(t=>{let e;return t.code&&(e={code:t.code},t.getPublicError&&(e={...e,...t.getPublicError()})),e},"getPublicError"),we=class t extends ui{constructor(r,n,i="http"){super(r,i);this.status=n}static{s(this,"HTTPError")}static async fromResponse(r){let n=await r.text(),i=n,o=r.status,a="http";try{let u=JSON.parse(n);i=u.message,o=u.status,a=u.error?.code}catch{}return new t(i,o,a)}},Cu=class extends we{static{s(this,"UnexpectedError")}constructor(e){super(e,500)}},bu=class extends we{static{s(this,"NotFoundError")}constructor(e){super(e,404)}},xu=class extends we{static{s(this,"BadRequestError")}constructor(e){super(e,400)}},vu=class extends we{static{s(this,"ForbiddenError")}constructor(e){super(e,403)}},Pu=class extends we{static{s(this,"NotImplementedError")}constructor(e){super(e,501)}},Nu=class extends we{constructor(r,n){super(r,400,"usage_limit_exceeded");this.limitName=n}static{s(this,"UsageLimitError")}getPublicError(){return{limitName:this.limitName}}},Uu=class extends we{constructor(r,n){super(r,400,"feature_disabled");this.featureName=n}static{s(this,"FeatureDisabledError")}getPublicError(){return{featureName:this.featureName}}},ci=class extends ui{static{s(this,"InvalidAPIKeyError")}constructor(){super("Invalid API key - may need re-generated, or user doesn't exist","invalid_api_key")}},Yt=class extends Error{static{s(this,"EmailUnavailableError")}constructor(e){super(`Email already in use: '${e}'`)}};var pp={};N(pp,{PASSWORD_MAX_LENGTH:()=>dp,PASSWORD_MIN_LENGTH:()=>lp,validatePassword:()=>fp});var lp=+(E.PASSWORD_MIN_LENGTH||12),dp=+(E.PASSWORD_MAX_LENGTH||512);function fp(t){return!t||t.length<lp?{valid:!1,error:`Password invalid. Minimum ${lp} characters.`}:t.length>dp?{valid:!1,error:`Password invalid. Maximum ${dp} characters.`}:{valid:!0}}s(fp,"validatePassword");var Mu={};N(Mu,{createASession:()=>Iv,endSession:()=>wv,getSession:()=>hp,getSessionsForUser:()=>co,invalidateSessions:()=>hn,updateSessionTTL:()=>mp});var wS=require("uuid");var DS=E.SESSION_EXPIRY_SECONDS?parseInt(E.SESSION_EXPIRY_SECONDS):Ee.fromDays(7).toSeconds();function li(t,e){return`${t}/${e}`}s(li,"makeSessionID");async function co(t){return t?(await(await mr()).scan(t)).map(n=>n.value):(console.trace("Cannot get sessions for undefined userId"),[])}s(co,"getSessionsForUser");async function hn(t,e={}){try{let r=e?.reason||"unknown",n=e.sessionIds||[],i;if(n.length===0?i=(await co(t)).map(a=>({key:li(a.userId,a.sessionId)})):(n=Array.isArray(n)?n:[n],i=n.map(o=>({key:li(t,o)}))),i&&i.length>0){let o=await mr(),a=[];for(let u of i)a.push(o.delete(u.key));E.isTest()||si(`Invalidating sessions for ${t} (reason: ${r}) - ${i.map(u=>u.key).join(", ")}`),await Promise.all(a)}}catch(r){console.error(`Error invalidating sessions: ${r}`)}}s(hn,"invalidateSessions");async function Iv(t,e){let r=await co(t),n=0;if(r.length>=3){let l=r.sort((p,m)=>new Date(p.createdAt).getTime()-new Date(m.createdAt).getTime()),d=r.length-3+1,f=l.slice(0,d).map(p=>p.sessionId);n=f.length,await hn(t,{sessionIds:f,reason:"session limit exceeded"})}let i=await mr(),o=e.sessionId,a=e.csrfToken?e.csrfToken:(0,wS.v4)(),u=li(t,o),c={...e,csrfToken:a,createdAt:new Date().toISOString(),lastAccessedAt:new Date().toISOString(),userId:t};return await i.store(u,c,DS),{session:c,invalidatedSessionCount:n}}s(Iv,"createASession");async function mp(t){let e=await mr(),r=li(t.userId,t.sessionId);t.lastAccessedAt=new Date().toISOString(),await e.store(r,t,DS)}s(mp,"updateSessionTTL");async function wv(t,e){await(await mr()).delete(li(t,e))}s(wv,"endSession");async function hp(t,e){if(!t||!e)throw new Error(`Invalid session details - ${t} - ${e}`);let n=await(await mr()).get(li(t,e));if(!n)throw new Error(`Session not found - ${t} - ${e}`);return n}s(hp,"getSession");var fi={};N(fi,{account:()=>FS,action:()=>BS,ai:()=>WS,analytics:()=>Bu,app:()=>$S,asyncEventQueue:()=>gt,auditLog:()=>VS,auth:()=>Ku,automation:()=>GS,backfill:()=>qS,backfillCache:()=>Vu,backup:()=>KS,datasource:()=>QS,email:()=>jS,environmentVariable:()=>YS,group:()=>HS,identification:()=>yt,initAsyncEvents:()=>SU,installation:()=>ho,layout:()=>zS,license:()=>JS,org:()=>ZS,plugin:()=>XS,processors:()=>Ap,publishEvent:()=>A,query:()=>eA,resource:()=>tA,role:()=>So,rowAction:()=>rA,rows:()=>nA,screen:()=>iA,serve:()=>sA,shutdown:()=>AU,table:()=>oA,user:()=>Me,view:()=>aA,workspace:()=>uA});var Bu={};N(Bu,{enabled:()=>Fu});var Fu=s(async()=>Wu(),"enabled");var gt;function $u(){gt=new ht("systemEventQueue",{jobTags:t=>({"event.name":t.event})})}s($u,"init");async function RS(){gt&&await gt.close()}s(RS,"shutdown");async function CS(t){gt||$u();let{event:e,identity:r}=t;bm.indexOf(e)!==-1&&r.tenantId&&await gt.add(t)}s(CS,"publishAsyncEvent");var Vu={};N(Vu,{end:()=>Rv,isAlreadySent:()=>yp,isBackfillingEvent:()=>gp,recordEvent:()=>Ep,start:()=>Dv});var Dv=s(async t=>bv({eventWhitelist:t}),"start"),Ep=s(async(t,e)=>{let r=Tp(t,e);await jt(r,e,void 0,{useTenancy:!1})},"recordEvent"),Rv=s(async()=>{await xv(),await vv()},"end"),Cv=s(async()=>pn(ye.BACKFILL_METADATA),"getBackfillMetadata"),bv=s(async t=>jt(ye.BACKFILL_METADATA,t),"saveBackfillMetadata"),xv=s(async()=>{await so(ye.BACKFILL_METADATA)},"deleteBackfillMetadata"),vv=s(async()=>{let t=Tp(),e=await Ru(t);for(let r of e)await so(r,{useTenancy:!1})},"clearEvents"),gp=s(async t=>{let r=(await Cv())?.eventWhitelist;return!!(r&&r.includes(t))},"isBackfillingEvent"),yp=s(async(t,e)=>{let r=Tp(t,e);return!!await pn(r,{useTenancy:!1})},"isAlreadySent"),Pv={"automation:created":t=>t.automationId,"automation:step:created":t=>t.stepId,"datasource:created":t=>t.datasourceId,"layout:created":t=>t.layoutId,"query:created":t=>t.queryId,"role:created":t=>t.roleId,"screen:created":t=>t.screenId,"table:created":t=>t.tableId,"view:created":t=>t.tableId,"view:calculation:created":t=>t.tableId,"view:filter:created":t=>t.tableId,"app:created":t=>t.appId,"app:published":t=>t.appId,"auth:sso:created":t=>t.type,"auth:sso:activated":t=>t.type,"user:created":t=>t.userId,"user:admin:assigned":t=>t.userId,"user:builder:assigned":t=>t.userId,"role:assigned":t=>`${t.roleId}-${t.userId}`},Tp=s((t,e)=>{let r,n=G();if(t){r=`${ye.EVENTS}:${n}:${t}`;let i=Pv[t],o=i?i(e):void 0;o&&(r=`${r}:${o}`)}else r=`${ye.EVENTS}:${n}:*`;return r},"getEventKey");var Ap={};N(Ap,{analyticsProcessor:()=>LS,init:()=>Vv,processors:()=>Ht});var NS=require("posthog-node");var Nv=s(t=>t==="served:builder"||t==="served:app:preview"||t==="served:app","isRateLimited"),Uv=s(t=>t==="served:app:preview"||t==="served:app","isPerApp");var xS={"served:app":"calendarDay","served:app:preview":"calendarDay","served:builder":"calendarDay"},vS=s(async t=>{if(!Nv(t))return!1;let e=await Lv(t);if(e){let r=new Date(e.timestamp);switch(xS[t]){case"calendarDay":return r.setDate(r.getDate()+1),r.setHours(0,0,0,0),Date.now()>r.getTime()?(await bS(t,{timestamp:Date.now()}),!1):!0}}else return await bS(t,{timestamp:Date.now()}),!1},"limited"),PS=s(t=>{let e=`${ye.EVENTS_RATE_LIMIT}:${t}`;return Uv(t)&&(e=e+":"+Le()),e},"eventKey"),Lv=s(async t=>{let e=PS(t);return await pn(e)},"readEvent"),bS=s(async(t,e)=>{let r=PS(t),n=xS[t],i;switch(n){case"calendarDay":i=86400}await jt(r,e,i)},"recordEvent");var Mv=["user:updated","email:smtp:updated","auth:sso:updated","app:updated","role:updated","datasource:updated","query:updated","view:updated","view:calculation:updated","automation:trigger:updated","user_group:updated"],lo=class{static{s(this,"PosthogProcessor")}constructor(e){if(!e)throw new Error("Posthog token is not defined");this.posthog=new NS.PostHog(e)}async processEvent(e,r,n,i){if(Mv.includes(e)||await vS(e))return;n=this.clearPIIProperties(n),n.version=E.VERSION,n.service=E.SERVICE,n.environment=r.environment,n.hosting=r.hosting;let o=Le();o&&(n.appId=o);let a={distinctId:r.id,event:e,properties:n};i&&(a.timestamp=new Date(i)),(r.installationId||r.tenantId)&&(a.groups={},r.installationId&&(a.groups.installation=r.installationId,a.properties.installationId=r.installationId),r.tenantId&&(a.groups.tenant=r.tenantId,a.properties.tenantId=r.tenantId)),this.posthog.capture(a)}clearPIIProperties(e){return e.email&&delete e.email,e.audited&&delete e.audited,e}async identify(e,r){let n={distinctId:e.id,properties:e};r&&(n.timestamp=new Date(r)),this.posthog.identify(n)}async identifyGroup(e,r){let n={distinctId:e.id,groupType:e.type,groupKey:e.id,properties:e};r&&(n.timestamp=new Date(r)),this.posthog.groupIdentify(n)}async shutdown(){await this.posthog.shutdown()}};var US=lo;var Fv=["installation:version:upgraded","installation:version:downgraded"],Bv=["installation","tenant"],fo=class{static{s(this,"AnalyticsProcessor")}constructor(){E.POSTHOG_TOKEN&&!E.isTest()&&(this.posthog=new US(E.POSTHOG_TOKEN))}async processEvent(e,r,n,i){!Fv.includes(e)&&!await Fu()||this.posthog&&await this.posthog.processEvent(e,r,n,i)}async identify(e,r){!Bv.includes(e.type)&&!await Fu()||this.posthog&&await this.posthog.identify(e,r)}async identifyGroup(e,r){this.posthog&&await this.posthog.identifyGroup(e,r)}async shutdown(){this.posthog&&await this.posthog.shutdown()}};var Sp=E.SELF_HOSTED&&!E.isDev(),po=class{static{s(this,"LoggingProcessor")}async processEvent(e,r,n){Sp||console.log(`[audit] [identityType=${r.type}] ${e}`,n)}async identify(e){Sp||console.log("[audit] identified",e)}async identifyGroup(e){Sp||console.log("[audit] group identified",e)}async shutdown(){}};var di=class t{static{s(this,"AuditLogsProcessor")}static{this.auditLogsEnabled=!1}static init(e){t.auditLogsEnabled=!0;let r=e;return t.auditLogQueue=new ht("auditLogQueue",{jobTags:n=>({"event.name":n.event})}),t.auditLogQueue.process(async n=>{await Re(n.data.tenantId,async()=>{let i=n.data.properties;i.audited&&(i={...i,...i.audited},delete i.audited);let o={};E.ENABLE_AUDIT_LOG_IP_ADDR&&(o=n.data.opts.hostInfo),await r(n.data.event,i,{userId:n.data.opts.userId,timestamp:n.data.opts.timestamp,appId:n.data.opts.appId,hostInfo:o})})})}async processEvent(e,r,n,i){if(t.auditLogsEnabled&&Cf(e)){let o=r.type==="user"?r.id:void 0;await t.auditLogQueue.add({event:e,properties:n,opts:{userId:o,timestamp:i,appId:Le(),hostInfo:r.hostInfo},tenantId:G()})}}async identify(){}async identifyGroup(){}async shutdown(){await t.auditLogQueue?.close()}};var mo=class{constructor(e){this.initialised=!1;this.processors=[];this.processors=e}static{s(this,"Processor")}async processEvent(e,r,n,i){for(let o of this.processors)await o.processEvent(e,r,n,i)}async identify(e,r){for(let n of this.processors)n.identify&&await n.identify(e,r)}async identifyGroup(e,r){for(let n of this.processors)n.identifyGroup&&await n.identifyGroup(e,r)}async shutdown(){for(let e of this.processors)e.shutdown&&await e.shutdown()}};var LS=new fo,Wv=new po,$v=new di;function Vv(t){return di.init(t)}s(Vv,"init");var Ht=new mo([LS,Wv,$v]);var Gu={};N(Gu,{checkInstallVersion:()=>Kv,getInstall:()=>Eo,getInstallFromDB:()=>Op});var _p=F(require("semver"));var Eo=s(async()=>Ar(ye.INSTALLATION,86400,Op,{useTenancy:!1}),"getInstall");async function Gv(t){let e={_id:fe.PLATFORM_INFO.docs.install,installId:ne(),version:E.VERSION};try{let r=await t.put(e);return e._rev=r.rev,e}catch(r){if(r.status===409)return Op();throw r}}s(Gv,"createInstallDoc");var Op=s(async()=>Ke(fe.PLATFORM_INFO.name,async t=>{let e;try{e=await t.get(fe.PLATFORM_INFO.docs.install)}catch(r){if(r.status===404)e=await Gv(t);else throw r}return e}),"getInstallFromDB"),qv=s(async t=>{try{await Ke(fe.PLATFORM_INFO.name,async e=>{let r=await Eo();r.version=t,await e.put(r),await oi(ye.INSTALLATION)})}catch(e){if(e.status===409)return!1;throw e}return!0},"updateVersion"),Kv=s(async()=>{let t=await Eo(),e=t.version,r=E.VERSION;try{if(e!==r){let n=_p.default.gt(r,e),i=_p.default.lt(r,e);await qv(r)&&(await Os({_id:t.installId,type:"installation"},async()=>{n?await ho.upgraded(e,r):i&&await ho.downgraded(e,r)}),await yt.identifyInstallationGroup(t.installId))}}catch(n){n?.message?.includes("Invalid Version")?cn(`Invalid version "${r}" - is it semver?`):cn("Failed to retrieve version",n)}},"checkInstallVersion");var Qv=s(async()=>{let t=Md(),e=To(),r;if(t?r=t.type:r="tenant",r==="installation"){let n=await En(),i=go();return{id:kS(n,r),hosting:i,type:r,installationId:n,environment:e}}else if(r==="tenant"){let n=await En(),i=await qu(G()),o=go();return{id:kS(i,r),type:r,hosting:o,installationId:n,tenantId:i,realTenantId:G(),environment:e}}else if(r==="user"){let n=t,i=await qu(G()),o=await En(),a=n.account,u;return a?u=a.hosting:u=go(),{id:n._id,type:r,hosting:u,installationId:o,tenantId:i,environment:e,realTenantId:G(),hostInfo:n.hostInfo}}else throw new Error("Unknown identity type")},"getCurrentIdentity"),jv=s(async(t,e)=>{let r=t,n="installation",i=go(),o=E.VERSION,a=To(),u={id:r,type:n,hosting:i,version:o,environment:a};await Ip(u,e),await yo({...u,id:`$${n}_${r}`},e)},"identifyInstallationGroup"),Yv=s(async(t,e,r,n=E.VERSION)=>{let i=await qu(t),o="tenant",a=await En(),u=To(),c={id:i,type:o,hosting:e,environment:u,installationId:a,createdAt:r,createdVersion:n};await Ip(c,r),await yo({...c,id:`$${o}_${i}`},r)},"identifyTenantGroup"),Hv=s(async(t,e,r)=>{let n=t._id,i=await qu(t.tenantId),o="user",a=ke(t),u=Ir(t),c;Go(t)&&(c=t.providerType);let d=(await pi([t.email])).length>0,f=!!e&&d&&e.verified,p=await En(),m=e?e.hosting:go(),h=To();await yo({id:n,type:o,hosting:m,installationId:p,tenantId:i,verified:f,accountHolder:d,providerType:c,builder:a,admin:u,environment:h},r)},"identifyUser"),zv=s(async t=>{let e=t.accountId,r=t.tenantId,n="user",i=Vo(t)?t.providerType:void 0,o=t.verified,a=!0,u=t.hosting,c=await En(),l=To();if($o(t)){let f=await Tt(t.email);f?._id&&(e=f._id)}await yo({id:e,type:n,hosting:u,installationId:c,tenantId:r,providerType:i,verified:o,accountHolder:a,environment:l})},"identifyAccount"),yo=s(async(t,e)=>{await Ht.identify(t,e)},"identify"),Ip=s(async(t,e)=>{await Ht.identifyGroup(t,e)},"identifyGroup"),To=s(()=>E.isDev()?"development":E.DEPLOYMENT_ENVIRONMENT,"getDeploymentEnvironment"),go=s(()=>E.SELF_HOSTED?"self":"cloud","getHostingFromEnv"),En=s(async()=>Jv()?"account-portal":(await Eo()).installId,"getInstallationId"),qu=s(async t=>E.SELF_HOSTED?MS(t):t,"getEventTenantId"),MS=s(async t=>Re(t,()=>Ar(ye.UNIQUE_TENANT_ID,86400,async()=>{let e=H(),r=await ni(),n;return r.config.uniqueTenantId?r.config.uniqueTenantId:(n=`${ne()}_${t}`,r.config.uniqueTenantId=n,r.config.createdVersion=E.VERSION,await e.put(r),n)})),"getUniqueTenantId"),Jv=s(()=>E.SERVICE==="account-portal","isAccountPortal"),kS=s((t,e)=>e==="installation"||e==="tenant"?`$${e}_${t}`:t,"formatDistinctId"),yt={getCurrentIdentity:Qv,identifyInstallationGroup:jv,identifyTenantGroup:Yv,identifyUser:Hv,identifyAccount:zv,identify:yo,identifyGroup:Ip,getInstallationId:En,getUniqueTenantId:MS};var A=s(async(t,e,r,n)=>{let i=n||await yt.getCurrentIdentity();if(!(n?!1:await gp(t))){await CS({event:t,identity:i,properties:e,timestamp:r}),await Ht.processEvent(t,i,e,r);return}await yp(t,e)||(await Ht.processEvent(t,i,e,r),await Ep(t,e))},"publishEvent");async function Zv(t,e){let r={tenantId:t.tenantId};await A("account:created",r,void 0,e)}s(Zv,"created");async function Xv(t){let e={tenantId:t.tenantId};await A("account:deleted",e)}s(Xv,"deleted");async function eP(t){let e={tenantId:t.tenantId};await A("account:verified",e)}s(eP,"verified");var FS={created:Zv,deleted:Xv,verified:eP};async function tP(t,e){console.info("action:automation_step:executed",`disabled. Action step ${t.stepId} not published at ${e}`)}s(tP,"automationStepExecuted");async function rP(t,e){console.info("action:automation_step:executed",`disabled. Action type ${t.type} not published at ${e}`)}s(rP,"crudExecuted");async function nP(t,e){console.info("action:automation_step:executed",`disabled. Execution for ai agent ${t.agentId} not published at ${e}`)}s(nP,"aiAgentExecuted");var BS={aiAgentExecuted:nP,automationStepExecuted:tP,crudExecuted:rP};async function iP(t){let e={};await A("ai:config:created",e,t)}s(iP,"AIConfigCreated");async function sP(){let t={};await A("ai:config:updated",t)}s(sP,"AIConfigUpdated");var WS={AIConfigCreated:iP,AIConfigUpdated:sP};var oP=s(async(t,e)=>{let r={appId:t.appId,version:t.version,audited:{name:t.name}};await A("app:created",r,e)},"created");async function aP(t){let e={appId:t.appId,version:t.version,audited:{name:t.name}};await A("app:updated",e)}s(aP,"updated");async function uP(t){let e={appId:t.appId,audited:{name:t.name}};await A("app:deleted",e)}s(uP,"deleted");async function cP(t,e){let r={appId:t.appId,audited:{name:t.name}};await A("app:published",r,e)}s(cP,"published");async function lP(t){let e={appId:t.appId,audited:{name:t.name}};await A("app:unpublished",e)}s(lP,"unpublished");async function dP(t){let e={appId:t.appId,audited:{name:t.name}};await A("app:file:imported",e)}s(dP,"fileImported");async function fP(t,e){let r={duplicateAppId:e,appId:t.appId,audited:{name:t.name}};await A("app:duplicated",r)}s(fP,"duplicated");async function pP(t,e){let r={appId:t.appId,templateKey:e,audited:{name:t.name}};await A("app:template:imported",r)}s(pP,"templateImported");async function mP(t,e,r){let n={appId:t.appId,currentVersion:e,updatedToVersion:r,audited:{name:t.name}};await A("app:version:updated",n)}s(mP,"versionUpdated");async function hP(t,e,r){let n={appId:t.appId,currentVersion:e,revertedToVersion:r,audited:{name:t.name}};await A("app:version:reverted",n)}s(hP,"versionReverted");async function EP(t){let e={appId:t.appId,audited:{name:t.name}};await A("app:reverted",e)}s(EP,"reverted");async function gP(t){let e={appId:t.appId,audited:{name:t.name}};await A("app:exported",e)}s(gP,"exported");var $S={created:oP,updated:aP,deleted:uP,published:cP,unpublished:lP,fileImported:dP,duplicated:fP,templateImported:pP,versionUpdated:mP,versionReverted:hP,reverted:EP,exported:gP};async function yP(t){let e={filters:t};await A("audit_log:filtered",e)}s(yP,"filtered");async function TP(t){let e={filters:t};await A("audit_log:downloaded",e)}s(TP,"downloaded");var VS={filtered:yP,downloaded:TP};async function SP(t,e){let n={userId:(await yt.getCurrentIdentity()).id,source:t,audited:{email:e}};await A("auth:login",n)}s(SP,"login");async function AP(t){let r={userId:(await yt.getCurrentIdentity()).id,audited:{email:t}};await A("auth:logout",r)}s(AP,"logout");async function _P(t,e){let r={type:t};await A("auth:sso:created",r,e)}s(_P,"SSOCreated");async function OP(t){let e={type:t};await A("auth:sso:updated",e)}s(OP,"SSOUpdated");async function IP(t,e){let r={type:t};await A("auth:sso:activated",r,e)}s(IP,"SSOActivated");async function wP(t){let e={type:t};await A("auth:sso:deactivated",e)}s(wP,"SSODeactivated");var Ku={login:SP,logout:AP,SSOCreated:_P,SSOUpdated:OP,SSOActivated:IP,SSODeactivated:wP};async function DP(t,e){let r={appId:t.appId,automationId:t._id,triggerId:t.definition?.trigger?.id,triggerType:t.definition?.trigger?.stepId,audited:{name:t.name}};await A("automation:created",r,e)}s(DP,"created");async function RP(t){let e={appId:t.appId,automationId:t._id,triggerId:t.definition?.trigger?.id,triggerType:t.definition?.trigger?.stepId};await A("automation:trigger:updated",e)}s(RP,"triggerUpdated");async function CP(t){let e={appId:t.appId,automationId:t._id,triggerId:t.definition?.trigger?.id,triggerType:t.definition?.trigger?.stepId,audited:{name:t.name}};await A("automation:deleted",e)}s(CP,"deleted");async function bP(t){let e={appId:t.appId,automationId:t._id,triggerId:t.definition?.trigger?.id,triggerType:t.definition?.trigger?.stepId};await A("automation:tested",e)}s(bP,"tested");var xP=s(async(t,e)=>{let r={count:t};await A("automations:run",r,e)},"run");async function vP(t,e,r){let n={appId:t.appId,automationId:t._id,triggerId:t.definition?.trigger?.id,triggerType:t.definition?.trigger?.stepId,stepId:e.id,stepType:e.stepId,audited:{name:t.name}};await A("automation:step:created",n,r)}s(vP,"stepCreated");async function PP(t,e){let r={appId:t.appId,automationId:t._id,triggerId:t.definition?.trigger?.id,triggerType:t.definition?.trigger?.stepId,stepId:e.id,stepType:e.stepId,audited:{name:t.name}};await A("automation:step:deleted",r)}s(PP,"stepDeleted");var GS={created:DP,triggerUpdated:RP,deleted:CP,tested:bP,run:xP,stepCreated:vP,stepDeleted:PP};var hi=!E.SELF_HOSTED&&!E.isDev();async function NP(t){hi||await A("app:backfill:succeeded",t)}s(NP,"appSucceeded");async function UP(t){if(hi)return;let e={error:JSON.stringify(t,Object.getOwnPropertyNames(t))};await A("app:backfill:failed",e)}s(UP,"appFailed");async function LP(t){hi||await A("tenant:backfill:succeeded",t)}s(LP,"tenantSucceeded");async function kP(t){if(hi)return;let e={error:JSON.stringify(t,Object.getOwnPropertyNames(t))};await A("tenant:backfill:failed",e)}s(kP,"tenantFailed");async function MP(){if(hi)return;let t={};await A("installation:backfill:succeeded",t)}s(MP,"installationSucceeded");async function FP(t){if(hi)return;let e={error:JSON.stringify(t,Object.getOwnPropertyNames(t))};await A("installation:backfill:failed",e)}s(FP,"installationFailed");var qS={appSucceeded:NP,appFailed:UP,tenantSucceeded:LP,tenantFailed:kP,installationSucceeded:MP,installationFailed:FP};async function BP(t){let e={appId:t.appId,restoreId:t._id,backupCreatedAt:t.timestamp,name:t.name};await A("app:backup:restored",e)}s(BP,"appBackupRestored");async function WP(t,e,r,n,i){let o={appId:t,backupId:e,type:r,trigger:n,name:i};await A("app:backup:triggered",o)}s(WP,"appBackupTriggered");var KS={appBackupRestored:BP,appBackupTriggered:WP};function wp(t){return!Object.values(Mo).includes(t.source)}s(wp,"isCustom");async function $P(t,e){let r={datasourceId:t._id,source:t.source,custom:wp(t)};await A("datasource:created",r,e)}s($P,"created");async function VP(t){let e={datasourceId:t._id,source:t.source,custom:wp(t)};await A("datasource:updated",e)}s(VP,"updated");async function GP(t){let e={datasourceId:t._id,source:t.source,custom:wp(t)};await A("datasource:deleted",e)}s(GP,"deleted");var QS={created:$P,updated:VP,deleted:GP};async function qP(t){let e={};await A("email:smtp:created",e,t)}s(qP,"SMTPCreated");async function KP(){let t={};await A("email:smtp:updated",t)}s(KP,"SMTPUpdated");var jS={SMTPCreated:qP,SMTPUpdated:KP};async function QP(t,e){let r={name:t,environments:e};await A("environment_variable:created",r)}s(QP,"created");async function jP(t){let e={name:t};await A("environment_variable:deleted",e)}s(jP,"deleted");async function YP(t){let e={userId:t};await A("environment_variable:upgrade_panel_opened",e)}s(YP,"upgradePanelOpened");var YS={created:QP,deleted:jP,upgradePanelOpened:YP};async function HP(t,e){let r={groupId:t._id,viaScim:pt(),audited:{name:t.name}};await A("user_group:created",r,e)}s(HP,"created");async function zP(t){let e={groupId:t._id,viaScim:pt(),audited:{name:t.name}};await A("user_group:updated",e)}s(zP,"updated");async function JP(t){let e={groupId:t._id,viaScim:pt(),audited:{name:t.name}};await A("user_group:deleted",e)}s(JP,"deleted");async function ZP(t,e,r){let n={count:t,groupId:e._id,userIds:r,viaScim:pt(),audited:{name:e.name}};await A("user_group:user_added",n)}s(ZP,"usersAdded");async function XP(t,e,r){let n={count:t,groupId:e._id,userIds:r,viaScim:pt(),audited:{name:e.name}};await A("user_group:users_deleted",n)}s(XP,"usersDeleted");async function eN(t){let e={groupId:t,onboarding:!0};await A("user_group:onboarding_added",e)}s(eN,"createdOnboarding");async function tN(t){let e={permissions:t.roles,groupId:t._id,audited:{name:t.name}};await A("user_group:permissions_edited",e)}s(tN,"permissionsEdited");var HS={created:HP,updated:zP,deleted:JP,usersAdded:ZP,usersDeleted:XP,createdOnboarding:eN,permissionsEdited:tN};async function rN(t){let e={currentVersion:t};await A("installation:version:checked",e)}s(rN,"versionChecked");async function nN(t,e){let r={from:t,to:e};await A("installation:version:upgraded",r)}s(nN,"upgraded");async function iN(t,e){let r={from:t,to:e};await A("installation:version:downgraded",r)}s(iN,"downgraded");async function sN(){let t={};await A("installation:firstStartup",t)}s(sN,"firstStartup");var ho={versionChecked:rN,upgraded:nN,downgraded:iN,firstStartup:sN};async function oN(t,e){let r={layoutId:t._id};await A("layout:created",r,e)}s(oN,"created");async function aN(t){let e={layoutId:t};await A("layout:deleted",e)}s(aN,"deleted");var zS={created:oN,deleted:aN};async function uN(t,e){let r={accountId:t.accountId,...e};await A("license:plan:changed",r)}s(uN,"planChanged");async function cN(t){let e={accountId:t.accountId};await A("license:activated",e)}s(cN,"activated");async function lN(t){let e={accountId:t.accountId};await A("license:checkout:opened",e)}s(lN,"checkoutOpened");async function dN(t){let e={accountId:t.accountId};await A("license:checkout:success",e)}s(dN,"checkoutSuccess");async function fN(t){let e={accountId:t.accountId};await A("license:portal:opened",e)}s(fN,"portalOpened");async function pN(t){let e={accountId:t.accountId};await A("license:payment:failed",e)}s(pN,"paymentFailed");async function mN(t){let e={accountId:t.accountId};await A("license:payment:recovered",e)}s(mN,"paymentRecovered");var JS={planChanged:uN,activated:cN,checkoutOpened:lN,checkoutSuccess:dN,portalOpened:fN,paymentFailed:pN,paymentRecovered:mN};async function hN(t){let e={};await A("org:info:name:updated",e,t)}s(hN,"nameUpdated");async function EN(t){let e={};await A("org:info:logo:updated",e,t)}s(EN,"logoUpdated");async function gN(t){let e={};await A("org:platformurl:updated",e,t)}s(gN,"platformURLUpdated");async function yN(){let t={};await A("analytics:opt:out",t)}s(yN,"analyticsOptOut");async function TN(){let t={};await A("analytics:opt:out",t)}s(TN,"analyticsOptIn");var ZS={nameUpdated:hN,logoUpdated:EN,platformURLUpdated:gN,analyticsOptOut:yN,analyticsOptIn:TN};async function SN(t){let e={type:t.schema.type,name:t.name,description:t.description,version:t.version};await A("plugin:init",e)}s(SN,"init");async function AN(t){let e={pluginId:t._id,type:t.schema.type,source:t.source,name:t.name,description:t.description,version:t.version};await A("plugin:imported",e)}s(AN,"imported");async function _N(t){let e={pluginId:t._id,type:t.schema.type,name:t.name,description:t.description,version:t.version};await A("plugin:deleted",e)}s(_N,"deleted");var XS={init:SN,imported:AN,deleted:_N};var ON=s(async(t,e,r)=>{let n={queryId:e._id,datasourceId:t._id,source:t.source,queryVerb:e.queryVerb};await A("query:created",n,r)},"created"),IN=s(async(t,e)=>{let r={queryId:e._id,datasourceId:t._id,source:t.source,queryVerb:e.queryVerb};await A("query:updated",r)},"updated"),wN=s(async(t,e,r)=>{let n={queryId:e._id,datasourceId:t._id,source:t.source,queryVerb:e.queryVerb,appId:r};await A("query:deleted",n)},"deleted"),DN=s(async(t,e,r)=>{let n={datasourceId:t._id,source:t.source,count:r,importSource:e};await A("query:import",n)},"imported"),RN=s(async(t,e)=>{let r={count:t};await A("queries:run",r,e)},"run"),CN=s(async(t,e)=>{let r={queryId:e.queryId,datasourceId:t._id,source:t.source,queryVerb:e.queryVerb};await A("query:previewed",r)},"previewed"),eA={created:ON,updated:IN,deleted:wN,imported:DN,run:RN,previewed:CN};async function bN({resource:t,fromWorkspace:e,toWorkspace:r},n){let i={resource:t,fromWorkspace:e,toWorkspace:r};await A("resource:copied_to_workspace",i,n)}s(bN,"duplicatedToWorkspace");var tA={duplicatedToWorkspace:bN};async function xN(t,e){let r={roleId:t._id,permissionId:t.permissionId,inherits:t.inherits};await A("role:created",r,e)}s(xN,"created");async function vN(t){let e={roleId:t._id,permissionId:t.permissionId,inherits:t.inherits};await A("role:updated",e)}s(vN,"updated");async function PN(t){let e={roleId:t._id,permissionId:t.permissionId,inherits:t.inherits};await A("role:deleted",e)}s(PN,"deleted");async function NN(t,e,r){let n={userId:t._id,roleId:e};await A("role:assigned",n,r)}s(NN,"assigned");async function UN(t,e){let r={userId:t._id,roleId:e};await A("role:unassigned",r)}s(UN,"unassigned");var So={created:xN,updated:vN,deleted:PN,assigned:NN,unassigned:UN};async function LN(t,e){await A("row_action:created",t,e)}s(LN,"created");var rA={created:LN};var kN=s(async(t,e)=>{let r={count:t};await A("rows:created",r,e)},"created"),MN=s(async(t,e)=>{let r={tableId:t._id,count:e};await A("rows:imported",r)},"imported"),nA={created:kN,imported:MN};async function FN(t,e){let r={layoutId:t.layoutId,screenId:t._id,roleId:t.routing.roleId,audited:{name:t.routing?.route}};await A("screen:created",r,e)}s(FN,"created");async function BN(t){let e={layoutId:t.layoutId,screenId:t._id,roleId:t.routing.roleId,audited:{name:t.routing?.route}};await A("screen:deleted",e)}s(BN,"deleted");var iA={created:FN,deleted:BN};async function WN(t){let e={timezone:t};await A("served:builder",e)}s(WN,"servedBuilder");async function $N(t,e,r){let n={appVersion:t.version,timezone:e,embed:r===!0};await A("served:app",n)}s($N,"servedApp");async function VN(t,e){let r={appId:t.appId,appVersion:t.version,timezone:e};await A("served:app:preview",r)}s(VN,"servedAppPreview");var sA={servedBuilder:WN,servedApp:$N,servedAppPreview:VN};async function GN(t,e){let r={tableId:t._id,audited:{name:t.name}};await A("table:created",r,e)}s(GN,"created");async function qN(t,e){let r,n;for(let o in e.schema)if(!t.schema[o]){let a=e.schema[o];"default"in a&&a.default!=null&&(r=!0),a.type==="ai"&&(n=a.operation)}let i={tableId:e._id,defaultValues:r,aiColumn:n,audited:{name:e.name}};(r||n)&&await A("table:updated",i)}s(qN,"updated");async function KN(t,e){let r={tableId:t._id,audited:{name:t.name},appId:e};await A("table:deleted",r)}s(KN,"deleted");async function QN(t,e){let r={tableId:t._id,format:e,audited:{name:t.name}};await A("table:exported",r)}s(QN,"exported");async function jN(t){let e={tableId:t._id,audited:{name:t.name}};await A("table:imported",e)}s(jN,"imported");var oA={created:GN,updated:qN,deleted:KN,exported:QN,imported:jN};async function YN(t,e){let r={userId:t._id,viaScim:pt(),audited:{email:t.email}};await A("user:created",r,e)}s(YN,"created");async function HN(t){let e={userId:t._id,viaScim:pt(),audited:{email:t.email}};await A("user:updated",e)}s(HN,"updated");async function zN(t){let e={userId:t._id,viaScim:pt(),audited:{email:t.email}};await A("user:deleted",e)}s(zN,"deleted");async function JN(t,e){let r={userId:t._id,audited:{email:t.email}};await A("user:admin:assigned",r,e)}s(JN,"permissionAdminAssigned");async function ZN(t){let e={userId:t._id,audited:{email:t.email}};await A("user:admin:removed",e)}s(ZN,"permissionAdminRemoved");async function XN(t,e){let r={userId:t._id,audited:{email:t.email}};await A("user:builder:assigned",r,e)}s(XN,"permissionBuilderAssigned");async function eU(t){let e={userId:t._id,audited:{email:t.email}};await A("user:builder:removed",e)}s(eU,"permissionBuilderRemoved");async function tU(t){let e={audited:{email:t}};await A("user:invited",e)}s(tU,"invited");async function rU(t){let e={userId:t._id,audited:{email:t.email}};await A("user:invite:accepted",e)}s(rU,"inviteAccepted");async function nU(t){let e={userId:t._id,audited:{email:t.email}};await A("user:password:force:reset",e)}s(nU,"passwordForceReset");async function iU(t){let e={userId:t._id,audited:{email:t.email}};await A("user:password:updated",e)}s(iU,"passwordUpdated");async function sU(t){let e={userId:t._id,audited:{email:t.email}};await A("user:password:reset:requested",e)}s(sU,"passwordResetRequested");async function oU(t){let e={userId:t._id,audited:{email:t.email}};await A("user:password:reset",e)}s(oU,"passwordReset");async function aU(t){let e={users:t};await A("user:data:collaboration",e)}s(aU,"dataCollaboration");var Me={created:YN,updated:HN,deleted:zN,permissionAdminAssigned:JN,permissionAdminRemoved:ZN,permissionBuilderAssigned:XN,permissionBuilderRemoved:eU,invited:tU,inviteAccepted:rU,passwordForceReset:nU,passwordUpdated:iU,passwordResetRequested:sU,passwordReset:oU,dataCollaboration:aU};async function uU(t,e){let r={name:t.name,type:t.type,tableId:t.tableId};await A("view:created",r,e)}s(uU,"created");async function cU(t){let e={tableId:t.tableId};await A("view:updated",e)}s(cU,"updated");async function lU(t,e){let r={...Ne.views.isV2(t)?{id:t.id,tableId:t.tableId,appId:e}:{}};await A("view:deleted",r)}s(lU,"deleted");async function dU(t,e){let r={tableId:t._id,format:e};await A("view:exported",r)}s(dU,"exported");async function fU({tableId:t,filterGroups:e},r){let n={tableId:t,filterGroups:e};await A("view:filter:created",n,r)}s(fU,"filterCreated");async function pU({tableId:t,filterGroups:e}){let r={tableId:t,filterGroups:e};await A("view:filter:updated",r)}s(pU,"filterUpdated");async function mU(t){let e={tableId:t.tableId};await A("view:filter:deleted",e)}s(mU,"filterDeleted");async function hU({tableId:t,calculationType:e},r){let n={tableId:t,calculation:e};await A("view:calculation:created",n,r)}s(hU,"calculationCreated");async function EU(t){let e={tableId:t.tableId,calculation:t.calculation};await A("view:calculation:updated",e)}s(EU,"calculationUpdated");async function gU(t){let e={tableId:t.tableId,calculation:t.calculation};await A("view:calculation:deleted",e)}s(gU,"calculationDeleted");async function yU(t,e){let r={tableId:t};await A("view:join:created",r,e)}s(yU,"viewJoinCreated");var aA={created:uU,updated:cU,deleted:lU,exported:dU,filterCreated:fU,filterUpdated:pU,filterDeleted:mU,calculationCreated:hU,calculationUpdated:EU,calculationDeleted:gU,viewJoinCreated:yU};async function TU(t,e){let r={workspaceAppId:t._id,audited:{name:t.name},appId:e};await A("workspace_app:deleted",r)}s(TU,"deleted");var uA={deleted:TU};function SU(){}s(SU,"initAsyncEvents");var AU=s(async()=>{await Ht.shutdown(),console.log("Events shutdown")},"shutdown");var Rp={};N(Rp,{creatorsInList:()=>gn,getAccountHolderFromUsers:()=>zu,hasAdminPermissions:()=>Ir,hasAppBuilderPermissions:()=>pA,hasBuilderPermissions:()=>ke,isAdmin:()=>Rt,isAdminOrBuilder:()=>fA,isAdminOrWorkspaceBuilder:()=>ju,isBuilder:()=>Ei,isCreatorAsync:()=>_o,isCreatorSync:()=>Yu,isGlobalBuilder:()=>dA,validateUniqueUser:()=>Hu});async function Dp(t){let e=[],r=await cA(t);e.push(...r.map(a=>a.email));let n=await lA(t);e.push(...n.map(a=>a._id));let i=await pi(t);e.push(...i.map(a=>a.email));let o=await ip(t);return e.push(...o.map(a=>a.email)),[...new Set(e.map(a=>a.toLowerCase()))]}s(Dp,"searchExistingEmails");async function Qu(t){return await Gs("platform_users_lowercase_2",{keys:[t.toLowerCase()],include_docs:!0})}s(Qu,"getPlatformUsers");async function Ao(t){return(await Qu(t))[0]??null}s(Ao,"getFirstPlatformUser");async function cA(t){let r={keys:t.map(i=>i.toLowerCase()),include_docs:!0},n={arrayResponse:!0};return await $t("by_email2",r,void 0,n)}s(cA,"getExistingTenantUsers");async function lA(t){let r={keys:t.map(n=>n.toLowerCase()),include_docs:!0};return await Gs("platform_users_lowercase_2",r)}s(lA,"getExistingPlatformUsers");async function pi(t){let r={keys:t.map(n=>n.toLowerCase()),include_docs:!0};return await Gs("account_by_email",r)}s(pi,"getExistingAccounts");var Ei=Ue.users.isBuilder,Rt=Ue.users.isAdmin,dA=Ue.users.isGlobalBuilder,fA=Ue.users.isAdminOrBuilder,Ir=Ue.users.hasAdminPermissions,ke=Ue.users.hasBuilderPermissions,pA=Ue.users.hasAppBuilderPermissions,ju=Ue.users.isAdminOrWorkspaceBuilder;async function gn(t,e){let r=[...new Set(t.filter(i=>i.userGroups).flatMap(i=>i.userGroups))];return e=await H().getMultiple(r,{allowMissing:!0}),t.map(i=>Yu(i,e))}s(gn,"creatorsInList");async function _o(t){let e=[];return t.userGroups&&(e=await H().getMultiple(t.userGroups)),Yu(t,e)}s(_o,"isCreatorAsync");function Yu(t,e){let r=Ue.users.isCreator(t);return!r&&t?_U(t,e):r}s(Yu,"isCreatorSync");function _U(t,e){let r=e?.filter(n=>t.userGroups?.indexOf(n._id)!==-1);return r&&r.length>0?r.some(n=>Object.values(n.roles||{}).includes("CREATOR")):!1}s(_U,"isCreatorByGroupMembership");async function Hu(t,e){if(E.MULTI_TENANCY){let r=await Ao(t);if(r!=null&&r.tenantId!==e)throw new Yt(t)}if(!E.SELF_HOSTED&&!E.DISABLE_ACCOUNT_PORTAL){let r=await Or(t);if(r&&r.verified&&r.tenantId!==e)throw new Yt(t)}}s(Hu,"validateUniqueUser");async function zu(t){if(!E.SELF_HOSTED&&!E.DISABLE_ACCOUNT_PORTAL){let e=await pi(t.map(r=>r.email));return t.find(r=>e.map(n=>n.email).includes(r.email))}}s(zu,"getAccountHolderFromUsers");var Cp=s(async t=>{await Me.deleted(t),ke(t)&&await Me.permissionBuilderRemoved(t),Ir(t)&&await Me.permissionAdminRemoved(t)},"handleDeleteEvents"),OU=s(async(t,e,r)=>{for(let[n,i]of Object.entries(e))(!r||r[n]!==i)&&await So.assigned(t,i)},"assignAppRoleEvents"),IU=s(async(t,e,r)=>{if(r)for(let[n,i]of Object.entries(r))(!e||e[n]!==i)&&await So.unassigned(t,i)},"unassignAppRoleEvents"),wU=s(async(t,e)=>{let r=t.roles,n=e?.roles;await OU(t,r,n),await IU(t,r,n)},"handleAppRoleEvents"),bp=s(async(t,e)=>{let r=G(),n;!E.SELF_HOSTED&&!E.DISABLE_ACCOUNT_PORTAL&&(n=await ai(r)),await yt.identifyUser(t,n),e?(await Me.updated(t),RU(t,e)&&await Me.permissionBuilderRemoved(t),bU(t,e)&&await Me.permissionAdminRemoved(t),!e.forceResetPassword&&t.forceResetPassword&&t.password&&await Me.passwordForceReset(t),t.password!==e.password&&await Me.passwordUpdated(t)):await Me.created(t),DU(t,e)&&await Me.permissionBuilderAssigned(t),CU(t,e)&&await Me.permissionAdminAssigned(t),await wU(t,e)},"handleSaveEvents"),DU=s((t,e)=>mA(t,e,ke),"isAddingBuilder"),RU=s((t,e)=>hA(t,e,ke),"isRemovingBuilder"),CU=s((t,e)=>mA(t,e,Ir),"isAddingAdmin"),bU=s((t,e)=>hA(t,e,Ir),"isRemovingAdmin"),mA=s((t,e,r)=>!(!r(t)||e&&r(e)),"isAddingPermission"),hA=s((t,e,r)=>!(r(t)||!e||!r(e)),"isRemovingPermission");var vU=s(async t=>{let e=t._id;await Et.removeUser(t),await Cp(t),await wr.invalidateUser(e),await hn(e,{reason:"bulk-deletion"})},"bulkDeleteProcessing"),Ct=class t{static{s(this,"UserDB")}static init(e,r,n){t.quotas=e,t.groups=r,t.features=n}static async isPreventPasswordActions(e,r){return E.ENABLE_SSO_MAINTENANCE_MODE&&Rt(e)?!1:await t.features.isSSOEnforced()||Go(e)?!0:(r||(r=await ai(G())),!!(r&&r.email===e.email&&Vo(r)))}static async buildUser(e,r={hashPassword:!0,requirePassword:!0},n,i,o){let{password:a,_id:u}=e;i&&!i.password&&(r.requirePassword=!1);let c;if(a&&a!==i?.password){if(await t.isPreventPasswordActions(e,o))throw new we("Password change is disabled for this user",400);if(!r.skipPasswordValidation){let f=fp(a);if(!f.valid)throw new we(f.error,400)}c=r.hashPassword?await Ld(a):a}else i&&(c=i.password);let l=r.requirePassword&&!await t.features.isSSOEnforced();if(!c&&l)throw"Password must be specified.";u=u||Zn();let d={createdAt:Date.now(),...i,...e,_id:u,password:c,tenantId:n};return d.roles||(d.roles={}),d.status==null&&(d.status="active"),d}static async allUsers(){return(await H().allDocs(nn(null,{include_docs:!0}))).rows.map(n=>n.doc)}static async countUsersByApp(e){return{userCount:(await Zu(e,{})).length}}static async getUsersByAppAccess(e){return await xp(e.appId,{limit:e.limit||50})}static async getUserByEmail(e){return Tt(e)}static async getUser(e){let r=await yn(e);return r&&delete r.password,r}static async bulkGet(e){return await Ju(e)}static async bulkUpdate(e){return await Oo(e)}static async save(e,r={}){r.hashPassword==null&&(r.hashPassword=!0),r.requirePassword==null&&(r.requirePassword=!0);let n=G(),i=H(),{email:o,_id:a,userGroups:u=[],roles:c}=e;if(!o&&!a)throw new Error("_id or email is required");let l;if(a)try{if(l=await yn(a),o&&l.email!==o&&!r.allowChangingEmail)throw new Error("Email address cannot be changed")}catch(p){if(p.status!==404)throw p}if(!l&&o&&(l=await Tt(o),l&&l._id!==a))throw new Yt(o);let d=1,f=0;if((r.isAccountHolder||l)&&(d=0,f=1),l){let[p,m]=await gn([l,e]);f=p!==m?1:0}return t.quotas.addUsers(d,f,async()=>{r.isAccountHolder||await Hu(o,n);let p=await t.buildUser(e,r,n,l);r.currentUserId&&r.currentUserId===l?._id&&(p=vp(p,l)),!l&&c?.length&&(p.roles={...c});let m=[];if(!a&&u.length>0)for(let h of u)m.push(t.groups.addUsers(h,[p._id]));try{let h=await i.put(p);return p._rev=h.rev,await bp(p,l),l&&p.email!==l.email&&await Et.removeUser({email:l.email}),await Et.addUser(n,p._id,p.email,p.ssoId),await wr.invalidateUser(h.id),await Promise.all(m),i.get(p._id)}catch(h){throw h.status===409?"User exists already":h}})}static async bulkCreate(e,r){let n=G(),i=[],o=[],a=[],u=e.map(p=>p.email),c=await Dp(u),l=[];for(let p of e){let m=o.find(g=>g.email.toLowerCase()===p.email.toLowerCase()),h=c.includes(p.email.toLowerCase());if(m||h){l.push({email:p.email,reason:"Unavailable"});continue}p.userGroups=r||[],o.push(p),await _o(p)&&a.push(p)}let d=await ai(n),f=await t.features.isSSOEnforced();return t.quotas.addUsers(o.length,a.length,async()=>{for(let h of o)f&&delete h.password,i.push(t.buildUser(h,{hashPassword:!0,requirePassword:!f},n,void 0,d));let p=await Promise.all(i);await Oo(p);for(let h of p)await Et.addUser(n,h._id,h.email),await bp(h,void 0);let m=p.map(h=>({_id:h._id,email:h.email}));if(Array.isArray(m)&&r){let h=[],g=m.map(y=>y._id);for(let y of r)h.push(t.groups.addUsers(y,g));await Promise.all(h)}return{successful:m,unsuccessful:l}})}static async bulkDelete(e){let r=H(),n={successful:[],unsuccessful:[]},i=await zu(e);i&&(e=e.filter(m=>m.userId!==i.userId),n.unsuccessful.push({_id:i.userId,email:i.email,reason:"Account holder cannot be deleted"}));let a=(await r.allDocs({include_docs:!0,keys:e.map(m=>m.userId)})).rows.map(m=>m.doc),u=a.map(m=>({...m,_deleted:!0})),c=await Oo(u),d=(await gn(a)).filter(m=>m).length,f=[];for(let m of a){let g=(await Ao(m._id)).ssoId;g&&(await Qu(g)).filter(S=>S.ssoId==null).forEach(S=>{f.push({...S,_deleted:!0})}),await vU(m)}await _r().bulkDocs(f),await t.quotas.removeUsers(u.length,d);let p={};return a.reduce((m,h)=>(m[h._id]=h,m),p),c.forEach(m=>{let h=p[m.id].email;m.ok?n.successful.push({_id:m.id,email:h}):n.unsuccessful.push({_id:m.id,email:h,reason:"Database error"})}),n}static async destroy(e){let r=H(),n=await r.get(e),i=n._id;if(!E.SELF_HOSTED&&!E.DISABLE_ACCOUNT_PORTAL){let a=n.email;if(await Or(a))throw n.userId===Ft()._id?new we('Please visit "Account" to delete this user',400):new we("Account holder cannot be deleted",400)}await Et.removeUser(n),await r.remove(i,n._rev);let o=await _o(n)?1:0;await t.quotas.removeUsers(1,o),await Cp(n),await wr.invalidateUser(i),await hn(i,{reason:"deletion"})}static async createAdminUser(e,r,n){let i=n?.password,o={email:e,password:i,createdAt:Date.now(),roles:{},builder:{global:!0},admin:{global:!0},tenantId:r,firstName:n?.firstName,lastName:n?.lastName};return n?.ssoId&&(o.ssoId=n.ssoId),await oi(ye.CHECKLIST),await t.save(o,{hashPassword:n?.hashPassword,requirePassword:n?.requirePassword,skipPasswordValidation:n?.skipPasswordValidation,isAccountHolder:!0})}static async getGroups(e){return await this.groups.getBulk(e)}static async getGroupBuilderAppIds(e){return await this.groups.getGroupBuilderAppIds(e)}};function wo(t){return Array.isArray(t)?t.map(e=>{if(e)return delete e.password,e}):t&&(delete t.password,t)}s(wo,"removeUserPassword");async function Ju(t,e){let n=(await H().allDocs({keys:t,include_docs:!0})).rows.map(i=>i.doc);return e?.cleanup&&(n=wo(n)),n}s(Ju,"bulkGetGlobalUsersById");async function NU(){let t=H(),e=`us${b}`;return(await t.allDocs({startkey:e,endkey:`${e}${ve}`})).rows.map(n=>n.id)}s(NU,"getAllUserIds");async function UU(){let t=H(),e=`us${b}`;return(await t.allDocs({startkey:e,endkey:`${e}${ve}`,include_docs:!0})).rows.map(n=>n.doc)}s(UU,"getAllUsers");async function Oo(t){return await H().bulkDocs(t)}s(Oo,"bulkUpdateGlobalUsers");async function yn(t,e){let n=await H().get(t);return e?.cleanup&&(n=wo(n)),n}s(yn,"getById");async function Tt(t,e){if(t==null)throw"Must supply an email address to view";let r=await $t("by_email2",{key:t.toLowerCase(),include_docs:!0});if(Array.isArray(r))throw new Error(`Multiple users found with email address: ${t}`);let n=r;return e?.cleanup&&(n=wo(n)),n}s(Tt,"getGlobalUserByEmail");async function LU(t){try{let e=await Tt(t);if(Array.isArray(e)||e!=null)return!0}catch{return!1}return!1}s(LU,"doesUserExist");async function Zu(t,e,r){if(typeof t!="string")throw new Error("Must provide a string based workspace ID");let n=ru(t,{include_docs:!0});n.startkey=e&&e.startkey?e.startkey:n.startkey;let i=await $t("by_app",n);i||(i=[]);let o=Array.isArray(i)?i:[i];return r?.cleanup&&(o=wo(o)),o}s(Zu,"searchGlobalUsersByApp");async function xp(t,e){let r=`roles.${t}`,n=[{"builder.global":!0},{"admin.global":!0}];if(t){let a={[r]:{$exists:!0}};n.push(a)}return(await H().find({selector:{$or:n,_id:{$regex:"^us_"}},limit:e?.limit||50})).docs}s(xp,"searchGlobalUsersByAppAccess");function EA(t,e){if(e)return tu(Qe(t),e._id)}s(EA,"getGlobalUserByAppPage");async function gA(t,e,r){if(typeof t!="string")throw new Error("Must provide a string to search by");let n=t.toLowerCase(),i=e&&e.startkey?e.startkey:n,o=await $t("by_email2",{...e,startkey:i,endkey:`${n}${ve}`});o||(o=[]);let a=Array.isArray(o)?o:[o];return r?.cleanup&&(a=wo(a)),a}s(gA,"searchGlobalUsersByEmail");var kU=8;async function yA({bookmark:t,query:e,appId:r,limit:n}={}){let i=H(),o=n??kU,u={include_docs:!0,limit:o+1};t&&(u.startkey=t);let c,l="_id",d;return e?.equal?._id?c=[await yn(e.equal._id)]:r?(c=await Zu(r,u),d=s(f=>EA(r,f),"getKey")):e?.string?.email?(c=await gA(e?.string?.email,u),l="email"):e?.oneOf?._id?c=await Ju(e?.oneOf?._id,{cleanup:!0}):e?(c=(await i.allDocs(nn(null,{...u,limit:void 0}))).rows.map(p=>p.doc),c=cr.search(c,{query:e,limit:u.limit}).rows):c=(await i.allDocs(nn(null,u))).rows.map(p=>p.doc),Tf(c,o,{paginate:!0,property:l,getKey:d})}s(yA,"paginatedUsers");async function MU(){return(await _f("by_email2",{limit:0,include_docs:!1})).total_rows}s(MU,"getUserCount");async function FU(){let t=0;async function e(r){let n=await yA({bookmark:r}),i=await gn(n.data);t+=i.filter(o=>o).length,n.hasNextPage&&await e(n.nextPage)}return s(e,"iterate"),await e(),t}s(FU,"getCreatorCount");function BU(t){return delete t.admin,delete t.builder,t}s(BU,"removePortalUserPermissions");function vp(t,e){return delete t.admin,delete t.builder,delete t.roles,e&&(t.admin=e.admin,t.builder=e.builder,t.roles=e.roles),t}s(vp,"cleanseUserObject");async function WU(t,e){let r=Qe(e);t.builder??={},t.builder.creator=!0,t.builder.apps??=[],t.builder.apps.push(r),await Ct.save(t,{hashPassword:!1})}s(WU,"addAppBuilder");async function $U(t,e){let r=Qe(e);t.builder&&t.builder.apps?.includes(r)&&(t.builder.apps=t.builder.apps.filter(n=>n!==r)),await Ct.save(t,{hashPassword:!1})}s($U,"removeAppBuilder");var TA=3600;async function VU(t,e){let n=await wf(e).get(t);if(n.budibaseAccess=!0,!E.SELF_HOSTED&&!E.DISABLE_ACCOUNT_PORTAL){let i=await Or(n.email);i&&(n.account=i,n.accountPortalAccess=!0)}return n}s(VU,"populateFromDB");async function GU(t){let e=await Ct.bulkGet(t),r=t.filter((i,o)=>!e[o]),n=e.filter(i=>i);return await Promise.all(n.map(async i=>{if(i.budibaseAccess=!0,!E.SELF_HOSTED&&!E.DISABLE_ACCOUNT_PORTAL){let o=await Or(i.email);o&&(i.account=o,i.accountPortalAccess=!0)}})),r.length?{users:n,notFoundIds:r}:{users:n}}s(GU,"populateUsersFromDB");async function Do({userId:t,tenantId:e,email:r,populateUser:n}){if(n||(n=VU),!e)try{e=G()}catch{e=await Et.lookupTenantId(t)}let i=await Ms(),o=await i.get(t);return o||(o=await n(t,e,r),await i.store(t,o,TA)),o&&!o.tenantId&&e&&(o.tenantId=e),o.userGroups&&!Ue.users.isGlobalBuilder(o)&&await Re(e,async()=>{let a=await Ct.getGroupBuilderAppIds(o);if(a.length){let u=o.builder?.apps||[];o.builder={apps:[...new Set(u.concat(a))]}}}),o}s(Do,"getUser");async function qU(t){let e=await Ms(),r=await e.bulkGet(t),n=t.filter(a=>!r[a]),i=Object.values(r).filter(a=>!!a),o;if(n.length){let a=await GU(n);o=a.notFoundIds;for(let u of a.users)await e.store(u._id,u,TA);i.push(...a.users)}return{users:i,notFoundIds:o}}s(qU,"getUsers");async function Ro(t){await(await Ms()).delete(t)}s(Ro,"invalidateUser");var kp={};N(kp,{Writethrough:()=>Up});var yi={};N(yi,{AUTO_EXTEND_POLLING_MS:()=>AA,doWithLock:()=>Pp,newRedlock:()=>Tn});var SA=F(require("redlock"));async function QU(t,e){if(t==="custom")return Tn(e);switch(t){case"try_once":return Tn(gi.TRY_ONCE);case"try_twice":return Tn(gi.TRY_TWICE);case"default":return Tn(gi.DEFAULT);case"delay_500":return Tn(gi.DELAY_500);case"auto_extend":return Tn(gi.AUTO_EXTEND);default:throw St.unreachable(t)}}s(QU,"getClient");var gi={TRY_ONCE:{retryCount:0},TRY_TWICE:{retryCount:1},DEFAULT:{driftFactor:.01,retryCount:10,retryDelay:200,retryJitter:100},DELAY_500:{retryDelay:500},CUSTOM:{},AUTO_EXTEND:{retryCount:-1}};async function Tn(t={}){let e={...gi.DEFAULT,...t},n=(await pf()).client;return new SA.default([n],e)}s(Tn,"newRedlock");function jU(t){let r=`lock:${t.systemLock?"system":G()}_${t.name}`;return t.resource&&(r=r+`_${t.resource}`),r}s(jU,"getLockName");var AA=Ee.fromSeconds(10).toMs();async function Pp(t,e){let r=await QU(t.type,t.customOptions),n,i;try{let o=jU(t),a=t.type==="auto_extend"?AA:t.ttl;if(n=await r.lock(o,a),t.type==="auto_extend"){let c=s(()=>{i=setTimeout(async()=>{n=await n.extend(a,()=>t.onExtend&&t.onExtend()),c()},a/2)},"extendInIntervals");c()}return{executed:!0,result:await e()}}catch(o){if(o.name==="LockError"){if(t.type==="try_once")return{executed:!1};throw o}else throw o}finally{clearTimeout(i),await n?.unlock()}}s(Pp,"doWithLock");var _A=1e4,Np=null;async function Xu(){if(!Np){let t=await ff();Np=new ln(t)}return Np}s(Xu,"getCache");function Co(t,e){return t.name+e}s(Co,"makeCacheKey");function Lp(t,e=null){return{doc:t,lastWrite:e||Date.now()}}s(Lp,"makeCacheItem");async function YU(t,e,r=_A){let n=await Xu(),i=e._id,o;i&&(o=await n.get(Co(t,i)));let a=!o||o.lastWrite<Date.now()-r,u=e;return a&&((await Pp({type:"try_once",name:"persist_writethrough",resource:i,ttl:15e3},async()=>{let l=s(async d=>{let f=await t.put(d,{force:!0});u._id=f.id,u._rev=f.rev},"writeDb");try{await l(e)}catch(d){if(d.status!==409)throw d;si("Ignoring conflict in write-through cache")}})).executed||si("Ignoring redlock conflict in write-through cache")),o=Lp(u,a?null:o?.lastWrite),u._id&&await n.store(Co(t,u._id),o),{ok:!0,id:u._id,rev:u._rev}}s(YU,"put");async function HU(t,e){let r=await Xu(),n=Co(t,e),i=await r.get(n);if(!i){let o=await t.get(e);i=Lp(o),await r.store(n,i)}return i.doc}s(HU,"get");async function zU(t,e){let r=await Xu(),n=Co(t,e),i=await r.get(n);if(!i){let o=await t.tryGet(e);if(!o)return null;i=Lp(o),await r.store(n,i)}return i.doc}s(zU,"tryGet");async function JU(t,e,r){let n=await Xu();if(!e)throw new Error("No ID/Rev provided.");let i=typeof e=="string"?e:e._id;r=typeof e=="string"?r:e._rev;try{await n.delete(Co(t,i))}finally{await t.remove(i,r)}}s(JU,"remove");var Up=class{static{s(this,"Writethrough")}constructor(e,r=_A){this.db=e,this.writeRateMs=r}async put(e,r=this.writeRateMs){return YU(this.db,e,r)}async get(e){return HU(this.db,e)}async tryGet(e){return zU(this.db,e)}async remove(e,r){return JU(this.db,e,r)}};function ec(t){return`config${b}${t}`}s(ec,"generateConfigID");async function rt(t){let e=H();try{return await e.get(ec(t))}catch(r){if(r.status===404)return;throw r}}s(rt,"getConfig");async function ZU(t){return t._id||(t._id=ec(t.type)),H().put(t)}s(ZU,"save");async function ni(){let t=await rt("settings");return t||(t={_id:ec("settings"),type:"settings",config:{}}),t.config.platformUrl=await bo({tenantAware:!0,config:t.config}),t.config.analyticsEnabled=await Wu({config:t.config}),t}s(ni,"getSettingsConfigDoc");async function Bp(){return(await ni()).config}s(Bp,"getSettingsConfig");async function bo(t={tenantAware:!0}){let e=E.PLATFORM_URL||"http://localhost:10000";if(!E.SELF_HOSTED&&E.MULTI_TENANCY&&t.tenantAware){let r=G();e.includes("localhost:")||(e=e.replace("://",`://${r}.`))}else if(E.SELF_HOSTED){let r=t?.config?t.config:(await rt("settings"))?.config;r?.platformUrl&&(e=r.platformUrl)}return e}s(bo,"getPlatformUrl");var Wu=s(async t=>{if(!E.SELF_HOSTED)return!!E.ENABLE_ANALYTICS;let e=await Ar(ye.ANALYTICS_ENABLED,86400,async()=>{let n=t?.config?t.config:(await rt("settings"))?.config;if(n?.analyticsEnabled===!1)return!1;if(n?.analyticsEnabled===!0)return!0});if(e!==void 0)return e;let r=E.ENABLE_ANALYTICS;return!(r===0||r===!1)},"analyticsEnabled");async function XU(){return await rt("google")}s(XU,"getGoogleConfigDoc");async function tc(){return(await XU())?.config}s(tc,"getGoogleConfig");async function Wp(){if(!E.SELF_HOSTED)return Mp();let t=await tc();return(!t||!t.activated)&&(t=Mp()),t}s(Wp,"getGoogleDatasourceConfig");function Mp(){if(E.GOOGLE_CLIENT_ID&&E.GOOGLE_CLIENT_SECRET)return{clientID:E.GOOGLE_CLIENT_ID,clientSecret:E.GOOGLE_CLIENT_SECRET,activated:!0}}s(Mp,"getDefaultGoogleConfig");async function eL(){return rt("logos_oidc")}s(eL,"getOIDCLogosDoc");async function tL(){return rt("oidc")}s(tL,"getOIDCConfigDoc");async function rL(){let t=(await tL())?.config;return t?.configs&&t.configs[0]}s(rL,"getOIDCConfig");async function $p(t){let e=(await rt("oidc"))?.config;return e&&e.configs.filter(r=>r.uuid===t)[0]}s($p,"getOIDCConfigById");async function OA(){return rt("smtp")}s(OA,"getSMTPConfigDoc");async function nL(t){let e=await OA();if(e)return e.config;let r=E.SELF_HOSTED||!t;if(E.SMTP_FALLBACK_ENABLED&&r)return{port:E.SMTP_PORT,host:E.SMTP_HOST,secure:!1,from:E.SMTP_FROM_ADDRESS,auth:{user:E.SMTP_USER,pass:E.SMTP_PASSWORD},fallback:!0}}s(nL,"getSMTPConfig");async function iL(){return(await rt("scim"))?.config}s(iL,"getSCIMConfig");async function sL(){return rt("ai")}s(sL,"getAIConfig");async function oL(){return rt("recaptcha")}s(oL,"getRecaptchaConfig");var Jp={};N(Jp,{AccessController:()=>qp,BUILTIN_ROLE_IDS:()=>Kp,Role:()=>Dr,RoleHierarchyTraversal:()=>rc,RoleIDVersion:()=>Qp,builtinRoleToNumber:()=>xo,checkForRoleResourceArray:()=>RA,externalRole:()=>fL,findRole:()=>vo,getAllRoleIds:()=>EL,getAllRoles:()=>zp,getBuiltinRole:()=>wA,getBuiltinRoles:()=>Yp,getDBRoleID:()=>CA,getExternalRoleID:()=>Rr,getExternalRoleIDs:()=>bA,getRole:()=>pL,getUserRoleHierarchy:()=>Hp,getUserRoleIdHierarchy:()=>DA,isBuiltin:()=>Sn,lowerBuiltinRoleID:()=>dL,prefixRoleIDNoBuiltin:()=>Gp,roleIDsAreEqual:()=>nt,roleToNumber:()=>lL,saveRoles:()=>mL,validInherits:()=>cL});var IA=require("lodash"),nc=F(require("lodash/fp/cloneDeep")),Vp=F(require("semver"));var Kp={ADMIN:"ADMIN",POWER:"POWER",BASIC:"BASIC",PUBLIC:"PUBLIC"},ie={...Kp,BUILDER:"BUILDER"},Qp={UUID:void 0,NAME:"name"};function uL(t,e){return Array.isArray(e)?e.filter(r=>t.includes(r)).length===e.length:t.includes(e)}s(uL,"rolesInList");var Dr=class{constructor(e,r,n,i){this.permissions={};this._id=e,this.name=r,this.uiMetadata=i,this.permissionId=n,this.version=Qp.NAME}static{s(this,"Role")}addInheritance(e){return e&&typeof e=="string"?e=Gp(e):e&&Array.isArray(e)&&(e=e.map(Gp)),this.inherits=e,this}},rc=class{static{s(this,"RoleHierarchyTraversal")}constructor(e,r){this.allRoles=e,this.opts=r}walk(e){let r=this.opts,n=this.allRoles,i=[];if(!e||!e._id)return i;if(i.push(e),Array.isArray(e.inherits))for(let o of e.inherits){let a=vo(o,n,r);a&&(i=i.concat(this.walk(a)))}else{let o=[],a=e;for(;a&&a.inherits&&!uL(o,a.inherits);){if(Array.isArray(a.inherits))return i.concat(this.walk(a));if(o.push(a.inherits),a=vo(a.inherits,n,r),a&&i.push(a),Ne.roles.checkForRoleInheritanceLoops(i))break}}return(0,IA.uniqBy)(i,o=>o._id)}},jp={ADMIN:new Dr(ie.ADMIN,ie.ADMIN,"admin",{displayName:"App admin",description:"Can do everything",color:"var(--spectrum-global-color-static-red-400)"}).addInheritance(ie.POWER),POWER:new Dr(ie.POWER,ie.POWER,"power",{displayName:"App power user",description:"An app user with more access",color:"var(--spectrum-global-color-static-orange-400)"}).addInheritance(ie.BASIC),BASIC:new Dr(ie.BASIC,ie.BASIC,"write",{displayName:"App user",description:"Any logged in user",color:"var(--spectrum-global-color-static-green-400)"}).addInheritance(ie.PUBLIC),PUBLIC:new Dr(ie.PUBLIC,ie.PUBLIC,"public",{displayName:"Public user",description:"Accessible to anyone",color:"var(--spectrum-global-color-static-blue-400)"}),BUILDER:new Dr(ie.BUILDER,ie.BUILDER,"admin",{displayName:"Builder user",description:"Users that can edit this app",color:"var(--spectrum-global-color-static-magenta-600)"})};function Yp(){return(0,nc.default)(jp)}s(Yp,"getBuiltinRoles");function Sn(t){return Object.values(Kp).includes(t)}s(Sn,"isBuiltin");function Gp(t){return Sn(t)?t:Bt(t)}s(Gp,"prefixRoleIDNoBuiltin");function wA(t){let e=Object.values(jp).find(r=>t.includes(r._id));if(e)return(0,nc.default)(e)}s(wA,"getBuiltinRole");function cL(t,e){if(!e)return!1;let r=s(n=>t.find(i=>nt(i._id,n)),"find");if(Array.isArray(e)){let n=e.filter(i=>r(i));return e.length!==0&&n.length===e.length}else return!!r(e)}s(cL,"validInherits");function xo(t){let e=Yp(),r=Object.values(e).length+1;if(nt(t,ie.ADMIN)||nt(t,ie.BUILDER))return r;let n=e[t],i=0;do{if(!n)break;if(Array.isArray(n.inherits))throw new Error("Built-in roles don't support multi-inheritance");n=e[n.inherits],i++}while(n!==null);return i}s(xo,"builtinRoleToNumber");async function lL(t){if(Sn(t))return xo(t);let e=await Hp(t,{defaultPublic:!0}),r=s(n=>{if(!n.inherits)return 0;if(Array.isArray(n.inherits)){let i=n.inherits.map(o=>{let a=e.find(u=>nt(u._id,o));if(a)return r(a)+1}).filter(o=>o).sort().pop();if(i!=null)return i}else if(Sn(n.inherits))return xo(n.inherits)+1;return 0},"findNumber");return Math.max(...e.map(r))}s(lL,"roleToNumber");function dL(t,e){return t?e&&xo(t)>xo(e)?e:t:e}s(dL,"lowerBuiltinRoleID");function nt(t,e){return Bt(t)===Bt(e)}s(nt,"roleIDsAreEqual");function fL(t){let e;return t._id&&(e=Rr(t._id)),{...t,_id:e,inherits:bA(t.inherits,t.version)}}s(fL,"externalRole");function vo(t,e,r){let n=wA(t);n||(t=Bt(t));let i=e.find(o=>o._id&&nt(o._id,t));return!i&&!Sn(t)&&r?.defaultPublic?(0,nc.default)(jp.PUBLIC):(n=Object.assign(n||{},i),n?._id&&(n._id=Rr(n._id,n.version)),Object.keys(n).length===0?void 0:n)}s(vo,"findRole");async function pL(t,e){let r=Jn(),n=[];if(!Sn(t)){let i=await r.tryGet(CA(t));i&&n.push(i)}return vo(t,n,e)}s(pL,"getRole");async function mL(t){await Jn().bulkDocs(t.filter(r=>r._id).map(r=>({...r,_id:Bt(r._id)})))}s(mL,"saveRoles");async function hL(t,e){let r=await zp();if(nt(t,ie.ADMIN))return r;let n=vo(t,r,e),i=[];return n&&(i=new rc(r,e).walk(n)),i}s(hL,"getAllUserRoles");async function DA(t){return(await Hp(t)).map(r=>r._id)}s(DA,"getUserRoleIdHierarchy");async function Hp(t,e){return hL(t,e)}s(Hp,"getUserRoleHierarchy");function RA(t,e){if(t&&!Array.isArray(t[e])){let r=t[e];t[e]=[r],r==="write"&&t[e].push("read")}return t}s(RA,"checkForRoleResourceArray");async function EL(t){return(await zp(t)).map(r=>r._id)}s(EL,"getAllRoleIds");async function zp(t){if(t)return Ke(t,e);{let r;try{r=Jn()}catch{}return e(r)}async function e(r){let n=[];r&&(n=(await r.allDocs(nu(null,{include_docs:!0}))).rows.map(u=>u.doc),n.forEach(u=>u._id=Rr(u._id,u.version)));let i=Yp(),o=[];!r||await gL(r)?o=[ie.ADMIN,ie.POWER,ie.BASIC,ie.PUBLIC]:o=[ie.ADMIN,ie.BASIC,ie.PUBLIC];for(let a of o){let u=i[a],c=n.filter(l=>nt(l._id,a))[0];c==null?n.push(u||i.BASIC):(n=n.filter(l=>l._id!==c._id),c._id=Rr(u._id,c.version),n.push({...u,...c,name:u.name,_id:Rr(u._id,u.version)}))}for(let a of n)if(a.permissions)for(let u of Object.keys(a.permissions))a.permissions=RA(a.permissions,u);return n}s(e,"internal")}s(zp,"getAllRoles");async function gL(t){let r=(await t.tryGet("app_metadata"))?.creationVersion;return!r||!Vp.default.valid(r)?!0:!Vp.default.gte(r,E.MIN_VERSION_WITHOUT_POWER_ROLE)}s(gL,"shouldIncludePowerRole");var qp=class{static{s(this,"AccessController")}constructor(){this.userHierarchies={}}async hasAccess(e,r){if(e==null||e===""||nt(e,ie.BUILDER)||nt(r,e)||nt(r,ie.BUILDER))return!0;let n=r?this.userHierarchies[r]:null;return!n&&r&&(n=await DA(r),this.userHierarchies[r]=n),n?.find(i=>nt(i,e))!==void 0}async checkScreensAccess(e,r){let n=[];for(let i of e){let o=await this.checkScreenAccess(i,r);o&&n.push(o)}return n}async checkScreenAccess(e,r){let n=e&&e.routing?e.routing.roleId:void 0;return await this.hasAccess(n,r)?e:null}};function CA(t){return t?.startsWith("role")?t:Bt(t)}s(CA,"getDBRoleID");function Rr(t,e){if(t.startsWith(`role${b}`)&&(Sn(t)||e===Qp.NAME)){let r=t.split(b);return r.shift(),r.join(b)}return t}s(Rr,"getExternalRoleID");function bA(t,e){return t&&(typeof t=="string"?Rr(t,e):t.map(r=>Rr(r,e)))}s(bA,"getExternalRoleIDs");var Zp={};N(Zp,{BUILDER:()=>_L,BUILTIN_PERMISSIONS:()=>ic,CREATOR:()=>OL,GLOBAL_BUILDER:()=>IL,PermissionImpl:()=>se,PermissionLevel:()=>wi,PermissionType:()=>Wo,doesHaveBasePermission:()=>SL,getAllowedLevels:()=>NA,getBuiltinPermissionByID:()=>TL,getBuiltinPermissions:()=>yL,isPermissionLevelHigherThanRead:()=>AL,levelToNumber:()=>PA});var xA=F(require("lodash/flatten")),vA=F(require("lodash/fp/cloneDeep"));var se=class{static{s(this,"PermissionImpl")}constructor(e,r){this.type=e,this.level=r}};function PA(t){switch(t){case"execute":return 0;case"read":return 1;case"write":return 2;case"admin":return 3;default:return-1}}s(PA,"levelToNumber");function NA(t){switch(t){case"execute":return["execute"];case"read":return["execute","read"];case"write":case"admin":return["execute","read","write"];default:return[]}}s(NA,"getAllowedLevels");var ic={PUBLIC:{_id:"public",name:"Public",permissions:[new se("webhook","execute")]},READ_ONLY:{_id:"read_only",name:"Read only",permissions:[new se("query","read"),new se("table","read"),new se("app","read")]},WRITE:{_id:"write",name:"Read/Write",permissions:[new se("query","write"),new se("table","write"),new se("automation","execute"),new se("legacy_view","read"),new se("app","read")]},POWER:{_id:"power",name:"Power",permissions:[new se("table","write"),new se("user","read"),new se("automation","execute"),new se("webhook","read"),new se("legacy_view","read"),new se("app","read")]},ADMIN:{_id:"admin",name:"Admin",permissions:[new se("table","admin"),new se("user","admin"),new se("automation","admin"),new se("webhook","read"),new se("query","admin"),new se("legacy_view","read"),new se("app","read")]}};function yL(){return(0,vA.default)(ic)}s(yL,"getBuiltinPermissions");function TL(t){return Object.values(ic).find(r=>r._id===t)}s(TL,"getBuiltinPermissionByID");function SL(t,e,r){let n=[...new Set(r.map(a=>a.permissionId))],i=Object.values(ic),o=(0,xA.default)(i.filter(a=>n.indexOf(a._id)!==-1).map(a=>a.permissions));for(let a of o)if(a.type===t&&NA(a.level).indexOf(e)!==-1)return!0;return!1}s(SL,"doesHaveBasePermission");function AL(t){return PA(t)>1}s(AL,"isPermissionLevelHigherThanRead");var _L="builder",OL="creator",IL="globalBuilder";var lm={};N(lm,{adminOnly:()=>sc,auditLog:()=>oc,authError:()=>Oe,buildAuthMiddleware:()=>a0,buildCsrfMiddleware:()=>c0,buildTenancyMiddleware:()=>u0,builderOnly:()=>fc,builderOrAdmin:()=>pc,google:()=>Jt,internalApi:()=>hc,joiValidator:()=>Po,oidc:()=>Zt,passport:()=>l0,platformLogout:()=>h0,refreshOAuthToken:()=>p0,ssoCallbackUrl:()=>br,updateUserOAuth:()=>m0,workspaceBuilderOrAdmin:()=>yc});var cm={};N(cm,{adminOnly:()=>sc,auditLog:()=>oc,authError:()=>Oe,authenticated:()=>dc,builderOnly:()=>fc,builderOrAdmin:()=>pc,correlation:()=>LA,csp:()=>qA,csrf:()=>mc,datasource:()=>s0,errorHandling:()=>QA,featureFlagCookie:()=>jA,google:()=>Jt,internalApi:()=>hc,ip:()=>YA,joiValidator:()=>Po,local:()=>Ti,oidc:()=>Zt,pino:()=>kA,querystringToBody:()=>t_,ssoCallbackUrl:()=>br,tenancy:()=>gc,workspaceBuilderOrAdmin:()=>yc});var UA=require("uuid");var wL=require("correlation-id"),LA=s((t,e)=>{let r=t.headers["x-budibase-correlation-id"];return r||(r=(0,UA.v4)()),wL.withId(r,()=>e())},"correlationMiddleware");var DL=require("koa-pino-logger"),RL=require("correlation-id");function CL(){return{logger:Iu,genReqId:RL.getId,autoLogging:{ignore:t=>!!t.url?.includes("/health")},serializers:{req:t=>({method:t.method,url:t.url,correlationId:t.id}),res:t=>({status:t.statusCode})}}}s(CL,"pinoSettings");function bL(){return E.HTTP_LOGGING?DL(CL()):(t,e)=>e()}s(bL,"getMiddleware");var kA=bL();var sc=s(async(t,e)=>(!t.internal&&!Rt(t.user)&&t.throw(403,"Admin user only endpoint."),e()),"adminOnly");var oc=s(async(t,e)=>e(),"auditLog");var xL=/\/:(.*?)(\/.*)?$/g,An=s(t=>t?t.map(e=>{let r=e.route,n=e.method,i=r.match(xL);if(i)for(let o of i){let u="/.*"+(o.endsWith("/")?"/":"");r=r.replace(o,u)}return{regex:new RegExp(r),method:n,route:r}}):[],"buildMatcherRegex"),_n=s((t,e)=>e.find(({regex:r,method:n})=>{let i=r.test(t.request.url),o=n==="ALL"?!0:t.request.method.toLowerCase()===n.toLowerCase();return i&&o}),"matches");var im={};N(im,{SecretOption:()=>BA,decrypt:()=>nm,decryptFile:()=>kL,encrypt:()=>NL,encryptFile:()=>UL,getSecret:()=>rm});var zt=F(require("crypto")),Cr=F(require("fs")),Xp=require("path"),em=F(require("zlib"));var ac="aes-256-ctr",FA="-",vL=1e4,PL=32,uc=16,tm=16,BA=(r=>(r.API="api",r.ENCRYPTION="encryption",r))(BA||{});function rm(t){let e,r;switch(t){case"encryption":e=E.ENCRYPTION_KEY,r="ENCRYPTION_KEY";break;case"api":default:e=E.API_ENCRYPTION_KEY,r="API_ENCRYPTION_KEY";break}if(!e)throw new Error(`Secret "${r}" has not been set in environment.`);return e}s(rm,"getSecret");function cc(t,e){return zt.default.pbkdf2Sync(t,new Uint8Array(e),vL,PL,"sha512")}s(cc,"stretchString");function NL(t,e="api"){let r=zt.default.randomBytes(uc),n=cc(rm(e),r),i=zt.default.createCipheriv(ac,new Uint8Array(n),new Uint8Array(r)),o=i.update(t,"utf8"),a=i.final(),u=Buffer.concat([new Uint8Array(o),new Uint8Array(a)]).toString("hex");return`${r.toString("hex")}${FA}${u}`}s(NL,"encrypt");function nm(t,e="api"){let[r,n]=t.split(FA),i=Buffer.from(r,"hex"),o=cc(rm(e),i),a=zt.default.createDecipheriv(ac,new Uint8Array(o),new Uint8Array(i)),u=a.update(n,"hex"),c=a.final();return Buffer.concat([new Uint8Array(u),new Uint8Array(c)]).toString()}s(nm,"decrypt");async function UL({dir:t,filename:e},r){let n=`${e}.enc`,i=(0,Xp.join)(t,e);if(Cr.default.lstatSync(i).isDirectory())throw new Error("Unable to encrypt directory");let o=Cr.default.createReadStream(i),a=Cr.default.createWriteStream((0,Xp.join)(t,n)),u=zt.default.randomBytes(uc),c=zt.default.randomBytes(tm),l=cc(r,u),d=zt.default.createCipheriv(ac,new Uint8Array(l),new Uint8Array(c));return a.write(u),a.write(c),o.pipe(em.default.createGzip()).pipe(d).pipe(a),new Promise(f=>{a.on("finish",()=>{f({filename:n,dir:t})})})}s(UL,"encryptFile");async function LL(t){let e=Cr.default.createReadStream(t),r=await MA(e,uc),n=await MA(e,tm);return e.close(),{salt:r,iv:n}}s(LL,"getSaltAndIV");async function kL(t,e,r){if(Cr.default.lstatSync(t).isDirectory())throw new Error("Unable to decrypt directory");let{salt:n,iv:i}=await LL(t),o=Cr.default.createReadStream(t,{start:uc+tm}),a=Cr.default.createWriteStream(e),u=cc(r,n),c=zt.default.createDecipheriv(ac,new Uint8Array(u),new Uint8Array(i)),l=em.default.createGunzip();return o.pipe(c).pipe(l).pipe(a),new Promise((d,f)=>{a.on("finish",()=>{a.close(),d()}),o.on("error",p=>{a.close(),f(p)}),c.on("error",p=>{a.close(),f(p)}),l.on("error",p=>{a.close(),f(p)}),a.on("error",p=>{a.close(),f(p)})})}s(kL,"decryptFile");function MA(t,e){return new Promise((r,n)=>{let i=0,o=[];t.on("readable",()=>{let a;for(;(a=t.read(e-i))!==null;)o.push(a),i+=a.length;r(Buffer.concat(o.map(u=>new Uint8Array(u))))}),t.on("end",()=>{n(new Error("Insufficient data in the stream."))}),t.on("error",a=>{n(a)})})}s(MA,"readBytes");var $A=F(require("dd-trace"));var ML=E.SESSION_UPDATE_PERIOD?parseInt(E.SESSION_UPDATE_PERIOD):60*1e3;function FL(){return new Date(Date.now()-ML).toISOString()}s(FL,"timeMinusOneMinute");function WA(t,e={}){t.publicEndpoint=e.publicEndpoint||!1,t.isAuthenticated=e.authenticated||!1,t.loginMethod=e.loginMethod,t.user=e.user,t.internal=e.internal||!1,t.version=e.version}s(WA,"finalise");async function BL(t,e){if(js(t))return{valid:!0,user:void 0};let n=nm(t).split(b)[0];return Re(n,async()=>{let i;try{let o=H();i=await $t("by_api_key",{key:t},o)}catch{i=void 0}if(i)return{valid:!0,user:await Do({userId:i,tenantId:n,populateUser:e})};throw new ci})}s(BL,"checkApiKey");function lc(t,e){let r=t.request.headers[e];if(Array.isArray(r))throw new Error("Unexpected header format");return r}s(lc,"getHeader");function dc(t=[],e={publicAllowed:!1}){let r=t?An(t):[];return async(n,i)=>{let o=!1,a=lc(n,"x-budibase-api-version");_n(n,r)&&(o=!0);try{let c=lc(n,"x-budibase-token"),l=Gt(n,"budibase:auth")||su(c),d=lc(n,"x-budibase-api-key");!d&&n.request.headers.authorization&&(d=n.request.headers.authorization.split(" ")[1]);let f=lc(n,"x-budibase-tenant-id"),p=!1,m,h=!1,g;if(l&&!d){let S=l.sessionId,O=l.userId,_;try{_=await hp(O,S),e&&e.populateUser?m=await Do({userId:O,tenantId:_.tenantId,email:_.email,populateUser:e.populateUser(n)}):m=await Do({userId:O,tenantId:_.tenantId,email:_.email}),m.csrfToken=_.csrfToken,g="cookie",_?.lastAccessedAt<FL()&&await mp(_),p=!0}catch(D){p=!1,console.error(`Auth Error: ${D.message}`),gr(n,"budibase:auth")}}if(!p&&d){let S=e.populateUser?e.populateUser(n):null,{valid:O,user:_}=await BL(d,S);O&&(p=!0,g="api_key",m=_,h=!_)}!m&&f?m={tenantId:f}:m&&"password"in m&&delete m.password,p||(p=!1);let y=s(S=>S&&S.email,"isUser");return y(m)&&$A.default.setUser({id:m._id,tenantId:m.tenantId,budibaseAccess:m.budibaseAccess,status:m.status}),WA(n,{authenticated:p,user:m,internal:h,version:a,publicEndpoint:o,loginMethod:g}),y(m)?Bd(m,n,i):i()}catch(c){if(console.error(`Auth Error: ${c.message}`),c?.name==="JsonWebTokenError"?gr(n,"budibase:auth"):c?.code==="invalid_api_key"&&n.throw(403,c.message),e&&e.publicAllowed||o)return WA(n,{authenticated:!1,version:a,publicEndpoint:o}),i();n.throw(c.status||403,c)}}}s(dc,"authenticated");async function fc(t,e){if(t.internal)return e();let r=await on(t);return!r&&!E.isWorker()?t.throw(403,"This request required a workspace id."):!r&&!ke(t.user)?t.throw(403,"Builder user only endpoint."):r&&!Ei(t.user,r)&&t.throw(403,"Workspace builder user only endpoint."),e()}s(fc,"builderOnly");async function pc(t,e){if(t.internal||Rt(t.user))return e();let r=await on(t);return!r&&!E.isWorker()?t.throw(403,"This request required a workspace id."):!r&&!ke(t.user)?t.throw(403,"Admin/Builder user only endpoint."):r&&!Ei(t.user,r)&&t.throw(403,"Workspace Admin/Builder user only endpoint."),e()}s(pc,"builderOrAdmin");var GA=F(require("crypto"));var VA={"default-src":["'self'"],"script-src":["'self'","'unsafe-eval'","https://*.budibase.net","https://cdn.budi.live","https://js.intercomcdn.com","https://widget.intercom.io","https://d2l5prqdbvm3op.cloudfront.net","https://us-assets.i.posthog.com","https://www.google.com/recaptcha/api.js"],"style-src":["'self'","'unsafe-inline'","https://cdn.jsdelivr.net","https://fonts.googleapis.com","https://rsms.me","https://maxcdn.bootstrapcdn.com"],"object-src":["'none'"],"base-uri":["'self'"],"connect-src":["'self'","https://*.budibase.app","https://*.budibaseqa.app","https://*.budibase.net","https://api-iam.intercom.io","https://api-ping.intercom.io","https://app.posthog.com","https://us.i.posthog.com","wss://nexus-websocket-a.intercom.io","wss://nexus-websocket-b.intercom.io","https://nexus-websocket-a.intercom.io","https://nexus-websocket-b.intercom.io","https://uploads.intercomcdn.com","https://uploads.intercomusercontent.com","https://*.amazonaws.com","https://*.s3.amazonaws.com","https://*.s3.us-east-2.amazonaws.com","https://*.s3.us-east-1.amazonaws.com","https://*.s3.us-west-1.amazonaws.com","https://*.s3.us-west-2.amazonaws.com","https://*.s3.af-south-1.amazonaws.com","https://*.s3.ap-east-1.amazonaws.com","https://*.s3.ap-south-1.amazonaws.com","https://*.s3.ap-northeast-2.amazonaws.com","https://*.s3.ap-southeast-1.amazonaws.com","https://*.s3.ap-southeast-2.amazonaws.com","https://*.s3.ap-northeast-1.amazonaws.com","https://*.s3.ca-central-1.amazonaws.com","https://*.s3.cn-north-1.amazonaws.com","https://*.s3.cn-northwest-1.amazonaws.com","https://*.s3.eu-central-1.amazonaws.com","https://*.s3.eu-west-1.amazonaws.com","https://*.s3.eu-west-2.amazonaws.com","https://*.s3.eu-south-1.amazonaws.com","https://*.s3.eu-west-3.amazonaws.com","https://*.s3.eu-north-1.amazonaws.com","https://*.s3.sa-east-1.amazonaws.com","https://*.s3.me-south-1.amazonaws.com","https://*.s3.us-gov-east-1.amazonaws.com","https://*.s3.us-gov-west-1.amazonaws.com","https://api.github.com"],"font-src":["'self'","data:","https://cdn.jsdelivr.net","https://fonts.gstatic.com","https://rsms.me","https://maxcdn.bootstrapcdn.com","https://js.intercomcdn.com","https://fonts.intercomcdn.com"],"frame-src":["'self'","https:"],"img-src":["http:","https:","data:","blob:"],"manifest-src":["'self'"],"media-src":["'self'","https://js.intercomcdn.com","https://cdn.budi.live"],"worker-src":["blob:","'self'"]},WL=/^[A-Za-z0-9-*:/.]+$/,qA=s(async(t,e)=>{let r=GA.default.randomBytes(16).toString("base64");t.state.nonce=r;let n={...VA};if(n["script-src"]=[...VA["script-src"],`'nonce-${r}'`],t.user?.license?.features.includes("customAppScripts")&&t.appId)try{let a=await Bs.getWorkspaceMetadata(t.appId);if("name"in a)for(let u of a.scripts||[]){let c=(u.cspWhitelist||"").split(`
38
- `).filter(l=>WL.test(l));n["default-src"]=[...n["default-src"],...c]}}catch(a){console.error(`Error occurred in Content-Security-Policy middleware: ${a}`)}let o=Object.entries(n).map(([a,u])=>`${a} ${u.join(" ")}`).join("; ");t.set("Content-Security-Policy",o),await e()},"contentSecurityPolicy");var $L=["GET","HEAD","OPTIONS"],VL=["application/x-www-form-urlencoded","multipart/form-data","text/plain"];function mc(t={noCsrfPatterns:[]}){let e=An(t.noCsrfPatterns);return async(r,n)=>{if(_n(r,e)||$L.indexOf(r.method)!==-1)return n();let o=r.get("content-type")?r.get("content-type").toLowerCase():"";if(!VL.filter(c=>o.includes(c)).length||r.internal)return n();let a=r.user?.csrfToken;if(!a)return n();let u=r.get("x-csrf-token");return(!u||u!==a)&&r.throw(403,"Invalid CSRF token"),n()}}s(mc,"csrf");function KA(t){if(t.includes("-----BEGIN PRIVATE KEY-----"))return!0;for(let e of wy){let r=E[e];if(!(typeof r!="string"||r==="")&&t.includes(r))return!0}return!1}s(KA,"stringContainsSecret");async function QA(t,e){try{await e()}catch(r){let n=r.status||r.statusCode||500;t.status=n,n>=400&&n<500?console.warn(r):console.error("Got 400 response code",r);let i={message:r.message,status:n,validationErrors:r.validation,error:Lu(r)};if(KA(JSON.stringify(i))&&(i={message:"Unexpected error",status:n,error:"Unexpected error"}),E.isTest()&&t.headers["x-budibase-include-stacktrace"]){let o=r;for(;o.cause;)o=o.cause;i.stack=o.stack}t.body=i}}s(QA,"errorHandling");var jA=s(async(t,e)=>{let n=Gt(t,"budibase:featureflags")?.flags||{};await uf(n,async()=>{await e()})},"featureFlagCookie");async function hc(t,e){let r=t.request.headers["x-budibase-api-key"];return r||t.throw(403,"Unauthorized"),Array.isArray(r)&&t.throw(403,"Unauthorized"),js(r)||t.throw(403,"Unauthorized"),e()}s(hc,"internalApi");async function YA(t,e){return t.ip?await nf(t.ip,()=>e()):e()}s(YA,"ip");var Po={};N(Po,{body:()=>GL,params:()=>qL});var sm=F(require("joi"));function HA(t,e,r){let n=r?.errorPrefix??`Invalid ${e}`;return(i,o)=>{if(!t)return o();let a=null,u=i.request?.[e];i[e]!=null?a=i[e]:u!=null&&(a=u),t.append&&(t=t.append({createdAt:sm.default.any().optional(),updatedAt:sm.default.any().optional()}));let{error:c}=t.validate(a,{allowUnknown:r?.allowUnknown});if(c){let l=c.message;n&&(l=`Invalid ${e} - ${l}`),i.throw(400,l)}return o()}}s(HA,"validate");function GL(t,e){return HA(t,"body",e)}s(GL,"body");function qL(t,e){return HA(t,"params",e)}s(qL,"params");var Ti={};N(Ti,{authenticate:()=>jL,options:()=>QL});function Oe(t,e,r){return t(r,null,{message:e})}s(Oe,"authError");async function br(t,e){if(e&&e.callbackURL)return e.callbackURL;let r=await Bp(),n="/api/global/auth";return pr()&&(n+=`/${G()}`),n+=`/${t}/callback`,`${r.platformUrl}${n}`}s(br,"ssoCallbackUrl");var om="Invalid credentials",KL="This account has expired. Please reset your password",QL={passReqToCallback:!0};async function jL(t,e,r,n){if(!e)return Oe(n,"Email Required");if(!r)return Oe(n,"Password Required");let i=await Tt(e);return i==null?(console.info(`user=${e} could not be found`),Oe(n,om)):i.status==="inactive"?(console.info(`user=${e} is inactive`,i),Oe(n,om)):i.password?await kd(r,i.password)?(delete i.password,n(null,i)):Oe(n,om):(console.info(`user=${e} has no password set`,i),Oe(n,KL))}s(jL,"authenticate");var Jt={};N(Jt,{buildVerifyFn:()=>ZA,getCallbackUrl:()=>zL,strategyFactory:()=>am});var No=s(t=>Promise.resolve(t),"ssoSaveUserNoOp");async function Ec(t,e=!0,r,n){if(!n)throw new Error("Save user function must be provided");if(!t.userId)return Oe(r,"sso user id required");if(!t.email)return Oe(r,"sso user email required");let i=Zn(t.userId),o;try{o=await yn(i)}catch(u){if(!u.status||u.status!==404)return Oe(r,"Unexpected error when retrieving existing user",u)}if(o||(o=await Tt(t.email)),!o&&e)return Oe(r,"Email does not yet exist. You must set up your local budibase account first.");o||(o={_id:i,email:t.email,roles:{},tenantId:G()});let a=await YL(o,t);a.forceResetPassword=!1;try{delete a.password,a=await n(a,{hashPassword:!1,requirePassword:!1})}catch(u){return Oe(r,"Error saving user",u)}return r(null,a)}s(Ec,"authenticate");async function YL(t,e){let r,n,i;if(e.profile){let o=e.profile;if(o.name){let a=o.name;a.givenName&&(r=a.givenName),a.familyName&&(n=a.familyName)}}return e.oauth2&&(i={...e.oauth2}),{...t,provider:e.provider,providerType:e.providerType,firstName:r,lastName:n,oauth2:i}}s(YL,"syncUser");var HL=require("passport-google-oauth").OAuth2Strategy;function ZA(t){return(e,r,n,i)=>{let o={provider:"google",providerType:"google",userId:n.id,profile:n,email:n._json.email,oauth2:{accessToken:e,refreshToken:r}};return Ec(o,!0,i,t)}}s(ZA,"buildVerifyFn");async function am(t,e,r){try{let{clientID:n,clientSecret:i}=t;if(!n||!i)throw new Error("Configuration invalid. Must contain google clientID and clientSecret");let o=ZA(r);return new HL({clientID:t.clientID,clientSecret:t.clientSecret,callbackURL:e},o)}catch(n){throw new Error(`Error constructing google authentication strategy: ${n}`)}}s(am,"strategyFactory");async function zL(t){return br("google",t)}s(zL,"getCallbackUrl");var Zt={};N(Zt,{buildVerifyFn:()=>e_,fetchStrategyConfig:()=>e0,getCallbackUrl:()=>t0,strategyFactory:()=>XL});var XA=F(require("node-fetch"));var JL=require("@techpass/passport-openidconnect").Strategy;function e_(t){return async(e,r,n,i,o,a,u,c,l)=>{let d={provider:e,providerType:"oidc",userId:n.id,profile:n,email:ZL(n,i),oauth2:{accessToken:o,refreshToken:a}};return Ec(d,!1,l,t)}}s(e_,"buildVerifyFn");function ZL(t,e){if(t._json.email)return t._json.email;if(e.email)return e.email;let r=e.preferred_username;if(r&&bf(r))return r;throw new Error(`Could not determine user email from profile ${JSON.stringify(t)} and claims ${JSON.stringify(e)}`)}s(ZL,"getEmail");async function XL(t,e){try{let r=e_(e),n=new JL(t,r);return n.name="oidc",n}catch(r){throw new Error(`Error constructing OIDC authentication strategy - ${r}`)}}s(XL,"strategyFactory");async function e0(t,e){try{let{clientID:r,clientSecret:n,configUrl:i,pkce:o}=t;if(!r||!n||!e||!i)throw new Error("Configuration invalid. Must contain clientID, clientSecret, callbackUrl and configUrl");let a=await(0,XA.default)(i);if(!a.ok)throw new Error(`Unexpected response when fetching openid-configuration: ${a.statusText}`);let u=await a.json();return{issuer:u.issuer,authorizationURL:u.authorization_endpoint,tokenURL:u.token_endpoint,userInfoURL:u.userinfo_endpoint,clientID:r,clientSecret:n,callbackURL:e,pkce:o}}catch(r){throw new Error(`Error constructing OIDC authentication configuration - ${r}`)}}s(e0,"fetchStrategyConfig");async function t0(){return br("oidc")}s(t0,"getCallbackUrl");function t_(t,e){let r=t.request.query?.query;if(t.request.method.toLowerCase()!=="get"&&t.throw(500,"Query to download middleware can only be used for get requests."),!r)return e();let n=decodeURIComponent(r),i;try{i=JSON.parse(n)}catch{return e()}return t.request.body=i,e()}s(t_,"querystringToBody");function gc(t,e,r={noTenancyRequired:!1}){let n=An(t),i=An(e);return async function(o,a){let c={allowNoTenant:r.noTenancyRequired||!!_n(o,i)};!!_n(o,n)||(c.excludeStrategies=["query"]);let d=Ks(o,c);return o.set("x-budibase-tenant-id",d),Re(d,a)}}s(gc,"tenancy");async function yc(t,e){if(t.internal||Rt(t.user))return e();let r=await on(t);return r&&!ju(t.user,r)?t.throw(403,"Workspace Admin/Builder user only endpoint."):!r&&!E.isWorker()?t.throw(403,"This request required a workspace id."):!r&&!ke(t.user)&&t.throw(403,"Admin/Builder user only endpoint."),e()}s(yc,"workspaceBuilderOrAdmin");var um={};N(um,{postAuth:()=>i0,preAuth:()=>n0});var r0=require("passport-google-oauth").OAuth2Strategy;async function r_(){let t=await Wp();if(!t)throw new Error("No google configuration found");return t}s(r_,"fetchGoogleCreds");async function n0(t,e,r){let n=await r_(),o=`${await bo({tenantAware:!1})}/api/global/auth/datasource/google/callback`,a=await am(n,o,No);return e.query.appId||e.throw(400,"appId query param not present."),t.authenticate(a,{scope:["profile","email","https://www.googleapis.com/auth/spreadsheets"],accessType:"offline",prompt:"consent"})(e,r)}s(n0,"preAuth");async function i0(t,e,r){let n=await r_(),o=`${await bo({tenantAware:!1})}/api/global/auth/datasource/google/callback`,a=Gt(e,"budibase:datasourceauth");if(!a)throw new Error("Unable to fetch datasource auth cookie");return t.authenticate(new r0({clientID:n.clientID,clientSecret:n.clientSecret,callbackURL:o},(u,c,l,d)=>{gr(e,"budibase:datasourceauth"),d(null,{accessToken:u,refreshToken:c})}),{successRedirect:"/",failureRedirect:"/error"},async(u,c)=>{let l=`/builder/workspace/${a.appId}/data`,d=ne();await jt(`datasource:creation:${a.appId}:google:${d}`,{tokens:c}),e.redirect(`${l}/new?continue_google_setup=${d}`)})(e,r)}s(i0,"postAuth");var s0={google:um};var n_=require("koa-passport"),o0=require("passport-local").Strategy,Tc=require("passport-oauth2-refresh"),a0=dc,u0=gc,c0=mc,l0=n_;n_.use(new o0(Ti.options,Ti.authenticate));async function d0(t,e){let r=await Zt.getCallbackUrl(),n,i;try{if(n=await Zt.fetchStrategyConfig(t,r),!n)throw new Error("OIDC Config contents invalid");i=await Zt.strategyFactory(n,No)}catch{throw new Error("Could not refresh OAuth Token")}return Tc.use(i,{setRefreshOAuth2(){return i._getOAuth2Client(n)}}),new Promise(o=>{Tc.requestNewAccessToken("oidc",e,(a,u,c,l)=>{o({err:a,accessToken:u,refreshToken:c,params:l})})})}s(d0,"refreshOIDCAccessToken");async function f0(t,e){let r=await Jt.getCallbackUrl(t),n;try{n=await Jt.strategyFactory(t,r,No)}catch(i){throw new Error(`Error constructing OIDC refresh strategy: message=${i.message}`)}return Tc.use(n),new Promise(i=>{Tc.requestNewAccessToken("google",e,(o,a,u,c)=>{i({err:o,accessToken:a,refreshToken:u,params:c})})})}s(f0,"refreshGoogleAccessToken");async function p0(t,e,r){switch(e){case"oidc":{if(!r)return{err:{data:"OIDC config id not provided"}};let n=await $p(r);return n?d0(n,t):{err:{data:"OIDC configuration not found"}}}case"google":{let n=await tc();return n?f0(n,t):{err:{data:"Google configuration not found"}}}}}s(p0,"refreshOAuthToken");async function m0(t,e){let r={accessToken:e.accessToken,refreshToken:e.refreshToken};try{let n=H(),i=await n.get(t);typeof r.refreshToken!="string"&&delete r.refreshToken,i.oauth2={...i.oauth2,...r},await n.put(i),await Ro(t)}catch(n){console.error("Could not update OAuth details for current user",n)}}s(m0,"updateUserOAuth");async function h0(t){let e=t.ctx,r=t.userId,n=t.keepActiveSession;if(!e)throw new Error("Koa context must be supplied to logout.");let i=Gt(e,"budibase:auth"),o=await co(r);i&&n?o=o.filter(u=>u.sessionId!==i.sessionId):gr(e,"budibase:auth");let a=o.map(({sessionId:u})=>u);await hn(r,{sessionIds:a,reason:"logout"}),await Ku.logout(e.user?.email),await Ro(r)}s(h0,"platformLogout");var fm={};N(fm,{validate:()=>S0});var C=F(require("joi"));var E0=["Relational","Non-relational","Spreadsheet","Object store","Graph","API"];function dm(t,e){let{error:r}=t.validate(e);if(r)throw r}s(dm,"runJoi");function g0(t){let e=C.default.object({type:C.default.string().allow("component").required(),metadata:C.default.object().unknown(!0).required(),hash:C.default.string().optional(),version:C.default.string().optional(),schema:C.default.object({name:C.default.string().required(),settings:C.default.array().items(C.default.object().unknown(!0)).required()}).unknown(!0)});dm(e,t)}s(g0,"validateComponent");function y0(t){let e=C.default.object({type:C.default.string().allow(...Object.values(wc)).required(),required:C.default.boolean().required(),default:C.default.any(),display:C.default.string()}),r=C.default.object({type:C.default.string().allow(...Object.values(Ic)),readable:C.default.boolean(),displayName:C.default.string(),fields:C.default.object().pattern(C.default.string(),e)}).required(),n=C.default.object({type:C.default.string().allow("datasource").required(),metadata:C.default.object().unknown(!0).required(),hash:C.default.string().optional(),version:C.default.string().optional(),schema:C.default.object({docs:C.default.string(),plus:C.default.boolean().optional(),isSQL:C.default.boolean().optional(),auth:C.default.object({type:C.default.string().required()}).optional(),features:C.default.object(Object.fromEntries(Object.values(Dc).map(i=>[i,C.default.boolean().optional()]))).optional(),relationships:C.default.boolean().optional(),description:C.default.string().required(),friendlyName:C.default.string().required(),type:C.default.string().allow(...E0),datasource:C.default.object().pattern(C.default.string(),e).required(),query:C.default.object().pattern(C.default.string(),r).unknown(!0).required(),extra:C.default.object().pattern(C.default.string(),C.default.object({type:C.default.string().required(),displayName:C.default.string().required(),required:C.default.boolean(),data:C.default.object()}))})});dm(n,t)}s(y0,"validateDatasource");function T0(t){let e=C.default.object().pattern(C.default.string(),{type:C.default.string().allow(...Object.values(Rc)).required(),customType:C.default.string().allow(...Object.values(Cc)),title:C.default.string(),description:C.default.string(),enum:C.default.array().items(C.default.string()),pretty:C.default.array().items(C.default.string())}),r=C.default.object({properties:e,required:C.default.array().items(C.default.string())}).concat(e).required(),n=C.default.object({type:C.default.string().allow("automation").required(),metadata:C.default.object().unknown(!0).required(),hash:C.default.string().optional(),version:C.default.string().optional(),schema:C.default.object({name:C.default.string().required(),tagline:C.default.string().required(),icon:C.default.string().required(),description:C.default.string().required(),type:C.default.string().allow("ACTION","LOGIC").required(),stepId:C.default.string().disallow(...Um).required(),inputs:C.default.object().optional(),schema:C.default.object({inputs:r,outputs:r}).required()})});dm(n,t)}s(T0,"validateAutomation");function S0(t){switch(t?.type){case"component":g0(t);break;case"datasource":y0(t);break;case"automation":T0(t);break;default:throw new Error(`Unknown plugin type - check schema.json: ${t.type}`)}}s(S0,"validate");var pm={};N(pm,{Client:()=>Ce,clients:()=>hr,locks:()=>yi,utils:()=>Va});var mm={};N(mm,{isBlacklisted:()=>_0,refreshBlacklist:()=>a_});var i_=F(require("dns")),Ac=F(require("net"));var s_=require("util");var Sc,A0=(0,s_.promisify)(i_.default.lookup);async function o_(t){return Ac.default.isIP(t)||(t.startsWith("http")||(t=`https://${t}`),t=new URL(t).hostname),(await A0(t,{all:!0})).map(r=>r.address)}s(o_,"lookup");async function a_(){let e=E.BLACKLIST_IPS?.split(",")||[],r=[];for(let n of e){let i=n.trim();if(Ac.default.isIP(i))r.push(i);else{let o=await o_(i);r=r.concat(o)}}Sc=r}s(a_,"refreshBlacklist");async function _0(t){if(Sc||await a_(),Sc?.length===0)return!1;let e;return Ac.default.isIP(t)?e=[t]:e=await o_(t),!!Sc?.find(r=>e.includes(r))}s(_0,"isBlacklisted");var Em={};N(Em,{init:()=>I0});var O0={"user:created":t=>t.userId,"user:updated":t=>t.userId,"user:deleted":t=>t.userId,"user:admin:assigned":t=>t.userId,"user:admin:removed":t=>t.userId,"user:builder:assigned":t=>t.userId,"user:builder:removed":t=>t.userId,"user_group:created":t=>t.groupId,"user_group:updated":t=>t.groupId,"user_group:deleted":t=>t.groupId,"user_group:user_added":t=>t.groupId,"user_group:users_deleted":t=>t.groupId,"user_group:permissions_edited":t=>t.groupId,"automation:deleted":t=>t.automationId,"datasource:deleted":t=>t.datasourceId,"table:deleted":t=>t.tableId,"query:deleted":t=>t.queryId,"workspace_app:deleted":t=>t.workspaceAppId,"view:deleted":t=>t.id};function u_(t,e){let r=O0[t];if(!r)throw new Error("Event does not have a method of document ID extraction");return r(e)}s(u_,"getDocumentId");var Uo=class{constructor(e){this.processors=[];this.processors=e}static{s(this,"DocumentUpdateProcessor")}async processEvent(e,r,n){let i=r.realTenantId,o=u_(e,n);if(!(!i||!o))for(let{events:a,processor:u}of this.processors)a.includes(e)&&await Re(i,async()=>{await u({id:o,tenantId:i,appId:n.appId,properties:n})})}shutdown(){return RS()}};var c_,hm;function I0(t){gt||$u(),hm||(hm=new Uo(t)),c_||(c_=gt.process(async e=>{let{event:r,identity:n,properties:i}=e.data;await hm.processEvent(r,n,i)}))}s(I0,"init");var wm={};N(wm,{COUNT_FIELD_NAME:()=>Om,Sql:()=>y_,SqlTable:()=>_c,designDoc:()=>Im,utils:()=>zd});var p_=require("knex");var w0=require("knex");function gm(t){return["link","formula","ai"].indexOf(t)!==-1}s(gm,"isIgnoredType");function l_(t,e,r,n,i){let o=e&&e.primary?e.primary:[],a=Object.values(e.schema),u=a.filter(p=>p.meta),c=u.length===a.length,l=[];n||(c?t.primary(u.map(p=>p.name)):o.length===1?(t.increments(o[0]).primary(),l.push(o[0])):t.primary(o));let d=Object.values(e.schema).map(p=>p.foreignKey);for(let[p,m]of Object.entries(e.schema)){let h=n?.schema[p];if(h&&h.type||l.includes(p)||i?.updated===p)continue;let g=m.type;switch(g){case"string":case"options":case"longform":case"barcodeqr":case"bb_reference_single":o.includes(p)?t.string(p,255):t.text(p);break;case"number":if(m.meta&&m.meta.toKey&&m.meta.toTable){let{toKey:y,toTable:S}=m.meta;t.integer(p).unsigned(),t.foreign(p).references(`${S}.${y}`)}else d.indexOf(p)===-1&&t.float(p);break;case"bigint":t.bigint(p);break;case"boolean":t.boolean(p);break;case"datetime":m.timeOnly?t.time(p):t.datetime(p,{useTz:!m.ignoreTimezones});break;case"array":case"bb_reference":Ne.schema.isDeprecatedSingleUserColumn(m)?t.text(p):t.json(p);break;case"link":if(m.relationshipType!=="many-to-one"&&m.relationshipType!=="many-to-many"){if(!m.foreignKey||!m.tableId)throw new Error("Invalid relationship schema");let{tableName:y}=Kd(m.tableId),S=r[y];if(!S||!S.primary)throw new Error("Referenced table doesn't exist or has no primary keys");let O=S.primary[0],_=S.schema[O].externalType;_?t.specificType(m.foreignKey,_):t.integer(m.foreignKey).unsigned(),t.foreign(m.foreignKey).references(`${y}.${O}`)}break;case"signature_single":case"attachment":case"attachment_single":t.json(p);break;case"formula":break;case"ai":break;case"auto":case"json":case"internal":throw new Error(`${m.type} is not a valid SQL type`);default:St.unreachable(g)}}let f=i?n?.schema[i.old].type:void 0;return i&&f&&!gm(f)&&t.renameColumn(i.old,i.updated),n&&Object.entries(n.schema).filter(([m,h])=>!gm(h.type)&&e.schema[m]==null).forEach(([m,h])=>{i?.old===m||gm(h.type)||(n.constrained&&n.constrained.indexOf(m)!==-1&&t.dropForeign(m),t.dropColumn(m))}),t}s(l_,"generateSchema");function R0(t,e,r){return t.createTable(e.name,n=>{l_(n,e,r)})}s(R0,"buildCreateTable");function C0(t,e,r,n,i){return t.alterTable(e.name,o=>{l_(o,e,r,n,i)})}s(C0,"buildUpdateTable");function b0(t,e){return t.dropTable(e.name)}s(b0,"buildDeleteTable");var ym=class{static{s(this,"SqlTableQueryBuilder")}constructor(e){this.sqlClient=e}getBaseSqlClient(){return this.sqlClient}getSqlClient(){return this.extendedSqlClient||this.sqlClient}setExtendedSqlClient(e){this.extendedSqlClient=e}_operation(e){return e.operation}_tableQuery(e){let r=(0,w0.knex)({client:this.sqlClient}).schema;e?.schema&&(r=r.withSchema(e.schema));let n;if(!e.table||!e.tables)throw new Error("Cannot execute without table being specified");if(e.table.sourceType==="internal")throw new Error("Cannot perform table actions for SQS.");switch(this._operation(e)){case"CREATE_TABLE":n=R0(r,e.table,e.tables);break;case"UPDATE_TABLE":if(!e.table)throw new Error("Must specify old table for update");if(this.sqlClient==="mysql2"&&e.meta?.renamed){let i=e.meta.renamed.updated;return{sql:`alter table ${e?.schema?`\`${e.schema}\`.\`${e.table.name}\``:`\`${e.table.name}\``} rename column \`${e.meta.renamed.old}\` to \`${i}\`;`,bindings:[]}}if(n=C0(r,e.table,e.tables,e.meta?.oldTable,e.meta?.renamed),this.sqlClient==="mssql"&&e.meta?.renamed){let i=e.meta.renamed.old,o=e.meta.renamed.updated,a=e?.schema?`${e.schema}.${e.table.name}`:`${e.table.name}`,u=Yn(n);if(Array.isArray(u))for(let c of u)c.sql.startsWith("exec sp_rename")&&(c.sql=`exec sp_rename '${a}.${i}', '${o}', 'COLUMN'`,c.bindings=[]);return u}break;case"DELETE_TABLE":n=b0(r,e.table);break;default:throw new Error("Table operation is of unknown type")}return Yn(n)}},_c=ym;var m_=require("lodash");var Om="__bb_total";function d_(){return(E.SQL_MAX_ROWS?parseInt(E.SQL_MAX_ROWS):null)||5e3}s(d_,"getBaseLimit");function Tm(){return(E.SQL_MAX_RELATED_ROWS?parseInt(E.SQL_MAX_RELATED_ROWS):null)||500}s(Tm,"getRelationshipLimit");function x0(t,e){return t.sort((r,n)=>{let i=e.find(a=>a&&r.endsWith(a)),o=e.find(a=>a&&n.endsWith(a));return i&&!o?-1:!i&&o?1:r.localeCompare(n)})}s(x0,"prioritisedArraySort");function h_(t){return Array.isArray(t)?t.map(e=>h_(e)):(t.bindings&&(t.bindings=t.bindings.map(e=>typeof e=="boolean"?e?1:0:e)),t)}s(h_,"convertBooleans");function f_(t){return t.sourceType==="internal"||t.sourceId===vc}s(f_,"isSqs");function v0(t,e='"'){return t.replace(new RegExp(e,"g"),`${e}${e}`)}s(v0,"escapeQuotes");function E_(t,e='"'){return`${e}${v0(t,e)}${e}`}s(E_,"wrap");function Sm(t,e='"'){for(let r in t)typeof t[r]=="string"&&(t[r]=E_(t[r],e));return`[${t.join(",")}]`}s(Sm,"stringifyArray");function g_(t){return km.includes(t.type)&&!Ne.schema.isDeprecatedSingleUserColumn(t)}s(g_,"isJsonColumn");var P0={equal:!1,notEqual:!0,empty:!1,notEmpty:!0,fuzzy:!1,string:!1,range:!1,contains:!1,notContains:!0,containsAny:!1,oneOf:!1,$and:!1,$or:!1},Am=class{constructor(e,r,n){this.SPECIAL_SELECT_CASES={POSTGRES_ARRAY:e=>this.client==="pg"&&e?.externalType?.toLowerCase()==="array",POSTGRES_MONEY:e=>this.client==="pg"&&e?.externalType?.includes("money"),POSTGRES_ENUM:e=>this.client==="pg"&&e?.externalType?.toLowerCase()==="user-defined"&&e?.type==="options",MSSQL_DATES:e=>this.client==="mssql"&&e?.type==="datetime"&&e.timeOnly};this.client=e,this.query=n,this.knex=r,this.splitter=new cr.ColumnSplitter([this.table],{aliases:this.query.tableAliases,columnPrefix:this.query.meta?.columnPrefix})}static{s(this,"InternalBuilder")}get table(){return this.query.table}get knexClient(){return this.knex.client}getFieldSchema(e){let{column:r}=this.splitter.run(e);return this.table.schema[r]}requiresJsonAsStringClient(){return["mssql","mysql2","mariadb","oracledb"].includes(this.client)}quoteChars(){let e=this.knexClient.wrapIdentifier("foo",{});return[e[0],e[e.length-1]]}quote(e){return this.knexClient.wrapIdentifier(e,{})}isQuoted(e){let[r,n]=this.quoteChars();return e.startsWith(r)&&e.endsWith(n)}quotedIdentifier(e){return Array.isArray(e)||(e=this.splitIdentifier(e)),e.map(r=>this.quote(r)).join(".")}castIntToString(e){switch(this.client){case"oracledb":return this.knex.raw("to_char(??)",[e]);case"pg":return this.knex.raw("??::TEXT",[e]);case"mysql2":case"mariadb":return this.knex.raw("CAST(?? AS CHAR)",[e]);case"sqlite3":return this.knex.raw("printf('%d', ??)",[e]);case"mssql":return this.knex.raw("CONVERT(NVARCHAR, ??)",[e])}}rawQuotedIdentifier(e){return this.knex.raw(this.quotedIdentifier(e))}splitIdentifier(e){let[r,n]=this.quoteChars();return this.isQuoted(e)?e.slice(1,-1).split(`${n}.${r}`):e.split(".")}qualifyIdentifier(e){let r=this.getTableName(),n=this.splitIdentifier(e);return n[0]!==r&&n.unshift(r),this.isQuoted(e)?this.quotedIdentifier(n):n.join(".")}generateSelectStatement(){let{table:e,resource:r}=this.query;if(!r||!r.fields||r.fields.length===0)return"*";let n=this.getTableName(e),i=this.table.schema;return r.fields.map(a=>{let u=a.split(/\./g),c,l=u[0];return u.length>1&&(c=u[0],l=u.slice(1).join(".")),{table:c,column:l,field:a}}).filter(({table:a})=>!a||a===n).map(({table:a,column:u,field:c})=>{let l=i[u];return this.SPECIAL_SELECT_CASES.POSTGRES_MONEY(l)?this.knex.raw("??::money::numeric as ??",[this.rawQuotedIdentifier([a,u].join(".")),this.knex.raw(this.quote(c))]):this.SPECIAL_SELECT_CASES.MSSQL_DATES(l)?this.knex.raw("CONVERT(varchar, ??, 108) as ??",[this.rawQuotedIdentifier(c),this.knex.raw(this.quote(c))]):a?this.rawQuotedIdentifier(`${a}.${u}`):this.rawQuotedIdentifier(c)})}convertClobs(e,r){if(this.client!=="oracledb")throw new Error("you've called convertClobs on a DB that's not Oracle, this is a mistake");let i=this.splitIdentifier(e).pop(),o=this.table.schema[i],a=this.rawQuotedIdentifier(e);return(o.type==="string"||o.type==="longform"||o.type==="bb_reference_single"||o.type==="bb_reference"||o.type==="options"||o.type==="barcodeqr")&&(r?.forSelect?a=this.knex.raw("to_char(??) as ??",[a,this.rawQuotedIdentifier(i)]):a=this.knex.raw("to_char(??)",[a])),a}parse(e,r){if(Array.isArray(e))return JSON.stringify(e);if(e==null)return null;if(this.requiresJsonAsStringClient()&&g_(r)&&typeof e=="object")return JSON.stringify(e);if(this.SPECIAL_SELECT_CASES.POSTGRES_ARRAY(r))return`{${e}}`;if(this.client==="oracledb"&&r.type==="datetime"&&r.timeOnly){if(e instanceof Date){let n=e.getHours().toString().padStart(2,"0"),i=e.getMinutes().toString().padStart(2,"0"),o=e.getSeconds().toString().padStart(2,"0");return`${n}:${i}:${o}`}if(typeof e=="string")return new Date(`1970-01-01T${e}Z`)}if(typeof e=="string"&&r.type==="datetime")if(r.timeOnly){if(!Yd(e))return null}else if(r.dateOnly){let n=jd(e);return n?new Date(n):null}else return r.ignoreTimezones?ja(e)?new Date(e):Qd(e)?new Date(e+"Z"):null:ja(e)?new Date(e.trim()):null;return e}parseBody(e){for(let[r,n]of Object.entries(e)){let{column:i}=this.splitter.run(r),o=this.table.schema[i];o&&(e[r]=this.parse(n,o))}return e}parseFilters(e){e=(0,m_.cloneDeep)(e);for(let r of Object.values(Pr)){let n=e[r];if(n)for(let i of Object.keys(n)){if(Array.isArray(n[i])){n[i]=JSON.stringify(n[i]);continue}let{column:o}=this.splitter.run(i),a=this.table.schema[o];a&&(n[i]=this.parse(n[i],a))}}for(let r of Object.values(er)){let n=e[r];if(n)for(let i of Object.keys(n)){let{column:o}=this.splitter.run(i),a=this.table.schema[o];a&&(n[i]=n[i].map(u=>this.parse(u,a)))}}for(let r of Object.values(wn)){let n=e[r];if(n)for(let i of Object.keys(n)){let{column:o}=this.splitter.run(i),a=this.table.schema[o];if(!a)continue;let u=n[i];"low"in u&&(u.low=this.parse(u.low,a)),"high"in u&&(u.high=this.parse(u.high,a))}}return e}addJoinFieldCheck(e,r){let n=r.from?.split(".")[0]||"";return e.andWhere(`${n}.fieldName`,"=",r.column)}addRelationshipForFilter(e,r,n,i){let{relationships:o,schema:a,tableAliases:u,table:c}=this.query,l=u?.[c.name]||c.name,d=s(f=>n.match(new RegExp(`^${f}\\.`)),"matches");if(!o)return e;for(let f of o){let p=f.tableName,m=u?.[p]||p,h=d(p)||d(m),g=d(f.column);if((h||g)&&f.to&&f.tableName){let y=this.knex.select(this.knex.raw(1)).from({[m]:p}),S=y.clone(),O=Hd(f),_;if(h?_=n:_=n.replace(new RegExp(`^${f.column}.`),`${u?.[f.tableName]||f.tableName}.`),O){let D=u?.[O.through]||f.through,T=this.tableNameWithSchema(O.through,{alias:D,schema:a});S=S.innerJoin(T,function(){this.on(`${m}.${O.toPrimary}`,"=",`${D}.${O.to}`)}).where(`${D}.${O.from}`,"=",this.rawQuotedIdentifier(`${l}.${O.fromPrimary}`)),this.client==="sqlite3"&&(S=this.addJoinFieldCheck(S,O)),e=e.where(I=>{I.whereExists(i(_,S)),r&&I.orWhereNotExists(y.clone().innerJoin(T,function(){this.on(`${l}.${O.fromPrimary}`,"=",`${D}.${O.from}`)}))})}else{let D=`${m}.${f.to}`,T=`${l}.${f.from}`;S=S.where(D,"=",this.rawQuotedIdentifier(T)),e=e.where(I=>{I.whereExists(i(_,S.clone())),r&&I.orWhereNotExists(S)})}}}return e}addFilters(e,r,n){if(!r)return e;let i=this;r=this.parseFilters({...r});let o=this.query.tableAliases,a=r.allOr,c=this.client==="sqlite3"?this.table._id:this.table.name;function l(h){return o?.[h]||h}s(l,"getTableAlias");function d(h,g,y,S){let O=s((_,D,T)=>{let[I,...M]=D.split("."),P=M.join("."),k=l(I);return _.andWhere(Y=>y(Y,k?`${k}.${P}`:P,T))},"handleRelationship");for(let _ in h){let D=h[_],T=qs(_),I=T.includes("."),M=n?.relationship&&I,P;if(_==="_complexIdOperator"&&(P=h[_])&&S){let k=l(c);e=S(e,P.id.map(Y=>k?`${k}.${Y}`:Y),P.values)}else if(I)M&&(a&&(e=e.or),e=i.addRelationshipForFilter(e,P0[g],T,(k,Y)=>O(Y,k,D)));else{let k=l(c);e=y(e,k?`${k}.${T}`:T,D)}}}s(d,"iterate");let f=s((h,g,y)=>((r?.fuzzyOr||a)&&(h=h.or),this.client==="oracledb"||this.client==="sqlite3"?h.whereRaw("LOWER(??) LIKE ?",[this.rawQuotedIdentifier(g),`%${y.toLowerCase()}%`]):h.whereILike(this.rawQuotedIdentifier(g),this.knex.raw("?",[`%${y}%`]))),"like"),p=s((h,g=!1)=>{function y(S){return(a||h===r?.containsAny)&&(S=S.or),h===r?.notContains&&(S=S.not),S}s(y,"addModifiers"),this.client==="pg"?d(h,"contains",(S,O,_)=>{S=y(S);let D=this.getFieldSchema(O),T="::jsonb";return this.SPECIAL_SELECT_CASES.POSTGRES_ARRAY(D)&&(T="",_=`{${_.map(M=>M.substring(1,M.length-1))}}`),g?S.whereRaw(T?"COALESCE(??::jsonb \\?| array??, FALSE)":"COALESCE(?? && '??', FALSE)",[this.rawQuotedIdentifier(O),T?this.knex.raw(Sm(_,"'")):this.knex.raw(_)]):S.whereRaw(`COALESCE(??${T} @> '??', FALSE)`,[this.rawQuotedIdentifier(O),T?this.knex.raw(Sm(_)):this.knex.raw(_)])}):this.client==="mysql2"||this.client==="mariadb"?d(h,"contains",(S,O,_)=>y(S).whereRaw("COALESCE(?(??, ?), FALSE)",[this.knex.raw(g?"JSON_OVERLAPS":"JSON_CONTAINS"),this.rawQuotedIdentifier(O),this.knex.raw(E_(Sm(_)))])):d(h,"contains",(S,O,_)=>(_.length===0||(S=S.where(D=>(h===r?.notContains&&(D=D.not),D=D.where(T=>{for(let I of _){h===r?.containsAny?T=T.or:T=T.and;let M=typeof I=="string"?`"${I.toLowerCase()}"`:I;T=T.whereLike(this.knex.raw("COALESCE(LOWER(??), '')",[this.rawQuotedIdentifier(O)]),`%${M}%`)}}),h===r?.notContains&&(D=D.or.whereNull(this.rawQuotedIdentifier(O))),D))),S))},"contains");if(r.$and){let{$and:h}=r;for(let g of h.conditions)e=e.where(y=>{this.addFilters(y,g,n)})}if(r.$or){let{$or:h}=r;e=e.where(g=>{for(let y of h.conditions)g.orWhere(S=>this.addFilters(S,{...y,allOr:!0},n))})}r.oneOf&&d(r.oneOf,"oneOf",(h,g,y)=>{let S=this.getFieldSchema(g),O=Array.isArray(y)?y:[y];if(a&&(h=h.or),this.client==="oracledb")g=this.convertClobs(g);else if(this.client==="sqlite3"&&S?.type==="datetime"&&S.dateOnly){for(let _ of O)_!=null?h=h.or.whereLike(g,`${_.toISOString().slice(0,10)}%`):h=h.or.whereNull(g);return h}return h.whereIn(g,O)},(h,g,y)=>(a&&(h=h.or),this.client==="oracledb"&&(g=g.map(S=>this.convertClobs(S))),h.whereIn(g,Array.isArray(y)?y:[y]))),r.string&&d(r.string,"string",(h,g,y)=>{if(a&&(h=h.or),this.client==="oracledb"||this.client==="sqlite3")return h.whereRaw("LOWER(??) LIKE ?",[this.rawQuotedIdentifier(g),`${y.toLowerCase()}%`]);{let S=this.getFieldSchema(g);return this.SPECIAL_SELECT_CASES.POSTGRES_ENUM(S)?h.whereRaw(`??::text ilike '${y}%'`,[this.knex.raw(this.quote(S.name))]):h.whereILike(g,`${y}%`)}}),r.fuzzy&&d(r.fuzzy,"fuzzy",f),r.range&&d(r.range,"range",(h,g,y)=>{let S=s(P=>P&&Object.keys(P).length===0&&Object.getPrototypeOf(P)===Object.prototype,"isEmptyObject");S(y.low)&&(y.low=""),S(y.high)&&(y.high="");let O=Ya(y.low),_=Ya(y.high),D=this.getFieldSchema(g),T=g,I=y.high,M=y.low;return this.client==="sqlite3"&&D?.type==="datetime"&&D.dateOnly&&(I!=null&&(I=`${I.toISOString().slice(0,10)}T23:59:59.999Z`),M!=null&&(M=M.toISOString().slice(0,10))),this.client==="oracledb"?T=this.convertClobs(g):this.client==="sqlite3"&&D?.type==="bigint"&&(T=this.knex.raw("CAST(?? AS INTEGER)",[this.rawQuotedIdentifier(g)]),I=this.knex.raw("CAST(? AS INTEGER)",[y.high]),M=this.knex.raw("CAST(? AS INTEGER)",[y.low])),a&&(h=h.or),O&&_?h.whereBetween(T,[M,I]):O?h.where(T,">=",M):_?h.where(T,"<=",I):h}),r.equal&&d(r.equal,"equal",(h,g,y)=>{let S=this.getFieldSchema(g);if(a&&(h=h.or),this.client==="mssql")return h.whereRaw("CASE WHEN ?? = ? THEN 1 ELSE 0 END = 1",[this.rawQuotedIdentifier(g),y]);if(this.client==="oracledb"){let O=this.convertClobs(g);return h.where(_=>_.whereNotNull(O).andWhere(O,y))}else return this.client==="sqlite3"&&S?.type==="datetime"&&S.dateOnly?y!=null?h.whereLike(g,`${y.toISOString().slice(0,10)}%`):h.whereNull(g):h.whereRaw("COALESCE(?? = ?, FALSE)",[this.rawQuotedIdentifier(g),y])}),r.notEqual&&d(r.notEqual,"notEqual",(h,g,y)=>{let S=this.getFieldSchema(g);if(a&&(h=h.or),this.client==="mssql")return h.whereRaw("CASE WHEN ?? = ? THEN 1 ELSE 0 END = 0",[this.rawQuotedIdentifier(g),y]);if(this.client==="oracledb"){let O=this.convertClobs(g);return h.where(_=>_.not.whereNull(O).and.where(O,"!=",y)).or.whereNull(O)}else return this.client==="sqlite3"&&S?.type==="datetime"&&S.dateOnly?y!=null?h.not.whereLike(g,`${y.toISOString().slice(0,10)}%`).or.whereNull(g):h.not.whereNull(g):h.whereRaw("COALESCE(?? != ?, TRUE)",[this.rawQuotedIdentifier(g),y])}),r.empty&&d(r.empty,"empty",(h,g)=>(a&&(h=h.or),h.whereNull(g))),r.notEmpty&&d(r.notEmpty,"notEmpty",(h,g)=>(a&&(h=h.or),h.whereNotNull(g))),r.contains&&p(r.contains),r.notContains&&p(r.notContains),r.containsAny&&p(r.containsAny,!0);let m=o?.[this.table._id]||this.table._id;return r.documentType&&!qd(this.table)&&m&&e.andWhereLike(`${m}._id`,`${tr(r.documentType)}%`),e}isSqs(){return f_(this.table)}getTableName(e){e||(e=this.table);let r=e.name;f_(e)&&e._id&&(r=e._id);let n=this.query.tableAliases||{};return n[r]?n[r]:r}addDistinctCount(e){if(!this.table.primary)throw new Error("SQL counting requires primary key to be supplied");return e.countDistinct(`${this.getTableName()}.${this.table.primary[0]} as ${Om}`)}addAggregations(e,r){let n=this.query.resource?.fields||[],i=this.getTableName();if(n.length>0){let o=n.map(a=>this.qualifyIdentifier(a));if(this.client==="oracledb"){let a=o.map(c=>this.convertClobs(c)),u=o.map(c=>this.convertClobs(c,{forSelect:!0}));e=e.groupBy(a).select(u)}else e=e.groupBy(o).select(o)}for(let o of r){let a=o.calculationType;if(a==="count")if("distinct"in o&&o.distinct)if(this.client==="oracledb"){let u=this.convertClobs(`${i}.${o.field}`);e=e.select(this.knex.raw("COUNT(DISTINCT ??) as ??",[u,o.name]))}else e=e.countDistinct(`${i}.${o.field} as ${o.name}`);else if(this.client==="oracledb"){let u=this.convertClobs(`${i}.${o.field}`);e=e.select(this.knex.raw("COUNT(??) as ??",[u,o.name]))}else e=e.count(`${o.field} as ${o.name}`);else{let u=this.getFieldSchema(o.field);if(!u)throw new Error(`field schema missing for aggregation target: ${o.field}`);let c=this.knex.raw("??(??)",[this.knex.raw(a),this.rawQuotedIdentifier(`${i}.${o.field}`)]);u.type==="bigint"&&(c=this.castIntToString(c)),e=e.select(this.knex.raw("?? as ??",[c,o.name]))}}return e}isAggregateField(e){return!!this.query.resource?.aggregations?.find(n=>n.name===e)}addSorting(e){let{sort:r,resource:n}=this.query,i=this.table.primary,o=this.getTableName();if(!Array.isArray(i))throw new Error("Sorting requires primary key to be specified for table");if(r&&Object.keys(r||{}).length>0)for(let[u,c]of Object.entries(r)){let l=this.getFieldSchema(u);if(this.isUnsortableField(l))continue;let d=c.direction==="ascending"?"asc":"desc",f;(this.client==="pg"||this.client==="oracledb")&&(f=c.direction==="ascending"?"first":"last");let p=`${o}.${u}`,m;this.isAggregateField(u)?m=this.rawQuotedIdentifier(u):this.client==="oracledb"?m=this.convertClobs(p):m=this.rawQuotedIdentifier(p),e=e.orderByRaw(`?? ?? ${f?"nulls ??":""}`,[m,this.knex.raw(d),...f?[this.knex.raw(f)]:[]])}if(!((n?.aggregations?.length??0)>0)){let u=this.findSortablePrimaryKey(i);if(u&&(!r||r[u]===void 0))e=e.orderBy(`${o}.${u}`);else if(!u&&(!r||Object.keys(r).length===0))throw new Error(`Primary key not found for table ${this.table.name}`)}return e}isUnsortableField(e){return e?.type==="json"}findSortablePrimaryKey(e){return e.find(r=>{if(r==null)return!1;let n=this.getFieldSchema(r);return!this.isUnsortableField(n)})}tableNameWithSchema(e,r){let n=r?.schema?`${r.schema}.${e}`:e;return r?.alias&&(n+=` as ${r.alias}`),n}buildJsonField(e,r){let n=r.split("."),i=n[n.length-1],o,a;if(n.length>1){let l=n.shift();o=n.join("."),a=`${l}.${o}`}else o=n.join("."),a=o;this.query.meta?.columnPrefix&&(i=i.replace(this.query.meta.columnPrefix,""));let u=this.rawQuotedIdentifier(a),c=e.schema[i];return c&&c.type==="bigint"&&(u=this.castIntToString(u)),[o,u]}maxFunctionParameters(){switch(this.client){case"sqlite3":return 127;case"pg":return 100;default:return 200}}addJsonRelationships(e,r,n){let i=this.client,o=this.knex,{resource:a,tableAliases:u,schema:c,tables:l}=this.query,d=a?.fields||[];for(let f of n){let{tableName:p,through:m,to:h,from:g,fromPrimary:y,toPrimary:S}=f;if(!p||!r)continue;let O=l[p];if(!O)throw new Error(`related table "${p}" not found in datasource`);let _=u?.[p]||p,D=u?.[r]||r,T=m&&u?.[m]||m,I=this.tableNameWithSchema(p,{alias:_,schema:c}),M=[...O?.primary||[],O?.primaryDisplay].filter(W=>W),P=x0(d.filter(W=>W.split(".")[0]===_),M);P=P.slice(0,Math.floor(this.maxFunctionParameters()/2));let k=P.map(W=>this.buildJsonField(O,W));if(!k.length)continue;let Y=k.map(W=>{let J=this.client==="oracledb"?" VALUE ":",";return this.knex.raw(`?${J}??`,[W[0],W[1]]).toString()}).join(","),bt=`${_}.${S||h}`,B=o.from(I).orderBy(bt),L=m&&S&&y,v=L?`${T}.${g}`:`${_}.${h}`,$=L?`${D}.${y}`:`${D}.${g}`;if(L){let W=this.tableNameWithSchema(m,{alias:T,schema:c});B=B.join(W,function(){this.on(`${_}.${S}`,"=",`${T}.${h}`)})}B=B.where(this.rawQuotedIdentifier(v),"=",this.rawQuotedIdentifier($));let w=s(W=>(B=B.select(P.map(J=>this.rawQuotedIdentifier(J))).limit(Tm()),o.select(W).from({[_]:B})),"standardWrap"),K;switch(i){case"sqlite3":B=this.addJoinFieldCheck(B,f),K=w(this.knex.raw(`json_group_array(json_object(${Y}))`));break;case"pg":K=w(this.knex.raw(`json_agg(json_build_object(${Y}))`));break;case"mariadb":K=B.select(o.raw(`json_arrayagg(json_object(${Y}) LIMIT ${Tm()})`));break;case"mysql2":case"oracledb":K=w(this.knex.raw(`json_arrayagg(json_object(${Y}))`));break;case"mssql":{let W=o.select("*").from({[D]:B.select(k.map(J=>o.ref(J[1]).as(J[0]))).limit(Tm())});K=o.raw(`(SELECT ?? = (${W} FOR JSON PATH))`,[this.rawQuotedIdentifier(_)]);break}default:throw new Error(`JSON relationships not implement for ${i}`)}e=e.select({[f.column]:K})}return e}addJoin(e,r,n){let{tableAliases:i,schema:o}=this.query,a=r.to,u=r.from,c=r.through,l=i?.[a]||a,d=c&&i?.[c]||c,f=i?.[u]||u,p=this.tableNameWithSchema(a,{alias:l,schema:o}),m=c?this.tableNameWithSchema(c,{alias:d,schema:o}):void 0;return c?e=e.leftJoin(m,function(){for(let h of n){let g=h.fromPrimary,y=h.from;this.orOn(`${f}.${g}`,"=",`${d}.${y}`)}}).leftJoin(p,function(){for(let h of n){let g=h.toPrimary,y=h.to;this.orOn(`${l}.${g}`,`${d}.${y}`)}}):e=e.leftJoin(p,function(){for(let h of n){let g=h.from,y=h.to;this.orOn(`${f}.${g}`,"=",`${l}.${y}`)}}),e}qualifiedKnex(e){let r=this.query.tableAliases?.[this.query.table.name];return e?.alias===!1?r=void 0:typeof e?.alias=="string"&&(r=e.alias),this.knex(this.tableNameWithSchema(this.query.table.name,{alias:r,schema:this.query.schema}))}create(e){let{body:r}=this.query;if(!r)throw new Error("Cannot create without row body");let n=this.qualifiedKnex({alias:!1}),i=this.parseBody(r);if(this.client==="oracledb")for(let[o,a]of Object.entries(this.query.table.schema)){if(a.constraints?.presence===!0||a.type==="formula"||a.type==="auto"||a.type==="link"||a.type==="ai")continue;i[o]==null&&(i[o]=null)}else for(let[o,a]of Object.entries(i))a==null&&delete i[o];return e.disableReturning?n.insert(i):n.insert(i).returning("*")}bulkCreate(){let{body:e}=this.query,r=this.qualifiedKnex({alias:!1});if(!Array.isArray(e))return r;let n=e.map(i=>this.parseBody(i));return r.insert(n)}bulkUpsert(){let{body:e}=this.query,r=this.qualifiedKnex({alias:!1});if(!Array.isArray(e))return r;let n=e.map(i=>this.parseBody(i));if(this.client==="pg"||this.client==="sqlite3"||this.client==="mysql2"||this.client==="mariadb"){let i=this.table.primary;if(!i)throw new Error("Primary key is required for upsert");return r.insert(n).onConflict(i).merge()}else if(this.client==="mssql"||this.client==="oracledb")return r.insert(n);return r.upsert(n)}read(e={}){let{operation:r,filters:n,paginate:i,relationships:o,table:a}=this.query,{limits:u}=e,c=this.qualifiedKnex(),l=null,d=u?.query||u?.base;if(i&&i.page&&i.limit){let m=(i.page<=1?0:i.page-1)*i.limit;d=i.limit,l=m}else i&&i.offset&&i.limit?(d=i.limit,l=i.offset):i&&i.limit&&(d=i.limit);r!=="COUNT"&&(d!=null&&(c=c.limit(d)),l!=null&&(c=c.offset(l)));let f=this.query.resource?.aggregations||[];if(r==="COUNT"?c=this.addDistinctCount(c):f.length>0?c=this.addAggregations(c,f):c=c.select(this.generateSelectStatement()),r!=="COUNT"&&(c=this.addSorting(c)),c=this.addFilters(c,n,{relationship:!0}),o?.length&&f.length===0){let p=this.query.tableAliases?.[a.name]||a.name,m=this.addSorting(this.knex.with("paginated",c.clone().clearSelect().select("*")).select(this.generateSelectStatement()).from({[p]:"paginated"}));return this.addJsonRelationships(m,a.name,o)}return c}update(e){let{body:r,filters:n}=this.query;if(!r)throw new Error("Cannot update without row body");let i=this.qualifiedKnex(),o=this.parseBody(r);return i=this.addFilters(i,n),e.disableReturning?i.update(o):i.update(o).returning("*")}delete(e){let{filters:r}=this.query,n=this.qualifiedKnex();return n=this.addFilters(n,r),e.disableReturning?n.delete():n.delete().returning(this.generateSelectStatement())}},_m=class extends _c{constructor(r,n=d_()){super(r);this.limit=n}static{s(this,"SqlQueryBuilder")}convertToNative(r,n={}){let i=this.getSqlClient();if(n?.disableBindings)return{sql:r.toString()};{let o=Yn(r);return i==="sqlite3"&&(o=h_(o)),o}}_query(r,n={}){let i=this.getSqlClient(),o={client:this.getBaseSqlClient()};(i==="sqlite3"||i==="oracledb")&&(o.useNullAsDefault=!0);let a=(0,p_.knex)(o),u,c=new Am(i,a,r);switch(this._operation(r)){case"CREATE":u=c.create(n);break;case"READ":u=c.read({limits:{query:this.limit,base:d_()}});break;case"COUNT":u=c.read();break;case"UPDATE":u=c.update(n);break;case"DELETE":u=c.delete(n);break;case"BULK_CREATE":u=c.bulkCreate();break;case"BULK_UPSERT":u=c.bulkUpsert();break;case"CREATE_TABLE":case"UPDATE_TABLE":case"DELETE_TABLE":return this._tableQuery(r);default:throw"Operation type is not supported by SQL query builder"}return this.convertToNative(u,n)}async getReturningRow(r,n){if(!n.extra||!n.extra.idFilter)return{};let i=this._query({operation:"READ",datasource:n.datasource,schema:n.schema,table:n.table,tables:n.tables,resource:{fields:[]},filters:n.extra?.idFilter,paginate:{limit:1}});return r(i,"READ")}checkLookupKeys(r,n){if(!r||!n.table.primary)return n;let i=n.table.primary[0];return n.extra={idFilter:{equal:{[i]:r}}},n}async queryWithReturning(r,n,i=o=>o){let o=this.getSqlClient(),a=this._operation(r),u=this._query(r,{disableReturning:!0});if(Array.isArray(u)){let f=[];for(let p of u)f.push(await n(p,a));return f}let c;a==="DELETE"&&(c=i(await this.getReturningRow(n,r)));let l=await n(u,a),d=i(l);if(a==="CREATE"||a==="UPDATE"){let f;o==="mssql"?f=d?.[0].id:(o==="mysql2"||o==="mariadb")&&(f=d?.insertId),c=i(await this.getReturningRow(n,this.checkLookupKeys(f,r)))}return a==="COUNT"?d:a!=="READ"?c:d.length?d:[{[a.toLowerCase()]:!0}]}getTableName(r,n){let i=r.name;if(r.sourceType==="internal"||r.sourceId===vc){if(!r._id)return;i=r._id}return n?.[i]||i}convertJsonStringColumns(r,n,i){let o=this.getTableName(r,i);for(let[a,u]of Object.entries(r.schema)){if(!g_(u))continue;let c=`${o}.${a}`;for(let l of n)typeof l[c]=="string"&&(l[c]=JSON.parse(l[c])),typeof l[a]=="string"&&(l[a]=JSON.parse(l[a]))}return n}log(r,n){Ds(this.getSqlClient(),r,n)}},y_=_m;var Im={};N(Im,{base:()=>N0});function N0(t){return{_id:wt,language:"sqlite",sql:{tables:{},options:{table_name:t}}}}s(N0,"base");var Dm={};N(Dm,{jsonFromCsvString:()=>U0});var T_=F(require("csvtojson"));async function U0(t,e){let{ignoreEmpty:r=!1,allowSingleColumn:n=!1,possibleDelimiters:i=[",",";",":","|","~"," "," "]}=e||{};for(let o of i){let a,u=!1;try{let c=await(0,T_.default)({ignoreEmpty:r,delimiter:o}).fromString(t);for(let[,l]of c.entries()){let d=Object.keys(l);if(a==null&&(a=d),!n&&d.length===1){u=!0;break}if(a.length!==d.length){u=!0;break}for(let f of a)(l[f]===void 0||l[f]==="")&&(l[f]=null)}if(u)continue;return c}catch{continue}}throw new Error("Unable to determine delimiter")}s(U0,"jsonFromCsvString");var Rm=class{static{s(this,"Endpoint")}constructor(e,r,n){this.method=e,this.url=r,this.controller=n,this.middlewares=[],this.outputMiddlewares=[]}addMiddleware(e,r){return r?.first?this.middlewares.unshift(e):this.middlewares.push(e),this}addOutputMiddleware(e,r){return r?.first?this.outputMiddlewares.unshift(e):this.outputMiddlewares.push(e),this}apply(e){let r=this.method,n=this.url,i=this.middlewares,o=this.controller,a=this.outputMiddlewares,u=s(()=>{},"complete"),c=[n,...i,o,...a,u];e[r](...c)}},Oc=Rm;var S_=F(require("@koa/router"));var On=class{constructor(){this.endpoints=[];this.middlewares=[];this.outputMiddlewares=[];this.applied=!1;this.locked=!1}static{s(this,"EndpointGroup")}addGroupMiddleware(e,r={first:!0}){if(this.locked)throw new Error("Group locked, no more middleware can be added.");return this.middlewares.push({fn:e,first:r.first}),this}addGroupMiddlewareOutput(e,r={first:!1}){if(this.locked)throw new Error("Group locked, no more middleware can be added.");return this.outputMiddlewares.push({fn:e,first:r.first}),this}addEndpoint(e,r,...n){let i=n.pop(),o=new Oc(e,r,i);if(n.length!==0)for(let a of n)o.addMiddleware(a);return this.endpoints.push(o),this}lockMiddleware(){this.locked=!0}post(e,...r){return this.addEndpoint("post",e,...r)}patch(e,...r){return this.addEndpoint("patch",e,...r)}put(e,...r){return this.addEndpoint("put",e,...r)}get(e,...r){return this.addEndpoint("get",e,...r)}delete(e,...r){return this.addEndpoint("delete",e,...r)}head(e,...r){return this.addEndpoint("head",e,...r)}apply(e){let r=this.endpointList();e||(e=new S_.default);for(let n of r)n.apply(e);return e}endpointList(){if(this.applied)throw new Error("Already applied to router");this.applied=!0;for(let e of this.endpoints)this.middlewares.forEach(({fn:r,first:n})=>e.addMiddleware(r,{first:n})),this.outputMiddlewares.forEach(({fn:r,first:n})=>e.addOutputMiddleware(r,{first:n}));return this.endpoints}};var Lo=class{constructor(){this.groups=[]}static{s(this,"EndpointGroupList")}group(...e){let r=new On;return e.length&&e.forEach(n=>{"first"in n?r.addGroupMiddleware(n.middleware,{first:n.first}):r.addGroupMiddleware(n)}),this.groups.push(r),r}listAllEndpoints(){let e=this.groups.flatMap(i=>i.endpointList()),r=[],n=[];for(let i of e)i.url.includes(":")?n.push(i):r.push(i);return[...r,...n]}};var L0={...Qs,...ue},k0=s((t={})=>{Ka(t.db)},"init");0&&(module.exports={AutomationViewMode,BUDIBASE_DATASOURCE_TYPE,BadRequestError,BudibaseError,Config,Cookie,DEFAULT_BB_DATASOURCE_ID,DEFAULT_EMPLOYEE_TABLE_ID,DEFAULT_EXPENSES_TABLE_ID,DEFAULT_INVENTORY_TABLE_ID,DEFAULT_JOBS_TABLE_ID,DEFAULT_TENANT_ID,DeprecatedViews,DesignDocuments,DocumentType,Duration,DurationType,EmailUnavailableError,Endpoint,EndpointGroup,EndpointGroupList,FeatureDisabledError,ForbiddenError,GlobalRole,HTTPError,Header,InternalTable,InvalidAPIKeyError,MAX_VALID_DATE,MIN_VALID_DATE,NotFoundError,NotImplementedError,RedisClient,SEPARATOR,SQLITE_DESIGN_DOC_ID,SQS_DATASOURCE_INTERNAL,StaticDatabases,UNICODE_MAX,USER_METADATA_PREFIX,UnexpectedError,UsageLimitError,UserStatus,ViewName,WORKSPACE_DEV,WORKSPACE_DEV_PREFIX,WORKSPACE_PREFIX,accounts,auth,blacklist,cache,configs,constants,context,csv,db,docIds,docUpdates,encryption,env,errors,events,features,getPublicError,init,installation,locks,logging,middleware,objectStore,permissions,platform,plugins,queue,redis,roles,security,sessions,setEnv,sql,tenancy,timers,userUtils,users,utils,withEnv});
36
+ }`,"platform_users_lowercase_2")},"createPlatformUserView"),Vs=s(async(t,e)=>{let r={account_by_email:yT,platform_users_lowercase_2:TT};return Ke(fe.PLATFORM_INFO.name,async n=>{let i=r[t];return Af(t,e,n,i,{arrayResponse:!0})})},"queryPlatformView"),ST={by_email2:mT,by_api_key:ET,by_app:hT},$t=s(async(t,e,r,n)=>{r||(r=H());let i=ST[t];return Af(t,e,r,i,n)},"queryGlobalView");async function _f(t,e,r){let n=H(),i=ST[t];return Gs(t,e,n,i,r)}s(_f,"queryGlobalViewRaw");var Bb=B(require("pouchdb"));var Of=class{static{s(this,"Replication")}constructor({source:e,target:r}){this.source=Xe(e),this.target=Xe(r),e.startsWith("app_dev")&&r.startsWith("app")?this.direction="toProduction":e.startsWith("app")&&r.startsWith("app_dev")&&(this.direction="toDev")}async close(){await Promise.all([ws(this.source),ws(this.target)])}replicate(e={}){return new Promise(r=>{this.source.replicate.to(this.target,e).on("denied",function(n){throw new Error(`Denied: Document failed to replicate ${n}`)}).on("complete",function(n){return r(n)}).on("error",function(n){throw n})})}async resolveInconsistencies(e){let r=[];for(let n of e)try{let[i,o]=await Promise.all([this.source.get(n),this.target.get(n)]);this.haveReplicationInconsistencies(i,o)&&(await this.target.remove({_id:o._id,_rev:o._rev}),r.push(i._id))}catch{console.warn("Cannot resolve inconsistencies for document",n)}r.length>0&&await this.replicate({doc_ids:r})}haveReplicationInconsistencies(e,r){let n=this.getRevisionNumber(e);return this.getRevisionNumber(r)>n}getRevisionNumber(e){return parseInt(e._rev?.split("-")[0]||"0")}appReplicateOpts(e={}){if(typeof e.filter=="string")return e;let r=e.filter,i=this.direction==="toDev";delete e.filter;let o=e.isCreation,a=e.tablesToSync;delete e.isCreation,delete e.tablesToSync;let u=!1,c;typeof a=="string"&&a==="all"?u=!0:a&&(c=a);let l=s((f,p)=>f?.startsWith(p+b),"startsWithID"),d=s(f=>l(f,"ro")||l(f,"li"),"isData");return{...e,filter:(f,p)=>!o&&f._id==="_design/migrations"||i&&f._id.startsWith("_design")?!1:f._deleted||l(f._id,ys)?!0:d(f._id)?!!c?.find(m=>f._id.includes(m))||u:l(f._id,"log_au")||f._id==="app_metadata"?!1:r?r(f,p):!0}}async rollback(){await this.target.destroy(),this.target=Xe(this.target.name),await this.replicate()}},AT=Of;var OT=B(require("node-fetch"));var qs=cr.removeKeyNumbering;function sn(t){return t==null||t===""}s(sn,"isEmpty");var Gt=class t{static{s(this,"QueryBuilder")}#l;#d;#e;#r;#n;#i;#s;#o;#t;#f;#a;#u=!1;#c;static{this.maxLimit=200}constructor(e,r,n){this.#l=e,this.#d=r,this.#e={allOr:!1,onEmptyFilter:"all",string:{},fuzzy:{},range:{},equal:{},notEqual:{},empty:{},notEmpty:{},oneOf:{},contains:{},notContains:{},containsAny:{},...n},this.#r=50,this.#s="ascending",this.#o="string",this.#t=!0}disableEscaping(){return this.#u=!0,this}setIndexBuilder(e){return this.#a=e,this}setVersion(e){return e!=null&&(this.#f=e),this}setTable(e){return this.#e.equal.tableId=e,this}setLimit(e){return e!=null&&(this.#r=e),this}setSort(e){return e!=null&&(this.#n=e),this}setSortOrder(e){return e!=null&&(this.#s=e),this}setSortType(e){return e!=null&&(this.#o=e),this}setBookmark(e){return e!=null&&(this.#i=e),this}setSkip(e){return this.#c=e,this}excludeDocs(){return this.#t=!1,this}includeDocs(){return this.#t=!0,this}addString(e,r){return this.#e.string[e]=r,this}addFuzzy(e,r){return this.#e.fuzzy[e]=r,this}addRange(e,r,n){return this.#e.range[e]={low:r,high:n},this}addEqual(e,r){return this.#e.equal[e]=r,this}addNotEqual(e,r){return this.#e.notEqual[e]=r,this}addEmpty(e,r){return this.#e.empty[e]=r,this}addNotEmpty(e,r){return this.#e.notEmpty[e]=r,this}addOneOf(e,r){return this.#e.oneOf[e]=r,this}addContains(e,r){return this.#e.contains[e]=r,this}addNotContains(e,r){return this.#e.notContains[e]=r,this}addContainsAny(e,r){return this.#e.containsAny[e]=r,this}setAllOr(){this.#e.allOr=!0}setOnEmptyFilter(e){this.#e.onEmptyFilter=e}handleSpaces(e){return this.#u?e:e.replace(/ /g,"_")}preprocess(e,{escape:r,lowercase:n,wrap:i,type:o}={}){let a=!!this.#f,u=typeof e;return e&&n&&(e=e.toLowerCase?e.toLowerCase():e),!this.#u&&r&&u==="string"&&(e=`${e}`.replace(/[ /#+\-&|!(){}\]^"~*?:\\]/g,"\\$&")),u==="string"&&!isNaN(e)&&!o?e=`"${e}"`:a&&i&&(e=u==="number"?e:`"${e}"`),e}isMultiCondition(){let e=0;for(let r of Object.values(this.#e))typeof r=="object"&&(e+=Object.keys(r).length);return e>1}compressFilters(e){let r={};for(let o of Object.keys(e)){let a=qs(o);r[a]?r[a]=r[a].concat(e[o]):r[a]=e[o]}let n={},i=1;for(let[o,a]of Object.entries(r))n[`${i++}:${o}`]=a;return n}buildSearchQuery(){let e=this,r=this.#e&&this.#e.allOr,n=r?"":"*:*",i=!0,o={escape:!0,lowercase:!0,wrap:!0},a="";this.#e.equal.tableId&&(a=this.#e.equal.tableId,delete this.#e.equal.tableId);let u=s((h,g)=>sn(g)?null:`${h}:${e.preprocess(g,o)}`,"equal"),c=s((h,g,y="AND")=>{if(sn(g))return null;if(!Array.isArray(g))return`${h}:${g}`;let S=`${e.preprocess(g[0],{escape:!0})}`;for(let O=1;O<g.length;O++)S+=` ${y} ${e.preprocess(g[O],{escape:!0})}`;return`${h}:(${S})`},"contains"),l=s((h,g)=>sn(g)?null:(g=e.preprocess(g,{escape:!0,lowercase:!0,type:"fuzzy"}),`${h}:/.*${g}.*/`),"fuzzy"),d=s((h,g)=>{let y=r?"*:* AND ":"",S=r?"AND":void 0;return y+"NOT "+c(h,g,S)},"notContains"),f=s((h,g)=>c(h,g,"OR"),"containsAny"),p=s((h,g)=>{if(sn(g))return"*:*";if(!Array.isArray(g))if(typeof g=="string")g=g.split(",");else return"";let y=`${e.preprocess(g[0],o)}`;for(let S=1;S<g.length;S++)y+=` OR ${e.preprocess(g[S],o)}`;return`${h}:(${y})`},"oneOf");function m(h,g,y){let S="";for(let[O,_]of Object.entries(h)){O=qs(O),O=e.preprocess(e.handleSpaces(O),{escape:!0});let w=g(O,_);if(w!=null){if(S.length>0||n.length>0){let T=y?.mode?y.mode:r?"OR":"AND";S+=` ${T} `}S+=w,(typeof _!="string"&&_!=null||typeof _=="string"&&_!==a&&_!=="")&&(i=!1)}}if(y?.returnBuilt)return S;n+=S}if(s(m,"build"),this.#e.string&&m(this.#e.string,(h,g)=>sn(g)?null:(g=e.preprocess(g,{escape:!0,lowercase:!0,type:"string"}),`${h}:${g}*`)),this.#e.range&&m(this.#e.range,(h,g)=>{if(sn(g)||g.low==null||g.low===""||g.high==null||g.high==="")return null;let y=e.preprocess(g.low,o),S=e.preprocess(g.high,o);return`${h}:[${y} TO ${S}]`}),this.#e.fuzzy&&m(this.#e.fuzzy,l),this.#e.equal&&m(this.#e.equal,u),this.#e.notEqual&&m(this.#e.notEqual,(h,g)=>sn(g)?null:typeof g=="boolean"?`(*:* AND !${h}:${g})`:`!${h}:${e.preprocess(g,o)}`),this.#e.empty&&m(this.#e.empty,h=>(i=!1,`(*:* -${h}:["" TO *])`)),this.#e.notEmpty&&m(this.#e.notEmpty,h=>(i=!1,`${h}:["" TO *]`)),this.#e.oneOf&&m(this.#e.oneOf,p),this.#e.contains&&m(this.#e.contains,c),this.#e.notContains&&m(this.compressFilters(this.#e.notContains),d),this.#e.containsAny&&m(this.#e.containsAny,f),a&&(n=this.isMultiCondition()?`(${n})`:n,r=!1,m({tableId:a},u)),i){if(this.#e.onEmptyFilter==="none")return"";if(this.#e?.allOr)return n.replace("()","(*:*)")}return n}buildSearchBody(){let e={q:this.buildSearchQuery(),limit:Math.min(this.#r,t.maxLimit),include_docs:this.#t};if(this.#i&&(e.bookmark=this.#i),this.#n){let r=this.#s==="descending"?"-":"",n=`<${this.#o}>`;e.sort=`${r}${this.handleSpaces(this.#n)}${n}`}return e}async run(){return this.#c&&await this.#m(this.#c),await this.#p()}async#m(e){let r=this.#t,n=this.#r;this.excludeDocs();let i=e,o=0;do{let a=Math.min(t.maxLimit,i);this.setLimit(a);let{bookmark:u,rows:c}=await this.#p();this.setBookmark(u),o=c.length,i-=c.length}while(i>0&&o>0);this.#t=r,this.#r=n}async#p(){let{url:e,cookie:r}=dt(),n=`${e}/${this.#l}/_design/database/_search/${this.#d}`,i=this.buildSearchBody();try{return await _T(n,i,r)}catch(o){if(o.status===404&&this.#a)return await this.#a(),await _T(n,i,r);throw o}}};async function _T(t,e,r){let n=await(0,OT.default)(t,{body:JSON.stringify(e),method:"POST",headers:{Authorization:r}});if(n.status===404)throw n;let i=await n.json(),o={rows:[],totalRows:0};return i.rows!=null&&i.rows.length>0&&(o.rows=i.rows.map(a=>a.doc)),i.bookmark&&(o.bookmark=i.bookmark),i.total_rows&&(o.totalRows=i.total_rows),o}s(_T,"runQuery");async function IT(t,e,r,n){let i=n.bookmark,o=n.rows||[];if(n.limit&&o.length>=n.limit)return o;let a=Gt.maxLimit;n.limit&&o.length>n.limit-Gt.maxLimit&&(a=n.limit-o.length);let u=new Gt(t,e,r);u.setVersion(n.version).setBookmark(i).setLimit(a).setSort(n.sort).setSortOrder(n.sortOrder).setSortType(n.sortType),n.tableId&&u.setTable(n.tableId);let c=await u.run();if(!c.rows.length)return o;if(c.rows.length<Gt.maxLimit)return[...o,...c.rows];let l={...n,bookmark:c.bookmark,rows:[...o,...c.rows]};return await IT(t,e,r,l)}s(IT,"recursiveSearch");async function Wb(t,e,r,n){let i=n.limit;(i==null||isNaN(i)||i<0)&&(i=50),i=Math.min(i,Gt.maxLimit);let o=new Gt(t,e,r);n.version&&o.setVersion(n.version),n.tableId&&o.setTable(n.tableId),n.sort&&o.setSort(n.sort).setSortOrder(n.sortOrder).setSortType(n.sortType),n.indexer&&o.setIndexBuilder(n.indexer),n.disableEscaping&&o.disableEscaping();let a=await o.setBookmark(n.bookmark).setLimit(i).run();o.setBookmark(a.bookmark).setLimit(1),n.tableId&&o.setTable(n.tableId);let u=await o.run();return{...a,hasNextPage:u.rows&&u.rows.length>0}}s(Wb,"paginatedSearch");async function $b(t,e,r,n){let i=n.limit;return(i==null||isNaN(i)||i<0)&&(i=1e3),n.limit=Math.min(i,1e3),{rows:await IT(t,e,r,n)}}s($b,"fullSearch");var If={};N(If,{createUserIndex:()=>Gb});async function Gb(){let t=H(),e;try{e=await t.get("_design/database")}catch(n){n.status===404&&(e={_id:"_design/database"})}let r=s(function(n){if(n._id&&!n._id.startsWith("us_"))return;let i=["_id","_rev","password","account","license","budibaseAccess","accountPortalAccess","csrfToken"];function o(a,u){for(let c of Object.keys(a)){if(i.includes(c))continue;let l=u!=null?`${u}.${c}`:c;typeof a[c]=="string"?index(l,a[c].toLowerCase(),{facet:!0}):typeof a[c]!="object"?index(l,a[c],{facet:!0}):o(a[c],l)}}s(o,"idx"),o(n)},"fn");e.indexes={user:{index:r.toString(),analyzer:{default:"keyword",name:"perfield"}}},await t.put(e)}s(Gb,"createUserIndex");function wT(t,e){let r=e.toString();if(typeof t=="object")return t.status===e||t.message?.includes(r);if(typeof t=="number")return t===e;if(typeof t=="string")return t.includes(r)}s(wT,"checkErrorCode");function Vb(t){return wT(t,409)}s(Vb,"isDocumentConflictError");var Qs={};N(Qs,{addTenantToUrl:()=>qb,getTenantDB:()=>wf,getTenantIDFromCtx:()=>Ks,isUserInWorkspaceTenant:()=>Kb});function wf(t){return De(Xr(t))}s(wf,"getTenantDB");function qb(t){let e=q();if(pr()){let r=t.indexOf("?")===-1?"?":"&";t+=`${r}tenantId=${e}`}return t}s(qb,"addTenantToUrl");var Kb=s((t,e)=>{let r;return e?r=e.tenantId||ae:r=q(),(zn(t)||ae)===r},"isUserInWorkspaceTenant"),Qb=Object.values(Ii),Ks=s((t,e)=>{if(!pr())return ae;e.allowNoTenant===void 0&&(e.allowNoTenant=!1),e.includeStrategies||(e.includeStrategies=Qb),e.excludeStrategies||(e.excludeStrategies=[]);let r=s(n=>{if(e.excludeStrategies?.includes(n))return!1;if(e.includeStrategies?.includes(n))return!0},"isAllowed");if(r("user")){let n=t.user?.tenantId;if(n)return n}if(r("header")){let n=t.request.headers["x-budibase-tenant-id"];if(n)return n}if(r("query")){let n=t.request.query.tenantId;if(n)return n}if(r("subdomain")){let n;try{n=new URL(Xd()).host.split(":")[0]}catch(o){if(o.code!=="ERR_INVALID_URL")throw o}let i=t.host;if(n&&i.includes(n)){let o=i.substring(0,i.indexOf(`.${n}`));if(o)return o}}if(r("path")){let n=t.matched.find(a=>!!a.paramNames.find(u=>u.name==="tenantId")),i=t.originalUrl,o;if(i.includes("?")?o=i.split("?")[0]:o=i,n){let a=n.params(o,n.captures(o),{});if(a.tenantId)return a.tenantId}}e.allowNoTenant||t.throw(403,"Tenant id not set")},"getTenantIDFromCtx");var Df="app"+b,DT="/app/";async function jb(t){let r=`/${t.path.split("/")[2].toLowerCase()}`,n=q();!E.isDev()&&E.MULTI_TENANCY&&(n=Ks(t,{includeStrategies:["subdomain"]}));let o=(await Re(n,()=>$s({dev:!1}))).filter(a=>a.url&&a.url.toLowerCase()===r)[0];return o&&o.appId?o.appId:void 0}s(jb,"resolveAppUrl");function Yb(t){return t.path.startsWith(`/${Df}`)?!0:t.path.startsWith(DT)}s(Yb,"isServingApp");function Hb(t){return t.path.startsWith("/builder/workspace/")}s(Hb,"isServingBuilder");function zb(t){return RT(t.path)}s(zb,"isServingBuilderPreview");function RT(t){return new RegExp(/^\/app\/app_\w+\/preview$/).test(t)}s(RT,"isBuilderPreviewUrl");function Jb(t){return t.path.startsWith("/api/public/v")}s(Jb,"isPublicApiRequest");async function on(t){let e;function r(u){u&&u.startsWith(Df)&&(e&&e!==u&&t.throw("App id conflict",403),e=u)}s(r,"setWorkspaceIdIfValid");function n(u){if(u){typeof u=="string"&&(u=[u]);for(let c of u)r(c)}}s(n,"checkPossibleValues"),n(t.request.headers["x-budibase-app-id"]),r(t.request.body?.appId);let i=Zb(t.path);r(i),n(t.query?.appId);let o=RT(t.path);return t.path.startsWith(DT)&&!o&&r(await jb(t)),e}s(on,"getWorkspaceIdFromCtx");function Zb(t){if(t)return t.split("?")[0].split("/").find(e=>e.startsWith(Df))}s(Zb,"parseWorkspaceIdFromUrlPath");function su(t){if(t)try{return iu.default.verify(t,E.JWT_SECRET)}catch(e){if(E.JWT_SECRET_FALLBACK)return iu.default.verify(t,E.JWT_SECRET_FALLBACK);throw e}}s(su,"openJwt");function js(t){return E.INTERNAL_API_KEY&&E.INTERNAL_API_KEY===t?!0:!!(E.INTERNAL_API_KEY_FALLBACK&&E.INTERNAL_API_KEY_FALLBACK===t)}s(js,"isValidInternalAPIKey");function Vt(t,e){let r=t.cookies.get(e);if(r)return su(r)}s(Vt,"getCookie");function CT(t,e,r="builder",n={sign:!0}){e&&n&&n.sign&&(e=iu.default.sign(e,E.JWT_SECRET));let i={expires:Ma,path:"/",httpOnly:!1,overwrite:!0};E.COOKIE_DOMAIN&&(i.domain=E.COOKIE_DOMAIN),t.cookies.set(r,e,i)}s(CT,"setCookie");function gr(t,e){CT(t,null,e)}s(gr,"clearCookie");function Xb(t){return t.headers["x-budibase-type"]==="client"}s(Xb,"isClient");function Rf(t){return new Promise(e=>setTimeout(e,t))}s(Rf,"timeout");function Cf(t){return!!xm[t]}s(Cf,"isAudited");function ex(t){if(typeof t!="object")return!1;try{JSON.stringify(t)}catch(e){if(e instanceof Error&&e?.message.includes("circular structure"))return!0}return!1}s(ex,"hasCircularStructure");function tx(t){return!!t.match(/^.+:\/\/.+$/)}s(tx,"urlHasProtocol");function bf(t){return t&&!!t.match(/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/)}s(bf,"validEmail");var xf=(o=>(o.MILLISECONDS="milliseconds",o.SECONDS="seconds",o.MINUTES="minutes",o.HOURS="hours",o.DAYS="days",o))(xf||{}),ou={milliseconds:1,seconds:1e3,minutes:6e4,hours:36e5,days:864e5},Ee=class t{constructor(e){this.ms=e}static{s(this,"Duration")}to(e){return this.ms/ou[e]}toMs(){return this.ms}toSeconds(){return this.to("seconds")}static convert(e,r,n){return n*ou[e]/ou[r]}static from(e,r){return new t(r*ou[e])}static fromSeconds(e){return t.from("seconds",e)}static fromMinutes(e){return t.from("minutes",e)}static fromHours(e){return t.from("hours",e)}static fromDays(e){return t.from("days",e)}static fromMilliseconds(e){return t.from("milliseconds",e)}};async function rx(t){let e=performance.now();return[await t(),Ee.fromMilliseconds(performance.now()-e)]}s(rx,"time");var xT=require("undici");function bT(t){let e=process.env.GLOBAL_AGENT_HTTP_PROXY||process.env.HTTP_PROXY,n=process.env.GLOBAL_AGENT_HTTPS_PROXY||process.env.HTTPS_PROXY||e;if(!n||!n.trim())return!1;let i=n.trim();try{new URL(i)}catch{return console.log("[fetch] Invalid proxy URL format:",n),!1}let o=t?.rejectUnauthorized!==void 0?t?.rejectUnauthorized:!0;console.log("[fetch] Creating ProxyAgent",{proxyUrl:i,rejectUnauthorized:o});let a={uri:i,requestTls:{rejectUnauthorized:o}};i.startsWith("https://")&&(a.proxyTls={rejectUnauthorized:o});try{return new xT.ProxyAgent(a)}catch(u){return console.log("[fetch] Failed to create ProxyAgent:",u),!1}}s(bT,"createProxyDispatcher");var au=null;function nx(t){return t?bT(t)||!1:(au===null&&(au=bT()),au||!1)}s(nx,"getProxyDispatcher");function ix(){au=null}s(ix,"resetProxyDispatcherCache");function sx(t){let e="",r=-1,n,i,o=t.opts?.repeat;return o&&(i=o.endDate?new Date(o.endDate).getTime():Date.now(),n=o.tz,"cron"in o?e=o.cron:r=o.every),{id:t.id.toString(),name:"",key:t.id.toString(),tz:n,endDate:i,cron:e,every:r,next:0}}s(sx,"jobToJobInformation");var uu=class{static{s(this,"InMemoryQueue")}constructor(e,r){this._name=e,this._opts=r,this._messages=[],this._emitter=new vT.default.EventEmitter,this._runCount=0,this._addCount=0,this._queuedJobIds=new Set,this._attempts=r?.defaultJobOptions?.attempts||1}async process(e,r){r=typeof e=="number"?r:e,this._emitter.on("message",async n=>{if(!n.manualTrigger&&n.opts?.repeat!=null)return;function i(){return r.length===1?r(n):new Promise((c,l)=>{r(n,s((f,p)=>{f?l(f):c(p)},"done"))})}s(i,"execute");let o=this._attempts;async function a(c,l=0){try{return await c}catch(d){if(l++,l<o&&!n._isDiscarded)return await Ne.wait(100*l),await a(i(),l);throw d}}s(a,"retryFunc");try{let c=await a(i());this._emitter.emit("completed",n,c);let l=this._messages.indexOf(n);if(l===-1)throw"Failed deleting a processed message";this._messages.splice(l,1)}catch(c){console.error(c),this._emitter.emit("error",n,c)}this._runCount++;let u=n.opts?.jobId?.toString();u&&n.opts?.removeOnComplete&&this._queuedJobIds.delete(u)})}async isReady(){return this}async add(e,r){if(typeof e=="string")throw new Error("doesn't support named jobs");let n=r,i=n?.jobId?.toString();if(i&&this._queuedJobIds.has(i)){console.log(`Ignoring already queued job ${i}`);return}if(typeof e!="object")throw"Queue only supports carrying JSON.";i&&this._queuedJobIds.add(i);let o=ne(),a=s(()=>{let c={id:o,timestamp:Date.now(),queue:this,data:e,opts:n,discard:async()=>{c._isDiscarded=!0}};this._messages.push(c),this._messages.length>1e3&&this._messages.shift(),this._addCount++,this._emitter.emit("message",c)},"pushMessage"),u=n?.delay;return u?setTimeout(a,u):a(),{id:i,finished:()=>new Promise((c,l)=>{let d=s((p,m)=>{p.id===o&&(this._emitter.off("error",d),this._emitter.off("completed",f),l(m))},"errorHandler"),f=s((p,m)=>{p.id===o&&(this._emitter.off("error",d),this._emitter.off("completed",f),c(m))},"completedHandler");this._emitter.on("error",d),this._emitter.on("completed",f)})}}async close(){}async removeRepeatableByKey(e){for(let[r,n]of this._messages.entries())if(n.id===e){this._messages.splice(r,1),this._emitter.emit("removed",n);return}}async removeJobs(e){}async clean(){return[]}async getJob(e){for(let r of this._messages)if(r.id===e)return r;return null}manualTrigger(e){for(let r of this._messages)if(r.id===e){this._emitter.emit("message",{...r,manualTrigger:!0});return}throw new Error(`Job with id ${e} not found`)}on(e,r){return this._emitter.on(e,r),this}off(e,r){return this._emitter.off(e,r),this}async count(){return this._messages.length}async getCompletedCount(){return this._runCount}async getRepeatableJobs(){return this._messages.filter(e=>e.opts?.repeat!=null).map(e=>sx(e))}async whenCurrentJobsFinished(){do await Rf(50);while(this.hasRunningJobs())}hasRunningJobs(){return this._addCount>this._runCount}},PT=uu;var Nf=B(require("bull"));var ti=(c=>(c.AUTOMATION="automationQueue",c.APP_BACKUP="appBackupQueue",c.AUDIT_LOG="auditLogQueue",c.SYSTEM_EVENT_QUEUE="systemEventQueue",c.APP_MIGRATION="appMigration",c.DOC_WRITETHROUGH_QUEUE="docWritethroughQueue",c.DEV_REVERT_PROCESSOR="devRevertProcessorQueue",c.BATCH_USER_SYNC_PROCESSOR="batchUserSyncProcessorQueue",c))(ti||{});function NT(t,e,r){ux(t,e),r&&ox(t,r)}s(NT,"addListeners");function ox(t,e){t.on("stalled",async r=>{if(e)await e(r);else if(r.opts.repeat){let n=r.id,i=await t.getRepeatableJobs();for(let o of i)o.id===n&&await t.removeRepeatableByKey(o.key);console.log(`jobId=${n} disabled`)}})}s(ox,"handleStalled");function et(t,e,r={},n={}){let i=`[BULL] ${t}=${e}`,o=r.error,a={_logKey:"bull",eventType:t,event:e,job:r.job,jobId:r.jobId||r.job?.id,...n},u;return r.job?.data?.automation&&(u={_logKey:"automation",trigger:r.job?r.job.data.automation.definition.trigger.event:void 0}),[i,o,a,u]}s(et,"getLogParams");var ax={automationQueue:"automation-event",appBackupQueue:"app-backup-event",auditLogQueue:"audit-log-event",systemEventQueue:"system-event",appMigration:"app-migration",docWritethroughQueue:"doc-writethrough",devRevertProcessorQueue:"dev-revert-event",batchUserSyncProcessorQueue:"batch-user-sync-processor"};function ux(t,e){let r=ax[e];function n(i,o){let a=i.data.event?.appId;if(a)return ef(a,o);o()}s(n,"doInJobContext"),t.on("stalled",async i=>{await n(i,()=>{console.error(...et(r,"stalled",{job:i}))})}).on("error",i=>{console.error(...et(r,"error",{error:i}))}),process.env.NODE_DEBUG?.includes("bull")&&t.on("waiting",i=>{console.info(...et(r,"waiting",{jobId:i}))}).on("active",async i=>{await n(i,()=>{console.info(...et(r,"active",{job:i}))})}).on("progress",async(i,o)=>{await n(i,()=>{console.info(...et(r,"progress",{job:i},{progress:o}))})}).on("completed",async(i,o)=>{await n(i,()=>{console.info(...et(r,"completed",{job:i},{result:o}))})}).on("failed",async(i,o)=>{await n(i,()=>{console.error(...et(r,"failed",{job:i,error:o}))})}).on("paused",()=>{console.info(...et(r,"paused"))}).on("resumed",()=>{console.info(...et(r,"resumed"))}).on("cleaned",(i,o)=>{console.info(...et(r,"cleaned",{},{length:i.length,type:o}))}).on("drained",()=>{console.info(...et(r,"drained"))}).on("removed",i=>{console.info(...et(r,"removed",{job:i}))})}s(ux,"logging");var cu={};N(cu,{cleanup:()=>cx,clear:()=>Pf,set:()=>vf});var Ys=[];function vf(t,e){let r=setInterval(t,e);return Ys.push(r),r}s(vf,"set");function Pf(t){let e=Ys.indexOf(t);e!==-1&&Ys.splice(e,1),clearInterval(t)}s(Pf,"clear");function cx(){for(let t of Ys)clearInterval(t);Ys=[]}s(cx,"cleanup");var qt=B(require("dd-trace")),Hs=B(require("object-sizeof"));var lx=Ee.fromMinutes(5).toMs(),dx=Ee.fromSeconds(30).toMs(),Uf=Ee.fromSeconds(60).toMs(),zs=[],lu;async function UT(){for(let t of zs)await t.clean(Uf,"completed"),await t.clean(Uf,"failed")}s(UT,"cleanup");async function fx(t,e,r){let n=performance.now();try{let i=await e();return qt.default.dogstatsd.increment(`${t}.success`,1,r),i}catch(i){throw qt.default.dogstatsd.increment(`${t}.error`,1,r),i}finally{let i=performance.now()-n;qt.default.dogstatsd.distribution(`${t}.duration.ms`,i,r),qt.default.dogstatsd.increment(t,1,r)}}s(fx,"withMetrics");function LT(t){return{"job.opts.attempts":t.attempts,"job.opts.backoff":t.backoff,"job.opts.delay":t.delay,"job.opts.jobId":t.jobId,"job.opts.lifo":t.lifo,"job.opts.preventParsingData":t.preventParsingData,"job.opts.priority":t.priority,"job.opts.removeOnComplete":t.removeOnComplete,"job.opts.removeOnFail":t.removeOnFail,"job.opts.repeat":t.repeat,"job.opts.stackTraceLimit":t.stackTraceLimit,"job.opts.timeout":t.timeout}}s(LT,"jobOptsTags");function px(t){return{"job.id":t.id,"job.attemptsMade":t.attemptsMade,"job.timestamp":t.timestamp,"job.data.sizeBytes":(0,Hs.default)(t.data),...LT(t.opts||{})}}s(px,"jobTags");var ht=class{static{s(this,"BudibaseQueue")}constructor(e,r={}){this.opts=r,this.jobQueue=e,this.queue=this.initQueue()}get name(){return this.queue.name}initQueue(){let r={redis:Jr(),settings:{maxStalledCount:this.opts.maxStalledCount?this.opts.maxStalledCount:0,lockDuration:lx,lockRenewTime:dx}};this.opts.jobOptions&&(r.defaultJobOptions=this.opts.jobOptions);let n;return E.isTest()?process.env.BULL_TEST_REDIS_PORT&&!isNaN(+process.env.BULL_TEST_REDIS_PORT)?n=new Nf.default(this.jobQueue,{...r,redis:{host:"localhost",port:+process.env.BULL_TEST_REDIS_PORT}}):n=new PT(this.jobQueue,r):n=new Nf.default(this.jobQueue,r),NT(n,this.jobQueue,this.opts.removeStalledCb),zs.push(n),!lu&&!E.isTest()&&(lu=vf(UT,Uf),UT().catch(i=>{console.error(`Unable to cleanup ${this.jobQueue} initially - ${i}`)})),n}getBullQueue(){return this.queue}process(...e){let r,n;e.length===2?(r=e[0],n=e[1]):n=e[0];let i=s(async(a,u)=>{await qt.default.trace("queue.process",async c=>{if(a.data._parentSpanContext){let l=a.data._parentSpanContext,d={traceId:l.traceId,spanId:l.spanId,toTraceId:()=>l.traceId,toSpanId:()=>l.spanId,toTraceparent:()=>""};c.addLink(d)}c.addTags({"queue.name":this.jobQueue,...px(a)}),this.opts.jobTags&&c.addTags(this.opts.jobTags(a.data)),qt.default.dogstatsd.distribution("queue.process.sizeBytes",(0,Hs.default)(a.data),this.metricTags()),await this.withMetrics("queue.process",()=>u?n(a,u):n(a))})},"processCallback"),o;return n.length===1?o=s(a=>i(a),"wrappedCb"):o=i,r?this.queue.process(r,o):this.queue.process(o)}async add(e,r){return await qt.default.trace("queue.add",async n=>(n.addTags({"queue.name":this.jobQueue,"job.data.sizeBytes":(0,Hs.default)(e),...LT(r||{})}),this.opts.jobTags&&n.addTags(this.opts.jobTags(e)),e._parentSpanContext={traceId:n.context().toTraceId(),spanId:n.context().toSpanId()},qt.default.dogstatsd.distribution("queue.add.sizeBytes",(0,Hs.default)(e),this.metricTags()),await this.withMetrics("queue.add",()=>this.queue.add(e,r))))}withMetrics(e,r){return fx(e,r,this.metricTags())}metricTags(){return{queueName:this.jobQueue}}close(e){return this.queue.close(e)}whenCurrentJobsFinished(){return this.queue.whenCurrentJobsFinished()}};async function mx(){lu&&Pf(lu),console.log("Waiting for current queue jobs to finish...");for(let t of zs)await t.whenCurrentJobsFinished();console.log("Closing queue Redis connections...");for(let t of zs)await t.close();zs=[],console.log("Queues shutdown")}s(mx,"shutdown");var no={};N(no,{correlation:()=>Js,logAlert:()=>cn,logAlertWithInfo:()=>sv,logWarn:()=>si,logger:()=>Iu,system:()=>Zf});var Js={};N(Js,{getId:()=>Lf,setHeader:()=>hx});var kT=require("correlation-id"),hx=s(t=>{let e=kT.getId();e&&(t["x-budibase-correlation-id"]=e)},"setHeader");function Lf(){return kT.getId()}s(Lf,"getId");var Ou=B(require("pino")),hS=B(require("pino-pretty")),Xf=B(require("dd-trace")),ES=require("dd-trace/ext");var Zf={};N(Zf,{getLogReadStream:()=>Xx,getSingleFileMaxSizeInfo:()=>mS,localFileDestination:()=>Jf});var ro=B(require("fs")),zf=B(require("path")),lS=B(require("rotating-file-stream"));var Hf={};N(Hf,{ObjectStore:()=>tt,ObjectStoreBuckets:()=>gx,SIGNED_FILE_PREFIX:()=>Gf,bucketTTLConfig:()=>du,budibaseTempDir:()=>an,client3rdPartyLibrary:()=>Qx,clientLibraryPath:()=>Kx,clientLibraryUrl:()=>jx,createBucketIfNotExists:()=>to,deleteFile:()=>bx,deleteFiles:()=>xx,deleteFolder:()=>jT,downloadTarball:()=>Px,downloadTarballDirect:()=>vx,enrichPWAImages:()=>Yx,enrichPluginURLs:()=>zx,extractBucketAndPath:()=>kf,getAllFiles:()=>Dx,getAppFileUrl:()=>rS,getClientCacheKey:()=>tS,getGlobalFileS3Key:()=>nS,getGlobalFileUrl:()=>Hx,getObjectMetadata:()=>Nx,getPluginIconKey:()=>oS,getPluginJSKey:()=>sS,getPluginS3Dir:()=>uS,getPresignedUrl:()=>un,getReadStream:()=>fu,listAllObjects:()=>Vf,objectExists:()=>Kf,processAutomationAttachment:()=>Tx,processObjectStoreAttachment:()=>$T,retrieve:()=>QT,retrieveDirectory:()=>Cx,retrieveToTmp:()=>Rx,sanitizeBucket:()=>be,sanitizeKey:()=>pe,streamUpload:()=>KT,streamUploadMany:()=>wx,upload:()=>Ix,uploadDirectory:()=>qf});var mu=require("@aws-sdk/client-s3"),Mf=require("@aws-sdk/lib-storage"),GT=require("@aws-sdk/s3-request-presigner");var Kt=B(require("dd-trace")),ri=B(require("fs")),Xs=B(require("fs/promises")),Ff=B(require("node-fetch")),Tr=require("path"),hu=B(require("stream")),eo=require("stream/promises"),Bf=B(require("tar-fs")),Wf=require("uuid"),$f=B(require("zlib"));var MT=B(require("fs")),FT=require("os"),Zs=B(require("path")),BT=B(require("stream"));var gx={BACKUPS:E.BACKUPS_BUCKET_NAME,APPS:E.APPS_BUCKET_NAME,TEMPLATES:E.TEMPLATES_BUCKET_NAME,GLOBAL:E.GLOBAL_BUCKET_NAME,PLUGINS:E.PLUGIN_BUCKET_NAME,TEMP:E.TEMP_BUCKET_NAME},WT=(0,Zs.join)((0,FT.tmpdir)(),".budibase");try{MT.default.mkdirSync(WT)}catch(t){if(t.code!=="EEXIST")throw t}function an(){return WT}s(an,"budibaseTempDir");var du=s((t,e)=>{let n={Rules:[{ID:`${t}-ExpireAfter${e}days`,Prefix:"",Status:"Enabled",Expiration:{Days:e}}]};return{Bucket:t,LifecycleConfiguration:n}},"bucketTTLConfig");async function yx(t){let e=await fetch(t.url);if(!e.ok||!e.body)throw new Error(`Unexpected response ${e.statusText}`);let r=Zs.default.basename(new URL(t.url).pathname);if(!e.body)throw new Error("No response received for attachment");return{filename:t.filename||r,content:BT.default.Readable.fromWeb(e.body)}}s(yx,"processUrlAttachment");async function $T(t){let e=kf(t.url);if(e===null)throw new Error("Invalid signed URL");let{bucket:r,path:n}=e,{stream:i}=await fu(r,n),o=Zs.default.basename(n);return{bucket:r,path:n,filename:t.filename||o,content:i}}s($T,"processObjectStoreAttachment");async function Tx(t){return t.url?.startsWith("http://")||t.url?.startsWith("https://")?await yx(t):await $T(t)}s(Tx,"processAutomationAttachment");var Sx=require("sanitize-s3-objectkey"),Ax={bucketCreationPromises:{}},Gf="/files/signed",yr={txt:"text/plain",html:"text/html",css:"text/css",js:"application/javascript",json:"application/json",gz:"application/gzip",svg:"image/svg+xml",form:"multipart/form-data"},_x=[yr.html,yr.css,yr.js,yr.json];function pe(t){return Sx(be(t)).replace(/\\/g,"/")}s(pe,"sanitizeKey");function be(t){return t.replace(new RegExp(Ze,"g"),Je)}s(be,"sanitizeBucket");function tt(t={presigning:!1}){let e={forcePathStyle:!0,credentials:{accessKeyId:E.MINIO_ACCESS_KEY,secretAccessKey:E.MINIO_SECRET_KEY},region:E.AWS_REGION};return!E.MINIO_ENABLED&&E.AWS_SESSION_TOKEN&&(e.credentials={accessKeyId:E.MINIO_ACCESS_KEY,secretAccessKey:E.MINIO_SECRET_KEY,sessionToken:E.AWS_SESSION_TOKEN}),E.MINIO_URL&&(t.presigning&&E.MINIO_ENABLED?e.endpoint="http://minio-service":e.endpoint=E.MINIO_URL),new mu.S3(e)}s(tt,"ObjectStore");async function to(t,e){e=be(e);try{return await t.headBucket({Bucket:e}),{created:!1,exists:!0}}catch(r){let n=r.statusCode||r.$response?.statusCode,i=Ax.bucketCreationPromises,o=n===404,a=n===403;if(i[e])return await i[e],{created:!1,exists:!0};if(o||a){if(o)return i[e]=t.createBucket({Bucket:e}).catch(u=>{if(u.Code!=="BucketAlreadyOwnedByYou")throw u}),await i[e],delete i[e],{created:!0,exists:!1};throw new Error("Access denied to object store bucket."+r)}else throw new Error("Unable to write to object store bucket.")}}s(to,"createBucketIfNotExists");var Ox=s((t,e)=>{if(e)return e;let r=t.split(".").pop();return r?yr[r.toLowerCase()]:yr.txt},"resolveContentType"),VT=s(async(t,e,r)=>{let n=be(t),i=tt(),o=await to(i,n);if(r.addTags({bucketCreated:o.created,bucketExists:o.exists}),e&&o.created){let a=du(n,e);await i.putBucketLifecycleConfiguration(a)}return{bucket:n,client:i,bucketCreated:o}},"initialiseBucket"),qT=s(async({client:t,bucket:e,filename:r,stream:n,type:i,extra:o})=>{if(!n)throw new Error("Stream to upload is invalid/undefined");let a=Ox(r,i),u=pe(r),c={Bucket:e,Key:u,Body:n,ContentType:a,...o??{}};return{details:await new Mf.Upload({client:t,params:c}).done(),contentType:a}},"streamUploadInternal");async function Ix({bucket:t,filename:e,path:r,type:n,metadata:i,body:o,ttl:a}){let u=e.split(".").pop(),c=r?(await Xs.default.open(r)).createReadStream():o,l=tt(),d=await to(l,t);if(a&&d.created){let g=du(t,a);await l.putBucketLifecycleConfiguration(g)}let f=n,p=f||(u?yr[u.toLowerCase()]:yr.txt),m={Bucket:be(t),Key:pe(e),Body:c,ContentType:p};if(i&&typeof i=="object"){for(let g of Object.keys(i))(!i[g]||typeof i[g]!="string")&&delete i[g];m.Metadata=i}return new Mf.Upload({client:l,params:m}).done()}s(Ix,"upload");async function KT({bucket:t,stream:e,filename:r,type:n,extra:i,ttl:o}){return await Kt.default.trace("streamUpload",async a=>{a.addTags({bucketName:t,filename:r,type:n,ttl:o});let u=r.split(".").pop();a.addTags({extension:u});let{bucket:c,client:l}=await VT(t,o,a),{details:d,contentType:f}=await qT({client:l,bucket:c,filename:r,stream:e,type:n,extra:i}),p=await l.headObject({Bucket:c,Key:pe(r)});return a.addTags({contentType:f,contentLength:p.ContentLength}),{...d,ContentLength:p.ContentLength}})}s(KT,"streamUpload");async function wx({bucket:t,files:e,ttl:r}){return await Kt.default.trace("streamUploadMany",async i=>{if(i.addTags({bucketName:t,ttl:r,fileCount:e.length}),!e.length)return[];let{bucket:o,client:a}=await VT(t,r,i),u=e.map((l,d)=>({...l,index:d})),c=new Array(e.length);return await St.parallelForeach(u,async l=>{let{details:d}=await qT({client:a,bucket:o,filename:l.filename,stream:l.stream,type:l.type,extra:l.extra});c[l.index]=d},10),c})}s(wx,"streamUploadMany");async function QT(t,e){return await Kt.default.trace("retrieve",async r=>{r.addTags({bucketName:t,filepath:e});let n=tt(),i={Bucket:be(t),Key:pe(e)},o=await n.getObject(i);if(!o.Body)throw new Error("Unable to retrieve object");if(r.addTags({contentLength:o.ContentLength,contentType:o.ContentType}),_x.includes(o.ContentType))return r.addTags({string:!0}),o.Body.transformToString();{r.addTags({string:!1});let a=o.Body.transformToWebStream();return hu.default.Readable.fromWeb(a)}})}s(QT,"retrieve");async function*Vf(t,e){let r=tt(),n=s((a={})=>r.listObjectsV2({...a,Bucket:be(t),Prefix:pe(e)}),"list"),i=!1,o;do{let a={};o&&(a.ContinuationToken=o);let u=await n(a);if(u.Contents)for(let c of u.Contents)yield c;i=!!u.IsTruncated,o=u.NextContinuationToken}while(i&&o)}s(Vf,"listAllObjects");async function Dx(t,e){let r={};return await St.parallelForeach(Vf(t,e),async n=>{if(!n.Key)throw new Error("file.Key must be defined");r[n.Key]=n},5),r}s(Dx,"getAllFiles");async function un(t,e,r=3600){let n=tt({presigning:!0}),i={Bucket:be(t),Key:pe(e)},o=await(0,GT.getSignedUrl)(n,new mu.GetObjectCommand(i),{expiresIn:r});if(E.MINIO_ENABLED){let a=new URL(o),u=a.pathname,c=a.search;return`${Gf}${u}${c}`}else return o}s(un,"getPresignedUrl");async function Rx(t,e){return await Kt.default.trace("retrieveToTmp",async r=>{r.addTags({bucketName:t,filepath:e}),t=be(t),e=pe(e);let n=await QT(t,e),i=(0,Tr.join)(an(),(0,Wf.v4)());return r.addTags({outputPath:i}),n instanceof hu.default.Readable?(r.addTags({stream:!0}),await(0,eo.pipeline)(n,ri.default.createWriteStream(i))):(r.addTags({stream:!1}),ri.default.writeFileSync(i,n)),i})}s(Rx,"retrieveToTmp");async function Cx(t,e,r){return await Kt.default.trace("retrieveDirectory",async n=>{n.addTags({bucketName:t,path:e});let i=(0,Tr.join)(an(),(0,Wf.v4)());await Xs.default.mkdir(i,{recursive:!0});let o=0;return await St.parallelForeach(Vf(t,e),async a=>{let{Key:u}=a;!u||r?.some(c=>c.test(u))||(o++,await Kt.default.trace("retrieveDirectory.object",async c=>{let l=a.Key;c.addTags({filename:l});let{stream:d}=await fu(t,l),f=l.split("/"),p=f.slice(0,f.length-1),m=(0,Tr.join)(i,...p);f.length>1&&!ri.default.existsSync(m)&&await Xs.default.mkdir(m,{recursive:!0}),await(0,eo.pipeline)(d,ri.default.createWriteStream((0,Tr.join)(i,...f),{mode:420}))}))},5),n.addTags({numObjects:o}),i})}s(Cx,"retrieveDirectory");async function bx(t,e){let r=tt();await to(r,t);let n={Bucket:t,Key:pe(e)};return r.deleteObject(n)}s(bx,"deleteFile");async function xx(t,e){let r=tt();await to(r,t);let n={Bucket:t,Delete:{Objects:e.map(i=>({Key:pe(i)}))}};return r.deleteObjects(n)}s(xx,"deleteFiles");async function jT(t,e){t=be(t),e=pe(e);let r=tt(),n={Bucket:t,Prefix:e},i=await r.listObjects(n);if(i.Contents?.length===0)return;let o={Bucket:t,Delete:{Objects:[]}};if(i.Contents?.forEach(a=>{o.Delete.Objects.push({Key:a.Key})}),o.Delete.Objects.length&&(await r.deleteObjects(o)).Deleted?.length===1e3)return jT(t,e)}s(jT,"deleteFolder");async function qf(t,e,r){return await Kt.default.trace("uploadDirectory",async n=>{n.addTags({bucketName:t,localPath:e,bucketPath:r}),t=be(t);let i=await Xs.default.readdir(e,{withFileTypes:!0});n.addTags({numFiles:i.length});for(let o of i){let a=pe((0,Tr.join)(r,o.name)),u=(0,Tr.join)(e,o.name);o.isDirectory()?await qf(t,u,a):await KT({bucket:t,filename:a,stream:ri.default.createReadStream(u)})}return i})}s(qf,"uploadDirectory");async function vx(t,e,r={}){e=pe(e);let n=await(0,Ff.default)(t,{headers:r});if(!n.ok)throw new Error(`unexpected response ${n.statusText}`);await(0,eo.pipeline)(n.body,$f.default.createUnzip(),Bf.default.extract(e))}s(vx,"downloadTarballDirect");async function Px(t,e,r){e=be(e),r=pe(r);let n=await(0,Ff.default)(t);if(!n.ok)throw new Error(`unexpected response ${n.statusText}`);let i=(0,Tr.join)(an(),r);return await(0,eo.pipeline)(n.body,$f.default.createUnzip(),Bf.default.extract(i)),!E.isTest()&&E.SELF_HOSTED&&await qf(e,i,r),i}s(Px,"downloadTarball");async function fu(t,e){return await Kt.default.trace("getReadStream",async r=>{t=be(t),e=pe(e),r.addTags({bucketName:t,path:e});let n=tt(),i={Bucket:t,Key:e},o=await n.getObject(i);if(!o.Body||!(o.Body instanceof hu.default.Readable))throw new Error("Unable to retrieve stream - invalid response");return r.addTags({contentLength:o.ContentLength,contentType:o.ContentType}),{stream:o.Body,contentLength:o.ContentLength,contentType:o.ContentType}})}s(fu,"getReadStream");async function Nx(t,e){t=be(t),e=pe(e);let r=tt(),n={Bucket:t,Key:e};try{return await r.headObject(n)}catch{throw new Error("Unable to retrieve metadata from object")}}s(Nx,"getObjectMetadata");async function Kf(t,e){t=be(t),e=pe(e);let r=tt(),n={Bucket:t,Key:e};try{return await r.headObject(n),!0}catch(i){if((i.statusCode||i.$response?.statusCode)===404)return!1;throw i}}s(Kf,"objectExists");function kf(t){let e=t.split("?")[0],r=new RegExp(`^${Gf}/(?<bucket>[^/]+)/(?<path>.+)$`),n=e.match(r);if(n&&n.groups){let{bucket:i,path:o}=n.groups;return{bucket:i,path:o}}return null}s(kf,"extractBucketAndPath");var eS=B(require("querystring"));var Au={};N(Au,{FlagSet:()=>gu,all:()=>Fx,flags:()=>Qf,getEnvFlags:()=>JT,init:()=>Lx,isEnabled:()=>Su,parseEnvFlags:()=>Tu,shutdown:()=>kx,testutils:()=>jf});var yu=B(require("crypto")),YT=B(require("dd-trace")),HT=require("lodash"),zT=require("posthog-node");var Eu;function Lx(t){E.POSTHOG_TOKEN&&E.POSTHOG_API_HOST&&!E.SELF_HOSTED&&E.POSTHOG_FEATURE_FLAGS_ENABLED?(console.log("initializing posthog client..."),Eu=new zT.PostHog(E.POSTHOG_TOKEN,{host:E.POSTHOG_API_HOST,personalApiKey:E.POSTHOG_PERSONAL_TOKEN,featureFlagsPollingInterval:Ee.fromMinutes(3).toMs(),...t})):console.log("posthog disabled")}s(Lx,"init");function kx(){Eu?.shutdown()}s(kx,"shutdown");function Tu(t){let e=t.split(",").map(n=>n.split(":")),r=[];for(let[n,...i]of e)for(let o of i){let a=!0;o.startsWith("!")&&(o=o.slice(1),a=!1),r.push({tenantId:n,key:o,value:a})}return r}s(Tu,"parseEnvFlags");function JT(){return Tu(E.TENANT_FEATURE_FLAGS||"")}s(JT,"getEnvFlags");var gu=class{constructor(e){this.flagSchema=e;this.setId=yu.randomUUID()}static{s(this,"FlagSet")}defaults(){return(0,HT.cloneDeep)(this.flagSchema)}isFlagName(e){return this.flagSchema[e]!==void 0}async isEnabled(e){return(await this.fetch())[e]}async fetch(){return await YT.default.trace("features.fetch",async e=>{let r=sf(this.setId);if(r)return e?.addTags({fromCache:!0}),r;let n={},i=this.defaults(),o=q(),a=new Set;if(za())return i;for(let{tenantId:f,key:p,value:m}of JT())if(!(!f||f!=="*"&&f!==o)&&(n.readFromEnvironmentVars=!0,m===!1&&a.add(p),!!this.isFlagName(p))){if(typeof i[p]!="boolean")throw new Error(`Feature: ${p} is not a boolean`);i[p]=m,n[`flags.${p}.source`]="environment"}let u=Ft(),c=u?._id;if(!c){let f=rf();f&&(c=yu.createHash("sha512").update(f).digest("hex"))}let l=u?.tenantId;if(l||(l=o),n["identity.type"]=u?.type,n["identity._id"]=u?._id,n.tenantId=l,n.userId=c,Eu&&c){n.readFromPostHog=!0;let f=await ni(),p={tenantId:l},m={tenant:{id:l}};f.config.createdVersion&&(m.tenant.createdVersion=f.config.createdVersion),f.createdAt&&(m.tenant.createdAt=`${f.createdAt}`);let h=await Eu.getAllFlags(c,{personProperties:p,onlyEvaluateLocally:!0,groups:{tenant:l},groupProperties:m});for(let[g,y]of Object.entries(h))if(this.isFlagName(g)){if(typeof y!="boolean"){console.warn(`Invalid value for posthog flag "${g}": ${y}`);continue}if(!(i[g]===!0||a.has(g)))try{i[g]=y,n[`flags.${g}.source`]="posthog"}catch(S){console.warn(`Error parsing posthog flag "${g}": ${y}`,S)}}}let d=af();for(let[f,p]of Object.entries(d))this.isFlagName(f)&&typeof p=="boolean"&&(i[f]=p,n[`flags.${f}.source`]="override");of(this.setId,i);for(let[f,p]of Object.entries(i))n[`flags.${f}.value`]=p;return e?.addTags(n),i})}},Mx={USE_ZOD_VALIDATOR:!1,AI_AGENTS:!1,ESM_CLIENT:!1,DEBUG_UI:E.isDev(),DEV_USE_CLIENT_FROM_STORAGE:!1,DUPLICATE_APP:!1,COPY_RESOURCES_BETWEEN_WORKSPACES:!1},Qf=new gu(Mx);async function Su(t){return await Qf.isEnabled(t)}s(Su,"isEnabled");async function Fx(){return await Qf.fetch()}s(Fx,"all");var jf={};N(jf,{setFeatureFlags:()=>ZT,withFeatureFlags:()=>$x});function Bx(){let t={};for(let{tenantId:e,key:r,value:n}of Tu(process.env.TENANT_FEATURE_FLAGS||"")){let i=t[e]||{};i[r]!==!1&&(i[r]=n,t[e]=i)}return t}s(Bx,"getCurrentFlags");function Wx(t){let e=[];for(let[r,n]of Object.entries(t))for(let[i,o]of Object.entries(n))o===!1?e.push(`${r}:!${i}`):e.push(`${r}:${i}`);return e.join(",")}s(Wx,"buildFlagString");function ZT(t,e){let r=Bx();for(let[i,o]of Object.entries(e)){let a=r[t]||{};a[i]=o,r[t]=a}let n=Wx(r);return As({TENANT_FEATURE_FLAGS:n})}s(ZT,"setFeatureFlags");function $x(t,e,r){let n=ZT(t,e),i=r();return i instanceof Promise?i.finally(n):(n(),i)}s($x,"withFeatureFlags");var XT=B(require("aws-cloudfront-sign"));var _u;function Gx(){if(!E.CLOUDFRONT_PRIVATE_KEY_64)throw new Error("CLOUDFRONT_PRIVATE_KEY_64 is not set");return _u||(_u=Buffer.from(E.CLOUDFRONT_PRIVATE_KEY_64,"base64").toString("utf-8"),_u)}s(Gx,"getPrivateKey");var Vx=s(()=>({keypairId:E.CLOUDFRONT_PUBLIC_KEY_ID,privateKeyString:Gx(),expireTime:new Date().getTime()+1e3*60*60*24}),"getCloudfrontSignParams"),ii=s(t=>{let e=qx(t);return XT.getSignedUrl(e,Vx())},"getPresignedUrl"),qx=s(t=>{let e="/";return t.startsWith("/")&&(e=""),`${E.CLOUDFRONT_CDN}${e}${t}`},"getUrl");async function Kx(t){let e=`${pe(t)}/budibase-client.js`,r=`${pe(t)}/budibase-client.esm.js`;return await Su("ESM_CLIENT")&&await Kf(E.APPS_BUCKET_NAME,r)?r:e}s(Kx,"clientLibraryPath");function Qx(t,e){return`${pe(t)}/${e}`}s(Qx,"client3rdPartyLibrary");async function jx(t,e){return`/api/assets/${t}/client?${await tS(e)}`}s(jx,"clientLibraryUrl");async function tS(t){let e,r;try{e=q()}finally{r={version:t}}return e&&e!==ae&&(r.tenantId=e),r.dynamic=await Su("ESM_CLIENT"),eS.default.encode(r)}s(tS,"getClientCacheKey");async function rS(t){return E.CLOUDFRONT_CDN?ii(t):await un(E.APPS_BUCKET_NAME,t)}s(rS,"getAppFileUrl");async function Yx(t){if(t.length===0)return[];try{return await Promise.all(t.map(async e=>({...e,src:await rS(e.src),type:e.type||"image/png"})))}catch(e){return console.error("Error enriching PWA images:",e),t}}s(Yx,"enrichPWAImages");var Hx=s(async(t,e,r)=>{let n=nS(t,e);return E.CLOUDFRONT_CDN?(r&&(n=`${n}?etag=${r}`),ii(n)):await un(E.GLOBAL_BUCKET_NAME,n)},"getGlobalFileUrl"),nS=s((t,e)=>{let r=`${t}/${e}`;return E.MULTI_TENANCY&&(r=`${q()}/${r}`),r},"getGlobalFileS3Key");async function zx(t){return!t||!t.length?[]:await Promise.all(t.map(async e=>{let r=await Jx(e),n=await Zx(e);return{...e,jsUrl:r,iconUrl:n}}))}s(zx,"enrichPluginURLs");async function Jx(t){let e=sS(t);return iS(e)}s(Jx,"getPluginJSUrl");async function Zx(t){let e=oS(t);if(e)return iS(e)}s(Zx,"getPluginIconUrl");async function iS(t){return E.CLOUDFRONT_CDN?ii(t):await un(E.PLUGIN_BUCKET_NAME,t)}s(iS,"getPluginUrl");function sS(t){return aS(t,"plugin.min.js")}s(sS,"getPluginJSKey");function oS(t){let e=t.iconUrl?"icon.svg":t.iconFileName;if(e)return aS(t,e)}s(oS,"getPluginIconKey");function aS(t,e){return`${uS(t.name)}/${e}`}s(aS,"getPluginS3Key");function uS(t){let e=`${t}`;return E.MULTI_TENANCY&&(e=`${q()}/${e}`),E.CLOUDFRONT_CDN&&(e=`plugins/${e}`),e}s(uS,"getPluginS3Dir");var dS="budibase.log",fS="budibase-logs-history.txt",pS=zf.default.join(an(),"systemlogs");function cS(t){return zf.default.join(pS,t)}s(cS,"getFullPath");function mS(t){let e=/(\d+)([A-Za-z])/,r=t?.match(e);if(!r){console.warn("totalMaxSize does not have a valid value",{totalMaxSize:t});return}let n=+r[1],i=r[2];if(n===1)switch(i){case"B":return{size:`${n}B`,totalHistoryFiles:1};case"K":return{size:`${n*1e3/2}B`,totalHistoryFiles:1};case"M":return{size:`${n*1e3/2}K`,totalHistoryFiles:1};case"G":return{size:`${n*1e3/2}M`,totalHistoryFiles:1};default:return}return n%2===0?{size:`${n/2}${i}`,totalHistoryFiles:1}:{size:`1${i}`,totalHistoryFiles:n-1}}s(mS,"getSingleFileMaxSizeInfo");function Jf(){let t=mS(E.ROLLING_LOG_MAX_SIZE);return lS.createStream(dS,{size:t?.size,path:pS,maxFiles:t?.totalHistoryFiles||1,immutable:!0,history:fS,initialRotation:!1})}s(Jf,"localFileDestination");function Xx(){let t=[],e=cS(fS);if(ro.default.existsSync(e)){let i=ro.default.readFileSync(e,"utf-8").split(`
37
+ `);for(let o of i.filter(a=>a))t.push(ro.default.readFileSync(o))}return t.push(ro.default.readFileSync(cS(dS))),Buffer.concat(t.map(n=>new Uint8Array(n)))}s(Xx,"getLogReadStream");function ev(t){return typeof t=="object"&&t!==null&&!(t instanceof Error)}s(ev,"isPlainObject");function tv(t){return t instanceof Error}s(tv,"isError");function rv(t){return typeof t=="string"}s(rv,"isMessage");var Sr;if(!E.DISABLE_PINO_LOGGER){let t=E.LOG_LEVEL,e={level:t,formatters:{level:c=>({level:c.toUpperCase()}),bindings:()=>E.SELF_HOSTED?{service:E.SERVICE_NAME}:{}},timestamp:()=>`,"timestamp":"${new Date(Date.now()).toISOString()}"`},r=[];r.push(E.isDev()?{stream:(0,hS.default)({singleLine:!0}),level:t}:{stream:process.stdout,level:t}),E.SELF_HOSTED&&r.push({stream:Jf(),level:t}),Sr=r.length?(0,Ou.default)(e,Ou.default.multistream(r)):(0,Ou.default)(e);let n=s(c=>{let l,d=[],f="";c.forEach(y=>{rv(y)&&(f=`${f} ${y}`.trimStart()),ev(y)&&d.push(y),tv(y)&&(l=y)});let p=u(),m={};m={tenantId:i(),appId:o(),automationId:a(),identityId:p?._id,identityType:p?.type,correlationId:Lf()};let h=Xf.default.scope().active();h&&Xf.default.inject(h.context(),ES.formats.LOG,m);let g={err:l,pid:process.pid,...m};if(d.length){let y={},S=0;for(let O=0;O<d.length;O++){let _=d[O],w=_._logKey;w?(delete _._logKey,g[w]=_):(y[S]=_,S++)}Object.keys(y).length&&(g.data=y)}return[g,f]},"getLogParams");console.log=(...c)=>{let[l,d]=n(c);Sr?.info(l,d)},console.info=(...c)=>{let[l,d]=n(c);Sr?.info(l,d)},console.warn=(...c)=>{let[l,d]=n(c);Sr?.warn(l,d)},console.error=(...c)=>{let[l,d]=n(c);Sr?.error(l,d)},console.trace=(...c)=>{let[l,d]=n(c);l.err||(l.err=new Error),Sr?.trace(l,d)},console.debug=(...c)=>{let[l,d]=n(c);Sr?.debug(l,d)};let i=s(()=>{let c;try{c=q()}catch{}return c},"getTenantId"),o=s(()=>{let c;try{c=Le()}catch{}return c},"getAppId"),a=s(()=>{let c;try{c=tf()}catch{}return c},"getAutomationId"),u=s(()=>{let c;try{c=Ft()}catch{}return c},"getIdentity")}var Iu=Sr;var nv=["AccountError"];function iv(t){return t&&t.suppressAlert}s(iv,"isSuppressed");function cn(t,e){e&&nv.includes(e.name)&&iv(e)||console.error(`bb-alert: ${t}`,e)}s(cn,"logAlert");function sv(t,e,r,n){t=`${t} - db: ${e} - doc: ${r} - error: `,cn(t,n)}s(sv,"logAlertWithInfo");function si(t,e){console.warn(`bb-warn: ${t}`,e)}s(si,"logWarn");var wu=class extends Error{static{s(this,"UnretriableError")}constructor(e){super(e),this.name="PermanentError"}},ep=class{static{s(this,"QueuedProcessor")}constructor(e,r={}){let{maxAttempts:n=3,removeOnFail:i=!0,removeOnComplete:o=!0,maxStalledCount:a=3}=r;this.waitForCompletionMs=r.waitForCompletionMs||1e4,this._queue=new ht(e,{maxStalledCount:a,jobOptions:{attempts:n,removeOnFail:i,removeOnComplete:o}}),this._queue.process(async(u,c)=>{try{let l=await this.processFn(u.data);c?.(null,l)}catch(l){l instanceof wu&&await u.discard(),cn(`Failed to process job in ${this._queue.name}`,l),c?.(l)}})}async close(e){await this._queue.close(e)}async execute(e){try{let r=await this._queue.add(e);return{success:!0,result:await Ne.withTimeout(this.waitForCompletionMs,()=>r.finished())}}catch(r){if(r.errno!=="ETIME")throw r;return{success:!1,reason:"timeout"}}}};var ov=100,Du,io=class t{static{s(this,"DocWritethroughProcessor")}static get queue(){return t._queue||(t._queue=new ht("docWritethroughQueue",{jobOptions:{attempts:ov}})),t._queue}init(){return t.queue.process(async e=>{try{await this.persistToDb(e.data)}catch(r){throw r.status===409?new Error(`Conflict persisting message ${e.id}. Attempt ${e.attemptsMade}`):r}}),this}async persistToDb({dbName:e,docId:r,data:n}){if(r.startsWith("scimlog"))return;let i=De(e),o;try{o=await i.get(r)}catch{o={_id:r}}o={...o,...n},await i.put(o)}},rp=class{static{s(this,"DocWritethrough")}constructor(e,r){this.db=e,this._docId=r}get docId(){return this._docId}async patch(e){await io.queue.add({dbName:this.db.name,docId:this.docId,data:e})}};function gS(){return Du=new io().init(),Du}s(gS,"init");function av(){return Du||gS()}s(av,"getProcessor");var oo={};N(oo,{CacheKey:()=>ye,TTL:()=>fn,bustCache:()=>oi,destroy:()=>so,get:()=>pn,keys:()=>Ru,store:()=>jt,withCache:()=>Ar,withCacheWithDynamicTTL:()=>yS});function Dt(t){let e=q();return`${t}:${e}`}s(Dt,"generateTenantKey");var ln=class{static{s(this,"BaseCache")}constructor(e=void 0){this.client=e}async getClient(){return this.client?this.client:await df()}async keys(e){return(await this.getClient()).keys(e)}async exists(e,r={useTenancy:!0}){return e=r.useTenancy?Dt(e):e,(await this.getClient()).exists(e)}async scan(e,r={useTenancy:!0}){return e=r.useTenancy?Dt(e):e,(await this.getClient()).scan(e)}async get(e,r={useTenancy:!0}){return e=r.useTenancy?Dt(e):e,(await this.getClient()).get(e)}async bulkGet(e,r={useTenancy:!0}){return e=r.useTenancy?e.map(i=>Dt(i)):e,(await this.getClient()).bulkGet(e)}async store(e,r,n=null,i={useTenancy:!0}){e=i.useTenancy?Dt(e):e,await(await this.getClient()).store(e,r,n)}async bulkStore(e,r=null,n={useTenancy:!0}){n.useTenancy&&(e=Object.entries(e).reduce((o,[a,u])=>(o[Dt(a)]=u,o),{})),await(await this.getClient()).bulkStore(e,r)}async delete(e,r={useTenancy:!0}){return e=r.useTenancy?Dt(e):e,(await this.getClient()).delete(e)}async bulkDelete(e,r={useTenancy:!0}){return e=r.useTenancy?e.map(i=>Dt(i)):e,(await this.getClient()).bulkDelete(e)}async withCache(e,r=null,n,i={useTenancy:!0}){let o=await this.get(e,i);if(o)return o;try{let a=await n();return await this.store(e,a,r,i),a}catch(a){throw console.error("Error fetching before cache - ",a),a}}async withCacheWithDynamicTTL(e,r,n={useTenancy:!0}){let i=await this.get(e,n);if(i)return i;try{let o=await r(),{value:a,ttl:u}=o;return await this.store(e,a,u,{useTenancy:n.useTenancy}),a}catch(o){throw console.error("Error fetching before cache - ",o),o}}async bustCache(e){let r=await this.getClient();try{await r.delete(Dt(e))}catch(n){throw console.error("Error busting cache - ",n),n}}async deleteIfValue(e,r,n={useTenancy:!0}){e=n.useTenancy?Dt(e):e,await(await this.getClient()).deleteIfValue(e,r)}};var dn=new ln,ye={CHECKLIST:"checklist",INSTALLATION:"installation",ANALYTICS_ENABLED:"analyticsEnabled",UNIQUE_TENANT_ID:"uniqueTenantId",EVENTS:"events",BACKFILL_METADATA:"backfillMetadata",EVENTS_RATE_LIMIT:"eventsRateLimit",OAUTH2_TOKEN:t=>`oauth2Token_${t}`},fn=(n=>(n[n.ONE_MINUTE=600]="ONE_MINUTE",n[n.ONE_HOUR=3600]="ONE_HOUR",n[n.ONE_DAY=86400]="ONE_DAY",n))(fn||{}),Ru=s((...t)=>dn.keys(...t),"keys"),pn=s((...t)=>dn.get(...t),"get"),jt=s((...t)=>dn.store(...t),"store"),so=s((...t)=>dn.delete(...t),"destroy"),Ar=s((...t)=>dn.withCache(...t),"withCache"),yS=s((...t)=>dn.withCacheWithDynamicTTL(...t),"withCacheWithDynamicTTL"),oi=s((...t)=>dn.bustCache(...t),"bustCache");var sp={};N(sp,{createCode:()=>cv,deleteCode:()=>dv,getCode:()=>lv,getExistingInvites:()=>ip,getInviteCodes:()=>SS,updateCode:()=>uv});var TS=Ee.fromDays(7).toSeconds();async function uv(t,e){await(await rn()).store(t,e,TS)}s(uv,"updateCode");async function cv(t,e){let r=ne();return await(await rn()).store(r,{email:t,info:e},TS),r}s(cv,"createCode");async function lv(t){let r=await(await rn()).get(t);if(!r)throw"Invitation is not valid or has expired, please request a new one.";return r}s(lv,"getCode");async function dv(t){await(await rn()).delete(t)}s(dv,"deleteCode");async function SS(){let r=(await(await rn()).scan()).map(i=>({...i.value,code:i.key}));if(!E.MULTI_TENANCY)return r;let n=q();return r.filter(i=>n===i.info.tenantId)}s(SS,"getInviteCodes");async function ip(t){return(await SS()).filter(e=>t.includes(e.email))}s(ip,"getExistingInvites");var op={};N(op,{createCode:()=>pv,getCode:()=>mv,invalidateCode:()=>hv});var fv=Ee.fromHours(1).toSeconds();async function pv(t,e){let r=ne();return await(await Fs()).store(r,{userId:t,info:e},fv),r}s(pv,"createCode");async function mv(t){let r=await(await Fs()).get(t);if(!r)throw new Error("Provided information is not valid, cannot reset password - please try again.");return r}s(mv,"getCode");async function hv(t){await(await Fs()).delete(t)}s(hv,"invalidateCode");var wr={};N(wr,{getUser:()=>Do,getUsers:()=>KU,invalidateUser:()=>Ro});var ao={};N(ao,{getPlatformDB:()=>_r,users:()=>Et});var Et={};N(Et,{addSsoUser:()=>_S,addUser:()=>Av,getUserDoc:()=>AS,lookupTenantId:()=>Ev,removeUser:()=>_v,updateUserDoc:()=>gv});function _r(){return De(fe.PLATFORM_INFO.name)}s(_r,"getPlatformDB");async function Ev(t){return E.MULTI_TENANCY?(await AS(t)).tenantId:ae}s(Ev,"lookupTenantId");async function AS(t){return _r().get(t)}s(AS,"getUserDoc");async function gv(t){await _r().put(t)}s(gv,"updateUserDoc");function yv(t,e){return{_id:t,tenantId:e}}s(yv,"newUserIdDoc");function Tv(t,e,r){return{_id:e,userId:t,tenantId:r}}s(Tv,"newUserEmailDoc");function Sv(t,e,r,n){return{_id:t,userId:r,email:e,tenantId:n}}s(Sv,"newUserSsoIdDoc");async function ap(t,e){let r=_r(),n;try{await r.get(t)}catch(i){if(i.status===404)n=e(),await r.put(n);else throw i}}s(ap,"addUserDoc");async function _S(t,e,r,n){return ap(t,()=>Sv(t,e,r,n))}s(_S,"addSsoUser");async function Av(t,e,r,n){let i=[ap(e,()=>yv(e,t)),ap(r,()=>Tv(e,r,t))];n&&i.push(_S(n,r,e,t)),await Promise.all(i)}s(Av,"addUser");async function _v(t){let e=_r(),r=[t._id,t.email],n=await e.allDocs({keys:r,include_docs:!0});await e.bulkRemove(n.rows.map(i=>i.doc),{silenceErrors:!0})}s(_v,"removeUser");var mn={};N(mn,{getAccount:()=>Or,getAccountByTenantId:()=>ai,getStatus:()=>Ov});var OS=B(require("node-fetch"));var uo=class{static{s(this,"API")}constructor(e){this.host=e}async apiCall(e,r,n){n.headers||(n.headers={}),n.headers["Content-Type"]||(n.headers={"Content-Type":"application/json",Accept:"application/json",...n.headers});let i=n.headers["Content-Type"]==="application/json";Js.setHeader(n.headers);let o={method:e,body:i?JSON.stringify(n.body):n.body,headers:n.headers,credentials:"include"};return await(0,OS.default)(`${this.host}${r}`,o)}async post(e,r){return this.apiCall("POST",e,r)}async get(e,r){return this.apiCall("GET",e,r)}async patch(e,r){return this.apiCall("PATCH",e,r)}async del(e,r){return this.apiCall("DELETE",e,r)}async put(e,r){return this.apiCall("PUT",e,r)}};var up=new uo(E.INTERNAL_ACCOUNT_PORTAL_URL),cp=E.SELF_HOSTED||E.DISABLE_ACCOUNT_PORTAL,Or=s(async t=>{if(cp)return;let e={email:t},r=await up.post("/api/accounts/search",{body:e,headers:{"x-budibase-api-key":E.ACCOUNT_PORTAL_API_KEY}});if(r.status!==200)throw new Error(`Error getting account by email ${t}`);return(await r.json())[0]},"getAccount"),ai=s(async t=>{if(cp)return;let e={tenantId:t},r=await up.post("/api/accounts/search",{body:e,headers:{"x-budibase-api-key":E.ACCOUNT_PORTAL_API_KEY}});if(r.status!==200)throw new Error(`Error getting account by tenantId ${t}`);return(await r.json())[0]},"getAccountByTenantId"),Ov=s(async()=>{if(cp)return;let t=await up.get("/api/status",{headers:{"x-budibase-api-key":E.ACCOUNT_PORTAL_API_KEY}}),e=await t.json();if(t.status!==200)throw new Error("Error getting status");return e},"getStatus");var mi={};N(mi,{UserDB:()=>Ct,addAppBuilder:()=>$U,bulkGetGlobalUsersById:()=>Ju,bulkUpdateGlobalUsers:()=>Oo,cleanseUserObject:()=>vp,creatorsInList:()=>gn,doesUserExist:()=>kU,getAccountHolderFromUsers:()=>zu,getAllUserIds:()=>UU,getAllUsers:()=>LU,getById:()=>yn,getCreatorCount:()=>BU,getExistingAccounts:()=>pi,getExistingPlatformUsers:()=>lA,getExistingTenantUsers:()=>cA,getFirstPlatformUser:()=>Ao,getGlobalUserByAppPage:()=>EA,getGlobalUserByEmail:()=>Tt,getPlatformUsers:()=>Qu,getUserCount:()=>FU,hasAdminPermissions:()=>Ir,hasAppBuilderPermissions:()=>pA,hasBuilderPermissions:()=>ke,isAdmin:()=>Rt,isAdminOrBuilder:()=>fA,isAdminOrWorkspaceBuilder:()=>ju,isBuilder:()=>Ei,isCreatorAsync:()=>_o,isCreatorSync:()=>Yu,isGlobalBuilder:()=>dA,paginatedUsers:()=>yA,removeAppBuilder:()=>GU,removePortalUserPermissions:()=>WU,searchExistingEmails:()=>Dp,searchGlobalUsersByApp:()=>Zu,searchGlobalUsersByAppAccess:()=>xp,searchGlobalUsersByEmail:()=>gA,validateUniqueUser:()=>Hu});var ku={};N(ku,{BadRequestError:()=>xu,BudibaseError:()=>ui,EmailUnavailableError:()=>Yt,FeatureDisabledError:()=>Uu,ForbiddenError:()=>vu,HTTPError:()=>we,InvalidAPIKeyError:()=>ci,NotFoundError:()=>bu,NotImplementedError:()=>Pu,UnexpectedError:()=>Cu,UsageLimitError:()=>Nu,getPublicError:()=>Lu});var ui=class extends Error{constructor(r,n){super(r);this.code=n}static{s(this,"BudibaseError")}},Lu=s(t=>{let e;return t.code&&(e={code:t.code},t.getPublicError&&(e={...e,...t.getPublicError()})),e},"getPublicError"),we=class t extends ui{constructor(r,n,i="http"){super(r,i);this.status=n}static{s(this,"HTTPError")}static async fromResponse(r){let n=await r.text(),i=n,o=r.status,a="http";try{let u=JSON.parse(n);i=u.message,o=u.status,a=u.error?.code}catch{}return new t(i,o,a)}},Cu=class extends we{static{s(this,"UnexpectedError")}constructor(e){super(e,500)}},bu=class extends we{static{s(this,"NotFoundError")}constructor(e){super(e,404)}},xu=class extends we{static{s(this,"BadRequestError")}constructor(e){super(e,400)}},vu=class extends we{static{s(this,"ForbiddenError")}constructor(e){super(e,403)}},Pu=class extends we{static{s(this,"NotImplementedError")}constructor(e){super(e,501)}},Nu=class extends we{constructor(r,n){super(r,400,"usage_limit_exceeded");this.limitName=n}static{s(this,"UsageLimitError")}getPublicError(){return{limitName:this.limitName}}},Uu=class extends we{constructor(r,n){super(r,400,"feature_disabled");this.featureName=n}static{s(this,"FeatureDisabledError")}getPublicError(){return{featureName:this.featureName}}},ci=class extends ui{static{s(this,"InvalidAPIKeyError")}constructor(){super("Invalid API key - may need re-generated, or user doesn't exist","invalid_api_key")}},Yt=class extends Error{static{s(this,"EmailUnavailableError")}constructor(e){super(`Email already in use: '${e}'`)}};var pp={};N(pp,{PASSWORD_MAX_LENGTH:()=>dp,PASSWORD_MIN_LENGTH:()=>lp,validatePassword:()=>fp});var lp=+(E.PASSWORD_MIN_LENGTH||12),dp=+(E.PASSWORD_MAX_LENGTH||512);function fp(t){return!t||t.length<lp?{valid:!1,error:`Password invalid. Minimum ${lp} characters.`}:t.length>dp?{valid:!1,error:`Password invalid. Maximum ${dp} characters.`}:{valid:!0}}s(fp,"validatePassword");var Mu={};N(Mu,{createASession:()=>wv,endSession:()=>Dv,getSession:()=>hp,getSessionsForUser:()=>co,invalidateSessions:()=>hn,updateSessionTTL:()=>mp});var wS=require("uuid");var DS=E.SESSION_EXPIRY_SECONDS?parseInt(E.SESSION_EXPIRY_SECONDS):Ee.fromDays(7).toSeconds();function li(t,e){return`${t}/${e}`}s(li,"makeSessionID");async function co(t){return t?(await(await mr()).scan(t)).map(n=>n.value):(console.trace("Cannot get sessions for undefined userId"),[])}s(co,"getSessionsForUser");async function hn(t,e={}){try{let r=e?.reason||"unknown",n=e.sessionIds||[],i;if(n.length===0?i=(await co(t)).map(a=>({key:li(a.userId,a.sessionId)})):(n=Array.isArray(n)?n:[n],i=n.map(o=>({key:li(t,o)}))),i&&i.length>0){let o=await mr(),a=[];for(let u of i)a.push(o.delete(u.key));E.isTest()||si(`Invalidating sessions for ${t} (reason: ${r}) - ${i.map(u=>u.key).join(", ")}`),await Promise.all(a)}}catch(r){console.error(`Error invalidating sessions: ${r}`)}}s(hn,"invalidateSessions");async function wv(t,e){let r=await co(t),n=0;if(r.length>=3){let l=r.sort((p,m)=>new Date(p.createdAt).getTime()-new Date(m.createdAt).getTime()),d=r.length-3+1,f=l.slice(0,d).map(p=>p.sessionId);n=f.length,await hn(t,{sessionIds:f,reason:"session limit exceeded"})}let i=await mr(),o=e.sessionId,a=e.csrfToken?e.csrfToken:(0,wS.v4)(),u=li(t,o),c={...e,csrfToken:a,createdAt:new Date().toISOString(),lastAccessedAt:new Date().toISOString(),userId:t};return await i.store(u,c,DS),{session:c,invalidatedSessionCount:n}}s(wv,"createASession");async function mp(t){let e=await mr(),r=li(t.userId,t.sessionId);t.lastAccessedAt=new Date().toISOString(),await e.store(r,t,DS)}s(mp,"updateSessionTTL");async function Dv(t,e){await(await mr()).delete(li(t,e))}s(Dv,"endSession");async function hp(t,e){if(!t||!e)throw new Error(`Invalid session details - ${t} - ${e}`);let n=await(await mr()).get(li(t,e));if(!n)throw new Error(`Session not found - ${t} - ${e}`);return n}s(hp,"getSession");var fi={};N(fi,{account:()=>FS,action:()=>BS,ai:()=>WS,analytics:()=>Bu,app:()=>$S,asyncEventQueue:()=>gt,auditLog:()=>GS,auth:()=>Ku,automation:()=>VS,backfill:()=>qS,backfillCache:()=>Gu,backup:()=>KS,datasource:()=>QS,email:()=>jS,environmentVariable:()=>YS,group:()=>HS,identification:()=>yt,initAsyncEvents:()=>AU,installation:()=>ho,layout:()=>zS,license:()=>JS,org:()=>ZS,plugin:()=>XS,processors:()=>Ap,publishEvent:()=>A,query:()=>eA,resource:()=>tA,role:()=>So,rowAction:()=>rA,rows:()=>nA,screen:()=>iA,serve:()=>sA,shutdown:()=>_U,table:()=>oA,user:()=>Me,view:()=>aA,workspace:()=>uA});var Bu={};N(Bu,{enabled:()=>Fu});var Fu=s(async()=>Wu(),"enabled");var gt;function $u(){gt=new ht("systemEventQueue",{jobTags:t=>({"event.name":t.event})})}s($u,"init");async function RS(){gt&&await gt.close()}s(RS,"shutdown");async function CS(t){gt||$u();let{event:e,identity:r}=t;bm.indexOf(e)!==-1&&r.tenantId&&await gt.add(t)}s(CS,"publishAsyncEvent");var Gu={};N(Gu,{end:()=>Cv,isAlreadySent:()=>yp,isBackfillingEvent:()=>gp,recordEvent:()=>Ep,start:()=>Rv});var Rv=s(async t=>xv({eventWhitelist:t}),"start"),Ep=s(async(t,e)=>{let r=Tp(t,e);await jt(r,e,void 0,{useTenancy:!1})},"recordEvent"),Cv=s(async()=>{await vv(),await Pv()},"end"),bv=s(async()=>pn(ye.BACKFILL_METADATA),"getBackfillMetadata"),xv=s(async t=>jt(ye.BACKFILL_METADATA,t),"saveBackfillMetadata"),vv=s(async()=>{await so(ye.BACKFILL_METADATA)},"deleteBackfillMetadata"),Pv=s(async()=>{let t=Tp(),e=await Ru(t);for(let r of e)await so(r,{useTenancy:!1})},"clearEvents"),gp=s(async t=>{let r=(await bv())?.eventWhitelist;return!!(r&&r.includes(t))},"isBackfillingEvent"),yp=s(async(t,e)=>{let r=Tp(t,e);return!!await pn(r,{useTenancy:!1})},"isAlreadySent"),Nv={"automation:created":t=>t.automationId,"automation:step:created":t=>t.stepId,"datasource:created":t=>t.datasourceId,"layout:created":t=>t.layoutId,"query:created":t=>t.queryId,"role:created":t=>t.roleId,"screen:created":t=>t.screenId,"table:created":t=>t.tableId,"view:created":t=>t.tableId,"view:calculation:created":t=>t.tableId,"view:filter:created":t=>t.tableId,"app:created":t=>t.appId,"app:published":t=>t.appId,"auth:sso:created":t=>t.type,"auth:sso:activated":t=>t.type,"user:created":t=>t.userId,"user:admin:assigned":t=>t.userId,"user:builder:assigned":t=>t.userId,"role:assigned":t=>`${t.roleId}-${t.userId}`},Tp=s((t,e)=>{let r,n=q();if(t){r=`${ye.EVENTS}:${n}:${t}`;let i=Nv[t],o=i?i(e):void 0;o&&(r=`${r}:${o}`)}else r=`${ye.EVENTS}:${n}:*`;return r},"getEventKey");var Ap={};N(Ap,{analyticsProcessor:()=>LS,init:()=>Vv,processors:()=>Ht});var NS=require("posthog-node");var Uv=s(t=>t==="served:builder"||t==="served:app:preview"||t==="served:app","isRateLimited"),Lv=s(t=>t==="served:app:preview"||t==="served:app","isPerApp");var xS={"served:app":"calendarDay","served:app:preview":"calendarDay","served:builder":"calendarDay"},vS=s(async t=>{if(!Uv(t))return!1;let e=await kv(t);if(e){let r=new Date(e.timestamp);switch(xS[t]){case"calendarDay":return r.setDate(r.getDate()+1),r.setHours(0,0,0,0),Date.now()>r.getTime()?(await bS(t,{timestamp:Date.now()}),!1):!0}}else return await bS(t,{timestamp:Date.now()}),!1},"limited"),PS=s(t=>{let e=`${ye.EVENTS_RATE_LIMIT}:${t}`;return Lv(t)&&(e=e+":"+Le()),e},"eventKey"),kv=s(async t=>{let e=PS(t);return await pn(e)},"readEvent"),bS=s(async(t,e)=>{let r=PS(t),n=xS[t],i;switch(n){case"calendarDay":i=86400}await jt(r,e,i)},"recordEvent");var Fv=["user:updated","email:smtp:updated","auth:sso:updated","app:updated","role:updated","datasource:updated","query:updated","view:updated","view:calculation:updated","automation:trigger:updated","user_group:updated"],lo=class{static{s(this,"PosthogProcessor")}constructor(e){if(!e)throw new Error("Posthog token is not defined");this.posthog=new NS.PostHog(e)}async processEvent(e,r,n,i){if(Fv.includes(e)||await vS(e))return;n=this.clearPIIProperties(n),n.version=E.VERSION,n.service=E.SERVICE,n.environment=r.environment,n.hosting=r.hosting;let o=Le();o&&(n.appId=o);let a={distinctId:r.id,event:e,properties:n};i&&(a.timestamp=new Date(i)),(r.installationId||r.tenantId)&&(a.groups={},r.installationId&&(a.groups.installation=r.installationId,a.properties.installationId=r.installationId),r.tenantId&&(a.groups.tenant=r.tenantId,a.properties.tenantId=r.tenantId)),this.posthog.capture(a)}clearPIIProperties(e){return e.email&&delete e.email,e.audited&&delete e.audited,e}async identify(e,r){let n={distinctId:e.id,properties:e};r&&(n.timestamp=new Date(r)),this.posthog.identify(n)}async identifyGroup(e,r){let n={distinctId:e.id,groupType:e.type,groupKey:e.id,properties:e};r&&(n.timestamp=new Date(r)),this.posthog.groupIdentify(n)}async shutdown(){await this.posthog.shutdown()}};var US=lo;var Bv=["installation:version:upgraded","installation:version:downgraded"],Wv=["installation","tenant"],fo=class{static{s(this,"AnalyticsProcessor")}constructor(){E.POSTHOG_TOKEN&&!E.isTest()&&(this.posthog=new US(E.POSTHOG_TOKEN))}async processEvent(e,r,n,i){!Bv.includes(e)&&!await Fu()||this.posthog&&await this.posthog.processEvent(e,r,n,i)}async identify(e,r){!Wv.includes(e.type)&&!await Fu()||this.posthog&&await this.posthog.identify(e,r)}async identifyGroup(e,r){this.posthog&&await this.posthog.identifyGroup(e,r)}async shutdown(){this.posthog&&await this.posthog.shutdown()}};var Sp=E.SELF_HOSTED&&!E.isDev(),po=class{static{s(this,"LoggingProcessor")}async processEvent(e,r,n){Sp||console.log(`[audit] [identityType=${r.type}] ${e}`,n)}async identify(e){Sp||console.log("[audit] identified",e)}async identifyGroup(e){Sp||console.log("[audit] group identified",e)}async shutdown(){}};var di=class t{static{s(this,"AuditLogsProcessor")}static{this.auditLogsEnabled=!1}static init(e){t.auditLogsEnabled=!0;let r=e;return t.auditLogQueue=new ht("auditLogQueue",{jobTags:n=>({"event.name":n.event})}),t.auditLogQueue.process(async n=>{await Re(n.data.tenantId,async()=>{let i=n.data.properties;i.audited&&(i={...i,...i.audited},delete i.audited);let o={};E.ENABLE_AUDIT_LOG_IP_ADDR&&(o=n.data.opts.hostInfo),await r(n.data.event,i,{userId:n.data.opts.userId,timestamp:n.data.opts.timestamp,appId:n.data.opts.appId,hostInfo:o})})})}async processEvent(e,r,n,i){if(t.auditLogsEnabled&&Cf(e)){let o=r.type==="user"?r.id:void 0;await t.auditLogQueue.add({event:e,properties:n,opts:{userId:o,timestamp:i,appId:Le(),hostInfo:r.hostInfo},tenantId:q()})}}async identify(){}async identifyGroup(){}async shutdown(){await t.auditLogQueue?.close()}};var mo=class{constructor(e){this.initialised=!1;this.processors=[];this.processors=e}static{s(this,"Processor")}async processEvent(e,r,n,i){for(let o of this.processors)await o.processEvent(e,r,n,i)}async identify(e,r){for(let n of this.processors)n.identify&&await n.identify(e,r)}async identifyGroup(e,r){for(let n of this.processors)n.identifyGroup&&await n.identifyGroup(e,r)}async shutdown(){for(let e of this.processors)e.shutdown&&await e.shutdown()}};var LS=new fo,$v=new po,Gv=new di;function Vv(t){return di.init(t)}s(Vv,"init");var Ht=new mo([LS,$v,Gv]);var Vu={};N(Vu,{checkInstallVersion:()=>Qv,getInstall:()=>Eo,getInstallFromDB:()=>Op});var _p=B(require("semver"));var Eo=s(async()=>Ar(ye.INSTALLATION,86400,Op,{useTenancy:!1}),"getInstall");async function qv(t){let e={_id:fe.PLATFORM_INFO.docs.install,installId:ne(),version:E.VERSION};try{let r=await t.put(e);return e._rev=r.rev,e}catch(r){if(r.status===409)return Op();throw r}}s(qv,"createInstallDoc");var Op=s(async()=>Ke(fe.PLATFORM_INFO.name,async t=>{let e;try{e=await t.get(fe.PLATFORM_INFO.docs.install)}catch(r){if(r.status===404)e=await qv(t);else throw r}return e}),"getInstallFromDB"),Kv=s(async t=>{try{await Ke(fe.PLATFORM_INFO.name,async e=>{let r=await Eo();r.version=t,await e.put(r),await oi(ye.INSTALLATION)})}catch(e){if(e.status===409)return!1;throw e}return!0},"updateVersion"),Qv=s(async()=>{let t=await Eo(),e=t.version,r=E.VERSION;try{if(e!==r){let n=_p.default.gt(r,e),i=_p.default.lt(r,e);await Kv(r)&&(await Os({_id:t.installId,type:"installation"},async()=>{n?await ho.upgraded(e,r):i&&await ho.downgraded(e,r)}),await yt.identifyInstallationGroup(t.installId))}}catch(n){n?.message?.includes("Invalid Version")?cn(`Invalid version "${r}" - is it semver?`):cn("Failed to retrieve version",n)}},"checkInstallVersion");var jv=s(async()=>{let t=Md(),e=To(),r;if(t?r=t.type:r="tenant",r==="installation"){let n=await En(),i=go();return{id:kS(n,r),hosting:i,type:r,installationId:n,environment:e}}else if(r==="tenant"){let n=await En(),i=await qu(q()),o=go();return{id:kS(i,r),type:r,hosting:o,installationId:n,tenantId:i,realTenantId:q(),environment:e}}else if(r==="user"){let n=t,i=await qu(q()),o=await En(),a=n.account,u;return a?u=a.hosting:u=go(),{id:n._id,type:r,hosting:u,installationId:o,tenantId:i,environment:e,realTenantId:q(),hostInfo:n.hostInfo}}else throw new Error("Unknown identity type")},"getCurrentIdentity"),Yv=s(async(t,e)=>{let r=t,n="installation",i=go(),o=E.VERSION,a=To(),u={id:r,type:n,hosting:i,version:o,environment:a};await Ip(u,e),await yo({...u,id:`$${n}_${r}`},e)},"identifyInstallationGroup"),Hv=s(async(t,e,r,n=E.VERSION)=>{let i=await qu(t),o="tenant",a=await En(),u=To(),c={id:i,type:o,hosting:e,environment:u,installationId:a,createdAt:r,createdVersion:n};await Ip(c,r),await yo({...c,id:`$${o}_${i}`},r)},"identifyTenantGroup"),zv=s(async(t,e,r)=>{let n=t._id,i=await qu(t.tenantId),o="user",a=ke(t),u=Ir(t),c;Vo(t)&&(c=t.providerType);let d=(await pi([t.email])).length>0,f=!!e&&d&&e.verified,p=await En(),m=e?e.hosting:go(),h=To();await yo({id:n,type:o,hosting:m,installationId:p,tenantId:i,verified:f,accountHolder:d,providerType:c,builder:a,admin:u,environment:h},r)},"identifyUser"),Jv=s(async t=>{let e=t.accountId,r=t.tenantId,n="user",i=Go(t)?t.providerType:void 0,o=t.verified,a=!0,u=t.hosting,c=await En(),l=To();if($o(t)){let f=await Tt(t.email);f?._id&&(e=f._id)}await yo({id:e,type:n,hosting:u,installationId:c,tenantId:r,providerType:i,verified:o,accountHolder:a,environment:l})},"identifyAccount"),yo=s(async(t,e)=>{await Ht.identify(t,e)},"identify"),Ip=s(async(t,e)=>{await Ht.identifyGroup(t,e)},"identifyGroup"),To=s(()=>E.isDev()?"development":E.DEPLOYMENT_ENVIRONMENT,"getDeploymentEnvironment"),go=s(()=>E.SELF_HOSTED?"self":"cloud","getHostingFromEnv"),En=s(async()=>Zv()?"account-portal":(await Eo()).installId,"getInstallationId"),qu=s(async t=>E.SELF_HOSTED?MS(t):t,"getEventTenantId"),MS=s(async t=>Re(t,()=>Ar(ye.UNIQUE_TENANT_ID,86400,async()=>{let e=H(),r=await ni(),n;return r.config.uniqueTenantId?r.config.uniqueTenantId:(n=`${ne()}_${t}`,r.config.uniqueTenantId=n,r.config.createdVersion=E.VERSION,await e.put(r),n)})),"getUniqueTenantId"),Zv=s(()=>E.SERVICE==="account-portal","isAccountPortal"),kS=s((t,e)=>e==="installation"||e==="tenant"?`$${e}_${t}`:t,"formatDistinctId"),yt={getCurrentIdentity:jv,identifyInstallationGroup:Yv,identifyTenantGroup:Hv,identifyUser:zv,identifyAccount:Jv,identify:yo,identifyGroup:Ip,getInstallationId:En,getUniqueTenantId:MS};var A=s(async(t,e,r,n)=>{let i=n||await yt.getCurrentIdentity();if(!(n?!1:await gp(t))){await CS({event:t,identity:i,properties:e,timestamp:r}),await Ht.processEvent(t,i,e,r);return}await yp(t,e)||(await Ht.processEvent(t,i,e,r),await Ep(t,e))},"publishEvent");async function Xv(t,e){let r={tenantId:t.tenantId};await A("account:created",r,void 0,e)}s(Xv,"created");async function eP(t){let e={tenantId:t.tenantId};await A("account:deleted",e)}s(eP,"deleted");async function tP(t){let e={tenantId:t.tenantId};await A("account:verified",e)}s(tP,"verified");var FS={created:Xv,deleted:eP,verified:tP};async function rP(t,e){console.info("action:automation_step:executed",`disabled. Action step ${t.stepId} not published at ${e}`)}s(rP,"automationStepExecuted");async function nP(t,e){console.info("action:automation_step:executed",`disabled. Action type ${t.type} not published at ${e}`)}s(nP,"crudExecuted");async function iP(t,e){console.info("action:automation_step:executed",`disabled. Execution for ai agent ${t.agentId} not published at ${e}`)}s(iP,"aiAgentExecuted");var BS={aiAgentExecuted:iP,automationStepExecuted:rP,crudExecuted:nP};async function sP(t){let e={};await A("ai:config:created",e,t)}s(sP,"AIConfigCreated");async function oP(){let t={};await A("ai:config:updated",t)}s(oP,"AIConfigUpdated");var WS={AIConfigCreated:sP,AIConfigUpdated:oP};var aP=s(async(t,e)=>{let r={appId:t.appId,version:t.version,audited:{name:t.name}};await A("app:created",r,e)},"created");async function uP(t){let e={appId:t.appId,version:t.version,audited:{name:t.name}};await A("app:updated",e)}s(uP,"updated");async function cP(t){let e={appId:t.appId,audited:{name:t.name}};await A("app:deleted",e)}s(cP,"deleted");async function lP(t,e){let r={appId:t.appId,audited:{name:t.name}};await A("app:published",r,e)}s(lP,"published");async function dP(t){let e={appId:t.appId,audited:{name:t.name}};await A("app:unpublished",e)}s(dP,"unpublished");async function fP(t){let e={appId:t.appId,audited:{name:t.name}};await A("app:file:imported",e)}s(fP,"fileImported");async function pP(t,e){let r={duplicateAppId:e,appId:t.appId,audited:{name:t.name}};await A("app:duplicated",r)}s(pP,"duplicated");async function mP(t,e){let r={appId:t.appId,templateKey:e,audited:{name:t.name}};await A("app:template:imported",r)}s(mP,"templateImported");async function hP(t,e,r){let n={appId:t.appId,currentVersion:e,updatedToVersion:r,audited:{name:t.name}};await A("app:version:updated",n)}s(hP,"versionUpdated");async function EP(t,e,r){let n={appId:t.appId,currentVersion:e,revertedToVersion:r,audited:{name:t.name}};await A("app:version:reverted",n)}s(EP,"versionReverted");async function gP(t){let e={appId:t.appId,audited:{name:t.name}};await A("app:reverted",e)}s(gP,"reverted");async function yP(t){let e={appId:t.appId,audited:{name:t.name}};await A("app:exported",e)}s(yP,"exported");var $S={created:aP,updated:uP,deleted:cP,published:lP,unpublished:dP,fileImported:fP,duplicated:pP,templateImported:mP,versionUpdated:hP,versionReverted:EP,reverted:gP,exported:yP};async function TP(t){let e={filters:t};await A("audit_log:filtered",e)}s(TP,"filtered");async function SP(t){let e={filters:t};await A("audit_log:downloaded",e)}s(SP,"downloaded");var GS={filtered:TP,downloaded:SP};async function AP(t,e){let n={userId:(await yt.getCurrentIdentity()).id,source:t,audited:{email:e}};await A("auth:login",n)}s(AP,"login");async function _P(t){let r={userId:(await yt.getCurrentIdentity()).id,audited:{email:t}};await A("auth:logout",r)}s(_P,"logout");async function OP(t,e){let r={type:t};await A("auth:sso:created",r,e)}s(OP,"SSOCreated");async function IP(t){let e={type:t};await A("auth:sso:updated",e)}s(IP,"SSOUpdated");async function wP(t,e){let r={type:t};await A("auth:sso:activated",r,e)}s(wP,"SSOActivated");async function DP(t){let e={type:t};await A("auth:sso:deactivated",e)}s(DP,"SSODeactivated");var Ku={login:AP,logout:_P,SSOCreated:OP,SSOUpdated:IP,SSOActivated:wP,SSODeactivated:DP};async function RP(t,e){let r={appId:t.appId,automationId:t._id,triggerId:t.definition?.trigger?.id,triggerType:t.definition?.trigger?.stepId,audited:{name:t.name}};await A("automation:created",r,e)}s(RP,"created");async function CP(t){let e={appId:t.appId,automationId:t._id,triggerId:t.definition?.trigger?.id,triggerType:t.definition?.trigger?.stepId};await A("automation:trigger:updated",e)}s(CP,"triggerUpdated");async function bP(t){let e={appId:t.appId,automationId:t._id,triggerId:t.definition?.trigger?.id,triggerType:t.definition?.trigger?.stepId,audited:{name:t.name}};await A("automation:deleted",e)}s(bP,"deleted");async function xP(t){let e={appId:t.appId,automationId:t._id,triggerId:t.definition?.trigger?.id,triggerType:t.definition?.trigger?.stepId};await A("automation:tested",e)}s(xP,"tested");var vP=s(async(t,e)=>{let r={count:t};await A("automations:run",r,e)},"run");async function PP(t,e,r){let n={appId:t.appId,automationId:t._id,triggerId:t.definition?.trigger?.id,triggerType:t.definition?.trigger?.stepId,stepId:e.id,stepType:e.stepId,audited:{name:t.name}};await A("automation:step:created",n,r)}s(PP,"stepCreated");async function NP(t,e){let r={appId:t.appId,automationId:t._id,triggerId:t.definition?.trigger?.id,triggerType:t.definition?.trigger?.stepId,stepId:e.id,stepType:e.stepId,audited:{name:t.name}};await A("automation:step:deleted",r)}s(NP,"stepDeleted");var VS={created:RP,triggerUpdated:CP,deleted:bP,tested:xP,run:vP,stepCreated:PP,stepDeleted:NP};var hi=!E.SELF_HOSTED&&!E.isDev();async function UP(t){hi||await A("app:backfill:succeeded",t)}s(UP,"appSucceeded");async function LP(t){if(hi)return;let e={error:JSON.stringify(t,Object.getOwnPropertyNames(t))};await A("app:backfill:failed",e)}s(LP,"appFailed");async function kP(t){hi||await A("tenant:backfill:succeeded",t)}s(kP,"tenantSucceeded");async function MP(t){if(hi)return;let e={error:JSON.stringify(t,Object.getOwnPropertyNames(t))};await A("tenant:backfill:failed",e)}s(MP,"tenantFailed");async function FP(){if(hi)return;let t={};await A("installation:backfill:succeeded",t)}s(FP,"installationSucceeded");async function BP(t){if(hi)return;let e={error:JSON.stringify(t,Object.getOwnPropertyNames(t))};await A("installation:backfill:failed",e)}s(BP,"installationFailed");var qS={appSucceeded:UP,appFailed:LP,tenantSucceeded:kP,tenantFailed:MP,installationSucceeded:FP,installationFailed:BP};async function WP(t){let e={appId:t.appId,restoreId:t._id,backupCreatedAt:t.timestamp,name:t.name};await A("app:backup:restored",e)}s(WP,"appBackupRestored");async function $P(t,e,r,n,i){let o={appId:t,backupId:e,type:r,trigger:n,name:i};await A("app:backup:triggered",o)}s($P,"appBackupTriggered");var KS={appBackupRestored:WP,appBackupTriggered:$P};function wp(t){return!Object.values(Mo).includes(t.source)}s(wp,"isCustom");async function GP(t,e){let r={datasourceId:t._id,source:t.source,custom:wp(t)};await A("datasource:created",r,e)}s(GP,"created");async function VP(t){let e={datasourceId:t._id,source:t.source,custom:wp(t)};await A("datasource:updated",e)}s(VP,"updated");async function qP(t){let e={datasourceId:t._id,source:t.source,custom:wp(t)};await A("datasource:deleted",e)}s(qP,"deleted");var QS={created:GP,updated:VP,deleted:qP};async function KP(t){let e={};await A("email:smtp:created",e,t)}s(KP,"SMTPCreated");async function QP(){let t={};await A("email:smtp:updated",t)}s(QP,"SMTPUpdated");var jS={SMTPCreated:KP,SMTPUpdated:QP};async function jP(t,e){let r={name:t,environments:e};await A("environment_variable:created",r)}s(jP,"created");async function YP(t){let e={name:t};await A("environment_variable:deleted",e)}s(YP,"deleted");async function HP(t){let e={userId:t};await A("environment_variable:upgrade_panel_opened",e)}s(HP,"upgradePanelOpened");var YS={created:jP,deleted:YP,upgradePanelOpened:HP};async function zP(t,e){let r={groupId:t._id,viaScim:pt(),audited:{name:t.name}};await A("user_group:created",r,e)}s(zP,"created");async function JP(t){let e={groupId:t._id,viaScim:pt(),audited:{name:t.name}};await A("user_group:updated",e)}s(JP,"updated");async function ZP(t){let e={groupId:t._id,viaScim:pt(),audited:{name:t.name}};await A("user_group:deleted",e)}s(ZP,"deleted");async function XP(t,e,r){let n={count:t,groupId:e._id,userIds:r,viaScim:pt(),audited:{name:e.name}};await A("user_group:user_added",n)}s(XP,"usersAdded");async function eN(t,e,r){let n={count:t,groupId:e._id,userIds:r,viaScim:pt(),audited:{name:e.name}};await A("user_group:users_deleted",n)}s(eN,"usersDeleted");async function tN(t){let e={groupId:t,onboarding:!0};await A("user_group:onboarding_added",e)}s(tN,"createdOnboarding");async function rN(t){let e={permissions:t.roles,groupId:t._id,audited:{name:t.name}};await A("user_group:permissions_edited",e)}s(rN,"permissionsEdited");var HS={created:zP,updated:JP,deleted:ZP,usersAdded:XP,usersDeleted:eN,createdOnboarding:tN,permissionsEdited:rN};async function nN(t){let e={currentVersion:t};await A("installation:version:checked",e)}s(nN,"versionChecked");async function iN(t,e){let r={from:t,to:e};await A("installation:version:upgraded",r)}s(iN,"upgraded");async function sN(t,e){let r={from:t,to:e};await A("installation:version:downgraded",r)}s(sN,"downgraded");async function oN(){let t={};await A("installation:firstStartup",t)}s(oN,"firstStartup");var ho={versionChecked:nN,upgraded:iN,downgraded:sN,firstStartup:oN};async function aN(t,e){let r={layoutId:t._id};await A("layout:created",r,e)}s(aN,"created");async function uN(t){let e={layoutId:t};await A("layout:deleted",e)}s(uN,"deleted");var zS={created:aN,deleted:uN};async function cN(t,e){let r={accountId:t.accountId,...e};await A("license:plan:changed",r)}s(cN,"planChanged");async function lN(t){let e={accountId:t.accountId};await A("license:activated",e)}s(lN,"activated");async function dN(t){let e={accountId:t.accountId};await A("license:checkout:opened",e)}s(dN,"checkoutOpened");async function fN(t){let e={accountId:t.accountId};await A("license:checkout:success",e)}s(fN,"checkoutSuccess");async function pN(t){let e={accountId:t.accountId};await A("license:portal:opened",e)}s(pN,"portalOpened");async function mN(t){let e={accountId:t.accountId};await A("license:payment:failed",e)}s(mN,"paymentFailed");async function hN(t){let e={accountId:t.accountId};await A("license:payment:recovered",e)}s(hN,"paymentRecovered");var JS={planChanged:cN,activated:lN,checkoutOpened:dN,checkoutSuccess:fN,portalOpened:pN,paymentFailed:mN,paymentRecovered:hN};async function EN(t){let e={};await A("org:info:name:updated",e,t)}s(EN,"nameUpdated");async function gN(t){let e={};await A("org:info:logo:updated",e,t)}s(gN,"logoUpdated");async function yN(t){let e={};await A("org:platformurl:updated",e,t)}s(yN,"platformURLUpdated");async function TN(){let t={};await A("analytics:opt:out",t)}s(TN,"analyticsOptOut");async function SN(){let t={};await A("analytics:opt:out",t)}s(SN,"analyticsOptIn");var ZS={nameUpdated:EN,logoUpdated:gN,platformURLUpdated:yN,analyticsOptOut:TN,analyticsOptIn:SN};async function AN(t){let e={type:t.schema.type,name:t.name,description:t.description,version:t.version};await A("plugin:init",e)}s(AN,"init");async function _N(t){let e={pluginId:t._id,type:t.schema.type,source:t.source,name:t.name,description:t.description,version:t.version};await A("plugin:imported",e)}s(_N,"imported");async function ON(t){let e={pluginId:t._id,type:t.schema.type,name:t.name,description:t.description,version:t.version};await A("plugin:deleted",e)}s(ON,"deleted");var XS={init:AN,imported:_N,deleted:ON};var IN=s(async(t,e,r)=>{let n={queryId:e._id,datasourceId:t._id,source:t.source,queryVerb:e.queryVerb};await A("query:created",n,r)},"created"),wN=s(async(t,e)=>{let r={queryId:e._id,datasourceId:t._id,source:t.source,queryVerb:e.queryVerb};await A("query:updated",r)},"updated"),DN=s(async(t,e,r)=>{let n={queryId:e._id,datasourceId:t._id,source:t.source,queryVerb:e.queryVerb,appId:r};await A("query:deleted",n)},"deleted"),RN=s(async(t,e,r)=>{let n={datasourceId:t._id,source:t.source,count:r,importSource:e};await A("query:import",n)},"imported"),CN=s(async(t,e)=>{let r={count:t};await A("queries:run",r,e)},"run"),bN=s(async(t,e)=>{let r={queryId:e.queryId,datasourceId:t._id,source:t.source,queryVerb:e.queryVerb};await A("query:previewed",r)},"previewed"),eA={created:IN,updated:wN,deleted:DN,imported:RN,run:CN,previewed:bN};async function xN({resource:t,fromWorkspace:e,toWorkspace:r},n){let i={resource:t,fromWorkspace:e,toWorkspace:r};await A("resource:copied_to_workspace",i,n)}s(xN,"duplicatedToWorkspace");var tA={duplicatedToWorkspace:xN};async function vN(t,e){let r={roleId:t._id,permissionId:t.permissionId,inherits:t.inherits};await A("role:created",r,e)}s(vN,"created");async function PN(t){let e={roleId:t._id,permissionId:t.permissionId,inherits:t.inherits};await A("role:updated",e)}s(PN,"updated");async function NN(t){let e={roleId:t._id,permissionId:t.permissionId,inherits:t.inherits};await A("role:deleted",e)}s(NN,"deleted");async function UN(t,e,r){let n={userId:t._id,roleId:e};await A("role:assigned",n,r)}s(UN,"assigned");async function LN(t,e){let r={userId:t._id,roleId:e};await A("role:unassigned",r)}s(LN,"unassigned");var So={created:vN,updated:PN,deleted:NN,assigned:UN,unassigned:LN};async function kN(t,e){await A("row_action:created",t,e)}s(kN,"created");var rA={created:kN};var MN=s(async(t,e)=>{let r={count:t};await A("rows:created",r,e)},"created"),FN=s(async(t,e)=>{let r={tableId:t._id,count:e};await A("rows:imported",r)},"imported"),nA={created:MN,imported:FN};async function BN(t,e){let r={layoutId:t.layoutId,screenId:t._id,roleId:t.routing.roleId,audited:{name:t.routing?.route}};await A("screen:created",r,e)}s(BN,"created");async function WN(t){let e={layoutId:t.layoutId,screenId:t._id,roleId:t.routing.roleId,audited:{name:t.routing?.route}};await A("screen:deleted",e)}s(WN,"deleted");var iA={created:BN,deleted:WN};async function $N(t){let e={timezone:t};await A("served:builder",e)}s($N,"servedBuilder");async function GN(t,e,r){let n={appVersion:t.version,timezone:e,embed:r===!0};await A("served:app",n)}s(GN,"servedApp");async function VN(t,e){let r={appId:t.appId,appVersion:t.version,timezone:e};await A("served:app:preview",r)}s(VN,"servedAppPreview");var sA={servedBuilder:$N,servedApp:GN,servedAppPreview:VN};async function qN(t,e){let r={tableId:t._id,audited:{name:t.name}};await A("table:created",r,e)}s(qN,"created");async function KN(t,e){let r,n;for(let o in e.schema)if(!t.schema[o]){let a=e.schema[o];"default"in a&&a.default!=null&&(r=!0),a.type==="ai"&&(n=a.operation)}let i={tableId:e._id,defaultValues:r,aiColumn:n,audited:{name:e.name}};(r||n)&&await A("table:updated",i)}s(KN,"updated");async function QN(t,e){let r={tableId:t._id,audited:{name:t.name},appId:e};await A("table:deleted",r)}s(QN,"deleted");async function jN(t,e){let r={tableId:t._id,format:e,audited:{name:t.name}};await A("table:exported",r)}s(jN,"exported");async function YN(t){let e={tableId:t._id,audited:{name:t.name}};await A("table:imported",e)}s(YN,"imported");var oA={created:qN,updated:KN,deleted:QN,exported:jN,imported:YN};async function HN(t,e){let r={userId:t._id,viaScim:pt(),audited:{email:t.email}};await A("user:created",r,e)}s(HN,"created");async function zN(t){let e={userId:t._id,viaScim:pt(),audited:{email:t.email}};await A("user:updated",e)}s(zN,"updated");async function JN(t){let e={userId:t._id,viaScim:pt(),audited:{email:t.email}};await A("user:deleted",e)}s(JN,"deleted");async function ZN(t,e){let r={userId:t._id,audited:{email:t.email}};await A("user:admin:assigned",r,e)}s(ZN,"permissionAdminAssigned");async function XN(t){let e={userId:t._id,audited:{email:t.email}};await A("user:admin:removed",e)}s(XN,"permissionAdminRemoved");async function eU(t,e){let r={userId:t._id,audited:{email:t.email}};await A("user:builder:assigned",r,e)}s(eU,"permissionBuilderAssigned");async function tU(t){let e={userId:t._id,audited:{email:t.email}};await A("user:builder:removed",e)}s(tU,"permissionBuilderRemoved");async function rU(t){let e={audited:{email:t}};await A("user:invited",e)}s(rU,"invited");async function nU(t){let e={userId:t._id,audited:{email:t.email}};await A("user:invite:accepted",e)}s(nU,"inviteAccepted");async function iU(t){let e={userId:t._id,audited:{email:t.email}};await A("user:password:force:reset",e)}s(iU,"passwordForceReset");async function sU(t){let e={userId:t._id,audited:{email:t.email}};await A("user:password:updated",e)}s(sU,"passwordUpdated");async function oU(t){let e={userId:t._id,audited:{email:t.email}};await A("user:password:reset:requested",e)}s(oU,"passwordResetRequested");async function aU(t){let e={userId:t._id,audited:{email:t.email}};await A("user:password:reset",e)}s(aU,"passwordReset");async function uU(t){let e={users:t};await A("user:data:collaboration",e)}s(uU,"dataCollaboration");var Me={created:HN,updated:zN,deleted:JN,permissionAdminAssigned:ZN,permissionAdminRemoved:XN,permissionBuilderAssigned:eU,permissionBuilderRemoved:tU,invited:rU,inviteAccepted:nU,passwordForceReset:iU,passwordUpdated:sU,passwordResetRequested:oU,passwordReset:aU,dataCollaboration:uU};async function cU(t,e){let r={name:t.name,type:t.type,tableId:t.tableId};await A("view:created",r,e)}s(cU,"created");async function lU(t){let e={tableId:t.tableId};await A("view:updated",e)}s(lU,"updated");async function dU(t,e){let r={...Ne.views.isV2(t)?{id:t.id,tableId:t.tableId,appId:e}:{}};await A("view:deleted",r)}s(dU,"deleted");async function fU(t,e){let r={tableId:t._id,format:e};await A("view:exported",r)}s(fU,"exported");async function pU({tableId:t,filterGroups:e},r){let n={tableId:t,filterGroups:e};await A("view:filter:created",n,r)}s(pU,"filterCreated");async function mU({tableId:t,filterGroups:e}){let r={tableId:t,filterGroups:e};await A("view:filter:updated",r)}s(mU,"filterUpdated");async function hU(t){let e={tableId:t.tableId};await A("view:filter:deleted",e)}s(hU,"filterDeleted");async function EU({tableId:t,calculationType:e},r){let n={tableId:t,calculation:e};await A("view:calculation:created",n,r)}s(EU,"calculationCreated");async function gU(t){let e={tableId:t.tableId,calculation:t.calculation};await A("view:calculation:updated",e)}s(gU,"calculationUpdated");async function yU(t){let e={tableId:t.tableId,calculation:t.calculation};await A("view:calculation:deleted",e)}s(yU,"calculationDeleted");async function TU(t,e){let r={tableId:t};await A("view:join:created",r,e)}s(TU,"viewJoinCreated");var aA={created:cU,updated:lU,deleted:dU,exported:fU,filterCreated:pU,filterUpdated:mU,filterDeleted:hU,calculationCreated:EU,calculationUpdated:gU,calculationDeleted:yU,viewJoinCreated:TU};async function SU(t,e){let r={workspaceAppId:t._id,audited:{name:t.name},appId:e};await A("workspace_app:deleted",r)}s(SU,"deleted");var uA={deleted:SU};function AU(){}s(AU,"initAsyncEvents");var _U=s(async()=>{await Ht.shutdown(),console.log("Events shutdown")},"shutdown");var Rp={};N(Rp,{creatorsInList:()=>gn,getAccountHolderFromUsers:()=>zu,hasAdminPermissions:()=>Ir,hasAppBuilderPermissions:()=>pA,hasBuilderPermissions:()=>ke,isAdmin:()=>Rt,isAdminOrBuilder:()=>fA,isAdminOrWorkspaceBuilder:()=>ju,isBuilder:()=>Ei,isCreatorAsync:()=>_o,isCreatorSync:()=>Yu,isGlobalBuilder:()=>dA,validateUniqueUser:()=>Hu});async function Dp(t){let e=[],r=await cA(t);e.push(...r.map(a=>a.email));let n=await lA(t);e.push(...n.map(a=>a._id));let i=await pi(t);e.push(...i.map(a=>a.email));let o=await ip(t);return e.push(...o.map(a=>a.email)),[...new Set(e.map(a=>a.toLowerCase()))]}s(Dp,"searchExistingEmails");async function Qu(t){return await Vs("platform_users_lowercase_2",{keys:[t.toLowerCase()],include_docs:!0})}s(Qu,"getPlatformUsers");async function Ao(t){return(await Qu(t))[0]??null}s(Ao,"getFirstPlatformUser");async function cA(t){let r={keys:t.map(i=>i.toLowerCase()),include_docs:!0},n={arrayResponse:!0};return await $t("by_email2",r,void 0,n)}s(cA,"getExistingTenantUsers");async function lA(t){let r={keys:t.map(n=>n.toLowerCase()),include_docs:!0};return await Vs("platform_users_lowercase_2",r)}s(lA,"getExistingPlatformUsers");async function pi(t){let r={keys:t.map(n=>n.toLowerCase()),include_docs:!0};return await Vs("account_by_email",r)}s(pi,"getExistingAccounts");var Ei=Ue.users.isBuilder,Rt=Ue.users.isAdmin,dA=Ue.users.isGlobalBuilder,fA=Ue.users.isAdminOrBuilder,Ir=Ue.users.hasAdminPermissions,ke=Ue.users.hasBuilderPermissions,pA=Ue.users.hasAppBuilderPermissions,ju=Ue.users.isAdminOrWorkspaceBuilder;async function gn(t,e){let r=[...new Set(t.filter(i=>i.userGroups).flatMap(i=>i.userGroups))];return e=await H().getMultiple(r,{allowMissing:!0}),t.map(i=>Yu(i,e))}s(gn,"creatorsInList");async function _o(t){let e=[];return t.userGroups&&(e=await H().getMultiple(t.userGroups)),Yu(t,e)}s(_o,"isCreatorAsync");function Yu(t,e){let r=Ue.users.isCreator(t);return!r&&t?OU(t,e):r}s(Yu,"isCreatorSync");function OU(t,e){let r=e?.filter(n=>t.userGroups?.indexOf(n._id)!==-1);return r&&r.length>0?r.some(n=>Object.values(n.roles||{}).includes("CREATOR")):!1}s(OU,"isCreatorByGroupMembership");async function Hu(t,e){if(E.MULTI_TENANCY){let r=await Ao(t);if(r!=null&&r.tenantId!==e)throw new Yt(t)}if(!E.SELF_HOSTED&&!E.DISABLE_ACCOUNT_PORTAL){let r=await Or(t);if(r&&r.verified&&r.tenantId!==e)throw new Yt(t)}}s(Hu,"validateUniqueUser");async function zu(t){if(!E.SELF_HOSTED&&!E.DISABLE_ACCOUNT_PORTAL){let e=await pi(t.map(r=>r.email));return t.find(r=>e.map(n=>n.email).includes(r.email))}}s(zu,"getAccountHolderFromUsers");var Cp=s(async t=>{await Me.deleted(t),ke(t)&&await Me.permissionBuilderRemoved(t),Ir(t)&&await Me.permissionAdminRemoved(t)},"handleDeleteEvents"),IU=s(async(t,e,r)=>{for(let[n,i]of Object.entries(e))(!r||r[n]!==i)&&await So.assigned(t,i)},"assignAppRoleEvents"),wU=s(async(t,e,r)=>{if(r)for(let[n,i]of Object.entries(r))(!e||e[n]!==i)&&await So.unassigned(t,i)},"unassignAppRoleEvents"),DU=s(async(t,e)=>{let r=t.roles,n=e?.roles;await IU(t,r,n),await wU(t,r,n)},"handleAppRoleEvents"),bp=s(async(t,e)=>{let r=q(),n;!E.SELF_HOSTED&&!E.DISABLE_ACCOUNT_PORTAL&&(n=await ai(r)),await yt.identifyUser(t,n),e?(await Me.updated(t),CU(t,e)&&await Me.permissionBuilderRemoved(t),xU(t,e)&&await Me.permissionAdminRemoved(t),!e.forceResetPassword&&t.forceResetPassword&&t.password&&await Me.passwordForceReset(t),t.password!==e.password&&await Me.passwordUpdated(t)):await Me.created(t),RU(t,e)&&await Me.permissionBuilderAssigned(t),bU(t,e)&&await Me.permissionAdminAssigned(t),await DU(t,e)},"handleSaveEvents"),RU=s((t,e)=>mA(t,e,ke),"isAddingBuilder"),CU=s((t,e)=>hA(t,e,ke),"isRemovingBuilder"),bU=s((t,e)=>mA(t,e,Ir),"isAddingAdmin"),xU=s((t,e)=>hA(t,e,Ir),"isRemovingAdmin"),mA=s((t,e,r)=>!(!r(t)||e&&r(e)),"isAddingPermission"),hA=s((t,e,r)=>!(r(t)||!e||!r(e)),"isRemovingPermission");var PU=s(async t=>{let e=t._id;await Et.removeUser(t),await Cp(t),await wr.invalidateUser(e),await hn(e,{reason:"bulk-deletion"})},"bulkDeleteProcessing"),Ct=class t{static{s(this,"UserDB")}static init(e,r,n){t.quotas=e,t.groups=r,t.features=n}static async isPreventPasswordActions(e,r){return E.ENABLE_SSO_MAINTENANCE_MODE&&Rt(e)?!1:await t.features.isSSOEnforced()||Vo(e)?!0:(r||(r=await ai(q())),!!(r&&r.email===e.email&&Go(r)))}static async buildUser(e,r={hashPassword:!0,requirePassword:!0},n,i,o){let{password:a,_id:u}=e;i&&!i.password&&(r.requirePassword=!1);let c;if(a&&a!==i?.password){if(await t.isPreventPasswordActions(e,o))throw new we("Password change is disabled for this user",400);if(!r.skipPasswordValidation){let f=fp(a);if(!f.valid)throw new we(f.error,400)}c=r.hashPassword?await Ld(a):a}else i&&(c=i.password);let l=r.requirePassword&&!await t.features.isSSOEnforced();if(!c&&l)throw"Password must be specified.";u=u||Zn();let d={createdAt:Date.now(),...i,...e,_id:u,password:c,tenantId:n};return d.roles||(d.roles={}),d.status==null&&(d.status="active"),d}static async allUsers(){return(await H().allDocs(nn(null,{include_docs:!0}))).rows.map(n=>n.doc)}static async countUsersByApp(e){return{userCount:(await Zu(e,{})).length}}static async getUsersByAppAccess(e){return await xp(e.appId,{limit:e.limit||50})}static async getUserByEmail(e){return Tt(e)}static async getUser(e){let r=await yn(e);return r&&delete r.password,r}static async bulkGet(e){return await Ju(e)}static async bulkUpdate(e){return await Oo(e)}static async save(e,r={}){r.hashPassword==null&&(r.hashPassword=!0),r.requirePassword==null&&(r.requirePassword=!0);let n=q(),i=H(),{email:o,_id:a,userGroups:u=[],roles:c}=e;if(!o&&!a)throw new Error("_id or email is required");let l;if(a)try{if(l=await yn(a),o&&l.email!==o&&!r.allowChangingEmail)throw new Error("Email address cannot be changed")}catch(p){if(p.status!==404)throw p}if(!l&&o&&(l=await Tt(o),l&&l._id!==a))throw new Yt(o);let d=1,f=0;if((r.isAccountHolder||l)&&(d=0,f=1),l){let[p,m]=await gn([l,e]);f=p!==m?1:0}return t.quotas.addUsers(d,f,async()=>{r.isAccountHolder||await Hu(o,n);let p=await t.buildUser(e,r,n,l);r.currentUserId&&r.currentUserId===l?._id&&(p=vp(p,l)),!l&&c?.length&&(p.roles={...c});let m=[];if(!a&&u.length>0)for(let h of u)m.push(t.groups.addUsers(h,[p._id]));try{let h=await i.put(p);return p._rev=h.rev,await bp(p,l),l&&p.email!==l.email&&await Et.removeUser({email:l.email}),await Et.addUser(n,p._id,p.email,p.ssoId),await wr.invalidateUser(h.id),await Promise.all(m),i.get(p._id)}catch(h){throw h.status===409?"User exists already":h}})}static async bulkCreate(e,r){let n=q(),i=[],o=[],a=[],u=e.map(p=>p.email),c=await Dp(u),l=[];for(let p of e){let m=o.find(g=>g.email.toLowerCase()===p.email.toLowerCase()),h=c.includes(p.email.toLowerCase());if(m||h){l.push({email:p.email,reason:"Unavailable"});continue}p.userGroups=r||[],o.push(p),await _o(p)&&a.push(p)}let d=await ai(n),f=await t.features.isSSOEnforced();return t.quotas.addUsers(o.length,a.length,async()=>{for(let h of o)f&&delete h.password,i.push(t.buildUser(h,{hashPassword:!0,requirePassword:!f},n,void 0,d));let p=await Promise.all(i);await Oo(p);for(let h of p)await Et.addUser(n,h._id,h.email),await bp(h,void 0);let m=p.map(h=>({_id:h._id,email:h.email}));if(Array.isArray(m)&&r){let h=[],g=m.map(y=>y._id);for(let y of r)h.push(t.groups.addUsers(y,g));await Promise.all(h)}return{successful:m,unsuccessful:l}})}static async bulkDelete(e){let r=H(),n={successful:[],unsuccessful:[]},i=await zu(e);i&&(e=e.filter(m=>m.userId!==i.userId),n.unsuccessful.push({_id:i.userId,email:i.email,reason:"Account holder cannot be deleted"}));let a=(await r.allDocs({include_docs:!0,keys:e.map(m=>m.userId)})).rows.map(m=>m.doc),u=a.map(m=>({...m,_deleted:!0})),c=await Oo(u),d=(await gn(a)).filter(m=>m).length,f=[];for(let m of a){let g=(await Ao(m._id)).ssoId;g&&(await Qu(g)).filter(S=>S.ssoId==null).forEach(S=>{f.push({...S,_deleted:!0})}),await PU(m)}await _r().bulkDocs(f),await t.quotas.removeUsers(u.length,d);let p={};return a.reduce((m,h)=>(m[h._id]=h,m),p),c.forEach(m=>{let h=p[m.id].email;m.ok?n.successful.push({_id:m.id,email:h}):n.unsuccessful.push({_id:m.id,email:h,reason:"Database error"})}),n}static async destroy(e){let r=H(),n=await r.get(e),i=n._id;if(!E.SELF_HOSTED&&!E.DISABLE_ACCOUNT_PORTAL){let a=n.email;if(await Or(a))throw n.userId===Ft()._id?new we('Please visit "Account" to delete this user',400):new we("Account holder cannot be deleted",400)}await Et.removeUser(n),await r.remove(i,n._rev);let o=await _o(n)?1:0;await t.quotas.removeUsers(1,o),await Cp(n),await wr.invalidateUser(i),await hn(i,{reason:"deletion"})}static async createAdminUser(e,r,n){let i=n?.password,o={email:e,password:i,createdAt:Date.now(),roles:{},builder:{global:!0},admin:{global:!0},tenantId:r,firstName:n?.firstName,lastName:n?.lastName};return n?.ssoId&&(o.ssoId=n.ssoId),await oi(ye.CHECKLIST),await t.save(o,{hashPassword:n?.hashPassword,requirePassword:n?.requirePassword,skipPasswordValidation:n?.skipPasswordValidation,isAccountHolder:!0})}static async getGroups(e){return await this.groups.getBulk(e)}static async getGroupBuilderAppIds(e){return await this.groups.getGroupBuilderAppIds(e)}};function wo(t){return Array.isArray(t)?t.map(e=>{if(e)return delete e.password,e}):t&&(delete t.password,t)}s(wo,"removeUserPassword");async function Ju(t,e){let n=(await H().allDocs({keys:t,include_docs:!0})).rows.map(i=>i.doc);return e?.cleanup&&(n=wo(n)),n}s(Ju,"bulkGetGlobalUsersById");async function UU(){let t=H(),e=`us${b}`;return(await t.allDocs({startkey:e,endkey:`${e}${ve}`})).rows.map(n=>n.id)}s(UU,"getAllUserIds");async function LU(){let t=H(),e=`us${b}`;return(await t.allDocs({startkey:e,endkey:`${e}${ve}`,include_docs:!0})).rows.map(n=>n.doc)}s(LU,"getAllUsers");async function Oo(t){return await H().bulkDocs(t)}s(Oo,"bulkUpdateGlobalUsers");async function yn(t,e){let n=await H().get(t);return e?.cleanup&&(n=wo(n)),n}s(yn,"getById");async function Tt(t,e){if(t==null)throw"Must supply an email address to view";let r=await $t("by_email2",{key:t.toLowerCase(),include_docs:!0});if(Array.isArray(r))throw new Error(`Multiple users found with email address: ${t}`);let n=r;return e?.cleanup&&(n=wo(n)),n}s(Tt,"getGlobalUserByEmail");async function kU(t){try{let e=await Tt(t);if(Array.isArray(e)||e!=null)return!0}catch{return!1}return!1}s(kU,"doesUserExist");async function Zu(t,e,r){if(typeof t!="string")throw new Error("Must provide a string based workspace ID");let n=ru(t,{include_docs:!0});n.startkey=e&&e.startkey?e.startkey:n.startkey;let i=await $t("by_app",n);i||(i=[]);let o=Array.isArray(i)?i:[i];return r?.cleanup&&(o=wo(o)),o}s(Zu,"searchGlobalUsersByApp");async function xp(t,e){let r=`roles.${t}`,n=[{"builder.global":!0},{"admin.global":!0}];if(t){let a={[r]:{$exists:!0}};n.push(a)}return(await H().find({selector:{$or:n,_id:{$regex:"^us_"}},limit:e?.limit||50})).docs}s(xp,"searchGlobalUsersByAppAccess");function EA(t,e){if(e)return tu(Qe(t),e._id)}s(EA,"getGlobalUserByAppPage");async function gA(t,e,r){if(typeof t!="string")throw new Error("Must provide a string to search by");let n=t.toLowerCase(),i=e&&e.startkey?e.startkey:n,o=await $t("by_email2",{...e,startkey:i,endkey:`${n}${ve}`});o||(o=[]);let a=Array.isArray(o)?o:[o];return r?.cleanup&&(a=wo(a)),a}s(gA,"searchGlobalUsersByEmail");var MU=8;async function yA({bookmark:t,query:e,appId:r,limit:n}={}){let i=H(),o=n??MU,u={include_docs:!0,limit:o+1};t&&(u.startkey=t);let c,l="_id",d;return e?.equal?._id?c=[await yn(e.equal._id)]:r?(c=await Zu(r,u),d=s(f=>EA(r,f),"getKey")):e?.string?.email?(c=await gA(e?.string?.email,u),l="email"):e?.oneOf?._id?c=await Ju(e?.oneOf?._id,{cleanup:!0}):e?(c=(await i.allDocs(nn(null,{...u,limit:void 0}))).rows.map(p=>p.doc),c=cr.search(c,{query:e,limit:u.limit}).rows):c=(await i.allDocs(nn(null,u))).rows.map(p=>p.doc),Tf(c,o,{paginate:!0,property:l,getKey:d})}s(yA,"paginatedUsers");async function FU(){return(await _f("by_email2",{limit:0,include_docs:!1})).total_rows}s(FU,"getUserCount");async function BU(){let t=0;async function e(r){let n=await yA({bookmark:r}),i=await gn(n.data);t+=i.filter(o=>o).length,n.hasNextPage&&await e(n.nextPage)}return s(e,"iterate"),await e(),t}s(BU,"getCreatorCount");function WU(t){return delete t.admin,delete t.builder,t}s(WU,"removePortalUserPermissions");function vp(t,e){return delete t.admin,delete t.builder,delete t.roles,e&&(t.admin=e.admin,t.builder=e.builder,t.roles=e.roles),t}s(vp,"cleanseUserObject");async function $U(t,e){let r=Qe(e);t.builder??={},t.builder.creator=!0,t.builder.apps??=[],t.builder.apps.push(r),await Ct.save(t,{hashPassword:!1})}s($U,"addAppBuilder");async function GU(t,e){let r=Qe(e);t.builder&&t.builder.apps?.includes(r)&&(t.builder.apps=t.builder.apps.filter(n=>n!==r)),await Ct.save(t,{hashPassword:!1})}s(GU,"removeAppBuilder");var TA=3600;async function VU(t,e){let n=await wf(e).get(t);if(n.budibaseAccess=!0,!E.SELF_HOSTED&&!E.DISABLE_ACCOUNT_PORTAL){let i=await Or(n.email);i&&(n.account=i,n.accountPortalAccess=!0)}return n}s(VU,"populateFromDB");async function qU(t){let e=await Ct.bulkGet(t),r=t.filter((i,o)=>!e[o]),n=e.filter(i=>i);return await Promise.all(n.map(async i=>{if(i.budibaseAccess=!0,!E.SELF_HOSTED&&!E.DISABLE_ACCOUNT_PORTAL){let o=await Or(i.email);o&&(i.account=o,i.accountPortalAccess=!0)}})),r.length?{users:n,notFoundIds:r}:{users:n}}s(qU,"populateUsersFromDB");async function Do({userId:t,tenantId:e,email:r,populateUser:n}){if(n||(n=VU),!e)try{e=q()}catch{e=await Et.lookupTenantId(t)}let i=await Ms(),o=await i.get(t);return o||(o=await n(t,e,r),await i.store(t,o,TA)),o&&!o.tenantId&&e&&(o.tenantId=e),o.userGroups&&!Ue.users.isGlobalBuilder(o)&&await Re(e,async()=>{let a=await Ct.getGroupBuilderAppIds(o);if(a.length){let u=o.builder?.apps||[];o.builder={apps:[...new Set(u.concat(a))]}}}),o}s(Do,"getUser");async function KU(t){let e=await Ms(),r=await e.bulkGet(t),n=t.filter(a=>!r[a]),i=Object.values(r).filter(a=>!!a),o;if(n.length){let a=await qU(n);o=a.notFoundIds;for(let u of a.users)await e.store(u._id,u,TA);i.push(...a.users)}return{users:i,notFoundIds:o}}s(KU,"getUsers");async function Ro(t){await(await Ms()).delete(t)}s(Ro,"invalidateUser");var kp={};N(kp,{Writethrough:()=>Up});var yi={};N(yi,{AUTO_EXTEND_POLLING_MS:()=>AA,doWithLock:()=>Pp,newRedlock:()=>Tn});var SA=B(require("redlock"));async function jU(t,e){if(t==="custom")return Tn(e);switch(t){case"try_once":return Tn(gi.TRY_ONCE);case"try_twice":return Tn(gi.TRY_TWICE);case"default":return Tn(gi.DEFAULT);case"delay_500":return Tn(gi.DELAY_500);case"auto_extend":return Tn(gi.AUTO_EXTEND);default:throw St.unreachable(t)}}s(jU,"getClient");var gi={TRY_ONCE:{retryCount:0},TRY_TWICE:{retryCount:1},DEFAULT:{driftFactor:.01,retryCount:10,retryDelay:200,retryJitter:100},DELAY_500:{retryDelay:500},CUSTOM:{},AUTO_EXTEND:{retryCount:-1}};async function Tn(t={}){let e={...gi.DEFAULT,...t},n=(await pf()).client;return new SA.default([n],e)}s(Tn,"newRedlock");function YU(t){let r=`lock:${t.systemLock?"system":q()}_${t.name}`;return t.resource&&(r=r+`_${t.resource}`),r}s(YU,"getLockName");var AA=Ee.fromSeconds(10).toMs();async function Pp(t,e){let r=await jU(t.type,t.customOptions),n,i;try{let o=YU(t),a=t.type==="auto_extend"?AA:t.ttl;if(n=await r.lock(o,a),t.type==="auto_extend"){let c=s(()=>{i=setTimeout(async()=>{n=await n.extend(a,()=>t.onExtend&&t.onExtend()),c()},a/2)},"extendInIntervals");c()}return{executed:!0,result:await e()}}catch(o){if(o.name==="LockError"){if(t.type==="try_once")return{executed:!1};throw o}else throw o}finally{clearTimeout(i),await n?.unlock()}}s(Pp,"doWithLock");var _A=1e4,Np=null;async function Xu(){if(!Np){let t=await ff();Np=new ln(t)}return Np}s(Xu,"getCache");function Co(t,e){return t.name+e}s(Co,"makeCacheKey");function Lp(t,e=null){return{doc:t,lastWrite:e||Date.now()}}s(Lp,"makeCacheItem");async function HU(t,e,r=_A){let n=await Xu(),i=e._id,o;i&&(o=await n.get(Co(t,i)));let a=!o||o.lastWrite<Date.now()-r,u=e;return a&&((await Pp({type:"try_once",name:"persist_writethrough",resource:i,ttl:15e3},async()=>{let l=s(async d=>{let f=await t.put(d,{force:!0});u._id=f.id,u._rev=f.rev},"writeDb");try{await l(e)}catch(d){if(d.status!==409)throw d;si("Ignoring conflict in write-through cache")}})).executed||si("Ignoring redlock conflict in write-through cache")),o=Lp(u,a?null:o?.lastWrite),u._id&&await n.store(Co(t,u._id),o),{ok:!0,id:u._id,rev:u._rev}}s(HU,"put");async function zU(t,e){let r=await Xu(),n=Co(t,e),i=await r.get(n);if(!i){let o=await t.get(e);i=Lp(o),await r.store(n,i)}return i.doc}s(zU,"get");async function JU(t,e){let r=await Xu(),n=Co(t,e),i=await r.get(n);if(!i){let o=await t.tryGet(e);if(!o)return null;i=Lp(o),await r.store(n,i)}return i.doc}s(JU,"tryGet");async function ZU(t,e,r){let n=await Xu();if(!e)throw new Error("No ID/Rev provided.");let i=typeof e=="string"?e:e._id;r=typeof e=="string"?r:e._rev;try{await n.delete(Co(t,i))}finally{await t.remove(i,r)}}s(ZU,"remove");var Up=class{static{s(this,"Writethrough")}constructor(e,r=_A){this.db=e,this.writeRateMs=r}async put(e,r=this.writeRateMs){return HU(this.db,e,r)}async get(e){return zU(this.db,e)}async tryGet(e){return JU(this.db,e)}async remove(e,r){return ZU(this.db,e,r)}};function ec(t){return`config${b}${t}`}s(ec,"generateConfigID");async function rt(t){let e=H();try{return await e.get(ec(t))}catch(r){if(r.status===404)return;throw r}}s(rt,"getConfig");async function XU(t){return t._id||(t._id=ec(t.type)),H().put(t)}s(XU,"save");async function ni(){let t=await rt("settings");return t||(t={_id:ec("settings"),type:"settings",config:{}}),t.config.platformUrl=await bo({tenantAware:!0,config:t.config}),t.config.analyticsEnabled=await Wu({config:t.config}),t}s(ni,"getSettingsConfigDoc");async function Bp(){return(await ni()).config}s(Bp,"getSettingsConfig");async function bo(t={tenantAware:!0}){let e=E.PLATFORM_URL||"http://localhost:10000";if(!E.SELF_HOSTED&&E.MULTI_TENANCY&&t.tenantAware){let r=q();e.includes("localhost:")||(e=e.replace("://",`://${r}.`))}else if(E.SELF_HOSTED){let r=t?.config?t.config:(await rt("settings"))?.config;r?.platformUrl&&(e=r.platformUrl)}return e}s(bo,"getPlatformUrl");var Wu=s(async t=>{if(!E.SELF_HOSTED)return!!E.ENABLE_ANALYTICS;let e=await Ar(ye.ANALYTICS_ENABLED,86400,async()=>{let n=t?.config?t.config:(await rt("settings"))?.config;if(n?.analyticsEnabled===!1)return!1;if(n?.analyticsEnabled===!0)return!0});if(e!==void 0)return e;let r=E.ENABLE_ANALYTICS;return!(r===0||r===!1)},"analyticsEnabled");async function eL(){return await rt("google")}s(eL,"getGoogleConfigDoc");async function tc(){return(await eL())?.config}s(tc,"getGoogleConfig");async function Wp(){if(!E.SELF_HOSTED)return Mp();let t=await tc();return(!t||!t.activated)&&(t=Mp()),t}s(Wp,"getGoogleDatasourceConfig");function Mp(){if(E.GOOGLE_CLIENT_ID&&E.GOOGLE_CLIENT_SECRET)return{clientID:E.GOOGLE_CLIENT_ID,clientSecret:E.GOOGLE_CLIENT_SECRET,activated:!0}}s(Mp,"getDefaultGoogleConfig");async function tL(){return rt("logos_oidc")}s(tL,"getOIDCLogosDoc");async function rL(){return rt("oidc")}s(rL,"getOIDCConfigDoc");async function nL(){let t=(await rL())?.config;return t?.configs&&t.configs[0]}s(nL,"getOIDCConfig");async function $p(t){let e=(await rt("oidc"))?.config;return e&&e.configs.filter(r=>r.uuid===t)[0]}s($p,"getOIDCConfigById");async function OA(){return rt("smtp")}s(OA,"getSMTPConfigDoc");async function iL(t){let e=await OA();if(e)return e.config;let r=E.SELF_HOSTED||!t;if(E.SMTP_FALLBACK_ENABLED&&r)return{port:E.SMTP_PORT,host:E.SMTP_HOST,secure:!1,from:E.SMTP_FROM_ADDRESS,auth:{user:E.SMTP_USER,pass:E.SMTP_PASSWORD},fallback:!0}}s(iL,"getSMTPConfig");async function sL(){return(await rt("scim"))?.config}s(sL,"getSCIMConfig");async function oL(){return rt("ai")}s(oL,"getAIConfig");async function aL(){return rt("recaptcha")}s(aL,"getRecaptchaConfig");var Jp={};N(Jp,{AccessController:()=>qp,BUILTIN_ROLE_IDS:()=>Kp,Role:()=>Dr,RoleHierarchyTraversal:()=>rc,RoleIDVersion:()=>Qp,builtinRoleToNumber:()=>xo,checkForRoleResourceArray:()=>RA,externalRole:()=>pL,findRole:()=>vo,getAllRoleIds:()=>gL,getAllRoles:()=>zp,getBuiltinRole:()=>wA,getBuiltinRoles:()=>Yp,getDBRoleID:()=>CA,getExternalRoleID:()=>Rr,getExternalRoleIDs:()=>bA,getRole:()=>mL,getUserRoleHierarchy:()=>Hp,getUserRoleIdHierarchy:()=>DA,isBuiltin:()=>Sn,lowerBuiltinRoleID:()=>fL,prefixRoleIDNoBuiltin:()=>Vp,roleIDsAreEqual:()=>nt,roleToNumber:()=>dL,saveRoles:()=>hL,validInherits:()=>lL});var IA=require("lodash"),nc=B(require("lodash/fp/cloneDeep")),Gp=B(require("semver"));var Kp={ADMIN:"ADMIN",POWER:"POWER",BASIC:"BASIC",PUBLIC:"PUBLIC"},ie={...Kp,BUILDER:"BUILDER"},Qp={UUID:void 0,NAME:"name"};function cL(t,e){return Array.isArray(e)?e.filter(r=>t.includes(r)).length===e.length:t.includes(e)}s(cL,"rolesInList");var Dr=class{constructor(e,r,n,i){this.permissions={};this._id=e,this.name=r,this.uiMetadata=i,this.permissionId=n,this.version=Qp.NAME}static{s(this,"Role")}addInheritance(e){return e&&typeof e=="string"?e=Vp(e):e&&Array.isArray(e)&&(e=e.map(Vp)),this.inherits=e,this}},rc=class{static{s(this,"RoleHierarchyTraversal")}constructor(e,r){this.allRoles=e,this.opts=r}walk(e){let r=this.opts,n=this.allRoles,i=[];if(!e||!e._id)return i;if(i.push(e),Array.isArray(e.inherits))for(let o of e.inherits){let a=vo(o,n,r);a&&(i=i.concat(this.walk(a)))}else{let o=[],a=e;for(;a&&a.inherits&&!cL(o,a.inherits);){if(Array.isArray(a.inherits))return i.concat(this.walk(a));if(o.push(a.inherits),a=vo(a.inherits,n,r),a&&i.push(a),Ne.roles.checkForRoleInheritanceLoops(i))break}}return(0,IA.uniqBy)(i,o=>o._id)}},jp={ADMIN:new Dr(ie.ADMIN,ie.ADMIN,"admin",{displayName:"App admin",description:"Can do everything",color:"var(--spectrum-global-color-static-red-400)"}).addInheritance(ie.POWER),POWER:new Dr(ie.POWER,ie.POWER,"power",{displayName:"App power user",description:"An app user with more access",color:"var(--spectrum-global-color-static-orange-400)"}).addInheritance(ie.BASIC),BASIC:new Dr(ie.BASIC,ie.BASIC,"write",{displayName:"App user",description:"Any logged in user",color:"var(--spectrum-global-color-static-green-400)"}).addInheritance(ie.PUBLIC),PUBLIC:new Dr(ie.PUBLIC,ie.PUBLIC,"public",{displayName:"Public user",description:"Accessible to anyone",color:"var(--spectrum-global-color-static-blue-400)"}),BUILDER:new Dr(ie.BUILDER,ie.BUILDER,"admin",{displayName:"Builder user",description:"Users that can edit this app",color:"var(--spectrum-global-color-static-magenta-600)"})};function Yp(){return(0,nc.default)(jp)}s(Yp,"getBuiltinRoles");function Sn(t){return Object.values(Kp).includes(t)}s(Sn,"isBuiltin");function Vp(t){return Sn(t)?t:Bt(t)}s(Vp,"prefixRoleIDNoBuiltin");function wA(t){let e=Object.values(jp).find(r=>t.includes(r._id));if(e)return(0,nc.default)(e)}s(wA,"getBuiltinRole");function lL(t,e){if(!e)return!1;let r=s(n=>t.find(i=>nt(i._id,n)),"find");if(Array.isArray(e)){let n=e.filter(i=>r(i));return e.length!==0&&n.length===e.length}else return!!r(e)}s(lL,"validInherits");function xo(t){let e=Yp(),r=Object.values(e).length+1;if(nt(t,ie.ADMIN)||nt(t,ie.BUILDER))return r;let n=e[t],i=0;do{if(!n)break;if(Array.isArray(n.inherits))throw new Error("Built-in roles don't support multi-inheritance");n=e[n.inherits],i++}while(n!==null);return i}s(xo,"builtinRoleToNumber");async function dL(t){if(Sn(t))return xo(t);let e=await Hp(t,{defaultPublic:!0}),r=s(n=>{if(!n.inherits)return 0;if(Array.isArray(n.inherits)){let i=n.inherits.map(o=>{let a=e.find(u=>nt(u._id,o));if(a)return r(a)+1}).filter(o=>o).sort().pop();if(i!=null)return i}else if(Sn(n.inherits))return xo(n.inherits)+1;return 0},"findNumber");return Math.max(...e.map(r))}s(dL,"roleToNumber");function fL(t,e){return t?e&&xo(t)>xo(e)?e:t:e}s(fL,"lowerBuiltinRoleID");function nt(t,e){return Bt(t)===Bt(e)}s(nt,"roleIDsAreEqual");function pL(t){let e;return t._id&&(e=Rr(t._id)),{...t,_id:e,inherits:bA(t.inherits,t.version)}}s(pL,"externalRole");function vo(t,e,r){let n=wA(t);n||(t=Bt(t));let i=e.find(o=>o._id&&nt(o._id,t));return!i&&!Sn(t)&&r?.defaultPublic?(0,nc.default)(jp.PUBLIC):(n=Object.assign(n||{},i),n?._id&&(n._id=Rr(n._id,n.version)),Object.keys(n).length===0?void 0:n)}s(vo,"findRole");async function mL(t,e){let r=Jn(),n=[];if(!Sn(t)){let i=await r.tryGet(CA(t));i&&n.push(i)}return vo(t,n,e)}s(mL,"getRole");async function hL(t){await Jn().bulkDocs(t.filter(r=>r._id).map(r=>({...r,_id:Bt(r._id)})))}s(hL,"saveRoles");async function EL(t,e){let r=await zp();if(nt(t,ie.ADMIN))return r;let n=vo(t,r,e),i=[];return n&&(i=new rc(r,e).walk(n)),i}s(EL,"getAllUserRoles");async function DA(t){return(await Hp(t)).map(r=>r._id)}s(DA,"getUserRoleIdHierarchy");async function Hp(t,e){return EL(t,e)}s(Hp,"getUserRoleHierarchy");function RA(t,e){if(t&&!Array.isArray(t[e])){let r=t[e];t[e]=[r],r==="write"&&t[e].push("read")}return t}s(RA,"checkForRoleResourceArray");async function gL(t){return(await zp(t)).map(r=>r._id)}s(gL,"getAllRoleIds");async function zp(t){if(t)return Ke(t,e);{let r;try{r=Jn()}catch{}return e(r)}async function e(r){let n=[];r&&(n=(await r.allDocs(nu(null,{include_docs:!0}))).rows.map(u=>u.doc),n.forEach(u=>u._id=Rr(u._id,u.version)));let i=Yp(),o=[];!r||await yL(r)?o=[ie.ADMIN,ie.POWER,ie.BASIC,ie.PUBLIC]:o=[ie.ADMIN,ie.BASIC,ie.PUBLIC];for(let a of o){let u=i[a],c=n.filter(l=>nt(l._id,a))[0];c==null?n.push(u||i.BASIC):(n=n.filter(l=>l._id!==c._id),c._id=Rr(u._id,c.version),n.push({...u,...c,name:u.name,_id:Rr(u._id,u.version)}))}for(let a of n)if(a.permissions)for(let u of Object.keys(a.permissions))a.permissions=RA(a.permissions,u);return n}s(e,"internal")}s(zp,"getAllRoles");async function yL(t){let r=(await t.tryGet("app_metadata"))?.creationVersion;return!r||!Gp.default.valid(r)?!0:!Gp.default.gte(r,E.MIN_VERSION_WITHOUT_POWER_ROLE)}s(yL,"shouldIncludePowerRole");var qp=class{static{s(this,"AccessController")}constructor(){this.userHierarchies={}}async hasAccess(e,r){if(e==null||e===""||nt(e,ie.BUILDER)||nt(r,e)||nt(r,ie.BUILDER))return!0;let n=r?this.userHierarchies[r]:null;return!n&&r&&(n=await DA(r),this.userHierarchies[r]=n),n?.find(i=>nt(i,e))!==void 0}async checkScreensAccess(e,r){let n=[];for(let i of e){let o=await this.checkScreenAccess(i,r);o&&n.push(o)}return n}async checkScreenAccess(e,r){let n=e&&e.routing?e.routing.roleId:void 0;return await this.hasAccess(n,r)?e:null}};function CA(t){return t?.startsWith("role")?t:Bt(t)}s(CA,"getDBRoleID");function Rr(t,e){if(t.startsWith(`role${b}`)&&(Sn(t)||e===Qp.NAME)){let r=t.split(b);return r.shift(),r.join(b)}return t}s(Rr,"getExternalRoleID");function bA(t,e){return t&&(typeof t=="string"?Rr(t,e):t.map(r=>Rr(r,e)))}s(bA,"getExternalRoleIDs");var Zp={};N(Zp,{BUILDER:()=>OL,BUILTIN_PERMISSIONS:()=>ic,CREATOR:()=>IL,GLOBAL_BUILDER:()=>wL,PermissionImpl:()=>se,PermissionLevel:()=>wi,PermissionType:()=>Wo,doesHaveBasePermission:()=>AL,getAllowedLevels:()=>NA,getBuiltinPermissionByID:()=>SL,getBuiltinPermissions:()=>TL,isPermissionLevelHigherThanRead:()=>_L,levelToNumber:()=>PA});var xA=B(require("lodash/flatten")),vA=B(require("lodash/fp/cloneDeep"));var se=class{static{s(this,"PermissionImpl")}constructor(e,r){this.type=e,this.level=r}};function PA(t){switch(t){case"execute":return 0;case"read":return 1;case"write":return 2;case"admin":return 3;default:return-1}}s(PA,"levelToNumber");function NA(t){switch(t){case"execute":return["execute"];case"read":return["execute","read"];case"write":case"admin":return["execute","read","write"];default:return[]}}s(NA,"getAllowedLevels");var ic={PUBLIC:{_id:"public",name:"Public",permissions:[new se("webhook","execute")]},READ_ONLY:{_id:"read_only",name:"Read only",permissions:[new se("query","read"),new se("table","read"),new se("app","read")]},WRITE:{_id:"write",name:"Read/Write",permissions:[new se("query","write"),new se("table","write"),new se("automation","execute"),new se("legacy_view","read"),new se("app","read")]},POWER:{_id:"power",name:"Power",permissions:[new se("table","write"),new se("user","read"),new se("automation","execute"),new se("webhook","read"),new se("legacy_view","read"),new se("app","read")]},ADMIN:{_id:"admin",name:"Admin",permissions:[new se("table","admin"),new se("user","admin"),new se("automation","admin"),new se("webhook","read"),new se("query","admin"),new se("legacy_view","read"),new se("app","read")]}};function TL(){return(0,vA.default)(ic)}s(TL,"getBuiltinPermissions");function SL(t){return Object.values(ic).find(r=>r._id===t)}s(SL,"getBuiltinPermissionByID");function AL(t,e,r){let n=[...new Set(r.map(a=>a.permissionId))],i=Object.values(ic),o=(0,xA.default)(i.filter(a=>n.indexOf(a._id)!==-1).map(a=>a.permissions));for(let a of o)if(a.type===t&&NA(a.level).indexOf(e)!==-1)return!0;return!1}s(AL,"doesHaveBasePermission");function _L(t){return PA(t)>1}s(_L,"isPermissionLevelHigherThanRead");var OL="builder",IL="creator",wL="globalBuilder";var lm={};N(lm,{adminOnly:()=>sc,auditLog:()=>oc,authError:()=>Oe,buildAuthMiddleware:()=>u0,buildCsrfMiddleware:()=>l0,buildTenancyMiddleware:()=>c0,builderOnly:()=>fc,builderOrAdmin:()=>pc,google:()=>Jt,internalApi:()=>hc,joiValidator:()=>Po,oidc:()=>Zt,passport:()=>d0,platformLogout:()=>E0,refreshOAuthToken:()=>m0,ssoCallbackUrl:()=>br,updateUserOAuth:()=>h0,workspaceBuilderOrAdmin:()=>yc});var cm={};N(cm,{adminOnly:()=>sc,auditLog:()=>oc,authError:()=>Oe,authenticated:()=>dc,builderOnly:()=>fc,builderOrAdmin:()=>pc,correlation:()=>LA,csp:()=>qA,csrf:()=>mc,datasource:()=>o0,errorHandling:()=>QA,featureFlagCookie:()=>jA,google:()=>Jt,internalApi:()=>hc,ip:()=>YA,joiValidator:()=>Po,local:()=>Ti,oidc:()=>Zt,pino:()=>kA,querystringToBody:()=>t_,ssoCallbackUrl:()=>br,tenancy:()=>gc,workspaceBuilderOrAdmin:()=>yc});var UA=require("uuid");var DL=require("correlation-id"),LA=s((t,e)=>{let r=t.headers["x-budibase-correlation-id"];return r||(r=(0,UA.v4)()),DL.withId(r,()=>e())},"correlationMiddleware");var RL=require("koa-pino-logger"),CL=require("correlation-id");function bL(){return{logger:Iu,genReqId:CL.getId,autoLogging:{ignore:t=>!!t.url?.includes("/health")},serializers:{req:t=>({method:t.method,url:t.url,correlationId:t.id}),res:t=>({status:t.statusCode})}}}s(bL,"pinoSettings");function xL(){return E.HTTP_LOGGING?RL(bL()):(t,e)=>e()}s(xL,"getMiddleware");var kA=xL();var sc=s(async(t,e)=>(!t.internal&&!Rt(t.user)&&t.throw(403,"Admin user only endpoint."),e()),"adminOnly");var oc=s(async(t,e)=>e(),"auditLog");var vL=/\/:(.*?)(\/.*)?$/g,An=s(t=>t?t.map(e=>{let r=e.route,n=e.method,i=r.match(vL);if(i)for(let o of i){let u="/.*"+(o.endsWith("/")?"/":"");r=r.replace(o,u)}return{regex:new RegExp(r),method:n,route:r}}):[],"buildMatcherRegex"),_n=s((t,e)=>e.find(({regex:r,method:n})=>{let i=r.test(t.request.url),o=n==="ALL"?!0:t.request.method.toLowerCase()===n.toLowerCase();return i&&o}),"matches");var im={};N(im,{SecretOption:()=>BA,decrypt:()=>nm,decryptFile:()=>ML,encrypt:()=>UL,encryptFile:()=>LL,getSecret:()=>rm});var zt=B(require("crypto")),Cr=B(require("fs")),Xp=require("path"),em=B(require("zlib"));var ac="aes-256-ctr",FA="-",PL=1e4,NL=32,uc=16,tm=16,BA=(r=>(r.API="api",r.ENCRYPTION="encryption",r))(BA||{});function rm(t){let e,r;switch(t){case"encryption":e=E.ENCRYPTION_KEY,r="ENCRYPTION_KEY";break;case"api":default:e=E.API_ENCRYPTION_KEY,r="API_ENCRYPTION_KEY";break}if(!e)throw new Error(`Secret "${r}" has not been set in environment.`);return e}s(rm,"getSecret");function cc(t,e){return zt.default.pbkdf2Sync(t,new Uint8Array(e),PL,NL,"sha512")}s(cc,"stretchString");function UL(t,e="api"){let r=zt.default.randomBytes(uc),n=cc(rm(e),r),i=zt.default.createCipheriv(ac,new Uint8Array(n),new Uint8Array(r)),o=i.update(t,"utf8"),a=i.final(),u=Buffer.concat([new Uint8Array(o),new Uint8Array(a)]).toString("hex");return`${r.toString("hex")}${FA}${u}`}s(UL,"encrypt");function nm(t,e="api"){let[r,n]=t.split(FA),i=Buffer.from(r,"hex"),o=cc(rm(e),i),a=zt.default.createDecipheriv(ac,new Uint8Array(o),new Uint8Array(i)),u=a.update(n,"hex"),c=a.final();return Buffer.concat([new Uint8Array(u),new Uint8Array(c)]).toString()}s(nm,"decrypt");async function LL({dir:t,filename:e},r){let n=`${e}.enc`,i=(0,Xp.join)(t,e);if(Cr.default.lstatSync(i).isDirectory())throw new Error("Unable to encrypt directory");let o=Cr.default.createReadStream(i),a=Cr.default.createWriteStream((0,Xp.join)(t,n)),u=zt.default.randomBytes(uc),c=zt.default.randomBytes(tm),l=cc(r,u),d=zt.default.createCipheriv(ac,new Uint8Array(l),new Uint8Array(c));return a.write(u),a.write(c),o.pipe(em.default.createGzip()).pipe(d).pipe(a),new Promise(f=>{a.on("finish",()=>{f({filename:n,dir:t})})})}s(LL,"encryptFile");async function kL(t){let e=Cr.default.createReadStream(t),r=await MA(e,uc),n=await MA(e,tm);return e.close(),{salt:r,iv:n}}s(kL,"getSaltAndIV");async function ML(t,e,r){if(Cr.default.lstatSync(t).isDirectory())throw new Error("Unable to decrypt directory");let{salt:n,iv:i}=await kL(t),o=Cr.default.createReadStream(t,{start:uc+tm}),a=Cr.default.createWriteStream(e),u=cc(r,n),c=zt.default.createDecipheriv(ac,new Uint8Array(u),new Uint8Array(i)),l=em.default.createGunzip();return o.pipe(c).pipe(l).pipe(a),new Promise((d,f)=>{a.on("finish",()=>{a.close(),d()}),o.on("error",p=>{a.close(),f(p)}),c.on("error",p=>{a.close(),f(p)}),l.on("error",p=>{a.close(),f(p)}),a.on("error",p=>{a.close(),f(p)})})}s(ML,"decryptFile");function MA(t,e){return new Promise((r,n)=>{let i=0,o=[];t.on("readable",()=>{let a;for(;(a=t.read(e-i))!==null;)o.push(a),i+=a.length;r(Buffer.concat(o.map(u=>new Uint8Array(u))))}),t.on("end",()=>{n(new Error("Insufficient data in the stream."))}),t.on("error",a=>{n(a)})})}s(MA,"readBytes");var $A=B(require("dd-trace"));var FL=E.SESSION_UPDATE_PERIOD?parseInt(E.SESSION_UPDATE_PERIOD):60*1e3;function BL(){return new Date(Date.now()-FL).toISOString()}s(BL,"timeMinusOneMinute");function WA(t,e={}){t.publicEndpoint=e.publicEndpoint||!1,t.isAuthenticated=e.authenticated||!1,t.loginMethod=e.loginMethod,t.user=e.user,t.internal=e.internal||!1,t.version=e.version}s(WA,"finalise");async function WL(t,e){if(js(t))return{valid:!0,user:void 0};let n=nm(t).split(b)[0];return Re(n,async()=>{let i;try{let o=H();i=await $t("by_api_key",{key:t},o)}catch{i=void 0}if(i)return{valid:!0,user:await Do({userId:i,tenantId:n,populateUser:e})};throw new ci})}s(WL,"checkApiKey");function lc(t,e){let r=t.request.headers[e];if(Array.isArray(r))throw new Error("Unexpected header format");return r}s(lc,"getHeader");function dc(t=[],e={publicAllowed:!1}){let r=t?An(t):[];return async(n,i)=>{let o=!1,a=lc(n,"x-budibase-api-version");_n(n,r)&&(o=!0);try{let c=lc(n,"x-budibase-token"),l=Vt(n,"budibase:auth")||su(c),d=lc(n,"x-budibase-api-key");!d&&n.request.headers.authorization&&(d=n.request.headers.authorization.split(" ")[1]);let f=lc(n,"x-budibase-tenant-id"),p=!1,m,h=!1,g;if(l&&!d){let S=l.sessionId,O=l.userId,_;try{_=await hp(O,S),e&&e.populateUser?m=await Do({userId:O,tenantId:_.tenantId,email:_.email,populateUser:e.populateUser(n)}):m=await Do({userId:O,tenantId:_.tenantId,email:_.email}),m.csrfToken=_.csrfToken,g="cookie",_?.lastAccessedAt<BL()&&await mp(_),p=!0}catch(w){p=!1,console.error(`Auth Error: ${w.message}`),gr(n,"budibase:auth")}}if(!p&&d){let S=e.populateUser?e.populateUser(n):null,{valid:O,user:_}=await WL(d,S);O&&(p=!0,g="api_key",m=_,h=!_)}!m&&f?m={tenantId:f}:m&&"password"in m&&delete m.password,p||(p=!1);let y=s(S=>S&&S.email,"isUser");return y(m)&&$A.default.setUser({id:m._id,tenantId:m.tenantId,budibaseAccess:m.budibaseAccess,status:m.status}),WA(n,{authenticated:p,user:m,internal:h,version:a,publicEndpoint:o,loginMethod:g}),y(m)?Bd(m,n,i):i()}catch(c){if(console.error(`Auth Error: ${c.message}`),c?.name==="JsonWebTokenError"?gr(n,"budibase:auth"):c?.code==="invalid_api_key"&&n.throw(403,c.message),e&&e.publicAllowed||o)return WA(n,{authenticated:!1,version:a,publicEndpoint:o}),i();n.throw(c.status||403,c)}}}s(dc,"authenticated");async function fc(t,e){if(t.internal)return e();let r=await on(t);return!r&&!E.isWorker()?t.throw(403,"This request required a workspace id."):!r&&!ke(t.user)?t.throw(403,"Builder user only endpoint."):r&&!Ei(t.user,r)&&t.throw(403,"Workspace builder user only endpoint."),e()}s(fc,"builderOnly");async function pc(t,e){if(t.internal||Rt(t.user))return e();let r=await on(t);return!r&&!E.isWorker()?t.throw(403,"This request required a workspace id."):!r&&!ke(t.user)?t.throw(403,"Admin/Builder user only endpoint."):r&&!Ei(t.user,r)&&t.throw(403,"Workspace Admin/Builder user only endpoint."),e()}s(pc,"builderOrAdmin");var VA=B(require("crypto"));var GA={"default-src":["'self'"],"script-src":["'self'","'unsafe-eval'","https://*.budibase.net","https://cdn.budi.live","https://js.intercomcdn.com","https://widget.intercom.io","https://d2l5prqdbvm3op.cloudfront.net","https://us-assets.i.posthog.com","https://www.google.com/recaptcha/api.js"],"style-src":["'self'","'unsafe-inline'","https://cdn.jsdelivr.net","https://fonts.googleapis.com","https://rsms.me","https://maxcdn.bootstrapcdn.com"],"object-src":["'none'"],"base-uri":["'self'"],"connect-src":["'self'","https://*.budibase.app","https://*.budibaseqa.app","https://*.budibase.net","https://api-iam.intercom.io","https://api-ping.intercom.io","https://app.posthog.com","https://us.i.posthog.com","wss://nexus-websocket-a.intercom.io","wss://nexus-websocket-b.intercom.io","https://nexus-websocket-a.intercom.io","https://nexus-websocket-b.intercom.io","https://uploads.intercomcdn.com","https://uploads.intercomusercontent.com","https://*.amazonaws.com","https://*.s3.amazonaws.com","https://*.s3.us-east-2.amazonaws.com","https://*.s3.us-east-1.amazonaws.com","https://*.s3.us-west-1.amazonaws.com","https://*.s3.us-west-2.amazonaws.com","https://*.s3.af-south-1.amazonaws.com","https://*.s3.ap-east-1.amazonaws.com","https://*.s3.ap-south-1.amazonaws.com","https://*.s3.ap-northeast-2.amazonaws.com","https://*.s3.ap-southeast-1.amazonaws.com","https://*.s3.ap-southeast-2.amazonaws.com","https://*.s3.ap-northeast-1.amazonaws.com","https://*.s3.ca-central-1.amazonaws.com","https://*.s3.cn-north-1.amazonaws.com","https://*.s3.cn-northwest-1.amazonaws.com","https://*.s3.eu-central-1.amazonaws.com","https://*.s3.eu-west-1.amazonaws.com","https://*.s3.eu-west-2.amazonaws.com","https://*.s3.eu-south-1.amazonaws.com","https://*.s3.eu-west-3.amazonaws.com","https://*.s3.eu-north-1.amazonaws.com","https://*.s3.sa-east-1.amazonaws.com","https://*.s3.me-south-1.amazonaws.com","https://*.s3.us-gov-east-1.amazonaws.com","https://*.s3.us-gov-west-1.amazonaws.com","https://api.github.com"],"font-src":["'self'","data:","https://cdn.jsdelivr.net","https://fonts.gstatic.com","https://rsms.me","https://maxcdn.bootstrapcdn.com","https://js.intercomcdn.com","https://fonts.intercomcdn.com"],"frame-src":["'self'","https:"],"img-src":["http:","https:","data:","blob:"],"manifest-src":["'self'"],"media-src":["'self'","https://js.intercomcdn.com","https://cdn.budi.live"],"worker-src":["blob:","'self'"]},$L=/^[A-Za-z0-9-*:/.]+$/,qA=s(async(t,e)=>{let r=VA.default.randomBytes(16).toString("base64");t.state.nonce=r;let n={...GA};if(n["script-src"]=[...GA["script-src"],`'nonce-${r}'`],t.user?.license?.features.includes("customAppScripts")&&t.appId)try{let a=await Bs.getWorkspaceMetadata(t.appId);if("name"in a)for(let u of a.scripts||[]){let c=(u.cspWhitelist||"").split(`
38
+ `).filter(l=>$L.test(l));n["default-src"]=[...n["default-src"],...c]}}catch(a){console.error(`Error occurred in Content-Security-Policy middleware: ${a}`)}let o=Object.entries(n).map(([a,u])=>`${a} ${u.join(" ")}`).join("; ");t.set("Content-Security-Policy",o),await e()},"contentSecurityPolicy");var GL=["GET","HEAD","OPTIONS"],VL=["application/x-www-form-urlencoded","multipart/form-data","text/plain"];function mc(t={noCsrfPatterns:[]}){let e=An(t.noCsrfPatterns);return async(r,n)=>{if(_n(r,e)||GL.indexOf(r.method)!==-1)return n();let o=r.get("content-type")?r.get("content-type").toLowerCase():"";if(!VL.filter(c=>o.includes(c)).length||r.internal)return n();let a=r.user?.csrfToken;if(!a)return n();let u=r.get("x-csrf-token");return(!u||u!==a)&&r.throw(403,"Invalid CSRF token"),n()}}s(mc,"csrf");function KA(t){if(t.includes("-----BEGIN PRIVATE KEY-----"))return!0;for(let e of wy){let r=E[e];if(!(typeof r!="string"||r==="")&&t.includes(r))return!0}return!1}s(KA,"stringContainsSecret");async function QA(t,e){try{await e()}catch(r){let n=r.status||r.statusCode||500;t.status=n,n>=400&&n<500?console.warn(r):console.error("Got 400 response code",r);let i={message:r.message,status:n,validationErrors:r.validation,error:Lu(r)};if(KA(JSON.stringify(i))&&(i={message:"Unexpected error",status:n,error:"Unexpected error"}),E.isTest()&&t.headers["x-budibase-include-stacktrace"]){let o=r;for(;o.cause;)o=o.cause;i.stack=o.stack}t.body=i}}s(QA,"errorHandling");var jA=s(async(t,e)=>{let n=Vt(t,"budibase:featureflags")?.flags||{};await uf(n,async()=>{await e()})},"featureFlagCookie");async function hc(t,e){let r=t.request.headers["x-budibase-api-key"];return r||t.throw(403,"Unauthorized"),Array.isArray(r)&&t.throw(403,"Unauthorized"),js(r)||t.throw(403,"Unauthorized"),e()}s(hc,"internalApi");async function YA(t,e){return t.ip?await nf(t.ip,()=>e()):e()}s(YA,"ip");var Po={};N(Po,{body:()=>qL,params:()=>KL});var sm=B(require("joi"));function HA(t,e,r){let n=r?.errorPrefix??`Invalid ${e}`;return(i,o)=>{if(!t)return o();let a=null,u=i.request?.[e];i[e]!=null?a=i[e]:u!=null&&(a=u),t.append&&(t=t.append({createdAt:sm.default.any().optional(),updatedAt:sm.default.any().optional()}));let{error:c}=t.validate(a,{allowUnknown:r?.allowUnknown});if(c){let l=c.message;n&&(l=`Invalid ${e} - ${l}`),i.throw(400,l)}return o()}}s(HA,"validate");function qL(t,e){return HA(t,"body",e)}s(qL,"body");function KL(t,e){return HA(t,"params",e)}s(KL,"params");var Ti={};N(Ti,{authenticate:()=>YL,options:()=>jL});function Oe(t,e,r){return t(r,null,{message:e})}s(Oe,"authError");async function br(t,e){if(e&&e.callbackURL)return e.callbackURL;let r=await Bp(),n="/api/global/auth";return pr()&&(n+=`/${q()}`),n+=`/${t}/callback`,`${r.platformUrl}${n}`}s(br,"ssoCallbackUrl");var om="Invalid credentials",QL="This account has expired. Please reset your password",jL={passReqToCallback:!0};async function YL(t,e,r,n){if(!e)return Oe(n,"Email Required");if(!r)return Oe(n,"Password Required");let i=await Tt(e);return i==null?(console.info(`user=${e} could not be found`),Oe(n,om)):i.status==="inactive"?(console.info(`user=${e} is inactive`,i),Oe(n,om)):i.password?await kd(r,i.password)?(delete i.password,n(null,i)):Oe(n,om):(console.info(`user=${e} has no password set`,i),Oe(n,QL))}s(YL,"authenticate");var Jt={};N(Jt,{buildVerifyFn:()=>ZA,getCallbackUrl:()=>JL,strategyFactory:()=>am});var No=s(t=>Promise.resolve(t),"ssoSaveUserNoOp");async function Ec(t,e=!0,r,n){if(!n)throw new Error("Save user function must be provided");if(!t.userId)return Oe(r,"sso user id required");if(!t.email)return Oe(r,"sso user email required");let i=Zn(t.userId),o;try{o=await yn(i)}catch(u){if(!u.status||u.status!==404)return Oe(r,"Unexpected error when retrieving existing user",u)}if(o||(o=await Tt(t.email)),!o&&e)return Oe(r,"Email does not yet exist. You must set up your local budibase account first.");o||(o={_id:i,email:t.email,roles:{},tenantId:q()});let a=await HL(o,t);a.forceResetPassword=!1;try{delete a.password,a=await n(a,{hashPassword:!1,requirePassword:!1})}catch(u){return Oe(r,"Error saving user",u)}return r(null,a)}s(Ec,"authenticate");async function HL(t,e){let r,n,i;if(e.profile){let o=e.profile;if(o.name){let a=o.name;a.givenName&&(r=a.givenName),a.familyName&&(n=a.familyName)}}return e.oauth2&&(i={...e.oauth2}),{...t,provider:e.provider,providerType:e.providerType,firstName:r,lastName:n,oauth2:i}}s(HL,"syncUser");var zL=require("passport-google-oauth").OAuth2Strategy;function ZA(t){return(e,r,n,i)=>{let o={provider:"google",providerType:"google",userId:n.id,profile:n,email:n._json.email,oauth2:{accessToken:e,refreshToken:r}};return Ec(o,!0,i,t)}}s(ZA,"buildVerifyFn");async function am(t,e,r){try{let{clientID:n,clientSecret:i}=t;if(!n||!i)throw new Error("Configuration invalid. Must contain google clientID and clientSecret");let o=ZA(r);return new zL({clientID:t.clientID,clientSecret:t.clientSecret,callbackURL:e},o)}catch(n){throw new Error(`Error constructing google authentication strategy: ${n}`)}}s(am,"strategyFactory");async function JL(t){return br("google",t)}s(JL,"getCallbackUrl");var Zt={};N(Zt,{buildVerifyFn:()=>e_,fetchStrategyConfig:()=>t0,getCallbackUrl:()=>r0,strategyFactory:()=>e0});var XA=B(require("node-fetch"));var ZL=require("@techpass/passport-openidconnect").Strategy;function e_(t){return async(e,r,n,i,o,a,u,c,l)=>{let d={provider:e,providerType:"oidc",userId:n.id,profile:n,email:XL(n,i),oauth2:{accessToken:o,refreshToken:a}};return Ec(d,!1,l,t)}}s(e_,"buildVerifyFn");function XL(t,e){if(t._json.email)return t._json.email;if(e.email)return e.email;let r=e.preferred_username;if(r&&bf(r))return r;throw new Error(`Could not determine user email from profile ${JSON.stringify(t)} and claims ${JSON.stringify(e)}`)}s(XL,"getEmail");async function e0(t,e){try{let r=e_(e),n=new ZL(t,r);return n.name="oidc",n}catch(r){throw new Error(`Error constructing OIDC authentication strategy - ${r}`)}}s(e0,"strategyFactory");async function t0(t,e){try{let{clientID:r,clientSecret:n,configUrl:i,pkce:o}=t;if(!r||!n||!e||!i)throw new Error("Configuration invalid. Must contain clientID, clientSecret, callbackUrl and configUrl");let a=await(0,XA.default)(i);if(!a.ok)throw new Error(`Unexpected response when fetching openid-configuration: ${a.statusText}`);let u=await a.json();return{issuer:u.issuer,authorizationURL:u.authorization_endpoint,tokenURL:u.token_endpoint,userInfoURL:u.userinfo_endpoint,clientID:r,clientSecret:n,callbackURL:e,pkce:o}}catch(r){throw new Error(`Error constructing OIDC authentication configuration - ${r}`)}}s(t0,"fetchStrategyConfig");async function r0(){return br("oidc")}s(r0,"getCallbackUrl");function t_(t,e){let r=t.request.query?.query;if(t.request.method.toLowerCase()!=="get"&&t.throw(500,"Query to download middleware can only be used for get requests."),!r)return e();let n=decodeURIComponent(r),i;try{i=JSON.parse(n)}catch{return e()}return t.request.body=i,e()}s(t_,"querystringToBody");function gc(t,e,r={noTenancyRequired:!1}){let n=An(t),i=An(e);return async function(o,a){let c={allowNoTenant:r.noTenancyRequired||!!_n(o,i)};!!_n(o,n)||(c.excludeStrategies=["query"]);let d=Ks(o,c);return o.set("x-budibase-tenant-id",d),Re(d,a)}}s(gc,"tenancy");async function yc(t,e){if(t.internal||Rt(t.user))return e();let r=await on(t);return r&&!ju(t.user,r)?t.throw(403,"Workspace Admin/Builder user only endpoint."):!r&&!E.isWorker()?t.throw(403,"This request required a workspace id."):!r&&!ke(t.user)&&t.throw(403,"Admin/Builder user only endpoint."),e()}s(yc,"workspaceBuilderOrAdmin");var um={};N(um,{postAuth:()=>s0,preAuth:()=>i0});var n0=require("passport-google-oauth").OAuth2Strategy;async function r_(){let t=await Wp();if(!t)throw new Error("No google configuration found");return t}s(r_,"fetchGoogleCreds");async function i0(t,e,r){let n=await r_(),o=`${await bo({tenantAware:!1})}/api/global/auth/datasource/google/callback`,a=await am(n,o,No);return e.query.appId||e.throw(400,"appId query param not present."),t.authenticate(a,{scope:["profile","email","https://www.googleapis.com/auth/spreadsheets"],accessType:"offline",prompt:"consent"})(e,r)}s(i0,"preAuth");async function s0(t,e,r){let n=await r_(),o=`${await bo({tenantAware:!1})}/api/global/auth/datasource/google/callback`,a=Vt(e,"budibase:datasourceauth");if(!a)throw new Error("Unable to fetch datasource auth cookie");return t.authenticate(new n0({clientID:n.clientID,clientSecret:n.clientSecret,callbackURL:o},(u,c,l,d)=>{gr(e,"budibase:datasourceauth"),d(null,{accessToken:u,refreshToken:c})}),{successRedirect:"/",failureRedirect:"/error"},async(u,c)=>{let l=`/builder/workspace/${a.appId}/data`,d=ne();await jt(`datasource:creation:${a.appId}:google:${d}`,{tokens:c}),e.redirect(`${l}/new?continue_google_setup=${d}`)})(e,r)}s(s0,"postAuth");var o0={google:um};var n_=require("koa-passport"),a0=require("passport-local").Strategy,Tc=require("passport-oauth2-refresh"),u0=dc,c0=gc,l0=mc,d0=n_;n_.use(new a0(Ti.options,Ti.authenticate));async function f0(t,e){let r=await Zt.getCallbackUrl(),n,i;try{if(n=await Zt.fetchStrategyConfig(t,r),!n)throw new Error("OIDC Config contents invalid");i=await Zt.strategyFactory(n,No)}catch{throw new Error("Could not refresh OAuth Token")}return Tc.use(i,{setRefreshOAuth2(){return i._getOAuth2Client(n)}}),new Promise(o=>{Tc.requestNewAccessToken("oidc",e,(a,u,c,l)=>{o({err:a,accessToken:u,refreshToken:c,params:l})})})}s(f0,"refreshOIDCAccessToken");async function p0(t,e){let r=await Jt.getCallbackUrl(t),n;try{n=await Jt.strategyFactory(t,r,No)}catch(i){throw new Error(`Error constructing OIDC refresh strategy: message=${i.message}`)}return Tc.use(n),new Promise(i=>{Tc.requestNewAccessToken("google",e,(o,a,u,c)=>{i({err:o,accessToken:a,refreshToken:u,params:c})})})}s(p0,"refreshGoogleAccessToken");async function m0(t,e,r){switch(e){case"oidc":{if(!r)return{err:{data:"OIDC config id not provided"}};let n=await $p(r);return n?f0(n,t):{err:{data:"OIDC configuration not found"}}}case"google":{let n=await tc();return n?p0(n,t):{err:{data:"Google configuration not found"}}}}}s(m0,"refreshOAuthToken");async function h0(t,e){let r={accessToken:e.accessToken,refreshToken:e.refreshToken};try{let n=H(),i=await n.get(t);typeof r.refreshToken!="string"&&delete r.refreshToken,i.oauth2={...i.oauth2,...r},await n.put(i),await Ro(t)}catch(n){console.error("Could not update OAuth details for current user",n)}}s(h0,"updateUserOAuth");async function E0(t){let e=t.ctx,r=t.userId,n=t.keepActiveSession;if(!e)throw new Error("Koa context must be supplied to logout.");let i=Vt(e,"budibase:auth"),o=await co(r);i&&n?o=o.filter(u=>u.sessionId!==i.sessionId):gr(e,"budibase:auth");let a=o.map(({sessionId:u})=>u);await hn(r,{sessionIds:a,reason:"logout"}),await Ku.logout(e.user?.email),await Ro(r)}s(E0,"platformLogout");var fm={};N(fm,{validate:()=>A0});var C=B(require("joi"));var g0=["Relational","Non-relational","Spreadsheet","Object store","Graph","API"];function dm(t,e){let{error:r}=t.validate(e);if(r)throw r}s(dm,"runJoi");function y0(t){let e=C.default.object({type:C.default.string().allow("component").required(),metadata:C.default.object().unknown(!0).required(),hash:C.default.string().optional(),version:C.default.string().optional(),schema:C.default.object({name:C.default.string().required(),settings:C.default.array().items(C.default.object().unknown(!0)).required()}).unknown(!0)});dm(e,t)}s(y0,"validateComponent");function T0(t){let e=C.default.object({type:C.default.string().allow(...Object.values(wc)).required(),required:C.default.boolean().required(),default:C.default.any(),display:C.default.string()}),r=C.default.object({type:C.default.string().allow(...Object.values(Ic)),readable:C.default.boolean(),displayName:C.default.string(),fields:C.default.object().pattern(C.default.string(),e)}).required(),n=C.default.object({type:C.default.string().allow("datasource").required(),metadata:C.default.object().unknown(!0).required(),hash:C.default.string().optional(),version:C.default.string().optional(),schema:C.default.object({docs:C.default.string(),plus:C.default.boolean().optional(),isSQL:C.default.boolean().optional(),auth:C.default.object({type:C.default.string().required()}).optional(),features:C.default.object(Object.fromEntries(Object.values(Dc).map(i=>[i,C.default.boolean().optional()]))).optional(),relationships:C.default.boolean().optional(),description:C.default.string().required(),friendlyName:C.default.string().required(),type:C.default.string().allow(...g0),datasource:C.default.object().pattern(C.default.string(),e).required(),query:C.default.object().pattern(C.default.string(),r).unknown(!0).required(),extra:C.default.object().pattern(C.default.string(),C.default.object({type:C.default.string().required(),displayName:C.default.string().required(),required:C.default.boolean(),data:C.default.object()}))})});dm(n,t)}s(T0,"validateDatasource");function S0(t){let e=C.default.object().pattern(C.default.string(),{type:C.default.string().allow(...Object.values(Rc)).required(),customType:C.default.string().allow(...Object.values(Cc)),title:C.default.string(),description:C.default.string(),enum:C.default.array().items(C.default.string()),pretty:C.default.array().items(C.default.string())}),r=C.default.object({properties:e,required:C.default.array().items(C.default.string())}).concat(e).required(),n=C.default.object({type:C.default.string().allow("automation").required(),metadata:C.default.object().unknown(!0).required(),hash:C.default.string().optional(),version:C.default.string().optional(),schema:C.default.object({name:C.default.string().required(),tagline:C.default.string().required(),icon:C.default.string().required(),description:C.default.string().required(),type:C.default.string().allow("ACTION","LOGIC").required(),stepId:C.default.string().disallow(...Um).required(),inputs:C.default.object().optional(),schema:C.default.object({inputs:r,outputs:r}).required()})});dm(n,t)}s(S0,"validateAutomation");function A0(t){switch(t?.type){case"component":y0(t);break;case"datasource":T0(t);break;case"automation":S0(t);break;default:throw new Error(`Unknown plugin type - check schema.json: ${t.type}`)}}s(A0,"validate");var pm={};N(pm,{Client:()=>Ce,clients:()=>hr,locks:()=>yi,utils:()=>Ga});var mm={};N(mm,{isBlacklisted:()=>O0,refreshBlacklist:()=>a_});var i_=B(require("dns")),Ac=B(require("net"));var s_=require("util");var Sc,_0=(0,s_.promisify)(i_.default.lookup);async function o_(t){return Ac.default.isIP(t)||(t.startsWith("http")||(t=`https://${t}`),t=new URL(t).hostname),(await _0(t,{all:!0})).map(r=>r.address)}s(o_,"lookup");async function a_(){let e=E.BLACKLIST_IPS?.split(",")||[],r=[];for(let n of e){let i=n.trim();if(Ac.default.isIP(i))r.push(i);else{let o=await o_(i);r=r.concat(o)}}Sc=r}s(a_,"refreshBlacklist");async function O0(t){if(Sc||await a_(),Sc?.length===0)return!1;let e;return Ac.default.isIP(t)?e=[t]:e=await o_(t),!!Sc?.find(r=>e.includes(r))}s(O0,"isBlacklisted");var Em={};N(Em,{init:()=>w0});var I0={"user:created":t=>t.userId,"user:updated":t=>t.userId,"user:deleted":t=>t.userId,"user:admin:assigned":t=>t.userId,"user:admin:removed":t=>t.userId,"user:builder:assigned":t=>t.userId,"user:builder:removed":t=>t.userId,"user_group:created":t=>t.groupId,"user_group:updated":t=>t.groupId,"user_group:deleted":t=>t.groupId,"user_group:user_added":t=>t.groupId,"user_group:users_deleted":t=>t.groupId,"user_group:permissions_edited":t=>t.groupId,"automation:deleted":t=>t.automationId,"datasource:deleted":t=>t.datasourceId,"table:deleted":t=>t.tableId,"query:deleted":t=>t.queryId,"workspace_app:deleted":t=>t.workspaceAppId,"view:deleted":t=>t.id};function u_(t,e){let r=I0[t];if(!r)throw new Error("Event does not have a method of document ID extraction");return r(e)}s(u_,"getDocumentId");var Uo=class{constructor(e){this.processors=[];this.processors=e}static{s(this,"DocumentUpdateProcessor")}async processEvent(e,r,n){let i=r.realTenantId,o=u_(e,n);if(!(!i||!o))for(let{events:a,processor:u}of this.processors)a.includes(e)&&await Re(i,async()=>{await u({id:o,tenantId:i,appId:n.appId,properties:n})})}shutdown(){return RS()}};var c_,hm;function w0(t){gt||$u(),hm||(hm=new Uo(t)),c_||(c_=gt.process(async e=>{let{event:r,identity:n,properties:i}=e.data;await hm.processEvent(r,n,i)}))}s(w0,"init");var wm={};N(wm,{COUNT_FIELD_NAME:()=>Om,Sql:()=>y_,SqlTable:()=>_c,designDoc:()=>Im,utils:()=>zd});var p_=require("knex");var D0=require("knex");function gm(t){return["link","formula","ai"].indexOf(t)!==-1}s(gm,"isIgnoredType");function l_(t,e,r,n,i){let o=e&&e.primary?e.primary:[],a=Object.values(e.schema),u=a.filter(p=>p.meta),c=u.length===a.length,l=[];n||(c?t.primary(u.map(p=>p.name)):o.length===1?(t.increments(o[0]).primary(),l.push(o[0])):t.primary(o));let d=Object.values(e.schema).map(p=>p.foreignKey);for(let[p,m]of Object.entries(e.schema)){let h=n?.schema[p];if(h&&h.type||l.includes(p)||i?.updated===p)continue;let g=m.type;switch(g){case"string":case"options":case"longform":case"barcodeqr":case"bb_reference_single":o.includes(p)?t.string(p,255):t.text(p);break;case"number":if(m.meta&&m.meta.toKey&&m.meta.toTable){let{toKey:y,toTable:S}=m.meta;t.integer(p).unsigned(),t.foreign(p).references(`${S}.${y}`)}else d.indexOf(p)===-1&&t.float(p);break;case"bigint":t.bigint(p);break;case"boolean":t.boolean(p);break;case"datetime":m.timeOnly?t.time(p):t.datetime(p,{useTz:!m.ignoreTimezones});break;case"array":case"bb_reference":Ne.schema.isDeprecatedSingleUserColumn(m)?t.text(p):t.json(p);break;case"link":if(m.relationshipType!=="many-to-one"&&m.relationshipType!=="many-to-many"){if(!m.foreignKey||!m.tableId)throw new Error("Invalid relationship schema");let{tableName:y}=Kd(m.tableId),S=r[y];if(!S||!S.primary)throw new Error("Referenced table doesn't exist or has no primary keys");let O=S.primary[0],_=S.schema[O].externalType;_?t.specificType(m.foreignKey,_):t.integer(m.foreignKey).unsigned(),t.foreign(m.foreignKey).references(`${y}.${O}`)}break;case"signature_single":case"attachment":case"attachment_single":t.json(p);break;case"formula":break;case"ai":break;case"auto":case"json":case"internal":throw new Error(`${m.type} is not a valid SQL type`);default:St.unreachable(g)}}let f=i?n?.schema[i.old].type:void 0;return i&&f&&!gm(f)&&t.renameColumn(i.old,i.updated),n&&Object.entries(n.schema).filter(([m,h])=>!gm(h.type)&&e.schema[m]==null).forEach(([m,h])=>{i?.old===m||gm(h.type)||(n.constrained&&n.constrained.indexOf(m)!==-1&&t.dropForeign(m),t.dropColumn(m))}),t}s(l_,"generateSchema");function C0(t,e,r){return t.createTable(e.name,n=>{l_(n,e,r)})}s(C0,"buildCreateTable");function b0(t,e,r,n,i){return t.alterTable(e.name,o=>{l_(o,e,r,n,i)})}s(b0,"buildUpdateTable");function x0(t,e){return t.dropTable(e.name)}s(x0,"buildDeleteTable");var ym=class{static{s(this,"SqlTableQueryBuilder")}constructor(e){this.sqlClient=e}getBaseSqlClient(){return this.sqlClient}getSqlClient(){return this.extendedSqlClient||this.sqlClient}setExtendedSqlClient(e){this.extendedSqlClient=e}_operation(e){return e.operation}_tableQuery(e){let r=(0,D0.knex)({client:this.sqlClient}).schema;e?.schema&&(r=r.withSchema(e.schema));let n;if(!e.table||!e.tables)throw new Error("Cannot execute without table being specified");if(e.table.sourceType==="internal")throw new Error("Cannot perform table actions for SQS.");switch(this._operation(e)){case"CREATE_TABLE":n=C0(r,e.table,e.tables);break;case"UPDATE_TABLE":if(!e.table)throw new Error("Must specify old table for update");if(this.sqlClient==="mysql2"&&e.meta?.renamed){let i=e.meta.renamed.updated;return{sql:`alter table ${e?.schema?`\`${e.schema}\`.\`${e.table.name}\``:`\`${e.table.name}\``} rename column \`${e.meta.renamed.old}\` to \`${i}\`;`,bindings:[]}}if(n=b0(r,e.table,e.tables,e.meta?.oldTable,e.meta?.renamed),this.sqlClient==="mssql"&&e.meta?.renamed){let i=e.meta.renamed.old,o=e.meta.renamed.updated,a=e?.schema?`${e.schema}.${e.table.name}`:`${e.table.name}`,u=Yn(n);if(Array.isArray(u))for(let c of u)c.sql.startsWith("exec sp_rename")&&(c.sql=`exec sp_rename '${a}.${i}', '${o}', 'COLUMN'`,c.bindings=[]);return u}break;case"DELETE_TABLE":n=x0(r,e.table);break;default:throw new Error("Table operation is of unknown type")}return Yn(n)}},_c=ym;var m_=require("lodash");var Om="__bb_total";function d_(){return(E.SQL_MAX_ROWS?parseInt(E.SQL_MAX_ROWS):null)||5e3}s(d_,"getBaseLimit");function Tm(){return(E.SQL_MAX_RELATED_ROWS?parseInt(E.SQL_MAX_RELATED_ROWS):null)||500}s(Tm,"getRelationshipLimit");function v0(t,e){return t.sort((r,n)=>{let i=e.find(a=>a&&r.endsWith(a)),o=e.find(a=>a&&n.endsWith(a));return i&&!o?-1:!i&&o?1:r.localeCompare(n)})}s(v0,"prioritisedArraySort");function h_(t){return Array.isArray(t)?t.map(e=>h_(e)):(t.bindings&&(t.bindings=t.bindings.map(e=>typeof e=="boolean"?e?1:0:e)),t)}s(h_,"convertBooleans");function f_(t){return t.sourceType==="internal"||t.sourceId===vc}s(f_,"isSqs");function P0(t,e='"'){return t.replace(new RegExp(e,"g"),`${e}${e}`)}s(P0,"escapeQuotes");function E_(t,e='"'){return`${e}${P0(t,e)}${e}`}s(E_,"wrap");function Sm(t,e='"'){for(let r in t)typeof t[r]=="string"&&(t[r]=E_(t[r],e));return`[${t.join(",")}]`}s(Sm,"stringifyArray");function g_(t){return km.includes(t.type)&&!Ne.schema.isDeprecatedSingleUserColumn(t)}s(g_,"isJsonColumn");var N0={equal:!1,notEqual:!0,empty:!1,notEmpty:!0,fuzzy:!1,string:!1,range:!1,contains:!1,notContains:!0,containsAny:!1,oneOf:!1,$and:!1,$or:!1},Am=class{constructor(e,r,n){this.SPECIAL_SELECT_CASES={POSTGRES_ARRAY:e=>this.client==="pg"&&e?.externalType?.toLowerCase()==="array",POSTGRES_MONEY:e=>this.client==="pg"&&e?.externalType?.includes("money"),POSTGRES_ENUM:e=>this.client==="pg"&&e?.externalType?.toLowerCase()==="user-defined"&&e?.type==="options",MSSQL_DATES:e=>this.client==="mssql"&&e?.type==="datetime"&&e.timeOnly};this.client=e,this.query=n,this.knex=r,this.splitter=new cr.ColumnSplitter([this.table],{aliases:this.query.tableAliases,columnPrefix:this.query.meta?.columnPrefix})}static{s(this,"InternalBuilder")}get table(){return this.query.table}get knexClient(){return this.knex.client}getFieldSchema(e){let{column:r}=this.splitter.run(e);return this.table.schema[r]}requiresJsonAsStringClient(){return["mssql","mysql2","mariadb","oracledb"].includes(this.client)}quoteChars(){let e=this.knexClient.wrapIdentifier("foo",{});return[e[0],e[e.length-1]]}quote(e){return this.knexClient.wrapIdentifier(e,{})}isQuoted(e){let[r,n]=this.quoteChars();return e.startsWith(r)&&e.endsWith(n)}quotedIdentifier(e){return Array.isArray(e)||(e=this.splitIdentifier(e)),e.map(r=>this.quote(r)).join(".")}castIntToString(e){switch(this.client){case"oracledb":return this.knex.raw("to_char(??)",[e]);case"pg":return this.knex.raw("??::TEXT",[e]);case"mysql2":case"mariadb":return this.knex.raw("CAST(?? AS CHAR)",[e]);case"sqlite3":return this.knex.raw("printf('%d', ??)",[e]);case"mssql":return this.knex.raw("CONVERT(NVARCHAR, ??)",[e])}}rawQuotedIdentifier(e){return this.knex.raw(this.quotedIdentifier(e))}splitIdentifier(e){let[r,n]=this.quoteChars();return this.isQuoted(e)?e.slice(1,-1).split(`${n}.${r}`):e.split(".")}qualifyIdentifier(e){let r=this.getTableName(),n=this.splitIdentifier(e);return n[0]!==r&&n.unshift(r),this.isQuoted(e)?this.quotedIdentifier(n):n.join(".")}generateSelectStatement(){let{table:e,resource:r}=this.query;if(!r||!r.fields||r.fields.length===0)return"*";let n=this.getTableName(e),i=this.table.schema;return r.fields.map(a=>{let u=a.split(/\./g),c,l=u[0];return u.length>1&&(c=u[0],l=u.slice(1).join(".")),{table:c,column:l,field:a}}).filter(({table:a})=>!a||a===n).map(({table:a,column:u,field:c})=>{let l=i[u];return this.SPECIAL_SELECT_CASES.POSTGRES_MONEY(l)?this.knex.raw("??::money::numeric as ??",[this.rawQuotedIdentifier([a,u].join(".")),this.knex.raw(this.quote(c))]):this.SPECIAL_SELECT_CASES.MSSQL_DATES(l)?this.knex.raw("CONVERT(varchar, ??, 108) as ??",[this.rawQuotedIdentifier(c),this.knex.raw(this.quote(c))]):a?this.rawQuotedIdentifier(`${a}.${u}`):this.rawQuotedIdentifier(c)})}convertClobs(e,r){if(this.client!=="oracledb")throw new Error("you've called convertClobs on a DB that's not Oracle, this is a mistake");let i=this.splitIdentifier(e).pop(),o=this.table.schema[i],a=this.rawQuotedIdentifier(e);return(o.type==="string"||o.type==="longform"||o.type==="bb_reference_single"||o.type==="bb_reference"||o.type==="options"||o.type==="barcodeqr")&&(r?.forSelect?a=this.knex.raw("to_char(??) as ??",[a,this.rawQuotedIdentifier(i)]):a=this.knex.raw("to_char(??)",[a])),a}parse(e,r){if(Array.isArray(e))return JSON.stringify(e);if(e==null)return null;if(this.requiresJsonAsStringClient()&&g_(r)&&typeof e=="object")return JSON.stringify(e);if(this.SPECIAL_SELECT_CASES.POSTGRES_ARRAY(r))return`{${e}}`;if(this.client==="oracledb"&&r.type==="datetime"&&r.timeOnly){if(e instanceof Date){let n=e.getHours().toString().padStart(2,"0"),i=e.getMinutes().toString().padStart(2,"0"),o=e.getSeconds().toString().padStart(2,"0");return`${n}:${i}:${o}`}if(typeof e=="string")return new Date(`1970-01-01T${e}Z`)}if(typeof e=="string"&&r.type==="datetime")if(r.timeOnly){if(!Yd(e))return null}else if(r.dateOnly){let n=jd(e);return n?new Date(n):null}else return r.ignoreTimezones?ja(e)?new Date(e):Qd(e)?new Date(e+"Z"):null:ja(e)?new Date(e.trim()):null;return e}parseBody(e){for(let[r,n]of Object.entries(e)){let{column:i}=this.splitter.run(r),o=this.table.schema[i];o&&(e[r]=this.parse(n,o))}return e}parseFilters(e){e=(0,m_.cloneDeep)(e);for(let r of Object.values(Pr)){let n=e[r];if(n)for(let i of Object.keys(n)){if(Array.isArray(n[i])){n[i]=JSON.stringify(n[i]);continue}let{column:o}=this.splitter.run(i),a=this.table.schema[o];a&&(n[i]=this.parse(n[i],a))}}for(let r of Object.values(er)){let n=e[r];if(n)for(let i of Object.keys(n)){let{column:o}=this.splitter.run(i),a=this.table.schema[o];a&&(n[i]=n[i].map(u=>this.parse(u,a)))}}for(let r of Object.values(wn)){let n=e[r];if(n)for(let i of Object.keys(n)){let{column:o}=this.splitter.run(i),a=this.table.schema[o];if(!a)continue;let u=n[i];"low"in u&&(u.low=this.parse(u.low,a)),"high"in u&&(u.high=this.parse(u.high,a))}}return e}addJoinFieldCheck(e,r){let n=r.from?.split(".")[0]||"";return e.andWhere(`${n}.fieldName`,"=",r.column)}addRelationshipForFilter(e,r,n,i){let{relationships:o,schema:a,tableAliases:u,table:c}=this.query,l=u?.[c.name]||c.name,d=s(f=>n.match(new RegExp(`^${f}\\.`)),"matches");if(!o)return e;for(let f of o){let p=f.tableName,m=u?.[p]||p,h=d(p)||d(m),g=d(f.column);if((h||g)&&f.to&&f.tableName){let y=this.knex.select(this.knex.raw(1)).from({[m]:p}),S=y.clone(),O=Hd(f),_;if(h?_=n:_=n.replace(new RegExp(`^${f.column}.`),`${u?.[f.tableName]||f.tableName}.`),O){let w=u?.[O.through]||f.through,T=this.tableNameWithSchema(O.through,{alias:w,schema:a});S=S.innerJoin(T,function(){this.on(`${m}.${O.toPrimary}`,"=",`${w}.${O.to}`)}).where(`${w}.${O.from}`,"=",this.rawQuotedIdentifier(`${l}.${O.fromPrimary}`)),this.client==="sqlite3"&&(S=this.addJoinFieldCheck(S,O)),e=e.where(I=>{I.whereExists(i(_,S)),r&&I.orWhereNotExists(y.clone().innerJoin(T,function(){this.on(`${l}.${O.fromPrimary}`,"=",`${w}.${O.from}`)}))})}else{let w=`${m}.${f.to}`,T=`${l}.${f.from}`;S=S.where(w,"=",this.rawQuotedIdentifier(T)),e=e.where(I=>{I.whereExists(i(_,S.clone())),r&&I.orWhereNotExists(S)})}}}return e}addFilters(e,r,n){if(!r)return e;let i=this;r=this.parseFilters({...r});let o=this.query.tableAliases,a=r.allOr,c=this.client==="sqlite3"?this.table._id:this.table.name;function l(h){return o?.[h]||h}s(l,"getTableAlias");function d(h,g,y,S){let O=s((_,w,T)=>{let[I,...F]=w.split("."),P=F.join("."),M=l(I);return _.andWhere(Y=>y(Y,M?`${M}.${P}`:P,T))},"handleRelationship");for(let _ in h){let w=h[_],T=qs(_),I=T.includes("."),F=n?.relationship&&I,P;if(_==="_complexIdOperator"&&(P=h[_])&&S){let M=l(c);e=S(e,P.id.map(Y=>M?`${M}.${Y}`:Y),P.values)}else if(I)F&&(a&&(e=e.or),e=i.addRelationshipForFilter(e,N0[g],T,(M,Y)=>O(Y,M,w)));else{let M=l(c);e=y(e,M?`${M}.${T}`:T,w)}}}s(d,"iterate");let f=s((h,g,y)=>((r?.fuzzyOr||a)&&(h=h.or),this.client==="oracledb"||this.client==="sqlite3"?h.whereRaw("LOWER(??) LIKE ?",[this.rawQuotedIdentifier(g),`%${y.toLowerCase()}%`]):h.whereILike(this.rawQuotedIdentifier(g),this.knex.raw("?",[`%${y}%`]))),"like"),p=s((h,g=!1)=>{function y(S){return(a||h===r?.containsAny)&&(S=S.or),h===r?.notContains&&(S=S.not),S}s(y,"addModifiers"),this.client==="pg"?d(h,"contains",(S,O,_)=>{S=y(S);let w=this.getFieldSchema(O),T="::jsonb";return this.SPECIAL_SELECT_CASES.POSTGRES_ARRAY(w)&&(T="",_=`{${_.map(F=>F.substring(1,F.length-1))}}`),g?S.whereRaw(T?"COALESCE(??::jsonb \\?| array??, FALSE)":"COALESCE(?? && '??', FALSE)",[this.rawQuotedIdentifier(O),T?this.knex.raw(Sm(_,"'")):this.knex.raw(_)]):S.whereRaw(`COALESCE(??${T} @> '??', FALSE)`,[this.rawQuotedIdentifier(O),T?this.knex.raw(Sm(_)):this.knex.raw(_)])}):this.client==="mysql2"||this.client==="mariadb"?d(h,"contains",(S,O,_)=>y(S).whereRaw("COALESCE(?(??, ?), FALSE)",[this.knex.raw(g?"JSON_OVERLAPS":"JSON_CONTAINS"),this.rawQuotedIdentifier(O),this.knex.raw(E_(Sm(_)))])):d(h,"contains",(S,O,_)=>(_.length===0||(S=S.where(w=>(h===r?.notContains&&(w=w.not),w=w.where(T=>{for(let I of _){h===r?.containsAny?T=T.or:T=T.and;let F=typeof I=="string"?`"${I.toLowerCase()}"`:I;T=T.whereLike(this.knex.raw("COALESCE(LOWER(??), '')",[this.rawQuotedIdentifier(O)]),`%${F}%`)}}),h===r?.notContains&&(w=w.or.whereNull(this.rawQuotedIdentifier(O))),w))),S))},"contains");if(r.$and){let{$and:h}=r;for(let g of h.conditions)e=e.where(y=>{this.addFilters(y,g,n)})}if(r.$or){let{$or:h}=r;e=e.where(g=>{for(let y of h.conditions)g.orWhere(S=>this.addFilters(S,{...y,allOr:!0},n))})}r.oneOf&&d(r.oneOf,"oneOf",(h,g,y)=>{let S=this.getFieldSchema(g),O=Array.isArray(y)?y:[y];if(a&&(h=h.or),this.client==="oracledb")g=this.convertClobs(g);else if(this.client==="sqlite3"&&S?.type==="datetime"&&S.dateOnly){for(let _ of O)_!=null?h=h.or.whereLike(g,`${_.toISOString().slice(0,10)}%`):h=h.or.whereNull(g);return h}return h.whereIn(g,O)},(h,g,y)=>(a&&(h=h.or),this.client==="oracledb"&&(g=g.map(S=>this.convertClobs(S))),h.whereIn(g,Array.isArray(y)?y:[y]))),r.string&&d(r.string,"string",(h,g,y)=>{if(a&&(h=h.or),this.client==="oracledb"||this.client==="sqlite3")return h.whereRaw("LOWER(??) LIKE ?",[this.rawQuotedIdentifier(g),`${y.toLowerCase()}%`]);{let S=this.getFieldSchema(g);return this.SPECIAL_SELECT_CASES.POSTGRES_ENUM(S)?h.whereRaw(`??::text ilike '${y}%'`,[this.knex.raw(this.quote(S.name))]):h.whereILike(g,`${y}%`)}}),r.fuzzy&&d(r.fuzzy,"fuzzy",f),r.range&&d(r.range,"range",(h,g,y)=>{let S=s(P=>P&&Object.keys(P).length===0&&Object.getPrototypeOf(P)===Object.prototype,"isEmptyObject");S(y.low)&&(y.low=""),S(y.high)&&(y.high="");let O=Ya(y.low),_=Ya(y.high),w=this.getFieldSchema(g),T=g,I=y.high,F=y.low;return this.client==="sqlite3"&&w?.type==="datetime"&&w.dateOnly&&(I!=null&&(I=`${I.toISOString().slice(0,10)}T23:59:59.999Z`),F!=null&&(F=F.toISOString().slice(0,10))),this.client==="oracledb"?T=this.convertClobs(g):this.client==="sqlite3"&&w?.type==="bigint"&&(T=this.knex.raw("CAST(?? AS INTEGER)",[this.rawQuotedIdentifier(g)]),I=this.knex.raw("CAST(? AS INTEGER)",[y.high]),F=this.knex.raw("CAST(? AS INTEGER)",[y.low])),a&&(h=h.or),O&&_?h.whereBetween(T,[F,I]):O?h.where(T,">=",F):_?h.where(T,"<=",I):h}),r.equal&&d(r.equal,"equal",(h,g,y)=>{let S=this.getFieldSchema(g);if(a&&(h=h.or),this.client==="mssql")return h.whereRaw("CASE WHEN ?? = ? THEN 1 ELSE 0 END = 1",[this.rawQuotedIdentifier(g),y]);if(this.client==="oracledb"){let O=this.convertClobs(g);return h.where(_=>_.whereNotNull(O).andWhere(O,y))}else return this.client==="sqlite3"&&S?.type==="datetime"&&S.dateOnly?y!=null?h.whereLike(g,`${y.toISOString().slice(0,10)}%`):h.whereNull(g):h.whereRaw("COALESCE(?? = ?, FALSE)",[this.rawQuotedIdentifier(g),y])}),r.notEqual&&d(r.notEqual,"notEqual",(h,g,y)=>{let S=this.getFieldSchema(g);if(a&&(h=h.or),this.client==="mssql")return h.whereRaw("CASE WHEN ?? = ? THEN 1 ELSE 0 END = 0",[this.rawQuotedIdentifier(g),y]);if(this.client==="oracledb"){let O=this.convertClobs(g);return h.where(_=>_.not.whereNull(O).and.where(O,"!=",y)).or.whereNull(O)}else return this.client==="sqlite3"&&S?.type==="datetime"&&S.dateOnly?y!=null?h.not.whereLike(g,`${y.toISOString().slice(0,10)}%`).or.whereNull(g):h.not.whereNull(g):h.whereRaw("COALESCE(?? != ?, TRUE)",[this.rawQuotedIdentifier(g),y])}),r.empty&&d(r.empty,"empty",(h,g)=>(a&&(h=h.or),h.whereNull(g))),r.notEmpty&&d(r.notEmpty,"notEmpty",(h,g)=>(a&&(h=h.or),h.whereNotNull(g))),r.contains&&p(r.contains),r.notContains&&p(r.notContains),r.containsAny&&p(r.containsAny,!0);let m=o?.[this.table._id]||this.table._id;return r.documentType&&!qd(this.table)&&m&&e.andWhereLike(`${m}._id`,`${tr(r.documentType)}%`),e}isSqs(){return f_(this.table)}getTableName(e){e||(e=this.table);let r=e.name;f_(e)&&e._id&&(r=e._id);let n=this.query.tableAliases||{};return n[r]?n[r]:r}addDistinctCount(e){if(!this.table.primary)throw new Error("SQL counting requires primary key to be supplied");return e.countDistinct(`${this.getTableName()}.${this.table.primary[0]} as ${Om}`)}addAggregations(e,r){let n=this.query.resource?.fields||[],i=this.getTableName();if(n.length>0){let o=n.map(a=>this.qualifyIdentifier(a));if(this.client==="oracledb"){let a=o.map(c=>this.convertClobs(c)),u=o.map(c=>this.convertClobs(c,{forSelect:!0}));e=e.groupBy(a).select(u)}else e=e.groupBy(o).select(o)}for(let o of r){let a=o.calculationType;if(a==="count")if("distinct"in o&&o.distinct)if(this.client==="oracledb"){let u=this.convertClobs(`${i}.${o.field}`);e=e.select(this.knex.raw("COUNT(DISTINCT ??) as ??",[u,o.name]))}else e=e.countDistinct(`${i}.${o.field} as ${o.name}`);else if(this.client==="oracledb"){let u=this.convertClobs(`${i}.${o.field}`);e=e.select(this.knex.raw("COUNT(??) as ??",[u,o.name]))}else e=e.count(`${o.field} as ${o.name}`);else{let u=this.getFieldSchema(o.field);if(!u)throw new Error(`field schema missing for aggregation target: ${o.field}`);let c=this.knex.raw("??(??)",[this.knex.raw(a),this.rawQuotedIdentifier(`${i}.${o.field}`)]);u.type==="bigint"&&(c=this.castIntToString(c)),e=e.select(this.knex.raw("?? as ??",[c,o.name]))}}return e}isAggregateField(e){return!!this.query.resource?.aggregations?.find(n=>n.name===e)}addSorting(e){let{sort:r,resource:n}=this.query,i=this.table.primary,o=this.getTableName();if(!Array.isArray(i))throw new Error("Sorting requires primary key to be specified for table");if(r&&Object.keys(r||{}).length>0)for(let[u,c]of Object.entries(r)){let l=this.getFieldSchema(u);if(this.isUnsortableField(l))continue;let d=c.direction==="ascending"?"asc":"desc",f;(this.client==="pg"||this.client==="oracledb")&&(f=c.direction==="ascending"?"first":"last");let p=`${o}.${u}`,m;this.isAggregateField(u)?m=this.rawQuotedIdentifier(u):this.client==="oracledb"?m=this.convertClobs(p):m=this.rawQuotedIdentifier(p),e=e.orderByRaw(`?? ?? ${f?"nulls ??":""}`,[m,this.knex.raw(d),...f?[this.knex.raw(f)]:[]])}if(!((n?.aggregations?.length??0)>0)){let u=this.findSortablePrimaryKey(i);if(u&&(!r||r[u]===void 0))e=e.orderBy(`${o}.${u}`);else if(!u&&(!r||Object.keys(r).length===0))throw new Error(`Primary key not found for table ${this.table.name}`)}return e}isUnsortableField(e){return e?.type==="json"}findSortablePrimaryKey(e){return e.find(r=>{if(r==null)return!1;let n=this.getFieldSchema(r);return!this.isUnsortableField(n)})}tableNameWithSchema(e,r){let n=r?.schema?`${r.schema}.${e}`:e;return r?.alias&&(n+=` as ${r.alias}`),n}buildJsonField(e,r){let n=r.split("."),i=n[n.length-1],o,a;if(n.length>1){let l=n.shift();o=n.join("."),a=`${l}.${o}`}else o=n.join("."),a=o;this.query.meta?.columnPrefix&&(i=i.replace(this.query.meta.columnPrefix,""));let u=this.rawQuotedIdentifier(a),c=e.schema[i];return c&&c.type==="bigint"&&(u=this.castIntToString(u)),[o,u]}maxFunctionParameters(){switch(this.client){case"sqlite3":return 127;case"pg":return 100;default:return 200}}addJsonRelationships(e,r,n){let i=this.client,o=this.knex,{resource:a,tableAliases:u,schema:c,tables:l}=this.query,d=a?.fields||[];for(let f of n){let{tableName:p,through:m,to:h,from:g,fromPrimary:y,toPrimary:S}=f;if(!p||!r)continue;let O=l[p];if(!O)throw new Error(`related table "${p}" not found in datasource`);let _=u?.[p]||p,w=u?.[r]||r,T=m&&u?.[m]||m,I=this.tableNameWithSchema(p,{alias:_,schema:c}),F=[...O?.primary||[],O?.primaryDisplay].filter($=>$),P=v0(d.filter($=>$.split(".")[0]===_),F);P=P.slice(0,Math.floor(this.maxFunctionParameters()/2));let M=P.map($=>this.buildJsonField(O,$));if(!M.length)continue;let Y=M.map($=>{let J=this.client==="oracledb"?" VALUE ":",";return this.knex.raw(`?${J}??`,[$[0],$[1]]).toString()}).join(","),bt=`${_}.${S||h}`,W=o.from(I).orderBy(bt),k=m&&S&&y,v=k?`${T}.${g}`:`${_}.${h}`,G=k?`${w}.${y}`:`${w}.${g}`;if(k){let $=this.tableNameWithSchema(m,{alias:T,schema:c});W=W.join($,function(){this.on(`${_}.${S}`,"=",`${T}.${h}`)})}W=W.where(this.rawQuotedIdentifier(v),"=",this.rawQuotedIdentifier(G));let L=s($=>(W=W.select(P.map(J=>this.rawQuotedIdentifier(J))).limit(Tm()),o.select($).from({[_]:W})),"standardWrap"),D;switch(i){case"sqlite3":W=this.addJoinFieldCheck(W,f),D=L(this.knex.raw(`json_group_array(json_object(${Y}))`));break;case"pg":D=L(this.knex.raw(`json_agg(json_build_object(${Y}))`));break;case"mariadb":D=W.select(o.raw(`json_arrayagg(json_object(${Y}) LIMIT ${Tm()})`));break;case"mysql2":case"oracledb":D=L(this.knex.raw(`json_arrayagg(json_object(${Y}))`));break;case"mssql":{let $=o.select("*").from({[w]:W.select(M.map(J=>o.ref(J[1]).as(J[0]))).limit(Tm())});D=o.raw(`(SELECT ?? = (${$} FOR JSON PATH))`,[this.rawQuotedIdentifier(_)]);break}default:throw new Error(`JSON relationships not implement for ${i}`)}e=e.select({[f.column]:D})}return e}addJoin(e,r,n){let{tableAliases:i,schema:o}=this.query,a=r.to,u=r.from,c=r.through,l=i?.[a]||a,d=c&&i?.[c]||c,f=i?.[u]||u,p=this.tableNameWithSchema(a,{alias:l,schema:o}),m=c?this.tableNameWithSchema(c,{alias:d,schema:o}):void 0;return c?e=e.leftJoin(m,function(){for(let h of n){let g=h.fromPrimary,y=h.from;this.orOn(`${f}.${g}`,"=",`${d}.${y}`)}}).leftJoin(p,function(){for(let h of n){let g=h.toPrimary,y=h.to;this.orOn(`${l}.${g}`,`${d}.${y}`)}}):e=e.leftJoin(p,function(){for(let h of n){let g=h.from,y=h.to;this.orOn(`${f}.${g}`,"=",`${l}.${y}`)}}),e}qualifiedKnex(e){let r=this.query.tableAliases?.[this.query.table.name];return e?.alias===!1?r=void 0:typeof e?.alias=="string"&&(r=e.alias),this.knex(this.tableNameWithSchema(this.query.table.name,{alias:r,schema:this.query.schema}))}create(e){let{body:r}=this.query;if(!r)throw new Error("Cannot create without row body");let n=this.qualifiedKnex({alias:!1}),i=this.parseBody(r);if(this.client==="oracledb")for(let[o,a]of Object.entries(this.query.table.schema)){if(a.constraints?.presence===!0||a.type==="formula"||a.type==="auto"||a.type==="link"||a.type==="ai")continue;i[o]==null&&(i[o]=null)}else for(let[o,a]of Object.entries(i))a==null&&delete i[o];return e.disableReturning?n.insert(i):n.insert(i).returning("*")}bulkCreate(){let{body:e}=this.query,r=this.qualifiedKnex({alias:!1});if(!Array.isArray(e))return r;let n=e.map(i=>this.parseBody(i));return r.insert(n)}bulkUpsert(){let{body:e}=this.query,r=this.qualifiedKnex({alias:!1});if(!Array.isArray(e))return r;let n=e.map(i=>this.parseBody(i));if(this.client==="pg"||this.client==="sqlite3"||this.client==="mysql2"||this.client==="mariadb"){let i=this.table.primary;if(!i)throw new Error("Primary key is required for upsert");return r.insert(n).onConflict(i).merge()}else if(this.client==="mssql"||this.client==="oracledb")return r.insert(n);return r.upsert(n)}read(e={}){let{operation:r,filters:n,paginate:i,relationships:o,table:a}=this.query,{limits:u}=e,c=this.qualifiedKnex(),l=null,d=u?.query||u?.base;if(i&&i.page&&i.limit){let m=(i.page<=1?0:i.page-1)*i.limit;d=i.limit,l=m}else i&&i.offset&&i.limit?(d=i.limit,l=i.offset):i&&i.limit&&(d=i.limit);r!=="COUNT"&&(d!=null&&(c=c.limit(d)),l!=null&&(c=c.offset(l)));let f=this.query.resource?.aggregations||[];if(r==="COUNT"?c=this.addDistinctCount(c):f.length>0?c=this.addAggregations(c,f):c=c.select(this.generateSelectStatement()),r!=="COUNT"&&(c=this.addSorting(c)),c=this.addFilters(c,n,{relationship:!0}),o?.length&&f.length===0){let p=this.query.tableAliases?.[a.name]||a.name,m=this.addSorting(this.knex.with("paginated",c.clone().clearSelect().select("*")).select(this.generateSelectStatement()).from({[p]:"paginated"}));return this.addJsonRelationships(m,a.name,o)}return c}update(e){let{body:r,filters:n}=this.query;if(!r)throw new Error("Cannot update without row body");let i=this.qualifiedKnex(),o=this.parseBody(r);return i=this.addFilters(i,n),e.disableReturning?i.update(o):i.update(o).returning("*")}delete(e){let{filters:r}=this.query,n=this.qualifiedKnex();return n=this.addFilters(n,r),e.disableReturning?n.delete():n.delete().returning(this.generateSelectStatement())}},_m=class extends _c{constructor(r,n=d_()){super(r);this.limit=n}static{s(this,"SqlQueryBuilder")}convertToNative(r,n={}){let i=this.getSqlClient();if(n?.disableBindings)return{sql:r.toString()};{let o=Yn(r);return i==="sqlite3"&&(o=h_(o)),o}}_query(r,n={}){let i=this.getSqlClient(),o={client:this.getBaseSqlClient()};(i==="sqlite3"||i==="oracledb")&&(o.useNullAsDefault=!0);let a=(0,p_.knex)(o),u,c=new Am(i,a,r);switch(this._operation(r)){case"CREATE":u=c.create(n);break;case"READ":u=c.read({limits:{query:this.limit,base:d_()}});break;case"COUNT":u=c.read();break;case"UPDATE":u=c.update(n);break;case"DELETE":u=c.delete(n);break;case"BULK_CREATE":u=c.bulkCreate();break;case"BULK_UPSERT":u=c.bulkUpsert();break;case"CREATE_TABLE":case"UPDATE_TABLE":case"DELETE_TABLE":return this._tableQuery(r);default:throw"Operation type is not supported by SQL query builder"}return this.convertToNative(u,n)}async getReturningRow(r,n){if(!n.extra||!n.extra.idFilter)return{};let i=this._query({operation:"READ",datasource:n.datasource,schema:n.schema,table:n.table,tables:n.tables,resource:{fields:[]},filters:n.extra?.idFilter,paginate:{limit:1}});return r(i,"READ")}checkLookupKeys(r,n){if(!r||!n.table.primary)return n;let i=n.table.primary[0];return n.extra={idFilter:{equal:{[i]:r}}},n}async queryWithReturning(r,n,i=o=>o){let o=this.getSqlClient(),a=this._operation(r),u=this._query(r,{disableReturning:!0});if(Array.isArray(u)){let f=[];for(let p of u)f.push(await n(p,a));return f}let c;a==="DELETE"&&(c=i(await this.getReturningRow(n,r)));let l=await n(u,a),d=i(l);if(a==="CREATE"||a==="UPDATE"){let f;o==="mssql"?f=d?.[0].id:(o==="mysql2"||o==="mariadb")&&(f=d?.insertId),c=i(await this.getReturningRow(n,this.checkLookupKeys(f,r)))}return a==="COUNT"?d:a!=="READ"?c:d.length?d:[{[a.toLowerCase()]:!0}]}getTableName(r,n){let i=r.name;if(r.sourceType==="internal"||r.sourceId===vc){if(!r._id)return;i=r._id}return n?.[i]||i}convertJsonStringColumns(r,n,i){let o=this.getTableName(r,i);for(let[a,u]of Object.entries(r.schema)){if(!g_(u))continue;let c=`${o}.${a}`;for(let l of n)typeof l[c]=="string"&&(l[c]=JSON.parse(l[c])),typeof l[a]=="string"&&(l[a]=JSON.parse(l[a]))}return n}log(r,n){Ds(this.getSqlClient(),r,n)}},y_=_m;var Im={};N(Im,{base:()=>U0});function U0(t){return{_id:wt,language:"sqlite",sql:{tables:{},options:{table_name:t}}}}s(U0,"base");var Dm={};N(Dm,{jsonFromCsvString:()=>L0});var T_=B(require("csvtojson"));async function L0(t,e){let{ignoreEmpty:r=!1,allowSingleColumn:n=!1,possibleDelimiters:i=[",",";",":","|","~"," "," "]}=e||{};for(let o of i){let a,u=!1;try{let c=await(0,T_.default)({ignoreEmpty:r,delimiter:o}).fromString(t);for(let[,l]of c.entries()){let d=Object.keys(l);if(a==null&&(a=d),!n&&d.length===1){u=!0;break}if(a.length!==d.length){u=!0;break}for(let f of a)(l[f]===void 0||l[f]==="")&&(l[f]=null)}if(u)continue;return c}catch{continue}}throw new Error("Unable to determine delimiter")}s(L0,"jsonFromCsvString");var Rm=class{static{s(this,"Endpoint")}constructor(e,r,n){this.method=e,this.url=r,this.controller=n,this.middlewares=[],this.outputMiddlewares=[]}addMiddleware(e,r){return r?.first?this.middlewares.unshift(e):this.middlewares.push(e),this}addOutputMiddleware(e,r){return r?.first?this.outputMiddlewares.unshift(e):this.outputMiddlewares.push(e),this}apply(e){let r=this.method,n=this.url,i=this.middlewares,o=this.controller,a=this.outputMiddlewares,u=s(()=>{},"complete"),c=[n,...i,o,...a,u];e[r](...c)}},Oc=Rm;var S_=B(require("@koa/router"));var On=class{constructor(){this.endpoints=[];this.middlewares=[];this.outputMiddlewares=[];this.applied=!1;this.locked=!1}static{s(this,"EndpointGroup")}addGroupMiddleware(e,r={first:!0}){if(this.locked)throw new Error("Group locked, no more middleware can be added.");return this.middlewares.push({fn:e,first:r.first}),this}addGroupMiddlewareOutput(e,r={first:!1}){if(this.locked)throw new Error("Group locked, no more middleware can be added.");return this.outputMiddlewares.push({fn:e,first:r.first}),this}addEndpoint(e,r,...n){let i=n.pop(),o=new Oc(e,r,i);if(n.length!==0)for(let a of n)o.addMiddleware(a);return this.endpoints.push(o),this}lockMiddleware(){this.locked=!0}post(e,...r){return this.addEndpoint("post",e,...r)}patch(e,...r){return this.addEndpoint("patch",e,...r)}put(e,...r){return this.addEndpoint("put",e,...r)}get(e,...r){return this.addEndpoint("get",e,...r)}delete(e,...r){return this.addEndpoint("delete",e,...r)}head(e,...r){return this.addEndpoint("head",e,...r)}apply(e){let r=this.endpointList();e||(e=new S_.default);for(let n of r)n.apply(e);return e}endpointList(){if(this.applied)throw new Error("Already applied to router");this.applied=!0;for(let e of this.endpoints)this.middlewares.forEach(({fn:r,first:n})=>e.addMiddleware(r,{first:n})),this.outputMiddlewares.forEach(({fn:r,first:n})=>e.addOutputMiddleware(r,{first:n}));return this.endpoints}};var Lo=class{constructor(){this.groups=[]}static{s(this,"EndpointGroupList")}group(...e){let r=new On;return e.length&&e.forEach(n=>{"first"in n?r.addGroupMiddleware(n.middleware,{first:n.first}):r.addGroupMiddleware(n)}),this.groups.push(r),r}listAllEndpoints(){let e=this.groups.flatMap(i=>i.endpointList()),r=[],n=[];for(let i of e)i.url.includes(":")?n.push(i):r.push(i);return[...r,...n]}};var k0={...Qs,...ue},M0=s((t={})=>{Ka(t.db)},"init");0&&(module.exports={AutomationViewMode,BUDIBASE_DATASOURCE_TYPE,BadRequestError,BudibaseError,Config,Cookie,DEFAULT_BB_DATASOURCE_ID,DEFAULT_EMPLOYEE_TABLE_ID,DEFAULT_EXPENSES_TABLE_ID,DEFAULT_INVENTORY_TABLE_ID,DEFAULT_JOBS_TABLE_ID,DEFAULT_TENANT_ID,DeprecatedViews,DesignDocuments,DocumentType,Duration,DurationType,EmailUnavailableError,Endpoint,EndpointGroup,EndpointGroupList,FeatureDisabledError,ForbiddenError,GlobalRole,HTTPError,Header,InternalTable,InvalidAPIKeyError,MAX_VALID_DATE,MIN_VALID_DATE,NotFoundError,NotImplementedError,RedisClient,SEPARATOR,SQLITE_DESIGN_DOC_ID,SQS_DATASOURCE_INTERNAL,StaticDatabases,UNICODE_MAX,USER_METADATA_PREFIX,UnexpectedError,UsageLimitError,UserStatus,ViewName,WORKSPACE_DEV,WORKSPACE_DEV_PREFIX,WORKSPACE_PREFIX,accounts,auth,blacklist,cache,configs,constants,context,csv,db,docIds,docUpdates,encryption,env,errors,events,features,getPublicError,init,installation,locks,logging,middleware,objectStore,permissions,platform,plugins,queue,redis,roles,security,sessions,setEnv,sql,tenancy,timers,userUtils,users,utils,withEnv});
39
39
  //# sourceMappingURL=index.js.map