@budibase/backend-core 3.41.0 → 3.41.1
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 +2 -2
- package/dist/index.js.map +3 -3
- package/dist/package.json +2 -2
- package/dist/src/queue/queue.js +1 -1
- package/dist/src/queue/queue.js.map +1 -1
- package/package.json +2 -2
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},g=[];this._typeError&&g.push(this._typeError),this._whitelistError&&g.push(this._whitelistError),this._blacklistError&&g.push(this._blacklistError),(0,cg.default)({args:f,value:d,path:o,sync:i,tests:g,endEarly:l},m=>{if(m)return void n(m,d);(0,cg.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(dg.default.isError(n))return!1;throw n})}isValidSync(e,r){try{return this.validateSync(e,r),!0}catch(n){if(dg.default.isError(n))return!1;throw n}}_getDefault(){let e=this.spec.default;return e==null?e:typeof e=="function"?e.call(this):(0,ug.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=Un.mixed.defined){return this.test({message:e,name:"defined",exclusive:!0,test(r){return r!==void 0}})}required(e=Un.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=Un.mixed.default),typeof r.test!="function")throw new TypeError("`test` is a required parameters");let n=this.clone(),i=(0,aa.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,Fw.default)(e).map(o=>new kw.default(o));return i.forEach(o=>{o.isSibling&&n.deps.push(o.key)}),n.conditions.push(new Uw.default(i,r)),n}typeError(e){var r=this.clone();return r._typeError=(0,aa.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=Un.mixed.oneOf){var n=this.clone();return e.forEach(i=>{n._whitelist.add(i),n._blacklist.delete(i)}),n._whitelistError=(0,aa.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=Un.mixed.notOneOf){var n=this.clone();return e.forEach(i=>{n._blacklist.add(i),n._whitelist.delete(i)}),n._blacklistError=(0,aa.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)}}};ua.default=dt;dt.prototype.__isYupSchema__=!0;for(let t of["validate","validateSync"])dt.prototype[`${t}At`]=function(e,r,n={}){let{parent:i,parentPath:o,schema:a}=(0,Mw.getIn)(this,e,r,n.context);return a[t](i&&i[o],Xe({},n,{parent:i,path:e}))};for(let t of["equals","is"])dt.prototype[t]=dt.prototype.oneOf;for(let t of["not","nope"])dt.prototype[t]=dt.prototype.notOneOf;dt.prototype.optional=dt.prototype.notRequired});var mg=Q(Zi=>{"use strict";Object.defineProperty(Zi,"__esModule",{value:!0});Zi.create=pg;Zi.default=void 0;var Bw=Ww(Bt());function Ww(t){return t&&t.__esModule?t:{default:t}}s(Ww,"_interopRequireDefault");var Sl=Bw.default,Gw=Sl;Zi.default=Gw;function pg(){return new Sl}s(pg,"create");pg.prototype=Sl.prototype});var kn=Q(ca=>{"use strict";Object.defineProperty(ca,"__esModule",{value:!0});ca.default=void 0;var $w=s(t=>t==null,"_default");ca.default=$w});var Tg=Q(ts=>{"use strict";Object.defineProperty(ts,"__esModule",{value:!0});ts.create=yg;ts.default=void 0;var Vw=Eg(Bt()),hg=Mt(),gg=Eg(kn());function Eg(t){return t&&t.__esModule?t:{default:t}}s(Eg,"_interopRequireDefault");function yg(){return new es}s(yg,"create");var es=class extends Vw.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=hg.boolean.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"true"},test(r){return(0,gg.default)(r)||r===!0}})}isFalse(e=hg.boolean.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"false"},test(r){return(0,gg.default)(r)||r===!1}})}};ts.default=es;yg.prototype=es.prototype});var _g=Q(ns=>{"use strict";Object.defineProperty(ns,"__esModule",{value:!0});ns.create=Ag;ns.default=void 0;var Ct=Mt(),Wt=Sg(kn()),qw=Sg(Bt());function Sg(t){return t&&t.__esModule?t:{default:t}}s(Sg,"_interopRequireDefault");var Kw=/^((([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,Qw=/^((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,jw=/^(?:[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,Hw=s(t=>(0,Wt.default)(t)||t===t.trim(),"isTrimmed"),Yw={}.toString();function Ag(){return new rs}s(Ag,"create");var rs=class extends qw.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===Yw?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=Ct.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=Ct.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=Ct.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||Ct.string.matches,params:{regex:e},test:s(a=>(0,Wt.default)(a)||a===""&&n||a.search(e)!==-1,"test")})}email(e=Ct.string.email){return this.matches(Kw,{name:"email",message:e,excludeEmptyString:!0})}url(e=Ct.string.url){return this.matches(Qw,{name:"url",message:e,excludeEmptyString:!0})}uuid(e=Ct.string.uuid){return this.matches(jw,{name:"uuid",message:e,excludeEmptyString:!1})}ensure(){return this.default("").transform(e=>e===null?"":e)}trim(e=Ct.string.trim){return this.transform(r=>r!=null?r.trim():r).test({message:e,name:"trim",test:Hw})}lowercase(e=Ct.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=Ct.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")})}};ns.default=rs;Ag.prototype=rs.prototype});var wg=Q(ss=>{"use strict";Object.defineProperty(ss,"__esModule",{value:!0});ss.create=Ig;ss.default=void 0;var jr=Mt(),Hr=Og(kn()),zw=Og(Bt());function Og(t){return t&&t.__esModule?t:{default:t}}s(Og,"_interopRequireDefault");var Jw=s(t=>t!=+t,"isNaN");function Ig(){return new is}s(Ig,"create");var is=class extends zw.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"&&!Jw(e)}min(e,r=jr.number.min){return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(n){return(0,Hr.default)(n)||n>=this.resolve(e)}})}max(e,r=jr.number.max){return this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(n){return(0,Hr.default)(n)||n<=this.resolve(e)}})}lessThan(e,r=jr.number.lessThan){return this.test({message:r,name:"max",exclusive:!0,params:{less:e},test(n){return(0,Hr.default)(n)||n<this.resolve(e)}})}moreThan(e,r=jr.number.moreThan){return this.test({message:r,name:"min",exclusive:!0,params:{more:e},test(n){return(0,Hr.default)(n)||n>this.resolve(e)}})}positive(e=jr.number.positive){return this.moreThan(0,e)}negative(e=jr.number.negative){return this.lessThan(0,e)}integer(e=jr.number.integer){return this.test({name:"integer",message:e,test:s(r=>(0,Hr.default)(r)||Number.isInteger(r),"test")})}truncate(){return this.transform(e=>(0,Hr.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,Hr.default)(i)?i:Math[e](i))}};ss.default=is;Ig.prototype=is.prototype});var Rg=Q(Al=>{"use strict";Object.defineProperty(Al,"__esModule",{value:!0});Al.default=Zw;var Xw=/^(\d{4}|[+\-]\d{6})(?:-?(\d{2})(?:-?(\d{2}))?)?(?:[ T]?(\d{2}):?(\d{2})(?::?(\d{2})(?:[,\.](\d{1,}))?)?(?:(Z)|([+\-])(\d{2})(?::?(\d{2}))?)?)?$/;function Zw(t){var e=[1,4,5,6,7,10,11],r=0,n,i;if(i=Xw.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(Zw,"parseIsoDate")});var bg=Q(os=>{"use strict";Object.defineProperty(os,"__esModule",{value:!0});os.create=Ol;os.default=void 0;var eR=la(Rg()),Cg=Mt(),Dg=la(kn()),tR=la(Qr()),rR=la(Bt());function la(t){return t&&t.__esModule?t:{default:t}}s(la,"_interopRequireDefault");var _l=new Date(""),nR=s(t=>Object.prototype.toString.call(t)==="[object Date]","isDate");function Ol(){return new Mn}s(Ol,"create");var Mn=class extends rR.default{static{s(this,"DateSchema")}constructor(){super({type:"date"}),this.withMutation(()=>{this.transform(function(e){return this.isType(e)?e:(e=(0,eR.default)(e),isNaN(e)?_l:new Date(e))})})}_typeCheck(e){return nR(e)&&!isNaN(e.getTime())}prepareParam(e,r){let n;if(tR.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=Cg.date.min){let n=this.prepareParam(e,"min");return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(i){return(0,Dg.default)(i)||i>=this.resolve(n)}})}max(e,r=Cg.date.max){var n=this.prepareParam(e,"max");return this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(i){return(0,Dg.default)(i)||i<=this.resolve(n)}})}};os.default=Mn;Mn.INVALID_DATE=_l;Ol.prototype=Mn.prototype;Ol.INVALID_DATE=_l});var vg=Q((CW,Il)=>{"use strict";Il.exports=function(t){return xg(iR(t),t)};Il.exports.array=xg;function xg(t,e){var r=t.length,n=new Array(r),i={},o=r,a=sR(e),u=oR(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 g;try{g=", node was:"+JSON.stringify(l)}catch{g=""}throw new Error("Cyclic dependency"+g)}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(xg,"toposort");function iR(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(iR,"uniqueNodes");function sR(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(sR,"makeOutgoingEdges");function oR(t){for(var e=new Map,r=0,n=t.length;r<n;r++)e.set(t[r],r);return e}s(oR,"makeNodesHash")});var Ng=Q(wl=>{"use strict";Object.defineProperty(wl,"__esModule",{value:!0});wl.default=fR;var aR=da(require("lodash/has")),uR=da(vg()),cR=Yi(),lR=da(Qr()),dR=da(Ln());function da(t){return t&&t.__esModule?t:{default:t}}s(da,"_interopRequireDefault");function fR(t,e=[]){let r=[],n=[];function i(o,a){var u=(0,cR.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,aR.default)(t,o)){let a=t[o];~n.indexOf(o)||n.push(o),lR.default.isRef(a)&&a.isSibling?i(a.path,o):(0,dR.default)(a)&&"deps"in a&&a.deps.forEach(u=>i(u,o))}return uR.default.array(n,r).reverse()}s(fR,"sortFields")});var Lg=Q(Rl=>{"use strict";Object.defineProperty(Rl,"__esModule",{value:!0});Rl.default=pR;function Pg(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(Pg,"findIndex");function pR(t){return(e,r)=>Pg(t,e)-Pg(t,r)}s(pR,"sortByKeyOrder")});var Gg=Q(us=>{"use strict";Object.defineProperty(us,"__esModule",{value:!0});us.create=Wg;us.default=void 0;var Ug=Dt(require("lodash/has")),kg=Dt(require("lodash/snakeCase")),mR=Dt(require("lodash/camelCase")),hR=Dt(require("lodash/mapKeys")),gR=Dt(require("lodash/mapValues")),ER=Yi(),Mg=Mt(),yR=Dt(Ng()),Bg=Dt(Lg()),TR=Dt(ra()),SR=Dt(qr()),Cl=Dt(Bt());function Dt(t){return t&&t.__esModule?t:{default:t}}s(Dt,"_interopRequireDefault");function Fn(){return Fn=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},Fn.apply(this,arguments)}s(Fn,"_extends");var Fg=s(t=>Object.prototype.toString.call(t)==="[object Object]","isObject");function AR(t,e){let r=Object.keys(t.fields);return Object.keys(e).filter(n=>r.indexOf(n)===-1)}s(AR,"unknown");var _R=(0,Bg.default)([]),as=class extends Cl.default{static{s(this,"ObjectSchema")}constructor(e){super({type:"object"}),this.fields=Object.create(null),this._sortErrors=_R,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 Fg(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=Fn({},r,{parent:c,__validating:r.__validating||!1}),d=!1;for(let f of u){let g=o[f],m=(0,Ug.default)(i,f);if(g){let y,h=i[f];l.path=(r.path?`${r.path}.`:"")+f,g=g.resolve({value:h,context:r.context,parent:c});let p="spec"in g?g.spec:void 0,T=p?.strict;if(p?.strip){d=d||f in i;continue}y=!r.__validating||!T?g.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(!SR.default.isError(d)||c)return void n(d,f);i.push(d)}if(!l||!Fg(f)){n(i[0]||null,f);return}u=u||f;let g=this._nodes.map(m=>(y,h)=>{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],Fn({},r,{path:p,from:a,strict:!0,parent:f,originalValue:u[m]}),h);return}h(null)});(0,TR.default)({sync:o,tests:g,value:f,errors:i,endEarly:c,sort:this._sortErrors,path:r.path},n)})}clone(e){let r=super.clone(e);return r.fields=Fn({},this.fields),r._nodes=this._nodes,r._excludedEdges=this._excludedEdges,r._sortErrors=this._sortErrors,r}concat(e){let r=super.concat(e),n=r.fields;for(let[i,o]of Object.entries(this.fields)){let a=n[i];a===void 0?n[i]=o:a instanceof Cl.default&&o instanceof Cl.default&&(n[i]=o.concat(a))}return r.withMutation(()=>r.shape(n))}getDefaultFromShape(){let e={};return this._nodes.forEach(r=>{let n=this.fields[r];e[r]="default"in n?n.getDefault():void 0}),e}_getDefault(){if("default"in this.spec)return super._getDefault();if(this._nodes.length)return this.getDefaultFromShape()}shape(e,r=[]){let n=this.clone(),i=Object.assign(n.fields,e);if(n.fields=i,n._sortErrors=(0,Bg.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,yR.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,ER.getter)(e,!0);return this.transform(o=>{if(o==null)return o;let a=o;return(0,Ug.default)(o,e)&&(a=Fn({},o),n||delete a[e],a[r]=i(o)),a})}noUnknown(e=!0,r=Mg.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=AR(this.schema,i);return!e||o.length===0||this.createError({params:{unknown:o.join(", ")}})}});return n.spec.noUnknown=e,n}unknown(e=!0,r=Mg.object.noUnknown){return this.noUnknown(!e,r)}transformKeys(e){return this.transform(r=>r&&(0,hR.default)(r,(n,i)=>e(i)))}camelCase(){return this.transformKeys(mR.default)}snakeCase(){return this.transformKeys(kg.default)}constantCase(){return this.transformKeys(e=>(0,kg.default)(e).toUpperCase())}describe(){let e=super.describe();return e.fields=(0,gR.default)(this.fields,r=>r.describe()),e}};us.default=as;function Wg(t){return new as(t)}s(Wg,"create");Wg.prototype=as.prototype});var Vg=Q(ls=>{"use strict";Object.defineProperty(ls,"__esModule",{value:!0});ls.create=$g;ls.default=void 0;var Dl=Bn(kn()),OR=Bn(Ln()),IR=Bn(Hi()),bl=Mt(),wR=Bn(ra()),RR=Bn(qr()),CR=Bn(Bt());function Bn(t){return t&&t.__esModule?t:{default:t}}s(Bn,"_interopRequireDefault");function fa(){return fa=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},fa.apply(this,arguments)}s(fa,"_extends");function $g(t){return new cs(t)}s($g,"create");var cs=class extends CR.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,fa({},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,g=r.originalValue!=null?r.originalValue:e;super._validate(e,r,(m,y)=>{if(m){if(!RR.default.isError(m)||d)return void n(m,y);a.push(m)}if(!f||!l||!this._typeCheck(y)){n(a[0]||null,y);return}g=g||y;let h=new Array(y.length);for(let p=0;p<y.length;p++){let T=y[p],A=`${r.path||""}[${p}]`,_=fa({},r,{path:A,strict:!0,parent:y,index:p,originalValue:g[p]});h[p]=(I,O)=>l.validate(T,_,O)}(0,wR.default)({sync:u,path:c,value:y,errors:a,endEarly:d,tests:h},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,OR.default)(e))throw new TypeError("`array.of()` sub-schema must be a valid yup schema not: "+(0,IR.default)(e));return r.innerType=e,r}length(e,r=bl.array.length){return this.test({message:r,name:"length",exclusive:!0,params:{length:e},test(n){return(0,Dl.default)(n)||n.length===this.resolve(e)}})}min(e,r){return r=r||bl.array.min,this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(n){return(0,Dl.default)(n)||n.length>=this.resolve(e)}})}max(e,r){return r=r||bl.array.max,this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(n){return(0,Dl.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)}};ls.default=cs;$g.prototype=cs.prototype});var qg=Q(ds=>{"use strict";Object.defineProperty(ds,"__esModule",{value:!0});ds.create=xR;ds.default=void 0;var DR=bR(Ln());function bR(t){return t&&t.__esModule?t:{default:t}}s(bR,"_interopRequireDefault");function xR(t){return new pa(t)}s(xR,"create");var pa=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,DR.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)}},vR=pa;ds.default=vR});var Kg=Q(xl=>{"use strict";Object.defineProperty(xl,"__esModule",{value:!0});xl.default=LR;var NR=PR(Mt());function PR(t){return t&&t.__esModule?t:{default:t}}s(PR,"_interopRequireDefault");function LR(t){Object.keys(t).forEach(e=>{Object.keys(t[e]).forEach(r=>{NR.default[e][r]=t[e][r]})})}s(LR,"setLocale")});var Nl=Q(ie=>{"use strict";Object.defineProperty(ie,"__esModule",{value:!0});ie.addMethod=GR;Object.defineProperty(ie,"MixedSchema",{enumerable:!0,get:s(function(){return Qg.default},"get")});Object.defineProperty(ie,"mixed",{enumerable:!0,get:s(function(){return Qg.create},"get")});Object.defineProperty(ie,"BooleanSchema",{enumerable:!0,get:s(function(){return vl.default},"get")});Object.defineProperty(ie,"bool",{enumerable:!0,get:s(function(){return vl.create},"get")});Object.defineProperty(ie,"boolean",{enumerable:!0,get:s(function(){return vl.create},"get")});Object.defineProperty(ie,"StringSchema",{enumerable:!0,get:s(function(){return jg.default},"get")});Object.defineProperty(ie,"string",{enumerable:!0,get:s(function(){return jg.create},"get")});Object.defineProperty(ie,"NumberSchema",{enumerable:!0,get:s(function(){return Hg.default},"get")});Object.defineProperty(ie,"number",{enumerable:!0,get:s(function(){return Hg.create},"get")});Object.defineProperty(ie,"DateSchema",{enumerable:!0,get:s(function(){return Yg.default},"get")});Object.defineProperty(ie,"date",{enumerable:!0,get:s(function(){return Yg.create},"get")});Object.defineProperty(ie,"ObjectSchema",{enumerable:!0,get:s(function(){return zg.default},"get")});Object.defineProperty(ie,"object",{enumerable:!0,get:s(function(){return zg.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 UR.create},"get")});Object.defineProperty(ie,"lazy",{enumerable:!0,get:s(function(){return kR.create},"get")});Object.defineProperty(ie,"ValidationError",{enumerable:!0,get:s(function(){return MR.default},"get")});Object.defineProperty(ie,"reach",{enumerable:!0,get:s(function(){return FR.default},"get")});Object.defineProperty(ie,"isSchema",{enumerable:!0,get:s(function(){return Xg.default},"get")});Object.defineProperty(ie,"setLocale",{enumerable:!0,get:s(function(){return BR.default},"get")});Object.defineProperty(ie,"BaseSchema",{enumerable:!0,get:s(function(){return WR.default},"get")});var Qg=Yr(mg()),vl=Yr(Tg()),jg=Yr(_g()),Hg=Yr(wg()),Yg=Yr(bg()),zg=Yr(Gg()),Jg=Yr(Vg()),UR=Qr(),kR=qg(),MR=fs(qr()),FR=fs(yl()),Xg=fs(Ln()),BR=fs(Kg()),WR=fs(Bt());function fs(t){return t&&t.__esModule?t:{default:t}}s(fs,"_interopRequireDefault");function Zg(){if(typeof WeakMap!="function")return null;var t=new WeakMap;return Zg=s(function(){return t},"_getRequireWildcardCache"),t}s(Zg,"_getRequireWildcardCache");function Yr(t){if(t&&t.__esModule)return t;if(t===null||typeof t!="object"&&typeof t!="function")return{default:t};var e=Zg();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(Yr,"_interopRequireWildcard");function GR(t,e,r){if(!t||!(0,Xg.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(GR,"addMethod")});var eE=Q(Ll=>{"use strict";Object.defineProperty(Ll,"__esModule",{value:!0});var Pl=Ul();Ll.default=()=>{(0,Pl.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,Pl.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,Pl.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 Ul=Q(Ae=>{"use strict";var $R=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]})),VR=Ae&&Ae.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),qR=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)&&$R(e,t,r);return VR(e,t),e},KR=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=qR(Nl());Nl();var ps=ct(),QR=KR(eE());lt();var zr={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}}},tE=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(),jR=s(t=>zr[t]?(0,ps.valid)(zr[t]):(0,ps.err)(`Option preset '${t}' not found.`),"getOptionPreset");Ae.getOptionPreset=jR;var HR=s(()=>zr,"getOptionPresets");Ae.getOptionPresets=HR;var YR=s((t,e)=>{zr[t]=tE.validateSync(e,{strict:!1,abortEarly:!1,stripUnknown:!0,recursive:!0})},"registerOptionPreset");Ae.registerOptionPreset=YR;var zR=s(t=>{var e,r,n,i,o,a,u,c,l,d,f,g,m,y,h,p,T,A,_,I;try{(0,QR.default)();let O;if(t.preset)if(typeof t.preset=="string"){if(!zr[t.preset])return(0,ps.err)([`Option preset ${t.preset} does not exist.`]);O=zr[t.preset]}else O=t.preset;else O=zr.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:(g=O.hours.upperLimit)!==null&&g!==void 0?g: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:(h=O.months.lowerLimit)!==null&&h!==void 0?h: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:tE.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,ps.valid)(w)}catch(O){return(0,ps.err)(O.errors)}},"validateOptions");Ae.validateOptions=zR});var Rt=Q((ms,Ml)=>{"use strict";var Xr=ms&&ms.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(ms,"__esModule",{value:!0});var Jr=ct(),JR=Xr(xh()),XR=Xr(vh()),ZR=Xr(Nh()),eC=Xr(Ph()),tC=Xr(Lh()),rC=Xr(Uh()),nC=Xr(kh()),iC=Ul();lt();var sC=s((t,e)=>{let r=t.trim().split(" ");if(e.useSeconds&&e.useYears&&r.length!==7)return(0,Jr.err)(`Expected 7 values, but got ${r.length}.`);if((e.useSeconds&&!e.useYears||e.useYears&&!e.useSeconds)&&r.length!==6)return(0,Jr.err)(`Expected 6 values, but got ${r.length}.`);if(!e.useSeconds&&!e.useYears&&r.length!==5)return(0,Jr.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,Jr.valid)(n)},"splitCronString"),kl=s((t,e={})=>{let r=(0,iC.validateOptions)(e);if(r.isError())return r;let n=r.getValue(),i=sC(t,n);if(i.isError())return(0,Jr.err)([`${i.getError()} (Input cron: '${t}')`]);let o=i.getValue(),a=[];if(n.useSeconds&&a.push((0,JR.default)(o,n)),a.push((0,XR.default)(o,n)),a.push((0,ZR.default)(o,n)),a.push((0,eC.default)(o,n)),a.push((0,tC.default)(o,n)),a.push((0,rC.default)(o,n)),n.useYears&&a.push((0,nC.default)(o,n)),a.every(c=>c.isValid()))return(0,Jr.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,Jr.err)(u)},"cron");ms.default=kl;Ml.exports=kl;Ml.exports.default=kl});var vy=Q(Qe=>{"use strict";Object.defineProperty(Qe,"__esModule",{value:!0});var $t=class extends Error{static{s(this,"LuxonError")}},jl=class extends $t{static{s(this,"InvalidDateTimeError")}constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}},Hl=class extends $t{static{s(this,"InvalidIntervalError")}constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}},Yl=class extends $t{static{s(this,"InvalidDurationError")}constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}},pr=class extends $t{static{s(this,"ConflictingSpecificationError")}},Aa=class extends $t{static{s(this,"InvalidUnitError")}constructor(e){super(`Invalid unit ${e}`)}},_e=class extends $t{static{s(this,"InvalidArgumentError")}},bt=class extends $t{static{s(this,"ZoneIsAbstractError")}constructor(){super("Zone is an abstract class")}},N="numeric",mt="short",qe="long",_a={year:N,month:N,day:N},NE={year:N,month:mt,day:N},oC={year:N,month:mt,day:N,weekday:mt},PE={year:N,month:qe,day:N},LE={year:N,month:qe,day:N,weekday:qe},UE={hour:N,minute:N},kE={hour:N,minute:N,second:N},ME={hour:N,minute:N,second:N,timeZoneName:mt},FE={hour:N,minute:N,second:N,timeZoneName:qe},BE={hour:N,minute:N,hourCycle:"h23"},WE={hour:N,minute:N,second:N,hourCycle:"h23"},GE={hour:N,minute:N,second:N,hourCycle:"h23",timeZoneName:mt},$E={hour:N,minute:N,second:N,hourCycle:"h23",timeZoneName:qe},VE={year:N,month:N,day:N,hour:N,minute:N},qE={year:N,month:N,day:N,hour:N,minute:N,second:N},KE={year:N,month:mt,day:N,hour:N,minute:N},QE={year:N,month:mt,day:N,hour:N,minute:N,second:N},aC={year:N,month:mt,day:N,weekday:mt,hour:N,minute:N},jE={year:N,month:qe,day:N,hour:N,minute:N,timeZoneName:mt},HE={year:N,month:qe,day:N,hour:N,minute:N,second:N,timeZoneName:mt},YE={year:N,month:qe,day:N,weekday:qe,hour:N,minute:N,timeZoneName:qe},zE={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 bt}get name(){throw new bt}get ianaName(){return this.name}get isUniversal(){throw new bt}offsetName(e,r){throw new bt}formatOffset(e,r){throw new bt}offset(e){throw new bt}equals(e){throw new bt}get isValid(){throw new bt}},Fl=null,Ss=class t extends hr{static{s(this,"SystemZone")}static get instance(){return Fl===null&&(Fl=new t),Fl}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:r,locale:n}){return ay(e,r,n)}formatOffset(e,r){return Ts(this.offset(e),r)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}},zl=new Map;function uC(t){let e=zl.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"}),zl.set(t,e)),e}s(uC,"makeDTF");var cC={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function lC(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(lC,"hackyOffset");function dC(t,e){let r=t.formatToParts(e),n=[];for(let i=0;i<r.length;i++){let{type:o,value:a}=r[i],u=cC[o];o==="era"?n[u]=a:H(u)||(n[u]=parseInt(a,10))}return n}s(dC,"partsOffset");var Bl=new Map,Vt=class t extends hr{static{s(this,"IANAZone")}static create(e){let r=Bl.get(e);return r===void 0&&Bl.set(e,r=new t(e)),r}static resetCache(){Bl.clear(),zl.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 ay(e,r,n,this.name)}formatOffset(e,r){return Ts(this.offset(e),r)}offset(e){if(!this.valid)return NaN;let r=new Date(e);if(isNaN(r))return NaN;let n=uC(this.name),[i,o,a,u,c,l,d]=n.formatToParts?dC(n,r):lC(n,r);u==="BC"&&(i=-Math.abs(i)+1);let g=ba({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,(g-m)/(60*1e3)}equals(e){return e.type==="iana"&&e.name===this.name}get isValid(){return this.valid}},rE={};function fC(t,e={}){let r=JSON.stringify([t,e]),n=rE[r];return n||(n=new Intl.ListFormat(t,e),rE[r]=n),n}s(fC,"getCachedLF");var Jl=new Map;function Xl(t,e={}){let r=JSON.stringify([t,e]),n=Jl.get(r);return n===void 0&&(n=new Intl.DateTimeFormat(t,e),Jl.set(r,n)),n}s(Xl,"getCachedDTF");var Zl=new Map;function pC(t,e={}){let r=JSON.stringify([t,e]),n=Zl.get(r);return n===void 0&&(n=new Intl.NumberFormat(t,e),Zl.set(r,n)),n}s(pC,"getCachedINF");var ed=new Map;function mC(t,e={}){let{base:r,...n}=e,i=JSON.stringify([t,n]),o=ed.get(i);return o===void 0&&(o=new Intl.RelativeTimeFormat(t,e),ed.set(i,o)),o}s(mC,"getCachedRTF");var gs=null;function hC(){return gs||(gs=new Intl.DateTimeFormat().resolvedOptions().locale,gs)}s(hC,"systemLocale");var td=new Map;function JE(t){let e=td.get(t);return e===void 0&&(e=new Intl.DateTimeFormat(t).resolvedOptions(),td.set(t,e)),e}s(JE,"getCachedIntResolvedOptions");var rd=new Map;function gC(t){let e=rd.get(t);if(!e){let r=new Intl.Locale(t);e="getWeekInfo"in r?r.getWeekInfo():r.weekInfo,"minimalDays"in e||(e={...XE,...e}),rd.set(t,e)}return e}s(gC,"getCachedWeekInfo");function EC(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=Xl(t).resolvedOptions(),i=t}catch{let c=t.substring(0,r);n=Xl(c).resolvedOptions(),i=c}let{numberingSystem:o,calendar:a}=n;return[i,o,a]}}s(EC,"parseLocaleString");function yC(t,e,r){return(r||e)&&(t.includes("-u-")||(t+="-u"),r&&(t+=`-ca-${r}`),e&&(t+=`-nu-${e}`)),t}s(yC,"intlConfigString");function TC(t){let e=[];for(let r=1;r<=12;r++){let n=ue.utc(2009,r,1);e.push(t(n))}return e}s(TC,"mapMonths");function SC(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(SC,"mapWeekdays");function ma(t,e,r,n){let i=t.listingMode();return i==="error"?null:i==="en"?r(e):n(e)}s(ma,"listStuff");function AC(t){return t.numberingSystem&&t.numberingSystem!=="latn"?!1:t.numberingSystem==="latn"||!t.locale||t.locale.startsWith("en")||JE(t.locale).numberingSystem==="latn"}s(AC,"supportsFastNumbers");var nd=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=pC(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):md(e,3);return he(r,this.padTo)}}},id=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=Xl(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()}},sd=class{static{s(this,"PolyRelFormatter")}constructor(e,r,n){this.opts={style:"long",...n},!r&&sy()&&(this.rtf=mC(e,n))}format(e,r){return this.rtf?this.rtf.format(e,r):$C(r,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,r){return this.rtf?this.rtf.formatToParts(e,r):[]}},XE={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":hC()),c=r||se.defaultNumberingSystem,l=n||se.defaultOutputCalendar,d=ad(i)||se.defaultWeekSettings;return new t(u,c,l,d,a)}static resetCache(){gs=null,Jl.clear(),Zl.clear(),ed.clear(),td.clear(),rd.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]=EC(e);this.locale=a,this.numberingSystem=r||u||null,this.outputCalendar=n||c||null,this.weekSettings=i,this.intl=yC(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=AC(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,ad(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 ma(this,e,ly,()=>{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]=TC(a)}return this.monthsCache[o][e]})}weekdays(e,r=!1){return ma(this,e,py,()=>{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]=SC(o=>this.extract(o,n,"weekday"))),this.weekdaysCache[i][e]})}meridiems(){return ma(this,void 0,()=>my,()=>{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 ma(this,e,hy,()=>{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 nd(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,r={}){return new id(e,this.intl,r)}relFormatter(e={}){return new sd(this.intl,this.isEnglish(),e)}listFormatter(e={}){return fC(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:oy()?gC(this.locale):XE}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})`}},Wl=null,Ke=class t extends hr{static{s(this,"FixedOffsetZone")}static get utcInstance(){return Wl===null&&(Wl=new t(0)),Wl}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(xa(r[1],r[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${Ts(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${Ts(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,r){return Ts(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}},Oa=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(CC(t)){let r=t.toLowerCase();return r==="default"?e:r==="local"||r==="system"?Ss.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 Oa(t)}s(fr,"normalizeZone");var ld={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"},nE={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]},_C=ld.hanidec.replace(/[\[|\]]/g,"").split("");function OC(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(ld.hanidec)!==-1)e+=_C.indexOf(t[r]);else for(let i in nE){let[o,a]=nE[i];n>=o&&n<=a&&(e+=n-o)}}return parseInt(e,10)}else return e}s(OC,"parseDigits");var od=new Map;function IC(){od.clear()}s(IC,"resetDigitRegexCache");function ft({numberingSystem:t},e=""){let r=t||"latn",n=od.get(r);n===void 0&&(n=new Map,od.set(r,n));let i=n.get(e);return i===void 0&&(i=new RegExp(`${ld[r]}${e}`),n.set(e,i)),i}s(ft,"digitRegex");var iE=s(()=>Date.now(),"now"),sE="system",oE=null,aE=null,uE=null,cE=60,lE,dE=null,se=class{static{s(this,"Settings")}static get now(){return iE}static set now(e){iE=e}static set defaultZone(e){sE=e}static get defaultZone(){return fr(sE,Ss.instance)}static get defaultLocale(){return oE}static set defaultLocale(e){oE=e}static get defaultNumberingSystem(){return aE}static set defaultNumberingSystem(e){aE=e}static get defaultOutputCalendar(){return uE}static set defaultOutputCalendar(e){uE=e}static get defaultWeekSettings(){return dE}static set defaultWeekSettings(e){dE=ad(e)}static get twoDigitCutoffYear(){return cE}static set twoDigitCutoffYear(e){cE=e%100}static get throwOnInvalid(){return lE}static set throwOnInvalid(e){lE=e}static resetCaches(){re.resetCache(),Vt.resetCache(),ue.resetCache(),IC()}},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}},ZE=[0,31,59,90,120,151,181,212,243,273,304,334],ey=[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 dd(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(dd,"dayOfWeek");function ty(t,e,r){return r+(_s(t)?ey:ZE)[e-1]}s(ty,"computeOrdinal");function ry(t,e){let r=_s(t)?ey:ZE,n=r.findIndex(o=>o<e),i=e-r[n];return{month:n+1,day:i}}s(ry,"uncomputeOrdinal");function fd(t,e){return(t-e+7)%7+1}s(fd,"isoWeekdayToLocal");function Ia(t,e=4,r=1){let{year:n,month:i,day:o}=t,a=ty(n,i,o),u=fd(dd(n,i,o),r),c=Math.floor((a-u+14-e)/7),l;return c<1?(l=n-1,c=As(l,e,r)):c>As(n,e,r)?(l=n+1,c=1):l=n,{weekYear:l,weekNumber:c,weekday:u,...va(t)}}s(Ia,"gregorianToWeek");function fE(t,e=4,r=1){let{weekYear:n,weekNumber:i,weekday:o}=t,a=fd(dd(n,1,e),r),u=Vn(n),c=i*7+o-a-7+e,l;c<1?(l=n-1,c+=Vn(l)):c>u?(l=n+1,c-=Vn(n)):l=n;let{month:d,day:f}=ry(l,c);return{year:l,month:d,day:f,...va(t)}}s(fE,"weekToGregorian");function Gl(t){let{year:e,month:r,day:n}=t,i=ty(e,r,n);return{year:e,ordinal:i,...va(t)}}s(Gl,"gregorianToOrdinal");function pE(t){let{year:e,ordinal:r}=t,{month:n,day:i}=ry(e,r);return{year:e,month:n,day:i,...va(t)}}s(pE,"ordinalToGregorian");function mE(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(mE,"usesLocalWeekValues");function wC(t,e=4,r=1){let n=Da(t.weekYear),i=tt(t.weekNumber,1,As(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(wC,"hasInvalidWeekData");function RC(t){let e=Da(t.year),r=tt(t.ordinal,1,Vn(t.year));return e?r?!1:et("ordinal",t.ordinal):et("year",t.year)}s(RC,"hasInvalidOrdinalData");function ny(t){let e=Da(t.year),r=tt(t.month,1,12),n=tt(t.day,1,wa(t.year,t.month));return e?r?n?!1:et("day",t.day):et("month",t.month):et("year",t.year)}s(ny,"hasInvalidGregorianData");function iy(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(iy,"hasInvalidTimeData");function H(t){return typeof t>"u"}s(H,"isUndefined");function mr(t){return typeof t=="number"}s(mr,"isNumber");function Da(t){return typeof t=="number"&&t%1===0}s(Da,"isInteger");function CC(t){return typeof t=="string"}s(CC,"isString");function DC(t){return Object.prototype.toString.call(t)==="[object Date]"}s(DC,"isDate");function sy(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}s(sy,"hasRelative");function oy(){try{return typeof Intl<"u"&&!!Intl.Locale&&("weekInfo"in Intl.Locale.prototype||"getWeekInfo"in Intl.Locale.prototype)}catch{return!1}}s(oy,"hasLocaleWeekInfo");function bC(t){return Array.isArray(t)?t:[t]}s(bC,"maybeArray");function hE(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(hE,"bestBy");function xC(t,e){return e.reduce((r,n)=>(r[n]=t[n],r),{})}s(xC,"pick");function Kn(t,e){return Object.prototype.hasOwnProperty.call(t,e)}s(Kn,"hasOwnProperty");function ad(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(ad,"validateWeekSettings");function tt(t,e,r){return Da(t)&&t>=e&&t<=r}s(tt,"integerBetween");function vC(t,e){return t-e*Math.floor(t/e)}s(vC,"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 Zr(t){if(!(H(t)||t===null||t===""))return parseFloat(t)}s(Zr,"parseFloating");function pd(t){if(!(H(t)||t===null||t==="")){let e=parseFloat("0."+t)*1e3;return Math.floor(e)}}s(pd,"parseMillis");function md(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(md,"roundTo");function _s(t){return t%4===0&&(t%100!==0||t%400===0)}s(_s,"isLeapYear");function Vn(t){return _s(t)?366:365}s(Vn,"daysInYear");function wa(t,e){let r=vC(e-1,12)+1,n=t+(e-r)/12;return r===2?_s(n)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][r-1]}s(wa,"daysInMonth");function ba(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(ba,"objToLocalTS");function gE(t,e,r){return-fd(dd(t,1,e),r)+e-1}s(gE,"firstWeekOffset");function As(t,e=4,r=1){let n=gE(t,e,r),i=gE(t+1,e,r);return(Vn(t)-n+i)/7}s(As,"weeksInWeekYear");function ud(t){return t>99?t:t>se.twoDigitCutoffYear?1900+t:2e3+t}s(ud,"untruncateYear");function ay(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(ay,"parseZoneInfo");function xa(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(xa,"signedOffset");function uy(t){let e=Number(t);if(typeof t=="boolean"||t===""||!Number.isFinite(e))throw new _e(`Invalid unit value ${t}`);return e}s(uy,"asNumber");function Ra(t,e){let r={};for(let n in t)if(Kn(t,n)){let i=t[n];if(i==null)continue;r[e(n)]=uy(i)}return r}s(Ra,"normalizeObject");function Ts(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(Ts,"formatOffset");function va(t){return xC(t,["hour","minute","second","millisecond"])}s(va,"timeObject");var NC=["January","February","March","April","May","June","July","August","September","October","November","December"],cy=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],PC=["J","F","M","A","M","J","J","A","S","O","N","D"];function ly(t){switch(t){case"narrow":return[...PC];case"short":return[...cy];case"long":return[...NC];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(ly,"months");var dy=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],fy=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],LC=["M","T","W","T","F","S","S"];function py(t){switch(t){case"narrow":return[...LC];case"short":return[...fy];case"long":return[...dy];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}s(py,"weekdays");var my=["AM","PM"],UC=["Before Christ","Anno Domini"],kC=["BC","AD"],MC=["B","A"];function hy(t){switch(t){case"narrow":return[...MC];case"short":return[...kC];case"long":return[...UC];default:return null}}s(hy,"eras");function FC(t){return my[t.hour<12?0:1]}s(FC,"meridiemForDateTime");function BC(t,e){return py(e)[t.weekday-1]}s(BC,"weekdayForDateTime");function WC(t,e){return ly(e)[t.month-1]}s(WC,"monthForDateTime");function GC(t,e){return hy(e)[t.year<0?0:1]}s(GC,"eraForDateTime");function $C(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($C,"formatRelativeTime");function EE(t,e){let r="";for(let n of t)n.literal?r+=n.val:r+=e(n.val);return r}s(EE,"stringifyTokens");var VC={D:_a,DD:NE,DDD:PE,DDDD:LE,t:UE,tt:kE,ttt:ME,tttt:FE,T:BE,TT:WE,TTT:GE,TTTT:$E,f:VE,ff:KE,fff:jE,ffff:YE,F:qE,FF:QE,FFF:HE,FFFF:zE},$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 VC[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?FC(e):o({hour:"numeric",hourCycle:"h12"},"dayperiod"),"meridiem"),c=s((m,y)=>n?WC(e,m):o(y?{month:m}:{month:m,day:"numeric"},"month"),"month"),l=s((m,y)=>n?BC(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?GC(e,m):o({era:m},"era"),"era"),g=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 EE(t.parseFormat(r),g)}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)=>g=>{let m=i(g);if(m){let y=f.isNegativeDuration&&m!==f.largestUnit?n:1,h;return this.opts.signMode==="negativeLargestOnly"&&m!==f.largestUnit?h="never":this.opts.signMode==="all"?h="always":h="auto",this.num(d.get(m)*y,g.length,h)}else return g},"tokenToString"),a=t.parseFormat(r),u=a.reduce((d,{literal:f,val:g})=>f?d:d.concat(g),[]),c=e.shiftTo(...u.map(i).filter(d=>d)),l={isNegativeDuration:c<0,largestUnit:Object.keys(c.values)[0]};return EE(a,o(c,l))}},gy=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function Qn(...t){let e=t.reduce((r,n)=>r+n.source,"");return RegExp(`^${e}$`)}s(Qn,"combineRegexes");function jn(...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(jn,"combineExtractors");function Hn(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(Hn,"parse");function Ey(...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(Ey,"simpleParse");var yy=/(?:([Zz])|([+-]\d\d)(?::?(\d\d))?)/,qC=`(?:${yy.source}?(?:\\[(${gy.source})\\])?)?`,hd=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,Ty=RegExp(`${hd.source}${qC}`),gd=RegExp(`(?:[Tt]${Ty.source})?`),KC=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,QC=/(\d{4})-?W(\d\d)(?:-?(\d))?/,jC=/(\d{4})-?(\d{3})/,HC=Ey("weekYear","weekNumber","weekDay"),YC=Ey("year","ordinal"),zC=/(\d{4})-(\d\d)-(\d\d)/,Sy=RegExp(`${hd.source} ?(?:${yy.source}|(${gy.source}))?`),JC=RegExp(`(?: ${Sy.source})?`);function qn(t,e,r){let n=t[e];return H(n)?r:dr(n)}s(qn,"int");function XC(t,e){return[{year:qn(t,e),month:qn(t,e+1,1),day:qn(t,e+2,1)},null,e+3]}s(XC,"extractISOYmd");function Yn(t,e){return[{hours:qn(t,e,0),minutes:qn(t,e+1,0),seconds:qn(t,e+2,0),milliseconds:pd(t[e+3])},null,e+4]}s(Yn,"extractISOTime");function Os(t,e){let r=!t[e]&&!t[e+1],n=xa(t[e+1],t[e+2]),i=r?null:Ke.instance(n);return[{},i,e+3]}s(Os,"extractISOOffset");function Is(t,e){let r=t[e]?Vt.create(t[e]):null;return[{},r,e+1]}s(Is,"extractIANAZone");var ZC=RegExp(`^T?${hd.source}$`),eD=/^-?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 tD(t){let[e,r,n,i,o,a,u,c,l]=t,d=e[0]==="-",f=c&&c[0]==="-",g=s((m,y=!1)=>m!==void 0&&(y||m&&d)?-m:m,"maybeNegate");return[{years:g(Zr(r)),months:g(Zr(n)),weeks:g(Zr(i)),days:g(Zr(o)),hours:g(Zr(a)),minutes:g(Zr(u)),seconds:g(Zr(c),c==="-0"),milliseconds:g(pd(l),f)}]}s(tD,"extractISODuration");var rD={GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Ed(t,e,r,n,i,o,a){let u={year:e.length===2?ud(dr(e)):dr(e),month:cy.indexOf(r)+1,day:dr(n),hour:dr(i),minute:dr(o)};return a&&(u.second=dr(a)),t&&(u.weekday=t.length>3?dy.indexOf(t)+1:fy.indexOf(t)+1),u}s(Ed,"fromStrings");var nD=/^(?:(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 iD(t){let[,e,r,n,i,o,a,u,c,l,d,f]=t,g=Ed(e,i,n,r,o,a,u),m;return c?m=rD[c]:l?m=0:m=xa(d,f),[g,new Ke(m)]}s(iD,"extractRFC2822");function sD(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}s(sD,"preprocessRFC2822");var oD=/^(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$/,aD=/^(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$/,uD=/^(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 yE(t){let[,e,r,n,i,o,a,u]=t;return[Ed(e,i,n,r,o,a,u),Ke.utcInstance]}s(yE,"extractRFC1123Or850");function cD(t){let[,e,r,n,i,o,a,u]=t;return[Ed(e,u,r,n,i,o,a),Ke.utcInstance]}s(cD,"extractASCII");var lD=Qn(KC,gd),dD=Qn(QC,gd),fD=Qn(jC,gd),pD=Qn(Ty),Ay=jn(XC,Yn,Os,Is),mD=jn(HC,Yn,Os,Is),hD=jn(YC,Yn,Os,Is),gD=jn(Yn,Os,Is);function ED(t){return Hn(t,[lD,Ay],[dD,mD],[fD,hD],[pD,gD])}s(ED,"parseISODate");function yD(t){return Hn(sD(t),[nD,iD])}s(yD,"parseRFC2822Date");function TD(t){return Hn(t,[oD,yE],[aD,yE],[uD,cD])}s(TD,"parseHTTPDate");function SD(t){return Hn(t,[eD,tD])}s(SD,"parseISODuration");var AD=jn(Yn);function _D(t){return Hn(t,[ZC,AD])}s(_D,"parseISOTimeOnly");var OD=Qn(zC,JC),ID=Qn(Sy),wD=jn(Yn,Os,Is);function RD(t){return Hn(t,[OD,Ay],[ID,wD])}s(RD,"parseSQL");var TE="Invalid Duration",_y={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}},CD={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},..._y},Ze=146097/400,Wn=146097/4800,DD={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:Wn/7,days:Wn,hours:Wn*24,minutes:Wn*24*60,seconds:Wn*24*60*60,milliseconds:Wn*24*60*60*1e3},..._y},tn=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],bD=tn.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 Oy(t,e){var r;let n=(r=e.milliseconds)!=null?r:0;for(let i of bD.slice(1))e[i]&&(n+=e[i]*t[i].milliseconds);return n}s(Oy,"durationToMillis");function SE(t,e){let r=Oy(t,e)<0?-1:1;tn.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),tn.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(SE,"normalizeValues");function AE(t){let e={};for(let[r,n]of Object.entries(t))n!==0&&(e[r]=n);return e}s(AE,"removeZeroes");var ye=class t{static{s(this,"Duration")}constructor(e){let r=e.conversionAccuracy==="longterm"||!1,n=r?DD:CD;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:Ra(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]=SD(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]=_D(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 Yl(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 Aa(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):TE}toHuman(e={}){if(!this.isValid)return TE;let r=e.showZeros!==!1,n=tn.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+=md(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?Oy(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 tn)(Kn(r.values,i)||Kn(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]=uy(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,...Ra(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 SE(this.matrix,e),Gt(this,{values:e},!0)}rescale(){if(!this.isValid)return this;let e=AE(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 tn)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 SE(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=AE(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 tn)if(!r(this.values[n],e.values[n]))return!1;return!0}},Gn="Invalid Interval";function xD(t,e){return!t||!t.isValid?nn.invalid("missing or invalid start"):!e||!e.isValid?nn.invalid("missing or invalid end"):e<t?nn.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(xD,"validateStartEnd");var nn=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 Hl(n);return new t({invalid:n})}static fromDateTimes(e,r){let n=hs(e),i=hs(r),o=xD(n,i);return o??new t({start:n,end:i})}static after(e,r){let n=ye.fromDurationLike(r),i=hs(e);return t.fromDateTimes(i,i.plus(n))}static before(e,r){let n=ye.fromDurationLike(r),i=hs(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(hs).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()})`:Gn}[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=_a,r={}){return this.isValid?$e.create(this.s.loc.clone(r),e).formatInterval(this):Gn}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:Gn}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:Gn}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:Gn}toFormat(e,{separator:r=" \u2013 "}={}){return this.isValid?`${this.s.toFormat(e)}${r}${this.e.toFormat(e)}`:Gn}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))}},rn=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:sy(),localeWeek:oy()}}};function _E(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(_E,"dayDiff");function vD(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=_E(c,l);return(d-d%7)/7}],["days",_E]],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(vD,"highOrderDiffs");function ND(t,e,r,n){let[i,o,a,u]=vD(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(ND,"diff");var PD="missing Intl.DateTimeFormat.formatToParts support";function Z(t,e=r=>r){return{regex:t,deser:s(([r])=>e(OC(r)),"deser")}}s(Z,"intUnit");var LD="\xA0",Iy=`[ ${LD}]`,wy=new RegExp(Iy,"g");function UD(t){return t.replace(/\./g,"\\.?").replace(wy,Iy)}s(UD,"fixListRegex");function OE(t){return t.replace(/\./g,"").replace(wy," ").toLowerCase()}s(OE,"stripInsensitivities");function pt(t,e){return t===null?null:{regex:RegExp(t.map(UD).join("|")),deser:s(([r])=>t.findIndex(n=>OE(r)===OE(n))+e,"deser")}}s(pt,"oneOf");function IE(t,e){return{regex:t,deser:s(([,r,n])=>xa(r,n),"deser"),groups:e}}s(IE,"offset");function ha(t){return{regex:t,deser:s(([e])=>e,"deser")}}s(ha,"simple");function kD(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}s(kD,"escapeToken");function MD(t,e){let r=ft(e),n=ft(e,"{2}"),i=ft(e,"{3}"),o=ft(e,"{4}"),a=ft(e,"{6}"),u=ft(e,"{1,2}"),c=ft(e,"{1,3}"),l=ft(e,"{1,6}"),d=ft(e,"{1,9}"),f=ft(e,"{2,4}"),g=ft(e,"{4,6}"),m=s(p=>({regex:RegExp(kD(p.val)),deser:s(([T])=>T,"deser"),literal:!0}),"literal"),h=s(p=>{if(t.literal)return m(p);switch(p.val){case"G":return pt(e.eras("short"),0);case"GG":return pt(e.eras("long"),0);case"y":return Z(l);case"yy":return Z(f,ud);case"yyyy":return Z(o);case"yyyyy":return Z(g);case"yyyyyy":return Z(a);case"M":return Z(u);case"MM":return Z(n);case"MMM":return pt(e.months("short",!0),1);case"MMMM":return pt(e.months("long",!0),1);case"L":return Z(u);case"LL":return Z(n);case"LLL":return pt(e.months("short",!1),1);case"LLLL":return pt(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 ha(d);case"uu":return ha(u);case"uuu":return Z(r);case"a":return pt(e.meridiems(),0);case"kkkk":return Z(o);case"kk":return Z(f,ud);case"W":return Z(u);case"WW":return Z(n);case"E":case"c":return Z(r);case"EEE":return pt(e.weekdays("short",!1),1);case"EEEE":return pt(e.weekdays("long",!1),1);case"ccc":return pt(e.weekdays("short",!0),1);case"cccc":return pt(e.weekdays("long",!0),1);case"Z":case"ZZ":return IE(new RegExp(`([+-]${u.source})(?::(${n.source}))?`),2);case"ZZZ":return IE(new RegExp(`([+-]${u.source})(${n.source})?`),2);case"z":return ha(/[a-z_+-/]{1,256}?/i);case" ":return ha(/[^\S\n\r]/);default:return m(p)}},"unitate")(t)||{invalidReason:PD};return h.token=t,h}s(MD,"unitForToken");var FD={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 BD(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=FD[a];if(typeof u=="object"&&(u=u[o]),u)return{literal:!1,val:u}}s(BD,"tokenForPart");function WD(t){return[`^${t.map(r=>r.regex).reduce((r,n)=>`${r}(${n.source})`,"")}$`,t]}s(WD,"buildRegex");function GD(t,e,r){let n=t.match(e);if(n){let i={},o=1;for(let a in r)if(Kn(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(GD,"match");function $D(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=pd(t.u)),[Object.keys(t).reduce((o,a)=>{let u=e(a);return u&&(o[u]=t[a]),o},{}),r,n]}s($D,"dateTimeFromMatches");var $l=null;function VD(){return $l||($l=ue.fromMillis(1555555555555)),$l}s(VD,"getDummyDateTime");function qD(t,e){if(t.literal)return t;let r=$e.macroTokenToFormatOpts(t.val),n=Dy(r,e);return n==null||n.includes(void 0)?t:n}s(qD,"maybeExpandMacroToken");function Ry(t,e){return Array.prototype.concat(...t.map(r=>qD(r,e)))}s(Ry,"expandMacroTokens");var Ca=class{static{s(this,"TokenParser")}constructor(e,r){if(this.locale=e,this.format=r,this.tokens=Ry($e.parseFormat(r),e),this.units=this.tokens.map(n=>MD(n,e)),this.disqualifyingUnit=this.units.find(n=>n.invalidReason),!this.disqualifyingUnit){let[n,i]=WD(this.units);this.regex=RegExp(n,"i"),this.handlers=i}}explainFromTokens(e){if(this.isValid){let[r,n]=GD(e,this.regex,this.handlers),[i,o,a]=n?$D(n):[null,null,void 0];if(Kn(n,"a")&&Kn(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 Cy(t,e,r){return new Ca(t,r).explainFromTokens(e)}s(Cy,"explainFromTokens");function KD(t,e,r){let{result:n,zone:i,specificOffset:o,invalidReason:a}=Cy(t,e,r);return[n,i,o,a]}s(KD,"parseFromTokens");function Dy(t,e){if(!t)return null;let n=$e.create(e,t).dtFormatter(VD()),i=n.formatToParts(),o=n.resolvedOptions();return i.map(a=>BD(a,t,o))}s(Dy,"formatOptsToTokens");var Vl="Invalid DateTime",wE=864e13;function Es(t){return new Ve("unsupported zone",`the zone "${t.name}" is not supported`)}s(Es,"unsupportedZone");function ql(t){return t.weekData===null&&(t.weekData=Ia(t.c)),t.weekData}s(ql,"possiblyCachedWeekData");function Kl(t){return t.localWeekData===null&&(t.localWeekData=Ia(t.c,t.loc.getMinDaysInFirstWeek(),t.loc.getStartOfWeek())),t.localWeekData}s(Kl,"possiblyCachedLocalWeekData");function en(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(en,"clone");function by(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(by,"fixOffset");function ga(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(ga,"tsToObj");function ya(t,e,r){return by(ba(t),e,r)}s(ya,"objToTS");function RE(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,wa(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=ba(o),[c,l]=by(u,r,t.zone);return a!==0&&(c+=a,l=t.zone.offset(c)),{ts:c,o:l}}s(RE,"adjustTime");function $n(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($n,"parseDataToDateTime");function Ea(t,e,r=!0){return t.isValid?$e.create(re.create("en-US"),{allowZ:r,forceSimple:!0}).formatDateTimeFromString(t,e):null}s(Ea,"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 CE(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(CE,"toISOTime");var xy={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},QD={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},jD={ordinal:1,hour:0,minute:0,second:0,millisecond:0},Ta=["year","month","day","hour","minute","second","millisecond"],HD=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],YD=["year","ordinal","hour","minute","second","millisecond"];function Sa(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 Aa(t);return e}s(Sa,"normalizeUnit");function DE(t){switch(t.toLowerCase()){case"localweekday":case"localweekdays":return"localWeekday";case"localweeknumber":case"localweeknumbers":return"localWeekNumber";case"localweekyear":case"localweekyears":return"localWeekYear";default:return Sa(t)}}s(DE,"normalizeUnitWithLocalWeeks");function zD(t){if(ys===void 0&&(ys=se.now()),t.type!=="iana")return t.offset(ys);let e=t.name,r=cd.get(e);return r===void 0&&(r=t.offset(ys),cd.set(e,r)),r}s(zD,"guessOffsetForZone");function bE(t,e){let r=fr(e.zone,se.defaultZone);if(!r.isValid)return ue.invalid(Es(r));let n=re.fromObject(e),i,o;if(H(t.year))i=se.now();else{for(let c of Ta)H(t[c])&&(t[c]=xy[c]);let a=ny(t)||iy(t);if(a)return ue.invalid(a);let u=zD(r);[i,o]=ya(t,u,r)}return new ue({ts:i,zone:r,loc:n,o})}s(bE,"quickDT");function xE(t,e,r){let n=H(r.round)?!0:r.round,i=H(r.rounding)?"trunc":r.rounding,o=s((u,c)=>(u=md(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(xE,"diffRelative");function vE(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(vE,"lastOpts");var ys,cd=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:Es(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=ga(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]=vE(arguments),[n,i,o,a,u,c,l]=r;return bE({year:n,month:i,day:o,hour:a,minute:u,second:c,millisecond:l},e)}static utc(){let[e,r]=vE(arguments),[n,i,o,a,u,c,l]=r;return e.zone=Ke.utcInstance,bE({year:n,month:i,day:o,hour:a,minute:u,second:c,millisecond:l},e)}static fromJSDate(e,r={}){let n=DC(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(Es(i))}static fromMillis(e,r={}){if(mr(e))return e<-wE||e>wE?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(Es(n));let i=re.fromObject(r),o=Ra(e,DE),{minDaysInFirstWeek:a,startOfWeek:u}=mE(o,i),c=se.now(),l=H(r.specificOffset)?n.offset(c):r.specificOffset,d=!H(o.ordinal),f=!H(o.year),g=!H(o.month)||!H(o.day),m=f||g,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(g&&d)throw new pr("Can't mix ordinal dates with month/day");let h=y||o.weekday&&!m,p,T,A=ga(c,l);h?(p=HD,T=QD,A=Ia(A,a,u)):d?(p=YD,T=jD,A=Gl(A)):(p=Ta,T=xy);let _=!1;for(let G of p){let ee=o[G];H(ee)?_?o[G]=T[G]:o[G]=A[G]:_=!0}let I=h?wC(o,a,u):d?RC(o):ny(o),O=I||iy(o);if(O)return t.invalid(O);let C=h?fE(o,a,u):d?pE(o):o,[R,w]=ya(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]=ED(e);return $n(n,i,r,"ISO 8601",e)}static fromRFC2822(e,r={}){let[n,i]=yD(e);return $n(n,i,r,"RFC 2822",e)}static fromHTTP(e,r={}){let[n,i]=TD(e);return $n(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]=KD(a,e,r);return d?t.invalid(d):$n(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]=RD(e);return $n(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 jl(n);return new t({invalid:n})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}static parseFormatForOpts(e,r={}){let n=Dy(e,re.fromObject(r));return n?n.map(i=>i?i.val:null).join(""):null}static expandFormat(e,r={}){return Ry($e.parseFormat(e),re.fromObject(r)).map(i=>i.val).join("")}static resetCache(){ys=void 0,cd.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?ql(this).weekYear:NaN}get weekNumber(){return this.isValid?ql(this).weekNumber:NaN}get weekday(){return this.isValid?ql(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?Kl(this).weekday:NaN}get localWeekNumber(){return this.isValid?Kl(this).weekNumber:NaN}get localWeekYear(){return this.isValid?Kl(this).weekYear:NaN}get ordinal(){return this.isValid?Gl(this.c).ordinal:NaN}get monthShort(){return this.isValid?rn.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?rn.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?rn.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?rn.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=ba(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=ga(c,a),f=ga(l,u);return d.hour===f.hour&&d.minute===f.minute&&d.second===f.second&&d.millisecond===f.millisecond?[en(this,{ts:c}),en(this,{ts:l})]:[this]}get isInLeapYear(){return _s(this.year)}get daysInMonth(){return wa(this.year,this.month)}get daysInYear(){return this.isValid?Vn(this.year):NaN}get weeksInWeekYear(){return this.isValid?As(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?As(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]=ya(a,o,e)}return en(this,{ts:i,zone:e})}else return t.invalid(Es(e))}reconfigure({locale:e,numberingSystem:r,outputCalendar:n}={}){let i=this.loc.clone({locale:e,numberingSystem:r,outputCalendar:n});return en(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;let r=Ra(e,DE),{minDaysInFirstWeek:n,startOfWeek:i}=mE(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=fE({...Ia(this.c,n,i),...r},n,i):H(r.ordinal)?(f={...this.toObject(),...r},H(r.day)&&(f.day=Math.min(wa(f.year,f.month),f.day))):f=pE({...Gl(this.c),...r});let[g,m]=ya(f,this.o,this.zone);return en(this,{ts:g,o:m})}plus(e){if(!this.isValid)return this;let r=ye.fromDurationLike(e);return en(this,RE(this,r))}minus(e){if(!this.isValid)return this;let r=ye.fromDurationLike(e).negate();return en(this,RE(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):Vl}toLocaleString(e=_a,r={}){return this.isValid?$e.create(this.loc.clone(r),e).formatDateTime(this):Vl}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=Sa(a);let u=e==="extended",c=Ql(this,u,a);return Ta.indexOf(a)>=3&&(c+="T"),c+=CE(this,u,r,n,i,o,a),c}toISODate({format:e="extended",precision:r="day"}={}){return this.isValid?Ql(this,e==="extended",Sa(r)):null}toISOWeekDate(){return Ea(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=Sa(u),(i&&Ta.indexOf(u)>=3?"T":"")+CE(this,a==="extended",r,e,n,o,u)):null}toRFC2822(){return Ea(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return Ea(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")),Ea(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():Vl}[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=bC(r).map(ye.normalizeUnit),a=e.valueOf()>this.valueOf(),u=a?this:e,c=a?e:this,l=ND(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?nn.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),xE(r,this.plus(n),{...e,numeric:"always",units:i,unit:o})}toRelativeCalendar(e={}){return this.isValid?xE(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 hE(e,r=>r.valueOf(),Math.min)}static max(...e){if(!e.every(t.isDateTime))throw new _e("max requires all arguments be DateTimes");return hE(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 Cy(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 Ca(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):$n(u,c,n,`format ${r.format}`,e,l)}static get DATE_SHORT(){return _a}static get DATE_MED(){return NE}static get DATE_MED_WITH_WEEKDAY(){return oC}static get DATE_FULL(){return PE}static get DATE_HUGE(){return LE}static get TIME_SIMPLE(){return UE}static get TIME_WITH_SECONDS(){return kE}static get TIME_WITH_SHORT_OFFSET(){return ME}static get TIME_WITH_LONG_OFFSET(){return FE}static get TIME_24_SIMPLE(){return BE}static get TIME_24_WITH_SECONDS(){return WE}static get TIME_24_WITH_SHORT_OFFSET(){return GE}static get TIME_24_WITH_LONG_OFFSET(){return $E}static get DATETIME_SHORT(){return VE}static get DATETIME_SHORT_WITH_SECONDS(){return qE}static get DATETIME_MED(){return KE}static get DATETIME_MED_WITH_SECONDS(){return QE}static get DATETIME_MED_WITH_WEEKDAY(){return aC}static get DATETIME_FULL(){return jE}static get DATETIME_FULL_WITH_SECONDS(){return HE}static get DATETIME_HUGE(){return YE}static get DATETIME_HUGE_WITH_SECONDS(){return zE}};function hs(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(hs,"friendlyDateTime");var JD="3.7.2";Qe.DateTime=ue;Qe.Duration=ye;Qe.FixedOffsetZone=Ke;Qe.IANAZone=Vt;Qe.Info=rn;Qe.Interval=nn;Qe.InvalidZone=Oa;Qe.Settings=se;Qe.SystemZone=Ss;Qe.VERSION=JD;Qe.Zone=hr});var Py=Q((YW,Ny)=>{"use strict";var sn=vy();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=sn.DateTime.fromJSDate(t,r):typeof t=="number"?this._date=sn.DateTime.fromMillis(t,r):typeof t=="string"&&(this._date=sn.DateTime.fromISO(t,r),this._date.isValid||(this._date=sn.DateTime.fromRFC2822(t,r)),this._date.isValid||(this._date=sn.DateTime.fromSQL(t,r)),this._date.isValid||(this._date=sn.DateTime.fromFormat(t,"EEE, d MMM yyyy HH:mm:ss",r))):this._date=sn.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");Ny.exports=Y});var ky=Q((JW,Uy)=>{"use strict";function on(t){return{start:t,count:1}}s(on,"buildRange");function Ly(t,e){t.end=e,t.step=e-t.start,t.count=2}s(Ly,"completeRangeWithItem");function yd(t,e,r){e&&(e.count===2?(t.push(on(e.start)),t.push(on(e.end))):t.push(e)),r&&t.push(r)}s(yd,"finalizeCurrentRange");function XD(t){for(var e=[],r=void 0,n=0;n<t.length;n++){var i=t[n];typeof i!="number"?(yd(e,r,on(i)),r=void 0):r?r.count===1?Ly(r,i):r.step===i-r.end?(r.count++,r.end=i):r.count===2?(e.push(on(r.start)),r=on(r.end),Ly(r,i)):(yd(e,r),r=on(i)):r=on(i)}return yd(e,r),e}s(XD,"compactField");Uy.exports=XD});var Fy=Q((ZW,My)=>{"use strict";var ZD=ky();function eb(t,e,r){var n=ZD(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(g,m){var y=l.start+m;return(y-l.start)%l.step===0?y:null}).filter(function(g){return g!=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(eb,"stringifyField");My.exports=eb});var Gy=Q((tG,Wy)=>{"use strict";var an=Py(),tb=Fy(),By=1e4;function k(t,e){this._options=e,this._utc=e.utc||!1,this._tz=this._utc?"UTC":e.tz,this._currentDate=new an(e.currentDate,this._tz),this._startDate=e.startDate?new an(e.startDate,this._tz):null,this._endDate=e.endDate?new an(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 h=0,p=y.length;h<p;h++){var T=y[h];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 g=0,m=f.length;g<m;g++)d(a(f[g]));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 g=+f[0],m=+f[1];if(Number.isNaN(g)||Number.isNaN(m)||g<n.min||m>n.max)throw new Error("Constraint error, got range "+g+"-"+m+" expected range "+n.min+"-"+n.max);if(g>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 h=g,p=m;h<=p;h++){var T=d.indexOf(h)!==-1;!T&&y>0&&y%l===0?(y=1,d.push(h)):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 an(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<By;){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 g=r(a.getDate(),this.fields.dayOfMonth);i(this.fields.dayOfMonth)&&(g=g||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()],h=this.fields.dayOfWeek.length===k.constraints[5].max-k.constraints[5].min+1,p=a.getHours();if(!g&&(!m||h)){this._applyTimezoneShift(a,o,"Day");continue}if(!y&&h&&!g){this._applyTimezoneShift(a,o,"Day");continue}if(y&&!h&&!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>=By)throw new Error("Invalid expression, loop limit exceeded");return this._currentDate=new an(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 an(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(tb(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 an(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 g=k.map[d],m=c[c.length>f?d:d-l];if(d<l||!m)u.push(k._parseField(g,k.parseDefaults[d],k.constraints[d]));else{var y=g==="dayOfWeek"?A(m):m;u.push(k._parseField(g,y,k.constraints[d]))}}for(var h={},d=0,f=k.map.length;d<f;d++){var p=k.map[d];h[p]=u[d]}var T=k._handleMaxDaysInMonth(h);return h.dayOfMonth=T||h.dayOfMonth,new k(h,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(g,m,y){if(!m)throw new Error("Validation error, Field "+g+" is missing");if(m.length===0)throw new Error("Validation error, Field "+g+" contains no values");for(var h=0,p=m.length;h<p;h++){var T=m[h];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(g,m,y){return!m||g!==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");Wy.exports=k});var Vy=Q((nG,$y)=>{"use strict";var Na=Gy();function gr(){}s(gr,"CronParser");gr._parseEntry=s(function(e){var r=e.split(" ");if(r.length===6)return{interval:Na.parse(e)};if(r.length>6)return{interval:Na.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 Na.parse(e,r)},"parseExpression");gr.fieldsToExpression=s(function(e,r){return Na.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");$y.exports=gr});var mF={};P(mF,{APIWarning:()=>Cn,ActiveContentFileError:()=>Ku,AutomationViewMode:()=>Ga,BUDIBASE_DATASOURCE_TYPE:()=>zd,BadRequestError:()=>Eo,BudibaseError:()=>go,Config:()=>rf,Cookie:()=>yr,DEFAULT_BB_DATASOURCE_ID:()=>Pn,DEFAULT_EMPLOYEE_TABLE_ID:()=>ef,DEFAULT_EXPENSES_TABLE_ID:()=>Zd,DEFAULT_INVENTORY_TABLE_ID:()=>Xd,DEFAULT_JOBS_TABLE_ID:()=>Jd,DEFAULT_TENANT_ID:()=>ce,DeprecatedViews:()=>Jn,DesignDocuments:()=>vs,DocumentType:()=>ae,Duration:()=>me,EmailUnavailableError:()=>er,Endpoint:()=>Gc,EndpointGroup:()=>Dn,EndpointGroupList:()=>Go,FeatureDisabledError:()=>Hu,FeatureDisabledWarning:()=>bc,ForbiddenError:()=>Qu,GlobalRole:()=>tf,HTTPError:()=>Be,Header:()=>Pe,InternalTable:()=>It,InvalidAPIKeyWarning:()=>bi,MAX_VALID_DATE:()=>qa,MIN_VALID_DATE:()=>cT,NotFoundError:()=>qu,NotImplementedError:()=>ju,RedisClient:()=>Re,SEPARATOR:()=>D,SQLITE_DESIGN_DOC_ID:()=>xt,SQS_DATASOURCE_INTERNAL:()=>Yd,StaticDatabases:()=>pe,UNICODE_MAX:()=>Ne,USER_METADATA_PREFIX:()=>xs,UnexpectedError:()=>Vu,UsageLimitError:()=>Yu,UsageLimitWarning:()=>Dc,UserStatus:()=>Va,ViewName:()=>Kt,WORKSPACE_DEV:()=>$a,WORKSPACE_DEV_PREFIX:()=>nt,WORKSPACE_PREFIX:()=>rt,accounts:()=>On,auth:()=>zm,blacklist:()=>pp,cache:()=>Di,configs:()=>tr,constants:()=>nf,context:()=>le,csv:()=>dh,db:()=>Ir,docIds:()=>Hf,docUpdates:()=>th,encryption:()=>Gm,env:()=>E,errors:()=>Ju,events:()=>wn,features:()=>km,getErrorMessage:()=>$A,getPublicError:()=>zu,init:()=>pF,installation:()=>rc,locks:()=>xr,logging:()=>uo,middleware:()=>Ym,objectStore:()=>bp,permissions:()=>Pm,platform:()=>ho,plugins:()=>Xm,queue:()=>Up,redis:()=>Zm,roles:()=>Nm,security:()=>Hp,sessions:()=>Xu,setEnv:()=>Ps,sql:()=>lh,tenancy:()=>fF,timers:()=>Du,userUtils:()=>cm,users:()=>Ii,utils:()=>di,warnings:()=>$m,withEnv:()=>mT});module.exports=$O(mF);var tr={};P(tr,{analyticsEnabled:()=>Zu,generateConfigID:()=>Lo,getConfig:()=>Ge,getDefaultGoogleConfig:()=>Tm,getGoogleConfig:()=>mc,getGoogleDatasourceConfig:()=>Am,getOIDCConfig:()=>Ek,getOIDCConfigById:()=>_m,getOIDCLogosDoc:()=>hk,getPlatformUrl:()=>Uo,getRecaptchaConfig:()=>Sk,getSCIMConfig:()=>Tk,getSMTPConfig:()=>yk,getSMTPConfigDoc:()=>k_,getSettingsConfig:()=>Sm,getSettingsConfigDoc:()=>wi,getTranslationsConfig:()=>pk,getTranslationsConfigDoc:()=>U_,save:()=>fk});var VO=["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"],qO=["automation:deleted","workspace_app:deleted","datasource:deleted","table:deleted","query:deleted","view:deleted"],mh=[...VO,...qO],hh={"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 $c=(n=>(n.SQL="sql",n.JSON="json",n.FIELDS="fields",n))($c||{}),Vc=(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))(Vc||{}),Vo=(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))(Vo||{});var qc=(r=>(r.CONNECTION_CHECKING="connection",r.FETCH_TABLE_NAMES="fetch_table_names",r))(qc||{});var KO=W(require("lodash/isPlainObject"));var Vr=(a=>(a.EQUAL="equal",a.NOT_EQUAL="notEqual",a.EMPTY="empty",a.NOT_EMPTY="notEmpty",a.FUZZY="fuzzy",a.STRING="string",a))(Vr||{}),cr=(o=>(o.CONTAINS="contains",o.NOT_CONTAINS="notContains",o.CONTAINS_ANY="containsAny",o.ONE_OF="oneOf",o.NOT_ONE_OF="notOneOf",o))(cr||{}),xn=(e=>(e.RANGE="range",e))(xn||{}),Li=(r=>(r.AND="$and",r.OR="$or",r))(Li||{});function qo(t){return Object.values(Li).includes(t)}s(qo,"isLogicalSearchOperator");function gh(t){return Object.values(Vr).includes(t)}s(gh,"isBasicSearchOperator");function Eh(t){return Object.values(cr).includes(t)}s(Eh,"isArraySearchOperator");function Ko(t){return Object.values(xn).includes(t)}s(Ko,"isRangeSearchOperator");var yh=s(t=>typeof t=="object"&&t._id&&t._rev,"isDocument");var Ui=(o=>(o.USER="user",o.HEADER="header",o.QUERY="query",o.SUBDOMAIN="subdomain",o.PATH="path",o))(Ui||{});var ki=(i=>(i.READ="read",i.WRITE="write",i.EXECUTE="execute",i.ADMIN="admin",i))(ki||{});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 jo=s(t=>t.hosting==="cloud","isCloudAccount");var Ho=s(t=>t.authType==="sso","isSSOAccount");var D="_",Ne="\uFFF0",Ot=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 It=(e=>(e.USER_METADATA="ta_users",e))(It||{});function vn(t){return!!t.providerType}s(vn,"isSSOUser");var Kc=(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))(Kc||{}),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||{}),jc=(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))(jc||{});var Hc=(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))(Hc||{}),Th=[...Object.values(Hc),...Object.values(jc)];function Sh(t){return t.stepId==="BRANCH"}s(Sh,"isBranchStep");var Yc="bb_internal";var Ah=["attachment_single","attachment","signature_single","bb_reference","json","array"];var nf={};P(nf,{AutomationViewMode:()=>Ga,BUDIBASE_DATASOURCE_TYPE:()=>zd,Config:()=>rf,Cookie:()=>yr,DEFAULT_BB_DATASOURCE_ID:()=>Pn,DEFAULT_EMPLOYEE_TABLE_ID:()=>ef,DEFAULT_EXPENSES_TABLE_ID:()=>Zd,DEFAULT_INVENTORY_TABLE_ID:()=>Xd,DEFAULT_JOBS_TABLE_ID:()=>Jd,DEFAULT_TENANT_ID:()=>ce,DeprecatedViews:()=>Jn,DesignDocuments:()=>vs,DocumentType:()=>ae,GlobalRole:()=>tf,Header:()=>Pe,InternalTable:()=>It,MAX_VALID_DATE:()=>qa,MIN_VALID_DATE:()=>cT,SEPARATOR:()=>D,SQLITE_DESIGN_DOC_ID:()=>xt,SQS_DATASOURCE_INTERNAL:()=>Yd,StaticDatabases:()=>pe,UNICODE_MAX:()=>Ne,USER_METADATA_PREFIX:()=>xs,UserStatus:()=>Va,ViewName:()=>Kt,WORKSPACE_DEV:()=>$a,WORKSPACE_DEV_PREFIX:()=>nt,WORKSPACE_PREFIX:()=>rt});var Pe=(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))(Pe||{});var Nn={WORKSPACES:"/builder/apps",SETTINGS_EMAIL:"/builder/settings/email",SETTINGS_AUTH:"/builder/settings/auth",SETTINGS_PEOPLE_USERS:"/builder/settings/people/users",APPS:"/builder/apps"},Mi={ACCOUNT:"/portal/account",BILLING:"/portal/billing",TENANTS:"/portal/tenants",UPGRADE:"/portal/upgrade"};var Le={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"}},_h={integer:{max:2147483647,min:-2147483648},int:{max:2147483647,min:-2147483648},smallint:{max:32767,min:-32768},mediumint:{max:8388607,min:-8388608}};var Pn="datasource_internal_bb_default";var Er={};P(Er,{ColumnSplitter:()=>kd,NoEmptyFilterStrings:()=>nT,buildQuery:()=>iT,cleanupQuery:()=>Bd,fixupFilterArrays:()=>Gd,getKeyNumbering:()=>Wd,getValidOperatorsForType:()=>Nb,hasFilters:()=>Md,limit:()=>oT,recurseLogicalOperators:()=>Fd,removeKeyNumbering:()=>Yo,runQuery:()=>Ma,search:()=>Ub,sort:()=>sT,splitFiltersArray:()=>zo});var zn=W(Oh());var wt={};P(wt,{filterValueToLabel:()=>JO,hasSchema:()=>XO,isSupportedUserSearch:()=>Rh,nameToUrl:()=>nI,parallelForeach:()=>zO,processSearchFilters:()=>Xc,toMap:()=>eI,trimOtherProps:()=>ZO,unreachable:()=>YO});var wh=W(require("lodash/pick"));var HO=["field","operator","value","type","externalType","valueType","noValue","formulaType"];function YO(t,e){let r=e?.message||`No such case in exhaustive switch: ${t}`;if(!!!e?.doNotThrow)throw new Error(r)}s(YO,"unreachable");async function zO(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(zO,"parallelForeach");function JO(){return Object.keys(Le).reduce((t,e)=>{let n=Le[e];return t[n.value]=n.label,t},{})}s(JO,"filterValueToLabel");function XO(t){return typeof t=="object"&&!Array.isArray(t)&&t!==null&&!(t instanceof Date)&&Object.keys(t).length>0}s(XO,"hasSchema");function ZO(t,e){return Object.keys(t).filter(n=>e.includes(n)).reduce((n,i)=>({...n,[i]:t[i]}),{})}s(ZO,"trimOtherProps");function Rh(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(qo(o)){for(let l of t[o].conditions)if(!Rh(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(Rh,"isSupportedUserSearch");function Xc(t){if(!t||t.length===0)return;let{allOr:e,onEmptyFilter:r,filters:n}=zo(t);return{logicalOperator:"all",onEmptyFilter:r||"all",groups:[{logicalOperator:e?"any":"all",filters:n.map(i=>{let o=(0,wh.default)(i,HO);return o.field=Yo(o.field),o})}]}}s(Xc,"processSearchFilters");function eI(t,e){return e.reduce((r,n)=>(r[n[t]]=n,r),{})}s(eI,"toMap");var tI=s(t=>t?t.trim():null,"resolveWorkspaceName"),rI=s(t=>{let e,r=tI(t);e=r?r.toLowerCase():"";let n=e?e.replace(/\s+/g,"-"):"";return encodeURI(n)},"resolveWorkspaceUrl"),nI=s(t=>{let e=rI(t);return iI(e)},"nameToUrl"),iI=s(t=>(t&&!t.startsWith("/")&&(t=`/${t}`),t===""?null:t),"tidyUrl");var ke={};P(ke,{accountPortalAccountUrl:()=>Rd,accountPortalBillingUrl:()=>Cd,accountPortalUpgradeUrl:()=>Dd,agentChatUrl:()=>Ld,appAgentUrl:()=>Ua,appChatUrl:()=>La,applyBaseUrl:()=>zy,builderAppsUrl:()=>Pd,builderSettingsAuthUrl:()=>vd,builderSettingsEmailUrl:()=>xd,builderSettingsPeopleUsersUrl:()=>Nd,builderWorkspacesUrl:()=>bd,cancelableTimeout:()=>Ch,cron:()=>Db,deepGet:()=>Zc,duplicateName:()=>_b,escapeHtml:()=>cI,formatBytes:()=>Cb,getNextPreviewDevice:()=>Tb,getPreviewDeviceIcon:()=>Sb,getPreviewModalDevice:()=>Ab,getSequentialName:()=>Ob,getUserColor:()=>oI,getUserInitials:()=>sI,getUserLabel:()=>aI,isEnvironmentVariableKey:()=>eT,isGoogleSheets:()=>dI,isSQL:()=>fI,lists:()=>Id,normaliseSafeCssColor:()=>mI,normalizeForComparison:()=>lI,retry:()=>pI,roles:()=>Od,schema:()=>ws,structuredOutput:()=>Sd,urlHelpers:()=>Zy,views:()=>_d,wait:()=>el,withTimeout:()=>uI});var Zc=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"),sI=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"),oI=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"),aI=s(t=>{if(!t)return"";let{firstName:e,lastName:r,email:n}=t;return e&&r?`${e} ${r}`:e||r||n},"getUserLabel");function Ch(t){let e;return[new Promise((r,n)=>{e=setTimeout(()=>{n({status:301,errno:"ETIME"})},t)}),()=>{clearTimeout(e)}]}s(Ch,"cancelableTimeout");async function uI(t,e){let[r,n]=Ch(t),i=await Promise.race([e(),r]);return n(),i}s(uI,"withTimeout");var cI=s(t=>t==null?"":String(t).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"),"escapeHtml"),lI=s(t=>t.toLowerCase().trim(),"normalizeForComparison");function dI(t){return t==="GOOGLE_SHEETS"}s(dI,"isGoogleSheets");function fI(t){return!t||!t.source?!1:["POSTGRES","SQL_SERVER","MYSQL","ORACLE"].indexOf(t.source)!==-1||t.isSQL===!0}s(fI,"isSQL");async function el(t){return new Promise(e=>setTimeout(e,t))}s(el,"wait");async function pI(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 el(o);try{return await t()}catch(a){n=a}}throw n}s(pI,"retry");var mI=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 Ky=W(Rt()),Qy=W(Vy());var qy="(Input cron: ",rb={"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 nb(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(nb,"formatExecutionDate");function ib(t){let e=[];for(let r of t){r.includes(qy)&&(r=r.split(qy)[0].trim());for(let[n,i]of Object.entries(rb))r.includes(n)&&(r=r.replace(new RegExp(n,"g"),i));e.push(r)}return e}s(ib,"improveErrors");function jy(t,e=4,r){let n=Qy.default.parseExpression(t,r?{tz:r}:void 0),i=[];for(let o=0;o<e;o++)i.push(nb(n.next().toDate(),r));return i}s(jy,"getNextExecutionDates");function Hy(t){let e=(0,Ky.default)(t,{preset:"npm-cron-schedule",override:{useSeconds:!1}});return e.isValid()?{valid:!0}:{valid:!1,err:ib(e.getError())}}s(Hy,"validate");var ws={};P(ws,{decodeNonAscii:()=>Td,encodeNonAscii:()=>ab,isDeprecatedSingleUserColumn:()=>sb,isNumeric:()=>ub,isRequired:()=>ob});function sb(t){return t.type==="bb_reference"&&t.subtype==="user"&&t.constraints?.type!=="array"}s(sb,"isDeprecatedSingleUserColumn");function ob(t){return!!t&&(typeof t.presence!="boolean"&&t.presence?.allowEmpty===!1||t.presence===!0)}s(ob,"isRequired");function ab(t){return t.split("").map(e=>e.charCodeAt(0)>127?"\\u"+e.charCodeAt(0).toString(16).padStart(4,"0"):e).join("")}s(ab,"encodeNonAscii");function Td(t){return t.replace(/\\u([0-9a-fA-F]{4})/g,(e,r)=>String.fromCharCode(parseInt(r,16)))}s(Td,"decodeNonAscii");function ub(t){return t.type==="number"||t.type==="bigint"}s(ub,"isNumeric");var Sd={};P(Sd,{normalizeSchemaForStructuredOutput:()=>cb});function cb(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 g=f;if(g.required===!0){a.push(d);let{required:m,...y}=g;u[d]=e(y)}else u[d]=e(g)}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(cb,"normalizeSchemaForStructuredOutput");var _d={};P(_d,{basicFields:()=>mb,calculationFields:()=>pb,hasCalculationFields:()=>fb,isBasicViewField:()=>lb,isCalculationField:()=>Rs,isCalculationView:()=>db,isV2:()=>hb,isVisible:()=>Yy});var Ad=W(require("lodash/pickBy"));function Rs(t){return"calculationType"in t}s(Rs,"isCalculationField");function lb(t){return!Rs(t)}s(lb,"isBasicViewField");function db(t){return t.type==="calculation"}s(db,"isCalculationView");function fb(t){return Object.values(t.schema||{}).some(Rs)}s(fb,"hasCalculationFields");function pb(t){return(0,Ad.default)(t.schema||{},Rs)}s(pb,"calculationFields");function Yy(t){return t.visible!==!1}s(Yy,"isVisible");function mb(t,e){let{visible:r=!0}=e||{};return(0,Ad.default)(t.schema||{},n=>!Rs(n)&&(!r||Yy(n)))}s(mb,"basicFields");function hb(t){return t.version===2}s(hb,"isV2");var Od={};P(Od,{checkForRoleInheritanceLoops:()=>Eb});function gb(t){return`role${"_"}${t}`}s(gb,"prefixForCheck");function Eb(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=gb(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(Eb,"checkForRoleInheritanceLoops");var Id={};P(Id,{punctuateList:()=>yb});function yb(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(yb,"punctuateList");var wd=["desktop","tablet","mobile"],Tb=s(t=>{let e=wd.indexOf(t||"desktop"),n=((e===-1?0:e)+1)%wd.length;return wd[n]},"getNextPreviewDevice"),Sb=s(t=>t==="mobile"?"device-mobile-camera":t==="tablet"?"device-tablet-camera":"monitor","getPreviewDeviceIcon"),Ab=s(t=>t&&t!=="desktop"?t:null,"getPreviewModalDevice");var _b=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"),Ob=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 Ib=/{?{{([^{].*?)}}}?/g;function zy(t,e){if(!e)return t;let r=t.match(Ib)??[],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,g)=>d.replace(o(g),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(zy,"applyBaseUrl");var Jy=s(t=>t?t.startsWith("/")?t:`/${t}`:"","normalizePath"),wb=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=wb(t);return r?`${n}${r}`:n},"joinBaseAndPath"),Rb=s(t=>t.replace(/\/+$/,""),"trimTrailingSlash"),Xy=s(t=>Rb(Jy(t)),"normalizeAppUrl"),Rd=s(t=>qt(t,Mi.ACCOUNT),"accountPortalAccountUrl"),Cd=s((t,e)=>{let r=typeof e=="string"||e==null?{tenantId:e}:e,n=qt(t,Mi.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"),Dd=s((t,e)=>{if(e){let r=qt(t,Mi.TENANTS),n=encodeURIComponent(e);return`${r}?managePlansTenantId=${n}`}return qt(t,Mi.UPGRADE)},"accountPortalUpgradeUrl"),bd=s(t=>qt(t,Nn.WORKSPACES),"builderWorkspacesUrl"),xd=s(t=>qt(t,Nn.SETTINGS_EMAIL),"builderSettingsEmailUrl"),vd=s(t=>qt(t,Nn.SETTINGS_AUTH),"builderSettingsAuthUrl"),Nd=s(t=>qt(t,Nn.SETTINGS_PEOPLE_USERS),"builderSettingsPeopleUsersUrl"),Pd=s(t=>qt(t,Nn.APPS),"builderAppsUrl"),La=s(t=>`/app-chat${Xy(t)}`,"appChatUrl"),Ua=s((t,e)=>`${Xy(t)}/agent/${encodeURIComponent(e)}`,"appAgentUrl"),Ld=s((t,e)=>La(Ua(t,e)),"agentChatUrl"),Zy={accountPortalAccountUrl:Rd,accountPortalBillingUrl:Cd,accountPortalUpgradeUrl:Dd,builderWorkspacesUrl:bd,builderSettingsEmailUrl:xd,builderSettingsAuthUrl:vd,builderSettingsPeopleUsersUrl:Nd,builderAppsUrl:Pd,appChatUrl:La,appAgentUrl:Ua,agentChatUrl:Ld};function Cb(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(Cb,"formatBytes");function eT(t){return/^{{\s*env\.([^\s]+)\s*}}$/.test(String(t))}s(eT,"isEnvironmentVariableKey");var Db={getNextExecutionDates:jy,validate:Hy};var ka=W(require("lodash/isPlainObject")),Ud=W(require("lodash/isEmpty"));var xb=/{{([^{].*?)}}/g,rT=Object.values(Li),vb=[...Object.values(Vr),...Object.values(cr),...Object.values(xn)],Nb=s((t,e,r)=>{let n=Le,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"||ws.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"),nT=[Le.StartsWith.value,Le.Like.value,Le.Equals.value,Le.NotEquals.value,Le.Contains.value,Le.NotContains.value,Le.ContainsAny.value,Le.In.value,Le.NotIn.value];function Fd(t,e){for(let r of rT)t[r]&&(t[r].conditions=t[r].conditions.map(n=>e(n)));return t}s(Fd,"recurseLogicalOperators");var Bd=s(t=>{for(let e of nT)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===""||Pb(o))&&delete t[e][i]}return t=Fd(t,Bd),t},"cleanupQuery");function Pb(t){return Array.isArray(t)&&t.length===0}s(Pb,"isEmptyArray");var Yo=s(t=>Wd(t).key,"removeKeyNumbering"),Wd=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"),kd=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}=Wd(e),i;if(this.aliases)for(let a of Object.keys(this.aliases||{})){let u=`${a}.`;n.startsWith(u)&&(i=this.aliases[a],n=n.slice(u.length))}let o;for(let a of this.relationships){let u=`${a}.`;if(n.startsWith(u)){let c=n.split(u);c.shift(),o=u,n=c.join(".");break}}return this.columnPrefix&&n.startsWith(this.columnPrefix)&&(n=Td(n.slice(this.columnPrefix.length))),{tableName:i,numberPrefix:r,relationshipPrefix:o,column:n}}};function Lb(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(xb)||[]).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(Ko(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(Ko(r)){let l=_h[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(gh(r)||Eh(r)||Ko(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(Lb,"buildCondition");function zo(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(zo,"splitFiltersArray");function iT(t){if(!t)return{};if(Array.isArray(t)&&(t=Xc(t),!t))return{};let e={};t.onEmptyFilter?e.onEmptyFilter=t.onEmptyFilter:e.onEmptyFilter="all";let r=tT(t.logicalOperator||"all");return e[r]={conditions:(t.groups||[]).map(n=>{if(n.groups){let c=iT(n);return delete c.onEmptyFilter,c}let{allOr:i,onEmptyFilter:o,filters:a}=zo(n.filters||[]);o&&(e.onEmptyFilter=o);let u=i?"$or":"$and";return n.logicalOperator&&(u=tT(n.logicalOperator)),{[u]:{conditions:a.map(Lb).filter(c=>c)}}})},e}s(iT,"buildQuery");function tT(t){return t==="all"?"$and":"$or"}s(tT,"logicalOperatorFromUI");function Gd(t){if(!t)return t;for(let e of Object.values(cr)){let r=t[e];if(!(r==null||!(0,ka.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 Fd(t,Gd),t}s(Gd,"fixupFilterArrays");function Ub(t,e){let r=Ma(t,e.query);e.sort&&(r=sT(r,e.sort,e.sortOrder||"ascending",e.sortType));let n=r.length;e.limit&&(r=oT(r,e.limit.toString()));let i={rows:r};return e.countRows&&(i.totalRows=n),i}s(Ub,"search");function Ma(t,e){if(!t||!Array.isArray(t))return[];if(!e)return t;if(e=Bd(e),e=Gd(e),!Md(e)&&e.onEmptyFilter==="none")return[];let r=s((R,w)=>b=>{for(let[G,ee]of Object.entries(e[R]||{})){let M=qo(R)?b:Zc(b,Yo(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,ka.default)(w.low)&&(0,Ud.default)(w.low)&&(w.low=void 0),(0,ka.default)(w.high)&&(0,Ud.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,zn.default)(R);if(G.isValid()){let ee=(0,zn.default)(w.low||"0000-00-00T00:00:00.000Z"),M=(0,zn.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,zn.default)(R);if(b.isValid()){let G=(0,zn.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),g=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),h=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(!Ma([R],b).length)return!1;return!0}),O=r("$or",(R,w)=>{if(!w.length)return!1;for(let b of w)if(Ma([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:g,oneOf:y,notOneOf:h,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 Md(e)?e.allOr?b.some(G=>G===!0):b.every(G=>G===!0):!0},"docMatch");return t.filter(C)}s(Ma,"runQuery");function sT(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(sT,"sort");function oT(t,e){let r=typeof e=="number"?e:parseFloat(e);return isNaN(r)?t:t.slice(0,r)}s(oT,"limit");var Md=s(t=>{if(!t)return!1;let e=s(r=>{for(let n of rT)if(r[n])for(let i of r[n]?.conditions||[]){let o=e(i);if(o)return o}for(let n of vb){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 Me={};P(Me,{applications:()=>Vd,automations:()=>qd,screens:()=>Hd,users:()=>jd});var Vd={};P(Vd,{getDevAppID:()=>kb,getProdAppID:()=>Ds});var $d=Ot("app"),Cs=Ot("app_dev");function kb(t){if(!t)throw new Error("No app ID provided");if(t.startsWith(Cs))return t;let e=t.split($d);e.shift();let r=e.join($d);return`${Cs}${r}`}s(kb,"getDevAppID");function Ds(t){if(!t)throw new Error("No app ID provided");if(!t.startsWith(Cs))return t;let e=t.split(Cs);e.shift();let r=e.join(Cs);return`${$d}${r}`}s(Ds,"getProdAppID");var qd={};P(qd,{checkForCollectStep:()=>Wb,isAppAction:()=>Bb,isRowAction:()=>Mb,isWebhookAction:()=>Fb});function Mb(t){return t.definition.trigger?.stepId==="ROW_ACTION"}s(Mb,"isRowAction");function Fb(t){return t.definition.trigger?.stepId==="WEBHOOK"}s(Fb,"isWebhookAction");function Bb(t){return t.definition.trigger?.stepId==="APP"}s(Bb,"isAppAction");function aT(t){if(!t||!Array.isArray(t))return!1;for(let e of t){if(e.stepId==="COLLECT")return!0;if(Sh(e)&&e.inputs.children){for(let r of Object.values(e.inputs.children))if(aT(r))return!0}}return!1}s(aT,"hasCollectBlockRecursive");function Wb(t){return aT(t.definition.steps)}s(Wb,"checkForCollectStep");var jd={};P(jd,{canCreateApps:()=>Gb,containsUserID:()=>Yb,getGlobalUserID:()=>Hb,getUserAppGroups:()=>zb,hasAdminPermissions:()=>Qd,hasAppBuilderPermissions:()=>Ba,hasBuilderPermissions:()=>Qb,hasCreatorPermissions:()=>Wa,isAdmin:()=>bs,isAdminOrBuilder:()=>Vb,isAdminOrGlobalBuilder:()=>qb,isAdminOrWorkspaceBuilder:()=>$b,isBuilder:()=>Kd,isCreator:()=>jb,isGlobalBuilder:()=>Fa,userAppAccessList:()=>Jb});function Kd(t,e){return t?t.builder?.global?!0:!!(e&&t.builder?.apps?.includes(Ds(e))):!1}s(Kd,"isBuilder");function Fa(t){return Kd(t)&&!Ba(t)||bs(t)}s(Fa,"isGlobalBuilder");function Gb(t){return Fa(t)||Wa(t)}s(Gb,"canCreateApps");function bs(t){return t?Qd(t):!1}s(bs,"isAdmin");function $b(t,e){return t?!!(bs(t)||e&&t.builder?.apps?.includes(Ds(e))):!1}s($b,"isAdminOrWorkspaceBuilder");function Vb(t,e){return Kd(t,e)||bs(t)}s(Vb,"isAdminOrBuilder");function qb(t){return Fa(t)||bs(t)}s(qb,"isAdminOrGlobalBuilder");function Ba(t){if(!t)return!1;let e=t.builder?.apps?.length;return!!!t.builder?.global&&e!=null&&e>0}s(Ba,"hasAppBuilderPermissions");function Kb(t){return t?!!Object.values(t.roles??{}).find(e=>e==="CREATOR"):!1}s(Kb,"hasAppCreatorPermissions");function Qb(t){return t?t.builder?.global||Ba(t)||Wa(t):!1}s(Qb,"hasBuilderPermissions");function Qd(t){return t?!!t.admin?.global:!1}s(Qd,"hasAdminPermissions");function Wa(t){return t?!!t.builder?.creator:!1}s(Wa,"hasCreatorPermissions");function jb(t){return t?Fa(t)||Qd(t)||Wa(t)||Ba(t)||Kb(t):!1}s(jb,"isCreator");function Hb(t){if(typeof t!="string")return t;let e=`ro${"_"}ta_users${"_"}`;return t.startsWith(e)?t.split(e)[1]:t}s(Hb,"getGlobalUserID");function Yb(t){return typeof t!="string"?!1:t.includes(`us${"_"}`)}s(Yb,"containsUserID");function uT(t,e){return e?.filter(r=>r.users?.find(n=>n._id===t))||[]}s(uT,"getUserGroups");function zb(t,e,r){let n=Ds(t);return uT(e,r).filter(o=>Object.keys(o.roles||{}).find(a=>a===n))}s(zb,"getUserAppGroups");function Jb(t,e){let n=uT(t._id,e).flatMap(o=>Object.keys(o.roles||{})),i=[...Object.keys(t?.roles||{}),...n];return[...new Set(i)]}s(Jb,"userAppAccessList");var Hd={};P(Hd,{findInSettings:()=>Xb});function Xb(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(Xb,"findInSettings");var Ga=(n=>(n.ALL="all",n.AUTOMATION="automation",n.STATUS="status",n))(Ga||{}),Kt=(h=>(h.USER_BY_WORKSPACE="by_app",h.USER_BY_EMAIL="by_email2",h.BY_API_KEY="by_api_key",h.AGENT_REQUESTS_BY_AGENT="agent_requests_by_agent",h.AGENT_REQUESTS_BY_UPDATED_AT="agent_requests_by_updated_at_2",h.AGENT_REQUESTS_BY_STATUS_AND_UPDATED_AT="agent_requests_by_status_and_updated_at",h.LINK="by_link",h.ROUTING="screen_routes_2",h.PROJECT_MEMBERS="project_members",h.AUTOMATION_LOGS="automation_logs",h.ACCOUNT_BY_EMAIL="account_by_email",h.PLATFORM_USERS_LOWERCASE="platform_users_lowercase_2",h.USER_BY_GROUP="user_by_group",h.WORKSPACE_BACKUP_BY_TRIGGER="by_trigger",h.WORKSPACE_BACKUP_BY_EXPIRY="workspace_backup_by_expiry",h))(Kt||{}),Jn={by_email2:["by_email"],agent_requests_by_updated_at_2:["agent_requests_by_updated_at"]},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=Ot("app"),$a=Ot("app_dev"),nt=$a,Yd="internal",zd="budibase",xt="_design/sqlite",Jd="ta_bb_jobs",Xd="ta_bb_inventory",Zd="ta_bb_expenses",ef="ta_bb_employee",xs=`ro${"_"}ta_users${"_"}`,vs=(r=>(r[r.SQLITE=xt]="SQLITE",r.MIGRATIONS="_design/migrations",r))(vs||{});var Va=(r=>(r.ACTIVE="active",r.INACTIVE="inactive",r))(Va||{}),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||{}),tf=(i=>(i.OWNER="owner",i.ADMIN="admin",i.BUILDER="builder",i.WORKSPACE_MANAGER="workspace_manager",i))(tf||{}),rf=(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))(rf||{}),cT=new Date(-2147483647e3),qa=new Date(2147483647e3),ce="default";var Di={};P(Di,{CacheKey:()=>Oe,TTL:()=>gi,bustCache:()=>Ei,destroy:()=>fo,docWritethrough:()=>Mp,generic:()=>Gu,get:()=>lo,increment:()=>vA,invite:()=>An,keys:()=>Wu,passwordReset:()=>Gp,store:()=>yn,user:()=>nr,withCache:()=>br,withCacheWithDynamicTTL:()=>xA,workspace:()=>Vs,writethrough:()=>ym});var Mp={};P(Mp,{DocWritethrough:()=>kp,DocWritethroughProcessor:()=>co,getProcessor:()=>iP,init:()=>bA});var Up={};P(Up,{BudibaseQueue:()=>yt,InMemoryQueue:()=>Cu,JobQueue:()=>fi,QueuedProcessor:()=>Lp,UnretriableError:()=>Fu,shutdown:()=>yN});var sf=require("crypto"),Qa=require("fs"),fT=require("lodash"),Ns=require("path");var Zb=process.env.TOP_LEVEL_PATH||process.env.SERVER_TOP_LEVEL_PATH||(0,Ns.resolve)((0,Ns.join)(__dirname,"..","..","..")),lT=!1;!lT&&Ka()&&!of()&&(require("dotenv").config({path:(0,Ns.join)(Zb,".env")}),lT=!0);function of(){return pT()}s(of,"isTest");function pT(){return process.env.NODE_ENV==="jest"||process.env.JEST_WORKER_ID!=null&&process.env.JEST_WORKER_ID!=="null"}s(pT,"isJest");function Ka(){return process.env.NODE_ENV!=="production"}s(Ka,"isDev");function ex(t){if(t)return parseInt(t)}s(ex,"parseIntSafe");var Xn={BACKUPS:"backups",APPS:"prod-budi-app-assets",TEMPLATES:"templates",GLOBAL:"global",PLUGINS:"plugins",TEMP:"tmp-file-attachments"},dT=!!parseInt(process.env.SELF_HOSTED||"");function tx(){return process.env.API_ENCRYPTION_KEY?process.env.API_ENCRYPTION_KEY:process.env.JWT_SECRET}s(tx,"getAPIEncryptionKey");function rx(){return process.env.HTTP_LOGGING===void 0?!0:process.env.HTTP_LOGGING}s(rx,"httpLogging");function nx(){function t(r){function n(u,c){let l=`${c}/${u}`;if((0,Qa.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,Qa.readFileSync)(i,"utf-8");return JSON.parse(o)}s(t,"getParentFile");let e;if(Ka()&&!of())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(nx,"getPackageJsonFields");function ix(){return ht.SERVICE_TYPE==="worker"}s(ix,"isWorker");function sx(){return ht.SERVICE_TYPE==="apps"}s(sx,"isApps");function ox(){return ht.BUDIBASE_ENVIRONMENT==="QA"}s(ox,"isQA");function ax(){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(ax,"getServiceName");var ht={isTest:of,isJest:pT,isDev:Ka,isWorker:ix,isApps:sx,isQA:ox,isProd:s(()=>!Ka(),"isProd"),BUDIBASE_ENVIRONMENT:process.env.BUDIBASE_ENVIRONMENT,JWT_SECRET:process.env.JWT_SECRET?(0,sf.createSecretKey)(process.env.JWT_SECRET,"utf8"):void 0,JWT_SECRET_FALLBACK:process.env.JWT_SECRET_FALLBACK?(0,sf.createSecretKey)(process.env.JWT_SECRET_FALLBACK,"utf8"):void 0,ENCRYPTION_KEY:process.env.ENCRYPTION_KEY,API_ENCRYPTION_KEY:tx(),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:dT,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||Xn.BACKUPS,APPS_BUCKET_NAME:process.env.APPS_BUCKET_NAME||Xn.APPS,TEMPLATES_BUCKET_NAME:process.env.TEMPLATES_BUCKET_NAME||Xn.TEMPLATES,GLOBAL_BUCKET_NAME:process.env.GLOBAL_BUCKET_NAME||Xn.GLOBAL,PLUGIN_BUCKET_NAME:process.env.PLUGIN_BUCKET_NAME||Xn.PLUGINS,TEMP_BUCKET_NAME:process.env.TEMP_BUCKET_NAME||Xn.TEMP,USE_COUCH:process.env.USE_COUCH||!0,MOCK_REDIS:process.env.MOCK_REDIS,DEFAULT_LICENSE:process.env.DEFAULT_LICENSE,SERVICE:ax(),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:rx(),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:dT?process.env.ENABLE_SSO_MAINTENANCE_MODE:!1,OIDC_ALLOW_UNVERIFIED_EMAIL_LINKING:process.env.OIDC_ALLOW_UNVERIFIED_EMAIL_LINKING,...nx(),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,ht[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:ex(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",COUCH_DB_SQS_PORT:process.env.COUCH_DB_SQS_PORT||"4984"};function Ps(t){let e=(0,fT.cloneDeep)(ht),r;for(r in t)ht._set(r,t[r]);return()=>{for(let[n,i]of Object.entries(e))ht._set(n,i)}}s(Ps,"setEnv");function mT(t,e){let r=Ps(t);try{let n=e();return n instanceof Promise?n.finally(r):(r(),n)}catch(n){throw r(),n}}s(mT,"withEnv");var hT=["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(ht))e==="0"&&(ht[t]=0),e==="false"&&(ht[t]=0);var E=ht;var Ya={};P(Ya,{Databases:()=>af,SEPARATOR:()=>Zn,SelectableDatabase:()=>ja,getRedisClusterOptions:()=>uf,getRedisConnectionDetails:()=>Ha,getRedisOptions:()=>un,removeDbPrefix:()=>cf});var Zn="-",af=(_=>(_.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",_))(af||{}),ja=(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))(ja||{});function Ha(){let t=E.REDIS_PASSWORD,e=E.REDIS_USERNAME,r=E.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(Ha,"getRedisConnectionDetails");function uf(){return{slotsRefreshTimeout:2e3,dnsLookup:s((t,e)=>e(null,t),"dnsLookup"),redisOptions:{...un()}}}s(uf,"getRedisClusterOptions");function un(){let{host:t,password:e,port:r,username:n}=Ha(),i=E.REDIS_URL.toLowerCase().startsWith("rediss://")?{}:void 0;return{connectTimeout:3e4,port:r,host:t,password:e,...n&&{username:n},...i&&{tls:i}}}s(un,"getRedisOptions");function cf(t){let e=t.split(Zn);return e.length>=2?(e.shift(),e.join(Zn)):e[0]}s(cf,"removeDbPrefix");var KS=W(require("events"));var di={};P(di,{Duration:()=>me,GZIP_PREFIX:()=>Iu,clearCookie:()=>Jt,compare:()=>ff,createPinnedLookup:()=>qS,fetchWithBlacklist:()=>li,getBearerToken:()=>Qv,getCookie:()=>zt,getDispatcher:()=>Gv,getSessionExpiryDate:()=>tp,getSessionExpirySeconds:()=>Su,getWorkspaceIdFromCtx:()=>pn,gunzipFromBase64:()=>Kv,gzipToBase64:()=>qv,hasCircularStructure:()=>Pv,hash:()=>df,isAudited:()=>sp,isClient:()=>Nv,isPublicApiRequest:()=>bv,isServingApp:()=>Rv,isServingBuilder:()=>Cv,isServingBuilderPreview:()=>Dv,isValidInternalAPIKey:()=>Xs,microsoftDatasourceCreationCacheKey:()=>uN,newid:()=>X,openJwt:()=>_u,setAuthCookie:()=>vv,setCookie:()=>np,time:()=>Uv,timeout:()=>ip,urlHasProtocol:()=>Lv,validEmail:()=>op});var gT=require("uuid");function X(){return(0,gT.v4)().replace(/-/g,"")}s(X,"newid");var lf=require("bcrypt"),ux=E.SALT_ROUNDS||10;async function df(t){let e=await lf.genSalt(ux);return lf.hash(t,e)}s(df,"hash");async function ff(t,e){return lf.compare(t,e)}s(ff,"compare");var Au=W(require("jsonwebtoken"));var le={};P(le,{DEFAULT_TENANT_ID:()=>ce,baseGlobalDBName:()=>Ws,doInAutomationContext:()=>Nx,doInContext:()=>vf,doInEnvironmentContext:()=>Vx,doInFeatureFlagOverrideContext:()=>Ff,doInIPContext:()=>Lf,doInIdentityContext:()=>Us,doInLicenseContext:()=>Lx,doInScimContext:()=>qx,doInSelfHostTenantUsingCloud:()=>Px,doInTenant:()=>be,doInWorkspaceContext:()=>Mx,doInWorkspaceMigrationContext:()=>Bx,ensureSnippetContext:()=>NT,getAuditLogDBName:()=>xT,getAuditLogsDB:()=>Qx,getAutomationId:()=>Nf,getCurrentContext:()=>dn,getDevWorkspaceDB:()=>Hx,getDevWorkspaceId:()=>Gx,getEnvironmentVariables:()=>Kx,getFeatureFlagOverrides:()=>Mf,getFeatureFlags:()=>Uf,getGlobalDB:()=>z,getGlobalDBName:()=>ln,getIP:()=>Pf,getIdentity:()=>Qt,getLicense:()=>Ux,getOrThrowWorkspaceId:()=>Wx,getPlatformURL:()=>xf,getProdWorkspaceDB:()=>jx,getProdWorkspaceId:()=>$x,getScimDBName:()=>Dx,getSelfHostCloudDB:()=>kx,getTableForView:()=>Yx,getTenantIDFromWorkspaceID:()=>ni,getTenantId:()=>V,getWorkspaceDB:()=>ii,getWorkspaceId:()=>Fe,identity:()=>Ls,isDevWorkspace:()=>PT,isMultiTenant:()=>Sr,isProdWorkspace:()=>Jx,isScim:()=>Et,isSelfHostUsingCloud:()=>nu,isTenancyEnabled:()=>xx,isTenantIdSet:()=>bx,setFeatureFlags:()=>kf,setTableForView:()=>zx});var Ls={};P(Ls,{doInAccountContext:()=>cx,doInIdentityContext:()=>hf,doInUserContext:()=>gf,getAccountUserId:()=>ET,getIdentity:()=>mf});function mf(){return Qt()}s(mf,"getIdentity");function hf(t,e){return Us(t,e)}s(hf,"doInIdentityContext");function gf(t,e,r){let n={...t,_id:t._id,type:"user",hostInfo:{ipAddress:e.request.ip,userAgent:e.userAgent.source}};return hf(n,r)}s(gf,"doInUserContext");function cx(t,e){let r=ET(t),n=t.tenantId,i={_id:r,type:"user",tenantId:n,account:t};return hf(i,e)}s(cx,"doInAccountContext");function ET(t){let e;return jo(t)?e=t.budibaseUserId:e=t.accountId,e}s(ET,"getAccountUserId");var vt=s(()=>za(E.COUCH_DB_URL,{user:E.COUCH_DB_USERNAME||"",password:E.COUCH_DB_PASSWORD||""}),"getCouchInfo"),za=s((t,e)=>{let r=Ef(t),n,i;if(r.auth?.username)n=r.auth.username;else if(e?.user)n=e?.user;else throw new Error("CouchDB username not set");if(r.auth?.password)i=r.auth.password;else if(e?.password)i=e?.password;else throw new Error("CouchDB password not set");let o=Buffer.from(`${n}:${i}`).toString("base64"),a=E.COUCH_DB_SQL_URL;if(!a&&r.url){let u=new URL(r.url);u.port=E.COUCH_DB_SQS_PORT,a=u.toString().replace(/\/$/,"")}return{url:r.url,sqlUrl:Ef(a).url,auth:{username:n,password:i},cookie:`Basic ${o}`}},"parseCouchConnection"),Ef=s((t=E.COUCH_DB_URL)=>{let e,r,n,i;if(t){/^https?:\/\//i.test(t)||(t=`http://${t}`);let a=t.split("://"),u=a[0],c=a.slice(1).join("://");if(t.includes("@")){let l=c.split("@");i=l[l.length-1];let d=l.slice(0,-1).join("@");if(d.includes(":")){let f=d.split(":");r=f[0],n=f.slice(1).join(":")}else r=d}else i=c;e=`${u}://${i}`}return{url:e,auth:{username:r,password:n}}},"getUrlInfo");var CT=W(require("@budibase/nano"));var yT=W(require("node-fetch"));function Ja(t){return t.replace(/(https?:\/\/)|(\/)+/g,"$1$2")}s(Ja,"checkSlashesInUrl");async function TT(t,e="GET",r){let{url:n,cookie:i}=vt(),o=`${n}/${t}`;return await ks({url:o,cookie:i,method:e,body:r})}s(TT,"directCouchCall");async function ks({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,yT.default)(Ja(encodeURI(t)),i)}s(ks,"directCouchUrlCall");async function yf(t,e="GET",r){let n=await TT(t,e,r);if(n.status<300)return await n.json();throw"Cannot connect to CouchDB instance"}s(yf,"directCouchQuery");var cn=W(require("pouchdb"));var ST,AT=!1,Tf=s((t={})=>{let{url:e,cookie:r}=vt(),n={prefix:e,fetch:s((i,o)=>(o.headers.set("Authorization",r),cn.default.fetch(i,o)),"fetch")};if(t.inMemory){let i=require("pouchdb-adapter-memory");cn.default.plugin(i),n={adapter:"memory"}}if(t.onDisk&&(n={adapter:"leveldb"}),t.replication){let i=require("@budibase/pouchdb-replication-stream");cn.default.plugin(i.plugin),cn.default.adapter("writableStream",i.adapters.writableStream)}if(t.find){let i=require("pouchdb-find");cn.default.plugin(i)}return cn.default.defaults(n)},"getPouch");function Xa(t){ST=Tf(t),AT=!0}s(Xa,"init");var lx=s(()=>{if(!AT)throw new Error("init has not been called")},"checkInitialised");function it(t,e){lx();let r=new ST(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 Ms(t){if(!(!t||E.isTest()))try{return await t.close()}catch{}}s(Ms,"closePouchDB");var de=W(require("dd-trace"));var ei=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 Cf={};P(Cf,{breakExternalTableId:()=>_f,breakRowIdField:()=>Ox,buildExternalTableId:()=>Ex,convertRowId:()=>_x,encodeTableId:()=>yx,encodeViewId:()=>Tx,extractDate:()=>If,generateRowIdField:()=>Sx,getNativeSql:()=>ti,isExternalTable:()=>Af,isExternalTableID:()=>Za,isInternalTableID:()=>gx,isRowId:()=>Ax,isValidFilter:()=>tu,isValidISODateString:()=>eu,isValidISODateStringWithoutTimezone:()=>Of,isValidTime:()=>wf,sqlLog:()=>Fs,validateManyToMany:()=>Rf});var Sf=`${"_"}${"_"}`,OT=/^\[.*]$/g,dx=encodeURIComponent(" "),fx=/^\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}:\d{2}(?:.\d{3})?Z)?$/,px=/^\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}:\d{2}(?:.\d{3})?)?$/,mx=/(\d{4}-\d{2}-\d{2})/,hx=/^\d{1,2}:\d{2}(?:\.\d{1,6}|:\d{2}(?:\.\d{1,6})?)?$/;function Za(t){return t.startsWith("datasource_")}s(Za,"isExternalTableID");function gx(t){return!Za(t)}s(gx,"isInternalTableID");function ti(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(ti,"getNativeSql");function Af(t){return t?.sourceId&&t.sourceId.includes("datasource_")&&t?.sourceId!==Pn||t?.sourceType==="external"?!0:!!(t?._id&&Za(t._id))}s(Af,"isExternalTable");function Ex(t,e){return`${t}${Sf}${encodeURIComponent(e)}`}s(Ex,"buildExternalTableId");function yx(t){return Za(t)?encodeURIComponent(t):t}s(yx,"encodeTableId");function Tx(t){return encodeURIComponent(t)}s(Tx,"encodeViewId");function _f(t){let e=t.split(Sf),r=e.shift(),n=e.join(Sf);if(n.includes(dx)&&(n=decodeURIComponent(n)),!r||!n)throw new Error("Unable to get datasource/table name from table ID");return{datasourceId:r,tableName:n}}s(_f,"breakExternalTableId");function Sx(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(Sx,"generateRowIdField");function Ax(t){return Array.isArray(t)||typeof t=="string"&&t.match(OT)!=null}s(Ax,"isRowId");function _x(t){return Array.isArray(t)?t[0]:typeof t=="string"&&t.match(OT)!=null?t.substring(1,t.length-1):t}s(_x,"convertRowId");function Ox(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(Ox,"breakRowIdField");function eu(t){let e=t.trim();if(!fx.test(e))return!1;let r=new Date(e);return!isNaN(r.getTime())}s(eu,"isValidISODateString");function Of(t){let e=t.trim();if(!px.test(e))return!1;let r=new Date(e);return!isNaN(r.getTime())}s(Of,"isValidISODateStringWithoutTimezone");function If(t){let e=t.match(mx);if(e)return e[0]}s(If,"extractDate");function tu(t){return t!=null&&t!==""}s(tu,"isValidFilter");function wf(t){return hx.test(t)}s(wf,"isValidTime");function Fs(t,e,r){if(!E.SQL_LOGGING_ENABLE)return;let n=`[SQL] [${t.toUpperCase()}] query="${e}"`;r&&(n+=` values="${r.join(", ")}"`),console.log(n)}s(Fs,"sqlLog");function Ix(t){return!!t.through&&!!t.fromPrimary&&!!t.from&&!!t.toPrimary&&!!t.to}s(Ix,"isValidManyToManyRelationship");function Rf(t){if(Ix(t))return t}s(Rf,"validateManyToMany");var IT="Database does not exist.";function wT(t){return(0,CT.default)({url:t.url,requestDefaults:{headers:{Authorization:t.cookie}},parseUrl:!1})}s(wT,"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 wx(t,e,r){if(!t||!e)throw new Error("Unable to create database without database name or connection");let n=new ri(t,r,e);return new ei(n)}s(wx,"DatabaseWithConnection");var ri=class t{constructor(e,r,n){this.couchInfo=vt();this.name=e,this.pouchOpts=r||{},n&&(this.couchInfo=za(n),this.instanceNano=wT(this.couchInfo)),t.nano||t.init()}static{s(this,"DatabaseImpl")}static init(){let e=vt();t.nano=wT(e)}exists(e){return e===void 0?this.dbExists():this.docExists(e)}async dbExists(){return(await ks({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===IT)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(yh(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===IT)return{offset:0,total_rows:0,rows:[]};throw n}})}async _sqlQuery(e,r,n){e=Ja(`${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 ks(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}/${xt}`;return Fs("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(xt)){let e=await this.get(xt);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 De(t,e){return new ei(new ri(t,e))}s(De,"getDB");async function je(t,e,r){let n=De(t,r);return await e(n)}s(je,"doWithDB");async function Df(t){let e="/_all_dbs";return t&&(e+=`?${t}`),await yf(e)}s(Df,"directCouchAllDbs");var bf="No app provided";function Nt(t){if(!t)throw bf;return t.startsWith(nt)}s(Nt,"isDevWorkspaceID");function Rx(t){if(!t)throw bf;return t.startsWith(rt)&&!Nt(t)}s(Rx,"isProdWorkspaceID");function Bs(t){if(!t)throw bf;return Nt(t.appId)}s(Bs,"isDevWorkspace");function ru(t){if(!t||t.startsWith(nt))return t;let e=t.split(rt);e.shift();let r=e.join(rt);return`${nt}${r}`}s(ru,"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 DT=require("async_hooks");var ge=class t{static{s(this,"Context")}static{this.storage=new DT.AsyncLocalStorage}static run(e,r){return t.storage.run(e,()=>r())}static get(){return t.storage.getStore()}};var bT=null;function ln(t){return t||(t=V()),Ws(t)}s(ln,"getGlobalDBName");function xT(t){return t||(t=V()),t===ce?pe.AUDIT_LOGS.name:`${t}${"_"}${pe.AUDIT_LOGS.name}`}s(xT,"getAuditLogDBName");function Dx(t){return t||(t=V()),t===ce?pe.SCIM_LOGS.name:`${t}${"_"}${pe.SCIM_LOGS.name}`}s(Dx,"getScimDBName");function Ws(t){return!t||t===ce?pe.GLOBAL.name:`${t}${"_"}${pe.GLOBAL.name}`}s(Ws,"baseGlobalDBName");function xf(){return E.PLATFORM_URL}s(xf,"getPlatformURL");function Sr(){return!!E.MULTI_TENANCY}s(Sr,"isMultiTenant");function bx(){return!!ge.get()?.tenantId}s(bx,"isTenantIdSet");function xx(){return E.MULTI_TENANCY}s(xx,"isTenancyEnabled");function ni(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(ni,"getTenantIDFromWorkspaceID");function vx(t){let e;try{e=ge.get()}catch{e={}}return e={...e,...t},e}s(vx,"updateContext");async function gt(t,e){Fx();let r=vx(t);return ge.run(r,e)}s(gt,"newContext");async function Nx(t){return await NT(),await gt({tenantId:ni(t.workspaceId),appId:t.workspaceId,automationId:t.automationId},t.task)}s(Nx,"doInAutomationContext");async function vf(t,e){let r=ni(t);return gt({tenantId:r,appId:t},e)}s(vf,"doInContext");async function be(t,e){return E.MULTI_TENANCY||(t=t||ce),gt(t?{tenantId:t}:{},e)}s(be,"doInTenant");async function Px(t,e){return gt({tenantId:t,isSelfHostUsingCloud:!0},e)}s(Px,"doInSelfHostTenantUsingCloud");async function Lx(t,e){return gt({license:t},e)}s(Lx,"doInLicenseContext");function Ux(){return ge.get()?.license}s(Ux,"getLicense");function nu(){return!!ge.get()?.isSelfHostUsingCloud}s(nu,"isSelfHostUsingCloud");function kx(){let t=ge.get();if(!t||!t.isSelfHostUsingCloud)throw new Error("Self-host cloud DB not found");return De(pe.SELF_HOST_CLOUD.name)}s(kx,"getSelfHostCloudDB");async function Mx(t,e){return vT(t,e)}s(Mx,"doInWorkspaceContext");async function vT(t,e,r){if(!t)throw new Error("workspaceId is required");let n=ni(t),i={appId:t,...r};return n&&(i.tenantId=n),gt(i,e)}s(vT,"_doInWorkspaceContext");async function Us(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(Us,"doInIdentityContext");function Fx(){if(ge.get()?.isMigrating)throw new Error("The context cannot be changed, a migration is currently running")}s(Fx,"guardMigration");async function Bx(t,e){return vT(t,e,{isMigrating:!0})}s(Bx,"doInWorkspaceMigrationContext");function Qt(){try{return ge.get()?.identity}catch{}}s(Qt,"getIdentity");function V(){if(!Sr())return ce;let e=ge.get()?.tenantId;if(!e)throw new Error("Tenant id not found");return e}s(V,"getTenantId");function Nf(){return ge.get()?.automationId}s(Nf,"getAutomationId");function Fe(){let e=ge.get()?.appId;return!e&&E.isTest()&&bT?bT:e}s(Fe,"getWorkspaceId");function Wx(){let t=Fe();if(!t)throw new Error("Workspace id not set");return t}s(Wx,"getOrThrowWorkspaceId");function Pf(){return ge.get()?.ip}s(Pf,"getIP");var Gx=s(()=>{let t=Fe();if(!t)throw new Error("Could not get workspaceId");return ru(t)},"getDevWorkspaceId"),$x=s(()=>{let t=Fe();if(!t)throw new Error("Could not get workspaceId");return He(t)},"getProdWorkspaceId");function Vx(t,e){if(!t)throw new Error("Must supply environment variables.");return gt({environmentVariables:t},e)}s(Vx,"doInEnvironmentContext");function qx(t){return gt({isScim:!0},t)}s(qx,"doInScimContext");function Lf(t,e){return gt({ip:t},e)}s(Lf,"doInIPContext");async function NT(){let t=dn();if(!t||t.snippets)return;let e,r=ii();r&&(e=(await r.tryGet("app_metadata"))?.snippets),t.snippets=e||[]}s(NT,"ensureSnippetContext");function Kx(){let t=ge.get();return t.environmentVariables?t.environmentVariables:null}s(Kx,"getEnvironmentVariables");function z(){let t=ge.get();if(!t||E.MULTI_TENANCY&&!t.tenantId)throw new Error("Global DB not found");if(t.isSelfHostUsingCloud)throw new Error("Global DB not found - self-host users using cloud don't have a global DB");return De(Ws(t?.tenantId))}s(z,"getGlobalDB");function Qx(){if(!V())throw new Error("No tenant ID found - cannot open audit log DB");return De(xT())}s(Qx,"getAuditLogsDB");function ii(t){let e=Fe();if(!e)throw new Error("Unable to retrieve workspace DB - no workspace ID.");if(nu())throw new Error("Workspace DB not found - self-host users using cloud don't have workspace DBs");return De(e,t)}s(ii,"getWorkspaceDB");function jx(t){let e=Fe();if(!e)throw new Error("Unable to retrieve prod DB - no workspace ID.");return De(He(e),t)}s(jx,"getProdWorkspaceDB");function Hx(t){let e=Fe();if(!e)throw new Error("Unable to retrieve dev DB - no workspace ID.");return De(ru(e),t)}s(Hx,"getDevWorkspaceDB");function Et(){return!!ge.get()?.isScim}s(Et,"isScim");function dn(){try{return ge.get()}catch{return}}s(dn,"getCurrentContext");function Uf(t){let e=dn();if(e)return e.featureFlagCache?.[t]}s(Uf,"getFeatureFlags");function kf(t,e){let r=dn();r&&(r.featureFlagCache??={},r.featureFlagCache[t]=e)}s(kf,"setFeatureFlags");function Mf(){return dn()?.featureFlagOverrides||{}}s(Mf,"getFeatureFlagOverrides");async function Ff(t,e){return await gt({featureFlagOverrides:t},e)}s(Ff,"doInFeatureFlagOverrideContext");function Yx(t){let e=dn();if(e)return e.viewToTableCache?.[t]}s(Yx,"getTableForView");function zx(t,e){let r=dn();r&&(r.viewToTableCache??={},r.viewToTableCache[t]=e)}s(zx,"setTableForView");function PT(){let t=Fe();return Nt(t)}s(PT,"isDevWorkspace");function Jx(){return!PT()}s(Jx,"isProdWorkspace");var Ir={};P(Ir,{AutomationViewMode:()=>Ga,BUDIBASE_DATASOURCE_TYPE:()=>zd,DEFAULT_BB_DATASOURCE_ID:()=>Pn,DEFAULT_EMPLOYEE_TABLE_ID:()=>ef,DEFAULT_EXPENSES_TABLE_ID:()=>Zd,DEFAULT_INVENTORY_TABLE_ID:()=>Xd,DEFAULT_JOBS_TABLE_ID:()=>Jd,DatabaseImpl:()=>ri,DatabaseWithConnection:()=>wx,DeprecatedViews:()=>Jn,DesignDocuments:()=>vs,DocumentType:()=>ae,InternalTable:()=>It,QueryBuilder:()=>Yt,Replication:()=>DS,SEPARATOR:()=>D,SQLITE_DESIGN_DOC_ID:()=>xt,SQS_DATASOURCE_INTERNAL:()=>Yd,StaticDatabases:()=>pe,UNICODE_MAX:()=>Ne,USER_METADATA_PREFIX:()=>xs,ViewName:()=>Kt,WORKSPACE_DEV:()=>$a,WORKSPACE_DEV_PREFIX:()=>nt,WORKSPACE_PREFIX:()=>rt,baseGlobalDBName:()=>Ws,checkErrorCode:()=>NS,closePouchDB:()=>Ms,createApiKeyView:()=>_S,createNewUserEmailView:()=>SS,createPlatformAccountEmailView:()=>IS,createPlatformUserView:()=>wS,createUserAppView:()=>AS,createView:()=>ci,dbExists:()=>mv,directCouchAllDbs:()=>Df,directCouchCall:()=>TT,directCouchQuery:()=>yf,directCouchUrlCall:()=>ks,doWithDB:()=>je,fullSearch:()=>Tv,generateAIConfigID:()=>iS,generateAgentID:()=>HT,generateAgentKnowledgeSourceConnectionID:()=>tS,generateAgentKnowledgeSourceSyncStateID:()=>eS,generateAgentRequestID:()=>JT,generateAgentToolSourceID:()=>ZT,generateAppUserID:()=>Eu,generateChatAppID:()=>YT,generateChatConversationID:()=>zT,generateDevInfoID:()=>KT,generateGlobalUserID:()=>ai,generateKnowledgeBaseFileID:()=>rS,generateKnowledgeBaseID:()=>cS,generateOAuth2LogID:()=>jT,generatePluginID:()=>QT,generateProjectID:()=>uS,generateRoleID:()=>Kf,generateRowID:()=>qf,generateTableID:()=>WT,generateTemplateID:()=>qT,generateUserMetadataID:()=>$T,generateWorkspaceAppID:()=>oS,generateWorkspaceFavouriteID:()=>aS,generateWorkspaceID:()=>BT,getAgentTestRunID:()=>XT,getAgentTestSuiteID:()=>Qf,getAllDbs:()=>TS,getAllWorkspaces:()=>Ks,getCouchInfo:()=>vt,getDB:()=>De,getDevWorkspaceID:()=>ru,getDevWorkspaceIDs:()=>fv,getDocParams:()=>Pt,getGlobalDBName:()=>ln,getGlobalIDFromUserMetadataID:()=>VT,getGlobalUserParams:()=>fn,getLiteLLMKeyID:()=>sS,getOAuth2ConfigParams:()=>mS,getPluginParams:()=>pS,getPouch:()=>Tf,getPouchDB:()=>it,getProdWorkpaceIDs:()=>dv,getProdWorkspaceID:()=>He,getProjectParams:()=>ES,getQueryIndex:()=>lS,getRoleParams:()=>yu,getRowParams:()=>jf,getStartEndKeyURL:()=>qs,getTemplateParams:()=>fS,getUrlInfo:()=>Ef,getUserMetadataParams:()=>dS,getUsersByWorkspaceParams:()=>ui,getWorkspaceAppParams:()=>hS,getWorkspaceFavouriteParams:()=>gS,getWorkspacesByIDs:()=>lv,init:()=>Xa,isDevWorkspace:()=>Bs,isDevWorkspaceID:()=>Nt,isDocumentConflictError:()=>Av,isGlobalUserID:()=>GT,isKnowledgeBaseFileID:()=>nS,isProdWorkspaceID:()=>Rx,isSameWorkspaceID:()=>pv,isType:()=>yS,paginatedSearch:()=>yv,pagination:()=>Yf,parseCouchConnection:()=>za,prefixRoleID:()=>jt,queryGlobalView:()=>Ht,queryGlobalViewRaw:()=>Hs,queryPlatformView:()=>js,queryView:()=>Jf,queryViewRaw:()=>Qs,removeKeyNumbering:()=>Ys,searchIndexes:()=>Zf});var Vs={};P(Vs,{WorkspaceState:()=>Vf,getWorkspaceMetadata:()=>gu,invalidateWorkspaceMetadata:()=>av});var _r={};P(_r,{getCacheClient:()=>Wf,getDocWritethroughClient:()=>nv,getInviteListClient:()=>Gs,getLockClient:()=>$f,getOpenapiImportSpecsClient:()=>tv,getPasswordResetClient:()=>$s,getSessionClient:()=>Ar,getSocketClient:()=>rv,getUserClient:()=>oi,getWorkspaceClient:()=>hu,getWritethroughClient:()=>Gf,init:()=>st,shutdown:()=>MT});var su=W(require("ioredis"));var iu=require("dd-trace"),UT=require("lodash");var LT;if(E.MOCK_REDIS)try{LT=require("ioredis-mock")}catch{console.log("Mock redis unavailable")}async function Xx(t=0){return await iu.tracer.trace("Redis.init",async e=>{if(E.MOCK_REDIS)return e.addTags({mock:!0}),new LT(un());let r;if(E.REDIS_CLUSTERED){e.addTags({clustered:!0});let{host:n,port:i}=Ha();r=new su.Cluster([{host:n,port:i}],uf())}else r=new su.default(un());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(Xx,"init");function Zx(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:cf(a),value:u}});r(await Promise.all(o))}catch(o){n(o)}})})}s(Zx,"promisifyStream");function ev(t){return t.isCluster}s(ev,"isCluster");var Bf=class t{static{s(this,"RedisWrapper")}constructor(e,r){this.client=e,this.db=r}static async init(e,r=0){return await iu.tracer.trace("RedisWrapper.init",async n=>{let i=await Xx(r);return r&&!E.isTest()&&(n.addTags({db:e}),i.select(r)),new t(i,e)})}trace(e,r){return iu.tracer.trace(e,async n=>(n.addTags({db:this.db}),await r(n)))}prefixed(e){return e.includes(this.db)?e:`${this.db}${Zn}${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}${Zn}${e}`;let n;ev(this.client)?n=this.client.nodes("master")[0].scanStream({match:e+"*",count:100}):n=this.client.scanStream({match:e+"*",count:100});let i=await Zx(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,UT.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");$y.exports=gr});var mF={};P(mF,{APIWarning:()=>Cn,ActiveContentFileError:()=>Ku,AutomationViewMode:()=>Ga,BUDIBASE_DATASOURCE_TYPE:()=>zd,BadRequestError:()=>Eo,BudibaseError:()=>go,Config:()=>rf,Cookie:()=>yr,DEFAULT_BB_DATASOURCE_ID:()=>Pn,DEFAULT_EMPLOYEE_TABLE_ID:()=>ef,DEFAULT_EXPENSES_TABLE_ID:()=>Zd,DEFAULT_INVENTORY_TABLE_ID:()=>Xd,DEFAULT_JOBS_TABLE_ID:()=>Jd,DEFAULT_TENANT_ID:()=>ce,DeprecatedViews:()=>Jn,DesignDocuments:()=>vs,DocumentType:()=>ae,Duration:()=>me,EmailUnavailableError:()=>er,Endpoint:()=>Gc,EndpointGroup:()=>Dn,EndpointGroupList:()=>Go,FeatureDisabledError:()=>Hu,FeatureDisabledWarning:()=>bc,ForbiddenError:()=>Qu,GlobalRole:()=>tf,HTTPError:()=>Be,Header:()=>Pe,InternalTable:()=>It,InvalidAPIKeyWarning:()=>bi,MAX_VALID_DATE:()=>qa,MIN_VALID_DATE:()=>cT,NotFoundError:()=>qu,NotImplementedError:()=>ju,RedisClient:()=>Re,SEPARATOR:()=>D,SQLITE_DESIGN_DOC_ID:()=>xt,SQS_DATASOURCE_INTERNAL:()=>Yd,StaticDatabases:()=>pe,UNICODE_MAX:()=>Ne,USER_METADATA_PREFIX:()=>xs,UnexpectedError:()=>Vu,UsageLimitError:()=>Yu,UsageLimitWarning:()=>Dc,UserStatus:()=>Va,ViewName:()=>Kt,WORKSPACE_DEV:()=>$a,WORKSPACE_DEV_PREFIX:()=>nt,WORKSPACE_PREFIX:()=>rt,accounts:()=>On,auth:()=>zm,blacklist:()=>pp,cache:()=>Di,configs:()=>tr,constants:()=>nf,context:()=>le,csv:()=>dh,db:()=>Ir,docIds:()=>Hf,docUpdates:()=>th,encryption:()=>Gm,env:()=>E,errors:()=>Ju,events:()=>wn,features:()=>km,getErrorMessage:()=>$A,getPublicError:()=>zu,init:()=>pF,installation:()=>rc,locks:()=>xr,logging:()=>uo,middleware:()=>Ym,objectStore:()=>bp,permissions:()=>Pm,platform:()=>ho,plugins:()=>Xm,queue:()=>Up,redis:()=>Zm,roles:()=>Nm,security:()=>Hp,sessions:()=>Xu,setEnv:()=>Ps,sql:()=>lh,tenancy:()=>fF,timers:()=>Du,userUtils:()=>cm,users:()=>Ii,utils:()=>di,warnings:()=>$m,withEnv:()=>mT});module.exports=$O(mF);var tr={};P(tr,{analyticsEnabled:()=>Zu,generateConfigID:()=>Lo,getConfig:()=>Ge,getDefaultGoogleConfig:()=>Tm,getGoogleConfig:()=>mc,getGoogleDatasourceConfig:()=>Am,getOIDCConfig:()=>Ek,getOIDCConfigById:()=>_m,getOIDCLogosDoc:()=>hk,getPlatformUrl:()=>Uo,getRecaptchaConfig:()=>Sk,getSCIMConfig:()=>Tk,getSMTPConfig:()=>yk,getSMTPConfigDoc:()=>k_,getSettingsConfig:()=>Sm,getSettingsConfigDoc:()=>wi,getTranslationsConfig:()=>pk,getTranslationsConfigDoc:()=>U_,save:()=>fk});var VO=["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"],qO=["automation:deleted","workspace_app:deleted","datasource:deleted","table:deleted","query:deleted","view:deleted"],mh=[...VO,...qO],hh={"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 $c=(n=>(n.SQL="sql",n.JSON="json",n.FIELDS="fields",n))($c||{}),Vc=(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))(Vc||{}),Vo=(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))(Vo||{});var qc=(r=>(r.CONNECTION_CHECKING="connection",r.FETCH_TABLE_NAMES="fetch_table_names",r))(qc||{});var KO=W(require("lodash/isPlainObject"));var Vr=(a=>(a.EQUAL="equal",a.NOT_EQUAL="notEqual",a.EMPTY="empty",a.NOT_EMPTY="notEmpty",a.FUZZY="fuzzy",a.STRING="string",a))(Vr||{}),cr=(o=>(o.CONTAINS="contains",o.NOT_CONTAINS="notContains",o.CONTAINS_ANY="containsAny",o.ONE_OF="oneOf",o.NOT_ONE_OF="notOneOf",o))(cr||{}),xn=(e=>(e.RANGE="range",e))(xn||{}),Li=(r=>(r.AND="$and",r.OR="$or",r))(Li||{});function qo(t){return Object.values(Li).includes(t)}s(qo,"isLogicalSearchOperator");function gh(t){return Object.values(Vr).includes(t)}s(gh,"isBasicSearchOperator");function Eh(t){return Object.values(cr).includes(t)}s(Eh,"isArraySearchOperator");function Ko(t){return Object.values(xn).includes(t)}s(Ko,"isRangeSearchOperator");var yh=s(t=>typeof t=="object"&&t._id&&t._rev,"isDocument");var Ui=(o=>(o.USER="user",o.HEADER="header",o.QUERY="query",o.SUBDOMAIN="subdomain",o.PATH="path",o))(Ui||{});var ki=(i=>(i.READ="read",i.WRITE="write",i.EXECUTE="execute",i.ADMIN="admin",i))(ki||{});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 jo=s(t=>t.hosting==="cloud","isCloudAccount");var Ho=s(t=>t.authType==="sso","isSSOAccount");var D="_",Ne="\uFFF0",Ot=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 It=(e=>(e.USER_METADATA="ta_users",e))(It||{});function vn(t){return!!t.providerType}s(vn,"isSSOUser");var Kc=(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))(Kc||{}),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||{}),jc=(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))(jc||{});var Hc=(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))(Hc||{}),Th=[...Object.values(Hc),...Object.values(jc)];function Sh(t){return t.stepId==="BRANCH"}s(Sh,"isBranchStep");var Yc="bb_internal";var Ah=["attachment_single","attachment","signature_single","bb_reference","json","array"];var nf={};P(nf,{AutomationViewMode:()=>Ga,BUDIBASE_DATASOURCE_TYPE:()=>zd,Config:()=>rf,Cookie:()=>yr,DEFAULT_BB_DATASOURCE_ID:()=>Pn,DEFAULT_EMPLOYEE_TABLE_ID:()=>ef,DEFAULT_EXPENSES_TABLE_ID:()=>Zd,DEFAULT_INVENTORY_TABLE_ID:()=>Xd,DEFAULT_JOBS_TABLE_ID:()=>Jd,DEFAULT_TENANT_ID:()=>ce,DeprecatedViews:()=>Jn,DesignDocuments:()=>vs,DocumentType:()=>ae,GlobalRole:()=>tf,Header:()=>Pe,InternalTable:()=>It,MAX_VALID_DATE:()=>qa,MIN_VALID_DATE:()=>cT,SEPARATOR:()=>D,SQLITE_DESIGN_DOC_ID:()=>xt,SQS_DATASOURCE_INTERNAL:()=>Yd,StaticDatabases:()=>pe,UNICODE_MAX:()=>Ne,USER_METADATA_PREFIX:()=>xs,UserStatus:()=>Va,ViewName:()=>Kt,WORKSPACE_DEV:()=>$a,WORKSPACE_DEV_PREFIX:()=>nt,WORKSPACE_PREFIX:()=>rt});var Pe=(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))(Pe||{});var Nn={WORKSPACES:"/builder/apps",SETTINGS_EMAIL:"/builder/settings/email",SETTINGS_AUTH:"/builder/settings/auth",SETTINGS_PEOPLE_USERS:"/builder/settings/people/users",APPS:"/builder/apps"},Mi={ACCOUNT:"/portal/account",BILLING:"/portal/billing",TENANTS:"/portal/tenants",UPGRADE:"/portal/upgrade"};var Le={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"}},_h={integer:{max:2147483647,min:-2147483648},int:{max:2147483647,min:-2147483648},smallint:{max:32767,min:-32768},mediumint:{max:8388607,min:-8388608}};var Pn="datasource_internal_bb_default";var Er={};P(Er,{ColumnSplitter:()=>kd,NoEmptyFilterStrings:()=>nT,buildQuery:()=>iT,cleanupQuery:()=>Bd,fixupFilterArrays:()=>Gd,getKeyNumbering:()=>Wd,getValidOperatorsForType:()=>Nb,hasFilters:()=>Md,limit:()=>oT,recurseLogicalOperators:()=>Fd,removeKeyNumbering:()=>Yo,runQuery:()=>Ma,search:()=>Ub,sort:()=>sT,splitFiltersArray:()=>zo});var zn=W(Oh());var wt={};P(wt,{filterValueToLabel:()=>JO,hasSchema:()=>XO,isSupportedUserSearch:()=>Rh,nameToUrl:()=>nI,parallelForeach:()=>zO,processSearchFilters:()=>Xc,toMap:()=>eI,trimOtherProps:()=>ZO,unreachable:()=>YO});var wh=W(require("lodash/pick"));var HO=["field","operator","value","type","externalType","valueType","noValue","formulaType"];function YO(t,e){let r=e?.message||`No such case in exhaustive switch: ${t}`;if(!!!e?.doNotThrow)throw new Error(r)}s(YO,"unreachable");async function zO(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(zO,"parallelForeach");function JO(){return Object.keys(Le).reduce((t,e)=>{let n=Le[e];return t[n.value]=n.label,t},{})}s(JO,"filterValueToLabel");function XO(t){return typeof t=="object"&&!Array.isArray(t)&&t!==null&&!(t instanceof Date)&&Object.keys(t).length>0}s(XO,"hasSchema");function ZO(t,e){return Object.keys(t).filter(n=>e.includes(n)).reduce((n,i)=>({...n,[i]:t[i]}),{})}s(ZO,"trimOtherProps");function Rh(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(qo(o)){for(let l of t[o].conditions)if(!Rh(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(Rh,"isSupportedUserSearch");function Xc(t){if(!t||t.length===0)return;let{allOr:e,onEmptyFilter:r,filters:n}=zo(t);return{logicalOperator:"all",onEmptyFilter:r||"all",groups:[{logicalOperator:e?"any":"all",filters:n.map(i=>{let o=(0,wh.default)(i,HO);return o.field=Yo(o.field),o})}]}}s(Xc,"processSearchFilters");function eI(t,e){return e.reduce((r,n)=>(r[n[t]]=n,r),{})}s(eI,"toMap");var tI=s(t=>t?t.trim():null,"resolveWorkspaceName"),rI=s(t=>{let e,r=tI(t);e=r?r.toLowerCase():"";let n=e?e.replace(/\s+/g,"-"):"";return encodeURI(n)},"resolveWorkspaceUrl"),nI=s(t=>{let e=rI(t);return iI(e)},"nameToUrl"),iI=s(t=>(t&&!t.startsWith("/")&&(t=`/${t}`),t===""?null:t),"tidyUrl");var ke={};P(ke,{accountPortalAccountUrl:()=>Rd,accountPortalBillingUrl:()=>Cd,accountPortalUpgradeUrl:()=>Dd,agentChatUrl:()=>Ld,appAgentUrl:()=>Ua,appChatUrl:()=>La,applyBaseUrl:()=>zy,builderAppsUrl:()=>Pd,builderSettingsAuthUrl:()=>vd,builderSettingsEmailUrl:()=>xd,builderSettingsPeopleUsersUrl:()=>Nd,builderWorkspacesUrl:()=>bd,cancelableTimeout:()=>Ch,cron:()=>Db,deepGet:()=>Zc,duplicateName:()=>_b,escapeHtml:()=>cI,formatBytes:()=>Cb,getNextPreviewDevice:()=>Tb,getPreviewDeviceIcon:()=>Sb,getPreviewModalDevice:()=>Ab,getSequentialName:()=>Ob,getUserColor:()=>oI,getUserInitials:()=>sI,getUserLabel:()=>aI,isEnvironmentVariableKey:()=>eT,isGoogleSheets:()=>dI,isSQL:()=>fI,lists:()=>Id,normaliseSafeCssColor:()=>mI,normalizeForComparison:()=>lI,retry:()=>pI,roles:()=>Od,schema:()=>ws,structuredOutput:()=>Sd,urlHelpers:()=>Zy,views:()=>_d,wait:()=>el,withTimeout:()=>uI});var Zc=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"),sI=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"),oI=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"),aI=s(t=>{if(!t)return"";let{firstName:e,lastName:r,email:n}=t;return e&&r?`${e} ${r}`:e||r||n},"getUserLabel");function Ch(t){let e;return[new Promise((r,n)=>{e=setTimeout(()=>{n({status:301,errno:"ETIME"})},t)}),()=>{clearTimeout(e)}]}s(Ch,"cancelableTimeout");async function uI(t,e){let[r,n]=Ch(t),i=await Promise.race([e(),r]);return n(),i}s(uI,"withTimeout");var cI=s(t=>t==null?"":String(t).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"),"escapeHtml"),lI=s(t=>t.toLowerCase().trim(),"normalizeForComparison");function dI(t){return t==="GOOGLE_SHEETS"}s(dI,"isGoogleSheets");function fI(t){return!t||!t.source?!1:["POSTGRES","SQL_SERVER","MYSQL","ORACLE"].indexOf(t.source)!==-1||t.isSQL===!0}s(fI,"isSQL");async function el(t){return new Promise(e=>setTimeout(e,t))}s(el,"wait");async function pI(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 el(o);try{return await t()}catch(a){n=a}}throw n}s(pI,"retry");var mI=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 Ky=W(Rt()),Qy=W(Vy());var qy="(Input cron: ",rb={"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 nb(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(nb,"formatExecutionDate");function ib(t){let e=[];for(let r of t){r.includes(qy)&&(r=r.split(qy)[0].trim());for(let[n,i]of Object.entries(rb))r.includes(n)&&(r=r.replace(new RegExp(n,"g"),i));e.push(r)}return e}s(ib,"improveErrors");function jy(t,e=4,r){let n=Qy.default.parseExpression(t,r?{tz:r}:void 0),i=[];for(let o=0;o<e;o++)i.push(nb(n.next().toDate(),r));return i}s(jy,"getNextExecutionDates");function Hy(t){let e=(0,Ky.default)(t,{preset:"npm-cron-schedule",override:{useSeconds:!1}});return e.isValid()?{valid:!0}:{valid:!1,err:ib(e.getError())}}s(Hy,"validate");var ws={};P(ws,{decodeNonAscii:()=>Td,encodeNonAscii:()=>ab,isDeprecatedSingleUserColumn:()=>sb,isNumeric:()=>ub,isRequired:()=>ob});function sb(t){return t.type==="bb_reference"&&t.subtype==="user"&&t.constraints?.type!=="array"}s(sb,"isDeprecatedSingleUserColumn");function ob(t){return!!t&&(typeof t.presence!="boolean"&&t.presence?.allowEmpty===!1||t.presence===!0)}s(ob,"isRequired");function ab(t){return t.split("").map(e=>e.charCodeAt(0)>127?"\\u"+e.charCodeAt(0).toString(16).padStart(4,"0"):e).join("")}s(ab,"encodeNonAscii");function Td(t){return t.replace(/\\u([0-9a-fA-F]{4})/g,(e,r)=>String.fromCharCode(parseInt(r,16)))}s(Td,"decodeNonAscii");function ub(t){return t.type==="number"||t.type==="bigint"}s(ub,"isNumeric");var Sd={};P(Sd,{normalizeSchemaForStructuredOutput:()=>cb});function cb(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 g=f;if(g.required===!0){a.push(d);let{required:m,...y}=g;u[d]=e(y)}else u[d]=e(g)}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(cb,"normalizeSchemaForStructuredOutput");var _d={};P(_d,{basicFields:()=>mb,calculationFields:()=>pb,hasCalculationFields:()=>fb,isBasicViewField:()=>lb,isCalculationField:()=>Rs,isCalculationView:()=>db,isV2:()=>hb,isVisible:()=>Yy});var Ad=W(require("lodash/pickBy"));function Rs(t){return"calculationType"in t}s(Rs,"isCalculationField");function lb(t){return!Rs(t)}s(lb,"isBasicViewField");function db(t){return t.type==="calculation"}s(db,"isCalculationView");function fb(t){return Object.values(t.schema||{}).some(Rs)}s(fb,"hasCalculationFields");function pb(t){return(0,Ad.default)(t.schema||{},Rs)}s(pb,"calculationFields");function Yy(t){return t.visible!==!1}s(Yy,"isVisible");function mb(t,e){let{visible:r=!0}=e||{};return(0,Ad.default)(t.schema||{},n=>!Rs(n)&&(!r||Yy(n)))}s(mb,"basicFields");function hb(t){return t.version===2}s(hb,"isV2");var Od={};P(Od,{checkForRoleInheritanceLoops:()=>Eb});function gb(t){return`role${"_"}${t}`}s(gb,"prefixForCheck");function Eb(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=gb(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(Eb,"checkForRoleInheritanceLoops");var Id={};P(Id,{punctuateList:()=>yb});function yb(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(yb,"punctuateList");var wd=["desktop","tablet","mobile"],Tb=s(t=>{let e=wd.indexOf(t||"desktop"),n=((e===-1?0:e)+1)%wd.length;return wd[n]},"getNextPreviewDevice"),Sb=s(t=>t==="mobile"?"device-mobile-camera":t==="tablet"?"device-tablet-camera":"monitor","getPreviewDeviceIcon"),Ab=s(t=>t&&t!=="desktop"?t:null,"getPreviewModalDevice");var _b=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"),Ob=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 Ib=/{?{{([^{].*?)}}}?/g;function zy(t,e){if(!e)return t;let r=t.match(Ib)??[],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,g)=>d.replace(o(g),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(zy,"applyBaseUrl");var Jy=s(t=>t?t.startsWith("/")?t:`/${t}`:"","normalizePath"),wb=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=wb(t);return r?`${n}${r}`:n},"joinBaseAndPath"),Rb=s(t=>t.replace(/\/+$/,""),"trimTrailingSlash"),Xy=s(t=>Rb(Jy(t)),"normalizeAppUrl"),Rd=s(t=>qt(t,Mi.ACCOUNT),"accountPortalAccountUrl"),Cd=s((t,e)=>{let r=typeof e=="string"||e==null?{tenantId:e}:e,n=qt(t,Mi.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"),Dd=s((t,e)=>{if(e){let r=qt(t,Mi.TENANTS),n=encodeURIComponent(e);return`${r}?managePlansTenantId=${n}`}return qt(t,Mi.UPGRADE)},"accountPortalUpgradeUrl"),bd=s(t=>qt(t,Nn.WORKSPACES),"builderWorkspacesUrl"),xd=s(t=>qt(t,Nn.SETTINGS_EMAIL),"builderSettingsEmailUrl"),vd=s(t=>qt(t,Nn.SETTINGS_AUTH),"builderSettingsAuthUrl"),Nd=s(t=>qt(t,Nn.SETTINGS_PEOPLE_USERS),"builderSettingsPeopleUsersUrl"),Pd=s(t=>qt(t,Nn.APPS),"builderAppsUrl"),La=s(t=>`/app-chat${Xy(t)}`,"appChatUrl"),Ua=s((t,e)=>`${Xy(t)}/agent/${encodeURIComponent(e)}`,"appAgentUrl"),Ld=s((t,e)=>La(Ua(t,e)),"agentChatUrl"),Zy={accountPortalAccountUrl:Rd,accountPortalBillingUrl:Cd,accountPortalUpgradeUrl:Dd,builderWorkspacesUrl:bd,builderSettingsEmailUrl:xd,builderSettingsAuthUrl:vd,builderSettingsPeopleUsersUrl:Nd,builderAppsUrl:Pd,appChatUrl:La,appAgentUrl:Ua,agentChatUrl:Ld};function Cb(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(Cb,"formatBytes");function eT(t){return/^{{\s*env\.([^\s]+)\s*}}$/.test(String(t))}s(eT,"isEnvironmentVariableKey");var Db={getNextExecutionDates:jy,validate:Hy};var ka=W(require("lodash/isPlainObject")),Ud=W(require("lodash/isEmpty"));var xb=/{{([^{].*?)}}/g,rT=Object.values(Li),vb=[...Object.values(Vr),...Object.values(cr),...Object.values(xn)],Nb=s((t,e,r)=>{let n=Le,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"||ws.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"),nT=[Le.StartsWith.value,Le.Like.value,Le.Equals.value,Le.NotEquals.value,Le.Contains.value,Le.NotContains.value,Le.ContainsAny.value,Le.In.value,Le.NotIn.value];function Fd(t,e){for(let r of rT)t[r]&&(t[r].conditions=t[r].conditions.map(n=>e(n)));return t}s(Fd,"recurseLogicalOperators");var Bd=s(t=>{for(let e of nT)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===""||Pb(o))&&delete t[e][i]}return t=Fd(t,Bd),t},"cleanupQuery");function Pb(t){return Array.isArray(t)&&t.length===0}s(Pb,"isEmptyArray");var Yo=s(t=>Wd(t).key,"removeKeyNumbering"),Wd=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"),kd=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}=Wd(e),i;if(this.aliases)for(let a of Object.keys(this.aliases||{})){let u=`${a}.`;n.startsWith(u)&&(i=this.aliases[a],n=n.slice(u.length))}let o;for(let a of this.relationships){let u=`${a}.`;if(n.startsWith(u)){let c=n.split(u);c.shift(),o=u,n=c.join(".");break}}return this.columnPrefix&&n.startsWith(this.columnPrefix)&&(n=Td(n.slice(this.columnPrefix.length))),{tableName:i,numberPrefix:r,relationshipPrefix:o,column:n}}};function Lb(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(xb)||[]).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(Ko(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(Ko(r)){let l=_h[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(gh(r)||Eh(r)||Ko(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(Lb,"buildCondition");function zo(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(zo,"splitFiltersArray");function iT(t){if(!t)return{};if(Array.isArray(t)&&(t=Xc(t),!t))return{};let e={};t.onEmptyFilter?e.onEmptyFilter=t.onEmptyFilter:e.onEmptyFilter="all";let r=tT(t.logicalOperator||"all");return e[r]={conditions:(t.groups||[]).map(n=>{if(n.groups){let c=iT(n);return delete c.onEmptyFilter,c}let{allOr:i,onEmptyFilter:o,filters:a}=zo(n.filters||[]);o&&(e.onEmptyFilter=o);let u=i?"$or":"$and";return n.logicalOperator&&(u=tT(n.logicalOperator)),{[u]:{conditions:a.map(Lb).filter(c=>c)}}})},e}s(iT,"buildQuery");function tT(t){return t==="all"?"$and":"$or"}s(tT,"logicalOperatorFromUI");function Gd(t){if(!t)return t;for(let e of Object.values(cr)){let r=t[e];if(!(r==null||!(0,ka.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 Fd(t,Gd),t}s(Gd,"fixupFilterArrays");function Ub(t,e){let r=Ma(t,e.query);e.sort&&(r=sT(r,e.sort,e.sortOrder||"ascending",e.sortType));let n=r.length;e.limit&&(r=oT(r,e.limit.toString()));let i={rows:r};return e.countRows&&(i.totalRows=n),i}s(Ub,"search");function Ma(t,e){if(!t||!Array.isArray(t))return[];if(!e)return t;if(e=Bd(e),e=Gd(e),!Md(e)&&e.onEmptyFilter==="none")return[];let r=s((R,w)=>b=>{for(let[G,ee]of Object.entries(e[R]||{})){let M=qo(R)?b:Zc(b,Yo(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,ka.default)(w.low)&&(0,Ud.default)(w.low)&&(w.low=void 0),(0,ka.default)(w.high)&&(0,Ud.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,zn.default)(R);if(G.isValid()){let ee=(0,zn.default)(w.low||"0000-00-00T00:00:00.000Z"),M=(0,zn.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,zn.default)(R);if(b.isValid()){let G=(0,zn.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),g=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),h=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(!Ma([R],b).length)return!1;return!0}),O=r("$or",(R,w)=>{if(!w.length)return!1;for(let b of w)if(Ma([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:g,oneOf:y,notOneOf:h,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 Md(e)?e.allOr?b.some(G=>G===!0):b.every(G=>G===!0):!0},"docMatch");return t.filter(C)}s(Ma,"runQuery");function sT(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(sT,"sort");function oT(t,e){let r=typeof e=="number"?e:parseFloat(e);return isNaN(r)?t:t.slice(0,r)}s(oT,"limit");var Md=s(t=>{if(!t)return!1;let e=s(r=>{for(let n of rT)if(r[n])for(let i of r[n]?.conditions||[]){let o=e(i);if(o)return o}for(let n of vb){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 Me={};P(Me,{automations:()=>qd,screens:()=>Hd,users:()=>jd,workspaces:()=>Vd});var Vd={};P(Vd,{getDevWorkspaceID:()=>kb,getProdWorkspaceID:()=>Ds});var $d=Ot("app"),Cs=Ot("app_dev");function kb(t){if(!t)throw new Error("No workspace ID provided");if(t.startsWith(Cs))return t;let e=t.split($d);e.shift();let r=e.join($d);return`${Cs}${r}`}s(kb,"getDevWorkspaceID");function Ds(t){if(!t)throw new Error("No workspace ID provided");if(!t.startsWith(Cs))return t;let e=t.split(Cs);e.shift();let r=e.join(Cs);return`${$d}${r}`}s(Ds,"getProdWorkspaceID");var qd={};P(qd,{checkForCollectStep:()=>Wb,isAppAction:()=>Bb,isRowAction:()=>Mb,isWebhookAction:()=>Fb});function Mb(t){return t.definition.trigger?.stepId==="ROW_ACTION"}s(Mb,"isRowAction");function Fb(t){return t.definition.trigger?.stepId==="WEBHOOK"}s(Fb,"isWebhookAction");function Bb(t){return t.definition.trigger?.stepId==="APP"}s(Bb,"isAppAction");function aT(t){if(!t||!Array.isArray(t))return!1;for(let e of t){if(e.stepId==="COLLECT")return!0;if(Sh(e)&&e.inputs.children){for(let r of Object.values(e.inputs.children))if(aT(r))return!0}}return!1}s(aT,"hasCollectBlockRecursive");function Wb(t){return aT(t.definition.steps)}s(Wb,"checkForCollectStep");var jd={};P(jd,{canCreateApps:()=>Gb,containsUserID:()=>Yb,getGlobalUserID:()=>Hb,getUserAppGroups:()=>zb,hasAdminPermissions:()=>Qd,hasAppBuilderPermissions:()=>Ba,hasBuilderPermissions:()=>Qb,hasCreatorPermissions:()=>Wa,isAdmin:()=>bs,isAdminOrBuilder:()=>Vb,isAdminOrGlobalBuilder:()=>qb,isAdminOrWorkspaceBuilder:()=>$b,isBuilder:()=>Kd,isCreator:()=>jb,isGlobalBuilder:()=>Fa,userAppAccessList:()=>Jb});function Kd(t,e){return t?t.builder?.global?!0:!!(e&&t.builder?.apps?.includes(Ds(e))):!1}s(Kd,"isBuilder");function Fa(t){return Kd(t)&&!Ba(t)||bs(t)}s(Fa,"isGlobalBuilder");function Gb(t){return Fa(t)||Wa(t)}s(Gb,"canCreateApps");function bs(t){return t?Qd(t):!1}s(bs,"isAdmin");function $b(t,e){return t?!!(bs(t)||e&&t.builder?.apps?.includes(Ds(e))):!1}s($b,"isAdminOrWorkspaceBuilder");function Vb(t,e){return Kd(t,e)||bs(t)}s(Vb,"isAdminOrBuilder");function qb(t){return Fa(t)||bs(t)}s(qb,"isAdminOrGlobalBuilder");function Ba(t){if(!t)return!1;let e=t.builder?.apps?.length;return!!!t.builder?.global&&e!=null&&e>0}s(Ba,"hasAppBuilderPermissions");function Kb(t){return t?!!Object.values(t.roles??{}).find(e=>e==="CREATOR"):!1}s(Kb,"hasAppCreatorPermissions");function Qb(t){return t?t.builder?.global||Ba(t)||Wa(t):!1}s(Qb,"hasBuilderPermissions");function Qd(t){return t?!!t.admin?.global:!1}s(Qd,"hasAdminPermissions");function Wa(t){return t?!!t.builder?.creator:!1}s(Wa,"hasCreatorPermissions");function jb(t){return t?Fa(t)||Qd(t)||Wa(t)||Ba(t)||Kb(t):!1}s(jb,"isCreator");function Hb(t){if(typeof t!="string")return t;let e=`ro${"_"}ta_users${"_"}`;return t.startsWith(e)?t.split(e)[1]:t}s(Hb,"getGlobalUserID");function Yb(t){return typeof t!="string"?!1:t.includes(`us${"_"}`)}s(Yb,"containsUserID");function uT(t,e){return e?.filter(r=>r.users?.find(n=>n._id===t))||[]}s(uT,"getUserGroups");function zb(t,e,r){let n=Ds(t);return uT(e,r).filter(o=>Object.keys(o.roles||{}).find(a=>a===n))}s(zb,"getUserAppGroups");function Jb(t,e){let n=uT(t._id,e).flatMap(o=>Object.keys(o.roles||{})),i=[...Object.keys(t?.roles||{}),...n];return[...new Set(i)]}s(Jb,"userAppAccessList");var Hd={};P(Hd,{findInSettings:()=>Xb});function Xb(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(Xb,"findInSettings");var Ga=(n=>(n.ALL="all",n.AUTOMATION="automation",n.STATUS="status",n))(Ga||{}),Kt=(h=>(h.USER_BY_WORKSPACE="by_app",h.USER_BY_EMAIL="by_email2",h.BY_API_KEY="by_api_key",h.AGENT_REQUESTS_BY_AGENT="agent_requests_by_agent",h.AGENT_REQUESTS_BY_UPDATED_AT="agent_requests_by_updated_at_2",h.AGENT_REQUESTS_BY_STATUS_AND_UPDATED_AT="agent_requests_by_status_and_updated_at",h.LINK="by_link",h.ROUTING="screen_routes_2",h.PROJECT_MEMBERS="project_members",h.AUTOMATION_LOGS="automation_logs",h.ACCOUNT_BY_EMAIL="account_by_email",h.PLATFORM_USERS_LOWERCASE="platform_users_lowercase_2",h.USER_BY_GROUP="user_by_group",h.WORKSPACE_BACKUP_BY_TRIGGER="by_trigger",h.WORKSPACE_BACKUP_BY_EXPIRY="workspace_backup_by_expiry",h))(Kt||{}),Jn={by_email2:["by_email"],agent_requests_by_updated_at_2:["agent_requests_by_updated_at"]},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=Ot("app"),$a=Ot("app_dev"),nt=$a,Yd="internal",zd="budibase",xt="_design/sqlite",Jd="ta_bb_jobs",Xd="ta_bb_inventory",Zd="ta_bb_expenses",ef="ta_bb_employee",xs=`ro${"_"}ta_users${"_"}`,vs=(r=>(r[r.SQLITE=xt]="SQLITE",r.MIGRATIONS="_design/migrations",r))(vs||{});var Va=(r=>(r.ACTIVE="active",r.INACTIVE="inactive",r))(Va||{}),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||{}),tf=(i=>(i.OWNER="owner",i.ADMIN="admin",i.BUILDER="builder",i.WORKSPACE_MANAGER="workspace_manager",i))(tf||{}),rf=(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))(rf||{}),cT=new Date(-2147483647e3),qa=new Date(2147483647e3),ce="default";var Di={};P(Di,{CacheKey:()=>Oe,TTL:()=>gi,bustCache:()=>Ei,destroy:()=>fo,docWritethrough:()=>Mp,generic:()=>Gu,get:()=>lo,increment:()=>vA,invite:()=>An,keys:()=>Wu,passwordReset:()=>Gp,store:()=>yn,user:()=>nr,withCache:()=>br,withCacheWithDynamicTTL:()=>xA,workspace:()=>Vs,writethrough:()=>ym});var Mp={};P(Mp,{DocWritethrough:()=>kp,DocWritethroughProcessor:()=>co,getProcessor:()=>iP,init:()=>bA});var Up={};P(Up,{BudibaseQueue:()=>yt,InMemoryQueue:()=>Cu,JobQueue:()=>fi,QueuedProcessor:()=>Lp,UnretriableError:()=>Fu,shutdown:()=>yN});var sf=require("crypto"),Qa=require("fs"),fT=require("lodash"),Ns=require("path");var Zb=process.env.TOP_LEVEL_PATH||process.env.SERVER_TOP_LEVEL_PATH||(0,Ns.resolve)((0,Ns.join)(__dirname,"..","..","..")),lT=!1;!lT&&Ka()&&!of()&&(require("dotenv").config({path:(0,Ns.join)(Zb,".env")}),lT=!0);function of(){return pT()}s(of,"isTest");function pT(){return process.env.NODE_ENV==="jest"||process.env.JEST_WORKER_ID!=null&&process.env.JEST_WORKER_ID!=="null"}s(pT,"isJest");function Ka(){return process.env.NODE_ENV!=="production"}s(Ka,"isDev");function ex(t){if(t)return parseInt(t)}s(ex,"parseIntSafe");var Xn={BACKUPS:"backups",APPS:"prod-budi-app-assets",TEMPLATES:"templates",GLOBAL:"global",PLUGINS:"plugins",TEMP:"tmp-file-attachments"},dT=!!parseInt(process.env.SELF_HOSTED||"");function tx(){return process.env.API_ENCRYPTION_KEY?process.env.API_ENCRYPTION_KEY:process.env.JWT_SECRET}s(tx,"getAPIEncryptionKey");function rx(){return process.env.HTTP_LOGGING===void 0?!0:process.env.HTTP_LOGGING}s(rx,"httpLogging");function nx(){function t(r){function n(u,c){let l=`${c}/${u}`;if((0,Qa.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,Qa.readFileSync)(i,"utf-8");return JSON.parse(o)}s(t,"getParentFile");let e;if(Ka()&&!of())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(nx,"getPackageJsonFields");function ix(){return ht.SERVICE_TYPE==="worker"}s(ix,"isWorker");function sx(){return ht.SERVICE_TYPE==="apps"}s(sx,"isApps");function ox(){return ht.BUDIBASE_ENVIRONMENT==="QA"}s(ox,"isQA");function ax(){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(ax,"getServiceName");var ht={isTest:of,isJest:pT,isDev:Ka,isWorker:ix,isApps:sx,isQA:ox,isProd:s(()=>!Ka(),"isProd"),BUDIBASE_ENVIRONMENT:process.env.BUDIBASE_ENVIRONMENT,JWT_SECRET:process.env.JWT_SECRET?(0,sf.createSecretKey)(process.env.JWT_SECRET,"utf8"):void 0,JWT_SECRET_FALLBACK:process.env.JWT_SECRET_FALLBACK?(0,sf.createSecretKey)(process.env.JWT_SECRET_FALLBACK,"utf8"):void 0,ENCRYPTION_KEY:process.env.ENCRYPTION_KEY,API_ENCRYPTION_KEY:tx(),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:dT,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||Xn.BACKUPS,APPS_BUCKET_NAME:process.env.APPS_BUCKET_NAME||Xn.APPS,TEMPLATES_BUCKET_NAME:process.env.TEMPLATES_BUCKET_NAME||Xn.TEMPLATES,GLOBAL_BUCKET_NAME:process.env.GLOBAL_BUCKET_NAME||Xn.GLOBAL,PLUGIN_BUCKET_NAME:process.env.PLUGIN_BUCKET_NAME||Xn.PLUGINS,TEMP_BUCKET_NAME:process.env.TEMP_BUCKET_NAME||Xn.TEMP,USE_COUCH:process.env.USE_COUCH||!0,MOCK_REDIS:process.env.MOCK_REDIS,DEFAULT_LICENSE:process.env.DEFAULT_LICENSE,SERVICE:ax(),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:rx(),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:dT?process.env.ENABLE_SSO_MAINTENANCE_MODE:!1,OIDC_ALLOW_UNVERIFIED_EMAIL_LINKING:process.env.OIDC_ALLOW_UNVERIFIED_EMAIL_LINKING,...nx(),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,ht[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:ex(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",COUCH_DB_SQS_PORT:process.env.COUCH_DB_SQS_PORT||"4984"};function Ps(t){let e=(0,fT.cloneDeep)(ht),r;for(r in t)ht._set(r,t[r]);return()=>{for(let[n,i]of Object.entries(e))ht._set(n,i)}}s(Ps,"setEnv");function mT(t,e){let r=Ps(t);try{let n=e();return n instanceof Promise?n.finally(r):(r(),n)}catch(n){throw r(),n}}s(mT,"withEnv");var hT=["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(ht))e==="0"&&(ht[t]=0),e==="false"&&(ht[t]=0);var E=ht;var Ya={};P(Ya,{Databases:()=>af,SEPARATOR:()=>Zn,SelectableDatabase:()=>ja,getRedisClusterOptions:()=>uf,getRedisConnectionDetails:()=>Ha,getRedisOptions:()=>un,removeDbPrefix:()=>cf});var Zn="-",af=(_=>(_.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",_))(af||{}),ja=(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))(ja||{});function Ha(){let t=E.REDIS_PASSWORD,e=E.REDIS_USERNAME,r=E.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(Ha,"getRedisConnectionDetails");function uf(){return{slotsRefreshTimeout:2e3,dnsLookup:s((t,e)=>e(null,t),"dnsLookup"),redisOptions:{...un()}}}s(uf,"getRedisClusterOptions");function un(){let{host:t,password:e,port:r,username:n}=Ha(),i=E.REDIS_URL.toLowerCase().startsWith("rediss://")?{}:void 0;return{connectTimeout:3e4,port:r,host:t,password:e,...n&&{username:n},...i&&{tls:i}}}s(un,"getRedisOptions");function cf(t){let e=t.split(Zn);return e.length>=2?(e.shift(),e.join(Zn)):e[0]}s(cf,"removeDbPrefix");var KS=W(require("events"));var di={};P(di,{Duration:()=>me,GZIP_PREFIX:()=>Iu,clearCookie:()=>Jt,compare:()=>ff,createPinnedLookup:()=>qS,fetchWithBlacklist:()=>li,getBearerToken:()=>Qv,getCookie:()=>zt,getDispatcher:()=>Gv,getSessionExpiryDate:()=>tp,getSessionExpirySeconds:()=>Su,getWorkspaceIdFromCtx:()=>pn,gunzipFromBase64:()=>Kv,gzipToBase64:()=>qv,hasCircularStructure:()=>Pv,hash:()=>df,isAudited:()=>sp,isClient:()=>Nv,isPublicApiRequest:()=>bv,isServingApp:()=>Rv,isServingBuilder:()=>Cv,isServingBuilderPreview:()=>Dv,isValidInternalAPIKey:()=>Xs,microsoftDatasourceCreationCacheKey:()=>uN,newid:()=>X,openJwt:()=>_u,setAuthCookie:()=>vv,setCookie:()=>np,time:()=>Uv,timeout:()=>ip,urlHasProtocol:()=>Lv,validEmail:()=>op});var gT=require("uuid");function X(){return(0,gT.v4)().replace(/-/g,"")}s(X,"newid");var lf=require("bcrypt"),ux=E.SALT_ROUNDS||10;async function df(t){let e=await lf.genSalt(ux);return lf.hash(t,e)}s(df,"hash");async function ff(t,e){return lf.compare(t,e)}s(ff,"compare");var Au=W(require("jsonwebtoken"));var le={};P(le,{DEFAULT_TENANT_ID:()=>ce,baseGlobalDBName:()=>Ws,doInAutomationContext:()=>Nx,doInContext:()=>vf,doInEnvironmentContext:()=>Vx,doInFeatureFlagOverrideContext:()=>Ff,doInIPContext:()=>Lf,doInIdentityContext:()=>Us,doInLicenseContext:()=>Lx,doInScimContext:()=>qx,doInSelfHostTenantUsingCloud:()=>Px,doInTenant:()=>be,doInWorkspaceContext:()=>Mx,doInWorkspaceMigrationContext:()=>Bx,ensureSnippetContext:()=>NT,getAuditLogDBName:()=>xT,getAuditLogsDB:()=>Qx,getAutomationId:()=>Nf,getCurrentContext:()=>dn,getDevWorkspaceDB:()=>Hx,getDevWorkspaceId:()=>Gx,getEnvironmentVariables:()=>Kx,getFeatureFlagOverrides:()=>Mf,getFeatureFlags:()=>Uf,getGlobalDB:()=>z,getGlobalDBName:()=>ln,getIP:()=>Pf,getIdentity:()=>Qt,getLicense:()=>Ux,getOrThrowWorkspaceId:()=>Wx,getPlatformURL:()=>xf,getProdWorkspaceDB:()=>jx,getProdWorkspaceId:()=>$x,getScimDBName:()=>Dx,getSelfHostCloudDB:()=>kx,getTableForView:()=>Yx,getTenantIDFromWorkspaceID:()=>ni,getTenantId:()=>V,getWorkspaceDB:()=>ii,getWorkspaceId:()=>Fe,identity:()=>Ls,isDevWorkspace:()=>PT,isMultiTenant:()=>Sr,isProdWorkspace:()=>Jx,isScim:()=>Et,isSelfHostUsingCloud:()=>nu,isTenancyEnabled:()=>xx,isTenantIdSet:()=>bx,setFeatureFlags:()=>kf,setTableForView:()=>zx});var Ls={};P(Ls,{doInAccountContext:()=>cx,doInIdentityContext:()=>hf,doInUserContext:()=>gf,getAccountUserId:()=>ET,getIdentity:()=>mf});function mf(){return Qt()}s(mf,"getIdentity");function hf(t,e){return Us(t,e)}s(hf,"doInIdentityContext");function gf(t,e,r){let n={...t,_id:t._id,type:"user",hostInfo:{ipAddress:e.request.ip,userAgent:e.userAgent.source}};return hf(n,r)}s(gf,"doInUserContext");function cx(t,e){let r=ET(t),n=t.tenantId,i={_id:r,type:"user",tenantId:n,account:t};return hf(i,e)}s(cx,"doInAccountContext");function ET(t){let e;return jo(t)?e=t.budibaseUserId:e=t.accountId,e}s(ET,"getAccountUserId");var vt=s(()=>za(E.COUCH_DB_URL,{user:E.COUCH_DB_USERNAME||"",password:E.COUCH_DB_PASSWORD||""}),"getCouchInfo"),za=s((t,e)=>{let r=Ef(t),n,i;if(r.auth?.username)n=r.auth.username;else if(e?.user)n=e?.user;else throw new Error("CouchDB username not set");if(r.auth?.password)i=r.auth.password;else if(e?.password)i=e?.password;else throw new Error("CouchDB password not set");let o=Buffer.from(`${n}:${i}`).toString("base64"),a=E.COUCH_DB_SQL_URL;if(!a&&r.url){let u=new URL(r.url);u.port=E.COUCH_DB_SQS_PORT,a=u.toString().replace(/\/$/,"")}return{url:r.url,sqlUrl:Ef(a).url,auth:{username:n,password:i},cookie:`Basic ${o}`}},"parseCouchConnection"),Ef=s((t=E.COUCH_DB_URL)=>{let e,r,n,i;if(t){/^https?:\/\//i.test(t)||(t=`http://${t}`);let a=t.split("://"),u=a[0],c=a.slice(1).join("://");if(t.includes("@")){let l=c.split("@");i=l[l.length-1];let d=l.slice(0,-1).join("@");if(d.includes(":")){let f=d.split(":");r=f[0],n=f.slice(1).join(":")}else r=d}else i=c;e=`${u}://${i}`}return{url:e,auth:{username:r,password:n}}},"getUrlInfo");var CT=W(require("@budibase/nano"));var yT=W(require("node-fetch"));function Ja(t){return t.replace(/(https?:\/\/)|(\/)+/g,"$1$2")}s(Ja,"checkSlashesInUrl");async function TT(t,e="GET",r){let{url:n,cookie:i}=vt(),o=`${n}/${t}`;return await ks({url:o,cookie:i,method:e,body:r})}s(TT,"directCouchCall");async function ks({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,yT.default)(Ja(encodeURI(t)),i)}s(ks,"directCouchUrlCall");async function yf(t,e="GET",r){let n=await TT(t,e,r);if(n.status<300)return await n.json();throw"Cannot connect to CouchDB instance"}s(yf,"directCouchQuery");var cn=W(require("pouchdb"));var ST,AT=!1,Tf=s((t={})=>{let{url:e,cookie:r}=vt(),n={prefix:e,fetch:s((i,o)=>(o.headers.set("Authorization",r),cn.default.fetch(i,o)),"fetch")};if(t.inMemory){let i=require("pouchdb-adapter-memory");cn.default.plugin(i),n={adapter:"memory"}}if(t.onDisk&&(n={adapter:"leveldb"}),t.replication){let i=require("@budibase/pouchdb-replication-stream");cn.default.plugin(i.plugin),cn.default.adapter("writableStream",i.adapters.writableStream)}if(t.find){let i=require("pouchdb-find");cn.default.plugin(i)}return cn.default.defaults(n)},"getPouch");function Xa(t){ST=Tf(t),AT=!0}s(Xa,"init");var lx=s(()=>{if(!AT)throw new Error("init has not been called")},"checkInitialised");function it(t,e){lx();let r=new ST(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 Ms(t){if(!(!t||E.isTest()))try{return await t.close()}catch{}}s(Ms,"closePouchDB");var de=W(require("dd-trace"));var ei=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 Cf={};P(Cf,{breakExternalTableId:()=>_f,breakRowIdField:()=>Ox,buildExternalTableId:()=>Ex,convertRowId:()=>_x,encodeTableId:()=>yx,encodeViewId:()=>Tx,extractDate:()=>If,generateRowIdField:()=>Sx,getNativeSql:()=>ti,isExternalTable:()=>Af,isExternalTableID:()=>Za,isInternalTableID:()=>gx,isRowId:()=>Ax,isValidFilter:()=>tu,isValidISODateString:()=>eu,isValidISODateStringWithoutTimezone:()=>Of,isValidTime:()=>wf,sqlLog:()=>Fs,validateManyToMany:()=>Rf});var Sf=`${"_"}${"_"}`,OT=/^\[.*]$/g,dx=encodeURIComponent(" "),fx=/^\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}:\d{2}(?:.\d{3})?Z)?$/,px=/^\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}:\d{2}(?:.\d{3})?)?$/,mx=/(\d{4}-\d{2}-\d{2})/,hx=/^\d{1,2}:\d{2}(?:\.\d{1,6}|:\d{2}(?:\.\d{1,6})?)?$/;function Za(t){return t.startsWith("datasource_")}s(Za,"isExternalTableID");function gx(t){return!Za(t)}s(gx,"isInternalTableID");function ti(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(ti,"getNativeSql");function Af(t){return t?.sourceId&&t.sourceId.includes("datasource_")&&t?.sourceId!==Pn||t?.sourceType==="external"?!0:!!(t?._id&&Za(t._id))}s(Af,"isExternalTable");function Ex(t,e){return`${t}${Sf}${encodeURIComponent(e)}`}s(Ex,"buildExternalTableId");function yx(t){return Za(t)?encodeURIComponent(t):t}s(yx,"encodeTableId");function Tx(t){return encodeURIComponent(t)}s(Tx,"encodeViewId");function _f(t){let e=t.split(Sf),r=e.shift(),n=e.join(Sf);if(n.includes(dx)&&(n=decodeURIComponent(n)),!r||!n)throw new Error("Unable to get datasource/table name from table ID");return{datasourceId:r,tableName:n}}s(_f,"breakExternalTableId");function Sx(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(Sx,"generateRowIdField");function Ax(t){return Array.isArray(t)||typeof t=="string"&&t.match(OT)!=null}s(Ax,"isRowId");function _x(t){return Array.isArray(t)?t[0]:typeof t=="string"&&t.match(OT)!=null?t.substring(1,t.length-1):t}s(_x,"convertRowId");function Ox(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(Ox,"breakRowIdField");function eu(t){let e=t.trim();if(!fx.test(e))return!1;let r=new Date(e);return!isNaN(r.getTime())}s(eu,"isValidISODateString");function Of(t){let e=t.trim();if(!px.test(e))return!1;let r=new Date(e);return!isNaN(r.getTime())}s(Of,"isValidISODateStringWithoutTimezone");function If(t){let e=t.match(mx);if(e)return e[0]}s(If,"extractDate");function tu(t){return t!=null&&t!==""}s(tu,"isValidFilter");function wf(t){return hx.test(t)}s(wf,"isValidTime");function Fs(t,e,r){if(!E.SQL_LOGGING_ENABLE)return;let n=`[SQL] [${t.toUpperCase()}] query="${e}"`;r&&(n+=` values="${r.join(", ")}"`),console.log(n)}s(Fs,"sqlLog");function Ix(t){return!!t.through&&!!t.fromPrimary&&!!t.from&&!!t.toPrimary&&!!t.to}s(Ix,"isValidManyToManyRelationship");function Rf(t){if(Ix(t))return t}s(Rf,"validateManyToMany");var IT="Database does not exist.";function wT(t){return(0,CT.default)({url:t.url,requestDefaults:{headers:{Authorization:t.cookie}},parseUrl:!1})}s(wT,"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 wx(t,e,r){if(!t||!e)throw new Error("Unable to create database without database name or connection");let n=new ri(t,r,e);return new ei(n)}s(wx,"DatabaseWithConnection");var ri=class t{constructor(e,r,n){this.couchInfo=vt();this.name=e,this.pouchOpts=r||{},n&&(this.couchInfo=za(n),this.instanceNano=wT(this.couchInfo)),t.nano||t.init()}static{s(this,"DatabaseImpl")}static init(){let e=vt();t.nano=wT(e)}exists(e){return e===void 0?this.dbExists():this.docExists(e)}async dbExists(){return(await ks({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===IT)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(yh(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===IT)return{offset:0,total_rows:0,rows:[]};throw n}})}async _sqlQuery(e,r,n){e=Ja(`${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 ks(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}/${xt}`;return Fs("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(xt)){let e=await this.get(xt);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 De(t,e){return new ei(new ri(t,e))}s(De,"getDB");async function je(t,e,r){let n=De(t,r);return await e(n)}s(je,"doWithDB");async function Df(t){let e="/_all_dbs";return t&&(e+=`?${t}`),await yf(e)}s(Df,"directCouchAllDbs");var bf="No app provided";function Nt(t){if(!t)throw bf;return t.startsWith(nt)}s(Nt,"isDevWorkspaceID");function Rx(t){if(!t)throw bf;return t.startsWith(rt)&&!Nt(t)}s(Rx,"isProdWorkspaceID");function Bs(t){if(!t)throw bf;return Nt(t.appId)}s(Bs,"isDevWorkspace");function ru(t){if(!t||t.startsWith(nt))return t;let e=t.split(rt);e.shift();let r=e.join(rt);return`${nt}${r}`}s(ru,"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 DT=require("async_hooks");var ge=class t{static{s(this,"Context")}static{this.storage=new DT.AsyncLocalStorage}static run(e,r){return t.storage.run(e,()=>r())}static get(){return t.storage.getStore()}};var bT=null;function ln(t){return t||(t=V()),Ws(t)}s(ln,"getGlobalDBName");function xT(t){return t||(t=V()),t===ce?pe.AUDIT_LOGS.name:`${t}${"_"}${pe.AUDIT_LOGS.name}`}s(xT,"getAuditLogDBName");function Dx(t){return t||(t=V()),t===ce?pe.SCIM_LOGS.name:`${t}${"_"}${pe.SCIM_LOGS.name}`}s(Dx,"getScimDBName");function Ws(t){return!t||t===ce?pe.GLOBAL.name:`${t}${"_"}${pe.GLOBAL.name}`}s(Ws,"baseGlobalDBName");function xf(){return E.PLATFORM_URL}s(xf,"getPlatformURL");function Sr(){return!!E.MULTI_TENANCY}s(Sr,"isMultiTenant");function bx(){return!!ge.get()?.tenantId}s(bx,"isTenantIdSet");function xx(){return E.MULTI_TENANCY}s(xx,"isTenancyEnabled");function ni(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(ni,"getTenantIDFromWorkspaceID");function vx(t){let e;try{e=ge.get()}catch{e={}}return e={...e,...t},e}s(vx,"updateContext");async function gt(t,e){Fx();let r=vx(t);return ge.run(r,e)}s(gt,"newContext");async function Nx(t){return await NT(),await gt({tenantId:ni(t.workspaceId),appId:t.workspaceId,automationId:t.automationId},t.task)}s(Nx,"doInAutomationContext");async function vf(t,e){let r=ni(t);return gt({tenantId:r,appId:t},e)}s(vf,"doInContext");async function be(t,e){return E.MULTI_TENANCY||(t=t||ce),gt(t?{tenantId:t}:{},e)}s(be,"doInTenant");async function Px(t,e){return gt({tenantId:t,isSelfHostUsingCloud:!0},e)}s(Px,"doInSelfHostTenantUsingCloud");async function Lx(t,e){return gt({license:t},e)}s(Lx,"doInLicenseContext");function Ux(){return ge.get()?.license}s(Ux,"getLicense");function nu(){return!!ge.get()?.isSelfHostUsingCloud}s(nu,"isSelfHostUsingCloud");function kx(){let t=ge.get();if(!t||!t.isSelfHostUsingCloud)throw new Error("Self-host cloud DB not found");return De(pe.SELF_HOST_CLOUD.name)}s(kx,"getSelfHostCloudDB");async function Mx(t,e){return vT(t,e)}s(Mx,"doInWorkspaceContext");async function vT(t,e,r){if(!t)throw new Error("workspaceId is required");let n=ni(t),i={appId:t,...r};return n&&(i.tenantId=n),gt(i,e)}s(vT,"_doInWorkspaceContext");async function Us(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(Us,"doInIdentityContext");function Fx(){if(ge.get()?.isMigrating)throw new Error("The context cannot be changed, a migration is currently running")}s(Fx,"guardMigration");async function Bx(t,e){return vT(t,e,{isMigrating:!0})}s(Bx,"doInWorkspaceMigrationContext");function Qt(){try{return ge.get()?.identity}catch{}}s(Qt,"getIdentity");function V(){if(!Sr())return ce;let e=ge.get()?.tenantId;if(!e)throw new Error("Tenant id not found");return e}s(V,"getTenantId");function Nf(){return ge.get()?.automationId}s(Nf,"getAutomationId");function Fe(){let e=ge.get()?.appId;return!e&&E.isTest()&&bT?bT:e}s(Fe,"getWorkspaceId");function Wx(){let t=Fe();if(!t)throw new Error("Workspace id not set");return t}s(Wx,"getOrThrowWorkspaceId");function Pf(){return ge.get()?.ip}s(Pf,"getIP");var Gx=s(()=>{let t=Fe();if(!t)throw new Error("Could not get workspaceId");return ru(t)},"getDevWorkspaceId"),$x=s(()=>{let t=Fe();if(!t)throw new Error("Could not get workspaceId");return He(t)},"getProdWorkspaceId");function Vx(t,e){if(!t)throw new Error("Must supply environment variables.");return gt({environmentVariables:t},e)}s(Vx,"doInEnvironmentContext");function qx(t){return gt({isScim:!0},t)}s(qx,"doInScimContext");function Lf(t,e){return gt({ip:t},e)}s(Lf,"doInIPContext");async function NT(){let t=dn();if(!t||t.snippets)return;let e,r=ii();r&&(e=(await r.tryGet("app_metadata"))?.snippets),t.snippets=e||[]}s(NT,"ensureSnippetContext");function Kx(){let t=ge.get();return t.environmentVariables?t.environmentVariables:null}s(Kx,"getEnvironmentVariables");function z(){let t=ge.get();if(!t||E.MULTI_TENANCY&&!t.tenantId)throw new Error("Global DB not found");if(t.isSelfHostUsingCloud)throw new Error("Global DB not found - self-host users using cloud don't have a global DB");return De(Ws(t?.tenantId))}s(z,"getGlobalDB");function Qx(){if(!V())throw new Error("No tenant ID found - cannot open audit log DB");return De(xT())}s(Qx,"getAuditLogsDB");function ii(t){let e=Fe();if(!e)throw new Error("Unable to retrieve workspace DB - no workspace ID.");if(nu())throw new Error("Workspace DB not found - self-host users using cloud don't have workspace DBs");return De(e,t)}s(ii,"getWorkspaceDB");function jx(t){let e=Fe();if(!e)throw new Error("Unable to retrieve prod DB - no workspace ID.");return De(He(e),t)}s(jx,"getProdWorkspaceDB");function Hx(t){let e=Fe();if(!e)throw new Error("Unable to retrieve dev DB - no workspace ID.");return De(ru(e),t)}s(Hx,"getDevWorkspaceDB");function Et(){return!!ge.get()?.isScim}s(Et,"isScim");function dn(){try{return ge.get()}catch{return}}s(dn,"getCurrentContext");function Uf(t){let e=dn();if(e)return e.featureFlagCache?.[t]}s(Uf,"getFeatureFlags");function kf(t,e){let r=dn();r&&(r.featureFlagCache??={},r.featureFlagCache[t]=e)}s(kf,"setFeatureFlags");function Mf(){return dn()?.featureFlagOverrides||{}}s(Mf,"getFeatureFlagOverrides");async function Ff(t,e){return await gt({featureFlagOverrides:t},e)}s(Ff,"doInFeatureFlagOverrideContext");function Yx(t){let e=dn();if(e)return e.viewToTableCache?.[t]}s(Yx,"getTableForView");function zx(t,e){let r=dn();r&&(r.viewToTableCache??={},r.viewToTableCache[t]=e)}s(zx,"setTableForView");function PT(){let t=Fe();return Nt(t)}s(PT,"isDevWorkspace");function Jx(){return!PT()}s(Jx,"isProdWorkspace");var Ir={};P(Ir,{AutomationViewMode:()=>Ga,BUDIBASE_DATASOURCE_TYPE:()=>zd,DEFAULT_BB_DATASOURCE_ID:()=>Pn,DEFAULT_EMPLOYEE_TABLE_ID:()=>ef,DEFAULT_EXPENSES_TABLE_ID:()=>Zd,DEFAULT_INVENTORY_TABLE_ID:()=>Xd,DEFAULT_JOBS_TABLE_ID:()=>Jd,DatabaseImpl:()=>ri,DatabaseWithConnection:()=>wx,DeprecatedViews:()=>Jn,DesignDocuments:()=>vs,DocumentType:()=>ae,InternalTable:()=>It,QueryBuilder:()=>Yt,Replication:()=>DS,SEPARATOR:()=>D,SQLITE_DESIGN_DOC_ID:()=>xt,SQS_DATASOURCE_INTERNAL:()=>Yd,StaticDatabases:()=>pe,UNICODE_MAX:()=>Ne,USER_METADATA_PREFIX:()=>xs,ViewName:()=>Kt,WORKSPACE_DEV:()=>$a,WORKSPACE_DEV_PREFIX:()=>nt,WORKSPACE_PREFIX:()=>rt,baseGlobalDBName:()=>Ws,checkErrorCode:()=>NS,closePouchDB:()=>Ms,createApiKeyView:()=>_S,createNewUserEmailView:()=>SS,createPlatformAccountEmailView:()=>IS,createPlatformUserView:()=>wS,createUserAppView:()=>AS,createView:()=>ci,dbExists:()=>mv,directCouchAllDbs:()=>Df,directCouchCall:()=>TT,directCouchQuery:()=>yf,directCouchUrlCall:()=>ks,doWithDB:()=>je,fullSearch:()=>Tv,generateAIConfigID:()=>iS,generateAgentID:()=>HT,generateAgentKnowledgeSourceConnectionID:()=>tS,generateAgentKnowledgeSourceSyncStateID:()=>eS,generateAgentRequestID:()=>JT,generateAgentToolSourceID:()=>ZT,generateAppUserID:()=>Eu,generateChatAppID:()=>YT,generateChatConversationID:()=>zT,generateDevInfoID:()=>KT,generateGlobalUserID:()=>ai,generateKnowledgeBaseFileID:()=>rS,generateKnowledgeBaseID:()=>cS,generateOAuth2LogID:()=>jT,generatePluginID:()=>QT,generateProjectID:()=>uS,generateRoleID:()=>Kf,generateRowID:()=>qf,generateTableID:()=>WT,generateTemplateID:()=>qT,generateUserMetadataID:()=>$T,generateWorkspaceAppID:()=>oS,generateWorkspaceFavouriteID:()=>aS,generateWorkspaceID:()=>BT,getAgentTestRunID:()=>XT,getAgentTestSuiteID:()=>Qf,getAllDbs:()=>TS,getAllWorkspaces:()=>Ks,getCouchInfo:()=>vt,getDB:()=>De,getDevWorkspaceID:()=>ru,getDevWorkspaceIDs:()=>fv,getDocParams:()=>Pt,getGlobalDBName:()=>ln,getGlobalIDFromUserMetadataID:()=>VT,getGlobalUserParams:()=>fn,getLiteLLMKeyID:()=>sS,getOAuth2ConfigParams:()=>mS,getPluginParams:()=>pS,getPouch:()=>Tf,getPouchDB:()=>it,getProdWorkpaceIDs:()=>dv,getProdWorkspaceID:()=>He,getProjectParams:()=>ES,getQueryIndex:()=>lS,getRoleParams:()=>yu,getRowParams:()=>jf,getStartEndKeyURL:()=>qs,getTemplateParams:()=>fS,getUrlInfo:()=>Ef,getUserMetadataParams:()=>dS,getUsersByWorkspaceParams:()=>ui,getWorkspaceAppParams:()=>hS,getWorkspaceFavouriteParams:()=>gS,getWorkspacesByIDs:()=>lv,init:()=>Xa,isDevWorkspace:()=>Bs,isDevWorkspaceID:()=>Nt,isDocumentConflictError:()=>Av,isGlobalUserID:()=>GT,isKnowledgeBaseFileID:()=>nS,isProdWorkspaceID:()=>Rx,isSameWorkspaceID:()=>pv,isType:()=>yS,paginatedSearch:()=>yv,pagination:()=>Yf,parseCouchConnection:()=>za,prefixRoleID:()=>jt,queryGlobalView:()=>Ht,queryGlobalViewRaw:()=>Hs,queryPlatformView:()=>js,queryView:()=>Jf,queryViewRaw:()=>Qs,removeKeyNumbering:()=>Ys,searchIndexes:()=>Zf});var Vs={};P(Vs,{WorkspaceState:()=>Vf,getWorkspaceMetadata:()=>gu,invalidateWorkspaceMetadata:()=>av});var _r={};P(_r,{getCacheClient:()=>Wf,getDocWritethroughClient:()=>nv,getInviteListClient:()=>Gs,getLockClient:()=>$f,getOpenapiImportSpecsClient:()=>tv,getPasswordResetClient:()=>$s,getSessionClient:()=>Ar,getSocketClient:()=>rv,getUserClient:()=>oi,getWorkspaceClient:()=>hu,getWritethroughClient:()=>Gf,init:()=>st,shutdown:()=>MT});var su=W(require("ioredis"));var iu=require("dd-trace"),UT=require("lodash");var LT;if(E.MOCK_REDIS)try{LT=require("ioredis-mock")}catch{console.log("Mock redis unavailable")}async function Xx(t=0){return await iu.tracer.trace("Redis.init",async e=>{if(E.MOCK_REDIS)return e.addTags({mock:!0}),new LT(un());let r;if(E.REDIS_CLUSTERED){e.addTags({clustered:!0});let{host:n,port:i}=Ha();r=new su.Cluster([{host:n,port:i}],uf())}else r=new su.default(un());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(Xx,"init");function Zx(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:cf(a),value:u}});r(await Promise.all(o))}catch(o){n(o)}})})}s(Zx,"promisifyStream");function ev(t){return t.isCluster}s(ev,"isCluster");var Bf=class t{static{s(this,"RedisWrapper")}constructor(e,r){this.client=e,this.db=r}static async init(e,r=0){return await iu.tracer.trace("RedisWrapper.init",async n=>{let i=await Xx(r);return r&&!E.isTest()&&(n.addTags({db:e}),i.select(r)),new t(i,e)})}trace(e,r){return iu.tracer.trace(e,async n=>(n.addTags({db:this.db}),await r(n)))}prefixed(e){return e.includes(this.db)?e:`${this.db}${Zn}${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}${Zn}${e}`;let n;ev(this.client)?n=this.client.nodes("master")[0].scanStream({match:e+"*",count:100}):n=this.client.scanStream({match:e+"*",count:100});let i=await Zx(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,UT.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"),js=s(async(t,e)=>{let r={account_by_email:IS,platform_users_lowercase_2:wS};return je(pe.PLATFORM_INFO.name,async n=>{let i=r[t];return Jf(t,e,n,i,{arrayResponse:!0})})},"queryPlatformView"),RS={by_email2:SS,by_api_key:_S,by_app:AS},Ht=s(async(t,e,r,n)=>{r||(r=z());let i=RS[t];return Jf(t,e,r,i,n)},"queryGlobalView");async function Hs(t,e,r){let n=z(),i=RS[t];return Qs(t,e,n,i,r)}s(Hs,"queryGlobalViewRaw");var Ev=W(require("pouchdb"));var CS=require("dd-trace");var Xf=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([Ms(this.source),Ms(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 CS.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,g)=>f?.startsWith(g+"_"),"startsWithID"),d=s(f=>l(f,"ro")||l(f,"li"),"isData");return{...e,filter:s((f,g)=>!o&&f._id==="_design/migrations"||i&&f._id.startsWith("_design")?!1:f._deleted||l(f._id,xs)?!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,g):!0,"filter")}}async rollback(){await this.target.destroy(),this.target=it(this.target.name),await this.replicate()}},DS=Xf;var xS=W(require("node-fetch"));var Ys=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=Ys(o);r[a]?r[a]=r[a].concat(e[o]):r[a]=e[o]}let n={},i=1;for(let[o,a]of Object.entries(r))n[`${i++}:${o}`]=a;return n}buildSearchQuery(){let e=this,r=this.#e&&this.#e.allOr,n=r?"":"*:*",i=!0,o={escape:!0,lowercase:!0,wrap:!0},a="";this.#e.equal.tableId&&(a=this.#e.equal.tableId,delete this.#e.equal.tableId);let u=s((h,p)=>Or(p)?null:`${h}:${e.preprocess(p,o)}`,"equal"),c=s((h,p,T="AND")=>{if(Or(p))return null;if(!Array.isArray(p))return`${h}:${p}`;let A=`${e.preprocess(p[0],{escape:!0})}`;for(let _=1;_<p.length;_++)A+=` ${T} ${e.preprocess(p[_],{escape:!0})}`;return`${h}:(${A})`},"contains"),l=s((h,p)=>Or(p)?null:(p=e.preprocess(p,{escape:!0,lowercase:!0,type:"fuzzy"}),`${h}:/.*${p}.*/`),"fuzzy"),d=s((h,p)=>{let T=r?"*:* AND ":"",A=r?"AND":void 0;return T+"NOT "+c(h,p,A)},"notContains"),f=s((h,p)=>c(h,p,"OR"),"containsAny"),g=s((h,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`${h}:(${T})`},"oneOf"),m=s((h,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`(*:* -${h}:(${T}))`},"notOneOf");function y(h,p,T){let A="";for(let[_,I]of Object.entries(h)){_=Ys(_),_=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,(h,p)=>Or(p)?null:(p=e.preprocess(p,{escape:!0,lowercase:!0,type:"string"}),`${h}:${p}*`)),this.#e.range&&y(this.#e.range,(h,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`${h}:[${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,(h,p)=>Or(p)?null:typeof p=="boolean"?`(*:* AND !${h}:${p})`:`!${h}:${e.preprocess(p,o)}`),this.#e.empty&&y(this.#e.empty,h=>(i=!1,`(*:* -${h}:["" TO *])`)),this.#e.notEmpty&&y(this.#e.notEmpty,h=>(i=!1,`${h}:["" TO *]`)),this.#e.oneOf&&y(this.#e.oneOf,g),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}=vt(),n=`${e}/${this.#l}/_design/database/_search/${this.#d}`,i=this.buildSearchBody();try{return await bS(n,i,r)}catch(o){if(o.status===404&&this.#a)return await this.#a(),await bS(n,i,r);throw o}}};async function bS(t,e,r){let n=await(0,xS.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(bS,"runQuery");async function vS(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 vS(t,e,r,l)}s(vS,"recursiveSearch");async function yv(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(yv,"paginatedSearch");async function Tv(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 vS(t,e,r,n)}}s(Tv,"fullSearch");var Zf={};P(Zf,{createUserIndex:()=>Sv});async function Sv(){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(Sv,"createUserIndex");function NS(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(NS,"checkErrorCode");function Av(t){return NS(t,409)}s(Av,"isDocumentConflictError");var Js={};P(Js,{addTenantToUrl:()=>_v,getTenantDB:()=>ep,getTenantIDFromCtx:()=>zs,isUserInWorkspaceTenant:()=>Ov});function ep(t){return De(ln(t))}s(ep,"getTenantDB");function _v(t){let e=V();if(Sr()){let r=t.indexOf("?")===-1?"?":"&";t+=`${r}tenantId=${e}`}return t}s(_v,"addTenantToUrl");var Ov=s((t,e)=>{let r;return e?r=e.tenantId||ce:r=V(),(ni(t)||ce)===r},"isUserInWorkspaceTenant"),Iv=Object.values(Ui),zs=s((t,e)=>{if(!Sr())return ce;e.allowNoTenant===void 0&&(e.allowNoTenant=!1),e.includeStrategies||(e.includeStrategies=Iv),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(xf()).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 Tu={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/Tu[e]}toMs(){return this.ms}toSeconds(){return this.to("seconds")}static convert(e,r,n){return n*Tu[e]/Tu[r]}static from(e,r){return new t(r*Tu[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 Su(){let t=me.fromDays(7).toSeconds();if(!E.SESSION_EXPIRY_SECONDS)return t;let e=parseInt(E.SESSION_EXPIRY_SECONDS);return Number.isFinite(e)&&e>0?e:t}s(Su,"getSessionExpirySeconds");function tp(){return new Date(Date.now()+Su()*1e3)}s(tp,"getSessionExpiryDate");var rp="app_",PS="/app/",LS="/app-chat/";async function wv(t){let r=t.path.split("/")[2];if(!r)return;let n=`/${r.toLowerCase()}`,i=V();!E.isDev()&&E.MULTI_TENANCY&&(i=zs(t,{includeStrategies:["subdomain"]}));let a=(await be(i,()=>Ks({dev:!1}))).filter(u=>u.url&&u.url.toLowerCase()===n)[0];return a&&a.appId?a.appId:void 0}s(wv,"resolveAppUrl");function Rv(t){return t.path.startsWith(`/${rp}`)?!0:t.path.startsWith(PS)||t.path.startsWith(LS)}s(Rv,"isServingApp");function Cv(t){return t.path.startsWith("/builder/workspace/")}s(Cv,"isServingBuilder");function Dv(t){return US(t.path)}s(Dv,"isServingBuilderPreview");function US(t){return new RegExp(/^\/app\/app_\w+\/preview$/).test(t)}s(US,"isBuilderPreviewUrl");function bv(t){return t.path.startsWith("/api/public/v")}s(bv,"isPublicApiRequest");async function pn(t){let e;function r(u){u&&u.startsWith(rp)&&(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=xv(t.path);r(i),n(t.query?.appId);let o=US(t.path);return(t.path.startsWith(PS)||t.path.startsWith(LS))&&!o&&r(await wv(t)),e}s(pn,"getWorkspaceIdFromCtx");function xv(t){if(t)return t.split("?")[0].split("/").find(e=>e.startsWith(rp))}s(xv,"parseWorkspaceIdFromUrlPath");function _u(t){if(t)try{return Au.default.verify(t,E.JWT_SECRET)}catch(e){if(E.JWT_SECRET_FALLBACK)return Au.default.verify(t,E.JWT_SECRET_FALLBACK);throw e}}s(_u,"openJwt");function Xs(t){return E.INTERNAL_API_KEY&&E.INTERNAL_API_KEY===t?!0:!!(E.INTERNAL_API_KEY_FALLBACK&&E.INTERNAL_API_KEY_FALLBACK===t)}s(Xs,"isValidInternalAPIKey");function zt(t,e){let r=t.cookies.get(e);if(r)return _u(r)}s(zt,"getCookie");function np(t,e,r="builder",n={sign:!0}){e&&n&&n.sign&&(e=Au.default.sign(e,E.JWT_SECRET));let i=n.sameSite,o=n.secure??t.secure;i==="none"&&(o?o=!0:i="lax");let a={expires:n.expires??qa,path:"/",httpOnly:n.httpOnly??!1,secure:o,overwrite:!0};i&&(a.sameSite=i),E.COOKIE_DOMAIN&&(a.domain=E.COOKIE_DOMAIN),t.cookies.set(r,e,a)}s(np,"setCookie");function vv(t,e){np(t,e,"budibase:auth",{sign:!1,httpOnly:!0,expires:tp()})}s(vv,"setAuthCookie");function Jt(t,e){np(t,null,e)}s(Jt,"clearCookie");function Nv(t){return t.headers["x-budibase-type"]==="client"}s(Nv,"isClient");function ip(t){return new Promise(e=>setTimeout(e,t))}s(ip,"timeout");function sp(t){return!!hh[t]}s(sp,"isAudited");function Pv(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(Pv,"hasCircularStructure");function Lv(t){return!!t.match(/^.+:\/\/.+$/)}s(Lv,"urlHasProtocol");function op(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(op,"validEmail");async function Uv(t){let e=performance.now();return[await t(),me.fromMilliseconds(performance.now()-e)]}s(Uv,"time");var Ou=require("undici");function kv(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 g=c.slice(1);d=r===g.slice(1)||r.endsWith(g)}else d=r===c;if(d&&(!l||n===l))return!0}return!1}s(kv,"isUrlMatchingNoProxy");function Mv(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&&kv(t,i))return console.log("[fetch] URL matches NO_PROXY pattern, bypassing proxy",{url:t,noProxy:i}),!0}return!1}s(Mv,"shouldBypassProxy");function Fv(t,e){return new Ou.Agent({connect:{rejectUnauthorized:t,...e?{lookup:e}:{}}})}s(Fv,"createDirectAgent");function Bv(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 Ou.ProxyAgent(i)}s(Bv,"createProxyAgent");function Wv(t){let e=t?.rejectUnauthorized??!0;return Mv(t?.url)?Fv(e,t?.lookup):(t?.lookup&&console.log("[fetch] Proxy configured; IP pinning is not applied to proxied requests"),Bv(e))}s(Wv,"createDispatcher");function Gv(t){return Wv(t)}s(Gv,"getDispatcher");var ap=require("util"),up=W(require("zlib"));var $v=(0,ap.promisify)(up.default.gzip),Vv=(0,ap.promisify)(up.default.gunzip),Iu="gzip:",qv=s(async t=>{let e=await $v(t);return`${Iu}${e.toString("base64")}`},"gzipToBase64"),Kv=s(async t=>{let e=t.startsWith(Iu)?t.slice(Iu.length):t,r=Buffer.from(e,"base64");return(await Vv(new Uint8Array(r))).toString("utf8")},"gunzipFromBase64");function Qv(t){let e=t.get("authorization");if(!e)return null;let r=e.match(/^Bearer\s+(.+)$/i);return r?r[1]:null}s(Qv,"getBearerToken");var $S=W(require("http")),VS=W(require("https"));var pp={};P(pp,{isBlacklisted:()=>fp,refreshBlacklist:()=>WS,resolveAddress:()=>wu});var kS=W(require("dns")),wr=W(require("net"));var MS=require("util");var jv=["127.0.0.0/8","10.0.0.0/8","172.16.0.0/12","192.168.0.0/16","100.64.0.0/10","169.254.0.0/16","0.0.0.0/8","::1/128","fc00::/7","fe80::/10"],lp,Hv=(0,MS.promisify)(kS.default.lookup);function FS(){return!(E.SELF_HOSTED&&E.BLACKLIST_IPS!==void 0)}s(FS,"shouldApplyDefaultBlacklist");function dp(t){return wr.default.isIP(t)===6?"ipv6":"ipv4"}s(dp,"getIpVersion");function Yv(t){let e=wr.default.isIP(t);return e===4?32:e===6?128:null}s(Yv,"getMaxPrefixLength");function zv(t,e){if(!/^\d+$/.test(e))return null;let r=Number.parseInt(e,10),n=Yv(t);return n==null||r>n?null:r}s(zv,"getValidSubnetPrefix");function Jv(t){return wr.default.isIP(t)?t:(/^https?:\/\//.test(t)||(t=`https://${t}`),new URL(t).hostname.replace(/^\[|\]$/g,""))}s(Jv,"parseAddress");async function BS(t){return t=Jv(t),(await Hv(t,{all:!0})).map(r=>r.address)}s(BS,"lookup");async function wu(t){return wr.default.isIP(t)?[t]:BS(t)}s(wu,"resolveAddress");function cp(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=zv(i,o);if(a&&u!==null){t.addSubnet(i,u,dp(i));return}console.log(`Ignoring invalid blacklist entry: ${r}`);return}a&&t.addAddress(i,dp(i))}s(cp,"addEntryToBlacklist");async function WS(){let t=new wr.default.BlockList;if(FS())for(let r of jv)cp(t,r);let e=E.BLACKLIST_IPS?.split(",")||[];for(let r of e){let n=r.trim();if(!n)continue;let[i]=n.split("/");if(wr.default.isIP(i)){cp(t,n);continue}let o=await BS(n);for(let a of o)cp(t,a)}lp=t}s(WS,"refreshBlacklist");async function fp(t){lp||await WS();let e;try{e=await wu(t)}catch(r){return r instanceof TypeError?(console.error("Black list error: could not parse address: ",t),!0):FS()}return e.some(r=>lp.check(r,dp(r)))}s(fp,"isBlacklisted");var Ru=W(require("node-fetch"));var GS=5,Xv=new Set(["http:","https:"]),Zv=["authorization","cookie","cookie2","proxy-authorization"];function mp(t){let e;try{e=new URL(t)}catch{throw new Error("Invalid URL.")}if(!Xv.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(mp,"parseUrl");function eN(t){return[301,302,303,307,308].includes(t)}s(eN,"isRedirect");async function tN(t){let e=mp(t),r=await wu(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 fp(n))throw new Error("URL is blocked or could not be resolved safely.");return r[0]}s(tN,"resolveSafePinnedIp");function qS(t){let e=t.includes(":")?6:4;return(r,n,i)=>{if(typeof n=="object"&&n?.all){i(null,[{address:t,family:e}]);return}i(null,t,e)}}s(qS,"createPinnedLookup");function rN(t,e){let r=new URL(t).protocol,n=qS(e);return r==="https:"?new VS.default.Agent({lookup:n}):new $S.default.Agent({lookup:n})}s(rN,"makePinnedAgent");function nN(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(nN,"nextRequestForRedirect");function iN(t,e){return new URL(t).origin!==new URL(e).origin}s(iN,"shouldStripSensitiveHeadersForRedirect");function sN(t){if(!t.headers)return t;let e=new Ru.Headers(t.headers);return Zv.forEach(r=>e.delete(r)),{...t,headers:e}}s(sN,"stripSensitiveHeadersForRedirect");function oN(t){return!t||typeof t!="object"||!("resume"in t)?!1:typeof t.resume=="function"}s(oN,"isResumableBody");function aN(t){let e=t.body;oN(e)&&e.resume()}s(aN,"releaseResponseBody");async function li(t,e={},{followRedirects:r=!0,returnRedirectWithoutLocation:n=!1,rejectCrossOriginRedirects:i=!1,fetchFn:o=Ru.default}={}){let a=t,u={...e,redirect:"manual"};for(let c=0;c<=GS;c++){let l=await tN(a),d;try{d=await o(a,{...u,agent:rN(a,l)},l)}catch(m){let y=mp(a).hostname;throw m instanceof Error?(m.message=`Failed to connect to resolved IP for ${y}: ${m.message}`,m):new Error(`Failed to connect to resolved IP for ${y}: unknown network error`)}if(!eN(d.status))return d;if(aN(d),!r)throw new Error("Redirects are not permitted.");if(c===GS)break;let f=d.headers.get("location");if(!f){if(n)return d;throw new Error("Maximum redirect reached.")}let g=mp(new URL(f,a).toString()).toString();if(u=nN(u,d.status),iN(a,g)){if(i)throw new Error("Redirect to a different origin is not permitted.");u=sN(u)}a=g}throw new Error("Maximum redirect reached.")}s(li,"fetchWithBlacklist");var uN=s((t,e)=>`datasource:creation:${t}:microsoft:${e}`,"microsoftDatasourceCreationCacheKey");function cN(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(cN,"jobToJobInformation");var Cu=class{static{s(this,"InMemoryQueue")}constructor(e,r){this._name=e,this._opts=r,this._messages=[],this._emitter=new KS.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,g)=>{f?l(f):c(g)},"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 ke.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((g,m)=>{g.id===o&&(this._emitter.off("error",d),this._emitter.off("completed",f),l(m))},"errorHandler"),f=s((g,m)=>{g.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}async getJobs(){return this._messages}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=>cN(e))}async whenCurrentJobsFinished(){do await ip(50);while(this.hasRunningJobs())}hasRunningJobs(){return this._addCount>this._runCount}},QS=Cu;var Ep=W(require("bull"));var fi=(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))(fi||{});function jS(t,e,r){fN(t,e),r&&lN(t,r)}s(jS,"addListeners");function lN(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(lN,"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 dN={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 fN(t,e){let r=dN[e];function n(i,o){let a=i.data.event?.appId;if(a)return vf(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(fN,"logging");var Du={};P(Du,{cleanup:()=>pN,clear:()=>gp,set:()=>hp});var Zs=[];function hp(t,e){let r=setInterval(t,e);return Zs.push(r),r}s(hp,"set");function gp(t){let e=Zs.indexOf(t);e!==-1&&Zs.splice(e,1),clearInterval(t)}s(gp,"clear");function pN(){for(let t of Zs)clearInterval(t);Zs=[]}s(pN,"cleanup");var Xt=W(require("dd-trace")),eo=W(require("object-sizeof"));var mN=me.fromMinutes(5).toMs(),hN=me.fromSeconds(30).toMs(),yp=me.fromSeconds(60).toMs(),to=[],bu;async function HS(){for(let t of to)await t.clean(yp,"completed"),await t.clean(yp,"failed")}s(HS,"cleanup");async function gN(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(gN,"withMetrics");function YS(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(YS,"jobOptsTags");function EN(t){return{"job.id":t.id,"job.attemptsMade":t.attemptsMade,"job.timestamp":t.timestamp,"job.data.sizeBytes":(0,eo.default)(t.data),...YS(t.opts||{})}}s(EN,"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:un(),settings:{maxStalledCount:this.opts.maxStalledCount?this.opts.maxStalledCount:0,lockDuration:mN,lockRenewTime:hN}};this.opts.jobOptions&&(r.defaultJobOptions=this.opts.jobOptions);let n;return E.isTest()?process.env.BULL_TEST_REDIS_PORT&&!isNaN(+process.env.BULL_TEST_REDIS_PORT)?n=new Ep.default(this.jobQueue,{...r,redis:{host:"localhost",port:+process.env.BULL_TEST_REDIS_PORT}}):n=new QS(this.jobQueue,r):n=new Ep.default(this.jobQueue,r),jS(n,this.jobQueue,this.opts.removeStalledCb),to.push(n),!bu&&!E.isTest()&&(bu=hp(HS,yp),HS().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,...EN(a)}),this.opts.jobTags&&c.addTags(this.opts.jobTags(a.data)),Xt.default.dogstatsd.distribution("queue.process.sizeBytes",(0,eo.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,eo.default)(e),...YS(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,eo.default)(e),this.metricTags()),await this.withMetrics("queue.add",()=>this.queue.add(e,r))))}withMetrics(e,r){return gN(e,r,this.metricTags())}metricTags(){return{queueName:this.jobQueue}}close(e){return this.queue.close(e)}whenCurrentJobsFinished(){return this.queue.whenCurrentJobsFinished()}};async function yN(){bu&&gp(bu),console.log("Waiting for current queue jobs to finish...");for(let t of to)await t.whenCurrentJobsFinished();console.log("Closing queue Redis connections...");for(let t of to)await t.close();to=[],console.log("Queues shutdown")}s(yN,"shutdown");var uo={};P(uo,{correlation:()=>ro,logAlert:()=>gn,logAlertWithInfo:()=>rP,logWarn:()=>hi,logger:()=>Mu,system:()=>Np});var ro={};P(ro,{getId:()=>Tp,setHeader:()=>TN});var zS=require("correlation-id"),TN=s(t=>{let e=zS.getId();e&&(t["x-budibase-correlation-id"]=e)},"setHeader");function Tp(){return zS.getId()}s(Tp,"getId");var ku=W(require("pino")),CA=W(require("pino-pretty")),Pp=W(require("dd-trace")),DA=require("dd-trace/ext");var Np={};P(Np,{getLogReadStream:()=>zN,getSingleFileMaxSizeInfo:()=>RA,localFileDestination:()=>vp});var ao=W(require("fs")),xp=W(require("path")),_A=W(require("rotating-file-stream"));var bp={};P(bp,{ObjectStore:()=>at,ObjectStoreBuckets:()=>AN,SIGNED_FILE_PREFIX:()=>wp,bucketTTLConfig:()=>xu,budibaseTempDir:()=>mn,client3rdPartyLibrary:()=>VN,clientLibraryPath:()=>$N,clientLibraryUrl:()=>qN,createBucketIfNotExists:()=>oo,deleteFile:()=>PN,deleteFiles:()=>LN,deleteFolder:()=>lA,downloadTarball:()=>kN,downloadTarballDirect:()=>UN,enrichPWAImages:()=>KN,enrichPluginURLs:()=>jN,extractBucketAndPath:()=>Sp,getAllFiles:()=>xN,getAppFileUrl:()=>mA,getClientCacheKey:()=>pA,getGlobalFileS3Key:()=>hA,getGlobalFileUrl:()=>QN,getObjectMetadata:()=>MN,getPluginIconKey:()=>yA,getPluginJSKey:()=>EA,getPluginS3Dir:()=>SA,getPresignedUrl:()=>hn,getReadStream:()=>vu,getSafeRetrieveDirectoryPath:()=>cA,listAllObjects:()=>Rp,objectExists:()=>FN,processAutomationAttachment:()=>ON,processObjectStoreAttachment:()=>tA,retrieve:()=>uA,retrieveDirectory:()=>NN,retrieveToTmp:()=>vN,sanitizeBucket:()=>xe,sanitizeKey:()=>Ee,streamUpload:()=>aA,streamUploadMany:()=>bN,upload:()=>DN,uploadDirectory:()=>Cp});var Pu=require("@aws-sdk/client-s3"),Ap=require("@aws-sdk/lib-storage"),rA=require("@aws-sdk/s3-request-presigner"),nA=require("@smithy/node-http-handler");var Zt=W(require("dd-trace")),pi=W(require("fs")),io=W(require("fs/promises")),iA=W(require("https")),Ye=require("path"),Lu=W(require("stream")),so=require("stream/promises"),_p=W(require("tar-fs")),Op=require("uuid"),Ip=W(require("zlib"));var JS=W(require("fs")),XS=require("os"),no=W(require("path")),ZS=W(require("stream"));var AN={BACKUPS:E.BACKUPS_BUCKET_NAME,APPS:E.APPS_BUCKET_NAME,TEMPLATES:E.TEMPLATES_BUCKET_NAME,GLOBAL:E.GLOBAL_BUCKET_NAME,PLUGINS:E.PLUGIN_BUCKET_NAME,TEMP:E.TEMP_BUCKET_NAME},eA=(0,no.join)((0,XS.tmpdir)(),".budibase");try{JS.default.mkdirSync(eA)}catch(t){if(t.code!=="EEXIST")throw t}function mn(){return eA}s(mn,"budibaseTempDir");var xu=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 _N(t){let e=await li(t.url);if(!e.ok||!e.body)throw new Error(`Unexpected response ${e.statusText}`);let r=no.default.basename(new URL(t.url).pathname);if(!e.body)throw new Error("No response received for attachment");if(!(e.body instanceof ZS.default.Readable))throw new Error("Unexpected response body stream type");return{filename:t.filename||r,content:e.body}}s(_N,"processUrlAttachment");async function tA(t){let e=Sp(t.url);if(e===null)throw new Error("Invalid signed URL");let{bucket:r,path:n}=e,{stream:i}=await vu(r,n),o=no.default.basename(n);return{bucket:r,path:n,filename:t.filename||o,content:i}}s(tA,"processObjectStoreAttachment");async function ON(t){return t.url?.startsWith("http://")||t.url?.startsWith("https://")?await _N(t):await tA(t)}s(ON,"processAutomationAttachment");var IN=require("sanitize-s3-objectkey"),wN={bucketCreationPromises:{}},wp="/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"},RN=[Rr.html,Rr.css,Rr.js,Rr.json];function Ee(t){let e=IN(xe(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 xe(t){return t.replace(new RegExp(nt,"g"),rt)}s(xe,"sanitizeBucket");function at(t={presigning:!1}){let e={forcePathStyle:!0,credentials:{accessKeyId:E.MINIO_ACCESS_KEY,secretAccessKey:E.MINIO_SECRET_KEY},region:E.AWS_REGION};if(!E.MINIO_ENABLED&&E.AWS_SESSION_TOKEN&&(e.credentials={accessKeyId:E.MINIO_ACCESS_KEY,secretAccessKey:E.MINIO_SECRET_KEY,sessionToken:E.AWS_SESSION_TOKEN}),E.MINIO_URL&&(t.presigning&&E.MINIO_ENABLED?e.endpoint="http://minio-service":e.endpoint=E.MINIO_URL),E.S3_IGNORE_SELF_SIGNED==="true"){let r=new iA.default.Agent({rejectUnauthorized:!1});e.requestHandler=new nA.NodeHttpHandler({httpsAgent:r})}return new Pu.S3(e)}s(at,"ObjectStore");async function oo(t,e){e=xe(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=wN.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(oo,"createBucketIfNotExists");var CN=s((t,e)=>{if(e)return e;let r=t.split(".").pop();return r?Rr[r.toLowerCase()]:Rr.txt},"resolveContentType"),sA=s(async(t,e,r)=>{let n=xe(t),i=at(),o=await oo(i,n);if(r.addTags({bucketCreated:o.created,bucketExists:o.exists}),e&&o.created){let a=xu(n,e);await i.putBucketLifecycleConfiguration(a)}return{bucket:n,client:i,bucketCreated:o}},"initialiseBucket"),oA=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=CN(r,i),u=Ee(r),c={Bucket:e,Key:u,Body:n,ContentType:a,...o??{}};return{details:await new Ap.Upload({client:t,params:c}).done(),contentType:a}},"streamUploadInternal");async function DN({bucket:t,filename:e,path:r,type:n,metadata:i,body:o,ttl:a}){let u=e.split(".").pop(),c=r?(await io.default.open(r)).createReadStream():o,l=at(),d=await oo(l,t);if(a&&d.created){let h=xu(t,a);await l.putBucketLifecycleConfiguration(h)}let f=n,g=f||(u?Rr[u.toLowerCase()]:Rr.txt),m={Bucket:xe(t),Key:Ee(e),Body:c,ContentType:g};if(i&&typeof i=="object"){for(let h of Object.keys(i))(!i[h]||typeof i[h]!="string")&&delete i[h];m.Metadata=i}return new Ap.Upload({client:l,params:m}).done()}s(DN,"upload");async function aA({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 sA(t,o,a),{details:d,contentType:f}=await oA({client:l,bucket:c,filename:r,stream:e,type:n,extra:i}),g=await l.headObject({Bucket:c,Key:Ee(r)});return a.addTags({contentType:f,contentLength:g.ContentLength}),{...d,ContentLength:g.ContentLength}})}s(aA,"streamUpload");async function bN({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 sA(t,r,i),u=e.map((l,d)=>({...l,index:d})),c=new Array(e.length);return await wt.parallelForeach(u,async l=>{let{details:d}=await oA({client:a,bucket:o,filename:l.filename,stream:l.stream,type:l.type,extra:l.extra});c[l.index]=d},10),c})}s(bN,"streamUploadMany");async function uA(t,e){return await Zt.default.trace("retrieve",async r=>{r.addTags({bucketName:t,filepath:e});let n=at(),i={Bucket:xe(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}),RN.includes(o.ContentType))return r.addTags({string:!0}),o.Body.transformToString();{r.addTags({string:!1});let a=o.Body.transformToWebStream();return Lu.default.Readable.fromWeb(a)}})}s(uA,"retrieve");async function*Rp(t,e){let r=at(),n=s((a={})=>r.listObjectsV2({...a,Bucket:xe(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(Rp,"listAllObjects");async function xN(t,e){let r={};return await wt.parallelForeach(Rp(t,e),async n=>{if(!n.Key)throw new Error("file.Key must be defined");r[n.Key]=n},5),r}s(xN,"getAllFiles");async function hn(t,e,r=3600){let n=at({presigning:!0}),i={Bucket:xe(t),Key:Ee(e)},o=await(0,rA.getSignedUrl)(n,new Pu.GetObjectCommand(i),{expiresIn:r});if(E.MINIO_ENABLED){let a=new URL(o),u=a.pathname,c=a.search;return`${wp}${u}${c}`}else return o}s(hn,"getPresignedUrl");async function vN(t,e){return await Zt.default.trace("retrieveToTmp",async r=>{r.addTags({bucketName:t,filepath:e}),t=xe(t),e=Ee(e);let n=await uA(t,e),i=(0,Ye.join)(mn(),(0,Op.v4)());return r.addTags({outputPath:i}),n instanceof Lu.default.Readable?(r.addTags({stream:!0}),await(0,so.pipeline)(n,pi.default.createWriteStream(i))):(r.addTags({stream:!1}),pi.default.writeFileSync(i,n)),i})}s(vN,"retrieveToTmp");async function NN(t,e,r){return await Zt.default.trace("retrieveDirectory",async n=>{n.addTags({bucketName:t,path:e});let i=(0,Ye.join)(mn(),(0,Op.v4)());await io.default.mkdir(i,{recursive:!0});let o=0;return await wt.parallelForeach(Rp(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=cA(i,l);if(!d){c.addTags({skippedUnsafePath:!0});return}let{stream:f}=await vu(t,l);pi.default.existsSync(d.dir)||await io.default.mkdir(d.dir,{recursive:!0}),await(0,so.pipeline)(f,pi.default.createWriteStream(d.path,{mode:420}))}))},5),n.addTags({numObjects:o}),i})}s(NN,"retrieveDirectory");function cA(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(cA,"getSafeRetrieveDirectoryPath");async function PN(t,e){let r=at();await oo(r,t);let n={Bucket:t,Key:Ee(e)};return r.deleteObject(n)}s(PN,"deleteFile");async function LN(t,e){let r=at();await oo(r,t);let n={Bucket:t,Delete:{Objects:e.map(i=>({Key:Ee(i)}))}};return r.deleteObjects(n)}s(LN,"deleteFiles");async function lA(t,e){t=xe(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 lA(t,e)}s(lA,"deleteFolder");async function Cp(t,e,r){return await Zt.default.trace("uploadDirectory",async n=>{n.addTags({bucketName:t,localPath:e,bucketPath:r}),t=xe(t);let i=await io.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 Cp(t,u,a):await aA({bucket:t,filename:a,stream:pi.default.createReadStream(u)})}return i})}s(Cp,"uploadDirectory");async function UN(t,e,r={},{followRedirects:n=!0}={}){e=Ee(e);let i=await li(t,{headers:r},{followRedirects:n});if(!i.ok)throw new Error(`unexpected response ${i.statusText}`);await(0,so.pipeline)(i.body,Ip.default.createUnzip(),_p.default.extract(e))}s(UN,"downloadTarballDirect");async function kN(t,e,r){e=xe(e),r=Ee(r);let n=await li(t);if(!n.ok)throw new Error(`unexpected response ${n.statusText}`);let i=(0,Ye.join)(mn(),r);return await(0,so.pipeline)(n.body,Ip.default.createUnzip(),_p.default.extract(i)),!E.isTest()&&E.SELF_HOSTED&&await Cp(e,i,r),i}s(kN,"downloadTarball");async function vu(t,e){return await Zt.default.trace("getReadStream",async r=>{t=xe(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 Lu.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(vu,"getReadStream");async function MN(t,e){t=xe(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(MN,"getObjectMetadata");async function FN(t,e){t=xe(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(FN,"objectExists");function Sp(t){let e=t.split("?")[0],r=new RegExp(`^${wp}/(?<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(Sp,"extractBucketAndPath");var fA=W(require("querystring"));var dA=W(require("aws-cloudfront-sign"));var Uu;function BN(){if(!E.CLOUDFRONT_PRIVATE_KEY_64)throw new Error("CLOUDFRONT_PRIVATE_KEY_64 is not set");return Uu||(Uu=Buffer.from(E.CLOUDFRONT_PRIVATE_KEY_64,"base64").toString("utf-8"),Uu)}s(BN,"getPrivateKey");var WN=s(()=>({keypairId:E.CLOUDFRONT_PUBLIC_KEY_ID,privateKeyString:BN(),expireTime:new Date().getTime()+1e3*60*60*24}),"getCloudfrontSignParams"),mi=s(t=>{let e=GN(t);return dA.getSignedUrl(e,WN())},"getPresignedUrl"),GN=s(t=>{let e="/";return t.startsWith("/")&&(e=""),`${E.CLOUDFRONT_CDN}${e}${t}`},"getUrl");function $N(t){return`${Ee(t)}/budibase-client.js`}s($N,"clientLibraryPath");function VN(t,e){return`${Ee(t)}/${e}`}s(VN,"client3rdPartyLibrary");async function qN(t,e){return`/api/assets/${t}/client?${await pA(e)}`}s(qN,"clientLibraryUrl");async function pA(t){let e,r;try{e=V()}finally{r={version:t}}return e&&e!==ce&&(r.tenantId=e),fA.default.encode(r)}s(pA,"getClientCacheKey");async function mA(t){return E.CLOUDFRONT_CDN?mi(t):await hn(E.APPS_BUCKET_NAME,t)}s(mA,"getAppFileUrl");async function KN(t){if(t.length===0)return[];try{return await Promise.all(t.map(async e=>({...e,src:await mA(e.src),type:e.type||"image/png"})))}catch(e){return console.error("Error enriching PWA images:",e),t}}s(KN,"enrichPWAImages");var QN=s(async(t,e,r)=>{let n=hA(t,e);return E.CLOUDFRONT_CDN?(r&&(n=`${n}?etag=${r}`),mi(n)):await hn(E.GLOBAL_BUCKET_NAME,n)},"getGlobalFileUrl"),hA=s((t,e)=>{let r=`${t}/${e}`;return E.MULTI_TENANCY&&(r=`${V()}/${r}`),r},"getGlobalFileS3Key");async function jN(t){return!t||!t.length?[]:await Promise.all(t.map(async e=>{let r=await HN(e),n=await YN(e);return{...e,jsUrl:r,iconUrl:n}}))}s(jN,"enrichPluginURLs");async function HN(t){let e=EA(t);return gA(e)}s(HN,"getPluginJSUrl");async function YN(t){let e=yA(t);if(e)return gA(e)}s(YN,"getPluginIconUrl");async function gA(t){return E.CLOUDFRONT_CDN?mi(t):await hn(E.PLUGIN_BUCKET_NAME,t)}s(gA,"getPluginUrl");function EA(t){return TA(t,"plugin.min.js")}s(EA,"getPluginJSKey");function yA(t){let e=t.iconUrl?"icon.svg":t.iconFileName;if(e)return TA(t,e)}s(yA,"getPluginIconKey");function TA(t,e){return`${SA(t.name)}/${e}`}s(TA,"getPluginS3Key");function SA(t){let e=`${t}`;return E.MULTI_TENANCY&&(e=`${V()}/${e}`),E.CLOUDFRONT_CDN&&(e=`plugins/${e}`),e}s(SA,"getPluginS3Dir");var OA="budibase.log",IA="budibase-logs-history.txt",wA=xp.default.join(mn(),"systemlogs");function AA(t){return xp.default.join(wA,t)}s(AA,"getFullPath");function RA(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(RA,"getSingleFileMaxSizeInfo");function vp(){let t=RA(E.ROLLING_LOG_MAX_SIZE);return _A.createStream(OA,{size:t?.size,path:wA,maxFiles:t?.totalHistoryFiles||1,immutable:!0,history:IA,initialRotation:!1})}s(vp,"localFileDestination");function zN(){let t=[],e=AA(IA);if(ao.default.existsSync(e)){let i=ao.default.readFileSync(e,"utf-8").split(`
|
|
36
|
+
}`,"platform_users_lowercase_2")},"createPlatformUserView"),js=s(async(t,e)=>{let r={account_by_email:IS,platform_users_lowercase_2:wS};return je(pe.PLATFORM_INFO.name,async n=>{let i=r[t];return Jf(t,e,n,i,{arrayResponse:!0})})},"queryPlatformView"),RS={by_email2:SS,by_api_key:_S,by_app:AS},Ht=s(async(t,e,r,n)=>{r||(r=z());let i=RS[t];return Jf(t,e,r,i,n)},"queryGlobalView");async function Hs(t,e,r){let n=z(),i=RS[t];return Qs(t,e,n,i,r)}s(Hs,"queryGlobalViewRaw");var Ev=W(require("pouchdb"));var CS=require("dd-trace");var Xf=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([Ms(this.source),Ms(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 CS.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,g)=>f?.startsWith(g+"_"),"startsWithID"),d=s(f=>l(f,"ro")||l(f,"li"),"isData");return{...e,filter:s((f,g)=>!o&&f._id==="_design/migrations"||i&&f._id.startsWith("_design")?!1:f._deleted||l(f._id,xs)?!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,g):!0,"filter")}}async rollback(){await this.target.destroy(),this.target=it(this.target.name),await this.replicate()}},DS=Xf;var xS=W(require("node-fetch"));var Ys=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=Ys(o);r[a]?r[a]=r[a].concat(e[o]):r[a]=e[o]}let n={},i=1;for(let[o,a]of Object.entries(r))n[`${i++}:${o}`]=a;return n}buildSearchQuery(){let e=this,r=this.#e&&this.#e.allOr,n=r?"":"*:*",i=!0,o={escape:!0,lowercase:!0,wrap:!0},a="";this.#e.equal.tableId&&(a=this.#e.equal.tableId,delete this.#e.equal.tableId);let u=s((h,p)=>Or(p)?null:`${h}:${e.preprocess(p,o)}`,"equal"),c=s((h,p,T="AND")=>{if(Or(p))return null;if(!Array.isArray(p))return`${h}:${p}`;let A=`${e.preprocess(p[0],{escape:!0})}`;for(let _=1;_<p.length;_++)A+=` ${T} ${e.preprocess(p[_],{escape:!0})}`;return`${h}:(${A})`},"contains"),l=s((h,p)=>Or(p)?null:(p=e.preprocess(p,{escape:!0,lowercase:!0,type:"fuzzy"}),`${h}:/.*${p}.*/`),"fuzzy"),d=s((h,p)=>{let T=r?"*:* AND ":"",A=r?"AND":void 0;return T+"NOT "+c(h,p,A)},"notContains"),f=s((h,p)=>c(h,p,"OR"),"containsAny"),g=s((h,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`${h}:(${T})`},"oneOf"),m=s((h,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`(*:* -${h}:(${T}))`},"notOneOf");function y(h,p,T){let A="";for(let[_,I]of Object.entries(h)){_=Ys(_),_=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,(h,p)=>Or(p)?null:(p=e.preprocess(p,{escape:!0,lowercase:!0,type:"string"}),`${h}:${p}*`)),this.#e.range&&y(this.#e.range,(h,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`${h}:[${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,(h,p)=>Or(p)?null:typeof p=="boolean"?`(*:* AND !${h}:${p})`:`!${h}:${e.preprocess(p,o)}`),this.#e.empty&&y(this.#e.empty,h=>(i=!1,`(*:* -${h}:["" TO *])`)),this.#e.notEmpty&&y(this.#e.notEmpty,h=>(i=!1,`${h}:["" TO *]`)),this.#e.oneOf&&y(this.#e.oneOf,g),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}=vt(),n=`${e}/${this.#l}/_design/database/_search/${this.#d}`,i=this.buildSearchBody();try{return await bS(n,i,r)}catch(o){if(o.status===404&&this.#a)return await this.#a(),await bS(n,i,r);throw o}}};async function bS(t,e,r){let n=await(0,xS.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(bS,"runQuery");async function vS(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 vS(t,e,r,l)}s(vS,"recursiveSearch");async function yv(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(yv,"paginatedSearch");async function Tv(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 vS(t,e,r,n)}}s(Tv,"fullSearch");var Zf={};P(Zf,{createUserIndex:()=>Sv});async function Sv(){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(Sv,"createUserIndex");function NS(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(NS,"checkErrorCode");function Av(t){return NS(t,409)}s(Av,"isDocumentConflictError");var Js={};P(Js,{addTenantToUrl:()=>_v,getTenantDB:()=>ep,getTenantIDFromCtx:()=>zs,isUserInWorkspaceTenant:()=>Ov});function ep(t){return De(ln(t))}s(ep,"getTenantDB");function _v(t){let e=V();if(Sr()){let r=t.indexOf("?")===-1?"?":"&";t+=`${r}tenantId=${e}`}return t}s(_v,"addTenantToUrl");var Ov=s((t,e)=>{let r;return e?r=e.tenantId||ce:r=V(),(ni(t)||ce)===r},"isUserInWorkspaceTenant"),Iv=Object.values(Ui),zs=s((t,e)=>{if(!Sr())return ce;e.allowNoTenant===void 0&&(e.allowNoTenant=!1),e.includeStrategies||(e.includeStrategies=Iv),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(xf()).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 Tu={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/Tu[e]}toMs(){return this.ms}toSeconds(){return this.to("seconds")}static convert(e,r,n){return n*Tu[e]/Tu[r]}static from(e,r){return new t(r*Tu[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 Su(){let t=me.fromDays(7).toSeconds();if(!E.SESSION_EXPIRY_SECONDS)return t;let e=parseInt(E.SESSION_EXPIRY_SECONDS);return Number.isFinite(e)&&e>0?e:t}s(Su,"getSessionExpirySeconds");function tp(){return new Date(Date.now()+Su()*1e3)}s(tp,"getSessionExpiryDate");var rp="app_",PS="/app/",LS="/app-chat/";async function wv(t){let r=t.path.split("/")[2];if(!r)return;let n=`/${r.toLowerCase()}`,i=V();!E.isDev()&&E.MULTI_TENANCY&&(i=zs(t,{includeStrategies:["subdomain"]}));let a=(await be(i,()=>Ks({dev:!1}))).filter(u=>u.url&&u.url.toLowerCase()===n)[0];return a&&a.appId?a.appId:void 0}s(wv,"resolveAppUrl");function Rv(t){return t.path.startsWith(`/${rp}`)?!0:t.path.startsWith(PS)||t.path.startsWith(LS)}s(Rv,"isServingApp");function Cv(t){return t.path.startsWith("/builder/workspace/")}s(Cv,"isServingBuilder");function Dv(t){return US(t.path)}s(Dv,"isServingBuilderPreview");function US(t){return new RegExp(/^\/app\/app_\w+\/preview$/).test(t)}s(US,"isBuilderPreviewUrl");function bv(t){return t.path.startsWith("/api/public/v")}s(bv,"isPublicApiRequest");async function pn(t){let e;function r(u){u&&u.startsWith(rp)&&(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=xv(t.path);r(i),n(t.query?.appId);let o=US(t.path);return(t.path.startsWith(PS)||t.path.startsWith(LS))&&!o&&r(await wv(t)),e}s(pn,"getWorkspaceIdFromCtx");function xv(t){if(t)return t.split("?")[0].split("/").find(e=>e.startsWith(rp))}s(xv,"parseWorkspaceIdFromUrlPath");function _u(t){if(t)try{return Au.default.verify(t,E.JWT_SECRET)}catch(e){if(E.JWT_SECRET_FALLBACK)return Au.default.verify(t,E.JWT_SECRET_FALLBACK);throw e}}s(_u,"openJwt");function Xs(t){return E.INTERNAL_API_KEY&&E.INTERNAL_API_KEY===t?!0:!!(E.INTERNAL_API_KEY_FALLBACK&&E.INTERNAL_API_KEY_FALLBACK===t)}s(Xs,"isValidInternalAPIKey");function zt(t,e){let r=t.cookies.get(e);if(r)return _u(r)}s(zt,"getCookie");function np(t,e,r="builder",n={sign:!0}){e&&n&&n.sign&&(e=Au.default.sign(e,E.JWT_SECRET));let i=n.sameSite,o=n.secure??t.secure;i==="none"&&(o?o=!0:i="lax");let a={expires:n.expires??qa,path:"/",httpOnly:n.httpOnly??!1,secure:o,overwrite:!0};i&&(a.sameSite=i),E.COOKIE_DOMAIN&&(a.domain=E.COOKIE_DOMAIN),t.cookies.set(r,e,a)}s(np,"setCookie");function vv(t,e){np(t,e,"budibase:auth",{sign:!1,httpOnly:!0,expires:tp()})}s(vv,"setAuthCookie");function Jt(t,e){np(t,null,e)}s(Jt,"clearCookie");function Nv(t){return t.headers["x-budibase-type"]==="client"}s(Nv,"isClient");function ip(t){return new Promise(e=>setTimeout(e,t))}s(ip,"timeout");function sp(t){return!!hh[t]}s(sp,"isAudited");function Pv(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(Pv,"hasCircularStructure");function Lv(t){return!!t.match(/^.+:\/\/.+$/)}s(Lv,"urlHasProtocol");function op(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(op,"validEmail");async function Uv(t){let e=performance.now();return[await t(),me.fromMilliseconds(performance.now()-e)]}s(Uv,"time");var Ou=require("undici");function kv(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 g=c.slice(1);d=r===g.slice(1)||r.endsWith(g)}else d=r===c;if(d&&(!l||n===l))return!0}return!1}s(kv,"isUrlMatchingNoProxy");function Mv(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&&kv(t,i))return console.log("[fetch] URL matches NO_PROXY pattern, bypassing proxy",{url:t,noProxy:i}),!0}return!1}s(Mv,"shouldBypassProxy");function Fv(t,e){return new Ou.Agent({connect:{rejectUnauthorized:t,...e?{lookup:e}:{}}})}s(Fv,"createDirectAgent");function Bv(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 Ou.ProxyAgent(i)}s(Bv,"createProxyAgent");function Wv(t){let e=t?.rejectUnauthorized??!0;return Mv(t?.url)?Fv(e,t?.lookup):(t?.lookup&&console.log("[fetch] Proxy configured; IP pinning is not applied to proxied requests"),Bv(e))}s(Wv,"createDispatcher");function Gv(t){return Wv(t)}s(Gv,"getDispatcher");var ap=require("util"),up=W(require("zlib"));var $v=(0,ap.promisify)(up.default.gzip),Vv=(0,ap.promisify)(up.default.gunzip),Iu="gzip:",qv=s(async t=>{let e=await $v(t);return`${Iu}${e.toString("base64")}`},"gzipToBase64"),Kv=s(async t=>{let e=t.startsWith(Iu)?t.slice(Iu.length):t,r=Buffer.from(e,"base64");return(await Vv(new Uint8Array(r))).toString("utf8")},"gunzipFromBase64");function Qv(t){let e=t.get("authorization");if(!e)return null;let r=e.match(/^Bearer\s+(.+)$/i);return r?r[1]:null}s(Qv,"getBearerToken");var $S=W(require("http")),VS=W(require("https"));var pp={};P(pp,{isBlacklisted:()=>fp,refreshBlacklist:()=>WS,resolveAddress:()=>wu});var kS=W(require("dns")),wr=W(require("net"));var MS=require("util");var jv=["127.0.0.0/8","10.0.0.0/8","172.16.0.0/12","192.168.0.0/16","100.64.0.0/10","169.254.0.0/16","0.0.0.0/8","::1/128","fc00::/7","fe80::/10"],lp,Hv=(0,MS.promisify)(kS.default.lookup);function FS(){return!(E.SELF_HOSTED&&E.BLACKLIST_IPS!==void 0)}s(FS,"shouldApplyDefaultBlacklist");function dp(t){return wr.default.isIP(t)===6?"ipv6":"ipv4"}s(dp,"getIpVersion");function Yv(t){let e=wr.default.isIP(t);return e===4?32:e===6?128:null}s(Yv,"getMaxPrefixLength");function zv(t,e){if(!/^\d+$/.test(e))return null;let r=Number.parseInt(e,10),n=Yv(t);return n==null||r>n?null:r}s(zv,"getValidSubnetPrefix");function Jv(t){return wr.default.isIP(t)?t:(/^https?:\/\//.test(t)||(t=`https://${t}`),new URL(t).hostname.replace(/^\[|\]$/g,""))}s(Jv,"parseAddress");async function BS(t){return t=Jv(t),(await Hv(t,{all:!0})).map(r=>r.address)}s(BS,"lookup");async function wu(t){return wr.default.isIP(t)?[t]:BS(t)}s(wu,"resolveAddress");function cp(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=zv(i,o);if(a&&u!==null){t.addSubnet(i,u,dp(i));return}console.log(`Ignoring invalid blacklist entry: ${r}`);return}a&&t.addAddress(i,dp(i))}s(cp,"addEntryToBlacklist");async function WS(){let t=new wr.default.BlockList;if(FS())for(let r of jv)cp(t,r);let e=E.BLACKLIST_IPS?.split(",")||[];for(let r of e){let n=r.trim();if(!n)continue;let[i]=n.split("/");if(wr.default.isIP(i)){cp(t,n);continue}let o=await BS(n);for(let a of o)cp(t,a)}lp=t}s(WS,"refreshBlacklist");async function fp(t){lp||await WS();let e;try{e=await wu(t)}catch(r){return r instanceof TypeError?(console.error("Black list error: could not parse address: ",t),!0):FS()}return e.some(r=>lp.check(r,dp(r)))}s(fp,"isBlacklisted");var Ru=W(require("node-fetch"));var GS=5,Xv=new Set(["http:","https:"]),Zv=["authorization","cookie","cookie2","proxy-authorization"];function mp(t){let e;try{e=new URL(t)}catch{throw new Error("Invalid URL.")}if(!Xv.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(mp,"parseUrl");function eN(t){return[301,302,303,307,308].includes(t)}s(eN,"isRedirect");async function tN(t){let e=mp(t),r=await wu(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 fp(n))throw new Error("URL is blocked or could not be resolved safely.");return r[0]}s(tN,"resolveSafePinnedIp");function qS(t){let e=t.includes(":")?6:4;return(r,n,i)=>{if(typeof n=="object"&&n?.all){i(null,[{address:t,family:e}]);return}i(null,t,e)}}s(qS,"createPinnedLookup");function rN(t,e){let r=new URL(t).protocol,n=qS(e);return r==="https:"?new VS.default.Agent({lookup:n}):new $S.default.Agent({lookup:n})}s(rN,"makePinnedAgent");function nN(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(nN,"nextRequestForRedirect");function iN(t,e){return new URL(t).origin!==new URL(e).origin}s(iN,"shouldStripSensitiveHeadersForRedirect");function sN(t){if(!t.headers)return t;let e=new Ru.Headers(t.headers);return Zv.forEach(r=>e.delete(r)),{...t,headers:e}}s(sN,"stripSensitiveHeadersForRedirect");function oN(t){return!t||typeof t!="object"||!("resume"in t)?!1:typeof t.resume=="function"}s(oN,"isResumableBody");function aN(t){let e=t.body;oN(e)&&e.resume()}s(aN,"releaseResponseBody");async function li(t,e={},{followRedirects:r=!0,returnRedirectWithoutLocation:n=!1,rejectCrossOriginRedirects:i=!1,fetchFn:o=Ru.default}={}){let a=t,u={...e,redirect:"manual"};for(let c=0;c<=GS;c++){let l=await tN(a),d;try{d=await o(a,{...u,agent:rN(a,l)},l)}catch(m){let y=mp(a).hostname;throw m instanceof Error?(m.message=`Failed to connect to resolved IP for ${y}: ${m.message}`,m):new Error(`Failed to connect to resolved IP for ${y}: unknown network error`)}if(!eN(d.status))return d;if(aN(d),!r)throw new Error("Redirects are not permitted.");if(c===GS)break;let f=d.headers.get("location");if(!f){if(n)return d;throw new Error("Maximum redirect reached.")}let g=mp(new URL(f,a).toString()).toString();if(u=nN(u,d.status),iN(a,g)){if(i)throw new Error("Redirect to a different origin is not permitted.");u=sN(u)}a=g}throw new Error("Maximum redirect reached.")}s(li,"fetchWithBlacklist");var uN=s((t,e)=>`datasource:creation:${t}:microsoft:${e}`,"microsoftDatasourceCreationCacheKey");function cN(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(cN,"jobToJobInformation");var Cu=class{static{s(this,"InMemoryQueue")}constructor(e,r){this._name=e,this._opts=r,this._messages=[],this._emitter=new KS.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,g)=>{f?l(f):c(g)},"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 ke.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((g,m)=>{g.id===o&&(this._emitter.off("error",d),this._emitter.off("completed",f),l(m))},"errorHandler"),f=s((g,m)=>{g.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}async getJobs(){return this._messages}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=>cN(e))}async whenCurrentJobsFinished(){do await ip(50);while(this.hasRunningJobs())}hasRunningJobs(){return this._addCount>this._runCount}},QS=Cu;var Ep=W(require("bull"));var fi=(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))(fi||{});function jS(t,e,r){fN(t,e),r&&lN(t,r)}s(jS,"addListeners");function lN(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(lN,"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 dN={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 fN(t,e){let r=dN[e];function n(i,o){let a=i.data.event?.appId;if(a)return vf(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(fN,"logging");var Du={};P(Du,{cleanup:()=>pN,clear:()=>gp,set:()=>hp});var Zs=[];function hp(t,e){let r=setInterval(t,e);return Zs.push(r),r}s(hp,"set");function gp(t){let e=Zs.indexOf(t);e!==-1&&Zs.splice(e,1),clearInterval(t)}s(gp,"clear");function pN(){for(let t of Zs)clearInterval(t);Zs=[]}s(pN,"cleanup");var Xt=W(require("dd-trace")),eo=W(require("object-sizeof"));var mN=me.fromMinutes(5).toMs(),hN=me.fromSeconds(30).toMs(),yp=me.fromSeconds(60).toMs(),to=[],bu;async function HS(){for(let t of to)await t.clean(yp,"completed"),await t.clean(yp,"failed")}s(HS,"cleanup");async function gN(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(gN,"withMetrics");function YS(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(YS,"jobOptsTags");function EN(t){return{"job.id":t.id,"job.attemptsMade":t.attemptsMade,"job.timestamp":t.timestamp,"job.data.sizeBytes":(0,eo.default)(t.data),...YS(t.opts||{})}}s(EN,"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:un(),settings:{maxStalledCount:this.opts.maxStalledCount?this.opts.maxStalledCount:0,lockDuration:mN,lockRenewTime:hN}};this.opts.jobOptions&&(r.defaultJobOptions=this.opts.jobOptions);let n;return E.isTest()?process.env.BULL_TEST_REDIS_PORT&&!isNaN(+process.env.BULL_TEST_REDIS_PORT)?n=new Ep.default(this.jobQueue,{...r,redis:{host:"localhost",port:+process.env.BULL_TEST_REDIS_PORT}}):n=new QS(this.jobQueue,r):n=new Ep.default(this.jobQueue,r),jS(n,this.jobQueue,this.opts.removeStalledCb),to.push(n),!bu&&!E.isTest()&&(bu=hp(HS,yp),HS().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({context:d})}c.addTags({"queue.name":this.jobQueue,...EN(a)}),this.opts.jobTags&&c.addTags(this.opts.jobTags(a.data)),Xt.default.dogstatsd.distribution("queue.process.sizeBytes",(0,eo.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,eo.default)(e),...YS(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,eo.default)(e),this.metricTags()),await this.withMetrics("queue.add",()=>this.queue.add(e,r))))}withMetrics(e,r){return gN(e,r,this.metricTags())}metricTags(){return{queueName:this.jobQueue}}close(e){return this.queue.close(e)}whenCurrentJobsFinished(){return this.queue.whenCurrentJobsFinished()}};async function yN(){bu&&gp(bu),console.log("Waiting for current queue jobs to finish...");for(let t of to)await t.whenCurrentJobsFinished();console.log("Closing queue Redis connections...");for(let t of to)await t.close();to=[],console.log("Queues shutdown")}s(yN,"shutdown");var uo={};P(uo,{correlation:()=>ro,logAlert:()=>gn,logAlertWithInfo:()=>rP,logWarn:()=>hi,logger:()=>Mu,system:()=>Np});var ro={};P(ro,{getId:()=>Tp,setHeader:()=>TN});var zS=require("correlation-id"),TN=s(t=>{let e=zS.getId();e&&(t["x-budibase-correlation-id"]=e)},"setHeader");function Tp(){return zS.getId()}s(Tp,"getId");var ku=W(require("pino")),CA=W(require("pino-pretty")),Pp=W(require("dd-trace")),DA=require("dd-trace/ext");var Np={};P(Np,{getLogReadStream:()=>zN,getSingleFileMaxSizeInfo:()=>RA,localFileDestination:()=>vp});var ao=W(require("fs")),xp=W(require("path")),_A=W(require("rotating-file-stream"));var bp={};P(bp,{ObjectStore:()=>at,ObjectStoreBuckets:()=>AN,SIGNED_FILE_PREFIX:()=>wp,bucketTTLConfig:()=>xu,budibaseTempDir:()=>mn,client3rdPartyLibrary:()=>VN,clientLibraryPath:()=>$N,clientLibraryUrl:()=>qN,createBucketIfNotExists:()=>oo,deleteFile:()=>PN,deleteFiles:()=>LN,deleteFolder:()=>lA,downloadTarball:()=>kN,downloadTarballDirect:()=>UN,enrichPWAImages:()=>KN,enrichPluginURLs:()=>jN,extractBucketAndPath:()=>Sp,getAllFiles:()=>xN,getAppFileUrl:()=>mA,getClientCacheKey:()=>pA,getGlobalFileS3Key:()=>hA,getGlobalFileUrl:()=>QN,getObjectMetadata:()=>MN,getPluginIconKey:()=>yA,getPluginJSKey:()=>EA,getPluginS3Dir:()=>SA,getPresignedUrl:()=>hn,getReadStream:()=>vu,getSafeRetrieveDirectoryPath:()=>cA,listAllObjects:()=>Rp,objectExists:()=>FN,processAutomationAttachment:()=>ON,processObjectStoreAttachment:()=>tA,retrieve:()=>uA,retrieveDirectory:()=>NN,retrieveToTmp:()=>vN,sanitizeBucket:()=>xe,sanitizeKey:()=>Ee,streamUpload:()=>aA,streamUploadMany:()=>bN,upload:()=>DN,uploadDirectory:()=>Cp});var Pu=require("@aws-sdk/client-s3"),Ap=require("@aws-sdk/lib-storage"),rA=require("@aws-sdk/s3-request-presigner"),nA=require("@smithy/node-http-handler");var Zt=W(require("dd-trace")),pi=W(require("fs")),io=W(require("fs/promises")),iA=W(require("https")),Ye=require("path"),Lu=W(require("stream")),so=require("stream/promises"),_p=W(require("tar-fs")),Op=require("uuid"),Ip=W(require("zlib"));var JS=W(require("fs")),XS=require("os"),no=W(require("path")),ZS=W(require("stream"));var AN={BACKUPS:E.BACKUPS_BUCKET_NAME,APPS:E.APPS_BUCKET_NAME,TEMPLATES:E.TEMPLATES_BUCKET_NAME,GLOBAL:E.GLOBAL_BUCKET_NAME,PLUGINS:E.PLUGIN_BUCKET_NAME,TEMP:E.TEMP_BUCKET_NAME},eA=(0,no.join)((0,XS.tmpdir)(),".budibase");try{JS.default.mkdirSync(eA)}catch(t){if(t.code!=="EEXIST")throw t}function mn(){return eA}s(mn,"budibaseTempDir");var xu=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 _N(t){let e=await li(t.url);if(!e.ok||!e.body)throw new Error(`Unexpected response ${e.statusText}`);let r=no.default.basename(new URL(t.url).pathname);if(!e.body)throw new Error("No response received for attachment");if(!(e.body instanceof ZS.default.Readable))throw new Error("Unexpected response body stream type");return{filename:t.filename||r,content:e.body}}s(_N,"processUrlAttachment");async function tA(t){let e=Sp(t.url);if(e===null)throw new Error("Invalid signed URL");let{bucket:r,path:n}=e,{stream:i}=await vu(r,n),o=no.default.basename(n);return{bucket:r,path:n,filename:t.filename||o,content:i}}s(tA,"processObjectStoreAttachment");async function ON(t){return t.url?.startsWith("http://")||t.url?.startsWith("https://")?await _N(t):await tA(t)}s(ON,"processAutomationAttachment");var IN=require("sanitize-s3-objectkey"),wN={bucketCreationPromises:{}},wp="/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"},RN=[Rr.html,Rr.css,Rr.js,Rr.json];function Ee(t){let e=IN(xe(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 xe(t){return t.replace(new RegExp(nt,"g"),rt)}s(xe,"sanitizeBucket");function at(t={presigning:!1}){let e={forcePathStyle:!0,credentials:{accessKeyId:E.MINIO_ACCESS_KEY,secretAccessKey:E.MINIO_SECRET_KEY},region:E.AWS_REGION};if(!E.MINIO_ENABLED&&E.AWS_SESSION_TOKEN&&(e.credentials={accessKeyId:E.MINIO_ACCESS_KEY,secretAccessKey:E.MINIO_SECRET_KEY,sessionToken:E.AWS_SESSION_TOKEN}),E.MINIO_URL&&(t.presigning&&E.MINIO_ENABLED?e.endpoint="http://minio-service":e.endpoint=E.MINIO_URL),E.S3_IGNORE_SELF_SIGNED==="true"){let r=new iA.default.Agent({rejectUnauthorized:!1});e.requestHandler=new nA.NodeHttpHandler({httpsAgent:r})}return new Pu.S3(e)}s(at,"ObjectStore");async function oo(t,e){e=xe(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=wN.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(oo,"createBucketIfNotExists");var CN=s((t,e)=>{if(e)return e;let r=t.split(".").pop();return r?Rr[r.toLowerCase()]:Rr.txt},"resolveContentType"),sA=s(async(t,e,r)=>{let n=xe(t),i=at(),o=await oo(i,n);if(r.addTags({bucketCreated:o.created,bucketExists:o.exists}),e&&o.created){let a=xu(n,e);await i.putBucketLifecycleConfiguration(a)}return{bucket:n,client:i,bucketCreated:o}},"initialiseBucket"),oA=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=CN(r,i),u=Ee(r),c={Bucket:e,Key:u,Body:n,ContentType:a,...o??{}};return{details:await new Ap.Upload({client:t,params:c}).done(),contentType:a}},"streamUploadInternal");async function DN({bucket:t,filename:e,path:r,type:n,metadata:i,body:o,ttl:a}){let u=e.split(".").pop(),c=r?(await io.default.open(r)).createReadStream():o,l=at(),d=await oo(l,t);if(a&&d.created){let h=xu(t,a);await l.putBucketLifecycleConfiguration(h)}let f=n,g=f||(u?Rr[u.toLowerCase()]:Rr.txt),m={Bucket:xe(t),Key:Ee(e),Body:c,ContentType:g};if(i&&typeof i=="object"){for(let h of Object.keys(i))(!i[h]||typeof i[h]!="string")&&delete i[h];m.Metadata=i}return new Ap.Upload({client:l,params:m}).done()}s(DN,"upload");async function aA({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 sA(t,o,a),{details:d,contentType:f}=await oA({client:l,bucket:c,filename:r,stream:e,type:n,extra:i}),g=await l.headObject({Bucket:c,Key:Ee(r)});return a.addTags({contentType:f,contentLength:g.ContentLength}),{...d,ContentLength:g.ContentLength}})}s(aA,"streamUpload");async function bN({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 sA(t,r,i),u=e.map((l,d)=>({...l,index:d})),c=new Array(e.length);return await wt.parallelForeach(u,async l=>{let{details:d}=await oA({client:a,bucket:o,filename:l.filename,stream:l.stream,type:l.type,extra:l.extra});c[l.index]=d},10),c})}s(bN,"streamUploadMany");async function uA(t,e){return await Zt.default.trace("retrieve",async r=>{r.addTags({bucketName:t,filepath:e});let n=at(),i={Bucket:xe(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}),RN.includes(o.ContentType))return r.addTags({string:!0}),o.Body.transformToString();{r.addTags({string:!1});let a=o.Body.transformToWebStream();return Lu.default.Readable.fromWeb(a)}})}s(uA,"retrieve");async function*Rp(t,e){let r=at(),n=s((a={})=>r.listObjectsV2({...a,Bucket:xe(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(Rp,"listAllObjects");async function xN(t,e){let r={};return await wt.parallelForeach(Rp(t,e),async n=>{if(!n.Key)throw new Error("file.Key must be defined");r[n.Key]=n},5),r}s(xN,"getAllFiles");async function hn(t,e,r=3600){let n=at({presigning:!0}),i={Bucket:xe(t),Key:Ee(e)},o=await(0,rA.getSignedUrl)(n,new Pu.GetObjectCommand(i),{expiresIn:r});if(E.MINIO_ENABLED){let a=new URL(o),u=a.pathname,c=a.search;return`${wp}${u}${c}`}else return o}s(hn,"getPresignedUrl");async function vN(t,e){return await Zt.default.trace("retrieveToTmp",async r=>{r.addTags({bucketName:t,filepath:e}),t=xe(t),e=Ee(e);let n=await uA(t,e),i=(0,Ye.join)(mn(),(0,Op.v4)());return r.addTags({outputPath:i}),n instanceof Lu.default.Readable?(r.addTags({stream:!0}),await(0,so.pipeline)(n,pi.default.createWriteStream(i))):(r.addTags({stream:!1}),pi.default.writeFileSync(i,n)),i})}s(vN,"retrieveToTmp");async function NN(t,e,r){return await Zt.default.trace("retrieveDirectory",async n=>{n.addTags({bucketName:t,path:e});let i=(0,Ye.join)(mn(),(0,Op.v4)());await io.default.mkdir(i,{recursive:!0});let o=0;return await wt.parallelForeach(Rp(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=cA(i,l);if(!d){c.addTags({skippedUnsafePath:!0});return}let{stream:f}=await vu(t,l);pi.default.existsSync(d.dir)||await io.default.mkdir(d.dir,{recursive:!0}),await(0,so.pipeline)(f,pi.default.createWriteStream(d.path,{mode:420}))}))},5),n.addTags({numObjects:o}),i})}s(NN,"retrieveDirectory");function cA(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(cA,"getSafeRetrieveDirectoryPath");async function PN(t,e){let r=at();await oo(r,t);let n={Bucket:t,Key:Ee(e)};return r.deleteObject(n)}s(PN,"deleteFile");async function LN(t,e){let r=at();await oo(r,t);let n={Bucket:t,Delete:{Objects:e.map(i=>({Key:Ee(i)}))}};return r.deleteObjects(n)}s(LN,"deleteFiles");async function lA(t,e){t=xe(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 lA(t,e)}s(lA,"deleteFolder");async function Cp(t,e,r){return await Zt.default.trace("uploadDirectory",async n=>{n.addTags({bucketName:t,localPath:e,bucketPath:r}),t=xe(t);let i=await io.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 Cp(t,u,a):await aA({bucket:t,filename:a,stream:pi.default.createReadStream(u)})}return i})}s(Cp,"uploadDirectory");async function UN(t,e,r={},{followRedirects:n=!0}={}){e=Ee(e);let i=await li(t,{headers:r},{followRedirects:n});if(!i.ok)throw new Error(`unexpected response ${i.statusText}`);await(0,so.pipeline)(i.body,Ip.default.createUnzip(),_p.default.extract(e))}s(UN,"downloadTarballDirect");async function kN(t,e,r){e=xe(e),r=Ee(r);let n=await li(t);if(!n.ok)throw new Error(`unexpected response ${n.statusText}`);let i=(0,Ye.join)(mn(),r);return await(0,so.pipeline)(n.body,Ip.default.createUnzip(),_p.default.extract(i)),!E.isTest()&&E.SELF_HOSTED&&await Cp(e,i,r),i}s(kN,"downloadTarball");async function vu(t,e){return await Zt.default.trace("getReadStream",async r=>{t=xe(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 Lu.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(vu,"getReadStream");async function MN(t,e){t=xe(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(MN,"getObjectMetadata");async function FN(t,e){t=xe(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(FN,"objectExists");function Sp(t){let e=t.split("?")[0],r=new RegExp(`^${wp}/(?<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(Sp,"extractBucketAndPath");var fA=W(require("querystring"));var dA=W(require("aws-cloudfront-sign"));var Uu;function BN(){if(!E.CLOUDFRONT_PRIVATE_KEY_64)throw new Error("CLOUDFRONT_PRIVATE_KEY_64 is not set");return Uu||(Uu=Buffer.from(E.CLOUDFRONT_PRIVATE_KEY_64,"base64").toString("utf-8"),Uu)}s(BN,"getPrivateKey");var WN=s(()=>({keypairId:E.CLOUDFRONT_PUBLIC_KEY_ID,privateKeyString:BN(),expireTime:new Date().getTime()+1e3*60*60*24}),"getCloudfrontSignParams"),mi=s(t=>{let e=GN(t);return dA.getSignedUrl(e,WN())},"getPresignedUrl"),GN=s(t=>{let e="/";return t.startsWith("/")&&(e=""),`${E.CLOUDFRONT_CDN}${e}${t}`},"getUrl");function $N(t){return`${Ee(t)}/budibase-client.js`}s($N,"clientLibraryPath");function VN(t,e){return`${Ee(t)}/${e}`}s(VN,"client3rdPartyLibrary");async function qN(t,e){return`/api/assets/${t}/client?${await pA(e)}`}s(qN,"clientLibraryUrl");async function pA(t){let e,r;try{e=V()}finally{r={version:t}}return e&&e!==ce&&(r.tenantId=e),fA.default.encode(r)}s(pA,"getClientCacheKey");async function mA(t){return E.CLOUDFRONT_CDN?mi(t):await hn(E.APPS_BUCKET_NAME,t)}s(mA,"getAppFileUrl");async function KN(t){if(t.length===0)return[];try{return await Promise.all(t.map(async e=>({...e,src:await mA(e.src),type:e.type||"image/png"})))}catch(e){return console.error("Error enriching PWA images:",e),t}}s(KN,"enrichPWAImages");var QN=s(async(t,e,r)=>{let n=hA(t,e);return E.CLOUDFRONT_CDN?(r&&(n=`${n}?etag=${r}`),mi(n)):await hn(E.GLOBAL_BUCKET_NAME,n)},"getGlobalFileUrl"),hA=s((t,e)=>{let r=`${t}/${e}`;return E.MULTI_TENANCY&&(r=`${V()}/${r}`),r},"getGlobalFileS3Key");async function jN(t){return!t||!t.length?[]:await Promise.all(t.map(async e=>{let r=await HN(e),n=await YN(e);return{...e,jsUrl:r,iconUrl:n}}))}s(jN,"enrichPluginURLs");async function HN(t){let e=EA(t);return gA(e)}s(HN,"getPluginJSUrl");async function YN(t){let e=yA(t);if(e)return gA(e)}s(YN,"getPluginIconUrl");async function gA(t){return E.CLOUDFRONT_CDN?mi(t):await hn(E.PLUGIN_BUCKET_NAME,t)}s(gA,"getPluginUrl");function EA(t){return TA(t,"plugin.min.js")}s(EA,"getPluginJSKey");function yA(t){let e=t.iconUrl?"icon.svg":t.iconFileName;if(e)return TA(t,e)}s(yA,"getPluginIconKey");function TA(t,e){return`${SA(t.name)}/${e}`}s(TA,"getPluginS3Key");function SA(t){let e=`${t}`;return E.MULTI_TENANCY&&(e=`${V()}/${e}`),E.CLOUDFRONT_CDN&&(e=`plugins/${e}`),e}s(SA,"getPluginS3Dir");var OA="budibase.log",IA="budibase-logs-history.txt",wA=xp.default.join(mn(),"systemlogs");function AA(t){return xp.default.join(wA,t)}s(AA,"getFullPath");function RA(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(RA,"getSingleFileMaxSizeInfo");function vp(){let t=RA(E.ROLLING_LOG_MAX_SIZE);return _A.createStream(OA,{size:t?.size,path:wA,maxFiles:t?.totalHistoryFiles||1,immutable:!0,history:IA,initialRotation:!1})}s(vp,"localFileDestination");function zN(){let t=[],e=AA(IA);if(ao.default.existsSync(e)){let i=ao.default.readFileSync(e,"utf-8").split(`
|
|
37
37
|
`);for(let o of i.filter(a=>a))t.push(ao.default.readFileSync(o))}return t.push(ao.default.readFileSync(AA(OA))),Buffer.concat(t.map(n=>new Uint8Array(n)))}s(zN,"getLogReadStream");function JN(t){return typeof t=="object"&&t!==null&&!(t instanceof Error)}s(JN,"isPlainObject");function XN(t){return t instanceof Error}s(XN,"isError");function ZN(t){return typeof t=="string"}s(ZN,"isMessage");var Cr;if(!E.DISABLE_PINO_LOGGER){let t=E.LOG_LEVEL,e={level:t,formatters:{level:s(c=>({level:c.toUpperCase()}),"level"),bindings:s(()=>E.SELF_HOSTED?{service:E.SERVICE_NAME}:{},"bindings")},timestamp:s(()=>`,"timestamp":"${new Date(Date.now()).toISOString()}"`,"timestamp")},r=[];r.push(E.isDev()?{stream:(0,CA.default)({singleLine:!0}),level:t}:{stream:process.stdout,level:t}),E.SELF_HOSTED&&r.push({stream:vp(),level:t}),Cr=r.length?(0,ku.default)(e,ku.default.multistream(r)):(0,ku.default)(e);let n=s(c=>{let l,d=[],f="";c.forEach(p=>{ZN(p)&&(f=`${f} ${p}`.trimStart()),JN(p)&&d.push(p),XN(p)&&(l=p)});let g=u(),m={};m={tenantId:i(),appId:o(),automationId:a(),identityId:g?._id,identityType:g?.type,correlationId:Tp()};let y=Pp.default.scope().active();y&&Pp.default.inject(y.context(),DA.formats.LOG,m);let h={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,h[I]=_):(p[T]=_,T++)}Object.keys(p).length&&(h.data=p)}return[h,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=V()}catch{}return c},"getTenantId"),o=s(()=>{let c;try{c=Fe()}catch{}return c},"getAppId"),a=s(()=>{let c;try{c=Nf()}catch{}return c},"getAutomationId"),u=s(()=>{let c;try{c=Qt()}catch{}return c},"getIdentity")}var Mu=Cr;var eP=["AccountError"];function tP(t){return t&&t.suppressAlert}s(tP,"isSuppressed");function gn(t,e){e&&eP.includes(e.name)&&tP(e)||console.error(`bb-alert: ${t}`,e)}s(gn,"logAlert");function rP(t,e,r,n){t=`${t} - db: ${e} - doc: ${r} - error: `,gn(t,n)}s(rP,"logAlertWithInfo");function hi(t,e){console.warn(`bb-warn: ${t}`,e)}s(hi,"logWarn");var Fu=class extends Error{static{s(this,"UnretriableError")}constructor(e){super(e),this.name="PermanentError"}},Lp=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 Fu&&await u.discard(),gn(`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 ke.withTimeout(this.waitForCompletionMs,()=>r.finished())}}catch(r){if(r.errno!=="ETIME")throw r;return{success:!1,reason:"timeout"}}}};var nP=100,Bu,co=class t{static{s(this,"DocWritethroughProcessor")}static get queue(){return t._queue||(t._queue=new yt("docWritethroughQueue",{jobOptions:{attempts:nP}})),t._queue}init(){return t.queue.process(async e=>{try{await this.persistToDb(e.data)}catch(r){throw r.status===409?new Error(`Conflict persisting message ${e.id}. Attempt ${e.attemptsMade}`):r}}),this}async persistToDb({dbName:e,docId:r,data:n}){if(r.startsWith("scimlog"))return;let i=De(e),o;try{o=await i.get(r)}catch{o={_id:r}}o={...o,...n},await i.put(o)}},kp=class{static{s(this,"DocWritethrough")}constructor(e,r){this.db=e,this._docId=r}get docId(){return this._docId}async patch(e){await co.queue.add({dbName:this.db.name,docId:this.docId,data:e})}};function bA(){return Bu=new co().init(),Bu}s(bA,"init");function iP(){return Bu||bA()}s(iP,"getProcessor");var Gu={};P(Gu,{CacheKey:()=>Oe,TTL:()=>gi,bustCache:()=>Ei,destroy:()=>fo,get:()=>lo,increment:()=>vA,keys:()=>Wu,store:()=>yn,withCache:()=>br,withCacheWithDynamicTTL:()=>xA});function Tt(t){let e=V();return`${t}:${e}`}s(Tt,"generateTenantKey");var En=class{static{s(this,"BaseCache")}constructor(e=void 0){this.client=e}async getClient(){return this.client?this.client:await Wf()}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 En,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")},gi=(n=>(n[n.ONE_MINUTE=600]="ONE_MINUTE",n[n.ONE_HOUR=3600]="ONE_HOUR",n[n.ONE_DAY=86400]="ONE_DAY",n))(gi||{}),Wu=s((...t)=>Dr.keys(...t),"keys"),lo=s((...t)=>Dr.get(...t),"get"),yn=s((...t)=>Dr.store(...t),"store"),fo=s((...t)=>Dr.delete(...t),"destroy"),br=s((...t)=>Dr.withCache(...t),"withCache"),xA=s((...t)=>Dr.withCacheWithDynamicTTL(...t),"withCacheWithDynamicTTL"),Ei=s((...t)=>Dr.bustCache(...t),"bustCache"),vA=s((...t)=>Dr.increment(...t),"increment");var An={};P(An,{createCode:()=>dP,deleteCode:()=>pP,getCode:()=>fP,getExistingInvites:()=>Wp,getInviteCodes:()=>FA,updateCode:()=>lP});var xr={};P(xr,{AUTO_EXTEND_POLLING_MS:()=>PA,doWithLock:()=>Sn,newRedlock:()=>Tn});var NA=W(require("redlock"));async function sP(t,e){if(t==="custom")return Tn(e);switch(t){case"try_once":return Tn(yi.TRY_ONCE);case"try_twice":return Tn(yi.TRY_TWICE);case"default":return Tn(yi.DEFAULT);case"delay_500":return Tn(yi.DELAY_500);case"auto_extend":return Tn(yi.AUTO_EXTEND);default:throw wt.unreachable(t)}}s(sP,"getClient");var yi={TRY_ONCE:{retryCount:0},TRY_TWICE:{retryCount:1},DEFAULT:{driftFactor:.01,retryCount:10,retryDelay:200,retryJitter:100},DELAY_500:{retryDelay:500},CUSTOM:{},AUTO_EXTEND:{retryCount:-1}};async function Tn(t={}){let e={...yi.DEFAULT,...t},n=(await $f()).client;return new NA.default([n],e)}s(Tn,"newRedlock");function oP(t){let r=`lock:${t.systemLock?"system":V()}_${t.name}`;return t.resource&&(r=r+`_${t.resource}`),r}s(oP,"getLockName");var PA=me.fromSeconds(10).toMs();async function Sn(t,e){let r=await sP(t.type,t.customOptions),n,i,o,a=!1;try{let u=oP(t),c=t.type==="auto_extend"?PA: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(Sn,"doWithLock");var UA=me.fromDays(7).toSeconds(),aP=me.fromSeconds(10).toMs(),$u="Invitation is not valid or has expired, please request a new one.";function kA(t,e){if(!t)return null;let r=t.tenantId||e;return r?{tenantId:r,invites:t.invites||{}}:null}s(kA,"normaliseInviteList");function uP(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(uP,"pruneExpiredInvites");async function Bp(t){let r=await(await Gs()).get(t);return kA(r,t)}s(Bp,"loadInviteList");async function po(t,e){await(await Gs()).store(t,e)}s(po,"saveInviteList");async function mo(t,e){let{result:r}=await Sn({type:"default",name:"process_user_invite",systemLock:!0,resource:t,ttl:aP},e);return r}s(mo,"withInviteListLock");function cP(t,e){return{code:t,email:e.email,info:e.info}}s(cP,"toInviteWithCode");async function MA(t,e){let r=await Gs(),n=kA(await r.get(e),e);if(!n)throw new Error($u);if(!Object.keys(n.invites).includes(t))throw new Error($u);return{list:n,invite:n.invites[t]}}s(MA,"findInviteInList");async function lP(t,e){let r={...e.info},n=r.tenantId||V();r.tenantId=n,await mo(n,async()=>{let i=await Bp(n)||{tenantId:n,invites:{}};i.invites[t]={email:e.email,info:r,expiresAt:Date.now()+UA*1e3},await po(n,i)})}s(lP,"updateCode");async function dP(t,e){let r=X(),n={...e||{}},i=n.tenantId||V();return n.tenantId=i,await mo(i,async()=>{let o=await Bp(i)||{tenantId:i,invites:{}};o.invites[r]={email:t,info:n,expiresAt:Date.now()+UA*1e3},await po(i,o)}),r}s(dP,"createCode");async function fP(t,e){let r=e||V();return await mo(r,async()=>{let n=await MA(t,r),{list:i,invite:o}=n;if(o.expiresAt<=Date.now())throw delete i.invites[t],await po(i.tenantId,i),new Error($u);return{email:o.email,info:o.info}})}s(fP,"getCode");async function pP(t,e){let r=e||V();try{await mo(r,async()=>{let n=await MA(t,r);delete n.list.invites[t],await po(n.list.tenantId,n.list)})}catch(n){if(n instanceof Error&&n.message===$u)return;throw n}}s(pP,"deleteCode");async function FA(){let t=V(),e=await mo(t,async()=>{let n=await Bp(t)||{tenantId:t,invites:{}},i=uP(n);return n=i.list,i.changed&&await po(t,n),n}),r=new Map;for(let[n,i]of Object.entries(e.invites))r.set(n,cP(n,i));return Array.from(r.values())}s(FA,"getInviteCodes");async function Wp(t){let e=new Set(t.map(r=>r.toLowerCase()));return(await FA()).filter(r=>e.has(r.email.toLowerCase()))}s(Wp,"getExistingInvites");var Gp={};P(Gp,{createCode:()=>hP,getCode:()=>gP,invalidateCode:()=>EP});var mP=me.fromHours(1).toSeconds();async function hP(t,e){let r=X();return await(await $s()).store(r,{userId:t,info:e},mP),r}s(hP,"createCode");async function gP(t){let r=await(await $s()).get(t);if(!r)throw new Error("Provided information is not valid, cannot reset password - please try again.");return r}s(gP,"getCode");async function EP(t){await(await $s()).delete(t)}s(EP,"invalidateCode");var nr={};P(nr,{getUser:()=>vo,getUsers:()=>ik,invalidateUser:()=>No,invalidateUsers:()=>sk});var ho={};P(ho,{getPlatformDB:()=>vr,users:()=>St});var St={};P(St,{addSsoUser:()=>WA,addUser:()=>OP,getUserDoc:()=>BA,lookupTenantId:()=>yP,removeUser:()=>IP,updateUserDoc:()=>TP});function vr(){return De(pe.PLATFORM_INFO.name)}s(vr,"getPlatformDB");async function yP(t){return E.MULTI_TENANCY?(await BA(t)).tenantId:ce}s(yP,"lookupTenantId");async function BA(t){return vr().get(t)}s(BA,"getUserDoc");async function TP(t){await vr().put(t)}s(TP,"updateUserDoc");function SP(t,e){return{_id:t,tenantId:e}}s(SP,"newUserIdDoc");function AP(t,e,r){return{_id:e,userId:t,tenantId:r}}s(AP,"newUserEmailDoc");function _P(t,e,r,n){return{_id:t,userId:r,email:e,tenantId:n}}s(_P,"newUserSsoIdDoc");async function $p(t,e){let r=vr(),n;try{await r.get(t)}catch(i){if(i.status===404)n=e(),await r.put(n);else throw i}}s($p,"addUserDoc");async function WA(t,e,r,n){return $p(t,()=>_P(t,e,r,n))}s(WA,"addSsoUser");async function OP(t,e,r,n){let i=[$p(e,()=>SP(e,t)),$p(r,()=>AP(e,r,t))];n&&i.push(WA(n,r,e,t)),await Promise.all(i)}s(OP,"addUser");async function IP(t){let e=vr(),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(IP,"removeUser");var On={};P(On,{getAccount:()=>Nr,getAccountByTenantId:()=>Ti,getStatus:()=>wP});var GA=W(require("node-fetch"));var _n=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";ro.setHeader(n.headers);let o={method:e,body:i?JSON.stringify(n.body):n.body,headers:n.headers,credentials:"include"};return await(0,GA.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 Vp=new _n(E.INTERNAL_ACCOUNT_PORTAL_URL),qp=E.SELF_HOSTED||E.DISABLE_ACCOUNT_PORTAL,Nr=s(async t=>{if(qp)return;let e={email:t},r=await Vp.post("/api/accounts/search",{body:e,headers:{"x-budibase-api-key":E.ACCOUNT_PORTAL_API_KEY}});if(r.status!==200)throw new Error(`Error getting account by email ${t}`);return(await r.json())[0]},"getAccount"),Ti=s(async t=>{if(qp)return;let e={tenantId:t},r=await Vp.post("/api/accounts/search",{body:e,headers:{"x-budibase-api-key":E.ACCOUNT_PORTAL_API_KEY}});if(r.status!==200)throw new Error(`Error getting account by tenantId ${t}`);return(await r.json())[0]},"getAccountByTenantId"),wP=s(async()=>{if(qp)return;let t=await Vp.get("/api/status",{headers:{"x-budibase-api-key":E.ACCOUNT_PORTAL_API_KEY}}),e=await t.json();if(t.status!==200)throw new Error("Error getting status");return e},"getStatus");var Ii={};P(Ii,{UserDB:()=>Ut,addAppBuilder:()=>ek,bulkGetGlobalUsersById:()=>lc,bulkUpdateGlobalUsers:()=>bo,cleanseUserObject:()=>pm,creatorsInList:()=>Lr,deriveUserFieldsFromInvite:()=>mm,doesUserExist:()=>Y0,getAccountHolderFromUsers:()=>cc,getAllUserIds:()=>j0,getAllUsers:()=>H0,getById:()=>Ur,getCreatorCount:()=>X0,getExistingAccounts:()=>Oi,getExistingPlatformUsers:()=>O_,getExistingTenantUsers:()=>__,getFirstPlatformUser:()=>Co,getGlobalUserByAppPage:()=>x_,getGlobalUserByEmail:()=>ut,getPlatformUsers:()=>sc,getUserCount:()=>J0,hasAdminPermissions:()=>Pr,hasAppBuilderPermissions:()=>R_,hasBuilderPermissions:()=>We,isAdmin:()=>Lt,isAdminOrBuilder:()=>w_,isAdminOrWorkspaceBuilder:()=>oc,isBuilder:()=>Ci,isCreatorAsync:()=>Do,isCreatorSync:()=>ac,isGlobalBuilder:()=>I_,paginatedUsers:()=>N_,removeAppBuilder:()=>tk,removePortalUserPermissions:()=>Z0,searchExistingEmails:()=>um,searchGlobalUsersByApp:()=>b_,searchGlobalUsersByAppAccess:()=>fm,searchGlobalUsersByEmail:()=>v_,validateUniqueUser:()=>uc});var Ju={};P(Ju,{ActiveContentFileError:()=>Ku,BadRequestError:()=>Eo,BudibaseError:()=>go,EmailUnavailableError:()=>er,FeatureDisabledError:()=>Hu,ForbiddenError:()=>Qu,HTTPError:()=>Be,NotFoundError:()=>qu,NotImplementedError:()=>ju,UnexpectedError:()=>Vu,UsageLimitError:()=>Yu,getErrorMessage:()=>$A,getPublicError:()=>zu});var go=class extends Error{static{s(this,"BudibaseError")}constructor(e,r){super(e),this.code=r}};function $A(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($A,"getErrorMessage");var zu=s(t=>{let e;return t.code&&(e={code:t.code},t.getPublicError&&(e={...e,...t.getPublicError()})),e},"getPublicError"),Be=class t extends go{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)}},Vu=class extends Be{static{s(this,"UnexpectedError")}constructor(e){super(e,500)}},qu=class extends Be{static{s(this,"NotFoundError")}constructor(e){super(e,404)}},Eo=class extends Be{static{s(this,"BadRequestError")}constructor(e){super(e,400)}},Ku=class extends Eo{static{s(this,"ActiveContentFileError")}constructor(e){super(`File "${e}" contains active content which is not permitted`)}},Qu=class extends Be{static{s(this,"ForbiddenError")}constructor(e){super(e,403)}},ju=class extends Be{static{s(this,"NotImplementedError")}constructor(e){super(e,501)}},Hu=class extends Error{static{s(this,"FeatureDisabledError")}constructor(e){super(`Feature disabled: '${e}'`)}},Yu=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 Hp={};P(Hp,{PASSWORD_MAX_LENGTH:()=>Qp,PASSWORD_MIN_LENGTH:()=>Kp,validatePassword:()=>jp});var Kp=+(E.PASSWORD_MIN_LENGTH||12),Qp=+(E.PASSWORD_MAX_LENGTH||512);function jp(t){return!t||t.length<Kp?{valid:!1,error:`Password invalid. Minimum ${Kp} characters.`}:t.length>Qp?{valid:!1,error:`Password invalid. Maximum ${Qp} characters.`}:{valid:!0}}s(jp,"validatePassword");var Xu={};P(Xu,{createASession:()=>RP,endSession:()=>CP,getSession:()=>zp,getSessionsForUser:()=>yo,invalidateSessions:()=>In,updateSessionTTL:()=>Yp});var qA=require("uuid");var KA=Su();function Si(t,e){return`${t}/${e}`}s(Si,"makeSessionID");async function yo(t){return t?(await(await Ar()).scan(t)).map(n=>n.value):(console.trace("Cannot get sessions for undefined userId"),[])}s(yo,"getSessionsForUser");async function In(t,e={}){try{let r=e?.reason||"unknown",n=e.sessionIds||[],i;if(n.length===0?i=(await yo(t)).map(a=>({key:Si(a.userId,a.sessionId)})):(n=Array.isArray(n)?n:[n],i=n.map(o=>({key:Si(t,o)}))),i&&i.length>0){let o=await Ar(),a=[];for(let u of i)a.push(o.delete(u.key));E.isTest()||hi(`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(In,"invalidateSessions");async function RP(t,e){let r=await yo(t),n=0;if(r.length>=3){let l=r.sort((g,m)=>new Date(g.createdAt).getTime()-new Date(m.createdAt).getTime()),d=r.length-3+1,f=l.slice(0,d).map(g=>g.sessionId);n=f.length,await In(t,{sessionIds:f,reason:"session limit exceeded"})}let i=await Ar(),o=e.sessionId,a=e.csrfToken?e.csrfToken:(0,qA.v4)(),u=Si(t,o),c={...e,csrfToken:a,createdAt:new Date().toISOString(),lastAccessedAt:new Date().toISOString(),userId:t};return await i.store(u,c,KA),{session:c,invalidatedSessionCount:n}}s(RP,"createASession");async function Yp(t){let e=await Ar(),r=Si(t.userId,t.sessionId);t.lastAccessedAt=new Date().toISOString(),await e.store(r,t,KA)}s(Yp,"updateSessionTTL");async function CP(t,e){await(await Ar()).delete(Si(t,e))}s(CP,"endSession");async function zp(t,e){if(!t||!e)throw new Error(`Invalid session details - ${t} - ${e}`);let n=await(await Ar()).get(Si(t,e));if(!n)throw new Error(`Session not found - ${t} - ${e}`);return n}s(zp,"getSession");var wn={};P(wn,{account:()=>JA,action:()=>XA,ai:()=>ZA,analytics:()=>Jp,app:()=>e_,asyncEventQueue:()=>At,auditLog:()=>t_,auth:()=>ic,automation:()=>r_,backfill:()=>n_,backfillCache:()=>tc,backup:()=>i_,datasource:()=>s_,email:()=>o_,environmentVariable:()=>a_,group:()=>u_,identification:()=>_t,initAsyncEvents:()=>P0,installation:()=>Ao,layout:()=>c_,license:()=>l_,org:()=>d_,plugin:()=>f_,processors:()=>nm,publishEvent:()=>S,query:()=>p_,resource:()=>m_,role:()=>Ro,rowAction:()=>h_,rows:()=>g_,screen:()=>E_,serve:()=>y_,shutdown:()=>L0,table:()=>T_,user:()=>Ce,view:()=>S_,workspace:()=>A_});var Jp={};P(Jp,{enabled:()=>DP});var DP=s(async()=>Zu(),"enabled");var At;function ec(){At=new yt("systemEventQueue",{jobTags:s(t=>({"event.name":t.event}),"jobTags")})}s(ec,"init");async function QA(){At&&await At.close()}s(QA,"shutdown");async function jA(t){At||ec();let{event:e,identity:r}=t;mh.indexOf(e)!==-1&&r.tenantId&&await At.add(t)}s(jA,"publishAsyncEvent");var tc={};P(tc,{end:()=>xP,isAlreadySent:()=>em,isBackfillingEvent:()=>Zp,recordEvent:()=>Xp,start:()=>bP});var bP=s(async t=>NP({eventWhitelist:t}),"start"),Xp=s(async(t,e)=>{let r=tm(t,e);await yn(r,e,void 0,{useTenancy:!1})},"recordEvent"),xP=s(async()=>{await PP(),await LP()},"end"),vP=s(async()=>lo(Oe.BACKFILL_METADATA),"getBackfillMetadata"),NP=s(async t=>yn(Oe.BACKFILL_METADATA,t),"saveBackfillMetadata"),PP=s(async()=>{await fo(Oe.BACKFILL_METADATA)},"deleteBackfillMetadata"),LP=s(async()=>{let t=tm(),e=await Wu(t);for(let r of e)await fo(r,{useTenancy:!1})},"clearEvents"),Zp=s(async t=>{let r=(await vP())?.eventWhitelist;return!!(r&&r.includes(t))},"isBackfillingEvent"),em=s(async(t,e)=>{let r=tm(t,e);return!!await lo(r,{useTenancy:!1})},"isAlreadySent"),UP={"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}`},tm=s((t,e)=>{let r,n=V();if(t){r=`${Oe.EVENTS}:${n}:${t}`;let i=UP[t],o=i?i(e):void 0;o&&(r=`${r}:${o}`)}else r=`${Oe.EVENTS}:${n}:*`;return r},"getEventKey");var nm={};P(nm,{init:()=>WP,processors:()=>rr});var rm=E.SELF_HOSTED&&!E.isDev(),To=class{static{s(this,"LoggingProcessor")}async processEvent(e,r,n){rm||console.log(`[audit] [identityType=${r.type}] ${e}`,n)}async identify(e){rm||console.log("[audit] identified",e)}async identifyGroup(e){rm||console.log("[audit] group identified",e)}async shutdown(){}};var Ai=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 be(n.data.tenantId,async()=>{let i=n.data.properties;i.audited&&(i={...i,...i.audited},delete i.audited);let o={};E.ENABLE_AUDIT_LOG_IP_ADDR&&(o=n.data.opts.hostInfo),await r(n.data.event,i,{userId:n.data.opts.userId,timestamp:n.data.opts.timestamp,appId:n.data.opts.appId,hostInfo:o})})})}async processEvent(e,r,n,i){if(t.auditLogsEnabled&&sp(e)){let o=r.type==="user"?r.id:void 0;await t.auditLogQueue.add({event:e,properties:n,opts:{userId:o,timestamp:i,appId:Fe(),hostInfo:r.hostInfo},tenantId:V()})}}async identify(){}async identifyGroup(){}async shutdown(){await t.auditLogQueue?.close()}};var HA=require("uuid");var kP=new _n(E.INTERNAL_ACCOUNT_PORTAL_URL),_i=class t{static{s(this,"EventBrokerProcessor")}static init(e){t.getLicenseKeyFn=e}async processEvent(e,r,n,i){if(E.DISABLE_ACCOUNT_PORTAL)return;let o;if(E.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":E.ACCOUNT_PORTAL_API_KEY},r.tenantId&&(o["x-budibase-tenant-id"]=r.tenantId);let a=Fe(),u={id:(0,HA.v4)(),type:e,identity:r,properties:{...n,version:E.VERSION,service:E.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 kP.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 So=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 MP=new To,FP=new Ai,BP=new _i;function WP(t,e){return _i.init(e),Ai.init(t)}s(WP,"init");var rr=new So([MP,FP,BP]);var rc={};P(rc,{checkInstallVersion:()=>VP,getInstall:()=>_o,getInstallFromDB:()=>sm});var im=W(require("semver"));var _o=s(async()=>br(Oe.INSTALLATION,86400,sm,{useTenancy:!1}),"getInstall");async function GP(t){let e={_id:pe.PLATFORM_INFO.docs.install,installId:X(),version:E.VERSION};try{let r=await t.put(e);return e._rev=r.rev,e}catch(r){if(r.status===409)return sm();throw r}}s(GP,"createInstallDoc");var sm=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 GP(t);else throw r}return e}),"getInstallFromDB"),$P=s(async t=>{try{await je(pe.PLATFORM_INFO.name,async e=>{let r=await _o();r.version=t,await e.put(r),await Ei(Oe.INSTALLATION)})}catch(e){if(e.status===409)return!1;throw e}return!0},"updateVersion"),VP=s(async()=>{let t=await _o(),e=t.version,r=E.VERSION;try{if(e!==r){let n=im.default.gt(r,e),i=im.default.lt(r,e);await $P(r)&&(await Us({_id:t.installId,type:"installation"},async()=>{n?await Ao.upgraded(e,r):i&&await Ao.downgraded(e,r)}),await _t.identifyInstallationGroup(t.installId))}}catch(n){n?.message?.includes("Invalid Version")?gn(`Invalid version "${r}" - is it semver?`):gn("Failed to retrieve version",n)}},"checkInstallVersion");var qP=s(async()=>{let t=mf(),e=wo(),r;if(t?r=t.type:r="tenant",r==="installation"){let n=await Rn(),i=Oo();return{id:YA(n,r),hosting:i,type:r,installationId:n,environment:e}}else if(r==="tenant"){let n=await Rn(),i=await nc(V()),o=Oo();return{id:YA(i,r),type:r,hosting:o,installationId:n,tenantId:i,realTenantId:V(),environment:e}}else if(r==="user"){let n=t,i=await nc(V()),o=await Rn(),a=n.account,u;return a?u=a.hosting:u=Oo(),{id:n._id,type:r,hosting:u,installationId:o,tenantId:i,environment:e,realTenantId:V(),hostInfo:n.hostInfo}}else throw new Error("Unknown identity type")},"getCurrentIdentity"),KP=s(async(t,e)=>{let r=t,n="installation",i=Oo(),o=E.VERSION,a=wo(),u={id:r,type:n,hosting:i,version:o,environment:a};await om(u,e),await Io({...u,id:`$${n}_${r}`},e)},"identifyInstallationGroup"),QP=s(async(t,e,r,n=E.VERSION)=>{let i=await nc(t),o="tenant",a=await Rn(),u=wo(),c={id:i,type:o,hosting:e,environment:u,installationId:a,createdAt:r,createdVersion:n};await om(c,r),await Io({...c,id:`$${o}_${i}`},r)},"identifyTenantGroup"),jP=s(async(t,e,r)=>{let n=t._id,i=await nc(t.tenantId),o="user",a=We(t),u=Pr(t),c;vn(t)&&(c=t.providerType);let d=(await Oi([t.email])).length>0,f=!!e&&d&&e.verified,g=await Rn(),m=e?e.hosting:Oo(),y=wo();await Io({id:n,type:o,hosting:m,installationId:g,tenantId:i,verified:f,accountHolder:d,providerType:c,builder:a,admin:u,environment:y},r)},"identifyUser"),HP=s(async t=>{let e=t.accountId,r=t.tenantId,n="user",i=Ho(t)?t.providerType:void 0,o=t.verified,a=!0,u=t.hosting,c=await Rn(),l=wo();if(jo(t)){let f=await ut(t.email);f?._id&&(e=f._id)}await Io({id:e,type:n,hosting:u,installationId:c,tenantId:r,providerType:i,verified:o,accountHolder:a,environment:l})},"identifyAccount"),Io=s(async(t,e)=>{await rr.identify(t,e)},"identify"),om=s(async(t,e)=>{await rr.identifyGroup(t,e)},"identifyGroup"),wo=s(()=>E.isDev()?"development":E.DEPLOYMENT_ENVIRONMENT,"getDeploymentEnvironment"),Oo=s(()=>E.SELF_HOSTED?"self":"cloud","getHostingFromEnv"),Rn=s(async()=>YP()?"account-portal":(await _o()).installId,"getInstallationId"),nc=s(async t=>E.SELF_HOSTED?zA(t):t,"getEventTenantId"),zA=s(async t=>be(t,()=>br(Oe.UNIQUE_TENANT_ID,86400,async()=>{let e=z(),r=await wi(),n;return r.config.uniqueTenantId?r.config.uniqueTenantId:(n=`${X()}_${t}`,r.config.uniqueTenantId=n,r.config.createdVersion=E.VERSION,await e.put(r),n)})),"getUniqueTenantId"),YP=s(()=>E.SERVICE==="account-portal","isAccountPortal"),YA=s((t,e)=>e==="installation"||e==="tenant"?`$${e}_${t}`:t,"formatDistinctId"),_t={getCurrentIdentity:qP,identifyInstallationGroup:KP,identifyTenantGroup:QP,identifyUser:jP,identifyAccount:HP,identify:Io,identifyGroup:om,getInstallationId:Rn,getUniqueTenantId:zA};var S=s(async(t,e,r,n)=>{let i=n||await _t.getCurrentIdentity();if(!(n?!1:await Zp(t))){await jA({event:t,identity:i,properties:e,timestamp:r}),await rr.processEvent(t,i,e,r);return}await em(t,e)||(await rr.processEvent(t,i,e,r),await Xp(t,e))},"publishEvent");async function zP(t,e){let r={tenantId:t.tenantId};await S("account:created",r,void 0,e)}s(zP,"created");async function JP(t){let e={tenantId:t.tenantId};await S("account:deleted",e)}s(JP,"deleted");async function XP(t){let e={tenantId:t.tenantId};await S("account:verified",e)}s(XP,"verified");var JA={created:zP,deleted:JP,verified:XP};function ZP(t,e){S("action:automation_step:executed",t,e).catch(r=>{console.error("automationStepExecuted telemetry failed",{action:t,err:r})})}s(ZP,"automationStepExecuted");function eL(t){S("action:automation_step:failed",t).catch(e=>{console.error("automationStepFailed telemetry failed",{action:t,err:e})})}s(eL,"automationStepFailed");function tL(t,e){S("action:crud:executed",t,e).catch(r=>{console.error("crudExecuted telemetry failed",{action:t,err:r})})}s(tL,"crudExecuted");function rL(t){S("action:crud:failed",t).catch(e=>{console.error("crudFailed telemetry failed",{action:t,err:e})})}s(rL,"crudFailed");function nL(t,e){S("action:ai_agent:executed",t,e).catch(r=>{console.error("aiAgentExecuted telemetry failed",{action:t,err:r})})}s(nL,"aiAgentExecuted");function iL(t){S("action:ai_agent:failed",t).catch(e=>{console.error("aiAgentFailed telemetry failed",{action:t,err:e})})}s(iL,"aiAgentFailed");var XA={aiAgentExecuted:nL,aiAgentFailed:iL,automationStepExecuted:ZP,automationStepFailed:eL,crudExecuted:tL,crudFailed:rL};function sL(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(sL,"configCreated");function oL(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(oL,"configUpdated");function aL(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(aL,"configDeleted");function uL(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(uL,"agentCreated");function cL(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(cL,"agentUpdated");function lL(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(lL,"agentDeleted");function dL(t){S("rag:file:uploaded",t).catch(e=>{console.error("ragFileUploaded telemetry failed",{event:t,err:e})})}s(dL,"ragFileUploaded");function fL(t){S("rag:file:deleted",t).catch(e=>{console.error("ragFileDeleted telemetry failed",{event:t,err:e})})}s(fL,"ragFileDeleted");function pL(t){S("rag:file:sharepoint:connected",t).catch(e=>{console.error("ragFileSharePointConnected telemetry failed",{event:t,err:e})})}s(pL,"ragFileSharePointConnected");function mL(t){S("rag:file:sharepoint:disconnected",t).catch(e=>{console.error("ragFileSharePointDisconnected telemetry failed",{event:t,err:e})})}s(mL,"ragFileSharePointDisconnected");function hL(t){S("rag:file:processed",t).catch(e=>{console.error("ragFileProcessed telemetry failed",{event:t,err:e})})}s(hL,"ragFileProcessed");function gL(t){S("rag:file:sharepoint:sync",t).catch(e=>{console.error("ragFileSharePointSync telemetry failed",{event:t,err:e})})}s(gL,"ragFileSharePointSync");var ZA={configCreated:sL,configUpdated:oL,configDeleted:aL,agentCreated:uL,agentUpdated:cL,agentDeleted:lL,ragFileUploaded:dL,ragFileDeleted:fL,ragFileSharePointConnected:pL,ragFileSharePointDisconnected:mL,ragFileSharePointSync:gL,ragFileProcessed:hL};var EL=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 yL(t){let e={appId:t.appId,version:t.version,audited:{name:t.name}};await S("app:updated",e)}s(yL,"updated");async function TL(t){let e={appId:t.appId,audited:{name:t.name}};await S("app:deleted",e)}s(TL,"deleted");async function SL(t,e){let r={appId:t.appId,audited:{name:t.name}};await S("app:published",r,e)}s(SL,"published");async function AL(t){let e={appId:t.appId,audited:{name:t.name}};await S("app:unpublished",e)}s(AL,"unpublished");async function _L(t){let e={appId:t.appId,audited:{name:t.name}};await S("app:file:imported",e)}s(_L,"fileImported");async function OL(t,e){let r={duplicateAppId:e,appId:t.appId,audited:{name:t.name}};await S("app:duplicated",r)}s(OL,"duplicated");async function IL(t,e){let r={appId:t.appId,templateKey:e,audited:{name:t.name}};await S("app:template:imported",r)}s(IL,"templateImported");async function wL(t,e,r){let n={appId:t.appId,currentVersion:e,updatedToVersion:r,audited:{name:t.name}};await S("app:version:updated",n)}s(wL,"versionUpdated");async function RL(t,e,r){let n={appId:t.appId,currentVersion:e,revertedToVersion:r,audited:{name:t.name}};await S("app:version:reverted",n)}s(RL,"versionReverted");async function CL(t){let e={appId:t.appId,audited:{name:t.name}};await S("app:reverted",e)}s(CL,"reverted");async function DL(t){let e={appId:t.appId,audited:{name:t.name}};await S("app:exported",e)}s(DL,"exported");var e_={created:EL,updated:yL,deleted:TL,published:SL,unpublished:AL,fileImported:_L,duplicated:OL,templateImported:IL,versionUpdated:wL,versionReverted:RL,reverted:CL,exported:DL};async function bL(t){let e={filters:t};await S("audit_log:filtered",e)}s(bL,"filtered");async function xL(t){let e={filters:t};await S("audit_log:downloaded",e)}s(xL,"downloaded");var t_={filtered:bL,downloaded:xL};async function vL(t,e){let n={userId:(await _t.getCurrentIdentity()).id,source:t,audited:{email:e}};await S("auth:login",n)}s(vL,"login");async function NL(t){let r={userId:(await _t.getCurrentIdentity()).id,audited:{email:t}};await S("auth:logout",r)}s(NL,"logout");async function PL(t,e){let r={type:t};await S("auth:sso:created",r,e)}s(PL,"SSOCreated");async function LL(t){let e={type:t};await S("auth:sso:updated",e)}s(LL,"SSOUpdated");async function UL(t,e){let r={type:t};await S("auth:sso:activated",r,e)}s(UL,"SSOActivated");async function kL(t){let e={type:t};await S("auth:sso:deactivated",e)}s(kL,"SSODeactivated");var ic={login:vL,logout:NL,SSOCreated:PL,SSOUpdated:LL,SSOActivated:UL,SSODeactivated:kL};async function ML(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(ML,"created");async function FL(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(FL,"triggerUpdated");async function BL(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(BL,"deleted");async function WL(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(WL,"tested");var GL=s(async(t,e)=>{let r={count:t};await S("automations:run",r,e)},"run");async function $L(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($L,"stepCreated");async function VL(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(VL,"stepDeleted");var r_={created:ML,triggerUpdated:FL,deleted:BL,tested:WL,run:GL,stepCreated:$L,stepDeleted:VL};var Ri=!E.SELF_HOSTED&&!E.isDev();async function qL(t){Ri||await S("app:backfill:succeeded",t)}s(qL,"appSucceeded");async function KL(t){if(Ri)return;let e={error:JSON.stringify(t,Object.getOwnPropertyNames(t))};await S("app:backfill:failed",e)}s(KL,"appFailed");async function QL(t){Ri||await S("tenant:backfill:succeeded",t)}s(QL,"tenantSucceeded");async function jL(t){if(Ri)return;let e={error:JSON.stringify(t,Object.getOwnPropertyNames(t))};await S("tenant:backfill:failed",e)}s(jL,"tenantFailed");async function HL(){if(Ri)return;let t={};await S("installation:backfill:succeeded",t)}s(HL,"installationSucceeded");async function YL(t){if(Ri)return;let e={error:JSON.stringify(t,Object.getOwnPropertyNames(t))};await S("installation:backfill:failed",e)}s(YL,"installationFailed");var n_={appSucceeded:qL,appFailed:KL,tenantSucceeded:QL,tenantFailed:jL,installationSucceeded:HL,installationFailed:YL};async function zL(t){let e={appId:t.appId,restoreId:t._id,backupCreatedAt:t.timestamp,name:t.name};await S("app:backup:restored",e)}s(zL,"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 i_={workspaceBackupRestored:zL,workspaceBackupTriggered:JL};function am(t){return!Object.values(Vo).includes(t.source)}s(am,"isCustom");async function XL(t,e){let r={datasourceId:t._id,source:t.source,custom:am(t)};await S("datasource:created",r,e)}s(XL,"created");async function ZL(t){let e={datasourceId:t._id,source:t.source,custom:am(t)};await S("datasource:updated",e)}s(ZL,"updated");async function eU(t){let e={datasourceId:t._id,source:t.source,custom:am(t)};await S("datasource:deleted",e)}s(eU,"deleted");var s_={created:XL,updated:ZL,deleted:eU};async function tU(t){let e={};await S("email:smtp:created",e,t)}s(tU,"SMTPCreated");async function rU(){let t={};await S("email:smtp:updated",t)}s(rU,"SMTPUpdated");var o_={SMTPCreated:tU,SMTPUpdated:rU};async function nU(t,e){let r={name:t,environments:e};await S("environment_variable:created",r)}s(nU,"created");async function iU(t){let e={name:t};await S("environment_variable:deleted",e)}s(iU,"deleted");async function sU(t){let e={userId:t};await S("environment_variable:upgrade_panel_opened",e)}s(sU,"upgradePanelOpened");var a_={created:nU,deleted:iU,upgradePanelOpened:sU};async function oU(t,e){let r={groupId:t._id,viaScim:Et(),audited:{name:t.name}};await S("user_group:created",r,e)}s(oU,"created");async function aU(t){let e={groupId:t._id,viaScim:Et(),audited:{name:t.name}};await S("user_group:updated",e)}s(aU,"updated");async function uU(t){let e={groupId:t._id,viaScim:Et(),audited:{name:t.name}};await S("user_group:deleted",e)}s(uU,"deleted");async function cU(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(cU,"usersAdded");async function lU(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(lU,"usersDeleted");async function dU(t){let e={groupId:t,onboarding:!0};await S("user_group:onboarding_added",e)}s(dU,"createdOnboarding");async function fU(t){let e={permissions:t.roles,groupId:t._id,audited:{name:t.name}};await S("user_group:permissions_edited",e)}s(fU,"permissionsEdited");var u_={created:oU,updated:aU,deleted:uU,usersAdded:cU,usersDeleted:lU,createdOnboarding:dU,permissionsEdited:fU};async function pU(t){let e={currentVersion:t};await S("installation:version:checked",e)}s(pU,"versionChecked");async function mU(t,e){let r={from:t,to:e};await S("installation:version:upgraded",r)}s(mU,"upgraded");async function hU(t,e){let r={from:t,to:e};await S("installation:version:downgraded",r)}s(hU,"downgraded");async function gU(){let t={};await S("installation:firstStartup",t)}s(gU,"firstStartup");var Ao={versionChecked:pU,upgraded:mU,downgraded:hU,firstStartup:gU};async function EU(t,e){let r={layoutId:t._id};await S("layout:created",r,e)}s(EU,"created");async function yU(t){let e={layoutId:t};await S("layout:deleted",e)}s(yU,"deleted");var c_={created:EU,deleted:yU};async function TU(t,e){let r={accountId:t.accountId,...e};await S("license:plan:changed",r)}s(TU,"planChanged");async function SU(t){let e={accountId:t.accountId};await S("license:activated",e)}s(SU,"activated");async function AU(t){let e={accountId:t.accountId};await S("license:checkout:opened",e)}s(AU,"checkoutOpened");async function _U(t){let e={accountId:t.accountId};await S("license:checkout:success",e)}s(_U,"checkoutSuccess");async function OU(t){let e={accountId:t.accountId};await S("license:portal:opened",e)}s(OU,"portalOpened");async function IU(t){let e={accountId:t.accountId};await S("license:payment:failed",e)}s(IU,"paymentFailed");async function wU(t){let e={accountId:t.accountId};await S("license:payment:recovered",e)}s(wU,"paymentRecovered");var l_={planChanged:TU,activated:SU,checkoutOpened:AU,checkoutSuccess:_U,portalOpened:OU,paymentFailed:IU,paymentRecovered:wU};async function RU(t){let e={};await S("org:info:name:updated",e,t)}s(RU,"nameUpdated");async function CU(t){let e={};await S("org:info:logo:updated",e,t)}s(CU,"logoUpdated");async function DU(t){let e={};await S("org:platformurl:updated",e,t)}s(DU,"platformURLUpdated");async function bU(){let t={};await S("analytics:opt:out",t)}s(bU,"analyticsOptOut");async function xU(){let t={};await S("analytics:opt:out",t)}s(xU,"analyticsOptIn");var d_={nameUpdated:RU,logoUpdated:CU,platformURLUpdated:DU,analyticsOptOut:bU,analyticsOptIn:xU};async function vU(t){let e={type:t.schema.type,name:t.name,description:t.description,version:t.version};await S("plugin:init",e)}s(vU,"init");async function NU(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(NU,"imported");async function PU(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(PU,"deleted");var f_={init:vU,imported:NU,deleted:PU};var LU=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"),UU=s(async(t,e)=>{let r={queryId:e._id,datasourceId:t._id,source:t.source,queryVerb:e.queryVerb};await S("query:updated",r)},"updated"),kU=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"),MU=s(async(t,e,r)=>{let n={datasourceId:t._id,source:t.source,count:r,importSource:e};await S("query:import",n)},"imported"),FU=s(async(t,e)=>{let r={count:t};await S("queries:run",r,e)},"run"),BU=s(async(t,e)=>{let r={queryId:e.queryId,datasourceId:t._id,source:t.source,queryVerb:e.queryVerb};await S("query:previewed",r)},"previewed"),p_={created:LU,updated:UU,deleted:kU,imported:MU,run:FU,previewed:BU};async function WU({resource:t,fromWorkspace:e,toWorkspace:r},n){let i={resource:t,fromWorkspace:e,toWorkspace:r};await S("resource:copied_to_workspace",i,n)}s(WU,"duplicatedToWorkspace");var m_={duplicatedToWorkspace:WU};async function GU(t,e){let r={roleId:t._id,permissionId:t.permissionId,inherits:t.inherits};await S("role:created",r,e)}s(GU,"created");async function $U(t){let e={roleId:t._id,permissionId:t.permissionId,inherits:t.inherits};await S("role:updated",e)}s($U,"updated");async function VU(t){let e={roleId:t._id,permissionId:t.permissionId,inherits:t.inherits};await S("role:deleted",e)}s(VU,"deleted");async function qU(t,e,r){let n={userId:t._id,roleId:e};await S("role:assigned",n,r)}s(qU,"assigned");async function KU(t,e){let r={userId:t._id,roleId:e};await S("role:unassigned",r)}s(KU,"unassigned");var Ro={created:GU,updated:$U,deleted:VU,assigned:qU,unassigned:KU};async function QU(t,e){await S("row_action:created",t,e)}s(QU,"created");var h_={created:QU};var jU=s(async(t,e)=>{let r={count:t};await S("rows:created",r,e)},"created"),HU=s(async(t,e)=>{let r={tableId:t._id,count:e};await S("rows:imported",r)},"imported"),g_={created:jU,imported:HU};async function YU(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(YU,"created");async function zU(t){let e={layoutId:t.layoutId,screenId:t._id,roleId:t.routing.roleId,audited:{name:t.routing?.route}};await S("screen:deleted",e)}s(zU,"deleted");var E_={created:YU,deleted:zU};async function JU(t){let e={timezone:t};await S("served:builder",e)}s(JU,"servedBuilder");async function XU(t,e,r){let n={appVersion:t.version,timezone:e,embed:r===!0};await S("served:app",n)}s(XU,"servedApp");async function ZU(t,e){let r={appId:t.appId,appVersion:t.version,timezone:e};await S("served:app:preview",r)}s(ZU,"servedAppPreview");var y_={servedBuilder:JU,servedApp:XU,servedAppPreview:ZU};async function e0(t,e){let r={tableId:t._id,audited:{name:t.name}};await S("table:created",r,e)}s(e0,"created");async function t0(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(t0,"updated");async function r0(t,e){let r={tableId:t._id,audited:{name:t.name},appId:e};await S("table:deleted",r)}s(r0,"deleted");async function n0(t,e){let r={tableId:t._id,format:e,audited:{name:t.name}};await S("table:exported",r)}s(n0,"exported");async function i0(t){let e={tableId:t._id,audited:{name:t.name}};await S("table:imported",e)}s(i0,"imported");var T_={created:e0,updated:t0,deleted:r0,exported:n0,imported:i0};async function s0(t,e){let r={userId:t._id,viaScim:Et(),audited:{email:t.email}};await S("user:created",r,e)}s(s0,"created");async function o0(t){let e={userId:t._id,viaScim:Et(),audited:{email:t.email}};await S("user:updated",e)}s(o0,"updated");async function a0(t){let e={userId:t._id,viaScim:Et(),audited:{email:t.email}};await S("user:deleted",e)}s(a0,"deleted");async function u0(t,e){let r={userId:t._id,audited:{email:t.email}};await S("user:admin:assigned",r,e)}s(u0,"permissionAdminAssigned");async function c0(t){let e={userId:t._id,audited:{email:t.email}};await S("user:admin:removed",e)}s(c0,"permissionAdminRemoved");async function l0(t,e){let r={userId:t._id,audited:{email:t.email}};await S("user:builder:assigned",r,e)}s(l0,"permissionBuilderAssigned");async function d0(t){let e={userId:t._id,audited:{email:t.email}};await S("user:builder:removed",e)}s(d0,"permissionBuilderRemoved");async function f0(t){let e={audited:{email:t}};await S("user:invited",e)}s(f0,"invited");async function p0(t){let e={userId:t._id,audited:{email:t.email}};await S("user:invite:accepted",e)}s(p0,"inviteAccepted");async function m0(t){let e={userId:t._id,audited:{email:t.email}};await S("user:password:force:reset",e)}s(m0,"passwordForceReset");async function h0(t){let e={userId:t._id,audited:{email:t.email}};await S("user:password:updated",e)}s(h0,"passwordUpdated");async function g0(t){let e={userId:t._id,audited:{email:t.email}};await S("user:password:reset:requested",e)}s(g0,"passwordResetRequested");async function E0(t){let e={userId:t._id,audited:{email:t.email}};await S("user:password:reset",e)}s(E0,"passwordReset");async function y0(t){let e={users:t};await S("user:data:collaboration",e)}s(y0,"dataCollaboration");var Ce={created:s0,updated:o0,deleted:a0,permissionAdminAssigned:u0,permissionAdminRemoved:c0,permissionBuilderAssigned:l0,permissionBuilderRemoved:d0,invited:f0,inviteAccepted:p0,passwordForceReset:m0,passwordUpdated:h0,passwordResetRequested:g0,passwordReset:E0,dataCollaboration:y0};async function T0(t,e){let r={name:t.name,type:t.type,tableId:t.tableId};await S("view:created",r,e)}s(T0,"created");async function S0(t){let e={tableId:t.tableId};await S("view:updated",e)}s(S0,"updated");async function A0(t,e){let r={...ke.views.isV2(t)?{id:t.id,tableId:t.tableId,appId:e}:{}};await S("view:deleted",r)}s(A0,"deleted");async function _0(t,e){let r={tableId:t._id,format:e};await S("view:exported",r)}s(_0,"exported");async function O0({tableId:t,filterGroups:e},r){let n={tableId:t,filterGroups:e};await S("view:filter:created",n,r)}s(O0,"filterCreated");async function I0({tableId:t,filterGroups:e}){let r={tableId:t,filterGroups:e};await S("view:filter:updated",r)}s(I0,"filterUpdated");async function w0(t){let e={tableId:t.tableId};await S("view:filter:deleted",e)}s(w0,"filterDeleted");async function R0({tableId:t,calculationType:e},r){let n={tableId:t,calculation:e};await S("view:calculation:created",n,r)}s(R0,"calculationCreated");async function C0(t){let e={tableId:t.tableId,calculation:t.calculation};await S("view:calculation:updated",e)}s(C0,"calculationUpdated");async function D0(t){let e={tableId:t.tableId,calculation:t.calculation};await S("view:calculation:deleted",e)}s(D0,"calculationDeleted");async function b0(t,e){let r={tableId:t};await S("view:join:created",r,e)}s(b0,"viewJoinCreated");var S_={created:T0,updated:S0,deleted:A0,exported:_0,filterCreated:O0,filterUpdated:I0,filterDeleted:w0,calculationCreated:R0,calculationUpdated:C0,calculationDeleted:D0,viewJoinCreated:b0};async function x0(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(x0,"appCreated");async function v0(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(v0,"appUpdated");async function N0(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(N0,"appDeleted");var A_={appCreated:x0,appUpdated:v0,appDeleted:N0};function P0(){}s(P0,"initAsyncEvents");var L0=s(async()=>{await rr.shutdown(),console.log("Events shutdown")},"shutdown");var cm={};P(cm,{creatorsInList:()=>Lr,getAccountHolderFromUsers:()=>cc,hasAdminPermissions:()=>Pr,hasAppBuilderPermissions:()=>R_,hasBuilderPermissions:()=>We,isAdmin:()=>Lt,isAdminOrBuilder:()=>w_,isAdminOrWorkspaceBuilder:()=>oc,isBuilder:()=>Ci,isCreatorAsync:()=>Do,isCreatorSync:()=>ac,isGlobalBuilder:()=>I_,validateUniqueUser:()=>uc});async function um(t){let e=[],r=await __(t);e.push(...r.map(a=>a.email));let n=await O_(t);e.push(...n.map(a=>a._id));let i=await Oi(t);e.push(...i.map(a=>a.email));let o=await Wp(t);return e.push(...o.map(a=>a.email)),[...new Set(e.map(a=>a.toLowerCase()))]}s(um,"searchExistingEmails");async function sc(t){return await js("platform_users_lowercase_2",{keys:[t.toLowerCase()],include_docs:!0})}s(sc,"getPlatformUsers");async function Co(t){return(await sc(t))[0]??null}s(Co,"getFirstPlatformUser");async function __(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(__,"getExistingTenantUsers");async function O_(t){let r={keys:t.map(n=>n.toLowerCase()),include_docs:!0};return await js("platform_users_lowercase_2",r)}s(O_,"getExistingPlatformUsers");async function Oi(t){let r={keys:t.map(n=>n.toLowerCase()),include_docs:!0};return await js("account_by_email",r)}s(Oi,"getExistingAccounts");var Ci=Me.users.isBuilder,Lt=Me.users.isAdmin,I_=Me.users.isGlobalBuilder,w_=Me.users.isAdminOrBuilder,Pr=Me.users.hasAdminPermissions,We=Me.users.hasBuilderPermissions,R_=Me.users.hasAppBuilderPermissions,oc=Me.users.isAdminOrWorkspaceBuilder;async function Lr(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=>ac(i,e))}s(Lr,"creatorsInList");async function Do(t){let e=[];return t.userGroups&&(e=await z().getMultiple(t.userGroups)),ac(t,e)}s(Do,"isCreatorAsync");function ac(t,e){let r=Me.users.isCreator(t);return!r&&t?U0(t,e):r}s(ac,"isCreatorSync");function U0(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(U0,"isCreatorByGroupMembership");async function uc(t,e){if(E.MULTI_TENANCY){let r=await Co(t);if(r!=null&&r.tenantId!==e)throw new er(t)}if(!E.SELF_HOSTED&&!E.DISABLE_ACCOUNT_PORTAL){let r=await Nr(t);if(r&&r.verified&&r.tenantId!==e)throw new er(t)}}s(uc,"validateUniqueUser");async function cc(t){if(!E.SELF_HOSTED&&!E.DISABLE_ACCOUNT_PORTAL){let e=await Oi(t.map(r=>r.email));return t.find(r=>e.map(n=>n.email).includes(r.email))}}s(cc,"getAccountHolderFromUsers");var lm=s(async t=>{await Ce.deleted(t),We(t)&&await Ce.permissionBuilderRemoved(t),Pr(t)&&await Ce.permissionAdminRemoved(t)},"handleDeleteEvents"),k0=s(async(t,e,r)=>{for(let[n,i]of Object.entries(e))(!r||r[n]!==i)&&await Ro.assigned(t,i)},"assignAppRoleEvents"),M0=s(async(t,e,r)=>{if(r)for(let[n,i]of Object.entries(r))(!e||e[n]!==i)&&await Ro.unassigned(t,i)},"unassignAppRoleEvents"),F0=s(async(t,e)=>{let r=t.roles,n=e?.roles;await k0(t,r,n),await M0(t,r,n)},"handleAppRoleEvents"),dm=s(async(t,e,r)=>{let n=r;!n&&!E.SELF_HOSTED&&!E.DISABLE_ACCOUNT_PORTAL&&(n=await Ti(V())),await _t.identifyUser(t,n),e?(await Ce.updated(t),W0(t,e)&&await Ce.permissionBuilderRemoved(t),$0(t,e)&&await Ce.permissionAdminRemoved(t),!e.forceResetPassword&&t.forceResetPassword&&t.password&&await Ce.passwordForceReset(t),t.password!==e.password&&await Ce.passwordUpdated(t)):await Ce.created(t),B0(t,e)&&await Ce.permissionBuilderAssigned(t),G0(t,e)&&await Ce.permissionAdminAssigned(t),await F0(t,e)},"handleSaveEvents"),B0=s((t,e)=>C_(t,e,We),"isAddingBuilder"),W0=s((t,e)=>D_(t,e,We),"isRemovingBuilder"),G0=s((t,e)=>C_(t,e,Pr),"isAddingAdmin"),$0=s((t,e)=>D_(t,e,Pr),"isRemovingAdmin"),C_=s((t,e,r)=>!(!r(t)||e&&r(e)),"isAddingPermission"),D_=s((t,e,r)=>!(r(t)||!e||!r(e)),"isRemovingPermission");var K0=s(async t=>{let e=t._id;await St.removeUser(t),await lm(t),await nr.invalidateUser(e),await In(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 E.ENABLE_SSO_MAINTENANCE_MODE&&Lt(e)?!1:await t.features.isSSOEnforced()||vn(e)?!0:(r||(r=await Ti(V())),!!(r&&r.email===e.email&&Ho(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 Be("Password change is disabled for this user",400);if(!r.skipPasswordValidation){let f=jp(a);if(!f.valid)throw new Be(f.error,400)}c=r.hashPassword?await df(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||ai();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(fn(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 Hs("by_app",ui(e,{include_docs:!1}))).rows.length}}static async getUsersByAppAccess(e){return await fm(e.appId,{limit:e.limit||50})}static async getUserByEmail(e){return ut(e)}static async getUser(e){let r=await Ur(e);return r&&delete r.password,r}static async bulkGet(e){return await lc(e)}static async bulkUpdate(e){let r=await bo(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=V(),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 Ur(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 ut(o),l&&l._id!==a))throw new er(o);let d=!l,f=!!l&&!!o&&l.email!==o,g=!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,h=0;if((r.isAccountHolder||l)&&(y=0,h=1),l){let[p,T]=await Lr([l,e]);h=p!==T?1:0}else if(!r.isAccountHolder){let p=m.length>0?{...e,userGroups:m}:e;h=(await Lr([p]))[0]?1:0}return t.quotas.addUsers(y,h,async()=>{g&&await uc(o,n);let p=await t.buildUser(e,r,n,l);r.currentUserId&&r.currentUserId===l?._id&&(p=pm(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 dm(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=V(),i=[],o=[],a=[],u=e.map(y=>y.email),c=await um(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 h=o.find(T=>T.email.toLowerCase()===y.email.toLowerCase()),p=c.includes(y.email.toLowerCase());if(h||p){l.push({email:y.email,reason:"Unavailable"});continue}y.userGroups=[...f],o.push(y),await Do(y)&&a.push(y)}let g=await Ti(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,g));let y=await Promise.all(i);await bo(y);for(let p of y)await St.addUser(n,p._id,p.email),await dm(p,void 0,g);let h=y.map(p=>({_id:p._id,email:p.email}));if(Array.isArray(h)&&f.length){let p=[],T=h.map(A=>A._id);for(let A of f)p.push(t.groups.addUsers(A,T));await Promise.all(p)}return{successful:h,unsuccessful:l}})}static async bulkDelete(e){let r=z(),n={successful:[],unsuccessful:[]},i=await cc(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 bo(u),d=(await Lr(a)).filter(m=>m).length,f=[];for(let m of a){let h=(await Co(m._id)).ssoId;h&&(await sc(h)).filter(T=>T.ssoId==null).forEach(T=>{f.push({...T,_deleted:!0})}),await K0(m)}await vr().bulkDocs(f),await t.quotas.removeUsers(u.length,d);let g={};return a.reduce((m,y)=>(m[y._id]=y,m),g),c.forEach(m=>{let y=g[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(!E.SELF_HOSTED&&!E.DISABLE_ACCOUNT_PORTAL){let a=n.email;if(await Nr(a))throw n.userId===Qt()._id?new Be('Please visit "Account" to delete this user',400):new Be("Account holder cannot be deleted",400)}await St.removeUser(n),await r.remove(i,n._rev);let o=await Do(n)?1:0;await t.quotas.removeUsers(1,o),await lm(n),await nr.invalidateUser(i),await In(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 Ei(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 xo(t){return Array.isArray(t)?t.map(e=>{if(e)return delete e.password,e}):t&&(delete t.password,t)}s(xo,"removeUserPassword");async function lc(t,e){let n=(await z().allDocs({keys:t,include_docs:!0})).rows.map(i=>i.doc);return e?.cleanup&&(n=xo(n)),n}s(lc,"bulkGetGlobalUsersById");async function j0(){let t=z(),e=`us${"_"}`;return(await t.allDocs({startkey:e,endkey:`${e}${"\uFFF0"}`})).rows.map(n=>n.id)}s(j0,"getAllUserIds");async function H0(){let t=z(),e=`us${"_"}`;return(await t.allDocs({startkey:e,endkey:`${e}${"\uFFF0"}`,include_docs:!0})).rows.map(n=>n.doc)}s(H0,"getAllUsers");async function bo(t){return await z().bulkDocs(t)}s(bo,"bulkUpdateGlobalUsers");async function Ur(t,e){let n=await z().get(t);return e?.cleanup&&(n=xo(n)),n}s(Ur,"getById");async function ut(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=xo(n)),n}s(ut,"getGlobalUserByEmail");async function Y0(t){try{let e=await ut(t);if(Array.isArray(e)||e!=null)return!0}catch{return!1}return!1}s(Y0,"doesUserExist");async function b_(t,e,r){if(typeof t!="string")throw new Error("Must provide a string based workspace ID");let n=ui(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=xo(o)),o}s(b_,"searchGlobalUsersByApp");async function fm(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(fm,"searchGlobalUsersByAppAccess");function x_(t,e){if(e)return Eu(He(t),e._id)}s(x_,"getGlobalUserByAppPage");async function v_(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=xo(a)),a}s(v_,"searchGlobalUsersByEmail");var z0=8;async function N_({bookmark:t,query:e,appId:r,limit:n}={}){let i=z(),o=n??z0,u={include_docs:!0,limit:o+1};t&&(u.startkey=t);let c,l="_id",d;return e?.equal?._id?c=[await Ur(e.equal._id)]:r?(c=await b_(r,u),d=s(f=>x_(r,f),"getKey")):e?.string?.email?(c=await v_(e?.string?.email,u),l="email"):e?.oneOf?._id?c=await lc(e?.oneOf?._id,{cleanup:!0}):e?(c=(await i.allDocs(fn(null,{...u,limit:void 0}))).rows.map(g=>g.doc),c=Er.search(c,{query:e,limit:u.limit}).rows):c=(await i.allDocs(fn(null,u))).rows.map(g=>g.doc),Yf(c,o,{paginate:!0,property:l,getKey:d})}s(N_,"paginatedUsers");async function J0(){return(await Hs("by_email2",{limit:0,include_docs:!1})).total_rows}s(J0,"getUserCount");async function X0(){let t=0;async function e(r){let n=await N_({bookmark:r}),i=await Lr(n.data);t+=i.filter(o=>o).length,n.hasNextPage&&await e(n.nextPage)}return s(e,"iterate"),await e(),t}s(X0,"getCreatorCount");function Z0(t){return delete t.admin,delete t.builder,t}s(Z0,"removePortalUserPermissions");function pm(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(pm,"cleanseUserObject");async function ek(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(ek,"addAppBuilder");async function tk(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(tk,"removeAppBuilder");function mm(t){let e=t.apps||{},r=Object.keys(e).filter(u=>e[u]==="CREATOR"),n=[...t.builder?.apps||[],...r],i=[...new Set(n)],o=!!t.builder?.creator||r.length>0,a={roles:e,admin:{global:t.admin?.global||!1}};return(t.builder||o||i.length)&&(a.builder={global:t.builder?.global||!1},o&&(a.builder.creator=!0),i.length&&(a.builder.apps=i)),t.userGroups?.length&&(a.userGroups=t.userGroups),a}s(mm,"deriveUserFieldsFromInvite");var P_=3600;async function rk(t,e){let n=await ep(e).get(t);if(n.budibaseAccess=!0,!E.SELF_HOSTED&&!E.DISABLE_ACCOUNT_PORTAL){let i=await Nr(n.email);i&&(n.account=i,n.accountPortalAccess=!0)}return n}s(rk,"populateFromDB");async function nk(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,!E.SELF_HOSTED&&!E.DISABLE_ACCOUNT_PORTAL){let o=await Nr(i.email);o&&(i.account=o,i.accountPortalAccess=!0)}})),r.length?{users:n,notFoundIds:r}:{users:n}}s(nk,"populateUsersFromDB");async function vo({userId:t,tenantId:e,email:r,populateUser:n}){if(n||(n=rk),!e)try{e=V()}catch{e=await St.lookupTenantId(t)}let i=await oi(),o=await i.get(t);return o||(o=await n(t,e,r),await i.store(t,o,P_)),o&&!o.tenantId&&e&&(o.tenantId=e),o.userGroups&&!Me.users.isGlobalBuilder(o)&&await be(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(vo,"getUser");async function ik(t){let e=await oi(),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 nk(n);o=a.notFoundIds;for(let u of a.users)await e.store(u._id,u,P_);i.push(...a.users)}return{users:i,notFoundIds:o}}s(ik,"getUsers");async function No(t){await(await oi()).delete(t)}s(No,"invalidateUser");async function sk(t){if(t.length===0)return;await(await oi()).bulkDelete(t)}s(sk,"invalidateUsers");var ym={};P(ym,{Writethrough:()=>gm});var L_=1e4,hm=null;async function dc(){if(!hm){let t=await Gf();hm=new En(t)}return hm}s(dc,"getCache");function Po(t,e){return t.name+e}s(Po,"makeCacheKey");function Em(t,e=null){return{doc:t,lastWrite:e||Date.now()}}s(Em,"makeCacheItem");async function ok(t,e,r=L_){let n=await dc(),i=e._id,o;i&&(o=await n.get(Po(t,i)));let a=!o||o.lastWrite<Date.now()-r,u=e;return a&&((await Sn({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;hi("Ignoring conflict in write-through cache")}})).executed||hi("Ignoring redlock conflict in write-through cache")),o=Em(u,a?null:o?.lastWrite),u._id&&await n.store(Po(t,u._id),o),{ok:!0,id:u._id,rev:u._rev}}s(ok,"put");async function ak(t,e){let r=await dc(),n=Po(t,e),i=await r.get(n);if(!i){let o=await t.get(e);i=Em(o),await r.store(n,i)}return i.doc}s(ak,"get");async function uk(t,e){let r=await dc(),n=Po(t,e),i=await r.get(n);if(!i){let o=await t.tryGet(e);if(!o)return null;i=Em(o),await r.store(n,i)}return i.doc}s(uk,"tryGet");async function ck(t,e,r){let n=await dc();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(Po(t,i))}finally{await t.remove(i,r)}}s(ck,"remove");var gm=class{static{s(this,"Writethrough")}constructor(e,r=L_){this.db=e,this.writeRateMs=r}async put(e,r=this.writeRateMs){return ok(this.db,e,r)}async get(e){return ak(this.db,e)}async tryGet(e){return uk(this.db,e)}async remove(e,r){return ck(this.db,e,r)}};function Lo(t){return`config${"_"}${t}`}s(Lo,"generateConfigID");var fc="en";function lk(){return{_id:Lo("translations"),type:"translations",config:{defaultLocale:fc,locales:{[fc]:{label:"English",overrides:{}}}}}}s(lk,"createDefaultTranslationsConfig");function dk(t){let e=t?.defaultLocale||fc,r={...t?.locales??{}};r[e]||(r[e]={label:e===fc?"English":e,overrides:{}});for(let n of Object.keys(r))r[n].overrides||(r[n]={...r[n],overrides:{}});return{defaultLocale:e,locales:r}}s(dk,"prepareTranslationsConfig");async function Ge(t){let e=z();try{return await e.get(Lo(t))}catch(r){if(r.status===404)return;throw r}}s(Ge,"getConfig");async function fk(t){return t._id||(t._id=Lo(t.type)),z().put(t)}s(fk,"save");async function U_(){let t=await Ge("translations");return t?(t.config=dk(t.config),t):lk()}s(U_,"getTranslationsConfigDoc");async function pk(){return(await U_()).config}s(pk,"getTranslationsConfig");async function wi(){let t=await Ge("settings");return t||(t={_id:Lo("settings"),type:"settings",config:{}}),t.config.platformUrl=await Uo({tenantAware:!0,config:t.config}),t.config.analyticsEnabled=await Zu({config:t.config}),t}s(wi,"getSettingsConfigDoc");async function Sm(){return(await wi()).config}s(Sm,"getSettingsConfig");async function Uo(t={tenantAware:!0}){let e=E.PLATFORM_URL||"http://localhost:10000";if(!E.SELF_HOSTED&&E.MULTI_TENANCY&&t.tenantAware){let r=V();e.includes("localhost:")||(e=e.replace("://",`://${r}.`))}else if(E.SELF_HOSTED){let r=t?.config?t.config:(await Ge("settings"))?.config;r?.platformUrl&&(e=r.platformUrl)}return e}s(Uo,"getPlatformUrl");var Zu=s(async t=>{if(!E.SELF_HOSTED)return!!E.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=E.ENABLE_ANALYTICS;return!(r===0||r===!1)},"analyticsEnabled");async function mk(){return await Ge("google")}s(mk,"getGoogleConfigDoc");async function mc(){return(await mk())?.config}s(mc,"getGoogleConfig");async function Am(){if(!E.SELF_HOSTED)return Tm();let t=await mc();return(!t||!t.activated)&&(t=Tm()),t}s(Am,"getGoogleDatasourceConfig");function Tm(){if(E.GOOGLE_CLIENT_ID&&E.GOOGLE_CLIENT_SECRET)return{clientID:E.GOOGLE_CLIENT_ID,clientSecret:E.GOOGLE_CLIENT_SECRET,activated:!0}}s(Tm,"getDefaultGoogleConfig");async function hk(){return Ge("logos_oidc")}s(hk,"getOIDCLogosDoc");async function gk(){return Ge("oidc")}s(gk,"getOIDCConfigDoc");async function Ek(){let t=(await gk())?.config;return t?.configs&&t.configs[0]}s(Ek,"getOIDCConfig");async function _m(t){let e=(await Ge("oidc"))?.config;return e&&e.configs.filter(r=>r.uuid===t)[0]}s(_m,"getOIDCConfigById");async function k_(){return Ge("smtp")}s(k_,"getSMTPConfigDoc");async function yk(t){let e=await k_();if(e)return e.config;let r=E.SELF_HOSTED||!t;if(E.SMTP_FALLBACK_ENABLED&&r)return{port:E.SMTP_PORT,host:E.SMTP_HOST,secure:!1,from:E.SMTP_FROM_ADDRESS,auth:{user:E.SMTP_USER,pass:E.SMTP_PASSWORD},fallback:!0}}s(yk,"getSMTPConfig");async function Tk(){return(await Ge("scim"))?.config}s(Tk,"getSCIMConfig");async function Sk(){return Ge("recaptcha")}s(Sk,"getRecaptchaConfig");var Nm={};P(Nm,{AccessController:()=>wm,BUILTIN_ROLE_IDS:()=>Rm,Role:()=>kr,RoleHierarchyTraversal:()=>hc,RoleIDVersion:()=>Cm,builtinRoleToNumber:()=>ko,checkForRoleResourceArray:()=>W_,externalRole:()=>Rk,findRole:()=>Mo,getAllRoleIds:()=>xk,getAllRoles:()=>vm,getBuiltinRole:()=>F_,getBuiltinRoles:()=>bm,getDBRoleID:()=>G_,getExternalRoleID:()=>Mr,getExternalRoleIDs:()=>$_,getRole:()=>Ck,getUserRoleHierarchy:()=>xm,getUserRoleIdHierarchy:()=>B_,isBuiltin:()=>Fr,lowerBuiltinRoleID:()=>wk,prefixRoleIDNoBuiltin:()=>Im,roleIDsAreEqual:()=>ze,roleToNumber:()=>Ik,saveRoles:()=>Dk,validInherits:()=>Ok});var M_=require("lodash"),gc=W(require("lodash/fp/cloneDeep")),Om=W(require("semver"));var Rm={ADMIN:"ADMIN",POWER:"POWER",BASIC:"BASIC",PUBLIC:"PUBLIC"},ne={...Rm,BUILDER:"BUILDER"},Cm={UUID:void 0,NAME:"name"};function _k(t,e){return Array.isArray(e)?e.filter(r=>t.includes(r)).length===e.length:t.includes(e)}s(_k,"rolesInList");var kr=class{constructor(e,r,n,i){this.permissions={};this._id=e,this.name=r,this.uiMetadata=i,this.permissionId=n,this.version=Cm.NAME}static{s(this,"Role")}addInheritance(e){return e&&typeof e=="string"?e=Im(e):e&&Array.isArray(e)&&(e=e.map(Im)),this.inherits=e,this}},hc=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=Mo(o,n,r);a&&(i=i.concat(this.walk(a)))}else{let o=[],a=e;for(;a&&a.inherits&&!_k(o,a.inherits);){if(Array.isArray(a.inherits))return i.concat(this.walk(a));if(o.push(a.inherits),a=Mo(a.inherits,n,r),a&&i.push(a),ke.roles.checkForRoleInheritanceLoops(i))break}}return(0,M_.uniqBy)(i,o=>o._id)}},Dm={ADMIN:new kr(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 kr(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 kr(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 kr(ne.PUBLIC,ne.PUBLIC,"public",{displayName:"Public user",description:"Accessible to anyone",color:"var(--spectrum-global-color-static-blue-400)"}),BUILDER:new kr(ne.BUILDER,ne.BUILDER,"admin",{displayName:"Builder user",description:"Users that can edit this app",color:"var(--spectrum-global-color-static-magenta-600)"})};function bm(){return(0,gc.default)(Dm)}s(bm,"getBuiltinRoles");function Fr(t){return Object.values(Rm).includes(t)}s(Fr,"isBuiltin");function Im(t){return Fr(t)?t:jt(t)}s(Im,"prefixRoleIDNoBuiltin");function F_(t){let e=Object.values(Dm).find(r=>t.includes(r._id));if(e)return(0,gc.default)(e)}s(F_,"getBuiltinRole");function Ok(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(Ok,"validInherits");function ko(t){let e=bm(),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(ko,"builtinRoleToNumber");async function Ik(t){if(Fr(t))return ko(t);let e=await xm(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(Fr(n.inherits))return ko(n.inherits)+1;return 0},"findNumber");return Math.max(...e.map(r))}s(Ik,"roleToNumber");function wk(t,e){return t?e&&ko(t)>ko(e)?e:t:e}s(wk,"lowerBuiltinRoleID");function ze(t,e){return jt(t)===jt(e)}s(ze,"roleIDsAreEqual");function Rk(t){let e;return t._id&&(e=Mr(t._id)),{...t,_id:e,inherits:$_(t.inherits,t.version)}}s(Rk,"externalRole");function Mo(t,e,r){let n=F_(t);n||(t=jt(t));let i=e.find(o=>o._id&&ze(o._id,t));return!i&&!Fr(t)&&r?.defaultPublic?(0,gc.default)(Dm.PUBLIC):(n=Object.assign(n||{},i),n?._id&&(n._id=Mr(n._id,n.version)),Object.keys(n).length===0?void 0:n)}s(Mo,"findRole");async function Ck(t,e){let r=ii(),n=[];if(!Fr(t)){let i=await r.tryGet(G_(t));i&&n.push(i)}return Mo(t,n,e)}s(Ck,"getRole");async function Dk(t){await ii().bulkDocs(t.filter(r=>r._id).map(r=>({...r,_id:jt(r._id)})))}s(Dk,"saveRoles");async function bk(t,e){let r=await vm();if(ze(t,ne.ADMIN))return r;let n=Mo(t,r,e),i=[];return n&&(i=new hc(r,e).walk(n)),i}s(bk,"getAllUserRoles");async function B_(t){return(await xm(t)).map(r=>r._id)}s(B_,"getUserRoleIdHierarchy");async function xm(t,e){return bk(t,e)}s(xm,"getUserRoleHierarchy");function W_(t,e){if(t&&!Array.isArray(t[e])){let r=t[e];t[e]=[r],r==="write"&&t[e].push("read")}return t}s(W_,"checkForRoleResourceArray");async function xk(t){return(await vm(t)).map(r=>r._id)}s(xk,"getAllRoleIds");async function vm(t){if(t)return je(t,e);{let r;try{r=ii()}catch{}return e(r)}async function e(r){let n=[];r&&(n=(await r.allDocs(yu(null,{include_docs:!0}))).rows.map(u=>u.doc),n.forEach(u=>u._id=Mr(u._id,u.version)));let i=bm(),o=[];!r||await vk(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=Mr(u._id,c.version),n.push({...u,...c,name:u.name,_id:Mr(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=W_(a.permissions,u);return n}s(e,"internal")}s(vm,"getAllRoles");async function vk(t){if(await Nk(t))return!0;let r=(await t.tryGet("app_metadata"))?.creationVersion;return!r||!Om.default.valid(r)?!0:!Om.default.gte(r,E.MIN_VERSION_WITHOUT_POWER_ROLE)}s(vk,"shouldIncludePowerRole");async function Nk(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=>!Fr(i))}s(Nk,"hasLegacyPowerRole");var wm=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 B_(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 G_(t){return t?.startsWith("role")?t:jt(t)}s(G_,"getDBRoleID");function Mr(t,e){if(t.startsWith(`role${"_"}`)&&(Fr(t)||e===Cm.NAME)){let r=t.split("_");return r.shift(),r.join("_")}return t}s(Mr,"getExternalRoleID");function $_(t,e){return t&&(typeof t=="string"?Mr(t,e):t.map(r=>Mr(r,e)))}s($_,"getExternalRoleIDs");var Pm={};P(Pm,{BUILDER:()=>Mk,BUILTIN_PERMISSIONS:()=>Ec,CREATOR:()=>Fk,GLOBAL_BUILDER:()=>Bk,PermissionImpl:()=>oe,PermissionLevel:()=>ki,PermissionType:()=>Qo,doesHaveBasePermission:()=>Uk,getAllowedLevels:()=>Q_,getBuiltinPermissionByID:()=>Lk,getBuiltinPermissions:()=>Pk,isPermissionLevelHigherThanRead:()=>kk,levelToNumber:()=>K_});var V_=W(require("lodash/flatten")),q_=W(require("lodash/fp/cloneDeep"));var oe=class{static{s(this,"PermissionImpl")}constructor(e,r){this.type=e,this.level=r}};function K_(t){switch(t){case"execute":return 0;case"read":return 1;case"write":return 2;case"admin":return 3;default:return-1}}s(K_,"levelToNumber");function Q_(t){switch(t){case"execute":return["execute"];case"read":return["execute","read"];case"write":case"admin":return["execute","read","write"];default:return[]}}s(Q_,"getAllowedLevels");var Ec={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 Pk(){return(0,q_.default)(Ec)}s(Pk,"getBuiltinPermissions");function Lk(t){return Object.values(Ec).find(r=>r._id===t)}s(Lk,"getBuiltinPermissionByID");function Uk(t,e,r){let n=[...new Set(r.map(a=>a.permissionId))],i=Object.values(Ec),o=(0,V_.default)(i.filter(a=>n.indexOf(a._id)!==-1).map(a=>a.permissions));for(let a of o)if(a.type===t&&Q_(a.level).indexOf(e)!==-1)return!0;return!1}s(Uk,"doesHaveBasePermission");function kk(t){return K_(t)>1}s(kk,"isPermissionLevelHigherThanRead");var Mk="builder",Fk="creator",Bk="globalBuilder";var km={};P(km,{FlagSet:()=>Tc,all:()=>Kk,flags:()=>Lm,getEnvFlags:()=>z_,init:()=>Gk,isEnabled:()=>qk,parseEnvFlags:()=>Ac,shutdown:()=>$k,testutils:()=>Um});var Sc=W(require("crypto")),j_=W(require("dd-trace")),H_=require("lodash"),Y_=require("posthog-node");var yc,Wk=s(()=>{let t=E.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 Gk(t){E.POSTHOG_TOKEN&&E.POSTHOG_API_HOST&&!E.SELF_HOSTED&&E.POSTHOG_FEATURE_FLAGS_ENABLED?(console.log("initializing posthog client..."),yc=new Y_.PostHog(E.POSTHOG_TOKEN,{host:E.POSTHOG_API_HOST,personalApiKey:E.POSTHOG_PERSONAL_TOKEN,featureFlagsPollingInterval:Wk(),...t})):console.log("posthog disabled")}s(Gk,"init");function $k(){yc?.shutdown()}s($k,"shutdown");function Ac(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(Ac,"parseEnvFlags");function z_(){return Ac(E.TENANT_FEATURE_FLAGS||"")}s(z_,"getEnvFlags");var Tc=class{constructor(e){this.flagSchema=e;this.setId=Sc.randomUUID()}static{s(this,"FlagSet")}defaults(){return(0,H_.cloneDeep)(this.flagSchema)}isFlagName(e){return this.flagSchema[e]!==void 0}async isEnabled(e){return(await this.fetch())[e]}async fetch(){return await j_.default.trace("features.fetch",async e=>{let r=Uf(this.setId);if(r)return e?.addTags({fromCache:!0}),r;let n={},i=this.defaults(),o=V(),a=new Set;if(nu())return i;for(let{tenantId:f,key:g,value:m}of z_())if(!(!f||f!=="*"&&f!==o)&&(n.readFromEnvironmentVars=!0,m===!1&&a.add(g),!!this.isFlagName(g))){if(typeof i[g]!="boolean")throw new Error(`Feature: ${g} is not a boolean`);i[g]=m,n[`flags.${g}.source`]="environment"}let u=Qt(),c=u?._id;if(!c){let f=Pf();f&&(c=Sc.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,yc&&c){n.readFromPostHog=!0;let f=await wi(),g={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 yc.getAllFlags(c,{personProperties:g,onlyEvaluateLocally:!0,groups:{tenant:l},groupProperties:m});for(let[h,p]of Object.entries(y))if(this.isFlagName(h)){if(typeof p!="boolean"){console.warn(`Invalid value for posthog flag "${h}": ${p}`);continue}if(!(i[h]===!0||a.has(h)))try{i[h]=p,n[`flags.${h}.source`]="posthog"}catch(T){console.warn(`Error parsing posthog flag "${h}": ${p}`,T)}}}let d=Mf();for(let[f,g]of Object.entries(d))this.isFlagName(f)&&typeof g=="boolean"&&(i[f]=g,n[`flags.${f}.source`]="override");kf(this.setId,i);for(let[f,g]of Object.entries(i))n[`flags.${f}.value`]=g;return e?.addTags(n),i})}},Vk={USE_ZOD_VALIDATOR:!1,AI_TESTS:!1,ESCALATION:!1,FRONT_COMPANION:!1,PROJECTS:!1,DEBUG_UI:E.isDev(),DEV_USE_CLIENT_FROM_STORAGE:!1,AI_AGENT_ACTIVITY:!1},Lm=new Tc(Vk);async function qk(t){return await Lm.isEnabled(t)}s(qk,"isEnabled");async function Kk(){return await Lm.fetch()}s(Kk,"all");var Um={};P(Um,{setFeatureFlags:()=>J_,withFeatureFlags:()=>Hk});function Qk(){let t={};for(let{tenantId:e,key:r,value:n}of Ac(process.env.TENANT_FEATURE_FLAGS||"")){let i=t[e]||{};i[r]!==!1&&(i[r]=n,t[e]=i)}return t}s(Qk,"getCurrentFlags");function jk(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(jk,"buildFlagString");function J_(t,e){let r=Qk();for(let[i,o]of Object.entries(e)){let a=r[t]||{};a[i]=o,r[t]=a}let n=jk(r);return Ps({TENANT_FEATURE_FLAGS:n})}s(J_,"setFeatureFlags");function Hk(t,e,r){let n=J_(t,e),i=r();return i instanceof Promise?i.finally(n):(n(),i)}s(Hk,"withFeatureFlags");var zm={};P(zm,{adminOnly:()=>_c,auditLog:()=>Oc,authError:()=>Ie,buildAuthMiddleware:()=>FM,buildCsrfMiddleware:()=>WM,buildTenancyMiddleware:()=>BM,builderOnly:()=>Nc,builderOrAdmin:()=>Pc,google:()=>or,internalApi:()=>Uc,joiValidator:()=>Fo,oidc:()=>ar,passport:()=>GM,platformLogout:()=>QM,refreshOAuthToken:()=>qM,ssoCallbackUrl:()=>Wr,updateUserOAuth:()=>KM,workspaceBuilderOrAdmin:()=>Fc});var Ym={};P(Ym,{activeTenant:()=>_O,adminOnly:()=>_c,auditLog:()=>Oc,authError:()=>Ie,authenticated:()=>vc,builderOnly:()=>Nc,builderOrAdmin:()=>Pc,correlation:()=>Z_,csp:()=>cO,csrf:()=>Lc,datasource:()=>kM,errorHandling:()=>dO,featureFlagCookie:()=>fO,google:()=>or,internalApi:()=>Uc,ip:()=>pO,joiValidator:()=>Fo,local:()=>xi,oidc:()=>ar,pino:()=>eO,querystringToBody:()=>AO,ssoCallbackUrl:()=>Wr,tenancy:()=>Mc,workspaceBuilderOrAdmin:()=>Fc});var X_=require("uuid");var Yk=require("correlation-id"),Z_=s((t,e)=>{let r=t.headers["x-budibase-correlation-id"];return r||(r=(0,X_.v4)()),Yk.withId(r,()=>e())},"correlationMiddleware");var zk=require("koa-pino-logger"),Jk=require("correlation-id");function Xk(){return{logger:Mu,genReqId:Jk.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(Xk,"pinoSettings");function Zk(){return E.HTTP_LOGGING?zk(Xk()):(t,e)=>e()}s(Zk,"getMiddleware");var eO=Zk();var _c=s(async(t,e)=>(!t.internal&&!Lt(t.user)&&t.throw(403,"Admin user only endpoint."),e()),"adminOnly");var Oc=s((async(t,e)=>e()),"auditLog");var sO=require("jsonwebtoken");var eM=/\/:(.*?)(\/.*)?$/g,ir=s(t=>t?t.map(e=>{let r=e.route,n=e.method,i=r.match(eM);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 Gm={};P(Gm,{SecretOption:()=>nO,compare:()=>iM,decrypt:()=>Cc,decryptFile:()=>aM,encrypt:()=>nM,encryptFile:()=>sM,getSecret:()=>Wm});var kt=W(require("crypto")),Br=W(require("fs")),Mm=require("path"),Fm=W(require("zlib"));var Ic="aes-256-ctr",rO="-",tM=1e4,rM=32,wc=16,Bm=16,nO=(r=>(r.API="api",r.ENCRYPTION="encryption",r))(nO||{});function Wm(t){let e,r;if(t==="encryption"?(e=E.ENCRYPTION_KEY,r="ENCRYPTION_KEY"):(e=E.API_ENCRYPTION_KEY,r="API_ENCRYPTION_KEY"),!e)throw new Error(`Secret "${r}" has not been set in environment.`);return e}s(Wm,"getSecret");function Rc(t,e){return kt.default.pbkdf2Sync(t,new Uint8Array(e),tM,rM,"sha512")}s(Rc,"stretchString");function nM(t,e="api"){let r=kt.default.randomBytes(wc),n=Rc(Wm(e),r),i=kt.default.createCipheriv(Ic,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")}${rO}${u}`}s(nM,"encrypt");function Cc(t,e="api"){let[r,n]=t.split(rO),i=Buffer.from(r,"hex"),o=Rc(Wm(e),i),a=kt.default.createDecipheriv(Ic,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(Cc,"decrypt");function iM(t,e,r="api"){try{let n=new TextEncoder,i=n.encode(Cc(e,r)),o=n.encode(t);return i.length!==o.length?!1:kt.default.timingSafeEqual(i,o)}catch{return!1}}s(iM,"compare");async function sM({dir:t,filename:e},r){let n=`${e}.enc`,i=(0,Mm.join)(t,e);if(Br.default.lstatSync(i).isDirectory())throw new Error("Unable to encrypt directory");let o=Br.default.createReadStream(i),a=Br.default.createWriteStream((0,Mm.join)(t,n)),u=kt.default.randomBytes(wc),c=kt.default.randomBytes(Bm),l=Rc(r,u),d=kt.default.createCipheriv(Ic,new Uint8Array(l),new Uint8Array(c));return a.write(u),a.write(c),o.pipe(Fm.default.createGzip()).pipe(d).pipe(a),new Promise(f=>{a.on("finish",()=>{f({filename:n,dir:t})})})}s(sM,"encryptFile");async function oM(t){let e=Br.default.createReadStream(t),r=await tO(e,wc),n=await tO(e,Bm);return e.close(),{salt:r,iv:n}}s(oM,"getSaltAndIV");async function aM(t,e,r){if(Br.default.lstatSync(t).isDirectory())throw new Error("Unable to decrypt directory");let{salt:n,iv:i}=await oM(t),o=Br.default.createReadStream(t,{start:wc+Bm}),a=Br.default.createWriteStream(e),u=Rc(r,n),c=kt.default.createDecipheriv(Ic,new Uint8Array(u),new Uint8Array(i)),l=Fm.default.createGunzip();return o.pipe(c).pipe(l).pipe(a),new Promise((d,f)=>{a.on("finish",()=>{a.close(),d()}),o.on("error",g=>{a.close(),f(g)}),c.on("error",g=>{a.close(),f(g)}),l.on("error",g=>{a.close(),f(g)}),a.on("error",g=>{a.close(),f(g)})})}s(aM,"decryptFile");function tO(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(tO,"readBytes");var $m={};P($m,{APIWarning:()=>Cn,FeatureDisabledWarning:()=>bc,InvalidAPIKeyWarning:()=>bi,UsageLimitWarning:()=>Dc});var Cn=class extends Error{static{s(this,"APIWarning")}constructor(e,r){super(e),this.code=r}},bi=class extends Cn{static{s(this,"InvalidAPIKeyWarning")}constructor(){super("Invalid API key","invalid_api_key")}},Dc=class extends Cn{static{s(this,"UsageLimitWarning")}constructor(e){super(`Usage limit exceeded: '${e}'`,"usage_limit_exceeded"),this.limitName=e}getPublicWarning(){return{limitName:this.limitName}}},bc=class extends Cn{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 oO=W(require("dd-trace"));var cM=E.SESSION_UPDATE_PERIOD?parseInt(E.SESSION_UPDATE_PERIOD):60*1e3;function lM(){return new Date(Date.now()-cM).toISOString()}s(lM,"timeMinusOneMinute");function iO(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(iO,"finalise");async function dM(t,e){if(Xs(t))return{valid:!0,user:void 0};let n=Cc(t).split("_")[0];return be(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 vo({userId:i,tenantId:n,populateUser:e})};throw new bi})}s(dM,"checkApiKey");function xc(t,e){let r=t.request.headers[e];if(Array.isArray(r))throw new Error("Unexpected header format");return r}s(xc,"getHeader");function vc(t=[],e={publicAllowed:!1}){let r=t?ir(t):[];return(async(n,i)=>{let o=!1,a=xc(n,"x-budibase-api-version");sr(n,r)&&(o=!0);try{let c=xc(n,"x-budibase-token"),l=zt(n,"budibase:auth"),d=l||_u(c);d&&!d.exp&&(l&&Jt(n,"budibase:auth"),n.throw(401,"Session token missing expiration, please log in again"));let f=xc(n,"x-budibase-api-key");!f&&n.request.headers.authorization&&(f=n.request.headers.authorization.split(" ")[1]);let g=xc(n,"x-budibase-tenant-id"),m=!1,y,h=!1,p;if(d&&!f){let A=d.sessionId,_=d.userId,I;try{I=await zp(_,A),e&&e.populateUser?y=await vo({userId:_,tenantId:I.tenantId,email:I.email,populateUser:e.populateUser(n)}):y=await vo({userId:_,tenantId:I.tenantId,email:I.email}),y.csrfToken=I.csrfToken,p="cookie",I?.lastAccessedAt<lM()&&await Yp(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 dM(f,A);_&&(m=!0,p="api_key",y=I,h=!I)}!y&&g?y={tenantId:g}:y&&"password"in y&&delete y.password,m||(m=!1);let T=s(A=>A&&A.email,"isUser");return T(y)&&oO.default.setUser({id:y._id,tenantId:y.tenantId,budibaseAccess:y.budibaseAccess,status:y.status}),iO(n,{authenticated:m,user:y,internal:h,version:a,publicEndpoint:o,loginMethod:p}),T(y)?gf(y,n,i):i()}catch(c){if(console.warn(`Auth Error: ${c.message}`),c instanceof sO.JsonWebTokenError?Jt(n,"budibase:auth"):c?.code==="invalid_api_key"&&n.throw(403,c.message),e&&e.publicAllowed||o)return iO(n,{authenticated:!1,version:a,publicEndpoint:o}),i();n.throw(c.status||403,c.message||"Authentication failed")}})}s(vc,"authenticated");async function Nc(t,e){if(t.internal)return e();let r=await pn(t);return!r&&!E.isWorker()?t.throw(403,"This request required a workspace id."):!r&&!We(t.user)?t.throw(403,"Builder user only endpoint."):r&&!Ci(t.user,r)&&t.throw(403,"Workspace builder user only endpoint."),e()}s(Nc,"builderOnly");async function Pc(t,e){if(t.internal||Lt(t.user))return e();let r=await pn(t);return!r&&!E.isWorker()?t.throw(403,"This request required a workspace id."):!r&&!We(t.user)?t.throw(403,"Admin/Builder user only endpoint."):r&&!Ci(t.user,r)&&t.throw(403,"Workspace Admin/Builder user only endpoint."),e()}s(Pc,"builderOrAdmin");var uO=W(require("crypto"));var aO={"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'"]},Vm=/^[A-Za-z0-9-*:/.]+$/,cO=s((async(t,e)=>{let r=uO.default.randomBytes(16).toString("base64");t.state.nonce=r;let n={...aO};n["script-src"]=[...aO["script-src"],`'nonce-${r}'`];let i={"media-src":E.CUSTOM_CSP_MEDIA_SRC,"script-src":E.CUSTOM_CSP_SCRIPT_SRC,"connect-src":E.CUSTOM_CSP_CONNECT_SRC,"img-src":E.CUSTOM_CSP_IMG_SRC,"font-src":E.CUSTOM_CSP_FONT_SRC,"frame-src":E.CUSTOM_CSP_FRAME_SRC};for(let[c,l]of Object.entries(i))if(l){let d=l.split(",").map(f=>f.trim()).filter(f=>Vm.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 Vs.getWorkspaceMetadata(t.appId);if("name"in c){if(a)for(let l of c.scripts||[]){let d=(l.cspWhitelist||"").split(`
|
|
38
38
|
`).filter(g=>Vm.test(g)),f=["default-src","script-src","connect-src","media-src","img-src","font-src","frame-src"];for(let g of f)n[g]=[...n[g]||[],...d]}if(o){let l=(c.embedAllowedOrigins||[]).map(d=>d.trim()).filter(d=>Vm.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 fM=["GET","HEAD","OPTIONS"],pM=["application/x-www-form-urlencoded","multipart/form-data","text/plain"];function Lc(t={noCsrfPatterns:[]}){let e=ir(t.noCsrfPatterns);return(async(r,n)=>{if(sr(r,e)||fM.indexOf(r.method)!==-1)return n();let o=r.get("content-type")?r.get("content-type").toLowerCase():"";if(!pM.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(Lc,"csrf");function lO(t){if(t.includes("-----BEGIN PRIVATE KEY-----"))return!0;for(let e of hT){let r=E[e];if(!(typeof r!="string"||r==="")&&t.includes(r))return!0}return!1}s(lO,"stringContainsSecret");async function dO(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:zu(r)};if(lO(JSON.stringify(i))&&(i={message:"Unexpected error",status:n,error:"Unexpected error"}),E.isTest()&&t.headers["x-budibase-include-stacktrace"]){let o=r;for(;o.cause;)o=o.cause;i.stack=o.stack}t.body=i}}s(dO,"errorHandling");var fO=s((async(t,e)=>{let n=zt(t,"budibase:featureflags")?.flags||{};await Ff(n,async()=>{await e()})}),"featureFlagCookie");async function Uc(t,e){let r=t.request.headers["x-budibase-api-key"];return r||t.throw(403,"Unauthorized"),Array.isArray(r)&&t.throw(403,"Unauthorized"),Xs(r)||t.throw(403,"Unauthorized"),e()}s(Uc,"internalApi");async function pO(t,e){return t.ip?await Lf(t.ip,()=>e()):e()}s(pO,"ip");var Fo={};P(Fo,{body:()=>mM,params:()=>hM});var qm=W(require("joi"));function mO(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:qm.default.any().optional(),updatedAt:qm.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(mO,"validate");function mM(t,e){return mO(t,"body",e)}s(mM,"body");function hM(t,e){return mO(t,"params",e)}s(hM,"params");var xi={};P(xi,{authenticate:()=>yM,options:()=>EM});function Ie(t,e,r){return t(r,null,{message:e})}s(Ie,"authError");async function Wr(t,e){if(e&&e.callbackURL)return e.callbackURL;let r=await Sm(),n="/api/global/auth";return Sr()&&(n+=`/${V()}`),n+=`/${t}/callback`,`${r.platformUrl}${n}`}s(Wr,"ssoCallbackUrl");var Km="Invalid credentials",gM="This account has expired. Please reset your password",EM={passReqToCallback:!0};async function yM(t,e,r,n){if(!e)return Ie(n,"Email Required");if(!r)return Ie(n,"Password Required");let i=await ut(e);return i==null?(console.info(`user=${e} could not be found`),Ie(n,Km)):i.status==="inactive"?(console.info(`user=${e} is inactive`,i),Ie(n,Km)):i.password?await ff(r,i.password)?(delete i.password,n(null,i)):Ie(n,Km):(console.info(`user=${e} has no password set`,i),Ie(n,gM))}s(yM,"authenticate");var or={};P(or,{buildVerifyFn:()=>EO,getCallbackUrl:()=>IM,strategyFactory:()=>jm});var Bo=s(t=>Promise.resolve(t),"ssoSaveUserNoOp");async function kc(t,e=!0,r,n,i=!1){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 o=ai(t.userId),a;try{a=await Ur(o)}catch(d){if(!d.status||d.status!==404)return Ie(r,"Unexpected error when retrieving existing user",d)}!a&&(t.emailVerified||i)&&(a=await ut(t.email));let u;a||(u=(await An.getExistingInvites([t.email]))[0]);let c=!t.emailVerified&&!i;if(!a&&!u&&c&&(a=await SM(t)),!a&&!u&&e)return Ie(r,"Email does not yet exist. You must set up your local budibase account first.");let l;try{u?l=await AM(u,o,t,n):(a||(a={_id:o,email:t.email,tenantId:V(),roles:{}}),l=await Qm(a,t,n))}catch(d){return Ie(r,"Error saving user",d)}return r(null,l)}s(kc,"authenticate");async function Qm(t,e,r){let n=await _M(t,e);return n.forceResetPassword=!1,delete n.password,await r(n,{hashPassword:!1,requirePassword:!1})}s(Qm,"syncAndSaveUser");function TM(t,e){return t.password||t.status==="inactive"||t.admin?.global||t.ssoId?!1:vn(t)?t.provider===e.provider&&t.providerType===e.providerType:!0}s(TM,"isAccountLinkable");async function SM(t){let e=await ut(t.email);if(e&&TM(e,t))return e}s(SM,"findLinkableAccountByEmail");async function AM(t,e,r,n){let{result:i}=await Sn({type:"auto_extend",name:"process_user_invite",resource:t.code,systemLock:!0},async()=>{try{await An.getCode(t.code,t.info.tenantId)}catch(u){let c;try{c=await Ur(e)}catch(l){if(!l.status||l.status!==404)throw l}if(!c)throw u;return await Qm(c,r,n)}let o={_id:e,email:r.email,tenantId:t.info.tenantId||V(),...mm(t.info)},a=await Qm(o,r,n);return await An.deleteCode(t.code,t.info.tenantId),await Ce.inviteAccepted(a),a});return i}s(AM,"claimInviteAndSaveUser");async function _M(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(_M,"syncUser");var OM=require("passport-google-oauth").OAuth2Strategy;function EO(t){return(e,r,n,i)=>{let o={provider:"google",providerType:"google",userId:n.id,profile:n,email:n._json.email,emailVerified:n._json.email_verified===!0,oauth2:{accessToken:e,refreshToken:r}};return kc(o,!0,i,t)}}s(EO,"buildVerifyFn");async function jm(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=EO(r);return new OM({clientID:t.clientID,clientSecret:t.clientSecret,callbackURL:e},o)}catch(n){throw new Error(`Error constructing google authentication strategy: ${n}`)}}s(jm,"strategyFactory");async function IM(t){return Wr("google",t)}s(IM,"getCallbackUrl");var ar={};P(ar,{buildVerifyFn:()=>SO,fetchStrategyConfig:()=>vM,getCallbackUrl:()=>NM,strategyFactory:()=>bM});var yO=W(require("node-fetch"));var TO=require("@govtechsg/passport-openidconnect");function SO(t,e=!1){return async(r,n,i,o,a,u,c,l,d)=>{let f=wM(n,i),g=RM(n,i),m={provider:r,providerType:"oidc",userId:f.id,profile:f,email:CM(f,g),emailVerified:DM(f,g),oauth2:{accessToken:u,refreshToken:c}};return kc(m,!1,d,t,e)}}s(SO,"buildVerifyFn");function wM(t,e){let r={...t?._json||{}};!r.email&&e.emails?.length&&(r.email=e.emails[0].value,r.email_verified=e._json?.email_verified);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(wM,"normalizeProfile");function RM(t,e){return{email:t?._json?.email||e.emails?.[0]?.value,email_verified:e._json?.email_verified,preferred_username:e.username}}s(RM,"buildJwtClaims");function CM(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&&op(r))return r.toLowerCase();throw new Error(`Could not determine user email from profile ${JSON.stringify(t)} and claims ${JSON.stringify(e)}`)}s(CM,"getEmail");function DM(t,e){return t._json.email?t._json.email_verified===!0:e.email?e.email_verified===!0:!1}s(DM,"getEmailVerified");async function bM(t,e){try{let r=SO(e,t.allowUnverifiedEmailLinking),n=new TO.Strategy(t,r);return n.name="oidc",n}catch(r){throw new Error(`Error constructing OIDC authentication strategy - ${r}`)}}s(bM,"strategyFactory");function xM(t){let e=E.OIDC_ALLOW_UNVERIFIED_EMAIL_LINKING;if(e===void 0)return t;let r=`${e}`.toLowerCase();return r!==""&&r!=="false"&&r!=="0"}s(xM,"resolveAllowUnverifiedEmailLinking");async function vM(t,e){try{let{clientID:r,clientSecret:n,configUrl:i,pkce:o,allowUnverifiedEmailLinking:a}=t;if(!r||!n||!e||!i)throw new Error("Configuration invalid. Must contain clientID, clientSecret, callbackUrl and configUrl");let u=await(0,yO.default)(i);if(!u.ok)throw new Error(`Unexpected response when fetching openid-configuration: ${u.statusText}`);let c=await u.json();return{issuer:c.issuer,authorizationURL:c.authorization_endpoint,tokenURL:c.token_endpoint,userInfoURL:c.userinfo_endpoint,clientID:r,clientSecret:n,callbackURL:e,pkce:o,allowUnverifiedEmailLinking:xM(a)}}catch(r){throw new Error(`Error constructing OIDC authentication configuration - ${r}`)}}s(vM,"fetchStrategyConfig");async function NM(){return Wr("oidc")}s(NM,"getCallbackUrl");function AO(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(AO,"querystringToBody");function Mc(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=zs(o,c);return d&&o.set("x-budibase-tenant-id",d),be(d,a)}}s(Mc,"tenancy");function _O(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(_O,"activeTenant");async function Fc(t,e){if(t.internal||Lt(t.user))return e();let r=await pn(t);return r&&!oc(t.user,r)?t.throw(403,"Workspace Admin/Builder user only endpoint."):!r&&!E.isWorker()?t.throw(403,"This request required a workspace id."):!r&&!We(t.user)&&t.throw(403,"Admin/Builder user only endpoint."),e()}s(Fc,"workspaceBuilderOrAdmin");var Hm={};P(Hm,{postAuth:()=>UM,preAuth:()=>LM});var PM=require("passport-google-oauth").OAuth2Strategy;async function OO(){let t=await Am();if(!t)throw new Error("No google configuration found");return t}s(OO,"fetchGoogleCreds");async function LM(t,e,r){let n=await OO(),o=`${await Uo({tenantAware:!1})}/api/global/auth/datasource/google/callback`,a=await jm(n,o,Bo);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(LM,"preAuth");async function UM(t,e,r){let n=await OO(),o=`${await Uo({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 PM({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 yn(`datasource:creation:${a.appId}:google:${d}`,{tokens:c}),e.redirect(`${l}/new?continue_google_setup=${d}`)})(e,r)}s(UM,"postAuth");var kM={google:Hm};var IO=require("koa-passport"),MM=require("passport-local").Strategy,Bc=require("passport-oauth2-refresh"),FM=vc,BM=Mc,WM=Lc,GM=IO;IO.use(new MM(xi.options,xi.authenticate));async function $M(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,Bo)}catch{throw new Error("Could not refresh OAuth Token")}return Bc.use(i),new Promise(o=>{Bc.requestNewAccessToken("oidc",e,(a,u,c,l)=>{o({err:a,accessToken:u,refreshToken:c,params:l})})})}s($M,"refreshOIDCAccessToken");async function VM(t,e){let r=await or.getCallbackUrl(t),n;try{n=await or.strategyFactory(t,r,Bo)}catch(i){throw new Error(`Error constructing OIDC refresh strategy: message=${i.message}`)}return Bc.use(n),new Promise(i=>{Bc.requestNewAccessToken("google",e,(o,a,u,c)=>{i({err:o,accessToken:a,refreshToken:u,params:c})})})}s(VM,"refreshGoogleAccessToken");async function qM(t,e,r){switch(e){case"oidc":{if(!r)return{err:{data:"OIDC config id not provided"}};let n=await _m(r);return n?$M(n,t):{err:{data:"OIDC configuration not found"}}}case"google":{let n=await mc();return n?VM(n,t):{err:{data:"Google configuration not found"}}}}}s(qM,"refreshOAuthToken");async function KM(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 No(t)}catch(n){console.error("Could not update OAuth details for current user",n)}}s(KM,"updateUserOAuth");async function QM(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 yo(r);i&&n?o=o.filter(u=>u.sessionId!==i.sessionId):Jt(e,"budibase:auth");let a=o.map(({sessionId:u})=>u);await In(r,{sessionIds:a,reason:"logout"}),await ic.logout(e.user?.email),await No(r)}s(QM,"platformLogout");var Xm={};P(Xm,{validate:()=>JM});var v=W(require("joi"));var jM=["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 HM(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(HM,"validateComponent");function YM(t){let e=v.default.object({type:v.default.string().allow(...Object.values(Vc)).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($c)),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(qc).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(...jM),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(YM,"validateDatasource");function zM(t){let e=v.default.object().pattern(v.default.string(),{type:v.default.string().allow(...Object.values(Kc)).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(...Th).required(),inputs:v.default.object().optional(),schema:v.default.object({inputs:r,outputs:r}).required()})});Jm(n,t)}s(zM,"validateAutomation");function JM(t){switch(t?.type){case"component":HM(t);break;case"datasource":YM(t);break;case"automation":zM(t);break;default:throw new Error(`Unknown plugin type - check schema.json: ${t.type}`)}}s(JM,"validate");var Zm={};P(Zm,{Client:()=>Re,clients:()=>_r,locks:()=>xr,utils:()=>Ya});var th={};P(th,{init:()=>ZM});var XM={"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 wO(t,e){let r=XM[t];if(!r)throw new Error("Event does not have a method of document ID extraction");return r(e)}s(wO,"getDocumentId");var Wo=class{constructor(e){this.processors=[];this.processors=e}static{s(this,"DocumentUpdateProcessor")}async processEvent(e,r,n){let i=r.realTenantId,o=wO(e,n);if(!(!i||!o))for(let{events:a,processor:u}of this.processors)a.includes(e)&&await be(i,async()=>{await u({id:o,tenantId:i,appId:n.appId,properties:n})})}shutdown(){return QA()}};var RO,eh;function ZM(t){At||ec(),eh||(eh=new Wo(t)),RO||(RO=At.process(async e=>{let{event:r,identity:n,properties:i}=e.data;await eh.processEvent(r,n,i)}))}s(ZM,"init");var lh={};P(lh,{COUNT_FIELD_NAME:()=>uh,Sql:()=>LO,SqlTable:()=>Wc,designDoc:()=>ch,utils:()=>Cf});var xO=require("knex");var eF=require("knex");function rh(t){return["link","formula","ai"].indexOf(t)!==-1}s(rh,"isIgnoredType");function CO(t,e,r,n,i){let o=e&&e.primary?e.primary:[],a=Object.values(e.schema),u=a.filter(g=>g.meta),c=u.length===a.length,l=[];n||(c?t.primary(u.map(g=>g.name)):o.length===1?(t.increments(o[0]).primary(),l.push(o[0])):t.primary(o));let d=Object.values(e.schema).map(g=>g.foreignKey);for(let[g,m]of Object.entries(e.schema)){let y=n?.schema[g];if(y&&y.type||l.includes(g)||i?.updated===g)continue;let h=m.type;switch(h){case"string":case"options":case"longform":case"barcodeqr":case"bb_reference_single":o.includes(g)?t.string(g,255):t.text(g);break;case"number":if(m.meta&&m.meta.toKey&&m.meta.toTable){let{toKey:p,toTable:T}=m.meta;t.integer(g).unsigned(),t.foreign(g).references(`${T}.${p}`)}else d.indexOf(g)===-1&&t.float(g);break;case"bigint":t.bigint(g);break;case"boolean":t.boolean(g);break;case"datetime":m.timeOnly?t.time(g):t.datetime(g,{useTz:!m.ignoreTimezones});break;case"array":case"bb_reference":ke.schema.isDeprecatedSingleUserColumn(m)?t.text(g):t.json(g);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}=_f(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(g);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:wt.unreachable(h)}}let f=i?n?.schema[i.old].type:void 0;return i&&f&&!rh(f)&&t.renameColumn(i.old,i.updated),n&&Object.entries(n.schema).filter(([m,y])=>!rh(y.type)&&e.schema[m]==null).forEach(([m,y])=>{i?.old===m||rh(y.type)||(n.constrained&&n.constrained.indexOf(m)!==-1&&t.dropForeign(m),t.dropColumn(m))}),t}s(CO,"generateSchema");function rF(t,e,r){return t.createTable(e.name,n=>{CO(n,e,r)})}s(rF,"buildCreateTable");function nF(t,e,r,n,i){return t.alterTable(e.name,o=>{CO(o,e,r,n,i)})}s(nF,"buildUpdateTable");function iF(t,e){return t.dropTable(e.name)}s(iF,"buildDeleteTable");var nh=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,eF.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=rF(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=nF(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=ti(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=iF(r,e.table);break;default:throw new Error("Table operation is of unknown type")}return ti(n)}},Wc=nh;var vO=require("lodash");var uh="__bb_total";function DO(){return(E.SQL_MAX_ROWS?parseInt(E.SQL_MAX_ROWS):null)||5e3}s(DO,"getBaseLimit");function ih(){return(E.SQL_MAX_RELATED_ROWS?parseInt(E.SQL_MAX_RELATED_ROWS):null)||500}s(ih,"getRelationshipLimit");function sF(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(sF,"prioritisedArraySort");function NO(t){return Array.isArray(t)?t.map(e=>NO(e)):(t.bindings&&(t.bindings=t.bindings.map(e=>typeof e=="boolean"?e?1:0:e)),t)}s(NO,"convertBooleans");function bO(t){return t.sourceType==="internal"||t.sourceId===Yc}s(bO,"isSqs");function oF(t,e='"'){return t.replace(new RegExp(e,"g"),`${e}${e}`)}s(oF,"escapeQuotes");function aF(t,e='"'){return`${e}${oF(t,e)}${e}`}s(aF,"wrap");function uF(t,e='"'){for(let r in t)typeof t[r]=="string"&&(t[r]=aF(t[r],e));return`[${t.join(",")}]`}s(uF,"stringifyArray");function sh(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(sh,"toPgArrayLiteral");function PO(t){return Ah.includes(t.type)&&!ke.schema.isDeprecatedSingleUserColumn(t)}s(PO,"isJsonColumn");var cF={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},oh=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()&&PO(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(!wf(e))return null}else if(r.dateOnly){let n=If(e);return n?new Date(n):null}else return r.ignoreTimezones?eu(e)?new Date(e):Of(e)?new Date(e+"Z"):null:eu(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,vO.cloneDeep)(e);for(let r of Object.values(Vr)){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(xn)){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(g=>n.match(new RegExp(`^${g}\\.`)),"matches");if(!a)return e;for(let g of a){let m=g.tableName,y=c?.[m]||m,h=f(m)||f(y),p=f(g.column),T=g.column===this.splitter.run(n).column&&!this.splitter.run(n).tableName;if((h||p||T)&&g.to&&g.tableName){let A=this.knex.select(this.knex.raw(1)).from({[y]:m}),_=A.clone(),I=Rf(g),O;if(h?O=n:O=n.replace(new RegExp(`^${g.column}.`),`${c?.[g.tableName]||g.tableName}.`),I){let C=c?.[I.through]||g.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}.${g.to}`,R=`${d}.${g.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(h){return o?.[h]||h}s(l,"getTableAlias");function d(h,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 h){let O=h[I],C=Ys(I),R=C.includes(".")||i.getFieldSchema(C)?.type==="link",w=n?.relationship&&R,b;if(I==="_complexIdOperator"&&(b=h[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,cF[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,g=s((h,p,T)=>((r?.fuzzyOr||a)&&(h=h.or),f?h.whereRaw("?? LIKE ?",[this.rawQuotedIdentifier(p),`%${T}%`]):this.client==="oracledb"||this.client==="sqlite3"?h.whereRaw("LOWER(??) LIKE ?",[this.rawQuotedIdentifier(p),`%${T.toLowerCase()}%`]):h.whereILike(this.rawQuotedIdentifier(p),this.knex.raw("?",[`%${T}%`]))),"like"),m=s((h,p=!1)=>{function T(A){return(a||h===r?.containsAny)&&(A=A.or),h===r?.notContains&&(A=A.not),A}s(T,"addModifiers"),this.client==="pg"?d(h,"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,sh(R)]):A.whereRaw("COALESCE(??::jsonb \\?| ?::text[], FALSE)",[C,sh(R)]):w?A.whereRaw("COALESCE(?? @> ?::text[], FALSE)",[C,sh(R)]):A.whereRaw("COALESCE(??::jsonb @> ?::jsonb, FALSE)",[C,uF(R)])}):this.client==="mysql2"||this.client==="mariadb"?d(h,"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(h,"contains",(A,_,I)=>(I.length===0||(A=A.where(O=>(h===r?.notContains&&(O=O.not),O=O.where(C=>{for(let R of I){h===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}%`)}}),h===r?.notContains&&(O=O.or.whereNull(this.rawQuotedIdentifier(_))),O))),A))},"contains");if(r.$and){let{$and:h}=r;for(let p of h.conditions)e=e.where(T=>{this.addFilters(T,p,n)})}if(r.$or){let{$or:h}=r;e=e.where(p=>{for(let T of h.conditions)p.orWhere(A=>this.addFilters(A,{...T,allOr:!0},n))})}r.oneOf&&d(r.oneOf,"oneOf",(h,p,T)=>{let A=this.getFieldSchema(p),_=Array.isArray(T)?T:[T];if(a&&(h=h.or),this.client==="oracledb")p=this.convertClobs(p);else if(this.client==="sqlite3"&&A?.type==="datetime"&&A.dateOnly){for(let I of _)I!=null?h=h.or.whereLike(p,`${I.toISOString().slice(0,10)}%`):h=h.or.whereNull(p);return h}return h.whereIn(p,_)},(h,p,T)=>(a&&(h=h.or),this.client==="oracledb"&&(p=p.map(A=>this.convertClobs(A))),h.whereIn(p,Array.isArray(T)?T:[T]))),r.notOneOf&&d(r.notOneOf,"notOneOf",(h,p,T)=>{let A=this.getFieldSchema(p),_=Array.isArray(T)?T:[T];if(a&&(h=h.or),this.client==="oracledb")p=this.convertClobs(p);else if(this.client==="sqlite3"&&A?.type==="datetime"&&A.dateOnly)return h.where(I=>{I.whereNot(O=>{for(let C of _)C!=null&&O.orWhereLike(p,`${C.toISOString().slice(0,10)}%`)}).orWhereNull(p)});return h.where(I=>{I.whereNotIn(p,_).orWhereNull(p)})},(h,p,T)=>(a&&(h=h.or),this.client==="oracledb"&&(p=p.map(A=>this.convertClobs(A))),h.whereNotIn(p,Array.isArray(T)?T:[T]))),r.string&&d(r.string,"string",(h,p,T)=>{if(a&&(h=h.or),f)return h.whereRaw("?? LIKE ?",[this.rawQuotedIdentifier(p),`${T}%`]);if(this.client==="oracledb"||this.client==="sqlite3")return h.whereRaw("LOWER(??) LIKE ?",[this.rawQuotedIdentifier(p),`${T.toLowerCase()}%`]);{let A=this.getFieldSchema(p);return this.SPECIAL_SELECT_CASES.POSTGRES_ENUM(A)?h.whereRaw("??::text ilike ?",[this.knex.raw(this.quote(A.name)),`${T}%`]):h.whereILike(p,`${T}%`)}}),r.fuzzy&&d(r.fuzzy,"fuzzy",g),r.range&&d(r.range,"range",(h,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 _=tu(T.low),I=tu(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&&(h=h.or),_&&I?h.whereBetween(C,[w,R]):_?h.where(C,">=",w):I?h.where(C,"<=",R):h}),r.equal&&d(r.equal,"equal",(h,p,T)=>{let A=this.getFieldSchema(p);if(a&&(h=h.or),this.client==="mssql")return h.whereRaw("CASE WHEN ?? = ? THEN 1 ELSE 0 END = 1",[this.rawQuotedIdentifier(p),T]);if(this.client==="oracledb"){let _=this.convertClobs(p);return h.where(I=>I.whereNotNull(_).andWhere(_,T))}else return this.client==="sqlite3"&&A?.type==="datetime"&&A.dateOnly?T!=null?h.whereLike(p,`${T.toISOString().slice(0,10)}%`):h.whereNull(p):h.whereRaw("COALESCE(?? = ?, FALSE)",[this.rawQuotedIdentifier(p),T])}),r.notEqual&&d(r.notEqual,"notEqual",(h,p,T)=>{let A=this.getFieldSchema(p);if(a&&(h=h.or),this.client==="mssql")return h.whereRaw("CASE WHEN ?? = ? THEN 1 ELSE 0 END = 0",[this.rawQuotedIdentifier(p),T]);if(this.client==="oracledb"){let _=this.convertClobs(p);return h.where(I=>I.not.whereNull(_).and.where(_,"!=",T)).or.whereNull(_)}else return this.client==="sqlite3"&&A?.type==="datetime"&&A.dateOnly?T!=null?h.not.whereLike(p,`${T.toISOString().slice(0,10)}%`).or.whereNull(p):h.not.whereNull(p):h.whereRaw("COALESCE(?? != ?, TRUE)",[this.rawQuotedIdentifier(p),T])}),r.empty&&d(r.empty,"empty",(h,p)=>(a&&(h=h.or),h.whereNull(p))),r.notEmpty&&d(r.notEmpty,"notEmpty",(h,p)=>(a&&(h=h.or),h.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&&!Af(this.table)&&y&&e.andWhereLike(`${y}._id`,`${Ot(r.documentType)}%`),e}isSqs(){return bO(this.table)}getTableName(e){e||(e=this.table);let r=e.name;bO(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 ${uh}`)}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 g=`${o}.${u}`,m;this.isAggregateField(u)?m=this.rawQuotedIdentifier(u):this.client==="oracledb"?m=this.convertClobs(g):m=this.rawQuotedIdentifier(g),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:g,through:m,to:y,from:h,fromPrimary:p,toPrimary:T}=f;if(!g||!r)continue;let A=l[g];if(!A)throw new Error(`related table "${g}" not found in datasource`);let _=u?.[g]||g,I=u?.[r]||r,O=m&&u?.[m]||m,C=this.tableNameWithSchema(g,{alias:_,schema:c}),R=[...A?.primary||[],A?.primaryDisplay].filter(q=>q),w=sF(d.filter(q=>q.split(".")[0]===_),R);w=w.slice(0,Math.floor(this.maxFunctionParameters()/2));let b=w.map(q=>this.buildJsonField(A,q));if(!b.length)continue;let G=b.map(q=>{let B=this.client==="oracledb"?" VALUE ":",";return this.knex.raw(`?${B}??`,[q[0],q[1]]).toString()}).join(","),ee=`${_}.${T||y}`,M=o.from(C).orderBy(ee),U=m&&T&&p,L=U?`${O}.${h}`:`${_}.${y}`,K=U?`${I}.${p}`:`${I}.${h}`;if(U){let q=this.tableNameWithSchema(m,{alias:O,schema:c});M=M.join(q,function(){this.on(`${_}.${T}`,"=",`${O}.${y}`)})}M=M.where(this.rawQuotedIdentifier(L),"=",this.rawQuotedIdentifier(K));let F=s(q=>(M=M.select(w.map(B=>this.rawQuotedIdentifier(B))).limit(ih()),o.select(q).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 ${ih()})`));break;case"mysql2":case"oracledb":j=F(this.knex.raw(`json_arrayagg(json_object(${G}))`));break;case"mssql":{let q=o.select("*").from({[I]:M.select(b.map(B=>o.ref(B[1]).as(B[0]))).limit(ih())});j=o.raw(`(SELECT ?? = (${q} 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,g=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 h=y.fromPrimary,p=y.from;this.orOn(`${f}.${h}`,"=",`${d}.${p}`)}}).leftJoin(g,function(){for(let y of n){let h=y.toPrimary,p=y.to;this.orOn(`${l}.${h}`,`${d}.${p}`)}}):e=e.leftJoin(g,function(){for(let y of n){let h=y.from,p=y.to;this.orOn(`${f}.${h}`,"=",`${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 g=this.query.tableAliases?.[a.name]||a.name,m=this.addSorting(this.knex.with("paginated",c.clone().clearSelect().select("*")).select(this.generateSelectStatement()).from({[g]:"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())}},ah=class extends Wc{static{s(this,"SqlQueryBuilder")}constructor(e,r=DO()){super(e),this.limit=r}convertToNative(e,r={}){let n=this.getSqlClient();if(r?.disableBindings)return{sql:e.toString()};{let i=ti(e);return n==="sqlite3"&&(i=NO(i)),i}}_query(e,r={}){let n=this.getSqlClient(),i={client:this.getBaseSqlClient()};(n==="sqlite3"||n==="oracledb")&&(i.useNullAsDefault=!0);let o=(0,xO.knex)(i),a,u=new oh(n,o,e);switch(this._operation(e)){case"CREATE":a=u.create(r);break;case"READ":a=u.read({limits:{query:this.limit,base:DO()}});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===Yc){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(!PO(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){Fs(this.getSqlClient(),e,r)}},LO=ah;var ch={};P(ch,{base:()=>lF});function lF(t){return{_id:xt,language:"sqlite",sql:{tables:{},options:{table_name:t}}}}s(lF,"base");var dh={};P(dh,{jsonFromCsvString:()=>dF});var UO=W(require("csvtojson"));async function dF(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,UO.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(dF,"jsonFromCsvString");var fh=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)}},Gc=fh;var kO=W(require("@koa/router"));var Dn=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 Gc(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 kO.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 Go=class{constructor(){this.groups=[]}static{s(this,"EndpointGroupList")}group(...e){let r=new Dn;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 fF={...Js,...le},pF=s((t={})=>{Xa(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
|