@budibase/backend-core 3.18.5 → 3.18.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +13 -13
- package/dist/index.js.map +4 -4
- package/dist/package.json +2 -2
- package/dist/src/cache/index.d.ts +5 -5
- package/dist/src/cache/index.js +6 -6
- package/dist/src/cache/index.js.map +1 -1
- package/dist/src/cache/workspaceMetadata.d.ts +22 -0
- package/dist/src/cache/{appMetadata.js → workspaceMetadata.js} +32 -32
- package/dist/src/cache/workspaceMetadata.js.map +1 -0
- package/dist/src/constants/db.d.ts +7 -7
- package/dist/src/constants/db.js +10 -10
- package/dist/src/constants/db.js.map +1 -1
- package/dist/src/context/mainContext.d.ts +18 -18
- package/dist/src/context/mainContext.js +68 -68
- package/dist/src/context/mainContext.js.map +1 -1
- package/dist/src/db/utils.d.ts +11 -11
- package/dist/src/db/utils.js +43 -43
- package/dist/src/db/utils.js.map +1 -1
- package/dist/src/db/views.d.ts +1 -1
- package/dist/src/db/views.js +5 -5
- package/dist/src/db/views.js.map +1 -1
- package/dist/src/docIds/conversions.d.ts +8 -10
- package/dist/src/docIds/conversions.js +33 -40
- package/dist/src/docIds/conversions.js.map +1 -1
- package/dist/src/docIds/ids.d.ts +4 -9
- package/dist/src/docIds/ids.js +8 -16
- package/dist/src/docIds/ids.js.map +1 -1
- package/dist/src/docIds/params.d.ts +2 -2
- package/dist/src/docIds/params.js +4 -4
- package/dist/src/docIds/params.js.map +1 -1
- package/dist/src/environment.js +2 -2
- package/dist/src/environment.js.map +1 -1
- package/dist/src/events/processors/AuditLogsProcessor.d.ts +2 -2
- package/dist/src/events/processors/AuditLogsProcessor.js +2 -2
- package/dist/src/events/processors/AuditLogsProcessor.js.map +1 -1
- package/dist/src/events/processors/posthog/PosthogProcessor.d.ts +1 -1
- package/dist/src/events/processors/posthog/PosthogProcessor.js +3 -3
- package/dist/src/events/processors/posthog/PosthogProcessor.js.map +1 -1
- package/dist/src/events/processors/posthog/rateLimiting.js +2 -2
- package/dist/src/events/processors/posthog/rateLimiting.js.map +1 -1
- package/dist/src/index.d.ts +11 -11
- package/dist/src/logging/pino/logger.js +4 -4
- package/dist/src/logging/pino/logger.js.map +1 -1
- package/dist/src/objectStore/objectStore.js +1 -1
- package/dist/src/objectStore/objectStore.js.map +1 -1
- package/dist/src/redis/init.d.ts +1 -1
- package/dist/src/redis/init.js +8 -8
- package/dist/src/redis/init.js.map +1 -1
- package/dist/src/redis/redlockImpl.d.ts +1 -1
- package/dist/src/redis/redlockImpl.js +3 -3
- package/dist/src/redis/redlockImpl.js.map +1 -1
- package/dist/src/redis/utils.d.ts +1 -1
- package/dist/src/redis/utils.js +1 -1
- package/dist/src/redis/utils.js.map +1 -1
- package/dist/src/security/permissions.d.ts +1 -1
- package/dist/src/tenancy/tenancy.js +2 -2
- package/dist/src/tenancy/tenancy.js.map +1 -1
- package/dist/src/users/users.d.ts +1 -1
- package/dist/src/users/users.js +11 -11
- package/dist/src/users/users.js.map +1 -1
- package/dist/src/utils/utils.js +5 -5
- package/dist/src/utils/utils.js.map +1 -1
- package/package.json +2 -2
- package/dist/src/cache/appMetadata.d.ts +0 -22
- package/dist/src/cache/appMetadata.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
"use strict";var m_=Object.create;var Po=Object.defineProperty;var h_=Object.getOwnPropertyDescriptor;var E_=Object.getOwnPropertyNames;var g_=Object.getPrototypeOf,y_=Object.prototype.hasOwnProperty;var G=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),P=(t,e)=>{for(var r in e)Po(t,r,{get:e[r],enumerable:!0})},Im=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of E_(e))!y_.call(t,i)&&i!==r&&Po(t,i,{get:()=>e[i],enumerable:!(n=h_(e,i))||n.enumerable});return t};var k=(t,e,r)=>(r=t!=null?m_(g_(t)):{},Im(e||!t||!t.__esModule?Po(r,"default",{value:t,enumerable:!0}):r,t)),T_=t=>Im(Po({},"__esModule",{value:!0}),t);var Um=G((wc,Dc)=>{"use strict";(function(t,e){typeof wc=="object"&&typeof Dc<"u"?Dc.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs=e()})(wc,function(){"use strict";var t=1e3,e=6e4,r=36e5,n="millisecond",i="second",s="minute",o="hour",a="day",u="week",c="month",l="quarter",d="year",f="date",m="Invalid Date",p=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,E=/\[([^\]]+)]|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,g={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(F){var U=["th","st","nd","rd"],x=F%100;return"["+F+(U[(x-20)%10]||U[x]||U[0])+"]"}},T=function(F,U,x){var $=String(F);return!$||$.length>=U?F:""+Array(U+1-$.length).join(x)+F},_={s:T,z:function(F){var U=-F.utcOffset(),x=Math.abs(U),$=Math.floor(x/60),O=x%60;return(U<=0?"+":"-")+T($,2,"0")+":"+T(O,2,"0")},m:function F(U,x){if(U.date()<x.date())return-F(x,U);var $=12*(x.year()-U.year())+(x.month()-U.month()),O=U.clone().add($,c),W=x-O<0,B=U.clone().add($+(W?-1:1),c);return+(-($+(x-O)/(W?O-B:B-O))||0)},a:function(F){return F<0?Math.ceil(F)||0:Math.floor(F)},p:function(F){return{M:c,y:d,w:u,d:a,D:f,h:o,m:s,s:i,ms:n,Q:l}[F]||String(F||"").toLowerCase().replace(/s$/,"")},u:function(F){return F===void 0}},S="en",w={};w[S]=g;var y="$isDayjsObject",I=function(F){return F instanceof j||!(!F||!F[y])},M=function F(U,x,$){var O;if(!U)return S;if(typeof U=="string"){var W=U.toLowerCase();w[W]&&(O=W),x&&(w[W]=x,O=W);var B=U.split("-");if(!O&&B.length>1)return F(B[0])}else{var z=U.name;w[z]=U,O=z}return!$&&O&&(S=O),O||!$&&S},v=function(F,U){if(I(F))return F.clone();var x=typeof U=="object"?U:{};return x.date=F,x.args=arguments,new j(x)},L=_;L.l=M,L.i=I,L.w=function(F,U){return v(F,{locale:U.$L,utc:U.$u,x:U.$x,$offset:U.$offset})};var j=function(){function F(x){this.$L=M(x.locale,null,!0),this.parse(x),this.$x=this.$x||x.x||{},this[y]=!0}var U=F.prototype;return U.parse=function(x){this.$d=function($){var O=$.date,W=$.utc;if(O===null)return new Date(NaN);if(L.u(O))return new Date;if(O instanceof Date)return new Date(O);if(typeof O=="string"&&!/Z$/i.test(O)){var B=O.match(p);if(B){var z=B[2]-1||0,le=(B[7]||"0").substring(0,3);return W?new Date(Date.UTC(B[1],z,B[3]||1,B[4]||0,B[5]||0,B[6]||0,le)):new Date(B[1],z,B[3]||1,B[4]||0,B[5]||0,B[6]||0,le)}}return new Date(O)}(x),this.init()},U.init=function(){var x=this.$d;this.$y=x.getFullYear(),this.$M=x.getMonth(),this.$D=x.getDate(),this.$W=x.getDay(),this.$H=x.getHours(),this.$m=x.getMinutes(),this.$s=x.getSeconds(),this.$ms=x.getMilliseconds()},U.$utils=function(){return L},U.isValid=function(){return this.$d.toString()!==m},U.isSame=function(x,$){var O=v(x);return this.startOf($)<=O&&O<=this.endOf($)},U.isAfter=function(x,$){return v(x)<this.startOf($)},U.isBefore=function(x,$){return this.endOf($)<v(x)},U.$g=function(x,$,O){return L.u(x)?this[$]:this.set(O,x)},U.unix=function(){return Math.floor(this.valueOf()/1e3)},U.valueOf=function(){return this.$d.getTime()},U.startOf=function(x,$){var O=this,W=!!L.u($)||$,B=L.p(x),z=function(Pr,xe){var zt=L.w(O.$u?Date.UTC(O.$y,xe,Pr):new Date(O.$y,xe,Pr),O);return W?zt:zt.endOf(a)},le=function(Pr,xe){return L.w(O.toDate()[Pr].apply(O.toDate("s"),(W?[0,0,0,0]:[23,59,59,999]).slice(xe)),O)},ge=this.$W,Oe=this.$M,Qe=this.$D,q="set"+(this.$u?"UTC":"");switch(B){case d:return W?z(1,0):z(31,11);case c:return W?z(1,Oe):z(0,Oe+1);case u:var vr=this.$locale().weekStart||0,yi=(ge<vr?ge+7:ge)-vr;return z(W?Qe-yi:Qe+(6-yi),Oe);case a:case f:return le(q+"Hours",0);case o:return le(q+"Minutes",1);case s:return le(q+"Seconds",2);case i:return le(q+"Milliseconds",3);default:return this.clone()}},U.endOf=function(x){return this.startOf(x,!1)},U.$set=function(x,$){var O,W=L.p(x),B="set"+(this.$u?"UTC":""),z=(O={},O[a]=B+"Date",O[f]=B+"Date",O[c]=B+"Month",O[d]=B+"FullYear",O[o]=B+"Hours",O[s]=B+"Minutes",O[i]=B+"Seconds",O[n]=B+"Milliseconds",O)[W],le=W===a?this.$D+($-this.$W):$;if(W===c||W===d){var ge=this.clone().set(f,1);ge.$d[z](le),ge.init(),this.$d=ge.set(f,Math.min(this.$D,ge.daysInMonth())).$d}else z&&this.$d[z](le);return this.init(),this},U.set=function(x,$){return this.clone().$set(x,$)},U.get=function(x){return this[L.p(x)]()},U.add=function(x,$){var O,W=this;x=Number(x);var B=L.p($),z=function(Oe){var Qe=v(W);return L.w(Qe.date(Qe.date()+Math.round(Oe*x)),W)};if(B===c)return this.set(c,this.$M+x);if(B===d)return this.set(d,this.$y+x);if(B===a)return z(1);if(B===u)return z(7);var le=(O={},O[s]=e,O[o]=r,O[i]=t,O)[B]||1,ge=this.$d.getTime()+x*le;return L.w(ge,this)},U.subtract=function(x,$){return this.add(-1*x,$)},U.format=function(x){var $=this,O=this.$locale();if(!this.isValid())return O.invalidDate||m;var W=x||"YYYY-MM-DDTHH:mm:ssZ",B=L.z(this),z=this.$H,le=this.$m,ge=this.$M,Oe=O.weekdays,Qe=O.months,q=O.meridiem,vr=function(xe,zt,Ti,vo){return xe&&(xe[zt]||xe($,W))||Ti[zt].slice(0,vo)},yi=function(xe){return L.s(z%12||12,xe,"0")},Pr=q||function(xe,zt,Ti){var vo=xe<12?"AM":"PM";return Ti?vo.toLowerCase():vo};return W.replace(E,function(xe,zt){return zt||function(Ti){switch(Ti){case"YY":return String($.$y).slice(-2);case"YYYY":return L.s($.$y,4,"0");case"M":return ge+1;case"MM":return L.s(ge+1,2,"0");case"MMM":return vr(O.monthsShort,ge,Qe,3);case"MMMM":return vr(Qe,ge);case"D":return $.$D;case"DD":return L.s($.$D,2,"0");case"d":return String($.$W);case"dd":return vr(O.weekdaysMin,$.$W,Oe,2);case"ddd":return vr(O.weekdaysShort,$.$W,Oe,3);case"dddd":return Oe[$.$W];case"H":return String(z);case"HH":return L.s(z,2,"0");case"h":return yi(1);case"hh":return yi(2);case"a":return Pr(z,le,!0);case"A":return Pr(z,le,!1);case"m":return String(le);case"mm":return L.s(le,2,"0");case"s":return String($.$s);case"ss":return L.s($.$s,2,"0");case"SSS":return L.s($.$ms,3,"0");case"Z":return B}return null}(xe)||B.replace(":","")})},U.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},U.diff=function(x,$,O){var W,B=this,z=L.p($),le=v(x),ge=(le.utcOffset()-this.utcOffset())*e,Oe=this-le,Qe=function(){return L.m(B,le)};switch(z){case d:W=Qe()/12;break;case c:W=Qe();break;case l:W=Qe()/3;break;case u:W=(Oe-ge)/6048e5;break;case a:W=(Oe-ge)/864e5;break;case o:W=Oe/r;break;case s:W=Oe/e;break;case i:W=Oe/t;break;default:W=Oe}return O?W:L.a(W)},U.daysInMonth=function(){return this.endOf(c).$D},U.$locale=function(){return w[this.$L]},U.locale=function(x,$){if(!x)return this.$L;var O=this.clone(),W=M(x,$,!0);return W&&(O.$L=W),O},U.clone=function(){return L.w(this.$d,this)},U.toDate=function(){return new Date(this.valueOf())},U.toJSON=function(){return this.isValid()?this.toISOString():null},U.toISOString=function(){return this.$d.toISOString()},U.toString=function(){return this.$d.toUTCString()},F}(),Dt=j.prototype;return v.prototype=Dt,[["$ms",n],["$s",i],["$m",s],["$H",o],["$W",a],["$M",c],["$y",d],["$D",f]].forEach(function(F){Dt[F[1]]=function(U){return this.$g(U,F[0],F[1])}}),v.extend=function(F,U){return F.$i||(F(U,j,v),F.$i=!0),v},v.locale=M,v.isDayjs=I,v.unix=function(F){return v(1e3*F)},v.en=w[S],v.Ls=w,v.p={},v})});var nt=G(ve=>{"use strict";Object.defineProperty(ve,"__esModule",{value:!0});ve.Err=ve.Valid=ve.err=ve.valid=void 0;var B_=t=>new Go(t);ve.valid=B_;var $_=t=>new Wo(t);ve.err=$_;var Go=class{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,ve.valid)(e(this.value))}mapErr(e){return(0,ve.valid)(this.value)}};ve.Valid=Go;var Wo=class{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,ve.err)(this.error)}mapErr(e){return(0,ve.err)(e(this.error))}};ve.Err=Wo});var it=G(Bm=>{"use strict";Object.defineProperty(Bm,"__esModule",{value:!0})});var er=G(xc=>{"use strict";Object.defineProperty(xc,"__esModule",{value:!0});Tt();var H=nt();it();var V_=["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"],G_=["sun","mon","tue","wed","thu","fri","sat"],W_=(t,e)=>e[t].lowerLimit===e.preset[t].minValue&&e[t].upperLimit===e.preset[t].maxValue,Ii=(t,e,r)=>{if(e==="months"&&r.useAliases&&V_.indexOf(t.toLowerCase())!==-1||e==="daysOfWeek"&&r.useAliases&&G_.indexOf(t.toLowerCase())!==-1)return(0,H.valid)(!0);let n=Number(t);if(isNaN(n))return(0,H.err)(`Element '${t} of ${e} field is invalid.`);let{lowerLimit:i}=r[e],{upperLimit:s}=r[e];return i&&n<i?(0,H.err)(`Number ${n} of ${e} field is smaller than lower limit '${i}'`):s&&n>s?(0,H.err)(`Number ${n} of ${e} field is bigger than upper limit '${s}'`):(0,H.valid)(!0)},q_=(t,e,r)=>{if(t==="*")return W_(e,r)?(0,H.valid)(!0):(0,H.err)(`Field ${e} uses wildcard '*', but is limited to ${r[e].lowerLimit}-${r[e].upperLimit}`);if(t==="")return(0,H.err)(`One of the elements is empty in ${e} field.`);if(e==="daysOfMonth"&&r.useLastDayOfMonth&&t==="L")return(0,H.valid)(!0);if(e==="daysOfWeek"&&r.useLastDayOfWeek&&t.endsWith("L")){let n=t.slice(0,-1);return n===""?(0,H.valid)(!0):Ii(n,e,r)}if(e==="daysOfMonth"&&r.useNearestWeekday&&t.endsWith("W")){let n=t.slice(0,-1);return n===""?(0,H.err)("The 'W' must be preceded by a day"):r.useLastDayOfMonth&&n==="L"?(0,H.valid)(!0):Ii(n,e,r)}if(e==="daysOfWeek"&&r.useNthWeekdayOfMonth&&t.indexOf("#")!==-1){let[n,i,...s]=t.split("#");if(s.length!==0)return(0,H.err)(`Unexpected number of '#' in ${t}, can only be used once.`);let o=Number(i);return!i||isNaN(o)?(0,H.err)(`Unexpected value following the '#' symbol, a positive number was expected but found ${i}.`):o>5?(0,H.err)("Number of occurrence of the day of the week cannot be greater than 5."):Ii(n,e,r)}return Ii(t,e,r)},$m=(t,e,r,n)=>t==="*"?(0,H.err)(`'*' can't be part of a range in ${e} field.`):t===""?(0,H.err)(`One of the range elements is empty in ${e} field.`):r.useLastDayOfMonth&&e==="daysOfMonth"&&t==="L"&&n===0?(0,H.valid)(!0):Ii(t,e,r),Q_=(t,e,r)=>{let n=t.split("-");if(n.length>2)return(0,H.err)(`List element '${t}' is not valid. (More than one '-')`);if(n.length===1)return q_(n[0],e,r);if(n.length===2){let i=$m(n[0],e,r,0),s=$m(n[1],e,r,1);return i.isError()?i:s.isError()?s:Number(n[0])>Number(n[1])?(0,H.err)(`Lower range end '${n[0]}' is bigger than upper range end '${n[1]}' of ${e} field.`):(0,H.valid)(!0)}return(0,H.err)("Some other error in checkFirstStepElement (rangeArray less than 1)")},K_=(t,e,r)=>{let n=t.split("/");if(n.length>2)return(0,H.err)(`List element '${t}' is not valid. (More than one '/')`);let i=Q_(n[0],e,r);if(i.isError())return i;if(n.length===2){let s=n[1];if(!s)return(0,H.err)(`Second step element '${s}' of '${t}' is not valid (doesnt exist).`);if(isNaN(Number(s)))return(0,H.err)(`Second step element '${s}' of '${t}' is not valid (not a number).`);if(Number(s)===0)return(0,H.err)(`Second step element '${s}' of '${t}' cannot be zero.`)}return(0,H.valid)(!0)},j_=(t,e,r)=>{if(!["seconds","minutes","hours","daysOfMonth","months","daysOfWeek","years"].includes(e))return(0,H.err)([`Cron field type '${e}' does not exist.`]);if(t==="?")return e==="daysOfMonth"||e==="daysOfWeek"?r.useBlankDay?(0,H.valid)(!0):(0,H.err)([`useBlankDay is not enabled, but is used in ${e} field`]):(0,H.err)([`blank notation is not allowed in ${e} field`]);let n=t.split(","),i=[];if(n.forEach(o=>{i.push(K_(o,e,r))}),i.every(o=>o.isValid()))return(0,H.valid)(!0);let s=[];return i.forEach(o=>{o.isError()&&s.push(o.getError())}),(0,H.err)(s)};xc.default=j_});var Vm=G(Oi=>{"use strict";var Y_=Oi&&Oi.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Oi,"__esModule",{value:!0});Tt();var H_=nt(),z_=Y_(er());it();var J_=(t,e)=>{if(!t.seconds)return(0,H_.err)(["seconds field is undefined, but useSeconds options is enabled."]);let{seconds:r}=t;return(0,z_.default)(r,"seconds",e)};Oi.default=J_});var Gm=G(wi=>{"use strict";var Z_=wi&&wi.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(wi,"__esModule",{value:!0});Tt();var X_=nt(),eI=Z_(er());it();var tI=(t,e)=>{if(!t.minutes)return(0,X_.err)(["minutes field is undefined."]);let{minutes:r}=t;return(0,eI.default)(r,"minutes",e)};wi.default=tI});var Wm=G(Di=>{"use strict";var rI=Di&&Di.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Di,"__esModule",{value:!0});Tt();var nI=nt(),iI=rI(er());it();var sI=(t,e)=>{if(!t.hours)return(0,nI.err)(["hours field is undefined."]);let{hours:r}=t;return(0,iI.default)(r,"hours",e)};Di.default=sI});var qm=G(bi=>{"use strict";var oI=bi&&bi.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(bi,"__esModule",{value:!0});Tt();var Ri=nt(),aI=oI(er());it();var uI=(t,e)=>{if(!t.daysOfMonth)return(0,Ri.err)(["daysOfMonth field is undefined."]);let{daysOfMonth:r}=t;return e.allowOnlyOneBlankDayField&&e.useBlankDay&&t.daysOfMonth==="?"&&t.daysOfWeek==="?"?(0,Ri.err)(["Cannot use blank value in daysOfMonth and daysOfWeek field when allowOnlyOneBlankDayField option is enabled."]):e.mustHaveBlankDayField&&t.daysOfMonth!=="?"&&t.daysOfWeek!=="?"?(0,Ri.err)(["Cannot specify both daysOfMonth and daysOfWeek field when mustHaveBlankDayField option is enabled."]):e.useLastDayOfMonth&&t.daysOfMonth.indexOf("L")!==-1&&t.daysOfMonth.match(/[,/]/)?(0,Ri.err)(["Cannot specify last day of month with lists, or ranges (symbols ,/)."]):e.useNearestWeekday&&t.daysOfMonth.indexOf("W")!==-1&&t.daysOfMonth.match(/[,/-]/)?(0,Ri.err)(["Cannot specify nearest weekday with lists, steps or ranges (symbols ,-/)."]):(0,aI.default)(r,"daysOfMonth",e)};bi.default=uI});var Qm=G(Ci=>{"use strict";var cI=Ci&&Ci.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Ci,"__esModule",{value:!0});Tt();var lI=nt(),dI=cI(er());it();var fI=(t,e)=>{if(!t.months)return(0,lI.err)(["months field is undefined."]);let{months:r}=t;return(0,dI.default)(r,"months",e)};Ci.default=fI});var Km=G(vi=>{"use strict";var pI=vi&&vi.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(vi,"__esModule",{value:!0});Tt();var xi=nt(),mI=pI(er());it();var hI=(t,e)=>{if(!t.daysOfWeek)return(0,xi.err)(["daysOfWeek field is undefined."]);let{daysOfWeek:r}=t;return e.allowOnlyOneBlankDayField&&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.useLastDayOfWeek&&t.daysOfWeek.indexOf("L")!==-1&&t.daysOfWeek.match(/[,/-]/)?(0,xi.err)(["Cannot specify last day of week with lists, steps or ranges (symbols ,-/)."]):e.useNthWeekdayOfMonth&&t.daysOfWeek.indexOf("#")!==-1&&t.daysOfWeek.match(/[,/-]/)?(0,xi.err)(["Cannot specify Nth weekday of month with lists, steps or ranges (symbols ,-/)."]):(0,mI.default)(r,"daysOfWeek",e)};vi.default=hI});var jm=G(Pi=>{"use strict";var EI=Pi&&Pi.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Pi,"__esModule",{value:!0});Tt();var gI=nt(),yI=EI(er());it();var TI=(t,e)=>{if(!t.years)return(0,gI.err)(["years field is undefined, but useYears option is enabled."]);let{years:r}=t;return(0,yI.default)(r,"years",e)};Pi.default=TI});var Jm=G((AM,zm)=>{"use strict";var vc;try{vc=Map}catch{}var Pc;try{Pc=Set}catch{}function Ym(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(Hm);if(vc&&t instanceof vc)return new Map(Array.from(t.entries()));if(Pc&&t instanceof Pc)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 s=e.findIndex(function(o){return o===t[i]});n[i]=s>-1?r[s]:Ym(t[i],e,r)}return n}return t}function Hm(t){return Ym(t,[],[])}zm.exports=Hm});var Ni=G(Nc=>{"use strict";Object.defineProperty(Nc,"__esModule",{value:!0});Nc.default=DI;var AI=Object.prototype.toString,SI=Error.prototype.toString,_I=RegExp.prototype.toString,II=typeof Symbol<"u"?Symbol.prototype.toString:()=>"",OI=/^Symbol\((.*)\)(.*)$/;function wI(t){return t!=+t?"NaN":t===0&&1/t<0?"-0":""+t}function Zm(t,e=!1){if(t==null||t===!0||t===!1)return""+t;let r=typeof t;if(r==="number")return wI(t);if(r==="string")return e?`"${t}"`:t;if(r==="function")return"[Function "+(t.name||"anonymous")+"]";if(r==="symbol")return II.call(t).replace(OI,"Symbol($1)");let n=AI.call(t).slice(8,-1);return n==="Date"?isNaN(t.getTime())?""+t:t.toISOString(t):n==="Error"||t instanceof Error?"["+SI.call(t)+"]":n==="RegExp"?_I.call(t):null}function DI(t,e){let r=Zm(t,e);return r!==null?r:JSON.stringify(t,function(n,i){let s=Zm(this[n],e);return s!==null?s:i},2)}});var bt=G(ye=>{"use strict";Object.defineProperty(ye,"__esModule",{value:!0});ye.default=ye.array=ye.object=ye.boolean=ye.date=ye.number=ye.string=ye.mixed=void 0;var Xm=RI(Ni());function RI(t){return t&&t.__esModule?t:{default:t}}var eh={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,s=`${t} must be a \`${e}\` type, but the final value was: \`${(0,Xm.default)(r,!0)}\``+(i?` (cast from the value \`${(0,Xm.default)(n,!0)}\`).`:".");return r===null&&(s+='\n If "null" is intended as an empty value be sure to mark the schema as `.nullable()`'),s},defined:"${path} must be defined"};ye.mixed=eh;var th={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"};ye.string=th;var rh={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"};ye.number=rh;var nh={min:"${path} field must be later than ${min}",max:"${path} field must be at earlier than ${max}"};ye.date=nh;var ih={isValue:"${path} field must be ${value}"};ye.boolean=ih;var sh={noUnknown:"${path} field has unspecified keys: ${unknown}"};ye.object=sh;var oh={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"};ye.array=oh;var bI=Object.assign(Object.create(null),{mixed:eh,string:th,number:rh,date:nh,object:sh,array:oh,boolean:ih});ye.default=bI});var wn=G(qo=>{"use strict";Object.defineProperty(qo,"__esModule",{value:!0});qo.default=void 0;var CI=t=>t&&t.__isYupSchema__;qo.default=CI});var uh=G(Qo=>{"use strict";Object.defineProperty(Qo,"__esModule",{value:!0});Qo.default=void 0;var xI=ah(require("lodash/has")),vI=ah(wn());function ah(t){return t&&t.__esModule?t:{default:t}}var Uc=class{constructor(e,r){if(this.refs=e,this.refs=e,typeof r=="function"){this.fn=r;return}if(!(0,xI.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:s}=r,o=typeof n=="function"?n:(...a)=>a.every(u=>u===n);this.fn=function(...a){let u=a.pop(),c=a.pop(),l=o(...a)?i:s;if(l)return typeof l=="function"?l(c):c.concat(l.resolve(u))}}resolve(e,r){let n=this.refs.map(s=>s.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,vI.default)(i))throw new TypeError("conditions must return a schema object");return i.resolve(r)}},PI=Uc;Qo.default=PI});var Mc=G(Lc=>{"use strict";Object.defineProperty(Lc,"__esModule",{value:!0});Lc.default=NI;function NI(t){return t==null?[]:[].concat(t)}});var Ur=G(Ko=>{"use strict";Object.defineProperty(Ko,"__esModule",{value:!0});Ko.default=void 0;var UI=ch(Ni()),LI=ch(Mc());function ch(t){return t&&t.__esModule?t:{default:t}}function kc(){return kc=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},kc.apply(this,arguments)}var MI=/\$\{\s*(\w+)\s*\}/g,Fc=class t extends Error{static formatError(e,r){let n=r.label||r.path||"this";return n!==r.path&&(r=kc({},r,{path:n})),typeof e=="string"?e.replace(MI,(i,s)=>(0,UI.default)(r[s])):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,LI.default)(e).forEach(s=>{t.isError(s)?(this.errors.push(...s.errors),this.inner=this.inner.concat(s.inner.length?s.inner:s)):this.errors.push(s)}),this.message=this.errors.length>1?`${this.errors.length} errors occurred`:this.errors[0],Error.captureStackTrace&&Error.captureStackTrace(this,t)}};Ko.default=Fc});var jo=G($c=>{"use strict";Object.defineProperty($c,"__esModule",{value:!0});$c.default=BI;var Bc=kI(Ur());function kI(t){return t&&t.__esModule?t:{default:t}}var FI=t=>{let e=!1;return(...r)=>{e||(e=!0,t(...r))}};function BI(t,e){let{endEarly:r,tests:n,args:i,value:s,errors:o,sort:a,path:u}=t,c=FI(e),l=n.length,d=[];if(o=o||[],!l)return o.length?c(new Bc.default(o,s,u)):c(null,s);for(let f=0;f<n.length;f++){let m=n[f];m(i,function(E){if(E){if(!Bc.default.isError(E))return c(E,s);if(r)return E.value=s,c(E,s);d.push(E)}if(--l<=0){if(d.length&&(a&&d.sort(a),o.length&&d.push(...o),o=d),o.length){c(new Bc.default(o,s,u),s);return}c(null,s)}})}}});var Ui=G((bM,mh)=>{"use strict";function Lr(t){this._maxSize=t,this.clear()}Lr.prototype.clear=function(){this._size=0,this._values=Object.create(null)};Lr.prototype.get=function(t){return this._values[t]};Lr.prototype.set=function(t,e){return this._size>=this._maxSize&&this.clear(),t in this._values||this._size++,this._values[t]=e};var $I=/[^.^\]^[]+|(?=\[\]|\.\.)/g,ph=/^\d+$/,VI=/^\d/,GI=/[~`!#$%\^&*+=\-\[\]\\';,/{}|\\":<>\?]/g,WI=/^\s*(['"]?)(.*?)(\1)\s*$/,Wc=512,lh=new Lr(Wc),dh=new Lr(Wc),fh=new Lr(Wc);mh.exports={Cache:Lr,split:Gc,normalizePath:Vc,setter:function(t){var e=Vc(t);return dh.get(t)||dh.set(t,function(n,i){for(var s=0,o=e.length,a=n;s<o-1;){var u=e[s];if(u==="__proto__"||u==="constructor"||u==="prototype")return n;a=a[e[s++]]}a[e[s]]=i})},getter:function(t,e){var r=Vc(t);return fh.get(t)||fh.set(t,function(i){for(var s=0,o=r.length;s<o;)if(i!=null||!e)i=i[r[s++]];else return;return i})},join:function(t){return t.reduce(function(e,r){return e+(qc(r)||ph.test(r)?"["+r+"]":(e?".":"")+r)},"")},forEach:function(t,e,r){qI(Array.isArray(t)?t:Gc(t),e,r)}};function Vc(t){return lh.get(t)||lh.set(t,Gc(t).map(function(e){return e.replace(WI,"$2")}))}function Gc(t){return t.match($I)||[""]}function qI(t,e,r){var n=t.length,i,s,o,a;for(s=0;s<n;s++)i=t[s],i&&(jI(i)&&(i='"'+i+'"'),a=qc(i),o=!a&&/^\d+$/.test(i),e.call(r,i,a,o,s,t))}function qc(t){return typeof t=="string"&&t&&["'",'"'].indexOf(t.charAt(0))!==-1}function QI(t){return t.match(VI)&&!t.match(ph)}function KI(t){return GI.test(t)}function jI(t){return!qc(t)&&(QI(t)||KI(t))}});var Mr=G(Mi=>{"use strict";Object.defineProperty(Mi,"__esModule",{value:!0});Mi.create=HI;Mi.default=void 0;var YI=Ui(),Yo={context:"$",value:"."};function HI(t,e){return new Li(t,e)}var Li=class{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]===Yo.context,this.isValue=this.key[0]===Yo.value,this.isSibling=!this.isContext&&!this.isValue;let n=this.isContext?Yo.context:this.isValue?Yo.value:"";this.path=this.key.slice(n.length),this.getter=this.path&&(0,YI.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}};Mi.default=Li;Li.prototype.__isYupRef=!0});var hh=G(Kc=>{"use strict";Object.defineProperty(Kc,"__esModule",{value:!0});Kc.default=XI;var zI=Qc(require("lodash/mapValues")),Ho=Qc(Ur()),JI=Qc(Mr());function Qc(t){return t&&t.__esModule?t:{default:t}}function zo(){return zo=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},zo.apply(this,arguments)}function ZI(t,e){if(t==null)return{};var r={},n=Object.keys(t),i,s;for(s=0;s<n.length;s++)i=n[s],!(e.indexOf(i)>=0)&&(r[i]=t[i]);return r}function XI(t){function e(r,n){let{value:i,path:s="",label:o,options:a,originalValue:u,sync:c}=r,l=ZI(r,["value","path","label","options","originalValue","sync"]),{name:d,test:f,params:m,message:p}=t,{parent:E,context:g}=a;function T(I){return JI.default.isRef(I)?I.getValue(i,E,g):I}function _(I={}){let M=(0,zI.default)(zo({value:i,originalValue:u,label:o,path:I.path||s},m,I.params),T),v=new Ho.default(Ho.default.formatError(I.message||p,M),i,M.path,I.type||d);return v.params=M,v}let S=zo({path:s,parent:E,type:d,createError:_,resolve:T,options:a,originalValue:u},l);if(!c){try{Promise.resolve(f.call(S,i,S)).then(I=>{Ho.default.isError(I)?n(I):I?n(null,I):n(_())})}catch(I){n(I)}return}let w;try{var y;if(w=f.call(S,i,S),typeof((y=w)==null?void 0:y.then)=="function")throw new Error(`Validation test of type: "${S.type}" returned a Promise during a synchronous validate. This test will finish after the validate call has returned`)}catch(I){n(I);return}Ho.default.isError(w)?n(w):w?n(null,w):n(_())}return e.OPTIONS=t,e}});var jc=G(ki=>{"use strict";Object.defineProperty(ki,"__esModule",{value:!0});ki.getIn=Eh;ki.default=void 0;var eO=Ui(),tO=t=>t.substr(0,t.length-1).substr(1);function Eh(t,e,r,n=r){let i,s,o;return e?((0,eO.forEach)(e,(a,u,c)=>{let l=u?tO(a):a;if(t=t.resolve({context:n,parent:i,value:r}),t.innerType){let d=c?parseInt(l,10):0;if(r&&d>=r.length)throw new Error(`Yup.reach cannot resolve an array item at index: ${a}, in the path: ${e}. because there is no value at that index. `);i=r,r=r&&r[d],t=t.innerType}if(!c){if(!t.fields||!t.fields[l])throw new Error(`The schema does not contain the path: ${e}. (failed at: ${o} which is a type: "${t._type}")`);i=r,r=r&&r[l],t=t.fields[l]}s=l,o=u?"["+a+"]":"."+a}),{schema:t,parent:i,parentPath:s}):{parent:i,parentPath:e,schema:t}}var rO=(t,e,r,n)=>Eh(t,e,r,n).schema,nO=rO;ki.default=nO});var yh=G(Jo=>{"use strict";Object.defineProperty(Jo,"__esModule",{value:!0});Jo.default=void 0;var gh=iO(Mr());function iO(t){return t&&t.__esModule?t:{default:t}}var Yc=class t{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){gh.default.isRef(e)?this.refs.set(e.key,e):this.list.add(e)}delete(e){gh.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}};Jo.default=Yc});var xt=G(Xo=>{"use strict";Object.defineProperty(Xo,"__esModule",{value:!0});Xo.default=void 0;var Th=Ct(Jm()),Dn=bt(),sO=Ct(uh()),Ah=Ct(jo()),Zo=Ct(hh()),Sh=Ct(Ni()),oO=Ct(Mr()),aO=jc(),uO=Ct(Mc()),_h=Ct(Ur()),Ih=Ct(yh());function Ct(t){return t&&t.__esModule?t:{default:t}}function Ke(){return Ke=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},Ke.apply(this,arguments)}var st=class{constructor(e){this.deps=[],this.conditions=[],this._whitelist=new Ih.default,this._blacklist=new Ih.default,this.exclusiveTests=Object.create(null),this.tests=[],this.transforms=[],this.withMutation(()=>{this.typeError(Dn.mixed.notType)}),this.type=e?.type||"mixed",this.spec=Ke({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=Ke({},this.exclusiveTests),r.deps=[...this.deps],r.conditions=[...this.conditions],r.tests=[...this.tests],r.transforms=[...this.transforms],r.spec=(0,Th.default)(Ke({},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=Ke({},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(s=>{e.tests.forEach(o=>{s.test(o.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,s)=>s.resolve(i,e),r),r=r.resolve(e)}return r}cast(e,r={}){let n=this.resolve(Ke({value:e},r)),i=n._cast(e,r);if(e!==void 0&&r.assert!==!1&&n.isType(i)!==!0){let s=(0,Sh.default)(e),o=(0,Sh.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 f_=Object.create;var Po=Object.defineProperty;var p_=Object.getOwnPropertyDescriptor;var m_=Object.getOwnPropertyNames;var h_=Object.getPrototypeOf,E_=Object.prototype.hasOwnProperty;var V=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),P=(t,e)=>{for(var r in e)Po(t,r,{get:e[r],enumerable:!0})},_m=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of m_(e))!E_.call(t,i)&&i!==r&&Po(t,i,{get:()=>e[i],enumerable:!(n=p_(e,i))||n.enumerable});return t};var M=(t,e,r)=>(r=t!=null?f_(h_(t)):{},_m(e||!t||!t.__esModule?Po(r,"default",{value:t,enumerable:!0}):r,t)),g_=t=>_m(Po({},"__esModule",{value:!0}),t);var Nm=V((wc,Dc)=>{"use strict";(function(t,e){typeof wc=="object"&&typeof Dc<"u"?Dc.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs=e()})(wc,function(){"use strict";var t=1e3,e=6e4,r=36e5,n="millisecond",i="second",s="minute",o="hour",a="day",u="week",c="month",l="quarter",d="year",f="date",m="Invalid Date",p=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,E=/\[([^\]]+)]|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,g={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(F){var U=["th","st","nd","rd"],x=F%100;return"["+F+(U[(x-20)%10]||U[x]||U[0])+"]"}},T=function(F,U,x){var $=String(F);return!$||$.length>=U?F:""+Array(U+1-$.length).join(x)+F},_={s:T,z:function(F){var U=-F.utcOffset(),x=Math.abs(U),$=Math.floor(x/60),O=x%60;return(U<=0?"+":"-")+T($,2,"0")+":"+T(O,2,"0")},m:function F(U,x){if(U.date()<x.date())return-F(x,U);var $=12*(x.year()-U.year())+(x.month()-U.month()),O=U.clone().add($,c),G=x-O<0,B=U.clone().add($+(G?-1:1),c);return+(-($+(x-O)/(G?O-B:B-O))||0)},a:function(F){return F<0?Math.ceil(F)||0:Math.floor(F)},p:function(F){return{M:c,y:d,w:u,d:a,D:f,h:o,m:s,s:i,ms:n,Q:l}[F]||String(F||"").toLowerCase().replace(/s$/,"")},u:function(F){return F===void 0}},A="en",w={};w[A]=g;var y="$isDayjsObject",I=function(F){return F instanceof j||!(!F||!F[y])},k=function F(U,x,$){var O;if(!U)return A;if(typeof U=="string"){var G=U.toLowerCase();w[G]&&(O=G),x&&(w[G]=x,O=G);var B=U.split("-");if(!O&&B.length>1)return F(B[0])}else{var z=U.name;w[z]=U,O=z}return!$&&O&&(A=O),O||!$&&A},v=function(F,U){if(I(F))return F.clone();var x=typeof U=="object"?U:{};return x.date=F,x.args=arguments,new j(x)},L=_;L.l=k,L.i=I,L.w=function(F,U){return v(F,{locale:U.$L,utc:U.$u,x:U.$x,$offset:U.$offset})};var j=function(){function F(x){this.$L=k(x.locale,null,!0),this.parse(x),this.$x=this.$x||x.x||{},this[y]=!0}var U=F.prototype;return U.parse=function(x){this.$d=function($){var O=$.date,G=$.utc;if(O===null)return new Date(NaN);if(L.u(O))return new Date;if(O instanceof Date)return new Date(O);if(typeof O=="string"&&!/Z$/i.test(O)){var B=O.match(p);if(B){var z=B[2]-1||0,le=(B[7]||"0").substring(0,3);return G?new Date(Date.UTC(B[1],z,B[3]||1,B[4]||0,B[5]||0,B[6]||0,le)):new Date(B[1],z,B[3]||1,B[4]||0,B[5]||0,B[6]||0,le)}}return new Date(O)}(x),this.init()},U.init=function(){var x=this.$d;this.$y=x.getFullYear(),this.$M=x.getMonth(),this.$D=x.getDate(),this.$W=x.getDay(),this.$H=x.getHours(),this.$m=x.getMinutes(),this.$s=x.getSeconds(),this.$ms=x.getMilliseconds()},U.$utils=function(){return L},U.isValid=function(){return this.$d.toString()!==m},U.isSame=function(x,$){var O=v(x);return this.startOf($)<=O&&O<=this.endOf($)},U.isAfter=function(x,$){return v(x)<this.startOf($)},U.isBefore=function(x,$){return this.endOf($)<v(x)},U.$g=function(x,$,O){return L.u(x)?this[$]:this.set(O,x)},U.unix=function(){return Math.floor(this.valueOf()/1e3)},U.valueOf=function(){return this.$d.getTime()},U.startOf=function(x,$){var O=this,G=!!L.u($)||$,B=L.p(x),z=function(Pr,xe){var zt=L.w(O.$u?Date.UTC(O.$y,xe,Pr):new Date(O.$y,xe,Pr),O);return G?zt:zt.endOf(a)},le=function(Pr,xe){return L.w(O.toDate()[Pr].apply(O.toDate("s"),(G?[0,0,0,0]:[23,59,59,999]).slice(xe)),O)},ge=this.$W,Oe=this.$M,Qe=this.$D,q="set"+(this.$u?"UTC":"");switch(B){case d:return G?z(1,0):z(31,11);case c:return G?z(1,Oe):z(0,Oe+1);case u:var vr=this.$locale().weekStart||0,yi=(ge<vr?ge+7:ge)-vr;return z(G?Qe-yi:Qe+(6-yi),Oe);case a:case f:return le(q+"Hours",0);case o:return le(q+"Minutes",1);case s:return le(q+"Seconds",2);case i:return le(q+"Milliseconds",3);default:return this.clone()}},U.endOf=function(x){return this.startOf(x,!1)},U.$set=function(x,$){var O,G=L.p(x),B="set"+(this.$u?"UTC":""),z=(O={},O[a]=B+"Date",O[f]=B+"Date",O[c]=B+"Month",O[d]=B+"FullYear",O[o]=B+"Hours",O[s]=B+"Minutes",O[i]=B+"Seconds",O[n]=B+"Milliseconds",O)[G],le=G===a?this.$D+($-this.$W):$;if(G===c||G===d){var ge=this.clone().set(f,1);ge.$d[z](le),ge.init(),this.$d=ge.set(f,Math.min(this.$D,ge.daysInMonth())).$d}else z&&this.$d[z](le);return this.init(),this},U.set=function(x,$){return this.clone().$set(x,$)},U.get=function(x){return this[L.p(x)]()},U.add=function(x,$){var O,G=this;x=Number(x);var B=L.p($),z=function(Oe){var Qe=v(G);return L.w(Qe.date(Qe.date()+Math.round(Oe*x)),G)};if(B===c)return this.set(c,this.$M+x);if(B===d)return this.set(d,this.$y+x);if(B===a)return z(1);if(B===u)return z(7);var le=(O={},O[s]=e,O[o]=r,O[i]=t,O)[B]||1,ge=this.$d.getTime()+x*le;return L.w(ge,this)},U.subtract=function(x,$){return this.add(-1*x,$)},U.format=function(x){var $=this,O=this.$locale();if(!this.isValid())return O.invalidDate||m;var G=x||"YYYY-MM-DDTHH:mm:ssZ",B=L.z(this),z=this.$H,le=this.$m,ge=this.$M,Oe=O.weekdays,Qe=O.months,q=O.meridiem,vr=function(xe,zt,Ti,vo){return xe&&(xe[zt]||xe($,G))||Ti[zt].slice(0,vo)},yi=function(xe){return L.s(z%12||12,xe,"0")},Pr=q||function(xe,zt,Ti){var vo=xe<12?"AM":"PM";return Ti?vo.toLowerCase():vo};return G.replace(E,function(xe,zt){return zt||function(Ti){switch(Ti){case"YY":return String($.$y).slice(-2);case"YYYY":return L.s($.$y,4,"0");case"M":return ge+1;case"MM":return L.s(ge+1,2,"0");case"MMM":return vr(O.monthsShort,ge,Qe,3);case"MMMM":return vr(Qe,ge);case"D":return $.$D;case"DD":return L.s($.$D,2,"0");case"d":return String($.$W);case"dd":return vr(O.weekdaysMin,$.$W,Oe,2);case"ddd":return vr(O.weekdaysShort,$.$W,Oe,3);case"dddd":return Oe[$.$W];case"H":return String(z);case"HH":return L.s(z,2,"0");case"h":return yi(1);case"hh":return yi(2);case"a":return Pr(z,le,!0);case"A":return Pr(z,le,!1);case"m":return String(le);case"mm":return L.s(le,2,"0");case"s":return String($.$s);case"ss":return L.s($.$s,2,"0");case"SSS":return L.s($.$ms,3,"0");case"Z":return B}return null}(xe)||B.replace(":","")})},U.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},U.diff=function(x,$,O){var G,B=this,z=L.p($),le=v(x),ge=(le.utcOffset()-this.utcOffset())*e,Oe=this-le,Qe=function(){return L.m(B,le)};switch(z){case d:G=Qe()/12;break;case c:G=Qe();break;case l:G=Qe()/3;break;case u:G=(Oe-ge)/6048e5;break;case a:G=(Oe-ge)/864e5;break;case o:G=Oe/r;break;case s:G=Oe/e;break;case i:G=Oe/t;break;default:G=Oe}return O?G:L.a(G)},U.daysInMonth=function(){return this.endOf(c).$D},U.$locale=function(){return w[this.$L]},U.locale=function(x,$){if(!x)return this.$L;var O=this.clone(),G=k(x,$,!0);return G&&(O.$L=G),O},U.clone=function(){return L.w(this.$d,this)},U.toDate=function(){return new Date(this.valueOf())},U.toJSON=function(){return this.isValid()?this.toISOString():null},U.toISOString=function(){return this.$d.toISOString()},U.toString=function(){return this.$d.toUTCString()},F}(),Dt=j.prototype;return v.prototype=Dt,[["$ms",n],["$s",i],["$m",s],["$H",o],["$W",a],["$M",c],["$y",d],["$D",f]].forEach(function(F){Dt[F[1]]=function(U){return this.$g(U,F[0],F[1])}}),v.extend=function(F,U){return F.$i||(F(U,j,v),F.$i=!0),v},v.locale=k,v.isDayjs=I,v.unix=function(F){return v(1e3*F)},v.en=w[A],v.Ls=w,v.p={},v})});var nt=V(ve=>{"use strict";Object.defineProperty(ve,"__esModule",{value:!0});ve.Err=ve.Valid=ve.err=ve.valid=void 0;var M_=t=>new Vo(t);ve.valid=M_;var F_=t=>new Go(t);ve.err=F_;var Vo=class{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,ve.valid)(e(this.value))}mapErr(e){return(0,ve.valid)(this.value)}};ve.Valid=Vo;var Go=class{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,ve.err)(this.error)}mapErr(e){return(0,ve.err)(e(this.error))}};ve.Err=Go});var it=V(Fm=>{"use strict";Object.defineProperty(Fm,"__esModule",{value:!0})});var er=V(xc=>{"use strict";Object.defineProperty(xc,"__esModule",{value:!0});Tt();var H=nt();it();var B_=["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"],$_=["sun","mon","tue","wed","thu","fri","sat"],W_=(t,e)=>e[t].lowerLimit===e.preset[t].minValue&&e[t].upperLimit===e.preset[t].maxValue,Ii=(t,e,r)=>{if(e==="months"&&r.useAliases&&B_.indexOf(t.toLowerCase())!==-1||e==="daysOfWeek"&&r.useAliases&&$_.indexOf(t.toLowerCase())!==-1)return(0,H.valid)(!0);let n=Number(t);if(isNaN(n))return(0,H.err)(`Element '${t} of ${e} field is invalid.`);let{lowerLimit:i}=r[e],{upperLimit:s}=r[e];return i&&n<i?(0,H.err)(`Number ${n} of ${e} field is smaller than lower limit '${i}'`):s&&n>s?(0,H.err)(`Number ${n} of ${e} field is bigger than upper limit '${s}'`):(0,H.valid)(!0)},V_=(t,e,r)=>{if(t==="*")return W_(e,r)?(0,H.valid)(!0):(0,H.err)(`Field ${e} uses wildcard '*', but is limited to ${r[e].lowerLimit}-${r[e].upperLimit}`);if(t==="")return(0,H.err)(`One of the elements is empty in ${e} field.`);if(e==="daysOfMonth"&&r.useLastDayOfMonth&&t==="L")return(0,H.valid)(!0);if(e==="daysOfWeek"&&r.useLastDayOfWeek&&t.endsWith("L")){let n=t.slice(0,-1);return n===""?(0,H.valid)(!0):Ii(n,e,r)}if(e==="daysOfMonth"&&r.useNearestWeekday&&t.endsWith("W")){let n=t.slice(0,-1);return n===""?(0,H.err)("The 'W' must be preceded by a day"):r.useLastDayOfMonth&&n==="L"?(0,H.valid)(!0):Ii(n,e,r)}if(e==="daysOfWeek"&&r.useNthWeekdayOfMonth&&t.indexOf("#")!==-1){let[n,i,...s]=t.split("#");if(s.length!==0)return(0,H.err)(`Unexpected number of '#' in ${t}, can only be used once.`);let o=Number(i);return!i||isNaN(o)?(0,H.err)(`Unexpected value following the '#' symbol, a positive number was expected but found ${i}.`):o>5?(0,H.err)("Number of occurrence of the day of the week cannot be greater than 5."):Ii(n,e,r)}return Ii(t,e,r)},Bm=(t,e,r,n)=>t==="*"?(0,H.err)(`'*' can't be part of a range in ${e} field.`):t===""?(0,H.err)(`One of the range elements is empty in ${e} field.`):r.useLastDayOfMonth&&e==="daysOfMonth"&&t==="L"&&n===0?(0,H.valid)(!0):Ii(t,e,r),G_=(t,e,r)=>{let n=t.split("-");if(n.length>2)return(0,H.err)(`List element '${t}' is not valid. (More than one '-')`);if(n.length===1)return V_(n[0],e,r);if(n.length===2){let i=Bm(n[0],e,r,0),s=Bm(n[1],e,r,1);return i.isError()?i:s.isError()?s:Number(n[0])>Number(n[1])?(0,H.err)(`Lower range end '${n[0]}' is bigger than upper range end '${n[1]}' of ${e} field.`):(0,H.valid)(!0)}return(0,H.err)("Some other error in checkFirstStepElement (rangeArray less than 1)")},q_=(t,e,r)=>{let n=t.split("/");if(n.length>2)return(0,H.err)(`List element '${t}' is not valid. (More than one '/')`);let i=G_(n[0],e,r);if(i.isError())return i;if(n.length===2){let s=n[1];if(!s)return(0,H.err)(`Second step element '${s}' of '${t}' is not valid (doesnt exist).`);if(isNaN(Number(s)))return(0,H.err)(`Second step element '${s}' of '${t}' is not valid (not a number).`);if(Number(s)===0)return(0,H.err)(`Second step element '${s}' of '${t}' cannot be zero.`)}return(0,H.valid)(!0)},Q_=(t,e,r)=>{if(!["seconds","minutes","hours","daysOfMonth","months","daysOfWeek","years"].includes(e))return(0,H.err)([`Cron field type '${e}' does not exist.`]);if(t==="?")return e==="daysOfMonth"||e==="daysOfWeek"?r.useBlankDay?(0,H.valid)(!0):(0,H.err)([`useBlankDay is not enabled, but is used in ${e} field`]):(0,H.err)([`blank notation is not allowed in ${e} field`]);let n=t.split(","),i=[];if(n.forEach(o=>{i.push(q_(o,e,r))}),i.every(o=>o.isValid()))return(0,H.valid)(!0);let s=[];return i.forEach(o=>{o.isError()&&s.push(o.getError())}),(0,H.err)(s)};xc.default=Q_});var $m=V(Oi=>{"use strict";var K_=Oi&&Oi.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Oi,"__esModule",{value:!0});Tt();var j_=nt(),Y_=K_(er());it();var H_=(t,e)=>{if(!t.seconds)return(0,j_.err)(["seconds field is undefined, but useSeconds options is enabled."]);let{seconds:r}=t;return(0,Y_.default)(r,"seconds",e)};Oi.default=H_});var Wm=V(wi=>{"use strict";var z_=wi&&wi.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(wi,"__esModule",{value:!0});Tt();var J_=nt(),Z_=z_(er());it();var X_=(t,e)=>{if(!t.minutes)return(0,J_.err)(["minutes field is undefined."]);let{minutes:r}=t;return(0,Z_.default)(r,"minutes",e)};wi.default=X_});var Vm=V(Di=>{"use strict";var eI=Di&&Di.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Di,"__esModule",{value:!0});Tt();var tI=nt(),rI=eI(er());it();var nI=(t,e)=>{if(!t.hours)return(0,tI.err)(["hours field is undefined."]);let{hours:r}=t;return(0,rI.default)(r,"hours",e)};Di.default=nI});var Gm=V(bi=>{"use strict";var iI=bi&&bi.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(bi,"__esModule",{value:!0});Tt();var Ri=nt(),sI=iI(er());it();var oI=(t,e)=>{if(!t.daysOfMonth)return(0,Ri.err)(["daysOfMonth field is undefined."]);let{daysOfMonth:r}=t;return e.allowOnlyOneBlankDayField&&e.useBlankDay&&t.daysOfMonth==="?"&&t.daysOfWeek==="?"?(0,Ri.err)(["Cannot use blank value in daysOfMonth and daysOfWeek field when allowOnlyOneBlankDayField option is enabled."]):e.mustHaveBlankDayField&&t.daysOfMonth!=="?"&&t.daysOfWeek!=="?"?(0,Ri.err)(["Cannot specify both daysOfMonth and daysOfWeek field when mustHaveBlankDayField option is enabled."]):e.useLastDayOfMonth&&t.daysOfMonth.indexOf("L")!==-1&&t.daysOfMonth.match(/[,/]/)?(0,Ri.err)(["Cannot specify last day of month with lists, or ranges (symbols ,/)."]):e.useNearestWeekday&&t.daysOfMonth.indexOf("W")!==-1&&t.daysOfMonth.match(/[,/-]/)?(0,Ri.err)(["Cannot specify nearest weekday with lists, steps or ranges (symbols ,-/)."]):(0,sI.default)(r,"daysOfMonth",e)};bi.default=oI});var qm=V(Ci=>{"use strict";var aI=Ci&&Ci.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Ci,"__esModule",{value:!0});Tt();var uI=nt(),cI=aI(er());it();var lI=(t,e)=>{if(!t.months)return(0,uI.err)(["months field is undefined."]);let{months:r}=t;return(0,cI.default)(r,"months",e)};Ci.default=lI});var Qm=V(vi=>{"use strict";var dI=vi&&vi.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(vi,"__esModule",{value:!0});Tt();var xi=nt(),fI=dI(er());it();var pI=(t,e)=>{if(!t.daysOfWeek)return(0,xi.err)(["daysOfWeek field is undefined."]);let{daysOfWeek:r}=t;return e.allowOnlyOneBlankDayField&&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.useLastDayOfWeek&&t.daysOfWeek.indexOf("L")!==-1&&t.daysOfWeek.match(/[,/-]/)?(0,xi.err)(["Cannot specify last day of week with lists, steps or ranges (symbols ,-/)."]):e.useNthWeekdayOfMonth&&t.daysOfWeek.indexOf("#")!==-1&&t.daysOfWeek.match(/[,/-]/)?(0,xi.err)(["Cannot specify Nth weekday of month with lists, steps or ranges (symbols ,-/)."]):(0,fI.default)(r,"daysOfWeek",e)};vi.default=pI});var Km=V(Pi=>{"use strict";var mI=Pi&&Pi.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Pi,"__esModule",{value:!0});Tt();var hI=nt(),EI=mI(er());it();var gI=(t,e)=>{if(!t.years)return(0,hI.err)(["years field is undefined, but useYears option is enabled."]);let{years:r}=t;return(0,EI.default)(r,"years",e)};Pi.default=gI});var zm=V((gk,Hm)=>{"use strict";var vc;try{vc=Map}catch{}var Pc;try{Pc=Set}catch{}function jm(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(Ym);if(vc&&t instanceof vc)return new Map(Array.from(t.entries()));if(Pc&&t instanceof Pc)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 s=e.findIndex(function(o){return o===t[i]});n[i]=s>-1?r[s]:jm(t[i],e,r)}return n}return t}function Ym(t){return jm(t,[],[])}Hm.exports=Ym});var Ni=V(Nc=>{"use strict";Object.defineProperty(Nc,"__esModule",{value:!0});Nc.default=OI;var yI=Object.prototype.toString,TI=Error.prototype.toString,SI=RegExp.prototype.toString,AI=typeof Symbol<"u"?Symbol.prototype.toString:()=>"",_I=/^Symbol\((.*)\)(.*)$/;function II(t){return t!=+t?"NaN":t===0&&1/t<0?"-0":""+t}function Jm(t,e=!1){if(t==null||t===!0||t===!1)return""+t;let r=typeof t;if(r==="number")return II(t);if(r==="string")return e?`"${t}"`:t;if(r==="function")return"[Function "+(t.name||"anonymous")+"]";if(r==="symbol")return AI.call(t).replace(_I,"Symbol($1)");let n=yI.call(t).slice(8,-1);return n==="Date"?isNaN(t.getTime())?""+t:t.toISOString(t):n==="Error"||t instanceof Error?"["+TI.call(t)+"]":n==="RegExp"?SI.call(t):null}function OI(t,e){let r=Jm(t,e);return r!==null?r:JSON.stringify(t,function(n,i){let s=Jm(this[n],e);return s!==null?s:i},2)}});var bt=V(ye=>{"use strict";Object.defineProperty(ye,"__esModule",{value:!0});ye.default=ye.array=ye.object=ye.boolean=ye.date=ye.number=ye.string=ye.mixed=void 0;var Zm=wI(Ni());function wI(t){return t&&t.__esModule?t:{default:t}}var Xm={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,s=`${t} must be a \`${e}\` type, but the final value was: \`${(0,Zm.default)(r,!0)}\``+(i?` (cast from the value \`${(0,Zm.default)(n,!0)}\`).`:".");return r===null&&(s+='\n If "null" is intended as an empty value be sure to mark the schema as `.nullable()`'),s},defined:"${path} must be defined"};ye.mixed=Xm;var eh={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"};ye.string=eh;var th={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"};ye.number=th;var rh={min:"${path} field must be later than ${min}",max:"${path} field must be at earlier than ${max}"};ye.date=rh;var nh={isValue:"${path} field must be ${value}"};ye.boolean=nh;var ih={noUnknown:"${path} field has unspecified keys: ${unknown}"};ye.object=ih;var sh={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"};ye.array=sh;var DI=Object.assign(Object.create(null),{mixed:Xm,string:eh,number:th,date:rh,object:ih,array:sh,boolean:nh});ye.default=DI});var wn=V(qo=>{"use strict";Object.defineProperty(qo,"__esModule",{value:!0});qo.default=void 0;var RI=t=>t&&t.__isYupSchema__;qo.default=RI});var ah=V(Qo=>{"use strict";Object.defineProperty(Qo,"__esModule",{value:!0});Qo.default=void 0;var bI=oh(require("lodash/has")),CI=oh(wn());function oh(t){return t&&t.__esModule?t:{default:t}}var Uc=class{constructor(e,r){if(this.refs=e,this.refs=e,typeof r=="function"){this.fn=r;return}if(!(0,bI.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:s}=r,o=typeof n=="function"?n:(...a)=>a.every(u=>u===n);this.fn=function(...a){let u=a.pop(),c=a.pop(),l=o(...a)?i:s;if(l)return typeof l=="function"?l(c):c.concat(l.resolve(u))}}resolve(e,r){let n=this.refs.map(s=>s.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,CI.default)(i))throw new TypeError("conditions must return a schema object");return i.resolve(r)}},xI=Uc;Qo.default=xI});var kc=V(Lc=>{"use strict";Object.defineProperty(Lc,"__esModule",{value:!0});Lc.default=vI;function vI(t){return t==null?[]:[].concat(t)}});var Ur=V(Ko=>{"use strict";Object.defineProperty(Ko,"__esModule",{value:!0});Ko.default=void 0;var PI=uh(Ni()),NI=uh(kc());function uh(t){return t&&t.__esModule?t:{default:t}}function Mc(){return Mc=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},Mc.apply(this,arguments)}var UI=/\$\{\s*(\w+)\s*\}/g,Fc=class t extends Error{static formatError(e,r){let n=r.label||r.path||"this";return n!==r.path&&(r=Mc({},r,{path:n})),typeof e=="string"?e.replace(UI,(i,s)=>(0,PI.default)(r[s])):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,NI.default)(e).forEach(s=>{t.isError(s)?(this.errors.push(...s.errors),this.inner=this.inner.concat(s.inner.length?s.inner:s)):this.errors.push(s)}),this.message=this.errors.length>1?`${this.errors.length} errors occurred`:this.errors[0],Error.captureStackTrace&&Error.captureStackTrace(this,t)}};Ko.default=Fc});var jo=V($c=>{"use strict";Object.defineProperty($c,"__esModule",{value:!0});$c.default=MI;var Bc=LI(Ur());function LI(t){return t&&t.__esModule?t:{default:t}}var kI=t=>{let e=!1;return(...r)=>{e||(e=!0,t(...r))}};function MI(t,e){let{endEarly:r,tests:n,args:i,value:s,errors:o,sort:a,path:u}=t,c=kI(e),l=n.length,d=[];if(o=o||[],!l)return o.length?c(new Bc.default(o,s,u)):c(null,s);for(let f=0;f<n.length;f++){let m=n[f];m(i,function(E){if(E){if(!Bc.default.isError(E))return c(E,s);if(r)return E.value=s,c(E,s);d.push(E)}if(--l<=0){if(d.length&&(a&&d.sort(a),o.length&&d.push(...o),o=d),o.length){c(new Bc.default(o,s,u),s);return}c(null,s)}})}}});var Ui=V((wk,ph)=>{"use strict";function Lr(t){this._maxSize=t,this.clear()}Lr.prototype.clear=function(){this._size=0,this._values=Object.create(null)};Lr.prototype.get=function(t){return this._values[t]};Lr.prototype.set=function(t,e){return this._size>=this._maxSize&&this.clear(),t in this._values||this._size++,this._values[t]=e};var FI=/[^.^\]^[]+|(?=\[\]|\.\.)/g,fh=/^\d+$/,BI=/^\d/,$I=/[~`!#$%\^&*+=\-\[\]\\';,/{}|\\":<>\?]/g,WI=/^\s*(['"]?)(.*?)(\1)\s*$/,Gc=512,ch=new Lr(Gc),lh=new Lr(Gc),dh=new Lr(Gc);ph.exports={Cache:Lr,split:Vc,normalizePath:Wc,setter:function(t){var e=Wc(t);return lh.get(t)||lh.set(t,function(n,i){for(var s=0,o=e.length,a=n;s<o-1;){var u=e[s];if(u==="__proto__"||u==="constructor"||u==="prototype")return n;a=a[e[s++]]}a[e[s]]=i})},getter:function(t,e){var r=Wc(t);return dh.get(t)||dh.set(t,function(i){for(var s=0,o=r.length;s<o;)if(i!=null||!e)i=i[r[s++]];else return;return i})},join:function(t){return t.reduce(function(e,r){return e+(qc(r)||fh.test(r)?"["+r+"]":(e?".":"")+r)},"")},forEach:function(t,e,r){VI(Array.isArray(t)?t:Vc(t),e,r)}};function Wc(t){return ch.get(t)||ch.set(t,Vc(t).map(function(e){return e.replace(WI,"$2")}))}function Vc(t){return t.match(FI)||[""]}function VI(t,e,r){var n=t.length,i,s,o,a;for(s=0;s<n;s++)i=t[s],i&&(QI(i)&&(i='"'+i+'"'),a=qc(i),o=!a&&/^\d+$/.test(i),e.call(r,i,a,o,s,t))}function qc(t){return typeof t=="string"&&t&&["'",'"'].indexOf(t.charAt(0))!==-1}function GI(t){return t.match(BI)&&!t.match(fh)}function qI(t){return $I.test(t)}function QI(t){return!qc(t)&&(GI(t)||qI(t))}});var kr=V(ki=>{"use strict";Object.defineProperty(ki,"__esModule",{value:!0});ki.create=jI;ki.default=void 0;var KI=Ui(),Yo={context:"$",value:"."};function jI(t,e){return new Li(t,e)}var Li=class{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]===Yo.context,this.isValue=this.key[0]===Yo.value,this.isSibling=!this.isContext&&!this.isValue;let n=this.isContext?Yo.context:this.isValue?Yo.value:"";this.path=this.key.slice(n.length),this.getter=this.path&&(0,KI.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}};ki.default=Li;Li.prototype.__isYupRef=!0});var mh=V(Kc=>{"use strict";Object.defineProperty(Kc,"__esModule",{value:!0});Kc.default=JI;var YI=Qc(require("lodash/mapValues")),Ho=Qc(Ur()),HI=Qc(kr());function Qc(t){return t&&t.__esModule?t:{default:t}}function zo(){return zo=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},zo.apply(this,arguments)}function zI(t,e){if(t==null)return{};var r={},n=Object.keys(t),i,s;for(s=0;s<n.length;s++)i=n[s],!(e.indexOf(i)>=0)&&(r[i]=t[i]);return r}function JI(t){function e(r,n){let{value:i,path:s="",label:o,options:a,originalValue:u,sync:c}=r,l=zI(r,["value","path","label","options","originalValue","sync"]),{name:d,test:f,params:m,message:p}=t,{parent:E,context:g}=a;function T(I){return HI.default.isRef(I)?I.getValue(i,E,g):I}function _(I={}){let k=(0,YI.default)(zo({value:i,originalValue:u,label:o,path:I.path||s},m,I.params),T),v=new Ho.default(Ho.default.formatError(I.message||p,k),i,k.path,I.type||d);return v.params=k,v}let A=zo({path:s,parent:E,type:d,createError:_,resolve:T,options:a,originalValue:u},l);if(!c){try{Promise.resolve(f.call(A,i,A)).then(I=>{Ho.default.isError(I)?n(I):I?n(null,I):n(_())})}catch(I){n(I)}return}let w;try{var y;if(w=f.call(A,i,A),typeof((y=w)==null?void 0:y.then)=="function")throw new Error(`Validation test of type: "${A.type}" returned a Promise during a synchronous validate. This test will finish after the validate call has returned`)}catch(I){n(I);return}Ho.default.isError(w)?n(w):w?n(null,w):n(_())}return e.OPTIONS=t,e}});var jc=V(Mi=>{"use strict";Object.defineProperty(Mi,"__esModule",{value:!0});Mi.getIn=hh;Mi.default=void 0;var ZI=Ui(),XI=t=>t.substr(0,t.length-1).substr(1);function hh(t,e,r,n=r){let i,s,o;return e?((0,ZI.forEach)(e,(a,u,c)=>{let l=u?XI(a):a;if(t=t.resolve({context:n,parent:i,value:r}),t.innerType){let d=c?parseInt(l,10):0;if(r&&d>=r.length)throw new Error(`Yup.reach cannot resolve an array item at index: ${a}, in the path: ${e}. because there is no value at that index. `);i=r,r=r&&r[d],t=t.innerType}if(!c){if(!t.fields||!t.fields[l])throw new Error(`The schema does not contain the path: ${e}. (failed at: ${o} which is a type: "${t._type}")`);i=r,r=r&&r[l],t=t.fields[l]}s=l,o=u?"["+a+"]":"."+a}),{schema:t,parent:i,parentPath:s}):{parent:i,parentPath:e,schema:t}}var eO=(t,e,r,n)=>hh(t,e,r,n).schema,tO=eO;Mi.default=tO});var gh=V(Jo=>{"use strict";Object.defineProperty(Jo,"__esModule",{value:!0});Jo.default=void 0;var Eh=rO(kr());function rO(t){return t&&t.__esModule?t:{default:t}}var Yc=class t{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){Eh.default.isRef(e)?this.refs.set(e.key,e):this.list.add(e)}delete(e){Eh.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}};Jo.default=Yc});var xt=V(Xo=>{"use strict";Object.defineProperty(Xo,"__esModule",{value:!0});Xo.default=void 0;var yh=Ct(zm()),Dn=bt(),nO=Ct(ah()),Th=Ct(jo()),Zo=Ct(mh()),Sh=Ct(Ni()),iO=Ct(kr()),sO=jc(),oO=Ct(kc()),Ah=Ct(Ur()),_h=Ct(gh());function Ct(t){return t&&t.__esModule?t:{default:t}}function Ke(){return Ke=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},Ke.apply(this,arguments)}var st=class{constructor(e){this.deps=[],this.conditions=[],this._whitelist=new _h.default,this._blacklist=new _h.default,this.exclusiveTests=Object.create(null),this.tests=[],this.transforms=[],this.withMutation(()=>{this.typeError(Dn.mixed.notType)}),this.type=e?.type||"mixed",this.spec=Ke({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=Ke({},this.exclusiveTests),r.deps=[...this.deps],r.conditions=[...this.conditions],r.tests=[...this.tests],r.transforms=[...this.transforms],r.spec=(0,yh.default)(Ke({},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=Ke({},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(s=>{e.tests.forEach(o=>{s.test(o.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,s)=>s.resolve(i,e),r),r=r.resolve(e)}return r}cast(e,r={}){let n=this.resolve(Ke({value:e},r)),i=n._cast(e,r);if(e!==void 0&&r.assert!==!1&&n.isType(i)!==!0){let s=(0,Sh.default)(e),o=(0,Sh.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: ${s}
|
|
4
|
-
`+(o!==s?`result of cast: ${o}`:""))}return i}_cast(e,r){let n=e===void 0?e:this.transforms.reduce((i,s)=>s.call(this,i,e,this),e);return n===void 0&&(n=this.getDefault()),n}_validate(e,r={},n){let{sync:i,path:s,from:o=[],originalValue:a=e,strict:u=this.spec.strict,abortEarly:c=this.spec.abortEarly}=r,l=e;u||(l=this._cast(l,Ke({assert:!1},r)));let d={value:l,path:s,options:r,originalValue:a,schema:this,label:this.spec.label,sync:i,from:o},f=[];this._typeError&&f.push(this._typeError),this._whitelistError&&f.push(this._whitelistError),this._blacklistError&&f.push(this._blacklistError),(0,Ah.default)({args:d,value:l,path:s,sync:i,tests:f,endEarly:c},m=>{if(m)return void n(m,l);(0,Ah.default)({tests:this.tests,args:d,path:s,sync:i,value:l,endEarly:c},n)})}validate(e,r,n){let i=this.resolve(Ke({},r,{value:e}));return typeof n=="function"?i._validate(e,r,n):new Promise((s,o)=>i._validate(e,r,(a,u)=>{a?o(a):s(u)}))}validateSync(e,r){let n=this.resolve(Ke({},r,{value:e})),i;return n._validate(e,Ke({},r,{sync:!0}),(s,o)=>{if(s)throw s;i=o}),i}isValid(e,r){return this.validate(e,r).then(()=>!0,n=>{if(_h.default.isError(n))return!1;throw n})}isValidSync(e,r){try{return this.validateSync(e,r),!0}catch(n){if(_h.default.isError(n))return!1;throw n}}_getDefault(){let e=this.spec.default;return e==null?e:typeof e=="function"?e.call(this):(0,Th.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=Dn.mixed.defined){return this.test({message:e,name:"defined",exclusive:!0,test(r){return r!==void 0}})}required(e=Dn.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=Dn.mixed.default),typeof r.test!="function")throw new TypeError("`test` is a required parameters");let n=this.clone(),i=(0,Zo.default)(r),s=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(o=>!(o.OPTIONS.name===r.name&&(s||o.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,uO.default)(e).map(s=>new oO.default(s));return i.forEach(s=>{s.isSibling&&n.deps.push(s.key)}),n.conditions.push(new sO.default(i,r)),n}typeError(e){var r=this.clone();return r._typeError=(0,Zo.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=Dn.mixed.oneOf){var n=this.clone();return e.forEach(i=>{n._whitelist.add(i),n._blacklist.delete(i)}),n._whitelistError=(0,Zo.default)({message:r,name:"oneOf",test(i){if(i===void 0)return!0;let s=this.schema._whitelist;return s.has(i,this.resolve)?!0:this.createError({params:{values:s.toArray().join(", ")}})}}),n}notOneOf(e,r=Dn.mixed.notOneOf){var n=this.clone();return e.forEach(i=>{n._blacklist.add(i),n._whitelist.delete(i)}),n._blacklistError=(0,Zo.default)({message:r,name:"notOneOf",test(i){let s=this.schema._blacklist;return s.has(i,this.resolve)?this.createError({params:{values:s.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(s=>({name:s.OPTIONS.name,params:s.OPTIONS.params})).filter((s,o,a)=>a.findIndex(u=>u.name===s.name)===o)}}};Xo.default=st;st.prototype.__isYupSchema__=!0;for(let t of["validate","validateSync"])st.prototype[`${t}At`]=function(e,r,n={}){let{parent:i,parentPath:s,schema:o}=(0,aO.getIn)(this,e,r,n.context);return o[t](i&&i[s],Ke({},n,{parent:i,path:e}))};for(let t of["equals","is"])st.prototype[t]=st.prototype.oneOf;for(let t of["not","nope"])st.prototype[t]=st.prototype.notOneOf;st.prototype.optional=st.prototype.notRequired});var wh=G(Fi=>{"use strict";Object.defineProperty(Fi,"__esModule",{value:!0});Fi.create=Oh;Fi.default=void 0;var cO=lO(xt());function lO(t){return t&&t.__esModule?t:{default:t}}var Hc=cO.default,dO=Hc;Fi.default=dO;function Oh(){return new Hc}Oh.prototype=Hc.prototype});var Rn=G(ea=>{"use strict";Object.defineProperty(ea,"__esModule",{value:!0});ea.default=void 0;var fO=t=>t==null;ea.default=fO});var xh=G($i=>{"use strict";Object.defineProperty($i,"__esModule",{value:!0});$i.create=Ch;$i.default=void 0;var pO=bh(xt()),Dh=bt(),Rh=bh(Rn());function bh(t){return t&&t.__esModule?t:{default:t}}function Ch(){return new Bi}var Bi=class extends pO.default{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=Dh.boolean.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"true"},test(r){return(0,Rh.default)(r)||r===!0}})}isFalse(e=Dh.boolean.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"false"},test(r){return(0,Rh.default)(r)||r===!1}})}};$i.default=Bi;Ch.prototype=Bi.prototype});var Nh=G(Gi=>{"use strict";Object.defineProperty(Gi,"__esModule",{value:!0});Gi.create=Ph;Gi.default=void 0;var At=bt(),vt=vh(Rn()),mO=vh(xt());function vh(t){return t&&t.__esModule?t:{default:t}}var hO=/^((([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,EO=/^((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,gO=/^(?:[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,yO=t=>(0,vt.default)(t)||t===t.trim(),TO={}.toString();function Ph(){return new Vi}var Vi=class extends mO.default{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===TO?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=At.string.length){return this.test({message:r,name:"length",exclusive:!0,params:{length:e},test(n){return(0,vt.default)(n)||n.length===this.resolve(e)}})}min(e,r=At.string.min){return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(n){return(0,vt.default)(n)||n.length>=this.resolve(e)}})}max(e,r=At.string.max){return this.test({name:"max",exclusive:!0,message:r,params:{max:e},test(n){return(0,vt.default)(n)||n.length<=this.resolve(e)}})}matches(e,r){let n=!1,i,s;return r&&(typeof r=="object"?{excludeEmptyString:n=!1,message:i,name:s}=r:i=r),this.test({name:s||"matches",message:i||At.string.matches,params:{regex:e},test:o=>(0,vt.default)(o)||o===""&&n||o.search(e)!==-1})}email(e=At.string.email){return this.matches(hO,{name:"email",message:e,excludeEmptyString:!0})}url(e=At.string.url){return this.matches(EO,{name:"url",message:e,excludeEmptyString:!0})}uuid(e=At.string.uuid){return this.matches(gO,{name:"uuid",message:e,excludeEmptyString:!1})}ensure(){return this.default("").transform(e=>e===null?"":e)}trim(e=At.string.trim){return this.transform(r=>r!=null?r.trim():r).test({message:e,name:"trim",test:yO})}lowercase(e=At.string.lowercase){return this.transform(r=>(0,vt.default)(r)?r:r.toLowerCase()).test({message:e,name:"string_case",exclusive:!0,test:r=>(0,vt.default)(r)||r===r.toLowerCase()})}uppercase(e=At.string.uppercase){return this.transform(r=>(0,vt.default)(r)?r:r.toUpperCase()).test({message:e,name:"string_case",exclusive:!0,test:r=>(0,vt.default)(r)||r===r.toUpperCase()})}};Gi.default=Vi;Ph.prototype=Vi.prototype});var Mh=G(qi=>{"use strict";Object.defineProperty(qi,"__esModule",{value:!0});qi.create=Lh;qi.default=void 0;var kr=bt(),Fr=Uh(Rn()),AO=Uh(xt());function Uh(t){return t&&t.__esModule?t:{default:t}}var SO=t=>t!=+t;function Lh(){return new Wi}var Wi=class extends AO.default{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"&&!SO(e)}min(e,r=kr.number.min){return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(n){return(0,Fr.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,Fr.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,Fr.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,Fr.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,Fr.default)(r)||Number.isInteger(r)})}truncate(){return this.transform(e=>(0,Fr.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,Fr.default)(i)?i:Math[e](i))}};qi.default=Wi;Lh.prototype=Wi.prototype});var kh=G(zc=>{"use strict";Object.defineProperty(zc,"__esModule",{value:!0});zc.default=IO;var _O=/^(\d{4}|[+\-]\d{6})(?:-?(\d{2})(?:-?(\d{2}))?)?(?:[ T]?(\d{2}):?(\d{2})(?::?(\d{2})(?:[,\.](\d{1,}))?)?(?:(Z)|([+\-])(\d{2})(?::?(\d{2}))?)?)?$/;function IO(t){var e=[1,4,5,6,7,10,11],r=0,n,i;if(i=_O.exec(t)){for(var s=0,o;o=e[s];++s)i[o]=+i[o]||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}});var $h=G(Qi=>{"use strict";Object.defineProperty(Qi,"__esModule",{value:!0});Qi.create=Zc;Qi.default=void 0;var OO=ta(kh()),Fh=bt(),Bh=ta(Rn()),wO=ta(Mr()),DO=ta(xt());function ta(t){return t&&t.__esModule?t:{default:t}}var Jc=new Date(""),RO=t=>Object.prototype.toString.call(t)==="[object Date]";function Zc(){return new bn}var bn=class extends DO.default{constructor(){super({type:"date"}),this.withMutation(()=>{this.transform(function(e){return this.isType(e)?e:(e=(0,OO.default)(e),isNaN(e)?Jc:new Date(e))})})}_typeCheck(e){return RO(e)&&!isNaN(e.getTime())}prepareParam(e,r){let n;if(wO.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=Fh.date.min){let n=this.prepareParam(e,"min");return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(i){return(0,Bh.default)(i)||i>=this.resolve(n)}})}max(e,r=Fh.date.max){var n=this.prepareParam(e,"max");return this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(i){return(0,Bh.default)(i)||i<=this.resolve(n)}})}};Qi.default=bn;bn.INVALID_DATE=Jc;Zc.prototype=bn.prototype;Zc.INVALID_DATE=Jc});var Gh=G((VM,Xc)=>{"use strict";Xc.exports=function(t){return Vh(bO(t),t)};Xc.exports.array=Vh;function Vh(t,e){var r=t.length,n=new Array(r),i={},s=r,o=CO(e),a=xO(t);for(e.forEach(function(c){if(!a.has(c[0])||!a.has(c[1]))throw new Error("Unknown node. There is an unknown node in the supplied edges.")});s--;)i[s]||u(t[s],s,new Set);return n;function u(c,l,d){if(d.has(c)){var f;try{f=", node was:"+JSON.stringify(c)}catch{f=""}throw new Error("Cyclic dependency"+f)}if(!a.has(c))throw new Error("Found unknown node. Make sure to provided all involved nodes. Unknown node: "+JSON.stringify(c));if(!i[l]){i[l]=!0;var m=o.get(c)||new Set;if(m=Array.from(m),l=m.length){d.add(c);do{var p=m[--l];u(p,a.get(p),d)}while(l);d.delete(c)}n[--r]=c}}}function bO(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)}function CO(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}function xO(t){for(var e=new Map,r=0,n=t.length;r<n;r++)e.set(t[r],r);return e}});var Wh=G(el=>{"use strict";Object.defineProperty(el,"__esModule",{value:!0});el.default=MO;var vO=ra(require("lodash/has")),PO=ra(Gh()),NO=Ui(),UO=ra(Mr()),LO=ra(wn());function ra(t){return t&&t.__esModule?t:{default:t}}function MO(t,e=[]){let r=[],n=[];function i(s,o){var a=(0,NO.split)(s)[0];~n.indexOf(a)||n.push(a),~e.indexOf(`${o}-${a}`)||r.push([o,a])}for(let s in t)if((0,vO.default)(t,s)){let o=t[s];~n.indexOf(s)||n.push(s),UO.default.isRef(o)&&o.isSibling?i(o.path,s):(0,LO.default)(o)&&"deps"in o&&o.deps.forEach(a=>i(a,s))}return PO.default.array(n,r).reverse()}});var Qh=G(tl=>{"use strict";Object.defineProperty(tl,"__esModule",{value:!0});tl.default=kO;function qh(t,e){let r=1/0;return t.some((n,i)=>{var s;if(((s=e.path)==null?void 0:s.indexOf(n))!==-1)return r=i,!0}),r}function kO(t){return(e,r)=>qh(t,e)-qh(t,r)}});var Zh=G(ji=>{"use strict";Object.defineProperty(ji,"__esModule",{value:!0});ji.create=Jh;ji.default=void 0;var Kh=St(require("lodash/has")),jh=St(require("lodash/snakeCase")),FO=St(require("lodash/camelCase")),BO=St(require("lodash/mapKeys")),$O=St(require("lodash/mapValues")),VO=Ui(),Yh=bt(),GO=St(Wh()),zh=St(Qh()),WO=St(jo()),qO=St(Ur()),rl=St(xt());function St(t){return t&&t.__esModule?t:{default:t}}function Cn(){return Cn=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},Cn.apply(this,arguments)}var Hh=t=>Object.prototype.toString.call(t)==="[object Object]";function QO(t,e){let r=Object.keys(t.fields);return Object.keys(e).filter(n=>r.indexOf(n)===-1)}var KO=(0,zh.default)([]),Ki=class extends rl.default{constructor(e){super({type:"object"}),this.fields=Object.create(null),this._sortErrors=KO,this._nodes=[],this._excludedEdges=[],this.withMutation(()=>{this.transform(function(n){if(typeof n=="string")try{n=JSON.parse(n)}catch{n=null}return this.isType(n)?n:null}),e&&this.shape(e)})}_typeCheck(e){return Hh(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 s=this.fields,o=(n=r.stripUnknown)!=null?n:this.spec.noUnknown,a=this._nodes.concat(Object.keys(i).filter(d=>this._nodes.indexOf(d)===-1)),u={},c=Cn({},r,{parent:u,__validating:r.__validating||!1}),l=!1;for(let d of a){let f=s[d],m=(0,Kh.default)(i,d);if(f){let p,E=i[d];c.path=(r.path?`${r.path}.`:"")+d,f=f.resolve({value:E,context:r.context,parent:u});let g="spec"in f?f.spec:void 0,T=g?.strict;if(g?.strip){l=l||d in i;continue}p=!r.__validating||!T?f.cast(i[d],c):i[d],p!==void 0&&(u[d]=p)}else m&&!o&&(u[d]=i[d]);u[d]!==i[d]&&(l=!0)}return l?u:i}_validate(e,r={},n){let i=[],{sync:s,from:o=[],originalValue:a=e,abortEarly:u=this.spec.abortEarly,recursive:c=this.spec.recursive}=r;o=[{schema:this,value:a},...o],r.__validating=!0,r.originalValue=a,r.from=o,super._validate(e,r,(l,d)=>{if(l){if(!qO.default.isError(l)||u)return void n(l,d);i.push(l)}if(!c||!Hh(d)){n(i[0]||null,d);return}a=a||d;let f=this._nodes.map(m=>(p,E)=>{let g=m.indexOf(".")===-1?(r.path?`${r.path}.`:"")+m:`${r.path||""}["${m}"]`,T=this.fields[m];if(T&&"validate"in T){T.validate(d[m],Cn({},r,{path:g,from:o,strict:!0,parent:d,originalValue:a[m]}),E);return}E(null)});(0,WO.default)({sync:s,tests:f,value:d,errors:i,endEarly:u,sort:this._sortErrors,path:r.path},n)})}clone(e){let r=super.clone(e);return r.fields=Cn({},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,s]of Object.entries(this.fields)){let o=n[i];o===void 0?n[i]=s:o instanceof rl.default&&s instanceof rl.default&&(n[i]=s.concat(o))}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,zh.default)(Object.keys(i)),r.length){Array.isArray(r[0])||(r=[r]);let s=r.map(([o,a])=>`${o}-${a}`);n._excludedEdges=n._excludedEdges.concat(s)}return n._nodes=(0,GO.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,VO.getter)(e,!0);return this.transform(s=>{if(s==null)return s;let o=s;return(0,Kh.default)(s,e)&&(o=Cn({},s),n||delete o[e],o[r]=i(s)),o})}noUnknown(e=!0,r=Yh.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 s=QO(this.schema,i);return!e||s.length===0||this.createError({params:{unknown:s.join(", ")}})}});return n.spec.noUnknown=e,n}unknown(e=!0,r=Yh.object.noUnknown){return this.noUnknown(!e,r)}transformKeys(e){return this.transform(r=>r&&(0,BO.default)(r,(n,i)=>e(i)))}camelCase(){return this.transformKeys(FO.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,$O.default)(this.fields,r=>r.describe()),e}};ji.default=Ki;function Jh(t){return new Ki(t)}Jh.prototype=Ki.prototype});var eE=G(Hi=>{"use strict";Object.defineProperty(Hi,"__esModule",{value:!0});Hi.create=Xh;Hi.default=void 0;var nl=xn(Rn()),jO=xn(wn()),YO=xn(Ni()),il=bt(),HO=xn(jo()),zO=xn(Ur()),JO=xn(xt());function xn(t){return t&&t.__esModule?t:{default:t}}function na(){return na=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},na.apply(this,arguments)}function Xh(t){return new Yi(t)}var Yi=class extends JO.default{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,s=n.map((o,a)=>{let u=this.innerType.cast(o,na({},r,{path:`${r.path||""}[${a}]`}));return u!==o&&(i=!0),u});return i?s:n}_validate(e,r={},n){var i,s;let o=[],a=r.sync,u=r.path,c=this.innerType,l=(i=r.abortEarly)!=null?i:this.spec.abortEarly,d=(s=r.recursive)!=null?s:this.spec.recursive,f=r.originalValue!=null?r.originalValue:e;super._validate(e,r,(m,p)=>{if(m){if(!zO.default.isError(m)||l)return void n(m,p);o.push(m)}if(!d||!c||!this._typeCheck(p)){n(o[0]||null,p);return}f=f||p;let E=new Array(p.length);for(let g=0;g<p.length;g++){let T=p[g],_=`${r.path||""}[${g}]`,S=na({},r,{path:_,strict:!0,parent:p,index:g,originalValue:f[g]});E[g]=(w,y)=>c.validate(T,S,y)}(0,HO.default)({sync:a,path:u,value:p,errors:o,endEarly:l,tests:E},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,jO.default)(e))throw new TypeError("`array.of()` sub-schema must be a valid yup schema not: "+(0,YO.default)(e));return r.innerType=e,r}length(e,r=il.array.length){return this.test({message:r,name:"length",exclusive:!0,params:{length:e},test(n){return(0,nl.default)(n)||n.length===this.resolve(e)}})}min(e,r){return r=r||il.array.min,this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(n){return(0,nl.default)(n)||n.length>=this.resolve(e)}})}max(e,r){return r=r||il.array.max,this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(n){return(0,nl.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,s)=>!e(n,i,s):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)}};Hi.default=Yi;Xh.prototype=Yi.prototype});var tE=G(zi=>{"use strict";Object.defineProperty(zi,"__esModule",{value:!0});zi.create=ew;zi.default=void 0;var ZO=XO(wn());function XO(t){return t&&t.__esModule?t:{default:t}}function ew(t){return new ia(t)}var ia=class{constructor(e){this.type="lazy",this.__isYupSchema__=!0,this._resolve=(r,n={})=>{let i=this.builder(r,n);if(!(0,ZO.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)}},tw=ia;zi.default=tw});var rE=G(sl=>{"use strict";Object.defineProperty(sl,"__esModule",{value:!0});sl.default=iw;var rw=nw(bt());function nw(t){return t&&t.__esModule?t:{default:t}}function iw(t){Object.keys(t).forEach(e=>{Object.keys(t[e]).forEach(r=>{rw.default[e][r]=t[e][r]})})}});var al=G(te=>{"use strict";Object.defineProperty(te,"__esModule",{value:!0});te.addMethod=dw;Object.defineProperty(te,"MixedSchema",{enumerable:!0,get:function(){return nE.default}});Object.defineProperty(te,"mixed",{enumerable:!0,get:function(){return nE.create}});Object.defineProperty(te,"BooleanSchema",{enumerable:!0,get:function(){return ol.default}});Object.defineProperty(te,"bool",{enumerable:!0,get:function(){return ol.create}});Object.defineProperty(te,"boolean",{enumerable:!0,get:function(){return ol.create}});Object.defineProperty(te,"StringSchema",{enumerable:!0,get:function(){return iE.default}});Object.defineProperty(te,"string",{enumerable:!0,get:function(){return iE.create}});Object.defineProperty(te,"NumberSchema",{enumerable:!0,get:function(){return sE.default}});Object.defineProperty(te,"number",{enumerable:!0,get:function(){return sE.create}});Object.defineProperty(te,"DateSchema",{enumerable:!0,get:function(){return oE.default}});Object.defineProperty(te,"date",{enumerable:!0,get:function(){return oE.create}});Object.defineProperty(te,"ObjectSchema",{enumerable:!0,get:function(){return aE.default}});Object.defineProperty(te,"object",{enumerable:!0,get:function(){return aE.create}});Object.defineProperty(te,"ArraySchema",{enumerable:!0,get:function(){return uE.default}});Object.defineProperty(te,"array",{enumerable:!0,get:function(){return uE.create}});Object.defineProperty(te,"ref",{enumerable:!0,get:function(){return sw.create}});Object.defineProperty(te,"lazy",{enumerable:!0,get:function(){return ow.create}});Object.defineProperty(te,"ValidationError",{enumerable:!0,get:function(){return aw.default}});Object.defineProperty(te,"reach",{enumerable:!0,get:function(){return uw.default}});Object.defineProperty(te,"isSchema",{enumerable:!0,get:function(){return cE.default}});Object.defineProperty(te,"setLocale",{enumerable:!0,get:function(){return cw.default}});Object.defineProperty(te,"BaseSchema",{enumerable:!0,get:function(){return lw.default}});var nE=Br(wh()),ol=Br(xh()),iE=Br(Nh()),sE=Br(Mh()),oE=Br($h()),aE=Br(Zh()),uE=Br(eE()),sw=Mr(),ow=tE(),aw=Ji(Ur()),uw=Ji(jc()),cE=Ji(wn()),cw=Ji(rE()),lw=Ji(xt());function Ji(t){return t&&t.__esModule?t:{default:t}}function lE(){if(typeof WeakMap!="function")return null;var t=new WeakMap;return lE=function(){return t},t}function Br(t){if(t&&t.__esModule)return t;if(t===null||typeof t!="object"&&typeof t!="function")return{default:t};var e=lE();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 s=n?Object.getOwnPropertyDescriptor(t,i):null;s&&(s.get||s.set)?Object.defineProperty(r,i,s):r[i]=t[i]}return r.default=t,e&&e.set(t,r),r}function dw(t,e,r){if(!t||!(0,cE.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}});var dE=G(cl=>{"use strict";Object.defineProperty(cl,"__esModule",{value:!0});var ul=ll();cl.default=()=>{(0,ul.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,ul.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,ul.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 ll=G(Te=>{"use strict";var fw=Te&&Te.__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]}),pw=Te&&Te.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),mw=Te&&Te.__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)&&fw(e,t,r);return pw(e,t),e},hw=Te&&Te.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Te,"__esModule",{value:!0});Te.validateOptions=Te.registerOptionPreset=Te.getOptionPresets=Te.getOptionPreset=void 0;var D=mw(al());al();var Zi=nt(),Ew=hw(dE());it();var $r={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}}},fE=D.object({presetId:D.string().required(),useSeconds:D.boolean().required(),useYears:D.boolean().required(),useAliases:D.boolean(),useBlankDay:D.boolean().required(),allowOnlyOneBlankDayField:D.boolean().required(),mustHaveBlankDayField:D.boolean(),useLastDayOfMonth:D.boolean(),useLastDayOfWeek:D.boolean(),useNearestWeekday:D.boolean(),useNthWeekdayOfMonth:D.boolean(),seconds:D.object({minValue:D.number().min(0).required(),maxValue:D.number().min(0).required(),lowerLimit:D.number().min(0),upperLimit:D.number().min(0)}).required(),minutes:D.object({minValue:D.number().min(0).required(),maxValue:D.number().min(0).required(),lowerLimit:D.number().min(0),upperLimit:D.number().min(0)}).required(),hours:D.object({minValue:D.number().min(0).required(),maxValue:D.number().min(0).required(),lowerLimit:D.number().min(0),upperLimit:D.number().min(0)}).required(),daysOfMonth:D.object({minValue:D.number().min(0).required(),maxValue:D.number().min(0).required(),lowerLimit:D.number().min(0),upperLimit:D.number().min(0)}).required(),months:D.object({minValue:D.number().min(0).required(),maxValue:D.number().min(0).required(),lowerLimit:D.number().min(0),upperLimit:D.number().min(0)}).required(),daysOfWeek:D.object({minValue:D.number().min(0).required(),maxValue:D.number().min(0).required(),lowerLimit:D.number().min(0),upperLimit:D.number().min(0)}).required(),years:D.object({minValue:D.number().min(0).required(),maxValue:D.number().min(0).required(),lowerLimit:D.number().min(0),upperLimit:D.number().min(0)}).required()}).required(),gw=t=>$r[t]?(0,Zi.valid)($r[t]):(0,Zi.err)(`Option preset '${t}' not found.`);Te.getOptionPreset=gw;var yw=()=>$r;Te.getOptionPresets=yw;var Tw=(t,e)=>{$r[t]=fE.validateSync(e,{strict:!1,abortEarly:!1,stripUnknown:!0,recursive:!0})};Te.registerOptionPreset=Tw;var Aw=t=>{var e,r,n,i,s,o,a,u,c,l,d,f,m,p,E,g,T,_,S,w;try{(0,Ew.default)();let y;if(t.preset)if(typeof t.preset=="string"){if(!$r[t.preset])return(0,Zi.err)([`Option preset ${t.preset} does not exist.`]);y=$r[t.preset]}else y=t.preset;else y=$r.default;let I=Object.assign(Object.assign({presetId:y.presetId,preset:y},{useSeconds:y.useSeconds,useYears:y.useYears,useAliases:(e=y.useAliases)!==null&&e!==void 0?e:!1,useBlankDay:y.useBlankDay,allowOnlyOneBlankDayField:y.allowOnlyOneBlankDayField,mustHaveBlankDayField:(r=y.mustHaveBlankDayField)!==null&&r!==void 0?r:!1,useLastDayOfMonth:(n=y.useLastDayOfMonth)!==null&&n!==void 0?n:!1,useLastDayOfWeek:(i=y.useLastDayOfWeek)!==null&&i!==void 0?i:!1,useNearestWeekday:(s=y.useNearestWeekday)!==null&&s!==void 0?s:!1,useNthWeekdayOfMonth:(o=y.useNthWeekdayOfMonth)!==null&&o!==void 0?o:!1,seconds:{lowerLimit:(a=y.seconds.lowerLimit)!==null&&a!==void 0?a:y.seconds.minValue,upperLimit:(u=y.seconds.upperLimit)!==null&&u!==void 0?u:y.seconds.maxValue},minutes:{lowerLimit:(c=y.minutes.lowerLimit)!==null&&c!==void 0?c:y.minutes.minValue,upperLimit:(l=y.minutes.upperLimit)!==null&&l!==void 0?l:y.minutes.maxValue},hours:{lowerLimit:(d=y.hours.lowerLimit)!==null&&d!==void 0?d:y.hours.minValue,upperLimit:(f=y.hours.upperLimit)!==null&&f!==void 0?f:y.hours.maxValue},daysOfMonth:{lowerLimit:(m=y.daysOfMonth.lowerLimit)!==null&&m!==void 0?m:y.daysOfMonth.minValue,upperLimit:(p=y.daysOfMonth.upperLimit)!==null&&p!==void 0?p:y.daysOfMonth.maxValue},months:{lowerLimit:(E=y.months.lowerLimit)!==null&&E!==void 0?E:y.months.minValue,upperLimit:(g=y.months.upperLimit)!==null&&g!==void 0?g:y.months.maxValue},daysOfWeek:{lowerLimit:(T=y.daysOfWeek.lowerLimit)!==null&&T!==void 0?T:y.daysOfWeek.minValue,upperLimit:(_=y.daysOfWeek.upperLimit)!==null&&_!==void 0?_:y.daysOfWeek.maxValue},years:{lowerLimit:(S=y.years.lowerLimit)!==null&&S!==void 0?S:y.years.minValue,upperLimit:(w=y.years.upperLimit)!==null&&w!==void 0?w:y.years.maxValue}}),t.override),v=D.object({presetId:D.string().required(),preset:fE.required(),useSeconds:D.boolean().required(),useYears:D.boolean().required(),useAliases:D.boolean(),useBlankDay:D.boolean().required(),allowOnlyOneBlankDayField:D.boolean().required(),mustHaveBlankDayField:D.boolean(),useLastDayOfMonth:D.boolean(),useLastDayOfWeek:D.boolean(),useNearestWeekday:D.boolean(),useNthWeekdayOfMonth:D.boolean(),seconds:D.object({lowerLimit:D.number().min(y.seconds.minValue).max(y.seconds.maxValue),upperLimit:D.number().min(y.seconds.minValue).max(y.seconds.maxValue)}).required(),minutes:D.object({lowerLimit:D.number().min(y.minutes.minValue).max(y.minutes.maxValue),upperLimit:D.number().min(y.minutes.minValue).max(y.minutes.maxValue)}).required(),hours:D.object({lowerLimit:D.number().min(y.hours.minValue).max(y.hours.maxValue),upperLimit:D.number().min(y.hours.minValue).max(y.hours.maxValue)}).required(),daysOfMonth:D.object({lowerLimit:D.number().min(y.daysOfMonth.minValue).max(y.daysOfMonth.maxValue),upperLimit:D.number().min(y.daysOfMonth.minValue).max(y.daysOfMonth.maxValue)}).required(),months:D.object({lowerLimit:D.number().min(y.months.minValue).max(y.months.maxValue),upperLimit:D.number().min(y.months.minValue).max(y.months.maxValue)}).required(),daysOfWeek:D.object({lowerLimit:D.number().min(y.daysOfWeek.minValue).max(y.daysOfWeek.maxValue),upperLimit:D.number().min(y.daysOfWeek.minValue).max(y.daysOfWeek.maxValue)}).required(),years:D.object({lowerLimit:D.number().min(y.years.minValue).max(y.years.maxValue),upperLimit:D.number().min(y.years.minValue).max(y.years.maxValue)}).required()}).required().validateSync(I,{strict:!1,abortEarly:!1,stripUnknown:!0,recursive:!0});return(0,Zi.valid)(v)}catch(y){return(0,Zi.err)(y.errors)}};Te.validateOptions=Aw});var Tt=G((Xi,fl)=>{"use strict";var Gr=Xi&&Xi.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Xi,"__esModule",{value:!0});var Vr=nt(),Sw=Gr(Vm()),_w=Gr(Gm()),Iw=Gr(Wm()),Ow=Gr(qm()),ww=Gr(Qm()),Dw=Gr(Km()),Rw=Gr(jm()),bw=ll();it();var Cw=(t,e)=>{let r=t.trim().split(" ");if(e.useSeconds&&e.useYears&&r.length!==7)return(0,Vr.err)(`Expected 7 values, but got ${r.length}.`);if((e.useSeconds&&!e.useYears||e.useYears&&!e.useSeconds)&&r.length!==6)return(0,Vr.err)(`Expected 6 values, but got ${r.length}.`);if(!e.useSeconds&&!e.useYears&&r.length!==5)return(0,Vr.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,Vr.valid)(n)},dl=(t,e={})=>{let r=(0,bw.validateOptions)(e);if(r.isError())return r;let n=r.getValue(),i=Cw(t,n);if(i.isError())return(0,Vr.err)([`${i.getError()} (Input cron: '${t}')`]);let s=i.getValue(),o=[];if(n.useSeconds&&o.push((0,Sw.default)(s,n)),o.push((0,_w.default)(s,n)),o.push((0,Iw.default)(s,n)),o.push((0,Ow.default)(s,n)),o.push((0,ww.default)(s,n)),o.push((0,Dw.default)(s,n)),n.useYears&&o.push((0,Rw.default)(s,n)),o.every(u=>u.isValid()))return(0,Vr.valid)(s);let a=[];return o.forEach(u=>{u.isError()&&u.getError().forEach(c=>{a.push(c)})}),a.forEach((u,c)=>{a[c]=`${u} (Input cron: '${t}')`}),(0,Vr.err)(a)};Xi.default=dl;fl.exports=dl;fl.exports.default=dl});var Gg=G(Ve=>{"use strict";Object.defineProperty(Ve,"__esModule",{value:!0});var Nt=class extends Error{},_l=class extends Nt{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}},Il=class extends Nt{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}},Ol=class extends Nt{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}},nr=class extends Nt{},fa=class extends Nt{constructor(e){super(`Invalid unit ${e}`)}},Ae=class extends Nt{},_t=class extends Nt{constructor(){super("Zone is an abstract class")}},C="numeric",ut="short",Be="long",pa={year:C,month:C,day:C},WE={year:C,month:ut,day:C},xw={year:C,month:ut,day:C,weekday:ut},qE={year:C,month:Be,day:C},QE={year:C,month:Be,day:C,weekday:Be},KE={hour:C,minute:C},jE={hour:C,minute:C,second:C},YE={hour:C,minute:C,second:C,timeZoneName:ut},HE={hour:C,minute:C,second:C,timeZoneName:Be},zE={hour:C,minute:C,hourCycle:"h23"},JE={hour:C,minute:C,second:C,hourCycle:"h23"},ZE={hour:C,minute:C,second:C,hourCycle:"h23",timeZoneName:ut},XE={hour:C,minute:C,second:C,hourCycle:"h23",timeZoneName:Be},eg={year:C,month:C,day:C,hour:C,minute:C},tg={year:C,month:C,day:C,hour:C,minute:C,second:C},rg={year:C,month:ut,day:C,hour:C,minute:C},ng={year:C,month:ut,day:C,hour:C,minute:C,second:C},vw={year:C,month:ut,day:C,weekday:ut,hour:C,minute:C},ig={year:C,month:Be,day:C,hour:C,minute:C,timeZoneName:ut},sg={year:C,month:Be,day:C,hour:C,minute:C,second:C,timeZoneName:ut},og={year:C,month:Be,day:C,weekday:Be,hour:C,minute:C,timeZoneName:Be},ag={year:C,month:Be,day:C,weekday:Be,hour:C,minute:C,second:C,timeZoneName:Be},sr=class{get type(){throw new _t}get name(){throw new _t}get ianaName(){return this.name}get isUniversal(){throw new _t}offsetName(e,r){throw new _t}formatOffset(e,r){throw new _t}offset(e){throw new _t}equals(e){throw new _t}get isValid(){throw new _t}},pl=null,ss=class t extends sr{static get instance(){return pl===null&&(pl=new t),pl}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:r,locale:n}){return yg(e,r,n)}formatOffset(e,r){return is(this.offset(e),r)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}},wl=new Map;function Pw(t){let e=wl.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"}),wl.set(t,e)),e}var Nw={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function Uw(t,e){let r=t.format(e).replace(/\u200E/g,""),n=/(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(r),[,i,s,o,a,u,c,l]=n;return[o,i,s,a,u,c,l]}function Lw(t,e){let r=t.formatToParts(e),n=[];for(let i=0;i<r.length;i++){let{type:s,value:o}=r[i],a=Nw[s];s==="era"?n[a]=o:Q(a)||(n[a]=parseInt(o,10))}return n}var ml=new Map,Ut=class t extends sr{static create(e){let r=ml.get(e);return r===void 0&&ml.set(e,r=new t(e)),r}static resetCache(){ml.clear(),wl.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 yg(e,r,n,this.name)}formatOffset(e,r){return is(this.offset(e),r)}offset(e){if(!this.valid)return NaN;let r=new Date(e);if(isNaN(r))return NaN;let n=Pw(this.name),[i,s,o,a,u,c,l]=n.formatToParts?Lw(n,r):Uw(n,r);a==="BC"&&(i=-Math.abs(i)+1);let f=Aa({year:i,month:s,day:o,hour:u===24?0:u,minute:c,second:l,millisecond:0}),m=+r,p=m%1e3;return m-=p>=0?p:1e3+p,(f-m)/(60*1e3)}equals(e){return e.type==="iana"&&e.name===this.name}get isValid(){return this.valid}},pE={};function Mw(t,e={}){let r=JSON.stringify([t,e]),n=pE[r];return n||(n=new Intl.ListFormat(t,e),pE[r]=n),n}var Dl=new Map;function Rl(t,e={}){let r=JSON.stringify([t,e]),n=Dl.get(r);return n===void 0&&(n=new Intl.DateTimeFormat(t,e),Dl.set(r,n)),n}var bl=new Map;function kw(t,e={}){let r=JSON.stringify([t,e]),n=bl.get(r);return n===void 0&&(n=new Intl.NumberFormat(t,e),bl.set(r,n)),n}var Cl=new Map;function Fw(t,e={}){let{base:r,...n}=e,i=JSON.stringify([t,n]),s=Cl.get(i);return s===void 0&&(s=new Intl.RelativeTimeFormat(t,e),Cl.set(i,s)),s}var ts=null;function Bw(){return ts||(ts=new Intl.DateTimeFormat().resolvedOptions().locale,ts)}var xl=new Map;function ug(t){let e=xl.get(t);return e===void 0&&(e=new Intl.DateTimeFormat(t).resolvedOptions(),xl.set(t,e)),e}var vl=new Map;function $w(t){let e=vl.get(t);if(!e){let r=new Intl.Locale(t);e="getWeekInfo"in r?r.getWeekInfo():r.weekInfo,"minimalDays"in e||(e={...cg,...e}),vl.set(t,e)}return e}function Vw(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=Rl(t).resolvedOptions(),i=t}catch{let u=t.substring(0,r);n=Rl(u).resolvedOptions(),i=u}let{numberingSystem:s,calendar:o}=n;return[i,s,o]}}function Gw(t,e,r){return(r||e)&&(t.includes("-u-")||(t+="-u"),r&&(t+=`-ca-${r}`),e&&(t+=`-nu-${e}`)),t}function Ww(t){let e=[];for(let r=1;r<=12;r++){let n=se.utc(2009,r,1);e.push(t(n))}return e}function qw(t){let e=[];for(let r=1;r<=7;r++){let n=se.utc(2016,11,13+r);e.push(t(n))}return e}function sa(t,e,r,n){let i=t.listingMode();return i==="error"?null:i==="en"?r(e):n(e)}function Qw(t){return t.numberingSystem&&t.numberingSystem!=="latn"?!1:t.numberingSystem==="latn"||!t.locale||t.locale.startsWith("en")||ug(t.locale).numberingSystem==="latn"}var Pl=class{constructor(e,r,n){this.padTo=n.padTo||0,this.floor=n.floor||!1;let{padTo:i,floor:s,...o}=n;if(!r||Object.keys(o).length>0){let a={useGrouping:!1,...n};n.padTo>0&&(a.minimumIntegerDigits=n.padTo),this.inf=kw(e,a)}}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):Wl(e,3);return fe(r,this.padTo)}}},Nl=class{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 o=-1*(e.offset/60),a=o>=0?`Etc/GMT+${o}`:`Etc/GMT${o}`;e.offset!==0&&Ut.create(a).valid?(i=a,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 s={...this.opts};s.timeZone=s.timeZone||i,this.dtf=Rl(r,s)}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()}},Ul=class{constructor(e,r,n){this.opts={style:"long",...n},!r&&Eg()&&(this.rtf=Fw(e,n))}format(e,r){return this.rtf?this.rtf.format(e,r):fD(r,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,r){return this.rtf?this.rtf.formatToParts(e,r):[]}},cg={firstDay:1,minimalDays:4,weekend:[6,7]},X=class t{static fromOpts(e){return t.create(e.locale,e.numberingSystem,e.outputCalendar,e.weekSettings,e.defaultToEN)}static create(e,r,n,i,s=!1){let o=e||re.defaultLocale,a=o||(s?"en-US":Bw()),u=r||re.defaultNumberingSystem,c=n||re.defaultOutputCalendar,l=Ml(i)||re.defaultWeekSettings;return new t(a,u,c,l,o)}static resetCache(){ts=null,Dl.clear(),bl.clear(),Cl.clear(),xl.clear(),vl.clear()}static fromObject({locale:e,numberingSystem:r,outputCalendar:n,weekSettings:i}={}){return t.create(e,r,n,i)}constructor(e,r,n,i,s){let[o,a,u]=Vw(e);this.locale=o,this.numberingSystem=r||a||null,this.outputCalendar=n||u||null,this.weekSettings=i,this.intl=Gw(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=s,this.fastNumbersCached=null}get fastNumbers(){return this.fastNumbersCached==null&&(this.fastNumbersCached=Qw(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,Ml(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 sa(this,e,Sg,()=>{let n=this.intl==="ja"||this.intl.startsWith("ja-");r&=!n;let i=r?{month:e,day:"numeric"}:{month:e},s=r?"format":"standalone";if(!this.monthsCache[s][e]){let o=n?a=>this.dtFormatter(a,i).format():a=>this.extract(a,i,"month");this.monthsCache[s][e]=Ww(o)}return this.monthsCache[s][e]})}weekdays(e,r=!1){return sa(this,e,Og,()=>{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]=qw(s=>this.extract(s,n,"weekday"))),this.weekdaysCache[i][e]})}meridiems(){return sa(this,void 0,()=>wg,()=>{if(!this.meridiemCache){let e={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[se.utc(2016,11,13,9),se.utc(2016,11,13,19)].map(r=>this.extract(r,e,"dayperiod"))}return this.meridiemCache})}eras(e){return sa(this,e,Dg,()=>{let r={era:e};return this.eraCache[e]||(this.eraCache[e]=[se.utc(-40,1,1),se.utc(2017,1,1)].map(n=>this.extract(n,r,"era"))),this.eraCache[e]})}extract(e,r,n){let i=this.dtFormatter(e,r),s=i.formatToParts(),o=s.find(a=>a.type.toLowerCase()===n);return o?o.value:null}numberFormatter(e={}){return new Pl(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,r={}){return new Nl(e,this.intl,r)}relFormatter(e={}){return new Ul(this.intl,this.isEnglish(),e)}listFormatter(e={}){return Mw(this.intl,e)}isEnglish(){return this.locale==="en"||this.locale.toLowerCase()==="en-us"||ug(this.intl).locale.startsWith("en-us")}getWeekSettings(){return this.weekSettings?this.weekSettings:gg()?$w(this.locale):cg}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})`}},hl=null,$e=class t extends sr{static get utcInstance(){return hl===null&&(hl=new t(0)),hl}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(Sa(r[1],r[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${is(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${is(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,r){return is(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}},ma=class extends sr{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 rr(t,e){if(Q(t)||t===null)return e;if(t instanceof sr)return t;if(Jw(t)){let r=t.toLowerCase();return r==="default"?e:r==="local"||r==="system"?ss.instance:r==="utc"||r==="gmt"?$e.utcInstance:$e.parseSpecifier(r)||Ut.create(t)}else return ir(t)?$e.instance(t):typeof t=="object"&&"offset"in t&&typeof t.offset=="function"?t:new ma(t)}var Bl={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"},mE={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]},Kw=Bl.hanidec.replace(/[\[|\]]/g,"").split("");function jw(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(Bl.hanidec)!==-1)e+=Kw.indexOf(t[r]);else for(let i in mE){let[s,o]=mE[i];n>=s&&n<=o&&(e+=n-s)}}return parseInt(e,10)}else return e}var Ll=new Map;function Yw(){Ll.clear()}function ot({numberingSystem:t},e=""){let r=t||"latn",n=Ll.get(r);n===void 0&&(n=new Map,Ll.set(r,n));let i=n.get(e);return i===void 0&&(i=new RegExp(`${Bl[r]}${e}`),n.set(e,i)),i}var hE=()=>Date.now(),EE="system",gE=null,yE=null,TE=null,AE=60,SE,_E=null,re=class{static get now(){return hE}static set now(e){hE=e}static set defaultZone(e){EE=e}static get defaultZone(){return rr(EE,ss.instance)}static get defaultLocale(){return gE}static set defaultLocale(e){gE=e}static get defaultNumberingSystem(){return yE}static set defaultNumberingSystem(e){yE=e}static get defaultOutputCalendar(){return TE}static set defaultOutputCalendar(e){TE=e}static get defaultWeekSettings(){return _E}static set defaultWeekSettings(e){_E=Ml(e)}static get twoDigitCutoffYear(){return AE}static set twoDigitCutoffYear(e){AE=e%100}static get throwOnInvalid(){return SE}static set throwOnInvalid(e){SE=e}static resetCaches(){X.resetCache(),Ut.resetCache(),se.resetCache(),Yw()}},Fe=class{constructor(e,r){this.reason=e,this.explanation=r}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}},lg=[0,31,59,90,120,151,181,212,243,273,304,334],dg=[0,31,60,91,121,152,182,213,244,274,305,335];function Ye(t,e){return new Fe("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function $l(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}function fg(t,e,r){return r+(as(t)?dg:lg)[e-1]}function pg(t,e){let r=as(t)?dg:lg,n=r.findIndex(s=>s<e),i=e-r[n];return{month:n+1,day:i}}function Vl(t,e){return(t-e+7)%7+1}function ha(t,e=4,r=1){let{year:n,month:i,day:s}=t,o=fg(n,i,s),a=Vl($l(n,i,s),r),u=Math.floor((o-a+14-e)/7),c;return u<1?(c=n-1,u=os(c,e,r)):u>os(n,e,r)?(c=n+1,u=1):c=n,{weekYear:c,weekNumber:u,weekday:a,..._a(t)}}function IE(t,e=4,r=1){let{weekYear:n,weekNumber:i,weekday:s}=t,o=Vl($l(n,1,e),r),a=Un(n),u=i*7+s-o-7+e,c;u<1?(c=n-1,u+=Un(c)):u>a?(c=n+1,u-=Un(n)):c=n;let{month:l,day:d}=pg(c,u);return{year:c,month:l,day:d,..._a(t)}}function El(t){let{year:e,month:r,day:n}=t,i=fg(e,r,n);return{year:e,ordinal:i,..._a(t)}}function OE(t){let{year:e,ordinal:r}=t,{month:n,day:i}=pg(e,r);return{year:e,month:n,day:i,..._a(t)}}function wE(t,e){if(!Q(t.localWeekday)||!Q(t.localWeekNumber)||!Q(t.localWeekYear)){if(!Q(t.weekday)||!Q(t.weekNumber)||!Q(t.weekYear))throw new nr("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}}function Hw(t,e=4,r=1){let n=Ta(t.weekYear),i=He(t.weekNumber,1,os(t.weekYear,e,r)),s=He(t.weekday,1,7);return n?i?s?!1:Ye("weekday",t.weekday):Ye("week",t.weekNumber):Ye("weekYear",t.weekYear)}function zw(t){let e=Ta(t.year),r=He(t.ordinal,1,Un(t.year));return e?r?!1:Ye("ordinal",t.ordinal):Ye("year",t.year)}function mg(t){let e=Ta(t.year),r=He(t.month,1,12),n=He(t.day,1,Ea(t.year,t.month));return e?r?n?!1:Ye("day",t.day):Ye("month",t.month):Ye("year",t.year)}function hg(t){let{hour:e,minute:r,second:n,millisecond:i}=t,s=He(e,0,23)||e===24&&r===0&&n===0&&i===0,o=He(r,0,59),a=He(n,0,59),u=He(i,0,999);return s?o?a?u?!1:Ye("millisecond",i):Ye("second",n):Ye("minute",r):Ye("hour",e)}function Q(t){return typeof t>"u"}function ir(t){return typeof t=="number"}function Ta(t){return typeof t=="number"&&t%1===0}function Jw(t){return typeof t=="string"}function Zw(t){return Object.prototype.toString.call(t)==="[object Date]"}function Eg(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function gg(){try{return typeof Intl<"u"&&!!Intl.Locale&&("weekInfo"in Intl.Locale.prototype||"getWeekInfo"in Intl.Locale.prototype)}catch{return!1}}function Xw(t){return Array.isArray(t)?t:[t]}function DE(t,e,r){if(t.length!==0)return t.reduce((n,i)=>{let s=[e(i),i];return n&&r(n[0],s[0])===n[0]?n:s},null)[1]}function eD(t,e){return e.reduce((r,n)=>(r[n]=t[n],r),{})}function Mn(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function Ml(t){if(t==null)return null;if(typeof t!="object")throw new Ae("Week settings must be an object");if(!He(t.firstDay,1,7)||!He(t.minimalDays,1,7)||!Array.isArray(t.weekend)||t.weekend.some(e=>!He(e,1,7)))throw new Ae("Invalid week settings");return{firstDay:t.firstDay,minimalDays:t.minimalDays,weekend:Array.from(t.weekend)}}function He(t,e,r){return Ta(t)&&t>=e&&t<=r}function tD(t,e){return t-e*Math.floor(t/e)}function fe(t,e=2){let r=t<0,n;return r?n="-"+(""+-t).padStart(e,"0"):n=(""+t).padStart(e,"0"),n}function tr(t){if(!(Q(t)||t===null||t===""))return parseInt(t,10)}function Wr(t){if(!(Q(t)||t===null||t===""))return parseFloat(t)}function Gl(t){if(!(Q(t)||t===null||t==="")){let e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function Wl(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`)}}function as(t){return t%4===0&&(t%100!==0||t%400===0)}function Un(t){return as(t)?366:365}function Ea(t,e){let r=tD(e-1,12)+1,n=t+(e-r)/12;return r===2?as(n)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][r-1]}function Aa(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}function RE(t,e,r){return-Vl($l(t,1,e),r)+e-1}function os(t,e=4,r=1){let n=RE(t,e,r),i=RE(t+1,e,r);return(Un(t)-n+i)/7}function kl(t){return t>99?t:t>re.twoDigitCutoffYear?1900+t:2e3+t}function yg(t,e,r,n=null){let i=new Date(t),s={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};n&&(s.timeZone=n);let o={timeZoneName:e,...s},a=new Intl.DateTimeFormat(r,o).formatToParts(i).find(u=>u.type.toLowerCase()==="timezonename");return a?a.value:null}function Sa(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}function Tg(t){let e=Number(t);if(typeof t=="boolean"||t===""||!Number.isFinite(e))throw new Ae(`Invalid unit value ${t}`);return e}function ga(t,e){let r={};for(let n in t)if(Mn(t,n)){let i=t[n];if(i==null)continue;r[e(n)]=Tg(i)}return r}function is(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}${fe(r,2)}:${fe(n,2)}`;case"narrow":return`${i}${r}${n>0?`:${n}`:""}`;case"techie":return`${i}${fe(r,2)}${fe(n,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function _a(t){return eD(t,["hour","minute","second","millisecond"])}var rD=["January","February","March","April","May","June","July","August","September","October","November","December"],Ag=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],nD=["J","F","M","A","M","J","J","A","S","O","N","D"];function Sg(t){switch(t){case"narrow":return[...nD];case"short":return[...Ag];case"long":return[...rD];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}}var _g=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],Ig=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],iD=["M","T","W","T","F","S","S"];function Og(t){switch(t){case"narrow":return[...iD];case"short":return[...Ig];case"long":return[..._g];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}var wg=["AM","PM"],sD=["Before Christ","Anno Domini"],oD=["BC","AD"],aD=["B","A"];function Dg(t){switch(t){case"narrow":return[...aD];case"short":return[...oD];case"long":return[...sD];default:return null}}function uD(t){return wg[t.hour<12?0:1]}function cD(t,e){return Og(e)[t.weekday-1]}function lD(t,e){return Sg(e)[t.month-1]}function dD(t,e){return Dg(e)[t.year<0?0:1]}function fD(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."]},s=["hours","minutes","seconds"].indexOf(t)===-1;if(r==="auto"&&s){let d=t==="days";switch(e){case 1:return d?"tomorrow":`next ${i[t][0]}`;case-1:return d?"yesterday":`last ${i[t][0]}`;case 0:return d?"today":`this ${i[t][0]}`}}let o=Object.is(e,-0)||e<0,a=Math.abs(e),u=a===1,c=i[t],l=n?u?c[1]:c[2]||c[1]:u?i[t][0]:t;return o?`${a} ${l} ago`:`in ${a} ${l}`}function bE(t,e){let r="";for(let n of t)n.literal?r+=n.val:r+=e(n.val);return r}var pD={D:pa,DD:WE,DDD:qE,DDDD:QE,t:KE,tt:jE,ttt:YE,tttt:HE,T:zE,TT:JE,TTT:ZE,TTTT:XE,f:eg,ff:rg,fff:ig,ffff:og,F:tg,FF:ng,FFF:sg,FFFF:ag},ke=class t{static create(e,r={}){return new t(e,r)}static parseFormat(e){let r=null,n="",i=!1,s=[];for(let o=0;o<e.length;o++){let a=e.charAt(o);a==="'"?((n.length>0||i)&&s.push({literal:i||/^\s+$/.test(n),val:n===""?"'":n}),r=null,n="",i=!i):i||a===r?n+=a:(n.length>0&&s.push({literal:/^\s+$/.test(n),val:n}),n=a,r=a)}return n.length>0&&s.push({literal:i||/^\s+$/.test(n),val:n}),s}static macroTokenToFormatOpts(e){return pD[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 fe(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",s=(m,p)=>this.loc.extract(e,m,p),o=m=>e.isOffsetFixed&&e.offset===0&&m.allowZ?"Z":e.isValid?e.zone.formatOffset(e.ts,m.format):"",a=()=>n?uD(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),u=(m,p)=>n?lD(e,m):s(p?{month:m}:{month:m,day:"numeric"},"month"),c=(m,p)=>n?cD(e,m):s(p?{weekday:m}:{weekday:m,month:"long",day:"numeric"},"weekday"),l=m=>{let p=t.macroTokenToFormatOpts(m);return p?this.formatWithSystemDefault(e,p):m},d=m=>n?dD(e,m):s({era:m},"era"),f=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 o({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return o({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return o({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 a();case"d":return i?s({day:"numeric"},"day"):this.num(e.day);case"dd":return i?s({day:"2-digit"},"day"):this.num(e.day,2);case"c":return this.num(e.weekday);case"ccc":return c("short",!0);case"cccc":return c("long",!0);case"ccccc":return c("narrow",!0);case"E":return this.num(e.weekday);case"EEE":return c("short",!1);case"EEEE":return c("long",!1);case"EEEEE":return c("narrow",!1);case"L":return i?s({month:"numeric",day:"numeric"},"month"):this.num(e.month);case"LL":return i?s({month:"2-digit",day:"numeric"},"month"):this.num(e.month,2);case"LLL":return u("short",!0);case"LLLL":return u("long",!0);case"LLLLL":return u("narrow",!0);case"M":return i?s({month:"numeric"},"month"):this.num(e.month);case"MM":return i?s({month:"2-digit"},"month"):this.num(e.month,2);case"MMM":return u("short",!1);case"MMMM":return u("long",!1);case"MMMMM":return u("narrow",!1);case"y":return i?s({year:"numeric"},"year"):this.num(e.year);case"yy":return i?s({year:"2-digit"},"year"):this.num(e.year.toString().slice(-2),2);case"yyyy":return i?s({year:"numeric"},"year"):this.num(e.year,4);case"yyyyyy":return i?s({year:"numeric"},"year"):this.num(e.year,6);case"G":return d("short");case"GG":return d("long");case"GGGGG":return d("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 l(m)}};return bE(t.parseFormat(r),f)}formatDurationFromString(e,r){let n=this.opts.signMode==="negativeLargestOnly"?-1:1,i=l=>{switch(l[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}},s=(l,d)=>f=>{let m=i(f);if(m){let p=d.isNegativeDuration&&m!==d.largestUnit?n:1,E;return this.opts.signMode==="negativeLargestOnly"&&m!==d.largestUnit?E="never":this.opts.signMode==="all"?E="always":E="auto",this.num(l.get(m)*p,f.length,E)}else return f},o=t.parseFormat(r),a=o.reduce((l,{literal:d,val:f})=>d?l:l.concat(f),[]),u=e.shiftTo(...a.map(i).filter(l=>l)),c={isNegativeDuration:u<0,largestUnit:Object.keys(u.values)[0]};return bE(o,s(u,c))}},Rg=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function kn(...t){let e=t.reduce((r,n)=>r+n.source,"");return RegExp(`^${e}$`)}function Fn(...t){return e=>t.reduce(([r,n,i],s)=>{let[o,a,u]=s(e,i);return[{...r,...o},a||n,u]},[{},null,1]).slice(0,2)}function Bn(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]}function bg(...t){return(e,r)=>{let n={},i;for(i=0;i<t.length;i++)n[t[i]]=tr(e[r+i]);return[n,null,r+i]}}var Cg=/(?:([Zz])|([+-]\d\d)(?::?(\d\d))?)/,mD=`(?:${Cg.source}?(?:\\[(${Rg.source})\\])?)?`,ql=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,xg=RegExp(`${ql.source}${mD}`),Ql=RegExp(`(?:[Tt]${xg.source})?`),hD=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,ED=/(\d{4})-?W(\d\d)(?:-?(\d))?/,gD=/(\d{4})-?(\d{3})/,yD=bg("weekYear","weekNumber","weekDay"),TD=bg("year","ordinal"),AD=/(\d{4})-(\d\d)-(\d\d)/,vg=RegExp(`${ql.source} ?(?:${Cg.source}|(${Rg.source}))?`),SD=RegExp(`(?: ${vg.source})?`);function Ln(t,e,r){let n=t[e];return Q(n)?r:tr(n)}function _D(t,e){return[{year:Ln(t,e),month:Ln(t,e+1,1),day:Ln(t,e+2,1)},null,e+3]}function $n(t,e){return[{hours:Ln(t,e,0),minutes:Ln(t,e+1,0),seconds:Ln(t,e+2,0),milliseconds:Gl(t[e+3])},null,e+4]}function us(t,e){let r=!t[e]&&!t[e+1],n=Sa(t[e+1],t[e+2]),i=r?null:$e.instance(n);return[{},i,e+3]}function cs(t,e){let r=t[e]?Ut.create(t[e]):null;return[{},r,e+1]}var ID=RegExp(`^T?${ql.source}$`),OD=/^-?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 wD(t){let[e,r,n,i,s,o,a,u,c]=t,l=e[0]==="-",d=u&&u[0]==="-",f=(m,p=!1)=>m!==void 0&&(p||m&&l)?-m:m;return[{years:f(Wr(r)),months:f(Wr(n)),weeks:f(Wr(i)),days:f(Wr(s)),hours:f(Wr(o)),minutes:f(Wr(a)),seconds:f(Wr(u),u==="-0"),milliseconds:f(Gl(c),d)}]}var DD={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 Kl(t,e,r,n,i,s,o){let a={year:e.length===2?kl(tr(e)):tr(e),month:Ag.indexOf(r)+1,day:tr(n),hour:tr(i),minute:tr(s)};return o&&(a.second=tr(o)),t&&(a.weekday=t.length>3?_g.indexOf(t)+1:Ig.indexOf(t)+1),a}var RD=/^(?:(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,s,o,a,u,c,l,d]=t,f=Kl(e,i,n,r,s,o,a),m;return u?m=DD[u]:c?m=0:m=Sa(l,d),[f,new $e(m)]}function CD(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}var xD=/^(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$/,vD=/^(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$/,PD=/^(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 CE(t){let[,e,r,n,i,s,o,a]=t;return[Kl(e,i,n,r,s,o,a),$e.utcInstance]}function ND(t){let[,e,r,n,i,s,o,a]=t;return[Kl(e,a,r,n,i,s,o),$e.utcInstance]}var UD=kn(hD,Ql),LD=kn(ED,Ql),MD=kn(gD,Ql),kD=kn(xg),Pg=Fn(_D,$n,us,cs),FD=Fn(yD,$n,us,cs),BD=Fn(TD,$n,us,cs),$D=Fn($n,us,cs);function VD(t){return Bn(t,[UD,Pg],[LD,FD],[MD,BD],[kD,$D])}function GD(t){return Bn(CD(t),[RD,bD])}function WD(t){return Bn(t,[xD,CE],[vD,CE],[PD,ND])}function qD(t){return Bn(t,[OD,wD])}var QD=Fn($n);function KD(t){return Bn(t,[ID,QD])}var jD=kn(AD,SD),YD=kn(vg),HD=Fn($n,us,cs);function zD(t){return Bn(t,[jD,Pg],[YD,HD])}var xE="Invalid Duration",Ng={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}},JD={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},...Ng},je=146097/400,vn=146097/4800,ZD={years:{quarters:4,months:12,weeks:je/7,days:je,hours:je*24,minutes:je*24*60,seconds:je*24*60*60,milliseconds:je*24*60*60*1e3},quarters:{months:3,weeks:je/28,days:je/4,hours:je*24/4,minutes:je*24*60/4,seconds:je*24*60*60/4,milliseconds:je*24*60*60*1e3/4},months:{weeks:vn/7,days:vn,hours:vn*24,minutes:vn*24*60,seconds:vn*24*60*60,milliseconds:vn*24*60*60*1e3},...Ng},Qr=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],XD=Qr.slice(0).reverse();function Pt(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 he(n)}function Ug(t,e){var r;let n=(r=e.milliseconds)!=null?r:0;for(let i of XD.slice(1))e[i]&&(n+=e[i]*t[i].milliseconds);return n}function vE(t,e){let r=Ug(t,e)<0?-1:1;Qr.reduceRight((n,i)=>{if(Q(e[i]))return n;if(n){let s=e[n]*r,o=t[i][n],a=Math.floor(s/o);e[i]+=a*r,e[n]-=a*o*r}return i},null),Qr.reduce((n,i)=>{if(Q(e[i]))return n;if(n){let s=e[n]%1;e[n]-=s,e[i]+=s*t[n][i]}return i},null)}function PE(t){let e={};for(let[r,n]of Object.entries(t))n!==0&&(e[r]=n);return e}var he=class t{constructor(e){let r=e.conversionAccuracy==="longterm"||!1,n=r?ZD:JD;e.matrix&&(n=e.matrix),this.values=e.values,this.loc=e.loc||X.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 Ae(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new t({values:ga(e,t.normalizeUnit),loc:X.fromObject(r),conversionAccuracy:r.conversionAccuracy,matrix:r.matrix})}static fromDurationLike(e){if(ir(e))return t.fromMillis(e);if(t.isDuration(e))return e;if(typeof e=="object")return t.fromObject(e);throw new Ae(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,r){let[n]=qD(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]=KD(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 Ae("need to specify a reason the Duration is invalid");let n=e instanceof Fe?e:new Fe(e,r);if(re.throwOnInvalid)throw new Ol(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 fa(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?ke.create(this.loc,n).formatDurationFromString(this,e):xE}toHuman(e={}){if(!this.isValid)return xE;let r=e.showZeros!==!1,n=Qr.map(i=>{let s=this.values[i];return Q(s)||s===0&&!r?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...e,unit:i.slice(0,-1)}).format(s)}).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+=Wl(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},se.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?Ug(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)(Mn(r.values,i)||Mn(this.values,i))&&(n[i]=r.get(i)+this.get(i));return Pt(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]=Tg(e(this.values[n],n));return Pt(this,{values:r},!0)}get(e){return this[t.normalizeUnit(e)]}set(e){if(!this.isValid)return this;let r={...this.values,...ga(e,t.normalizeUnit)};return Pt(this,{values:r})}reconfigure({locale:e,numberingSystem:r,conversionAccuracy:n,matrix:i}={}){let o={loc:this.loc.clone({locale:e,numberingSystem:r}),matrix:i,conversionAccuracy:n};return Pt(this,o)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;let e=this.toObject();return vE(this.matrix,e),Pt(this,{values:e},!0)}rescale(){if(!this.isValid)return this;let e=PE(this.normalize().shiftToAll().toObject());return Pt(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(o=>t.normalizeUnit(o));let r={},n={},i=this.toObject(),s;for(let o of Qr)if(e.indexOf(o)>=0){s=o;let a=0;for(let c in n)a+=this.matrix[c][o]*n[c],n[c]=0;ir(i[o])&&(a+=i[o]);let u=Math.trunc(a);r[o]=u,n[o]=(a*1e3-u*1e3)/1e3}else ir(i[o])&&(n[o]=i[o]);for(let o in n)n[o]!==0&&(r[s]+=o===s?n[o]:n[o]/this.matrix[s][o]);return vE(this.matrix,r),Pt(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 Pt(this,{values:e},!0)}removeZeros(){if(!this.isValid)return this;let e=PE(this.values);return Pt(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}for(let n of Qr)if(!r(this.values[n],e.values[n]))return!1;return!0}},Pn="Invalid Interval";function eR(t,e){return!t||!t.isValid?jr.invalid("missing or invalid start"):!e||!e.isValid?jr.invalid("missing or invalid end"):e<t?jr.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}var jr=class t{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 Ae("need to specify a reason the Interval is invalid");let n=e instanceof Fe?e:new Fe(e,r);if(re.throwOnInvalid)throw new Il(n);return new t({invalid:n})}static fromDateTimes(e,r){let n=es(e),i=es(r),s=eR(n,i);return s??new t({start:n,end:i})}static after(e,r){let n=he.fromDurationLike(r),i=es(e);return t.fromDateTimes(i,i.plus(n))}static before(e,r){let n=he.fromDurationLike(r),i=es(e);return t.fromDateTimes(i.minus(n),i)}static fromISO(e,r){let[n,i]=(e||"").split("/",2);if(n&&i){let s,o;try{s=se.fromISO(n,r),o=s.isValid}catch{o=!1}let a,u;try{a=se.fromISO(i,r),u=a.isValid}catch{u=!1}if(o&&u)return t.fromDateTimes(s,a);if(o){let c=he.fromISO(i,r);if(c.isValid)return t.after(s,c)}else if(u){let c=he.fromISO(n,r);if(c.isValid)return t.before(a,c)}}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(es).filter(o=>this.contains(o)).sort((o,a)=>o.toMillis()-a.toMillis()),n=[],{s:i}=this,s=0;for(;i<this.e;){let o=r[s]||this.e,a=+o>+this.e?this.e:o;n.push(t.fromDateTimes(i,a)),i=a,s+=1}return n}splitBy(e){let r=he.fromDurationLike(e);if(!this.isValid||!r.isValid||r.as("milliseconds")===0)return[];let{s:n}=this,i=1,s,o=[];for(;n<this.e;){let a=this.start.plus(r.mapUnits(u=>u*i));s=+a>+this.e?this.e:a,o.push(t.fromDateTimes(n,s)),n=s,i+=1}return o}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,s)=>i.s-s.s).reduce(([i,s],o)=>s?s.overlaps(o)||s.abutsStart(o)?[i,s.union(o)]:[i.concat([s]),o]:[i,o],[[],null]);return n&&r.push(n),r}static xor(e){let r=null,n=0,i=[],s=e.map(u=>[{time:u.s,type:"s"},{time:u.e,type:"e"}]),o=Array.prototype.concat(...s),a=o.sort((u,c)=>u.time-c.time);for(let u of a)n+=u.type==="s"?1:-1,n===1?r=u.time:(r&&+r!=+u.time&&i.push(t.fromDateTimes(r,u.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()})`:Pn}[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=pa,r={}){return this.isValid?ke.create(this.s.loc.clone(r),e).formatInterval(this):Pn}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:Pn}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:Pn}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:Pn}toFormat(e,{separator:r=" \u2013 "}={}){return this.isValid?`${this.s.toFormat(e)}${r}${this.e.toFormat(e)}`:Pn}toDuration(e,r){return this.isValid?this.e.diff(this.s,e,r):he.invalid(this.invalidReason)}mapEndpoints(e){return t.fromDateTimes(e(this.s),e(this.e))}},Kr=class{static hasDST(e=re.defaultZone){let r=se.now().setZone(e).set({month:12});return!e.isUniversal&&r.offset!==r.set({month:6}).offset}static isValidIANAZone(e){return Ut.isValidZone(e)}static normalizeZone(e){return rr(e,re.defaultZone)}static getStartOfWeek({locale:e=null,locObj:r=null}={}){return(r||X.create(e)).getStartOfWeek()}static getMinimumDaysInFirstWeek({locale:e=null,locObj:r=null}={}){return(r||X.create(e)).getMinDaysInFirstWeek()}static getWeekendWeekdays({locale:e=null,locObj:r=null}={}){return(r||X.create(e)).getWeekendDays().slice()}static months(e="long",{locale:r=null,numberingSystem:n=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||X.create(r,n,s)).months(e)}static monthsFormat(e="long",{locale:r=null,numberingSystem:n=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||X.create(r,n,s)).months(e,!0)}static weekdays(e="long",{locale:r=null,numberingSystem:n=null,locObj:i=null}={}){return(i||X.create(r,n,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:r=null,numberingSystem:n=null,locObj:i=null}={}){return(i||X.create(r,n,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return X.create(e).meridiems()}static eras(e="short",{locale:r=null}={}){return X.create(r,null,"gregory").eras(e)}static features(){return{relative:Eg(),localeWeek:gg()}}};function NE(t,e){let r=i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),n=r(e)-r(t);return Math.floor(he.fromMillis(n).as("days"))}function tR(t,e,r){let n=[["years",(u,c)=>c.year-u.year],["quarters",(u,c)=>c.quarter-u.quarter+(c.year-u.year)*4],["months",(u,c)=>c.month-u.month+(c.year-u.year)*12],["weeks",(u,c)=>{let l=NE(u,c);return(l-l%7)/7}],["days",NE]],i={},s=t,o,a;for(let[u,c]of n)r.indexOf(u)>=0&&(o=u,i[u]=c(t,e),a=s.plus(i),a>e?(i[u]--,t=s.plus(i),t>e&&(a=t,i[u]--,t=s.plus(i))):t=a);return[t,i,a,o]}function rR(t,e,r,n){let[i,s,o,a]=tR(t,e,r),u=e-i,c=r.filter(d=>["hours","minutes","seconds","milliseconds"].indexOf(d)>=0);c.length===0&&(o<e&&(o=i.plus({[a]:1})),o!==i&&(s[a]=(s[a]||0)+u/(o-i)));let l=he.fromObject(s,n);return c.length>0?he.fromMillis(u,n).shiftTo(...c).plus(l):l}var nR="missing Intl.DateTimeFormat.formatToParts support";function Z(t,e=r=>r){return{regex:t,deser:([r])=>e(jw(r))}}var iR=String.fromCharCode(160),Lg=`[ ${iR}]`,Mg=new RegExp(Lg,"g");function sR(t){return t.replace(/\./g,"\\.?").replace(Mg,Lg)}function UE(t){return t.replace(/\./g,"").replace(Mg," ").toLowerCase()}function at(t,e){return t===null?null:{regex:RegExp(t.map(sR).join("|")),deser:([r])=>t.findIndex(n=>UE(r)===UE(n))+e}}function LE(t,e){return{regex:t,deser:([,r,n])=>Sa(r,n),groups:e}}function oa(t){return{regex:t,deser:([e])=>e}}function oR(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function aR(t,e){let r=ot(e),n=ot(e,"{2}"),i=ot(e,"{3}"),s=ot(e,"{4}"),o=ot(e,"{6}"),a=ot(e,"{1,2}"),u=ot(e,"{1,3}"),c=ot(e,"{1,6}"),l=ot(e,"{1,9}"),d=ot(e,"{2,4}"),f=ot(e,"{4,6}"),m=g=>({regex:RegExp(oR(g.val)),deser:([T])=>T,literal:!0}),E=(g=>{if(t.literal)return m(g);switch(g.val){case"G":return at(e.eras("short"),0);case"GG":return at(e.eras("long"),0);case"y":return Z(c);case"yy":return Z(d,kl);case"yyyy":return Z(s);case"yyyyy":return Z(f);case"yyyyyy":return Z(o);case"M":return Z(a);case"MM":return Z(n);case"MMM":return at(e.months("short",!0),1);case"MMMM":return at(e.months("long",!0),1);case"L":return Z(a);case"LL":return Z(n);case"LLL":return at(e.months("short",!1),1);case"LLLL":return at(e.months("long",!1),1);case"d":return Z(a);case"dd":return Z(n);case"o":return Z(u);case"ooo":return Z(i);case"HH":return Z(n);case"H":return Z(a);case"hh":return Z(n);case"h":return Z(a);case"mm":return Z(n);case"m":return Z(a);case"q":return Z(a);case"qq":return Z(n);case"s":return Z(a);case"ss":return Z(n);case"S":return Z(u);case"SSS":return Z(i);case"u":return oa(l);case"uu":return oa(a);case"uuu":return Z(r);case"a":return at(e.meridiems(),0);case"kkkk":return Z(s);case"kk":return Z(d,kl);case"W":return Z(a);case"WW":return Z(n);case"E":case"c":return Z(r);case"EEE":return at(e.weekdays("short",!1),1);case"EEEE":return at(e.weekdays("long",!1),1);case"ccc":return at(e.weekdays("short",!0),1);case"cccc":return at(e.weekdays("long",!0),1);case"Z":case"ZZ":return LE(new RegExp(`([+-]${a.source})(?::(${n.source}))?`),2);case"ZZZ":return LE(new RegExp(`([+-]${a.source})(${n.source})?`),2);case"z":return oa(/[a-z_+-/]{1,256}?/i);case" ":return oa(/[^\S\n\r]/);default:return m(g)}})(t)||{invalidReason:nR};return E.token=t,E}var uR={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 cR(t,e,r){let{type:n,value:i}=t;if(n==="literal"){let u=/^\s+$/.test(i);return{literal:!u,val:u?" ":i}}let s=e[n],o=n;n==="hour"&&(e.hour12!=null?o=e.hour12?"hour12":"hour24":e.hourCycle!=null?e.hourCycle==="h11"||e.hourCycle==="h12"?o="hour12":o="hour24":o=r.hour12?"hour12":"hour24");let a=uR[o];if(typeof a=="object"&&(a=a[s]),a)return{literal:!1,val:a}}function lR(t){return[`^${t.map(r=>r.regex).reduce((r,n)=>`${r}(${n.source})`,"")}$`,t]}function dR(t,e,r){let n=t.match(e);if(n){let i={},s=1;for(let o in r)if(Mn(r,o)){let a=r[o],u=a.groups?a.groups+1:1;!a.literal&&a.token&&(i[a.token.val[0]]=a.deser(n.slice(s,s+u))),s+=u}return[n,i]}else return[n,{}]}function fR(t){let e=s=>{switch(s){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}},r=null,n;return Q(t.z)||(r=Ut.create(t.z)),Q(t.Z)||(r||(r=new $e(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=Gl(t.u)),[Object.keys(t).reduce((s,o)=>{let a=e(o);return a&&(s[a]=t[o]),s},{}),r,n]}var gl=null;function pR(){return gl||(gl=se.fromMillis(1555555555555)),gl}function mR(t,e){if(t.literal)return t;let r=ke.macroTokenToFormatOpts(t.val),n=Bg(r,e);return n==null||n.includes(void 0)?t:n}function kg(t,e){return Array.prototype.concat(...t.map(r=>mR(r,e)))}var ya=class{constructor(e,r){if(this.locale=e,this.format=r,this.tokens=kg(ke.parseFormat(r),e),this.units=this.tokens.map(n=>aR(n,e)),this.disqualifyingUnit=this.units.find(n=>n.invalidReason),!this.disqualifyingUnit){let[n,i]=lR(this.units);this.regex=RegExp(n,"i"),this.handlers=i}}explainFromTokens(e){if(this.isValid){let[r,n]=dR(e,this.regex,this.handlers),[i,s,o]=n?fR(n):[null,null,void 0];if(Mn(n,"a")&&Mn(n,"H"))throw new nr("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:s,specificOffset:o}}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 Fg(t,e,r){return new ya(t,r).explainFromTokens(e)}function hR(t,e,r){let{result:n,zone:i,specificOffset:s,invalidReason:o}=Fg(t,e,r);return[n,i,s,o]}function Bg(t,e){if(!t)return null;let n=ke.create(e,t).dtFormatter(pR()),i=n.formatToParts(),s=n.resolvedOptions();return i.map(o=>cR(o,t,s))}var yl="Invalid DateTime",ME=864e13;function rs(t){return new Fe("unsupported zone",`the zone "${t.name}" is not supported`)}function Tl(t){return t.weekData===null&&(t.weekData=ha(t.c)),t.weekData}function Al(t){return t.localWeekData===null&&(t.localWeekData=ha(t.c,t.loc.getMinDaysInFirstWeek(),t.loc.getStartOfWeek())),t.localWeekData}function qr(t,e){let r={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new se({...r,...e,old:r})}function $g(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 s=r.offset(n);return i===s?[n,i]:[t-Math.min(i,s)*60*1e3,Math.max(i,s)]}function aa(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()}}function ca(t,e,r){return $g(Aa(t),e,r)}function kE(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,s={...t.c,year:n,month:i,day:Math.min(t.c.day,Ea(n,i))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},o=he.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"),a=Aa(s),[u,c]=$g(a,r,t.zone);return o!==0&&(u+=o,c=t.zone.offset(u)),{ts:u,o:c}}function Nn(t,e,r,n,i,s){let{setZone:o,zone:a}=r;if(t&&Object.keys(t).length!==0||e){let u=e||a,c=se.fromObject(t,{...r,zone:u,specificOffset:s});return o?c:c.setZone(a)}else return se.invalid(new Fe("unparsable",`the input "${i}" can't be parsed as ${n}`))}function ua(t,e,r=!0){return t.isValid?ke.create(X.create("en-US"),{allowZ:r,forceSimple:!0}).formatDateTimeFromString(t,e):null}function Sl(t,e,r){let n=t.c.year>9999||t.c.year<0,i="";if(n&&t.c.year>=0&&(i+="+"),i+=fe(t.c.year,n?6:4),r==="year")return i;if(e){if(i+="-",i+=fe(t.c.month),r==="month")return i;i+="-"}else if(i+=fe(t.c.month),r==="month")return i;return i+=fe(t.c.day),i}function FE(t,e,r,n,i,s,o){let a=!r||t.c.millisecond!==0||t.c.second!==0,u="";switch(o){case"day":case"month":case"year":break;default:if(u+=fe(t.c.hour),o==="hour")break;if(e){if(u+=":",u+=fe(t.c.minute),o==="minute")break;a&&(u+=":",u+=fe(t.c.second))}else{if(u+=fe(t.c.minute),o==="minute")break;a&&(u+=fe(t.c.second))}if(o==="second")break;a&&(!n||t.c.millisecond!==0)&&(u+=".",u+=fe(t.c.millisecond,3))}return i&&(t.isOffsetFixed&&t.offset===0&&!s?u+="Z":t.o<0?(u+="-",u+=fe(Math.trunc(-t.o/60)),u+=":",u+=fe(Math.trunc(-t.o%60))):(u+="+",u+=fe(Math.trunc(t.o/60)),u+=":",u+=fe(Math.trunc(t.o%60)))),s&&(u+="["+t.zone.ianaName+"]"),u}var Vg={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},ER={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},gR={ordinal:1,hour:0,minute:0,second:0,millisecond:0},la=["year","month","day","hour","minute","second","millisecond"],yR=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],TR=["year","ordinal","hour","minute","second","millisecond"];function da(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 fa(t);return e}function BE(t){switch(t.toLowerCase()){case"localweekday":case"localweekdays":return"localWeekday";case"localweeknumber":case"localweeknumbers":return"localWeekNumber";case"localweekyear":case"localweekyears":return"localWeekYear";default:return da(t)}}function AR(t){if(ns===void 0&&(ns=re.now()),t.type!=="iana")return t.offset(ns);let e=t.name,r=Fl.get(e);return r===void 0&&(r=t.offset(ns),Fl.set(e,r)),r}function $E(t,e){let r=rr(e.zone,re.defaultZone);if(!r.isValid)return se.invalid(rs(r));let n=X.fromObject(e),i,s;if(Q(t.year))i=re.now();else{for(let u of la)Q(t[u])&&(t[u]=Vg[u]);let o=mg(t)||hg(t);if(o)return se.invalid(o);let a=AR(r);[i,s]=ca(t,a,r)}return new se({ts:i,zone:r,loc:n,o:s})}function VE(t,e,r){let n=Q(r.round)?!0:r.round,i=Q(r.rounding)?"trunc":r.rounding,s=(a,u)=>(a=Wl(a,n||r.calendary?0:2,r.calendary?"round":i),e.loc.clone(r).relFormatter(r).format(a,u)),o=a=>r.calendary?e.hasSame(t,a)?0:e.startOf(a).diff(t.startOf(a),a).get(a):e.diff(t,a).get(a);if(r.unit)return s(o(r.unit),r.unit);for(let a of r.units){let u=o(a);if(Math.abs(u)>=1)return s(u,a)}return s(t>e?-0:0,r.units[r.units.length-1])}function GE(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]}var ns,Fl=new Map,se=class t{constructor(e){let r=e.zone||re.defaultZone,n=e.invalid||(Number.isNaN(e.ts)?new Fe("invalid input"):null)||(r.isValid?null:rs(r));this.ts=Q(e.ts)?re.now():e.ts;let i=null,s=null;if(!n)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(r))[i,s]=[e.old.c,e.old.o];else{let a=ir(e.o)&&!e.old?e.o:r.offset(this.ts);i=aa(this.ts,a),n=Number.isNaN(i.year)?new Fe("invalid input"):null,i=n?null:i,s=n?null:a}this._zone=r,this.loc=e.loc||X.create(),this.invalid=n,this.weekData=null,this.localWeekData=null,this.c=i,this.o=s,this.isLuxonDateTime=!0}static now(){return new t({})}static local(){let[e,r]=GE(arguments),[n,i,s,o,a,u,c]=r;return $E({year:n,month:i,day:s,hour:o,minute:a,second:u,millisecond:c},e)}static utc(){let[e,r]=GE(arguments),[n,i,s,o,a,u,c]=r;return e.zone=$e.utcInstance,$E({year:n,month:i,day:s,hour:o,minute:a,second:u,millisecond:c},e)}static fromJSDate(e,r={}){let n=Zw(e)?e.valueOf():NaN;if(Number.isNaN(n))return t.invalid("invalid input");let i=rr(r.zone,re.defaultZone);return i.isValid?new t({ts:n,zone:i,loc:X.fromObject(r)}):t.invalid(rs(i))}static fromMillis(e,r={}){if(ir(e))return e<-ME||e>ME?t.invalid("Timestamp out of range"):new t({ts:e,zone:rr(r.zone,re.defaultZone),loc:X.fromObject(r)});throw new Ae(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,r={}){if(ir(e))return new t({ts:e*1e3,zone:rr(r.zone,re.defaultZone),loc:X.fromObject(r)});throw new Ae("fromSeconds requires a numerical input")}static fromObject(e,r={}){e=e||{};let n=rr(r.zone,re.defaultZone);if(!n.isValid)return t.invalid(rs(n));let i=X.fromObject(r),s=ga(e,BE),{minDaysInFirstWeek:o,startOfWeek:a}=wE(s,i),u=re.now(),c=Q(r.specificOffset)?n.offset(u):r.specificOffset,l=!Q(s.ordinal),d=!Q(s.year),f=!Q(s.month)||!Q(s.day),m=d||f,p=s.weekYear||s.weekNumber;if((m||l)&&p)throw new nr("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(f&&l)throw new nr("Can't mix ordinal dates with month/day");let E=p||s.weekday&&!m,g,T,_=aa(u,c);E?(g=yR,T=ER,_=ha(_,o,a)):l?(g=TR,T=gR,_=El(_)):(g=la,T=Vg);let S=!1;for(let j of g){let Dt=s[j];Q(Dt)?S?s[j]=T[j]:s[j]=_[j]:S=!0}let w=E?Hw(s,o,a):l?zw(s):mg(s),y=w||hg(s);if(y)return t.invalid(y);let I=E?IE(s,o,a):l?OE(s):s,[M,v]=ca(I,c,n),L=new t({ts:M,zone:n,o:v,loc:i});return s.weekday&&m&&e.weekday!==L.weekday?t.invalid("mismatched weekday",`you can't specify both a weekday of ${s.weekday} and a date of ${L.toISO()}`):L.isValid?L:t.invalid(L.invalid)}static fromISO(e,r={}){let[n,i]=VD(e);return Nn(n,i,r,"ISO 8601",e)}static fromRFC2822(e,r={}){let[n,i]=GD(e);return Nn(n,i,r,"RFC 2822",e)}static fromHTTP(e,r={}){let[n,i]=WD(e);return Nn(n,i,r,"HTTP",r)}static fromFormat(e,r,n={}){if(Q(e)||Q(r))throw new Ae("fromFormat requires an input string and a format");let{locale:i=null,numberingSystem:s=null}=n,o=X.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0}),[a,u,c,l]=hR(o,e,r);return l?t.invalid(l):Nn(a,u,n,`format ${r}`,e,c)}static fromString(e,r,n={}){return t.fromFormat(e,r,n)}static fromSQL(e,r={}){let[n,i]=zD(e);return Nn(n,i,r,"SQL",e)}static invalid(e,r=null){if(!e)throw new Ae("need to specify a reason the DateTime is invalid");let n=e instanceof Fe?e:new Fe(e,r);if(re.throwOnInvalid)throw new _l(n);return new t({invalid:n})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}static parseFormatForOpts(e,r={}){let n=Bg(e,X.fromObject(r));return n?n.map(i=>i?i.val:null).join(""):null}static expandFormat(e,r={}){return kg(ke.parseFormat(e),X.fromObject(r)).map(i=>i.val).join("")}static resetCache(){ns=void 0,Fl.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?Tl(this).weekYear:NaN}get weekNumber(){return this.isValid?Tl(this).weekNumber:NaN}get weekday(){return this.isValid?Tl(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?Al(this).weekday:NaN}get localWeekNumber(){return this.isValid?Al(this).weekNumber:NaN}get localWeekYear(){return this.isValid?Al(this).weekYear:NaN}get ordinal(){return this.isValid?El(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=Aa(this.c),i=this.zone.offset(n-e),s=this.zone.offset(n+e),o=this.zone.offset(n-i*r),a=this.zone.offset(n-s*r);if(o===a)return[this];let u=n-o*r,c=n-a*r,l=aa(u,o),d=aa(c,a);return l.hour===d.hour&&l.minute===d.minute&&l.second===d.second&&l.millisecond===d.millisecond?[qr(this,{ts:u}),qr(this,{ts:c})]:[this]}get isInLeapYear(){return as(this.year)}get daysInMonth(){return Ea(this.year,this.month)}get daysInYear(){return this.isValid?Un(this.year):NaN}get weeksInWeekYear(){return this.isValid?os(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?os(this.localWeekYear,this.loc.getMinDaysInFirstWeek(),this.loc.getStartOfWeek()):NaN}resolvedLocaleOptions(e={}){let{locale:r,numberingSystem:n,calendar:i}=ke.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:r,numberingSystem:n,outputCalendar:i}}toUTC(e=0,r={}){return this.setZone($e.instance(e),r)}toLocal(){return this.setZone(re.defaultZone)}setZone(e,{keepLocalTime:r=!1,keepCalendarTime:n=!1}={}){if(e=rr(e,re.defaultZone),e.equals(this.zone))return this;if(e.isValid){let i=this.ts;if(r||n){let s=e.offset(this.ts),o=this.toObject();[i]=ca(o,s,e)}return qr(this,{ts:i,zone:e})}else return t.invalid(rs(e))}reconfigure({locale:e,numberingSystem:r,outputCalendar:n}={}){let i=this.loc.clone({locale:e,numberingSystem:r,outputCalendar:n});return qr(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;let r=ga(e,BE),{minDaysInFirstWeek:n,startOfWeek:i}=wE(r,this.loc),s=!Q(r.weekYear)||!Q(r.weekNumber)||!Q(r.weekday),o=!Q(r.ordinal),a=!Q(r.year),u=!Q(r.month)||!Q(r.day),c=a||u,l=r.weekYear||r.weekNumber;if((c||o)&&l)throw new nr("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(u&&o)throw new nr("Can't mix ordinal dates with month/day");let d;s?d=IE({...ha(this.c,n,i),...r},n,i):Q(r.ordinal)?(d={...this.toObject(),...r},Q(r.day)&&(d.day=Math.min(Ea(d.year,d.month),d.day))):d=OE({...El(this.c),...r});let[f,m]=ca(d,this.o,this.zone);return qr(this,{ts:f,o:m})}plus(e){if(!this.isValid)return this;let r=he.fromDurationLike(e);return qr(this,kE(this,r))}minus(e){if(!this.isValid)return this;let r=he.fromDurationLike(e).negate();return qr(this,kE(this,r))}startOf(e,{useLocaleWeeks:r=!1}={}){if(!this.isValid)return this;let n={},i=he.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 s=this.loc.getStartOfWeek(),{weekday:o}=this;o<s&&(n.weekNumber=this.weekNumber-1),n.weekday=s}else n.weekday=1;if(i==="quarters"){let s=Math.ceil(this.month/3);n.month=(s-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?ke.create(this.loc.redefaultToEN(r)).formatDateTimeFromString(this,e):yl}toLocaleString(e=pa,r={}){return this.isValid?ke.create(this.loc.clone(r),e).formatDateTime(this):yl}toLocaleParts(e={}){return this.isValid?ke.create(this.loc.clone(e),e).formatDateTimeParts(this):[]}toISO({format:e="extended",suppressSeconds:r=!1,suppressMilliseconds:n=!1,includeOffset:i=!0,extendedZone:s=!1,precision:o="milliseconds"}={}){if(!this.isValid)return null;o=da(o);let a=e==="extended",u=Sl(this,a,o);return la.indexOf(o)>=3&&(u+="T"),u+=FE(this,a,r,n,i,s,o),u}toISODate({format:e="extended",precision:r="day"}={}){return this.isValid?Sl(this,e==="extended",da(r)):null}toISOWeekDate(){return ua(this,"kkkk-'W'WW-c")}toISOTime({suppressMilliseconds:e=!1,suppressSeconds:r=!1,includeOffset:n=!0,includePrefix:i=!1,extendedZone:s=!1,format:o="extended",precision:a="milliseconds"}={}){return this.isValid?(a=da(a),(i&&la.indexOf(a)>=3?"T":"")+FE(this,o==="extended",r,e,n,s,a)):null}toRFC2822(){return ua(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return ua(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?Sl(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")),ua(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():yl}[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 he.invalid("created by diffing an invalid DateTime");let i={locale:this.locale,numberingSystem:this.numberingSystem,...n},s=Xw(r).map(he.normalizeUnit),o=e.valueOf()>this.valueOf(),a=o?this:e,u=o?e:this,c=rR(a,u,s,i);return o?c.negate():c}diffNow(e="milliseconds",r={}){return this.diff(t.now(),e,r)}until(e){return this.isValid?jr.fromDateTimes(this,e):this}hasSame(e,r,n){if(!this.isValid)return!1;let i=e.valueOf(),s=this.setZone(e.zone,{keepLocalTime:!0});return s.startOf(r,n)<=i&&i<=s.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"],s=e.unit;return Array.isArray(e.unit)&&(i=e.unit,s=void 0),VE(r,this.plus(n),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?VE(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 Ae("min requires all arguments be DateTimes");return DE(e,r=>r.valueOf(),Math.min)}static max(...e){if(!e.every(t.isDateTime))throw new Ae("max requires all arguments be DateTimes");return DE(e,r=>r.valueOf(),Math.max)}static fromFormatExplain(e,r,n={}){let{locale:i=null,numberingSystem:s=null}=n,o=X.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});return Fg(o,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,s=X.fromOpts({locale:n,numberingSystem:i,defaultToEN:!0});return new ya(s,e)}static fromFormatParser(e,r,n={}){if(Q(e)||Q(r))throw new Ae("fromFormatParser requires an input string and a format parser");let{locale:i=null,numberingSystem:s=null}=n,o=X.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});if(!o.equals(r.locale))throw new Ae(`fromFormatParser called with a locale of ${o}, but the format parser was created for ${r.locale}`);let{result:a,zone:u,specificOffset:c,invalidReason:l}=r.explainFromTokens(e);return l?t.invalid(l):Nn(a,u,n,`format ${r.format}`,e,c)}static get DATE_SHORT(){return pa}static get DATE_MED(){return WE}static get DATE_MED_WITH_WEEKDAY(){return xw}static get DATE_FULL(){return qE}static get DATE_HUGE(){return QE}static get TIME_SIMPLE(){return KE}static get TIME_WITH_SECONDS(){return jE}static get TIME_WITH_SHORT_OFFSET(){return YE}static get TIME_WITH_LONG_OFFSET(){return HE}static get TIME_24_SIMPLE(){return zE}static get TIME_24_WITH_SECONDS(){return JE}static get TIME_24_WITH_SHORT_OFFSET(){return ZE}static get TIME_24_WITH_LONG_OFFSET(){return XE}static get DATETIME_SHORT(){return eg}static get DATETIME_SHORT_WITH_SECONDS(){return tg}static get DATETIME_MED(){return rg}static get DATETIME_MED_WITH_SECONDS(){return ng}static get DATETIME_MED_WITH_WEEKDAY(){return vw}static get DATETIME_FULL(){return ig}static get DATETIME_FULL_WITH_SECONDS(){return sg}static get DATETIME_HUGE(){return og}static get DATETIME_HUGE_WITH_SECONDS(){return ag}};function es(t){if(se.isDateTime(t))return t;if(t&&t.valueOf&&ir(t.valueOf()))return se.fromJSDate(t);if(t&&typeof t=="object")return se.fromObject(t);throw new Ae(`Unknown datetime argument: ${t}, of type ${typeof t}`)}var SR="3.7.1";Ve.DateTime=se;Ve.Duration=he;Ve.FixedOffsetZone=$e;Ve.IANAZone=Ut;Ve.Info=Kr;Ve.Interval=jr;Ve.InvalidZone=ma;Ve.Settings=re;Ve.SystemZone=ss;Ve.VERSION=SR;Ve.Zone=sr});var qg=G((ZM,Wg)=>{"use strict";var Yr=Gg();K.prototype.addYear=function(){this._date=this._date.plus({years:1})};K.prototype.addMonth=function(){this._date=this._date.plus({months:1}).startOf("month")};K.prototype.addDay=function(){this._date=this._date.plus({days:1}).startOf("day")};K.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}))};K.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}))};K.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}))};K.prototype.subtractYear=function(){this._date=this._date.minus({years:1})};K.prototype.subtractMonth=function(){this._date=this._date.minus({months:1}).endOf("month").startOf("second")};K.prototype.subtractDay=function(){this._date=this._date.minus({days:1}).endOf("day").startOf("second")};K.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}))};K.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}))};K.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}))};K.prototype.getDate=function(){return this._date.day};K.prototype.getFullYear=function(){return this._date.year};K.prototype.getDay=function(){var t=this._date.weekday;return t==7?0:t};K.prototype.getMonth=function(){return this._date.month-1};K.prototype.getHours=function(){return this._date.hour};K.prototype.getMinutes=function(){return this._date.minute};K.prototype.getSeconds=function(){return this._date.second};K.prototype.getMilliseconds=function(){return this._date.millisecond};K.prototype.getTime=function(){return this._date.valueOf()};K.prototype.getUTCDate=function(){return this._getUTC().day};K.prototype.getUTCFullYear=function(){return this._getUTC().year};K.prototype.getUTCDay=function(){var t=this._getUTC().weekday;return t==7?0:t};K.prototype.getUTCMonth=function(){return this._getUTC().month-1};K.prototype.getUTCHours=function(){return this._getUTC().hour};K.prototype.getUTCMinutes=function(){return this._getUTC().minute};K.prototype.getUTCSeconds=function(){return this._getUTC().second};K.prototype.toISOString=function(){return this._date.toUTC().toISO()};K.prototype.toJSON=function(){return this._date.toJSON()};K.prototype.setDate=function(t){this._date=this._date.set({day:t})};K.prototype.setFullYear=function(t){this._date=this._date.set({year:t})};K.prototype.setDay=function(t){this._date=this._date.set({weekday:t})};K.prototype.setMonth=function(t){this._date=this._date.set({month:t+1})};K.prototype.setHours=function(t){this._date=this._date.set({hour:t})};K.prototype.setMinutes=function(t){this._date=this._date.set({minute:t})};K.prototype.setSeconds=function(t){this._date=this._date.set({second:t})};K.prototype.setMilliseconds=function(t){this._date=this._date.set({millisecond:t})};K.prototype._getUTC=function(){return this._date.toUTC()};K.prototype.toString=function(){return this.toDate().toString()};K.prototype.toDate=function(){return this._date.toJSDate()};K.prototype.isLastDayOfMonth=function(){var t=this._date.plus({days:1}).startOf("day");return this._date.month!==t.month};K.prototype.isLastWeekdayOfMonth=function(){var t=this._date.plus({days:7}).startOf("day");return this._date.month!==t.month};function K(t,e){var r={zone:e};if(t?t instanceof K?this._date=t._date:t instanceof Date?this._date=Yr.DateTime.fromJSDate(t,r):typeof t=="number"?this._date=Yr.DateTime.fromMillis(t,r):typeof t=="string"&&(this._date=Yr.DateTime.fromISO(t,r),this._date.isValid||(this._date=Yr.DateTime.fromRFC2822(t,r)),this._date.isValid||(this._date=Yr.DateTime.fromSQL(t,r)),this._date.isValid||(this._date=Yr.DateTime.fromFormat(t,"EEE, d MMM yyyy HH:mm:ss",r))):this._date=Yr.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))}Wg.exports=K});var jg=G((XM,Kg)=>{"use strict";function Hr(t){return{start:t,count:1}}function Qg(t,e){t.end=e,t.step=e-t.start,t.count=2}function jl(t,e,r){e&&(e.count===2?(t.push(Hr(e.start)),t.push(Hr(e.end))):t.push(e)),r&&t.push(r)}function _R(t){for(var e=[],r=void 0,n=0;n<t.length;n++){var i=t[n];typeof i!="number"?(jl(e,r,Hr(i)),r=void 0):r?r.count===1?Qg(r,i):r.step===i-r.end?(r.count++,r.end=i):r.count===2?(e.push(Hr(r.start)),r=Hr(r.end),Qg(r,i)):(jl(e,r),r=Hr(i)):r=Hr(i)}return jl(e,r),e}Kg.exports=_R});var Hg=G((ek,Yg)=>{"use strict";var IR=jg();function OR(t,e,r){var n=IR(t);if(n.length===1){var i=n[0],s=i.step;if(s===1&&i.start===e&&i.end===r)return"*";if(s!==1&&i.start===e&&i.end===r-s+1)return"*/"+s}for(var o=[],a=0,u=n.length;a<u;++a){var c=n[a];if(c.count===1){o.push(c.start);continue}var s=c.step;if(c.step===1){o.push(c.start+"-"+c.end);continue}var l=c.start==0?c.count-1:c.count;c.step*l>c.end?o=o.concat(Array.from({length:c.end-c.start+1}).map(function(f,m){var p=c.start+m;return(p-c.start)%c.step===0?p:null}).filter(function(f){return f!=null})):c.end===r-c.step+1?o.push(c.start+"/"+c.step):o.push(c.start+"-"+c.end+"/"+c.step)}return o.join(",")}Yg.exports=OR});var Zg=G((tk,Jg)=>{"use strict";var zr=qg(),wR=Hg(),zg=1e4;function N(t,e){this._options=e,this._utc=e.utc||!1,this._tz=this._utc?"UTC":e.tz,this._currentDate=new zr(e.currentDate,this._tz),this._startDate=e.startDate?new zr(e.startDate,this._tz):null,this._endDate=e.endDate?new zr(e.endDate,this._tz):null,this._isIterator=e.iterator||!1,this._hasIterated=!1,this._nthDayOfWeek=e.nthDayOfWeek||0,this.fields=N._freezeFields(t)}N.map=["second","minute","hour","dayOfMonth","month","dayOfWeek"];N.predefined={"@yearly":"0 0 1 1 *","@monthly":"0 0 1 * *","@weekly":"0 0 * * 0","@daily":"0 0 * * *","@hourly":"0 * * * *"};N.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"]}];N.daysInMonth=[31,29,31,30,31,30,31,31,30,31,30,31];N.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}};N.parseDefaults=["0","*","*","*","*","*"];N.standardValidCharacters=/^[,*\d/-]+$/;N.dayOfWeekValidCharacters=/^[?,*\dL#/-]+$/;N.dayOfMonthValidCharacters=/^[?,*\dL/-]+$/;N.validCharacters={second:N.standardValidCharacters,minute:N.standardValidCharacters,hour:N.standardValidCharacters,dayOfMonth:N.dayOfMonthValidCharacters,month:N.standardValidCharacters,dayOfWeek:N.dayOfWeekValidCharacters};N._isValidConstraintChar=function(e,r){return typeof r!="string"?!1:e.chars.some(function(n){return r.indexOf(n)>-1})};N._parseField=function(e,r,n){switch(e){case"month":case"dayOfWeek":var i=N.aliases[e];r=r.replace(/[a-z]{3}/gi,function(u){if(u=u.toLowerCase(),typeof i[u]<"u")return i[u];throw new Error('Validation error, cannot resolve alias "'+u+'"')});break}if(!N.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 s(u){var c=[];function l(p){if(p instanceof Array)for(var E=0,g=p.length;E<g;E++){var T=p[E];if(N._isValidConstraintChar(n,T)){c.push(T);continue}if(typeof T!="number"||Number.isNaN(T)||T<n.min||T>n.max)throw new Error("Constraint error, got value "+T+" expected range "+n.min+"-"+n.max);c.push(T)}else{if(N._isValidConstraintChar(n,p)){c.push(p);return}var _=+p;if(Number.isNaN(_)||_<n.min||_>n.max)throw new Error("Constraint error, got value "+p+" expected range "+n.min+"-"+n.max);e==="dayOfWeek"&&(_=_%7),c.push(_)}}var d=u.split(",");if(!d.every(function(p){return p.length>0}))throw new Error("Invalid list value format");if(d.length>1)for(var f=0,m=d.length;f<m;f++)l(o(d[f]));else l(o(u));return c.sort(N._sortCompareFn),c}function o(u){var c=1,l=u.split("/");if(l.length>2)throw new Error("Invalid repeat: "+u);return l.length>1?(l[0]==+l[0]&&(l=[l[0]+"-"+n.max,l[1]]),a(l[0],l[l.length-1])):a(u,c)}function a(u,c){var l=[],d=u.split("-");if(d.length>1){if(d.length<2)return+u;if(!d[0].length){if(!d[1].length)throw new Error("Invalid range: "+u);return+u}var f=+d[0],m=+d[1];if(Number.isNaN(f)||Number.isNaN(m)||f<n.min||m>n.max)throw new Error("Constraint error, got range "+f+"-"+m+" expected range "+n.min+"-"+n.max);if(f>m)throw new Error("Invalid range: "+u);var p=+c;if(Number.isNaN(p)||p<=0)throw new Error("Constraint error, cannot repeat at every "+p+" time.");e==="dayOfWeek"&&m%7===0&&l.push(0);for(var E=f,g=m;E<=g;E++){var T=l.indexOf(E)!==-1;!T&&p>0&&p%c===0?(p=1,l.push(E)):p++}return l}return Number.isNaN(+u)?u:+u}return s(r)};N._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)};N._handleMaxDaysInMonth=function(t){if(t.month.length===1){var e=N.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(N._sortCompareFn)}};N._freezeFields=function(t){for(var e=0,r=N.map.length;e<r;++e){var n=N.map[e],i=t[n];t[n]=Object.freeze(i)}return Object.freeze(t)};N.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 s=t.getHours();t[e+r]();var o=t.getHours(),a=o-s;a===2?this.fields.hour.length!==24&&(this._dstStart=o):a===0&&t.getMinutes()===0&&t.getSeconds()===0&&this.fields.hour.length!==24&&(this._dstEnd=o)}};N.prototype._findSchedule=function(e){function r(T,_){for(var S=0,w=_.length;S<w;S++)if(_[S]>=T)return _[S]===T;return _[0]===T}function n(T,_){if(_<6){if(T.getDate()<8&&_===1)return!0;var S=T.getDate()%7?1:0,w=T.getDate()-T.getDate()%7,y=Math.floor(w/7)+S;return y===_}return!1}function i(T){return T.length>0&&T.some(function(_){return typeof _=="string"&&_.indexOf("L")>=0})}e=e||!1;var s=e?"subtract":"add",o=new zr(this._currentDate,this._tz),a=this._startDate,u=this._endDate,c=o.getTime(),l=0;function d(T){return T.some(function(_){if(!i([_]))return!1;var S=Number.parseInt(_[0])%7;if(Number.isNaN(S))throw new Error("Invalid last weekday of the month expression: "+_);return o.getDay()===S&&o.isLastWeekdayOfMonth()})}for(;l<zg;){if(l++,e){if(a&&o.getTime()-a.getTime()<0)throw new Error("Out of the timespan range")}else if(u&&u.getTime()-o.getTime()<0)throw new Error("Out of the timespan range");var f=r(o.getDate(),this.fields.dayOfMonth);i(this.fields.dayOfMonth)&&(f=f||o.isLastDayOfMonth());var m=r(o.getDay(),this.fields.dayOfWeek);i(this.fields.dayOfWeek)&&(m=m||d(this.fields.dayOfWeek));var p=this.fields.dayOfMonth.length>=N.daysInMonth[o.getMonth()],E=this.fields.dayOfWeek.length===N.constraints[5].max-N.constraints[5].min+1,g=o.getHours();if(!f&&(!m||E)){this._applyTimezoneShift(o,s,"Day");continue}if(!p&&E&&!f){this._applyTimezoneShift(o,s,"Day");continue}if(p&&!E&&!m){this._applyTimezoneShift(o,s,"Day");continue}if(this._nthDayOfWeek>0&&!n(o,this._nthDayOfWeek)){this._applyTimezoneShift(o,s,"Day");continue}if(!r(o.getMonth()+1,this.fields.month)){this._applyTimezoneShift(o,s,"Month");continue}if(r(g,this.fields.hour)){if(this._dstEnd===g&&!e){this._dstEnd=null,this._applyTimezoneShift(o,"add","Hour");continue}}else if(this._dstStart!==g){this._dstStart=null,this._applyTimezoneShift(o,s,"Hour");continue}else if(!r(g-1,this.fields.hour)){o[s+"Hour"]();continue}if(!r(o.getMinutes(),this.fields.minute)){this._applyTimezoneShift(o,s,"Minute");continue}if(!r(o.getSeconds(),this.fields.second)){this._applyTimezoneShift(o,s,"Second");continue}if(c===o.getTime()){s==="add"||o.getMilliseconds()===0?this._applyTimezoneShift(o,s,"Second"):o.setMilliseconds(0);continue}break}if(l>=zg)throw new Error("Invalid expression, loop limit exceeded");return this._currentDate=new zr(o,this._tz),this._hasIterated=!0,o};N.prototype.next=function(){var e=this._findSchedule();return this._isIterator?{value:e,done:!this.hasNext()}:e};N.prototype.prev=function(){var e=this._findSchedule(!0);return this._isIterator?{value:e,done:!this.hasPrev()}:e};N.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}};N.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}};N.prototype.iterate=function(e,r){var n=[];if(e>=0)for(var i=0,s=e;i<s;i++)try{var o=this.next();n.push(o),r&&r(o,i)}catch{break}else for(var i=0,s=e;i>s;i--)try{var o=this.prev();n.push(o),r&&r(o,i)}catch{break}return n};N.prototype.reset=function(e){this._currentDate=new zr(e||this._options.currentDate)};N.prototype.stringify=function(e){for(var r=[],n=e?0:1,i=N.map.length;n<i;++n){var s=N.map[n],o=this.fields[s],a=N.constraints[n];s==="dayOfMonth"&&this.fields.month.length===1?a={min:1,max:N.daysInMonth[this.fields.month[0]-1]}:s==="dayOfWeek"&&(a={min:0,max:6},o=o[o.length-1]===7?o.slice(0,-1):o),r.push(wR(o,a.min,a.max))}return r.join(" ")};N.parse=function(e,r){var n=this;typeof r=="function"&&(r={});function i(s,o){o||(o={}),typeof o.currentDate>"u"&&(o.currentDate=new zr(void 0,n._tz)),N.predefined[s]&&(s=N.predefined[s]);var a=[],u=(s+"").trim().split(/\s+/);if(u.length>6)throw new Error("Invalid cron expression");for(var c=N.map.length-u.length,l=0,d=N.map.length;l<d;++l){var f=N.map[l],m=u[u.length>d?l:l-c];if(l<c||!m)a.push(N._parseField(f,N.parseDefaults[l],N.constraints[l]));else{var p=f==="dayOfWeek"?_(m):m;a.push(N._parseField(f,p,N.constraints[l]))}}for(var E={},l=0,d=N.map.length;l<d;l++){var g=N.map[l];E[g]=a[l]}var T=N._handleMaxDaysInMonth(E);return E.dayOfMonth=T||E.dayOfMonth,new N(E,o);function _(S){var w=S.split("#");if(w.length>1){var y=+w[w.length-1];if(/,/.test(S))throw new Error("Constraint error, invalid dayOfWeek `#` and `,` special characters are incompatible");if(/\//.test(S))throw new Error("Constraint error, invalid dayOfWeek `#` and `/` special characters are incompatible");if(/-/.test(S))throw new Error("Constraint error, invalid dayOfWeek `#` and `-` special characters are incompatible");if(w.length>2||Number.isNaN(y)||y<1||y>5)throw new Error("Constraint error, invalid dayOfWeek occurrence number (#)");return o.nthDayOfWeek=y,w[0]}return S}}return i(e,r)};N.fieldsToExpression=function(e,r){function n(f,m,p){if(!m)throw new Error("Validation error, Field "+f+" is missing");if(m.length===0)throw new Error("Validation error, Field "+f+" contains no values");for(var E=0,g=m.length;E<g;E++){var T=m[E];if(!N._isValidConstraintChar(p,T)&&(typeof T!="number"||Number.isNaN(T)||T<p.min||T>p.max))throw new Error("Constraint error, got value "+T+" expected range "+p.min+"-"+p.max)}}for(var i={},s=0,o=N.map.length;s<o;++s){var a=N.map[s],u=e[a];n(a,u,N.constraints[s]);for(var c=[],l=-1;++l<u.length;)c[l]=u[l];if(u=c.sort(N._sortCompareFn).filter(function(f,m,p){return!m||f!==p[m-1]}),u.length!==c.length)throw new Error("Validation error, Field "+a+" contains duplicate values");i[a]=u}var d=N._handleMaxDaysInMonth(i);return i.dayOfMonth=d||i.dayOfMonth,new N(i,r||{})};Jg.exports=N});var ey=G((rk,Xg)=>{"use strict";var Ia=Zg();function or(){}or._parseEntry=function(e){var r=e.split(" ");if(r.length===6)return{interval:Ia.parse(e)};if(r.length>6)return{interval:Ia.parse(r.slice(0,6).join(" ")),command:r.slice(6,r.length)};throw new Error("Invalid entry: "+e)};or.parseExpression=function(e,r){return Ia.parse(e,r)};or.fieldsToExpression=function(e,r){return Ia.fieldsToExpression(e,r)};or.parseString=function(e){for(var r=e.split(`
|
|
5
|
-
`),n={variables:{},expressions:[],errors:{}},i=0,s=r.length;i<s;i++){var o=r[i],a=null,u=o.trim();if(u.length>0){if(u.match(/^#/))continue;if(a=u.match(/^(.*)=(.*)$/))n.variables[a[1]]=a[2];else{var c=null;try{c=or._parseEntry("0 "+u),n.expressions.push(c.interval)}catch(l){n.errors[u]=l}}}}return n};or.parseFile=function(e,r){require("fs").readFile(e,function(n,i){if(n){r(n);return}return r(null,or.parseString(i.toString()))})};Xg.exports=or});var S0={};P(S0,{APP_DEV:()=>Na,APP_DEV_PREFIX:()=>Je,APP_PREFIX:()=>ze,AutomationViewMode:()=>Pa,BUDIBASE_DATASOURCE_TYPE:()=>hd,BadRequestError:()=>gu,BudibaseError:()=>si,Config:()=>Sd,Cookie:()=>Jr,DEFAULT_BB_DATASOURCE_ID:()=>On,DEFAULT_EMPLOYEE_TABLE_ID:()=>Td,DEFAULT_EXPENSES_TABLE_ID:()=>yd,DEFAULT_INVENTORY_TABLE_ID:()=>gd,DEFAULT_JOBS_TABLE_ID:()=>Ed,DEFAULT_TENANT_ID:()=>oe,DeprecatedViews:()=>Gn,DesignDocuments:()=>ms,DocumentType:()=>ue,Duration:()=>me,DurationType:()=>qf,EmailUnavailableError:()=>Gt,Endpoint:()=>Ec,EndpointGroup:()=>_n,EndpointGroupList:()=>xo,FeatureDisabledError:()=>Su,ForbiddenError:()=>yu,GlobalRole:()=>Ad,HTTPError:()=>we,Header:()=>Le,InternalTable:()=>Rt,InvalidAPIKeyError:()=>oi,MAX_VALID_DATE:()=>La,MIN_VALID_DATE:()=>my,NotFoundError:()=>Eu,NotImplementedError:()=>Tu,RedisClient:()=>Ce,SEPARATOR:()=>R,SQLITE_DESIGN_DOC_ID:()=>It,SQS_DATASOURCE_INTERNAL:()=>md,StaticDatabases:()=>de,UNICODE_MAX:()=>De,USER_METADATA_PREFIX:()=>ps,UnexpectedError:()=>hu,UsageLimitError:()=>Au,UserStatus:()=>Ua,ViewName:()=>ur,accounts:()=>pn,auth:()=>sm,blacklist:()=>cm,cache:()=>yo,configs:()=>Wt,constants:()=>_d,context:()=>ae,csv:()=>Sm,db:()=>Er,docIds:()=>pf,docUpdates:()=>dm,encryption:()=>rm,env:()=>h,errors:()=>Iu,events:()=>li,features:()=>jp,getPublicError:()=>_u,init:()=>A0,installation:()=>Uu,locks:()=>Ei,logging:()=>Js,middleware:()=>im,objectStore:()=>xf,permissions:()=>qp,platform:()=>Fs,plugins:()=>am,queue:()=>tp,redis:()=>um,roles:()=>Wp,security:()=>yp,sessions:()=>Bu,setEnv:()=>ys,sql:()=>Am,tenancy:()=>T0,timers:()=>vu,userUtils:()=>Yf,users:()=>di,utils:()=>ni,withEnv:()=>Ay});module.exports=T_(S0);var Wt={};P(Wt,{analyticsEnabled:()=>Cu,generateConfigID:()=>qu,getAIConfig:()=>MU,getConfig:()=>tt,getDefaultGoogleConfig:()=>Cp,getGoogleConfig:()=>Qu,getGoogleDatasourceConfig:()=>Pp,getOIDCConfig:()=>NU,getOIDCConfigById:()=>Np,getOIDCLogosDoc:()=>vU,getPlatformUrl:()=>Oo,getRecaptchaConfig:()=>kU,getSCIMConfig:()=>LU,getSMTPConfig:()=>UU,getSMTPConfigDoc:()=>dS,getSettingsConfig:()=>vp,getSettingsConfigDoc:()=>fi,save:()=>CU});var A_=["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"],S_=["automation:deleted","workspace_app:deleted","datasource:deleted","table:deleted","query:deleted","view:deleted"],Om=[...A_,...S_],wm={"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:created":void 0,"workspace:deleted":void 0,"workspace:updated":void 0,"workspace_app:created":void 0,"workspace_app:deleted":void 0,"workspace_app:updated":void 0};var gc=(n=>(n.SQL="sql",n.JSON="json",n.FIELDS="fields",n))(gc||{}),yc=(f=>(f.STRING="string",f.CODE="code",f.LONGFORM="longForm",f.BOOLEAN="boolean",f.NUMBER="number",f.PASSWORD="password",f.LIST="list",f.OBJECT="object",f.JSON="json",f.FILE="file",f.FIELD_GROUP="fieldGroup",f.SELECT="select",f))(yc||{}),No=(T=>(T.AIRTABLE="AIRTABLE",T.ARANGODB="ARANGODB",T.BUDIBASE="BUDIBASE",T.COUCHDB="COUCHDB",T.DYNAMODB="DYNAMODB",T.ELASTICSEARCH="ELASTICSEARCH",T.FIRESTORE="FIRESTORE",T.GOOGLE_SHEETS="GOOGLE_SHEETS",T.MONGODB="MONGODB",T.MYSQL="MYSQL",T.ORACLE="ORACLE",T.POSTGRES="POSTGRES",T.REDIS="REDIS",T.REST="REST",T.S3="S3",T.SNOWFLAKE="SNOWFLAKE",T.SQL_SERVER="SQL_SERVER",T))(No||{});var Tc=(n=>(n.CONNECTION_CHECKING="connection",n.FETCH_TABLE_NAMES="fetch_table_names",n.EXPORT_SCHEMA="export_schema",n))(Tc||{});var __=k(require("lodash/isPlainObject")),Nr=(o=>(o.EQUAL="equal",o.NOT_EQUAL="notEqual",o.EMPTY="empty",o.NOT_EMPTY="notEmpty",o.FUZZY="fuzzy",o.STRING="string",o))(Nr||{}),Jt=(i=>(i.CONTAINS="contains",i.NOT_CONTAINS="notContains",i.CONTAINS_ANY="containsAny",i.ONE_OF="oneOf",i))(Jt||{}),In=(e=>(e.RANGE="range",e))(In||{}),Ai=(r=>(r.AND="$and",r.OR="$or",r))(Ai||{});function Uo(t){return Object.values(Ai).includes(t)}function Dm(t){return Object.values(Nr).includes(t)}function Rm(t){return Object.values(Jt).includes(t)}function Lo(t){return Object.values(In).includes(t)}var bm=t=>typeof t=="object"&&t._id&&t._rev;var Si=(s=>(s.USER="user",s.HEADER="header",s.QUERY="query",s.SUBDOMAIN="subdomain",s.PATH="path",s))(Si||{});var Cm={USE_ZOD_VALIDATOR:!1,AI_AGENTS:!1,DIRECT_LOGIN_TO_ACCOUNT_PORTAL:!1,DEBUG_UI:!1};var _i=(i=>(i.READ="read",i.WRITE="write",i.EXECUTE="execute",i.ADMIN="admin",i))(_i||{});var Mo=(d=>(d.APP="app",d.TABLE="table",d.USER="user",d.AUTOMATION="automation",d.WEBHOOK="webhook",d.BUILDER="builder",d.CREATOR="creator",d.GLOBAL_BUILDER="globalBuilder",d.QUERY="query",d.VIEW="view",d.LEGACY_VIEW="legacy_view",d))(Mo||{});var ko=t=>t.hosting==="cloud";var Fo=t=>t.authType==="sso";var R="_",De="\uFFF0",Zt=t=>`${t}${R}`,ue=(q=>(q.USER="us",q.GROUP="gr",q.WORKSPACE="workspace",q.CONFIG="config",q.TEMPLATE="template",q.APP="app",q.DEV="dev",q.APP_DEV="app_dev",q.APP_METADATA="app_metadata",q.ROLE="role",q.DEV_INFO="devinfo",q.AUTOMATION_LOG="log_au",q.ACCOUNT_METADATA="acc_metadata",q.PLUGIN="plg",q.DATASOURCE="datasource",q.DATASOURCE_PLUS="datasource_plus",q.APP_BACKUP="backup",q.TABLE="ta",q.ROW="ro",q.AUTOMATION="au",q.LINK="li",q.WEBHOOK="wh",q.INSTANCE="inst",q.LAYOUT="layout",q.SCREEN="screen",q.QUERY="query",q.DEPLOYMENTS="deployments",q.METADATA="metadata",q.MEM_VIEW="view",q.USER_FLAG="flag",q.AUTOMATION_METADATA="meta_au",q.AUDIT_LOG="al",q.SCIM_LOG="scimlog",q.ROW_ACTIONS="ra",q.OAUTH2_CONFIG="oauth2",q.OAUTH2_CONFIG_LOG="oauth2log",q.AGENT_CHAT="agentchat",q.AGENT_TOOL_SOURCE="agenttoolsource",q.WORKSPACE_APP="workspace_app",q.WORKSPACE_FAVOURITE="workspace_favourite",q))(ue||{});var Rt=(e=>(e.USER_METADATA="ta_users",e))(Rt||{});var Ac=(l=>(l.OBJECT="object",l.STRING="string",l.BOOLEAN="boolean",l.NUMBER="number",l.ARRAY="array",l.JSON="json",l.DATE="date",l.DATETIME="datetime",l.ATTACHMENT="attachment",l.LONGFORM="longform",l))(Ac||{}),Sc=(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))(Sc||{}),_c=(a=>(a.ROW_SAVED="ROW_SAVED",a.ROW_UPDATED="ROW_UPDATED",a.ROW_DELETED="ROW_DELETED",a.WEBHOOK="WEBHOOK",a.APP="APP",a.CRON="CRON",a.ROW_ACTION="ROW_ACTION",a))(_c||{});var Ic=(O=>(O.SEND_EMAIL_SMTP="SEND_EMAIL_SMTP",O.CREATE_ROW="CREATE_ROW",O.UPDATE_ROW="UPDATE_ROW",O.DELETE_ROW="DELETE_ROW",O.EXECUTE_BASH="EXECUTE_BASH",O.OUTGOING_WEBHOOK="OUTGOING_WEBHOOK",O.EXECUTE_SCRIPT="EXECUTE_SCRIPT",O.EXECUTE_SCRIPT_V2="EXECUTE_SCRIPT_V2",O.EXECUTE_QUERY="EXECUTE_QUERY",O.SERVER_LOG="SERVER_LOG",O.DELAY="DELAY",O.FILTER="FILTER",O.API_REQUEST="API_REQUEST",O.QUERY_ROWS="QUERY_ROWS",O.LOOP="LOOP",O.COLLECT="COLLECT",O.OPENAI="OPENAI",O.TRIGGER_AUTOMATION_RUN="TRIGGER_AUTOMATION_RUN",O.BRANCH="BRANCH",O.CLASSIFY_CONTENT="CLASSIFY_CONTENT",O.PROMPT_LLM="PROMPT_LLM",O.TRANSLATE="TRANSLATE",O.SUMMARISE="SUMMARISE",O.GENERATE_TEXT="GENERATE_TEXT",O.EXTRACT_FILE_DATA="EXTRACT_FILE_DATA",O.EXTRACT_STATE="EXTRACT_STATE",O.LOOP_V2="LOOP_V2",O.discord="discord",O.slack="slack",O.zapier="zapier",O.integromat="integromat",O.n8n="n8n",O))(Ic||{}),xm=[...Object.values(Ic),...Object.values(_c)];function vm(t){return t.stepId==="BRANCH"}var Oc="bb_internal";var Pm=["attachment_single","attachment","signature_single","bb_reference","json","array"];function Bo(t){return!!t.providerType}var _d={};P(_d,{APP_DEV:()=>Na,APP_DEV_PREFIX:()=>Je,APP_PREFIX:()=>ze,AutomationViewMode:()=>Pa,BUDIBASE_DATASOURCE_TYPE:()=>hd,Config:()=>Sd,Cookie:()=>Jr,DEFAULT_BB_DATASOURCE_ID:()=>On,DEFAULT_EMPLOYEE_TABLE_ID:()=>Td,DEFAULT_EXPENSES_TABLE_ID:()=>yd,DEFAULT_INVENTORY_TABLE_ID:()=>gd,DEFAULT_JOBS_TABLE_ID:()=>Ed,DEFAULT_TENANT_ID:()=>oe,DeprecatedViews:()=>Gn,DesignDocuments:()=>ms,DocumentType:()=>ue,GlobalRole:()=>Ad,Header:()=>Le,InternalTable:()=>Rt,MAX_VALID_DATE:()=>La,MIN_VALID_DATE:()=>my,SEPARATOR:()=>R,SQLITE_DESIGN_DOC_ID:()=>It,SQS_DATASOURCE_INTERNAL:()=>md,StaticDatabases:()=>de,UNICODE_MAX:()=>De,USER_METADATA_PREFIX:()=>ps,UserStatus:()=>Ua,ViewName:()=>ur});var Le=(S=>(S.API_KEY="x-budibase-api-key",S.LICENSE_KEY="x-budibase-license-key",S.API_VER="x-budibase-api-version",S.APP_ID="x-budibase-app-id",S.SESSION_ID="x-budibase-session-id",S.CLIENT="x-budibase-client",S.TYPE="x-budibase-type",S.PREVIEW_ROLE="x-budibase-role",S.TENANT_ID="x-budibase-tenant-id",S.VERIFICATION_CODE="x-budibase-verification-code",S.RETURN_VERIFICATION_CODE="x-budibase-return-verification-code",S.RESET_PASSWORD_CODE="x-budibase-reset-password-code",S.RETURN_RESET_PASSWORD_CODE="x-budibase-return-reset-password-code",S.TOKEN="x-budibase-token",S.CSRF_TOKEN="x-csrf-token",S.CORRELATION_ID="x-budibase-correlation-id",S.AUTHORIZATION="authorization",S.MIGRATING_APP="x-budibase-migrating-app",S.COOKIE="cookie",S))(Le||{});var Me={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"}},Nm={integer:{max:2147483647,min:-2147483648},int:{max:2147483647,min:-2147483648},smallint:{max:32767,min:-32768},mediumint:{max:8388607,min:-8388608}};var On="datasource_internal_bb_default";var ar={};P(ar,{ColumnSplitter:()=>ed,NoEmptyFilterStrings:()=>cy,buildQuery:()=>ly,cleanupQuery:()=>nd,fixupFilterArrays:()=>sd,getKeyNumbering:()=>id,getValidOperatorsForType:()=>jR,hasFilters:()=>td,limit:()=>fy,recurseLogicalOperators:()=>rd,removeKeyNumbering:()=>$o,runQuery:()=>Da,search:()=>zR,sort:()=>dy,splitFiltersArray:()=>Vo});var Vn=k(Um());var Xt={};P(Xt,{filterValueToLabel:()=>b_,hasSchema:()=>C_,isSupportedUserSearch:()=>km,parallelForeach:()=>R_,processSearchFilters:()=>Rc,toMap:()=>v_,trimOtherProps:()=>x_,unreachable:()=>D_});var Mm=k(require("lodash/pick")),w_=["field","operator","value","type","externalType","valueType","noValue","formulaType"];function D_(t,e){let r=e?.message||`No such case in exhaustive switch: ${t}`;if(!!!e?.doNotThrow)throw new Error(r)}async function R_(t,e,r){let n=[],i=Symbol.asyncIterator in t,s=i?t[Symbol.asyncIterator]():t[Symbol.iterator](),o=async()=>{let a=await(i?s.next():Promise.resolve(s.next()));for(;!a.done;)await e(a.value),a=await(i?s.next():Promise.resolve(s.next()))};for(let a=0;a<r;a++)n.push(o());await Promise.all(n)}function b_(){return Object.keys(Me).reduce((t,e)=>{let n=Me[e];return t[n.value]=n.label,t},{})}function C_(t){return typeof t=="object"&&!Array.isArray(t)&&t!==null&&!(t instanceof Date)&&Object.keys(t).length>0}function x_(t,e){return Object.keys(t).filter(n=>e.includes(n)).reduce((n,i)=>({...n,[i]:t[i]}),{})}function km(t){let e=[{op:"string",key:"email"},{op:"equal",key:"_id"},{op:"oneOf",key:"_id"}],{allOr:r,onEmptyFilter:n,...i}=t;for(let[s,o]of Object.entries(i)){if(typeof o!="object")return!1;if(Uo(s)){for(let c of t[s].conditions)if(!km(c))return!1;return!0}let a=Object.keys(o||{});if(a.length===0)continue;if(!e.find(c=>c.op===s&&a.length===1&&a[0]===c.key))return!1}return!0}function Rc(t){if(!t||t.length===0)return;let{allOr:e,onEmptyFilter:r,filters:n}=Vo(t);return{logicalOperator:"all",onEmptyFilter:r||"all",groups:[{logicalOperator:e?"any":"all",filters:n.map(i=>{let s=(0,Mm.default)(i,w_);return s.field=$o(s.field),s})}]}}function v_(t,e){return e.reduce((r,n)=>(r[n[t]]=n,r),{})}var Pe={};P(Pe,{cancelableTimeout:()=>Fm,cron:()=>WR,deepGet:()=>bc,duplicateName:()=>VR,getSequentialName:()=>GR,getUserColor:()=>N_,getUserInitials:()=>P_,getUserLabel:()=>U_,isGoogleSheets:()=>M_,isSQL:()=>k_,lists:()=>Zl,retry:()=>F_,roles:()=>Jl,schema:()=>ls,views:()=>zl,wait:()=>Cc,withTimeout:()=>L_});var bc=(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},P_=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"},N_=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%)`},U_=t=>{if(!t)return"";let{firstName:e,lastName:r,email:n}=t;return e&&r?`${e} ${r}`:e||r||n};function Fm(t){let e;return[new Promise((r,n)=>{e=setTimeout(()=>{n({status:301,errno:"ETIME"})},t)}),()=>{clearTimeout(e)}]}async function L_(t,e){let[r,n]=Fm(t),i=await Promise.race([e(),r]);return n(),i}function M_(t){return t==="GOOGLE_SHEETS"}function k_(t){return!t||!t.source?!1:["POSTGRES","SQL_SERVER","MYSQL","ORACLE"].indexOf(t.source)!==-1||t.isSQL===!0}async function Cc(t){return new Promise(e=>setTimeout(e,t))}async function F_(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 s=1.5**i*1e3*(Math.random()+.5);await Cc(s);try{return await t()}catch(o){n=o}}throw n}var ry=k(Tt()),ny=k(ey()),ty="(Input cron: ",DR={"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 RR(t){let e=[];for(let r of t){r.includes(ty)&&(r=r.split(ty)[0].trim());for(let[n,i]of Object.entries(DR))r.includes(n)&&(r=r.replace(new RegExp(n,"g"),i));e.push(r)}return e}function iy(t,e=4){let r=ny.default.parseExpression(t),n=[];for(let i=0;i<e;i++)n.push(r.next().toString());return n}function sy(t){let e=(0,ry.default)(t,{preset:"npm-cron-schedule",override:{useSeconds:!1}});return e.isValid()?{valid:!0}:{valid:!1,err:RR(e.getError())}}var ls={};P(ls,{decodeNonAscii:()=>Yl,encodeNonAscii:()=>xR,isDeprecatedSingleUserColumn:()=>bR,isNumeric:()=>vR,isRequired:()=>CR});function bR(t){return t.type==="bb_reference"&&t.subtype==="user"&&t.constraints?.type!=="array"}function CR(t){return!!t&&(typeof t.presence!="boolean"&&t.presence?.allowEmpty===!1||t.presence===!0)}function xR(t){return t.split("").map(e=>e.charCodeAt(0)>127?"\\u"+e.charCodeAt(0).toString(16).padStart(4,"0"):e).join("")}function Yl(t){return t.replace(/\\u([0-9a-fA-F]{4})/g,(e,r)=>String.fromCharCode(parseInt(r,16)))}function vR(t){return t.type==="number"||t.type==="bigint"}var zl={};P(zl,{basicFields:()=>MR,calculationFields:()=>LR,hasCalculationFields:()=>UR,isBasicViewField:()=>PR,isCalculationField:()=>ds,isCalculationView:()=>NR,isV2:()=>kR,isVisible:()=>oy});var Hl=k(require("lodash/pickBy"));function ds(t){return"calculationType"in t}function PR(t){return!ds(t)}function NR(t){return t.type==="calculation"}function UR(t){return Object.values(t.schema||{}).some(ds)}function LR(t){return(0,Hl.default)(t.schema||{},ds)}function oy(t){return t.visible!==!1}function MR(t,e){let{visible:r=!0}=e||{};return(0,Hl.default)(t.schema||{},n=>!ds(n)&&(!r||oy(n)))}function kR(t){return t.version===2}var Jl={};P(Jl,{checkForRoleInheritanceLoops:()=>BR});function FR(t){return`role${R}${t}`}function BR(t){let e=new Map;t.forEach(s=>{e.set(s._id,s)});let r=new Set,n=new Set;function i(s){let o=FR(s);if(n.has(s)||n.has(o))return!0;if(r.has(s)||r.has(o))return!1;n.add(s);let a=e.get(o)||e.get(s);if(!a)return n.delete(s),!1;let u=Array.isArray(a.inherits)?a.inherits:[a.inherits];for(let c of u)if(c&&i(c))return!0;return n.delete(s),r.add(s),!1}return!!t.find(s=>i(s._id))}var Zl={};P(Zl,{punctuateList:()=>$R});function $R(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]}var VR=(t,e)=>{let r=new RegExp("\\s(\\d+)$"),n=t.split(r)[0],i=new RegExp(`${n}\\s(\\d+)$`),s=[];e.filter(a=>{if(a===n)return!0;let u=a.match(i);return u?(s.push(parseInt(u[1])),!0):!1}),s.sort((a,u)=>a-u);let o;if(s.length===0)o=1;else{for(let a=0;a<s.length;a++)if(s[a]!==a+1){o=a+1;break}o||(o=s.length+1)}return`${n} ${o}`},GR=(t,e,{getName:r,numberFirstItem:n,separator:i=""}={})=>{if(!e?.length)return"";let s=e.trim(),o=n?`${e}1`:s;if(!t?.length)return o;let a=0;return t.forEach(u=>{let c=r?.(u)??u;if(typeof c!="string"||!c.startsWith(s))return;let l=c.split(s);if(l.length!==2)return;l[1].trim()===""&&(l[1]="1");let d=parseInt(l[1]);d>a&&(a=d)}),a===0?o:`${e}${i}${a+1}`};var WR={getNextExecutionDates:iy,validate:sy};var wa=k(require("lodash/isPlainObject")),Xl=k(require("lodash/isEmpty"));var QR=/{{([^{].*?)}}/g,uy=Object.values(Ai),KR=[...Object.values(Nr),...Object.values(Jt),...Object.values(In)],jR=(t,e,r)=>{let n=Me,i=[n.Equals,n.NotEquals,n.StartsWith,n.Like,n.Empty,n.NotEmpty,n.In],s=[n.Equals,n.NotEquals,n.MoreThan,n.LessThan,n.Empty,n.NotEmpty,n.In],o=[n.Contains,n.NotContains,n.ContainsAny,n.Empty,n.NotEmpty],a=[],{type:u,formulaType:c,subtype:l}=t;u==="string"?l==="array"?a=o:a=i:u==="number"||u==="bigint"?a=s:u==="options"?a=[n.Equals,n.NotEquals,n.Empty,n.NotEmpty,n.In]:u==="array"?a=o:u==="boolean"?a=[n.Equals,n.NotEquals,n.Empty,n.NotEmpty]:u==="longform"?a=i:u==="datetime"?a=s:u==="formula"&&c==="static"?a=i.concat([n.MoreThan,n.LessThan]):u==="ai"?a=i.concat([n.MoreThan,n.LessThan]):u==="bb_reference_single"||ls.isDeprecatedSingleUserColumn(t)?a=[n.Equals,n.NotEquals,n.Empty,n.NotEmpty,n.In]:u==="bb_reference"?a=o:u==="barcodeqr"&&(a=i);let d=r?.tableId?.includes("datasource_plus");return e==="_id"&&d&&(a=[n.Equals,n.NotEquals,n.In]),a},cy=[Me.StartsWith.value,Me.Like.value,Me.Equals.value,Me.NotEquals.value,Me.Contains.value,Me.NotContains.value,Me.ContainsAny.value,Me.In.value];function rd(t,e){for(let r of uy)t[r]&&(t[r].conditions=t[r].conditions.map(n=>e(n)));return t}var nd=t=>{for(let e of cy)if(t[e])for(let r of Object.keys(t)){if(r!==e)continue;if(typeof t[r]=="object")for(let[i,s]of Object.entries(t[r]))(s==null||s===""||YR(s))&&delete t[e][i]}return t=rd(t,nd),t};function YR(t){return Array.isArray(t)&&t.length===0}var $o=t=>id(t).key,id=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}},ed=class{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}=id(e),i;if(this.aliases)for(let o of Object.keys(this.aliases||{})){let a=`${o}.`;n.startsWith(a)&&(i=this.aliases[o],n=n.slice(a.length))}let s;for(let o of this.relationships){let a=`${o}.`;if(n.startsWith(a)){let u=n.split(a);u.shift(),s=a,n=u.join(".");break}}return this.columnPrefix&&n.startsWith(this.columnPrefix)&&(n=Yl(n.slice(this.columnPrefix.length))),{tableName:i,numberPrefix:r,relationshipPrefix:s,column:n}}};function HR(t){if(!t||!t?.operator||!t?.field)return;let e={},{operator:r,field:n,type:i,externalType:s}=t,{value:o}=t;(r==="empty"||r==="notEmpty")&&(o=null);let a=typeof o=="string"&&(o.match(QR)||[]).length>0;switch(i){case"datetime":if(!a&&r!=="empty"&&r!=="notEmpty"){if(!o)return;if(typeof o=="string")o=new Date(o).toISOString();else if(Lo(r))return e[r]??={},e[r][n]=o,e}break;case"number":typeof o=="string"&&!a&&(r==="oneOf"?o=o.split(",").map(parseFloat):o=parseFloat(o));break;case"boolean":o=`${o}`.toLowerCase()==="true";break;case"array":["contains","notContains","containsAny"].includes(r.toLocaleString())&&typeof o=="string"&&(o=o.split(","));break}if(Lo(r)){let c=Nm[s]||{min:Number.MIN_SAFE_INTEGER,max:Number.MAX_SAFE_INTEGER};e[r]??={},e[r][n]={low:i==="number"?c.min:"0000-00-00T00:00:00.000Z",high:i==="number"?c.max:"9999-00-00T00:00:00.000Z"}}else if(r==="rangeHigh"&&o!=null&&o!=="")e.range??={},e.range[n]={...e.range[n],high:o};else if(r==="rangeLow"&&o!=null&&o!=="")e.range??={},e.range[n]={...e.range[n],low:o};else if(Dm(r)||Rm(r)||Lo(r))i==="boolean"?r==="equal"&&o===!1?(e.notEqual=e.notEqual||{},e.notEqual[n]=!0):r==="notEqual"&&o===!1?(e.equal=e.equal||{},e.equal[n]=!0):(e[r]??={},e[r][n]=o):(e[r]??={},e[r][n]=o);else throw new Error(`Unsupported operator: ${r}`);return e}function Vo(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}function ly(t){if(!t)return{};if(Array.isArray(t)&&(t=Rc(t),!t))return{};let e={};t.onEmptyFilter?e.onEmptyFilter=t.onEmptyFilter:e.onEmptyFilter="all";let r=ay(t.logicalOperator||"all");return e[r]={conditions:(t.groups||[]).map(n=>{if(n.groups){let u=ly(n);return delete u.onEmptyFilter,u}let{allOr:i,onEmptyFilter:s,filters:o}=Vo(n.filters||[]);s&&(e.onEmptyFilter=s);let a=i?"$or":"$and";return n.logicalOperator&&(a=ay(n.logicalOperator)),{[a]:{conditions:o.map(HR).filter(u=>u)}}})},e}function ay(t){return t==="all"?"$and":"$or"}function sd(t){if(!t)return t;for(let e of Object.values(Jt)){let r=t[e];if(!(r==null||!(0,wa.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(s=>s.trim()):r[n]=[i]}}return rd(t,sd),t}function zR(t,e){let r=Da(t,e.query);e.sort&&(r=dy(r,e.sort,e.sortOrder||"ascending",e.sortType));let n=r.length;e.limit&&(r=fy(r,e.limit.toString()));let i={rows:r};return e.countRows&&(i.totalRows=n),i}function Da(t,e){if(!t||!Array.isArray(t))return[];if(!e)return t;if(e=nd(e),e=sd(e),!td(e)&&e.onEmptyFilter==="none")return[];let r=(y,I)=>M=>{for(let[v,L]of Object.entries(e[y]||{})){let j=Uo(y)?M:bc(M,$o(v)),Dt=I(j,L);if(e.allOr&&Dt)return!0;if(!e.allOr&&!Dt)return!1}return!e.allOr},n=r("string",(y,I)=>typeof y!="string"||typeof I!="string"?!1:y.toLowerCase().startsWith(I.toLowerCase())),i=r("fuzzy",(y,I)=>typeof y!="string"||typeof I!="string"?!1:y.toLowerCase().includes(I.toLowerCase())),s=r("range",(y,I)=>{if(y==null||y===""||((0,wa.default)(I.low)&&(0,Xl.default)(I.low)&&(I.low=void 0),(0,wa.default)(I.high)&&(0,Xl.default)(I.high)&&(I.high=void 0),I.low==null&&I.high==null))return!1;let M=+y;if(!isNaN(M)){let L=+I.low,j=+I.high;if(!isNaN(L)&&!isNaN(j))return M>=L&&M<=j;if(isNaN(L)){if(!isNaN(j))return M<=j}else return M>=L}let v=(0,Vn.default)(y);if(v.isValid()){let L=(0,Vn.default)(I.low||"0000-00-00T00:00:00.000Z"),j=(0,Vn.default)(I.high||"9999-00-00T00:00:00.000Z");if(L.isValid()&&j.isValid())return v.isAfter(L)&&v.isBefore(j)||v.isSame(L)||v.isSame(j);if(L.isValid())return v.isAfter(L)||v.isSame(L);if(j.isValid())return v.isBefore(j)||v.isSame(j)}return I.low!=null&&I.high!=null?y>=I.low&&y<=I.high:I.low!=null?y>=I.low:I.high!=null?y<=I.high:!1}),o=(y,I)=>{if(Array.isArray(y)){for(let v of y)if(o(v,I))return!0;return!1}if(y&&typeof y=="object"&&typeof I=="string")return y._id===I;if(y===I)return!0;if(y==null&&I!=null||y!=null&&I==null)return!1;let M=(0,Vn.default)(y);if(M.isValid()){let v=(0,Vn.default)(I);if(v.isValid())return M.isSame(v)}return!1},a=y=>(...I)=>!y(...I),u=r("equal",o),c=r("notEqual",a(o)),l=y=>typeof y=="string"?y==="":Array.isArray(y)?y.length===0:y&&typeof y=="object"?Object.keys(y).length===0:y==null,d=r("empty",l),f=r("notEmpty",a(l)),m=r("oneOf",(y,I)=>(typeof I=="string"&&(I=I.split(",")),typeof y=="number"&&(I=I.map(M=>parseFloat(M))),Array.isArray(I)?I.some(M=>o(y,M)):!1)),p=y=>(I,M)=>!Array.isArray(I)||(typeof M=="string"&&(M=M.split(","),typeof I[0]=="number"&&(M=M.map(v=>parseFloat(v)))),!Array.isArray(M))?!1:M.length===0?!0:M[y](v=>o(I,v)),E=r("contains",(y,I)=>Array.isArray(I)&&I.length===0?!0:p("every")(y,I)),g=r("notContains",(y,I)=>Array.isArray(I)&&I.length===0?!0:a(p("every"))(y,I)),T=r("containsAny",p("some")),_=r("$and",(y,I)=>{if(!I.length)return!1;for(let M of I)if(!Da([y],M).length)return!1;return!0}),S=r("$or",(y,I)=>{if(!I.length)return!1;for(let M of I)if(Da([y],{...M,allOr:!0}).length)return!0;return!1}),w=y=>{let I={string:n,fuzzy:i,range:s,equal:u,notEqual:c,empty:d,notEmpty:f,oneOf:m,contains:E,containsAny:T,notContains:g,$and:_,$or:S},M=Object.entries(e||{}).filter(([v,L])=>!["allOr","onEmptyFilter"].includes(v)&&L&&Object.keys(L).length>0).map(([v])=>I[v]?.(y)??!1);return td(e)?e.allOr?M.some(v=>v===!0):M.every(v=>v===!0):!0};return t.filter(w)}function dy(t,e,r,n="string"){if(!e||!r||!n)return t;let i=s=>s==null?s:n==="string"?`${s}`:parseFloat(s);return t.slice().sort((s,o)=>{let a=i(s[e]),u=i(o[e]),c=u==null||a>u?1:-1;return r.toLowerCase()==="descending"?c*-1:c})}function fy(t,e){let r=typeof e=="number"?e:parseFloat(e);return isNaN(r)?t:t.slice(0,r)}var td=t=>{if(!t)return!1;let e=r=>{for(let n of uy)if(r[n])for(let i of r[n]?.conditions||[]){let s=e(i);if(s)return s}for(let n of KR){let i=r[n];if(!i||typeof i!="object")continue;if(Object.entries(i).filter(o=>{let a=o[1]!==void 0||o[1]!==null||o[1]!=="";return n==="notEmpty"||a}).length!==0)return!0}return!1};return e(t)};var Ge={};P(Ge,{applications:()=>ad,automations:()=>ud,screens:()=>pd,users:()=>fd});var ad={};P(ad,{getDevAppID:()=>JR,getProdAppID:()=>Ra});var od=Zt("app"),fs=Zt("app_dev");function JR(t){if(!t)throw new Error("No app ID provided");if(t.startsWith(fs))return t;let e=t.split(od);e.shift();let r=e.join(od);return`${fs}${r}`}function Ra(t){if(!t)throw new Error("No app ID provided");if(!t.startsWith(fs))return t;let e=t.split(fs);e.shift();let r=e.join(fs);return`${od}${r}`}var ud={};P(ud,{checkForCollectStep:()=>tb,isAppAction:()=>eb,isRowAction:()=>ZR,isWebhookAction:()=>XR});function ZR(t){return t.definition.trigger?.stepId==="ROW_ACTION"}function XR(t){return t.definition.trigger?.stepId==="WEBHOOK"}function eb(t){return t.definition.trigger?.stepId==="APP"}function py(t){if(!t||!Array.isArray(t))return!1;for(let e of t){if(e.stepId==="COLLECT")return!0;if(vm(e)&&e.inputs.children){for(let r of Object.values(e.inputs.children))if(py(r))return!0}}return!1}function tb(t){return py(t.definition.steps)}var fd={};P(fd,{canCreateApps:()=>rb,containsUserID:()=>cb,getGlobalUserID:()=>ub,getUserAppGroups:()=>lb,getUserGroups:()=>dd,hasAdminPermissions:()=>ld,hasAppBuilderPermissions:()=>xa,hasBuilderPermissions:()=>ob,hasCreatorPermissions:()=>va,isAdmin:()=>Ca,isAdminOrBuilder:()=>nb,isAdminOrGlobalBuilder:()=>ib,isBuilder:()=>cd,isCreator:()=>ab,isGlobalBuilder:()=>ba,userAppAccessList:()=>db});function cd(t,e){return t?t.builder?.global?!0:!!(e&&t.builder?.apps?.includes(Ra(e))):!1}function ba(t){return cd(t)&&!xa(t)||Ca(t)}function rb(t){return ba(t)||va(t)}function Ca(t){return t?ld(t):!1}function nb(t,e){return cd(t,e)||Ca(t)}function ib(t){return ba(t)||Ca(t)}function xa(t){if(!t)return!1;let e=t.builder?.apps?.length;return!!!t.builder?.global&&e!=null&&e>0}function sb(t){return t?!!Object.values(t.roles??{}).find(e=>e==="CREATOR"):!1}function ob(t){return t?t.builder?.global||xa(t)||va(t):!1}function ld(t){return t?!!t.admin?.global:!1}function va(t){return t?!!t.builder?.creator:!1}function ab(t){return t?ba(t)||ld(t)||va(t)||xa(t)||sb(t):!1}function ub(t){if(typeof t!="string")return t;let e=`ro${R}ta_users${R}`;return t.startsWith(e)?t.split(e)[1]:t}function cb(t){return typeof t!="string"?!1:t.includes(`us${R}`)}function dd(t,e){return e?.filter(r=>r.users?.find(n=>n._id===t._id))||[]}function lb(t,e,r){let n=Ra(t);return dd(e,r).filter(s=>Object.keys(s.roles||{}).find(o=>o===n))}function db(t,e){let n=dd(t,e).flatMap(s=>Object.keys(s.roles||{})),i=[...Object.keys(t?.roles||{}),...n];return[...new Set(i)]}var pd={};P(pd,{findInSettings:()=>fb});function fb(t,e){let r=[];function n(i,s=""){for(let[o,a]of Object.entries(i))a&&(typeof a=="string"&&a.includes(e)?r.push({setting:s?`${s}.${o}`:o,value:a}):typeof a=="object"&&n(a,o))}return n(t.props),r}var Pa=(n=>(n.ALL="all",n.AUTOMATION="automation",n.STATUS="status",n))(Pa||{}),ur=(l=>(l.USER_BY_APP="by_app",l.USER_BY_EMAIL="by_email2",l.BY_API_KEY="by_api_key",l.LINK="by_link",l.ROUTING="screen_routes_2",l.AUTOMATION_LOGS="automation_logs",l.ACCOUNT_BY_EMAIL="account_by_email",l.PLATFORM_USERS_LOWERCASE="platform_users_lowercase_2",l.USER_BY_GROUP="user_by_group",l.APP_BACKUP_BY_TRIGGER="by_trigger",l))(ur||{}),Gn={by_email2:["by_email"]},de={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"}},ze=Zt("app"),Na=Zt("app_dev"),Je=Na,md="internal",hd="budibase",It="_design/sqlite",Ed="ta_bb_jobs",gd="ta_bb_inventory",yd="ta_bb_expenses",Td="ta_bb_employee",ps=`ro${R}ta_users${R}`,ms=(r=>(r[r.SQLITE=It]="SQLITE",r.MIGRATIONS="_design/migrations",r))(ms||{});var Ua=(r=>(r.ACTIVE="active",r.INACTIVE="inactive",r))(Ua||{}),Jr=(a=>(a.Auth="budibase:auth",a.Init="budibase:init",a.ACCOUNT_RETURN_URL="budibase:account:returnurl",a.DatasourceAuth="budibase:datasourceauth",a.OIDC_CONFIG="budibase:oidc:config",a.FeatureFlags="budibase:featureflags",a.RecaptchaSession="budibase:recaptcha",a))(Jr||{}),Ad=(i=>(i.OWNER="owner",i.ADMIN="admin",i.BUILDER="builder",i.WORKSPACE_MANAGER="workspace_manager",i))(Ad||{}),Sd=(u=>(u.SETTINGS="settings",u.ACCOUNT="account",u.SMTP="smtp",u.GOOGLE="google",u.OIDC="oidc",u.OIDC_LOGOS="logos_oidc",u.SCIM="scim",u.AI="AI",u))(Sd||{}),my=new Date(-2147483647e3),La=new Date(2147483647e3),oe="default";var yo={};P(yo,{CacheKey:()=>Ee,TTL:()=>an,app:()=>$s,bustCache:()=>zn,destroy:()=>Us,docWritethrough:()=>bp,generic:()=>Ls,get:()=>un,invite:()=>Kf,keys:()=>Za,passwordReset:()=>Dp,store:()=>Mt,user:()=>Dr,withCache:()=>mr,withCacheWithDynamicTTL:()=>Vy,writethrough:()=>wp});var Ls={};P(Ls,{CacheKey:()=>Ee,TTL:()=>an,bustCache:()=>zn,destroy:()=>Us,get:()=>un,keys:()=>Za,store:()=>Mt,withCache:()=>mr,withCacheWithDynamicTTL:()=>Vy});var ae={};P(ae,{DEFAULT_TENANT_ID:()=>oe,baseGlobalDBName:()=>Is,doInAppContext:()=>Jb,doInAppMigrationContext:()=>Xb,doInAutomationContext:()=>Kb,doInContext:()=>Wd,doInEnvironmentContext:()=>rC,doInFeatureFlagOverrideContext:()=>zd,doInIPContext:()=>Kd,doInIdentityContext:()=>Es,doInLicenseContext:()=>Yb,doInScimContext:()=>nC,doInSelfHostTenantUsingCloud:()=>jb,doInTenant:()=>be,ensureSnippetContext:()=>ky,getAppDB:()=>Yn,getAppId:()=>Se,getAuditLogDBName:()=>Ly,getAuditLogsDB:()=>sC,getAutomationId:()=>qd,getCurrentContext:()=>en,getDevAppDB:()=>aC,getDevAppId:()=>eC,getEnvironmentVariables:()=>iC,getFeatureFlagOverrides:()=>Hd,getFeatureFlags:()=>jd,getGlobalDB:()=>Y,getGlobalDBName:()=>Xr,getIP:()=>Qd,getIdentity:()=>Lt,getLicense:()=>Hb,getPlatformURL:()=>Gd,getProdAppDB:()=>oC,getProdAppId:()=>tC,getScimDBName:()=>Gb,getSelfHostCloudDB:()=>zb,getTableForView:()=>uC,getTenantIDFromAppID:()=>jn,getTenantId:()=>V,identity:()=>hs,isMultiTenant:()=>dr,isScim:()=>ft,isSelfHostUsingCloud:()=>Qa,isTenancyEnabled:()=>qb,isTenantIdSet:()=>Wb,setFeatureFlags:()=>Yd,setTableForView:()=>cC});var hs={};P(hs,{doInAccountContext:()=>pb,doInIdentityContext:()=>Od,doInUserContext:()=>wd,getAccountUserId:()=>hy,getIdentity:()=>Id});function Id(){return Lt()}function Od(t,e){return Es(t,e)}function wd(t,e,r){let n={...t,_id:t._id,type:"user",hostInfo:{ipAddress:e.request.ip,userAgent:e.userAgent.source}};return Od(n,r)}function pb(t,e){let r=hy(t),n=t.tenantId,i={_id:r,type:"user",tenantId:n,account:t};return Od(i,e)}function hy(t){let e;return ko(t)?e=t.budibaseUserId:e=t.accountId,e}var Fa=require("fs");var yy=require("lodash"),Dd=require("crypto"),gs=require("path"),mb=process.env.TOP_LEVEL_PATH||process.env.SERVER_TOP_LEVEL_PATH||(0,gs.resolve)((0,gs.join)(__dirname,"..","..","..")),Ey=!1;!Ey&&ka()&&!Rd()&&(require("dotenv").config({path:(0,gs.join)(mb,".env")}),Ey=!0);function Rd(){return Ty()}function Ty(){return process.env.NODE_ENV==="jest"||process.env.JEST_WORKER_ID!=null&&process.env.JEST_WORKER_ID!=="null"}function ka(){return process.env.NODE_ENV!=="production"}function hb(t){if(t)return parseInt(t)}var Wn={BACKUPS:"backups",APPS:"prod-budi-app-assets",TEMPLATES:"templates",GLOBAL:"global",PLUGINS:"plugins",TEMP:"tmp-file-attachments"},gy=!!parseInt(process.env.SELF_HOSTED||"");function Eb(){return process.env.API_ENCRYPTION_KEY?process.env.API_ENCRYPTION_KEY:process.env.JWT_SECRET}function gb(){return process.env.HTTP_LOGGING===void 0?!0:process.env.HTTP_LOGGING}function yb(){function t(r){function n(a,u){let c=`${u}/${a}`;if((0,Fa.existsSync)(c))return c;let l=`${u}/..`;return l===u?null:n(a,l)}let i=n(r,process.cwd()),s=(0,Fa.readFileSync)(i,"utf-8");return JSON.parse(s)}let e;if(ka()&&!Rd())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:""}}}function Tb(){return ct.SERVICE_TYPE==="worker"}function Ab(){return ct.SERVICE_TYPE==="apps"}function Sb(){return ct.BUDIBASE_ENVIRONMENT==="QA"}function _b(){return process.env.SERVICE?process.env.SERVICE:process.env.APPS_SERVICE?process.env.APPS_SERVICE:process.env.WORKER_SERVICE?process.env.WORKER_SERVICE:"budibase"}var ct={isTest:Rd,isJest:Ty,isDev:ka,isWorker:Tb,isApps:Ab,isQA:Sb,isProd:()=>!ka(),BUDIBASE_ENVIRONMENT:process.env.BUDIBASE_ENVIRONMENT,JS_BCRYPT:process.env.JS_BCRYPT,JWT_SECRET:process.env.JWT_SECRET?(0,Dd.createSecretKey)(process.env.JWT_SECRET,"utf8"):void 0,JWT_SECRET_FALLBACK:process.env.JWT_SECRET_FALLBACK?(0,Dd.createSecretKey)(process.env.JWT_SECRET_FALLBACK,"utf8"):void 0,ENCRYPTION_KEY:process.env.ENCRYPTION_KEY,API_ENCRYPTION_KEY:Eb(),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:gy,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||Wn.BACKUPS,APPS_BUCKET_NAME:process.env.APPS_BUCKET_NAME||Wn.APPS,TEMPLATES_BUCKET_NAME:process.env.TEMPLATES_BUCKET_NAME||Wn.TEMPLATES,GLOBAL_BUCKET_NAME:process.env.GLOBAL_BUCKET_NAME||Wn.GLOBAL,PLUGIN_BUCKET_NAME:process.env.PLUGIN_BUCKET_NAME||Wn.PLUGINS,TEMP_BUCKET_NAME:process.env.TEMP_BUCKET_NAME||Wn.TEMP,USE_COUCH:process.env.USE_COUCH||!0,MOCK_REDIS:process.env.MOCK_REDIS,DEFAULT_LICENSE:process.env.DEFAULT_LICENSE,SERVICE:_b(),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:gb(),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:gy?process.env.ENABLE_SSO_MAINTENANCE_MODE:!1,...yb(),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,ct[t]=e},ROLLING_LOG_MAX_SIZE:process.env.ROLLING_LOG_MAX_SIZE||"10M",DISABLE_SCIM_CALLS:process.env.DISABLE_SCIM_CALLS,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:hb(process.env.BSON_BUFFER_SIZE)};function ys(t){let e=(0,yy.cloneDeep)(ct),r;for(r in t)ct._set(r,t[r]);return()=>{for(let[n,i]of Object.entries(e))ct._set(n,i)}}function Ay(t,e){let r=ys(t),n=e();return n instanceof Promise?n.finally(r):(r(),n)}var Sy=["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(ct))e==="0"&&(ct[t]=0),e==="false"&&(ct[t]=0);var h=ct;var lt=t=>{let e=bd(t),r,n;if(e.auth?.username)r=e.auth.username;else if(h.COUCH_DB_USERNAME)r=h.COUCH_DB_USERNAME;else if(!h.isTest())throw new Error("CouchDB username not set");if(e.auth?.password)n=e.auth.password;else if(h.COUCH_DB_PASSWORD)n=h.COUCH_DB_PASSWORD;else if(!h.isTest())throw new Error("CouchDB password not set");let i=Buffer.from(`${r}:${n}`).toString("base64"),s=h.COUCH_DB_SQL_URL;if(h.isDev()&&!s)s="http://localhost:4006";else if(!s&&e.url){let o=new URL(e.url);s=e.url.replace(o.port,"4984")}return{url:e.url,sqlUrl:bd(s).url,auth:{username:r,password:n},cookie:`Basic ${i}`}},bd=(t=h.COUCH_DB_URL)=>{let e,r,n,i;if(t){/^https?:\/\//i.test(t)||(t=`http://${t}`);let o=t.split("://"),a=o[0],u=o.slice(1).join("://");if(t.includes("@")){let c=u.split("@");i=c[c.length-1];let l=c.slice(0,-1).join("@");if(l.includes(":")){let d=l.split(":");r=d[0],n=d.slice(1).join(":")}else r=l}else i=u;e=`${a}://${i}`}return{url:e,auth:{username:r,password:n}}};var Py=k(require("@budibase/nano"));var _y=k(require("node-fetch"));function Ba(t){return t.replace(/(https?:\/\/)|(\/)+/g,"$1$2")}async function Iy(t,e="GET",r){let{url:n,cookie:i}=lt(),s=`${n}/${t}`;return await Ts({url:s,cookie:i,method:e,body:r})}async function Ts({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,_y.default)(Ba(encodeURI(t)),i)}async function Cd(t,e="GET",r){let n=await Iy(t,e,r);if(n.status<300)return await n.json();throw"Cannot connect to CouchDB instance"}var Zr=k(require("pouchdb"));var Oy,wy=!1,xd=(t={})=>{let{url:e,cookie:r}=lt(),n={prefix:e,fetch:(i,s)=>(s.headers.set("Authorization",r),Zr.default.fetch(i,s))};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)};function $a(t){Oy=xd(t),wy=!0}var Ib=()=>{if(!wy)throw new Error("init has not been called")};function Ze(t,e){Ib();let r=new Oy(t,e),n=r.put;return r.put=async(i,s={})=>(i.createdAt||(i.createdAt=new Date().toISOString()),i.updatedAt=new Date().toISOString(),n(i,s)),r.exists=async()=>!(await r.info()).error,r}async function As(t){if(!(!t||h.isTest()))try{return await t.close()}catch{}}var Dy=require("uuid");function ee(){return(0,Dy.v4)().replace(/-/g,"")}var ce=k(require("dd-trace")),qn=class{constructor(e){this.db=e}get name(){return this.db.name}exists(e){return ce.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 ce.default.trace("db.get",r=>(r.addTags({db_name:this.name,doc_id:e}),this.db.get(e)))}tryGet(e){return ce.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 ce.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 ce.default.trace("db.remove",async n=>{n.addTags({db_name:this.name,doc_id:e,rev:r});let i=typeof e=="object",s=i?e._id:e;r=i?e._rev:r;let o=await this.db.remove(s,r);return n.addTags({ok:o.ok}),o})}bulkRemove(e,r){return ce.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 ce.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 ce.default.trace("db.bulkDocs",r=>(r.addTags({db_name:this.name,num_docs:e.length}),this.db.bulkDocs(e)))}async find(e){return ce.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 ce.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 ce.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 ce.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 ce.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 ce.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 ce.default.trace("db.load",r=>(r.addTags({db_name:this.name,num_args:e.length}),this.db.load(...e)))}createIndex(...e){return ce.default.trace("db.createIndex",r=>(r.addTags({db_name:this.name,num_args:e.length}),this.db.createIndex(...e)))}deleteIndex(...e){return ce.default.trace("db.deleteIndex",r=>(r.addTags({db_name:this.name,num_args:e.length}),this.db.deleteIndex(...e)))}getIndexes(...e){return ce.default.trace("db.getIndexes",r=>(r.addTags({db_name:this.name,num_args:e.length}),this.db.getIndexes(...e)))}sql(e,r){return ce.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 ce.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 ce.default.trace("db.sqlDiskCleanup",e=>(e.addTags({db_name:this.name}),this.db.sqlDiskCleanup()))}};var Fd={};P(Fd,{breakExternalTableId:()=>Nd,breakRowIdField:()=>Mb,buildExternalTableId:()=>xb,convertRowId:()=>Lb,encodeTableId:()=>vb,encodeViewId:()=>Pb,extractDate:()=>Ld,generateRowIdField:()=>Nb,getNativeSql:()=>Qn,isExternalTable:()=>Pd,isExternalTableID:()=>Va,isInternalTableID:()=>Cb,isRowId:()=>Ub,isValidFilter:()=>Wa,isValidISODateString:()=>Ga,isValidISODateStringWithoutTimezone:()=>Ud,isValidTime:()=>Md,sqlLog:()=>Ss,validateManyToMany:()=>kd});var vd=`${R}${R}`,by=/^\[.*]$/g,Ob=encodeURIComponent(" "),wb=/^\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}:\d{2}(?:.\d{3})?Z)?$/,Db=/^\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}:\d{2}(?:.\d{3})?)?$/,Rb=/(\d{4}-\d{2}-\d{2})/,bb=/^(?:\d{2}:)?(?:\d{2}:)(?:\d{2})$/;function Va(t){return t.startsWith("datasource"+R)}function Cb(t){return!Va(t)}function Qn(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}}function Pd(t){return t?.sourceId&&t.sourceId.includes("datasource"+R)&&t?.sourceId!==On||t?.sourceType==="external"?!0:!!(t?._id&&Va(t._id))}function xb(t,e){return`${t}${vd}${encodeURIComponent(e)}`}function vb(t){return Va(t)?encodeURIComponent(t):t}function Pb(t){return encodeURIComponent(t)}function Nd(t){let e=t.split(vd),r=e.shift(),n=e.join(vd);if(n.includes(Ob)&&(n=decodeURIComponent(n)),!r||!n)throw new Error("Unable to get datasource/table name from table ID");return{datasourceId:r,tableName:n}}function Nb(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,"'"))}function Ub(t){return Array.isArray(t)||typeof t=="string"&&t.match(by)!=null}function Lb(t){return Array.isArray(t)?t[0]:typeof t=="string"&&t.match(by)!=null?t.substring(1,t.length-1):t}function Mb(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]}}function Ga(t){let e=t.trim();if(!wb.test(e))return!1;let r=new Date(e);return!isNaN(r.getTime())}function Ud(t){let e=t.trim();if(!Db.test(e))return!1;let r=new Date(e);return!isNaN(r.getTime())}function Ld(t){let e=t.match(Rb);if(e)return e[0]}function Wa(t){return t!=null&&t!==""}function Md(t){return bb.test(t)}function Ss(t,e,r){if(!h.SQL_LOGGING_ENABLE)return;let n=`[SQL] [${t.toUpperCase()}] query="${e}"`;r&&(n+=` values="${r.join(", ")}"`),console.log(n)}function kb(t){return!!t.through&&!!t.fromPrimary&&!!t.from&&!!t.toPrimary&&!!t.to}function kd(t){if(kb(t))return t}var Cy="Database does not exist.";function xy(t){return(0,Py.default)({url:t.url,requestDefaults:{headers:{Authorization:t.cookie}},parseUrl:!1})}var cr=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"}};function Fb(t,e,r){if(!t||!e)throw new Error("Unable to create database without database name or connection");let n=new Kn(t,r,e);return new qn(n)}var Kn=class t{constructor(e,r,n){this.couchInfo=lt();this.name=e,this.pouchOpts=r||{},n&&(this.couchInfo=lt(n),this.instanceNano=xy(this.couchInfo)),t.nano||t.init()}static init(){let e=lt();t.nano=xy(e)}exists(e){return e===void 0?this.dbExists():this.docExists(e)}async dbExists(){return(await Ts({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 cr(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===Cy)return await this.checkAndCreateDb(),await this.performCallWithDBCreation(e);throw new cr(`CouchDB error: ${i.message}`,i)}}async performCall(e){let r=this.getDb(),n=await e(r);try{return await n()}catch(i){throw new cr(`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}),s=u=>n&&u.doc==null||u.value&&"deleted"in u.value&&u.value.deleted?!0:u.error==="not_found",o=i.rows.filter(u=>!s(u)),a=o.length!==i.rows.length;if(!r?.allowMissing&&a){let c=i.rows.filter(l=>s(l)).map(l=>l.key).join(", ");throw new Error(`Unable to get bulk documents: ${c}`)}return o.map(u=>n?u.doc:u.value)}async remove(e,r){return this.performCall(n=>{let i,s;if(bm(e)?(i=e._id,s=e._rev):(i=e,s=r),!i||!s)throw new Error("Unable to remove doc without a valid _id and _rev.");return()=>n.destroy(i,s)})}async bulkRemove(e,r){let n=await this.performCall(o=>()=>o.bulk({docs:e.map(a=>({...a,_deleted:!0}))}));if(r?.silenceErrors)return;let i=!1,s="Unable to bulk remove documents: ";for(let o of n)o.error&&(i=!0,s+=o.error);if(i)throw new cr(s,{name:this.name,status:400})}async post(e,r){return e._id||(e._id=ee()),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===Cy)return{offset:0,total_rows:0,rows:[]};throw n}})}async _sqlQuery(e,r,n){e=Ba(`${this.couchInfo.sqlUrl}/${e}`);let i={url:e,method:r,cookie:this.couchInfo.cookie};return n&&(i.body=n),this.performCall(()=>async()=>{let s=await Ts(i),o=await s.text();if(s.status>300){let a;try{a=JSON.parse(o)}catch{throw console.error(`SQS error: ${o}`),new cr("error while running SQS query, please try again later",{name:"sqs_error",status:s.status})}throw a}return JSON.parse(o)})}async sql(e,r){let i=`/${this.name}/${It}`;return Ss("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,s]=e.split("/");return()=>n.view(i,s,r)})}async destroy(){if(await this.exists(It)){let e=await this.get(It);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 cr(e.message,e)}}async compact(){return this.performCall(e=>()=>e.compact())}async dump(e,r){return Ze(this.name).dump(e,r)}async load(e){return Ze(this.name).load(e)}async createIndex(e){return Ze(this.name).createIndex(e)}async deleteIndex(e){return Ze(this.name).deleteIndex(e)}async getIndexes(){return Ze(this.name).getIndexes()}};function Re(t,e){return new qn(new Kn(t,e))}async function We(t,e,r){let n=Re(t,r);return await e(n)}async function Bd(t){let e="/_all_dbs";return t&&(e+=`?${t}`),await Cd(e)}var $d="No app provided";function lr(t){if(!t)throw $d;return t.startsWith(Je)}function Bb(t){if(!t)throw $d;return t.startsWith(ze)&&!lr(t)}function _s(t){if(!t)throw $d;return lr(t.appId)}function qa(t){if(!t||t.startsWith(Je))return t;let e=t.split(ze);e.shift();let r=e.join(ze);return`${Je}${r}`}var Vd=qa;function qe(t){if(!t||!t.startsWith(Je))return t;let e=t.split(Je);e.shift();let r=e.join(Je);return`${ze}${r}`}function $b(t){let e=t?.split("_")||[];return e.length?e[e.length-1]:null}var Ny=require("async_hooks"),pe=class t{static{this.storage=new Ny.AsyncLocalStorage}static run(e,r){return t.storage.run(e,()=>r())}static get(){return t.storage.getStore()}};var Uy=null;function Xr(t){return t||(t=V()),Is(t)}function Ly(t){return t||(t=V()),t===oe?de.AUDIT_LOGS.name:`${t}${R}${de.AUDIT_LOGS.name}`}function Gb(t){return t||(t=V()),t===oe?de.SCIM_LOGS.name:`${t}${R}${de.SCIM_LOGS.name}`}function Is(t){return!t||t===oe?de.GLOBAL.name:`${t}${R}${de.GLOBAL.name}`}function Gd(){return h.PLATFORM_URL}function dr(){return!!h.MULTI_TENANCY}function Wb(){return!!pe.get()?.tenantId}function qb(){return h.MULTI_TENANCY}function jn(t){if(!t)return;if(!dr())return oe;let e=t.split(R),r=e[1]==="dev";if(!(r&&e.length===3||!r&&e.length===2))return r?e[2]:e[1]}function Qb(t){let e;try{e=pe.get()}catch{e={}}return e={...e,...t},e}async function dt(t,e){Zb();let r=Qb(t);return pe.run(r,e)}async function Kb(t){return await ky(),await dt({tenantId:jn(t.appId),appId:t.appId,automationId:t.automationId},t.task)}async function Wd(t,e){let r=jn(t);return dt({tenantId:r,appId:t},e)}async function be(t,e){return h.MULTI_TENANCY||(t=t||oe),dt(t?{tenantId:t}:{},e)}async function jb(t,e){return dt({tenantId:t,isSelfHostUsingCloud:!0},e)}async function Yb(t,e){return dt({license:t},e)}function Hb(){return pe.get()?.license}function Qa(){return!!pe.get()?.isSelfHostUsingCloud}function zb(){let t=pe.get();if(!t||!t.isSelfHostUsingCloud)throw new Error("Self-host cloud DB not found");return Re(de.SELF_HOST_CLOUD.name)}async function Jb(t,e){return My(t,e)}async function My(t,e,r){if(!t)throw new Error("appId is required");let n=jn(t),i={appId:t,...r};return n&&(i.tenantId=n),dt(i,e)}async function Es(t,e){if(!t)throw new Error("identity is required");let r={identity:t};return t.tenantId&&(r.tenantId=t.tenantId),dt(r,e)}function Zb(){if(pe.get()?.isMigrating)throw new Error("The context cannot be changed, a migration is currently running")}async function Xb(t,e){return My(t,e,{isMigrating:!0})}function Lt(){try{return pe.get()?.identity}catch{}}function V(){if(!dr())return oe;let e=pe.get()?.tenantId;if(!e)throw new Error("Tenant id not found");return e}function qd(){return pe.get()?.automationId}function Se(){let e=pe.get()?.appId;return!e&&h.isTest()&&Uy?Uy:e}function Qd(){return pe.get()?.ip}var eC=()=>{let t=Se();if(!t)throw new Error("Could not get appId");return Vd(t)},tC=()=>{let t=Se();if(!t)throw new Error("Could not get appId");return qe(t)};function rC(t,e){if(!t)throw new Error("Must supply environment variables.");return dt({environmentVariables:t},e)}function nC(t){return dt({isScim:!0},t)}function Kd(t,e){return dt({ip:t},e)}async function ky(){let t=en();if(!t||t.snippets)return;let e,r=Yn();r&&(e=(await r.tryGet("app_metadata"))?.snippets),t.snippets=e||[]}function iC(){let t=pe.get();return t.environmentVariables?t.environmentVariables:null}function Y(){let t=pe.get();if(!t||h.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 Re(Is(t?.tenantId))}function sC(){if(!V())throw new Error("No tenant ID found - cannot open audit log DB");return Re(Ly())}function Yn(t){let e=Se();if(!e)throw new Error("Unable to retrieve app DB - no app ID.");if(Qa())throw new Error("App DB not found - self-host users using cloud don't have app DBs");return Re(e,t)}function oC(t){let e=Se();if(!e)throw new Error("Unable to retrieve prod DB - no app ID.");return Re(qe(e),t)}function aC(t){let e=Se();if(!e)throw new Error("Unable to retrieve dev DB - no app ID.");return Re(qa(e),t)}function ft(){return!!pe.get()?.isScim}function en(){try{return pe.get()}catch{return}}function jd(t){let e=en();if(e)return e.featureFlagCache?.[t]}function Yd(t,e){let r=en();r&&(r.featureFlagCache??={},r.featureFlagCache[t]=e)}function Hd(){return en()?.featureFlagOverrides||{}}async function zd(t,e){return await dt({featureFlagOverrides:t},e)}function uC(t){let e=en();if(e)return e.viewToTableCache?.[t]}function cC(t,e){let r=en();r&&(r.viewToTableCache??={},r.viewToTableCache[t]=e)}var pr={};P(pr,{getAppClient:()=>Ja,getCacheClient:()=>rf,getDocWritethroughClient:()=>mC,getInviteClient:()=>nn,getLockClient:()=>sf,getPasswordResetClient:()=>Ns,getSessionClient:()=>fr,getSocketClient:()=>pC,getUserClient:()=>Ps,getWritethroughClient:()=>nf,init:()=>pt,shutdown:()=>$y});var za=k(require("ioredis"));var Ya={};P(Ya,{Databases:()=>Jd,SEPARATOR:()=>Hn,SelectableDatabase:()=>Ka,getRedisClusterOptions:()=>Zd,getRedisConnectionDetails:()=>ja,getRedisOptions:()=>tn,removeDbPrefix:()=>Xd});var Hn="-",Jd=(_=>(_.PW_RESETS="pwReset",_.VERIFICATIONS="verification",_.INVITATIONS="invitation",_.DEV_LOCKS="devLocks",_.DEBOUNCE="debounce",_.SESSIONS="session",_.USER_CACHE="users",_.FLAGS="flags",_.APP_METADATA="appMetadata",_.QUERY_VARS="queryVars",_.LICENSES="license",_.GENERIC_CACHE="data_cache",_.WRITE_THROUGH="writeThrough",_.LOCKS="locks",_.SOCKET_IO="socket_io",_.BPM_EVENTS="bpmEvents",_.DOC_WRITE_THROUGH="docWriteThrough",_.RECAPTCHA_SESSION="recaptchaSession",_))(Jd||{}),Ka=(g=>(g[g.DEFAULT=0]="DEFAULT",g[g.SOCKET_IO=1]="SOCKET_IO",g[g.RATE_LIMITING=2]="RATE_LIMITING",g[g.UNUSED_2=3]="UNUSED_2",g[g.UNUSED_3=4]="UNUSED_3",g[g.UNUSED_4=5]="UNUSED_4",g[g.UNUSED_5=6]="UNUSED_5",g[g.UNUSED_6=7]="UNUSED_6",g[g.UNUSED_7=8]="UNUSED_7",g[g.UNUSED_8=9]="UNUSED_8",g[g.UNUSED_9=10]="UNUSED_9",g[g.UNUSED_10=11]="UNUSED_10",g[g.UNUSED_11=12]="UNUSED_11",g[g.UNUSED_12=13]="UNUSED_12",g[g.UNUSED_13=14]="UNUSED_13",g[g.UNUSED_14=15]="UNUSED_14",g))(Ka||{});function ja(){let t=h.REDIS_PASSWORD,e=h.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}}function Zd(){return{slotsRefreshTimeout:2e3,dnsLookup:(t,e)=>e(null,t),redisOptions:{...tn(),tls:{}}}}function tn(){let{host:t,password:e,port:r}=ja();return{connectTimeout:3e4,port:r,host:t,password:e}}function Xd(t){let e=t.split(Hn);return e.length>=2?(e.shift(),e.join(Hn)):e[0]}var Ha=require("dd-trace"),By=require("lodash"),Fy;if(h.MOCK_REDIS)try{Fy=require("ioredis-mock")}catch{console.log("Mock redis unavailable")}async function lC(t=0){return await Ha.tracer.trace("Redis.init",async e=>{if(h.MOCK_REDIS)return e.addTags({mock:!0}),new Fy(tn());let r;if(h.REDIS_CLUSTERED){e.addTags({clustered:!0});let{host:n,port:i}=ja();r=new za.Cluster([{host:n,port:i}],Zd())}else r=new za.default(tn());return new Promise((n,i)=>{r.on("error",s=>{e.addTags({error:!0}),console.error(`failed to connect to redis (db: ${t})`,s),i(s)}),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)})})})}function dC(t,e){return new Promise((r,n)=>{let i=new Set;t.on("data",s=>s.forEach(o=>i.add(o))),t.on("error",s=>n(s)),t.on("end",async()=>{try{let s=Array.from(i).map(async o=>{let a=await e.get(o);return a&&(a=JSON.parse(a)),{key:Xd(o),value:a}});r(await Promise.all(s))}catch(s){n(s)}})})}function fC(t){return t.isCluster}var ef=class t{constructor(e,r){this.client=e,this.db=r}static async init(e,r=0){return await Ha.tracer.trace("RedisWrapper.init",async n=>{let i=await lC(r);return r&&!h.isTest()&&(n.addTags({db:e}),i.select(r)),new t(i,e)})}trace(e,r){return Ha.tracer.trace(e,async n=>(n.addTags({db:this.db}),await r(n)))}prefixed(e){return e.includes(this.db)?e:`${this.db}${Hn}${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}${Hn}${e}`;let n;fC(this.client)?n=this.client.nodes("master")[0].scanStream({match:e+"*",count:100}):n=this.client.scanStream({match:e+"*",count:100});let i=await dC(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,By.zip)(e,n).reduce((i,[s,o])=>{if(s===void 0||o===void 0)throw new Error(`Keys and response length mismatch: ${e.length} vs ${n.length}`);try{i[s]=o?JSON.parse(o):null}catch{i[s]=o}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((o,[a,u])=>(o[this.prefixed(a)]=typeof u=="object"?JSON.stringify(u):u,o),{}),s=this.client.pipeline();if(s.mset(i),r!==null)for(let o of Object.keys(i))s.expire(o,r);await s.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
|
+
`+(o!==s?`result of cast: ${o}`:""))}return i}_cast(e,r){let n=e===void 0?e:this.transforms.reduce((i,s)=>s.call(this,i,e,this),e);return n===void 0&&(n=this.getDefault()),n}_validate(e,r={},n){let{sync:i,path:s,from:o=[],originalValue:a=e,strict:u=this.spec.strict,abortEarly:c=this.spec.abortEarly}=r,l=e;u||(l=this._cast(l,Ke({assert:!1},r)));let d={value:l,path:s,options:r,originalValue:a,schema:this,label:this.spec.label,sync:i,from:o},f=[];this._typeError&&f.push(this._typeError),this._whitelistError&&f.push(this._whitelistError),this._blacklistError&&f.push(this._blacklistError),(0,Th.default)({args:d,value:l,path:s,sync:i,tests:f,endEarly:c},m=>{if(m)return void n(m,l);(0,Th.default)({tests:this.tests,args:d,path:s,sync:i,value:l,endEarly:c},n)})}validate(e,r,n){let i=this.resolve(Ke({},r,{value:e}));return typeof n=="function"?i._validate(e,r,n):new Promise((s,o)=>i._validate(e,r,(a,u)=>{a?o(a):s(u)}))}validateSync(e,r){let n=this.resolve(Ke({},r,{value:e})),i;return n._validate(e,Ke({},r,{sync:!0}),(s,o)=>{if(s)throw s;i=o}),i}isValid(e,r){return this.validate(e,r).then(()=>!0,n=>{if(Ah.default.isError(n))return!1;throw n})}isValidSync(e,r){try{return this.validateSync(e,r),!0}catch(n){if(Ah.default.isError(n))return!1;throw n}}_getDefault(){let e=this.spec.default;return e==null?e:typeof e=="function"?e.call(this):(0,yh.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=Dn.mixed.defined){return this.test({message:e,name:"defined",exclusive:!0,test(r){return r!==void 0}})}required(e=Dn.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=Dn.mixed.default),typeof r.test!="function")throw new TypeError("`test` is a required parameters");let n=this.clone(),i=(0,Zo.default)(r),s=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(o=>!(o.OPTIONS.name===r.name&&(s||o.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,oO.default)(e).map(s=>new iO.default(s));return i.forEach(s=>{s.isSibling&&n.deps.push(s.key)}),n.conditions.push(new nO.default(i,r)),n}typeError(e){var r=this.clone();return r._typeError=(0,Zo.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=Dn.mixed.oneOf){var n=this.clone();return e.forEach(i=>{n._whitelist.add(i),n._blacklist.delete(i)}),n._whitelistError=(0,Zo.default)({message:r,name:"oneOf",test(i){if(i===void 0)return!0;let s=this.schema._whitelist;return s.has(i,this.resolve)?!0:this.createError({params:{values:s.toArray().join(", ")}})}}),n}notOneOf(e,r=Dn.mixed.notOneOf){var n=this.clone();return e.forEach(i=>{n._blacklist.add(i),n._whitelist.delete(i)}),n._blacklistError=(0,Zo.default)({message:r,name:"notOneOf",test(i){let s=this.schema._blacklist;return s.has(i,this.resolve)?this.createError({params:{values:s.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(s=>({name:s.OPTIONS.name,params:s.OPTIONS.params})).filter((s,o,a)=>a.findIndex(u=>u.name===s.name)===o)}}};Xo.default=st;st.prototype.__isYupSchema__=!0;for(let t of["validate","validateSync"])st.prototype[`${t}At`]=function(e,r,n={}){let{parent:i,parentPath:s,schema:o}=(0,sO.getIn)(this,e,r,n.context);return o[t](i&&i[s],Ke({},n,{parent:i,path:e}))};for(let t of["equals","is"])st.prototype[t]=st.prototype.oneOf;for(let t of["not","nope"])st.prototype[t]=st.prototype.notOneOf;st.prototype.optional=st.prototype.notRequired});var Oh=V(Fi=>{"use strict";Object.defineProperty(Fi,"__esModule",{value:!0});Fi.create=Ih;Fi.default=void 0;var aO=uO(xt());function uO(t){return t&&t.__esModule?t:{default:t}}var Hc=aO.default,cO=Hc;Fi.default=cO;function Ih(){return new Hc}Ih.prototype=Hc.prototype});var Rn=V(ea=>{"use strict";Object.defineProperty(ea,"__esModule",{value:!0});ea.default=void 0;var lO=t=>t==null;ea.default=lO});var Ch=V($i=>{"use strict";Object.defineProperty($i,"__esModule",{value:!0});$i.create=bh;$i.default=void 0;var dO=Rh(xt()),wh=bt(),Dh=Rh(Rn());function Rh(t){return t&&t.__esModule?t:{default:t}}function bh(){return new Bi}var Bi=class extends dO.default{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=wh.boolean.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"true"},test(r){return(0,Dh.default)(r)||r===!0}})}isFalse(e=wh.boolean.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"false"},test(r){return(0,Dh.default)(r)||r===!1}})}};$i.default=Bi;bh.prototype=Bi.prototype});var Ph=V(Vi=>{"use strict";Object.defineProperty(Vi,"__esModule",{value:!0});Vi.create=vh;Vi.default=void 0;var St=bt(),vt=xh(Rn()),fO=xh(xt());function xh(t){return t&&t.__esModule?t:{default:t}}var pO=/^((([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,mO=/^((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,hO=/^(?:[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,EO=t=>(0,vt.default)(t)||t===t.trim(),gO={}.toString();function vh(){return new Wi}var Wi=class extends fO.default{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===gO?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=St.string.length){return this.test({message:r,name:"length",exclusive:!0,params:{length:e},test(n){return(0,vt.default)(n)||n.length===this.resolve(e)}})}min(e,r=St.string.min){return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(n){return(0,vt.default)(n)||n.length>=this.resolve(e)}})}max(e,r=St.string.max){return this.test({name:"max",exclusive:!0,message:r,params:{max:e},test(n){return(0,vt.default)(n)||n.length<=this.resolve(e)}})}matches(e,r){let n=!1,i,s;return r&&(typeof r=="object"?{excludeEmptyString:n=!1,message:i,name:s}=r:i=r),this.test({name:s||"matches",message:i||St.string.matches,params:{regex:e},test:o=>(0,vt.default)(o)||o===""&&n||o.search(e)!==-1})}email(e=St.string.email){return this.matches(pO,{name:"email",message:e,excludeEmptyString:!0})}url(e=St.string.url){return this.matches(mO,{name:"url",message:e,excludeEmptyString:!0})}uuid(e=St.string.uuid){return this.matches(hO,{name:"uuid",message:e,excludeEmptyString:!1})}ensure(){return this.default("").transform(e=>e===null?"":e)}trim(e=St.string.trim){return this.transform(r=>r!=null?r.trim():r).test({message:e,name:"trim",test:EO})}lowercase(e=St.string.lowercase){return this.transform(r=>(0,vt.default)(r)?r:r.toLowerCase()).test({message:e,name:"string_case",exclusive:!0,test:r=>(0,vt.default)(r)||r===r.toLowerCase()})}uppercase(e=St.string.uppercase){return this.transform(r=>(0,vt.default)(r)?r:r.toUpperCase()).test({message:e,name:"string_case",exclusive:!0,test:r=>(0,vt.default)(r)||r===r.toUpperCase()})}};Vi.default=Wi;vh.prototype=Wi.prototype});var Lh=V(qi=>{"use strict";Object.defineProperty(qi,"__esModule",{value:!0});qi.create=Uh;qi.default=void 0;var Mr=bt(),Fr=Nh(Rn()),yO=Nh(xt());function Nh(t){return t&&t.__esModule?t:{default:t}}var TO=t=>t!=+t;function Uh(){return new Gi}var Gi=class extends yO.default{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"&&!TO(e)}min(e,r=Mr.number.min){return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(n){return(0,Fr.default)(n)||n>=this.resolve(e)}})}max(e,r=Mr.number.max){return this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(n){return(0,Fr.default)(n)||n<=this.resolve(e)}})}lessThan(e,r=Mr.number.lessThan){return this.test({message:r,name:"max",exclusive:!0,params:{less:e},test(n){return(0,Fr.default)(n)||n<this.resolve(e)}})}moreThan(e,r=Mr.number.moreThan){return this.test({message:r,name:"min",exclusive:!0,params:{more:e},test(n){return(0,Fr.default)(n)||n>this.resolve(e)}})}positive(e=Mr.number.positive){return this.moreThan(0,e)}negative(e=Mr.number.negative){return this.lessThan(0,e)}integer(e=Mr.number.integer){return this.test({name:"integer",message:e,test:r=>(0,Fr.default)(r)||Number.isInteger(r)})}truncate(){return this.transform(e=>(0,Fr.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,Fr.default)(i)?i:Math[e](i))}};qi.default=Gi;Uh.prototype=Gi.prototype});var kh=V(zc=>{"use strict";Object.defineProperty(zc,"__esModule",{value:!0});zc.default=AO;var SO=/^(\d{4}|[+\-]\d{6})(?:-?(\d{2})(?:-?(\d{2}))?)?(?:[ T]?(\d{2}):?(\d{2})(?::?(\d{2})(?:[,\.](\d{1,}))?)?(?:(Z)|([+\-])(\d{2})(?::?(\d{2}))?)?)?$/;function AO(t){var e=[1,4,5,6,7,10,11],r=0,n,i;if(i=SO.exec(t)){for(var s=0,o;o=e[s];++s)i[o]=+i[o]||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}});var Bh=V(Qi=>{"use strict";Object.defineProperty(Qi,"__esModule",{value:!0});Qi.create=Zc;Qi.default=void 0;var _O=ta(kh()),Mh=bt(),Fh=ta(Rn()),IO=ta(kr()),OO=ta(xt());function ta(t){return t&&t.__esModule?t:{default:t}}var Jc=new Date(""),wO=t=>Object.prototype.toString.call(t)==="[object Date]";function Zc(){return new bn}var bn=class extends OO.default{constructor(){super({type:"date"}),this.withMutation(()=>{this.transform(function(e){return this.isType(e)?e:(e=(0,_O.default)(e),isNaN(e)?Jc:new Date(e))})})}_typeCheck(e){return wO(e)&&!isNaN(e.getTime())}prepareParam(e,r){let n;if(IO.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=Mh.date.min){let n=this.prepareParam(e,"min");return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(i){return(0,Fh.default)(i)||i>=this.resolve(n)}})}max(e,r=Mh.date.max){var n=this.prepareParam(e,"max");return this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(i){return(0,Fh.default)(i)||i<=this.resolve(n)}})}};Qi.default=bn;bn.INVALID_DATE=Jc;Zc.prototype=bn.prototype;Zc.INVALID_DATE=Jc});var Wh=V((Fk,Xc)=>{"use strict";Xc.exports=function(t){return $h(DO(t),t)};Xc.exports.array=$h;function $h(t,e){var r=t.length,n=new Array(r),i={},s=r,o=RO(e),a=bO(t);for(e.forEach(function(c){if(!a.has(c[0])||!a.has(c[1]))throw new Error("Unknown node. There is an unknown node in the supplied edges.")});s--;)i[s]||u(t[s],s,new Set);return n;function u(c,l,d){if(d.has(c)){var f;try{f=", node was:"+JSON.stringify(c)}catch{f=""}throw new Error("Cyclic dependency"+f)}if(!a.has(c))throw new Error("Found unknown node. Make sure to provided all involved nodes. Unknown node: "+JSON.stringify(c));if(!i[l]){i[l]=!0;var m=o.get(c)||new Set;if(m=Array.from(m),l=m.length){d.add(c);do{var p=m[--l];u(p,a.get(p),d)}while(l);d.delete(c)}n[--r]=c}}}function DO(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)}function RO(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}function bO(t){for(var e=new Map,r=0,n=t.length;r<n;r++)e.set(t[r],r);return e}});var Vh=V(el=>{"use strict";Object.defineProperty(el,"__esModule",{value:!0});el.default=UO;var CO=ra(require("lodash/has")),xO=ra(Wh()),vO=Ui(),PO=ra(kr()),NO=ra(wn());function ra(t){return t&&t.__esModule?t:{default:t}}function UO(t,e=[]){let r=[],n=[];function i(s,o){var a=(0,vO.split)(s)[0];~n.indexOf(a)||n.push(a),~e.indexOf(`${o}-${a}`)||r.push([o,a])}for(let s in t)if((0,CO.default)(t,s)){let o=t[s];~n.indexOf(s)||n.push(s),PO.default.isRef(o)&&o.isSibling?i(o.path,s):(0,NO.default)(o)&&"deps"in o&&o.deps.forEach(a=>i(a,s))}return xO.default.array(n,r).reverse()}});var qh=V(tl=>{"use strict";Object.defineProperty(tl,"__esModule",{value:!0});tl.default=LO;function Gh(t,e){let r=1/0;return t.some((n,i)=>{var s;if(((s=e.path)==null?void 0:s.indexOf(n))!==-1)return r=i,!0}),r}function LO(t){return(e,r)=>Gh(t,e)-Gh(t,r)}});var Jh=V(ji=>{"use strict";Object.defineProperty(ji,"__esModule",{value:!0});ji.create=zh;ji.default=void 0;var Qh=At(require("lodash/has")),Kh=At(require("lodash/snakeCase")),kO=At(require("lodash/camelCase")),MO=At(require("lodash/mapKeys")),FO=At(require("lodash/mapValues")),BO=Ui(),jh=bt(),$O=At(Vh()),Hh=At(qh()),WO=At(jo()),VO=At(Ur()),rl=At(xt());function At(t){return t&&t.__esModule?t:{default:t}}function Cn(){return Cn=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},Cn.apply(this,arguments)}var Yh=t=>Object.prototype.toString.call(t)==="[object Object]";function GO(t,e){let r=Object.keys(t.fields);return Object.keys(e).filter(n=>r.indexOf(n)===-1)}var qO=(0,Hh.default)([]),Ki=class extends rl.default{constructor(e){super({type:"object"}),this.fields=Object.create(null),this._sortErrors=qO,this._nodes=[],this._excludedEdges=[],this.withMutation(()=>{this.transform(function(n){if(typeof n=="string")try{n=JSON.parse(n)}catch{n=null}return this.isType(n)?n:null}),e&&this.shape(e)})}_typeCheck(e){return Yh(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 s=this.fields,o=(n=r.stripUnknown)!=null?n:this.spec.noUnknown,a=this._nodes.concat(Object.keys(i).filter(d=>this._nodes.indexOf(d)===-1)),u={},c=Cn({},r,{parent:u,__validating:r.__validating||!1}),l=!1;for(let d of a){let f=s[d],m=(0,Qh.default)(i,d);if(f){let p,E=i[d];c.path=(r.path?`${r.path}.`:"")+d,f=f.resolve({value:E,context:r.context,parent:u});let g="spec"in f?f.spec:void 0,T=g?.strict;if(g?.strip){l=l||d in i;continue}p=!r.__validating||!T?f.cast(i[d],c):i[d],p!==void 0&&(u[d]=p)}else m&&!o&&(u[d]=i[d]);u[d]!==i[d]&&(l=!0)}return l?u:i}_validate(e,r={},n){let i=[],{sync:s,from:o=[],originalValue:a=e,abortEarly:u=this.spec.abortEarly,recursive:c=this.spec.recursive}=r;o=[{schema:this,value:a},...o],r.__validating=!0,r.originalValue=a,r.from=o,super._validate(e,r,(l,d)=>{if(l){if(!VO.default.isError(l)||u)return void n(l,d);i.push(l)}if(!c||!Yh(d)){n(i[0]||null,d);return}a=a||d;let f=this._nodes.map(m=>(p,E)=>{let g=m.indexOf(".")===-1?(r.path?`${r.path}.`:"")+m:`${r.path||""}["${m}"]`,T=this.fields[m];if(T&&"validate"in T){T.validate(d[m],Cn({},r,{path:g,from:o,strict:!0,parent:d,originalValue:a[m]}),E);return}E(null)});(0,WO.default)({sync:s,tests:f,value:d,errors:i,endEarly:u,sort:this._sortErrors,path:r.path},n)})}clone(e){let r=super.clone(e);return r.fields=Cn({},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,s]of Object.entries(this.fields)){let o=n[i];o===void 0?n[i]=s:o instanceof rl.default&&s instanceof rl.default&&(n[i]=s.concat(o))}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,Hh.default)(Object.keys(i)),r.length){Array.isArray(r[0])||(r=[r]);let s=r.map(([o,a])=>`${o}-${a}`);n._excludedEdges=n._excludedEdges.concat(s)}return n._nodes=(0,$O.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,BO.getter)(e,!0);return this.transform(s=>{if(s==null)return s;let o=s;return(0,Qh.default)(s,e)&&(o=Cn({},s),n||delete o[e],o[r]=i(s)),o})}noUnknown(e=!0,r=jh.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 s=GO(this.schema,i);return!e||s.length===0||this.createError({params:{unknown:s.join(", ")}})}});return n.spec.noUnknown=e,n}unknown(e=!0,r=jh.object.noUnknown){return this.noUnknown(!e,r)}transformKeys(e){return this.transform(r=>r&&(0,MO.default)(r,(n,i)=>e(i)))}camelCase(){return this.transformKeys(kO.default)}snakeCase(){return this.transformKeys(Kh.default)}constantCase(){return this.transformKeys(e=>(0,Kh.default)(e).toUpperCase())}describe(){let e=super.describe();return e.fields=(0,FO.default)(this.fields,r=>r.describe()),e}};ji.default=Ki;function zh(t){return new Ki(t)}zh.prototype=Ki.prototype});var Xh=V(Hi=>{"use strict";Object.defineProperty(Hi,"__esModule",{value:!0});Hi.create=Zh;Hi.default=void 0;var nl=xn(Rn()),QO=xn(wn()),KO=xn(Ni()),il=bt(),jO=xn(jo()),YO=xn(Ur()),HO=xn(xt());function xn(t){return t&&t.__esModule?t:{default:t}}function na(){return na=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},na.apply(this,arguments)}function Zh(t){return new Yi(t)}var Yi=class extends HO.default{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,s=n.map((o,a)=>{let u=this.innerType.cast(o,na({},r,{path:`${r.path||""}[${a}]`}));return u!==o&&(i=!0),u});return i?s:n}_validate(e,r={},n){var i,s;let o=[],a=r.sync,u=r.path,c=this.innerType,l=(i=r.abortEarly)!=null?i:this.spec.abortEarly,d=(s=r.recursive)!=null?s:this.spec.recursive,f=r.originalValue!=null?r.originalValue:e;super._validate(e,r,(m,p)=>{if(m){if(!YO.default.isError(m)||l)return void n(m,p);o.push(m)}if(!d||!c||!this._typeCheck(p)){n(o[0]||null,p);return}f=f||p;let E=new Array(p.length);for(let g=0;g<p.length;g++){let T=p[g],_=`${r.path||""}[${g}]`,A=na({},r,{path:_,strict:!0,parent:p,index:g,originalValue:f[g]});E[g]=(w,y)=>c.validate(T,A,y)}(0,jO.default)({sync:a,path:u,value:p,errors:o,endEarly:l,tests:E},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,QO.default)(e))throw new TypeError("`array.of()` sub-schema must be a valid yup schema not: "+(0,KO.default)(e));return r.innerType=e,r}length(e,r=il.array.length){return this.test({message:r,name:"length",exclusive:!0,params:{length:e},test(n){return(0,nl.default)(n)||n.length===this.resolve(e)}})}min(e,r){return r=r||il.array.min,this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(n){return(0,nl.default)(n)||n.length>=this.resolve(e)}})}max(e,r){return r=r||il.array.max,this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(n){return(0,nl.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,s)=>!e(n,i,s):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)}};Hi.default=Yi;Zh.prototype=Yi.prototype});var eE=V(zi=>{"use strict";Object.defineProperty(zi,"__esModule",{value:!0});zi.create=ZO;zi.default=void 0;var zO=JO(wn());function JO(t){return t&&t.__esModule?t:{default:t}}function ZO(t){return new ia(t)}var ia=class{constructor(e){this.type="lazy",this.__isYupSchema__=!0,this._resolve=(r,n={})=>{let i=this.builder(r,n);if(!(0,zO.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)}},XO=ia;zi.default=XO});var tE=V(sl=>{"use strict";Object.defineProperty(sl,"__esModule",{value:!0});sl.default=rw;var ew=tw(bt());function tw(t){return t&&t.__esModule?t:{default:t}}function rw(t){Object.keys(t).forEach(e=>{Object.keys(t[e]).forEach(r=>{ew.default[e][r]=t[e][r]})})}});var al=V(ee=>{"use strict";Object.defineProperty(ee,"__esModule",{value:!0});ee.addMethod=cw;Object.defineProperty(ee,"MixedSchema",{enumerable:!0,get:function(){return rE.default}});Object.defineProperty(ee,"mixed",{enumerable:!0,get:function(){return rE.create}});Object.defineProperty(ee,"BooleanSchema",{enumerable:!0,get:function(){return ol.default}});Object.defineProperty(ee,"bool",{enumerable:!0,get:function(){return ol.create}});Object.defineProperty(ee,"boolean",{enumerable:!0,get:function(){return ol.create}});Object.defineProperty(ee,"StringSchema",{enumerable:!0,get:function(){return nE.default}});Object.defineProperty(ee,"string",{enumerable:!0,get:function(){return nE.create}});Object.defineProperty(ee,"NumberSchema",{enumerable:!0,get:function(){return iE.default}});Object.defineProperty(ee,"number",{enumerable:!0,get:function(){return iE.create}});Object.defineProperty(ee,"DateSchema",{enumerable:!0,get:function(){return sE.default}});Object.defineProperty(ee,"date",{enumerable:!0,get:function(){return sE.create}});Object.defineProperty(ee,"ObjectSchema",{enumerable:!0,get:function(){return oE.default}});Object.defineProperty(ee,"object",{enumerable:!0,get:function(){return oE.create}});Object.defineProperty(ee,"ArraySchema",{enumerable:!0,get:function(){return aE.default}});Object.defineProperty(ee,"array",{enumerable:!0,get:function(){return aE.create}});Object.defineProperty(ee,"ref",{enumerable:!0,get:function(){return nw.create}});Object.defineProperty(ee,"lazy",{enumerable:!0,get:function(){return iw.create}});Object.defineProperty(ee,"ValidationError",{enumerable:!0,get:function(){return sw.default}});Object.defineProperty(ee,"reach",{enumerable:!0,get:function(){return ow.default}});Object.defineProperty(ee,"isSchema",{enumerable:!0,get:function(){return uE.default}});Object.defineProperty(ee,"setLocale",{enumerable:!0,get:function(){return aw.default}});Object.defineProperty(ee,"BaseSchema",{enumerable:!0,get:function(){return uw.default}});var rE=Br(Oh()),ol=Br(Ch()),nE=Br(Ph()),iE=Br(Lh()),sE=Br(Bh()),oE=Br(Jh()),aE=Br(Xh()),nw=kr(),iw=eE(),sw=Ji(Ur()),ow=Ji(jc()),uE=Ji(wn()),aw=Ji(tE()),uw=Ji(xt());function Ji(t){return t&&t.__esModule?t:{default:t}}function cE(){if(typeof WeakMap!="function")return null;var t=new WeakMap;return cE=function(){return t},t}function Br(t){if(t&&t.__esModule)return t;if(t===null||typeof t!="object"&&typeof t!="function")return{default:t};var e=cE();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 s=n?Object.getOwnPropertyDescriptor(t,i):null;s&&(s.get||s.set)?Object.defineProperty(r,i,s):r[i]=t[i]}return r.default=t,e&&e.set(t,r),r}function cw(t,e,r){if(!t||!(0,uE.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}});var lE=V(cl=>{"use strict";Object.defineProperty(cl,"__esModule",{value:!0});var ul=ll();cl.default=()=>{(0,ul.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,ul.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,ul.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 ll=V(Te=>{"use strict";var lw=Te&&Te.__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]}),dw=Te&&Te.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),fw=Te&&Te.__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)&&lw(e,t,r);return dw(e,t),e},pw=Te&&Te.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Te,"__esModule",{value:!0});Te.validateOptions=Te.registerOptionPreset=Te.getOptionPresets=Te.getOptionPreset=void 0;var D=fw(al());al();var Zi=nt(),mw=pw(lE());it();var $r={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}}},dE=D.object({presetId:D.string().required(),useSeconds:D.boolean().required(),useYears:D.boolean().required(),useAliases:D.boolean(),useBlankDay:D.boolean().required(),allowOnlyOneBlankDayField:D.boolean().required(),mustHaveBlankDayField:D.boolean(),useLastDayOfMonth:D.boolean(),useLastDayOfWeek:D.boolean(),useNearestWeekday:D.boolean(),useNthWeekdayOfMonth:D.boolean(),seconds:D.object({minValue:D.number().min(0).required(),maxValue:D.number().min(0).required(),lowerLimit:D.number().min(0),upperLimit:D.number().min(0)}).required(),minutes:D.object({minValue:D.number().min(0).required(),maxValue:D.number().min(0).required(),lowerLimit:D.number().min(0),upperLimit:D.number().min(0)}).required(),hours:D.object({minValue:D.number().min(0).required(),maxValue:D.number().min(0).required(),lowerLimit:D.number().min(0),upperLimit:D.number().min(0)}).required(),daysOfMonth:D.object({minValue:D.number().min(0).required(),maxValue:D.number().min(0).required(),lowerLimit:D.number().min(0),upperLimit:D.number().min(0)}).required(),months:D.object({minValue:D.number().min(0).required(),maxValue:D.number().min(0).required(),lowerLimit:D.number().min(0),upperLimit:D.number().min(0)}).required(),daysOfWeek:D.object({minValue:D.number().min(0).required(),maxValue:D.number().min(0).required(),lowerLimit:D.number().min(0),upperLimit:D.number().min(0)}).required(),years:D.object({minValue:D.number().min(0).required(),maxValue:D.number().min(0).required(),lowerLimit:D.number().min(0),upperLimit:D.number().min(0)}).required()}).required(),hw=t=>$r[t]?(0,Zi.valid)($r[t]):(0,Zi.err)(`Option preset '${t}' not found.`);Te.getOptionPreset=hw;var Ew=()=>$r;Te.getOptionPresets=Ew;var gw=(t,e)=>{$r[t]=dE.validateSync(e,{strict:!1,abortEarly:!1,stripUnknown:!0,recursive:!0})};Te.registerOptionPreset=gw;var yw=t=>{var e,r,n,i,s,o,a,u,c,l,d,f,m,p,E,g,T,_,A,w;try{(0,mw.default)();let y;if(t.preset)if(typeof t.preset=="string"){if(!$r[t.preset])return(0,Zi.err)([`Option preset ${t.preset} does not exist.`]);y=$r[t.preset]}else y=t.preset;else y=$r.default;let I=Object.assign(Object.assign({presetId:y.presetId,preset:y},{useSeconds:y.useSeconds,useYears:y.useYears,useAliases:(e=y.useAliases)!==null&&e!==void 0?e:!1,useBlankDay:y.useBlankDay,allowOnlyOneBlankDayField:y.allowOnlyOneBlankDayField,mustHaveBlankDayField:(r=y.mustHaveBlankDayField)!==null&&r!==void 0?r:!1,useLastDayOfMonth:(n=y.useLastDayOfMonth)!==null&&n!==void 0?n:!1,useLastDayOfWeek:(i=y.useLastDayOfWeek)!==null&&i!==void 0?i:!1,useNearestWeekday:(s=y.useNearestWeekday)!==null&&s!==void 0?s:!1,useNthWeekdayOfMonth:(o=y.useNthWeekdayOfMonth)!==null&&o!==void 0?o:!1,seconds:{lowerLimit:(a=y.seconds.lowerLimit)!==null&&a!==void 0?a:y.seconds.minValue,upperLimit:(u=y.seconds.upperLimit)!==null&&u!==void 0?u:y.seconds.maxValue},minutes:{lowerLimit:(c=y.minutes.lowerLimit)!==null&&c!==void 0?c:y.minutes.minValue,upperLimit:(l=y.minutes.upperLimit)!==null&&l!==void 0?l:y.minutes.maxValue},hours:{lowerLimit:(d=y.hours.lowerLimit)!==null&&d!==void 0?d:y.hours.minValue,upperLimit:(f=y.hours.upperLimit)!==null&&f!==void 0?f:y.hours.maxValue},daysOfMonth:{lowerLimit:(m=y.daysOfMonth.lowerLimit)!==null&&m!==void 0?m:y.daysOfMonth.minValue,upperLimit:(p=y.daysOfMonth.upperLimit)!==null&&p!==void 0?p:y.daysOfMonth.maxValue},months:{lowerLimit:(E=y.months.lowerLimit)!==null&&E!==void 0?E:y.months.minValue,upperLimit:(g=y.months.upperLimit)!==null&&g!==void 0?g:y.months.maxValue},daysOfWeek:{lowerLimit:(T=y.daysOfWeek.lowerLimit)!==null&&T!==void 0?T:y.daysOfWeek.minValue,upperLimit:(_=y.daysOfWeek.upperLimit)!==null&&_!==void 0?_:y.daysOfWeek.maxValue},years:{lowerLimit:(A=y.years.lowerLimit)!==null&&A!==void 0?A:y.years.minValue,upperLimit:(w=y.years.upperLimit)!==null&&w!==void 0?w:y.years.maxValue}}),t.override),v=D.object({presetId:D.string().required(),preset:dE.required(),useSeconds:D.boolean().required(),useYears:D.boolean().required(),useAliases:D.boolean(),useBlankDay:D.boolean().required(),allowOnlyOneBlankDayField:D.boolean().required(),mustHaveBlankDayField:D.boolean(),useLastDayOfMonth:D.boolean(),useLastDayOfWeek:D.boolean(),useNearestWeekday:D.boolean(),useNthWeekdayOfMonth:D.boolean(),seconds:D.object({lowerLimit:D.number().min(y.seconds.minValue).max(y.seconds.maxValue),upperLimit:D.number().min(y.seconds.minValue).max(y.seconds.maxValue)}).required(),minutes:D.object({lowerLimit:D.number().min(y.minutes.minValue).max(y.minutes.maxValue),upperLimit:D.number().min(y.minutes.minValue).max(y.minutes.maxValue)}).required(),hours:D.object({lowerLimit:D.number().min(y.hours.minValue).max(y.hours.maxValue),upperLimit:D.number().min(y.hours.minValue).max(y.hours.maxValue)}).required(),daysOfMonth:D.object({lowerLimit:D.number().min(y.daysOfMonth.minValue).max(y.daysOfMonth.maxValue),upperLimit:D.number().min(y.daysOfMonth.minValue).max(y.daysOfMonth.maxValue)}).required(),months:D.object({lowerLimit:D.number().min(y.months.minValue).max(y.months.maxValue),upperLimit:D.number().min(y.months.minValue).max(y.months.maxValue)}).required(),daysOfWeek:D.object({lowerLimit:D.number().min(y.daysOfWeek.minValue).max(y.daysOfWeek.maxValue),upperLimit:D.number().min(y.daysOfWeek.minValue).max(y.daysOfWeek.maxValue)}).required(),years:D.object({lowerLimit:D.number().min(y.years.minValue).max(y.years.maxValue),upperLimit:D.number().min(y.years.minValue).max(y.years.maxValue)}).required()}).required().validateSync(I,{strict:!1,abortEarly:!1,stripUnknown:!0,recursive:!0});return(0,Zi.valid)(v)}catch(y){return(0,Zi.err)(y.errors)}};Te.validateOptions=yw});var Tt=V((Xi,fl)=>{"use strict";var Vr=Xi&&Xi.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Xi,"__esModule",{value:!0});var Wr=nt(),Tw=Vr($m()),Sw=Vr(Wm()),Aw=Vr(Vm()),_w=Vr(Gm()),Iw=Vr(qm()),Ow=Vr(Qm()),ww=Vr(Km()),Dw=ll();it();var Rw=(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)},dl=(t,e={})=>{let r=(0,Dw.validateOptions)(e);if(r.isError())return r;let n=r.getValue(),i=Rw(t,n);if(i.isError())return(0,Wr.err)([`${i.getError()} (Input cron: '${t}')`]);let s=i.getValue(),o=[];if(n.useSeconds&&o.push((0,Tw.default)(s,n)),o.push((0,Sw.default)(s,n)),o.push((0,Aw.default)(s,n)),o.push((0,_w.default)(s,n)),o.push((0,Iw.default)(s,n)),o.push((0,Ow.default)(s,n)),n.useYears&&o.push((0,ww.default)(s,n)),o.every(u=>u.isValid()))return(0,Wr.valid)(s);let a=[];return o.forEach(u=>{u.isError()&&u.getError().forEach(c=>{a.push(c)})}),a.forEach((u,c)=>{a[c]=`${u} (Input cron: '${t}')`}),(0,Wr.err)(a)};Xi.default=dl;fl.exports=dl;fl.exports.default=dl});var Wg=V(We=>{"use strict";Object.defineProperty(We,"__esModule",{value:!0});var Nt=class extends Error{},_l=class extends Nt{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}},Il=class extends Nt{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}},Ol=class extends Nt{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}},nr=class extends Nt{},fa=class extends Nt{constructor(e){super(`Invalid unit ${e}`)}},Se=class extends Nt{},_t=class extends Nt{constructor(){super("Zone is an abstract class")}},C="numeric",ut="short",Be="long",pa={year:C,month:C,day:C},VE={year:C,month:ut,day:C},bw={year:C,month:ut,day:C,weekday:ut},GE={year:C,month:Be,day:C},qE={year:C,month:Be,day:C,weekday:Be},QE={hour:C,minute:C},KE={hour:C,minute:C,second:C},jE={hour:C,minute:C,second:C,timeZoneName:ut},YE={hour:C,minute:C,second:C,timeZoneName:Be},HE={hour:C,minute:C,hourCycle:"h23"},zE={hour:C,minute:C,second:C,hourCycle:"h23"},JE={hour:C,minute:C,second:C,hourCycle:"h23",timeZoneName:ut},ZE={hour:C,minute:C,second:C,hourCycle:"h23",timeZoneName:Be},XE={year:C,month:C,day:C,hour:C,minute:C},eg={year:C,month:C,day:C,hour:C,minute:C,second:C},tg={year:C,month:ut,day:C,hour:C,minute:C},rg={year:C,month:ut,day:C,hour:C,minute:C,second:C},Cw={year:C,month:ut,day:C,weekday:ut,hour:C,minute:C},ng={year:C,month:Be,day:C,hour:C,minute:C,timeZoneName:ut},ig={year:C,month:Be,day:C,hour:C,minute:C,second:C,timeZoneName:ut},sg={year:C,month:Be,day:C,weekday:Be,hour:C,minute:C,timeZoneName:Be},og={year:C,month:Be,day:C,weekday:Be,hour:C,minute:C,second:C,timeZoneName:Be},sr=class{get type(){throw new _t}get name(){throw new _t}get ianaName(){return this.name}get isUniversal(){throw new _t}offsetName(e,r){throw new _t}formatOffset(e,r){throw new _t}offset(e){throw new _t}equals(e){throw new _t}get isValid(){throw new _t}},pl=null,ss=class t extends sr{static get instance(){return pl===null&&(pl=new t),pl}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:r,locale:n}){return gg(e,r,n)}formatOffset(e,r){return is(this.offset(e),r)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}},wl=new Map;function xw(t){let e=wl.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"}),wl.set(t,e)),e}var vw={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function Pw(t,e){let r=t.format(e).replace(/\u200E/g,""),n=/(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(r),[,i,s,o,a,u,c,l]=n;return[o,i,s,a,u,c,l]}function Nw(t,e){let r=t.formatToParts(e),n=[];for(let i=0;i<r.length;i++){let{type:s,value:o}=r[i],a=vw[s];s==="era"?n[a]=o:Q(a)||(n[a]=parseInt(o,10))}return n}var ml=new Map,Ut=class t extends sr{static create(e){let r=ml.get(e);return r===void 0&&ml.set(e,r=new t(e)),r}static resetCache(){ml.clear(),wl.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 gg(e,r,n,this.name)}formatOffset(e,r){return is(this.offset(e),r)}offset(e){if(!this.valid)return NaN;let r=new Date(e);if(isNaN(r))return NaN;let n=xw(this.name),[i,s,o,a,u,c,l]=n.formatToParts?Nw(n,r):Pw(n,r);a==="BC"&&(i=-Math.abs(i)+1);let f=Sa({year:i,month:s,day:o,hour:u===24?0:u,minute:c,second:l,millisecond:0}),m=+r,p=m%1e3;return m-=p>=0?p:1e3+p,(f-m)/(60*1e3)}equals(e){return e.type==="iana"&&e.name===this.name}get isValid(){return this.valid}},fE={};function Uw(t,e={}){let r=JSON.stringify([t,e]),n=fE[r];return n||(n=new Intl.ListFormat(t,e),fE[r]=n),n}var Dl=new Map;function Rl(t,e={}){let r=JSON.stringify([t,e]),n=Dl.get(r);return n===void 0&&(n=new Intl.DateTimeFormat(t,e),Dl.set(r,n)),n}var bl=new Map;function Lw(t,e={}){let r=JSON.stringify([t,e]),n=bl.get(r);return n===void 0&&(n=new Intl.NumberFormat(t,e),bl.set(r,n)),n}var Cl=new Map;function kw(t,e={}){let{base:r,...n}=e,i=JSON.stringify([t,n]),s=Cl.get(i);return s===void 0&&(s=new Intl.RelativeTimeFormat(t,e),Cl.set(i,s)),s}var ts=null;function Mw(){return ts||(ts=new Intl.DateTimeFormat().resolvedOptions().locale,ts)}var xl=new Map;function ag(t){let e=xl.get(t);return e===void 0&&(e=new Intl.DateTimeFormat(t).resolvedOptions(),xl.set(t,e)),e}var vl=new Map;function Fw(t){let e=vl.get(t);if(!e){let r=new Intl.Locale(t);e="getWeekInfo"in r?r.getWeekInfo():r.weekInfo,"minimalDays"in e||(e={...ug,...e}),vl.set(t,e)}return e}function Bw(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=Rl(t).resolvedOptions(),i=t}catch{let u=t.substring(0,r);n=Rl(u).resolvedOptions(),i=u}let{numberingSystem:s,calendar:o}=n;return[i,s,o]}}function $w(t,e,r){return(r||e)&&(t.includes("-u-")||(t+="-u"),r&&(t+=`-ca-${r}`),e&&(t+=`-nu-${e}`)),t}function Ww(t){let e=[];for(let r=1;r<=12;r++){let n=se.utc(2009,r,1);e.push(t(n))}return e}function Vw(t){let e=[];for(let r=1;r<=7;r++){let n=se.utc(2016,11,13+r);e.push(t(n))}return e}function sa(t,e,r,n){let i=t.listingMode();return i==="error"?null:i==="en"?r(e):n(e)}function Gw(t){return t.numberingSystem&&t.numberingSystem!=="latn"?!1:t.numberingSystem==="latn"||!t.locale||t.locale.startsWith("en")||ag(t.locale).numberingSystem==="latn"}var Pl=class{constructor(e,r,n){this.padTo=n.padTo||0,this.floor=n.floor||!1;let{padTo:i,floor:s,...o}=n;if(!r||Object.keys(o).length>0){let a={useGrouping:!1,...n};n.padTo>0&&(a.minimumIntegerDigits=n.padTo),this.inf=Lw(e,a)}}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):Gl(e,3);return fe(r,this.padTo)}}},Nl=class{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 o=-1*(e.offset/60),a=o>=0?`Etc/GMT+${o}`:`Etc/GMT${o}`;e.offset!==0&&Ut.create(a).valid?(i=a,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 s={...this.opts};s.timeZone=s.timeZone||i,this.dtf=Rl(r,s)}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()}},Ul=class{constructor(e,r,n){this.opts={style:"long",...n},!r&&hg()&&(this.rtf=kw(e,n))}format(e,r){return this.rtf?this.rtf.format(e,r):lD(r,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,r){return this.rtf?this.rtf.formatToParts(e,r):[]}},ug={firstDay:1,minimalDays:4,weekend:[6,7]},X=class t{static fromOpts(e){return t.create(e.locale,e.numberingSystem,e.outputCalendar,e.weekSettings,e.defaultToEN)}static create(e,r,n,i,s=!1){let o=e||te.defaultLocale,a=o||(s?"en-US":Mw()),u=r||te.defaultNumberingSystem,c=n||te.defaultOutputCalendar,l=kl(i)||te.defaultWeekSettings;return new t(a,u,c,l,o)}static resetCache(){ts=null,Dl.clear(),bl.clear(),Cl.clear(),xl.clear(),vl.clear()}static fromObject({locale:e,numberingSystem:r,outputCalendar:n,weekSettings:i}={}){return t.create(e,r,n,i)}constructor(e,r,n,i,s){let[o,a,u]=Bw(e);this.locale=o,this.numberingSystem=r||a||null,this.outputCalendar=n||u||null,this.weekSettings=i,this.intl=$w(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=s,this.fastNumbersCached=null}get fastNumbers(){return this.fastNumbersCached==null&&(this.fastNumbersCached=Gw(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,kl(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 sa(this,e,Sg,()=>{let n=this.intl==="ja"||this.intl.startsWith("ja-");r&=!n;let i=r?{month:e,day:"numeric"}:{month:e},s=r?"format":"standalone";if(!this.monthsCache[s][e]){let o=n?a=>this.dtFormatter(a,i).format():a=>this.extract(a,i,"month");this.monthsCache[s][e]=Ww(o)}return this.monthsCache[s][e]})}weekdays(e,r=!1){return sa(this,e,Ig,()=>{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]=Vw(s=>this.extract(s,n,"weekday"))),this.weekdaysCache[i][e]})}meridiems(){return sa(this,void 0,()=>Og,()=>{if(!this.meridiemCache){let e={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[se.utc(2016,11,13,9),se.utc(2016,11,13,19)].map(r=>this.extract(r,e,"dayperiod"))}return this.meridiemCache})}eras(e){return sa(this,e,wg,()=>{let r={era:e};return this.eraCache[e]||(this.eraCache[e]=[se.utc(-40,1,1),se.utc(2017,1,1)].map(n=>this.extract(n,r,"era"))),this.eraCache[e]})}extract(e,r,n){let i=this.dtFormatter(e,r),s=i.formatToParts(),o=s.find(a=>a.type.toLowerCase()===n);return o?o.value:null}numberFormatter(e={}){return new Pl(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,r={}){return new Nl(e,this.intl,r)}relFormatter(e={}){return new Ul(this.intl,this.isEnglish(),e)}listFormatter(e={}){return Uw(this.intl,e)}isEnglish(){return this.locale==="en"||this.locale.toLowerCase()==="en-us"||ag(this.intl).locale.startsWith("en-us")}getWeekSettings(){return this.weekSettings?this.weekSettings:Eg()?Fw(this.locale):ug}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})`}},hl=null,$e=class t extends sr{static get utcInstance(){return hl===null&&(hl=new t(0)),hl}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(Aa(r[1],r[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${is(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${is(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,r){return is(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}},ma=class extends sr{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 rr(t,e){if(Q(t)||t===null)return e;if(t instanceof sr)return t;if(Hw(t)){let r=t.toLowerCase();return r==="default"?e:r==="local"||r==="system"?ss.instance:r==="utc"||r==="gmt"?$e.utcInstance:$e.parseSpecifier(r)||Ut.create(t)}else return ir(t)?$e.instance(t):typeof t=="object"&&"offset"in t&&typeof t.offset=="function"?t:new ma(t)}var Bl={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"},pE={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]},qw=Bl.hanidec.replace(/[\[|\]]/g,"").split("");function Qw(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(Bl.hanidec)!==-1)e+=qw.indexOf(t[r]);else for(let i in pE){let[s,o]=pE[i];n>=s&&n<=o&&(e+=n-s)}}return parseInt(e,10)}else return e}var Ll=new Map;function Kw(){Ll.clear()}function ot({numberingSystem:t},e=""){let r=t||"latn",n=Ll.get(r);n===void 0&&(n=new Map,Ll.set(r,n));let i=n.get(e);return i===void 0&&(i=new RegExp(`${Bl[r]}${e}`),n.set(e,i)),i}var mE=()=>Date.now(),hE="system",EE=null,gE=null,yE=null,TE=60,SE,AE=null,te=class{static get now(){return mE}static set now(e){mE=e}static set defaultZone(e){hE=e}static get defaultZone(){return rr(hE,ss.instance)}static get defaultLocale(){return EE}static set defaultLocale(e){EE=e}static get defaultNumberingSystem(){return gE}static set defaultNumberingSystem(e){gE=e}static get defaultOutputCalendar(){return yE}static set defaultOutputCalendar(e){yE=e}static get defaultWeekSettings(){return AE}static set defaultWeekSettings(e){AE=kl(e)}static get twoDigitCutoffYear(){return TE}static set twoDigitCutoffYear(e){TE=e%100}static get throwOnInvalid(){return SE}static set throwOnInvalid(e){SE=e}static resetCaches(){X.resetCache(),Ut.resetCache(),se.resetCache(),Kw()}},Fe=class{constructor(e,r){this.reason=e,this.explanation=r}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}},cg=[0,31,59,90,120,151,181,212,243,273,304,334],lg=[0,31,60,91,121,152,182,213,244,274,305,335];function Ye(t,e){return new Fe("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function $l(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}function dg(t,e,r){return r+(as(t)?lg:cg)[e-1]}function fg(t,e){let r=as(t)?lg:cg,n=r.findIndex(s=>s<e),i=e-r[n];return{month:n+1,day:i}}function Wl(t,e){return(t-e+7)%7+1}function ha(t,e=4,r=1){let{year:n,month:i,day:s}=t,o=dg(n,i,s),a=Wl($l(n,i,s),r),u=Math.floor((o-a+14-e)/7),c;return u<1?(c=n-1,u=os(c,e,r)):u>os(n,e,r)?(c=n+1,u=1):c=n,{weekYear:c,weekNumber:u,weekday:a,..._a(t)}}function _E(t,e=4,r=1){let{weekYear:n,weekNumber:i,weekday:s}=t,o=Wl($l(n,1,e),r),a=Un(n),u=i*7+s-o-7+e,c;u<1?(c=n-1,u+=Un(c)):u>a?(c=n+1,u-=Un(n)):c=n;let{month:l,day:d}=fg(c,u);return{year:c,month:l,day:d,..._a(t)}}function El(t){let{year:e,month:r,day:n}=t,i=dg(e,r,n);return{year:e,ordinal:i,..._a(t)}}function IE(t){let{year:e,ordinal:r}=t,{month:n,day:i}=fg(e,r);return{year:e,month:n,day:i,..._a(t)}}function OE(t,e){if(!Q(t.localWeekday)||!Q(t.localWeekNumber)||!Q(t.localWeekYear)){if(!Q(t.weekday)||!Q(t.weekNumber)||!Q(t.weekYear))throw new nr("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}}function jw(t,e=4,r=1){let n=Ta(t.weekYear),i=He(t.weekNumber,1,os(t.weekYear,e,r)),s=He(t.weekday,1,7);return n?i?s?!1:Ye("weekday",t.weekday):Ye("week",t.weekNumber):Ye("weekYear",t.weekYear)}function Yw(t){let e=Ta(t.year),r=He(t.ordinal,1,Un(t.year));return e?r?!1:Ye("ordinal",t.ordinal):Ye("year",t.year)}function pg(t){let e=Ta(t.year),r=He(t.month,1,12),n=He(t.day,1,Ea(t.year,t.month));return e?r?n?!1:Ye("day",t.day):Ye("month",t.month):Ye("year",t.year)}function mg(t){let{hour:e,minute:r,second:n,millisecond:i}=t,s=He(e,0,23)||e===24&&r===0&&n===0&&i===0,o=He(r,0,59),a=He(n,0,59),u=He(i,0,999);return s?o?a?u?!1:Ye("millisecond",i):Ye("second",n):Ye("minute",r):Ye("hour",e)}function Q(t){return typeof t>"u"}function ir(t){return typeof t=="number"}function Ta(t){return typeof t=="number"&&t%1===0}function Hw(t){return typeof t=="string"}function zw(t){return Object.prototype.toString.call(t)==="[object Date]"}function hg(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function Eg(){try{return typeof Intl<"u"&&!!Intl.Locale&&("weekInfo"in Intl.Locale.prototype||"getWeekInfo"in Intl.Locale.prototype)}catch{return!1}}function Jw(t){return Array.isArray(t)?t:[t]}function wE(t,e,r){if(t.length!==0)return t.reduce((n,i)=>{let s=[e(i),i];return n&&r(n[0],s[0])===n[0]?n:s},null)[1]}function Zw(t,e){return e.reduce((r,n)=>(r[n]=t[n],r),{})}function kn(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function kl(t){if(t==null)return null;if(typeof t!="object")throw new Se("Week settings must be an object");if(!He(t.firstDay,1,7)||!He(t.minimalDays,1,7)||!Array.isArray(t.weekend)||t.weekend.some(e=>!He(e,1,7)))throw new Se("Invalid week settings");return{firstDay:t.firstDay,minimalDays:t.minimalDays,weekend:Array.from(t.weekend)}}function He(t,e,r){return Ta(t)&&t>=e&&t<=r}function Xw(t,e){return t-e*Math.floor(t/e)}function fe(t,e=2){let r=t<0,n;return r?n="-"+(""+-t).padStart(e,"0"):n=(""+t).padStart(e,"0"),n}function tr(t){if(!(Q(t)||t===null||t===""))return parseInt(t,10)}function Gr(t){if(!(Q(t)||t===null||t===""))return parseFloat(t)}function Vl(t){if(!(Q(t)||t===null||t==="")){let e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function Gl(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`)}}function as(t){return t%4===0&&(t%100!==0||t%400===0)}function Un(t){return as(t)?366:365}function Ea(t,e){let r=Xw(e-1,12)+1,n=t+(e-r)/12;return r===2?as(n)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][r-1]}function Sa(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}function DE(t,e,r){return-Wl($l(t,1,e),r)+e-1}function os(t,e=4,r=1){let n=DE(t,e,r),i=DE(t+1,e,r);return(Un(t)-n+i)/7}function Ml(t){return t>99?t:t>te.twoDigitCutoffYear?1900+t:2e3+t}function gg(t,e,r,n=null){let i=new Date(t),s={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};n&&(s.timeZone=n);let o={timeZoneName:e,...s},a=new Intl.DateTimeFormat(r,o).formatToParts(i).find(u=>u.type.toLowerCase()==="timezonename");return a?a.value:null}function Aa(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}function yg(t){let e=Number(t);if(typeof t=="boolean"||t===""||!Number.isFinite(e))throw new Se(`Invalid unit value ${t}`);return e}function ga(t,e){let r={};for(let n in t)if(kn(t,n)){let i=t[n];if(i==null)continue;r[e(n)]=yg(i)}return r}function is(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}${fe(r,2)}:${fe(n,2)}`;case"narrow":return`${i}${r}${n>0?`:${n}`:""}`;case"techie":return`${i}${fe(r,2)}${fe(n,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function _a(t){return Zw(t,["hour","minute","second","millisecond"])}var eD=["January","February","March","April","May","June","July","August","September","October","November","December"],Tg=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],tD=["J","F","M","A","M","J","J","A","S","O","N","D"];function Sg(t){switch(t){case"narrow":return[...tD];case"short":return[...Tg];case"long":return[...eD];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}}var Ag=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],_g=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],rD=["M","T","W","T","F","S","S"];function Ig(t){switch(t){case"narrow":return[...rD];case"short":return[..._g];case"long":return[...Ag];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}var Og=["AM","PM"],nD=["Before Christ","Anno Domini"],iD=["BC","AD"],sD=["B","A"];function wg(t){switch(t){case"narrow":return[...sD];case"short":return[...iD];case"long":return[...nD];default:return null}}function oD(t){return Og[t.hour<12?0:1]}function aD(t,e){return Ig(e)[t.weekday-1]}function uD(t,e){return Sg(e)[t.month-1]}function cD(t,e){return wg(e)[t.year<0?0:1]}function lD(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."]},s=["hours","minutes","seconds"].indexOf(t)===-1;if(r==="auto"&&s){let d=t==="days";switch(e){case 1:return d?"tomorrow":`next ${i[t][0]}`;case-1:return d?"yesterday":`last ${i[t][0]}`;case 0:return d?"today":`this ${i[t][0]}`}}let o=Object.is(e,-0)||e<0,a=Math.abs(e),u=a===1,c=i[t],l=n?u?c[1]:c[2]||c[1]:u?i[t][0]:t;return o?`${a} ${l} ago`:`in ${a} ${l}`}function RE(t,e){let r="";for(let n of t)n.literal?r+=n.val:r+=e(n.val);return r}var dD={D:pa,DD:VE,DDD:GE,DDDD:qE,t:QE,tt:KE,ttt:jE,tttt:YE,T:HE,TT:zE,TTT:JE,TTTT:ZE,f:XE,ff:tg,fff:ng,ffff:sg,F:eg,FF:rg,FFF:ig,FFFF:og},Me=class t{static create(e,r={}){return new t(e,r)}static parseFormat(e){let r=null,n="",i=!1,s=[];for(let o=0;o<e.length;o++){let a=e.charAt(o);a==="'"?((n.length>0||i)&&s.push({literal:i||/^\s+$/.test(n),val:n===""?"'":n}),r=null,n="",i=!i):i||a===r?n+=a:(n.length>0&&s.push({literal:/^\s+$/.test(n),val:n}),n=a,r=a)}return n.length>0&&s.push({literal:i||/^\s+$/.test(n),val:n}),s}static macroTokenToFormatOpts(e){return dD[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 fe(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",s=(m,p)=>this.loc.extract(e,m,p),o=m=>e.isOffsetFixed&&e.offset===0&&m.allowZ?"Z":e.isValid?e.zone.formatOffset(e.ts,m.format):"",a=()=>n?oD(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),u=(m,p)=>n?uD(e,m):s(p?{month:m}:{month:m,day:"numeric"},"month"),c=(m,p)=>n?aD(e,m):s(p?{weekday:m}:{weekday:m,month:"long",day:"numeric"},"weekday"),l=m=>{let p=t.macroTokenToFormatOpts(m);return p?this.formatWithSystemDefault(e,p):m},d=m=>n?cD(e,m):s({era:m},"era"),f=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 o({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return o({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return o({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 a();case"d":return i?s({day:"numeric"},"day"):this.num(e.day);case"dd":return i?s({day:"2-digit"},"day"):this.num(e.day,2);case"c":return this.num(e.weekday);case"ccc":return c("short",!0);case"cccc":return c("long",!0);case"ccccc":return c("narrow",!0);case"E":return this.num(e.weekday);case"EEE":return c("short",!1);case"EEEE":return c("long",!1);case"EEEEE":return c("narrow",!1);case"L":return i?s({month:"numeric",day:"numeric"},"month"):this.num(e.month);case"LL":return i?s({month:"2-digit",day:"numeric"},"month"):this.num(e.month,2);case"LLL":return u("short",!0);case"LLLL":return u("long",!0);case"LLLLL":return u("narrow",!0);case"M":return i?s({month:"numeric"},"month"):this.num(e.month);case"MM":return i?s({month:"2-digit"},"month"):this.num(e.month,2);case"MMM":return u("short",!1);case"MMMM":return u("long",!1);case"MMMMM":return u("narrow",!1);case"y":return i?s({year:"numeric"},"year"):this.num(e.year);case"yy":return i?s({year:"2-digit"},"year"):this.num(e.year.toString().slice(-2),2);case"yyyy":return i?s({year:"numeric"},"year"):this.num(e.year,4);case"yyyyyy":return i?s({year:"numeric"},"year"):this.num(e.year,6);case"G":return d("short");case"GG":return d("long");case"GGGGG":return d("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 l(m)}};return RE(t.parseFormat(r),f)}formatDurationFromString(e,r){let n=this.opts.signMode==="negativeLargestOnly"?-1:1,i=l=>{switch(l[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}},s=(l,d)=>f=>{let m=i(f);if(m){let p=d.isNegativeDuration&&m!==d.largestUnit?n:1,E;return this.opts.signMode==="negativeLargestOnly"&&m!==d.largestUnit?E="never":this.opts.signMode==="all"?E="always":E="auto",this.num(l.get(m)*p,f.length,E)}else return f},o=t.parseFormat(r),a=o.reduce((l,{literal:d,val:f})=>d?l:l.concat(f),[]),u=e.shiftTo(...a.map(i).filter(l=>l)),c={isNegativeDuration:u<0,largestUnit:Object.keys(u.values)[0]};return RE(o,s(u,c))}},Dg=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function Mn(...t){let e=t.reduce((r,n)=>r+n.source,"");return RegExp(`^${e}$`)}function Fn(...t){return e=>t.reduce(([r,n,i],s)=>{let[o,a,u]=s(e,i);return[{...r,...o},a||n,u]},[{},null,1]).slice(0,2)}function Bn(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]}function Rg(...t){return(e,r)=>{let n={},i;for(i=0;i<t.length;i++)n[t[i]]=tr(e[r+i]);return[n,null,r+i]}}var bg=/(?:([Zz])|([+-]\d\d)(?::?(\d\d))?)/,fD=`(?:${bg.source}?(?:\\[(${Dg.source})\\])?)?`,ql=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,Cg=RegExp(`${ql.source}${fD}`),Ql=RegExp(`(?:[Tt]${Cg.source})?`),pD=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,mD=/(\d{4})-?W(\d\d)(?:-?(\d))?/,hD=/(\d{4})-?(\d{3})/,ED=Rg("weekYear","weekNumber","weekDay"),gD=Rg("year","ordinal"),yD=/(\d{4})-(\d\d)-(\d\d)/,xg=RegExp(`${ql.source} ?(?:${bg.source}|(${Dg.source}))?`),TD=RegExp(`(?: ${xg.source})?`);function Ln(t,e,r){let n=t[e];return Q(n)?r:tr(n)}function SD(t,e){return[{year:Ln(t,e),month:Ln(t,e+1,1),day:Ln(t,e+2,1)},null,e+3]}function $n(t,e){return[{hours:Ln(t,e,0),minutes:Ln(t,e+1,0),seconds:Ln(t,e+2,0),milliseconds:Vl(t[e+3])},null,e+4]}function us(t,e){let r=!t[e]&&!t[e+1],n=Aa(t[e+1],t[e+2]),i=r?null:$e.instance(n);return[{},i,e+3]}function cs(t,e){let r=t[e]?Ut.create(t[e]):null;return[{},r,e+1]}var AD=RegExp(`^T?${ql.source}$`),_D=/^-?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 ID(t){let[e,r,n,i,s,o,a,u,c]=t,l=e[0]==="-",d=u&&u[0]==="-",f=(m,p=!1)=>m!==void 0&&(p||m&&l)?-m:m;return[{years:f(Gr(r)),months:f(Gr(n)),weeks:f(Gr(i)),days:f(Gr(s)),hours:f(Gr(o)),minutes:f(Gr(a)),seconds:f(Gr(u),u==="-0"),milliseconds:f(Vl(c),d)}]}var OD={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 Kl(t,e,r,n,i,s,o){let a={year:e.length===2?Ml(tr(e)):tr(e),month:Tg.indexOf(r)+1,day:tr(n),hour:tr(i),minute:tr(s)};return o&&(a.second=tr(o)),t&&(a.weekday=t.length>3?Ag.indexOf(t)+1:_g.indexOf(t)+1),a}var wD=/^(?:(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 DD(t){let[,e,r,n,i,s,o,a,u,c,l,d]=t,f=Kl(e,i,n,r,s,o,a),m;return u?m=OD[u]:c?m=0:m=Aa(l,d),[f,new $e(m)]}function RD(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}var bD=/^(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$/,CD=/^(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$/,xD=/^(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 bE(t){let[,e,r,n,i,s,o,a]=t;return[Kl(e,i,n,r,s,o,a),$e.utcInstance]}function vD(t){let[,e,r,n,i,s,o,a]=t;return[Kl(e,a,r,n,i,s,o),$e.utcInstance]}var PD=Mn(pD,Ql),ND=Mn(mD,Ql),UD=Mn(hD,Ql),LD=Mn(Cg),vg=Fn(SD,$n,us,cs),kD=Fn(ED,$n,us,cs),MD=Fn(gD,$n,us,cs),FD=Fn($n,us,cs);function BD(t){return Bn(t,[PD,vg],[ND,kD],[UD,MD],[LD,FD])}function $D(t){return Bn(RD(t),[wD,DD])}function WD(t){return Bn(t,[bD,bE],[CD,bE],[xD,vD])}function VD(t){return Bn(t,[_D,ID])}var GD=Fn($n);function qD(t){return Bn(t,[AD,GD])}var QD=Mn(yD,TD),KD=Mn(xg),jD=Fn($n,us,cs);function YD(t){return Bn(t,[QD,vg],[KD,jD])}var CE="Invalid Duration",Pg={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}},HD={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},...Pg},je=146097/400,vn=146097/4800,zD={years:{quarters:4,months:12,weeks:je/7,days:je,hours:je*24,minutes:je*24*60,seconds:je*24*60*60,milliseconds:je*24*60*60*1e3},quarters:{months:3,weeks:je/28,days:je/4,hours:je*24/4,minutes:je*24*60/4,seconds:je*24*60*60/4,milliseconds:je*24*60*60*1e3/4},months:{weeks:vn/7,days:vn,hours:vn*24,minutes:vn*24*60,seconds:vn*24*60*60,milliseconds:vn*24*60*60*1e3},...Pg},Qr=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],JD=Qr.slice(0).reverse();function Pt(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 he(n)}function Ng(t,e){var r;let n=(r=e.milliseconds)!=null?r:0;for(let i of JD.slice(1))e[i]&&(n+=e[i]*t[i].milliseconds);return n}function xE(t,e){let r=Ng(t,e)<0?-1:1;Qr.reduceRight((n,i)=>{if(Q(e[i]))return n;if(n){let s=e[n]*r,o=t[i][n],a=Math.floor(s/o);e[i]+=a*r,e[n]-=a*o*r}return i},null),Qr.reduce((n,i)=>{if(Q(e[i]))return n;if(n){let s=e[n]%1;e[n]-=s,e[i]+=s*t[n][i]}return i},null)}function vE(t){let e={};for(let[r,n]of Object.entries(t))n!==0&&(e[r]=n);return e}var he=class t{constructor(e){let r=e.conversionAccuracy==="longterm"||!1,n=r?zD:HD;e.matrix&&(n=e.matrix),this.values=e.values,this.loc=e.loc||X.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 Se(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new t({values:ga(e,t.normalizeUnit),loc:X.fromObject(r),conversionAccuracy:r.conversionAccuracy,matrix:r.matrix})}static fromDurationLike(e){if(ir(e))return t.fromMillis(e);if(t.isDuration(e))return e;if(typeof e=="object")return t.fromObject(e);throw new Se(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,r){let[n]=VD(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]=qD(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 Se("need to specify a reason the Duration is invalid");let n=e instanceof Fe?e:new Fe(e,r);if(te.throwOnInvalid)throw new Ol(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 fa(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?Me.create(this.loc,n).formatDurationFromString(this,e):CE}toHuman(e={}){if(!this.isValid)return CE;let r=e.showZeros!==!1,n=Qr.map(i=>{let s=this.values[i];return Q(s)||s===0&&!r?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...e,unit:i.slice(0,-1)}).format(s)}).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+=Gl(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},se.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?Ng(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)(kn(r.values,i)||kn(this.values,i))&&(n[i]=r.get(i)+this.get(i));return Pt(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]=yg(e(this.values[n],n));return Pt(this,{values:r},!0)}get(e){return this[t.normalizeUnit(e)]}set(e){if(!this.isValid)return this;let r={...this.values,...ga(e,t.normalizeUnit)};return Pt(this,{values:r})}reconfigure({locale:e,numberingSystem:r,conversionAccuracy:n,matrix:i}={}){let o={loc:this.loc.clone({locale:e,numberingSystem:r}),matrix:i,conversionAccuracy:n};return Pt(this,o)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;let e=this.toObject();return xE(this.matrix,e),Pt(this,{values:e},!0)}rescale(){if(!this.isValid)return this;let e=vE(this.normalize().shiftToAll().toObject());return Pt(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(o=>t.normalizeUnit(o));let r={},n={},i=this.toObject(),s;for(let o of Qr)if(e.indexOf(o)>=0){s=o;let a=0;for(let c in n)a+=this.matrix[c][o]*n[c],n[c]=0;ir(i[o])&&(a+=i[o]);let u=Math.trunc(a);r[o]=u,n[o]=(a*1e3-u*1e3)/1e3}else ir(i[o])&&(n[o]=i[o]);for(let o in n)n[o]!==0&&(r[s]+=o===s?n[o]:n[o]/this.matrix[s][o]);return xE(this.matrix,r),Pt(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 Pt(this,{values:e},!0)}removeZeros(){if(!this.isValid)return this;let e=vE(this.values);return Pt(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}for(let n of Qr)if(!r(this.values[n],e.values[n]))return!1;return!0}},Pn="Invalid Interval";function ZD(t,e){return!t||!t.isValid?jr.invalid("missing or invalid start"):!e||!e.isValid?jr.invalid("missing or invalid end"):e<t?jr.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}var jr=class t{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 Se("need to specify a reason the Interval is invalid");let n=e instanceof Fe?e:new Fe(e,r);if(te.throwOnInvalid)throw new Il(n);return new t({invalid:n})}static fromDateTimes(e,r){let n=es(e),i=es(r),s=ZD(n,i);return s??new t({start:n,end:i})}static after(e,r){let n=he.fromDurationLike(r),i=es(e);return t.fromDateTimes(i,i.plus(n))}static before(e,r){let n=he.fromDurationLike(r),i=es(e);return t.fromDateTimes(i.minus(n),i)}static fromISO(e,r){let[n,i]=(e||"").split("/",2);if(n&&i){let s,o;try{s=se.fromISO(n,r),o=s.isValid}catch{o=!1}let a,u;try{a=se.fromISO(i,r),u=a.isValid}catch{u=!1}if(o&&u)return t.fromDateTimes(s,a);if(o){let c=he.fromISO(i,r);if(c.isValid)return t.after(s,c)}else if(u){let c=he.fromISO(n,r);if(c.isValid)return t.before(a,c)}}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(es).filter(o=>this.contains(o)).sort((o,a)=>o.toMillis()-a.toMillis()),n=[],{s:i}=this,s=0;for(;i<this.e;){let o=r[s]||this.e,a=+o>+this.e?this.e:o;n.push(t.fromDateTimes(i,a)),i=a,s+=1}return n}splitBy(e){let r=he.fromDurationLike(e);if(!this.isValid||!r.isValid||r.as("milliseconds")===0)return[];let{s:n}=this,i=1,s,o=[];for(;n<this.e;){let a=this.start.plus(r.mapUnits(u=>u*i));s=+a>+this.e?this.e:a,o.push(t.fromDateTimes(n,s)),n=s,i+=1}return o}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,s)=>i.s-s.s).reduce(([i,s],o)=>s?s.overlaps(o)||s.abutsStart(o)?[i,s.union(o)]:[i.concat([s]),o]:[i,o],[[],null]);return n&&r.push(n),r}static xor(e){let r=null,n=0,i=[],s=e.map(u=>[{time:u.s,type:"s"},{time:u.e,type:"e"}]),o=Array.prototype.concat(...s),a=o.sort((u,c)=>u.time-c.time);for(let u of a)n+=u.type==="s"?1:-1,n===1?r=u.time:(r&&+r!=+u.time&&i.push(t.fromDateTimes(r,u.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()})`:Pn}[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=pa,r={}){return this.isValid?Me.create(this.s.loc.clone(r),e).formatInterval(this):Pn}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:Pn}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:Pn}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:Pn}toFormat(e,{separator:r=" \u2013 "}={}){return this.isValid?`${this.s.toFormat(e)}${r}${this.e.toFormat(e)}`:Pn}toDuration(e,r){return this.isValid?this.e.diff(this.s,e,r):he.invalid(this.invalidReason)}mapEndpoints(e){return t.fromDateTimes(e(this.s),e(this.e))}},Kr=class{static hasDST(e=te.defaultZone){let r=se.now().setZone(e).set({month:12});return!e.isUniversal&&r.offset!==r.set({month:6}).offset}static isValidIANAZone(e){return Ut.isValidZone(e)}static normalizeZone(e){return rr(e,te.defaultZone)}static getStartOfWeek({locale:e=null,locObj:r=null}={}){return(r||X.create(e)).getStartOfWeek()}static getMinimumDaysInFirstWeek({locale:e=null,locObj:r=null}={}){return(r||X.create(e)).getMinDaysInFirstWeek()}static getWeekendWeekdays({locale:e=null,locObj:r=null}={}){return(r||X.create(e)).getWeekendDays().slice()}static months(e="long",{locale:r=null,numberingSystem:n=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||X.create(r,n,s)).months(e)}static monthsFormat(e="long",{locale:r=null,numberingSystem:n=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||X.create(r,n,s)).months(e,!0)}static weekdays(e="long",{locale:r=null,numberingSystem:n=null,locObj:i=null}={}){return(i||X.create(r,n,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:r=null,numberingSystem:n=null,locObj:i=null}={}){return(i||X.create(r,n,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return X.create(e).meridiems()}static eras(e="short",{locale:r=null}={}){return X.create(r,null,"gregory").eras(e)}static features(){return{relative:hg(),localeWeek:Eg()}}};function PE(t,e){let r=i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),n=r(e)-r(t);return Math.floor(he.fromMillis(n).as("days"))}function XD(t,e,r){let n=[["years",(u,c)=>c.year-u.year],["quarters",(u,c)=>c.quarter-u.quarter+(c.year-u.year)*4],["months",(u,c)=>c.month-u.month+(c.year-u.year)*12],["weeks",(u,c)=>{let l=PE(u,c);return(l-l%7)/7}],["days",PE]],i={},s=t,o,a;for(let[u,c]of n)r.indexOf(u)>=0&&(o=u,i[u]=c(t,e),a=s.plus(i),a>e?(i[u]--,t=s.plus(i),t>e&&(a=t,i[u]--,t=s.plus(i))):t=a);return[t,i,a,o]}function eR(t,e,r,n){let[i,s,o,a]=XD(t,e,r),u=e-i,c=r.filter(d=>["hours","minutes","seconds","milliseconds"].indexOf(d)>=0);c.length===0&&(o<e&&(o=i.plus({[a]:1})),o!==i&&(s[a]=(s[a]||0)+u/(o-i)));let l=he.fromObject(s,n);return c.length>0?he.fromMillis(u,n).shiftTo(...c).plus(l):l}var tR="missing Intl.DateTimeFormat.formatToParts support";function Z(t,e=r=>r){return{regex:t,deser:([r])=>e(Qw(r))}}var rR=String.fromCharCode(160),Ug=`[ ${rR}]`,Lg=new RegExp(Ug,"g");function nR(t){return t.replace(/\./g,"\\.?").replace(Lg,Ug)}function NE(t){return t.replace(/\./g,"").replace(Lg," ").toLowerCase()}function at(t,e){return t===null?null:{regex:RegExp(t.map(nR).join("|")),deser:([r])=>t.findIndex(n=>NE(r)===NE(n))+e}}function UE(t,e){return{regex:t,deser:([,r,n])=>Aa(r,n),groups:e}}function oa(t){return{regex:t,deser:([e])=>e}}function iR(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function sR(t,e){let r=ot(e),n=ot(e,"{2}"),i=ot(e,"{3}"),s=ot(e,"{4}"),o=ot(e,"{6}"),a=ot(e,"{1,2}"),u=ot(e,"{1,3}"),c=ot(e,"{1,6}"),l=ot(e,"{1,9}"),d=ot(e,"{2,4}"),f=ot(e,"{4,6}"),m=g=>({regex:RegExp(iR(g.val)),deser:([T])=>T,literal:!0}),E=(g=>{if(t.literal)return m(g);switch(g.val){case"G":return at(e.eras("short"),0);case"GG":return at(e.eras("long"),0);case"y":return Z(c);case"yy":return Z(d,Ml);case"yyyy":return Z(s);case"yyyyy":return Z(f);case"yyyyyy":return Z(o);case"M":return Z(a);case"MM":return Z(n);case"MMM":return at(e.months("short",!0),1);case"MMMM":return at(e.months("long",!0),1);case"L":return Z(a);case"LL":return Z(n);case"LLL":return at(e.months("short",!1),1);case"LLLL":return at(e.months("long",!1),1);case"d":return Z(a);case"dd":return Z(n);case"o":return Z(u);case"ooo":return Z(i);case"HH":return Z(n);case"H":return Z(a);case"hh":return Z(n);case"h":return Z(a);case"mm":return Z(n);case"m":return Z(a);case"q":return Z(a);case"qq":return Z(n);case"s":return Z(a);case"ss":return Z(n);case"S":return Z(u);case"SSS":return Z(i);case"u":return oa(l);case"uu":return oa(a);case"uuu":return Z(r);case"a":return at(e.meridiems(),0);case"kkkk":return Z(s);case"kk":return Z(d,Ml);case"W":return Z(a);case"WW":return Z(n);case"E":case"c":return Z(r);case"EEE":return at(e.weekdays("short",!1),1);case"EEEE":return at(e.weekdays("long",!1),1);case"ccc":return at(e.weekdays("short",!0),1);case"cccc":return at(e.weekdays("long",!0),1);case"Z":case"ZZ":return UE(new RegExp(`([+-]${a.source})(?::(${n.source}))?`),2);case"ZZZ":return UE(new RegExp(`([+-]${a.source})(${n.source})?`),2);case"z":return oa(/[a-z_+-/]{1,256}?/i);case" ":return oa(/[^\S\n\r]/);default:return m(g)}})(t)||{invalidReason:tR};return E.token=t,E}var oR={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 aR(t,e,r){let{type:n,value:i}=t;if(n==="literal"){let u=/^\s+$/.test(i);return{literal:!u,val:u?" ":i}}let s=e[n],o=n;n==="hour"&&(e.hour12!=null?o=e.hour12?"hour12":"hour24":e.hourCycle!=null?e.hourCycle==="h11"||e.hourCycle==="h12"?o="hour12":o="hour24":o=r.hour12?"hour12":"hour24");let a=oR[o];if(typeof a=="object"&&(a=a[s]),a)return{literal:!1,val:a}}function uR(t){return[`^${t.map(r=>r.regex).reduce((r,n)=>`${r}(${n.source})`,"")}$`,t]}function cR(t,e,r){let n=t.match(e);if(n){let i={},s=1;for(let o in r)if(kn(r,o)){let a=r[o],u=a.groups?a.groups+1:1;!a.literal&&a.token&&(i[a.token.val[0]]=a.deser(n.slice(s,s+u))),s+=u}return[n,i]}else return[n,{}]}function lR(t){let e=s=>{switch(s){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}},r=null,n;return Q(t.z)||(r=Ut.create(t.z)),Q(t.Z)||(r||(r=new $e(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=Vl(t.u)),[Object.keys(t).reduce((s,o)=>{let a=e(o);return a&&(s[a]=t[o]),s},{}),r,n]}var gl=null;function dR(){return gl||(gl=se.fromMillis(1555555555555)),gl}function fR(t,e){if(t.literal)return t;let r=Me.macroTokenToFormatOpts(t.val),n=Fg(r,e);return n==null||n.includes(void 0)?t:n}function kg(t,e){return Array.prototype.concat(...t.map(r=>fR(r,e)))}var ya=class{constructor(e,r){if(this.locale=e,this.format=r,this.tokens=kg(Me.parseFormat(r),e),this.units=this.tokens.map(n=>sR(n,e)),this.disqualifyingUnit=this.units.find(n=>n.invalidReason),!this.disqualifyingUnit){let[n,i]=uR(this.units);this.regex=RegExp(n,"i"),this.handlers=i}}explainFromTokens(e){if(this.isValid){let[r,n]=cR(e,this.regex,this.handlers),[i,s,o]=n?lR(n):[null,null,void 0];if(kn(n,"a")&&kn(n,"H"))throw new nr("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:s,specificOffset:o}}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 Mg(t,e,r){return new ya(t,r).explainFromTokens(e)}function pR(t,e,r){let{result:n,zone:i,specificOffset:s,invalidReason:o}=Mg(t,e,r);return[n,i,s,o]}function Fg(t,e){if(!t)return null;let n=Me.create(e,t).dtFormatter(dR()),i=n.formatToParts(),s=n.resolvedOptions();return i.map(o=>aR(o,t,s))}var yl="Invalid DateTime",LE=864e13;function rs(t){return new Fe("unsupported zone",`the zone "${t.name}" is not supported`)}function Tl(t){return t.weekData===null&&(t.weekData=ha(t.c)),t.weekData}function Sl(t){return t.localWeekData===null&&(t.localWeekData=ha(t.c,t.loc.getMinDaysInFirstWeek(),t.loc.getStartOfWeek())),t.localWeekData}function qr(t,e){let r={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new se({...r,...e,old:r})}function Bg(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 s=r.offset(n);return i===s?[n,i]:[t-Math.min(i,s)*60*1e3,Math.max(i,s)]}function aa(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()}}function ca(t,e,r){return Bg(Sa(t),e,r)}function kE(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,s={...t.c,year:n,month:i,day:Math.min(t.c.day,Ea(n,i))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},o=he.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"),a=Sa(s),[u,c]=Bg(a,r,t.zone);return o!==0&&(u+=o,c=t.zone.offset(u)),{ts:u,o:c}}function Nn(t,e,r,n,i,s){let{setZone:o,zone:a}=r;if(t&&Object.keys(t).length!==0||e){let u=e||a,c=se.fromObject(t,{...r,zone:u,specificOffset:s});return o?c:c.setZone(a)}else return se.invalid(new Fe("unparsable",`the input "${i}" can't be parsed as ${n}`))}function ua(t,e,r=!0){return t.isValid?Me.create(X.create("en-US"),{allowZ:r,forceSimple:!0}).formatDateTimeFromString(t,e):null}function Al(t,e,r){let n=t.c.year>9999||t.c.year<0,i="";if(n&&t.c.year>=0&&(i+="+"),i+=fe(t.c.year,n?6:4),r==="year")return i;if(e){if(i+="-",i+=fe(t.c.month),r==="month")return i;i+="-"}else if(i+=fe(t.c.month),r==="month")return i;return i+=fe(t.c.day),i}function ME(t,e,r,n,i,s,o){let a=!r||t.c.millisecond!==0||t.c.second!==0,u="";switch(o){case"day":case"month":case"year":break;default:if(u+=fe(t.c.hour),o==="hour")break;if(e){if(u+=":",u+=fe(t.c.minute),o==="minute")break;a&&(u+=":",u+=fe(t.c.second))}else{if(u+=fe(t.c.minute),o==="minute")break;a&&(u+=fe(t.c.second))}if(o==="second")break;a&&(!n||t.c.millisecond!==0)&&(u+=".",u+=fe(t.c.millisecond,3))}return i&&(t.isOffsetFixed&&t.offset===0&&!s?u+="Z":t.o<0?(u+="-",u+=fe(Math.trunc(-t.o/60)),u+=":",u+=fe(Math.trunc(-t.o%60))):(u+="+",u+=fe(Math.trunc(t.o/60)),u+=":",u+=fe(Math.trunc(t.o%60)))),s&&(u+="["+t.zone.ianaName+"]"),u}var $g={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},mR={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},hR={ordinal:1,hour:0,minute:0,second:0,millisecond:0},la=["year","month","day","hour","minute","second","millisecond"],ER=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],gR=["year","ordinal","hour","minute","second","millisecond"];function da(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 fa(t);return e}function FE(t){switch(t.toLowerCase()){case"localweekday":case"localweekdays":return"localWeekday";case"localweeknumber":case"localweeknumbers":return"localWeekNumber";case"localweekyear":case"localweekyears":return"localWeekYear";default:return da(t)}}function yR(t){if(ns===void 0&&(ns=te.now()),t.type!=="iana")return t.offset(ns);let e=t.name,r=Fl.get(e);return r===void 0&&(r=t.offset(ns),Fl.set(e,r)),r}function BE(t,e){let r=rr(e.zone,te.defaultZone);if(!r.isValid)return se.invalid(rs(r));let n=X.fromObject(e),i,s;if(Q(t.year))i=te.now();else{for(let u of la)Q(t[u])&&(t[u]=$g[u]);let o=pg(t)||mg(t);if(o)return se.invalid(o);let a=yR(r);[i,s]=ca(t,a,r)}return new se({ts:i,zone:r,loc:n,o:s})}function $E(t,e,r){let n=Q(r.round)?!0:r.round,i=Q(r.rounding)?"trunc":r.rounding,s=(a,u)=>(a=Gl(a,n||r.calendary?0:2,r.calendary?"round":i),e.loc.clone(r).relFormatter(r).format(a,u)),o=a=>r.calendary?e.hasSame(t,a)?0:e.startOf(a).diff(t.startOf(a),a).get(a):e.diff(t,a).get(a);if(r.unit)return s(o(r.unit),r.unit);for(let a of r.units){let u=o(a);if(Math.abs(u)>=1)return s(u,a)}return s(t>e?-0:0,r.units[r.units.length-1])}function WE(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]}var ns,Fl=new Map,se=class t{constructor(e){let r=e.zone||te.defaultZone,n=e.invalid||(Number.isNaN(e.ts)?new Fe("invalid input"):null)||(r.isValid?null:rs(r));this.ts=Q(e.ts)?te.now():e.ts;let i=null,s=null;if(!n)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(r))[i,s]=[e.old.c,e.old.o];else{let a=ir(e.o)&&!e.old?e.o:r.offset(this.ts);i=aa(this.ts,a),n=Number.isNaN(i.year)?new Fe("invalid input"):null,i=n?null:i,s=n?null:a}this._zone=r,this.loc=e.loc||X.create(),this.invalid=n,this.weekData=null,this.localWeekData=null,this.c=i,this.o=s,this.isLuxonDateTime=!0}static now(){return new t({})}static local(){let[e,r]=WE(arguments),[n,i,s,o,a,u,c]=r;return BE({year:n,month:i,day:s,hour:o,minute:a,second:u,millisecond:c},e)}static utc(){let[e,r]=WE(arguments),[n,i,s,o,a,u,c]=r;return e.zone=$e.utcInstance,BE({year:n,month:i,day:s,hour:o,minute:a,second:u,millisecond:c},e)}static fromJSDate(e,r={}){let n=zw(e)?e.valueOf():NaN;if(Number.isNaN(n))return t.invalid("invalid input");let i=rr(r.zone,te.defaultZone);return i.isValid?new t({ts:n,zone:i,loc:X.fromObject(r)}):t.invalid(rs(i))}static fromMillis(e,r={}){if(ir(e))return e<-LE||e>LE?t.invalid("Timestamp out of range"):new t({ts:e,zone:rr(r.zone,te.defaultZone),loc:X.fromObject(r)});throw new Se(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,r={}){if(ir(e))return new t({ts:e*1e3,zone:rr(r.zone,te.defaultZone),loc:X.fromObject(r)});throw new Se("fromSeconds requires a numerical input")}static fromObject(e,r={}){e=e||{};let n=rr(r.zone,te.defaultZone);if(!n.isValid)return t.invalid(rs(n));let i=X.fromObject(r),s=ga(e,FE),{minDaysInFirstWeek:o,startOfWeek:a}=OE(s,i),u=te.now(),c=Q(r.specificOffset)?n.offset(u):r.specificOffset,l=!Q(s.ordinal),d=!Q(s.year),f=!Q(s.month)||!Q(s.day),m=d||f,p=s.weekYear||s.weekNumber;if((m||l)&&p)throw new nr("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(f&&l)throw new nr("Can't mix ordinal dates with month/day");let E=p||s.weekday&&!m,g,T,_=aa(u,c);E?(g=ER,T=mR,_=ha(_,o,a)):l?(g=gR,T=hR,_=El(_)):(g=la,T=$g);let A=!1;for(let j of g){let Dt=s[j];Q(Dt)?A?s[j]=T[j]:s[j]=_[j]:A=!0}let w=E?jw(s,o,a):l?Yw(s):pg(s),y=w||mg(s);if(y)return t.invalid(y);let I=E?_E(s,o,a):l?IE(s):s,[k,v]=ca(I,c,n),L=new t({ts:k,zone:n,o:v,loc:i});return s.weekday&&m&&e.weekday!==L.weekday?t.invalid("mismatched weekday",`you can't specify both a weekday of ${s.weekday} and a date of ${L.toISO()}`):L.isValid?L:t.invalid(L.invalid)}static fromISO(e,r={}){let[n,i]=BD(e);return Nn(n,i,r,"ISO 8601",e)}static fromRFC2822(e,r={}){let[n,i]=$D(e);return Nn(n,i,r,"RFC 2822",e)}static fromHTTP(e,r={}){let[n,i]=WD(e);return Nn(n,i,r,"HTTP",r)}static fromFormat(e,r,n={}){if(Q(e)||Q(r))throw new Se("fromFormat requires an input string and a format");let{locale:i=null,numberingSystem:s=null}=n,o=X.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0}),[a,u,c,l]=pR(o,e,r);return l?t.invalid(l):Nn(a,u,n,`format ${r}`,e,c)}static fromString(e,r,n={}){return t.fromFormat(e,r,n)}static fromSQL(e,r={}){let[n,i]=YD(e);return Nn(n,i,r,"SQL",e)}static invalid(e,r=null){if(!e)throw new Se("need to specify a reason the DateTime is invalid");let n=e instanceof Fe?e:new Fe(e,r);if(te.throwOnInvalid)throw new _l(n);return new t({invalid:n})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}static parseFormatForOpts(e,r={}){let n=Fg(e,X.fromObject(r));return n?n.map(i=>i?i.val:null).join(""):null}static expandFormat(e,r={}){return kg(Me.parseFormat(e),X.fromObject(r)).map(i=>i.val).join("")}static resetCache(){ns=void 0,Fl.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?Tl(this).weekYear:NaN}get weekNumber(){return this.isValid?Tl(this).weekNumber:NaN}get weekday(){return this.isValid?Tl(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?Sl(this).weekday:NaN}get localWeekNumber(){return this.isValid?Sl(this).weekNumber:NaN}get localWeekYear(){return this.isValid?Sl(this).weekYear:NaN}get ordinal(){return this.isValid?El(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=Sa(this.c),i=this.zone.offset(n-e),s=this.zone.offset(n+e),o=this.zone.offset(n-i*r),a=this.zone.offset(n-s*r);if(o===a)return[this];let u=n-o*r,c=n-a*r,l=aa(u,o),d=aa(c,a);return l.hour===d.hour&&l.minute===d.minute&&l.second===d.second&&l.millisecond===d.millisecond?[qr(this,{ts:u}),qr(this,{ts:c})]:[this]}get isInLeapYear(){return as(this.year)}get daysInMonth(){return Ea(this.year,this.month)}get daysInYear(){return this.isValid?Un(this.year):NaN}get weeksInWeekYear(){return this.isValid?os(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?os(this.localWeekYear,this.loc.getMinDaysInFirstWeek(),this.loc.getStartOfWeek()):NaN}resolvedLocaleOptions(e={}){let{locale:r,numberingSystem:n,calendar:i}=Me.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:r,numberingSystem:n,outputCalendar:i}}toUTC(e=0,r={}){return this.setZone($e.instance(e),r)}toLocal(){return this.setZone(te.defaultZone)}setZone(e,{keepLocalTime:r=!1,keepCalendarTime:n=!1}={}){if(e=rr(e,te.defaultZone),e.equals(this.zone))return this;if(e.isValid){let i=this.ts;if(r||n){let s=e.offset(this.ts),o=this.toObject();[i]=ca(o,s,e)}return qr(this,{ts:i,zone:e})}else return t.invalid(rs(e))}reconfigure({locale:e,numberingSystem:r,outputCalendar:n}={}){let i=this.loc.clone({locale:e,numberingSystem:r,outputCalendar:n});return qr(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;let r=ga(e,FE),{minDaysInFirstWeek:n,startOfWeek:i}=OE(r,this.loc),s=!Q(r.weekYear)||!Q(r.weekNumber)||!Q(r.weekday),o=!Q(r.ordinal),a=!Q(r.year),u=!Q(r.month)||!Q(r.day),c=a||u,l=r.weekYear||r.weekNumber;if((c||o)&&l)throw new nr("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(u&&o)throw new nr("Can't mix ordinal dates with month/day");let d;s?d=_E({...ha(this.c,n,i),...r},n,i):Q(r.ordinal)?(d={...this.toObject(),...r},Q(r.day)&&(d.day=Math.min(Ea(d.year,d.month),d.day))):d=IE({...El(this.c),...r});let[f,m]=ca(d,this.o,this.zone);return qr(this,{ts:f,o:m})}plus(e){if(!this.isValid)return this;let r=he.fromDurationLike(e);return qr(this,kE(this,r))}minus(e){if(!this.isValid)return this;let r=he.fromDurationLike(e).negate();return qr(this,kE(this,r))}startOf(e,{useLocaleWeeks:r=!1}={}){if(!this.isValid)return this;let n={},i=he.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 s=this.loc.getStartOfWeek(),{weekday:o}=this;o<s&&(n.weekNumber=this.weekNumber-1),n.weekday=s}else n.weekday=1;if(i==="quarters"){let s=Math.ceil(this.month/3);n.month=(s-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?Me.create(this.loc.redefaultToEN(r)).formatDateTimeFromString(this,e):yl}toLocaleString(e=pa,r={}){return this.isValid?Me.create(this.loc.clone(r),e).formatDateTime(this):yl}toLocaleParts(e={}){return this.isValid?Me.create(this.loc.clone(e),e).formatDateTimeParts(this):[]}toISO({format:e="extended",suppressSeconds:r=!1,suppressMilliseconds:n=!1,includeOffset:i=!0,extendedZone:s=!1,precision:o="milliseconds"}={}){if(!this.isValid)return null;o=da(o);let a=e==="extended",u=Al(this,a,o);return la.indexOf(o)>=3&&(u+="T"),u+=ME(this,a,r,n,i,s,o),u}toISODate({format:e="extended",precision:r="day"}={}){return this.isValid?Al(this,e==="extended",da(r)):null}toISOWeekDate(){return ua(this,"kkkk-'W'WW-c")}toISOTime({suppressMilliseconds:e=!1,suppressSeconds:r=!1,includeOffset:n=!0,includePrefix:i=!1,extendedZone:s=!1,format:o="extended",precision:a="milliseconds"}={}){return this.isValid?(a=da(a),(i&&la.indexOf(a)>=3?"T":"")+ME(this,o==="extended",r,e,n,s,a)):null}toRFC2822(){return ua(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return ua(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?Al(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")),ua(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():yl}[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 he.invalid("created by diffing an invalid DateTime");let i={locale:this.locale,numberingSystem:this.numberingSystem,...n},s=Jw(r).map(he.normalizeUnit),o=e.valueOf()>this.valueOf(),a=o?this:e,u=o?e:this,c=eR(a,u,s,i);return o?c.negate():c}diffNow(e="milliseconds",r={}){return this.diff(t.now(),e,r)}until(e){return this.isValid?jr.fromDateTimes(this,e):this}hasSame(e,r,n){if(!this.isValid)return!1;let i=e.valueOf(),s=this.setZone(e.zone,{keepLocalTime:!0});return s.startOf(r,n)<=i&&i<=s.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"],s=e.unit;return Array.isArray(e.unit)&&(i=e.unit,s=void 0),$E(r,this.plus(n),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?$E(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 Se("min requires all arguments be DateTimes");return wE(e,r=>r.valueOf(),Math.min)}static max(...e){if(!e.every(t.isDateTime))throw new Se("max requires all arguments be DateTimes");return wE(e,r=>r.valueOf(),Math.max)}static fromFormatExplain(e,r,n={}){let{locale:i=null,numberingSystem:s=null}=n,o=X.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});return Mg(o,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,s=X.fromOpts({locale:n,numberingSystem:i,defaultToEN:!0});return new ya(s,e)}static fromFormatParser(e,r,n={}){if(Q(e)||Q(r))throw new Se("fromFormatParser requires an input string and a format parser");let{locale:i=null,numberingSystem:s=null}=n,o=X.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});if(!o.equals(r.locale))throw new Se(`fromFormatParser called with a locale of ${o}, but the format parser was created for ${r.locale}`);let{result:a,zone:u,specificOffset:c,invalidReason:l}=r.explainFromTokens(e);return l?t.invalid(l):Nn(a,u,n,`format ${r.format}`,e,c)}static get DATE_SHORT(){return pa}static get DATE_MED(){return VE}static get DATE_MED_WITH_WEEKDAY(){return bw}static get DATE_FULL(){return GE}static get DATE_HUGE(){return qE}static get TIME_SIMPLE(){return QE}static get TIME_WITH_SECONDS(){return KE}static get TIME_WITH_SHORT_OFFSET(){return jE}static get TIME_WITH_LONG_OFFSET(){return YE}static get TIME_24_SIMPLE(){return HE}static get TIME_24_WITH_SECONDS(){return zE}static get TIME_24_WITH_SHORT_OFFSET(){return JE}static get TIME_24_WITH_LONG_OFFSET(){return ZE}static get DATETIME_SHORT(){return XE}static get DATETIME_SHORT_WITH_SECONDS(){return eg}static get DATETIME_MED(){return tg}static get DATETIME_MED_WITH_SECONDS(){return rg}static get DATETIME_MED_WITH_WEEKDAY(){return Cw}static get DATETIME_FULL(){return ng}static get DATETIME_FULL_WITH_SECONDS(){return ig}static get DATETIME_HUGE(){return sg}static get DATETIME_HUGE_WITH_SECONDS(){return og}};function es(t){if(se.isDateTime(t))return t;if(t&&t.valueOf&&ir(t.valueOf()))return se.fromJSDate(t);if(t&&typeof t=="object")return se.fromObject(t);throw new Se(`Unknown datetime argument: ${t}, of type ${typeof t}`)}var TR="3.7.1";We.DateTime=se;We.Duration=he;We.FixedOffsetZone=$e;We.IANAZone=Ut;We.Info=Kr;We.Interval=jr;We.InvalidZone=ma;We.Settings=te;We.SystemZone=ss;We.VERSION=TR;We.Zone=sr});var Gg=V((Hk,Vg)=>{"use strict";var Yr=Wg();K.prototype.addYear=function(){this._date=this._date.plus({years:1})};K.prototype.addMonth=function(){this._date=this._date.plus({months:1}).startOf("month")};K.prototype.addDay=function(){this._date=this._date.plus({days:1}).startOf("day")};K.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}))};K.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}))};K.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}))};K.prototype.subtractYear=function(){this._date=this._date.minus({years:1})};K.prototype.subtractMonth=function(){this._date=this._date.minus({months:1}).endOf("month").startOf("second")};K.prototype.subtractDay=function(){this._date=this._date.minus({days:1}).endOf("day").startOf("second")};K.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}))};K.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}))};K.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}))};K.prototype.getDate=function(){return this._date.day};K.prototype.getFullYear=function(){return this._date.year};K.prototype.getDay=function(){var t=this._date.weekday;return t==7?0:t};K.prototype.getMonth=function(){return this._date.month-1};K.prototype.getHours=function(){return this._date.hour};K.prototype.getMinutes=function(){return this._date.minute};K.prototype.getSeconds=function(){return this._date.second};K.prototype.getMilliseconds=function(){return this._date.millisecond};K.prototype.getTime=function(){return this._date.valueOf()};K.prototype.getUTCDate=function(){return this._getUTC().day};K.prototype.getUTCFullYear=function(){return this._getUTC().year};K.prototype.getUTCDay=function(){var t=this._getUTC().weekday;return t==7?0:t};K.prototype.getUTCMonth=function(){return this._getUTC().month-1};K.prototype.getUTCHours=function(){return this._getUTC().hour};K.prototype.getUTCMinutes=function(){return this._getUTC().minute};K.prototype.getUTCSeconds=function(){return this._getUTC().second};K.prototype.toISOString=function(){return this._date.toUTC().toISO()};K.prototype.toJSON=function(){return this._date.toJSON()};K.prototype.setDate=function(t){this._date=this._date.set({day:t})};K.prototype.setFullYear=function(t){this._date=this._date.set({year:t})};K.prototype.setDay=function(t){this._date=this._date.set({weekday:t})};K.prototype.setMonth=function(t){this._date=this._date.set({month:t+1})};K.prototype.setHours=function(t){this._date=this._date.set({hour:t})};K.prototype.setMinutes=function(t){this._date=this._date.set({minute:t})};K.prototype.setSeconds=function(t){this._date=this._date.set({second:t})};K.prototype.setMilliseconds=function(t){this._date=this._date.set({millisecond:t})};K.prototype._getUTC=function(){return this._date.toUTC()};K.prototype.toString=function(){return this.toDate().toString()};K.prototype.toDate=function(){return this._date.toJSDate()};K.prototype.isLastDayOfMonth=function(){var t=this._date.plus({days:1}).startOf("day");return this._date.month!==t.month};K.prototype.isLastWeekdayOfMonth=function(){var t=this._date.plus({days:7}).startOf("day");return this._date.month!==t.month};function K(t,e){var r={zone:e};if(t?t instanceof K?this._date=t._date:t instanceof Date?this._date=Yr.DateTime.fromJSDate(t,r):typeof t=="number"?this._date=Yr.DateTime.fromMillis(t,r):typeof t=="string"&&(this._date=Yr.DateTime.fromISO(t,r),this._date.isValid||(this._date=Yr.DateTime.fromRFC2822(t,r)),this._date.isValid||(this._date=Yr.DateTime.fromSQL(t,r)),this._date.isValid||(this._date=Yr.DateTime.fromFormat(t,"EEE, d MMM yyyy HH:mm:ss",r))):this._date=Yr.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))}Vg.exports=K});var Kg=V((zk,Qg)=>{"use strict";function Hr(t){return{start:t,count:1}}function qg(t,e){t.end=e,t.step=e-t.start,t.count=2}function jl(t,e,r){e&&(e.count===2?(t.push(Hr(e.start)),t.push(Hr(e.end))):t.push(e)),r&&t.push(r)}function SR(t){for(var e=[],r=void 0,n=0;n<t.length;n++){var i=t[n];typeof i!="number"?(jl(e,r,Hr(i)),r=void 0):r?r.count===1?qg(r,i):r.step===i-r.end?(r.count++,r.end=i):r.count===2?(e.push(Hr(r.start)),r=Hr(r.end),qg(r,i)):(jl(e,r),r=Hr(i)):r=Hr(i)}return jl(e,r),e}Qg.exports=SR});var Yg=V((Jk,jg)=>{"use strict";var AR=Kg();function _R(t,e,r){var n=AR(t);if(n.length===1){var i=n[0],s=i.step;if(s===1&&i.start===e&&i.end===r)return"*";if(s!==1&&i.start===e&&i.end===r-s+1)return"*/"+s}for(var o=[],a=0,u=n.length;a<u;++a){var c=n[a];if(c.count===1){o.push(c.start);continue}var s=c.step;if(c.step===1){o.push(c.start+"-"+c.end);continue}var l=c.start==0?c.count-1:c.count;c.step*l>c.end?o=o.concat(Array.from({length:c.end-c.start+1}).map(function(f,m){var p=c.start+m;return(p-c.start)%c.step===0?p:null}).filter(function(f){return f!=null})):c.end===r-c.step+1?o.push(c.start+"/"+c.step):o.push(c.start+"-"+c.end+"/"+c.step)}return o.join(",")}jg.exports=_R});var Jg=V((Zk,zg)=>{"use strict";var zr=Gg(),IR=Yg(),Hg=1e4;function N(t,e){this._options=e,this._utc=e.utc||!1,this._tz=this._utc?"UTC":e.tz,this._currentDate=new zr(e.currentDate,this._tz),this._startDate=e.startDate?new zr(e.startDate,this._tz):null,this._endDate=e.endDate?new zr(e.endDate,this._tz):null,this._isIterator=e.iterator||!1,this._hasIterated=!1,this._nthDayOfWeek=e.nthDayOfWeek||0,this.fields=N._freezeFields(t)}N.map=["second","minute","hour","dayOfMonth","month","dayOfWeek"];N.predefined={"@yearly":"0 0 1 1 *","@monthly":"0 0 1 * *","@weekly":"0 0 * * 0","@daily":"0 0 * * *","@hourly":"0 * * * *"};N.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"]}];N.daysInMonth=[31,29,31,30,31,30,31,31,30,31,30,31];N.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}};N.parseDefaults=["0","*","*","*","*","*"];N.standardValidCharacters=/^[,*\d/-]+$/;N.dayOfWeekValidCharacters=/^[?,*\dL#/-]+$/;N.dayOfMonthValidCharacters=/^[?,*\dL/-]+$/;N.validCharacters={second:N.standardValidCharacters,minute:N.standardValidCharacters,hour:N.standardValidCharacters,dayOfMonth:N.dayOfMonthValidCharacters,month:N.standardValidCharacters,dayOfWeek:N.dayOfWeekValidCharacters};N._isValidConstraintChar=function(e,r){return typeof r!="string"?!1:e.chars.some(function(n){return r.indexOf(n)>-1})};N._parseField=function(e,r,n){switch(e){case"month":case"dayOfWeek":var i=N.aliases[e];r=r.replace(/[a-z]{3}/gi,function(u){if(u=u.toLowerCase(),typeof i[u]<"u")return i[u];throw new Error('Validation error, cannot resolve alias "'+u+'"')});break}if(!N.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 s(u){var c=[];function l(p){if(p instanceof Array)for(var E=0,g=p.length;E<g;E++){var T=p[E];if(N._isValidConstraintChar(n,T)){c.push(T);continue}if(typeof T!="number"||Number.isNaN(T)||T<n.min||T>n.max)throw new Error("Constraint error, got value "+T+" expected range "+n.min+"-"+n.max);c.push(T)}else{if(N._isValidConstraintChar(n,p)){c.push(p);return}var _=+p;if(Number.isNaN(_)||_<n.min||_>n.max)throw new Error("Constraint error, got value "+p+" expected range "+n.min+"-"+n.max);e==="dayOfWeek"&&(_=_%7),c.push(_)}}var d=u.split(",");if(!d.every(function(p){return p.length>0}))throw new Error("Invalid list value format");if(d.length>1)for(var f=0,m=d.length;f<m;f++)l(o(d[f]));else l(o(u));return c.sort(N._sortCompareFn),c}function o(u){var c=1,l=u.split("/");if(l.length>2)throw new Error("Invalid repeat: "+u);return l.length>1?(l[0]==+l[0]&&(l=[l[0]+"-"+n.max,l[1]]),a(l[0],l[l.length-1])):a(u,c)}function a(u,c){var l=[],d=u.split("-");if(d.length>1){if(d.length<2)return+u;if(!d[0].length){if(!d[1].length)throw new Error("Invalid range: "+u);return+u}var f=+d[0],m=+d[1];if(Number.isNaN(f)||Number.isNaN(m)||f<n.min||m>n.max)throw new Error("Constraint error, got range "+f+"-"+m+" expected range "+n.min+"-"+n.max);if(f>m)throw new Error("Invalid range: "+u);var p=+c;if(Number.isNaN(p)||p<=0)throw new Error("Constraint error, cannot repeat at every "+p+" time.");e==="dayOfWeek"&&m%7===0&&l.push(0);for(var E=f,g=m;E<=g;E++){var T=l.indexOf(E)!==-1;!T&&p>0&&p%c===0?(p=1,l.push(E)):p++}return l}return Number.isNaN(+u)?u:+u}return s(r)};N._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)};N._handleMaxDaysInMonth=function(t){if(t.month.length===1){var e=N.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(N._sortCompareFn)}};N._freezeFields=function(t){for(var e=0,r=N.map.length;e<r;++e){var n=N.map[e],i=t[n];t[n]=Object.freeze(i)}return Object.freeze(t)};N.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 s=t.getHours();t[e+r]();var o=t.getHours(),a=o-s;a===2?this.fields.hour.length!==24&&(this._dstStart=o):a===0&&t.getMinutes()===0&&t.getSeconds()===0&&this.fields.hour.length!==24&&(this._dstEnd=o)}};N.prototype._findSchedule=function(e){function r(T,_){for(var A=0,w=_.length;A<w;A++)if(_[A]>=T)return _[A]===T;return _[0]===T}function n(T,_){if(_<6){if(T.getDate()<8&&_===1)return!0;var A=T.getDate()%7?1:0,w=T.getDate()-T.getDate()%7,y=Math.floor(w/7)+A;return y===_}return!1}function i(T){return T.length>0&&T.some(function(_){return typeof _=="string"&&_.indexOf("L")>=0})}e=e||!1;var s=e?"subtract":"add",o=new zr(this._currentDate,this._tz),a=this._startDate,u=this._endDate,c=o.getTime(),l=0;function d(T){return T.some(function(_){if(!i([_]))return!1;var A=Number.parseInt(_[0])%7;if(Number.isNaN(A))throw new Error("Invalid last weekday of the month expression: "+_);return o.getDay()===A&&o.isLastWeekdayOfMonth()})}for(;l<Hg;){if(l++,e){if(a&&o.getTime()-a.getTime()<0)throw new Error("Out of the timespan range")}else if(u&&u.getTime()-o.getTime()<0)throw new Error("Out of the timespan range");var f=r(o.getDate(),this.fields.dayOfMonth);i(this.fields.dayOfMonth)&&(f=f||o.isLastDayOfMonth());var m=r(o.getDay(),this.fields.dayOfWeek);i(this.fields.dayOfWeek)&&(m=m||d(this.fields.dayOfWeek));var p=this.fields.dayOfMonth.length>=N.daysInMonth[o.getMonth()],E=this.fields.dayOfWeek.length===N.constraints[5].max-N.constraints[5].min+1,g=o.getHours();if(!f&&(!m||E)){this._applyTimezoneShift(o,s,"Day");continue}if(!p&&E&&!f){this._applyTimezoneShift(o,s,"Day");continue}if(p&&!E&&!m){this._applyTimezoneShift(o,s,"Day");continue}if(this._nthDayOfWeek>0&&!n(o,this._nthDayOfWeek)){this._applyTimezoneShift(o,s,"Day");continue}if(!r(o.getMonth()+1,this.fields.month)){this._applyTimezoneShift(o,s,"Month");continue}if(r(g,this.fields.hour)){if(this._dstEnd===g&&!e){this._dstEnd=null,this._applyTimezoneShift(o,"add","Hour");continue}}else if(this._dstStart!==g){this._dstStart=null,this._applyTimezoneShift(o,s,"Hour");continue}else if(!r(g-1,this.fields.hour)){o[s+"Hour"]();continue}if(!r(o.getMinutes(),this.fields.minute)){this._applyTimezoneShift(o,s,"Minute");continue}if(!r(o.getSeconds(),this.fields.second)){this._applyTimezoneShift(o,s,"Second");continue}if(c===o.getTime()){s==="add"||o.getMilliseconds()===0?this._applyTimezoneShift(o,s,"Second"):o.setMilliseconds(0);continue}break}if(l>=Hg)throw new Error("Invalid expression, loop limit exceeded");return this._currentDate=new zr(o,this._tz),this._hasIterated=!0,o};N.prototype.next=function(){var e=this._findSchedule();return this._isIterator?{value:e,done:!this.hasNext()}:e};N.prototype.prev=function(){var e=this._findSchedule(!0);return this._isIterator?{value:e,done:!this.hasPrev()}:e};N.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}};N.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}};N.prototype.iterate=function(e,r){var n=[];if(e>=0)for(var i=0,s=e;i<s;i++)try{var o=this.next();n.push(o),r&&r(o,i)}catch{break}else for(var i=0,s=e;i>s;i--)try{var o=this.prev();n.push(o),r&&r(o,i)}catch{break}return n};N.prototype.reset=function(e){this._currentDate=new zr(e||this._options.currentDate)};N.prototype.stringify=function(e){for(var r=[],n=e?0:1,i=N.map.length;n<i;++n){var s=N.map[n],o=this.fields[s],a=N.constraints[n];s==="dayOfMonth"&&this.fields.month.length===1?a={min:1,max:N.daysInMonth[this.fields.month[0]-1]}:s==="dayOfWeek"&&(a={min:0,max:6},o=o[o.length-1]===7?o.slice(0,-1):o),r.push(IR(o,a.min,a.max))}return r.join(" ")};N.parse=function(e,r){var n=this;typeof r=="function"&&(r={});function i(s,o){o||(o={}),typeof o.currentDate>"u"&&(o.currentDate=new zr(void 0,n._tz)),N.predefined[s]&&(s=N.predefined[s]);var a=[],u=(s+"").trim().split(/\s+/);if(u.length>6)throw new Error("Invalid cron expression");for(var c=N.map.length-u.length,l=0,d=N.map.length;l<d;++l){var f=N.map[l],m=u[u.length>d?l:l-c];if(l<c||!m)a.push(N._parseField(f,N.parseDefaults[l],N.constraints[l]));else{var p=f==="dayOfWeek"?_(m):m;a.push(N._parseField(f,p,N.constraints[l]))}}for(var E={},l=0,d=N.map.length;l<d;l++){var g=N.map[l];E[g]=a[l]}var T=N._handleMaxDaysInMonth(E);return E.dayOfMonth=T||E.dayOfMonth,new N(E,o);function _(A){var w=A.split("#");if(w.length>1){var y=+w[w.length-1];if(/,/.test(A))throw new Error("Constraint error, invalid dayOfWeek `#` and `,` special characters are incompatible");if(/\//.test(A))throw new Error("Constraint error, invalid dayOfWeek `#` and `/` special characters are incompatible");if(/-/.test(A))throw new Error("Constraint error, invalid dayOfWeek `#` and `-` special characters are incompatible");if(w.length>2||Number.isNaN(y)||y<1||y>5)throw new Error("Constraint error, invalid dayOfWeek occurrence number (#)");return o.nthDayOfWeek=y,w[0]}return A}}return i(e,r)};N.fieldsToExpression=function(e,r){function n(f,m,p){if(!m)throw new Error("Validation error, Field "+f+" is missing");if(m.length===0)throw new Error("Validation error, Field "+f+" contains no values");for(var E=0,g=m.length;E<g;E++){var T=m[E];if(!N._isValidConstraintChar(p,T)&&(typeof T!="number"||Number.isNaN(T)||T<p.min||T>p.max))throw new Error("Constraint error, got value "+T+" expected range "+p.min+"-"+p.max)}}for(var i={},s=0,o=N.map.length;s<o;++s){var a=N.map[s],u=e[a];n(a,u,N.constraints[s]);for(var c=[],l=-1;++l<u.length;)c[l]=u[l];if(u=c.sort(N._sortCompareFn).filter(function(f,m,p){return!m||f!==p[m-1]}),u.length!==c.length)throw new Error("Validation error, Field "+a+" contains duplicate values");i[a]=u}var d=N._handleMaxDaysInMonth(i);return i.dayOfMonth=d||i.dayOfMonth,new N(i,r||{})};zg.exports=N});var Xg=V((Xk,Zg)=>{"use strict";var Ia=Jg();function or(){}or._parseEntry=function(e){var r=e.split(" ");if(r.length===6)return{interval:Ia.parse(e)};if(r.length>6)return{interval:Ia.parse(r.slice(0,6).join(" ")),command:r.slice(6,r.length)};throw new Error("Invalid entry: "+e)};or.parseExpression=function(e,r){return Ia.parse(e,r)};or.fieldsToExpression=function(e,r){return Ia.fieldsToExpression(e,r)};or.parseString=function(e){for(var r=e.split(`
|
|
5
|
+
`),n={variables:{},expressions:[],errors:{}},i=0,s=r.length;i<s;i++){var o=r[i],a=null,u=o.trim();if(u.length>0){if(u.match(/^#/))continue;if(a=u.match(/^(.*)=(.*)$/))n.variables[a[1]]=a[2];else{var c=null;try{c=or._parseEntry("0 "+u),n.expressions.push(c.interval)}catch(l){n.errors[u]=l}}}}return n};or.parseFile=function(e,r){require("fs").readFile(e,function(n,i){if(n){r(n);return}return r(null,or.parseString(i.toString()))})};Zg.exports=or});var y0={};P(y0,{AutomationViewMode:()=>Pa,BUDIBASE_DATASOURCE_TYPE:()=>hd,BadRequestError:()=>xu,BudibaseError:()=>di,Config:()=>Ad,Cookie:()=>Jr,DEFAULT_BB_DATASOURCE_ID:()=>On,DEFAULT_EMPLOYEE_TABLE_ID:()=>Td,DEFAULT_EXPENSES_TABLE_ID:()=>yd,DEFAULT_INVENTORY_TABLE_ID:()=>gd,DEFAULT_JOBS_TABLE_ID:()=>Ed,DEFAULT_TENANT_ID:()=>oe,DeprecatedViews:()=>Vn,DesignDocuments:()=>ms,DocumentType:()=>ue,Duration:()=>me,DurationType:()=>Of,EmailUnavailableError:()=>Kt,Endpoint:()=>Ec,EndpointGroup:()=>_n,EndpointGroupList:()=>xo,FeatureDisabledError:()=>Uu,ForbiddenError:()=>vu,GlobalRole:()=>Sd,HTTPError:()=>we,Header:()=>Le,InternalTable:()=>Rt,InvalidAPIKeyError:()=>fi,MAX_VALID_DATE:()=>La,MIN_VALID_DATE:()=>py,NotFoundError:()=>Cu,NotImplementedError:()=>Pu,RedisClient:()=>Ce,SEPARATOR:()=>R,SQLITE_DESIGN_DOC_ID:()=>It,SQS_DATASOURCE_INTERNAL:()=>md,StaticDatabases:()=>de,UNICODE_MAX:()=>De,USER_METADATA_PREFIX:()=>ps,UnexpectedError:()=>bu,UsageLimitError:()=>Nu,UserStatus:()=>Ua,ViewName:()=>ur,WORKSPACE_DEV:()=>Na,WORKSPACE_DEV_PREFIX:()=>Je,WORKSPACE_PREFIX:()=>ze,accounts:()=>pn,auth:()=>im,blacklist:()=>um,cache:()=>To,configs:()=>Gt,constants:()=>_d,context:()=>ae,csv:()=>Sm,db:()=>mr,docIds:()=>ff,docUpdates:()=>lm,encryption:()=>tm,env:()=>h,errors:()=>ku,events:()=>oi,features:()=>Kp,getPublicError:()=>Lu,init:()=>g0,installation:()=>_u,locks:()=>Ei,logging:()=>Zs,middleware:()=>nm,objectStore:()=>$f,permissions:()=>Gp,platform:()=>ro,plugins:()=>om,queue:()=>Kf,redis:()=>am,roles:()=>Vp,security:()=>Sp,sessions:()=>$u,setEnv:()=>Es,sql:()=>Tm,tenancy:()=>E0,timers:()=>ou,userUtils:()=>fp,users:()=>ui,utils:()=>Zn,withEnv:()=>yy});module.exports=g_(y0);var Gt={};P(Gt,{analyticsEnabled:()=>Au,generateConfigID:()=>qu,getAIConfig:()=>NU,getConfig:()=>tt,getDefaultGoogleConfig:()=>bp,getGoogleConfig:()=>Qu,getGoogleDatasourceConfig:()=>vp,getOIDCConfig:()=>xU,getOIDCConfigById:()=>Pp,getOIDCLogosDoc:()=>bU,getPlatformUrl:()=>Oo,getRecaptchaConfig:()=>UU,getSCIMConfig:()=>PU,getSMTPConfig:()=>vU,getSMTPConfigDoc:()=>cA,getSettingsConfig:()=>xp,getSettingsConfigDoc:()=>ci,save:()=>DU});var y_=["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"],T_=["automation:deleted","workspace_app:deleted","datasource:deleted","table:deleted","query:deleted","view:deleted"],Im=[...y_,...T_],Om={"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:created":void 0,"workspace:deleted":void 0,"workspace:updated":void 0,"workspace_app:created":void 0,"workspace_app:deleted":void 0,"workspace_app:updated":void 0};var gc=(n=>(n.SQL="sql",n.JSON="json",n.FIELDS="fields",n))(gc||{}),yc=(f=>(f.STRING="string",f.CODE="code",f.LONGFORM="longForm",f.BOOLEAN="boolean",f.NUMBER="number",f.PASSWORD="password",f.LIST="list",f.OBJECT="object",f.JSON="json",f.FILE="file",f.FIELD_GROUP="fieldGroup",f.SELECT="select",f))(yc||{}),No=(T=>(T.AIRTABLE="AIRTABLE",T.ARANGODB="ARANGODB",T.BUDIBASE="BUDIBASE",T.COUCHDB="COUCHDB",T.DYNAMODB="DYNAMODB",T.ELASTICSEARCH="ELASTICSEARCH",T.FIRESTORE="FIRESTORE",T.GOOGLE_SHEETS="GOOGLE_SHEETS",T.MONGODB="MONGODB",T.MYSQL="MYSQL",T.ORACLE="ORACLE",T.POSTGRES="POSTGRES",T.REDIS="REDIS",T.REST="REST",T.S3="S3",T.SNOWFLAKE="SNOWFLAKE",T.SQL_SERVER="SQL_SERVER",T))(No||{});var Tc=(n=>(n.CONNECTION_CHECKING="connection",n.FETCH_TABLE_NAMES="fetch_table_names",n.EXPORT_SCHEMA="export_schema",n))(Tc||{});var S_=M(require("lodash/isPlainObject")),Nr=(o=>(o.EQUAL="equal",o.NOT_EQUAL="notEqual",o.EMPTY="empty",o.NOT_EMPTY="notEmpty",o.FUZZY="fuzzy",o.STRING="string",o))(Nr||{}),Jt=(i=>(i.CONTAINS="contains",i.NOT_CONTAINS="notContains",i.CONTAINS_ANY="containsAny",i.ONE_OF="oneOf",i))(Jt||{}),In=(e=>(e.RANGE="range",e))(In||{}),Si=(r=>(r.AND="$and",r.OR="$or",r))(Si||{});function Uo(t){return Object.values(Si).includes(t)}function wm(t){return Object.values(Nr).includes(t)}function Dm(t){return Object.values(Jt).includes(t)}function Lo(t){return Object.values(In).includes(t)}var Rm=t=>typeof t=="object"&&t._id&&t._rev;var Ai=(s=>(s.USER="user",s.HEADER="header",s.QUERY="query",s.SUBDOMAIN="subdomain",s.PATH="path",s))(Ai||{});var bm={USE_ZOD_VALIDATOR:!1,AI_AGENTS:!1,DIRECT_LOGIN_TO_ACCOUNT_PORTAL:!1,DEBUG_UI:!1};var _i=(i=>(i.READ="read",i.WRITE="write",i.EXECUTE="execute",i.ADMIN="admin",i))(_i||{});var ko=(d=>(d.APP="app",d.TABLE="table",d.USER="user",d.AUTOMATION="automation",d.WEBHOOK="webhook",d.BUILDER="builder",d.CREATOR="creator",d.GLOBAL_BUILDER="globalBuilder",d.QUERY="query",d.VIEW="view",d.LEGACY_VIEW="legacy_view",d))(ko||{});var Mo=t=>t.hosting==="cloud";var Fo=t=>t.authType==="sso";var R="_",De="\uFFF0",Zt=t=>`${t}${R}`,ue=(q=>(q.USER="us",q.GROUP="gr",q.WORKSPACE="workspace",q.CONFIG="config",q.TEMPLATE="template",q.APP="app",q.DEV="dev",q.APP_DEV="app_dev",q.APP_METADATA="app_metadata",q.ROLE="role",q.DEV_INFO="devinfo",q.AUTOMATION_LOG="log_au",q.ACCOUNT_METADATA="acc_metadata",q.PLUGIN="plg",q.DATASOURCE="datasource",q.DATASOURCE_PLUS="datasource_plus",q.APP_BACKUP="backup",q.TABLE="ta",q.ROW="ro",q.AUTOMATION="au",q.LINK="li",q.WEBHOOK="wh",q.INSTANCE="inst",q.LAYOUT="layout",q.SCREEN="screen",q.QUERY="query",q.DEPLOYMENTS="deployments",q.METADATA="metadata",q.MEM_VIEW="view",q.USER_FLAG="flag",q.AUTOMATION_METADATA="meta_au",q.AUDIT_LOG="al",q.SCIM_LOG="scimlog",q.ROW_ACTIONS="ra",q.OAUTH2_CONFIG="oauth2",q.OAUTH2_CONFIG_LOG="oauth2log",q.AGENT_CHAT="agentchat",q.AGENT_TOOL_SOURCE="agenttoolsource",q.WORKSPACE_APP="workspace_app",q.WORKSPACE_FAVOURITE="workspace_favourite",q))(ue||{});var Rt=(e=>(e.USER_METADATA="ta_users",e))(Rt||{});var Sc=(l=>(l.OBJECT="object",l.STRING="string",l.BOOLEAN="boolean",l.NUMBER="number",l.ARRAY="array",l.JSON="json",l.DATE="date",l.DATETIME="datetime",l.ATTACHMENT="attachment",l.LONGFORM="longform",l))(Sc||{}),Ac=(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))(Ac||{}),_c=(a=>(a.ROW_SAVED="ROW_SAVED",a.ROW_UPDATED="ROW_UPDATED",a.ROW_DELETED="ROW_DELETED",a.WEBHOOK="WEBHOOK",a.APP="APP",a.CRON="CRON",a.ROW_ACTION="ROW_ACTION",a))(_c||{});var Ic=(O=>(O.SEND_EMAIL_SMTP="SEND_EMAIL_SMTP",O.CREATE_ROW="CREATE_ROW",O.UPDATE_ROW="UPDATE_ROW",O.DELETE_ROW="DELETE_ROW",O.EXECUTE_BASH="EXECUTE_BASH",O.OUTGOING_WEBHOOK="OUTGOING_WEBHOOK",O.EXECUTE_SCRIPT="EXECUTE_SCRIPT",O.EXECUTE_SCRIPT_V2="EXECUTE_SCRIPT_V2",O.EXECUTE_QUERY="EXECUTE_QUERY",O.SERVER_LOG="SERVER_LOG",O.DELAY="DELAY",O.FILTER="FILTER",O.API_REQUEST="API_REQUEST",O.QUERY_ROWS="QUERY_ROWS",O.LOOP="LOOP",O.COLLECT="COLLECT",O.OPENAI="OPENAI",O.TRIGGER_AUTOMATION_RUN="TRIGGER_AUTOMATION_RUN",O.BRANCH="BRANCH",O.CLASSIFY_CONTENT="CLASSIFY_CONTENT",O.PROMPT_LLM="PROMPT_LLM",O.TRANSLATE="TRANSLATE",O.SUMMARISE="SUMMARISE",O.GENERATE_TEXT="GENERATE_TEXT",O.EXTRACT_FILE_DATA="EXTRACT_FILE_DATA",O.EXTRACT_STATE="EXTRACT_STATE",O.LOOP_V2="LOOP_V2",O.discord="discord",O.slack="slack",O.zapier="zapier",O.integromat="integromat",O.n8n="n8n",O))(Ic||{}),Cm=[...Object.values(Ic),...Object.values(_c)];function xm(t){return t.stepId==="BRANCH"}var Oc="bb_internal";var vm=["attachment_single","attachment","signature_single","bb_reference","json","array"];function Bo(t){return!!t.providerType}var _d={};P(_d,{AutomationViewMode:()=>Pa,BUDIBASE_DATASOURCE_TYPE:()=>hd,Config:()=>Ad,Cookie:()=>Jr,DEFAULT_BB_DATASOURCE_ID:()=>On,DEFAULT_EMPLOYEE_TABLE_ID:()=>Td,DEFAULT_EXPENSES_TABLE_ID:()=>yd,DEFAULT_INVENTORY_TABLE_ID:()=>gd,DEFAULT_JOBS_TABLE_ID:()=>Ed,DEFAULT_TENANT_ID:()=>oe,DeprecatedViews:()=>Vn,DesignDocuments:()=>ms,DocumentType:()=>ue,GlobalRole:()=>Sd,Header:()=>Le,InternalTable:()=>Rt,MAX_VALID_DATE:()=>La,MIN_VALID_DATE:()=>py,SEPARATOR:()=>R,SQLITE_DESIGN_DOC_ID:()=>It,SQS_DATASOURCE_INTERNAL:()=>md,StaticDatabases:()=>de,UNICODE_MAX:()=>De,USER_METADATA_PREFIX:()=>ps,UserStatus:()=>Ua,ViewName:()=>ur,WORKSPACE_DEV:()=>Na,WORKSPACE_DEV_PREFIX:()=>Je,WORKSPACE_PREFIX:()=>ze});var Le=(A=>(A.API_KEY="x-budibase-api-key",A.LICENSE_KEY="x-budibase-license-key",A.API_VER="x-budibase-api-version",A.APP_ID="x-budibase-app-id",A.SESSION_ID="x-budibase-session-id",A.CLIENT="x-budibase-client",A.TYPE="x-budibase-type",A.PREVIEW_ROLE="x-budibase-role",A.TENANT_ID="x-budibase-tenant-id",A.VERIFICATION_CODE="x-budibase-verification-code",A.RETURN_VERIFICATION_CODE="x-budibase-return-verification-code",A.RESET_PASSWORD_CODE="x-budibase-reset-password-code",A.RETURN_RESET_PASSWORD_CODE="x-budibase-return-reset-password-code",A.TOKEN="x-budibase-token",A.CSRF_TOKEN="x-csrf-token",A.CORRELATION_ID="x-budibase-correlation-id",A.AUTHORIZATION="authorization",A.MIGRATING_APP="x-budibase-migrating-app",A.COOKIE="cookie",A))(Le||{});var ke={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"}},Pm={integer:{max:2147483647,min:-2147483648},int:{max:2147483647,min:-2147483648},smallint:{max:32767,min:-32768},mediumint:{max:8388607,min:-8388608}};var On="datasource_internal_bb_default";var ar={};P(ar,{ColumnSplitter:()=>ed,NoEmptyFilterStrings:()=>uy,buildQuery:()=>cy,cleanupQuery:()=>nd,fixupFilterArrays:()=>sd,getKeyNumbering:()=>id,getValidOperatorsForType:()=>QR,hasFilters:()=>td,limit:()=>dy,recurseLogicalOperators:()=>rd,removeKeyNumbering:()=>$o,runQuery:()=>Da,search:()=>YR,sort:()=>ly,splitFiltersArray:()=>Wo});var Wn=M(Nm());var Xt={};P(Xt,{filterValueToLabel:()=>D_,hasSchema:()=>R_,isSupportedUserSearch:()=>km,parallelForeach:()=>w_,processSearchFilters:()=>Rc,toMap:()=>C_,trimOtherProps:()=>b_,unreachable:()=>O_});var Lm=M(require("lodash/pick")),I_=["field","operator","value","type","externalType","valueType","noValue","formulaType"];function O_(t,e){let r=e?.message||`No such case in exhaustive switch: ${t}`;if(!!!e?.doNotThrow)throw new Error(r)}async function w_(t,e,r){let n=[],i=Symbol.asyncIterator in t,s=i?t[Symbol.asyncIterator]():t[Symbol.iterator](),o=async()=>{let a=await(i?s.next():Promise.resolve(s.next()));for(;!a.done;)await e(a.value),a=await(i?s.next():Promise.resolve(s.next()))};for(let a=0;a<r;a++)n.push(o());await Promise.all(n)}function D_(){return Object.keys(ke).reduce((t,e)=>{let n=ke[e];return t[n.value]=n.label,t},{})}function R_(t){return typeof t=="object"&&!Array.isArray(t)&&t!==null&&!(t instanceof Date)&&Object.keys(t).length>0}function b_(t,e){return Object.keys(t).filter(n=>e.includes(n)).reduce((n,i)=>({...n,[i]:t[i]}),{})}function km(t){let e=[{op:"string",key:"email"},{op:"equal",key:"_id"},{op:"oneOf",key:"_id"}],{allOr:r,onEmptyFilter:n,...i}=t;for(let[s,o]of Object.entries(i)){if(typeof o!="object")return!1;if(Uo(s)){for(let c of t[s].conditions)if(!km(c))return!1;return!0}let a=Object.keys(o||{});if(a.length===0)continue;if(!e.find(c=>c.op===s&&a.length===1&&a[0]===c.key))return!1}return!0}function Rc(t){if(!t||t.length===0)return;let{allOr:e,onEmptyFilter:r,filters:n}=Wo(t);return{logicalOperator:"all",onEmptyFilter:r||"all",groups:[{logicalOperator:e?"any":"all",filters:n.map(i=>{let s=(0,Lm.default)(i,I_);return s.field=$o(s.field),s})}]}}function C_(t,e){return e.reduce((r,n)=>(r[n[t]]=n,r),{})}var Pe={};P(Pe,{cancelableTimeout:()=>Mm,cron:()=>WR,deepGet:()=>bc,duplicateName:()=>BR,getSequentialName:()=>$R,getUserColor:()=>v_,getUserInitials:()=>x_,getUserLabel:()=>P_,isGoogleSheets:()=>U_,isSQL:()=>L_,lists:()=>Zl,retry:()=>k_,roles:()=>Jl,schema:()=>ls,views:()=>zl,wait:()=>Cc,withTimeout:()=>N_});var bc=(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},x_=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"},v_=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%)`},P_=t=>{if(!t)return"";let{firstName:e,lastName:r,email:n}=t;return e&&r?`${e} ${r}`:e||r||n};function Mm(t){let e;return[new Promise((r,n)=>{e=setTimeout(()=>{n({status:301,errno:"ETIME"})},t)}),()=>{clearTimeout(e)}]}async function N_(t,e){let[r,n]=Mm(t),i=await Promise.race([e(),r]);return n(),i}function U_(t){return t==="GOOGLE_SHEETS"}function L_(t){return!t||!t.source?!1:["POSTGRES","SQL_SERVER","MYSQL","ORACLE"].indexOf(t.source)!==-1||t.isSQL===!0}async function Cc(t){return new Promise(e=>setTimeout(e,t))}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 s=1.5**i*1e3*(Math.random()+.5);await Cc(s);try{return await t()}catch(o){n=o}}throw n}var ty=M(Tt()),ry=M(Xg()),ey="(Input cron: ",OR={"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 wR(t){let e=[];for(let r of t){r.includes(ey)&&(r=r.split(ey)[0].trim());for(let[n,i]of Object.entries(OR))r.includes(n)&&(r=r.replace(new RegExp(n,"g"),i));e.push(r)}return e}function ny(t,e=4){let r=ry.default.parseExpression(t),n=[];for(let i=0;i<e;i++)n.push(r.next().toString());return n}function iy(t){let e=(0,ty.default)(t,{preset:"npm-cron-schedule",override:{useSeconds:!1}});return e.isValid()?{valid:!0}:{valid:!1,err:wR(e.getError())}}var ls={};P(ls,{decodeNonAscii:()=>Yl,encodeNonAscii:()=>bR,isDeprecatedSingleUserColumn:()=>DR,isNumeric:()=>CR,isRequired:()=>RR});function DR(t){return t.type==="bb_reference"&&t.subtype==="user"&&t.constraints?.type!=="array"}function RR(t){return!!t&&(typeof t.presence!="boolean"&&t.presence?.allowEmpty===!1||t.presence===!0)}function bR(t){return t.split("").map(e=>e.charCodeAt(0)>127?"\\u"+e.charCodeAt(0).toString(16).padStart(4,"0"):e).join("")}function Yl(t){return t.replace(/\\u([0-9a-fA-F]{4})/g,(e,r)=>String.fromCharCode(parseInt(r,16)))}function CR(t){return t.type==="number"||t.type==="bigint"}var zl={};P(zl,{basicFields:()=>UR,calculationFields:()=>NR,hasCalculationFields:()=>PR,isBasicViewField:()=>xR,isCalculationField:()=>ds,isCalculationView:()=>vR,isV2:()=>LR,isVisible:()=>sy});var Hl=M(require("lodash/pickBy"));function ds(t){return"calculationType"in t}function xR(t){return!ds(t)}function vR(t){return t.type==="calculation"}function PR(t){return Object.values(t.schema||{}).some(ds)}function NR(t){return(0,Hl.default)(t.schema||{},ds)}function sy(t){return t.visible!==!1}function UR(t,e){let{visible:r=!0}=e||{};return(0,Hl.default)(t.schema||{},n=>!ds(n)&&(!r||sy(n)))}function LR(t){return t.version===2}var Jl={};P(Jl,{checkForRoleInheritanceLoops:()=>MR});function kR(t){return`role${R}${t}`}function MR(t){let e=new Map;t.forEach(s=>{e.set(s._id,s)});let r=new Set,n=new Set;function i(s){let o=kR(s);if(n.has(s)||n.has(o))return!0;if(r.has(s)||r.has(o))return!1;n.add(s);let a=e.get(o)||e.get(s);if(!a)return n.delete(s),!1;let u=Array.isArray(a.inherits)?a.inherits:[a.inherits];for(let c of u)if(c&&i(c))return!0;return n.delete(s),r.add(s),!1}return!!t.find(s=>i(s._id))}var Zl={};P(Zl,{punctuateList:()=>FR});function FR(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]}var BR=(t,e)=>{let r=new RegExp("\\s(\\d+)$"),n=t.split(r)[0],i=new RegExp(`${n}\\s(\\d+)$`),s=[];e.filter(a=>{if(a===n)return!0;let u=a.match(i);return u?(s.push(parseInt(u[1])),!0):!1}),s.sort((a,u)=>a-u);let o;if(s.length===0)o=1;else{for(let a=0;a<s.length;a++)if(s[a]!==a+1){o=a+1;break}o||(o=s.length+1)}return`${n} ${o}`},$R=(t,e,{getName:r,numberFirstItem:n,separator:i=""}={})=>{if(!e?.length)return"";let s=e.trim(),o=n?`${e}1`:s;if(!t?.length)return o;let a=0;return t.forEach(u=>{let c=r?.(u)??u;if(typeof c!="string"||!c.startsWith(s))return;let l=c.split(s);if(l.length!==2)return;l[1].trim()===""&&(l[1]="1");let d=parseInt(l[1]);d>a&&(a=d)}),a===0?o:`${e}${i}${a+1}`};var WR={getNextExecutionDates:ny,validate:iy};var wa=M(require("lodash/isPlainObject")),Xl=M(require("lodash/isEmpty"));var GR=/{{([^{].*?)}}/g,ay=Object.values(Si),qR=[...Object.values(Nr),...Object.values(Jt),...Object.values(In)],QR=(t,e,r)=>{let n=ke,i=[n.Equals,n.NotEquals,n.StartsWith,n.Like,n.Empty,n.NotEmpty,n.In],s=[n.Equals,n.NotEquals,n.MoreThan,n.LessThan,n.Empty,n.NotEmpty,n.In],o=[n.Contains,n.NotContains,n.ContainsAny,n.Empty,n.NotEmpty],a=[],{type:u,formulaType:c,subtype:l}=t;u==="string"?l==="array"?a=o:a=i:u==="number"||u==="bigint"?a=s:u==="options"?a=[n.Equals,n.NotEquals,n.Empty,n.NotEmpty,n.In]:u==="array"?a=o:u==="boolean"?a=[n.Equals,n.NotEquals,n.Empty,n.NotEmpty]:u==="longform"?a=i:u==="datetime"?a=s:u==="formula"&&c==="static"?a=i.concat([n.MoreThan,n.LessThan]):u==="ai"?a=i.concat([n.MoreThan,n.LessThan]):u==="bb_reference_single"||ls.isDeprecatedSingleUserColumn(t)?a=[n.Equals,n.NotEquals,n.Empty,n.NotEmpty,n.In]:u==="bb_reference"?a=o:u==="barcodeqr"&&(a=i);let d=r?.tableId?.includes("datasource_plus");return e==="_id"&&d&&(a=[n.Equals,n.NotEquals,n.In]),a},uy=[ke.StartsWith.value,ke.Like.value,ke.Equals.value,ke.NotEquals.value,ke.Contains.value,ke.NotContains.value,ke.ContainsAny.value,ke.In.value];function rd(t,e){for(let r of ay)t[r]&&(t[r].conditions=t[r].conditions.map(n=>e(n)));return t}var nd=t=>{for(let e of uy)if(t[e])for(let r of Object.keys(t)){if(r!==e)continue;if(typeof t[r]=="object")for(let[i,s]of Object.entries(t[r]))(s==null||s===""||KR(s))&&delete t[e][i]}return t=rd(t,nd),t};function KR(t){return Array.isArray(t)&&t.length===0}var $o=t=>id(t).key,id=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}},ed=class{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}=id(e),i;if(this.aliases)for(let o of Object.keys(this.aliases||{})){let a=`${o}.`;n.startsWith(a)&&(i=this.aliases[o],n=n.slice(a.length))}let s;for(let o of this.relationships){let a=`${o}.`;if(n.startsWith(a)){let u=n.split(a);u.shift(),s=a,n=u.join(".");break}}return this.columnPrefix&&n.startsWith(this.columnPrefix)&&(n=Yl(n.slice(this.columnPrefix.length))),{tableName:i,numberPrefix:r,relationshipPrefix:s,column:n}}};function jR(t){if(!t||!t?.operator||!t?.field)return;let e={},{operator:r,field:n,type:i,externalType:s}=t,{value:o}=t;(r==="empty"||r==="notEmpty")&&(o=null);let a=typeof o=="string"&&(o.match(GR)||[]).length>0;switch(i){case"datetime":if(!a&&r!=="empty"&&r!=="notEmpty"){if(!o)return;if(typeof o=="string")o=new Date(o).toISOString();else if(Lo(r))return e[r]??={},e[r][n]=o,e}break;case"number":typeof o=="string"&&!a&&(r==="oneOf"?o=o.split(",").map(parseFloat):o=parseFloat(o));break;case"boolean":o=`${o}`.toLowerCase()==="true";break;case"array":["contains","notContains","containsAny"].includes(r.toLocaleString())&&typeof o=="string"&&(o=o.split(","));break}if(Lo(r)){let c=Pm[s]||{min:Number.MIN_SAFE_INTEGER,max:Number.MAX_SAFE_INTEGER};e[r]??={},e[r][n]={low:i==="number"?c.min:"0000-00-00T00:00:00.000Z",high:i==="number"?c.max:"9999-00-00T00:00:00.000Z"}}else if(r==="rangeHigh"&&o!=null&&o!=="")e.range??={},e.range[n]={...e.range[n],high:o};else if(r==="rangeLow"&&o!=null&&o!=="")e.range??={},e.range[n]={...e.range[n],low:o};else if(wm(r)||Dm(r)||Lo(r))i==="boolean"?r==="equal"&&o===!1?(e.notEqual=e.notEqual||{},e.notEqual[n]=!0):r==="notEqual"&&o===!1?(e.equal=e.equal||{},e.equal[n]=!0):(e[r]??={},e[r][n]=o):(e[r]??={},e[r][n]=o);else throw new Error(`Unsupported operator: ${r}`);return e}function Wo(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}function cy(t){if(!t)return{};if(Array.isArray(t)&&(t=Rc(t),!t))return{};let e={};t.onEmptyFilter?e.onEmptyFilter=t.onEmptyFilter:e.onEmptyFilter="all";let r=oy(t.logicalOperator||"all");return e[r]={conditions:(t.groups||[]).map(n=>{if(n.groups){let u=cy(n);return delete u.onEmptyFilter,u}let{allOr:i,onEmptyFilter:s,filters:o}=Wo(n.filters||[]);s&&(e.onEmptyFilter=s);let a=i?"$or":"$and";return n.logicalOperator&&(a=oy(n.logicalOperator)),{[a]:{conditions:o.map(jR).filter(u=>u)}}})},e}function oy(t){return t==="all"?"$and":"$or"}function sd(t){if(!t)return t;for(let e of Object.values(Jt)){let r=t[e];if(!(r==null||!(0,wa.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(s=>s.trim()):r[n]=[i]}}return rd(t,sd),t}function YR(t,e){let r=Da(t,e.query);e.sort&&(r=ly(r,e.sort,e.sortOrder||"ascending",e.sortType));let n=r.length;e.limit&&(r=dy(r,e.limit.toString()));let i={rows:r};return e.countRows&&(i.totalRows=n),i}function Da(t,e){if(!t||!Array.isArray(t))return[];if(!e)return t;if(e=nd(e),e=sd(e),!td(e)&&e.onEmptyFilter==="none")return[];let r=(y,I)=>k=>{for(let[v,L]of Object.entries(e[y]||{})){let j=Uo(y)?k:bc(k,$o(v)),Dt=I(j,L);if(e.allOr&&Dt)return!0;if(!e.allOr&&!Dt)return!1}return!e.allOr},n=r("string",(y,I)=>typeof y!="string"||typeof I!="string"?!1:y.toLowerCase().startsWith(I.toLowerCase())),i=r("fuzzy",(y,I)=>typeof y!="string"||typeof I!="string"?!1:y.toLowerCase().includes(I.toLowerCase())),s=r("range",(y,I)=>{if(y==null||y===""||((0,wa.default)(I.low)&&(0,Xl.default)(I.low)&&(I.low=void 0),(0,wa.default)(I.high)&&(0,Xl.default)(I.high)&&(I.high=void 0),I.low==null&&I.high==null))return!1;let k=+y;if(!isNaN(k)){let L=+I.low,j=+I.high;if(!isNaN(L)&&!isNaN(j))return k>=L&&k<=j;if(isNaN(L)){if(!isNaN(j))return k<=j}else return k>=L}let v=(0,Wn.default)(y);if(v.isValid()){let L=(0,Wn.default)(I.low||"0000-00-00T00:00:00.000Z"),j=(0,Wn.default)(I.high||"9999-00-00T00:00:00.000Z");if(L.isValid()&&j.isValid())return v.isAfter(L)&&v.isBefore(j)||v.isSame(L)||v.isSame(j);if(L.isValid())return v.isAfter(L)||v.isSame(L);if(j.isValid())return v.isBefore(j)||v.isSame(j)}return I.low!=null&&I.high!=null?y>=I.low&&y<=I.high:I.low!=null?y>=I.low:I.high!=null?y<=I.high:!1}),o=(y,I)=>{if(Array.isArray(y)){for(let v of y)if(o(v,I))return!0;return!1}if(y&&typeof y=="object"&&typeof I=="string")return y._id===I;if(y===I)return!0;if(y==null&&I!=null||y!=null&&I==null)return!1;let k=(0,Wn.default)(y);if(k.isValid()){let v=(0,Wn.default)(I);if(v.isValid())return k.isSame(v)}return!1},a=y=>(...I)=>!y(...I),u=r("equal",o),c=r("notEqual",a(o)),l=y=>typeof y=="string"?y==="":Array.isArray(y)?y.length===0:y&&typeof y=="object"?Object.keys(y).length===0:y==null,d=r("empty",l),f=r("notEmpty",a(l)),m=r("oneOf",(y,I)=>(typeof I=="string"&&(I=I.split(",")),typeof y=="number"&&(I=I.map(k=>parseFloat(k))),Array.isArray(I)?I.some(k=>o(y,k)):!1)),p=y=>(I,k)=>!Array.isArray(I)||(typeof k=="string"&&(k=k.split(","),typeof I[0]=="number"&&(k=k.map(v=>parseFloat(v)))),!Array.isArray(k))?!1:k.length===0?!0:k[y](v=>o(I,v)),E=r("contains",(y,I)=>Array.isArray(I)&&I.length===0?!0:p("every")(y,I)),g=r("notContains",(y,I)=>Array.isArray(I)&&I.length===0?!0:a(p("every"))(y,I)),T=r("containsAny",p("some")),_=r("$and",(y,I)=>{if(!I.length)return!1;for(let k of I)if(!Da([y],k).length)return!1;return!0}),A=r("$or",(y,I)=>{if(!I.length)return!1;for(let k of I)if(Da([y],{...k,allOr:!0}).length)return!0;return!1}),w=y=>{let I={string:n,fuzzy:i,range:s,equal:u,notEqual:c,empty:d,notEmpty:f,oneOf:m,contains:E,containsAny:T,notContains:g,$and:_,$or:A},k=Object.entries(e||{}).filter(([v,L])=>!["allOr","onEmptyFilter"].includes(v)&&L&&Object.keys(L).length>0).map(([v])=>I[v]?.(y)??!1);return td(e)?e.allOr?k.some(v=>v===!0):k.every(v=>v===!0):!0};return t.filter(w)}function ly(t,e,r,n="string"){if(!e||!r||!n)return t;let i=s=>s==null?s:n==="string"?`${s}`:parseFloat(s);return t.slice().sort((s,o)=>{let a=i(s[e]),u=i(o[e]),c=u==null||a>u?1:-1;return r.toLowerCase()==="descending"?c*-1:c})}function dy(t,e){let r=typeof e=="number"?e:parseFloat(e);return isNaN(r)?t:t.slice(0,r)}var td=t=>{if(!t)return!1;let e=r=>{for(let n of ay)if(r[n])for(let i of r[n]?.conditions||[]){let s=e(i);if(s)return s}for(let n of qR){let i=r[n];if(!i||typeof i!="object")continue;if(Object.entries(i).filter(o=>{let a=o[1]!==void 0||o[1]!==null||o[1]!=="";return n==="notEmpty"||a}).length!==0)return!0}return!1};return e(t)};var Ve={};P(Ve,{applications:()=>ad,automations:()=>ud,screens:()=>pd,users:()=>fd});var ad={};P(ad,{getDevAppID:()=>HR,getProdAppID:()=>Ra});var od=Zt("app"),fs=Zt("app_dev");function HR(t){if(!t)throw new Error("No app ID provided");if(t.startsWith(fs))return t;let e=t.split(od);e.shift();let r=e.join(od);return`${fs}${r}`}function Ra(t){if(!t)throw new Error("No app ID provided");if(!t.startsWith(fs))return t;let e=t.split(fs);e.shift();let r=e.join(fs);return`${od}${r}`}var ud={};P(ud,{checkForCollectStep:()=>XR,isAppAction:()=>ZR,isRowAction:()=>zR,isWebhookAction:()=>JR});function zR(t){return t.definition.trigger?.stepId==="ROW_ACTION"}function JR(t){return t.definition.trigger?.stepId==="WEBHOOK"}function ZR(t){return t.definition.trigger?.stepId==="APP"}function fy(t){if(!t||!Array.isArray(t))return!1;for(let e of t){if(e.stepId==="COLLECT")return!0;if(xm(e)&&e.inputs.children){for(let r of Object.values(e.inputs.children))if(fy(r))return!0}}return!1}function XR(t){return fy(t.definition.steps)}var fd={};P(fd,{canCreateApps:()=>eb,containsUserID:()=>ab,getGlobalUserID:()=>ob,getUserAppGroups:()=>ub,getUserGroups:()=>dd,hasAdminPermissions:()=>ld,hasAppBuilderPermissions:()=>xa,hasBuilderPermissions:()=>ib,hasCreatorPermissions:()=>va,isAdmin:()=>Ca,isAdminOrBuilder:()=>tb,isAdminOrGlobalBuilder:()=>rb,isBuilder:()=>cd,isCreator:()=>sb,isGlobalBuilder:()=>ba,userAppAccessList:()=>cb});function cd(t,e){return t?t.builder?.global?!0:!!(e&&t.builder?.apps?.includes(Ra(e))):!1}function ba(t){return cd(t)&&!xa(t)||Ca(t)}function eb(t){return ba(t)||va(t)}function Ca(t){return t?ld(t):!1}function tb(t,e){return cd(t,e)||Ca(t)}function rb(t){return ba(t)||Ca(t)}function xa(t){if(!t)return!1;let e=t.builder?.apps?.length;return!!!t.builder?.global&&e!=null&&e>0}function nb(t){return t?!!Object.values(t.roles??{}).find(e=>e==="CREATOR"):!1}function ib(t){return t?t.builder?.global||xa(t)||va(t):!1}function ld(t){return t?!!t.admin?.global:!1}function va(t){return t?!!t.builder?.creator:!1}function sb(t){return t?ba(t)||ld(t)||va(t)||xa(t)||nb(t):!1}function ob(t){if(typeof t!="string")return t;let e=`ro${R}ta_users${R}`;return t.startsWith(e)?t.split(e)[1]:t}function ab(t){return typeof t!="string"?!1:t.includes(`us${R}`)}function dd(t,e){return e?.filter(r=>r.users?.find(n=>n._id===t._id))||[]}function ub(t,e,r){let n=Ra(t);return dd(e,r).filter(s=>Object.keys(s.roles||{}).find(o=>o===n))}function cb(t,e){let n=dd(t,e).flatMap(s=>Object.keys(s.roles||{})),i=[...Object.keys(t?.roles||{}),...n];return[...new Set(i)]}var pd={};P(pd,{findInSettings:()=>lb});function lb(t,e){let r=[];function n(i,s=""){for(let[o,a]of Object.entries(i))a&&(typeof a=="string"&&a.includes(e)?r.push({setting:s?`${s}.${o}`:o,value:a}):typeof a=="object"&&n(a,o))}return n(t.props),r}var Pa=(n=>(n.ALL="all",n.AUTOMATION="automation",n.STATUS="status",n))(Pa||{}),ur=(l=>(l.USER_BY_WORKSPACE="by_app",l.USER_BY_EMAIL="by_email2",l.BY_API_KEY="by_api_key",l.LINK="by_link",l.ROUTING="screen_routes_2",l.AUTOMATION_LOGS="automation_logs",l.ACCOUNT_BY_EMAIL="account_by_email",l.PLATFORM_USERS_LOWERCASE="platform_users_lowercase_2",l.USER_BY_GROUP="user_by_group",l.WORKSPACE_BACKUP_BY_TRIGGER="by_trigger",l))(ur||{}),Vn={by_email2:["by_email"]},de={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"}},ze=Zt("app"),Na=Zt("app_dev"),Je=Na,md="internal",hd="budibase",It="_design/sqlite",Ed="ta_bb_jobs",gd="ta_bb_inventory",yd="ta_bb_expenses",Td="ta_bb_employee",ps=`ro${R}ta_users${R}`,ms=(r=>(r[r.SQLITE=It]="SQLITE",r.MIGRATIONS="_design/migrations",r))(ms||{});var Ua=(r=>(r.ACTIVE="active",r.INACTIVE="inactive",r))(Ua||{}),Jr=(a=>(a.Auth="budibase:auth",a.Init="budibase:init",a.ACCOUNT_RETURN_URL="budibase:account:returnurl",a.DatasourceAuth="budibase:datasourceauth",a.OIDC_CONFIG="budibase:oidc:config",a.FeatureFlags="budibase:featureflags",a.RecaptchaSession="budibase:recaptcha",a))(Jr||{}),Sd=(i=>(i.OWNER="owner",i.ADMIN="admin",i.BUILDER="builder",i.WORKSPACE_MANAGER="workspace_manager",i))(Sd||{}),Ad=(u=>(u.SETTINGS="settings",u.ACCOUNT="account",u.SMTP="smtp",u.GOOGLE="google",u.OIDC="oidc",u.OIDC_LOGOS="logos_oidc",u.SCIM="scim",u.AI="AI",u))(Ad||{}),py=new Date(-2147483647e3),La=new Date(2147483647e3),oe="default";var To={};P(To,{CacheKey:()=>Ee,TTL:()=>dn,bustCache:()=>ni,destroy:()=>eo,docWritethrough:()=>Yf,generic:()=>to,get:()=>fn,invite:()=>zf,keys:()=>yu,passwordReset:()=>Jf,store:()=>Vt,user:()=>Dr,withCache:()=>Ar,withCacheWithDynamicTTL:()=>sS,workspace:()=>Us,writethrough:()=>Rp});var Yf={};P(Yf,{DocWritethrough:()=>jf,DocWritethroughProcessor:()=>Xs,getProcessor:()=>Lx,init:()=>iS});var Kf={};P(Kf,{BudibaseQueue:()=>mt,InMemoryQueue:()=>su,JobQueue:()=>Xn,QueuedProcessor:()=>Qf,UnretriableError:()=>Eu,shutdown:()=>tx});var Id=require("crypto"),Ma=require("fs"),Ey=require("lodash"),hs=require("path"),db=process.env.TOP_LEVEL_PATH||process.env.SERVER_TOP_LEVEL_PATH||(0,hs.resolve)((0,hs.join)(__dirname,"..","..","..")),my=!1;!my&&ka()&&!Od()&&(require("dotenv").config({path:(0,hs.join)(db,".env")}),my=!0);function Od(){return gy()}function gy(){return process.env.NODE_ENV==="jest"||process.env.JEST_WORKER_ID!=null&&process.env.JEST_WORKER_ID!=="null"}function ka(){return process.env.NODE_ENV!=="production"}function fb(t){if(t)return parseInt(t)}var Gn={BACKUPS:"backups",APPS:"prod-budi-app-assets",TEMPLATES:"templates",GLOBAL:"global",PLUGINS:"plugins",TEMP:"tmp-file-attachments"},hy=!!parseInt(process.env.SELF_HOSTED||"");function pb(){return process.env.API_ENCRYPTION_KEY?process.env.API_ENCRYPTION_KEY:process.env.JWT_SECRET}function mb(){return process.env.HTTP_LOGGING===void 0?!0:process.env.HTTP_LOGGING}function hb(){function t(r){function n(a,u){let c=`${u}/${a}`;if((0,Ma.existsSync)(c))return c;let l=`${u}/..`;return l===u?null:n(a,l)}let i=n(r,process.cwd()),s=(0,Ma.readFileSync)(i,"utf-8");return JSON.parse(s)}let e;if(ka()&&!Od())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:""}}}function Eb(){return ct.SERVICE_TYPE==="worker"}function gb(){return ct.SERVICE_TYPE==="apps"}function yb(){return ct.BUDIBASE_ENVIRONMENT==="QA"}function Tb(){return process.env.SERVICE?process.env.SERVICE:process.env.APPS_SERVICE?process.env.APPS_SERVICE:process.env.WORKER_SERVICE?process.env.WORKER_SERVICE:"budibase"}var ct={isTest:Od,isJest:gy,isDev:ka,isWorker:Eb,isApps:gb,isQA:yb,isProd:()=>!ka(),BUDIBASE_ENVIRONMENT:process.env.BUDIBASE_ENVIRONMENT,JS_BCRYPT:process.env.JS_BCRYPT,JWT_SECRET:process.env.JWT_SECRET?(0,Id.createSecretKey)(process.env.JWT_SECRET,"utf8"):void 0,JWT_SECRET_FALLBACK:process.env.JWT_SECRET_FALLBACK?(0,Id.createSecretKey)(process.env.JWT_SECRET_FALLBACK,"utf8"):void 0,ENCRYPTION_KEY:process.env.ENCRYPTION_KEY,API_ENCRYPTION_KEY:pb(),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:hy,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||Gn.BACKUPS,APPS_BUCKET_NAME:process.env.APPS_BUCKET_NAME||Gn.APPS,TEMPLATES_BUCKET_NAME:process.env.TEMPLATES_BUCKET_NAME||Gn.TEMPLATES,GLOBAL_BUCKET_NAME:process.env.GLOBAL_BUCKET_NAME||Gn.GLOBAL,PLUGIN_BUCKET_NAME:process.env.PLUGIN_BUCKET_NAME||Gn.PLUGINS,TEMP_BUCKET_NAME:process.env.TEMP_BUCKET_NAME||Gn.TEMP,USE_COUCH:process.env.USE_COUCH||!0,MOCK_REDIS:process.env.MOCK_REDIS,DEFAULT_LICENSE:process.env.DEFAULT_LICENSE,SERVICE:Tb(),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:mb(),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:hy?process.env.ENABLE_SSO_MAINTENANCE_MODE:!1,...hb(),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,ct[t]=e},ROLLING_LOG_MAX_SIZE:process.env.ROLLING_LOG_MAX_SIZE||"10M",DISABLE_SCIM_CALLS:process.env.DISABLE_SCIM_CALLS,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:fb(process.env.BSON_BUFFER_SIZE)};function Es(t){let e=(0,Ey.cloneDeep)(ct),r;for(r in t)ct._set(r,t[r]);return()=>{for(let[n,i]of Object.entries(e))ct._set(n,i)}}function yy(t,e){let r=Es(t),n=e();return n instanceof Promise?n.finally(r):(r(),n)}var Ty=["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(ct))e==="0"&&(ct[t]=0),e==="false"&&(ct[t]=0);var h=ct;var $a={};P($a,{Databases:()=>wd,SEPARATOR:()=>qn,SelectableDatabase:()=>Fa,getRedisClusterOptions:()=>Dd,getRedisConnectionDetails:()=>Ba,getRedisOptions:()=>Zr,removeDbPrefix:()=>Rd});var qn="-",wd=(_=>(_.PW_RESETS="pwReset",_.VERIFICATIONS="verification",_.INVITATIONS="invitation",_.DEV_LOCKS="devLocks",_.DEBOUNCE="debounce",_.SESSIONS="session",_.USER_CACHE="users",_.FLAGS="flags",_.WORKSPACE_METADATA="appMetadata",_.QUERY_VARS="queryVars",_.LICENSES="license",_.GENERIC_CACHE="data_cache",_.WRITE_THROUGH="writeThrough",_.LOCKS="locks",_.SOCKET_IO="socket_io",_.BPM_EVENTS="bpmEvents",_.DOC_WRITE_THROUGH="docWriteThrough",_.RECAPTCHA_SESSION="recaptchaSession",_))(wd||{}),Fa=(g=>(g[g.DEFAULT=0]="DEFAULT",g[g.SOCKET_IO=1]="SOCKET_IO",g[g.RATE_LIMITING=2]="RATE_LIMITING",g[g.UNUSED_2=3]="UNUSED_2",g[g.UNUSED_3=4]="UNUSED_3",g[g.UNUSED_4=5]="UNUSED_4",g[g.UNUSED_5=6]="UNUSED_5",g[g.UNUSED_6=7]="UNUSED_6",g[g.UNUSED_7=8]="UNUSED_7",g[g.UNUSED_8=9]="UNUSED_8",g[g.UNUSED_9=10]="UNUSED_9",g[g.UNUSED_10=11]="UNUSED_10",g[g.UNUSED_11=12]="UNUSED_11",g[g.UNUSED_12=13]="UNUSED_12",g[g.UNUSED_13=14]="UNUSED_13",g[g.UNUSED_14=15]="UNUSED_14",g))(Fa||{});function Ba(){let t=h.REDIS_PASSWORD,e=h.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}}function Dd(){return{slotsRefreshTimeout:2e3,dnsLookup:(t,e)=>e(null,t),redisOptions:{...Zr(),tls:{}}}}function Zr(){let{host:t,password:e,port:r}=Ba();return{connectTimeout:3e4,port:r,host:t,password:e}}function Rd(t){let e=t.split(qn);return e.length>=2?(e.shift(),e.join(qn)):e[0]}var OT=M(require("events"));var Zn={};P(Zn,{Duration:()=>me,DurationType:()=>Of,clearCookie:()=>hr,compare:()=>xd,getAppIdFromCtx:()=>$C,getCookie:()=>$t,hasCircularStructure:()=>GC,hash:()=>Cd,isAudited:()=>_f,isClient:()=>VC,isPublicApiRequest:()=>BC,isServingApp:()=>kC,isServingBuilder:()=>MC,isServingBuilderPreview:()=>FC,isValidInternalAPIKey:()=>Vs,newid:()=>re,openJwt:()=>nu,setCookie:()=>IT,time:()=>QC,timeout:()=>Af,urlHasProtocol:()=>qC,validEmail:()=>If});var Sy=require("uuid");function re(){return(0,Sy.v4)().replace(/-/g,"")}var bd=h.JS_BCRYPT?require("bcryptjs"):require("bcrypt"),Sb=h.SALT_ROUNDS||10;async function Cd(t){let e=await bd.genSalt(Sb);return bd.hash(t,e)}async function xd(t,e){return bd.compare(t,e)}var ru=M(require("jsonwebtoken"));var ae={};P(ae,{DEFAULT_TENANT_ID:()=>oe,baseGlobalDBName:()=>Is,doInAutomationContext:()=>qb,doInContext:()=>Yd,doInEnvironmentContext:()=>eC,doInFeatureFlagOverrideContext:()=>tf,doInIPContext:()=>Jd,doInIdentityContext:()=>ys,doInLicenseContext:()=>Kb,doInScimContext:()=>tC,doInSelfHostTenantUsingCloud:()=>Qb,doInTenant:()=>be,doInWorkspaceContext:()=>Hb,doInWorkspaceMigrationContext:()=>Jb,ensureSnippetContext:()=>ky,getAuditLogDBName:()=>Uy,getAuditLogsDB:()=>nC,getAutomationId:()=>Hd,getCurrentContext:()=>tn,getDevWorkspaceDB:()=>sC,getDevWorkspaceId:()=>Zb,getEnvironmentVariables:()=>rC,getFeatureFlagOverrides:()=>ef,getFeatureFlags:()=>Zd,getGlobalDB:()=>Y,getGlobalDBName:()=>en,getIP:()=>zd,getIdentity:()=>Lt,getLicense:()=>jb,getPlatformURL:()=>jd,getProdWorkspaceDB:()=>iC,getProdWorkspaceId:()=>Xb,getScimDBName:()=>$b,getSelfHostCloudDB:()=>Yb,getTableForView:()=>oC,getTenantIDFromWorkspaceID:()=>Yn,getTenantId:()=>W,getWorkspaceDB:()=>Hn,getWorkspaceId:()=>Ae,identity:()=>gs,isMultiTenant:()=>dr,isScim:()=>ft,isSelfHostUsingCloud:()=>Ya,isTenancyEnabled:()=>Vb,isTenantIdSet:()=>Wb,setFeatureFlags:()=>Xd,setTableForView:()=>aC});var gs={};P(gs,{doInAccountContext:()=>Ab,doInIdentityContext:()=>Pd,doInUserContext:()=>Nd,getAccountUserId:()=>Ay,getIdentity:()=>vd});function vd(){return Lt()}function Pd(t,e){return ys(t,e)}function Nd(t,e,r){let n={...t,_id:t._id,type:"user",hostInfo:{ipAddress:e.request.ip,userAgent:e.userAgent.source}};return Pd(n,r)}function Ab(t,e){let r=Ay(t),n=t.tenantId,i={_id:r,type:"user",tenantId:n,account:t};return Pd(i,e)}function Ay(t){let e;return Mo(t)?e=t.budibaseUserId:e=t.accountId,e}var lt=t=>{let e=Ud(t),r,n;if(e.auth?.username)r=e.auth.username;else if(h.COUCH_DB_USERNAME)r=h.COUCH_DB_USERNAME;else if(!h.isTest())throw new Error("CouchDB username not set");if(e.auth?.password)n=e.auth.password;else if(h.COUCH_DB_PASSWORD)n=h.COUCH_DB_PASSWORD;else if(!h.isTest())throw new Error("CouchDB password not set");let i=Buffer.from(`${r}:${n}`).toString("base64"),s=h.COUCH_DB_SQL_URL;if(h.isDev()&&!s)s="http://localhost:4006";else if(!s&&e.url){let o=new URL(e.url);s=e.url.replace(o.port,"4984")}return{url:e.url,sqlUrl:Ud(s).url,auth:{username:r,password:n},cookie:`Basic ${i}`}},Ud=(t=h.COUCH_DB_URL)=>{let e,r,n,i;if(t){/^https?:\/\//i.test(t)||(t=`http://${t}`);let o=t.split("://"),a=o[0],u=o.slice(1).join("://");if(t.includes("@")){let c=u.split("@");i=c[c.length-1];let l=c.slice(0,-1).join("@");if(l.includes(":")){let d=l.split(":");r=d[0],n=d.slice(1).join(":")}else r=l}else i=u;e=`${a}://${i}`}return{url:e,auth:{username:r,password:n}}};var vy=M(require("@budibase/nano"));var _y=M(require("node-fetch"));function Va(t){return t.replace(/(https?:\/\/)|(\/)+/g,"$1$2")}async function Iy(t,e="GET",r){let{url:n,cookie:i}=lt(),s=`${n}/${t}`;return await Ts({url:s,cookie:i,method:e,body:r})}async function Ts({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,_y.default)(Va(encodeURI(t)),i)}async function Ld(t,e="GET",r){let n=await Iy(t,e,r);if(n.status<300)return await n.json();throw"Cannot connect to CouchDB instance"}var Xr=M(require("pouchdb"));var Oy,wy=!1,kd=(t={})=>{let{url:e,cookie:r}=lt(),n={prefix:e,fetch:(i,s)=>(s.headers.set("Authorization",r),Xr.default.fetch(i,s))};if(t.inMemory){let i=require("pouchdb-adapter-memory");Xr.default.plugin(i),n={adapter:"memory"}}if(t.onDisk&&(n={adapter:"leveldb"}),t.replication){let i=require("@budibase/pouchdb-replication-stream");Xr.default.plugin(i.plugin),Xr.default.adapter("writableStream",i.adapters.writableStream)}if(t.find){let i=require("pouchdb-find");Xr.default.plugin(i)}return Xr.default.defaults(n)};function Ga(t){Oy=kd(t),wy=!0}var _b=()=>{if(!wy)throw new Error("init has not been called")};function Ze(t,e){_b();let r=new Oy(t,e),n=r.put;return r.put=async(i,s={})=>(i.createdAt||(i.createdAt=new Date().toISOString()),i.updatedAt=new Date().toISOString(),n(i,s)),r.exists=async()=>!(await r.info()).error,r}async function Ss(t){if(!(!t||h.isTest()))try{return await t.close()}catch{}}var ce=M(require("dd-trace")),Qn=class{constructor(e){this.db=e}get name(){return this.db.name}exists(e){return ce.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 ce.default.trace("db.get",r=>(r.addTags({db_name:this.name,doc_id:e}),this.db.get(e)))}tryGet(e){return ce.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 ce.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 ce.default.trace("db.remove",async n=>{n.addTags({db_name:this.name,doc_id:e,rev:r});let i=typeof e=="object",s=i?e._id:e;r=i?e._rev:r;let o=await this.db.remove(s,r);return n.addTags({ok:o.ok}),o})}bulkRemove(e,r){return ce.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 ce.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 ce.default.trace("db.bulkDocs",r=>(r.addTags({db_name:this.name,num_docs:e.length}),this.db.bulkDocs(e)))}async find(e){return ce.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 ce.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 ce.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 ce.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 ce.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 ce.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 ce.default.trace("db.load",r=>(r.addTags({db_name:this.name,num_args:e.length}),this.db.load(...e)))}createIndex(...e){return ce.default.trace("db.createIndex",r=>(r.addTags({db_name:this.name,num_args:e.length}),this.db.createIndex(...e)))}deleteIndex(...e){return ce.default.trace("db.deleteIndex",r=>(r.addTags({db_name:this.name,num_args:e.length}),this.db.deleteIndex(...e)))}getIndexes(...e){return ce.default.trace("db.getIndexes",r=>(r.addTags({db_name:this.name,num_args:e.length}),this.db.getIndexes(...e)))}sql(e,r){return ce.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 ce.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 ce.default.trace("db.sqlDiskCleanup",e=>(e.addTags({db_name:this.name}),this.db.sqlDiskCleanup()))}};var qd={};P(qd,{breakExternalTableId:()=>Bd,breakRowIdField:()=>Lb,buildExternalTableId:()=>Cb,convertRowId:()=>Ub,encodeTableId:()=>xb,encodeViewId:()=>vb,extractDate:()=>Wd,generateRowIdField:()=>Pb,getNativeSql:()=>Kn,isExternalTable:()=>Fd,isExternalTableID:()=>qa,isInternalTableID:()=>bb,isRowId:()=>Nb,isValidFilter:()=>Ka,isValidISODateString:()=>Qa,isValidISODateStringWithoutTimezone:()=>$d,isValidTime:()=>Vd,sqlLog:()=>As,validateManyToMany:()=>Gd});var Md=`${R}${R}`,Ry=/^\[.*]$/g,Ib=encodeURIComponent(" "),Ob=/^\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}:\d{2}(?:.\d{3})?Z)?$/,wb=/^\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}:\d{2}(?:.\d{3})?)?$/,Db=/(\d{4}-\d{2}-\d{2})/,Rb=/^(?:\d{2}:)?(?:\d{2}:)(?:\d{2})$/;function qa(t){return t.startsWith("datasource"+R)}function bb(t){return!qa(t)}function Kn(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}}function Fd(t){return t?.sourceId&&t.sourceId.includes("datasource"+R)&&t?.sourceId!==On||t?.sourceType==="external"?!0:!!(t?._id&&qa(t._id))}function Cb(t,e){return`${t}${Md}${encodeURIComponent(e)}`}function xb(t){return qa(t)?encodeURIComponent(t):t}function vb(t){return encodeURIComponent(t)}function Bd(t){let e=t.split(Md),r=e.shift(),n=e.join(Md);if(n.includes(Ib)&&(n=decodeURIComponent(n)),!r||!n)throw new Error("Unable to get datasource/table name from table ID");return{datasourceId:r,tableName:n}}function Pb(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,"'"))}function Nb(t){return Array.isArray(t)||typeof t=="string"&&t.match(Ry)!=null}function Ub(t){return Array.isArray(t)?t[0]:typeof t=="string"&&t.match(Ry)!=null?t.substring(1,t.length-1):t}function Lb(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]}}function Qa(t){let e=t.trim();if(!Ob.test(e))return!1;let r=new Date(e);return!isNaN(r.getTime())}function $d(t){let e=t.trim();if(!wb.test(e))return!1;let r=new Date(e);return!isNaN(r.getTime())}function Wd(t){let e=t.match(Db);if(e)return e[0]}function Ka(t){return t!=null&&t!==""}function Vd(t){return Rb.test(t)}function As(t,e,r){if(!h.SQL_LOGGING_ENABLE)return;let n=`[SQL] [${t.toUpperCase()}] query="${e}"`;r&&(n+=` values="${r.join(", ")}"`),console.log(n)}function kb(t){return!!t.through&&!!t.fromPrimary&&!!t.from&&!!t.toPrimary&&!!t.to}function Gd(t){if(kb(t))return t}var by="Database does not exist.";function Cy(t){return(0,vy.default)({url:t.url,requestDefaults:{headers:{Authorization:t.cookie}},parseUrl:!1})}var cr=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"}};function Mb(t,e,r){if(!t||!e)throw new Error("Unable to create database without database name or connection");let n=new jn(t,r,e);return new Qn(n)}var jn=class t{constructor(e,r,n){this.couchInfo=lt();this.name=e,this.pouchOpts=r||{},n&&(this.couchInfo=lt(n),this.instanceNano=Cy(this.couchInfo)),t.nano||t.init()}static init(){let e=lt();t.nano=Cy(e)}exists(e){return e===void 0?this.dbExists():this.docExists(e)}async dbExists(){return(await Ts({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 cr(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===by)return await this.checkAndCreateDb(),await this.performCallWithDBCreation(e);throw new cr(`CouchDB error: ${i.message}`,i)}}async performCall(e){let r=this.getDb(),n=await e(r);try{return await n()}catch(i){throw new cr(`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}),s=u=>n&&u.doc==null||u.value&&"deleted"in u.value&&u.value.deleted?!0:u.error==="not_found",o=i.rows.filter(u=>!s(u)),a=o.length!==i.rows.length;if(!r?.allowMissing&&a){let c=i.rows.filter(l=>s(l)).map(l=>l.key).join(", ");throw new Error(`Unable to get bulk documents: ${c}`)}return o.map(u=>n?u.doc:u.value)}async remove(e,r){return this.performCall(n=>{let i,s;if(Rm(e)?(i=e._id,s=e._rev):(i=e,s=r),!i||!s)throw new Error("Unable to remove doc without a valid _id and _rev.");return()=>n.destroy(i,s)})}async bulkRemove(e,r){let n=await this.performCall(o=>()=>o.bulk({docs:e.map(a=>({...a,_deleted:!0}))}));if(r?.silenceErrors)return;let i=!1,s="Unable to bulk remove documents: ";for(let o of n)o.error&&(i=!0,s+=o.error);if(i)throw new cr(s,{name:this.name,status:400})}async post(e,r){return e._id||(e._id=re()),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===by)return{offset:0,total_rows:0,rows:[]};throw n}})}async _sqlQuery(e,r,n){e=Va(`${this.couchInfo.sqlUrl}/${e}`);let i={url:e,method:r,cookie:this.couchInfo.cookie};return n&&(i.body=n),this.performCall(()=>async()=>{let s=await Ts(i),o=await s.text();if(s.status>300){let a;try{a=JSON.parse(o)}catch{throw console.error(`SQS error: ${o}`),new cr("error while running SQS query, please try again later",{name:"sqs_error",status:s.status})}throw a}return JSON.parse(o)})}async sql(e,r){let i=`/${this.name}/${It}`;return As("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,s]=e.split("/");return()=>n.view(i,s,r)})}async destroy(){if(await this.exists(It)){let e=await this.get(It);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 cr(e.message,e)}}async compact(){return this.performCall(e=>()=>e.compact())}async dump(e,r){return Ze(this.name).dump(e,r)}async load(e){return Ze(this.name).load(e)}async createIndex(e){return Ze(this.name).createIndex(e)}async deleteIndex(e){return Ze(this.name).deleteIndex(e)}async getIndexes(){return Ze(this.name).getIndexes()}};function Re(t,e){return new Qn(new jn(t,e))}async function Ge(t,e,r){let n=Re(t,r);return await e(n)}async function Qd(t){let e="/_all_dbs";return t&&(e+=`?${t}`),await Ld(e)}var Kd="No app provided";function lr(t){if(!t)throw Kd;return t.startsWith(Je)}function Fb(t){if(!t)throw Kd;return t.startsWith(ze)&&!lr(t)}function _s(t){if(!t)throw Kd;return lr(t.appId)}function ja(t){if(!t||t.startsWith(Je))return t;let e=t.split(ze);e.shift();let r=e.join(ze);return`${Je}${r}`}function qe(t){if(!t||!t.startsWith(Je))return t;let e=t.split(Je);e.shift();let r=e.join(Je);return`${ze}${r}`}var Py=require("async_hooks"),pe=class t{static{this.storage=new Py.AsyncLocalStorage}static run(e,r){return t.storage.run(e,()=>r())}static get(){return t.storage.getStore()}};var Ny=null;function en(t){return t||(t=W()),Is(t)}function Uy(t){return t||(t=W()),t===oe?de.AUDIT_LOGS.name:`${t}${R}${de.AUDIT_LOGS.name}`}function $b(t){return t||(t=W()),t===oe?de.SCIM_LOGS.name:`${t}${R}${de.SCIM_LOGS.name}`}function Is(t){return!t||t===oe?de.GLOBAL.name:`${t}${R}${de.GLOBAL.name}`}function jd(){return h.PLATFORM_URL}function dr(){return!!h.MULTI_TENANCY}function Wb(){return!!pe.get()?.tenantId}function Vb(){return h.MULTI_TENANCY}function Yn(t){if(!t)return;if(!dr())return oe;let e=t.split(R),r=e[1]==="dev";if(!(r&&e.length===3||!r&&e.length===2))return r?e[2]:e[1]}function Gb(t){let e;try{e=pe.get()}catch{e={}}return e={...e,...t},e}async function dt(t,e){zb();let r=Gb(t);return pe.run(r,e)}async function qb(t){return await ky(),await dt({tenantId:Yn(t.workspaceId),appId:t.workspaceId,automationId:t.automationId},t.task)}async function Yd(t,e){let r=Yn(t);return dt({tenantId:r,appId:t},e)}async function be(t,e){return h.MULTI_TENANCY||(t=t||oe),dt(t?{tenantId:t}:{},e)}async function Qb(t,e){return dt({tenantId:t,isSelfHostUsingCloud:!0},e)}async function Kb(t,e){return dt({license:t},e)}function jb(){return pe.get()?.license}function Ya(){return!!pe.get()?.isSelfHostUsingCloud}function Yb(){let t=pe.get();if(!t||!t.isSelfHostUsingCloud)throw new Error("Self-host cloud DB not found");return Re(de.SELF_HOST_CLOUD.name)}async function Hb(t,e){return Ly(t,e)}async function Ly(t,e,r){if(!t)throw new Error("workspaceId is required");let n=Yn(t),i={appId:t,...r};return n&&(i.tenantId=n),dt(i,e)}async function ys(t,e){if(!t)throw new Error("identity is required");let r={identity:t};return t.tenantId&&(r.tenantId=t.tenantId),dt(r,e)}function zb(){if(pe.get()?.isMigrating)throw new Error("The context cannot be changed, a migration is currently running")}async function Jb(t,e){return Ly(t,e,{isMigrating:!0})}function Lt(){try{return pe.get()?.identity}catch{}}function W(){if(!dr())return oe;let e=pe.get()?.tenantId;if(!e)throw new Error("Tenant id not found");return e}function Hd(){return pe.get()?.automationId}function Ae(){let e=pe.get()?.appId;return!e&&h.isTest()&&Ny?Ny:e}function zd(){return pe.get()?.ip}var Zb=()=>{let t=Ae();if(!t)throw new Error("Could not get workspaceId");return ja(t)},Xb=()=>{let t=Ae();if(!t)throw new Error("Could not get workspaceId");return qe(t)};function eC(t,e){if(!t)throw new Error("Must supply environment variables.");return dt({environmentVariables:t},e)}function tC(t){return dt({isScim:!0},t)}function Jd(t,e){return dt({ip:t},e)}async function ky(){let t=tn();if(!t||t.snippets)return;let e,r=Hn();r&&(e=(await r.tryGet("app_metadata"))?.snippets),t.snippets=e||[]}function rC(){let t=pe.get();return t.environmentVariables?t.environmentVariables:null}function Y(){let t=pe.get();if(!t||h.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 Re(Is(t?.tenantId))}function nC(){if(!W())throw new Error("No tenant ID found - cannot open audit log DB");return Re(Uy())}function Hn(t){let e=Ae();if(!e)throw new Error("Unable to retrieve workspace DB - no workspace ID.");if(Ya())throw new Error("Workspace DB not found - self-host users using cloud don't have workspace DBs");return Re(e,t)}function iC(t){let e=Ae();if(!e)throw new Error("Unable to retrieve prod DB - no workspace ID.");return Re(qe(e),t)}function sC(t){let e=Ae();if(!e)throw new Error("Unable to retrieve dev DB - no workspace ID.");return Re(ja(e),t)}function ft(){return!!pe.get()?.isScim}function tn(){try{return pe.get()}catch{return}}function Zd(t){let e=tn();if(e)return e.featureFlagCache?.[t]}function Xd(t,e){let r=tn();r&&(r.featureFlagCache??={},r.featureFlagCache[t]=e)}function ef(){return tn()?.featureFlagOverrides||{}}async function tf(t,e){return await dt({featureFlagOverrides:t},e)}function oC(t){let e=tn();if(e)return e.viewToTableCache?.[t]}function aC(t,e){let r=tn();r&&(r.viewToTableCache??={},r.viewToTableCache[t]=e)}var mr={};P(mr,{AutomationViewMode:()=>Pa,BUDIBASE_DATASOURCE_TYPE:()=>hd,DEFAULT_BB_DATASOURCE_ID:()=>On,DEFAULT_EMPLOYEE_TABLE_ID:()=>Td,DEFAULT_EXPENSES_TABLE_ID:()=>yd,DEFAULT_INVENTORY_TABLE_ID:()=>gd,DEFAULT_JOBS_TABLE_ID:()=>Ed,DatabaseImpl:()=>jn,DatabaseWithConnection:()=>Mb,DeprecatedViews:()=>Vn,DesignDocuments:()=>ms,DocumentType:()=>ue,InternalTable:()=>Rt,QueryBuilder:()=>Bt,Replication:()=>ET,SEPARATOR:()=>R,SQLITE_DESIGN_DOC_ID:()=>It,SQS_DATASOURCE_INTERNAL:()=>md,StaticDatabases:()=>de,UNICODE_MAX:()=>De,USER_METADATA_PREFIX:()=>ps,ViewName:()=>ur,WORKSPACE_DEV:()=>Na,WORKSPACE_DEV_PREFIX:()=>Je,WORKSPACE_PREFIX:()=>ze,baseGlobalDBName:()=>Is,checkErrorCode:()=>ST,closePouchDB:()=>Ss,createApiKeyView:()=>dT,createNewUserEmailView:()=>cT,createPlatformAccountEmailView:()=>pT,createPlatformUserView:()=>mT,createUserAppView:()=>lT,createView:()=>Jn,dbExists:()=>_C,directCouchAllDbs:()=>Qd,directCouchCall:()=>Iy,directCouchQuery:()=>Ld,directCouchUrlCall:()=>Ts,doWithDB:()=>Ge,fullSearch:()=>DC,generateAgentChatID:()=>zy,generateAgentToolSourceID:()=>Jy,generateAppUserID:()=>Xa,generateDevInfoID:()=>jy,generateGlobalUserID:()=>zn,generateOAuth2LogID:()=>Hy,generatePluginID:()=>Yy,generateRoleID:()=>lf,generateRowID:()=>cf,generateTableID:()=>Vy,generateTemplateID:()=>Ky,generateUserMetadataID:()=>qy,generateWorkspaceAppID:()=>Zy,generateWorkspaceFavouriteID:()=>Xy,generateWorkspaceID:()=>Wy,getAllDbs:()=>uT,getAllWorkspaces:()=>ks,getCouchInfo:()=>lt,getDB:()=>Re,getDevWorkspaceID:()=>ja,getDevWorkspaceIDs:()=>SC,getDocParams:()=>Mt,getGlobalDBName:()=>en,getGlobalIDFromUserMetadataID:()=>Qy,getGlobalUserParams:()=>sn,getOAuth2ConfigParams:()=>sT,getPluginParams:()=>iT,getPouch:()=>kd,getPouchDB:()=>Ze,getProdWorkpaceIDs:()=>TC,getProdWorkspaceID:()=>qe,getQueryIndex:()=>eT,getRoleParams:()=>tu,getRowParams:()=>df,getStartEndKeyURL:()=>Ls,getTemplateParams:()=>nT,getUrlInfo:()=>Ud,getUserMetadataParams:()=>rT,getUsersByWorkspaceParams:()=>eu,getWorkspaceAppParams:()=>oT,getWorkspaceFavouriteParams:()=>aT,getWorkspaceParams:()=>tT,getWorkspacesByIDs:()=>yC,init:()=>Ga,isDevWorkspace:()=>_s,isDevWorkspaceID:()=>lr,isDocumentConflictError:()=>bC,isGlobalUserID:()=>Gy,isProdWorkspaceID:()=>Fb,isSameWorkspaceID:()=>AC,paginatedSearch:()=>wC,pagination:()=>pf,prefixRoleID:()=>kt,queryGlobalView:()=>Ft,queryGlobalViewRaw:()=>Ef,queryPlatformView:()=>Fs,queryView:()=>hf,queryViewRaw:()=>Ms,removeKeyNumbering:()=>Bs,searchIndexes:()=>yf});var Us={};P(Us,{WorkspaceState:()=>uf,getWorkspaceMetadata:()=>Za,invalidateWorkspaceMetadata:()=>EC});var pr={};P(pr,{getCacheClient:()=>sf,getDocWritethroughClient:()=>fC,getInviteClient:()=>nn,getLockClient:()=>af,getPasswordResetClient:()=>Ns,getSessionClient:()=>fr,getSocketClient:()=>dC,getUserClient:()=>Ps,getWorkspaceClient:()=>Ja,getWritethroughClient:()=>of,init:()=>pt,shutdown:()=>By});var za=M(require("ioredis"));var Ha=require("dd-trace"),Fy=require("lodash"),My;if(h.MOCK_REDIS)try{My=require("ioredis-mock")}catch{console.log("Mock redis unavailable")}async function uC(t=0){return await Ha.tracer.trace("Redis.init",async e=>{if(h.MOCK_REDIS)return e.addTags({mock:!0}),new My(Zr());let r;if(h.REDIS_CLUSTERED){e.addTags({clustered:!0});let{host:n,port:i}=Ba();r=new za.Cluster([{host:n,port:i}],Dd())}else r=new za.default(Zr());return new Promise((n,i)=>{r.on("error",s=>{e.addTags({error:!0}),console.error(`failed to connect to redis (db: ${t})`,s),i(s)}),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)})})})}function cC(t,e){return new Promise((r,n)=>{let i=new Set;t.on("data",s=>s.forEach(o=>i.add(o))),t.on("error",s=>n(s)),t.on("end",async()=>{try{let s=Array.from(i).map(async o=>{let a=await e.get(o);return a&&(a=JSON.parse(a)),{key:Rd(o),value:a}});r(await Promise.all(s))}catch(s){n(s)}})})}function lC(t){return t.isCluster}var rf=class t{constructor(e,r){this.client=e,this.db=r}static async init(e,r=0){return await Ha.tracer.trace("RedisWrapper.init",async n=>{let i=await uC(r);return r&&!h.isTest()&&(n.addTags({db:e}),i.select(r)),new t(i,e)})}trace(e,r){return Ha.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;lC(this.client)?n=this.client.nodes("master")[0].scanStream({match:e+"*",count:100}):n=this.client.scanStream({match:e+"*",count:100});let i=await cC(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,Fy.zip)(e,n).reduce((i,[s,o])=>{if(s===void 0||o===void 0)throw new Error(`Keys and response length mismatch: ${e.length} vs ${n.length}`);try{i[s]=o?JSON.parse(o):null}catch{i[s]=o}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((o,[a,u])=>(o[this.prefixed(a)]=typeof u=="object"?JSON.stringify(u):u,o),{}),s=this.client.pipeline();if(s.mset(i),r!==null)for(let o of Object.keys(i))s.expire(o,r);await s.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=ef;var Os,ws,Ds,Rs,rn,bs,Cs,xs,vs,tf;async function pt(){Os=await Ce.init("users"),ws=await Ce.init("session"),Ds=await Ce.init("appMetadata"),Rs=await Ce.init("data_cache"),bs=await Ce.init("locks"),rn=await Ce.init("writeThrough"),xs=await Ce.init("invitation"),vs=await Ce.init("pwReset"),Cs=await Ce.init("socket_io",1),tf=await Ce.init("docWriteThrough")}async function $y(){Os&&await Os.finish(),ws&&await ws.finish(),Ds&&await Ds.finish(),Rs&&await Rs.finish(),rn&&await rn.finish(),bs&&await bs.finish(),xs&&await xs.finish(),vs&&await vs.finish(),Cs&&await Cs.finish(),tf&&await tf.finish()}process.on("exit",async()=>{await $y()});async function Ps(){return Os||await pt(),Os}async function fr(){return ws||await pt(),ws}async function Ja(){return Ds||await pt(),Ds}async function rf(){return Rs||await pt(),Rs}async function nf(){return rn||await pt(),rn}async function sf(){return bs||await pt(),bs}async function pC(){return Cs||await pt(),Cs}async function nn(){return xs||await pt(),xs}async function Ns(){return vs||await pt(),vs}async function mC(){return rn||await pt(),rn}function Ot(t){let e=V();return`${t}:${e}`}var sn=class{constructor(e=void 0){this.client=e}async getClient(){return this.client?this.client:await rf()}async keys(e){return(await this.getClient()).keys(e)}async exists(e,r={useTenancy:!0}){return e=r.useTenancy?Ot(e):e,(await this.getClient()).exists(e)}async scan(e,r={useTenancy:!0}){return e=r.useTenancy?Ot(e):e,(await this.getClient()).scan(e)}async get(e,r={useTenancy:!0}){return e=r.useTenancy?Ot(e):e,(await this.getClient()).get(e)}async bulkGet(e,r={useTenancy:!0}){return e=r.useTenancy?e.map(i=>Ot(i)):e,(await this.getClient()).bulkGet(e)}async store(e,r,n=null,i={useTenancy:!0}){e=i.useTenancy?Ot(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((s,[o,a])=>(s[Ot(o)]=a,s),{})),await(await this.getClient()).bulkStore(e,r)}async delete(e,r={useTenancy:!0}){return e=r.useTenancy?Ot(e):e,(await this.getClient()).delete(e)}async bulkDelete(e,r={useTenancy:!0}){return e=r.useTenancy?e.map(i=>Ot(i)):e,(await this.getClient()).bulkDelete(e)}async withCache(e,r=null,n,i={useTenancy:!0}){let s=await this.get(e,i);if(s)return s;try{let o=await n();return await this.store(e,o,r,i),o}catch(o){throw console.error("Error fetching before cache - ",o),o}}async withCacheWithDynamicTTL(e,r,n={useTenancy:!0}){let i=await this.get(e,n);if(i)return i;try{let s=await r(),{value:o,ttl:a}=s;return await this.store(e,o,a,{useTenancy:n.useTenancy}),o}catch(s){throw console.error("Error fetching before cache - ",s),s}}async bustCache(e){let r=await this.getClient();try{await r.delete(Ot(e))}catch(n){throw console.error("Error busting cache - ",n),n}}async deleteIfValue(e,r,n={useTenancy:!0}){e=n.useTenancy?Ot(e):e,await(await this.getClient()).deleteIfValue(e,r)}};var on=new sn,Ee={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}`},an=(n=>(n[n.ONE_MINUTE=600]="ONE_MINUTE",n[n.ONE_HOUR=3600]="ONE_HOUR",n[n.ONE_DAY=86400]="ONE_DAY",n))(an||{}),Za=(...t)=>on.keys(...t),un=(...t)=>on.get(...t),Mt=(...t)=>on.store(...t),Us=(...t)=>on.delete(...t),mr=(...t)=>on.withCache(...t),Vy=(...t)=>on.withCacheWithDynamicTTL(...t),zn=(...t)=>on.bustCache(...t);var Dr={};P(Dr,{getUser:()=>Ao,getUsers:()=>hU,invalidateUser:()=>So});var ks={};P(ks,{addTenantToUrl:()=>hC,getTenantDB:()=>of,getTenantIDFromCtx:()=>Ms,isUserInAppTenant:()=>EC});function of(t){return Re(Xr(t))}function hC(t){let e=V();if(dr()){let r=t.indexOf("?")===-1?"?":"&";t+=`${r}tenantId=${e}`}return t}var EC=(t,e)=>{let r;return e?r=e.tenantId||oe:r=V(),(jn(t)||oe)===r},gC=Object.values(Si),Ms=(t,e)=>{if(!dr())return oe;e.allowNoTenant===void 0&&(e.allowNoTenant=!1),e.includeStrategies||(e.includeStrategies=gC),e.excludeStrategies||(e.excludeStrategies=[]);let r=n=>{if(e.excludeStrategies?.includes(n))return!1;if(e.includeStrategies?.includes(n))return!0};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(Gd()).host.split(":")[0]}catch(s){if(s.code!=="ERR_INVALID_URL")throw s}let i=t.host;if(n&&i.includes(n)){let s=i.substring(0,i.indexOf(`.${n}`));if(s)return s}}if(r("path")){let n=t.matched.find(o=>!!o.paramNames.find(a=>a.name==="tenantId")),i=t.originalUrl,s;if(i.includes("?")?s=i.split("?")[0]:s=i,n){let o=n.params(s,n.captures(s),{});if(o.tenantId)return o.tenantId}}e.allowNoTenant||t.throw(403,"Tenant id not set")};var Fs={};P(Fs,{getPlatformDB:()=>hr,users:()=>mt});var mt={};P(mt,{addSsoUser:()=>Wy,addUser:()=>IC,getUserDoc:()=>Gy,lookupTenantId:()=>yC,removeUser:()=>OC,updateUserDoc:()=>TC});function hr(){return Re(de.PLATFORM_INFO.name)}async function yC(t){return h.MULTI_TENANCY?(await Gy(t)).tenantId:oe}async function Gy(t){return hr().get(t)}async function TC(t){await hr().put(t)}function AC(t,e){return{_id:t,tenantId:e}}function SC(t,e,r){return{_id:e,userId:t,tenantId:r}}function _C(t,e,r,n){return{_id:t,userId:r,email:e,tenantId:n}}async function af(t,e){let r=hr(),n;try{await r.get(t)}catch(i){if(i.status===404)n=e(),await r.put(n);else throw i}}async function Wy(t,e,r,n){return af(t,()=>_C(t,e,r,n))}async function IC(t,e,r,n){let i=[af(e,()=>AC(e,t)),af(r,()=>SC(e,r,t))];n&&i.push(Wy(n,r,e,t)),await Promise.all(i)}async function OC(t){let e=hr(),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})}var pn={};P(pn,{getAccount:()=>_r,getAccountByTenantId:()=>ri,getStatus:()=>Tx});var tA=k(require("node-fetch"));var Js={};P(Js,{correlation:()=>Bs,logAlert:()=>fn,logAlertWithInfo:()=>yx,logWarn:()=>ti,logger:()=>lu,system:()=>Nf});var Bs={};P(Bs,{getId:()=>uf,setHeader:()=>wC});var qy=require("correlation-id"),wC=t=>{let e=qy.getId();e&&(t["x-budibase-correlation-id"]=e)};function uf(){return qy.getId()}var cu=k(require("pino")),XT=k(require("pino-pretty"));var Uf=k(require("dd-trace")),eA=require("dd-trace/ext");var Nf={};P(Nf,{getLogReadStream:()=>fx,getSingleFileMaxSizeInfo:()=>ZT,localFileDestination:()=>Pf});var zs=k(require("fs")),vf=k(require("path")),YT=k(require("rotating-file-stream"));var xf={};P(xf,{ObjectStore:()=>ht,ObjectStoreBuckets:()=>WC,SIGNED_FILE_PREFIX:()=>Df,bucketTTLConfig:()=>nu,budibaseTempDir:()=>dn,clientLibraryCDNUrl:()=>sx,clientLibraryPath:()=>BT,clientLibraryUrl:()=>ox,createBucketIfNotExists:()=>Hs,deleteFile:()=>ZC,deleteFiles:()=>XC,deleteFolder:()=>MT,downloadTarball:()=>tx,downloadTarballDirect:()=>ex,enrichPWAImages:()=>ax,enrichPluginURLs:()=>cx,extractBucketAndPath:()=>Af,getAppFileUrl:()=>$T,getGlobalFileS3Key:()=>VT,getGlobalFileUrl:()=>ux,getObjectMetadata:()=>rx,getPluginIconKey:()=>qT,getPluginJSKey:()=>WT,getPluginS3Dir:()=>KT,getPresignedUrl:()=>Ar,getReadStream:()=>iu,listAllObjects:()=>LT,processAutomationAttachment:()=>QC,processObjectStoreAttachment:()=>vT,retrieve:()=>UT,retrieveDirectory:()=>JC,retrieveToTmp:()=>zC,sanitizeBucket:()=>Ne,sanitizeKey:()=>_e,streamUpload:()=>NT,upload:()=>HC,uploadDirectory:()=>Rf});var ou=require("@aws-sdk/client-s3"),Sf=require("@aws-sdk/lib-storage"),PT=require("@aws-sdk/s3-request-presigner");var Tr=k(require("dd-trace")),Xn=k(require("fs")),js=k(require("fs/promises")),_f=k(require("node-fetch")),yr=require("path"),au=k(require("stream")),Ys=require("stream/promises"),If=k(require("tar-fs")),Of=require("uuid"),wf=k(require("zlib"));var Er={};P(Er,{APP_DEV:()=>Na,APP_DEV_PREFIX:()=>Je,APP_PREFIX:()=>ze,AutomationViewMode:()=>Pa,BUDIBASE_DATASOURCE_TYPE:()=>hd,DEFAULT_BB_DATASOURCE_ID:()=>On,DEFAULT_EMPLOYEE_TABLE_ID:()=>Td,DEFAULT_EXPENSES_TABLE_ID:()=>yd,DEFAULT_INVENTORY_TABLE_ID:()=>gd,DEFAULT_JOBS_TABLE_ID:()=>Ed,DatabaseImpl:()=>Kn,DatabaseWithConnection:()=>Fb,DeprecatedViews:()=>Gn,DesignDocuments:()=>ms,DocumentType:()=>ue,InternalTable:()=>Rt,QueryBuilder:()=>$t,Replication:()=>_T,SEPARATOR:()=>R,SQLITE_DESIGN_DOC_ID:()=>It,SQS_DATASOURCE_INTERNAL:()=>md,StaticDatabases:()=>de,UNICODE_MAX:()=>De,USER_METADATA_PREFIX:()=>ps,ViewName:()=>ur,baseGlobalDBName:()=>Is,checkErrorCode:()=>DT,closePouchDB:()=>As,createApiKeyView:()=>gT,createNewUserEmailView:()=>hT,createPlatformAccountEmailView:()=>TT,createPlatformUserView:()=>AT,createUserAppView:()=>ET,createView:()=>Zn,dbExists:()=>MC,directCouchAllDbs:()=>Bd,directCouchCall:()=>Iy,directCouchQuery:()=>Cd,directCouchUrlCall:()=>Ts,doWithDB:()=>We,extractAppUUID:()=>$b,fullSearch:()=>$C,generateAgentChatID:()=>rT,generateAgentToolSourceID:()=>nT,generateAppID:()=>Ky,generateAppUserID:()=>eu,generateDevInfoID:()=>Xy,generateGlobalUserID:()=>Jn,generateOAuth2LogID:()=>tT,generatePluginID:()=>eT,generateRoleID:()=>df,generateRowID:()=>lf,generateTableID:()=>jy,generateTemplateID:()=>Zy,generateUserMetadataID:()=>zy,generateWorkspaceAppID:()=>iT,generateWorkspaceFavouriteID:()=>sT,generateWorkspaceID:()=>Yy,getAllApps:()=>Gs,getAllDbs:()=>mT,getAppsByIDs:()=>PC,getCouchInfo:()=>lt,getDB:()=>Re,getDevAppID:()=>Vd,getDevAppIDs:()=>UC,getDevelopmentAppID:()=>qa,getDocParams:()=>Ft,getGlobalDBName:()=>Xr,getGlobalIDFromUserMetadataID:()=>Jy,getGlobalUserParams:()=>cn,getOAuth2ConfigParams:()=>dT,getPluginParams:()=>lT,getPouch:()=>xd,getPouchDB:()=>Ze,getProdAppID:()=>qe,getProdAppIDs:()=>NC,getQueryIndex:()=>oT,getRoleParams:()=>ru,getRowParams:()=>ff,getStartEndKeyURL:()=>Vs,getTemplateParams:()=>cT,getUrlInfo:()=>bd,getUserMetadataParams:()=>uT,getUsersByAppParams:()=>tu,getWorkspaceAppParams:()=>fT,getWorkspaceFavouriteParams:()=>pT,getWorkspaceParams:()=>aT,init:()=>$a,isDevApp:()=>_s,isDevAppID:()=>lr,isDocumentConflictError:()=>GC,isGlobalUserID:()=>Hy,isProdAppID:()=>Bb,isSameAppID:()=>LC,paginatedSearch:()=>BC,pagination:()=>mf,prefixRoleID:()=>kt,queryGlobalView:()=>Bt,queryGlobalViewRaw:()=>gf,queryPlatformView:()=>qs,queryView:()=>Ef,queryViewRaw:()=>Ws,removeKeyNumbering:()=>Qs,searchIndexes:()=>Tf});var $s={};P($s,{AppState:()=>cf,getAppMetadata:()=>Xa,invalidateAppMetadata:()=>xC});var cf=(e=>(e.INVALID="invalid",e))(cf||{}),Qy=3600,RC=60;async function bC(t){return We(t,e=>e.get("app_metadata"),{skip_setup:!0})}function CC(t){return!t||t.state==="invalid"}async function Xa(t){let e=await Ja(),r=await e.get(t);if(!r){let n=Qy;try{r=await bC(t)}catch(i){if(i&&i.status===404)r={state:"invalid"},n=RC;else throw i}if(CC(r)){let i=await e.get(t);i&&(r=i)}await e.store(t,r,n)}return r}async function xC(t,e){if(!t)throw"Cannot invalidate if no app ID provided.";let r=await Ja();await r.delete(t),e&&await r.store(t,e,Qy)}var pf={};P(pf,{generateAgentChatID:()=>rT,generateAgentToolSourceID:()=>nT,generateAppID:()=>Ky,generateAppUserID:()=>eu,generateDevInfoID:()=>Xy,generateGlobalUserID:()=>Jn,generateOAuth2LogID:()=>tT,generatePluginID:()=>eT,generateRoleID:()=>df,generateRowID:()=>lf,generateTableID:()=>jy,generateTemplateID:()=>Zy,generateUserMetadataID:()=>zy,generateWorkspaceAppID:()=>iT,generateWorkspaceFavouriteID:()=>sT,generateWorkspaceID:()=>Yy,getDocParams:()=>Ft,getGlobalIDFromUserMetadataID:()=>Jy,getGlobalUserParams:()=>cn,getOAuth2ConfigParams:()=>dT,getPluginParams:()=>lT,getQueryIndex:()=>oT,getRoleParams:()=>ru,getRowParams:()=>ff,getStartEndKeyURL:()=>Vs,getTemplateParams:()=>cT,getUserMetadataParams:()=>uT,getUsersByAppParams:()=>tu,getWorkspaceAppParams:()=>fT,getWorkspaceFavouriteParams:()=>pT,getWorkspaceParams:()=>aT,isGlobalUserID:()=>Hy,prefixRoleID:()=>kt});var Ky=t=>{let e=ze;return t&&(e+=`${t}${R}`),`${e}${ee()}`};function jy(){return`ta${R}${ee()}`}function lf(t,e){return e=e||ee(),`ro${R}${t}${R}${e}`}function Yy(){return`workspace${R}${ee()}`}function Jn(t){return`us${R}${t||ee()}`}var vC=new RegExp(`^us${R}.+`);function Hy(t){return vC.test(t)}function zy(t){return lf("ta_users",t)}function Jy(t){let e=`ro${R}ta_users${R}`;return!t||!t.includes(e)?t:t.split(e)[1]}function Zy(t){return`template${R}${t}${R}${ee()}`}function eu(t,e){return`${t}${R}${e}`}function df(t){let e=`role${R}`;return t.startsWith(e)?t:`${e}${t}`}function kt(t){return df(t)}var Xy=t=>`devinfo${R}${t}`,eT=t=>`plg${R}${t}`,tT=t=>`oauth2log${R}${t}`,rT=()=>`agentchat${R}${ee()}`,nT=()=>`agenttoolsource${R}${ee()}`,iT=()=>`workspace_app${R}${ee()}`,sT=()=>`workspace_favourite${R}${ee()}`;function Ft(t,e,r={}){return e==null&&(e=""),{...r,startkey:`${t}${R}${e}`,endkey:`${t}${R}${e}${De}`}}function ff(t,e,r={}){if(t==null)return Ft("ro",null,r);let n=e??`${t}${R}`;return Ft("ro",n,r)}function oT(t){return`database/${t}`}function aT(t="",e={}){return{...e,startkey:`workspace${R}${t}`,endkey:`workspace${R}${t}${De}`}}function cn(t,e={}){t||(t="");let r=e?.startkey;return{...e,startkey:r||`us${R}${t}`,endkey:`us${R}${t}${De}`}}function uT(t,e={}){return ff("ta_users",t,e)}function tu(t,e={}){let r=qe(t);return{...e,startkey:r,endkey:`${r}${De}`}}function cT(t,e,r={}){e||(e="");let n;return e?n=e:n=`template${R}${t}${R}`,{...r,startkey:n,endkey:`${n}${De}`}}function ru(t,e={}){return Ft("role",t,e)}function Vs(t,e){let r=e?`${R}${e}`:"";return`startkey="${t}${r}"&endkey="${t}${r}${De}"`}var lT=(t,e={})=>Ft("plg",t,e),dT=(t,e={})=>Ft("oauth2",t,e),fT=(t,e={})=>Ft("workspace_app",t,e),pT=(t,e={})=>Ft("workspace_favourite",t,e);async function mT(t={efficient:!1}){let e=t&&t.efficient,r=[];async function n(s){let o=await Bd(s);r=r.concat(o)}let i=V();return!h.MULTI_TENANCY||!e&&i===oe?await n():(await n(Vs("app",i)),await n(Vs("app_dev",i)),r.push(Xr(i))),r}async function Gs({dev:t,all:e,idsOnly:r,efficient:n}={}){let i=V();!h.MULTI_TENANCY&&!i&&(i=oe);let o=(await mT({efficient:n||!1})).filter(u=>{if(h.isTest()&&!u)return!1;let c=u.split(R);if(c[0]==="app"){let l=c[c.length-2],d=c.length===2||l==="dev";return i===oe&&d||l===i}return!1});if(r){let u=o.filter(l=>lr(l)),c=o.filter(l=>!lr(l));switch(t){case!0:return u;case!1:return c;default:return o}}let a=o.map(u=>Xa(u));if(a.length===0)return[];{let c=(await Promise.allSettled(a)).filter(l=>l.status==="fulfilled"&&l.value?.state!=="invalid").map(({value:l})=>l);return e?c.map(l=>({...l,status:_s(l)?"development":"published"})):c.filter(l=>t?_s(l):!_s(l))}}async function PC(t){return(await Promise.allSettled(t.map(r=>Xa(r)))).filter(r=>r.status==="fulfilled"&&r.value.state!=="invalid").map(r=>r.value)}async function NC(){return(await Gs({idsOnly:!0})).filter(e=>!lr(e))}async function UC(){return(await Gs({idsOnly:!0})).filter(e=>lr(e))}function LC(t,e){return t==null||e==null?!1:qe(t)===qe(e)}async function MC(t){return We(t,async e=>await e.exists(),{skip_setup:!0})}function mf(t,e,{paginate:r,property:n,getKey:i}={paginate:!0,property:"_id"}){if(!r)return{data:t,hasNextPage:!1};let s=t.length>e,o;return i||(i=a=>n?a?.[n]:a?._id),s&&(o=i(t[e])),{data:t.slice(0,e),hasNextPage:s,nextPage:o}}var hf="_design/database";function kC(){return{_id:hf,views:{}}}async function FC(t,e){if(Gn[e])try{let r=await t.get(hf);for(let n of Gn[e])delete r.views?.[n];await t.put(r)}catch{}}async function Zn(t,e,r){let n;try{n=await t.get(hf)}catch{n=kC()}let i={map:e};n.views={...n.views,[r]:i};try{await t.put(n)}catch(s){if(s.status===409)return await Zn(t,e,r);throw s}}var hT=async()=>{let t=Y(),e=`function(doc) {
|
|
9
|
+
`;await this.client.eval(i,1,this.prefixed(e),r)})}},Ce=rf;var Os,ws,Ds,Rs,rn,bs,Cs,xs,vs,nf;async function pt(){Os=await Ce.init("users"),ws=await Ce.init("session"),Ds=await Ce.init("appMetadata"),Rs=await Ce.init("data_cache"),bs=await Ce.init("locks"),rn=await Ce.init("writeThrough"),xs=await Ce.init("invitation"),vs=await Ce.init("pwReset"),Cs=await Ce.init("socket_io",1),nf=await Ce.init("docWriteThrough")}async function By(){Os&&await Os.finish(),ws&&await ws.finish(),Ds&&await Ds.finish(),Rs&&await Rs.finish(),rn&&await rn.finish(),bs&&await bs.finish(),xs&&await xs.finish(),vs&&await vs.finish(),Cs&&await Cs.finish(),nf&&await nf.finish()}process.on("exit",async()=>{await By()});async function Ps(){return Os||await pt(),Os}async function fr(){return ws||await pt(),ws}async function Ja(){return Ds||await pt(),Ds}async function sf(){return Rs||await pt(),Rs}async function of(){return rn||await pt(),rn}async function af(){return bs||await pt(),bs}async function dC(){return Cs||await pt(),Cs}async function nn(){return xs||await pt(),xs}async function Ns(){return vs||await pt(),vs}async function fC(){return rn||await pt(),rn}var uf=(e=>(e.INVALID="invalid",e))(uf||{}),$y=3600,pC=60;async function mC(t){return Ge(t,e=>e.get("app_metadata"),{skip_setup:!0})}function hC(t){return!t||t.state==="invalid"}async function Za(t){let e=await Ja(),r=await e.get(t);if(!r){let n=$y;try{r=await mC(t)}catch(i){if(i&&i.status===404)r={state:"invalid"},n=pC;else throw i}if(hC(r)){let i=await e.get(t);i&&(r=i)}await e.store(t,r,n)}return r}async function EC(t,e){if(!t)throw"Cannot invalidate if no app ID provided.";let r=await Ja();await r.delete(t),e&&await r.store(t,e,$y)}var ff={};P(ff,{generateAgentChatID:()=>zy,generateAgentToolSourceID:()=>Jy,generateAppUserID:()=>Xa,generateDevInfoID:()=>jy,generateGlobalUserID:()=>zn,generateOAuth2LogID:()=>Hy,generatePluginID:()=>Yy,generateRoleID:()=>lf,generateRowID:()=>cf,generateTableID:()=>Vy,generateTemplateID:()=>Ky,generateUserMetadataID:()=>qy,generateWorkspaceAppID:()=>Zy,generateWorkspaceFavouriteID:()=>Xy,generateWorkspaceID:()=>Wy,getDocParams:()=>Mt,getGlobalIDFromUserMetadataID:()=>Qy,getGlobalUserParams:()=>sn,getOAuth2ConfigParams:()=>sT,getPluginParams:()=>iT,getQueryIndex:()=>eT,getRoleParams:()=>tu,getRowParams:()=>df,getStartEndKeyURL:()=>Ls,getTemplateParams:()=>nT,getUserMetadataParams:()=>rT,getUsersByWorkspaceParams:()=>eu,getWorkspaceAppParams:()=>oT,getWorkspaceFavouriteParams:()=>aT,getWorkspaceParams:()=>tT,isGlobalUserID:()=>Gy,prefixRoleID:()=>kt});var Wy=t=>{let e=ze;return t&&(e+=`${t}${R}`),`${e}${re()}`};function Vy(){return`ta${R}${re()}`}function cf(t,e){return e=e||re(),`ro${R}${t}${R}${e}`}function zn(t){return`us${R}${t||re()}`}var gC=new RegExp(`^us${R}.+`);function Gy(t){return gC.test(t)}function qy(t){return cf("ta_users",t)}function Qy(t){let e=`ro${R}ta_users${R}`;return!t||!t.includes(e)?t:t.split(e)[1]}function Ky(t){return`template${R}${t}${R}${re()}`}function Xa(t,e){return`${t}${R}${e}`}function lf(t){let e=`role${R}`;return t.startsWith(e)?t:`${e}${t}`}function kt(t){return lf(t)}var jy=t=>`devinfo${R}${t}`,Yy=t=>`plg${R}${t}`,Hy=t=>`oauth2log${R}${t}`,zy=()=>`agentchat${R}${re()}`,Jy=()=>`agenttoolsource${R}${re()}`,Zy=()=>`workspace_app${R}${re()}`,Xy=()=>`workspace_favourite${R}${re()}`;function Mt(t,e,r={}){return e==null&&(e=""),{...r,startkey:`${t}${R}${e}`,endkey:`${t}${R}${e}${De}`}}function df(t,e,r={}){if(t==null)return Mt("ro",null,r);let n=e??`${t}${R}`;return Mt("ro",n,r)}function eT(t){return`database/${t}`}function tT(t="",e={}){return{...e,startkey:`workspace${R}${t}`,endkey:`workspace${R}${t}${De}`}}function sn(t,e={}){t||(t="");let r=e?.startkey;return{...e,startkey:r||`us${R}${t}`,endkey:`us${R}${t}${De}`}}function rT(t,e={}){return df("ta_users",t,e)}function eu(t,e={}){let r=qe(t);return{...e,startkey:r,endkey:`${r}${De}`}}function nT(t,e,r={}){e||(e="");let n;return e?n=e:n=`template${R}${t}${R}`,{...r,startkey:n,endkey:`${n}${De}`}}function tu(t,e={}){return Mt("role",t,e)}function Ls(t,e){let r=e?`${R}${e}`:"";return`startkey="${t}${r}"&endkey="${t}${r}${De}"`}var iT=(t,e={})=>Mt("plg",t,e),sT=(t,e={})=>Mt("oauth2",t,e),oT=(t,e={})=>Mt("workspace_app",t,e),aT=(t,e={})=>Mt("workspace_favourite",t,e);async function uT(t={efficient:!1}){let e=t&&t.efficient,r=[];async function n(s){let o=await Qd(s);r=r.concat(o)}let i=W();return!h.MULTI_TENANCY||!e&&i===oe?await n():(await n(Ls("app",i)),await n(Ls("app_dev",i)),r.push(en(i))),r}async function ks({dev:t,all:e,idsOnly:r,efficient:n}={}){let i=W();!h.MULTI_TENANCY&&!i&&(i=oe);let o=(await uT({efficient:n||!1})).filter(u=>{if(h.isTest()&&!u)return!1;let c=u.split(R);if(c[0]==="app"){let l=c[c.length-2],d=c.length===2||l==="dev";return i===oe&&d||l===i}return!1});if(r){let u=o.filter(l=>lr(l)),c=o.filter(l=>!lr(l));switch(t){case!0:return u;case!1:return c;default:return o}}let a=o.map(u=>Za(u));if(a.length===0)return[];{let c=(await Promise.allSettled(a)).filter(l=>l.status==="fulfilled"&&l.value?.state!=="invalid").map(({value:l})=>l);return e?c.map(l=>({...l,status:_s(l)?"development":"published"})):c.filter(l=>t?_s(l):!_s(l))}}async function yC(t){return(await Promise.allSettled(t.map(r=>Za(r)))).filter(r=>r.status==="fulfilled"&&r.value.state!=="invalid").map(r=>r.value)}async function TC(){return(await ks({idsOnly:!0})).filter(e=>!lr(e))}async function SC(){return(await ks({idsOnly:!0})).filter(e=>lr(e))}function AC(t,e){return t==null||e==null?!1:qe(t)===qe(e)}async function _C(t){return Ge(t,async e=>await e.exists(),{skip_setup:!0})}function pf(t,e,{paginate:r,property:n,getKey:i}={paginate:!0,property:"_id"}){if(!r)return{data:t,hasNextPage:!1};let s=t.length>e,o;return i||(i=a=>n?a?.[n]:a?._id),s&&(o=i(t[e])),{data:t.slice(0,e),hasNextPage:s,nextPage:o}}var mf="_design/database";function IC(){return{_id:mf,views:{}}}async function OC(t,e){if(Vn[e])try{let r=await t.get(mf);for(let n of Vn[e])delete r.views?.[n];await t.put(r)}catch{}}async function Jn(t,e,r){let n;try{n=await t.get(mf)}catch{n=IC()}let i={map:e};n.views={...n.views,[r]:i};try{await t.put(n)}catch(s){if(s.status===409)return await Jn(t,e,r);throw s}}var cT=async()=>{let t=Y(),e=`function(doc) {
|
|
10
10
|
if (doc._id.startsWith("us${R}")) {
|
|
11
11
|
emit(doc.email.toLowerCase(), doc._id)
|
|
12
12
|
}
|
|
13
|
-
}`;await
|
|
13
|
+
}`;await Jn(t,e,"by_email2")},lT=async()=>{let t=Y(),e=`function(doc) {
|
|
14
14
|
if (doc._id.startsWith("us${R}") && doc.roles) {
|
|
15
|
-
for (let
|
|
16
|
-
let emitted =
|
|
15
|
+
for (let prodWorkspaceId of Object.keys(doc.roles)) {
|
|
16
|
+
let emitted = prodWorkspaceId + "${R}" + doc._id
|
|
17
17
|
emit(emitted, null)
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
|
-
}`;await
|
|
20
|
+
}`;await Jn(t,e,"by_app")},dT=async()=>{let t=Y(),e=`function(doc) {
|
|
21
21
|
if (doc._id.startsWith("devinfo") && doc.apiKey) {
|
|
22
22
|
emit(doc.apiKey, doc.userId)
|
|
23
23
|
}
|
|
24
|
-
}`;await
|
|
24
|
+
}`;await Jn(t,e,"by_api_key")};async function Ms(t,e,r,n,i){try{return await r.query(`database/${t}`,e)}catch(s){let o=s&&s.name==="not_found",a=s&&s.status===404;if(o||a)return await OC(r,t),await n(),Ms(t,e,r,n,i);if(s.status===409)return Ms(t,e,r,n,i);throw s}}var hf=async(t,e,r,n,i)=>{let a=(await Ms(t,e,r,n,i)).rows.map(u=>e.include_docs?u.doc:u.value);return i?.arrayResponse?a:a.length<=1?a[0]:a};async function fT(t,e){try{await Ge(de.PLATFORM_INFO.name,async r=>{await Jn(r,t,e)})}catch(r){if(r.status===409&&h.isTest())return;throw r}}var pT=async()=>{let t=`function(doc) {
|
|
25
25
|
if (doc._id.startsWith("acc_metadata${R}")) {
|
|
26
26
|
emit(doc.email.toLowerCase(), doc._id)
|
|
27
27
|
}
|
|
28
|
-
}`;await
|
|
28
|
+
}`;await fT(t,"account_by_email")},mT=async()=>{await fT(`function(doc) {
|
|
29
29
|
if (doc.tenantId) {
|
|
30
30
|
emit(doc._id.toLowerCase(), doc._id)
|
|
31
31
|
}
|
|
@@ -33,7 +33,7 @@ attempted value: ${s}
|
|
|
33
33
|
if (doc.ssoId) {
|
|
34
34
|
emit(doc.ssoId, doc._id)
|
|
35
35
|
}
|
|
36
|
-
}`,"platform_users_lowercase_2")},qs=async(t,e)=>{let r={account_by_email:TT,platform_users_lowercase_2:AT};return We(de.PLATFORM_INFO.name,async n=>{let i=r[t];return Ef(t,e,n,i,{arrayResponse:!0})})},ST={by_email2:hT,by_api_key:gT,by_app:ET},Bt=async(t,e,r,n)=>{r||(r=Y());let i=ST[t];return Ef(t,e,r,i,n)};async function gf(t,e,r){let n=Y(),i=ST[t];return Ws(t,e,n,i,r)}var yf=class{constructor({source:e,target:r}){this.source=Ze(e),this.target=Ze(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([As(this.source),As(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})})}appReplicateOpts(e={}){if(typeof e.filter=="string")return e;let r=e.filter,i=this.direction==="toDev";delete e.filter;let s=e.isCreation,o=e.tablesToSync;delete e.isCreation,delete e.tablesToSync;let a=!1,u;typeof o=="string"&&o==="all"?a=!0:o&&(u=o);let c=(d,f)=>d?.startsWith(f+R),l=d=>c(d,"ro")||c(d,"li");return{...e,filter:(d,f)=>!s&&d._id==="_design/migrations"||i&&d._id.startsWith("_design")?!1:d._deleted||c(d._id,ps)?!0:l(d._id)?!!u?.find(m=>d._id.includes(m))||a:c(d._id,"log_au")||d._id==="app_metadata"?!1:r?r(d,f):!0}}async rollback(){await this.target.destroy(),this.target=Ze(this.target.name),await this.replicate()}},_T=yf;var OT=k(require("node-fetch"));var Qs=ar.removeKeyNumbering;function ln(t){return t==null||t===""}var $t=class t{#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:s}={}){let o=!!this.#f,a=typeof e;return e&&n&&(e=e.toLowerCase?e.toLowerCase():e),!this.#u&&r&&a==="string"&&(e=`${e}`.replace(/[ /#+\-&|!(){}\]^"~*?:\\]/g,"\\$&")),a==="string"&&!isNaN(e)&&!s?e=`"${e}"`:o&&i&&(e=a==="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 s of Object.keys(e)){let o=Qs(s);r[o]?r[o]=r[o].concat(e[s]):r[o]=e[s]}let n={},i=1;for(let[s,o]of Object.entries(r))n[`${i++}:${s}`]=o;return n}buildSearchQuery(){let e=this,r=this.#e&&this.#e.allOr,n=r?"":"*:*",i=!0,s={escape:!0,lowercase:!0,wrap:!0},o="";this.#e.equal.tableId&&(o=this.#e.equal.tableId,delete this.#e.equal.tableId);let a=(p,E)=>ln(E)?null:`${p}:${e.preprocess(E,s)}`,u=(p,E,g="AND")=>{if(ln(E))return null;if(!Array.isArray(E))return`${p}:${E}`;let T=`${e.preprocess(E[0],{escape:!0})}`;for(let _=1;_<E.length;_++)T+=` ${g} ${e.preprocess(E[_],{escape:!0})}`;return`${p}:(${T})`},c=(p,E)=>ln(E)?null:(E=e.preprocess(E,{escape:!0,lowercase:!0,type:"fuzzy"}),`${p}:/.*${E}.*/`),l=(p,E)=>{let g=r?"*:* AND ":"",T=r?"AND":void 0;return g+"NOT "+u(p,E,T)},d=(p,E)=>u(p,E,"OR"),f=(p,E)=>{if(ln(E))return"*:*";if(!Array.isArray(E))if(typeof E=="string")E=E.split(",");else return"";let g=`${e.preprocess(E[0],s)}`;for(let T=1;T<E.length;T++)g+=` OR ${e.preprocess(E[T],s)}`;return`${p}:(${g})`};function m(p,E,g){let T="";for(let[_,S]of Object.entries(p)){_=Qs(_),_=e.preprocess(e.handleSpaces(_),{escape:!0});let w=E(_,S);if(w!=null){if(T.length>0||n.length>0){let y=g?.mode?g.mode:r?"OR":"AND";T+=` ${y} `}T+=w,(typeof S!="string"&&S!=null||typeof S=="string"&&S!==o&&S!=="")&&(i=!1)}}if(g?.returnBuilt)return T;n+=T}if(this.#e.string&&m(this.#e.string,(p,E)=>ln(E)?null:(E=e.preprocess(E,{escape:!0,lowercase:!0,type:"string"}),`${p}:${E}*`)),this.#e.range&&m(this.#e.range,(p,E)=>{if(ln(E)||E.low==null||E.low===""||E.high==null||E.high==="")return null;let g=e.preprocess(E.low,s),T=e.preprocess(E.high,s);return`${p}:[${g} TO ${T}]`}),this.#e.fuzzy&&m(this.#e.fuzzy,c),this.#e.equal&&m(this.#e.equal,a),this.#e.notEqual&&m(this.#e.notEqual,(p,E)=>ln(E)?null:typeof E=="boolean"?`(*:* AND !${p}:${E})`:`!${p}:${e.preprocess(E,s)}`),this.#e.empty&&m(this.#e.empty,p=>(i=!1,`(*:* -${p}:["" TO *])`)),this.#e.notEmpty&&m(this.#e.notEmpty,p=>(i=!1,`${p}:["" TO *]`)),this.#e.oneOf&&m(this.#e.oneOf,f),this.#e.contains&&m(this.#e.contains,u),this.#e.notContains&&m(this.compressFilters(this.#e.notContains),l),this.#e.containsAny&&m(this.#e.containsAny,d),o&&(n=this.isMultiCondition()?`(${n})`:n,r=!1,m({tableId:o},a)),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,s=0;do{let o=Math.min(t.maxLimit,i);this.setLimit(o);let{bookmark:a,rows:u}=await this.#p();this.setBookmark(a),s=u.length,i-=u.length}while(i>0&&s>0);this.#t=r,this.#r=n}async#p(){let{url:e,cookie:r}=lt(),n=`${e}/${this.#l}/_design/database/_search/${this.#d}`,i=this.buildSearchBody();try{return await IT(n,i,r)}catch(s){if(s.status===404&&this.#a)return await this.#a(),await IT(n,i,r);throw s}}};async function IT(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(),s={rows:[],totalRows:0};return i.rows!=null&&i.rows.length>0&&(s.rows=i.rows.map(o=>o.doc)),i.bookmark&&(s.bookmark=i.bookmark),i.total_rows&&(s.totalRows=i.total_rows),s}async function wT(t,e,r,n){let i=n.bookmark,s=n.rows||[];if(n.limit&&s.length>=n.limit)return s;let o=$t.maxLimit;n.limit&&s.length>n.limit-$t.maxLimit&&(o=n.limit-s.length);let a=new $t(t,e,r);a.setVersion(n.version).setBookmark(i).setLimit(o).setSort(n.sort).setSortOrder(n.sortOrder).setSortType(n.sortType),n.tableId&&a.setTable(n.tableId);let u=await a.run();if(!u.rows.length)return s;if(u.rows.length<$t.maxLimit)return[...s,...u.rows];let c={...n,bookmark:u.bookmark,rows:[...s,...u.rows]};return await wT(t,e,r,c)}async function BC(t,e,r,n){let i=n.limit;(i==null||isNaN(i)||i<0)&&(i=50),i=Math.min(i,$t.maxLimit);let s=new $t(t,e,r);n.version&&s.setVersion(n.version),n.tableId&&s.setTable(n.tableId),n.sort&&s.setSort(n.sort).setSortOrder(n.sortOrder).setSortType(n.sortType),n.indexer&&s.setIndexBuilder(n.indexer),n.disableEscaping&&s.disableEscaping();let o=await s.setBookmark(n.bookmark).setLimit(i).run();s.setBookmark(o.bookmark).setLimit(1),n.tableId&&s.setTable(n.tableId);let a=await s.run();return{...o,hasNextPage:a.rows&&a.rows.length>0}}async function $C(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 wT(t,e,r,n)}}var Tf={};P(Tf,{createUserIndex:()=>VC});async function VC(){let t=Y(),e;try{e=await t.get("_design/database")}catch(n){n.status===404&&(e={_id:"_design/database"})}let r=function(n){if(n._id&&!n._id.startsWith("us_"))return;let i=["_id","_rev","password","account","license","budibaseAccess","accountPortalAccess","csrfToken"];function s(o,a){for(let u of Object.keys(o)){if(i.includes(u))continue;let c=a!=null?`${a}.${u}`:u;typeof o[u]=="string"?index(c,o[u].toLowerCase(),{facet:!0}):typeof o[u]!="object"?index(c,o[u],{facet:!0}):s(o[u],c)}}s(n)};e.indexes={user:{index:r.toString(),analyzer:{default:"keyword",name:"perfield"}}},await t.put(e)}function DT(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)}function GC(t){return DT(t,409)}var Ks=k(require("path")),RT=require("os"),bT=k(require("fs"));var CT=k(require("stream")),WC={BACKUPS:h.BACKUPS_BUCKET_NAME,APPS:h.APPS_BUCKET_NAME,TEMPLATES:h.TEMPLATES_BUCKET_NAME,GLOBAL:h.GLOBAL_BUCKET_NAME,PLUGINS:h.PLUGIN_BUCKET_NAME,TEMP:h.TEMP_BUCKET_NAME},xT=(0,Ks.join)((0,RT.tmpdir)(),".budibase");try{bT.default.mkdirSync(xT)}catch(t){if(t.code!=="EEXIST")throw t}function dn(){return xT}var nu=(t,e)=>{let n={Rules:[{ID:`${t}-ExpireAfter${e}days`,Prefix:"",Status:"Enabled",Expiration:{Days:e}}]};return{Bucket:t,LifecycleConfiguration:n}};async function qC(t){let e=await fetch(t.url);if(!e.ok||!e.body)throw new Error(`Unexpected response ${e.statusText}`);let r=Ks.default.basename(new URL(t.url).pathname);if(!e.body)throw new Error("No response received for attachment");return{filename:t.filename||r,content:CT.default.Readable.fromWeb(e.body)}}async function vT(t){let e=Af(t.url);if(e===null)throw new Error("Invalid signed URL");let{bucket:r,path:n}=e,i=await iu(r,n),s=Ks.default.basename(n);return{bucket:r,path:n,filename:t.filename||s,content:i}}async function QC(t){return t.url?.startsWith("http://")||t.url?.startsWith("https://")?await qC(t):await vT(t)}var KC=require("sanitize-s3-objectkey"),jC={bucketCreationPromises:{}},Df="/files/signed",gr={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"},YC=[gr.html,gr.css,gr.js,gr.json];function _e(t){return KC(Ne(t)).replace(/\\/g,"/")}function Ne(t){return t.replace(new RegExp(Je,"g"),ze)}function ht(t={presigning:!1}){let e={forcePathStyle:!0,credentials:{accessKeyId:h.MINIO_ACCESS_KEY,secretAccessKey:h.MINIO_SECRET_KEY},region:h.AWS_REGION};return!h.MINIO_ENABLED&&h.AWS_SESSION_TOKEN&&(e.credentials={accessKeyId:h.MINIO_ACCESS_KEY,secretAccessKey:h.MINIO_SECRET_KEY,sessionToken:h.AWS_SESSION_TOKEN}),h.MINIO_URL&&(t.presigning&&h.MINIO_ENABLED?e.endpoint="http://minio-service":e.endpoint=h.MINIO_URL),new ou.S3(e)}async function Hs(t,e){e=Ne(e);try{return await t.headBucket({Bucket:e}),{created:!1,exists:!0}}catch(r){let n=r.statusCode||r.$response?.statusCode,i=jC.bucketCreationPromises,s=n===404,o=n===403;if(i[e])return await i[e],{created:!1,exists:!0};if(s||o){if(s)return i[e]=t.createBucket({Bucket:e}).catch(a=>{if(a.Code!=="BucketAlreadyOwnedByYou")throw a}),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.")}}async function HC({bucket:t,filename:e,path:r,type:n,metadata:i,body:s,ttl:o}){let a=e.split(".").pop(),u=r?(await js.default.open(r)).createReadStream():s,c=ht(),l=await Hs(c,t);if(o&&l.created){let E=nu(t,o);await c.putBucketLifecycleConfiguration(E)}let d=n,f=d||(a?gr[a.toLowerCase()]:gr.txt),m={Bucket:Ne(t),Key:_e(e),Body:u,ContentType:f};if(i&&typeof i=="object"){for(let E of Object.keys(i))(!i[E]||typeof i[E]!="string")&&delete i[E];m.Metadata=i}return new Sf.Upload({client:c,params:m}).done()}async function NT({bucket:t,stream:e,filename:r,type:n,extra:i,ttl:s}){return await Tr.default.trace("streamUpload",async o=>{if(o.addTags({bucketName:t,filename:r,type:n,ttl:s}),!e)throw new Error("Stream to upload is invalid/undefined");let a=r.split(".").pop(),u=ht(),c=await Hs(u,t);if(o.addTags({bucketCreated:c.created,bucketExists:c.exists,extension:a}),s&&c.created){let T=nu(t,s);await u.putBucketLifecycleConfiguration(T)}r?.endsWith(".js")?i={...i,ContentType:"application/javascript"}:r?.endsWith(".svg")&&(i={...i,ContentType:"image"});let l=n;l||(l=a?gr[a.toLowerCase()]:gr.txt),o.addTags({contentType:l});let d=Ne(t),f=_e(r),m={Bucket:d,Key:f,Body:e,ContentType:l,...i},E=await new Sf.Upload({client:u,params:m}).done(),g=await u.headObject({Bucket:d,Key:f});return o.addTags({contentLength:g.ContentLength}),{...E,ContentLength:g.ContentLength}})}async function UT(t,e){return await Tr.default.trace("retrieve",async r=>{r.addTags({bucketName:t,filepath:e});let n=ht(),i={Bucket:Ne(t),Key:_e(e)},s=await n.getObject(i);if(!s.Body)throw new Error("Unable to retrieve object");if(r.addTags({contentLength:s.ContentLength,contentType:s.ContentType}),YC.includes(s.ContentType))return r.addTags({string:!0}),s.Body.transformToString();{r.addTags({string:!1});let o=s.Body.transformToWebStream();return au.default.Readable.fromWeb(o)}})}async function*LT(t,e){let r=ht(),n=(o={})=>r.listObjectsV2({...o,Bucket:Ne(t),Prefix:_e(e)}),i=!1,s;do{let o={};s&&(o.ContinuationToken=s);let a=await n(o);if(a.Contents)for(let u of a.Contents)yield u;i=!!a.IsTruncated,s=a.NextContinuationToken}while(i&&s)}async function Ar(t,e,r=3600){let n=ht({presigning:!0}),i={Bucket:Ne(t),Key:_e(e)},s=await(0,PT.getSignedUrl)(n,new ou.GetObjectCommand(i),{expiresIn:r});if(h.MINIO_ENABLED){let o=new URL(s),a=o.pathname,u=o.search;return`${Df}${a}${u}`}else return s}async function zC(t,e){return await Tr.default.trace("retrieveToTmp",async r=>{r.addTags({bucketName:t,filepath:e}),t=Ne(t),e=_e(e);let n=await UT(t,e),i=(0,yr.join)(dn(),(0,Of.v4)());return r.addTags({outputPath:i}),n instanceof au.default.Readable?(r.addTags({stream:!0}),await(0,Ys.pipeline)(n,Xn.default.createWriteStream(i))):(r.addTags({stream:!1}),Xn.default.writeFileSync(i,n)),i})}async function JC(t,e){return await Tr.default.trace("retrieveDirectory",async r=>{r.addTags({bucketName:t,path:e});let n=(0,yr.join)(dn(),(0,Of.v4)());await js.default.mkdir(n,{recursive:!0});let i=0;return await Xt.parallelForeach(LT(t,e),async s=>{i++,await Tr.default.trace("retrieveDirectory.object",async o=>{let a=s.Key;o.addTags({filename:a});let u=await iu(t,a),c=a.split("/"),l=c.slice(0,c.length-1),d=(0,yr.join)(n,...l);c.length>1&&!Xn.default.existsSync(d)&&await js.default.mkdir(d,{recursive:!0}),await(0,Ys.pipeline)(u,Xn.default.createWriteStream((0,yr.join)(n,...c),{mode:420}))})},5),r.addTags({numObjects:i}),n})}async function ZC(t,e){let r=ht();await Hs(r,t);let n={Bucket:t,Key:_e(e)};return r.deleteObject(n)}async function XC(t,e){let r=ht();await Hs(r,t);let n={Bucket:t,Delete:{Objects:e.map(i=>({Key:_e(i)}))}};return r.deleteObjects(n)}async function MT(t,e){t=Ne(t),e=_e(e);let r=ht(),n={Bucket:t,Prefix:e},i=await r.listObjects(n);if(i.Contents?.length===0)return;let s={Bucket:t,Delete:{Objects:[]}};if(i.Contents?.forEach(o=>{s.Delete.Objects.push({Key:o.Key})}),s.Delete.Objects.length&&(await r.deleteObjects(s)).Deleted?.length===1e3)return MT(t,e)}async function Rf(t,e,r){return await Tr.default.trace("uploadDirectory",async n=>{n.addTags({bucketName:t,localPath:e,bucketPath:r}),t=Ne(t);let i=await js.default.readdir(e,{withFileTypes:!0});n.addTags({numFiles:i.length});for(let s of i){let o=_e((0,yr.join)(r,s.name)),a=(0,yr.join)(e,s.name);s.isDirectory()?await Rf(t,a,o):await NT({bucket:t,filename:o,stream:Xn.default.createReadStream(a)})}return i})}async function ex(t,e,r={}){e=_e(e);let n=await(0,_f.default)(t,{headers:r});if(!n.ok)throw new Error(`unexpected response ${n.statusText}`);await(0,Ys.pipeline)(n.body,wf.default.createUnzip(),If.default.extract(e))}async function tx(t,e,r){e=Ne(e),r=_e(r);let n=await(0,_f.default)(t);if(!n.ok)throw new Error(`unexpected response ${n.statusText}`);let i=(0,yr.join)(dn(),r);return await(0,Ys.pipeline)(n.body,wf.default.createUnzip(),If.default.extract(i)),!h.isTest()&&h.SELF_HOSTED&&await Rf(e,i,r),i}async function iu(t,e){return await Tr.default.trace("getReadStream",async r=>{t=Ne(t),e=_e(e),r.addTags({bucketName:t,path:e});let n=ht(),i={Bucket:t,Key:e},s=await n.getObject(i);if(!s.Body||!(s.Body instanceof au.default.Readable))throw new Error("Unable to retrieve stream - invalid response");return r.addTags({contentLength:s.ContentLength,contentType:s.ContentType}),s.Body})}async function rx(t,e){t=Ne(t),e=_e(e);let r=ht(),n={Bucket:t,Key:e};try{return await r.headObject(n)}catch{throw new Error("Unable to retrieve metadata from object")}}function Af(t){let e=t.split("?")[0],r=new RegExp(`^${Df}/(?<bucket>[^/]+)/(?<path>.+)$`),n=e.match(r);if(n&&n.groups){let{bucket:i,path:s}=n.groups;return{bucket:i,path:s}}return null}var kT=k(require("aws-cloudfront-sign")),uu;function nx(){if(!h.CLOUDFRONT_PRIVATE_KEY_64)throw new Error("CLOUDFRONT_PRIVATE_KEY_64 is not set");return uu||(uu=Buffer.from(h.CLOUDFRONT_PRIVATE_KEY_64,"base64").toString("utf-8"),uu)}var ix=()=>({keypairId:h.CLOUDFRONT_PUBLIC_KEY_ID,privateKeyString:nx(),expireTime:new Date().getTime()+1e3*60*60*24}),ei=t=>{let e=bf(t);return kT.getSignedUrl(e,ix())},bf=t=>{let e="/";return t.startsWith("/")&&(e=""),`${h.CLOUDFRONT_CDN}${e}${t}`};var FT=k(require("querystring"));function BT(t){return`${_e(t)}/budibase-client.js`}async function sx(t,e){let r=BT(t);return h.CLOUDFRONT_CDN?(e&&(r+=`?v=${e}`),bf(r)):await Ar(h.APPS_BUCKET_NAME,r)}function ox(t,e){let r,n;try{r=V()}finally{n={appId:t,version:e}}return r&&r!==oe&&(n.tenantId=r),`/api/assets/client?${FT.default.encode(n)}`}async function $T(t){return h.CLOUDFRONT_CDN?ei(t):await Ar(h.APPS_BUCKET_NAME,t)}async function ax(t){if(t.length===0)return[];try{return await Promise.all(t.map(async e=>({...e,src:await $T(e.src),type:e.type||"image/png"})))}catch(e){return console.error("Error enriching PWA images:",e),t}}var ux=async(t,e,r)=>{let n=VT(t,e);return h.CLOUDFRONT_CDN?(r&&(n=`${n}?etag=${r}`),ei(n)):await Ar(h.GLOBAL_BUCKET_NAME,n)},VT=(t,e)=>{let r=`${t}/${e}`;return h.MULTI_TENANCY&&(r=`${V()}/${r}`),r};async function cx(t){return!t||!t.length?[]:await Promise.all(t.map(async e=>{let r=await lx(e),n=await dx(e);return{...e,jsUrl:r,iconUrl:n}}))}async function lx(t){let e=WT(t);return GT(e)}async function dx(t){let e=qT(t);if(e)return GT(e)}async function GT(t){return h.CLOUDFRONT_CDN?ei(t):await Ar(h.PLUGIN_BUCKET_NAME,t)}function WT(t){return QT(t,"plugin.min.js")}function qT(t){let e=t.iconUrl?"icon.svg":t.iconFileName;if(e)return QT(t,e)}function QT(t,e){return`${KT(t.name)}/${e}`}function KT(t){let e=`${t}`;return h.MULTI_TENANCY&&(e=`${V()}/${e}`),h.CLOUDFRONT_CDN&&(e=`plugins/${e}`),e}var HT="budibase.log",zT="budibase-logs-history.txt",JT=vf.default.join(dn(),"systemlogs");function jT(t){return vf.default.join(JT,t)}function ZT(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}}function Pf(){let t=ZT(h.ROLLING_LOG_MAX_SIZE);return YT.createStream(HT,{size:t?.size,path:JT,maxFiles:t?.totalHistoryFiles||1,immutable:!0,history:zT,initialRotation:!1})}function fx(){let t=[],e=jT(zT);if(zs.default.existsSync(e)){let i=zs.default.readFileSync(e,"utf-8").split(`
|
|
37
|
-
`);for(let s of i.filter(o=>o))t.push(zs.default.readFileSync(s))}return t.push(zs.default.readFileSync(jT(HT))),Buffer.concat(t.map(n=>new Uint8Array(n)))}function px(t){return typeof t=="object"&&t!==null&&!(t instanceof Error)}function mx(t){return t instanceof Error}function hx(t){return typeof t=="string"}var Sr;if(!h.DISABLE_PINO_LOGGER){let t=h.LOG_LEVEL,e={level:t,formatters:{level:u=>({level:u.toUpperCase()}),bindings:()=>h.SELF_HOSTED?{service:h.SERVICE_NAME}:{}},timestamp:()=>`,"timestamp":"${new Date(Date.now()).toISOString()}"`},r=[];r.push(h.isDev()?{stream:(0,XT.default)({singleLine:!0}),level:t}:{stream:process.stdout,level:t}),h.SELF_HOSTED&&r.push({stream:Pf(),level:t}),Sr=r.length?(0,cu.default)(e,cu.default.multistream(r)):(0,cu.default)(e);let n=u=>{let c,l=[],d="";u.forEach(g=>{hx(g)&&(d=`${d} ${g}`.trimStart()),px(g)&&l.push(g),mx(g)&&(c=g)});let f=a(),m={};m={tenantId:i(),appId:s(),automationId:o(),identityId:f?._id,identityType:f?.type,correlationId:uf()};let p=Uf.default.scope().active();p&&Uf.default.inject(p.context(),eA.formats.LOG,m);let E={err:c,pid:process.pid,...m};if(l.length){let g={},T=0;for(let _=0;_<l.length;_++){let S=l[_],w=S._logKey;w?(delete S._logKey,E[w]=S):(g[T]=S,T++)}Object.keys(g).length&&(E.data=g)}return[E,d]};console.log=(...u)=>{let[c,l]=n(u);Sr?.info(c,l)},console.info=(...u)=>{let[c,l]=n(u);Sr?.info(c,l)},console.warn=(...u)=>{let[c,l]=n(u);Sr?.warn(c,l)},console.error=(...u)=>{let[c,l]=n(u);Sr?.error(c,l)},console.trace=(...u)=>{let[c,l]=n(u);c.err||(c.err=new Error),Sr?.trace(c,l)},console.debug=(...u)=>{let[c,l]=n(u);Sr?.debug(c,l)};let i=()=>{let u;try{u=V()}catch{}return u},s=()=>{let u;try{u=Se()}catch{}return u},o=()=>{let u;try{u=qd()}catch{}return u},a=()=>{let u;try{u=Lt()}catch{}return u}}var lu=Sr;var Ex=["AccountError"];function gx(t){return t&&t.suppressAlert}function fn(t,e){e&&Ex.includes(e.name)&&gx(e)||console.error(`bb-alert: ${t}`,e)}function yx(t,e,r,n){t=`${t} - db: ${e} - doc: ${r} - error: `,fn(t,n)}function ti(t,e){console.warn(`bb-warn: ${t}`,e)}var Zs=class{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";Bs.setHeader(n.headers);let s={method:e,body:i?JSON.stringify(n.body):n.body,headers:n.headers,credentials:"include"};return await(0,tA.default)(`${this.host}${r}`,s)}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 Lf=new Zs(h.INTERNAL_ACCOUNT_PORTAL_URL),Mf=h.SELF_HOSTED||h.DISABLE_ACCOUNT_PORTAL,_r=async t=>{if(Mf)return;let e={email:t},r=await Lf.post("/api/accounts/search",{body:e,headers:{"x-budibase-api-key":h.ACCOUNT_PORTAL_API_KEY}});if(r.status!==200)throw new Error(`Error getting account by email ${t}`);return(await r.json())[0]},ri=async t=>{if(Mf)return;let e={tenantId:t},r=await Lf.post("/api/accounts/search",{body:e,headers:{"x-budibase-api-key":h.ACCOUNT_PORTAL_API_KEY}});if(r.status!==200)throw new Error(`Error getting account by tenantId ${t}`);return(await r.json())[0]},Tx=async()=>{if(Mf)return;let t=await Lf.get("/api/status",{headers:{"x-budibase-api-key":h.ACCOUNT_PORTAL_API_KEY}}),e=await t.json();if(t.status!==200)throw new Error("Error getting status");return e};var di={};P(di,{UserDB:()=>wt,addAppBuilder:()=>dU,bulkGetGlobalUsersById:()=>$u,bulkUpdateGlobalUsers:()=>go,cleanseUserObject:()=>Ap,creatorsInList:()=>mn,doesUserExist:()=>oU,getAccountHolderFromUsers:()=>Du,getAllUserIds:()=>iU,getAllUsers:()=>sU,getById:()=>gn,getCreatorCount:()=>cU,getExistingAccounts:()=>ii,getExistingPlatformUsers:()=>uA,getExistingTenantUsers:()=>aA,getFirstPlatformUser:()=>eo,getGlobalUserByAppPage:()=>nS,getGlobalUserByEmail:()=>yt,getPlatformUsers:()=>mu,getUserCount:()=>uU,hasAdminPermissions:()=>wr,hasAppBuilderPermissions:()=>dA,hasBuilderPermissions:()=>Xe,isAdmin:()=>Or,isAdminOrBuilder:()=>lA,isBuilder:()=>ai,isCreatorAsync:()=>to,isCreatorSync:()=>Ou,isGlobalBuilder:()=>cA,paginatedUsers:()=>sS,removeAppBuilder:()=>fU,removePortalUserPermissions:()=>lU,searchExistingEmails:()=>jf,searchGlobalUsersByApp:()=>Vu,searchGlobalUsersByAppAccess:()=>Tp,searchGlobalUsersByEmail:()=>iS,validateUniqueUser:()=>wu});var Yf={};P(Yf,{creatorsInList:()=>mn,getAccountHolderFromUsers:()=>Du,hasAdminPermissions:()=>wr,hasAppBuilderPermissions:()=>dA,hasBuilderPermissions:()=>Xe,isAdmin:()=>Or,isAdminOrBuilder:()=>lA,isBuilder:()=>ai,isCreatorAsync:()=>to,isCreatorSync:()=>Ou,isGlobalBuilder:()=>cA,validateUniqueUser:()=>wu});var Kf={};P(Kf,{createCode:()=>Mx,deleteCode:()=>Fx,getCode:()=>kx,getExistingInvites:()=>Qf,getInviteCodes:()=>oA,updateCode:()=>Lx});var ni={};P(ni,{Duration:()=>me,DurationType:()=>qf,clearCookie:()=>Ir,compare:()=>Bf,getAppIdFromCtx:()=>Cx,getCookie:()=>Vt,hasCircularStructure:()=>Px,hash:()=>Ff,isAudited:()=>Gf,isClient:()=>vx,isPublicApiRequest:()=>bx,isServingApp:()=>wx,isServingBuilder:()=>Dx,isServingBuilderPreview:()=>Rx,isValidInternalAPIKey:()=>Xs,newid:()=>ee,openJwt:()=>fu,setCookie:()=>iA,time:()=>Ux,timeout:()=>Vf,urlHasProtocol:()=>Nx,validEmail:()=>Wf});var kf=h.JS_BCRYPT?require("bcryptjs"):require("bcrypt"),Ax=h.SALT_ROUNDS||10;async function Ff(t){let e=await kf.genSalt(Ax);return kf.hash(t,e)}async function Bf(t,e){return kf.compare(t,e)}var du=k(require("jsonwebtoken"));var $f="app"+R,rA="/app/",Sx="/builder",_x=`${Sx}/workspace/`,Ix="/api/public/v";async function Ox(t){let r=`/${t.path.split("/")[2].toLowerCase()}`,n=V();!h.isDev()&&h.MULTI_TENANCY&&(n=Ms(t,{includeStrategies:["subdomain"]}));let s=(await be(n,()=>Gs({dev:!1}))).filter(o=>o.url&&o.url.toLowerCase()===r)[0];return s&&s.appId?s.appId:void 0}function wx(t){return t.path.startsWith(`/${$f}`)?!0:t.path.startsWith(rA)}function Dx(t){return t.path.startsWith(_x)}function Rx(t){return nA(t.path)}function nA(t){return new RegExp(/^\/app\/app_\w+\/preview$/).test(t)}function bx(t){return t.path.startsWith(Ix)}async function Cx(t){let e;function r(a){return!a||!a.startsWith($f)?e:(e&&e!==a&&t.throw("App id conflict",403),e??a)}let n=t.request.headers["x-budibase-app-id"]||[];typeof n=="string"&&(n=[n]);for(let a of n)e=r(a);t.request.body&&t.request.body.appId&&(e=r(t.request.body.appId));let i=xx(t.path);i&&(e=r(i)),t.query?.appId&&(e=r(t.query?.appId));let s=nA(t.path);return t.path.startsWith(rA)&&!s&&(e=r(await Ox(t))),e}function xx(t){if(t)return t.split("?")[0].split("/").find(e=>e.startsWith($f))}function fu(t){if(t)try{return du.default.verify(t,h.JWT_SECRET)}catch(e){if(h.JWT_SECRET_FALLBACK)return du.default.verify(t,h.JWT_SECRET_FALLBACK);throw e}}function Xs(t){return h.INTERNAL_API_KEY&&h.INTERNAL_API_KEY===t?!0:!!(h.INTERNAL_API_KEY_FALLBACK&&h.INTERNAL_API_KEY_FALLBACK===t)}function Vt(t,e){let r=t.cookies.get(e);if(r)return fu(r)}function iA(t,e,r="builder",n={sign:!0}){e&&n&&n.sign&&(e=du.default.sign(e,h.JWT_SECRET));let i={expires:La,path:"/",httpOnly:!1,overwrite:!0};h.COOKIE_DOMAIN&&(i.domain=h.COOKIE_DOMAIN),t.cookies.set(r,e,i)}function Ir(t,e){iA(t,null,e)}function vx(t){return t.headers["x-budibase-type"]==="client"}function Vf(t){return new Promise(e=>setTimeout(e,t))}function Gf(t){return!!wm[t]}function Px(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}function Nx(t){return!!t.match(/^.+:\/\/.+$/)}function Wf(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,}))$/)}var qf=(s=>(s.MILLISECONDS="milliseconds",s.SECONDS="seconds",s.MINUTES="minutes",s.HOURS="hours",s.DAYS="days",s))(qf||{}),pu={milliseconds:1,seconds:1e3,minutes:6e4,hours:36e5,days:864e5},me=class t{constructor(e){this.ms=e}to(e){return this.ms/pu[e]}toMs(){return this.ms}toSeconds(){return this.to("seconds")}static convert(e,r,n){return n*pu[e]/pu[r]}static from(e,r){return new t(r*pu[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 Ux(t){let e=performance.now();return[await t(),me.fromMilliseconds(performance.now()-e)]}var sA=me.fromDays(7).toSeconds();async function Lx(t,e){await(await nn()).store(t,e,sA)}async function Mx(t,e){let r=ee();return await(await nn()).store(r,{email:t,info:e},sA),r}async function kx(t){let r=await(await nn()).get(t);if(!r)throw"Invitation is not valid or has expired, please request a new one.";return r}async function Fx(t){await(await nn()).delete(t)}async function oA(){let r=(await(await nn()).scan()).map(i=>({...i.value,code:i.key}));if(!h.MULTI_TENANCY)return r;let n=V();return r.filter(i=>n===i.info.tenantId)}async function Qf(t){return(await oA()).filter(e=>t.includes(e.email))}async function jf(t){let e=[],r=await aA(t);e.push(...r.map(o=>o.email));let n=await uA(t);e.push(...n.map(o=>o._id));let i=await ii(t);e.push(...i.map(o=>o.email));let s=await Qf(t);return e.push(...s.map(o=>o.email)),[...new Set(e.map(o=>o.toLowerCase()))]}async function mu(t){return await qs("platform_users_lowercase_2",{keys:[t.toLowerCase()],include_docs:!0})}async function eo(t){return(await mu(t))[0]??null}async function aA(t){let r={keys:t.map(i=>i.toLowerCase()),include_docs:!0},n={arrayResponse:!0};return await Bt("by_email2",r,void 0,n)}async function uA(t){let r={keys:t.map(n=>n.toLowerCase()),include_docs:!0};return await qs("platform_users_lowercase_2",r)}async function ii(t){let r={keys:t.map(n=>n.toLowerCase()),include_docs:!0};return await qs("account_by_email",r)}var Iu={};P(Iu,{BadRequestError:()=>gu,BudibaseError:()=>si,EmailUnavailableError:()=>Gt,FeatureDisabledError:()=>Su,ForbiddenError:()=>yu,HTTPError:()=>we,InvalidAPIKeyError:()=>oi,NotFoundError:()=>Eu,NotImplementedError:()=>Tu,UnexpectedError:()=>hu,UsageLimitError:()=>Au,getPublicError:()=>_u});var si=class extends Error{constructor(r,n){super(r);this.code=n}},_u=t=>{let e;return t.code&&(e={code:t.code},t.getPublicError&&(e={...e,...t.getPublicError()})),e},we=class t extends si{constructor(r,n,i="http"){super(r,i);this.status=n}static async fromResponse(r){let n=await r.text(),i=n,s=r.status,o="http";try{let a=JSON.parse(n);i=a.message,s=a.status,o=a.error?.code}catch{}return new t(i,s,o)}},hu=class extends we{constructor(e){super(e,500)}},Eu=class extends we{constructor(e){super(e,404)}},gu=class extends we{constructor(e){super(e,400)}},yu=class extends we{constructor(e){super(e,403)}},Tu=class extends we{constructor(e){super(e,501)}},Au=class extends we{constructor(r,n){super(r,400,"usage_limit_exceeded");this.limitName=n}getPublicError(){return{limitName:this.limitName}}},Su=class extends we{constructor(r,n){super(r,400,"feature_disabled");this.featureName=n}getPublicError(){return{featureName:this.featureName}}},oi=class extends si{constructor(){super("Invalid API key - may need re-generated, or user doesn't exist","invalid_api_key")}},Gt=class extends Error{constructor(e){super(`Email already in use: '${e}'`)}};var ai=Ge.users.isBuilder,Or=Ge.users.isAdmin,cA=Ge.users.isGlobalBuilder,lA=Ge.users.isAdminOrBuilder,wr=Ge.users.hasAdminPermissions,Xe=Ge.users.hasBuilderPermissions,dA=Ge.users.hasAppBuilderPermissions;async function mn(t,e){let r=[...new Set(t.filter(i=>i.userGroups).flatMap(i=>i.userGroups))];return e=await Y().getMultiple(r,{allowMissing:!0}),t.map(i=>Ou(i,e))}async function to(t){let e=[];return t.userGroups&&(e=await Y().getMultiple(t.userGroups)),Ou(t,e)}function Ou(t,e){let r=Ge.users.isCreator(t);return!r&&t?$x(t,e):r}function $x(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}async function wu(t,e){if(h.MULTI_TENANCY){let r=await eo(t);if(r!=null&&r.tenantId!==e)throw new Gt(t)}if(!h.SELF_HOSTED&&!h.DISABLE_ACCOUNT_PORTAL){let r=await _r(t);if(r&&r.verified&&r.tenantId!==e)throw new Gt(t)}}async function Du(t){if(!h.SELF_HOSTED&&!h.DISABLE_ACCOUNT_PORTAL){let e=await ii(t.map(r=>r.email));return t.find(r=>e.map(n=>n.email).includes(r.email))}}var li={};P(li,{account:()=>bA,action:()=>CA,ai:()=>UA,analytics:()=>bu,app:()=>xA,auditLog:()=>HA,auth:()=>Fu,automation:()=>vA,backfill:()=>qA,backfillCache:()=>Mu,backup:()=>jA,datasource:()=>PA,email:()=>NA,environmentVariable:()=>YA,group:()=>QA,identification:()=>gt,initAsyncEvents:()=>qN,installation:()=>co,layout:()=>MA,license:()=>LA,org:()=>kA,plugin:()=>KA,processors:()=>rp,publishEvent:()=>A,query:()=>FA,role:()=>ho,rowAction:()=>zA,rows:()=>$A,screen:()=>BA,serve:()=>GA,shutdown:()=>QN,table:()=>VA,user:()=>Ue,view:()=>WA,workspace:()=>JA});var rp={};P(rp,{analyticsProcessor:()=>IA,init:()=>ov,processors:()=>Qt});var bu={};P(bu,{enabled:()=>Ru});var Ru=async()=>Cu();var EA=require("posthog-node");var Vx=t=>t==="served:builder"||t==="served:app:preview"||t==="served:app",Gx=t=>t==="served:app:preview"||t==="served:app";var pA={"served:app":"calendarDay","served:app:preview":"calendarDay","served:builder":"calendarDay"},mA=async t=>{if(!Vx(t))return!1;let e=await Wx(t);if(e){let r=new Date(e.timestamp);switch(pA[t]){case"calendarDay":return r.setDate(r.getDate()+1),r.setHours(0,0,0,0),Date.now()>r.getTime()?(await fA(t,{timestamp:Date.now()}),!1):!0}}else return await fA(t,{timestamp:Date.now()}),!1},hA=t=>{let e=`${Ee.EVENTS_RATE_LIMIT}:${t}`;return Gx(t)&&(e=e+":"+Se()),e},Wx=async t=>{let e=hA(t);return await un(e)},fA=async(t,e)=>{let r=hA(t),n=pA[t],i;switch(n){case"calendarDay":i=86400}await Mt(r,e,i)};var Qx=["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"],ro=class{constructor(e){if(!e)throw new Error("Posthog token is not defined");this.posthog=new EA.PostHog(e)}async processEvent(e,r,n,i){if(Qx.includes(e)||await mA(e))return;n=this.clearPIIProperties(n),n.version=h.VERSION,n.service=h.SERVICE,n.environment=r.environment,n.hosting=r.hosting;let s=Se();s&&(n.appId=s);let o={distinctId:r.id,event:e,properties:n};i&&(o.timestamp=new Date(i)),(r.installationId||r.tenantId)&&(o.groups={},r.installationId&&(o.groups.installation=r.installationId,o.properties.installationId=r.installationId),r.tenantId&&(o.groups.tenant=r.tenantId,o.properties.tenantId=r.tenantId)),this.posthog.capture(o)}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 gA=ro;var Kx=["installation:version:upgraded","installation:version:downgraded"],jx=["installation","tenant"],no=class{constructor(){h.POSTHOG_TOKEN&&!h.isTest()&&(this.posthog=new gA(h.POSTHOG_TOKEN))}async processEvent(e,r,n,i){!Kx.includes(e)&&!await Ru()||this.posthog&&await this.posthog.processEvent(e,r,n,i)}async identify(e,r){!jx.includes(e.type)&&!await Ru()||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 Hf=h.SELF_HOSTED&&!h.isDev(),io=class{async processEvent(e,r,n){Hf||console.log(`[audit] [identityType=${r.type}] ${e}`,n)}async identify(e){Hf||console.log("[audit] identified",e)}async identifyGroup(e){Hf||console.log("[audit] group identified",e)}async shutdown(){}};var tp={};P(tp,{BudibaseQueue:()=>Et,InMemoryQueue:()=>xu,JobQueue:()=>ui,QueuedProcessor:()=>ep,UnretriableError:()=>Nu,shutdown:()=>nv});var yA=k(require("events"));function Yx(t){let e="",r=-1,n,i,s=t.opts?.repeat;return s&&(i=s.endDate?new Date(s.endDate).getTime():Date.now(),n=s.tz,"cron"in s?e=s.cron:r=s.every),{id:t.id.toString(),name:"",key:t.id.toString(),tz:n,endDate:i,cron:e,every:r,next:0}}var xu=class{constructor(e,r){this._name=e,this._opts=r,this._messages=[],this._emitter=new yA.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((u,c)=>{r(n,(d,f)=>{d?c(d):u(f)})})}let s=this._attempts;async function o(u,c=0){try{return await u}catch(l){if(c++,c<s&&!n._isDiscarded)return await Pe.wait(100*c),await o(i(),c);throw l}}try{let u=await o(i());this._emitter.emit("completed",n,u);let c=this._messages.indexOf(n);if(c===-1)throw"Failed deleting a processed message";this._messages.splice(c,1)}catch(u){console.error(u),this._emitter.emit("error",n,u)}this._runCount++;let a=n.opts?.jobId?.toString();a&&n.opts?.removeOnComplete&&this._queuedJobIds.delete(a)})}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 s=ee(),o=()=>{let u={id:s,timestamp:Date.now(),queue:this,data:e,opts:n,discard:async()=>{u._isDiscarded=!0}};this._messages.push(u),this._messages.length>1e3&&this._messages.shift(),this._addCount++,this._emitter.emit("message",u)},a=n?.delay;return a?setTimeout(o,a):o(),{id:i,finished:()=>new Promise((u,c)=>{let l=(f,m)=>{f.id===s&&(this._emitter.off("error",l),this._emitter.off("completed",d),c(m))},d=(f,m)=>{f.id===s&&(this._emitter.off("error",l),this._emitter.off("completed",d),u(m))};this._emitter.on("error",l),this._emitter.on("completed",d)})}}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=>Yx(e))}async whenCurrentJobsFinished(){do await Vf(50);while(this.hasRunningJobs())}hasRunningJobs(){return this._addCount>this._runCount}},TA=xu;var Zf=k(require("bull"));var ui=(a=>(a.AUTOMATION="automationQueue",a.APP_BACKUP="appBackupQueue",a.AUDIT_LOG="auditLogQueue",a.SYSTEM_EVENT_QUEUE="systemEventQueue",a.APP_MIGRATION="appMigration",a.DOC_WRITETHROUGH_QUEUE="docWritethroughQueue",a.DEV_REVERT_PROCESSOR="devRevertProcessorQueue",a))(ui||{});function AA(t,e,r){Jx(t,e),r&&Hx(t,r)}function Hx(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 s of i)s.id===n&&await t.removeRepeatableByKey(s.key);console.log(`jobId=${n} disabled`)}})}function et(t,e,r={},n={}){let i=`[BULL] ${t}=${e}`,s=r.error,o={_logKey:"bull",eventType:t,event:e,job:r.job,jobId:r.jobId||r.job?.id,...n},a;return r.job?.data?.automation&&(a={_logKey:"automation",trigger:r.job?r.job.data.automation.definition.trigger.event:void 0}),[i,s,o,a]}var zx={automationQueue:"automation-event",appBackupQueue:"app-backup-event",auditLogQueue:"audit-log-event",systemEventQueue:"system-event",appMigration:"app-migration",docWritethroughQueue:"doc-writethrough",devRevertProcessorQueue:"dev-revert-event"};function Jx(t,e){let r=zx[e];function n(i,s){let o=i.data.event?.appId;if(o)return Wd(o,s);s()}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,s)=>{await n(i,()=>{console.info(...et(r,"progress",{job:i},{progress:s}))})}).on("completed",async(i,s)=>{await n(i,()=>{console.info(...et(r,"completed",{job:i},{result:s}))})}).on("failed",async(i,s)=>{await n(i,()=>{console.error(...et(r,"failed",{job:i,error:s}))})}).on("paused",()=>{console.info(...et(r,"paused"))}).on("resumed",()=>{console.info(...et(r,"resumed"))}).on("cleaned",(i,s)=>{console.info(...et(r,"cleaned",{},{length:i.length,type:s}))}).on("drained",()=>{console.info(...et(r,"drained"))}).on("removed",i=>{console.info(...et(r,"removed",{job:i}))})}var vu={};P(vu,{cleanup:()=>Zx,clear:()=>Jf,set:()=>zf});var so=[];function zf(t,e){let r=setInterval(t,e);return so.push(r),r}function Jf(t){let e=so.indexOf(t);e!==-1&&so.splice(e,1),clearInterval(t)}function Zx(){for(let t of so)clearInterval(t);so=[]}var qt=k(require("dd-trace")),oo=k(require("object-sizeof")),Xx=me.fromMinutes(5).toMs(),ev=me.fromSeconds(30).toMs(),Xf=me.fromSeconds(60).toMs(),ao=[],Pu;async function SA(){for(let t of ao)await t.clean(Xf,"completed"),await t.clean(Xf,"failed")}async function tv(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)}}function _A(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}}function rv(t){return{"job.id":t.id,"job.attemptsMade":t.attemptsMade,"job.timestamp":t.timestamp,"job.data.sizeBytes":(0,oo.default)(t.data),..._A(t.opts||{})}}var Et=class{constructor(e,r={}){this.opts=r,this.jobQueue=e,this.queue=this.initQueue()}get name(){return this.queue.name}initQueue(){let r={redis:tn(),settings:{maxStalledCount:this.opts.maxStalledCount?this.opts.maxStalledCount:0,lockDuration:Xx,lockRenewTime:ev}};this.opts.jobOptions&&(r.defaultJobOptions=this.opts.jobOptions);let n;return h.isTest()?process.env.BULL_TEST_REDIS_PORT&&!isNaN(+process.env.BULL_TEST_REDIS_PORT)?n=new Zf.default(this.jobQueue,{...r,redis:{host:"localhost",port:+process.env.BULL_TEST_REDIS_PORT}}):n=new TA(this.jobQueue,r):n=new Zf.default(this.jobQueue,r),AA(n,this.jobQueue,this.opts.removeStalledCb),ao.push(n),!Pu&&!h.isTest()&&(Pu=zf(SA,Xf),SA().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=async(o,a)=>{await qt.default.trace("queue.process",async u=>{if(o.data._parentSpanContext){let c=o.data._parentSpanContext,l={traceId:c.traceId,spanId:c.spanId,toTraceId:()=>c.traceId,toSpanId:()=>c.spanId,toTraceparent:()=>""};u.addLink(l)}u.addTags({"queue.name":this.jobQueue,...rv(o)}),this.opts.jobTags&&u.addTags(this.opts.jobTags(o.data)),qt.default.dogstatsd.distribution("queue.process.sizeBytes",(0,oo.default)(o.data),this.metricTags()),await this.withMetrics("queue.process",()=>a?n(o,a):n(o))})},s;return n.length===1?s=o=>i(o):s=i,r?this.queue.process(r,s):this.queue.process(s)}async add(e,r){return await qt.default.trace("queue.add",async n=>(n.addTags({"queue.name":this.jobQueue,"job.data.sizeBytes":(0,oo.default)(e),..._A(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,oo.default)(e),this.metricTags()),await this.withMetrics("queue.add",()=>this.queue.add(e,r))))}withMetrics(e,r){return tv(e,r,this.metricTags())}metricTags(){return{queueName:this.jobQueue}}close(e){return this.queue.close(e)}whenCurrentJobsFinished(){return this.queue.whenCurrentJobsFinished()}};async function nv(){Pu&&Jf(Pu),console.log("Waiting for current queue jobs to finish...");for(let t of ao)await t.whenCurrentJobsFinished();console.log("Closing queue Redis connections...");for(let t of ao)await t.close();ao=[],console.log("Queues shutdown")}var Nu=class extends Error{constructor(e){super(e),this.name="PermanentError"}},ep=class{constructor(e,r={}){let{maxAttempts:n=3,removeOnFail:i=!0,removeOnComplete:s=!0,maxStalledCount:o=3}=r;this.waitForCompletionMs=r.waitForCompletionMs||1e4,this._queue=new Et(e,{maxStalledCount:o,jobOptions:{attempts:n,removeOnFail:i,removeOnComplete:s}}),this._queue.process(async(a,u)=>{try{let c=await this.processFn(a.data);u?.(null,c)}catch(c){c instanceof Nu&&await a.discard(),fn(`Failed to process job in ${this._queue.name}`,c),u?.(c)}})}async close(e){await this._queue.close(e)}async execute(e){try{let r=await this._queue.add(e);return{success:!0,result:await Pe.withTimeout(this.waitForCompletionMs,()=>r.finished())}}catch(r){if(r.errno!=="ETIME")throw r;return{success:!1,reason:"timeout"}}}};var ci=class t{static{this.auditLogsEnabled=!1}static init(e){t.auditLogsEnabled=!0;let r=e;return t.auditLogQueue=new Et("auditLogQueue",{jobTags:n=>({"event.name":n.event})}),t.auditLogQueue.process(async n=>{await be(n.data.tenantId,async()=>{let i=n.data.properties;i.audited&&(i={...i,...i.audited},delete i.audited);let s={};h.ENABLE_AUDIT_LOG_IP_ADDR&&(s=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:s})})})}async processEvent(e,r,n,i){if(t.auditLogsEnabled&&Gf(e)){let s=r.type==="user"?r.id:void 0;await t.auditLogQueue.add({event:e,properties:n,opts:{userId:s,timestamp:i,appId:Se(),hostInfo:r.hostInfo},tenantId:V()})}}async identify(){}async identifyGroup(){}async shutdown(){await t.auditLogQueue?.close()}};var uo=class{constructor(e){this.initialised=!1;this.processors=[];this.processors=e}async processEvent(e,r,n,i){for(let s of this.processors)await s.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 IA=new no,iv=new io,sv=new ci;function ov(t){return ci.init(t)}var Qt=new uo([IA,iv,sv]);var Uu={};P(Uu,{checkInstallVersion:()=>cv,getInstall:()=>lo,getInstallFromDB:()=>ip});var np=k(require("semver"));var lo=async()=>mr(Ee.INSTALLATION,86400,ip,{useTenancy:!1});async function av(t){let e={_id:de.PLATFORM_INFO.docs.install,installId:ee(),version:h.VERSION};try{let r=await t.put(e);return e._rev=r.rev,e}catch(r){if(r.status===409)return ip();throw r}}var ip=async()=>We(de.PLATFORM_INFO.name,async t=>{let e;try{e=await t.get(de.PLATFORM_INFO.docs.install)}catch(r){if(r.status===404)e=await av(t);else throw r}return e}),uv=async t=>{try{await We(de.PLATFORM_INFO.name,async e=>{let r=await lo();r.version=t,await e.put(r),await zn(Ee.INSTALLATION)})}catch(e){if(e.status===409)return!1;throw e}return!0},cv=async()=>{let t=await lo(),e=t.version,r=h.VERSION;try{if(e!==r){let n=np.default.gt(r,e),i=np.default.lt(r,e);await uv(r)&&(await Es({_id:t.installId,type:"installation"},async()=>{n?await co.upgraded(e,r):i&&await co.downgraded(e,r)}),await gt.identifyInstallationGroup(t.installId))}}catch(n){n?.message?.includes("Invalid Version")?fn(`Invalid version "${r}" - is it semver?`):fn("Failed to retrieve version",n)}};var lv=async()=>{let t=Id(),e=mo(),r;if(t?r=t.type:r="tenant",r==="installation"){let n=await hn(),i=fo();return{id:OA(n,r),hosting:i,type:r,installationId:n,environment:e}}else if(r==="tenant"){let n=await hn(),i=await Lu(V()),s=fo();return{id:OA(i,r),type:r,hosting:s,installationId:n,tenantId:i,realTenantId:V(),environment:e}}else if(r==="user"){let n=t,i=await Lu(V()),s=await hn(),o=n.account,a;return o?a=o.hosting:a=fo(),{id:n._id,type:r,hosting:a,installationId:s,tenantId:i,environment:e,realTenantId:V(),hostInfo:n.hostInfo}}else throw new Error("Unknown identity type")},dv=async(t,e)=>{let r=t,n="installation",i=fo(),s=h.VERSION,o=mo(),a={id:r,type:n,hosting:i,version:s,environment:o};await sp(a,e),await po({...a,id:`$${n}_${r}`},e)},fv=async(t,e,r,n=h.VERSION)=>{let i=await Lu(t),s="tenant",o=await hn(),a=mo(),u={id:i,type:s,hosting:e,environment:a,installationId:o,createdAt:r,createdVersion:n};await sp(u,r),await po({...u,id:`$${s}_${i}`},r)},pv=async(t,e,r)=>{let n=t._id,i=await Lu(t.tenantId),s="user",o=Xe(t),a=wr(t),u;Bo(t)&&(u=t.providerType);let l=(await ii([t.email])).length>0,d=!!e&&l&&e.verified,f=await hn(),m=e?e.hosting:fo(),p=mo();await po({id:n,type:s,hosting:m,installationId:f,tenantId:i,verified:d,accountHolder:l,providerType:u,builder:o,admin:a,environment:p},r)},mv=async t=>{let e=t.accountId,r=t.tenantId,n="user",i=Fo(t)?t.providerType:void 0,s=t.verified,o=!0,a=t.hosting,u=await hn(),c=mo();if(ko(t)){let d=await yt(t.email);d?._id&&(e=d._id)}await po({id:e,type:n,hosting:a,installationId:u,tenantId:r,providerType:i,verified:s,accountHolder:o,environment:c})},po=async(t,e)=>{await Qt.identify(t,e)},sp=async(t,e)=>{await Qt.identifyGroup(t,e)},mo=()=>h.isDev()?"development":h.DEPLOYMENT_ENVIRONMENT,fo=()=>h.SELF_HOSTED?"self":"cloud",hn=async()=>hv()?"account-portal":(await lo()).installId,Lu=async t=>h.SELF_HOSTED?wA(t):t,wA=async t=>be(t,()=>mr(Ee.UNIQUE_TENANT_ID,86400,async()=>{let e=Y(),r=await fi(),n;return r.config.uniqueTenantId?r.config.uniqueTenantId:(n=`${ee()}_${t}`,r.config.uniqueTenantId=n,r.config.createdVersion=h.VERSION,await e.put(r),n)})),hv=()=>h.SERVICE==="account-portal",OA=(t,e)=>e==="installation"||e==="tenant"?`$${e}_${t}`:t,gt={getCurrentIdentity:lv,identifyInstallationGroup:dv,identifyTenantGroup:fv,identifyUser:pv,identifyAccount:mv,identify:po,identifyGroup:sp,getInstallationId:hn,getUniqueTenantId:wA};var Mu={};P(Mu,{end:()=>gv,isAlreadySent:()=>up,isBackfillingEvent:()=>ap,recordEvent:()=>op,start:()=>Ev});var Ev=async t=>Tv({eventWhitelist:t}),op=async(t,e)=>{let r=cp(t,e);await Mt(r,e,void 0,{useTenancy:!1})},gv=async()=>{await Av(),await Sv()},yv=async()=>un(Ee.BACKFILL_METADATA),Tv=async t=>Mt(Ee.BACKFILL_METADATA,t),Av=async()=>{await Us(Ee.BACKFILL_METADATA)},Sv=async()=>{let t=cp(),e=await Za(t);for(let r of e)await Us(r,{useTenancy:!1})},ap=async t=>{let r=(await yv())?.eventWhitelist;return!!(r&&r.includes(t))},up=async(t,e)=>{let r=cp(t,e);return!!await un(r,{useTenancy:!1})},_v={"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}`},cp=(t,e)=>{let r,n=V();if(t){r=`${Ee.EVENTS}:${n}:${t}`;let i=_v[t],s=i?i(e):void 0;s&&(r=`${r}:${s}`)}else r=`${Ee.EVENTS}:${n}:*`;return r};var Kt;function ku(){Kt=new Et("systemEventQueue",{jobTags:t=>({"event.name":t.event})})}async function DA(){Kt&&await Kt.close()}async function RA(t){Kt||ku();let{event:e,identity:r}=t;Om.indexOf(e)!==-1&&r.tenantId&&await Kt.add(t)}var A=async(t,e,r,n)=>{let i=n||await gt.getCurrentIdentity();if(!(n?!1:await ap(t))){await RA({event:t,identity:i,properties:e,timestamp:r}),await Qt.processEvent(t,i,e,r);return}await up(t,e)||(await Qt.processEvent(t,i,e,r),await op(t,e))};async function Iv(t,e){let r={tenantId:t.tenantId};await A("account:created",r,void 0,e)}async function Ov(t){let e={tenantId:t.tenantId};await A("account:deleted",e)}async function wv(t){let e={tenantId:t.tenantId};await A("account:verified",e)}var bA={created:Iv,deleted:Ov,verified:wv};async function Dv(t,e){await A("action:automation_step:executed",t,e)}async function Rv(t,e){await A("action:crud:executed",t,e)}async function bv(t,e){await A("action:ai_agent:executed",t,e)}var CA={aiAgentExecuted:bv,automationStepExecuted:Dv,crudExecuted:Rv};var Cv=async(t,e)=>{let r={appId:t.appId,version:t.version,audited:{name:t.name}};await A("app:created",r,e)};async function xv(t){let e={appId:t.appId,version:t.version,audited:{name:t.name}};await A("app:updated",e)}async function vv(t){let e={appId:t.appId,audited:{name:t.name}};await A("app:deleted",e)}async function Pv(t,e){let r={appId:t.appId,audited:{name:t.name}};await A("app:published",r,e)}async function Nv(t){let e={appId:t.appId,audited:{name:t.name}};await A("app:unpublished",e)}async function Uv(t){let e={appId:t.appId,audited:{name:t.name}};await A("app:file:imported",e)}async function Lv(t,e){let r={duplicateAppId:e,appId:t.appId,audited:{name:t.name}};await A("app:duplicated",r)}async function Mv(t,e){let r={appId:t.appId,templateKey:e,audited:{name:t.name}};await A("app:template:imported",r)}async function kv(t,e,r){let n={appId:t.appId,currentVersion:e,updatedToVersion:r,audited:{name:t.name}};await A("app:version:updated",n)}async function Fv(t,e,r){let n={appId:t.appId,currentVersion:e,revertedToVersion:r,audited:{name:t.name}};await A("app:version:reverted",n)}async function Bv(t){let e={appId:t.appId,audited:{name:t.name}};await A("app:reverted",e)}async function $v(t){let e={appId:t.appId,audited:{name:t.name}};await A("app:exported",e)}var xA={created:Cv,updated:xv,deleted:vv,published:Pv,unpublished:Nv,fileImported:Uv,duplicated:Lv,templateImported:Mv,versionUpdated:kv,versionReverted:Fv,reverted:Bv,exported:$v};async function Vv(t,e){let n={userId:(await gt.getCurrentIdentity()).id,source:t,audited:{email:e}};await A("auth:login",n)}async function Gv(t){let r={userId:(await gt.getCurrentIdentity()).id,audited:{email:t}};await A("auth:logout",r)}async function Wv(t,e){let r={type:t};await A("auth:sso:created",r,e)}async function qv(t){let e={type:t};await A("auth:sso:updated",e)}async function Qv(t,e){let r={type:t};await A("auth:sso:activated",r,e)}async function Kv(t){let e={type:t};await A("auth:sso:deactivated",e)}var Fu={login:Vv,logout:Gv,SSOCreated:Wv,SSOUpdated:qv,SSOActivated:Qv,SSODeactivated:Kv};async function jv(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)}async function Yv(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)}async function Hv(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)}async function zv(t){let e={appId:t.appId,automationId:t._id,triggerId:t.definition?.trigger?.id,triggerType:t.definition?.trigger?.stepId};await A("automation:tested",e)}var Jv=async(t,e)=>{let r={count:t};await A("automations:run",r,e)};async function Zv(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)}async function Xv(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)}var vA={created:jv,triggerUpdated:Yv,deleted:Hv,tested:zv,run:Jv,stepCreated:Zv,stepDeleted:Xv};function lp(t){return!Object.values(No).includes(t.source)}async function eP(t,e){let r={datasourceId:t._id,source:t.source,custom:lp(t)};await A("datasource:created",r,e)}async function tP(t){let e={datasourceId:t._id,source:t.source,custom:lp(t)};await A("datasource:updated",e)}async function rP(t){let e={datasourceId:t._id,source:t.source,custom:lp(t)};await A("datasource:deleted",e)}var PA={created:eP,updated:tP,deleted:rP};async function nP(t){let e={};await A("email:smtp:created",e,t)}async function iP(){let t={};await A("email:smtp:updated",t)}var NA={SMTPCreated:nP,SMTPUpdated:iP};async function sP(t){let e={};await A("ai:config:created",e,t)}async function oP(){let t={};await A("ai:config:updated",t)}var UA={AIConfigCreated:sP,AIConfigUpdated:oP};async function aP(t,e){let r={accountId:t.accountId,...e};await A("license:plan:changed",r)}async function uP(t){let e={accountId:t.accountId};await A("license:activated",e)}async function cP(t){let e={accountId:t.accountId};await A("license:checkout:opened",e)}async function lP(t){let e={accountId:t.accountId};await A("license:checkout:success",e)}async function dP(t){let e={accountId:t.accountId};await A("license:portal:opened",e)}async function fP(t){let e={accountId:t.accountId};await A("license:payment:failed",e)}async function pP(t){let e={accountId:t.accountId};await A("license:payment:recovered",e)}var LA={planChanged:aP,activated:uP,checkoutOpened:cP,checkoutSuccess:lP,portalOpened:dP,paymentFailed:fP,paymentRecovered:pP};async function mP(t,e){let r={layoutId:t._id};await A("layout:created",r,e)}async function hP(t){let e={layoutId:t};await A("layout:deleted",e)}var MA={created:mP,deleted:hP};async function EP(t){let e={};await A("org:info:name:updated",e,t)}async function gP(t){let e={};await A("org:info:logo:updated",e,t)}async function yP(t){let e={};await A("org:platformurl:updated",e,t)}async function TP(){let t={};await A("analytics:opt:out",t)}async function AP(){let t={};await A("analytics:opt:out",t)}var kA={nameUpdated:EP,logoUpdated:gP,platformURLUpdated:yP,analyticsOptOut:TP,analyticsOptIn:AP};var SP=async(t,e,r)=>{let n={queryId:e._id,datasourceId:t._id,source:t.source,queryVerb:e.queryVerb};await A("query:created",n,r)},_P=async(t,e)=>{let r={queryId:e._id,datasourceId:t._id,source:t.source,queryVerb:e.queryVerb};await A("query:updated",r)},IP=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)},OP=async(t,e,r)=>{let n={datasourceId:t._id,source:t.source,count:r,importSource:e};await A("query:import",n)},wP=async(t,e)=>{let r={count:t};await A("queries:run",r,e)},DP=async(t,e)=>{let r={queryId:e.queryId,datasourceId:t._id,source:t.source,queryVerb:e.queryVerb};await A("query:previewed",r)},FA={created:SP,updated:_P,deleted:IP,imported:OP,run:wP,previewed:DP};async function RP(t,e){let r={roleId:t._id,permissionId:t.permissionId,inherits:t.inherits};await A("role:created",r,e)}async function bP(t){let e={roleId:t._id,permissionId:t.permissionId,inherits:t.inherits};await A("role:updated",e)}async function CP(t){let e={roleId:t._id,permissionId:t.permissionId,inherits:t.inherits};await A("role:deleted",e)}async function xP(t,e,r){let n={userId:t._id,roleId:e};await A("role:assigned",n,r)}async function vP(t,e){let r={userId:t._id,roleId:e};await A("role:unassigned",r)}var ho={created:RP,updated:bP,deleted:CP,assigned:xP,unassigned:vP};async function PP(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)}async function NP(t){let e={layoutId:t.layoutId,screenId:t._id,roleId:t.routing.roleId,audited:{name:t.routing?.route}};await A("screen:deleted",e)}var BA={created:PP,deleted:NP};var UP=async(t,e)=>{let r={count:t};await A("rows:created",r,e)},LP=async(t,e)=>{let r={tableId:t._id,count:e};await A("rows:imported",r)},$A={created:UP,imported:LP};async function MP(t,e){let r={tableId:t._id,audited:{name:t.name}};await A("table:created",r,e)}async function kP(t,e){let r,n;for(let s in e.schema)if(!t.schema[s]){let o=e.schema[s];"default"in o&&o.default!=null&&(r=!0),o.type==="ai"&&(n=o.operation)}let i={tableId:e._id,defaultValues:r,aiColumn:n,audited:{name:e.name}};(r||n)&&await A("table:updated",i)}async function FP(t,e){let r={tableId:t._id,audited:{name:t.name},appId:e};await A("table:deleted",r)}async function BP(t,e){let r={tableId:t._id,format:e,audited:{name:t.name}};await A("table:exported",r)}async function $P(t){let e={tableId:t._id,audited:{name:t.name}};await A("table:imported",e)}var VA={created:MP,updated:kP,deleted:FP,exported:BP,imported:$P};async function VP(t){let e={timezone:t};await A("served:builder",e)}async function GP(t,e,r){let n={appVersion:t.version,timezone:e,embed:r===!0};await A("served:app",n)}async function WP(t,e){let r={appId:t.appId,appVersion:t.version,timezone:e};await A("served:app:preview",r)}var GA={servedBuilder:VP,servedApp:GP,servedAppPreview:WP};async function qP(t,e){let r={userId:t._id,viaScim:ft(),audited:{email:t.email}};await A("user:created",r,e)}async function QP(t){let e={userId:t._id,viaScim:ft(),audited:{email:t.email}};await A("user:updated",e)}async function KP(t){let e={userId:t._id,viaScim:ft(),audited:{email:t.email}};await A("user:deleted",e)}async function jP(t,e){let r={userId:t._id,audited:{email:t.email}};await A("user:admin:assigned",r,e)}async function YP(t){let e={userId:t._id,audited:{email:t.email}};await A("user:admin:removed",e)}async function HP(t,e){let r={userId:t._id,audited:{email:t.email}};await A("user:builder:assigned",r,e)}async function zP(t){let e={userId:t._id,audited:{email:t.email}};await A("user:builder:removed",e)}async function JP(t){let e={audited:{email:t}};await A("user:invited",e)}async function ZP(t){let e={userId:t._id,audited:{email:t.email}};await A("user:invite:accepted",e)}async function XP(t){let e={userId:t._id,audited:{email:t.email}};await A("user:password:force:reset",e)}async function eN(t){let e={userId:t._id,audited:{email:t.email}};await A("user:password:updated",e)}async function tN(t){let e={userId:t._id,audited:{email:t.email}};await A("user:password:reset:requested",e)}async function rN(t){let e={userId:t._id,audited:{email:t.email}};await A("user:password:reset",e)}async function nN(t){let e={users:t};await A("user:data:collaboration",e)}var Ue={created:qP,updated:QP,deleted:KP,permissionAdminAssigned:jP,permissionAdminRemoved:YP,permissionBuilderAssigned:HP,permissionBuilderRemoved:zP,invited:JP,inviteAccepted:ZP,passwordForceReset:XP,passwordUpdated:eN,passwordResetRequested:tN,passwordReset:rN,dataCollaboration:nN};async function iN(t,e){let r={name:t.name,type:t.type,tableId:t.tableId};await A("view:created",r,e)}async function sN(t){let e={tableId:t.tableId};await A("view:updated",e)}async function oN(t,e){let r={...Pe.views.isV2(t)?{id:t.id,tableId:t.tableId,appId:e}:{}};await A("view:deleted",r)}async function aN(t,e){let r={tableId:t._id,format:e};await A("view:exported",r)}async function uN({tableId:t,filterGroups:e},r){let n={tableId:t,filterGroups:e};await A("view:filter:created",n,r)}async function cN({tableId:t,filterGroups:e}){let r={tableId:t,filterGroups:e};await A("view:filter:updated",r)}async function lN(t){let e={tableId:t.tableId};await A("view:filter:deleted",e)}async function dN({tableId:t,calculationType:e},r){let n={tableId:t,calculation:e};await A("view:calculation:created",n,r)}async function fN(t){let e={tableId:t.tableId,calculation:t.calculation};await A("view:calculation:updated",e)}async function pN(t){let e={tableId:t.tableId,calculation:t.calculation};await A("view:calculation:deleted",e)}async function mN(t,e){let r={tableId:t};await A("view:join:created",r,e)}var WA={created:iN,updated:sN,deleted:oN,exported:aN,filterCreated:uN,filterUpdated:cN,filterDeleted:lN,calculationCreated:dN,calculationUpdated:fN,calculationDeleted:pN,viewJoinCreated:mN};async function hN(t){let e={currentVersion:t};await A("installation:version:checked",e)}async function EN(t,e){let r={from:t,to:e};await A("installation:version:upgraded",r)}async function gN(t,e){let r={from:t,to:e};await A("installation:version:downgraded",r)}async function yN(){let t={};await A("installation:firstStartup",t)}var co={versionChecked:hN,upgraded:EN,downgraded:gN,firstStartup:yN};var pi=!h.SELF_HOSTED&&!h.isDev();async function TN(t){pi||await A("app:backfill:succeeded",t)}async function AN(t){if(pi)return;let e={error:JSON.stringify(t,Object.getOwnPropertyNames(t))};await A("app:backfill:failed",e)}async function SN(t){pi||await A("tenant:backfill:succeeded",t)}async function _N(t){if(pi)return;let e={error:JSON.stringify(t,Object.getOwnPropertyNames(t))};await A("tenant:backfill:failed",e)}async function IN(){if(pi)return;let t={};await A("installation:backfill:succeeded",t)}async function ON(t){if(pi)return;let e={error:JSON.stringify(t,Object.getOwnPropertyNames(t))};await A("installation:backfill:failed",e)}var qA={appSucceeded:TN,appFailed:AN,tenantSucceeded:SN,tenantFailed:_N,installationSucceeded:IN,installationFailed:ON};async function wN(t,e){let r={groupId:t._id,viaScim:ft(),audited:{name:t.name}};await A("user_group:created",r,e)}async function DN(t){let e={groupId:t._id,viaScim:ft(),audited:{name:t.name}};await A("user_group:updated",e)}async function RN(t){let e={groupId:t._id,viaScim:ft(),audited:{name:t.name}};await A("user_group:deleted",e)}async function bN(t,e){let r={count:t,groupId:e._id,viaScim:ft(),audited:{name:e.name}};await A("user_group:user_added",r)}async function CN(t,e){let r={count:t,groupId:e._id,viaScim:ft(),audited:{name:e.name}};await A("user_group:users_deleted",r)}async function xN(t){let e={groupId:t,onboarding:!0};await A("user_group:onboarding_added",e)}async function vN(t){let e={permissions:t.roles,groupId:t._id,audited:{name:t.name}};await A("user_group:permissions_edited",e)}var QA={created:wN,updated:DN,deleted:RN,usersAdded:bN,usersDeleted:CN,createdOnboarding:xN,permissionsEdited:vN};async function PN(t){let e={type:t.schema.type,name:t.name,description:t.description,version:t.version};await A("plugin:init",e)}async function NN(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)}async function UN(t){let e={pluginId:t._id,type:t.schema.type,name:t.name,description:t.description,version:t.version};await A("plugin:deleted",e)}var KA={init:PN,imported:NN,deleted:UN};async function LN(t){let e={appId:t.appId,restoreId:t._id,backupCreatedAt:t.timestamp,name:t.name};await A("app:backup:restored",e)}async function MN(t,e,r,n,i){let s={appId:t,backupId:e,type:r,trigger:n,name:i};await A("app:backup:triggered",s)}var jA={appBackupRestored:LN,appBackupTriggered:MN};async function kN(t,e){let r={name:t,environments:e};await A("environment_variable:created",r)}async function FN(t){let e={name:t};await A("environment_variable:deleted",e)}async function BN(t){let e={userId:t};await A("environment_variable:upgrade_panel_opened",e)}var YA={created:kN,deleted:FN,upgradePanelOpened:BN};async function $N(t){let e={filters:t};await A("audit_log:filtered",e)}async function VN(t){let e={filters:t};await A("audit_log:downloaded",e)}var HA={filtered:$N,downloaded:VN};async function GN(t,e){await A("row_action:created",t,e)}var zA={created:GN};async function WN(t,e){let r={workspaceAppId:t._id,audited:{name:t.name},appId:e};await A("workspace_app:deleted",r)}var JA={deleted:WN};function qN(){}var QN=async()=>{await Qt.shutdown(),console.log("Events shutdown")};var dp=async t=>{await Ue.deleted(t),Xe(t)&&await Ue.permissionBuilderRemoved(t),wr(t)&&await Ue.permissionAdminRemoved(t)},KN=async(t,e,r)=>{for(let[n,i]of Object.entries(e))(!r||r[n]!==i)&&await ho.assigned(t,i)},jN=async(t,e,r)=>{if(r)for(let[n,i]of Object.entries(r))(!e||e[n]!==i)&&await ho.unassigned(t,i)},YN=async(t,e)=>{let r=t.roles,n=e?.roles;await KN(t,r,n),await jN(t,r,n)},fp=async(t,e)=>{let r=V(),n;!h.SELF_HOSTED&&!h.DISABLE_ACCOUNT_PORTAL&&(n=await ri(r)),await gt.identifyUser(t,n),e?(await Ue.updated(t),zN(t,e)&&await Ue.permissionBuilderRemoved(t),ZN(t,e)&&await Ue.permissionAdminRemoved(t),!e.forceResetPassword&&t.forceResetPassword&&t.password&&await Ue.passwordForceReset(t),t.password!==e.password&&await Ue.passwordUpdated(t)):await Ue.created(t),HN(t,e)&&await Ue.permissionBuilderAssigned(t),JN(t,e)&&await Ue.permissionAdminAssigned(t),await YN(t,e)},HN=(t,e)=>ZA(t,e,Xe),zN=(t,e)=>XA(t,e,Xe),JN=(t,e)=>ZA(t,e,wr),ZN=(t,e)=>XA(t,e,wr),ZA=(t,e,r)=>!(!r(t)||e&&r(e)),XA=(t,e,r)=>!(r(t)||!e||!r(e));var Bu={};P(Bu,{createASession:()=>eU,endSession:()=>tU,getSession:()=>mp,getSessionsForUser:()=>Eo,invalidateSessions:()=>En,updateSessionTTL:()=>pp});var tS=require("uuid");var rS=h.SESSION_EXPIRY_SECONDS?parseInt(h.SESSION_EXPIRY_SECONDS):me.fromDays(7).toSeconds();function mi(t,e){return`${t}/${e}`}async function Eo(t){return t?(await(await fr()).scan(t)).map(n=>n.value):(console.trace("Cannot get sessions for undefined userId"),[])}async function En(t,e={}){try{let r=e?.reason||"unknown",n=e.sessionIds||[],i;if(n.length===0?i=(await Eo(t)).map(o=>({key:mi(o.userId,o.sessionId)})):(n=Array.isArray(n)?n:[n],i=n.map(s=>({key:mi(t,s)}))),i&&i.length>0){let s=await fr(),o=[];for(let a of i)o.push(s.delete(a.key));h.isTest()||ti(`Invalidating sessions for ${t} (reason: ${r}) - ${i.map(a=>a.key).join(", ")}`),await Promise.all(o)}}catch(r){console.error(`Error invalidating sessions: ${r}`)}}async function eU(t,e){let r=await Eo(t),n=0;if(r.length>=3){let c=r.sort((f,m)=>new Date(f.createdAt).getTime()-new Date(m.createdAt).getTime()),l=r.length-3+1,d=c.slice(0,l).map(f=>f.sessionId);n=d.length,await En(t,{sessionIds:d,reason:"session limit exceeded"})}let i=await fr(),s=e.sessionId,o=e.csrfToken?e.csrfToken:(0,tS.v4)(),a=mi(t,s),u={...e,csrfToken:o,createdAt:new Date().toISOString(),lastAccessedAt:new Date().toISOString(),userId:t};return await i.store(a,u,rS),{session:u,invalidatedSessionCount:n}}async function pp(t){let e=await fr(),r=mi(t.userId,t.sessionId);t.lastAccessedAt=new Date().toISOString(),await e.store(r,t,rS)}async function tU(t,e){await(await fr()).delete(mi(t,e))}async function mp(t,e){if(!t||!e)throw new Error(`Invalid session details - ${t} - ${e}`);let n=await(await fr()).get(mi(t,e));if(!n)throw new Error(`Session not found - ${t} - ${e}`);return n}var yp={};P(yp,{PASSWORD_MAX_LENGTH:()=>Ep,PASSWORD_MIN_LENGTH:()=>hp,validatePassword:()=>gp});var hp=+(h.PASSWORD_MIN_LENGTH||12),Ep=+(h.PASSWORD_MAX_LENGTH||512);function gp(t){return!t||t.length<hp?{valid:!1,error:`Password invalid. Minimum ${hp} characters.`}:t.length>Ep?{valid:!1,error:`Password invalid. Maximum ${Ep} characters.`}:{valid:!0}}var rU=async t=>{let e=t._id;await mt.removeUser(t),await dp(t),await Dr.invalidateUser(e),await En(e,{reason:"bulk-deletion"})},wt=class t{static init(e,r,n){t.quotas=e,t.groups=r,t.features=n}static async isPreventPasswordActions(e,r){return h.ENABLE_SSO_MAINTENANCE_MODE&&Or(e)?!1:await t.features.isSSOEnforced()||Bo(e)?!0:(r||(r=await ri(V())),!!(r&&r.email===e.email&&Fo(r)))}static async buildUser(e,r={hashPassword:!0,requirePassword:!0},n,i,s){let{password:o,_id:a}=e;i&&!i.password&&(r.requirePassword=!1);let u;if(o){if(await t.isPreventPasswordActions(e,s))throw new we("Password change is disabled for this user",400);if(!r.skipPasswordValidation){let d=gp(o);if(!d.valid)throw new we(d.error,400)}u=r.hashPassword?await Ff(o):o}else i&&(u=i.password);let c=r.requirePassword&&!await t.features.isSSOEnforced();if(!u&&c)throw"Password must be specified.";a=a||Jn();let l={createdAt:Date.now(),...i,...e,_id:a,password:u,tenantId:n};return l.roles||(l.roles={}),l.status==null&&(l.status="active"),l}static async allUsers(){return(await Y().allDocs(cn(null,{include_docs:!0}))).rows.map(n=>n.doc)}static async countUsersByApp(e){return{userCount:(await Vu(e,{})).length}}static async getUsersByAppAccess(e){return await Tp(e.appId,{limit:e.limit||50})}static async getUserByEmail(e){return yt(e)}static async getUser(e){let r=await gn(e);return r&&delete r.password,r}static async bulkGet(e){return await $u(e)}static async bulkUpdate(e){return await go(e)}static async save(e,r={}){r.hashPassword==null&&(r.hashPassword=!0),r.requirePassword==null&&(r.requirePassword=!0);let n=V(),i=Y(),{email:s,_id:o,userGroups:a=[],roles:u}=e;if(!s&&!o)throw new Error("_id or email is required");let c;if(o)try{if(c=await gn(o),s&&c.email!==s&&!r.allowChangingEmail)throw new Error("Email address cannot be changed")}catch(f){if(f.status!==404)throw f}if(!c&&s&&(c=await yt(s),c&&c._id!==o))throw new Gt(s);let l=1,d=0;if((r.isAccountHolder||c)&&(l=0,d=1),c){let[f,m]=await mn([c,e]);d=f!==m?1:0}return t.quotas.addUsers(l,d,async()=>{r.isAccountHolder||await wu(s,n);let f=await t.buildUser(e,r,n,c);r.currentUserId&&r.currentUserId===c?._id&&(f=Ap(f,c)),!c&&u?.length&&(f.roles={...u});let m=[];if(!o&&a.length>0)for(let p of a)m.push(t.groups.addUsers(p,[f._id]));try{let p=await i.put(f);return f._rev=p.rev,await fp(f,c),c&&f.email!==c.email&&await mt.removeUser({email:c.email}),await mt.addUser(n,f._id,f.email,f.ssoId),await Dr.invalidateUser(p.id),await Promise.all(m),i.get(f._id)}catch(p){throw p.status===409?"User exists already":p}})}static async bulkCreate(e,r){let n=V(),i=[],s=[],o=[],a=e.map(f=>f.email),u=await jf(a),c=[];for(let f of e){let m=s.find(E=>E.email.toLowerCase()===f.email.toLowerCase()),p=u.includes(f.email.toLowerCase());if(m||p){c.push({email:f.email,reason:"Unavailable"});continue}f.userGroups=r||[],s.push(f),await to(f)&&o.push(f)}let l=await ri(n),d=await t.features.isSSOEnforced();return t.quotas.addUsers(s.length,o.length,async()=>{for(let p of s)d&&delete p.password,i.push(t.buildUser(p,{hashPassword:!0,requirePassword:!d},n,void 0,l));let f=await Promise.all(i);await go(f);for(let p of f)await mt.addUser(n,p._id,p.email),await fp(p,void 0);let m=f.map(p=>({_id:p._id,email:p.email}));if(Array.isArray(m)&&r){let p=[],E=m.map(g=>g._id);for(let g of r)p.push(t.groups.addUsers(g,E));await Promise.all(p)}return{successful:m,unsuccessful:c}})}static async bulkDelete(e){let r=Y(),n={successful:[],unsuccessful:[]},i=await Du(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 o=(await r.allDocs({include_docs:!0,keys:e.map(m=>m.userId)})).rows.map(m=>m.doc),a=o.map(m=>({...m,_deleted:!0})),u=await go(a),l=(await mn(o)).filter(m=>m).length,d=[];for(let m of o){let E=(await eo(m._id)).ssoId;E&&(await mu(E)).filter(T=>T.ssoId==null).forEach(T=>{d.push({...T,_deleted:!0})}),await rU(m)}await hr().bulkDocs(d),await t.quotas.removeUsers(a.length,l);let f={};return o.reduce((m,p)=>(m[p._id]=p,m),f),u.forEach(m=>{let p=f[m.id].email;m.ok?n.successful.push({_id:m.id,email:p}):n.unsuccessful.push({_id:m.id,email:p,reason:"Database error"})}),n}static async destroy(e){let r=Y(),n=await r.get(e),i=n._id;if(!h.SELF_HOSTED&&!h.DISABLE_ACCOUNT_PORTAL){let o=n.email;if(await _r(o))throw n.userId===Lt()._id?new we('Please visit "Account" to delete this user',400):new we("Account holder cannot be deleted",400)}await mt.removeUser(n),await r.remove(i,n._rev);let s=await to(n)?1:0;await t.quotas.removeUsers(1,s),await dp(n),await Dr.invalidateUser(i),await En(i,{reason:"deletion"})}static async createAdminUser(e,r,n){let i=n?.password,s={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&&(s.ssoId=n.ssoId),await zn(Ee.CHECKLIST),await t.save(s,{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 To(t){return Array.isArray(t)?t.map(e=>{if(e)return delete e.password,e}):t&&(delete t.password,t)}async function $u(t,e){let n=(await Y().allDocs({keys:t,include_docs:!0})).rows.map(i=>i.doc);return e?.cleanup&&(n=To(n)),n}async function iU(){let t=Y(),e=`us${R}`;return(await t.allDocs({startkey:e,endkey:`${e}${De}`})).rows.map(n=>n.id)}async function sU(){let t=Y(),e=`us${R}`;return(await t.allDocs({startkey:e,endkey:`${e}${De}`,include_docs:!0})).rows.map(n=>n.doc)}async function go(t){return await Y().bulkDocs(t)}async function gn(t,e){let n=await Y().get(t);return e?.cleanup&&(n=To(n)),n}async function yt(t,e){if(t==null)throw"Must supply an email address to view";let r=await Bt("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=To(n)),n}async function oU(t){try{let e=await yt(t);if(Array.isArray(e)||e!=null)return!0}catch{return!1}return!1}async function Vu(t,e,r){if(typeof t!="string")throw new Error("Must provide a string based app ID");let n=tu(t,{include_docs:!0});n.startkey=e&&e.startkey?e.startkey:n.startkey;let i=await Bt("by_app",n);i||(i=[]);let s=Array.isArray(i)?i:[i];return r?.cleanup&&(s=To(s)),s}async function Tp(t,e){let r=`roles.${t}`,n=[{"builder.global":!0},{"admin.global":!0}];if(t){let o={[r]:{$exists:!0}};n.push(o)}return(await Y().find({selector:{$or:n,_id:{$regex:"^us_"}},limit:e?.limit||50})).docs}function nS(t,e){if(e)return eu(qe(t),e._id)}async function iS(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,s=await Bt("by_email2",{...e,startkey:i,endkey:`${n}${De}`});s||(s=[]);let o=Array.isArray(s)?s:[s];return r?.cleanup&&(o=To(o)),o}var aU=8;async function sS({bookmark:t,query:e,appId:r,limit:n}={}){let i=Y(),s=n??aU,a={include_docs:!0,limit:s+1};t&&(a.startkey=t);let u,c="_id",l;return e?.equal?._id?u=[await gn(e.equal._id)]:r?(u=await Vu(r,a),l=d=>nS(r,d)):e?.string?.email?(u=await iS(e?.string?.email,a),c="email"):e?.oneOf?._id?u=await $u(e?.oneOf?._id,{cleanup:!0}):e?(u=(await i.allDocs(cn(null,{...a,limit:void 0}))).rows.map(f=>f.doc),u=ar.search(u,{query:e,limit:a.limit}).rows):u=(await i.allDocs(cn(null,a))).rows.map(f=>f.doc),mf(u,s,{paginate:!0,property:c,getKey:l})}async function uU(){return(await gf("by_email2",{limit:0,include_docs:!1})).total_rows}async function cU(){let t=0;async function e(r){let n=await sS({bookmark:r}),i=await mn(n.data);t+=i.filter(s=>s).length,n.hasNextPage&&await e(n.nextPage)}return await e(),t}function lU(t){return delete t.admin,delete t.builder,t}function Ap(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}async function dU(t,e){let r=qe(e);t.builder??={},t.builder.creator=!0,t.builder.apps??=[],t.builder.apps.push(r),await wt.save(t,{hashPassword:!1})}async function fU(t,e){let r=qe(e);t.builder&&t.builder.apps?.includes(r)&&(t.builder.apps=t.builder.apps.filter(n=>n!==r)),await wt.save(t,{hashPassword:!1})}var oS=3600;async function pU(t,e){let n=await of(e).get(t);if(n.budibaseAccess=!0,!h.SELF_HOSTED&&!h.DISABLE_ACCOUNT_PORTAL){let i=await _r(n.email);i&&(n.account=i,n.accountPortalAccess=!0)}return n}async function mU(t){let e=await wt.bulkGet(t),r=t.filter((i,s)=>!e[s]),n=e.filter(i=>i);return await Promise.all(n.map(async i=>{if(i.budibaseAccess=!0,!h.SELF_HOSTED&&!h.DISABLE_ACCOUNT_PORTAL){let s=await _r(i.email);s&&(i.account=s,i.accountPortalAccess=!0)}})),r.length?{users:n,notFoundIds:r}:{users:n}}async function Ao({userId:t,tenantId:e,email:r,populateUser:n}){if(n||(n=pU),!e)try{e=V()}catch{e=await mt.lookupTenantId(t)}let i=await Ps(),s=await i.get(t);return s||(s=await n(t,e,r),await i.store(t,s,oS)),s&&!s.tenantId&&e&&(s.tenantId=e),s.userGroups&&!Ge.users.isGlobalBuilder(s)&&await be(e,async()=>{let o=await wt.getGroupBuilderAppIds(s);if(o.length){let a=s.builder?.apps||[];s.builder={apps:[...new Set(a.concat(o))]}}}),s}async function hU(t){let e=await Ps(),r=await e.bulkGet(t),n=t.filter(o=>!r[o]),i=Object.values(r).filter(o=>!!o),s;if(n.length){let o=await mU(n);s=o.notFoundIds;for(let a of o.users)await e.store(a._id,a,oS);i.push(...o.users)}return{users:i,notFoundIds:s}}async function So(t){await(await Ps()).delete(t)}var wp={};P(wp,{Writethrough:()=>Ip});var Ei={};P(Ei,{AUTO_EXTEND_POLLING_MS:()=>uS,doWithLock:()=>Sp,newRedlock:()=>yn});var aS=k(require("redlock"));async function gU(t,e){if(t==="custom")return yn(e);switch(t){case"try_once":return yn(hi.TRY_ONCE);case"try_twice":return yn(hi.TRY_TWICE);case"default":return yn(hi.DEFAULT);case"delay_500":return yn(hi.DELAY_500);case"auto_extend":return yn(hi.AUTO_EXTEND);default:throw Xt.unreachable(t)}}var hi={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 yn(t={}){let e={...hi.DEFAULT,...t},n=(await sf()).client;return new aS.default([n],e)}function yU(t){let r=`lock:${t.systemLock?"system":V()}_${t.name}`;return t.resource&&(r=r+`_${t.resource}`),r}var uS=me.fromSeconds(10).toMs();async function Sp(t,e){let r=await gU(t.type,t.customOptions),n,i;try{let s=yU(t),o=t.type==="auto_extend"?uS:t.ttl;if(n=await r.lock(s,o),t.type==="auto_extend"){let u=()=>{i=setTimeout(async()=>{n=await n.extend(o,()=>t.onExtend&&t.onExtend()),u()},o/2)};u()}return{executed:!0,result:await e()}}catch(s){if(s.name==="LockError"){if(t.type==="try_once")return{executed:!1};throw s}else throw s}finally{clearTimeout(i),await n?.unlock()}}var cS=1e4,_p=null;async function Gu(){if(!_p){let t=await nf();_p=new sn(t)}return _p}function _o(t,e){return t.name+e}function Op(t,e=null){return{doc:t,lastWrite:e||Date.now()}}async function TU(t,e,r=cS){let n=await Gu(),i=e._id,s;i&&(s=await n.get(_o(t,i)));let o=!s||s.lastWrite<Date.now()-r,a=e;return o&&((await Sp({type:"try_once",name:"persist_writethrough",resource:i,ttl:15e3},async()=>{let c=async l=>{let d=await t.put(l,{force:!0});a._id=d.id,a._rev=d.rev};try{await c(e)}catch(l){if(l.status!==409)throw l;ti("Ignoring conflict in write-through cache")}})).executed||ti("Ignoring redlock conflict in write-through cache")),s=Op(a,o?null:s?.lastWrite),a._id&&await n.store(_o(t,a._id),s),{ok:!0,id:a._id,rev:a._rev}}async function AU(t,e){let r=await Gu(),n=_o(t,e),i=await r.get(n);if(!i){let s=await t.get(e);i=Op(s),await r.store(n,i)}return i.doc}async function SU(t,e){let r=await Gu(),n=_o(t,e),i=await r.get(n);if(!i){let s=await t.tryGet(e);if(!s)return null;i=Op(s),await r.store(n,i)}return i.doc}async function _U(t,e,r){let n=await Gu();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(_o(t,i))}finally{await t.remove(i,r)}}var Ip=class{constructor(e,r=cS){this.db=e,this.writeRateMs=r}async put(e,r=this.writeRateMs){return TU(this.db,e,r)}async get(e){return AU(this.db,e)}async tryGet(e){return SU(this.db,e)}async remove(e,r){return _U(this.db,e,r)}};var Dp={};P(Dp,{createCode:()=>OU,getCode:()=>wU,invalidateCode:()=>DU});var IU=me.fromHours(1).toSeconds();async function OU(t,e){let r=ee();return await(await Ns()).store(r,{userId:t,info:e},IU),r}async function wU(t){let r=await(await Ns()).get(t);if(!r)throw new Error("Provided information is not valid, cannot reset password - please try again.");return r}async function DU(t){await(await Ns()).delete(t)}var bp={};P(bp,{DocWritethrough:()=>Rp,DocWritethroughProcessor:()=>Io,getProcessor:()=>bU,init:()=>lS});var RU=100,Wu,Io=class t{static get queue(){return t._queue||(t._queue=new Et("docWritethroughQueue",{jobOptions:{attempts:RU}})),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=Re(e),s;try{s=await i.get(r)}catch{s={_id:r}}s={...s,...n},await i.put(s)}},Rp=class{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 lS(){return Wu=new Io().init(),Wu}function bU(){return Wu||lS()}function qu(t){return`config${R}${t}`}async function tt(t){let e=Y();try{return await e.get(qu(t))}catch(r){if(r.status===404)return;throw r}}async function CU(t){return t._id||(t._id=qu(t.type)),Y().put(t)}async function fi(){let t=await tt("settings");return t||(t={_id:qu("settings"),type:"settings",config:{}}),t.config.platformUrl=await Oo({tenantAware:!0,config:t.config}),t.config.analyticsEnabled=await Cu({config:t.config}),t}async function vp(){return(await fi()).config}async function Oo(t={tenantAware:!0}){let e=h.PLATFORM_URL||"http://localhost:10000";if(!h.SELF_HOSTED&&h.MULTI_TENANCY&&t.tenantAware){let r=V();e.includes("localhost:")||(e=e.replace("://",`://${r}.`))}else if(h.SELF_HOSTED){let r=t?.config?t.config:(await tt("settings"))?.config;r?.platformUrl&&(e=r.platformUrl)}return e}var Cu=async t=>{if(!h.SELF_HOSTED)return!!h.ENABLE_ANALYTICS;let e=await mr(Ee.ANALYTICS_ENABLED,86400,async()=>{let n=t?.config?t.config:(await tt("settings"))?.config;if(n?.analyticsEnabled===!1)return!1;if(n?.analyticsEnabled===!0)return!0});if(e!==void 0)return e;let r=h.ENABLE_ANALYTICS;return!(r===0||r===!1)};async function xU(){return await tt("google")}async function Qu(){return(await xU())?.config}async function Pp(){if(!h.SELF_HOSTED)return Cp();let t=await Qu();return(!t||!t.activated)&&(t=Cp()),t}function Cp(){if(h.GOOGLE_CLIENT_ID&&h.GOOGLE_CLIENT_SECRET)return{clientID:h.GOOGLE_CLIENT_ID,clientSecret:h.GOOGLE_CLIENT_SECRET,activated:!0}}async function vU(){return tt("logos_oidc")}async function PU(){return tt("oidc")}async function NU(){let t=(await PU())?.config;return t?.configs&&t.configs[0]}async function Np(t){let e=(await tt("oidc"))?.config;return e&&e.configs.filter(r=>r.uuid===t)[0]}async function dS(){return tt("smtp")}async function UU(t){let e=await dS();if(e)return e.config;let r=h.SELF_HOSTED||!t;if(h.SMTP_FALLBACK_ENABLED&&r)return{port:h.SMTP_PORT,host:h.SMTP_HOST,secure:!1,from:h.SMTP_FROM_ADDRESS,auth:{user:h.SMTP_USER,pass:h.SMTP_PASSWORD},fallback:!0}}async function LU(){return(await tt("scim"))?.config}async function MU(){return tt("ai")}async function kU(){return tt("recaptcha")}var Wp={};P(Wp,{AccessController:()=>Mp,BUILTIN_ROLE_IDS:()=>kp,Role:()=>Rr,RoleHierarchyTraversal:()=>Ku,RoleIDVersion:()=>Fp,builtinRoleToNumber:()=>wo,checkForRoleResourceArray:()=>hS,externalRole:()=>WU,findRole:()=>Do,getAllRoleIds:()=>jU,getAllRoles:()=>Gp,getBuiltinRole:()=>pS,getBuiltinRoles:()=>$p,getDBRoleID:()=>ES,getExternalRoleID:()=>br,getExternalRoleIDs:()=>gS,getRole:()=>qU,getUserRoleHierarchy:()=>Vp,getUserRoleIdHierarchy:()=>mS,isBuiltin:()=>Tn,lowerBuiltinRoleID:()=>GU,prefixRoleIDNoBuiltin:()=>Lp,roleIDsAreEqual:()=>rt,roleToNumber:()=>VU,saveRoles:()=>QU,validInherits:()=>$U});var fS=require("lodash"),ju=k(require("lodash/fp/cloneDeep")),Up=k(require("semver"));var kp={ADMIN:"ADMIN",POWER:"POWER",BASIC:"BASIC",PUBLIC:"PUBLIC"},ne={...kp,BUILDER:"BUILDER"},Fp={UUID:void 0,NAME:"name"};function BU(t,e){return Array.isArray(e)?e.filter(r=>t.includes(r)).length===e.length:t.includes(e)}var Rr=class{constructor(e,r,n,i){this.permissions={};this._id=e,this.name=r,this.uiMetadata=i,this.permissionId=n,this.version=Fp.NAME}addInheritance(e){return e&&typeof e=="string"?e=Lp(e):e&&Array.isArray(e)&&(e=e.map(Lp)),this.inherits=e,this}},Ku=class{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 s of e.inherits){let o=Do(s,n,r);o&&(i=i.concat(this.walk(o)))}else{let s=[],o=e;for(;o&&o.inherits&&!BU(s,o.inherits);){if(Array.isArray(o.inherits))return i.concat(this.walk(o));if(s.push(o.inherits),o=Do(o.inherits,n,r),o&&i.push(o),Pe.roles.checkForRoleInheritanceLoops(i))break}}return(0,fS.uniqBy)(i,s=>s._id)}},Bp={ADMIN:new Rr(ne.ADMIN,ne.ADMIN,"admin",{displayName:"App admin",description:"Can do everything",color:"var(--spectrum-global-color-static-red-400)"}).addInheritance(ne.POWER),POWER:new Rr(ne.POWER,ne.POWER,"power",{displayName:"App power user",description:"An app user with more access",color:"var(--spectrum-global-color-static-orange-400)"}).addInheritance(ne.BASIC),BASIC:new Rr(ne.BASIC,ne.BASIC,"write",{displayName:"App user",description:"Any logged in user",color:"var(--spectrum-global-color-static-green-400)"}).addInheritance(ne.PUBLIC),PUBLIC:new Rr(ne.PUBLIC,ne.PUBLIC,"public",{displayName:"Public user",description:"Accessible to anyone",color:"var(--spectrum-global-color-static-blue-400)"}),BUILDER:new Rr(ne.BUILDER,ne.BUILDER,"admin",{displayName:"Builder user",description:"Users that can edit this app",color:"var(--spectrum-global-color-static-magenta-600)"})};function $p(){return(0,ju.default)(Bp)}function Tn(t){return Object.values(kp).includes(t)}function Lp(t){return Tn(t)?t:kt(t)}function pS(t){let e=Object.values(Bp).find(r=>t.includes(r._id));if(e)return(0,ju.default)(e)}function $U(t,e){if(!e)return!1;let r=n=>t.find(i=>rt(i._id,n));if(Array.isArray(e)){let n=e.filter(i=>r(i));return e.length!==0&&n.length===e.length}else return!!r(e)}function wo(t){let e=$p(),r=Object.values(e).length+1;if(rt(t,ne.ADMIN)||rt(t,ne.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}async function VU(t){if(Tn(t))return wo(t);let e=await Vp(t,{defaultPublic:!0}),r=n=>{if(!n.inherits)return 0;if(Array.isArray(n.inherits)){let i=n.inherits.map(s=>{let o=e.find(a=>rt(a._id,s));if(o)return r(o)+1}).filter(s=>s).sort().pop();if(i!=null)return i}else if(Tn(n.inherits))return wo(n.inherits)+1;return 0};return Math.max(...e.map(r))}function GU(t,e){return t?e&&wo(t)>wo(e)?e:t:e}function rt(t,e){return kt(t)===kt(e)}function WU(t){let e;return t._id&&(e=br(t._id)),{...t,_id:e,inherits:gS(t.inherits,t.version)}}function Do(t,e,r){let n=pS(t);n||(t=kt(t));let i=e.find(s=>s._id&&rt(s._id,t));return!i&&!Tn(t)&&r?.defaultPublic?(0,ju.default)(Bp.PUBLIC):(n=Object.assign(n||{},i),n?._id&&(n._id=br(n._id,n.version)),Object.keys(n).length===0?void 0:n)}async function qU(t,e){let r=Yn(),n=[];if(!Tn(t)){let i=await r.tryGet(ES(t));i&&n.push(i)}return Do(t,n,e)}async function QU(t){await Yn().bulkDocs(t.filter(r=>r._id).map(r=>({...r,_id:kt(r._id)})))}async function KU(t,e){let r=await Gp();if(rt(t,ne.ADMIN))return r;let n=Do(t,r,e),i=[];return n&&(i=new Ku(r,e).walk(n)),i}async function mS(t){return(await Vp(t)).map(r=>r._id)}async function Vp(t,e){return KU(t,e)}function hS(t,e){if(t&&!Array.isArray(t[e])){let r=t[e];t[e]=[r],r==="write"&&t[e].push("read")}return t}async function jU(t){return(await Gp(t)).map(r=>r._id)}async function Gp(t){if(t)return We(t,e);{let r;try{r=Yn()}catch{}return e(r)}async function e(r){let n=[];r&&(n=(await r.allDocs(ru(null,{include_docs:!0}))).rows.map(a=>a.doc),n.forEach(a=>a._id=br(a._id,a.version)));let i=$p(),s=[];!r||await YU(r)?s=[ne.ADMIN,ne.POWER,ne.BASIC,ne.PUBLIC]:s=[ne.ADMIN,ne.BASIC,ne.PUBLIC];for(let o of s){let a=i[o],u=n.filter(c=>rt(c._id,o))[0];u==null?n.push(a||i.BASIC):(n=n.filter(c=>c._id!==u._id),u._id=br(a._id,u.version),n.push({...a,...u,name:a.name,_id:br(a._id,a.version)}))}for(let o of n)if(o.permissions)for(let a of Object.keys(o.permissions))o.permissions=hS(o.permissions,a);return n}}async function YU(t){let r=(await t.tryGet("app_metadata"))?.creationVersion;return!r||!Up.default.valid(r)?!0:!Up.default.gte(r,h.MIN_VERSION_WITHOUT_POWER_ROLE)}var Mp=class{constructor(){this.userHierarchies={}}async hasAccess(e,r){if(e==null||e===""||rt(e,ne.BUILDER)||rt(r,e)||rt(r,ne.BUILDER))return!0;let n=r?this.userHierarchies[r]:null;return!n&&r&&(n=await mS(r),this.userHierarchies[r]=n),n?.find(i=>rt(i,e))!==void 0}async checkScreensAccess(e,r){let n=[];for(let i of e){let s=await this.checkScreenAccess(i,r);s&&n.push(s)}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 ES(t){return t?.startsWith("role")?t:kt(t)}function br(t,e){if(t.startsWith(`role${R}`)&&(Tn(t)||e===Fp.NAME)){let r=t.split(R);return r.shift(),r.join(R)}return t}function gS(t,e){return t&&(typeof t=="string"?br(t,e):t.map(r=>br(r,e)))}var qp={};P(qp,{BUILDER:()=>XU,BUILTIN_PERMISSIONS:()=>Yu,CREATOR:()=>eL,GLOBAL_BUILDER:()=>tL,PermissionImpl:()=>ie,PermissionLevel:()=>_i,PermissionType:()=>Mo,doesHaveBasePermission:()=>JU,getAllowedLevels:()=>SS,getBuiltinPermissionByID:()=>zU,getBuiltinPermissions:()=>HU,isPermissionLevelHigherThanRead:()=>ZU,levelToNumber:()=>AS});var yS=k(require("lodash/flatten")),TS=k(require("lodash/fp/cloneDeep")),ie=class{constructor(e,r){this.type=e,this.level=r}};function AS(t){switch(t){case"execute":return 0;case"read":return 1;case"write":return 2;case"admin":return 3;default:return-1}}function SS(t){switch(t){case"execute":return["execute"];case"read":return["execute","read"];case"write":case"admin":return["execute","read","write"];default:return[]}}var Yu={PUBLIC:{_id:"public",name:"Public",permissions:[new ie("webhook","execute")]},READ_ONLY:{_id:"read_only",name:"Read only",permissions:[new ie("query","read"),new ie("table","read"),new ie("app","read")]},WRITE:{_id:"write",name:"Read/Write",permissions:[new ie("query","write"),new ie("table","write"),new ie("automation","execute"),new ie("legacy_view","read"),new ie("app","read")]},POWER:{_id:"power",name:"Power",permissions:[new ie("table","write"),new ie("user","read"),new ie("automation","execute"),new ie("webhook","read"),new ie("legacy_view","read"),new ie("app","read")]},ADMIN:{_id:"admin",name:"Admin",permissions:[new ie("table","admin"),new ie("user","admin"),new ie("automation","admin"),new ie("webhook","read"),new ie("query","admin"),new ie("legacy_view","read"),new ie("app","read")]}};function HU(){return(0,TS.default)(Yu)}function zU(t){return Object.values(Yu).find(r=>r._id===t)}function JU(t,e,r){let n=[...new Set(r.map(o=>o.permissionId))],i=Object.values(Yu),s=(0,yS.default)(i.filter(o=>n.indexOf(o._id)!==-1).map(o=>o.permissions));for(let o of s)if(o.type===t&&SS(o.level).indexOf(e)!==-1)return!0;return!1}function ZU(t){return AS(t)>1}var XU="builder",eL="creator",tL="globalBuilder";var jp={};P(jp,{FlagSet:()=>zu,all:()=>sL,flags:()=>Qp,getEnvFlags:()=>wS,init:()=>rL,isEnabled:()=>iL,parseEnvFlags:()=>Zu,shutdown:()=>nL,testutils:()=>Kp});var Ju=k(require("crypto"));var _S=require("posthog-node"),IS=k(require("dd-trace"));var OS=require("lodash");var Hu;function rL(t){h.POSTHOG_TOKEN&&h.POSTHOG_API_HOST&&!h.SELF_HOSTED&&h.POSTHOG_FEATURE_FLAGS_ENABLED?(console.log("initializing posthog client..."),Hu=new _S.PostHog(h.POSTHOG_TOKEN,{host:h.POSTHOG_API_HOST,personalApiKey:h.POSTHOG_PERSONAL_TOKEN,featureFlagsPollingInterval:me.fromMinutes(3).toMs(),...t})):console.log("posthog disabled")}function nL(){Hu?.shutdown()}function Zu(t){let e=t.split(",").map(n=>n.split(":")),r=[];for(let[n,...i]of e)for(let s of i){let o=!0;s.startsWith("!")&&(s=s.slice(1),o=!1),r.push({tenantId:n,key:s,value:o})}return r}function wS(){return Zu(h.TENANT_FEATURE_FLAGS||"")}var zu=class{constructor(e){this.flagSchema=e;this.setId=Ju.randomUUID()}defaults(){return(0,OS.cloneDeep)(this.flagSchema)}isFlagName(e){return this.flagSchema[e]!==void 0}async isEnabled(e){return(await this.fetch())[e]}async fetch(){return await IS.default.trace("features.fetch",async e=>{let r=jd(this.setId);if(r)return e?.addTags({fromCache:!0}),r;let n={},i=this.defaults(),s=V(),o=new Set;if(Qa())return i;for(let{tenantId:d,key:f,value:m}of wS())if(!(!d||d!=="*"&&d!==s)&&(n.readFromEnvironmentVars=!0,m===!1&&o.add(f),!!this.isFlagName(f))){if(typeof i[f]!="boolean")throw new Error(`Feature: ${f} is not a boolean`);i[f]=m,n[`flags.${f}.source`]="environment"}let a=Lt(),u=a?._id;if(!u){let d=Qd();d&&(u=Ju.createHash("sha512").update(d).digest("hex"))}let c=a?.tenantId;if(c||(c=s),n["identity.type"]=a?.type,n["identity._id"]=a?._id,n.tenantId=c,n.userId=u,Hu&&u){n.readFromPostHog=!0;let d=await fi(),f={tenantId:c},m={tenant:{id:c}};d.config.createdVersion&&(m.tenant.createdVersion=d.config.createdVersion),d.createdAt&&(m.tenant.createdAt=`${d.createdAt}`);let p=await Hu.getAllFlags(u,{personProperties:f,onlyEvaluateLocally:!0,groups:{tenant:c},groupProperties:m});for(let[E,g]of Object.entries(p))if(this.isFlagName(E)){if(typeof g!="boolean"){console.warn(`Invalid value for posthog flag "${E}": ${g}`);continue}if(!(i[E]===!0||o.has(E)))try{i[E]=g,n[`flags.${E}.source`]="posthog"}catch(T){console.warn(`Error parsing posthog flag "${E}": ${g}`,T)}}}let l=Hd();for(let[d,f]of Object.entries(l))this.isFlagName(d)&&typeof f=="boolean"&&(i[d]=f,n[`flags.${d}.source`]="override");Yd(this.setId,i);for(let[d,f]of Object.entries(i))n[`flags.${d}.value`]=f;return e?.addTags(n),i})}},Qp=new zu(Cm);async function iL(t){return await Qp.isEnabled(t)}async function sL(){return await Qp.fetch()}var Kp={};P(Kp,{setFeatureFlags:()=>DS,withFeatureFlags:()=>uL});function oL(){let t={};for(let{tenantId:e,key:r,value:n}of Zu(process.env.TENANT_FEATURE_FLAGS||"")){let i=t[e]||{};i[r]!==!1&&(i[r]=n,t[e]=i)}return t}function aL(t){let e=[];for(let[r,n]of Object.entries(t))for(let[i,s]of Object.entries(n))s===!1?e.push(`${r}:!${i}`):e.push(`${r}:${i}`);return e.join(",")}function DS(t,e){let r=oL();for(let[i,s]of Object.entries(e)){let o=r[t]||{};o[i]=s,r[t]=o}let n=aL(r);return ys({TENANT_FEATURE_FLAGS:n})}function uL(t,e,r){let n=DS(t,e),i=r();return i instanceof Promise?i.finally(n):(n(),i)}var sm={};P(sm,{adminOnly:()=>cc,auditLog:()=>sc,authError:()=>Ie,buildAuthMiddleware:()=>QL,buildCsrfMiddleware:()=>jL,buildTenancyMiddleware:()=>KL,builderOnly:()=>dc,builderOrAdmin:()=>lc,google:()=>jt,internalApi:()=>ac,joiValidator:()=>bo,oidc:()=>Yt,passport:()=>YL,platformLogout:()=>XL,refreshOAuthToken:()=>JL,ssoCallbackUrl:()=>Cr,updateUserOAuth:()=>ZL});var im={};P(im,{adminOnly:()=>cc,auditLog:()=>sc,authError:()=>Ie,authenticated:()=>ic,builderOnly:()=>dc,builderOrAdmin:()=>lc,correlation:()=>$S,csp:()=>KS,csrf:()=>uc,datasource:()=>WL,errorHandling:()=>GS,featureFlagCookie:()=>jS,google:()=>jt,internalApi:()=>ac,ip:()=>HS,joiValidator:()=>bo,local:()=>gi,oidc:()=>Yt,pino:()=>FS,querystringToBody:()=>WS,ssoCallbackUrl:()=>Cr,tenancy:()=>oc});var gi={};P(gi,{authenticate:()=>dL,options:()=>lL});function Ie(t,e,r){return t(r,null,{message:e})}async function Cr(t,e){if(e&&e.callbackURL)return e.callbackURL;let r=await vp(),n="/api/global/auth";return dr()&&(n+=`/${V()}`),n+=`/${t}/callback`,`${r.platformUrl}${n}`}var Yp="Invalid credentials",cL="This account has expired. Please reset your password",lL={passReqToCallback:!0};async function dL(t,e,r,n){if(!e)return Ie(n,"Email Required");if(!r)return Ie(n,"Password Required");let i=await yt(e);return i==null?(console.info(`user=${e} could not be found`),Ie(n,Yp)):i.status==="inactive"?(console.info(`user=${e} is inactive`,i),Ie(n,Yp)):i.password?await Bf(r,i.password)?(delete i.password,n(null,i)):Ie(n,Yp):(console.info(`user=${e} has no password set`,i),Ie(n,cL))}var jt={};P(jt,{buildVerifyFn:()=>CS,getCallbackUrl:()=>mL,strategyFactory:()=>Hp});var Ro=t=>Promise.resolve(t);async function Xu(t,e=!0,r,n){if(!n)throw new Error("Save user function must be provided");if(!t.userId)return Ie(r,"sso user id required");if(!t.email)return Ie(r,"sso user email required");let i=Jn(t.userId),s;try{s=await gn(i)}catch(a){if(!a.status||a.status!==404)return Ie(r,"Unexpected error when retrieving existing user",a)}if(s||(s=await yt(t.email)),!s&&e)return Ie(r,"Email does not yet exist. You must set up your local budibase account first.");s||(s={_id:i,email:t.email,roles:{},tenantId:V()});let o=await fL(s,t);o.forceResetPassword=!1;try{delete o.password,o=await n(o,{hashPassword:!1,requirePassword:!1})}catch(a){return Ie(r,"Error saving user",a)}return r(null,o)}async function fL(t,e){let r,n,i;if(e.profile){let s=e.profile;if(s.name){let o=s.name;o.givenName&&(r=o.givenName),o.familyName&&(n=o.familyName)}}return e.oauth2&&(i={...e.oauth2}),{...t,provider:e.provider,providerType:e.providerType,firstName:r,lastName:n,oauth2:i}}var pL=require("passport-google-oauth").OAuth2Strategy;function CS(t){return(e,r,n,i)=>{let s={provider:"google",providerType:"google",userId:n.id,profile:n,email:n._json.email,oauth2:{accessToken:e,refreshToken:r}};return Xu(s,!0,i,t)}}async function Hp(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 s=CS(r);return new pL({clientID:t.clientID,clientSecret:t.clientSecret,callbackURL:e},s)}catch(n){throw new Error(`Error constructing google authentication strategy: ${n}`)}}async function mL(t){return Cr("google",t)}var Yt={};P(Yt,{buildVerifyFn:()=>vS,fetchStrategyConfig:()=>yL,getCallbackUrl:()=>TL,strategyFactory:()=>gL});var xS=k(require("node-fetch"));var hL=require("@techpass/passport-openidconnect").Strategy;function vS(t){return async(e,r,n,i,s,o,a,u,c)=>{let l={provider:e,providerType:"oidc",userId:n.id,profile:n,email:EL(n,i),oauth2:{accessToken:s,refreshToken:o}};return Xu(l,!1,c,t)}}function EL(t,e){if(t._json.email)return t._json.email;if(e.email)return e.email;let r=e.preferred_username;if(r&&Wf(r))return r;throw new Error(`Could not determine user email from profile ${JSON.stringify(t)} and claims ${JSON.stringify(e)}`)}async function gL(t,e){try{let r=vS(e),n=new hL(t,r);return n.name="oidc",n}catch(r){throw new Error(`Error constructing OIDC authentication strategy - ${r}`)}}async function yL(t,e){try{let{clientID:r,clientSecret:n,configUrl:i,pkce:s}=t;if(!r||!n||!e||!i)throw new Error("Configuration invalid. Must contain clientID, clientSecret, callbackUrl and configUrl");let o=await(0,xS.default)(i);if(!o.ok)throw new Error(`Unexpected response when fetching openid-configuration: ${o.statusText}`);let a=await o.json();return{issuer:a.issuer,authorizationURL:a.authorization_endpoint,tokenURL:a.token_endpoint,userInfoURL:a.userinfo_endpoint,clientID:r,clientSecret:n,callbackURL:e,pkce:s}}catch(r){throw new Error(`Error constructing OIDC authentication configuration - ${r}`)}}async function TL(){return Cr("oidc")}var zp={};P(zp,{postAuth:()=>_L,preAuth:()=>SL});var AL=require("passport-google-oauth").OAuth2Strategy;async function PS(){let t=await Pp();if(!t)throw new Error("No google configuration found");return t}async function SL(t,e,r){let n=await PS(),s=`${await Oo({tenantAware:!1})}/api/global/auth/datasource/google/callback`,o=await Hp(n,s,Ro);return e.query.appId||e.throw(400,"appId query param not present."),t.authenticate(o,{scope:["profile","email","https://www.googleapis.com/auth/spreadsheets"],accessType:"offline",prompt:"consent"})(e,r)}async function _L(t,e,r){let n=await PS(),s=`${await Oo({tenantAware:!1})}/api/global/auth/datasource/google/callback`,o=Vt(e,"budibase:datasourceauth");if(!o)throw new Error("Unable to fetch datasource auth cookie");return t.authenticate(new AL({clientID:n.clientID,clientSecret:n.clientSecret,callbackURL:s},(a,u,c,l)=>{Ir(e,"budibase:datasourceauth"),l(null,{accessToken:a,refreshToken:u})}),{successRedirect:"/",failureRedirect:"/error"},async(a,u)=>{let c=`/builder/app/${o.appId}/data`,l=ee();await Mt(`datasource:creation:${o.appId}:google:${l}`,{tokens:u}),e.redirect(`${c}/new?continue_google_setup=${l}`)})(e,r)}var IL=/\/:(.*?)(\/.*)?$/g,An=t=>t?t.map(e=>{let r=e.route,n=e.method,i=r.match(IL);if(i)for(let s of i){let a="/.*"+(s.endsWith("/")?"/":"");r=r.replace(s,a)}return{regex:new RegExp(r),method:n,route:r}}):[],Sn=(t,e)=>e.find(({regex:r,method:n})=>{let i=r.test(t.request.url),s=n==="ALL"?!0:t.request.method.toLowerCase()===n.toLowerCase();return i&&s});var rm={};P(rm,{SecretOption:()=>LS,decrypt:()=>tm,decryptFile:()=>CL,encrypt:()=>DL,encryptFile:()=>RL,getSecret:()=>em});var Ht=k(require("crypto")),xr=k(require("fs")),Zp=k(require("zlib"));var Jp=require("path"),ec="aes-256-ctr",US="-",OL=1e4,wL=32,tc=16,Xp=16,LS=(r=>(r.API="api",r.ENCRYPTION="encryption",r))(LS||{});function em(t){let e,r;switch(t){case"encryption":e=h.ENCRYPTION_KEY,r="ENCRYPTION_KEY";break;case"api":default:e=h.API_ENCRYPTION_KEY,r="API_ENCRYPTION_KEY";break}if(!e)throw new Error(`Secret "${r}" has not been set in environment.`);return e}function rc(t,e){return Ht.default.pbkdf2Sync(t,new Uint8Array(e),OL,wL,"sha512")}function DL(t,e="api"){let r=Ht.default.randomBytes(tc),n=rc(em(e),r),i=Ht.default.createCipheriv(ec,new Uint8Array(n),new Uint8Array(r)),s=i.update(t,"utf8"),o=i.final(),a=Buffer.concat([new Uint8Array(s),new Uint8Array(o)]).toString("hex");return`${r.toString("hex")}${US}${a}`}function tm(t,e="api"){let[r,n]=t.split(US),i=Buffer.from(r,"hex"),s=rc(em(e),i),o=Ht.default.createDecipheriv(ec,new Uint8Array(s),new Uint8Array(i)),a=o.update(n,"hex"),u=o.final();return Buffer.concat([new Uint8Array(a),new Uint8Array(u)]).toString()}async function RL({dir:t,filename:e},r){let n=`${e}.enc`,i=(0,Jp.join)(t,e);if(xr.default.lstatSync(i).isDirectory())throw new Error("Unable to encrypt directory");let s=xr.default.createReadStream(i),o=xr.default.createWriteStream((0,Jp.join)(t,n)),a=Ht.default.randomBytes(tc),u=Ht.default.randomBytes(Xp),c=rc(r,a),l=Ht.default.createCipheriv(ec,new Uint8Array(c),new Uint8Array(u));return o.write(a),o.write(u),s.pipe(Zp.default.createGzip()).pipe(l).pipe(o),new Promise(d=>{o.on("finish",()=>{d({filename:n,dir:t})})})}async function bL(t){let e=xr.default.createReadStream(t),r=await NS(e,tc),n=await NS(e,Xp);return e.close(),{salt:r,iv:n}}async function CL(t,e,r){if(xr.default.lstatSync(t).isDirectory())throw new Error("Unable to encrypt directory");let{salt:n,iv:i}=await bL(t),s=xr.default.createReadStream(t,{start:tc+Xp}),o=xr.default.createWriteStream(e),a=rc(r,n),u=Ht.default.createDecipheriv(ec,new Uint8Array(a),new Uint8Array(i)),c=Zp.default.createGunzip();return s.pipe(u).pipe(c).pipe(o),new Promise((l,d)=>{o.on("finish",()=>{o.close(),l()}),s.on("error",f=>{o.close(),d(f)}),u.on("error",f=>{o.close(),d(f)}),c.on("error",f=>{o.close(),d(f)}),o.on("error",f=>{o.close(),d(f)})})}function NS(t,e){return new Promise((r,n)=>{let i=0,s=[];t.on("readable",()=>{let o;for(;(o=t.read(e-i))!==null;)s.push(o),i+=o.length;r(Buffer.concat(s.map(a=>new Uint8Array(a))))}),t.on("end",()=>{n(new Error("Insufficient data in the stream."))}),t.on("error",o=>{n(o)})})}var kS=k(require("dd-trace")),xL=h.SESSION_UPDATE_PERIOD?parseInt(h.SESSION_UPDATE_PERIOD):60*1e3;function vL(){return new Date(Date.now()-xL).toISOString()}function MS(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}async function PL(t,e){if(Xs(t))return{valid:!0,user:void 0};let n=tm(t).split(R)[0];return be(n,async()=>{let i;try{let s=Y();i=await Bt("by_api_key",{key:t},s)}catch{i=void 0}if(i)return{valid:!0,user:await Ao({userId:i,tenantId:n,populateUser:e})};throw new oi})}function nc(t,e){let r=t.request.headers[e];if(Array.isArray(r))throw new Error("Unexpected header format");return r}function ic(t=[],e={publicAllowed:!1}){let r=t?An(t):[];return async(n,i)=>{let s=!1,o=nc(n,"x-budibase-api-version");Sn(n,r)&&(s=!0);try{let u=nc(n,"x-budibase-token"),c=Vt(n,"budibase:auth")||fu(u),l=nc(n,"x-budibase-api-key");!l&&n.request.headers.authorization&&(l=n.request.headers.authorization.split(" ")[1]);let d=nc(n,"x-budibase-tenant-id"),f=!1,m,p=!1,E;if(c&&!l){let T=c.sessionId,_=c.userId,S;try{S=await mp(_,T),e&&e.populateUser?m=await Ao({userId:_,tenantId:S.tenantId,email:S.email,populateUser:e.populateUser(n)}):m=await Ao({userId:_,tenantId:S.tenantId,email:S.email}),m.csrfToken=S.csrfToken,E="cookie",S?.lastAccessedAt<vL()&&await pp(S),f=!0}catch(w){f=!1,console.error(`Auth Error: ${w.message}`),Ir(n,"budibase:auth")}}if(!f&&l){let T=e.populateUser?e.populateUser(n):null,{valid:_,user:S}=await PL(l,T);_&&(f=!0,E="api_key",m=S,p=!S)}!m&&d?m={tenantId:d}:m&&"password"in m&&delete m.password,f||(f=!1);let g=T=>T&&T.email;return g(m)&&kS.default.setUser({id:m._id,tenantId:m.tenantId,budibaseAccess:m.budibaseAccess,status:m.status}),MS(n,{authenticated:f,user:m,internal:p,version:o,publicEndpoint:s,loginMethod:E}),g(m)?wd(m,n,i):i()}catch(u){if(console.error(`Auth Error: ${u.message}`),u?.name==="JsonWebTokenError"?Ir(n,"budibase:auth"):u?.code==="invalid_api_key"&&n.throw(403,u.message),e&&e.publicAllowed||s)return MS(n,{authenticated:!1,version:o,publicEndpoint:s}),i();n.throw(u.status||403,u)}}}var sc=async(t,e)=>e();function oc(t,e,r={noTenancyRequired:!1}){let n=An(t),i=An(e);return async function(s,o){let u={allowNoTenant:r.noTenancyRequired||!!Sn(s,i)};!!Sn(s,n)||(u.excludeStrategies=["query"]);let l=Ms(s,u);return s.set("x-budibase-tenant-id",l),be(l,o)}}async function ac(t,e){let r=t.request.headers["x-budibase-api-key"];return r||t.throw(403,"Unauthorized"),Array.isArray(r)&&t.throw(403,"Unauthorized"),Xs(r)||t.throw(403,"Unauthorized"),e()}var NL=["GET","HEAD","OPTIONS"],UL=["application/x-www-form-urlencoded","multipart/form-data","text/plain"];function uc(t={noCsrfPatterns:[]}){let e=An(t.noCsrfPatterns);return async(r,n)=>{if(Sn(r,e)||NL.indexOf(r.method)!==-1)return n();let s=r.get("content-type")?r.get("content-type").toLowerCase():"";if(!UL.filter(u=>s.includes(u)).length||r.internal)return n();let o=r.user?.csrfToken;if(!o)return n();let a=r.get("x-csrf-token");return(!a||a!==o)&&r.throw(403,"Invalid CSRF token"),n()}}var cc=async(t,e)=>(!t.internal&&!Or(t.user)&&t.throw(403,"Admin user only endpoint."),e());async function lc(t,e){let r=Se(),n=h.isWorker()||!r?Xe:h.isApps()?ai:void 0;if(!n)throw new Error("Service name unknown - middleware inactive.");return!t.internal&&!n(t.user,r)&&!Or(t.user)&&t.throw(403,"Admin/Builder user only endpoint."),e()}async function dc(t,e){let r=Se(),n;if(h.isWorker()||!r?n=Xe:h.isApps()&&(n=ai),!n)throw new Error("Service name unknown - middleware inactive.");return!t.internal&&!n(t.user,r)&&t.throw(403,"Builder user only endpoint."),e()}var LL=require("koa-pino-logger"),ML=require("correlation-id");function kL(){return{logger:lu,genReqId:ML.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})}}}function FL(){return h.HTTP_LOGGING?LL(kL()):(t,e)=>e()}var FS=FL();var BS=require("uuid"),BL=require("correlation-id"),$S=(t,e)=>{let r=t.headers["x-budibase-correlation-id"];return r||(r=(0,BS.v4)()),BL.withId(r,()=>e())};function VS(t){if(t.includes("-----BEGIN PRIVATE KEY-----"))return!0;for(let e of Sy){let r=h[e];if(!(typeof r!="string"||r==="")&&t.includes(r))return!0}return!1}async function GS(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:_u(r)};if(VS(JSON.stringify(i))&&(i={message:"Unexpected error",status:n,error:"Unexpected error"}),h.isTest()&&t.headers["x-budibase-include-stacktrace"]){let s=r;for(;s.cause;)s=s.cause;i.stack=s.stack}t.body=i}}function WS(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()}var QS=k(require("crypto"));var qS={"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-*:/.]+$/,KS=async(t,e)=>{let r=QS.default.randomBytes(16).toString("base64");t.state.nonce=r;let n={...qS};if(n["script-src"]=[...qS["script-src"],`'nonce-${r}'`],t.user?.license?.features.includes("customAppScripts")&&t.appId)try{let o=await $s.getAppMetadata(t.appId);if("name"in o)for(let a of o.scripts||[]){let u=(a.cspWhitelist||"").split(`
|
|
38
|
-
`).filter(c=>$L.test(c));n["default-src"]=[...n["default-src"],...u]}}catch(o){console.error(`Error occurred in Content-Security-Policy middleware: ${o}`)}let s=Object.entries(n).map(([o,a])=>`${o} ${a.join(" ")}`).join("; ");t.set("Content-Security-Policy",s),await e()};var jS=async(t,e)=>{let n=Vt(t,"budibase:featureflags")?.flags||{};await zd(n,async()=>{await e()})};var bo={};P(bo,{body:()=>VL,params:()=>GL});var nm=k(require("joi"));function YS(t,e,r){let n=r?.errorPrefix??`Invalid ${e}`;return(i,s)=>{if(!t)return s();let o=null,a=i.request?.[e];i[e]!=null?o=i[e]:a!=null&&(o=a),t.append&&(t=t.append({createdAt:nm.default.any().optional(),updatedAt:nm.default.any().optional()}));let{error:u}=t.validate(o,{allowUnknown:r?.allowUnknown});if(u){let c=u.message;n&&(c=`Invalid ${e} - ${c}`),i.throw(400,c)}return s()}}function VL(t,e){return YS(t,"body",e)}function GL(t,e){return YS(t,"params",e)}async function HS(t,e){return t.ip?await Kd(t.ip,()=>e()):e()}var WL={google:zp};var zS=require("koa-passport"),qL=require("passport-local").Strategy,fc=require("passport-oauth2-refresh"),QL=ic,KL=oc,jL=uc,YL=zS;zS.use(new qL(gi.options,gi.authenticate));async function HL(t,e){let r=await Yt.getCallbackUrl(),n,i;try{if(n=await Yt.fetchStrategyConfig(t,r),!n)throw new Error("OIDC Config contents invalid");i=await Yt.strategyFactory(n,Ro)}catch{throw new Error("Could not refresh OAuth Token")}return fc.use(i,{setRefreshOAuth2(){return i._getOAuth2Client(n)}}),new Promise(s=>{fc.requestNewAccessToken("oidc",e,(o,a,u,c)=>{s({err:o,accessToken:a,refreshToken:u,params:c})})})}async function zL(t,e){let r=await jt.getCallbackUrl(t),n;try{n=await jt.strategyFactory(t,r,Ro)}catch(i){throw new Error(`Error constructing OIDC refresh strategy: message=${i.message}`)}return fc.use(n),new Promise(i=>{fc.requestNewAccessToken("google",e,(s,o,a,u)=>{i({err:s,accessToken:o,refreshToken:a,params:u})})})}async function JL(t,e,r){switch(e){case"oidc":{if(!r)return{err:{data:"OIDC config id not provided"}};let n=await Np(r);return n?HL(n,t):{err:{data:"OIDC configuration not found"}}}case"google":{let n=await Qu();return n?zL(n,t):{err:{data:"Google configuration not found"}}}}}async function ZL(t,e){let r={accessToken:e.accessToken,refreshToken:e.refreshToken};try{let n=Y(),i=await n.get(t);typeof r.refreshToken!="string"&&delete r.refreshToken,i.oauth2={...i.oauth2,...r},await n.put(i),await So(t)}catch(n){console.error("Could not update OAuth details for current user",n)}}async function XL(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"),s=await Eo(r);i&&n?s=s.filter(a=>a.sessionId!==i.sessionId):Ir(e,"budibase:auth");let o=s.map(({sessionId:a})=>a);await En(r,{sessionIds:o,reason:"logout"}),await Fu.logout(e.user?.email),await So(r)}var am={};P(am,{validate:()=>i0});var b=k(require("joi")),e0=["Relational","Non-relational","Spreadsheet","Object store","Graph","API"];function om(t,e){let{error:r}=t.validate(e);if(r)throw r}function t0(t){let e=b.default.object({type:b.default.string().allow("component").required(),metadata:b.default.object().unknown(!0).required(),hash:b.default.string().optional(),version:b.default.string().optional(),schema:b.default.object({name:b.default.string().required(),settings:b.default.array().items(b.default.object().unknown(!0)).required()}).unknown(!0)});om(e,t)}function r0(t){let e=b.default.object({type:b.default.string().allow(...Object.values(yc)).required(),required:b.default.boolean().required(),default:b.default.any(),display:b.default.string()}),r=b.default.object({type:b.default.string().allow(...Object.values(gc)),readable:b.default.boolean(),displayName:b.default.string(),fields:b.default.object().pattern(b.default.string(),e)}).required(),n=b.default.object({type:b.default.string().allow("datasource").required(),metadata:b.default.object().unknown(!0).required(),hash:b.default.string().optional(),version:b.default.string().optional(),schema:b.default.object({docs:b.default.string(),plus:b.default.boolean().optional(),isSQL:b.default.boolean().optional(),auth:b.default.object({type:b.default.string().required()}).optional(),features:b.default.object(Object.fromEntries(Object.values(Tc).map(i=>[i,b.default.boolean().optional()]))).optional(),relationships:b.default.boolean().optional(),description:b.default.string().required(),friendlyName:b.default.string().required(),type:b.default.string().allow(...e0),datasource:b.default.object().pattern(b.default.string(),e).required(),query:b.default.object().pattern(b.default.string(),r).unknown(!0).required(),extra:b.default.object().pattern(b.default.string(),b.default.object({type:b.default.string().required(),displayName:b.default.string().required(),required:b.default.boolean(),data:b.default.object()}))})});om(n,t)}function n0(t){let e=b.default.object().pattern(b.default.string(),{type:b.default.string().allow(...Object.values(Ac)).required(),customType:b.default.string().allow(...Object.values(Sc)),title:b.default.string(),description:b.default.string(),enum:b.default.array().items(b.default.string()),pretty:b.default.array().items(b.default.string())}),r=b.default.object({properties:e,required:b.default.array().items(b.default.string())}).concat(e).required(),n=b.default.object({type:b.default.string().allow("automation").required(),metadata:b.default.object().unknown(!0).required(),hash:b.default.string().optional(),version:b.default.string().optional(),schema:b.default.object({name:b.default.string().required(),tagline:b.default.string().required(),icon:b.default.string().required(),description:b.default.string().required(),type:b.default.string().allow("ACTION","LOGIC").required(),stepId:b.default.string().disallow(...xm).required(),inputs:b.default.object().optional(),schema:b.default.object({inputs:r,outputs:r}).required()})});om(n,t)}function i0(t){switch(t?.type){case"component":t0(t);break;case"datasource":r0(t);break;case"automation":n0(t);break;default:throw new Error(`Unknown plugin type - check schema.json: ${t.type}`)}}var um={};P(um,{Client:()=>Ce,clients:()=>pr,locks:()=>Ei,utils:()=>Ya});var cm={};P(cm,{isBlacklisted:()=>o0,refreshBlacklist:()=>e_});var JS=k(require("dns")),mc=k(require("net"));var ZS=require("util"),pc,s0=(0,ZS.promisify)(JS.default.lookup);async function XS(t){return mc.default.isIP(t)||(t.startsWith("http")||(t=`https://${t}`),t=new URL(t).hostname),(await s0(t,{all:!0})).map(r=>r.address)}async function e_(){let e=h.BLACKLIST_IPS?.split(",")||[],r=[];for(let n of e){let i=n.trim();if(mc.default.isIP(i))r.push(i);else{let s=await XS(i);r=r.concat(s)}}pc=r}async function o0(t){if(pc||await e_(),pc?.length===0)return!1;let e;return mc.default.isIP(t)?e=[t]:e=await XS(t),!!pc?.find(r=>e.includes(r))}var dm={};P(dm,{init:()=>u0});var a0={"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 t_(t,e){let r=a0[t];if(!r)throw new Error("Event does not have a method of document ID extraction");return r(e)}var Co=class{constructor(e){this.processors=[];this.processors=e}async processEvent(e,r,n){let i=r.realTenantId,s=t_(e,n);if(!(!i||!s))for(let{events:o,processor:a}of this.processors)o.includes(e)&&await be(i,async()=>{await a({id:s,tenantId:i,appId:n.appId})})}shutdown(){return DA()}};var r_,lm;function u0(t){Kt||ku(),lm||(lm=new Co(t)),r_||(r_=Kt.process(async e=>{let{event:r,identity:n,properties:i}=e.data;await lm.processEvent(r,n,i)}))}var Am={};P(Am,{COUNT_FIELD_NAME:()=>ym,Sql:()=>d_,SqlTable:()=>hc,designDoc:()=>Tm,utils:()=>Fd});var o_=require("knex");var c0=require("knex");function fm(t){return["link","formula","ai"].indexOf(t)!==-1}function n_(t,e,r,n,i){let s=e&&e.primary?e.primary:[],o=Object.values(e.schema),a=o.filter(f=>f.meta),u=a.length===o.length,c=[];n||(u?t.primary(a.map(f=>f.name)):s.length===1?(t.increments(s[0]).primary(),c.push(s[0])):t.primary(s));let l=Object.values(e.schema).map(f=>f.foreignKey);for(let[f,m]of Object.entries(e.schema)){let p=n?.schema[f];if(p&&p.type||c.includes(f)||i?.updated===f)continue;let E=m.type;switch(E){case"string":case"options":case"longform":case"barcodeqr":case"bb_reference_single":s.includes(f)?t.string(f,255):t.text(f);break;case"number":if(m.meta&&m.meta.toKey&&m.meta.toTable){let{toKey:g,toTable:T}=m.meta;t.integer(f).unsigned(),t.foreign(f).references(`${T}.${g}`)}else l.indexOf(f)===-1&&t.float(f);break;case"bigint":t.bigint(f);break;case"boolean":t.boolean(f);break;case"datetime":m.timeOnly?t.time(f):t.datetime(f,{useTz:!m.ignoreTimezones});break;case"array":case"bb_reference":Pe.schema.isDeprecatedSingleUserColumn(m)?t.text(f):t.json(f);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:g}=Nd(m.tableId),T=r[g];if(!T||!T.primary)throw new Error("Referenced table doesn't exist or has no primary keys");let _=T.primary[0],S=T.schema[_].externalType;S?t.specificType(m.foreignKey,S):t.integer(m.foreignKey).unsigned(),t.foreign(m.foreignKey).references(`${g}.${_}`)}break;case"signature_single":case"attachment":case"attachment_single":t.json(f);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:Xt.unreachable(E)}}let d=i?n?.schema[i.old].type:void 0;return i&&d&&!fm(d)&&t.renameColumn(i.old,i.updated),n&&Object.entries(n.schema).filter(([m,p])=>!fm(p.type)&&e.schema[m]==null).forEach(([m,p])=>{i?.old===m||fm(p.type)||(n.constrained&&n.constrained.indexOf(m)!==-1&&t.dropForeign(m),t.dropColumn(m))}),t}function d0(t,e,r){return t.createTable(e.name,n=>{n_(n,e,r)})}function f0(t,e,r,n,i){return t.alterTable(e.name,s=>{n_(s,e,r,n,i)})}function p0(t,e){return t.dropTable(e.name)}var pm=class{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,c0.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=d0(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=f0(r,e.table,e.tables,e.meta?.oldTable,e.meta?.renamed),this.sqlClient==="mssql"&&e.meta?.renamed){let i=e.meta.renamed.old,s=e.meta.renamed.updated,o=e?.schema?`${e.schema}.${e.table.name}`:`${e.table.name}`,a=Qn(n);if(Array.isArray(a))for(let u of a)u.sql.startsWith("exec sp_rename")&&(u.sql=`exec sp_rename '${o}.${i}', '${s}', 'COLUMN'`,u.bindings=[]);return a}break;case"DELETE_TABLE":n=p0(r,e.table);break;default:throw new Error("Table operation is of unknown type")}return Qn(n)}},hc=pm;var a_=require("lodash"),ym="__bb_total";function i_(){return(h.SQL_MAX_ROWS?parseInt(h.SQL_MAX_ROWS):null)||5e3}function mm(){return(h.SQL_MAX_RELATED_ROWS?parseInt(h.SQL_MAX_RELATED_ROWS):null)||500}function m0(t,e){return t.sort((r,n)=>{let i=e.find(o=>o&&r.endsWith(o)),s=e.find(o=>o&&n.endsWith(o));return i&&!s?-1:!i&&s?1:r.localeCompare(n)})}function u_(t){return Array.isArray(t)?t.map(e=>u_(e)):(t.bindings&&(t.bindings=t.bindings.map(e=>typeof e=="boolean"?e?1:0:e)),t)}function s_(t){return t.sourceType==="internal"||t.sourceId===Oc}function h0(t,e='"'){return t.replace(new RegExp(e,"g"),`${e}${e}`)}function c_(t,e='"'){return`${e}${h0(t,e)}${e}`}function hm(t,e='"'){for(let r in t)typeof t[r]=="string"&&(t[r]=c_(t[r],e));return`[${t.join(",")}]`}function l_(t){return Pm.includes(t.type)&&!Pe.schema.isDeprecatedSingleUserColumn(t)}var E0={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},Em=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 ar.ColumnSplitter([this.table],{aliases:this.query.tableAliases,columnPrefix:this.query.meta?.columnPrefix})}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(o=>{let a=o.split(/\./g),u,c=a[0];return a.length>1&&(u=a[0],c=a.slice(1).join(".")),{table:u,column:c,field:o}}).filter(({table:o})=>!o||o===n).map(({table:o,column:a,field:u})=>{let c=i[a];return this.SPECIAL_SELECT_CASES.POSTGRES_MONEY(c)?this.knex.raw("??::money::numeric as ??",[this.rawQuotedIdentifier([o,a].join(".")),this.knex.raw(this.quote(u))]):this.SPECIAL_SELECT_CASES.MSSQL_DATES(c)?this.knex.raw("CONVERT(varchar, ??, 108) as ??",[this.rawQuotedIdentifier(u),this.knex.raw(this.quote(u))]):o?this.rawQuotedIdentifier(`${o}.${a}`):this.rawQuotedIdentifier(u)})}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(),s=this.table.schema[i],o=this.rawQuotedIdentifier(e);return(s.type==="string"||s.type==="longform"||s.type==="bb_reference_single"||s.type==="bb_reference"||s.type==="options"||s.type==="barcodeqr")&&(r?.forSelect?o=this.knex.raw("to_char(??) as ??",[o,this.rawQuotedIdentifier(i)]):o=this.knex.raw("to_char(??)",[o])),o}parse(e,r){if(Array.isArray(e))return JSON.stringify(e);if(e==null)return null;if(this.requiresJsonAsStringClient()&&l_(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"),s=e.getSeconds().toString().padStart(2,"0");return`${n}:${i}:${s}`}if(typeof e=="string")return new Date(`1970-01-01T${e}Z`)}if(typeof e=="string"&&r.type==="datetime")if(r.timeOnly){if(!Md(e))return null}else if(r.dateOnly){let n=Ld(e);return n?new Date(n):null}else return r.ignoreTimezones?Ga(e)?new Date(e):Ud(e)?new Date(e+"Z"):null:Ga(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),s=this.table.schema[i];s&&(e[r]=this.parse(n,s))}return e}parseFilters(e){e=(0,a_.cloneDeep)(e);for(let r of Object.values(Nr)){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:s}=this.splitter.run(i),o=this.table.schema[s];o&&(n[i]=this.parse(n[i],o))}}for(let r of Object.values(Jt)){let n=e[r];if(n)for(let i of Object.keys(n)){let{column:s}=this.splitter.run(i),o=this.table.schema[s];o&&(n[i]=n[i].map(a=>this.parse(a,o)))}}for(let r of Object.values(In)){let n=e[r];if(n)for(let i of Object.keys(n)){let{column:s}=this.splitter.run(i),o=this.table.schema[s];if(!o)continue;let a=n[i];"low"in a&&(a.low=this.parse(a.low,o)),"high"in a&&(a.high=this.parse(a.high,o))}}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:s,schema:o,tableAliases:a,table:u}=this.query,c=a?.[u.name]||u.name,l=d=>n.match(new RegExp(`^${d}\\.`));if(!s)return e;for(let d of s){let f=d.tableName,m=a?.[f]||f,p=l(f)||l(m),E=l(d.column);if((p||E)&&d.to&&d.tableName){let g=this.knex.select(this.knex.raw(1)).from({[m]:f}),T=g.clone(),_=kd(d),S;if(p?S=n:S=n.replace(new RegExp(`^${d.column}.`),`${a?.[d.tableName]||d.tableName}.`),_){let w=a?.[_.through]||d.through,y=this.tableNameWithSchema(_.through,{alias:w,schema:o});T=T.innerJoin(y,function(){this.on(`${m}.${_.toPrimary}`,"=",`${w}.${_.to}`)}).where(`${w}.${_.from}`,"=",this.rawQuotedIdentifier(`${c}.${_.fromPrimary}`)),this.client==="sqlite3"&&(T=this.addJoinFieldCheck(T,_)),e=e.where(I=>{I.whereExists(i(S,T)),r&&I.orWhereNotExists(g.clone().innerJoin(y,function(){this.on(`${c}.${_.fromPrimary}`,"=",`${w}.${_.from}`)}))})}else{let w=`${m}.${d.to}`,y=`${c}.${d.from}`;T=T.where(w,"=",this.rawQuotedIdentifier(y)),e=e.where(I=>{I.whereExists(i(S,T.clone())),r&&I.orWhereNotExists(T)})}}}return e}addFilters(e,r,n){if(!r)return e;let i=this;r=this.parseFilters({...r});let s=this.query.tableAliases,o=r.allOr,u=this.client==="sqlite3"?this.table._id:this.table.name;function c(p){return s?.[p]||p}function l(p,E,g,T){let _=(S,w,y)=>{let[I,...M]=w.split("."),v=M.join("."),L=c(I);return S.andWhere(j=>g(j,L?`${L}.${v}`:v,y))};for(let S in p){let w=p[S],y=Qs(S),I=y.includes("."),M=n?.relationship&&I,v;if(S==="_complexIdOperator"&&(v=p[S])&&T){let L=c(u);e=T(e,v.id.map(j=>L?`${L}.${j}`:j),v.values)}else if(I)M&&(o&&(e=e.or),e=i.addRelationshipForFilter(e,E0[E],y,(L,j)=>_(j,L,w)));else{let L=c(u);e=g(e,L?`${L}.${y}`:y,w)}}}let d=(p,E,g)=>((r?.fuzzyOr||o)&&(p=p.or),this.client==="oracledb"||this.client==="sqlite3"?p.whereRaw("LOWER(??) LIKE ?",[this.rawQuotedIdentifier(E),`%${g.toLowerCase()}%`]):p.whereILike(this.rawQuotedIdentifier(E),this.knex.raw("?",[`%${g}%`]))),f=(p,E=!1)=>{function g(T){return(o||p===r?.containsAny)&&(T=T.or),p===r?.notContains&&(T=T.not),T}this.client==="pg"?l(p,"contains",(T,_,S)=>{T=g(T);let w=this.getFieldSchema(_),y="::jsonb";return this.SPECIAL_SELECT_CASES.POSTGRES_ARRAY(w)&&(y="",S=`{${S.map(M=>M.substring(1,M.length-1))}}`),E?T.whereRaw(y?"COALESCE(??::jsonb \\?| array??, FALSE)":"COALESCE(?? && '??', FALSE)",[this.rawQuotedIdentifier(_),y?this.knex.raw(hm(S,"'")):this.knex.raw(S)]):T.whereRaw(`COALESCE(??${y} @> '??', FALSE)`,[this.rawQuotedIdentifier(_),y?this.knex.raw(hm(S)):this.knex.raw(S)])}):this.client==="mysql2"||this.client==="mariadb"?l(p,"contains",(T,_,S)=>g(T).whereRaw("COALESCE(?(??, ?), FALSE)",[this.knex.raw(E?"JSON_OVERLAPS":"JSON_CONTAINS"),this.rawQuotedIdentifier(_),this.knex.raw(c_(hm(S)))])):l(p,"contains",(T,_,S)=>(S.length===0||(T=T.where(w=>(p===r?.notContains&&(w=w.not),w=w.where(y=>{for(let I of S){p===r?.containsAny?y=y.or:y=y.and;let M=typeof I=="string"?`"${I.toLowerCase()}"`:I;y=y.whereLike(this.knex.raw("COALESCE(LOWER(??), '')",[this.rawQuotedIdentifier(_)]),`%${M}%`)}}),p===r?.notContains&&(w=w.or.whereNull(this.rawQuotedIdentifier(_))),w))),T))};if(r.$and){let{$and:p}=r;for(let E of p.conditions)e=e.where(g=>{this.addFilters(g,E,n)})}if(r.$or){let{$or:p}=r;e=e.where(E=>{for(let g of p.conditions)E.orWhere(T=>this.addFilters(T,{...g,allOr:!0},n))})}r.oneOf&&l(r.oneOf,"oneOf",(p,E,g)=>{let T=this.getFieldSchema(E),_=Array.isArray(g)?g:[g];if(o&&(p=p.or),this.client==="oracledb")E=this.convertClobs(E);else if(this.client==="sqlite3"&&T?.type==="datetime"&&T.dateOnly){for(let S of _)S!=null?p=p.or.whereLike(E,`${S.toISOString().slice(0,10)}%`):p=p.or.whereNull(E);return p}return p.whereIn(E,_)},(p,E,g)=>(o&&(p=p.or),this.client==="oracledb"&&(E=E.map(T=>this.convertClobs(T))),p.whereIn(E,Array.isArray(g)?g:[g]))),r.string&&l(r.string,"string",(p,E,g)=>{if(o&&(p=p.or),this.client==="oracledb"||this.client==="sqlite3")return p.whereRaw("LOWER(??) LIKE ?",[this.rawQuotedIdentifier(E),`${g.toLowerCase()}%`]);{let T=this.getFieldSchema(E);return this.SPECIAL_SELECT_CASES.POSTGRES_ENUM(T)?p.whereRaw(`??::text ilike '${g}%'`,[this.knex.raw(this.quote(T.name))]):p.whereILike(E,`${g}%`)}}),r.fuzzy&&l(r.fuzzy,"fuzzy",d),r.range&&l(r.range,"range",(p,E,g)=>{let T=v=>v&&Object.keys(v).length===0&&Object.getPrototypeOf(v)===Object.prototype;T(g.low)&&(g.low=""),T(g.high)&&(g.high="");let _=Wa(g.low),S=Wa(g.high),w=this.getFieldSchema(E),y=E,I=g.high,M=g.low;return this.client==="sqlite3"&&w?.type==="datetime"&&w.dateOnly&&(I!=null&&(I=`${I.toISOString().slice(0,10)}T23:59:59.999Z`),M!=null&&(M=M.toISOString().slice(0,10))),this.client==="oracledb"?y=this.convertClobs(E):this.client==="sqlite3"&&w?.type==="bigint"&&(y=this.knex.raw("CAST(?? AS INTEGER)",[this.rawQuotedIdentifier(E)]),I=this.knex.raw("CAST(? AS INTEGER)",[g.high]),M=this.knex.raw("CAST(? AS INTEGER)",[g.low])),o&&(p=p.or),_&&S?p.whereBetween(y,[M,I]):_?p.where(y,">=",M):S?p.where(y,"<=",I):p}),r.equal&&l(r.equal,"equal",(p,E,g)=>{let T=this.getFieldSchema(E);if(o&&(p=p.or),this.client==="mssql")return p.whereRaw("CASE WHEN ?? = ? THEN 1 ELSE 0 END = 1",[this.rawQuotedIdentifier(E),g]);if(this.client==="oracledb"){let _=this.convertClobs(E);return p.where(S=>S.whereNotNull(_).andWhere(_,g))}else return this.client==="sqlite3"&&T?.type==="datetime"&&T.dateOnly?g!=null?p.whereLike(E,`${g.toISOString().slice(0,10)}%`):p.whereNull(E):p.whereRaw("COALESCE(?? = ?, FALSE)",[this.rawQuotedIdentifier(E),g])}),r.notEqual&&l(r.notEqual,"notEqual",(p,E,g)=>{let T=this.getFieldSchema(E);if(o&&(p=p.or),this.client==="mssql")return p.whereRaw("CASE WHEN ?? = ? THEN 1 ELSE 0 END = 0",[this.rawQuotedIdentifier(E),g]);if(this.client==="oracledb"){let _=this.convertClobs(E);return p.where(S=>S.not.whereNull(_).and.where(_,"!=",g)).or.whereNull(_)}else return this.client==="sqlite3"&&T?.type==="datetime"&&T.dateOnly?g!=null?p.not.whereLike(E,`${g.toISOString().slice(0,10)}%`).or.whereNull(E):p.not.whereNull(E):p.whereRaw("COALESCE(?? != ?, TRUE)",[this.rawQuotedIdentifier(E),g])}),r.empty&&l(r.empty,"empty",(p,E)=>(o&&(p=p.or),p.whereNull(E))),r.notEmpty&&l(r.notEmpty,"notEmpty",(p,E)=>(o&&(p=p.or),p.whereNotNull(E))),r.contains&&f(r.contains),r.notContains&&f(r.notContains),r.containsAny&&f(r.containsAny,!0);let m=s?.[this.table._id]||this.table._id;return r.documentType&&!Pd(this.table)&&m&&e.andWhereLike(`${m}._id`,`${Zt(r.documentType)}%`),e}isSqs(){return s_(this.table)}getTableName(e){e||(e=this.table);let r=e.name;s_(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 ${ym}`)}addAggregations(e,r){let n=this.query.resource?.fields||[],i=this.getTableName();if(n.length>0){let s=n.map(o=>this.qualifyIdentifier(o));if(this.client==="oracledb"){let o=s.map(u=>this.convertClobs(u)),a=s.map(u=>this.convertClobs(u,{forSelect:!0}));e=e.groupBy(o).select(a)}else e=e.groupBy(s).select(s)}for(let s of r){let o=s.calculationType;if(o==="count")if("distinct"in s&&s.distinct)if(this.client==="oracledb"){let a=this.convertClobs(`${i}.${s.field}`);e=e.select(this.knex.raw("COUNT(DISTINCT ??) as ??",[a,s.name]))}else e=e.countDistinct(`${i}.${s.field} as ${s.name}`);else if(this.client==="oracledb"){let a=this.convertClobs(`${i}.${s.field}`);e=e.select(this.knex.raw("COUNT(??) as ??",[a,s.name]))}else e=e.count(`${s.field} as ${s.name}`);else{let a=this.getFieldSchema(s.field);if(!a)throw new Error(`field schema missing for aggregation target: ${s.field}`);let u=this.knex.raw("??(??)",[this.knex.raw(o),this.rawQuotedIdentifier(`${i}.${s.field}`)]);a.type==="bigint"&&(u=this.castIntToString(u)),e=e.select(this.knex.raw("?? as ??",[u,s.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,s=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[a,u]of Object.entries(r)){let c=u.direction==="ascending"?"asc":"desc",l;(this.client==="pg"||this.client==="oracledb")&&(l=u.direction==="ascending"?"first":"last");let d=`${s}.${a}`,f;this.isAggregateField(a)?f=this.rawQuotedIdentifier(a):this.client==="oracledb"?f=this.convertClobs(d):f=this.rawQuotedIdentifier(d),e=e.orderByRaw(`?? ?? ${l?"nulls ??":""}`,[f,this.knex.raw(c),...l?[this.knex.raw(l)]:[]])}if(!((n?.aggregations?.length??0)>0)&&(!r||r[i[0]]===void 0)){if(i[0]===void 0)throw new Error(`Primary key not found for table ${this.table.name}`);e=e.orderBy(`${s}.${i[0]}`)}return e}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],s,o;if(n.length>1){let c=n.shift();s=n.join("."),o=`${c}.${s}`}else s=n.join("."),o=s;this.query.meta?.columnPrefix&&(i=i.replace(this.query.meta.columnPrefix,""));let a=this.rawQuotedIdentifier(o),u=e.schema[i];return u&&u.type==="bigint"&&(a=this.castIntToString(a)),[s,a]}maxFunctionParameters(){switch(this.client){case"sqlite3":return 127;case"pg":return 100;default:return 200}}addJsonRelationships(e,r,n){let i=this.client,s=this.knex,{resource:o,tableAliases:a,schema:u,tables:c}=this.query,l=o?.fields||[];for(let d of n){let{tableName:f,through:m,to:p,from:E,fromPrimary:g,toPrimary:T}=d;if(!f||!r)continue;let _=c[f];if(!_)throw new Error(`related table "${f}" not found in datasource`);let S=a?.[f]||f,w=a?.[r]||r,y=m&&a?.[m]||m,I=this.tableNameWithSchema(f,{alias:S,schema:u}),M=[..._?.primary||[],_?.primaryDisplay].filter(B=>B),v=m0(l.filter(B=>B.split(".")[0]===S),M);v=v.slice(0,Math.floor(this.maxFunctionParameters()/2));let L=v.map(B=>this.buildJsonField(_,B));if(!L.length)continue;let j=L.map(B=>{let z=this.client==="oracledb"?" VALUE ":",";return this.knex.raw(`?${z}??`,[B[0],B[1]]).toString()}).join(","),Dt=`${S}.${T||p}`,F=s.from(I).orderBy(Dt),U=m&&T&&g,x=U?`${y}.${E}`:`${S}.${p}`,$=U?`${w}.${g}`:`${w}.${E}`;if(U){let B=this.tableNameWithSchema(m,{alias:y,schema:u});F=F.join(B,function(){this.on(`${S}.${T}`,"=",`${y}.${p}`)})}F=F.where(this.rawQuotedIdentifier(x),"=",this.rawQuotedIdentifier($));let O=B=>(F=F.select(v.map(z=>this.rawQuotedIdentifier(z))).limit(mm()),s.select(B).from({[S]:F})),W;switch(i){case"sqlite3":F=this.addJoinFieldCheck(F,d),W=O(this.knex.raw(`json_group_array(json_object(${j}))`));break;case"pg":W=O(this.knex.raw(`json_agg(json_build_object(${j}))`));break;case"mariadb":W=F.select(s.raw(`json_arrayagg(json_object(${j}) LIMIT ${mm()})`));break;case"mysql2":case"oracledb":W=O(this.knex.raw(`json_arrayagg(json_object(${j}))`));break;case"mssql":{let B=s.select("*").from({[w]:F.select(L.map(z=>s.ref(z[1]).as(z[0]))).limit(mm())});W=s.raw(`(SELECT ?? = (${B} FOR JSON PATH))`,[this.rawQuotedIdentifier(S)]);break}default:throw new Error(`JSON relationships not implement for ${i}`)}e=e.select({[d.column]:W})}return e}addJoin(e,r,n){let{tableAliases:i,schema:s}=this.query,o=r.to,a=r.from,u=r.through,c=i?.[o]||o,l=u&&i?.[u]||u,d=i?.[a]||a,f=this.tableNameWithSchema(o,{alias:c,schema:s}),m=u?this.tableNameWithSchema(u,{alias:l,schema:s}):void 0;return u?e=e.leftJoin(m,function(){for(let p of n){let E=p.fromPrimary,g=p.from;this.orOn(`${d}.${E}`,"=",`${l}.${g}`)}}).leftJoin(f,function(){for(let p of n){let E=p.toPrimary,g=p.to;this.orOn(`${c}.${E}`,`${l}.${g}`)}}):e=e.leftJoin(f,function(){for(let p of n){let E=p.from,g=p.to;this.orOn(`${d}.${E}`,"=",`${c}.${g}`)}}),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[s,o]of Object.entries(this.query.table.schema)){if(o.constraints?.presence===!0||o.type==="formula"||o.type==="auto"||o.type==="link"||o.type==="ai")continue;i[s]==null&&(i[s]=null)}else for(let[s,o]of Object.entries(i))o==null&&delete i[s];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:s,table:o}=this.query,{limits:a}=e,u=this.qualifiedKnex(),c=null,l=a?.query||a?.base;if(i&&i.page&&i.limit){let m=(i.page<=1?0:i.page-1)*i.limit;l=i.limit,c=m}else i&&i.offset&&i.limit?(l=i.limit,c=i.offset):i&&i.limit&&(l=i.limit);r!=="COUNT"&&(l!=null&&(u=u.limit(l)),c!=null&&(u=u.offset(c)));let d=this.query.resource?.aggregations||[];if(r==="COUNT"?u=this.addDistinctCount(u):d.length>0?u=this.addAggregations(u,d):u=u.select(this.generateSelectStatement()),r!=="COUNT"&&(u=this.addSorting(u)),u=this.addFilters(u,n,{relationship:!0}),s?.length&&d.length===0){let f=this.query.tableAliases?.[o.name]||o.name,m=this.addSorting(this.knex.with("paginated",u.clone().clearSelect().select("*")).select(this.generateSelectStatement()).from({[f]:"paginated"}));return this.addJsonRelationships(m,o.name,s)}return u}update(e){let{body:r,filters:n}=this.query;if(!r)throw new Error("Cannot update without row body");let i=this.qualifiedKnex(),s=this.parseBody(r);return i=this.addFilters(i,n),e.disableReturning?i.update(s):i.update(s).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())}},gm=class extends hc{constructor(r,n=i_()){super(r);this.limit=n}convertToNative(r,n={}){let i=this.getSqlClient();if(n?.disableBindings)return{sql:r.toString()};{let s=Qn(r);return i==="sqlite3"&&(s=u_(s)),s}}_query(r,n={}){let i=this.getSqlClient(),s={client:this.getBaseSqlClient()};(i==="sqlite3"||i==="oracledb")&&(s.useNullAsDefault=!0);let o=(0,o_.knex)(s),a,u=new Em(i,o,r);switch(this._operation(r)){case"CREATE":a=u.create(n);break;case"READ":a=u.read({limits:{query:this.limit,base:i_()}});break;case"COUNT":a=u.read();break;case"UPDATE":a=u.update(n);break;case"DELETE":a=u.delete(n);break;case"BULK_CREATE":a=u.bulkCreate();break;case"BULK_UPSERT":a=u.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(a,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=s=>s){let s=this.getSqlClient(),o=this._operation(r),a=this._query(r,{disableReturning:!0});if(Array.isArray(a)){let d=[];for(let f of a)d.push(await n(f,o));return d}let u;o==="DELETE"&&(u=i(await this.getReturningRow(n,r)));let c=await n(a,o),l=i(c);if(o==="CREATE"||o==="UPDATE"){let d;s==="mssql"?d=l?.[0].id:(s==="mysql2"||s==="mariadb")&&(d=l?.insertId),u=i(await this.getReturningRow(n,this.checkLookupKeys(d,r)))}return o==="COUNT"?l:o!=="READ"?u:l.length?l:[{[o.toLowerCase()]:!0}]}getTableName(r,n){let i=r.name;if(r.sourceType==="internal"||r.sourceId===Oc){if(!r._id)return;i=r._id}return n?.[i]||i}convertJsonStringColumns(r,n,i){let s=this.getTableName(r,i);for(let[o,a]of Object.entries(r.schema)){if(!l_(a))continue;let u=`${s}.${o}`;for(let c of n)typeof c[u]=="string"&&(c[u]=JSON.parse(c[u])),typeof c[o]=="string"&&(c[o]=JSON.parse(c[o]))}return n}log(r,n){Ss(this.getSqlClient(),r,n)}},d_=gm;var Tm={};P(Tm,{base:()=>g0});function g0(t){return{_id:It,language:"sqlite",sql:{tables:{},options:{table_name:t}}}}var Sm={};P(Sm,{jsonFromCsvString:()=>y0});var f_=k(require("csvtojson"));async function y0(t,e){let{ignoreEmpty:r=!1,allowSingleColumn:n=!1,possibleDelimiters:i=[",",";",":","|","~"," "," "]}=e||{};for(let s of i){let o,a=!1;try{let u=await(0,f_.default)({ignoreEmpty:r,delimiter:s}).fromString(t);for(let[,c]of u.entries()){let l=Object.keys(c);if(o==null&&(o=l),!n&&l.length===1){a=!0;break}if(o.length!==l.length){a=!0;break}for(let d of o)(c[d]===void 0||c[d]==="")&&(c[d]=null)}if(a)continue;return u}catch{continue}}throw new Error("Unable to determine delimiter")}var _m=class{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,s=this.controller,o=this.outputMiddlewares,a=()=>{},u=[n,...i,s,...o,a];e[r](...u)}},Ec=_m;var p_=k(require("@koa/router")),_n=class{constructor(){this.endpoints=[];this.middlewares=[];this.outputMiddlewares=[];this.applied=!1;this.locked=!1}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(),s=new Ec(e,r,i);if(n.length!==0)for(let o of n)s.addMiddleware(o);return this.endpoints.push(s),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 p_.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 xo=class{constructor(){this.groups=[]}group(...e){let r=new _n;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 T0={...ks,...ae},A0=(t={})=>{$a(t.db)};0&&(module.exports={APP_DEV,APP_DEV_PREFIX,APP_PREFIX,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,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")},Fs=async(t,e)=>{let r={account_by_email:pT,platform_users_lowercase_2:mT};return Ge(de.PLATFORM_INFO.name,async n=>{let i=r[t];return hf(t,e,n,i,{arrayResponse:!0})})},hT={by_email2:cT,by_api_key:dT,by_app:lT},Ft=async(t,e,r,n)=>{r||(r=Y());let i=hT[t];return hf(t,e,r,i,n)};async function Ef(t,e,r){let n=Y(),i=hT[t];return Ms(t,e,n,i,r)}var gf=class{constructor({source:e,target:r}){this.source=Ze(e),this.target=Ze(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([Ss(this.source),Ss(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})})}appReplicateOpts(e={}){if(typeof e.filter=="string")return e;let r=e.filter,i=this.direction==="toDev";delete e.filter;let s=e.isCreation,o=e.tablesToSync;delete e.isCreation,delete e.tablesToSync;let a=!1,u;typeof o=="string"&&o==="all"?a=!0:o&&(u=o);let c=(d,f)=>d?.startsWith(f+R),l=d=>c(d,"ro")||c(d,"li");return{...e,filter:(d,f)=>!s&&d._id==="_design/migrations"||i&&d._id.startsWith("_design")?!1:d._deleted||c(d._id,ps)?!0:l(d._id)?!!u?.find(m=>d._id.includes(m))||a:c(d._id,"log_au")||d._id==="app_metadata"?!1:r?r(d,f):!0}}async rollback(){await this.target.destroy(),this.target=Ze(this.target.name),await this.replicate()}},ET=gf;var yT=M(require("node-fetch"));var Bs=ar.removeKeyNumbering;function on(t){return t==null||t===""}var Bt=class t{#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:s}={}){let o=!!this.#f,a=typeof e;return e&&n&&(e=e.toLowerCase?e.toLowerCase():e),!this.#u&&r&&a==="string"&&(e=`${e}`.replace(/[ /#+\-&|!(){}\]^"~*?:\\]/g,"\\$&")),a==="string"&&!isNaN(e)&&!s?e=`"${e}"`:o&&i&&(e=a==="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 s of Object.keys(e)){let o=Bs(s);r[o]?r[o]=r[o].concat(e[s]):r[o]=e[s]}let n={},i=1;for(let[s,o]of Object.entries(r))n[`${i++}:${s}`]=o;return n}buildSearchQuery(){let e=this,r=this.#e&&this.#e.allOr,n=r?"":"*:*",i=!0,s={escape:!0,lowercase:!0,wrap:!0},o="";this.#e.equal.tableId&&(o=this.#e.equal.tableId,delete this.#e.equal.tableId);let a=(p,E)=>on(E)?null:`${p}:${e.preprocess(E,s)}`,u=(p,E,g="AND")=>{if(on(E))return null;if(!Array.isArray(E))return`${p}:${E}`;let T=`${e.preprocess(E[0],{escape:!0})}`;for(let _=1;_<E.length;_++)T+=` ${g} ${e.preprocess(E[_],{escape:!0})}`;return`${p}:(${T})`},c=(p,E)=>on(E)?null:(E=e.preprocess(E,{escape:!0,lowercase:!0,type:"fuzzy"}),`${p}:/.*${E}.*/`),l=(p,E)=>{let g=r?"*:* AND ":"",T=r?"AND":void 0;return g+"NOT "+u(p,E,T)},d=(p,E)=>u(p,E,"OR"),f=(p,E)=>{if(on(E))return"*:*";if(!Array.isArray(E))if(typeof E=="string")E=E.split(",");else return"";let g=`${e.preprocess(E[0],s)}`;for(let T=1;T<E.length;T++)g+=` OR ${e.preprocess(E[T],s)}`;return`${p}:(${g})`};function m(p,E,g){let T="";for(let[_,A]of Object.entries(p)){_=Bs(_),_=e.preprocess(e.handleSpaces(_),{escape:!0});let w=E(_,A);if(w!=null){if(T.length>0||n.length>0){let y=g?.mode?g.mode:r?"OR":"AND";T+=` ${y} `}T+=w,(typeof A!="string"&&A!=null||typeof A=="string"&&A!==o&&A!=="")&&(i=!1)}}if(g?.returnBuilt)return T;n+=T}if(this.#e.string&&m(this.#e.string,(p,E)=>on(E)?null:(E=e.preprocess(E,{escape:!0,lowercase:!0,type:"string"}),`${p}:${E}*`)),this.#e.range&&m(this.#e.range,(p,E)=>{if(on(E)||E.low==null||E.low===""||E.high==null||E.high==="")return null;let g=e.preprocess(E.low,s),T=e.preprocess(E.high,s);return`${p}:[${g} TO ${T}]`}),this.#e.fuzzy&&m(this.#e.fuzzy,c),this.#e.equal&&m(this.#e.equal,a),this.#e.notEqual&&m(this.#e.notEqual,(p,E)=>on(E)?null:typeof E=="boolean"?`(*:* AND !${p}:${E})`:`!${p}:${e.preprocess(E,s)}`),this.#e.empty&&m(this.#e.empty,p=>(i=!1,`(*:* -${p}:["" TO *])`)),this.#e.notEmpty&&m(this.#e.notEmpty,p=>(i=!1,`${p}:["" TO *]`)),this.#e.oneOf&&m(this.#e.oneOf,f),this.#e.contains&&m(this.#e.contains,u),this.#e.notContains&&m(this.compressFilters(this.#e.notContains),l),this.#e.containsAny&&m(this.#e.containsAny,d),o&&(n=this.isMultiCondition()?`(${n})`:n,r=!1,m({tableId:o},a)),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,s=0;do{let o=Math.min(t.maxLimit,i);this.setLimit(o);let{bookmark:a,rows:u}=await this.#p();this.setBookmark(a),s=u.length,i-=u.length}while(i>0&&s>0);this.#t=r,this.#r=n}async#p(){let{url:e,cookie:r}=lt(),n=`${e}/${this.#l}/_design/database/_search/${this.#d}`,i=this.buildSearchBody();try{return await gT(n,i,r)}catch(s){if(s.status===404&&this.#a)return await this.#a(),await gT(n,i,r);throw s}}};async function gT(t,e,r){let n=await(0,yT.default)(t,{body:JSON.stringify(e),method:"POST",headers:{Authorization:r}});if(n.status===404)throw n;let i=await n.json(),s={rows:[],totalRows:0};return i.rows!=null&&i.rows.length>0&&(s.rows=i.rows.map(o=>o.doc)),i.bookmark&&(s.bookmark=i.bookmark),i.total_rows&&(s.totalRows=i.total_rows),s}async function TT(t,e,r,n){let i=n.bookmark,s=n.rows||[];if(n.limit&&s.length>=n.limit)return s;let o=Bt.maxLimit;n.limit&&s.length>n.limit-Bt.maxLimit&&(o=n.limit-s.length);let a=new Bt(t,e,r);a.setVersion(n.version).setBookmark(i).setLimit(o).setSort(n.sort).setSortOrder(n.sortOrder).setSortType(n.sortType),n.tableId&&a.setTable(n.tableId);let u=await a.run();if(!u.rows.length)return s;if(u.rows.length<Bt.maxLimit)return[...s,...u.rows];let c={...n,bookmark:u.bookmark,rows:[...s,...u.rows]};return await TT(t,e,r,c)}async function wC(t,e,r,n){let i=n.limit;(i==null||isNaN(i)||i<0)&&(i=50),i=Math.min(i,Bt.maxLimit);let s=new Bt(t,e,r);n.version&&s.setVersion(n.version),n.tableId&&s.setTable(n.tableId),n.sort&&s.setSort(n.sort).setSortOrder(n.sortOrder).setSortType(n.sortType),n.indexer&&s.setIndexBuilder(n.indexer),n.disableEscaping&&s.disableEscaping();let o=await s.setBookmark(n.bookmark).setLimit(i).run();s.setBookmark(o.bookmark).setLimit(1),n.tableId&&s.setTable(n.tableId);let a=await s.run();return{...o,hasNextPage:a.rows&&a.rows.length>0}}async function DC(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 TT(t,e,r,n)}}var yf={};P(yf,{createUserIndex:()=>RC});async function RC(){let t=Y(),e;try{e=await t.get("_design/database")}catch(n){n.status===404&&(e={_id:"_design/database"})}let r=function(n){if(n._id&&!n._id.startsWith("us_"))return;let i=["_id","_rev","password","account","license","budibaseAccess","accountPortalAccess","csrfToken"];function s(o,a){for(let u of Object.keys(o)){if(i.includes(u))continue;let c=a!=null?`${a}.${u}`:u;typeof o[u]=="string"?index(c,o[u].toLowerCase(),{facet:!0}):typeof o[u]!="object"?index(c,o[u],{facet:!0}):s(o[u],c)}}s(n)};e.indexes={user:{index:r.toString(),analyzer:{default:"keyword",name:"perfield"}}},await t.put(e)}function ST(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)}function bC(t){return ST(t,409)}var Ws={};P(Ws,{addTenantToUrl:()=>CC,getTenantDB:()=>Tf,getTenantIDFromCtx:()=>$s,isUserInAppTenant:()=>xC});function Tf(t){return Re(en(t))}function CC(t){let e=W();if(dr()){let r=t.indexOf("?")===-1?"?":"&";t+=`${r}tenantId=${e}`}return t}var xC=(t,e)=>{let r;return e?r=e.tenantId||oe:r=W(),(Yn(t)||oe)===r},vC=Object.values(Ai),$s=(t,e)=>{if(!dr())return oe;e.allowNoTenant===void 0&&(e.allowNoTenant=!1),e.includeStrategies||(e.includeStrategies=vC),e.excludeStrategies||(e.excludeStrategies=[]);let r=n=>{if(e.excludeStrategies?.includes(n))return!1;if(e.includeStrategies?.includes(n))return!0};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(jd()).host.split(":")[0]}catch(s){if(s.code!=="ERR_INVALID_URL")throw s}let i=t.host;if(n&&i.includes(n)){let s=i.substring(0,i.indexOf(`.${n}`));if(s)return s}}if(r("path")){let n=t.matched.find(o=>!!o.paramNames.find(a=>a.name==="tenantId")),i=t.originalUrl,s;if(i.includes("?")?s=i.split("?")[0]:s=i,n){let o=n.params(s,n.captures(s),{});if(o.tenantId)return o.tenantId}}e.allowNoTenant||t.throw(403,"Tenant id not set")};var Sf="app"+R,AT="/app/",PC="/builder",NC=`${PC}/workspace/`,UC="/api/public/v";async function LC(t){let r=`/${t.path.split("/")[2].toLowerCase()}`,n=W();!h.isDev()&&h.MULTI_TENANCY&&(n=$s(t,{includeStrategies:["subdomain"]}));let s=(await be(n,()=>ks({dev:!1}))).filter(o=>o.url&&o.url.toLowerCase()===r)[0];return s&&s.appId?s.appId:void 0}function kC(t){return t.path.startsWith(`/${Sf}`)?!0:t.path.startsWith(AT)}function MC(t){return t.path.startsWith(NC)}function FC(t){return _T(t.path)}function _T(t){return new RegExp(/^\/app\/app_\w+\/preview$/).test(t)}function BC(t){return t.path.startsWith(UC)}async function $C(t){let e;function r(a){return!a||!a.startsWith(Sf)?e:(e&&e!==a&&t.throw("App id conflict",403),e??a)}let n=t.request.headers["x-budibase-app-id"]||[];typeof n=="string"&&(n=[n]);for(let a of n)e=r(a);t.request.body&&t.request.body.appId&&(e=r(t.request.body.appId));let i=WC(t.path);i&&(e=r(i)),t.query?.appId&&(e=r(t.query?.appId));let s=_T(t.path);return t.path.startsWith(AT)&&!s&&(e=r(await LC(t))),e}function WC(t){if(t)return t.split("?")[0].split("/").find(e=>e.startsWith(Sf))}function nu(t){if(t)try{return ru.default.verify(t,h.JWT_SECRET)}catch(e){if(h.JWT_SECRET_FALLBACK)return ru.default.verify(t,h.JWT_SECRET_FALLBACK);throw e}}function Vs(t){return h.INTERNAL_API_KEY&&h.INTERNAL_API_KEY===t?!0:!!(h.INTERNAL_API_KEY_FALLBACK&&h.INTERNAL_API_KEY_FALLBACK===t)}function $t(t,e){let r=t.cookies.get(e);if(r)return nu(r)}function IT(t,e,r="builder",n={sign:!0}){e&&n&&n.sign&&(e=ru.default.sign(e,h.JWT_SECRET));let i={expires:La,path:"/",httpOnly:!1,overwrite:!0};h.COOKIE_DOMAIN&&(i.domain=h.COOKIE_DOMAIN),t.cookies.set(r,e,i)}function hr(t,e){IT(t,null,e)}function VC(t){return t.headers["x-budibase-type"]==="client"}function Af(t){return new Promise(e=>setTimeout(e,t))}function _f(t){return!!Om[t]}function GC(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}function qC(t){return!!t.match(/^.+:\/\/.+$/)}function If(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,}))$/)}var Of=(s=>(s.MILLISECONDS="milliseconds",s.SECONDS="seconds",s.MINUTES="minutes",s.HOURS="hours",s.DAYS="days",s))(Of||{}),iu={milliseconds:1,seconds:1e3,minutes:6e4,hours:36e5,days:864e5},me=class t{constructor(e){this.ms=e}to(e){return this.ms/iu[e]}toMs(){return this.ms}toSeconds(){return this.to("seconds")}static convert(e,r,n){return n*iu[e]/iu[r]}static from(e,r){return new t(r*iu[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 QC(t){let e=performance.now();return[await t(),me.fromMilliseconds(performance.now()-e)]}function KC(t){let e="",r=-1,n,i,s=t.opts?.repeat;return s&&(i=s.endDate?new Date(s.endDate).getTime():Date.now(),n=s.tz,"cron"in s?e=s.cron:r=s.every),{id:t.id.toString(),name:"",key:t.id.toString(),tz:n,endDate:i,cron:e,every:r,next:0}}var su=class{constructor(e,r){this._name=e,this._opts=r,this._messages=[],this._emitter=new OT.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((u,c)=>{r(n,(d,f)=>{d?c(d):u(f)})})}let s=this._attempts;async function o(u,c=0){try{return await u}catch(l){if(c++,c<s&&!n._isDiscarded)return await Pe.wait(100*c),await o(i(),c);throw l}}try{let u=await o(i());this._emitter.emit("completed",n,u);let c=this._messages.indexOf(n);if(c===-1)throw"Failed deleting a processed message";this._messages.splice(c,1)}catch(u){console.error(u),this._emitter.emit("error",n,u)}this._runCount++;let a=n.opts?.jobId?.toString();a&&n.opts?.removeOnComplete&&this._queuedJobIds.delete(a)})}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 s=re(),o=()=>{let u={id:s,timestamp:Date.now(),queue:this,data:e,opts:n,discard:async()=>{u._isDiscarded=!0}};this._messages.push(u),this._messages.length>1e3&&this._messages.shift(),this._addCount++,this._emitter.emit("message",u)},a=n?.delay;return a?setTimeout(o,a):o(),{id:i,finished:()=>new Promise((u,c)=>{let l=(f,m)=>{f.id===s&&(this._emitter.off("error",l),this._emitter.off("completed",d),c(m))},d=(f,m)=>{f.id===s&&(this._emitter.off("error",l),this._emitter.off("completed",d),u(m))};this._emitter.on("error",l),this._emitter.on("completed",d)})}}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=>KC(e))}async whenCurrentJobsFinished(){do await Af(50);while(this.hasRunningJobs())}hasRunningJobs(){return this._addCount>this._runCount}},wT=su;var Rf=M(require("bull"));var Xn=(a=>(a.AUTOMATION="automationQueue",a.APP_BACKUP="appBackupQueue",a.AUDIT_LOG="auditLogQueue",a.SYSTEM_EVENT_QUEUE="systemEventQueue",a.APP_MIGRATION="appMigration",a.DOC_WRITETHROUGH_QUEUE="docWritethroughQueue",a.DEV_REVERT_PROCESSOR="devRevertProcessorQueue",a))(Xn||{});function DT(t,e,r){HC(t,e),r&&jC(t,r)}function jC(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 s of i)s.id===n&&await t.removeRepeatableByKey(s.key);console.log(`jobId=${n} disabled`)}})}function Xe(t,e,r={},n={}){let i=`[BULL] ${t}=${e}`,s=r.error,o={_logKey:"bull",eventType:t,event:e,job:r.job,jobId:r.jobId||r.job?.id,...n},a;return r.job?.data?.automation&&(a={_logKey:"automation",trigger:r.job?r.job.data.automation.definition.trigger.event:void 0}),[i,s,o,a]}var YC={automationQueue:"automation-event",appBackupQueue:"app-backup-event",auditLogQueue:"audit-log-event",systemEventQueue:"system-event",appMigration:"app-migration",docWritethroughQueue:"doc-writethrough",devRevertProcessorQueue:"dev-revert-event"};function HC(t,e){let r=YC[e];function n(i,s){let o=i.data.event?.appId;if(o)return Yd(o,s);s()}t.on("stalled",async i=>{await n(i,()=>{console.error(...Xe(r,"stalled",{job:i}))})}).on("error",i=>{console.error(...Xe(r,"error",{error:i}))}),process.env.NODE_DEBUG?.includes("bull")&&t.on("waiting",i=>{console.info(...Xe(r,"waiting",{jobId:i}))}).on("active",async i=>{await n(i,()=>{console.info(...Xe(r,"active",{job:i}))})}).on("progress",async(i,s)=>{await n(i,()=>{console.info(...Xe(r,"progress",{job:i},{progress:s}))})}).on("completed",async(i,s)=>{await n(i,()=>{console.info(...Xe(r,"completed",{job:i},{result:s}))})}).on("failed",async(i,s)=>{await n(i,()=>{console.error(...Xe(r,"failed",{job:i,error:s}))})}).on("paused",()=>{console.info(...Xe(r,"paused"))}).on("resumed",()=>{console.info(...Xe(r,"resumed"))}).on("cleaned",(i,s)=>{console.info(...Xe(r,"cleaned",{},{length:i.length,type:s}))}).on("drained",()=>{console.info(...Xe(r,"drained"))}).on("removed",i=>{console.info(...Xe(r,"removed",{job:i}))})}var ou={};P(ou,{cleanup:()=>zC,clear:()=>Df,set:()=>wf});var Gs=[];function wf(t,e){let r=setInterval(t,e);return Gs.push(r),r}function Df(t){let e=Gs.indexOf(t);e!==-1&&Gs.splice(e,1),clearInterval(t)}function zC(){for(let t of Gs)clearInterval(t);Gs=[]}var Wt=M(require("dd-trace")),qs=M(require("object-sizeof")),JC=me.fromMinutes(5).toMs(),ZC=me.fromSeconds(30).toMs(),bf=me.fromSeconds(60).toMs(),Qs=[],au;async function RT(){for(let t of Qs)await t.clean(bf,"completed"),await t.clean(bf,"failed")}async function XC(t,e,r){let n=performance.now();try{let i=await e();return Wt.default.dogstatsd.increment(`${t}.success`,1,r),i}catch(i){throw Wt.default.dogstatsd.increment(`${t}.error`,1,r),i}finally{let i=performance.now()-n;Wt.default.dogstatsd.distribution(`${t}.duration.ms`,i,r),Wt.default.dogstatsd.increment(t,1,r)}}function bT(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}}function ex(t){return{"job.id":t.id,"job.attemptsMade":t.attemptsMade,"job.timestamp":t.timestamp,"job.data.sizeBytes":(0,qs.default)(t.data),...bT(t.opts||{})}}var mt=class{constructor(e,r={}){this.opts=r,this.jobQueue=e,this.queue=this.initQueue()}get name(){return this.queue.name}initQueue(){let r={redis:Zr(),settings:{maxStalledCount:this.opts.maxStalledCount?this.opts.maxStalledCount:0,lockDuration:JC,lockRenewTime:ZC}};this.opts.jobOptions&&(r.defaultJobOptions=this.opts.jobOptions);let n;return h.isTest()?process.env.BULL_TEST_REDIS_PORT&&!isNaN(+process.env.BULL_TEST_REDIS_PORT)?n=new Rf.default(this.jobQueue,{...r,redis:{host:"localhost",port:+process.env.BULL_TEST_REDIS_PORT}}):n=new wT(this.jobQueue,r):n=new Rf.default(this.jobQueue,r),DT(n,this.jobQueue,this.opts.removeStalledCb),Qs.push(n),!au&&!h.isTest()&&(au=wf(RT,bf),RT().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=async(o,a)=>{await Wt.default.trace("queue.process",async u=>{if(o.data._parentSpanContext){let c=o.data._parentSpanContext,l={traceId:c.traceId,spanId:c.spanId,toTraceId:()=>c.traceId,toSpanId:()=>c.spanId,toTraceparent:()=>""};u.addLink(l)}u.addTags({"queue.name":this.jobQueue,...ex(o)}),this.opts.jobTags&&u.addTags(this.opts.jobTags(o.data)),Wt.default.dogstatsd.distribution("queue.process.sizeBytes",(0,qs.default)(o.data),this.metricTags()),await this.withMetrics("queue.process",()=>a?n(o,a):n(o))})},s;return n.length===1?s=o=>i(o):s=i,r?this.queue.process(r,s):this.queue.process(s)}async add(e,r){return await Wt.default.trace("queue.add",async n=>(n.addTags({"queue.name":this.jobQueue,"job.data.sizeBytes":(0,qs.default)(e),...bT(r||{})}),this.opts.jobTags&&n.addTags(this.opts.jobTags(e)),e._parentSpanContext={traceId:n.context().toTraceId(),spanId:n.context().toSpanId()},Wt.default.dogstatsd.distribution("queue.add.sizeBytes",(0,qs.default)(e),this.metricTags()),await this.withMetrics("queue.add",()=>this.queue.add(e,r))))}withMetrics(e,r){return XC(e,r,this.metricTags())}metricTags(){return{queueName:this.jobQueue}}close(e){return this.queue.close(e)}whenCurrentJobsFinished(){return this.queue.whenCurrentJobsFinished()}};async function tx(){au&&Df(au),console.log("Waiting for current queue jobs to finish...");for(let t of Qs)await t.whenCurrentJobsFinished();console.log("Closing queue Redis connections...");for(let t of Qs)await t.close();Qs=[],console.log("Queues shutdown")}var Zs={};P(Zs,{correlation:()=>Ks,logAlert:()=>un,logAlertWithInfo:()=>Nx,logWarn:()=>ri,logger:()=>hu,system:()=>Gf});var Ks={};P(Ks,{getId:()=>Cf,setHeader:()=>rx});var CT=require("correlation-id"),rx=t=>{let e=CT.getId();e&&(t["x-budibase-correlation-id"]=e)};function Cf(){return CT.getId()}var mu=M(require("pino")),rS=M(require("pino-pretty")),qf=M(require("dd-trace")),nS=require("dd-trace/ext");var Gf={};P(Gf,{getLogReadStream:()=>Rx,getSingleFileMaxSizeInfo:()=>tS,localFileDestination:()=>Vf});var Js=M(require("fs")),Wf=M(require("path")),JT=M(require("rotating-file-stream"));var $f={};P($f,{ObjectStore:()=>ht,ObjectStoreBuckets:()=>ix,SIGNED_FILE_PREFIX:()=>kf,bucketTTLConfig:()=>uu,budibaseTempDir:()=>an,clientLibraryCDNUrl:()=>Sx,clientLibraryPath:()=>VT,clientLibraryUrl:()=>Ax,createBucketIfNotExists:()=>zs,deleteFile:()=>px,deleteFiles:()=>mx,deleteFolder:()=>BT,downloadTarball:()=>Ex,downloadTarballDirect:()=>hx,enrichPWAImages:()=>_x,enrichPluginURLs:()=>Ox,extractBucketAndPath:()=>xf,getAppFileUrl:()=>GT,getGlobalFileS3Key:()=>qT,getGlobalFileUrl:()=>Ix,getObjectMetadata:()=>gx,getPluginIconKey:()=>jT,getPluginJSKey:()=>KT,getPluginS3Dir:()=>HT,getPresignedUrl:()=>Tr,getReadStream:()=>cu,listAllObjects:()=>FT,processAutomationAttachment:()=>ox,processObjectStoreAttachment:()=>UT,retrieve:()=>MT,retrieveDirectory:()=>fx,retrieveToTmp:()=>dx,sanitizeBucket:()=>Ne,sanitizeKey:()=>_e,streamUpload:()=>kT,upload:()=>lx,uploadDirectory:()=>Mf});var du=require("@aws-sdk/client-s3"),vf=require("@aws-sdk/lib-storage"),LT=require("@aws-sdk/s3-request-presigner");var yr=M(require("dd-trace")),ei=M(require("fs")),Ys=M(require("fs/promises")),Pf=M(require("node-fetch")),gr=require("path"),fu=M(require("stream")),Hs=require("stream/promises"),Nf=M(require("tar-fs")),Uf=require("uuid"),Lf=M(require("zlib"));var js=M(require("path")),xT=require("os"),vT=M(require("fs"));var PT=M(require("stream")),ix={BACKUPS:h.BACKUPS_BUCKET_NAME,APPS:h.APPS_BUCKET_NAME,TEMPLATES:h.TEMPLATES_BUCKET_NAME,GLOBAL:h.GLOBAL_BUCKET_NAME,PLUGINS:h.PLUGIN_BUCKET_NAME,TEMP:h.TEMP_BUCKET_NAME},NT=(0,js.join)((0,xT.tmpdir)(),".budibase");try{vT.default.mkdirSync(NT)}catch(t){if(t.code!=="EEXIST")throw t}function an(){return NT}var uu=(t,e)=>{let n={Rules:[{ID:`${t}-ExpireAfter${e}days`,Prefix:"",Status:"Enabled",Expiration:{Days:e}}]};return{Bucket:t,LifecycleConfiguration:n}};async function sx(t){let e=await fetch(t.url);if(!e.ok||!e.body)throw new Error(`Unexpected response ${e.statusText}`);let r=js.default.basename(new URL(t.url).pathname);if(!e.body)throw new Error("No response received for attachment");return{filename:t.filename||r,content:PT.default.Readable.fromWeb(e.body)}}async function UT(t){let e=xf(t.url);if(e===null)throw new Error("Invalid signed URL");let{bucket:r,path:n}=e,i=await cu(r,n),s=js.default.basename(n);return{bucket:r,path:n,filename:t.filename||s,content:i}}async function ox(t){return t.url?.startsWith("http://")||t.url?.startsWith("https://")?await sx(t):await UT(t)}var ax=require("sanitize-s3-objectkey"),ux={bucketCreationPromises:{}},kf="/files/signed",Er={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"},cx=[Er.html,Er.css,Er.js,Er.json];function _e(t){return ax(Ne(t)).replace(/\\/g,"/")}function Ne(t){return t.replace(new RegExp(Je,"g"),ze)}function ht(t={presigning:!1}){let e={forcePathStyle:!0,credentials:{accessKeyId:h.MINIO_ACCESS_KEY,secretAccessKey:h.MINIO_SECRET_KEY},region:h.AWS_REGION};return!h.MINIO_ENABLED&&h.AWS_SESSION_TOKEN&&(e.credentials={accessKeyId:h.MINIO_ACCESS_KEY,secretAccessKey:h.MINIO_SECRET_KEY,sessionToken:h.AWS_SESSION_TOKEN}),h.MINIO_URL&&(t.presigning&&h.MINIO_ENABLED?e.endpoint="http://minio-service":e.endpoint=h.MINIO_URL),new du.S3(e)}async function zs(t,e){e=Ne(e);try{return await t.headBucket({Bucket:e}),{created:!1,exists:!0}}catch(r){let n=r.statusCode||r.$response?.statusCode,i=ux.bucketCreationPromises,s=n===404,o=n===403;if(i[e])return await i[e],{created:!1,exists:!0};if(s||o){if(s)return i[e]=t.createBucket({Bucket:e}).catch(a=>{if(a.Code!=="BucketAlreadyOwnedByYou")throw a}),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.")}}async function lx({bucket:t,filename:e,path:r,type:n,metadata:i,body:s,ttl:o}){let a=e.split(".").pop(),u=r?(await Ys.default.open(r)).createReadStream():s,c=ht(),l=await zs(c,t);if(o&&l.created){let E=uu(t,o);await c.putBucketLifecycleConfiguration(E)}let d=n,f=d||(a?Er[a.toLowerCase()]:Er.txt),m={Bucket:Ne(t),Key:_e(e),Body:u,ContentType:f};if(i&&typeof i=="object"){for(let E of Object.keys(i))(!i[E]||typeof i[E]!="string")&&delete i[E];m.Metadata=i}return new vf.Upload({client:c,params:m}).done()}async function kT({bucket:t,stream:e,filename:r,type:n,extra:i,ttl:s}){return await yr.default.trace("streamUpload",async o=>{if(o.addTags({bucketName:t,filename:r,type:n,ttl:s}),!e)throw new Error("Stream to upload is invalid/undefined");let a=r.split(".").pop(),u=ht(),c=await zs(u,t);if(o.addTags({bucketCreated:c.created,bucketExists:c.exists,extension:a}),s&&c.created){let T=uu(t,s);await u.putBucketLifecycleConfiguration(T)}r?.endsWith(".js")?i={...i,ContentType:"application/javascript"}:r?.endsWith(".svg")&&(i={...i,ContentType:"image"});let l=n;l||(l=a?Er[a.toLowerCase()]:Er.txt),o.addTags({contentType:l});let d=Ne(t),f=_e(r),m={Bucket:d,Key:f,Body:e,ContentType:l,...i},E=await new vf.Upload({client:u,params:m}).done(),g=await u.headObject({Bucket:d,Key:f});return o.addTags({contentLength:g.ContentLength}),{...E,ContentLength:g.ContentLength}})}async function MT(t,e){return await yr.default.trace("retrieve",async r=>{r.addTags({bucketName:t,filepath:e});let n=ht(),i={Bucket:Ne(t),Key:_e(e)},s=await n.getObject(i);if(!s.Body)throw new Error("Unable to retrieve object");if(r.addTags({contentLength:s.ContentLength,contentType:s.ContentType}),cx.includes(s.ContentType))return r.addTags({string:!0}),s.Body.transformToString();{r.addTags({string:!1});let o=s.Body.transformToWebStream();return fu.default.Readable.fromWeb(o)}})}async function*FT(t,e){let r=ht(),n=(o={})=>r.listObjectsV2({...o,Bucket:Ne(t),Prefix:_e(e)}),i=!1,s;do{let o={};s&&(o.ContinuationToken=s);let a=await n(o);if(a.Contents)for(let u of a.Contents)yield u;i=!!a.IsTruncated,s=a.NextContinuationToken}while(i&&s)}async function Tr(t,e,r=3600){let n=ht({presigning:!0}),i={Bucket:Ne(t),Key:_e(e)},s=await(0,LT.getSignedUrl)(n,new du.GetObjectCommand(i),{expiresIn:r});if(h.MINIO_ENABLED){let o=new URL(s),a=o.pathname,u=o.search;return`${kf}${a}${u}`}else return s}async function dx(t,e){return await yr.default.trace("retrieveToTmp",async r=>{r.addTags({bucketName:t,filepath:e}),t=Ne(t),e=_e(e);let n=await MT(t,e),i=(0,gr.join)(an(),(0,Uf.v4)());return r.addTags({outputPath:i}),n instanceof fu.default.Readable?(r.addTags({stream:!0}),await(0,Hs.pipeline)(n,ei.default.createWriteStream(i))):(r.addTags({stream:!1}),ei.default.writeFileSync(i,n)),i})}async function fx(t,e){return await yr.default.trace("retrieveDirectory",async r=>{r.addTags({bucketName:t,path:e});let n=(0,gr.join)(an(),(0,Uf.v4)());await Ys.default.mkdir(n,{recursive:!0});let i=0;return await Xt.parallelForeach(FT(t,e),async s=>{i++,await yr.default.trace("retrieveDirectory.object",async o=>{let a=s.Key;o.addTags({filename:a});let u=await cu(t,a),c=a.split("/"),l=c.slice(0,c.length-1),d=(0,gr.join)(n,...l);c.length>1&&!ei.default.existsSync(d)&&await Ys.default.mkdir(d,{recursive:!0}),await(0,Hs.pipeline)(u,ei.default.createWriteStream((0,gr.join)(n,...c),{mode:420}))})},5),r.addTags({numObjects:i}),n})}async function px(t,e){let r=ht();await zs(r,t);let n={Bucket:t,Key:_e(e)};return r.deleteObject(n)}async function mx(t,e){let r=ht();await zs(r,t);let n={Bucket:t,Delete:{Objects:e.map(i=>({Key:_e(i)}))}};return r.deleteObjects(n)}async function BT(t,e){t=Ne(t),e=_e(e);let r=ht(),n={Bucket:t,Prefix:e},i=await r.listObjects(n);if(i.Contents?.length===0)return;let s={Bucket:t,Delete:{Objects:[]}};if(i.Contents?.forEach(o=>{s.Delete.Objects.push({Key:o.Key})}),s.Delete.Objects.length&&(await r.deleteObjects(s)).Deleted?.length===1e3)return BT(t,e)}async function Mf(t,e,r){return await yr.default.trace("uploadDirectory",async n=>{n.addTags({bucketName:t,localPath:e,bucketPath:r}),t=Ne(t);let i=await Ys.default.readdir(e,{withFileTypes:!0});n.addTags({numFiles:i.length});for(let s of i){let o=_e((0,gr.join)(r,s.name)),a=(0,gr.join)(e,s.name);s.isDirectory()?await Mf(t,a,o):await kT({bucket:t,filename:o,stream:ei.default.createReadStream(a)})}return i})}async function hx(t,e,r={}){e=_e(e);let n=await(0,Pf.default)(t,{headers:r});if(!n.ok)throw new Error(`unexpected response ${n.statusText}`);await(0,Hs.pipeline)(n.body,Lf.default.createUnzip(),Nf.default.extract(e))}async function Ex(t,e,r){e=Ne(e),r=_e(r);let n=await(0,Pf.default)(t);if(!n.ok)throw new Error(`unexpected response ${n.statusText}`);let i=(0,gr.join)(an(),r);return await(0,Hs.pipeline)(n.body,Lf.default.createUnzip(),Nf.default.extract(i)),!h.isTest()&&h.SELF_HOSTED&&await Mf(e,i,r),i}async function cu(t,e){return await yr.default.trace("getReadStream",async r=>{t=Ne(t),e=_e(e),r.addTags({bucketName:t,path:e});let n=ht(),i={Bucket:t,Key:e},s=await n.getObject(i);if(!s.Body||!(s.Body instanceof fu.default.Readable))throw new Error("Unable to retrieve stream - invalid response");return r.addTags({contentLength:s.ContentLength,contentType:s.ContentType}),s.Body})}async function gx(t,e){t=Ne(t),e=_e(e);let r=ht(),n={Bucket:t,Key:e};try{return await r.headObject(n)}catch{throw new Error("Unable to retrieve metadata from object")}}function xf(t){let e=t.split("?")[0],r=new RegExp(`^${kf}/(?<bucket>[^/]+)/(?<path>.+)$`),n=e.match(r);if(n&&n.groups){let{bucket:i,path:s}=n.groups;return{bucket:i,path:s}}return null}var $T=M(require("aws-cloudfront-sign")),pu;function yx(){if(!h.CLOUDFRONT_PRIVATE_KEY_64)throw new Error("CLOUDFRONT_PRIVATE_KEY_64 is not set");return pu||(pu=Buffer.from(h.CLOUDFRONT_PRIVATE_KEY_64,"base64").toString("utf-8"),pu)}var Tx=()=>({keypairId:h.CLOUDFRONT_PUBLIC_KEY_ID,privateKeyString:yx(),expireTime:new Date().getTime()+1e3*60*60*24}),ti=t=>{let e=Ff(t);return $T.getSignedUrl(e,Tx())},Ff=t=>{let e="/";return t.startsWith("/")&&(e=""),`${h.CLOUDFRONT_CDN}${e}${t}`};var WT=M(require("querystring"));function VT(t){return`${_e(t)}/budibase-client.js`}async function Sx(t,e){let r=VT(t);return h.CLOUDFRONT_CDN?(e&&(r+=`?v=${e}`),Ff(r)):await Tr(h.APPS_BUCKET_NAME,r)}function Ax(t,e){let r,n;try{r=W()}finally{n={appId:t,version:e}}return r&&r!==oe&&(n.tenantId=r),`/api/assets/client?${WT.default.encode(n)}`}async function GT(t){return h.CLOUDFRONT_CDN?ti(t):await Tr(h.APPS_BUCKET_NAME,t)}async function _x(t){if(t.length===0)return[];try{return await Promise.all(t.map(async e=>({...e,src:await GT(e.src),type:e.type||"image/png"})))}catch(e){return console.error("Error enriching PWA images:",e),t}}var Ix=async(t,e,r)=>{let n=qT(t,e);return h.CLOUDFRONT_CDN?(r&&(n=`${n}?etag=${r}`),ti(n)):await Tr(h.GLOBAL_BUCKET_NAME,n)},qT=(t,e)=>{let r=`${t}/${e}`;return h.MULTI_TENANCY&&(r=`${W()}/${r}`),r};async function Ox(t){return!t||!t.length?[]:await Promise.all(t.map(async e=>{let r=await wx(e),n=await Dx(e);return{...e,jsUrl:r,iconUrl:n}}))}async function wx(t){let e=KT(t);return QT(e)}async function Dx(t){let e=jT(t);if(e)return QT(e)}async function QT(t){return h.CLOUDFRONT_CDN?ti(t):await Tr(h.PLUGIN_BUCKET_NAME,t)}function KT(t){return YT(t,"plugin.min.js")}function jT(t){let e=t.iconUrl?"icon.svg":t.iconFileName;if(e)return YT(t,e)}function YT(t,e){return`${HT(t.name)}/${e}`}function HT(t){let e=`${t}`;return h.MULTI_TENANCY&&(e=`${W()}/${e}`),h.CLOUDFRONT_CDN&&(e=`plugins/${e}`),e}var ZT="budibase.log",XT="budibase-logs-history.txt",eS=Wf.default.join(an(),"systemlogs");function zT(t){return Wf.default.join(eS,t)}function tS(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}}function Vf(){let t=tS(h.ROLLING_LOG_MAX_SIZE);return JT.createStream(ZT,{size:t?.size,path:eS,maxFiles:t?.totalHistoryFiles||1,immutable:!0,history:XT,initialRotation:!1})}function Rx(){let t=[],e=zT(XT);if(Js.default.existsSync(e)){let i=Js.default.readFileSync(e,"utf-8").split(`
|
|
37
|
+
`);for(let s of i.filter(o=>o))t.push(Js.default.readFileSync(s))}return t.push(Js.default.readFileSync(zT(ZT))),Buffer.concat(t.map(n=>new Uint8Array(n)))}function bx(t){return typeof t=="object"&&t!==null&&!(t instanceof Error)}function Cx(t){return t instanceof Error}function xx(t){return typeof t=="string"}var Sr;if(!h.DISABLE_PINO_LOGGER){let t=h.LOG_LEVEL,e={level:t,formatters:{level:u=>({level:u.toUpperCase()}),bindings:()=>h.SELF_HOSTED?{service:h.SERVICE_NAME}:{}},timestamp:()=>`,"timestamp":"${new Date(Date.now()).toISOString()}"`},r=[];r.push(h.isDev()?{stream:(0,rS.default)({singleLine:!0}),level:t}:{stream:process.stdout,level:t}),h.SELF_HOSTED&&r.push({stream:Vf(),level:t}),Sr=r.length?(0,mu.default)(e,mu.default.multistream(r)):(0,mu.default)(e);let n=u=>{let c,l=[],d="";u.forEach(g=>{xx(g)&&(d=`${d} ${g}`.trimStart()),bx(g)&&l.push(g),Cx(g)&&(c=g)});let f=a(),m={};m={tenantId:i(),appId:s(),automationId:o(),identityId:f?._id,identityType:f?.type,correlationId:Cf()};let p=qf.default.scope().active();p&&qf.default.inject(p.context(),nS.formats.LOG,m);let E={err:c,pid:process.pid,...m};if(l.length){let g={},T=0;for(let _=0;_<l.length;_++){let A=l[_],w=A._logKey;w?(delete A._logKey,E[w]=A):(g[T]=A,T++)}Object.keys(g).length&&(E.data=g)}return[E,d]};console.log=(...u)=>{let[c,l]=n(u);Sr?.info(c,l)},console.info=(...u)=>{let[c,l]=n(u);Sr?.info(c,l)},console.warn=(...u)=>{let[c,l]=n(u);Sr?.warn(c,l)},console.error=(...u)=>{let[c,l]=n(u);Sr?.error(c,l)},console.trace=(...u)=>{let[c,l]=n(u);c.err||(c.err=new Error),Sr?.trace(c,l)},console.debug=(...u)=>{let[c,l]=n(u);Sr?.debug(c,l)};let i=()=>{let u;try{u=W()}catch{}return u},s=()=>{let u;try{u=Ae()}catch{}return u},o=()=>{let u;try{u=Hd()}catch{}return u},a=()=>{let u;try{u=Lt()}catch{}return u}}var hu=Sr;var vx=["AccountError"];function Px(t){return t&&t.suppressAlert}function un(t,e){e&&vx.includes(e.name)&&Px(e)||console.error(`bb-alert: ${t}`,e)}function Nx(t,e,r,n){t=`${t} - db: ${e} - doc: ${r} - error: `,un(t,n)}function ri(t,e){console.warn(`bb-warn: ${t}`,e)}var Eu=class extends Error{constructor(e){super(e),this.name="PermanentError"}},Qf=class{constructor(e,r={}){let{maxAttempts:n=3,removeOnFail:i=!0,removeOnComplete:s=!0,maxStalledCount:o=3}=r;this.waitForCompletionMs=r.waitForCompletionMs||1e4,this._queue=new mt(e,{maxStalledCount:o,jobOptions:{attempts:n,removeOnFail:i,removeOnComplete:s}}),this._queue.process(async(a,u)=>{try{let c=await this.processFn(a.data);u?.(null,c)}catch(c){c instanceof Eu&&await a.discard(),un(`Failed to process job in ${this._queue.name}`,c),u?.(c)}})}async close(e){await this._queue.close(e)}async execute(e){try{let r=await this._queue.add(e);return{success:!0,result:await Pe.withTimeout(this.waitForCompletionMs,()=>r.finished())}}catch(r){if(r.errno!=="ETIME")throw r;return{success:!1,reason:"timeout"}}}};var Ux=100,gu,Xs=class t{static get queue(){return t._queue||(t._queue=new mt("docWritethroughQueue",{jobOptions:{attempts:Ux}})),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=Re(e),s;try{s=await i.get(r)}catch{s={_id:r}}s={...s,...n},await i.put(s)}},jf=class{constructor(e,r){this.db=e,this._docId=r}get docId(){return this._docId}async patch(e){await Xs.queue.add({dbName:this.db.name,docId:this.docId,data:e})}};function iS(){return gu=new Xs().init(),gu}function Lx(){return gu||iS()}var to={};P(to,{CacheKey:()=>Ee,TTL:()=>dn,bustCache:()=>ni,destroy:()=>eo,get:()=>fn,keys:()=>yu,store:()=>Vt,withCache:()=>Ar,withCacheWithDynamicTTL:()=>sS});function Ot(t){let e=W();return`${t}:${e}`}var cn=class{constructor(e=void 0){this.client=e}async getClient(){return this.client?this.client:await sf()}async keys(e){return(await this.getClient()).keys(e)}async exists(e,r={useTenancy:!0}){return e=r.useTenancy?Ot(e):e,(await this.getClient()).exists(e)}async scan(e,r={useTenancy:!0}){return e=r.useTenancy?Ot(e):e,(await this.getClient()).scan(e)}async get(e,r={useTenancy:!0}){return e=r.useTenancy?Ot(e):e,(await this.getClient()).get(e)}async bulkGet(e,r={useTenancy:!0}){return e=r.useTenancy?e.map(i=>Ot(i)):e,(await this.getClient()).bulkGet(e)}async store(e,r,n=null,i={useTenancy:!0}){e=i.useTenancy?Ot(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((s,[o,a])=>(s[Ot(o)]=a,s),{})),await(await this.getClient()).bulkStore(e,r)}async delete(e,r={useTenancy:!0}){return e=r.useTenancy?Ot(e):e,(await this.getClient()).delete(e)}async bulkDelete(e,r={useTenancy:!0}){return e=r.useTenancy?e.map(i=>Ot(i)):e,(await this.getClient()).bulkDelete(e)}async withCache(e,r=null,n,i={useTenancy:!0}){let s=await this.get(e,i);if(s)return s;try{let o=await n();return await this.store(e,o,r,i),o}catch(o){throw console.error("Error fetching before cache - ",o),o}}async withCacheWithDynamicTTL(e,r,n={useTenancy:!0}){let i=await this.get(e,n);if(i)return i;try{let s=await r(),{value:o,ttl:a}=s;return await this.store(e,o,a,{useTenancy:n.useTenancy}),o}catch(s){throw console.error("Error fetching before cache - ",s),s}}async bustCache(e){let r=await this.getClient();try{await r.delete(Ot(e))}catch(n){throw console.error("Error busting cache - ",n),n}}async deleteIfValue(e,r,n={useTenancy:!0}){e=n.useTenancy?Ot(e):e,await(await this.getClient()).deleteIfValue(e,r)}};var ln=new cn,Ee={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}`},dn=(n=>(n[n.ONE_MINUTE=600]="ONE_MINUTE",n[n.ONE_HOUR=3600]="ONE_HOUR",n[n.ONE_DAY=86400]="ONE_DAY",n))(dn||{}),yu=(...t)=>ln.keys(...t),fn=(...t)=>ln.get(...t),Vt=(...t)=>ln.store(...t),eo=(...t)=>ln.delete(...t),Ar=(...t)=>ln.withCache(...t),sS=(...t)=>ln.withCacheWithDynamicTTL(...t),ni=(...t)=>ln.bustCache(...t);var zf={};P(zf,{createCode:()=>Mx,deleteCode:()=>Bx,getCode:()=>Fx,getExistingInvites:()=>Hf,getInviteCodes:()=>aS,updateCode:()=>kx});var oS=me.fromDays(7).toSeconds();async function kx(t,e){await(await nn()).store(t,e,oS)}async function Mx(t,e){let r=re();return await(await nn()).store(r,{email:t,info:e},oS),r}async function Fx(t){let r=await(await nn()).get(t);if(!r)throw"Invitation is not valid or has expired, please request a new one.";return r}async function Bx(t){await(await nn()).delete(t)}async function aS(){let r=(await(await nn()).scan()).map(i=>({...i.value,code:i.key}));if(!h.MULTI_TENANCY)return r;let n=W();return r.filter(i=>n===i.info.tenantId)}async function Hf(t){return(await aS()).filter(e=>t.includes(e.email))}var Jf={};P(Jf,{createCode:()=>Wx,getCode:()=>Vx,invalidateCode:()=>Gx});var $x=me.fromHours(1).toSeconds();async function Wx(t,e){let r=re();return await(await Ns()).store(r,{userId:t,info:e},$x),r}async function Vx(t){let r=await(await Ns()).get(t);if(!r)throw new Error("Provided information is not valid, cannot reset password - please try again.");return r}async function Gx(t){await(await Ns()).delete(t)}var Dr={};P(Dr,{getUser:()=>Ao,getUsers:()=>yU,invalidateUser:()=>_o});var ro={};P(ro,{getPlatformDB:()=>_r,users:()=>Et});var Et={};P(Et,{addSsoUser:()=>cS,addUser:()=>Hx,getUserDoc:()=>uS,lookupTenantId:()=>qx,removeUser:()=>zx,updateUserDoc:()=>Qx});function _r(){return Re(de.PLATFORM_INFO.name)}async function qx(t){return h.MULTI_TENANCY?(await uS(t)).tenantId:oe}async function uS(t){return _r().get(t)}async function Qx(t){await _r().put(t)}function Kx(t,e){return{_id:t,tenantId:e}}function jx(t,e,r){return{_id:e,userId:t,tenantId:r}}function Yx(t,e,r,n){return{_id:t,userId:r,email:e,tenantId:n}}async function Zf(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}}async function cS(t,e,r,n){return Zf(t,()=>Yx(t,e,r,n))}async function Hx(t,e,r,n){let i=[Zf(e,()=>Kx(e,t)),Zf(r,()=>jx(e,r,t))];n&&i.push(cS(n,r,e,t)),await Promise.all(i)}async function zx(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})}var pn={};P(pn,{getAccount:()=>Ir,getAccountByTenantId:()=>ii,getStatus:()=>Jx});var lS=M(require("node-fetch"));var no=class{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";Ks.setHeader(n.headers);let s={method:e,body:i?JSON.stringify(n.body):n.body,headers:n.headers,credentials:"include"};return await(0,lS.default)(`${this.host}${r}`,s)}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 Xf=new no(h.INTERNAL_ACCOUNT_PORTAL_URL),ep=h.SELF_HOSTED||h.DISABLE_ACCOUNT_PORTAL,Ir=async t=>{if(ep)return;let e={email:t},r=await Xf.post("/api/accounts/search",{body:e,headers:{"x-budibase-api-key":h.ACCOUNT_PORTAL_API_KEY}});if(r.status!==200)throw new Error(`Error getting account by email ${t}`);return(await r.json())[0]},ii=async t=>{if(ep)return;let e={tenantId:t},r=await Xf.post("/api/accounts/search",{body:e,headers:{"x-budibase-api-key":h.ACCOUNT_PORTAL_API_KEY}});if(r.status!==200)throw new Error(`Error getting account by tenantId ${t}`);return(await r.json())[0]},Jx=async()=>{if(ep)return;let t=await Xf.get("/api/status",{headers:{"x-budibase-api-key":h.ACCOUNT_PORTAL_API_KEY}}),e=await t.json();if(t.status!==200)throw new Error("Error getting status");return e};var ui={};P(ui,{UserDB:()=>wt,addAppBuilder:()=>mU,bulkGetGlobalUsersById:()=>Wu,bulkUpdateGlobalUsers:()=>yo,cleanseUserObject:()=>_p,creatorsInList:()=>hn,doesUserExist:()=>cU,getAccountHolderFromUsers:()=>Bu,getAllUserIds:()=>aU,getAllUsers:()=>uU,getById:()=>gn,getCreatorCount:()=>fU,getExistingAccounts:()=>ai,getExistingPlatformUsers:()=>jS,getExistingTenantUsers:()=>KS,getFirstPlatformUser:()=>ho,getGlobalUserByAppPage:()=>rA,getGlobalUserByEmail:()=>yt,getPlatformUsers:()=>Ru,getUserCount:()=>dU,hasAdminPermissions:()=>Or,hasAppBuilderPermissions:()=>zS,hasBuilderPermissions:()=>et,isAdmin:()=>wr,isAdminOrBuilder:()=>HS,isBuilder:()=>pi,isCreatorAsync:()=>Eo,isCreatorSync:()=>Mu,isGlobalBuilder:()=>YS,paginatedUsers:()=>iA,removeAppBuilder:()=>hU,removePortalUserPermissions:()=>pU,searchExistingEmails:()=>dp,searchGlobalUsersByApp:()=>Vu,searchGlobalUsersByAppAccess:()=>Ap,searchGlobalUsersByEmail:()=>nA,validateUniqueUser:()=>Fu});var oi={};P(oi,{account:()=>_S,action:()=>IS,ai:()=>bS,analytics:()=>Su,app:()=>OS,auditLog:()=>GS,auth:()=>Du,automation:()=>wS,backfill:()=>FS,backfillCache:()=>Ou,backup:()=>WS,datasource:()=>DS,email:()=>RS,environmentVariable:()=>VS,group:()=>BS,identification:()=>gt,initAsyncEvents:()=>QN,installation:()=>uo,layout:()=>xS,license:()=>CS,org:()=>vS,plugin:()=>$S,processors:()=>rp,publishEvent:()=>S,query:()=>PS,role:()=>mo,rowAction:()=>qS,rows:()=>US,screen:()=>NS,serve:()=>kS,shutdown:()=>KN,table:()=>LS,user:()=>Ue,view:()=>MS,workspace:()=>QS});var rp={};P(rp,{analyticsProcessor:()=>gS,init:()=>av,processors:()=>qt});var Su={};P(Su,{enabled:()=>Tu});var Tu=async()=>Au();var hS=require("posthog-node");var Zx=t=>t==="served:builder"||t==="served:app:preview"||t==="served:app",Xx=t=>t==="served:app:preview"||t==="served:app";var fS={"served:app":"calendarDay","served:app:preview":"calendarDay","served:builder":"calendarDay"},pS=async t=>{if(!Zx(t))return!1;let e=await ev(t);if(e){let r=new Date(e.timestamp);switch(fS[t]){case"calendarDay":return r.setDate(r.getDate()+1),r.setHours(0,0,0,0),Date.now()>r.getTime()?(await dS(t,{timestamp:Date.now()}),!1):!0}}else return await dS(t,{timestamp:Date.now()}),!1},mS=t=>{let e=`${Ee.EVENTS_RATE_LIMIT}:${t}`;return Xx(t)&&(e=e+":"+Ae()),e},ev=async t=>{let e=mS(t);return await fn(e)},dS=async(t,e)=>{let r=mS(t),n=fS[t],i;switch(n){case"calendarDay":i=86400}await Vt(r,e,i)};var rv=["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"],io=class{constructor(e){if(!e)throw new Error("Posthog token is not defined");this.posthog=new hS.PostHog(e)}async processEvent(e,r,n,i){if(rv.includes(e)||await pS(e))return;n=this.clearPIIProperties(n),n.version=h.VERSION,n.service=h.SERVICE,n.environment=r.environment,n.hosting=r.hosting;let s=Ae();s&&(n.appId=s);let o={distinctId:r.id,event:e,properties:n};i&&(o.timestamp=new Date(i)),(r.installationId||r.tenantId)&&(o.groups={},r.installationId&&(o.groups.installation=r.installationId,o.properties.installationId=r.installationId),r.tenantId&&(o.groups.tenant=r.tenantId,o.properties.tenantId=r.tenantId)),this.posthog.capture(o)}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 ES=io;var nv=["installation:version:upgraded","installation:version:downgraded"],iv=["installation","tenant"],so=class{constructor(){h.POSTHOG_TOKEN&&!h.isTest()&&(this.posthog=new ES(h.POSTHOG_TOKEN))}async processEvent(e,r,n,i){!nv.includes(e)&&!await Tu()||this.posthog&&await this.posthog.processEvent(e,r,n,i)}async identify(e,r){!iv.includes(e.type)&&!await Tu()||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 tp=h.SELF_HOSTED&&!h.isDev(),oo=class{async processEvent(e,r,n){tp||console.log(`[audit] [identityType=${r.type}] ${e}`,n)}async identify(e){tp||console.log("[audit] identified",e)}async identifyGroup(e){tp||console.log("[audit] group identified",e)}async shutdown(){}};var si=class t{static{this.auditLogsEnabled=!1}static init(e){t.auditLogsEnabled=!0;let r=e;return t.auditLogQueue=new mt("auditLogQueue",{jobTags:n=>({"event.name":n.event})}),t.auditLogQueue.process(async n=>{await be(n.data.tenantId,async()=>{let i=n.data.properties;i.audited&&(i={...i,...i.audited},delete i.audited);let s={};h.ENABLE_AUDIT_LOG_IP_ADDR&&(s=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:s})})})}async processEvent(e,r,n,i){if(t.auditLogsEnabled&&_f(e)){let s=r.type==="user"?r.id:void 0;await t.auditLogQueue.add({event:e,properties:n,opts:{userId:s,timestamp:i,appId:Ae(),hostInfo:r.hostInfo},tenantId:W()})}}async identify(){}async identifyGroup(){}async shutdown(){await t.auditLogQueue?.close()}};var ao=class{constructor(e){this.initialised=!1;this.processors=[];this.processors=e}async processEvent(e,r,n,i){for(let s of this.processors)await s.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 gS=new so,sv=new oo,ov=new si;function av(t){return si.init(t)}var qt=new ao([gS,sv,ov]);var _u={};P(_u,{checkInstallVersion:()=>lv,getInstall:()=>co,getInstallFromDB:()=>ip});var np=M(require("semver"));var co=async()=>Ar(Ee.INSTALLATION,86400,ip,{useTenancy:!1});async function uv(t){let e={_id:de.PLATFORM_INFO.docs.install,installId:re(),version:h.VERSION};try{let r=await t.put(e);return e._rev=r.rev,e}catch(r){if(r.status===409)return ip();throw r}}var ip=async()=>Ge(de.PLATFORM_INFO.name,async t=>{let e;try{e=await t.get(de.PLATFORM_INFO.docs.install)}catch(r){if(r.status===404)e=await uv(t);else throw r}return e}),cv=async t=>{try{await Ge(de.PLATFORM_INFO.name,async e=>{let r=await co();r.version=t,await e.put(r),await ni(Ee.INSTALLATION)})}catch(e){if(e.status===409)return!1;throw e}return!0},lv=async()=>{let t=await co(),e=t.version,r=h.VERSION;try{if(e!==r){let n=np.default.gt(r,e),i=np.default.lt(r,e);await cv(r)&&(await ys({_id:t.installId,type:"installation"},async()=>{n?await uo.upgraded(e,r):i&&await uo.downgraded(e,r)}),await gt.identifyInstallationGroup(t.installId))}}catch(n){n?.message?.includes("Invalid Version")?un(`Invalid version "${r}" - is it semver?`):un("Failed to retrieve version",n)}};var dv=async()=>{let t=vd(),e=po(),r;if(t?r=t.type:r="tenant",r==="installation"){let n=await mn(),i=lo();return{id:yS(n,r),hosting:i,type:r,installationId:n,environment:e}}else if(r==="tenant"){let n=await mn(),i=await Iu(W()),s=lo();return{id:yS(i,r),type:r,hosting:s,installationId:n,tenantId:i,realTenantId:W(),environment:e}}else if(r==="user"){let n=t,i=await Iu(W()),s=await mn(),o=n.account,a;return o?a=o.hosting:a=lo(),{id:n._id,type:r,hosting:a,installationId:s,tenantId:i,environment:e,realTenantId:W(),hostInfo:n.hostInfo}}else throw new Error("Unknown identity type")},fv=async(t,e)=>{let r=t,n="installation",i=lo(),s=h.VERSION,o=po(),a={id:r,type:n,hosting:i,version:s,environment:o};await sp(a,e),await fo({...a,id:`$${n}_${r}`},e)},pv=async(t,e,r,n=h.VERSION)=>{let i=await Iu(t),s="tenant",o=await mn(),a=po(),u={id:i,type:s,hosting:e,environment:a,installationId:o,createdAt:r,createdVersion:n};await sp(u,r),await fo({...u,id:`$${s}_${i}`},r)},mv=async(t,e,r)=>{let n=t._id,i=await Iu(t.tenantId),s="user",o=et(t),a=Or(t),u;Bo(t)&&(u=t.providerType);let l=(await ai([t.email])).length>0,d=!!e&&l&&e.verified,f=await mn(),m=e?e.hosting:lo(),p=po();await fo({id:n,type:s,hosting:m,installationId:f,tenantId:i,verified:d,accountHolder:l,providerType:u,builder:o,admin:a,environment:p},r)},hv=async t=>{let e=t.accountId,r=t.tenantId,n="user",i=Fo(t)?t.providerType:void 0,s=t.verified,o=!0,a=t.hosting,u=await mn(),c=po();if(Mo(t)){let d=await yt(t.email);d?._id&&(e=d._id)}await fo({id:e,type:n,hosting:a,installationId:u,tenantId:r,providerType:i,verified:s,accountHolder:o,environment:c})},fo=async(t,e)=>{await qt.identify(t,e)},sp=async(t,e)=>{await qt.identifyGroup(t,e)},po=()=>h.isDev()?"development":h.DEPLOYMENT_ENVIRONMENT,lo=()=>h.SELF_HOSTED?"self":"cloud",mn=async()=>Ev()?"account-portal":(await co()).installId,Iu=async t=>h.SELF_HOSTED?TS(t):t,TS=async t=>be(t,()=>Ar(Ee.UNIQUE_TENANT_ID,86400,async()=>{let e=Y(),r=await ci(),n;return r.config.uniqueTenantId?r.config.uniqueTenantId:(n=`${re()}_${t}`,r.config.uniqueTenantId=n,r.config.createdVersion=h.VERSION,await e.put(r),n)})),Ev=()=>h.SERVICE==="account-portal",yS=(t,e)=>e==="installation"||e==="tenant"?`$${e}_${t}`:t,gt={getCurrentIdentity:dv,identifyInstallationGroup:fv,identifyTenantGroup:pv,identifyUser:mv,identifyAccount:hv,identify:fo,identifyGroup:sp,getInstallationId:mn,getUniqueTenantId:TS};var Ou={};P(Ou,{end:()=>yv,isAlreadySent:()=>up,isBackfillingEvent:()=>ap,recordEvent:()=>op,start:()=>gv});var gv=async t=>Sv({eventWhitelist:t}),op=async(t,e)=>{let r=cp(t,e);await Vt(r,e,void 0,{useTenancy:!1})},yv=async()=>{await Av(),await _v()},Tv=async()=>fn(Ee.BACKFILL_METADATA),Sv=async t=>Vt(Ee.BACKFILL_METADATA,t),Av=async()=>{await eo(Ee.BACKFILL_METADATA)},_v=async()=>{let t=cp(),e=await yu(t);for(let r of e)await eo(r,{useTenancy:!1})},ap=async t=>{let r=(await Tv())?.eventWhitelist;return!!(r&&r.includes(t))},up=async(t,e)=>{let r=cp(t,e);return!!await fn(r,{useTenancy:!1})},Iv={"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}`},cp=(t,e)=>{let r,n=W();if(t){r=`${Ee.EVENTS}:${n}:${t}`;let i=Iv[t],s=i?i(e):void 0;s&&(r=`${r}:${s}`)}else r=`${Ee.EVENTS}:${n}:*`;return r};var Qt;function wu(){Qt=new mt("systemEventQueue",{jobTags:t=>({"event.name":t.event})})}async function SS(){Qt&&await Qt.close()}async function AS(t){Qt||wu();let{event:e,identity:r}=t;Im.indexOf(e)!==-1&&r.tenantId&&await Qt.add(t)}var S=async(t,e,r,n)=>{let i=n||await gt.getCurrentIdentity();if(!(n?!1:await ap(t))){await AS({event:t,identity:i,properties:e,timestamp:r}),await qt.processEvent(t,i,e,r);return}await up(t,e)||(await qt.processEvent(t,i,e,r),await op(t,e))};async function Ov(t,e){let r={tenantId:t.tenantId};await S("account:created",r,void 0,e)}async function wv(t){let e={tenantId:t.tenantId};await S("account:deleted",e)}async function Dv(t){let e={tenantId:t.tenantId};await S("account:verified",e)}var _S={created:Ov,deleted:wv,verified:Dv};async function Rv(t,e){await S("action:automation_step:executed",t,e)}async function bv(t,e){await S("action:crud:executed",t,e)}async function Cv(t,e){await S("action:ai_agent:executed",t,e)}var IS={aiAgentExecuted:Cv,automationStepExecuted:Rv,crudExecuted:bv};var xv=async(t,e)=>{let r={appId:t.appId,version:t.version,audited:{name:t.name}};await S("app:created",r,e)};async function vv(t){let e={appId:t.appId,version:t.version,audited:{name:t.name}};await S("app:updated",e)}async function Pv(t){let e={appId:t.appId,audited:{name:t.name}};await S("app:deleted",e)}async function Nv(t,e){let r={appId:t.appId,audited:{name:t.name}};await S("app:published",r,e)}async function Uv(t){let e={appId:t.appId,audited:{name:t.name}};await S("app:unpublished",e)}async function Lv(t){let e={appId:t.appId,audited:{name:t.name}};await S("app:file:imported",e)}async function kv(t,e){let r={duplicateAppId:e,appId:t.appId,audited:{name:t.name}};await S("app:duplicated",r)}async function Mv(t,e){let r={appId:t.appId,templateKey:e,audited:{name:t.name}};await S("app:template:imported",r)}async function Fv(t,e,r){let n={appId:t.appId,currentVersion:e,updatedToVersion:r,audited:{name:t.name}};await S("app:version:updated",n)}async function Bv(t,e,r){let n={appId:t.appId,currentVersion:e,revertedToVersion:r,audited:{name:t.name}};await S("app:version:reverted",n)}async function $v(t){let e={appId:t.appId,audited:{name:t.name}};await S("app:reverted",e)}async function Wv(t){let e={appId:t.appId,audited:{name:t.name}};await S("app:exported",e)}var OS={created:xv,updated:vv,deleted:Pv,published:Nv,unpublished:Uv,fileImported:Lv,duplicated:kv,templateImported:Mv,versionUpdated:Fv,versionReverted:Bv,reverted:$v,exported:Wv};async function Vv(t,e){let n={userId:(await gt.getCurrentIdentity()).id,source:t,audited:{email:e}};await S("auth:login",n)}async function Gv(t){let r={userId:(await gt.getCurrentIdentity()).id,audited:{email:t}};await S("auth:logout",r)}async function qv(t,e){let r={type:t};await S("auth:sso:created",r,e)}async function Qv(t){let e={type:t};await S("auth:sso:updated",e)}async function Kv(t,e){let r={type:t};await S("auth:sso:activated",r,e)}async function jv(t){let e={type:t};await S("auth:sso:deactivated",e)}var Du={login:Vv,logout:Gv,SSOCreated:qv,SSOUpdated:Qv,SSOActivated:Kv,SSODeactivated:jv};async function Yv(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 S("automation:created",r,e)}async function Hv(t){let e={appId:t.appId,automationId:t._id,triggerId:t.definition?.trigger?.id,triggerType:t.definition?.trigger?.stepId};await S("automation:trigger:updated",e)}async function zv(t){let e={appId:t.appId,automationId:t._id,triggerId:t.definition?.trigger?.id,triggerType:t.definition?.trigger?.stepId,audited:{name:t.name}};await S("automation:deleted",e)}async function Jv(t){let e={appId:t.appId,automationId:t._id,triggerId:t.definition?.trigger?.id,triggerType:t.definition?.trigger?.stepId};await S("automation:tested",e)}var Zv=async(t,e)=>{let r={count:t};await S("automations:run",r,e)};async function Xv(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 S("automation:step:created",n,r)}async function eP(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 S("automation:step:deleted",r)}var wS={created:Yv,triggerUpdated:Hv,deleted:zv,tested:Jv,run:Zv,stepCreated:Xv,stepDeleted:eP};function lp(t){return!Object.values(No).includes(t.source)}async function tP(t,e){let r={datasourceId:t._id,source:t.source,custom:lp(t)};await S("datasource:created",r,e)}async function rP(t){let e={datasourceId:t._id,source:t.source,custom:lp(t)};await S("datasource:updated",e)}async function nP(t){let e={datasourceId:t._id,source:t.source,custom:lp(t)};await S("datasource:deleted",e)}var DS={created:tP,updated:rP,deleted:nP};async function iP(t){let e={};await S("email:smtp:created",e,t)}async function sP(){let t={};await S("email:smtp:updated",t)}var RS={SMTPCreated:iP,SMTPUpdated:sP};async function oP(t){let e={};await S("ai:config:created",e,t)}async function aP(){let t={};await S("ai:config:updated",t)}var bS={AIConfigCreated:oP,AIConfigUpdated:aP};async function uP(t,e){let r={accountId:t.accountId,...e};await S("license:plan:changed",r)}async function cP(t){let e={accountId:t.accountId};await S("license:activated",e)}async function lP(t){let e={accountId:t.accountId};await S("license:checkout:opened",e)}async function dP(t){let e={accountId:t.accountId};await S("license:checkout:success",e)}async function fP(t){let e={accountId:t.accountId};await S("license:portal:opened",e)}async function pP(t){let e={accountId:t.accountId};await S("license:payment:failed",e)}async function mP(t){let e={accountId:t.accountId};await S("license:payment:recovered",e)}var CS={planChanged:uP,activated:cP,checkoutOpened:lP,checkoutSuccess:dP,portalOpened:fP,paymentFailed:pP,paymentRecovered:mP};async function hP(t,e){let r={layoutId:t._id};await S("layout:created",r,e)}async function EP(t){let e={layoutId:t};await S("layout:deleted",e)}var xS={created:hP,deleted:EP};async function gP(t){let e={};await S("org:info:name:updated",e,t)}async function yP(t){let e={};await S("org:info:logo:updated",e,t)}async function TP(t){let e={};await S("org:platformurl:updated",e,t)}async function SP(){let t={};await S("analytics:opt:out",t)}async function AP(){let t={};await S("analytics:opt:out",t)}var vS={nameUpdated:gP,logoUpdated:yP,platformURLUpdated:TP,analyticsOptOut:SP,analyticsOptIn:AP};var _P=async(t,e,r)=>{let n={queryId:e._id,datasourceId:t._id,source:t.source,queryVerb:e.queryVerb};await S("query:created",n,r)},IP=async(t,e)=>{let r={queryId:e._id,datasourceId:t._id,source:t.source,queryVerb:e.queryVerb};await S("query:updated",r)},OP=async(t,e,r)=>{let n={queryId:e._id,datasourceId:t._id,source:t.source,queryVerb:e.queryVerb,appId:r};await S("query:deleted",n)},wP=async(t,e,r)=>{let n={datasourceId:t._id,source:t.source,count:r,importSource:e};await S("query:import",n)},DP=async(t,e)=>{let r={count:t};await S("queries:run",r,e)},RP=async(t,e)=>{let r={queryId:e.queryId,datasourceId:t._id,source:t.source,queryVerb:e.queryVerb};await S("query:previewed",r)},PS={created:_P,updated:IP,deleted:OP,imported:wP,run:DP,previewed:RP};async function bP(t,e){let r={roleId:t._id,permissionId:t.permissionId,inherits:t.inherits};await S("role:created",r,e)}async function CP(t){let e={roleId:t._id,permissionId:t.permissionId,inherits:t.inherits};await S("role:updated",e)}async function xP(t){let e={roleId:t._id,permissionId:t.permissionId,inherits:t.inherits};await S("role:deleted",e)}async function vP(t,e,r){let n={userId:t._id,roleId:e};await S("role:assigned",n,r)}async function PP(t,e){let r={userId:t._id,roleId:e};await S("role:unassigned",r)}var mo={created:bP,updated:CP,deleted:xP,assigned:vP,unassigned:PP};async function NP(t,e){let r={layoutId:t.layoutId,screenId:t._id,roleId:t.routing.roleId,audited:{name:t.routing?.route}};await S("screen:created",r,e)}async function UP(t){let e={layoutId:t.layoutId,screenId:t._id,roleId:t.routing.roleId,audited:{name:t.routing?.route}};await S("screen:deleted",e)}var NS={created:NP,deleted:UP};var LP=async(t,e)=>{let r={count:t};await S("rows:created",r,e)},kP=async(t,e)=>{let r={tableId:t._id,count:e};await S("rows:imported",r)},US={created:LP,imported:kP};async function MP(t,e){let r={tableId:t._id,audited:{name:t.name}};await S("table:created",r,e)}async function FP(t,e){let r,n;for(let s in e.schema)if(!t.schema[s]){let o=e.schema[s];"default"in o&&o.default!=null&&(r=!0),o.type==="ai"&&(n=o.operation)}let i={tableId:e._id,defaultValues:r,aiColumn:n,audited:{name:e.name}};(r||n)&&await S("table:updated",i)}async function BP(t,e){let r={tableId:t._id,audited:{name:t.name},appId:e};await S("table:deleted",r)}async function $P(t,e){let r={tableId:t._id,format:e,audited:{name:t.name}};await S("table:exported",r)}async function WP(t){let e={tableId:t._id,audited:{name:t.name}};await S("table:imported",e)}var LS={created:MP,updated:FP,deleted:BP,exported:$P,imported:WP};async function VP(t){let e={timezone:t};await S("served:builder",e)}async function GP(t,e,r){let n={appVersion:t.version,timezone:e,embed:r===!0};await S("served:app",n)}async function qP(t,e){let r={appId:t.appId,appVersion:t.version,timezone:e};await S("served:app:preview",r)}var kS={servedBuilder:VP,servedApp:GP,servedAppPreview:qP};async function QP(t,e){let r={userId:t._id,viaScim:ft(),audited:{email:t.email}};await S("user:created",r,e)}async function KP(t){let e={userId:t._id,viaScim:ft(),audited:{email:t.email}};await S("user:updated",e)}async function jP(t){let e={userId:t._id,viaScim:ft(),audited:{email:t.email}};await S("user:deleted",e)}async function YP(t,e){let r={userId:t._id,audited:{email:t.email}};await S("user:admin:assigned",r,e)}async function HP(t){let e={userId:t._id,audited:{email:t.email}};await S("user:admin:removed",e)}async function zP(t,e){let r={userId:t._id,audited:{email:t.email}};await S("user:builder:assigned",r,e)}async function JP(t){let e={userId:t._id,audited:{email:t.email}};await S("user:builder:removed",e)}async function ZP(t){let e={audited:{email:t}};await S("user:invited",e)}async function XP(t){let e={userId:t._id,audited:{email:t.email}};await S("user:invite:accepted",e)}async function eN(t){let e={userId:t._id,audited:{email:t.email}};await S("user:password:force:reset",e)}async function tN(t){let e={userId:t._id,audited:{email:t.email}};await S("user:password:updated",e)}async function rN(t){let e={userId:t._id,audited:{email:t.email}};await S("user:password:reset:requested",e)}async function nN(t){let e={userId:t._id,audited:{email:t.email}};await S("user:password:reset",e)}async function iN(t){let e={users:t};await S("user:data:collaboration",e)}var Ue={created:QP,updated:KP,deleted:jP,permissionAdminAssigned:YP,permissionAdminRemoved:HP,permissionBuilderAssigned:zP,permissionBuilderRemoved:JP,invited:ZP,inviteAccepted:XP,passwordForceReset:eN,passwordUpdated:tN,passwordResetRequested:rN,passwordReset:nN,dataCollaboration:iN};async function sN(t,e){let r={name:t.name,type:t.type,tableId:t.tableId};await S("view:created",r,e)}async function oN(t){let e={tableId:t.tableId};await S("view:updated",e)}async function aN(t,e){let r={...Pe.views.isV2(t)?{id:t.id,tableId:t.tableId,appId:e}:{}};await S("view:deleted",r)}async function uN(t,e){let r={tableId:t._id,format:e};await S("view:exported",r)}async function cN({tableId:t,filterGroups:e},r){let n={tableId:t,filterGroups:e};await S("view:filter:created",n,r)}async function lN({tableId:t,filterGroups:e}){let r={tableId:t,filterGroups:e};await S("view:filter:updated",r)}async function dN(t){let e={tableId:t.tableId};await S("view:filter:deleted",e)}async function fN({tableId:t,calculationType:e},r){let n={tableId:t,calculation:e};await S("view:calculation:created",n,r)}async function pN(t){let e={tableId:t.tableId,calculation:t.calculation};await S("view:calculation:updated",e)}async function mN(t){let e={tableId:t.tableId,calculation:t.calculation};await S("view:calculation:deleted",e)}async function hN(t,e){let r={tableId:t};await S("view:join:created",r,e)}var MS={created:sN,updated:oN,deleted:aN,exported:uN,filterCreated:cN,filterUpdated:lN,filterDeleted:dN,calculationCreated:fN,calculationUpdated:pN,calculationDeleted:mN,viewJoinCreated:hN};async function EN(t){let e={currentVersion:t};await S("installation:version:checked",e)}async function gN(t,e){let r={from:t,to:e};await S("installation:version:upgraded",r)}async function yN(t,e){let r={from:t,to:e};await S("installation:version:downgraded",r)}async function TN(){let t={};await S("installation:firstStartup",t)}var uo={versionChecked:EN,upgraded:gN,downgraded:yN,firstStartup:TN};var li=!h.SELF_HOSTED&&!h.isDev();async function SN(t){li||await S("app:backfill:succeeded",t)}async function AN(t){if(li)return;let e={error:JSON.stringify(t,Object.getOwnPropertyNames(t))};await S("app:backfill:failed",e)}async function _N(t){li||await S("tenant:backfill:succeeded",t)}async function IN(t){if(li)return;let e={error:JSON.stringify(t,Object.getOwnPropertyNames(t))};await S("tenant:backfill:failed",e)}async function ON(){if(li)return;let t={};await S("installation:backfill:succeeded",t)}async function wN(t){if(li)return;let e={error:JSON.stringify(t,Object.getOwnPropertyNames(t))};await S("installation:backfill:failed",e)}var FS={appSucceeded:SN,appFailed:AN,tenantSucceeded:_N,tenantFailed:IN,installationSucceeded:ON,installationFailed:wN};async function DN(t,e){let r={groupId:t._id,viaScim:ft(),audited:{name:t.name}};await S("user_group:created",r,e)}async function RN(t){let e={groupId:t._id,viaScim:ft(),audited:{name:t.name}};await S("user_group:updated",e)}async function bN(t){let e={groupId:t._id,viaScim:ft(),audited:{name:t.name}};await S("user_group:deleted",e)}async function CN(t,e){let r={count:t,groupId:e._id,viaScim:ft(),audited:{name:e.name}};await S("user_group:user_added",r)}async function xN(t,e){let r={count:t,groupId:e._id,viaScim:ft(),audited:{name:e.name}};await S("user_group:users_deleted",r)}async function vN(t){let e={groupId:t,onboarding:!0};await S("user_group:onboarding_added",e)}async function PN(t){let e={permissions:t.roles,groupId:t._id,audited:{name:t.name}};await S("user_group:permissions_edited",e)}var BS={created:DN,updated:RN,deleted:bN,usersAdded:CN,usersDeleted:xN,createdOnboarding:vN,permissionsEdited:PN};async function NN(t){let e={type:t.schema.type,name:t.name,description:t.description,version:t.version};await S("plugin:init",e)}async function UN(t){let e={pluginId:t._id,type:t.schema.type,source:t.source,name:t.name,description:t.description,version:t.version};await S("plugin:imported",e)}async function LN(t){let e={pluginId:t._id,type:t.schema.type,name:t.name,description:t.description,version:t.version};await S("plugin:deleted",e)}var $S={init:NN,imported:UN,deleted:LN};async function kN(t){let e={appId:t.appId,restoreId:t._id,backupCreatedAt:t.timestamp,name:t.name};await S("app:backup:restored",e)}async function MN(t,e,r,n,i){let s={appId:t,backupId:e,type:r,trigger:n,name:i};await S("app:backup:triggered",s)}var WS={appBackupRestored:kN,appBackupTriggered:MN};async function FN(t,e){let r={name:t,environments:e};await S("environment_variable:created",r)}async function BN(t){let e={name:t};await S("environment_variable:deleted",e)}async function $N(t){let e={userId:t};await S("environment_variable:upgrade_panel_opened",e)}var VS={created:FN,deleted:BN,upgradePanelOpened:$N};async function WN(t){let e={filters:t};await S("audit_log:filtered",e)}async function VN(t){let e={filters:t};await S("audit_log:downloaded",e)}var GS={filtered:WN,downloaded:VN};async function GN(t,e){await S("row_action:created",t,e)}var qS={created:GN};async function qN(t,e){let r={workspaceAppId:t._id,audited:{name:t.name},appId:e};await S("workspace_app:deleted",r)}var QS={deleted:qN};function QN(){}var KN=async()=>{await qt.shutdown(),console.log("Events shutdown")};var fp={};P(fp,{creatorsInList:()=>hn,getAccountHolderFromUsers:()=>Bu,hasAdminPermissions:()=>Or,hasAppBuilderPermissions:()=>zS,hasBuilderPermissions:()=>et,isAdmin:()=>wr,isAdminOrBuilder:()=>HS,isBuilder:()=>pi,isCreatorAsync:()=>Eo,isCreatorSync:()=>Mu,isGlobalBuilder:()=>YS,validateUniqueUser:()=>Fu});async function dp(t){let e=[],r=await KS(t);e.push(...r.map(o=>o.email));let n=await jS(t);e.push(...n.map(o=>o._id));let i=await ai(t);e.push(...i.map(o=>o.email));let s=await Hf(t);return e.push(...s.map(o=>o.email)),[...new Set(e.map(o=>o.toLowerCase()))]}async function Ru(t){return await Fs("platform_users_lowercase_2",{keys:[t.toLowerCase()],include_docs:!0})}async function ho(t){return(await Ru(t))[0]??null}async function KS(t){let r={keys:t.map(i=>i.toLowerCase()),include_docs:!0},n={arrayResponse:!0};return await Ft("by_email2",r,void 0,n)}async function jS(t){let r={keys:t.map(n=>n.toLowerCase()),include_docs:!0};return await Fs("platform_users_lowercase_2",r)}async function ai(t){let r={keys:t.map(n=>n.toLowerCase()),include_docs:!0};return await Fs("account_by_email",r)}var ku={};P(ku,{BadRequestError:()=>xu,BudibaseError:()=>di,EmailUnavailableError:()=>Kt,FeatureDisabledError:()=>Uu,ForbiddenError:()=>vu,HTTPError:()=>we,InvalidAPIKeyError:()=>fi,NotFoundError:()=>Cu,NotImplementedError:()=>Pu,UnexpectedError:()=>bu,UsageLimitError:()=>Nu,getPublicError:()=>Lu});var di=class extends Error{constructor(r,n){super(r);this.code=n}},Lu=t=>{let e;return t.code&&(e={code:t.code},t.getPublicError&&(e={...e,...t.getPublicError()})),e},we=class t extends di{constructor(r,n,i="http"){super(r,i);this.status=n}static async fromResponse(r){let n=await r.text(),i=n,s=r.status,o="http";try{let a=JSON.parse(n);i=a.message,s=a.status,o=a.error?.code}catch{}return new t(i,s,o)}},bu=class extends we{constructor(e){super(e,500)}},Cu=class extends we{constructor(e){super(e,404)}},xu=class extends we{constructor(e){super(e,400)}},vu=class extends we{constructor(e){super(e,403)}},Pu=class extends we{constructor(e){super(e,501)}},Nu=class extends we{constructor(r,n){super(r,400,"usage_limit_exceeded");this.limitName=n}getPublicError(){return{limitName:this.limitName}}},Uu=class extends we{constructor(r,n){super(r,400,"feature_disabled");this.featureName=n}getPublicError(){return{featureName:this.featureName}}},fi=class extends di{constructor(){super("Invalid API key - may need re-generated, or user doesn't exist","invalid_api_key")}},Kt=class extends Error{constructor(e){super(`Email already in use: '${e}'`)}};var pi=Ve.users.isBuilder,wr=Ve.users.isAdmin,YS=Ve.users.isGlobalBuilder,HS=Ve.users.isAdminOrBuilder,Or=Ve.users.hasAdminPermissions,et=Ve.users.hasBuilderPermissions,zS=Ve.users.hasAppBuilderPermissions;async function hn(t,e){let r=[...new Set(t.filter(i=>i.userGroups).flatMap(i=>i.userGroups))];return e=await Y().getMultiple(r,{allowMissing:!0}),t.map(i=>Mu(i,e))}async function Eo(t){let e=[];return t.userGroups&&(e=await Y().getMultiple(t.userGroups)),Mu(t,e)}function Mu(t,e){let r=Ve.users.isCreator(t);return!r&&t?YN(t,e):r}function YN(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}async function Fu(t,e){if(h.MULTI_TENANCY){let r=await ho(t);if(r!=null&&r.tenantId!==e)throw new Kt(t)}if(!h.SELF_HOSTED&&!h.DISABLE_ACCOUNT_PORTAL){let r=await Ir(t);if(r&&r.verified&&r.tenantId!==e)throw new Kt(t)}}async function Bu(t){if(!h.SELF_HOSTED&&!h.DISABLE_ACCOUNT_PORTAL){let e=await ai(t.map(r=>r.email));return t.find(r=>e.map(n=>n.email).includes(r.email))}}var pp=async t=>{await Ue.deleted(t),et(t)&&await Ue.permissionBuilderRemoved(t),Or(t)&&await Ue.permissionAdminRemoved(t)},HN=async(t,e,r)=>{for(let[n,i]of Object.entries(e))(!r||r[n]!==i)&&await mo.assigned(t,i)},zN=async(t,e,r)=>{if(r)for(let[n,i]of Object.entries(r))(!e||e[n]!==i)&&await mo.unassigned(t,i)},JN=async(t,e)=>{let r=t.roles,n=e?.roles;await HN(t,r,n),await zN(t,r,n)},mp=async(t,e)=>{let r=W(),n;!h.SELF_HOSTED&&!h.DISABLE_ACCOUNT_PORTAL&&(n=await ii(r)),await gt.identifyUser(t,n),e?(await Ue.updated(t),XN(t,e)&&await Ue.permissionBuilderRemoved(t),tU(t,e)&&await Ue.permissionAdminRemoved(t),!e.forceResetPassword&&t.forceResetPassword&&t.password&&await Ue.passwordForceReset(t),t.password!==e.password&&await Ue.passwordUpdated(t)):await Ue.created(t),ZN(t,e)&&await Ue.permissionBuilderAssigned(t),eU(t,e)&&await Ue.permissionAdminAssigned(t),await JN(t,e)},ZN=(t,e)=>JS(t,e,et),XN=(t,e)=>ZS(t,e,et),eU=(t,e)=>JS(t,e,Or),tU=(t,e)=>ZS(t,e,Or),JS=(t,e,r)=>!(!r(t)||e&&r(e)),ZS=(t,e,r)=>!(r(t)||!e||!r(e));var $u={};P($u,{createASession:()=>nU,endSession:()=>iU,getSession:()=>Ep,getSessionsForUser:()=>go,invalidateSessions:()=>En,updateSessionTTL:()=>hp});var eA=require("uuid");var tA=h.SESSION_EXPIRY_SECONDS?parseInt(h.SESSION_EXPIRY_SECONDS):me.fromDays(7).toSeconds();function mi(t,e){return`${t}/${e}`}async function go(t){return t?(await(await fr()).scan(t)).map(n=>n.value):(console.trace("Cannot get sessions for undefined userId"),[])}async function En(t,e={}){try{let r=e?.reason||"unknown",n=e.sessionIds||[],i;if(n.length===0?i=(await go(t)).map(o=>({key:mi(o.userId,o.sessionId)})):(n=Array.isArray(n)?n:[n],i=n.map(s=>({key:mi(t,s)}))),i&&i.length>0){let s=await fr(),o=[];for(let a of i)o.push(s.delete(a.key));h.isTest()||ri(`Invalidating sessions for ${t} (reason: ${r}) - ${i.map(a=>a.key).join(", ")}`),await Promise.all(o)}}catch(r){console.error(`Error invalidating sessions: ${r}`)}}async function nU(t,e){let r=await go(t),n=0;if(r.length>=3){let c=r.sort((f,m)=>new Date(f.createdAt).getTime()-new Date(m.createdAt).getTime()),l=r.length-3+1,d=c.slice(0,l).map(f=>f.sessionId);n=d.length,await En(t,{sessionIds:d,reason:"session limit exceeded"})}let i=await fr(),s=e.sessionId,o=e.csrfToken?e.csrfToken:(0,eA.v4)(),a=mi(t,s),u={...e,csrfToken:o,createdAt:new Date().toISOString(),lastAccessedAt:new Date().toISOString(),userId:t};return await i.store(a,u,tA),{session:u,invalidatedSessionCount:n}}async function hp(t){let e=await fr(),r=mi(t.userId,t.sessionId);t.lastAccessedAt=new Date().toISOString(),await e.store(r,t,tA)}async function iU(t,e){await(await fr()).delete(mi(t,e))}async function Ep(t,e){if(!t||!e)throw new Error(`Invalid session details - ${t} - ${e}`);let n=await(await fr()).get(mi(t,e));if(!n)throw new Error(`Session not found - ${t} - ${e}`);return n}var Sp={};P(Sp,{PASSWORD_MAX_LENGTH:()=>yp,PASSWORD_MIN_LENGTH:()=>gp,validatePassword:()=>Tp});var gp=+(h.PASSWORD_MIN_LENGTH||12),yp=+(h.PASSWORD_MAX_LENGTH||512);function Tp(t){return!t||t.length<gp?{valid:!1,error:`Password invalid. Minimum ${gp} characters.`}:t.length>yp?{valid:!1,error:`Password invalid. Maximum ${yp} characters.`}:{valid:!0}}var sU=async t=>{let e=t._id;await Et.removeUser(t),await pp(t),await Dr.invalidateUser(e),await En(e,{reason:"bulk-deletion"})},wt=class t{static init(e,r,n){t.quotas=e,t.groups=r,t.features=n}static async isPreventPasswordActions(e,r){return h.ENABLE_SSO_MAINTENANCE_MODE&&wr(e)?!1:await t.features.isSSOEnforced()||Bo(e)?!0:(r||(r=await ii(W())),!!(r&&r.email===e.email&&Fo(r)))}static async buildUser(e,r={hashPassword:!0,requirePassword:!0},n,i,s){let{password:o,_id:a}=e;i&&!i.password&&(r.requirePassword=!1);let u;if(o){if(await t.isPreventPasswordActions(e,s))throw new we("Password change is disabled for this user",400);if(!r.skipPasswordValidation){let d=Tp(o);if(!d.valid)throw new we(d.error,400)}u=r.hashPassword?await Cd(o):o}else i&&(u=i.password);let c=r.requirePassword&&!await t.features.isSSOEnforced();if(!u&&c)throw"Password must be specified.";a=a||zn();let l={createdAt:Date.now(),...i,...e,_id:a,password:u,tenantId:n};return l.roles||(l.roles={}),l.status==null&&(l.status="active"),l}static async allUsers(){return(await Y().allDocs(sn(null,{include_docs:!0}))).rows.map(n=>n.doc)}static async countUsersByApp(e){return{userCount:(await Vu(e,{})).length}}static async getUsersByAppAccess(e){return await Ap(e.appId,{limit:e.limit||50})}static async getUserByEmail(e){return yt(e)}static async getUser(e){let r=await gn(e);return r&&delete r.password,r}static async bulkGet(e){return await Wu(e)}static async bulkUpdate(e){return await yo(e)}static async save(e,r={}){r.hashPassword==null&&(r.hashPassword=!0),r.requirePassword==null&&(r.requirePassword=!0);let n=W(),i=Y(),{email:s,_id:o,userGroups:a=[],roles:u}=e;if(!s&&!o)throw new Error("_id or email is required");let c;if(o)try{if(c=await gn(o),s&&c.email!==s&&!r.allowChangingEmail)throw new Error("Email address cannot be changed")}catch(f){if(f.status!==404)throw f}if(!c&&s&&(c=await yt(s),c&&c._id!==o))throw new Kt(s);let l=1,d=0;if((r.isAccountHolder||c)&&(l=0,d=1),c){let[f,m]=await hn([c,e]);d=f!==m?1:0}return t.quotas.addUsers(l,d,async()=>{r.isAccountHolder||await Fu(s,n);let f=await t.buildUser(e,r,n,c);r.currentUserId&&r.currentUserId===c?._id&&(f=_p(f,c)),!c&&u?.length&&(f.roles={...u});let m=[];if(!o&&a.length>0)for(let p of a)m.push(t.groups.addUsers(p,[f._id]));try{let p=await i.put(f);return f._rev=p.rev,await mp(f,c),c&&f.email!==c.email&&await Et.removeUser({email:c.email}),await Et.addUser(n,f._id,f.email,f.ssoId),await Dr.invalidateUser(p.id),await Promise.all(m),i.get(f._id)}catch(p){throw p.status===409?"User exists already":p}})}static async bulkCreate(e,r){let n=W(),i=[],s=[],o=[],a=e.map(f=>f.email),u=await dp(a),c=[];for(let f of e){let m=s.find(E=>E.email.toLowerCase()===f.email.toLowerCase()),p=u.includes(f.email.toLowerCase());if(m||p){c.push({email:f.email,reason:"Unavailable"});continue}f.userGroups=r||[],s.push(f),await Eo(f)&&o.push(f)}let l=await ii(n),d=await t.features.isSSOEnforced();return t.quotas.addUsers(s.length,o.length,async()=>{for(let p of s)d&&delete p.password,i.push(t.buildUser(p,{hashPassword:!0,requirePassword:!d},n,void 0,l));let f=await Promise.all(i);await yo(f);for(let p of f)await Et.addUser(n,p._id,p.email),await mp(p,void 0);let m=f.map(p=>({_id:p._id,email:p.email}));if(Array.isArray(m)&&r){let p=[],E=m.map(g=>g._id);for(let g of r)p.push(t.groups.addUsers(g,E));await Promise.all(p)}return{successful:m,unsuccessful:c}})}static async bulkDelete(e){let r=Y(),n={successful:[],unsuccessful:[]},i=await Bu(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 o=(await r.allDocs({include_docs:!0,keys:e.map(m=>m.userId)})).rows.map(m=>m.doc),a=o.map(m=>({...m,_deleted:!0})),u=await yo(a),l=(await hn(o)).filter(m=>m).length,d=[];for(let m of o){let E=(await ho(m._id)).ssoId;E&&(await Ru(E)).filter(T=>T.ssoId==null).forEach(T=>{d.push({...T,_deleted:!0})}),await sU(m)}await _r().bulkDocs(d),await t.quotas.removeUsers(a.length,l);let f={};return o.reduce((m,p)=>(m[p._id]=p,m),f),u.forEach(m=>{let p=f[m.id].email;m.ok?n.successful.push({_id:m.id,email:p}):n.unsuccessful.push({_id:m.id,email:p,reason:"Database error"})}),n}static async destroy(e){let r=Y(),n=await r.get(e),i=n._id;if(!h.SELF_HOSTED&&!h.DISABLE_ACCOUNT_PORTAL){let o=n.email;if(await Ir(o))throw n.userId===Lt()._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 s=await Eo(n)?1:0;await t.quotas.removeUsers(1,s),await pp(n),await Dr.invalidateUser(i),await En(i,{reason:"deletion"})}static async createAdminUser(e,r,n){let i=n?.password,s={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&&(s.ssoId=n.ssoId),await ni(Ee.CHECKLIST),await t.save(s,{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 So(t){return Array.isArray(t)?t.map(e=>{if(e)return delete e.password,e}):t&&(delete t.password,t)}async function Wu(t,e){let n=(await Y().allDocs({keys:t,include_docs:!0})).rows.map(i=>i.doc);return e?.cleanup&&(n=So(n)),n}async function aU(){let t=Y(),e=`us${R}`;return(await t.allDocs({startkey:e,endkey:`${e}${De}`})).rows.map(n=>n.id)}async function uU(){let t=Y(),e=`us${R}`;return(await t.allDocs({startkey:e,endkey:`${e}${De}`,include_docs:!0})).rows.map(n=>n.doc)}async function yo(t){return await Y().bulkDocs(t)}async function gn(t,e){let n=await Y().get(t);return e?.cleanup&&(n=So(n)),n}async function yt(t,e){if(t==null)throw"Must supply an email address to view";let r=await Ft("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=So(n)),n}async function cU(t){try{let e=await yt(t);if(Array.isArray(e)||e!=null)return!0}catch{return!1}return!1}async function Vu(t,e,r){if(typeof t!="string")throw new Error("Must provide a string based workspace ID");let n=eu(t,{include_docs:!0});n.startkey=e&&e.startkey?e.startkey:n.startkey;let i=await Ft("by_app",n);i||(i=[]);let s=Array.isArray(i)?i:[i];return r?.cleanup&&(s=So(s)),s}async function Ap(t,e){let r=`roles.${t}`,n=[{"builder.global":!0},{"admin.global":!0}];if(t){let o={[r]:{$exists:!0}};n.push(o)}return(await Y().find({selector:{$or:n,_id:{$regex:"^us_"}},limit:e?.limit||50})).docs}function rA(t,e){if(e)return Xa(qe(t),e._id)}async function nA(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,s=await Ft("by_email2",{...e,startkey:i,endkey:`${n}${De}`});s||(s=[]);let o=Array.isArray(s)?s:[s];return r?.cleanup&&(o=So(o)),o}var lU=8;async function iA({bookmark:t,query:e,appId:r,limit:n}={}){let i=Y(),s=n??lU,a={include_docs:!0,limit:s+1};t&&(a.startkey=t);let u,c="_id",l;return e?.equal?._id?u=[await gn(e.equal._id)]:r?(u=await Vu(r,a),l=d=>rA(r,d)):e?.string?.email?(u=await nA(e?.string?.email,a),c="email"):e?.oneOf?._id?u=await Wu(e?.oneOf?._id,{cleanup:!0}):e?(u=(await i.allDocs(sn(null,{...a,limit:void 0}))).rows.map(f=>f.doc),u=ar.search(u,{query:e,limit:a.limit}).rows):u=(await i.allDocs(sn(null,a))).rows.map(f=>f.doc),pf(u,s,{paginate:!0,property:c,getKey:l})}async function dU(){return(await Ef("by_email2",{limit:0,include_docs:!1})).total_rows}async function fU(){let t=0;async function e(r){let n=await iA({bookmark:r}),i=await hn(n.data);t+=i.filter(s=>s).length,n.hasNextPage&&await e(n.nextPage)}return await e(),t}function pU(t){return delete t.admin,delete t.builder,t}function _p(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}async function mU(t,e){let r=qe(e);t.builder??={},t.builder.creator=!0,t.builder.apps??=[],t.builder.apps.push(r),await wt.save(t,{hashPassword:!1})}async function hU(t,e){let r=qe(e);t.builder&&t.builder.apps?.includes(r)&&(t.builder.apps=t.builder.apps.filter(n=>n!==r)),await wt.save(t,{hashPassword:!1})}var sA=3600;async function EU(t,e){let n=await Tf(e).get(t);if(n.budibaseAccess=!0,!h.SELF_HOSTED&&!h.DISABLE_ACCOUNT_PORTAL){let i=await Ir(n.email);i&&(n.account=i,n.accountPortalAccess=!0)}return n}async function gU(t){let e=await wt.bulkGet(t),r=t.filter((i,s)=>!e[s]),n=e.filter(i=>i);return await Promise.all(n.map(async i=>{if(i.budibaseAccess=!0,!h.SELF_HOSTED&&!h.DISABLE_ACCOUNT_PORTAL){let s=await Ir(i.email);s&&(i.account=s,i.accountPortalAccess=!0)}})),r.length?{users:n,notFoundIds:r}:{users:n}}async function Ao({userId:t,tenantId:e,email:r,populateUser:n}){if(n||(n=EU),!e)try{e=W()}catch{e=await Et.lookupTenantId(t)}let i=await Ps(),s=await i.get(t);return s||(s=await n(t,e,r),await i.store(t,s,sA)),s&&!s.tenantId&&e&&(s.tenantId=e),s.userGroups&&!Ve.users.isGlobalBuilder(s)&&await be(e,async()=>{let o=await wt.getGroupBuilderAppIds(s);if(o.length){let a=s.builder?.apps||[];s.builder={apps:[...new Set(a.concat(o))]}}}),s}async function yU(t){let e=await Ps(),r=await e.bulkGet(t),n=t.filter(o=>!r[o]),i=Object.values(r).filter(o=>!!o),s;if(n.length){let o=await gU(n);s=o.notFoundIds;for(let a of o.users)await e.store(a._id,a,sA);i.push(...o.users)}return{users:i,notFoundIds:s}}async function _o(t){await(await Ps()).delete(t)}var Rp={};P(Rp,{Writethrough:()=>wp});var Ei={};P(Ei,{AUTO_EXTEND_POLLING_MS:()=>aA,doWithLock:()=>Ip,newRedlock:()=>yn});var oA=M(require("redlock"));async function SU(t,e){if(t==="custom")return yn(e);switch(t){case"try_once":return yn(hi.TRY_ONCE);case"try_twice":return yn(hi.TRY_TWICE);case"default":return yn(hi.DEFAULT);case"delay_500":return yn(hi.DELAY_500);case"auto_extend":return yn(hi.AUTO_EXTEND);default:throw Xt.unreachable(t)}}var hi={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 yn(t={}){let e={...hi.DEFAULT,...t},n=(await af()).client;return new oA.default([n],e)}function AU(t){let r=`lock:${t.systemLock?"system":W()}_${t.name}`;return t.resource&&(r=r+`_${t.resource}`),r}var aA=me.fromSeconds(10).toMs();async function Ip(t,e){let r=await SU(t.type,t.customOptions),n,i;try{let s=AU(t),o=t.type==="auto_extend"?aA:t.ttl;if(n=await r.lock(s,o),t.type==="auto_extend"){let u=()=>{i=setTimeout(async()=>{n=await n.extend(o,()=>t.onExtend&&t.onExtend()),u()},o/2)};u()}return{executed:!0,result:await e()}}catch(s){if(s.name==="LockError"){if(t.type==="try_once")return{executed:!1};throw s}else throw s}finally{clearTimeout(i),await n?.unlock()}}var uA=1e4,Op=null;async function Gu(){if(!Op){let t=await of();Op=new cn(t)}return Op}function Io(t,e){return t.name+e}function Dp(t,e=null){return{doc:t,lastWrite:e||Date.now()}}async function _U(t,e,r=uA){let n=await Gu(),i=e._id,s;i&&(s=await n.get(Io(t,i)));let o=!s||s.lastWrite<Date.now()-r,a=e;return o&&((await Ip({type:"try_once",name:"persist_writethrough",resource:i,ttl:15e3},async()=>{let c=async l=>{let d=await t.put(l,{force:!0});a._id=d.id,a._rev=d.rev};try{await c(e)}catch(l){if(l.status!==409)throw l;ri("Ignoring conflict in write-through cache")}})).executed||ri("Ignoring redlock conflict in write-through cache")),s=Dp(a,o?null:s?.lastWrite),a._id&&await n.store(Io(t,a._id),s),{ok:!0,id:a._id,rev:a._rev}}async function IU(t,e){let r=await Gu(),n=Io(t,e),i=await r.get(n);if(!i){let s=await t.get(e);i=Dp(s),await r.store(n,i)}return i.doc}async function OU(t,e){let r=await Gu(),n=Io(t,e),i=await r.get(n);if(!i){let s=await t.tryGet(e);if(!s)return null;i=Dp(s),await r.store(n,i)}return i.doc}async function wU(t,e,r){let n=await Gu();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(Io(t,i))}finally{await t.remove(i,r)}}var wp=class{constructor(e,r=uA){this.db=e,this.writeRateMs=r}async put(e,r=this.writeRateMs){return _U(this.db,e,r)}async get(e){return IU(this.db,e)}async tryGet(e){return OU(this.db,e)}async remove(e,r){return wU(this.db,e,r)}};function qu(t){return`config${R}${t}`}async function tt(t){let e=Y();try{return await e.get(qu(t))}catch(r){if(r.status===404)return;throw r}}async function DU(t){return t._id||(t._id=qu(t.type)),Y().put(t)}async function ci(){let t=await tt("settings");return t||(t={_id:qu("settings"),type:"settings",config:{}}),t.config.platformUrl=await Oo({tenantAware:!0,config:t.config}),t.config.analyticsEnabled=await Au({config:t.config}),t}async function xp(){return(await ci()).config}async function Oo(t={tenantAware:!0}){let e=h.PLATFORM_URL||"http://localhost:10000";if(!h.SELF_HOSTED&&h.MULTI_TENANCY&&t.tenantAware){let r=W();e.includes("localhost:")||(e=e.replace("://",`://${r}.`))}else if(h.SELF_HOSTED){let r=t?.config?t.config:(await tt("settings"))?.config;r?.platformUrl&&(e=r.platformUrl)}return e}var Au=async t=>{if(!h.SELF_HOSTED)return!!h.ENABLE_ANALYTICS;let e=await Ar(Ee.ANALYTICS_ENABLED,86400,async()=>{let n=t?.config?t.config:(await tt("settings"))?.config;if(n?.analyticsEnabled===!1)return!1;if(n?.analyticsEnabled===!0)return!0});if(e!==void 0)return e;let r=h.ENABLE_ANALYTICS;return!(r===0||r===!1)};async function RU(){return await tt("google")}async function Qu(){return(await RU())?.config}async function vp(){if(!h.SELF_HOSTED)return bp();let t=await Qu();return(!t||!t.activated)&&(t=bp()),t}function bp(){if(h.GOOGLE_CLIENT_ID&&h.GOOGLE_CLIENT_SECRET)return{clientID:h.GOOGLE_CLIENT_ID,clientSecret:h.GOOGLE_CLIENT_SECRET,activated:!0}}async function bU(){return tt("logos_oidc")}async function CU(){return tt("oidc")}async function xU(){let t=(await CU())?.config;return t?.configs&&t.configs[0]}async function Pp(t){let e=(await tt("oidc"))?.config;return e&&e.configs.filter(r=>r.uuid===t)[0]}async function cA(){return tt("smtp")}async function vU(t){let e=await cA();if(e)return e.config;let r=h.SELF_HOSTED||!t;if(h.SMTP_FALLBACK_ENABLED&&r)return{port:h.SMTP_PORT,host:h.SMTP_HOST,secure:!1,from:h.SMTP_FROM_ADDRESS,auth:{user:h.SMTP_USER,pass:h.SMTP_PASSWORD},fallback:!0}}async function PU(){return(await tt("scim"))?.config}async function NU(){return tt("ai")}async function UU(){return tt("recaptcha")}var Vp={};P(Vp,{AccessController:()=>Lp,BUILTIN_ROLE_IDS:()=>kp,Role:()=>Rr,RoleHierarchyTraversal:()=>Ku,RoleIDVersion:()=>Mp,builtinRoleToNumber:()=>wo,checkForRoleResourceArray:()=>pA,externalRole:()=>$U,findRole:()=>Do,getAllRoleIds:()=>qU,getAllRoles:()=>Wp,getBuiltinRole:()=>dA,getBuiltinRoles:()=>Bp,getDBRoleID:()=>mA,getExternalRoleID:()=>br,getExternalRoleIDs:()=>hA,getRole:()=>WU,getUserRoleHierarchy:()=>$p,getUserRoleIdHierarchy:()=>fA,isBuiltin:()=>Tn,lowerBuiltinRoleID:()=>BU,prefixRoleIDNoBuiltin:()=>Up,roleIDsAreEqual:()=>rt,roleToNumber:()=>FU,saveRoles:()=>VU,validInherits:()=>MU});var lA=require("lodash"),ju=M(require("lodash/fp/cloneDeep")),Np=M(require("semver"));var kp={ADMIN:"ADMIN",POWER:"POWER",BASIC:"BASIC",PUBLIC:"PUBLIC"},ne={...kp,BUILDER:"BUILDER"},Mp={UUID:void 0,NAME:"name"};function kU(t,e){return Array.isArray(e)?e.filter(r=>t.includes(r)).length===e.length:t.includes(e)}var Rr=class{constructor(e,r,n,i){this.permissions={};this._id=e,this.name=r,this.uiMetadata=i,this.permissionId=n,this.version=Mp.NAME}addInheritance(e){return e&&typeof e=="string"?e=Up(e):e&&Array.isArray(e)&&(e=e.map(Up)),this.inherits=e,this}},Ku=class{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 s of e.inherits){let o=Do(s,n,r);o&&(i=i.concat(this.walk(o)))}else{let s=[],o=e;for(;o&&o.inherits&&!kU(s,o.inherits);){if(Array.isArray(o.inherits))return i.concat(this.walk(o));if(s.push(o.inherits),o=Do(o.inherits,n,r),o&&i.push(o),Pe.roles.checkForRoleInheritanceLoops(i))break}}return(0,lA.uniqBy)(i,s=>s._id)}},Fp={ADMIN:new Rr(ne.ADMIN,ne.ADMIN,"admin",{displayName:"App admin",description:"Can do everything",color:"var(--spectrum-global-color-static-red-400)"}).addInheritance(ne.POWER),POWER:new Rr(ne.POWER,ne.POWER,"power",{displayName:"App power user",description:"An app user with more access",color:"var(--spectrum-global-color-static-orange-400)"}).addInheritance(ne.BASIC),BASIC:new Rr(ne.BASIC,ne.BASIC,"write",{displayName:"App user",description:"Any logged in user",color:"var(--spectrum-global-color-static-green-400)"}).addInheritance(ne.PUBLIC),PUBLIC:new Rr(ne.PUBLIC,ne.PUBLIC,"public",{displayName:"Public user",description:"Accessible to anyone",color:"var(--spectrum-global-color-static-blue-400)"}),BUILDER:new Rr(ne.BUILDER,ne.BUILDER,"admin",{displayName:"Builder user",description:"Users that can edit this app",color:"var(--spectrum-global-color-static-magenta-600)"})};function Bp(){return(0,ju.default)(Fp)}function Tn(t){return Object.values(kp).includes(t)}function Up(t){return Tn(t)?t:kt(t)}function dA(t){let e=Object.values(Fp).find(r=>t.includes(r._id));if(e)return(0,ju.default)(e)}function MU(t,e){if(!e)return!1;let r=n=>t.find(i=>rt(i._id,n));if(Array.isArray(e)){let n=e.filter(i=>r(i));return e.length!==0&&n.length===e.length}else return!!r(e)}function wo(t){let e=Bp(),r=Object.values(e).length+1;if(rt(t,ne.ADMIN)||rt(t,ne.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}async function FU(t){if(Tn(t))return wo(t);let e=await $p(t,{defaultPublic:!0}),r=n=>{if(!n.inherits)return 0;if(Array.isArray(n.inherits)){let i=n.inherits.map(s=>{let o=e.find(a=>rt(a._id,s));if(o)return r(o)+1}).filter(s=>s).sort().pop();if(i!=null)return i}else if(Tn(n.inherits))return wo(n.inherits)+1;return 0};return Math.max(...e.map(r))}function BU(t,e){return t?e&&wo(t)>wo(e)?e:t:e}function rt(t,e){return kt(t)===kt(e)}function $U(t){let e;return t._id&&(e=br(t._id)),{...t,_id:e,inherits:hA(t.inherits,t.version)}}function Do(t,e,r){let n=dA(t);n||(t=kt(t));let i=e.find(s=>s._id&&rt(s._id,t));return!i&&!Tn(t)&&r?.defaultPublic?(0,ju.default)(Fp.PUBLIC):(n=Object.assign(n||{},i),n?._id&&(n._id=br(n._id,n.version)),Object.keys(n).length===0?void 0:n)}async function WU(t,e){let r=Hn(),n=[];if(!Tn(t)){let i=await r.tryGet(mA(t));i&&n.push(i)}return Do(t,n,e)}async function VU(t){await Hn().bulkDocs(t.filter(r=>r._id).map(r=>({...r,_id:kt(r._id)})))}async function GU(t,e){let r=await Wp();if(rt(t,ne.ADMIN))return r;let n=Do(t,r,e),i=[];return n&&(i=new Ku(r,e).walk(n)),i}async function fA(t){return(await $p(t)).map(r=>r._id)}async function $p(t,e){return GU(t,e)}function pA(t,e){if(t&&!Array.isArray(t[e])){let r=t[e];t[e]=[r],r==="write"&&t[e].push("read")}return t}async function qU(t){return(await Wp(t)).map(r=>r._id)}async function Wp(t){if(t)return Ge(t,e);{let r;try{r=Hn()}catch{}return e(r)}async function e(r){let n=[];r&&(n=(await r.allDocs(tu(null,{include_docs:!0}))).rows.map(a=>a.doc),n.forEach(a=>a._id=br(a._id,a.version)));let i=Bp(),s=[];!r||await QU(r)?s=[ne.ADMIN,ne.POWER,ne.BASIC,ne.PUBLIC]:s=[ne.ADMIN,ne.BASIC,ne.PUBLIC];for(let o of s){let a=i[o],u=n.filter(c=>rt(c._id,o))[0];u==null?n.push(a||i.BASIC):(n=n.filter(c=>c._id!==u._id),u._id=br(a._id,u.version),n.push({...a,...u,name:a.name,_id:br(a._id,a.version)}))}for(let o of n)if(o.permissions)for(let a of Object.keys(o.permissions))o.permissions=pA(o.permissions,a);return n}}async function QU(t){let r=(await t.tryGet("app_metadata"))?.creationVersion;return!r||!Np.default.valid(r)?!0:!Np.default.gte(r,h.MIN_VERSION_WITHOUT_POWER_ROLE)}var Lp=class{constructor(){this.userHierarchies={}}async hasAccess(e,r){if(e==null||e===""||rt(e,ne.BUILDER)||rt(r,e)||rt(r,ne.BUILDER))return!0;let n=r?this.userHierarchies[r]:null;return!n&&r&&(n=await fA(r),this.userHierarchies[r]=n),n?.find(i=>rt(i,e))!==void 0}async checkScreensAccess(e,r){let n=[];for(let i of e){let s=await this.checkScreenAccess(i,r);s&&n.push(s)}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 mA(t){return t?.startsWith("role")?t:kt(t)}function br(t,e){if(t.startsWith(`role${R}`)&&(Tn(t)||e===Mp.NAME)){let r=t.split(R);return r.shift(),r.join(R)}return t}function hA(t,e){return t&&(typeof t=="string"?br(t,e):t.map(r=>br(r,e)))}var Gp={};P(Gp,{BUILDER:()=>zU,BUILTIN_PERMISSIONS:()=>Yu,CREATOR:()=>JU,GLOBAL_BUILDER:()=>ZU,PermissionImpl:()=>ie,PermissionLevel:()=>_i,PermissionType:()=>ko,doesHaveBasePermission:()=>YU,getAllowedLevels:()=>TA,getBuiltinPermissionByID:()=>jU,getBuiltinPermissions:()=>KU,isPermissionLevelHigherThanRead:()=>HU,levelToNumber:()=>yA});var EA=M(require("lodash/flatten")),gA=M(require("lodash/fp/cloneDeep")),ie=class{constructor(e,r){this.type=e,this.level=r}};function yA(t){switch(t){case"execute":return 0;case"read":return 1;case"write":return 2;case"admin":return 3;default:return-1}}function TA(t){switch(t){case"execute":return["execute"];case"read":return["execute","read"];case"write":case"admin":return["execute","read","write"];default:return[]}}var Yu={PUBLIC:{_id:"public",name:"Public",permissions:[new ie("webhook","execute")]},READ_ONLY:{_id:"read_only",name:"Read only",permissions:[new ie("query","read"),new ie("table","read"),new ie("app","read")]},WRITE:{_id:"write",name:"Read/Write",permissions:[new ie("query","write"),new ie("table","write"),new ie("automation","execute"),new ie("legacy_view","read"),new ie("app","read")]},POWER:{_id:"power",name:"Power",permissions:[new ie("table","write"),new ie("user","read"),new ie("automation","execute"),new ie("webhook","read"),new ie("legacy_view","read"),new ie("app","read")]},ADMIN:{_id:"admin",name:"Admin",permissions:[new ie("table","admin"),new ie("user","admin"),new ie("automation","admin"),new ie("webhook","read"),new ie("query","admin"),new ie("legacy_view","read"),new ie("app","read")]}};function KU(){return(0,gA.default)(Yu)}function jU(t){return Object.values(Yu).find(r=>r._id===t)}function YU(t,e,r){let n=[...new Set(r.map(o=>o.permissionId))],i=Object.values(Yu),s=(0,EA.default)(i.filter(o=>n.indexOf(o._id)!==-1).map(o=>o.permissions));for(let o of s)if(o.type===t&&TA(o.level).indexOf(e)!==-1)return!0;return!1}function HU(t){return yA(t)>1}var zU="builder",JU="creator",ZU="globalBuilder";var Kp={};P(Kp,{FlagSet:()=>zu,all:()=>rL,flags:()=>qp,getEnvFlags:()=>IA,init:()=>XU,isEnabled:()=>tL,parseEnvFlags:()=>Zu,shutdown:()=>eL,testutils:()=>Qp});var Ju=M(require("crypto"));var SA=require("posthog-node"),AA=M(require("dd-trace"));var _A=require("lodash");var Hu;function XU(t){h.POSTHOG_TOKEN&&h.POSTHOG_API_HOST&&!h.SELF_HOSTED&&h.POSTHOG_FEATURE_FLAGS_ENABLED?(console.log("initializing posthog client..."),Hu=new SA.PostHog(h.POSTHOG_TOKEN,{host:h.POSTHOG_API_HOST,personalApiKey:h.POSTHOG_PERSONAL_TOKEN,featureFlagsPollingInterval:me.fromMinutes(3).toMs(),...t})):console.log("posthog disabled")}function eL(){Hu?.shutdown()}function Zu(t){let e=t.split(",").map(n=>n.split(":")),r=[];for(let[n,...i]of e)for(let s of i){let o=!0;s.startsWith("!")&&(s=s.slice(1),o=!1),r.push({tenantId:n,key:s,value:o})}return r}function IA(){return Zu(h.TENANT_FEATURE_FLAGS||"")}var zu=class{constructor(e){this.flagSchema=e;this.setId=Ju.randomUUID()}defaults(){return(0,_A.cloneDeep)(this.flagSchema)}isFlagName(e){return this.flagSchema[e]!==void 0}async isEnabled(e){return(await this.fetch())[e]}async fetch(){return await AA.default.trace("features.fetch",async e=>{let r=Zd(this.setId);if(r)return e?.addTags({fromCache:!0}),r;let n={},i=this.defaults(),s=W(),o=new Set;if(Ya())return i;for(let{tenantId:d,key:f,value:m}of IA())if(!(!d||d!=="*"&&d!==s)&&(n.readFromEnvironmentVars=!0,m===!1&&o.add(f),!!this.isFlagName(f))){if(typeof i[f]!="boolean")throw new Error(`Feature: ${f} is not a boolean`);i[f]=m,n[`flags.${f}.source`]="environment"}let a=Lt(),u=a?._id;if(!u){let d=zd();d&&(u=Ju.createHash("sha512").update(d).digest("hex"))}let c=a?.tenantId;if(c||(c=s),n["identity.type"]=a?.type,n["identity._id"]=a?._id,n.tenantId=c,n.userId=u,Hu&&u){n.readFromPostHog=!0;let d=await ci(),f={tenantId:c},m={tenant:{id:c}};d.config.createdVersion&&(m.tenant.createdVersion=d.config.createdVersion),d.createdAt&&(m.tenant.createdAt=`${d.createdAt}`);let p=await Hu.getAllFlags(u,{personProperties:f,onlyEvaluateLocally:!0,groups:{tenant:c},groupProperties:m});for(let[E,g]of Object.entries(p))if(this.isFlagName(E)){if(typeof g!="boolean"){console.warn(`Invalid value for posthog flag "${E}": ${g}`);continue}if(!(i[E]===!0||o.has(E)))try{i[E]=g,n[`flags.${E}.source`]="posthog"}catch(T){console.warn(`Error parsing posthog flag "${E}": ${g}`,T)}}}let l=ef();for(let[d,f]of Object.entries(l))this.isFlagName(d)&&typeof f=="boolean"&&(i[d]=f,n[`flags.${d}.source`]="override");Xd(this.setId,i);for(let[d,f]of Object.entries(i))n[`flags.${d}.value`]=f;return e?.addTags(n),i})}},qp=new zu(bm);async function tL(t){return await qp.isEnabled(t)}async function rL(){return await qp.fetch()}var Qp={};P(Qp,{setFeatureFlags:()=>OA,withFeatureFlags:()=>sL});function nL(){let t={};for(let{tenantId:e,key:r,value:n}of Zu(process.env.TENANT_FEATURE_FLAGS||"")){let i=t[e]||{};i[r]!==!1&&(i[r]=n,t[e]=i)}return t}function iL(t){let e=[];for(let[r,n]of Object.entries(t))for(let[i,s]of Object.entries(n))s===!1?e.push(`${r}:!${i}`):e.push(`${r}:${i}`);return e.join(",")}function OA(t,e){let r=nL();for(let[i,s]of Object.entries(e)){let o=r[t]||{};o[i]=s,r[t]=o}let n=iL(r);return Es({TENANT_FEATURE_FLAGS:n})}function sL(t,e,r){let n=OA(t,e),i=r();return i instanceof Promise?i.finally(n):(n(),i)}var im={};P(im,{adminOnly:()=>cc,auditLog:()=>sc,authError:()=>Ie,buildAuthMiddleware:()=>VL,buildCsrfMiddleware:()=>qL,buildTenancyMiddleware:()=>GL,builderOnly:()=>dc,builderOrAdmin:()=>lc,google:()=>jt,internalApi:()=>ac,joiValidator:()=>bo,oidc:()=>Yt,passport:()=>QL,platformLogout:()=>zL,refreshOAuthToken:()=>YL,ssoCallbackUrl:()=>Cr,updateUserOAuth:()=>HL});var nm={};P(nm,{adminOnly:()=>cc,auditLog:()=>sc,authError:()=>Ie,authenticated:()=>ic,builderOnly:()=>dc,builderOrAdmin:()=>lc,correlation:()=>FA,csp:()=>qA,csrf:()=>uc,datasource:()=>$L,errorHandling:()=>$A,featureFlagCookie:()=>QA,google:()=>jt,internalApi:()=>ac,ip:()=>jA,joiValidator:()=>bo,local:()=>gi,oidc:()=>Yt,pino:()=>kA,querystringToBody:()=>WA,ssoCallbackUrl:()=>Cr,tenancy:()=>oc});var gi={};P(gi,{authenticate:()=>uL,options:()=>aL});function Ie(t,e,r){return t(r,null,{message:e})}async function Cr(t,e){if(e&&e.callbackURL)return e.callbackURL;let r=await xp(),n="/api/global/auth";return dr()&&(n+=`/${W()}`),n+=`/${t}/callback`,`${r.platformUrl}${n}`}var jp="Invalid credentials",oL="This account has expired. Please reset your password",aL={passReqToCallback:!0};async function uL(t,e,r,n){if(!e)return Ie(n,"Email Required");if(!r)return Ie(n,"Password Required");let i=await yt(e);return i==null?(console.info(`user=${e} could not be found`),Ie(n,jp)):i.status==="inactive"?(console.info(`user=${e} is inactive`,i),Ie(n,jp)):i.password?await xd(r,i.password)?(delete i.password,n(null,i)):Ie(n,jp):(console.info(`user=${e} has no password set`,i),Ie(n,oL))}var jt={};P(jt,{buildVerifyFn:()=>RA,getCallbackUrl:()=>dL,strategyFactory:()=>Yp});var Ro=t=>Promise.resolve(t);async function Xu(t,e=!0,r,n){if(!n)throw new Error("Save user function must be provided");if(!t.userId)return Ie(r,"sso user id required");if(!t.email)return Ie(r,"sso user email required");let i=zn(t.userId),s;try{s=await gn(i)}catch(a){if(!a.status||a.status!==404)return Ie(r,"Unexpected error when retrieving existing user",a)}if(s||(s=await yt(t.email)),!s&&e)return Ie(r,"Email does not yet exist. You must set up your local budibase account first.");s||(s={_id:i,email:t.email,roles:{},tenantId:W()});let o=await cL(s,t);o.forceResetPassword=!1;try{delete o.password,o=await n(o,{hashPassword:!1,requirePassword:!1})}catch(a){return Ie(r,"Error saving user",a)}return r(null,o)}async function cL(t,e){let r,n,i;if(e.profile){let s=e.profile;if(s.name){let o=s.name;o.givenName&&(r=o.givenName),o.familyName&&(n=o.familyName)}}return e.oauth2&&(i={...e.oauth2}),{...t,provider:e.provider,providerType:e.providerType,firstName:r,lastName:n,oauth2:i}}var lL=require("passport-google-oauth").OAuth2Strategy;function RA(t){return(e,r,n,i)=>{let s={provider:"google",providerType:"google",userId:n.id,profile:n,email:n._json.email,oauth2:{accessToken:e,refreshToken:r}};return Xu(s,!0,i,t)}}async function Yp(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 s=RA(r);return new lL({clientID:t.clientID,clientSecret:t.clientSecret,callbackURL:e},s)}catch(n){throw new Error(`Error constructing google authentication strategy: ${n}`)}}async function dL(t){return Cr("google",t)}var Yt={};P(Yt,{buildVerifyFn:()=>CA,fetchStrategyConfig:()=>hL,getCallbackUrl:()=>EL,strategyFactory:()=>mL});var bA=M(require("node-fetch"));var fL=require("@techpass/passport-openidconnect").Strategy;function CA(t){return async(e,r,n,i,s,o,a,u,c)=>{let l={provider:e,providerType:"oidc",userId:n.id,profile:n,email:pL(n,i),oauth2:{accessToken:s,refreshToken:o}};return Xu(l,!1,c,t)}}function pL(t,e){if(t._json.email)return t._json.email;if(e.email)return e.email;let r=e.preferred_username;if(r&&If(r))return r;throw new Error(`Could not determine user email from profile ${JSON.stringify(t)} and claims ${JSON.stringify(e)}`)}async function mL(t,e){try{let r=CA(e),n=new fL(t,r);return n.name="oidc",n}catch(r){throw new Error(`Error constructing OIDC authentication strategy - ${r}`)}}async function hL(t,e){try{let{clientID:r,clientSecret:n,configUrl:i,pkce:s}=t;if(!r||!n||!e||!i)throw new Error("Configuration invalid. Must contain clientID, clientSecret, callbackUrl and configUrl");let o=await(0,bA.default)(i);if(!o.ok)throw new Error(`Unexpected response when fetching openid-configuration: ${o.statusText}`);let a=await o.json();return{issuer:a.issuer,authorizationURL:a.authorization_endpoint,tokenURL:a.token_endpoint,userInfoURL:a.userinfo_endpoint,clientID:r,clientSecret:n,callbackURL:e,pkce:s}}catch(r){throw new Error(`Error constructing OIDC authentication configuration - ${r}`)}}async function EL(){return Cr("oidc")}var Hp={};P(Hp,{postAuth:()=>TL,preAuth:()=>yL});var gL=require("passport-google-oauth").OAuth2Strategy;async function xA(){let t=await vp();if(!t)throw new Error("No google configuration found");return t}async function yL(t,e,r){let n=await xA(),s=`${await Oo({tenantAware:!1})}/api/global/auth/datasource/google/callback`,o=await Yp(n,s,Ro);return e.query.appId||e.throw(400,"appId query param not present."),t.authenticate(o,{scope:["profile","email","https://www.googleapis.com/auth/spreadsheets"],accessType:"offline",prompt:"consent"})(e,r)}async function TL(t,e,r){let n=await xA(),s=`${await Oo({tenantAware:!1})}/api/global/auth/datasource/google/callback`,o=$t(e,"budibase:datasourceauth");if(!o)throw new Error("Unable to fetch datasource auth cookie");return t.authenticate(new gL({clientID:n.clientID,clientSecret:n.clientSecret,callbackURL:s},(a,u,c,l)=>{hr(e,"budibase:datasourceauth"),l(null,{accessToken:a,refreshToken:u})}),{successRedirect:"/",failureRedirect:"/error"},async(a,u)=>{let c=`/builder/app/${o.appId}/data`,l=re();await Vt(`datasource:creation:${o.appId}:google:${l}`,{tokens:u}),e.redirect(`${c}/new?continue_google_setup=${l}`)})(e,r)}var SL=/\/:(.*?)(\/.*)?$/g,Sn=t=>t?t.map(e=>{let r=e.route,n=e.method,i=r.match(SL);if(i)for(let s of i){let a="/.*"+(s.endsWith("/")?"/":"");r=r.replace(s,a)}return{regex:new RegExp(r),method:n,route:r}}):[],An=(t,e)=>e.find(({regex:r,method:n})=>{let i=r.test(t.request.url),s=n==="ALL"?!0:t.request.method.toLowerCase()===n.toLowerCase();return i&&s});var tm={};P(tm,{SecretOption:()=>NA,decrypt:()=>em,decryptFile:()=>DL,encrypt:()=>IL,encryptFile:()=>OL,getSecret:()=>Xp});var Ht=M(require("crypto")),xr=M(require("fs")),Jp=M(require("zlib"));var zp=require("path"),ec="aes-256-ctr",PA="-",AL=1e4,_L=32,tc=16,Zp=16,NA=(r=>(r.API="api",r.ENCRYPTION="encryption",r))(NA||{});function Xp(t){let e,r;switch(t){case"encryption":e=h.ENCRYPTION_KEY,r="ENCRYPTION_KEY";break;case"api":default:e=h.API_ENCRYPTION_KEY,r="API_ENCRYPTION_KEY";break}if(!e)throw new Error(`Secret "${r}" has not been set in environment.`);return e}function rc(t,e){return Ht.default.pbkdf2Sync(t,new Uint8Array(e),AL,_L,"sha512")}function IL(t,e="api"){let r=Ht.default.randomBytes(tc),n=rc(Xp(e),r),i=Ht.default.createCipheriv(ec,new Uint8Array(n),new Uint8Array(r)),s=i.update(t,"utf8"),o=i.final(),a=Buffer.concat([new Uint8Array(s),new Uint8Array(o)]).toString("hex");return`${r.toString("hex")}${PA}${a}`}function em(t,e="api"){let[r,n]=t.split(PA),i=Buffer.from(r,"hex"),s=rc(Xp(e),i),o=Ht.default.createDecipheriv(ec,new Uint8Array(s),new Uint8Array(i)),a=o.update(n,"hex"),u=o.final();return Buffer.concat([new Uint8Array(a),new Uint8Array(u)]).toString()}async function OL({dir:t,filename:e},r){let n=`${e}.enc`,i=(0,zp.join)(t,e);if(xr.default.lstatSync(i).isDirectory())throw new Error("Unable to encrypt directory");let s=xr.default.createReadStream(i),o=xr.default.createWriteStream((0,zp.join)(t,n)),a=Ht.default.randomBytes(tc),u=Ht.default.randomBytes(Zp),c=rc(r,a),l=Ht.default.createCipheriv(ec,new Uint8Array(c),new Uint8Array(u));return o.write(a),o.write(u),s.pipe(Jp.default.createGzip()).pipe(l).pipe(o),new Promise(d=>{o.on("finish",()=>{d({filename:n,dir:t})})})}async function wL(t){let e=xr.default.createReadStream(t),r=await vA(e,tc),n=await vA(e,Zp);return e.close(),{salt:r,iv:n}}async function DL(t,e,r){if(xr.default.lstatSync(t).isDirectory())throw new Error("Unable to encrypt directory");let{salt:n,iv:i}=await wL(t),s=xr.default.createReadStream(t,{start:tc+Zp}),o=xr.default.createWriteStream(e),a=rc(r,n),u=Ht.default.createDecipheriv(ec,new Uint8Array(a),new Uint8Array(i)),c=Jp.default.createGunzip();return s.pipe(u).pipe(c).pipe(o),new Promise((l,d)=>{o.on("finish",()=>{o.close(),l()}),s.on("error",f=>{o.close(),d(f)}),u.on("error",f=>{o.close(),d(f)}),c.on("error",f=>{o.close(),d(f)}),o.on("error",f=>{o.close(),d(f)})})}function vA(t,e){return new Promise((r,n)=>{let i=0,s=[];t.on("readable",()=>{let o;for(;(o=t.read(e-i))!==null;)s.push(o),i+=o.length;r(Buffer.concat(s.map(a=>new Uint8Array(a))))}),t.on("end",()=>{n(new Error("Insufficient data in the stream."))}),t.on("error",o=>{n(o)})})}var LA=M(require("dd-trace")),RL=h.SESSION_UPDATE_PERIOD?parseInt(h.SESSION_UPDATE_PERIOD):60*1e3;function bL(){return new Date(Date.now()-RL).toISOString()}function UA(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}async function CL(t,e){if(Vs(t))return{valid:!0,user:void 0};let n=em(t).split(R)[0];return be(n,async()=>{let i;try{let s=Y();i=await Ft("by_api_key",{key:t},s)}catch{i=void 0}if(i)return{valid:!0,user:await Ao({userId:i,tenantId:n,populateUser:e})};throw new fi})}function nc(t,e){let r=t.request.headers[e];if(Array.isArray(r))throw new Error("Unexpected header format");return r}function ic(t=[],e={publicAllowed:!1}){let r=t?Sn(t):[];return async(n,i)=>{let s=!1,o=nc(n,"x-budibase-api-version");An(n,r)&&(s=!0);try{let u=nc(n,"x-budibase-token"),c=$t(n,"budibase:auth")||nu(u),l=nc(n,"x-budibase-api-key");!l&&n.request.headers.authorization&&(l=n.request.headers.authorization.split(" ")[1]);let d=nc(n,"x-budibase-tenant-id"),f=!1,m,p=!1,E;if(c&&!l){let T=c.sessionId,_=c.userId,A;try{A=await Ep(_,T),e&&e.populateUser?m=await Ao({userId:_,tenantId:A.tenantId,email:A.email,populateUser:e.populateUser(n)}):m=await Ao({userId:_,tenantId:A.tenantId,email:A.email}),m.csrfToken=A.csrfToken,E="cookie",A?.lastAccessedAt<bL()&&await hp(A),f=!0}catch(w){f=!1,console.error(`Auth Error: ${w.message}`),hr(n,"budibase:auth")}}if(!f&&l){let T=e.populateUser?e.populateUser(n):null,{valid:_,user:A}=await CL(l,T);_&&(f=!0,E="api_key",m=A,p=!A)}!m&&d?m={tenantId:d}:m&&"password"in m&&delete m.password,f||(f=!1);let g=T=>T&&T.email;return g(m)&&LA.default.setUser({id:m._id,tenantId:m.tenantId,budibaseAccess:m.budibaseAccess,status:m.status}),UA(n,{authenticated:f,user:m,internal:p,version:o,publicEndpoint:s,loginMethod:E}),g(m)?Nd(m,n,i):i()}catch(u){if(console.error(`Auth Error: ${u.message}`),u?.name==="JsonWebTokenError"?hr(n,"budibase:auth"):u?.code==="invalid_api_key"&&n.throw(403,u.message),e&&e.publicAllowed||s)return UA(n,{authenticated:!1,version:o,publicEndpoint:s}),i();n.throw(u.status||403,u)}}}var sc=async(t,e)=>e();function oc(t,e,r={noTenancyRequired:!1}){let n=Sn(t),i=Sn(e);return async function(s,o){let u={allowNoTenant:r.noTenancyRequired||!!An(s,i)};!!An(s,n)||(u.excludeStrategies=["query"]);let l=$s(s,u);return s.set("x-budibase-tenant-id",l),be(l,o)}}async function ac(t,e){let r=t.request.headers["x-budibase-api-key"];return r||t.throw(403,"Unauthorized"),Array.isArray(r)&&t.throw(403,"Unauthorized"),Vs(r)||t.throw(403,"Unauthorized"),e()}var xL=["GET","HEAD","OPTIONS"],vL=["application/x-www-form-urlencoded","multipart/form-data","text/plain"];function uc(t={noCsrfPatterns:[]}){let e=Sn(t.noCsrfPatterns);return async(r,n)=>{if(An(r,e)||xL.indexOf(r.method)!==-1)return n();let s=r.get("content-type")?r.get("content-type").toLowerCase():"";if(!vL.filter(u=>s.includes(u)).length||r.internal)return n();let o=r.user?.csrfToken;if(!o)return n();let a=r.get("x-csrf-token");return(!a||a!==o)&&r.throw(403,"Invalid CSRF token"),n()}}var cc=async(t,e)=>(!t.internal&&!wr(t.user)&&t.throw(403,"Admin user only endpoint."),e());async function lc(t,e){let r=Ae(),n=h.isWorker()||!r?et:h.isApps()?pi:void 0;if(!n)throw new Error("Service name unknown - middleware inactive.");return!t.internal&&!n(t.user,r)&&!wr(t.user)&&t.throw(403,"Admin/Builder user only endpoint."),e()}async function dc(t,e){let r=Ae(),n;if(h.isWorker()||!r?n=et:h.isApps()&&(n=pi),!n)throw new Error("Service name unknown - middleware inactive.");return!t.internal&&!n(t.user,r)&&t.throw(403,"Builder user only endpoint."),e()}var PL=require("koa-pino-logger"),NL=require("correlation-id");function UL(){return{logger:hu,genReqId:NL.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})}}}function LL(){return h.HTTP_LOGGING?PL(UL()):(t,e)=>e()}var kA=LL();var MA=require("uuid"),kL=require("correlation-id"),FA=(t,e)=>{let r=t.headers["x-budibase-correlation-id"];return r||(r=(0,MA.v4)()),kL.withId(r,()=>e())};function BA(t){if(t.includes("-----BEGIN PRIVATE KEY-----"))return!0;for(let e of Ty){let r=h[e];if(!(typeof r!="string"||r==="")&&t.includes(r))return!0}return!1}async function $A(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(BA(JSON.stringify(i))&&(i={message:"Unexpected error",status:n,error:"Unexpected error"}),h.isTest()&&t.headers["x-budibase-include-stacktrace"]){let s=r;for(;s.cause;)s=s.cause;i.stack=s.stack}t.body=i}}function WA(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()}var GA=M(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'"]},ML=/^[A-Za-z0-9-*:/.]+$/,qA=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 o=await Us.getWorkspaceMetadata(t.appId);if("name"in o)for(let a of o.scripts||[]){let u=(a.cspWhitelist||"").split(`
|
|
38
|
+
`).filter(c=>ML.test(c));n["default-src"]=[...n["default-src"],...u]}}catch(o){console.error(`Error occurred in Content-Security-Policy middleware: ${o}`)}let s=Object.entries(n).map(([o,a])=>`${o} ${a.join(" ")}`).join("; ");t.set("Content-Security-Policy",s),await e()};var QA=async(t,e)=>{let n=$t(t,"budibase:featureflags")?.flags||{};await tf(n,async()=>{await e()})};var bo={};P(bo,{body:()=>FL,params:()=>BL});var rm=M(require("joi"));function KA(t,e,r){let n=r?.errorPrefix??`Invalid ${e}`;return(i,s)=>{if(!t)return s();let o=null,a=i.request?.[e];i[e]!=null?o=i[e]:a!=null&&(o=a),t.append&&(t=t.append({createdAt:rm.default.any().optional(),updatedAt:rm.default.any().optional()}));let{error:u}=t.validate(o,{allowUnknown:r?.allowUnknown});if(u){let c=u.message;n&&(c=`Invalid ${e} - ${c}`),i.throw(400,c)}return s()}}function FL(t,e){return KA(t,"body",e)}function BL(t,e){return KA(t,"params",e)}async function jA(t,e){return t.ip?await Jd(t.ip,()=>e()):e()}var $L={google:Hp};var YA=require("koa-passport"),WL=require("passport-local").Strategy,fc=require("passport-oauth2-refresh"),VL=ic,GL=oc,qL=uc,QL=YA;YA.use(new WL(gi.options,gi.authenticate));async function KL(t,e){let r=await Yt.getCallbackUrl(),n,i;try{if(n=await Yt.fetchStrategyConfig(t,r),!n)throw new Error("OIDC Config contents invalid");i=await Yt.strategyFactory(n,Ro)}catch{throw new Error("Could not refresh OAuth Token")}return fc.use(i,{setRefreshOAuth2(){return i._getOAuth2Client(n)}}),new Promise(s=>{fc.requestNewAccessToken("oidc",e,(o,a,u,c)=>{s({err:o,accessToken:a,refreshToken:u,params:c})})})}async function jL(t,e){let r=await jt.getCallbackUrl(t),n;try{n=await jt.strategyFactory(t,r,Ro)}catch(i){throw new Error(`Error constructing OIDC refresh strategy: message=${i.message}`)}return fc.use(n),new Promise(i=>{fc.requestNewAccessToken("google",e,(s,o,a,u)=>{i({err:s,accessToken:o,refreshToken:a,params:u})})})}async function YL(t,e,r){switch(e){case"oidc":{if(!r)return{err:{data:"OIDC config id not provided"}};let n=await Pp(r);return n?KL(n,t):{err:{data:"OIDC configuration not found"}}}case"google":{let n=await Qu();return n?jL(n,t):{err:{data:"Google configuration not found"}}}}}async function HL(t,e){let r={accessToken:e.accessToken,refreshToken:e.refreshToken};try{let n=Y(),i=await n.get(t);typeof r.refreshToken!="string"&&delete r.refreshToken,i.oauth2={...i.oauth2,...r},await n.put(i),await _o(t)}catch(n){console.error("Could not update OAuth details for current user",n)}}async function zL(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=$t(e,"budibase:auth"),s=await go(r);i&&n?s=s.filter(a=>a.sessionId!==i.sessionId):hr(e,"budibase:auth");let o=s.map(({sessionId:a})=>a);await En(r,{sessionIds:o,reason:"logout"}),await Du.logout(e.user?.email),await _o(r)}var om={};P(om,{validate:()=>t0});var b=M(require("joi")),JL=["Relational","Non-relational","Spreadsheet","Object store","Graph","API"];function sm(t,e){let{error:r}=t.validate(e);if(r)throw r}function ZL(t){let e=b.default.object({type:b.default.string().allow("component").required(),metadata:b.default.object().unknown(!0).required(),hash:b.default.string().optional(),version:b.default.string().optional(),schema:b.default.object({name:b.default.string().required(),settings:b.default.array().items(b.default.object().unknown(!0)).required()}).unknown(!0)});sm(e,t)}function XL(t){let e=b.default.object({type:b.default.string().allow(...Object.values(yc)).required(),required:b.default.boolean().required(),default:b.default.any(),display:b.default.string()}),r=b.default.object({type:b.default.string().allow(...Object.values(gc)),readable:b.default.boolean(),displayName:b.default.string(),fields:b.default.object().pattern(b.default.string(),e)}).required(),n=b.default.object({type:b.default.string().allow("datasource").required(),metadata:b.default.object().unknown(!0).required(),hash:b.default.string().optional(),version:b.default.string().optional(),schema:b.default.object({docs:b.default.string(),plus:b.default.boolean().optional(),isSQL:b.default.boolean().optional(),auth:b.default.object({type:b.default.string().required()}).optional(),features:b.default.object(Object.fromEntries(Object.values(Tc).map(i=>[i,b.default.boolean().optional()]))).optional(),relationships:b.default.boolean().optional(),description:b.default.string().required(),friendlyName:b.default.string().required(),type:b.default.string().allow(...JL),datasource:b.default.object().pattern(b.default.string(),e).required(),query:b.default.object().pattern(b.default.string(),r).unknown(!0).required(),extra:b.default.object().pattern(b.default.string(),b.default.object({type:b.default.string().required(),displayName:b.default.string().required(),required:b.default.boolean(),data:b.default.object()}))})});sm(n,t)}function e0(t){let e=b.default.object().pattern(b.default.string(),{type:b.default.string().allow(...Object.values(Sc)).required(),customType:b.default.string().allow(...Object.values(Ac)),title:b.default.string(),description:b.default.string(),enum:b.default.array().items(b.default.string()),pretty:b.default.array().items(b.default.string())}),r=b.default.object({properties:e,required:b.default.array().items(b.default.string())}).concat(e).required(),n=b.default.object({type:b.default.string().allow("automation").required(),metadata:b.default.object().unknown(!0).required(),hash:b.default.string().optional(),version:b.default.string().optional(),schema:b.default.object({name:b.default.string().required(),tagline:b.default.string().required(),icon:b.default.string().required(),description:b.default.string().required(),type:b.default.string().allow("ACTION","LOGIC").required(),stepId:b.default.string().disallow(...Cm).required(),inputs:b.default.object().optional(),schema:b.default.object({inputs:r,outputs:r}).required()})});sm(n,t)}function t0(t){switch(t?.type){case"component":ZL(t);break;case"datasource":XL(t);break;case"automation":e0(t);break;default:throw new Error(`Unknown plugin type - check schema.json: ${t.type}`)}}var am={};P(am,{Client:()=>Ce,clients:()=>pr,locks:()=>Ei,utils:()=>$a});var um={};P(um,{isBlacklisted:()=>n0,refreshBlacklist:()=>ZA});var HA=M(require("dns")),mc=M(require("net"));var zA=require("util"),pc,r0=(0,zA.promisify)(HA.default.lookup);async function JA(t){return mc.default.isIP(t)||(t.startsWith("http")||(t=`https://${t}`),t=new URL(t).hostname),(await r0(t,{all:!0})).map(r=>r.address)}async function ZA(){let e=h.BLACKLIST_IPS?.split(",")||[],r=[];for(let n of e){let i=n.trim();if(mc.default.isIP(i))r.push(i);else{let s=await JA(i);r=r.concat(s)}}pc=r}async function n0(t){if(pc||await ZA(),pc?.length===0)return!1;let e;return mc.default.isIP(t)?e=[t]:e=await JA(t),!!pc?.find(r=>e.includes(r))}var lm={};P(lm,{init:()=>s0});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 XA(t,e){let r=i0[t];if(!r)throw new Error("Event does not have a method of document ID extraction");return r(e)}var Co=class{constructor(e){this.processors=[];this.processors=e}async processEvent(e,r,n){let i=r.realTenantId,s=XA(e,n);if(!(!i||!s))for(let{events:o,processor:a}of this.processors)o.includes(e)&&await be(i,async()=>{await a({id:s,tenantId:i,appId:n.appId})})}shutdown(){return SS()}};var e_,cm;function s0(t){Qt||wu(),cm||(cm=new Co(t)),e_||(e_=Qt.process(async e=>{let{event:r,identity:n,properties:i}=e.data;await cm.processEvent(r,n,i)}))}var Tm={};P(Tm,{COUNT_FIELD_NAME:()=>gm,Sql:()=>c_,SqlTable:()=>hc,designDoc:()=>ym,utils:()=>qd});var i_=require("knex");var o0=require("knex");function dm(t){return["link","formula","ai"].indexOf(t)!==-1}function t_(t,e,r,n,i){let s=e&&e.primary?e.primary:[],o=Object.values(e.schema),a=o.filter(f=>f.meta),u=a.length===o.length,c=[];n||(u?t.primary(a.map(f=>f.name)):s.length===1?(t.increments(s[0]).primary(),c.push(s[0])):t.primary(s));let l=Object.values(e.schema).map(f=>f.foreignKey);for(let[f,m]of Object.entries(e.schema)){let p=n?.schema[f];if(p&&p.type||c.includes(f)||i?.updated===f)continue;let E=m.type;switch(E){case"string":case"options":case"longform":case"barcodeqr":case"bb_reference_single":s.includes(f)?t.string(f,255):t.text(f);break;case"number":if(m.meta&&m.meta.toKey&&m.meta.toTable){let{toKey:g,toTable:T}=m.meta;t.integer(f).unsigned(),t.foreign(f).references(`${T}.${g}`)}else l.indexOf(f)===-1&&t.float(f);break;case"bigint":t.bigint(f);break;case"boolean":t.boolean(f);break;case"datetime":m.timeOnly?t.time(f):t.datetime(f,{useTz:!m.ignoreTimezones});break;case"array":case"bb_reference":Pe.schema.isDeprecatedSingleUserColumn(m)?t.text(f):t.json(f);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:g}=Bd(m.tableId),T=r[g];if(!T||!T.primary)throw new Error("Referenced table doesn't exist or has no primary keys");let _=T.primary[0],A=T.schema[_].externalType;A?t.specificType(m.foreignKey,A):t.integer(m.foreignKey).unsigned(),t.foreign(m.foreignKey).references(`${g}.${_}`)}break;case"signature_single":case"attachment":case"attachment_single":t.json(f);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:Xt.unreachable(E)}}let d=i?n?.schema[i.old].type:void 0;return i&&d&&!dm(d)&&t.renameColumn(i.old,i.updated),n&&Object.entries(n.schema).filter(([m,p])=>!dm(p.type)&&e.schema[m]==null).forEach(([m,p])=>{i?.old===m||dm(p.type)||(n.constrained&&n.constrained.indexOf(m)!==-1&&t.dropForeign(m),t.dropColumn(m))}),t}function u0(t,e,r){return t.createTable(e.name,n=>{t_(n,e,r)})}function c0(t,e,r,n,i){return t.alterTable(e.name,s=>{t_(s,e,r,n,i)})}function l0(t,e){return t.dropTable(e.name)}var fm=class{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,o0.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=u0(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,s=e.meta.renamed.updated,o=e?.schema?`${e.schema}.${e.table.name}`:`${e.table.name}`,a=Kn(n);if(Array.isArray(a))for(let u of a)u.sql.startsWith("exec sp_rename")&&(u.sql=`exec sp_rename '${o}.${i}', '${s}', 'COLUMN'`,u.bindings=[]);return a}break;case"DELETE_TABLE":n=l0(r,e.table);break;default:throw new Error("Table operation is of unknown type")}return Kn(n)}},hc=fm;var s_=require("lodash"),gm="__bb_total";function r_(){return(h.SQL_MAX_ROWS?parseInt(h.SQL_MAX_ROWS):null)||5e3}function pm(){return(h.SQL_MAX_RELATED_ROWS?parseInt(h.SQL_MAX_RELATED_ROWS):null)||500}function d0(t,e){return t.sort((r,n)=>{let i=e.find(o=>o&&r.endsWith(o)),s=e.find(o=>o&&n.endsWith(o));return i&&!s?-1:!i&&s?1:r.localeCompare(n)})}function o_(t){return Array.isArray(t)?t.map(e=>o_(e)):(t.bindings&&(t.bindings=t.bindings.map(e=>typeof e=="boolean"?e?1:0:e)),t)}function n_(t){return t.sourceType==="internal"||t.sourceId===Oc}function f0(t,e='"'){return t.replace(new RegExp(e,"g"),`${e}${e}`)}function a_(t,e='"'){return`${e}${f0(t,e)}${e}`}function mm(t,e='"'){for(let r in t)typeof t[r]=="string"&&(t[r]=a_(t[r],e));return`[${t.join(",")}]`}function u_(t){return vm.includes(t.type)&&!Pe.schema.isDeprecatedSingleUserColumn(t)}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},hm=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 ar.ColumnSplitter([this.table],{aliases:this.query.tableAliases,columnPrefix:this.query.meta?.columnPrefix})}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(o=>{let a=o.split(/\./g),u,c=a[0];return a.length>1&&(u=a[0],c=a.slice(1).join(".")),{table:u,column:c,field:o}}).filter(({table:o})=>!o||o===n).map(({table:o,column:a,field:u})=>{let c=i[a];return this.SPECIAL_SELECT_CASES.POSTGRES_MONEY(c)?this.knex.raw("??::money::numeric as ??",[this.rawQuotedIdentifier([o,a].join(".")),this.knex.raw(this.quote(u))]):this.SPECIAL_SELECT_CASES.MSSQL_DATES(c)?this.knex.raw("CONVERT(varchar, ??, 108) as ??",[this.rawQuotedIdentifier(u),this.knex.raw(this.quote(u))]):o?this.rawQuotedIdentifier(`${o}.${a}`):this.rawQuotedIdentifier(u)})}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(),s=this.table.schema[i],o=this.rawQuotedIdentifier(e);return(s.type==="string"||s.type==="longform"||s.type==="bb_reference_single"||s.type==="bb_reference"||s.type==="options"||s.type==="barcodeqr")&&(r?.forSelect?o=this.knex.raw("to_char(??) as ??",[o,this.rawQuotedIdentifier(i)]):o=this.knex.raw("to_char(??)",[o])),o}parse(e,r){if(Array.isArray(e))return JSON.stringify(e);if(e==null)return null;if(this.requiresJsonAsStringClient()&&u_(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"),s=e.getSeconds().toString().padStart(2,"0");return`${n}:${i}:${s}`}if(typeof e=="string")return new Date(`1970-01-01T${e}Z`)}if(typeof e=="string"&&r.type==="datetime")if(r.timeOnly){if(!Vd(e))return null}else if(r.dateOnly){let n=Wd(e);return n?new Date(n):null}else return r.ignoreTimezones?Qa(e)?new Date(e):$d(e)?new Date(e+"Z"):null:Qa(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),s=this.table.schema[i];s&&(e[r]=this.parse(n,s))}return e}parseFilters(e){e=(0,s_.cloneDeep)(e);for(let r of Object.values(Nr)){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:s}=this.splitter.run(i),o=this.table.schema[s];o&&(n[i]=this.parse(n[i],o))}}for(let r of Object.values(Jt)){let n=e[r];if(n)for(let i of Object.keys(n)){let{column:s}=this.splitter.run(i),o=this.table.schema[s];o&&(n[i]=n[i].map(a=>this.parse(a,o)))}}for(let r of Object.values(In)){let n=e[r];if(n)for(let i of Object.keys(n)){let{column:s}=this.splitter.run(i),o=this.table.schema[s];if(!o)continue;let a=n[i];"low"in a&&(a.low=this.parse(a.low,o)),"high"in a&&(a.high=this.parse(a.high,o))}}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:s,schema:o,tableAliases:a,table:u}=this.query,c=a?.[u.name]||u.name,l=d=>n.match(new RegExp(`^${d}\\.`));if(!s)return e;for(let d of s){let f=d.tableName,m=a?.[f]||f,p=l(f)||l(m),E=l(d.column);if((p||E)&&d.to&&d.tableName){let g=this.knex.select(this.knex.raw(1)).from({[m]:f}),T=g.clone(),_=Gd(d),A;if(p?A=n:A=n.replace(new RegExp(`^${d.column}.`),`${a?.[d.tableName]||d.tableName}.`),_){let w=a?.[_.through]||d.through,y=this.tableNameWithSchema(_.through,{alias:w,schema:o});T=T.innerJoin(y,function(){this.on(`${m}.${_.toPrimary}`,"=",`${w}.${_.to}`)}).where(`${w}.${_.from}`,"=",this.rawQuotedIdentifier(`${c}.${_.fromPrimary}`)),this.client==="sqlite3"&&(T=this.addJoinFieldCheck(T,_)),e=e.where(I=>{I.whereExists(i(A,T)),r&&I.orWhereNotExists(g.clone().innerJoin(y,function(){this.on(`${c}.${_.fromPrimary}`,"=",`${w}.${_.from}`)}))})}else{let w=`${m}.${d.to}`,y=`${c}.${d.from}`;T=T.where(w,"=",this.rawQuotedIdentifier(y)),e=e.where(I=>{I.whereExists(i(A,T.clone())),r&&I.orWhereNotExists(T)})}}}return e}addFilters(e,r,n){if(!r)return e;let i=this;r=this.parseFilters({...r});let s=this.query.tableAliases,o=r.allOr,u=this.client==="sqlite3"?this.table._id:this.table.name;function c(p){return s?.[p]||p}function l(p,E,g,T){let _=(A,w,y)=>{let[I,...k]=w.split("."),v=k.join("."),L=c(I);return A.andWhere(j=>g(j,L?`${L}.${v}`:v,y))};for(let A in p){let w=p[A],y=Bs(A),I=y.includes("."),k=n?.relationship&&I,v;if(A==="_complexIdOperator"&&(v=p[A])&&T){let L=c(u);e=T(e,v.id.map(j=>L?`${L}.${j}`:j),v.values)}else if(I)k&&(o&&(e=e.or),e=i.addRelationshipForFilter(e,p0[E],y,(L,j)=>_(j,L,w)));else{let L=c(u);e=g(e,L?`${L}.${y}`:y,w)}}}let d=(p,E,g)=>((r?.fuzzyOr||o)&&(p=p.or),this.client==="oracledb"||this.client==="sqlite3"?p.whereRaw("LOWER(??) LIKE ?",[this.rawQuotedIdentifier(E),`%${g.toLowerCase()}%`]):p.whereILike(this.rawQuotedIdentifier(E),this.knex.raw("?",[`%${g}%`]))),f=(p,E=!1)=>{function g(T){return(o||p===r?.containsAny)&&(T=T.or),p===r?.notContains&&(T=T.not),T}this.client==="pg"?l(p,"contains",(T,_,A)=>{T=g(T);let w=this.getFieldSchema(_),y="::jsonb";return this.SPECIAL_SELECT_CASES.POSTGRES_ARRAY(w)&&(y="",A=`{${A.map(k=>k.substring(1,k.length-1))}}`),E?T.whereRaw(y?"COALESCE(??::jsonb \\?| array??, FALSE)":"COALESCE(?? && '??', FALSE)",[this.rawQuotedIdentifier(_),y?this.knex.raw(mm(A,"'")):this.knex.raw(A)]):T.whereRaw(`COALESCE(??${y} @> '??', FALSE)`,[this.rawQuotedIdentifier(_),y?this.knex.raw(mm(A)):this.knex.raw(A)])}):this.client==="mysql2"||this.client==="mariadb"?l(p,"contains",(T,_,A)=>g(T).whereRaw("COALESCE(?(??, ?), FALSE)",[this.knex.raw(E?"JSON_OVERLAPS":"JSON_CONTAINS"),this.rawQuotedIdentifier(_),this.knex.raw(a_(mm(A)))])):l(p,"contains",(T,_,A)=>(A.length===0||(T=T.where(w=>(p===r?.notContains&&(w=w.not),w=w.where(y=>{for(let I of A){p===r?.containsAny?y=y.or:y=y.and;let k=typeof I=="string"?`"${I.toLowerCase()}"`:I;y=y.whereLike(this.knex.raw("COALESCE(LOWER(??), '')",[this.rawQuotedIdentifier(_)]),`%${k}%`)}}),p===r?.notContains&&(w=w.or.whereNull(this.rawQuotedIdentifier(_))),w))),T))};if(r.$and){let{$and:p}=r;for(let E of p.conditions)e=e.where(g=>{this.addFilters(g,E,n)})}if(r.$or){let{$or:p}=r;e=e.where(E=>{for(let g of p.conditions)E.orWhere(T=>this.addFilters(T,{...g,allOr:!0},n))})}r.oneOf&&l(r.oneOf,"oneOf",(p,E,g)=>{let T=this.getFieldSchema(E),_=Array.isArray(g)?g:[g];if(o&&(p=p.or),this.client==="oracledb")E=this.convertClobs(E);else if(this.client==="sqlite3"&&T?.type==="datetime"&&T.dateOnly){for(let A of _)A!=null?p=p.or.whereLike(E,`${A.toISOString().slice(0,10)}%`):p=p.or.whereNull(E);return p}return p.whereIn(E,_)},(p,E,g)=>(o&&(p=p.or),this.client==="oracledb"&&(E=E.map(T=>this.convertClobs(T))),p.whereIn(E,Array.isArray(g)?g:[g]))),r.string&&l(r.string,"string",(p,E,g)=>{if(o&&(p=p.or),this.client==="oracledb"||this.client==="sqlite3")return p.whereRaw("LOWER(??) LIKE ?",[this.rawQuotedIdentifier(E),`${g.toLowerCase()}%`]);{let T=this.getFieldSchema(E);return this.SPECIAL_SELECT_CASES.POSTGRES_ENUM(T)?p.whereRaw(`??::text ilike '${g}%'`,[this.knex.raw(this.quote(T.name))]):p.whereILike(E,`${g}%`)}}),r.fuzzy&&l(r.fuzzy,"fuzzy",d),r.range&&l(r.range,"range",(p,E,g)=>{let T=v=>v&&Object.keys(v).length===0&&Object.getPrototypeOf(v)===Object.prototype;T(g.low)&&(g.low=""),T(g.high)&&(g.high="");let _=Ka(g.low),A=Ka(g.high),w=this.getFieldSchema(E),y=E,I=g.high,k=g.low;return this.client==="sqlite3"&&w?.type==="datetime"&&w.dateOnly&&(I!=null&&(I=`${I.toISOString().slice(0,10)}T23:59:59.999Z`),k!=null&&(k=k.toISOString().slice(0,10))),this.client==="oracledb"?y=this.convertClobs(E):this.client==="sqlite3"&&w?.type==="bigint"&&(y=this.knex.raw("CAST(?? AS INTEGER)",[this.rawQuotedIdentifier(E)]),I=this.knex.raw("CAST(? AS INTEGER)",[g.high]),k=this.knex.raw("CAST(? AS INTEGER)",[g.low])),o&&(p=p.or),_&&A?p.whereBetween(y,[k,I]):_?p.where(y,">=",k):A?p.where(y,"<=",I):p}),r.equal&&l(r.equal,"equal",(p,E,g)=>{let T=this.getFieldSchema(E);if(o&&(p=p.or),this.client==="mssql")return p.whereRaw("CASE WHEN ?? = ? THEN 1 ELSE 0 END = 1",[this.rawQuotedIdentifier(E),g]);if(this.client==="oracledb"){let _=this.convertClobs(E);return p.where(A=>A.whereNotNull(_).andWhere(_,g))}else return this.client==="sqlite3"&&T?.type==="datetime"&&T.dateOnly?g!=null?p.whereLike(E,`${g.toISOString().slice(0,10)}%`):p.whereNull(E):p.whereRaw("COALESCE(?? = ?, FALSE)",[this.rawQuotedIdentifier(E),g])}),r.notEqual&&l(r.notEqual,"notEqual",(p,E,g)=>{let T=this.getFieldSchema(E);if(o&&(p=p.or),this.client==="mssql")return p.whereRaw("CASE WHEN ?? = ? THEN 1 ELSE 0 END = 0",[this.rawQuotedIdentifier(E),g]);if(this.client==="oracledb"){let _=this.convertClobs(E);return p.where(A=>A.not.whereNull(_).and.where(_,"!=",g)).or.whereNull(_)}else return this.client==="sqlite3"&&T?.type==="datetime"&&T.dateOnly?g!=null?p.not.whereLike(E,`${g.toISOString().slice(0,10)}%`).or.whereNull(E):p.not.whereNull(E):p.whereRaw("COALESCE(?? != ?, TRUE)",[this.rawQuotedIdentifier(E),g])}),r.empty&&l(r.empty,"empty",(p,E)=>(o&&(p=p.or),p.whereNull(E))),r.notEmpty&&l(r.notEmpty,"notEmpty",(p,E)=>(o&&(p=p.or),p.whereNotNull(E))),r.contains&&f(r.contains),r.notContains&&f(r.notContains),r.containsAny&&f(r.containsAny,!0);let m=s?.[this.table._id]||this.table._id;return r.documentType&&!Fd(this.table)&&m&&e.andWhereLike(`${m}._id`,`${Zt(r.documentType)}%`),e}isSqs(){return n_(this.table)}getTableName(e){e||(e=this.table);let r=e.name;n_(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 ${gm}`)}addAggregations(e,r){let n=this.query.resource?.fields||[],i=this.getTableName();if(n.length>0){let s=n.map(o=>this.qualifyIdentifier(o));if(this.client==="oracledb"){let o=s.map(u=>this.convertClobs(u)),a=s.map(u=>this.convertClobs(u,{forSelect:!0}));e=e.groupBy(o).select(a)}else e=e.groupBy(s).select(s)}for(let s of r){let o=s.calculationType;if(o==="count")if("distinct"in s&&s.distinct)if(this.client==="oracledb"){let a=this.convertClobs(`${i}.${s.field}`);e=e.select(this.knex.raw("COUNT(DISTINCT ??) as ??",[a,s.name]))}else e=e.countDistinct(`${i}.${s.field} as ${s.name}`);else if(this.client==="oracledb"){let a=this.convertClobs(`${i}.${s.field}`);e=e.select(this.knex.raw("COUNT(??) as ??",[a,s.name]))}else e=e.count(`${s.field} as ${s.name}`);else{let a=this.getFieldSchema(s.field);if(!a)throw new Error(`field schema missing for aggregation target: ${s.field}`);let u=this.knex.raw("??(??)",[this.knex.raw(o),this.rawQuotedIdentifier(`${i}.${s.field}`)]);a.type==="bigint"&&(u=this.castIntToString(u)),e=e.select(this.knex.raw("?? as ??",[u,s.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,s=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[a,u]of Object.entries(r)){let c=u.direction==="ascending"?"asc":"desc",l;(this.client==="pg"||this.client==="oracledb")&&(l=u.direction==="ascending"?"first":"last");let d=`${s}.${a}`,f;this.isAggregateField(a)?f=this.rawQuotedIdentifier(a):this.client==="oracledb"?f=this.convertClobs(d):f=this.rawQuotedIdentifier(d),e=e.orderByRaw(`?? ?? ${l?"nulls ??":""}`,[f,this.knex.raw(c),...l?[this.knex.raw(l)]:[]])}if(!((n?.aggregations?.length??0)>0)&&(!r||r[i[0]]===void 0)){if(i[0]===void 0)throw new Error(`Primary key not found for table ${this.table.name}`);e=e.orderBy(`${s}.${i[0]}`)}return e}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],s,o;if(n.length>1){let c=n.shift();s=n.join("."),o=`${c}.${s}`}else s=n.join("."),o=s;this.query.meta?.columnPrefix&&(i=i.replace(this.query.meta.columnPrefix,""));let a=this.rawQuotedIdentifier(o),u=e.schema[i];return u&&u.type==="bigint"&&(a=this.castIntToString(a)),[s,a]}maxFunctionParameters(){switch(this.client){case"sqlite3":return 127;case"pg":return 100;default:return 200}}addJsonRelationships(e,r,n){let i=this.client,s=this.knex,{resource:o,tableAliases:a,schema:u,tables:c}=this.query,l=o?.fields||[];for(let d of n){let{tableName:f,through:m,to:p,from:E,fromPrimary:g,toPrimary:T}=d;if(!f||!r)continue;let _=c[f];if(!_)throw new Error(`related table "${f}" not found in datasource`);let A=a?.[f]||f,w=a?.[r]||r,y=m&&a?.[m]||m,I=this.tableNameWithSchema(f,{alias:A,schema:u}),k=[..._?.primary||[],_?.primaryDisplay].filter(B=>B),v=d0(l.filter(B=>B.split(".")[0]===A),k);v=v.slice(0,Math.floor(this.maxFunctionParameters()/2));let L=v.map(B=>this.buildJsonField(_,B));if(!L.length)continue;let j=L.map(B=>{let z=this.client==="oracledb"?" VALUE ":",";return this.knex.raw(`?${z}??`,[B[0],B[1]]).toString()}).join(","),Dt=`${A}.${T||p}`,F=s.from(I).orderBy(Dt),U=m&&T&&g,x=U?`${y}.${E}`:`${A}.${p}`,$=U?`${w}.${g}`:`${w}.${E}`;if(U){let B=this.tableNameWithSchema(m,{alias:y,schema:u});F=F.join(B,function(){this.on(`${A}.${T}`,"=",`${y}.${p}`)})}F=F.where(this.rawQuotedIdentifier(x),"=",this.rawQuotedIdentifier($));let O=B=>(F=F.select(v.map(z=>this.rawQuotedIdentifier(z))).limit(pm()),s.select(B).from({[A]:F})),G;switch(i){case"sqlite3":F=this.addJoinFieldCheck(F,d),G=O(this.knex.raw(`json_group_array(json_object(${j}))`));break;case"pg":G=O(this.knex.raw(`json_agg(json_build_object(${j}))`));break;case"mariadb":G=F.select(s.raw(`json_arrayagg(json_object(${j}) LIMIT ${pm()})`));break;case"mysql2":case"oracledb":G=O(this.knex.raw(`json_arrayagg(json_object(${j}))`));break;case"mssql":{let B=s.select("*").from({[w]:F.select(L.map(z=>s.ref(z[1]).as(z[0]))).limit(pm())});G=s.raw(`(SELECT ?? = (${B} FOR JSON PATH))`,[this.rawQuotedIdentifier(A)]);break}default:throw new Error(`JSON relationships not implement for ${i}`)}e=e.select({[d.column]:G})}return e}addJoin(e,r,n){let{tableAliases:i,schema:s}=this.query,o=r.to,a=r.from,u=r.through,c=i?.[o]||o,l=u&&i?.[u]||u,d=i?.[a]||a,f=this.tableNameWithSchema(o,{alias:c,schema:s}),m=u?this.tableNameWithSchema(u,{alias:l,schema:s}):void 0;return u?e=e.leftJoin(m,function(){for(let p of n){let E=p.fromPrimary,g=p.from;this.orOn(`${d}.${E}`,"=",`${l}.${g}`)}}).leftJoin(f,function(){for(let p of n){let E=p.toPrimary,g=p.to;this.orOn(`${c}.${E}`,`${l}.${g}`)}}):e=e.leftJoin(f,function(){for(let p of n){let E=p.from,g=p.to;this.orOn(`${d}.${E}`,"=",`${c}.${g}`)}}),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[s,o]of Object.entries(this.query.table.schema)){if(o.constraints?.presence===!0||o.type==="formula"||o.type==="auto"||o.type==="link"||o.type==="ai")continue;i[s]==null&&(i[s]=null)}else for(let[s,o]of Object.entries(i))o==null&&delete i[s];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:s,table:o}=this.query,{limits:a}=e,u=this.qualifiedKnex(),c=null,l=a?.query||a?.base;if(i&&i.page&&i.limit){let m=(i.page<=1?0:i.page-1)*i.limit;l=i.limit,c=m}else i&&i.offset&&i.limit?(l=i.limit,c=i.offset):i&&i.limit&&(l=i.limit);r!=="COUNT"&&(l!=null&&(u=u.limit(l)),c!=null&&(u=u.offset(c)));let d=this.query.resource?.aggregations||[];if(r==="COUNT"?u=this.addDistinctCount(u):d.length>0?u=this.addAggregations(u,d):u=u.select(this.generateSelectStatement()),r!=="COUNT"&&(u=this.addSorting(u)),u=this.addFilters(u,n,{relationship:!0}),s?.length&&d.length===0){let f=this.query.tableAliases?.[o.name]||o.name,m=this.addSorting(this.knex.with("paginated",u.clone().clearSelect().select("*")).select(this.generateSelectStatement()).from({[f]:"paginated"}));return this.addJsonRelationships(m,o.name,s)}return u}update(e){let{body:r,filters:n}=this.query;if(!r)throw new Error("Cannot update without row body");let i=this.qualifiedKnex(),s=this.parseBody(r);return i=this.addFilters(i,n),e.disableReturning?i.update(s):i.update(s).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())}},Em=class extends hc{constructor(r,n=r_()){super(r);this.limit=n}convertToNative(r,n={}){let i=this.getSqlClient();if(n?.disableBindings)return{sql:r.toString()};{let s=Kn(r);return i==="sqlite3"&&(s=o_(s)),s}}_query(r,n={}){let i=this.getSqlClient(),s={client:this.getBaseSqlClient()};(i==="sqlite3"||i==="oracledb")&&(s.useNullAsDefault=!0);let o=(0,i_.knex)(s),a,u=new hm(i,o,r);switch(this._operation(r)){case"CREATE":a=u.create(n);break;case"READ":a=u.read({limits:{query:this.limit,base:r_()}});break;case"COUNT":a=u.read();break;case"UPDATE":a=u.update(n);break;case"DELETE":a=u.delete(n);break;case"BULK_CREATE":a=u.bulkCreate();break;case"BULK_UPSERT":a=u.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(a,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=s=>s){let s=this.getSqlClient(),o=this._operation(r),a=this._query(r,{disableReturning:!0});if(Array.isArray(a)){let d=[];for(let f of a)d.push(await n(f,o));return d}let u;o==="DELETE"&&(u=i(await this.getReturningRow(n,r)));let c=await n(a,o),l=i(c);if(o==="CREATE"||o==="UPDATE"){let d;s==="mssql"?d=l?.[0].id:(s==="mysql2"||s==="mariadb")&&(d=l?.insertId),u=i(await this.getReturningRow(n,this.checkLookupKeys(d,r)))}return o==="COUNT"?l:o!=="READ"?u:l.length?l:[{[o.toLowerCase()]:!0}]}getTableName(r,n){let i=r.name;if(r.sourceType==="internal"||r.sourceId===Oc){if(!r._id)return;i=r._id}return n?.[i]||i}convertJsonStringColumns(r,n,i){let s=this.getTableName(r,i);for(let[o,a]of Object.entries(r.schema)){if(!u_(a))continue;let u=`${s}.${o}`;for(let c of n)typeof c[u]=="string"&&(c[u]=JSON.parse(c[u])),typeof c[o]=="string"&&(c[o]=JSON.parse(c[o]))}return n}log(r,n){As(this.getSqlClient(),r,n)}},c_=Em;var ym={};P(ym,{base:()=>m0});function m0(t){return{_id:It,language:"sqlite",sql:{tables:{},options:{table_name:t}}}}var Sm={};P(Sm,{jsonFromCsvString:()=>h0});var l_=M(require("csvtojson"));async function h0(t,e){let{ignoreEmpty:r=!1,allowSingleColumn:n=!1,possibleDelimiters:i=[",",";",":","|","~"," "," "]}=e||{};for(let s of i){let o,a=!1;try{let u=await(0,l_.default)({ignoreEmpty:r,delimiter:s}).fromString(t);for(let[,c]of u.entries()){let l=Object.keys(c);if(o==null&&(o=l),!n&&l.length===1){a=!0;break}if(o.length!==l.length){a=!0;break}for(let d of o)(c[d]===void 0||c[d]==="")&&(c[d]=null)}if(a)continue;return u}catch{continue}}throw new Error("Unable to determine delimiter")}var Am=class{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,s=this.controller,o=this.outputMiddlewares,a=()=>{},u=[n,...i,s,...o,a];e[r](...u)}},Ec=Am;var d_=M(require("@koa/router")),_n=class{constructor(){this.endpoints=[];this.middlewares=[];this.outputMiddlewares=[];this.applied=!1;this.locked=!1}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(),s=new Ec(e,r,i);if(n.length!==0)for(let o of n)s.addMiddleware(o);return this.endpoints.push(s),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 d_.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 xo=class{constructor(){this.groups=[]}group(...e){let r=new _n;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 E0={...Ws,...ae},g0=(t={})=>{Ga(t.db)};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
|