@budibase/cli 3.39.25 → 3.39.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -4412,7 +4412,7 @@ $1`)};iae.parseAttributes=s(function(e){return Object.keys(e).map(function(r){va
4412
4412
  Curabitur aliquet quam id dui posuere blandit. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Pellentesque in ipsum id orci porta dapibus. Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Nulla quis lorem ut libero malesuada feugiat. Proin eget tortor risus. Cras ultricies ligula sed magna dictum porta. Donec sollicitudin molestie malesuada. Pellentesque in ipsum id orci porta dapibus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Nulla quis lorem ut libero malesuada feugiat. Proin eget tortor risus. Curabitur aliquet quam id dui posuere blandit. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui.`;X$n.exports=kUa});var cPt=y((eKn,tKn)=>{"use strict";var th=Kh(),PQ=nae(),Ui=tKn.exports,PUa=Z$n();Ui.append=function(t,e){return typeof t=="string"&&typeof e=="string"?t+e:t};Ui.camelcase=function(t){return typeof t!="string"?"":PQ.changecase(t,function(e){return e.toUpperCase()})};Ui.capitalize=function(t){return typeof t!="string"?"":t.charAt(0).toUpperCase()+t.slice(1)};Ui.capitalizeAll=function(t){if(typeof t!="string")return"";if(th.isString(t))return t.replace(/\w\S*/g,function(e){return Ui.capitalize(e)})};Ui.center=function(t,e){if(typeof t!="string")return"";for(var r="",n=0;n<e;)r+="&nbsp;",n++;return r+t+r};Ui.chop=function(t){return typeof t!="string"?"":PQ.chop(t)};Ui.dashcase=function(t){return typeof t!="string"?"":PQ.changecase(t,function(e){return"-"+e})};Ui.dotcase=function(t){return typeof t!="string"?"":PQ.changecase(t,function(e){return"."+e})};Ui.downcase=function(){return Ui.lowercase.apply(this,arguments)};Ui.ellipsis=function(t,e){if(th.isString(t))return t.length<=e?t:Ui.truncate(t,e)+"\u2026"};Ui.hyphenate=function(t){return typeof t!="string"?"":t.split(" ").join("-")};Ui.isString=function(t){return typeof t=="string"};Ui.lowercase=function(t){return th.isObject(t)&&t.fn?t.fn(this).toLowerCase():typeof t!="string"?"":t.toLowerCase()};Ui.occurrences=function(t,e){if(typeof t!="string")return"";for(var r=e.length,n=0,i=0;(n=t.indexOf(e,n))>-1;)i++,n+=r;return i};Ui.pascalcase=function(t){return typeof t!="string"?"":(t=PQ.changecase(t,function(e){return e.toUpperCase()}),t.charAt(0).toUpperCase()+t.slice(1))};Ui.pathcase=function(t){return typeof t!="string"?"":PQ.changecase(t,function(e){return"/"+e})};Ui.plusify=function(t,e){return typeof t!="string"?"":(th.isString(e)||(e=" "),t.split(e).join("+"))};Ui.prepend=function(t,e){return typeof t=="string"&&typeof e=="string"?e+t:t};Ui.raw=function(t){var e=t.fn(),r=th.options(this,t);if(r.escape!==!1)for(var n=0;(n=e.indexOf("{{",n))!==-1;)e[n-1]!=="\\"&&(e=e.slice(0,n)+"\\"+e.slice(n)),n+=3;return e};Ui.remove=function(t,e){return typeof t!="string"?"":th.isString(e)?t.split(e).join(""):t};Ui.removeFirst=function(t,e){return typeof t!="string"?"":th.isString(e)?t.replace(e,""):t};Ui.replace=function(t,e,r){return typeof t!="string"?"":th.isString(e)?(th.isString(r)||(r=""),t.split(e).join(r)):t};Ui.replaceFirst=function(t,e,r){return typeof t!="string"?"":th.isString(e)?(th.isString(r)||(r=""),t.replace(e,r)):t};Ui.reverse=h5().reverse;Ui.sentence=function(t){return typeof t!="string"?"":t.replace(/((?:\S[^\.\?\!]*)[\.\?\!]*)/g,function(e){return e.charAt(0).toUpperCase()+e.substr(1).toLowerCase()})};Ui.snakecase=function(t){return typeof t!="string"?"":PQ.changecase(t,function(e){return"_"+e})};Ui.split=function(t,e){return typeof t!="string"?"":(th.isString(e)||(e=","),t.split(e))};Ui.startsWith=function(t,e,r){var n=[].slice.call(arguments);return r=n.pop(),th.isString(e)&&e.indexOf(t)===0?r.fn(this):typeof r.inverse=="function"?r.inverse(this):""};Ui.titleize=function(t){if(typeof t!="string")return"";for(var e=t.replace(/[- _]+/g," "),r=e.split(" "),n=r.length,i=[],o=0;n--;){var a=r[o++];i.push(eKn.capitalize(a))}return i.join(" ")};Ui.trim=function(t){return typeof t=="string"?t.trim():""};Ui.trimLeft=function(t){if(th.isString(t))return t.replace(/^\s+/,"")};Ui.trimRight=function(t){if(th.isString(t))return t.replace(/\s+$/,"")};Ui.truncate=function(t,e,r){if(th.isString(t))return typeof r!="string"&&(r=""),t.length>e?t.slice(0,e-r.length)+r:t};Ui.truncateWords=function(t,e,r){if(th.isString(t)&&!isNaN(e)){typeof r!="string"&&(r="\u2026");var n=Number(e),i=t.split(/[ \t]/);if(n>=i.length)return t;i=i.slice(0,n);var o=i.join(" ").trim();return o+r}};Ui.upcase=function(){return Ui.uppercase.apply(this,arguments)};Ui.uppercase=function(t){return th.isObject(t)&&t.fn?t.fn(this).toUpperCase():typeof t!="string"?"":t.toUpperCase()};Ui.lorem=function(t){return(isNaN(t)||t<1||!t)&&(t=11),PUa.substring(0,t)}});var fPt=y((mGc,rKn)=>{"use strict";var lPt=require("url"),lae=Kh(),LUa=require("querystring"),LQ=rKn.exports;LQ.encodeURI=function(t){if(lae.isString(t))return encodeURIComponent(t)};LQ.escape=function(t){if(lae.isString(t))return LUa.escape(t)};LQ.decodeURI=function(t){if(lae.isString(t))return decodeURIComponent(t)};LQ.urlResolve=function(t,e){return lPt.resolve(t,e)};LQ.urlParse=function(t){return lPt.parse(t)};LQ.stripQuerystring=function(t){if(lae.isString(t))return t.split("?")[0]};LQ.stripProtocol=function(t){if(lae.isString(t)){var e=lPt.parse(t);return e.protocol="",e.format()}}});function fae(){return TMe>SMe.length-16&&(nKn.default.randomFillSync(SMe),TMe=0),SMe.slice(TMe,TMe+=16)}var nKn,SMe,TMe,dPt=ie(()=>{"use strict";nKn=ge(require("crypto")),SMe=new Uint8Array(256),TMe=SMe.length;s(fae,"rng")});var iKn,sKn=ie(()=>{"use strict";iKn=/^(?:[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});function MUa(t){return typeof t=="string"&&iKn.test(t)}var Bk,dae=ie(()=>{"use strict";sKn();s(MUa,"validate");Bk=MUa});function MQ(t,e=0){return Xh[t[e+0]]+Xh[t[e+1]]+Xh[t[e+2]]+Xh[t[e+3]]+"-"+Xh[t[e+4]]+Xh[t[e+5]]+"-"+Xh[t[e+6]]+Xh[t[e+7]]+"-"+Xh[t[e+8]]+Xh[t[e+9]]+"-"+Xh[t[e+10]]+Xh[t[e+11]]+Xh[t[e+12]]+Xh[t[e+13]]+Xh[t[e+14]]+Xh[t[e+15]]}function UUa(t,e=0){let r=MQ(t,e);if(!Bk(r))throw TypeError("Stringified UUID is invalid");return r}var Xh,oKn,hae=ie(()=>{"use strict";dae();Xh=[];for(let t=0;t<256;++t)Xh.push((t+256).toString(16).slice(1));s(MQ,"unsafeStringify");s(UUa,"stringify");oKn=UUa});function FUa(t,e,r){let n=e&&r||0,i=e||new Array(16);t=t||{};let o=t.node||aKn,a=t.clockseq!==void 0?t.clockseq:hPt;if(o==null||a==null){let m=t.random||(t.rng||fae)();o==null&&(o=aKn=[m[0]|1,m[1],m[2],m[3],m[4],m[5]]),a==null&&(a=hPt=(m[6]<<8|m[7])&16383)}let u=t.msecs!==void 0?t.msecs:Date.now(),c=t.nsecs!==void 0?t.nsecs:gPt+1,l=u-pPt+(c-gPt)/1e4;if(l<0&&t.clockseq===void 0&&(a=a+1&16383),(l<0||u>pPt)&&t.nsecs===void 0&&(c=0),c>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");pPt=u,gPt=c,hPt=a,u+=122192928e5;let f=((u&268435455)*1e4+c)%4294967296;i[n++]=f>>>24&255,i[n++]=f>>>16&255,i[n++]=f>>>8&255,i[n++]=f&255;let d=u/4294967296*1e4&268435455;i[n++]=d>>>8&255,i[n++]=d&255,i[n++]=d>>>24&15|16,i[n++]=d>>>16&255,i[n++]=a>>>8|128,i[n++]=a&255;for(let m=0;m<6;++m)i[n+m]=o[m];return e||MQ(i)}var aKn,hPt,pPt,gPt,uKn,cKn=ie(()=>{"use strict";dPt();hae();pPt=0,gPt=0;s(FUa,"v1");uKn=FUa});function QUa(t){if(!Bk(t))throw TypeError("Invalid UUID");let e,r=new Uint8Array(16);return r[0]=(e=parseInt(t.slice(0,8),16))>>>24,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=e&255,r[4]=(e=parseInt(t.slice(9,13),16))>>>8,r[5]=e&255,r[6]=(e=parseInt(t.slice(14,18),16))>>>8,r[7]=e&255,r[8]=(e=parseInt(t.slice(19,23),16))>>>8,r[9]=e&255,r[10]=(e=parseInt(t.slice(24,36),16))/1099511627776&255,r[11]=e/4294967296&255,r[12]=e>>>24&255,r[13]=e>>>16&255,r[14]=e>>>8&255,r[15]=e&255,r}var IMe,mPt=ie(()=>{"use strict";dae();s(QUa,"parse");IMe=QUa});function qUa(t){t=unescape(encodeURIComponent(t));let e=[];for(let r=0;r<t.length;++r)e.push(t.charCodeAt(r));return e}function pae(t,e,r){function n(i,o,a,u){var c;if(typeof i=="string"&&(i=qUa(i)),typeof o=="string"&&(o=IMe(o)),((c=o)===null||c===void 0?void 0:c.length)!==16)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");let l=new Uint8Array(16+i.length);if(l.set(o),l.set(i,o.length),l=r(l),l[6]=l[6]&15|e,l[8]=l[8]&63|128,a){u=u||0;for(let f=0;f<16;++f)a[u+f]=l[f];return a}return MQ(l)}s(n,"generateUUID");try{n.name=t}catch{}return n.DNS=GUa,n.URL=jUa,n}var GUa,jUa,APt=ie(()=>{"use strict";hae();mPt();s(qUa,"stringToBytes");GUa="6ba7b810-9dad-11d1-80b4-00c04fd430c8",jUa="6ba7b811-9dad-11d1-80b4-00c04fd430c8";s(pae,"v35")});function VUa(t){return Array.isArray(t)?t=Buffer.from(t):typeof t=="string"&&(t=Buffer.from(t,"utf8")),lKn.default.createHash("md5").update(t).digest()}var lKn,fKn,dKn=ie(()=>{"use strict";lKn=ge(require("crypto"));s(VUa,"md5");fKn=VUa});var HUa,hKn,pKn=ie(()=>{"use strict";APt();dKn();HUa=pae("v3",48,fKn),hKn=HUa});var gKn,_Pt,mKn=ie(()=>{"use strict";gKn=ge(require("crypto")),_Pt={randomUUID:gKn.default.randomUUID}});function YUa(t,e,r){if(_Pt.randomUUID&&!e&&!t)return _Pt.randomUUID();t=t||{};let n=t.random||(t.rng||fae)();if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,e){r=r||0;for(let i=0;i<16;++i)e[r+i]=n[i];return e}return MQ(n)}var AKn,_Kn=ie(()=>{"use strict";mKn();dPt();hae();s(YUa,"v4");AKn=YUa});function WUa(t){return Array.isArray(t)?t=Buffer.from(t):typeof t=="string"&&(t=Buffer.from(t,"utf8")),EKn.default.createHash("sha1").update(t).digest()}var EKn,yKn,TKn=ie(()=>{"use strict";EKn=ge(require("crypto"));s(WUa,"sha1");yKn=WUa});var zUa,SKn,IKn=ie(()=>{"use strict";APt();TKn();zUa=pae("v5",80,yKn),SKn=zUa});var RKn,CKn=ie(()=>{"use strict";RKn="00000000-0000-0000-0000-000000000000"});function $Ua(t){if(!Bk(t))throw TypeError("Invalid UUID");return parseInt(t.slice(14,15),16)}var bKn,wKn=ie(()=>{"use strict";dae();s($Ua,"version");bKn=$Ua});var NKn={};Fi(NKn,{NIL:()=>RKn,parse:()=>IMe,stringify:()=>oKn,v1:()=>uKn,v3:()=>hKn,v4:()=>AKn,v5:()=>SKn,validate:()=>Bk,version:()=>bKn});var OKn=ie(()=>{"use strict";cKn();pKn();_Kn();IKn();CKn();wKn();dae();hae();mPt()});var EPt=y((d4c,xKn)=>{"use strict";var KUa=(OKn(),on(NKn)),JUa=xKn.exports;JUa.uuid=function(){return KUa.v4()}});var DKn=y((h4c,vKn)=>{"use strict";vKn.exports={array:h5(),code:L9n(),collection:J9n(),comparison:Qkt(),html:mzn(),i18n:_zn(),inflection:Tzn(),match:B$n(),math:oPt(),misc:L$n(),number:aPt(),object:cMe(),path:$$n(),regex:uPt(),string:cPt(),url:fPt(),uuid:EPt()}});var BKn=y((p4c,A5)=>{"use strict";var gae=DKn();A5.exports=s(function(e,r){typeof e=="string"?e=[e]:Array.isArray(e)||(r=e,e=null),r=r||{};var n=r.handlebars||r.hbs||Zoe();if(A5.exports.handlebars=n,e)e.forEach(function(i){n.registerHelper(gae[i])});else for(let i in gae){let o=gae[i];n.registerHelper(o)}return n.helpers},"helpers");for(let t in gae){let e=gae[t];A5.exports[t]=function(r){r=r||{};var n=r.handlebars||r.hbs||Zoe();return A5.exports.handlebars=n,n.registerHelper(e),e}}A5.exports.utils=nae()});var kKn=y((yPt,TPt)=>{"use strict";(function(t,e){typeof yPt=="object"&&typeof TPt<"u"?TPt.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_duration=e()})(yPt,(function(){"use strict";var t,e,r=1e3,n=6e4,i=36e5,o=864e5,a=/\[([^\]]+)]|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,u=31536e6,c=2628e6,l=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,f={years:u,months:c,days:o,hours:i,minutes:n,seconds:r,milliseconds:1,weeks:6048e5},d=s(function(P){return P instanceof B},"c"),m=s(function(P,x,V){return new B(P,V,x.$l)},"f"),A=s(function(P){return e.p(P)+"s"},"m"),T=s(function(P){return P<0},"l"),S=s(function(P){return T(P)?Math.ceil(P):Math.floor(P)},"$"),b=s(function(P){return Math.abs(P)},"y"),C=s(function(P,x){return P?T(P)?{negative:!0,format:""+b(P)+x}:{negative:!1,format:""+P+x}:{negative:!1,format:""}},"v"),B=(function(){function P(V,Y,j){var $=this;if(this.$d={},this.$l=j,V===void 0&&(this.$ms=0,this.parseFromMilliseconds()),Y)return m(V*f[A(Y)],this);if(typeof V=="number")return this.$ms=V,this.parseFromMilliseconds(),this;if(typeof V=="object")return Object.keys(V).forEach((function(Ie){$.$d[A(Ie)]=V[Ie]})),this.calMilliseconds(),this;if(typeof V=="string"){var ne=V.match(l);if(ne){var ee=ne.slice(2).map((function(Ie){return Ie!=null?Number(Ie):0}));return this.$d.years=ee[0],this.$d.months=ee[1],this.$d.weeks=ee[2],this.$d.days=ee[3],this.$d.hours=ee[4],this.$d.minutes=ee[5],this.$d.seconds=ee[6],this.calMilliseconds(),this}}return this}s(P,"l");var x=P.prototype;return x.calMilliseconds=function(){var V=this;this.$ms=Object.keys(this.$d).reduce((function(Y,j){return Y+(V.$d[j]||0)*f[j]}),0)},x.parseFromMilliseconds=function(){var V=this.$ms;this.$d.years=S(V/u),V%=u,this.$d.months=S(V/c),V%=c,this.$d.days=S(V/o),V%=o,this.$d.hours=S(V/i),V%=i,this.$d.minutes=S(V/n),V%=n,this.$d.seconds=S(V/r),V%=r,this.$d.milliseconds=V},x.toISOString=function(){var V=C(this.$d.years,"Y"),Y=C(this.$d.months,"M"),j=+this.$d.days||0;this.$d.weeks&&(j+=7*this.$d.weeks);var $=C(j,"D"),ne=C(this.$d.hours,"H"),ee=C(this.$d.minutes,"M"),Ie=this.$d.seconds||0;this.$d.milliseconds&&(Ie+=this.$d.milliseconds/1e3,Ie=Math.round(1e3*Ie)/1e3);var M=C(Ie,"S"),H=V.negative||Y.negative||$.negative||ne.negative||ee.negative||M.negative,K=ne.format||ee.format||M.format?"T":"",Q=(H?"-":"")+"P"+V.format+Y.format+$.format+K+ne.format+ee.format+M.format;return Q==="P"||Q==="-P"?"P0D":Q},x.toJSON=function(){return this.toISOString()},x.format=function(V){var Y=V||"YYYY-MM-DDTHH:mm:ss",j={Y:this.$d.years,YY:e.s(this.$d.years,2,"0"),YYYY:e.s(this.$d.years,4,"0"),M:this.$d.months,MM:e.s(this.$d.months,2,"0"),D:this.$d.days,DD:e.s(this.$d.days,2,"0"),H:this.$d.hours,HH:e.s(this.$d.hours,2,"0"),m:this.$d.minutes,mm:e.s(this.$d.minutes,2,"0"),s:this.$d.seconds,ss:e.s(this.$d.seconds,2,"0"),SSS:e.s(this.$d.milliseconds,3,"0")};return Y.replace(a,(function($,ne){return ne||String(j[$])}))},x.as=function(V){return this.$ms/f[A(V)]},x.get=function(V){var Y=this.$ms,j=A(V);return j==="milliseconds"?Y%=1e3:Y=j==="weeks"?S(Y/f[j]):this.$d[j],Y||0},x.add=function(V,Y,j){var $;return $=Y?V*f[A(Y)]:d(V)?V.$ms:m(V,this).$ms,m(this.$ms+$*(j?-1:1),this)},x.subtract=function(V,Y){return this.add(V,Y,!0)},x.locale=function(V){var Y=this.clone();return Y.$l=V,Y},x.clone=function(){return m(this.$ms,this)},x.humanize=function(V){return t().add(this.$ms,"ms").locale(this.$l).fromNow(!V)},x.valueOf=function(){return this.asMilliseconds()},x.milliseconds=function(){return this.get("milliseconds")},x.asMilliseconds=function(){return this.as("milliseconds")},x.seconds=function(){return this.get("seconds")},x.asSeconds=function(){return this.as("seconds")},x.minutes=function(){return this.get("minutes")},x.asMinutes=function(){return this.as("minutes")},x.hours=function(){return this.get("hours")},x.asHours=function(){return this.as("hours")},x.days=function(){return this.get("days")},x.asDays=function(){return this.as("days")},x.weeks=function(){return this.get("weeks")},x.asWeeks=function(){return this.as("weeks")},x.months=function(){return this.get("months")},x.asMonths=function(){return this.as("months")},x.years=function(){return this.get("years")},x.asYears=function(){return this.as("years")},P})(),k=s(function(P,x,V){return P.add(x.years()*V,"y").add(x.months()*V,"M").add(x.days()*V,"d").add(x.hours()*V,"h").add(x.minutes()*V,"m").add(x.seconds()*V,"s").add(x.milliseconds()*V,"ms")},"p");return function(P,x,V){t=V,e=V().$utils(),V.duration=function($,ne){var ee=V.locale();return m($,{$l:ee},ne)},V.isDuration=d;var Y=x.prototype.add,j=x.prototype.subtract;x.prototype.add=function($,ne){return d($)?k(this,$,1):Y.bind(this)($,ne)},x.prototype.subtract=function($,ne){return d($)?k(this,$,-1):j.bind(this)($,ne)}}}))});var PKn=y((SPt,IPt)=>{"use strict";(function(t,e){typeof SPt=="object"&&typeof IPt<"u"?IPt.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_advancedFormat=e()})(SPt,(function(){"use strict";return function(t,e){var r=e.prototype,n=r.format;r.format=function(i){var o=this,a=this.$locale();if(!this.isValid())return n.bind(this)(i);var u=this.$utils(),c=(i||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,(function(l){switch(l){case"Q":return Math.ceil((o.$M+1)/3);case"Do":return a.ordinal(o.$D);case"gggg":return o.weekYear();case"GGGG":return o.isoWeekYear();case"wo":return a.ordinal(o.week(),"W");case"w":case"ww":return u.s(o.week(),l==="w"?1:2,"0");case"W":case"WW":return u.s(o.isoWeek(),l==="W"?1:2,"0");case"k":case"kk":return u.s(String(o.$H===0?24:o.$H),l==="k"?1:2,"0");case"X":return Math.floor(o.$d.getTime()/1e3);case"x":return o.$d.getTime();case"z":return"["+o.offsetName()+"]";case"zzz":return"["+o.offsetName("long")+"]";default:return l}}));return n.bind(this)(c)}}}))});var LKn=y((RPt,CPt)=>{"use strict";(function(t,e){typeof RPt=="object"&&typeof CPt<"u"?CPt.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_isoWeek=e()})(RPt,(function(){"use strict";var t="day";return function(e,r,n){var i=s(function(u){return u.add(4-u.isoWeekday(),t)},"a"),o=r.prototype;o.isoWeekYear=function(){return i(this).year()},o.isoWeek=function(u){if(!this.$utils().u(u))return this.add(7*(u-this.isoWeek()),t);var c,l,f,d,m=i(this),A=(c=this.isoWeekYear(),l=this.$u,f=(l?n.utc:n)().year(c).startOf("year"),d=4-f.isoWeekday(),f.isoWeekday()>4&&(d+=7),f.add(d,t));return m.diff(A,"week")+1},o.isoWeekday=function(u){return this.$utils().u(u)?this.day()||7:this.day(this.day()%7?u:u-7)};var a=o.startOf;o.startOf=function(u,c){var l=this.$utils(),f=!!l.u(c)||c;return l.p(u)==="isoweek"?f?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):a.bind(this)(u,c)}}}))});var MKn=y((bPt,wPt)=>{"use strict";(function(t,e){typeof bPt=="object"&&typeof wPt<"u"?wPt.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_weekYear=e()})(bPt,(function(){"use strict";return function(t,e){e.prototype.weekYear=function(){var r=this.month(),n=this.week(),i=this.year();return n===1&&r===11?i+1:r===0&&n>=52?i-1:i}}}))});var UKn=y((NPt,OPt)=>{"use strict";(function(t,e){typeof NPt=="object"&&typeof OPt<"u"?OPt.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_weekOfYear=e()})(NPt,(function(){"use strict";var t="week",e="year";return function(r,n,i){var o=n.prototype;o.week=function(a){if(a===void 0&&(a=null),a!==null)return this.add(7*(a-this.week()),"day");var u=this.$locale().yearStart||1;if(this.month()===11&&this.date()>25){var c=i(this).startOf(e).add(1,e).date(u),l=i(this).endOf(t);if(c.isBefore(l))return 1}var f=i(this).startOf(e).date(u).startOf(t).subtract(1,"millisecond"),d=this.diff(f,t,!0);return d<0?i(this).startOf("week").week():Math.ceil(d)},o.weeks=function(a){return a===void 0&&(a=null),this.week(a)}}}))});var FKn=y((xPt,vPt)=>{"use strict";(function(t,e){typeof xPt=="object"&&typeof vPt<"u"?vPt.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_relativeTime=e()})(xPt,(function(){"use strict";return function(t,e,r){t=t||{};var n=e.prototype,i={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function o(u,c,l,f){return n.fromToBase(u,c,l,f)}s(o,"i"),r.en.relativeTime=i,n.fromToBase=function(u,c,l,f,d){for(var m,A,T,S=l.$locale().relativeTime||i,b=t.thresholds||[{l:"s",r:44,d:"second"},{l:"m",r:89},{l:"mm",r:44,d:"minute"},{l:"h",r:89},{l:"hh",r:21,d:"hour"},{l:"d",r:35},{l:"dd",r:25,d:"day"},{l:"M",r:45},{l:"MM",r:10,d:"month"},{l:"y",r:17},{l:"yy",d:"year"}],C=b.length,B=0;B<C;B+=1){var k=b[B];k.d&&(m=f?r(u).diff(l,k.d,!0):l.diff(u,k.d,!0));var P=(t.rounding||Math.round)(Math.abs(m));if(T=m>0,P<=k.r||!k.r){P<=1&&B>0&&(k=b[B-1]);var x=S[k.l];d&&(P=d(""+P)),A=typeof x=="string"?x.replace("%d",P):x(P,c,k.l,T);break}}if(c)return A;var V=T?S.future:S.past;return typeof V=="function"?V(A):V.replace("%s",A)},n.to=function(u,c){return o(u,c,this,!0)},n.from=function(u,c){return o(u,c,this)};var a=s(function(u){return u.$u?r.utc():r()},"d");n.toNow=function(u){return this.to(a(this),u)},n.fromNow=function(u){return this.from(a(this),u)}}}))});var QKn=y((DPt,BPt)=>{"use strict";(function(t,e){typeof DPt=="object"&&typeof BPt<"u"?BPt.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_utc=e()})(DPt,(function(){"use strict";var t="minute",e=/[+-]\d\d(?::?\d\d)?/g,r=/([+-]|\d\d)/g;return function(n,i,o){var a=i.prototype;o.utc=function(A){var T={date:A,utc:!0,args:arguments};return new i(T)},a.utc=function(A){var T=o(this.toDate(),{locale:this.$L,utc:!0});return A?T.add(this.utcOffset(),t):T},a.local=function(){return o(this.toDate(),{locale:this.$L,utc:!1})};var u=a.parse;a.parse=function(A){A.utc&&(this.$u=!0),this.$utils().u(A.$offset)||(this.$offset=A.$offset),u.call(this,A)};var c=a.init;a.init=function(){if(this.$u){var A=this.$d;this.$y=A.getUTCFullYear(),this.$M=A.getUTCMonth(),this.$D=A.getUTCDate(),this.$W=A.getUTCDay(),this.$H=A.getUTCHours(),this.$m=A.getUTCMinutes(),this.$s=A.getUTCSeconds(),this.$ms=A.getUTCMilliseconds()}else c.call(this)};var l=a.utcOffset;a.utcOffset=function(A,T){var S=this.$utils().u;if(S(A))return this.$u?0:S(this.$offset)?l.call(this):this.$offset;if(typeof A=="string"&&(A=(function(k){k===void 0&&(k="");var P=k.match(e);if(!P)return null;var x=(""+P[0]).match(r)||["-",0,0],V=x[0],Y=60*+x[1]+ +x[2];return Y===0?0:V==="+"?Y:-Y})(A),A===null))return this;var b=Math.abs(A)<=16?60*A:A;if(b===0)return this.utc(T);var C=this.clone();if(T)return C.$offset=b,C.$u=!1,C;var B=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();return(C=this.local().add(b+B,t)).$offset=b,C.$x.$localOffset=B,C};var f=a.format;a.format=function(A){var T=A||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return f.call(this,T)},a.valueOf=function(){var A=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*A},a.isUTC=function(){return!!this.$u},a.toISOString=function(){return this.toDate().toISOString()},a.toString=function(){return this.toDate().toUTCString()};var d=a.toDate;a.toDate=function(A){return A==="s"&&this.$offset?o(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():d.call(this)};var m=a.diff;a.diff=function(A,T,S){if(A&&this.$u===A.$u)return m.call(this,A,T,S);var b=this.local(),C=o(A).local();return m.call(b,C,T,S)}}}))});var qKn=y((kPt,PPt)=>{"use strict";(function(t,e){typeof kPt=="object"&&typeof PPt<"u"?PPt.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_timezone=e()})(kPt,(function(){"use strict";var t={year:0,month:1,day:2,hour:3,minute:4,second:5},e={};return function(r,n,i){var o,a=s(function(f,d,m){m===void 0&&(m={});var A=new Date(f),T=(function(S,b){b===void 0&&(b={});var C=b.timeZoneName||"short",B=S+"|"+C,k=e[B];return k||(k=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:S,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:C}),e[B]=k),k})(d,m);return T.formatToParts(A)},"a"),u=s(function(f,d){for(var m=a(f,d),A=[],T=0;T<m.length;T+=1){var S=m[T],b=S.type,C=S.value,B=t[b];B>=0&&(A[B]=parseInt(C,10))}var k=A[3],P=k===24?0:k,x=A[0]+"-"+A[1]+"-"+A[2]+" "+P+":"+A[4]+":"+A[5]+":000",V=+f;return(i.utc(x).valueOf()-(V-=V%1e3))/6e4},"u"),c=n.prototype;c.tz=function(f,d){f===void 0&&(f=o);var m,A=this.utcOffset(),T=this.toDate(),S=T.toLocaleString("en-US",{timeZone:f}),b=Math.round((T-new Date(S))/1e3/60),C=15*-Math.round(T.getTimezoneOffset()/15)-b;if(!Number(C))m=this.utcOffset(0,d);else if(m=i(S,{locale:this.$L}).$set("millisecond",this.$ms).utcOffset(C,!0),d){var B=m.utcOffset();m=m.add(A-B,"minute")}return m.$x.$timezone=f,m},c.offsetName=function(f){var d=this.$x.$timezone||i.tz.guess(),m=a(this.valueOf(),d,{timeZoneName:f}).find((function(A){return A.type.toLowerCase()==="timezonename"}));return m&&m.value};var l=c.startOf;c.startOf=function(f,d){if(!this.$x||!this.$x.$timezone)return l.call(this,f,d);var m=i(this.format("YYYY-MM-DD HH:mm:ss:SSS"),{locale:this.$L});return l.call(m,f,d).tz(this.$x.$timezone,!0)},i.tz=function(f,d,m){var A=m&&d,T=m||d||o,S=u(+i(),T);if(typeof f!="string")return i(f).tz(T);var b=(function(P,x,V){var Y=P-60*x*1e3,j=u(Y,V);if(x===j)return[Y,x];var $=u(Y-=60*(j-x)*1e3,V);return j===$?[Y,j]:[P-60*Math.min(j,$)*1e3,Math.max(j,$)]})(i.utc(f,A).valueOf(),S,T),C=b[0],B=b[1],k=i(C).utcOffset(B);return k.$x.$timezone=T,k},i.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},i.tz.setDefault=function(f){o=f}}}))});var m7n=y(o_=>{"use strict";o_.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"};o_.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"],4:["fill","setWith","updateWith"]};o_.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};o_.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2};o_.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};o_.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]};o_.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}};o_.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}};o_.realToAlias=(function(){var t=Object.prototype.hasOwnProperty,e=o_.aliasToReal,r={};for(var n in e){var i=e[n];t.call(r,i)?r[i].push(n):r[i]=[n]}return r})();o_.remap={assignAll:"assign",assignAllWith:"assignWith",assignInAll:"assignIn",assignInAllWith:"assignInWith",curryN:"curry",curryRightN:"curryRight",defaultsAll:"defaults",defaultsDeepAll:"defaultsDeep",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",mergeAll:"merge",mergeAllWith:"mergeWith",padChars:"pad",padCharsEnd:"padEnd",padCharsStart:"padStart",propertyOf:"get",rangeStep:"range",rangeStepRight:"rangeRight",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart",zipAll:"zip"};o_.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};o_.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}});var VPt=y((Q4c,A7n)=>{"use strict";A7n.exports={}});var T7n=y((q4c,y7n)=>{"use strict";var sd=m7n(),iFa=VPt(),_7n=Array.prototype.push;function sFa(t,e){return e==2?function(r,n){return t.apply(void 0,arguments)}:function(r){return t.apply(void 0,arguments)}}s(sFa,"baseArity");function HPt(t,e){return e==2?function(r,n){return t(r,n)}:function(r){return t(r)}}s(HPt,"baseAry");function E7n(t){for(var e=t?t.length:0,r=Array(e);e--;)r[e]=t[e];return r}s(E7n,"cloneArray");function oFa(t){return function(e){return t({},e)}}s(oFa,"createCloner");function aFa(t,e){return function(){for(var r=arguments.length,n=r-1,i=Array(r);r--;)i[r]=arguments[r];var o=i[e],a=i.slice(0,e);return o&&_7n.apply(a,o),e!=n&&_7n.apply(a,i.slice(e+1)),t.apply(this,a)}}s(aFa,"flatSpread");function YPt(t,e){return function(){var r=arguments.length;if(r){for(var n=Array(r);r--;)n[r]=arguments[r];var i=n[0]=e.apply(void 0,n);return t.apply(void 0,n),i}}}s(YPt,"wrapImmutable");function WPt(t,e,r,n){var i=typeof e=="function",o=e===Object(e);if(o&&(n=r,r=e,e=void 0),r==null)throw new TypeError;n||(n={});var a={cap:"cap"in n?n.cap:!0,curry:"curry"in n?n.curry:!0,fixed:"fixed"in n?n.fixed:!0,immutable:"immutable"in n?n.immutable:!0,rearg:"rearg"in n?n.rearg:!0},u=i?r:iFa,c="curry"in n&&n.curry,l="fixed"in n&&n.fixed,f="rearg"in n&&n.rearg,d=i?r.runInContext():void 0,m=i?r:{ary:t.ary,assign:t.assign,clone:t.clone,curry:t.curry,forEach:t.forEach,isArray:t.isArray,isError:t.isError,isFunction:t.isFunction,isWeakMap:t.isWeakMap,iteratee:t.iteratee,keys:t.keys,rearg:t.rearg,toInteger:t.toInteger,toPath:t.toPath},A=m.ary,T=m.assign,S=m.clone,b=m.curry,C=m.forEach,B=m.isArray,k=m.isError,P=m.isFunction,x=m.isWeakMap,V=m.keys,Y=m.rearg,j=m.toInteger,$=m.toPath,ne=V(sd.aryMethod),ee={castArray:s(function(Te){return function(){var de=arguments[0];return B(de)?Te(E7n(de)):Te.apply(void 0,arguments)}},"castArray"),iteratee:s(function(Te){return function(){var de=arguments[0],ke=arguments[1],Le=Te(de,ke),qe=Le.length;return a.cap&&typeof ke=="number"?(ke=ke>2?ke-2:1,qe&&qe<=ke?Le:HPt(Le,ke)):Le}},"iteratee"),mixin:s(function(Te){return function(de){var ke=this;if(!P(ke))return Te(ke,Object(de));var Le=[];return C(V(de),function(qe){P(de[qe])&&Le.push([qe,ke.prototype[qe]])}),Te(ke,Object(de)),C(Le,function(qe){var wt=qe[1];P(wt)?ke.prototype[qe[0]]=wt:delete ke.prototype[qe[0]]}),ke}},"mixin"),nthArg:s(function(Te){return function(de){var ke=de<0?1:j(de)+1;return b(Te(de),ke)}},"nthArg"),rearg:s(function(Te){return function(de,ke){var Le=ke?ke.length:0;return b(Te(de,ke),Le)}},"rearg"),runInContext:s(function(Te){return function(de){return WPt(t,Te(de),n)}},"runInContext")};function Ie(Te,de){if(a.cap){var ke=sd.iterateeRearg[Te];if(ke)return Ee(de,ke);var Le=!i&&sd.iterateeAry[Te];if(Le)return Z(de,Le)}return de}s(Ie,"castCap");function M(Te,de,ke){return c||a.curry&&ke>1?b(de,ke):de}s(M,"castCurry");function H(Te,de,ke){if(a.fixed&&(l||!sd.skipFixed[Te])){var Le=sd.methodSpread[Te],qe=Le&&Le.start;return qe===void 0?A(de,ke):aFa(de,qe)}return de}s(H,"castFixed");function K(Te,de,ke){return a.rearg&&ke>1&&(f||!sd.skipRearg[Te])?Y(de,sd.methodRearg[Te]||sd.aryRearg[ke]):de}s(K,"castRearg");function Q(Te,de){de=$(de);for(var ke=-1,Le=de.length,qe=Le-1,wt=S(Object(Te)),ct=wt;ct!=null&&++ke<Le;){var Ct=de[ke],rr=ct[Ct];rr!=null&&!(P(rr)||k(rr)||x(rr))&&(ct[Ct]=S(ke==qe?rr:Object(rr))),ct=ct[Ct]}return wt}s(Q,"cloneByPath");function U(Te){return ue.runInContext.convert(Te)(void 0)}s(U,"convertLib");function Se(Te,de){var ke=sd.aliasToReal[Te]||Te,Le=sd.remap[ke]||ke,qe=n;return function(wt){var ct=i?d:m,Ct=i?d[Le]:de,rr=T(T({},qe),wt);return WPt(ct,ke,Ct,rr)}}s(Se,"createConverter");function Z(Te,de){return Fe(Te,function(ke){return typeof ke=="function"?HPt(ke,de):ke})}s(Z,"iterateeAry");function Ee(Te,de){return Fe(Te,function(ke){var Le=de.length;return sFa(Y(HPt(ke,Le),de),Le)})}s(Ee,"iterateeRearg");function Fe(Te,de){return function(){var ke=arguments.length;if(!ke)return Te();for(var Le=Array(ke);ke--;)Le[ke]=arguments[ke];var qe=a.rearg?0:ke-1;return Le[qe]=de(Le[qe]),Te.apply(void 0,Le)}}s(Fe,"overArg");function Be(Te,de,ke){var Le,qe=sd.aliasToReal[Te]||Te,wt=de,ct=ee[qe];return ct?wt=ct(de):a.immutable&&(sd.mutate.array[qe]?wt=YPt(de,E7n):sd.mutate.object[qe]?wt=YPt(de,oFa(de)):sd.mutate.set[qe]&&(wt=YPt(de,Q))),C(ne,function(Ct){return C(sd.aryMethod[Ct],function(rr){if(qe==rr){var $t=sd.methodSpread[qe],Nr=$t&&$t.afterRearg;return Le=Nr?H(qe,K(qe,wt,Ct),Ct):K(qe,H(qe,wt,Ct),Ct),Le=Ie(qe,Le),Le=M(qe,Le,Ct),!1}}),!Le}),Le||(Le=wt),Le==de&&(Le=c?b(Le,1):function(){return de.apply(this,arguments)}),Le.convert=Se(qe,de),Le.placeholder=de.placeholder=ke,Le}if(s(Be,"wrap"),!o)return Be(e,r,u);var ue=r,xe=[];return C(ne,function(Te){C(sd.aryMethod[Te],function(de){var ke=ue[sd.remap[de]||de];ke&&xe.push([de,Be(de,ke,ue)])})}),C(V(ue),function(Te){var de=ue[Te];if(typeof de=="function"){for(var ke=xe.length;ke--;)if(xe[ke][0]==Te)return;de.convert=Se(Te,de),xe.push([Te,de])}}),C(xe,function(Te){ue[Te[0]]=Te[1]}),ue.convert=U,ue.placeholder=ue,C(V(ue),function(Te){C(sd.realToAlias[Te]||[],function(de){ue[de]=ue[Te]})}),ue}s(WPt,"baseConvert");y7n.exports=WPt});var zPt=y((j4c,I7n)=>{"use strict";var S7n=F3e(),uFa=S7n&&new S7n;I7n.exports=uFa});var $Pt=y((V4c,C7n)=>{"use strict";var cFa=cp(),R7n=zPt(),lFa=R7n?function(t,e){return R7n.set(t,e),t}:cFa;C7n.exports=lFa});var yae=y((H4c,b7n)=>{"use strict";var fFa=WH(),dFa=Xm();function hFa(t){return function(){var e=arguments;switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3]);case 5:return new t(e[0],e[1],e[2],e[3],e[4]);case 6:return new t(e[0],e[1],e[2],e[3],e[4],e[5]);case 7:return new t(e[0],e[1],e[2],e[3],e[4],e[5],e[6])}var r=fFa(t.prototype),n=t.apply(r,e);return dFa(n)?n:r}}s(hFa,"createCtor");b7n.exports=hFa});var N7n=y((W4c,w7n)=>{"use strict";var pFa=yae(),gFa=Cg(),mFa=1;function AFa(t,e,r){var n=e&mFa,i=pFa(t);function o(){var a=this&&this!==gFa&&this instanceof o?i:t;return a.apply(n?r:this,arguments)}return s(o,"wrapper"),o}s(AFa,"createBind");w7n.exports=AFa});var KPt=y(($4c,O7n)=>{"use strict";var _Fa=Math.max;function EFa(t,e,r,n){for(var i=-1,o=t.length,a=r.length,u=-1,c=e.length,l=_Fa(o-a,0),f=Array(c+l),d=!n;++u<c;)f[u]=e[u];for(;++i<a;)(d||i<o)&&(f[r[i]]=t[i]);for(;l--;)f[u++]=t[i++];return f}s(EFa,"composeArgs");O7n.exports=EFa});var JPt=y((J4c,x7n)=>{"use strict";var yFa=Math.max;function TFa(t,e,r,n){for(var i=-1,o=t.length,a=-1,u=r.length,c=-1,l=e.length,f=yFa(o-u,0),d=Array(f+l),m=!n;++i<f;)d[i]=t[i];for(var A=i;++c<l;)d[A+c]=e[c];for(;++a<u;)(m||i<o)&&(d[A+r[a]]=t[i++]);return d}s(TFa,"composeArgsRight");x7n.exports=TFa});var D7n=y((Z4c,v7n)=>{"use strict";function SFa(t,e){for(var r=t.length,n=0;r--;)t[r]===e&&++n;return n}s(SFa,"countHolders");v7n.exports=SFa});var xMe=y((tjc,B7n)=>{"use strict";function IFa(){}s(IFa,"baseLodash");B7n.exports=IFa});var DMe=y((njc,k7n)=>{"use strict";var RFa=WH(),CFa=xMe(),bFa=4294967295;function vMe(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=bFa,this.__views__=[]}s(vMe,"LazyWrapper");vMe.prototype=RFa(CFa.prototype);vMe.prototype.constructor=vMe;k7n.exports=vMe});var XPt=y((sjc,L7n)=>{"use strict";var P7n=zPt(),wFa=Vxt(),NFa=P7n?function(t){return P7n.get(t)}:wFa;L7n.exports=NFa});var U7n=y((ojc,M7n)=>{"use strict";var OFa={};M7n.exports=OFa});var q7n=y((ajc,Q7n)=>{"use strict";var F7n=U7n(),xFa=Object.prototype,vFa=xFa.hasOwnProperty;function DFa(t){for(var e=t.name+"",r=F7n[e],n=vFa.call(F7n,e)?r.length:0;n--;){var i=r[n],o=i.func;if(o==null||o==t)return i.name}return e}s(DFa,"getFuncName");Q7n.exports=DFa});var ZPt=y((cjc,G7n)=>{"use strict";var BFa=WH(),kFa=xMe();function BMe(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=void 0}s(BMe,"LodashWrapper");BMe.prototype=BFa(kFa.prototype);BMe.prototype.constructor=BMe;G7n.exports=BMe});var V7n=y((fjc,j7n)=>{"use strict";var PFa=DMe(),LFa=ZPt(),MFa=JF();function UFa(t){if(t instanceof PFa)return t.clone();var e=new LFa(t.__wrapped__,t.__chain__);return e.__actions__=MFa(t.__actions__),e.__index__=t.__index__,e.__values__=t.__values__,e}s(UFa,"wrapperClone");j7n.exports=UFa});var W7n=y((hjc,Y7n)=>{"use strict";var FFa=DMe(),H7n=ZPt(),QFa=xMe(),qFa=Qa(),GFa=Km(),jFa=V7n(),VFa=Object.prototype,HFa=VFa.hasOwnProperty;function kMe(t){if(GFa(t)&&!qFa(t)&&!(t instanceof FFa)){if(t instanceof H7n)return t;if(HFa.call(t,"__wrapped__"))return jFa(t)}return new H7n(t)}s(kMe,"lodash");kMe.prototype=QFa.prototype;kMe.prototype.constructor=kMe;Y7n.exports=kMe});var $7n=y((gjc,z7n)=>{"use strict";var YFa=DMe(),WFa=XPt(),zFa=q7n(),$Fa=W7n();function KFa(t){var e=zFa(t),r=$Fa[e];if(typeof r!="function"||!(e in YFa.prototype))return!1;if(t===r)return!0;var n=WFa(r);return!!n&&t===n[0]}s(KFa,"isLaziable");z7n.exports=KFa});var eLt=y((Ajc,K7n)=>{"use strict";var JFa=$Pt(),XFa=f3e(),ZFa=XFa(JFa);K7n.exports=ZFa});var X7n=y((_jc,J7n)=>{"use strict";var e2a=/\{\n\/\* \[wrapped with (.+)\] \*/,t2a=/,? & /;function r2a(t){var e=t.match(e2a);return e?e[1].split(t2a):[]}s(r2a,"getWrapDetails");J7n.exports=r2a});var eJn=y((yjc,Z7n)=>{"use strict";var n2a=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function i2a(t,e){var r=e.length;if(!r)return t;var n=r-1;return e[n]=(r>1?"& ":"")+e[n],e=e.join(r>2?", ":" "),t.replace(n2a,`{
4413
4413
  /* [wrapped with `+e+`] */
4414
4414
  `)}s(i2a,"insertWrapDetails");Z7n.exports=i2a});var rJn=y((Sjc,tJn)=>{"use strict";var s2a=HH(),o2a=qNe(),a2a=1,u2a=2,c2a=8,l2a=16,f2a=32,d2a=64,h2a=128,p2a=256,g2a=512,m2a=[["ary",h2a],["bind",a2a],["bindKey",u2a],["curry",c2a],["curryRight",l2a],["flip",g2a],["partial",f2a],["partialRight",d2a],["rearg",p2a]];function A2a(t,e){return s2a(m2a,function(r){var n="_."+r[0];e&r[1]&&!o2a(t,n)&&t.push(n)}),t.sort()}s(A2a,"updateWrapDetails");tJn.exports=A2a});var tLt=y((Rjc,nJn)=>{"use strict";var _2a=X7n(),E2a=eJn(),y2a=uce(),T2a=rJn();function S2a(t,e,r){var n=e+"";return y2a(t,E2a(n,T2a(_2a(n),r)))}s(S2a,"setWrapToString");nJn.exports=S2a});var rLt=y((bjc,oJn)=>{"use strict";var I2a=$7n(),R2a=eLt(),C2a=tLt(),b2a=1,w2a=2,N2a=4,O2a=8,iJn=32,sJn=64;function x2a(t,e,r,n,i,o,a,u,c,l){var f=e&O2a,d=f?a:void 0,m=f?void 0:a,A=f?o:void 0,T=f?void 0:o;e|=f?iJn:sJn,e&=~(f?sJn:iJn),e&N2a||(e&=~(b2a|w2a));var S=[t,e,i,A,d,T,m,u,c,l],b=r.apply(void 0,S);return I2a(t)&&R2a(b,S),b.placeholder=n,C2a(b,t,e)}s(x2a,"createRecurry");oJn.exports=x2a});var nLt=y((Njc,aJn)=>{"use strict";function v2a(t){var e=t;return e.placeholder}s(v2a,"getHolder");aJn.exports=v2a});var cJn=y((xjc,uJn)=>{"use strict";var D2a=JF(),B2a=Hq(),k2a=Math.min;function P2a(t,e){for(var r=t.length,n=k2a(e.length,r),i=D2a(t);n--;){var o=e[n];t[n]=B2a(o,r)?i[o]:void 0}return t}s(P2a,"reorder");uJn.exports=P2a});var PMe=y((Djc,fJn)=>{"use strict";var lJn="__lodash_placeholder__";function L2a(t,e){for(var r=-1,n=t.length,i=0,o=[];++r<n;){var a=t[r];(a===e||a===lJn)&&(t[r]=lJn,o[i++]=r)}return o}s(L2a,"replaceHolders");fJn.exports=L2a});var iLt=y((kjc,pJn)=>{"use strict";var M2a=KPt(),U2a=JPt(),F2a=D7n(),dJn=yae(),Q2a=rLt(),q2a=nLt(),G2a=cJn(),j2a=PMe(),V2a=Cg(),H2a=1,Y2a=2,W2a=8,z2a=16,$2a=128,K2a=512;function hJn(t,e,r,n,i,o,a,u,c,l){var f=e&$2a,d=e&H2a,m=e&Y2a,A=e&(W2a|z2a),T=e&K2a,S=m?void 0:dJn(t);function b(){for(var C=arguments.length,B=Array(C),k=C;k--;)B[k]=arguments[k];if(A)var P=q2a(b),x=F2a(B,P);if(n&&(B=M2a(B,n,i,A)),o&&(B=U2a(B,o,a,A)),C-=x,A&&C<l){var V=j2a(B,P);return Q2a(t,e,hJn,b.placeholder,r,B,V,u,c,l-C)}var Y=d?r:this,j=m?Y[t]:t;return C=B.length,u?B=G2a(B,u):T&&C>1&&B.reverse(),f&&c<C&&(B.length=c),this&&this!==V2a&&this instanceof b&&(j=S||dJn(j)),j.apply(Y,B)}return s(b,"wrapper"),b}s(hJn,"createHybrid");pJn.exports=hJn});var mJn=y((Ljc,gJn)=>{"use strict";var J2a=oz(),X2a=yae(),Z2a=iLt(),eQa=rLt(),tQa=nLt(),rQa=PMe(),nQa=Cg();function iQa(t,e,r){var n=X2a(t);function i(){for(var o=arguments.length,a=Array(o),u=o,c=tQa(i);u--;)a[u]=arguments[u];var l=o<3&&a[0]!==c&&a[o-1]!==c?[]:rQa(a,c);if(o-=l.length,o<r)return eQa(t,e,Z2a,i.placeholder,void 0,a,l,void 0,void 0,r-o);var f=this&&this!==nQa&&this instanceof i?n:t;return J2a(f,this,a)}return s(i,"wrapper"),i}s(iQa,"createCurry");gJn.exports=iQa});var _Jn=y((Ujc,AJn)=>{"use strict";var sQa=oz(),oQa=yae(),aQa=Cg(),uQa=1;function cQa(t,e,r,n){var i=e&uQa,o=oQa(t);function a(){for(var u=-1,c=arguments.length,l=-1,f=n.length,d=Array(f+c),m=this&&this!==aQa&&this instanceof a?o:t;++l<f;)d[l]=n[l];for(;c--;)d[l++]=arguments[++u];return sQa(m,i?r:this,d)}return s(a,"wrapper"),a}s(cQa,"createPartial");AJn.exports=cQa});var RJn=y((Qjc,IJn)=>{"use strict";var lQa=KPt(),fQa=JPt(),EJn=PMe(),yJn="__lodash_placeholder__",sLt=1,dQa=2,hQa=4,TJn=8,Tae=128,SJn=256,pQa=Math.min;function gQa(t,e){var r=t[1],n=e[1],i=r|n,o=i<(sLt|dQa|Tae),a=n==Tae&&r==TJn||n==Tae&&r==SJn&&t[7].length<=e[8]||n==(Tae|SJn)&&e[7].length<=e[8]&&r==TJn;if(!(o||a))return t;n&sLt&&(t[2]=e[2],i|=r&sLt?0:hQa);var u=e[3];if(u){var c=t[3];t[3]=c?lQa(c,u,e[4]):u,t[4]=c?EJn(t[3],yJn):e[4]}return u=e[5],u&&(c=t[5],t[5]=c?fQa(c,u,e[6]):u,t[6]=c?EJn(t[5],yJn):e[6]),u=e[7],u&&(t[7]=u),n&Tae&&(t[8]=t[8]==null?e[8]:pQa(t[8],e[8])),t[9]==null&&(t[9]=e[9]),t[0]=e[0],t[1]=i,t}s(gQa,"mergeData");IJn.exports=gQa});var LMe=y((Gjc,OJn)=>{"use strict";var mQa=$Pt(),AQa=N7n(),_Qa=mJn(),EQa=iLt(),yQa=_Jn(),TQa=XPt(),SQa=RJn(),IQa=eLt(),RQa=tLt(),CJn=ZH(),CQa="Expected a function",bJn=1,bQa=2,oLt=8,aLt=16,uLt=32,wJn=64,NJn=Math.max;function wQa(t,e,r,n,i,o,a,u){var c=e&bQa;if(!c&&typeof t!="function")throw new TypeError(CQa);var l=n?n.length:0;if(l||(e&=~(uLt|wJn),n=i=void 0),a=a===void 0?a:NJn(CJn(a),0),u=u===void 0?u:CJn(u),l-=i?i.length:0,e&wJn){var f=n,d=i;n=i=void 0}var m=c?void 0:TQa(t),A=[t,e,r,n,i,f,d,o,a,u];if(m&&SQa(A,m),t=A[0],e=A[1],r=A[2],n=A[3],i=A[4],u=A[9]=A[9]===void 0?c?0:t.length:NJn(A[9]-l,0),!u&&e&(oLt|aLt)&&(e&=~(oLt|aLt)),!e||e==bJn)var T=AQa(t,e,r);else e==oLt||e==aLt?T=_Qa(t,e,u):(e==uLt||e==(bJn|uLt))&&!i.length?T=yQa(t,e,r,n):T=EQa.apply(void 0,A);var S=m?mQa:IQa;return RQa(S(T,A),t,e)}s(wQa,"createWrap");OJn.exports=wQa});var vJn=y((Vjc,xJn)=>{"use strict";var NQa=LMe(),OQa=128;function xQa(t,e,r){return e=r?void 0:e,e=t&&e==null?t.length:e,NQa(t,OQa,void 0,void 0,void 0,void 0,e)}s(xQa,"ary");xJn.exports=xQa});var BJn=y((Yjc,DJn)=>{"use strict";var vQa=LMe(),DQa=8;function cLt(t,e,r){e=r?void 0:e;var n=vQa(t,DQa,void 0,void 0,void 0,void 0,void 0,e);return n.placeholder=cLt.placeholder,n}s(cLt,"curry");cLt.placeholder={};DJn.exports=cLt});var PJn=y((zjc,kJn)=>{"use strict";var BQa=Ux(),kQa=Km(),PQa="[object WeakMap]";function LQa(t){return kQa(t)&&BQa(t)==PQa}s(LQa,"isWeakMap");kJn.exports=LQa});var MJn=y((Kjc,LJn)=>{"use strict";var MQa=kNe(),UQa=eA(),FQa=1;function QQa(t){return UQa(typeof t=="function"?t:MQa(t,FQa))}s(QQa,"iteratee");LJn.exports=QQa});var FJn=y((Xjc,UJn)=>{"use strict";var qQa=LMe(),GQa=d3e(),jQa=256,VQa=GQa(function(t,e){return qQa(t,jQa,void 0,void 0,void 0,e)});UJn.exports=VQa});var qJn=y((Zjc,QJn)=>{"use strict";var HQa=kx(),YQa=JF(),WQa=Qa(),zQa=vx(),$Qa=n3e(),KQa=mP(),JQa=vI();function XQa(t){return WQa(t)?HQa(t,KQa):zQa(t)?[t]:YQa($Qa(JQa(t)))}s(XQa,"toPath");QJn.exports=XQa});var jJn=y((tVc,GJn)=>{"use strict";GJn.exports={ary:vJn(),assign:F_t(),clone:Yre(),curry:BJn(),forEach:HH(),isArray:Qa(),isError:jNe(),isFunction:qq(),isWeakMap:PJn(),iteratee:MJn(),keys:_ce(),rearg:FJn(),toInteger:ZH(),toPath:qJn()}});var HJn=y((rVc,VJn)=>{"use strict";var ZQa=T7n(),eqa=jJn();function tqa(t,e,r){return ZQa(eqa,t,e,r)}s(tqa,"convert");VJn.exports=tqa});var WJn=y((iVc,YJn)=>{"use strict";YJn.exports={cap:!1,curry:!1,fixed:!1,immutable:!1,rearg:!1}});var KJn=y((sVc,$Jn)=>{"use strict";var rqa=HJn(),zJn=rqa("cloneDeep",j_t(),WJn());zJn.placeholder=VPt();$Jn.exports=zJn});process.env.DISABLE_PINO_LOGGER="1";process.env.NO_JS="1";process.env.DISABLE_JWT_WARNING="1";hd();var NI=class{static{s(this,"Command")}constructor(e,r){this.command=e,this.opts=[],this.func=r}convertToCommander(e){let r=e.toLowerCase().split("-");return[r.shift()].concat(r.map(i=>Cqe(i))).join("")}addHelp(e){return this.help=e,this}addSubOption(e,r,n,i=[]){return this.opts.push({command:e,help:r,func:n,extras:i}),this}configure(e){let r=this,n=e.command(r.command);this.help&&(n=n.description(Q9(r.help)));let i=new Set;for(let o of r.opts){n=n.option(o.command,q9(o.help));for(let a of o.extras)!a?.command||i.has(a.command)||(i.add(a.command),n=n.option(a.command,q9(a.help)))}n.helpOption("-h, --help",q9(`Get help with ${this.command} options`)),n.action(async o=>{try{let a=!1,u=!1;for(let c of r.opts){let l=c.command.split(" ")[0].replace("--","");if(l=this.convertToCommander(l),u=!a&&!!o[l],u&&c.func){let f=Object.keys(o).length>1?o:o[l];await c.func(f),a=!0}}u&&!a?console.log(Fa(`${Object.keys(o)[0]} is an option, not an operation.`)):a||(console.log(Fa(`Unknown ${this.command} option.`)),n.help())}catch(a){console.log(Fa(a))}})}};xx();hd();var HQt=require("posthog-node");xx();var Hue=require("fs"),_Zn=require("path"),EZn=require("os"),{error:yZn}=(hd(),on(bqe)),Yue=class{static{s(this,"ConfigManager")}constructor(){this.path=_Zn.join(EZn.homedir(),".budibase.json"),Hue.existsSync(this.path)||Hue.writeFileSync(this.path,"{}")}get config(){try{return JSON.parse(Hue.readFileSync(this.path,"utf8"))}catch{return console.log(yZn("Error parsing configuration file. Please check your .budibase.json is valid.")),{}}}set config(e){Hue.writeFileSync(this.path,JSON.stringify(e))}getValue(e){return this.config[e]}setValue(e,r){this.config={...this.config,[e]:r}}removeKey(e){let r={...this.config};delete r[e],this.config=r}};var Lq=class{static{s(this,"AnalyticsClient")}constructor(){this.client=new HQt.PostHog(Fqe,{}),this.configManager=new Yue}capture(e){this.configManager.config.analyticsDisabled||this.client.capture(e)}enable(){this.configManager.removeKey("analyticsDisabled"),this.client.capture({event:Pb.OptIn,distinctId:"cli"})}disable(){this.client.capture({event:Pb.OptOut,distinctId:"cli"}),this.configManager.setValue("analyticsDisabled",!0)}status(){return this.configManager.config.analyticsDisabled?"disabled":"enabled"}};var qqe=new Lq;async function TZn(){try{qqe.disable(),console.log(pu("Successfully opted out of Budibase analytics. You can opt in at any time by running 'budi analytics opt-in'"))}catch(t){console.log(Fa(`Error opting out of Budibase analytics. Please try again later - ${t}`))}}s(TZn,"optOut");async function SZn(){try{qqe.enable(),console.log(pu("Successfully opted in to Budibase analytics. Thank you for helping us make Budibase better!"))}catch{console.log(Fa("Error opting in to Budibase analytics. Please try again later."))}}s(SZn,"optIn");async function IZn(){try{console.log(pu(`Budibase analytics ${qqe.status()}`))}catch{console.log(Fa("Error fetching analytics status. Please try again later."))}}s(IZn,"status");var YQt=new NI("analytics").addHelp("Control the analytics you send to Budibase.").addSubOption("--optin","Opt in to sending analytics to Budibase",SZn).addSubOption("--optout","Opt out of sending analytics to Budibase.",TZn).addSubOption("--status","Check whether you are currently opted in to Budibase analytics.",IZn);xx();xx();gP();var CZn=new Lq;function Wue(t,e){CZn.capture({distinctId:"cli",event:t,properties:e})}s(Wue,"captureEvent");J9();hd();Ub();var cqt=require("path"),lqt=ge(require("fs"));hd();Ub();async function Kue(t,e){let r="/plugins";if(t=(0,cqt.resolve)(t),!lqt.default.existsSync(t)){console.log(Fa(`The directory "${t}" does not exist, please create and then try again.`));return}Hqe(n=>{n.environment.PLUGINS_DIR=r,n.volumes||(n.volumes=[]);let i=n.volumes.find(o=>o.includes(r));i&&n.volumes.splice(n.volumes.indexOf(i),1),n.volumes.push(`${t}:${r}`)}),e||console.log(pu(`Docker compose configured to watch directory: ${t}`))}s(Kue,"watchPlugins");var{success:xZn}=(hd(),on(bqe)),{updateDockerComposeService:vZn}=(Ub(),on(ZQt)),DZn=require("randomstring"),{GENERATED_USER_EMAIL:BZn}=(xx(),on(VQt));async function Jue(t,e){let r=BZn;t||(t=DZn.generate({length:6})),vZn(n=>{n.environment.BB_ADMIN_USER_EMAIL=r,n.environment.BB_ADMIN_USER_PASSWORD=t}),e||console.log(xZn(`User admin credentials configured, access with email: ${r} - password: ${t}`))}s(Jue,"generateUser");var fqt=ge(require("node-fetch"));var kZn="http://169.254.169.254/metadata/v1/user-data";async function PZn(t,e,r){let n=e?nqt:{};if(t==="do")try{let o=await(await(0,fqt.default)(kZn)).text(),a=Sqe(o);for(let[u,c]of Object.entries(Kqe))a[u]&&(n[c]=a[u])}catch{}return r&&(n[Kqe.MAIN_PORT]=r),n}s(PZn,"getInitConfig");async function Xue(t){let e,r,n,i,o,a;typeof t=="string"?(e=t,r=e==="single"):(e=t.init,r=t.single||e==="single",n=t.watchPluginDir,i=t.genUser,o=t.port,a=t.silent);let u=e==="quick"||e==="do";if(await xT(),!u&&!await OI(r?"This will create a single-image docker-compose.yaml in current directory, should continue?":"This will create multiple files in current directory, should continue?")){console.log("Stopping.");return}Wue(Pb.SelfHostInit,{type:e});let c=await PZn(e,u,o);r?await oqt(c,a):(await $9(),await sqt(c,a)),n&&await Kue(n,a),i&&await Jue(typeof i=="string"?i:null,a)}s(Xue,"init");Ub();hd();J9();var dqt=ge(require("docker-compose")),hqt=ge(require("fs"));gP();var LZn=require("open");async function Fq(){await xT(),Lb(),console.log(Qi("Starting services, this may take a moment - first time this may take a few minutes to download images."));let t;hqt.default.existsSync(Uq)?t=aqt("MAIN_PORT"):t=uqt("port"),await Mb(async()=>{await dqt.default.upAll({cwd:"./",log:!0})}),await OI(`Do you wish to open http://localhost:${t} ?`)&&await LZn(`http://localhost:${t}`),console.log(pu(`Services started, please go to http://localhost:${t} for next steps.`))}s(Fq,"start");Ub();hd();var pqt=ge(require("docker-compose"));async function gqt(){await xT(),Lb(),console.log(Qi("Stopping services, this may take a moment.")),await Mb(async()=>{await pqt.default.stop()}),console.log(pu("Services have been stopped successfully."))}s(gqt,"stop");Ub();hd();var mqt=ge(require("docker-compose"));async function Aqt(){await xT(),Lb(),console.log(Qi("Budibase status")),await Mb(async()=>{let t=await mqt.default.ps();console.log(t.out)})}s(Aqt,"status");Ub();gP();var Zue=ge(require("docker-compose"));J9();hd();var MZn=["app-service","worker-service","proxy-service","couchdb-service","litellm-service"],UZn=["budibase"];function FZn(t){return Object.prototype.hasOwnProperty.call(t,"budibase")}s(FZn,"isSingleComposeServiceList");async function _qt(t){let{services:e}=K9(Mq),r=typeof t=="object"&&t!=null&&"single"in t&&!!t.single,n=r||FZn(e);if(r&&!Object.prototype.hasOwnProperty.call(e,"budibase"))throw"Unable to run single-image update: no 'budibase' service found in docker-compose.yaml.";if(await xT(),Lb(),!n&&await OI("Do you wish to update you docker-compose.yaml?")){let i=await zue("minio");await $9(),Vqe("minio",i)}await Mb(async()=>{let o=(await Zue.default.ps()).out.split(`
4415
- `),a=o[2]&&o[2].indexOf("Up")!==-1;a&&(console.log(Qi("Stopping services, this may take a moment.")),await Zue.default.stop()),console.log(Qi("Beginning update, this may take a few minutes."));let u;n?u=UZn:u=MZn,await Zue.default.pullMany(u,{log:!0}),a&&(console.log(pu("Update complete, restarting services...")),await Fq())})}s(_qt,"update");var Eqt=new NI("hosting").addHelp("Controls self hosting on the Budibase platform.").addSubOption("--init [type]","Configure a self hosted platform in current directory, type can be unspecified, 'quick' or 'do'. Use --single for a single-image deployment.",Xue).addSubOption("--start","Start the configured platform in current directory.",Fq).addSubOption("--status","Check the status of currently running services.",Aqt).addSubOption("--stop","Stop the configured platform in the current directory.",gqt).addSubOption("--update","Update the Budibase images to the latest version.",_qt).addSubOption("--watch-plugin-dir [directory]","Add plugin directory watching to a Budibase install.",Kue).addSubOption("--gen-user","Create an admin user automatically as part of first start.",Jue).addSubOption("--single","Specify this with init or update to target a single-image deployment (also supports --init single).");xx();var iT=ge(require("fs")),IQ=require("path");var ece=ge(require("pouchdb"));hd();var yqt=ge(require("node-fetch"));function tce(t){let e;t?e={prefix:t}:e={prefix:void 0,adapter:"leveldb"};let r=require("@budibase/pouchdb-replication-stream");return ece.default.plugin(r.plugin),ece.default.adapter("writableStream",r.adapters.writableStream),ece.default.defaults(e)}s(tce,"getPouch");async function Tqt(t){let e=await(0,yqt.default)(Iqe(encodeURI(`${t}/_all_dbs`)),{method:"GET"});if(e.status===200)return await e.json();throw"Cannot connect to CouchDB instance"}s(Tqt,"getAllDbs");hd();var Z6n=ge(require("dotenv")),MBt=ge(require("fs"));gP();ur();ur();var Qq={WORKSPACES:"/builder/apps",SETTINGS_EMAIL:"/builder/settings/email",SETTINGS_AUTH:"/builder/settings/auth",SETTINGS_PEOPLE_USERS:"/builder/settings/people/users",APPS:"/builder/apps"},X9={ACCOUNT:"/portal/account",BILLING:"/portal/billing",TENANTS:"/portal/tenants",UPGRADE:"/portal/upgrade"};var Jm={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"},NotIn:{value:"notOneOf",label:"Is not in"},ContainsAny:{value:"containsAny",label:"Has any"}},Sqt={integer:{max:2147483647,min:-2147483648},int:{max:2147483647,min:-2147483648},smallint:{max:32767,min:-32768},mediumint:{max:8388607,min:-8388608}};var _3={};Fi(_3,{ColumnSplitter:()=>D4e,NoEmptyFilterStrings:()=>I6t,buildQuery:()=>R6t,cleanupQuery:()=>P4e,fixupFilterArrays:()=>M4e,getKeyNumbering:()=>L4e,getValidOperatorsForType:()=>Kgi,hasFilters:()=>B4e,limit:()=>b6t,recurseLogicalOperators:()=>k4e,removeKeyNumbering:()=>cce,runQuery:()=>ole,search:()=>Zgi,sort:()=>C6t,splitFiltersArray:()=>lce});ur();var A3=ge(Zqe());var Px={};Fi(Px,{filterValueToLabel:()=>vni,hasSchema:()=>Dni,isSupportedUserSearch:()=>kGt,nameToUrl:()=>Mni,parallelForeach:()=>xni,processSearchFilters:()=>h3e,toMap:()=>kni,trimOtherProps:()=>Bni,unreachable:()=>Oni});ur();var BGt=ge(vGt());var Nni=["field","operator","value","type","externalType","valueType","noValue","formulaType"];function Oni(t,e){let r=e?.message||`No such case in exhaustive switch: ${t}`;if(!!!e?.doNotThrow)throw new Error(r)}s(Oni,"unreachable");async function xni(t,e,r){let n=[],i=Symbol.asyncIterator in t,o=i?t[Symbol.asyncIterator]():t[Symbol.iterator](),a=s(async()=>{let u=await(i?o.next():Promise.resolve(o.next()));for(;!u.done;)await e(u.value),u=await(i?o.next():Promise.resolve(o.next()))},"executeNext");for(let u=0;u<r;u++)n.push(a());await Promise.all(n)}s(xni,"parallelForeach");function vni(){return Object.keys(Jm).reduce((t,e)=>{let n=Jm[e];return t[n.value]=n.label,t},{})}s(vni,"filterValueToLabel");function Dni(t){return typeof t=="object"&&!Array.isArray(t)&&t!==null&&!(t instanceof Date)&&Object.keys(t).length>0}s(Dni,"hasSchema");function Bni(t,e){return Object.keys(t).filter(n=>e.includes(n)).reduce((n,i)=>({...n,[i]:t[i]}),{})}s(Bni,"trimOtherProps");function kGt(t){let e=[{op:"string",key:"email"},{op:"fuzzy",key:"email"},{op:"equal",key:"_id"},{op:"oneOf",key:"_id"}],{allOr:r,onEmptyFilter:n,...i}=t;for(let[o,a]of Object.entries(i)){if(typeof a!="object")return!1;if(jue(o)){for(let l of t[o].conditions)if(!kGt(l))return!1;return!0}let u=Object.keys(a||{});if(u.length===0)continue;if(!e.find(l=>l.op===o&&u.length===1&&u[0]===l.key))return!1}return!0}s(kGt,"isSupportedUserSearch");function h3e(t){if(!t||t.length===0)return;let{allOr:e,onEmptyFilter:r,filters:n}=lce(t);return{logicalOperator:"all",onEmptyFilter:r||"all",groups:[{logicalOperator:e?"any":"all",filters:n.map(i=>{let o=(0,BGt.default)(i,Nni);return o.field=cce(o.field),o})}]}}s(h3e,"processSearchFilters");function kni(t,e){return e.reduce((r,n)=>(r[n[t]]=n,r),{})}s(kni,"toMap");var Pni=s(t=>t?t.trim():null,"resolveWorkspaceName"),Lni=s(t=>{let e,r=Pni(t);e=r?r.toLowerCase():"";let n=e?e.replace(/\s+/g,"-"):"";return encodeURI(n)},"resolveWorkspaceUrl"),Mni=s(t=>{let e=Lni(t);return Uni(e)},"nameToUrl"),Uni=s(t=>(t&&!t.startsWith("/")&&(t=`/${t}`),t===""?null:t),"tidyUrl");var $b={};Fi($b,{accountPortalAccountUrl:()=>S4e,accountPortalBillingUrl:()=>I4e,accountPortalUpgradeUrl:()=>R4e,agentChatUrl:()=>x4e,appAgentUrl:()=>ile,appChatUrl:()=>nle,applyBaseUrl:()=>g6t,builderAppsUrl:()=>O4e,builderSettingsAuthUrl:()=>w4e,builderSettingsEmailUrl:()=>b4e,builderSettingsPeopleUsersUrl:()=>N4e,builderWorkspacesUrl:()=>C4e,cancelableTimeout:()=>PGt,cron:()=>Bgi,deepGet:()=>p3e,duplicateName:()=>wgi,escapeHtml:()=>jni,formatBytes:()=>Dgi,getNextPreviewDevice:()=>Rgi,getPreviewDeviceIcon:()=>Cgi,getPreviewModalDevice:()=>bgi,getSequentialName:()=>Ngi,getUserColor:()=>Qni,getUserInitials:()=>Fni,getUserLabel:()=>qni,isEnvironmentVariableKey:()=>E6t,isGoogleSheets:()=>Yni,isSQL:()=>Wni,lists:()=>y4e,normaliseSafeCssColor:()=>$ni,normalizeForComparison:()=>Vni,retry:()=>zni,roles:()=>E4e,schema:()=>e$,structuredOutput:()=>h4e,urlHelpers:()=>_6t,views:()=>_4e,wait:()=>g3e,withTimeout:()=>Gni});var p3e=s((t,e)=>{if(!t||!e)return null;if(Object.prototype.hasOwnProperty.call(t,e))return t[e];let r=e.split(".");for(let n=0;n<r.length;n++)t=t?.[r[n]];return t},"deepGet"),Fni=s(t=>{if(!t)return"?";let e="";return e+=t.firstName?t.firstName[0]:"",e+=t.lastName?t.lastName[0]:"",e!==""?e:t.email?.[0]||"U"},"getUserInitials"),Qni=s(t=>{let e=t?._id;if(!e)return"var(--spectrum-global-color-blue-400)";e=e.replace("ro_ta_users_","");let r=1;for(let n=0;n<e.length;n++)r+=e.charCodeAt(n),r=r%36;return`hsl(${r*10}, 50%, 40%)`},"getUserColor"),qni=s(t=>{if(!t)return"";let{firstName:e,lastName:r,email:n}=t;return e&&r?`${e} ${r}`:e||r||n},"getUserLabel");function PGt(t){let e;return[new Promise((r,n)=>{e=setTimeout(()=>{n({status:301,errno:"ETIME"})},t)}),()=>{clearTimeout(e)}]}s(PGt,"cancelableTimeout");async function Gni(t,e){let[r,n]=PGt(t),i=await Promise.race([e(),r]);return n(),i}s(Gni,"withTimeout");var jni=s(t=>t==null?"":String(t).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;"),"escapeHtml"),Vni=s(t=>t.toLowerCase().trim(),"normalizeForComparison");ur();function Yni(t){return t==="GOOGLE_SHEETS"}s(Yni,"isGoogleSheets");function Wni(t){return!t||!t.source?!1:["POSTGRES","SQL_SERVER","MYSQL","ORACLE"].indexOf(t.source)!==-1||t.isSQL===!0}s(Wni,"isSQL");async function g3e(t){return new Promise(e=>setTimeout(e,t))}s(g3e,"wait");async function zni(t,e){let{times:r=3}=e||{};if(r<1)throw new Error(`invalid retry count: ${r}`);let n;for(let i=0;i<r;i++){let o=1.5**i*1e3*(Math.random()+.5);await g3e(o);try{return await t()}catch(a){n=a}}throw n}s(zni,"retry");var $ni=s(t=>{if(t==null||t.trim()==="")return;let e=t.trim();if(e.includes(";")||/\burl\s*\(/i.test(e))throw new Error("Color is invalid.");return e},"normaliseSafeCssColor");var r6t=ge(DI()),n6t=ge(f4e());var t6t="(Input cron: ",Ppi={"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 Lpi(t,e){return new Intl.DateTimeFormat("en-GB",{weekday:"short",day:"numeric",month:"short",year:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1,timeZone:e}).format(t)}s(Lpi,"formatExecutionDate");function Mpi(t){let e=[];for(let r of t){r.includes(t6t)&&(r=r.split(t6t)[0].trim());for(let[n,i]of Object.entries(Ppi))r.includes(n)&&(r=r.replace(new RegExp(n,"g"),i));e.push(r)}return e}s(Mpi,"improveErrors");function i6t(t,e=4,r){let n=n6t.default.parseExpression(t,r?{tz:r}:void 0),i=[];for(let o=0;o<e;o++)i.push(Lpi(n.next().toDate(),r));return i}s(i6t,"getNextExecutionDates");function s6t(t){let e=(0,r6t.default)(t,{preset:"npm-cron-schedule",override:{useSeconds:!1}});return e.isValid()?{valid:!0}:{valid:!1,err:Mpi(e.getError())}}s(s6t,"validate");var e$={};Fi(e$,{decodeNonAscii:()=>d4e,encodeNonAscii:()=>Qpi,isDeprecatedSingleUserColumn:()=>Upi,isNumeric:()=>qpi,isRequired:()=>Fpi});ur();function Upi(t){return t.type==="bb_reference"&&t.subtype==="user"&&t.constraints?.type!=="array"}s(Upi,"isDeprecatedSingleUserColumn");function Fpi(t){return!!t&&(typeof t.presence!="boolean"&&t.presence?.allowEmpty===!1||t.presence===!0)}s(Fpi,"isRequired");function Qpi(t){return t.split("").map(e=>e.charCodeAt(0)>127?"\\u"+e.charCodeAt(0).toString(16).padStart(4,"0"):e).join("")}s(Qpi,"encodeNonAscii");function d4e(t){return t.replace(/\\u([0-9a-fA-F]{4})/g,(e,r)=>String.fromCharCode(parseInt(r,16)))}s(d4e,"decodeNonAscii");function qpi(t){return t.type==="number"||t.type==="bigint"}s(qpi,"isNumeric");var h4e={};Fi(h4e,{normalizeSchemaForStructuredOutput:()=>Gpi});function Gpi(t){function e(n){if(typeof n!="object"||n===null)return n;let i={...n};if(i.type==="object"&&(i.additionalProperties=!1,i.properties&&typeof i.properties=="object"&&i.properties!==null)){let o=i.properties,a=[],u={};for(let[f,d]of Object.entries(o))if(typeof d=="object"&&d!==null){let m=d;if(m.required===!0){a.push(f);let{required:A,...T}=m;u[f]=e(T)}else u[f]=e(m)}else u[f]=d;i.properties=u;let c=Array.isArray(i.required)?i.required:[],l=[...new Set([...c,...a])];l.length>0?i.required=l:i.required=Object.keys(u)}i.type==="array"&&i.items&&typeof i.items=="object"&&i.items!==null&&(i.items=e(i.items));for(let o of["anyOf","oneOf","allOf"])Array.isArray(i[o])&&(i[o]=i[o].map(a=>e(a)));return i}s(e,"processSchema");let r=e(t);return r.type==="array"?r={type:"object",properties:{items:r},required:["items"],additionalProperties:!1}:r.type!=="object"&&(r={type:"object",properties:{value:r},required:["value"],additionalProperties:!1}),r}s(Gpi,"normalizeSchemaForStructuredOutput");var _4e={};Fi(_4e,{basicFields:()=>Egi,calculationFields:()=>_gi,hasCalculationFields:()=>Agi,isBasicViewField:()=>ggi,isCalculationField:()=>t$,isCalculationView:()=>mgi,isV2:()=>ygi,isVisible:()=>p6t});ur();var A4e=ge(m4e());function t$(t){return"calculationType"in t}s(t$,"isCalculationField");function ggi(t){return!t$(t)}s(ggi,"isBasicViewField");function mgi(t){return t.type==="calculation"}s(mgi,"isCalculationView");function Agi(t){return Object.values(t.schema||{}).some(t$)}s(Agi,"hasCalculationFields");function _gi(t){return(0,A4e.default)(t.schema||{},t$)}s(_gi,"calculationFields");function p6t(t){return t.visible!==!1}s(p6t,"isVisible");function Egi(t,e){let{visible:r=!0}=e||{};return(0,A4e.default)(t.schema||{},n=>!t$(n)&&(!r||p6t(n)))}s(Egi,"basicFields");function ygi(t){return t.version===2}s(ygi,"isV2");var E4e={};Fi(E4e,{checkForRoleInheritanceLoops:()=>Sgi});ur();function Tgi(t){return`role${"_"}${t}`}s(Tgi,"prefixForCheck");function Sgi(t){let e=new Map;t.forEach(o=>{e.set(o._id,o)});let r=new Set,n=new Set;function i(o){let a=Tgi(o);if(n.has(o)||n.has(a))return!0;if(r.has(o)||r.has(a))return!1;n.add(o);let u=e.get(a)||e.get(o);if(!u)return n.delete(o),!1;let c=Array.isArray(u.inherits)?u.inherits:[u.inherits];for(let l of c)if(l&&i(l))return!0;return n.delete(o),r.add(o),!1}return s(i,"hasLoop"),!!t.find(o=>i(o._id))}s(Sgi,"checkForRoleInheritanceLoops");var y4e={};Fi(y4e,{punctuateList:()=>Igi});function Igi(t){return t.length===0?"":t.length===1?t[0]:t.length===2?t.join(" and "):t.slice(0,-1).join(", ")+" and "+t[t.length-1]}s(Igi,"punctuateList");var T4e=["desktop","tablet","mobile"],Rgi=s(t=>{let e=T4e.indexOf(t||"desktop"),n=((e===-1?0:e)+1)%T4e.length;return T4e[n]},"getNextPreviewDevice"),Cgi=s(t=>t==="mobile"?"device-mobile-camera":t==="tablet"?"device-tablet-camera":"monitor","getPreviewDeviceIcon"),bgi=s(t=>t&&t!=="desktop"?t:null,"getPreviewModalDevice");var wgi=s((t,e)=>{let r=new RegExp("\\s(\\d+)$"),n=t.split(r)[0],i=new RegExp(`${n}\\s(\\d+)$`),o=[];e.filter(u=>{if(u===n)return!0;let c=u.match(i);return c?(o.push(parseInt(c[1])),!0):!1}),o.sort((u,c)=>u-c);let a;if(o.length===0)a=1;else{for(let u=0;u<o.length;u++)if(o[u]!==u+1){a=u+1;break}a||(a=o.length+1)}return`${n} ${a}`},"duplicateName"),Ngi=s((t,e,{getName:r,numberFirstItem:n,separator:i=""}={})=>{if(!e?.length)return"";let o=e.trim(),a=n?`${e}1`:o;if(!t?.length)return a;let u=0;return t.forEach(c=>{let l=r?.(c)??c;if(typeof l!="string"||!l.startsWith(o))return;let f=l.split(o);if(f.length!==2)return;f[1].trim()===""&&(f[1]="1");let d=parseInt(f[1]);d>u&&(u=d)}),u===0?a:`${e}${i}${u+1}`},"getSequentialName");var Ogi=/{?{{([^{].*?)}}}?/g;function g6t(t,e){if(!e)return t;let r=t.match(Ogi)??[],n=[],i=t;for(let l of r){let f=`:${l}`;i.includes(f)&&(n.push(l),i=i.replace(f,":0"))}let o=s(l=>`__hbs${l}__`,"placeholder"),a=r.filter(l=>!n.includes(l));i=a.reduce((l,f,d)=>l.replace(f,o(d)),i);let u=s(l=>a.reduce((f,d,m)=>f.replace(o(m),d),l),"restore"),c=e.replace(/\/$/,"");try{let l=new URL(i),f=l.pathname==="/"?"":l.pathname;return c+u(f+l.search+l.hash)}catch{let l=u(i);return l.startsWith("/")?c+l:c}}s(g6t,"applyBaseUrl");var m6t=s(t=>t?t.startsWith("/")?t:`/${t}`:"","normalizePath"),xgi=s(t=>t?t.endsWith("/")?t.slice(0,-1):t:"","normalizeBase"),zb=s((t,e)=>{let r=m6t(e);if(!t)return r;let n=xgi(t);return r?`${n}${r}`:n},"joinBaseAndPath"),vgi=s(t=>t.replace(/\/+$/,""),"trimTrailingSlash"),A6t=s(t=>vgi(m6t(t)),"normalizeAppUrl"),S4e=s(t=>zb(t,X9.ACCOUNT),"accountPortalAccountUrl"),I4e=s((t,e)=>{let r=typeof e=="string"||e==null?{tenantId:e}:e,n=zb(t,X9.BILLING),i=new URLSearchParams;r?.tenantId&&i.set("tenantId",r.tenantId),r?.purchasePrepaidAiCredits&&i.set("purchasePrepaidAiCredits","1");let o=i.toString();return o?`${n}?${o}`:n},"accountPortalBillingUrl"),R4e=s((t,e)=>{if(e){let r=zb(t,X9.TENANTS),n=encodeURIComponent(e);return`${r}?managePlansTenantId=${n}`}return zb(t,X9.UPGRADE)},"accountPortalUpgradeUrl"),C4e=s(t=>zb(t,Qq.WORKSPACES),"builderWorkspacesUrl"),b4e=s(t=>zb(t,Qq.SETTINGS_EMAIL),"builderSettingsEmailUrl"),w4e=s(t=>zb(t,Qq.SETTINGS_AUTH),"builderSettingsAuthUrl"),N4e=s(t=>zb(t,Qq.SETTINGS_PEOPLE_USERS),"builderSettingsPeopleUsersUrl"),O4e=s(t=>zb(t,Qq.APPS),"builderAppsUrl"),nle=s(t=>`/app-chat${A6t(t)}`,"appChatUrl"),ile=s((t,e)=>`${A6t(t)}/agent/${encodeURIComponent(e)}`,"appAgentUrl"),x4e=s((t,e)=>nle(ile(t,e)),"agentChatUrl"),_6t={accountPortalAccountUrl:S4e,accountPortalBillingUrl:I4e,accountPortalUpgradeUrl:R4e,builderWorkspacesUrl:C4e,builderSettingsEmailUrl:b4e,builderSettingsAuthUrl:w4e,builderSettingsPeopleUsersUrl:N4e,builderAppsUrl:O4e,appChatUrl:nle,appAgentUrl:ile,agentChatUrl:x4e};function Dgi(t,e=""){let r=["B","KB","MB","GB","TB","PB","EB","ZB","YB"],i=0,o=typeof t=="string"?parseInt(t,10):t||0;for(;o>=1024&&i<r.length-1&&++i;)o/=1024;return`${o.toFixed(o<10&&i>0?1:0)}${e}${r[i]}`}s(Dgi,"formatBytes");function E6t(t){return/^{{\s*env\.([^\s]+)\s*}}$/.test(String(t))}s(E6t,"isEnvironmentVariableKey");var Bgi={getNextExecutionDates:i6t,validate:s6t};var sle=ge(hy()),v4e=ge(tA());var zgi=/{{([^{].*?)}}/g,S6t=Object.values(Y9),$gi=[...Object.values(Pq),...Object.values(dP),...Object.values(H9)],Kgi=s((t,e,r)=>{let n=Jm,i=[n.Equals,n.NotEquals,n.StartsWith,n.Like,n.Empty,n.NotEmpty,n.In,n.NotIn],o=[n.Equals,n.NotEquals,n.MoreThan,n.LessThan,n.Empty,n.NotEmpty],a=[n.Contains,n.NotContains,n.ContainsAny,n.Empty,n.NotEmpty],u=[],{type:c,formulaType:l,subtype:f}=t;c==="string"?f==="array"?u=a:u=i:c==="number"||c==="bigint"?u=o:c==="options"?u=[n.Equals,n.NotEquals,n.Empty,n.NotEmpty,n.In,n.NotIn]:c==="array"?u=a:c==="boolean"?u=[n.Equals,n.NotEquals,n.Empty,n.NotEmpty]:c==="longform"?u=i:c==="datetime"?u=o:c==="formula"&&l==="static"?u=i.concat([n.MoreThan,n.LessThan]):c==="ai"?u=i.concat([n.MoreThan,n.LessThan]):c==="bb_reference_single"||e$.isDeprecatedSingleUserColumn(t)?u=[n.Equals,n.NotEquals,n.Empty,n.NotEmpty,n.In,n.NotIn]:c==="bb_reference"?u=a:c==="barcodeqr"?u=i:c==="link"&&(u=[n.Empty,n.NotEmpty]);let d=r?.tableId?.includes("datasource_plus");return e==="_id"&&d&&(u=[n.Equals,n.NotEquals,n.In,n.NotIn]),u},"getValidOperatorsForType"),I6t=[Jm.StartsWith.value,Jm.Like.value,Jm.Equals.value,Jm.NotEquals.value,Jm.Contains.value,Jm.NotContains.value,Jm.ContainsAny.value,Jm.In.value,Jm.NotIn.value];function k4e(t,e){for(let r of S6t)t[r]&&(t[r].conditions=t[r].conditions.map(n=>e(n)));return t}s(k4e,"recurseLogicalOperators");var P4e=s(t=>{for(let e of I6t)if(t[e])for(let r of Object.keys(t)){if(r!==e)continue;if(typeof t[r]=="object")for(let[i,o]of Object.entries(t[r]))(o==null||o===""||Jgi(o))&&delete t[e][i]}return t=k4e(t,P4e),t},"cleanupQuery");function Jgi(t){return Array.isArray(t)&&t.length===0}s(Jgi,"isEmptyArray");var cce=s(t=>L4e(t).key,"removeKeyNumbering"),L4e=s(t=>{if(typeof t=="string"&&t.match(/\d[0-9]*:/g)!=null){let e=t.split(":");return{prefix:`${e.shift()}:`,key:e.join(":")}}else return{key:t}},"getKeyNumbering"),D4e=class{static{s(this,"ColumnSplitter")}constructor(e,r){if(this.tableNames=e.map(n=>n.name),this.tableIds=e.map(n=>n._id),this.relationshipColumnNames=e.flatMap(n=>Object.keys(n.schema).filter(i=>n.schema[i].type==="link")),this.relationships=this.tableNames.concat(this.tableIds).concat(this.relationshipColumnNames).sort((n,i)=>i.length-n.length),r?.aliases){this.aliases={};for(let[n,i]of Object.entries(r.aliases))this.aliases[i]=n}this.columnPrefix=r?.columnPrefix}run(e){let{prefix:r,key:n}=L4e(e),i;if(this.aliases)for(let a of Object.keys(this.aliases||{})){let u=`${a}.`;n.startsWith(u)&&(i=this.aliases[a],n=n.slice(u.length))}let o;for(let a of this.relationships){let u=`${a}.`;if(n.startsWith(u)){let c=n.split(u);c.shift(),o=u,n=c.join(".");break}}return this.columnPrefix&&n.startsWith(this.columnPrefix)&&(n=d4e(n.slice(this.columnPrefix.length))),{tableName:i,numberPrefix:r,relationshipPrefix:o,column:n}}};function Xgi(t){if(!t||!t?.operator||!t?.field)return;let e={},{operator:r,field:n,type:i,externalType:o}=t,{value:a}=t;(r==="empty"||r==="notEmpty")&&(a=null);let u=typeof a=="string"&&(a.match(zgi)||[]).length>0;switch(i){case"datetime":if(!u&&r!=="empty"&&r!=="notEmpty"){if(!a)return;if(typeof a=="string")a=new Date(a).toISOString();else if(Vue(r))return e[r]??={},e[r][n]=a,e}break;case"number":typeof a=="string"&&!u&&(r==="oneOf"||r==="notOneOf"?a=a.split(",").map(parseFloat):a=parseFloat(a));break;case"boolean":a=`${a}`.toLowerCase()==="true";break;case"array":["contains","notContains","containsAny"].includes(r.toLocaleString())&&typeof a=="string"&&(a=a.split(","));break}if(Vue(r)){let l=Sqt[o]||{min:Number.MIN_SAFE_INTEGER,max:Number.MAX_SAFE_INTEGER};e[r]??={},e[r][n]={low:i==="number"?l.min:"0000-00-00T00:00:00.000Z",high:i==="number"?l.max:"9999-00-00T00:00:00.000Z"}}else if(r==="rangeHigh"&&a!=null&&a!=="")e.range??={},e.range[n]={...e.range[n],high:a};else if(r==="rangeLow"&&a!=null&&a!=="")e.range??={},e.range[n]={...e.range[n],low:a};else if(ZUt(r)||eFt(r)||Vue(r))i==="boolean"?r==="equal"&&a===!1?(e.notEqual=e.notEqual||{},e.notEqual[n]=!0):r==="notEqual"&&a===!1?(e.equal=e.equal||{},e.equal[n]=!0):(e[r]??={},e[r][n]=a):(e[r]??={},e[r][n]=a);else throw new Error(`Unsupported operator: ${r}`);return e}s(Xgi,"buildCondition");function lce(t){let e={filters:[]};for(let r of t)"operator"in r&&r.operator==="allOr"?e.allOr=!0:"onEmptyFilter"in r?e.onEmptyFilter=r.onEmptyFilter:e.filters.push(r);return e}s(lce,"splitFiltersArray");function R6t(t){if(!t)return{};if(Array.isArray(t)&&(t=h3e(t),!t))return{};let e={};t.onEmptyFilter?e.onEmptyFilter=t.onEmptyFilter:e.onEmptyFilter="all";let r=T6t(t.logicalOperator||"all");return e[r]={conditions:(t.groups||[]).map(n=>{if(n.groups){let c=R6t(n);return delete c.onEmptyFilter,c}let{allOr:i,onEmptyFilter:o,filters:a}=lce(n.filters||[]);o&&(e.onEmptyFilter=o);let u=i?"$or":"$and";return n.logicalOperator&&(u=T6t(n.logicalOperator)),{[u]:{conditions:a.map(Xgi).filter(c=>c)}}})},e}s(R6t,"buildQuery");function T6t(t){return t==="all"?"$and":"$or"}s(T6t,"logicalOperatorFromUI");function M4e(t){if(!t)return t;for(let e of Object.values(dP)){let r=t[e];if(!(r==null||!(0,sle.default)(r)))for(let n of Object.keys(r)){if(Array.isArray(r[n]))continue;let i=r[n];typeof i=="string"?r[n]=i.split(",").map(o=>o.trim()):r[n]=[i]}}return k4e(t,M4e),t}s(M4e,"fixupFilterArrays");function Zgi(t,e){let r=ole(t,e.query);e.sort&&(r=C6t(r,e.sort,e.sortOrder||"ascending",e.sortType));let n=r.length;e.limit&&(r=b6t(r,e.limit.toString()));let i={rows:r};return e.countRows&&(i.totalRows=n),i}s(Zgi,"search");function ole(t,e){if(!t||!Array.isArray(t))return[];if(!e)return t;if(e=P4e(e),e=M4e(e),!B4e(e)&&e.onEmptyFilter==="none")return[];let r=s((Y,j)=>$=>{for(let[ne,ee]of Object.entries(e[Y]||{})){let Ie=jue(Y)?$:p3e($,cce(ne)),M=j(Ie,ee);if(e.allOr&&M)return!0;if(!e.allOr&&!M)return!1}return!e.allOr},"match"),n=r("string",(Y,j)=>typeof Y!="string"||typeof j!="string"?!1:Y.toLowerCase().startsWith(j.toLowerCase())),i=r("fuzzy",(Y,j)=>typeof Y!="string"||typeof j!="string"?!1:Y.toLowerCase().includes(j.toLowerCase())),o=r("range",(Y,j)=>{if(Y==null||Y===""||((0,sle.default)(j.low)&&(0,v4e.default)(j.low)&&(j.low=void 0),(0,sle.default)(j.high)&&(0,v4e.default)(j.high)&&(j.high=void 0),j.low==null&&j.high==null))return!1;let $=+Y;if(!isNaN($)){let ee=+j.low,Ie=+j.high;if(!isNaN(ee)&&!isNaN(Ie))return $>=ee&&$<=Ie;if(isNaN(ee)){if(!isNaN(Ie))return $<=Ie}else return $>=ee}let ne=(0,A3.default)(Y);if(ne.isValid()){let ee=(0,A3.default)(j.low||"0000-00-00T00:00:00.000Z"),Ie=(0,A3.default)(j.high||"9999-00-00T00:00:00.000Z");if(ee.isValid()&&Ie.isValid())return ne.isAfter(ee)&&ne.isBefore(Ie)||ne.isSame(ee)||ne.isSame(Ie);if(ee.isValid())return ne.isAfter(ee)||ne.isSame(ee);if(Ie.isValid())return ne.isBefore(Ie)||ne.isSame(Ie)}return j.low!=null&&j.high!=null?Y>=j.low&&Y<=j.high:j.low!=null?Y>=j.low:j.high!=null?Y<=j.high:!1}),a=s((Y,j)=>{if(Array.isArray(Y)){for(let ne of Y)if(a(ne,j))return!0;return!1}if(Y&&typeof Y=="object"&&typeof j=="string")return Y._id===j;if(Y===j)return!0;if(Y==null&&j!=null||Y!=null&&j==null)return!1;let $=(0,A3.default)(Y);if($.isValid()){let ne=(0,A3.default)(j);if(ne.isValid())return $.isSame(ne)}return!1},"_valueMatches"),u=s(Y=>(...j)=>!Y(...j),"not"),c=r("equal",a),l=r("notEqual",u(a)),f=s(Y=>typeof Y=="string"?Y==="":Array.isArray(Y)?Y.length===0:Y&&typeof Y=="object"?Object.keys(Y).length===0:Y==null,"_empty"),d=r("empty",f),m=r("notEmpty",u(f)),A=s((Y,j)=>(typeof j=="string"&&(j=j.split(",")),typeof Y=="number"&&(j=j.map($=>parseFloat($))),Array.isArray(j)?j.some($=>a(Y,$)):!1),"_oneOf"),T=r("oneOf",A),S=r("notOneOf",u(A)),b=s(Y=>(j,$)=>!Array.isArray(j)||(typeof $=="string"&&($=$.split(","),typeof j[0]=="number"&&($=$.map(ne=>parseFloat(ne)))),!Array.isArray($))?!1:$.length===0?!0:$[Y](ne=>a(j,ne)),"_contains"),C=r("contains",(Y,j)=>Array.isArray(j)&&j.length===0?!0:b("every")(Y,j)),B=r("notContains",(Y,j)=>Array.isArray(j)&&j.length===0?!0:u(b("every"))(Y,j)),k=r("containsAny",b("some")),P=r("$and",(Y,j)=>{if(!j.length)return!1;for(let $ of j)if(!ole([Y],$).length)return!1;return!0}),x=r("$or",(Y,j)=>{if(!j.length)return!1;for(let $ of j)if(ole([Y],{...$,allOr:!0}).length)return!0;return!1}),V=s(Y=>{let j={string:n,fuzzy:i,range:o,equal:c,notEqual:l,empty:d,notEmpty:m,oneOf:T,notOneOf:S,contains:C,containsAny:k,notContains:B,$and:P,$or:x},$=Object.entries(e||{}).filter(([ne,ee])=>!["allOr","onEmptyFilter"].includes(ne)&&ee&&Object.keys(ee).length>0).map(([ne])=>j[ne]?.(Y)??!1);return B4e(e)?e.allOr?$.some(ne=>ne===!0):$.every(ne=>ne===!0):!0},"docMatch");return t.filter(V)}s(ole,"runQuery");function C6t(t,e,r,n="string"){if(!e||!r||!n)return t;let i=s(o=>o==null?o:n==="string"?`${o}`:parseFloat(o),"parse");return t.slice().sort((o,a)=>{let u=i(o[e]),c=i(a[e]),l=c==null||u>c?1:-1;return r.toLowerCase()==="descending"?l*-1:l})}s(C6t,"sort");function b6t(t,e){let r=typeof e=="number"?e:parseFloat(e);return isNaN(r)?t:t.slice(0,r)}s(b6t,"limit");var B4e=s(t=>{if(!t)return!1;let e=s(r=>{for(let n of S6t)if(r[n])for(let i of r[n]?.conditions||[]){let o=e(i);if(o)return o}for(let n of $gi){let i=r[n];if(!i||typeof i!="object")continue;if(Object.entries(i).filter(a=>{let u=a[1]!==void 0||a[1]!==null||a[1]!=="";return n==="notEmpty"||u}).length!==0)return!0}return!1},"check");return e(t)},"hasFilters");var _y={};Fi(_y,{applications:()=>F4e,automations:()=>Q4e,screens:()=>V4e,users:()=>j4e});var F4e={};Fi(F4e,{getDevAppID:()=>emi,getProdAppID:()=>n$});ur();var U4e=Ox("app"),r$=Ox("app_dev");function emi(t){if(!t)throw new Error("No app ID provided");if(t.startsWith(r$))return t;let e=t.split(U4e);e.shift();let r=e.join(U4e);return`${r$}${r}`}s(emi,"getDevAppID");function n$(t){if(!t)throw new Error("No app ID provided");if(!t.startsWith(r$))return t;let e=t.split(r$);e.shift();let r=e.join(r$);return`${U4e}${r}`}s(n$,"getProdAppID");var Q4e={};Fi(Q4e,{checkForCollectStep:()=>imi,isAppAction:()=>nmi,isRowAction:()=>tmi,isWebhookAction:()=>rmi});ur();function tmi(t){return t.definition.trigger?.stepId==="ROW_ACTION"}s(tmi,"isRowAction");function rmi(t){return t.definition.trigger?.stepId==="WEBHOOK"}s(rmi,"isWebhookAction");function nmi(t){return t.definition.trigger?.stepId==="APP"}s(nmi,"isAppAction");function w6t(t){if(!t||!Array.isArray(t))return!1;for(let e of t){if(e.stepId==="COLLECT")return!0;if(y2t(e)&&e.inputs.children){for(let r of Object.values(e.inputs.children))if(w6t(r))return!0}}return!1}s(w6t,"hasCollectBlockRecursive");function imi(t){return w6t(t.definition.steps)}s(imi,"checkForCollectStep");var j4e={};Fi(j4e,{canCreateApps:()=>smi,containsUserID:()=>hmi,getGlobalUserID:()=>dmi,getUserAppGroups:()=>pmi,hasAdminPermissions:()=>G4e,hasAppBuilderPermissions:()=>ule,hasBuilderPermissions:()=>lmi,hasCreatorPermissions:()=>cle,isAdmin:()=>s$,isAdminOrBuilder:()=>ami,isAdminOrGlobalBuilder:()=>umi,isAdminOrWorkspaceBuilder:()=>omi,isBuilder:()=>q4e,isCreator:()=>fmi,isGlobalBuilder:()=>ale,userAppAccessList:()=>gmi});ur();function q4e(t,e){return t?t.builder?.global?!0:!!(e&&t.builder?.apps?.includes(n$(e))):!1}s(q4e,"isBuilder");function ale(t){return q4e(t)&&!ule(t)||s$(t)}s(ale,"isGlobalBuilder");function smi(t){return ale(t)||cle(t)}s(smi,"canCreateApps");function s$(t){return t?G4e(t):!1}s(s$,"isAdmin");function omi(t,e){return t?!!(s$(t)||e&&t.builder?.apps?.includes(n$(e))):!1}s(omi,"isAdminOrWorkspaceBuilder");function ami(t,e){return q4e(t,e)||s$(t)}s(ami,"isAdminOrBuilder");function umi(t){return ale(t)||s$(t)}s(umi,"isAdminOrGlobalBuilder");function ule(t){if(!t)return!1;let e=t.builder?.apps?.length;return!!!t.builder?.global&&e!=null&&e>0}s(ule,"hasAppBuilderPermissions");function cmi(t){return t?!!Object.values(t.roles??{}).find(e=>e==="CREATOR"):!1}s(cmi,"hasAppCreatorPermissions");function lmi(t){return t?t.builder?.global||ule(t)||cle(t):!1}s(lmi,"hasBuilderPermissions");function G4e(t){return t?!!t.admin?.global:!1}s(G4e,"hasAdminPermissions");function cle(t){return t?!!t.builder?.creator:!1}s(cle,"hasCreatorPermissions");function fmi(t){return t?ale(t)||G4e(t)||cle(t)||ule(t)||cmi(t):!1}s(fmi,"isCreator");function dmi(t){if(typeof t!="string")return t;let e=`ro${"_"}ta_users${"_"}`;return t.startsWith(e)?t.split(e)[1]:t}s(dmi,"getGlobalUserID");function hmi(t){return typeof t!="string"?!1:t.includes(`us${"_"}`)}s(hmi,"containsUserID");function N6t(t,e){return e?.filter(r=>r.users?.find(n=>n._id===t))||[]}s(N6t,"getUserGroups");function pmi(t,e,r){let n=n$(t);return N6t(e,r).filter(o=>Object.keys(o.roles||{}).find(a=>a===n))}s(pmi,"getUserAppGroups");function gmi(t,e){let n=N6t(t._id,e).flatMap(o=>Object.keys(o.roles||{})),i=[...Object.keys(t?.roles||{}),...n];return[...new Set(i)]}s(gmi,"userAppAccessList");var V4e={};Fi(V4e,{findInSettings:()=>mmi});function mmi(t,e){let r=[];function n(i,o=""){if(!(!i||typeof i!="object"))for(let[a,u]of Object.entries(i)){let c=o?`${o}.${a}`:a;u&&(typeof u=="string"&&u.includes(e)?r.push({setting:c,value:u}):typeof u=="object"&&n(u,c))}}return s(n,"recurse"),n(t.props),n(t.onLoad||[],"onLoad"),r}s(mmi,"findInSettings");ur();var H4e={by_email2:["by_email"]},UT={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"}},UP=Ox("app"),_mi=Ox("app_dev"),Kb=_mi;var o$="_design/sqlite";var Emi=`ro${"_"}ta_users${"_"}`;var uh="default";ur();ur();var Y4e=require("crypto"),fle=require("fs"),Tmi=ge(y3()),u$=require("path");var Smi=process.env.TOP_LEVEL_PATH||process.env.SERVER_TOP_LEVEL_PATH||(0,u$.resolve)((0,u$.join)(__dirname,"..","..","..")),x6t=!1;!x6t&&lle()&&!W4e()&&(require("dotenv").config({path:(0,u$.join)(Smi,".env")}),x6t=!0);function W4e(){return D6t()}s(W4e,"isTest");function D6t(){return process.env.NODE_ENV==="jest"||process.env.JEST_WORKER_ID!=null&&process.env.JEST_WORKER_ID!=="null"}s(D6t,"isJest");function lle(){return process.env.NODE_ENV!=="production"}s(lle,"isDev");function Imi(t){if(t)return parseInt(t)}s(Imi,"parseIntSafe");var T3={BACKUPS:"backups",APPS:"prod-budi-app-assets",TEMPLATES:"templates",GLOBAL:"global",PLUGINS:"plugins",TEMP:"tmp-file-attachments"},v6t=!!parseInt(process.env.SELF_HOSTED||"");function Rmi(){return process.env.API_ENCRYPTION_KEY?process.env.API_ENCRYPTION_KEY:process.env.JWT_SECRET}s(Rmi,"getAPIEncryptionKey");function Cmi(){return process.env.HTTP_LOGGING===void 0?!0:process.env.HTTP_LOGGING}s(Cmi,"httpLogging");function bmi(){function t(r){function n(u,c){let l=`${c}/${u}`;if((0,fle.existsSync)(l))return l;let f=`${c}/..`;return f===c?null:n(u,f)}s(n,"findFileInAncestors");let i=n(r,process.cwd()),o=(0,fle.readFileSync)(i,"utf-8");return JSON.parse(o)}s(t,"getParentFile");let e;if(lle()&&!W4e())try{e=`${t("lerna.json").version}+local`}catch{}try{let r=t("package.json");return{VERSION:e||process.env.BUDIBASE_VERSION||r.version,SERVICE_NAME:r.name}}catch{return{VERSION:process.env.BUDIBASE_VERSION||"",SERVICE_NAME:""}}}s(bmi,"getPackageJsonFields");function wmi(){return Hx.SERVICE_TYPE==="worker"}s(wmi,"isWorker");function Nmi(){return Hx.SERVICE_TYPE==="apps"}s(Nmi,"isApps");function Omi(){return Hx.BUDIBASE_ENVIRONMENT==="QA"}s(Omi,"isQA");function xmi(){return process.env.SERVICE?process.env.SERVICE:process.env.APPS_SERVICE?process.env.APPS_SERVICE:process.env.WORKER_SERVICE?process.env.WORKER_SERVICE:"budibase"}s(xmi,"getServiceName");var Hx={isTest:W4e,isJest:D6t,isDev:lle,isWorker:wmi,isApps:Nmi,isQA:Omi,isProd:s(()=>!lle(),"isProd"),BUDIBASE_ENVIRONMENT:process.env.BUDIBASE_ENVIRONMENT,JWT_SECRET:process.env.JWT_SECRET?(0,Y4e.createSecretKey)(process.env.JWT_SECRET,"utf8"):void 0,JWT_SECRET_FALLBACK:process.env.JWT_SECRET_FALLBACK?(0,Y4e.createSecretKey)(process.env.JWT_SECRET_FALLBACK,"utf8"):void 0,ENCRYPTION_KEY:process.env.ENCRYPTION_KEY,API_ENCRYPTION_KEY:Rmi(),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,MICROSOFT_CLIENT_ID:process.env.MICROSOFT_CLIENT_ID,MICROSOFT_CLIENT_SECRET:process.env.MICROSOFT_CLIENT_SECRET,MICROSOFT_TENANT_ID:process.env.MICROSOFT_TENANT_ID,RAG_SHAREPOINT_DEFAULT_SCOPE:process.env.RAG_SHAREPOINT_DEFAULT_SCOPE||"offline_access User.Read https://graph.microsoft.com/Sites.Read.All",SALT_ROUNDS:process.env.SALT_ROUNDS,REDIS_URL:process.env.REDIS_URL||"localhost:6379",REDIS_PASSWORD:process.env.REDIS_PASSWORD,REDIS_USERNAME:process.env.REDIS_USERNAME,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,S3_IGNORE_SELF_SIGNED:process.env.S3_IGNORE_SELF_SIGNED,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:v6t,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,POSTHOG_FEATURE_FLAGS_POLLING_INTERVAL_MS:process.env.POSTHOG_FEATURE_FLAGS_POLLING_INTERVAL_MS,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||T3.BACKUPS,APPS_BUCKET_NAME:process.env.APPS_BUCKET_NAME||T3.APPS,TEMPLATES_BUCKET_NAME:process.env.TEMPLATES_BUCKET_NAME||T3.TEMPLATES,GLOBAL_BUCKET_NAME:process.env.GLOBAL_BUCKET_NAME||T3.GLOBAL,PLUGIN_BUCKET_NAME:process.env.PLUGIN_BUCKET_NAME||T3.PLUGINS,TEMP_BUCKET_NAME:process.env.TEMP_BUCKET_NAME||T3.TEMP,USE_COUCH:process.env.USE_COUCH||!0,MOCK_REDIS:process.env.MOCK_REDIS,DEFAULT_LICENSE:process.env.DEFAULT_LICENSE,SERVICE:xmi(),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:Cmi(),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:v6t?process.env.ENABLE_SSO_MAINTENANCE_MODE:!1,...bmi(),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,Hx[t]=e},ROLLING_LOG_MAX_SIZE:process.env.ROLLING_LOG_MAX_SIZE||"10M",ENABLE_SCIM_LOGGER:process.env.ENABLE_SCIM_LOGGER,BB_ADMIN_USER_EMAIL:process.env.BB_ADMIN_USER_EMAIL,BB_ADMIN_USER_PASSWORD:process.env.BB_ADMIN_USER_PASSWORD,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:Imi(process.env.BSON_BUFFER_SIZE),CUSTOM_CSP_MEDIA_SRC:process.env.CUSTOM_CSP_MEDIA_SRC,CUSTOM_CSP_SCRIPT_SRC:process.env.CUSTOM_CSP_SCRIPT_SRC,CUSTOM_CSP_CONNECT_SRC:process.env.CUSTOM_CSP_CONNECT_SRC,CUSTOM_CSP_IMG_SRC:process.env.CUSTOM_CSP_IMG_SRC,CUSTOM_CSP_FONT_SRC:process.env.CUSTOM_CSP_FONT_SRC,CUSTOM_CSP_FRAME_SRC:process.env.CUSTOM_CSP_FRAME_SRC,OPENROUTER_BASE_URL:process.env.OPENROUTER_BASE_URL||"https://openrouter.ai/api/v1"};for(let[t,e]of Object.entries(Hx))e==="0"&&(Hx[t]=0),e==="false"&&(Hx[t]=0);var lt=Hx;var c$="-";function z4e(){let t=lt.REDIS_PASSWORD,e=lt.REDIS_USERNAME,r=lt.REDIS_URL.split("//");if(r=r.length>1?r[1]:r[0],r=r.split("@"),r.length>1){let a=r[0].split(":");e=e||a[0]||void 0,t=a[1],r=r[1]}else r=r[0];let[n,i]=r.split(":"),o=parseInt(i);return{host:n,password:t,username:e,port:isNaN(o)?6379:o}}s(z4e,"getRedisConnectionDetails");function B6t(){return{slotsRefreshTimeout:2e3,dnsLookup:s((t,e)=>e(null,t),"dnsLookup"),redisOptions:{...S3()}}}s(B6t,"getRedisClusterOptions");function S3(){let{host:t,password:e,port:r,username:n}=z4e(),i=lt.REDIS_URL.toLowerCase().startsWith("rediss://")?{}:void 0;return{connectTimeout:3e4,port:r,host:t,password:e,...n&&{username:n},...i&&{tls:i}}}s(S3,"getRedisOptions");function k6t(t){let e=t.split(c$);return e.length>=2?(e.shift(),e.join(c$)):e[0]}s(k6t,"removeDbPrefix");var cIr=ge(require("events"));zx();function MI(){return Jb().replace(/-/g,"")}s(MI,"newid");var Vmi=require("bcrypt"),deu=lt.SALT_ROUNDS||10;async function nWt(t,e){return Vmi.compare(t,e)}s(nWt,"compare");ur();var yes=ge(Zje());var _l={};Fi(_l,{DEFAULT_TENANT_ID:()=>uh,baseGlobalDBName:()=>Hfe,doInAutomationContext:()=>Dxi,doInContext:()=>gHe,doInEnvironmentContext:()=>jxi,doInFeatureFlagOverrideContext:()=>bZt,doInIPContext:()=>RZt,doInIdentityContext:()=>Hle,doInLicenseContext:()=>kxi,doInScimContext:()=>Vxi,doInSelfHostTenantUsingCloud:()=>Bxi,doInTenant:()=>iw,doInWorkspaceContext:()=>Mxi,doInWorkspaceMigrationContext:()=>Fxi,ensureSnippetContext:()=>CZt,getAuditLogDBName:()=>SZt,getAuditLogsDB:()=>Yxi,getAutomationId:()=>mHe,getCurrentContext:()=>eL,getDevWorkspaceDB:()=>zxi,getDevWorkspaceId:()=>qxi,getEnvironmentVariables:()=>Hxi,getFeatureFlagOverrides:()=>SHe,getFeatureFlags:()=>yHe,getGlobalDB:()=>lp,getGlobalDBName:()=>nK,getIP:()=>AHe,getIdentity:()=>Xx,getLicense:()=>Pxi,getOrThrowWorkspaceId:()=>Qxi,getPlatformURL:()=>pHe,getProdWorkspaceDB:()=>Wxi,getProdWorkspaceId:()=>Gxi,getScimDBName:()=>Nxi,getSelfHostCloudDB:()=>Lxi,getTableForView:()=>$xi,getTenantIDFromWorkspaceID:()=>Y3,getTenantId:()=>Hs,getWorkspaceDB:()=>_He,getWorkspaceId:()=>uA,identity:()=>R$,isDevWorkspace:()=>wZt,isMultiTenant:()=>ZP,isProdWorkspace:()=>Jxi,isScim:()=>EHe,isSelfHostUsingCloud:()=>Yfe,isTenancyEnabled:()=>xxi,isTenantIdSet:()=>Oxi,setFeatureFlags:()=>THe,setTableForView:()=>Kxi});var R$={};Fi(R$,{doInAccountContext:()=>aSi,doInIdentityContext:()=>tVe,doInUserContext:()=>bzt,getAccountUserId:()=>wzt,getIdentity:()=>Czt});ur();function Czt(){return Xx()}s(Czt,"getIdentity");function tVe(t,e){return Hle(t,e)}s(tVe,"doInIdentityContext");function bzt(t,e,r){let n={...t,_id:t._id,type:"user",hostInfo:{ipAddress:e.request.ip,userAgent:e.userAgent.source}};return tVe(n,r)}s(bzt,"doInUserContext");function aSi(t,e){let r=wzt(t),n=t.tenantId,i={_id:r,type:"user",tenantId:n,account:t};return tVe(i,e)}s(aSi,"doInAccountContext");function wzt(t){let e;return Dqe(t)?e=t.budibaseUserId:e=t.accountId,e}s(wzt,"getAccountUserId");var Zx=s(t=>{let e=Nzt(t),r,n;if(e.auth?.username)r=e.auth.username;else if(lt.COUCH_DB_USERNAME)r=lt.COUCH_DB_USERNAME;else if(!lt.isTest())throw new Error("CouchDB username not set");if(e.auth?.password)n=e.auth.password;else if(lt.COUCH_DB_PASSWORD)n=lt.COUCH_DB_PASSWORD;else if(!lt.isTest())throw new Error("CouchDB password not set");let i=Buffer.from(`${r}:${n}`).toString("base64"),o=lt.COUCH_DB_SQL_URL;if(lt.isDev()&&!o)o="http://localhost:4006";else if(!o&&e.url){let a=new URL(e.url);o=e.url.replace(a.port,"4984")}return{url:e.url,sqlUrl:Nzt(o).url,auth:{username:r,password:n},cookie:`Basic ${i}`}},"getCouchInfo"),Nzt=s((t=lt.COUCH_DB_URL)=>{let e,r,n,i;if(t){/^https?:\/\//i.test(t)||(t=`http://${t}`);let a=t.split("://"),u=a[0],c=a.slice(1).join("://");if(t.includes("@")){let l=c.split("@");i=l[l.length-1];let f=l.slice(0,-1).join("@");if(f.includes(":")){let d=f.split(":");r=d[0],n=d.slice(1).join(":")}else r=f}else i=c;e=`${u}://${i}`}return{url:e,auth:{username:r,password:n}}},"getUrlInfo");var EZt=ge(hZt());ur();var pZt=ge(require("node-fetch"));function jfe(t){return t.replace(/(https?:\/\/)|(\/)+/g,"$1$2")}s(jfe,"checkSlashesInUrl");async function lHe({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,pZt.default)(jfe(encodeURI(t)),i)}s(lHe,"directCouchUrlCall");var Exi=ge(require("pouchdb"));var yxi,Txi=!1;var Sxi=s(()=>{if(!Txi)throw new Error("init has not been called")},"checkInitialised");function uv(t,e){Sxi();let r=new yxi(t,e),n=r.put;return r.put=async(i,o={})=>(i.createdAt||(i.createdAt=new Date().toISOString()),i.updatedAt=new Date().toISOString(),n(i,o)),r.exists=async()=>!(await r.info()).error,r}s(uv,"getPouchDB");var Qc=ge(require("dd-trace"));var rK=class{constructor(e){this.db=e}static{s(this,"DDInstrumentedDatabase")}get name(){return this.db.name}exists(e){return Qc.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 Qc.default.trace("db.get",r=>(r.addTags({db_name:this.name,doc_id:e}),this.db.get(e)))}tryGet(e){return Qc.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 Qc.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 Qc.default.trace("db.remove",async n=>{n.addTags({db_name:this.name,doc_id:e,rev:r});let i=typeof e=="object",o=i?e._id:e;r=i?e._rev:r;let a=await this.db.remove(o,r);return n.addTags({ok:a.ok}),a})}bulkRemove(e,r){return Qc.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 Qc.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 Qc.default.trace("db.bulkDocs",r=>(r.addTags({db_name:this.name,num_docs:e.length}),this.db.bulkDocs(e)))}async find(e){return Qc.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 Qc.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 Qc.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 Qc.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 Qc.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 Qc.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 Qc.default.trace("db.load",r=>(r.addTags({db_name:this.name,num_args:e.length}),this.db.load(...e)))}createIndex(...e){return Qc.default.trace("db.createIndex",r=>(r.addTags({db_name:this.name,num_args:e.length}),this.db.createIndex(...e)))}deleteIndex(...e){return Qc.default.trace("db.deleteIndex",r=>(r.addTags({db_name:this.name,num_args:e.length}),this.db.deleteIndex(...e)))}getIndexes(...e){return Qc.default.trace("db.getIndexes",r=>(r.addTags({db_name:this.name,num_args:e.length}),this.db.getIndexes(...e)))}sql(e,r){return Qc.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 Qc.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 Qc.default.trace("db.sqlDiskCleanup",e=>(e.addTags({db_name:this.name}),this.db.sqlDiskCleanup()))}};ur();var xou=`${"_"}${"_"}`;var vou=encodeURIComponent(" ");function fHe(t,e,r){if(!lt.SQL_LOGGING_ENABLE)return;let n=`[SQL] [${t.toUpperCase()}] query="${e}"`;r&&(n+=` values="${r.join(", ")}"`),console.log(n)}s(fHe,"sqlLog");var mZt="Database does not exist.";function AZt(t){return(0,EZt.default)({url:t.url,requestDefaults:{headers:{Authorization:t.cookie}},parseUrl:!1})}s(AZt,"buildNano");var cv=class extends Error{static{s(this,"CouchDBError")}constructor(e,r){super(e);let n=r.status||r.statusCode||500;this.status=n,this.statusCode=n,this.reason=r.reason||"Unknown",this.name=r.name,this.errid=r.errid||"Unknown",this.description=r.description||"Unknown",this.error=r.error||"Not found"}};var Vfe=class t{constructor(e,r,n){this.couchInfo=Zx();this.name=e,this.pouchOpts=r||{},n&&(this.couchInfo=Zx(n),this.instanceNano=AZt(this.couchInfo)),t.nano||t.init()}static{s(this,"DatabaseImpl")}static init(){let e=Zx();t.nano=AZt(e)}exists(e){return e===void 0?this.dbExists():this.docExists(e)}async dbExists(){return(await lHe({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 cv(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===mZt)return await this.checkAndCreateDb(),await this.performCallWithDBCreation(e);throw new cv(`CouchDB error: ${i.message}`,i)}}async performCall(e){let r=this.getDb(),n=await e(r);try{return await n()}catch(i){throw new cv(`CouchDB error: ${i.message}`,i)}}async get(e){return this.performCall(r=>{if(!e)throw new Error("Unable to get doc without a valid _id.");return()=>r.get(e)})}async tryGet(e){try{return await this.get(e)}catch(r){if(r.statusCode===404)return;throw r}}async getMultiple(e,r){if(!e||e.length===0)return[];e=[...new Set(e)];let n=!r?.excludeDocs,i=await this.allDocs({keys:e,include_docs:n}),o=s(c=>n&&c.doc==null||c.value&&"deleted"in c.value&&c.value.deleted?!0:c.error==="not_found","rowUnavailable"),a=i.rows.filter(c=>!o(c)),u=a.length!==i.rows.length;if(!r?.allowMissing&&u){let l=i.rows.filter(f=>o(f)).map(f=>f.key).join(", ");throw new Error(`Unable to get bulk documents: ${l}`)}return a.map(c=>n?c.doc:c.value)}async remove(e,r){return this.performCall(n=>{let i,o;if(sFt(e)?(i=e._id,o=e._rev):(i=e,o=r),!i||!o)throw new Error("Unable to remove doc without a valid _id and _rev.");return()=>n.destroy(i,o)})}async bulkRemove(e,r){let n=await this.performCall(a=>()=>a.bulk({docs:e.map(u=>({...u,_deleted:!0}))}));if(r?.silenceErrors)return;let i=!1,o="Unable to bulk remove documents: ";for(let a of n)a.error&&(i=!0,o+=a.error);if(i)throw new cv(o,{name:this.name,status:400})}async post(e,r){return e._id||(e._id=MI()),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===mZt)return{offset:0,total_rows:0,rows:[]};throw n}})}async _sqlQuery(e,r,n){e=jfe(`${this.couchInfo.sqlUrl}/${e}`);let i={url:e,method:r,cookie:this.couchInfo.cookie};return n&&(i.body=n),this.performCall(()=>async()=>{let o=await lHe(i),a=await o.text();if(o.status>300){let u;try{u=JSON.parse(a)}catch{throw console.error(`SQS error: ${a}`),new cv("error while running SQS query, please try again later",{name:"sqs_error",status:o.status})}throw u}return JSON.parse(a)})}async sql(e,r){let i=`/${this.name}/${o$}`;return fHe("sqlite3",e,r),await this._sqlQuery(i,"POST",{query:e,args:r})}async sqlDiskCleanup(){let r=`/${this.name}/_cleanup`;try{await this._sqlQuery(r,"POST")}catch(n){if(n.status!==500)throw n}}async sqlPurgeDocument(e){Array.isArray(e)||(e=[e]);let n=`/${this.name}/_purge`;return await this._sqlQuery(n,"POST",{docs:e})}async query(e,r){return this.performCall(n=>{let[i,o]=e.split("/");return()=>n.view(i,o,r)})}async destroy(){if(await this.exists(o$)){let e=await this.get(o$);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 cv(e.message,e)}}async compact(){return this.performCall(e=>()=>e.compact())}async dump(e,r){return uv(this.name).dump(e,r)}async load(e){return uv(this.name).load(e)}async createIndex(e){return uv(this.name).createIndex(e)}async deleteIndex(e){return uv(this.name).deleteIndex(e)}async getIndexes(){return uv(this.name).getIndexes()}};function GT(t,e){return new rK(new Vfe(t,e))}s(GT,"getDB");var bxi="No app provided";function dHe(t){if(!t)throw bxi;return t.startsWith(Kb)}s(dHe,"isDevWorkspaceID");function hHe(t){if(!t||t.startsWith(Kb))return t;let e=t.split(UP);e.shift();let r=e.join(UP);return`${Kb}${r}`}s(hHe,"getDevWorkspaceID");function H3(t){if(!t||!t.startsWith(Kb))return t;let e=t.split(Kb);e.shift();let r=e.join(Kb);return`${UP}${r}`}s(H3,"getProdWorkspaceID");var yZt=require("async_hooks");var Vl=class t{static{s(this,"Context")}static{this.storage=new yZt.AsyncLocalStorage}static run(e,r){return t.storage.run(e,()=>r())}static get(){return t.storage.getStore()}};var TZt=null;function nK(t){return t||(t=Hs()),Hfe(t)}s(nK,"getGlobalDBName");function SZt(t){return t||(t=Hs()),t===uh?UT.AUDIT_LOGS.name:`${t}${"_"}${UT.AUDIT_LOGS.name}`}s(SZt,"getAuditLogDBName");function Nxi(t){return t||(t=Hs()),t===uh?UT.SCIM_LOGS.name:`${t}${"_"}${UT.SCIM_LOGS.name}`}s(Nxi,"getScimDBName");function Hfe(t){return!t||t===uh?UT.GLOBAL.name:`${t}${"_"}${UT.GLOBAL.name}`}s(Hfe,"baseGlobalDBName");function pHe(){return lt.PLATFORM_URL}s(pHe,"getPlatformURL");function ZP(){return!!lt.MULTI_TENANCY}s(ZP,"isMultiTenant");function Oxi(){return!!Vl.get()?.tenantId}s(Oxi,"isTenantIdSet");function xxi(){return lt.MULTI_TENANCY}s(xxi,"isTenancyEnabled");function Y3(t){if(!t)return;if(!ZP())return uh;let e=t.split("_"),r=e[1]==="dev";if(!(r&&e.length===3||!r&&e.length===2))return r?e[2]:e[1]}s(Y3,"getTenantIDFromWorkspaceID");function vxi(t){let e;try{e=Vl.get()}catch{e={}}return e={...e,...t},e}s(vxi,"updateContext");async function jT(t,e){Uxi();let r=vxi(t);return Vl.run(r,e)}s(jT,"newContext");async function Dxi(t){return await CZt(),await jT({tenantId:Y3(t.workspaceId),appId:t.workspaceId,automationId:t.automationId},t.task)}s(Dxi,"doInAutomationContext");async function gHe(t,e){let r=Y3(t);return jT({tenantId:r,appId:t},e)}s(gHe,"doInContext");async function iw(t,e){return lt.MULTI_TENANCY||(t=t||uh),jT(t?{tenantId:t}:{},e)}s(iw,"doInTenant");async function Bxi(t,e){return jT({tenantId:t,isSelfHostUsingCloud:!0},e)}s(Bxi,"doInSelfHostTenantUsingCloud");async function kxi(t,e){return jT({license:t},e)}s(kxi,"doInLicenseContext");function Pxi(){return Vl.get()?.license}s(Pxi,"getLicense");function Yfe(){return!!Vl.get()?.isSelfHostUsingCloud}s(Yfe,"isSelfHostUsingCloud");function Lxi(){let t=Vl.get();if(!t||!t.isSelfHostUsingCloud)throw new Error("Self-host cloud DB not found");return GT(UT.SELF_HOST_CLOUD.name)}s(Lxi,"getSelfHostCloudDB");async function Mxi(t,e){return IZt(t,e)}s(Mxi,"doInWorkspaceContext");async function IZt(t,e,r){if(!t)throw new Error("workspaceId is required");let n=Y3(t),i={appId:t,...r};return n&&(i.tenantId=n),jT(i,e)}s(IZt,"_doInWorkspaceContext");async function Hle(t,e){if(!t)throw new Error("identity is required");let r={identity:t};return t.tenantId&&(r.tenantId=t.tenantId),jT(r,e)}s(Hle,"doInIdentityContext");function Uxi(){if(Vl.get()?.isMigrating)throw new Error("The context cannot be changed, a migration is currently running")}s(Uxi,"guardMigration");async function Fxi(t,e){return IZt(t,e,{isMigrating:!0})}s(Fxi,"doInWorkspaceMigrationContext");function Xx(){try{return Vl.get()?.identity}catch{}}s(Xx,"getIdentity");function Hs(){if(!ZP())return uh;let e=Vl.get()?.tenantId;if(!e)throw new Error("Tenant id not found");return e}s(Hs,"getTenantId");function mHe(){return Vl.get()?.automationId}s(mHe,"getAutomationId");function uA(){let e=Vl.get()?.appId;return!e&&lt.isTest()&&TZt?TZt:e}s(uA,"getWorkspaceId");function Qxi(){let t=uA();if(!t)throw new Error("Workspace id not set");return t}s(Qxi,"getOrThrowWorkspaceId");function AHe(){return Vl.get()?.ip}s(AHe,"getIP");var qxi=s(()=>{let t=uA();if(!t)throw new Error("Could not get workspaceId");return hHe(t)},"getDevWorkspaceId"),Gxi=s(()=>{let t=uA();if(!t)throw new Error("Could not get workspaceId");return H3(t)},"getProdWorkspaceId");function jxi(t,e){if(!t)throw new Error("Must supply environment variables.");return jT({environmentVariables:t},e)}s(jxi,"doInEnvironmentContext");function Vxi(t){return jT({isScim:!0},t)}s(Vxi,"doInScimContext");function RZt(t,e){return jT({ip:t},e)}s(RZt,"doInIPContext");async function CZt(){let t=eL();if(!t||t.snippets)return;let e,r=_He();r&&(e=(await r.tryGet("app_metadata"))?.snippets),t.snippets=e||[]}s(CZt,"ensureSnippetContext");function Hxi(){let t=Vl.get();return t.environmentVariables?t.environmentVariables:null}s(Hxi,"getEnvironmentVariables");function lp(){let t=Vl.get();if(!t||lt.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 GT(Hfe(t?.tenantId))}s(lp,"getGlobalDB");function Yxi(){if(!Hs())throw new Error("No tenant ID found - cannot open audit log DB");return GT(SZt())}s(Yxi,"getAuditLogsDB");function _He(t){let e=uA();if(!e)throw new Error("Unable to retrieve workspace DB - no workspace ID.");if(Yfe())throw new Error("Workspace DB not found - self-host users using cloud don't have workspace DBs");return GT(e,t)}s(_He,"getWorkspaceDB");function Wxi(t){let e=uA();if(!e)throw new Error("Unable to retrieve prod DB - no workspace ID.");return GT(H3(e),t)}s(Wxi,"getProdWorkspaceDB");function zxi(t){let e=uA();if(!e)throw new Error("Unable to retrieve dev DB - no workspace ID.");return GT(hHe(e),t)}s(zxi,"getDevWorkspaceDB");function EHe(){return!!Vl.get()?.isScim}s(EHe,"isScim");function eL(){try{return Vl.get()}catch{return}}s(eL,"getCurrentContext");function yHe(t){let e=eL();if(e)return e.featureFlagCache?.[t]}s(yHe,"getFeatureFlags");function THe(t,e){let r=eL();r&&(r.featureFlagCache??={},r.featureFlagCache[t]=e)}s(THe,"setFeatureFlags");function SHe(){return eL()?.featureFlagOverrides||{}}s(SHe,"getFeatureFlagOverrides");async function bZt(t,e){return await jT({featureFlagOverrides:t},e)}s(bZt,"doInFeatureFlagOverrideContext");function $xi(t){let e=eL();if(e)return e.viewToTableCache?.[t]}s($xi,"getTableForView");function Kxi(t,e){let r=eL();r&&(r.viewToTableCache??={},r.viewToTableCache[t]=e)}s(Kxi,"setTableForView");function wZt(){let t=uA();return dHe(t)}s(wZt,"isDevWorkspace");function Jxi(){return!wZt()}s(Jxi,"isProdWorkspace");var Ype=ge(ltr());var Hpe=require("dd-trace"),$hr=ge(y3());var zhr;if(lt.MOCK_REDIS)try{zhr=Whr()}catch{console.log("Mock redis unavailable")}async function ZZi(t=0){return await Hpe.tracer.trace("Redis.init",async e=>{if(lt.MOCK_REDIS)return e.addTags({mock:!0}),new zhr(S3());let r;if(lt.REDIS_CLUSTERED){e.addTags({clustered:!0});let{host:n,port:i}=z4e();r=new Ype.Cluster([{host:n,port:i}],B6t())}else r=new Ype.default(S3());return new Promise((n,i)=>{r.on("error",o=>{e.addTags({error:!0}),console.error(`failed to connect to redis (db: ${t})`,o),i(o)}),r.on("reconnecting",()=>{console.log(`Redis reconnecting... (db: ${t})`)}),r.on("ready",()=>{e.addTags({connected:!0}),console.log(`Redis ready to receive commands (db: ${t})`),n(r)})})})}s(ZZi,"init");function ees(t,e){return new Promise((r,n)=>{let i=new Set;t.on("data",o=>o.forEach(a=>i.add(a))),t.on("error",o=>n(o)),t.on("end",async()=>{try{let o=Array.from(i).map(async a=>{let u=await e.get(a);return u&&(u=JSON.parse(u)),{key:k6t(a),value:u}});r(await Promise.all(o))}catch(o){n(o)}})})}s(ees,"promisifyStream");function tes(t){return t.isCluster}s(tes,"isCluster");var R$e=class t{static{s(this,"RedisWrapper")}constructor(e,r){this.client=e,this.db=r}static async init(e,r=0){return await Hpe.tracer.trace("RedisWrapper.init",async n=>{let i=await ZZi(r);return r&&!lt.isTest()&&(n.addTags({db:e}),i.select(r)),new t(i,e)})}trace(e,r){return Hpe.tracer.trace(e,async n=>(n.addTags({db:this.db}),await r(n)))}prefixed(e){return e.includes(this.db)?e:`${this.db}${c$}${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}${c$}${e}`;let n;tes(this.client)?n=this.client.nodes("master")[0].scanStream({match:e+"*",count:100}):n=this.client.scanStream({match:e+"*",count:100});let i=await ees(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,$hr.zip)(e,n).reduce((i,[o,a])=>{if(o===void 0||a===void 0)throw new Error(`Keys and response length mismatch: ${e.length} vs ${n.length}`);try{i[o]=a?JSON.parse(a):null}catch{i[o]=a}return i},{})})}async store(e,r,n=null){return await this.trace("RedisWrapper.store",async i=>{i.addTags({key:e,expirySeconds:n}),typeof r=="object"&&(r=JSON.stringify(r)),await this.client.set(this.prefixed(e),r),n&&await this.client.expire(this.prefixed(e),n)})}async bulkStore(e,r=null){return await this.trace("RedisWrapper.bulkStore",async n=>{n.addTags({numKeys:Object.keys(e).length,expirySeconds:r});let i=Object.entries(e).reduce((a,[u,c])=>(a[this.prefixed(u)]=typeof c=="object"?JSON.stringify(c):c,a),{}),o=this.client.pipeline();if(o.mset(i),r!==null)for(let a of Object.keys(i))o.expire(a,r);await o.exec()})}async getTTL(e){return await this.trace("RedisWrapper.getTTL",async r=>(r.addTags({key:e}),await this.client.ttl(this.prefixed(e))))}async setExpiry(e,r){return await this.trace("RedisWrapper.setExpiry",async n=>(n.addTags({key:e,expirySeconds:r}),await this.client.expire(this.prefixed(e),r)))}async delete(e){return await this.trace("RedisWrapper.delete",async r=>{r.addTags({key:e}),await this.client.del(this.prefixed(e))})}async bulkDelete(e){return await this.trace("RedisWrapper.bulkDelete",async r=>{r.addTags({numKeys:e.length}),await this.client.del(e.map(n=>this.prefixed(n)))})}async clear(){return await this.trace("RedisWrapper.clear",async e=>{let r=await this.scan();e.addTags({numKeys:r.length}),await Promise.all(r.map(n=>this.delete(n.key)))})}async increment(e){return await this.trace("RedisWrapper.increment",async r=>{r.addTags({key:e});let n=await this.client.incr(this.prefixed(e));if(isNaN(n))throw new Error(`Redis ${e} does not contain a number`);return n})}async deleteIfValue(e,r){return await this.trace("RedisWrapper.deleteIfValue",async n=>{n.addTags({key:e}),await this.client.eval(`
4415
+ `),a=o[2]&&o[2].indexOf("Up")!==-1;a&&(console.log(Qi("Stopping services, this may take a moment.")),await Zue.default.stop()),console.log(Qi("Beginning update, this may take a few minutes."));let u;n?u=UZn:u=MZn,await Zue.default.pullMany(u,{log:!0}),a&&(console.log(pu("Update complete, restarting services...")),await Fq())})}s(_qt,"update");var Eqt=new NI("hosting").addHelp("Controls self hosting on the Budibase platform.").addSubOption("--init [type]","Configure a self hosted platform in current directory, type can be unspecified, 'quick' or 'do'. Use --single for a single-image deployment.",Xue).addSubOption("--start","Start the configured platform in current directory.",Fq).addSubOption("--status","Check the status of currently running services.",Aqt).addSubOption("--stop","Stop the configured platform in the current directory.",gqt).addSubOption("--update","Update the Budibase images to the latest version.",_qt).addSubOption("--watch-plugin-dir [directory]","Add plugin directory watching to a Budibase install.",Kue).addSubOption("--gen-user","Create an admin user automatically as part of first start.",Jue).addSubOption("--single","Specify this with init or update to target a single-image deployment (also supports --init single).");xx();var iT=ge(require("fs")),IQ=require("path");var ece=ge(require("pouchdb"));hd();var yqt=ge(require("node-fetch"));function tce(t){let e;t?e={prefix:t}:e={prefix:void 0,adapter:"leveldb"};let r=require("@budibase/pouchdb-replication-stream");return ece.default.plugin(r.plugin),ece.default.adapter("writableStream",r.adapters.writableStream),ece.default.defaults(e)}s(tce,"getPouch");async function Tqt(t){let e=await(0,yqt.default)(Iqe(encodeURI(`${t}/_all_dbs`)),{method:"GET"});if(e.status===200)return await e.json();throw"Cannot connect to CouchDB instance"}s(Tqt,"getAllDbs");hd();var Z6n=ge(require("dotenv")),MBt=ge(require("fs"));gP();ur();ur();var Qq={WORKSPACES:"/builder/apps",SETTINGS_EMAIL:"/builder/settings/email",SETTINGS_AUTH:"/builder/settings/auth",SETTINGS_PEOPLE_USERS:"/builder/settings/people/users",APPS:"/builder/apps"},X9={ACCOUNT:"/portal/account",BILLING:"/portal/billing",TENANTS:"/portal/tenants",UPGRADE:"/portal/upgrade"};var Jm={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"},NotIn:{value:"notOneOf",label:"Is not in"},ContainsAny:{value:"containsAny",label:"Has any"}},Sqt={integer:{max:2147483647,min:-2147483648},int:{max:2147483647,min:-2147483648},smallint:{max:32767,min:-32768},mediumint:{max:8388607,min:-8388608}};var _3={};Fi(_3,{ColumnSplitter:()=>D4e,NoEmptyFilterStrings:()=>I6t,buildQuery:()=>R6t,cleanupQuery:()=>P4e,fixupFilterArrays:()=>M4e,getKeyNumbering:()=>L4e,getValidOperatorsForType:()=>Kgi,hasFilters:()=>B4e,limit:()=>b6t,recurseLogicalOperators:()=>k4e,removeKeyNumbering:()=>cce,runQuery:()=>ole,search:()=>Zgi,sort:()=>C6t,splitFiltersArray:()=>lce});ur();var A3=ge(Zqe());var Px={};Fi(Px,{filterValueToLabel:()=>vni,hasSchema:()=>Dni,isSupportedUserSearch:()=>kGt,nameToUrl:()=>Mni,parallelForeach:()=>xni,processSearchFilters:()=>h3e,toMap:()=>kni,trimOtherProps:()=>Bni,unreachable:()=>Oni});ur();var BGt=ge(vGt());var Nni=["field","operator","value","type","externalType","valueType","noValue","formulaType"];function Oni(t,e){let r=e?.message||`No such case in exhaustive switch: ${t}`;if(!!!e?.doNotThrow)throw new Error(r)}s(Oni,"unreachable");async function xni(t,e,r){let n=[],i=Symbol.asyncIterator in t,o=i?t[Symbol.asyncIterator]():t[Symbol.iterator](),a=s(async()=>{let u=await(i?o.next():Promise.resolve(o.next()));for(;!u.done;)await e(u.value),u=await(i?o.next():Promise.resolve(o.next()))},"executeNext");for(let u=0;u<r;u++)n.push(a());await Promise.all(n)}s(xni,"parallelForeach");function vni(){return Object.keys(Jm).reduce((t,e)=>{let n=Jm[e];return t[n.value]=n.label,t},{})}s(vni,"filterValueToLabel");function Dni(t){return typeof t=="object"&&!Array.isArray(t)&&t!==null&&!(t instanceof Date)&&Object.keys(t).length>0}s(Dni,"hasSchema");function Bni(t,e){return Object.keys(t).filter(n=>e.includes(n)).reduce((n,i)=>({...n,[i]:t[i]}),{})}s(Bni,"trimOtherProps");function kGt(t){let e=[{op:"string",key:"email"},{op:"fuzzy",key:"email"},{op:"equal",key:"_id"},{op:"oneOf",key:"_id"}],{allOr:r,onEmptyFilter:n,...i}=t;for(let[o,a]of Object.entries(i)){if(typeof a!="object")return!1;if(jue(o)){for(let l of t[o].conditions)if(!kGt(l))return!1;return!0}let u=Object.keys(a||{});if(u.length===0)continue;if(!e.find(l=>l.op===o&&u.length===1&&u[0]===l.key))return!1}return!0}s(kGt,"isSupportedUserSearch");function h3e(t){if(!t||t.length===0)return;let{allOr:e,onEmptyFilter:r,filters:n}=lce(t);return{logicalOperator:"all",onEmptyFilter:r||"all",groups:[{logicalOperator:e?"any":"all",filters:n.map(i=>{let o=(0,BGt.default)(i,Nni);return o.field=cce(o.field),o})}]}}s(h3e,"processSearchFilters");function kni(t,e){return e.reduce((r,n)=>(r[n[t]]=n,r),{})}s(kni,"toMap");var Pni=s(t=>t?t.trim():null,"resolveWorkspaceName"),Lni=s(t=>{let e,r=Pni(t);e=r?r.toLowerCase():"";let n=e?e.replace(/\s+/g,"-"):"";return encodeURI(n)},"resolveWorkspaceUrl"),Mni=s(t=>{let e=Lni(t);return Uni(e)},"nameToUrl"),Uni=s(t=>(t&&!t.startsWith("/")&&(t=`/${t}`),t===""?null:t),"tidyUrl");var $b={};Fi($b,{accountPortalAccountUrl:()=>S4e,accountPortalBillingUrl:()=>I4e,accountPortalUpgradeUrl:()=>R4e,agentChatUrl:()=>x4e,appAgentUrl:()=>ile,appChatUrl:()=>nle,applyBaseUrl:()=>g6t,builderAppsUrl:()=>O4e,builderSettingsAuthUrl:()=>w4e,builderSettingsEmailUrl:()=>b4e,builderSettingsPeopleUsersUrl:()=>N4e,builderWorkspacesUrl:()=>C4e,cancelableTimeout:()=>PGt,cron:()=>Bgi,deepGet:()=>p3e,duplicateName:()=>wgi,escapeHtml:()=>jni,formatBytes:()=>Dgi,getNextPreviewDevice:()=>Rgi,getPreviewDeviceIcon:()=>Cgi,getPreviewModalDevice:()=>bgi,getSequentialName:()=>Ngi,getUserColor:()=>Qni,getUserInitials:()=>Fni,getUserLabel:()=>qni,isEnvironmentVariableKey:()=>E6t,isGoogleSheets:()=>Yni,isSQL:()=>Wni,lists:()=>y4e,normaliseSafeCssColor:()=>$ni,normalizeForComparison:()=>Vni,retry:()=>zni,roles:()=>E4e,schema:()=>e$,structuredOutput:()=>h4e,urlHelpers:()=>_6t,views:()=>_4e,wait:()=>g3e,withTimeout:()=>Gni});var p3e=s((t,e)=>{if(!t||!e)return null;if(Object.prototype.hasOwnProperty.call(t,e))return t[e];let r=e.split(".");for(let n=0;n<r.length;n++)t=t?.[r[n]];return t},"deepGet"),Fni=s(t=>{if(!t)return"?";let e="";return e+=t.firstName?t.firstName[0]:"",e+=t.lastName?t.lastName[0]:"",e!==""?e:t.email?.[0]||"U"},"getUserInitials"),Qni=s(t=>{let e=t?._id;if(!e)return"var(--spectrum-global-color-blue-400)";e=e.replace("ro_ta_users_","");let r=1;for(let n=0;n<e.length;n++)r+=e.charCodeAt(n),r=r%36;return`hsl(${r*10}, 50%, 40%)`},"getUserColor"),qni=s(t=>{if(!t)return"";let{firstName:e,lastName:r,email:n}=t;return e&&r?`${e} ${r}`:e||r||n},"getUserLabel");function PGt(t){let e;return[new Promise((r,n)=>{e=setTimeout(()=>{n({status:301,errno:"ETIME"})},t)}),()=>{clearTimeout(e)}]}s(PGt,"cancelableTimeout");async function Gni(t,e){let[r,n]=PGt(t),i=await Promise.race([e(),r]);return n(),i}s(Gni,"withTimeout");var jni=s(t=>t==null?"":String(t).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;"),"escapeHtml"),Vni=s(t=>t.toLowerCase().trim(),"normalizeForComparison");ur();function Yni(t){return t==="GOOGLE_SHEETS"}s(Yni,"isGoogleSheets");function Wni(t){return!t||!t.source?!1:["POSTGRES","SQL_SERVER","MYSQL","ORACLE"].indexOf(t.source)!==-1||t.isSQL===!0}s(Wni,"isSQL");async function g3e(t){return new Promise(e=>setTimeout(e,t))}s(g3e,"wait");async function zni(t,e){let{times:r=3}=e||{};if(r<1)throw new Error(`invalid retry count: ${r}`);let n;for(let i=0;i<r;i++){let o=1.5**i*1e3*(Math.random()+.5);await g3e(o);try{return await t()}catch(a){n=a}}throw n}s(zni,"retry");var $ni=s(t=>{if(t==null||t.trim()==="")return;let e=t.trim();if(e.includes(";")||/\burl\s*\(/i.test(e))throw new Error("Color is invalid.");return e},"normaliseSafeCssColor");var r6t=ge(DI()),n6t=ge(f4e());var t6t="(Input cron: ",Ppi={"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 Lpi(t,e){return new Intl.DateTimeFormat("en-GB",{weekday:"short",day:"numeric",month:"short",year:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1,timeZone:e}).format(t)}s(Lpi,"formatExecutionDate");function Mpi(t){let e=[];for(let r of t){r.includes(t6t)&&(r=r.split(t6t)[0].trim());for(let[n,i]of Object.entries(Ppi))r.includes(n)&&(r=r.replace(new RegExp(n,"g"),i));e.push(r)}return e}s(Mpi,"improveErrors");function i6t(t,e=4,r){let n=n6t.default.parseExpression(t,r?{tz:r}:void 0),i=[];for(let o=0;o<e;o++)i.push(Lpi(n.next().toDate(),r));return i}s(i6t,"getNextExecutionDates");function s6t(t){let e=(0,r6t.default)(t,{preset:"npm-cron-schedule",override:{useSeconds:!1}});return e.isValid()?{valid:!0}:{valid:!1,err:Mpi(e.getError())}}s(s6t,"validate");var e$={};Fi(e$,{decodeNonAscii:()=>d4e,encodeNonAscii:()=>Qpi,isDeprecatedSingleUserColumn:()=>Upi,isNumeric:()=>qpi,isRequired:()=>Fpi});ur();function Upi(t){return t.type==="bb_reference"&&t.subtype==="user"&&t.constraints?.type!=="array"}s(Upi,"isDeprecatedSingleUserColumn");function Fpi(t){return!!t&&(typeof t.presence!="boolean"&&t.presence?.allowEmpty===!1||t.presence===!0)}s(Fpi,"isRequired");function Qpi(t){return t.split("").map(e=>e.charCodeAt(0)>127?"\\u"+e.charCodeAt(0).toString(16).padStart(4,"0"):e).join("")}s(Qpi,"encodeNonAscii");function d4e(t){return t.replace(/\\u([0-9a-fA-F]{4})/g,(e,r)=>String.fromCharCode(parseInt(r,16)))}s(d4e,"decodeNonAscii");function qpi(t){return t.type==="number"||t.type==="bigint"}s(qpi,"isNumeric");var h4e={};Fi(h4e,{normalizeSchemaForStructuredOutput:()=>Gpi});function Gpi(t){function e(n){if(typeof n!="object"||n===null)return n;let i={...n};if(i.type==="object"&&(i.additionalProperties=!1,i.properties&&typeof i.properties=="object"&&i.properties!==null)){let o=i.properties,a=[],u={};for(let[f,d]of Object.entries(o))if(typeof d=="object"&&d!==null){let m=d;if(m.required===!0){a.push(f);let{required:A,...T}=m;u[f]=e(T)}else u[f]=e(m)}else u[f]=d;i.properties=u;let c=Array.isArray(i.required)?i.required:[],l=[...new Set([...c,...a])];l.length>0?i.required=l:i.required=Object.keys(u)}i.type==="array"&&i.items&&typeof i.items=="object"&&i.items!==null&&(i.items=e(i.items));for(let o of["anyOf","oneOf","allOf"])Array.isArray(i[o])&&(i[o]=i[o].map(a=>e(a)));return i}s(e,"processSchema");let r=e(t);return r.type==="array"?r={type:"object",properties:{items:r},required:["items"],additionalProperties:!1}:r.type!=="object"&&(r={type:"object",properties:{value:r},required:["value"],additionalProperties:!1}),r}s(Gpi,"normalizeSchemaForStructuredOutput");var _4e={};Fi(_4e,{basicFields:()=>Egi,calculationFields:()=>_gi,hasCalculationFields:()=>Agi,isBasicViewField:()=>ggi,isCalculationField:()=>t$,isCalculationView:()=>mgi,isV2:()=>ygi,isVisible:()=>p6t});ur();var A4e=ge(m4e());function t$(t){return"calculationType"in t}s(t$,"isCalculationField");function ggi(t){return!t$(t)}s(ggi,"isBasicViewField");function mgi(t){return t.type==="calculation"}s(mgi,"isCalculationView");function Agi(t){return Object.values(t.schema||{}).some(t$)}s(Agi,"hasCalculationFields");function _gi(t){return(0,A4e.default)(t.schema||{},t$)}s(_gi,"calculationFields");function p6t(t){return t.visible!==!1}s(p6t,"isVisible");function Egi(t,e){let{visible:r=!0}=e||{};return(0,A4e.default)(t.schema||{},n=>!t$(n)&&(!r||p6t(n)))}s(Egi,"basicFields");function ygi(t){return t.version===2}s(ygi,"isV2");var E4e={};Fi(E4e,{checkForRoleInheritanceLoops:()=>Sgi});ur();function Tgi(t){return`role${"_"}${t}`}s(Tgi,"prefixForCheck");function Sgi(t){let e=new Map;t.forEach(o=>{e.set(o._id,o)});let r=new Set,n=new Set;function i(o){let a=Tgi(o);if(n.has(o)||n.has(a))return!0;if(r.has(o)||r.has(a))return!1;n.add(o);let u=e.get(a)||e.get(o);if(!u)return n.delete(o),!1;let c=Array.isArray(u.inherits)?u.inherits:[u.inherits];for(let l of c)if(l&&i(l))return!0;return n.delete(o),r.add(o),!1}return s(i,"hasLoop"),!!t.find(o=>i(o._id))}s(Sgi,"checkForRoleInheritanceLoops");var y4e={};Fi(y4e,{punctuateList:()=>Igi});function Igi(t){return t.length===0?"":t.length===1?t[0]:t.length===2?t.join(" and "):t.slice(0,-1).join(", ")+" and "+t[t.length-1]}s(Igi,"punctuateList");var T4e=["desktop","tablet","mobile"],Rgi=s(t=>{let e=T4e.indexOf(t||"desktop"),n=((e===-1?0:e)+1)%T4e.length;return T4e[n]},"getNextPreviewDevice"),Cgi=s(t=>t==="mobile"?"device-mobile-camera":t==="tablet"?"device-tablet-camera":"monitor","getPreviewDeviceIcon"),bgi=s(t=>t&&t!=="desktop"?t:null,"getPreviewModalDevice");var wgi=s((t,e)=>{let r=new RegExp("\\s(\\d+)$"),n=t.split(r)[0],i=new RegExp(`${n}\\s(\\d+)$`),o=[];e.filter(u=>{if(u===n)return!0;let c=u.match(i);return c?(o.push(parseInt(c[1])),!0):!1}),o.sort((u,c)=>u-c);let a;if(o.length===0)a=1;else{for(let u=0;u<o.length;u++)if(o[u]!==u+1){a=u+1;break}a||(a=o.length+1)}return`${n} ${a}`},"duplicateName"),Ngi=s((t,e,{getName:r,numberFirstItem:n,separator:i=""}={})=>{if(!e?.length)return"";let o=e.trim(),a=n?`${e}1`:o;if(!t?.length)return a;let u=0;return t.forEach(c=>{let l=r?.(c)??c;if(typeof l!="string"||!l.startsWith(o))return;let f=l.split(o);if(f.length!==2)return;f[1].trim()===""&&(f[1]="1");let d=parseInt(f[1]);d>u&&(u=d)}),u===0?a:`${e}${i}${u+1}`},"getSequentialName");var Ogi=/{?{{([^{].*?)}}}?/g;function g6t(t,e){if(!e)return t;let r=t.match(Ogi)??[],n=[],i=t;for(let l of r){let f=`:${l}`;i.includes(f)&&(n.push(l),i=i.replace(f,":0"))}let o=s(l=>`__hbs${l}__`,"placeholder"),a=r.filter(l=>!n.includes(l));i=a.reduce((l,f,d)=>l.replace(f,o(d)),i);let u=s(l=>a.reduce((f,d,m)=>f.replace(o(m),d),l),"restore"),c=e.replace(/\/$/,"");try{let l=new URL(i),f=l.pathname==="/"?"":l.pathname;return c+u(f+l.search+l.hash)}catch{let l=u(i);return l.startsWith("/")?c+l:c}}s(g6t,"applyBaseUrl");var m6t=s(t=>t?t.startsWith("/")?t:`/${t}`:"","normalizePath"),xgi=s(t=>t?t.endsWith("/")?t.slice(0,-1):t:"","normalizeBase"),zb=s((t,e)=>{let r=m6t(e);if(!t)return r;let n=xgi(t);return r?`${n}${r}`:n},"joinBaseAndPath"),vgi=s(t=>t.replace(/\/+$/,""),"trimTrailingSlash"),A6t=s(t=>vgi(m6t(t)),"normalizeAppUrl"),S4e=s(t=>zb(t,X9.ACCOUNT),"accountPortalAccountUrl"),I4e=s((t,e)=>{let r=typeof e=="string"||e==null?{tenantId:e}:e,n=zb(t,X9.BILLING),i=new URLSearchParams;r?.tenantId&&i.set("tenantId",r.tenantId),r?.purchasePrepaidAiCredits&&i.set("purchasePrepaidAiCredits","1");let o=i.toString();return o?`${n}?${o}`:n},"accountPortalBillingUrl"),R4e=s((t,e)=>{if(e){let r=zb(t,X9.TENANTS),n=encodeURIComponent(e);return`${r}?managePlansTenantId=${n}`}return zb(t,X9.UPGRADE)},"accountPortalUpgradeUrl"),C4e=s(t=>zb(t,Qq.WORKSPACES),"builderWorkspacesUrl"),b4e=s(t=>zb(t,Qq.SETTINGS_EMAIL),"builderSettingsEmailUrl"),w4e=s(t=>zb(t,Qq.SETTINGS_AUTH),"builderSettingsAuthUrl"),N4e=s(t=>zb(t,Qq.SETTINGS_PEOPLE_USERS),"builderSettingsPeopleUsersUrl"),O4e=s(t=>zb(t,Qq.APPS),"builderAppsUrl"),nle=s(t=>`/app-chat${A6t(t)}`,"appChatUrl"),ile=s((t,e)=>`${A6t(t)}/agent/${encodeURIComponent(e)}`,"appAgentUrl"),x4e=s((t,e)=>nle(ile(t,e)),"agentChatUrl"),_6t={accountPortalAccountUrl:S4e,accountPortalBillingUrl:I4e,accountPortalUpgradeUrl:R4e,builderWorkspacesUrl:C4e,builderSettingsEmailUrl:b4e,builderSettingsAuthUrl:w4e,builderSettingsPeopleUsersUrl:N4e,builderAppsUrl:O4e,appChatUrl:nle,appAgentUrl:ile,agentChatUrl:x4e};function Dgi(t,e=""){let r=["B","KB","MB","GB","TB","PB","EB","ZB","YB"],i=0,o=typeof t=="string"?parseInt(t,10):t||0;for(;o>=1024&&i<r.length-1&&++i;)o/=1024;return`${o.toFixed(o<10&&i>0?1:0)}${e}${r[i]}`}s(Dgi,"formatBytes");function E6t(t){return/^{{\s*env\.([^\s]+)\s*}}$/.test(String(t))}s(E6t,"isEnvironmentVariableKey");var Bgi={getNextExecutionDates:i6t,validate:s6t};var sle=ge(hy()),v4e=ge(tA());var zgi=/{{([^{].*?)}}/g,S6t=Object.values(Y9),$gi=[...Object.values(Pq),...Object.values(dP),...Object.values(H9)],Kgi=s((t,e,r)=>{let n=Jm,i=[n.Equals,n.NotEquals,n.StartsWith,n.Like,n.Empty,n.NotEmpty,n.In,n.NotIn],o=[n.Equals,n.NotEquals,n.MoreThan,n.LessThan,n.Empty,n.NotEmpty,n.In],a=[n.Contains,n.NotContains,n.ContainsAny,n.Empty,n.NotEmpty],u=[],{type:c,formulaType:l,subtype:f}=t;c==="string"?f==="array"?u=a:u=i:c==="number"||c==="bigint"?u=o:c==="options"?u=[n.Equals,n.NotEquals,n.Empty,n.NotEmpty,n.In,n.NotIn]:c==="array"?u=a:c==="boolean"?u=[n.Equals,n.NotEquals,n.Empty,n.NotEmpty]:c==="longform"?u=i:c==="datetime"?u=o:c==="formula"&&l==="static"?u=i.concat([n.MoreThan,n.LessThan]):c==="ai"?u=i.concat([n.MoreThan,n.LessThan]):c==="bb_reference_single"||e$.isDeprecatedSingleUserColumn(t)?u=[n.Equals,n.NotEquals,n.Empty,n.NotEmpty,n.In,n.NotIn]:c==="bb_reference"?u=a:c==="barcodeqr"?u=i:c==="link"&&(u=[n.Empty,n.NotEmpty]);let d=r?.tableId?.includes("datasource_plus");return e==="_id"&&d&&(u=[n.Equals,n.NotEquals,n.In,n.NotIn]),u},"getValidOperatorsForType"),I6t=[Jm.StartsWith.value,Jm.Like.value,Jm.Equals.value,Jm.NotEquals.value,Jm.Contains.value,Jm.NotContains.value,Jm.ContainsAny.value,Jm.In.value,Jm.NotIn.value];function k4e(t,e){for(let r of S6t)t[r]&&(t[r].conditions=t[r].conditions.map(n=>e(n)));return t}s(k4e,"recurseLogicalOperators");var P4e=s(t=>{for(let e of I6t)if(t[e])for(let r of Object.keys(t)){if(r!==e)continue;if(typeof t[r]=="object")for(let[i,o]of Object.entries(t[r]))(o==null||o===""||Jgi(o))&&delete t[e][i]}return t=k4e(t,P4e),t},"cleanupQuery");function Jgi(t){return Array.isArray(t)&&t.length===0}s(Jgi,"isEmptyArray");var cce=s(t=>L4e(t).key,"removeKeyNumbering"),L4e=s(t=>{if(typeof t=="string"&&t.match(/\d[0-9]*:/g)!=null){let e=t.split(":");return{prefix:`${e.shift()}:`,key:e.join(":")}}else return{key:t}},"getKeyNumbering"),D4e=class{static{s(this,"ColumnSplitter")}constructor(e,r){if(this.tableNames=e.map(n=>n.name),this.tableIds=e.map(n=>n._id),this.relationshipColumnNames=e.flatMap(n=>Object.keys(n.schema).filter(i=>n.schema[i].type==="link")),this.relationships=this.tableNames.concat(this.tableIds).concat(this.relationshipColumnNames).sort((n,i)=>i.length-n.length),r?.aliases){this.aliases={};for(let[n,i]of Object.entries(r.aliases))this.aliases[i]=n}this.columnPrefix=r?.columnPrefix}run(e){let{prefix:r,key:n}=L4e(e),i;if(this.aliases)for(let a of Object.keys(this.aliases||{})){let u=`${a}.`;n.startsWith(u)&&(i=this.aliases[a],n=n.slice(u.length))}let o;for(let a of this.relationships){let u=`${a}.`;if(n.startsWith(u)){let c=n.split(u);c.shift(),o=u,n=c.join(".");break}}return this.columnPrefix&&n.startsWith(this.columnPrefix)&&(n=d4e(n.slice(this.columnPrefix.length))),{tableName:i,numberPrefix:r,relationshipPrefix:o,column:n}}};function Xgi(t){if(!t||!t?.operator||!t?.field)return;let e={},{operator:r,field:n,type:i,externalType:o}=t,{value:a}=t;(r==="empty"||r==="notEmpty")&&(a=null);let u=typeof a=="string"&&(a.match(zgi)||[]).length>0;switch(i){case"datetime":if(!u&&r!=="empty"&&r!=="notEmpty"){if(!a)return;if(typeof a=="string")a=new Date(a).toISOString();else if(Vue(r))return e[r]??={},e[r][n]=a,e}break;case"number":typeof a=="string"&&!u&&(r==="oneOf"||r==="notOneOf"?a=a.split(",").map(parseFloat):a=parseFloat(a));break;case"boolean":a=`${a}`.toLowerCase()==="true";break;case"array":["contains","notContains","containsAny"].includes(r.toLocaleString())&&typeof a=="string"&&(a=a.split(","));break}if(Vue(r)){let l=Sqt[o]||{min:Number.MIN_SAFE_INTEGER,max:Number.MAX_SAFE_INTEGER};e[r]??={},e[r][n]={low:i==="number"?l.min:"0000-00-00T00:00:00.000Z",high:i==="number"?l.max:"9999-00-00T00:00:00.000Z"}}else if(r==="rangeHigh"&&a!=null&&a!=="")e.range??={},e.range[n]={...e.range[n],high:a};else if(r==="rangeLow"&&a!=null&&a!=="")e.range??={},e.range[n]={...e.range[n],low:a};else if(ZUt(r)||eFt(r)||Vue(r))i==="boolean"?r==="equal"&&a===!1?(e.notEqual=e.notEqual||{},e.notEqual[n]=!0):r==="notEqual"&&a===!1?(e.equal=e.equal||{},e.equal[n]=!0):(e[r]??={},e[r][n]=a):(e[r]??={},e[r][n]=a);else throw new Error(`Unsupported operator: ${r}`);return e}s(Xgi,"buildCondition");function lce(t){let e={filters:[]};for(let r of t)"operator"in r&&r.operator==="allOr"?e.allOr=!0:"onEmptyFilter"in r?e.onEmptyFilter=r.onEmptyFilter:e.filters.push(r);return e}s(lce,"splitFiltersArray");function R6t(t){if(!t)return{};if(Array.isArray(t)&&(t=h3e(t),!t))return{};let e={};t.onEmptyFilter?e.onEmptyFilter=t.onEmptyFilter:e.onEmptyFilter="all";let r=T6t(t.logicalOperator||"all");return e[r]={conditions:(t.groups||[]).map(n=>{if(n.groups){let c=R6t(n);return delete c.onEmptyFilter,c}let{allOr:i,onEmptyFilter:o,filters:a}=lce(n.filters||[]);o&&(e.onEmptyFilter=o);let u=i?"$or":"$and";return n.logicalOperator&&(u=T6t(n.logicalOperator)),{[u]:{conditions:a.map(Xgi).filter(c=>c)}}})},e}s(R6t,"buildQuery");function T6t(t){return t==="all"?"$and":"$or"}s(T6t,"logicalOperatorFromUI");function M4e(t){if(!t)return t;for(let e of Object.values(dP)){let r=t[e];if(!(r==null||!(0,sle.default)(r)))for(let n of Object.keys(r)){if(Array.isArray(r[n]))continue;let i=r[n];typeof i=="string"?r[n]=i.split(",").map(o=>o.trim()):r[n]=[i]}}return k4e(t,M4e),t}s(M4e,"fixupFilterArrays");function Zgi(t,e){let r=ole(t,e.query);e.sort&&(r=C6t(r,e.sort,e.sortOrder||"ascending",e.sortType));let n=r.length;e.limit&&(r=b6t(r,e.limit.toString()));let i={rows:r};return e.countRows&&(i.totalRows=n),i}s(Zgi,"search");function ole(t,e){if(!t||!Array.isArray(t))return[];if(!e)return t;if(e=P4e(e),e=M4e(e),!B4e(e)&&e.onEmptyFilter==="none")return[];let r=s((Y,j)=>$=>{for(let[ne,ee]of Object.entries(e[Y]||{})){let Ie=jue(Y)?$:p3e($,cce(ne)),M=j(Ie,ee);if(e.allOr&&M)return!0;if(!e.allOr&&!M)return!1}return!e.allOr},"match"),n=r("string",(Y,j)=>typeof Y!="string"||typeof j!="string"?!1:Y.toLowerCase().startsWith(j.toLowerCase())),i=r("fuzzy",(Y,j)=>typeof Y!="string"||typeof j!="string"?!1:Y.toLowerCase().includes(j.toLowerCase())),o=r("range",(Y,j)=>{if(Y==null||Y===""||((0,sle.default)(j.low)&&(0,v4e.default)(j.low)&&(j.low=void 0),(0,sle.default)(j.high)&&(0,v4e.default)(j.high)&&(j.high=void 0),j.low==null&&j.high==null))return!1;let $=+Y;if(!isNaN($)){let ee=+j.low,Ie=+j.high;if(!isNaN(ee)&&!isNaN(Ie))return $>=ee&&$<=Ie;if(isNaN(ee)){if(!isNaN(Ie))return $<=Ie}else return $>=ee}let ne=(0,A3.default)(Y);if(ne.isValid()){let ee=(0,A3.default)(j.low||"0000-00-00T00:00:00.000Z"),Ie=(0,A3.default)(j.high||"9999-00-00T00:00:00.000Z");if(ee.isValid()&&Ie.isValid())return ne.isAfter(ee)&&ne.isBefore(Ie)||ne.isSame(ee)||ne.isSame(Ie);if(ee.isValid())return ne.isAfter(ee)||ne.isSame(ee);if(Ie.isValid())return ne.isBefore(Ie)||ne.isSame(Ie)}return j.low!=null&&j.high!=null?Y>=j.low&&Y<=j.high:j.low!=null?Y>=j.low:j.high!=null?Y<=j.high:!1}),a=s((Y,j)=>{if(Array.isArray(Y)){for(let ne of Y)if(a(ne,j))return!0;return!1}if(Y&&typeof Y=="object"&&typeof j=="string")return Y._id===j;if(Y===j)return!0;if(Y==null&&j!=null||Y!=null&&j==null)return!1;let $=(0,A3.default)(Y);if($.isValid()){let ne=(0,A3.default)(j);if(ne.isValid())return $.isSame(ne)}return!1},"_valueMatches"),u=s(Y=>(...j)=>!Y(...j),"not"),c=r("equal",a),l=r("notEqual",u(a)),f=s(Y=>typeof Y=="string"?Y==="":Array.isArray(Y)?Y.length===0:Y&&typeof Y=="object"?Object.keys(Y).length===0:Y==null,"_empty"),d=r("empty",f),m=r("notEmpty",u(f)),A=s((Y,j)=>(typeof j=="string"&&(j=j.split(",")),typeof Y=="number"&&(j=j.map($=>parseFloat($))),Array.isArray(j)?j.some($=>a(Y,$)):!1),"_oneOf"),T=r("oneOf",A),S=r("notOneOf",u(A)),b=s(Y=>(j,$)=>!Array.isArray(j)||(typeof $=="string"&&($=$.split(","),typeof j[0]=="number"&&($=$.map(ne=>parseFloat(ne)))),!Array.isArray($))?!1:$.length===0?!0:$[Y](ne=>a(j,ne)),"_contains"),C=r("contains",(Y,j)=>Array.isArray(j)&&j.length===0?!0:b("every")(Y,j)),B=r("notContains",(Y,j)=>Array.isArray(j)&&j.length===0?!0:u(b("every"))(Y,j)),k=r("containsAny",b("some")),P=r("$and",(Y,j)=>{if(!j.length)return!1;for(let $ of j)if(!ole([Y],$).length)return!1;return!0}),x=r("$or",(Y,j)=>{if(!j.length)return!1;for(let $ of j)if(ole([Y],{...$,allOr:!0}).length)return!0;return!1}),V=s(Y=>{let j={string:n,fuzzy:i,range:o,equal:c,notEqual:l,empty:d,notEmpty:m,oneOf:T,notOneOf:S,contains:C,containsAny:k,notContains:B,$and:P,$or:x},$=Object.entries(e||{}).filter(([ne,ee])=>!["allOr","onEmptyFilter"].includes(ne)&&ee&&Object.keys(ee).length>0).map(([ne])=>j[ne]?.(Y)??!1);return B4e(e)?e.allOr?$.some(ne=>ne===!0):$.every(ne=>ne===!0):!0},"docMatch");return t.filter(V)}s(ole,"runQuery");function C6t(t,e,r,n="string"){if(!e||!r||!n)return t;let i=s(o=>o==null?o:n==="string"?`${o}`:parseFloat(o),"parse");return t.slice().sort((o,a)=>{let u=i(o[e]),c=i(a[e]),l=c==null||u>c?1:-1;return r.toLowerCase()==="descending"?l*-1:l})}s(C6t,"sort");function b6t(t,e){let r=typeof e=="number"?e:parseFloat(e);return isNaN(r)?t:t.slice(0,r)}s(b6t,"limit");var B4e=s(t=>{if(!t)return!1;let e=s(r=>{for(let n of S6t)if(r[n])for(let i of r[n]?.conditions||[]){let o=e(i);if(o)return o}for(let n of $gi){let i=r[n];if(!i||typeof i!="object")continue;if(Object.entries(i).filter(a=>{let u=a[1]!==void 0||a[1]!==null||a[1]!=="";return n==="notEmpty"||u}).length!==0)return!0}return!1},"check");return e(t)},"hasFilters");var _y={};Fi(_y,{applications:()=>F4e,automations:()=>Q4e,screens:()=>V4e,users:()=>j4e});var F4e={};Fi(F4e,{getDevAppID:()=>emi,getProdAppID:()=>n$});ur();var U4e=Ox("app"),r$=Ox("app_dev");function emi(t){if(!t)throw new Error("No app ID provided");if(t.startsWith(r$))return t;let e=t.split(U4e);e.shift();let r=e.join(U4e);return`${r$}${r}`}s(emi,"getDevAppID");function n$(t){if(!t)throw new Error("No app ID provided");if(!t.startsWith(r$))return t;let e=t.split(r$);e.shift();let r=e.join(r$);return`${U4e}${r}`}s(n$,"getProdAppID");var Q4e={};Fi(Q4e,{checkForCollectStep:()=>imi,isAppAction:()=>nmi,isRowAction:()=>tmi,isWebhookAction:()=>rmi});ur();function tmi(t){return t.definition.trigger?.stepId==="ROW_ACTION"}s(tmi,"isRowAction");function rmi(t){return t.definition.trigger?.stepId==="WEBHOOK"}s(rmi,"isWebhookAction");function nmi(t){return t.definition.trigger?.stepId==="APP"}s(nmi,"isAppAction");function w6t(t){if(!t||!Array.isArray(t))return!1;for(let e of t){if(e.stepId==="COLLECT")return!0;if(y2t(e)&&e.inputs.children){for(let r of Object.values(e.inputs.children))if(w6t(r))return!0}}return!1}s(w6t,"hasCollectBlockRecursive");function imi(t){return w6t(t.definition.steps)}s(imi,"checkForCollectStep");var j4e={};Fi(j4e,{canCreateApps:()=>smi,containsUserID:()=>hmi,getGlobalUserID:()=>dmi,getUserAppGroups:()=>pmi,hasAdminPermissions:()=>G4e,hasAppBuilderPermissions:()=>ule,hasBuilderPermissions:()=>lmi,hasCreatorPermissions:()=>cle,isAdmin:()=>s$,isAdminOrBuilder:()=>ami,isAdminOrGlobalBuilder:()=>umi,isAdminOrWorkspaceBuilder:()=>omi,isBuilder:()=>q4e,isCreator:()=>fmi,isGlobalBuilder:()=>ale,userAppAccessList:()=>gmi});ur();function q4e(t,e){return t?t.builder?.global?!0:!!(e&&t.builder?.apps?.includes(n$(e))):!1}s(q4e,"isBuilder");function ale(t){return q4e(t)&&!ule(t)||s$(t)}s(ale,"isGlobalBuilder");function smi(t){return ale(t)||cle(t)}s(smi,"canCreateApps");function s$(t){return t?G4e(t):!1}s(s$,"isAdmin");function omi(t,e){return t?!!(s$(t)||e&&t.builder?.apps?.includes(n$(e))):!1}s(omi,"isAdminOrWorkspaceBuilder");function ami(t,e){return q4e(t,e)||s$(t)}s(ami,"isAdminOrBuilder");function umi(t){return ale(t)||s$(t)}s(umi,"isAdminOrGlobalBuilder");function ule(t){if(!t)return!1;let e=t.builder?.apps?.length;return!!!t.builder?.global&&e!=null&&e>0}s(ule,"hasAppBuilderPermissions");function cmi(t){return t?!!Object.values(t.roles??{}).find(e=>e==="CREATOR"):!1}s(cmi,"hasAppCreatorPermissions");function lmi(t){return t?t.builder?.global||ule(t)||cle(t):!1}s(lmi,"hasBuilderPermissions");function G4e(t){return t?!!t.admin?.global:!1}s(G4e,"hasAdminPermissions");function cle(t){return t?!!t.builder?.creator:!1}s(cle,"hasCreatorPermissions");function fmi(t){return t?ale(t)||G4e(t)||cle(t)||ule(t)||cmi(t):!1}s(fmi,"isCreator");function dmi(t){if(typeof t!="string")return t;let e=`ro${"_"}ta_users${"_"}`;return t.startsWith(e)?t.split(e)[1]:t}s(dmi,"getGlobalUserID");function hmi(t){return typeof t!="string"?!1:t.includes(`us${"_"}`)}s(hmi,"containsUserID");function N6t(t,e){return e?.filter(r=>r.users?.find(n=>n._id===t))||[]}s(N6t,"getUserGroups");function pmi(t,e,r){let n=n$(t);return N6t(e,r).filter(o=>Object.keys(o.roles||{}).find(a=>a===n))}s(pmi,"getUserAppGroups");function gmi(t,e){let n=N6t(t._id,e).flatMap(o=>Object.keys(o.roles||{})),i=[...Object.keys(t?.roles||{}),...n];return[...new Set(i)]}s(gmi,"userAppAccessList");var V4e={};Fi(V4e,{findInSettings:()=>mmi});function mmi(t,e){let r=[];function n(i,o=""){if(!(!i||typeof i!="object"))for(let[a,u]of Object.entries(i)){let c=o?`${o}.${a}`:a;u&&(typeof u=="string"&&u.includes(e)?r.push({setting:c,value:u}):typeof u=="object"&&n(u,c))}}return s(n,"recurse"),n(t.props),n(t.onLoad||[],"onLoad"),r}s(mmi,"findInSettings");ur();var H4e={by_email2:["by_email"]},UT={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"}},UP=Ox("app"),_mi=Ox("app_dev"),Kb=_mi;var o$="_design/sqlite";var Emi=`ro${"_"}ta_users${"_"}`;var uh="default";ur();ur();var Y4e=require("crypto"),fle=require("fs"),Tmi=ge(y3()),u$=require("path");var Smi=process.env.TOP_LEVEL_PATH||process.env.SERVER_TOP_LEVEL_PATH||(0,u$.resolve)((0,u$.join)(__dirname,"..","..","..")),x6t=!1;!x6t&&lle()&&!W4e()&&(require("dotenv").config({path:(0,u$.join)(Smi,".env")}),x6t=!0);function W4e(){return D6t()}s(W4e,"isTest");function D6t(){return process.env.NODE_ENV==="jest"||process.env.JEST_WORKER_ID!=null&&process.env.JEST_WORKER_ID!=="null"}s(D6t,"isJest");function lle(){return process.env.NODE_ENV!=="production"}s(lle,"isDev");function Imi(t){if(t)return parseInt(t)}s(Imi,"parseIntSafe");var T3={BACKUPS:"backups",APPS:"prod-budi-app-assets",TEMPLATES:"templates",GLOBAL:"global",PLUGINS:"plugins",TEMP:"tmp-file-attachments"},v6t=!!parseInt(process.env.SELF_HOSTED||"");function Rmi(){return process.env.API_ENCRYPTION_KEY?process.env.API_ENCRYPTION_KEY:process.env.JWT_SECRET}s(Rmi,"getAPIEncryptionKey");function Cmi(){return process.env.HTTP_LOGGING===void 0?!0:process.env.HTTP_LOGGING}s(Cmi,"httpLogging");function bmi(){function t(r){function n(u,c){let l=`${c}/${u}`;if((0,fle.existsSync)(l))return l;let f=`${c}/..`;return f===c?null:n(u,f)}s(n,"findFileInAncestors");let i=n(r,process.cwd()),o=(0,fle.readFileSync)(i,"utf-8");return JSON.parse(o)}s(t,"getParentFile");let e;if(lle()&&!W4e())try{e=`${t("lerna.json").version}+local`}catch{}try{let r=t("package.json");return{VERSION:e||process.env.BUDIBASE_VERSION||r.version,SERVICE_NAME:r.name}}catch{return{VERSION:process.env.BUDIBASE_VERSION||"",SERVICE_NAME:""}}}s(bmi,"getPackageJsonFields");function wmi(){return Hx.SERVICE_TYPE==="worker"}s(wmi,"isWorker");function Nmi(){return Hx.SERVICE_TYPE==="apps"}s(Nmi,"isApps");function Omi(){return Hx.BUDIBASE_ENVIRONMENT==="QA"}s(Omi,"isQA");function xmi(){return process.env.SERVICE?process.env.SERVICE:process.env.APPS_SERVICE?process.env.APPS_SERVICE:process.env.WORKER_SERVICE?process.env.WORKER_SERVICE:"budibase"}s(xmi,"getServiceName");var Hx={isTest:W4e,isJest:D6t,isDev:lle,isWorker:wmi,isApps:Nmi,isQA:Omi,isProd:s(()=>!lle(),"isProd"),BUDIBASE_ENVIRONMENT:process.env.BUDIBASE_ENVIRONMENT,JWT_SECRET:process.env.JWT_SECRET?(0,Y4e.createSecretKey)(process.env.JWT_SECRET,"utf8"):void 0,JWT_SECRET_FALLBACK:process.env.JWT_SECRET_FALLBACK?(0,Y4e.createSecretKey)(process.env.JWT_SECRET_FALLBACK,"utf8"):void 0,ENCRYPTION_KEY:process.env.ENCRYPTION_KEY,API_ENCRYPTION_KEY:Rmi(),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,MICROSOFT_CLIENT_ID:process.env.MICROSOFT_CLIENT_ID,MICROSOFT_CLIENT_SECRET:process.env.MICROSOFT_CLIENT_SECRET,MICROSOFT_TENANT_ID:process.env.MICROSOFT_TENANT_ID,RAG_SHAREPOINT_DEFAULT_SCOPE:process.env.RAG_SHAREPOINT_DEFAULT_SCOPE||"offline_access User.Read https://graph.microsoft.com/Sites.Read.All",SALT_ROUNDS:process.env.SALT_ROUNDS,REDIS_URL:process.env.REDIS_URL||"localhost:6379",REDIS_PASSWORD:process.env.REDIS_PASSWORD,REDIS_USERNAME:process.env.REDIS_USERNAME,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,S3_IGNORE_SELF_SIGNED:process.env.S3_IGNORE_SELF_SIGNED,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:v6t,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,POSTHOG_FEATURE_FLAGS_POLLING_INTERVAL_MS:process.env.POSTHOG_FEATURE_FLAGS_POLLING_INTERVAL_MS,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||T3.BACKUPS,APPS_BUCKET_NAME:process.env.APPS_BUCKET_NAME||T3.APPS,TEMPLATES_BUCKET_NAME:process.env.TEMPLATES_BUCKET_NAME||T3.TEMPLATES,GLOBAL_BUCKET_NAME:process.env.GLOBAL_BUCKET_NAME||T3.GLOBAL,PLUGIN_BUCKET_NAME:process.env.PLUGIN_BUCKET_NAME||T3.PLUGINS,TEMP_BUCKET_NAME:process.env.TEMP_BUCKET_NAME||T3.TEMP,USE_COUCH:process.env.USE_COUCH||!0,MOCK_REDIS:process.env.MOCK_REDIS,DEFAULT_LICENSE:process.env.DEFAULT_LICENSE,SERVICE:xmi(),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:Cmi(),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:v6t?process.env.ENABLE_SSO_MAINTENANCE_MODE:!1,...bmi(),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,Hx[t]=e},ROLLING_LOG_MAX_SIZE:process.env.ROLLING_LOG_MAX_SIZE||"10M",ENABLE_SCIM_LOGGER:process.env.ENABLE_SCIM_LOGGER,BB_ADMIN_USER_EMAIL:process.env.BB_ADMIN_USER_EMAIL,BB_ADMIN_USER_PASSWORD:process.env.BB_ADMIN_USER_PASSWORD,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:Imi(process.env.BSON_BUFFER_SIZE),CUSTOM_CSP_MEDIA_SRC:process.env.CUSTOM_CSP_MEDIA_SRC,CUSTOM_CSP_SCRIPT_SRC:process.env.CUSTOM_CSP_SCRIPT_SRC,CUSTOM_CSP_CONNECT_SRC:process.env.CUSTOM_CSP_CONNECT_SRC,CUSTOM_CSP_IMG_SRC:process.env.CUSTOM_CSP_IMG_SRC,CUSTOM_CSP_FONT_SRC:process.env.CUSTOM_CSP_FONT_SRC,CUSTOM_CSP_FRAME_SRC:process.env.CUSTOM_CSP_FRAME_SRC,OPENROUTER_BASE_URL:process.env.OPENROUTER_BASE_URL||"https://openrouter.ai/api/v1"};for(let[t,e]of Object.entries(Hx))e==="0"&&(Hx[t]=0),e==="false"&&(Hx[t]=0);var lt=Hx;var c$="-";function z4e(){let t=lt.REDIS_PASSWORD,e=lt.REDIS_USERNAME,r=lt.REDIS_URL.split("//");if(r=r.length>1?r[1]:r[0],r=r.split("@"),r.length>1){let a=r[0].split(":");e=e||a[0]||void 0,t=a[1],r=r[1]}else r=r[0];let[n,i]=r.split(":"),o=parseInt(i);return{host:n,password:t,username:e,port:isNaN(o)?6379:o}}s(z4e,"getRedisConnectionDetails");function B6t(){return{slotsRefreshTimeout:2e3,dnsLookup:s((t,e)=>e(null,t),"dnsLookup"),redisOptions:{...S3()}}}s(B6t,"getRedisClusterOptions");function S3(){let{host:t,password:e,port:r,username:n}=z4e(),i=lt.REDIS_URL.toLowerCase().startsWith("rediss://")?{}:void 0;return{connectTimeout:3e4,port:r,host:t,password:e,...n&&{username:n},...i&&{tls:i}}}s(S3,"getRedisOptions");function k6t(t){let e=t.split(c$);return e.length>=2?(e.shift(),e.join(c$)):e[0]}s(k6t,"removeDbPrefix");var cIr=ge(require("events"));zx();function MI(){return Jb().replace(/-/g,"")}s(MI,"newid");var Vmi=require("bcrypt"),deu=lt.SALT_ROUNDS||10;async function nWt(t,e){return Vmi.compare(t,e)}s(nWt,"compare");ur();var yes=ge(Zje());var _l={};Fi(_l,{DEFAULT_TENANT_ID:()=>uh,baseGlobalDBName:()=>Hfe,doInAutomationContext:()=>Dxi,doInContext:()=>gHe,doInEnvironmentContext:()=>jxi,doInFeatureFlagOverrideContext:()=>bZt,doInIPContext:()=>RZt,doInIdentityContext:()=>Hle,doInLicenseContext:()=>kxi,doInScimContext:()=>Vxi,doInSelfHostTenantUsingCloud:()=>Bxi,doInTenant:()=>iw,doInWorkspaceContext:()=>Mxi,doInWorkspaceMigrationContext:()=>Fxi,ensureSnippetContext:()=>CZt,getAuditLogDBName:()=>SZt,getAuditLogsDB:()=>Yxi,getAutomationId:()=>mHe,getCurrentContext:()=>eL,getDevWorkspaceDB:()=>zxi,getDevWorkspaceId:()=>qxi,getEnvironmentVariables:()=>Hxi,getFeatureFlagOverrides:()=>SHe,getFeatureFlags:()=>yHe,getGlobalDB:()=>lp,getGlobalDBName:()=>nK,getIP:()=>AHe,getIdentity:()=>Xx,getLicense:()=>Pxi,getOrThrowWorkspaceId:()=>Qxi,getPlatformURL:()=>pHe,getProdWorkspaceDB:()=>Wxi,getProdWorkspaceId:()=>Gxi,getScimDBName:()=>Nxi,getSelfHostCloudDB:()=>Lxi,getTableForView:()=>$xi,getTenantIDFromWorkspaceID:()=>Y3,getTenantId:()=>Hs,getWorkspaceDB:()=>_He,getWorkspaceId:()=>uA,identity:()=>R$,isDevWorkspace:()=>wZt,isMultiTenant:()=>ZP,isProdWorkspace:()=>Jxi,isScim:()=>EHe,isSelfHostUsingCloud:()=>Yfe,isTenancyEnabled:()=>xxi,isTenantIdSet:()=>Oxi,setFeatureFlags:()=>THe,setTableForView:()=>Kxi});var R$={};Fi(R$,{doInAccountContext:()=>aSi,doInIdentityContext:()=>tVe,doInUserContext:()=>bzt,getAccountUserId:()=>wzt,getIdentity:()=>Czt});ur();function Czt(){return Xx()}s(Czt,"getIdentity");function tVe(t,e){return Hle(t,e)}s(tVe,"doInIdentityContext");function bzt(t,e,r){let n={...t,_id:t._id,type:"user",hostInfo:{ipAddress:e.request.ip,userAgent:e.userAgent.source}};return tVe(n,r)}s(bzt,"doInUserContext");function aSi(t,e){let r=wzt(t),n=t.tenantId,i={_id:r,type:"user",tenantId:n,account:t};return tVe(i,e)}s(aSi,"doInAccountContext");function wzt(t){let e;return Dqe(t)?e=t.budibaseUserId:e=t.accountId,e}s(wzt,"getAccountUserId");var Zx=s(t=>{let e=Nzt(t),r,n;if(e.auth?.username)r=e.auth.username;else if(lt.COUCH_DB_USERNAME)r=lt.COUCH_DB_USERNAME;else if(!lt.isTest())throw new Error("CouchDB username not set");if(e.auth?.password)n=e.auth.password;else if(lt.COUCH_DB_PASSWORD)n=lt.COUCH_DB_PASSWORD;else if(!lt.isTest())throw new Error("CouchDB password not set");let i=Buffer.from(`${r}:${n}`).toString("base64"),o=lt.COUCH_DB_SQL_URL;if(lt.isDev()&&!o)o="http://localhost:4006";else if(!o&&e.url){let a=new URL(e.url);o=e.url.replace(a.port,"4984")}return{url:e.url,sqlUrl:Nzt(o).url,auth:{username:r,password:n},cookie:`Basic ${i}`}},"getCouchInfo"),Nzt=s((t=lt.COUCH_DB_URL)=>{let e,r,n,i;if(t){/^https?:\/\//i.test(t)||(t=`http://${t}`);let a=t.split("://"),u=a[0],c=a.slice(1).join("://");if(t.includes("@")){let l=c.split("@");i=l[l.length-1];let f=l.slice(0,-1).join("@");if(f.includes(":")){let d=f.split(":");r=d[0],n=d.slice(1).join(":")}else r=f}else i=c;e=`${u}://${i}`}return{url:e,auth:{username:r,password:n}}},"getUrlInfo");var EZt=ge(hZt());ur();var pZt=ge(require("node-fetch"));function jfe(t){return t.replace(/(https?:\/\/)|(\/)+/g,"$1$2")}s(jfe,"checkSlashesInUrl");async function lHe({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,pZt.default)(jfe(encodeURI(t)),i)}s(lHe,"directCouchUrlCall");var Exi=ge(require("pouchdb"));var yxi,Txi=!1;var Sxi=s(()=>{if(!Txi)throw new Error("init has not been called")},"checkInitialised");function uv(t,e){Sxi();let r=new yxi(t,e),n=r.put;return r.put=async(i,o={})=>(i.createdAt||(i.createdAt=new Date().toISOString()),i.updatedAt=new Date().toISOString(),n(i,o)),r.exists=async()=>!(await r.info()).error,r}s(uv,"getPouchDB");var Qc=ge(require("dd-trace"));var rK=class{constructor(e){this.db=e}static{s(this,"DDInstrumentedDatabase")}get name(){return this.db.name}exists(e){return Qc.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 Qc.default.trace("db.get",r=>(r.addTags({db_name:this.name,doc_id:e}),this.db.get(e)))}tryGet(e){return Qc.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 Qc.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 Qc.default.trace("db.remove",async n=>{n.addTags({db_name:this.name,doc_id:e,rev:r});let i=typeof e=="object",o=i?e._id:e;r=i?e._rev:r;let a=await this.db.remove(o,r);return n.addTags({ok:a.ok}),a})}bulkRemove(e,r){return Qc.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 Qc.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 Qc.default.trace("db.bulkDocs",r=>(r.addTags({db_name:this.name,num_docs:e.length}),this.db.bulkDocs(e)))}async find(e){return Qc.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 Qc.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 Qc.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 Qc.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 Qc.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 Qc.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 Qc.default.trace("db.load",r=>(r.addTags({db_name:this.name,num_args:e.length}),this.db.load(...e)))}createIndex(...e){return Qc.default.trace("db.createIndex",r=>(r.addTags({db_name:this.name,num_args:e.length}),this.db.createIndex(...e)))}deleteIndex(...e){return Qc.default.trace("db.deleteIndex",r=>(r.addTags({db_name:this.name,num_args:e.length}),this.db.deleteIndex(...e)))}getIndexes(...e){return Qc.default.trace("db.getIndexes",r=>(r.addTags({db_name:this.name,num_args:e.length}),this.db.getIndexes(...e)))}sql(e,r){return Qc.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 Qc.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 Qc.default.trace("db.sqlDiskCleanup",e=>(e.addTags({db_name:this.name}),this.db.sqlDiskCleanup()))}};ur();var xou=`${"_"}${"_"}`;var vou=encodeURIComponent(" ");function fHe(t,e,r){if(!lt.SQL_LOGGING_ENABLE)return;let n=`[SQL] [${t.toUpperCase()}] query="${e}"`;r&&(n+=` values="${r.join(", ")}"`),console.log(n)}s(fHe,"sqlLog");var mZt="Database does not exist.";function AZt(t){return(0,EZt.default)({url:t.url,requestDefaults:{headers:{Authorization:t.cookie}},parseUrl:!1})}s(AZt,"buildNano");var cv=class extends Error{static{s(this,"CouchDBError")}constructor(e,r){super(e);let n=r.status||r.statusCode||500;this.status=n,this.statusCode=n,this.reason=r.reason||"Unknown",this.name=r.name,this.errid=r.errid||"Unknown",this.description=r.description||"Unknown",this.error=r.error||"Not found"}};var Vfe=class t{constructor(e,r,n){this.couchInfo=Zx();this.name=e,this.pouchOpts=r||{},n&&(this.couchInfo=Zx(n),this.instanceNano=AZt(this.couchInfo)),t.nano||t.init()}static{s(this,"DatabaseImpl")}static init(){let e=Zx();t.nano=AZt(e)}exists(e){return e===void 0?this.dbExists():this.docExists(e)}async dbExists(){return(await lHe({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 cv(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===mZt)return await this.checkAndCreateDb(),await this.performCallWithDBCreation(e);throw new cv(`CouchDB error: ${i.message}`,i)}}async performCall(e){let r=this.getDb(),n=await e(r);try{return await n()}catch(i){throw new cv(`CouchDB error: ${i.message}`,i)}}async get(e){return this.performCall(r=>{if(!e)throw new Error("Unable to get doc without a valid _id.");return()=>r.get(e)})}async tryGet(e){try{return await this.get(e)}catch(r){if(r.statusCode===404)return;throw r}}async getMultiple(e,r){if(!e||e.length===0)return[];e=[...new Set(e)];let n=!r?.excludeDocs,i=await this.allDocs({keys:e,include_docs:n}),o=s(c=>n&&c.doc==null||c.value&&"deleted"in c.value&&c.value.deleted?!0:c.error==="not_found","rowUnavailable"),a=i.rows.filter(c=>!o(c)),u=a.length!==i.rows.length;if(!r?.allowMissing&&u){let l=i.rows.filter(f=>o(f)).map(f=>f.key).join(", ");throw new Error(`Unable to get bulk documents: ${l}`)}return a.map(c=>n?c.doc:c.value)}async remove(e,r){return this.performCall(n=>{let i,o;if(sFt(e)?(i=e._id,o=e._rev):(i=e,o=r),!i||!o)throw new Error("Unable to remove doc without a valid _id and _rev.");return()=>n.destroy(i,o)})}async bulkRemove(e,r){let n=await this.performCall(a=>()=>a.bulk({docs:e.map(u=>({...u,_deleted:!0}))}));if(r?.silenceErrors)return;let i=!1,o="Unable to bulk remove documents: ";for(let a of n)a.error&&(i=!0,o+=a.error);if(i)throw new cv(o,{name:this.name,status:400})}async post(e,r){return e._id||(e._id=MI()),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===mZt)return{offset:0,total_rows:0,rows:[]};throw n}})}async _sqlQuery(e,r,n){e=jfe(`${this.couchInfo.sqlUrl}/${e}`);let i={url:e,method:r,cookie:this.couchInfo.cookie};return n&&(i.body=n),this.performCall(()=>async()=>{let o=await lHe(i),a=await o.text();if(o.status>300){let u;try{u=JSON.parse(a)}catch{throw console.error(`SQS error: ${a}`),new cv("error while running SQS query, please try again later",{name:"sqs_error",status:o.status})}throw u}return JSON.parse(a)})}async sql(e,r){let i=`/${this.name}/${o$}`;return fHe("sqlite3",e,r),await this._sqlQuery(i,"POST",{query:e,args:r})}async sqlDiskCleanup(){let r=`/${this.name}/_cleanup`;try{await this._sqlQuery(r,"POST")}catch(n){if(n.status!==500)throw n}}async sqlPurgeDocument(e){Array.isArray(e)||(e=[e]);let n=`/${this.name}/_purge`;return await this._sqlQuery(n,"POST",{docs:e})}async query(e,r){return this.performCall(n=>{let[i,o]=e.split("/");return()=>n.view(i,o,r)})}async destroy(){if(await this.exists(o$)){let e=await this.get(o$);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 cv(e.message,e)}}async compact(){return this.performCall(e=>()=>e.compact())}async dump(e,r){return uv(this.name).dump(e,r)}async load(e){return uv(this.name).load(e)}async createIndex(e){return uv(this.name).createIndex(e)}async deleteIndex(e){return uv(this.name).deleteIndex(e)}async getIndexes(){return uv(this.name).getIndexes()}};function GT(t,e){return new rK(new Vfe(t,e))}s(GT,"getDB");var bxi="No app provided";function dHe(t){if(!t)throw bxi;return t.startsWith(Kb)}s(dHe,"isDevWorkspaceID");function hHe(t){if(!t||t.startsWith(Kb))return t;let e=t.split(UP);e.shift();let r=e.join(UP);return`${Kb}${r}`}s(hHe,"getDevWorkspaceID");function H3(t){if(!t||!t.startsWith(Kb))return t;let e=t.split(Kb);e.shift();let r=e.join(Kb);return`${UP}${r}`}s(H3,"getProdWorkspaceID");var yZt=require("async_hooks");var Vl=class t{static{s(this,"Context")}static{this.storage=new yZt.AsyncLocalStorage}static run(e,r){return t.storage.run(e,()=>r())}static get(){return t.storage.getStore()}};var TZt=null;function nK(t){return t||(t=Hs()),Hfe(t)}s(nK,"getGlobalDBName");function SZt(t){return t||(t=Hs()),t===uh?UT.AUDIT_LOGS.name:`${t}${"_"}${UT.AUDIT_LOGS.name}`}s(SZt,"getAuditLogDBName");function Nxi(t){return t||(t=Hs()),t===uh?UT.SCIM_LOGS.name:`${t}${"_"}${UT.SCIM_LOGS.name}`}s(Nxi,"getScimDBName");function Hfe(t){return!t||t===uh?UT.GLOBAL.name:`${t}${"_"}${UT.GLOBAL.name}`}s(Hfe,"baseGlobalDBName");function pHe(){return lt.PLATFORM_URL}s(pHe,"getPlatformURL");function ZP(){return!!lt.MULTI_TENANCY}s(ZP,"isMultiTenant");function Oxi(){return!!Vl.get()?.tenantId}s(Oxi,"isTenantIdSet");function xxi(){return lt.MULTI_TENANCY}s(xxi,"isTenancyEnabled");function Y3(t){if(!t)return;if(!ZP())return uh;let e=t.split("_"),r=e[1]==="dev";if(!(r&&e.length===3||!r&&e.length===2))return r?e[2]:e[1]}s(Y3,"getTenantIDFromWorkspaceID");function vxi(t){let e;try{e=Vl.get()}catch{e={}}return e={...e,...t},e}s(vxi,"updateContext");async function jT(t,e){Uxi();let r=vxi(t);return Vl.run(r,e)}s(jT,"newContext");async function Dxi(t){return await CZt(),await jT({tenantId:Y3(t.workspaceId),appId:t.workspaceId,automationId:t.automationId},t.task)}s(Dxi,"doInAutomationContext");async function gHe(t,e){let r=Y3(t);return jT({tenantId:r,appId:t},e)}s(gHe,"doInContext");async function iw(t,e){return lt.MULTI_TENANCY||(t=t||uh),jT(t?{tenantId:t}:{},e)}s(iw,"doInTenant");async function Bxi(t,e){return jT({tenantId:t,isSelfHostUsingCloud:!0},e)}s(Bxi,"doInSelfHostTenantUsingCloud");async function kxi(t,e){return jT({license:t},e)}s(kxi,"doInLicenseContext");function Pxi(){return Vl.get()?.license}s(Pxi,"getLicense");function Yfe(){return!!Vl.get()?.isSelfHostUsingCloud}s(Yfe,"isSelfHostUsingCloud");function Lxi(){let t=Vl.get();if(!t||!t.isSelfHostUsingCloud)throw new Error("Self-host cloud DB not found");return GT(UT.SELF_HOST_CLOUD.name)}s(Lxi,"getSelfHostCloudDB");async function Mxi(t,e){return IZt(t,e)}s(Mxi,"doInWorkspaceContext");async function IZt(t,e,r){if(!t)throw new Error("workspaceId is required");let n=Y3(t),i={appId:t,...r};return n&&(i.tenantId=n),jT(i,e)}s(IZt,"_doInWorkspaceContext");async function Hle(t,e){if(!t)throw new Error("identity is required");let r={identity:t};return t.tenantId&&(r.tenantId=t.tenantId),jT(r,e)}s(Hle,"doInIdentityContext");function Uxi(){if(Vl.get()?.isMigrating)throw new Error("The context cannot be changed, a migration is currently running")}s(Uxi,"guardMigration");async function Fxi(t,e){return IZt(t,e,{isMigrating:!0})}s(Fxi,"doInWorkspaceMigrationContext");function Xx(){try{return Vl.get()?.identity}catch{}}s(Xx,"getIdentity");function Hs(){if(!ZP())return uh;let e=Vl.get()?.tenantId;if(!e)throw new Error("Tenant id not found");return e}s(Hs,"getTenantId");function mHe(){return Vl.get()?.automationId}s(mHe,"getAutomationId");function uA(){let e=Vl.get()?.appId;return!e&&lt.isTest()&&TZt?TZt:e}s(uA,"getWorkspaceId");function Qxi(){let t=uA();if(!t)throw new Error("Workspace id not set");return t}s(Qxi,"getOrThrowWorkspaceId");function AHe(){return Vl.get()?.ip}s(AHe,"getIP");var qxi=s(()=>{let t=uA();if(!t)throw new Error("Could not get workspaceId");return hHe(t)},"getDevWorkspaceId"),Gxi=s(()=>{let t=uA();if(!t)throw new Error("Could not get workspaceId");return H3(t)},"getProdWorkspaceId");function jxi(t,e){if(!t)throw new Error("Must supply environment variables.");return jT({environmentVariables:t},e)}s(jxi,"doInEnvironmentContext");function Vxi(t){return jT({isScim:!0},t)}s(Vxi,"doInScimContext");function RZt(t,e){return jT({ip:t},e)}s(RZt,"doInIPContext");async function CZt(){let t=eL();if(!t||t.snippets)return;let e,r=_He();r&&(e=(await r.tryGet("app_metadata"))?.snippets),t.snippets=e||[]}s(CZt,"ensureSnippetContext");function Hxi(){let t=Vl.get();return t.environmentVariables?t.environmentVariables:null}s(Hxi,"getEnvironmentVariables");function lp(){let t=Vl.get();if(!t||lt.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 GT(Hfe(t?.tenantId))}s(lp,"getGlobalDB");function Yxi(){if(!Hs())throw new Error("No tenant ID found - cannot open audit log DB");return GT(SZt())}s(Yxi,"getAuditLogsDB");function _He(t){let e=uA();if(!e)throw new Error("Unable to retrieve workspace DB - no workspace ID.");if(Yfe())throw new Error("Workspace DB not found - self-host users using cloud don't have workspace DBs");return GT(e,t)}s(_He,"getWorkspaceDB");function Wxi(t){let e=uA();if(!e)throw new Error("Unable to retrieve prod DB - no workspace ID.");return GT(H3(e),t)}s(Wxi,"getProdWorkspaceDB");function zxi(t){let e=uA();if(!e)throw new Error("Unable to retrieve dev DB - no workspace ID.");return GT(hHe(e),t)}s(zxi,"getDevWorkspaceDB");function EHe(){return!!Vl.get()?.isScim}s(EHe,"isScim");function eL(){try{return Vl.get()}catch{return}}s(eL,"getCurrentContext");function yHe(t){let e=eL();if(e)return e.featureFlagCache?.[t]}s(yHe,"getFeatureFlags");function THe(t,e){let r=eL();r&&(r.featureFlagCache??={},r.featureFlagCache[t]=e)}s(THe,"setFeatureFlags");function SHe(){return eL()?.featureFlagOverrides||{}}s(SHe,"getFeatureFlagOverrides");async function bZt(t,e){return await jT({featureFlagOverrides:t},e)}s(bZt,"doInFeatureFlagOverrideContext");function $xi(t){let e=eL();if(e)return e.viewToTableCache?.[t]}s($xi,"getTableForView");function Kxi(t,e){let r=eL();r&&(r.viewToTableCache??={},r.viewToTableCache[t]=e)}s(Kxi,"setTableForView");function wZt(){let t=uA();return dHe(t)}s(wZt,"isDevWorkspace");function Jxi(){return!wZt()}s(Jxi,"isProdWorkspace");var Ype=ge(ltr());var Hpe=require("dd-trace"),$hr=ge(y3());var zhr;if(lt.MOCK_REDIS)try{zhr=Whr()}catch{console.log("Mock redis unavailable")}async function ZZi(t=0){return await Hpe.tracer.trace("Redis.init",async e=>{if(lt.MOCK_REDIS)return e.addTags({mock:!0}),new zhr(S3());let r;if(lt.REDIS_CLUSTERED){e.addTags({clustered:!0});let{host:n,port:i}=z4e();r=new Ype.Cluster([{host:n,port:i}],B6t())}else r=new Ype.default(S3());return new Promise((n,i)=>{r.on("error",o=>{e.addTags({error:!0}),console.error(`failed to connect to redis (db: ${t})`,o),i(o)}),r.on("reconnecting",()=>{console.log(`Redis reconnecting... (db: ${t})`)}),r.on("ready",()=>{e.addTags({connected:!0}),console.log(`Redis ready to receive commands (db: ${t})`),n(r)})})})}s(ZZi,"init");function ees(t,e){return new Promise((r,n)=>{let i=new Set;t.on("data",o=>o.forEach(a=>i.add(a))),t.on("error",o=>n(o)),t.on("end",async()=>{try{let o=Array.from(i).map(async a=>{let u=await e.get(a);return u&&(u=JSON.parse(u)),{key:k6t(a),value:u}});r(await Promise.all(o))}catch(o){n(o)}})})}s(ees,"promisifyStream");function tes(t){return t.isCluster}s(tes,"isCluster");var R$e=class t{static{s(this,"RedisWrapper")}constructor(e,r){this.client=e,this.db=r}static async init(e,r=0){return await Hpe.tracer.trace("RedisWrapper.init",async n=>{let i=await ZZi(r);return r&&!lt.isTest()&&(n.addTags({db:e}),i.select(r)),new t(i,e)})}trace(e,r){return Hpe.tracer.trace(e,async n=>(n.addTags({db:this.db}),await r(n)))}prefixed(e){return e.includes(this.db)?e:`${this.db}${c$}${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}${c$}${e}`;let n;tes(this.client)?n=this.client.nodes("master")[0].scanStream({match:e+"*",count:100}):n=this.client.scanStream({match:e+"*",count:100});let i=await ees(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,$hr.zip)(e,n).reduce((i,[o,a])=>{if(o===void 0||a===void 0)throw new Error(`Keys and response length mismatch: ${e.length} vs ${n.length}`);try{i[o]=a?JSON.parse(a):null}catch{i[o]=a}return i},{})})}async store(e,r,n=null){return await this.trace("RedisWrapper.store",async i=>{i.addTags({key:e,expirySeconds:n}),typeof r=="object"&&(r=JSON.stringify(r)),await this.client.set(this.prefixed(e),r),n&&await this.client.expire(this.prefixed(e),n)})}async bulkStore(e,r=null){return await this.trace("RedisWrapper.bulkStore",async n=>{n.addTags({numKeys:Object.keys(e).length,expirySeconds:r});let i=Object.entries(e).reduce((a,[u,c])=>(a[this.prefixed(u)]=typeof c=="object"?JSON.stringify(c):c,a),{}),o=this.client.pipeline();if(o.mset(i),r!==null)for(let a of Object.keys(i))o.expire(a,r);await o.exec()})}async getTTL(e){return await this.trace("RedisWrapper.getTTL",async r=>(r.addTags({key:e}),await this.client.ttl(this.prefixed(e))))}async setExpiry(e,r){return await this.trace("RedisWrapper.setExpiry",async n=>(n.addTags({key:e,expirySeconds:r}),await this.client.expire(this.prefixed(e),r)))}async delete(e){return await this.trace("RedisWrapper.delete",async r=>{r.addTags({key:e}),await this.client.del(this.prefixed(e))})}async bulkDelete(e){return await this.trace("RedisWrapper.bulkDelete",async r=>{r.addTags({numKeys:e.length}),await this.client.del(e.map(n=>this.prefixed(n)))})}async clear(){return await this.trace("RedisWrapper.clear",async e=>{let r=await this.scan();e.addTags({numKeys:r.length}),await Promise.all(r.map(n=>this.delete(n.key)))})}async increment(e){return await this.trace("RedisWrapper.increment",async r=>{r.addTags({key:e});let n=await this.client.incr(this.prefixed(e));if(isNaN(n))throw new Error(`Redis ${e} does not contain a number`);return n})}async deleteIfValue(e,r){return await this.trace("RedisWrapper.deleteIfValue",async n=>{n.addTags({key:e}),await this.client.eval(`
4416
4416
  if redis.call('GET', KEYS[1]) == ARGV[1] then
4417
4417
  redis.call('DEL', KEYS[1])
4418
4418
  end
@@ -4431,7 +4431,7 @@ $1`)};iae.parseAttributes=s(function(e){return Object.keys(e).map(function(r){va
4431
4431
  if (doc._id.startsWith("devinfo") && doc.apiKey) {
4432
4432
  emit(doc.apiKey, doc.userId)
4433
4433
  }
4434
- }`;await Kpe(t,e,"by_api_key")},"createApiKeyView");async function C$e(t,e,r,n,i){try{return await r.query(`database/${t}`,e)}catch(o){let a=o&&o.name==="not_found",u=o&&o.status===404;if(a||u)return await ues(r,t),await n(),C$e(t,e,r,n,i);if(o.status===409)return C$e(t,e,r,n,i);throw o}}s(C$e,"queryViewRaw");var des=s(async(t,e,r,n,i)=>{let u=(await C$e(t,e,r,n,i)).rows.map(c=>e.include_docs?c.doc:c.value);return i?.arrayResponse?u:u.length<=1?u[0]:u},"queryView");var hes={by_email2:ces,by_api_key:fes,by_app:les},Jpe=s(async(t,e,r,n)=>{r||(r=lp());let i=hes[t];return des(t,e,r,i,n)},"queryGlobalView");ur();var pes=ge(require("pouchdb"));var ges=require("dd-trace");var fpr=ge(require("node-fetch"));ur();var w$e=_3.removeKeyNumbering;function n1(t){return t==null||t===""}s(n1,"isEmpty");var cpr=class t{static{s(this,"QueryBuilder")}#e;#r;#t;#i;#s;#n;#c;#o;#a;#u;#l;#f=!1;#d;static{this.maxLimit=200}constructor(e,r,n){this.#e=e,this.#r=r,this.#t={allOr:!1,onEmptyFilter:"all",string:{},fuzzy:{},range:{},equal:{},notEqual:{},empty:{},notEmpty:{},oneOf:{},notOneOf:{},contains:{},notContains:{},containsAny:{},...n},this.#i=50,this.#c="ascending",this.#o="string",this.#a=!0}disableEscaping(){return this.#f=!0,this}setIndexBuilder(e){return this.#l=e,this}setVersion(e){return e!=null&&(this.#u=e),this}setTable(e){return this.#t.equal.tableId=e,this}setLimit(e){return e!=null&&(this.#i=e),this}setSort(e){return e!=null&&(this.#s=e),this}setSortOrder(e){return e!=null&&(this.#c=e),this}setSortType(e){return e!=null&&(this.#o=e),this}setBookmark(e){return e!=null&&(this.#n=e),this}setSkip(e){return this.#d=e,this}excludeDocs(){return this.#a=!1,this}includeDocs(){return this.#a=!0,this}addString(e,r){return this.#t.string[e]=r,this}addFuzzy(e,r){return this.#t.fuzzy[e]=r,this}addRange(e,r,n){return this.#t.range[e]={low:r,high:n},this}addEqual(e,r){return this.#t.equal[e]=r,this}addNotEqual(e,r){return this.#t.notEqual[e]=r,this}addEmpty(e,r){return this.#t.empty[e]=r,this}addNotEmpty(e,r){return this.#t.notEmpty[e]=r,this}addOneOf(e,r){return this.#t.oneOf[e]=r,this}addNotOneOf(e,r){return this.#t.notOneOf[e]=r,this}addContains(e,r){return this.#t.contains[e]=r,this}addNotContains(e,r){return this.#t.notContains[e]=r,this}addContainsAny(e,r){return this.#t.containsAny[e]=r,this}setAllOr(){this.#t.allOr=!0}setOnEmptyFilter(e){this.#t.onEmptyFilter=e}handleSpaces(e){return this.#f?e:e.replace(/ /g,"_")}preprocess(e,{escape:r,lowercase:n,wrap:i,type:o}={}){let a=!!this.#u,u=typeof e;return e&&n&&(e=e.toLowerCase?e.toLowerCase():e),!this.#f&&r&&u==="string"&&(e=`${e}`.replace(/[ /#+\-&|!(){}\]^"~*?:\\]/g,"\\$&")),u==="string"&&!isNaN(e)&&!o?e=`"${e}"`:a&&i&&(e=u==="number"?e:`"${e}"`),e}isMultiCondition(){let e=0;for(let r of Object.values(this.#t))typeof r=="object"&&(e+=Object.keys(r).length);return e>1}compressFilters(e){let r={};for(let o of Object.keys(e)){let a=w$e(o);r[a]?r[a]=r[a].concat(e[o]):r[a]=e[o]}let n={},i=1;for(let[o,a]of Object.entries(r))n[`${i++}:${o}`]=a;return n}buildSearchQuery(){let e=this,r=this.#t&&this.#t.allOr,n=r?"":"*:*",i=!0,o={escape:!0,lowercase:!0,wrap:!0},a="";this.#t.equal.tableId&&(a=this.#t.equal.tableId,delete this.#t.equal.tableId);let u=s((S,b)=>n1(b)?null:`${S}:${e.preprocess(b,o)}`,"equal"),c=s((S,b,C="AND")=>{if(n1(b))return null;if(!Array.isArray(b))return`${S}:${b}`;let B=`${e.preprocess(b[0],{escape:!0})}`;for(let k=1;k<b.length;k++)B+=` ${C} ${e.preprocess(b[k],{escape:!0})}`;return`${S}:(${B})`},"contains"),l=s((S,b)=>n1(b)?null:(b=e.preprocess(b,{escape:!0,lowercase:!0,type:"fuzzy"}),`${S}:/.*${b}.*/`),"fuzzy"),f=s((S,b)=>{let C=r?"*:* AND ":"",B=r?"AND":void 0;return C+"NOT "+c(S,b,B)},"notContains"),d=s((S,b)=>c(S,b,"OR"),"containsAny"),m=s((S,b)=>{if(n1(b))return"*:*";if(!Array.isArray(b))if(typeof b=="string")b=b.split(",");else return"";let C=`${e.preprocess(b[0],o)}`;for(let B=1;B<b.length;B++)C+=` OR ${e.preprocess(b[B],o)}`;return`${S}:(${C})`},"oneOf"),A=s((S,b)=>{if(n1(b))return null;if(!Array.isArray(b))if(typeof b=="string")b=b.split(",");else return"";let C=`${e.preprocess(b[0],o)}`;for(let B=1;B<b.length;B++)C+=` OR ${e.preprocess(b[B],o)}`;return`(*:* -${S}:(${C}))`},"notOneOf");function T(S,b,C){let B="";for(let[k,P]of Object.entries(S)){k=w$e(k),k=e.preprocess(e.handleSpaces(k),{escape:!0});let x=b(k,P);if(x!=null){if(B.length>0||n.length>0){let V=C?.mode?C.mode:r?"OR":"AND";B+=` ${V} `}B+=x,(typeof P!="string"&&P!=null||typeof P=="string"&&P!==a&&P!=="")&&(i=!1)}}if(C?.returnBuilt)return B;n+=B}if(s(T,"build"),this.#t.string&&T(this.#t.string,(S,b)=>n1(b)?null:(b=e.preprocess(b,{escape:!0,lowercase:!0,type:"string"}),`${S}:${b}*`)),this.#t.range&&T(this.#t.range,(S,b)=>{if(n1(b)||b.low==null||b.low===""||b.high==null||b.high==="")return null;let C=e.preprocess(b.low,o),B=e.preprocess(b.high,o);return`${S}:[${C} TO ${B}]`}),this.#t.fuzzy&&T(this.#t.fuzzy,l),this.#t.equal&&T(this.#t.equal,u),this.#t.notEqual&&T(this.#t.notEqual,(S,b)=>n1(b)?null:typeof b=="boolean"?`(*:* AND !${S}:${b})`:`!${S}:${e.preprocess(b,o)}`),this.#t.empty&&T(this.#t.empty,S=>(i=!1,`(*:* -${S}:["" TO *])`)),this.#t.notEmpty&&T(this.#t.notEmpty,S=>(i=!1,`${S}:["" TO *]`)),this.#t.oneOf&&T(this.#t.oneOf,m),this.#t.notOneOf&&T(this.#t.notOneOf,A),this.#t.contains&&T(this.#t.contains,c),this.#t.notContains&&T(this.compressFilters(this.#t.notContains),f),this.#t.containsAny&&T(this.#t.containsAny,d),a&&(n=this.isMultiCondition()?`(${n})`:n,r=!1,T({tableId:a},u)),i){if(this.#t.onEmptyFilter==="none")return"";if(this.#t?.allOr)return n.replace("()","(*:*)")}return n}buildSearchBody(){let e={q:this.buildSearchQuery(),limit:Math.min(this.#i,t.maxLimit),include_docs:this.#a};if(this.#n&&(e.bookmark=this.#n),this.#s){let r=this.#c==="descending"?"-":"",n=`<${this.#o}>`;e.sort=`${r}${this.handleSpaces(this.#s)}${n}`}return e}async run(){return this.#d&&await this.#p(this.#d),await this.#m()}async#p(e){let r=this.#a,n=this.#i;this.excludeDocs();let i=e,o=0;do{let a=Math.min(t.maxLimit,i);this.setLimit(a);let{bookmark:u,rows:c}=await this.#m();this.setBookmark(u),o=c.length,i-=c.length}while(i>0&&o>0);this.#a=r,this.#i=n}async#m(){let{url:e,cookie:r}=Zx(),n=`${e}/${this.#e}/_design/database/_search/${this.#r}`,i=this.buildSearchBody();try{return await lpr(n,i,r)}catch(o){if(o.status===404&&this.#l)return await this.#l(),await lpr(n,i,r);throw o}}};async function lpr(t,e,r){let n=await(0,fpr.default)(t,{body:JSON.stringify(e),method:"POST",headers:{Authorization:r}});if(n.status===404)throw n;let i=await n.json(),o={rows:[],totalRows:0};return i.rows!=null&&i.rows.length>0&&(o.rows=i.rows.map(a=>a.doc)),i.bookmark&&(o.bookmark=i.bookmark),i.total_rows&&(o.totalRows=i.total_rows),o}s(lpr,"runQuery");ur();var U7={};Fi(U7,{addTenantToUrl:()=>Aes,getTenantDB:()=>dpr,getTenantIDFromCtx:()=>N$e,isUserInWorkspaceTenant:()=>_es});function dpr(t){return GT(nK(t))}s(dpr,"getTenantDB");ur();function Aes(t){let e=Hs();if(ZP()){let r=t.indexOf("?")===-1?"?":"&";t+=`${r}tenantId=${e}`}return t}s(Aes,"addTenantToUrl");var _es=s((t,e)=>{let r;return e?r=e.tenantId||uh:r=Hs(),(Y3(t)||uh)===r},"isUserInWorkspaceTenant"),Ees=Object.values(W9),N$e=s((t,e)=>{if(!ZP())return uh;e.allowNoTenant===void 0&&(e.allowNoTenant=!1),e.includeStrategies||(e.includeStrategies=Ees),e.excludeStrategies||(e.excludeStrategies=[]);let r=s(n=>{if(e.excludeStrategies?.includes(n))return!1;if(e.includeStrategies?.includes(n))return!0},"isAllowed");if(r("user")){let n=t.user?.tenantId;if(n)return n}if(r("header")){let n=t.request.headers["x-budibase-tenant-id"];if(n)return n}if(r("query")){let n=t.request.query.tenantId;if(n)return n}if(r("subdomain")){let n;try{n=new URL(pHe()).host.split(":")[0]}catch(o){if(o.code!=="ERR_INVALID_URL")throw o}let i=t.host;if(n&&i.includes(n)){let o=i.substring(0,i.indexOf(`.${n}`));if(o)return o}}if(r("path")){let n=t.matched.find(a=>!!a.paramNames.find(u=>u.name==="tenantId")),i=t.originalUrl,o;if(i.includes("?")?o=i.split("?")[0]:o=i,n){let a=n.params(o,n.captures(o),{});if(a.tenantId)return a.tenantId}}e.allowNoTenant||t.throw(403,"Tenant id not set")},"getTenantIDFromCtx");ur();var Xpe={milliseconds:1,seconds:1e3,minutes:60*1e3,hours:3600*1e3,days:1440*60*1e3},_h=class t{constructor(e){this.ms=e}static{s(this,"Duration")}to(e){return this.ms/Xpe[e]}toMs(){return this.ms}toSeconds(){return this.to("seconds")}static convert(e,r,n){return n*Xpe[e]/Xpe[r]}static from(e,r){return new t(r*Xpe[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)}};function hpr(){let t=_h.fromDays(7).toSeconds();if(!lt.SESSION_EXPIRY_SECONDS)return t;let e=parseInt(lt.SESSION_EXPIRY_SECONDS);return Number.isFinite(e)&&e>0?e:t}s(hpr,"getSessionExpirySeconds");var ihu="app_";function ppr(t){return new Promise(e=>setTimeout(e,t))}s(ppr,"timeout");function gpr(t){return!!iUt[t]}s(gpr,"isAudited");var eIr=ge(ZSr());var fZe=require("util"),dZe=ge(require("zlib"));var pAu=(0,fZe.promisify)(dZe.default.gzip),gAu=(0,fZe.promisify)(dZe.default.gunzip);var aIr=ge(require("http")),uIr=ge(require("https"));var tIr=ge(require("dns")),D1=ge(require("net"));var rIr=require("util");var rAs=["127.0.0.0/8","10.0.0.0/8","172.16.0.0/12","192.168.0.0/16","169.254.0.0/16","0.0.0.0/8","::1/128","fc00::/7","fe80::/10"],pZe,nAs=(0,rIr.promisify)(tIr.default.lookup);function nIr(){return!(lt.SELF_HOSTED&&lt.BLACKLIST_IPS!==void 0)}s(nIr,"shouldApplyDefaultBlacklist");function gZe(t){return D1.default.isIP(t)===6?"ipv6":"ipv4"}s(gZe,"getIpVersion");function iAs(t){let e=D1.default.isIP(t);return e===4?32:e===6?128:null}s(iAs,"getMaxPrefixLength");function sAs(t,e){if(!/^\d+$/.test(e))return null;let r=Number.parseInt(e,10),n=iAs(t);return n==null||r>n?null:r}s(sAs,"getValidSubnetPrefix");function oAs(t){return D1.default.isIP(t)?t:(/^https?:\/\//.test(t)||(t=`https://${t}`),new URL(t).hostname.replace(/^\[|\]$/g,""))}s(oAs,"parseAddress");async function iIr(t){return t=oAs(t),(await nAs(t,{all:!0})).map(r=>r.address)}s(iIr,"lookup");async function mZe(t){return D1.default.isIP(t)?[t]:iIr(t)}s(mZe,"resolveAddress");function hZe(t,e){let r=e.trim();if(!r)return;let n=r.split("/");if(n.length>2){console.log(`Ignoring invalid blacklist entry: ${r}`);return}let[i,o]=n,a=D1.default.isIP(i);if(n.length===2){let u=sAs(i,o);if(a&&u!==null){t.addSubnet(i,u,gZe(i));return}console.log(`Ignoring invalid blacklist entry: ${r}`);return}a&&t.addAddress(i,gZe(i))}s(hZe,"addEntryToBlacklist");async function aAs(){let t=new D1.default.BlockList;if(nIr())for(let r of rAs)hZe(t,r);let e=lt.BLACKLIST_IPS?.split(",")||[];for(let r of e){let n=r.trim();if(!n)continue;let[i]=n.split("/");if(D1.default.isIP(i)){hZe(t,n);continue}let o=await iIr(n);for(let a of o)hZe(t,a)}pZe=t}s(aAs,"refreshBlacklist");async function sIr(t){pZe||await aAs();let e;try{e=await mZe(t)}catch(r){return r instanceof TypeError?(console.error("Black list error: could not parse address: ",t),!0):nIr()}return e.some(r=>pZe.check(r,gZe(r)))}s(sIr,"isBlacklisted");var Zme=ge(require("node-fetch"));var oIr=5,cAs=new Set(["http:","https:"]),lAs=["authorization","cookie","cookie2","proxy-authorization"];function AZe(t){let e;try{e=new URL(t)}catch{throw new Error("Invalid URL.")}if(!cAs.has(e.protocol))throw new Error("Only HTTP(S) URLs are allowed.");if(e.username||e.password)throw new Error("URL must not include credentials.");return e}s(AZe,"parseUrl");function fAs(t){return[301,302,303,307,308].includes(t)}s(fAs,"isRedirect");async function dAs(t){let e=AZe(t),r=await mZe(e.hostname);if(r.length===0)throw new Error("URL is blocked or could not be resolved safely.");for(let n of r)if(await sIr(n))throw new Error("URL is blocked or could not be resolved safely.");return r[0]}s(dAs,"resolveSafePinnedIp");function hAs(t,e){let r=new URL(t).protocol,n=s((i,o,a)=>{let u=e.includes(":")?6:4;if(typeof o=="object"&&o?.all){a(null,[{address:e,family:u}]);return}a(null,e,u)},"lookup");return r==="https:"?new uIr.default.Agent({lookup:n}):new aIr.default.Agent({lookup:n})}s(hAs,"makePinnedAgent");function pAs(t,e){let r=t.method?.toUpperCase()||"GET";return e===303||(e===301||e===302)&&r==="POST"?{...t,body:void 0,method:"GET",redirect:"manual"}:t}s(pAs,"nextRequestForRedirect");function gAs(t,e){return new URL(t).origin!==new URL(e).origin}s(gAs,"shouldStripSensitiveHeadersForRedirect");function mAs(t){if(!t.headers)return t;let e=new Zme.Headers(t.headers);return lAs.forEach(r=>e.delete(r)),{...t,headers:e}}s(mAs,"stripSensitiveHeadersForRedirect");function AAs(t){return!t||typeof t!="object"||!("resume"in t)?!1:typeof t.resume=="function"}s(AAs,"isResumableBody");function _As(t){let e=t.body;AAs(e)&&e.resume()}s(_As,"releaseResponseBody");async function GJ(t,e={},{followRedirects:r=!0,returnRedirectWithoutLocation:n=!1,fetchFn:i=Zme.default}={}){let o=t,a={...e,redirect:"manual"};for(let u=0;u<=oIr;u++){let c=await dAs(o),l;try{l=await i(o,{...a,agent:hAs(o,c)})}catch(m){let A=AZe(o).hostname;throw m instanceof Error?(m.message=`Failed to connect to resolved IP for ${A}: ${m.message}`,m):new Error(`Failed to connect to resolved IP for ${A}: unknown network error`)}if(!fAs(l.status))return l;if(_As(l),!r)throw new Error("Redirects are not permitted.");if(u===oIr)break;let f=l.headers.get("location");if(!f){if(n)return l;throw new Error("Maximum redirect reached.")}let d=AZe(new URL(f,o).toString()).toString();a=pAs(a,l.status),gAs(o,d)&&(a=mAs(a)),o=d}throw new Error("Maximum redirect reached.")}s(GJ,"fetchWithBlacklist");function EAs(t){let e="",r=-1,n,i,o=t.opts?.repeat;return o&&(i=o.endDate?new Date(o.endDate).getTime():Date.now(),n=o.tz,"cron"in o?e=o.cron:r=o.every),{id:t.id.toString(),name:"",key:t.id.toString(),tz:n,endDate:i,cron:e,every:r,next:0}}s(EAs,"jobToJobInformation");var _Ze=class{static{s(this,"InMemoryQueue")}constructor(e,r){this._name=e,this._opts=r,this._messages=[],this._emitter=new cIr.default.EventEmitter,this._runCount=0,this._addCount=0,this._queuedJobIds=new Set,this._attempts=r?.defaultJobOptions?.attempts||1}async process(e,r){r=typeof e=="number"?r:e,this._emitter.on("message",async n=>{if(!n.manualTrigger&&n.opts?.repeat!=null)return;function i(){return r.length===1?r(n):new Promise((c,l)=>{r(n,s((d,m)=>{d?l(d):c(m)},"done"))})}s(i,"execute");let o=this._attempts;async function a(c,l=0){try{return await c}catch(f){if(l++,l<o&&!n._isDiscarded)return await $b.wait(100*l),await a(i(),l);throw f}}s(a,"retryFunc");try{let c=await a(i());this._emitter.emit("completed",n,c);let l=this._messages.indexOf(n);if(l===-1)throw"Failed deleting a processed message";this._messages.splice(l,1)}catch(c){console.error(c),this._emitter.emit("error",n,c)}this._runCount++;let u=n.opts?.jobId?.toString();u&&n.opts?.removeOnComplete&&this._queuedJobIds.delete(u)})}async isReady(){return this}async add(e,r){if(typeof e=="string")throw new Error("doesn't support named jobs");let n=r,i=n?.jobId?.toString();if(i&&this._queuedJobIds.has(i)){console.log(`Ignoring already queued job ${i}`);return}if(typeof e!="object")throw"Queue only supports carrying JSON.";i&&this._queuedJobIds.add(i);let o=MI(),a=s(()=>{let c={id:o,timestamp:Date.now(),queue:this,data:e,opts:n,discard:s(async()=>{c._isDiscarded=!0},"discard")};this._messages.push(c),this._messages.length>1e3&&this._messages.shift(),this._addCount++,this._emitter.emit("message",c)},"pushMessage"),u=n?.delay;return u?setTimeout(a,u):a(),{id:i,finished:s(()=>new Promise((c,l)=>{let f=s((m,A)=>{m.id===o&&(this._emitter.off("error",f),this._emitter.off("completed",d),l(A))},"errorHandler"),d=s((m,A)=>{m.id===o&&(this._emitter.off("error",f),this._emitter.off("completed",d),c(A))},"completedHandler");this._emitter.on("error",f),this._emitter.on("completed",d)}),"finished")}}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=>EAs(e))}async whenCurrentJobsFinished(){do await ppr(50);while(this.hasRunningJobs())}hasRunningJobs(){return this._addCount>this._runCount}},lIr=_Ze;var btt=ge(fNr());function dNr(t,e,r){GIs(t,e),r&&QIs(t,r)}s(dNr,"addListeners");function QIs(t,e){t.on("stalled",async r=>{if(e)await e(r);else if(r.opts.repeat){let n=r.id,i=await t.getRepeatableJobs();for(let o of i)o.id===n&&await t.removeRepeatableByKey(o.key);console.log(`jobId=${n} disabled`)}})}s(QIs,"handleStalled");function Vy(t,e,r={},n={}){let i=`[BULL] ${t}=${e}`,o=r.error,a={_logKey:"bull",eventType:t,event:e,job:r.job,jobId:r.jobId||r.job?.id,...n},u;return r.job?.data?.automation&&(u={_logKey:"automation",trigger:r.job?r.job.data.automation.definition.trigger.event:void 0}),[i,o,a,u]}s(Vy,"getLogParams");var qIs={automationQueue:"automation-event",appBackupQueue:"app-backup-event",auditLogQueue:"audit-log-event",systemEventQueue:"system-event",appMigration:"app-migration",docWritethroughQueue:"doc-writethrough",devRevertProcessorQueue:"dev-revert-event",batchUserSyncProcessorQueue:"batch-user-sync-processor",ragIngestionQueue:"rag-ingestion-processor",agentLogIndexingQueue:"agent-log-indexing-processor",escalationQueue:"escalation-processor",agentRequestTrackingQueue:"agent-request-tracking-processor",agentTestRunQueue:"agent-test-run-processor",knowledgeSourceSyncQueue:"knowledge-source-sync-processor"};function GIs(t,e){let r=qIs[e];function n(i,o){let a=i.data.event?.appId;if(a)return gHe(a,o);o()}s(n,"doInJobContext"),t.on("stalled",async i=>{await n(i,()=>{console.error(...Vy(r,"stalled",{job:i}))})}).on("error",i=>{console.error(...Vy(r,"error",{error:i}))}),process.env.NODE_DEBUG?.includes("bull")&&t.on("waiting",i=>{console.info(...Vy(r,"waiting",{jobId:i}))}).on("active",async i=>{await n(i,()=>{console.info(...Vy(r,"active",{job:i}))})}).on("progress",async(i,o)=>{await n(i,()=>{console.info(...Vy(r,"progress",{job:i},{progress:o}))})}).on("completed",async(i,o)=>{await n(i,()=>{console.info(...Vy(r,"completed",{job:i},{result:o}))})}).on("failed",async(i,o)=>{await n(i,()=>{console.error(...Vy(r,"failed",{job:i,error:o}))})}).on("paused",()=>{console.info(...Vy(r,"paused"))}).on("resumed",()=>{console.info(...Vy(r,"resumed"))}).on("cleaned",(i,o)=>{console.info(...Vy(r,"cleaned",{},{length:i.length,type:o}))}).on("drained",()=>{console.info(...Vy(r,"drained"))}).on("removed",i=>{console.info(...Vy(r,"removed",{job:i}))})}s(GIs,"logging");var jIs=[];function hNr(t,e){let r=setInterval(t,e);return jIs.push(r),r}s(hNr,"set");var iN=ge(require("dd-trace")),pX=ge(QNr());var bRs=_h.fromMinutes(5).toMs(),wRs=_h.fromSeconds(30).toMs(),wtt=_h.fromSeconds(60).toMs(),jNr=[],qNr;async function GNr(){for(let t of jNr)await t.clean(wtt,"completed"),await t.clean(wtt,"failed")}s(GNr,"cleanup");async function NRs(t,e,r){let n=performance.now();try{let i=await e();return iN.default.dogstatsd.increment(`${t}.success`,1,r),i}catch(i){throw iN.default.dogstatsd.increment(`${t}.error`,1,r),i}finally{let i=performance.now()-n;iN.default.dogstatsd.distribution(`${t}.duration.ms`,i,r),iN.default.dogstatsd.increment(t,1,r)}}s(NRs,"withMetrics");function VNr(t){return{"job.opts.attempts":t.attempts,"job.opts.backoff":t.backoff,"job.opts.delay":t.delay,"job.opts.jobId":t.jobId,"job.opts.lifo":t.lifo,"job.opts.preventParsingData":t.preventParsingData,"job.opts.priority":t.priority,"job.opts.removeOnComplete":t.removeOnComplete,"job.opts.removeOnFail":t.removeOnFail,"job.opts.repeat":t.repeat,"job.opts.stackTraceLimit":t.stackTraceLimit,"job.opts.timeout":t.timeout}}s(VNr,"jobOptsTags");function ORs(t){return{"job.id":t.id,"job.attemptsMade":t.attemptsMade,"job.timestamp":t.timestamp,"job.data.sizeBytes":(0,pX.default)(t.data),...VNr(t.opts||{})}}s(ORs,"jobTags");var eU=class{static{s(this,"BudibaseQueue")}constructor(e,r={}){this.opts=r,this.jobQueue=e,this.queue=this.initQueue()}get name(){return this.queue.name}initQueue(){let r={redis:S3(),settings:{maxStalledCount:this.opts.maxStalledCount?this.opts.maxStalledCount:0,lockDuration:bRs,lockRenewTime:wRs}};this.opts.jobOptions&&(r.defaultJobOptions=this.opts.jobOptions);let n;return lt.isTest()?process.env.BULL_TEST_REDIS_PORT&&!isNaN(+process.env.BULL_TEST_REDIS_PORT)?n=new btt.default(this.jobQueue,{...r,redis:{host:"localhost",port:+process.env.BULL_TEST_REDIS_PORT}}):n=new lIr(this.jobQueue,r):n=new btt.default(this.jobQueue,r),dNr(n,this.jobQueue,this.opts.removeStalledCb),jNr.push(n),!qNr&&!lt.isTest()&&(qNr=hNr(GNr,wtt),GNr().catch(i=>{console.error(`Unable to cleanup ${this.jobQueue} initially - ${i}`)})),n}getBullQueue(){return this.queue}process(...e){let r,n;e.length===2?(r=e[0],n=e[1]):n=e[0];let i=s(async(a,u)=>{await iN.default.trace("queue.process",async c=>{if(a.data._parentSpanContext){let l=a.data._parentSpanContext,f={traceId:l.traceId,spanId:l.spanId,toTraceId:s(()=>l.traceId,"toTraceId"),toSpanId:s(()=>l.spanId,"toSpanId"),toTraceparent:s(()=>"","toTraceparent")};c.addLink(f)}c.addTags({"queue.name":this.jobQueue,...ORs(a)}),this.opts.jobTags&&c.addTags(this.opts.jobTags(a.data)),iN.default.dogstatsd.distribution("queue.process.sizeBytes",(0,pX.default)(a.data),this.metricTags()),await this.withMetrics("queue.process",()=>u?n(a,u):n(a))})},"processCallback"),o;return n.length===1?o=s(a=>i(a),"wrappedCb"):o=i,r?this.queue.process(r,o):this.queue.process(o)}async add(e,r){return await iN.default.trace("queue.add",async n=>(n.addTags({"queue.name":this.jobQueue,"job.data.sizeBytes":(0,pX.default)(e),...VNr(r||{})}),this.opts.jobTags&&n.addTags(this.opts.jobTags(e)),e._parentSpanContext={traceId:n.context().toTraceId(),spanId:n.context().toSpanId()},iN.default.dogstatsd.distribution("queue.add.sizeBytes",(0,pX.default)(e),this.metricTags()),await this.withMetrics("queue.add",()=>this.queue.add(e,r))))}withMetrics(e,r){return NRs(e,r,this.metricTags())}metricTags(){return{queueName:this.jobQueue}}close(e){return this.queue.close(e)}whenCurrentJobsFinished(){return this.queue.whenCurrentJobsFinished()}};var KAe={};Fi(KAe,{getId:()=>Ott,setHeader:()=>LRs});var WNr=$Ae(),LRs=s(t=>{let e=WNr.getId();e&&(t["x-budibase-correlation-id"]=e)},"setHeader");function Ott(){return WNr.getId()}s(Ott,"getId");var Abe=ge(Xxr()),BJr=ge(Rst()),gpt=ge(require("dd-trace")),kJr=require("dd-trace/ext");var xJr=ge(require("path")),vJr=ge(gMr());var mbe={};Fi(mbe,{ObjectStore:()=>h0,ObjectStoreBuckets:()=>Mho,SIGNED_FILE_PREFIX:()=>opt,bucketTTLConfig:()=>cbe,budibaseTempDir:()=>CF,client3rdPartyLibrary:()=>xpo,clientLibraryPath:()=>Opo,clientLibraryUrl:()=>vpo,createBucketIfNotExists:()=>zte,deleteFile:()=>tpo,deleteFiles:()=>rpo,deleteFolder:()=>mJr,downloadTarball:()=>ipo,downloadTarballDirect:()=>npo,enrichPWAImages:()=>Dpo,enrichPluginURLs:()=>kpo,extractBucketAndPath:()=>rpt,getAllFiles:()=>Xho,getAppFileUrl:()=>IJr,getClientCacheKey:()=>SJr,getGlobalFileS3Key:()=>RJr,getGlobalFileUrl:()=>Bpo,getObjectMetadata:()=>spo,getPluginIconKey:()=>wJr,getPluginJSKey:()=>bJr,getPluginS3Dir:()=>OJr,getPresignedUrl:()=>bF,getReadStream:()=>lbe,getSafeRetrieveDirectoryPath:()=>gJr,listAllObjects:()=>apt,objectExists:()=>opo,processAutomationAttachment:()=>Fho,processObjectStoreAttachment:()=>tJr,retrieve:()=>pJr,retrieveDirectory:()=>epo,retrieveToTmp:()=>Zho,sanitizeBucket:()=>gm,sanitizeKey:()=>nf,streamUpload:()=>hJr,streamUploadMany:()=>Jho,upload:()=>Kho,uploadDirectory:()=>upt});var dbe=ge(Zdt()),npt=ge(j$r()),uJr=ge(Y$r()),cJr=ge(oKr());var JN=ge(require("dd-trace")),aH=ge(require("fs")),Yte=ge(require("fs/promises")),lJr=ge(require("https")),EE=require("path"),hbe=ge(require("stream")),Wte=require("stream/promises"),ipt=ge(K7r());zx();var spt=ge(require("zlib"));var J7r=ge(require("fs")),X7r=require("os"),Hte=ge(require("path")),Z7r=ge(require("stream"));var Mho={BACKUPS:lt.BACKUPS_BUCKET_NAME,APPS:lt.APPS_BUCKET_NAME,TEMPLATES:lt.TEMPLATES_BUCKET_NAME,GLOBAL:lt.GLOBAL_BUCKET_NAME,PLUGINS:lt.PLUGIN_BUCKET_NAME,TEMP:lt.TEMP_BUCKET_NAME},eJr=(0,Hte.join)((0,X7r.tmpdir)(),".budibase");try{J7r.default.mkdirSync(eJr)}catch(t){if(t.code!=="EEXIST")throw t}function CF(){return eJr}s(CF,"budibaseTempDir");var cbe=s((t,e)=>{let n={Rules:[{ID:`${t}-ExpireAfter${e}days`,Prefix:"",Status:"Enabled",Expiration:{Days:e}}]};return{Bucket:t,LifecycleConfiguration:n}},"bucketTTLConfig");async function Uho(t){let e=await GJ(t.url);if(!e.ok||!e.body)throw new Error(`Unexpected response ${e.statusText}`);let r=Hte.default.basename(new URL(t.url).pathname);if(!e.body)throw new Error("No response received for attachment");if(!(e.body instanceof Z7r.default.Readable))throw new Error("Unexpected response body stream type");return{filename:t.filename||r,content:e.body}}s(Uho,"processUrlAttachment");async function tJr(t){let e=rpt(t.url);if(e===null)throw new Error("Invalid signed URL");let{bucket:r,path:n}=e,{stream:i}=await lbe(r,n),o=Hte.default.basename(n);return{bucket:r,path:n,filename:t.filename||o,content:i}}s(tJr,"processObjectStoreAttachment");async function Fho(t){return t.url?.startsWith("http://")||t.url?.startsWith("https://")?await Uho(t):await tJr(t)}s(Fho,"processAutomationAttachment");var Yho=aJr(),Who={bucketCreationPromises:{}},opt="/files/signed",tB={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"},zho=[tB.html,tB.css,tB.js,tB.json];function nf(t){let e=Yho(gm(t)).replace(/\\/g,"/");if(e.split("/").some(r=>r==="."||r===".."))throw new Error("Invalid object store key: path traversal is not allowed.");return e}s(nf,"sanitizeKey");function gm(t){return t.replace(new RegExp(Kb,"g"),UP)}s(gm,"sanitizeBucket");function h0(t={presigning:!1}){let e={forcePathStyle:!0,credentials:{accessKeyId:lt.MINIO_ACCESS_KEY,secretAccessKey:lt.MINIO_SECRET_KEY},region:lt.AWS_REGION};if(!lt.MINIO_ENABLED&&lt.AWS_SESSION_TOKEN&&(e.credentials={accessKeyId:lt.MINIO_ACCESS_KEY,secretAccessKey:lt.MINIO_SECRET_KEY,sessionToken:lt.AWS_SESSION_TOKEN}),lt.MINIO_URL&&(t.presigning&&lt.MINIO_ENABLED?e.endpoint="http://minio-service":e.endpoint=lt.MINIO_URL),lt.S3_IGNORE_SELF_SIGNED==="true"){let r=new lJr.default.Agent({rejectUnauthorized:!1});e.requestHandler=new cJr.NodeHttpHandler({httpsAgent:r})}return new dbe.S3(e)}s(h0,"ObjectStore");async function zte(t,e){e=gm(e);try{return await t.headBucket({Bucket:e}),{created:!1,exists:!0}}catch(r){let n=r.statusCode||r.$response?.statusCode||r.$metadata?.httpStatusCode,i=Who.bucketCreationPromises;if(n===403)throw new Error("Access denied to object store bucket."+r);if(i[e])return await i[e],{created:!1,exists:!0};i[e]=t.createBucket({Bucket:e}).catch(o=>{if(o.Code!=="BucketAlreadyOwnedByYou"&&o.name!=="BucketAlreadyOwnedByYou")throw o});try{return await i[e],{created:!0,exists:!1}}finally{delete i[e]}}}s(zte,"createBucketIfNotExists");var $ho=s((t,e)=>{if(e)return e;let r=t.split(".").pop();return r?tB[r.toLowerCase()]:tB.txt},"resolveContentType"),fJr=s(async(t,e,r)=>{let n=gm(t),i=h0(),o=await zte(i,n);if(r.addTags({bucketCreated:o.created,bucketExists:o.exists}),e&&o.created){let a=cbe(n,e);await i.putBucketLifecycleConfiguration(a)}return{bucket:n,client:i,bucketCreated:o}},"initialiseBucket"),dJr=s(async({client:t,bucket:e,filename:r,stream:n,type:i,extra:o})=>{if(!n)throw new Error("Stream to upload is invalid/undefined");let a=$ho(r,i),u=nf(r),c={Bucket:e,Key:u,Body:n,ContentType:a,...o??{}};return{details:await new npt.Upload({client:t,params:c}).done(),contentType:a}},"streamUploadInternal");async function Kho({bucket:t,filename:e,path:r,type:n,metadata:i,body:o,ttl:a}){let u=e.split(".").pop(),c=r?(await Yte.default.open(r)).createReadStream():o,l=h0(),f=await zte(l,t);if(a&&f.created){let S=cbe(t,a);await l.putBucketLifecycleConfiguration(S)}let d=n,m=d||(u?tB[u.toLowerCase()]:tB.txt),A={Bucket:gm(t),Key:nf(e),Body:c,ContentType:m};if(i&&typeof i=="object"){for(let S of Object.keys(i))(!i[S]||typeof i[S]!="string")&&delete i[S];A.Metadata=i}return new npt.Upload({client:l,params:A}).done()}s(Kho,"upload");async function hJr({bucket:t,stream:e,filename:r,type:n,extra:i,ttl:o}){return await JN.default.trace("streamUpload",async a=>{a.addTags({bucketName:t,filename:r,type:n,ttl:o});let u=r.split(".").pop();a.addTags({extension:u});let{bucket:c,client:l}=await fJr(t,o,a),{details:f,contentType:d}=await dJr({client:l,bucket:c,filename:r,stream:e,type:n,extra:i}),m=await l.headObject({Bucket:c,Key:nf(r)});return a.addTags({contentType:d,contentLength:m.ContentLength}),{...f,ContentLength:m.ContentLength}})}s(hJr,"streamUpload");async function Jho({bucket:t,files:e,ttl:r}){return await JN.default.trace("streamUploadMany",async i=>{if(i.addTags({bucketName:t,ttl:r,fileCount:e.length}),!e.length)return[];let{bucket:o,client:a}=await fJr(t,r,i),u=e.map((l,f)=>({...l,index:f})),c=new Array(e.length);return await Px.parallelForeach(u,async l=>{let{details:f}=await dJr({client:a,bucket:o,filename:l.filename,stream:l.stream,type:l.type,extra:l.extra});c[l.index]=f},10),c})}s(Jho,"streamUploadMany");async function pJr(t,e){return await JN.default.trace("retrieve",async r=>{r.addTags({bucketName:t,filepath:e});let n=h0(),i={Bucket:gm(t),Key:nf(e)},o=await n.getObject(i);if(!o.Body)throw new Error("Unable to retrieve object");if(r.addTags({contentLength:o.ContentLength,contentType:o.ContentType}),zho.includes(o.ContentType))return r.addTags({string:!0}),o.Body.transformToString();{r.addTags({string:!1});let a=o.Body.transformToWebStream();return hbe.default.Readable.fromWeb(a)}})}s(pJr,"retrieve");async function*apt(t,e){let r=h0(),n=s((a={})=>r.listObjectsV2({...a,Bucket:gm(t),Prefix:nf(e)}),"list"),i=!1,o;do{let a={};o&&(a.ContinuationToken=o);let u=await n(a);if(u.Contents)for(let c of u.Contents)yield c;i=!!u.IsTruncated,o=u.NextContinuationToken}while(i&&o)}s(apt,"listAllObjects");async function Xho(t,e){let r={};return await Px.parallelForeach(apt(t,e),async n=>{if(!n.Key)throw new Error("file.Key must be defined");r[n.Key]=n},5),r}s(Xho,"getAllFiles");async function bF(t,e,r=3600){let n=h0({presigning:!0}),i={Bucket:gm(t),Key:nf(e)},o=await(0,uJr.getSignedUrl)(n,new dbe.GetObjectCommand(i),{expiresIn:r});if(lt.MINIO_ENABLED){let a=new URL(o),u=a.pathname,c=a.search;return`${opt}${u}${c}`}else return o}s(bF,"getPresignedUrl");async function Zho(t,e){return await JN.default.trace("retrieveToTmp",async r=>{r.addTags({bucketName:t,filepath:e}),t=gm(t),e=nf(e);let n=await pJr(t,e),i=(0,EE.join)(CF(),Jb());return r.addTags({outputPath:i}),n instanceof hbe.default.Readable?(r.addTags({stream:!0}),await(0,Wte.pipeline)(n,aH.default.createWriteStream(i))):(r.addTags({stream:!1}),aH.default.writeFileSync(i,n)),i})}s(Zho,"retrieveToTmp");async function epo(t,e,r){return await JN.default.trace("retrieveDirectory",async n=>{n.addTags({bucketName:t,path:e});let i=(0,EE.join)(CF(),Jb());await Yte.default.mkdir(i,{recursive:!0});let o=0;return await Px.parallelForeach(apt(t,e),async a=>{let{Key:u}=a;!u||r?.some(c=>c.test(u))||(o++,await JN.default.trace("retrieveDirectory.object",async c=>{let l=a.Key;c.addTags({filename:l});let{stream:f}=await lbe(t,l),d=gJr(i,l);if(!d){c.addTags({skippedUnsafePath:!0});return}aH.default.existsSync(d.dir)||await Yte.default.mkdir(d.dir,{recursive:!0}),await(0,Wte.pipeline)(f,aH.default.createWriteStream(d.path,{mode:420}))}))},5),n.addTags({numObjects:o}),i})}s(epo,"retrieveDirectory");function gJr(t,e){let r=(0,EE.resolve)(t),n=(0,EE.resolve)(r,...e.split("/"));if(n===r||n.startsWith(`${r}${EE.sep}`))return{dir:(0,EE.dirname)(n),path:n}}s(gJr,"getSafeRetrieveDirectoryPath");async function tpo(t,e){let r=h0();await zte(r,t);let n={Bucket:t,Key:nf(e)};return r.deleteObject(n)}s(tpo,"deleteFile");async function rpo(t,e){let r=h0();await zte(r,t);let n={Bucket:t,Delete:{Objects:e.map(i=>({Key:nf(i)}))}};return r.deleteObjects(n)}s(rpo,"deleteFiles");async function mJr(t,e){t=gm(t),e=nf(e);let r=h0(),n={Bucket:t,Prefix:e},i=await r.listObjects(n);if(i.Contents?.length===0)return;let o={Bucket:t,Delete:{Objects:[]}};if(i.Contents?.forEach(a=>{o.Delete.Objects.push({Key:a.Key})}),o.Delete.Objects.length&&(await r.deleteObjects(o)).Deleted?.length===1e3)return mJr(t,e)}s(mJr,"deleteFolder");async function upt(t,e,r){return await JN.default.trace("uploadDirectory",async n=>{n.addTags({bucketName:t,localPath:e,bucketPath:r}),t=gm(t);let i=await Yte.default.readdir(e,{withFileTypes:!0});n.addTags({numFiles:i.length});for(let o of i){let a=nf((0,EE.join)(r,o.name)),u=(0,EE.join)(e,o.name);o.isDirectory()?await upt(t,u,a):await hJr({bucket:t,filename:a,stream:aH.default.createReadStream(u)})}return i})}s(upt,"uploadDirectory");async function npo(t,e,r={},{followRedirects:n=!0}={}){e=nf(e);let i=await GJ(t,{headers:r},{followRedirects:n});if(!i.ok)throw new Error(`unexpected response ${i.statusText}`);await(0,Wte.pipeline)(i.body,spt.default.createUnzip(),ipt.default.extract(e))}s(npo,"downloadTarballDirect");async function ipo(t,e,r){e=gm(e),r=nf(r);let n=await GJ(t);if(!n.ok)throw new Error(`unexpected response ${n.statusText}`);let i=(0,EE.join)(CF(),r);return await(0,Wte.pipeline)(n.body,spt.default.createUnzip(),ipt.default.extract(i)),!lt.isTest()&&lt.SELF_HOSTED&&await upt(e,i,r),i}s(ipo,"downloadTarball");async function lbe(t,e){return await JN.default.trace("getReadStream",async r=>{t=gm(t),e=nf(e),r.addTags({bucketName:t,path:e});let n=h0(),i={Bucket:t,Key:e},o=await n.getObject(i);if(!o.Body||!(o.Body instanceof hbe.default.Readable))throw new Error("Unable to retrieve stream - invalid response");return r.addTags({contentLength:o.ContentLength,contentType:o.ContentType}),{stream:o.Body,contentLength:o.ContentLength,contentType:o.ContentType}})}s(lbe,"getReadStream");async function spo(t,e){t=gm(t),e=nf(e);let r=h0(),n={Bucket:t,Key:e};try{return await r.headObject(n)}catch{throw new Error("Unable to retrieve metadata from object")}}s(spo,"getObjectMetadata");async function opo(t,e){t=gm(t),e=nf(e);let r=h0(),n={Bucket:t,Key:e};try{return await r.headObject(n),!0}catch(i){if((i.statusCode||i.$response?.statusCode||i.$metadata?.httpStatusCode)===404)return!1;throw i}}s(opo,"objectExists");function rpt(t){let e=t.split("?")[0],r=new RegExp(`^${opt}/(?<bucket>[^/]+)/(?<path>.+)$`),n=e.match(r);if(n&&n.groups){let{bucket:i,path:o}=n.groups;return{bucket:i,path:o}}return null}s(rpt,"extractBucketAndPath");var TJr=ge(require("querystring"));var yJr=ge(EJr());var gbe;function bpo(){if(!lt.CLOUDFRONT_PRIVATE_KEY_64)throw new Error("CLOUDFRONT_PRIVATE_KEY_64 is not set");return gbe||(gbe=Buffer.from(lt.CLOUDFRONT_PRIVATE_KEY_64,"base64").toString("utf-8"),gbe)}s(bpo,"getPrivateKey");var wpo=s(()=>({keypairId:lt.CLOUDFRONT_PUBLIC_KEY_ID,privateKeyString:bpo(),expireTime:new Date().getTime()+1e3*60*60*24}),"getCloudfrontSignParams"),uH=s(t=>{let e=Npo(t);return yJr.getSignedUrl(e,wpo())},"getPresignedUrl"),Npo=s(t=>{let e="/";return t.startsWith("/")&&(e=""),`${lt.CLOUDFRONT_CDN}${e}${t}`},"getUrl");function Opo(t){return`${nf(t)}/budibase-client.js`}s(Opo,"clientLibraryPath");function xpo(t,e){return`${nf(t)}/${e}`}s(xpo,"client3rdPartyLibrary");async function vpo(t,e){return`/api/assets/${t}/client?${await SJr(e)}`}s(vpo,"clientLibraryUrl");async function SJr(t){let e,r;try{e=Hs()}finally{r={version:t}}return e&&e!==uh&&(r.tenantId=e),TJr.default.encode(r)}s(SJr,"getClientCacheKey");async function IJr(t){return lt.CLOUDFRONT_CDN?uH(t):await bF(lt.APPS_BUCKET_NAME,t)}s(IJr,"getAppFileUrl");async function Dpo(t){if(t.length===0)return[];try{return await Promise.all(t.map(async e=>({...e,src:await IJr(e.src),type:e.type||"image/png"})))}catch(e){return console.error("Error enriching PWA images:",e),t}}s(Dpo,"enrichPWAImages");var Bpo=s(async(t,e,r)=>{let n=RJr(t,e);return lt.CLOUDFRONT_CDN?(r&&(n=`${n}?etag=${r}`),uH(n)):await bF(lt.GLOBAL_BUCKET_NAME,n)},"getGlobalFileUrl"),RJr=s((t,e)=>{let r=`${t}/${e}`;return lt.MULTI_TENANCY&&(r=`${Hs()}/${r}`),r},"getGlobalFileS3Key");async function kpo(t){return!t||!t.length?[]:await Promise.all(t.map(async e=>{let r=await Ppo(e),n=await Lpo(e);return{...e,jsUrl:r,iconUrl:n}}))}s(kpo,"enrichPluginURLs");async function Ppo(t){let e=bJr(t);return CJr(e)}s(Ppo,"getPluginJSUrl");async function Lpo(t){let e=wJr(t);if(e)return CJr(e)}s(Lpo,"getPluginIconUrl");async function CJr(t){return lt.CLOUDFRONT_CDN?uH(t):await bF(lt.PLUGIN_BUCKET_NAME,t)}s(CJr,"getPluginUrl");function bJr(t){return NJr(t,"plugin.min.js")}s(bJr,"getPluginJSKey");function wJr(t){let e=t.iconUrl?"icon.svg":t.iconFileName;if(e)return NJr(t,e)}s(wJr,"getPluginIconKey");function NJr(t,e){return`${OJr(t.name)}/${e}`}s(NJr,"getPluginS3Key");function OJr(t){let e=`${t}`;return lt.MULTI_TENANCY&&(e=`${Hs()}/${e}`),lt.CLOUDFRONT_CDN&&(e=`plugins/${e}`),e}s(OJr,"getPluginS3Dir");var Mpo="budibase.log",Upo="budibase-logs-history.txt",Fpo=xJr.default.join(CF(),"systemlogs");function Qpo(t){let e=/(\d+)([A-Za-z])/,r=t?.match(e);if(!r){console.warn("totalMaxSize does not have a valid value",{totalMaxSize:t});return}let n=+r[1],i=r[2];if(n===1)switch(i){case"B":return{size:`${n}B`,totalHistoryFiles:1};case"K":return{size:`${n*1e3/2}B`,totalHistoryFiles:1};case"M":return{size:`${n*1e3/2}K`,totalHistoryFiles:1};case"G":return{size:`${n*1e3/2}M`,totalHistoryFiles:1};default:return}return n%2===0?{size:`${n/2}${i}`,totalHistoryFiles:1}:{size:`1${i}`,totalHistoryFiles:n-1}}s(Qpo,"getSingleFileMaxSizeInfo");function DJr(){let t=Qpo(lt.ROLLING_LOG_MAX_SIZE);return vJr.createStream(Mpo,{size:t?.size,path:Fpo,maxFiles:t?.totalHistoryFiles||1,immutable:!0,history:Upo,initialRotation:!1})}s(DJr,"localFileDestination");function Gpo(t){return typeof t=="object"&&t!==null&&!(t instanceof Error)}s(Gpo,"isPlainObject");function jpo(t){return t instanceof Error}s(jpo,"isError");function Vpo(t){return typeof t=="string"}s(Vpo,"isMessage");var nB;if(!lt.DISABLE_PINO_LOGGER){let t=lt.LOG_LEVEL,e={level:t,formatters:{level:s(c=>({level:c.toUpperCase()}),"level"),bindings:s(()=>lt.SELF_HOSTED?{service:lt.SERVICE_NAME}:{},"bindings")},timestamp:s(()=>`,"timestamp":"${new Date(Date.now()).toISOString()}"`,"timestamp")},r=[];r.push(lt.isDev()?{stream:(0,BJr.default)({singleLine:!0}),level:t}:{stream:process.stdout,level:t}),lt.SELF_HOSTED&&r.push({stream:DJr(),level:t}),nB=r.length?(0,Abe.default)(e,Abe.default.multistream(r)):(0,Abe.default)(e);let n=s(c=>{let l,f=[],d="";c.forEach(b=>{Vpo(b)&&(d=`${d} ${b}`.trimStart()),Gpo(b)&&f.push(b),jpo(b)&&(l=b)});let m=u(),A={};A={tenantId:i(),appId:o(),automationId:a(),identityId:m?._id,identityType:m?.type,correlationId:Ott()};let T=gpt.default.scope().active();T&&gpt.default.inject(T.context(),kJr.formats.LOG,A);let S={err:l,pid:process.pid,...A};if(f.length){let b={},C=0;for(let B=0;B<f.length;B++){let k=f[B],P=k._logKey;P?(delete k._logKey,S[P]=k):(b[C]=k,C++)}Object.keys(b).length&&(S.data=b)}return[S,d]},"getLogParams");console.log=(...c)=>{let[l,f]=n(c);nB?.info(l,f)},console.info=(...c)=>{let[l,f]=n(c);nB?.info(l,f)},console.warn=(...c)=>{let[l,f]=n(c);nB?.warn(l,f)},console.error=(...c)=>{let[l,f]=n(c);nB?.error(l,f)},console.trace=(...c)=>{let[l,f]=n(c);l.err||(l.err=new Error),nB?.trace(l,f)},console.debug=(...c)=>{let[l,f]=n(c);nB?.debug(l,f)};let i=s(()=>{let c;try{c=Hs()}catch{}return c},"getTenantId"),o=s(()=>{let c;try{c=uA()}catch{}return c},"getAppId"),a=s(()=>{let c;try{c=mHe()}catch{}return c},"getAutomationId"),u=s(()=>{let c;try{c=Xx()}catch{}return c},"getIdentity")}var mpt=nB;function US(t){let e=Hs();return`${t}:${e}`}s(US,"generateTenantKey");var cH=class{static{s(this,"BaseCache")}constructor(e=void 0){this.client=e}async getClient(){return this.client?this.client:await opr()}async keys(e){return(await this.getClient()).keys(e)}async exists(e,r={useTenancy:!0}){return e=r.useTenancy?US(e):e,(await this.getClient()).exists(e)}async scan(e,r={useTenancy:!0}){return e=r.useTenancy?US(e):e,(await this.getClient()).scan(e)}async get(e,r={useTenancy:!0}){return e=r.useTenancy?US(e):e,(await this.getClient()).get(e)}async bulkGet(e,r={useTenancy:!0}){return e=r.useTenancy?e.map(i=>US(i)):e,(await this.getClient()).bulkGet(e)}async store(e,r,n=null,i={useTenancy:!0}){e=i.useTenancy?US(e):e,await(await this.getClient()).store(e,r,n)}async bulkStore(e,r=null,n={useTenancy:!0}){n.useTenancy&&(e=Object.entries(e).reduce((o,[a,u])=>(o[US(a)]=u,o),{})),await(await this.getClient()).bulkStore(e,r)}async delete(e,r={useTenancy:!0}){return e=r.useTenancy?US(e):e,(await this.getClient()).delete(e)}async bulkDelete(e,r={useTenancy:!0}){return e=r.useTenancy?e.map(i=>US(i)):e,(await this.getClient()).bulkDelete(e)}async withCache(e,r=null,n,i={useTenancy:!0}){let o=await this.get(e,i);if(o)return o;try{let a=await n();return await this.store(e,a,r,i),a}catch(a){throw console.error("Error fetching before cache - ",a),a}}async withCacheWithDynamicTTL(e,r,n={useTenancy:!0}){let i=await this.get(e,n);if(i)return i;try{let o=await r(),{value:a,ttl:u}=o;return await this.store(e,a,u,{useTenancy:n.useTenancy}),a}catch(o){throw console.error("Error fetching before cache - ",o),o}}async bustCache(e){let r=await this.getClient();try{await r.delete(US(e))}catch(n){throw console.error("Error busting cache - ",n),n}}async increment(e,r,n={useTenancy:!0}){e=n.useTenancy?US(e):e;let i=await this.getClient(),o=await i.increment(e);return r&&await i.setExpiry(e,r),o}async deleteIfValue(e,r,n={useTenancy:!0}){e=n.useTenancy?US(e):e,await(await this.getClient()).deleteIfValue(e,r)}};var zpo=new cH,lH={CHECKLIST:"checklist",INSTALLATION:"installation",ANALYTICS_ENABLED:"analyticsEnabled",UNIQUE_TENANT_ID:"uniqueTenantId",EVENTS:"events",BACKFILL_METADATA:"backfillMetadata",EVENTS_RATE_LIMIT:"eventsRateLimit",OAUTH2_TOKEN:s(t=>`oauth2Token_${t}`,"OAUTH2_TOKEN")};var _be=s((...t)=>zpo.withCache(...t),"withCache");ur();var ggo=ge(mZr());var $4u=_h.fromSeconds(10).toMs();ur();var nju=_h.fromDays(7).toSeconds(),iju=_h.fromSeconds(10).toMs();var uju=_h.fromHours(1).toSeconds();var _Zr=ge(require("node-fetch"));var OF=class{static{s(this,"API")}constructor(e){this.host=e}async apiCall(e,r,n){n.headers||(n.headers={}),n.headers["Content-Type"]||(n.headers={"Content-Type":"application/json",Accept:"application/json",...n.headers});let i=n.headers["Content-Type"]==="application/json";KAe.setHeader(n.headers);let o={method:e,body:i?JSON.stringify(n.body):n.body,headers:n.headers,credentials:"include"};return await(0,_Zr.default)(`${this.host}${r}`,o)}async post(e,r){return this.apiCall("POST",e,r)}async get(e,r){return this.apiCall("GET",e,r)}async patch(e,r){return this.apiCall("PATCH",e,r)}async del(e,r){return this.apiCall("DELETE",e,r)}async put(e,r){return this.apiCall("PUT",e,r)}};var Rju=new OF(lt.INTERNAL_ACCOUNT_PORTAL_URL),Cju=lt.SELF_HOSTED||lt.DISABLE_ACCOUNT_PORTAL;ur();ur();var Pju=+(lt.PASSWORD_MIN_LENGTH||12),Lju=+(lt.PASSWORD_MAX_LENGTH||512);var Yju=hpr();ur();ur();var xVu={"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}`};var Ppt=lt.SELF_HOSTED&&!lt.isDev(),Zte=class{static{s(this,"LoggingProcessor")}async processEvent(e,r,n){Ppt||console.log(`[audit] [identityType=${r.type}] ${e}`,n)}async identify(e){Ppt||console.log("[audit] identified",e)}async identifyGroup(e){Ppt||console.log("[audit] group identified",e)}async shutdown(){}};ur();var ere=class t{static{s(this,"AuditLogsProcessor")}static{this.auditLogsEnabled=!1}static init(e){t.auditLogsEnabled=!0;let r=e;return t.auditLogQueue=new eU("auditLogQueue",{jobTags:s(n=>({"event.name":n.event}),"jobTags")}),t.auditLogQueue.process(async n=>{await iw(n.data.tenantId,async()=>{let i=n.data.properties;i.audited&&(i={...i,...i.audited},delete i.audited);let o={};lt.ENABLE_AUDIT_LOG_IP_ADDR&&(o=n.data.opts.hostInfo),await r(n.data.event,i,{userId:n.data.opts.userId,timestamp:n.data.opts.timestamp,appId:n.data.opts.appId,hostInfo:o})})})}async processEvent(e,r,n,i){if(t.auditLogsEnabled&&gpr(e)){let o=r.type==="user"?r.id:void 0;await t.auditLogQueue.add({event:e,properties:n,opts:{userId:o,timestamp:i,appId:uA(),hostInfo:r.hostInfo},tenantId:Hs()})}}async identify(){}async identifyGroup(){}async shutdown(){await t.auditLogQueue?.close()}};zx();var bgo=new OF(lt.INTERNAL_ACCOUNT_PORTAL_URL),tre=class t{static{s(this,"EventBrokerProcessor")}static init(e){t.getLicenseKeyFn=e}async processEvent(e,r,n,i){if(lt.DISABLE_ACCOUNT_PORTAL)return;let o;if(lt.SELF_HOSTED){if(!t.getLicenseKeyFn)return;let c=await t.getLicenseKeyFn();if(!c)return;o={"x-budibase-license-key":c}}else o={"x-budibase-api-key":lt.ACCOUNT_PORTAL_API_KEY},r.tenantId&&(o["x-budibase-tenant-id"]=r.tenantId);let a=uA(),u={id:Jb(),type:e,identity:r,properties:{...n,version:lt.VERSION,service:lt.SERVICE,environment:r.environment,hosting:r.hosting,...a&&{appId:a},...r.installationId&&{installationId:r.installationId},...r.tenantId&&{tenantId:r.tenantId}},timestamp:i===void 0?Date.now():new Date(i).getTime()};try{let c=await bgo.post("/api/v2/analytics/event",{headers:o,body:u});c.ok||console.warn(`[EventBrokerProcessor] unexpected response status: ${c.status}`)}catch(c){console.error(`[EventBrokerProcessor] failed to send event: ${c}`)}}};var rre=class{constructor(e){this.initialised=!1;this.processors=[];this.processors=e}static{s(this,"Processor")}async processEvent(e,r,n,i){for(let o of this.processors)await o.processEvent(e,r,n,i)}async identify(e,r){for(let n of this.processors)n.identify&&await n.identify(e,r)}async identifyGroup(e,r){for(let n of this.processors)n.identifyGroup&&await n.identifyGroup(e,r)}async shutdown(){for(let e of this.processors)e.shutdown&&await e.shutdown()}};var wgo=new Zte,Ngo=new ere,Ogo=new tre;var Lpt=new rre([wgo,Ngo,Ogo]);ur();ur();var Dgo=ge(v3());ur();ur();ur();ur();ur();ur();ur();ur();var xYu=!lt.SELF_HOSTED&&!lt.isDev();ur();ur();ur();ur();ur();ur();ur();ur();ur();ur();ur();ur();ur();ur();ur();ur();ur();ur();ur();ur();ur();var NZr=_y.users.isBuilder,Obe=_y.users.isAdmin,xzu=_y.users.isGlobalBuilder,vzu=_y.users.isAdminOrBuilder,bZr=_y.users.hasAdminPermissions,nre=_y.users.hasBuilderPermissions,Dzu=_y.users.hasAppBuilderPermissions,Ggo=_y.users.isAdminOrWorkspaceBuilder;function emo(t){return Array.isArray(t)?t.map(e=>{if(e)return delete e.password,e}):t&&(delete t.password,t)}s(emo,"removeUserPassword");async function ire(t,e){if(t==null)throw"Must supply an email address to view";let r=await Jpe("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=emo(n)),n}s(ire,"getGlobalUserByEmail");ur();function xZr(t){return`config${"_"}${t}`}s(xZr,"generateConfigID");async function vbe(t){let e=lp();try{return await e.get(xZr(t))}catch(r){if(r.status===404)return;throw r}}s(vbe,"getConfig");async function Mpt(){let t=await vbe("settings");return t||(t={_id:xZr("settings"),type:"settings",config:{}}),t.config.platformUrl=await vZr({tenantAware:!0,config:t.config}),t.config.analyticsEnabled=await TZr({config:t.config}),t}s(Mpt,"getSettingsConfigDoc");async function vZr(t={tenantAware:!0}){let e=lt.PLATFORM_URL||"http://localhost:10000";if(!lt.SELF_HOSTED&&lt.MULTI_TENANCY&&t.tenantAware){let r=Hs();e.includes("localhost:")||(e=e.replace("://",`://${r}.`))}else if(lt.SELF_HOSTED){let r=t?.config?t.config:(await vbe("settings"))?.config;r?.platformUrl&&(e=r.platformUrl)}return e}s(vZr,"getPlatformUrl");var TZr=s(async t=>{if(!lt.SELF_HOSTED)return!!lt.ENABLE_ANALYTICS;let e=await _be(lH.ANALYTICS_ENABLED,86400,async()=>{let n=t?.config?t.config:(await vbe("settings"))?.config;if(n?.analyticsEnabled===!1)return!1;if(n?.analyticsEnabled===!0)return!0});if(e!==void 0)return e;let r=lt.ENABLE_ANALYTICS;return!(r===0||r===!1)},"analyticsEnabled");ur();var pOo=ge(y3()),gOo=ge(Ygt()),mOo=ge(v3());var San={ADMIN:"ADMIN",POWER:"POWER",BASIC:"BASIC",PUBLIC:"PUBLIC"},yE={...San,BUILDER:"BUILDER"},AOo={UUID:void 0,NAME:"name"};var BF=class{constructor(e,r,n,i){this.permissions={};this._id=e,this.name=r,this.uiMetadata=i,this.permissionId=n,this.version=AOo.NAME}static{s(this,"Role")}addInheritance(e){return e&&typeof e=="string"?e=yan(e):e&&Array.isArray(e)&&(e=e.map(yan)),this.inherits=e,this}};var Prc={ADMIN:new BF(yE.ADMIN,yE.ADMIN,"admin",{displayName:"Admin user",description:"Can do everything",color:"var(--spectrum-global-color-static-red-400)"}).addInheritance(yE.POWER),POWER:new BF(yE.POWER,yE.POWER,"power",{displayName:"App power user",description:"An app user with more access",color:"var(--spectrum-global-color-static-orange-400)"}).addInheritance(yE.BASIC),BASIC:new BF(yE.BASIC,yE.BASIC,"write",{displayName:"Basic user",description:"Any logged in user",color:"var(--spectrum-global-color-static-green-400)"}).addInheritance(yE.PUBLIC),PUBLIC:new BF(yE.PUBLIC,yE.PUBLIC,"public",{displayName:"Public user",description:"Accessible to anyone",color:"var(--spectrum-global-color-static-blue-400)"}),BUILDER:new BF(yE.BUILDER,yE.BUILDER,"admin",{displayName:"Builder user",description:"Users that can edit this app",color:"var(--spectrum-global-color-static-magenta-600)"})};function _Oo(t){return Object.values(San).includes(t)}s(_Oo,"isBuiltin");function yan(t){return _Oo(t)?t:upr(t)}s(yan,"prefixRoleIDNoBuiltin");ur();var TOo=ge(Hgt()),SOo=ge(Ygt());ur();var nc=class{static{s(this,"PermissionImpl")}constructor(e,r){this.type=e,this.level=r}};var Qrc={PUBLIC:{_id:"public",name:"Public",permissions:[new nc("webhook","execute")]},READ_ONLY:{_id:"read_only",name:"Read only",permissions:[new nc("query","read"),new nc("table","read"),new nc("app","read")]},WRITE:{_id:"write",name:"Read/Write",permissions:[new nc("query","write"),new nc("table","write"),new nc("automation","execute"),new nc("legacy_view","read"),new nc("app","read")]},POWER:{_id:"power",name:"Power",permissions:[new nc("table","write"),new nc("user","read"),new nc("automation","execute"),new nc("webhook","read"),new nc("legacy_view","read"),new nc("app","read")]},ADMIN:{_id:"admin",name:"Admin",permissions:[new nc("table","admin"),new nc("user","admin"),new nc("automation","admin"),new nc("webhook","read"),new nc("query","admin"),new nc("legacy_view","read"),new nc("app","read")]}};var qrc="builder",Grc="creator",jrc="globalBuilder";ur();var lwe=ge(require("crypto")),Ran=ge(require("dd-trace")),Can=ge(y3()),ROo=require("posthog-node");var Ian;function ban(t){let e=t.split(",").map(n=>n.split(":")),r=[];for(let[n,...i]of e)for(let o of i){let a=!0;o.startsWith("!")&&(o=o.slice(1),a=!1),r.push({tenantId:n,key:o,value:a})}return r}s(ban,"parseEnvFlags");function COo(){return ban(lt.TENANT_FEATURE_FLAGS||"")}s(COo,"getEnvFlags");var Wgt=class{constructor(e){this.flagSchema=e;this.setId=lwe.randomUUID()}static{s(this,"FlagSet")}defaults(){return(0,Can.cloneDeep)(this.flagSchema)}isFlagName(e){return this.flagSchema[e]!==void 0}async isEnabled(e){return(await this.fetch())[e]}async fetch(){return await Ran.default.trace("features.fetch",async e=>{let r=yHe(this.setId);if(r)return e?.addTags({fromCache:!0}),r;let n={},i=this.defaults(),o=Hs(),a=new Set;if(Yfe())return i;for(let{tenantId:d,key:m,value:A}of COo())if(!(!d||d!=="*"&&d!==o)&&(n.readFromEnvironmentVars=!0,A===!1&&a.add(m),!!this.isFlagName(m))){if(typeof i[m]!="boolean")throw new Error(`Feature: ${m} is not a boolean`);i[m]=A,n[`flags.${m}.source`]="environment"}let u=Xx(),c=u?._id;if(!c){let d=AHe();d&&(c=lwe.createHash("sha512").update(d).digest("hex"))}let l=u?.tenantId;if(l||(l=o),n["identity.type"]=u?.type,n["identity._id"]=u?._id,n.tenantId=l,n.userId=c,Ian&&c){n.readFromPostHog=!0;let d=await Mpt(),m={tenantId:l},A={tenant:{id:l}};d.config.createdVersion&&(A.tenant.createdVersion=d.config.createdVersion),d.createdAt&&(A.tenant.createdAt=`${d.createdAt}`);let T=await Ian.getAllFlags(c,{personProperties:m,onlyEvaluateLocally:!0,groups:{tenant:l},groupProperties:A});for(let[S,b]of Object.entries(T))if(this.isFlagName(S)){if(typeof b!="boolean"){console.warn(`Invalid value for posthog flag "${S}": ${b}`);continue}if(!(i[S]===!0||a.has(S)))try{i[S]=b,n[`flags.${S}.source`]="posthog"}catch(C){console.warn(`Error parsing posthog flag "${S}": ${b}`,C)}}}let f=SHe();for(let[d,m]of Object.entries(f))this.isFlagName(d)&&typeof m=="boolean"&&(i[d]=m,n[`flags.${d}.source`]="override");THe(this.setId,i);for(let[d,m]of Object.entries(i))n[`flags.${d}.value`]=m;return e?.addTags(n),i})}},bOo={USE_ZOD_VALIDATOR:!1,AI_RAG_SHAREPOINT:!1,AI_AGENT_INSTRUCTIONS:!1,AI_TESTS:!1,MULTIPLE_OPERATIONS:!1,ESCALATION:!1,FRONT_COMPANION:!1,PROJECTS:!1,DEBUG_UI:lt.isDev(),DEV_USE_CLIENT_FROM_STORAGE:!1,AI_AGENT_ACTIVITY:!1},Jrc=new Wgt(bOo);ur();var snc=$Ae();var gDo=Pcn(),mDo=$Ae();function ADo(){return{logger:mpt,genReqId:mDo.getId,autoLogging:{ignore:s(t=>!!t.url?.includes("/health"),"ignore")},serializers:{req:s(t=>({method:t.method,url:t.url,correlationId:t.id}),"req"),res:s(t=>({status:t.statusCode}),"res")}}}s(ADo,"pinoSettings");function _Do(){return lt.HTTP_LOGGING?gDo(ADo()):(t,e)=>e()}s(_Do,"getMiddleware");var EDo=_Do();var RDo=ge(Zje());ur();ur();var CDo=ge(require("dd-trace"));var esc=lt.SESSION_UPDATE_PERIOD?parseInt(lt.SESSION_UPDATE_PERIOD):60*1e3;ur();var Oko=ge(Pwe());var kre={};Fi(kre,{authenticate:()=>Dko,options:()=>vko});function xC(t,e,r){return t(r,null,{message:e})}s(xC,"authError");var wAt="Invalid credentials",xko="This account has expired. Please reset your password",vko={passReqToCallback:!0};async function Dko(t,e,r,n){if(!e)return xC(n,"Email Required");if(!r)return xC(n,"Password Required");let i=await ire(e);return i==null?(console.info(`user=${e} could not be found`),xC(n,wAt)):i.status==="inactive"?(console.info(`user=${e} is inactive`,i),xC(n,wAt)):i.password?await nWt(r,i.password)?(delete i.password,n(null,i)):xC(n,wAt):(console.info(`user=${e} has no password set`,i),xC(n,xko))}s(Dko,"authenticate");ur();var Bcc=o_t().OAuth2Strategy;var ZPo=ge(require("node-fetch"));ur();var eLo=ge(Epn());ur();ur();var klc=o_t().OAuth2Strategy;var OLo=Xpn(),xLo=ogn().Strategy,$fc=agn();OLo.use(new xLo(kre.options,kre.authenticate));var CNe={};Fi(CNe,{validate:()=>LLo});ur();var _r=ge(Pwe());var DLo=["Relational","Non-relational","Spreadsheet","Object store","Graph","API"];function C_t(t,e){let{error:r}=t.validate(e);if(r)throw r}s(C_t,"runJoi");function BLo(t){let e=_r.default.object({type:_r.default.string().allow("component").required(),metadata:_r.default.object().unknown(!0).required(),hash:_r.default.string().optional(),version:_r.default.string().optional(),schema:_r.default.object({name:_r.default.string().required(),settings:_r.default.array().items(_r.default.object().unknown(!0)).required()}).unknown(!0)});C_t(e,t)}s(BLo,"validateComponent");function kLo(t){let e=_r.default.object({type:_r.default.string().allow(...Object.values(Nqe)).required(),required:_r.default.boolean().required(),default:_r.default.any(),display:_r.default.string()}),r=_r.default.object({type:_r.default.string().allow(...Object.values(wqe)),readable:_r.default.boolean(),displayName:_r.default.string(),fields:_r.default.object().pattern(_r.default.string(),e)}).required(),n=_r.default.object({type:_r.default.string().allow("datasource").required(),metadata:_r.default.object().unknown(!0).required(),hash:_r.default.string().optional(),version:_r.default.string().optional(),schema:_r.default.object({docs:_r.default.string(),plus:_r.default.boolean().optional(),isSQL:_r.default.boolean().optional(),auth:_r.default.object({type:_r.default.string().required()}).optional(),features:_r.default.object(Object.fromEntries(Object.values(Oqe).map(i=>[i,_r.default.boolean().optional()]))).optional(),relationships:_r.default.boolean().optional(),description:_r.default.string().required(),friendlyName:_r.default.string().required(),type:_r.default.string().allow(...DLo),datasource:_r.default.object().pattern(_r.default.string(),e).required(),query:_r.default.object().pattern(_r.default.string(),r).unknown(!0).required(),extra:_r.default.object().pattern(_r.default.string(),_r.default.object({type:_r.default.string().required(),displayName:_r.default.string().required(),required:_r.default.boolean(),data:_r.default.object()}))})});C_t(n,t)}s(kLo,"validateDatasource");function PLo(t){let e=_r.default.object().pattern(_r.default.string(),{type:_r.default.string().allow(...Object.values(Pqe)).required(),customType:_r.default.string().allow(...Object.values(Lqe)),title:_r.default.string(),description:_r.default.string(),enum:_r.default.array().items(_r.default.string()),pretty:_r.default.array().items(_r.default.string())}),r=_r.default.object({properties:e,required:_r.default.array().items(_r.default.string())}).concat(e).required(),n=_r.default.object({type:_r.default.string().allow("automation").required(),metadata:_r.default.object().unknown(!0).required(),hash:_r.default.string().optional(),version:_r.default.string().optional(),schema:_r.default.object({name:_r.default.string().required(),tagline:_r.default.string().required(),icon:_r.default.string().required(),description:_r.default.string().required(),type:_r.default.string().allow("ACTION","LOGIC").required(),stepId:_r.default.string().disallow(..._2t).required(),inputs:_r.default.object().optional(),schema:_r.default.object({inputs:r,outputs:r}).required()})});C_t(n,t)}s(PLo,"validateAutomation");function LLo(t){switch(t?.type){case"component":BLo(t);break;case"datasource":kLo(t);break;case"automation":PLo(t);break;default:throw new Error(`Unknown plugin type - check schema.json: ${t.type}`)}}s(LLo,"validate");ur();var Rdc={"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};var e1a=ge(mBt());var JYn=ge(mBt());ur();ur();var t1a=ge(y3());var CFc={equal:!1,notEqual:!0,empty:!1,notEmpty:!0,fuzzy:!1,string:!1,range:!1,contains:!1,notContains:!0,containsAny:!1,oneOf:!1,notOneOf:!0,$and:!1,$or:!1};var iDa=ge(_6n());var Y6n=ge(CBt(),1),HDa=ge(OBt(),1),z6n=ge(CBt(),1),LBt=ge(OBt(),1),ILe=require("url"),e5=ge(G6n(),1),$6n=ge(require("http"),1),J6n=ge(ew(),1);var W6n={NotFound:"not-found"};function jDa(t){return typeof t=="function"?t(W6n):t}s(jDa,"resolveEvent");var VDa=class{static{s(this,"RouterEventEmitter")}_handlers=new Map;register(t,e){let r=this._handlers.get(t)??[];r.push(e),this._handlers.set(t,r)}emit(t,e,r){let n=this._handlers.get(t);return n&&n.length>0?(0,Y6n.default)(n)(e,r):r()}};function SLe(t,e={}){let r={...e};"strict"in r&&!("trailing"in r)&&(r.trailing=r.strict!==!0,delete r.strict),delete r.pathAsRegExp,delete r.ignoreCaptures,delete r.prefix;let{regexp:n,keys:i}=(0,e5.pathToRegexp)(t,r);return{regexp:n,keys:i}}s(SLe,"compilePathToRegexp");function YDa(t,e={}){return(0,e5.compile)(t,e)}s(YDa,"compilePath");function WDa(t,e){return(0,e5.parse)(t,e)}s(WDa,"parsePath");function kBt(t={}){let e={sensitive:t.sensitive,end:t.end,strict:t.strict,trailing:t.trailing};"strict"in e&&!("trailing"in e)&&(e.trailing=e.strict!==!0,delete e.strict);for(let r of Object.keys(e))e[r]===void 0&&delete e[r];return e}s(kBt,"normalizeLayerOptionsToPathToRegexp");function zDa(t){try{return decodeURIComponent(t)}catch{return t}}s(zDa,"safeDecodeURIComponent");var j6n=class{static{s(this,"Layer")}opts;name;methods;paramNames;stack;path;regexp;constructor(t,e,r,n={}){this.opts=n,this.name=this.opts.name||void 0,this.methods=this._normalizeHttpMethods(e),this.stack=this._normalizeAndValidateMiddleware(r,e,t),this.path=t,this.paramNames=[],this._configurePathMatching()}_normalizeHttpMethods(t){let e=[];for(let r of t){let n=r.toUpperCase();e.push(n),n==="GET"&&e.unshift("HEAD")}return e}_normalizeAndValidateMiddleware(t,e,r){let n=Array.isArray(t)?t:[t];for(let i of n){let o=typeof i;if(o!=="function"){let a=this.opts.name||r;throw new Error(`${e.toString()} \`${a}\`: \`middleware\` must be a function, not \`${o}\``)}}return n}_configurePathMatching(){this.opts.pathAsRegExp===!0?this.regexp=this.path instanceof RegExp?this.path:new RegExp(this.path):this.path&&this._configurePathToRegexp()}_configurePathToRegexp(){let t=kBt(this.opts),{regexp:e,keys:r}=SLe(this.path,t);this.regexp=e,this.paramNames=r}match(t){return this.regexp.test(t)}params(t,e,r={}){let n={...r};for(let[i,o]of e.entries()){let a=this.paramNames[i];if(a&&o&&o.length>0){let u=a.name;if(this.opts.ignoreWildcardParameter===u&&a.type==="wildcard")continue;n[u]=zDa(o)}}return n}captures(t){if(this.opts.ignoreCaptures)return[];let e=t.match(this.regexp);return e?e.slice(1):[]}url(...t){if(this.path instanceof RegExp)throw new TypeError("Cannot generate URL for routes defined with RegExp paths. Use string paths with named parameters instead.");let{params:e,options:r}=this._parseUrlArguments(t),n=this.path.replaceAll("(.*)",""),i=YDa(n,{encode:encodeURIComponent,...r}),o=this._buildParamReplacements(e,n),a=i(o);return r&&r.query?this._addQueryString(a,r.query):a}_parseUrlArguments(t){let e=t[0]??{},r=t[1];if(typeof e!="object"||e===null){let n=[...t],i=n.at(-1);typeof i=="object"&&i!==null?(r=i,e=n.slice(0,-1)):e=n}else if(e&&!r){let n=Object.keys(e);if(n.length===1&&n[0]==="query")r=e,e={};else if("query"in e&&e.query){let{query:o,...a}=e;r={query:o},e=a}}return{params:e,options:r}}_buildParamReplacements(t,e){let{tokens:r}=WDa(e),n=r.some(o=>"name"in o&&o.name),i={};if(Array.isArray(t)){let o=0;for(let a of r)"name"in a&&a.name&&(i[a.name]=String(t[o++]))}else if(n&&typeof t=="object"&&!("query"in t))for(let[o,a]of Object.entries(t))i[o]=String(a);return i}_addQueryString(t,e){let r=(0,ILe.parse)(t),n={...r,query:r.query??void 0};return typeof e=="string"?(n.search=e,n.query=void 0):(n.search=void 0,n.query=e),(0,ILe.format)(n)}param(t,e){let r=this.stack,n=this.paramNames,i=this._createParamMiddleware(t,e),o=n.map(u=>u.name),a=o.indexOf(t);return a!==-1&&this._insertParamMiddleware(r,i,o,a),this}_createParamMiddleware(t,e){let r=s(((n,i)=>(n._matchedParams||(n._matchedParams=new WeakMap),n._matchedParams.has(e)?i():(n._matchedParams.set(e,!0),e(n.params[t],n,i)))),"middleware");return r.param=t,r._originalFn=e,r}_insertParamMiddleware(t,e,r,n){let i=!1;for(let o=0;o<t.length;o++){let a=t[o];if(!a.param){t.splice(o,0,e),i=!0;break}if(r.indexOf(a.param)>n){t.splice(o,0,e),i=!0;break}}i||t.push(e)}setPrefix(t){return this.path?this.path instanceof RegExp?this:(this.path=this._applyPrefix(t),this._reconfigurePathMatching(t),this):this}_applyPrefix(t){let e=this.path==="/",r=this.opts.strict===!0,n=t.includes(":"),i=this.opts.pathAsRegExp===!0&&typeof this.path=="string";if(n&&i){let o=this.path;(o===String.raw`(?:\/|$)`||o===String.raw`(?:\\\/|$)`)&&(this.path="{/*rest}",this.opts.pathAsRegExp=!1)}return e&&!r?t:`${t}${this.path}`}_reconfigurePathMatching(t){let e=this.opts.pathAsRegExp===!0;if(t&&t.includes(":")&&e){let n=kBt(this.opts),{regexp:i,keys:o}=SLe(this.path,n);this.regexp=i,this.paramNames=o,this.opts.pathAsRegExp=!1}else if(e){let n=this.path,i=n.startsWith("^")?n:`^${n}`;this.regexp=this.path instanceof RegExp?this.path:new RegExp(i)}else{let n=kBt(this.opts),{regexp:i,keys:o}=SLe(this.path,n);this.regexp=i,this.paramNames=o}}};function $Da(){return $6n.default.METHODS.map(t=>t.toLowerCase())}s($Da,"getAllHttpMethods");var KDa=["get","post","put","patch","delete","del","head","options"];function JDa(t){return t?Array.isArray(t)?t:[t]:[]}s(JDa,"normalizeParameterMiddleware");function K6n(t,e,r){let n=JDa(r);for(let i of n)t.param(e,i)}s(K6n,"applyParameterMiddlewareToRoute");function XDa(t,e){let r=Object.keys(e);for(let n of r){let i=e[n];K6n(t,n,i)}}s(XDa,"applyAllParameterMiddleware");function V6n(t,e={}){if(!t)return!1;let{keys:r}=SLe(t,e);return r.length>0}s(V6n,"hasPathParameters");function ZDa(t,e){return t!==void 0?typeof t=="string"?t===""?{path:"{/*rest}",pathAsRegExp:!1}:t==="/"?{path:"/",pathAsRegExp:!1}:{path:t,pathAsRegExp:!1}:{path:t,pathAsRegExp:!0}:e?{path:"{/*rest}",pathAsRegExp:!1}:{path:String.raw`(?:\/|$)`,pathAsRegExp:!0}}s(ZDa,"determineMiddlewarePath");var PBt=(0,J6n.default)("koa-router"),X6n=$Da(),H6n=class{static{s(this,"RouterImplementation")}opts;methods;exclusive;params;stack;host;_events=new VDa;constructor(t={}){this.opts=t,this.methods=this.opts.methods||["HEAD","OPTIONS","GET","PUT","PATCH","POST","DELETE"],this.exclusive=!!this.opts.exclusive,this.params={},this.stack=[],this.host=this.opts.host}static url(t,...e){return new j6n(t,[],()=>{}).url(...e)}use(...t){let e;if(this._isPathArray(t[0]))return this._useWithPathArray(t);let r=this._hasExplicitPath(t[0]);if(r&&(e=t.shift()),t.length===0)throw new Error("You must provide at least one middleware function to router.use()");for(let n of t)this._isNestedRouter(n)?this._mountNestedRouter(n,e):this._registerMiddleware(n,e,r);return this}_isPathArray(t){return Array.isArray(t)&&t.length>0&&t.every(e=>typeof e=="string")}_hasExplicitPath(t){return typeof t=="string"||t instanceof RegExp}_isNestedRouter(t){return typeof t=="function"&&"router"in t&&t.router!==void 0}_useWithPathArray(t){let e=t[0],r=t.slice(1);for(let n of e)Reflect.apply(this.use,this,[n,...r]);return this}_mountNestedRouter(t,e){let r=t.router,n=this._cloneRouter(r),i=e&&typeof e=="string"&&V6n(e,this.opts);for(let o=0;o<n.stack.length;o++){let a=n.stack[o],u=this._cloneLayer(a);e&&typeof e=="string"&&u.setPrefix(e),this.opts.prefix&&u.setPrefix(this.opts.prefix),u.methods.length===0&&i&&(u.opts.ignoreCaptures=!1),this.stack.push(u),n.stack[o]=u}this.params&&this._applyParamMiddlewareToRouter(n)}_cloneRouter(t){return Object.assign(Object.create(Object.getPrototypeOf(t)),t,{stack:[...t.stack]})}_cloneLayer(t){return Object.assign(Object.create(Object.getPrototypeOf(t)),t,{stack:[...t.stack],methods:[...t.methods],paramNames:[...t.paramNames],opts:{...t.opts}})}_applyParamMiddlewareToRouter(t){let e=Object.keys(this.params);for(let r of e){let n=this.params[r];K6n(t,r,n)}}_registerMiddleware(t,e,r){let n=V6n(this.opts.prefix||"",this.opts),i=(()=>{if(e!==void 0)return e;if(n)return""})(),o=r||e===void 0&&n,{path:a,pathAsRegExp:u}=ZDa(i,n),c=a,l=u,f=o&&a==="/";o&&typeof a=="string"&&(c=a,l=!1);let d=i===""&&a==="{/*rest}"?"rest":void 0;this.register(c,[],t,{end:f,ignoreCaptures:!o&&!n,ignoreWildcardParameter:d,pathAsRegExp:l})}prefix(t){let e=t.replace(/\/$/,""),r=this.opts.prefix||"";this.opts.prefix=e;for(let n of this.stack){if(typeof n.path=="string"&&r){let i=r+"/";(n.path===r||n.path.startsWith(i))&&(n.path=n.path.slice(r.length)||"/")}n.setPrefix(e)}return this}middleware(){let t=function(e,r){if(PBt("%s %s",e.method,e.path),!this.matchHost(e.host))return r();let n=this._getRequestPath(e),i=this.match(n,e.method);if(this._storeMatchedRoutes(e,i),e.router=this,e.routeMatched=i.route,!i.route)return this._events.emit(W6n.NotFound,e,r);let o=i.pathAndMethod;this._setMatchedRouteInfo(e,o);let a=this._buildMiddlewareChain(o,n);return(0,z6n.default)(a)(e,r)}.bind(this);return t.router=this,t}_getRequestPath(t){let e=t;return this.opts.routerPath||e.newRouterPath||e.path||e.routerPath||""}_storeMatchedRoutes(t,e){let r=t;r.matched?r.matched.push(...e.path):r.matched=e.path}_setMatchedRouteInfo(t,e){let r=t,n=e.toReversed().find(i=>i.methods.length>0);n&&(r._matchedRoute=n.path,n.name&&(r._matchedRouteName=n.name))}_buildMiddlewareChain(t,e){let r;if(this.exclusive){let i;if(this.opts.exclusive==="specificity")for(let o of t)(!i||o.paramNames.length<i.paramNames.length)&&(i=o);else i=t.at(-1);r=i?[i]:[]}else r=t;let n=[];for(let i of r)n.push((o,a)=>{let u=o;return u.captures=i.captures(e),u.request.params=i.params(e,u.captures||[],u.params),u.params=u.request.params,u.routerPath=i.path,u.routerName=i.name||void 0,u._matchedRoute=i.path,i.name&&(u._matchedRouteName=i.name),a()},...i.stack);return n}routes(){return this.middleware()}on(t,e){return this._events.register(jDa(t),e),this}allowedMethods(t={}){let e=this.methods;return(r,n)=>{let i=r;return n().then(()=>{if(!this._shouldProcessAllowedMethods(i))return;let o=i.matched||[],a=this._collectAllowedMethods(o),u=Object.keys(a),c=r.method.toUpperCase();if(!e.includes(c)){this._handleNotImplemented(i,u,t);return}if(c==="OPTIONS"&&u.length>0){this._handleOptionsRequest(i,u);return}u.length>0&&!a[c]&&this._handleMethodNotAllowed(i,u,t)})}}_shouldProcessAllowedMethods(t){return!!(t.matched&&(!t.status||t.status===404))}_collectAllowedMethods(t){let e={};for(let r of t)for(let n of r.methods)e[n]=n;return e}_handleNotImplemented(t,e,r){if(r.throw)throw typeof r.notImplemented=="function"?r.notImplemented():new LBt.default.NotImplemented;t.status=501,t.set("Allow",e.join(", "))}_handleOptionsRequest(t,e){t.status=200,t.body="",t.set("Allow",e.join(", "))}_handleMethodNotAllowed(t,e,r){if(r.throw)throw typeof r.methodNotAllowed=="function"?r.methodNotAllowed():new LBt.default.MethodNotAllowed;t.status=405,t.set("Allow",e.join(", "))}all(...t){let e,r,n;if(t.length>=2&&(typeof t[1]=="string"||t[1]instanceof RegExp)?(e=t[0],r=t[1],n=t.slice(2)):(e=void 0,r=t[0],n=t.slice(1)),typeof r!="string"&&!(r instanceof RegExp)&&(!Array.isArray(r)||r.length===0))throw new Error("You have to provide a path when adding an all handler");let i={name:e,pathAsRegExp:r instanceof RegExp};return this.register(r,X6n,n,{...this.opts,...i}),this}redirect(t,e,r){let n=t,i=e;if(typeof t=="symbol"||typeof t=="string"&&t[0]!=="/"){let a=this.url(t);if(a instanceof Error)throw a;n=a}if(typeof e=="symbol"||typeof e=="string"&&e[0]!=="/"&&!e.includes("://")){let a=this.url(e);if(a instanceof Error)throw a;i=a}return this.all(n,a=>{a.redirect(i),a.status=r||301})}register(t,e,r,n={}){let i={...this.opts,...n};if(Array.isArray(t))return this._registerMultiplePaths(t,e,r,i);let o=this._createRouteLayer(t,e,r,i);return this.opts.prefix&&o.setPrefix(this.opts.prefix),XDa(o,this.params),this.stack.push(o),PBt("defined route %s %s",o.methods,o.path),o}_registerMultiplePaths(t,e,r,n){for(let i of t)this.register.call(this,i,e,r,n);return this}_createRouteLayer(t,e,r,n){return new j6n(t,e,r,{end:n.end===!1?n.end:!0,name:n.name,sensitive:n.sensitive||!1,strict:n.strict||!1,prefix:n.prefix||"",ignoreCaptures:n.ignoreCaptures,ignoreWildcardParameter:n.ignoreWildcardParameter,pathAsRegExp:n.pathAsRegExp})}route(t){return this.stack.find(r=>r.name===t)||!1}url(t,...e){let r=this.route(t);return r?r.url(...e):new Error(`No route found for name: ${String(t)}`)}match(t,e){let r={path:[],pathAndMethod:[],route:!1},n=e.toUpperCase();for(let i of this.stack)if(PBt("test %s %s",i.path,i.regexp),i.match(t)){r.path.push(i);let o=i.methods.length===0,a=i.methods.includes(n);(o||a)&&(r.pathAndMethod.push(i),i.methods.length>0&&(r.route=!0))}return r}matchHost(t){let{host:e}=this;return e?t?typeof e=="string"?t===e:Array.isArray(e)?e.includes(t):e instanceof RegExp?e.test(t):!1:!1:!0}param(t,e){this.params[t]||(this.params[t]=[]),Array.isArray(this.params[t])||(this.params[t]=[this.params[t]]),this.params[t].push(e);for(let r of this.stack)r.param(t,e);return this}_registerMethod(t,...e){let r,n,i;if(e.length>=2&&(typeof e[1]=="string"||e[1]instanceof RegExp)?(r=e[0],n=e[1],i=e.slice(2)):(r=void 0,n=e[0],i=e.slice(1)),typeof n!="string"&&!(n instanceof RegExp)&&(!Array.isArray(n)||n.length===0))throw new Error(`You have to provide a path when adding a ${t} handler`);let o={name:r,pathAsRegExp:n instanceof RegExp};return this.register(n,[t],i,{...this.opts,...o}),this}get(...t){return this._registerMethod("get",...t)}post(...t){return this._registerMethod("post",...t)}put(...t){return this._registerMethod("put",...t)}patch(...t){return this._registerMethod("patch",...t)}delete(...t){return this._registerMethod("delete",...t)}del(...t){return this.delete.apply(this,t)}head(...t){return this._registerMethod("head",...t)}options(...t){return this._registerMethod("options",...t)}};for(let t of X6n)KDa.includes(t)||t in H6n.prototype||Object.defineProperty(H6n.prototype,t,{value:s(function(...r){return this._registerMethod(t,...r)},"value"),writable:!0,configurable:!0,enumerable:!1});var K2c={...U7,..._l};var eh=".temp",t5="couchdb",Uoe="minio",eWn=[{value:"MAIN_PORT",default:"10000"},{value:"COUCH_DB_URL",default:"http://budibase:budibase@localhost:10000/db/"},{value:"MINIO_URL",default:"http://localhost:10000"},{value:"MINIO_ACCESS_KEY"},{value:"MINIO_SECRET_KEY"}];function rBa(t){let e=t.MAIN_PORT,r=t.COUCH_DB_USER,n=t.COUCH_DB_PASSWORD;return!t.COUCH_DB_URL&&e&&r&&n&&(t.COUCH_DB_URL=`http://${r}:${n}@localhost:${e}/db/`),t.MINIO_URL||(t.MINIO_URL=`http://localhost:${e}/`),t}s(rBa,"checkURLs");async function nBa(){console.log("*** NOTE: use a .env file to load these parameters repeatedly ***");let t={};for(let e of eWn)t[e.value]=await pP(e.value,e.default);return t}s(nBa,"askQuestions");function iBa(t){if(!MBt.default.existsSync(t))throw"Unable to file specified .env file";let e=MBt.default.readFileSync(t,"utf8"),r=rBa(Z6n.default.parse(e));for(let n of eWn)if(!r[n.value])throw`Cannot find "${n.value}" property in .env file`;return r}s(iBa,"loadEnvironment");async function UBt(t=!0){let e;t!==!0?e=iBa(t):e=await nBa();for(let r of Object.keys(e))lt._set(r,e[r]);return e}s(UBt,"getConfig");async function FBt(t,e){let r=tce();try{await r.replicate(t,e,{batch_size:1e3,batches_limit:5,style:"main_only"})}catch(n){throw new Error(`Replication failed - ${JSON.stringify(n)}`)}}s(FBt,"replication");function QBt(t){let e=tce(t.COUCH_DB_URL),r=tce();return{Remote:e,Local:r}}s(QBt,"getPouches");var SQ=ge(require("fs")),Ok=require("path");hd();var rWn=ge(require("node:stream")),nWn=require("stream/promises");var{ObjectStoreBuckets:sBa,ObjectStore:iWn,retrieve:oBa,uploadDirectory:aBa,createBucketIfNotExists:uBa}=mbe,tWn=Object.values(sBa);async function cBa(t,e){let r=[],n;do{let i=await t.listObjectsV2({Bucket:e,ContinuationToken:n});r.push(...i.Contents?.filter(o=>!!o.Key).map(o=>({...o,bucket:e,Key:o.Key}))||[]),n=i.NextContinuationToken}while(n);return r}s(cBa,"listBucketObjects");async function sWn(){let t=(0,Ok.join)(eh,Uoe);SQ.default.mkdirSync(t,{recursive:!0});let e=[],r=0;for(let o of tWn){let a=iWn();try{await a.headBucket({Bucket:o})}catch{r++;continue}e=e.concat(await cBa(a,o))}if(r===tWn.length)throw new Error("Unable to access MinIO/S3 - check environment config.");let n=fP(e.length),i=0;for(let o of e){let a=o.Key,u=await oBa(o.bucket,a),c=a.split("/"),l=(0,Ok.join)(t,o.bucket,...c);SQ.default.mkdirSync((0,Ok.dirname)(l),{recursive:!0}),u instanceof rWn.Readable?await(0,nWn.pipeline)(u,SQ.default.createWriteStream(l)):SQ.default.writeFileSync(l,u),n.update(++i)}n.stop()}s(sWn,"exportObjects");async function oWn(){let t=(0,Ok.join)(eh,Uoe),e=SQ.default.readdirSync(t),r=0;e.forEach(o=>{let a=SQ.default.readdirSync((0,Ok.join)(t,o));r+=a.length});let n=fP(r),i=0;for(let o of e){let a=iWn();await uBa(a,o);let u=await aBa(o,(0,Ok.join)(t,o),"/");i+=u.length,n.update(i)}n.stop()}s(oWn,"importObjects");var aWn=require("tar");async function uWn(t){let e=t.env||void 0,r=t.export||t;typeof r!="string"&&(r=`backup-${new Date().toISOString()}.tar.gz`);let n=await UBt(e),i=await Tqt(n.COUCH_DB_URL),{Remote:o,Local:a}=QBt(n);iT.default.existsSync(eh)&&iT.default.rmSync(eh,{recursive:!0});let u=(0,IQ.join)(eh,t5);iT.default.mkdirSync(eh),iT.default.mkdirSync(u),console.log("CouchDB Export");let c=fP(i.length),l=0;for(let f of i){c.update(++l);let d=new o(f),m=new a((0,IQ.join)(eh,t5,f));await FBt(d,m),await d.close(),await m.close()}c.stop(),console.log("S3 Export"),await sWn(),aWn.create({sync:!0,gzip:!0,file:r,cwd:(0,IQ.join)(eh)},[t5,Uoe]),iT.default.rmSync(eh,{recursive:!0}),console.log(`Generated export file - ${r}`)}s(uWn,"exportBackup");async function cWn(t){let e=t.env||void 0,r=t.import||t,n=await UBt(e);(!r||!iT.default.existsSync(r))&&(console.error("Cannot import without specifying a valid file to import"),process.exit(-1)),iT.default.existsSync(eh)&&iT.default.rmSync(eh,{recursive:!0}),iT.default.mkdirSync(eh),aWn.extract({sync:!0,cwd:(0,IQ.join)(eh),file:r});let{Remote:i,Local:o}=QBt(n),a=iT.default.readdirSync((0,IQ.join)(eh,t5));console.log("CouchDB Import");let u=fP(a.length),c=0;for(let l of a){u.update(++c);let f=new i(l),d=new o((0,IQ.join)(eh,t5,l));await FBt(d,f),await f.close(),await d.close()}u.stop(),console.log("MinIO Import"),await oWn();try{await yqe(`http://localhost:${n.MAIN_PORT}/api/system/restored`,"POST")}catch{}console.log("Import complete"),iT.default.rmSync(eh,{recursive:!0})}s(cWn,"importBackup");async function lBa(t){if(t.import)return cWn(t);if(t.export)return uWn(t)}s(lBa,"pickOne");var lWn=new NI("backups").addHelp("Allows building backups of Budibase, as well as importing a backup to a new instance.").addSubOption("--export [filename]","Export a backup from an existing Budibase installation.",uWn).addSubOption("--import [filename]","Import a backup to a new Budibase installation.",cWn).addSubOption("--env [envFile]","Provide an environment variable file to configure the CLI.",lBa);xx();var dXn=ge(require("node-fetch")),GQ=ge(require("fs")),hXn=ge(require("os")),FMe=require("path");var aXn=ge(hWn()),uXn=ge(require("vm")),ALt=ge(Zoe());var KO=class{static{s(this,"Helper")}constructor(e,r,n=!0){this.name=e,this.fn=r,this.useValueFallback=n}register(e){e.registerHelper(this.name,(r,n)=>{let i={};n&&n.data&&n.data.root&&(i=n.data.root);let o=this.fn(r,i);return o??(this.useValueFallback?r:null)})}unregister(e){e.unregisterHelper(this.name)}};var UMe=ge(Zoe());var FPt=ge(BKn());var Zh=ge(Zqe()),GKn=ge(kKn()),jKn=ge(PKn()),VKn=ge(LKn()),HKn=ge(MKn()),YKn=ge(UKn()),WKn=ge(FKn()),zKn=ge(QKn()),$Kn=ge(qKn());Zh.default.extend(GKn.default);Zh.default.extend(jKn.default);Zh.default.extend(VKn.default);Zh.default.extend(HKn.default);Zh.default.extend(YKn.default);Zh.default.extend(WKn.default);Zh.default.extend(zKn.default);Zh.default.extend($Kn.default);function UQ(t){return typeof t=="object"&&typeof t.hash=="object"}s(UQ,"isOptions");function LPt(t){return typeof t=="object"&&typeof t.options=="object"&&typeof t.app=="object"}s(LPt,"isApp");function MPt(t,e,r){if(UQ(t))return MPt({},e,t);if(UQ(e))return MPt(t,r,e);let n=LPt(t)?t.context:{};r=r||{},UQ(r)||(e=Object.assign({},e,r)),UQ(r)&&r.hash.root===!0&&(e=Object.assign({},r.data.root,e));let i=Object.assign({},n,e,r.hash);return LPt(t)||(i=Object.assign({},t,i)),LPt(t)&&t.view&&t.view.data&&(i=Object.assign({},i,t.view.data)),i}s(MPt,"getContext");function UPt(t,e,r){return UQ(e)&&(r=e,e=JKn),UQ(t)&&(r=t,e=null,t=null),{str:t,pattern:e,options:r}}s(UPt,"initialConfig");function KKn(t,e,r){let n=UPt(t,e,r),i={lang:"en",date:new Date(n.str)},o=MPt(this,i,{});Zh.default.locale(o.lang||o.language)}s(KKn,"setLocale");var JKn="MMMM DD, YYYY",RMe=s((t,e,r)=>{let n=UPt(t,e,r);if(n.str==null&&n.pattern==null)return Zh.default.locale("en"),(0,Zh.default)().format(JKn);KKn(n.str,n.pattern,n.options);let i=(0,Zh.default)(new Date(n.str));return typeof n.options=="string"?i=n.options.toLowerCase()==="utc"?i.utc():i.tz(n.options):i=i.tz(Zh.default.tz.guess()),n.pattern===""?i.toISOString():i.format(n.pattern)},"date"),mae=s((t,e,r)=>{let n=UPt(t,e);KKn(n.str,n.pattern);let i=Zh.default.duration(n.str,n.pattern);return r&&!UQ(r)?i.format(r):i.humanize()},"duration"),Aae=s((t,e,r)=>(0,Zh.default)(new Date(t)).diff((0,Zh.default)(new Date(e)),r),"difference"),CMe=s(t=>{let e=Aae(t,new Date().toISOString(),"ms");return mae(e,"ms")},"durationFromNow");var bMe=["#if","#unless","#each","#with","lookup","log","blockHelperMissing","each","helperMissing","if","unless","log","lookup","with"],XKn=["math","array","number","url","string","comparison","object","regex","uuid"],FQ={OBJECT:"object",ALL:"all",LITERAL:"literal",JS:"js",DECODE_ID:"decodeId"},_5="%LITERAL%";var ZKn={date:RMe,duration:mae,difference:Aae,durationFromNow:CMe};function e7n(t){for(let[r,n]of Object.entries(ZKn))t.registerHelper(r,n);let e=[];for(let r of XKn){let n=FPt.default[r]();for(let i of Object.entries(n)){let o=i[0];bMe.indexOf(o)!==-1||e.indexOf(o)!==-1||e.push(o)}FPt.default[r]({handlebars:t})}QPt=e.concat(Object.keys(ZKn))}s(e7n,"registerAll");var QPt=[];function ZUa(){return process.env.NODE_ENV==="jest"||process.env.JEST_WORKER_ID!=null&&process.env.JEST_WORKER_ID!=="null"}s(ZUa,"isJest");function QQ(){return ZUa()}s(QQ,"isTest");var t7n=s(()=>process&&process.env.BACKEND_JS,"isTestingBackendJS");var eFa=/^[A-Za-z0-9]+$/g,wMe=/{{([^{].*?)}}/g,qPt=/{?{{([^{].*?)}}}?/g,tFa=/{{{([^{].*?)}}}/g,_ae=s(()=>QQ()&&t7n()?!0:QQ()?!1:typeof window>"u","isBackendService"),r7n=s(()=>process&&!process.env.NO_JS,"isJSAllowed"),n7n=s(t=>{let e=t,r=new RegExp(wMe),n=new RegExp(tFa),i=e.match(n);i&&i.forEach(a=>{e=e.replace(a,"")});let o=e.match(r);return o||[]},"findDoubleHbsInstances"),i7n=s(t=>t.match(eFa),"isAlphaNumeric"),GPt=s((t,e,r,n)=>t.slice(0,e)+n+t.slice(e+r),"swapStrings");var jPt=s(t=>Buffer.from(t,"base64").toString("utf-8"),"atob"),s7n=s((t,e,r)=>{let n=e.map(o=>o.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")),i=new RegExp(`\\b(${n.join("|")})\\b`,"g");return t.replace(i,`${r}$1`)},"prefixStrings");function NMe(t){return`
4434
+ }`;await Kpe(t,e,"by_api_key")},"createApiKeyView");async function C$e(t,e,r,n,i){try{return await r.query(`database/${t}`,e)}catch(o){let a=o&&o.name==="not_found",u=o&&o.status===404;if(a||u)return await ues(r,t),await n(),C$e(t,e,r,n,i);if(o.status===409)return C$e(t,e,r,n,i);throw o}}s(C$e,"queryViewRaw");var des=s(async(t,e,r,n,i)=>{let u=(await C$e(t,e,r,n,i)).rows.map(c=>e.include_docs?c.doc:c.value);return i?.arrayResponse?u:u.length<=1?u[0]:u},"queryView");var hes={by_email2:ces,by_api_key:fes,by_app:les},Jpe=s(async(t,e,r,n)=>{r||(r=lp());let i=hes[t];return des(t,e,r,i,n)},"queryGlobalView");ur();var pes=ge(require("pouchdb"));var ges=require("dd-trace");var fpr=ge(require("node-fetch"));ur();var w$e=_3.removeKeyNumbering;function n1(t){return t==null||t===""}s(n1,"isEmpty");var cpr=class t{static{s(this,"QueryBuilder")}#e;#r;#t;#i;#s;#n;#c;#o;#a;#u;#l;#f=!1;#d;static{this.maxLimit=200}constructor(e,r,n){this.#e=e,this.#r=r,this.#t={allOr:!1,onEmptyFilter:"all",string:{},fuzzy:{},range:{},equal:{},notEqual:{},empty:{},notEmpty:{},oneOf:{},notOneOf:{},contains:{},notContains:{},containsAny:{},...n},this.#i=50,this.#c="ascending",this.#o="string",this.#a=!0}disableEscaping(){return this.#f=!0,this}setIndexBuilder(e){return this.#l=e,this}setVersion(e){return e!=null&&(this.#u=e),this}setTable(e){return this.#t.equal.tableId=e,this}setLimit(e){return e!=null&&(this.#i=e),this}setSort(e){return e!=null&&(this.#s=e),this}setSortOrder(e){return e!=null&&(this.#c=e),this}setSortType(e){return e!=null&&(this.#o=e),this}setBookmark(e){return e!=null&&(this.#n=e),this}setSkip(e){return this.#d=e,this}excludeDocs(){return this.#a=!1,this}includeDocs(){return this.#a=!0,this}addString(e,r){return this.#t.string[e]=r,this}addFuzzy(e,r){return this.#t.fuzzy[e]=r,this}addRange(e,r,n){return this.#t.range[e]={low:r,high:n},this}addEqual(e,r){return this.#t.equal[e]=r,this}addNotEqual(e,r){return this.#t.notEqual[e]=r,this}addEmpty(e,r){return this.#t.empty[e]=r,this}addNotEmpty(e,r){return this.#t.notEmpty[e]=r,this}addOneOf(e,r){return this.#t.oneOf[e]=r,this}addNotOneOf(e,r){return this.#t.notOneOf[e]=r,this}addContains(e,r){return this.#t.contains[e]=r,this}addNotContains(e,r){return this.#t.notContains[e]=r,this}addContainsAny(e,r){return this.#t.containsAny[e]=r,this}setAllOr(){this.#t.allOr=!0}setOnEmptyFilter(e){this.#t.onEmptyFilter=e}handleSpaces(e){return this.#f?e:e.replace(/ /g,"_")}preprocess(e,{escape:r,lowercase:n,wrap:i,type:o}={}){let a=!!this.#u,u=typeof e;return e&&n&&(e=e.toLowerCase?e.toLowerCase():e),!this.#f&&r&&u==="string"&&(e=`${e}`.replace(/[ /#+\-&|!(){}\]^"~*?:\\]/g,"\\$&")),u==="string"&&!isNaN(e)&&!o?e=`"${e}"`:a&&i&&(e=u==="number"?e:`"${e}"`),e}isMultiCondition(){let e=0;for(let r of Object.values(this.#t))typeof r=="object"&&(e+=Object.keys(r).length);return e>1}compressFilters(e){let r={};for(let o of Object.keys(e)){let a=w$e(o);r[a]?r[a]=r[a].concat(e[o]):r[a]=e[o]}let n={},i=1;for(let[o,a]of Object.entries(r))n[`${i++}:${o}`]=a;return n}buildSearchQuery(){let e=this,r=this.#t&&this.#t.allOr,n=r?"":"*:*",i=!0,o={escape:!0,lowercase:!0,wrap:!0},a="";this.#t.equal.tableId&&(a=this.#t.equal.tableId,delete this.#t.equal.tableId);let u=s((S,b)=>n1(b)?null:`${S}:${e.preprocess(b,o)}`,"equal"),c=s((S,b,C="AND")=>{if(n1(b))return null;if(!Array.isArray(b))return`${S}:${b}`;let B=`${e.preprocess(b[0],{escape:!0})}`;for(let k=1;k<b.length;k++)B+=` ${C} ${e.preprocess(b[k],{escape:!0})}`;return`${S}:(${B})`},"contains"),l=s((S,b)=>n1(b)?null:(b=e.preprocess(b,{escape:!0,lowercase:!0,type:"fuzzy"}),`${S}:/.*${b}.*/`),"fuzzy"),f=s((S,b)=>{let C=r?"*:* AND ":"",B=r?"AND":void 0;return C+"NOT "+c(S,b,B)},"notContains"),d=s((S,b)=>c(S,b,"OR"),"containsAny"),m=s((S,b)=>{if(n1(b))return"*:*";if(!Array.isArray(b))if(typeof b=="string")b=b.split(",");else return"";let C=`${e.preprocess(b[0],o)}`;for(let B=1;B<b.length;B++)C+=` OR ${e.preprocess(b[B],o)}`;return`${S}:(${C})`},"oneOf"),A=s((S,b)=>{if(n1(b))return null;if(!Array.isArray(b))if(typeof b=="string")b=b.split(",");else return"";let C=`${e.preprocess(b[0],o)}`;for(let B=1;B<b.length;B++)C+=` OR ${e.preprocess(b[B],o)}`;return`(*:* -${S}:(${C}))`},"notOneOf");function T(S,b,C){let B="";for(let[k,P]of Object.entries(S)){k=w$e(k),k=e.preprocess(e.handleSpaces(k),{escape:!0});let x=b(k,P);if(x!=null){if(B.length>0||n.length>0){let V=C?.mode?C.mode:r?"OR":"AND";B+=` ${V} `}B+=x,(typeof P!="string"&&P!=null||typeof P=="string"&&P!==a&&P!=="")&&(i=!1)}}if(C?.returnBuilt)return B;n+=B}if(s(T,"build"),this.#t.string&&T(this.#t.string,(S,b)=>n1(b)?null:(b=e.preprocess(b,{escape:!0,lowercase:!0,type:"string"}),`${S}:${b}*`)),this.#t.range&&T(this.#t.range,(S,b)=>{if(n1(b)||b.low==null||b.low===""||b.high==null||b.high==="")return null;let C=e.preprocess(b.low,o),B=e.preprocess(b.high,o);return`${S}:[${C} TO ${B}]`}),this.#t.fuzzy&&T(this.#t.fuzzy,l),this.#t.equal&&T(this.#t.equal,u),this.#t.notEqual&&T(this.#t.notEqual,(S,b)=>n1(b)?null:typeof b=="boolean"?`(*:* AND !${S}:${b})`:`!${S}:${e.preprocess(b,o)}`),this.#t.empty&&T(this.#t.empty,S=>(i=!1,`(*:* -${S}:["" TO *])`)),this.#t.notEmpty&&T(this.#t.notEmpty,S=>(i=!1,`${S}:["" TO *]`)),this.#t.oneOf&&T(this.#t.oneOf,m),this.#t.notOneOf&&T(this.#t.notOneOf,A),this.#t.contains&&T(this.#t.contains,c),this.#t.notContains&&T(this.compressFilters(this.#t.notContains),f),this.#t.containsAny&&T(this.#t.containsAny,d),a&&(n=this.isMultiCondition()?`(${n})`:n,r=!1,T({tableId:a},u)),i){if(this.#t.onEmptyFilter==="none")return"";if(this.#t?.allOr)return n.replace("()","(*:*)")}return n}buildSearchBody(){let e={q:this.buildSearchQuery(),limit:Math.min(this.#i,t.maxLimit),include_docs:this.#a};if(this.#n&&(e.bookmark=this.#n),this.#s){let r=this.#c==="descending"?"-":"",n=`<${this.#o}>`;e.sort=`${r}${this.handleSpaces(this.#s)}${n}`}return e}async run(){return this.#d&&await this.#p(this.#d),await this.#m()}async#p(e){let r=this.#a,n=this.#i;this.excludeDocs();let i=e,o=0;do{let a=Math.min(t.maxLimit,i);this.setLimit(a);let{bookmark:u,rows:c}=await this.#m();this.setBookmark(u),o=c.length,i-=c.length}while(i>0&&o>0);this.#a=r,this.#i=n}async#m(){let{url:e,cookie:r}=Zx(),n=`${e}/${this.#e}/_design/database/_search/${this.#r}`,i=this.buildSearchBody();try{return await lpr(n,i,r)}catch(o){if(o.status===404&&this.#l)return await this.#l(),await lpr(n,i,r);throw o}}};async function lpr(t,e,r){let n=await(0,fpr.default)(t,{body:JSON.stringify(e),method:"POST",headers:{Authorization:r}});if(n.status===404)throw n;let i=await n.json(),o={rows:[],totalRows:0};return i.rows!=null&&i.rows.length>0&&(o.rows=i.rows.map(a=>a.doc)),i.bookmark&&(o.bookmark=i.bookmark),i.total_rows&&(o.totalRows=i.total_rows),o}s(lpr,"runQuery");ur();var U7={};Fi(U7,{addTenantToUrl:()=>Aes,getTenantDB:()=>dpr,getTenantIDFromCtx:()=>N$e,isUserInWorkspaceTenant:()=>_es});function dpr(t){return GT(nK(t))}s(dpr,"getTenantDB");ur();function Aes(t){let e=Hs();if(ZP()){let r=t.indexOf("?")===-1?"?":"&";t+=`${r}tenantId=${e}`}return t}s(Aes,"addTenantToUrl");var _es=s((t,e)=>{let r;return e?r=e.tenantId||uh:r=Hs(),(Y3(t)||uh)===r},"isUserInWorkspaceTenant"),Ees=Object.values(W9),N$e=s((t,e)=>{if(!ZP())return uh;e.allowNoTenant===void 0&&(e.allowNoTenant=!1),e.includeStrategies||(e.includeStrategies=Ees),e.excludeStrategies||(e.excludeStrategies=[]);let r=s(n=>{if(e.excludeStrategies?.includes(n))return!1;if(e.includeStrategies?.includes(n))return!0},"isAllowed");if(r("user")){let n=t.user?.tenantId;if(n)return n}if(r("header")){let n=t.request.headers["x-budibase-tenant-id"];if(n)return n}if(r("query")){let n=t.request.query.tenantId;if(n)return n}if(r("subdomain")){let n;try{n=new URL(pHe()).host.split(":")[0]}catch(o){if(o.code!=="ERR_INVALID_URL")throw o}let i=t.host;if(n&&i.includes(n)){let o=i.substring(0,i.indexOf(`.${n}`));if(o)return o}}if(r("path")){let n=t.matched.find(a=>!!a.paramNames.find(u=>u.name==="tenantId")),i=t.originalUrl,o;if(i.includes("?")?o=i.split("?")[0]:o=i,n){let a=n.params(o,n.captures(o),{});if(a.tenantId)return a.tenantId}}e.allowNoTenant||t.throw(403,"Tenant id not set")},"getTenantIDFromCtx");ur();var Xpe={milliseconds:1,seconds:1e3,minutes:60*1e3,hours:3600*1e3,days:1440*60*1e3},_h=class t{constructor(e){this.ms=e}static{s(this,"Duration")}to(e){return this.ms/Xpe[e]}toMs(){return this.ms}toSeconds(){return this.to("seconds")}static convert(e,r,n){return n*Xpe[e]/Xpe[r]}static from(e,r){return new t(r*Xpe[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)}};function hpr(){let t=_h.fromDays(7).toSeconds();if(!lt.SESSION_EXPIRY_SECONDS)return t;let e=parseInt(lt.SESSION_EXPIRY_SECONDS);return Number.isFinite(e)&&e>0?e:t}s(hpr,"getSessionExpirySeconds");var ihu="app_";function ppr(t){return new Promise(e=>setTimeout(e,t))}s(ppr,"timeout");function gpr(t){return!!iUt[t]}s(gpr,"isAudited");var eIr=ge(ZSr());var fZe=require("util"),dZe=ge(require("zlib"));var pAu=(0,fZe.promisify)(dZe.default.gzip),gAu=(0,fZe.promisify)(dZe.default.gunzip);var aIr=ge(require("http")),uIr=ge(require("https"));var tIr=ge(require("dns")),D1=ge(require("net"));var rIr=require("util");var rAs=["127.0.0.0/8","10.0.0.0/8","172.16.0.0/12","192.168.0.0/16","169.254.0.0/16","0.0.0.0/8","::1/128","fc00::/7","fe80::/10"],pZe,nAs=(0,rIr.promisify)(tIr.default.lookup);function nIr(){return!(lt.SELF_HOSTED&&lt.BLACKLIST_IPS!==void 0)}s(nIr,"shouldApplyDefaultBlacklist");function gZe(t){return D1.default.isIP(t)===6?"ipv6":"ipv4"}s(gZe,"getIpVersion");function iAs(t){let e=D1.default.isIP(t);return e===4?32:e===6?128:null}s(iAs,"getMaxPrefixLength");function sAs(t,e){if(!/^\d+$/.test(e))return null;let r=Number.parseInt(e,10),n=iAs(t);return n==null||r>n?null:r}s(sAs,"getValidSubnetPrefix");function oAs(t){return D1.default.isIP(t)?t:(/^https?:\/\//.test(t)||(t=`https://${t}`),new URL(t).hostname.replace(/^\[|\]$/g,""))}s(oAs,"parseAddress");async function iIr(t){return t=oAs(t),(await nAs(t,{all:!0})).map(r=>r.address)}s(iIr,"lookup");async function mZe(t){return D1.default.isIP(t)?[t]:iIr(t)}s(mZe,"resolveAddress");function hZe(t,e){let r=e.trim();if(!r)return;let n=r.split("/");if(n.length>2){console.log(`Ignoring invalid blacklist entry: ${r}`);return}let[i,o]=n,a=D1.default.isIP(i);if(n.length===2){let u=sAs(i,o);if(a&&u!==null){t.addSubnet(i,u,gZe(i));return}console.log(`Ignoring invalid blacklist entry: ${r}`);return}a&&t.addAddress(i,gZe(i))}s(hZe,"addEntryToBlacklist");async function aAs(){let t=new D1.default.BlockList;if(nIr())for(let r of rAs)hZe(t,r);let e=lt.BLACKLIST_IPS?.split(",")||[];for(let r of e){let n=r.trim();if(!n)continue;let[i]=n.split("/");if(D1.default.isIP(i)){hZe(t,n);continue}let o=await iIr(n);for(let a of o)hZe(t,a)}pZe=t}s(aAs,"refreshBlacklist");async function sIr(t){pZe||await aAs();let e;try{e=await mZe(t)}catch(r){return r instanceof TypeError?(console.error("Black list error: could not parse address: ",t),!0):nIr()}return e.some(r=>pZe.check(r,gZe(r)))}s(sIr,"isBlacklisted");var Zme=ge(require("node-fetch"));var oIr=5,cAs=new Set(["http:","https:"]),lAs=["authorization","cookie","cookie2","proxy-authorization"];function AZe(t){let e;try{e=new URL(t)}catch{throw new Error("Invalid URL.")}if(!cAs.has(e.protocol))throw new Error("Only HTTP(S) URLs are allowed.");if(e.username||e.password)throw new Error("URL must not include credentials.");return e}s(AZe,"parseUrl");function fAs(t){return[301,302,303,307,308].includes(t)}s(fAs,"isRedirect");async function dAs(t){let e=AZe(t),r=await mZe(e.hostname);if(r.length===0)throw new Error("URL is blocked or could not be resolved safely.");for(let n of r)if(await sIr(n))throw new Error("URL is blocked or could not be resolved safely.");return r[0]}s(dAs,"resolveSafePinnedIp");function hAs(t,e){let r=new URL(t).protocol,n=s((i,o,a)=>{let u=e.includes(":")?6:4;if(typeof o=="object"&&o?.all){a(null,[{address:e,family:u}]);return}a(null,e,u)},"lookup");return r==="https:"?new uIr.default.Agent({lookup:n}):new aIr.default.Agent({lookup:n})}s(hAs,"makePinnedAgent");function pAs(t,e){let r=t.method?.toUpperCase()||"GET";return e===303||(e===301||e===302)&&r==="POST"?{...t,body:void 0,method:"GET",redirect:"manual"}:t}s(pAs,"nextRequestForRedirect");function gAs(t,e){return new URL(t).origin!==new URL(e).origin}s(gAs,"shouldStripSensitiveHeadersForRedirect");function mAs(t){if(!t.headers)return t;let e=new Zme.Headers(t.headers);return lAs.forEach(r=>e.delete(r)),{...t,headers:e}}s(mAs,"stripSensitiveHeadersForRedirect");function AAs(t){return!t||typeof t!="object"||!("resume"in t)?!1:typeof t.resume=="function"}s(AAs,"isResumableBody");function _As(t){let e=t.body;AAs(e)&&e.resume()}s(_As,"releaseResponseBody");async function GJ(t,e={},{followRedirects:r=!0,returnRedirectWithoutLocation:n=!1,fetchFn:i=Zme.default}={}){let o=t,a={...e,redirect:"manual"};for(let u=0;u<=oIr;u++){let c=await dAs(o),l;try{l=await i(o,{...a,agent:hAs(o,c)})}catch(m){let A=AZe(o).hostname;throw m instanceof Error?(m.message=`Failed to connect to resolved IP for ${A}: ${m.message}`,m):new Error(`Failed to connect to resolved IP for ${A}: unknown network error`)}if(!fAs(l.status))return l;if(_As(l),!r)throw new Error("Redirects are not permitted.");if(u===oIr)break;let f=l.headers.get("location");if(!f){if(n)return l;throw new Error("Maximum redirect reached.")}let d=AZe(new URL(f,o).toString()).toString();a=pAs(a,l.status),gAs(o,d)&&(a=mAs(a)),o=d}throw new Error("Maximum redirect reached.")}s(GJ,"fetchWithBlacklist");function EAs(t){let e="",r=-1,n,i,o=t.opts?.repeat;return o&&(i=o.endDate?new Date(o.endDate).getTime():Date.now(),n=o.tz,"cron"in o?e=o.cron:r=o.every),{id:t.id.toString(),name:"",key:t.id.toString(),tz:n,endDate:i,cron:e,every:r,next:0}}s(EAs,"jobToJobInformation");var _Ze=class{static{s(this,"InMemoryQueue")}constructor(e,r){this._name=e,this._opts=r,this._messages=[],this._emitter=new cIr.default.EventEmitter,this._runCount=0,this._addCount=0,this._queuedJobIds=new Set,this._attempts=r?.defaultJobOptions?.attempts||1}async process(e,r){r=typeof e=="number"?r:e,this._emitter.on("message",async n=>{if(!n.manualTrigger&&n.opts?.repeat!=null)return;function i(){return r.length===1?r(n):new Promise((c,l)=>{r(n,s((d,m)=>{d?l(d):c(m)},"done"))})}s(i,"execute");let o=this._attempts;async function a(c,l=0){try{return await c}catch(f){if(l++,l<o&&!n._isDiscarded)return await $b.wait(100*l),await a(i(),l);throw f}}s(a,"retryFunc");try{let c=await a(i());this._emitter.emit("completed",n,c);let l=this._messages.indexOf(n);if(l===-1)throw"Failed deleting a processed message";this._messages.splice(l,1)}catch(c){console.error(c),this._emitter.emit("error",n,c)}this._runCount++;let u=n.opts?.jobId?.toString();u&&n.opts?.removeOnComplete&&this._queuedJobIds.delete(u)})}async isReady(){return this}async add(e,r){if(typeof e=="string")throw new Error("doesn't support named jobs");let n=r,i=n?.jobId?.toString();if(i&&this._queuedJobIds.has(i)){console.log(`Ignoring already queued job ${i}`);return}if(typeof e!="object")throw"Queue only supports carrying JSON.";i&&this._queuedJobIds.add(i);let o=MI(),a=s(()=>{let c={id:o,timestamp:Date.now(),queue:this,data:e,opts:n,discard:s(async()=>{c._isDiscarded=!0},"discard")};this._messages.push(c),this._messages.length>1e3&&this._messages.shift(),this._addCount++,this._emitter.emit("message",c)},"pushMessage"),u=n?.delay;return u?setTimeout(a,u):a(),{id:i,finished:s(()=>new Promise((c,l)=>{let f=s((m,A)=>{m.id===o&&(this._emitter.off("error",f),this._emitter.off("completed",d),l(A))},"errorHandler"),d=s((m,A)=>{m.id===o&&(this._emitter.off("error",f),this._emitter.off("completed",d),c(A))},"completedHandler");this._emitter.on("error",f),this._emitter.on("completed",d)}),"finished")}}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=>EAs(e))}async whenCurrentJobsFinished(){do await ppr(50);while(this.hasRunningJobs())}hasRunningJobs(){return this._addCount>this._runCount}},lIr=_Ze;var btt=ge(fNr());function dNr(t,e,r){GIs(t,e),r&&QIs(t,r)}s(dNr,"addListeners");function QIs(t,e){t.on("stalled",async r=>{if(e)await e(r);else if(r.opts.repeat){let n=r.id,i=await t.getRepeatableJobs();for(let o of i)o.id===n&&await t.removeRepeatableByKey(o.key);console.log(`jobId=${n} disabled`)}})}s(QIs,"handleStalled");function Vy(t,e,r={},n={}){let i=`[BULL] ${t}=${e}`,o=r.error,a={_logKey:"bull",eventType:t,event:e,job:r.job,jobId:r.jobId||r.job?.id,...n},u;return r.job?.data?.automation&&(u={_logKey:"automation",trigger:r.job?r.job.data.automation.definition.trigger.event:void 0}),[i,o,a,u]}s(Vy,"getLogParams");var qIs={automationQueue:"automation-event",appBackupQueue:"app-backup-event",auditLogQueue:"audit-log-event",systemEventQueue:"system-event",appMigration:"app-migration",docWritethroughQueue:"doc-writethrough",devRevertProcessorQueue:"dev-revert-event",batchUserSyncProcessorQueue:"batch-user-sync-processor",ragIngestionQueue:"rag-ingestion-processor",agentLogIndexingQueue:"agent-log-indexing-processor",escalationQueue:"escalation-processor",agentRequestTrackingQueue:"agent-request-tracking-processor",agentTestRunQueue:"agent-test-run-processor",knowledgeSourceSyncQueue:"knowledge-source-sync-processor"};function GIs(t,e){let r=qIs[e];function n(i,o){let a=i.data.event?.appId;if(a)return gHe(a,o);o()}s(n,"doInJobContext"),t.on("stalled",async i=>{await n(i,()=>{console.error(...Vy(r,"stalled",{job:i}))})}).on("error",i=>{console.error(...Vy(r,"error",{error:i}))}),process.env.NODE_DEBUG?.includes("bull")&&t.on("waiting",i=>{console.info(...Vy(r,"waiting",{jobId:i}))}).on("active",async i=>{await n(i,()=>{console.info(...Vy(r,"active",{job:i}))})}).on("progress",async(i,o)=>{await n(i,()=>{console.info(...Vy(r,"progress",{job:i},{progress:o}))})}).on("completed",async(i,o)=>{await n(i,()=>{console.info(...Vy(r,"completed",{job:i},{result:o}))})}).on("failed",async(i,o)=>{await n(i,()=>{console.error(...Vy(r,"failed",{job:i,error:o}))})}).on("paused",()=>{console.info(...Vy(r,"paused"))}).on("resumed",()=>{console.info(...Vy(r,"resumed"))}).on("cleaned",(i,o)=>{console.info(...Vy(r,"cleaned",{},{length:i.length,type:o}))}).on("drained",()=>{console.info(...Vy(r,"drained"))}).on("removed",i=>{console.info(...Vy(r,"removed",{job:i}))})}s(GIs,"logging");var jIs=[];function hNr(t,e){let r=setInterval(t,e);return jIs.push(r),r}s(hNr,"set");var iN=ge(require("dd-trace")),pX=ge(QNr());var bRs=_h.fromMinutes(5).toMs(),wRs=_h.fromSeconds(30).toMs(),wtt=_h.fromSeconds(60).toMs(),jNr=[],qNr;async function GNr(){for(let t of jNr)await t.clean(wtt,"completed"),await t.clean(wtt,"failed")}s(GNr,"cleanup");async function NRs(t,e,r){let n=performance.now();try{let i=await e();return iN.default.dogstatsd.increment(`${t}.success`,1,r),i}catch(i){throw iN.default.dogstatsd.increment(`${t}.error`,1,r),i}finally{let i=performance.now()-n;iN.default.dogstatsd.distribution(`${t}.duration.ms`,i,r),iN.default.dogstatsd.increment(t,1,r)}}s(NRs,"withMetrics");function VNr(t){return{"job.opts.attempts":t.attempts,"job.opts.backoff":t.backoff,"job.opts.delay":t.delay,"job.opts.jobId":t.jobId,"job.opts.lifo":t.lifo,"job.opts.preventParsingData":t.preventParsingData,"job.opts.priority":t.priority,"job.opts.removeOnComplete":t.removeOnComplete,"job.opts.removeOnFail":t.removeOnFail,"job.opts.repeat":t.repeat,"job.opts.stackTraceLimit":t.stackTraceLimit,"job.opts.timeout":t.timeout}}s(VNr,"jobOptsTags");function ORs(t){return{"job.id":t.id,"job.attemptsMade":t.attemptsMade,"job.timestamp":t.timestamp,"job.data.sizeBytes":(0,pX.default)(t.data),...VNr(t.opts||{})}}s(ORs,"jobTags");var eU=class{static{s(this,"BudibaseQueue")}constructor(e,r={}){this.opts=r,this.jobQueue=e,this.queue=this.initQueue()}get name(){return this.queue.name}initQueue(){let r={redis:S3(),settings:{maxStalledCount:this.opts.maxStalledCount?this.opts.maxStalledCount:0,lockDuration:bRs,lockRenewTime:wRs}};this.opts.jobOptions&&(r.defaultJobOptions=this.opts.jobOptions);let n;return lt.isTest()?process.env.BULL_TEST_REDIS_PORT&&!isNaN(+process.env.BULL_TEST_REDIS_PORT)?n=new btt.default(this.jobQueue,{...r,redis:{host:"localhost",port:+process.env.BULL_TEST_REDIS_PORT}}):n=new lIr(this.jobQueue,r):n=new btt.default(this.jobQueue,r),dNr(n,this.jobQueue,this.opts.removeStalledCb),jNr.push(n),!qNr&&!lt.isTest()&&(qNr=hNr(GNr,wtt),GNr().catch(i=>{console.error(`Unable to cleanup ${this.jobQueue} initially - ${i}`)})),n}getBullQueue(){return this.queue}process(...e){let r,n;e.length===2?(r=e[0],n=e[1]):n=e[0];let i=s(async(a,u)=>{await iN.default.trace("queue.process",async c=>{if(a.data._parentSpanContext){let l=a.data._parentSpanContext,f={traceId:l.traceId,spanId:l.spanId,toTraceId:s(()=>l.traceId,"toTraceId"),toSpanId:s(()=>l.spanId,"toSpanId"),toTraceparent:s(()=>"","toTraceparent")};c.addLink(f)}c.addTags({"queue.name":this.jobQueue,...ORs(a)}),this.opts.jobTags&&c.addTags(this.opts.jobTags(a.data)),iN.default.dogstatsd.distribution("queue.process.sizeBytes",(0,pX.default)(a.data),this.metricTags()),await this.withMetrics("queue.process",()=>u?n(a,u):n(a))})},"processCallback"),o;return n.length===1?o=s(a=>i(a),"wrappedCb"):o=i,r?this.queue.process(r,o):this.queue.process(o)}async add(e,r){return await iN.default.trace("queue.add",async n=>(n.addTags({"queue.name":this.jobQueue,"job.data.sizeBytes":(0,pX.default)(e),...VNr(r||{})}),this.opts.jobTags&&n.addTags(this.opts.jobTags(e)),e._parentSpanContext={traceId:n.context().toTraceId(),spanId:n.context().toSpanId()},iN.default.dogstatsd.distribution("queue.add.sizeBytes",(0,pX.default)(e),this.metricTags()),await this.withMetrics("queue.add",()=>this.queue.add(e,r))))}withMetrics(e,r){return NRs(e,r,this.metricTags())}metricTags(){return{queueName:this.jobQueue}}close(e){return this.queue.close(e)}whenCurrentJobsFinished(){return this.queue.whenCurrentJobsFinished()}};var KAe={};Fi(KAe,{getId:()=>Ott,setHeader:()=>LRs});var WNr=$Ae(),LRs=s(t=>{let e=WNr.getId();e&&(t["x-budibase-correlation-id"]=e)},"setHeader");function Ott(){return WNr.getId()}s(Ott,"getId");var Abe=ge(Xxr()),BJr=ge(Rst()),gpt=ge(require("dd-trace")),kJr=require("dd-trace/ext");var xJr=ge(require("path")),vJr=ge(gMr());var mbe={};Fi(mbe,{ObjectStore:()=>h0,ObjectStoreBuckets:()=>Mho,SIGNED_FILE_PREFIX:()=>opt,bucketTTLConfig:()=>cbe,budibaseTempDir:()=>CF,client3rdPartyLibrary:()=>xpo,clientLibraryPath:()=>Opo,clientLibraryUrl:()=>vpo,createBucketIfNotExists:()=>zte,deleteFile:()=>tpo,deleteFiles:()=>rpo,deleteFolder:()=>mJr,downloadTarball:()=>ipo,downloadTarballDirect:()=>npo,enrichPWAImages:()=>Dpo,enrichPluginURLs:()=>kpo,extractBucketAndPath:()=>rpt,getAllFiles:()=>Xho,getAppFileUrl:()=>IJr,getClientCacheKey:()=>SJr,getGlobalFileS3Key:()=>RJr,getGlobalFileUrl:()=>Bpo,getObjectMetadata:()=>spo,getPluginIconKey:()=>wJr,getPluginJSKey:()=>bJr,getPluginS3Dir:()=>OJr,getPresignedUrl:()=>bF,getReadStream:()=>lbe,getSafeRetrieveDirectoryPath:()=>gJr,listAllObjects:()=>apt,objectExists:()=>opo,processAutomationAttachment:()=>Fho,processObjectStoreAttachment:()=>tJr,retrieve:()=>pJr,retrieveDirectory:()=>epo,retrieveToTmp:()=>Zho,sanitizeBucket:()=>gm,sanitizeKey:()=>nf,streamUpload:()=>hJr,streamUploadMany:()=>Jho,upload:()=>Kho,uploadDirectory:()=>upt});var dbe=ge(Zdt()),npt=ge(j$r()),uJr=ge(Y$r()),cJr=ge(oKr());var JN=ge(require("dd-trace")),aH=ge(require("fs")),Yte=ge(require("fs/promises")),lJr=ge(require("https")),EE=require("path"),hbe=ge(require("stream")),Wte=require("stream/promises"),ipt=ge(K7r());zx();var spt=ge(require("zlib"));var J7r=ge(require("fs")),X7r=require("os"),Hte=ge(require("path")),Z7r=ge(require("stream"));var Mho={BACKUPS:lt.BACKUPS_BUCKET_NAME,APPS:lt.APPS_BUCKET_NAME,TEMPLATES:lt.TEMPLATES_BUCKET_NAME,GLOBAL:lt.GLOBAL_BUCKET_NAME,PLUGINS:lt.PLUGIN_BUCKET_NAME,TEMP:lt.TEMP_BUCKET_NAME},eJr=(0,Hte.join)((0,X7r.tmpdir)(),".budibase");try{J7r.default.mkdirSync(eJr)}catch(t){if(t.code!=="EEXIST")throw t}function CF(){return eJr}s(CF,"budibaseTempDir");var cbe=s((t,e)=>{let n={Rules:[{ID:`${t}-ExpireAfter${e}days`,Prefix:"",Status:"Enabled",Expiration:{Days:e}}]};return{Bucket:t,LifecycleConfiguration:n}},"bucketTTLConfig");async function Uho(t){let e=await GJ(t.url);if(!e.ok||!e.body)throw new Error(`Unexpected response ${e.statusText}`);let r=Hte.default.basename(new URL(t.url).pathname);if(!e.body)throw new Error("No response received for attachment");if(!(e.body instanceof Z7r.default.Readable))throw new Error("Unexpected response body stream type");return{filename:t.filename||r,content:e.body}}s(Uho,"processUrlAttachment");async function tJr(t){let e=rpt(t.url);if(e===null)throw new Error("Invalid signed URL");let{bucket:r,path:n}=e,{stream:i}=await lbe(r,n),o=Hte.default.basename(n);return{bucket:r,path:n,filename:t.filename||o,content:i}}s(tJr,"processObjectStoreAttachment");async function Fho(t){return t.url?.startsWith("http://")||t.url?.startsWith("https://")?await Uho(t):await tJr(t)}s(Fho,"processAutomationAttachment");var Yho=aJr(),Who={bucketCreationPromises:{}},opt="/files/signed",tB={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"},zho=[tB.html,tB.css,tB.js,tB.json];function nf(t){let e=Yho(gm(t)).replace(/\\/g,"/");if(e.split("/").some(r=>r==="."||r===".."))throw new Error("Invalid object store key: path traversal is not allowed.");return e}s(nf,"sanitizeKey");function gm(t){return t.replace(new RegExp(Kb,"g"),UP)}s(gm,"sanitizeBucket");function h0(t={presigning:!1}){let e={forcePathStyle:!0,credentials:{accessKeyId:lt.MINIO_ACCESS_KEY,secretAccessKey:lt.MINIO_SECRET_KEY},region:lt.AWS_REGION};if(!lt.MINIO_ENABLED&&lt.AWS_SESSION_TOKEN&&(e.credentials={accessKeyId:lt.MINIO_ACCESS_KEY,secretAccessKey:lt.MINIO_SECRET_KEY,sessionToken:lt.AWS_SESSION_TOKEN}),lt.MINIO_URL&&(t.presigning&&lt.MINIO_ENABLED?e.endpoint="http://minio-service":e.endpoint=lt.MINIO_URL),lt.S3_IGNORE_SELF_SIGNED==="true"){let r=new lJr.default.Agent({rejectUnauthorized:!1});e.requestHandler=new cJr.NodeHttpHandler({httpsAgent:r})}return new dbe.S3(e)}s(h0,"ObjectStore");async function zte(t,e){e=gm(e);try{return await t.headBucket({Bucket:e}),{created:!1,exists:!0}}catch(r){let n=r.statusCode||r.$response?.statusCode||r.$metadata?.httpStatusCode,i=Who.bucketCreationPromises;if(n===403)throw new Error("Access denied to object store bucket."+r);if(i[e])return await i[e],{created:!1,exists:!0};i[e]=t.createBucket({Bucket:e}).catch(o=>{if(o.Code!=="BucketAlreadyOwnedByYou"&&o.name!=="BucketAlreadyOwnedByYou")throw o});try{return await i[e],{created:!0,exists:!1}}finally{delete i[e]}}}s(zte,"createBucketIfNotExists");var $ho=s((t,e)=>{if(e)return e;let r=t.split(".").pop();return r?tB[r.toLowerCase()]:tB.txt},"resolveContentType"),fJr=s(async(t,e,r)=>{let n=gm(t),i=h0(),o=await zte(i,n);if(r.addTags({bucketCreated:o.created,bucketExists:o.exists}),e&&o.created){let a=cbe(n,e);await i.putBucketLifecycleConfiguration(a)}return{bucket:n,client:i,bucketCreated:o}},"initialiseBucket"),dJr=s(async({client:t,bucket:e,filename:r,stream:n,type:i,extra:o})=>{if(!n)throw new Error("Stream to upload is invalid/undefined");let a=$ho(r,i),u=nf(r),c={Bucket:e,Key:u,Body:n,ContentType:a,...o??{}};return{details:await new npt.Upload({client:t,params:c}).done(),contentType:a}},"streamUploadInternal");async function Kho({bucket:t,filename:e,path:r,type:n,metadata:i,body:o,ttl:a}){let u=e.split(".").pop(),c=r?(await Yte.default.open(r)).createReadStream():o,l=h0(),f=await zte(l,t);if(a&&f.created){let S=cbe(t,a);await l.putBucketLifecycleConfiguration(S)}let d=n,m=d||(u?tB[u.toLowerCase()]:tB.txt),A={Bucket:gm(t),Key:nf(e),Body:c,ContentType:m};if(i&&typeof i=="object"){for(let S of Object.keys(i))(!i[S]||typeof i[S]!="string")&&delete i[S];A.Metadata=i}return new npt.Upload({client:l,params:A}).done()}s(Kho,"upload");async function hJr({bucket:t,stream:e,filename:r,type:n,extra:i,ttl:o}){return await JN.default.trace("streamUpload",async a=>{a.addTags({bucketName:t,filename:r,type:n,ttl:o});let u=r.split(".").pop();a.addTags({extension:u});let{bucket:c,client:l}=await fJr(t,o,a),{details:f,contentType:d}=await dJr({client:l,bucket:c,filename:r,stream:e,type:n,extra:i}),m=await l.headObject({Bucket:c,Key:nf(r)});return a.addTags({contentType:d,contentLength:m.ContentLength}),{...f,ContentLength:m.ContentLength}})}s(hJr,"streamUpload");async function Jho({bucket:t,files:e,ttl:r}){return await JN.default.trace("streamUploadMany",async i=>{if(i.addTags({bucketName:t,ttl:r,fileCount:e.length}),!e.length)return[];let{bucket:o,client:a}=await fJr(t,r,i),u=e.map((l,f)=>({...l,index:f})),c=new Array(e.length);return await Px.parallelForeach(u,async l=>{let{details:f}=await dJr({client:a,bucket:o,filename:l.filename,stream:l.stream,type:l.type,extra:l.extra});c[l.index]=f},10),c})}s(Jho,"streamUploadMany");async function pJr(t,e){return await JN.default.trace("retrieve",async r=>{r.addTags({bucketName:t,filepath:e});let n=h0(),i={Bucket:gm(t),Key:nf(e)},o=await n.getObject(i);if(!o.Body)throw new Error("Unable to retrieve object");if(r.addTags({contentLength:o.ContentLength,contentType:o.ContentType}),zho.includes(o.ContentType))return r.addTags({string:!0}),o.Body.transformToString();{r.addTags({string:!1});let a=o.Body.transformToWebStream();return hbe.default.Readable.fromWeb(a)}})}s(pJr,"retrieve");async function*apt(t,e){let r=h0(),n=s((a={})=>r.listObjectsV2({...a,Bucket:gm(t),Prefix:nf(e)}),"list"),i=!1,o;do{let a={};o&&(a.ContinuationToken=o);let u=await n(a);if(u.Contents)for(let c of u.Contents)yield c;i=!!u.IsTruncated,o=u.NextContinuationToken}while(i&&o)}s(apt,"listAllObjects");async function Xho(t,e){let r={};return await Px.parallelForeach(apt(t,e),async n=>{if(!n.Key)throw new Error("file.Key must be defined");r[n.Key]=n},5),r}s(Xho,"getAllFiles");async function bF(t,e,r=3600){let n=h0({presigning:!0}),i={Bucket:gm(t),Key:nf(e)},o=await(0,uJr.getSignedUrl)(n,new dbe.GetObjectCommand(i),{expiresIn:r});if(lt.MINIO_ENABLED){let a=new URL(o),u=a.pathname,c=a.search;return`${opt}${u}${c}`}else return o}s(bF,"getPresignedUrl");async function Zho(t,e){return await JN.default.trace("retrieveToTmp",async r=>{r.addTags({bucketName:t,filepath:e}),t=gm(t),e=nf(e);let n=await pJr(t,e),i=(0,EE.join)(CF(),Jb());return r.addTags({outputPath:i}),n instanceof hbe.default.Readable?(r.addTags({stream:!0}),await(0,Wte.pipeline)(n,aH.default.createWriteStream(i))):(r.addTags({stream:!1}),aH.default.writeFileSync(i,n)),i})}s(Zho,"retrieveToTmp");async function epo(t,e,r){return await JN.default.trace("retrieveDirectory",async n=>{n.addTags({bucketName:t,path:e});let i=(0,EE.join)(CF(),Jb());await Yte.default.mkdir(i,{recursive:!0});let o=0;return await Px.parallelForeach(apt(t,e),async a=>{let{Key:u}=a;!u||r?.some(c=>c.test(u))||(o++,await JN.default.trace("retrieveDirectory.object",async c=>{let l=a.Key;c.addTags({filename:l});let f=gJr(i,l);if(!f){c.addTags({skippedUnsafePath:!0});return}let{stream:d}=await lbe(t,l);aH.default.existsSync(f.dir)||await Yte.default.mkdir(f.dir,{recursive:!0}),await(0,Wte.pipeline)(d,aH.default.createWriteStream(f.path,{mode:420}))}))},5),n.addTags({numObjects:o}),i})}s(epo,"retrieveDirectory");function gJr(t,e){let r=(0,EE.resolve)(t),n=(0,EE.resolve)(r,...e.split("/"));if(n===r||n.startsWith(`${r}${EE.sep}`))return{dir:(0,EE.dirname)(n),path:n}}s(gJr,"getSafeRetrieveDirectoryPath");async function tpo(t,e){let r=h0();await zte(r,t);let n={Bucket:t,Key:nf(e)};return r.deleteObject(n)}s(tpo,"deleteFile");async function rpo(t,e){let r=h0();await zte(r,t);let n={Bucket:t,Delete:{Objects:e.map(i=>({Key:nf(i)}))}};return r.deleteObjects(n)}s(rpo,"deleteFiles");async function mJr(t,e){t=gm(t),e=nf(e);let r=h0(),n={Bucket:t,Prefix:e},i=await r.listObjects(n);if(i.Contents?.length===0)return;let o={Bucket:t,Delete:{Objects:[]}};if(i.Contents?.forEach(a=>{o.Delete.Objects.push({Key:a.Key})}),o.Delete.Objects.length&&(await r.deleteObjects(o)).Deleted?.length===1e3)return mJr(t,e)}s(mJr,"deleteFolder");async function upt(t,e,r){return await JN.default.trace("uploadDirectory",async n=>{n.addTags({bucketName:t,localPath:e,bucketPath:r}),t=gm(t);let i=await Yte.default.readdir(e,{withFileTypes:!0});n.addTags({numFiles:i.length});for(let o of i){let a=nf((0,EE.join)(r,o.name)),u=(0,EE.join)(e,o.name);o.isDirectory()?await upt(t,u,a):await hJr({bucket:t,filename:a,stream:aH.default.createReadStream(u)})}return i})}s(upt,"uploadDirectory");async function npo(t,e,r={},{followRedirects:n=!0}={}){e=nf(e);let i=await GJ(t,{headers:r},{followRedirects:n});if(!i.ok)throw new Error(`unexpected response ${i.statusText}`);await(0,Wte.pipeline)(i.body,spt.default.createUnzip(),ipt.default.extract(e))}s(npo,"downloadTarballDirect");async function ipo(t,e,r){e=gm(e),r=nf(r);let n=await GJ(t);if(!n.ok)throw new Error(`unexpected response ${n.statusText}`);let i=(0,EE.join)(CF(),r);return await(0,Wte.pipeline)(n.body,spt.default.createUnzip(),ipt.default.extract(i)),!lt.isTest()&&lt.SELF_HOSTED&&await upt(e,i,r),i}s(ipo,"downloadTarball");async function lbe(t,e){return await JN.default.trace("getReadStream",async r=>{t=gm(t),e=nf(e),r.addTags({bucketName:t,path:e});let n=h0(),i={Bucket:t,Key:e},o=await n.getObject(i);if(!o.Body||!(o.Body instanceof hbe.default.Readable))throw new Error("Unable to retrieve stream - invalid response");return r.addTags({contentLength:o.ContentLength,contentType:o.ContentType}),{stream:o.Body,contentLength:o.ContentLength,contentType:o.ContentType}})}s(lbe,"getReadStream");async function spo(t,e){t=gm(t),e=nf(e);let r=h0(),n={Bucket:t,Key:e};try{return await r.headObject(n)}catch{throw new Error("Unable to retrieve metadata from object")}}s(spo,"getObjectMetadata");async function opo(t,e){t=gm(t),e=nf(e);let r=h0(),n={Bucket:t,Key:e};try{return await r.headObject(n),!0}catch(i){if((i.statusCode||i.$response?.statusCode||i.$metadata?.httpStatusCode)===404)return!1;throw i}}s(opo,"objectExists");function rpt(t){let e=t.split("?")[0],r=new RegExp(`^${opt}/(?<bucket>[^/]+)/(?<path>.+)$`),n=e.match(r);if(n&&n.groups){let{bucket:i,path:o}=n.groups;return{bucket:i,path:o}}return null}s(rpt,"extractBucketAndPath");var TJr=ge(require("querystring"));var yJr=ge(EJr());var gbe;function bpo(){if(!lt.CLOUDFRONT_PRIVATE_KEY_64)throw new Error("CLOUDFRONT_PRIVATE_KEY_64 is not set");return gbe||(gbe=Buffer.from(lt.CLOUDFRONT_PRIVATE_KEY_64,"base64").toString("utf-8"),gbe)}s(bpo,"getPrivateKey");var wpo=s(()=>({keypairId:lt.CLOUDFRONT_PUBLIC_KEY_ID,privateKeyString:bpo(),expireTime:new Date().getTime()+1e3*60*60*24}),"getCloudfrontSignParams"),uH=s(t=>{let e=Npo(t);return yJr.getSignedUrl(e,wpo())},"getPresignedUrl"),Npo=s(t=>{let e="/";return t.startsWith("/")&&(e=""),`${lt.CLOUDFRONT_CDN}${e}${t}`},"getUrl");function Opo(t){return`${nf(t)}/budibase-client.js`}s(Opo,"clientLibraryPath");function xpo(t,e){return`${nf(t)}/${e}`}s(xpo,"client3rdPartyLibrary");async function vpo(t,e){return`/api/assets/${t}/client?${await SJr(e)}`}s(vpo,"clientLibraryUrl");async function SJr(t){let e,r;try{e=Hs()}finally{r={version:t}}return e&&e!==uh&&(r.tenantId=e),TJr.default.encode(r)}s(SJr,"getClientCacheKey");async function IJr(t){return lt.CLOUDFRONT_CDN?uH(t):await bF(lt.APPS_BUCKET_NAME,t)}s(IJr,"getAppFileUrl");async function Dpo(t){if(t.length===0)return[];try{return await Promise.all(t.map(async e=>({...e,src:await IJr(e.src),type:e.type||"image/png"})))}catch(e){return console.error("Error enriching PWA images:",e),t}}s(Dpo,"enrichPWAImages");var Bpo=s(async(t,e,r)=>{let n=RJr(t,e);return lt.CLOUDFRONT_CDN?(r&&(n=`${n}?etag=${r}`),uH(n)):await bF(lt.GLOBAL_BUCKET_NAME,n)},"getGlobalFileUrl"),RJr=s((t,e)=>{let r=`${t}/${e}`;return lt.MULTI_TENANCY&&(r=`${Hs()}/${r}`),r},"getGlobalFileS3Key");async function kpo(t){return!t||!t.length?[]:await Promise.all(t.map(async e=>{let r=await Ppo(e),n=await Lpo(e);return{...e,jsUrl:r,iconUrl:n}}))}s(kpo,"enrichPluginURLs");async function Ppo(t){let e=bJr(t);return CJr(e)}s(Ppo,"getPluginJSUrl");async function Lpo(t){let e=wJr(t);if(e)return CJr(e)}s(Lpo,"getPluginIconUrl");async function CJr(t){return lt.CLOUDFRONT_CDN?uH(t):await bF(lt.PLUGIN_BUCKET_NAME,t)}s(CJr,"getPluginUrl");function bJr(t){return NJr(t,"plugin.min.js")}s(bJr,"getPluginJSKey");function wJr(t){let e=t.iconUrl?"icon.svg":t.iconFileName;if(e)return NJr(t,e)}s(wJr,"getPluginIconKey");function NJr(t,e){return`${OJr(t.name)}/${e}`}s(NJr,"getPluginS3Key");function OJr(t){let e=`${t}`;return lt.MULTI_TENANCY&&(e=`${Hs()}/${e}`),lt.CLOUDFRONT_CDN&&(e=`plugins/${e}`),e}s(OJr,"getPluginS3Dir");var Mpo="budibase.log",Upo="budibase-logs-history.txt",Fpo=xJr.default.join(CF(),"systemlogs");function Qpo(t){let e=/(\d+)([A-Za-z])/,r=t?.match(e);if(!r){console.warn("totalMaxSize does not have a valid value",{totalMaxSize:t});return}let n=+r[1],i=r[2];if(n===1)switch(i){case"B":return{size:`${n}B`,totalHistoryFiles:1};case"K":return{size:`${n*1e3/2}B`,totalHistoryFiles:1};case"M":return{size:`${n*1e3/2}K`,totalHistoryFiles:1};case"G":return{size:`${n*1e3/2}M`,totalHistoryFiles:1};default:return}return n%2===0?{size:`${n/2}${i}`,totalHistoryFiles:1}:{size:`1${i}`,totalHistoryFiles:n-1}}s(Qpo,"getSingleFileMaxSizeInfo");function DJr(){let t=Qpo(lt.ROLLING_LOG_MAX_SIZE);return vJr.createStream(Mpo,{size:t?.size,path:Fpo,maxFiles:t?.totalHistoryFiles||1,immutable:!0,history:Upo,initialRotation:!1})}s(DJr,"localFileDestination");function Gpo(t){return typeof t=="object"&&t!==null&&!(t instanceof Error)}s(Gpo,"isPlainObject");function jpo(t){return t instanceof Error}s(jpo,"isError");function Vpo(t){return typeof t=="string"}s(Vpo,"isMessage");var nB;if(!lt.DISABLE_PINO_LOGGER){let t=lt.LOG_LEVEL,e={level:t,formatters:{level:s(c=>({level:c.toUpperCase()}),"level"),bindings:s(()=>lt.SELF_HOSTED?{service:lt.SERVICE_NAME}:{},"bindings")},timestamp:s(()=>`,"timestamp":"${new Date(Date.now()).toISOString()}"`,"timestamp")},r=[];r.push(lt.isDev()?{stream:(0,BJr.default)({singleLine:!0}),level:t}:{stream:process.stdout,level:t}),lt.SELF_HOSTED&&r.push({stream:DJr(),level:t}),nB=r.length?(0,Abe.default)(e,Abe.default.multistream(r)):(0,Abe.default)(e);let n=s(c=>{let l,f=[],d="";c.forEach(b=>{Vpo(b)&&(d=`${d} ${b}`.trimStart()),Gpo(b)&&f.push(b),jpo(b)&&(l=b)});let m=u(),A={};A={tenantId:i(),appId:o(),automationId:a(),identityId:m?._id,identityType:m?.type,correlationId:Ott()};let T=gpt.default.scope().active();T&&gpt.default.inject(T.context(),kJr.formats.LOG,A);let S={err:l,pid:process.pid,...A};if(f.length){let b={},C=0;for(let B=0;B<f.length;B++){let k=f[B],P=k._logKey;P?(delete k._logKey,S[P]=k):(b[C]=k,C++)}Object.keys(b).length&&(S.data=b)}return[S,d]},"getLogParams");console.log=(...c)=>{let[l,f]=n(c);nB?.info(l,f)},console.info=(...c)=>{let[l,f]=n(c);nB?.info(l,f)},console.warn=(...c)=>{let[l,f]=n(c);nB?.warn(l,f)},console.error=(...c)=>{let[l,f]=n(c);nB?.error(l,f)},console.trace=(...c)=>{let[l,f]=n(c);l.err||(l.err=new Error),nB?.trace(l,f)},console.debug=(...c)=>{let[l,f]=n(c);nB?.debug(l,f)};let i=s(()=>{let c;try{c=Hs()}catch{}return c},"getTenantId"),o=s(()=>{let c;try{c=uA()}catch{}return c},"getAppId"),a=s(()=>{let c;try{c=mHe()}catch{}return c},"getAutomationId"),u=s(()=>{let c;try{c=Xx()}catch{}return c},"getIdentity")}var mpt=nB;function US(t){let e=Hs();return`${t}:${e}`}s(US,"generateTenantKey");var cH=class{static{s(this,"BaseCache")}constructor(e=void 0){this.client=e}async getClient(){return this.client?this.client:await opr()}async keys(e){return(await this.getClient()).keys(e)}async exists(e,r={useTenancy:!0}){return e=r.useTenancy?US(e):e,(await this.getClient()).exists(e)}async scan(e,r={useTenancy:!0}){return e=r.useTenancy?US(e):e,(await this.getClient()).scan(e)}async get(e,r={useTenancy:!0}){return e=r.useTenancy?US(e):e,(await this.getClient()).get(e)}async bulkGet(e,r={useTenancy:!0}){return e=r.useTenancy?e.map(i=>US(i)):e,(await this.getClient()).bulkGet(e)}async store(e,r,n=null,i={useTenancy:!0}){e=i.useTenancy?US(e):e,await(await this.getClient()).store(e,r,n)}async bulkStore(e,r=null,n={useTenancy:!0}){n.useTenancy&&(e=Object.entries(e).reduce((o,[a,u])=>(o[US(a)]=u,o),{})),await(await this.getClient()).bulkStore(e,r)}async delete(e,r={useTenancy:!0}){return e=r.useTenancy?US(e):e,(await this.getClient()).delete(e)}async bulkDelete(e,r={useTenancy:!0}){return e=r.useTenancy?e.map(i=>US(i)):e,(await this.getClient()).bulkDelete(e)}async withCache(e,r=null,n,i={useTenancy:!0}){let o=await this.get(e,i);if(o)return o;try{let a=await n();return await this.store(e,a,r,i),a}catch(a){throw console.error("Error fetching before cache - ",a),a}}async withCacheWithDynamicTTL(e,r,n={useTenancy:!0}){let i=await this.get(e,n);if(i)return i;try{let o=await r(),{value:a,ttl:u}=o;return await this.store(e,a,u,{useTenancy:n.useTenancy}),a}catch(o){throw console.error("Error fetching before cache - ",o),o}}async bustCache(e){let r=await this.getClient();try{await r.delete(US(e))}catch(n){throw console.error("Error busting cache - ",n),n}}async increment(e,r,n={useTenancy:!0}){e=n.useTenancy?US(e):e;let i=await this.getClient(),o=await i.increment(e);return r&&await i.setExpiry(e,r),o}async deleteIfValue(e,r,n={useTenancy:!0}){e=n.useTenancy?US(e):e,await(await this.getClient()).deleteIfValue(e,r)}};var zpo=new cH,lH={CHECKLIST:"checklist",INSTALLATION:"installation",ANALYTICS_ENABLED:"analyticsEnabled",UNIQUE_TENANT_ID:"uniqueTenantId",EVENTS:"events",BACKFILL_METADATA:"backfillMetadata",EVENTS_RATE_LIMIT:"eventsRateLimit",OAUTH2_TOKEN:s(t=>`oauth2Token_${t}`,"OAUTH2_TOKEN")};var _be=s((...t)=>zpo.withCache(...t),"withCache");ur();var ggo=ge(mZr());var $4u=_h.fromSeconds(10).toMs();ur();var nju=_h.fromDays(7).toSeconds(),iju=_h.fromSeconds(10).toMs();var uju=_h.fromHours(1).toSeconds();var _Zr=ge(require("node-fetch"));var OF=class{static{s(this,"API")}constructor(e){this.host=e}async apiCall(e,r,n){n.headers||(n.headers={}),n.headers["Content-Type"]||(n.headers={"Content-Type":"application/json",Accept:"application/json",...n.headers});let i=n.headers["Content-Type"]==="application/json";KAe.setHeader(n.headers);let o={method:e,body:i?JSON.stringify(n.body):n.body,headers:n.headers,credentials:"include"};return await(0,_Zr.default)(`${this.host}${r}`,o)}async post(e,r){return this.apiCall("POST",e,r)}async get(e,r){return this.apiCall("GET",e,r)}async patch(e,r){return this.apiCall("PATCH",e,r)}async del(e,r){return this.apiCall("DELETE",e,r)}async put(e,r){return this.apiCall("PUT",e,r)}};var Rju=new OF(lt.INTERNAL_ACCOUNT_PORTAL_URL),Cju=lt.SELF_HOSTED||lt.DISABLE_ACCOUNT_PORTAL;ur();ur();var Pju=+(lt.PASSWORD_MIN_LENGTH||12),Lju=+(lt.PASSWORD_MAX_LENGTH||512);var Yju=hpr();ur();ur();var xVu={"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}`};var Ppt=lt.SELF_HOSTED&&!lt.isDev(),Zte=class{static{s(this,"LoggingProcessor")}async processEvent(e,r,n){Ppt||console.log(`[audit] [identityType=${r.type}] ${e}`,n)}async identify(e){Ppt||console.log("[audit] identified",e)}async identifyGroup(e){Ppt||console.log("[audit] group identified",e)}async shutdown(){}};ur();var ere=class t{static{s(this,"AuditLogsProcessor")}static{this.auditLogsEnabled=!1}static init(e){t.auditLogsEnabled=!0;let r=e;return t.auditLogQueue=new eU("auditLogQueue",{jobTags:s(n=>({"event.name":n.event}),"jobTags")}),t.auditLogQueue.process(async n=>{await iw(n.data.tenantId,async()=>{let i=n.data.properties;i.audited&&(i={...i,...i.audited},delete i.audited);let o={};lt.ENABLE_AUDIT_LOG_IP_ADDR&&(o=n.data.opts.hostInfo),await r(n.data.event,i,{userId:n.data.opts.userId,timestamp:n.data.opts.timestamp,appId:n.data.opts.appId,hostInfo:o})})})}async processEvent(e,r,n,i){if(t.auditLogsEnabled&&gpr(e)){let o=r.type==="user"?r.id:void 0;await t.auditLogQueue.add({event:e,properties:n,opts:{userId:o,timestamp:i,appId:uA(),hostInfo:r.hostInfo},tenantId:Hs()})}}async identify(){}async identifyGroup(){}async shutdown(){await t.auditLogQueue?.close()}};zx();var bgo=new OF(lt.INTERNAL_ACCOUNT_PORTAL_URL),tre=class t{static{s(this,"EventBrokerProcessor")}static init(e){t.getLicenseKeyFn=e}async processEvent(e,r,n,i){if(lt.DISABLE_ACCOUNT_PORTAL)return;let o;if(lt.SELF_HOSTED){if(!t.getLicenseKeyFn)return;let c=await t.getLicenseKeyFn();if(!c)return;o={"x-budibase-license-key":c}}else o={"x-budibase-api-key":lt.ACCOUNT_PORTAL_API_KEY},r.tenantId&&(o["x-budibase-tenant-id"]=r.tenantId);let a=uA(),u={id:Jb(),type:e,identity:r,properties:{...n,version:lt.VERSION,service:lt.SERVICE,environment:r.environment,hosting:r.hosting,...a&&{appId:a},...r.installationId&&{installationId:r.installationId},...r.tenantId&&{tenantId:r.tenantId}},timestamp:i===void 0?Date.now():new Date(i).getTime()};try{let c=await bgo.post("/api/v2/analytics/event",{headers:o,body:u});c.ok||console.warn(`[EventBrokerProcessor] unexpected response status: ${c.status}`)}catch(c){console.error(`[EventBrokerProcessor] failed to send event: ${c}`)}}};var rre=class{constructor(e){this.initialised=!1;this.processors=[];this.processors=e}static{s(this,"Processor")}async processEvent(e,r,n,i){for(let o of this.processors)await o.processEvent(e,r,n,i)}async identify(e,r){for(let n of this.processors)n.identify&&await n.identify(e,r)}async identifyGroup(e,r){for(let n of this.processors)n.identifyGroup&&await n.identifyGroup(e,r)}async shutdown(){for(let e of this.processors)e.shutdown&&await e.shutdown()}};var wgo=new Zte,Ngo=new ere,Ogo=new tre;var Lpt=new rre([wgo,Ngo,Ogo]);ur();ur();var Dgo=ge(v3());ur();ur();ur();ur();ur();ur();ur();ur();var xYu=!lt.SELF_HOSTED&&!lt.isDev();ur();ur();ur();ur();ur();ur();ur();ur();ur();ur();ur();ur();ur();ur();ur();ur();ur();ur();ur();ur();ur();var NZr=_y.users.isBuilder,Obe=_y.users.isAdmin,xzu=_y.users.isGlobalBuilder,vzu=_y.users.isAdminOrBuilder,bZr=_y.users.hasAdminPermissions,nre=_y.users.hasBuilderPermissions,Dzu=_y.users.hasAppBuilderPermissions,Ggo=_y.users.isAdminOrWorkspaceBuilder;function emo(t){return Array.isArray(t)?t.map(e=>{if(e)return delete e.password,e}):t&&(delete t.password,t)}s(emo,"removeUserPassword");async function ire(t,e){if(t==null)throw"Must supply an email address to view";let r=await Jpe("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=emo(n)),n}s(ire,"getGlobalUserByEmail");ur();function xZr(t){return`config${"_"}${t}`}s(xZr,"generateConfigID");async function vbe(t){let e=lp();try{return await e.get(xZr(t))}catch(r){if(r.status===404)return;throw r}}s(vbe,"getConfig");async function Mpt(){let t=await vbe("settings");return t||(t={_id:xZr("settings"),type:"settings",config:{}}),t.config.platformUrl=await vZr({tenantAware:!0,config:t.config}),t.config.analyticsEnabled=await TZr({config:t.config}),t}s(Mpt,"getSettingsConfigDoc");async function vZr(t={tenantAware:!0}){let e=lt.PLATFORM_URL||"http://localhost:10000";if(!lt.SELF_HOSTED&&lt.MULTI_TENANCY&&t.tenantAware){let r=Hs();e.includes("localhost:")||(e=e.replace("://",`://${r}.`))}else if(lt.SELF_HOSTED){let r=t?.config?t.config:(await vbe("settings"))?.config;r?.platformUrl&&(e=r.platformUrl)}return e}s(vZr,"getPlatformUrl");var TZr=s(async t=>{if(!lt.SELF_HOSTED)return!!lt.ENABLE_ANALYTICS;let e=await _be(lH.ANALYTICS_ENABLED,86400,async()=>{let n=t?.config?t.config:(await vbe("settings"))?.config;if(n?.analyticsEnabled===!1)return!1;if(n?.analyticsEnabled===!0)return!0});if(e!==void 0)return e;let r=lt.ENABLE_ANALYTICS;return!(r===0||r===!1)},"analyticsEnabled");ur();var pOo=ge(y3()),gOo=ge(Ygt()),mOo=ge(v3());var San={ADMIN:"ADMIN",POWER:"POWER",BASIC:"BASIC",PUBLIC:"PUBLIC"},yE={...San,BUILDER:"BUILDER"},AOo={UUID:void 0,NAME:"name"};var BF=class{constructor(e,r,n,i){this.permissions={};this._id=e,this.name=r,this.uiMetadata=i,this.permissionId=n,this.version=AOo.NAME}static{s(this,"Role")}addInheritance(e){return e&&typeof e=="string"?e=yan(e):e&&Array.isArray(e)&&(e=e.map(yan)),this.inherits=e,this}};var Prc={ADMIN:new BF(yE.ADMIN,yE.ADMIN,"admin",{displayName:"Admin user",description:"Can do everything",color:"var(--spectrum-global-color-static-red-400)"}).addInheritance(yE.POWER),POWER:new BF(yE.POWER,yE.POWER,"power",{displayName:"App power user",description:"An app user with more access",color:"var(--spectrum-global-color-static-orange-400)"}).addInheritance(yE.BASIC),BASIC:new BF(yE.BASIC,yE.BASIC,"write",{displayName:"Basic user",description:"Any logged in user",color:"var(--spectrum-global-color-static-green-400)"}).addInheritance(yE.PUBLIC),PUBLIC:new BF(yE.PUBLIC,yE.PUBLIC,"public",{displayName:"Public user",description:"Accessible to anyone",color:"var(--spectrum-global-color-static-blue-400)"}),BUILDER:new BF(yE.BUILDER,yE.BUILDER,"admin",{displayName:"Builder user",description:"Users that can edit this app",color:"var(--spectrum-global-color-static-magenta-600)"})};function _Oo(t){return Object.values(San).includes(t)}s(_Oo,"isBuiltin");function yan(t){return _Oo(t)?t:upr(t)}s(yan,"prefixRoleIDNoBuiltin");ur();var TOo=ge(Hgt()),SOo=ge(Ygt());ur();var nc=class{static{s(this,"PermissionImpl")}constructor(e,r){this.type=e,this.level=r}};var Qrc={PUBLIC:{_id:"public",name:"Public",permissions:[new nc("webhook","execute")]},READ_ONLY:{_id:"read_only",name:"Read only",permissions:[new nc("query","read"),new nc("table","read"),new nc("app","read")]},WRITE:{_id:"write",name:"Read/Write",permissions:[new nc("query","write"),new nc("table","write"),new nc("automation","execute"),new nc("legacy_view","read"),new nc("app","read")]},POWER:{_id:"power",name:"Power",permissions:[new nc("table","write"),new nc("user","read"),new nc("automation","execute"),new nc("webhook","read"),new nc("legacy_view","read"),new nc("app","read")]},ADMIN:{_id:"admin",name:"Admin",permissions:[new nc("table","admin"),new nc("user","admin"),new nc("automation","admin"),new nc("webhook","read"),new nc("query","admin"),new nc("legacy_view","read"),new nc("app","read")]}};var qrc="builder",Grc="creator",jrc="globalBuilder";ur();var lwe=ge(require("crypto")),Ran=ge(require("dd-trace")),Can=ge(y3()),ROo=require("posthog-node");var Ian;function ban(t){let e=t.split(",").map(n=>n.split(":")),r=[];for(let[n,...i]of e)for(let o of i){let a=!0;o.startsWith("!")&&(o=o.slice(1),a=!1),r.push({tenantId:n,key:o,value:a})}return r}s(ban,"parseEnvFlags");function COo(){return ban(lt.TENANT_FEATURE_FLAGS||"")}s(COo,"getEnvFlags");var Wgt=class{constructor(e){this.flagSchema=e;this.setId=lwe.randomUUID()}static{s(this,"FlagSet")}defaults(){return(0,Can.cloneDeep)(this.flagSchema)}isFlagName(e){return this.flagSchema[e]!==void 0}async isEnabled(e){return(await this.fetch())[e]}async fetch(){return await Ran.default.trace("features.fetch",async e=>{let r=yHe(this.setId);if(r)return e?.addTags({fromCache:!0}),r;let n={},i=this.defaults(),o=Hs(),a=new Set;if(Yfe())return i;for(let{tenantId:d,key:m,value:A}of COo())if(!(!d||d!=="*"&&d!==o)&&(n.readFromEnvironmentVars=!0,A===!1&&a.add(m),!!this.isFlagName(m))){if(typeof i[m]!="boolean")throw new Error(`Feature: ${m} is not a boolean`);i[m]=A,n[`flags.${m}.source`]="environment"}let u=Xx(),c=u?._id;if(!c){let d=AHe();d&&(c=lwe.createHash("sha512").update(d).digest("hex"))}let l=u?.tenantId;if(l||(l=o),n["identity.type"]=u?.type,n["identity._id"]=u?._id,n.tenantId=l,n.userId=c,Ian&&c){n.readFromPostHog=!0;let d=await Mpt(),m={tenantId:l},A={tenant:{id:l}};d.config.createdVersion&&(A.tenant.createdVersion=d.config.createdVersion),d.createdAt&&(A.tenant.createdAt=`${d.createdAt}`);let T=await Ian.getAllFlags(c,{personProperties:m,onlyEvaluateLocally:!0,groups:{tenant:l},groupProperties:A});for(let[S,b]of Object.entries(T))if(this.isFlagName(S)){if(typeof b!="boolean"){console.warn(`Invalid value for posthog flag "${S}": ${b}`);continue}if(!(i[S]===!0||a.has(S)))try{i[S]=b,n[`flags.${S}.source`]="posthog"}catch(C){console.warn(`Error parsing posthog flag "${S}": ${b}`,C)}}}let f=SHe();for(let[d,m]of Object.entries(f))this.isFlagName(d)&&typeof m=="boolean"&&(i[d]=m,n[`flags.${d}.source`]="override");THe(this.setId,i);for(let[d,m]of Object.entries(i))n[`flags.${d}.value`]=m;return e?.addTags(n),i})}},bOo={USE_ZOD_VALIDATOR:!1,AI_RAG_SHAREPOINT:!1,AI_AGENT_INSTRUCTIONS:!1,AI_TESTS:!1,MULTIPLE_OPERATIONS:!1,ESCALATION:!1,FRONT_COMPANION:!1,PROJECTS:!1,DEBUG_UI:lt.isDev(),DEV_USE_CLIENT_FROM_STORAGE:!1,AI_AGENT_ACTIVITY:!1},Jrc=new Wgt(bOo);ur();var snc=$Ae();var gDo=Pcn(),mDo=$Ae();function ADo(){return{logger:mpt,genReqId:mDo.getId,autoLogging:{ignore:s(t=>!!t.url?.includes("/health"),"ignore")},serializers:{req:s(t=>({method:t.method,url:t.url,correlationId:t.id}),"req"),res:s(t=>({status:t.statusCode}),"res")}}}s(ADo,"pinoSettings");function _Do(){return lt.HTTP_LOGGING?gDo(ADo()):(t,e)=>e()}s(_Do,"getMiddleware");var EDo=_Do();var RDo=ge(Zje());ur();ur();var CDo=ge(require("dd-trace"));var esc=lt.SESSION_UPDATE_PERIOD?parseInt(lt.SESSION_UPDATE_PERIOD):60*1e3;ur();var Oko=ge(Pwe());var kre={};Fi(kre,{authenticate:()=>Dko,options:()=>vko});function xC(t,e,r){return t(r,null,{message:e})}s(xC,"authError");var wAt="Invalid credentials",xko="This account has expired. Please reset your password",vko={passReqToCallback:!0};async function Dko(t,e,r,n){if(!e)return xC(n,"Email Required");if(!r)return xC(n,"Password Required");let i=await ire(e);return i==null?(console.info(`user=${e} could not be found`),xC(n,wAt)):i.status==="inactive"?(console.info(`user=${e} is inactive`,i),xC(n,wAt)):i.password?await nWt(r,i.password)?(delete i.password,n(null,i)):xC(n,wAt):(console.info(`user=${e} has no password set`,i),xC(n,xko))}s(Dko,"authenticate");ur();var Bcc=o_t().OAuth2Strategy;var ZPo=ge(require("node-fetch"));ur();var eLo=ge(Epn());ur();ur();var klc=o_t().OAuth2Strategy;var OLo=Xpn(),xLo=ogn().Strategy,$fc=agn();OLo.use(new xLo(kre.options,kre.authenticate));var CNe={};Fi(CNe,{validate:()=>LLo});ur();var _r=ge(Pwe());var DLo=["Relational","Non-relational","Spreadsheet","Object store","Graph","API"];function C_t(t,e){let{error:r}=t.validate(e);if(r)throw r}s(C_t,"runJoi");function BLo(t){let e=_r.default.object({type:_r.default.string().allow("component").required(),metadata:_r.default.object().unknown(!0).required(),hash:_r.default.string().optional(),version:_r.default.string().optional(),schema:_r.default.object({name:_r.default.string().required(),settings:_r.default.array().items(_r.default.object().unknown(!0)).required()}).unknown(!0)});C_t(e,t)}s(BLo,"validateComponent");function kLo(t){let e=_r.default.object({type:_r.default.string().allow(...Object.values(Nqe)).required(),required:_r.default.boolean().required(),default:_r.default.any(),display:_r.default.string()}),r=_r.default.object({type:_r.default.string().allow(...Object.values(wqe)),readable:_r.default.boolean(),displayName:_r.default.string(),fields:_r.default.object().pattern(_r.default.string(),e)}).required(),n=_r.default.object({type:_r.default.string().allow("datasource").required(),metadata:_r.default.object().unknown(!0).required(),hash:_r.default.string().optional(),version:_r.default.string().optional(),schema:_r.default.object({docs:_r.default.string(),plus:_r.default.boolean().optional(),isSQL:_r.default.boolean().optional(),auth:_r.default.object({type:_r.default.string().required()}).optional(),features:_r.default.object(Object.fromEntries(Object.values(Oqe).map(i=>[i,_r.default.boolean().optional()]))).optional(),relationships:_r.default.boolean().optional(),description:_r.default.string().required(),friendlyName:_r.default.string().required(),type:_r.default.string().allow(...DLo),datasource:_r.default.object().pattern(_r.default.string(),e).required(),query:_r.default.object().pattern(_r.default.string(),r).unknown(!0).required(),extra:_r.default.object().pattern(_r.default.string(),_r.default.object({type:_r.default.string().required(),displayName:_r.default.string().required(),required:_r.default.boolean(),data:_r.default.object()}))})});C_t(n,t)}s(kLo,"validateDatasource");function PLo(t){let e=_r.default.object().pattern(_r.default.string(),{type:_r.default.string().allow(...Object.values(Pqe)).required(),customType:_r.default.string().allow(...Object.values(Lqe)),title:_r.default.string(),description:_r.default.string(),enum:_r.default.array().items(_r.default.string()),pretty:_r.default.array().items(_r.default.string())}),r=_r.default.object({properties:e,required:_r.default.array().items(_r.default.string())}).concat(e).required(),n=_r.default.object({type:_r.default.string().allow("automation").required(),metadata:_r.default.object().unknown(!0).required(),hash:_r.default.string().optional(),version:_r.default.string().optional(),schema:_r.default.object({name:_r.default.string().required(),tagline:_r.default.string().required(),icon:_r.default.string().required(),description:_r.default.string().required(),type:_r.default.string().allow("ACTION","LOGIC").required(),stepId:_r.default.string().disallow(..._2t).required(),inputs:_r.default.object().optional(),schema:_r.default.object({inputs:r,outputs:r}).required()})});C_t(n,t)}s(PLo,"validateAutomation");function LLo(t){switch(t?.type){case"component":BLo(t);break;case"datasource":kLo(t);break;case"automation":PLo(t);break;default:throw new Error(`Unknown plugin type - check schema.json: ${t.type}`)}}s(LLo,"validate");ur();var Rdc={"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};var e1a=ge(mBt());var JYn=ge(mBt());ur();ur();var t1a=ge(y3());var CFc={equal:!1,notEqual:!0,empty:!1,notEmpty:!0,fuzzy:!1,string:!1,range:!1,contains:!1,notContains:!0,containsAny:!1,oneOf:!1,notOneOf:!0,$and:!1,$or:!1};var iDa=ge(_6n());var Y6n=ge(CBt(),1),HDa=ge(OBt(),1),z6n=ge(CBt(),1),LBt=ge(OBt(),1),ILe=require("url"),e5=ge(G6n(),1),$6n=ge(require("http"),1),J6n=ge(ew(),1);var W6n={NotFound:"not-found"};function jDa(t){return typeof t=="function"?t(W6n):t}s(jDa,"resolveEvent");var VDa=class{static{s(this,"RouterEventEmitter")}_handlers=new Map;register(t,e){let r=this._handlers.get(t)??[];r.push(e),this._handlers.set(t,r)}emit(t,e,r){let n=this._handlers.get(t);return n&&n.length>0?(0,Y6n.default)(n)(e,r):r()}};function SLe(t,e={}){let r={...e};"strict"in r&&!("trailing"in r)&&(r.trailing=r.strict!==!0,delete r.strict),delete r.pathAsRegExp,delete r.ignoreCaptures,delete r.prefix;let{regexp:n,keys:i}=(0,e5.pathToRegexp)(t,r);return{regexp:n,keys:i}}s(SLe,"compilePathToRegexp");function YDa(t,e={}){return(0,e5.compile)(t,e)}s(YDa,"compilePath");function WDa(t,e){return(0,e5.parse)(t,e)}s(WDa,"parsePath");function kBt(t={}){let e={sensitive:t.sensitive,end:t.end,strict:t.strict,trailing:t.trailing};"strict"in e&&!("trailing"in e)&&(e.trailing=e.strict!==!0,delete e.strict);for(let r of Object.keys(e))e[r]===void 0&&delete e[r];return e}s(kBt,"normalizeLayerOptionsToPathToRegexp");function zDa(t){try{return decodeURIComponent(t)}catch{return t}}s(zDa,"safeDecodeURIComponent");var j6n=class{static{s(this,"Layer")}opts;name;methods;paramNames;stack;path;regexp;constructor(t,e,r,n={}){this.opts=n,this.name=this.opts.name||void 0,this.methods=this._normalizeHttpMethods(e),this.stack=this._normalizeAndValidateMiddleware(r,e,t),this.path=t,this.paramNames=[],this._configurePathMatching()}_normalizeHttpMethods(t){let e=[];for(let r of t){let n=r.toUpperCase();e.push(n),n==="GET"&&e.unshift("HEAD")}return e}_normalizeAndValidateMiddleware(t,e,r){let n=Array.isArray(t)?t:[t];for(let i of n){let o=typeof i;if(o!=="function"){let a=this.opts.name||r;throw new Error(`${e.toString()} \`${a}\`: \`middleware\` must be a function, not \`${o}\``)}}return n}_configurePathMatching(){this.opts.pathAsRegExp===!0?this.regexp=this.path instanceof RegExp?this.path:new RegExp(this.path):this.path&&this._configurePathToRegexp()}_configurePathToRegexp(){let t=kBt(this.opts),{regexp:e,keys:r}=SLe(this.path,t);this.regexp=e,this.paramNames=r}match(t){return this.regexp.test(t)}params(t,e,r={}){let n={...r};for(let[i,o]of e.entries()){let a=this.paramNames[i];if(a&&o&&o.length>0){let u=a.name;if(this.opts.ignoreWildcardParameter===u&&a.type==="wildcard")continue;n[u]=zDa(o)}}return n}captures(t){if(this.opts.ignoreCaptures)return[];let e=t.match(this.regexp);return e?e.slice(1):[]}url(...t){if(this.path instanceof RegExp)throw new TypeError("Cannot generate URL for routes defined with RegExp paths. Use string paths with named parameters instead.");let{params:e,options:r}=this._parseUrlArguments(t),n=this.path.replaceAll("(.*)",""),i=YDa(n,{encode:encodeURIComponent,...r}),o=this._buildParamReplacements(e,n),a=i(o);return r&&r.query?this._addQueryString(a,r.query):a}_parseUrlArguments(t){let e=t[0]??{},r=t[1];if(typeof e!="object"||e===null){let n=[...t],i=n.at(-1);typeof i=="object"&&i!==null?(r=i,e=n.slice(0,-1)):e=n}else if(e&&!r){let n=Object.keys(e);if(n.length===1&&n[0]==="query")r=e,e={};else if("query"in e&&e.query){let{query:o,...a}=e;r={query:o},e=a}}return{params:e,options:r}}_buildParamReplacements(t,e){let{tokens:r}=WDa(e),n=r.some(o=>"name"in o&&o.name),i={};if(Array.isArray(t)){let o=0;for(let a of r)"name"in a&&a.name&&(i[a.name]=String(t[o++]))}else if(n&&typeof t=="object"&&!("query"in t))for(let[o,a]of Object.entries(t))i[o]=String(a);return i}_addQueryString(t,e){let r=(0,ILe.parse)(t),n={...r,query:r.query??void 0};return typeof e=="string"?(n.search=e,n.query=void 0):(n.search=void 0,n.query=e),(0,ILe.format)(n)}param(t,e){let r=this.stack,n=this.paramNames,i=this._createParamMiddleware(t,e),o=n.map(u=>u.name),a=o.indexOf(t);return a!==-1&&this._insertParamMiddleware(r,i,o,a),this}_createParamMiddleware(t,e){let r=s(((n,i)=>(n._matchedParams||(n._matchedParams=new WeakMap),n._matchedParams.has(e)?i():(n._matchedParams.set(e,!0),e(n.params[t],n,i)))),"middleware");return r.param=t,r._originalFn=e,r}_insertParamMiddleware(t,e,r,n){let i=!1;for(let o=0;o<t.length;o++){let a=t[o];if(!a.param){t.splice(o,0,e),i=!0;break}if(r.indexOf(a.param)>n){t.splice(o,0,e),i=!0;break}}i||t.push(e)}setPrefix(t){return this.path?this.path instanceof RegExp?this:(this.path=this._applyPrefix(t),this._reconfigurePathMatching(t),this):this}_applyPrefix(t){let e=this.path==="/",r=this.opts.strict===!0,n=t.includes(":"),i=this.opts.pathAsRegExp===!0&&typeof this.path=="string";if(n&&i){let o=this.path;(o===String.raw`(?:\/|$)`||o===String.raw`(?:\\\/|$)`)&&(this.path="{/*rest}",this.opts.pathAsRegExp=!1)}return e&&!r?t:`${t}${this.path}`}_reconfigurePathMatching(t){let e=this.opts.pathAsRegExp===!0;if(t&&t.includes(":")&&e){let n=kBt(this.opts),{regexp:i,keys:o}=SLe(this.path,n);this.regexp=i,this.paramNames=o,this.opts.pathAsRegExp=!1}else if(e){let n=this.path,i=n.startsWith("^")?n:`^${n}`;this.regexp=this.path instanceof RegExp?this.path:new RegExp(i)}else{let n=kBt(this.opts),{regexp:i,keys:o}=SLe(this.path,n);this.regexp=i,this.paramNames=o}}};function $Da(){return $6n.default.METHODS.map(t=>t.toLowerCase())}s($Da,"getAllHttpMethods");var KDa=["get","post","put","patch","delete","del","head","options"];function JDa(t){return t?Array.isArray(t)?t:[t]:[]}s(JDa,"normalizeParameterMiddleware");function K6n(t,e,r){let n=JDa(r);for(let i of n)t.param(e,i)}s(K6n,"applyParameterMiddlewareToRoute");function XDa(t,e){let r=Object.keys(e);for(let n of r){let i=e[n];K6n(t,n,i)}}s(XDa,"applyAllParameterMiddleware");function V6n(t,e={}){if(!t)return!1;let{keys:r}=SLe(t,e);return r.length>0}s(V6n,"hasPathParameters");function ZDa(t,e){return t!==void 0?typeof t=="string"?t===""?{path:"{/*rest}",pathAsRegExp:!1}:t==="/"?{path:"/",pathAsRegExp:!1}:{path:t,pathAsRegExp:!1}:{path:t,pathAsRegExp:!0}:e?{path:"{/*rest}",pathAsRegExp:!1}:{path:String.raw`(?:\/|$)`,pathAsRegExp:!0}}s(ZDa,"determineMiddlewarePath");var PBt=(0,J6n.default)("koa-router"),X6n=$Da(),H6n=class{static{s(this,"RouterImplementation")}opts;methods;exclusive;params;stack;host;_events=new VDa;constructor(t={}){this.opts=t,this.methods=this.opts.methods||["HEAD","OPTIONS","GET","PUT","PATCH","POST","DELETE"],this.exclusive=!!this.opts.exclusive,this.params={},this.stack=[],this.host=this.opts.host}static url(t,...e){return new j6n(t,[],()=>{}).url(...e)}use(...t){let e;if(this._isPathArray(t[0]))return this._useWithPathArray(t);let r=this._hasExplicitPath(t[0]);if(r&&(e=t.shift()),t.length===0)throw new Error("You must provide at least one middleware function to router.use()");for(let n of t)this._isNestedRouter(n)?this._mountNestedRouter(n,e):this._registerMiddleware(n,e,r);return this}_isPathArray(t){return Array.isArray(t)&&t.length>0&&t.every(e=>typeof e=="string")}_hasExplicitPath(t){return typeof t=="string"||t instanceof RegExp}_isNestedRouter(t){return typeof t=="function"&&"router"in t&&t.router!==void 0}_useWithPathArray(t){let e=t[0],r=t.slice(1);for(let n of e)Reflect.apply(this.use,this,[n,...r]);return this}_mountNestedRouter(t,e){let r=t.router,n=this._cloneRouter(r),i=e&&typeof e=="string"&&V6n(e,this.opts);for(let o=0;o<n.stack.length;o++){let a=n.stack[o],u=this._cloneLayer(a);e&&typeof e=="string"&&u.setPrefix(e),this.opts.prefix&&u.setPrefix(this.opts.prefix),u.methods.length===0&&i&&(u.opts.ignoreCaptures=!1),this.stack.push(u),n.stack[o]=u}this.params&&this._applyParamMiddlewareToRouter(n)}_cloneRouter(t){return Object.assign(Object.create(Object.getPrototypeOf(t)),t,{stack:[...t.stack]})}_cloneLayer(t){return Object.assign(Object.create(Object.getPrototypeOf(t)),t,{stack:[...t.stack],methods:[...t.methods],paramNames:[...t.paramNames],opts:{...t.opts}})}_applyParamMiddlewareToRouter(t){let e=Object.keys(this.params);for(let r of e){let n=this.params[r];K6n(t,r,n)}}_registerMiddleware(t,e,r){let n=V6n(this.opts.prefix||"",this.opts),i=(()=>{if(e!==void 0)return e;if(n)return""})(),o=r||e===void 0&&n,{path:a,pathAsRegExp:u}=ZDa(i,n),c=a,l=u,f=o&&a==="/";o&&typeof a=="string"&&(c=a,l=!1);let d=i===""&&a==="{/*rest}"?"rest":void 0;this.register(c,[],t,{end:f,ignoreCaptures:!o&&!n,ignoreWildcardParameter:d,pathAsRegExp:l})}prefix(t){let e=t.replace(/\/$/,""),r=this.opts.prefix||"";this.opts.prefix=e;for(let n of this.stack){if(typeof n.path=="string"&&r){let i=r+"/";(n.path===r||n.path.startsWith(i))&&(n.path=n.path.slice(r.length)||"/")}n.setPrefix(e)}return this}middleware(){let t=function(e,r){if(PBt("%s %s",e.method,e.path),!this.matchHost(e.host))return r();let n=this._getRequestPath(e),i=this.match(n,e.method);if(this._storeMatchedRoutes(e,i),e.router=this,e.routeMatched=i.route,!i.route)return this._events.emit(W6n.NotFound,e,r);let o=i.pathAndMethod;this._setMatchedRouteInfo(e,o);let a=this._buildMiddlewareChain(o,n);return(0,z6n.default)(a)(e,r)}.bind(this);return t.router=this,t}_getRequestPath(t){let e=t;return this.opts.routerPath||e.newRouterPath||e.path||e.routerPath||""}_storeMatchedRoutes(t,e){let r=t;r.matched?r.matched.push(...e.path):r.matched=e.path}_setMatchedRouteInfo(t,e){let r=t,n=e.toReversed().find(i=>i.methods.length>0);n&&(r._matchedRoute=n.path,n.name&&(r._matchedRouteName=n.name))}_buildMiddlewareChain(t,e){let r;if(this.exclusive){let i;if(this.opts.exclusive==="specificity")for(let o of t)(!i||o.paramNames.length<i.paramNames.length)&&(i=o);else i=t.at(-1);r=i?[i]:[]}else r=t;let n=[];for(let i of r)n.push((o,a)=>{let u=o;return u.captures=i.captures(e),u.request.params=i.params(e,u.captures||[],u.params),u.params=u.request.params,u.routerPath=i.path,u.routerName=i.name||void 0,u._matchedRoute=i.path,i.name&&(u._matchedRouteName=i.name),a()},...i.stack);return n}routes(){return this.middleware()}on(t,e){return this._events.register(jDa(t),e),this}allowedMethods(t={}){let e=this.methods;return(r,n)=>{let i=r;return n().then(()=>{if(!this._shouldProcessAllowedMethods(i))return;let o=i.matched||[],a=this._collectAllowedMethods(o),u=Object.keys(a),c=r.method.toUpperCase();if(!e.includes(c)){this._handleNotImplemented(i,u,t);return}if(c==="OPTIONS"&&u.length>0){this._handleOptionsRequest(i,u);return}u.length>0&&!a[c]&&this._handleMethodNotAllowed(i,u,t)})}}_shouldProcessAllowedMethods(t){return!!(t.matched&&(!t.status||t.status===404))}_collectAllowedMethods(t){let e={};for(let r of t)for(let n of r.methods)e[n]=n;return e}_handleNotImplemented(t,e,r){if(r.throw)throw typeof r.notImplemented=="function"?r.notImplemented():new LBt.default.NotImplemented;t.status=501,t.set("Allow",e.join(", "))}_handleOptionsRequest(t,e){t.status=200,t.body="",t.set("Allow",e.join(", "))}_handleMethodNotAllowed(t,e,r){if(r.throw)throw typeof r.methodNotAllowed=="function"?r.methodNotAllowed():new LBt.default.MethodNotAllowed;t.status=405,t.set("Allow",e.join(", "))}all(...t){let e,r,n;if(t.length>=2&&(typeof t[1]=="string"||t[1]instanceof RegExp)?(e=t[0],r=t[1],n=t.slice(2)):(e=void 0,r=t[0],n=t.slice(1)),typeof r!="string"&&!(r instanceof RegExp)&&(!Array.isArray(r)||r.length===0))throw new Error("You have to provide a path when adding an all handler");let i={name:e,pathAsRegExp:r instanceof RegExp};return this.register(r,X6n,n,{...this.opts,...i}),this}redirect(t,e,r){let n=t,i=e;if(typeof t=="symbol"||typeof t=="string"&&t[0]!=="/"){let a=this.url(t);if(a instanceof Error)throw a;n=a}if(typeof e=="symbol"||typeof e=="string"&&e[0]!=="/"&&!e.includes("://")){let a=this.url(e);if(a instanceof Error)throw a;i=a}return this.all(n,a=>{a.redirect(i),a.status=r||301})}register(t,e,r,n={}){let i={...this.opts,...n};if(Array.isArray(t))return this._registerMultiplePaths(t,e,r,i);let o=this._createRouteLayer(t,e,r,i);return this.opts.prefix&&o.setPrefix(this.opts.prefix),XDa(o,this.params),this.stack.push(o),PBt("defined route %s %s",o.methods,o.path),o}_registerMultiplePaths(t,e,r,n){for(let i of t)this.register.call(this,i,e,r,n);return this}_createRouteLayer(t,e,r,n){return new j6n(t,e,r,{end:n.end===!1?n.end:!0,name:n.name,sensitive:n.sensitive||!1,strict:n.strict||!1,prefix:n.prefix||"",ignoreCaptures:n.ignoreCaptures,ignoreWildcardParameter:n.ignoreWildcardParameter,pathAsRegExp:n.pathAsRegExp})}route(t){return this.stack.find(r=>r.name===t)||!1}url(t,...e){let r=this.route(t);return r?r.url(...e):new Error(`No route found for name: ${String(t)}`)}match(t,e){let r={path:[],pathAndMethod:[],route:!1},n=e.toUpperCase();for(let i of this.stack)if(PBt("test %s %s",i.path,i.regexp),i.match(t)){r.path.push(i);let o=i.methods.length===0,a=i.methods.includes(n);(o||a)&&(r.pathAndMethod.push(i),i.methods.length>0&&(r.route=!0))}return r}matchHost(t){let{host:e}=this;return e?t?typeof e=="string"?t===e:Array.isArray(e)?e.includes(t):e instanceof RegExp?e.test(t):!1:!1:!0}param(t,e){this.params[t]||(this.params[t]=[]),Array.isArray(this.params[t])||(this.params[t]=[this.params[t]]),this.params[t].push(e);for(let r of this.stack)r.param(t,e);return this}_registerMethod(t,...e){let r,n,i;if(e.length>=2&&(typeof e[1]=="string"||e[1]instanceof RegExp)?(r=e[0],n=e[1],i=e.slice(2)):(r=void 0,n=e[0],i=e.slice(1)),typeof n!="string"&&!(n instanceof RegExp)&&(!Array.isArray(n)||n.length===0))throw new Error(`You have to provide a path when adding a ${t} handler`);let o={name:r,pathAsRegExp:n instanceof RegExp};return this.register(n,[t],i,{...this.opts,...o}),this}get(...t){return this._registerMethod("get",...t)}post(...t){return this._registerMethod("post",...t)}put(...t){return this._registerMethod("put",...t)}patch(...t){return this._registerMethod("patch",...t)}delete(...t){return this._registerMethod("delete",...t)}del(...t){return this.delete.apply(this,t)}head(...t){return this._registerMethod("head",...t)}options(...t){return this._registerMethod("options",...t)}};for(let t of X6n)KDa.includes(t)||t in H6n.prototype||Object.defineProperty(H6n.prototype,t,{value:s(function(...r){return this._registerMethod(t,...r)},"value"),writable:!0,configurable:!0,enumerable:!1});var K2c={...U7,..._l};var eh=".temp",t5="couchdb",Uoe="minio",eWn=[{value:"MAIN_PORT",default:"10000"},{value:"COUCH_DB_URL",default:"http://budibase:budibase@localhost:10000/db/"},{value:"MINIO_URL",default:"http://localhost:10000"},{value:"MINIO_ACCESS_KEY"},{value:"MINIO_SECRET_KEY"}];function rBa(t){let e=t.MAIN_PORT,r=t.COUCH_DB_USER,n=t.COUCH_DB_PASSWORD;return!t.COUCH_DB_URL&&e&&r&&n&&(t.COUCH_DB_URL=`http://${r}:${n}@localhost:${e}/db/`),t.MINIO_URL||(t.MINIO_URL=`http://localhost:${e}/`),t}s(rBa,"checkURLs");async function nBa(){console.log("*** NOTE: use a .env file to load these parameters repeatedly ***");let t={};for(let e of eWn)t[e.value]=await pP(e.value,e.default);return t}s(nBa,"askQuestions");function iBa(t){if(!MBt.default.existsSync(t))throw"Unable to file specified .env file";let e=MBt.default.readFileSync(t,"utf8"),r=rBa(Z6n.default.parse(e));for(let n of eWn)if(!r[n.value])throw`Cannot find "${n.value}" property in .env file`;return r}s(iBa,"loadEnvironment");async function UBt(t=!0){let e;t!==!0?e=iBa(t):e=await nBa();for(let r of Object.keys(e))lt._set(r,e[r]);return e}s(UBt,"getConfig");async function FBt(t,e){let r=tce();try{await r.replicate(t,e,{batch_size:1e3,batches_limit:5,style:"main_only"})}catch(n){throw new Error(`Replication failed - ${JSON.stringify(n)}`)}}s(FBt,"replication");function QBt(t){let e=tce(t.COUCH_DB_URL),r=tce();return{Remote:e,Local:r}}s(QBt,"getPouches");var SQ=ge(require("fs")),Ok=require("path");hd();var rWn=ge(require("node:stream")),nWn=require("stream/promises");var{ObjectStoreBuckets:sBa,ObjectStore:iWn,retrieve:oBa,uploadDirectory:aBa,createBucketIfNotExists:uBa}=mbe,tWn=Object.values(sBa);async function cBa(t,e){let r=[],n;do{let i=await t.listObjectsV2({Bucket:e,ContinuationToken:n});r.push(...i.Contents?.filter(o=>!!o.Key).map(o=>({...o,bucket:e,Key:o.Key}))||[]),n=i.NextContinuationToken}while(n);return r}s(cBa,"listBucketObjects");async function sWn(){let t=(0,Ok.join)(eh,Uoe);SQ.default.mkdirSync(t,{recursive:!0});let e=[],r=0;for(let o of tWn){let a=iWn();try{await a.headBucket({Bucket:o})}catch{r++;continue}e=e.concat(await cBa(a,o))}if(r===tWn.length)throw new Error("Unable to access MinIO/S3 - check environment config.");let n=fP(e.length),i=0;for(let o of e){let a=o.Key,u=await oBa(o.bucket,a),c=a.split("/"),l=(0,Ok.join)(t,o.bucket,...c);SQ.default.mkdirSync((0,Ok.dirname)(l),{recursive:!0}),u instanceof rWn.Readable?await(0,nWn.pipeline)(u,SQ.default.createWriteStream(l)):SQ.default.writeFileSync(l,u),n.update(++i)}n.stop()}s(sWn,"exportObjects");async function oWn(){let t=(0,Ok.join)(eh,Uoe),e=SQ.default.readdirSync(t),r=0;e.forEach(o=>{let a=SQ.default.readdirSync((0,Ok.join)(t,o));r+=a.length});let n=fP(r),i=0;for(let o of e){let a=iWn();await uBa(a,o);let u=await aBa(o,(0,Ok.join)(t,o),"/");i+=u.length,n.update(i)}n.stop()}s(oWn,"importObjects");var aWn=require("tar");async function uWn(t){let e=t.env||void 0,r=t.export||t;typeof r!="string"&&(r=`backup-${new Date().toISOString()}.tar.gz`);let n=await UBt(e),i=await Tqt(n.COUCH_DB_URL),{Remote:o,Local:a}=QBt(n);iT.default.existsSync(eh)&&iT.default.rmSync(eh,{recursive:!0});let u=(0,IQ.join)(eh,t5);iT.default.mkdirSync(eh),iT.default.mkdirSync(u),console.log("CouchDB Export");let c=fP(i.length),l=0;for(let f of i){c.update(++l);let d=new o(f),m=new a((0,IQ.join)(eh,t5,f));await FBt(d,m),await d.close(),await m.close()}c.stop(),console.log("S3 Export"),await sWn(),aWn.create({sync:!0,gzip:!0,file:r,cwd:(0,IQ.join)(eh)},[t5,Uoe]),iT.default.rmSync(eh,{recursive:!0}),console.log(`Generated export file - ${r}`)}s(uWn,"exportBackup");async function cWn(t){let e=t.env||void 0,r=t.import||t,n=await UBt(e);(!r||!iT.default.existsSync(r))&&(console.error("Cannot import without specifying a valid file to import"),process.exit(-1)),iT.default.existsSync(eh)&&iT.default.rmSync(eh,{recursive:!0}),iT.default.mkdirSync(eh),aWn.extract({sync:!0,cwd:(0,IQ.join)(eh),file:r});let{Remote:i,Local:o}=QBt(n),a=iT.default.readdirSync((0,IQ.join)(eh,t5));console.log("CouchDB Import");let u=fP(a.length),c=0;for(let l of a){u.update(++c);let f=new i(l),d=new o((0,IQ.join)(eh,t5,l));await FBt(d,f),await f.close(),await d.close()}u.stop(),console.log("MinIO Import"),await oWn();try{await yqe(`http://localhost:${n.MAIN_PORT}/api/system/restored`,"POST")}catch{}console.log("Import complete"),iT.default.rmSync(eh,{recursive:!0})}s(cWn,"importBackup");async function lBa(t){if(t.import)return cWn(t);if(t.export)return uWn(t)}s(lBa,"pickOne");var lWn=new NI("backups").addHelp("Allows building backups of Budibase, as well as importing a backup to a new instance.").addSubOption("--export [filename]","Export a backup from an existing Budibase installation.",uWn).addSubOption("--import [filename]","Import a backup to a new Budibase installation.",cWn).addSubOption("--env [envFile]","Provide an environment variable file to configure the CLI.",lBa);xx();var dXn=ge(require("node-fetch")),GQ=ge(require("fs")),hXn=ge(require("os")),FMe=require("path");var aXn=ge(hWn()),uXn=ge(require("vm")),ALt=ge(Zoe());var KO=class{static{s(this,"Helper")}constructor(e,r,n=!0){this.name=e,this.fn=r,this.useValueFallback=n}register(e){e.registerHelper(this.name,(r,n)=>{let i={};n&&n.data&&n.data.root&&(i=n.data.root);let o=this.fn(r,i);return o??(this.useValueFallback?r:null)})}unregister(e){e.unregisterHelper(this.name)}};var UMe=ge(Zoe());var FPt=ge(BKn());var Zh=ge(Zqe()),GKn=ge(kKn()),jKn=ge(PKn()),VKn=ge(LKn()),HKn=ge(MKn()),YKn=ge(UKn()),WKn=ge(FKn()),zKn=ge(QKn()),$Kn=ge(qKn());Zh.default.extend(GKn.default);Zh.default.extend(jKn.default);Zh.default.extend(VKn.default);Zh.default.extend(HKn.default);Zh.default.extend(YKn.default);Zh.default.extend(WKn.default);Zh.default.extend(zKn.default);Zh.default.extend($Kn.default);function UQ(t){return typeof t=="object"&&typeof t.hash=="object"}s(UQ,"isOptions");function LPt(t){return typeof t=="object"&&typeof t.options=="object"&&typeof t.app=="object"}s(LPt,"isApp");function MPt(t,e,r){if(UQ(t))return MPt({},e,t);if(UQ(e))return MPt(t,r,e);let n=LPt(t)?t.context:{};r=r||{},UQ(r)||(e=Object.assign({},e,r)),UQ(r)&&r.hash.root===!0&&(e=Object.assign({},r.data.root,e));let i=Object.assign({},n,e,r.hash);return LPt(t)||(i=Object.assign({},t,i)),LPt(t)&&t.view&&t.view.data&&(i=Object.assign({},i,t.view.data)),i}s(MPt,"getContext");function UPt(t,e,r){return UQ(e)&&(r=e,e=JKn),UQ(t)&&(r=t,e=null,t=null),{str:t,pattern:e,options:r}}s(UPt,"initialConfig");function KKn(t,e,r){let n=UPt(t,e,r),i={lang:"en",date:new Date(n.str)},o=MPt(this,i,{});Zh.default.locale(o.lang||o.language)}s(KKn,"setLocale");var JKn="MMMM DD, YYYY",RMe=s((t,e,r)=>{let n=UPt(t,e,r);if(n.str==null&&n.pattern==null)return Zh.default.locale("en"),(0,Zh.default)().format(JKn);KKn(n.str,n.pattern,n.options);let i=(0,Zh.default)(new Date(n.str));return typeof n.options=="string"?i=n.options.toLowerCase()==="utc"?i.utc():i.tz(n.options):i=i.tz(Zh.default.tz.guess()),n.pattern===""?i.toISOString():i.format(n.pattern)},"date"),mae=s((t,e,r)=>{let n=UPt(t,e);KKn(n.str,n.pattern);let i=Zh.default.duration(n.str,n.pattern);return r&&!UQ(r)?i.format(r):i.humanize()},"duration"),Aae=s((t,e,r)=>(0,Zh.default)(new Date(t)).diff((0,Zh.default)(new Date(e)),r),"difference"),CMe=s(t=>{let e=Aae(t,new Date().toISOString(),"ms");return mae(e,"ms")},"durationFromNow");var bMe=["#if","#unless","#each","#with","lookup","log","blockHelperMissing","each","helperMissing","if","unless","log","lookup","with"],XKn=["math","array","number","url","string","comparison","object","regex","uuid"],FQ={OBJECT:"object",ALL:"all",LITERAL:"literal",JS:"js",DECODE_ID:"decodeId"},_5="%LITERAL%";var ZKn={date:RMe,duration:mae,difference:Aae,durationFromNow:CMe};function e7n(t){for(let[r,n]of Object.entries(ZKn))t.registerHelper(r,n);let e=[];for(let r of XKn){let n=FPt.default[r]();for(let i of Object.entries(n)){let o=i[0];bMe.indexOf(o)!==-1||e.indexOf(o)!==-1||e.push(o)}FPt.default[r]({handlebars:t})}QPt=e.concat(Object.keys(ZKn))}s(e7n,"registerAll");var QPt=[];function ZUa(){return process.env.NODE_ENV==="jest"||process.env.JEST_WORKER_ID!=null&&process.env.JEST_WORKER_ID!=="null"}s(ZUa,"isJest");function QQ(){return ZUa()}s(QQ,"isTest");var t7n=s(()=>process&&process.env.BACKEND_JS,"isTestingBackendJS");var eFa=/^[A-Za-z0-9]+$/g,wMe=/{{([^{].*?)}}/g,qPt=/{?{{([^{].*?)}}}?/g,tFa=/{{{([^{].*?)}}}/g,_ae=s(()=>QQ()&&t7n()?!0:QQ()?!1:typeof window>"u","isBackendService"),r7n=s(()=>process&&!process.env.NO_JS,"isJSAllowed"),n7n=s(t=>{let e=t,r=new RegExp(wMe),n=new RegExp(tFa),i=e.match(n);i&&i.forEach(a=>{e=e.replace(a,"")});let o=e.match(r);return o||[]},"findDoubleHbsInstances"),i7n=s(t=>t.match(eFa),"isAlphaNumeric"),GPt=s((t,e,r,n)=>t.slice(0,e)+n+t.slice(e+r),"swapStrings");var jPt=s(t=>Buffer.from(t,"base64").toString("utf-8"),"atob"),s7n=s((t,e,r)=>{let n=e.map(o=>o.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")),i=new RegExp(`\\b(${n.join("|")})\\b`,"g");return t.replace(i,`${r}$1`)},"prefixStrings");function NMe(t){return`
4435
4435
  result = {
4436
4436
  result: null,
4437
4437
  error: null,
@@ -4466,7 +4466,7 @@ ${t}
4466
4466
  </style>
4467
4467
  `,a=!1,u,c,l=[];if(i){let d=`${t}.pre-svelte5`;Rs.default.writeFileSync(d,e),Rs.default.writeFileSync(t,o),a=!0,u=e,c=o,l.push(`Updated ${t} to use <svelte:boundary>, $$restProps, and error UI.`)}else l.push(`${t} already looks Svelte 5 compatible (uses <svelte:boundary> with no legacy Boundary.js wrapper).`);let f=rh.default.join(rh.default.dirname(t),"Boundary.js");if(Rs.default.existsSync(f))try{Rs.default.unlinkSync(f),a=!0,l.push("Removed legacy lib/Boundary.js (incompatible with Svelte 5).")}catch(d){console.log("Failed to delete legacy Boundary.js:",d instanceof Error?d.message:d)}return{changed:a,before:u,after:c,message:l.join(" ")}}s(Nqa,"migrateWrapper");function Oqa(){let t=rh.default.join(process.cwd(),"package.json");if(!Rs.default.existsSync(t))return{changed:!1,message:"package.json not found"};let e=Rs.default.readFileSync(t,"utf8"),r;try{r=JSON.parse(e)}catch(f){return{changed:!1,message:`Invalid package.json: ${f?.message||"parse error"}`}}let n=JSON.stringify(r,null,2),i=typeof r.version=="string"?r.version.trim():void 0,o=_Xn(i);r.dependencies||(r.dependencies={}),r.dependencies.svelte="^5.0.0",r.peerDependencies={...r.peerDependencies||{},svelte:"^5.0.0"};let a=r.devDependencies||{};a.rollup="^4.21.0",a["@rollup/plugin-commonjs"]="^25.0.7",a["@rollup/plugin-node-resolve"]="^15.2.3",a["rollup-plugin-svelte"]="^7.2.3",a["@budibase/backend-core"]&&(a["@budibase/backend-core"]="^2.8.0"),a["npm-run-all"]&&delete a["npm-run-all"],r.devDependencies=a,r.dependencies?.["@crownframework/svelte-error-boundary"]&&delete r.dependencies["@crownframework/svelte-error-boundary"],r.scripts||(r.scripts={}),r.scripts.build="rollup -c rollup.config.mjs",r.scripts.watch="rollup -cw rollup.config.mjs",o&&(r.version=o);let u=JSON.stringify(r,null,2);if(n===u)return{changed:!1,message:"package.json already appears Svelte 5 ready. Skipping."};Rs.default.writeFileSync(`${t}.pre-svelte5`,e),Rs.default.writeFileSync(t,`${u}
4468
4468
  `);let c=i&&o?` (version ${i} -> ${o})`:"",l=o?`Updated package.json for Svelte 5, Rollup 4, scripts, and version bump${c}.`:"Updated package.json for Svelte 5, Rollup 4, and scripts.";return{changed:!0,before:n,after:u,message:l}}s(Oqa,"migratePackageJson");function IXn(){let t=rh.default.join(process.cwd(),".github","workflows");return Rs.default.existsSync(t)?Rs.default.readdirSync(t).filter(r=>r.endsWith(".yml")||r.endsWith(".yaml")).map(r=>rh.default.join(".github","workflows",r)):[]}s(IXn,"findWorkflowFiles");function xqa(){let t=IXn();if(t.length===0)return{changed:!1,message:"No GitHub workflow files found in .github/workflows/ - skipping node version migration."};let e=[],r=!1;for(let n of t){let i=rh.default.join(process.cwd(),n),o=Rs.default.readFileSync(i,"utf8");if(!/node-version:\s*['"]?16['"]?/g.test(o))continue;let u=o.replace(/node-version:\s*['"]?16['"]?/g,"node-version: 18");if(u!==o){let c=`${i}.pre-svelte5`;Rs.default.writeFileSync(c,o),Rs.default.writeFileSync(i,u),r=!0,e.push(`Updated ${n}: node-version 16 -> 18`)}}return r?{changed:!0,message:e.join("; ")}:{changed:!1,message:"No workflow files with node-version: 16 found - skipping node version migration."}}s(xqa,"migrateNodeVersion");function vqa(){let t=rh.default.join(process.cwd(),"schema.json");if(!Rs.default.existsSync(t))return{changed:!1,message:"schema.json not found - skipping schema metadata migration."};let e=Rs.default.readFileSync(t,"utf8"),r;try{r=JSON.parse(e)}catch(c){return{changed:!1,message:`Invalid schema.json: ${c?.message||"parse error"}`}}let n=r&&typeof r.metadata=="object"&&!Array.isArray(r.metadata)?r.metadata:{};if(!(n?.svelteMajor!==5))return{changed:!1,message:"schema.json metadata already includes svelteMajor: 5. Skipping."};let o=JSON.stringify(r,null,2),a={...n,svelteMajor:5};r.metadata=a;let u=JSON.stringify(r,null,2);return Rs.default.writeFileSync(`${t}.pre-svelte5`,e),Rs.default.writeFileSync(t,`${u}
4469
- `),{changed:!0,before:o,after:u,message:"Updated schema.json metadata to include svelteMajor: 5."}}s(vqa,"migrateSchemaJson");async function RXn(){let t=[],e=Rs.default.readFileSync("package.json","utf8"),r=JSON.parse(e),n=r?.dependencies?.svelte?.startsWith("^5")||r?.peerDependencies?.svelte?.startsWith("^5"),i=typeof r?.version=="string"?r.version.trim():void 0,o=_Xn(i);n?t.push("package.json appears to already depend on Svelte 5."):t.push("Will bump svelte to ^5.0.0 and align dev/peer dependencies."),r?.dependencies?.["@crownframework/svelte-error-boundary"]&&t.push("Detected @crownframework/svelte-error-boundary; migration will replace it with <svelte:boundary> in lib/Wrapper.svelte."),o&&i&&o!==i&&t.push(`Will bump package.json version from ${i} to ${o}.`);let a=EXn(),u="unknown";if(a){let T=Rs.default.readFileSync(a,"utf8");yXn(T)?(u="looks-new",t.push(`Rollup config ${a} already looks Svelte 5-ready.`)):(u="needs-migration",t.push("Will write Rollup 4 / Svelte 5 config and rename to rollup.config.mjs."))}else u="unknown",t.push("No rollup config found - will create rollup.config.mjs.");let c=SXn(),l="not-found";c?Rs.default.readFileSync(c,"utf8").includes("<svelte:boundary>")?(l="looks-new",t.push(`${c} already uses <svelte:boundary>.`)):(l="needs-migration",t.push(`Will update ${c} to use <svelte:boundary>, $$restProps, and error UI.`)):t.push("No wrapper.svelte found - skipping wrapper migration.");let f="unknown";if(Rs.default.existsSync("schema.json"))try{let T=Rs.default.readFileSync("schema.json","utf8"),S=JSON.parse(T);(S&&typeof S.metadata=="object"&&!Array.isArray(S.metadata)?S.metadata:{}).svelteMajor===5?(f="looks-new",t.push("schema.json metadata already declares svelteMajor: 5.")):(f="needs-migration",t.push("Will update schema.json metadata to set svelteMajor: 5."))}catch(T){f="unknown",t.push(`schema.json could not be parsed - please fix JSON before migration (${T?.message||"parse error"}).`)}else f="not-found",t.push("schema.json not found - cannot update metadata.");let d=n?"looks-new":"needs-migration",m="not-found",A=IXn();if(A.length>0){let T=!1,S=!1;for(let b of A){let C=rh.default.join(process.cwd(),b),B=Rs.default.readFileSync(C,"utf8");/node-version:\s*['"]?16['"]?/.test(B)&&(T=!0),/node-version:\s*['"]?(18|20|22)['"]?/.test(B)&&(S=!0)}T?(m="needs-migration",t.push("Will update GitHub workflow files: node-version 16 -> 18.")):S?(m="looks-new",t.push("GitHub workflow files already use node-version 18 or higher.")):(m="looks-new",t.push("GitHub workflow files found but no node-version: 16 detected."))}else t.push("No GitHub workflow files found in .github/workflows/ - skipping node version check.");return{report:t,rollup:u,packageJson:d,wrapper:l,schema:f,nodeVersion:m,canBuildAfter:!0,rollupFile:a,wrapperFile:c,pkg:r}}s(RXn,"analysePluginForSvelte5");async function CXn(){let t=await wqa();if(t.message.includes("Failed to retrieve canonical rollup.config.mjs from skeleton"))return{pkgRes:{changed:!1,message:"Skipped package.json migration due to Rollup template failure."},schemaRes:{changed:!1,message:"Skipped schema.json migration due to Rollup template failure."},rollupRes:t,wrapperRes:{changed:!1,message:"Skipped wrapper migration due to Rollup template failure."},nodeVersionRes:{changed:!1,message:"Skipped node version migration due to Rollup template failure."}};let e=Nqa(),r=vqa(),n=Oqa(),i=xqa();return{pkgRes:n,schemaRes:r,rollupRes:t,wrapperRes:e,nodeVersionRes:i}}s(CXn,"runSvelte5Migration");var bXn=require("child_process");var Dqa=require("find-free-port");function Bqa(t){let e=[],r=[];for(let n of new Set(t.filter(Boolean)))if(rx.default.existsSync(n))try{rx.default.unlinkSync(n),e.push(n)}catch(i){r.push({path:n,error:i instanceof Error?i.message:String(i)})}return{deleted:e,failed:r}}s(Bqa,"cleanupPreSvelte5Backups");function wXn(){if(!rx.default.existsSync("package.json"))throw new Error("Please run in a plugin directory - must contain package.json");if(!rx.default.existsSync("schema.json"))throw new Error("Please run in a plugin directory - must contain schema.json")}s(wXn,"checkInPlugin");async function kqa(t){return rx.default.readdirSync(process.cwd()).find(r=>r===".git")?!1:(console.log(Qi(`By default the plugin will be created in the directory "${t}"`)),console.log(Qi("if you are already in an empty directory, such as a new Git repo, you can disable this functionality.")),OI("Create top level directory?"))}s(kqa,"askAboutTopLevel");async function Pqa(t){let e=t.init||t;if(!e||!$Ft.includes(e)){console.log(Fa("Please provide a type to init, either 'component', 'datasource' or 'automation'."));return}console.log(Qi("Lets get some details about your new plugin:"));let r=await pP("Name",`budibase-${e}`);if(rx.default.existsSync(r)){console.log(Fa("Directory by plugin name already exists, pick a new name."));return}let n=await pP("Description",`An amazing Budibase ${e}!`),i=await pP("Version","1.0.0"),o=await kqa(r);console.log(Qi("Retrieving project...")),await QMe(e,r),await pXn(e,r,n,i),console.log(Qi("Installing dependencies...")),await S5("install",(0,qMe.join)(process.cwd(),r)),o?console.log(Qi(`Plugin created in directory "${r}"`)):(Rqe(r,process.cwd()),console.log(Qi("Plugin created in current directory."))),Wue(Pb.PluginInit,{type:e,name:r,description:n,version:i})}s(Pqa,"init");async function yLt(){wXn(),console.log(Qi("Verifying plugin..."));let t=rx.default.readFileSync("schema.json","utf8"),e=rx.default.readFileSync("package.json","utf8"),r,n;try{let i=JSON.parse(t),o=JSON.parse(e);if(!o.name||!o.version||!o.description)throw new Error("package.json is missing one of 'name', 'version' or 'description'.");return r=o.name,n=o.version,CNe.validate(i),{name:r,version:n}}catch(i){i&&i.message&&i.message.includes("not valid JSON")?console.log(Fa(`schema.json is not valid JSON: ${i.message}`)):console.log(Fa(`Invalid schema/package.json: ${i.message}`))}}s(yLt,"verify");async function Lqa(){let t=await yLt();if(!t?.name)return;console.log(pu("Verified!")),console.log(Qi("Building plugin...")),await S5("build");let e=(0,qMe.join)("dist",`${t.name}-${t.version}.tar.gz`);console.log(pu(`Build complete - output in: ${e}`))}s(Lqa,"build");async function Mqa(){let t=await yLt();if(!t?.name)return;let e=(0,qMe.join)("dist",`${t.name}-${t.version}.tar.gz`);console.log(Qi(`Watching - build in: ${e}`));try{await S5("watch")}catch{console.log(pu("Watch exited."))}}s(Mqa,"watch");async function Uqa(){let t=await pP("Directory to watch","./"),[e]=await Dqa(1e4),r="admin";await Xue({init:"quick",single:!0,watchPluginDir:t,genUser:r,port:e,silent:!0}),await Fq(),console.log(pu("Configuration has been written to docker-compose.yaml")),console.log(pu("Development environment started successfully - connect at: ")+Qi(`http://localhost:${e}`)),console.log(pu("Use the following credentials to login:")),console.log(pu("Email: ")+Qi(Qqe)),console.log(pu("Password: ")+Qi(r))}s(Uqa,"dev");async function Fqa(t){wXn();let e=!!t?.yes,r=!!t?.force,n=!1;try{n=!!(0,bXn.execSync)("git status --porcelain",{encoding:"utf8"}).trim()}catch{}if(n&&!r&&(console.log(Qi("Your git working directory is not clean. Commit or stash changes, or re-run with --force.")),!await OI("Proceed with migration anyway?"))){console.log(Qi("Migration aborted."));return}console.log(Qi("Analyzing plugin for Svelte 5 migration..."));let i=await RXn();console.log(Qi("Proposed changes:"));for(let c of i.report)console.log(Qi(" - "+c));let o=["package.json.pre-svelte5","schema.json.pre-svelte5",i.rollupFile?`${i.rollupFile}.pre-svelte5`:void 0,i.wrapperFile?`${i.wrapperFile}.pre-svelte5`:void 0];if(!e&&!await OI("Apply these changes now?")){console.log(Qi("Migration aborted by user."));return}console.log(Qi("Applying migrations..."));let a=await CXn();if(a.rollupRes?.message?.includes("Failed to retrieve canonical rollup.config.mjs from skeleton")){console.log(Fa(a.rollupRes.message));return}if(a.pkgRes?.message&&console.log(Qi(a.pkgRes.message)),a.schemaRes?.message&&console.log(Qi(a.schemaRes.message)),a.rollupRes?.message&&console.log(Qi(a.rollupRes.message)),a.wrapperRes?.message&&console.log(Qi(a.wrapperRes.message)),console.log(Qi("Installing updated dependencies...")),await S5("install"),console.log(Qi("Re-verifying plugin...")),!(await yLt())?.name){console.log(Fa("Verification failed after migration."));return}console.log(Qi("Attempting build..."));try{await S5("build");let c=Bqa(o.filter(l=>!!l));console.log(pu("Migration completed. Your plugin was migrated to Svelte 5 and built successfully.")),c.deleted.length&&console.log(Qi(`Removed ${c.deleted.length} pre-svelte5 backup file(s): ${c.deleted.join(", ")}`)),c.failed.length&&console.log(Qi(`Failed to remove ${c.failed.length} pre-svelte5 backup file(s): ${c.failed.map(l=>`${l.path} (${l.error})`).join(", ")}`))}catch(c){console.log(Fa(`Build failed after migration. Please review the errors above. ${c?.message||""}`))}}s(Fqa,"migrateSvelte5");var NXn=new NI("plugins").addHelp("Custom plugins for Budibase, init, build and verify your components and datasources with this tool.").addSubOption("--init [type]","Init a new plugin project, with a type of either component or datasource.",Pqa).addSubOption("--build","Build your plugin, this will verify and produce a final tarball for your project.",Lqa).addSubOption("--watch","Automatically build any changes to your plugin.",Mqa).addSubOption("--dev","Run a development environment which automatically watches the current directory.",Uqa).addSubOption("--migrate-svelte5","Migrate this plugin to the Svelte 5-compatible Budibase plugin format.",Fqa,[{command:"--yes",help:"Skip confirmation prompts during migration."},{command:"--force",help:"Proceed even if the git working directory is not clean (creates .pre-svelte5 backups during migration, removed on success)."}]);function OXn(){return[Eqt,YQt,lWn,NXn]}s(OXn,"getCommands");var vXn=require("commander");hd();var xXn="3.39.25";async function qqa(){let t=new vXn.Command().addHelpCommand("help",Q9("Help with Budibase commands.")).helpOption(!1).version(xXn);for(let e of OXn())e.configure(t);await t.parseAsync(process.argv)}s(qqa,"init");var Gqa=["exit","SIGINT","SIGUSR1","SIGUSR2","uncaughtException"];Gqa.forEach(t=>{process.on(t,e=>{e&&!isNaN(e)||e&&(console.error(Fa("Failed to run CLI command - please report with the following message:")),console.error(Fa(e)))})});qqa().catch(t=>{console.error("Unexpected error - ",t)});
4469
+ `),{changed:!0,before:o,after:u,message:"Updated schema.json metadata to include svelteMajor: 5."}}s(vqa,"migrateSchemaJson");async function RXn(){let t=[],e=Rs.default.readFileSync("package.json","utf8"),r=JSON.parse(e),n=r?.dependencies?.svelte?.startsWith("^5")||r?.peerDependencies?.svelte?.startsWith("^5"),i=typeof r?.version=="string"?r.version.trim():void 0,o=_Xn(i);n?t.push("package.json appears to already depend on Svelte 5."):t.push("Will bump svelte to ^5.0.0 and align dev/peer dependencies."),r?.dependencies?.["@crownframework/svelte-error-boundary"]&&t.push("Detected @crownframework/svelte-error-boundary; migration will replace it with <svelte:boundary> in lib/Wrapper.svelte."),o&&i&&o!==i&&t.push(`Will bump package.json version from ${i} to ${o}.`);let a=EXn(),u="unknown";if(a){let T=Rs.default.readFileSync(a,"utf8");yXn(T)?(u="looks-new",t.push(`Rollup config ${a} already looks Svelte 5-ready.`)):(u="needs-migration",t.push("Will write Rollup 4 / Svelte 5 config and rename to rollup.config.mjs."))}else u="unknown",t.push("No rollup config found - will create rollup.config.mjs.");let c=SXn(),l="not-found";c?Rs.default.readFileSync(c,"utf8").includes("<svelte:boundary>")?(l="looks-new",t.push(`${c} already uses <svelte:boundary>.`)):(l="needs-migration",t.push(`Will update ${c} to use <svelte:boundary>, $$restProps, and error UI.`)):t.push("No wrapper.svelte found - skipping wrapper migration.");let f="unknown";if(Rs.default.existsSync("schema.json"))try{let T=Rs.default.readFileSync("schema.json","utf8"),S=JSON.parse(T);(S&&typeof S.metadata=="object"&&!Array.isArray(S.metadata)?S.metadata:{}).svelteMajor===5?(f="looks-new",t.push("schema.json metadata already declares svelteMajor: 5.")):(f="needs-migration",t.push("Will update schema.json metadata to set svelteMajor: 5."))}catch(T){f="unknown",t.push(`schema.json could not be parsed - please fix JSON before migration (${T?.message||"parse error"}).`)}else f="not-found",t.push("schema.json not found - cannot update metadata.");let d=n?"looks-new":"needs-migration",m="not-found",A=IXn();if(A.length>0){let T=!1,S=!1;for(let b of A){let C=rh.default.join(process.cwd(),b),B=Rs.default.readFileSync(C,"utf8");/node-version:\s*['"]?16['"]?/.test(B)&&(T=!0),/node-version:\s*['"]?(18|20|22)['"]?/.test(B)&&(S=!0)}T?(m="needs-migration",t.push("Will update GitHub workflow files: node-version 16 -> 18.")):S?(m="looks-new",t.push("GitHub workflow files already use node-version 18 or higher.")):(m="looks-new",t.push("GitHub workflow files found but no node-version: 16 detected."))}else t.push("No GitHub workflow files found in .github/workflows/ - skipping node version check.");return{report:t,rollup:u,packageJson:d,wrapper:l,schema:f,nodeVersion:m,canBuildAfter:!0,rollupFile:a,wrapperFile:c,pkg:r}}s(RXn,"analysePluginForSvelte5");async function CXn(){let t=await wqa();if(t.message.includes("Failed to retrieve canonical rollup.config.mjs from skeleton"))return{pkgRes:{changed:!1,message:"Skipped package.json migration due to Rollup template failure."},schemaRes:{changed:!1,message:"Skipped schema.json migration due to Rollup template failure."},rollupRes:t,wrapperRes:{changed:!1,message:"Skipped wrapper migration due to Rollup template failure."},nodeVersionRes:{changed:!1,message:"Skipped node version migration due to Rollup template failure."}};let e=Nqa(),r=vqa(),n=Oqa(),i=xqa();return{pkgRes:n,schemaRes:r,rollupRes:t,wrapperRes:e,nodeVersionRes:i}}s(CXn,"runSvelte5Migration");var bXn=require("child_process");var Dqa=require("find-free-port");function Bqa(t){let e=[],r=[];for(let n of new Set(t.filter(Boolean)))if(rx.default.existsSync(n))try{rx.default.unlinkSync(n),e.push(n)}catch(i){r.push({path:n,error:i instanceof Error?i.message:String(i)})}return{deleted:e,failed:r}}s(Bqa,"cleanupPreSvelte5Backups");function wXn(){if(!rx.default.existsSync("package.json"))throw new Error("Please run in a plugin directory - must contain package.json");if(!rx.default.existsSync("schema.json"))throw new Error("Please run in a plugin directory - must contain schema.json")}s(wXn,"checkInPlugin");async function kqa(t){return rx.default.readdirSync(process.cwd()).find(r=>r===".git")?!1:(console.log(Qi(`By default the plugin will be created in the directory "${t}"`)),console.log(Qi("if you are already in an empty directory, such as a new Git repo, you can disable this functionality.")),OI("Create top level directory?"))}s(kqa,"askAboutTopLevel");async function Pqa(t){let e=t.init||t;if(!e||!$Ft.includes(e)){console.log(Fa("Please provide a type to init, either 'component', 'datasource' or 'automation'."));return}console.log(Qi("Lets get some details about your new plugin:"));let r=await pP("Name",`budibase-${e}`);if(rx.default.existsSync(r)){console.log(Fa("Directory by plugin name already exists, pick a new name."));return}let n=await pP("Description",`An amazing Budibase ${e}!`),i=await pP("Version","1.0.0"),o=await kqa(r);console.log(Qi("Retrieving project...")),await QMe(e,r),await pXn(e,r,n,i),console.log(Qi("Installing dependencies...")),await S5("install",(0,qMe.join)(process.cwd(),r)),o?console.log(Qi(`Plugin created in directory "${r}"`)):(Rqe(r,process.cwd()),console.log(Qi("Plugin created in current directory."))),Wue(Pb.PluginInit,{type:e,name:r,description:n,version:i})}s(Pqa,"init");async function yLt(){wXn(),console.log(Qi("Verifying plugin..."));let t=rx.default.readFileSync("schema.json","utf8"),e=rx.default.readFileSync("package.json","utf8"),r,n;try{let i=JSON.parse(t),o=JSON.parse(e);if(!o.name||!o.version||!o.description)throw new Error("package.json is missing one of 'name', 'version' or 'description'.");return r=o.name,n=o.version,CNe.validate(i),{name:r,version:n}}catch(i){i&&i.message&&i.message.includes("not valid JSON")?console.log(Fa(`schema.json is not valid JSON: ${i.message}`)):console.log(Fa(`Invalid schema/package.json: ${i.message}`))}}s(yLt,"verify");async function Lqa(){let t=await yLt();if(!t?.name)return;console.log(pu("Verified!")),console.log(Qi("Building plugin...")),await S5("build");let e=(0,qMe.join)("dist",`${t.name}-${t.version}.tar.gz`);console.log(pu(`Build complete - output in: ${e}`))}s(Lqa,"build");async function Mqa(){let t=await yLt();if(!t?.name)return;let e=(0,qMe.join)("dist",`${t.name}-${t.version}.tar.gz`);console.log(Qi(`Watching - build in: ${e}`));try{await S5("watch")}catch{console.log(pu("Watch exited."))}}s(Mqa,"watch");async function Uqa(){let t=await pP("Directory to watch","./"),[e]=await Dqa(1e4),r="admin";await Xue({init:"quick",single:!0,watchPluginDir:t,genUser:r,port:e,silent:!0}),await Fq(),console.log(pu("Configuration has been written to docker-compose.yaml")),console.log(pu("Development environment started successfully - connect at: ")+Qi(`http://localhost:${e}`)),console.log(pu("Use the following credentials to login:")),console.log(pu("Email: ")+Qi(Qqe)),console.log(pu("Password: ")+Qi(r))}s(Uqa,"dev");async function Fqa(t){wXn();let e=!!t?.yes,r=!!t?.force,n=!1;try{n=!!(0,bXn.execSync)("git status --porcelain",{encoding:"utf8"}).trim()}catch{}if(n&&!r&&(console.log(Qi("Your git working directory is not clean. Commit or stash changes, or re-run with --force.")),!await OI("Proceed with migration anyway?"))){console.log(Qi("Migration aborted."));return}console.log(Qi("Analyzing plugin for Svelte 5 migration..."));let i=await RXn();console.log(Qi("Proposed changes:"));for(let c of i.report)console.log(Qi(" - "+c));let o=["package.json.pre-svelte5","schema.json.pre-svelte5",i.rollupFile?`${i.rollupFile}.pre-svelte5`:void 0,i.wrapperFile?`${i.wrapperFile}.pre-svelte5`:void 0];if(!e&&!await OI("Apply these changes now?")){console.log(Qi("Migration aborted by user."));return}console.log(Qi("Applying migrations..."));let a=await CXn();if(a.rollupRes?.message?.includes("Failed to retrieve canonical rollup.config.mjs from skeleton")){console.log(Fa(a.rollupRes.message));return}if(a.pkgRes?.message&&console.log(Qi(a.pkgRes.message)),a.schemaRes?.message&&console.log(Qi(a.schemaRes.message)),a.rollupRes?.message&&console.log(Qi(a.rollupRes.message)),a.wrapperRes?.message&&console.log(Qi(a.wrapperRes.message)),console.log(Qi("Installing updated dependencies...")),await S5("install"),console.log(Qi("Re-verifying plugin...")),!(await yLt())?.name){console.log(Fa("Verification failed after migration."));return}console.log(Qi("Attempting build..."));try{await S5("build");let c=Bqa(o.filter(l=>!!l));console.log(pu("Migration completed. Your plugin was migrated to Svelte 5 and built successfully.")),c.deleted.length&&console.log(Qi(`Removed ${c.deleted.length} pre-svelte5 backup file(s): ${c.deleted.join(", ")}`)),c.failed.length&&console.log(Qi(`Failed to remove ${c.failed.length} pre-svelte5 backup file(s): ${c.failed.map(l=>`${l.path} (${l.error})`).join(", ")}`))}catch(c){console.log(Fa(`Build failed after migration. Please review the errors above. ${c?.message||""}`))}}s(Fqa,"migrateSvelte5");var NXn=new NI("plugins").addHelp("Custom plugins for Budibase, init, build and verify your components and datasources with this tool.").addSubOption("--init [type]","Init a new plugin project, with a type of either component or datasource.",Pqa).addSubOption("--build","Build your plugin, this will verify and produce a final tarball for your project.",Lqa).addSubOption("--watch","Automatically build any changes to your plugin.",Mqa).addSubOption("--dev","Run a development environment which automatically watches the current directory.",Uqa).addSubOption("--migrate-svelte5","Migrate this plugin to the Svelte 5-compatible Budibase plugin format.",Fqa,[{command:"--yes",help:"Skip confirmation prompts during migration."},{command:"--force",help:"Proceed even if the git working directory is not clean (creates .pre-svelte5 backups during migration, removed on success)."}]);function OXn(){return[Eqt,YQt,lWn,NXn]}s(OXn,"getCommands");var vXn=require("commander");hd();var xXn="3.39.27";async function qqa(){let t=new vXn.Command().addHelpCommand("help",Q9("Help with Budibase commands.")).helpOption(!1).version(xXn);for(let e of OXn())e.configure(t);await t.parseAsync(process.argv)}s(qqa,"init");var Gqa=["exit","SIGINT","SIGUSR1","SIGUSR2","uncaughtException"];Gqa.forEach(t=>{process.on(t,e=>{e&&!isNaN(e)||e&&(console.error(Fa("Failed to run CLI command - please report with the following message:")),console.error(Fa(e)))})});qqa().catch(t=>{console.error("Unexpected error - ",t)});
4470
4470
  /*! Bundled license information:
4471
4471
 
4472
4472
  lodash/lodash.js: