@budibase/backend-core 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
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
attempted value: ${o}
|
|
4
4
|
`+(a!==o?`result of cast: ${a}`:""))}return i}_cast(e,r){let n=e===void 0?e:this.transforms.reduce((i,o)=>o.call(this,i,e,this),e);return n===void 0&&(n=this.getDefault()),n}_validate(e,r={},n){let{sync:i,path:o,from:a=[],originalValue:u=e,strict:c=this.spec.strict,abortEarly:l=this.spec.abortEarly}=r,d=e;c||(d=this._cast(d,Xe({assert:!1},r)));let f={value:d,path:o,options:r,originalValue:u,schema:this,label:this.spec.label,sync:i,from:a},h=[];this._typeError&&h.push(this._typeError),this._whitelistError&&h.push(this._whitelistError),this._blacklistError&&h.push(this._blacklistError),(0,sg.default)({args:f,value:d,path:o,sync:i,tests:h,endEarly:l},m=>{if(m)return void n(m,d);(0,sg.default)({tests:this.tests,args:f,path:o,sync:i,value:d,endEarly:l},n)})}validate(e,r,n){let i=this.resolve(Xe({},r,{value:e}));return typeof n=="function"?i._validate(e,r,n):new Promise((o,a)=>i._validate(e,r,(u,c)=>{u?a(u):o(c)}))}validateSync(e,r){let n=this.resolve(Xe({},r,{value:e})),i;return n._validate(e,Xe({},r,{sync:!0}),(o,a)=>{if(o)throw o;i=a}),i}isValid(e,r){return this.validate(e,r).then(()=>!0,n=>{if(ag.default.isError(n))return!1;throw n})}isValidSync(e,r){try{return this.validateSync(e,r),!0}catch(n){if(ag.default.isError(n))return!1;throw n}}_getDefault(){let e=this.spec.default;return e==null?e:typeof e=="function"?e.call(this):(0,ig.default)(e)}getDefault(e){return this.resolve(e||{})._getDefault()}default(e){return arguments.length===0?this._getDefault():this.clone({default:e})}strict(e=!0){var r=this.clone();return r.spec.strict=e,r}_isPresent(e){return e!=null}defined(e=vn.mixed.defined){return this.test({message:e,name:"defined",exclusive:!0,test(r){return r!==void 0}})}required(e=vn.mixed.required){return this.clone({presence:"required"}).withMutation(r=>r.test({message:e,name:"required",exclusive:!0,test(n){return this.schema._isPresent(n)}}))}notRequired(){var e=this.clone({presence:"optional"});return e.tests=e.tests.filter(r=>r.OPTIONS.name!=="required"),e}nullable(e=!0){var r=this.clone({nullable:e!==!1});return r}transform(e){var r=this.clone();return r.transforms.push(e),r}test(...e){let r;if(e.length===1?typeof e[0]=="function"?r={test:e[0]}:r=e[0]:e.length===2?r={name:e[0],test:e[1]}:r={name:e[0],message:e[1],test:e[2]},r.message===void 0&&(r.message=vn.mixed.default),typeof r.test!="function")throw new TypeError("`test` is a required parameters");let n=this.clone(),i=(0,oa.default)(r),o=r.exclusive||r.name&&n.exclusiveTests[r.name]===!0;if(r.exclusive&&!r.name)throw new TypeError("Exclusive tests must provide a unique `name` identifying the test");return r.name&&(n.exclusiveTests[r.name]=!!r.exclusive),n.tests=n.tests.filter(a=>!(a.OPTIONS.name===r.name&&(o||a.OPTIONS.test===i.OPTIONS.test))),n.tests.push(i),n}when(e,r){!Array.isArray(e)&&typeof e!="string"&&(r=e,e=".");let n=this.clone(),i=(0,Pw.default)(e).map(o=>new vw.default(o));return i.forEach(o=>{o.isSibling&&n.deps.push(o.key)}),n.conditions.push(new xw.default(i,r)),n}typeError(e){var r=this.clone();return r._typeError=(0,oa.default)({message:e,name:"typeError",test(n){return n!==void 0&&!this.schema.isType(n)?this.createError({params:{type:this.schema._type}}):!0}}),r}oneOf(e,r=vn.mixed.oneOf){var n=this.clone();return e.forEach(i=>{n._whitelist.add(i),n._blacklist.delete(i)}),n._whitelistError=(0,oa.default)({message:r,name:"oneOf",test(i){if(i===void 0)return!0;let o=this.schema._whitelist;return o.has(i,this.resolve)?!0:this.createError({params:{values:o.toArray().join(", ")}})}}),n}notOneOf(e,r=vn.mixed.notOneOf){var n=this.clone();return e.forEach(i=>{n._blacklist.add(i),n._whitelist.delete(i)}),n._blacklistError=(0,oa.default)({message:r,name:"notOneOf",test(i){let o=this.schema._blacklist;return o.has(i,this.resolve)?this.createError({params:{values:o.toArray().join(", ")}}):!0}}),n}strip(e=!0){let r=this.clone();return r.spec.strip=e,r}describe(){let e=this.clone(),{label:r,meta:n}=e.spec;return{meta:n,label:r,type:e.type,oneOf:e._whitelist.describe(),notOneOf:e._blacklist.describe(),tests:e.tests.map(o=>({name:o.OPTIONS.name,params:o.OPTIONS.params})).filter((o,a,u)=>u.findIndex(c=>c.name===o.name)===a)}}};aa.default=lt;lt.prototype.__isYupSchema__=!0;for(let t of["validate","validateSync"])lt.prototype[`${t}At`]=function(e,r,n={}){let{parent:i,parentPath:o,schema:a}=(0,Nw.getIn)(this,e,r,n.context);return a[t](i&&i[o],Xe({},n,{parent:i,path:e}))};for(let t of["equals","is"])lt.prototype[t]=lt.prototype.oneOf;for(let t of["not","nope"])lt.prototype[t]=lt.prototype.notOneOf;lt.prototype.optional=lt.prototype.notRequired});var lg=Q(Yi=>{"use strict";Object.defineProperty(Yi,"__esModule",{value:!0});Yi.create=cg;Yi.default=void 0;var Lw=Uw(Bt());function Uw(t){return t&&t.__esModule?t:{default:t}}s(Uw,"_interopRequireDefault");var yl=Lw.default,kw=yl;Yi.default=kw;function cg(){return new yl}s(cg,"create");cg.prototype=yl.prototype});var Nn=Q(ua=>{"use strict";Object.defineProperty(ua,"__esModule",{value:!0});ua.default=void 0;var Mw=s(t=>t==null,"_default");ua.default=Mw});var hg=Q(Ji=>{"use strict";Object.defineProperty(Ji,"__esModule",{value:!0});Ji.create=mg;Ji.default=void 0;var Fw=pg(Bt()),dg=Mt(),fg=pg(Nn());function pg(t){return t&&t.__esModule?t:{default:t}}s(pg,"_interopRequireDefault");function mg(){return new zi}s(mg,"create");var zi=class extends Fw.default{static{s(this,"BooleanSchema")}constructor(){super({type:"boolean"}),this.withMutation(()=>{this.transform(function(e){if(!this.isType(e)){if(/^(true|1)$/i.test(String(e)))return!0;if(/^(false|0)$/i.test(String(e)))return!1}return e})})}_typeCheck(e){return e instanceof Boolean&&(e=e.valueOf()),typeof e=="boolean"}isTrue(e=dg.boolean.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"true"},test(r){return(0,fg.default)(r)||r===!0}})}isFalse(e=dg.boolean.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"false"},test(r){return(0,fg.default)(r)||r===!1}})}};Ji.default=zi;mg.prototype=zi.prototype});var yg=Q(Zi=>{"use strict";Object.defineProperty(Zi,"__esModule",{value:!0});Zi.create=Eg;Zi.default=void 0;var Dt=Mt(),Wt=gg(Nn()),Bw=gg(Bt());function gg(t){return t&&t.__esModule?t:{default:t}}s(gg,"_interopRequireDefault");var Ww=/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i,Gw=/^((https?|ftp):)?\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i,$w=/^(?:[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,Vw=s(t=>(0,Wt.default)(t)||t===t.trim(),"isTrimmed"),qw={}.toString();function Eg(){return new Xi}s(Eg,"create");var Xi=class extends Bw.default{static{s(this,"StringSchema")}constructor(){super({type:"string"}),this.withMutation(()=>{this.transform(function(e){if(this.isType(e)||Array.isArray(e))return e;let r=e!=null&&e.toString?e.toString():e;return r===qw?e:r})})}_typeCheck(e){return e instanceof String&&(e=e.valueOf()),typeof e=="string"}_isPresent(e){return super._isPresent(e)&&!!e.length}length(e,r=Dt.string.length){return this.test({message:r,name:"length",exclusive:!0,params:{length:e},test(n){return(0,Wt.default)(n)||n.length===this.resolve(e)}})}min(e,r=Dt.string.min){return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(n){return(0,Wt.default)(n)||n.length>=this.resolve(e)}})}max(e,r=Dt.string.max){return this.test({name:"max",exclusive:!0,message:r,params:{max:e},test(n){return(0,Wt.default)(n)||n.length<=this.resolve(e)}})}matches(e,r){let n=!1,i,o;return r&&(typeof r=="object"?{excludeEmptyString:n=!1,message:i,name:o}=r:i=r),this.test({name:o||"matches",message:i||Dt.string.matches,params:{regex:e},test:s(a=>(0,Wt.default)(a)||a===""&&n||a.search(e)!==-1,"test")})}email(e=Dt.string.email){return this.matches(Ww,{name:"email",message:e,excludeEmptyString:!0})}url(e=Dt.string.url){return this.matches(Gw,{name:"url",message:e,excludeEmptyString:!0})}uuid(e=Dt.string.uuid){return this.matches($w,{name:"uuid",message:e,excludeEmptyString:!1})}ensure(){return this.default("").transform(e=>e===null?"":e)}trim(e=Dt.string.trim){return this.transform(r=>r!=null?r.trim():r).test({message:e,name:"trim",test:Vw})}lowercase(e=Dt.string.lowercase){return this.transform(r=>(0,Wt.default)(r)?r:r.toLowerCase()).test({message:e,name:"string_case",exclusive:!0,test:s(r=>(0,Wt.default)(r)||r===r.toLowerCase(),"test")})}uppercase(e=Dt.string.uppercase){return this.transform(r=>(0,Wt.default)(r)?r:r.toUpperCase()).test({message:e,name:"string_case",exclusive:!0,test:s(r=>(0,Wt.default)(r)||r===r.toUpperCase(),"test")})}};Zi.default=Xi;Eg.prototype=Xi.prototype});var Ag=Q(ts=>{"use strict";Object.defineProperty(ts,"__esModule",{value:!0});ts.create=Sg;ts.default=void 0;var Kr=Mt(),Qr=Tg(Nn()),Kw=Tg(Bt());function Tg(t){return t&&t.__esModule?t:{default:t}}s(Tg,"_interopRequireDefault");var Qw=s(t=>t!=+t,"isNaN");function Sg(){return new es}s(Sg,"create");var es=class extends Kw.default{static{s(this,"NumberSchema")}constructor(){super({type:"number"}),this.withMutation(()=>{this.transform(function(e){let r=e;if(typeof r=="string"){if(r=r.replace(/\s/g,""),r==="")return NaN;r=+r}return this.isType(r)?r:parseFloat(r)})})}_typeCheck(e){return e instanceof Number&&(e=e.valueOf()),typeof e=="number"&&!Qw(e)}min(e,r=Kr.number.min){return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(n){return(0,Qr.default)(n)||n>=this.resolve(e)}})}max(e,r=Kr.number.max){return this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(n){return(0,Qr.default)(n)||n<=this.resolve(e)}})}lessThan(e,r=Kr.number.lessThan){return this.test({message:r,name:"max",exclusive:!0,params:{less:e},test(n){return(0,Qr.default)(n)||n<this.resolve(e)}})}moreThan(e,r=Kr.number.moreThan){return this.test({message:r,name:"min",exclusive:!0,params:{more:e},test(n){return(0,Qr.default)(n)||n>this.resolve(e)}})}positive(e=Kr.number.positive){return this.moreThan(0,e)}negative(e=Kr.number.negative){return this.lessThan(0,e)}integer(e=Kr.number.integer){return this.test({name:"integer",message:e,test:s(r=>(0,Qr.default)(r)||Number.isInteger(r),"test")})}truncate(){return this.transform(e=>(0,Qr.default)(e)?e:e|0)}round(e){var r,n=["ceil","floor","round","trunc"];if(e=((r=e)==null?void 0:r.toLowerCase())||"round",e==="trunc")return this.truncate();if(n.indexOf(e.toLowerCase())===-1)throw new TypeError("Only valid options for round() are: "+n.join(", "));return this.transform(i=>(0,Qr.default)(i)?i:Math[e](i))}};ts.default=es;Sg.prototype=es.prototype});var _g=Q(Tl=>{"use strict";Object.defineProperty(Tl,"__esModule",{value:!0});Tl.default=Hw;var jw=/^(\d{4}|[+\-]\d{6})(?:-?(\d{2})(?:-?(\d{2}))?)?(?:[ T]?(\d{2}):?(\d{2})(?::?(\d{2})(?:[,\.](\d{1,}))?)?(?:(Z)|([+\-])(\d{2})(?::?(\d{2}))?)?)?$/;function Hw(t){var e=[1,4,5,6,7,10,11],r=0,n,i;if(i=jw.exec(t)){for(var o=0,a;a=e[o];++o)i[a]=+i[a]||0;i[2]=(+i[2]||1)-1,i[3]=+i[3]||1,i[7]=i[7]?String(i[7]).substr(0,3):0,(i[8]===void 0||i[8]==="")&&(i[9]===void 0||i[9]==="")?n=+new Date(i[1],i[2],i[3],i[4],i[5],i[6],i[7]):(i[8]!=="Z"&&i[9]!==void 0&&(r=i[10]*60+i[11],i[9]==="+"&&(r=0-r)),n=Date.UTC(i[1],i[2],i[3],i[4],i[5]+r,i[6],i[7]))}else n=Date.parse?Date.parse(t):NaN;return n}s(Hw,"parseIsoDate")});var wg=Q(rs=>{"use strict";Object.defineProperty(rs,"__esModule",{value:!0});rs.create=Al;rs.default=void 0;var Yw=ca(_g()),Og=Mt(),Ig=ca(Nn()),zw=ca(qr()),Jw=ca(Bt());function ca(t){return t&&t.__esModule?t:{default:t}}s(ca,"_interopRequireDefault");var Sl=new Date(""),Xw=s(t=>Object.prototype.toString.call(t)==="[object Date]","isDate");function Al(){return new Pn}s(Al,"create");var Pn=class extends Jw.default{static{s(this,"DateSchema")}constructor(){super({type:"date"}),this.withMutation(()=>{this.transform(function(e){return this.isType(e)?e:(e=(0,Yw.default)(e),isNaN(e)?Sl:new Date(e))})})}_typeCheck(e){return Xw(e)&&!isNaN(e.getTime())}prepareParam(e,r){let n;if(zw.default.isRef(e))n=e;else{let i=this.cast(e);if(!this._typeCheck(i))throw new TypeError(`\`${r}\` must be a Date or a value that can be \`cast()\` to a Date`);n=i}return n}min(e,r=Og.date.min){let n=this.prepareParam(e,"min");return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(i){return(0,Ig.default)(i)||i>=this.resolve(n)}})}max(e,r=Og.date.max){var n=this.prepareParam(e,"max");return this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(i){return(0,Ig.default)(i)||i<=this.resolve(n)}})}};rs.default=Pn;Pn.INVALID_DATE=Sl;Al.prototype=Pn.prototype;Al.INVALID_DATE=Sl});var Cg=Q((EW,_l)=>{"use strict";_l.exports=function(t){return Rg(Zw(t),t)};_l.exports.array=Rg;function Rg(t,e){var r=t.length,n=new Array(r),i={},o=r,a=eR(e),u=tR(t);for(e.forEach(function(l){if(!u.has(l[0])||!u.has(l[1]))throw new Error("Unknown node. There is an unknown node in the supplied edges.")});o--;)i[o]||c(t[o],o,new Set);return n;function c(l,d,f){if(f.has(l)){var h;try{h=", node was:"+JSON.stringify(l)}catch{h=""}throw new Error("Cyclic dependency"+h)}if(!u.has(l))throw new Error("Found unknown node. Make sure to provided all involved nodes. Unknown node: "+JSON.stringify(l));if(!i[d]){i[d]=!0;var m=a.get(l)||new Set;if(m=Array.from(m),d=m.length){f.add(l);do{var y=m[--d];c(y,u.get(y),f)}while(d);f.delete(l)}n[--r]=l}}}s(Rg,"toposort");function Zw(t){for(var e=new Set,r=0,n=t.length;r<n;r++){var i=t[r];e.add(i[0]),e.add(i[1])}return Array.from(e)}s(Zw,"uniqueNodes");function eR(t){for(var e=new Map,r=0,n=t.length;r<n;r++){var i=t[r];e.has(i[0])||e.set(i[0],new Set),e.has(i[1])||e.set(i[1],new Set),e.get(i[0]).add(i[1])}return e}s(eR,"makeOutgoingEdges");function tR(t){for(var e=new Map,r=0,n=t.length;r<n;r++)e.set(t[r],r);return e}s(tR,"makeNodesHash")});var Dg=Q(Ol=>{"use strict";Object.defineProperty(Ol,"__esModule",{value:!0});Ol.default=aR;var rR=la(require("lodash/has")),nR=la(Cg()),iR=Ki(),sR=la(qr()),oR=la(xn());function la(t){return t&&t.__esModule?t:{default:t}}s(la,"_interopRequireDefault");function aR(t,e=[]){let r=[],n=[];function i(o,a){var u=(0,iR.split)(o)[0];~n.indexOf(u)||n.push(u),~e.indexOf(`${a}-${u}`)||r.push([a,u])}s(i,"addNode");for(let o in t)if((0,rR.default)(t,o)){let a=t[o];~n.indexOf(o)||n.push(o),sR.default.isRef(a)&&a.isSibling?i(a.path,o):(0,oR.default)(a)&&"deps"in a&&a.deps.forEach(u=>i(u,o))}return nR.default.array(n,r).reverse()}s(aR,"sortFields")});var xg=Q(Il=>{"use strict";Object.defineProperty(Il,"__esModule",{value:!0});Il.default=uR;function bg(t,e){let r=1/0;return t.some((n,i)=>{var o;if(((o=e.path)==null?void 0:o.indexOf(n))!==-1)return r=i,!0}),r}s(bg,"findIndex");function uR(t){return(e,r)=>bg(t,e)-bg(t,r)}s(uR,"sortByKeyOrder")});var Mg=Q(is=>{"use strict";Object.defineProperty(is,"__esModule",{value:!0});is.create=kg;is.default=void 0;var vg=bt(require("lodash/has")),Ng=bt(require("lodash/snakeCase")),cR=bt(require("lodash/camelCase")),lR=bt(require("lodash/mapKeys")),dR=bt(require("lodash/mapValues")),fR=Ki(),Pg=Mt(),pR=bt(Dg()),Ug=bt(xg()),mR=bt(ta()),hR=bt($r()),wl=bt(Bt());function bt(t){return t&&t.__esModule?t:{default:t}}s(bt,"_interopRequireDefault");function Ln(){return Ln=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},Ln.apply(this,arguments)}s(Ln,"_extends");var Lg=s(t=>Object.prototype.toString.call(t)==="[object Object]","isObject");function gR(t,e){let r=Object.keys(t.fields);return Object.keys(e).filter(n=>r.indexOf(n)===-1)}s(gR,"unknown");var ER=(0,Ug.default)([]),ns=class extends wl.default{static{s(this,"ObjectSchema")}constructor(e){super({type:"object"}),this.fields=Object.create(null),this._sortErrors=ER,this._nodes=[],this._excludedEdges=[],this.withMutation(()=>{this.transform(s(function(n){if(typeof n=="string")try{n=JSON.parse(n)}catch{n=null}return this.isType(n)?n:null},"coerce")),e&&this.shape(e)})}_typeCheck(e){return Lg(e)||typeof e=="function"}_cast(e,r={}){var n;let i=super._cast(e,r);if(i===void 0)return this.getDefault();if(!this._typeCheck(i))return i;let o=this.fields,a=(n=r.stripUnknown)!=null?n:this.spec.noUnknown,u=this._nodes.concat(Object.keys(i).filter(f=>this._nodes.indexOf(f)===-1)),c={},l=Ln({},r,{parent:c,__validating:r.__validating||!1}),d=!1;for(let f of u){let h=o[f],m=(0,vg.default)(i,f);if(h){let y,E=i[f];l.path=(r.path?`${r.path}.`:"")+f,h=h.resolve({value:E,context:r.context,parent:c});let p="spec"in h?h.spec:void 0,T=p?.strict;if(p?.strip){d=d||f in i;continue}y=!r.__validating||!T?h.cast(i[f],l):i[f],y!==void 0&&(c[f]=y)}else m&&!a&&(c[f]=i[f]);c[f]!==i[f]&&(d=!0)}return d?c:i}_validate(e,r={},n){let i=[],{sync:o,from:a=[],originalValue:u=e,abortEarly:c=this.spec.abortEarly,recursive:l=this.spec.recursive}=r;a=[{schema:this,value:u},...a],r.__validating=!0,r.originalValue=u,r.from=a,super._validate(e,r,(d,f)=>{if(d){if(!hR.default.isError(d)||c)return void n(d,f);i.push(d)}if(!l||!Lg(f)){n(i[0]||null,f);return}u=u||f;let h=this._nodes.map(m=>(y,E)=>{let p=m.indexOf(".")===-1?(r.path?`${r.path}.`:"")+m:`${r.path||""}["${m}"]`,T=this.fields[m];if(T&&"validate"in T){T.validate(f[m],Ln({},r,{path:p,from:a,strict:!0,parent:f,originalValue:u[m]}),E);return}E(null)});(0,mR.default)({sync:o,tests:h,value:f,errors:i,endEarly:c,sort:this._sortErrors,path:r.path},n)})}clone(e){let r=super.clone(e);return r.fields=Ln({},this.fields),r._nodes=this._nodes,r._excludedEdges=this._excludedEdges,r._sortErrors=this._sortErrors,r}concat(e){let r=super.concat(e),n=r.fields;for(let[i,o]of Object.entries(this.fields)){let a=n[i];a===void 0?n[i]=o:a instanceof wl.default&&o instanceof wl.default&&(n[i]=o.concat(a))}return r.withMutation(()=>r.shape(n))}getDefaultFromShape(){let e={};return this._nodes.forEach(r=>{let n=this.fields[r];e[r]="default"in n?n.getDefault():void 0}),e}_getDefault(){if("default"in this.spec)return super._getDefault();if(this._nodes.length)return this.getDefaultFromShape()}shape(e,r=[]){let n=this.clone(),i=Object.assign(n.fields,e);if(n.fields=i,n._sortErrors=(0,Ug.default)(Object.keys(i)),r.length){Array.isArray(r[0])||(r=[r]);let o=r.map(([a,u])=>`${a}-${u}`);n._excludedEdges=n._excludedEdges.concat(o)}return n._nodes=(0,pR.default)(i,n._excludedEdges),n}pick(e){let r={};for(let n of e)this.fields[n]&&(r[n]=this.fields[n]);return this.clone().withMutation(n=>(n.fields={},n.shape(r)))}omit(e){let r=this.clone(),n=r.fields;r.fields={};for(let i of e)delete n[i];return r.withMutation(()=>r.shape(n))}from(e,r,n){let i=(0,fR.getter)(e,!0);return this.transform(o=>{if(o==null)return o;let a=o;return(0,vg.default)(o,e)&&(a=Ln({},o),n||delete a[e],a[r]=i(o)),a})}noUnknown(e=!0,r=Pg.object.noUnknown){typeof e=="string"&&(r=e,e=!0);let n=this.test({name:"noUnknown",exclusive:!0,message:r,test(i){if(i==null)return!0;let o=gR(this.schema,i);return!e||o.length===0||this.createError({params:{unknown:o.join(", ")}})}});return n.spec.noUnknown=e,n}unknown(e=!0,r=Pg.object.noUnknown){return this.noUnknown(!e,r)}transformKeys(e){return this.transform(r=>r&&(0,lR.default)(r,(n,i)=>e(i)))}camelCase(){return this.transformKeys(cR.default)}snakeCase(){return this.transformKeys(Ng.default)}constantCase(){return this.transformKeys(e=>(0,Ng.default)(e).toUpperCase())}describe(){let e=super.describe();return e.fields=(0,dR.default)(this.fields,r=>r.describe()),e}};is.default=ns;function kg(t){return new ns(t)}s(kg,"create");kg.prototype=ns.prototype});var Bg=Q(os=>{"use strict";Object.defineProperty(os,"__esModule",{value:!0});os.create=Fg;os.default=void 0;var Rl=Un(Nn()),yR=Un(xn()),TR=Un(qi()),Cl=Mt(),SR=Un(ta()),AR=Un($r()),_R=Un(Bt());function Un(t){return t&&t.__esModule?t:{default:t}}s(Un,"_interopRequireDefault");function da(){return da=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},da.apply(this,arguments)}s(da,"_extends");function Fg(t){return new ss(t)}s(Fg,"create");var ss=class extends _R.default{static{s(this,"ArraySchema")}constructor(e){super({type:"array"}),this.innerType=e,this.withMutation(()=>{this.transform(function(r){if(typeof r=="string")try{r=JSON.parse(r)}catch{r=null}return this.isType(r)?r:null})})}_typeCheck(e){return Array.isArray(e)}get _subType(){return this.innerType}_cast(e,r){let n=super._cast(e,r);if(!this._typeCheck(n)||!this.innerType)return n;let i=!1,o=n.map((a,u)=>{let c=this.innerType.cast(a,da({},r,{path:`${r.path||""}[${u}]`}));return c!==a&&(i=!0),c});return i?o:n}_validate(e,r={},n){var i,o;let a=[],u=r.sync,c=r.path,l=this.innerType,d=(i=r.abortEarly)!=null?i:this.spec.abortEarly,f=(o=r.recursive)!=null?o:this.spec.recursive,h=r.originalValue!=null?r.originalValue:e;super._validate(e,r,(m,y)=>{if(m){if(!AR.default.isError(m)||d)return void n(m,y);a.push(m)}if(!f||!l||!this._typeCheck(y)){n(a[0]||null,y);return}h=h||y;let E=new Array(y.length);for(let p=0;p<y.length;p++){let T=y[p],A=`${r.path||""}[${p}]`,_=da({},r,{path:A,strict:!0,parent:y,index:p,originalValue:h[p]});E[p]=(I,O)=>l.validate(T,_,O)}(0,SR.default)({sync:u,path:c,value:y,errors:a,endEarly:d,tests:E},n)})}clone(e){let r=super.clone(e);return r.innerType=this.innerType,r}concat(e){let r=super.concat(e);return r.innerType=this.innerType,e.innerType&&(r.innerType=r.innerType?r.innerType.concat(e.innerType):e.innerType),r}of(e){let r=this.clone();if(!(0,yR.default)(e))throw new TypeError("`array.of()` sub-schema must be a valid yup schema not: "+(0,TR.default)(e));return r.innerType=e,r}length(e,r=Cl.array.length){return this.test({message:r,name:"length",exclusive:!0,params:{length:e},test(n){return(0,Rl.default)(n)||n.length===this.resolve(e)}})}min(e,r){return r=r||Cl.array.min,this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(n){return(0,Rl.default)(n)||n.length>=this.resolve(e)}})}max(e,r){return r=r||Cl.array.max,this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(n){return(0,Rl.default)(n)||n.length<=this.resolve(e)}})}ensure(){return this.default(()=>[]).transform((e,r)=>this._typeCheck(e)?e:r==null?[]:[].concat(r))}compact(e){let r=e?(n,i,o)=>!e(n,i,o):n=>!!n;return this.transform(n=>n!=null?n.filter(r):n)}describe(){let e=super.describe();return this.innerType&&(e.innerType=this.innerType.describe()),e}nullable(e=!0){return super.nullable(e)}defined(){return super.defined()}required(e){return super.required(e)}};os.default=ss;Fg.prototype=ss.prototype});var Wg=Q(as=>{"use strict";Object.defineProperty(as,"__esModule",{value:!0});as.create=wR;as.default=void 0;var OR=IR(xn());function IR(t){return t&&t.__esModule?t:{default:t}}s(IR,"_interopRequireDefault");function wR(t){return new fa(t)}s(wR,"create");var fa=class{static{s(this,"Lazy")}constructor(e){this.type="lazy",this.__isYupSchema__=!0,this._resolve=(r,n={})=>{let i=this.builder(r,n);if(!(0,OR.default)(i))throw new TypeError("lazy() functions must return a valid schema");return i.resolve(n)},this.builder=e}resolve(e){return this._resolve(e.value,e)}cast(e,r){return this._resolve(e,r).cast(e,r)}validate(e,r,n){return this._resolve(e,r).validate(e,r,n)}validateSync(e,r){return this._resolve(e,r).validateSync(e,r)}validateAt(e,r,n){return this._resolve(r,n).validateAt(e,r,n)}validateSyncAt(e,r,n){return this._resolve(r,n).validateSyncAt(e,r,n)}describe(){return null}isValid(e,r){return this._resolve(e,r).isValid(e,r)}isValidSync(e,r){return this._resolve(e,r).isValidSync(e,r)}},RR=fa;as.default=RR});var Gg=Q(Dl=>{"use strict";Object.defineProperty(Dl,"__esModule",{value:!0});Dl.default=bR;var CR=DR(Mt());function DR(t){return t&&t.__esModule?t:{default:t}}s(DR,"_interopRequireDefault");function bR(t){Object.keys(t).forEach(e=>{Object.keys(t[e]).forEach(r=>{CR.default[e][r]=t[e][r]})})}s(bR,"setLocale")});var xl=Q(ie=>{"use strict";Object.defineProperty(ie,"__esModule",{value:!0});ie.addMethod=kR;Object.defineProperty(ie,"MixedSchema",{enumerable:!0,get:s(function(){return $g.default},"get")});Object.defineProperty(ie,"mixed",{enumerable:!0,get:s(function(){return $g.create},"get")});Object.defineProperty(ie,"BooleanSchema",{enumerable:!0,get:s(function(){return bl.default},"get")});Object.defineProperty(ie,"bool",{enumerable:!0,get:s(function(){return bl.create},"get")});Object.defineProperty(ie,"boolean",{enumerable:!0,get:s(function(){return bl.create},"get")});Object.defineProperty(ie,"StringSchema",{enumerable:!0,get:s(function(){return Vg.default},"get")});Object.defineProperty(ie,"string",{enumerable:!0,get:s(function(){return Vg.create},"get")});Object.defineProperty(ie,"NumberSchema",{enumerable:!0,get:s(function(){return qg.default},"get")});Object.defineProperty(ie,"number",{enumerable:!0,get:s(function(){return qg.create},"get")});Object.defineProperty(ie,"DateSchema",{enumerable:!0,get:s(function(){return Kg.default},"get")});Object.defineProperty(ie,"date",{enumerable:!0,get:s(function(){return Kg.create},"get")});Object.defineProperty(ie,"ObjectSchema",{enumerable:!0,get:s(function(){return Qg.default},"get")});Object.defineProperty(ie,"object",{enumerable:!0,get:s(function(){return Qg.create},"get")});Object.defineProperty(ie,"ArraySchema",{enumerable:!0,get:s(function(){return jg.default},"get")});Object.defineProperty(ie,"array",{enumerable:!0,get:s(function(){return jg.create},"get")});Object.defineProperty(ie,"ref",{enumerable:!0,get:s(function(){return xR.create},"get")});Object.defineProperty(ie,"lazy",{enumerable:!0,get:s(function(){return vR.create},"get")});Object.defineProperty(ie,"ValidationError",{enumerable:!0,get:s(function(){return NR.default},"get")});Object.defineProperty(ie,"reach",{enumerable:!0,get:s(function(){return PR.default},"get")});Object.defineProperty(ie,"isSchema",{enumerable:!0,get:s(function(){return Hg.default},"get")});Object.defineProperty(ie,"setLocale",{enumerable:!0,get:s(function(){return LR.default},"get")});Object.defineProperty(ie,"BaseSchema",{enumerable:!0,get:s(function(){return UR.default},"get")});var $g=jr(lg()),bl=jr(hg()),Vg=jr(yg()),qg=jr(Ag()),Kg=jr(wg()),Qg=jr(Mg()),jg=jr(Bg()),xR=qr(),vR=Wg(),NR=us($r()),PR=us(gl()),Hg=us(xn()),LR=us(Gg()),UR=us(Bt());function us(t){return t&&t.__esModule?t:{default:t}}s(us,"_interopRequireDefault");function Yg(){if(typeof WeakMap!="function")return null;var t=new WeakMap;return Yg=s(function(){return t},"_getRequireWildcardCache"),t}s(Yg,"_getRequireWildcardCache");function jr(t){if(t&&t.__esModule)return t;if(t===null||typeof t!="object"&&typeof t!="function")return{default:t};var e=Yg();if(e&&e.has(t))return e.get(t);var r={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in t)if(Object.prototype.hasOwnProperty.call(t,i)){var o=n?Object.getOwnPropertyDescriptor(t,i):null;o&&(o.get||o.set)?Object.defineProperty(r,i,o):r[i]=t[i]}return r.default=t,e&&e.set(t,r),r}s(jr,"_interopRequireWildcard");function kR(t,e,r){if(!t||!(0,Hg.default)(t.prototype))throw new TypeError("You must provide a yup schema constructor function");if(typeof e!="string")throw new TypeError("A Method name must be provided");if(typeof r!="function")throw new TypeError("Method function must be provided");t.prototype[e]=r}s(kR,"addMethod")});var zg=Q(Nl=>{"use strict";Object.defineProperty(Nl,"__esModule",{value:!0});var vl=Pl();Nl.default=()=>{(0,vl.registerOptionPreset)("npm-node-cron",{presetId:"npm-node-cron",useSeconds:!0,useYears:!1,useAliases:!0,useBlankDay:!1,allowOnlyOneBlankDayField:!1,mustHaveBlankDayField:!1,useLastDayOfMonth:!1,useLastDayOfWeek:!1,useNearestWeekday:!1,useNthWeekdayOfMonth:!1,seconds:{minValue:0,maxValue:59},minutes:{minValue:0,maxValue:59},hours:{minValue:0,maxValue:23},daysOfMonth:{minValue:1,maxValue:31},months:{minValue:0,maxValue:11},daysOfWeek:{minValue:0,maxValue:6},years:{minValue:1970,maxValue:2099}}),(0,vl.registerOptionPreset)("aws-cloud-watch",{presetId:"aws-cloud-watch",useSeconds:!1,useYears:!0,useAliases:!0,useBlankDay:!0,allowOnlyOneBlankDayField:!0,mustHaveBlankDayField:!0,useLastDayOfMonth:!0,useLastDayOfWeek:!0,useNearestWeekday:!0,useNthWeekdayOfMonth:!0,seconds:{minValue:0,maxValue:59},minutes:{minValue:0,maxValue:59},hours:{minValue:0,maxValue:23},daysOfMonth:{minValue:1,maxValue:31},months:{minValue:1,maxValue:12},daysOfWeek:{minValue:1,maxValue:7},years:{minValue:1970,maxValue:2199}}),(0,vl.registerOptionPreset)("npm-cron-schedule",{presetId:"npm-cron-schedule",useSeconds:!0,useYears:!1,useAliases:!0,useBlankDay:!1,allowOnlyOneBlankDayField:!1,mustHaveBlankDayField:!1,useLastDayOfMonth:!1,useLastDayOfWeek:!1,useNearestWeekday:!1,useNthWeekdayOfMonth:!1,seconds:{minValue:0,maxValue:59},minutes:{minValue:0,maxValue:59},hours:{minValue:0,maxValue:23},daysOfMonth:{minValue:1,maxValue:31},months:{minValue:1,maxValue:12},daysOfWeek:{minValue:0,maxValue:7},years:{minValue:1970,maxValue:2099}})}});var Pl=Q(Ae=>{"use strict";var MR=Ae&&Ae.__createBinding||(Object.create?(function(t,e,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(e,r);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:s(function(){return e[r]},"get")}),Object.defineProperty(t,n,i)}):(function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]})),FR=Ae&&Ae.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),BR=Ae&&Ae.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&MR(e,t,r);return FR(e,t),e},WR=Ae&&Ae.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Ae,"__esModule",{value:!0});Ae.validateOptions=Ae.registerOptionPreset=Ae.getOptionPresets=Ae.getOptionPreset=void 0;var x=BR(xl());xl();var cs=ut(),GR=WR(zg());ct();var Hr={default:{presetId:"default",useSeconds:!1,useYears:!1,useAliases:!1,useBlankDay:!1,allowOnlyOneBlankDayField:!1,mustHaveBlankDayField:!1,useLastDayOfMonth:!1,useLastDayOfWeek:!1,useNearestWeekday:!1,useNthWeekdayOfMonth:!1,seconds:{minValue:0,maxValue:59},minutes:{minValue:0,maxValue:59},hours:{minValue:0,maxValue:23},daysOfMonth:{minValue:0,maxValue:31},months:{minValue:0,maxValue:12},daysOfWeek:{minValue:0,maxValue:7},years:{minValue:1970,maxValue:2099}}},Jg=x.object({presetId:x.string().required(),useSeconds:x.boolean().required(),useYears:x.boolean().required(),useAliases:x.boolean(),useBlankDay:x.boolean().required(),allowOnlyOneBlankDayField:x.boolean().required(),mustHaveBlankDayField:x.boolean(),useLastDayOfMonth:x.boolean(),useLastDayOfWeek:x.boolean(),useNearestWeekday:x.boolean(),useNthWeekdayOfMonth:x.boolean(),seconds:x.object({minValue:x.number().min(0).required(),maxValue:x.number().min(0).required(),lowerLimit:x.number().min(0),upperLimit:x.number().min(0)}).required(),minutes:x.object({minValue:x.number().min(0).required(),maxValue:x.number().min(0).required(),lowerLimit:x.number().min(0),upperLimit:x.number().min(0)}).required(),hours:x.object({minValue:x.number().min(0).required(),maxValue:x.number().min(0).required(),lowerLimit:x.number().min(0),upperLimit:x.number().min(0)}).required(),daysOfMonth:x.object({minValue:x.number().min(0).required(),maxValue:x.number().min(0).required(),lowerLimit:x.number().min(0),upperLimit:x.number().min(0)}).required(),months:x.object({minValue:x.number().min(0).required(),maxValue:x.number().min(0).required(),lowerLimit:x.number().min(0),upperLimit:x.number().min(0)}).required(),daysOfWeek:x.object({minValue:x.number().min(0).required(),maxValue:x.number().min(0).required(),lowerLimit:x.number().min(0),upperLimit:x.number().min(0)}).required(),years:x.object({minValue:x.number().min(0).required(),maxValue:x.number().min(0).required(),lowerLimit:x.number().min(0),upperLimit:x.number().min(0)}).required()}).required(),$R=s(t=>Hr[t]?(0,cs.valid)(Hr[t]):(0,cs.err)(`Option preset '${t}' not found.`),"getOptionPreset");Ae.getOptionPreset=$R;var VR=s(()=>Hr,"getOptionPresets");Ae.getOptionPresets=VR;var qR=s((t,e)=>{Hr[t]=Jg.validateSync(e,{strict:!1,abortEarly:!1,stripUnknown:!0,recursive:!0})},"registerOptionPreset");Ae.registerOptionPreset=qR;var KR=s(t=>{var e,r,n,i,o,a,u,c,l,d,f,h,m,y,E,p,T,A,_,I;try{(0,GR.default)();let O;if(t.preset)if(typeof t.preset=="string"){if(!Hr[t.preset])return(0,cs.err)([`Option preset ${t.preset} does not exist.`]);O=Hr[t.preset]}else O=t.preset;else O=Hr.default;let C=Object.assign(Object.assign({presetId:O.presetId,preset:O},{useSeconds:O.useSeconds,useYears:O.useYears,useAliases:(e=O.useAliases)!==null&&e!==void 0?e:!1,useBlankDay:O.useBlankDay,allowOnlyOneBlankDayField:O.allowOnlyOneBlankDayField,mustHaveBlankDayField:(r=O.mustHaveBlankDayField)!==null&&r!==void 0?r:!1,useLastDayOfMonth:(n=O.useLastDayOfMonth)!==null&&n!==void 0?n:!1,useLastDayOfWeek:(i=O.useLastDayOfWeek)!==null&&i!==void 0?i:!1,useNearestWeekday:(o=O.useNearestWeekday)!==null&&o!==void 0?o:!1,useNthWeekdayOfMonth:(a=O.useNthWeekdayOfMonth)!==null&&a!==void 0?a:!1,seconds:{lowerLimit:(u=O.seconds.lowerLimit)!==null&&u!==void 0?u:O.seconds.minValue,upperLimit:(c=O.seconds.upperLimit)!==null&&c!==void 0?c:O.seconds.maxValue},minutes:{lowerLimit:(l=O.minutes.lowerLimit)!==null&&l!==void 0?l:O.minutes.minValue,upperLimit:(d=O.minutes.upperLimit)!==null&&d!==void 0?d:O.minutes.maxValue},hours:{lowerLimit:(f=O.hours.lowerLimit)!==null&&f!==void 0?f:O.hours.minValue,upperLimit:(h=O.hours.upperLimit)!==null&&h!==void 0?h:O.hours.maxValue},daysOfMonth:{lowerLimit:(m=O.daysOfMonth.lowerLimit)!==null&&m!==void 0?m:O.daysOfMonth.minValue,upperLimit:(y=O.daysOfMonth.upperLimit)!==null&&y!==void 0?y:O.daysOfMonth.maxValue},months:{lowerLimit:(E=O.months.lowerLimit)!==null&&E!==void 0?E:O.months.minValue,upperLimit:(p=O.months.upperLimit)!==null&&p!==void 0?p:O.months.maxValue},daysOfWeek:{lowerLimit:(T=O.daysOfWeek.lowerLimit)!==null&&T!==void 0?T:O.daysOfWeek.minValue,upperLimit:(A=O.daysOfWeek.upperLimit)!==null&&A!==void 0?A:O.daysOfWeek.maxValue},years:{lowerLimit:(_=O.years.lowerLimit)!==null&&_!==void 0?_:O.years.minValue,upperLimit:(I=O.years.upperLimit)!==null&&I!==void 0?I:O.years.maxValue}}),t.override),w=x.object({presetId:x.string().required(),preset:Jg.required(),useSeconds:x.boolean().required(),useYears:x.boolean().required(),useAliases:x.boolean(),useBlankDay:x.boolean().required(),allowOnlyOneBlankDayField:x.boolean().required(),mustHaveBlankDayField:x.boolean(),useLastDayOfMonth:x.boolean(),useLastDayOfWeek:x.boolean(),useNearestWeekday:x.boolean(),useNthWeekdayOfMonth:x.boolean(),seconds:x.object({lowerLimit:x.number().min(O.seconds.minValue).max(O.seconds.maxValue),upperLimit:x.number().min(O.seconds.minValue).max(O.seconds.maxValue)}).required(),minutes:x.object({lowerLimit:x.number().min(O.minutes.minValue).max(O.minutes.maxValue),upperLimit:x.number().min(O.minutes.minValue).max(O.minutes.maxValue)}).required(),hours:x.object({lowerLimit:x.number().min(O.hours.minValue).max(O.hours.maxValue),upperLimit:x.number().min(O.hours.minValue).max(O.hours.maxValue)}).required(),daysOfMonth:x.object({lowerLimit:x.number().min(O.daysOfMonth.minValue).max(O.daysOfMonth.maxValue),upperLimit:x.number().min(O.daysOfMonth.minValue).max(O.daysOfMonth.maxValue)}).required(),months:x.object({lowerLimit:x.number().min(O.months.minValue).max(O.months.maxValue),upperLimit:x.number().min(O.months.minValue).max(O.months.maxValue)}).required(),daysOfWeek:x.object({lowerLimit:x.number().min(O.daysOfWeek.minValue).max(O.daysOfWeek.maxValue),upperLimit:x.number().min(O.daysOfWeek.minValue).max(O.daysOfWeek.maxValue)}).required(),years:x.object({lowerLimit:x.number().min(O.years.minValue).max(O.years.maxValue),upperLimit:x.number().min(O.years.minValue).max(O.years.maxValue)}).required()}).required().validateSync(C,{strict:!1,abortEarly:!1,stripUnknown:!0,recursive:!0});return(0,cs.valid)(w)}catch(O){return(0,cs.err)(O.errors)}},"validateOptions");Ae.validateOptions=KR});var Ct=Q((ls,Ul)=>{"use strict";var zr=ls&&ls.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(ls,"__esModule",{value:!0});var Yr=ut(),QR=zr(Rh()),jR=zr(Ch()),HR=zr(Dh()),YR=zr(bh()),zR=zr(xh()),JR=zr(vh()),XR=zr(Nh()),ZR=Pl();ct();var eC=s((t,e)=>{let r=t.trim().split(" ");if(e.useSeconds&&e.useYears&&r.length!==7)return(0,Yr.err)(`Expected 7 values, but got ${r.length}.`);if((e.useSeconds&&!e.useYears||e.useYears&&!e.useSeconds)&&r.length!==6)return(0,Yr.err)(`Expected 6 values, but got ${r.length}.`);if(!e.useSeconds&&!e.useYears&&r.length!==5)return(0,Yr.err)(`Expected 5 values, but got ${r.length}.`);let n={seconds:e.useSeconds?r[0]:void 0,minutes:r[e.useSeconds?1:0],hours:r[e.useSeconds?2:1],daysOfMonth:r[e.useSeconds?3:2],months:r[e.useSeconds?4:3],daysOfWeek:r[e.useSeconds?5:4],years:e.useYears?r[e.useSeconds?6:5]:void 0};return(0,Yr.valid)(n)},"splitCronString"),Ll=s((t,e={})=>{let r=(0,ZR.validateOptions)(e);if(r.isError())return r;let n=r.getValue(),i=eC(t,n);if(i.isError())return(0,Yr.err)([`${i.getError()} (Input cron: '${t}')`]);let o=i.getValue(),a=[];if(n.useSeconds&&a.push((0,QR.default)(o,n)),a.push((0,jR.default)(o,n)),a.push((0,HR.default)(o,n)),a.push((0,YR.default)(o,n)),a.push((0,zR.default)(o,n)),a.push((0,JR.default)(o,n)),n.useYears&&a.push((0,XR.default)(o,n)),a.every(c=>c.isValid()))return(0,Yr.valid)(o);let u=[];return a.forEach(c=>{c.isError()&&c.getError().forEach(l=>{u.push(l)})}),u.forEach((c,l)=>{u[l]=`${c} (Input cron: '${t}')`}),(0,Yr.err)(u)},"cron");ls.default=Ll;Ul.exports=Ll;Ul.exports.default=Ll});var Cy=Q(Qe=>{"use strict";Object.defineProperty(Qe,"__esModule",{value:!0});var $t=class extends Error{static{s(this,"LuxonError")}},Kl=class extends $t{static{s(this,"InvalidDateTimeError")}constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}},Ql=class extends $t{static{s(this,"InvalidIntervalError")}constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}},jl=class extends $t{static{s(this,"InvalidDurationError")}constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}},pr=class extends $t{static{s(this,"ConflictingSpecificationError")}},Sa=class extends $t{static{s(this,"InvalidUnitError")}constructor(e){super(`Invalid unit ${e}`)}},_e=class extends $t{static{s(this,"InvalidArgumentError")}},xt=class extends $t{static{s(this,"ZoneIsAbstractError")}constructor(){super("Zone is an abstract class")}},N="numeric",pt="short",qe="long",Aa={year:N,month:N,day:N},DE={year:N,month:pt,day:N},tC={year:N,month:pt,day:N,weekday:pt},bE={year:N,month:qe,day:N},xE={year:N,month:qe,day:N,weekday:qe},vE={hour:N,minute:N},NE={hour:N,minute:N,second:N},PE={hour:N,minute:N,second:N,timeZoneName:pt},LE={hour:N,minute:N,second:N,timeZoneName:qe},UE={hour:N,minute:N,hourCycle:"h23"},kE={hour:N,minute:N,second:N,hourCycle:"h23"},ME={hour:N,minute:N,second:N,hourCycle:"h23",timeZoneName:pt},FE={hour:N,minute:N,second:N,hourCycle:"h23",timeZoneName:qe},BE={year:N,month:N,day:N,hour:N,minute:N},WE={year:N,month:N,day:N,hour:N,minute:N,second:N},GE={year:N,month:pt,day:N,hour:N,minute:N},$E={year:N,month:pt,day:N,hour:N,minute:N,second:N},rC={year:N,month:pt,day:N,weekday:pt,hour:N,minute:N},VE={year:N,month:qe,day:N,hour:N,minute:N,timeZoneName:pt},qE={year:N,month:qe,day:N,hour:N,minute:N,second:N,timeZoneName:pt},KE={year:N,month:qe,day:N,weekday:qe,hour:N,minute:N,timeZoneName:qe},QE={year:N,month:qe,day:N,weekday:qe,hour:N,minute:N,second:N,timeZoneName:qe},hr=class{static{s(this,"Zone")}get type(){throw new xt}get name(){throw new xt}get ianaName(){return this.name}get isUniversal(){throw new xt}offsetName(e,r){throw new xt}formatOffset(e,r){throw new xt}offset(e){throw new xt}equals(e){throw new xt}get isValid(){throw new xt}},kl=null,gs=class t extends hr{static{s(this,"SystemZone")}static get instance(){return kl===null&&(kl=new t),kl}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:r,locale:n}){return ny(e,r,n)}formatOffset(e,r){return hs(this.offset(e),r)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}},Hl=new Map;function nC(t){let e=Hl.get(t);return e===void 0&&(e=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:t,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"}),Hl.set(t,e)),e}s(nC,"makeDTF");var iC={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function sC(t,e){let r=t.format(e).replace(/\u200E/g,""),n=/(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(r),[,i,o,a,u,c,l,d]=n;return[a,i,o,u,c,l,d]}s(sC,"hackyOffset");function oC(t,e){let r=t.formatToParts(e),n=[];for(let i=0;i<r.length;i++){let{type:o,value:a}=r[i],u=iC[o];o==="era"?n[u]=a:H(u)||(n[u]=parseInt(a,10))}return n}s(oC,"partsOffset");var Ml=new Map,Vt=class t extends hr{static{s(this,"IANAZone")}static create(e){let r=Ml.get(e);return r===void 0&&Ml.set(e,r=new t(e)),r}static resetCache(){Ml.clear(),Hl.clear()}static isValidSpecifier(e){return this.isValidZone(e)}static isValidZone(e){if(!e)return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),!0}catch{return!1}}constructor(e){super(),this.zoneName=e,this.valid=t.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:r,locale:n}){return ny(e,r,n,this.name)}formatOffset(e,r){return hs(this.offset(e),r)}offset(e){if(!this.valid)return NaN;let r=new Date(e);if(isNaN(r))return NaN;let n=nC(this.name),[i,o,a,u,c,l,d]=n.formatToParts?oC(n,r):sC(n,r);u==="BC"&&(i=-Math.abs(i)+1);let h=Da({year:i,month:o,day:a,hour:c===24?0:c,minute:l,second:d,millisecond:0}),m=+r,y=m%1e3;return m-=y>=0?y:1e3+y,(h-m)/(60*1e3)}equals(e){return e.type==="iana"&&e.name===this.name}get isValid(){return this.valid}},Xg={};function aC(t,e={}){let r=JSON.stringify([t,e]),n=Xg[r];return n||(n=new Intl.ListFormat(t,e),Xg[r]=n),n}s(aC,"getCachedLF");var Yl=new Map;function zl(t,e={}){let r=JSON.stringify([t,e]),n=Yl.get(r);return n===void 0&&(n=new Intl.DateTimeFormat(t,e),Yl.set(r,n)),n}s(zl,"getCachedDTF");var Jl=new Map;function uC(t,e={}){let r=JSON.stringify([t,e]),n=Jl.get(r);return n===void 0&&(n=new Intl.NumberFormat(t,e),Jl.set(r,n)),n}s(uC,"getCachedINF");var Xl=new Map;function cC(t,e={}){let{base:r,...n}=e,i=JSON.stringify([t,n]),o=Xl.get(i);return o===void 0&&(o=new Intl.RelativeTimeFormat(t,e),Xl.set(i,o)),o}s(cC,"getCachedRTF");var fs=null;function lC(){return fs||(fs=new Intl.DateTimeFormat().resolvedOptions().locale,fs)}s(lC,"systemLocale");var Zl=new Map;function jE(t){let e=Zl.get(t);return e===void 0&&(e=new Intl.DateTimeFormat(t).resolvedOptions(),Zl.set(t,e)),e}s(jE,"getCachedIntResolvedOptions");var ed=new Map;function dC(t){let e=ed.get(t);if(!e){let r=new Intl.Locale(t);e="getWeekInfo"in r?r.getWeekInfo():r.weekInfo,"minimalDays"in e||(e={...HE,...e}),ed.set(t,e)}return e}s(dC,"getCachedWeekInfo");function fC(t){let e=t.indexOf("-x-");e!==-1&&(t=t.substring(0,e));let r=t.indexOf("-u-");if(r===-1)return[t];{let n,i;try{n=zl(t).resolvedOptions(),i=t}catch{let c=t.substring(0,r);n=zl(c).resolvedOptions(),i=c}let{numberingSystem:o,calendar:a}=n;return[i,o,a]}}s(fC,"parseLocaleString");function pC(t,e,r){return(r||e)&&(t.includes("-u-")||(t+="-u"),r&&(t+=`-ca-${r}`),e&&(t+=`-nu-${e}`)),t}s(pC,"intlConfigString");function mC(t){let e=[];for(let r=1;r<=12;r++){let n=ue.utc(2009,r,1);e.push(t(n))}return e}s(mC,"mapMonths");function hC(t){let e=[];for(let r=1;r<=7;r++){let n=ue.utc(2016,11,13+r);e.push(t(n))}return e}s(hC,"mapWeekdays");function pa(t,e,r,n){let i=t.listingMode();return i==="error"?null:i==="en"?r(e):n(e)}s(pa,"listStuff");function gC(t){return t.numberingSystem&&t.numberingSystem!=="latn"?!1:t.numberingSystem==="latn"||!t.locale||t.locale.startsWith("en")||jE(t.locale).numberingSystem==="latn"}s(gC,"supportsFastNumbers");var td=class{static{s(this,"PolyNumberFormatter")}constructor(e,r,n){this.padTo=n.padTo||0,this.floor=n.floor||!1;let{padTo:i,floor:o,...a}=n;if(!r||Object.keys(a).length>0){let u={useGrouping:!1,...n};n.padTo>0&&(u.minimumIntegerDigits=n.padTo),this.inf=uC(e,u)}}format(e){if(this.inf){let r=this.floor?Math.floor(e):e;return this.inf.format(r)}else{let r=this.floor?Math.floor(e):fd(e,3);return he(r,this.padTo)}}},rd=class{static{s(this,"PolyDateFormatter")}constructor(e,r,n){this.opts=n,this.originalZone=void 0;let i;if(this.opts.timeZone)this.dt=e;else if(e.zone.type==="fixed"){let a=-1*(e.offset/60),u=a>=0?`Etc/GMT+${a}`:`Etc/GMT${a}`;e.offset!==0&&Vt.create(u).valid?(i=u,this.dt=e):(i="UTC",this.dt=e.offset===0?e:e.setZone("UTC").plus({minutes:e.offset}),this.originalZone=e.zone)}else e.zone.type==="system"?this.dt=e:e.zone.type==="iana"?(this.dt=e,i=e.zone.name):(i="UTC",this.dt=e.setZone("UTC").plus({minutes:e.offset}),this.originalZone=e.zone);let o={...this.opts};o.timeZone=o.timeZone||i,this.dtf=zl(r,o)}format(){return this.originalZone?this.formatToParts().map(({value:e})=>e).join(""):this.dtf.format(this.dt.toJSDate())}formatToParts(){let e=this.dtf.formatToParts(this.dt.toJSDate());return this.originalZone?e.map(r=>{if(r.type==="timeZoneName"){let n=this.originalZone.offsetName(this.dt.ts,{locale:this.dt.locale,format:this.opts.timeZoneName});return{...r,value:n}}else return r}):e}resolvedOptions(){return this.dtf.resolvedOptions()}},nd=class{static{s(this,"PolyRelFormatter")}constructor(e,r,n){this.opts={style:"long",...n},!r&&ty()&&(this.rtf=cC(e,n))}format(e,r){return this.rtf?this.rtf.format(e,r):MC(r,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,r){return this.rtf?this.rtf.formatToParts(e,r):[]}},HE={firstDay:1,minimalDays:4,weekend:[6,7]},re=class t{static{s(this,"Locale")}static fromOpts(e){return t.create(e.locale,e.numberingSystem,e.outputCalendar,e.weekSettings,e.defaultToEN)}static create(e,r,n,i,o=!1){let a=e||se.defaultLocale,u=a||(o?"en-US":lC()),c=r||se.defaultNumberingSystem,l=n||se.defaultOutputCalendar,d=sd(i)||se.defaultWeekSettings;return new t(u,c,l,d,a)}static resetCache(){fs=null,Yl.clear(),Jl.clear(),Xl.clear(),Zl.clear(),ed.clear()}static fromObject({locale:e,numberingSystem:r,outputCalendar:n,weekSettings:i}={}){return t.create(e,r,n,i)}constructor(e,r,n,i,o){let[a,u,c]=fC(e);this.locale=a,this.numberingSystem=r||u||null,this.outputCalendar=n||c||null,this.weekSettings=i,this.intl=pC(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=o,this.fastNumbersCached=null}get fastNumbers(){return this.fastNumbersCached==null&&(this.fastNumbersCached=gC(this)),this.fastNumbersCached}listingMode(){let e=this.isEnglish(),r=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return e&&r?"en":"intl"}clone(e){return!e||Object.getOwnPropertyNames(e).length===0?this:t.create(e.locale||this.specifiedLocale,e.numberingSystem||this.numberingSystem,e.outputCalendar||this.outputCalendar,sd(e.weekSettings)||this.weekSettings,e.defaultToEN||!1)}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,r=!1){return pa(this,e,oy,()=>{let n=this.intl==="ja"||this.intl.startsWith("ja-");r&=!n;let i=r?{month:e,day:"numeric"}:{month:e},o=r?"format":"standalone";if(!this.monthsCache[o][e]){let a=n?u=>this.dtFormatter(u,i).format():u=>this.extract(u,i,"month");this.monthsCache[o][e]=mC(a)}return this.monthsCache[o][e]})}weekdays(e,r=!1){return pa(this,e,cy,()=>{let n=r?{weekday:e,year:"numeric",month:"long",day:"numeric"}:{weekday:e},i=r?"format":"standalone";return this.weekdaysCache[i][e]||(this.weekdaysCache[i][e]=hC(o=>this.extract(o,n,"weekday"))),this.weekdaysCache[i][e]})}meridiems(){return pa(this,void 0,()=>ly,()=>{if(!this.meridiemCache){let e={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[ue.utc(2016,11,13,9),ue.utc(2016,11,13,19)].map(r=>this.extract(r,e,"dayperiod"))}return this.meridiemCache})}eras(e){return pa(this,e,dy,()=>{let r={era:e};return this.eraCache[e]||(this.eraCache[e]=[ue.utc(-40,1,1),ue.utc(2017,1,1)].map(n=>this.extract(n,r,"era"))),this.eraCache[e]})}extract(e,r,n){let i=this.dtFormatter(e,r),o=i.formatToParts(),a=o.find(u=>u.type.toLowerCase()===n);return a?a.value:null}numberFormatter(e={}){return new td(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,r={}){return new rd(e,this.intl,r)}relFormatter(e={}){return new nd(this.intl,this.isEnglish(),e)}listFormatter(e={}){return aC(this.intl,e)}isEnglish(){return this.locale==="en"||this.locale.toLowerCase()==="en-us"||jE(this.intl).locale.startsWith("en-us")}getWeekSettings(){return this.weekSettings?this.weekSettings:ry()?dC(this.locale):HE}getStartOfWeek(){return this.getWeekSettings().firstDay}getMinDaysInFirstWeek(){return this.getWeekSettings().minimalDays}getWeekendDays(){return this.getWeekSettings().weekend}equals(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar}toString(){return`Locale(${this.locale}, ${this.numberingSystem}, ${this.outputCalendar})`}},Fl=null,Ke=class t extends hr{static{s(this,"FixedOffsetZone")}static get utcInstance(){return Fl===null&&(Fl=new t(0)),Fl}static instance(e){return e===0?t.utcInstance:new t(e)}static parseSpecifier(e){if(e){let r=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(r)return new t(ba(r[1],r[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${hs(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${hs(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,r){return hs(this.fixed,r)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return e.type==="fixed"&&e.fixed===this.fixed}get isValid(){return!0}},_a=class extends hr{static{s(this,"InvalidZone")}constructor(e){super(),this.zoneName=e}get type(){return"invalid"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return""}offset(){return NaN}equals(){return!1}get isValid(){return!1}};function fr(t,e){if(H(t)||t===null)return e;if(t instanceof hr)return t;if(_C(t)){let r=t.toLowerCase();return r==="default"?e:r==="local"||r==="system"?gs.instance:r==="utc"||r==="gmt"?Ke.utcInstance:Ke.parseSpecifier(r)||Vt.create(t)}else return mr(t)?Ke.instance(t):typeof t=="object"&&"offset"in t&&typeof t.offset=="function"?t:new _a(t)}s(fr,"normalizeZone");var ud={arab:"[\u0660-\u0669]",arabext:"[\u06F0-\u06F9]",bali:"[\u1B50-\u1B59]",beng:"[\u09E6-\u09EF]",deva:"[\u0966-\u096F]",fullwide:"[\uFF10-\uFF19]",gujr:"[\u0AE6-\u0AEF]",hanidec:"[\u3007|\u4E00|\u4E8C|\u4E09|\u56DB|\u4E94|\u516D|\u4E03|\u516B|\u4E5D]",khmr:"[\u17E0-\u17E9]",knda:"[\u0CE6-\u0CEF]",laoo:"[\u0ED0-\u0ED9]",limb:"[\u1946-\u194F]",mlym:"[\u0D66-\u0D6F]",mong:"[\u1810-\u1819]",mymr:"[\u1040-\u1049]",orya:"[\u0B66-\u0B6F]",tamldec:"[\u0BE6-\u0BEF]",telu:"[\u0C66-\u0C6F]",thai:"[\u0E50-\u0E59]",tibt:"[\u0F20-\u0F29]",latn:"\\d"},Zg={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},EC=ud.hanidec.replace(/[\[|\]]/g,"").split("");function yC(t){let e=parseInt(t,10);if(isNaN(e)){e="";for(let r=0;r<t.length;r++){let n=t.charCodeAt(r);if(t[r].search(ud.hanidec)!==-1)e+=EC.indexOf(t[r]);else for(let i in Zg){let[o,a]=Zg[i];n>=o&&n<=a&&(e+=n-o)}}return parseInt(e,10)}else return e}s(yC,"parseDigits");var id=new Map;function TC(){id.clear()}s(TC,"resetDigitRegexCache");function dt({numberingSystem:t},e=""){let r=t||"latn",n=id.get(r);n===void 0&&(n=new Map,id.set(r,n));let i=n.get(e);return i===void 0&&(i=new RegExp(`${ud[r]}${e}`),n.set(e,i)),i}s(dt,"digitRegex");var eE=s(()=>Date.now(),"now"),tE="system",rE=null,nE=null,iE=null,sE=60,oE,aE=null,se=class{static{s(this,"Settings")}static get now(){return eE}static set now(e){eE=e}static set defaultZone(e){tE=e}static get defaultZone(){return fr(tE,gs.instance)}static get defaultLocale(){return rE}static set defaultLocale(e){rE=e}static get defaultNumberingSystem(){return nE}static set defaultNumberingSystem(e){nE=e}static get defaultOutputCalendar(){return iE}static set defaultOutputCalendar(e){iE=e}static get defaultWeekSettings(){return aE}static set defaultWeekSettings(e){aE=sd(e)}static get twoDigitCutoffYear(){return sE}static set twoDigitCutoffYear(e){sE=e%100}static get throwOnInvalid(){return oE}static set throwOnInvalid(e){oE=e}static resetCaches(){re.resetCache(),Vt.resetCache(),ue.resetCache(),TC()}},Ve=class{static{s(this,"Invalid")}constructor(e,r){this.reason=e,this.explanation=r}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}},YE=[0,31,59,90,120,151,181,212,243,273,304,334],zE=[0,31,60,91,121,152,182,213,244,274,305,335];function et(t,e){return new Ve("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}s(et,"unitOutOfRange");function cd(t,e,r){let n=new Date(Date.UTC(t,e-1,r));t<100&&t>=0&&n.setUTCFullYear(n.getUTCFullYear()-1900);let i=n.getUTCDay();return i===0?7:i}s(cd,"dayOfWeek");function JE(t,e,r){return r+(ys(t)?zE:YE)[e-1]}s(JE,"computeOrdinal");function XE(t,e){let r=ys(t)?zE:YE,n=r.findIndex(o=>o<e),i=e-r[n];return{month:n+1,day:i}}s(XE,"uncomputeOrdinal");function ld(t,e){return(t-e+7)%7+1}s(ld,"isoWeekdayToLocal");function Oa(t,e=4,r=1){let{year:n,month:i,day:o}=t,a=JE(n,i,o),u=ld(cd(n,i,o),r),c=Math.floor((a-u+14-e)/7),l;return c<1?(l=n-1,c=Es(l,e,r)):c>Es(n,e,r)?(l=n+1,c=1):l=n,{weekYear:l,weekNumber:c,weekday:u,...xa(t)}}s(Oa,"gregorianToWeek");function uE(t,e=4,r=1){let{weekYear:n,weekNumber:i,weekday:o}=t,a=ld(cd(n,1,e),r),u=Bn(n),c=i*7+o-a-7+e,l;c<1?(l=n-1,c+=Bn(l)):c>u?(l=n+1,c-=Bn(n)):l=n;let{month:d,day:f}=XE(l,c);return{year:l,month:d,day:f,...xa(t)}}s(uE,"weekToGregorian");function Bl(t){let{year:e,month:r,day:n}=t,i=JE(e,r,n);return{year:e,ordinal:i,...xa(t)}}s(Bl,"gregorianToOrdinal");function cE(t){let{year:e,ordinal:r}=t,{month:n,day:i}=XE(e,r);return{year:e,month:n,day:i,...xa(t)}}s(cE,"ordinalToGregorian");function lE(t,e){if(!H(t.localWeekday)||!H(t.localWeekNumber)||!H(t.localWeekYear)){if(!H(t.weekday)||!H(t.weekNumber)||!H(t.weekYear))throw new pr("Cannot mix locale-based week fields with ISO-based week fields");return H(t.localWeekday)||(t.weekday=t.localWeekday),H(t.localWeekNumber)||(t.weekNumber=t.localWeekNumber),H(t.localWeekYear)||(t.weekYear=t.localWeekYear),delete t.localWeekday,delete t.localWeekNumber,delete t.localWeekYear,{minDaysInFirstWeek:e.getMinDaysInFirstWeek(),startOfWeek:e.getStartOfWeek()}}else return{minDaysInFirstWeek:4,startOfWeek:1}}s(lE,"usesLocalWeekValues");function SC(t,e=4,r=1){let n=Ca(t.weekYear),i=tt(t.weekNumber,1,Es(t.weekYear,e,r)),o=tt(t.weekday,1,7);return n?i?o?!1:et("weekday",t.weekday):et("week",t.weekNumber):et("weekYear",t.weekYear)}s(SC,"hasInvalidWeekData");function AC(t){let e=Ca(t.year),r=tt(t.ordinal,1,Bn(t.year));return e?r?!1:et("ordinal",t.ordinal):et("year",t.year)}s(AC,"hasInvalidOrdinalData");function ZE(t){let e=Ca(t.year),r=tt(t.month,1,12),n=tt(t.day,1,Ia(t.year,t.month));return e?r?n?!1:et("day",t.day):et("month",t.month):et("year",t.year)}s(ZE,"hasInvalidGregorianData");function ey(t){let{hour:e,minute:r,second:n,millisecond:i}=t,o=tt(e,0,23)||e===24&&r===0&&n===0&&i===0,a=tt(r,0,59),u=tt(n,0,59),c=tt(i,0,999);return o?a?u?c?!1:et("millisecond",i):et("second",n):et("minute",r):et("hour",e)}s(ey,"hasInvalidTimeData");function H(t){return typeof t>"u"}s(H,"isUndefined");function mr(t){return typeof t=="number"}s(mr,"isNumber");function Ca(t){return typeof t=="number"&&t%1===0}s(Ca,"isInteger");function _C(t){return typeof t=="string"}s(_C,"isString");function OC(t){return Object.prototype.toString.call(t)==="[object Date]"}s(OC,"isDate");function ty(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}s(ty,"hasRelative");function ry(){try{return typeof Intl<"u"&&!!Intl.Locale&&("weekInfo"in Intl.Locale.prototype||"getWeekInfo"in Intl.Locale.prototype)}catch{return!1}}s(ry,"hasLocaleWeekInfo");function IC(t){return Array.isArray(t)?t:[t]}s(IC,"maybeArray");function dE(t,e,r){if(t.length!==0)return t.reduce((n,i)=>{let o=[e(i),i];return n&&r(n[0],o[0])===n[0]?n:o},null)[1]}s(dE,"bestBy");function wC(t,e){return e.reduce((r,n)=>(r[n]=t[n],r),{})}s(wC,"pick");function Gn(t,e){return Object.prototype.hasOwnProperty.call(t,e)}s(Gn,"hasOwnProperty");function sd(t){if(t==null)return null;if(typeof t!="object")throw new _e("Week settings must be an object");if(!tt(t.firstDay,1,7)||!tt(t.minimalDays,1,7)||!Array.isArray(t.weekend)||t.weekend.some(e=>!tt(e,1,7)))throw new _e("Invalid week settings");return{firstDay:t.firstDay,minimalDays:t.minimalDays,weekend:Array.from(t.weekend)}}s(sd,"validateWeekSettings");function tt(t,e,r){return Ca(t)&&t>=e&&t<=r}s(tt,"integerBetween");function RC(t,e){return t-e*Math.floor(t/e)}s(RC,"floorMod");function he(t,e=2){let r=t<0,n;return r?n="-"+(""+-t).padStart(e,"0"):n=(""+t).padStart(e,"0"),n}s(he,"padStart");function dr(t){if(!(H(t)||t===null||t===""))return parseInt(t,10)}s(dr,"parseInteger");function Jr(t){if(!(H(t)||t===null||t===""))return parseFloat(t)}s(Jr,"parseFloating");function dd(t){if(!(H(t)||t===null||t==="")){let e=parseFloat("0."+t)*1e3;return Math.floor(e)}}s(dd,"parseMillis");function fd(t,e,r="round"){let n=10**e;switch(r){case"expand":return t>0?Math.ceil(t*n)/n:Math.floor(t*n)/n;case"trunc":return Math.trunc(t*n)/n;case"round":return Math.round(t*n)/n;case"floor":return Math.floor(t*n)/n;case"ceil":return Math.ceil(t*n)/n;default:throw new RangeError(`Value rounding ${r} is out of range`)}}s(fd,"roundTo");function ys(t){return t%4===0&&(t%100!==0||t%400===0)}s(ys,"isLeapYear");function Bn(t){return ys(t)?366:365}s(Bn,"daysInYear");function Ia(t,e){let r=RC(e-1,12)+1,n=t+(e-r)/12;return r===2?ys(n)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][r-1]}s(Ia,"daysInMonth");function Da(t){let e=Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,t.second,t.millisecond);return t.year<100&&t.year>=0&&(e=new Date(e),e.setUTCFullYear(t.year,t.month-1,t.day)),+e}s(Da,"objToLocalTS");function fE(t,e,r){return-ld(cd(t,1,e),r)+e-1}s(fE,"firstWeekOffset");function Es(t,e=4,r=1){let n=fE(t,e,r),i=fE(t+1,e,r);return(Bn(t)-n+i)/7}s(Es,"weeksInWeekYear");function od(t){return t>99?t:t>se.twoDigitCutoffYear?1900+t:2e3+t}s(od,"untruncateYear");function ny(t,e,r,n=null){let i=new Date(t),o={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};n&&(o.timeZone=n);let a={timeZoneName:e,...o},u=new Intl.DateTimeFormat(r,a).formatToParts(i).find(c=>c.type.toLowerCase()==="timezonename");return u?u.value:null}s(ny,"parseZoneInfo");function ba(t,e){let r=parseInt(t,10);Number.isNaN(r)&&(r=0);let n=parseInt(e,10)||0,i=r<0||Object.is(r,-0)?-n:n;return r*60+i}s(ba,"signedOffset");function iy(t){let e=Number(t);if(typeof t=="boolean"||t===""||!Number.isFinite(e))throw new _e(`Invalid unit value ${t}`);return e}s(iy,"asNumber");function wa(t,e){let r={};for(let n in t)if(Gn(t,n)){let i=t[n];if(i==null)continue;r[e(n)]=iy(i)}return r}s(wa,"normalizeObject");function hs(t,e){let r=Math.trunc(Math.abs(t/60)),n=Math.trunc(Math.abs(t%60)),i=t>=0?"+":"-";switch(e){case"short":return`${i}${he(r,2)}:${he(n,2)}`;case"narrow":return`${i}${r}${n>0?`:${n}`:""}`;case"techie":return`${i}${he(r,2)}${he(n,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}s(hs,"formatOffset");function xa(t){return wC(t,["hour","minute","second","millisecond"])}s(xa,"timeObject");var CC=["January","February","March","April","May","June","July","August","September","October","November","December"],sy=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],DC=["J","F","M","A","M","J","J","A","S","O","N","D"];function oy(t){switch(t){case"narrow":return[...DC];case"short":return[...sy];case"long":return[...CC];case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}s(oy,"months");var ay=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],uy=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],bC=["M","T","W","T","F","S","S"];function cy(t){switch(t){case"narrow":return[...bC];case"short":return[...uy];case"long":return[...ay];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}s(cy,"weekdays");var ly=["AM","PM"],xC=["Before Christ","Anno Domini"],vC=["BC","AD"],NC=["B","A"];function dy(t){switch(t){case"narrow":return[...NC];case"short":return[...vC];case"long":return[...xC];default:return null}}s(dy,"eras");function PC(t){return ly[t.hour<12?0:1]}s(PC,"meridiemForDateTime");function LC(t,e){return cy(e)[t.weekday-1]}s(LC,"weekdayForDateTime");function UC(t,e){return oy(e)[t.month-1]}s(UC,"monthForDateTime");function kC(t,e){return dy(e)[t.year<0?0:1]}s(kC,"eraForDateTime");function MC(t,e,r="always",n=!1){let i={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},o=["hours","minutes","seconds"].indexOf(t)===-1;if(r==="auto"&&o){let f=t==="days";switch(e){case 1:return f?"tomorrow":`next ${i[t][0]}`;case-1:return f?"yesterday":`last ${i[t][0]}`;case 0:return f?"today":`this ${i[t][0]}`}}let a=Object.is(e,-0)||e<0,u=Math.abs(e),c=u===1,l=i[t],d=n?c?l[1]:l[2]||l[1]:c?i[t][0]:t;return a?`${u} ${d} ago`:`in ${u} ${d}`}s(MC,"formatRelativeTime");function pE(t,e){let r="";for(let n of t)n.literal?r+=n.val:r+=e(n.val);return r}s(pE,"stringifyTokens");var FC={D:Aa,DD:DE,DDD:bE,DDDD:xE,t:vE,tt:NE,ttt:PE,tttt:LE,T:UE,TT:kE,TTT:ME,TTTT:FE,f:BE,ff:GE,fff:VE,ffff:KE,F:WE,FF:$E,FFF:qE,FFFF:QE},$e=class t{static{s(this,"Formatter")}static create(e,r={}){return new t(e,r)}static parseFormat(e){let r=null,n="",i=!1,o=[];for(let a=0;a<e.length;a++){let u=e.charAt(a);u==="'"?((n.length>0||i)&&o.push({literal:i||/^\s+$/.test(n),val:n===""?"'":n}),r=null,n="",i=!i):i||u===r?n+=u:(n.length>0&&o.push({literal:/^\s+$/.test(n),val:n}),n=u,r=u)}return n.length>0&&o.push({literal:i||/^\s+$/.test(n),val:n}),o}static macroTokenToFormatOpts(e){return FC[e]}constructor(e,r){this.opts=r,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,r){return this.systemLoc===null&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(e,{...this.opts,...r}).format()}dtFormatter(e,r={}){return this.loc.dtFormatter(e,{...this.opts,...r})}formatDateTime(e,r){return this.dtFormatter(e,r).format()}formatDateTimeParts(e,r){return this.dtFormatter(e,r).formatToParts()}formatInterval(e,r){return this.dtFormatter(e.start,r).dtf.formatRange(e.start.toJSDate(),e.end.toJSDate())}resolvedOptions(e,r){return this.dtFormatter(e,r).resolvedOptions()}num(e,r=0,n=void 0){if(this.opts.forceSimple)return he(e,r);let i={...this.opts};return r>0&&(i.padTo=r),n&&(i.signDisplay=n),this.loc.numberFormatter(i).format(e)}formatDateTimeFromString(e,r){let n=this.loc.listingMode()==="en",i=this.loc.outputCalendar&&this.loc.outputCalendar!=="gregory",o=s((m,y)=>this.loc.extract(e,m,y),"string"),a=s(m=>e.isOffsetFixed&&e.offset===0&&m.allowZ?"Z":e.isValid?e.zone.formatOffset(e.ts,m.format):"","formatOffset"),u=s(()=>n?PC(e):o({hour:"numeric",hourCycle:"h12"},"dayperiod"),"meridiem"),c=s((m,y)=>n?UC(e,m):o(y?{month:m}:{month:m,day:"numeric"},"month"),"month"),l=s((m,y)=>n?LC(e,m):o(y?{weekday:m}:{weekday:m,month:"long",day:"numeric"},"weekday"),"weekday"),d=s(m=>{let y=t.macroTokenToFormatOpts(m);return y?this.formatWithSystemDefault(e,y):m},"maybeMacro"),f=s(m=>n?kC(e,m):o({era:m},"era"),"era"),h=s(m=>{switch(m){case"S":return this.num(e.millisecond);case"u":case"SSS":return this.num(e.millisecond,3);case"s":return this.num(e.second);case"ss":return this.num(e.second,2);case"uu":return this.num(Math.floor(e.millisecond/10),2);case"uuu":return this.num(Math.floor(e.millisecond/100));case"m":return this.num(e.minute);case"mm":return this.num(e.minute,2);case"h":return this.num(e.hour%12===0?12:e.hour%12);case"hh":return this.num(e.hour%12===0?12:e.hour%12,2);case"H":return this.num(e.hour);case"HH":return this.num(e.hour,2);case"Z":return a({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return a({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return a({format:"techie",allowZ:this.opts.allowZ});case"ZZZZ":return e.zone.offsetName(e.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return e.zone.offsetName(e.ts,{format:"long",locale:this.loc.locale});case"z":return e.zoneName;case"a":return u();case"d":return i?o({day:"numeric"},"day"):this.num(e.day);case"dd":return i?o({day:"2-digit"},"day"):this.num(e.day,2);case"c":return this.num(e.weekday);case"ccc":return l("short",!0);case"cccc":return l("long",!0);case"ccccc":return l("narrow",!0);case"E":return this.num(e.weekday);case"EEE":return l("short",!1);case"EEEE":return l("long",!1);case"EEEEE":return l("narrow",!1);case"L":return i?o({month:"numeric",day:"numeric"},"month"):this.num(e.month);case"LL":return i?o({month:"2-digit",day:"numeric"},"month"):this.num(e.month,2);case"LLL":return c("short",!0);case"LLLL":return c("long",!0);case"LLLLL":return c("narrow",!0);case"M":return i?o({month:"numeric"},"month"):this.num(e.month);case"MM":return i?o({month:"2-digit"},"month"):this.num(e.month,2);case"MMM":return c("short",!1);case"MMMM":return c("long",!1);case"MMMMM":return c("narrow",!1);case"y":return i?o({year:"numeric"},"year"):this.num(e.year);case"yy":return i?o({year:"2-digit"},"year"):this.num(e.year.toString().slice(-2),2);case"yyyy":return i?o({year:"numeric"},"year"):this.num(e.year,4);case"yyyyyy":return i?o({year:"numeric"},"year"):this.num(e.year,6);case"G":return f("short");case"GG":return f("long");case"GGGGG":return f("narrow");case"kk":return this.num(e.weekYear.toString().slice(-2),2);case"kkkk":return this.num(e.weekYear,4);case"W":return this.num(e.weekNumber);case"WW":return this.num(e.weekNumber,2);case"n":return this.num(e.localWeekNumber);case"nn":return this.num(e.localWeekNumber,2);case"ii":return this.num(e.localWeekYear.toString().slice(-2),2);case"iiii":return this.num(e.localWeekYear,4);case"o":return this.num(e.ordinal);case"ooo":return this.num(e.ordinal,3);case"q":return this.num(e.quarter);case"qq":return this.num(e.quarter,2);case"X":return this.num(Math.floor(e.ts/1e3));case"x":return this.num(e.ts);default:return d(m)}},"tokenToString");return pE(t.parseFormat(r),h)}formatDurationFromString(e,r){let n=this.opts.signMode==="negativeLargestOnly"?-1:1,i=s(d=>{switch(d[0]){case"S":return"milliseconds";case"s":return"seconds";case"m":return"minutes";case"h":return"hours";case"d":return"days";case"w":return"weeks";case"M":return"months";case"y":return"years";default:return null}},"tokenToField"),o=s((d,f)=>h=>{let m=i(h);if(m){let y=f.isNegativeDuration&&m!==f.largestUnit?n:1,E;return this.opts.signMode==="negativeLargestOnly"&&m!==f.largestUnit?E="never":this.opts.signMode==="all"?E="always":E="auto",this.num(d.get(m)*y,h.length,E)}else return h},"tokenToString"),a=t.parseFormat(r),u=a.reduce((d,{literal:f,val:h})=>f?d:d.concat(h),[]),c=e.shiftTo(...u.map(i).filter(d=>d)),l={isNegativeDuration:c<0,largestUnit:Object.keys(c.values)[0]};return pE(a,o(c,l))}},fy=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function $n(...t){let e=t.reduce((r,n)=>r+n.source,"");return RegExp(`^${e}$`)}s($n,"combineRegexes");function Vn(...t){return e=>t.reduce(([r,n,i],o)=>{let[a,u,c]=o(e,i);return[{...r,...a},u||n,c]},[{},null,1]).slice(0,2)}s(Vn,"combineExtractors");function qn(t,...e){if(t==null)return[null,null];for(let[r,n]of e){let i=r.exec(t);if(i)return n(i)}return[null,null]}s(qn,"parse");function py(...t){return(e,r)=>{let n={},i;for(i=0;i<t.length;i++)n[t[i]]=dr(e[r+i]);return[n,null,r+i]}}s(py,"simpleParse");var my=/(?:([Zz])|([+-]\d\d)(?::?(\d\d))?)/,BC=`(?:${my.source}?(?:\\[(${fy.source})\\])?)?`,pd=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,hy=RegExp(`${pd.source}${BC}`),md=RegExp(`(?:[Tt]${hy.source})?`),WC=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,GC=/(\d{4})-?W(\d\d)(?:-?(\d))?/,$C=/(\d{4})-?(\d{3})/,VC=py("weekYear","weekNumber","weekDay"),qC=py("year","ordinal"),KC=/(\d{4})-(\d\d)-(\d\d)/,gy=RegExp(`${pd.source} ?(?:${my.source}|(${fy.source}))?`),QC=RegExp(`(?: ${gy.source})?`);function Wn(t,e,r){let n=t[e];return H(n)?r:dr(n)}s(Wn,"int");function jC(t,e){return[{year:Wn(t,e),month:Wn(t,e+1,1),day:Wn(t,e+2,1)},null,e+3]}s(jC,"extractISOYmd");function Kn(t,e){return[{hours:Wn(t,e,0),minutes:Wn(t,e+1,0),seconds:Wn(t,e+2,0),milliseconds:dd(t[e+3])},null,e+4]}s(Kn,"extractISOTime");function Ts(t,e){let r=!t[e]&&!t[e+1],n=ba(t[e+1],t[e+2]),i=r?null:Ke.instance(n);return[{},i,e+3]}s(Ts,"extractISOOffset");function Ss(t,e){let r=t[e]?Vt.create(t[e]):null;return[{},r,e+1]}s(Ss,"extractIANAZone");var HC=RegExp(`^T?${pd.source}$`),YC=/^-?P(?:(?:(-?\d{1,20}(?:\.\d{1,20})?)Y)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20}(?:\.\d{1,20})?)W)?(?:(-?\d{1,20}(?:\.\d{1,20})?)D)?(?:T(?:(-?\d{1,20}(?:\.\d{1,20})?)H)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20})(?:[.,](-?\d{1,20}))?S)?)?)$/;function zC(t){let[e,r,n,i,o,a,u,c,l]=t,d=e[0]==="-",f=c&&c[0]==="-",h=s((m,y=!1)=>m!==void 0&&(y||m&&d)?-m:m,"maybeNegate");return[{years:h(Jr(r)),months:h(Jr(n)),weeks:h(Jr(i)),days:h(Jr(o)),hours:h(Jr(a)),minutes:h(Jr(u)),seconds:h(Jr(c),c==="-0"),milliseconds:h(dd(l),f)}]}s(zC,"extractISODuration");var JC={GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function hd(t,e,r,n,i,o,a){let u={year:e.length===2?od(dr(e)):dr(e),month:sy.indexOf(r)+1,day:dr(n),hour:dr(i),minute:dr(o)};return a&&(u.second=dr(a)),t&&(u.weekday=t.length>3?ay.indexOf(t)+1:uy.indexOf(t)+1),u}s(hd,"fromStrings");var XC=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function ZC(t){let[,e,r,n,i,o,a,u,c,l,d,f]=t,h=hd(e,i,n,r,o,a,u),m;return c?m=JC[c]:l?m=0:m=ba(d,f),[h,new Ke(m)]}s(ZC,"extractRFC2822");function eD(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}s(eD,"preprocessRFC2822");var tD=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,rD=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,nD=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function mE(t){let[,e,r,n,i,o,a,u]=t;return[hd(e,i,n,r,o,a,u),Ke.utcInstance]}s(mE,"extractRFC1123Or850");function iD(t){let[,e,r,n,i,o,a,u]=t;return[hd(e,u,r,n,i,o,a),Ke.utcInstance]}s(iD,"extractASCII");var sD=$n(WC,md),oD=$n(GC,md),aD=$n($C,md),uD=$n(hy),Ey=Vn(jC,Kn,Ts,Ss),cD=Vn(VC,Kn,Ts,Ss),lD=Vn(qC,Kn,Ts,Ss),dD=Vn(Kn,Ts,Ss);function fD(t){return qn(t,[sD,Ey],[oD,cD],[aD,lD],[uD,dD])}s(fD,"parseISODate");function pD(t){return qn(eD(t),[XC,ZC])}s(pD,"parseRFC2822Date");function mD(t){return qn(t,[tD,mE],[rD,mE],[nD,iD])}s(mD,"parseHTTPDate");function hD(t){return qn(t,[YC,zC])}s(hD,"parseISODuration");var gD=Vn(Kn);function ED(t){return qn(t,[HC,gD])}s(ED,"parseISOTimeOnly");var yD=$n(KC,QC),TD=$n(gy),SD=Vn(Kn,Ts,Ss);function AD(t){return qn(t,[yD,Ey],[TD,SD])}s(AD,"parseSQL");var hE="Invalid Duration",yy={weeks:{days:7,hours:168,minutes:10080,seconds:10080*60,milliseconds:10080*60*1e3},days:{hours:24,minutes:1440,seconds:1440*60,milliseconds:1440*60*1e3},hours:{minutes:60,seconds:3600,milliseconds:3600*1e3},minutes:{seconds:60,milliseconds:60*1e3},seconds:{milliseconds:1e3}},_D={years:{quarters:4,months:12,weeks:52,days:365,hours:365*24,minutes:365*24*60,seconds:365*24*60*60,milliseconds:365*24*60*60*1e3},quarters:{months:3,weeks:13,days:91,hours:2184,minutes:2184*60,seconds:2184*60*60,milliseconds:2184*60*60*1e3},months:{weeks:4,days:30,hours:720,minutes:720*60,seconds:720*60*60,milliseconds:720*60*60*1e3},...yy},Ze=146097/400,kn=146097/4800,OD={years:{quarters:4,months:12,weeks:Ze/7,days:Ze,hours:Ze*24,minutes:Ze*24*60,seconds:Ze*24*60*60,milliseconds:Ze*24*60*60*1e3},quarters:{months:3,weeks:Ze/28,days:Ze/4,hours:Ze*24/4,minutes:Ze*24*60/4,seconds:Ze*24*60*60/4,milliseconds:Ze*24*60*60*1e3/4},months:{weeks:kn/7,days:kn,hours:kn*24,minutes:kn*24*60,seconds:kn*24*60*60,milliseconds:kn*24*60*60*1e3},...yy},Zr=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],ID=Zr.slice(0).reverse();function Gt(t,e,r=!1){let n={values:r?e.values:{...t.values,...e.values||{}},loc:t.loc.clone(e.loc),conversionAccuracy:e.conversionAccuracy||t.conversionAccuracy,matrix:e.matrix||t.matrix};return new ye(n)}s(Gt,"clone$1");function Ty(t,e){var r;let n=(r=e.milliseconds)!=null?r:0;for(let i of ID.slice(1))e[i]&&(n+=e[i]*t[i].milliseconds);return n}s(Ty,"durationToMillis");function gE(t,e){let r=Ty(t,e)<0?-1:1;Zr.reduceRight((n,i)=>{if(H(e[i]))return n;if(n){let o=e[n]*r,a=t[i][n],u=Math.floor(o/a);e[i]+=u*r,e[n]-=u*a*r}return i},null),Zr.reduce((n,i)=>{if(H(e[i]))return n;if(n){let o=e[n]%1;e[n]-=o,e[i]+=o*t[n][i]}return i},null)}s(gE,"normalizeValues");function EE(t){let e={};for(let[r,n]of Object.entries(t))n!==0&&(e[r]=n);return e}s(EE,"removeZeroes");var ye=class t{static{s(this,"Duration")}constructor(e){let r=e.conversionAccuracy==="longterm"||!1,n=r?OD:_D;e.matrix&&(n=e.matrix),this.values=e.values,this.loc=e.loc||re.create(),this.conversionAccuracy=r?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n,this.isLuxonDuration=!0}static fromMillis(e,r){return t.fromObject({milliseconds:e},r)}static fromObject(e,r={}){if(e==null||typeof e!="object")throw new _e(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new t({values:wa(e,t.normalizeUnit),loc:re.fromObject(r),conversionAccuracy:r.conversionAccuracy,matrix:r.matrix})}static fromDurationLike(e){if(mr(e))return t.fromMillis(e);if(t.isDuration(e))return e;if(typeof e=="object")return t.fromObject(e);throw new _e(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,r){let[n]=hD(e);return n?t.fromObject(n,r):t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,r){let[n]=ED(e);return n?t.fromObject(n,r):t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,r=null){if(!e)throw new _e("need to specify a reason the Duration is invalid");let n=e instanceof Ve?e:new Ve(e,r);if(se.throwOnInvalid)throw new jl(n);return new t({invalid:n})}static normalizeUnit(e){let r={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[e&&e.toLowerCase()];if(!r)throw new Sa(e);return r}static isDuration(e){return e&&e.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(e,r={}){let n={...r,floor:r.round!==!1&&r.floor!==!1};return this.isValid?$e.create(this.loc,n).formatDurationFromString(this,e):hE}toHuman(e={}){if(!this.isValid)return hE;let r=e.showZeros!==!1,n=Zr.map(i=>{let o=this.values[i];return H(o)||o===0&&!r?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...e,unit:i.slice(0,-1)}).format(o)}).filter(i=>i);return this.loc.listFormatter({type:"conjunction",style:e.listStyle||"narrow",...e}).format(n)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let e="P";return this.years!==0&&(e+=this.years+"Y"),(this.months!==0||this.quarters!==0)&&(e+=this.months+this.quarters*3+"M"),this.weeks!==0&&(e+=this.weeks+"W"),this.days!==0&&(e+=this.days+"D"),(this.hours!==0||this.minutes!==0||this.seconds!==0||this.milliseconds!==0)&&(e+="T"),this.hours!==0&&(e+=this.hours+"H"),this.minutes!==0&&(e+=this.minutes+"M"),(this.seconds!==0||this.milliseconds!==0)&&(e+=fd(this.seconds+this.milliseconds/1e3,3)+"S"),e==="P"&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;let r=this.toMillis();return r<0||r>=864e5?null:(e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...e,includeOffset:!1},ue.fromMillis(r,{zone:"UTC"}).toISOTime(e))}toJSON(){return this.toISO()}toString(){return this.toISO()}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Duration { values: ${JSON.stringify(this.values)} }`:`Duration { Invalid, reason: ${this.invalidReason} }`}toMillis(){return this.isValid?Ty(this.matrix,this.values):NaN}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;let r=t.fromDurationLike(e),n={};for(let i of Zr)(Gn(r.values,i)||Gn(this.values,i))&&(n[i]=r.get(i)+this.get(i));return Gt(this,{values:n},!0)}minus(e){if(!this.isValid)return this;let r=t.fromDurationLike(e);return this.plus(r.negate())}mapUnits(e){if(!this.isValid)return this;let r={};for(let n of Object.keys(this.values))r[n]=iy(e(this.values[n],n));return Gt(this,{values:r},!0)}get(e){return this[t.normalizeUnit(e)]}set(e){if(!this.isValid)return this;let r={...this.values,...wa(e,t.normalizeUnit)};return Gt(this,{values:r})}reconfigure({locale:e,numberingSystem:r,conversionAccuracy:n,matrix:i}={}){let a={loc:this.loc.clone({locale:e,numberingSystem:r}),matrix:i,conversionAccuracy:n};return Gt(this,a)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;let e=this.toObject();return gE(this.matrix,e),Gt(this,{values:e},!0)}rescale(){if(!this.isValid)return this;let e=EE(this.normalize().shiftToAll().toObject());return Gt(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(a=>t.normalizeUnit(a));let r={},n={},i=this.toObject(),o;for(let a of Zr)if(e.indexOf(a)>=0){o=a;let u=0;for(let l in n)u+=this.matrix[l][a]*n[l],n[l]=0;mr(i[a])&&(u+=i[a]);let c=Math.trunc(u);r[a]=c,n[a]=(u*1e3-c*1e3)/1e3}else mr(i[a])&&(n[a]=i[a]);for(let a in n)n[a]!==0&&(r[o]+=a===o?n[a]:n[a]/this.matrix[o][a]);return gE(this.matrix,r),Gt(this,{values:r},!0)}shiftToAll(){return this.isValid?this.shiftTo("years","months","weeks","days","hours","minutes","seconds","milliseconds"):this}negate(){if(!this.isValid)return this;let e={};for(let r of Object.keys(this.values))e[r]=this.values[r]===0?0:-this.values[r];return Gt(this,{values:e},!0)}removeZeros(){if(!this.isValid)return this;let e=EE(this.values);return Gt(this,{values:e},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(e){if(!this.isValid||!e.isValid||!this.loc.equals(e.loc))return!1;function r(n,i){return n===void 0||n===0?i===void 0||i===0:n===i}s(r,"eq");for(let n of Zr)if(!r(this.values[n],e.values[n]))return!1;return!0}},Mn="Invalid Interval";function wD(t,e){return!t||!t.isValid?tn.invalid("missing or invalid start"):!e||!e.isValid?tn.invalid("missing or invalid end"):e<t?tn.invalid("end before start",`The end of an interval must be after its start, but you had start=${t.toISO()} and end=${e.toISO()}`):null}s(wD,"validateStartEnd");var tn=class t{static{s(this,"Interval")}constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,r=null){if(!e)throw new _e("need to specify a reason the Interval is invalid");let n=e instanceof Ve?e:new Ve(e,r);if(se.throwOnInvalid)throw new Ql(n);return new t({invalid:n})}static fromDateTimes(e,r){let n=ds(e),i=ds(r),o=wD(n,i);return o??new t({start:n,end:i})}static after(e,r){let n=ye.fromDurationLike(r),i=ds(e);return t.fromDateTimes(i,i.plus(n))}static before(e,r){let n=ye.fromDurationLike(r),i=ds(e);return t.fromDateTimes(i.minus(n),i)}static fromISO(e,r){let[n,i]=(e||"").split("/",2);if(n&&i){let o,a;try{o=ue.fromISO(n,r),a=o.isValid}catch{a=!1}let u,c;try{u=ue.fromISO(i,r),c=u.isValid}catch{c=!1}if(a&&c)return t.fromDateTimes(o,u);if(a){let l=ye.fromISO(i,r);if(l.isValid)return t.after(o,l)}else if(c){let l=ye.fromISO(n,r);if(l.isValid)return t.before(u,l)}}return t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static isInterval(e){return e&&e.isLuxonInterval||!1}get start(){return this.isValid?this.s:null}get end(){return this.isValid?this.e:null}get lastDateTime(){return this.isValid&&this.e?this.e.minus(1):null}get isValid(){return this.invalidReason===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}length(e="milliseconds"){return this.isValid?this.toDuration(e).get(e):NaN}count(e="milliseconds",r){if(!this.isValid)return NaN;let n=this.start.startOf(e,r),i;return r!=null&&r.useLocaleWeeks?i=this.end.reconfigure({locale:n.locale}):i=this.end,i=i.startOf(e,r),Math.floor(i.diff(n,e).get(e))+(i.valueOf()!==this.end.valueOf())}hasSame(e){return this.isValid?this.isEmpty()||this.e.minus(1).hasSame(this.s,e):!1}isEmpty(){return this.s.valueOf()===this.e.valueOf()}isAfter(e){return this.isValid?this.s>e:!1}isBefore(e){return this.isValid?this.e<=e:!1}contains(e){return this.isValid?this.s<=e&&this.e>e:!1}set({start:e,end:r}={}){return this.isValid?t.fromDateTimes(e||this.s,r||this.e):this}splitAt(...e){if(!this.isValid)return[];let r=e.map(ds).filter(a=>this.contains(a)).sort((a,u)=>a.toMillis()-u.toMillis()),n=[],{s:i}=this,o=0;for(;i<this.e;){let a=r[o]||this.e,u=+a>+this.e?this.e:a;n.push(t.fromDateTimes(i,u)),i=u,o+=1}return n}splitBy(e){let r=ye.fromDurationLike(e);if(!this.isValid||!r.isValid||r.as("milliseconds")===0)return[];let{s:n}=this,i=1,o,a=[];for(;n<this.e;){let u=this.start.plus(r.mapUnits(c=>c*i));o=+u>+this.e?this.e:u,a.push(t.fromDateTimes(n,o)),n=o,i+=1}return a}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s<e.e}abutsStart(e){return this.isValid?+this.e==+e.s:!1}abutsEnd(e){return this.isValid?+e.e==+this.s:!1}engulfs(e){return this.isValid?this.s<=e.s&&this.e>=e.e:!1}equals(e){return!this.isValid||!e.isValid?!1:this.s.equals(e.s)&&this.e.equals(e.e)}intersection(e){if(!this.isValid)return this;let r=this.s>e.s?this.s:e.s,n=this.e<e.e?this.e:e.e;return r>=n?null:t.fromDateTimes(r,n)}union(e){if(!this.isValid)return this;let r=this.s<e.s?this.s:e.s,n=this.e>e.e?this.e:e.e;return t.fromDateTimes(r,n)}static merge(e){let[r,n]=e.sort((i,o)=>i.s-o.s).reduce(([i,o],a)=>o?o.overlaps(a)||o.abutsStart(a)?[i,o.union(a)]:[i.concat([o]),a]:[i,a],[[],null]);return n&&r.push(n),r}static xor(e){let r=null,n=0,i=[],o=e.map(c=>[{time:c.s,type:"s"},{time:c.e,type:"e"}]),a=Array.prototype.concat(...o),u=a.sort((c,l)=>c.time-l.time);for(let c of u)n+=c.type==="s"?1:-1,n===1?r=c.time:(r&&+r!=+c.time&&i.push(t.fromDateTimes(r,c.time)),r=null);return t.merge(i)}difference(...e){return t.xor([this].concat(e)).map(r=>this.intersection(r)).filter(r=>r&&!r.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} \u2013 ${this.e.toISO()})`:Mn}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Interval { start: ${this.s.toISO()}, end: ${this.e.toISO()} }`:`Interval { Invalid, reason: ${this.invalidReason} }`}toLocaleString(e=Aa,r={}){return this.isValid?$e.create(this.s.loc.clone(r),e).formatInterval(this):Mn}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:Mn}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:Mn}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:Mn}toFormat(e,{separator:r=" \u2013 "}={}){return this.isValid?`${this.s.toFormat(e)}${r}${this.e.toFormat(e)}`:Mn}toDuration(e,r){return this.isValid?this.e.diff(this.s,e,r):ye.invalid(this.invalidReason)}mapEndpoints(e){return t.fromDateTimes(e(this.s),e(this.e))}},en=class{static{s(this,"Info")}static hasDST(e=se.defaultZone){let r=ue.now().setZone(e).set({month:12});return!e.isUniversal&&r.offset!==r.set({month:6}).offset}static isValidIANAZone(e){return Vt.isValidZone(e)}static normalizeZone(e){return fr(e,se.defaultZone)}static getStartOfWeek({locale:e=null,locObj:r=null}={}){return(r||re.create(e)).getStartOfWeek()}static getMinimumDaysInFirstWeek({locale:e=null,locObj:r=null}={}){return(r||re.create(e)).getMinDaysInFirstWeek()}static getWeekendWeekdays({locale:e=null,locObj:r=null}={}){return(r||re.create(e)).getWeekendDays().slice()}static months(e="long",{locale:r=null,numberingSystem:n=null,locObj:i=null,outputCalendar:o="gregory"}={}){return(i||re.create(r,n,o)).months(e)}static monthsFormat(e="long",{locale:r=null,numberingSystem:n=null,locObj:i=null,outputCalendar:o="gregory"}={}){return(i||re.create(r,n,o)).months(e,!0)}static weekdays(e="long",{locale:r=null,numberingSystem:n=null,locObj:i=null}={}){return(i||re.create(r,n,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:r=null,numberingSystem:n=null,locObj:i=null}={}){return(i||re.create(r,n,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return re.create(e).meridiems()}static eras(e="short",{locale:r=null}={}){return re.create(r,null,"gregory").eras(e)}static features(){return{relative:ty(),localeWeek:ry()}}};function yE(t,e){let r=s(i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),"utcDayStart"),n=r(e)-r(t);return Math.floor(ye.fromMillis(n).as("days"))}s(yE,"dayDiff");function RD(t,e,r){let n=[["years",(c,l)=>l.year-c.year],["quarters",(c,l)=>l.quarter-c.quarter+(l.year-c.year)*4],["months",(c,l)=>l.month-c.month+(l.year-c.year)*12],["weeks",(c,l)=>{let d=yE(c,l);return(d-d%7)/7}],["days",yE]],i={},o=t,a,u;for(let[c,l]of n)r.indexOf(c)>=0&&(a=c,i[c]=l(t,e),u=o.plus(i),u>e?(i[c]--,t=o.plus(i),t>e&&(u=t,i[c]--,t=o.plus(i))):t=u);return[t,i,u,a]}s(RD,"highOrderDiffs");function CD(t,e,r,n){let[i,o,a,u]=RD(t,e,r),c=e-i,l=r.filter(f=>["hours","minutes","seconds","milliseconds"].indexOf(f)>=0);l.length===0&&(a<e&&(a=i.plus({[u]:1})),a!==i&&(o[u]=(o[u]||0)+c/(a-i)));let d=ye.fromObject(o,n);return l.length>0?ye.fromMillis(c,n).shiftTo(...l).plus(d):d}s(CD,"diff");var DD="missing Intl.DateTimeFormat.formatToParts support";function Z(t,e=r=>r){return{regex:t,deser:s(([r])=>e(yC(r)),"deser")}}s(Z,"intUnit");var bD="\xA0",Sy=`[ ${bD}]`,Ay=new RegExp(Sy,"g");function xD(t){return t.replace(/\./g,"\\.?").replace(Ay,Sy)}s(xD,"fixListRegex");function TE(t){return t.replace(/\./g,"").replace(Ay," ").toLowerCase()}s(TE,"stripInsensitivities");function ft(t,e){return t===null?null:{regex:RegExp(t.map(xD).join("|")),deser:s(([r])=>t.findIndex(n=>TE(r)===TE(n))+e,"deser")}}s(ft,"oneOf");function SE(t,e){return{regex:t,deser:s(([,r,n])=>ba(r,n),"deser"),groups:e}}s(SE,"offset");function ma(t){return{regex:t,deser:s(([e])=>e,"deser")}}s(ma,"simple");function vD(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}s(vD,"escapeToken");function ND(t,e){let r=dt(e),n=dt(e,"{2}"),i=dt(e,"{3}"),o=dt(e,"{4}"),a=dt(e,"{6}"),u=dt(e,"{1,2}"),c=dt(e,"{1,3}"),l=dt(e,"{1,6}"),d=dt(e,"{1,9}"),f=dt(e,"{2,4}"),h=dt(e,"{4,6}"),m=s(p=>({regex:RegExp(vD(p.val)),deser:s(([T])=>T,"deser"),literal:!0}),"literal"),E=s(p=>{if(t.literal)return m(p);switch(p.val){case"G":return ft(e.eras("short"),0);case"GG":return ft(e.eras("long"),0);case"y":return Z(l);case"yy":return Z(f,od);case"yyyy":return Z(o);case"yyyyy":return Z(h);case"yyyyyy":return Z(a);case"M":return Z(u);case"MM":return Z(n);case"MMM":return ft(e.months("short",!0),1);case"MMMM":return ft(e.months("long",!0),1);case"L":return Z(u);case"LL":return Z(n);case"LLL":return ft(e.months("short",!1),1);case"LLLL":return ft(e.months("long",!1),1);case"d":return Z(u);case"dd":return Z(n);case"o":return Z(c);case"ooo":return Z(i);case"HH":return Z(n);case"H":return Z(u);case"hh":return Z(n);case"h":return Z(u);case"mm":return Z(n);case"m":return Z(u);case"q":return Z(u);case"qq":return Z(n);case"s":return Z(u);case"ss":return Z(n);case"S":return Z(c);case"SSS":return Z(i);case"u":return ma(d);case"uu":return ma(u);case"uuu":return Z(r);case"a":return ft(e.meridiems(),0);case"kkkk":return Z(o);case"kk":return Z(f,od);case"W":return Z(u);case"WW":return Z(n);case"E":case"c":return Z(r);case"EEE":return ft(e.weekdays("short",!1),1);case"EEEE":return ft(e.weekdays("long",!1),1);case"ccc":return ft(e.weekdays("short",!0),1);case"cccc":return ft(e.weekdays("long",!0),1);case"Z":case"ZZ":return SE(new RegExp(`([+-]${u.source})(?::(${n.source}))?`),2);case"ZZZ":return SE(new RegExp(`([+-]${u.source})(${n.source})?`),2);case"z":return ma(/[a-z_+-/]{1,256}?/i);case" ":return ma(/[^\S\n\r]/);default:return m(p)}},"unitate")(t)||{invalidReason:DD};return E.token=t,E}s(ND,"unitForToken");var PD={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour12:{numeric:"h","2-digit":"hh"},hour24:{numeric:"H","2-digit":"HH"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"},timeZoneName:{long:"ZZZZZ",short:"ZZZ"}};function LD(t,e,r){let{type:n,value:i}=t;if(n==="literal"){let c=/^\s+$/.test(i);return{literal:!c,val:c?" ":i}}let o=e[n],a=n;n==="hour"&&(e.hour12!=null?a=e.hour12?"hour12":"hour24":e.hourCycle!=null?e.hourCycle==="h11"||e.hourCycle==="h12"?a="hour12":a="hour24":a=r.hour12?"hour12":"hour24");let u=PD[a];if(typeof u=="object"&&(u=u[o]),u)return{literal:!1,val:u}}s(LD,"tokenForPart");function UD(t){return[`^${t.map(r=>r.regex).reduce((r,n)=>`${r}(${n.source})`,"")}$`,t]}s(UD,"buildRegex");function kD(t,e,r){let n=t.match(e);if(n){let i={},o=1;for(let a in r)if(Gn(r,a)){let u=r[a],c=u.groups?u.groups+1:1;!u.literal&&u.token&&(i[u.token.val[0]]=u.deser(n.slice(o,o+c))),o+=c}return[n,i]}else return[n,{}]}s(kD,"match");function MD(t){let e=s(o=>{switch(o){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}},"toField"),r=null,n;return H(t.z)||(r=Vt.create(t.z)),H(t.Z)||(r||(r=new Ke(t.Z)),n=t.Z),H(t.q)||(t.M=(t.q-1)*3+1),H(t.h)||(t.h<12&&t.a===1?t.h+=12:t.h===12&&t.a===0&&(t.h=0)),t.G===0&&t.y&&(t.y=-t.y),H(t.u)||(t.S=dd(t.u)),[Object.keys(t).reduce((o,a)=>{let u=e(a);return u&&(o[u]=t[a]),o},{}),r,n]}s(MD,"dateTimeFromMatches");var Wl=null;function FD(){return Wl||(Wl=ue.fromMillis(1555555555555)),Wl}s(FD,"getDummyDateTime");function BD(t,e){if(t.literal)return t;let r=$e.macroTokenToFormatOpts(t.val),n=Iy(r,e);return n==null||n.includes(void 0)?t:n}s(BD,"maybeExpandMacroToken");function _y(t,e){return Array.prototype.concat(...t.map(r=>BD(r,e)))}s(_y,"expandMacroTokens");var Ra=class{static{s(this,"TokenParser")}constructor(e,r){if(this.locale=e,this.format=r,this.tokens=_y($e.parseFormat(r),e),this.units=this.tokens.map(n=>ND(n,e)),this.disqualifyingUnit=this.units.find(n=>n.invalidReason),!this.disqualifyingUnit){let[n,i]=UD(this.units);this.regex=RegExp(n,"i"),this.handlers=i}}explainFromTokens(e){if(this.isValid){let[r,n]=kD(e,this.regex,this.handlers),[i,o,a]=n?MD(n):[null,null,void 0];if(Gn(n,"a")&&Gn(n,"H"))throw new pr("Can't include meridiem when specifying 24-hour format");return{input:e,tokens:this.tokens,regex:this.regex,rawMatches:r,matches:n,result:i,zone:o,specificOffset:a}}else return{input:e,tokens:this.tokens,invalidReason:this.invalidReason}}get isValid(){return!this.disqualifyingUnit}get invalidReason(){return this.disqualifyingUnit?this.disqualifyingUnit.invalidReason:null}};function Oy(t,e,r){return new Ra(t,r).explainFromTokens(e)}s(Oy,"explainFromTokens");function WD(t,e,r){let{result:n,zone:i,specificOffset:o,invalidReason:a}=Oy(t,e,r);return[n,i,o,a]}s(WD,"parseFromTokens");function Iy(t,e){if(!t)return null;let n=$e.create(e,t).dtFormatter(FD()),i=n.formatToParts(),o=n.resolvedOptions();return i.map(a=>LD(a,t,o))}s(Iy,"formatOptsToTokens");var Gl="Invalid DateTime",AE=864e13;function ps(t){return new Ve("unsupported zone",`the zone "${t.name}" is not supported`)}s(ps,"unsupportedZone");function $l(t){return t.weekData===null&&(t.weekData=Oa(t.c)),t.weekData}s($l,"possiblyCachedWeekData");function Vl(t){return t.localWeekData===null&&(t.localWeekData=Oa(t.c,t.loc.getMinDaysInFirstWeek(),t.loc.getStartOfWeek())),t.localWeekData}s(Vl,"possiblyCachedLocalWeekData");function Xr(t,e){let r={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new ue({...r,...e,old:r})}s(Xr,"clone");function wy(t,e,r){let n=t-e*60*1e3,i=r.offset(n);if(e===i)return[n,e];n-=(i-e)*60*1e3;let o=r.offset(n);return i===o?[n,i]:[t-Math.min(i,o)*60*1e3,Math.max(i,o)]}s(wy,"fixOffset");function ha(t,e){t+=e*60*1e3;let r=new Date(t);return{year:r.getUTCFullYear(),month:r.getUTCMonth()+1,day:r.getUTCDate(),hour:r.getUTCHours(),minute:r.getUTCMinutes(),second:r.getUTCSeconds(),millisecond:r.getUTCMilliseconds()}}s(ha,"tsToObj");function Ea(t,e,r){return wy(Da(t),e,r)}s(Ea,"objToTS");function _E(t,e){let r=t.o,n=t.c.year+Math.trunc(e.years),i=t.c.month+Math.trunc(e.months)+Math.trunc(e.quarters)*3,o={...t.c,year:n,month:i,day:Math.min(t.c.day,Ia(n,i))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},a=ye.fromObject({years:e.years-Math.trunc(e.years),quarters:e.quarters-Math.trunc(e.quarters),months:e.months-Math.trunc(e.months),weeks:e.weeks-Math.trunc(e.weeks),days:e.days-Math.trunc(e.days),hours:e.hours,minutes:e.minutes,seconds:e.seconds,milliseconds:e.milliseconds}).as("milliseconds"),u=Da(o),[c,l]=wy(u,r,t.zone);return a!==0&&(c+=a,l=t.zone.offset(c)),{ts:c,o:l}}s(_E,"adjustTime");function Fn(t,e,r,n,i,o){let{setZone:a,zone:u}=r;if(t&&Object.keys(t).length!==0||e){let c=e||u,l=ue.fromObject(t,{...r,zone:c,specificOffset:o});return a?l:l.setZone(u)}else return ue.invalid(new Ve("unparsable",`the input "${i}" can't be parsed as ${n}`))}s(Fn,"parseDataToDateTime");function ga(t,e,r=!0){return t.isValid?$e.create(re.create("en-US"),{allowZ:r,forceSimple:!0}).formatDateTimeFromString(t,e):null}s(ga,"toTechFormat");function ql(t,e,r){let n=t.c.year>9999||t.c.year<0,i="";if(n&&t.c.year>=0&&(i+="+"),i+=he(t.c.year,n?6:4),r==="year")return i;if(e){if(i+="-",i+=he(t.c.month),r==="month")return i;i+="-"}else if(i+=he(t.c.month),r==="month")return i;return i+=he(t.c.day),i}s(ql,"toISODate");function OE(t,e,r,n,i,o,a){let u=!r||t.c.millisecond!==0||t.c.second!==0,c="";switch(a){case"day":case"month":case"year":break;default:if(c+=he(t.c.hour),a==="hour")break;if(e){if(c+=":",c+=he(t.c.minute),a==="minute")break;u&&(c+=":",c+=he(t.c.second))}else{if(c+=he(t.c.minute),a==="minute")break;u&&(c+=he(t.c.second))}if(a==="second")break;u&&(!n||t.c.millisecond!==0)&&(c+=".",c+=he(t.c.millisecond,3))}return i&&(t.isOffsetFixed&&t.offset===0&&!o?c+="Z":t.o<0?(c+="-",c+=he(Math.trunc(-t.o/60)),c+=":",c+=he(Math.trunc(-t.o%60))):(c+="+",c+=he(Math.trunc(t.o/60)),c+=":",c+=he(Math.trunc(t.o%60)))),o&&(c+="["+t.zone.ianaName+"]"),c}s(OE,"toISOTime");var Ry={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},GD={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},$D={ordinal:1,hour:0,minute:0,second:0,millisecond:0},ya=["year","month","day","hour","minute","second","millisecond"],VD=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],qD=["year","ordinal","hour","minute","second","millisecond"];function Ta(t){let e={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",quarter:"quarter",quarters:"quarter",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[t.toLowerCase()];if(!e)throw new Sa(t);return e}s(Ta,"normalizeUnit");function IE(t){switch(t.toLowerCase()){case"localweekday":case"localweekdays":return"localWeekday";case"localweeknumber":case"localweeknumbers":return"localWeekNumber";case"localweekyear":case"localweekyears":return"localWeekYear";default:return Ta(t)}}s(IE,"normalizeUnitWithLocalWeeks");function KD(t){if(ms===void 0&&(ms=se.now()),t.type!=="iana")return t.offset(ms);let e=t.name,r=ad.get(e);return r===void 0&&(r=t.offset(ms),ad.set(e,r)),r}s(KD,"guessOffsetForZone");function wE(t,e){let r=fr(e.zone,se.defaultZone);if(!r.isValid)return ue.invalid(ps(r));let n=re.fromObject(e),i,o;if(H(t.year))i=se.now();else{for(let c of ya)H(t[c])&&(t[c]=Ry[c]);let a=ZE(t)||ey(t);if(a)return ue.invalid(a);let u=KD(r);[i,o]=Ea(t,u,r)}return new ue({ts:i,zone:r,loc:n,o})}s(wE,"quickDT");function RE(t,e,r){let n=H(r.round)?!0:r.round,i=H(r.rounding)?"trunc":r.rounding,o=s((u,c)=>(u=fd(u,n||r.calendary?0:2,r.calendary?"round":i),e.loc.clone(r).relFormatter(r).format(u,c)),"format"),a=s(u=>r.calendary?e.hasSame(t,u)?0:e.startOf(u).diff(t.startOf(u),u).get(u):e.diff(t,u).get(u),"differ");if(r.unit)return o(a(r.unit),r.unit);for(let u of r.units){let c=a(u);if(Math.abs(c)>=1)return o(c,u)}return o(t>e?-0:0,r.units[r.units.length-1])}s(RE,"diffRelative");function CE(t){let e={},r;return t.length>0&&typeof t[t.length-1]=="object"?(e=t[t.length-1],r=Array.from(t).slice(0,t.length-1)):r=Array.from(t),[e,r]}s(CE,"lastOpts");var ms,ad=new Map,ue=class t{static{s(this,"DateTime")}constructor(e){let r=e.zone||se.defaultZone,n=e.invalid||(Number.isNaN(e.ts)?new Ve("invalid input"):null)||(r.isValid?null:ps(r));this.ts=H(e.ts)?se.now():e.ts;let i=null,o=null;if(!n)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(r))[i,o]=[e.old.c,e.old.o];else{let u=mr(e.o)&&!e.old?e.o:r.offset(this.ts);i=ha(this.ts,u),n=Number.isNaN(i.year)?new Ve("invalid input"):null,i=n?null:i,o=n?null:u}this._zone=r,this.loc=e.loc||re.create(),this.invalid=n,this.weekData=null,this.localWeekData=null,this.c=i,this.o=o,this.isLuxonDateTime=!0}static now(){return new t({})}static local(){let[e,r]=CE(arguments),[n,i,o,a,u,c,l]=r;return wE({year:n,month:i,day:o,hour:a,minute:u,second:c,millisecond:l},e)}static utc(){let[e,r]=CE(arguments),[n,i,o,a,u,c,l]=r;return e.zone=Ke.utcInstance,wE({year:n,month:i,day:o,hour:a,minute:u,second:c,millisecond:l},e)}static fromJSDate(e,r={}){let n=OC(e)?e.valueOf():NaN;if(Number.isNaN(n))return t.invalid("invalid input");let i=fr(r.zone,se.defaultZone);return i.isValid?new t({ts:n,zone:i,loc:re.fromObject(r)}):t.invalid(ps(i))}static fromMillis(e,r={}){if(mr(e))return e<-AE||e>AE?t.invalid("Timestamp out of range"):new t({ts:e,zone:fr(r.zone,se.defaultZone),loc:re.fromObject(r)});throw new _e(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,r={}){if(mr(e))return new t({ts:e*1e3,zone:fr(r.zone,se.defaultZone),loc:re.fromObject(r)});throw new _e("fromSeconds requires a numerical input")}static fromObject(e,r={}){e=e||{};let n=fr(r.zone,se.defaultZone);if(!n.isValid)return t.invalid(ps(n));let i=re.fromObject(r),o=wa(e,IE),{minDaysInFirstWeek:a,startOfWeek:u}=lE(o,i),c=se.now(),l=H(r.specificOffset)?n.offset(c):r.specificOffset,d=!H(o.ordinal),f=!H(o.year),h=!H(o.month)||!H(o.day),m=f||h,y=o.weekYear||o.weekNumber;if((m||d)&&y)throw new pr("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(h&&d)throw new pr("Can't mix ordinal dates with month/day");let E=y||o.weekday&&!m,p,T,A=ha(c,l);E?(p=VD,T=GD,A=Oa(A,a,u)):d?(p=qD,T=$D,A=Bl(A)):(p=ya,T=Ry);let _=!1;for(let G of p){let ee=o[G];H(ee)?_?o[G]=T[G]:o[G]=A[G]:_=!0}let I=E?SC(o,a,u):d?AC(o):ZE(o),O=I||ey(o);if(O)return t.invalid(O);let C=E?uE(o,a,u):d?cE(o):o,[R,w]=Ea(C,l,n),b=new t({ts:R,zone:n,o:w,loc:i});return o.weekday&&m&&e.weekday!==b.weekday?t.invalid("mismatched weekday",`you can't specify both a weekday of ${o.weekday} and a date of ${b.toISO()}`):b.isValid?b:t.invalid(b.invalid)}static fromISO(e,r={}){let[n,i]=fD(e);return Fn(n,i,r,"ISO 8601",e)}static fromRFC2822(e,r={}){let[n,i]=pD(e);return Fn(n,i,r,"RFC 2822",e)}static fromHTTP(e,r={}){let[n,i]=mD(e);return Fn(n,i,r,"HTTP",r)}static fromFormat(e,r,n={}){if(H(e)||H(r))throw new _e("fromFormat requires an input string and a format");let{locale:i=null,numberingSystem:o=null}=n,a=re.fromOpts({locale:i,numberingSystem:o,defaultToEN:!0}),[u,c,l,d]=WD(a,e,r);return d?t.invalid(d):Fn(u,c,n,`format ${r}`,e,l)}static fromString(e,r,n={}){return t.fromFormat(e,r,n)}static fromSQL(e,r={}){let[n,i]=AD(e);return Fn(n,i,r,"SQL",e)}static invalid(e,r=null){if(!e)throw new _e("need to specify a reason the DateTime is invalid");let n=e instanceof Ve?e:new Ve(e,r);if(se.throwOnInvalid)throw new Kl(n);return new t({invalid:n})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}static parseFormatForOpts(e,r={}){let n=Iy(e,re.fromObject(r));return n?n.map(i=>i?i.val:null).join(""):null}static expandFormat(e,r={}){return _y($e.parseFormat(e),re.fromObject(r)).map(i=>i.val).join("")}static resetCache(){ms=void 0,ad.clear()}get(e){return this[e]}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?$l(this).weekYear:NaN}get weekNumber(){return this.isValid?$l(this).weekNumber:NaN}get weekday(){return this.isValid?$l(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?Vl(this).weekday:NaN}get localWeekNumber(){return this.isValid?Vl(this).weekNumber:NaN}get localWeekYear(){return this.isValid?Vl(this).weekYear:NaN}get ordinal(){return this.isValid?Bl(this.c).ordinal:NaN}get monthShort(){return this.isValid?en.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?en.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?en.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?en.weekdays("long",{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:"short",locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:"long",locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return this.isOffsetFixed?!1:this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset}getPossibleOffsets(){if(!this.isValid||this.isOffsetFixed)return[this];let e=864e5,r=6e4,n=Da(this.c),i=this.zone.offset(n-e),o=this.zone.offset(n+e),a=this.zone.offset(n-i*r),u=this.zone.offset(n-o*r);if(a===u)return[this];let c=n-a*r,l=n-u*r,d=ha(c,a),f=ha(l,u);return d.hour===f.hour&&d.minute===f.minute&&d.second===f.second&&d.millisecond===f.millisecond?[Xr(this,{ts:c}),Xr(this,{ts:l})]:[this]}get isInLeapYear(){return ys(this.year)}get daysInMonth(){return Ia(this.year,this.month)}get daysInYear(){return this.isValid?Bn(this.year):NaN}get weeksInWeekYear(){return this.isValid?Es(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?Es(this.localWeekYear,this.loc.getMinDaysInFirstWeek(),this.loc.getStartOfWeek()):NaN}resolvedLocaleOptions(e={}){let{locale:r,numberingSystem:n,calendar:i}=$e.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:r,numberingSystem:n,outputCalendar:i}}toUTC(e=0,r={}){return this.setZone(Ke.instance(e),r)}toLocal(){return this.setZone(se.defaultZone)}setZone(e,{keepLocalTime:r=!1,keepCalendarTime:n=!1}={}){if(e=fr(e,se.defaultZone),e.equals(this.zone))return this;if(e.isValid){let i=this.ts;if(r||n){let o=e.offset(this.ts),a=this.toObject();[i]=Ea(a,o,e)}return Xr(this,{ts:i,zone:e})}else return t.invalid(ps(e))}reconfigure({locale:e,numberingSystem:r,outputCalendar:n}={}){let i=this.loc.clone({locale:e,numberingSystem:r,outputCalendar:n});return Xr(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;let r=wa(e,IE),{minDaysInFirstWeek:n,startOfWeek:i}=lE(r,this.loc),o=!H(r.weekYear)||!H(r.weekNumber)||!H(r.weekday),a=!H(r.ordinal),u=!H(r.year),c=!H(r.month)||!H(r.day),l=u||c,d=r.weekYear||r.weekNumber;if((l||a)&&d)throw new pr("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(c&&a)throw new pr("Can't mix ordinal dates with month/day");let f;o?f=uE({...Oa(this.c,n,i),...r},n,i):H(r.ordinal)?(f={...this.toObject(),...r},H(r.day)&&(f.day=Math.min(Ia(f.year,f.month),f.day))):f=cE({...Bl(this.c),...r});let[h,m]=Ea(f,this.o,this.zone);return Xr(this,{ts:h,o:m})}plus(e){if(!this.isValid)return this;let r=ye.fromDurationLike(e);return Xr(this,_E(this,r))}minus(e){if(!this.isValid)return this;let r=ye.fromDurationLike(e).negate();return Xr(this,_E(this,r))}startOf(e,{useLocaleWeeks:r=!1}={}){if(!this.isValid)return this;let n={},i=ye.normalizeUnit(e);switch(i){case"years":n.month=1;case"quarters":case"months":n.day=1;case"weeks":case"days":n.hour=0;case"hours":n.minute=0;case"minutes":n.second=0;case"seconds":n.millisecond=0;break}if(i==="weeks")if(r){let o=this.loc.getStartOfWeek(),{weekday:a}=this;a<o&&(n.weekNumber=this.weekNumber-1),n.weekday=o}else n.weekday=1;if(i==="quarters"){let o=Math.ceil(this.month/3);n.month=(o-1)*3+1}return this.set(n)}endOf(e,r){return this.isValid?this.plus({[e]:1}).startOf(e,r).minus(1):this}toFormat(e,r={}){return this.isValid?$e.create(this.loc.redefaultToEN(r)).formatDateTimeFromString(this,e):Gl}toLocaleString(e=Aa,r={}){return this.isValid?$e.create(this.loc.clone(r),e).formatDateTime(this):Gl}toLocaleParts(e={}){return this.isValid?$e.create(this.loc.clone(e),e).formatDateTimeParts(this):[]}toISO({format:e="extended",suppressSeconds:r=!1,suppressMilliseconds:n=!1,includeOffset:i=!0,extendedZone:o=!1,precision:a="milliseconds"}={}){if(!this.isValid)return null;a=Ta(a);let u=e==="extended",c=ql(this,u,a);return ya.indexOf(a)>=3&&(c+="T"),c+=OE(this,u,r,n,i,o,a),c}toISODate({format:e="extended",precision:r="day"}={}){return this.isValid?ql(this,e==="extended",Ta(r)):null}toISOWeekDate(){return ga(this,"kkkk-'W'WW-c")}toISOTime({suppressMilliseconds:e=!1,suppressSeconds:r=!1,includeOffset:n=!0,includePrefix:i=!1,extendedZone:o=!1,format:a="extended",precision:u="milliseconds"}={}){return this.isValid?(u=Ta(u),(i&&ya.indexOf(u)>=3?"T":"")+OE(this,a==="extended",r,e,n,o,u)):null}toRFC2822(){return ga(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return ga(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?ql(this,!0):null}toSQLTime({includeOffset:e=!0,includeZone:r=!1,includeOffsetSpace:n=!0}={}){let i="HH:mm:ss.SSS";return(r||e)&&(n&&(i+=" "),r?i+="z":e&&(i+="ZZ")),ga(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():Gl}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`DateTime { ts: ${this.toISO()}, zone: ${this.zone.name}, locale: ${this.locale} }`:`DateTime { Invalid, reason: ${this.invalidReason} }`}valueOf(){return this.toMillis()}toMillis(){return this.isValid?this.ts:NaN}toSeconds(){return this.isValid?this.ts/1e3:NaN}toUnixInteger(){return this.isValid?Math.floor(this.ts/1e3):NaN}toJSON(){return this.toISO()}toBSON(){return this.toJSDate()}toObject(e={}){if(!this.isValid)return{};let r={...this.c};return e.includeConfig&&(r.outputCalendar=this.outputCalendar,r.numberingSystem=this.loc.numberingSystem,r.locale=this.loc.locale),r}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(e,r="milliseconds",n={}){if(!this.isValid||!e.isValid)return ye.invalid("created by diffing an invalid DateTime");let i={locale:this.locale,numberingSystem:this.numberingSystem,...n},o=IC(r).map(ye.normalizeUnit),a=e.valueOf()>this.valueOf(),u=a?this:e,c=a?e:this,l=CD(u,c,o,i);return a?l.negate():l}diffNow(e="milliseconds",r={}){return this.diff(t.now(),e,r)}until(e){return this.isValid?tn.fromDateTimes(this,e):this}hasSame(e,r,n){if(!this.isValid)return!1;let i=e.valueOf(),o=this.setZone(e.zone,{keepLocalTime:!0});return o.startOf(r,n)<=i&&i<=o.endOf(r,n)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(e={}){if(!this.isValid)return null;let r=e.base||t.fromObject({},{zone:this.zone}),n=e.padding?this<r?-e.padding:e.padding:0,i=["years","months","days","hours","minutes","seconds"],o=e.unit;return Array.isArray(e.unit)&&(i=e.unit,o=void 0),RE(r,this.plus(n),{...e,numeric:"always",units:i,unit:o})}toRelativeCalendar(e={}){return this.isValid?RE(e.base||t.fromObject({},{zone:this.zone}),this,{...e,numeric:"auto",units:["years","months","days"],calendary:!0}):null}static min(...e){if(!e.every(t.isDateTime))throw new _e("min requires all arguments be DateTimes");return dE(e,r=>r.valueOf(),Math.min)}static max(...e){if(!e.every(t.isDateTime))throw new _e("max requires all arguments be DateTimes");return dE(e,r=>r.valueOf(),Math.max)}static fromFormatExplain(e,r,n={}){let{locale:i=null,numberingSystem:o=null}=n,a=re.fromOpts({locale:i,numberingSystem:o,defaultToEN:!0});return Oy(a,e,r)}static fromStringExplain(e,r,n={}){return t.fromFormatExplain(e,r,n)}static buildFormatParser(e,r={}){let{locale:n=null,numberingSystem:i=null}=r,o=re.fromOpts({locale:n,numberingSystem:i,defaultToEN:!0});return new Ra(o,e)}static fromFormatParser(e,r,n={}){if(H(e)||H(r))throw new _e("fromFormatParser requires an input string and a format parser");let{locale:i=null,numberingSystem:o=null}=n,a=re.fromOpts({locale:i,numberingSystem:o,defaultToEN:!0});if(!a.equals(r.locale))throw new _e(`fromFormatParser called with a locale of ${a}, but the format parser was created for ${r.locale}`);let{result:u,zone:c,specificOffset:l,invalidReason:d}=r.explainFromTokens(e);return d?t.invalid(d):Fn(u,c,n,`format ${r.format}`,e,l)}static get DATE_SHORT(){return Aa}static get DATE_MED(){return DE}static get DATE_MED_WITH_WEEKDAY(){return tC}static get DATE_FULL(){return bE}static get DATE_HUGE(){return xE}static get TIME_SIMPLE(){return vE}static get TIME_WITH_SECONDS(){return NE}static get TIME_WITH_SHORT_OFFSET(){return PE}static get TIME_WITH_LONG_OFFSET(){return LE}static get TIME_24_SIMPLE(){return UE}static get TIME_24_WITH_SECONDS(){return kE}static get TIME_24_WITH_SHORT_OFFSET(){return ME}static get TIME_24_WITH_LONG_OFFSET(){return FE}static get DATETIME_SHORT(){return BE}static get DATETIME_SHORT_WITH_SECONDS(){return WE}static get DATETIME_MED(){return GE}static get DATETIME_MED_WITH_SECONDS(){return $E}static get DATETIME_MED_WITH_WEEKDAY(){return rC}static get DATETIME_FULL(){return VE}static get DATETIME_FULL_WITH_SECONDS(){return qE}static get DATETIME_HUGE(){return KE}static get DATETIME_HUGE_WITH_SECONDS(){return QE}};function ds(t){if(ue.isDateTime(t))return t;if(t&&t.valueOf&&mr(t.valueOf()))return ue.fromJSDate(t);if(t&&typeof t=="object")return ue.fromObject(t);throw new _e(`Unknown datetime argument: ${t}, of type ${typeof t}`)}s(ds,"friendlyDateTime");var QD="3.7.2";Qe.DateTime=ue;Qe.Duration=ye;Qe.FixedOffsetZone=Ke;Qe.IANAZone=Vt;Qe.Info=en;Qe.Interval=tn;Qe.InvalidZone=_a;Qe.Settings=se;Qe.SystemZone=gs;Qe.VERSION=QD;Qe.Zone=hr});var by=Q((BW,Dy)=>{"use strict";var rn=Cy();Y.prototype.addYear=function(){this._date=this._date.plus({years:1})};Y.prototype.addMonth=function(){this._date=this._date.plus({months:1}).startOf("month")};Y.prototype.addDay=function(){this._date=this._date.plus({days:1}).startOf("day")};Y.prototype.addHour=function(){var t=this._date;this._date=this._date.plus({hours:1}).startOf("hour"),this._date<=t&&(this._date=this._date.plus({hours:1}))};Y.prototype.addMinute=function(){var t=this._date;this._date=this._date.plus({minutes:1}).startOf("minute"),this._date<t&&(this._date=this._date.plus({hours:1}))};Y.prototype.addSecond=function(){var t=this._date;this._date=this._date.plus({seconds:1}).startOf("second"),this._date<t&&(this._date=this._date.plus({hours:1}))};Y.prototype.subtractYear=function(){this._date=this._date.minus({years:1})};Y.prototype.subtractMonth=function(){this._date=this._date.minus({months:1}).endOf("month").startOf("second")};Y.prototype.subtractDay=function(){this._date=this._date.minus({days:1}).endOf("day").startOf("second")};Y.prototype.subtractHour=function(){var t=this._date;this._date=this._date.minus({hours:1}).endOf("hour").startOf("second"),this._date>=t&&(this._date=this._date.minus({hours:1}))};Y.prototype.subtractMinute=function(){var t=this._date;this._date=this._date.minus({minutes:1}).endOf("minute").startOf("second"),this._date>t&&(this._date=this._date.minus({hours:1}))};Y.prototype.subtractSecond=function(){var t=this._date;this._date=this._date.minus({seconds:1}).startOf("second"),this._date>t&&(this._date=this._date.minus({hours:1}))};Y.prototype.getDate=function(){return this._date.day};Y.prototype.getFullYear=function(){return this._date.year};Y.prototype.getDay=function(){var t=this._date.weekday;return t==7?0:t};Y.prototype.getMonth=function(){return this._date.month-1};Y.prototype.getHours=function(){return this._date.hour};Y.prototype.getMinutes=function(){return this._date.minute};Y.prototype.getSeconds=function(){return this._date.second};Y.prototype.getMilliseconds=function(){return this._date.millisecond};Y.prototype.getTime=function(){return this._date.valueOf()};Y.prototype.getUTCDate=function(){return this._getUTC().day};Y.prototype.getUTCFullYear=function(){return this._getUTC().year};Y.prototype.getUTCDay=function(){var t=this._getUTC().weekday;return t==7?0:t};Y.prototype.getUTCMonth=function(){return this._getUTC().month-1};Y.prototype.getUTCHours=function(){return this._getUTC().hour};Y.prototype.getUTCMinutes=function(){return this._getUTC().minute};Y.prototype.getUTCSeconds=function(){return this._getUTC().second};Y.prototype.toISOString=function(){return this._date.toUTC().toISO()};Y.prototype.toJSON=function(){return this._date.toJSON()};Y.prototype.setDate=function(t){this._date=this._date.set({day:t})};Y.prototype.setFullYear=function(t){this._date=this._date.set({year:t})};Y.prototype.setDay=function(t){this._date=this._date.set({weekday:t})};Y.prototype.setMonth=function(t){this._date=this._date.set({month:t+1})};Y.prototype.setHours=function(t){this._date=this._date.set({hour:t})};Y.prototype.setMinutes=function(t){this._date=this._date.set({minute:t})};Y.prototype.setSeconds=function(t){this._date=this._date.set({second:t})};Y.prototype.setMilliseconds=function(t){this._date=this._date.set({millisecond:t})};Y.prototype._getUTC=function(){return this._date.toUTC()};Y.prototype.toString=function(){return this.toDate().toString()};Y.prototype.toDate=function(){return this._date.toJSDate()};Y.prototype.isLastDayOfMonth=function(){var t=this._date.plus({days:1}).startOf("day");return this._date.month!==t.month};Y.prototype.isLastWeekdayOfMonth=function(){var t=this._date.plus({days:7}).startOf("day");return this._date.month!==t.month};function Y(t,e){var r={zone:e};if(t?t instanceof Y?this._date=t._date:t instanceof Date?this._date=rn.DateTime.fromJSDate(t,r):typeof t=="number"?this._date=rn.DateTime.fromMillis(t,r):typeof t=="string"&&(this._date=rn.DateTime.fromISO(t,r),this._date.isValid||(this._date=rn.DateTime.fromRFC2822(t,r)),this._date.isValid||(this._date=rn.DateTime.fromSQL(t,r)),this._date.isValid||(this._date=rn.DateTime.fromFormat(t,"EEE, d MMM yyyy HH:mm:ss",r))):this._date=rn.DateTime.local(),!this._date||!this._date.isValid)throw new Error("CronDate: unhandled timestamp: "+JSON.stringify(t));e&&e!==this._date.zoneName&&(this._date=this._date.setZone(e))}s(Y,"CronDate");Dy.exports=Y});var Ny=Q((GW,vy)=>{"use strict";function nn(t){return{start:t,count:1}}s(nn,"buildRange");function xy(t,e){t.end=e,t.step=e-t.start,t.count=2}s(xy,"completeRangeWithItem");function gd(t,e,r){e&&(e.count===2?(t.push(nn(e.start)),t.push(nn(e.end))):t.push(e)),r&&t.push(r)}s(gd,"finalizeCurrentRange");function jD(t){for(var e=[],r=void 0,n=0;n<t.length;n++){var i=t[n];typeof i!="number"?(gd(e,r,nn(i)),r=void 0):r?r.count===1?xy(r,i):r.step===i-r.end?(r.count++,r.end=i):r.count===2?(e.push(nn(r.start)),r=nn(r.end),xy(r,i)):(gd(e,r),r=nn(i)):r=nn(i)}return gd(e,r),e}s(jD,"compactField");vy.exports=jD});var Ly=Q((VW,Py)=>{"use strict";var HD=Ny();function YD(t,e,r){var n=HD(t);if(n.length===1){var i=n[0],o=i.step;if(o===1&&i.start===e&&i.end===r)return"*";if(o!==1&&i.start===e&&i.end===r-o+1)return"*/"+o}for(var a=[],u=0,c=n.length;u<c;++u){var l=n[u];if(l.count===1){a.push(l.start);continue}var o=l.step;if(l.step===1){a.push(l.start+"-"+l.end);continue}var d=l.start==0?l.count-1:l.count;l.step*d>l.end?a=a.concat(Array.from({length:l.end-l.start+1}).map(function(h,m){var y=l.start+m;return(y-l.start)%l.step===0?y:null}).filter(function(h){return h!=null})):l.end===r-l.step+1?a.push(l.start+"/"+l.step):a.push(l.start+"-"+l.end+"/"+l.step)}return a.join(",")}s(YD,"stringifyField");Py.exports=YD});var My=Q((KW,ky)=>{"use strict";var sn=by(),zD=Ly(),Uy=1e4;function k(t,e){this._options=e,this._utc=e.utc||!1,this._tz=this._utc?"UTC":e.tz,this._currentDate=new sn(e.currentDate,this._tz),this._startDate=e.startDate?new sn(e.startDate,this._tz):null,this._endDate=e.endDate?new sn(e.endDate,this._tz):null,this._isIterator=e.iterator||!1,this._hasIterated=!1,this._nthDayOfWeek=e.nthDayOfWeek||0,this.fields=k._freezeFields(t)}s(k,"CronExpression");k.map=["second","minute","hour","dayOfMonth","month","dayOfWeek"];k.predefined={"@yearly":"0 0 1 1 *","@monthly":"0 0 1 * *","@weekly":"0 0 * * 0","@daily":"0 0 * * *","@hourly":"0 * * * *"};k.constraints=[{min:0,max:59,chars:[]},{min:0,max:59,chars:[]},{min:0,max:23,chars:[]},{min:1,max:31,chars:["L"]},{min:1,max:12,chars:[]},{min:0,max:7,chars:["L"]}];k.daysInMonth=[31,29,31,30,31,30,31,31,30,31,30,31];k.aliases={month:{jan:1,feb:2,mar:3,apr:4,may:5,jun:6,jul:7,aug:8,sep:9,oct:10,nov:11,dec:12},dayOfWeek:{sun:0,mon:1,tue:2,wed:3,thu:4,fri:5,sat:6}};k.parseDefaults=["0","*","*","*","*","*"];k.standardValidCharacters=/^[,*\d/-]+$/;k.dayOfWeekValidCharacters=/^[?,*\dL#/-]+$/;k.dayOfMonthValidCharacters=/^[?,*\dL/-]+$/;k.validCharacters={second:k.standardValidCharacters,minute:k.standardValidCharacters,hour:k.standardValidCharacters,dayOfMonth:k.dayOfMonthValidCharacters,month:k.standardValidCharacters,dayOfWeek:k.dayOfWeekValidCharacters};k._isValidConstraintChar=s(function(e,r){return typeof r!="string"?!1:e.chars.some(function(n){return r.indexOf(n)>-1})},"_isValidConstraintChar");k._parseField=s(function(e,r,n){switch(e){case"month":case"dayOfWeek":var i=k.aliases[e];r=r.replace(/[a-z]{3}/gi,function(c){if(c=c.toLowerCase(),typeof i[c]<"u")return i[c];throw new Error('Validation error, cannot resolve alias "'+c+'"')});break}if(!k.validCharacters[e].test(r))throw new Error("Invalid characters, got value: "+r);r.indexOf("*")!==-1?r=r.replace(/\*/g,n.min+"-"+n.max):r.indexOf("?")!==-1&&(r=r.replace(/\?/g,n.min+"-"+n.max));function o(c){var l=[];function d(y){if(y instanceof Array)for(var E=0,p=y.length;E<p;E++){var T=y[E];if(k._isValidConstraintChar(n,T)){l.push(T);continue}if(typeof T!="number"||Number.isNaN(T)||T<n.min||T>n.max)throw new Error("Constraint error, got value "+T+" expected range "+n.min+"-"+n.max);l.push(T)}else{if(k._isValidConstraintChar(n,y)){l.push(y);return}var A=+y;if(Number.isNaN(A)||A<n.min||A>n.max)throw new Error("Constraint error, got value "+y+" expected range "+n.min+"-"+n.max);e==="dayOfWeek"&&(A=A%7),l.push(A)}}s(d,"handleResult");var f=c.split(",");if(!f.every(function(y){return y.length>0}))throw new Error("Invalid list value format");if(f.length>1)for(var h=0,m=f.length;h<m;h++)d(a(f[h]));else d(a(c));return l.sort(k._sortCompareFn),l}s(o,"parseSequence");function a(c){var l=1,d=c.split("/");if(d.length>2)throw new Error("Invalid repeat: "+c);return d.length>1?(d[0]==+d[0]&&(d=[d[0]+"-"+n.max,d[1]]),u(d[0],d[d.length-1])):u(c,l)}s(a,"parseRepeat");function u(c,l){var d=[],f=c.split("-");if(f.length>1){if(f.length<2)return+c;if(!f[0].length){if(!f[1].length)throw new Error("Invalid range: "+c);return+c}var h=+f[0],m=+f[1];if(Number.isNaN(h)||Number.isNaN(m)||h<n.min||m>n.max)throw new Error("Constraint error, got range "+h+"-"+m+" expected range "+n.min+"-"+n.max);if(h>m)throw new Error("Invalid range: "+c);var y=+l;if(Number.isNaN(y)||y<=0)throw new Error("Constraint error, cannot repeat at every "+y+" time.");e==="dayOfWeek"&&m%7===0&&d.push(0);for(var E=h,p=m;E<=p;E++){var T=d.indexOf(E)!==-1;!T&&y>0&&y%l===0?(y=1,d.push(E)):y++}return d}return Number.isNaN(+c)?c:+c}return s(u,"parseRange"),o(r)},"_parseField");k._sortCompareFn=function(t,e){var r=typeof t=="number",n=typeof e=="number";return r&&n?t-e:!r&&n?1:r&&!n?-1:t.localeCompare(e)};k._handleMaxDaysInMonth=function(t){if(t.month.length===1){var e=k.daysInMonth[t.month[0]-1];if(t.dayOfMonth[0]>e)throw new Error("Invalid explicit day of month definition");return t.dayOfMonth.filter(function(r){return r==="L"?!0:r<=e}).sort(k._sortCompareFn)}};k._freezeFields=function(t){for(var e=0,r=k.map.length;e<r;++e){var n=k.map[e],i=t[n];t[n]=Object.freeze(i)}return Object.freeze(t)};k.prototype._applyTimezoneShift=function(t,e,r){if(r==="Month"||r==="Day"){var n=t.getTime();t[e+r]();var i=t.getTime();n===i&&(t.getMinutes()===0&&t.getSeconds()===0?t.addHour():t.getMinutes()===59&&t.getSeconds()===59&&t.subtractHour())}else{var o=t.getHours();t[e+r]();var a=t.getHours(),u=a-o;u===2?this.fields.hour.length!==24&&(this._dstStart=a):u===0&&t.getMinutes()===0&&t.getSeconds()===0&&this.fields.hour.length!==24&&(this._dstEnd=a)}};k.prototype._findSchedule=s(function(e){function r(T,A){for(var _=0,I=A.length;_<I;_++)if(A[_]>=T)return A[_]===T;return A[0]===T}s(r,"matchSchedule");function n(T,A){if(A<6){if(T.getDate()<8&&A===1)return!0;var _=T.getDate()%7?1:0,I=T.getDate()-T.getDate()%7,O=Math.floor(I/7)+_;return O===A}return!1}s(n,"isNthDayMatch");function i(T){return T.length>0&&T.some(function(A){return typeof A=="string"&&A.indexOf("L")>=0})}s(i,"isLInExpressions"),e=e||!1;var o=e?"subtract":"add",a=new sn(this._currentDate,this._tz),u=this._startDate,c=this._endDate,l=a.getTime(),d=0;function f(T){return T.some(function(A){if(!i([A]))return!1;var _=Number.parseInt(A[0])%7;if(Number.isNaN(_))throw new Error("Invalid last weekday of the month expression: "+A);return a.getDay()===_&&a.isLastWeekdayOfMonth()})}for(s(f,"isLastWeekdayOfMonthMatch");d<Uy;){if(d++,e){if(u&&a.getTime()-u.getTime()<0)throw new Error("Out of the timespan range")}else if(c&&c.getTime()-a.getTime()<0)throw new Error("Out of the timespan range");var h=r(a.getDate(),this.fields.dayOfMonth);i(this.fields.dayOfMonth)&&(h=h||a.isLastDayOfMonth());var m=r(a.getDay(),this.fields.dayOfWeek);i(this.fields.dayOfWeek)&&(m=m||f(this.fields.dayOfWeek));var y=this.fields.dayOfMonth.length>=k.daysInMonth[a.getMonth()],E=this.fields.dayOfWeek.length===k.constraints[5].max-k.constraints[5].min+1,p=a.getHours();if(!h&&(!m||E)){this._applyTimezoneShift(a,o,"Day");continue}if(!y&&E&&!h){this._applyTimezoneShift(a,o,"Day");continue}if(y&&!E&&!m){this._applyTimezoneShift(a,o,"Day");continue}if(this._nthDayOfWeek>0&&!n(a,this._nthDayOfWeek)){this._applyTimezoneShift(a,o,"Day");continue}if(!r(a.getMonth()+1,this.fields.month)){this._applyTimezoneShift(a,o,"Month");continue}if(r(p,this.fields.hour)){if(this._dstEnd===p&&!e){this._dstEnd=null,this._applyTimezoneShift(a,"add","Hour");continue}}else if(this._dstStart!==p){this._dstStart=null,this._applyTimezoneShift(a,o,"Hour");continue}else if(!r(p-1,this.fields.hour)){a[o+"Hour"]();continue}if(!r(a.getMinutes(),this.fields.minute)){this._applyTimezoneShift(a,o,"Minute");continue}if(!r(a.getSeconds(),this.fields.second)){this._applyTimezoneShift(a,o,"Second");continue}if(l===a.getTime()){o==="add"||a.getMilliseconds()===0?this._applyTimezoneShift(a,o,"Second"):a.setMilliseconds(0);continue}break}if(d>=Uy)throw new Error("Invalid expression, loop limit exceeded");return this._currentDate=new sn(a,this._tz),this._hasIterated=!0,a},"_findSchedule");k.prototype.next=s(function(){var e=this._findSchedule();return this._isIterator?{value:e,done:!this.hasNext()}:e},"next");k.prototype.prev=s(function(){var e=this._findSchedule(!0);return this._isIterator?{value:e,done:!this.hasPrev()}:e},"prev");k.prototype.hasNext=function(){var t=this._currentDate,e=this._hasIterated;try{return this._findSchedule(),!0}catch{return!1}finally{this._currentDate=t,this._hasIterated=e}};k.prototype.hasPrev=function(){var t=this._currentDate,e=this._hasIterated;try{return this._findSchedule(!0),!0}catch{return!1}finally{this._currentDate=t,this._hasIterated=e}};k.prototype.iterate=s(function(e,r){var n=[];if(e>=0)for(var i=0,o=e;i<o;i++)try{var a=this.next();n.push(a),r&&r(a,i)}catch{break}else for(var i=0,o=e;i>o;i--)try{var a=this.prev();n.push(a),r&&r(a,i)}catch{break}return n},"iterate");k.prototype.reset=s(function(e){this._currentDate=new sn(e||this._options.currentDate)},"reset");k.prototype.stringify=s(function(e){for(var r=[],n=e?0:1,i=k.map.length;n<i;++n){var o=k.map[n],a=this.fields[o],u=k.constraints[n];o==="dayOfMonth"&&this.fields.month.length===1?u={min:1,max:k.daysInMonth[this.fields.month[0]-1]}:o==="dayOfWeek"&&(u={min:0,max:6},a=a[a.length-1]===7?a.slice(0,-1):a),r.push(zD(a,u.min,u.max))}return r.join(" ")},"stringify");k.parse=s(function(e,r){var n=this;typeof r=="function"&&(r={});function i(o,a){a||(a={}),typeof a.currentDate>"u"&&(a.currentDate=new sn(void 0,n._tz)),k.predefined[o]&&(o=k.predefined[o]);var u=[],c=(o+"").trim().split(/\s+/);if(c.length>6)throw new Error("Invalid cron expression");for(var l=k.map.length-c.length,d=0,f=k.map.length;d<f;++d){var h=k.map[d],m=c[c.length>f?d:d-l];if(d<l||!m)u.push(k._parseField(h,k.parseDefaults[d],k.constraints[d]));else{var y=h==="dayOfWeek"?A(m):m;u.push(k._parseField(h,y,k.constraints[d]))}}for(var E={},d=0,f=k.map.length;d<f;d++){var p=k.map[d];E[p]=u[d]}var T=k._handleMaxDaysInMonth(E);return E.dayOfMonth=T||E.dayOfMonth,new k(E,a);function A(_){var I=_.split("#");if(I.length>1){var O=+I[I.length-1];if(/,/.test(_))throw new Error("Constraint error, invalid dayOfWeek `#` and `,` special characters are incompatible");if(/\//.test(_))throw new Error("Constraint error, invalid dayOfWeek `#` and `/` special characters are incompatible");if(/-/.test(_))throw new Error("Constraint error, invalid dayOfWeek `#` and `-` special characters are incompatible");if(I.length>2||Number.isNaN(O)||O<1||O>5)throw new Error("Constraint error, invalid dayOfWeek occurrence number (#)");return a.nthDayOfWeek=O,I[0]}return _}s(A,"parseNthDay")}return s(i,"parse"),i(e,r)},"parse");k.fieldsToExpression=s(function(e,r){function n(h,m,y){if(!m)throw new Error("Validation error, Field "+h+" is missing");if(m.length===0)throw new Error("Validation error, Field "+h+" contains no values");for(var E=0,p=m.length;E<p;E++){var T=m[E];if(!k._isValidConstraintChar(y,T)&&(typeof T!="number"||Number.isNaN(T)||T<y.min||T>y.max))throw new Error("Constraint error, got value "+T+" expected range "+y.min+"-"+y.max)}}s(n,"validateConstraints");for(var i={},o=0,a=k.map.length;o<a;++o){var u=k.map[o],c=e[u];n(u,c,k.constraints[o]);for(var l=[],d=-1;++d<c.length;)l[d]=c[d];if(c=l.sort(k._sortCompareFn).filter(function(h,m,y){return!m||h!==y[m-1]}),c.length!==l.length)throw new Error("Validation error, Field "+u+" contains duplicate values");i[u]=c}var f=k._handleMaxDaysInMonth(i);return i.dayOfMonth=f||i.dayOfMonth,new k(i,r||{})},"fieldsToExpression");ky.exports=k});var By=Q((jW,Fy)=>{"use strict";var va=My();function gr(){}s(gr,"CronParser");gr._parseEntry=s(function(e){var r=e.split(" ");if(r.length===6)return{interval:va.parse(e)};if(r.length>6)return{interval:va.parse(r.slice(0,6).join(" ")),command:r.slice(6,r.length)};throw new Error("Invalid entry: "+e)},"_parseEntry");gr.parseExpression=s(function(e,r){return va.parse(e,r)},"parseExpression");gr.fieldsToExpression=s(function(e,r){return va.fieldsToExpression(e,r)},"fieldsToExpression");gr.parseString=s(function(e){for(var r=e.split(`
|
|
5
|
-
`),n={variables:{},expressions:[],errors:{}},i=0,o=r.length;i<o;i++){var a=r[i],u=null,c=a.trim();if(c.length>0){if(c.match(/^#/))continue;if(u=c.match(/^(.*)=(.*)$/))n.variables[u[1]]=u[2];else{var l=null;try{l=gr._parseEntry("0 "+c),n.expressions.push(l.interval)}catch(d){n.errors[c]=d}}}}return n},"parseString");gr.parseFile=s(function(e,r){require("fs").readFile(e,function(n,i){if(n){r(n);return}return r(null,gr.parseString(i.toString()))})},"parseFile");Fy.exports=gr});var iF={};P(iF,{APIWarning:()=>In,ActiveContentFileError:()=>Vu,AutomationViewMode:()=>Wa,BUDIBASE_DATASOURCE_TYPE:()=>Hd,BadRequestError:()=>mo,BudibaseError:()=>po,Config:()=>ef,Cookie:()=>yr,DEFAULT_BB_DATASOURCE_ID:()=>bn,DEFAULT_EMPLOYEE_TABLE_ID:()=>Xd,DEFAULT_EXPENSES_TABLE_ID:()=>Jd,DEFAULT_INVENTORY_TABLE_ID:()=>zd,DEFAULT_JOBS_TABLE_ID:()=>Yd,DEFAULT_TENANT_ID:()=>ce,DeprecatedViews:()=>jn,DesignDocuments:()=>Cs,DocumentType:()=>ae,Duration:()=>me,EmailUnavailableError:()=>er,Endpoint:()=>Bc,EndpointGroup:()=>wn,EndpointGroupList:()=>Bo,FeatureDisabledError:()=>Qu,FeatureDisabledWarning:()=>Cc,ForbiddenError:()=>qu,GlobalRole:()=>Zd,HTTPError:()=>Fe,Header:()=>Ne,InternalTable:()=>wt,InvalidAPIKeyWarning:()=>wi,MAX_VALID_DATE:()=>Va,MIN_VALID_DATE:()=>sT,NotFoundError:()=>$u,NotImplementedError:()=>Ku,RedisClient:()=>Re,SEPARATOR:()=>D,SQLITE_DESIGN_DOC_ID:()=>vt,SQS_DATASOURCE_INTERNAL:()=>jd,StaticDatabases:()=>pe,UNICODE_MAX:()=>ve,USER_METADATA_PREFIX:()=>Rs,UnexpectedError:()=>Gu,UsageLimitError:()=>ju,UsageLimitWarning:()=>Rc,UserStatus:()=>$a,ViewName:()=>Kt,WORKSPACE_DEV:()=>Ga,WORKSPACE_DEV_PREFIX:()=>nt,WORKSPACE_PREFIX:()=>rt,accounts:()=>Sn,auth:()=>Qm,blacklist:()=>dp,cache:()=>Co,configs:()=>tr,constants:()=>tf,context:()=>le,csv:()=>ah,db:()=>Ir,docIds:()=>Qf,docUpdates:()=>Jm,encryption:()=>Fm,env:()=>g,errors:()=>Yu,events:()=>Ti,features:()=>Pm,getErrorMessage:()=>MA,getPublicError:()=>Hu,init:()=>nF,installation:()=>ec,locks:()=>yn,logging:()=>io,middleware:()=>Km,objectStore:()=>Cp,permissions:()=>xm,platform:()=>fo,plugins:()=>Hm,queue:()=>Pp,redis:()=>Ym,roles:()=>bm,security:()=>Qp,sessions:()=>zu,setEnv:()=>bs,sql:()=>oh,tenancy:()=>rF,timers:()=>Ru,userUtils:()=>am,users:()=>Ai,utils:()=>ai,warnings:()=>Bm,withEnv:()=>lT});module.exports=MO(iF);var tr={};P(tr,{analyticsEnabled:()=>Ju,generateConfigID:()=>No,getConfig:()=>Ge,getDefaultGoogleConfig:()=>gm,getGoogleConfig:()=>fc,getGoogleDatasourceConfig:()=>ym,getOIDCConfig:()=>fk,getOIDCConfigById:()=>Tm,getOIDCLogosDoc:()=>lk,getPlatformUrl:()=>Po,getRecaptchaConfig:()=>hk,getSCIMConfig:()=>mk,getSMTPConfig:()=>pk,getSMTPConfigDoc:()=>v_,getSettingsConfig:()=>Em,getSettingsConfigDoc:()=>_i,getTranslationsConfig:()=>uk,getTranslationsConfigDoc:()=>x_,save:()=>ak});var FO=["user:created","user:updated","user:deleted","user:admin:assigned","user:admin:removed","user:builder:assigned","user:builder:removed","user_group:created","user_group:updated","user_group:deleted","user_group:user_added","user_group:users_deleted","user_group:permissions_edited"],BO=["automation:deleted","workspace_app:deleted","datasource:deleted","table:deleted","query:deleted","view:deleted"],lh=[...FO,...BO],dh={"user:created":'User "{{ email }}" created{{#if viaScim}} via SCIM{{/if}}',"user:updated":'User "{{ email }}" updated{{#if viaScim}} via SCIM{{/if}}',"user:deleted":'User "{{ email }}" deleted{{#if viaScim}} via SCIM{{/if}}',"user:admin:assigned":'User "{{ email }}" admin role assigned',"user:admin:removed":'User "{{ email }}" admin role removed',"user:builder:assigned":'User "{{ email }}" builder role assigned',"user:builder:removed":'User "{{ email }}" builder role removed',"user:invited":'User "{{ email }}" invited',"user:invite:accepted":'User "{{ email }}" accepted invite',"user:password:updated":'User "{{ email }}" password updated',"user:password:reset:requested":'User "{{ email }}" password reset requested',"user:password:reset":'User "{{ email }}" password reset',"user_group:created":'User group "{{ name }}" created{{#if viaScim}} via SCIM{{/if}}',"user_group:updated":'User group "{{ name }}" updated{{#if viaScim}} via SCIM{{/if}}',"user_group:deleted":'User group "{{ name }}" deleted{{#if viaScim}} via SCIM{{/if}}',"user_group:user_added":'User group "{{ name }}" {{ count }} users added{{#if viaScim}} via SCIM{{/if}}',"user_group:users_deleted":'User group "{{ name }}" {{ count }} users removed{{#if viaScim}} via SCIM{{/if}}',"user_group:permissions_edited":'User group "{{ name }}" permissions edited',"user:password:force:reset":void 0,"user_group:onboarding_added":void 0,"user:onboarding:complete":void 0,"user:data:collaboration":void 0,"email:smtp:created":"Email configuration created","email:smtp:updated":"Email configuration updated","ai:config:created":'AI configuration "{{ name }}" created',"ai:config:updated":'AI configuration "{{ name }}" updated',"ai:config:deleted":'AI configuration "{{ name }}" deleted',"ai:agent:created":'AI agent "{{ name }}" created',"ai:agent:updated":'AI agent "{{ name }}" updated',"ai:agent:deleted":'AI agent "{{ name }}" deleted',"rag:file:uploaded":void 0,"rag:file:deleted":void 0,"rag:file:sharepoint:connected":void 0,"rag:file:sharepoint:disconnected":void 0,"rag:file:sharepoint:sync":void 0,"rag:file:processed":void 0,"auth:sso:created":"SSO configuration created","auth:sso:updated":"SSO configuration updated","auth:sso:activated":"SSO configuration activated","auth:sso:deactivated":"SSO configuration deactivated","auth:login":'User "{{ email }}" logged in',"auth:logout":'User "{{ email }}" logged out',"org:info:name:updated":"Organisation name updated","org:info:logo:updated":"Organisation logo updated","org:platformurl:updated":"Organisation platform URL updated","app:created":'App "{{ name }}" created',"app:updated":'App "{{ name }}" updated',"app:deleted":'App "{{ name }}" deleted',"app:duplicated":'App "{{ name }}" duplicated',"app:published":'App "{{ name }}" published',"app:unpublished":'App "{{ name }}" unpublished',"app:template:imported":'App "{{ name }}" template imported',"app:file:imported":'App "{{ name }}" file imported',"app:version:updated":'App "{{ name }}" version updated',"app:version:reverted":'App "{{ name }}" version reverted',"app:reverted":'App "{{ name }}" reverted',"app:exported":'App "{{ name }}" exported',"app:backup:restored":'App backup "{{ name }}" restored',"app:backup:triggered":'App backup "{{ name }}" triggered',"datasource:created":"Datasource created","datasource:updated":"Datasource updated","datasource:deleted":"Datasource deleted","query:created":"Query created","query:updated":"Query updated","query:deleted":"Query deleted","query:import":"Query import","queries:run":void 0,"query:previewed":void 0,"table:created":'Table "{{ name }}" created',"table:updated":'Table "{{ name }}" updated',"table:deleted":'Table "{{ name }}" deleted',"table:exported":'Table "{{ name }}" exported',"table:imported":'Table "{{ name }}" imported',"table:data:imported":"Data imported to table","rows:created":"Rows created","rows:imported":"Rows imported","automation:created":'Automation "{{ name }}" created',"automation:deleted":'Automation "{{ name }}" deleted',"automation:step:created":'Automation "{{ name }}" step added',"automation:step:deleted":'Automation "{{ name }}" step removed',"automation:tested":void 0,"automations:run":void 0,"automation:trigger:updated":void 0,"screen:created":'Screen "{{ name }}" created',"screen:deleted":'Screen "{{ name }}" deleted',"component:created":"Component created","component:deleted":"Component deleted","environment_variable:created":"Environment variable created","environment_variable:deleted":"Environment variable deleted","environment_variable:upgrade_panel_opened":void 0,"plugin:imported":"Plugin imported","plugin:deleted":"Plugin deleted","plugin:init":void 0,"action:automation_step:executed":void 0,"action:automation_step:failed":void 0,"action:crud:executed":void 0,"action:crud:failed":void 0,"action:ai_agent:executed":void 0,"action:ai_agent:failed":void 0,"role:created":void 0,"role:updated":void 0,"role:deleted":void 0,"role:assigned":void 0,"role:unassigned":void 0,"license:plan:changed":void 0,"license:activated":void 0,"license:payment:failed":void 0,"license:payment:recovered":void 0,"license:checkout:opened":void 0,"license:checkout:success":void 0,"license:portal:opened":void 0,"account:created":void 0,"account:deleted":void 0,"account:verified":void 0,"app:backfill:succeeded":void 0,"app:backfill:failed":void 0,"tenant:backfill:succeeded":void 0,"tenant:backfill:failed":void 0,"installation:backfill:succeeded":void 0,"installation:backfill:failed":void 0,"layout:created":void 0,"layout:deleted":void 0,"view:created":void 0,"view:updated":void 0,"view:deleted":void 0,"view:exported":void 0,"view:filter:created":void 0,"view:filter:updated":void 0,"view:filter:deleted":void 0,"view:calculation:created":void 0,"view:calculation:updated":void 0,"view:calculation:deleted":void 0,"view:join:created":void 0,"served:builder":void 0,"served:app":void 0,"served:app:preview":void 0,"analytics:opt:out":void 0,"analytics:opt:in":void 0,"installation:version:checked":void 0,"installation:version:upgraded":void 0,"installation:version:downgraded":void 0,"installation:firstStartup":void 0,"audit_log:filtered":void 0,"audit_log:downloaded":void 0,"row_action:created":void 0,"workspace_app:created":void 0,"workspace_app:deleted":void 0,"workspace_app:updated":void 0,"resource:copied_to_workspace":"{{ resource.type }} copied to workspace"};var Wc=(n=>(n.SQL="sql",n.JSON="json",n.FIELDS="fields",n))(Wc||{}),Gc=(m=>(m.STRING="string",m.CODE="code",m.LONGFORM="longForm",m.SENSITIVE_LONGFORM="sensitiveLongForm",m.BOOLEAN="boolean",m.NUMBER="number",m.PASSWORD="password",m.LIST="list",m.OBJECT="object",m.JSON="json",m.FILE="file",m.FIELD_GROUP="fieldGroup",m.SELECT="select",m))(Gc||{}),Go=(T=>(T.AIRTABLE="AIRTABLE",T.ARANGODB="ARANGODB",T.BUDIBASE="BUDIBASE",T.COUCHDB="COUCHDB",T.DYNAMODB="DYNAMODB",T.ELASTICSEARCH="ELASTICSEARCH",T.FIRESTORE="FIRESTORE",T.GOOGLE_SHEETS="GOOGLE_SHEETS",T.MONGODB="MONGODB",T.MYSQL="MYSQL",T.ORACLE="ORACLE",T.POSTGRES="POSTGRES",T.REDIS="REDIS",T.REST="REST",T.S3="S3",T.SNOWFLAKE="SNOWFLAKE",T.SQL_SERVER="SQL_SERVER",T))(Go||{});var $c=(r=>(r.CONNECTION_CHECKING="connection",r.FETCH_TABLE_NAMES="fetch_table_names",r))($c||{});var WO=W(require("lodash/isPlainObject"));var Gr=(a=>(a.EQUAL="equal",a.NOT_EQUAL="notEqual",a.EMPTY="empty",a.NOT_EMPTY="notEmpty",a.FUZZY="fuzzy",a.STRING="string",a))(Gr||{}),cr=(o=>(o.CONTAINS="contains",o.NOT_CONTAINS="notContains",o.CONTAINS_ANY="containsAny",o.ONE_OF="oneOf",o.NOT_ONE_OF="notOneOf",o))(cr||{}),Cn=(e=>(e.RANGE="range",e))(Cn||{}),xi=(r=>(r.AND="$and",r.OR="$or",r))(xi||{});function $o(t){return Object.values(xi).includes(t)}s($o,"isLogicalSearchOperator");function fh(t){return Object.values(Gr).includes(t)}s(fh,"isBasicSearchOperator");function ph(t){return Object.values(cr).includes(t)}s(ph,"isArraySearchOperator");function Vo(t){return Object.values(Cn).includes(t)}s(Vo,"isRangeSearchOperator");var mh=s(t=>typeof t=="object"&&t._id&&t._rev,"isDocument");var vi=(o=>(o.USER="user",o.HEADER="header",o.QUERY="query",o.SUBDOMAIN="subdomain",o.PATH="path",o))(vi||{});var Ni=(i=>(i.READ="read",i.WRITE="write",i.EXECUTE="execute",i.ADMIN="admin",i))(Ni||{});var qo=(f=>(f.WORKSPACE="app",f.TABLE="table",f.USER="user",f.AUTOMATION="automation",f.WEBHOOK="webhook",f.BUILDER="builder",f.CREATOR="creator",f.GLOBAL_BUILDER="globalBuilder",f.QUERY="query",f.VIEW="view",f.LEGACY_VIEW="legacy_view",f))(qo||{});var Ko=s(t=>t.hosting==="cloud","isCloudAccount");var Qo=s(t=>t.authType==="sso","isSSOAccount");var D="_",ve="\uFFF0",It=s(t=>`${t}_`,"prefixed"),ae=($=>($.USER="us",$.GROUP="gr",$.CONFIG="config",$.TEMPLATE="template",$.WORKSPACE="app",$.DEV="dev",$.WORKSPACE_DEV="app_dev",$.WORKSPACE_METADATA="app_metadata",$.ROLE="role",$.DEV_INFO="devinfo",$.AUTOMATION_LOG="log_au",$.ACCOUNT_METADATA="acc_metadata",$.PLUGIN="plg",$.DATASOURCE="datasource",$.DATASOURCE_PLUS="datasource_plus",$.WORKSPACE_BACKUP="backup",$.TABLE="ta",$.ROW="ro",$.AUTOMATION="au",$.LINK="li",$.WEBHOOK="wh",$.INSTANCE="inst",$.LAYOUT="layout",$.SCREEN="screen",$.QUERY="query",$.DEPLOYMENTS="deployments",$.METADATA="metadata",$.MEM_VIEW="view",$.USER_FLAG="flag",$.AUTOMATION_METADATA="meta_au",$.AUDIT_LOG="al",$.SCIM_LOG="scimlog",$.ROW_ACTIONS="ra",$.OAUTH2_CONFIG="oauth2",$.OAUTH2_CONFIG_LOG="oauth2log",$.AGENT="agent",$.CHAT_APP="chatapp",$.CHAT_CONVERSATION="chatconvo",$.CHAT_IDENTITY_LINK="chatidentitylink",$.AGENT_TOOL_SOURCE="agenttoolsource",$.AGENT_FILE="agentfile",$.AGENT_LOG_SESSION="agentlogsession",$.AGENT_LOG_REQUEST="agentlogrequest",$.AGENT_REQUEST="agentrequest",$.AGENT_TEST_SUITE="agenttestsuite",$.AGENT_TEST_RUN="agenttestrun",$.AGENT_KNOWLEDGE_SOURCE_SYNC_STATE="agentknowledgesync",$.AGENT_KNOWLEDGE_SOURCE_CONNECTION="agentknowledgeconn",$.KNOWLEDGE_BASE_FILE="knowledgebasefile",$.AI_CONFIG="aiconfig",$.LITELLM_KEY="litellmkey",$.KNOWLEDGE_BASE="knowledgebase",$.WORKSPACE_APP="workspace_app",$.WORKSPACE_FAVOURITE="workspace_favourite",$.PROJECT="project",$.AUTO_COLUMN_STATE="autocolumn_state",$.ESCALATION_CONTEXT="escalation_context",$.ESCALATION_NOTIFICATION="escalation_notification",$))(ae||{});var wt=(e=>(e.USER_METADATA="ta_users",e))(wt||{});function jo(t){return!!t.providerType}s(jo,"isSSOUser");var Vc=(f=>(f.OBJECT="object",f.STRING="string",f.BOOLEAN="boolean",f.NUMBER="number",f.ARRAY="array",f.JSON="json",f.DATE="date",f.DATETIME="datetime",f.ATTACHMENT="attachment",f.LONGFORM="longform",f.JS="javascript",f))(Vc||{}),qc=(C=>(C.TABLE="table",C.ROW="row",C.ROWS="rows",C.WIDE="wide",C.QUERY="query",C.QUERY_PARAMS="queryParams",C.QUERY_LIMIT="queryLimit",C.LOOP_OPTION="loopOption",C.ITEM="item",C.CODE="code",C.FILTERS="filters",C.COLUMN="column",C.TRIGGER_SCHEMA="triggerSchema",C.CRON="cron",C.WEBHOOK_URL="webhookUrl",C.AUTOMATION="automation",C.AUTOMATION_FIELDS="automationFields",C.MULTI_ATTACHMENTS="multi_attachments",C.TRIGGER_FILTER="trigger_filter",C.CATEGORIES="categories",C.AGENT="agent",C.OUTPUT_SCHEMA="outputSchema",C))(qc||{}),Kc=(c=>(c.ROW_SAVED="ROW_SAVED",c.ROW_UPDATED="ROW_UPDATED",c.ROW_DELETED="ROW_DELETED",c.WEBHOOK="WEBHOOK",c.APP="APP",c.CRON="CRON",c.ROW_ACTION="ROW_ACTION",c.EMAIL="EMAIL",c))(Kc||{});var Qc=(B=>(B.SEND_EMAIL_SMTP="SEND_EMAIL_SMTP",B.CREATE_ROW="CREATE_ROW",B.GET_ROW="GET_ROW",B.UPDATE_ROW="UPDATE_ROW",B.DELETE_ROW="DELETE_ROW",B.QUERY_ROWS="QUERY_ROWS",B.EXECUTE_BASH="EXECUTE_BASH",B.OUTGOING_WEBHOOK="OUTGOING_WEBHOOK",B.EXECUTE_SCRIPT="EXECUTE_SCRIPT",B.EXECUTE_SCRIPT_V2="EXECUTE_SCRIPT_V2",B.EXECUTE_QUERY="EXECUTE_QUERY",B.SERVER_LOG="SERVER_LOG",B.DELAY="DELAY",B.FILTER="FILTER",B.API_REQUEST="API_REQUEST",B.LOOP="LOOP",B.COLLECT="COLLECT",B.OPENAI="OPENAI",B.TRIGGER_AUTOMATION_RUN="TRIGGER_AUTOMATION_RUN",B.BRANCH="BRANCH",B.CLASSIFY_CONTENT="CLASSIFY_CONTENT",B.PROMPT_LLM="PROMPT_LLM",B.TRANSLATE="TRANSLATE",B.SUMMARISE="SUMMARISE",B.GENERATE_TEXT="GENERATE_TEXT",B.EXTRACT_FILE_DATA="EXTRACT_FILE_DATA",B.EXTRACT_STATE="EXTRACT_STATE",B.LOOP_V2="LOOP_V2",B.AGENT="AGENT",B.ESCALATION="ESCALATION",B.discord="discord",B.slack="slack",B.zapier="zapier",B.integromat="integromat",B.n8n="n8n",B))(Qc||{}),hh=[...Object.values(Qc),...Object.values(Kc)];function gh(t){return t.stepId==="BRANCH"}s(gh,"isBranchStep");var jc="bb_internal";var Eh=["attachment_single","attachment","signature_single","bb_reference","json","array"];var tf={};P(tf,{AutomationViewMode:()=>Wa,BUDIBASE_DATASOURCE_TYPE:()=>Hd,Config:()=>ef,Cookie:()=>yr,DEFAULT_BB_DATASOURCE_ID:()=>bn,DEFAULT_EMPLOYEE_TABLE_ID:()=>Xd,DEFAULT_EXPENSES_TABLE_ID:()=>Jd,DEFAULT_INVENTORY_TABLE_ID:()=>zd,DEFAULT_JOBS_TABLE_ID:()=>Yd,DEFAULT_TENANT_ID:()=>ce,DeprecatedViews:()=>jn,DesignDocuments:()=>Cs,DocumentType:()=>ae,GlobalRole:()=>Zd,Header:()=>Ne,InternalTable:()=>wt,MAX_VALID_DATE:()=>Va,MIN_VALID_DATE:()=>sT,SEPARATOR:()=>D,SQLITE_DESIGN_DOC_ID:()=>vt,SQS_DATASOURCE_INTERNAL:()=>jd,StaticDatabases:()=>pe,UNICODE_MAX:()=>ve,USER_METADATA_PREFIX:()=>Rs,UserStatus:()=>$a,ViewName:()=>Kt,WORKSPACE_DEV:()=>Ga,WORKSPACE_DEV_PREFIX:()=>nt,WORKSPACE_PREFIX:()=>rt});var Ne=(I=>(I.API_KEY="x-budibase-api-key",I.LICENSE_KEY="x-budibase-license-key",I.API_VER="x-budibase-api-version",I.APP_ID="x-budibase-app-id",I.SESSION_ID="x-budibase-session-id",I.CLIENT="x-budibase-client",I.TYPE="x-budibase-type",I.PREVIEW_ROLE="x-budibase-role",I.TENANT_ID="x-budibase-tenant-id",I.VERIFICATION_CODE="x-budibase-verification-code",I.RETURN_VERIFICATION_CODE="x-budibase-return-verification-code",I.RESET_PASSWORD_CODE="x-budibase-reset-password-code",I.RETURN_RESET_PASSWORD_CODE="x-budibase-return-reset-password-code",I.TOKEN="x-budibase-token",I.CSRF_TOKEN="x-csrf-token",I.CORRELATION_ID="x-budibase-correlation-id",I.AUTHORIZATION="authorization",I.MIGRATING_APP="x-budibase-migrating-app",I.SKIP_MIGRATING_WAIT="x-budibase-migrating-app-skip-wait",I.COOKIE="cookie",I))(Ne||{});var Dn={WORKSPACES:"/builder/apps",SETTINGS_EMAIL:"/builder/settings/email",SETTINGS_AUTH:"/builder/settings/auth",SETTINGS_PEOPLE_USERS:"/builder/settings/people/users",APPS:"/builder/apps"},Pi={ACCOUNT:"/portal/account",BILLING:"/portal/billing",TENANTS:"/portal/tenants",UPGRADE:"/portal/upgrade"};var Pe={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"}},yh={integer:{max:2147483647,min:-2147483648},int:{max:2147483647,min:-2147483648},smallint:{max:32767,min:-32768},mediumint:{max:8388607,min:-8388608}};var bn="datasource_internal_bb_default";var Er={};P(Er,{ColumnSplitter:()=>Ld,NoEmptyFilterStrings:()=>Zy,buildQuery:()=>eT,cleanupQuery:()=>Md,fixupFilterArrays:()=>Bd,getKeyNumbering:()=>Fd,getValidOperatorsForType:()=>Cb,hasFilters:()=>Ud,limit:()=>rT,recurseLogicalOperators:()=>kd,removeKeyNumbering:()=>Ho,runQuery:()=>ka,search:()=>xb,sort:()=>tT,splitFiltersArray:()=>Yo});var Qn=W(Th());var Rt={};P(Rt,{filterValueToLabel:()=>QO,hasSchema:()=>jO,isSupportedUserSearch:()=>_h,nameToUrl:()=>XO,parallelForeach:()=>KO,processSearchFilters:()=>zc,toMap:()=>YO,trimOtherProps:()=>HO,unreachable:()=>qO});var Ah=W(require("lodash/pick"));var VO=["field","operator","value","type","externalType","valueType","noValue","formulaType"];function qO(t,e){let r=e?.message||`No such case in exhaustive switch: ${t}`;if(!!!e?.doNotThrow)throw new Error(r)}s(qO,"unreachable");async function KO(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(KO,"parallelForeach");function QO(){return Object.keys(Pe).reduce((t,e)=>{let n=Pe[e];return t[n.value]=n.label,t},{})}s(QO,"filterValueToLabel");function jO(t){return typeof t=="object"&&!Array.isArray(t)&&t!==null&&!(t instanceof Date)&&Object.keys(t).length>0}s(jO,"hasSchema");function HO(t,e){return Object.keys(t).filter(n=>e.includes(n)).reduce((n,i)=>({...n,[i]:t[i]}),{})}s(HO,"trimOtherProps");function _h(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($o(o)){for(let l of t[o].conditions)if(!_h(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(_h,"isSupportedUserSearch");function zc(t){if(!t||t.length===0)return;let{allOr:e,onEmptyFilter:r,filters:n}=Yo(t);return{logicalOperator:"all",onEmptyFilter:r||"all",groups:[{logicalOperator:e?"any":"all",filters:n.map(i=>{let o=(0,Ah.default)(i,VO);return o.field=Ho(o.field),o})}]}}s(zc,"processSearchFilters");function YO(t,e){return e.reduce((r,n)=>(r[n[t]]=n,r),{})}s(YO,"toMap");var zO=s(t=>t?t.trim():null,"resolveWorkspaceName"),JO=s(t=>{let e,r=zO(t);e=r?r.toLowerCase():"";let n=e?e.replace(/\s+/g,"-"):"";return encodeURI(n)},"resolveWorkspaceUrl"),XO=s(t=>{let e=JO(t);return ZO(e)},"nameToUrl"),ZO=s(t=>(t&&!t.startsWith("/")&&(t=`/${t}`),t===""?null:t),"tidyUrl");var Ue={};P(Ue,{accountPortalAccountUrl:()=>Id,accountPortalBillingUrl:()=>wd,accountPortalUpgradeUrl:()=>Rd,agentChatUrl:()=>Nd,appAgentUrl:()=>La,appChatUrl:()=>Pa,applyBaseUrl:()=>Qy,builderAppsUrl:()=>vd,builderSettingsAuthUrl:()=>bd,builderSettingsEmailUrl:()=>Dd,builderSettingsPeopleUsersUrl:()=>xd,builderWorkspacesUrl:()=>Cd,cancelableTimeout:()=>Oh,cron:()=>Ob,deepGet:()=>Jc,duplicateName:()=>Eb,escapeHtml:()=>iI,formatBytes:()=>_b,getNextPreviewDevice:()=>mb,getPreviewDeviceIcon:()=>hb,getPreviewModalDevice:()=>gb,getSequentialName:()=>yb,getUserColor:()=>tI,getUserInitials:()=>eI,getUserLabel:()=>rI,isEnvironmentVariableKey:()=>zy,isGoogleSheets:()=>oI,isSQL:()=>aI,lists:()=>_d,normaliseSafeCssColor:()=>cI,normalizeForComparison:()=>sI,retry:()=>uI,roles:()=>Ad,schema:()=>As,structuredOutput:()=>yd,urlHelpers:()=>Yy,views:()=>Sd,wait:()=>Xc,withTimeout:()=>nI});var Jc=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"),eI=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"),tI=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"),rI=s(t=>{if(!t)return"";let{firstName:e,lastName:r,email:n}=t;return e&&r?`${e} ${r}`:e||r||n},"getUserLabel");function Oh(t){let e;return[new Promise((r,n)=>{e=setTimeout(()=>{n({status:301,errno:"ETIME"})},t)}),()=>{clearTimeout(e)}]}s(Oh,"cancelableTimeout");async function nI(t,e){let[r,n]=Oh(t),i=await Promise.race([e(),r]);return n(),i}s(nI,"withTimeout");var iI=s(t=>t==null?"":String(t).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"),"escapeHtml"),sI=s(t=>t.toLowerCase().trim(),"normalizeForComparison");function oI(t){return t==="GOOGLE_SHEETS"}s(oI,"isGoogleSheets");function aI(t){return!t||!t.source?!1:["POSTGRES","SQL_SERVER","MYSQL","ORACLE"].indexOf(t.source)!==-1||t.isSQL===!0}s(aI,"isSQL");async function Xc(t){return new Promise(e=>setTimeout(e,t))}s(Xc,"wait");async function uI(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 Xc(o);try{return await t()}catch(a){n=a}}throw n}s(uI,"retry");var cI=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 Gy=W(Ct()),$y=W(By());var Wy="(Input cron: ",JD={"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 XD(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(XD,"formatExecutionDate");function ZD(t){let e=[];for(let r of t){r.includes(Wy)&&(r=r.split(Wy)[0].trim());for(let[n,i]of Object.entries(JD))r.includes(n)&&(r=r.replace(new RegExp(n,"g"),i));e.push(r)}return e}s(ZD,"improveErrors");function Vy(t,e=4,r){let n=$y.default.parseExpression(t,r?{tz:r}:void 0),i=[];for(let o=0;o<e;o++)i.push(XD(n.next().toDate(),r));return i}s(Vy,"getNextExecutionDates");function qy(t){let e=(0,Gy.default)(t,{preset:"npm-cron-schedule",override:{useSeconds:!1}});return e.isValid()?{valid:!0}:{valid:!1,err:ZD(e.getError())}}s(qy,"validate");var As={};P(As,{decodeNonAscii:()=>Ed,encodeNonAscii:()=>rb,isDeprecatedSingleUserColumn:()=>eb,isNumeric:()=>nb,isRequired:()=>tb});function eb(t){return t.type==="bb_reference"&&t.subtype==="user"&&t.constraints?.type!=="array"}s(eb,"isDeprecatedSingleUserColumn");function tb(t){return!!t&&(typeof t.presence!="boolean"&&t.presence?.allowEmpty===!1||t.presence===!0)}s(tb,"isRequired");function rb(t){return t.split("").map(e=>e.charCodeAt(0)>127?"\\u"+e.charCodeAt(0).toString(16).padStart(4,"0"):e).join("")}s(rb,"encodeNonAscii");function Ed(t){return t.replace(/\\u([0-9a-fA-F]{4})/g,(e,r)=>String.fromCharCode(parseInt(r,16)))}s(Ed,"decodeNonAscii");function nb(t){return t.type==="number"||t.type==="bigint"}s(nb,"isNumeric");var yd={};P(yd,{normalizeSchemaForStructuredOutput:()=>ib});function ib(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[d,f]of Object.entries(o))if(typeof f=="object"&&f!==null){let h=f;if(h.required===!0){a.push(d);let{required:m,...y}=h;u[d]=e(y)}else u[d]=e(h)}else u[d]=f;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(ib,"normalizeSchemaForStructuredOutput");var Sd={};P(Sd,{basicFields:()=>cb,calculationFields:()=>ub,hasCalculationFields:()=>ab,isBasicViewField:()=>sb,isCalculationField:()=>_s,isCalculationView:()=>ob,isV2:()=>lb,isVisible:()=>Ky});var Td=W(require("lodash/pickBy"));function _s(t){return"calculationType"in t}s(_s,"isCalculationField");function sb(t){return!_s(t)}s(sb,"isBasicViewField");function ob(t){return t.type==="calculation"}s(ob,"isCalculationView");function ab(t){return Object.values(t.schema||{}).some(_s)}s(ab,"hasCalculationFields");function ub(t){return(0,Td.default)(t.schema||{},_s)}s(ub,"calculationFields");function Ky(t){return t.visible!==!1}s(Ky,"isVisible");function cb(t,e){let{visible:r=!0}=e||{};return(0,Td.default)(t.schema||{},n=>!_s(n)&&(!r||Ky(n)))}s(cb,"basicFields");function lb(t){return t.version===2}s(lb,"isV2");var Ad={};P(Ad,{checkForRoleInheritanceLoops:()=>fb});function db(t){return`role${"_"}${t}`}s(db,"prefixForCheck");function fb(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=db(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(fb,"checkForRoleInheritanceLoops");var _d={};P(_d,{punctuateList:()=>pb});function pb(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(pb,"punctuateList");var Od=["desktop","tablet","mobile"],mb=s(t=>{let e=Od.indexOf(t||"desktop"),n=((e===-1?0:e)+1)%Od.length;return Od[n]},"getNextPreviewDevice"),hb=s(t=>t==="mobile"?"device-mobile-camera":t==="tablet"?"device-tablet-camera":"monitor","getPreviewDeviceIcon"),gb=s(t=>t&&t!=="desktop"?t:null,"getPreviewModalDevice");var Eb=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"),yb=s((t,e,{getName:r,numberFirstItem:n,separator:i=""}={})=>{if(!e?.length)return"";let o=e.trim(),a=n?`${e}1`:o;if(!t?.length)return a;let u=0;return t.forEach(c=>{let l=r?.(c)??c;if(typeof l!="string"||!l.startsWith(o))return;let d=l.split(o);if(d.length!==2)return;d[1].trim()===""&&(d[1]="1");let f=parseInt(d[1]);f>u&&(u=f)}),u===0?a:`${e}${i}${u+1}`},"getSequentialName");var Tb=/{?{{([^{].*?)}}}?/g;function Qy(t,e){if(!e)return t;let r=t.match(Tb)??[],n=[],i=t;for(let l of r){let d=`:${l}`;i.includes(d)&&(n.push(l),i=i.replace(d,":0"))}let o=s(l=>`__hbs${l}__`,"placeholder"),a=r.filter(l=>!n.includes(l));i=a.reduce((l,d,f)=>l.replace(d,o(f)),i);let u=s(l=>a.reduce((d,f,h)=>d.replace(o(h),f),l),"restore"),c=e.replace(/\/$/,"");try{let l=new URL(i),d=l.pathname==="/"?"":l.pathname;return c+u(d+l.search+l.hash)}catch{let l=u(i);return l.startsWith("/")?c+l:c}}s(Qy,"applyBaseUrl");var jy=s(t=>t?t.startsWith("/")?t:`/${t}`:"","normalizePath"),Sb=s(t=>t?t.endsWith("/")?t.slice(0,-1):t:"","normalizeBase"),qt=s((t,e)=>{let r=jy(e);if(!t)return r;let n=Sb(t);return r?`${n}${r}`:n},"joinBaseAndPath"),Ab=s(t=>t.replace(/\/+$/,""),"trimTrailingSlash"),Hy=s(t=>Ab(jy(t)),"normalizeAppUrl"),Id=s(t=>qt(t,Pi.ACCOUNT),"accountPortalAccountUrl"),wd=s((t,e)=>{let r=typeof e=="string"||e==null?{tenantId:e}:e,n=qt(t,Pi.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"),Rd=s((t,e)=>{if(e){let r=qt(t,Pi.TENANTS),n=encodeURIComponent(e);return`${r}?managePlansTenantId=${n}`}return qt(t,Pi.UPGRADE)},"accountPortalUpgradeUrl"),Cd=s(t=>qt(t,Dn.WORKSPACES),"builderWorkspacesUrl"),Dd=s(t=>qt(t,Dn.SETTINGS_EMAIL),"builderSettingsEmailUrl"),bd=s(t=>qt(t,Dn.SETTINGS_AUTH),"builderSettingsAuthUrl"),xd=s(t=>qt(t,Dn.SETTINGS_PEOPLE_USERS),"builderSettingsPeopleUsersUrl"),vd=s(t=>qt(t,Dn.APPS),"builderAppsUrl"),Pa=s(t=>`/app-chat${Hy(t)}`,"appChatUrl"),La=s((t,e)=>`${Hy(t)}/agent/${encodeURIComponent(e)}`,"appAgentUrl"),Nd=s((t,e)=>Pa(La(t,e)),"agentChatUrl"),Yy={accountPortalAccountUrl:Id,accountPortalBillingUrl:wd,accountPortalUpgradeUrl:Rd,builderWorkspacesUrl:Cd,builderSettingsEmailUrl:Dd,builderSettingsAuthUrl:bd,builderSettingsPeopleUsersUrl:xd,builderAppsUrl:vd,appChatUrl:Pa,appAgentUrl:La,agentChatUrl:Nd};function _b(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(_b,"formatBytes");function zy(t){return/^{{\s*env\.([^\s]+)\s*}}$/.test(String(t))}s(zy,"isEnvironmentVariableKey");var Ob={getNextExecutionDates:Vy,validate:qy};var Ua=W(require("lodash/isPlainObject")),Pd=W(require("lodash/isEmpty"));var wb=/{{([^{].*?)}}/g,Xy=Object.values(xi),Rb=[...Object.values(Gr),...Object.values(cr),...Object.values(Cn)],Cb=s((t,e,r)=>{let n=Pe,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:d}=t;c==="string"?d==="array"?u=a:u=i:c==="number"||c==="bigint"?u=o:c==="options"?u=[n.Equals,n.NotEquals,n.Empty,n.NotEmpty,n.In,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"||As.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 f=r?.tableId?.includes("datasource_plus");return e==="_id"&&f&&(u=[n.Equals,n.NotEquals,n.In,n.NotIn]),u},"getValidOperatorsForType"),Zy=[Pe.StartsWith.value,Pe.Like.value,Pe.Equals.value,Pe.NotEquals.value,Pe.Contains.value,Pe.NotContains.value,Pe.ContainsAny.value,Pe.In.value,Pe.NotIn.value];function kd(t,e){for(let r of Xy)t[r]&&(t[r].conditions=t[r].conditions.map(n=>e(n)));return t}s(kd,"recurseLogicalOperators");var Md=s(t=>{for(let e of Zy)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===""||Db(o))&&delete t[e][i]}return t=kd(t,Md),t},"cleanupQuery");function Db(t){return Array.isArray(t)&&t.length===0}s(Db,"isEmptyArray");var Ho=s(t=>Fd(t).key,"removeKeyNumbering"),Fd=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"),Ld=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}=Fd(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=Ed(n.slice(this.columnPrefix.length))),{tableName:i,numberPrefix:r,relationshipPrefix:o,column:n}}};function bb(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(wb)||[]).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(Vo(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(Vo(r)){let l=yh[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(fh(r)||ph(r)||Vo(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(bb,"buildCondition");function Yo(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(Yo,"splitFiltersArray");function eT(t){if(!t)return{};if(Array.isArray(t)&&(t=zc(t),!t))return{};let e={};t.onEmptyFilter?e.onEmptyFilter=t.onEmptyFilter:e.onEmptyFilter="all";let r=Jy(t.logicalOperator||"all");return e[r]={conditions:(t.groups||[]).map(n=>{if(n.groups){let c=eT(n);return delete c.onEmptyFilter,c}let{allOr:i,onEmptyFilter:o,filters:a}=Yo(n.filters||[]);o&&(e.onEmptyFilter=o);let u=i?"$or":"$and";return n.logicalOperator&&(u=Jy(n.logicalOperator)),{[u]:{conditions:a.map(bb).filter(c=>c)}}})},e}s(eT,"buildQuery");function Jy(t){return t==="all"?"$and":"$or"}s(Jy,"logicalOperatorFromUI");function Bd(t){if(!t)return t;for(let e of Object.values(cr)){let r=t[e];if(!(r==null||!(0,Ua.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 kd(t,Bd),t}s(Bd,"fixupFilterArrays");function xb(t,e){let r=ka(t,e.query);e.sort&&(r=tT(r,e.sort,e.sortOrder||"ascending",e.sortType));let n=r.length;e.limit&&(r=rT(r,e.limit.toString()));let i={rows:r};return e.countRows&&(i.totalRows=n),i}s(xb,"search");function ka(t,e){if(!t||!Array.isArray(t))return[];if(!e)return t;if(e=Md(e),e=Bd(e),!Ud(e)&&e.onEmptyFilter==="none")return[];let r=s((R,w)=>b=>{for(let[G,ee]of Object.entries(e[R]||{})){let M=$o(R)?b:Jc(b,Ho(G)),U=w(M,ee);if(e.allOr&&U)return!0;if(!e.allOr&&!U)return!1}return!e.allOr},"match"),n=r("string",(R,w)=>typeof R!="string"||typeof w!="string"?!1:R.toLowerCase().startsWith(w.toLowerCase())),i=r("fuzzy",(R,w)=>typeof R!="string"||typeof w!="string"?!1:R.toLowerCase().includes(w.toLowerCase())),o=r("range",(R,w)=>{if(R==null||R===""||((0,Ua.default)(w.low)&&(0,Pd.default)(w.low)&&(w.low=void 0),(0,Ua.default)(w.high)&&(0,Pd.default)(w.high)&&(w.high=void 0),w.low==null&&w.high==null))return!1;let b=+R;if(!isNaN(b)){let ee=+w.low,M=+w.high;if(!isNaN(ee)&&!isNaN(M))return b>=ee&&b<=M;if(isNaN(ee)){if(!isNaN(M))return b<=M}else return b>=ee}let G=(0,Qn.default)(R);if(G.isValid()){let ee=(0,Qn.default)(w.low||"0000-00-00T00:00:00.000Z"),M=(0,Qn.default)(w.high||"9999-00-00T00:00:00.000Z");if(ee.isValid()&&M.isValid())return G.isAfter(ee)&&G.isBefore(M)||G.isSame(ee)||G.isSame(M);if(ee.isValid())return G.isAfter(ee)||G.isSame(ee);if(M.isValid())return G.isBefore(M)||G.isSame(M)}return w.low!=null&&w.high!=null?R>=w.low&&R<=w.high:w.low!=null?R>=w.low:w.high!=null?R<=w.high:!1}),a=s((R,w)=>{if(Array.isArray(R)){for(let G of R)if(a(G,w))return!0;return!1}if(R&&typeof R=="object"&&typeof w=="string")return R._id===w;if(R===w)return!0;if(R==null&&w!=null||R!=null&&w==null)return!1;let b=(0,Qn.default)(R);if(b.isValid()){let G=(0,Qn.default)(w);if(G.isValid())return b.isSame(G)}return!1},"_valueMatches"),u=s(R=>(...w)=>!R(...w),"not"),c=r("equal",a),l=r("notEqual",u(a)),d=s(R=>typeof R=="string"?R==="":Array.isArray(R)?R.length===0:R&&typeof R=="object"?Object.keys(R).length===0:R==null,"_empty"),f=r("empty",d),h=r("notEmpty",u(d)),m=s((R,w)=>(typeof w=="string"&&(w=w.split(",")),typeof R=="number"&&(w=w.map(b=>parseFloat(b))),Array.isArray(w)?w.some(b=>a(R,b)):!1),"_oneOf"),y=r("oneOf",m),E=r("notOneOf",u(m)),p=s(R=>(w,b)=>!Array.isArray(w)||(typeof b=="string"&&(b=b.split(","),typeof w[0]=="number"&&(b=b.map(G=>parseFloat(G)))),!Array.isArray(b))?!1:b.length===0?!0:b[R](G=>a(w,G)),"_contains"),T=r("contains",(R,w)=>Array.isArray(w)&&w.length===0?!0:p("every")(R,w)),A=r("notContains",(R,w)=>Array.isArray(w)&&w.length===0?!0:u(p("every"))(R,w)),_=r("containsAny",p("some")),I=r("$and",(R,w)=>{if(!w.length)return!1;for(let b of w)if(!ka([R],b).length)return!1;return!0}),O=r("$or",(R,w)=>{if(!w.length)return!1;for(let b of w)if(ka([R],{...b,allOr:!0}).length)return!0;return!1}),C=s(R=>{let w={string:n,fuzzy:i,range:o,equal:c,notEqual:l,empty:f,notEmpty:h,oneOf:y,notOneOf:E,contains:T,containsAny:_,notContains:A,$and:I,$or:O},b=Object.entries(e||{}).filter(([G,ee])=>!["allOr","onEmptyFilter"].includes(G)&&ee&&Object.keys(ee).length>0).map(([G])=>w[G]?.(R)??!1);return Ud(e)?e.allOr?b.some(G=>G===!0):b.every(G=>G===!0):!0},"docMatch");return t.filter(C)}s(ka,"runQuery");function tT(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(tT,"sort");function rT(t,e){let r=typeof e=="number"?e:parseFloat(e);return isNaN(r)?t:t.slice(0,r)}s(rT,"limit");var Ud=s(t=>{if(!t)return!1;let e=s(r=>{for(let n of Xy)if(r[n])for(let i of r[n]?.conditions||[]){let o=e(i);if(o)return o}for(let n of Rb){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 ke={};P(ke,{applications:()=>Gd,automations:()=>$d,screens:()=>Qd,users:()=>Kd});var Gd={};P(Gd,{getDevAppID:()=>vb,getProdAppID:()=>Is});var Wd=It("app"),Os=It("app_dev");function vb(t){if(!t)throw new Error("No app ID provided");if(t.startsWith(Os))return t;let e=t.split(Wd);e.shift();let r=e.join(Wd);return`${Os}${r}`}s(vb,"getDevAppID");function Is(t){if(!t)throw new Error("No app ID provided");if(!t.startsWith(Os))return t;let e=t.split(Os);e.shift();let r=e.join(Os);return`${Wd}${r}`}s(Is,"getProdAppID");var $d={};P($d,{checkForCollectStep:()=>Ub,isAppAction:()=>Lb,isRowAction:()=>Nb,isWebhookAction:()=>Pb});function Nb(t){return t.definition.trigger?.stepId==="ROW_ACTION"}s(Nb,"isRowAction");function Pb(t){return t.definition.trigger?.stepId==="WEBHOOK"}s(Pb,"isWebhookAction");function Lb(t){return t.definition.trigger?.stepId==="APP"}s(Lb,"isAppAction");function nT(t){if(!t||!Array.isArray(t))return!1;for(let e of t){if(e.stepId==="COLLECT")return!0;if(gh(e)&&e.inputs.children){for(let r of Object.values(e.inputs.children))if(nT(r))return!0}}return!1}s(nT,"hasCollectBlockRecursive");function Ub(t){return nT(t.definition.steps)}s(Ub,"checkForCollectStep");var Kd={};P(Kd,{canCreateApps:()=>kb,containsUserID:()=>qb,getGlobalUserID:()=>Vb,getUserAppGroups:()=>Kb,hasAdminPermissions:()=>qd,hasAppBuilderPermissions:()=>Fa,hasBuilderPermissions:()=>Gb,hasCreatorPermissions:()=>Ba,isAdmin:()=>ws,isAdminOrBuilder:()=>Fb,isAdminOrGlobalBuilder:()=>Bb,isAdminOrWorkspaceBuilder:()=>Mb,isBuilder:()=>Vd,isCreator:()=>$b,isGlobalBuilder:()=>Ma,userAppAccessList:()=>Qb});function Vd(t,e){return t?t.builder?.global?!0:!!(e&&t.builder?.apps?.includes(Is(e))):!1}s(Vd,"isBuilder");function Ma(t){return Vd(t)&&!Fa(t)||ws(t)}s(Ma,"isGlobalBuilder");function kb(t){return Ma(t)||Ba(t)}s(kb,"canCreateApps");function ws(t){return t?qd(t):!1}s(ws,"isAdmin");function Mb(t,e){return t?!!(ws(t)||e&&t.builder?.apps?.includes(Is(e))):!1}s(Mb,"isAdminOrWorkspaceBuilder");function Fb(t,e){return Vd(t,e)||ws(t)}s(Fb,"isAdminOrBuilder");function Bb(t){return Ma(t)||ws(t)}s(Bb,"isAdminOrGlobalBuilder");function Fa(t){if(!t)return!1;let e=t.builder?.apps?.length;return!!!t.builder?.global&&e!=null&&e>0}s(Fa,"hasAppBuilderPermissions");function Wb(t){return t?!!Object.values(t.roles??{}).find(e=>e==="CREATOR"):!1}s(Wb,"hasAppCreatorPermissions");function Gb(t){return t?t.builder?.global||Fa(t)||Ba(t):!1}s(Gb,"hasBuilderPermissions");function qd(t){return t?!!t.admin?.global:!1}s(qd,"hasAdminPermissions");function Ba(t){return t?!!t.builder?.creator:!1}s(Ba,"hasCreatorPermissions");function $b(t){return t?Ma(t)||qd(t)||Ba(t)||Fa(t)||Wb(t):!1}s($b,"isCreator");function Vb(t){if(typeof t!="string")return t;let e=`ro${"_"}ta_users${"_"}`;return t.startsWith(e)?t.split(e)[1]:t}s(Vb,"getGlobalUserID");function qb(t){return typeof t!="string"?!1:t.includes(`us${"_"}`)}s(qb,"containsUserID");function iT(t,e){return e?.filter(r=>r.users?.find(n=>n._id===t))||[]}s(iT,"getUserGroups");function Kb(t,e,r){let n=Is(t);return iT(e,r).filter(o=>Object.keys(o.roles||{}).find(a=>a===n))}s(Kb,"getUserAppGroups");function Qb(t,e){let n=iT(t._id,e).flatMap(o=>Object.keys(o.roles||{})),i=[...Object.keys(t?.roles||{}),...n];return[...new Set(i)]}s(Qb,"userAppAccessList");var Qd={};P(Qd,{findInSettings:()=>jb});function jb(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(jb,"findInSettings");var Wa=(n=>(n.ALL="all",n.AUTOMATION="automation",n.STATUS="status",n))(Wa||{}),Kt=(m=>(m.USER_BY_WORKSPACE="by_app",m.USER_BY_EMAIL="by_email2",m.BY_API_KEY="by_api_key",m.AGENT_REQUESTS_BY_AGENT="agent_requests_by_agent",m.AGENT_REQUESTS_BY_UPDATED_AT="agent_requests_by_updated_at",m.LINK="by_link",m.ROUTING="screen_routes_2",m.PROJECT_MEMBERS="project_members",m.AUTOMATION_LOGS="automation_logs",m.ACCOUNT_BY_EMAIL="account_by_email",m.PLATFORM_USERS_LOWERCASE="platform_users_lowercase_2",m.USER_BY_GROUP="user_by_group",m.WORKSPACE_BACKUP_BY_TRIGGER="by_trigger",m))(Kt||{}),jn={by_email2:["by_email"]},pe={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"}},rt=It("app"),Ga=It("app_dev"),nt=Ga,jd="internal",Hd="budibase",vt="_design/sqlite",Yd="ta_bb_jobs",zd="ta_bb_inventory",Jd="ta_bb_expenses",Xd="ta_bb_employee",Rs=`ro${"_"}ta_users${"_"}`,Cs=(r=>(r[r.SQLITE=vt]="SQLITE",r.MIGRATIONS="_design/migrations",r))(Cs||{});var $a=(r=>(r.ACTIVE="active",r.INACTIVE="inactive",r))($a||{}),yr=(u=>(u.Auth="budibase:auth",u.Init="budibase:init",u.ACCOUNT_RETURN_URL="budibase:account:returnurl",u.DatasourceAuth="budibase:datasourceauth",u.OIDC_CONFIG="budibase:oidc:config",u.FeatureFlags="budibase:featureflags",u.RecaptchaSession="budibase:recaptcha",u))(yr||{}),Zd=(i=>(i.OWNER="owner",i.ADMIN="admin",i.BUILDER="builder",i.WORKSPACE_MANAGER="workspace_manager",i))(Zd||{}),ef=(c=>(c.SETTINGS="settings",c.ACCOUNT="account",c.SMTP="smtp",c.GOOGLE="google",c.OIDC="oidc",c.OIDC_LOGOS="logos_oidc",c.SCIM="scim",c.AI="AI",c))(ef||{}),sT=new Date(-2147483647e3),Va=new Date(2147483647e3),ce="default";var Co={};P(Co,{CacheKey:()=>Oe,TTL:()=>fi,bustCache:()=>pi,destroy:()=>ao,docWritethrough:()=>Up,generic:()=>Bu,get:()=>oo,increment:()=>RA,invite:()=>Fp,keys:()=>Fu,passwordReset:()=>Bp,store:()=>gn,user:()=>nr,withCache:()=>br,withCacheWithDynamicTTL:()=>wA,workspace:()=>Bs,writethrough:()=>hm});var Up={};P(Up,{DocWritethrough:()=>Lp,DocWritethroughProcessor:()=>so,getProcessor:()=>ZN,init:()=>IA});var Pp={};P(Pp,{BudibaseQueue:()=>yt,InMemoryQueue:()=>wu,JobQueue:()=>ui,QueuedProcessor:()=>Np,UnretriableError:()=>ku,shutdown:()=>pN});var rf=require("crypto"),Ka=require("fs"),uT=require("lodash"),Ds=require("path");var Hb=process.env.TOP_LEVEL_PATH||process.env.SERVER_TOP_LEVEL_PATH||(0,Ds.resolve)((0,Ds.join)(__dirname,"..","..","..")),oT=!1;!oT&&qa()&&!nf()&&(require("dotenv").config({path:(0,Ds.join)(Hb,".env")}),oT=!0);function nf(){return cT()}s(nf,"isTest");function cT(){return process.env.NODE_ENV==="jest"||process.env.JEST_WORKER_ID!=null&&process.env.JEST_WORKER_ID!=="null"}s(cT,"isJest");function qa(){return process.env.NODE_ENV!=="production"}s(qa,"isDev");function Yb(t){if(t)return parseInt(t)}s(Yb,"parseIntSafe");var Hn={BACKUPS:"backups",APPS:"prod-budi-app-assets",TEMPLATES:"templates",GLOBAL:"global",PLUGINS:"plugins",TEMP:"tmp-file-attachments"},aT=!!parseInt(process.env.SELF_HOSTED||"");function zb(){return process.env.API_ENCRYPTION_KEY?process.env.API_ENCRYPTION_KEY:process.env.JWT_SECRET}s(zb,"getAPIEncryptionKey");function Jb(){return process.env.HTTP_LOGGING===void 0?!0:process.env.HTTP_LOGGING}s(Jb,"httpLogging");function Xb(){function t(r){function n(u,c){let l=`${c}/${u}`;if((0,Ka.existsSync)(l))return l;let d=`${c}/..`;return d===c?null:n(u,d)}s(n,"findFileInAncestors");let i=n(r,process.cwd()),o=(0,Ka.readFileSync)(i,"utf-8");return JSON.parse(o)}s(t,"getParentFile");let e;if(qa()&&!nf())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(Xb,"getPackageJsonFields");function Zb(){return mt.SERVICE_TYPE==="worker"}s(Zb,"isWorker");function ex(){return mt.SERVICE_TYPE==="apps"}s(ex,"isApps");function tx(){return mt.BUDIBASE_ENVIRONMENT==="QA"}s(tx,"isQA");function rx(){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(rx,"getServiceName");var mt={isTest:nf,isJest:cT,isDev:qa,isWorker:Zb,isApps:ex,isQA:tx,isProd:s(()=>!qa(),"isProd"),BUDIBASE_ENVIRONMENT:process.env.BUDIBASE_ENVIRONMENT,JWT_SECRET:process.env.JWT_SECRET?(0,rf.createSecretKey)(process.env.JWT_SECRET,"utf8"):void 0,JWT_SECRET_FALLBACK:process.env.JWT_SECRET_FALLBACK?(0,rf.createSecretKey)(process.env.JWT_SECRET_FALLBACK,"utf8"):void 0,ENCRYPTION_KEY:process.env.ENCRYPTION_KEY,API_ENCRYPTION_KEY:zb(),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:aT,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||Hn.BACKUPS,APPS_BUCKET_NAME:process.env.APPS_BUCKET_NAME||Hn.APPS,TEMPLATES_BUCKET_NAME:process.env.TEMPLATES_BUCKET_NAME||Hn.TEMPLATES,GLOBAL_BUCKET_NAME:process.env.GLOBAL_BUCKET_NAME||Hn.GLOBAL,PLUGIN_BUCKET_NAME:process.env.PLUGIN_BUCKET_NAME||Hn.PLUGINS,TEMP_BUCKET_NAME:process.env.TEMP_BUCKET_NAME||Hn.TEMP,USE_COUCH:process.env.USE_COUCH||!0,MOCK_REDIS:process.env.MOCK_REDIS,DEFAULT_LICENSE:process.env.DEFAULT_LICENSE,SERVICE:rx(),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:Jb(),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:aT?process.env.ENABLE_SSO_MAINTENANCE_MODE:!1,...Xb(),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,mt[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:Yb(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"};function bs(t){let e=(0,uT.cloneDeep)(mt),r;for(r in t)mt._set(r,t[r]);return()=>{for(let[n,i]of Object.entries(e))mt._set(n,i)}}s(bs,"setEnv");function lT(t,e){let r=bs(t);try{let n=e();return n instanceof Promise?n.finally(r):(r(),n)}catch(n){throw r(),n}}s(lT,"withEnv");var dT=["API_ENCRYPTION_KEY","BB_ADMIN_USER_PASSWORD","COUCH_DB_PASSWORD","COUCH_DB_SQL_URL","COUCH_DB_URL","GOOGLE_CLIENT_SECRET","MICROSOFT_CLIENT_SECRET","INTERNAL_API_KEY_FALLBACK","INTERNAL_API_KEY","JWT_SECRET","MINIO_ACCESS_KEY","MINIO_SECRET_KEY","REDIS_PASSWORD","REDIS_USERNAME"];for(let[t,e]of Object.entries(mt))e==="0"&&(mt[t]=0),e==="false"&&(mt[t]=0);var g=mt;var Ha={};P(Ha,{Databases:()=>sf,SEPARATOR:()=>Yn,SelectableDatabase:()=>Qa,getRedisClusterOptions:()=>of,getRedisConnectionDetails:()=>ja,getRedisOptions:()=>on,removeDbPrefix:()=>af});var Yn="-",sf=(_=>(_.PW_RESETS="pwReset",_.VERIFICATIONS="verification",_.INVITATIONS_LIST="invitationList",_.DEV_LOCKS="devLocks",_.DEBOUNCE="debounce",_.SESSIONS="session",_.USER_CACHE="users",_.FLAGS="flags",_.WORKSPACE_METADATA="appMetadata",_.QUERY_VARS="queryVars",_.LICENSES="license",_.GENERIC_CACHE="data_cache",_.WRITE_THROUGH="writeThrough",_.LOCKS="locks",_.SOCKET_IO="socket_io",_.BPM_EVENTS="bpmEvents",_.DOC_WRITE_THROUGH="docWriteThrough",_.RECAPTCHA_SESSION="recaptchaSession",_.OPENAPI_IMPORT_SPECS="openapiImportSpecs",_))(sf||{}),Qa=(p=>(p[p.DEFAULT=0]="DEFAULT",p[p.SOCKET_IO=1]="SOCKET_IO",p[p.RATE_LIMITING=2]="RATE_LIMITING",p[p.OPENAPI_IMPORT_SPECS=3]="OPENAPI_IMPORT_SPECS",p[p.UNUSED_3=4]="UNUSED_3",p[p.UNUSED_4=5]="UNUSED_4",p[p.UNUSED_5=6]="UNUSED_5",p[p.UNUSED_6=7]="UNUSED_6",p[p.UNUSED_7=8]="UNUSED_7",p[p.UNUSED_8=9]="UNUSED_8",p[p.UNUSED_9=10]="UNUSED_9",p[p.UNUSED_10=11]="UNUSED_10",p[p.UNUSED_11=12]="UNUSED_11",p[p.UNUSED_12=13]="UNUSED_12",p[p.UNUSED_13=14]="UNUSED_13",p[p.UNUSED_14=15]="UNUSED_14",p))(Qa||{});function ja(){let t=g.REDIS_PASSWORD,e=g.REDIS_USERNAME,r=g.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(ja,"getRedisConnectionDetails");function of(){return{slotsRefreshTimeout:2e3,dnsLookup:s((t,e)=>e(null,t),"dnsLookup"),redisOptions:{...on()}}}s(of,"getRedisClusterOptions");function on(){let{host:t,password:e,port:r,username:n}=ja(),i=g.REDIS_URL.toLowerCase().startsWith("rediss://")?{}:void 0;return{connectTimeout:3e4,port:r,host:t,password:e,...n&&{username:n},...i&&{tls:i}}}s(on,"getRedisOptions");function af(t){let e=t.split(Yn);return e.length>=2?(e.shift(),e.join(Yn)):e[0]}s(af,"removeDbPrefix");var WS=W(require("events"));var ai={};P(ai,{Duration:()=>me,GZIP_PREFIX:()=>_u,clearCookie:()=>Jt,compare:()=>lf,fetchWithBlacklist:()=>oi,getBearerToken:()=>Gv,getCookie:()=>zt,getDispatcher:()=>kv,getSessionExpiryDate:()=>Zf,getSessionExpirySeconds:()=>yu,getWorkspaceIdFromCtx:()=>dn,gunzipFromBase64:()=>Wv,gzipToBase64:()=>Bv,hasCircularStructure:()=>Dv,hash:()=>cf,isAudited:()=>np,isClient:()=>Cv,isPublicApiRequest:()=>Iv,isServingApp:()=>Av,isServingBuilder:()=>_v,isServingBuilderPreview:()=>Ov,isValidInternalAPIKey:()=>Hs,microsoftDatasourceCreationCacheKey:()=>nN,newid:()=>X,openJwt:()=>Su,setAuthCookie:()=>Rv,setCookie:()=>tp,time:()=>xv,timeout:()=>rp,urlHasProtocol:()=>bv,validEmail:()=>ip});var fT=require("uuid");function X(){return(0,fT.v4)().replace(/-/g,"")}s(X,"newid");var uf=require("bcrypt"),nx=g.SALT_ROUNDS||10;async function cf(t){let e=await uf.genSalt(nx);return uf.hash(t,e)}s(cf,"hash");async function lf(t,e){return uf.compare(t,e)}s(lf,"compare");var Tu=W(require("jsonwebtoken"));var le={};P(le,{DEFAULT_TENANT_ID:()=>ce,baseGlobalDBName:()=>ks,doInAutomationContext:()=>Cx,doInContext:()=>bf,doInEnvironmentContext:()=>Fx,doInFeatureFlagOverrideContext:()=>kf,doInIPContext:()=>Nf,doInIdentityContext:()=>vs,doInLicenseContext:()=>bx,doInScimContext:()=>Bx,doInSelfHostTenantUsingCloud:()=>Dx,doInTenant:()=>De,doInWorkspaceContext:()=>Nx,doInWorkspaceMigrationContext:()=>Lx,ensureSnippetContext:()=>DT,getAuditLogDBName:()=>RT,getAuditLogsDB:()=>Gx,getAutomationId:()=>xf,getCurrentContext:()=>cn,getDevWorkspaceDB:()=>Vx,getDevWorkspaceId:()=>kx,getEnvironmentVariables:()=>Wx,getFeatureFlagOverrides:()=>Uf,getFeatureFlags:()=>Pf,getGlobalDB:()=>z,getGlobalDBName:()=>un,getIP:()=>vf,getIdentity:()=>Qt,getLicense:()=>xx,getOrThrowWorkspaceId:()=>Ux,getPlatformURL:()=>Df,getProdWorkspaceDB:()=>$x,getProdWorkspaceId:()=>Mx,getScimDBName:()=>Ox,getSelfHostCloudDB:()=>vx,getTableForView:()=>qx,getTenantIDFromWorkspaceID:()=>Zn,getTenantId:()=>q,getWorkspaceDB:()=>ei,getWorkspaceId:()=>Me,identity:()=>xs,isDevWorkspace:()=>bT,isMultiTenant:()=>Sr,isProdWorkspace:()=>Qx,isScim:()=>Et,isSelfHostUsingCloud:()=>tu,isTenancyEnabled:()=>wx,isTenantIdSet:()=>Ix,setFeatureFlags:()=>Lf,setTableForView:()=>Kx});var xs={};P(xs,{doInAccountContext:()=>ix,doInIdentityContext:()=>pf,doInUserContext:()=>mf,getAccountUserId:()=>pT,getIdentity:()=>ff});function ff(){return Qt()}s(ff,"getIdentity");function pf(t,e){return vs(t,e)}s(pf,"doInIdentityContext");function mf(t,e,r){let n={...t,_id:t._id,type:"user",hostInfo:{ipAddress:e.request.ip,userAgent:e.userAgent.source}};return pf(n,r)}s(mf,"doInUserContext");function ix(t,e){let r=pT(t),n=t.tenantId,i={_id:r,type:"user",tenantId:n,account:t};return pf(i,e)}s(ix,"doInAccountContext");function pT(t){let e;return Ko(t)?e=t.budibaseUserId:e=t.accountId,e}s(pT,"getAccountUserId");var ht=s(t=>{let e=hf(t),r,n;if(e.auth?.username)r=e.auth.username;else if(g.COUCH_DB_USERNAME)r=g.COUCH_DB_USERNAME;else if(!g.isTest())throw new Error("CouchDB username not set");if(e.auth?.password)n=e.auth.password;else if(g.COUCH_DB_PASSWORD)n=g.COUCH_DB_PASSWORD;else if(!g.isTest())throw new Error("CouchDB password not set");let i=Buffer.from(`${r}:${n}`).toString("base64"),o=g.COUCH_DB_SQL_URL;if(g.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:hf(o).url,auth:{username:r,password:n},cookie:`Basic ${i}`}},"getCouchInfo"),hf=s((t=g.COUCH_DB_URL)=>{let e,r,n,i;if(t){/^https?:\/\//i.test(t)||(t=`http://${t}`);let a=t.split("://"),u=a[0],c=a.slice(1).join("://");if(t.includes("@")){let l=c.split("@");i=l[l.length-1];let d=l.slice(0,-1).join("@");if(d.includes(":")){let f=d.split(":");r=f[0],n=f.slice(1).join(":")}else r=d}else i=c;e=`${u}://${i}`}return{url:e,auth:{username:r,password:n}}},"getUrlInfo");var OT=W(require("@budibase/nano"));var mT=W(require("node-fetch"));function Ya(t){return t.replace(/(https?:\/\/)|(\/)+/g,"$1$2")}s(Ya,"checkSlashesInUrl");async function hT(t,e="GET",r){let{url:n,cookie:i}=ht(),o=`${n}/${t}`;return await Ns({url:o,cookie:i,method:e,body:r})}s(hT,"directCouchCall");async function Ns({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,mT.default)(Ya(encodeURI(t)),i)}s(Ns,"directCouchUrlCall");async function gf(t,e="GET",r){let n=await hT(t,e,r);if(n.status<300)return await n.json();throw"Cannot connect to CouchDB instance"}s(gf,"directCouchQuery");var an=W(require("pouchdb"));var gT,ET=!1,Ef=s((t={})=>{let{url:e,cookie:r}=ht(),n={prefix:e,fetch:s((i,o)=>(o.headers.set("Authorization",r),an.default.fetch(i,o)),"fetch")};if(t.inMemory){let i=require("pouchdb-adapter-memory");an.default.plugin(i),n={adapter:"memory"}}if(t.onDisk&&(n={adapter:"leveldb"}),t.replication){let i=require("@budibase/pouchdb-replication-stream");an.default.plugin(i.plugin),an.default.adapter("writableStream",i.adapters.writableStream)}if(t.find){let i=require("pouchdb-find");an.default.plugin(i)}return an.default.defaults(n)},"getPouch");function za(t){gT=Ef(t),ET=!0}s(za,"init");var sx=s(()=>{if(!ET)throw new Error("init has not been called")},"checkInitialised");function it(t,e){sx();let r=new gT(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(it,"getPouchDB");async function Ps(t){if(!(!t||g.isTest()))try{return await t.close()}catch{}}s(Ps,"closePouchDB");var de=W(require("dd-trace"));var zn=class{constructor(e){this.db=e}static{s(this,"DDInstrumentedDatabase")}get name(){return this.db.name}exists(e){return de.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 de.default.trace("db.get",r=>(r.addTags({db_name:this.name,doc_id:e}),this.db.get(e)))}tryGet(e){return de.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 de.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 de.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 de.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 de.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 de.default.trace("db.bulkDocs",r=>(r.addTags({db_name:this.name,num_docs:e.length}),this.db.bulkDocs(e)))}async find(e){return de.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 de.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 de.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 de.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 de.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 de.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 de.default.trace("db.load",r=>(r.addTags({db_name:this.name,num_args:e.length}),this.db.load(...e)))}createIndex(...e){return de.default.trace("db.createIndex",r=>(r.addTags({db_name:this.name,num_args:e.length}),this.db.createIndex(...e)))}deleteIndex(...e){return de.default.trace("db.deleteIndex",r=>(r.addTags({db_name:this.name,num_args:e.length}),this.db.deleteIndex(...e)))}getIndexes(...e){return de.default.trace("db.getIndexes",r=>(r.addTags({db_name:this.name,num_args:e.length}),this.db.getIndexes(...e)))}sql(e,r){return de.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 de.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 de.default.trace("db.sqlDiskCleanup",e=>(e.addTags({db_name:this.name}),this.db.sqlDiskCleanup()))}};var wf={};P(wf,{breakExternalTableId:()=>Sf,breakRowIdField:()=>yx,buildExternalTableId:()=>fx,convertRowId:()=>Ex,encodeTableId:()=>px,encodeViewId:()=>mx,extractDate:()=>_f,generateRowIdField:()=>hx,getNativeSql:()=>Jn,isExternalTable:()=>Tf,isExternalTableID:()=>Ja,isInternalTableID:()=>dx,isRowId:()=>gx,isValidFilter:()=>Za,isValidISODateString:()=>Xa,isValidISODateStringWithoutTimezone:()=>Af,isValidTime:()=>Of,sqlLog:()=>Ls,validateManyToMany:()=>If});var yf=`${"_"}${"_"}`,TT=/^\[.*]$/g,ox=encodeURIComponent(" "),ax=/^\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}:\d{2}(?:.\d{3})?Z)?$/,ux=/^\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}:\d{2}(?:.\d{3})?)?$/,cx=/(\d{4}-\d{2}-\d{2})/,lx=/^\d{1,2}:\d{2}(?:\.\d{1,6}|:\d{2}(?:\.\d{1,6})?)?$/;function Ja(t){return t.startsWith("datasource_")}s(Ja,"isExternalTableID");function dx(t){return!Ja(t)}s(dx,"isInternalTableID");function Jn(t){let e=t.toSQL();if(Array.isArray(e))return e;let r;return e.toNative&&(r=e.toNative()),{sql:r?.sql||e.sql,bindings:r?.bindings||e.bindings}}s(Jn,"getNativeSql");function Tf(t){return t?.sourceId&&t.sourceId.includes("datasource_")&&t?.sourceId!==bn||t?.sourceType==="external"?!0:!!(t?._id&&Ja(t._id))}s(Tf,"isExternalTable");function fx(t,e){return`${t}${yf}${encodeURIComponent(e)}`}s(fx,"buildExternalTableId");function px(t){return Ja(t)?encodeURIComponent(t):t}s(px,"encodeTableId");function mx(t){return encodeURIComponent(t)}s(mx,"encodeViewId");function Sf(t){let e=t.split(yf),r=e.shift(),n=e.join(yf);if(n.includes(ox)&&(n=decodeURIComponent(n)),!r||!n)throw new Error("Unable to get datasource/table name from table ID");return{datasourceId:r,tableName:n}}s(Sf,"breakExternalTableId");function hx(t=[]){Array.isArray(t)||(t=[t]);for(let e in t)t[e]instanceof Buffer&&(t[e]=t[e].toString());return encodeURIComponent(JSON.stringify(t).replace(/"/g,"'"))}s(hx,"generateRowIdField");function gx(t){return Array.isArray(t)||typeof t=="string"&&t.match(TT)!=null}s(gx,"isRowId");function Ex(t){return Array.isArray(t)?t[0]:typeof t=="string"&&t.match(TT)!=null?t.substring(1,t.length-1):t}s(Ex,"convertRowId");function yx(t){if(!t)return[];let e=typeof t=="string"?t:t._id,r=decodeURIComponent(e).replace(/'/g,'"');try{let n=JSON.parse(r);return Array.isArray(n)?n:[n]}catch{return[t]}}s(yx,"breakRowIdField");function Xa(t){let e=t.trim();if(!ax.test(e))return!1;let r=new Date(e);return!isNaN(r.getTime())}s(Xa,"isValidISODateString");function Af(t){let e=t.trim();if(!ux.test(e))return!1;let r=new Date(e);return!isNaN(r.getTime())}s(Af,"isValidISODateStringWithoutTimezone");function _f(t){let e=t.match(cx);if(e)return e[0]}s(_f,"extractDate");function Za(t){return t!=null&&t!==""}s(Za,"isValidFilter");function Of(t){return lx.test(t)}s(Of,"isValidTime");function Ls(t,e,r){if(!g.SQL_LOGGING_ENABLE)return;let n=`[SQL] [${t.toUpperCase()}] query="${e}"`;r&&(n+=` values="${r.join(", ")}"`),console.log(n)}s(Ls,"sqlLog");function Tx(t){return!!t.through&&!!t.fromPrimary&&!!t.from&&!!t.toPrimary&&!!t.to}s(Tx,"isValidManyToManyRelationship");function If(t){if(Tx(t))return t}s(If,"validateManyToMany");var ST="Database does not exist.";function AT(t){return(0,OT.default)({url:t.url,requestDefaults:{headers:{Authorization:t.cookie}},parseUrl:!1})}s(AT,"buildNano");var Tr=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"}};function Sx(t,e,r){if(!t||!e)throw new Error("Unable to create database without database name or connection");let n=new Xn(t,r,e);return new zn(n)}s(Sx,"DatabaseWithConnection");var Xn=class t{constructor(e,r,n){this.couchInfo=ht();this.name=e,this.pouchOpts=r||{},n&&(this.couchInfo=ht(n),this.instanceNano=AT(this.couchInfo)),t.nano||t.init()}static{s(this,"DatabaseImpl")}static init(){let e=ht();t.nano=AT(e)}exists(e){return e===void 0?this.dbExists():this.docExists(e)}async dbExists(){return(await Ns({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 Tr(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===ST)return await this.checkAndCreateDb(),await this.performCallWithDBCreation(e);throw new Tr(`CouchDB error: ${i.message}`,i)}}async performCall(e){let r=this.getDb(),n=await e(r);try{return await n()}catch(i){throw new Tr(`CouchDB error: ${i.message}`,i)}}async get(e){return this.performCall(r=>{if(!e)throw new Error("Unable to get doc without a valid _id.");return()=>r.get(e)})}async tryGet(e){try{return await this.get(e)}catch(r){if(r.statusCode===404)return;throw r}}async getMultiple(e,r){if(!e||e.length===0)return[];e=[...new Set(e)];let n=!r?.excludeDocs,i=await this.allDocs({keys:e,include_docs:n}),o=s(c=>n&&c.doc==null||c.value&&"deleted"in c.value&&c.value.deleted?!0:c.error==="not_found","rowUnavailable"),a=i.rows.filter(c=>!o(c)),u=a.length!==i.rows.length;if(!r?.allowMissing&&u){let l=i.rows.filter(d=>o(d)).map(d=>d.key).join(", ");throw new Error(`Unable to get bulk documents: ${l}`)}return a.map(c=>n?c.doc:c.value)}async remove(e,r){return this.performCall(n=>{let i,o;if(mh(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 Tr(o,{name:this.name,status:400})}async post(e,r){return e._id||(e._id=X()),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===ST)return{offset:0,total_rows:0,rows:[]};throw n}})}async _sqlQuery(e,r,n){e=Ya(`${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 Ns(i),a=await o.text();if(o.status>300){let u;try{u=JSON.parse(a)}catch{throw console.error(`SQS error: ${a}`),new Tr("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}/${vt}`;return Ls("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(vt)){let e=await this.get(vt);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 Tr(e.message,e)}}async compact(){return this.performCall(e=>()=>e.compact())}async dump(e,r){return it(this.name).dump(e,r)}async load(e){return it(this.name).load(e)}async createIndex(e){return it(this.name).createIndex(e)}async deleteIndex(e){return it(this.name).deleteIndex(e)}async getIndexes(){return it(this.name).getIndexes()}};function Ce(t,e){return new zn(new Xn(t,e))}s(Ce,"getDB");async function je(t,e,r){let n=Ce(t,r);return await e(n)}s(je,"doWithDB");async function Rf(t){let e="/_all_dbs";return t&&(e+=`?${t}`),await gf(e)}s(Rf,"directCouchAllDbs");var Cf="No app provided";function Nt(t){if(!t)throw Cf;return t.startsWith(nt)}s(Nt,"isDevWorkspaceID");function Ax(t){if(!t)throw Cf;return t.startsWith(rt)&&!Nt(t)}s(Ax,"isProdWorkspaceID");function Us(t){if(!t)throw Cf;return Nt(t.appId)}s(Us,"isDevWorkspace");function eu(t){if(!t||t.startsWith(nt))return t;let e=t.split(rt);e.shift();let r=e.join(rt);return`${nt}${r}`}s(eu,"getDevWorkspaceID");function He(t){if(!t||!t.startsWith(nt))return t;let e=t.split(nt);e.shift();let r=e.join(nt);return`${rt}${r}`}s(He,"getProdWorkspaceID");var IT=require("async_hooks");var ge=class t{static{s(this,"Context")}static{this.storage=new IT.AsyncLocalStorage}static run(e,r){return t.storage.run(e,()=>r())}static get(){return t.storage.getStore()}};var wT=null;function un(t){return t||(t=q()),ks(t)}s(un,"getGlobalDBName");function RT(t){return t||(t=q()),t===ce?pe.AUDIT_LOGS.name:`${t}${"_"}${pe.AUDIT_LOGS.name}`}s(RT,"getAuditLogDBName");function Ox(t){return t||(t=q()),t===ce?pe.SCIM_LOGS.name:`${t}${"_"}${pe.SCIM_LOGS.name}`}s(Ox,"getScimDBName");function ks(t){return!t||t===ce?pe.GLOBAL.name:`${t}${"_"}${pe.GLOBAL.name}`}s(ks,"baseGlobalDBName");function Df(){return g.PLATFORM_URL}s(Df,"getPlatformURL");function Sr(){return!!g.MULTI_TENANCY}s(Sr,"isMultiTenant");function Ix(){return!!ge.get()?.tenantId}s(Ix,"isTenantIdSet");function wx(){return g.MULTI_TENANCY}s(wx,"isTenancyEnabled");function Zn(t){if(!t)return;if(!Sr())return ce;let e=t.split("_"),r=e[1]==="dev";if(!(r&&e.length===3||!r&&e.length===2))return r?e[2]:e[1]}s(Zn,"getTenantIDFromWorkspaceID");function Rx(t){let e;try{e=ge.get()}catch{e={}}return e={...e,...t},e}s(Rx,"updateContext");async function gt(t,e){Px();let r=Rx(t);return ge.run(r,e)}s(gt,"newContext");async function Cx(t){return await DT(),await gt({tenantId:Zn(t.workspaceId),appId:t.workspaceId,automationId:t.automationId},t.task)}s(Cx,"doInAutomationContext");async function bf(t,e){let r=Zn(t);return gt({tenantId:r,appId:t},e)}s(bf,"doInContext");async function De(t,e){return g.MULTI_TENANCY||(t=t||ce),gt(t?{tenantId:t}:{},e)}s(De,"doInTenant");async function Dx(t,e){return gt({tenantId:t,isSelfHostUsingCloud:!0},e)}s(Dx,"doInSelfHostTenantUsingCloud");async function bx(t,e){return gt({license:t},e)}s(bx,"doInLicenseContext");function xx(){return ge.get()?.license}s(xx,"getLicense");function tu(){return!!ge.get()?.isSelfHostUsingCloud}s(tu,"isSelfHostUsingCloud");function vx(){let t=ge.get();if(!t||!t.isSelfHostUsingCloud)throw new Error("Self-host cloud DB not found");return Ce(pe.SELF_HOST_CLOUD.name)}s(vx,"getSelfHostCloudDB");async function Nx(t,e){return CT(t,e)}s(Nx,"doInWorkspaceContext");async function CT(t,e,r){if(!t)throw new Error("workspaceId is required");let n=Zn(t),i={appId:t,...r};return n&&(i.tenantId=n),gt(i,e)}s(CT,"_doInWorkspaceContext");async function vs(t,e){if(!t)throw new Error("identity is required");let r={identity:t};return t.tenantId&&(r.tenantId=t.tenantId),gt(r,e)}s(vs,"doInIdentityContext");function Px(){if(ge.get()?.isMigrating)throw new Error("The context cannot be changed, a migration is currently running")}s(Px,"guardMigration");async function Lx(t,e){return CT(t,e,{isMigrating:!0})}s(Lx,"doInWorkspaceMigrationContext");function Qt(){try{return ge.get()?.identity}catch{}}s(Qt,"getIdentity");function q(){if(!Sr())return ce;let e=ge.get()?.tenantId;if(!e)throw new Error("Tenant id not found");return e}s(q,"getTenantId");function xf(){return ge.get()?.automationId}s(xf,"getAutomationId");function Me(){let e=ge.get()?.appId;return!e&&g.isTest()&&wT?wT:e}s(Me,"getWorkspaceId");function Ux(){let t=Me();if(!t)throw new Error("Workspace id not set");return t}s(Ux,"getOrThrowWorkspaceId");function vf(){return ge.get()?.ip}s(vf,"getIP");var kx=s(()=>{let t=Me();if(!t)throw new Error("Could not get workspaceId");return eu(t)},"getDevWorkspaceId"),Mx=s(()=>{let t=Me();if(!t)throw new Error("Could not get workspaceId");return He(t)},"getProdWorkspaceId");function Fx(t,e){if(!t)throw new Error("Must supply environment variables.");return gt({environmentVariables:t},e)}s(Fx,"doInEnvironmentContext");function Bx(t){return gt({isScim:!0},t)}s(Bx,"doInScimContext");function Nf(t,e){return gt({ip:t},e)}s(Nf,"doInIPContext");async function DT(){let t=cn();if(!t||t.snippets)return;let e,r=ei();r&&(e=(await r.tryGet("app_metadata"))?.snippets),t.snippets=e||[]}s(DT,"ensureSnippetContext");function Wx(){let t=ge.get();return t.environmentVariables?t.environmentVariables:null}s(Wx,"getEnvironmentVariables");function z(){let t=ge.get();if(!t||g.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 Ce(ks(t?.tenantId))}s(z,"getGlobalDB");function Gx(){if(!q())throw new Error("No tenant ID found - cannot open audit log DB");return Ce(RT())}s(Gx,"getAuditLogsDB");function ei(t){let e=Me();if(!e)throw new Error("Unable to retrieve workspace DB - no workspace ID.");if(tu())throw new Error("Workspace DB not found - self-host users using cloud don't have workspace DBs");return Ce(e,t)}s(ei,"getWorkspaceDB");function $x(t){let e=Me();if(!e)throw new Error("Unable to retrieve prod DB - no workspace ID.");return Ce(He(e),t)}s($x,"getProdWorkspaceDB");function Vx(t){let e=Me();if(!e)throw new Error("Unable to retrieve dev DB - no workspace ID.");return Ce(eu(e),t)}s(Vx,"getDevWorkspaceDB");function Et(){return!!ge.get()?.isScim}s(Et,"isScim");function cn(){try{return ge.get()}catch{return}}s(cn,"getCurrentContext");function Pf(t){let e=cn();if(e)return e.featureFlagCache?.[t]}s(Pf,"getFeatureFlags");function Lf(t,e){let r=cn();r&&(r.featureFlagCache??={},r.featureFlagCache[t]=e)}s(Lf,"setFeatureFlags");function Uf(){return cn()?.featureFlagOverrides||{}}s(Uf,"getFeatureFlagOverrides");async function kf(t,e){return await gt({featureFlagOverrides:t},e)}s(kf,"doInFeatureFlagOverrideContext");function qx(t){let e=cn();if(e)return e.viewToTableCache?.[t]}s(qx,"getTableForView");function Kx(t,e){let r=cn();r&&(r.viewToTableCache??={},r.viewToTableCache[t]=e)}s(Kx,"setTableForView");function bT(){let t=Me();return Nt(t)}s(bT,"isDevWorkspace");function Qx(){return!bT()}s(Qx,"isProdWorkspace");var Ir={};P(Ir,{AutomationViewMode:()=>Wa,BUDIBASE_DATASOURCE_TYPE:()=>Hd,DEFAULT_BB_DATASOURCE_ID:()=>bn,DEFAULT_EMPLOYEE_TABLE_ID:()=>Xd,DEFAULT_EXPENSES_TABLE_ID:()=>Jd,DEFAULT_INVENTORY_TABLE_ID:()=>zd,DEFAULT_JOBS_TABLE_ID:()=>Yd,DatabaseImpl:()=>Xn,DatabaseWithConnection:()=>Sx,DeprecatedViews:()=>jn,DesignDocuments:()=>Cs,DocumentType:()=>ae,InternalTable:()=>wt,QueryBuilder:()=>Yt,Replication:()=>IS,SEPARATOR:()=>D,SQLITE_DESIGN_DOC_ID:()=>vt,SQS_DATASOURCE_INTERNAL:()=>jd,StaticDatabases:()=>pe,UNICODE_MAX:()=>ve,USER_METADATA_PREFIX:()=>Rs,ViewName:()=>Kt,WORKSPACE_DEV:()=>Ga,WORKSPACE_DEV_PREFIX:()=>nt,WORKSPACE_PREFIX:()=>rt,baseGlobalDBName:()=>ks,checkErrorCode:()=>DS,closePouchDB:()=>Ps,createApiKeyView:()=>yS,createNewUserEmailView:()=>gS,createPlatformAccountEmailView:()=>SS,createPlatformUserView:()=>AS,createUserAppView:()=>ES,createView:()=>si,dbExists:()=>cv,directCouchAllDbs:()=>Rf,directCouchCall:()=>hT,directCouchQuery:()=>gf,directCouchUrlCall:()=>Ns,doWithDB:()=>je,fullSearch:()=>mv,generateAIConfigID:()=>eS,generateAgentID:()=>qT,generateAgentKnowledgeSourceConnectionID:()=>JT,generateAgentKnowledgeSourceSyncStateID:()=>zT,generateAgentRequestID:()=>jT,generateAgentToolSourceID:()=>YT,generateAppUserID:()=>hu,generateChatAppID:()=>KT,generateChatConversationID:()=>QT,generateDevInfoID:()=>GT,generateGlobalUserID:()=>ni,generateKnowledgeBaseFileID:()=>XT,generateKnowledgeBaseID:()=>sS,generateOAuth2LogID:()=>VT,generatePluginID:()=>$T,generateProjectID:()=>iS,generateRoleID:()=>Vf,generateRowID:()=>$f,generateTableID:()=>kT,generateTemplateID:()=>WT,generateUserMetadataID:()=>FT,generateWorkspaceAppID:()=>rS,generateWorkspaceFavouriteID:()=>nS,generateWorkspaceID:()=>UT,getAgentTestRunID:()=>HT,getAgentTestSuiteID:()=>qf,getAllDbs:()=>hS,getAllWorkspaces:()=>Gs,getCouchInfo:()=>ht,getDB:()=>Ce,getDevWorkspaceID:()=>eu,getDevWorkspaceIDs:()=>av,getDocParams:()=>Pt,getGlobalDBName:()=>un,getGlobalIDFromUserMetadataID:()=>BT,getGlobalUserParams:()=>ln,getLiteLLMKeyID:()=>tS,getOAuth2ConfigParams:()=>lS,getPluginParams:()=>cS,getPouch:()=>Ef,getPouchDB:()=>it,getProdWorkpaceIDs:()=>ov,getProdWorkspaceID:()=>He,getProjectParams:()=>pS,getQueryIndex:()=>oS,getRoleParams:()=>gu,getRowParams:()=>Kf,getStartEndKeyURL:()=>Ws,getTemplateParams:()=>uS,getUrlInfo:()=>hf,getUserMetadataParams:()=>aS,getUsersByWorkspaceParams:()=>ii,getWorkspaceAppParams:()=>dS,getWorkspaceFavouriteParams:()=>fS,getWorkspacesByIDs:()=>sv,init:()=>za,isDevWorkspace:()=>Us,isDevWorkspaceID:()=>Nt,isDocumentConflictError:()=>gv,isGlobalUserID:()=>MT,isKnowledgeBaseFileID:()=>ZT,isProdWorkspaceID:()=>Ax,isSameWorkspaceID:()=>uv,isType:()=>mS,paginatedSearch:()=>pv,pagination:()=>jf,prefixRoleID:()=>jt,queryGlobalView:()=>Ht,queryGlobalViewRaw:()=>qs,queryPlatformView:()=>Vs,queryView:()=>Yf,queryViewRaw:()=>$s,removeKeyNumbering:()=>Ks,searchIndexes:()=>Jf});var Bs={};P(Bs,{WorkspaceState:()=>Gf,getWorkspaceMetadata:()=>mu,invalidateWorkspaceMetadata:()=>rv});var _r={};P(_r,{getCacheClient:()=>Ff,getDocWritethroughClient:()=>Xx,getInviteListClient:()=>Ms,getLockClient:()=>Wf,getOpenapiImportSpecsClient:()=>zx,getPasswordResetClient:()=>Fs,getSessionClient:()=>Ar,getSocketClient:()=>Jx,getUserClient:()=>ri,getWorkspaceClient:()=>pu,getWritethroughClient:()=>Bf,init:()=>st,shutdown:()=>PT});var nu=W(require("ioredis"));var ru=require("dd-trace"),vT=require("lodash");var xT;if(g.MOCK_REDIS)try{xT=require("ioredis-mock")}catch{console.log("Mock redis unavailable")}async function jx(t=0){return await ru.tracer.trace("Redis.init",async e=>{if(g.MOCK_REDIS)return e.addTags({mock:!0}),new xT(on());let r;if(g.REDIS_CLUSTERED){e.addTags({clustered:!0});let{host:n,port:i}=ja();r=new nu.Cluster([{host:n,port:i}],of())}else r=new nu.default(on());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(jx,"init");function Hx(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:af(a),value:u}});r(await Promise.all(o))}catch(o){n(o)}})})}s(Hx,"promisifyStream");function Yx(t){return t.isCluster}s(Yx,"isCluster");var Mf=class t{static{s(this,"RedisWrapper")}constructor(e,r){this.client=e,this.db=r}static async init(e,r=0){return await ru.tracer.trace("RedisWrapper.init",async n=>{let i=await jx(r);return r&&!g.isTest()&&(n.addTags({db:e}),i.select(r)),new t(i,e)})}trace(e,r){return ru.tracer.trace(e,async n=>(n.addTags({db:this.db}),await r(n)))}prefixed(e){return e.includes(this.db)?e:`${this.db}${Yn}${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}${Yn}${e}`;let n;Yx(this.client)?n=this.client.nodes("master")[0].scanStream({match:e+"*",count:100}):n=this.client.scanStream({match:e+"*",count:100});let i=await Hx(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,vT.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(`
|
|
5
|
+
`),n={variables:{},expressions:[],errors:{}},i=0,o=r.length;i<o;i++){var a=r[i],u=null,c=a.trim();if(c.length>0){if(c.match(/^#/))continue;if(u=c.match(/^(.*)=(.*)$/))n.variables[u[1]]=u[2];else{var l=null;try{l=gr._parseEntry("0 "+c),n.expressions.push(l.interval)}catch(d){n.errors[c]=d}}}}return n},"parseString");gr.parseFile=s(function(e,r){require("fs").readFile(e,function(n,i){if(n){r(n);return}return r(null,gr.parseString(i.toString()))})},"parseFile");Fy.exports=gr});var iF={};P(iF,{APIWarning:()=>In,ActiveContentFileError:()=>Vu,AutomationViewMode:()=>Wa,BUDIBASE_DATASOURCE_TYPE:()=>Hd,BadRequestError:()=>mo,BudibaseError:()=>po,Config:()=>ef,Cookie:()=>yr,DEFAULT_BB_DATASOURCE_ID:()=>bn,DEFAULT_EMPLOYEE_TABLE_ID:()=>Xd,DEFAULT_EXPENSES_TABLE_ID:()=>Jd,DEFAULT_INVENTORY_TABLE_ID:()=>zd,DEFAULT_JOBS_TABLE_ID:()=>Yd,DEFAULT_TENANT_ID:()=>ce,DeprecatedViews:()=>jn,DesignDocuments:()=>Cs,DocumentType:()=>ae,Duration:()=>me,EmailUnavailableError:()=>er,Endpoint:()=>Bc,EndpointGroup:()=>wn,EndpointGroupList:()=>Bo,FeatureDisabledError:()=>Qu,FeatureDisabledWarning:()=>Cc,ForbiddenError:()=>qu,GlobalRole:()=>Zd,HTTPError:()=>Fe,Header:()=>Ne,InternalTable:()=>wt,InvalidAPIKeyWarning:()=>wi,MAX_VALID_DATE:()=>Va,MIN_VALID_DATE:()=>sT,NotFoundError:()=>$u,NotImplementedError:()=>Ku,RedisClient:()=>Re,SEPARATOR:()=>D,SQLITE_DESIGN_DOC_ID:()=>vt,SQS_DATASOURCE_INTERNAL:()=>jd,StaticDatabases:()=>pe,UNICODE_MAX:()=>ve,USER_METADATA_PREFIX:()=>Rs,UnexpectedError:()=>Gu,UsageLimitError:()=>ju,UsageLimitWarning:()=>Rc,UserStatus:()=>$a,ViewName:()=>Kt,WORKSPACE_DEV:()=>Ga,WORKSPACE_DEV_PREFIX:()=>nt,WORKSPACE_PREFIX:()=>rt,accounts:()=>Sn,auth:()=>Qm,blacklist:()=>dp,cache:()=>Co,configs:()=>tr,constants:()=>tf,context:()=>le,csv:()=>ah,db:()=>Ir,docIds:()=>Qf,docUpdates:()=>Jm,encryption:()=>Fm,env:()=>g,errors:()=>Yu,events:()=>Ti,features:()=>Pm,getErrorMessage:()=>MA,getPublicError:()=>Hu,init:()=>nF,installation:()=>ec,locks:()=>yn,logging:()=>io,middleware:()=>Km,objectStore:()=>Cp,permissions:()=>xm,platform:()=>fo,plugins:()=>Hm,queue:()=>Pp,redis:()=>Ym,roles:()=>bm,security:()=>Qp,sessions:()=>zu,setEnv:()=>bs,sql:()=>oh,tenancy:()=>rF,timers:()=>Ru,userUtils:()=>am,users:()=>Ai,utils:()=>ai,warnings:()=>Bm,withEnv:()=>lT});module.exports=MO(iF);var tr={};P(tr,{analyticsEnabled:()=>Ju,generateConfigID:()=>No,getConfig:()=>Ge,getDefaultGoogleConfig:()=>gm,getGoogleConfig:()=>fc,getGoogleDatasourceConfig:()=>ym,getOIDCConfig:()=>fk,getOIDCConfigById:()=>Tm,getOIDCLogosDoc:()=>lk,getPlatformUrl:()=>Po,getRecaptchaConfig:()=>hk,getSCIMConfig:()=>mk,getSMTPConfig:()=>pk,getSMTPConfigDoc:()=>v_,getSettingsConfig:()=>Em,getSettingsConfigDoc:()=>_i,getTranslationsConfig:()=>uk,getTranslationsConfigDoc:()=>x_,save:()=>ak});var FO=["user:created","user:updated","user:deleted","user:admin:assigned","user:admin:removed","user:builder:assigned","user:builder:removed","user_group:created","user_group:updated","user_group:deleted","user_group:user_added","user_group:users_deleted","user_group:permissions_edited"],BO=["automation:deleted","workspace_app:deleted","datasource:deleted","table:deleted","query:deleted","view:deleted"],lh=[...FO,...BO],dh={"user:created":'User "{{ email }}" created{{#if viaScim}} via SCIM{{/if}}',"user:updated":'User "{{ email }}" updated{{#if viaScim}} via SCIM{{/if}}',"user:deleted":'User "{{ email }}" deleted{{#if viaScim}} via SCIM{{/if}}',"user:admin:assigned":'User "{{ email }}" admin role assigned',"user:admin:removed":'User "{{ email }}" admin role removed',"user:builder:assigned":'User "{{ email }}" builder role assigned',"user:builder:removed":'User "{{ email }}" builder role removed',"user:invited":'User "{{ email }}" invited',"user:invite:accepted":'User "{{ email }}" accepted invite',"user:password:updated":'User "{{ email }}" password updated',"user:password:reset:requested":'User "{{ email }}" password reset requested',"user:password:reset":'User "{{ email }}" password reset',"user_group:created":'User group "{{ name }}" created{{#if viaScim}} via SCIM{{/if}}',"user_group:updated":'User group "{{ name }}" updated{{#if viaScim}} via SCIM{{/if}}',"user_group:deleted":'User group "{{ name }}" deleted{{#if viaScim}} via SCIM{{/if}}',"user_group:user_added":'User group "{{ name }}" {{ count }} users added{{#if viaScim}} via SCIM{{/if}}',"user_group:users_deleted":'User group "{{ name }}" {{ count }} users removed{{#if viaScim}} via SCIM{{/if}}',"user_group:permissions_edited":'User group "{{ name }}" permissions edited',"user:password:force:reset":void 0,"user_group:onboarding_added":void 0,"user:onboarding:complete":void 0,"user:data:collaboration":void 0,"email:smtp:created":"Email configuration created","email:smtp:updated":"Email configuration updated","ai:config:created":'AI configuration "{{ name }}" created',"ai:config:updated":'AI configuration "{{ name }}" updated',"ai:config:deleted":'AI configuration "{{ name }}" deleted',"ai:agent:created":'AI agent "{{ name }}" created',"ai:agent:updated":'AI agent "{{ name }}" updated',"ai:agent:deleted":'AI agent "{{ name }}" deleted',"rag:file:uploaded":void 0,"rag:file:deleted":void 0,"rag:file:sharepoint:connected":void 0,"rag:file:sharepoint:disconnected":void 0,"rag:file:sharepoint:sync":void 0,"rag:file:processed":void 0,"auth:sso:created":"SSO configuration created","auth:sso:updated":"SSO configuration updated","auth:sso:activated":"SSO configuration activated","auth:sso:deactivated":"SSO configuration deactivated","auth:login":'User "{{ email }}" logged in',"auth:logout":'User "{{ email }}" logged out',"org:info:name:updated":"Organisation name updated","org:info:logo:updated":"Organisation logo updated","org:platformurl:updated":"Organisation platform URL updated","app:created":'App "{{ name }}" created',"app:updated":'App "{{ name }}" updated',"app:deleted":'App "{{ name }}" deleted',"app:duplicated":'App "{{ name }}" duplicated',"app:published":'App "{{ name }}" published',"app:unpublished":'App "{{ name }}" unpublished',"app:template:imported":'App "{{ name }}" template imported',"app:file:imported":'App "{{ name }}" file imported',"app:version:updated":'App "{{ name }}" version updated',"app:version:reverted":'App "{{ name }}" version reverted',"app:reverted":'App "{{ name }}" reverted',"app:exported":'App "{{ name }}" exported',"app:backup:restored":'App backup "{{ name }}" restored',"app:backup:triggered":'App backup "{{ name }}" triggered',"datasource:created":"Datasource created","datasource:updated":"Datasource updated","datasource:deleted":"Datasource deleted","query:created":"Query created","query:updated":"Query updated","query:deleted":"Query deleted","query:import":"Query import","queries:run":void 0,"query:previewed":void 0,"table:created":'Table "{{ name }}" created',"table:updated":'Table "{{ name }}" updated',"table:deleted":'Table "{{ name }}" deleted',"table:exported":'Table "{{ name }}" exported',"table:imported":'Table "{{ name }}" imported',"table:data:imported":"Data imported to table","rows:created":"Rows created","rows:imported":"Rows imported","automation:created":'Automation "{{ name }}" created',"automation:deleted":'Automation "{{ name }}" deleted',"automation:step:created":'Automation "{{ name }}" step added',"automation:step:deleted":'Automation "{{ name }}" step removed',"automation:tested":void 0,"automations:run":void 0,"automation:trigger:updated":void 0,"screen:created":'Screen "{{ name }}" created',"screen:deleted":'Screen "{{ name }}" deleted',"component:created":"Component created","component:deleted":"Component deleted","environment_variable:created":"Environment variable created","environment_variable:deleted":"Environment variable deleted","environment_variable:upgrade_panel_opened":void 0,"plugin:imported":"Plugin imported","plugin:deleted":"Plugin deleted","plugin:init":void 0,"action:automation_step:executed":void 0,"action:automation_step:failed":void 0,"action:crud:executed":void 0,"action:crud:failed":void 0,"action:ai_agent:executed":void 0,"action:ai_agent:failed":void 0,"role:created":void 0,"role:updated":void 0,"role:deleted":void 0,"role:assigned":void 0,"role:unassigned":void 0,"license:plan:changed":void 0,"license:activated":void 0,"license:payment:failed":void 0,"license:payment:recovered":void 0,"license:checkout:opened":void 0,"license:checkout:success":void 0,"license:portal:opened":void 0,"account:created":void 0,"account:deleted":void 0,"account:verified":void 0,"app:backfill:succeeded":void 0,"app:backfill:failed":void 0,"tenant:backfill:succeeded":void 0,"tenant:backfill:failed":void 0,"installation:backfill:succeeded":void 0,"installation:backfill:failed":void 0,"layout:created":void 0,"layout:deleted":void 0,"view:created":void 0,"view:updated":void 0,"view:deleted":void 0,"view:exported":void 0,"view:filter:created":void 0,"view:filter:updated":void 0,"view:filter:deleted":void 0,"view:calculation:created":void 0,"view:calculation:updated":void 0,"view:calculation:deleted":void 0,"view:join:created":void 0,"served:builder":void 0,"served:app":void 0,"served:app:preview":void 0,"analytics:opt:out":void 0,"analytics:opt:in":void 0,"installation:version:checked":void 0,"installation:version:upgraded":void 0,"installation:version:downgraded":void 0,"installation:firstStartup":void 0,"audit_log:filtered":void 0,"audit_log:downloaded":void 0,"row_action:created":void 0,"workspace_app:created":void 0,"workspace_app:deleted":void 0,"workspace_app:updated":void 0,"resource:copied_to_workspace":"{{ resource.type }} copied to workspace"};var Wc=(n=>(n.SQL="sql",n.JSON="json",n.FIELDS="fields",n))(Wc||{}),Gc=(m=>(m.STRING="string",m.CODE="code",m.LONGFORM="longForm",m.SENSITIVE_LONGFORM="sensitiveLongForm",m.BOOLEAN="boolean",m.NUMBER="number",m.PASSWORD="password",m.LIST="list",m.OBJECT="object",m.JSON="json",m.FILE="file",m.FIELD_GROUP="fieldGroup",m.SELECT="select",m))(Gc||{}),Go=(T=>(T.AIRTABLE="AIRTABLE",T.ARANGODB="ARANGODB",T.BUDIBASE="BUDIBASE",T.COUCHDB="COUCHDB",T.DYNAMODB="DYNAMODB",T.ELASTICSEARCH="ELASTICSEARCH",T.FIRESTORE="FIRESTORE",T.GOOGLE_SHEETS="GOOGLE_SHEETS",T.MONGODB="MONGODB",T.MYSQL="MYSQL",T.ORACLE="ORACLE",T.POSTGRES="POSTGRES",T.REDIS="REDIS",T.REST="REST",T.S3="S3",T.SNOWFLAKE="SNOWFLAKE",T.SQL_SERVER="SQL_SERVER",T))(Go||{});var $c=(r=>(r.CONNECTION_CHECKING="connection",r.FETCH_TABLE_NAMES="fetch_table_names",r))($c||{});var WO=W(require("lodash/isPlainObject"));var Gr=(a=>(a.EQUAL="equal",a.NOT_EQUAL="notEqual",a.EMPTY="empty",a.NOT_EMPTY="notEmpty",a.FUZZY="fuzzy",a.STRING="string",a))(Gr||{}),cr=(o=>(o.CONTAINS="contains",o.NOT_CONTAINS="notContains",o.CONTAINS_ANY="containsAny",o.ONE_OF="oneOf",o.NOT_ONE_OF="notOneOf",o))(cr||{}),Cn=(e=>(e.RANGE="range",e))(Cn||{}),xi=(r=>(r.AND="$and",r.OR="$or",r))(xi||{});function $o(t){return Object.values(xi).includes(t)}s($o,"isLogicalSearchOperator");function fh(t){return Object.values(Gr).includes(t)}s(fh,"isBasicSearchOperator");function ph(t){return Object.values(cr).includes(t)}s(ph,"isArraySearchOperator");function Vo(t){return Object.values(Cn).includes(t)}s(Vo,"isRangeSearchOperator");var mh=s(t=>typeof t=="object"&&t._id&&t._rev,"isDocument");var vi=(o=>(o.USER="user",o.HEADER="header",o.QUERY="query",o.SUBDOMAIN="subdomain",o.PATH="path",o))(vi||{});var Ni=(i=>(i.READ="read",i.WRITE="write",i.EXECUTE="execute",i.ADMIN="admin",i))(Ni||{});var qo=(f=>(f.WORKSPACE="app",f.TABLE="table",f.USER="user",f.AUTOMATION="automation",f.WEBHOOK="webhook",f.BUILDER="builder",f.CREATOR="creator",f.GLOBAL_BUILDER="globalBuilder",f.QUERY="query",f.VIEW="view",f.LEGACY_VIEW="legacy_view",f))(qo||{});var Ko=s(t=>t.hosting==="cloud","isCloudAccount");var Qo=s(t=>t.authType==="sso","isSSOAccount");var D="_",ve="\uFFF0",It=s(t=>`${t}_`,"prefixed"),ae=($=>($.USER="us",$.GROUP="gr",$.CONFIG="config",$.TEMPLATE="template",$.WORKSPACE="app",$.DEV="dev",$.WORKSPACE_DEV="app_dev",$.WORKSPACE_METADATA="app_metadata",$.ROLE="role",$.DEV_INFO="devinfo",$.AUTOMATION_LOG="log_au",$.ACCOUNT_METADATA="acc_metadata",$.PLUGIN="plg",$.DATASOURCE="datasource",$.DATASOURCE_PLUS="datasource_plus",$.WORKSPACE_BACKUP="backup",$.TABLE="ta",$.ROW="ro",$.AUTOMATION="au",$.LINK="li",$.WEBHOOK="wh",$.INSTANCE="inst",$.LAYOUT="layout",$.SCREEN="screen",$.QUERY="query",$.DEPLOYMENTS="deployments",$.METADATA="metadata",$.MEM_VIEW="view",$.USER_FLAG="flag",$.AUTOMATION_METADATA="meta_au",$.AUDIT_LOG="al",$.SCIM_LOG="scimlog",$.ROW_ACTIONS="ra",$.OAUTH2_CONFIG="oauth2",$.OAUTH2_CONFIG_LOG="oauth2log",$.AGENT="agent",$.CHAT_APP="chatapp",$.CHAT_CONVERSATION="chatconvo",$.CHAT_IDENTITY_LINK="chatidentitylink",$.AGENT_TOOL_SOURCE="agenttoolsource",$.AGENT_FILE="agentfile",$.AGENT_LOG_SESSION="agentlogsession",$.AGENT_LOG_REQUEST="agentlogrequest",$.AGENT_REQUEST="agentrequest",$.AGENT_TEST_SUITE="agenttestsuite",$.AGENT_TEST_RUN="agenttestrun",$.AGENT_KNOWLEDGE_SOURCE_SYNC_STATE="agentknowledgesync",$.AGENT_KNOWLEDGE_SOURCE_CONNECTION="agentknowledgeconn",$.KNOWLEDGE_BASE_FILE="knowledgebasefile",$.AI_CONFIG="aiconfig",$.LITELLM_KEY="litellmkey",$.KNOWLEDGE_BASE="knowledgebase",$.WORKSPACE_APP="workspace_app",$.WORKSPACE_FAVOURITE="workspace_favourite",$.PROJECT="project",$.AUTO_COLUMN_STATE="autocolumn_state",$.ESCALATION_CONTEXT="escalation_context",$.ESCALATION_NOTIFICATION="escalation_notification",$))(ae||{});var wt=(e=>(e.USER_METADATA="ta_users",e))(wt||{});function jo(t){return!!t.providerType}s(jo,"isSSOUser");var Vc=(f=>(f.OBJECT="object",f.STRING="string",f.BOOLEAN="boolean",f.NUMBER="number",f.ARRAY="array",f.JSON="json",f.DATE="date",f.DATETIME="datetime",f.ATTACHMENT="attachment",f.LONGFORM="longform",f.JS="javascript",f))(Vc||{}),qc=(C=>(C.TABLE="table",C.ROW="row",C.ROWS="rows",C.WIDE="wide",C.QUERY="query",C.QUERY_PARAMS="queryParams",C.QUERY_LIMIT="queryLimit",C.LOOP_OPTION="loopOption",C.ITEM="item",C.CODE="code",C.FILTERS="filters",C.COLUMN="column",C.TRIGGER_SCHEMA="triggerSchema",C.CRON="cron",C.WEBHOOK_URL="webhookUrl",C.AUTOMATION="automation",C.AUTOMATION_FIELDS="automationFields",C.MULTI_ATTACHMENTS="multi_attachments",C.TRIGGER_FILTER="trigger_filter",C.CATEGORIES="categories",C.AGENT="agent",C.OUTPUT_SCHEMA="outputSchema",C))(qc||{}),Kc=(c=>(c.ROW_SAVED="ROW_SAVED",c.ROW_UPDATED="ROW_UPDATED",c.ROW_DELETED="ROW_DELETED",c.WEBHOOK="WEBHOOK",c.APP="APP",c.CRON="CRON",c.ROW_ACTION="ROW_ACTION",c.EMAIL="EMAIL",c))(Kc||{});var Qc=(B=>(B.SEND_EMAIL_SMTP="SEND_EMAIL_SMTP",B.CREATE_ROW="CREATE_ROW",B.GET_ROW="GET_ROW",B.UPDATE_ROW="UPDATE_ROW",B.DELETE_ROW="DELETE_ROW",B.QUERY_ROWS="QUERY_ROWS",B.EXECUTE_BASH="EXECUTE_BASH",B.OUTGOING_WEBHOOK="OUTGOING_WEBHOOK",B.EXECUTE_SCRIPT="EXECUTE_SCRIPT",B.EXECUTE_SCRIPT_V2="EXECUTE_SCRIPT_V2",B.EXECUTE_QUERY="EXECUTE_QUERY",B.SERVER_LOG="SERVER_LOG",B.DELAY="DELAY",B.FILTER="FILTER",B.API_REQUEST="API_REQUEST",B.LOOP="LOOP",B.COLLECT="COLLECT",B.OPENAI="OPENAI",B.TRIGGER_AUTOMATION_RUN="TRIGGER_AUTOMATION_RUN",B.BRANCH="BRANCH",B.CLASSIFY_CONTENT="CLASSIFY_CONTENT",B.PROMPT_LLM="PROMPT_LLM",B.TRANSLATE="TRANSLATE",B.SUMMARISE="SUMMARISE",B.GENERATE_TEXT="GENERATE_TEXT",B.EXTRACT_FILE_DATA="EXTRACT_FILE_DATA",B.EXTRACT_STATE="EXTRACT_STATE",B.LOOP_V2="LOOP_V2",B.AGENT="AGENT",B.ESCALATION="ESCALATION",B.discord="discord",B.slack="slack",B.zapier="zapier",B.integromat="integromat",B.n8n="n8n",B))(Qc||{}),hh=[...Object.values(Qc),...Object.values(Kc)];function gh(t){return t.stepId==="BRANCH"}s(gh,"isBranchStep");var jc="bb_internal";var Eh=["attachment_single","attachment","signature_single","bb_reference","json","array"];var tf={};P(tf,{AutomationViewMode:()=>Wa,BUDIBASE_DATASOURCE_TYPE:()=>Hd,Config:()=>ef,Cookie:()=>yr,DEFAULT_BB_DATASOURCE_ID:()=>bn,DEFAULT_EMPLOYEE_TABLE_ID:()=>Xd,DEFAULT_EXPENSES_TABLE_ID:()=>Jd,DEFAULT_INVENTORY_TABLE_ID:()=>zd,DEFAULT_JOBS_TABLE_ID:()=>Yd,DEFAULT_TENANT_ID:()=>ce,DeprecatedViews:()=>jn,DesignDocuments:()=>Cs,DocumentType:()=>ae,GlobalRole:()=>Zd,Header:()=>Ne,InternalTable:()=>wt,MAX_VALID_DATE:()=>Va,MIN_VALID_DATE:()=>sT,SEPARATOR:()=>D,SQLITE_DESIGN_DOC_ID:()=>vt,SQS_DATASOURCE_INTERNAL:()=>jd,StaticDatabases:()=>pe,UNICODE_MAX:()=>ve,USER_METADATA_PREFIX:()=>Rs,UserStatus:()=>$a,ViewName:()=>Kt,WORKSPACE_DEV:()=>Ga,WORKSPACE_DEV_PREFIX:()=>nt,WORKSPACE_PREFIX:()=>rt});var Ne=(I=>(I.API_KEY="x-budibase-api-key",I.LICENSE_KEY="x-budibase-license-key",I.API_VER="x-budibase-api-version",I.APP_ID="x-budibase-app-id",I.SESSION_ID="x-budibase-session-id",I.CLIENT="x-budibase-client",I.TYPE="x-budibase-type",I.PREVIEW_ROLE="x-budibase-role",I.TENANT_ID="x-budibase-tenant-id",I.VERIFICATION_CODE="x-budibase-verification-code",I.RETURN_VERIFICATION_CODE="x-budibase-return-verification-code",I.RESET_PASSWORD_CODE="x-budibase-reset-password-code",I.RETURN_RESET_PASSWORD_CODE="x-budibase-return-reset-password-code",I.TOKEN="x-budibase-token",I.CSRF_TOKEN="x-csrf-token",I.CORRELATION_ID="x-budibase-correlation-id",I.AUTHORIZATION="authorization",I.MIGRATING_APP="x-budibase-migrating-app",I.SKIP_MIGRATING_WAIT="x-budibase-migrating-app-skip-wait",I.COOKIE="cookie",I))(Ne||{});var Dn={WORKSPACES:"/builder/apps",SETTINGS_EMAIL:"/builder/settings/email",SETTINGS_AUTH:"/builder/settings/auth",SETTINGS_PEOPLE_USERS:"/builder/settings/people/users",APPS:"/builder/apps"},Pi={ACCOUNT:"/portal/account",BILLING:"/portal/billing",TENANTS:"/portal/tenants",UPGRADE:"/portal/upgrade"};var Pe={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"}},yh={integer:{max:2147483647,min:-2147483648},int:{max:2147483647,min:-2147483648},smallint:{max:32767,min:-32768},mediumint:{max:8388607,min:-8388608}};var bn="datasource_internal_bb_default";var Er={};P(Er,{ColumnSplitter:()=>Ld,NoEmptyFilterStrings:()=>Zy,buildQuery:()=>eT,cleanupQuery:()=>Md,fixupFilterArrays:()=>Bd,getKeyNumbering:()=>Fd,getValidOperatorsForType:()=>Cb,hasFilters:()=>Ud,limit:()=>rT,recurseLogicalOperators:()=>kd,removeKeyNumbering:()=>Ho,runQuery:()=>ka,search:()=>xb,sort:()=>tT,splitFiltersArray:()=>Yo});var Qn=W(Th());var Rt={};P(Rt,{filterValueToLabel:()=>QO,hasSchema:()=>jO,isSupportedUserSearch:()=>_h,nameToUrl:()=>XO,parallelForeach:()=>KO,processSearchFilters:()=>zc,toMap:()=>YO,trimOtherProps:()=>HO,unreachable:()=>qO});var Ah=W(require("lodash/pick"));var VO=["field","operator","value","type","externalType","valueType","noValue","formulaType"];function qO(t,e){let r=e?.message||`No such case in exhaustive switch: ${t}`;if(!!!e?.doNotThrow)throw new Error(r)}s(qO,"unreachable");async function KO(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(KO,"parallelForeach");function QO(){return Object.keys(Pe).reduce((t,e)=>{let n=Pe[e];return t[n.value]=n.label,t},{})}s(QO,"filterValueToLabel");function jO(t){return typeof t=="object"&&!Array.isArray(t)&&t!==null&&!(t instanceof Date)&&Object.keys(t).length>0}s(jO,"hasSchema");function HO(t,e){return Object.keys(t).filter(n=>e.includes(n)).reduce((n,i)=>({...n,[i]:t[i]}),{})}s(HO,"trimOtherProps");function _h(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($o(o)){for(let l of t[o].conditions)if(!_h(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(_h,"isSupportedUserSearch");function zc(t){if(!t||t.length===0)return;let{allOr:e,onEmptyFilter:r,filters:n}=Yo(t);return{logicalOperator:"all",onEmptyFilter:r||"all",groups:[{logicalOperator:e?"any":"all",filters:n.map(i=>{let o=(0,Ah.default)(i,VO);return o.field=Ho(o.field),o})}]}}s(zc,"processSearchFilters");function YO(t,e){return e.reduce((r,n)=>(r[n[t]]=n,r),{})}s(YO,"toMap");var zO=s(t=>t?t.trim():null,"resolveWorkspaceName"),JO=s(t=>{let e,r=zO(t);e=r?r.toLowerCase():"";let n=e?e.replace(/\s+/g,"-"):"";return encodeURI(n)},"resolveWorkspaceUrl"),XO=s(t=>{let e=JO(t);return ZO(e)},"nameToUrl"),ZO=s(t=>(t&&!t.startsWith("/")&&(t=`/${t}`),t===""?null:t),"tidyUrl");var Ue={};P(Ue,{accountPortalAccountUrl:()=>Id,accountPortalBillingUrl:()=>wd,accountPortalUpgradeUrl:()=>Rd,agentChatUrl:()=>Nd,appAgentUrl:()=>La,appChatUrl:()=>Pa,applyBaseUrl:()=>Qy,builderAppsUrl:()=>vd,builderSettingsAuthUrl:()=>bd,builderSettingsEmailUrl:()=>Dd,builderSettingsPeopleUsersUrl:()=>xd,builderWorkspacesUrl:()=>Cd,cancelableTimeout:()=>Oh,cron:()=>Ob,deepGet:()=>Jc,duplicateName:()=>Eb,escapeHtml:()=>iI,formatBytes:()=>_b,getNextPreviewDevice:()=>mb,getPreviewDeviceIcon:()=>hb,getPreviewModalDevice:()=>gb,getSequentialName:()=>yb,getUserColor:()=>tI,getUserInitials:()=>eI,getUserLabel:()=>rI,isEnvironmentVariableKey:()=>zy,isGoogleSheets:()=>oI,isSQL:()=>aI,lists:()=>_d,normaliseSafeCssColor:()=>cI,normalizeForComparison:()=>sI,retry:()=>uI,roles:()=>Ad,schema:()=>As,structuredOutput:()=>yd,urlHelpers:()=>Yy,views:()=>Sd,wait:()=>Xc,withTimeout:()=>nI});var Jc=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"),eI=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"),tI=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"),rI=s(t=>{if(!t)return"";let{firstName:e,lastName:r,email:n}=t;return e&&r?`${e} ${r}`:e||r||n},"getUserLabel");function Oh(t){let e;return[new Promise((r,n)=>{e=setTimeout(()=>{n({status:301,errno:"ETIME"})},t)}),()=>{clearTimeout(e)}]}s(Oh,"cancelableTimeout");async function nI(t,e){let[r,n]=Oh(t),i=await Promise.race([e(),r]);return n(),i}s(nI,"withTimeout");var iI=s(t=>t==null?"":String(t).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"),"escapeHtml"),sI=s(t=>t.toLowerCase().trim(),"normalizeForComparison");function oI(t){return t==="GOOGLE_SHEETS"}s(oI,"isGoogleSheets");function aI(t){return!t||!t.source?!1:["POSTGRES","SQL_SERVER","MYSQL","ORACLE"].indexOf(t.source)!==-1||t.isSQL===!0}s(aI,"isSQL");async function Xc(t){return new Promise(e=>setTimeout(e,t))}s(Xc,"wait");async function uI(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 Xc(o);try{return await t()}catch(a){n=a}}throw n}s(uI,"retry");var cI=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 Gy=W(Ct()),$y=W(By());var Wy="(Input cron: ",JD={"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 XD(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(XD,"formatExecutionDate");function ZD(t){let e=[];for(let r of t){r.includes(Wy)&&(r=r.split(Wy)[0].trim());for(let[n,i]of Object.entries(JD))r.includes(n)&&(r=r.replace(new RegExp(n,"g"),i));e.push(r)}return e}s(ZD,"improveErrors");function Vy(t,e=4,r){let n=$y.default.parseExpression(t,r?{tz:r}:void 0),i=[];for(let o=0;o<e;o++)i.push(XD(n.next().toDate(),r));return i}s(Vy,"getNextExecutionDates");function qy(t){let e=(0,Gy.default)(t,{preset:"npm-cron-schedule",override:{useSeconds:!1}});return e.isValid()?{valid:!0}:{valid:!1,err:ZD(e.getError())}}s(qy,"validate");var As={};P(As,{decodeNonAscii:()=>Ed,encodeNonAscii:()=>rb,isDeprecatedSingleUserColumn:()=>eb,isNumeric:()=>nb,isRequired:()=>tb});function eb(t){return t.type==="bb_reference"&&t.subtype==="user"&&t.constraints?.type!=="array"}s(eb,"isDeprecatedSingleUserColumn");function tb(t){return!!t&&(typeof t.presence!="boolean"&&t.presence?.allowEmpty===!1||t.presence===!0)}s(tb,"isRequired");function rb(t){return t.split("").map(e=>e.charCodeAt(0)>127?"\\u"+e.charCodeAt(0).toString(16).padStart(4,"0"):e).join("")}s(rb,"encodeNonAscii");function Ed(t){return t.replace(/\\u([0-9a-fA-F]{4})/g,(e,r)=>String.fromCharCode(parseInt(r,16)))}s(Ed,"decodeNonAscii");function nb(t){return t.type==="number"||t.type==="bigint"}s(nb,"isNumeric");var yd={};P(yd,{normalizeSchemaForStructuredOutput:()=>ib});function ib(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[d,f]of Object.entries(o))if(typeof f=="object"&&f!==null){let h=f;if(h.required===!0){a.push(d);let{required:m,...y}=h;u[d]=e(y)}else u[d]=e(h)}else u[d]=f;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(ib,"normalizeSchemaForStructuredOutput");var Sd={};P(Sd,{basicFields:()=>cb,calculationFields:()=>ub,hasCalculationFields:()=>ab,isBasicViewField:()=>sb,isCalculationField:()=>_s,isCalculationView:()=>ob,isV2:()=>lb,isVisible:()=>Ky});var Td=W(require("lodash/pickBy"));function _s(t){return"calculationType"in t}s(_s,"isCalculationField");function sb(t){return!_s(t)}s(sb,"isBasicViewField");function ob(t){return t.type==="calculation"}s(ob,"isCalculationView");function ab(t){return Object.values(t.schema||{}).some(_s)}s(ab,"hasCalculationFields");function ub(t){return(0,Td.default)(t.schema||{},_s)}s(ub,"calculationFields");function Ky(t){return t.visible!==!1}s(Ky,"isVisible");function cb(t,e){let{visible:r=!0}=e||{};return(0,Td.default)(t.schema||{},n=>!_s(n)&&(!r||Ky(n)))}s(cb,"basicFields");function lb(t){return t.version===2}s(lb,"isV2");var Ad={};P(Ad,{checkForRoleInheritanceLoops:()=>fb});function db(t){return`role${"_"}${t}`}s(db,"prefixForCheck");function fb(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=db(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(fb,"checkForRoleInheritanceLoops");var _d={};P(_d,{punctuateList:()=>pb});function pb(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(pb,"punctuateList");var Od=["desktop","tablet","mobile"],mb=s(t=>{let e=Od.indexOf(t||"desktop"),n=((e===-1?0:e)+1)%Od.length;return Od[n]},"getNextPreviewDevice"),hb=s(t=>t==="mobile"?"device-mobile-camera":t==="tablet"?"device-tablet-camera":"monitor","getPreviewDeviceIcon"),gb=s(t=>t&&t!=="desktop"?t:null,"getPreviewModalDevice");var Eb=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"),yb=s((t,e,{getName:r,numberFirstItem:n,separator:i=""}={})=>{if(!e?.length)return"";let o=e.trim(),a=n?`${e}1`:o;if(!t?.length)return a;let u=0;return t.forEach(c=>{let l=r?.(c)??c;if(typeof l!="string"||!l.startsWith(o))return;let d=l.split(o);if(d.length!==2)return;d[1].trim()===""&&(d[1]="1");let f=parseInt(d[1]);f>u&&(u=f)}),u===0?a:`${e}${i}${u+1}`},"getSequentialName");var Tb=/{?{{([^{].*?)}}}?/g;function Qy(t,e){if(!e)return t;let r=t.match(Tb)??[],n=[],i=t;for(let l of r){let d=`:${l}`;i.includes(d)&&(n.push(l),i=i.replace(d,":0"))}let o=s(l=>`__hbs${l}__`,"placeholder"),a=r.filter(l=>!n.includes(l));i=a.reduce((l,d,f)=>l.replace(d,o(f)),i);let u=s(l=>a.reduce((d,f,h)=>d.replace(o(h),f),l),"restore"),c=e.replace(/\/$/,"");try{let l=new URL(i),d=l.pathname==="/"?"":l.pathname;return c+u(d+l.search+l.hash)}catch{let l=u(i);return l.startsWith("/")?c+l:c}}s(Qy,"applyBaseUrl");var jy=s(t=>t?t.startsWith("/")?t:`/${t}`:"","normalizePath"),Sb=s(t=>t?t.endsWith("/")?t.slice(0,-1):t:"","normalizeBase"),qt=s((t,e)=>{let r=jy(e);if(!t)return r;let n=Sb(t);return r?`${n}${r}`:n},"joinBaseAndPath"),Ab=s(t=>t.replace(/\/+$/,""),"trimTrailingSlash"),Hy=s(t=>Ab(jy(t)),"normalizeAppUrl"),Id=s(t=>qt(t,Pi.ACCOUNT),"accountPortalAccountUrl"),wd=s((t,e)=>{let r=typeof e=="string"||e==null?{tenantId:e}:e,n=qt(t,Pi.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"),Rd=s((t,e)=>{if(e){let r=qt(t,Pi.TENANTS),n=encodeURIComponent(e);return`${r}?managePlansTenantId=${n}`}return qt(t,Pi.UPGRADE)},"accountPortalUpgradeUrl"),Cd=s(t=>qt(t,Dn.WORKSPACES),"builderWorkspacesUrl"),Dd=s(t=>qt(t,Dn.SETTINGS_EMAIL),"builderSettingsEmailUrl"),bd=s(t=>qt(t,Dn.SETTINGS_AUTH),"builderSettingsAuthUrl"),xd=s(t=>qt(t,Dn.SETTINGS_PEOPLE_USERS),"builderSettingsPeopleUsersUrl"),vd=s(t=>qt(t,Dn.APPS),"builderAppsUrl"),Pa=s(t=>`/app-chat${Hy(t)}`,"appChatUrl"),La=s((t,e)=>`${Hy(t)}/agent/${encodeURIComponent(e)}`,"appAgentUrl"),Nd=s((t,e)=>Pa(La(t,e)),"agentChatUrl"),Yy={accountPortalAccountUrl:Id,accountPortalBillingUrl:wd,accountPortalUpgradeUrl:Rd,builderWorkspacesUrl:Cd,builderSettingsEmailUrl:Dd,builderSettingsAuthUrl:bd,builderSettingsPeopleUsersUrl:xd,builderAppsUrl:vd,appChatUrl:Pa,appAgentUrl:La,agentChatUrl:Nd};function _b(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(_b,"formatBytes");function zy(t){return/^{{\s*env\.([^\s]+)\s*}}$/.test(String(t))}s(zy,"isEnvironmentVariableKey");var Ob={getNextExecutionDates:Vy,validate:qy};var Ua=W(require("lodash/isPlainObject")),Pd=W(require("lodash/isEmpty"));var wb=/{{([^{].*?)}}/g,Xy=Object.values(xi),Rb=[...Object.values(Gr),...Object.values(cr),...Object.values(Cn)],Cb=s((t,e,r)=>{let n=Pe,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:d}=t;c==="string"?d==="array"?u=a:u=i:c==="number"||c==="bigint"?u=o:c==="options"?u=[n.Equals,n.NotEquals,n.Empty,n.NotEmpty,n.In,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"||As.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 f=r?.tableId?.includes("datasource_plus");return e==="_id"&&f&&(u=[n.Equals,n.NotEquals,n.In,n.NotIn]),u},"getValidOperatorsForType"),Zy=[Pe.StartsWith.value,Pe.Like.value,Pe.Equals.value,Pe.NotEquals.value,Pe.Contains.value,Pe.NotContains.value,Pe.ContainsAny.value,Pe.In.value,Pe.NotIn.value];function kd(t,e){for(let r of Xy)t[r]&&(t[r].conditions=t[r].conditions.map(n=>e(n)));return t}s(kd,"recurseLogicalOperators");var Md=s(t=>{for(let e of Zy)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===""||Db(o))&&delete t[e][i]}return t=kd(t,Md),t},"cleanupQuery");function Db(t){return Array.isArray(t)&&t.length===0}s(Db,"isEmptyArray");var Ho=s(t=>Fd(t).key,"removeKeyNumbering"),Fd=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"),Ld=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}=Fd(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=Ed(n.slice(this.columnPrefix.length))),{tableName:i,numberPrefix:r,relationshipPrefix:o,column:n}}};function bb(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(wb)||[]).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(Vo(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(Vo(r)){let l=yh[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(fh(r)||ph(r)||Vo(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(bb,"buildCondition");function Yo(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(Yo,"splitFiltersArray");function eT(t){if(!t)return{};if(Array.isArray(t)&&(t=zc(t),!t))return{};let e={};t.onEmptyFilter?e.onEmptyFilter=t.onEmptyFilter:e.onEmptyFilter="all";let r=Jy(t.logicalOperator||"all");return e[r]={conditions:(t.groups||[]).map(n=>{if(n.groups){let c=eT(n);return delete c.onEmptyFilter,c}let{allOr:i,onEmptyFilter:o,filters:a}=Yo(n.filters||[]);o&&(e.onEmptyFilter=o);let u=i?"$or":"$and";return n.logicalOperator&&(u=Jy(n.logicalOperator)),{[u]:{conditions:a.map(bb).filter(c=>c)}}})},e}s(eT,"buildQuery");function Jy(t){return t==="all"?"$and":"$or"}s(Jy,"logicalOperatorFromUI");function Bd(t){if(!t)return t;for(let e of Object.values(cr)){let r=t[e];if(!(r==null||!(0,Ua.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 kd(t,Bd),t}s(Bd,"fixupFilterArrays");function xb(t,e){let r=ka(t,e.query);e.sort&&(r=tT(r,e.sort,e.sortOrder||"ascending",e.sortType));let n=r.length;e.limit&&(r=rT(r,e.limit.toString()));let i={rows:r};return e.countRows&&(i.totalRows=n),i}s(xb,"search");function ka(t,e){if(!t||!Array.isArray(t))return[];if(!e)return t;if(e=Md(e),e=Bd(e),!Ud(e)&&e.onEmptyFilter==="none")return[];let r=s((R,w)=>b=>{for(let[G,ee]of Object.entries(e[R]||{})){let M=$o(R)?b:Jc(b,Ho(G)),U=w(M,ee);if(e.allOr&&U)return!0;if(!e.allOr&&!U)return!1}return!e.allOr},"match"),n=r("string",(R,w)=>typeof R!="string"||typeof w!="string"?!1:R.toLowerCase().startsWith(w.toLowerCase())),i=r("fuzzy",(R,w)=>typeof R!="string"||typeof w!="string"?!1:R.toLowerCase().includes(w.toLowerCase())),o=r("range",(R,w)=>{if(R==null||R===""||((0,Ua.default)(w.low)&&(0,Pd.default)(w.low)&&(w.low=void 0),(0,Ua.default)(w.high)&&(0,Pd.default)(w.high)&&(w.high=void 0),w.low==null&&w.high==null))return!1;let b=+R;if(!isNaN(b)){let ee=+w.low,M=+w.high;if(!isNaN(ee)&&!isNaN(M))return b>=ee&&b<=M;if(isNaN(ee)){if(!isNaN(M))return b<=M}else return b>=ee}let G=(0,Qn.default)(R);if(G.isValid()){let ee=(0,Qn.default)(w.low||"0000-00-00T00:00:00.000Z"),M=(0,Qn.default)(w.high||"9999-00-00T00:00:00.000Z");if(ee.isValid()&&M.isValid())return G.isAfter(ee)&&G.isBefore(M)||G.isSame(ee)||G.isSame(M);if(ee.isValid())return G.isAfter(ee)||G.isSame(ee);if(M.isValid())return G.isBefore(M)||G.isSame(M)}return w.low!=null&&w.high!=null?R>=w.low&&R<=w.high:w.low!=null?R>=w.low:w.high!=null?R<=w.high:!1}),a=s((R,w)=>{if(Array.isArray(R)){for(let G of R)if(a(G,w))return!0;return!1}if(R&&typeof R=="object"&&typeof w=="string")return R._id===w;if(R===w)return!0;if(R==null&&w!=null||R!=null&&w==null)return!1;let b=(0,Qn.default)(R);if(b.isValid()){let G=(0,Qn.default)(w);if(G.isValid())return b.isSame(G)}return!1},"_valueMatches"),u=s(R=>(...w)=>!R(...w),"not"),c=r("equal",a),l=r("notEqual",u(a)),d=s(R=>typeof R=="string"?R==="":Array.isArray(R)?R.length===0:R&&typeof R=="object"?Object.keys(R).length===0:R==null,"_empty"),f=r("empty",d),h=r("notEmpty",u(d)),m=s((R,w)=>(typeof w=="string"&&(w=w.split(",")),typeof R=="number"&&(w=w.map(b=>parseFloat(b))),Array.isArray(w)?w.some(b=>a(R,b)):!1),"_oneOf"),y=r("oneOf",m),E=r("notOneOf",u(m)),p=s(R=>(w,b)=>!Array.isArray(w)||(typeof b=="string"&&(b=b.split(","),typeof w[0]=="number"&&(b=b.map(G=>parseFloat(G)))),!Array.isArray(b))?!1:b.length===0?!0:b[R](G=>a(w,G)),"_contains"),T=r("contains",(R,w)=>Array.isArray(w)&&w.length===0?!0:p("every")(R,w)),A=r("notContains",(R,w)=>Array.isArray(w)&&w.length===0?!0:u(p("every"))(R,w)),_=r("containsAny",p("some")),I=r("$and",(R,w)=>{if(!w.length)return!1;for(let b of w)if(!ka([R],b).length)return!1;return!0}),O=r("$or",(R,w)=>{if(!w.length)return!1;for(let b of w)if(ka([R],{...b,allOr:!0}).length)return!0;return!1}),C=s(R=>{let w={string:n,fuzzy:i,range:o,equal:c,notEqual:l,empty:f,notEmpty:h,oneOf:y,notOneOf:E,contains:T,containsAny:_,notContains:A,$and:I,$or:O},b=Object.entries(e||{}).filter(([G,ee])=>!["allOr","onEmptyFilter"].includes(G)&&ee&&Object.keys(ee).length>0).map(([G])=>w[G]?.(R)??!1);return Ud(e)?e.allOr?b.some(G=>G===!0):b.every(G=>G===!0):!0},"docMatch");return t.filter(C)}s(ka,"runQuery");function tT(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(tT,"sort");function rT(t,e){let r=typeof e=="number"?e:parseFloat(e);return isNaN(r)?t:t.slice(0,r)}s(rT,"limit");var Ud=s(t=>{if(!t)return!1;let e=s(r=>{for(let n of Xy)if(r[n])for(let i of r[n]?.conditions||[]){let o=e(i);if(o)return o}for(let n of Rb){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 ke={};P(ke,{applications:()=>Gd,automations:()=>$d,screens:()=>Qd,users:()=>Kd});var Gd={};P(Gd,{getDevAppID:()=>vb,getProdAppID:()=>Is});var Wd=It("app"),Os=It("app_dev");function vb(t){if(!t)throw new Error("No app ID provided");if(t.startsWith(Os))return t;let e=t.split(Wd);e.shift();let r=e.join(Wd);return`${Os}${r}`}s(vb,"getDevAppID");function Is(t){if(!t)throw new Error("No app ID provided");if(!t.startsWith(Os))return t;let e=t.split(Os);e.shift();let r=e.join(Os);return`${Wd}${r}`}s(Is,"getProdAppID");var $d={};P($d,{checkForCollectStep:()=>Ub,isAppAction:()=>Lb,isRowAction:()=>Nb,isWebhookAction:()=>Pb});function Nb(t){return t.definition.trigger?.stepId==="ROW_ACTION"}s(Nb,"isRowAction");function Pb(t){return t.definition.trigger?.stepId==="WEBHOOK"}s(Pb,"isWebhookAction");function Lb(t){return t.definition.trigger?.stepId==="APP"}s(Lb,"isAppAction");function nT(t){if(!t||!Array.isArray(t))return!1;for(let e of t){if(e.stepId==="COLLECT")return!0;if(gh(e)&&e.inputs.children){for(let r of Object.values(e.inputs.children))if(nT(r))return!0}}return!1}s(nT,"hasCollectBlockRecursive");function Ub(t){return nT(t.definition.steps)}s(Ub,"checkForCollectStep");var Kd={};P(Kd,{canCreateApps:()=>kb,containsUserID:()=>qb,getGlobalUserID:()=>Vb,getUserAppGroups:()=>Kb,hasAdminPermissions:()=>qd,hasAppBuilderPermissions:()=>Fa,hasBuilderPermissions:()=>Gb,hasCreatorPermissions:()=>Ba,isAdmin:()=>ws,isAdminOrBuilder:()=>Fb,isAdminOrGlobalBuilder:()=>Bb,isAdminOrWorkspaceBuilder:()=>Mb,isBuilder:()=>Vd,isCreator:()=>$b,isGlobalBuilder:()=>Ma,userAppAccessList:()=>Qb});function Vd(t,e){return t?t.builder?.global?!0:!!(e&&t.builder?.apps?.includes(Is(e))):!1}s(Vd,"isBuilder");function Ma(t){return Vd(t)&&!Fa(t)||ws(t)}s(Ma,"isGlobalBuilder");function kb(t){return Ma(t)||Ba(t)}s(kb,"canCreateApps");function ws(t){return t?qd(t):!1}s(ws,"isAdmin");function Mb(t,e){return t?!!(ws(t)||e&&t.builder?.apps?.includes(Is(e))):!1}s(Mb,"isAdminOrWorkspaceBuilder");function Fb(t,e){return Vd(t,e)||ws(t)}s(Fb,"isAdminOrBuilder");function Bb(t){return Ma(t)||ws(t)}s(Bb,"isAdminOrGlobalBuilder");function Fa(t){if(!t)return!1;let e=t.builder?.apps?.length;return!!!t.builder?.global&&e!=null&&e>0}s(Fa,"hasAppBuilderPermissions");function Wb(t){return t?!!Object.values(t.roles??{}).find(e=>e==="CREATOR"):!1}s(Wb,"hasAppCreatorPermissions");function Gb(t){return t?t.builder?.global||Fa(t)||Ba(t):!1}s(Gb,"hasBuilderPermissions");function qd(t){return t?!!t.admin?.global:!1}s(qd,"hasAdminPermissions");function Ba(t){return t?!!t.builder?.creator:!1}s(Ba,"hasCreatorPermissions");function $b(t){return t?Ma(t)||qd(t)||Ba(t)||Fa(t)||Wb(t):!1}s($b,"isCreator");function Vb(t){if(typeof t!="string")return t;let e=`ro${"_"}ta_users${"_"}`;return t.startsWith(e)?t.split(e)[1]:t}s(Vb,"getGlobalUserID");function qb(t){return typeof t!="string"?!1:t.includes(`us${"_"}`)}s(qb,"containsUserID");function iT(t,e){return e?.filter(r=>r.users?.find(n=>n._id===t))||[]}s(iT,"getUserGroups");function Kb(t,e,r){let n=Is(t);return iT(e,r).filter(o=>Object.keys(o.roles||{}).find(a=>a===n))}s(Kb,"getUserAppGroups");function Qb(t,e){let n=iT(t._id,e).flatMap(o=>Object.keys(o.roles||{})),i=[...Object.keys(t?.roles||{}),...n];return[...new Set(i)]}s(Qb,"userAppAccessList");var Qd={};P(Qd,{findInSettings:()=>jb});function jb(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(jb,"findInSettings");var Wa=(n=>(n.ALL="all",n.AUTOMATION="automation",n.STATUS="status",n))(Wa||{}),Kt=(m=>(m.USER_BY_WORKSPACE="by_app",m.USER_BY_EMAIL="by_email2",m.BY_API_KEY="by_api_key",m.AGENT_REQUESTS_BY_AGENT="agent_requests_by_agent",m.AGENT_REQUESTS_BY_UPDATED_AT="agent_requests_by_updated_at",m.LINK="by_link",m.ROUTING="screen_routes_2",m.PROJECT_MEMBERS="project_members",m.AUTOMATION_LOGS="automation_logs",m.ACCOUNT_BY_EMAIL="account_by_email",m.PLATFORM_USERS_LOWERCASE="platform_users_lowercase_2",m.USER_BY_GROUP="user_by_group",m.WORKSPACE_BACKUP_BY_TRIGGER="by_trigger",m))(Kt||{}),jn={by_email2:["by_email"]},pe={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"}},rt=It("app"),Ga=It("app_dev"),nt=Ga,jd="internal",Hd="budibase",vt="_design/sqlite",Yd="ta_bb_jobs",zd="ta_bb_inventory",Jd="ta_bb_expenses",Xd="ta_bb_employee",Rs=`ro${"_"}ta_users${"_"}`,Cs=(r=>(r[r.SQLITE=vt]="SQLITE",r.MIGRATIONS="_design/migrations",r))(Cs||{});var $a=(r=>(r.ACTIVE="active",r.INACTIVE="inactive",r))($a||{}),yr=(u=>(u.Auth="budibase:auth",u.Init="budibase:init",u.ACCOUNT_RETURN_URL="budibase:account:returnurl",u.DatasourceAuth="budibase:datasourceauth",u.OIDC_CONFIG="budibase:oidc:config",u.FeatureFlags="budibase:featureflags",u.RecaptchaSession="budibase:recaptcha",u))(yr||{}),Zd=(i=>(i.OWNER="owner",i.ADMIN="admin",i.BUILDER="builder",i.WORKSPACE_MANAGER="workspace_manager",i))(Zd||{}),ef=(c=>(c.SETTINGS="settings",c.ACCOUNT="account",c.SMTP="smtp",c.GOOGLE="google",c.OIDC="oidc",c.OIDC_LOGOS="logos_oidc",c.SCIM="scim",c.AI="AI",c))(ef||{}),sT=new Date(-2147483647e3),Va=new Date(2147483647e3),ce="default";var Co={};P(Co,{CacheKey:()=>Oe,TTL:()=>fi,bustCache:()=>pi,destroy:()=>ao,docWritethrough:()=>Up,generic:()=>Bu,get:()=>oo,increment:()=>RA,invite:()=>Fp,keys:()=>Fu,passwordReset:()=>Bp,store:()=>gn,user:()=>nr,withCache:()=>br,withCacheWithDynamicTTL:()=>wA,workspace:()=>Bs,writethrough:()=>hm});var Up={};P(Up,{DocWritethrough:()=>Lp,DocWritethroughProcessor:()=>so,getProcessor:()=>ZN,init:()=>IA});var Pp={};P(Pp,{BudibaseQueue:()=>yt,InMemoryQueue:()=>wu,JobQueue:()=>ui,QueuedProcessor:()=>Np,UnretriableError:()=>ku,shutdown:()=>pN});var rf=require("crypto"),Ka=require("fs"),uT=require("lodash"),Ds=require("path");var Hb=process.env.TOP_LEVEL_PATH||process.env.SERVER_TOP_LEVEL_PATH||(0,Ds.resolve)((0,Ds.join)(__dirname,"..","..","..")),oT=!1;!oT&&qa()&&!nf()&&(require("dotenv").config({path:(0,Ds.join)(Hb,".env")}),oT=!0);function nf(){return cT()}s(nf,"isTest");function cT(){return process.env.NODE_ENV==="jest"||process.env.JEST_WORKER_ID!=null&&process.env.JEST_WORKER_ID!=="null"}s(cT,"isJest");function qa(){return process.env.NODE_ENV!=="production"}s(qa,"isDev");function Yb(t){if(t)return parseInt(t)}s(Yb,"parseIntSafe");var Hn={BACKUPS:"backups",APPS:"prod-budi-app-assets",TEMPLATES:"templates",GLOBAL:"global",PLUGINS:"plugins",TEMP:"tmp-file-attachments"},aT=!!parseInt(process.env.SELF_HOSTED||"");function zb(){return process.env.API_ENCRYPTION_KEY?process.env.API_ENCRYPTION_KEY:process.env.JWT_SECRET}s(zb,"getAPIEncryptionKey");function Jb(){return process.env.HTTP_LOGGING===void 0?!0:process.env.HTTP_LOGGING}s(Jb,"httpLogging");function Xb(){function t(r){function n(u,c){let l=`${c}/${u}`;if((0,Ka.existsSync)(l))return l;let d=`${c}/..`;return d===c?null:n(u,d)}s(n,"findFileInAncestors");let i=n(r,process.cwd()),o=(0,Ka.readFileSync)(i,"utf-8");return JSON.parse(o)}s(t,"getParentFile");let e;if(qa()&&!nf())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(Xb,"getPackageJsonFields");function Zb(){return mt.SERVICE_TYPE==="worker"}s(Zb,"isWorker");function ex(){return mt.SERVICE_TYPE==="apps"}s(ex,"isApps");function tx(){return mt.BUDIBASE_ENVIRONMENT==="QA"}s(tx,"isQA");function rx(){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(rx,"getServiceName");var mt={isTest:nf,isJest:cT,isDev:qa,isWorker:Zb,isApps:ex,isQA:tx,isProd:s(()=>!qa(),"isProd"),BUDIBASE_ENVIRONMENT:process.env.BUDIBASE_ENVIRONMENT,JWT_SECRET:process.env.JWT_SECRET?(0,rf.createSecretKey)(process.env.JWT_SECRET,"utf8"):void 0,JWT_SECRET_FALLBACK:process.env.JWT_SECRET_FALLBACK?(0,rf.createSecretKey)(process.env.JWT_SECRET_FALLBACK,"utf8"):void 0,ENCRYPTION_KEY:process.env.ENCRYPTION_KEY,API_ENCRYPTION_KEY:zb(),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:aT,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||Hn.BACKUPS,APPS_BUCKET_NAME:process.env.APPS_BUCKET_NAME||Hn.APPS,TEMPLATES_BUCKET_NAME:process.env.TEMPLATES_BUCKET_NAME||Hn.TEMPLATES,GLOBAL_BUCKET_NAME:process.env.GLOBAL_BUCKET_NAME||Hn.GLOBAL,PLUGIN_BUCKET_NAME:process.env.PLUGIN_BUCKET_NAME||Hn.PLUGINS,TEMP_BUCKET_NAME:process.env.TEMP_BUCKET_NAME||Hn.TEMP,USE_COUCH:process.env.USE_COUCH||!0,MOCK_REDIS:process.env.MOCK_REDIS,DEFAULT_LICENSE:process.env.DEFAULT_LICENSE,SERVICE:rx(),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:Jb(),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:aT?process.env.ENABLE_SSO_MAINTENANCE_MODE:!1,...Xb(),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,mt[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:Yb(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"};function bs(t){let e=(0,uT.cloneDeep)(mt),r;for(r in t)mt._set(r,t[r]);return()=>{for(let[n,i]of Object.entries(e))mt._set(n,i)}}s(bs,"setEnv");function lT(t,e){let r=bs(t);try{let n=e();return n instanceof Promise?n.finally(r):(r(),n)}catch(n){throw r(),n}}s(lT,"withEnv");var dT=["API_ENCRYPTION_KEY","BB_ADMIN_USER_PASSWORD","COUCH_DB_PASSWORD","COUCH_DB_SQL_URL","COUCH_DB_URL","GOOGLE_CLIENT_SECRET","MICROSOFT_CLIENT_SECRET","INTERNAL_API_KEY_FALLBACK","INTERNAL_API_KEY","JWT_SECRET","MINIO_ACCESS_KEY","MINIO_SECRET_KEY","REDIS_PASSWORD","REDIS_USERNAME"];for(let[t,e]of Object.entries(mt))e==="0"&&(mt[t]=0),e==="false"&&(mt[t]=0);var g=mt;var Ha={};P(Ha,{Databases:()=>sf,SEPARATOR:()=>Yn,SelectableDatabase:()=>Qa,getRedisClusterOptions:()=>of,getRedisConnectionDetails:()=>ja,getRedisOptions:()=>on,removeDbPrefix:()=>af});var Yn="-",sf=(_=>(_.PW_RESETS="pwReset",_.VERIFICATIONS="verification",_.INVITATIONS_LIST="invitationList",_.DEV_LOCKS="devLocks",_.DEBOUNCE="debounce",_.SESSIONS="session",_.USER_CACHE="users",_.FLAGS="flags",_.WORKSPACE_METADATA="appMetadata",_.QUERY_VARS="queryVars",_.LICENSES="license",_.GENERIC_CACHE="data_cache",_.WRITE_THROUGH="writeThrough",_.LOCKS="locks",_.SOCKET_IO="socket_io",_.BPM_EVENTS="bpmEvents",_.DOC_WRITE_THROUGH="docWriteThrough",_.RECAPTCHA_SESSION="recaptchaSession",_.OPENAPI_IMPORT_SPECS="openapiImportSpecs",_))(sf||{}),Qa=(p=>(p[p.DEFAULT=0]="DEFAULT",p[p.SOCKET_IO=1]="SOCKET_IO",p[p.RATE_LIMITING=2]="RATE_LIMITING",p[p.OPENAPI_IMPORT_SPECS=3]="OPENAPI_IMPORT_SPECS",p[p.UNUSED_3=4]="UNUSED_3",p[p.UNUSED_4=5]="UNUSED_4",p[p.UNUSED_5=6]="UNUSED_5",p[p.UNUSED_6=7]="UNUSED_6",p[p.UNUSED_7=8]="UNUSED_7",p[p.UNUSED_8=9]="UNUSED_8",p[p.UNUSED_9=10]="UNUSED_9",p[p.UNUSED_10=11]="UNUSED_10",p[p.UNUSED_11=12]="UNUSED_11",p[p.UNUSED_12=13]="UNUSED_12",p[p.UNUSED_13=14]="UNUSED_13",p[p.UNUSED_14=15]="UNUSED_14",p))(Qa||{});function ja(){let t=g.REDIS_PASSWORD,e=g.REDIS_USERNAME,r=g.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(ja,"getRedisConnectionDetails");function of(){return{slotsRefreshTimeout:2e3,dnsLookup:s((t,e)=>e(null,t),"dnsLookup"),redisOptions:{...on()}}}s(of,"getRedisClusterOptions");function on(){let{host:t,password:e,port:r,username:n}=ja(),i=g.REDIS_URL.toLowerCase().startsWith("rediss://")?{}:void 0;return{connectTimeout:3e4,port:r,host:t,password:e,...n&&{username:n},...i&&{tls:i}}}s(on,"getRedisOptions");function af(t){let e=t.split(Yn);return e.length>=2?(e.shift(),e.join(Yn)):e[0]}s(af,"removeDbPrefix");var WS=W(require("events"));var ai={};P(ai,{Duration:()=>me,GZIP_PREFIX:()=>_u,clearCookie:()=>Jt,compare:()=>lf,fetchWithBlacklist:()=>oi,getBearerToken:()=>Gv,getCookie:()=>zt,getDispatcher:()=>kv,getSessionExpiryDate:()=>Zf,getSessionExpirySeconds:()=>yu,getWorkspaceIdFromCtx:()=>dn,gunzipFromBase64:()=>Wv,gzipToBase64:()=>Bv,hasCircularStructure:()=>Dv,hash:()=>cf,isAudited:()=>np,isClient:()=>Cv,isPublicApiRequest:()=>Iv,isServingApp:()=>Av,isServingBuilder:()=>_v,isServingBuilderPreview:()=>Ov,isValidInternalAPIKey:()=>Hs,microsoftDatasourceCreationCacheKey:()=>nN,newid:()=>X,openJwt:()=>Su,setAuthCookie:()=>Rv,setCookie:()=>tp,time:()=>xv,timeout:()=>rp,urlHasProtocol:()=>bv,validEmail:()=>ip});var fT=require("uuid");function X(){return(0,fT.v4)().replace(/-/g,"")}s(X,"newid");var uf=require("bcrypt"),nx=g.SALT_ROUNDS||10;async function cf(t){let e=await uf.genSalt(nx);return uf.hash(t,e)}s(cf,"hash");async function lf(t,e){return uf.compare(t,e)}s(lf,"compare");var Tu=W(require("jsonwebtoken"));var le={};P(le,{DEFAULT_TENANT_ID:()=>ce,baseGlobalDBName:()=>ks,doInAutomationContext:()=>Cx,doInContext:()=>bf,doInEnvironmentContext:()=>Fx,doInFeatureFlagOverrideContext:()=>kf,doInIPContext:()=>Nf,doInIdentityContext:()=>vs,doInLicenseContext:()=>bx,doInScimContext:()=>Bx,doInSelfHostTenantUsingCloud:()=>Dx,doInTenant:()=>De,doInWorkspaceContext:()=>Nx,doInWorkspaceMigrationContext:()=>Lx,ensureSnippetContext:()=>DT,getAuditLogDBName:()=>RT,getAuditLogsDB:()=>Gx,getAutomationId:()=>xf,getCurrentContext:()=>cn,getDevWorkspaceDB:()=>Vx,getDevWorkspaceId:()=>kx,getEnvironmentVariables:()=>Wx,getFeatureFlagOverrides:()=>Uf,getFeatureFlags:()=>Pf,getGlobalDB:()=>z,getGlobalDBName:()=>un,getIP:()=>vf,getIdentity:()=>Qt,getLicense:()=>xx,getOrThrowWorkspaceId:()=>Ux,getPlatformURL:()=>Df,getProdWorkspaceDB:()=>$x,getProdWorkspaceId:()=>Mx,getScimDBName:()=>Ox,getSelfHostCloudDB:()=>vx,getTableForView:()=>qx,getTenantIDFromWorkspaceID:()=>Zn,getTenantId:()=>q,getWorkspaceDB:()=>ei,getWorkspaceId:()=>Me,identity:()=>xs,isDevWorkspace:()=>bT,isMultiTenant:()=>Sr,isProdWorkspace:()=>Qx,isScim:()=>Et,isSelfHostUsingCloud:()=>tu,isTenancyEnabled:()=>wx,isTenantIdSet:()=>Ix,setFeatureFlags:()=>Lf,setTableForView:()=>Kx});var xs={};P(xs,{doInAccountContext:()=>ix,doInIdentityContext:()=>pf,doInUserContext:()=>mf,getAccountUserId:()=>pT,getIdentity:()=>ff});function ff(){return Qt()}s(ff,"getIdentity");function pf(t,e){return vs(t,e)}s(pf,"doInIdentityContext");function mf(t,e,r){let n={...t,_id:t._id,type:"user",hostInfo:{ipAddress:e.request.ip,userAgent:e.userAgent.source}};return pf(n,r)}s(mf,"doInUserContext");function ix(t,e){let r=pT(t),n=t.tenantId,i={_id:r,type:"user",tenantId:n,account:t};return pf(i,e)}s(ix,"doInAccountContext");function pT(t){let e;return Ko(t)?e=t.budibaseUserId:e=t.accountId,e}s(pT,"getAccountUserId");var ht=s(t=>{let e=hf(t),r,n;if(e.auth?.username)r=e.auth.username;else if(g.COUCH_DB_USERNAME)r=g.COUCH_DB_USERNAME;else if(!g.isTest())throw new Error("CouchDB username not set");if(e.auth?.password)n=e.auth.password;else if(g.COUCH_DB_PASSWORD)n=g.COUCH_DB_PASSWORD;else if(!g.isTest())throw new Error("CouchDB password not set");let i=Buffer.from(`${r}:${n}`).toString("base64"),o=g.COUCH_DB_SQL_URL;if(g.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:hf(o).url,auth:{username:r,password:n},cookie:`Basic ${i}`}},"getCouchInfo"),hf=s((t=g.COUCH_DB_URL)=>{let e,r,n,i;if(t){/^https?:\/\//i.test(t)||(t=`http://${t}`);let a=t.split("://"),u=a[0],c=a.slice(1).join("://");if(t.includes("@")){let l=c.split("@");i=l[l.length-1];let d=l.slice(0,-1).join("@");if(d.includes(":")){let f=d.split(":");r=f[0],n=f.slice(1).join(":")}else r=d}else i=c;e=`${u}://${i}`}return{url:e,auth:{username:r,password:n}}},"getUrlInfo");var OT=W(require("@budibase/nano"));var mT=W(require("node-fetch"));function Ya(t){return t.replace(/(https?:\/\/)|(\/)+/g,"$1$2")}s(Ya,"checkSlashesInUrl");async function hT(t,e="GET",r){let{url:n,cookie:i}=ht(),o=`${n}/${t}`;return await Ns({url:o,cookie:i,method:e,body:r})}s(hT,"directCouchCall");async function Ns({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,mT.default)(Ya(encodeURI(t)),i)}s(Ns,"directCouchUrlCall");async function gf(t,e="GET",r){let n=await hT(t,e,r);if(n.status<300)return await n.json();throw"Cannot connect to CouchDB instance"}s(gf,"directCouchQuery");var an=W(require("pouchdb"));var gT,ET=!1,Ef=s((t={})=>{let{url:e,cookie:r}=ht(),n={prefix:e,fetch:s((i,o)=>(o.headers.set("Authorization",r),an.default.fetch(i,o)),"fetch")};if(t.inMemory){let i=require("pouchdb-adapter-memory");an.default.plugin(i),n={adapter:"memory"}}if(t.onDisk&&(n={adapter:"leveldb"}),t.replication){let i=require("@budibase/pouchdb-replication-stream");an.default.plugin(i.plugin),an.default.adapter("writableStream",i.adapters.writableStream)}if(t.find){let i=require("pouchdb-find");an.default.plugin(i)}return an.default.defaults(n)},"getPouch");function za(t){gT=Ef(t),ET=!0}s(za,"init");var sx=s(()=>{if(!ET)throw new Error("init has not been called")},"checkInitialised");function it(t,e){sx();let r=new gT(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(it,"getPouchDB");async function Ps(t){if(!(!t||g.isTest()))try{return await t.close()}catch{}}s(Ps,"closePouchDB");var de=W(require("dd-trace"));var zn=class{constructor(e){this.db=e}static{s(this,"DDInstrumentedDatabase")}get name(){return this.db.name}exists(e){return de.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 de.default.trace("db.get",r=>(r.addTags({db_name:this.name,doc_id:e}),this.db.get(e)))}tryGet(e){return de.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 de.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 de.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 de.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 de.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 de.default.trace("db.bulkDocs",r=>(r.addTags({db_name:this.name,num_docs:e.length}),this.db.bulkDocs(e)))}async find(e){return de.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 de.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 de.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 de.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 de.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 de.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 de.default.trace("db.load",r=>(r.addTags({db_name:this.name,num_args:e.length}),this.db.load(...e)))}createIndex(...e){return de.default.trace("db.createIndex",r=>(r.addTags({db_name:this.name,num_args:e.length}),this.db.createIndex(...e)))}deleteIndex(...e){return de.default.trace("db.deleteIndex",r=>(r.addTags({db_name:this.name,num_args:e.length}),this.db.deleteIndex(...e)))}getIndexes(...e){return de.default.trace("db.getIndexes",r=>(r.addTags({db_name:this.name,num_args:e.length}),this.db.getIndexes(...e)))}sql(e,r){return de.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 de.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 de.default.trace("db.sqlDiskCleanup",e=>(e.addTags({db_name:this.name}),this.db.sqlDiskCleanup()))}};var wf={};P(wf,{breakExternalTableId:()=>Sf,breakRowIdField:()=>yx,buildExternalTableId:()=>fx,convertRowId:()=>Ex,encodeTableId:()=>px,encodeViewId:()=>mx,extractDate:()=>_f,generateRowIdField:()=>hx,getNativeSql:()=>Jn,isExternalTable:()=>Tf,isExternalTableID:()=>Ja,isInternalTableID:()=>dx,isRowId:()=>gx,isValidFilter:()=>Za,isValidISODateString:()=>Xa,isValidISODateStringWithoutTimezone:()=>Af,isValidTime:()=>Of,sqlLog:()=>Ls,validateManyToMany:()=>If});var yf=`${"_"}${"_"}`,TT=/^\[.*]$/g,ox=encodeURIComponent(" "),ax=/^\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}:\d{2}(?:.\d{3})?Z)?$/,ux=/^\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}:\d{2}(?:.\d{3})?)?$/,cx=/(\d{4}-\d{2}-\d{2})/,lx=/^\d{1,2}:\d{2}(?:\.\d{1,6}|:\d{2}(?:\.\d{1,6})?)?$/;function Ja(t){return t.startsWith("datasource_")}s(Ja,"isExternalTableID");function dx(t){return!Ja(t)}s(dx,"isInternalTableID");function Jn(t){let e=t.toSQL();if(Array.isArray(e))return e;let r;return e.toNative&&(r=e.toNative()),{sql:r?.sql||e.sql,bindings:r?.bindings||e.bindings}}s(Jn,"getNativeSql");function Tf(t){return t?.sourceId&&t.sourceId.includes("datasource_")&&t?.sourceId!==bn||t?.sourceType==="external"?!0:!!(t?._id&&Ja(t._id))}s(Tf,"isExternalTable");function fx(t,e){return`${t}${yf}${encodeURIComponent(e)}`}s(fx,"buildExternalTableId");function px(t){return Ja(t)?encodeURIComponent(t):t}s(px,"encodeTableId");function mx(t){return encodeURIComponent(t)}s(mx,"encodeViewId");function Sf(t){let e=t.split(yf),r=e.shift(),n=e.join(yf);if(n.includes(ox)&&(n=decodeURIComponent(n)),!r||!n)throw new Error("Unable to get datasource/table name from table ID");return{datasourceId:r,tableName:n}}s(Sf,"breakExternalTableId");function hx(t=[]){Array.isArray(t)||(t=[t]);for(let e in t)t[e]instanceof Buffer&&(t[e]=t[e].toString());return encodeURIComponent(JSON.stringify(t).replace(/"/g,"'"))}s(hx,"generateRowIdField");function gx(t){return Array.isArray(t)||typeof t=="string"&&t.match(TT)!=null}s(gx,"isRowId");function Ex(t){return Array.isArray(t)?t[0]:typeof t=="string"&&t.match(TT)!=null?t.substring(1,t.length-1):t}s(Ex,"convertRowId");function yx(t){if(!t)return[];let e=typeof t=="string"?t:t._id,r=decodeURIComponent(e).replace(/'/g,'"');try{let n=JSON.parse(r);return Array.isArray(n)?n:[n]}catch{return[t]}}s(yx,"breakRowIdField");function Xa(t){let e=t.trim();if(!ax.test(e))return!1;let r=new Date(e);return!isNaN(r.getTime())}s(Xa,"isValidISODateString");function Af(t){let e=t.trim();if(!ux.test(e))return!1;let r=new Date(e);return!isNaN(r.getTime())}s(Af,"isValidISODateStringWithoutTimezone");function _f(t){let e=t.match(cx);if(e)return e[0]}s(_f,"extractDate");function Za(t){return t!=null&&t!==""}s(Za,"isValidFilter");function Of(t){return lx.test(t)}s(Of,"isValidTime");function Ls(t,e,r){if(!g.SQL_LOGGING_ENABLE)return;let n=`[SQL] [${t.toUpperCase()}] query="${e}"`;r&&(n+=` values="${r.join(", ")}"`),console.log(n)}s(Ls,"sqlLog");function Tx(t){return!!t.through&&!!t.fromPrimary&&!!t.from&&!!t.toPrimary&&!!t.to}s(Tx,"isValidManyToManyRelationship");function If(t){if(Tx(t))return t}s(If,"validateManyToMany");var ST="Database does not exist.";function AT(t){return(0,OT.default)({url:t.url,requestDefaults:{headers:{Authorization:t.cookie}},parseUrl:!1})}s(AT,"buildNano");var Tr=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"}};function Sx(t,e,r){if(!t||!e)throw new Error("Unable to create database without database name or connection");let n=new Xn(t,r,e);return new zn(n)}s(Sx,"DatabaseWithConnection");var Xn=class t{constructor(e,r,n){this.couchInfo=ht();this.name=e,this.pouchOpts=r||{},n&&(this.couchInfo=ht(n),this.instanceNano=AT(this.couchInfo)),t.nano||t.init()}static{s(this,"DatabaseImpl")}static init(){let e=ht();t.nano=AT(e)}exists(e){return e===void 0?this.dbExists():this.docExists(e)}async dbExists(){return(await Ns({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 Tr(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===ST)return await this.checkAndCreateDb(),await this.performCallWithDBCreation(e);throw new Tr(`CouchDB error: ${i.message}`,i)}}async performCall(e){let r=this.getDb(),n=await e(r);try{return await n()}catch(i){throw new Tr(`CouchDB error: ${i.message}`,i)}}async get(e){return this.performCall(r=>{if(!e)throw new Error("Unable to get doc without a valid _id.");return()=>r.get(e)})}async tryGet(e){try{return await this.get(e)}catch(r){if(r.statusCode===404)return;throw r}}async getMultiple(e,r){if(!e||e.length===0)return[];e=[...new Set(e)];let n=!r?.excludeDocs,i=await this.allDocs({keys:e,include_docs:n}),o=s(c=>n&&c.doc==null||c.value&&"deleted"in c.value&&c.value.deleted?!0:c.error==="not_found","rowUnavailable"),a=i.rows.filter(c=>!o(c)),u=a.length!==i.rows.length;if(!r?.allowMissing&&u){let l=i.rows.filter(d=>o(d)).map(d=>d.key).join(", ");throw new Error(`Unable to get bulk documents: ${l}`)}return a.map(c=>n?c.doc:c.value)}async remove(e,r){return this.performCall(n=>{let i,o;if(mh(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 Tr(o,{name:this.name,status:400})}async post(e,r){return e._id||(e._id=X()),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===ST)return{offset:0,total_rows:0,rows:[]};throw n}})}async _sqlQuery(e,r,n){e=Ya(`${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 Ns(i),a=await o.text();if(o.status>300){let u;try{u=JSON.parse(a)}catch{throw console.error(`SQS error: ${a}`),new Tr("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}/${vt}`;return Ls("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(vt)){let e=await this.get(vt);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 Tr(e.message,e)}}async compact(){return this.performCall(e=>()=>e.compact())}async dump(e,r){return it(this.name).dump(e,r)}async load(e){return it(this.name).load(e)}async createIndex(e){return it(this.name).createIndex(e)}async deleteIndex(e){return it(this.name).deleteIndex(e)}async getIndexes(){return it(this.name).getIndexes()}};function Ce(t,e){return new zn(new Xn(t,e))}s(Ce,"getDB");async function je(t,e,r){let n=Ce(t,r);return await e(n)}s(je,"doWithDB");async function Rf(t){let e="/_all_dbs";return t&&(e+=`?${t}`),await gf(e)}s(Rf,"directCouchAllDbs");var Cf="No app provided";function Nt(t){if(!t)throw Cf;return t.startsWith(nt)}s(Nt,"isDevWorkspaceID");function Ax(t){if(!t)throw Cf;return t.startsWith(rt)&&!Nt(t)}s(Ax,"isProdWorkspaceID");function Us(t){if(!t)throw Cf;return Nt(t.appId)}s(Us,"isDevWorkspace");function eu(t){if(!t||t.startsWith(nt))return t;let e=t.split(rt);e.shift();let r=e.join(rt);return`${nt}${r}`}s(eu,"getDevWorkspaceID");function He(t){if(!t||!t.startsWith(nt))return t;let e=t.split(nt);e.shift();let r=e.join(nt);return`${rt}${r}`}s(He,"getProdWorkspaceID");var IT=require("async_hooks");var ge=class t{static{s(this,"Context")}static{this.storage=new IT.AsyncLocalStorage}static run(e,r){return t.storage.run(e,()=>r())}static get(){return t.storage.getStore()}};var wT=null;function un(t){return t||(t=q()),ks(t)}s(un,"getGlobalDBName");function RT(t){return t||(t=q()),t===ce?pe.AUDIT_LOGS.name:`${t}${"_"}${pe.AUDIT_LOGS.name}`}s(RT,"getAuditLogDBName");function Ox(t){return t||(t=q()),t===ce?pe.SCIM_LOGS.name:`${t}${"_"}${pe.SCIM_LOGS.name}`}s(Ox,"getScimDBName");function ks(t){return!t||t===ce?pe.GLOBAL.name:`${t}${"_"}${pe.GLOBAL.name}`}s(ks,"baseGlobalDBName");function Df(){return g.PLATFORM_URL}s(Df,"getPlatformURL");function Sr(){return!!g.MULTI_TENANCY}s(Sr,"isMultiTenant");function Ix(){return!!ge.get()?.tenantId}s(Ix,"isTenantIdSet");function wx(){return g.MULTI_TENANCY}s(wx,"isTenancyEnabled");function Zn(t){if(!t)return;if(!Sr())return ce;let e=t.split("_"),r=e[1]==="dev";if(!(r&&e.length===3||!r&&e.length===2))return r?e[2]:e[1]}s(Zn,"getTenantIDFromWorkspaceID");function Rx(t){let e;try{e=ge.get()}catch{e={}}return e={...e,...t},e}s(Rx,"updateContext");async function gt(t,e){Px();let r=Rx(t);return ge.run(r,e)}s(gt,"newContext");async function Cx(t){return await DT(),await gt({tenantId:Zn(t.workspaceId),appId:t.workspaceId,automationId:t.automationId},t.task)}s(Cx,"doInAutomationContext");async function bf(t,e){let r=Zn(t);return gt({tenantId:r,appId:t},e)}s(bf,"doInContext");async function De(t,e){return g.MULTI_TENANCY||(t=t||ce),gt(t?{tenantId:t}:{},e)}s(De,"doInTenant");async function Dx(t,e){return gt({tenantId:t,isSelfHostUsingCloud:!0},e)}s(Dx,"doInSelfHostTenantUsingCloud");async function bx(t,e){return gt({license:t},e)}s(bx,"doInLicenseContext");function xx(){return ge.get()?.license}s(xx,"getLicense");function tu(){return!!ge.get()?.isSelfHostUsingCloud}s(tu,"isSelfHostUsingCloud");function vx(){let t=ge.get();if(!t||!t.isSelfHostUsingCloud)throw new Error("Self-host cloud DB not found");return Ce(pe.SELF_HOST_CLOUD.name)}s(vx,"getSelfHostCloudDB");async function Nx(t,e){return CT(t,e)}s(Nx,"doInWorkspaceContext");async function CT(t,e,r){if(!t)throw new Error("workspaceId is required");let n=Zn(t),i={appId:t,...r};return n&&(i.tenantId=n),gt(i,e)}s(CT,"_doInWorkspaceContext");async function vs(t,e){if(!t)throw new Error("identity is required");let r={identity:t};return t.tenantId&&(r.tenantId=t.tenantId),gt(r,e)}s(vs,"doInIdentityContext");function Px(){if(ge.get()?.isMigrating)throw new Error("The context cannot be changed, a migration is currently running")}s(Px,"guardMigration");async function Lx(t,e){return CT(t,e,{isMigrating:!0})}s(Lx,"doInWorkspaceMigrationContext");function Qt(){try{return ge.get()?.identity}catch{}}s(Qt,"getIdentity");function q(){if(!Sr())return ce;let e=ge.get()?.tenantId;if(!e)throw new Error("Tenant id not found");return e}s(q,"getTenantId");function xf(){return ge.get()?.automationId}s(xf,"getAutomationId");function Me(){let e=ge.get()?.appId;return!e&&g.isTest()&&wT?wT:e}s(Me,"getWorkspaceId");function Ux(){let t=Me();if(!t)throw new Error("Workspace id not set");return t}s(Ux,"getOrThrowWorkspaceId");function vf(){return ge.get()?.ip}s(vf,"getIP");var kx=s(()=>{let t=Me();if(!t)throw new Error("Could not get workspaceId");return eu(t)},"getDevWorkspaceId"),Mx=s(()=>{let t=Me();if(!t)throw new Error("Could not get workspaceId");return He(t)},"getProdWorkspaceId");function Fx(t,e){if(!t)throw new Error("Must supply environment variables.");return gt({environmentVariables:t},e)}s(Fx,"doInEnvironmentContext");function Bx(t){return gt({isScim:!0},t)}s(Bx,"doInScimContext");function Nf(t,e){return gt({ip:t},e)}s(Nf,"doInIPContext");async function DT(){let t=cn();if(!t||t.snippets)return;let e,r=ei();r&&(e=(await r.tryGet("app_metadata"))?.snippets),t.snippets=e||[]}s(DT,"ensureSnippetContext");function Wx(){let t=ge.get();return t.environmentVariables?t.environmentVariables:null}s(Wx,"getEnvironmentVariables");function z(){let t=ge.get();if(!t||g.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 Ce(ks(t?.tenantId))}s(z,"getGlobalDB");function Gx(){if(!q())throw new Error("No tenant ID found - cannot open audit log DB");return Ce(RT())}s(Gx,"getAuditLogsDB");function ei(t){let e=Me();if(!e)throw new Error("Unable to retrieve workspace DB - no workspace ID.");if(tu())throw new Error("Workspace DB not found - self-host users using cloud don't have workspace DBs");return Ce(e,t)}s(ei,"getWorkspaceDB");function $x(t){let e=Me();if(!e)throw new Error("Unable to retrieve prod DB - no workspace ID.");return Ce(He(e),t)}s($x,"getProdWorkspaceDB");function Vx(t){let e=Me();if(!e)throw new Error("Unable to retrieve dev DB - no workspace ID.");return Ce(eu(e),t)}s(Vx,"getDevWorkspaceDB");function Et(){return!!ge.get()?.isScim}s(Et,"isScim");function cn(){try{return ge.get()}catch{return}}s(cn,"getCurrentContext");function Pf(t){let e=cn();if(e)return e.featureFlagCache?.[t]}s(Pf,"getFeatureFlags");function Lf(t,e){let r=cn();r&&(r.featureFlagCache??={},r.featureFlagCache[t]=e)}s(Lf,"setFeatureFlags");function Uf(){return cn()?.featureFlagOverrides||{}}s(Uf,"getFeatureFlagOverrides");async function kf(t,e){return await gt({featureFlagOverrides:t},e)}s(kf,"doInFeatureFlagOverrideContext");function qx(t){let e=cn();if(e)return e.viewToTableCache?.[t]}s(qx,"getTableForView");function Kx(t,e){let r=cn();r&&(r.viewToTableCache??={},r.viewToTableCache[t]=e)}s(Kx,"setTableForView");function bT(){let t=Me();return Nt(t)}s(bT,"isDevWorkspace");function Qx(){return!bT()}s(Qx,"isProdWorkspace");var Ir={};P(Ir,{AutomationViewMode:()=>Wa,BUDIBASE_DATASOURCE_TYPE:()=>Hd,DEFAULT_BB_DATASOURCE_ID:()=>bn,DEFAULT_EMPLOYEE_TABLE_ID:()=>Xd,DEFAULT_EXPENSES_TABLE_ID:()=>Jd,DEFAULT_INVENTORY_TABLE_ID:()=>zd,DEFAULT_JOBS_TABLE_ID:()=>Yd,DatabaseImpl:()=>Xn,DatabaseWithConnection:()=>Sx,DeprecatedViews:()=>jn,DesignDocuments:()=>Cs,DocumentType:()=>ae,InternalTable:()=>wt,QueryBuilder:()=>Yt,Replication:()=>IS,SEPARATOR:()=>D,SQLITE_DESIGN_DOC_ID:()=>vt,SQS_DATASOURCE_INTERNAL:()=>jd,StaticDatabases:()=>pe,UNICODE_MAX:()=>ve,USER_METADATA_PREFIX:()=>Rs,ViewName:()=>Kt,WORKSPACE_DEV:()=>Ga,WORKSPACE_DEV_PREFIX:()=>nt,WORKSPACE_PREFIX:()=>rt,baseGlobalDBName:()=>ks,checkErrorCode:()=>DS,closePouchDB:()=>Ps,createApiKeyView:()=>yS,createNewUserEmailView:()=>gS,createPlatformAccountEmailView:()=>SS,createPlatformUserView:()=>AS,createUserAppView:()=>ES,createView:()=>si,dbExists:()=>cv,directCouchAllDbs:()=>Rf,directCouchCall:()=>hT,directCouchQuery:()=>gf,directCouchUrlCall:()=>Ns,doWithDB:()=>je,fullSearch:()=>mv,generateAIConfigID:()=>eS,generateAgentID:()=>qT,generateAgentKnowledgeSourceConnectionID:()=>JT,generateAgentKnowledgeSourceSyncStateID:()=>zT,generateAgentRequestID:()=>jT,generateAgentToolSourceID:()=>YT,generateAppUserID:()=>hu,generateChatAppID:()=>KT,generateChatConversationID:()=>QT,generateDevInfoID:()=>GT,generateGlobalUserID:()=>ni,generateKnowledgeBaseFileID:()=>XT,generateKnowledgeBaseID:()=>sS,generateOAuth2LogID:()=>VT,generatePluginID:()=>$T,generateProjectID:()=>iS,generateRoleID:()=>Vf,generateRowID:()=>$f,generateTableID:()=>kT,generateTemplateID:()=>WT,generateUserMetadataID:()=>FT,generateWorkspaceAppID:()=>rS,generateWorkspaceFavouriteID:()=>nS,generateWorkspaceID:()=>UT,getAgentTestRunID:()=>HT,getAgentTestSuiteID:()=>qf,getAllDbs:()=>hS,getAllWorkspaces:()=>Gs,getCouchInfo:()=>ht,getDB:()=>Ce,getDevWorkspaceID:()=>eu,getDevWorkspaceIDs:()=>av,getDocParams:()=>Pt,getGlobalDBName:()=>un,getGlobalIDFromUserMetadataID:()=>BT,getGlobalUserParams:()=>ln,getLiteLLMKeyID:()=>tS,getOAuth2ConfigParams:()=>lS,getPluginParams:()=>cS,getPouch:()=>Ef,getPouchDB:()=>it,getProdWorkpaceIDs:()=>ov,getProdWorkspaceID:()=>He,getProjectParams:()=>pS,getQueryIndex:()=>oS,getRoleParams:()=>gu,getRowParams:()=>Kf,getStartEndKeyURL:()=>Ws,getTemplateParams:()=>uS,getUrlInfo:()=>hf,getUserMetadataParams:()=>aS,getUsersByWorkspaceParams:()=>ii,getWorkspaceAppParams:()=>dS,getWorkspaceFavouriteParams:()=>fS,getWorkspacesByIDs:()=>sv,init:()=>za,isDevWorkspace:()=>Us,isDevWorkspaceID:()=>Nt,isDocumentConflictError:()=>gv,isGlobalUserID:()=>MT,isKnowledgeBaseFileID:()=>ZT,isProdWorkspaceID:()=>Ax,isSameWorkspaceID:()=>uv,isType:()=>mS,paginatedSearch:()=>pv,pagination:()=>jf,prefixRoleID:()=>jt,queryGlobalView:()=>Ht,queryGlobalViewRaw:()=>qs,queryPlatformView:()=>Vs,queryView:()=>Yf,queryViewRaw:()=>$s,removeKeyNumbering:()=>Ks,searchIndexes:()=>Jf});var Bs={};P(Bs,{WorkspaceState:()=>Gf,getWorkspaceMetadata:()=>mu,invalidateWorkspaceMetadata:()=>rv});var _r={};P(_r,{getCacheClient:()=>Ff,getDocWritethroughClient:()=>Xx,getInviteListClient:()=>Ms,getLockClient:()=>Wf,getOpenapiImportSpecsClient:()=>zx,getPasswordResetClient:()=>Fs,getSessionClient:()=>Ar,getSocketClient:()=>Jx,getUserClient:()=>ri,getWorkspaceClient:()=>pu,getWritethroughClient:()=>Bf,init:()=>st,shutdown:()=>PT});var nu=W(require("ioredis"));var ru=require("dd-trace"),vT=require("lodash");var xT;if(g.MOCK_REDIS)try{xT=require("ioredis-mock")}catch{console.log("Mock redis unavailable")}async function jx(t=0){return await ru.tracer.trace("Redis.init",async e=>{if(g.MOCK_REDIS)return e.addTags({mock:!0}),new xT(on());let r;if(g.REDIS_CLUSTERED){e.addTags({clustered:!0});let{host:n,port:i}=ja();r=new nu.Cluster([{host:n,port:i}],of())}else r=new nu.default(on());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(jx,"init");function Hx(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:af(a),value:u}});r(await Promise.all(o))}catch(o){n(o)}})})}s(Hx,"promisifyStream");function Yx(t){return t.isCluster}s(Yx,"isCluster");var Mf=class t{static{s(this,"RedisWrapper")}constructor(e,r){this.client=e,this.db=r}static async init(e,r=0){return await ru.tracer.trace("RedisWrapper.init",async n=>{let i=await jx(r);return r&&!g.isTest()&&(n.addTags({db:e}),i.select(r)),new t(i,e)})}trace(e,r){return ru.tracer.trace(e,async n=>(n.addTags({db:this.db}),await r(n)))}prefixed(e){return e.includes(this.db)?e:`${this.db}${Yn}${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}${Yn}${e}`;let n;Yx(this.client)?n=this.client.nodes("master")[0].scanStream({match:e+"*",count:100}):n=this.client.scanStream({match:e+"*",count:100});let i=await Hx(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,vT.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(`
|
|
6
6
|
if redis.call('GET', KEYS[1]) == ARGV[1] then
|
|
7
7
|
redis.call('DEL', KEYS[1])
|
|
8
8
|
end
|
|
@@ -33,7 +33,7 @@ attempted value: ${o}
|
|
|
33
33
|
if (doc.ssoId) {
|
|
34
34
|
emit(doc.ssoId, doc._id)
|
|
35
35
|
}
|
|
36
|
-
}`,"platform_users_lowercase_2")},"createPlatformUserView"),Vs=s(async(t,e)=>{let r={account_by_email:SS,platform_users_lowercase_2:AS};return je(pe.PLATFORM_INFO.name,async n=>{let i=r[t];return Yf(t,e,n,i,{arrayResponse:!0})})},"queryPlatformView"),_S={by_email2:gS,by_api_key:yS,by_app:ES},Ht=s(async(t,e,r,n)=>{r||(r=z());let i=_S[t];return Yf(t,e,r,i,n)},"queryGlobalView");async function qs(t,e,r){let n=z(),i=_S[t];return $s(t,e,n,i,r)}s(qs,"queryGlobalViewRaw");var fv=W(require("pouchdb"));var OS=require("dd-trace");var zf=class{static{s(this,"Replication")}constructor({source:e,target:r}){this.source=it(e),this.target=it(r),e.startsWith("app_dev")&&r.startsWith("app")?this.direction="toProduction":e.startsWith("app")&&r.startsWith("app_dev")&&(this.direction="toDev")}async close(){await Promise.all([Ps(this.source),Ps(this.target)])}replicate(e={}){return new Promise(r=>{this.source.replicate.to(this.target,e).on("denied",function(n){throw new Error(`Denied: Document failed to replicate ${n}`)}).on("complete",function(n){return r(n)}).on("error",function(n){throw n})})}async resolveInconsistencies(e){for(let r of e)try{let[n,i]=await Promise.all([this.source.get(r),this.target.get(r)]),o=this.replicationDelta(n,i);if(o<0||o===0&&n._rev===i._rev)continue;let a=o+1;await OS.tracer.trace("Replication.resolveInconsistencies",async u=>{u.addTags({versionsToJump:a,toFix:!0,id:r,sourceRev:n._rev,targetRev:i._rev});for(let c=0;c<a;c++){let l=await this.source.get(i._id);await this.source.put(l)}})}catch{console.warn("Cannot resolve inconsistencies for document",r)}}replicationDelta(e,r){let n=this.getRevisionNumber(e);return this.getRevisionNumber(r)-n}getRevisionNumber(e){return parseInt(e._rev?.split("-")[0]||"0")}appReplicateOpts(e={}){if(typeof e.filter=="string")return e;let r=e.filter,n=this.direction,i=n==="toDev";delete e.filter;let o=e.isCreation,a=e.tablesToSync;delete e.isCreation,delete e.tablesToSync;let u=!1,c;typeof a=="string"&&a==="all"?u=!0:a&&(c=a);let l=s((f,h)=>f?.startsWith(h+"_"),"startsWithID"),d=s(f=>l(f,"ro")||l(f,"li"),"isData");return{...e,filter:s((f,h)=>!o&&f._id==="_design/migrations"||i&&f._id.startsWith("_design")?!1:f._deleted||l(f._id,Rs)?!0:n==="toProduction"&&!o&&l(f._id,"autocolumn_state")?!1:d(f._id)?!!c?.find(m=>f._id.includes(m))||u:l(f._id,"log_au")||l(f._id,"agentlogsession")||f._id==="app_metadata"?!1:r?r(f,h):!0,"filter")}}async rollback(){await this.target.destroy(),this.target=it(this.target.name),await this.replicate()}},IS=zf;var RS=W(require("node-fetch"));var Ks=Er.removeKeyNumbering;function Or(t){return t==null||t===""}s(Or,"isEmpty");var Yt=class t{static{s(this,"QueryBuilder")}#l;#d;#e;#r;#n;#i;#s;#o;#t;#f;#a;#u=!1;#c;static{this.maxLimit=200}constructor(e,r,n){this.#l=e,this.#d=r,this.#e={allOr:!1,onEmptyFilter:"all",string:{},fuzzy:{},range:{},equal:{},notEqual:{},empty:{},notEmpty:{},oneOf:{},notOneOf:{},contains:{},notContains:{},containsAny:{},...n},this.#r=50,this.#s="ascending",this.#o="string",this.#t=!0}disableEscaping(){return this.#u=!0,this}setIndexBuilder(e){return this.#a=e,this}setVersion(e){return e!=null&&(this.#f=e),this}setTable(e){return this.#e.equal.tableId=e,this}setLimit(e){return e!=null&&(this.#r=e),this}setSort(e){return e!=null&&(this.#n=e),this}setSortOrder(e){return e!=null&&(this.#s=e),this}setSortType(e){return e!=null&&(this.#o=e),this}setBookmark(e){return e!=null&&(this.#i=e),this}setSkip(e){return this.#c=e,this}excludeDocs(){return this.#t=!1,this}includeDocs(){return this.#t=!0,this}addString(e,r){return this.#e.string[e]=r,this}addFuzzy(e,r){return this.#e.fuzzy[e]=r,this}addRange(e,r,n){return this.#e.range[e]={low:r,high:n},this}addEqual(e,r){return this.#e.equal[e]=r,this}addNotEqual(e,r){return this.#e.notEqual[e]=r,this}addEmpty(e,r){return this.#e.empty[e]=r,this}addNotEmpty(e,r){return this.#e.notEmpty[e]=r,this}addOneOf(e,r){return this.#e.oneOf[e]=r,this}addNotOneOf(e,r){return this.#e.notOneOf[e]=r,this}addContains(e,r){return this.#e.contains[e]=r,this}addNotContains(e,r){return this.#e.notContains[e]=r,this}addContainsAny(e,r){return this.#e.containsAny[e]=r,this}setAllOr(){this.#e.allOr=!0}setOnEmptyFilter(e){this.#e.onEmptyFilter=e}handleSpaces(e){return this.#u?e:e.replace(/ /g,"_")}preprocess(e,{escape:r,lowercase:n,wrap:i,type:o}={}){let a=!!this.#f,u=typeof e;return e&&n&&(e=e.toLowerCase?e.toLowerCase():e),!this.#u&&r&&u==="string"&&(e=`${e}`.replace(/[ /#+\-&|!(){}\]^"~*?:\\]/g,"\\$&")),u==="string"&&!isNaN(e)&&!o?e=`"${e}"`:a&&i&&(e=u==="number"?e:`"${e}"`),e}isMultiCondition(){let e=0;for(let r of Object.values(this.#e))typeof r=="object"&&(e+=Object.keys(r).length);return e>1}compressFilters(e){let r={};for(let o of Object.keys(e)){let a=Ks(o);r[a]?r[a]=r[a].concat(e[o]):r[a]=e[o]}let n={},i=1;for(let[o,a]of Object.entries(r))n[`${i++}:${o}`]=a;return n}buildSearchQuery(){let e=this,r=this.#e&&this.#e.allOr,n=r?"":"*:*",i=!0,o={escape:!0,lowercase:!0,wrap:!0},a="";this.#e.equal.tableId&&(a=this.#e.equal.tableId,delete this.#e.equal.tableId);let u=s((E,p)=>Or(p)?null:`${E}:${e.preprocess(p,o)}`,"equal"),c=s((E,p,T="AND")=>{if(Or(p))return null;if(!Array.isArray(p))return`${E}:${p}`;let A=`${e.preprocess(p[0],{escape:!0})}`;for(let _=1;_<p.length;_++)A+=` ${T} ${e.preprocess(p[_],{escape:!0})}`;return`${E}:(${A})`},"contains"),l=s((E,p)=>Or(p)?null:(p=e.preprocess(p,{escape:!0,lowercase:!0,type:"fuzzy"}),`${E}:/.*${p}.*/`),"fuzzy"),d=s((E,p)=>{let T=r?"*:* AND ":"",A=r?"AND":void 0;return T+"NOT "+c(E,p,A)},"notContains"),f=s((E,p)=>c(E,p,"OR"),"containsAny"),h=s((E,p)=>{if(Or(p))return"*:*";if(!Array.isArray(p))if(typeof p=="string")p=p.split(",");else return"";let T=`${e.preprocess(p[0],o)}`;for(let A=1;A<p.length;A++)T+=` OR ${e.preprocess(p[A],o)}`;return`${E}:(${T})`},"oneOf"),m=s((E,p)=>{if(Or(p))return null;if(!Array.isArray(p))if(typeof p=="string")p=p.split(",");else return"";let T=`${e.preprocess(p[0],o)}`;for(let A=1;A<p.length;A++)T+=` OR ${e.preprocess(p[A],o)}`;return`(*:* -${E}:(${T}))`},"notOneOf");function y(E,p,T){let A="";for(let[_,I]of Object.entries(E)){_=Ks(_),_=e.preprocess(e.handleSpaces(_),{escape:!0});let O=p(_,I);if(O!=null){if(A.length>0||n.length>0){let C=T?.mode?T.mode:r?"OR":"AND";A+=` ${C} `}A+=O,(typeof I!="string"&&I!=null||typeof I=="string"&&I!==a&&I!=="")&&(i=!1)}}if(T?.returnBuilt)return A;n+=A}if(s(y,"build"),this.#e.string&&y(this.#e.string,(E,p)=>Or(p)?null:(p=e.preprocess(p,{escape:!0,lowercase:!0,type:"string"}),`${E}:${p}*`)),this.#e.range&&y(this.#e.range,(E,p)=>{if(Or(p)||p.low==null||p.low===""||p.high==null||p.high==="")return null;let T=e.preprocess(p.low,o),A=e.preprocess(p.high,o);return`${E}:[${T} TO ${A}]`}),this.#e.fuzzy&&y(this.#e.fuzzy,l),this.#e.equal&&y(this.#e.equal,u),this.#e.notEqual&&y(this.#e.notEqual,(E,p)=>Or(p)?null:typeof p=="boolean"?`(*:* AND !${E}:${p})`:`!${E}:${e.preprocess(p,o)}`),this.#e.empty&&y(this.#e.empty,E=>(i=!1,`(*:* -${E}:["" TO *])`)),this.#e.notEmpty&&y(this.#e.notEmpty,E=>(i=!1,`${E}:["" TO *]`)),this.#e.oneOf&&y(this.#e.oneOf,h),this.#e.notOneOf&&y(this.#e.notOneOf,m),this.#e.contains&&y(this.#e.contains,c),this.#e.notContains&&y(this.compressFilters(this.#e.notContains),d),this.#e.containsAny&&y(this.#e.containsAny,f),a&&(n=this.isMultiCondition()?`(${n})`:n,r=!1,y({tableId:a},u)),i){if(this.#e.onEmptyFilter==="none")return"";if(this.#e?.allOr)return n.replace("()","(*:*)")}return n}buildSearchBody(){let e={q:this.buildSearchQuery(),limit:Math.min(this.#r,t.maxLimit),include_docs:this.#t};if(this.#i&&(e.bookmark=this.#i),this.#n){let r=this.#s==="descending"?"-":"",n=`<${this.#o}>`;e.sort=`${r}${this.handleSpaces(this.#n)}${n}`}return e}async run(){return this.#c&&await this.#m(this.#c),await this.#p()}async#m(e){let r=this.#t,n=this.#r;this.excludeDocs();let i=e,o=0;do{let a=Math.min(t.maxLimit,i);this.setLimit(a);let{bookmark:u,rows:c}=await this.#p();this.setBookmark(u),o=c.length,i-=c.length}while(i>0&&o>0);this.#t=r,this.#r=n}async#p(){let{url:e,cookie:r}=ht(),n=`${e}/${this.#l}/_design/database/_search/${this.#d}`,i=this.buildSearchBody();try{return await wS(n,i,r)}catch(o){if(o.status===404&&this.#a)return await this.#a(),await wS(n,i,r);throw o}}};async function wS(t,e,r){let n=await(0,RS.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(wS,"runQuery");async function CS(t,e,r,n){let i=n.bookmark,o=n.rows||[];if(n.limit&&o.length>=n.limit)return o;let a=Yt.maxLimit;n.limit&&o.length>n.limit-Yt.maxLimit&&(a=n.limit-o.length);let u=new Yt(t,e,r);u.setVersion(n.version).setBookmark(i).setLimit(a).setSort(n.sort).setSortOrder(n.sortOrder).setSortType(n.sortType),n.tableId&&u.setTable(n.tableId);let c=await u.run();if(!c.rows.length)return o;if(c.rows.length<Yt.maxLimit)return[...o,...c.rows];let l={...n,bookmark:c.bookmark,rows:[...o,...c.rows]};return await CS(t,e,r,l)}s(CS,"recursiveSearch");async function pv(t,e,r,n){let i=n.limit;(i==null||isNaN(i)||i<0)&&(i=50),i=Math.min(i,Yt.maxLimit);let o=new Yt(t,e,r);n.version&&o.setVersion(n.version),n.tableId&&o.setTable(n.tableId),n.sort&&o.setSort(n.sort).setSortOrder(n.sortOrder).setSortType(n.sortType),n.indexer&&o.setIndexBuilder(n.indexer),n.disableEscaping&&o.disableEscaping();let a=await o.setBookmark(n.bookmark).setLimit(i).run();o.setBookmark(a.bookmark).setLimit(1),n.tableId&&o.setTable(n.tableId);let u=await o.run();return{...a,hasNextPage:u.rows&&u.rows.length>0}}s(pv,"paginatedSearch");async function mv(t,e,r,n){let i=n.limit;return(i==null||isNaN(i)||i<0)&&(i=1e3),n.limit=Math.min(i,1e3),{rows:await CS(t,e,r,n)}}s(mv,"fullSearch");var Jf={};P(Jf,{createUserIndex:()=>hv});async function hv(){let t=z(),e;try{e=await t.get("_design/database")}catch(n){n.status===404&&(e={_id:"_design/database"})}let r=s(function(n){if(n._id&&!n._id.startsWith("us_"))return;let i=["_id","_rev","password","account","license","budibaseAccess","accountPortalAccess","csrfToken"];function o(a,u){for(let c of Object.keys(a)){if(i.includes(c))continue;let l=u!=null?`${u}.${c}`:c;typeof a[c]=="string"?index(l,a[c].toLowerCase(),{facet:!0}):typeof a[c]!="object"?index(l,a[c],{facet:!0}):o(a[c],l)}}s(o,"idx"),o(n)},"fn");e.indexes={user:{index:r.toString(),analyzer:{default:"keyword",name:"perfield"}}},await t.put(e)}s(hv,"createUserIndex");function DS(t,e){let r=e.toString();if(typeof t=="object")return t.status===e||t.message?.includes(r);if(typeof t=="number")return t===e;if(typeof t=="string")return t.includes(r)}s(DS,"checkErrorCode");function gv(t){return DS(t,409)}s(gv,"isDocumentConflictError");var js={};P(js,{addTenantToUrl:()=>Ev,getTenantDB:()=>Xf,getTenantIDFromCtx:()=>Qs,isUserInWorkspaceTenant:()=>yv});function Xf(t){return Ce(un(t))}s(Xf,"getTenantDB");function Ev(t){let e=q();if(Sr()){let r=t.indexOf("?")===-1?"?":"&";t+=`${r}tenantId=${e}`}return t}s(Ev,"addTenantToUrl");var yv=s((t,e)=>{let r;return e?r=e.tenantId||ce:r=q(),(Zn(t)||ce)===r},"isUserInWorkspaceTenant"),Tv=Object.values(vi),Qs=s((t,e)=>{if(!Sr())return ce;e.allowNoTenant===void 0&&(e.allowNoTenant=!1),e.includeStrategies||(e.includeStrategies=Tv),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(Df()).host.split(":")[0]}catch(o){if(o.code!=="ERR_INVALID_URL")throw o}let i=t.host;if(n&&i.includes(n)){let o=i.substring(0,i.indexOf(`.${n}`));if(o)return o}}if(r("path")){let n=t.matched.find(a=>!!a.paramNames.find(u=>u.name==="tenantId")),i=t.originalUrl,o;if(i.includes("?")?o=i.split("?")[0]:o=i,n){let a=n.params(o,n.captures(o),{});if(a.tenantId)return a.tenantId}}e.allowNoTenant||t.throw(403,"Tenant id not set")},"getTenantIDFromCtx");var Eu={milliseconds:1,seconds:1e3,minutes:60*1e3,hours:3600*1e3,days:1440*60*1e3},me=class t{constructor(e){this.ms=e}static{s(this,"Duration")}to(e){return this.ms/Eu[e]}toMs(){return this.ms}toSeconds(){return this.to("seconds")}static convert(e,r,n){return n*Eu[e]/Eu[r]}static from(e,r){return new t(r*Eu[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 yu(){let t=me.fromDays(7).toSeconds();if(!g.SESSION_EXPIRY_SECONDS)return t;let e=parseInt(g.SESSION_EXPIRY_SECONDS);return Number.isFinite(e)&&e>0?e:t}s(yu,"getSessionExpirySeconds");function Zf(){return new Date(Date.now()+yu()*1e3)}s(Zf,"getSessionExpiryDate");var ep="app_",bS="/app/",xS="/app-chat/";async function Sv(t){let r=t.path.split("/")[2];if(!r)return;let n=`/${r.toLowerCase()}`,i=q();!g.isDev()&&g.MULTI_TENANCY&&(i=Qs(t,{includeStrategies:["subdomain"]}));let a=(await De(i,()=>Gs({dev:!1}))).filter(u=>u.url&&u.url.toLowerCase()===n)[0];return a&&a.appId?a.appId:void 0}s(Sv,"resolveAppUrl");function Av(t){return t.path.startsWith(`/${ep}`)?!0:t.path.startsWith(bS)||t.path.startsWith(xS)}s(Av,"isServingApp");function _v(t){return t.path.startsWith("/builder/workspace/")}s(_v,"isServingBuilder");function Ov(t){return vS(t.path)}s(Ov,"isServingBuilderPreview");function vS(t){return new RegExp(/^\/app\/app_\w+\/preview$/).test(t)}s(vS,"isBuilderPreviewUrl");function Iv(t){return t.path.startsWith("/api/public/v")}s(Iv,"isPublicApiRequest");async function dn(t){let e;function r(u){u&&u.startsWith(ep)&&(e&&e!==u&&t.throw(403,"App id conflict"),e=u)}s(r,"setWorkspaceIdIfValid");function n(u){if(u){typeof u=="string"&&(u=[u]);for(let c of u)r(c)}}s(n,"checkPossibleValues"),n(t.request.headers["x-budibase-app-id"]),r(t.request.body?.appId);let i=wv(t.path);r(i),n(t.query?.appId);let o=vS(t.path);return(t.path.startsWith(bS)||t.path.startsWith(xS))&&!o&&r(await Sv(t)),e}s(dn,"getWorkspaceIdFromCtx");function wv(t){if(t)return t.split("?")[0].split("/").find(e=>e.startsWith(ep))}s(wv,"parseWorkspaceIdFromUrlPath");function Su(t){if(t)try{return Tu.default.verify(t,g.JWT_SECRET)}catch(e){if(g.JWT_SECRET_FALLBACK)return Tu.default.verify(t,g.JWT_SECRET_FALLBACK);throw e}}s(Su,"openJwt");function Hs(t){return g.INTERNAL_API_KEY&&g.INTERNAL_API_KEY===t?!0:!!(g.INTERNAL_API_KEY_FALLBACK&&g.INTERNAL_API_KEY_FALLBACK===t)}s(Hs,"isValidInternalAPIKey");function zt(t,e){let r=t.cookies.get(e);if(r)return Su(r)}s(zt,"getCookie");function tp(t,e,r="builder",n={sign:!0}){e&&n&&n.sign&&(e=Tu.default.sign(e,g.JWT_SECRET));let i=n.sameSite,o=n.secure??t.secure;i==="none"&&(o?o=!0:i="lax");let a={expires:n.expires??Va,path:"/",httpOnly:n.httpOnly??!1,secure:o,overwrite:!0};i&&(a.sameSite=i),g.COOKIE_DOMAIN&&(a.domain=g.COOKIE_DOMAIN),t.cookies.set(r,e,a)}s(tp,"setCookie");function Rv(t,e){tp(t,e,"budibase:auth",{sign:!1,httpOnly:!0,expires:Zf()})}s(Rv,"setAuthCookie");function Jt(t,e){tp(t,null,e)}s(Jt,"clearCookie");function Cv(t){return t.headers["x-budibase-type"]==="client"}s(Cv,"isClient");function rp(t){return new Promise(e=>setTimeout(e,t))}s(rp,"timeout");function np(t){return!!dh[t]}s(np,"isAudited");function Dv(t){if(typeof t!="object")return!1;try{JSON.stringify(t)}catch(e){if(e instanceof Error&&e?.message.includes("circular structure"))return!0}return!1}s(Dv,"hasCircularStructure");function bv(t){return!!t.match(/^.+:\/\/.+$/)}s(bv,"urlHasProtocol");function ip(t){return t&&!!t.match(/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/)}s(ip,"validEmail");async function xv(t){let e=performance.now();return[await t(),me.fromMilliseconds(performance.now()-e)]}s(xv,"time");var Au=require("undici");function vv(t,e){let r,n=null;try{let o=new URL(t);r=o.hostname,n=o.port||null}catch{return!1}let i=e.split(/[\s,]+/).filter(o=>o.length>0);for(let o of i){let u=o.replace(/^\./,"*").match(/^(.+?)(?::(\d+))?$/);if(!u||!u[1])continue;let c=u[1].toLowerCase(),l=u[2]||null,d=!1;if(c==="*")d=!0;else if(c.startsWith("*")){let h=c.slice(1);d=r===h.slice(1)||r.endsWith(h)}else d=r===c;if(d&&(!l||n===l))return!0}return!1}s(vv,"isUrlMatchingNoProxy");function Nv(t){let e=process.env.GLOBAL_AGENT_HTTP_PROXY||process.env.HTTP_PROXY,n=process.env.GLOBAL_AGENT_HTTPS_PROXY||process.env.HTTPS_PROXY||e;if(!n||!n.trim())return!0;try{new URL(n.trim())}catch{return console.log("[fetch] Invalid proxy URL format:",n),!0}if(t){let i=process.env.GLOBAL_AGENT_NO_PROXY||process.env.NO_PROXY||"";if(i&&vv(t,i))return console.log("[fetch] URL matches NO_PROXY pattern, bypassing proxy",{url:t,noProxy:i}),!0}return!1}s(Nv,"shouldBypassProxy");function Pv(t){return new Au.Agent({connect:{rejectUnauthorized:t}})}s(Pv,"createDirectAgent");function Lv(t){let e=process.env.GLOBAL_AGENT_HTTP_PROXY||process.env.HTTP_PROXY,n=(process.env.GLOBAL_AGENT_HTTPS_PROXY||process.env.HTTPS_PROXY||e).trim();console.log("[fetch] Creating ProxyAgent",{proxyUrl:n,rejectUnauthorized:t});let i={uri:n,requestTls:{rejectUnauthorized:t}};return n.startsWith("https://")&&(i.proxyTls={rejectUnauthorized:t}),new Au.ProxyAgent(i)}s(Lv,"createProxyAgent");function Uv(t){let e=t?.rejectUnauthorized??!0;return Nv(t?.url)?Pv(e):Lv(e)}s(Uv,"createDispatcher");function kv(t){return Uv(t)}s(kv,"getDispatcher");var sp=require("util"),op=W(require("zlib"));var Mv=(0,sp.promisify)(op.default.gzip),Fv=(0,sp.promisify)(op.default.gunzip),_u="gzip:",Bv=s(async t=>{let e=await Mv(t);return`${_u}${e.toString("base64")}`},"gzipToBase64"),Wv=s(async t=>{let e=t.startsWith(_u)?t.slice(_u.length):t,r=Buffer.from(e,"base64");return(await Fv(new Uint8Array(r))).toString("utf8")},"gunzipFromBase64");function Gv(t){let e=t.get("authorization");if(!e)return null;let r=e.match(/^Bearer\s+(.+)$/i);return r?r[1]:null}s(Gv,"getBearerToken");var FS=W(require("http")),BS=W(require("https"));var dp={};P(dp,{isBlacklisted:()=>lp,refreshBlacklist:()=>kS,resolveAddress:()=>Ou});var NS=W(require("dns")),wr=W(require("net"));var PS=require("util");var $v=["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"],up,Vv=(0,PS.promisify)(NS.default.lookup);function LS(){return!(g.SELF_HOSTED&&g.BLACKLIST_IPS!==void 0)}s(LS,"shouldApplyDefaultBlacklist");function cp(t){return wr.default.isIP(t)===6?"ipv6":"ipv4"}s(cp,"getIpVersion");function qv(t){let e=wr.default.isIP(t);return e===4?32:e===6?128:null}s(qv,"getMaxPrefixLength");function Kv(t,e){if(!/^\d+$/.test(e))return null;let r=Number.parseInt(e,10),n=qv(t);return n==null||r>n?null:r}s(Kv,"getValidSubnetPrefix");function Qv(t){return wr.default.isIP(t)?t:(/^https?:\/\//.test(t)||(t=`https://${t}`),new URL(t).hostname.replace(/^\[|\]$/g,""))}s(Qv,"parseAddress");async function US(t){return t=Qv(t),(await Vv(t,{all:!0})).map(r=>r.address)}s(US,"lookup");async function Ou(t){return wr.default.isIP(t)?[t]:US(t)}s(Ou,"resolveAddress");function ap(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=wr.default.isIP(i);if(n.length===2){let u=Kv(i,o);if(a&&u!==null){t.addSubnet(i,u,cp(i));return}console.log(`Ignoring invalid blacklist entry: ${r}`);return}a&&t.addAddress(i,cp(i))}s(ap,"addEntryToBlacklist");async function kS(){let t=new wr.default.BlockList;if(LS())for(let r of $v)ap(t,r);let e=g.BLACKLIST_IPS?.split(",")||[];for(let r of e){let n=r.trim();if(!n)continue;let[i]=n.split("/");if(wr.default.isIP(i)){ap(t,n);continue}let o=await US(n);for(let a of o)ap(t,a)}up=t}s(kS,"refreshBlacklist");async function lp(t){up||await kS();let e;try{e=await Ou(t)}catch(r){return r instanceof TypeError?(console.error("Black list error: could not parse address: ",t),!0):LS()}return e.some(r=>up.check(r,cp(r)))}s(lp,"isBlacklisted");var Iu=W(require("node-fetch"));var MS=5,jv=new Set(["http:","https:"]),Hv=["authorization","cookie","cookie2","proxy-authorization"];function fp(t){let e;try{e=new URL(t)}catch{throw new Error("Invalid URL.")}if(!jv.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(fp,"parseUrl");function Yv(t){return[301,302,303,307,308].includes(t)}s(Yv,"isRedirect");async function zv(t){let e=fp(t),r=await Ou(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 lp(n))throw new Error("URL is blocked or could not be resolved safely.");return r[0]}s(zv,"resolveSafePinnedIp");function Jv(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 BS.default.Agent({lookup:n}):new FS.default.Agent({lookup:n})}s(Jv,"makePinnedAgent");function Xv(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(Xv,"nextRequestForRedirect");function Zv(t,e){return new URL(t).origin!==new URL(e).origin}s(Zv,"shouldStripSensitiveHeadersForRedirect");function eN(t){if(!t.headers)return t;let e=new Iu.Headers(t.headers);return Hv.forEach(r=>e.delete(r)),{...t,headers:e}}s(eN,"stripSensitiveHeadersForRedirect");function tN(t){return!t||typeof t!="object"||!("resume"in t)?!1:typeof t.resume=="function"}s(tN,"isResumableBody");function rN(t){let e=t.body;tN(e)&&e.resume()}s(rN,"releaseResponseBody");async function oi(t,e={},{followRedirects:r=!0,returnRedirectWithoutLocation:n=!1,fetchFn:i=Iu.default}={}){let o=t,a={...e,redirect:"manual"};for(let u=0;u<=MS;u++){let c=await zv(o),l;try{l=await i(o,{...a,agent:Jv(o,c)})}catch(h){let m=fp(o).hostname;throw h instanceof Error?(h.message=`Failed to connect to resolved IP for ${m}: ${h.message}`,h):new Error(`Failed to connect to resolved IP for ${m}: unknown network error`)}if(!Yv(l.status))return l;if(rN(l),!r)throw new Error("Redirects are not permitted.");if(u===MS)break;let d=l.headers.get("location");if(!d){if(n)return l;throw new Error("Maximum redirect reached.")}let f=fp(new URL(d,o).toString()).toString();a=Xv(a,l.status),Zv(o,f)&&(a=eN(a)),o=f}throw new Error("Maximum redirect reached.")}s(oi,"fetchWithBlacklist");var nN=s((t,e)=>`datasource:creation:${t}:microsoft:${e}`,"microsoftDatasourceCreationCacheKey");function iN(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(iN,"jobToJobInformation");var wu=class{static{s(this,"InMemoryQueue")}constructor(e,r){this._name=e,this._opts=r,this._messages=[],this._emitter=new WS.default.EventEmitter,this._runCount=0,this._addCount=0,this._queuedJobIds=new Set,this._attempts=r?.defaultJobOptions?.attempts||1}async process(e,r){r=typeof e=="number"?r:e,this._emitter.on("message",async n=>{if(!n.manualTrigger&&n.opts?.repeat!=null)return;function i(){return r.length===1?r(n):new Promise((c,l)=>{r(n,s((f,h)=>{f?l(f):c(h)},"done"))})}s(i,"execute");let o=this._attempts;async function a(c,l=0){try{return await c}catch(d){if(l++,l<o&&!n._isDiscarded)return await Ue.wait(100*l),await a(i(),l);throw d}}s(a,"retryFunc");try{let c=await a(i());this._emitter.emit("completed",n,c);let l=this._messages.indexOf(n);if(l===-1)throw"Failed deleting a processed message";this._messages.splice(l,1)}catch(c){console.error(c),this._emitter.emit("error",n,c)}this._runCount++;let u=n.opts?.jobId?.toString();u&&n.opts?.removeOnComplete&&this._queuedJobIds.delete(u)})}async isReady(){return this}async add(e,r){if(typeof e=="string")throw new Error("doesn't support named jobs");let n=r,i=n?.jobId?.toString();if(i&&this._queuedJobIds.has(i)){console.log(`Ignoring already queued job ${i}`);return}if(typeof e!="object")throw"Queue only supports carrying JSON.";i&&this._queuedJobIds.add(i);let o=X(),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 d=s((h,m)=>{h.id===o&&(this._emitter.off("error",d),this._emitter.off("completed",f),l(m))},"errorHandler"),f=s((h,m)=>{h.id===o&&(this._emitter.off("error",d),this._emitter.off("completed",f),c(m))},"completedHandler");this._emitter.on("error",d),this._emitter.on("completed",f)}),"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=>iN(e))}async whenCurrentJobsFinished(){do await rp(50);while(this.hasRunningJobs())}hasRunningJobs(){return this._addCount>this._runCount}},GS=wu;var hp=W(require("bull"));var ui=(y=>(y.AUTOMATION="automationQueue",y.APP_BACKUP="appBackupQueue",y.AUDIT_LOG="auditLogQueue",y.SYSTEM_EVENT_QUEUE="systemEventQueue",y.APP_MIGRATION="appMigration",y.DOC_WRITETHROUGH_QUEUE="docWritethroughQueue",y.DEV_REVERT_PROCESSOR="devRevertProcessorQueue",y.BATCH_USER_SYNC_PROCESSOR="batchUserSyncProcessorQueue",y.RAG_INGESTION="ragIngestionQueue",y.KNOWLEDGE_SOURCE_SYNC="knowledgeSourceSyncQueue",y.AGENT_LOG_INDEXING="agentLogIndexingQueue",y.ESCALATION="escalationQueue",y.AGENT_REQUEST_TRACKING="agentRequestTrackingQueue",y.AGENT_TEST_RUN="agentTestRunQueue",y))(ui||{});function $S(t,e,r){aN(t,e),r&&sN(t,r)}s($S,"addListeners");function sN(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(sN,"handleStalled");function ot(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(ot,"getLogParams");var oN={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 aN(t,e){let r=oN[e];function n(i,o){let a=i.data.event?.appId;if(a)return bf(a,o);o()}s(n,"doInJobContext"),t.on("stalled",async i=>{await n(i,()=>{console.error(...ot(r,"stalled",{job:i}))})}).on("error",i=>{console.error(...ot(r,"error",{error:i}))}),process.env.NODE_DEBUG?.includes("bull")&&t.on("waiting",i=>{console.info(...ot(r,"waiting",{jobId:i}))}).on("active",async i=>{await n(i,()=>{console.info(...ot(r,"active",{job:i}))})}).on("progress",async(i,o)=>{await n(i,()=>{console.info(...ot(r,"progress",{job:i},{progress:o}))})}).on("completed",async(i,o)=>{await n(i,()=>{console.info(...ot(r,"completed",{job:i},{result:o}))})}).on("failed",async(i,o)=>{await n(i,()=>{console.error(...ot(r,"failed",{job:i,error:o}))})}).on("paused",()=>{console.info(...ot(r,"paused"))}).on("resumed",()=>{console.info(...ot(r,"resumed"))}).on("cleaned",(i,o)=>{console.info(...ot(r,"cleaned",{},{length:i.length,type:o}))}).on("drained",()=>{console.info(...ot(r,"drained"))}).on("removed",i=>{console.info(...ot(r,"removed",{job:i}))})}s(aN,"logging");var Ru={};P(Ru,{cleanup:()=>uN,clear:()=>mp,set:()=>pp});var Ys=[];function pp(t,e){let r=setInterval(t,e);return Ys.push(r),r}s(pp,"set");function mp(t){let e=Ys.indexOf(t);e!==-1&&Ys.splice(e,1),clearInterval(t)}s(mp,"clear");function uN(){for(let t of Ys)clearInterval(t);Ys=[]}s(uN,"cleanup");var Xt=W(require("dd-trace")),zs=W(require("object-sizeof"));var cN=me.fromMinutes(5).toMs(),lN=me.fromSeconds(30).toMs(),gp=me.fromSeconds(60).toMs(),Js=[],Cu;async function VS(){for(let t of Js)await t.clean(gp,"completed"),await t.clean(gp,"failed")}s(VS,"cleanup");async function dN(t,e,r){let n=performance.now();try{let i=await e();return Xt.default.dogstatsd.increment(`${t}.success`,1,r),i}catch(i){throw Xt.default.dogstatsd.increment(`${t}.error`,1,r),i}finally{let i=performance.now()-n;Xt.default.dogstatsd.distribution(`${t}.duration.ms`,i,r),Xt.default.dogstatsd.increment(t,1,r)}}s(dN,"withMetrics");function qS(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(qS,"jobOptsTags");function fN(t){return{"job.id":t.id,"job.attemptsMade":t.attemptsMade,"job.timestamp":t.timestamp,"job.data.sizeBytes":(0,zs.default)(t.data),...qS(t.opts||{})}}s(fN,"jobTags");var yt=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:on(),settings:{maxStalledCount:this.opts.maxStalledCount?this.opts.maxStalledCount:0,lockDuration:cN,lockRenewTime:lN}};this.opts.jobOptions&&(r.defaultJobOptions=this.opts.jobOptions);let n;return g.isTest()?process.env.BULL_TEST_REDIS_PORT&&!isNaN(+process.env.BULL_TEST_REDIS_PORT)?n=new hp.default(this.jobQueue,{...r,redis:{host:"localhost",port:+process.env.BULL_TEST_REDIS_PORT}}):n=new GS(this.jobQueue,r):n=new hp.default(this.jobQueue,r),$S(n,this.jobQueue,this.opts.removeStalledCb),Js.push(n),!Cu&&!g.isTest()&&(Cu=pp(VS,gp),VS().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 Xt.default.trace("queue.process",async c=>{if(a.data._parentSpanContext){let l=a.data._parentSpanContext,d={traceId:l.traceId,spanId:l.spanId,toTraceId:s(()=>l.traceId,"toTraceId"),toSpanId:s(()=>l.spanId,"toSpanId"),toTraceparent:s(()=>"","toTraceparent")};c.addLink(d)}c.addTags({"queue.name":this.jobQueue,...fN(a)}),this.opts.jobTags&&c.addTags(this.opts.jobTags(a.data)),Xt.default.dogstatsd.distribution("queue.process.sizeBytes",(0,zs.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 Xt.default.trace("queue.add",async n=>(n.addTags({"queue.name":this.jobQueue,"job.data.sizeBytes":(0,zs.default)(e),...qS(r||{})}),this.opts.jobTags&&n.addTags(this.opts.jobTags(e)),e._parentSpanContext={traceId:n.context().toTraceId(),spanId:n.context().toSpanId()},Xt.default.dogstatsd.distribution("queue.add.sizeBytes",(0,zs.default)(e),this.metricTags()),await this.withMetrics("queue.add",()=>this.queue.add(e,r))))}withMetrics(e,r){return dN(e,r,this.metricTags())}metricTags(){return{queueName:this.jobQueue}}close(e){return this.queue.close(e)}whenCurrentJobsFinished(){return this.queue.whenCurrentJobsFinished()}};async function pN(){Cu&&mp(Cu),console.log("Waiting for current queue jobs to finish...");for(let t of Js)await t.whenCurrentJobsFinished();console.log("Closing queue Redis connections...");for(let t of Js)await t.close();Js=[],console.log("Queues shutdown")}s(pN,"shutdown");var io={};P(io,{correlation:()=>Xs,logAlert:()=>mn,logAlertWithInfo:()=>JN,logWarn:()=>di,logger:()=>Uu,system:()=>xp});var Xs={};P(Xs,{getId:()=>Ep,setHeader:()=>mN});var KS=require("correlation-id"),mN=s(t=>{let e=KS.getId();e&&(t["x-budibase-correlation-id"]=e)},"setHeader");function Ep(){return KS.getId()}s(Ep,"getId");var Lu=W(require("pino")),_A=W(require("pino-pretty")),vp=W(require("dd-trace")),OA=require("dd-trace/ext");var xp={};P(xp,{getLogReadStream:()=>KN,getSingleFileMaxSizeInfo:()=>AA,localFileDestination:()=>bp});var no=W(require("fs")),Dp=W(require("path")),EA=W(require("rotating-file-stream"));var Cp={};P(Cp,{ObjectStore:()=>at,ObjectStoreBuckets:()=>gN,SIGNED_FILE_PREFIX:()=>Op,bucketTTLConfig:()=>Du,budibaseTempDir:()=>fn,client3rdPartyLibrary:()=>FN,clientLibraryPath:()=>MN,clientLibraryUrl:()=>BN,createBucketIfNotExists:()=>ro,deleteFile:()=>DN,deleteFiles:()=>bN,deleteFolder:()=>sA,downloadTarball:()=>vN,downloadTarballDirect:()=>xN,enrichPWAImages:()=>WN,enrichPluginURLs:()=>$N,extractBucketAndPath:()=>yp,getAllFiles:()=>wN,getAppFileUrl:()=>cA,getClientCacheKey:()=>uA,getGlobalFileS3Key:()=>lA,getGlobalFileUrl:()=>GN,getObjectMetadata:()=>NN,getPluginIconKey:()=>pA,getPluginJSKey:()=>fA,getPluginS3Dir:()=>hA,getPresignedUrl:()=>pn,getReadStream:()=>bu,getSafeRetrieveDirectoryPath:()=>iA,listAllObjects:()=>Ip,objectExists:()=>PN,processAutomationAttachment:()=>yN,processObjectStoreAttachment:()=>zS,retrieve:()=>nA,retrieveDirectory:()=>CN,retrieveToTmp:()=>RN,sanitizeBucket:()=>be,sanitizeKey:()=>Ee,streamUpload:()=>rA,streamUploadMany:()=>IN,upload:()=>ON,uploadDirectory:()=>wp});var vu=require("@aws-sdk/client-s3"),Tp=require("@aws-sdk/lib-storage"),JS=require("@aws-sdk/s3-request-presigner"),XS=require("@smithy/node-http-handler");var Zt=W(require("dd-trace")),ci=W(require("fs")),eo=W(require("fs/promises")),ZS=W(require("https")),Ye=require("path"),Nu=W(require("stream")),to=require("stream/promises"),Sp=W(require("tar-fs")),Ap=require("uuid"),_p=W(require("zlib"));var QS=W(require("fs")),jS=require("os"),Zs=W(require("path")),HS=W(require("stream"));var gN={BACKUPS:g.BACKUPS_BUCKET_NAME,APPS:g.APPS_BUCKET_NAME,TEMPLATES:g.TEMPLATES_BUCKET_NAME,GLOBAL:g.GLOBAL_BUCKET_NAME,PLUGINS:g.PLUGIN_BUCKET_NAME,TEMP:g.TEMP_BUCKET_NAME},YS=(0,Zs.join)((0,jS.tmpdir)(),".budibase");try{QS.default.mkdirSync(YS)}catch(t){if(t.code!=="EEXIST")throw t}function fn(){return YS}s(fn,"budibaseTempDir");var Du=s((t,e)=>{let n={Rules:[{ID:`${t}-ExpireAfter${e}days`,Prefix:"",Status:"Enabled",Expiration:{Days:e}}]};return{Bucket:t,LifecycleConfiguration:n}},"bucketTTLConfig");async function EN(t){let e=await oi(t.url);if(!e.ok||!e.body)throw new Error(`Unexpected response ${e.statusText}`);let r=Zs.default.basename(new URL(t.url).pathname);if(!e.body)throw new Error("No response received for attachment");if(!(e.body instanceof HS.default.Readable))throw new Error("Unexpected response body stream type");return{filename:t.filename||r,content:e.body}}s(EN,"processUrlAttachment");async function zS(t){let e=yp(t.url);if(e===null)throw new Error("Invalid signed URL");let{bucket:r,path:n}=e,{stream:i}=await bu(r,n),o=Zs.default.basename(n);return{bucket:r,path:n,filename:t.filename||o,content:i}}s(zS,"processObjectStoreAttachment");async function yN(t){return t.url?.startsWith("http://")||t.url?.startsWith("https://")?await EN(t):await zS(t)}s(yN,"processAutomationAttachment");var TN=require("sanitize-s3-objectkey"),SN={bucketCreationPromises:{}},Op="/files/signed",Rr={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"},AN=[Rr.html,Rr.css,Rr.js,Rr.json];function Ee(t){let e=TN(be(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(Ee,"sanitizeKey");function be(t){return t.replace(new RegExp(nt,"g"),rt)}s(be,"sanitizeBucket");function at(t={presigning:!1}){let e={forcePathStyle:!0,credentials:{accessKeyId:g.MINIO_ACCESS_KEY,secretAccessKey:g.MINIO_SECRET_KEY},region:g.AWS_REGION};if(!g.MINIO_ENABLED&&g.AWS_SESSION_TOKEN&&(e.credentials={accessKeyId:g.MINIO_ACCESS_KEY,secretAccessKey:g.MINIO_SECRET_KEY,sessionToken:g.AWS_SESSION_TOKEN}),g.MINIO_URL&&(t.presigning&&g.MINIO_ENABLED?e.endpoint="http://minio-service":e.endpoint=g.MINIO_URL),g.S3_IGNORE_SELF_SIGNED==="true"){let r=new ZS.default.Agent({rejectUnauthorized:!1});e.requestHandler=new XS.NodeHttpHandler({httpsAgent:r})}return new vu.S3(e)}s(at,"ObjectStore");async function ro(t,e){e=be(e);try{return await t.headBucket({Bucket:e}),{created:!1,exists:!0}}catch(r){let n=r.statusCode||r.$response?.statusCode||r.$metadata?.httpStatusCode,i=SN.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(ro,"createBucketIfNotExists");var _N=s((t,e)=>{if(e)return e;let r=t.split(".").pop();return r?Rr[r.toLowerCase()]:Rr.txt},"resolveContentType"),eA=s(async(t,e,r)=>{let n=be(t),i=at(),o=await ro(i,n);if(r.addTags({bucketCreated:o.created,bucketExists:o.exists}),e&&o.created){let a=Du(n,e);await i.putBucketLifecycleConfiguration(a)}return{bucket:n,client:i,bucketCreated:o}},"initialiseBucket"),tA=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=_N(r,i),u=Ee(r),c={Bucket:e,Key:u,Body:n,ContentType:a,...o??{}};return{details:await new Tp.Upload({client:t,params:c}).done(),contentType:a}},"streamUploadInternal");async function ON({bucket:t,filename:e,path:r,type:n,metadata:i,body:o,ttl:a}){let u=e.split(".").pop(),c=r?(await eo.default.open(r)).createReadStream():o,l=at(),d=await ro(l,t);if(a&&d.created){let E=Du(t,a);await l.putBucketLifecycleConfiguration(E)}let f=n,h=f||(u?Rr[u.toLowerCase()]:Rr.txt),m={Bucket:be(t),Key:Ee(e),Body:c,ContentType:h};if(i&&typeof i=="object"){for(let E of Object.keys(i))(!i[E]||typeof i[E]!="string")&&delete i[E];m.Metadata=i}return new Tp.Upload({client:l,params:m}).done()}s(ON,"upload");async function rA({bucket:t,stream:e,filename:r,type:n,extra:i,ttl:o}){return await Zt.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 eA(t,o,a),{details:d,contentType:f}=await tA({client:l,bucket:c,filename:r,stream:e,type:n,extra:i}),h=await l.headObject({Bucket:c,Key:Ee(r)});return a.addTags({contentType:f,contentLength:h.ContentLength}),{...d,ContentLength:h.ContentLength}})}s(rA,"streamUpload");async function IN({bucket:t,files:e,ttl:r}){return await Zt.default.trace("streamUploadMany",async i=>{if(i.addTags({bucketName:t,ttl:r,fileCount:e.length}),!e.length)return[];let{bucket:o,client:a}=await eA(t,r,i),u=e.map((l,d)=>({...l,index:d})),c=new Array(e.length);return await Rt.parallelForeach(u,async l=>{let{details:d}=await tA({client:a,bucket:o,filename:l.filename,stream:l.stream,type:l.type,extra:l.extra});c[l.index]=d},10),c})}s(IN,"streamUploadMany");async function nA(t,e){return await Zt.default.trace("retrieve",async r=>{r.addTags({bucketName:t,filepath:e});let n=at(),i={Bucket:be(t),Key:Ee(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}),AN.includes(o.ContentType))return r.addTags({string:!0}),o.Body.transformToString();{r.addTags({string:!1});let a=o.Body.transformToWebStream();return Nu.default.Readable.fromWeb(a)}})}s(nA,"retrieve");async function*Ip(t,e){let r=at(),n=s((a={})=>r.listObjectsV2({...a,Bucket:be(t),Prefix:Ee(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(Ip,"listAllObjects");async function wN(t,e){let r={};return await Rt.parallelForeach(Ip(t,e),async n=>{if(!n.Key)throw new Error("file.Key must be defined");r[n.Key]=n},5),r}s(wN,"getAllFiles");async function pn(t,e,r=3600){let n=at({presigning:!0}),i={Bucket:be(t),Key:Ee(e)},o=await(0,JS.getSignedUrl)(n,new vu.GetObjectCommand(i),{expiresIn:r});if(g.MINIO_ENABLED){let a=new URL(o),u=a.pathname,c=a.search;return`${Op}${u}${c}`}else return o}s(pn,"getPresignedUrl");async function RN(t,e){return await Zt.default.trace("retrieveToTmp",async r=>{r.addTags({bucketName:t,filepath:e}),t=be(t),e=Ee(e);let n=await nA(t,e),i=(0,Ye.join)(fn(),(0,Ap.v4)());return r.addTags({outputPath:i}),n instanceof Nu.default.Readable?(r.addTags({stream:!0}),await(0,to.pipeline)(n,ci.default.createWriteStream(i))):(r.addTags({stream:!1}),ci.default.writeFileSync(i,n)),i})}s(RN,"retrieveToTmp");async function CN(t,e,r){return await Zt.default.trace("retrieveDirectory",async n=>{n.addTags({bucketName:t,path:e});let i=(0,Ye.join)(fn(),(0,Ap.v4)());await eo.default.mkdir(i,{recursive:!0});let o=0;return await Rt.parallelForeach(Ip(t,e),async a=>{let{Key:u}=a;!u||r?.some(c=>c.test(u))||(o++,await Zt.default.trace("retrieveDirectory.object",async c=>{let l=a.Key;c.addTags({filename:l});let{stream:d}=await bu(t,l),f=iA(i,l);if(!f){c.addTags({skippedUnsafePath:!0});return}ci.default.existsSync(f.dir)||await eo.default.mkdir(f.dir,{recursive:!0}),await(0,to.pipeline)(d,ci.default.createWriteStream(f.path,{mode:420}))}))},5),n.addTags({numObjects:o}),i})}s(CN,"retrieveDirectory");function iA(t,e){let r=(0,Ye.resolve)(t),n=(0,Ye.resolve)(r,...e.split("/"));if(n===r||n.startsWith(`${r}${Ye.sep}`))return{dir:(0,Ye.dirname)(n),path:n}}s(iA,"getSafeRetrieveDirectoryPath");async function DN(t,e){let r=at();await ro(r,t);let n={Bucket:t,Key:Ee(e)};return r.deleteObject(n)}s(DN,"deleteFile");async function bN(t,e){let r=at();await ro(r,t);let n={Bucket:t,Delete:{Objects:e.map(i=>({Key:Ee(i)}))}};return r.deleteObjects(n)}s(bN,"deleteFiles");async function sA(t,e){t=be(t),e=Ee(e);let r=at(),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 sA(t,e)}s(sA,"deleteFolder");async function wp(t,e,r){return await Zt.default.trace("uploadDirectory",async n=>{n.addTags({bucketName:t,localPath:e,bucketPath:r}),t=be(t);let i=await eo.default.readdir(e,{withFileTypes:!0});n.addTags({numFiles:i.length});for(let o of i){let a=Ee((0,Ye.join)(r,o.name)),u=(0,Ye.join)(e,o.name);o.isDirectory()?await wp(t,u,a):await rA({bucket:t,filename:a,stream:ci.default.createReadStream(u)})}return i})}s(wp,"uploadDirectory");async function xN(t,e,r={},{followRedirects:n=!0}={}){e=Ee(e);let i=await oi(t,{headers:r},{followRedirects:n});if(!i.ok)throw new Error(`unexpected response ${i.statusText}`);await(0,to.pipeline)(i.body,_p.default.createUnzip(),Sp.default.extract(e))}s(xN,"downloadTarballDirect");async function vN(t,e,r){e=be(e),r=Ee(r);let n=await oi(t);if(!n.ok)throw new Error(`unexpected response ${n.statusText}`);let i=(0,Ye.join)(fn(),r);return await(0,to.pipeline)(n.body,_p.default.createUnzip(),Sp.default.extract(i)),!g.isTest()&&g.SELF_HOSTED&&await wp(e,i,r),i}s(vN,"downloadTarball");async function bu(t,e){return await Zt.default.trace("getReadStream",async r=>{t=be(t),e=Ee(e),r.addTags({bucketName:t,path:e});let n=at(),i={Bucket:t,Key:e},o=await n.getObject(i);if(!o.Body||!(o.Body instanceof Nu.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(bu,"getReadStream");async function NN(t,e){t=be(t),e=Ee(e);let r=at(),n={Bucket:t,Key:e};try{return await r.headObject(n)}catch{throw new Error("Unable to retrieve metadata from object")}}s(NN,"getObjectMetadata");async function PN(t,e){t=be(t),e=Ee(e);let r=at(),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(PN,"objectExists");function yp(t){let e=t.split("?")[0],r=new RegExp(`^${Op}/(?<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(yp,"extractBucketAndPath");var aA=W(require("querystring"));var oA=W(require("aws-cloudfront-sign"));var Pu;function LN(){if(!g.CLOUDFRONT_PRIVATE_KEY_64)throw new Error("CLOUDFRONT_PRIVATE_KEY_64 is not set");return Pu||(Pu=Buffer.from(g.CLOUDFRONT_PRIVATE_KEY_64,"base64").toString("utf-8"),Pu)}s(LN,"getPrivateKey");var UN=s(()=>({keypairId:g.CLOUDFRONT_PUBLIC_KEY_ID,privateKeyString:LN(),expireTime:new Date().getTime()+1e3*60*60*24}),"getCloudfrontSignParams"),li=s(t=>{let e=kN(t);return oA.getSignedUrl(e,UN())},"getPresignedUrl"),kN=s(t=>{let e="/";return t.startsWith("/")&&(e=""),`${g.CLOUDFRONT_CDN}${e}${t}`},"getUrl");function MN(t){return`${Ee(t)}/budibase-client.js`}s(MN,"clientLibraryPath");function FN(t,e){return`${Ee(t)}/${e}`}s(FN,"client3rdPartyLibrary");async function BN(t,e){return`/api/assets/${t}/client?${await uA(e)}`}s(BN,"clientLibraryUrl");async function uA(t){let e,r;try{e=q()}finally{r={version:t}}return e&&e!==ce&&(r.tenantId=e),aA.default.encode(r)}s(uA,"getClientCacheKey");async function cA(t){return g.CLOUDFRONT_CDN?li(t):await pn(g.APPS_BUCKET_NAME,t)}s(cA,"getAppFileUrl");async function WN(t){if(t.length===0)return[];try{return await Promise.all(t.map(async e=>({...e,src:await cA(e.src),type:e.type||"image/png"})))}catch(e){return console.error("Error enriching PWA images:",e),t}}s(WN,"enrichPWAImages");var GN=s(async(t,e,r)=>{let n=lA(t,e);return g.CLOUDFRONT_CDN?(r&&(n=`${n}?etag=${r}`),li(n)):await pn(g.GLOBAL_BUCKET_NAME,n)},"getGlobalFileUrl"),lA=s((t,e)=>{let r=`${t}/${e}`;return g.MULTI_TENANCY&&(r=`${q()}/${r}`),r},"getGlobalFileS3Key");async function $N(t){return!t||!t.length?[]:await Promise.all(t.map(async e=>{let r=await VN(e),n=await qN(e);return{...e,jsUrl:r,iconUrl:n}}))}s($N,"enrichPluginURLs");async function VN(t){let e=fA(t);return dA(e)}s(VN,"getPluginJSUrl");async function qN(t){let e=pA(t);if(e)return dA(e)}s(qN,"getPluginIconUrl");async function dA(t){return g.CLOUDFRONT_CDN?li(t):await pn(g.PLUGIN_BUCKET_NAME,t)}s(dA,"getPluginUrl");function fA(t){return mA(t,"plugin.min.js")}s(fA,"getPluginJSKey");function pA(t){let e=t.iconUrl?"icon.svg":t.iconFileName;if(e)return mA(t,e)}s(pA,"getPluginIconKey");function mA(t,e){return`${hA(t.name)}/${e}`}s(mA,"getPluginS3Key");function hA(t){let e=`${t}`;return g.MULTI_TENANCY&&(e=`${q()}/${e}`),g.CLOUDFRONT_CDN&&(e=`plugins/${e}`),e}s(hA,"getPluginS3Dir");var yA="budibase.log",TA="budibase-logs-history.txt",SA=Dp.default.join(fn(),"systemlogs");function gA(t){return Dp.default.join(SA,t)}s(gA,"getFullPath");function AA(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(AA,"getSingleFileMaxSizeInfo");function bp(){let t=AA(g.ROLLING_LOG_MAX_SIZE);return EA.createStream(yA,{size:t?.size,path:SA,maxFiles:t?.totalHistoryFiles||1,immutable:!0,history:TA,initialRotation:!1})}s(bp,"localFileDestination");function KN(){let t=[],e=gA(TA);if(no.default.existsSync(e)){let i=no.default.readFileSync(e,"utf-8").split(`
|
|
36
|
+
}`,"platform_users_lowercase_2")},"createPlatformUserView"),Vs=s(async(t,e)=>{let r={account_by_email:SS,platform_users_lowercase_2:AS};return je(pe.PLATFORM_INFO.name,async n=>{let i=r[t];return Yf(t,e,n,i,{arrayResponse:!0})})},"queryPlatformView"),_S={by_email2:gS,by_api_key:yS,by_app:ES},Ht=s(async(t,e,r,n)=>{r||(r=z());let i=_S[t];return Yf(t,e,r,i,n)},"queryGlobalView");async function qs(t,e,r){let n=z(),i=_S[t];return $s(t,e,n,i,r)}s(qs,"queryGlobalViewRaw");var fv=W(require("pouchdb"));var OS=require("dd-trace");var zf=class{static{s(this,"Replication")}constructor({source:e,target:r}){this.source=it(e),this.target=it(r),e.startsWith("app_dev")&&r.startsWith("app")?this.direction="toProduction":e.startsWith("app")&&r.startsWith("app_dev")&&(this.direction="toDev")}async close(){await Promise.all([Ps(this.source),Ps(this.target)])}replicate(e={}){return new Promise(r=>{this.source.replicate.to(this.target,e).on("denied",function(n){throw new Error(`Denied: Document failed to replicate ${n}`)}).on("complete",function(n){return r(n)}).on("error",function(n){throw n})})}async resolveInconsistencies(e){for(let r of e)try{let[n,i]=await Promise.all([this.source.get(r),this.target.get(r)]),o=this.replicationDelta(n,i);if(o<0||o===0&&n._rev===i._rev)continue;let a=o+1;await OS.tracer.trace("Replication.resolveInconsistencies",async u=>{u.addTags({versionsToJump:a,toFix:!0,id:r,sourceRev:n._rev,targetRev:i._rev});for(let c=0;c<a;c++){let l=await this.source.get(i._id);await this.source.put(l)}})}catch{console.warn("Cannot resolve inconsistencies for document",r)}}replicationDelta(e,r){let n=this.getRevisionNumber(e);return this.getRevisionNumber(r)-n}getRevisionNumber(e){return parseInt(e._rev?.split("-")[0]||"0")}appReplicateOpts(e={}){if(typeof e.filter=="string")return e;let r=e.filter,n=this.direction,i=n==="toDev";delete e.filter;let o=e.isCreation,a=e.tablesToSync;delete e.isCreation,delete e.tablesToSync;let u=!1,c;typeof a=="string"&&a==="all"?u=!0:a&&(c=a);let l=s((f,h)=>f?.startsWith(h+"_"),"startsWithID"),d=s(f=>l(f,"ro")||l(f,"li"),"isData");return{...e,filter:s((f,h)=>!o&&f._id==="_design/migrations"||i&&f._id.startsWith("_design")?!1:f._deleted||l(f._id,Rs)?!0:n==="toProduction"&&!o&&l(f._id,"autocolumn_state")?!1:d(f._id)?!!c?.find(m=>f._id.includes(m))||u:l(f._id,"log_au")||l(f._id,"agentlogsession")||f._id==="app_metadata"?!1:r?r(f,h):!0,"filter")}}async rollback(){await this.target.destroy(),this.target=it(this.target.name),await this.replicate()}},IS=zf;var RS=W(require("node-fetch"));var Ks=Er.removeKeyNumbering;function Or(t){return t==null||t===""}s(Or,"isEmpty");var Yt=class t{static{s(this,"QueryBuilder")}#l;#d;#e;#r;#n;#i;#s;#o;#t;#f;#a;#u=!1;#c;static{this.maxLimit=200}constructor(e,r,n){this.#l=e,this.#d=r,this.#e={allOr:!1,onEmptyFilter:"all",string:{},fuzzy:{},range:{},equal:{},notEqual:{},empty:{},notEmpty:{},oneOf:{},notOneOf:{},contains:{},notContains:{},containsAny:{},...n},this.#r=50,this.#s="ascending",this.#o="string",this.#t=!0}disableEscaping(){return this.#u=!0,this}setIndexBuilder(e){return this.#a=e,this}setVersion(e){return e!=null&&(this.#f=e),this}setTable(e){return this.#e.equal.tableId=e,this}setLimit(e){return e!=null&&(this.#r=e),this}setSort(e){return e!=null&&(this.#n=e),this}setSortOrder(e){return e!=null&&(this.#s=e),this}setSortType(e){return e!=null&&(this.#o=e),this}setBookmark(e){return e!=null&&(this.#i=e),this}setSkip(e){return this.#c=e,this}excludeDocs(){return this.#t=!1,this}includeDocs(){return this.#t=!0,this}addString(e,r){return this.#e.string[e]=r,this}addFuzzy(e,r){return this.#e.fuzzy[e]=r,this}addRange(e,r,n){return this.#e.range[e]={low:r,high:n},this}addEqual(e,r){return this.#e.equal[e]=r,this}addNotEqual(e,r){return this.#e.notEqual[e]=r,this}addEmpty(e,r){return this.#e.empty[e]=r,this}addNotEmpty(e,r){return this.#e.notEmpty[e]=r,this}addOneOf(e,r){return this.#e.oneOf[e]=r,this}addNotOneOf(e,r){return this.#e.notOneOf[e]=r,this}addContains(e,r){return this.#e.contains[e]=r,this}addNotContains(e,r){return this.#e.notContains[e]=r,this}addContainsAny(e,r){return this.#e.containsAny[e]=r,this}setAllOr(){this.#e.allOr=!0}setOnEmptyFilter(e){this.#e.onEmptyFilter=e}handleSpaces(e){return this.#u?e:e.replace(/ /g,"_")}preprocess(e,{escape:r,lowercase:n,wrap:i,type:o}={}){let a=!!this.#f,u=typeof e;return e&&n&&(e=e.toLowerCase?e.toLowerCase():e),!this.#u&&r&&u==="string"&&(e=`${e}`.replace(/[ /#+\-&|!(){}\]^"~*?:\\]/g,"\\$&")),u==="string"&&!isNaN(e)&&!o?e=`"${e}"`:a&&i&&(e=u==="number"?e:`"${e}"`),e}isMultiCondition(){let e=0;for(let r of Object.values(this.#e))typeof r=="object"&&(e+=Object.keys(r).length);return e>1}compressFilters(e){let r={};for(let o of Object.keys(e)){let a=Ks(o);r[a]?r[a]=r[a].concat(e[o]):r[a]=e[o]}let n={},i=1;for(let[o,a]of Object.entries(r))n[`${i++}:${o}`]=a;return n}buildSearchQuery(){let e=this,r=this.#e&&this.#e.allOr,n=r?"":"*:*",i=!0,o={escape:!0,lowercase:!0,wrap:!0},a="";this.#e.equal.tableId&&(a=this.#e.equal.tableId,delete this.#e.equal.tableId);let u=s((E,p)=>Or(p)?null:`${E}:${e.preprocess(p,o)}`,"equal"),c=s((E,p,T="AND")=>{if(Or(p))return null;if(!Array.isArray(p))return`${E}:${p}`;let A=`${e.preprocess(p[0],{escape:!0})}`;for(let _=1;_<p.length;_++)A+=` ${T} ${e.preprocess(p[_],{escape:!0})}`;return`${E}:(${A})`},"contains"),l=s((E,p)=>Or(p)?null:(p=e.preprocess(p,{escape:!0,lowercase:!0,type:"fuzzy"}),`${E}:/.*${p}.*/`),"fuzzy"),d=s((E,p)=>{let T=r?"*:* AND ":"",A=r?"AND":void 0;return T+"NOT "+c(E,p,A)},"notContains"),f=s((E,p)=>c(E,p,"OR"),"containsAny"),h=s((E,p)=>{if(Or(p))return"*:*";if(!Array.isArray(p))if(typeof p=="string")p=p.split(",");else return"";let T=`${e.preprocess(p[0],o)}`;for(let A=1;A<p.length;A++)T+=` OR ${e.preprocess(p[A],o)}`;return`${E}:(${T})`},"oneOf"),m=s((E,p)=>{if(Or(p))return null;if(!Array.isArray(p))if(typeof p=="string")p=p.split(",");else return"";let T=`${e.preprocess(p[0],o)}`;for(let A=1;A<p.length;A++)T+=` OR ${e.preprocess(p[A],o)}`;return`(*:* -${E}:(${T}))`},"notOneOf");function y(E,p,T){let A="";for(let[_,I]of Object.entries(E)){_=Ks(_),_=e.preprocess(e.handleSpaces(_),{escape:!0});let O=p(_,I);if(O!=null){if(A.length>0||n.length>0){let C=T?.mode?T.mode:r?"OR":"AND";A+=` ${C} `}A+=O,(typeof I!="string"&&I!=null||typeof I=="string"&&I!==a&&I!=="")&&(i=!1)}}if(T?.returnBuilt)return A;n+=A}if(s(y,"build"),this.#e.string&&y(this.#e.string,(E,p)=>Or(p)?null:(p=e.preprocess(p,{escape:!0,lowercase:!0,type:"string"}),`${E}:${p}*`)),this.#e.range&&y(this.#e.range,(E,p)=>{if(Or(p)||p.low==null||p.low===""||p.high==null||p.high==="")return null;let T=e.preprocess(p.low,o),A=e.preprocess(p.high,o);return`${E}:[${T} TO ${A}]`}),this.#e.fuzzy&&y(this.#e.fuzzy,l),this.#e.equal&&y(this.#e.equal,u),this.#e.notEqual&&y(this.#e.notEqual,(E,p)=>Or(p)?null:typeof p=="boolean"?`(*:* AND !${E}:${p})`:`!${E}:${e.preprocess(p,o)}`),this.#e.empty&&y(this.#e.empty,E=>(i=!1,`(*:* -${E}:["" TO *])`)),this.#e.notEmpty&&y(this.#e.notEmpty,E=>(i=!1,`${E}:["" TO *]`)),this.#e.oneOf&&y(this.#e.oneOf,h),this.#e.notOneOf&&y(this.#e.notOneOf,m),this.#e.contains&&y(this.#e.contains,c),this.#e.notContains&&y(this.compressFilters(this.#e.notContains),d),this.#e.containsAny&&y(this.#e.containsAny,f),a&&(n=this.isMultiCondition()?`(${n})`:n,r=!1,y({tableId:a},u)),i){if(this.#e.onEmptyFilter==="none")return"";if(this.#e?.allOr)return n.replace("()","(*:*)")}return n}buildSearchBody(){let e={q:this.buildSearchQuery(),limit:Math.min(this.#r,t.maxLimit),include_docs:this.#t};if(this.#i&&(e.bookmark=this.#i),this.#n){let r=this.#s==="descending"?"-":"",n=`<${this.#o}>`;e.sort=`${r}${this.handleSpaces(this.#n)}${n}`}return e}async run(){return this.#c&&await this.#m(this.#c),await this.#p()}async#m(e){let r=this.#t,n=this.#r;this.excludeDocs();let i=e,o=0;do{let a=Math.min(t.maxLimit,i);this.setLimit(a);let{bookmark:u,rows:c}=await this.#p();this.setBookmark(u),o=c.length,i-=c.length}while(i>0&&o>0);this.#t=r,this.#r=n}async#p(){let{url:e,cookie:r}=ht(),n=`${e}/${this.#l}/_design/database/_search/${this.#d}`,i=this.buildSearchBody();try{return await wS(n,i,r)}catch(o){if(o.status===404&&this.#a)return await this.#a(),await wS(n,i,r);throw o}}};async function wS(t,e,r){let n=await(0,RS.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(wS,"runQuery");async function CS(t,e,r,n){let i=n.bookmark,o=n.rows||[];if(n.limit&&o.length>=n.limit)return o;let a=Yt.maxLimit;n.limit&&o.length>n.limit-Yt.maxLimit&&(a=n.limit-o.length);let u=new Yt(t,e,r);u.setVersion(n.version).setBookmark(i).setLimit(a).setSort(n.sort).setSortOrder(n.sortOrder).setSortType(n.sortType),n.tableId&&u.setTable(n.tableId);let c=await u.run();if(!c.rows.length)return o;if(c.rows.length<Yt.maxLimit)return[...o,...c.rows];let l={...n,bookmark:c.bookmark,rows:[...o,...c.rows]};return await CS(t,e,r,l)}s(CS,"recursiveSearch");async function pv(t,e,r,n){let i=n.limit;(i==null||isNaN(i)||i<0)&&(i=50),i=Math.min(i,Yt.maxLimit);let o=new Yt(t,e,r);n.version&&o.setVersion(n.version),n.tableId&&o.setTable(n.tableId),n.sort&&o.setSort(n.sort).setSortOrder(n.sortOrder).setSortType(n.sortType),n.indexer&&o.setIndexBuilder(n.indexer),n.disableEscaping&&o.disableEscaping();let a=await o.setBookmark(n.bookmark).setLimit(i).run();o.setBookmark(a.bookmark).setLimit(1),n.tableId&&o.setTable(n.tableId);let u=await o.run();return{...a,hasNextPage:u.rows&&u.rows.length>0}}s(pv,"paginatedSearch");async function mv(t,e,r,n){let i=n.limit;return(i==null||isNaN(i)||i<0)&&(i=1e3),n.limit=Math.min(i,1e3),{rows:await CS(t,e,r,n)}}s(mv,"fullSearch");var Jf={};P(Jf,{createUserIndex:()=>hv});async function hv(){let t=z(),e;try{e=await t.get("_design/database")}catch(n){n.status===404&&(e={_id:"_design/database"})}let r=s(function(n){if(n._id&&!n._id.startsWith("us_"))return;let i=["_id","_rev","password","account","license","budibaseAccess","accountPortalAccess","csrfToken"];function o(a,u){for(let c of Object.keys(a)){if(i.includes(c))continue;let l=u!=null?`${u}.${c}`:c;typeof a[c]=="string"?index(l,a[c].toLowerCase(),{facet:!0}):typeof a[c]!="object"?index(l,a[c],{facet:!0}):o(a[c],l)}}s(o,"idx"),o(n)},"fn");e.indexes={user:{index:r.toString(),analyzer:{default:"keyword",name:"perfield"}}},await t.put(e)}s(hv,"createUserIndex");function DS(t,e){let r=e.toString();if(typeof t=="object")return t.status===e||t.message?.includes(r);if(typeof t=="number")return t===e;if(typeof t=="string")return t.includes(r)}s(DS,"checkErrorCode");function gv(t){return DS(t,409)}s(gv,"isDocumentConflictError");var js={};P(js,{addTenantToUrl:()=>Ev,getTenantDB:()=>Xf,getTenantIDFromCtx:()=>Qs,isUserInWorkspaceTenant:()=>yv});function Xf(t){return Ce(un(t))}s(Xf,"getTenantDB");function Ev(t){let e=q();if(Sr()){let r=t.indexOf("?")===-1?"?":"&";t+=`${r}tenantId=${e}`}return t}s(Ev,"addTenantToUrl");var yv=s((t,e)=>{let r;return e?r=e.tenantId||ce:r=q(),(Zn(t)||ce)===r},"isUserInWorkspaceTenant"),Tv=Object.values(vi),Qs=s((t,e)=>{if(!Sr())return ce;e.allowNoTenant===void 0&&(e.allowNoTenant=!1),e.includeStrategies||(e.includeStrategies=Tv),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(Df()).host.split(":")[0]}catch(o){if(o.code!=="ERR_INVALID_URL")throw o}let i=t.host;if(n&&i.includes(n)){let o=i.substring(0,i.indexOf(`.${n}`));if(o)return o}}if(r("path")){let n=t.matched.find(a=>!!a.paramNames.find(u=>u.name==="tenantId")),i=t.originalUrl,o;if(i.includes("?")?o=i.split("?")[0]:o=i,n){let a=n.params(o,n.captures(o),{});if(a.tenantId)return a.tenantId}}e.allowNoTenant||t.throw(403,"Tenant id not set")},"getTenantIDFromCtx");var Eu={milliseconds:1,seconds:1e3,minutes:60*1e3,hours:3600*1e3,days:1440*60*1e3},me=class t{constructor(e){this.ms=e}static{s(this,"Duration")}to(e){return this.ms/Eu[e]}toMs(){return this.ms}toSeconds(){return this.to("seconds")}static convert(e,r,n){return n*Eu[e]/Eu[r]}static from(e,r){return new t(r*Eu[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 yu(){let t=me.fromDays(7).toSeconds();if(!g.SESSION_EXPIRY_SECONDS)return t;let e=parseInt(g.SESSION_EXPIRY_SECONDS);return Number.isFinite(e)&&e>0?e:t}s(yu,"getSessionExpirySeconds");function Zf(){return new Date(Date.now()+yu()*1e3)}s(Zf,"getSessionExpiryDate");var ep="app_",bS="/app/",xS="/app-chat/";async function Sv(t){let r=t.path.split("/")[2];if(!r)return;let n=`/${r.toLowerCase()}`,i=q();!g.isDev()&&g.MULTI_TENANCY&&(i=Qs(t,{includeStrategies:["subdomain"]}));let a=(await De(i,()=>Gs({dev:!1}))).filter(u=>u.url&&u.url.toLowerCase()===n)[0];return a&&a.appId?a.appId:void 0}s(Sv,"resolveAppUrl");function Av(t){return t.path.startsWith(`/${ep}`)?!0:t.path.startsWith(bS)||t.path.startsWith(xS)}s(Av,"isServingApp");function _v(t){return t.path.startsWith("/builder/workspace/")}s(_v,"isServingBuilder");function Ov(t){return vS(t.path)}s(Ov,"isServingBuilderPreview");function vS(t){return new RegExp(/^\/app\/app_\w+\/preview$/).test(t)}s(vS,"isBuilderPreviewUrl");function Iv(t){return t.path.startsWith("/api/public/v")}s(Iv,"isPublicApiRequest");async function dn(t){let e;function r(u){u&&u.startsWith(ep)&&(e&&e!==u&&t.throw(403,"App id conflict"),e=u)}s(r,"setWorkspaceIdIfValid");function n(u){if(u){typeof u=="string"&&(u=[u]);for(let c of u)r(c)}}s(n,"checkPossibleValues"),n(t.request.headers["x-budibase-app-id"]),r(t.request.body?.appId);let i=wv(t.path);r(i),n(t.query?.appId);let o=vS(t.path);return(t.path.startsWith(bS)||t.path.startsWith(xS))&&!o&&r(await Sv(t)),e}s(dn,"getWorkspaceIdFromCtx");function wv(t){if(t)return t.split("?")[0].split("/").find(e=>e.startsWith(ep))}s(wv,"parseWorkspaceIdFromUrlPath");function Su(t){if(t)try{return Tu.default.verify(t,g.JWT_SECRET)}catch(e){if(g.JWT_SECRET_FALLBACK)return Tu.default.verify(t,g.JWT_SECRET_FALLBACK);throw e}}s(Su,"openJwt");function Hs(t){return g.INTERNAL_API_KEY&&g.INTERNAL_API_KEY===t?!0:!!(g.INTERNAL_API_KEY_FALLBACK&&g.INTERNAL_API_KEY_FALLBACK===t)}s(Hs,"isValidInternalAPIKey");function zt(t,e){let r=t.cookies.get(e);if(r)return Su(r)}s(zt,"getCookie");function tp(t,e,r="builder",n={sign:!0}){e&&n&&n.sign&&(e=Tu.default.sign(e,g.JWT_SECRET));let i=n.sameSite,o=n.secure??t.secure;i==="none"&&(o?o=!0:i="lax");let a={expires:n.expires??Va,path:"/",httpOnly:n.httpOnly??!1,secure:o,overwrite:!0};i&&(a.sameSite=i),g.COOKIE_DOMAIN&&(a.domain=g.COOKIE_DOMAIN),t.cookies.set(r,e,a)}s(tp,"setCookie");function Rv(t,e){tp(t,e,"budibase:auth",{sign:!1,httpOnly:!0,expires:Zf()})}s(Rv,"setAuthCookie");function Jt(t,e){tp(t,null,e)}s(Jt,"clearCookie");function Cv(t){return t.headers["x-budibase-type"]==="client"}s(Cv,"isClient");function rp(t){return new Promise(e=>setTimeout(e,t))}s(rp,"timeout");function np(t){return!!dh[t]}s(np,"isAudited");function Dv(t){if(typeof t!="object")return!1;try{JSON.stringify(t)}catch(e){if(e instanceof Error&&e?.message.includes("circular structure"))return!0}return!1}s(Dv,"hasCircularStructure");function bv(t){return!!t.match(/^.+:\/\/.+$/)}s(bv,"urlHasProtocol");function ip(t){return t&&!!t.match(/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/)}s(ip,"validEmail");async function xv(t){let e=performance.now();return[await t(),me.fromMilliseconds(performance.now()-e)]}s(xv,"time");var Au=require("undici");function vv(t,e){let r,n=null;try{let o=new URL(t);r=o.hostname,n=o.port||null}catch{return!1}let i=e.split(/[\s,]+/).filter(o=>o.length>0);for(let o of i){let u=o.replace(/^\./,"*").match(/^(.+?)(?::(\d+))?$/);if(!u||!u[1])continue;let c=u[1].toLowerCase(),l=u[2]||null,d=!1;if(c==="*")d=!0;else if(c.startsWith("*")){let h=c.slice(1);d=r===h.slice(1)||r.endsWith(h)}else d=r===c;if(d&&(!l||n===l))return!0}return!1}s(vv,"isUrlMatchingNoProxy");function Nv(t){let e=process.env.GLOBAL_AGENT_HTTP_PROXY||process.env.HTTP_PROXY,n=process.env.GLOBAL_AGENT_HTTPS_PROXY||process.env.HTTPS_PROXY||e;if(!n||!n.trim())return!0;try{new URL(n.trim())}catch{return console.log("[fetch] Invalid proxy URL format:",n),!0}if(t){let i=process.env.GLOBAL_AGENT_NO_PROXY||process.env.NO_PROXY||"";if(i&&vv(t,i))return console.log("[fetch] URL matches NO_PROXY pattern, bypassing proxy",{url:t,noProxy:i}),!0}return!1}s(Nv,"shouldBypassProxy");function Pv(t){return new Au.Agent({connect:{rejectUnauthorized:t}})}s(Pv,"createDirectAgent");function Lv(t){let e=process.env.GLOBAL_AGENT_HTTP_PROXY||process.env.HTTP_PROXY,n=(process.env.GLOBAL_AGENT_HTTPS_PROXY||process.env.HTTPS_PROXY||e).trim();console.log("[fetch] Creating ProxyAgent",{proxyUrl:n,rejectUnauthorized:t});let i={uri:n,requestTls:{rejectUnauthorized:t}};return n.startsWith("https://")&&(i.proxyTls={rejectUnauthorized:t}),new Au.ProxyAgent(i)}s(Lv,"createProxyAgent");function Uv(t){let e=t?.rejectUnauthorized??!0;return Nv(t?.url)?Pv(e):Lv(e)}s(Uv,"createDispatcher");function kv(t){return Uv(t)}s(kv,"getDispatcher");var sp=require("util"),op=W(require("zlib"));var Mv=(0,sp.promisify)(op.default.gzip),Fv=(0,sp.promisify)(op.default.gunzip),_u="gzip:",Bv=s(async t=>{let e=await Mv(t);return`${_u}${e.toString("base64")}`},"gzipToBase64"),Wv=s(async t=>{let e=t.startsWith(_u)?t.slice(_u.length):t,r=Buffer.from(e,"base64");return(await Fv(new Uint8Array(r))).toString("utf8")},"gunzipFromBase64");function Gv(t){let e=t.get("authorization");if(!e)return null;let r=e.match(/^Bearer\s+(.+)$/i);return r?r[1]:null}s(Gv,"getBearerToken");var FS=W(require("http")),BS=W(require("https"));var dp={};P(dp,{isBlacklisted:()=>lp,refreshBlacklist:()=>kS,resolveAddress:()=>Ou});var NS=W(require("dns")),wr=W(require("net"));var PS=require("util");var $v=["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"],up,Vv=(0,PS.promisify)(NS.default.lookup);function LS(){return!(g.SELF_HOSTED&&g.BLACKLIST_IPS!==void 0)}s(LS,"shouldApplyDefaultBlacklist");function cp(t){return wr.default.isIP(t)===6?"ipv6":"ipv4"}s(cp,"getIpVersion");function qv(t){let e=wr.default.isIP(t);return e===4?32:e===6?128:null}s(qv,"getMaxPrefixLength");function Kv(t,e){if(!/^\d+$/.test(e))return null;let r=Number.parseInt(e,10),n=qv(t);return n==null||r>n?null:r}s(Kv,"getValidSubnetPrefix");function Qv(t){return wr.default.isIP(t)?t:(/^https?:\/\//.test(t)||(t=`https://${t}`),new URL(t).hostname.replace(/^\[|\]$/g,""))}s(Qv,"parseAddress");async function US(t){return t=Qv(t),(await Vv(t,{all:!0})).map(r=>r.address)}s(US,"lookup");async function Ou(t){return wr.default.isIP(t)?[t]:US(t)}s(Ou,"resolveAddress");function ap(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=wr.default.isIP(i);if(n.length===2){let u=Kv(i,o);if(a&&u!==null){t.addSubnet(i,u,cp(i));return}console.log(`Ignoring invalid blacklist entry: ${r}`);return}a&&t.addAddress(i,cp(i))}s(ap,"addEntryToBlacklist");async function kS(){let t=new wr.default.BlockList;if(LS())for(let r of $v)ap(t,r);let e=g.BLACKLIST_IPS?.split(",")||[];for(let r of e){let n=r.trim();if(!n)continue;let[i]=n.split("/");if(wr.default.isIP(i)){ap(t,n);continue}let o=await US(n);for(let a of o)ap(t,a)}up=t}s(kS,"refreshBlacklist");async function lp(t){up||await kS();let e;try{e=await Ou(t)}catch(r){return r instanceof TypeError?(console.error("Black list error: could not parse address: ",t),!0):LS()}return e.some(r=>up.check(r,cp(r)))}s(lp,"isBlacklisted");var Iu=W(require("node-fetch"));var MS=5,jv=new Set(["http:","https:"]),Hv=["authorization","cookie","cookie2","proxy-authorization"];function fp(t){let e;try{e=new URL(t)}catch{throw new Error("Invalid URL.")}if(!jv.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(fp,"parseUrl");function Yv(t){return[301,302,303,307,308].includes(t)}s(Yv,"isRedirect");async function zv(t){let e=fp(t),r=await Ou(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 lp(n))throw new Error("URL is blocked or could not be resolved safely.");return r[0]}s(zv,"resolveSafePinnedIp");function Jv(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 BS.default.Agent({lookup:n}):new FS.default.Agent({lookup:n})}s(Jv,"makePinnedAgent");function Xv(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(Xv,"nextRequestForRedirect");function Zv(t,e){return new URL(t).origin!==new URL(e).origin}s(Zv,"shouldStripSensitiveHeadersForRedirect");function eN(t){if(!t.headers)return t;let e=new Iu.Headers(t.headers);return Hv.forEach(r=>e.delete(r)),{...t,headers:e}}s(eN,"stripSensitiveHeadersForRedirect");function tN(t){return!t||typeof t!="object"||!("resume"in t)?!1:typeof t.resume=="function"}s(tN,"isResumableBody");function rN(t){let e=t.body;tN(e)&&e.resume()}s(rN,"releaseResponseBody");async function oi(t,e={},{followRedirects:r=!0,returnRedirectWithoutLocation:n=!1,fetchFn:i=Iu.default}={}){let o=t,a={...e,redirect:"manual"};for(let u=0;u<=MS;u++){let c=await zv(o),l;try{l=await i(o,{...a,agent:Jv(o,c)})}catch(h){let m=fp(o).hostname;throw h instanceof Error?(h.message=`Failed to connect to resolved IP for ${m}: ${h.message}`,h):new Error(`Failed to connect to resolved IP for ${m}: unknown network error`)}if(!Yv(l.status))return l;if(rN(l),!r)throw new Error("Redirects are not permitted.");if(u===MS)break;let d=l.headers.get("location");if(!d){if(n)return l;throw new Error("Maximum redirect reached.")}let f=fp(new URL(d,o).toString()).toString();a=Xv(a,l.status),Zv(o,f)&&(a=eN(a)),o=f}throw new Error("Maximum redirect reached.")}s(oi,"fetchWithBlacklist");var nN=s((t,e)=>`datasource:creation:${t}:microsoft:${e}`,"microsoftDatasourceCreationCacheKey");function iN(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(iN,"jobToJobInformation");var wu=class{static{s(this,"InMemoryQueue")}constructor(e,r){this._name=e,this._opts=r,this._messages=[],this._emitter=new WS.default.EventEmitter,this._runCount=0,this._addCount=0,this._queuedJobIds=new Set,this._attempts=r?.defaultJobOptions?.attempts||1}async process(e,r){r=typeof e=="number"?r:e,this._emitter.on("message",async n=>{if(!n.manualTrigger&&n.opts?.repeat!=null)return;function i(){return r.length===1?r(n):new Promise((c,l)=>{r(n,s((f,h)=>{f?l(f):c(h)},"done"))})}s(i,"execute");let o=this._attempts;async function a(c,l=0){try{return await c}catch(d){if(l++,l<o&&!n._isDiscarded)return await Ue.wait(100*l),await a(i(),l);throw d}}s(a,"retryFunc");try{let c=await a(i());this._emitter.emit("completed",n,c);let l=this._messages.indexOf(n);if(l===-1)throw"Failed deleting a processed message";this._messages.splice(l,1)}catch(c){console.error(c),this._emitter.emit("error",n,c)}this._runCount++;let u=n.opts?.jobId?.toString();u&&n.opts?.removeOnComplete&&this._queuedJobIds.delete(u)})}async isReady(){return this}async add(e,r){if(typeof e=="string")throw new Error("doesn't support named jobs");let n=r,i=n?.jobId?.toString();if(i&&this._queuedJobIds.has(i)){console.log(`Ignoring already queued job ${i}`);return}if(typeof e!="object")throw"Queue only supports carrying JSON.";i&&this._queuedJobIds.add(i);let o=X(),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 d=s((h,m)=>{h.id===o&&(this._emitter.off("error",d),this._emitter.off("completed",f),l(m))},"errorHandler"),f=s((h,m)=>{h.id===o&&(this._emitter.off("error",d),this._emitter.off("completed",f),c(m))},"completedHandler");this._emitter.on("error",d),this._emitter.on("completed",f)}),"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=>iN(e))}async whenCurrentJobsFinished(){do await rp(50);while(this.hasRunningJobs())}hasRunningJobs(){return this._addCount>this._runCount}},GS=wu;var hp=W(require("bull"));var ui=(y=>(y.AUTOMATION="automationQueue",y.APP_BACKUP="appBackupQueue",y.AUDIT_LOG="auditLogQueue",y.SYSTEM_EVENT_QUEUE="systemEventQueue",y.APP_MIGRATION="appMigration",y.DOC_WRITETHROUGH_QUEUE="docWritethroughQueue",y.DEV_REVERT_PROCESSOR="devRevertProcessorQueue",y.BATCH_USER_SYNC_PROCESSOR="batchUserSyncProcessorQueue",y.RAG_INGESTION="ragIngestionQueue",y.KNOWLEDGE_SOURCE_SYNC="knowledgeSourceSyncQueue",y.AGENT_LOG_INDEXING="agentLogIndexingQueue",y.ESCALATION="escalationQueue",y.AGENT_REQUEST_TRACKING="agentRequestTrackingQueue",y.AGENT_TEST_RUN="agentTestRunQueue",y))(ui||{});function $S(t,e,r){aN(t,e),r&&sN(t,r)}s($S,"addListeners");function sN(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(sN,"handleStalled");function ot(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(ot,"getLogParams");var oN={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 aN(t,e){let r=oN[e];function n(i,o){let a=i.data.event?.appId;if(a)return bf(a,o);o()}s(n,"doInJobContext"),t.on("stalled",async i=>{await n(i,()=>{console.error(...ot(r,"stalled",{job:i}))})}).on("error",i=>{console.error(...ot(r,"error",{error:i}))}),process.env.NODE_DEBUG?.includes("bull")&&t.on("waiting",i=>{console.info(...ot(r,"waiting",{jobId:i}))}).on("active",async i=>{await n(i,()=>{console.info(...ot(r,"active",{job:i}))})}).on("progress",async(i,o)=>{await n(i,()=>{console.info(...ot(r,"progress",{job:i},{progress:o}))})}).on("completed",async(i,o)=>{await n(i,()=>{console.info(...ot(r,"completed",{job:i},{result:o}))})}).on("failed",async(i,o)=>{await n(i,()=>{console.error(...ot(r,"failed",{job:i,error:o}))})}).on("paused",()=>{console.info(...ot(r,"paused"))}).on("resumed",()=>{console.info(...ot(r,"resumed"))}).on("cleaned",(i,o)=>{console.info(...ot(r,"cleaned",{},{length:i.length,type:o}))}).on("drained",()=>{console.info(...ot(r,"drained"))}).on("removed",i=>{console.info(...ot(r,"removed",{job:i}))})}s(aN,"logging");var Ru={};P(Ru,{cleanup:()=>uN,clear:()=>mp,set:()=>pp});var Ys=[];function pp(t,e){let r=setInterval(t,e);return Ys.push(r),r}s(pp,"set");function mp(t){let e=Ys.indexOf(t);e!==-1&&Ys.splice(e,1),clearInterval(t)}s(mp,"clear");function uN(){for(let t of Ys)clearInterval(t);Ys=[]}s(uN,"cleanup");var Xt=W(require("dd-trace")),zs=W(require("object-sizeof"));var cN=me.fromMinutes(5).toMs(),lN=me.fromSeconds(30).toMs(),gp=me.fromSeconds(60).toMs(),Js=[],Cu;async function VS(){for(let t of Js)await t.clean(gp,"completed"),await t.clean(gp,"failed")}s(VS,"cleanup");async function dN(t,e,r){let n=performance.now();try{let i=await e();return Xt.default.dogstatsd.increment(`${t}.success`,1,r),i}catch(i){throw Xt.default.dogstatsd.increment(`${t}.error`,1,r),i}finally{let i=performance.now()-n;Xt.default.dogstatsd.distribution(`${t}.duration.ms`,i,r),Xt.default.dogstatsd.increment(t,1,r)}}s(dN,"withMetrics");function qS(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(qS,"jobOptsTags");function fN(t){return{"job.id":t.id,"job.attemptsMade":t.attemptsMade,"job.timestamp":t.timestamp,"job.data.sizeBytes":(0,zs.default)(t.data),...qS(t.opts||{})}}s(fN,"jobTags");var yt=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:on(),settings:{maxStalledCount:this.opts.maxStalledCount?this.opts.maxStalledCount:0,lockDuration:cN,lockRenewTime:lN}};this.opts.jobOptions&&(r.defaultJobOptions=this.opts.jobOptions);let n;return g.isTest()?process.env.BULL_TEST_REDIS_PORT&&!isNaN(+process.env.BULL_TEST_REDIS_PORT)?n=new hp.default(this.jobQueue,{...r,redis:{host:"localhost",port:+process.env.BULL_TEST_REDIS_PORT}}):n=new GS(this.jobQueue,r):n=new hp.default(this.jobQueue,r),$S(n,this.jobQueue,this.opts.removeStalledCb),Js.push(n),!Cu&&!g.isTest()&&(Cu=pp(VS,gp),VS().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 Xt.default.trace("queue.process",async c=>{if(a.data._parentSpanContext){let l=a.data._parentSpanContext,d={traceId:l.traceId,spanId:l.spanId,toTraceId:s(()=>l.traceId,"toTraceId"),toSpanId:s(()=>l.spanId,"toSpanId"),toTraceparent:s(()=>"","toTraceparent")};c.addLink(d)}c.addTags({"queue.name":this.jobQueue,...fN(a)}),this.opts.jobTags&&c.addTags(this.opts.jobTags(a.data)),Xt.default.dogstatsd.distribution("queue.process.sizeBytes",(0,zs.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 Xt.default.trace("queue.add",async n=>(n.addTags({"queue.name":this.jobQueue,"job.data.sizeBytes":(0,zs.default)(e),...qS(r||{})}),this.opts.jobTags&&n.addTags(this.opts.jobTags(e)),e._parentSpanContext={traceId:n.context().toTraceId(),spanId:n.context().toSpanId()},Xt.default.dogstatsd.distribution("queue.add.sizeBytes",(0,zs.default)(e),this.metricTags()),await this.withMetrics("queue.add",()=>this.queue.add(e,r))))}withMetrics(e,r){return dN(e,r,this.metricTags())}metricTags(){return{queueName:this.jobQueue}}close(e){return this.queue.close(e)}whenCurrentJobsFinished(){return this.queue.whenCurrentJobsFinished()}};async function pN(){Cu&&mp(Cu),console.log("Waiting for current queue jobs to finish...");for(let t of Js)await t.whenCurrentJobsFinished();console.log("Closing queue Redis connections...");for(let t of Js)await t.close();Js=[],console.log("Queues shutdown")}s(pN,"shutdown");var io={};P(io,{correlation:()=>Xs,logAlert:()=>mn,logAlertWithInfo:()=>JN,logWarn:()=>di,logger:()=>Uu,system:()=>xp});var Xs={};P(Xs,{getId:()=>Ep,setHeader:()=>mN});var KS=require("correlation-id"),mN=s(t=>{let e=KS.getId();e&&(t["x-budibase-correlation-id"]=e)},"setHeader");function Ep(){return KS.getId()}s(Ep,"getId");var Lu=W(require("pino")),_A=W(require("pino-pretty")),vp=W(require("dd-trace")),OA=require("dd-trace/ext");var xp={};P(xp,{getLogReadStream:()=>KN,getSingleFileMaxSizeInfo:()=>AA,localFileDestination:()=>bp});var no=W(require("fs")),Dp=W(require("path")),EA=W(require("rotating-file-stream"));var Cp={};P(Cp,{ObjectStore:()=>at,ObjectStoreBuckets:()=>gN,SIGNED_FILE_PREFIX:()=>Op,bucketTTLConfig:()=>Du,budibaseTempDir:()=>fn,client3rdPartyLibrary:()=>FN,clientLibraryPath:()=>MN,clientLibraryUrl:()=>BN,createBucketIfNotExists:()=>ro,deleteFile:()=>DN,deleteFiles:()=>bN,deleteFolder:()=>sA,downloadTarball:()=>vN,downloadTarballDirect:()=>xN,enrichPWAImages:()=>WN,enrichPluginURLs:()=>$N,extractBucketAndPath:()=>yp,getAllFiles:()=>wN,getAppFileUrl:()=>cA,getClientCacheKey:()=>uA,getGlobalFileS3Key:()=>lA,getGlobalFileUrl:()=>GN,getObjectMetadata:()=>NN,getPluginIconKey:()=>pA,getPluginJSKey:()=>fA,getPluginS3Dir:()=>hA,getPresignedUrl:()=>pn,getReadStream:()=>bu,getSafeRetrieveDirectoryPath:()=>iA,listAllObjects:()=>Ip,objectExists:()=>PN,processAutomationAttachment:()=>yN,processObjectStoreAttachment:()=>zS,retrieve:()=>nA,retrieveDirectory:()=>CN,retrieveToTmp:()=>RN,sanitizeBucket:()=>be,sanitizeKey:()=>Ee,streamUpload:()=>rA,streamUploadMany:()=>IN,upload:()=>ON,uploadDirectory:()=>wp});var vu=require("@aws-sdk/client-s3"),Tp=require("@aws-sdk/lib-storage"),JS=require("@aws-sdk/s3-request-presigner"),XS=require("@smithy/node-http-handler");var Zt=W(require("dd-trace")),ci=W(require("fs")),eo=W(require("fs/promises")),ZS=W(require("https")),Ye=require("path"),Nu=W(require("stream")),to=require("stream/promises"),Sp=W(require("tar-fs")),Ap=require("uuid"),_p=W(require("zlib"));var QS=W(require("fs")),jS=require("os"),Zs=W(require("path")),HS=W(require("stream"));var gN={BACKUPS:g.BACKUPS_BUCKET_NAME,APPS:g.APPS_BUCKET_NAME,TEMPLATES:g.TEMPLATES_BUCKET_NAME,GLOBAL:g.GLOBAL_BUCKET_NAME,PLUGINS:g.PLUGIN_BUCKET_NAME,TEMP:g.TEMP_BUCKET_NAME},YS=(0,Zs.join)((0,jS.tmpdir)(),".budibase");try{QS.default.mkdirSync(YS)}catch(t){if(t.code!=="EEXIST")throw t}function fn(){return YS}s(fn,"budibaseTempDir");var Du=s((t,e)=>{let n={Rules:[{ID:`${t}-ExpireAfter${e}days`,Prefix:"",Status:"Enabled",Expiration:{Days:e}}]};return{Bucket:t,LifecycleConfiguration:n}},"bucketTTLConfig");async function EN(t){let e=await oi(t.url);if(!e.ok||!e.body)throw new Error(`Unexpected response ${e.statusText}`);let r=Zs.default.basename(new URL(t.url).pathname);if(!e.body)throw new Error("No response received for attachment");if(!(e.body instanceof HS.default.Readable))throw new Error("Unexpected response body stream type");return{filename:t.filename||r,content:e.body}}s(EN,"processUrlAttachment");async function zS(t){let e=yp(t.url);if(e===null)throw new Error("Invalid signed URL");let{bucket:r,path:n}=e,{stream:i}=await bu(r,n),o=Zs.default.basename(n);return{bucket:r,path:n,filename:t.filename||o,content:i}}s(zS,"processObjectStoreAttachment");async function yN(t){return t.url?.startsWith("http://")||t.url?.startsWith("https://")?await EN(t):await zS(t)}s(yN,"processAutomationAttachment");var TN=require("sanitize-s3-objectkey"),SN={bucketCreationPromises:{}},Op="/files/signed",Rr={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"},AN=[Rr.html,Rr.css,Rr.js,Rr.json];function Ee(t){let e=TN(be(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(Ee,"sanitizeKey");function be(t){return t.replace(new RegExp(nt,"g"),rt)}s(be,"sanitizeBucket");function at(t={presigning:!1}){let e={forcePathStyle:!0,credentials:{accessKeyId:g.MINIO_ACCESS_KEY,secretAccessKey:g.MINIO_SECRET_KEY},region:g.AWS_REGION};if(!g.MINIO_ENABLED&&g.AWS_SESSION_TOKEN&&(e.credentials={accessKeyId:g.MINIO_ACCESS_KEY,secretAccessKey:g.MINIO_SECRET_KEY,sessionToken:g.AWS_SESSION_TOKEN}),g.MINIO_URL&&(t.presigning&&g.MINIO_ENABLED?e.endpoint="http://minio-service":e.endpoint=g.MINIO_URL),g.S3_IGNORE_SELF_SIGNED==="true"){let r=new ZS.default.Agent({rejectUnauthorized:!1});e.requestHandler=new XS.NodeHttpHandler({httpsAgent:r})}return new vu.S3(e)}s(at,"ObjectStore");async function ro(t,e){e=be(e);try{return await t.headBucket({Bucket:e}),{created:!1,exists:!0}}catch(r){let n=r.statusCode||r.$response?.statusCode||r.$metadata?.httpStatusCode,i=SN.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(ro,"createBucketIfNotExists");var _N=s((t,e)=>{if(e)return e;let r=t.split(".").pop();return r?Rr[r.toLowerCase()]:Rr.txt},"resolveContentType"),eA=s(async(t,e,r)=>{let n=be(t),i=at(),o=await ro(i,n);if(r.addTags({bucketCreated:o.created,bucketExists:o.exists}),e&&o.created){let a=Du(n,e);await i.putBucketLifecycleConfiguration(a)}return{bucket:n,client:i,bucketCreated:o}},"initialiseBucket"),tA=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=_N(r,i),u=Ee(r),c={Bucket:e,Key:u,Body:n,ContentType:a,...o??{}};return{details:await new Tp.Upload({client:t,params:c}).done(),contentType:a}},"streamUploadInternal");async function ON({bucket:t,filename:e,path:r,type:n,metadata:i,body:o,ttl:a}){let u=e.split(".").pop(),c=r?(await eo.default.open(r)).createReadStream():o,l=at(),d=await ro(l,t);if(a&&d.created){let E=Du(t,a);await l.putBucketLifecycleConfiguration(E)}let f=n,h=f||(u?Rr[u.toLowerCase()]:Rr.txt),m={Bucket:be(t),Key:Ee(e),Body:c,ContentType:h};if(i&&typeof i=="object"){for(let E of Object.keys(i))(!i[E]||typeof i[E]!="string")&&delete i[E];m.Metadata=i}return new Tp.Upload({client:l,params:m}).done()}s(ON,"upload");async function rA({bucket:t,stream:e,filename:r,type:n,extra:i,ttl:o}){return await Zt.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 eA(t,o,a),{details:d,contentType:f}=await tA({client:l,bucket:c,filename:r,stream:e,type:n,extra:i}),h=await l.headObject({Bucket:c,Key:Ee(r)});return a.addTags({contentType:f,contentLength:h.ContentLength}),{...d,ContentLength:h.ContentLength}})}s(rA,"streamUpload");async function IN({bucket:t,files:e,ttl:r}){return await Zt.default.trace("streamUploadMany",async i=>{if(i.addTags({bucketName:t,ttl:r,fileCount:e.length}),!e.length)return[];let{bucket:o,client:a}=await eA(t,r,i),u=e.map((l,d)=>({...l,index:d})),c=new Array(e.length);return await Rt.parallelForeach(u,async l=>{let{details:d}=await tA({client:a,bucket:o,filename:l.filename,stream:l.stream,type:l.type,extra:l.extra});c[l.index]=d},10),c})}s(IN,"streamUploadMany");async function nA(t,e){return await Zt.default.trace("retrieve",async r=>{r.addTags({bucketName:t,filepath:e});let n=at(),i={Bucket:be(t),Key:Ee(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}),AN.includes(o.ContentType))return r.addTags({string:!0}),o.Body.transformToString();{r.addTags({string:!1});let a=o.Body.transformToWebStream();return Nu.default.Readable.fromWeb(a)}})}s(nA,"retrieve");async function*Ip(t,e){let r=at(),n=s((a={})=>r.listObjectsV2({...a,Bucket:be(t),Prefix:Ee(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(Ip,"listAllObjects");async function wN(t,e){let r={};return await Rt.parallelForeach(Ip(t,e),async n=>{if(!n.Key)throw new Error("file.Key must be defined");r[n.Key]=n},5),r}s(wN,"getAllFiles");async function pn(t,e,r=3600){let n=at({presigning:!0}),i={Bucket:be(t),Key:Ee(e)},o=await(0,JS.getSignedUrl)(n,new vu.GetObjectCommand(i),{expiresIn:r});if(g.MINIO_ENABLED){let a=new URL(o),u=a.pathname,c=a.search;return`${Op}${u}${c}`}else return o}s(pn,"getPresignedUrl");async function RN(t,e){return await Zt.default.trace("retrieveToTmp",async r=>{r.addTags({bucketName:t,filepath:e}),t=be(t),e=Ee(e);let n=await nA(t,e),i=(0,Ye.join)(fn(),(0,Ap.v4)());return r.addTags({outputPath:i}),n instanceof Nu.default.Readable?(r.addTags({stream:!0}),await(0,to.pipeline)(n,ci.default.createWriteStream(i))):(r.addTags({stream:!1}),ci.default.writeFileSync(i,n)),i})}s(RN,"retrieveToTmp");async function CN(t,e,r){return await Zt.default.trace("retrieveDirectory",async n=>{n.addTags({bucketName:t,path:e});let i=(0,Ye.join)(fn(),(0,Ap.v4)());await eo.default.mkdir(i,{recursive:!0});let o=0;return await Rt.parallelForeach(Ip(t,e),async a=>{let{Key:u}=a;!u||r?.some(c=>c.test(u))||(o++,await Zt.default.trace("retrieveDirectory.object",async c=>{let l=a.Key;c.addTags({filename:l});let d=iA(i,l);if(!d){c.addTags({skippedUnsafePath:!0});return}let{stream:f}=await bu(t,l);ci.default.existsSync(d.dir)||await eo.default.mkdir(d.dir,{recursive:!0}),await(0,to.pipeline)(f,ci.default.createWriteStream(d.path,{mode:420}))}))},5),n.addTags({numObjects:o}),i})}s(CN,"retrieveDirectory");function iA(t,e){let r=(0,Ye.resolve)(t),n=(0,Ye.resolve)(r,...e.split("/"));if(n===r||n.startsWith(`${r}${Ye.sep}`))return{dir:(0,Ye.dirname)(n),path:n}}s(iA,"getSafeRetrieveDirectoryPath");async function DN(t,e){let r=at();await ro(r,t);let n={Bucket:t,Key:Ee(e)};return r.deleteObject(n)}s(DN,"deleteFile");async function bN(t,e){let r=at();await ro(r,t);let n={Bucket:t,Delete:{Objects:e.map(i=>({Key:Ee(i)}))}};return r.deleteObjects(n)}s(bN,"deleteFiles");async function sA(t,e){t=be(t),e=Ee(e);let r=at(),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 sA(t,e)}s(sA,"deleteFolder");async function wp(t,e,r){return await Zt.default.trace("uploadDirectory",async n=>{n.addTags({bucketName:t,localPath:e,bucketPath:r}),t=be(t);let i=await eo.default.readdir(e,{withFileTypes:!0});n.addTags({numFiles:i.length});for(let o of i){let a=Ee((0,Ye.join)(r,o.name)),u=(0,Ye.join)(e,o.name);o.isDirectory()?await wp(t,u,a):await rA({bucket:t,filename:a,stream:ci.default.createReadStream(u)})}return i})}s(wp,"uploadDirectory");async function xN(t,e,r={},{followRedirects:n=!0}={}){e=Ee(e);let i=await oi(t,{headers:r},{followRedirects:n});if(!i.ok)throw new Error(`unexpected response ${i.statusText}`);await(0,to.pipeline)(i.body,_p.default.createUnzip(),Sp.default.extract(e))}s(xN,"downloadTarballDirect");async function vN(t,e,r){e=be(e),r=Ee(r);let n=await oi(t);if(!n.ok)throw new Error(`unexpected response ${n.statusText}`);let i=(0,Ye.join)(fn(),r);return await(0,to.pipeline)(n.body,_p.default.createUnzip(),Sp.default.extract(i)),!g.isTest()&&g.SELF_HOSTED&&await wp(e,i,r),i}s(vN,"downloadTarball");async function bu(t,e){return await Zt.default.trace("getReadStream",async r=>{t=be(t),e=Ee(e),r.addTags({bucketName:t,path:e});let n=at(),i={Bucket:t,Key:e},o=await n.getObject(i);if(!o.Body||!(o.Body instanceof Nu.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(bu,"getReadStream");async function NN(t,e){t=be(t),e=Ee(e);let r=at(),n={Bucket:t,Key:e};try{return await r.headObject(n)}catch{throw new Error("Unable to retrieve metadata from object")}}s(NN,"getObjectMetadata");async function PN(t,e){t=be(t),e=Ee(e);let r=at(),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(PN,"objectExists");function yp(t){let e=t.split("?")[0],r=new RegExp(`^${Op}/(?<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(yp,"extractBucketAndPath");var aA=W(require("querystring"));var oA=W(require("aws-cloudfront-sign"));var Pu;function LN(){if(!g.CLOUDFRONT_PRIVATE_KEY_64)throw new Error("CLOUDFRONT_PRIVATE_KEY_64 is not set");return Pu||(Pu=Buffer.from(g.CLOUDFRONT_PRIVATE_KEY_64,"base64").toString("utf-8"),Pu)}s(LN,"getPrivateKey");var UN=s(()=>({keypairId:g.CLOUDFRONT_PUBLIC_KEY_ID,privateKeyString:LN(),expireTime:new Date().getTime()+1e3*60*60*24}),"getCloudfrontSignParams"),li=s(t=>{let e=kN(t);return oA.getSignedUrl(e,UN())},"getPresignedUrl"),kN=s(t=>{let e="/";return t.startsWith("/")&&(e=""),`${g.CLOUDFRONT_CDN}${e}${t}`},"getUrl");function MN(t){return`${Ee(t)}/budibase-client.js`}s(MN,"clientLibraryPath");function FN(t,e){return`${Ee(t)}/${e}`}s(FN,"client3rdPartyLibrary");async function BN(t,e){return`/api/assets/${t}/client?${await uA(e)}`}s(BN,"clientLibraryUrl");async function uA(t){let e,r;try{e=q()}finally{r={version:t}}return e&&e!==ce&&(r.tenantId=e),aA.default.encode(r)}s(uA,"getClientCacheKey");async function cA(t){return g.CLOUDFRONT_CDN?li(t):await pn(g.APPS_BUCKET_NAME,t)}s(cA,"getAppFileUrl");async function WN(t){if(t.length===0)return[];try{return await Promise.all(t.map(async e=>({...e,src:await cA(e.src),type:e.type||"image/png"})))}catch(e){return console.error("Error enriching PWA images:",e),t}}s(WN,"enrichPWAImages");var GN=s(async(t,e,r)=>{let n=lA(t,e);return g.CLOUDFRONT_CDN?(r&&(n=`${n}?etag=${r}`),li(n)):await pn(g.GLOBAL_BUCKET_NAME,n)},"getGlobalFileUrl"),lA=s((t,e)=>{let r=`${t}/${e}`;return g.MULTI_TENANCY&&(r=`${q()}/${r}`),r},"getGlobalFileS3Key");async function $N(t){return!t||!t.length?[]:await Promise.all(t.map(async e=>{let r=await VN(e),n=await qN(e);return{...e,jsUrl:r,iconUrl:n}}))}s($N,"enrichPluginURLs");async function VN(t){let e=fA(t);return dA(e)}s(VN,"getPluginJSUrl");async function qN(t){let e=pA(t);if(e)return dA(e)}s(qN,"getPluginIconUrl");async function dA(t){return g.CLOUDFRONT_CDN?li(t):await pn(g.PLUGIN_BUCKET_NAME,t)}s(dA,"getPluginUrl");function fA(t){return mA(t,"plugin.min.js")}s(fA,"getPluginJSKey");function pA(t){let e=t.iconUrl?"icon.svg":t.iconFileName;if(e)return mA(t,e)}s(pA,"getPluginIconKey");function mA(t,e){return`${hA(t.name)}/${e}`}s(mA,"getPluginS3Key");function hA(t){let e=`${t}`;return g.MULTI_TENANCY&&(e=`${q()}/${e}`),g.CLOUDFRONT_CDN&&(e=`plugins/${e}`),e}s(hA,"getPluginS3Dir");var yA="budibase.log",TA="budibase-logs-history.txt",SA=Dp.default.join(fn(),"systemlogs");function gA(t){return Dp.default.join(SA,t)}s(gA,"getFullPath");function AA(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(AA,"getSingleFileMaxSizeInfo");function bp(){let t=AA(g.ROLLING_LOG_MAX_SIZE);return EA.createStream(yA,{size:t?.size,path:SA,maxFiles:t?.totalHistoryFiles||1,immutable:!0,history:TA,initialRotation:!1})}s(bp,"localFileDestination");function KN(){let t=[],e=gA(TA);if(no.default.existsSync(e)){let i=no.default.readFileSync(e,"utf-8").split(`
|
|
37
37
|
`);for(let o of i.filter(a=>a))t.push(no.default.readFileSync(o))}return t.push(no.default.readFileSync(gA(yA))),Buffer.concat(t.map(n=>new Uint8Array(n)))}s(KN,"getLogReadStream");function QN(t){return typeof t=="object"&&t!==null&&!(t instanceof Error)}s(QN,"isPlainObject");function jN(t){return t instanceof Error}s(jN,"isError");function HN(t){return typeof t=="string"}s(HN,"isMessage");var Cr;if(!g.DISABLE_PINO_LOGGER){let t=g.LOG_LEVEL,e={level:t,formatters:{level:s(c=>({level:c.toUpperCase()}),"level"),bindings:s(()=>g.SELF_HOSTED?{service:g.SERVICE_NAME}:{},"bindings")},timestamp:s(()=>`,"timestamp":"${new Date(Date.now()).toISOString()}"`,"timestamp")},r=[];r.push(g.isDev()?{stream:(0,_A.default)({singleLine:!0}),level:t}:{stream:process.stdout,level:t}),g.SELF_HOSTED&&r.push({stream:bp(),level:t}),Cr=r.length?(0,Lu.default)(e,Lu.default.multistream(r)):(0,Lu.default)(e);let n=s(c=>{let l,d=[],f="";c.forEach(p=>{HN(p)&&(f=`${f} ${p}`.trimStart()),QN(p)&&d.push(p),jN(p)&&(l=p)});let h=u(),m={};m={tenantId:i(),appId:o(),automationId:a(),identityId:h?._id,identityType:h?.type,correlationId:Ep()};let y=vp.default.scope().active();y&&vp.default.inject(y.context(),OA.formats.LOG,m);let E={err:l,pid:process.pid,...m};if(d.length){let p={},T=0;for(let A=0;A<d.length;A++){let _=d[A],I=_._logKey;I?(delete _._logKey,E[I]=_):(p[T]=_,T++)}Object.keys(p).length&&(E.data=p)}return[E,f]},"getLogParams");console.log=(...c)=>{let[l,d]=n(c);Cr?.info(l,d)},console.info=(...c)=>{let[l,d]=n(c);Cr?.info(l,d)},console.warn=(...c)=>{let[l,d]=n(c);Cr?.warn(l,d)},console.error=(...c)=>{let[l,d]=n(c);Cr?.error(l,d)},console.trace=(...c)=>{let[l,d]=n(c);l.err||(l.err=new Error),Cr?.trace(l,d)},console.debug=(...c)=>{let[l,d]=n(c);Cr?.debug(l,d)};let i=s(()=>{let c;try{c=q()}catch{}return c},"getTenantId"),o=s(()=>{let c;try{c=Me()}catch{}return c},"getAppId"),a=s(()=>{let c;try{c=xf()}catch{}return c},"getAutomationId"),u=s(()=>{let c;try{c=Qt()}catch{}return c},"getIdentity")}var Uu=Cr;var YN=["AccountError"];function zN(t){return t&&t.suppressAlert}s(zN,"isSuppressed");function mn(t,e){e&&YN.includes(e.name)&&zN(e)||console.error(`bb-alert: ${t}`,e)}s(mn,"logAlert");function JN(t,e,r,n){t=`${t} - db: ${e} - doc: ${r} - error: `,mn(t,n)}s(JN,"logAlertWithInfo");function di(t,e){console.warn(`bb-warn: ${t}`,e)}s(di,"logWarn");var ku=class extends Error{static{s(this,"UnretriableError")}constructor(e){super(e),this.name="PermanentError"}},Np=class{static{s(this,"QueuedProcessor")}constructor(e,r={}){let{maxAttempts:n=3,removeOnFail:i=!0,removeOnComplete:o=!0,maxStalledCount:a=3}=r;this.waitForCompletionMs=r.waitForCompletionMs||1e4,this._queue=new yt(e,{maxStalledCount:a,jobOptions:{attempts:n,removeOnFail:i,removeOnComplete:o}}),this._queue.process(async(u,c)=>{try{let l=await this.processFn(u.data);c?.(null,l)}catch(l){l instanceof ku&&await u.discard(),mn(`Failed to process job in ${this._queue.name}`,l),c?.(l)}})}async close(e){await this._queue.close(e)}async execute(e){try{let r=await this._queue.add(e);return{success:!0,result:await Ue.withTimeout(this.waitForCompletionMs,()=>r.finished())}}catch(r){if(r.errno!=="ETIME")throw r;return{success:!1,reason:"timeout"}}}};var XN=100,Mu,so=class t{static{s(this,"DocWritethroughProcessor")}static get queue(){return t._queue||(t._queue=new yt("docWritethroughQueue",{jobOptions:{attempts:XN}})),t._queue}init(){return t.queue.process(async e=>{try{await this.persistToDb(e.data)}catch(r){throw r.status===409?new Error(`Conflict persisting message ${e.id}. Attempt ${e.attemptsMade}`):r}}),this}async persistToDb({dbName:e,docId:r,data:n}){if(r.startsWith("scimlog"))return;let i=Ce(e),o;try{o=await i.get(r)}catch{o={_id:r}}o={...o,...n},await i.put(o)}},Lp=class{static{s(this,"DocWritethrough")}constructor(e,r){this.db=e,this._docId=r}get docId(){return this._docId}async patch(e){await so.queue.add({dbName:this.db.name,docId:this.docId,data:e})}};function IA(){return Mu=new so().init(),Mu}s(IA,"init");function ZN(){return Mu||IA()}s(ZN,"getProcessor");var Bu={};P(Bu,{CacheKey:()=>Oe,TTL:()=>fi,bustCache:()=>pi,destroy:()=>ao,get:()=>oo,increment:()=>RA,keys:()=>Fu,store:()=>gn,withCache:()=>br,withCacheWithDynamicTTL:()=>wA});function Tt(t){let e=q();return`${t}:${e}`}s(Tt,"generateTenantKey");var hn=class{static{s(this,"BaseCache")}constructor(e=void 0){this.client=e}async getClient(){return this.client?this.client:await Ff()}async keys(e){return(await this.getClient()).keys(e)}async exists(e,r={useTenancy:!0}){return e=r.useTenancy?Tt(e):e,(await this.getClient()).exists(e)}async scan(e,r={useTenancy:!0}){return e=r.useTenancy?Tt(e):e,(await this.getClient()).scan(e)}async get(e,r={useTenancy:!0}){return e=r.useTenancy?Tt(e):e,(await this.getClient()).get(e)}async bulkGet(e,r={useTenancy:!0}){return e=r.useTenancy?e.map(i=>Tt(i)):e,(await this.getClient()).bulkGet(e)}async store(e,r,n=null,i={useTenancy:!0}){e=i.useTenancy?Tt(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[Tt(a)]=u,o),{})),await(await this.getClient()).bulkStore(e,r)}async delete(e,r={useTenancy:!0}){return e=r.useTenancy?Tt(e):e,(await this.getClient()).delete(e)}async bulkDelete(e,r={useTenancy:!0}){return e=r.useTenancy?e.map(i=>Tt(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(Tt(e))}catch(n){throw console.error("Error busting cache - ",n),n}}async increment(e,r,n={useTenancy:!0}){e=n.useTenancy?Tt(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?Tt(e):e,await(await this.getClient()).deleteIfValue(e,r)}};var Dr=new hn,Oe={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")},fi=(n=>(n[n.ONE_MINUTE=600]="ONE_MINUTE",n[n.ONE_HOUR=3600]="ONE_HOUR",n[n.ONE_DAY=86400]="ONE_DAY",n))(fi||{}),Fu=s((...t)=>Dr.keys(...t),"keys"),oo=s((...t)=>Dr.get(...t),"get"),gn=s((...t)=>Dr.store(...t),"store"),ao=s((...t)=>Dr.delete(...t),"destroy"),br=s((...t)=>Dr.withCache(...t),"withCache"),wA=s((...t)=>Dr.withCacheWithDynamicTTL(...t),"withCacheWithDynamicTTL"),pi=s((...t)=>Dr.bustCache(...t),"bustCache"),RA=s((...t)=>Dr.increment(...t),"increment");var Fp={};P(Fp,{createCode:()=>aP,deleteCode:()=>cP,getCode:()=>uP,getExistingInvites:()=>Mp,getInviteCodes:()=>PA,updateCode:()=>oP});var yn={};P(yn,{AUTO_EXTEND_POLLING_MS:()=>bA,doWithLock:()=>uo,newRedlock:()=>En});var DA=W(require("redlock"));async function eP(t,e){if(t==="custom")return En(e);switch(t){case"try_once":return En(mi.TRY_ONCE);case"try_twice":return En(mi.TRY_TWICE);case"default":return En(mi.DEFAULT);case"delay_500":return En(mi.DELAY_500);case"auto_extend":return En(mi.AUTO_EXTEND);default:throw Rt.unreachable(t)}}s(eP,"getClient");var mi={TRY_ONCE:{retryCount:0},TRY_TWICE:{retryCount:1},DEFAULT:{driftFactor:.01,retryCount:10,retryDelay:200,retryJitter:100},DELAY_500:{retryDelay:500},CUSTOM:{},AUTO_EXTEND:{retryCount:-1}};async function En(t={}){let e={...mi.DEFAULT,...t},n=(await Wf()).client;return new DA.default([n],e)}s(En,"newRedlock");function tP(t){let r=`lock:${t.systemLock?"system":q()}_${t.name}`;return t.resource&&(r=r+`_${t.resource}`),r}s(tP,"getLockName");var bA=me.fromSeconds(10).toMs();async function uo(t,e){let r=await eP(t.type,t.customOptions),n,i,o,a=!1;try{let u=tP(t),c=t.type==="auto_extend"?bA:t.ttl;if(n=await r.lock(u,c),t.type==="auto_extend"){let d=s(()=>{i=setTimeout(async()=>{a||(o=(async()=>{n=await n.extend(c,()=>t.onExtend&&t.onExtend())})(),await o,o=void 0,d())},c/2)},"extendInIntervals");d()}return{executed:!0,result:await e()}}catch(u){if(u.name==="LockError"){if(t.type==="try_once")return{executed:!1};throw u}else throw u}finally{a=!0,clearTimeout(i),await o?.catch(()=>{}),await n?.unlock()}}s(uo,"doWithLock");var xA=me.fromDays(7).toSeconds(),nP=me.fromSeconds(10).toMs(),Wu="Invitation is not valid or has expired, please request a new one.";function vA(t,e){if(!t)return null;let r=t.tenantId||e;return r?{tenantId:r,invites:t.invites||{}}:null}s(vA,"normaliseInviteList");function iP(t){let e=!1,r=Date.now();for(let[n,i]of Object.entries(t.invites))(!i?.expiresAt||i.expiresAt<=r)&&(delete t.invites[n],e=!0);return{list:t,changed:e}}s(iP,"pruneExpiredInvites");async function kp(t){let r=await(await Ms()).get(t);return vA(r,t)}s(kp,"loadInviteList");async function co(t,e){await(await Ms()).store(t,e)}s(co,"saveInviteList");async function lo(t,e){let{result:r}=await uo({type:"default",name:"process_user_invite",systemLock:!0,resource:t,ttl:nP},e);return r}s(lo,"withInviteListLock");function sP(t,e){return{code:t,email:e.email,info:e.info}}s(sP,"toInviteWithCode");async function NA(t,e){let r=await Ms(),n=vA(await r.get(e),e);if(!n)throw new Error(Wu);if(!Object.keys(n.invites).includes(t))throw new Error(Wu);return{list:n,invite:n.invites[t]}}s(NA,"findInviteInList");async function oP(t,e){let r={...e.info},n=r.tenantId||q();r.tenantId=n,await lo(n,async()=>{let i=await kp(n)||{tenantId:n,invites:{}};i.invites[t]={email:e.email,info:r,expiresAt:Date.now()+xA*1e3},await co(n,i)})}s(oP,"updateCode");async function aP(t,e){let r=X(),n={...e||{}},i=n.tenantId||q();return n.tenantId=i,await lo(i,async()=>{let o=await kp(i)||{tenantId:i,invites:{}};o.invites[r]={email:t,info:n,expiresAt:Date.now()+xA*1e3},await co(i,o)}),r}s(aP,"createCode");async function uP(t,e){let r=e||q();return await lo(r,async()=>{let n=await NA(t,r),{list:i,invite:o}=n;if(o.expiresAt<=Date.now())throw delete i.invites[t],await co(i.tenantId,i),new Error(Wu);return{email:o.email,info:o.info}})}s(uP,"getCode");async function cP(t,e){let r=e||q();try{await lo(r,async()=>{let n=await NA(t,r);delete n.list.invites[t],await co(n.list.tenantId,n.list)})}catch(n){if(n instanceof Error&&n.message===Wu)return;throw n}}s(cP,"deleteCode");async function PA(){let t=q(),e=await lo(t,async()=>{let n=await kp(t)||{tenantId:t,invites:{}},i=iP(n);return n=i.list,i.changed&&await co(t,n),n}),r=new Map;for(let[n,i]of Object.entries(e.invites))r.set(n,sP(n,i));return Array.from(r.values())}s(PA,"getInviteCodes");async function Mp(t){let e=new Set(t.map(r=>r.toLowerCase()));return(await PA()).filter(r=>e.has(r.email.toLowerCase()))}s(Mp,"getExistingInvites");var Bp={};P(Bp,{createCode:()=>dP,getCode:()=>fP,invalidateCode:()=>pP});var lP=me.fromHours(1).toSeconds();async function dP(t,e){let r=X();return await(await Fs()).store(r,{userId:t,info:e},lP),r}s(dP,"createCode");async function fP(t){let r=await(await Fs()).get(t);if(!r)throw new Error("Provided information is not valid, cannot reset password - please try again.");return r}s(fP,"getCode");async function pP(t){await(await Fs()).delete(t)}s(pP,"invalidateCode");var nr={};P(nr,{getUser:()=>bo,getUsers:()=>Z0,invalidateUser:()=>xo,invalidateUsers:()=>ek});var fo={};P(fo,{getPlatformDB:()=>xr,users:()=>St});var St={};P(St,{addSsoUser:()=>UA,addUser:()=>TP,getUserDoc:()=>LA,lookupTenantId:()=>mP,removeUser:()=>SP,updateUserDoc:()=>hP});function xr(){return Ce(pe.PLATFORM_INFO.name)}s(xr,"getPlatformDB");async function mP(t){return g.MULTI_TENANCY?(await LA(t)).tenantId:ce}s(mP,"lookupTenantId");async function LA(t){return xr().get(t)}s(LA,"getUserDoc");async function hP(t){await xr().put(t)}s(hP,"updateUserDoc");function gP(t,e){return{_id:t,tenantId:e}}s(gP,"newUserIdDoc");function EP(t,e,r){return{_id:e,userId:t,tenantId:r}}s(EP,"newUserEmailDoc");function yP(t,e,r,n){return{_id:t,userId:r,email:e,tenantId:n}}s(yP,"newUserSsoIdDoc");async function Wp(t,e){let r=xr(),n;try{await r.get(t)}catch(i){if(i.status===404)n=e(),await r.put(n);else throw i}}s(Wp,"addUserDoc");async function UA(t,e,r,n){return Wp(t,()=>yP(t,e,r,n))}s(UA,"addSsoUser");async function TP(t,e,r,n){let i=[Wp(e,()=>gP(e,t)),Wp(r,()=>EP(e,r,t))];n&&i.push(UA(n,r,e,t)),await Promise.all(i)}s(TP,"addUser");async function SP(t){let e=xr(),r=[t._id,t.email],n=await e.allDocs({keys:r,include_docs:!0});await e.bulkRemove(n.rows.map(i=>i.doc),{silenceErrors:!0})}s(SP,"removeUser");var Sn={};P(Sn,{getAccount:()=>vr,getAccountByTenantId:()=>hi,getStatus:()=>AP});var kA=W(require("node-fetch"));var Tn=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";Xs.setHeader(n.headers);let o={method:e,body:i?JSON.stringify(n.body):n.body,headers:n.headers,credentials:"include"};return await(0,kA.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 Gp=new Tn(g.INTERNAL_ACCOUNT_PORTAL_URL),$p=g.SELF_HOSTED||g.DISABLE_ACCOUNT_PORTAL,vr=s(async t=>{if($p)return;let e={email:t},r=await Gp.post("/api/accounts/search",{body:e,headers:{"x-budibase-api-key":g.ACCOUNT_PORTAL_API_KEY}});if(r.status!==200)throw new Error(`Error getting account by email ${t}`);return(await r.json())[0]},"getAccount"),hi=s(async t=>{if($p)return;let e={tenantId:t},r=await Gp.post("/api/accounts/search",{body:e,headers:{"x-budibase-api-key":g.ACCOUNT_PORTAL_API_KEY}});if(r.status!==200)throw new Error(`Error getting account by tenantId ${t}`);return(await r.json())[0]},"getAccountByTenantId"),AP=s(async()=>{if($p)return;let t=await Gp.get("/api/status",{headers:{"x-budibase-api-key":g.ACCOUNT_PORTAL_API_KEY}}),e=await t.json();if(t.status!==200)throw new Error("Error getting status");return e},"getStatus");var Ai={};P(Ai,{UserDB:()=>Ut,addAppBuilder:()=>Y0,bulkGetGlobalUsersById:()=>uc,bulkUpdateGlobalUsers:()=>Ro,cleanseUserObject:()=>dm,creatorsInList:()=>Pr,doesUserExist:()=>q0,getAccountHolderFromUsers:()=>ac,getAllUserIds:()=>$0,getAllUsers:()=>V0,getById:()=>On,getCreatorCount:()=>j0,getExistingAccounts:()=>Si,getExistingPlatformUsers:()=>y_,getExistingTenantUsers:()=>E_,getFirstPlatformUser:()=>Io,getGlobalUserByAppPage:()=>w_,getGlobalUserByEmail:()=>Ot,getPlatformUsers:()=>nc,getUserCount:()=>Q0,hasAdminPermissions:()=>Nr,hasAppBuilderPermissions:()=>A_,hasBuilderPermissions:()=>Be,isAdmin:()=>Lt,isAdminOrBuilder:()=>S_,isAdminOrWorkspaceBuilder:()=>ic,isBuilder:()=>Ii,isCreatorAsync:()=>wo,isCreatorSync:()=>sc,isGlobalBuilder:()=>T_,paginatedUsers:()=>C_,removeAppBuilder:()=>z0,removePortalUserPermissions:()=>H0,searchExistingEmails:()=>om,searchGlobalUsersByApp:()=>I_,searchGlobalUsersByAppAccess:()=>lm,searchGlobalUsersByEmail:()=>R_,validateUniqueUser:()=>oc});var Yu={};P(Yu,{ActiveContentFileError:()=>Vu,BadRequestError:()=>mo,BudibaseError:()=>po,EmailUnavailableError:()=>er,FeatureDisabledError:()=>Qu,ForbiddenError:()=>qu,HTTPError:()=>Fe,NotFoundError:()=>$u,NotImplementedError:()=>Ku,UnexpectedError:()=>Gu,UsageLimitError:()=>ju,getErrorMessage:()=>MA,getPublicError:()=>Hu});var po=class extends Error{static{s(this,"BudibaseError")}constructor(e,r){super(e),this.code=r}};function MA(t){if(t==null)return"No error provided.";if(t instanceof Error)return t.message;if(typeof t=="string")return t;if(typeof t=="object"&&"message"in t)return String(t.message);try{let r=JSON.stringify(t);if(r!=="{}")return r}catch{}let e=String(t);return e!=="[object Object]"?e:"An unknown error occurred"}s(MA,"getErrorMessage");var Hu=s(t=>{let e;return t.code&&(e={code:t.code},t.getPublicError&&(e={...e,...t.getPublicError()})),e},"getPublicError"),Fe=class t extends po{static{s(this,"HTTPError")}constructor(e,r,n="http"){super(e,n),this.status=r}static async fromResponse(e){let r=await e.text(),n=r,i=e.status,o="http";try{let a=JSON.parse(r);n=a.error?.message||a.message,i=a.status??e.status,o=a.error?.code??e.statusText}catch{}return new t(n,i,o)}},Gu=class extends Fe{static{s(this,"UnexpectedError")}constructor(e){super(e,500)}},$u=class extends Fe{static{s(this,"NotFoundError")}constructor(e){super(e,404)}},mo=class extends Fe{static{s(this,"BadRequestError")}constructor(e){super(e,400)}},Vu=class extends mo{static{s(this,"ActiveContentFileError")}constructor(e){super(`File "${e}" contains active content which is not permitted`)}},qu=class extends Fe{static{s(this,"ForbiddenError")}constructor(e){super(e,403)}},Ku=class extends Fe{static{s(this,"NotImplementedError")}constructor(e){super(e,501)}},Qu=class extends Error{static{s(this,"FeatureDisabledError")}constructor(e){super(`Feature disabled: '${e}'`)}},ju=class extends Error{static{s(this,"UsageLimitError")}constructor(e){super(`Usage limit exceeded: '${e}'`)}},er=class extends Error{static{s(this,"EmailUnavailableError")}constructor(e){super(`Email already in use: '${e}'`)}};var Qp={};P(Qp,{PASSWORD_MAX_LENGTH:()=>qp,PASSWORD_MIN_LENGTH:()=>Vp,validatePassword:()=>Kp});var Vp=+(g.PASSWORD_MIN_LENGTH||12),qp=+(g.PASSWORD_MAX_LENGTH||512);function Kp(t){return!t||t.length<Vp?{valid:!1,error:`Password invalid. Minimum ${Vp} characters.`}:t.length>qp?{valid:!1,error:`Password invalid. Maximum ${qp} characters.`}:{valid:!0}}s(Kp,"validatePassword");var zu={};P(zu,{createASession:()=>_P,endSession:()=>OP,getSession:()=>Hp,getSessionsForUser:()=>ho,invalidateSessions:()=>An,updateSessionTTL:()=>jp});var BA=require("uuid");var WA=yu();function gi(t,e){return`${t}/${e}`}s(gi,"makeSessionID");async function ho(t){return t?(await(await Ar()).scan(t)).map(n=>n.value):(console.trace("Cannot get sessions for undefined userId"),[])}s(ho,"getSessionsForUser");async function An(t,e={}){try{let r=e?.reason||"unknown",n=e.sessionIds||[],i;if(n.length===0?i=(await ho(t)).map(a=>({key:gi(a.userId,a.sessionId)})):(n=Array.isArray(n)?n:[n],i=n.map(o=>({key:gi(t,o)}))),i&&i.length>0){let o=await Ar(),a=[];for(let u of i)a.push(o.delete(u.key));g.isTest()||di(`Invalidating sessions for ${t} (reason: ${r}) - ${i.map(u=>u.key).join(", ")}`),await Promise.all(a)}}catch(r){console.error(`Error invalidating sessions: ${r}`)}}s(An,"invalidateSessions");async function _P(t,e){let r=await ho(t),n=0;if(r.length>=3){let l=r.sort((h,m)=>new Date(h.createdAt).getTime()-new Date(m.createdAt).getTime()),d=r.length-3+1,f=l.slice(0,d).map(h=>h.sessionId);n=f.length,await An(t,{sessionIds:f,reason:"session limit exceeded"})}let i=await Ar(),o=e.sessionId,a=e.csrfToken?e.csrfToken:(0,BA.v4)(),u=gi(t,o),c={...e,csrfToken:a,createdAt:new Date().toISOString(),lastAccessedAt:new Date().toISOString(),userId:t};return await i.store(u,c,WA),{session:c,invalidatedSessionCount:n}}s(_P,"createASession");async function jp(t){let e=await Ar(),r=gi(t.userId,t.sessionId);t.lastAccessedAt=new Date().toISOString(),await e.store(r,t,WA)}s(jp,"updateSessionTTL");async function OP(t,e){await(await Ar()).delete(gi(t,e))}s(OP,"endSession");async function Hp(t,e){if(!t||!e)throw new Error(`Invalid session details - ${t} - ${e}`);let n=await(await Ar()).get(gi(t,e));if(!n)throw new Error(`Session not found - ${t} - ${e}`);return n}s(Hp,"getSession");var Ti={};P(Ti,{account:()=>QA,action:()=>jA,ai:()=>HA,analytics:()=>Yp,app:()=>YA,asyncEventQueue:()=>At,auditLog:()=>zA,auth:()=>rc,automation:()=>JA,backfill:()=>XA,backfillCache:()=>Zu,backup:()=>ZA,datasource:()=>e_,email:()=>t_,environmentVariable:()=>r_,group:()=>n_,identification:()=>_t,initAsyncEvents:()=>b0,installation:()=>yo,layout:()=>i_,license:()=>s_,org:()=>o_,plugin:()=>a_,processors:()=>tm,publishEvent:()=>S,query:()=>u_,resource:()=>c_,role:()=>Oo,rowAction:()=>l_,rows:()=>d_,screen:()=>f_,serve:()=>p_,shutdown:()=>x0,table:()=>m_,user:()=>We,view:()=>h_,workspace:()=>g_});var Yp={};P(Yp,{enabled:()=>IP});var IP=s(async()=>Ju(),"enabled");var At;function Xu(){At=new yt("systemEventQueue",{jobTags:s(t=>({"event.name":t.event}),"jobTags")})}s(Xu,"init");async function GA(){At&&await At.close()}s(GA,"shutdown");async function $A(t){At||Xu();let{event:e,identity:r}=t;lh.indexOf(e)!==-1&&r.tenantId&&await At.add(t)}s($A,"publishAsyncEvent");var Zu={};P(Zu,{end:()=>RP,isAlreadySent:()=>Xp,isBackfillingEvent:()=>Jp,recordEvent:()=>zp,start:()=>wP});var wP=s(async t=>DP({eventWhitelist:t}),"start"),zp=s(async(t,e)=>{let r=Zp(t,e);await gn(r,e,void 0,{useTenancy:!1})},"recordEvent"),RP=s(async()=>{await bP(),await xP()},"end"),CP=s(async()=>oo(Oe.BACKFILL_METADATA),"getBackfillMetadata"),DP=s(async t=>gn(Oe.BACKFILL_METADATA,t),"saveBackfillMetadata"),bP=s(async()=>{await ao(Oe.BACKFILL_METADATA)},"deleteBackfillMetadata"),xP=s(async()=>{let t=Zp(),e=await Fu(t);for(let r of e)await ao(r,{useTenancy:!1})},"clearEvents"),Jp=s(async t=>{let r=(await CP())?.eventWhitelist;return!!(r&&r.includes(t))},"isBackfillingEvent"),Xp=s(async(t,e)=>{let r=Zp(t,e);return!!await oo(r,{useTenancy:!1})},"isAlreadySent"),vP={"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}`},Zp=s((t,e)=>{let r,n=q();if(t){r=`${Oe.EVENTS}:${n}:${t}`;let i=vP[t],o=i?i(e):void 0;o&&(r=`${r}:${o}`)}else r=`${Oe.EVENTS}:${n}:*`;return r},"getEventKey");var tm={};P(tm,{init:()=>kP,processors:()=>rr});var em=g.SELF_HOSTED&&!g.isDev(),go=class{static{s(this,"LoggingProcessor")}async processEvent(e,r,n){em||console.log(`[audit] [identityType=${r.type}] ${e}`,n)}async identify(e){em||console.log("[audit] identified",e)}async identifyGroup(e){em||console.log("[audit] group identified",e)}async shutdown(){}};var Ei=class t{static{s(this,"AuditLogsProcessor")}static{this.auditLogsEnabled=!1}static init(e){t.auditLogsEnabled=!0;let r=e;return t.auditLogQueue=new yt("auditLogQueue",{jobTags:s(n=>({"event.name":n.event}),"jobTags")}),t.auditLogQueue.process(async n=>{await De(n.data.tenantId,async()=>{let i=n.data.properties;i.audited&&(i={...i,...i.audited},delete i.audited);let o={};g.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&&np(e)){let o=r.type==="user"?r.id:void 0;await t.auditLogQueue.add({event:e,properties:n,opts:{userId:o,timestamp:i,appId:Me(),hostInfo:r.hostInfo},tenantId:q()})}}async identify(){}async identifyGroup(){}async shutdown(){await t.auditLogQueue?.close()}};var VA=require("uuid");var NP=new Tn(g.INTERNAL_ACCOUNT_PORTAL_URL),yi=class t{static{s(this,"EventBrokerProcessor")}static init(e){t.getLicenseKeyFn=e}async processEvent(e,r,n,i){if(g.DISABLE_ACCOUNT_PORTAL)return;let o;if(g.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":g.ACCOUNT_PORTAL_API_KEY},r.tenantId&&(o["x-budibase-tenant-id"]=r.tenantId);let a=Me(),u={id:(0,VA.v4)(),type:e,identity:r,properties:{...n,version:g.VERSION,service:g.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 NP.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 Eo=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 PP=new go,LP=new Ei,UP=new yi;function kP(t,e){return yi.init(e),Ei.init(t)}s(kP,"init");var rr=new Eo([PP,LP,UP]);var ec={};P(ec,{checkInstallVersion:()=>BP,getInstall:()=>To,getInstallFromDB:()=>nm});var rm=W(require("semver"));var To=s(async()=>br(Oe.INSTALLATION,86400,nm,{useTenancy:!1}),"getInstall");async function MP(t){let e={_id:pe.PLATFORM_INFO.docs.install,installId:X(),version:g.VERSION};try{let r=await t.put(e);return e._rev=r.rev,e}catch(r){if(r.status===409)return nm();throw r}}s(MP,"createInstallDoc");var nm=s(async()=>je(pe.PLATFORM_INFO.name,async t=>{let e;try{e=await t.get(pe.PLATFORM_INFO.docs.install)}catch(r){if(r.status===404)e=await MP(t);else throw r}return e}),"getInstallFromDB"),FP=s(async t=>{try{await je(pe.PLATFORM_INFO.name,async e=>{let r=await To();r.version=t,await e.put(r),await pi(Oe.INSTALLATION)})}catch(e){if(e.status===409)return!1;throw e}return!0},"updateVersion"),BP=s(async()=>{let t=await To(),e=t.version,r=g.VERSION;try{if(e!==r){let n=rm.default.gt(r,e),i=rm.default.lt(r,e);await FP(r)&&(await vs({_id:t.installId,type:"installation"},async()=>{n?await yo.upgraded(e,r):i&&await yo.downgraded(e,r)}),await _t.identifyInstallationGroup(t.installId))}}catch(n){n?.message?.includes("Invalid Version")?mn(`Invalid version "${r}" - is it semver?`):mn("Failed to retrieve version",n)}},"checkInstallVersion");var WP=s(async()=>{let t=ff(),e=_o(),r;if(t?r=t.type:r="tenant",r==="installation"){let n=await _n(),i=So();return{id:qA(n,r),hosting:i,type:r,installationId:n,environment:e}}else if(r==="tenant"){let n=await _n(),i=await tc(q()),o=So();return{id:qA(i,r),type:r,hosting:o,installationId:n,tenantId:i,realTenantId:q(),environment:e}}else if(r==="user"){let n=t,i=await tc(q()),o=await _n(),a=n.account,u;return a?u=a.hosting:u=So(),{id:n._id,type:r,hosting:u,installationId:o,tenantId:i,environment:e,realTenantId:q(),hostInfo:n.hostInfo}}else throw new Error("Unknown identity type")},"getCurrentIdentity"),GP=s(async(t,e)=>{let r=t,n="installation",i=So(),o=g.VERSION,a=_o(),u={id:r,type:n,hosting:i,version:o,environment:a};await im(u,e),await Ao({...u,id:`$${n}_${r}`},e)},"identifyInstallationGroup"),$P=s(async(t,e,r,n=g.VERSION)=>{let i=await tc(t),o="tenant",a=await _n(),u=_o(),c={id:i,type:o,hosting:e,environment:u,installationId:a,createdAt:r,createdVersion:n};await im(c,r),await Ao({...c,id:`$${o}_${i}`},r)},"identifyTenantGroup"),VP=s(async(t,e,r)=>{let n=t._id,i=await tc(t.tenantId),o="user",a=Be(t),u=Nr(t),c;jo(t)&&(c=t.providerType);let d=(await Si([t.email])).length>0,f=!!e&&d&&e.verified,h=await _n(),m=e?e.hosting:So(),y=_o();await Ao({id:n,type:o,hosting:m,installationId:h,tenantId:i,verified:f,accountHolder:d,providerType:c,builder:a,admin:u,environment:y},r)},"identifyUser"),qP=s(async t=>{let e=t.accountId,r=t.tenantId,n="user",i=Qo(t)?t.providerType:void 0,o=t.verified,a=!0,u=t.hosting,c=await _n(),l=_o();if(Ko(t)){let f=await Ot(t.email);f?._id&&(e=f._id)}await Ao({id:e,type:n,hosting:u,installationId:c,tenantId:r,providerType:i,verified:o,accountHolder:a,environment:l})},"identifyAccount"),Ao=s(async(t,e)=>{await rr.identify(t,e)},"identify"),im=s(async(t,e)=>{await rr.identifyGroup(t,e)},"identifyGroup"),_o=s(()=>g.isDev()?"development":g.DEPLOYMENT_ENVIRONMENT,"getDeploymentEnvironment"),So=s(()=>g.SELF_HOSTED?"self":"cloud","getHostingFromEnv"),_n=s(async()=>KP()?"account-portal":(await To()).installId,"getInstallationId"),tc=s(async t=>g.SELF_HOSTED?KA(t):t,"getEventTenantId"),KA=s(async t=>De(t,()=>br(Oe.UNIQUE_TENANT_ID,86400,async()=>{let e=z(),r=await _i(),n;return r.config.uniqueTenantId?r.config.uniqueTenantId:(n=`${X()}_${t}`,r.config.uniqueTenantId=n,r.config.createdVersion=g.VERSION,await e.put(r),n)})),"getUniqueTenantId"),KP=s(()=>g.SERVICE==="account-portal","isAccountPortal"),qA=s((t,e)=>e==="installation"||e==="tenant"?`$${e}_${t}`:t,"formatDistinctId"),_t={getCurrentIdentity:WP,identifyInstallationGroup:GP,identifyTenantGroup:$P,identifyUser:VP,identifyAccount:qP,identify:Ao,identifyGroup:im,getInstallationId:_n,getUniqueTenantId:KA};var S=s(async(t,e,r,n)=>{let i=n||await _t.getCurrentIdentity();if(!(n?!1:await Jp(t))){await $A({event:t,identity:i,properties:e,timestamp:r}),await rr.processEvent(t,i,e,r);return}await Xp(t,e)||(await rr.processEvent(t,i,e,r),await zp(t,e))},"publishEvent");async function QP(t,e){let r={tenantId:t.tenantId};await S("account:created",r,void 0,e)}s(QP,"created");async function jP(t){let e={tenantId:t.tenantId};await S("account:deleted",e)}s(jP,"deleted");async function HP(t){let e={tenantId:t.tenantId};await S("account:verified",e)}s(HP,"verified");var QA={created:QP,deleted:jP,verified:HP};function YP(t,e){S("action:automation_step:executed",t,e).catch(r=>{console.error("automationStepExecuted telemetry failed",{action:t,err:r})})}s(YP,"automationStepExecuted");function zP(t){S("action:automation_step:failed",t).catch(e=>{console.error("automationStepFailed telemetry failed",{action:t,err:e})})}s(zP,"automationStepFailed");function JP(t,e){S("action:crud:executed",t,e).catch(r=>{console.error("crudExecuted telemetry failed",{action:t,err:r})})}s(JP,"crudExecuted");function XP(t){S("action:crud:failed",t).catch(e=>{console.error("crudFailed telemetry failed",{action:t,err:e})})}s(XP,"crudFailed");function ZP(t,e){S("action:ai_agent:executed",t,e).catch(r=>{console.error("aiAgentExecuted telemetry failed",{action:t,err:r})})}s(ZP,"aiAgentExecuted");function eL(t){S("action:ai_agent:failed",t).catch(e=>{console.error("aiAgentFailed telemetry failed",{action:t,err:e})})}s(eL,"aiAgentFailed");var jA={aiAgentExecuted:ZP,aiAgentFailed:eL,automationStepExecuted:YP,automationStepFailed:zP,crudExecuted:JP,crudFailed:XP};function tL(t,e){let r={configId:t._id,audited:{name:t.name}};S("ai:config:created",r,e).catch(n=>{console.error("configCreated telemetry failed",{configId:t._id,err:n})})}s(tL,"configCreated");function rL(t){let e={configId:t._id,audited:{name:t.name}};S("ai:config:updated",e).catch(r=>{console.error("configUpdated telemetry failed",{configId:t._id,err:r})})}s(rL,"configUpdated");function nL(t){let e={configId:t._id,audited:{name:t.name}};S("ai:config:deleted",e).catch(r=>{console.error("configDeleted telemetry failed",{configId:t._id,err:r})})}s(nL,"configDeleted");function iL(t){let e={agentId:t._id,audited:{name:t.name}};S("ai:agent:created",e).catch(r=>{console.error("agentCreated telemetry failed",{agentId:t._id,err:r})})}s(iL,"agentCreated");function sL(t){let e={agentId:t._id,audited:{name:t.name}};S("ai:agent:updated",e).catch(r=>{console.error("agentUpdated telemetry failed",{agentId:t._id,err:r})})}s(sL,"agentUpdated");function oL(t){let e={agentId:t._id,audited:{name:t.name}};S("ai:agent:deleted",e).catch(r=>{console.error("agentDeleted telemetry failed",{agentId:t._id,err:r})})}s(oL,"agentDeleted");function aL(t){S("rag:file:uploaded",t).catch(e=>{console.error("ragFileUploaded telemetry failed",{event:t,err:e})})}s(aL,"ragFileUploaded");function uL(t){S("rag:file:deleted",t).catch(e=>{console.error("ragFileDeleted telemetry failed",{event:t,err:e})})}s(uL,"ragFileDeleted");function cL(t){S("rag:file:sharepoint:connected",t).catch(e=>{console.error("ragFileSharePointConnected telemetry failed",{event:t,err:e})})}s(cL,"ragFileSharePointConnected");function lL(t){S("rag:file:sharepoint:disconnected",t).catch(e=>{console.error("ragFileSharePointDisconnected telemetry failed",{event:t,err:e})})}s(lL,"ragFileSharePointDisconnected");function dL(t){S("rag:file:processed",t).catch(e=>{console.error("ragFileProcessed telemetry failed",{event:t,err:e})})}s(dL,"ragFileProcessed");function fL(t){S("rag:file:sharepoint:sync",t).catch(e=>{console.error("ragFileSharePointSync telemetry failed",{event:t,err:e})})}s(fL,"ragFileSharePointSync");var HA={configCreated:tL,configUpdated:rL,configDeleted:nL,agentCreated:iL,agentUpdated:sL,agentDeleted:oL,ragFileUploaded:aL,ragFileDeleted:uL,ragFileSharePointConnected:cL,ragFileSharePointDisconnected:lL,ragFileSharePointSync:fL,ragFileProcessed:dL};var pL=s(async(t,e)=>{let r={appId:t.appId,version:t.version,audited:{name:t.name}};await S("app:created",r,e)},"created");async function mL(t){let e={appId:t.appId,version:t.version,audited:{name:t.name}};await S("app:updated",e)}s(mL,"updated");async function hL(t){let e={appId:t.appId,audited:{name:t.name}};await S("app:deleted",e)}s(hL,"deleted");async function gL(t,e){let r={appId:t.appId,audited:{name:t.name}};await S("app:published",r,e)}s(gL,"published");async function EL(t){let e={appId:t.appId,audited:{name:t.name}};await S("app:unpublished",e)}s(EL,"unpublished");async function yL(t){let e={appId:t.appId,audited:{name:t.name}};await S("app:file:imported",e)}s(yL,"fileImported");async function TL(t,e){let r={duplicateAppId:e,appId:t.appId,audited:{name:t.name}};await S("app:duplicated",r)}s(TL,"duplicated");async function SL(t,e){let r={appId:t.appId,templateKey:e,audited:{name:t.name}};await S("app:template:imported",r)}s(SL,"templateImported");async function AL(t,e,r){let n={appId:t.appId,currentVersion:e,updatedToVersion:r,audited:{name:t.name}};await S("app:version:updated",n)}s(AL,"versionUpdated");async function _L(t,e,r){let n={appId:t.appId,currentVersion:e,revertedToVersion:r,audited:{name:t.name}};await S("app:version:reverted",n)}s(_L,"versionReverted");async function OL(t){let e={appId:t.appId,audited:{name:t.name}};await S("app:reverted",e)}s(OL,"reverted");async function IL(t){let e={appId:t.appId,audited:{name:t.name}};await S("app:exported",e)}s(IL,"exported");var YA={created:pL,updated:mL,deleted:hL,published:gL,unpublished:EL,fileImported:yL,duplicated:TL,templateImported:SL,versionUpdated:AL,versionReverted:_L,reverted:OL,exported:IL};async function wL(t){let e={filters:t};await S("audit_log:filtered",e)}s(wL,"filtered");async function RL(t){let e={filters:t};await S("audit_log:downloaded",e)}s(RL,"downloaded");var zA={filtered:wL,downloaded:RL};async function CL(t,e){let n={userId:(await _t.getCurrentIdentity()).id,source:t,audited:{email:e}};await S("auth:login",n)}s(CL,"login");async function DL(t){let r={userId:(await _t.getCurrentIdentity()).id,audited:{email:t}};await S("auth:logout",r)}s(DL,"logout");async function bL(t,e){let r={type:t};await S("auth:sso:created",r,e)}s(bL,"SSOCreated");async function xL(t){let e={type:t};await S("auth:sso:updated",e)}s(xL,"SSOUpdated");async function vL(t,e){let r={type:t};await S("auth:sso:activated",r,e)}s(vL,"SSOActivated");async function NL(t){let e={type:t};await S("auth:sso:deactivated",e)}s(NL,"SSODeactivated");var rc={login:CL,logout:DL,SSOCreated:bL,SSOUpdated:xL,SSOActivated:vL,SSODeactivated:NL};async function PL(t,e){let r={appId:t.appId,automationId:t._id,triggerId:t.definition?.trigger?.id,triggerType:t.definition?.trigger?.stepId,audited:{name:t.name}};await S("automation:created",r,e)}s(PL,"created");async function LL(t){let e={appId:t.appId,automationId:t._id,triggerId:t.definition?.trigger?.id,triggerType:t.definition?.trigger?.stepId};await S("automation:trigger:updated",e)}s(LL,"triggerUpdated");async function UL(t){let e={appId:t.appId,automationId:t._id,triggerId:t.definition?.trigger?.id,triggerType:t.definition?.trigger?.stepId,audited:{name:t.name}};await S("automation:deleted",e)}s(UL,"deleted");async function kL(t){let e={appId:t.appId,automationId:t._id,triggerId:t.definition?.trigger?.id,triggerType:t.definition?.trigger?.stepId};await S("automation:tested",e)}s(kL,"tested");var ML=s(async(t,e)=>{let r={count:t};await S("automations:run",r,e)},"run");async function FL(t,e,r){let n={appId:t.appId,automationId:t._id,triggerId:t.definition?.trigger?.id,triggerType:t.definition?.trigger?.stepId,stepId:e.id,stepType:e.stepId,audited:{name:t.name}};await S("automation:step:created",n,r)}s(FL,"stepCreated");async function BL(t,e){let r={appId:t.appId,automationId:t._id,triggerId:t.definition?.trigger?.id,triggerType:t.definition?.trigger?.stepId,stepId:e.id,stepType:e.stepId,audited:{name:t.name}};await S("automation:step:deleted",r)}s(BL,"stepDeleted");var JA={created:PL,triggerUpdated:LL,deleted:UL,tested:kL,run:ML,stepCreated:FL,stepDeleted:BL};var Oi=!g.SELF_HOSTED&&!g.isDev();async function WL(t){Oi||await S("app:backfill:succeeded",t)}s(WL,"appSucceeded");async function GL(t){if(Oi)return;let e={error:JSON.stringify(t,Object.getOwnPropertyNames(t))};await S("app:backfill:failed",e)}s(GL,"appFailed");async function $L(t){Oi||await S("tenant:backfill:succeeded",t)}s($L,"tenantSucceeded");async function VL(t){if(Oi)return;let e={error:JSON.stringify(t,Object.getOwnPropertyNames(t))};await S("tenant:backfill:failed",e)}s(VL,"tenantFailed");async function qL(){if(Oi)return;let t={};await S("installation:backfill:succeeded",t)}s(qL,"installationSucceeded");async function KL(t){if(Oi)return;let e={error:JSON.stringify(t,Object.getOwnPropertyNames(t))};await S("installation:backfill:failed",e)}s(KL,"installationFailed");var XA={appSucceeded:WL,appFailed:GL,tenantSucceeded:$L,tenantFailed:VL,installationSucceeded:qL,installationFailed:KL};async function QL(t){let e={appId:t.appId,restoreId:t._id,backupCreatedAt:t.timestamp,name:t.name};await S("app:backup:restored",e)}s(QL,"workspaceBackupRestored");async function jL(t,e,r,n,i){let o={appId:t,backupId:e,type:r,trigger:n,name:i};await S("app:backup:triggered",o)}s(jL,"workspaceBackupTriggered");var ZA={workspaceBackupRestored:QL,workspaceBackupTriggered:jL};function sm(t){return!Object.values(Go).includes(t.source)}s(sm,"isCustom");async function HL(t,e){let r={datasourceId:t._id,source:t.source,custom:sm(t)};await S("datasource:created",r,e)}s(HL,"created");async function YL(t){let e={datasourceId:t._id,source:t.source,custom:sm(t)};await S("datasource:updated",e)}s(YL,"updated");async function zL(t){let e={datasourceId:t._id,source:t.source,custom:sm(t)};await S("datasource:deleted",e)}s(zL,"deleted");var e_={created:HL,updated:YL,deleted:zL};async function JL(t){let e={};await S("email:smtp:created",e,t)}s(JL,"SMTPCreated");async function XL(){let t={};await S("email:smtp:updated",t)}s(XL,"SMTPUpdated");var t_={SMTPCreated:JL,SMTPUpdated:XL};async function ZL(t,e){let r={name:t,environments:e};await S("environment_variable:created",r)}s(ZL,"created");async function eU(t){let e={name:t};await S("environment_variable:deleted",e)}s(eU,"deleted");async function tU(t){let e={userId:t};await S("environment_variable:upgrade_panel_opened",e)}s(tU,"upgradePanelOpened");var r_={created:ZL,deleted:eU,upgradePanelOpened:tU};async function rU(t,e){let r={groupId:t._id,viaScim:Et(),audited:{name:t.name}};await S("user_group:created",r,e)}s(rU,"created");async function nU(t){let e={groupId:t._id,viaScim:Et(),audited:{name:t.name}};await S("user_group:updated",e)}s(nU,"updated");async function iU(t){let e={groupId:t._id,viaScim:Et(),audited:{name:t.name}};await S("user_group:deleted",e)}s(iU,"deleted");async function sU(t,e,r){let n={count:t,groupId:e._id,userIds:r,viaScim:Et(),audited:{name:e.name}};await S("user_group:user_added",n)}s(sU,"usersAdded");async function oU(t,e,r){let n={count:t,groupId:e._id,userIds:r,viaScim:Et(),audited:{name:e.name}};await S("user_group:users_deleted",n)}s(oU,"usersDeleted");async function aU(t){let e={groupId:t,onboarding:!0};await S("user_group:onboarding_added",e)}s(aU,"createdOnboarding");async function uU(t){let e={permissions:t.roles,groupId:t._id,audited:{name:t.name}};await S("user_group:permissions_edited",e)}s(uU,"permissionsEdited");var n_={created:rU,updated:nU,deleted:iU,usersAdded:sU,usersDeleted:oU,createdOnboarding:aU,permissionsEdited:uU};async function cU(t){let e={currentVersion:t};await S("installation:version:checked",e)}s(cU,"versionChecked");async function lU(t,e){let r={from:t,to:e};await S("installation:version:upgraded",r)}s(lU,"upgraded");async function dU(t,e){let r={from:t,to:e};await S("installation:version:downgraded",r)}s(dU,"downgraded");async function fU(){let t={};await S("installation:firstStartup",t)}s(fU,"firstStartup");var yo={versionChecked:cU,upgraded:lU,downgraded:dU,firstStartup:fU};async function pU(t,e){let r={layoutId:t._id};await S("layout:created",r,e)}s(pU,"created");async function mU(t){let e={layoutId:t};await S("layout:deleted",e)}s(mU,"deleted");var i_={created:pU,deleted:mU};async function hU(t,e){let r={accountId:t.accountId,...e};await S("license:plan:changed",r)}s(hU,"planChanged");async function gU(t){let e={accountId:t.accountId};await S("license:activated",e)}s(gU,"activated");async function EU(t){let e={accountId:t.accountId};await S("license:checkout:opened",e)}s(EU,"checkoutOpened");async function yU(t){let e={accountId:t.accountId};await S("license:checkout:success",e)}s(yU,"checkoutSuccess");async function TU(t){let e={accountId:t.accountId};await S("license:portal:opened",e)}s(TU,"portalOpened");async function SU(t){let e={accountId:t.accountId};await S("license:payment:failed",e)}s(SU,"paymentFailed");async function AU(t){let e={accountId:t.accountId};await S("license:payment:recovered",e)}s(AU,"paymentRecovered");var s_={planChanged:hU,activated:gU,checkoutOpened:EU,checkoutSuccess:yU,portalOpened:TU,paymentFailed:SU,paymentRecovered:AU};async function _U(t){let e={};await S("org:info:name:updated",e,t)}s(_U,"nameUpdated");async function OU(t){let e={};await S("org:info:logo:updated",e,t)}s(OU,"logoUpdated");async function IU(t){let e={};await S("org:platformurl:updated",e,t)}s(IU,"platformURLUpdated");async function wU(){let t={};await S("analytics:opt:out",t)}s(wU,"analyticsOptOut");async function RU(){let t={};await S("analytics:opt:out",t)}s(RU,"analyticsOptIn");var o_={nameUpdated:_U,logoUpdated:OU,platformURLUpdated:IU,analyticsOptOut:wU,analyticsOptIn:RU};async function CU(t){let e={type:t.schema.type,name:t.name,description:t.description,version:t.version};await S("plugin:init",e)}s(CU,"init");async function DU(t){let e={pluginId:t._id,type:t.schema.type,source:t.source,name:t.name,description:t.description,version:t.version};await S("plugin:imported",e)}s(DU,"imported");async function bU(t){let e={pluginId:t._id,type:t.schema.type,name:t.name,description:t.description,version:t.version};await S("plugin:deleted",e)}s(bU,"deleted");var a_={init:CU,imported:DU,deleted:bU};var xU=s(async(t,e,r)=>{let n={queryId:e._id,datasourceId:t._id,source:t.source,queryVerb:e.queryVerb};await S("query:created",n,r)},"created"),vU=s(async(t,e)=>{let r={queryId:e._id,datasourceId:t._id,source:t.source,queryVerb:e.queryVerb};await S("query:updated",r)},"updated"),NU=s(async(t,e,r)=>{let n={queryId:e._id,datasourceId:t._id,source:t.source,queryVerb:e.queryVerb,appId:r};await S("query:deleted",n)},"deleted"),PU=s(async(t,e,r)=>{let n={datasourceId:t._id,source:t.source,count:r,importSource:e};await S("query:import",n)},"imported"),LU=s(async(t,e)=>{let r={count:t};await S("queries:run",r,e)},"run"),UU=s(async(t,e)=>{let r={queryId:e.queryId,datasourceId:t._id,source:t.source,queryVerb:e.queryVerb};await S("query:previewed",r)},"previewed"),u_={created:xU,updated:vU,deleted:NU,imported:PU,run:LU,previewed:UU};async function kU({resource:t,fromWorkspace:e,toWorkspace:r},n){let i={resource:t,fromWorkspace:e,toWorkspace:r};await S("resource:copied_to_workspace",i,n)}s(kU,"duplicatedToWorkspace");var c_={duplicatedToWorkspace:kU};async function MU(t,e){let r={roleId:t._id,permissionId:t.permissionId,inherits:t.inherits};await S("role:created",r,e)}s(MU,"created");async function FU(t){let e={roleId:t._id,permissionId:t.permissionId,inherits:t.inherits};await S("role:updated",e)}s(FU,"updated");async function BU(t){let e={roleId:t._id,permissionId:t.permissionId,inherits:t.inherits};await S("role:deleted",e)}s(BU,"deleted");async function WU(t,e,r){let n={userId:t._id,roleId:e};await S("role:assigned",n,r)}s(WU,"assigned");async function GU(t,e){let r={userId:t._id,roleId:e};await S("role:unassigned",r)}s(GU,"unassigned");var Oo={created:MU,updated:FU,deleted:BU,assigned:WU,unassigned:GU};async function $U(t,e){await S("row_action:created",t,e)}s($U,"created");var l_={created:$U};var VU=s(async(t,e)=>{let r={count:t};await S("rows:created",r,e)},"created"),qU=s(async(t,e)=>{let r={tableId:t._id,count:e};await S("rows:imported",r)},"imported"),d_={created:VU,imported:qU};async function KU(t,e){let r={layoutId:t.layoutId,screenId:t._id,roleId:t.routing.roleId,audited:{name:t.routing?.route}};await S("screen:created",r,e)}s(KU,"created");async function QU(t){let e={layoutId:t.layoutId,screenId:t._id,roleId:t.routing.roleId,audited:{name:t.routing?.route}};await S("screen:deleted",e)}s(QU,"deleted");var f_={created:KU,deleted:QU};async function jU(t){let e={timezone:t};await S("served:builder",e)}s(jU,"servedBuilder");async function HU(t,e,r){let n={appVersion:t.version,timezone:e,embed:r===!0};await S("served:app",n)}s(HU,"servedApp");async function YU(t,e){let r={appId:t.appId,appVersion:t.version,timezone:e};await S("served:app:preview",r)}s(YU,"servedAppPreview");var p_={servedBuilder:jU,servedApp:HU,servedAppPreview:YU};async function zU(t,e){let r={tableId:t._id,audited:{name:t.name}};await S("table:created",r,e)}s(zU,"created");async function JU(t,e){let r,n;for(let o in e.schema)if(!t.schema[o]){let a=e.schema[o];"default"in a&&a.default!=null&&(r=!0),a.type==="ai"&&(n=a.operation)}let i={tableId:e._id,defaultValues:r,aiColumn:n,audited:{name:e.name}};(r||n)&&await S("table:updated",i)}s(JU,"updated");async function XU(t,e){let r={tableId:t._id,audited:{name:t.name},appId:e};await S("table:deleted",r)}s(XU,"deleted");async function ZU(t,e){let r={tableId:t._id,format:e,audited:{name:t.name}};await S("table:exported",r)}s(ZU,"exported");async function e0(t){let e={tableId:t._id,audited:{name:t.name}};await S("table:imported",e)}s(e0,"imported");var m_={created:zU,updated:JU,deleted:XU,exported:ZU,imported:e0};async function t0(t,e){let r={userId:t._id,viaScim:Et(),audited:{email:t.email}};await S("user:created",r,e)}s(t0,"created");async function r0(t){let e={userId:t._id,viaScim:Et(),audited:{email:t.email}};await S("user:updated",e)}s(r0,"updated");async function n0(t){let e={userId:t._id,viaScim:Et(),audited:{email:t.email}};await S("user:deleted",e)}s(n0,"deleted");async function i0(t,e){let r={userId:t._id,audited:{email:t.email}};await S("user:admin:assigned",r,e)}s(i0,"permissionAdminAssigned");async function s0(t){let e={userId:t._id,audited:{email:t.email}};await S("user:admin:removed",e)}s(s0,"permissionAdminRemoved");async function o0(t,e){let r={userId:t._id,audited:{email:t.email}};await S("user:builder:assigned",r,e)}s(o0,"permissionBuilderAssigned");async function a0(t){let e={userId:t._id,audited:{email:t.email}};await S("user:builder:removed",e)}s(a0,"permissionBuilderRemoved");async function u0(t){let e={audited:{email:t}};await S("user:invited",e)}s(u0,"invited");async function c0(t){let e={userId:t._id,audited:{email:t.email}};await S("user:invite:accepted",e)}s(c0,"inviteAccepted");async function l0(t){let e={userId:t._id,audited:{email:t.email}};await S("user:password:force:reset",e)}s(l0,"passwordForceReset");async function d0(t){let e={userId:t._id,audited:{email:t.email}};await S("user:password:updated",e)}s(d0,"passwordUpdated");async function f0(t){let e={userId:t._id,audited:{email:t.email}};await S("user:password:reset:requested",e)}s(f0,"passwordResetRequested");async function p0(t){let e={userId:t._id,audited:{email:t.email}};await S("user:password:reset",e)}s(p0,"passwordReset");async function m0(t){let e={users:t};await S("user:data:collaboration",e)}s(m0,"dataCollaboration");var We={created:t0,updated:r0,deleted:n0,permissionAdminAssigned:i0,permissionAdminRemoved:s0,permissionBuilderAssigned:o0,permissionBuilderRemoved:a0,invited:u0,inviteAccepted:c0,passwordForceReset:l0,passwordUpdated:d0,passwordResetRequested:f0,passwordReset:p0,dataCollaboration:m0};async function h0(t,e){let r={name:t.name,type:t.type,tableId:t.tableId};await S("view:created",r,e)}s(h0,"created");async function g0(t){let e={tableId:t.tableId};await S("view:updated",e)}s(g0,"updated");async function E0(t,e){let r={...Ue.views.isV2(t)?{id:t.id,tableId:t.tableId,appId:e}:{}};await S("view:deleted",r)}s(E0,"deleted");async function y0(t,e){let r={tableId:t._id,format:e};await S("view:exported",r)}s(y0,"exported");async function T0({tableId:t,filterGroups:e},r){let n={tableId:t,filterGroups:e};await S("view:filter:created",n,r)}s(T0,"filterCreated");async function S0({tableId:t,filterGroups:e}){let r={tableId:t,filterGroups:e};await S("view:filter:updated",r)}s(S0,"filterUpdated");async function A0(t){let e={tableId:t.tableId};await S("view:filter:deleted",e)}s(A0,"filterDeleted");async function _0({tableId:t,calculationType:e},r){let n={tableId:t,calculation:e};await S("view:calculation:created",n,r)}s(_0,"calculationCreated");async function O0(t){let e={tableId:t.tableId,calculation:t.calculation};await S("view:calculation:updated",e)}s(O0,"calculationUpdated");async function I0(t){let e={tableId:t.tableId,calculation:t.calculation};await S("view:calculation:deleted",e)}s(I0,"calculationDeleted");async function w0(t,e){let r={tableId:t};await S("view:join:created",r,e)}s(w0,"viewJoinCreated");var h_={created:h0,updated:g0,deleted:E0,exported:y0,filterCreated:T0,filterUpdated:S0,filterDeleted:A0,calculationCreated:_0,calculationUpdated:O0,calculationDeleted:I0,viewJoinCreated:w0};async function R0(t,e){let r={workspaceAppId:t._id,audited:{name:t.name},appId:e};S("workspace_app:created",r).catch(n=>{console.error("appCreated telemetry failed",{workspaceAppId:t._id,err:n})})}s(R0,"appCreated");async function C0(t,e){let r={workspaceAppId:t._id,audited:{name:t.name},appId:e};S("workspace_app:updated",r).catch(n=>{console.error("appUpdated telemetry failed",{workspaceAppId:t._id,err:n})})}s(C0,"appUpdated");async function D0(t,e){let r={workspaceAppId:t._id,audited:{name:t.name},appId:e};S("workspace_app:deleted",r).catch(n=>{console.error("appDeleted telemetry failed",{workspaceAppId:t._id,err:n})})}s(D0,"appDeleted");var g_={appCreated:R0,appUpdated:C0,appDeleted:D0};function b0(){}s(b0,"initAsyncEvents");var x0=s(async()=>{await rr.shutdown(),console.log("Events shutdown")},"shutdown");var am={};P(am,{creatorsInList:()=>Pr,getAccountHolderFromUsers:()=>ac,hasAdminPermissions:()=>Nr,hasAppBuilderPermissions:()=>A_,hasBuilderPermissions:()=>Be,isAdmin:()=>Lt,isAdminOrBuilder:()=>S_,isAdminOrWorkspaceBuilder:()=>ic,isBuilder:()=>Ii,isCreatorAsync:()=>wo,isCreatorSync:()=>sc,isGlobalBuilder:()=>T_,validateUniqueUser:()=>oc});async function om(t){let e=[],r=await E_(t);e.push(...r.map(a=>a.email));let n=await y_(t);e.push(...n.map(a=>a._id));let i=await Si(t);e.push(...i.map(a=>a.email));let o=await Mp(t);return e.push(...o.map(a=>a.email)),[...new Set(e.map(a=>a.toLowerCase()))]}s(om,"searchExistingEmails");async function nc(t){return await Vs("platform_users_lowercase_2",{keys:[t.toLowerCase()],include_docs:!0})}s(nc,"getPlatformUsers");async function Io(t){return(await nc(t))[0]??null}s(Io,"getFirstPlatformUser");async function E_(t){let r={keys:t.map(i=>i.toLowerCase()),include_docs:!0},n={arrayResponse:!0};return await Ht("by_email2",r,void 0,n)}s(E_,"getExistingTenantUsers");async function y_(t){let r={keys:t.map(n=>n.toLowerCase()),include_docs:!0};return await Vs("platform_users_lowercase_2",r)}s(y_,"getExistingPlatformUsers");async function Si(t){let r={keys:t.map(n=>n.toLowerCase()),include_docs:!0};return await Vs("account_by_email",r)}s(Si,"getExistingAccounts");var Ii=ke.users.isBuilder,Lt=ke.users.isAdmin,T_=ke.users.isGlobalBuilder,S_=ke.users.isAdminOrBuilder,Nr=ke.users.hasAdminPermissions,Be=ke.users.hasBuilderPermissions,A_=ke.users.hasAppBuilderPermissions,ic=ke.users.isAdminOrWorkspaceBuilder;async function Pr(t,e){let r=[...new Set(t.filter(i=>i.userGroups).flatMap(i=>i.userGroups))];return e=await z().getMultiple(r,{allowMissing:!0}),t.map(i=>sc(i,e))}s(Pr,"creatorsInList");async function wo(t){let e=[];return t.userGroups&&(e=await z().getMultiple(t.userGroups)),sc(t,e)}s(wo,"isCreatorAsync");function sc(t,e){let r=ke.users.isCreator(t);return!r&&t?v0(t,e):r}s(sc,"isCreatorSync");function v0(t,e){let r=e?.filter(n=>t.userGroups?.indexOf(n._id)!==-1);return r&&r.length>0?r.some(n=>Object.values(n.roles||{}).includes("CREATOR")):!1}s(v0,"isCreatorByGroupMembership");async function oc(t,e){if(g.MULTI_TENANCY){let r=await Io(t);if(r!=null&&r.tenantId!==e)throw new er(t)}if(!g.SELF_HOSTED&&!g.DISABLE_ACCOUNT_PORTAL){let r=await vr(t);if(r&&r.verified&&r.tenantId!==e)throw new er(t)}}s(oc,"validateUniqueUser");async function ac(t){if(!g.SELF_HOSTED&&!g.DISABLE_ACCOUNT_PORTAL){let e=await Si(t.map(r=>r.email));return t.find(r=>e.map(n=>n.email).includes(r.email))}}s(ac,"getAccountHolderFromUsers");var um=s(async t=>{await We.deleted(t),Be(t)&&await We.permissionBuilderRemoved(t),Nr(t)&&await We.permissionAdminRemoved(t)},"handleDeleteEvents"),N0=s(async(t,e,r)=>{for(let[n,i]of Object.entries(e))(!r||r[n]!==i)&&await Oo.assigned(t,i)},"assignAppRoleEvents"),P0=s(async(t,e,r)=>{if(r)for(let[n,i]of Object.entries(r))(!e||e[n]!==i)&&await Oo.unassigned(t,i)},"unassignAppRoleEvents"),L0=s(async(t,e)=>{let r=t.roles,n=e?.roles;await N0(t,r,n),await P0(t,r,n)},"handleAppRoleEvents"),cm=s(async(t,e,r)=>{let n=r;!n&&!g.SELF_HOSTED&&!g.DISABLE_ACCOUNT_PORTAL&&(n=await hi(q())),await _t.identifyUser(t,n),e?(await We.updated(t),k0(t,e)&&await We.permissionBuilderRemoved(t),F0(t,e)&&await We.permissionAdminRemoved(t),!e.forceResetPassword&&t.forceResetPassword&&t.password&&await We.passwordForceReset(t),t.password!==e.password&&await We.passwordUpdated(t)):await We.created(t),U0(t,e)&&await We.permissionBuilderAssigned(t),M0(t,e)&&await We.permissionAdminAssigned(t),await L0(t,e)},"handleSaveEvents"),U0=s((t,e)=>__(t,e,Be),"isAddingBuilder"),k0=s((t,e)=>O_(t,e,Be),"isRemovingBuilder"),M0=s((t,e)=>__(t,e,Nr),"isAddingAdmin"),F0=s((t,e)=>O_(t,e,Nr),"isRemovingAdmin"),__=s((t,e,r)=>!(!r(t)||e&&r(e)),"isAddingPermission"),O_=s((t,e,r)=>!(r(t)||!e||!r(e)),"isRemovingPermission");var W0=s(async t=>{let e=t._id;await St.removeUser(t),await um(t),await nr.invalidateUser(e),await An(e,{reason:"bulk-deletion"})},"bulkDeleteProcessing"),Ut=class t{static{s(this,"UserDB")}static init(e,r,n){t.quotas=e,t.groups=r,t.features=n}static async isPreventPasswordActions(e,r){return g.ENABLE_SSO_MAINTENANCE_MODE&&Lt(e)?!1:await t.features.isSSOEnforced()||jo(e)?!0:(r||(r=await hi(q())),!!(r&&r.email===e.email&&Qo(r)))}static async buildUser(e,r={hashPassword:!0,requirePassword:!0},n,i,o){let{password:a,_id:u}=e;i&&!i.password&&(r.requirePassword=!1);let c;if(a&&a!==i?.password){if(await t.isPreventPasswordActions(e,o))throw new Fe("Password change is disabled for this user",400);if(!r.skipPasswordValidation){let f=Kp(a);if(!f.valid)throw new Fe(f.error,400)}c=r.hashPassword?await cf(a):a}else i&&(c=i.password);let l=r.requirePassword&&!await t.features.isSSOEnforced();if(!c&&l)throw"Password must be specified.";u=u||ni();let d={createdAt:Date.now(),...i,...e,_id:u,password:c,tenantId:n};return d.roles||(d.roles={}),d.status==null&&(d.status="active"),d}static async allUsers(){return(await z().allDocs(ln(null,{include_docs:!0}))).rows.map(n=>n.doc)}static async countUsersByWorkspace(e){if(typeof e!="string"||!e)throw new Error("Must provide a string based workspace ID");return{userCount:(await qs("by_app",ii(e,{include_docs:!1}))).rows.length}}static async getUsersByAppAccess(e){return await lm(e.appId,{limit:e.limit||50})}static async getUserByEmail(e){return Ot(e)}static async getUser(e){let r=await On(e);return r&&delete r.password,r}static async bulkGet(e){return await uc(e)}static async bulkUpdate(e){let r=await Ro(e);return await nr.invalidateUsers(e.map(n=>n._id)),r}static async save(e,r={}){r.hashPassword==null&&(r.hashPassword=!0),r.requirePassword==null&&(r.requirePassword=!0);let n=q(),i=z(),{email:o,_id:a,userGroups:u=[],roles:c}=e;if(!o&&!a)throw new Error("_id or email is required");let l;if(a)try{if(l=await On(a),o&&l.email!==o&&!r.allowChangingEmail)throw new Error("Email address cannot be changed")}catch(p){if(p.status!==404)throw p}if(!l&&o&&(l=await Ot(o),l&&l._id!==a))throw new er(o);let d=!l,f=!!l&&!!o&&l.email!==o,h=!r.isAccountHolder&&!!o&&(d||f),m=[...u];if(d&&m.length===0){let p=await t.groups.getDefaultGroup?.();p?._id&&(m=[p._id])}let y=1,E=0;if((r.isAccountHolder||l)&&(y=0,E=1),l){let[p,T]=await Pr([l,e]);E=p!==T?1:0}else if(!r.isAccountHolder){let p=m.length>0?{...e,userGroups:m}:e;E=(await Pr([p]))[0]?1:0}return t.quotas.addUsers(y,E,async()=>{h&&await oc(o,n);let p=await t.buildUser(e,r,n,l);r.currentUserId&&r.currentUserId===l?._id&&(p=dm(p,l)),!l&&c?.length&&(p.roles={...c});let T=[];if(d){m.length>0&&(p.userGroups=m);for(let A of m)T.push(t.groups.addUsers(A,[p._id]))}try{let A=await i.put(p);return p._rev=A.rev,await cm(p,l),l&&p.email!==l.email&&await St.removeUser({email:l.email}),await St.addUser(n,p._id,p.email,p.ssoId),await nr.invalidateUser(A.id),await Promise.all(T),i.get(p._id)}catch(A){throw A.status===409?"User exists already":A}})}static async bulkCreate(e,r){let n=q(),i=[],o=[],a=[],u=e.map(y=>y.email),c=await om(u),l=[],d=!!r?.length,f=d?[...r]:[];if(!d){let y=await t.groups.getDefaultGroup?.();y?._id&&(f=[y._id])}for(let y of e){let E=o.find(T=>T.email.toLowerCase()===y.email.toLowerCase()),p=c.includes(y.email.toLowerCase());if(E||p){l.push({email:y.email,reason:"Unavailable"});continue}y.userGroups=[...f],o.push(y),await wo(y)&&a.push(y)}let h=await hi(n),m=await t.features.isSSOEnforced();return t.quotas.addUsers(o.length,a.length,async()=>{for(let p of o)m&&delete p.password,i.push(t.buildUser(p,{hashPassword:!0,requirePassword:!m},n,void 0,h));let y=await Promise.all(i);await Ro(y);for(let p of y)await St.addUser(n,p._id,p.email),await cm(p,void 0,h);let E=y.map(p=>({_id:p._id,email:p.email}));if(Array.isArray(E)&&f.length){let p=[],T=E.map(A=>A._id);for(let A of f)p.push(t.groups.addUsers(A,T));await Promise.all(p)}return{successful:E,unsuccessful:l}})}static async bulkDelete(e){let r=z(),n={successful:[],unsuccessful:[]},i=await ac(e);i&&(e=e.filter(m=>m.userId!==i.userId),n.unsuccessful.push({_id:i.userId,email:i.email,reason:"Account holder cannot be deleted"}));let a=(await r.allDocs({include_docs:!0,keys:e.map(m=>m.userId)})).rows.map(m=>m.doc),u=a.map(m=>({...m,_deleted:!0})),c=await Ro(u),d=(await Pr(a)).filter(m=>m).length,f=[];for(let m of a){let E=(await Io(m._id)).ssoId;E&&(await nc(E)).filter(T=>T.ssoId==null).forEach(T=>{f.push({...T,_deleted:!0})}),await W0(m)}await xr().bulkDocs(f),await t.quotas.removeUsers(u.length,d);let h={};return a.reduce((m,y)=>(m[y._id]=y,m),h),c.forEach(m=>{let y=h[m.id].email;m.ok?n.successful.push({_id:m.id,email:y}):n.unsuccessful.push({_id:m.id,email:y,reason:"Database error"})}),n}static async destroy(e){let r=z(),n=await r.get(e),i=n._id;if(!g.SELF_HOSTED&&!g.DISABLE_ACCOUNT_PORTAL){let a=n.email;if(await vr(a))throw n.userId===Qt()._id?new Fe('Please visit "Account" to delete this user',400):new Fe("Account holder cannot be deleted",400)}await St.removeUser(n),await r.remove(i,n._rev);let o=await wo(n)?1:0;await t.quotas.removeUsers(1,o),await um(n),await nr.invalidateUser(i),await An(i,{reason:"deletion"})}static async createAdminUser(e,r,n){let i=n?.password,o={email:e,password:i,createdAt:Date.now(),roles:{},builder:{global:!0},admin:{global:!0},tenantId:r,firstName:n?.firstName,lastName:n?.lastName};return n?.ssoId&&(o.ssoId=n.ssoId),await pi(Oe.CHECKLIST),await t.save(o,{hashPassword:n?.hashPassword,requirePassword:n?.requirePassword,skipPasswordValidation:n?.skipPasswordValidation,isAccountHolder:!0})}static async getGroups(e){return await this.groups.getBulk(e)}static async getGroupBuilderAppIds(e){return await this.groups.getGroupBuilderAppIds(e)}};function Do(t){return Array.isArray(t)?t.map(e=>{if(e)return delete e.password,e}):t&&(delete t.password,t)}s(Do,"removeUserPassword");async function uc(t,e){let n=(await z().allDocs({keys:t,include_docs:!0})).rows.map(i=>i.doc);return e?.cleanup&&(n=Do(n)),n}s(uc,"bulkGetGlobalUsersById");async function $0(){let t=z(),e=`us${"_"}`;return(await t.allDocs({startkey:e,endkey:`${e}${"\uFFF0"}`})).rows.map(n=>n.id)}s($0,"getAllUserIds");async function V0(){let t=z(),e=`us${"_"}`;return(await t.allDocs({startkey:e,endkey:`${e}${"\uFFF0"}`,include_docs:!0})).rows.map(n=>n.doc)}s(V0,"getAllUsers");async function Ro(t){return await z().bulkDocs(t)}s(Ro,"bulkUpdateGlobalUsers");async function On(t,e){let n=await z().get(t);return e?.cleanup&&(n=Do(n)),n}s(On,"getById");async function Ot(t,e){if(t==null)throw"Must supply an email address to view";let r=await Ht("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=Do(n)),n}s(Ot,"getGlobalUserByEmail");async function q0(t){try{let e=await Ot(t);if(Array.isArray(e)||e!=null)return!0}catch{return!1}return!1}s(q0,"doesUserExist");async function I_(t,e,r){if(typeof t!="string")throw new Error("Must provide a string based workspace ID");let n=ii(t,{include_docs:!0});n.startkey=e&&e.startkey?e.startkey:n.startkey;let i=await Ht("by_app",n);i||(i=[]);let o=Array.isArray(i)?i:[i];return r?.cleanup&&(o=Do(o)),o}s(I_,"searchGlobalUsersByApp");async function lm(t,e){let r=`roles.${t}`,n=[{"builder.global":!0},{"admin.global":!0}];if(t){let a={[r]:{$exists:!0}};n.push(a)}return(await z().find({selector:{$or:n,_id:{$regex:"^us_"}},limit:e?.limit||50})).docs}s(lm,"searchGlobalUsersByAppAccess");function w_(t,e){if(e)return hu(He(t),e._id)}s(w_,"getGlobalUserByAppPage");async function R_(t,e,r){if(typeof t!="string")throw new Error("Must provide a string to search by");let n=t.toLowerCase(),i=e&&e.startkey?e.startkey:n,o=await Ht("by_email2",{...e,startkey:i,endkey:`${n}${"\uFFF0"}`});o||(o=[]);let a=Array.isArray(o)?o:[o];return r?.cleanup&&(a=Do(a)),a}s(R_,"searchGlobalUsersByEmail");var K0=8;async function C_({bookmark:t,query:e,appId:r,limit:n}={}){let i=z(),o=n??K0,u={include_docs:!0,limit:o+1};t&&(u.startkey=t);let c,l="_id",d;return e?.equal?._id?c=[await On(e.equal._id)]:r?(c=await I_(r,u),d=s(f=>w_(r,f),"getKey")):e?.string?.email?(c=await R_(e?.string?.email,u),l="email"):e?.oneOf?._id?c=await uc(e?.oneOf?._id,{cleanup:!0}):e?(c=(await i.allDocs(ln(null,{...u,limit:void 0}))).rows.map(h=>h.doc),c=Er.search(c,{query:e,limit:u.limit}).rows):c=(await i.allDocs(ln(null,u))).rows.map(h=>h.doc),jf(c,o,{paginate:!0,property:l,getKey:d})}s(C_,"paginatedUsers");async function Q0(){return(await qs("by_email2",{limit:0,include_docs:!1})).total_rows}s(Q0,"getUserCount");async function j0(){let t=0;async function e(r){let n=await C_({bookmark:r}),i=await Pr(n.data);t+=i.filter(o=>o).length,n.hasNextPage&&await e(n.nextPage)}return s(e,"iterate"),await e(),t}s(j0,"getCreatorCount");function H0(t){return delete t.admin,delete t.builder,t}s(H0,"removePortalUserPermissions");function dm(t,e){return delete t.admin,delete t.builder,delete t.roles,e&&(t.admin=e.admin,t.builder=e.builder,t.roles=e.roles),t}s(dm,"cleanseUserObject");async function Y0(t,e){let r=He(e);t.builder??={},t.builder.creator=!0,t.builder.apps??=[],t.builder.apps.push(r),await Ut.save(t,{hashPassword:!1})}s(Y0,"addAppBuilder");async function z0(t,e){let r=He(e);t.builder&&t.builder.apps?.includes(r)&&(t.builder.apps=t.builder.apps.filter(n=>n!==r)),await Ut.save(t,{hashPassword:!1})}s(z0,"removeAppBuilder");var D_=3600;async function J0(t,e){let n=await Xf(e).get(t);if(n.budibaseAccess=!0,!g.SELF_HOSTED&&!g.DISABLE_ACCOUNT_PORTAL){let i=await vr(n.email);i&&(n.account=i,n.accountPortalAccess=!0)}return n}s(J0,"populateFromDB");async function X0(t){let e=await Ut.bulkGet(t),r=t.filter((i,o)=>!e[o]),n=e.filter(i=>i);return await Promise.all(n.map(async i=>{if(i.budibaseAccess=!0,!g.SELF_HOSTED&&!g.DISABLE_ACCOUNT_PORTAL){let o=await vr(i.email);o&&(i.account=o,i.accountPortalAccess=!0)}})),r.length?{users:n,notFoundIds:r}:{users:n}}s(X0,"populateUsersFromDB");async function bo({userId:t,tenantId:e,email:r,populateUser:n}){if(n||(n=J0),!e)try{e=q()}catch{e=await St.lookupTenantId(t)}let i=await ri(),o=await i.get(t);return o||(o=await n(t,e,r),await i.store(t,o,D_)),o&&!o.tenantId&&e&&(o.tenantId=e),o.userGroups&&!ke.users.isGlobalBuilder(o)&&await De(e,async()=>{let a=await Ut.getGroupBuilderAppIds(o);if(a.length){let u=o.builder?.apps||[];o.builder={apps:[...new Set(u.concat(a))]}}}),o}s(bo,"getUser");async function Z0(t){let e=await ri(),r=await e.bulkGet(t),n=t.filter(a=>!r[a]),i=Object.values(r).filter(a=>!!a),o;if(n.length){let a=await X0(n);o=a.notFoundIds;for(let u of a.users)await e.store(u._id,u,D_);i.push(...a.users)}return{users:i,notFoundIds:o}}s(Z0,"getUsers");async function xo(t){await(await ri()).delete(t)}s(xo,"invalidateUser");async function ek(t){if(t.length===0)return;await(await ri()).bulkDelete(t)}s(ek,"invalidateUsers");var hm={};P(hm,{Writethrough:()=>pm});var b_=1e4,fm=null;async function cc(){if(!fm){let t=await Bf();fm=new hn(t)}return fm}s(cc,"getCache");function vo(t,e){return t.name+e}s(vo,"makeCacheKey");function mm(t,e=null){return{doc:t,lastWrite:e||Date.now()}}s(mm,"makeCacheItem");async function tk(t,e,r=b_){let n=await cc(),i=e._id,o;i&&(o=await n.get(vo(t,i)));let a=!o||o.lastWrite<Date.now()-r,u=e;return a&&((await uo({type:"try_once",name:"persist_writethrough",resource:i,ttl:15e3},async()=>{let l=s(async d=>{let f=await t.put(d,{force:!0});u._id=f.id,u._rev=f.rev},"writeDb");try{await l(e)}catch(d){if(d.status!==409)throw d;di("Ignoring conflict in write-through cache")}})).executed||di("Ignoring redlock conflict in write-through cache")),o=mm(u,a?null:o?.lastWrite),u._id&&await n.store(vo(t,u._id),o),{ok:!0,id:u._id,rev:u._rev}}s(tk,"put");async function rk(t,e){let r=await cc(),n=vo(t,e),i=await r.get(n);if(!i){let o=await t.get(e);i=mm(o),await r.store(n,i)}return i.doc}s(rk,"get");async function nk(t,e){let r=await cc(),n=vo(t,e),i=await r.get(n);if(!i){let o=await t.tryGet(e);if(!o)return null;i=mm(o),await r.store(n,i)}return i.doc}s(nk,"tryGet");async function ik(t,e,r){let n=await cc();if(!e)throw new Error("No ID/Rev provided.");let i=typeof e=="string"?e:e._id;r=typeof e=="string"?r:e._rev;try{await n.delete(vo(t,i))}finally{await t.remove(i,r)}}s(ik,"remove");var pm=class{static{s(this,"Writethrough")}constructor(e,r=b_){this.db=e,this.writeRateMs=r}async put(e,r=this.writeRateMs){return tk(this.db,e,r)}async get(e){return rk(this.db,e)}async tryGet(e){return nk(this.db,e)}async remove(e,r){return ik(this.db,e,r)}};function No(t){return`config${"_"}${t}`}s(No,"generateConfigID");var lc="en";function sk(){return{_id:No("translations"),type:"translations",config:{defaultLocale:lc,locales:{[lc]:{label:"English",overrides:{}}}}}}s(sk,"createDefaultTranslationsConfig");function ok(t){let e=t?.defaultLocale||lc,r={...t?.locales??{}};r[e]||(r[e]={label:e===lc?"English":e,overrides:{}});for(let n of Object.keys(r))r[n].overrides||(r[n]={...r[n],overrides:{}});return{defaultLocale:e,locales:r}}s(ok,"prepareTranslationsConfig");async function Ge(t){let e=z();try{return await e.get(No(t))}catch(r){if(r.status===404)return;throw r}}s(Ge,"getConfig");async function ak(t){return t._id||(t._id=No(t.type)),z().put(t)}s(ak,"save");async function x_(){let t=await Ge("translations");return t?(t.config=ok(t.config),t):sk()}s(x_,"getTranslationsConfigDoc");async function uk(){return(await x_()).config}s(uk,"getTranslationsConfig");async function _i(){let t=await Ge("settings");return t||(t={_id:No("settings"),type:"settings",config:{}}),t.config.platformUrl=await Po({tenantAware:!0,config:t.config}),t.config.analyticsEnabled=await Ju({config:t.config}),t}s(_i,"getSettingsConfigDoc");async function Em(){return(await _i()).config}s(Em,"getSettingsConfig");async function Po(t={tenantAware:!0}){let e=g.PLATFORM_URL||"http://localhost:10000";if(!g.SELF_HOSTED&&g.MULTI_TENANCY&&t.tenantAware){let r=q();e.includes("localhost:")||(e=e.replace("://",`://${r}.`))}else if(g.SELF_HOSTED){let r=t?.config?t.config:(await Ge("settings"))?.config;r?.platformUrl&&(e=r.platformUrl)}return e}s(Po,"getPlatformUrl");var Ju=s(async t=>{if(!g.SELF_HOSTED)return!!g.ENABLE_ANALYTICS;let e=await br(Oe.ANALYTICS_ENABLED,86400,async()=>{let n=t?.config?t.config:(await Ge("settings"))?.config;if(n?.analyticsEnabled===!1)return!1;if(n?.analyticsEnabled===!0)return!0});if(e!==void 0)return e;let r=g.ENABLE_ANALYTICS;return!(r===0||r===!1)},"analyticsEnabled");async function ck(){return await Ge("google")}s(ck,"getGoogleConfigDoc");async function fc(){return(await ck())?.config}s(fc,"getGoogleConfig");async function ym(){if(!g.SELF_HOSTED)return gm();let t=await fc();return(!t||!t.activated)&&(t=gm()),t}s(ym,"getGoogleDatasourceConfig");function gm(){if(g.GOOGLE_CLIENT_ID&&g.GOOGLE_CLIENT_SECRET)return{clientID:g.GOOGLE_CLIENT_ID,clientSecret:g.GOOGLE_CLIENT_SECRET,activated:!0}}s(gm,"getDefaultGoogleConfig");async function lk(){return Ge("logos_oidc")}s(lk,"getOIDCLogosDoc");async function dk(){return Ge("oidc")}s(dk,"getOIDCConfigDoc");async function fk(){let t=(await dk())?.config;return t?.configs&&t.configs[0]}s(fk,"getOIDCConfig");async function Tm(t){let e=(await Ge("oidc"))?.config;return e&&e.configs.filter(r=>r.uuid===t)[0]}s(Tm,"getOIDCConfigById");async function v_(){return Ge("smtp")}s(v_,"getSMTPConfigDoc");async function pk(t){let e=await v_();if(e)return e.config;let r=g.SELF_HOSTED||!t;if(g.SMTP_FALLBACK_ENABLED&&r)return{port:g.SMTP_PORT,host:g.SMTP_HOST,secure:!1,from:g.SMTP_FROM_ADDRESS,auth:{user:g.SMTP_USER,pass:g.SMTP_PASSWORD},fallback:!0}}s(pk,"getSMTPConfig");async function mk(){return(await Ge("scim"))?.config}s(mk,"getSCIMConfig");async function hk(){return Ge("recaptcha")}s(hk,"getRecaptchaConfig");var bm={};P(bm,{AccessController:()=>_m,BUILTIN_ROLE_IDS:()=>Om,Role:()=>Lr,RoleHierarchyTraversal:()=>pc,RoleIDVersion:()=>Im,builtinRoleToNumber:()=>Lo,checkForRoleResourceArray:()=>U_,externalRole:()=>Ak,findRole:()=>Uo,getAllRoleIds:()=>wk,getAllRoles:()=>Dm,getBuiltinRole:()=>P_,getBuiltinRoles:()=>Rm,getDBRoleID:()=>k_,getExternalRoleID:()=>Ur,getExternalRoleIDs:()=>M_,getRole:()=>_k,getUserRoleHierarchy:()=>Cm,getUserRoleIdHierarchy:()=>L_,isBuiltin:()=>kr,lowerBuiltinRoleID:()=>Sk,prefixRoleIDNoBuiltin:()=>Am,roleIDsAreEqual:()=>ze,roleToNumber:()=>Tk,saveRoles:()=>Ok,validInherits:()=>yk});var N_=require("lodash"),mc=W(require("lodash/fp/cloneDeep")),Sm=W(require("semver"));var Om={ADMIN:"ADMIN",POWER:"POWER",BASIC:"BASIC",PUBLIC:"PUBLIC"},ne={...Om,BUILDER:"BUILDER"},Im={UUID:void 0,NAME:"name"};function Ek(t,e){return Array.isArray(e)?e.filter(r=>t.includes(r)).length===e.length:t.includes(e)}s(Ek,"rolesInList");var Lr=class{constructor(e,r,n,i){this.permissions={};this._id=e,this.name=r,this.uiMetadata=i,this.permissionId=n,this.version=Im.NAME}static{s(this,"Role")}addInheritance(e){return e&&typeof e=="string"?e=Am(e):e&&Array.isArray(e)&&(e=e.map(Am)),this.inherits=e,this}},pc=class{static{s(this,"RoleHierarchyTraversal")}constructor(e,r){this.allRoles=e,this.opts=r}walk(e){let r=this.opts,n=this.allRoles,i=[];if(!e||!e._id)return i;if(i.push(e),Array.isArray(e.inherits))for(let o of e.inherits){let a=Uo(o,n,r);a&&(i=i.concat(this.walk(a)))}else{let o=[],a=e;for(;a&&a.inherits&&!Ek(o,a.inherits);){if(Array.isArray(a.inherits))return i.concat(this.walk(a));if(o.push(a.inherits),a=Uo(a.inherits,n,r),a&&i.push(a),Ue.roles.checkForRoleInheritanceLoops(i))break}}return(0,N_.uniqBy)(i,o=>o._id)}},wm={ADMIN:new Lr(ne.ADMIN,ne.ADMIN,"admin",{displayName:"Admin user",description:"Can do everything",color:"var(--spectrum-global-color-static-red-400)"}).addInheritance(ne.POWER),POWER:new Lr(ne.POWER,ne.POWER,"power",{displayName:"App power user",description:"An app user with more access",color:"var(--spectrum-global-color-static-orange-400)"}).addInheritance(ne.BASIC),BASIC:new Lr(ne.BASIC,ne.BASIC,"write",{displayName:"Basic user",description:"Any logged in user",color:"var(--spectrum-global-color-static-green-400)"}).addInheritance(ne.PUBLIC),PUBLIC:new Lr(ne.PUBLIC,ne.PUBLIC,"public",{displayName:"Public user",description:"Accessible to anyone",color:"var(--spectrum-global-color-static-blue-400)"}),BUILDER:new Lr(ne.BUILDER,ne.BUILDER,"admin",{displayName:"Builder user",description:"Users that can edit this app",color:"var(--spectrum-global-color-static-magenta-600)"})};function Rm(){return(0,mc.default)(wm)}s(Rm,"getBuiltinRoles");function kr(t){return Object.values(Om).includes(t)}s(kr,"isBuiltin");function Am(t){return kr(t)?t:jt(t)}s(Am,"prefixRoleIDNoBuiltin");function P_(t){let e=Object.values(wm).find(r=>t.includes(r._id));if(e)return(0,mc.default)(e)}s(P_,"getBuiltinRole");function yk(t,e){if(!e)return!1;let r=s(n=>t.find(i=>ze(i._id,n)),"find");if(Array.isArray(e)){let n=e.filter(i=>r(i));return e.length!==0&&n.length===e.length}else return!!r(e)}s(yk,"validInherits");function Lo(t){let e=Rm(),r=Object.values(e).length+1;if(ze(t,ne.ADMIN)||ze(t,ne.BUILDER))return r;let n=e[t],i=0;do{if(!n)break;if(Array.isArray(n.inherits))throw new Error("Built-in roles don't support multi-inheritance");n=e[n.inherits],i++}while(n!==null);return i}s(Lo,"builtinRoleToNumber");async function Tk(t){if(kr(t))return Lo(t);let e=await Cm(t,{defaultPublic:!0}),r=s(n=>{if(!n.inherits)return 0;if(Array.isArray(n.inherits)){let i=n.inherits.map(o=>{let a=e.find(u=>ze(u._id,o));if(a)return r(a)+1}).filter(o=>o).sort().pop();if(i!=null)return i}else if(kr(n.inherits))return Lo(n.inherits)+1;return 0},"findNumber");return Math.max(...e.map(r))}s(Tk,"roleToNumber");function Sk(t,e){return t?e&&Lo(t)>Lo(e)?e:t:e}s(Sk,"lowerBuiltinRoleID");function ze(t,e){return jt(t)===jt(e)}s(ze,"roleIDsAreEqual");function Ak(t){let e;return t._id&&(e=Ur(t._id)),{...t,_id:e,inherits:M_(t.inherits,t.version)}}s(Ak,"externalRole");function Uo(t,e,r){let n=P_(t);n||(t=jt(t));let i=e.find(o=>o._id&&ze(o._id,t));return!i&&!kr(t)&&r?.defaultPublic?(0,mc.default)(wm.PUBLIC):(n=Object.assign(n||{},i),n?._id&&(n._id=Ur(n._id,n.version)),Object.keys(n).length===0?void 0:n)}s(Uo,"findRole");async function _k(t,e){let r=ei(),n=[];if(!kr(t)){let i=await r.tryGet(k_(t));i&&n.push(i)}return Uo(t,n,e)}s(_k,"getRole");async function Ok(t){await ei().bulkDocs(t.filter(r=>r._id).map(r=>({...r,_id:jt(r._id)})))}s(Ok,"saveRoles");async function Ik(t,e){let r=await Dm();if(ze(t,ne.ADMIN))return r;let n=Uo(t,r,e),i=[];return n&&(i=new pc(r,e).walk(n)),i}s(Ik,"getAllUserRoles");async function L_(t){return(await Cm(t)).map(r=>r._id)}s(L_,"getUserRoleIdHierarchy");async function Cm(t,e){return Ik(t,e)}s(Cm,"getUserRoleHierarchy");function U_(t,e){if(t&&!Array.isArray(t[e])){let r=t[e];t[e]=[r],r==="write"&&t[e].push("read")}return t}s(U_,"checkForRoleResourceArray");async function wk(t){return(await Dm(t)).map(r=>r._id)}s(wk,"getAllRoleIds");async function Dm(t){if(t)return je(t,e);{let r;try{r=ei()}catch{}return e(r)}async function e(r){let n=[];r&&(n=(await r.allDocs(gu(null,{include_docs:!0}))).rows.map(u=>u.doc),n.forEach(u=>u._id=Ur(u._id,u.version)));let i=Rm(),o=[];!r||await Rk(r)?o=[ne.ADMIN,ne.POWER,ne.BASIC,ne.PUBLIC]:o=[ne.ADMIN,ne.BASIC,ne.PUBLIC];for(let a of o){let u=i[a],c=n.filter(l=>ze(l._id,a))[0];c==null?n.push(u||i.BASIC):(n=n.filter(l=>l._id!==c._id),c._id=Ur(u._id,c.version),n.push({...u,...c,name:u.name,_id:Ur(u._id,u.version),uiMetadata:{...c.uiMetadata,...u.uiMetadata}}))}for(let a of n)if(a.permissions)for(let u of Object.keys(a.permissions))a.permissions=U_(a.permissions,u);return n}s(e,"internal")}s(Dm,"getAllRoles");async function Rk(t){if(await Ck(t))return!0;let r=(await t.tryGet("app_metadata"))?.creationVersion;return!r||!Sm.default.valid(r)?!0:!Sm.default.gte(r,g.MIN_VERSION_WITHOUT_POWER_ROLE)}s(Rk,"shouldIncludePowerRole");async function Ck(t){let r=(await t.tryGet("ta_users"))?.schema?.roleId?.constraints?.inclusion;return!Array.isArray(r)||!r.some(i=>ze(i,ne.POWER))?!1:r.some(i=>!kr(i))}s(Ck,"hasLegacyPowerRole");var _m=class{static{s(this,"AccessController")}constructor(){this.userHierarchies={}}async hasAccess(e,r){if(e==null||e===""||ze(e,ne.BUILDER)||ze(r,e)||ze(r,ne.BUILDER))return!0;let n=r?this.userHierarchies[r]:null;return!n&&r&&(n=await L_(r),this.userHierarchies[r]=n),n?.find(i=>ze(i,e))!==void 0}async checkScreensAccess(e,r){let n=[];for(let i of e){let o=await this.checkScreenAccess(i,r);o&&n.push(o)}return n}async checkScreenAccess(e,r){let n=e&&e.routing?e.routing.roleId:void 0;return await this.hasAccess(n,r)?e:null}};function k_(t){return t?.startsWith("role")?t:jt(t)}s(k_,"getDBRoleID");function Ur(t,e){if(t.startsWith(`role${"_"}`)&&(kr(t)||e===Im.NAME)){let r=t.split("_");return r.shift(),r.join("_")}return t}s(Ur,"getExternalRoleID");function M_(t,e){return t&&(typeof t=="string"?Ur(t,e):t.map(r=>Ur(r,e)))}s(M_,"getExternalRoleIDs");var xm={};P(xm,{BUILDER:()=>Nk,BUILTIN_PERMISSIONS:()=>hc,CREATOR:()=>Pk,GLOBAL_BUILDER:()=>Lk,PermissionImpl:()=>oe,PermissionLevel:()=>Ni,PermissionType:()=>qo,doesHaveBasePermission:()=>xk,getAllowedLevels:()=>G_,getBuiltinPermissionByID:()=>bk,getBuiltinPermissions:()=>Dk,isPermissionLevelHigherThanRead:()=>vk,levelToNumber:()=>W_});var F_=W(require("lodash/flatten")),B_=W(require("lodash/fp/cloneDeep"));var oe=class{static{s(this,"PermissionImpl")}constructor(e,r){this.type=e,this.level=r}};function W_(t){switch(t){case"execute":return 0;case"read":return 1;case"write":return 2;case"admin":return 3;default:return-1}}s(W_,"levelToNumber");function G_(t){switch(t){case"execute":return["execute"];case"read":return["execute","read"];case"write":case"admin":return["execute","read","write"];default:return[]}}s(G_,"getAllowedLevels");var hc={PUBLIC:{_id:"public",name:"Public",permissions:[new oe("webhook","execute")]},READ_ONLY:{_id:"read_only",name:"Read only",permissions:[new oe("query","read"),new oe("table","read"),new oe("app","read")]},WRITE:{_id:"write",name:"Read/Write",permissions:[new oe("query","write"),new oe("table","write"),new oe("automation","execute"),new oe("legacy_view","read"),new oe("app","read")]},POWER:{_id:"power",name:"Power",permissions:[new oe("table","write"),new oe("user","read"),new oe("automation","execute"),new oe("webhook","read"),new oe("legacy_view","read"),new oe("app","read")]},ADMIN:{_id:"admin",name:"Admin",permissions:[new oe("table","admin"),new oe("user","admin"),new oe("automation","admin"),new oe("webhook","read"),new oe("query","admin"),new oe("legacy_view","read"),new oe("app","read")]}};function Dk(){return(0,B_.default)(hc)}s(Dk,"getBuiltinPermissions");function bk(t){return Object.values(hc).find(r=>r._id===t)}s(bk,"getBuiltinPermissionByID");function xk(t,e,r){let n=[...new Set(r.map(a=>a.permissionId))],i=Object.values(hc),o=(0,F_.default)(i.filter(a=>n.indexOf(a._id)!==-1).map(a=>a.permissions));for(let a of o)if(a.type===t&&G_(a.level).indexOf(e)!==-1)return!0;return!1}s(xk,"doesHaveBasePermission");function vk(t){return W_(t)>1}s(vk,"isPermissionLevelHigherThanRead");var Nk="builder",Pk="creator",Lk="globalBuilder";var Pm={};P(Pm,{FlagSet:()=>Ec,all:()=>Wk,flags:()=>vm,getEnvFlags:()=>K_,init:()=>kk,isEnabled:()=>Bk,parseEnvFlags:()=>Tc,shutdown:()=>Mk,testutils:()=>Nm});var yc=W(require("crypto")),$_=W(require("dd-trace")),V_=require("lodash"),q_=require("posthog-node");var gc,Uk=s(()=>{let t=g.POSTHOG_FEATURE_FLAGS_POLLING_INTERVAL_MS;if(t){let e=parseInt(t,10);if(!Number.isNaN(e)&&e>0)return e}return me.fromDays(1).toMs()},"getFeatureFlagsPollingInterval");function kk(t){g.POSTHOG_TOKEN&&g.POSTHOG_API_HOST&&!g.SELF_HOSTED&&g.POSTHOG_FEATURE_FLAGS_ENABLED?(console.log("initializing posthog client..."),gc=new q_.PostHog(g.POSTHOG_TOKEN,{host:g.POSTHOG_API_HOST,personalApiKey:g.POSTHOG_PERSONAL_TOKEN,featureFlagsPollingInterval:Uk(),...t})):console.log("posthog disabled")}s(kk,"init");function Mk(){gc?.shutdown()}s(Mk,"shutdown");function Tc(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(Tc,"parseEnvFlags");function K_(){return Tc(g.TENANT_FEATURE_FLAGS||"")}s(K_,"getEnvFlags");var Ec=class{constructor(e){this.flagSchema=e;this.setId=yc.randomUUID()}static{s(this,"FlagSet")}defaults(){return(0,V_.cloneDeep)(this.flagSchema)}isFlagName(e){return this.flagSchema[e]!==void 0}async isEnabled(e){return(await this.fetch())[e]}async fetch(){return await $_.default.trace("features.fetch",async e=>{let r=Pf(this.setId);if(r)return e?.addTags({fromCache:!0}),r;let n={},i=this.defaults(),o=q(),a=new Set;if(tu())return i;for(let{tenantId:f,key:h,value:m}of K_())if(!(!f||f!=="*"&&f!==o)&&(n.readFromEnvironmentVars=!0,m===!1&&a.add(h),!!this.isFlagName(h))){if(typeof i[h]!="boolean")throw new Error(`Feature: ${h} is not a boolean`);i[h]=m,n[`flags.${h}.source`]="environment"}let u=Qt(),c=u?._id;if(!c){let f=vf();f&&(c=yc.createHash("sha512").update(f).digest("hex"))}let l=u?.tenantId;if(l||(l=o),n["identity.type"]=u?.type,n["identity._id"]=u?._id,n.tenantId=l,n.userId=c,gc&&c){n.readFromPostHog=!0;let f=await _i(),h={tenantId:l},m={tenant:{id:l}};f.config.createdVersion&&(m.tenant.createdVersion=f.config.createdVersion),f.createdAt&&(m.tenant.createdAt=`${f.createdAt}`);let y=await gc.getAllFlags(c,{personProperties:h,onlyEvaluateLocally:!0,groups:{tenant:l},groupProperties:m});for(let[E,p]of Object.entries(y))if(this.isFlagName(E)){if(typeof p!="boolean"){console.warn(`Invalid value for posthog flag "${E}": ${p}`);continue}if(!(i[E]===!0||a.has(E)))try{i[E]=p,n[`flags.${E}.source`]="posthog"}catch(T){console.warn(`Error parsing posthog flag "${E}": ${p}`,T)}}}let d=Uf();for(let[f,h]of Object.entries(d))this.isFlagName(f)&&typeof h=="boolean"&&(i[f]=h,n[`flags.${f}.source`]="override");Lf(this.setId,i);for(let[f,h]of Object.entries(i))n[`flags.${f}.value`]=h;return e?.addTags(n),i})}},Fk={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:g.isDev(),DEV_USE_CLIENT_FROM_STORAGE:!1,AI_AGENT_ACTIVITY:!1},vm=new Ec(Fk);async function Bk(t){return await vm.isEnabled(t)}s(Bk,"isEnabled");async function Wk(){return await vm.fetch()}s(Wk,"all");var Nm={};P(Nm,{setFeatureFlags:()=>Q_,withFeatureFlags:()=>Vk});function Gk(){let t={};for(let{tenantId:e,key:r,value:n}of Tc(process.env.TENANT_FEATURE_FLAGS||"")){let i=t[e]||{};i[r]!==!1&&(i[r]=n,t[e]=i)}return t}s(Gk,"getCurrentFlags");function $k(t){let e=[];for(let[r,n]of Object.entries(t))for(let[i,o]of Object.entries(n))o===!1?e.push(`${r}:!${i}`):e.push(`${r}:${i}`);return e.join(",")}s($k,"buildFlagString");function Q_(t,e){let r=Gk();for(let[i,o]of Object.entries(e)){let a=r[t]||{};a[i]=o,r[t]=a}let n=$k(r);return bs({TENANT_FEATURE_FLAGS:n})}s(Q_,"setFeatureFlags");function Vk(t,e,r){let n=Q_(t,e),i=r();return i instanceof Promise?i.finally(n):(n(),i)}s(Vk,"withFeatureFlags");var Qm={};P(Qm,{adminOnly:()=>Sc,auditLog:()=>Ac,authError:()=>Ie,buildAuthMiddleware:()=>DM,buildCsrfMiddleware:()=>xM,buildTenancyMiddleware:()=>bM,builderOnly:()=>xc,builderOrAdmin:()=>vc,google:()=>or,internalApi:()=>Pc,joiValidator:()=>ko,oidc:()=>ar,passport:()=>vM,platformLogout:()=>kM,refreshOAuthToken:()=>LM,ssoCallbackUrl:()=>Fr,updateUserOAuth:()=>UM,workspaceBuilderOrAdmin:()=>kc});var Km={};P(Km,{activeTenant:()=>EO,adminOnly:()=>Sc,auditLog:()=>Ac,authError:()=>Ie,authenticated:()=>bc,builderOnly:()=>xc,builderOrAdmin:()=>vc,correlation:()=>H_,csp:()=>iO,csrf:()=>Nc,datasource:()=>RM,errorHandling:()=>oO,featureFlagCookie:()=>aO,google:()=>or,internalApi:()=>Pc,ip:()=>uO,joiValidator:()=>ko,local:()=>Ri,oidc:()=>ar,pino:()=>Y_,querystringToBody:()=>gO,ssoCallbackUrl:()=>Fr,tenancy:()=>Uc,workspaceBuilderOrAdmin:()=>kc});var j_=require("uuid");var qk=require("correlation-id"),H_=s((t,e)=>{let r=t.headers["x-budibase-correlation-id"];return r||(r=(0,j_.v4)()),qk.withId(r,()=>e())},"correlationMiddleware");var Kk=require("koa-pino-logger"),Qk=require("correlation-id");function jk(){return{logger:Uu,genReqId:Qk.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(jk,"pinoSettings");function Hk(){return g.HTTP_LOGGING?Kk(jk()):(t,e)=>e()}s(Hk,"getMiddleware");var Y_=Hk();var Sc=s(async(t,e)=>(!t.internal&&!Lt(t.user)&&t.throw(403,"Admin user only endpoint."),e()),"adminOnly");var Ac=s((async(t,e)=>e()),"auditLog");var eO=require("jsonwebtoken");var Yk=/\/:(.*?)(\/.*)?$/g,ir=s(t=>t?t.map(e=>{let r=e.route,n=e.method,i=r.match(Yk);if(i)for(let o of i){let u="/.*"+(o.endsWith("/")?"/":"");r=r.replace(o,u)}return{regex:new RegExp(`^${r}`),method:n,route:r}}):[],"buildMatcherRegex"),sr=s((t,e)=>e.find(({regex:r,method:n})=>{let i=r.test(t.path),o=n==="ALL"?!0:t.request.method.toLowerCase()===n.toLowerCase();return i&&o}),"matches");var Fm={};P(Fm,{SecretOption:()=>X_,compare:()=>Zk,decrypt:()=>wc,decryptFile:()=>rM,encrypt:()=>Xk,encryptFile:()=>eM,getSecret:()=>Mm});var kt=W(require("crypto")),Mr=W(require("fs")),Lm=require("path"),Um=W(require("zlib"));var _c="aes-256-ctr",J_="-",zk=1e4,Jk=32,Oc=16,km=16,X_=(r=>(r.API="api",r.ENCRYPTION="encryption",r))(X_||{});function Mm(t){let e,r;if(t==="encryption"?(e=g.ENCRYPTION_KEY,r="ENCRYPTION_KEY"):(e=g.API_ENCRYPTION_KEY,r="API_ENCRYPTION_KEY"),!e)throw new Error(`Secret "${r}" has not been set in environment.`);return e}s(Mm,"getSecret");function Ic(t,e){return kt.default.pbkdf2Sync(t,new Uint8Array(e),zk,Jk,"sha512")}s(Ic,"stretchString");function Xk(t,e="api"){let r=kt.default.randomBytes(Oc),n=Ic(Mm(e),r),i=kt.default.createCipheriv(_c,new Uint8Array(n),new Uint8Array(r)),o=i.update(t,"utf8"),a=i.final(),u=Buffer.concat([new Uint8Array(o),new Uint8Array(a)]).toString("hex");return`${r.toString("hex")}${J_}${u}`}s(Xk,"encrypt");function wc(t,e="api"){let[r,n]=t.split(J_),i=Buffer.from(r,"hex"),o=Ic(Mm(e),i),a=kt.default.createDecipheriv(_c,new Uint8Array(o),new Uint8Array(i)),u=a.update(n,"hex"),c=a.final();return Buffer.concat([new Uint8Array(u),new Uint8Array(c)]).toString()}s(wc,"decrypt");function Zk(t,e,r="api"){try{let n=new TextEncoder,i=n.encode(wc(e,r)),o=n.encode(t);return i.length!==o.length?!1:kt.default.timingSafeEqual(i,o)}catch{return!1}}s(Zk,"compare");async function eM({dir:t,filename:e},r){let n=`${e}.enc`,i=(0,Lm.join)(t,e);if(Mr.default.lstatSync(i).isDirectory())throw new Error("Unable to encrypt directory");let o=Mr.default.createReadStream(i),a=Mr.default.createWriteStream((0,Lm.join)(t,n)),u=kt.default.randomBytes(Oc),c=kt.default.randomBytes(km),l=Ic(r,u),d=kt.default.createCipheriv(_c,new Uint8Array(l),new Uint8Array(c));return a.write(u),a.write(c),o.pipe(Um.default.createGzip()).pipe(d).pipe(a),new Promise(f=>{a.on("finish",()=>{f({filename:n,dir:t})})})}s(eM,"encryptFile");async function tM(t){let e=Mr.default.createReadStream(t),r=await z_(e,Oc),n=await z_(e,km);return e.close(),{salt:r,iv:n}}s(tM,"getSaltAndIV");async function rM(t,e,r){if(Mr.default.lstatSync(t).isDirectory())throw new Error("Unable to decrypt directory");let{salt:n,iv:i}=await tM(t),o=Mr.default.createReadStream(t,{start:Oc+km}),a=Mr.default.createWriteStream(e),u=Ic(r,n),c=kt.default.createDecipheriv(_c,new Uint8Array(u),new Uint8Array(i)),l=Um.default.createGunzip();return o.pipe(c).pipe(l).pipe(a),new Promise((d,f)=>{a.on("finish",()=>{a.close(),d()}),o.on("error",h=>{a.close(),f(h)}),c.on("error",h=>{a.close(),f(h)}),l.on("error",h=>{a.close(),f(h)}),a.on("error",h=>{a.close(),f(h)})})}s(rM,"decryptFile");function z_(t,e){return new Promise((r,n)=>{let i=0,o=[];t.on("readable",()=>{let a;for(;(a=t.read(e-i))!==null;)o.push(a),i+=a.length;r(Buffer.concat(o.map(u=>new Uint8Array(u))))}),t.on("end",()=>{n(new Error("Insufficient data in the stream."))}),t.on("error",a=>{n(a)})})}s(z_,"readBytes");var Bm={};P(Bm,{APIWarning:()=>In,FeatureDisabledWarning:()=>Cc,InvalidAPIKeyWarning:()=>wi,UsageLimitWarning:()=>Rc});var In=class extends Error{static{s(this,"APIWarning")}constructor(e,r){super(e),this.code=r}},wi=class extends In{static{s(this,"InvalidAPIKeyWarning")}constructor(){super("Invalid API key","invalid_api_key")}},Rc=class extends In{static{s(this,"UsageLimitWarning")}constructor(e){super(`Usage limit exceeded: '${e}'`,"usage_limit_exceeded"),this.limitName=e}getPublicWarning(){return{limitName:this.limitName}}},Cc=class extends In{static{s(this,"FeatureDisabledWarning")}constructor(e){super(`Feature disabled: '${e}'`,"feature_disabled"),this.featureName=e,this.status=400}getPublicWarning(){return{featureName:this.featureName}}getPublicError(){return{featureName:this.featureName}}};var tO=W(require("dd-trace"));var iM=g.SESSION_UPDATE_PERIOD?parseInt(g.SESSION_UPDATE_PERIOD):60*1e3;function sM(){return new Date(Date.now()-iM).toISOString()}s(sM,"timeMinusOneMinute");function Z_(t,e={}){t.publicEndpoint=e.publicEndpoint||!1,t.isAuthenticated=e.authenticated||!1,t.loginMethod=e.loginMethod,t.user=e.user,t.internal=e.internal||!1,t.version=e.version}s(Z_,"finalise");async function oM(t,e){if(Hs(t))return{valid:!0,user:void 0};let n=wc(t).split("_")[0];return De(n,async()=>{let i;try{let o=z();i=await Ht("by_api_key",{key:t},o)}catch{i=void 0}if(i)return{valid:!0,user:await bo({userId:i,tenantId:n,populateUser:e})};throw new wi})}s(oM,"checkApiKey");function Dc(t,e){let r=t.request.headers[e];if(Array.isArray(r))throw new Error("Unexpected header format");return r}s(Dc,"getHeader");function bc(t=[],e={publicAllowed:!1}){let r=t?ir(t):[];return(async(n,i)=>{let o=!1,a=Dc(n,"x-budibase-api-version");sr(n,r)&&(o=!0);try{let c=Dc(n,"x-budibase-token"),l=zt(n,"budibase:auth"),d=l||Su(c);d&&!d.exp&&(l&&Jt(n,"budibase:auth"),n.throw(401,"Session token missing expiration, please log in again"));let f=Dc(n,"x-budibase-api-key");!f&&n.request.headers.authorization&&(f=n.request.headers.authorization.split(" ")[1]);let h=Dc(n,"x-budibase-tenant-id"),m=!1,y,E=!1,p;if(d&&!f){let A=d.sessionId,_=d.userId,I;try{I=await Hp(_,A),e&&e.populateUser?y=await bo({userId:_,tenantId:I.tenantId,email:I.email,populateUser:e.populateUser(n)}):y=await bo({userId:_,tenantId:I.tenantId,email:I.email}),y.csrfToken=I.csrfToken,p="cookie",I?.lastAccessedAt<sM()&&await jp(I),m=!0}catch(O){m=!1,console.warn(`Auth Error: ${O.message}`),Jt(n,"budibase:auth")}}if(!m&&f){let A=e.populateUser?e.populateUser(n):null,{valid:_,user:I}=await oM(f,A);_&&(m=!0,p="api_key",y=I,E=!I)}!y&&h?y={tenantId:h}:y&&"password"in y&&delete y.password,m||(m=!1);let T=s(A=>A&&A.email,"isUser");return T(y)&&tO.default.setUser({id:y._id,tenantId:y.tenantId,budibaseAccess:y.budibaseAccess,status:y.status}),Z_(n,{authenticated:m,user:y,internal:E,version:a,publicEndpoint:o,loginMethod:p}),T(y)?mf(y,n,i):i()}catch(c){if(console.warn(`Auth Error: ${c.message}`),c instanceof eO.JsonWebTokenError?Jt(n,"budibase:auth"):c?.code==="invalid_api_key"&&n.throw(403,c.message),e&&e.publicAllowed||o)return Z_(n,{authenticated:!1,version:a,publicEndpoint:o}),i();n.throw(c.status||403,c.message||"Authentication failed")}})}s(bc,"authenticated");async function xc(t,e){if(t.internal)return e();let r=await dn(t);return!r&&!g.isWorker()?t.throw(403,"This request required a workspace id."):!r&&!Be(t.user)?t.throw(403,"Builder user only endpoint."):r&&!Ii(t.user,r)&&t.throw(403,"Workspace builder user only endpoint."),e()}s(xc,"builderOnly");async function vc(t,e){if(t.internal||Lt(t.user))return e();let r=await dn(t);return!r&&!g.isWorker()?t.throw(403,"This request required a workspace id."):!r&&!Be(t.user)?t.throw(403,"Admin/Builder user only endpoint."):r&&!Ii(t.user,r)&&t.throw(403,"Workspace Admin/Builder user only endpoint."),e()}s(vc,"builderOrAdmin");var nO=W(require("crypto"));var rO={"default-src":["'self'"],"script-src":["'self'","'unsafe-eval'","https://*.budibase.net","https://cdn.budi.live","https://js.intercomcdn.com","https://widget.intercom.io","https://d2l5prqdbvm3op.cloudfront.net","https://us-assets.i.posthog.com","https://www.google.com/recaptcha/api.js","https://companion.frontapp.com"],"style-src":["'self'","'unsafe-inline'","https://cdn.jsdelivr.net","https://fonts.googleapis.com","https://rsms.me","https://maxcdn.bootstrapcdn.com"],"object-src":["'none'"],"base-uri":["'self'"],"connect-src":["'self'","https://*.budibase.app","https://*.budibaseqa.app","https://*.budibase.net","https://api-iam.intercom.io","https://api-ping.intercom.io","https://app.posthog.com","https://us.i.posthog.com","wss://nexus-websocket-a.intercom.io","wss://nexus-websocket-b.intercom.io","https://nexus-websocket-a.intercom.io","https://nexus-websocket-b.intercom.io","https://uploads.intercomcdn.com","https://uploads.intercomusercontent.com","https://*.amazonaws.com","https://*.s3.amazonaws.com","https://*.s3.us-east-2.amazonaws.com","https://*.s3.us-east-1.amazonaws.com","https://*.s3.us-west-1.amazonaws.com","https://*.s3.us-west-2.amazonaws.com","https://*.s3.af-south-1.amazonaws.com","https://*.s3.ap-east-1.amazonaws.com","https://*.s3.ap-south-1.amazonaws.com","https://*.s3.ap-northeast-2.amazonaws.com","https://*.s3.ap-southeast-1.amazonaws.com","https://*.s3.ap-southeast-2.amazonaws.com","https://*.s3.ap-northeast-1.amazonaws.com","https://*.s3.ca-central-1.amazonaws.com","https://*.s3.cn-north-1.amazonaws.com","https://*.s3.cn-northwest-1.amazonaws.com","https://*.s3.eu-central-1.amazonaws.com","https://*.s3.eu-west-1.amazonaws.com","https://*.s3.eu-west-2.amazonaws.com","https://*.s3.eu-south-1.amazonaws.com","https://*.s3.eu-west-3.amazonaws.com","https://*.s3.eu-north-1.amazonaws.com","https://*.s3.sa-east-1.amazonaws.com","https://*.s3.me-south-1.amazonaws.com","https://*.s3.us-gov-east-1.amazonaws.com","https://*.s3.us-gov-west-1.amazonaws.com","https://api.github.com","https://d2l5prqdbvm3op.cloudfront.net","https://companion.frontapp.com","https://*.frontapp.com"],"font-src":["'self'","data:","https://cdn.jsdelivr.net","https://fonts.gstatic.com","https://rsms.me","https://maxcdn.bootstrapcdn.com","https://js.intercomcdn.com","https://fonts.intercomcdn.com"],"frame-src":["'self'","https:"],"img-src":["http:","https:","data:","blob:"],"manifest-src":["'self'"],"media-src":["'self'","https://js.intercomcdn.com","https://cdn.budi.live"],"worker-src":["blob:","'self'"]},Wm=/^[A-Za-z0-9-*:/.]+$/,iO=s((async(t,e)=>{let r=nO.default.randomBytes(16).toString("base64");t.state.nonce=r;let n={...rO};n["script-src"]=[...rO["script-src"],`'nonce-${r}'`];let i={"media-src":g.CUSTOM_CSP_MEDIA_SRC,"script-src":g.CUSTOM_CSP_SCRIPT_SRC,"connect-src":g.CUSTOM_CSP_CONNECT_SRC,"img-src":g.CUSTOM_CSP_IMG_SRC,"font-src":g.CUSTOM_CSP_FONT_SRC,"frame-src":g.CUSTOM_CSP_FRAME_SRC};for(let[c,l]of Object.entries(i))if(l){let d=l.split(",").map(f=>f.trim()).filter(f=>Wm.test(f));n[c]=[...n[c]||[],...d]}let o=t.request?.get("x-budibase-embed")?.toLowerCase()==="true",a=t.user?.license?.features.includes("customAppScripts");if(o&&(n["frame-ancestors"]=["*"]),t.appId&&(o||a))try{let c=await Bs.getWorkspaceMetadata(t.appId);if("name"in c){if(a)for(let l of c.scripts||[]){let d=(l.cspWhitelist||"").split(`
|
|
38
38
|
`).filter(h=>Wm.test(h)),f=["default-src","script-src","connect-src","media-src","img-src","font-src","frame-src"];for(let h of f)n[h]=[...n[h]||[],...d]}if(o){let l=(c.embedAllowedOrigins||[]).map(d=>d.trim()).filter(d=>Wm.test(d));n["frame-ancestors"]=l.length?l:["*"]}}}catch(c){console.error(`Error occurred in Content-Security-Policy middleware: ${c}`)}let u=Object.entries(n).map(([c,l])=>`${c} ${l.join(" ")}`).join("; ");t.set("Content-Security-Policy",u),await e()}),"contentSecurityPolicy");var aM=["GET","HEAD","OPTIONS"],uM=["application/x-www-form-urlencoded","multipart/form-data","text/plain"];function Nc(t={noCsrfPatterns:[]}){let e=ir(t.noCsrfPatterns);return(async(r,n)=>{if(sr(r,e)||aM.indexOf(r.method)!==-1)return n();let o=r.get("content-type")?r.get("content-type").toLowerCase():"";if(!uM.filter(c=>o.includes(c)).length||r.internal)return n();let a=r.user?.csrfToken;if(!a)return n();let u=r.get("x-csrf-token");return(!u||u!==a)&&r.throw(403,"Invalid CSRF token"),n()})}s(Nc,"csrf");function sO(t){if(t.includes("-----BEGIN PRIVATE KEY-----"))return!0;for(let e of dT){let r=g[e];if(!(typeof r!="string"||r==="")&&t.includes(r))return!0}return!1}s(sO,"stringContainsSecret");async function oO(t,e){try{await e()}catch(r){let n=r.status||r.statusCode||500;t.status=n,n>=400&&n<500?console.warn(r):console.error("Got 5xx response code",r);let i={message:r.message,status:n,validationErrors:r.validation,error:Hu(r)};if(sO(JSON.stringify(i))&&(i={message:"Unexpected error",status:n,error:"Unexpected error"}),g.isTest()&&t.headers["x-budibase-include-stacktrace"]){let o=r;for(;o.cause;)o=o.cause;i.stack=o.stack}t.body=i}}s(oO,"errorHandling");var aO=s((async(t,e)=>{let n=zt(t,"budibase:featureflags")?.flags||{};await kf(n,async()=>{await e()})}),"featureFlagCookie");async function Pc(t,e){let r=t.request.headers["x-budibase-api-key"];return r||t.throw(403,"Unauthorized"),Array.isArray(r)&&t.throw(403,"Unauthorized"),Hs(r)||t.throw(403,"Unauthorized"),e()}s(Pc,"internalApi");async function uO(t,e){return t.ip?await Nf(t.ip,()=>e()):e()}s(uO,"ip");var ko={};P(ko,{body:()=>cM,params:()=>lM});var Gm=W(require("joi"));function cO(t,e,r){let n=r?.errorPrefix??`Invalid ${e}`;return(i,o)=>{if(!t)return o();let a=null,u=i.request?.[e];i[e]!=null?a=i[e]:u!=null&&(a=u),t.append&&(t=t.append({createdAt:Gm.default.any().optional(),updatedAt:Gm.default.any().optional()}));let{error:c}=t.validate(a,{allowUnknown:r?.allowUnknown});if(c){let l=c.message;n&&(l=`Invalid ${e} - ${l}`),i.throw(400,l)}return o()}}s(cO,"validate");function cM(t,e){return cO(t,"body",e)}s(cM,"body");function lM(t,e){return cO(t,"params",e)}s(lM,"params");var Ri={};P(Ri,{authenticate:()=>pM,options:()=>fM});function Ie(t,e,r){return t(r,null,{message:e})}s(Ie,"authError");async function Fr(t,e){if(e&&e.callbackURL)return e.callbackURL;let r=await Em(),n="/api/global/auth";return Sr()&&(n+=`/${q()}`),n+=`/${t}/callback`,`${r.platformUrl}${n}`}s(Fr,"ssoCallbackUrl");var $m="Invalid credentials",dM="This account has expired. Please reset your password",fM={passReqToCallback:!0};async function pM(t,e,r,n){if(!e)return Ie(n,"Email Required");if(!r)return Ie(n,"Password Required");let i=await Ot(e);return i==null?(console.info(`user=${e} could not be found`),Ie(n,$m)):i.status==="inactive"?(console.info(`user=${e} is inactive`,i),Ie(n,$m)):i.password?await lf(r,i.password)?(delete i.password,n(null,i)):Ie(n,$m):(console.info(`user=${e} has no password set`,i),Ie(n,dM))}s(pM,"authenticate");var or={};P(or,{buildVerifyFn:()=>fO,getCallbackUrl:()=>gM,strategyFactory:()=>Vm});var Mo=s(t=>Promise.resolve(t),"ssoSaveUserNoOp");async function Lc(t,e=!0,r,n){if(!n)throw new Error("Save user function must be provided");if(!t.userId)return Ie(r,"sso user id required");if(!t.email)return Ie(r,"sso user email required");let i=ni(t.userId),o;try{o=await On(i)}catch(u){if(!u.status||u.status!==404)return Ie(r,"Unexpected error when retrieving existing user",u)}if(o||(o=await Ot(t.email)),!o&&e)return Ie(r,"Email does not yet exist. You must set up your local budibase account first.");o||(o={_id:i,email:t.email,roles:{},tenantId:q()});let a=await mM(o,t);a.forceResetPassword=!1;try{delete a.password,a=await n(a,{hashPassword:!1,requirePassword:!1})}catch(u){return Ie(r,"Error saving user",u)}return r(null,a)}s(Lc,"authenticate");async function mM(t,e){let r,n,i;if(e.profile){let o=e.profile;if(o.name){let a=o.name;a.givenName&&(r=a.givenName),a.familyName&&(n=a.familyName)}}return e.oauth2&&(i={...e.oauth2}),{...t,provider:e.provider,providerType:e.providerType,firstName:r,lastName:n,oauth2:i}}s(mM,"syncUser");var hM=require("passport-google-oauth").OAuth2Strategy;function fO(t){return(e,r,n,i)=>{let o={provider:"google",providerType:"google",userId:n.id,profile:n,email:n._json.email,oauth2:{accessToken:e,refreshToken:r}};return Lc(o,!0,i,t)}}s(fO,"buildVerifyFn");async function Vm(t,e,r){try{let{clientID:n,clientSecret:i}=t;if(!n||!i)throw new Error("Configuration invalid. Must contain google clientID and clientSecret");let o=fO(r);return new hM({clientID:t.clientID,clientSecret:t.clientSecret,callbackURL:e},o)}catch(n){throw new Error(`Error constructing google authentication strategy: ${n}`)}}s(Vm,"strategyFactory");async function gM(t){return Fr("google",t)}s(gM,"getCallbackUrl");var ar={};P(ar,{buildVerifyFn:()=>hO,fetchStrategyConfig:()=>AM,getCallbackUrl:()=>_M,strategyFactory:()=>SM});var pO=W(require("node-fetch"));var mO=require("@govtechsg/passport-openidconnect");function hO(t){return async(e,r,n,i,o,a,u,c,l)=>{let d=EM(r,n),f=yM(r,n),h={provider:e,providerType:"oidc",userId:d.id,profile:d,email:TM(d,f),oauth2:{accessToken:a,refreshToken:u}};return Lc(h,!1,l,t)}}s(hO,"buildVerifyFn");function EM(t,e){let r={...t?._json||{}};!r.email&&e.emails?.length&&(r.email=e.emails[0].value);let n=t?.displayName||e.displayName;return{id:t?.id||e.id,name:t?.name||e.name||!!n&&{givenName:n,familyName:""}||void 0,_json:r,provider:t?.provider}}s(EM,"normalizeProfile");function yM(t,e){return{email:t?._json?.email||e.emails?.[0]?.value,preferred_username:e.username}}s(yM,"buildJwtClaims");function TM(t,e){if(t._json.email)return t._json.email.toLowerCase();if(e.email)return e.email.toLowerCase();let r=e.preferred_username;if(r&&ip(r))return r.toLowerCase();throw new Error(`Could not determine user email from profile ${JSON.stringify(t)} and claims ${JSON.stringify(e)}`)}s(TM,"getEmail");async function SM(t,e){try{let r=hO(e),n=new mO.Strategy(t,r);return n.name="oidc",n}catch(r){throw new Error(`Error constructing OIDC authentication strategy - ${r}`)}}s(SM,"strategyFactory");async function AM(t,e){try{let{clientID:r,clientSecret:n,configUrl:i,pkce:o}=t;if(!r||!n||!e||!i)throw new Error("Configuration invalid. Must contain clientID, clientSecret, callbackUrl and configUrl");let a=await(0,pO.default)(i);if(!a.ok)throw new Error(`Unexpected response when fetching openid-configuration: ${a.statusText}`);let u=await a.json();return{issuer:u.issuer,authorizationURL:u.authorization_endpoint,tokenURL:u.token_endpoint,userInfoURL:u.userinfo_endpoint,clientID:r,clientSecret:n,callbackURL:e,pkce:o}}catch(r){throw new Error(`Error constructing OIDC authentication configuration - ${r}`)}}s(AM,"fetchStrategyConfig");async function _M(){return Fr("oidc")}s(_M,"getCallbackUrl");function gO(t,e){let r=t.request.query?.query;if(t.request.method.toLowerCase()!=="get"&&t.throw(500,"Query to download middleware can only be used for get requests."),!r)return e();let n=decodeURIComponent(r),i;try{i=JSON.parse(n)}catch{return e()}return t.request.body=i,e()}s(gO,"querystringToBody");function Uc(t,e,r={noTenancyRequired:!1}){let n=ir(t),i=ir(e);return async function(o,a){let c={allowNoTenant:r.noTenancyRequired||!!sr(o,i)};sr(o,n)||(c.excludeStrategies=["query"]);let d=Qs(o,c);return d&&o.set("x-budibase-tenant-id",d),De(d,a)}}s(Uc,"tenancy");function EO(t=[]){let e=ir(t);return async function(r,n){if(sr(r,e))return n();try{if((await Ge("settings"))?.config?.active===!1){r.status=404,r.body={message:"Tenant not found"};return}}catch(i){if(i.message==="Global DB not found")return n();throw i}return n()}}s(EO,"activeTenant");async function kc(t,e){if(t.internal||Lt(t.user))return e();let r=await dn(t);return r&&!ic(t.user,r)?t.throw(403,"Workspace Admin/Builder user only endpoint."):!r&&!g.isWorker()?t.throw(403,"This request required a workspace id."):!r&&!Be(t.user)&&t.throw(403,"Admin/Builder user only endpoint."),e()}s(kc,"workspaceBuilderOrAdmin");var qm={};P(qm,{postAuth:()=>wM,preAuth:()=>IM});var OM=require("passport-google-oauth").OAuth2Strategy;async function yO(){let t=await ym();if(!t)throw new Error("No google configuration found");return t}s(yO,"fetchGoogleCreds");async function IM(t,e,r){let n=await yO(),o=`${await Po({tenantAware:!1})}/api/global/auth/datasource/google/callback`,a=await Vm(n,o,Mo);return e.query.appId||e.throw(400,"appId query param not present."),t.authenticate(a,{scope:["profile","email","https://www.googleapis.com/auth/spreadsheets"],accessType:"offline",prompt:"consent"})(e,r)}s(IM,"preAuth");async function wM(t,e,r){let n=await yO(),o=`${await Po({tenantAware:!1})}/api/global/auth/datasource/google/callback`,a=zt(e,"budibase:datasourceauth");if(!a)throw new Error("Unable to fetch datasource auth cookie");return t.authenticate(new OM({clientID:n.clientID,clientSecret:n.clientSecret,callbackURL:o},(u,c,l,d)=>{Jt(e,"budibase:datasourceauth"),d(null,{accessToken:u,refreshToken:c})}),{successRedirect:"/",failureRedirect:"/error"},async(u,c)=>{let l=`/builder/workspace/${a.appId}/data`,d=X();await gn(`datasource:creation:${a.appId}:google:${d}`,{tokens:c}),e.redirect(`${l}/new?continue_google_setup=${d}`)})(e,r)}s(wM,"postAuth");var RM={google:qm};var TO=require("koa-passport"),CM=require("passport-local").Strategy,Mc=require("passport-oauth2-refresh"),DM=bc,bM=Uc,xM=Nc,vM=TO;TO.use(new CM(Ri.options,Ri.authenticate));async function NM(t,e){let r=await ar.getCallbackUrl(),n,i;try{if(n=await ar.fetchStrategyConfig(t,r),!n)throw new Error("OIDC Config contents invalid");i=await ar.strategyFactory(n,Mo)}catch{throw new Error("Could not refresh OAuth Token")}return Mc.use(i),new Promise(o=>{Mc.requestNewAccessToken("oidc",e,(a,u,c,l)=>{o({err:a,accessToken:u,refreshToken:c,params:l})})})}s(NM,"refreshOIDCAccessToken");async function PM(t,e){let r=await or.getCallbackUrl(t),n;try{n=await or.strategyFactory(t,r,Mo)}catch(i){throw new Error(`Error constructing OIDC refresh strategy: message=${i.message}`)}return Mc.use(n),new Promise(i=>{Mc.requestNewAccessToken("google",e,(o,a,u,c)=>{i({err:o,accessToken:a,refreshToken:u,params:c})})})}s(PM,"refreshGoogleAccessToken");async function LM(t,e,r){switch(e){case"oidc":{if(!r)return{err:{data:"OIDC config id not provided"}};let n=await Tm(r);return n?NM(n,t):{err:{data:"OIDC configuration not found"}}}case"google":{let n=await fc();return n?PM(n,t):{err:{data:"Google configuration not found"}}}}}s(LM,"refreshOAuthToken");async function UM(t,e){let r={accessToken:e.accessToken,refreshToken:e.refreshToken};try{let n=z(),i=await n.get(t);typeof r.refreshToken!="string"&&delete r.refreshToken,i.oauth2={...i.oauth2,...r},await n.put(i),await xo(t)}catch(n){console.error("Could not update OAuth details for current user",n)}}s(UM,"updateUserOAuth");async function kM(t){let e=t.ctx,r=t.userId,n=t.keepActiveSession;if(!e)throw new Error("Koa context must be supplied to logout.");let i=zt(e,"budibase:auth"),o=await ho(r);i&&n?o=o.filter(u=>u.sessionId!==i.sessionId):Jt(e,"budibase:auth");let a=o.map(({sessionId:u})=>u);await An(r,{sessionIds:a,reason:"logout"}),await rc.logout(e.user?.email),await xo(r)}s(kM,"platformLogout");var Hm={};P(Hm,{validate:()=>GM});var v=W(require("joi"));var MM=["Relational","Non-relational","Spreadsheet","Object store","Graph","API"];function jm(t,e){let{error:r}=t.validate(e);if(r)throw r}s(jm,"runJoi");function FM(t){let e=v.default.object({type:v.default.string().allow("component").required(),metadata:v.default.object().unknown(!0).required(),hash:v.default.string().optional(),version:v.default.string().optional(),schema:v.default.object({name:v.default.string().required(),settings:v.default.array().items(v.default.object().unknown(!0)).required()}).unknown(!0)});jm(e,t)}s(FM,"validateComponent");function BM(t){let e=v.default.object({type:v.default.string().allow(...Object.values(Gc)).required(),required:v.default.boolean().required(),default:v.default.any(),display:v.default.string()}),r=v.default.object({type:v.default.string().allow(...Object.values(Wc)),readable:v.default.boolean(),displayName:v.default.string(),fields:v.default.object().pattern(v.default.string(),e)}).required(),n=v.default.object({type:v.default.string().allow("datasource").required(),metadata:v.default.object().unknown(!0).required(),hash:v.default.string().optional(),version:v.default.string().optional(),schema:v.default.object({docs:v.default.string(),plus:v.default.boolean().optional(),isSQL:v.default.boolean().optional(),auth:v.default.object({type:v.default.string().required()}).optional(),features:v.default.object(Object.fromEntries(Object.values($c).map(i=>[i,v.default.boolean().optional()]))).optional(),relationships:v.default.boolean().optional(),description:v.default.string().required(),friendlyName:v.default.string().required(),type:v.default.string().allow(...MM),datasource:v.default.object().pattern(v.default.string(),e).required(),query:v.default.object().pattern(v.default.string(),r).unknown(!0).required(),extra:v.default.object().pattern(v.default.string(),v.default.object({type:v.default.string().required(),displayName:v.default.string().required(),required:v.default.boolean(),data:v.default.object()}))})});jm(n,t)}s(BM,"validateDatasource");function WM(t){let e=v.default.object().pattern(v.default.string(),{type:v.default.string().allow(...Object.values(Vc)).required(),customType:v.default.string().allow(...Object.values(qc)),title:v.default.string(),description:v.default.string(),enum:v.default.array().items(v.default.string()),pretty:v.default.array().items(v.default.string())}),r=v.default.object({properties:e,required:v.default.array().items(v.default.string())}).concat(e).required(),n=v.default.object({type:v.default.string().allow("automation").required(),metadata:v.default.object().unknown(!0).required(),hash:v.default.string().optional(),version:v.default.string().optional(),schema:v.default.object({name:v.default.string().required(),tagline:v.default.string().required(),icon:v.default.string().required(),description:v.default.string().required(),type:v.default.string().allow("ACTION","LOGIC").required(),stepId:v.default.string().disallow(...hh).required(),inputs:v.default.object().optional(),schema:v.default.object({inputs:r,outputs:r}).required()})});jm(n,t)}s(WM,"validateAutomation");function GM(t){switch(t?.type){case"component":FM(t);break;case"datasource":BM(t);break;case"automation":WM(t);break;default:throw new Error(`Unknown plugin type - check schema.json: ${t.type}`)}}s(GM,"validate");var Ym={};P(Ym,{Client:()=>Re,clients:()=>_r,locks:()=>yn,utils:()=>Ha});var Jm={};P(Jm,{init:()=>VM});var $M={"user:created":t=>t.userId,"user:updated":t=>t.userId,"user:deleted":t=>t.userId,"user:admin:assigned":t=>t.userId,"user:admin:removed":t=>t.userId,"user:builder:assigned":t=>t.userId,"user:builder:removed":t=>t.userId,"user_group:created":t=>t.groupId,"user_group:updated":t=>t.groupId,"user_group:deleted":t=>t.groupId,"user_group:user_added":t=>t.groupId,"user_group:users_deleted":t=>t.groupId,"user_group:permissions_edited":t=>t.groupId,"automation:deleted":t=>t.automationId,"datasource:deleted":t=>t.datasourceId,"table:deleted":t=>t.tableId,"query:deleted":t=>t.queryId,"workspace_app:deleted":t=>t.workspaceAppId,"view:deleted":t=>t.id};function SO(t,e){let r=$M[t];if(!r)throw new Error("Event does not have a method of document ID extraction");return r(e)}s(SO,"getDocumentId");var Fo=class{constructor(e){this.processors=[];this.processors=e}static{s(this,"DocumentUpdateProcessor")}async processEvent(e,r,n){let i=r.realTenantId,o=SO(e,n);if(!(!i||!o))for(let{events:a,processor:u}of this.processors)a.includes(e)&&await De(i,async()=>{await u({id:o,tenantId:i,appId:n.appId,properties:n})})}shutdown(){return GA()}};var AO,zm;function VM(t){At||Xu(),zm||(zm=new Fo(t)),AO||(AO=At.process(async e=>{let{event:r,identity:n,properties:i}=e.data;await zm.processEvent(r,n,i)}))}s(VM,"init");var oh={};P(oh,{COUNT_FIELD_NAME:()=>ih,Sql:()=>bO,SqlTable:()=>Fc,designDoc:()=>sh,utils:()=>wf});var wO=require("knex");var qM=require("knex");function Xm(t){return["link","formula","ai"].indexOf(t)!==-1}s(Xm,"isIgnoredType");function _O(t,e,r,n,i){let o=e&&e.primary?e.primary:[],a=Object.values(e.schema),u=a.filter(h=>h.meta),c=u.length===a.length,l=[];n||(c?t.primary(u.map(h=>h.name)):o.length===1?(t.increments(o[0]).primary(),l.push(o[0])):t.primary(o));let d=Object.values(e.schema).map(h=>h.foreignKey);for(let[h,m]of Object.entries(e.schema)){let y=n?.schema[h];if(y&&y.type||l.includes(h)||i?.updated===h)continue;let E=m.type;switch(E){case"string":case"options":case"longform":case"barcodeqr":case"bb_reference_single":o.includes(h)?t.string(h,255):t.text(h);break;case"number":if(m.meta&&m.meta.toKey&&m.meta.toTable){let{toKey:p,toTable:T}=m.meta;t.integer(h).unsigned(),t.foreign(h).references(`${T}.${p}`)}else d.indexOf(h)===-1&&t.float(h);break;case"bigint":t.bigint(h);break;case"boolean":t.boolean(h);break;case"datetime":m.timeOnly?t.time(h):t.datetime(h,{useTz:!m.ignoreTimezones});break;case"array":case"bb_reference":Ue.schema.isDeprecatedSingleUserColumn(m)?t.text(h):t.json(h);break;case"link":if(m.relationshipType!=="many-to-one"&&m.relationshipType!=="many-to-many"){if(!m.foreignKey||!m.tableId)throw new Error("Invalid relationship schema");let{tableName:p}=Sf(m.tableId),T=r[p];if(!T||!T.primary)throw new Error("Referenced table doesn't exist or has no primary keys");let A=T.primary[0],_=T.schema[A].externalType;_?t.specificType(m.foreignKey,_):t.integer(m.foreignKey).unsigned(),t.foreign(m.foreignKey).references(`${p}.${A}`)}break;case"signature_single":case"attachment":case"attachment_single":t.json(h);break;case"formula":break;case"ai":break;case"auto":case"json":case"internal":throw new Error(`${m.type} is not a valid SQL type`);default:Rt.unreachable(E)}}let f=i?n?.schema[i.old].type:void 0;return i&&f&&!Xm(f)&&t.renameColumn(i.old,i.updated),n&&Object.entries(n.schema).filter(([m,y])=>!Xm(y.type)&&e.schema[m]==null).forEach(([m,y])=>{i?.old===m||Xm(y.type)||(n.constrained&&n.constrained.indexOf(m)!==-1&&t.dropForeign(m),t.dropColumn(m))}),t}s(_O,"generateSchema");function QM(t,e,r){return t.createTable(e.name,n=>{_O(n,e,r)})}s(QM,"buildCreateTable");function jM(t,e,r,n,i){return t.alterTable(e.name,o=>{_O(o,e,r,n,i)})}s(jM,"buildUpdateTable");function HM(t,e){return t.dropTable(e.name)}s(HM,"buildDeleteTable");var Zm=class{static{s(this,"SqlTableQueryBuilder")}constructor(e){this.sqlClient=e}getBaseSqlClient(){return this.sqlClient}getSqlClient(){return this.extendedSqlClient||this.sqlClient}setExtendedSqlClient(e){this.extendedSqlClient=e}_operation(e){return e.operation}_tableQuery(e){let r=(0,qM.knex)({client:this.sqlClient}).schema;e?.schema&&(r=r.withSchema(e.schema));let n;if(!e.table||!e.tables)throw new Error("Cannot execute without table being specified");if(e.table.sourceType==="internal")throw new Error("Cannot perform table actions for SQS.");switch(this._operation(e)){case"CREATE_TABLE":n=QM(r,e.table,e.tables);break;case"UPDATE_TABLE":if(!e.table)throw new Error("Must specify old table for update");if(this.sqlClient==="mysql2"&&e.meta?.renamed){let i=e.meta.renamed.updated;return{sql:`alter table ${e?.schema?`\`${e.schema}\`.\`${e.table.name}\``:`\`${e.table.name}\``} rename column \`${e.meta.renamed.old}\` to \`${i}\`;`,bindings:[]}}if(n=jM(r,e.table,e.tables,e.meta?.oldTable,e.meta?.renamed),this.sqlClient==="mssql"&&e.meta?.renamed){let i=e.meta.renamed.old,o=e.meta.renamed.updated,a=e?.schema?`${e.schema}.${e.table.name}`:`${e.table.name}`,u=Jn(n);if(Array.isArray(u))for(let c of u)c.sql.startsWith("exec sp_rename")&&(c.sql=`exec sp_rename '${a}.${i}', '${o}', 'COLUMN'`,c.bindings=[]);return u}break;case"DELETE_TABLE":n=HM(r,e.table);break;default:throw new Error("Table operation is of unknown type")}return Jn(n)}},Fc=Zm;var RO=require("lodash");var ih="__bb_total";function OO(){return(g.SQL_MAX_ROWS?parseInt(g.SQL_MAX_ROWS):null)||5e3}s(OO,"getBaseLimit");function eh(){return(g.SQL_MAX_RELATED_ROWS?parseInt(g.SQL_MAX_RELATED_ROWS):null)||500}s(eh,"getRelationshipLimit");function YM(t,e){return t.sort((r,n)=>{let i=e.find(a=>a&&r.endsWith(a)),o=e.find(a=>a&&n.endsWith(a));return i&&!o?-1:!i&&o?1:r.localeCompare(n)})}s(YM,"prioritisedArraySort");function CO(t){return Array.isArray(t)?t.map(e=>CO(e)):(t.bindings&&(t.bindings=t.bindings.map(e=>typeof e=="boolean"?e?1:0:e)),t)}s(CO,"convertBooleans");function IO(t){return t.sourceType==="internal"||t.sourceId===jc}s(IO,"isSqs");function zM(t,e='"'){return t.replace(new RegExp(e,"g"),`${e}${e}`)}s(zM,"escapeQuotes");function JM(t,e='"'){return`${e}${zM(t,e)}${e}`}s(JM,"wrap");function XM(t,e='"'){for(let r in t)typeof t[r]=="string"&&(t[r]=JM(t[r],e));return`[${t.join(",")}]`}s(XM,"stringifyArray");function th(t){return`{${(Array.isArray(t)?t:t==null?[]:[t]).map(n=>{if(typeof n=="string"&&n.length>1){let i=n[0],o=n[n.length-1];if(i==='"'&&o==='"'||i==="'"&&o==="'")return n.substring(1,n.length-1)}return`${n}`}).join(",")}}`}s(th,"toPgArrayLiteral");function DO(t){return Eh.includes(t.type)&&!Ue.schema.isDeprecatedSingleUserColumn(t)}s(DO,"isJsonColumn");var ZM={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},rh=class{constructor(e,r,n){this.SPECIAL_SELECT_CASES={POSTGRES_ARRAY:s(e=>this.client==="pg"&&e?.externalType?.toLowerCase()==="array","POSTGRES_ARRAY"),POSTGRES_MONEY:s(e=>this.client==="pg"&&e?.externalType?.includes("money"),"POSTGRES_MONEY"),POSTGRES_ENUM:s(e=>this.client==="pg"&&e?.externalType?.toLowerCase()==="user-defined"&&e?.type==="options","POSTGRES_ENUM"),MSSQL_DATES:s(e=>this.client==="mssql"&&e?.type==="datetime"&&e.timeOnly,"MSSQL_DATES")};this.client=e,this.query=n,this.knex=r,this.splitter=new Er.ColumnSplitter([this.table],{aliases:this.query.tableAliases,columnPrefix:this.query.meta?.columnPrefix})}static{s(this,"InternalBuilder")}get table(){return this.query.table}get knexClient(){return this.knex.client}getFieldSchema(e){let{column:r}=this.splitter.run(e);return this.table.schema[r]}requiresJsonAsStringClient(){return["mssql","mysql2","mariadb","oracledb"].includes(this.client)}quoteChars(){let e=this.knexClient.wrapIdentifier("foo",{});return[e[0],e[e.length-1]]}quote(e){return this.knexClient.wrapIdentifier(e,{})}isQuoted(e){let[r,n]=this.quoteChars();return e.startsWith(r)&&e.endsWith(n)}quotedIdentifier(e){return Array.isArray(e)||(e=this.splitIdentifier(e)),e.map(r=>this.quote(r)).join(".")}castIntToString(e){switch(this.client){case"oracledb":return this.knex.raw("to_char(??)",[e]);case"pg":return this.knex.raw("??::TEXT",[e]);case"mysql2":case"mariadb":return this.knex.raw("CAST(?? AS CHAR)",[e]);case"sqlite3":return this.knex.raw("printf('%d', ??)",[e]);case"mssql":return this.knex.raw("CONVERT(NVARCHAR, ??)",[e])}}rawQuotedIdentifier(e){return this.knex.raw(this.quotedIdentifier(e))}splitIdentifier(e){let[r,n]=this.quoteChars();return this.isQuoted(e)?e.slice(1,-1).split(`${n}.${r}`):e.split(".")}qualifyIdentifier(e){let r=this.getTableName(),n=this.splitIdentifier(e);return n[0]!==r&&n.unshift(r),this.isQuoted(e)?this.quotedIdentifier(n):n.join(".")}generateSelectStatement(){let{table:e,resource:r}=this.query;if(!r||!r.fields||r.fields.length===0)return"*";let n=this.getTableName(e),i=this.table.schema;return r.fields.map(a=>{let u=a.split(/\./g),c,l=u[0];return u.length>1&&(c=u[0],l=u.slice(1).join(".")),{table:c,column:l,field:a}}).filter(({table:a})=>!a||a===n).map(({table:a,column:u,field:c})=>{let l=i[u];return this.SPECIAL_SELECT_CASES.POSTGRES_MONEY(l)?this.knex.raw("??::money::numeric as ??",[this.rawQuotedIdentifier([a,u].join(".")),this.knex.raw(this.quote(c))]):this.SPECIAL_SELECT_CASES.MSSQL_DATES(l)?this.knex.raw("CONVERT(varchar, ??, 108) as ??",[this.rawQuotedIdentifier(c),this.knex.raw(this.quote(c))]):a?this.rawQuotedIdentifier(`${a}.${u}`):this.rawQuotedIdentifier(c)})}convertClobs(e,r){if(this.client!=="oracledb")throw new Error("you've called convertClobs on a DB that's not Oracle, this is a mistake");let i=this.splitIdentifier(e).pop(),o=this.table.schema[i],a=this.rawQuotedIdentifier(e);return(o.type==="string"||o.type==="longform"||o.type==="bb_reference_single"||o.type==="bb_reference"||o.type==="options"||o.type==="barcodeqr")&&(r?.forSelect?a=this.knex.raw("to_char(??) as ??",[a,this.rawQuotedIdentifier(i)]):a=this.knex.raw("to_char(??)",[a])),a}parse(e,r){if(Array.isArray(e))return JSON.stringify(e);if(e==null)return null;if(this.requiresJsonAsStringClient()&&DO(r)&&typeof e=="object")return JSON.stringify(e);if(this.SPECIAL_SELECT_CASES.POSTGRES_ARRAY(r))return`{${e}}`;if(this.client==="oracledb"&&r.type==="datetime"&&r.timeOnly){if(e instanceof Date){let n=e.getHours().toString().padStart(2,"0"),i=e.getMinutes().toString().padStart(2,"0"),o=e.getSeconds().toString().padStart(2,"0");return`${n}:${i}:${o}`}if(typeof e=="string")return new Date(`1970-01-01T${e}Z`)}if(typeof e=="string"&&r.type==="datetime")if(r.timeOnly){if(!Of(e))return null}else if(r.dateOnly){let n=_f(e);return n?new Date(n):null}else return r.ignoreTimezones?Xa(e)?new Date(e):Af(e)?new Date(e+"Z"):null:Xa(e)?new Date(e.trim()):null;return e}parseBody(e){for(let[r,n]of Object.entries(e)){let{column:i}=this.splitter.run(r),o=this.table.schema[i];o&&(e[r]=this.parse(n,o))}return e}parseFilters(e){e=(0,RO.cloneDeep)(e);for(let r of Object.values(Gr)){let n=e[r];if(n)for(let i of Object.keys(n)){if(Array.isArray(n[i])){n[i]=JSON.stringify(n[i]);continue}let{column:o}=this.splitter.run(i),a=this.table.schema[o];a&&(n[i]=this.parse(n[i],a))}}for(let r of Object.values(cr)){let n=e[r];if(n)for(let i of Object.keys(n)){let{column:o}=this.splitter.run(i),a=this.table.schema[o];a&&(n[i]=n[i].map(u=>this.parse(u,a)))}}for(let r of Object.values(Cn)){let n=e[r];if(n)for(let i of Object.keys(n)){let{column:o}=this.splitter.run(i),a=this.table.schema[o];if(!a)continue;let u=n[i];"low"in u&&(u.low=this.parse(u.low,a)),"high"in u&&(u.high=this.parse(u.high,a))}}return e}addJoinFieldCheck(e,r){let n=r.from?.split(".")[0]||"";return e.andWhere(`${n}.fieldName`,"=",r.column)}addRelationshipForFilter(e,r,n,i,o){let{relationships:a,schema:u,tableAliases:c,table:l}=this.query,d=c?.[l.name]||l.name,f=s(h=>n.match(new RegExp(`^${h}\\.`)),"matches");if(!a)return e;for(let h of a){let m=h.tableName,y=c?.[m]||m,E=f(m)||f(y),p=f(h.column),T=h.column===this.splitter.run(n).column&&!this.splitter.run(n).tableName;if((E||p||T)&&h.to&&h.tableName){let A=this.knex.select(this.knex.raw(1)).from({[y]:m}),_=A.clone(),I=If(h),O;if(E?O=n:O=n.replace(new RegExp(`^${h.column}.`),`${c?.[h.tableName]||h.tableName}.`),I){let C=c?.[I.through]||h.through,R=this.tableNameWithSchema(I.through,{alias:C,schema:u});_=_.innerJoin(R,function(){this.on(`${y}.${I.toPrimary}`,"=",`${C}.${I.to}`)}).where(`${C}.${I.from}`,"=",this.rawQuotedIdentifier(`${d}.${I.fromPrimary}`)),this.client==="sqlite3"&&(_=this.addJoinFieldCheck(_,I)),T&&i==="empty"?e=e.whereNotExists(_):T&&i==="notEmpty"?e=e.whereExists(_):e=e.where(w=>{w.whereExists(o(O,_)),r&&w.orWhereNotExists(A.clone().innerJoin(R,function(){this.on(`${d}.${I.fromPrimary}`,"=",`${C}.${I.from}`)}))})}else{let C=`${y}.${h.to}`,R=`${d}.${h.from}`;_=_.where(C,"=",this.rawQuotedIdentifier(R)),T&&i==="empty"?e=e.whereNotExists(_):T&&i==="notEmpty"?e=e.whereExists(_):e=e.where(w=>{w.whereExists(o(O,_.clone())),r&&w.orWhereNotExists(_)})}}}return e}addFilters(e,r,n){if(!r)return e;let i=this;r=this.parseFilters({...r});let o=this.query.tableAliases,a=r.allOr,c=this.client==="sqlite3"?this.table._id:this.table.name;function l(E){return o?.[E]||E}s(l,"getTableAlias");function d(E,p,T,A){let _=s((I,O,C)=>{let[R,...w]=O.split("."),b=w.join("."),G=l(R);return I.andWhere(ee=>T(ee,G?`${G}.${b}`:b,C))},"handleRelationship");for(let I in E){let O=E[I],C=Ks(I),R=C.includes(".")||i.getFieldSchema(C)?.type==="link",w=n?.relationship&&R,b;if(I==="_complexIdOperator"&&(b=E[I])&&A){let G=l(c);e=A(e,b.id.map(ee=>G?`${G}.${ee}`:ee),b.values)}else if(R)w&&(a&&(e=e.or),e=i.addRelationshipForFilter(e,ZM[p],C,p,(G,ee)=>_(ee,G,O)));else{let G=l(c);e=T(e,G?`${G}.${C}`:C,O)}}}s(d,"iterate");let f=this.client==="sqlite3"&&this.query.meta?.sqliteUseLikeWithoutLower,h=s((E,p,T)=>((r?.fuzzyOr||a)&&(E=E.or),f?E.whereRaw("?? LIKE ?",[this.rawQuotedIdentifier(p),`%${T}%`]):this.client==="oracledb"||this.client==="sqlite3"?E.whereRaw("LOWER(??) LIKE ?",[this.rawQuotedIdentifier(p),`%${T.toLowerCase()}%`]):E.whereILike(this.rawQuotedIdentifier(p),this.knex.raw("?",[`%${T}%`]))),"like"),m=s((E,p=!1)=>{function T(A){return(a||E===r?.containsAny)&&(A=A.or),E===r?.notContains&&(A=A.not),A}s(T,"addModifiers"),this.client==="pg"?d(E,"contains",(A,_,I)=>{A=T(A);let O=this.getFieldSchema(_),C=this.rawQuotedIdentifier(_),R=Array.isArray(I)?[...I]:[I],w=this.SPECIAL_SELECT_CASES.POSTGRES_ARRAY(O);return p?w?A.whereRaw("COALESCE(?? && ?::text[], FALSE)",[C,th(R)]):A.whereRaw("COALESCE(??::jsonb \\?| ?::text[], FALSE)",[C,th(R)]):w?A.whereRaw("COALESCE(?? @> ?::text[], FALSE)",[C,th(R)]):A.whereRaw("COALESCE(??::jsonb @> ?::jsonb, FALSE)",[C,XM(R)])}):this.client==="mysql2"||this.client==="mariadb"?d(E,"contains",(A,_,I)=>{let O=Array.isArray(I)?I:[I];return T(A).whereRaw("COALESCE(?(??, ?), FALSE)",[this.knex.raw(p?"JSON_OVERLAPS":"JSON_CONTAINS"),this.rawQuotedIdentifier(_),JSON.stringify(O)])}):d(E,"contains",(A,_,I)=>(I.length===0||(A=A.where(O=>(E===r?.notContains&&(O=O.not),O=O.where(C=>{for(let R of I){E===r?.containsAny?C=C.or:C=C.and;let w=!f,b=typeof R=="string"?`"${w?R.toLowerCase():R}"`:R,G=w?"COALESCE(LOWER(??), '')":"COALESCE(??, '')";C=C.whereLike(this.knex.raw(G,[this.rawQuotedIdentifier(_)]),`%${b}%`)}}),E===r?.notContains&&(O=O.or.whereNull(this.rawQuotedIdentifier(_))),O))),A))},"contains");if(r.$and){let{$and:E}=r;for(let p of E.conditions)e=e.where(T=>{this.addFilters(T,p,n)})}if(r.$or){let{$or:E}=r;e=e.where(p=>{for(let T of E.conditions)p.orWhere(A=>this.addFilters(A,{...T,allOr:!0},n))})}r.oneOf&&d(r.oneOf,"oneOf",(E,p,T)=>{let A=this.getFieldSchema(p),_=Array.isArray(T)?T:[T];if(a&&(E=E.or),this.client==="oracledb")p=this.convertClobs(p);else if(this.client==="sqlite3"&&A?.type==="datetime"&&A.dateOnly){for(let I of _)I!=null?E=E.or.whereLike(p,`${I.toISOString().slice(0,10)}%`):E=E.or.whereNull(p);return E}return E.whereIn(p,_)},(E,p,T)=>(a&&(E=E.or),this.client==="oracledb"&&(p=p.map(A=>this.convertClobs(A))),E.whereIn(p,Array.isArray(T)?T:[T]))),r.notOneOf&&d(r.notOneOf,"notOneOf",(E,p,T)=>{let A=this.getFieldSchema(p),_=Array.isArray(T)?T:[T];if(a&&(E=E.or),this.client==="oracledb")p=this.convertClobs(p);else if(this.client==="sqlite3"&&A?.type==="datetime"&&A.dateOnly)return E.where(I=>{I.whereNot(O=>{for(let C of _)C!=null&&O.orWhereLike(p,`${C.toISOString().slice(0,10)}%`)}).orWhereNull(p)});return E.where(I=>{I.whereNotIn(p,_).orWhereNull(p)})},(E,p,T)=>(a&&(E=E.or),this.client==="oracledb"&&(p=p.map(A=>this.convertClobs(A))),E.whereNotIn(p,Array.isArray(T)?T:[T]))),r.string&&d(r.string,"string",(E,p,T)=>{if(a&&(E=E.or),f)return E.whereRaw("?? LIKE ?",[this.rawQuotedIdentifier(p),`${T}%`]);if(this.client==="oracledb"||this.client==="sqlite3")return E.whereRaw("LOWER(??) LIKE ?",[this.rawQuotedIdentifier(p),`${T.toLowerCase()}%`]);{let A=this.getFieldSchema(p);return this.SPECIAL_SELECT_CASES.POSTGRES_ENUM(A)?E.whereRaw("??::text ilike ?",[this.knex.raw(this.quote(A.name)),`${T}%`]):E.whereILike(p,`${T}%`)}}),r.fuzzy&&d(r.fuzzy,"fuzzy",h),r.range&&d(r.range,"range",(E,p,T)=>{let A=s(b=>b&&Object.keys(b).length===0&&Object.getPrototypeOf(b)===Object.prototype,"isEmptyObject");A(T.low)&&(T.low=""),A(T.high)&&(T.high="");let _=Za(T.low),I=Za(T.high),O=this.getFieldSchema(p),C=p,R=T.high,w=T.low;return this.client==="sqlite3"&&O?.type==="datetime"&&O.dateOnly&&(R!=null&&(R=`${R.toISOString().slice(0,10)}T23:59:59.999Z`),w!=null&&(w=w.toISOString().slice(0,10))),this.client==="oracledb"?C=this.convertClobs(p):this.client==="sqlite3"&&O?.type==="bigint"&&(C=this.knex.raw("CAST(?? AS INTEGER)",[this.rawQuotedIdentifier(p)]),R=this.knex.raw("CAST(? AS INTEGER)",[T.high]),w=this.knex.raw("CAST(? AS INTEGER)",[T.low])),a&&(E=E.or),_&&I?E.whereBetween(C,[w,R]):_?E.where(C,">=",w):I?E.where(C,"<=",R):E}),r.equal&&d(r.equal,"equal",(E,p,T)=>{let A=this.getFieldSchema(p);if(a&&(E=E.or),this.client==="mssql")return E.whereRaw("CASE WHEN ?? = ? THEN 1 ELSE 0 END = 1",[this.rawQuotedIdentifier(p),T]);if(this.client==="oracledb"){let _=this.convertClobs(p);return E.where(I=>I.whereNotNull(_).andWhere(_,T))}else return this.client==="sqlite3"&&A?.type==="datetime"&&A.dateOnly?T!=null?E.whereLike(p,`${T.toISOString().slice(0,10)}%`):E.whereNull(p):E.whereRaw("COALESCE(?? = ?, FALSE)",[this.rawQuotedIdentifier(p),T])}),r.notEqual&&d(r.notEqual,"notEqual",(E,p,T)=>{let A=this.getFieldSchema(p);if(a&&(E=E.or),this.client==="mssql")return E.whereRaw("CASE WHEN ?? = ? THEN 1 ELSE 0 END = 0",[this.rawQuotedIdentifier(p),T]);if(this.client==="oracledb"){let _=this.convertClobs(p);return E.where(I=>I.not.whereNull(_).and.where(_,"!=",T)).or.whereNull(_)}else return this.client==="sqlite3"&&A?.type==="datetime"&&A.dateOnly?T!=null?E.not.whereLike(p,`${T.toISOString().slice(0,10)}%`).or.whereNull(p):E.not.whereNull(p):E.whereRaw("COALESCE(?? != ?, TRUE)",[this.rawQuotedIdentifier(p),T])}),r.empty&&d(r.empty,"empty",(E,p)=>(a&&(E=E.or),E.whereNull(p))),r.notEmpty&&d(r.notEmpty,"notEmpty",(E,p)=>(a&&(E=E.or),E.whereNotNull(p))),r.contains&&m(r.contains),r.notContains&&m(r.notContains),r.containsAny&&m(r.containsAny,!0);let y=o?.[this.table._id]||this.table._id;return r.documentType&&!Tf(this.table)&&y&&e.andWhereLike(`${y}._id`,`${It(r.documentType)}%`),e}isSqs(){return IO(this.table)}getTableName(e){e||(e=this.table);let r=e.name;IO(e)&&e._id&&(r=e._id);let n=this.query.tableAliases||{};return n[r]?n[r]:r}addDistinctCount(e){if(!this.table.primary)throw new Error("SQL counting requires primary key to be supplied");return e.countDistinct(`${this.getTableName()}.${this.table.primary[0]} as ${ih}`)}addAggregations(e,r){let n=this.query.resource?.fields||[],i=this.getTableName();if(n.length>0){let o=n.map(a=>this.qualifyIdentifier(a));if(this.client==="oracledb"){let a=o.map(c=>this.convertClobs(c)),u=o.map(c=>this.convertClobs(c,{forSelect:!0}));e=e.groupBy(a).select(u)}else e=e.groupBy(o).select(o)}for(let o of r){let a=o.calculationType;if(a==="count")if("distinct"in o&&o.distinct)if(this.client==="oracledb"){let u=this.convertClobs(`${i}.${o.field}`);e=e.select(this.knex.raw("COUNT(DISTINCT ??) as ??",[u,o.name]))}else e=e.countDistinct(`${i}.${o.field} as ${o.name}`);else if(this.client==="oracledb"){let u=this.convertClobs(`${i}.${o.field}`);e=e.select(this.knex.raw("COUNT(??) as ??",[u,o.name]))}else e=e.count(`${o.field} as ${o.name}`);else{let u=this.getFieldSchema(o.field);if(!u)throw new Error(`field schema missing for aggregation target: ${o.field}`);let c=this.knex.raw("??(??)",[this.knex.raw(a),this.rawQuotedIdentifier(`${i}.${o.field}`)]);u.type==="bigint"&&(c=this.castIntToString(c)),e=e.select(this.knex.raw("?? as ??",[c,o.name]))}}return e}isAggregateField(e){return!!this.query.resource?.aggregations?.find(n=>n.name===e)}addSorting(e){let{sort:r,resource:n}=this.query,i=this.table.primary,o=this.getTableName();if(!Array.isArray(i))throw new Error("Sorting requires primary key to be specified for table");if(r&&Object.keys(r||{}).length>0)for(let[u,c]of Object.entries(r)){let l=this.getFieldSchema(u);if(this.isUnsortableField(l))continue;let d=c.direction==="ascending"?"asc":"desc",f;(this.client==="pg"||this.client==="oracledb")&&(f=c.direction==="ascending"?"first":"last");let h=`${o}.${u}`,m;this.isAggregateField(u)?m=this.rawQuotedIdentifier(u):this.client==="oracledb"?m=this.convertClobs(h):m=this.rawQuotedIdentifier(h),e=e.orderByRaw(`?? ?? ${f?"nulls ??":""}`,[m,this.knex.raw(d),...f?[this.knex.raw(f)]:[]])}if(!((n?.aggregations?.length??0)>0)){let u=this.findSortablePrimaryKey(i);if(u&&(!r||r[u]===void 0))e=e.orderBy(`${o}.${u}`);else if(!u&&(!r||Object.keys(r).length===0))throw new Error(`Primary key not found for table ${this.table.name}`)}return e}isUnsortableField(e){return e?.type==="json"}findSortablePrimaryKey(e){return e.find(r=>{if(r==null)return!1;let n=this.getFieldSchema(r);return!this.isUnsortableField(n)})}tableNameWithSchema(e,r){let n=r?.schema?`${r.schema}.${e}`:e;return r?.alias&&(n+=` as ${r.alias}`),n}buildJsonField(e,r){let n=r.split("."),i=n[n.length-1],o,a;if(n.length>1){let l=n.shift();o=n.join("."),a=`${l}.${o}`}else o=n.join("."),a=o;this.query.meta?.columnPrefix&&(i=i.replace(this.query.meta.columnPrefix,""));let u=this.rawQuotedIdentifier(a),c=e.schema[i];return c&&c.type==="bigint"&&(u=this.castIntToString(u)),[o,u]}maxFunctionParameters(){switch(this.client){case"sqlite3":return 127;case"pg":return 100;default:return 200}}addJsonRelationships(e,r,n){let i=this.client,o=this.knex,{resource:a,tableAliases:u,schema:c,tables:l}=this.query,d=a?.fields||[];for(let f of n){let{tableName:h,through:m,to:y,from:E,fromPrimary:p,toPrimary:T}=f;if(!h||!r)continue;let A=l[h];if(!A)throw new Error(`related table "${h}" not found in datasource`);let _=u?.[h]||h,I=u?.[r]||r,O=m&&u?.[m]||m,C=this.tableNameWithSchema(h,{alias:_,schema:c}),R=[...A?.primary||[],A?.primaryDisplay].filter(V=>V),w=YM(d.filter(V=>V.split(".")[0]===_),R);w=w.slice(0,Math.floor(this.maxFunctionParameters()/2));let b=w.map(V=>this.buildJsonField(A,V));if(!b.length)continue;let G=b.map(V=>{let B=this.client==="oracledb"?" VALUE ":",";return this.knex.raw(`?${B}??`,[V[0],V[1]]).toString()}).join(","),ee=`${_}.${T||y}`,M=o.from(C).orderBy(ee),U=m&&T&&p,L=U?`${O}.${E}`:`${_}.${y}`,K=U?`${I}.${p}`:`${I}.${E}`;if(U){let V=this.tableNameWithSchema(m,{alias:O,schema:c});M=M.join(V,function(){this.on(`${_}.${T}`,"=",`${O}.${y}`)})}M=M.where(this.rawQuotedIdentifier(L),"=",this.rawQuotedIdentifier(K));let F=s(V=>(M=M.select(w.map(B=>this.rawQuotedIdentifier(B))).limit(eh()),o.select(V).from({[_]:M})),"standardWrap"),j;switch(i){case"sqlite3":M=this.addJoinFieldCheck(M,f),j=F(this.knex.raw(`json_group_array(json_object(${G}))`));break;case"pg":j=F(this.knex.raw(`json_agg(json_build_object(${G}))`));break;case"mariadb":j=M.select(o.raw(`json_arrayagg(json_object(${G}) LIMIT ${eh()})`));break;case"mysql2":case"oracledb":j=F(this.knex.raw(`json_arrayagg(json_object(${G}))`));break;case"mssql":{let V=o.select("*").from({[I]:M.select(b.map(B=>o.ref(B[1]).as(B[0]))).limit(eh())});j=o.raw(`(SELECT ?? = (${V} FOR JSON PATH))`,[this.rawQuotedIdentifier(_)]);break}default:throw new Error(`JSON relationships not implement for ${i}`)}e=e.select({[f.column]:j})}return e}addJoin(e,r,n){let{tableAliases:i,schema:o}=this.query,a=r.to,u=r.from,c=r.through,l=i?.[a]||a,d=c&&i?.[c]||c,f=i?.[u]||u,h=this.tableNameWithSchema(a,{alias:l,schema:o}),m=c?this.tableNameWithSchema(c,{alias:d,schema:o}):void 0;return c?e=e.leftJoin(m,function(){for(let y of n){let E=y.fromPrimary,p=y.from;this.orOn(`${f}.${E}`,"=",`${d}.${p}`)}}).leftJoin(h,function(){for(let y of n){let E=y.toPrimary,p=y.to;this.orOn(`${l}.${E}`,`${d}.${p}`)}}):e=e.leftJoin(h,function(){for(let y of n){let E=y.from,p=y.to;this.orOn(`${f}.${E}`,"=",`${l}.${p}`)}}),e}qualifiedKnex(e){let r=this.query.tableAliases?.[this.query.table.name];return e?.alias===!1?r=void 0:typeof e?.alias=="string"&&(r=e.alias),this.knex(this.tableNameWithSchema(this.query.table.name,{alias:r,schema:this.query.schema}))}create(e){let{body:r}=this.query;if(!r)throw new Error("Cannot create without row body");let n=this.qualifiedKnex({alias:!1}),i=this.parseBody(r);if(this.client==="oracledb")for(let[o,a]of Object.entries(this.query.table.schema)){if(a.constraints?.presence===!0||a.type==="formula"||a.type==="auto"||a.type==="link"||a.type==="ai")continue;i[o]==null&&(i[o]=null)}else for(let[o,a]of Object.entries(i))a==null&&delete i[o];return e.disableReturning?n.insert(i):n.insert(i).returning("*")}bulkCreate(){let{body:e}=this.query,r=this.qualifiedKnex({alias:!1});if(!Array.isArray(e))return r;let n=e.map(i=>this.parseBody(i));return r.insert(n)}bulkUpsert(){let{body:e}=this.query,r=this.qualifiedKnex({alias:!1});if(!Array.isArray(e))return r;let n=e.map(i=>this.parseBody(i));if(this.client==="pg"||this.client==="sqlite3"||this.client==="mysql2"||this.client==="mariadb"){let i=this.table.primary;if(!i)throw new Error("Primary key is required for upsert");return r.insert(n).onConflict(i).merge()}else if(this.client==="mssql"||this.client==="oracledb")return r.insert(n);return r.upsert(n)}read(e={}){let{operation:r,filters:n,paginate:i,relationships:o,table:a}=this.query,{limits:u}=e,c=this.qualifiedKnex(),l=null,d=u?.query||u?.base;if(i&&i.page&&i.limit){let m=(i.page<=1?0:i.page-1)*i.limit;d=i.limit,l=m}else i&&i.offset&&i.limit?(d=i.limit,l=i.offset):i&&i.limit&&(d=i.limit);r!=="COUNT"&&(d!=null&&(c=c.limit(d)),l!=null&&(c=c.offset(l)));let f=this.query.resource?.aggregations||[];if(r==="COUNT"?c=this.addDistinctCount(c):f.length>0?c=this.addAggregations(c,f):c=c.select(this.generateSelectStatement()),r!=="COUNT"&&(c=this.addSorting(c)),c=this.addFilters(c,n,{relationship:!0}),o?.length&&f.length===0){let h=this.query.tableAliases?.[a.name]||a.name,m=this.addSorting(this.knex.with("paginated",c.clone().clearSelect().select("*")).select(this.generateSelectStatement()).from({[h]:"paginated"}));return this.addJsonRelationships(m,a.name,o)}return c}update(e){let{body:r,filters:n}=this.query;if(!r)throw new Error("Cannot update without row body");let i=this.qualifiedKnex(),o=this.parseBody(r);return i=this.addFilters(i,n,{relationship:!0}),e.disableReturning?i.update(o):i.update(o).returning("*")}delete(e){let{filters:r}=this.query,n=this.qualifiedKnex();return n=this.addFilters(n,r,{relationship:!0}),e.disableReturning?n.delete():n.delete().returning(this.generateSelectStatement())}},nh=class extends Fc{static{s(this,"SqlQueryBuilder")}constructor(e,r=OO()){super(e),this.limit=r}convertToNative(e,r={}){let n=this.getSqlClient();if(r?.disableBindings)return{sql:e.toString()};{let i=Jn(e);return n==="sqlite3"&&(i=CO(i)),i}}_query(e,r={}){let n=this.getSqlClient(),i={client:this.getBaseSqlClient()};(n==="sqlite3"||n==="oracledb")&&(i.useNullAsDefault=!0);let o=(0,wO.knex)(i),a,u=new rh(n,o,e);switch(this._operation(e)){case"CREATE":a=u.create(r);break;case"READ":a=u.read({limits:{query:this.limit,base:OO()}});break;case"COUNT":a=u.read();break;case"UPDATE":a=u.update(r);break;case"DELETE":a=u.delete(r);break;case"BULK_CREATE":a=u.bulkCreate();break;case"BULK_UPSERT":a=u.bulkUpsert();break;case"CREATE_TABLE":case"UPDATE_TABLE":case"DELETE_TABLE":return this._tableQuery(e);default:throw"Operation type is not supported by SQL query builder"}return this.convertToNative(a,r)}async getReturningRow(e,r){if(!r.extra||!r.extra.idFilter)return{};let n=this._query({operation:"READ",datasource:r.datasource,schema:r.schema,table:r.table,tables:r.tables,resource:{fields:[]},filters:r.extra?.idFilter,paginate:{limit:1}});return e(n,"READ")}checkLookupKeys(e,r){if(!e||!r.table.primary)return r;let n=r.table.primary[0];return r.extra={idFilter:{equal:{[n]:e}}},r}async queryWithReturning(e,r,n=i=>i){let i=this.getSqlClient(),o=this._operation(e),a=this._query(e,{disableReturning:!0});if(Array.isArray(a)){let d=[];for(let f of a)d.push(await r(f,o));return d}let u;o==="DELETE"&&(u=n(await this.getReturningRow(r,e)));let c=await r(a,o),l=n(c);if(o==="CREATE"||o==="UPDATE"){let d;i==="mssql"?d=l?.[0].id:(i==="mysql2"||i==="mariadb")&&(d=l?.insertId),u=n(await this.getReturningRow(r,this.checkLookupKeys(d,e)))}return o==="COUNT"?l:o!=="READ"?u:l.length?l:[{[o.toLowerCase()]:!0}]}getTableName(e,r){let n=e.name;if(e.sourceType==="internal"||e.sourceId===jc){if(!e._id)return;n=e._id}return r?.[n]||n}convertJsonStringColumns(e,r,n){let i=this.getTableName(e,n);for(let[o,a]of Object.entries(e.schema)){if(!DO(a))continue;let u=`${i}.${o}`;for(let c of r)typeof c[u]=="string"&&(c[u]=JSON.parse(c[u])),typeof c[o]=="string"&&(c[o]=JSON.parse(c[o]))}return r}log(e,r){Ls(this.getSqlClient(),e,r)}},bO=nh;var sh={};P(sh,{base:()=>eF});function eF(t){return{_id:vt,language:"sqlite",sql:{tables:{},options:{table_name:t}}}}s(eF,"base");var ah={};P(ah,{jsonFromCsvString:()=>tF});var xO=W(require("csvtojson"));async function tF(t,e){let{ignoreEmpty:r=!1,allowSingleColumn:n=!1,possibleDelimiters:i=[",",";",":","|","~"," "," "]}=e||{};for(let o of i){let a,u=!1;try{let c=await(0,xO.default)({ignoreEmpty:r,delimiter:o}).fromString(t);for(let[,l]of c.entries()){let d=Object.keys(l);if(a==null&&(a=d),!n&&d.length===1){u=!0;break}if(a.length!==d.length){u=!0;break}for(let f of a)(l[f]===void 0||l[f]==="")&&(l[f]=null)}if(u)continue;return c}catch{continue}}throw new Error("Unable to determine delimiter")}s(tF,"jsonFromCsvString");var uh=class{static{s(this,"Endpoint")}constructor(e,r,n){this.method=e,this.url=r,this.controller=n,this.middlewares=[],this.outputMiddlewares=[]}addMiddleware(e,r){return r?.first?this.middlewares.unshift(e):this.middlewares.push(e),this}addOutputMiddleware(e,r){return r?.first?this.outputMiddlewares.unshift(e):this.outputMiddlewares.push(e),this}apply(e){let r=this.method,n=this.url,i=this.middlewares,o=this.controller,a=this.outputMiddlewares,u=s(()=>{},"complete"),c=[n,...i,o,...a,u];e[r](...c)}},Bc=uh;var vO=W(require("@koa/router"));var wn=class{constructor(){this.endpoints=[];this.middlewares=[];this.outputMiddlewares=[];this.applied=!1;this.locked=!1}static{s(this,"EndpointGroup")}addGroupMiddleware(e,r={first:!0}){if(this.locked)throw new Error("Group locked, no more middleware can be added.");return this.middlewares.push({fn:e,first:r.first}),this}addGroupMiddlewareOutput(e,r={first:!1}){if(this.locked)throw new Error("Group locked, no more middleware can be added.");return this.outputMiddlewares.push({fn:e,first:r.first}),this}addEndpoint(e,r,...n){let i=n.pop(),o=new Bc(e,r,i);if(n.length!==0)for(let a of n)o.addMiddleware(a);return this.endpoints.push(o),this}lockMiddleware(){this.locked=!0}post(e,...r){return this.addEndpoint("post",e,...r)}patch(e,...r){return this.addEndpoint("patch",e,...r)}put(e,...r){return this.addEndpoint("put",e,...r)}get(e,...r){return this.addEndpoint("get",e,...r)}delete(e,...r){return this.addEndpoint("delete",e,...r)}head(e,...r){return this.addEndpoint("head",e,...r)}apply(e){let r=this.endpointList();e||(e=new vO.default);for(let n of r)n.apply(e);return e}endpointList(){if(this.applied)throw new Error("Already applied to router");this.applied=!0;for(let e of this.endpoints)this.middlewares.forEach(({fn:r,first:n})=>e.addMiddleware(r,{first:n})),this.outputMiddlewares.forEach(({fn:r,first:n})=>e.addOutputMiddleware(r,{first:n}));return this.endpoints}};var Bo=class{constructor(){this.groups=[]}static{s(this,"EndpointGroupList")}group(...e){let r=new wn;return e.length&&e.forEach(n=>{"first"in n?r.addGroupMiddleware(n.middleware,{first:n.first}):r.addGroupMiddleware(n)}),this.groups.push(r),r}listAllEndpoints(){let e=this.groups.flatMap(i=>i.endpointList()),r=[],n=[];for(let i of e)i.url.includes(":")?n.push(i):r.push(i);return[...r,...n]}};var rF={...js,...le},nF=s((t={})=>{za(t.db)},"init");0&&(module.exports={APIWarning,ActiveContentFileError,AutomationViewMode,BUDIBASE_DATASOURCE_TYPE,BadRequestError,BudibaseError,Config,Cookie,DEFAULT_BB_DATASOURCE_ID,DEFAULT_EMPLOYEE_TABLE_ID,DEFAULT_EXPENSES_TABLE_ID,DEFAULT_INVENTORY_TABLE_ID,DEFAULT_JOBS_TABLE_ID,DEFAULT_TENANT_ID,DeprecatedViews,DesignDocuments,DocumentType,Duration,EmailUnavailableError,Endpoint,EndpointGroup,EndpointGroupList,FeatureDisabledError,FeatureDisabledWarning,ForbiddenError,GlobalRole,HTTPError,Header,InternalTable,InvalidAPIKeyWarning,MAX_VALID_DATE,MIN_VALID_DATE,NotFoundError,NotImplementedError,RedisClient,SEPARATOR,SQLITE_DESIGN_DOC_ID,SQS_DATASOURCE_INTERNAL,StaticDatabases,UNICODE_MAX,USER_METADATA_PREFIX,UnexpectedError,UsageLimitError,UsageLimitWarning,UserStatus,ViewName,WORKSPACE_DEV,WORKSPACE_DEV_PREFIX,WORKSPACE_PREFIX,accounts,auth,blacklist,cache,configs,constants,context,csv,db,docIds,docUpdates,encryption,env,errors,events,features,getErrorMessage,getPublicError,init,installation,locks,logging,middleware,objectStore,permissions,platform,plugins,queue,redis,roles,security,sessions,setEnv,sql,tenancy,timers,userUtils,users,utils,warnings,withEnv});
|
|
39
39
|
//# sourceMappingURL=index.js.map
|