@budibase/server 3.20.4 → 3.20.5

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.
@@ -142,7 +142,7 @@ If you are using React Native, this API is not yet supported, see: https://react
142
142
  `,vGt=JT.encode(yh),wGt=2,w9=class{static{a(this,"FormDataPart")}constructor(t,r){let{escapeName:n}=this.constructor,i=le.isString(r),o=`Content-Disposition: form-data; name="${n(t)}"${!i&&r.name?`; filename="${n(r.name)}"`:""}${yh}`;i?r=JT.encode(String(r).replace(/\r?\n|\r\n?/g,yh)):o+=`Content-Type: ${r.type||"application/octet-stream"}${yh}`,this.headers=JT.encode(o+yh),this.contentLength=i?r.byteLength:r.size,this.size=this.headers.byteLength+this.contentLength+wGt,this.name=t,this.value=r}async*encode(){yield this.headers;let{value:t}=this;le.isTypedArray(t)?yield t:yield*XDe(t),yield vGt}static escapeName(t){return String(t).replace(/[\r\n"]/g,r=>({"\r":"%0D","\n":"%0A",'"':"%22"})[r])}},EGt=a((e,t,r)=>{let{tag:n="form-data-boundary",size:i=25,boundary:o=n+"-"+le.generateString(i,bGt)}=r||{};if(!le.isFormData(e))throw TypeError("FormData instance required");if(o.length<1||o.length>70)throw Error("boundary must be 10-70 characters long");let s=JT.encode("--"+o+yh),u=JT.encode("--"+o+"--"+yh+yh),c=u.byteLength,l=Array.from(e.entries()).map(([p,d])=>{let h=new w9(p,d);return c+=h.size,h});c+=s.byteLength*l.length,c=le.toFiniteNumber(c);let f={"Content-Type":`multipart/form-data; boundary=${o}`};return Number.isFinite(c)&&(f["Content-Length"]=c),t&&t(f),NDe.Readable.from(async function*(){for(let p of l)yield s,yield*p.encode();yield u}())},"formDataToStream"),_Gt=EGt,E9=class extends gh.default.Transform{static{a(this,"ZlibHeaderTransformStream")}__transform(t,r,n){this.push(t),n()}_transform(t,r,n){if(t.length!==0&&(this._transform=this.__transform,t[0]!==120)){let i=Buffer.alloc(2);i[0]=120,i[1]=156,this.push(i,r)}this.__transform(t,r,n)}},SGt=E9,xGt=a((e,t)=>le.isAsyncFn(e)?function(...r){let n=r.pop();e.apply(this,r).then(i=>{try{t?n(null,...t(i)):n(null,i)}catch(o){n(o)}},n)}:e,"callbackify"),TGt=xGt;function AGt(e,t){e=e||10;let r=new Array(e),n=new Array(e),i=0,o=0,s;return t=t!==void 0?t:1e3,a(function(c){let l=Date.now(),f=n[o];s||(s=l),r[i]=c,n[i]=l;let p=o,d=0;for(;p!==i;)d+=r[p++],p=p%e;if(i=(i+1)%e,i===o&&(o=(o+1)%e),l-s<t)return;let h=f&&l-f;return h?Math.round(d*1e3/h):void 0},"push")}a(AGt,"speedometer");function RGt(e,t){let r=0,n=1e3/t,i,o,s=a((l,f=Date.now())=>{r=f,i=null,o&&(clearTimeout(o),o=null),e.apply(null,l)},"invoke");return[a((...l)=>{let f=Date.now(),p=f-r;p>=n?s(l,f):(i=l,o||(o=setTimeout(()=>{o=null,s(i)},n-p)))},"throttled"),a(()=>i&&s(i),"flush")]}a(RGt,"throttle");var Kw=a((e,t,r=3)=>{let n=0,i=AGt(50,250);return RGt(o=>{let s=o.loaded,u=o.lengthComputable?o.total:void 0,c=s-n,l=i(c),f=s<=u;n=s;let p={loaded:s,total:u,progress:u?s/u:void 0,bytes:c,rate:l||void 0,estimated:l&&u&&f?(u-s)/l:void 0,event:o,lengthComputable:u!=null,[t?"download":"upload"]:!0};e(p)},r)},"progressEventReducer"),$N=a((e,t)=>{let r=e!=null;return[n=>t[0]({lengthComputable:r,total:e,loaded:n}),t[1]]},"progressEventDecorator"),zN=a(e=>(...t)=>le.asap(()=>e(...t)),"asyncDecorator"),_De={flush:bh.default.constants.Z_SYNC_FLUSH,finishFlush:bh.default.constants.Z_SYNC_FLUSH},OGt={flush:bh.default.constants.BROTLI_OPERATION_FLUSH,finishFlush:bh.default.constants.BROTLI_OPERATION_FLUSH},SDe=le.isFunction(bh.default.createBrotliDecompress),{http:IGt,https:kGt}=uWt.default,CGt=/https:?/,xDe=Sa.protocols.map(e=>e+":"),TDe=a((e,[t,r])=>(e.on("end",r).on("error",r),t),"flushOnFinish");function DGt(e,t){e.beforeRedirects.proxy&&e.beforeRedirects.proxy(e),e.beforeRedirects.config&&e.beforeRedirects.config(e,t)}a(DGt,"dispatchBeforeRedirect");function ZDe(e,t,r){let n=t;if(!n&&n!==!1){let i=X8t.getProxyForUrl(r);i&&(n=new URL(i))}if(n){if(n.username&&(n.auth=(n.username||"")+":"+(n.password||"")),n.auth){(n.auth.username||n.auth.password)&&(n.auth=(n.auth.username||"")+":"+(n.auth.password||""));let o=Buffer.from(n.auth,"utf8").toString("base64");e.headers["Proxy-Authorization"]="Basic "+o}e.headers.host=e.hostname+(e.port?":"+e.port:"");let i=n.hostname||n.host;e.hostname=i,e.host=i,e.port=n.port,e.path=r,n.protocol&&(e.protocol=n.protocol.includes(":")?n.protocol:`${n.protocol}:`)}e.beforeRedirects.proxy=a(function(o){ZDe(o,t,o.href)},"beforeRedirect")}a(ZDe,"setProxy");var PGt=typeof process<"u"&&le.kindOf(process)==="process",NGt=a(e=>new Promise((t,r)=>{let n,i,o=a((c,l)=>{i||(i=!0,n&&n(c,l))},"done"),s=a(c=>{o(c),t(c)},"_resolve"),u=a(c=>{o(c,!0),r(c)},"_reject");e(s,u,c=>n=c).catch(u)}),"wrapAsync"),LGt=a(({address:e,family:t})=>{if(!le.isString(e))throw TypeError("address must be a string");return{address:e,family:t||(e.indexOf(".")<0?6:4)}},"resolveFamily"),ADe=a((e,t)=>LGt(le.isObject(e)?e:{address:e,family:t}),"buildAddressEntry"),FGt=PGt&&a(function(t){return NGt(a(async function(n,i,o){let{data:s,lookup:u,family:c}=t,{responseType:l,responseEncoding:f}=t,p=t.method.toUpperCase(),d,h=!1,m;if(u){let ae=TGt(u,ie=>le.isArray(ie)?ie:[ie]);u=a((ie,Q,be)=>{ae(ie,Q,(Ne,Le,G)=>{if(Ne)return be(Ne);let Z=le.isArray(Le)?Le.map(ce=>ADe(ce)):[ADe(Le,G)];Q.all?be(Ne,Z):be(Ne,Z[0].address,Z[0].family)})},"lookup")}let g=new nWt.EventEmitter,y=a(()=>{t.cancelToken&&t.cancelToken.unsubscribe(b),t.signal&&t.signal.removeEventListener("abort",b),g.removeAllListeners()},"onFinished");o((ae,ie)=>{d=!0,ie&&(h=!0,y())});function b(ae){g.emit("abort",!ae||ae.type?new vh(null,t,m):ae)}a(b,"abort"),g.once("abort",i),(t.cancelToken||t.signal)&&(t.cancelToken&&t.cancelToken.subscribe(b),t.signal&&(t.signal.aborted?b():t.signal.addEventListener("abort",b)));let v=P9(t.baseURL,t.url),w=new URL(v,Sa.hasBrowserEnv?Sa.origin:void 0),x=w.protocol||xDe[0];if(x==="data:"){let ae;if(p!=="GET")return Hw(n,i,{status:405,statusText:"method not allowed",headers:{},config:t});try{ae=gGt(t.url,l==="blob",{Blob:t.env&&t.env.Blob})}catch(ie){throw pt.from(ie,pt.ERR_BAD_REQUEST,t)}return l==="text"?(ae=ae.toString(f),(!f||f==="utf8")&&(ae=le.stripBOM(ae))):l==="stream"&&(ae=gh.default.Readable.from(ae)),Hw(n,i,{data:ae,status:200,statusText:"OK",headers:new is,config:t})}if(xDe.indexOf(x)===-1)return i(new pt("Unsupported protocol "+x,pt.ERR_BAD_REQUEST,t));let T=is.from(t.headers).normalize();T.set("User-Agent","axios/"+qN,!1);let{onUploadProgress:I,onDownloadProgress:R}=t,C=t.maxRate,k,U;if(le.isSpecCompliantForm(s)){let ae=T.getContentType(/boundary=([-_\w\d]{10,70})/i);s=_Gt(s,ie=>{T.set(ie)},{tag:`axios-${qN}-boundary`,boundary:ae&&ae[1]||void 0})}else if(le.isFormData(s)&&le.isFunction(s.getHeaders)){if(T.set(s.getHeaders()),!T.hasContentLength())try{let ae=await sWt.default.promisify(s.getLength).call(s);Number.isFinite(ae)&&ae>=0&&T.setContentLength(ae)}catch{}}else if(le.isBlob(s))s.size&&T.setContentType(s.type||"application/octet-stream"),T.setContentLength(s.size||0),s=gh.default.Readable.from(XDe(s));else if(s&&!le.isStream(s)){if(!Buffer.isBuffer(s))if(le.isArrayBuffer(s))s=Buffer.from(new Uint8Array(s));else if(le.isString(s))s=Buffer.from(s,"utf-8");else return i(new pt("Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream",pt.ERR_BAD_REQUEST,t));if(T.setContentLength(s.length,!1),t.maxBodyLength>-1&&s.length>t.maxBodyLength)return i(new pt("Request body larger than maxBodyLength limit",pt.ERR_BAD_REQUEST,t))}let M=le.toFiniteNumber(T.getContentLength());le.isArray(C)?(k=C[0],U=C[1]):k=U=C,s&&(I||k)&&(le.isStream(s)||(s=gh.default.Readable.from(s,{objectMode:!1})),s=gh.default.pipeline([s,new wDe({maxRate:le.toFiniteNumber(k)})],le.noop),I&&s.on("progress",TDe(s,$N(M,Kw(zN(I),!1,3)))));let H;if(t.auth){let ae=t.auth.username||"",ie=t.auth.password||"";H=ae+":"+ie}if(!H&&w.username){let ae=w.username,ie=w.password;H=ae+":"+ie}H&&T.delete("authorization");let F;try{F=O9(w.pathname+w.search,t.params,t.paramsSerializer).replace(/^\?/,"")}catch(ae){let ie=new Error(ae.message);return ie.config=t,ie.url=t.url,ie.exists=!0,i(ie)}T.set("Accept-Encoding","gzip, compress, deflate"+(SDe?", br":""),!1);let Y={path:F,method:p,headers:T.toJSON(),agents:{http:t.httpAgent,https:t.httpsAgent},auth:H,protocol:x,family:c,beforeRedirect:DGt,beforeRedirects:{}};!le.isUndefined(u)&&(Y.lookup=u),t.socketPath?Y.socketPath=t.socketPath:(Y.hostname=w.hostname.startsWith("[")?w.hostname.slice(1,-1):w.hostname,Y.port=w.port,ZDe(Y,t.proxy,x+"//"+w.hostname+(w.port?":"+w.port:"")+Y.path));let B,$=CGt.test(Y.protocol);if(Y.agent=$?t.httpsAgent:t.httpAgent,t.transport?B=t.transport:t.maxRedirects===0?B=$?oWt.default:aWt.default:(t.maxRedirects&&(Y.maxRedirects=t.maxRedirects),t.beforeRedirect&&(Y.beforeRedirects.config=t.beforeRedirect),B=$?kGt:IGt),t.maxBodyLength>-1?Y.maxBodyLength=t.maxBodyLength:Y.maxBodyLength=1/0,t.insecureHTTPParser&&(Y.insecureHTTPParser=t.insecureHTTPParser),m=B.request(Y,a(function(ie){if(m.destroyed)return;let Q=[ie],be=+ie.headers["content-length"];if(R||U){let ce=new wDe({maxRate:le.toFiniteNumber(U)});R&&ce.on("progress",TDe(ce,$N(be,Kw(zN(R),!0,3)))),Q.push(ce)}let Ne=ie,Le=ie.req||m;if(t.decompress!==!1&&ie.headers["content-encoding"])switch((p==="HEAD"||ie.statusCode===204)&&delete ie.headers["content-encoding"],(ie.headers["content-encoding"]||"").toLowerCase()){case"gzip":case"x-gzip":case"compress":case"x-compress":Q.push(bh.default.createUnzip(_De)),delete ie.headers["content-encoding"];break;case"deflate":Q.push(new SGt),Q.push(bh.default.createUnzip(_De)),delete ie.headers["content-encoding"];break;case"br":SDe&&(Q.push(bh.default.createBrotliDecompress(OGt)),delete ie.headers["content-encoding"])}Ne=Q.length>1?gh.default.pipeline(Q,le.noop):Q[0];let G=gh.default.finished(Ne,()=>{G(),y()}),Z={status:ie.statusCode,statusText:ie.statusMessage,headers:new is(ie.headers),config:t,request:Le};if(l==="stream")Z.data=Ne,Hw(n,i,Z);else{let ce=[],he=0;Ne.on("data",a(function(je){ce.push(je),he+=je.length,t.maxContentLength>-1&&he>t.maxContentLength&&(h=!0,Ne.destroy(),i(new pt("maxContentLength size of "+t.maxContentLength+" exceeded",pt.ERR_BAD_RESPONSE,t,Le)))},"handleStreamData")),Ne.on("aborted",a(function(){if(h)return;let je=new pt("maxContentLength size of "+t.maxContentLength+" exceeded",pt.ERR_BAD_RESPONSE,t,Le);Ne.destroy(je),i(je)},"handlerStreamAborted")),Ne.on("error",a(function(je){m.destroyed||i(pt.from(je,null,t,Le))},"handleStreamError")),Ne.on("end",a(function(){try{let je=ce.length===1?ce[0]:Buffer.concat(ce);l!=="arraybuffer"&&(je=je.toString(f),(!f||f==="utf8")&&(je=le.stripBOM(je))),Z.data=je}catch(je){return i(pt.from(je,null,t,Z.request,Z))}Hw(n,i,Z)},"handleStreamEnd"))}g.once("abort",ce=>{Ne.destroyed||(Ne.emit("error",ce),Ne.destroy())})},"handleResponse")),g.once("abort",ae=>{i(ae),m.destroy(ae)}),m.on("error",a(function(ie){i(pt.from(ie,null,t,m))},"handleRequestError")),m.on("socket",a(function(ie){ie.setKeepAlive(!0,1e3*60)},"handleRequestSocket")),t.timeout){let ae=parseInt(t.timeout,10);if(Number.isNaN(ae)){i(new pt("error trying to parse `config.timeout` to int",pt.ERR_BAD_OPTION_VALUE,t,m));return}m.setTimeout(ae,a(function(){if(d)return;let Q=t.timeout?"timeout of "+t.timeout+"ms exceeded":"timeout exceeded",be=t.transitional||I9;t.timeoutErrorMessage&&(Q=t.timeoutErrorMessage),i(new pt(Q,be.clarifyTimeoutError?pt.ETIMEDOUT:pt.ECONNABORTED,t,m)),b()},"handleRequestTimeout"))}if(le.isStream(s)){let ae=!1,ie=!1;s.on("end",()=>{ae=!0}),s.once("error",Q=>{ie=!0,m.destroy(Q)}),s.on("close",()=>{!ae&&!ie&&b(new vh("Request stream has been aborted",t,m))}),s.pipe(m)}else m.end(s)},"dispatchHttpRequest"))},"httpAdapter"),UGt=Sa.hasStandardBrowserEnv?a(function(){let t=Sa.navigator&&/(msie|trident)/i.test(Sa.navigator.userAgent),r=document.createElement("a"),n;function i(o){let s=o;return t&&(r.setAttribute("href",s),s=r.href),r.setAttribute("href",s),{href:r.href,protocol:r.protocol?r.protocol.replace(/:$/,""):"",host:r.host,search:r.search?r.search.replace(/^\?/,""):"",hash:r.hash?r.hash.replace(/^#/,""):"",hostname:r.hostname,port:r.port,pathname:r.pathname.charAt(0)==="/"?r.pathname:"/"+r.pathname}}return a(i,"resolveURL"),n=i(window.location.href),a(function(s){let u=le.isString(s)?i(s):s;return u.protocol===n.protocol&&u.host===n.host},"isURLSameOrigin")},"standardBrowserEnv")():a(function(){return a(function(){return!0},"isURLSameOrigin")},"nonStandardBrowserEnv")(),jGt=Sa.hasStandardBrowserEnv?{write(e,t,r,n,i,o){let s=[e+"="+encodeURIComponent(t)];le.isNumber(r)&&s.push("expires="+new Date(r).toGMTString()),le.isString(n)&&s.push("path="+n),le.isString(i)&&s.push("domain="+i),o===!0&&s.push("secure"),document.cookie=s.join("; ")},read(e){let t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}},RDe=a(e=>e instanceof is?{...e}:e,"headersToObject");function oy(e,t){t=t||{};let r={};function n(l,f,p){return le.isPlainObject(l)&&le.isPlainObject(f)?le.merge.call({caseless:p},l,f):le.isPlainObject(f)?le.merge({},f):le.isArray(f)?f.slice():f}a(n,"getMergedValue");function i(l,f,p){if(le.isUndefined(f)){if(!le.isUndefined(l))return n(void 0,l,p)}else return n(l,f,p)}a(i,"mergeDeepProperties");function o(l,f){if(!le.isUndefined(f))return n(void 0,f)}a(o,"valueFromConfig2");function s(l,f){if(le.isUndefined(f)){if(!le.isUndefined(l))return n(void 0,l)}else return n(void 0,f)}a(s,"defaultToConfig2");function u(l,f,p){if(p in t)return n(l,f);if(p in e)return n(void 0,l)}a(u,"mergeDirectKeys");let c={url:o,method:o,data:o,baseURL:s,transformRequest:s,transformResponse:s,paramsSerializer:s,timeout:s,timeoutMessage:s,withCredentials:s,withXSRFToken:s,adapter:s,responseType:s,xsrfCookieName:s,xsrfHeaderName:s,onUploadProgress:s,onDownloadProgress:s,decompress:s,maxContentLength:s,maxBodyLength:s,beforeRedirect:s,transport:s,httpAgent:s,httpsAgent:s,cancelToken:s,socketPath:s,responseEncoding:s,validateStatus:u,headers:(l,f)=>i(RDe(l),RDe(f),!0)};return le.forEach(Object.keys(Object.assign({},e,t)),a(function(f){let p=c[f]||i,d=p(e[f],t[f],f);le.isUndefined(d)&&p!==u||(r[f]=d)},"computeConfigValue")),r}a(oy,"mergeConfig");var ePe=a(e=>{let t=oy({},e),{data:r,withXSRFToken:n,xsrfHeaderName:i,xsrfCookieName:o,headers:s,auth:u}=t;t.headers=s=is.from(s),t.url=O9(P9(t.baseURL,t.url),e.params,e.paramsSerializer),u&&s.set("Authorization","Basic "+btoa((u.username||"")+":"+(u.password?unescape(encodeURIComponent(u.password)):"")));let c;if(le.isFormData(r)){if(Sa.hasStandardBrowserEnv||Sa.hasStandardBrowserWebWorkerEnv)s.setContentType(void 0);else if((c=s.getContentType())!==!1){let[l,...f]=c?c.split(";").map(p=>p.trim()).filter(Boolean):[];s.setContentType([l||"multipart/form-data",...f].join("; "))}}if(Sa.hasStandardBrowserEnv&&(n&&le.isFunction(n)&&(n=n(t)),n||n!==!1&&UGt(t.url))){let l=i&&o&&jGt.read(o);l&&s.set(i,l)}return t},"resolveConfig"),MGt=typeof XMLHttpRequest<"u",BGt=MGt&&function(e){return new Promise(a(function(r,n){let i=ePe(e),o=i.data,s=is.from(i.headers).normalize(),{responseType:u,onUploadProgress:c,onDownloadProgress:l}=i,f,p,d,h,m;function g(){h&&h(),m&&m(),i.cancelToken&&i.cancelToken.unsubscribe(f),i.signal&&i.signal.removeEventListener("abort",f)}a(g,"done");let y=new XMLHttpRequest;y.open(i.method.toUpperCase(),i.url,!0),y.timeout=i.timeout;function b(){if(!y)return;let w=is.from("getAllResponseHeaders"in y&&y.getAllResponseHeaders()),T={data:!u||u==="text"||u==="json"?y.responseText:y.response,status:y.status,statusText:y.statusText,headers:w,config:e,request:y};Hw(a(function(R){r(R),g()},"_resolve"),a(function(R){n(R),g()},"_reject"),T),y=null}a(b,"onloadend"),"onloadend"in y?y.onloadend=b:y.onreadystatechange=a(function(){!y||y.readyState!==4||y.status===0&&!(y.responseURL&&y.responseURL.indexOf("file:")===0)||setTimeout(b)},"handleLoad"),y.onabort=a(function(){y&&(n(new pt("Request aborted",pt.ECONNABORTED,e,y)),y=null)},"handleAbort"),y.onerror=a(function(){n(new pt("Network Error",pt.ERR_NETWORK,e,y)),y=null},"handleError"),y.ontimeout=a(function(){let x=i.timeout?"timeout of "+i.timeout+"ms exceeded":"timeout exceeded",T=i.transitional||I9;i.timeoutErrorMessage&&(x=i.timeoutErrorMessage),n(new pt(x,T.clarifyTimeoutError?pt.ETIMEDOUT:pt.ECONNABORTED,e,y)),y=null},"handleTimeout"),o===void 0&&s.setContentType(null),"setRequestHeader"in y&&le.forEach(s.toJSON(),a(function(x,T){y.setRequestHeader(T,x)},"setRequestHeader")),le.isUndefined(i.withCredentials)||(y.withCredentials=!!i.withCredentials),u&&u!=="json"&&(y.responseType=i.responseType),l&&([d,m]=Kw(l,!0),y.addEventListener("progress",d)),c&&y.upload&&([p,h]=Kw(c),y.upload.addEventListener("progress",p),y.upload.addEventListener("loadend",h)),(i.cancelToken||i.signal)&&(f=a(w=>{y&&(n(!w||w.type?new vh(null,e,y):w),y.abort(),y=null)},"onCanceled"),i.cancelToken&&i.cancelToken.subscribe(f),i.signal&&(i.signal.aborted?f():i.signal.addEventListener("abort",f)));let v=JDe(i.url);if(v&&Sa.protocols.indexOf(v)===-1){n(new pt("Unsupported protocol "+v+":",pt.ERR_BAD_REQUEST,e));return}y.send(o||null)},"dispatchXhrRequest"))},qGt=a((e,t)=>{let{length:r}=e=e?e.filter(Boolean):[];if(t||r){let n=new AbortController,i,o=a(function(l){if(!i){i=!0,u();let f=l instanceof Error?l:this.reason;n.abort(f instanceof pt?f:new vh(f instanceof Error?f.message:f))}},"onabort"),s=t&&setTimeout(()=>{s=null,o(new pt(`timeout ${t} of ms exceeded`,pt.ETIMEDOUT))},t),u=a(()=>{e&&(s&&clearTimeout(s),s=null,e.forEach(l=>{l.unsubscribe?l.unsubscribe(o):l.removeEventListener("abort",o)}),e=null)},"unsubscribe");e.forEach(l=>l.addEventListener("abort",o));let{signal:c}=n;return c.unsubscribe=()=>le.asap(u),c}},"composeSignals"),$Gt=qGt,zGt=a(function*(e,t){let r=e.byteLength;if(!t||r<t){yield e;return}let n=0,i;for(;n<r;)i=n+t,yield e.slice(n,i),n=i},"streamChunk"),WGt=a(async function*(e,t){for await(let r of GGt(e))yield*zGt(r,t)},"readBytes"),GGt=a(async function*(e){if(e[Symbol.asyncIterator]){yield*e;return}let t=e.getReader();try{for(;;){let{done:r,value:n}=await t.read();if(r)break;yield n}}finally{await t.cancel()}},"readStream"),ODe=a((e,t,r,n)=>{let i=WGt(e,t),o=0,s,u=a(c=>{s||(s=!0,n&&n(c))},"_onFinish");return new ReadableStream({async pull(c){try{let{done:l,value:f}=await i.next();if(l){u(),c.close();return}let p=f.byteLength;if(r){let d=o+=p;r(d)}c.enqueue(new Uint8Array(f))}catch(l){throw u(l),l}},cancel(c){return u(c),i.return()}},{highWaterMark:2})},"trackStream"),QN=typeof fetch=="function"&&typeof Request=="function"&&typeof Response=="function",tPe=QN&&typeof ReadableStream=="function",HGt=QN&&(typeof TextEncoder=="function"?(e=>t=>e.encode(t))(new TextEncoder):async e=>new Uint8Array(await new Response(e).arrayBuffer())),rPe=a((e,...t)=>{try{return!!e(...t)}catch{return!1}},"test"),VGt=tPe&&rPe(()=>{let e=!1,t=new Request(Sa.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t}),IDe=64*1024,_9=tPe&&rPe(()=>le.isReadableStream(new Response("").body)),WN={stream:_9&&(e=>e.body)};QN&&(e=>{["text","arrayBuffer","blob","formData","stream"].forEach(t=>{!WN[t]&&(WN[t]=le.isFunction(e[t])?r=>r[t]():(r,n)=>{throw new pt(`Response type '${t}' is not supported`,pt.ERR_NOT_SUPPORT,n)})})})(new Response);var KGt=a(async e=>{if(e==null)return 0;if(le.isBlob(e))return e.size;if(le.isSpecCompliantForm(e))return(await new Request(Sa.origin,{method:"POST",body:e}).arrayBuffer()).byteLength;if(le.isArrayBufferView(e)||le.isArrayBuffer(e))return e.byteLength;if(le.isURLSearchParams(e)&&(e=e+""),le.isString(e))return(await HGt(e)).byteLength},"getBodyLength"),QGt=a(async(e,t)=>{let r=le.toFiniteNumber(e.getContentLength());return r??KGt(t)},"resolveBodyLength"),YGt=QN&&(async e=>{let{url:t,method:r,data:n,signal:i,cancelToken:o,timeout:s,onDownloadProgress:u,onUploadProgress:c,responseType:l,headers:f,withCredentials:p="same-origin",fetchOptions:d}=ePe(e);l=l?(l+"").toLowerCase():"text";let h=$Gt([i,o&&o.toAbortSignal()],s),m,g=h&&h.unsubscribe&&(()=>{h.unsubscribe()}),y;try{if(c&&VGt&&r!=="get"&&r!=="head"&&(y=await QGt(f,n))!==0){let T=new Request(t,{method:"POST",body:n,duplex:"half"}),I;if(le.isFormData(n)&&(I=T.headers.get("content-type"))&&f.setContentType(I),T.body){let[R,C]=$N(y,Kw(zN(c)));n=ODe(T.body,IDe,R,C)}}le.isString(p)||(p=p?"include":"omit");let b="credentials"in Request.prototype;m=new Request(t,{...d,signal:h,method:r.toUpperCase(),headers:f.normalize().toJSON(),body:n,duplex:"half",credentials:b?p:void 0});let v=await fetch(m),w=_9&&(l==="stream"||l==="response");if(_9&&(u||w&&g)){let T={};["status","statusText","headers"].forEach(k=>{T[k]=v[k]});let I=le.toFiniteNumber(v.headers.get("content-length")),[R,C]=u&&$N(I,Kw(zN(u),!0))||[];v=new Response(ODe(v.body,IDe,R,()=>{C&&C(),g&&g()}),T)}l=l||"text";let x=await WN[le.findKey(WN,l)||"text"](v,e);return!w&&g&&g(),await new Promise((T,I)=>{Hw(T,I,{data:x,headers:is.from(v.headers),status:v.status,statusText:v.statusText,config:e,request:m})})}catch(b){throw g&&g(),b&&b.name==="TypeError"&&/fetch/i.test(b.message)?Object.assign(new pt("Network Error",pt.ERR_NETWORK,e,m),{cause:b.cause||b}):pt.from(b,b&&b.code,e,m)}}),S9={http:FGt,xhr:BGt,fetch:YGt};le.forEach(S9,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});var kDe=a(e=>`- ${e}`,"renderReason"),JGt=a(e=>le.isFunction(e)||e===null||e===!1,"isResolvedHandle"),nPe={getAdapter:e=>{e=le.isArray(e)?e:[e];let{length:t}=e,r,n,i={};for(let o=0;o<t;o++){r=e[o];let s;if(n=r,!JGt(r)&&(n=S9[(s=String(r)).toLowerCase()],n===void 0))throw new pt(`Unknown adapter '${s}'`);if(n)break;i[s||"#"+o]=n}if(!n){let o=Object.entries(i).map(([u,c])=>`adapter ${u} `+(c===!1?"is not supported by the environment":"is not available in the build")),s=t?o.length>1?`since :
143
143
  `+o.map(kDe).join(`
144
144
  `):" "+kDe(o[0]):"as no adapter specified";throw new pt("There is no suitable adapter to dispatch the request "+s,"ERR_NOT_SUPPORT")}return n},adapters:S9};function h9(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new vh(null,e)}a(h9,"throwIfCancellationRequested");function CDe(e){return h9(e),e.headers=is.from(e.headers),e.data=p9.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),nPe.getAdapter(e.adapter||D9.adapter)(e).then(a(function(n){return h9(e),n.data=p9.call(e,e.transformResponse,n),n.headers=is.from(n.headers),n},"onAdapterResolution"),a(function(n){return YDe(n)||(h9(e),n&&n.response&&(n.response.data=p9.call(e,e.transformResponse,n.response),n.response.headers=is.from(n.response.headers))),Promise.reject(n)},"onAdapterRejection"))}a(CDe,"dispatchRequest");var N9={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{N9[e]=a(function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e},"validator")});var DDe={};N9.transitional=a(function(t,r,n){function i(o,s){return"[Axios v"+qN+"] Transitional option '"+o+"'"+s+(n?". "+n:"")}return a(i,"formatMessage"),(o,s,u)=>{if(t===!1)throw new pt(i(s," has been removed"+(r?" in "+r:"")),pt.ERR_DEPRECATED);return r&&!DDe[s]&&(DDe[s]=!0,console.warn(i(s," has been deprecated since v"+r+" and will be removed in the near future"))),t?t(o,s,u):!0}},"transitional");function XGt(e,t,r){if(typeof e!="object")throw new pt("options must be an object",pt.ERR_BAD_OPTION_VALUE);let n=Object.keys(e),i=n.length;for(;i-- >0;){let o=n[i],s=t[o];if(s){let u=e[o],c=u===void 0||s(u,o,e);if(c!==!0)throw new pt("option "+o+" must be "+c,pt.ERR_BAD_OPTION_VALUE);continue}if(r!==!0)throw new pt("Unknown option "+o,pt.ERR_BAD_OPTION)}}a(XGt,"assertOptions");var x9={assertOptions:XGt,validators:N9},mh=x9.validators,Qw=class{static{a(this,"Axios")}constructor(t){this.defaults=t,this.interceptors={request:new bDe,response:new bDe}}async request(t,r){try{return await this._request(t,r)}catch(n){if(n instanceof Error){let i;Error.captureStackTrace?Error.captureStackTrace(i={}):i=new Error;let o=i.stack?i.stack.replace(/^.+\n/,""):"";try{n.stack?o&&!String(n.stack).endsWith(o.replace(/^.+\n.+\n/,""))&&(n.stack+=`
145
- `+o):n.stack=o}catch{}}throw n}}_request(t,r){typeof t=="string"?(r=r||{},r.url=t):r=t||{},r=oy(this.defaults,r);let{transitional:n,paramsSerializer:i,headers:o}=r;n!==void 0&&x9.assertOptions(n,{silentJSONParsing:mh.transitional(mh.boolean),forcedJSONParsing:mh.transitional(mh.boolean),clarifyTimeoutError:mh.transitional(mh.boolean)},!1),i!=null&&(le.isFunction(i)?r.paramsSerializer={serialize:i}:x9.assertOptions(i,{encode:mh.function,serialize:mh.function},!0)),r.method=(r.method||this.defaults.method||"get").toLowerCase();let s=o&&le.merge(o.common,o[r.method]);o&&le.forEach(["delete","get","head","post","put","patch","common"],m=>{delete o[m]}),r.headers=is.concat(s,o);let u=[],c=!0;this.interceptors.request.forEach(a(function(g){typeof g.runWhen=="function"&&g.runWhen(r)===!1||(c=c&&g.synchronous,u.unshift(g.fulfilled,g.rejected))},"unshiftRequestInterceptors"));let l=[];this.interceptors.response.forEach(a(function(g){l.push(g.fulfilled,g.rejected)},"pushResponseInterceptors"));let f,p=0,d;if(!c){let m=[CDe.bind(this),void 0];for(m.unshift.apply(m,u),m.push.apply(m,l),d=m.length,f=Promise.resolve(r);p<d;)f=f.then(m[p++],m[p++]);return f}d=u.length;let h=r;for(p=0;p<d;){let m=u[p++],g=u[p++];try{h=m(h)}catch(y){g.call(this,y);break}}try{f=CDe.call(this,h)}catch(m){return Promise.reject(m)}for(p=0,d=l.length;p<d;)f=f.then(l[p++],l[p++]);return f}getUri(t){t=oy(this.defaults,t);let r=P9(t.baseURL,t.url);return O9(r,t.params,t.paramsSerializer)}};le.forEach(["delete","get","head","options"],a(function(t){Qw.prototype[t]=function(r,n){return this.request(oy(n||{},{method:t,url:r,data:(n||{}).data}))}},"forEachMethodNoData"));le.forEach(["post","put","patch"],a(function(t){function r(n){return a(function(o,s,u){return this.request(oy(u||{},{method:t,headers:n?{"Content-Type":"multipart/form-data"}:{},url:o,data:s}))},"httpMethod")}a(r,"generateHTTPMethod"),Qw.prototype[t]=r(),Qw.prototype[t+"Form"]=r(!0)},"forEachMethodWithData"));var BN=Qw,T9=class e{static{a(this,"CancelToken")}constructor(t){if(typeof t!="function")throw new TypeError("executor must be a function.");let r;this.promise=new Promise(a(function(o){r=o},"promiseExecutor"));let n=this;this.promise.then(i=>{if(!n._listeners)return;let o=n._listeners.length;for(;o-- >0;)n._listeners[o](i);n._listeners=null}),this.promise.then=i=>{let o,s=new Promise(u=>{n.subscribe(u),o=u}).then(i);return s.cancel=a(function(){n.unsubscribe(o)},"reject"),s},t(a(function(o,s,u){n.reason||(n.reason=new vh(o,s,u),r(n.reason))},"cancel"))}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;let r=this._listeners.indexOf(t);r!==-1&&this._listeners.splice(r,1)}toAbortSignal(){let t=new AbortController,r=a(n=>{t.abort(n)},"abort");return this.subscribe(r),t.signal.unsubscribe=()=>this.unsubscribe(r),t.signal}static source(){let t;return{token:new e(a(function(i){t=i},"executor")),cancel:t}}},ZGt=T9;function eHt(e){return a(function(r){return e.apply(null,r)},"wrap")}a(eHt,"spread");function tHt(e){return le.isObject(e)&&e.isAxiosError===!0}a(tHt,"isAxiosError");var A9={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(A9).forEach(([e,t])=>{A9[t]=e});var rHt=A9;function iPe(e){let t=new BN(e),r=FDe(BN.prototype.request,t);return le.extend(r,BN.prototype,t,{allOwnKeys:!0}),le.extend(r,t,null,{allOwnKeys:!0}),r.create=a(function(i){return iPe(oy(e,i))},"create"),r}a(iPe,"createInstance");var Bi=iPe(D9);Bi.Axios=BN;Bi.CanceledError=vh;Bi.CancelToken=ZGt;Bi.isCancel=YDe;Bi.VERSION=qN;Bi.toFormData=KN;Bi.AxiosError=pt;Bi.Cancel=Bi.CanceledError;Bi.all=a(function(t){return Promise.all(t)},"all");Bi.spread=eHt;Bi.isAxiosError=tHt;Bi.mergeConfig=oy;Bi.AxiosHeaders=is;Bi.formToJSON=e=>QDe(le.isHTMLForm(e)?new FormData(e):e);Bi.getAdapter=nPe.getAdapter;Bi.HttpStatusCode=rHt;Bi.default=Bi;aPe.exports=Bi});var $9=S(rL=>{"use strict";Object.defineProperty(rL,"__esModule",{value:!0});var nHt=H1e(),iHt="4.0.1",Fc;(function(e){e.AnonymousId="anonymous_id",e.DistinctId="distinct_id",e.Props="props",e.FeatureFlags="feature_flags",e.FeatureFlagPayloads="feature_flag_payloads",e.OverrideFeatureFlags="override_feature_flags",e.Queue="queue",e.OptedOut="opted_out",e.SessionId="session_id",e.SessionLastTimestamp="session_timestamp",e.PersonProperties="person_properties",e.GroupProperties="group_properties",e.InstalledAppBuild="installed_app_build",e.InstalledAppVersion="installed_app_version"})(Fc||(Fc={}));function aHt(e,t){if(!e)throw new Error(t)}a(aHt,"assert");function oHt(e){return e?.replace(/\/+$/,"")}a(oHt,"removeTrailingSlash");async function sHt(e,t){let r=null;for(let n=0;n<t.retryCount+1;n++){n>0&&await new Promise(i=>setTimeout(i,t.retryDelay));try{return await e()}catch(i){if(r=i,!t.retryCheck(i))throw i}}throw r}a(sHt,"retriable");function uHt(){return new Date().getTime()}a(uHt,"currentTimestamp");function sPe(){return new Date().toISOString()}a(sPe,"currentISOTime");function mPe(e,t){let r=setTimeout(e,t);return r?.unref&&r?.unref(),r}a(mPe,"safeSetTimeout");var ZT=String.fromCharCode,uPe="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",YN={};function cHt(e,t){if(!YN[e]){YN[e]={};for(let r=0;r<e.length;r++)YN[e][e.charAt(r)]=r}return YN[e][t]}a(cHt,"getBaseValue");var eA={compressToBase64:function(e){if(e==null)return"";let t=eA._compress(e,6,function(r){return uPe.charAt(r)});switch(t.length%4){default:case 0:return t;case 1:return t+"===";case 2:return t+"==";case 3:return t+"="}},decompressFromBase64:function(e){return e==null?"":e==""?null:eA._decompress(e.length,32,function(t){return cHt(uPe,e.charAt(t))})},compress:function(e){return eA._compress(e,16,function(t){return ZT(t)})},_compress:function(e,t,r){if(e==null)return"";let n={},i={},o=[],s,u,c="",l="",f="",p=2,d=3,h=2,m=0,g=0,y;for(y=0;y<e.length;y+=1)if(c=e.charAt(y),Object.prototype.hasOwnProperty.call(n,c)||(n[c]=d++,i[c]=!0),l=f+c,Object.prototype.hasOwnProperty.call(n,l))f=l;else{if(Object.prototype.hasOwnProperty.call(i,f)){if(f.charCodeAt(0)<256){for(s=0;s<h;s++)m=m<<1,g==t-1?(g=0,o.push(r(m)),m=0):g++;for(u=f.charCodeAt(0),s=0;s<8;s++)m=m<<1|u&1,g==t-1?(g=0,o.push(r(m)),m=0):g++,u=u>>1}else{for(u=1,s=0;s<h;s++)m=m<<1|u,g==t-1?(g=0,o.push(r(m)),m=0):g++,u=0;for(u=f.charCodeAt(0),s=0;s<16;s++)m=m<<1|u&1,g==t-1?(g=0,o.push(r(m)),m=0):g++,u=u>>1}p--,p==0&&(p=Math.pow(2,h),h++),delete i[f]}else for(u=n[f],s=0;s<h;s++)m=m<<1|u&1,g==t-1?(g=0,o.push(r(m)),m=0):g++,u=u>>1;p--,p==0&&(p=Math.pow(2,h),h++),n[l]=d++,f=String(c)}if(f!==""){if(Object.prototype.hasOwnProperty.call(i,f)){if(f.charCodeAt(0)<256){for(s=0;s<h;s++)m=m<<1,g==t-1?(g=0,o.push(r(m)),m=0):g++;for(u=f.charCodeAt(0),s=0;s<8;s++)m=m<<1|u&1,g==t-1?(g=0,o.push(r(m)),m=0):g++,u=u>>1}else{for(u=1,s=0;s<h;s++)m=m<<1|u,g==t-1?(g=0,o.push(r(m)),m=0):g++,u=0;for(u=f.charCodeAt(0),s=0;s<16;s++)m=m<<1|u&1,g==t-1?(g=0,o.push(r(m)),m=0):g++,u=u>>1}p--,p==0&&(p=Math.pow(2,h),h++),delete i[f]}else for(u=n[f],s=0;s<h;s++)m=m<<1|u&1,g==t-1?(g=0,o.push(r(m)),m=0):g++,u=u>>1;p--,p==0&&(p=Math.pow(2,h),h++)}for(u=2,s=0;s<h;s++)m=m<<1|u&1,g==t-1?(g=0,o.push(r(m)),m=0):g++,u=u>>1;for(;;)if(m=m<<1,g==t-1){o.push(r(m));break}else g++;return o.join("")},decompress:function(e){return e==null?"":e==""?null:eA._decompress(e.length,32768,function(t){return e.charCodeAt(t)})},_decompress:function(e,t,r){let n=[],i=[],o={val:r(0),position:t,index:1},s=4,u=4,c=3,l="",f,p,d,h,m,g,y;for(f=0;f<3;f+=1)n[f]=f;for(d=0,m=Math.pow(2,2),g=1;g!=m;)h=o.val&o.position,o.position>>=1,o.position==0&&(o.position=t,o.val=r(o.index++)),d|=(h>0?1:0)*g,g<<=1;switch(d){case 0:for(d=0,m=Math.pow(2,8),g=1;g!=m;)h=o.val&o.position,o.position>>=1,o.position==0&&(o.position=t,o.val=r(o.index++)),d|=(h>0?1:0)*g,g<<=1;y=ZT(d);break;case 1:for(d=0,m=Math.pow(2,16),g=1;g!=m;)h=o.val&o.position,o.position>>=1,o.position==0&&(o.position=t,o.val=r(o.index++)),d|=(h>0?1:0)*g,g<<=1;y=ZT(d);break;case 2:return""}for(n[3]=y,p=y,i.push(y);;){if(o.index>e)return"";for(d=0,m=Math.pow(2,c),g=1;g!=m;)h=o.val&o.position,o.position>>=1,o.position==0&&(o.position=t,o.val=r(o.index++)),d|=(h>0?1:0)*g,g<<=1;switch(y=d){case 0:for(d=0,m=Math.pow(2,8),g=1;g!=m;)h=o.val&o.position,o.position>>=1,o.position==0&&(o.position=t,o.val=r(o.index++)),d|=(h>0?1:0)*g,g<<=1;n[u++]=ZT(d),y=u-1,s--;break;case 1:for(d=0,m=Math.pow(2,16),g=1;g!=m;)h=o.val&o.position,o.position>>=1,o.position==0&&(o.position=t,o.val=r(o.index++)),d|=(h>0?1:0)*g,g<<=1;n[u++]=ZT(d),y=u-1,s--;break;case 2:return i.join("")}if(s==0&&(s=Math.pow(2,c),c++),n[y])l=n[y];else if(y===u)l=p+p.charAt(0);else return null;i.push(l),n[u++]=p+l.charAt(0),s--,p=l,s==0&&(s=Math.pow(2,c),c++)}}},L9=class{static{a(this,"SimpleEventEmitter")}constructor(){this.events={},this.events={}}on(t,r){return this.events[t]||(this.events[t]=[]),this.events[t].push(r),()=>{this.events[t]=this.events[t].filter(n=>n!==r)}}emit(t,r){for(let n of this.events[t]||[])n(r);for(let n of this.events["*"]||[])n(t,r)}};var JN="0123456789abcdef",XN=class e{static{a(this,"UUID")}constructor(t){this.bytes=t}static ofInner(t){if(t.length!==16)throw new TypeError("not 128-bit length");return new e(t)}static fromFieldsV7(t,r,n,i){if(!Number.isInteger(t)||!Number.isInteger(r)||!Number.isInteger(n)||!Number.isInteger(i)||t<0||r<0||n<0||i<0||t>0xffffffffffff||r>4095||n>1073741823||i>4294967295)throw new RangeError("invalid field value");let o=new Uint8Array(16);return o[0]=t/2**40,o[1]=t/2**32,o[2]=t/2**24,o[3]=t/2**16,o[4]=t/2**8,o[5]=t,o[6]=112|r>>>8,o[7]=r,o[8]=128|n>>>24,o[9]=n>>>16,o[10]=n>>>8,o[11]=n,o[12]=i>>>24,o[13]=i>>>16,o[14]=i>>>8,o[15]=i,new e(o)}static parse(t){let r;switch(t.length){case 32:r=/^[0-9a-f]{32}$/i.exec(t)?.[0];break;case 36:r=/^([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(t)?.slice(1,6).join("");break;case 38:r=/^\{([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})\}$/i.exec(t)?.slice(1,6).join("");break;case 45:r=/^urn:uuid:([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(t)?.slice(1,6).join("");break}if(r){let n=new Uint8Array(16);for(let i=0;i<16;i+=4){let o=parseInt(r.substring(2*i,2*i+8),16);n[i+0]=o>>>24,n[i+1]=o>>>16,n[i+2]=o>>>8,n[i+3]=o}return new e(n)}else throw new SyntaxError("could not parse UUID string")}toString(){let t="";for(let r=0;r<this.bytes.length;r++)t+=JN.charAt(this.bytes[r]>>>4),t+=JN.charAt(this.bytes[r]&15),(r===3||r===5||r===7||r===9)&&(t+="-");return t}toHex(){let t="";for(let r=0;r<this.bytes.length;r++)t+=JN.charAt(this.bytes[r]>>>4),t+=JN.charAt(this.bytes[r]&15);return t}toJSON(){return this.toString()}getVariant(){let t=this.bytes[8]>>>4;if(t<0)throw new Error("unreachable");if(t<=7)return this.bytes.every(r=>r===0)?"NIL":"VAR_0";if(t<=11)return"VAR_10";if(t<=13)return"VAR_110";if(t<=15)return this.bytes.every(r=>r===255)?"MAX":"VAR_RESERVED";throw new Error("unreachable")}getVersion(){return this.getVariant()==="VAR_10"?this.bytes[6]>>>4:void 0}clone(){return new e(this.bytes.slice(0))}equals(t){return this.compareTo(t)===0}compareTo(t){for(let r=0;r<16;r++){let n=this.bytes[r]-t.bytes[r];if(n!==0)return Math.sign(n)}return 0}},F9=class{static{a(this,"V7Generator")}constructor(t){this.timestamp=0,this.counter=0,this.random=t??lHt()}generate(){return this.generateOrResetCore(Date.now(),1e4)}generateOrAbort(){return this.generateOrAbortCore(Date.now(),1e4)}generateOrResetCore(t,r){let n=this.generateOrAbortCore(t,r);return n===void 0&&(this.timestamp=0,n=this.generateOrAbortCore(t,r)),n}generateOrAbortCore(t,r){if(!Number.isInteger(t)||t<1||t>0xffffffffffff)throw new RangeError("`unixTsMs` must be a 48-bit positive integer");if(r<0||r>0xffffffffffff)throw new RangeError("`rollbackAllowance` out of reasonable range");if(t>this.timestamp)this.timestamp=t,this.resetCounter();else if(t+r>=this.timestamp)this.counter++,this.counter>4398046511103&&(this.timestamp++,this.resetCounter());else return;return XN.fromFieldsV7(this.timestamp,Math.trunc(this.counter/2**30),this.counter&2**30-1,this.random.nextUint32())}resetCounter(){this.counter=this.random.nextUint32()*1024+(this.random.nextUint32()&1023)}generateV4(){let t=new Uint8Array(Uint32Array.of(this.random.nextUint32(),this.random.nextUint32(),this.random.nextUint32(),this.random.nextUint32()).buffer);return t[6]=64|t[6]>>>4,t[8]=128|t[8]>>>2,XN.ofInner(t)}},lHt=a(()=>({nextUint32:()=>Math.trunc(Math.random()*65536)*65536+Math.trunc(Math.random()*65536)}),"getDefaultRandom"),cPe,lPe=a(()=>fHt().toString(),"uuidv7"),fHt=a(()=>(cPe||(cPe=new F9)).generate(),"uuidv7obj"),ZN=class extends Error{static{a(this,"PostHogFetchHttpError")}constructor(t){super("HTTP error while fetching PostHog: "+t.status),this.response=t,this.name="PostHogFetchHttpError"}},tA=class extends Error{static{a(this,"PostHogFetchNetworkError")}constructor(t){super("Network error while fetching PostHog",t instanceof Error?{cause:t}:{}),this.error=t,this.name="PostHogFetchNetworkError"}};function fPe(e){return typeof e=="object"&&(e instanceof ZN||e instanceof tA)}a(fPe,"isPostHogFetchError");var U9=class{static{a(this,"PostHogCoreStateless")}constructor(t,r){this.flushPromise=null,this.disableGeoip=!0,this.disabled=!1,this.defaultOptIn=!0,this.pendingPromises={},this._events=new L9,this._isInitialized=!1,aHt(t,"You must pass your PostHog project's api key."),this.apiKey=t,this.host=oHt(r?.host||"https://app.posthog.com"),this.flushAt=r?.flushAt?Math.max(r?.flushAt,1):20,this.maxBatchSize=Math.max(this.flushAt,r?.maxBatchSize??100),this.maxQueueSize=Math.max(this.flushAt,r?.maxQueueSize??1e3),this.flushInterval=r?.flushInterval??1e4,this.captureMode=r?.captureMode||"form",this.defaultOptIn=r?.defaultOptIn??!0,this._retryOptions={retryCount:r?.fetchRetryCount??3,retryDelay:r?.fetchRetryDelay??3e3,retryCheck:fPe},this.requestTimeout=r?.requestTimeout??1e4,this.featureFlagsRequestTimeoutMs=r?.featureFlagsRequestTimeoutMs??3e3,this.disableGeoip=r?.disableGeoip??!0,this.disabled=r?.disabled??!1,this._initPromise=Promise.resolve(),this._isInitialized=!0}wrap(t){if(this.disabled){this.isDebug&&console.warn("[PostHog] The client is disabled");return}if(this._isInitialized)return t();this._initPromise.then(()=>t())}getCommonEventProperties(){return{$lib:this.getLibraryId(),$lib_version:this.getLibraryVersion()}}get optedOut(){return this.getPersistedProperty(Fc.OptedOut)??!this.defaultOptIn}async optIn(){this.wrap(()=>{this.setPersistedProperty(Fc.OptedOut,!1)})}async optOut(){this.wrap(()=>{this.setPersistedProperty(Fc.OptedOut,!0)})}on(t,r){return this._events.on(t,r)}debug(t=!0){if(this.removeDebugCallback?.(),t){let r=this.on("*",(n,i)=>console.log("PostHog Debug",n,i));this.removeDebugCallback=()=>{r(),this.removeDebugCallback=void 0}}}get isDebug(){return!!this.removeDebugCallback}buildPayload(t){return{distinct_id:t.distinct_id,event:t.event,properties:{...t.properties||{},...this.getCommonEventProperties()}}}addPendingPromise(t){let r=lPe();return this.pendingPromises[r]=t,t.catch(()=>{}).finally(()=>{delete this.pendingPromises[r]}),t}identifyStateless(t,r,n){this.wrap(()=>{let i={...this.buildPayload({distinct_id:t,event:"$identify",properties:r})};this.enqueue("identify",i,n)})}captureStateless(t,r,n,i){this.wrap(()=>{let o=this.buildPayload({distinct_id:t,event:r,properties:n});this.enqueue("capture",o,i)})}aliasStateless(t,r,n,i){this.wrap(()=>{let o=this.buildPayload({event:"$create_alias",distinct_id:r,properties:{...n||{},distinct_id:r,alias:t}});this.enqueue("alias",o,i)})}groupIdentifyStateless(t,r,n,i,o,s){this.wrap(()=>{let u=this.buildPayload({distinct_id:o||`$${t}_${r}`,event:"$groupidentify",properties:{$group_type:t,$group_key:r,$group_set:n||{},...s||{}}});this.enqueue("capture",u,i)})}async getDecide(t,r={},n={},i={},o={}){await this._initPromise;let s=`${this.host}/decide/?v=3`,u={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"},body:JSON.stringify({token:this.apiKey,distinct_id:t,groups:r,person_properties:n,group_properties:i,...o})};return this.fetchWithRetry(s,u,{retryCount:0},this.featureFlagsRequestTimeoutMs).then(c=>c.json()).catch(c=>{this._events.emit("error",c)})}async getFeatureFlagStateless(t,r,n={},i={},o={},s){await this._initPromise;let u=await this.getFeatureFlagsStateless(r,n,i,o,s);if(!u)return;let c=u[t];return c===void 0&&(c=!1),c}async getFeatureFlagPayloadStateless(t,r,n={},i={},o={},s){await this._initPromise;let u=await this.getFeatureFlagPayloadsStateless(r,n,i,o,s);if(!u)return;let c=u[t];return c===void 0?null:c}async getFeatureFlagPayloadsStateless(t,r={},n={},i={},o){return await this._initPromise,(await this.getFeatureFlagsAndPayloadsStateless(t,r,n,i,o)).payloads}_parsePayload(t){try{return JSON.parse(t)}catch{return t}}async getFeatureFlagsStateless(t,r={},n={},i={},o){return await this._initPromise,(await this.getFeatureFlagsAndPayloadsStateless(t,r,n,i,o)).flags}async getFeatureFlagsAndPayloadsStateless(t,r={},n={},i={},o){await this._initPromise;let s={};(o??this.disableGeoip)&&(s.geoip_disable=!0);let u=await this.getDecide(t,r,n,i,s),c=u?.featureFlags,l=u?.featureFlagPayloads,f=l;return l&&(f=Object.fromEntries(Object.entries(l).map(([p,d])=>[p,this._parsePayload(d)]))),{flags:c,payloads:f}}enqueue(t,r,n){this.wrap(()=>{if(this.optedOut){this._events.emit(t,"Library is disabled. Not sending event. To re-enable, call posthog.optIn()");return}let i={...r,type:t,library:this.getLibraryId(),library_version:this.getLibraryVersion(),timestamp:n?.timestamp?n?.timestamp:sPe(),uuid:n?.uuid?n.uuid:lPe()};(n?.disableGeoip??this.disableGeoip)&&(i.properties||(i.properties={}),i.properties.$geoip_disable=!0),i.distinctId&&(i.distinct_id=i.distinctId,delete i.distinctId);let s=this.getPersistedProperty(Fc.Queue)||[];s.length>=this.maxQueueSize&&(s.shift(),console.info("Queue is full, the oldest event is dropped.")),s.push({message:i}),this.setPersistedProperty(Fc.Queue,s),this._events.emit(t,i),s.length>=this.flushAt&&this.flushBackground(),this.flushInterval&&!this._flushTimer&&(this._flushTimer=mPe(()=>this.flushBackground(),this.flushInterval))})}clearFlushTimer(){this._flushTimer&&(clearTimeout(this._flushTimer),this._flushTimer=void 0)}flushBackground(){this.flush().catch(()=>{})}async flush(){return this.flushPromise||(this.flushPromise=this._flush().finally(()=>{this.flushPromise=null}),this.addPendingPromise(this.flushPromise)),this.flushPromise}getCustomHeaders(){let t=this.getCustomUserAgent(),r={};return t&&t!==""&&(r["User-Agent"]=t),r}async _flush(){this.clearFlushTimer(),await this._initPromise;let t=this.getPersistedProperty(Fc.Queue)||[];if(!t.length)return[];let r=t.slice(0,this.maxBatchSize),n=r.map(l=>l.message),i=a(()=>{let l=this.getPersistedProperty(Fc.Queue)||[];this.setPersistedProperty(Fc.Queue,l.slice(r.length))},"persistQueueChange"),o={api_key:this.apiKey,batch:n,sent_at:sPe()},s=JSON.stringify(o),u=this.captureMode==="form"?`${this.host}/e/?ip=1&_=${uHt()}&v=${this.getLibraryVersion()}`:`${this.host}/batch/`,c=this.captureMode==="form"?{method:"POST",mode:"no-cors",credentials:"omit",headers:{...this.getCustomHeaders(),"Content-Type":"application/x-www-form-urlencoded"},body:`data=${encodeURIComponent(eA.compressToBase64(s))}&compression=lz64`}:{method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"},body:s};try{await this.fetchWithRetry(u,c)}catch(l){throw l instanceof tA||i(),this._events.emit("error",l),l}return i(),this._events.emit("flush",n),n}async fetchWithRetry(t,r,n,i){var o;return(o=AbortSignal).timeout??(o.timeout=a(function(u){let c=new AbortController;return setTimeout(()=>c.abort(),u),c.signal},"timeout")),await sHt(async()=>{let s=null;try{s=await this.fetch(t,{signal:AbortSignal.timeout(i??this.requestTimeout),...r})}catch(c){throw new tA(c)}if(!(r.mode==="no-cors")&&(s.status<200||s.status>=400))throw new ZN(s);return s},{...this._retryOptions,...n})}async shutdown(t=3e4){await this._initPromise,this.clearFlushTimer();try{await Promise.all(Object.values(this.pendingPromises));let r=Date.now()+t;for(;(this.getPersistedProperty(Fc.Queue)||[]).length!==0;){await this.flush();let i=Date.now();if(r<i)break}}catch(r){if(!fPe(r))throw r;console.error("Error while shutting down PostHog",r)}}},j9=class{static{a(this,"PostHogMemoryStorage")}constructor(){this._memoryStorage={}}getProperty(t){return this._memoryStorage[t]}setProperty(t,r){this._memoryStorage[t]=r!==null?r:void 0}},M9=typeof fetch<"u"?fetch:typeof global.fetch<"u"?global.fetch:void 0;if(!M9){let e=oPe();M9=a(async(t,r)=>{let n=await e.request({url:t,headers:r.headers,method:r.method.toLowerCase(),data:r.body,signal:r.signal,validateStatus:()=>!0});return{status:n.status,text:async()=>n.data,json:async()=>n.data}},"_fetch")}var gPe=M9,pHt=1152921504606847e3,eL=class e extends Error{static{a(this,"ClientError")}constructor(t){super(),Error.captureStackTrace(this,this.constructor),this.name="ClientError",this.message=t,Object.setPrototypeOf(this,e.prototype)}},ia=class e extends Error{static{a(this,"InconclusiveMatchError")}constructor(t){super(t),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,e.prototype)}},B9=class{static{a(this,"FeatureFlagsPoller")}constructor({pollingInterval:t,personalApiKey:r,projectApiKey:n,timeout:i,host:o,customHeaders:s,...u}){this.debugMode=!1,this.pollingInterval=t,this.personalApiKey=r,this.featureFlags=[],this.featureFlagsByKey={},this.groupTypeMapping={},this.cohorts={},this.loadedSuccessfullyOnce=!1,this.timeout=i,this.projectApiKey=n,this.host=o,this.poller=void 0,this.fetch=u.fetch||gPe,this.onError=u.onError,this.customHeaders=s,this.loadFeatureFlags()}debug(t=!0){this.debugMode=t}async getFeatureFlag(t,r,n={},i={},o={}){await this.loadFeatureFlags();let s,u;if(!this.loadedSuccessfullyOnce)return s;for(let c of this.featureFlags)if(t===c.key){u=c;break}if(u!==void 0)try{s=this.computeFlagLocally(u,r,n,i,o),this.debugMode&&console.debug(`Successfully computed flag locally: ${t} -> ${s}`)}catch(c){c instanceof ia?this.debugMode&&console.debug(`InconclusiveMatchError when computing flag locally: ${t}: ${c}`):c instanceof Error&&this.onError?.(new Error(`Error computing flag locally: ${t}: ${c}`))}return s}async computeFeatureFlagPayloadLocally(t,r){await this.loadFeatureFlags();let n;if(this.loadedSuccessfullyOnce){if(typeof r=="boolean"?n=this.featureFlagsByKey?.[t]?.filters?.payloads?.[r.toString()]:typeof r=="string"&&(n=this.featureFlagsByKey?.[t]?.filters?.payloads?.[r]),n==null)return null;try{return JSON.parse(n)}catch{return n}}}async getAllFlagsAndPayloads(t,r={},n={},i={}){await this.loadFeatureFlags();let o={},s={},u=this.featureFlags.length==0;return this.featureFlags.map(async c=>{try{let l=this.computeFlagLocally(c,t,r,n,i);o[c.key]=l;let f=await this.computeFeatureFlagPayloadLocally(c.key,l);f&&(s[c.key]=f)}catch(l){l instanceof ia||l instanceof Error&&this.onError?.(new Error(`Error computing flag locally: ${c.key}: ${l}`)),u=!0}}),{response:o,payloads:s,fallbackToDecide:u}}computeFlagLocally(t,r,n={},i={},o={}){if(t.ensure_experience_continuity)throw new ia("Flag has experience continuity enabled");if(!t.active)return!1;let u=(t.filters||{}).aggregation_group_type_index;if(u!=null){let c=this.groupTypeMapping[String(u)];if(!c)throw this.debugMode&&console.warn(`[FEATURE FLAGS] Unknown group type index ${u} for feature flag ${t.key}`),new ia("Flag has unknown group type index");if(!(c in n))return this.debugMode&&console.warn(`[FEATURE FLAGS] Can't compute group feature flag: ${t.key} without group names passed in`),!1;let l=o[c];return this.matchFeatureFlagProperties(t,n[c],l)}else return this.matchFeatureFlagProperties(t,r,i)}matchFeatureFlagProperties(t,r,n){let i=t.filters||{},o=i.groups||[],s=!1,u,c=[...o].sort((l,f)=>{let p=!!l.variant,d=!!f.variant;return p&&d?0:p?-1:d?1:0});for(let l of c)try{if(this.isConditionMatch(t,r,l,n)){let f=l.variant,p=i.multivariate?.variants||[];f&&p.some(d=>d.key===f)?u=f:u=this.getMatchingVariant(t,r)||!0;break}}catch(f){if(f instanceof ia)s=!0;else throw f}if(u!==void 0)return u;if(s)throw new ia("Can't determine if feature flag is enabled or not with given properties");return!1}isConditionMatch(t,r,n,i){let o=n.rollout_percentage;if((n.properties||[]).length>0){for(let s of n.properties){let u=s.type,c=!1;if(u==="cohort"?c=bPe(s,i,this.cohorts,this.debugMode):c=yPe(s,i),!c)return!1}if(o==null)return!0}return!(o!=null&&pPe(t.key,r)>o/100)}getMatchingVariant(t,r){let n=pPe(t.key,r,"variant"),i=this.variantLookupTable(t).find(o=>n>=o.valueMin&&n<o.valueMax);if(i)return i.key}variantLookupTable(t){let r=[],n=0,i=0;return((t.filters||{}).multivariate?.variants||[]).forEach(u=>{i=n+u.rollout_percentage/100,r.push({valueMin:n,valueMax:i,key:u.key}),n=i}),r}async loadFeatureFlags(t=!1){(!this.loadedSuccessfullyOnce||t)&&await this._loadFeatureFlags()}async _loadFeatureFlags(){this.poller&&(clearTimeout(this.poller),this.poller=void 0),this.poller=setTimeout(()=>this._loadFeatureFlags(),this.pollingInterval);try{let t=await this._requestFeatureFlagDefinitions();if(t&&t.status===401)throw new eL("Your personalApiKey is invalid. Are you sure you're not using your Project API key? More information: https://posthog.com/docs/api/overview");if(t&&t.status!==200)return;let r=await t.json();"flags"in r||this.onError?.(new Error(`Invalid response when getting feature flags: ${JSON.stringify(r)}`)),this.featureFlags=r.flags||[],this.featureFlagsByKey=this.featureFlags.reduce((n,i)=>(n[i.key]=i,n),{}),this.groupTypeMapping=r.group_type_mapping||{},this.cohorts=r.cohorts||[],this.loadedSuccessfullyOnce=!0}catch(t){t instanceof eL&&this.onError?.(t)}}async _requestFeatureFlagDefinitions(){let t=`${this.host}/api/feature_flag/local_evaluation?token=${this.projectApiKey}&send_cohorts`,r={method:"GET",headers:{...this.customHeaders,"Content-Type":"application/json",Authorization:`Bearer ${this.personalApiKey}`}},n=null;if(this.timeout&&typeof this.timeout=="number"){let i=new AbortController;n=mPe(()=>{i.abort()},this.timeout),r.signal=i.signal}try{return await this.fetch(t,r)}finally{clearTimeout(n)}}stopPoller(){clearTimeout(this.poller)}};function pPe(e,t,r=""){let n=nHt.createHash();return n.update(`${e}.${t}${r}`),parseInt(n.digest("hex").slice(0,15),16)/pHt}a(pPe,"_hash");function yPe(e,t){let r=e.key,n=e.value,i=e.operator||"exact";if(r in t){if(i==="is_not_set")throw new ia("Operator is_not_set is not supported")}else throw new ia(`Property ${r} not found in propertyValues`);let o=t[r];function s(c,l){return Array.isArray(c)?c.map(f=>String(f).toLowerCase()).includes(String(l).toLowerCase()):String(c).toLowerCase()===String(l).toLowerCase()}a(s,"computeExactMatch");function u(c,l,f){if(f==="gt")return c>l;if(f==="gte")return c>=l;if(f==="lt")return c<l;if(f==="lte")return c<=l;throw new Error(`Invalid operator: ${f}`)}switch(a(u,"compare"),i){case"exact":return s(n,o);case"is_not":return!s(n,o);case"is_set":return r in t;case"icontains":return String(o).toLowerCase().includes(String(n).toLowerCase());case"not_icontains":return!String(o).toLowerCase().includes(String(n).toLowerCase());case"regex":return dPe(String(n))&&String(o).match(String(n))!==null;case"not_regex":return dPe(String(n))&&String(o).match(String(n))===null;case"gt":case"gte":case"lt":case"lte":{let c=typeof n=="number"?n:null;if(typeof n=="string")try{c=parseFloat(n)}catch{}return c!=null&&o!=null?typeof o=="string"?u(o,String(n),i):u(o,c,i):u(String(o),String(n),i)}case"is_date_after":case"is_date_before":{let c=dHt(String(n));if(c==null&&(c=hPe(n)),c==null)throw new ia(`Invalid date: ${n}`);let l=hPe(o);return["is_date_before"].includes(i)?l<c:l>c}default:throw new ia(`Unknown operator: ${i}`)}}a(yPe,"matchProperty");function bPe(e,t,r,n=!1){let i=String(e.value);if(!(i in r))throw new ia("can't match cohort without a given cohort property value");let o=r[i];return vPe(o,t,r,n)}a(bPe,"matchCohort");function vPe(e,t,r,n=!1){if(!e)return!0;let i=e.type,o=e.values;if(!o||o.length===0)return!0;let s=!1;if("values"in o[0]){for(let u of o)try{let c=vPe(u,t,r,n);if(i==="AND"){if(!c)return!1}else if(c)return!0}catch(c){if(c instanceof ia)n&&console.debug(`Failed to compute property ${u} locally: ${c}`),s=!0;else throw c}if(s)throw new ia("Can't match cohort without a given cohort property value");return i==="AND"}else{for(let u of o)try{let c;u.type==="cohort"?c=bPe(u,t,r,n):c=yPe(u,t);let l=u.negation||!1;if(i==="AND"){if(!c&&!l||c&&l)return!1}else if(c&&!l||!c&&l)return!0}catch(c){if(c instanceof ia)n&&console.debug(`Failed to compute property ${u} locally: ${c}`),s=!0;else throw c}if(s)throw new ia("can't match cohort without a given cohort property value");return i==="AND"}}a(vPe,"matchPropertyGroup");function dPe(e){try{return new RegExp(e),!0}catch{return!1}}a(dPe,"isValidRegex");function hPe(e){if(e instanceof Date)return e;if(typeof e=="string"||typeof e=="number"){let t=new Date(e);if(!isNaN(t.valueOf()))return t;throw new ia(`${e} is in an invalid date format`)}else throw new ia(`The date provided ${e} must be a string, number, or date object`)}a(hPe,"convertToDateTime");function dHt(e){let t=/^-?(?<number>[0-9]+)(?<interval>[a-z])$/,r=e.match(t),n=new Date(new Date().toISOString());if(r){if(!r.groups)return null;let i=parseInt(r.groups.number);if(i>=1e4)return null;let o=r.groups.interval;if(o=="h")n.setUTCHours(n.getUTCHours()-i);else if(o=="d")n.setUTCDate(n.getUTCDate()-i);else if(o=="w")n.setUTCDate(n.getUTCDate()-i*7);else if(o=="m")n.setUTCMonth(n.getUTCMonth()-i);else if(o=="y")n.setUTCFullYear(n.getUTCFullYear()-i);else return null;return n}else return null}a(dHt,"relativeDateParseForFeatureFlagMatching");var hHt=30*1e3,mHt=50*1e3,q9=class extends U9{static{a(this,"PostHog")}constructor(t,r={}){r.captureMode=r?.captureMode||"json",super(t,r),this._memoryStorage=new j9,this.options=r,r.personalApiKey&&(this.featureFlagsPoller=new B9({pollingInterval:typeof r.featureFlagsPollingInterval=="number"?r.featureFlagsPollingInterval:hHt,personalApiKey:r.personalApiKey,projectApiKey:t,timeout:r.requestTimeout??1e4,host:this.host,fetch:r.fetch,onError:n=>{this._events.emit("error",n)},customHeaders:this.getCustomHeaders()})),this.distinctIdHasSentFlagCalls={},this.maxCacheSize=r.maxCacheSize||mHt}getPersistedProperty(t){return this._memoryStorage.getProperty(t)}setPersistedProperty(t,r){return this._memoryStorage.setProperty(t,r)}fetch(t,r){return this.options.fetch?this.options.fetch(t,r):gPe(t,r)}getLibraryId(){return"posthog-node"}getLibraryVersion(){return iHt}getCustomUserAgent(){return`${this.getLibraryId()}/${this.getLibraryVersion()}`}enable(){return super.optIn()}disable(){return super.optOut()}debug(t=!0){super.debug(t),this.featureFlagsPoller?.debug(t)}capture({distinctId:t,event:r,properties:n,groups:i,sendFeatureFlags:o,timestamp:s,disableGeoip:u,uuid:c}){let l=a(d=>{super.captureStateless(t,r,d,{timestamp:s,disableGeoip:u,uuid:c})},"_capture"),f=a((d,h,m)=>super.getFeatureFlagsStateless(d,h,void 0,void 0,m),"_getFlags"),p=Promise.resolve().then(async()=>{if(o)return await f(t,i,u);if((this.featureFlagsPoller?.featureFlags?.length||0)>0){let d={};for(let[h,m]of Object.entries(i||{}))d[h]=String(m);return await this.getAllFlags(t,{groups:d,disableGeoip:u,onlyEvaluateLocally:!0})}return{}}).then(d=>{let h={};if(d)for(let[g,y]of Object.entries(d))h[`$feature/${g}`]=y;let m=Object.keys(d||{}).filter(g=>d?.[g]!==!1);return m.length>0&&(h.$active_feature_flags=m),h}).catch(()=>({})).then(d=>{l({...d,...n,$groups:i})});this.addPendingPromise(p)}identify({distinctId:t,properties:r,disableGeoip:n}){let i=r?.$set||r;super.identifyStateless(t,{$set:i},{disableGeoip:n})}alias(t){super.aliasStateless(t.alias,t.distinctId,void 0,{disableGeoip:t.disableGeoip})}async getFeatureFlag(t,r,n){let{groups:i,disableGeoip:o}=n||{},{onlyEvaluateLocally:s,sendFeatureFlagEvents:u,personProperties:c,groupProperties:l}=n||{},f=this.addLocalPersonAndGroupProperties(r,i,c,l);c=f.allPersonProperties,l=f.allGroupProperties,s==null&&(s=!1),u==null&&(u=!0);let p=await this.featureFlagsPoller?.getFeatureFlag(t,r,i,c,l),d=p!==void 0;!d&&!s&&(p=await super.getFeatureFlagStateless(t,r,i,c,l,o));let h=`${t}_${p}`;return u&&(!(r in this.distinctIdHasSentFlagCalls)||!this.distinctIdHasSentFlagCalls[r].includes(h))&&(Object.keys(this.distinctIdHasSentFlagCalls).length>=this.maxCacheSize&&(this.distinctIdHasSentFlagCalls={}),Array.isArray(this.distinctIdHasSentFlagCalls[r])?this.distinctIdHasSentFlagCalls[r].push(h):this.distinctIdHasSentFlagCalls[r]=[h],this.capture({distinctId:r,event:"$feature_flag_called",properties:{$feature_flag:t,$feature_flag_response:p,locally_evaluated:d,[`$feature/${t}`]:p},groups:i,disableGeoip:o})),p}async getFeatureFlagPayload(t,r,n,i){let{groups:o,disableGeoip:s}=i||{},{onlyEvaluateLocally:u,sendFeatureFlagEvents:c,personProperties:l,groupProperties:f}=i||{},p=this.addLocalPersonAndGroupProperties(r,o,l,f);l=p.allPersonProperties,f=p.allGroupProperties;let d;return n||(n=await this.getFeatureFlag(t,r,{...i,onlyEvaluateLocally:!0})),n&&(d=await this.featureFlagsPoller?.computeFeatureFlagPayloadLocally(t,n)),u==null&&(u=!1),c==null&&(c=!0),u==null&&(u=!1),!(d!==void 0)&&!u&&(d=await super.getFeatureFlagPayloadStateless(t,r,o,l,f,s)),d}async isFeatureEnabled(t,r,n){let i=await this.getFeatureFlag(t,r,n);if(i!==void 0)return!!i||!1}async getAllFlags(t,r){return(await this.getAllFlagsAndPayloads(t,r)).featureFlags}async getAllFlagsAndPayloads(t,r){let{groups:n,disableGeoip:i}=r||{},{onlyEvaluateLocally:o,personProperties:s,groupProperties:u}=r||{},c=this.addLocalPersonAndGroupProperties(t,n,s,u);s=c.allPersonProperties,u=c.allGroupProperties,o==null&&(o=!1);let l=await this.featureFlagsPoller?.getAllFlagsAndPayloads(t,n,s,u),f={},p={},d=!0;if(l&&(f=l.response,p=l.payloads,d=l.fallbackToDecide),d&&!o){let h=await super.getFeatureFlagsAndPayloadsStateless(t,n,s,u,i);f={...f,...h.flags||{}},p={...p,...h.payloads||{}}}return{featureFlags:f,featureFlagPayloads:p}}groupIdentify({groupType:t,groupKey:r,properties:n,distinctId:i,disableGeoip:o}){super.groupIdentifyStateless(t,r,n,{disableGeoip:o},i)}async reloadFeatureFlags(){await this.featureFlagsPoller?.loadFeatureFlags(!0)}async shutdown(t){return this.featureFlagsPoller?.stopPoller(),super.shutdown(t)}addLocalPersonAndGroupProperties(t,r,n,i){let o={distinct_id:t,...n||{}},s={};if(r)for(let u of Object.keys(r))s[u]={$group_key:r[u],...i?.[u]||{}};return{allPersonProperties:o,allGroupProperties:s}}},tL=class e{static{a(this,"PostHogSentryIntegration")}constructor(t,r,n,i){this.posthog=t,this.posthogHost=r,this.organization=n,this.prefix=i,this.name="posthog-node",this.posthogHost=t.options.host??"https://app.posthog.com"}setupOnce(t,r){t(n=>{if(n.exception?.values===void 0||n.exception.values.length===0)return n;n.tags||(n.tags={});let i=r(),o=n.tags[e.POSTHOG_ID_TAG];if(o===void 0)return n;n.tags["PostHog Person URL"]=new URL(`/person/${o}`,this.posthogHost).toString();let s={$exception_message:n.exception.values[0]?.value,$exception_type:n.exception.values[0]?.type,$exception_personURL:n.tags["PostHog Person URL"],$sentry_event_id:n.event_id,$sentry_exception:n.exception,$sentry_exception_message:n.exception.values[0]?.value,$sentry_exception_type:n.exception.values[0]?.type,$sentry_tags:n.tags},u=i.getClient()?.getDsn()?.projectId;return this.organization!==void 0&&u!==void 0&&n.event_id!==void 0&&(s.$sentry_url=`${this.prefix??"https://sentry.io/organizations"}/${this.organization}/issues/?project=${u}&query=${n.event_id}`),this.posthog.capture({event:"$exception",distinctId:o,properties:s}),n})}};tL.POSTHOG_ID_TAG="posthog_distinct_id";rL.PostHog=q9;rL.PostHogSentryIntegration=tL});var V9=S(rA=>{"use strict";var EHt=rA&&rA.__classPrivateFieldGet||function(e,t,r,n){if(r==="a"&&!n)throw new TypeError("Private accessor was defined without a getter");if(typeof t=="function"?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return r==="m"?n:r==="a"?n.call(e):n?n.value:t.get(e)},G9,TPe;Object.defineProperty(rA,"__esModule",{value:!0});var iL=K9(),H9=class{static{a(this,"CannedPolicy")}constructor(t,r,n){G9.add(this),this.url=t,this.expireTime=Math.round(r/1e3)||void 0,this.ipRange=n}toJSON(){EHt(this,G9,"m",TPe).call(this);let t={Statement:[{Resource:this.url,Condition:{DateLessThan:{"AWS:EpochTime":this.expireTime}}}]};return this.ipRange&&(t.Statement[0].Condition.IpAddress={"AWS:SourceIp":this.ipRange}),JSON.stringify(t)}};G9=new WeakSet,TPe=a(function(){return(0,iL.assert)(!!this.url,"Missing param: url"),(0,iL.assert)(!!this.expireTime,"Missing param: expireTime"),(0,iL.assert)(this.expireTime<2147483647,"expireTime must be less than January 19, 2038 03:14:08 GMT due to the limits of UNIX time"),(0,iL.assert)(this.expireTime>new Date().getTime()/1e3,"expireTime must be after the current time"),!0},"_CannedPolicy_validate");rA.default=H9});var K9=S(xa=>{"use strict";var _Ht=xa&&xa.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(xa,"__esModule",{value:!0});xa.assert=xa.getPrivateKey=xa.getIpRange=xa.getExpireTime=xa.createPolicySignature=xa.createPolicy=xa.normalizeBase64=void 0;var SHt=require("fs"),xHt=require("crypto"),THt=_Ht(V9());function AHt(e){return e.replace(/\+/g,"-").replace(/=/g,"_").replace(/\//g,"~")}a(AHt,"normalizeBase64");xa.normalizeBase64=AHt;function RHt(e,t,r){let n=Math.round(Date.now()+18e5);return t=t||n,new THt.default(e,t,r)}a(RHt,"createPolicy");xa.createPolicy=RHt;function OHt(e,t){let r=(0,xHt.createSign)("RSA-SHA1");return r.update(e.toJSON()),r.sign(t,"base64")}a(OHt,"createPolicySignature");xa.createPolicySignature=OHt;function IHt(e){return+e.expireTime||null}a(IHt,"getExpireTime");xa.getExpireTime=IHt;function kHt(e){return e.ipRange||null}a(kHt,"getIpRange");xa.getIpRange=kHt;function CHt(e){let t=e.privateKeyString,r;if(e.privateKeyPath&&(r=(0,SHt.readFileSync)(e.privateKeyPath),t=r.toString("ascii")),!/\r|\n/.test(t))throw new Error("Invalid private key string, must include line breaks");return t}a(CHt,"getPrivateKey");xa.getPrivateKey=CHt;function DHt(e,t){if(!e)throw new Error(t)}a(DHt,"assert");xa.assert=DHt});var APe=S(Eh=>{"use strict";Object.defineProperty(Eh,"__esModule",{value:!0});Eh.getSignedCookies=Eh.getSignedRTMPUrl=Eh.getSignedUrl=void 0;var PHt=require("node:url"),as=K9();function NHt(e,t){let r=(0,as.getPrivateKey)(t),n=(0,as.createPolicy)(e,(0,as.getExpireTime)(t),(0,as.getIpRange)(t)),i=(0,as.createPolicySignature)(n,r),o=Buffer.from(n.toJSON()).toString("base64"),s=new PHt.URL(e);return s.searchParams.set("Expires",`${n.expireTime}`),s.searchParams.set("Policy",(0,as.normalizeBase64)(o)),s.searchParams.set("Signature",(0,as.normalizeBase64)(i)),s.searchParams.set("Key-Pair-Id",t.keypairId),s.toString()}a(NHt,"getSignedUrl");Eh.getSignedUrl=NHt;function LHt(){throw new Error("Amazon CloudFront has deprecated RTMP distributions. For more information see https://repost.aws/questions/QUoUZgHZh7SEWlnQUPlBmVNQ/announcement-rtmp-support-discontinuing-on-december-31-2020")}a(LHt,"getSignedRTMPUrl");Eh.getSignedRTMPUrl=LHt;function FHt(e,t){let r=(0,as.getPrivateKey)(t),n=(0,as.createPolicy)(e,(0,as.getExpireTime)(t),(0,as.getIpRange)(t)),i=(0,as.createPolicySignature)(n,r),o=Buffer.from(n.toJSON()).toString("base64"),s={};return s["CloudFront-Policy"]=(0,as.normalizeBase64)(o),s["CloudFront-Signature"]=(0,as.normalizeBase64)(i),s["CloudFront-Key-Pair-Id"]=t.keypairId,s}a(FHt,"getSignedCookies");Eh.getSignedCookies=FHt});var RPe=S(uo=>{"use strict";var UHt=uo&&uo.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),jHt=uo&&uo.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),MHt=uo&&uo.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&UHt(t,e,r);return jHt(t,e),t};Object.defineProperty(uo,"__esModule",{value:!0});uo.CannedPolicy=uo.getSignedCookies=uo.getSignedRTMPUrl=uo.getSignedUrl=void 0;var Q9=APe();Object.defineProperty(uo,"getSignedUrl",{enumerable:!0,get:function(){return Q9.getSignedUrl}});Object.defineProperty(uo,"getSignedRTMPUrl",{enumerable:!0,get:function(){return Q9.getSignedRTMPUrl}});Object.defineProperty(uo,"getSignedCookies",{enumerable:!0,get:function(){return Q9.getSignedCookies}});uo.CannedPolicy=MHt(V9())});var hA=S((oKr,cNe)=>{"use strict";var kVt="2.0.0",CVt=Number.MAX_SAFE_INTEGER||9007199254740991,DVt=16,PVt=256-6,NVt=["major","premajor","minor","preminor","patch","prepatch","prerelease"];cNe.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:DVt,MAX_SAFE_BUILD_LENGTH:PVt,MAX_SAFE_INTEGER:CVt,RELEASE_TYPES:NVt,SEMVER_SPEC_VERSION:kVt,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var mA=S((sKr,lNe)=>{"use strict";var LVt=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};lNe.exports=LVt});var rE=S((Bl,fNe)=>{"use strict";var{MAX_SAFE_COMPONENT_LENGTH:p7,MAX_SAFE_BUILD_LENGTH:FVt,MAX_LENGTH:UVt}=hA(),jVt=mA();Bl=fNe.exports={};var MVt=Bl.re=[],BVt=Bl.safeRe=[],dt=Bl.src=[],qVt=Bl.safeSrc=[],ht=Bl.t={},$Vt=0,d7="[a-zA-Z0-9-]",zVt=[["\\s",1],["\\d",UVt],[d7,FVt]],WVt=a(e=>{for(let[t,r]of zVt)e=e.split(`${t}*`).join(`${t}{0,${r}}`).split(`${t}+`).join(`${t}{1,${r}}`);return e},"makeSafeRegex"),Jt=a((e,t,r)=>{let n=WVt(t),i=$Vt++;jVt(e,i,t),ht[e]=i,dt[i]=t,qVt[i]=n,MVt[i]=new RegExp(t,r?"g":void 0),BVt[i]=new RegExp(n,r?"g":void 0)},"createToken");Jt("NUMERICIDENTIFIER","0|[1-9]\\d*");Jt("NUMERICIDENTIFIERLOOSE","\\d+");Jt("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${d7}*`);Jt("MAINVERSION",`(${dt[ht.NUMERICIDENTIFIER]})\\.(${dt[ht.NUMERICIDENTIFIER]})\\.(${dt[ht.NUMERICIDENTIFIER]})`);Jt("MAINVERSIONLOOSE",`(${dt[ht.NUMERICIDENTIFIERLOOSE]})\\.(${dt[ht.NUMERICIDENTIFIERLOOSE]})\\.(${dt[ht.NUMERICIDENTIFIERLOOSE]})`);Jt("PRERELEASEIDENTIFIER",`(?:${dt[ht.NONNUMERICIDENTIFIER]}|${dt[ht.NUMERICIDENTIFIER]})`);Jt("PRERELEASEIDENTIFIERLOOSE",`(?:${dt[ht.NONNUMERICIDENTIFIER]}|${dt[ht.NUMERICIDENTIFIERLOOSE]})`);Jt("PRERELEASE",`(?:-(${dt[ht.PRERELEASEIDENTIFIER]}(?:\\.${dt[ht.PRERELEASEIDENTIFIER]})*))`);Jt("PRERELEASELOOSE",`(?:-?(${dt[ht.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${dt[ht.PRERELEASEIDENTIFIERLOOSE]})*))`);Jt("BUILDIDENTIFIER",`${d7}+`);Jt("BUILD",`(?:\\+(${dt[ht.BUILDIDENTIFIER]}(?:\\.${dt[ht.BUILDIDENTIFIER]})*))`);Jt("FULLPLAIN",`v?${dt[ht.MAINVERSION]}${dt[ht.PRERELEASE]}?${dt[ht.BUILD]}?`);Jt("FULL",`^${dt[ht.FULLPLAIN]}$`);Jt("LOOSEPLAIN",`[v=\\s]*${dt[ht.MAINVERSIONLOOSE]}${dt[ht.PRERELEASELOOSE]}?${dt[ht.BUILD]}?`);Jt("LOOSE",`^${dt[ht.LOOSEPLAIN]}$`);Jt("GTLT","((?:<|>)?=?)");Jt("XRANGEIDENTIFIERLOOSE",`${dt[ht.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);Jt("XRANGEIDENTIFIER",`${dt[ht.NUMERICIDENTIFIER]}|x|X|\\*`);Jt("XRANGEPLAIN",`[v=\\s]*(${dt[ht.XRANGEIDENTIFIER]})(?:\\.(${dt[ht.XRANGEIDENTIFIER]})(?:\\.(${dt[ht.XRANGEIDENTIFIER]})(?:${dt[ht.PRERELEASE]})?${dt[ht.BUILD]}?)?)?`);Jt("XRANGEPLAINLOOSE",`[v=\\s]*(${dt[ht.XRANGEIDENTIFIERLOOSE]})(?:\\.(${dt[ht.XRANGEIDENTIFIERLOOSE]})(?:\\.(${dt[ht.XRANGEIDENTIFIERLOOSE]})(?:${dt[ht.PRERELEASELOOSE]})?${dt[ht.BUILD]}?)?)?`);Jt("XRANGE",`^${dt[ht.GTLT]}\\s*${dt[ht.XRANGEPLAIN]}$`);Jt("XRANGELOOSE",`^${dt[ht.GTLT]}\\s*${dt[ht.XRANGEPLAINLOOSE]}$`);Jt("COERCEPLAIN",`(^|[^\\d])(\\d{1,${p7}})(?:\\.(\\d{1,${p7}}))?(?:\\.(\\d{1,${p7}}))?`);Jt("COERCE",`${dt[ht.COERCEPLAIN]}(?:$|[^\\d])`);Jt("COERCEFULL",dt[ht.COERCEPLAIN]+`(?:${dt[ht.PRERELEASE]})?(?:${dt[ht.BUILD]})?(?:$|[^\\d])`);Jt("COERCERTL",dt[ht.COERCE],!0);Jt("COERCERTLFULL",dt[ht.COERCEFULL],!0);Jt("LONETILDE","(?:~>?)");Jt("TILDETRIM",`(\\s*)${dt[ht.LONETILDE]}\\s+`,!0);Bl.tildeTrimReplace="$1~";Jt("TILDE",`^${dt[ht.LONETILDE]}${dt[ht.XRANGEPLAIN]}$`);Jt("TILDELOOSE",`^${dt[ht.LONETILDE]}${dt[ht.XRANGEPLAINLOOSE]}$`);Jt("LONECARET","(?:\\^)");Jt("CARETTRIM",`(\\s*)${dt[ht.LONECARET]}\\s+`,!0);Bl.caretTrimReplace="$1^";Jt("CARET",`^${dt[ht.LONECARET]}${dt[ht.XRANGEPLAIN]}$`);Jt("CARETLOOSE",`^${dt[ht.LONECARET]}${dt[ht.XRANGEPLAINLOOSE]}$`);Jt("COMPARATORLOOSE",`^${dt[ht.GTLT]}\\s*(${dt[ht.LOOSEPLAIN]})$|^$`);Jt("COMPARATOR",`^${dt[ht.GTLT]}\\s*(${dt[ht.FULLPLAIN]})$|^$`);Jt("COMPARATORTRIM",`(\\s*)${dt[ht.GTLT]}\\s*(${dt[ht.LOOSEPLAIN]}|${dt[ht.XRANGEPLAIN]})`,!0);Bl.comparatorTrimReplace="$1$2$3";Jt("HYPHENRANGE",`^\\s*(${dt[ht.XRANGEPLAIN]})\\s+-\\s+(${dt[ht.XRANGEPLAIN]})\\s*$`);Jt("HYPHENRANGELOOSE",`^\\s*(${dt[ht.XRANGEPLAINLOOSE]})\\s+-\\s+(${dt[ht.XRANGEPLAINLOOSE]})\\s*$`);Jt("STAR","(<|>)?=?\\s*\\*");Jt("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");Jt("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var hL=S((cKr,pNe)=>{"use strict";var GVt=Object.freeze({loose:!0}),HVt=Object.freeze({}),VVt=a(e=>e?typeof e!="object"?GVt:e:HVt,"parseOptions");pNe.exports=VVt});var h7=S((fKr,mNe)=>{"use strict";var dNe=/^[0-9]+$/,hNe=a((e,t)=>{let r=dNe.test(e),n=dNe.test(t);return r&&n&&(e=+e,t=+t),e===t?0:r&&!n?-1:n&&!r?1:e<t?-1:1},"compareIdentifiers"),KVt=a((e,t)=>hNe(t,e),"rcompareIdentifiers");mNe.exports={compareIdentifiers:hNe,rcompareIdentifiers:KVt}});var lo=S((dKr,yNe)=>{"use strict";var mL=mA(),{MAX_LENGTH:gNe,MAX_SAFE_INTEGER:gL}=hA(),{safeRe:yL,t:bL}=rE(),QVt=hL(),{compareIdentifiers:nE}=h7(),m7=class e{static{a(this,"SemVer")}constructor(t,r){if(r=QVt(r),t instanceof e){if(t.loose===!!r.loose&&t.includePrerelease===!!r.includePrerelease)return t;t=t.version}else if(typeof t!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof t}".`);if(t.length>gNe)throw new TypeError(`version is longer than ${gNe} characters`);mL("SemVer",t,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let n=t.trim().match(r.loose?yL[bL.LOOSE]:yL[bL.FULL]);if(!n)throw new TypeError(`Invalid Version: ${t}`);if(this.raw=t,this.major=+n[1],this.minor=+n[2],this.patch=+n[3],this.major>gL||this.major<0)throw new TypeError("Invalid major version");if(this.minor>gL||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>gL||this.patch<0)throw new TypeError("Invalid patch version");n[4]?this.prerelease=n[4].split(".").map(i=>{if(/^[0-9]+$/.test(i)){let o=+i;if(o>=0&&o<gL)return o}return i}):this.prerelease=[],this.build=n[5]?n[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(t){if(mL("SemVer.compare",this.version,this.options,t),!(t instanceof e)){if(typeof t=="string"&&t===this.version)return 0;t=new e(t,this.options)}return t.version===this.version?0:this.compareMain(t)||this.comparePre(t)}compareMain(t){return t instanceof e||(t=new e(t,this.options)),nE(this.major,t.major)||nE(this.minor,t.minor)||nE(this.patch,t.patch)}comparePre(t){if(t instanceof e||(t=new e(t,this.options)),this.prerelease.length&&!t.prerelease.length)return-1;if(!this.prerelease.length&&t.prerelease.length)return 1;if(!this.prerelease.length&&!t.prerelease.length)return 0;let r=0;do{let n=this.prerelease[r],i=t.prerelease[r];if(mL("prerelease compare",r,n,i),n===void 0&&i===void 0)return 0;if(i===void 0)return 1;if(n===void 0)return-1;if(n===i)continue;return nE(n,i)}while(++r)}compareBuild(t){t instanceof e||(t=new e(t,this.options));let r=0;do{let n=this.build[r],i=t.build[r];if(mL("build compare",r,n,i),n===void 0&&i===void 0)return 0;if(i===void 0)return 1;if(n===void 0)return-1;if(n===i)continue;return nE(n,i)}while(++r)}inc(t,r,n){if(t.startsWith("pre")){if(!r&&n===!1)throw new Error("invalid increment argument: identifier is empty");if(r){let i=`-${r}`.match(this.options.loose?yL[bL.PRERELEASELOOSE]:yL[bL.PRERELEASE]);if(!i||i[1]!==r)throw new Error(`invalid identifier: ${r}`)}}switch(t){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",r,n);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",r,n);break;case"prepatch":this.prerelease.length=0,this.inc("patch",r,n),this.inc("pre",r,n);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",r,n),this.inc("pre",r,n);break;case"release":if(this.prerelease.length===0)throw new Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":{let i=Number(n)?1:0;if(this.prerelease.length===0)this.prerelease=[i];else{let o=this.prerelease.length;for(;--o>=0;)typeof this.prerelease[o]=="number"&&(this.prerelease[o]++,o=-2);if(o===-1){if(r===this.prerelease.join(".")&&n===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(i)}}if(r){let o=[r,i];n===!1&&(o=[r]),nE(this.prerelease[0],r)===0?isNaN(this.prerelease[1])&&(this.prerelease=o):this.prerelease=o}break}default:throw new Error(`invalid increment argument: ${t}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};yNe.exports=m7});var hy=S((mKr,vNe)=>{"use strict";var bNe=lo(),YVt=a((e,t,r=!1)=>{if(e instanceof bNe)return e;try{return new bNe(e,t)}catch(n){if(!r)return null;throw n}},"parse");vNe.exports=YVt});var ENe=S((yKr,wNe)=>{"use strict";var JVt=hy(),XVt=a((e,t)=>{let r=JVt(e,t);return r?r.version:null},"valid");wNe.exports=XVt});var SNe=S((vKr,_Ne)=>{"use strict";var ZVt=hy(),e9t=a((e,t)=>{let r=ZVt(e.trim().replace(/^[=v]+/,""),t);return r?r.version:null},"clean");_Ne.exports=e9t});var ANe=S((EKr,TNe)=>{"use strict";var xNe=lo(),t9t=a((e,t,r,n,i)=>{typeof r=="string"&&(i=n,n=r,r=void 0);try{return new xNe(e instanceof xNe?e.version:e,r).inc(t,n,i).version}catch{return null}},"inc");TNe.exports=t9t});var INe=S((SKr,ONe)=>{"use strict";var RNe=hy(),r9t=a((e,t)=>{let r=RNe(e,null,!0),n=RNe(t,null,!0),i=r.compare(n);if(i===0)return null;let o=i>0,s=o?r:n,u=o?n:r,c=!!s.prerelease.length;if(!!u.prerelease.length&&!c){if(!u.patch&&!u.minor)return"major";if(u.compareMain(s)===0)return u.minor&&!u.patch?"minor":"patch"}let f=c?"pre":"";return r.major!==n.major?f+"major":r.minor!==n.minor?f+"minor":r.patch!==n.patch?f+"patch":"prerelease"},"diff");ONe.exports=r9t});var CNe=S((TKr,kNe)=>{"use strict";var n9t=lo(),i9t=a((e,t)=>new n9t(e,t).major,"major");kNe.exports=i9t});var PNe=S((RKr,DNe)=>{"use strict";var a9t=lo(),o9t=a((e,t)=>new a9t(e,t).minor,"minor");DNe.exports=o9t});var LNe=S((IKr,NNe)=>{"use strict";var s9t=lo(),u9t=a((e,t)=>new s9t(e,t).patch,"patch");NNe.exports=u9t});var UNe=S((CKr,FNe)=>{"use strict";var c9t=hy(),l9t=a((e,t)=>{let r=c9t(e,t);return r&&r.prerelease.length?r.prerelease:null},"prerelease");FNe.exports=l9t});var Iu=S((PKr,MNe)=>{"use strict";var jNe=lo(),f9t=a((e,t,r)=>new jNe(e,r).compare(new jNe(t,r)),"compare");MNe.exports=f9t});var qNe=S((LKr,BNe)=>{"use strict";var p9t=Iu(),d9t=a((e,t,r)=>p9t(t,e,r),"rcompare");BNe.exports=d9t});var zNe=S((UKr,$Ne)=>{"use strict";var h9t=Iu(),m9t=a((e,t)=>h9t(e,t,!0),"compareLoose");$Ne.exports=m9t});var vL=S((MKr,GNe)=>{"use strict";var WNe=lo(),g9t=a((e,t,r)=>{let n=new WNe(e,r),i=new WNe(t,r);return n.compare(i)||n.compareBuild(i)},"compareBuild");GNe.exports=g9t});var VNe=S((qKr,HNe)=>{"use strict";var y9t=vL(),b9t=a((e,t)=>e.sort((r,n)=>y9t(r,n,t)),"sort");HNe.exports=b9t});var QNe=S((zKr,KNe)=>{"use strict";var v9t=vL(),w9t=a((e,t)=>e.sort((r,n)=>v9t(n,r,t)),"rsort");KNe.exports=w9t});var gA=S((GKr,YNe)=>{"use strict";var E9t=Iu(),_9t=a((e,t,r)=>E9t(e,t,r)>0,"gt");YNe.exports=_9t});var wL=S((VKr,JNe)=>{"use strict";var S9t=Iu(),x9t=a((e,t,r)=>S9t(e,t,r)<0,"lt");JNe.exports=x9t});var g7=S((QKr,XNe)=>{"use strict";var T9t=Iu(),A9t=a((e,t,r)=>T9t(e,t,r)===0,"eq");XNe.exports=A9t});var y7=S((JKr,ZNe)=>{"use strict";var R9t=Iu(),O9t=a((e,t,r)=>R9t(e,t,r)!==0,"neq");ZNe.exports=O9t});var EL=S((ZKr,eLe)=>{"use strict";var I9t=Iu(),k9t=a((e,t,r)=>I9t(e,t,r)>=0,"gte");eLe.exports=k9t});var _L=S((tQr,tLe)=>{"use strict";var C9t=Iu(),D9t=a((e,t,r)=>C9t(e,t,r)<=0,"lte");tLe.exports=D9t});var b7=S((nQr,rLe)=>{"use strict";var P9t=g7(),N9t=y7(),L9t=gA(),F9t=EL(),U9t=wL(),j9t=_L(),M9t=a((e,t,r,n)=>{switch(t){case"===":return typeof e=="object"&&(e=e.version),typeof r=="object"&&(r=r.version),e===r;case"!==":return typeof e=="object"&&(e=e.version),typeof r=="object"&&(r=r.version),e!==r;case"":case"=":case"==":return P9t(e,r,n);case"!=":return N9t(e,r,n);case">":return L9t(e,r,n);case">=":return F9t(e,r,n);case"<":return U9t(e,r,n);case"<=":return j9t(e,r,n);default:throw new TypeError(`Invalid operator: ${t}`)}},"cmp");rLe.exports=M9t});var iLe=S((aQr,nLe)=>{"use strict";var B9t=lo(),q9t=hy(),{safeRe:SL,t:xL}=rE(),$9t=a((e,t)=>{if(e instanceof B9t)return e;if(typeof e=="number"&&(e=String(e)),typeof e!="string")return null;t=t||{};let r=null;if(!t.rtl)r=e.match(t.includePrerelease?SL[xL.COERCEFULL]:SL[xL.COERCE]);else{let c=t.includePrerelease?SL[xL.COERCERTLFULL]:SL[xL.COERCERTL],l;for(;(l=c.exec(e))&&(!r||r.index+r[0].length!==e.length);)(!r||l.index+l[0].length!==r.index+r[0].length)&&(r=l),c.lastIndex=l.index+l[1].length+l[2].length;c.lastIndex=-1}if(r===null)return null;let n=r[2],i=r[3]||"0",o=r[4]||"0",s=t.includePrerelease&&r[5]?`-${r[5]}`:"",u=t.includePrerelease&&r[6]?`+${r[6]}`:"";return q9t(`${n}.${i}.${o}${s}${u}`,t)},"coerce");nLe.exports=$9t});var oLe=S((sQr,aLe)=>{"use strict";var v7=class{static{a(this,"LRUCache")}constructor(){this.max=1e3,this.map=new Map}get(t){let r=this.map.get(t);if(r!==void 0)return this.map.delete(t),this.map.set(t,r),r}delete(t){return this.map.delete(t)}set(t,r){if(!this.delete(t)&&r!==void 0){if(this.map.size>=this.max){let i=this.map.keys().next().value;this.delete(i)}this.map.set(t,r)}return this}};aLe.exports=v7});var ku=S((cQr,lLe)=>{"use strict";var z9t=/\s+/g,w7=class e{static{a(this,"Range")}constructor(t,r){if(r=G9t(r),t instanceof e)return t.loose===!!r.loose&&t.includePrerelease===!!r.includePrerelease?t:new e(t.raw,r);if(t instanceof E7)return this.raw=t.value,this.set=[[t]],this.formatted=void 0,this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=t.trim().replace(z9t," "),this.set=this.raw.split("||").map(n=>this.parseRange(n.trim())).filter(n=>n.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let n=this.set[0];if(this.set=this.set.filter(i=>!uLe(i[0])),this.set.length===0)this.set=[n];else if(this.set.length>1){for(let i of this.set)if(i.length===1&&X9t(i[0])){this.set=[i];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let t=0;t<this.set.length;t++){t>0&&(this.formatted+="||");let r=this.set[t];for(let n=0;n<r.length;n++)n>0&&(this.formatted+=" "),this.formatted+=r[n].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(t){let n=((this.options.includePrerelease&&Y9t)|(this.options.loose&&J9t))+":"+t,i=sLe.get(n);if(i)return i;let o=this.options.loose,s=o?os[No.HYPHENRANGELOOSE]:os[No.HYPHENRANGE];t=t.replace(s,u7t(this.options.includePrerelease)),Ln("hyphen replace",t),t=t.replace(os[No.COMPARATORTRIM],V9t),Ln("comparator trim",t),t=t.replace(os[No.TILDETRIM],K9t),Ln("tilde trim",t),t=t.replace(os[No.CARETTRIM],Q9t),Ln("caret trim",t);let u=t.split(" ").map(p=>Z9t(p,this.options)).join(" ").split(/\s+/).map(p=>s7t(p,this.options));o&&(u=u.filter(p=>(Ln("loose invalid filter",p,this.options),!!p.match(os[No.COMPARATORLOOSE])))),Ln("range list",u);let c=new Map,l=u.map(p=>new E7(p,this.options));for(let p of l){if(uLe(p))return[p];c.set(p.value,p)}c.size>1&&c.has("")&&c.delete("");let f=[...c.values()];return sLe.set(n,f),f}intersects(t,r){if(!(t instanceof e))throw new TypeError("a Range is required");return this.set.some(n=>cLe(n,r)&&t.set.some(i=>cLe(i,r)&&n.every(o=>i.every(s=>o.intersects(s,r)))))}test(t){if(!t)return!1;if(typeof t=="string")try{t=new H9t(t,this.options)}catch{return!1}for(let r=0;r<this.set.length;r++)if(c7t(this.set[r],t,this.options))return!0;return!1}};lLe.exports=w7;var W9t=oLe(),sLe=new W9t,G9t=hL(),E7=yA(),Ln=mA(),H9t=lo(),{safeRe:os,t:No,comparatorTrimReplace:V9t,tildeTrimReplace:K9t,caretTrimReplace:Q9t}=rE(),{FLAG_INCLUDE_PRERELEASE:Y9t,FLAG_LOOSE:J9t}=hA(),uLe=a(e=>e.value==="<0.0.0-0","isNullSet"),X9t=a(e=>e.value==="","isAny"),cLe=a((e,t)=>{let r=!0,n=e.slice(),i=n.pop();for(;r&&n.length;)r=n.every(o=>i.intersects(o,t)),i=n.pop();return r},"isSatisfiable"),Z9t=a((e,t)=>(Ln("comp",e,t),e=r7t(e,t),Ln("caret",e),e=e7t(e,t),Ln("tildes",e),e=i7t(e,t),Ln("xrange",e),e=o7t(e,t),Ln("stars",e),e),"parseComparator"),Lo=a(e=>!e||e.toLowerCase()==="x"||e==="*","isX"),e7t=a((e,t)=>e.trim().split(/\s+/).map(r=>t7t(r,t)).join(" "),"replaceTildes"),t7t=a((e,t)=>{let r=t.loose?os[No.TILDELOOSE]:os[No.TILDE];return e.replace(r,(n,i,o,s,u)=>{Ln("tilde",e,n,i,o,s,u);let c;return Lo(i)?c="":Lo(o)?c=`>=${i}.0.0 <${+i+1}.0.0-0`:Lo(s)?c=`>=${i}.${o}.0 <${i}.${+o+1}.0-0`:u?(Ln("replaceTilde pr",u),c=`>=${i}.${o}.${s}-${u} <${i}.${+o+1}.0-0`):c=`>=${i}.${o}.${s} <${i}.${+o+1}.0-0`,Ln("tilde return",c),c})},"replaceTilde"),r7t=a((e,t)=>e.trim().split(/\s+/).map(r=>n7t(r,t)).join(" "),"replaceCarets"),n7t=a((e,t)=>{Ln("caret",e,t);let r=t.loose?os[No.CARETLOOSE]:os[No.CARET],n=t.includePrerelease?"-0":"";return e.replace(r,(i,o,s,u,c)=>{Ln("caret",e,i,o,s,u,c);let l;return Lo(o)?l="":Lo(s)?l=`>=${o}.0.0${n} <${+o+1}.0.0-0`:Lo(u)?o==="0"?l=`>=${o}.${s}.0${n} <${o}.${+s+1}.0-0`:l=`>=${o}.${s}.0${n} <${+o+1}.0.0-0`:c?(Ln("replaceCaret pr",c),o==="0"?s==="0"?l=`>=${o}.${s}.${u}-${c} <${o}.${s}.${+u+1}-0`:l=`>=${o}.${s}.${u}-${c} <${o}.${+s+1}.0-0`:l=`>=${o}.${s}.${u}-${c} <${+o+1}.0.0-0`):(Ln("no pr"),o==="0"?s==="0"?l=`>=${o}.${s}.${u}${n} <${o}.${s}.${+u+1}-0`:l=`>=${o}.${s}.${u}${n} <${o}.${+s+1}.0-0`:l=`>=${o}.${s}.${u} <${+o+1}.0.0-0`),Ln("caret return",l),l})},"replaceCaret"),i7t=a((e,t)=>(Ln("replaceXRanges",e,t),e.split(/\s+/).map(r=>a7t(r,t)).join(" ")),"replaceXRanges"),a7t=a((e,t)=>{e=e.trim();let r=t.loose?os[No.XRANGELOOSE]:os[No.XRANGE];return e.replace(r,(n,i,o,s,u,c)=>{Ln("xRange",e,n,i,o,s,u,c);let l=Lo(o),f=l||Lo(s),p=f||Lo(u),d=p;return i==="="&&d&&(i=""),c=t.includePrerelease?"-0":"",l?i===">"||i==="<"?n="<0.0.0-0":n="*":i&&d?(f&&(s=0),u=0,i===">"?(i=">=",f?(o=+o+1,s=0,u=0):(s=+s+1,u=0)):i==="<="&&(i="<",f?o=+o+1:s=+s+1),i==="<"&&(c="-0"),n=`${i+o}.${s}.${u}${c}`):f?n=`>=${o}.0.0${c} <${+o+1}.0.0-0`:p&&(n=`>=${o}.${s}.0${c} <${o}.${+s+1}.0-0`),Ln("xRange return",n),n})},"replaceXRange"),o7t=a((e,t)=>(Ln("replaceStars",e,t),e.trim().replace(os[No.STAR],"")),"replaceStars"),s7t=a((e,t)=>(Ln("replaceGTE0",e,t),e.trim().replace(os[t.includePrerelease?No.GTE0PRE:No.GTE0],"")),"replaceGTE0"),u7t=a(e=>(t,r,n,i,o,s,u,c,l,f,p,d)=>(Lo(n)?r="":Lo(i)?r=`>=${n}.0.0${e?"-0":""}`:Lo(o)?r=`>=${n}.${i}.0${e?"-0":""}`:s?r=`>=${r}`:r=`>=${r}${e?"-0":""}`,Lo(l)?c="":Lo(f)?c=`<${+l+1}.0.0-0`:Lo(p)?c=`<${l}.${+f+1}.0-0`:d?c=`<=${l}.${f}.${p}-${d}`:e?c=`<${l}.${f}.${+p+1}-0`:c=`<=${c}`,`${r} ${c}`.trim()),"hyphenReplace"),c7t=a((e,t,r)=>{for(let n=0;n<e.length;n++)if(!e[n].test(t))return!1;if(t.prerelease.length&&!r.includePrerelease){for(let n=0;n<e.length;n++)if(Ln(e[n].semver),e[n].semver!==E7.ANY&&e[n].semver.prerelease.length>0){let i=e[n].semver;if(i.major===t.major&&i.minor===t.minor&&i.patch===t.patch)return!0}return!1}return!0},"testSet")});var yA=S((fQr,gLe)=>{"use strict";var bA=Symbol("SemVer ANY"),x7=class e{static{a(this,"Comparator")}static get ANY(){return bA}constructor(t,r){if(r=fLe(r),t instanceof e){if(t.loose===!!r.loose)return t;t=t.value}t=t.trim().split(/\s+/).join(" "),S7("comparator",t,r),this.options=r,this.loose=!!r.loose,this.parse(t),this.semver===bA?this.value="":this.value=this.operator+this.semver.version,S7("comp",this)}parse(t){let r=this.options.loose?pLe[dLe.COMPARATORLOOSE]:pLe[dLe.COMPARATOR],n=t.match(r);if(!n)throw new TypeError(`Invalid comparator: ${t}`);this.operator=n[1]!==void 0?n[1]:"",this.operator==="="&&(this.operator=""),n[2]?this.semver=new hLe(n[2],this.options.loose):this.semver=bA}toString(){return this.value}test(t){if(S7("Comparator.test",t,this.options.loose),this.semver===bA||t===bA)return!0;if(typeof t=="string")try{t=new hLe(t,this.options)}catch{return!1}return _7(t,this.operator,this.semver,this.options)}intersects(t,r){if(!(t instanceof e))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new mLe(t.value,r).test(this.value):t.operator===""?t.value===""?!0:new mLe(this.value,r).test(t.semver):(r=fLe(r),r.includePrerelease&&(this.value==="<0.0.0-0"||t.value==="<0.0.0-0")||!r.includePrerelease&&(this.value.startsWith("<0.0.0")||t.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&t.operator.startsWith(">")||this.operator.startsWith("<")&&t.operator.startsWith("<")||this.semver.version===t.semver.version&&this.operator.includes("=")&&t.operator.includes("=")||_7(this.semver,"<",t.semver,r)&&this.operator.startsWith(">")&&t.operator.startsWith("<")||_7(this.semver,">",t.semver,r)&&this.operator.startsWith("<")&&t.operator.startsWith(">")))}};gLe.exports=x7;var fLe=hL(),{safeRe:pLe,t:dLe}=rE(),_7=b7(),S7=mA(),hLe=lo(),mLe=ku()});var vA=S((dQr,yLe)=>{"use strict";var l7t=ku(),f7t=a((e,t,r)=>{try{t=new l7t(t,r)}catch{return!1}return t.test(e)},"satisfies");yLe.exports=f7t});var vLe=S((mQr,bLe)=>{"use strict";var p7t=ku(),d7t=a((e,t)=>new p7t(e,t).set.map(r=>r.map(n=>n.value).join(" ").trim().split(" ")),"toComparators");bLe.exports=d7t});var ELe=S((yQr,wLe)=>{"use strict";var h7t=lo(),m7t=ku(),g7t=a((e,t,r)=>{let n=null,i=null,o=null;try{o=new m7t(t,r)}catch{return null}return e.forEach(s=>{o.test(s)&&(!n||i.compare(s)===-1)&&(n=s,i=new h7t(n,r))}),n},"maxSatisfying");wLe.exports=g7t});var SLe=S((vQr,_Le)=>{"use strict";var y7t=lo(),b7t=ku(),v7t=a((e,t,r)=>{let n=null,i=null,o=null;try{o=new b7t(t,r)}catch{return null}return e.forEach(s=>{o.test(s)&&(!n||i.compare(s)===1)&&(n=s,i=new y7t(n,r))}),n},"minSatisfying");_Le.exports=v7t});var ALe=S((EQr,TLe)=>{"use strict";var T7=lo(),w7t=ku(),xLe=gA(),E7t=a((e,t)=>{e=new w7t(e,t);let r=new T7("0.0.0");if(e.test(r)||(r=new T7("0.0.0-0"),e.test(r)))return r;r=null;for(let n=0;n<e.set.length;++n){let i=e.set[n],o=null;i.forEach(s=>{let u=new T7(s.semver.version);switch(s.operator){case">":u.prerelease.length===0?u.patch++:u.prerelease.push(0),u.raw=u.format();case"":case">=":(!o||xLe(u,o))&&(o=u);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${s.operator}`)}}),o&&(!r||xLe(r,o))&&(r=o)}return r&&e.test(r)?r:null},"minVersion");TLe.exports=E7t});var OLe=S((SQr,RLe)=>{"use strict";var _7t=ku(),S7t=a((e,t)=>{try{return new _7t(e,t).range||"*"}catch{return null}},"validRange");RLe.exports=S7t});var TL=S((TQr,DLe)=>{"use strict";var x7t=lo(),CLe=yA(),{ANY:T7t}=CLe,A7t=ku(),R7t=vA(),ILe=gA(),kLe=wL(),O7t=_L(),I7t=EL(),k7t=a((e,t,r,n)=>{e=new x7t(e,n),t=new A7t(t,n);let i,o,s,u,c;switch(r){case">":i=ILe,o=O7t,s=kLe,u=">",c=">=";break;case"<":i=kLe,o=I7t,s=ILe,u="<",c="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(R7t(e,t,n))return!1;for(let l=0;l<t.set.length;++l){let f=t.set[l],p=null,d=null;if(f.forEach(h=>{h.semver===T7t&&(h=new CLe(">=0.0.0")),p=p||h,d=d||h,i(h.semver,p.semver,n)?p=h:s(h.semver,d.semver,n)&&(d=h)}),p.operator===u||p.operator===c||(!d.operator||d.operator===u)&&o(e,d.semver))return!1;if(d.operator===c&&s(e,d.semver))return!1}return!0},"outside");DLe.exports=k7t});var NLe=S((RQr,PLe)=>{"use strict";var C7t=TL(),D7t=a((e,t,r)=>C7t(e,t,">",r),"gtr");PLe.exports=D7t});var FLe=S((IQr,LLe)=>{"use strict";var P7t=TL(),N7t=a((e,t,r)=>P7t(e,t,"<",r),"ltr");LLe.exports=N7t});var MLe=S((CQr,jLe)=>{"use strict";var ULe=ku(),L7t=a((e,t,r)=>(e=new ULe(e,r),t=new ULe(t,r),e.intersects(t,r)),"intersects");jLe.exports=L7t});var qLe=S((PQr,BLe)=>{"use strict";var F7t=vA(),U7t=Iu();BLe.exports=(e,t,r)=>{let n=[],i=null,o=null,s=e.sort((f,p)=>U7t(f,p,r));for(let f of s)F7t(f,t,r)?(o=f,i||(i=f)):(o&&n.push([i,o]),o=null,i=null);i&&n.push([i,null]);let u=[];for(let[f,p]of n)f===p?u.push(f):!p&&f===s[0]?u.push("*"):p?f===s[0]?u.push(`<=${p}`):u.push(`${f} - ${p}`):u.push(`>=${f}`);let c=u.join(" || "),l=typeof t.raw=="string"?t.raw:String(t);return c.length<l.length?c:t}});var VLe=S((NQr,HLe)=>{"use strict";var $Le=ku(),R7=yA(),{ANY:A7}=R7,wA=vA(),O7=Iu(),j7t=a((e,t,r={})=>{if(e===t)return!0;e=new $Le(e,r),t=new $Le(t,r);let n=!1;e:for(let i of e.set){for(let o of t.set){let s=B7t(i,o,r);if(n=n||s!==null,s)continue e}if(n)return!1}return!0},"subset"),M7t=[new R7(">=0.0.0-0")],zLe=[new R7(">=0.0.0")],B7t=a((e,t,r)=>{if(e===t)return!0;if(e.length===1&&e[0].semver===A7){if(t.length===1&&t[0].semver===A7)return!0;r.includePrerelease?e=M7t:e=zLe}if(t.length===1&&t[0].semver===A7){if(r.includePrerelease)return!0;t=zLe}let n=new Set,i,o;for(let h of e)h.operator===">"||h.operator===">="?i=WLe(i,h,r):h.operator==="<"||h.operator==="<="?o=GLe(o,h,r):n.add(h.semver);if(n.size>1)return null;let s;if(i&&o){if(s=O7(i.semver,o.semver,r),s>0)return null;if(s===0&&(i.operator!==">="||o.operator!=="<="))return null}for(let h of n){if(i&&!wA(h,String(i),r)||o&&!wA(h,String(o),r))return null;for(let m of t)if(!wA(h,String(m),r))return!1;return!0}let u,c,l,f,p=o&&!r.includePrerelease&&o.semver.prerelease.length?o.semver:!1,d=i&&!r.includePrerelease&&i.semver.prerelease.length?i.semver:!1;p&&p.prerelease.length===1&&o.operator==="<"&&p.prerelease[0]===0&&(p=!1);for(let h of t){if(f=f||h.operator===">"||h.operator===">=",l=l||h.operator==="<"||h.operator==="<=",i){if(d&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===d.major&&h.semver.minor===d.minor&&h.semver.patch===d.patch&&(d=!1),h.operator===">"||h.operator===">="){if(u=WLe(i,h,r),u===h&&u!==i)return!1}else if(i.operator===">="&&!wA(i.semver,String(h),r))return!1}if(o){if(p&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===p.major&&h.semver.minor===p.minor&&h.semver.patch===p.patch&&(p=!1),h.operator==="<"||h.operator==="<="){if(c=GLe(o,h,r),c===h&&c!==o)return!1}else if(o.operator==="<="&&!wA(o.semver,String(h),r))return!1}if(!h.operator&&(o||i)&&s!==0)return!1}return!(i&&l&&!o&&s!==0||o&&f&&!i&&s!==0||d||p)},"simpleSubset"),WLe=a((e,t,r)=>{if(!e)return t;let n=O7(e.semver,t.semver,r);return n>0?e:n<0||t.operator===">"&&e.operator===">="?t:e},"higherGT"),GLe=a((e,t,r)=>{if(!e)return t;let n=O7(e.semver,t.semver,r);return n<0?e:n>0||t.operator==="<"&&e.operator==="<="?t:e},"lowerLT");HLe.exports=j7t});var k7=S((FQr,YLe)=>{"use strict";var I7=rE(),KLe=hA(),q7t=lo(),QLe=h7(),$7t=hy(),z7t=ENe(),W7t=SNe(),G7t=ANe(),H7t=INe(),V7t=CNe(),K7t=PNe(),Q7t=LNe(),Y7t=UNe(),J7t=Iu(),X7t=qNe(),Z7t=zNe(),eKt=vL(),tKt=VNe(),rKt=QNe(),nKt=gA(),iKt=wL(),aKt=g7(),oKt=y7(),sKt=EL(),uKt=_L(),cKt=b7(),lKt=iLe(),fKt=yA(),pKt=ku(),dKt=vA(),hKt=vLe(),mKt=ELe(),gKt=SLe(),yKt=ALe(),bKt=OLe(),vKt=TL(),wKt=NLe(),EKt=FLe(),_Kt=MLe(),SKt=qLe(),xKt=VLe();YLe.exports={parse:$7t,valid:z7t,clean:W7t,inc:G7t,diff:H7t,major:V7t,minor:K7t,patch:Q7t,prerelease:Y7t,compare:J7t,rcompare:X7t,compareLoose:Z7t,compareBuild:eKt,sort:tKt,rsort:rKt,gt:nKt,lt:iKt,eq:aKt,neq:oKt,gte:sKt,lte:uKt,cmp:cKt,coerce:lKt,Comparator:fKt,Range:pKt,satisfies:dKt,toComparators:hKt,maxSatisfying:mKt,minSatisfying:gKt,minVersion:yKt,validRange:bKt,outside:vKt,gtr:wKt,ltr:EKt,intersects:_Kt,simplifyRange:SKt,subset:xKt,SemVer:q7t,re:I7.re,src:I7.src,tokens:I7.t,SEMVER_SPEC_VERSION:KLe.SEMVER_SPEC_VERSION,RELEASE_TYPES:KLe.RELEASE_TYPES,compareIdentifiers:QLe.compareIdentifiers,rcompareIdentifiers:QLe.rcompareIdentifiers}});var Oh=S((Fnn,Q7)=>{"use strict";var V7=function(){"use strict";return this===void 0}();V7?Q7.exports={freeze:Object.freeze,defineProperty:Object.defineProperty,getDescriptor:Object.getOwnPropertyDescriptor,keys:Object.keys,names:Object.getOwnPropertyNames,getPrototypeOf:Object.getPrototypeOf,isArray:Array.isArray,isES5:V7,propertyIsWritable:function(e,t){var r=Object.getOwnPropertyDescriptor(e,t);return!!(!r||r.writable||r.set)}}:(W2e={}.hasOwnProperty,G2e={}.toString,H2e={}.constructor.prototype,K7=a(function(e){var t=[];for(var r in e)W2e.call(e,r)&&t.push(r);return t},"ObjectKeys"),V2e=a(function(e,t){return{value:e[t]}},"ObjectGetDescriptor"),K2e=a(function(e,t,r){return e[t]=r.value,e},"ObjectDefineProperty"),Q2e=a(function(e){return e},"ObjectFreeze"),Y2e=a(function(e){try{return Object(e).constructor.prototype}catch{return H2e}},"ObjectGetPrototypeOf"),J2e=a(function(e){try{return G2e.call(e)==="[object Array]"}catch{return!1}},"ArrayIsArray"),Q7.exports={isArray:J2e,keys:K7,names:K7,defineProperty:K2e,getDescriptor:V2e,freeze:Q2e,getPrototypeOf:Y2e,isES5:V7,propertyIsWritable:function(){return!0}});var W2e,G2e,H2e,K7,V2e,K2e,Q2e,Y2e,J2e});var En=S((exports,module)=>{"use strict";var es5=Oh(),canEvaluate=typeof navigator>"u",errorObj={e:{}},tryCatchTarget,globalObject=typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:exports!==void 0?exports:null;function tryCatcher(){try{var e=tryCatchTarget;return tryCatchTarget=null,e.apply(this,arguments)}catch(t){return errorObj.e=t,errorObj}}a(tryCatcher,"tryCatcher");function tryCatch(e){return tryCatchTarget=e,tryCatcher}a(tryCatch,"tryCatch");var inherits=a(function(e,t){var r={}.hasOwnProperty;function n(){this.constructor=e,this.constructor$=t;for(var i in t.prototype)r.call(t.prototype,i)&&i.charAt(i.length-1)!=="$"&&(this[i+"$"]=t.prototype[i])}return a(n,"T"),n.prototype=t.prototype,e.prototype=new n,e.prototype},"inherits");function isPrimitive(e){return e==null||e===!0||e===!1||typeof e=="string"||typeof e=="number"}a(isPrimitive,"isPrimitive");function isObject(e){return typeof e=="function"||typeof e=="object"&&e!==null}a(isObject,"isObject");function maybeWrapAsError(e){return isPrimitive(e)?new Error(safeToString(e)):e}a(maybeWrapAsError,"maybeWrapAsError");function withAppended(e,t){var r=e.length,n=new Array(r+1),i;for(i=0;i<r;++i)n[i]=e[i];return n[i]=t,n}a(withAppended,"withAppended");function getDataPropertyOrDefault(e,t,r){if(es5.isES5){var n=Object.getOwnPropertyDescriptor(e,t);if(n!=null)return n.get==null&&n.set==null?n.value:r}else return{}.hasOwnProperty.call(e,t)?e[t]:void 0}a(getDataPropertyOrDefault,"getDataPropertyOrDefault");function notEnumerableProp(e,t,r){if(isPrimitive(e))return e;var n={value:r,configurable:!0,enumerable:!1,writable:!0};return es5.defineProperty(e,t,n),e}a(notEnumerableProp,"notEnumerableProp");function thrower(e){throw e}a(thrower,"thrower");var inheritedDataKeys=function(){var e=[Array.prototype,Object.prototype,Function.prototype],t=a(function(i){for(var o=0;o<e.length;++o)if(e[o]===i)return!0;return!1},"isExcludedProto");if(es5.isES5){var r=Object.getOwnPropertyNames;return function(i){for(var o=[],s=Object.create(null);i!=null&&!t(i);){var u;try{u=r(i)}catch{return o}for(var c=0;c<u.length;++c){var l=u[c];if(!s[l]){s[l]=!0;var f=Object.getOwnPropertyDescriptor(i,l);f!=null&&f.get==null&&f.set==null&&o.push(l)}}i=es5.getPrototypeOf(i)}return o}}else{var n={}.hasOwnProperty;return function(i){if(t(i))return[];var o=[];e:for(var s in i)if(n.call(i,s))o.push(s);else{for(var u=0;u<e.length;++u)if(n.call(e[u],s))continue e;o.push(s)}return o}}}(),thisAssignmentPattern=/this\s*\.\s*\S+\s*=/;function isClass(e){try{if(typeof e=="function"){var t=es5.names(e.prototype),r=es5.isES5&&t.length>1,n=t.length>0&&!(t.length===1&&t[0]==="constructor"),i=thisAssignmentPattern.test(e+"")&&es5.names(e).length>0;if(r||n||i)return!0}return!1}catch{return!1}}a(isClass,"isClass");function toFastProperties(obj){function FakeConstructor(){}a(FakeConstructor,"FakeConstructor"),FakeConstructor.prototype=obj;var receiver=new FakeConstructor;function ic(){return typeof receiver.foo}return a(ic,"ic"),ic(),ic(),obj;eval(obj)}a(toFastProperties,"toFastProperties");var rident=/^[a-z$_][a-z$_0-9]*$/i;function isIdentifier(e){return rident.test(e)}a(isIdentifier,"isIdentifier");function filledRange(e,t,r){for(var n=new Array(e),i=0;i<e;++i)n[i]=t+i+r;return n}a(filledRange,"filledRange");function safeToString(e){try{return e+""}catch{return"[no string representation]"}}a(safeToString,"safeToString");function isError(e){return e instanceof Error||e!==null&&typeof e=="object"&&typeof e.message=="string"&&typeof e.name=="string"}a(isError,"isError");function markAsOriginatingFromRejection(e){try{notEnumerableProp(e,"isOperational",!0)}catch{}}a(markAsOriginatingFromRejection,"markAsOriginatingFromRejection");function originatesFromRejection(e){return e==null?!1:e instanceof Error.__BluebirdErrorTypes__.OperationalError||e.isOperational===!0}a(originatesFromRejection,"originatesFromRejection");function canAttachTrace(e){return isError(e)&&es5.propertyIsWritable(e,"stack")}a(canAttachTrace,"canAttachTrace");var ensureErrorObject=function(){return"stack"in new Error?function(e){return canAttachTrace(e)?e:new Error(safeToString(e))}:function(e){if(canAttachTrace(e))return e;try{throw new Error(safeToString(e))}catch(t){return t}}}();function classString(e){return{}.toString.call(e)}a(classString,"classString");function copyDescriptors(e,t,r){for(var n=es5.names(e),i=0;i<n.length;++i){var o=n[i];if(r(o))try{es5.defineProperty(t,o,es5.getDescriptor(e,o))}catch{}}}a(copyDescriptors,"copyDescriptors");var asArray=a(function(e){return es5.isArray(e)?e:null},"asArray");typeof Symbol<"u"&&Symbol.iterator&&(ArrayFrom=typeof Array.from=="function"?function(e){return Array.from(e)}:function(e){for(var t=[],r=e[Symbol.iterator](),n;!(n=r.next()).done;)t.push(n.value);return t},asArray=a(function(e){return es5.isArray(e)?e:e!=null&&typeof e[Symbol.iterator]=="function"?ArrayFrom(e):null},"asArray"));var ArrayFrom,isNode=typeof process<"u"&&classString(process).toLowerCase()==="[object process]",hasEnvVariables=typeof process<"u"&&typeof process.env<"u";function env(e){return hasEnvVariables?process.env[e]:void 0}a(env,"env");function getNativePromise(){if(typeof Promise=="function")try{var e=new Promise(function(){});if(classString(e)==="[object Promise]")return Promise}catch{}}a(getNativePromise,"getNativePromise");var reflectHandler;function contextBind(e,t){if(e===null||typeof t!="function"||t===reflectHandler)return t;e.domain!==null&&(t=e.domain.bind(t));var r=e.async;if(r!==null){var n=t;t=a(function(){for(var i=arguments.length+2,o=new Array(i),s=2;s<i;++s)o[s]=arguments[s-2];return o[0]=n,o[1]=this,r.runInAsyncScope.apply(r,o)},"cb")}return t}a(contextBind,"contextBind");var ret={setReflectHandler:function(e){reflectHandler=e},isClass,isIdentifier,inheritedDataKeys,getDataPropertyOrDefault,thrower,isArray:es5.isArray,asArray,notEnumerableProp,isPrimitive,isObject,isError,canEvaluate,errorObj,tryCatch,inherits,withAppended,maybeWrapAsError,toFastProperties,filledRange,toString:safeToString,canAttachTrace,ensureErrorObject,originatesFromRejection,markAsOriginatingFromRejection,classString,copyDescriptors,isNode,hasEnvVariables,env,global:globalObject,getNativePromise,contextBind};ret.isRecentNode=ret.isNode&&function(){var e;return process.versions&&process.versions.node?e=process.versions.node.split(".").map(Number):process.version&&(e=process.version.split(".").map(Number)),e[0]===0&&e[1]>10||e[0]>0}();ret.nodeSupportsAsyncResource=ret.isNode&&function(){var e=!1;try{var t=require("async_hooks").AsyncResource;e=typeof t.prototype.runInAsyncScope=="function"}catch{e=!1}return e}();ret.isNode&&ret.toFastProperties(process);try{throw new Error}catch(e){ret.lastLineError=e}module.exports=ret});var rFe=S((Mnn,tFe)=>{"use strict";var J7=En(),by,UJt=a(function(){throw new Error(`No async scheduler available
145
+ `+o):n.stack=o}catch{}}throw n}}_request(t,r){typeof t=="string"?(r=r||{},r.url=t):r=t||{},r=oy(this.defaults,r);let{transitional:n,paramsSerializer:i,headers:o}=r;n!==void 0&&x9.assertOptions(n,{silentJSONParsing:mh.transitional(mh.boolean),forcedJSONParsing:mh.transitional(mh.boolean),clarifyTimeoutError:mh.transitional(mh.boolean)},!1),i!=null&&(le.isFunction(i)?r.paramsSerializer={serialize:i}:x9.assertOptions(i,{encode:mh.function,serialize:mh.function},!0)),r.method=(r.method||this.defaults.method||"get").toLowerCase();let s=o&&le.merge(o.common,o[r.method]);o&&le.forEach(["delete","get","head","post","put","patch","common"],m=>{delete o[m]}),r.headers=is.concat(s,o);let u=[],c=!0;this.interceptors.request.forEach(a(function(g){typeof g.runWhen=="function"&&g.runWhen(r)===!1||(c=c&&g.synchronous,u.unshift(g.fulfilled,g.rejected))},"unshiftRequestInterceptors"));let l=[];this.interceptors.response.forEach(a(function(g){l.push(g.fulfilled,g.rejected)},"pushResponseInterceptors"));let f,p=0,d;if(!c){let m=[CDe.bind(this),void 0];for(m.unshift.apply(m,u),m.push.apply(m,l),d=m.length,f=Promise.resolve(r);p<d;)f=f.then(m[p++],m[p++]);return f}d=u.length;let h=r;for(p=0;p<d;){let m=u[p++],g=u[p++];try{h=m(h)}catch(y){g.call(this,y);break}}try{f=CDe.call(this,h)}catch(m){return Promise.reject(m)}for(p=0,d=l.length;p<d;)f=f.then(l[p++],l[p++]);return f}getUri(t){t=oy(this.defaults,t);let r=P9(t.baseURL,t.url);return O9(r,t.params,t.paramsSerializer)}};le.forEach(["delete","get","head","options"],a(function(t){Qw.prototype[t]=function(r,n){return this.request(oy(n||{},{method:t,url:r,data:(n||{}).data}))}},"forEachMethodNoData"));le.forEach(["post","put","patch"],a(function(t){function r(n){return a(function(o,s,u){return this.request(oy(u||{},{method:t,headers:n?{"Content-Type":"multipart/form-data"}:{},url:o,data:s}))},"httpMethod")}a(r,"generateHTTPMethod"),Qw.prototype[t]=r(),Qw.prototype[t+"Form"]=r(!0)},"forEachMethodWithData"));var BN=Qw,T9=class e{static{a(this,"CancelToken")}constructor(t){if(typeof t!="function")throw new TypeError("executor must be a function.");let r;this.promise=new Promise(a(function(o){r=o},"promiseExecutor"));let n=this;this.promise.then(i=>{if(!n._listeners)return;let o=n._listeners.length;for(;o-- >0;)n._listeners[o](i);n._listeners=null}),this.promise.then=i=>{let o,s=new Promise(u=>{n.subscribe(u),o=u}).then(i);return s.cancel=a(function(){n.unsubscribe(o)},"reject"),s},t(a(function(o,s,u){n.reason||(n.reason=new vh(o,s,u),r(n.reason))},"cancel"))}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;let r=this._listeners.indexOf(t);r!==-1&&this._listeners.splice(r,1)}toAbortSignal(){let t=new AbortController,r=a(n=>{t.abort(n)},"abort");return this.subscribe(r),t.signal.unsubscribe=()=>this.unsubscribe(r),t.signal}static source(){let t;return{token:new e(a(function(i){t=i},"executor")),cancel:t}}},ZGt=T9;function eHt(e){return a(function(r){return e.apply(null,r)},"wrap")}a(eHt,"spread");function tHt(e){return le.isObject(e)&&e.isAxiosError===!0}a(tHt,"isAxiosError");var A9={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(A9).forEach(([e,t])=>{A9[t]=e});var rHt=A9;function iPe(e){let t=new BN(e),r=FDe(BN.prototype.request,t);return le.extend(r,BN.prototype,t,{allOwnKeys:!0}),le.extend(r,t,null,{allOwnKeys:!0}),r.create=a(function(i){return iPe(oy(e,i))},"create"),r}a(iPe,"createInstance");var Bi=iPe(D9);Bi.Axios=BN;Bi.CanceledError=vh;Bi.CancelToken=ZGt;Bi.isCancel=YDe;Bi.VERSION=qN;Bi.toFormData=KN;Bi.AxiosError=pt;Bi.Cancel=Bi.CanceledError;Bi.all=a(function(t){return Promise.all(t)},"all");Bi.spread=eHt;Bi.isAxiosError=tHt;Bi.mergeConfig=oy;Bi.AxiosHeaders=is;Bi.formToJSON=e=>QDe(le.isHTMLForm(e)?new FormData(e):e);Bi.getAdapter=nPe.getAdapter;Bi.HttpStatusCode=rHt;Bi.default=Bi;aPe.exports=Bi});var $9=S(rL=>{"use strict";Object.defineProperty(rL,"__esModule",{value:!0});var nHt=H1e(),iHt="4.0.1",Fc;(function(e){e.AnonymousId="anonymous_id",e.DistinctId="distinct_id",e.Props="props",e.FeatureFlags="feature_flags",e.FeatureFlagPayloads="feature_flag_payloads",e.OverrideFeatureFlags="override_feature_flags",e.Queue="queue",e.OptedOut="opted_out",e.SessionId="session_id",e.SessionLastTimestamp="session_timestamp",e.PersonProperties="person_properties",e.GroupProperties="group_properties",e.InstalledAppBuild="installed_app_build",e.InstalledAppVersion="installed_app_version"})(Fc||(Fc={}));function aHt(e,t){if(!e)throw new Error(t)}a(aHt,"assert");function oHt(e){return e?.replace(/\/+$/,"")}a(oHt,"removeTrailingSlash");async function sHt(e,t){let r=null;for(let n=0;n<t.retryCount+1;n++){n>0&&await new Promise(i=>setTimeout(i,t.retryDelay));try{return await e()}catch(i){if(r=i,!t.retryCheck(i))throw i}}throw r}a(sHt,"retriable");function uHt(){return new Date().getTime()}a(uHt,"currentTimestamp");function sPe(){return new Date().toISOString()}a(sPe,"currentISOTime");function mPe(e,t){let r=setTimeout(e,t);return r?.unref&&r?.unref(),r}a(mPe,"safeSetTimeout");var ZT=String.fromCharCode,uPe="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",YN={};function cHt(e,t){if(!YN[e]){YN[e]={};for(let r=0;r<e.length;r++)YN[e][e.charAt(r)]=r}return YN[e][t]}a(cHt,"getBaseValue");var eA={compressToBase64:function(e){if(e==null)return"";let t=eA._compress(e,6,function(r){return uPe.charAt(r)});switch(t.length%4){default:case 0:return t;case 1:return t+"===";case 2:return t+"==";case 3:return t+"="}},decompressFromBase64:function(e){return e==null?"":e==""?null:eA._decompress(e.length,32,function(t){return cHt(uPe,e.charAt(t))})},compress:function(e){return eA._compress(e,16,function(t){return ZT(t)})},_compress:function(e,t,r){if(e==null)return"";let n={},i={},o=[],s,u,c="",l="",f="",p=2,d=3,h=2,m=0,g=0,y;for(y=0;y<e.length;y+=1)if(c=e.charAt(y),Object.prototype.hasOwnProperty.call(n,c)||(n[c]=d++,i[c]=!0),l=f+c,Object.prototype.hasOwnProperty.call(n,l))f=l;else{if(Object.prototype.hasOwnProperty.call(i,f)){if(f.charCodeAt(0)<256){for(s=0;s<h;s++)m=m<<1,g==t-1?(g=0,o.push(r(m)),m=0):g++;for(u=f.charCodeAt(0),s=0;s<8;s++)m=m<<1|u&1,g==t-1?(g=0,o.push(r(m)),m=0):g++,u=u>>1}else{for(u=1,s=0;s<h;s++)m=m<<1|u,g==t-1?(g=0,o.push(r(m)),m=0):g++,u=0;for(u=f.charCodeAt(0),s=0;s<16;s++)m=m<<1|u&1,g==t-1?(g=0,o.push(r(m)),m=0):g++,u=u>>1}p--,p==0&&(p=Math.pow(2,h),h++),delete i[f]}else for(u=n[f],s=0;s<h;s++)m=m<<1|u&1,g==t-1?(g=0,o.push(r(m)),m=0):g++,u=u>>1;p--,p==0&&(p=Math.pow(2,h),h++),n[l]=d++,f=String(c)}if(f!==""){if(Object.prototype.hasOwnProperty.call(i,f)){if(f.charCodeAt(0)<256){for(s=0;s<h;s++)m=m<<1,g==t-1?(g=0,o.push(r(m)),m=0):g++;for(u=f.charCodeAt(0),s=0;s<8;s++)m=m<<1|u&1,g==t-1?(g=0,o.push(r(m)),m=0):g++,u=u>>1}else{for(u=1,s=0;s<h;s++)m=m<<1|u,g==t-1?(g=0,o.push(r(m)),m=0):g++,u=0;for(u=f.charCodeAt(0),s=0;s<16;s++)m=m<<1|u&1,g==t-1?(g=0,o.push(r(m)),m=0):g++,u=u>>1}p--,p==0&&(p=Math.pow(2,h),h++),delete i[f]}else for(u=n[f],s=0;s<h;s++)m=m<<1|u&1,g==t-1?(g=0,o.push(r(m)),m=0):g++,u=u>>1;p--,p==0&&(p=Math.pow(2,h),h++)}for(u=2,s=0;s<h;s++)m=m<<1|u&1,g==t-1?(g=0,o.push(r(m)),m=0):g++,u=u>>1;for(;;)if(m=m<<1,g==t-1){o.push(r(m));break}else g++;return o.join("")},decompress:function(e){return e==null?"":e==""?null:eA._decompress(e.length,32768,function(t){return e.charCodeAt(t)})},_decompress:function(e,t,r){let n=[],i=[],o={val:r(0),position:t,index:1},s=4,u=4,c=3,l="",f,p,d,h,m,g,y;for(f=0;f<3;f+=1)n[f]=f;for(d=0,m=Math.pow(2,2),g=1;g!=m;)h=o.val&o.position,o.position>>=1,o.position==0&&(o.position=t,o.val=r(o.index++)),d|=(h>0?1:0)*g,g<<=1;switch(d){case 0:for(d=0,m=Math.pow(2,8),g=1;g!=m;)h=o.val&o.position,o.position>>=1,o.position==0&&(o.position=t,o.val=r(o.index++)),d|=(h>0?1:0)*g,g<<=1;y=ZT(d);break;case 1:for(d=0,m=Math.pow(2,16),g=1;g!=m;)h=o.val&o.position,o.position>>=1,o.position==0&&(o.position=t,o.val=r(o.index++)),d|=(h>0?1:0)*g,g<<=1;y=ZT(d);break;case 2:return""}for(n[3]=y,p=y,i.push(y);;){if(o.index>e)return"";for(d=0,m=Math.pow(2,c),g=1;g!=m;)h=o.val&o.position,o.position>>=1,o.position==0&&(o.position=t,o.val=r(o.index++)),d|=(h>0?1:0)*g,g<<=1;switch(y=d){case 0:for(d=0,m=Math.pow(2,8),g=1;g!=m;)h=o.val&o.position,o.position>>=1,o.position==0&&(o.position=t,o.val=r(o.index++)),d|=(h>0?1:0)*g,g<<=1;n[u++]=ZT(d),y=u-1,s--;break;case 1:for(d=0,m=Math.pow(2,16),g=1;g!=m;)h=o.val&o.position,o.position>>=1,o.position==0&&(o.position=t,o.val=r(o.index++)),d|=(h>0?1:0)*g,g<<=1;n[u++]=ZT(d),y=u-1,s--;break;case 2:return i.join("")}if(s==0&&(s=Math.pow(2,c),c++),n[y])l=n[y];else if(y===u)l=p+p.charAt(0);else return null;i.push(l),n[u++]=p+l.charAt(0),s--,p=l,s==0&&(s=Math.pow(2,c),c++)}}},L9=class{static{a(this,"SimpleEventEmitter")}constructor(){this.events={},this.events={}}on(t,r){return this.events[t]||(this.events[t]=[]),this.events[t].push(r),()=>{this.events[t]=this.events[t].filter(n=>n!==r)}}emit(t,r){for(let n of this.events[t]||[])n(r);for(let n of this.events["*"]||[])n(t,r)}};var JN="0123456789abcdef",XN=class e{static{a(this,"UUID")}constructor(t){this.bytes=t}static ofInner(t){if(t.length!==16)throw new TypeError("not 128-bit length");return new e(t)}static fromFieldsV7(t,r,n,i){if(!Number.isInteger(t)||!Number.isInteger(r)||!Number.isInteger(n)||!Number.isInteger(i)||t<0||r<0||n<0||i<0||t>0xffffffffffff||r>4095||n>1073741823||i>4294967295)throw new RangeError("invalid field value");let o=new Uint8Array(16);return o[0]=t/2**40,o[1]=t/2**32,o[2]=t/2**24,o[3]=t/2**16,o[4]=t/2**8,o[5]=t,o[6]=112|r>>>8,o[7]=r,o[8]=128|n>>>24,o[9]=n>>>16,o[10]=n>>>8,o[11]=n,o[12]=i>>>24,o[13]=i>>>16,o[14]=i>>>8,o[15]=i,new e(o)}static parse(t){let r;switch(t.length){case 32:r=/^[0-9a-f]{32}$/i.exec(t)?.[0];break;case 36:r=/^([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(t)?.slice(1,6).join("");break;case 38:r=/^\{([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})\}$/i.exec(t)?.slice(1,6).join("");break;case 45:r=/^urn:uuid:([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(t)?.slice(1,6).join("");break}if(r){let n=new Uint8Array(16);for(let i=0;i<16;i+=4){let o=parseInt(r.substring(2*i,2*i+8),16);n[i+0]=o>>>24,n[i+1]=o>>>16,n[i+2]=o>>>8,n[i+3]=o}return new e(n)}else throw new SyntaxError("could not parse UUID string")}toString(){let t="";for(let r=0;r<this.bytes.length;r++)t+=JN.charAt(this.bytes[r]>>>4),t+=JN.charAt(this.bytes[r]&15),(r===3||r===5||r===7||r===9)&&(t+="-");return t}toHex(){let t="";for(let r=0;r<this.bytes.length;r++)t+=JN.charAt(this.bytes[r]>>>4),t+=JN.charAt(this.bytes[r]&15);return t}toJSON(){return this.toString()}getVariant(){let t=this.bytes[8]>>>4;if(t<0)throw new Error("unreachable");if(t<=7)return this.bytes.every(r=>r===0)?"NIL":"VAR_0";if(t<=11)return"VAR_10";if(t<=13)return"VAR_110";if(t<=15)return this.bytes.every(r=>r===255)?"MAX":"VAR_RESERVED";throw new Error("unreachable")}getVersion(){return this.getVariant()==="VAR_10"?this.bytes[6]>>>4:void 0}clone(){return new e(this.bytes.slice(0))}equals(t){return this.compareTo(t)===0}compareTo(t){for(let r=0;r<16;r++){let n=this.bytes[r]-t.bytes[r];if(n!==0)return Math.sign(n)}return 0}},F9=class{static{a(this,"V7Generator")}constructor(t){this.timestamp=0,this.counter=0,this.random=t??lHt()}generate(){return this.generateOrResetCore(Date.now(),1e4)}generateOrAbort(){return this.generateOrAbortCore(Date.now(),1e4)}generateOrResetCore(t,r){let n=this.generateOrAbortCore(t,r);return n===void 0&&(this.timestamp=0,n=this.generateOrAbortCore(t,r)),n}generateOrAbortCore(t,r){if(!Number.isInteger(t)||t<1||t>0xffffffffffff)throw new RangeError("`unixTsMs` must be a 48-bit positive integer");if(r<0||r>0xffffffffffff)throw new RangeError("`rollbackAllowance` out of reasonable range");if(t>this.timestamp)this.timestamp=t,this.resetCounter();else if(t+r>=this.timestamp)this.counter++,this.counter>4398046511103&&(this.timestamp++,this.resetCounter());else return;return XN.fromFieldsV7(this.timestamp,Math.trunc(this.counter/2**30),this.counter&2**30-1,this.random.nextUint32())}resetCounter(){this.counter=this.random.nextUint32()*1024+(this.random.nextUint32()&1023)}generateV4(){let t=new Uint8Array(Uint32Array.of(this.random.nextUint32(),this.random.nextUint32(),this.random.nextUint32(),this.random.nextUint32()).buffer);return t[6]=64|t[6]>>>4,t[8]=128|t[8]>>>2,XN.ofInner(t)}},lHt=a(()=>({nextUint32:()=>Math.trunc(Math.random()*65536)*65536+Math.trunc(Math.random()*65536)}),"getDefaultRandom"),cPe,lPe=a(()=>fHt().toString(),"uuidv7"),fHt=a(()=>(cPe||(cPe=new F9)).generate(),"uuidv7obj"),ZN=class extends Error{static{a(this,"PostHogFetchHttpError")}constructor(t){super("HTTP error while fetching PostHog: "+t.status),this.response=t,this.name="PostHogFetchHttpError"}},tA=class extends Error{static{a(this,"PostHogFetchNetworkError")}constructor(t){super("Network error while fetching PostHog",t instanceof Error?{cause:t}:{}),this.error=t,this.name="PostHogFetchNetworkError"}};function fPe(e){return typeof e=="object"&&(e instanceof ZN||e instanceof tA)}a(fPe,"isPostHogFetchError");var U9=class{static{a(this,"PostHogCoreStateless")}constructor(t,r){this.flushPromise=null,this.disableGeoip=!0,this.disabled=!1,this.defaultOptIn=!0,this.pendingPromises={},this._events=new L9,this._isInitialized=!1,aHt(t,"You must pass your PostHog project's api key."),this.apiKey=t,this.host=oHt(r?.host||"https://app.posthog.com"),this.flushAt=r?.flushAt?Math.max(r?.flushAt,1):20,this.maxBatchSize=Math.max(this.flushAt,r?.maxBatchSize??100),this.maxQueueSize=Math.max(this.flushAt,r?.maxQueueSize??1e3),this.flushInterval=r?.flushInterval??1e4,this.captureMode=r?.captureMode||"form",this.defaultOptIn=r?.defaultOptIn??!0,this._retryOptions={retryCount:r?.fetchRetryCount??3,retryDelay:r?.fetchRetryDelay??3e3,retryCheck:fPe},this.requestTimeout=r?.requestTimeout??1e4,this.featureFlagsRequestTimeoutMs=r?.featureFlagsRequestTimeoutMs??3e3,this.disableGeoip=r?.disableGeoip??!0,this.disabled=r?.disabled??!1,this._initPromise=Promise.resolve(),this._isInitialized=!0}wrap(t){if(this.disabled){this.isDebug&&console.warn("[PostHog] The client is disabled");return}if(this._isInitialized)return t();this._initPromise.then(()=>t())}getCommonEventProperties(){return{$lib:this.getLibraryId(),$lib_version:this.getLibraryVersion()}}get optedOut(){return this.getPersistedProperty(Fc.OptedOut)??!this.defaultOptIn}async optIn(){this.wrap(()=>{this.setPersistedProperty(Fc.OptedOut,!1)})}async optOut(){this.wrap(()=>{this.setPersistedProperty(Fc.OptedOut,!0)})}on(t,r){return this._events.on(t,r)}debug(t=!0){if(this.removeDebugCallback?.(),t){let r=this.on("*",(n,i)=>console.log("PostHog Debug",n,i));this.removeDebugCallback=()=>{r(),this.removeDebugCallback=void 0}}}get isDebug(){return!!this.removeDebugCallback}buildPayload(t){return{distinct_id:t.distinct_id,event:t.event,properties:{...t.properties||{},...this.getCommonEventProperties()}}}addPendingPromise(t){let r=lPe();return this.pendingPromises[r]=t,t.catch(()=>{}).finally(()=>{delete this.pendingPromises[r]}),t}identifyStateless(t,r,n){this.wrap(()=>{let i={...this.buildPayload({distinct_id:t,event:"$identify",properties:r})};this.enqueue("identify",i,n)})}captureStateless(t,r,n,i){this.wrap(()=>{let o=this.buildPayload({distinct_id:t,event:r,properties:n});this.enqueue("capture",o,i)})}aliasStateless(t,r,n,i){this.wrap(()=>{let o=this.buildPayload({event:"$create_alias",distinct_id:r,properties:{...n||{},distinct_id:r,alias:t}});this.enqueue("alias",o,i)})}groupIdentifyStateless(t,r,n,i,o,s){this.wrap(()=>{let u=this.buildPayload({distinct_id:o||`$${t}_${r}`,event:"$groupidentify",properties:{$group_type:t,$group_key:r,$group_set:n||{},...s||{}}});this.enqueue("capture",u,i)})}async getDecide(t,r={},n={},i={},o={}){await this._initPromise;let s=`${this.host}/decide/?v=3`,u={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"},body:JSON.stringify({token:this.apiKey,distinct_id:t,groups:r,person_properties:n,group_properties:i,...o})};return this.fetchWithRetry(s,u,{retryCount:0},this.featureFlagsRequestTimeoutMs).then(c=>c.json()).catch(c=>{this._events.emit("error",c)})}async getFeatureFlagStateless(t,r,n={},i={},o={},s){await this._initPromise;let u=await this.getFeatureFlagsStateless(r,n,i,o,s);if(!u)return;let c=u[t];return c===void 0&&(c=!1),c}async getFeatureFlagPayloadStateless(t,r,n={},i={},o={},s){await this._initPromise;let u=await this.getFeatureFlagPayloadsStateless(r,n,i,o,s);if(!u)return;let c=u[t];return c===void 0?null:c}async getFeatureFlagPayloadsStateless(t,r={},n={},i={},o){return await this._initPromise,(await this.getFeatureFlagsAndPayloadsStateless(t,r,n,i,o)).payloads}_parsePayload(t){try{return JSON.parse(t)}catch{return t}}async getFeatureFlagsStateless(t,r={},n={},i={},o){return await this._initPromise,(await this.getFeatureFlagsAndPayloadsStateless(t,r,n,i,o)).flags}async getFeatureFlagsAndPayloadsStateless(t,r={},n={},i={},o){await this._initPromise;let s={};(o??this.disableGeoip)&&(s.geoip_disable=!0);let u=await this.getDecide(t,r,n,i,s),c=u?.featureFlags,l=u?.featureFlagPayloads,f=l;return l&&(f=Object.fromEntries(Object.entries(l).map(([p,d])=>[p,this._parsePayload(d)]))),{flags:c,payloads:f}}enqueue(t,r,n){this.wrap(()=>{if(this.optedOut){this._events.emit(t,"Library is disabled. Not sending event. To re-enable, call posthog.optIn()");return}let i={...r,type:t,library:this.getLibraryId(),library_version:this.getLibraryVersion(),timestamp:n?.timestamp?n?.timestamp:sPe(),uuid:n?.uuid?n.uuid:lPe()};(n?.disableGeoip??this.disableGeoip)&&(i.properties||(i.properties={}),i.properties.$geoip_disable=!0),i.distinctId&&(i.distinct_id=i.distinctId,delete i.distinctId);let s=this.getPersistedProperty(Fc.Queue)||[];s.length>=this.maxQueueSize&&(s.shift(),console.info("Queue is full, the oldest event is dropped.")),s.push({message:i}),this.setPersistedProperty(Fc.Queue,s),this._events.emit(t,i),s.length>=this.flushAt&&this.flushBackground(),this.flushInterval&&!this._flushTimer&&(this._flushTimer=mPe(()=>this.flushBackground(),this.flushInterval))})}clearFlushTimer(){this._flushTimer&&(clearTimeout(this._flushTimer),this._flushTimer=void 0)}flushBackground(){this.flush().catch(()=>{})}async flush(){return this.flushPromise||(this.flushPromise=this._flush().finally(()=>{this.flushPromise=null}),this.addPendingPromise(this.flushPromise)),this.flushPromise}getCustomHeaders(){let t=this.getCustomUserAgent(),r={};return t&&t!==""&&(r["User-Agent"]=t),r}async _flush(){this.clearFlushTimer(),await this._initPromise;let t=this.getPersistedProperty(Fc.Queue)||[];if(!t.length)return[];let r=t.slice(0,this.maxBatchSize),n=r.map(l=>l.message),i=a(()=>{let l=this.getPersistedProperty(Fc.Queue)||[];this.setPersistedProperty(Fc.Queue,l.slice(r.length))},"persistQueueChange"),o={api_key:this.apiKey,batch:n,sent_at:sPe()},s=JSON.stringify(o),u=this.captureMode==="form"?`${this.host}/e/?ip=1&_=${uHt()}&v=${this.getLibraryVersion()}`:`${this.host}/batch/`,c=this.captureMode==="form"?{method:"POST",mode:"no-cors",credentials:"omit",headers:{...this.getCustomHeaders(),"Content-Type":"application/x-www-form-urlencoded"},body:`data=${encodeURIComponent(eA.compressToBase64(s))}&compression=lz64`}:{method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"},body:s};try{await this.fetchWithRetry(u,c)}catch(l){throw l instanceof tA||i(),this._events.emit("error",l),l}return i(),this._events.emit("flush",n),n}async fetchWithRetry(t,r,n,i){var o;return(o=AbortSignal).timeout??(o.timeout=a(function(u){let c=new AbortController;return setTimeout(()=>c.abort(),u),c.signal},"timeout")),await sHt(async()=>{let s=null;try{s=await this.fetch(t,{signal:AbortSignal.timeout(i??this.requestTimeout),...r})}catch(c){throw new tA(c)}if(!(r.mode==="no-cors")&&(s.status<200||s.status>=400))throw new ZN(s);return s},{...this._retryOptions,...n})}async shutdown(t=3e4){await this._initPromise,this.clearFlushTimer();try{await Promise.all(Object.values(this.pendingPromises));let r=Date.now()+t;for(;(this.getPersistedProperty(Fc.Queue)||[]).length!==0;){await this.flush();let i=Date.now();if(r<i)break}}catch(r){if(!fPe(r))throw r;console.error("Error while shutting down PostHog",r)}}},j9=class{static{a(this,"PostHogMemoryStorage")}constructor(){this._memoryStorage={}}getProperty(t){return this._memoryStorage[t]}setProperty(t,r){this._memoryStorage[t]=r!==null?r:void 0}},M9=typeof fetch<"u"?fetch:typeof global.fetch<"u"?global.fetch:void 0;if(!M9){let e=oPe();M9=a(async(t,r)=>{let n=await e.request({url:t,headers:r.headers,method:r.method.toLowerCase(),data:r.body,signal:r.signal,validateStatus:()=>!0});return{status:n.status,text:async()=>n.data,json:async()=>n.data}},"_fetch")}var gPe=M9,pHt=1152921504606847e3,eL=class e extends Error{static{a(this,"ClientError")}constructor(t){super(),Error.captureStackTrace(this,this.constructor),this.name="ClientError",this.message=t,Object.setPrototypeOf(this,e.prototype)}},ia=class e extends Error{static{a(this,"InconclusiveMatchError")}constructor(t){super(t),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,e.prototype)}},B9=class{static{a(this,"FeatureFlagsPoller")}constructor({pollingInterval:t,personalApiKey:r,projectApiKey:n,timeout:i,host:o,customHeaders:s,...u}){this.debugMode=!1,this.pollingInterval=t,this.personalApiKey=r,this.featureFlags=[],this.featureFlagsByKey={},this.groupTypeMapping={},this.cohorts={},this.loadedSuccessfullyOnce=!1,this.timeout=i,this.projectApiKey=n,this.host=o,this.poller=void 0,this.fetch=u.fetch||gPe,this.onError=u.onError,this.customHeaders=s,this.loadFeatureFlags()}debug(t=!0){this.debugMode=t}async getFeatureFlag(t,r,n={},i={},o={}){await this.loadFeatureFlags();let s,u;if(!this.loadedSuccessfullyOnce)return s;for(let c of this.featureFlags)if(t===c.key){u=c;break}if(u!==void 0)try{s=this.computeFlagLocally(u,r,n,i,o),this.debugMode&&console.debug(`Successfully computed flag locally: ${t} -> ${s}`)}catch(c){c instanceof ia?this.debugMode&&console.debug(`InconclusiveMatchError when computing flag locally: ${t}: ${c}`):c instanceof Error&&this.onError?.(new Error(`Error computing flag locally: ${t}: ${c}`))}return s}async computeFeatureFlagPayloadLocally(t,r){await this.loadFeatureFlags();let n;if(this.loadedSuccessfullyOnce){if(typeof r=="boolean"?n=this.featureFlagsByKey?.[t]?.filters?.payloads?.[r.toString()]:typeof r=="string"&&(n=this.featureFlagsByKey?.[t]?.filters?.payloads?.[r]),n==null)return null;try{return JSON.parse(n)}catch{return n}}}async getAllFlagsAndPayloads(t,r={},n={},i={}){await this.loadFeatureFlags();let o={},s={},u=this.featureFlags.length==0;return this.featureFlags.map(async c=>{try{let l=this.computeFlagLocally(c,t,r,n,i);o[c.key]=l;let f=await this.computeFeatureFlagPayloadLocally(c.key,l);f&&(s[c.key]=f)}catch(l){l instanceof ia||l instanceof Error&&this.onError?.(new Error(`Error computing flag locally: ${c.key}: ${l}`)),u=!0}}),{response:o,payloads:s,fallbackToDecide:u}}computeFlagLocally(t,r,n={},i={},o={}){if(t.ensure_experience_continuity)throw new ia("Flag has experience continuity enabled");if(!t.active)return!1;let u=(t.filters||{}).aggregation_group_type_index;if(u!=null){let c=this.groupTypeMapping[String(u)];if(!c)throw this.debugMode&&console.warn(`[FEATURE FLAGS] Unknown group type index ${u} for feature flag ${t.key}`),new ia("Flag has unknown group type index");if(!(c in n))return this.debugMode&&console.warn(`[FEATURE FLAGS] Can't compute group feature flag: ${t.key} without group names passed in`),!1;let l=o[c];return this.matchFeatureFlagProperties(t,n[c],l)}else return this.matchFeatureFlagProperties(t,r,i)}matchFeatureFlagProperties(t,r,n){let i=t.filters||{},o=i.groups||[],s=!1,u,c=[...o].sort((l,f)=>{let p=!!l.variant,d=!!f.variant;return p&&d?0:p?-1:d?1:0});for(let l of c)try{if(this.isConditionMatch(t,r,l,n)){let f=l.variant,p=i.multivariate?.variants||[];f&&p.some(d=>d.key===f)?u=f:u=this.getMatchingVariant(t,r)||!0;break}}catch(f){if(f instanceof ia)s=!0;else throw f}if(u!==void 0)return u;if(s)throw new ia("Can't determine if feature flag is enabled or not with given properties");return!1}isConditionMatch(t,r,n,i){let o=n.rollout_percentage;if((n.properties||[]).length>0){for(let s of n.properties){let u=s.type,c=!1;if(u==="cohort"?c=bPe(s,i,this.cohorts,this.debugMode):c=yPe(s,i),!c)return!1}if(o==null)return!0}return!(o!=null&&pPe(t.key,r)>o/100)}getMatchingVariant(t,r){let n=pPe(t.key,r,"variant"),i=this.variantLookupTable(t).find(o=>n>=o.valueMin&&n<o.valueMax);if(i)return i.key}variantLookupTable(t){let r=[],n=0,i=0;return((t.filters||{}).multivariate?.variants||[]).forEach(u=>{i=n+u.rollout_percentage/100,r.push({valueMin:n,valueMax:i,key:u.key}),n=i}),r}async loadFeatureFlags(t=!1){(!this.loadedSuccessfullyOnce||t)&&await this._loadFeatureFlags()}async _loadFeatureFlags(){this.poller&&(clearTimeout(this.poller),this.poller=void 0),this.poller=setTimeout(()=>this._loadFeatureFlags(),this.pollingInterval);try{let t=await this._requestFeatureFlagDefinitions();if(t&&t.status===401)throw new eL("Your personalApiKey is invalid. Are you sure you're not using your Project API key? More information: https://posthog.com/docs/api/overview");if(t&&t.status!==200)return;let r=await t.json();"flags"in r||this.onError?.(new Error(`Invalid response when getting feature flags: ${JSON.stringify(r)}`)),this.featureFlags=r.flags||[],this.featureFlagsByKey=this.featureFlags.reduce((n,i)=>(n[i.key]=i,n),{}),this.groupTypeMapping=r.group_type_mapping||{},this.cohorts=r.cohorts||[],this.loadedSuccessfullyOnce=!0}catch(t){t instanceof eL&&this.onError?.(t)}}async _requestFeatureFlagDefinitions(){let t=`${this.host}/api/feature_flag/local_evaluation?token=${this.projectApiKey}&send_cohorts`,r={method:"GET",headers:{...this.customHeaders,"Content-Type":"application/json",Authorization:`Bearer ${this.personalApiKey}`}},n=null;if(this.timeout&&typeof this.timeout=="number"){let i=new AbortController;n=mPe(()=>{i.abort()},this.timeout),r.signal=i.signal}try{return await this.fetch(t,r)}finally{clearTimeout(n)}}stopPoller(){clearTimeout(this.poller)}};function pPe(e,t,r=""){let n=nHt.createHash();return n.update(`${e}.${t}${r}`),parseInt(n.digest("hex").slice(0,15),16)/pHt}a(pPe,"_hash");function yPe(e,t){let r=e.key,n=e.value,i=e.operator||"exact";if(r in t){if(i==="is_not_set")throw new ia("Operator is_not_set is not supported")}else throw new ia(`Property ${r} not found in propertyValues`);let o=t[r];function s(c,l){return Array.isArray(c)?c.map(f=>String(f).toLowerCase()).includes(String(l).toLowerCase()):String(c).toLowerCase()===String(l).toLowerCase()}a(s,"computeExactMatch");function u(c,l,f){if(f==="gt")return c>l;if(f==="gte")return c>=l;if(f==="lt")return c<l;if(f==="lte")return c<=l;throw new Error(`Invalid operator: ${f}`)}switch(a(u,"compare"),i){case"exact":return s(n,o);case"is_not":return!s(n,o);case"is_set":return r in t;case"icontains":return String(o).toLowerCase().includes(String(n).toLowerCase());case"not_icontains":return!String(o).toLowerCase().includes(String(n).toLowerCase());case"regex":return dPe(String(n))&&String(o).match(String(n))!==null;case"not_regex":return dPe(String(n))&&String(o).match(String(n))===null;case"gt":case"gte":case"lt":case"lte":{let c=typeof n=="number"?n:null;if(typeof n=="string")try{c=parseFloat(n)}catch{}return c!=null&&o!=null?typeof o=="string"?u(o,String(n),i):u(o,c,i):u(String(o),String(n),i)}case"is_date_after":case"is_date_before":{let c=dHt(String(n));if(c==null&&(c=hPe(n)),c==null)throw new ia(`Invalid date: ${n}`);let l=hPe(o);return["is_date_before"].includes(i)?l<c:l>c}default:throw new ia(`Unknown operator: ${i}`)}}a(yPe,"matchProperty");function bPe(e,t,r,n=!1){let i=String(e.value);if(!(i in r))throw new ia("can't match cohort without a given cohort property value");let o=r[i];return vPe(o,t,r,n)}a(bPe,"matchCohort");function vPe(e,t,r,n=!1){if(!e)return!0;let i=e.type,o=e.values;if(!o||o.length===0)return!0;let s=!1;if("values"in o[0]){for(let u of o)try{let c=vPe(u,t,r,n);if(i==="AND"){if(!c)return!1}else if(c)return!0}catch(c){if(c instanceof ia)n&&console.debug(`Failed to compute property ${u} locally: ${c}`),s=!0;else throw c}if(s)throw new ia("Can't match cohort without a given cohort property value");return i==="AND"}else{for(let u of o)try{let c;u.type==="cohort"?c=bPe(u,t,r,n):c=yPe(u,t);let l=u.negation||!1;if(i==="AND"){if(!c&&!l||c&&l)return!1}else if(c&&!l||!c&&l)return!0}catch(c){if(c instanceof ia)n&&console.debug(`Failed to compute property ${u} locally: ${c}`),s=!0;else throw c}if(s)throw new ia("can't match cohort without a given cohort property value");return i==="AND"}}a(vPe,"matchPropertyGroup");function dPe(e){try{return new RegExp(e),!0}catch{return!1}}a(dPe,"isValidRegex");function hPe(e){if(e instanceof Date)return e;if(typeof e=="string"||typeof e=="number"){let t=new Date(e);if(!isNaN(t.valueOf()))return t;throw new ia(`${e} is in an invalid date format`)}else throw new ia(`The date provided ${e} must be a string, number, or date object`)}a(hPe,"convertToDateTime");function dHt(e){let t=/^-?(?<number>[0-9]+)(?<interval>[a-z])$/,r=e.match(t),n=new Date(new Date().toISOString());if(r){if(!r.groups)return null;let i=parseInt(r.groups.number);if(i>=1e4)return null;let o=r.groups.interval;if(o=="h")n.setUTCHours(n.getUTCHours()-i);else if(o=="d")n.setUTCDate(n.getUTCDate()-i);else if(o=="w")n.setUTCDate(n.getUTCDate()-i*7);else if(o=="m")n.setUTCMonth(n.getUTCMonth()-i);else if(o=="y")n.setUTCFullYear(n.getUTCFullYear()-i);else return null;return n}else return null}a(dHt,"relativeDateParseForFeatureFlagMatching");var hHt=30*1e3,mHt=50*1e3,q9=class extends U9{static{a(this,"PostHog")}constructor(t,r={}){r.captureMode=r?.captureMode||"json",super(t,r),this._memoryStorage=new j9,this.options=r,r.personalApiKey&&(this.featureFlagsPoller=new B9({pollingInterval:typeof r.featureFlagsPollingInterval=="number"?r.featureFlagsPollingInterval:hHt,personalApiKey:r.personalApiKey,projectApiKey:t,timeout:r.requestTimeout??1e4,host:this.host,fetch:r.fetch,onError:n=>{this._events.emit("error",n)},customHeaders:this.getCustomHeaders()})),this.distinctIdHasSentFlagCalls={},this.maxCacheSize=r.maxCacheSize||mHt}getPersistedProperty(t){return this._memoryStorage.getProperty(t)}setPersistedProperty(t,r){return this._memoryStorage.setProperty(t,r)}fetch(t,r){return this.options.fetch?this.options.fetch(t,r):gPe(t,r)}getLibraryId(){return"posthog-node"}getLibraryVersion(){return iHt}getCustomUserAgent(){return`${this.getLibraryId()}/${this.getLibraryVersion()}`}enable(){return super.optIn()}disable(){return super.optOut()}debug(t=!0){super.debug(t),this.featureFlagsPoller?.debug(t)}capture({distinctId:t,event:r,properties:n,groups:i,sendFeatureFlags:o,timestamp:s,disableGeoip:u,uuid:c}){let l=a(d=>{super.captureStateless(t,r,d,{timestamp:s,disableGeoip:u,uuid:c})},"_capture"),f=a((d,h,m)=>super.getFeatureFlagsStateless(d,h,void 0,void 0,m),"_getFlags"),p=Promise.resolve().then(async()=>{if(o)return await f(t,i,u);if((this.featureFlagsPoller?.featureFlags?.length||0)>0){let d={};for(let[h,m]of Object.entries(i||{}))d[h]=String(m);return await this.getAllFlags(t,{groups:d,disableGeoip:u,onlyEvaluateLocally:!0})}return{}}).then(d=>{let h={};if(d)for(let[g,y]of Object.entries(d))h[`$feature/${g}`]=y;let m=Object.keys(d||{}).filter(g=>d?.[g]!==!1);return m.length>0&&(h.$active_feature_flags=m),h}).catch(()=>({})).then(d=>{l({...d,...n,$groups:i})});this.addPendingPromise(p)}identify({distinctId:t,properties:r,disableGeoip:n}){let i=r?.$set||r;super.identifyStateless(t,{$set:i},{disableGeoip:n})}alias(t){super.aliasStateless(t.alias,t.distinctId,void 0,{disableGeoip:t.disableGeoip})}async getFeatureFlag(t,r,n){let{groups:i,disableGeoip:o}=n||{},{onlyEvaluateLocally:s,sendFeatureFlagEvents:u,personProperties:c,groupProperties:l}=n||{},f=this.addLocalPersonAndGroupProperties(r,i,c,l);c=f.allPersonProperties,l=f.allGroupProperties,s==null&&(s=!1),u==null&&(u=!0);let p=await this.featureFlagsPoller?.getFeatureFlag(t,r,i,c,l),d=p!==void 0;!d&&!s&&(p=await super.getFeatureFlagStateless(t,r,i,c,l,o));let h=`${t}_${p}`;return u&&(!(r in this.distinctIdHasSentFlagCalls)||!this.distinctIdHasSentFlagCalls[r].includes(h))&&(Object.keys(this.distinctIdHasSentFlagCalls).length>=this.maxCacheSize&&(this.distinctIdHasSentFlagCalls={}),Array.isArray(this.distinctIdHasSentFlagCalls[r])?this.distinctIdHasSentFlagCalls[r].push(h):this.distinctIdHasSentFlagCalls[r]=[h],this.capture({distinctId:r,event:"$feature_flag_called",properties:{$feature_flag:t,$feature_flag_response:p,locally_evaluated:d,[`$feature/${t}`]:p},groups:i,disableGeoip:o})),p}async getFeatureFlagPayload(t,r,n,i){let{groups:o,disableGeoip:s}=i||{},{onlyEvaluateLocally:u,sendFeatureFlagEvents:c,personProperties:l,groupProperties:f}=i||{},p=this.addLocalPersonAndGroupProperties(r,o,l,f);l=p.allPersonProperties,f=p.allGroupProperties;let d;return n||(n=await this.getFeatureFlag(t,r,{...i,onlyEvaluateLocally:!0})),n&&(d=await this.featureFlagsPoller?.computeFeatureFlagPayloadLocally(t,n)),u==null&&(u=!1),c==null&&(c=!0),u==null&&(u=!1),!(d!==void 0)&&!u&&(d=await super.getFeatureFlagPayloadStateless(t,r,o,l,f,s)),d}async isFeatureEnabled(t,r,n){let i=await this.getFeatureFlag(t,r,n);if(i!==void 0)return!!i||!1}async getAllFlags(t,r){return(await this.getAllFlagsAndPayloads(t,r)).featureFlags}async getAllFlagsAndPayloads(t,r){let{groups:n,disableGeoip:i}=r||{},{onlyEvaluateLocally:o,personProperties:s,groupProperties:u}=r||{},c=this.addLocalPersonAndGroupProperties(t,n,s,u);s=c.allPersonProperties,u=c.allGroupProperties,o==null&&(o=!1);let l=await this.featureFlagsPoller?.getAllFlagsAndPayloads(t,n,s,u),f={},p={},d=!0;if(l&&(f=l.response,p=l.payloads,d=l.fallbackToDecide),d&&!o){let h=await super.getFeatureFlagsAndPayloadsStateless(t,n,s,u,i);f={...f,...h.flags||{}},p={...p,...h.payloads||{}}}return{featureFlags:f,featureFlagPayloads:p}}groupIdentify({groupType:t,groupKey:r,properties:n,distinctId:i,disableGeoip:o}){super.groupIdentifyStateless(t,r,n,{disableGeoip:o},i)}async reloadFeatureFlags(){await this.featureFlagsPoller?.loadFeatureFlags(!0)}async shutdown(t){return this.featureFlagsPoller?.stopPoller(),super.shutdown(t)}addLocalPersonAndGroupProperties(t,r,n,i){let o={distinct_id:t,...n||{}},s={};if(r)for(let u of Object.keys(r))s[u]={$group_key:r[u],...i?.[u]||{}};return{allPersonProperties:o,allGroupProperties:s}}},tL=class e{static{a(this,"PostHogSentryIntegration")}constructor(t,r,n,i){this.posthog=t,this.posthogHost=r,this.organization=n,this.prefix=i,this.name="posthog-node",this.posthogHost=t.options.host??"https://app.posthog.com"}setupOnce(t,r){t(n=>{if(n.exception?.values===void 0||n.exception.values.length===0)return n;n.tags||(n.tags={});let i=r(),o=n.tags[e.POSTHOG_ID_TAG];if(o===void 0)return n;n.tags["PostHog Person URL"]=new URL(`/person/${o}`,this.posthogHost).toString();let s={$exception_message:n.exception.values[0]?.value,$exception_type:n.exception.values[0]?.type,$exception_personURL:n.tags["PostHog Person URL"],$sentry_event_id:n.event_id,$sentry_exception:n.exception,$sentry_exception_message:n.exception.values[0]?.value,$sentry_exception_type:n.exception.values[0]?.type,$sentry_tags:n.tags},u=i.getClient()?.getDsn()?.projectId;return this.organization!==void 0&&u!==void 0&&n.event_id!==void 0&&(s.$sentry_url=`${this.prefix??"https://sentry.io/organizations"}/${this.organization}/issues/?project=${u}&query=${n.event_id}`),this.posthog.capture({event:"$exception",distinctId:o,properties:s}),n})}};tL.POSTHOG_ID_TAG="posthog_distinct_id";rL.PostHog=q9;rL.PostHogSentryIntegration=tL});var V9=S(rA=>{"use strict";var EHt=rA&&rA.__classPrivateFieldGet||function(e,t,r,n){if(r==="a"&&!n)throw new TypeError("Private accessor was defined without a getter");if(typeof t=="function"?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return r==="m"?n:r==="a"?n.call(e):n?n.value:t.get(e)},G9,TPe;Object.defineProperty(rA,"__esModule",{value:!0});var iL=K9(),H9=class{static{a(this,"CannedPolicy")}constructor(t,r,n){G9.add(this),this.url=t,this.expireTime=Math.round(r/1e3)||void 0,this.ipRange=n}toJSON(){EHt(this,G9,"m",TPe).call(this);let t={Statement:[{Resource:this.url,Condition:{DateLessThan:{"AWS:EpochTime":this.expireTime}}}]};return this.ipRange&&(t.Statement[0].Condition.IpAddress={"AWS:SourceIp":this.ipRange}),JSON.stringify(t)}};G9=new WeakSet,TPe=a(function(){return(0,iL.assert)(!!this.url,"Missing param: url"),(0,iL.assert)(!!this.expireTime,"Missing param: expireTime"),(0,iL.assert)(this.expireTime<2147483647,"expireTime must be less than January 19, 2038 03:14:08 GMT due to the limits of UNIX time"),(0,iL.assert)(this.expireTime>new Date().getTime()/1e3,"expireTime must be after the current time"),!0},"_CannedPolicy_validate");rA.default=H9});var K9=S(xa=>{"use strict";var _Ht=xa&&xa.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(xa,"__esModule",{value:!0});xa.assert=xa.getPrivateKey=xa.getIpRange=xa.getExpireTime=xa.createPolicySignature=xa.createPolicy=xa.normalizeBase64=void 0;var SHt=require("fs"),xHt=require("crypto"),THt=_Ht(V9());function AHt(e){return e.replace(/\+/g,"-").replace(/=/g,"_").replace(/\//g,"~")}a(AHt,"normalizeBase64");xa.normalizeBase64=AHt;function RHt(e,t,r){let n=Math.round(Date.now()+18e5);return t=t||n,new THt.default(e,t,r)}a(RHt,"createPolicy");xa.createPolicy=RHt;function OHt(e,t){let r=(0,xHt.createSign)("RSA-SHA1");return r.update(e.toJSON()),r.sign(t,"base64")}a(OHt,"createPolicySignature");xa.createPolicySignature=OHt;function IHt(e){return+e.expireTime||null}a(IHt,"getExpireTime");xa.getExpireTime=IHt;function kHt(e){return e.ipRange||null}a(kHt,"getIpRange");xa.getIpRange=kHt;function CHt(e){let t=e.privateKeyString,r;if(e.privateKeyPath&&(r=(0,SHt.readFileSync)(e.privateKeyPath),t=r.toString("ascii")),!/\r|\n/.test(t))throw new Error("Invalid private key string, must include line breaks");return t}a(CHt,"getPrivateKey");xa.getPrivateKey=CHt;function DHt(e,t){if(!e)throw new Error(t)}a(DHt,"assert");xa.assert=DHt});var APe=S(Eh=>{"use strict";Object.defineProperty(Eh,"__esModule",{value:!0});Eh.getSignedCookies=Eh.getSignedRTMPUrl=Eh.getSignedUrl=void 0;var PHt=require("node:url"),as=K9();function NHt(e,t){let r=(0,as.getPrivateKey)(t),n=(0,as.createPolicy)(e,(0,as.getExpireTime)(t),(0,as.getIpRange)(t)),i=(0,as.createPolicySignature)(n,r),o=Buffer.from(n.toJSON()).toString("base64"),s=new PHt.URL(e);return s.searchParams.set("Expires",`${n.expireTime}`),s.searchParams.set("Policy",(0,as.normalizeBase64)(o)),s.searchParams.set("Signature",(0,as.normalizeBase64)(i)),s.searchParams.set("Key-Pair-Id",t.keypairId),s.toString()}a(NHt,"getSignedUrl");Eh.getSignedUrl=NHt;function LHt(){throw new Error("Amazon CloudFront has deprecated RTMP distributions. For more information see https://repost.aws/questions/QUoUZgHZh7SEWlnQUPlBmVNQ/announcement-rtmp-support-discontinuing-on-december-31-2020")}a(LHt,"getSignedRTMPUrl");Eh.getSignedRTMPUrl=LHt;function FHt(e,t){let r=(0,as.getPrivateKey)(t),n=(0,as.createPolicy)(e,(0,as.getExpireTime)(t),(0,as.getIpRange)(t)),i=(0,as.createPolicySignature)(n,r),o=Buffer.from(n.toJSON()).toString("base64"),s={};return s["CloudFront-Policy"]=(0,as.normalizeBase64)(o),s["CloudFront-Signature"]=(0,as.normalizeBase64)(i),s["CloudFront-Key-Pair-Id"]=t.keypairId,s}a(FHt,"getSignedCookies");Eh.getSignedCookies=FHt});var RPe=S(uo=>{"use strict";var UHt=uo&&uo.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),jHt=uo&&uo.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),MHt=uo&&uo.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&UHt(t,e,r);return jHt(t,e),t};Object.defineProperty(uo,"__esModule",{value:!0});uo.CannedPolicy=uo.getSignedCookies=uo.getSignedRTMPUrl=uo.getSignedUrl=void 0;var Q9=APe();Object.defineProperty(uo,"getSignedUrl",{enumerable:!0,get:function(){return Q9.getSignedUrl}});Object.defineProperty(uo,"getSignedRTMPUrl",{enumerable:!0,get:function(){return Q9.getSignedRTMPUrl}});Object.defineProperty(uo,"getSignedCookies",{enumerable:!0,get:function(){return Q9.getSignedCookies}});uo.CannedPolicy=MHt(V9())});var mA=S((wKr,bNe)=>{"use strict";var PVt="2.0.0",NVt=Number.MAX_SAFE_INTEGER||9007199254740991,LVt=16,FVt=256-6,UVt=["major","premajor","minor","preminor","patch","prepatch","prerelease"];bNe.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:LVt,MAX_SAFE_BUILD_LENGTH:FVt,MAX_SAFE_INTEGER:NVt,RELEASE_TYPES:UVt,SEMVER_SPEC_VERSION:PVt,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var gA=S((EKr,vNe)=>{"use strict";var jVt=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};vNe.exports=jVt});var nE=S((Bl,wNe)=>{"use strict";var{MAX_SAFE_COMPONENT_LENGTH:d7,MAX_SAFE_BUILD_LENGTH:MVt,MAX_LENGTH:BVt}=mA(),qVt=gA();Bl=wNe.exports={};var $Vt=Bl.re=[],zVt=Bl.safeRe=[],dt=Bl.src=[],WVt=Bl.safeSrc=[],ht=Bl.t={},GVt=0,h7="[a-zA-Z0-9-]",HVt=[["\\s",1],["\\d",BVt],[h7,MVt]],VVt=a(e=>{for(let[t,r]of HVt)e=e.split(`${t}*`).join(`${t}{0,${r}}`).split(`${t}+`).join(`${t}{1,${r}}`);return e},"makeSafeRegex"),Jt=a((e,t,r)=>{let n=VVt(t),i=GVt++;qVt(e,i,t),ht[e]=i,dt[i]=t,WVt[i]=n,$Vt[i]=new RegExp(t,r?"g":void 0),zVt[i]=new RegExp(n,r?"g":void 0)},"createToken");Jt("NUMERICIDENTIFIER","0|[1-9]\\d*");Jt("NUMERICIDENTIFIERLOOSE","\\d+");Jt("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${h7}*`);Jt("MAINVERSION",`(${dt[ht.NUMERICIDENTIFIER]})\\.(${dt[ht.NUMERICIDENTIFIER]})\\.(${dt[ht.NUMERICIDENTIFIER]})`);Jt("MAINVERSIONLOOSE",`(${dt[ht.NUMERICIDENTIFIERLOOSE]})\\.(${dt[ht.NUMERICIDENTIFIERLOOSE]})\\.(${dt[ht.NUMERICIDENTIFIERLOOSE]})`);Jt("PRERELEASEIDENTIFIER",`(?:${dt[ht.NONNUMERICIDENTIFIER]}|${dt[ht.NUMERICIDENTIFIER]})`);Jt("PRERELEASEIDENTIFIERLOOSE",`(?:${dt[ht.NONNUMERICIDENTIFIER]}|${dt[ht.NUMERICIDENTIFIERLOOSE]})`);Jt("PRERELEASE",`(?:-(${dt[ht.PRERELEASEIDENTIFIER]}(?:\\.${dt[ht.PRERELEASEIDENTIFIER]})*))`);Jt("PRERELEASELOOSE",`(?:-?(${dt[ht.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${dt[ht.PRERELEASEIDENTIFIERLOOSE]})*))`);Jt("BUILDIDENTIFIER",`${h7}+`);Jt("BUILD",`(?:\\+(${dt[ht.BUILDIDENTIFIER]}(?:\\.${dt[ht.BUILDIDENTIFIER]})*))`);Jt("FULLPLAIN",`v?${dt[ht.MAINVERSION]}${dt[ht.PRERELEASE]}?${dt[ht.BUILD]}?`);Jt("FULL",`^${dt[ht.FULLPLAIN]}$`);Jt("LOOSEPLAIN",`[v=\\s]*${dt[ht.MAINVERSIONLOOSE]}${dt[ht.PRERELEASELOOSE]}?${dt[ht.BUILD]}?`);Jt("LOOSE",`^${dt[ht.LOOSEPLAIN]}$`);Jt("GTLT","((?:<|>)?=?)");Jt("XRANGEIDENTIFIERLOOSE",`${dt[ht.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);Jt("XRANGEIDENTIFIER",`${dt[ht.NUMERICIDENTIFIER]}|x|X|\\*`);Jt("XRANGEPLAIN",`[v=\\s]*(${dt[ht.XRANGEIDENTIFIER]})(?:\\.(${dt[ht.XRANGEIDENTIFIER]})(?:\\.(${dt[ht.XRANGEIDENTIFIER]})(?:${dt[ht.PRERELEASE]})?${dt[ht.BUILD]}?)?)?`);Jt("XRANGEPLAINLOOSE",`[v=\\s]*(${dt[ht.XRANGEIDENTIFIERLOOSE]})(?:\\.(${dt[ht.XRANGEIDENTIFIERLOOSE]})(?:\\.(${dt[ht.XRANGEIDENTIFIERLOOSE]})(?:${dt[ht.PRERELEASELOOSE]})?${dt[ht.BUILD]}?)?)?`);Jt("XRANGE",`^${dt[ht.GTLT]}\\s*${dt[ht.XRANGEPLAIN]}$`);Jt("XRANGELOOSE",`^${dt[ht.GTLT]}\\s*${dt[ht.XRANGEPLAINLOOSE]}$`);Jt("COERCEPLAIN",`(^|[^\\d])(\\d{1,${d7}})(?:\\.(\\d{1,${d7}}))?(?:\\.(\\d{1,${d7}}))?`);Jt("COERCE",`${dt[ht.COERCEPLAIN]}(?:$|[^\\d])`);Jt("COERCEFULL",dt[ht.COERCEPLAIN]+`(?:${dt[ht.PRERELEASE]})?(?:${dt[ht.BUILD]})?(?:$|[^\\d])`);Jt("COERCERTL",dt[ht.COERCE],!0);Jt("COERCERTLFULL",dt[ht.COERCEFULL],!0);Jt("LONETILDE","(?:~>?)");Jt("TILDETRIM",`(\\s*)${dt[ht.LONETILDE]}\\s+`,!0);Bl.tildeTrimReplace="$1~";Jt("TILDE",`^${dt[ht.LONETILDE]}${dt[ht.XRANGEPLAIN]}$`);Jt("TILDELOOSE",`^${dt[ht.LONETILDE]}${dt[ht.XRANGEPLAINLOOSE]}$`);Jt("LONECARET","(?:\\^)");Jt("CARETTRIM",`(\\s*)${dt[ht.LONECARET]}\\s+`,!0);Bl.caretTrimReplace="$1^";Jt("CARET",`^${dt[ht.LONECARET]}${dt[ht.XRANGEPLAIN]}$`);Jt("CARETLOOSE",`^${dt[ht.LONECARET]}${dt[ht.XRANGEPLAINLOOSE]}$`);Jt("COMPARATORLOOSE",`^${dt[ht.GTLT]}\\s*(${dt[ht.LOOSEPLAIN]})$|^$`);Jt("COMPARATOR",`^${dt[ht.GTLT]}\\s*(${dt[ht.FULLPLAIN]})$|^$`);Jt("COMPARATORTRIM",`(\\s*)${dt[ht.GTLT]}\\s*(${dt[ht.LOOSEPLAIN]}|${dt[ht.XRANGEPLAIN]})`,!0);Bl.comparatorTrimReplace="$1$2$3";Jt("HYPHENRANGE",`^\\s*(${dt[ht.XRANGEPLAIN]})\\s+-\\s+(${dt[ht.XRANGEPLAIN]})\\s*$`);Jt("HYPHENRANGELOOSE",`^\\s*(${dt[ht.XRANGEPLAINLOOSE]})\\s+-\\s+(${dt[ht.XRANGEPLAINLOOSE]})\\s*$`);Jt("STAR","(<|>)?=?\\s*\\*");Jt("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");Jt("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var bL=S((SKr,ENe)=>{"use strict";var KVt=Object.freeze({loose:!0}),QVt=Object.freeze({}),YVt=a(e=>e?typeof e!="object"?KVt:e:QVt,"parseOptions");ENe.exports=YVt});var m7=S((TKr,xNe)=>{"use strict";var _Ne=/^[0-9]+$/,SNe=a((e,t)=>{let r=_Ne.test(e),n=_Ne.test(t);return r&&n&&(e=+e,t=+t),e===t?0:r&&!n?-1:n&&!r?1:e<t?-1:1},"compareIdentifiers"),JVt=a((e,t)=>SNe(t,e),"rcompareIdentifiers");xNe.exports={compareIdentifiers:SNe,rcompareIdentifiers:JVt}});var lo=S((RKr,ANe)=>{"use strict";var vL=gA(),{MAX_LENGTH:TNe,MAX_SAFE_INTEGER:wL}=mA(),{safeRe:EL,t:_L}=nE(),XVt=bL(),{compareIdentifiers:iE}=m7(),g7=class e{static{a(this,"SemVer")}constructor(t,r){if(r=XVt(r),t instanceof e){if(t.loose===!!r.loose&&t.includePrerelease===!!r.includePrerelease)return t;t=t.version}else if(typeof t!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof t}".`);if(t.length>TNe)throw new TypeError(`version is longer than ${TNe} characters`);vL("SemVer",t,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let n=t.trim().match(r.loose?EL[_L.LOOSE]:EL[_L.FULL]);if(!n)throw new TypeError(`Invalid Version: ${t}`);if(this.raw=t,this.major=+n[1],this.minor=+n[2],this.patch=+n[3],this.major>wL||this.major<0)throw new TypeError("Invalid major version");if(this.minor>wL||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>wL||this.patch<0)throw new TypeError("Invalid patch version");n[4]?this.prerelease=n[4].split(".").map(i=>{if(/^[0-9]+$/.test(i)){let o=+i;if(o>=0&&o<wL)return o}return i}):this.prerelease=[],this.build=n[5]?n[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(t){if(vL("SemVer.compare",this.version,this.options,t),!(t instanceof e)){if(typeof t=="string"&&t===this.version)return 0;t=new e(t,this.options)}return t.version===this.version?0:this.compareMain(t)||this.comparePre(t)}compareMain(t){return t instanceof e||(t=new e(t,this.options)),iE(this.major,t.major)||iE(this.minor,t.minor)||iE(this.patch,t.patch)}comparePre(t){if(t instanceof e||(t=new e(t,this.options)),this.prerelease.length&&!t.prerelease.length)return-1;if(!this.prerelease.length&&t.prerelease.length)return 1;if(!this.prerelease.length&&!t.prerelease.length)return 0;let r=0;do{let n=this.prerelease[r],i=t.prerelease[r];if(vL("prerelease compare",r,n,i),n===void 0&&i===void 0)return 0;if(i===void 0)return 1;if(n===void 0)return-1;if(n===i)continue;return iE(n,i)}while(++r)}compareBuild(t){t instanceof e||(t=new e(t,this.options));let r=0;do{let n=this.build[r],i=t.build[r];if(vL("build compare",r,n,i),n===void 0&&i===void 0)return 0;if(i===void 0)return 1;if(n===void 0)return-1;if(n===i)continue;return iE(n,i)}while(++r)}inc(t,r,n){if(t.startsWith("pre")){if(!r&&n===!1)throw new Error("invalid increment argument: identifier is empty");if(r){let i=`-${r}`.match(this.options.loose?EL[_L.PRERELEASELOOSE]:EL[_L.PRERELEASE]);if(!i||i[1]!==r)throw new Error(`invalid identifier: ${r}`)}}switch(t){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",r,n);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",r,n);break;case"prepatch":this.prerelease.length=0,this.inc("patch",r,n),this.inc("pre",r,n);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",r,n),this.inc("pre",r,n);break;case"release":if(this.prerelease.length===0)throw new Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":{let i=Number(n)?1:0;if(this.prerelease.length===0)this.prerelease=[i];else{let o=this.prerelease.length;for(;--o>=0;)typeof this.prerelease[o]=="number"&&(this.prerelease[o]++,o=-2);if(o===-1){if(r===this.prerelease.join(".")&&n===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(i)}}if(r){let o=[r,i];n===!1&&(o=[r]),iE(this.prerelease[0],r)===0?isNaN(this.prerelease[1])&&(this.prerelease=o):this.prerelease=o}break}default:throw new Error(`invalid increment argument: ${t}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};ANe.exports=g7});var hy=S((IKr,ONe)=>{"use strict";var RNe=lo(),ZVt=a((e,t,r=!1)=>{if(e instanceof RNe)return e;try{return new RNe(e,t)}catch(n){if(!r)return null;throw n}},"parse");ONe.exports=ZVt});var kNe=S((CKr,INe)=>{"use strict";var e9t=hy(),t9t=a((e,t)=>{let r=e9t(e,t);return r?r.version:null},"valid");INe.exports=t9t});var DNe=S((PKr,CNe)=>{"use strict";var r9t=hy(),n9t=a((e,t)=>{let r=r9t(e.trim().replace(/^[=v]+/,""),t);return r?r.version:null},"clean");CNe.exports=n9t});var LNe=S((LKr,NNe)=>{"use strict";var PNe=lo(),i9t=a((e,t,r,n,i)=>{typeof r=="string"&&(i=n,n=r,r=void 0);try{return new PNe(e instanceof PNe?e.version:e,r).inc(t,n,i).version}catch{return null}},"inc");NNe.exports=i9t});var jNe=S((UKr,UNe)=>{"use strict";var FNe=hy(),a9t=a((e,t)=>{let r=FNe(e,null,!0),n=FNe(t,null,!0),i=r.compare(n);if(i===0)return null;let o=i>0,s=o?r:n,u=o?n:r,c=!!s.prerelease.length;if(!!u.prerelease.length&&!c){if(!u.patch&&!u.minor)return"major";if(u.compareMain(s)===0)return u.minor&&!u.patch?"minor":"patch"}let f=c?"pre":"";return r.major!==n.major?f+"major":r.minor!==n.minor?f+"minor":r.patch!==n.patch?f+"patch":"prerelease"},"diff");UNe.exports=a9t});var BNe=S((MKr,MNe)=>{"use strict";var o9t=lo(),s9t=a((e,t)=>new o9t(e,t).major,"major");MNe.exports=s9t});var $Ne=S((qKr,qNe)=>{"use strict";var u9t=lo(),c9t=a((e,t)=>new u9t(e,t).minor,"minor");qNe.exports=c9t});var WNe=S((zKr,zNe)=>{"use strict";var l9t=lo(),f9t=a((e,t)=>new l9t(e,t).patch,"patch");zNe.exports=f9t});var HNe=S((GKr,GNe)=>{"use strict";var p9t=hy(),d9t=a((e,t)=>{let r=p9t(e,t);return r&&r.prerelease.length?r.prerelease:null},"prerelease");GNe.exports=d9t});var Iu=S((VKr,KNe)=>{"use strict";var VNe=lo(),h9t=a((e,t,r)=>new VNe(e,r).compare(new VNe(t,r)),"compare");KNe.exports=h9t});var YNe=S((QKr,QNe)=>{"use strict";var m9t=Iu(),g9t=a((e,t,r)=>m9t(t,e,r),"rcompare");QNe.exports=g9t});var XNe=S((JKr,JNe)=>{"use strict";var y9t=Iu(),b9t=a((e,t)=>y9t(e,t,!0),"compareLoose");JNe.exports=b9t});var SL=S((ZKr,eLe)=>{"use strict";var ZNe=lo(),v9t=a((e,t,r)=>{let n=new ZNe(e,r),i=new ZNe(t,r);return n.compare(i)||n.compareBuild(i)},"compareBuild");eLe.exports=v9t});var rLe=S((tQr,tLe)=>{"use strict";var w9t=SL(),E9t=a((e,t)=>e.sort((r,n)=>w9t(r,n,t)),"sort");tLe.exports=E9t});var iLe=S((nQr,nLe)=>{"use strict";var _9t=SL(),S9t=a((e,t)=>e.sort((r,n)=>_9t(n,r,t)),"rsort");nLe.exports=S9t});var yA=S((aQr,aLe)=>{"use strict";var x9t=Iu(),T9t=a((e,t,r)=>x9t(e,t,r)>0,"gt");aLe.exports=T9t});var xL=S((sQr,oLe)=>{"use strict";var A9t=Iu(),R9t=a((e,t,r)=>A9t(e,t,r)<0,"lt");oLe.exports=R9t});var y7=S((cQr,sLe)=>{"use strict";var O9t=Iu(),I9t=a((e,t,r)=>O9t(e,t,r)===0,"eq");sLe.exports=I9t});var b7=S((fQr,uLe)=>{"use strict";var k9t=Iu(),C9t=a((e,t,r)=>k9t(e,t,r)!==0,"neq");uLe.exports=C9t});var TL=S((dQr,cLe)=>{"use strict";var D9t=Iu(),P9t=a((e,t,r)=>D9t(e,t,r)>=0,"gte");cLe.exports=P9t});var AL=S((mQr,lLe)=>{"use strict";var N9t=Iu(),L9t=a((e,t,r)=>N9t(e,t,r)<=0,"lte");lLe.exports=L9t});var v7=S((yQr,fLe)=>{"use strict";var F9t=y7(),U9t=b7(),j9t=yA(),M9t=TL(),B9t=xL(),q9t=AL(),$9t=a((e,t,r,n)=>{switch(t){case"===":return typeof e=="object"&&(e=e.version),typeof r=="object"&&(r=r.version),e===r;case"!==":return typeof e=="object"&&(e=e.version),typeof r=="object"&&(r=r.version),e!==r;case"":case"=":case"==":return F9t(e,r,n);case"!=":return U9t(e,r,n);case">":return j9t(e,r,n);case">=":return M9t(e,r,n);case"<":return B9t(e,r,n);case"<=":return q9t(e,r,n);default:throw new TypeError(`Invalid operator: ${t}`)}},"cmp");fLe.exports=$9t});var dLe=S((vQr,pLe)=>{"use strict";var z9t=lo(),W9t=hy(),{safeRe:RL,t:OL}=nE(),G9t=a((e,t)=>{if(e instanceof z9t)return e;if(typeof e=="number"&&(e=String(e)),typeof e!="string")return null;t=t||{};let r=null;if(!t.rtl)r=e.match(t.includePrerelease?RL[OL.COERCEFULL]:RL[OL.COERCE]);else{let c=t.includePrerelease?RL[OL.COERCERTLFULL]:RL[OL.COERCERTL],l;for(;(l=c.exec(e))&&(!r||r.index+r[0].length!==e.length);)(!r||l.index+l[0].length!==r.index+r[0].length)&&(r=l),c.lastIndex=l.index+l[1].length+l[2].length;c.lastIndex=-1}if(r===null)return null;let n=r[2],i=r[3]||"0",o=r[4]||"0",s=t.includePrerelease&&r[5]?`-${r[5]}`:"",u=t.includePrerelease&&r[6]?`+${r[6]}`:"";return W9t(`${n}.${i}.${o}${s}${u}`,t)},"coerce");pLe.exports=G9t});var mLe=S((EQr,hLe)=>{"use strict";var w7=class{static{a(this,"LRUCache")}constructor(){this.max=1e3,this.map=new Map}get(t){let r=this.map.get(t);if(r!==void 0)return this.map.delete(t),this.map.set(t,r),r}delete(t){return this.map.delete(t)}set(t,r){if(!this.delete(t)&&r!==void 0){if(this.map.size>=this.max){let i=this.map.keys().next().value;this.delete(i)}this.map.set(t,r)}return this}};hLe.exports=w7});var ku=S((SQr,vLe)=>{"use strict";var H9t=/\s+/g,E7=class e{static{a(this,"Range")}constructor(t,r){if(r=K9t(r),t instanceof e)return t.loose===!!r.loose&&t.includePrerelease===!!r.includePrerelease?t:new e(t.raw,r);if(t instanceof _7)return this.raw=t.value,this.set=[[t]],this.formatted=void 0,this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=t.trim().replace(H9t," "),this.set=this.raw.split("||").map(n=>this.parseRange(n.trim())).filter(n=>n.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let n=this.set[0];if(this.set=this.set.filter(i=>!yLe(i[0])),this.set.length===0)this.set=[n];else if(this.set.length>1){for(let i of this.set)if(i.length===1&&t7t(i[0])){this.set=[i];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let t=0;t<this.set.length;t++){t>0&&(this.formatted+="||");let r=this.set[t];for(let n=0;n<r.length;n++)n>0&&(this.formatted+=" "),this.formatted+=r[n].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(t){let n=((this.options.includePrerelease&&Z9t)|(this.options.loose&&e7t))+":"+t,i=gLe.get(n);if(i)return i;let o=this.options.loose,s=o?os[No.HYPHENRANGELOOSE]:os[No.HYPHENRANGE];t=t.replace(s,f7t(this.options.includePrerelease)),Ln("hyphen replace",t),t=t.replace(os[No.COMPARATORTRIM],Y9t),Ln("comparator trim",t),t=t.replace(os[No.TILDETRIM],J9t),Ln("tilde trim",t),t=t.replace(os[No.CARETTRIM],X9t),Ln("caret trim",t);let u=t.split(" ").map(p=>r7t(p,this.options)).join(" ").split(/\s+/).map(p=>l7t(p,this.options));o&&(u=u.filter(p=>(Ln("loose invalid filter",p,this.options),!!p.match(os[No.COMPARATORLOOSE])))),Ln("range list",u);let c=new Map,l=u.map(p=>new _7(p,this.options));for(let p of l){if(yLe(p))return[p];c.set(p.value,p)}c.size>1&&c.has("")&&c.delete("");let f=[...c.values()];return gLe.set(n,f),f}intersects(t,r){if(!(t instanceof e))throw new TypeError("a Range is required");return this.set.some(n=>bLe(n,r)&&t.set.some(i=>bLe(i,r)&&n.every(o=>i.every(s=>o.intersects(s,r)))))}test(t){if(!t)return!1;if(typeof t=="string")try{t=new Q9t(t,this.options)}catch{return!1}for(let r=0;r<this.set.length;r++)if(p7t(this.set[r],t,this.options))return!0;return!1}};vLe.exports=E7;var V9t=mLe(),gLe=new V9t,K9t=bL(),_7=bA(),Ln=gA(),Q9t=lo(),{safeRe:os,t:No,comparatorTrimReplace:Y9t,tildeTrimReplace:J9t,caretTrimReplace:X9t}=nE(),{FLAG_INCLUDE_PRERELEASE:Z9t,FLAG_LOOSE:e7t}=mA(),yLe=a(e=>e.value==="<0.0.0-0","isNullSet"),t7t=a(e=>e.value==="","isAny"),bLe=a((e,t)=>{let r=!0,n=e.slice(),i=n.pop();for(;r&&n.length;)r=n.every(o=>i.intersects(o,t)),i=n.pop();return r},"isSatisfiable"),r7t=a((e,t)=>(Ln("comp",e,t),e=a7t(e,t),Ln("caret",e),e=n7t(e,t),Ln("tildes",e),e=s7t(e,t),Ln("xrange",e),e=c7t(e,t),Ln("stars",e),e),"parseComparator"),Lo=a(e=>!e||e.toLowerCase()==="x"||e==="*","isX"),n7t=a((e,t)=>e.trim().split(/\s+/).map(r=>i7t(r,t)).join(" "),"replaceTildes"),i7t=a((e,t)=>{let r=t.loose?os[No.TILDELOOSE]:os[No.TILDE];return e.replace(r,(n,i,o,s,u)=>{Ln("tilde",e,n,i,o,s,u);let c;return Lo(i)?c="":Lo(o)?c=`>=${i}.0.0 <${+i+1}.0.0-0`:Lo(s)?c=`>=${i}.${o}.0 <${i}.${+o+1}.0-0`:u?(Ln("replaceTilde pr",u),c=`>=${i}.${o}.${s}-${u} <${i}.${+o+1}.0-0`):c=`>=${i}.${o}.${s} <${i}.${+o+1}.0-0`,Ln("tilde return",c),c})},"replaceTilde"),a7t=a((e,t)=>e.trim().split(/\s+/).map(r=>o7t(r,t)).join(" "),"replaceCarets"),o7t=a((e,t)=>{Ln("caret",e,t);let r=t.loose?os[No.CARETLOOSE]:os[No.CARET],n=t.includePrerelease?"-0":"";return e.replace(r,(i,o,s,u,c)=>{Ln("caret",e,i,o,s,u,c);let l;return Lo(o)?l="":Lo(s)?l=`>=${o}.0.0${n} <${+o+1}.0.0-0`:Lo(u)?o==="0"?l=`>=${o}.${s}.0${n} <${o}.${+s+1}.0-0`:l=`>=${o}.${s}.0${n} <${+o+1}.0.0-0`:c?(Ln("replaceCaret pr",c),o==="0"?s==="0"?l=`>=${o}.${s}.${u}-${c} <${o}.${s}.${+u+1}-0`:l=`>=${o}.${s}.${u}-${c} <${o}.${+s+1}.0-0`:l=`>=${o}.${s}.${u}-${c} <${+o+1}.0.0-0`):(Ln("no pr"),o==="0"?s==="0"?l=`>=${o}.${s}.${u}${n} <${o}.${s}.${+u+1}-0`:l=`>=${o}.${s}.${u}${n} <${o}.${+s+1}.0-0`:l=`>=${o}.${s}.${u} <${+o+1}.0.0-0`),Ln("caret return",l),l})},"replaceCaret"),s7t=a((e,t)=>(Ln("replaceXRanges",e,t),e.split(/\s+/).map(r=>u7t(r,t)).join(" ")),"replaceXRanges"),u7t=a((e,t)=>{e=e.trim();let r=t.loose?os[No.XRANGELOOSE]:os[No.XRANGE];return e.replace(r,(n,i,o,s,u,c)=>{Ln("xRange",e,n,i,o,s,u,c);let l=Lo(o),f=l||Lo(s),p=f||Lo(u),d=p;return i==="="&&d&&(i=""),c=t.includePrerelease?"-0":"",l?i===">"||i==="<"?n="<0.0.0-0":n="*":i&&d?(f&&(s=0),u=0,i===">"?(i=">=",f?(o=+o+1,s=0,u=0):(s=+s+1,u=0)):i==="<="&&(i="<",f?o=+o+1:s=+s+1),i==="<"&&(c="-0"),n=`${i+o}.${s}.${u}${c}`):f?n=`>=${o}.0.0${c} <${+o+1}.0.0-0`:p&&(n=`>=${o}.${s}.0${c} <${o}.${+s+1}.0-0`),Ln("xRange return",n),n})},"replaceXRange"),c7t=a((e,t)=>(Ln("replaceStars",e,t),e.trim().replace(os[No.STAR],"")),"replaceStars"),l7t=a((e,t)=>(Ln("replaceGTE0",e,t),e.trim().replace(os[t.includePrerelease?No.GTE0PRE:No.GTE0],"")),"replaceGTE0"),f7t=a(e=>(t,r,n,i,o,s,u,c,l,f,p,d)=>(Lo(n)?r="":Lo(i)?r=`>=${n}.0.0${e?"-0":""}`:Lo(o)?r=`>=${n}.${i}.0${e?"-0":""}`:s?r=`>=${r}`:r=`>=${r}${e?"-0":""}`,Lo(l)?c="":Lo(f)?c=`<${+l+1}.0.0-0`:Lo(p)?c=`<${l}.${+f+1}.0-0`:d?c=`<=${l}.${f}.${p}-${d}`:e?c=`<${l}.${f}.${+p+1}-0`:c=`<=${c}`,`${r} ${c}`.trim()),"hyphenReplace"),p7t=a((e,t,r)=>{for(let n=0;n<e.length;n++)if(!e[n].test(t))return!1;if(t.prerelease.length&&!r.includePrerelease){for(let n=0;n<e.length;n++)if(Ln(e[n].semver),e[n].semver!==_7.ANY&&e[n].semver.prerelease.length>0){let i=e[n].semver;if(i.major===t.major&&i.minor===t.minor&&i.patch===t.patch)return!0}return!1}return!0},"testSet")});var bA=S((TQr,TLe)=>{"use strict";var vA=Symbol("SemVer ANY"),T7=class e{static{a(this,"Comparator")}static get ANY(){return vA}constructor(t,r){if(r=wLe(r),t instanceof e){if(t.loose===!!r.loose)return t;t=t.value}t=t.trim().split(/\s+/).join(" "),x7("comparator",t,r),this.options=r,this.loose=!!r.loose,this.parse(t),this.semver===vA?this.value="":this.value=this.operator+this.semver.version,x7("comp",this)}parse(t){let r=this.options.loose?ELe[_Le.COMPARATORLOOSE]:ELe[_Le.COMPARATOR],n=t.match(r);if(!n)throw new TypeError(`Invalid comparator: ${t}`);this.operator=n[1]!==void 0?n[1]:"",this.operator==="="&&(this.operator=""),n[2]?this.semver=new SLe(n[2],this.options.loose):this.semver=vA}toString(){return this.value}test(t){if(x7("Comparator.test",t,this.options.loose),this.semver===vA||t===vA)return!0;if(typeof t=="string")try{t=new SLe(t,this.options)}catch{return!1}return S7(t,this.operator,this.semver,this.options)}intersects(t,r){if(!(t instanceof e))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new xLe(t.value,r).test(this.value):t.operator===""?t.value===""?!0:new xLe(this.value,r).test(t.semver):(r=wLe(r),r.includePrerelease&&(this.value==="<0.0.0-0"||t.value==="<0.0.0-0")||!r.includePrerelease&&(this.value.startsWith("<0.0.0")||t.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&t.operator.startsWith(">")||this.operator.startsWith("<")&&t.operator.startsWith("<")||this.semver.version===t.semver.version&&this.operator.includes("=")&&t.operator.includes("=")||S7(this.semver,"<",t.semver,r)&&this.operator.startsWith(">")&&t.operator.startsWith("<")||S7(this.semver,">",t.semver,r)&&this.operator.startsWith("<")&&t.operator.startsWith(">")))}};TLe.exports=T7;var wLe=bL(),{safeRe:ELe,t:_Le}=nE(),S7=v7(),x7=gA(),SLe=lo(),xLe=ku()});var wA=S((RQr,ALe)=>{"use strict";var d7t=ku(),h7t=a((e,t,r)=>{try{t=new d7t(t,r)}catch{return!1}return t.test(e)},"satisfies");ALe.exports=h7t});var OLe=S((IQr,RLe)=>{"use strict";var m7t=ku(),g7t=a((e,t)=>new m7t(e,t).set.map(r=>r.map(n=>n.value).join(" ").trim().split(" ")),"toComparators");RLe.exports=g7t});var kLe=S((CQr,ILe)=>{"use strict";var y7t=lo(),b7t=ku(),v7t=a((e,t,r)=>{let n=null,i=null,o=null;try{o=new b7t(t,r)}catch{return null}return e.forEach(s=>{o.test(s)&&(!n||i.compare(s)===-1)&&(n=s,i=new y7t(n,r))}),n},"maxSatisfying");ILe.exports=v7t});var DLe=S((PQr,CLe)=>{"use strict";var w7t=lo(),E7t=ku(),_7t=a((e,t,r)=>{let n=null,i=null,o=null;try{o=new E7t(t,r)}catch{return null}return e.forEach(s=>{o.test(s)&&(!n||i.compare(s)===1)&&(n=s,i=new w7t(n,r))}),n},"minSatisfying");CLe.exports=_7t});var LLe=S((LQr,NLe)=>{"use strict";var A7=lo(),S7t=ku(),PLe=yA(),x7t=a((e,t)=>{e=new S7t(e,t);let r=new A7("0.0.0");if(e.test(r)||(r=new A7("0.0.0-0"),e.test(r)))return r;r=null;for(let n=0;n<e.set.length;++n){let i=e.set[n],o=null;i.forEach(s=>{let u=new A7(s.semver.version);switch(s.operator){case">":u.prerelease.length===0?u.patch++:u.prerelease.push(0),u.raw=u.format();case"":case">=":(!o||PLe(u,o))&&(o=u);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${s.operator}`)}}),o&&(!r||PLe(r,o))&&(r=o)}return r&&e.test(r)?r:null},"minVersion");NLe.exports=x7t});var ULe=S((UQr,FLe)=>{"use strict";var T7t=ku(),A7t=a((e,t)=>{try{return new T7t(e,t).range||"*"}catch{return null}},"validRange");FLe.exports=A7t});var IL=S((MQr,qLe)=>{"use strict";var R7t=lo(),BLe=bA(),{ANY:O7t}=BLe,I7t=ku(),k7t=wA(),jLe=yA(),MLe=xL(),C7t=AL(),D7t=TL(),P7t=a((e,t,r,n)=>{e=new R7t(e,n),t=new I7t(t,n);let i,o,s,u,c;switch(r){case">":i=jLe,o=C7t,s=MLe,u=">",c=">=";break;case"<":i=MLe,o=D7t,s=jLe,u="<",c="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(k7t(e,t,n))return!1;for(let l=0;l<t.set.length;++l){let f=t.set[l],p=null,d=null;if(f.forEach(h=>{h.semver===O7t&&(h=new BLe(">=0.0.0")),p=p||h,d=d||h,i(h.semver,p.semver,n)?p=h:s(h.semver,d.semver,n)&&(d=h)}),p.operator===u||p.operator===c||(!d.operator||d.operator===u)&&o(e,d.semver))return!1;if(d.operator===c&&s(e,d.semver))return!1}return!0},"outside");qLe.exports=P7t});var zLe=S((qQr,$Le)=>{"use strict";var N7t=IL(),L7t=a((e,t,r)=>N7t(e,t,">",r),"gtr");$Le.exports=L7t});var GLe=S((zQr,WLe)=>{"use strict";var F7t=IL(),U7t=a((e,t,r)=>F7t(e,t,"<",r),"ltr");WLe.exports=U7t});var KLe=S((GQr,VLe)=>{"use strict";var HLe=ku(),j7t=a((e,t,r)=>(e=new HLe(e,r),t=new HLe(t,r),e.intersects(t,r)),"intersects");VLe.exports=j7t});var YLe=S((VQr,QLe)=>{"use strict";var M7t=wA(),B7t=Iu();QLe.exports=(e,t,r)=>{let n=[],i=null,o=null,s=e.sort((f,p)=>B7t(f,p,r));for(let f of s)M7t(f,t,r)?(o=f,i||(i=f)):(o&&n.push([i,o]),o=null,i=null);i&&n.push([i,null]);let u=[];for(let[f,p]of n)f===p?u.push(f):!p&&f===s[0]?u.push("*"):p?f===s[0]?u.push(`<=${p}`):u.push(`${f} - ${p}`):u.push(`>=${f}`);let c=u.join(" || "),l=typeof t.raw=="string"?t.raw:String(t);return c.length<l.length?c:t}});var r2e=S((KQr,t2e)=>{"use strict";var JLe=ku(),O7=bA(),{ANY:R7}=O7,EA=wA(),I7=Iu(),q7t=a((e,t,r={})=>{if(e===t)return!0;e=new JLe(e,r),t=new JLe(t,r);let n=!1;e:for(let i of e.set){for(let o of t.set){let s=z7t(i,o,r);if(n=n||s!==null,s)continue e}if(n)return!1}return!0},"subset"),$7t=[new O7(">=0.0.0-0")],XLe=[new O7(">=0.0.0")],z7t=a((e,t,r)=>{if(e===t)return!0;if(e.length===1&&e[0].semver===R7){if(t.length===1&&t[0].semver===R7)return!0;r.includePrerelease?e=$7t:e=XLe}if(t.length===1&&t[0].semver===R7){if(r.includePrerelease)return!0;t=XLe}let n=new Set,i,o;for(let h of e)h.operator===">"||h.operator===">="?i=ZLe(i,h,r):h.operator==="<"||h.operator==="<="?o=e2e(o,h,r):n.add(h.semver);if(n.size>1)return null;let s;if(i&&o){if(s=I7(i.semver,o.semver,r),s>0)return null;if(s===0&&(i.operator!==">="||o.operator!=="<="))return null}for(let h of n){if(i&&!EA(h,String(i),r)||o&&!EA(h,String(o),r))return null;for(let m of t)if(!EA(h,String(m),r))return!1;return!0}let u,c,l,f,p=o&&!r.includePrerelease&&o.semver.prerelease.length?o.semver:!1,d=i&&!r.includePrerelease&&i.semver.prerelease.length?i.semver:!1;p&&p.prerelease.length===1&&o.operator==="<"&&p.prerelease[0]===0&&(p=!1);for(let h of t){if(f=f||h.operator===">"||h.operator===">=",l=l||h.operator==="<"||h.operator==="<=",i){if(d&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===d.major&&h.semver.minor===d.minor&&h.semver.patch===d.patch&&(d=!1),h.operator===">"||h.operator===">="){if(u=ZLe(i,h,r),u===h&&u!==i)return!1}else if(i.operator===">="&&!EA(i.semver,String(h),r))return!1}if(o){if(p&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===p.major&&h.semver.minor===p.minor&&h.semver.patch===p.patch&&(p=!1),h.operator==="<"||h.operator==="<="){if(c=e2e(o,h,r),c===h&&c!==o)return!1}else if(o.operator==="<="&&!EA(o.semver,String(h),r))return!1}if(!h.operator&&(o||i)&&s!==0)return!1}return!(i&&l&&!o&&s!==0||o&&f&&!i&&s!==0||d||p)},"simpleSubset"),ZLe=a((e,t,r)=>{if(!e)return t;let n=I7(e.semver,t.semver,r);return n>0?e:n<0||t.operator===">"&&e.operator===">="?t:e},"higherGT"),e2e=a((e,t,r)=>{if(!e)return t;let n=I7(e.semver,t.semver,r);return n<0?e:n>0||t.operator==="<"&&e.operator==="<="?t:e},"lowerLT");t2e.exports=q7t});var C7=S((YQr,a2e)=>{"use strict";var k7=nE(),n2e=mA(),W7t=lo(),i2e=m7(),G7t=hy(),H7t=kNe(),V7t=DNe(),K7t=LNe(),Q7t=jNe(),Y7t=BNe(),J7t=$Ne(),X7t=WNe(),Z7t=HNe(),eKt=Iu(),tKt=YNe(),rKt=XNe(),nKt=SL(),iKt=rLe(),aKt=iLe(),oKt=yA(),sKt=xL(),uKt=y7(),cKt=b7(),lKt=TL(),fKt=AL(),pKt=v7(),dKt=dLe(),hKt=bA(),mKt=ku(),gKt=wA(),yKt=OLe(),bKt=kLe(),vKt=DLe(),wKt=LLe(),EKt=ULe(),_Kt=IL(),SKt=zLe(),xKt=GLe(),TKt=KLe(),AKt=YLe(),RKt=r2e();a2e.exports={parse:G7t,valid:H7t,clean:V7t,inc:K7t,diff:Q7t,major:Y7t,minor:J7t,patch:X7t,prerelease:Z7t,compare:eKt,rcompare:tKt,compareLoose:rKt,compareBuild:nKt,sort:iKt,rsort:aKt,gt:oKt,lt:sKt,eq:uKt,neq:cKt,gte:lKt,lte:fKt,cmp:pKt,coerce:dKt,Comparator:hKt,Range:mKt,satisfies:gKt,toComparators:yKt,maxSatisfying:bKt,minSatisfying:vKt,minVersion:wKt,validRange:EKt,outside:_Kt,gtr:SKt,ltr:xKt,intersects:TKt,simplifyRange:AKt,subset:RKt,SemVer:W7t,re:k7.re,src:k7.src,tokens:k7.t,SEMVER_SPEC_VERSION:n2e.SEMVER_SPEC_VERSION,RELEASE_TYPES:n2e.RELEASE_TYPES,compareIdentifiers:i2e.compareIdentifiers,rcompareIdentifiers:i2e.rcompareIdentifiers}});var Oh=S((Fnn,Q7)=>{"use strict";var V7=function(){"use strict";return this===void 0}();V7?Q7.exports={freeze:Object.freeze,defineProperty:Object.defineProperty,getDescriptor:Object.getOwnPropertyDescriptor,keys:Object.keys,names:Object.getOwnPropertyNames,getPrototypeOf:Object.getPrototypeOf,isArray:Array.isArray,isES5:V7,propertyIsWritable:function(e,t){var r=Object.getOwnPropertyDescriptor(e,t);return!!(!r||r.writable||r.set)}}:(W2e={}.hasOwnProperty,G2e={}.toString,H2e={}.constructor.prototype,K7=a(function(e){var t=[];for(var r in e)W2e.call(e,r)&&t.push(r);return t},"ObjectKeys"),V2e=a(function(e,t){return{value:e[t]}},"ObjectGetDescriptor"),K2e=a(function(e,t,r){return e[t]=r.value,e},"ObjectDefineProperty"),Q2e=a(function(e){return e},"ObjectFreeze"),Y2e=a(function(e){try{return Object(e).constructor.prototype}catch{return H2e}},"ObjectGetPrototypeOf"),J2e=a(function(e){try{return G2e.call(e)==="[object Array]"}catch{return!1}},"ArrayIsArray"),Q7.exports={isArray:J2e,keys:K7,names:K7,defineProperty:K2e,getDescriptor:V2e,freeze:Q2e,getPrototypeOf:Y2e,isES5:V7,propertyIsWritable:function(){return!0}});var W2e,G2e,H2e,K7,V2e,K2e,Q2e,Y2e,J2e});var En=S((exports,module)=>{"use strict";var es5=Oh(),canEvaluate=typeof navigator>"u",errorObj={e:{}},tryCatchTarget,globalObject=typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:exports!==void 0?exports:null;function tryCatcher(){try{var e=tryCatchTarget;return tryCatchTarget=null,e.apply(this,arguments)}catch(t){return errorObj.e=t,errorObj}}a(tryCatcher,"tryCatcher");function tryCatch(e){return tryCatchTarget=e,tryCatcher}a(tryCatch,"tryCatch");var inherits=a(function(e,t){var r={}.hasOwnProperty;function n(){this.constructor=e,this.constructor$=t;for(var i in t.prototype)r.call(t.prototype,i)&&i.charAt(i.length-1)!=="$"&&(this[i+"$"]=t.prototype[i])}return a(n,"T"),n.prototype=t.prototype,e.prototype=new n,e.prototype},"inherits");function isPrimitive(e){return e==null||e===!0||e===!1||typeof e=="string"||typeof e=="number"}a(isPrimitive,"isPrimitive");function isObject(e){return typeof e=="function"||typeof e=="object"&&e!==null}a(isObject,"isObject");function maybeWrapAsError(e){return isPrimitive(e)?new Error(safeToString(e)):e}a(maybeWrapAsError,"maybeWrapAsError");function withAppended(e,t){var r=e.length,n=new Array(r+1),i;for(i=0;i<r;++i)n[i]=e[i];return n[i]=t,n}a(withAppended,"withAppended");function getDataPropertyOrDefault(e,t,r){if(es5.isES5){var n=Object.getOwnPropertyDescriptor(e,t);if(n!=null)return n.get==null&&n.set==null?n.value:r}else return{}.hasOwnProperty.call(e,t)?e[t]:void 0}a(getDataPropertyOrDefault,"getDataPropertyOrDefault");function notEnumerableProp(e,t,r){if(isPrimitive(e))return e;var n={value:r,configurable:!0,enumerable:!1,writable:!0};return es5.defineProperty(e,t,n),e}a(notEnumerableProp,"notEnumerableProp");function thrower(e){throw e}a(thrower,"thrower");var inheritedDataKeys=function(){var e=[Array.prototype,Object.prototype,Function.prototype],t=a(function(i){for(var o=0;o<e.length;++o)if(e[o]===i)return!0;return!1},"isExcludedProto");if(es5.isES5){var r=Object.getOwnPropertyNames;return function(i){for(var o=[],s=Object.create(null);i!=null&&!t(i);){var u;try{u=r(i)}catch{return o}for(var c=0;c<u.length;++c){var l=u[c];if(!s[l]){s[l]=!0;var f=Object.getOwnPropertyDescriptor(i,l);f!=null&&f.get==null&&f.set==null&&o.push(l)}}i=es5.getPrototypeOf(i)}return o}}else{var n={}.hasOwnProperty;return function(i){if(t(i))return[];var o=[];e:for(var s in i)if(n.call(i,s))o.push(s);else{for(var u=0;u<e.length;++u)if(n.call(e[u],s))continue e;o.push(s)}return o}}}(),thisAssignmentPattern=/this\s*\.\s*\S+\s*=/;function isClass(e){try{if(typeof e=="function"){var t=es5.names(e.prototype),r=es5.isES5&&t.length>1,n=t.length>0&&!(t.length===1&&t[0]==="constructor"),i=thisAssignmentPattern.test(e+"")&&es5.names(e).length>0;if(r||n||i)return!0}return!1}catch{return!1}}a(isClass,"isClass");function toFastProperties(obj){function FakeConstructor(){}a(FakeConstructor,"FakeConstructor"),FakeConstructor.prototype=obj;var receiver=new FakeConstructor;function ic(){return typeof receiver.foo}return a(ic,"ic"),ic(),ic(),obj;eval(obj)}a(toFastProperties,"toFastProperties");var rident=/^[a-z$_][a-z$_0-9]*$/i;function isIdentifier(e){return rident.test(e)}a(isIdentifier,"isIdentifier");function filledRange(e,t,r){for(var n=new Array(e),i=0;i<e;++i)n[i]=t+i+r;return n}a(filledRange,"filledRange");function safeToString(e){try{return e+""}catch{return"[no string representation]"}}a(safeToString,"safeToString");function isError(e){return e instanceof Error||e!==null&&typeof e=="object"&&typeof e.message=="string"&&typeof e.name=="string"}a(isError,"isError");function markAsOriginatingFromRejection(e){try{notEnumerableProp(e,"isOperational",!0)}catch{}}a(markAsOriginatingFromRejection,"markAsOriginatingFromRejection");function originatesFromRejection(e){return e==null?!1:e instanceof Error.__BluebirdErrorTypes__.OperationalError||e.isOperational===!0}a(originatesFromRejection,"originatesFromRejection");function canAttachTrace(e){return isError(e)&&es5.propertyIsWritable(e,"stack")}a(canAttachTrace,"canAttachTrace");var ensureErrorObject=function(){return"stack"in new Error?function(e){return canAttachTrace(e)?e:new Error(safeToString(e))}:function(e){if(canAttachTrace(e))return e;try{throw new Error(safeToString(e))}catch(t){return t}}}();function classString(e){return{}.toString.call(e)}a(classString,"classString");function copyDescriptors(e,t,r){for(var n=es5.names(e),i=0;i<n.length;++i){var o=n[i];if(r(o))try{es5.defineProperty(t,o,es5.getDescriptor(e,o))}catch{}}}a(copyDescriptors,"copyDescriptors");var asArray=a(function(e){return es5.isArray(e)?e:null},"asArray");typeof Symbol<"u"&&Symbol.iterator&&(ArrayFrom=typeof Array.from=="function"?function(e){return Array.from(e)}:function(e){for(var t=[],r=e[Symbol.iterator](),n;!(n=r.next()).done;)t.push(n.value);return t},asArray=a(function(e){return es5.isArray(e)?e:e!=null&&typeof e[Symbol.iterator]=="function"?ArrayFrom(e):null},"asArray"));var ArrayFrom,isNode=typeof process<"u"&&classString(process).toLowerCase()==="[object process]",hasEnvVariables=typeof process<"u"&&typeof process.env<"u";function env(e){return hasEnvVariables?process.env[e]:void 0}a(env,"env");function getNativePromise(){if(typeof Promise=="function")try{var e=new Promise(function(){});if(classString(e)==="[object Promise]")return Promise}catch{}}a(getNativePromise,"getNativePromise");var reflectHandler;function contextBind(e,t){if(e===null||typeof t!="function"||t===reflectHandler)return t;e.domain!==null&&(t=e.domain.bind(t));var r=e.async;if(r!==null){var n=t;t=a(function(){for(var i=arguments.length+2,o=new Array(i),s=2;s<i;++s)o[s]=arguments[s-2];return o[0]=n,o[1]=this,r.runInAsyncScope.apply(r,o)},"cb")}return t}a(contextBind,"contextBind");var ret={setReflectHandler:function(e){reflectHandler=e},isClass,isIdentifier,inheritedDataKeys,getDataPropertyOrDefault,thrower,isArray:es5.isArray,asArray,notEnumerableProp,isPrimitive,isObject,isError,canEvaluate,errorObj,tryCatch,inherits,withAppended,maybeWrapAsError,toFastProperties,filledRange,toString:safeToString,canAttachTrace,ensureErrorObject,originatesFromRejection,markAsOriginatingFromRejection,classString,copyDescriptors,isNode,hasEnvVariables,env,global:globalObject,getNativePromise,contextBind};ret.isRecentNode=ret.isNode&&function(){var e;return process.versions&&process.versions.node?e=process.versions.node.split(".").map(Number):process.version&&(e=process.version.split(".").map(Number)),e[0]===0&&e[1]>10||e[0]>0}();ret.nodeSupportsAsyncResource=ret.isNode&&function(){var e=!1;try{var t=require("async_hooks").AsyncResource;e=typeof t.prototype.runInAsyncScope=="function"}catch{e=!1}return e}();ret.isNode&&ret.toFastProperties(process);try{throw new Error}catch(e){ret.lastLineError=e}module.exports=ret});var rFe=S((Mnn,tFe)=>{"use strict";var J7=En(),by,UJt=a(function(){throw new Error(`No async scheduler available
146
146
 
147
147
  See http://goo.gl/MqrFmX
148
148
  `)},"noAsyncScheduler"),Y7=J7.getNativePromise();J7.isNode&&typeof MutationObserver>"u"?(X2e=global.setImmediate,Z2e=process.nextTick,by=J7.isRecentNode?function(e){X2e.call(global,e)}:function(e){Z2e.call(process,e)}):typeof Y7=="function"&&typeof Y7.resolve=="function"?(eFe=Y7.resolve(),by=a(function(e){eFe.then(e)},"schedule")):typeof MutationObserver<"u"&&!(typeof window<"u"&&window.navigator&&(window.navigator.standalone||window.cordova))&&"classList"in document.documentElement?by=function(){var e=document.createElement("div"),t={attributes:!0},r=!1,n=document.createElement("div"),i=new MutationObserver(function(){e.classList.toggle("foo"),r=!1});i.observe(n,t);var o=a(function(){r||(r=!0,n.classList.toggle("foo"))},"scheduleToggle");return a(function(u){var c=new MutationObserver(function(){c.disconnect(),u()});c.observe(e,t),o()},"schedule")}():typeof setImmediate<"u"?by=a(function(e){setImmediate(e)},"schedule"):typeof setTimeout<"u"?by=a(function(e){setTimeout(e,0)},"schedule"):by=UJt;var X2e,Z2e,eFe;tFe.exports=by});var iFe=S((qnn,nFe)=>{"use strict";function jJt(e,t,r,n,i){for(var o=0;o<i;++o)r[o+n]=e[o+t],e[o+t]=void 0}a(jJt,"arrayMove");function Ih(e){this._capacity=e,this._length=0,this._front=0}a(Ih,"Queue");Ih.prototype._willBeOverCapacity=function(e){return this._capacity<e};Ih.prototype._pushOne=function(e){var t=this.length();this._checkCapacity(t+1);var r=this._front+t&this._capacity-1;this[r]=e,this._length=t+1};Ih.prototype.push=function(e,t,r){var n=this.length()+3;if(this._willBeOverCapacity(n)){this._pushOne(e),this._pushOne(t),this._pushOne(r);return}var i=this._front+n-3;this._checkCapacity(n);var o=this._capacity-1;this[i+0&o]=e,this[i+1&o]=t,this[i+2&o]=r,this._length=n};Ih.prototype.shift=function(){var e=this._front,t=this[e];return this[e]=void 0,this._front=e+1&this._capacity-1,this._length--,t};Ih.prototype.length=function(){return this._length};Ih.prototype._checkCapacity=function(e){this._capacity<e&&this._resizeTo(this._capacity<<1)};Ih.prototype._resizeTo=function(e){var t=this._capacity;this._capacity=e;var r=this._front,n=this._length,i=r+n&t-1;jJt(this,0,this,t,i)};nFe.exports=Ih});var uFe=S((znn,X7)=>{"use strict";var sFe;try{throw new Error}catch(e){sFe=e}var MJt=rFe(),aFe=iFe();function Cu(){this._customScheduler=!1,this._isTickUsed=!1,this._lateQueue=new aFe(16),this._normalQueue=new aFe(16),this._haveDrainedQueues=!1;var e=this;this.drainQueues=function(){e._drainQueues()},this._schedule=MJt}a(Cu,"Async");Cu.prototype.setScheduler=function(e){var t=this._schedule;return this._schedule=e,this._customScheduler=!0,t};Cu.prototype.hasCustomScheduler=function(){return this._customScheduler};Cu.prototype.haveItemsQueued=function(){return this._isTickUsed||this._haveDrainedQueues};Cu.prototype.fatalError=function(e,t){t?(process.stderr.write("Fatal "+(e instanceof Error?e.stack:e)+`
@@ -500,7 +500,7 @@ $1`)};qO.parseAttributes=a(function(t){return Object.keys(t).map(function(r){var
500
500
 
501
501
  Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Nulla quis lorem ut libero malesuada feugiat. Proin eget tortor risus. Cras ultricies ligula sed magna dictum porta. Donec sollicitudin molestie malesuada. Pellentesque in ipsum id orci porta dapibus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Nulla quis lorem ut libero malesuada feugiat. Proin eget tortor risus.
502
502
 
503
- Curabitur aliquet quam id dui posuere blandit. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Pellentesque in ipsum id orci porta dapibus. Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Nulla quis lorem ut libero malesuada feugiat. Proin eget tortor risus. Cras ultricies ligula sed magna dictum porta. Donec sollicitudin molestie malesuada. Pellentesque in ipsum id orci porta dapibus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Nulla quis lorem ut libero malesuada feugiat. Proin eget tortor risus. Curabitur aliquet quam id dui posuere blandit. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui.`;UYe.exports=SSr});var Hte=S((MYe,BYe)=>{"use strict";var Ia=Va(),cb=BO(),nr=BYe.exports,xSr=jYe();nr.append=function(e,t){return typeof e=="string"&&typeof t=="string"?e+t:e};nr.camelcase=function(e){return typeof e!="string"?"":cb.changecase(e,function(t){return t.toUpperCase()})};nr.capitalize=function(e){return typeof e!="string"?"":e.charAt(0).toUpperCase()+e.slice(1)};nr.capitalizeAll=function(e){if(typeof e!="string")return"";if(Ia.isString(e))return e.replace(/\w\S*/g,function(t){return nr.capitalize(t)})};nr.center=function(e,t){if(typeof e!="string")return"";for(var r="",n=0;n<t;)r+="&nbsp;",n++;return r+e+r};nr.chop=function(e){return typeof e!="string"?"":cb.chop(e)};nr.dashcase=function(e){return typeof e!="string"?"":cb.changecase(e,function(t){return"-"+t})};nr.dotcase=function(e){return typeof e!="string"?"":cb.changecase(e,function(t){return"."+t})};nr.downcase=function(){return nr.lowercase.apply(this,arguments)};nr.ellipsis=function(e,t){if(Ia.isString(e))return e.length<=t?e:nr.truncate(e,t)+"\u2026"};nr.hyphenate=function(e){return typeof e!="string"?"":e.split(" ").join("-")};nr.isString=function(e){return typeof e=="string"};nr.lowercase=function(e){return Ia.isObject(e)&&e.fn?e.fn(this).toLowerCase():typeof e!="string"?"":e.toLowerCase()};nr.occurrences=function(e,t){if(typeof e!="string")return"";for(var r=t.length,n=0,i=0;(n=e.indexOf(t,n))>-1;)i++,n+=r;return i};nr.pascalcase=function(e){return typeof e!="string"?"":(e=cb.changecase(e,function(t){return t.toUpperCase()}),e.charAt(0).toUpperCase()+e.slice(1))};nr.pathcase=function(e){return typeof e!="string"?"":cb.changecase(e,function(t){return"/"+t})};nr.plusify=function(e,t){return typeof e!="string"?"":(Ia.isString(t)||(t=" "),e.split(t).join("+"))};nr.prepend=function(e,t){return typeof e=="string"&&typeof t=="string"?t+e:e};nr.raw=function(e){var t=e.fn(),r=Ia.options(this,e);if(r.escape!==!1)for(var n=0;(n=t.indexOf("{{",n))!==-1;)t[n-1]!=="\\"&&(t=t.slice(0,n)+"\\"+t.slice(n)),n+=3;return t};nr.remove=function(e,t){return typeof e!="string"?"":Ia.isString(t)?e.split(t).join(""):e};nr.removeFirst=function(e,t){return typeof e!="string"?"":Ia.isString(t)?e.replace(t,""):e};nr.replace=function(e,t,r){return typeof e!="string"?"":Ia.isString(t)?(Ia.isString(r)||(r=""),e.split(t).join(r)):e};nr.replaceFirst=function(e,t,r){return typeof e!="string"?"":Ia.isString(t)?(Ia.isString(r)||(r=""),e.replace(t,r)):e};nr.reverse=S_().reverse;nr.sentence=function(e){return typeof e!="string"?"":e.replace(/((?:\S[^\.\?\!]*)[\.\?\!]*)/g,function(t){return t.charAt(0).toUpperCase()+t.substr(1).toLowerCase()})};nr.snakecase=function(e){return typeof e!="string"?"":cb.changecase(e,function(t){return"_"+t})};nr.split=function(e,t){return typeof e!="string"?"":(Ia.isString(t)||(t=","),e.split(t))};nr.startsWith=function(e,t,r){var n=[].slice.call(arguments);return r=n.pop(),Ia.isString(t)&&t.indexOf(e)===0?r.fn(this):typeof r.inverse=="function"?r.inverse(this):""};nr.titleize=function(e){if(typeof e!="string")return"";for(var t=e.replace(/[- _]+/g," "),r=t.split(" "),n=r.length,i=[],o=0;n--;){var s=r[o++];i.push(MYe.capitalize(s))}return i.join(" ")};nr.trim=function(e){return typeof e=="string"?e.trim():""};nr.trimLeft=function(e){if(Ia.isString(e))return e.replace(/^\s+/,"")};nr.trimRight=function(e){if(Ia.isString(e))return e.replace(/\s+$/,"")};nr.truncate=function(e,t,r){if(Ia.isString(e))return typeof r!="string"&&(r=""),e.length>t?e.slice(0,t-r.length)+r:e};nr.truncateWords=function(e,t,r){if(Ia.isString(e)&&!isNaN(t)){typeof r!="string"&&(r="\u2026");var n=Number(t),i=e.split(/[ \t]/);if(n>=i.length)return e;i=i.slice(0,n);var o=i.join(" ").trim();return o+r}};nr.upcase=function(){return nr.uppercase.apply(this,arguments)};nr.uppercase=function(e){return Ia.isObject(e)&&e.fn?e.fn(this).toUpperCase():typeof e!="string"?"":e.toUpperCase()};nr.lorem=function(e){return(isNaN(e)||e<1||!e)&&(e=11),xSr.substring(0,e)}});var Kte=S((XAn,qYe)=>{"use strict";var Vte=require("url"),VO=Va(),TSr=require("querystring"),lb=qYe.exports;lb.encodeURI=function(e){if(VO.isString(e))return encodeURIComponent(e)};lb.escape=function(e){if(VO.isString(e))return TSr.escape(e)};lb.decodeURI=function(e){if(VO.isString(e))return decodeURIComponent(e)};lb.urlResolve=function(e,t){return Vte.resolve(e,t)};lb.urlParse=function(e){return Vte.parse(e)};lb.stripQuerystring=function(e){if(VO.isString(e))return e.split("?")[0]};lb.stripProtocol=function(e){if(VO.isString(e)){var t=Vte.parse(e);return t.protocol="",t.format()}}});var Qte=S((ZAn,$Ye)=>{"use strict";var ASr=require("uuid"),RSr=$Ye.exports;RSr.uuid=function(){return ASr.v4()}});var WYe=S((eRn,zYe)=>{"use strict";zYe.exports={array:S_(),code:EKe(),collection:FKe(),comparison:Ste(),html:tQe(),i18n:nQe(),inflection:oQe(),match:bYe(),math:zte(),misc:EYe(),number:Wte(),object:Jj(),path:NYe(),regex:Gte(),string:Hte(),url:Kte(),uuid:Qte()}});var GYe=S((tRn,R_)=>{"use strict";var KO=WYe();R_.exports=a(function(t,r){typeof t=="string"?t=[t]:Array.isArray(t)||(r=t,t=null),r=r||{};var n=r.handlebars||r.hbs||FO();if(R_.exports.handlebars=n,t)t.forEach(function(i){n.registerHelper(KO[i])});else for(let i in KO){let o=KO[i];n.registerHelper(o)}return n.helpers},"helpers");for(let e in KO){let t=KO[e];R_.exports[e]=function(r){r=r||{};var n=r.handlebars||r.hbs||FO();return R_.exports.handlebars=n,n.registerHelper(t),t}}R_.exports.utils=BO()});var TXe=S(Tn=>{"use strict";Object.defineProperty(Tn,"__esModule",{value:!0});Tn.InvalidRemoveOpPath=Tn.NoTarget=Tn.InvalidScimPatchRequest=Tn.NoPathInScimPatchOp=Tn.FilterArrayTargetNotFound=Tn.FilterOnEmptyArray=Tn.InvalidScimPatchOp=Tn.RemoveValueNotArray=Tn.RemoveValueNestedArrayNotSupported=Tn.InvalidScimRemoveValue=Tn.InvalidScimPatch=Tn.ScimError=void 0;var nI=class extends Error{static{a(this,"ScimError")}constructor(t){super(),this.scimCode=t}};Tn.ScimError=nI;var cm=class extends nI{static{a(this,"InvalidScimPatch")}constructor(t,r="invalidSyntax"){super(r),this.message=`Invalid SCIM Patch: ${t}`}};Tn.InvalidScimPatch=cm;var iI=class extends nI{static{a(this,"InvalidScimRemoveValue")}constructor(t,r="invalidSyntax"){super(r),this.message=`Invalid SCIM Remove Operation: ${t}`}};Tn.InvalidScimRemoveValue=iI;var Rre=class extends iI{static{a(this,"RemoveValueNestedArrayNotSupported")}constructor(){super("Invalid patch value, remove does not support arrays inside arrays.")}};Tn.RemoveValueNestedArrayNotSupported=Rre;var Ore=class extends iI{static{a(this,"RemoveValueNotArray")}constructor(){super("Remove with patch value is supported only for array properties.")}};Tn.RemoveValueNotArray=Ore;var aI=class extends cm{static{a(this,"InvalidScimPatchOp")}constructor(t){super(`${t}`,"invalidSyntax")}};Tn.InvalidScimPatchOp=aI;var Ire=class extends aI{static{a(this,"FilterOnEmptyArray")}constructor(t,r,n){super(`${t}`),this.attrName=r,this.valuePath=n}};Tn.FilterOnEmptyArray=Ire;var kre=class extends aI{static{a(this,"FilterArrayTargetNotFound")}constructor(t,r,n,i){super(`${t}`),this.attrName=r,this.valuePath=n,this.schema=i}};Tn.FilterArrayTargetNotFound=kre;var Cre=class extends cm{static{a(this,"NoPathInScimPatchOp")}constructor(){super('Missing path in "remove" patch operation',"noTarget")}};Tn.NoPathInScimPatchOp=Cre;var Dre=class extends cm{static{a(this,"InvalidScimPatchRequest")}constructor(t){super(`The SCIM patch request is invalid: ${t}`)}};Tn.InvalidScimPatchRequest=Dre;var Pre=class extends cm{static{a(this,"NoTarget")}constructor(t){super(`Target location is a multi-valued attribute for which a value selection filter (${t}) has been supplied and no record match was made.`,"noTarget")}};Tn.NoTarget=Pre;var Nre=class extends cm{static{a(this,"InvalidRemoveOpPath")}constructor(){super("Path specified in 'remove' operation doesn't exist")}};Tn.InvalidRemoveOpPath=Nre});var IXe=S(hf=>{"use strict";Object.defineProperty(hf,"__esModule",{value:!0});hf.parseExpression=hf.parseFilter=hf.Tokens=hf.tokenizer=void 0;var RXe={type:"EOT",literal:""};function V0r(e){let t=[],r=e,n=/^(?:(\s+)|(-?\d+(?:\.\d+)?(?:[eE][-+]?\d+)?(?![-\w._:\/\)\s]))|("(?:[^"\\]|\\.|\n)*")|([[()]|]\.?)|(\w[-\w._:\/%]*))/,i;for(;i=n.exec(r);){if(!(i[1]||i[0].length===0))if(i[2])t.push({literal:i[2],type:"Number"});else if(i[3]){let o=i[3].replace(/\\(?!")/g,"\\\\");t.push({literal:o,type:"Quoted"})}else i[4]?t.push({literal:i[4],type:"Bracket"}):i[5]&&t.push({literal:i[5],type:"Word"});r=r.substring(i.index+i[0].length)}if(r.length!==0)throw new Error(`unexpected token ${r}`);return t.push(RXe),t}a(V0r,"tokenizer");hf.tokenizer=V0r;var Lre=class{static{a(this,"Tokens")}getList(){return this.list.map((t,r)=>r==this.i?`[${t.literal}]`:t.literal)}peek(){return this.current||RXe}constructor(t){this.list=t,this.i=0,this.current=this.list[this.i]}forward(){return this.current=this.list[++this.i],this}shift(){let t=this.peek();return this.forward(),t}};hf.Tokens=Lre;var K0r=new Set(["eq","ne","co","sw","ew","gt","lt","ge","le"]),Q0r=new Set(["pr"]);function Fre(e){return EM(_M(e),e,wb.LOWEST)}a(Fre,"parseFilter");hf.parseFilter=Fre;function _M(e){let t=e.shift();if(t.literal=="("){let r=Fre(e),n=e.shift();if(n.literal!==")")throw new Error(`Unexpected token [${n.literal}(${n.type})] expected ')'`);return r}else if(t.literal.toLowerCase()=="not"){let r={op:"not",filter:_M(e)};return EM(r,e,wb.NOT)}else{if(t.type=="Word")return OXe(t,e);throw new Error(`Unexpected token ${t.literal} (${t.type})`)}}a(_M,"parseExpression");hf.parseExpression=_M;var wb;(function(e){e[e.LOWEST=1]="LOWEST",e[e.OR=2]="OR",e[e.AND=3]="AND",e[e.NOT=4]="NOT"})(wb||(wb={}));var AXe={or:wb.OR,and:wb.AND,not:wb.NOT};function EM(e,t,r){let n=t.peek().literal.toLowerCase(),i=AXe[n];if(!i||r>=i)return e;let o=[e];for(;t.peek().literal.toLowerCase()===n;){let s=_M(t.forward()),u=t.peek().literal.toLowerCase();AXe[u]>i&&(s=EM(s,t,i)),o.push(s)}return EM({op:n,filters:o},t,r)}a(EM,"parseInxif");function OXe(e,t){if(e.type!=="Word")throw new Error(`Unexpected token ${e.literal} expected Word`);let r=e.literal,n=t.shift(),i=n.literal.toLowerCase();if(K0r.has(i)){let o=Y0r(t);return{op:i,attrPath:r,compValue:o}}else{if(Q0r.has(i))return{op:i,attrPath:r};if(i==="["){let o=Fre(t),s=t.shift();if(s.literal[0]!=="]")throw new Error(`Unexpected token ${s.literal} expected ']'`);let u={op:"[]",attrPath:r,valFilter:o};if(s.literal[1]!=="."||t.peek().type!=="Word")return u;let c=t.shift();return c.literal=`${r}.${c.literal}`,{op:"and",filters:[u,OXe(c,t)]}}else throw new Error(`Unexpected token ${r} ${n.literal} as valFilter operator`)}}a(OXe,"readValFilter");function Y0r(e){let t=e.shift();try{let r=JSON.parse(t.literal);if(r===null||typeof r=="string"||typeof r=="number"||typeof r=="boolean")return r;throw new Error(`${t.literal} is ${typeof r} (un supported value)`)}catch{throw new Error(`[${t.literal}(${t.type})] is not json`)}}a(Y0r,"parseCompValue")});var kXe=S(xM=>{"use strict";Object.defineProperty(xM,"__esModule",{value:!0});xM.Tester=void 0;var SM=class{static{a(this,"Tester")}constructor(){}test(t,r){switch(r.op){case"or":return r.filters.some(n=>this.test(t,n));case"and":return r.filters.every(n=>this.test(t,n));case"not":return!this.test(t,r.filter);case"[]":return this.attrTest(this.attrPath(r.attrPath),t,n=>this.test(n,r.valFilter));case"pr":return this.attrTest(this.attrPath(r.attrPath),t,n=>this[r.op](n));case"eq":case"ne":case"co":case"sw":case"ew":case"gt":case"lt":case"ge":case"le":return this.attrTest(this.attrPath(r.attrPath),t,n=>this[r.op](n,r.compValue))}}attrPath(t){let r=t.lastIndexOf(":");return r===-1?t.split("."):[t.substring(0,r),...t.substring(r+1).split(".")]}attrTest(t,r,n){if(t.length===0)return n(r);if(typeof r!="object"||r===null)return!1;if(Array.isArray(r))return r.some(s=>this.attrTest(t,s,n));let i=t[0].toLowerCase(),o=Object.keys(r).find(s=>s.toLowerCase()===i);return o===void 0?!1:this.attrTest(t.slice(1),r[o],n)}pr(t,r){return t!==void 0}eq(t,r){return t===r}ne(t,r){return t!==r}gt(t,r){return r!==null&&t>r}lt(t,r){return r!==null&&t<r}le(t,r){return r!==null&&t<=r}ge(t,r){return r!==null&&t>=r}sw(t,r){return r!==null&&t!==null&&t.toString().startsWith(r.toString())}ew(t,r){return r!==null&&t!==null&&t.toString().endsWith(r.toString())}co(t,r){return typeof t=="object"||r===null?t==r:(typeof t!="string"&&(t=t.toString()),t.indexOf(r.toString())!==-1)}};xM.Tester=SM;SM.UNDEF=Symbol("undefined")});var CXe=S(mf=>{"use strict";Object.defineProperty(mf,"__esModule",{value:!0});mf.log=mf.valfilter=void 0;var J0r=a((e,t)=>{switch(t&&"attrPath"in e&&(e=Object.assign(Object.assign({},e),{attrPath:`${t}.${e.attrPath}`})),e.op){case"and":case"or":return Object.assign(Object.assign({},e),{filters:e.filters.map(r=>(0,mf.valfilter)(r,t))});case"not":return Object.assign(Object.assign({},e),{filter:(0,mf.valfilter)(e,t)});case"[]":return(0,mf.valfilter)(e.valFilter,e.attrPath)}return e},"valfilter");mf.valfilter=J0r;var X0r=a(e=>{switch(e.op){case"and":case"or":let t=e.filters.map(mf.log),r=[];return t.forEach(n=>{n.op==e.op?n.filters.forEach(i=>r.push(i)):r.push(n)}),Object.assign(Object.assign({},e),{filters:r})}return e},"log");mf.log=X0r});var DXe=S(TM=>{"use strict";Object.defineProperty(TM,"__esModule",{value:!0});TM.stringify=void 0;function oI(e,t=!1){let r="";switch(e.op){case"eq":case"ne":case"co":case"sw":case"ew":case"gt":case"lt":case"ge":case"le":r=`${e.attrPath} ${e.op} ${JSON.stringify(e.compValue)}`;break;case"pr":r=`${e.attrPath} ${e.op}`;break;case"or":let n=e.filters.map(i=>oI(i)).join(` ${e.op} `);r=t?`(${n})`:n;break;case"and":r=e.filters.map(i=>oI(i,!0)).join(` ${e.op} `);break;case"not":r=`${e.op} (${oI(e.filter)})`;break;case"[]":r=`${e.attrPath}[${oI(e.valFilter)}]`;break}return r}a(oI,"stringify");TM.stringify=oI});var AM=S(tu=>{"use strict";Object.defineProperty(tu,"__esModule",{value:!0});tu.flatten=tu.parse=tu.filter=tu.Tester=tu.stringify=void 0;var Ure=IXe(),Z0r=kXe(),PXe=CXe(),exr=DXe();Object.defineProperty(tu,"stringify",{enumerable:!0,get:function(){return exr.stringify}});tu.Tester=Z0r.Tester;function txr(e){let t=new tu.Tester;return r=>t.test(r,e)}a(txr,"filter");tu.filter=txr;function rxr(e){let t=new Ure.Tokens(Ure.tokenizer(e)),r=Ure.parseFilter(t);if(t.peek().type!=="EOT")throw new Error(`unexpected EOT ${t.getList()}`);return r}a(rxr,"parse");tu.parse=rxr;function nxr(e){return PXe.log(PXe.valfilter(e))}a(nxr,"flatten");tu.flatten=nxr});var Vre=S(zn=>{"use strict";Object.defineProperty(zn,"__esModule",{value:!0});zn.PATCH_OPERATION_SCHEMA=zn.InvalidScimRemoveValue=zn.RemoveValueNotArray=zn.RemoveValueNestedArrayNotSupported=zn.NoTarget=zn.InvalidScimPatchRequest=zn.NoPathInScimPatchOp=zn.InvalidScimPatchOp=zn.InvalidScimPatch=zn.ScimError=void 0;zn.patchBodyValidation=uxr;zn.scimPatch=cxr;var Hr=TXe();Object.defineProperty(zn,"ScimError",{enumerable:!0,get:function(){return Hr.ScimError}});Object.defineProperty(zn,"InvalidScimPatch",{enumerable:!0,get:function(){return Hr.InvalidScimPatch}});Object.defineProperty(zn,"InvalidScimPatchOp",{enumerable:!0,get:function(){return Hr.InvalidScimPatchOp}});Object.defineProperty(zn,"NoPathInScimPatchOp",{enumerable:!0,get:function(){return Hr.NoPathInScimPatchOp}});Object.defineProperty(zn,"InvalidScimPatchRequest",{enumerable:!0,get:function(){return Hr.InvalidScimPatchRequest}});Object.defineProperty(zn,"NoTarget",{enumerable:!0,get:function(){return Hr.NoTarget}});Object.defineProperty(zn,"RemoveValueNestedArrayNotSupported",{enumerable:!0,get:function(){return Hr.RemoveValueNestedArrayNotSupported}});Object.defineProperty(zn,"RemoveValueNotArray",{enumerable:!0,get:function(){return Hr.RemoveValueNotArray}});Object.defineProperty(zn,"InvalidScimRemoveValue",{enumerable:!0,get:function(){return Hr.InvalidScimRemoveValue}});var jre=AM(),Mre=kR(),$re=/(\[|\])/,ixr=/^(.+)\[(.+)\]$/,NXe=/(?!\B"[^[]*)\.(?![^\]]*"\B)/g,axr=["remove","add","replace"],oxr="urn:ietf:params:scim:schemas:core:2.0:User",sxr="urn:ietf:params:scim:schemas:core:2.0:Group";zn.PATCH_OPERATION_SCHEMA="urn:ietf:params:scim:api:messages:2.0:PatchOp";function uxr(e){if(!e.schemas||!e.schemas.includes(zn.PATCH_OPERATION_SCHEMA))throw new Hr.InvalidScimPatchRequest("Missing schemas.");if(!Array.isArray(e.Operations))throw new Hr.InvalidScimPatchRequest("Operations should be an array.");if(!e.Operations||e.Operations.length<=0)throw new Hr.InvalidScimPatchRequest("Missing operations.");e.Operations.forEach(zre)}a(uxr,"patchBodyValidation");function cxr(e,t,r={mutateDocument:!0,treatMissingAsAdd:!0}){return r.mutateDocument||(e=JSON.parse(JSON.stringify(e))),t.reduce((n,i)=>{switch(i.op){case"remove":case"Remove":return lxr(n,i);case"add":case"Add":case"replace":case"Replace":return FXe(n,i,!!r.treatMissingAsAdd);default:throw new Hr.InvalidScimPatchRequest(`Operator is invalid for SCIM patch request. ${i}`)}},e)}a(cxr,"scimPatch");function zre(e){if(typeof e.op!="string"||!hxr(e.op))throw new Hr.InvalidScimPatchRequest(`Invalid op "${e.op}" in the request.`);if(e.op==="remove"&&!e.path)throw new Hr.NoPathInScimPatchOp;if(uI(e.op)&&!("value"in e))throw new Hr.InvalidScimPatchRequest(`The operation ${e.op} MUST contain a "value" member whose content specifies the value to be added`);if(e.path&&typeof e.path!="string")throw new Hr.InvalidScimPatchRequest("Path is supposed to be a string")}a(zre,"validatePatchOperation");function Wre(e){let t=e.lastIndexOf(":");if(t<0)return e.split(NXe);let r=e.substring(0,t),n=e.substring(t+1).split(NXe);switch(r){case sxr:case oxr:break;default:n.unshift(r);break}return n}a(Wre,"resolvePaths");function lxr(e,t){let r;zre(t);let n=Wre(t.path);try{r=UXe(e,n,{isRemoveOp:!0})}catch(o){if(o instanceof Hr.InvalidRemoveOpPath)return e;throw o}let i=n[n.length-1];if(!$re.test(i)){for(let o of r)t.value?o[i]=dxr(o[i],t.value):delete o[i];return e}for(let o of r){let{attrName:s,valuePath:u,array:c}=Gre(i,o);o[s]=Hre(c,u,{excludeIfMatchFilter:!0}),o[s].length===0&&delete o[s]}return e}a(lxr,"applyRemoveOperation");function FXe(e,t,r){var n;let i;if(zre(t),!t.path)return sI(e,t);let o=Wre(t.path),s=o[o.length-1];try{i=UXe(e,o)}catch(u){if(u instanceof Hr.FilterOnEmptyArray||u instanceof Hr.FilterArrayTargetNotFound){let c=u.schema,l=(0,jre.parse)(u.valuePath);if(uI(t.op)&&"compValue"in l&&l.compValue!==void 0&&l.op==="eq"){let f={};return f[l.attrPath]=l.compValue,f[s]=sI(void 0,t,!0),c[u.attrName]=[...(n=c[u.attrName])!==null&&n!==void 0?n:[],f],e}else if(r&&Bre(t.op)&&"compValue"in l&&l.compValue!==void 0&&l.op==="eq")return FXe(e,Object.assign(Object.assign({},t),{op:"add"}),!1);throw new Hr.NoTarget(t.path)}throw u}if(!$re.test(s)){for(let u of i)u[s]=sI(u[s],t);return e}for(let u of i){let{valuePath:c,array:l}=Gre(s,u),f=Hre(l,c);if(Bre(t.op)&&f.length===0)throw new Hr.NoTarget(t.path);for(let p=0;p<l.length;p++)f.includes(l[p])&&(l[p]=sI(l[p],t))}return e}a(FXe,"applyAddOrReplaceOperation");function Gre(e,t){let r=e.match(ixr);if(!r)throw new Hr.InvalidScimPatchOp(`This part of the path ${e} is invalid for SCIM patch request.`);let[,n,i]=r,o=t[n];if(!Array.isArray(o))throw new Hr.FilterOnEmptyArray("Impossible to search on a mono valued attribute.",n,i);return new qre(n,i,o)}a(Gre,"extractArray");function UXe(e,t,r={}){let n=[e];for(let i=0;i<t.length-1;i++){let o=t[i];$re.test(o)?n=n.flatMap(s=>{try{let{attrName:u,valuePath:c,array:l}=Gre(o,s),f=Hre(l,c);if(f.length===0)throw new Hr.FilterArrayTargetNotFound("A matching array entry was not found using the supplied filter.",u,c,s);return f}catch(u){throw u instanceof Hr.FilterOnEmptyArray&&(u.schema=s),u}}):n=n.flatMap(s=>{if(!s[o]&&r.isRemoveOp)throw new Hr.InvalidRemoveOpPath;return s[o]||(s[o]={})})}return n}a(UXe,"navigate");function sI(e,t,r){if(Array.isArray(e)){if(Array.isArray(t.value)){if(uI(t.op)){let i=t.value.filter(o=>!LXe(e,o));return e.concat(i)}return t.value}if(Bre(t.op))return e.map(i=>sI(i,t,r));let n=e;return LXe(n,t.value)||n.push(t.value),n}return e!==null&&typeof e=="object"?fxr(e,t,r):t.value}a(sI,"addOrReplaceAttribute");function fxr(e,t,r){if(typeof t.value!="object"){if(uI(t.op)&&!r)throw new Hr.InvalidScimPatchOp("Invalid patch query.");return t.value}for(let[n,i]of Object.entries(t.value))pxr(e,Wre(n),i,t.op);return e}a(fxr,"addOrReplaceObjectAttribute");function pxr(e,t,r,n){let i=t.length-1;for(let s=0;s<i;++s){let u=t[s];u in e||(e[u]={}),e=e[u]}let o=e[t[i]];if(uI(n)&&Array.isArray(o)){if(Array.isArray(r)){e[t[i]]=[...o,...r];return}e[t[i]]=[...o,r];return}e[t[i]]=r}a(pxr,"assign");function Hre(e,t,r={}){try{let n=(0,jre.filter)((0,jre.parse)(t));return e.filter(i=>r.excludeIfMatchFilter?!n(i):n(i))}catch(n){throw new Hr.InvalidScimPatchOp(`${n}`)}}a(Hre,"filterWithQuery");function dxr(e,t){if(!Array.isArray(e))throw new Hr.RemoveValueNotArray;return Array.isArray(t)?(t.forEach(r=>{if(Array.isArray(r))throw new Hr.RemoveValueNestedArrayNotSupported;e=e.filter(n=>!Mre(r,n))}),e):e.filter(r=>!Mre(t,r))}a(dxr,"removeWithPatchValue");function LXe(e,t){return e.some(r=>Mre(t,r))}a(LXe,"deepIncludes");function hxr(e){return axr.includes(e.toLowerCase())}a(hxr,"isValidOperation");function uI(e){return e!==void 0&&e.toLowerCase()==="add"}a(uI,"isAddOperation");function Bre(e){return e!==void 0&&e.toLowerCase()==="replace"}a(Bre,"isReplaceOperation");var qre=class{static{a(this,"ScimSearchQuery")}constructor(t,r,n){this.attrName=t,this.valuePath=r,this.array=n}}});var Qrt={};oe(Qrt,{execute:()=>w1r,executeInThread:()=>Mae,removeStalled:()=>Lae});module.exports=QB(Qrt);var ja={};oe(ja,{analyticsEnabled:()=>dL,generateConfigID:()=>QL,getAIConfig:()=>gXt,getConfig:()=>Du,getDefaultGoogleConfig:()=>hK,getGoogleConfig:()=>YL,getGoogleDatasourceConfig:()=>gK,getOIDCConfig:()=>dXt,getOIDCConfigById:()=>yK,getOIDCLogosDoc:()=>fXt,getPlatformUrl:()=>jA,getRecaptchaConfig:()=>yXt,getSCIMConfig:()=>mXt,getSMTPConfig:()=>hXt,getSMTPConfigDoc:()=>OUe,getSettingsConfig:()=>mK,getSettingsConfigDoc:()=>Jw,save:()=>cXt});var kf=(r=>(r.ASCENDING="ascending",r.DESCENDING="descending",r))(kf||{});var Er=(D=>(D.USER_CREATED="user:created",D.USER_UPDATED="user:updated",D.USER_DELETED="user:deleted",D.USER_ONBOARDING_COMPLETE="user:onboarding:complete",D.USER_PERMISSION_ADMIN_ASSIGNED="user:admin:assigned",D.USER_PERMISSION_ADMIN_REMOVED="user:admin:removed",D.USER_PERMISSION_BUILDER_ASSIGNED="user:builder:assigned",D.USER_PERMISSION_BUILDER_REMOVED="user:builder:removed",D.USER_INVITED="user:invited",D.USER_INVITED_ACCEPTED="user:invite:accepted",D.USER_PASSWORD_FORCE_RESET="user:password:force:reset",D.USER_PASSWORD_UPDATED="user:password:updated",D.USER_PASSWORD_RESET_REQUESTED="user:password:reset:requested",D.USER_PASSWORD_RESET="user:password:reset",D.USER_DATA_COLLABORATION="user:data:collaboration",D.EMAIL_SMTP_CREATED="email:smtp:created",D.EMAIL_SMTP_UPDATED="email:smtp:updated",D.AI_CONFIG_CREATED="ai:config:created",D.AI_CONFIG_UPDATED="ai:config:updated",D.AUTH_SSO_CREATED="auth:sso:created",D.AUTH_SSO_UPDATED="auth:sso:updated",D.AUTH_SSO_ACTIVATED="auth:sso:activated",D.AUTH_SSO_DEACTIVATED="auth:sso:deactivated",D.AUTH_LOGIN="auth:login",D.AUTH_LOGOUT="auth:logout",D.ORG_NAME_UPDATED="org:info:name:updated",D.ORG_LOGO_UPDATED="org:info:logo:updated",D.ORG_PLATFORM_URL_UPDATED="org:platformurl:updated",D.INSTALLATION_VERSION_CHECKED="installation:version:checked",D.INSTALLATION_VERSION_UPGRADED="installation:version:upgraded",D.INSTALLATION_VERSION_DOWNGRADED="installation:version:downgraded",D.INSTALLATION_FIRST_STARTUP="installation:firstStartup",D.ANALYTICS_OPT_OUT="analytics:opt:out",D.ANALYTICS_OPT_IN="analytics:opt:in",D.WORKSPACE_CREATED="app:created",D.WORKSPACE_UPDATED="app:updated",D.WORKSPACE_DELETED="app:deleted",D.WORKSPACE_DUPLICATED="app:duplicated",D.WORKSPACE_PUBLISHED="app:published",D.WORKSPACE_UNPUBLISHED="app:unpublished",D.WORKSPACE_TEMPLATE_IMPORTED="app:template:imported",D.WORKSPACE_FILE_IMPORTED="app:file:imported",D.WORKSPACE_APP_VERSION_UPDATED="app:version:updated",D.WORKSPACE_APP_VERSION_REVERTED="app:version:reverted",D.WORKSPACE_REVERTED="app:reverted",D.WORKSPACE_EXPORTED="app:exported",D.ROLE_CREATED="role:created",D.ROLE_UPDATED="role:updated",D.ROLE_DELETED="role:deleted",D.ROLE_ASSIGNED="role:assigned",D.ROLE_UNASSIGNED="role:unassigned",D.SERVED_BUILDER="served:builder",D.SERVED_APP="served:app",D.SERVED_APP_PREVIEW="served:app:preview",D.DATASOURCE_CREATED="datasource:created",D.DATASOURCE_UPDATED="datasource:updated",D.DATASOURCE_DELETED="datasource:deleted",D.QUERY_CREATED="query:created",D.QUERY_UPDATED="query:updated",D.QUERY_DELETED="query:deleted",D.QUERY_IMPORT="query:import",D.QUERIES_RUN="queries:run",D.QUERY_PREVIEWED="query:previewed",D.TABLE_CREATED="table:created",D.TABLE_UPDATED="table:updated",D.TABLE_DELETED="table:deleted",D.TABLE_EXPORTED="table:exported",D.TABLE_IMPORTED="table:imported",D.TABLE_DATA_IMPORTED="table:data:imported",D.VIEW_CREATED="view:created",D.VIEW_UPDATED="view:updated",D.VIEW_DELETED="view:deleted",D.VIEW_EXPORTED="view:exported",D.VIEW_FILTER_CREATED="view:filter:created",D.VIEW_FILTER_UPDATED="view:filter:updated",D.VIEW_FILTER_DELETED="view:filter:deleted",D.VIEW_CALCULATION_CREATED="view:calculation:created",D.VIEW_CALCULATION_UPDATED="view:calculation:updated",D.VIEW_CALCULATION_DELETED="view:calculation:deleted",D.VIEW_JOIN_CREATED="view:join:created",D.ROWS_CREATED="rows:created",D.ROWS_IMPORTED="rows:imported",D.COMPONENT_CREATED="component:created",D.COMPONENT_DELETED="component:deleted",D.SCREEN_CREATED="screen:created",D.SCREEN_DELETED="screen:deleted",D.LAYOUT_CREATED="layout:created",D.LAYOUT_DELETED="layout:deleted",D.AUTOMATION_CREATED="automation:created",D.AUTOMATION_DELETED="automation:deleted",D.AUTOMATION_TESTED="automation:tested",D.AUTOMATIONS_RUN="automations:run",D.AUTOMATION_STEP_CREATED="automation:step:created",D.AUTOMATION_STEP_DELETED="automation:step:deleted",D.AUTOMATION_TRIGGER_UPDATED="automation:trigger:updated",D.LICENSE_PLAN_CHANGED="license:plan:changed",D.LICENSE_ACTIVATED="license:activated",D.LICENSE_PAYMENT_FAILED="license:payment:failed",D.LICENSE_PAYMENT_RECOVERED="license:payment:recovered",D.LICENSE_CHECKOUT_OPENED="license:checkout:opened",D.LICENSE_CHECKOUT_SUCCESS="license:checkout:success",D.LICENSE_PORTAL_OPENED="license:portal:opened",D.ACCOUNT_CREATED="account:created",D.ACCOUNT_DELETED="account:deleted",D.ACCOUNT_VERIFIED="account:verified",D.APP_BACKFILL_SUCCEEDED="app:backfill:succeeded",D.APP_BACKFILL_FAILED="app:backfill:failed",D.TENANT_BACKFILL_SUCCEEDED="tenant:backfill:succeeded",D.TENANT_BACKFILL_FAILED="tenant:backfill:failed",D.INSTALLATION_BACKFILL_SUCCEEDED="installation:backfill:succeeded",D.INSTALLATION_BACKFILL_FAILED="installation:backfill:failed",D.USER_GROUP_CREATED="user_group:created",D.USER_GROUP_UPDATED="user_group:updated",D.USER_GROUP_DELETED="user_group:deleted",D.USER_GROUP_USERS_ADDED="user_group:user_added",D.USER_GROUP_USERS_REMOVED="user_group:users_deleted",D.USER_GROUP_PERMISSIONS_EDITED="user_group:permissions_edited",D.USER_GROUP_ONBOARDING="user_group:onboarding_added",D.PLUGIN_INIT="plugin:init",D.PLUGIN_IMPORTED="plugin:imported",D.PLUGIN_DELETED="plugin:deleted",D.APP_BACKUP_RESTORED="app:backup:restored",D.APP_BACKUP_TRIGGERED="app:backup:triggered",D.ENVIRONMENT_VARIABLE_CREATED="environment_variable:created",D.ENVIRONMENT_VARIABLE_DELETED="environment_variable:deleted",D.ENVIRONMENT_VARIABLE_UPGRADE_PANEL_OPENED="environment_variable:upgrade_panel_opened",D.AUDIT_LOGS_FILTERED="audit_log:filtered",D.AUDIT_LOGS_DOWNLOADED="audit_log:downloaded",D.ROW_ACTION_CREATED="row_action:created",D.ACTION_AUTOMATION_STEP_EXECUTED="action:automation_step:executed",D.ACTION_CRUD_EXECUTED="action:crud:executed",D.ACTION_AI_AGENT_EXECUTED="action:ai_agent:executed",D.WORKSPACE_APP_CREATED="workspace_app:created",D.WORKSPACE_APP_UPDATED="workspace_app:updated",D.WORKSPACE_APP_DELETED="workspace_app:deleted",D))(Er||{}),Qoe=["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"],Yoe=["automation:deleted","workspace_app:deleted","datasource:deleted","table:deleted","query:deleted","view:deleted"],Joe=[...Qoe,...Yoe],jb={"user:created":'User "{{ email }}" created{{#if viaScim}} via SCIM{{/if}}',"user:updated":'User "{{ email }}" updated{{#if viaScim}} via SCIM{{/if}}',"user:deleted":'User "{{ email }}" deleted{{#if viaScim}} via SCIM{{/if}}',"user:admin:assigned":'User "{{ email }}" admin role assigned',"user:admin:removed":'User "{{ email }}" admin role removed',"user:builder:assigned":'User "{{ email }}" builder role assigned',"user:builder:removed":'User "{{ email }}" builder role removed',"user:invited":'User "{{ email }}" invited',"user:invite:accepted":'User "{{ email }}" accepted invite',"user:password:updated":'User "{{ email }}" password updated',"user:password:reset:requested":'User "{{ email }}" password reset requested',"user:password:reset":'User "{{ email }}" password reset',"user_group:created":'User group "{{ name }}" created{{#if viaScim}} via SCIM{{/if}}',"user_group:updated":'User group "{{ name }}" updated{{#if viaScim}} via SCIM{{/if}}',"user_group:deleted":'User group "{{ name }}" deleted{{#if viaScim}} via SCIM{{/if}}',"user_group:user_added":'User group "{{ name }}" {{ count }} users added{{#if viaScim}} via SCIM{{/if}}',"user_group:users_deleted":'User group "{{ name }}" {{ count }} users removed{{#if viaScim}} via SCIM{{/if}}',"user_group:permissions_edited":'User group "{{ name }}" permissions edited',"user:password:force:reset":void 0,"user_group:onboarding_added":void 0,"user:onboarding:complete":void 0,"user:data:collaboration":void 0,"email:smtp:created":"Email configuration created","email:smtp:updated":"Email configuration updated","ai:config:created":"AI configuration created","ai:config:updated":"AI configuration updated","auth:sso:created":"SSO configuration created","auth:sso:updated":"SSO configuration updated","auth:sso:activated":"SSO configuration activated","auth:sso:deactivated":"SSO configuration deactivated","auth:login":'User "{{ email }}" logged in',"auth:logout":'User "{{ email }}" logged out',"org:info:name:updated":"Organisation name updated","org:info:logo:updated":"Organisation logo updated","org:platformurl:updated":"Organisation platform URL updated","app:created":'App "{{ name }}" created',"app:updated":'App "{{ name }}" updated',"app:deleted":'App "{{ name }}" deleted',"app:duplicated":'App "{{ name }}" duplicated',"app:published":'App "{{ name }}" published',"app:unpublished":'App "{{ name }}" unpublished',"app:template:imported":'App "{{ name }}" template imported',"app:file:imported":'App "{{ name }}" file imported',"app:version:updated":'App "{{ name }}" version updated',"app:version:reverted":'App "{{ name }}" version reverted',"app:reverted":'App "{{ name }}" reverted',"app:exported":'App "{{ name }}" exported',"app:backup:restored":'App backup "{{ name }}" restored',"app:backup:triggered":'App backup "{{ name }}" triggered',"datasource:created":"Datasource created","datasource:updated":"Datasource updated","datasource:deleted":"Datasource deleted","query:created":"Query created","query:updated":"Query updated","query:deleted":"Query deleted","query:import":"Query import","queries:run":void 0,"query:previewed":void 0,"table:created":'Table "{{ name }}" created',"table:updated":'Table "{{ name }}" updated',"table:deleted":'Table "{{ name }}" deleted',"table:exported":'Table "{{ name }}" exported',"table:imported":'Table "{{ name }}" imported',"table:data:imported":"Data imported to table","rows:created":"Rows created","rows:imported":"Rows imported","automation:created":'Automation "{{ name }}" created',"automation:deleted":'Automation "{{ name }}" deleted',"automation:step:created":'Automation "{{ name }}" step added',"automation:step:deleted":'Automation "{{ name }}" step removed',"automation:tested":void 0,"automations:run":void 0,"automation:trigger:updated":void 0,"screen:created":'Screen "{{ name }}" created',"screen:deleted":'Screen "{{ name }}" deleted',"component:created":"Component created","component:deleted":"Component deleted","environment_variable:created":"Environment variable created","environment_variable:deleted":"Environment variable deleted","environment_variable:upgrade_panel_opened":void 0,"plugin:imported":"Plugin imported","plugin:deleted":"Plugin deleted","plugin:init":void 0,"action:automation_step:executed":void 0,"action:crud:executed":void 0,"action:ai_agent:executed":void 0,"role:created":void 0,"role:updated":void 0,"role:deleted":void 0,"role:assigned":void 0,"role:unassigned":void 0,"license:plan:changed":void 0,"license:activated":void 0,"license:payment:failed":void 0,"license:payment:recovered":void 0,"license:checkout:opened":void 0,"license:checkout:success":void 0,"license:portal:opened":void 0,"account:created":void 0,"account:deleted":void 0,"account:verified":void 0,"app:backfill:succeeded":void 0,"app:backfill:failed":void 0,"tenant:backfill:succeeded":void 0,"tenant:backfill:failed":void 0,"installation:backfill:succeeded":void 0,"installation:backfill:failed":void 0,"layout:created":void 0,"layout:deleted":void 0,"view:created":void 0,"view:updated":void 0,"view:deleted":void 0,"view:exported":void 0,"view:filter:created":void 0,"view:filter:updated":void 0,"view:filter:deleted":void 0,"view:calculation:created":void 0,"view:calculation:updated":void 0,"view:calculation:deleted":void 0,"view:join:created":void 0,"served:builder":void 0,"served:app":void 0,"served:app:preview":void 0,"analytics:opt:out":void 0,"analytics:opt:in":void 0,"installation:version:checked":void 0,"installation:version:upgraded":void 0,"installation:version:downgraded":void 0,"installation:firstStartup":void 0,"audit_log:filtered":void 0,"audit_log:downloaded":void 0,"row_action:created":void 0,"workspace_app:created":void 0,"workspace_app:deleted":void 0,"workspace_app:updated":void 0};var Xoe=a((e,t,r)=>e==="usage"&&t==="static","isStaticQuota"),Zoe=a((e,t,r)=>e==="usage"&&t==="monthly","isMonthlyQuota"),ese=a((e,t)=>e==="constant","isConstantQuota");var _m="--secret-value--";var Ki=(n=>(n.SQL="sql",n.JSON="json",n.FIELDS="fields",n))(Ki||{}),Pi=(d=>(d.STRING="string",d.CODE="code",d.LONGFORM="longForm",d.BOOLEAN="boolean",d.NUMBER="number",d.PASSWORD="password",d.LIST="list",d.OBJECT="object",d.JSON="json",d.FILE="file",d.FIELD_GROUP="fieldGroup",d.SELECT="select",d))(Pi||{}),Ya=(b=>(b.AIRTABLE="AIRTABLE",b.ARANGODB="ARANGODB",b.BUDIBASE="BUDIBASE",b.COUCHDB="COUCHDB",b.DYNAMODB="DYNAMODB",b.ELASTICSEARCH="ELASTICSEARCH",b.FIRESTORE="FIRESTORE",b.GOOGLE_SHEETS="GOOGLE_SHEETS",b.MONGODB="MONGODB",b.MYSQL="MYSQL",b.ORACLE="ORACLE",b.POSTGRES="POSTGRES",b.REDIS="REDIS",b.REST="REST",b.S3="S3",b.SNOWFLAKE="SNOWFLAKE",b.SQL_SERVER="SQL_SERVER",b))(Ya||{});var ma=(n=>(n.CONNECTION_CHECKING="connection",n.FETCH_TABLE_NAMES="fetch_table_names",n.EXPORT_SCHEMA="export_schema",n))(ma||{});var tse=te(require("lodash/isPlainObject"));var Sm=(s=>(s.EQUAL="equal",s.NOT_EQUAL="notEqual",s.EMPTY="empty",s.NOT_EMPTY="notEmpty",s.FUZZY="fuzzy",s.STRING="string",s))(Sm||{}),ll=(i=>(i.CONTAINS="contains",i.NOT_CONTAINS="notContains",i.CONTAINS_ANY="containsAny",i.ONE_OF="oneOf",i))(ll||{}),Mb=(t=>(t.RANGE="range",t))(Mb||{}),pS=(r=>(r.AND="$and",r.OR="$or",r))(pS||{});function ud(e){return Object.values(pS).includes(e)}a(ud,"isLogicalSearchOperator");function rse(e){return Object.values(Sm).includes(e)}a(rse,"isBasicSearchOperator");function nse(e){return Object.values(ll).includes(e)}a(nse,"isArraySearchOperator");function ek(e){return Object.values(Mb).includes(e)}a(ek,"isRangeSearchOperator");function ise(e){return(0,tse.default)(e)&&"conditions"in e}a(ise,"isLogicalFilter");var ase=a(e=>typeof e=="object"&&e._id&&e._rev,"isDocument");var dS=(o=>(o.USER="user",o.HEADER="header",o.QUERY="query",o.SUBDOMAIN="subdomain",o.PATH="path",o))(dS||{});var ose={USE_ZOD_VALIDATOR:!1,AI_AGENTS:!1,USE_DYNAMIC_LOADING:!0,DIRECT_LOGIN_TO_ACCOUNT_PORTAL:!1,DEBUG_UI:!1};var cd=(i=>(i.READ="read",i.WRITE="write",i.EXECUTE="execute",i.ADMIN="admin",i))(cd||{});var hS=(p=>(p.WORKSPACE="app",p.TABLE="table",p.USER="user",p.AUTOMATION="automation",p.WEBHOOK="webhook",p.BUILDER="builder",p.CREATOR="creator",p.GLOBAL_BUILDER="globalBuilder",p.QUERY="query",p.VIEW="view",p.LEGACY_VIEW="legacy_view",p))(hS||{});var tk=a(e=>e.hosting==="cloud","isCloudAccount");var rk=a(e=>e.authType==="sso","isSSOAccount");var Me="_",Da="\uFFF0",ld=a(e=>`${e}${Me}`,"prefixed"),Mt=(G=>(G.USER="us",G.GROUP="gr",G.CONFIG="config",G.TEMPLATE="template",G.WORKSPACE="app",G.DEV="dev",G.WORKSPACE_DEV="app_dev",G.WORKSPACE_METADATA="app_metadata",G.ROLE="role",G.DEV_INFO="devinfo",G.AUTOMATION_LOG="log_au",G.ACCOUNT_METADATA="acc_metadata",G.PLUGIN="plg",G.DATASOURCE="datasource",G.DATASOURCE_PLUS="datasource_plus",G.APP_BACKUP="backup",G.TABLE="ta",G.ROW="ro",G.AUTOMATION="au",G.LINK="li",G.WEBHOOK="wh",G.INSTANCE="inst",G.LAYOUT="layout",G.SCREEN="screen",G.QUERY="query",G.DEPLOYMENTS="deployments",G.METADATA="metadata",G.MEM_VIEW="view",G.USER_FLAG="flag",G.AUTOMATION_METADATA="meta_au",G.AUDIT_LOG="al",G.SCIM_LOG="scimlog",G.ROW_ACTIONS="ra",G.OAUTH2_CONFIG="oauth2",G.OAUTH2_CONFIG_LOG="oauth2log",G.AGENT_CHAT="agentchat",G.AGENT_TOOL_SOURCE="agenttoolsource",G.WORKSPACE_APP="workspace_app",G.WORKSPACE_FAVOURITE="workspace_favourite",G))(Mt||{}),YB=["role","datasource","datasource_plus","ta","au","wh","screen","query","metadata","view","workspace_app","workspace_favourite","inst","layout"],Cf=(t=>(t.USER_METADATA="ta_users",t))(Cf||{}),fd=(r=>(r.VIEW="view",r.ROW_ACTION="row_action",r))(fd||{});function Bb(e){return!!e.providerType}a(Bb,"isSSOUser");var qb=["rows","queries","automations"],sse=["queries","automations"];var use="SYSTEM",xm="auditLog";var Zt=(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))(Zt||{}),yn=(x=>(x.TABLE="table",x.ROW="row",x.ROWS="rows",x.WIDE="wide",x.QUERY="query",x.QUERY_PARAMS="queryParams",x.QUERY_LIMIT="queryLimit",x.LOOP_OPTION="loopOption",x.ITEM="item",x.CODE="code",x.FILTERS="filters",x.COLUMN="column",x.TRIGGER_SCHEMA="triggerSchema",x.CRON="cron",x.WEBHOOK_URL="webhookUrl",x.AUTOMATION="automation",x.AUTOMATION_FIELDS="automationFields",x.MULTI_ATTACHMENTS="multi_attachments",x.TRIGGER_FILTER="trigger_filter",x.CATEGORIES="categories",x))(yn||{}),ou=(u=>(u.ROW_SAVED="ROW_SAVED",u.ROW_UPDATED="ROW_UPDATED",u.ROW_DELETED="ROW_DELETED",u.WEBHOOK="WEBHOOK",u.APP="APP",u.CRON="CRON",u.ROW_ACTION="ROW_ACTION",u))(ou||{});var hr=($=>($.SEND_EMAIL_SMTP="SEND_EMAIL_SMTP",$.CREATE_ROW="CREATE_ROW",$.UPDATE_ROW="UPDATE_ROW",$.DELETE_ROW="DELETE_ROW",$.EXECUTE_BASH="EXECUTE_BASH",$.OUTGOING_WEBHOOK="OUTGOING_WEBHOOK",$.EXECUTE_SCRIPT="EXECUTE_SCRIPT",$.EXECUTE_SCRIPT_V2="EXECUTE_SCRIPT_V2",$.EXECUTE_QUERY="EXECUTE_QUERY",$.SERVER_LOG="SERVER_LOG",$.DELAY="DELAY",$.FILTER="FILTER",$.API_REQUEST="API_REQUEST",$.QUERY_ROWS="QUERY_ROWS",$.LOOP="LOOP",$.COLLECT="COLLECT",$.OPENAI="OPENAI",$.TRIGGER_AUTOMATION_RUN="TRIGGER_AUTOMATION_RUN",$.BRANCH="BRANCH",$.CLASSIFY_CONTENT="CLASSIFY_CONTENT",$.PROMPT_LLM="PROMPT_LLM",$.TRANSLATE="TRANSLATE",$.SUMMARISE="SUMMARISE",$.GENERATE_TEXT="GENERATE_TEXT",$.EXTRACT_FILE_DATA="EXTRACT_FILE_DATA",$.EXTRACT_STATE="EXTRACT_STATE",$.LOOP_V2="LOOP_V2",$.discord="discord",$.slack="slack",$.zapier="zapier",$.integromat="integromat",$.n8n="n8n",$))(hr||{}),cse=[...Object.values(hr),...Object.values(ou)];var nk=(u=>(u.EMAIL="email",u.DOCUMENT="document",u.BLOG_POST="blog_post",u.CHAT_MESSAGE="chat_message",u.LETTER="letter",u.PROPOSAL="proposal",u.OTHER="other",u))(nk||{}),lse={email:"Email",document:"Document",blog_post:"Blog post",chat_message:"Chat message",letter:"Letter",proposal:"Proposal",other:"Other"},ik=(r=>(r.URL="URL",r.ATTACHMENT="Attachment",r))(ik||{}),ak=(i=>(i.PDF="pdf",i.JPG="jpg",i.PNG="png",i.JPEG="jpeg",i))(ak||{}),ok=["png","jpg","jpeg","image/png","image/jpeg","image/jpg","image/jpeg"];function fse(e){return e.stepId==="BRANCH"}a(fse,"isBranchStep");var sk=(i=>(i.EQUAL="EQUAL",i.NOT_EQUAL="NOT_EQUAL",i.GREATER_THAN="GREATER_THAN",i.LESS_THAN="LESS_THAN",i))(sk||{});var mS=(r=>(r.BACKUP="backup",r.RESTORE="restore",r))(mS||{});var Tm=(i=>(i.PUBLISH="publish",i.MANUAL="manual",i.SCHEDULED="scheduled",i.RESTORING="restoring",i))(Tm||{});var JB=(s=>(s.NONE="none",s.FORM_DATA="form",s.XML="xml",s.ENCODED="encoded",s.JSON="json",s.TEXT="text",s))(JB||{}),gS=(s=>(s.GET="GET",s.POST="POST",s.PATCH="PATCH",s.PUT="PUT",s.HEAD="HEAD",s.DELETE="DELETE",s))(gS||{});var Ko="bb_internal";var pd=(o=>(o.CREATED_BY="createdBy",o.CREATED_AT="createdAt",o.UPDATED_BY="updatedBy",o.UPDATED_AT="updatedAt",o.AUTO_ID="autoID",o))(pd||{});function uk(e){return e.type==="link"}a(uk,"isRelationshipField");function ck(e){return e.relationshipType==="one-to-many"}a(ck,"isOneToMany");function lk(e){return e.relationshipType==="many-to-one"}a(lk,"isManyToOne");var pse="rev",Ot=(x=>(x.STRING="string",x.LONGFORM="longform",x.OPTIONS="options",x.NUMBER="number",x.BOOLEAN="boolean",x.ARRAY="array",x.DATETIME="datetime",x.ATTACHMENTS="attachment",x.ATTACHMENT_SINGLE="attachment_single",x.LINK="link",x.FORMULA="formula",x.AUTO="auto",x.AI="ai",x.JSON="json",x.INTERNAL="internal",x.BARCODEQR="barcodeqr",x.SIGNATURE_SINGLE="signature_single",x.BIGINT="bigint",x.BB_REFERENCE="bb_reference",x.BB_REFERENCE_SINGLE="bb_reference_single",x))(Ot||{}),fk=["attachment_single","attachment","signature_single","bb_reference","json","array"],Pat=["number","bigint"];function XB(e){return Pat.includes(e)}a(XB,"isNumeric");function dse(e){return e.type==="formula"&&e.formulaType==="static"&&e.responseType&&XB(e.responseType)}a(dse,"isNumericStaticFormula");var Nat=["string","longform","options","number","boolean","datetime","bigint","ai"];function hse(e){return Nat.includes(e)}a(hse,"canGroupBy");var gr={};oe(gr,{AutomationViewMode:()=>_4,BUDIBASE_DATASOURCE_TYPE:()=>dfe,Config:()=>vfe,Cookie:()=>sv,DEFAULT_BB_DATASOURCE_ID:()=>yS,DEFAULT_EMPLOYEE_TABLE_ID:()=>yfe,DEFAULT_EXPENSES_TABLE_ID:()=>gfe,DEFAULT_INVENTORY_TABLE_ID:()=>mfe,DEFAULT_JOBS_TABLE_ID:()=>hfe,DEFAULT_TENANT_ID:()=>pi,DeprecatedViews:()=>l0,DesignDocuments:()=>Gm,DocumentType:()=>Mt,GlobalRole:()=>bfe,Header:()=>To,InternalTable:()=>Cf,MAX_VALID_DATE:()=>T4,MIN_VALID_DATE:()=>bpt,SEPARATOR:()=>Me,SQLITE_DESIGN_DOC_ID:()=>Pa,SQS_DATASOURCE_INTERNAL:()=>Ed,StaticDatabases:()=>bn,UNICODE_MAX:()=>Da,USER_METADATA_PREFIX:()=>nC,UserStatus:()=>x4,ViewName:()=>wd,WORKSPACE_DEV:()=>S4,WORKSPACE_DEV_PREFIX:()=>mc,WORKSPACE_PREFIX:()=>hc});var gse={SUMMARISE_TEXT:{columns:"columns"},CLEAN_DATA:{column:"column"},TRANSLATE:{column:"column",language:"prompt"},CATEGORISE_TEXT:{columns:"columns",categories:"prompt"},SENTIMENT_ANALYSIS:{column:"column"},PROMPT:{prompt:"prompt"},SEARCH_WEB:{columns:"columns"}};var To=(w=>(w.API_KEY="x-budibase-api-key",w.LICENSE_KEY="x-budibase-license-key",w.API_VER="x-budibase-api-version",w.APP_ID="x-budibase-app-id",w.SESSION_ID="x-budibase-session-id",w.CLIENT="x-budibase-client",w.TYPE="x-budibase-type",w.PREVIEW_ROLE="x-budibase-role",w.TENANT_ID="x-budibase-tenant-id",w.VERIFICATION_CODE="x-budibase-verification-code",w.RETURN_VERIFICATION_CODE="x-budibase-return-verification-code",w.RESET_PASSWORD_CODE="x-budibase-reset-password-code",w.RETURN_RESET_PASSWORD_CODE="x-budibase-return-reset-password-code",w.TOKEN="x-budibase-token",w.CSRF_TOKEN="x-csrf-token",w.CORRELATION_ID="x-budibase-correlation-id",w.AUTHORIZATION="authorization",w.MIGRATING_APP="x-budibase-migrating-app",w.COOKIE="cookie",w))(To||{});var ga=["_id","_rev","type","createdAt","updatedAt","tableId"],oc=["_id","_rev","tableId"];function Am(e){return ga.includes(e)}a(Am,"isInternalColumnName");function yse(e){return oc.includes(e)}a(yse,"isExternalColumnName");var ws={Equals:{value:"equal",label:"Equals"},NotEquals:{value:"notEqual",label:"Not equals"},Empty:{value:"empty",label:"Is empty"},NotEmpty:{value:"notEmpty",label:"Is not empty"},StartsWith:{value:"string",label:"Starts with"},Like:{value:"fuzzy",label:"Like"},MoreThan:{value:"rangeLow",label:"More than or equal to"},LessThan:{value:"rangeHigh",label:"Less than or equal to"},Contains:{value:"contains",label:"Contains"},NotContains:{value:"notContains",label:"Does not contain"},In:{value:"oneOf",label:"Is in"},ContainsAny:{value:"containsAny",label:"Has any"}},bse={integer:{max:2147483647,min:-2147483648},int:{max:2147483647,min:-2147483648},smallint:{max:32767,min:-32768},mediumint:{max:8388607,min:-8388608}};var yS="datasource_internal_bb_default";var Lr={};oe(Lr,{ColumnSplitter:()=>A3,NoEmptyFilterStrings:()=>Hle,buildQuery:()=>Vle,cleanupQuery:()=>C3,fixupFilterArrays:()=>P3,getKeyNumbering:()=>D3,getValidOperatorsForType:()=>oft,hasFilters:()=>R3,limit:()=>Qle,recurseLogicalOperators:()=>k3,removeKeyNumbering:()=>dk,runQuery:()=>Xk,search:()=>cft,sort:()=>Kle,splitFiltersArray:()=>hk});var av=te(require("dayjs"));var $t={};oe($t,{filterValueToLabel:()=>qat,hasSchema:()=>$at,isSupportedUserSearch:()=>wse,parallelForeach:()=>Bat,processSearchFilters:()=>ZB,toMap:()=>Wat,trimOtherProps:()=>zat,unreachable:()=>Mat});var vse=te(require("lodash/pick"));var jat=["field","operator","value","type","externalType","valueType","noValue","formulaType"];function Mat(e,t){let r=t?.message||`No such case in exhaustive switch: ${e}`;if(!!!t?.doNotThrow)throw new Error(r)}a(Mat,"unreachable");async function Bat(e,t,r){let n=[],i=Symbol.asyncIterator in e,o=i?e[Symbol.asyncIterator]():e[Symbol.iterator](),s=a(async()=>{let u=await(i?o.next():Promise.resolve(o.next()));for(;!u.done;)await t(u.value),u=await(i?o.next():Promise.resolve(o.next()))},"executeNext");for(let u=0;u<r;u++)n.push(s());await Promise.all(n)}a(Bat,"parallelForeach");function qat(){return Object.keys(ws).reduce((e,t)=>{let n=ws[t];return e[n.value]=n.label,e},{})}a(qat,"filterValueToLabel");function $at(e){return typeof e=="object"&&!Array.isArray(e)&&e!==null&&!(e instanceof Date)&&Object.keys(e).length>0}a($at,"hasSchema");function zat(e,t){return Object.keys(e).filter(n=>t.includes(n)).reduce((n,i)=>({...n,[i]:e[i]}),{})}a(zat,"trimOtherProps");function wse(e){let t=[{op:"string",key:"email"},{op:"equal",key:"_id"},{op:"oneOf",key:"_id"}],{allOr:r,onEmptyFilter:n,...i}=e;for(let[o,s]of Object.entries(i)){if(typeof s!="object")return!1;if(ud(o)){for(let l of e[o].conditions)if(!wse(l))return!1;return!0}let u=Object.keys(s||{});if(u.length===0)continue;if(!t.find(l=>l.op===o&&u.length===1&&u[0]===l.key))return!1}return!0}a(wse,"isSupportedUserSearch");function ZB(e){if(!e||e.length===0)return;let{allOr:t,onEmptyFilter:r,filters:n}=hk(e);return{logicalOperator:"all",onEmptyFilter:r||"all",groups:[{logicalOperator:t?"any":"all",filters:n.map(i=>{let o=(0,vse.default)(i,jat);return o.field=dk(o.field),o})}]}}a(ZB,"processSearchFilters");function Wat(e,t){return t.reduce((r,n)=>(r[n[e]]=n,r),{})}a(Wat,"toMap");var Ye={};oe(Ye,{cancelableTimeout:()=>Ese,cron:()=>rft,deepGet:()=>eq,duplicateName:()=>eft,getSequentialName:()=>tft,getUserColor:()=>Hat,getUserInitials:()=>Gat,getUserLabel:()=>Vat,isGoogleSheets:()=>Qat,isSQL:()=>Yat,lists:()=>x3,retry:()=>Jat,roles:()=>S3,schema:()=>a0,views:()=>_3,wait:()=>tq,withTimeout:()=>Kat});var eq=a((e,t)=>{if(!e||!t)return null;if(Object.prototype.hasOwnProperty.call(e,t))return e[t];let r=t.split(".");for(let n=0;n<r.length;n++)e=e?.[r[n]];return e},"deepGet"),Gat=a(e=>{if(!e)return"?";let t="";return t+=e.firstName?e.firstName[0]:"",t+=e.lastName?e.lastName[0]:"",t!==""?t:e.email?.[0]||"U"},"getUserInitials"),Hat=a(e=>{let t=e?._id;if(!t)return"var(--spectrum-global-color-blue-400)";t=t.replace("ro_ta_users_","");let r=1;for(let n=0;n<t.length;n++)r+=t.charCodeAt(n),r=r%36;return`hsl(${r*10}, 50%, 40%)`},"getUserColor"),Vat=a(e=>{if(!e)return"";let{firstName:t,lastName:r,email:n}=e;return t&&r?`${t} ${r}`:t||r||n},"getUserLabel");function Ese(e){let t;return[new Promise((r,n)=>{t=setTimeout(()=>{n({status:301,errno:"ETIME"})},e)}),()=>{clearTimeout(t)}]}a(Ese,"cancelableTimeout");async function Kat(e,t){let[r,n]=Ese(e),i=await Promise.race([t(),r]);return n(),i}a(Kat,"withTimeout");function Qat(e){return e==="GOOGLE_SHEETS"}a(Qat,"isGoogleSheets");function Yat(e){return!e||!e.source?!1:["POSTGRES","SQL_SERVER","MYSQL","ORACLE"].indexOf(e.source)!==-1||e.isSQL===!0}a(Yat,"isSQL");async function tq(e){return new Promise(t=>setTimeout(t,e))}a(tq,"wait");async function Jat(e,t){let{times:r=3}=t||{};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 tq(o);try{return await e()}catch(s){n=s}}throw n}a(Jat,"retry");var Mle=te(fl()),Ble=te(Ule());var jle="(Input cron: ",Mlt={"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 Blt(e){let t=[];for(let r of e){r.includes(jle)&&(r=r.split(jle)[0].trim());for(let[n,i]of Object.entries(Mlt))r.includes(n)&&(r=r.replace(new RegExp(n,"g"),i));t.push(r)}return t}a(Blt,"improveErrors");function qle(e,t=4){let r=Ble.default.parseExpression(e),n=[];for(let i=0;i<t;i++)n.push(r.next().toString());return n}a(qle,"getNextExecutionDates");function $le(e){let t=(0,Mle.default)(e,{preset:"npm-cron-schedule",override:{useSeconds:!1}});return t.isValid()?{valid:!0}:{valid:!1,err:Blt(t.getError())}}a($le,"validate");var a0={};oe(a0,{decodeNonAscii:()=>w3,encodeNonAscii:()=>zlt,isDeprecatedSingleUserColumn:()=>qlt,isNumeric:()=>Wlt,isRequired:()=>$lt});function qlt(e){return e.type==="bb_reference"&&e.subtype==="user"&&e.constraints?.type!=="array"}a(qlt,"isDeprecatedSingleUserColumn");function $lt(e){return!!e&&(typeof e.presence!="boolean"&&e.presence?.allowEmpty===!1||e.presence===!0)}a($lt,"isRequired");function zlt(e){return e.split("").map(t=>t.charCodeAt(0)>127?"\\u"+t.charCodeAt(0).toString(16).padStart(4,"0"):t).join("")}a(zlt,"encodeNonAscii");function w3(e){return e.replace(/\\u([0-9a-fA-F]{4})/g,(t,r)=>String.fromCharCode(parseInt(r,16)))}a(w3,"decodeNonAscii");function Wlt(e){return e.type==="number"||e.type==="bigint"}a(Wlt,"isNumeric");var _3={};oe(_3,{basicFields:()=>Qlt,calculationFields:()=>Klt,hasCalculationFields:()=>Vlt,isBasicViewField:()=>Glt,isCalculationField:()=>o0,isCalculationView:()=>Hlt,isV2:()=>Ylt,isVisible:()=>zle});var E3=te(require("lodash/pickBy"));function o0(e){return"calculationType"in e}a(o0,"isCalculationField");function Glt(e){return!o0(e)}a(Glt,"isBasicViewField");function Hlt(e){return e.type==="calculation"}a(Hlt,"isCalculationView");function Vlt(e){return Object.values(e.schema||{}).some(o0)}a(Vlt,"hasCalculationFields");function Klt(e){return(0,E3.default)(e.schema||{},o0)}a(Klt,"calculationFields");function zle(e){return e.visible!==!1}a(zle,"isVisible");function Qlt(e,t){let{visible:r=!0}=t||{};return(0,E3.default)(e.schema||{},n=>!o0(n)&&(!r||zle(n)))}a(Qlt,"basicFields");function Ylt(e){return e.version===2}a(Ylt,"isV2");var S3={};oe(S3,{checkForRoleInheritanceLoops:()=>Xlt});function Jlt(e){return`role${Me}${e}`}a(Jlt,"prefixForCheck");function Xlt(e){let t=new Map;e.forEach(o=>{t.set(o._id,o)});let r=new Set,n=new Set;function i(o){let s=Jlt(o);if(n.has(o)||n.has(s))return!0;if(r.has(o)||r.has(s))return!1;n.add(o);let u=t.get(s)||t.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 a(i,"hasLoop"),!!e.find(o=>i(o._id))}a(Xlt,"checkForRoleInheritanceLoops");var x3={};oe(x3,{punctuateList:()=>Zlt});function Zlt(e){return e.length===0?"":e.length===1?e[0]:e.length===2?e.join(" and "):e.slice(0,-1).join(", ")+" and "+e[e.length-1]}a(Zlt,"punctuateList");var eft=a((e,t)=>{let r=new RegExp("\\s(\\d+)$"),n=e.split(r)[0],i=new RegExp(`${n}\\s(\\d+)$`),o=[];t.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 s;if(o.length===0)s=1;else{for(let u=0;u<o.length;u++)if(o[u]!==u+1){s=u+1;break}s||(s=o.length+1)}return`${n} ${s}`},"duplicateName"),tft=a((e,t,{getName:r,numberFirstItem:n,separator:i=""}={})=>{if(!t?.length)return"";let o=t.trim(),s=n?`${t}1`:o;if(!e?.length)return s;let u=0;return e.forEach(c=>{let l=r?.(c)??c;if(typeof l!="string"||!l.startsWith(o))return;let f=l.split(o);if(f.length!==2)return;f[1].trim()===""&&(f[1]="1");let p=parseInt(f[1]);p>u&&(u=p)}),u===0?s:`${t}${i}${u+1}`},"getSequentialName");var rft={getNextExecutionDates:qle,validate:$le};var Jk=te(require("lodash/isPlainObject")),T3=te(require("lodash/isEmpty"));var ift=/{{([^{].*?)}}/g,Gle=Object.values(pS),aft=[...Object.values(Sm),...Object.values(ll),...Object.values(Mb)],oft=a((e,t,r)=>{let n=ws,i=[n.Equals,n.NotEquals,n.StartsWith,n.Like,n.Empty,n.NotEmpty,n.In],o=[n.Equals,n.NotEquals,n.MoreThan,n.LessThan,n.Empty,n.NotEmpty,n.In],s=[n.Contains,n.NotContains,n.ContainsAny,n.Empty,n.NotEmpty],u=[],{type:c,formulaType:l,subtype:f}=e;c==="string"?f==="array"?u=s:u=i:c==="number"||c==="bigint"?u=o:c==="options"?u=[n.Equals,n.NotEquals,n.Empty,n.NotEmpty,n.In]:c==="array"?u=s: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"||a0.isDeprecatedSingleUserColumn(e)?u=[n.Equals,n.NotEquals,n.Empty,n.NotEmpty,n.In]:c==="bb_reference"?u=s:c==="barcodeqr"&&(u=i);let p=r?.tableId?.includes("datasource_plus");return t==="_id"&&p&&(u=[n.Equals,n.NotEquals,n.In]),u},"getValidOperatorsForType"),Hle=[ws.StartsWith.value,ws.Like.value,ws.Equals.value,ws.NotEquals.value,ws.Contains.value,ws.NotContains.value,ws.ContainsAny.value,ws.In.value];function k3(e,t){for(let r of Gle)e[r]&&(e[r].conditions=e[r].conditions.map(n=>t(n)));return e}a(k3,"recurseLogicalOperators");var C3=a(e=>{for(let t of Hle)if(e[t])for(let r of Object.keys(e)){if(r!==t)continue;if(typeof e[r]=="object")for(let[i,o]of Object.entries(e[r]))(o==null||o===""||sft(o))&&delete e[t][i]}return e=k3(e,C3),e},"cleanupQuery");function sft(e){return Array.isArray(e)&&e.length===0}a(sft,"isEmptyArray");var dk=a(e=>D3(e).key,"removeKeyNumbering"),D3=a(e=>{if(typeof e=="string"&&e.match(/\d[0-9]*:/g)!=null){let t=e.split(":");return{prefix:`${t.shift()}:`,key:t.join(":")}}else return{key:e}},"getKeyNumbering"),A3=class{static{a(this,"ColumnSplitter")}constructor(t,r){if(this.tableNames=t.map(n=>n.name),this.tableIds=t.map(n=>n._id),this.relationshipColumnNames=t.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(t){let{prefix:r,key:n}=D3(t),i;if(this.aliases)for(let s of Object.keys(this.aliases||{})){let u=`${s}.`;n.startsWith(u)&&(i=this.aliases[s],n=n.slice(u.length))}let o;for(let s of this.relationships){let u=`${s}.`;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=w3(n.slice(this.columnPrefix.length))),{tableName:i,numberPrefix:r,relationshipPrefix:o,column:n}}};function uft(e){if(!e||!e?.operator||!e?.field)return;let t={},{operator:r,field:n,type:i,externalType:o}=e,{value:s}=e;(r==="empty"||r==="notEmpty")&&(s=null);let u=typeof s=="string"&&(s.match(ift)||[]).length>0;switch(i){case"datetime":if(!u&&r!=="empty"&&r!=="notEmpty"){if(!s)return;if(typeof s=="string")s=new Date(s).toISOString();else if(ek(r))return t[r]??={},t[r][n]=s,t}break;case"number":typeof s=="string"&&!u&&(r==="oneOf"?s=s.split(",").map(parseFloat):s=parseFloat(s));break;case"boolean":s=`${s}`.toLowerCase()==="true";break;case"array":["contains","notContains","containsAny"].includes(r.toLocaleString())&&typeof s=="string"&&(s=s.split(","));break}if(ek(r)){let l=bse[o]||{min:Number.MIN_SAFE_INTEGER,max:Number.MAX_SAFE_INTEGER};t[r]??={},t[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"&&s!=null&&s!=="")t.range??={},t.range[n]={...t.range[n],high:s};else if(r==="rangeLow"&&s!=null&&s!=="")t.range??={},t.range[n]={...t.range[n],low:s};else if(rse(r)||nse(r)||ek(r))i==="boolean"?r==="equal"&&s===!1?(t.notEqual=t.notEqual||{},t.notEqual[n]=!0):r==="notEqual"&&s===!1?(t.equal=t.equal||{},t.equal[n]=!0):(t[r]??={},t[r][n]=s):(t[r]??={},t[r][n]=s);else throw new Error(`Unsupported operator: ${r}`);return t}a(uft,"buildCondition");function hk(e){let t={filters:[]};for(let r of e)"operator"in r&&r.operator==="allOr"?t.allOr=!0:"onEmptyFilter"in r?t.onEmptyFilter=r.onEmptyFilter:t.filters.push(r);return t}a(hk,"splitFiltersArray");function Vle(e){if(!e)return{};if(Array.isArray(e)&&(e=ZB(e),!e))return{};let t={};e.onEmptyFilter?t.onEmptyFilter=e.onEmptyFilter:t.onEmptyFilter="all";let r=Wle(e.logicalOperator||"all");return t[r]={conditions:(e.groups||[]).map(n=>{if(n.groups){let c=Vle(n);return delete c.onEmptyFilter,c}let{allOr:i,onEmptyFilter:o,filters:s}=hk(n.filters||[]);o&&(t.onEmptyFilter=o);let u=i?"$or":"$and";return n.logicalOperator&&(u=Wle(n.logicalOperator)),{[u]:{conditions:s.map(uft).filter(c=>c)}}})},t}a(Vle,"buildQuery");function Wle(e){return e==="all"?"$and":"$or"}a(Wle,"logicalOperatorFromUI");function P3(e){if(!e)return e;for(let t of Object.values(ll)){let r=e[t];if(!(r==null||!(0,Jk.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 k3(e,P3),e}a(P3,"fixupFilterArrays");function cft(e,t){let r=Xk(e,t.query);t.sort&&(r=Kle(r,t.sort,t.sortOrder||"ascending",t.sortType));let n=r.length;t.limit&&(r=Qle(r,t.limit.toString()));let i={rows:r};return t.countRows&&(i.totalRows=n),i}a(cft,"search");function Xk(e,t){if(!e||!Array.isArray(e))return[];if(!t)return e;if(t=C3(t),t=P3(t),!R3(t)&&t.onEmptyFilter==="none")return[];let r=a((T,I)=>R=>{for(let[C,k]of Object.entries(t[T]||{})){let U=ud(T)?R:eq(R,dk(C)),M=I(U,k);if(t.allOr&&M)return!0;if(!t.allOr&&!M)return!1}return!t.allOr},"match"),n=r("string",(T,I)=>typeof T!="string"||typeof I!="string"?!1:T.toLowerCase().startsWith(I.toLowerCase())),i=r("fuzzy",(T,I)=>typeof T!="string"||typeof I!="string"?!1:T.toLowerCase().includes(I.toLowerCase())),o=r("range",(T,I)=>{if(T==null||T===""||((0,Jk.default)(I.low)&&(0,T3.default)(I.low)&&(I.low=void 0),(0,Jk.default)(I.high)&&(0,T3.default)(I.high)&&(I.high=void 0),I.low==null&&I.high==null))return!1;let R=+T;if(!isNaN(R)){let k=+I.low,U=+I.high;if(!isNaN(k)&&!isNaN(U))return R>=k&&R<=U;if(isNaN(k)){if(!isNaN(U))return R<=U}else return R>=k}let C=(0,av.default)(T);if(C.isValid()){let k=(0,av.default)(I.low||"0000-00-00T00:00:00.000Z"),U=(0,av.default)(I.high||"9999-00-00T00:00:00.000Z");if(k.isValid()&&U.isValid())return C.isAfter(k)&&C.isBefore(U)||C.isSame(k)||C.isSame(U);if(k.isValid())return C.isAfter(k)||C.isSame(k);if(U.isValid())return C.isBefore(U)||C.isSame(U)}return I.low!=null&&I.high!=null?T>=I.low&&T<=I.high:I.low!=null?T>=I.low:I.high!=null?T<=I.high:!1}),s=a((T,I)=>{if(Array.isArray(T)){for(let C of T)if(s(C,I))return!0;return!1}if(T&&typeof T=="object"&&typeof I=="string")return T._id===I;if(T===I)return!0;if(T==null&&I!=null||T!=null&&I==null)return!1;let R=(0,av.default)(T);if(R.isValid()){let C=(0,av.default)(I);if(C.isValid())return R.isSame(C)}return!1},"_valueMatches"),u=a(T=>(...I)=>!T(...I),"not"),c=r("equal",s),l=r("notEqual",u(s)),f=a(T=>typeof T=="string"?T==="":Array.isArray(T)?T.length===0:T&&typeof T=="object"?Object.keys(T).length===0:T==null,"_empty"),p=r("empty",f),d=r("notEmpty",u(f)),h=r("oneOf",(T,I)=>(typeof I=="string"&&(I=I.split(",")),typeof T=="number"&&(I=I.map(R=>parseFloat(R))),Array.isArray(I)?I.some(R=>s(T,R)):!1)),m=a(T=>(I,R)=>!Array.isArray(I)||(typeof R=="string"&&(R=R.split(","),typeof I[0]=="number"&&(R=R.map(C=>parseFloat(C)))),!Array.isArray(R))?!1:R.length===0?!0:R[T](C=>s(I,C)),"_contains"),g=r("contains",(T,I)=>Array.isArray(I)&&I.length===0?!0:m("every")(T,I)),y=r("notContains",(T,I)=>Array.isArray(I)&&I.length===0?!0:u(m("every"))(T,I)),b=r("containsAny",m("some")),v=r("$and",(T,I)=>{if(!I.length)return!1;for(let R of I)if(!Xk([T],R).length)return!1;return!0}),w=r("$or",(T,I)=>{if(!I.length)return!1;for(let R of I)if(Xk([T],{...R,allOr:!0}).length)return!0;return!1}),x=a(T=>{let I={string:n,fuzzy:i,range:o,equal:c,notEqual:l,empty:p,notEmpty:d,oneOf:h,contains:g,containsAny:b,notContains:y,$and:v,$or:w},R=Object.entries(t||{}).filter(([C,k])=>!["allOr","onEmptyFilter"].includes(C)&&k&&Object.keys(k).length>0).map(([C])=>I[C]?.(T)??!1);return R3(t)?t.allOr?R.some(C=>C===!0):R.every(C=>C===!0):!0},"docMatch");return e.filter(x)}a(Xk,"runQuery");function Kle(e,t,r,n="string"){if(!t||!r||!n)return e;let i=a(o=>o==null?o:n==="string"?`${o}`:parseFloat(o),"parse");return e.slice().sort((o,s)=>{let u=i(o[t]),c=i(s[t]),l=c==null||u>c?1:-1;return r.toLowerCase()==="descending"?l*-1:l})}a(Kle,"sort");function Qle(e,t){let r=typeof t=="number"?t:parseFloat(t);return isNaN(r)?e:e.slice(0,r)}a(Qle,"limit");var R3=a(e=>{if(!e)return!1;let t=a(r=>{for(let n of Gle)if(r[n])for(let i of r[n]?.conditions||[]){let o=t(i);if(o)return o}for(let n of aft){let i=r[n];if(!i||typeof i!="object")continue;if(Object.entries(i).filter(s=>{let u=s[1]!==void 0||s[1]!==null||s[1]!=="";return n==="notEmpty"||u}).length!==0)return!0}return!1},"check");return t(e)},"hasFilters");var Yi={};oe(Yi,{applications:()=>L3,automations:()=>U3,screens:()=>q3,users:()=>B3});var L3={};oe(L3,{getDevAppID:()=>lft,getProdAppID:()=>u0});var N3=ld("app"),s0=ld("app_dev");function lft(e){if(!e)throw new Error("No app ID provided");if(e.startsWith(s0))return e;let t=e.split(N3);t.shift();let r=t.join(N3);return`${s0}${r}`}a(lft,"getDevAppID");function u0(e){if(!e)throw new Error("No app ID provided");if(!e.startsWith(s0))return e;let t=e.split(s0);t.shift();let r=t.join(s0);return`${N3}${r}`}a(u0,"getProdAppID");var U3={};oe(U3,{checkForCollectStep:()=>F3,isAppAction:()=>dft,isRowAction:()=>fft,isWebhookAction:()=>pft});function fft(e){return e.definition.trigger?.stepId==="ROW_ACTION"}a(fft,"isRowAction");function pft(e){return e.definition.trigger?.stepId==="WEBHOOK"}a(pft,"isWebhookAction");function dft(e){return e.definition.trigger?.stepId==="APP"}a(dft,"isAppAction");function Yle(e){if(!e||!Array.isArray(e))return!1;for(let t of e){if(t.stepId==="COLLECT")return!0;if(fse(t)&&t.inputs.children){for(let r of Object.values(t.inputs.children))if(Yle(r))return!0}}return!1}a(Yle,"hasCollectBlockRecursive");function F3(e){return Yle(e.definition.steps)}a(F3,"checkForCollectStep");var B3={};oe(B3,{canCreateApps:()=>hft,containsUserID:()=>_ft,getGlobalUserID:()=>Eft,getUserAppGroups:()=>Sft,hasAdminPermissions:()=>M3,hasAppBuilderPermissions:()=>eC,hasBuilderPermissions:()=>vft,hasCreatorPermissions:()=>tC,isAdmin:()=>c0,isAdminOrBuilder:()=>gft,isAdminOrGlobalBuilder:()=>yft,isAdminOrWorkspaceBuilder:()=>mft,isBuilder:()=>j3,isCreator:()=>wft,isGlobalBuilder:()=>Zk,userAppAccessList:()=>xft});function j3(e,t){return e?e.builder?.global?!0:!!(t&&e.builder?.apps?.includes(u0(t))):!1}a(j3,"isBuilder");function Zk(e){return j3(e)&&!eC(e)||c0(e)}a(Zk,"isGlobalBuilder");function hft(e){return Zk(e)||tC(e)}a(hft,"canCreateApps");function c0(e){return e?M3(e):!1}a(c0,"isAdmin");function mft(e,t){return e?!!(c0(e)||t&&e.builder?.apps?.includes(u0(t))):!1}a(mft,"isAdminOrWorkspaceBuilder");function gft(e,t){return j3(e,t)||c0(e)}a(gft,"isAdminOrBuilder");function yft(e){return Zk(e)||c0(e)}a(yft,"isAdminOrGlobalBuilder");function eC(e){if(!e)return!1;let t=e.builder?.apps?.length;return!!!e.builder?.global&&t!=null&&t>0}a(eC,"hasAppBuilderPermissions");function bft(e){return e?!!Object.values(e.roles??{}).find(t=>t==="CREATOR"):!1}a(bft,"hasAppCreatorPermissions");function vft(e){return e?e.builder?.global||eC(e)||tC(e):!1}a(vft,"hasBuilderPermissions");function M3(e){return e?!!e.admin?.global:!1}a(M3,"hasAdminPermissions");function tC(e){return e?!!e.builder?.creator:!1}a(tC,"hasCreatorPermissions");function wft(e){return e?Zk(e)||M3(e)||tC(e)||eC(e)||bft(e):!1}a(wft,"isCreator");function Eft(e){if(typeof e!="string")return e;let t=`ro${Me}ta_users${Me}`;return e.startsWith(t)?e.split(t)[1]:e}a(Eft,"getGlobalUserID");function _ft(e){return typeof e!="string"?!1:e.includes(`us${Me}`)}a(_ft,"containsUserID");function Jle(e,t){return t?.filter(r=>r.users?.find(n=>n._id===e))||[]}a(Jle,"getUserGroups");function Sft(e,t,r){let n=u0(e);return Jle(t,r).filter(o=>Object.keys(o.roles||{}).find(s=>s===n))}a(Sft,"getUserAppGroups");function xft(e,t){let n=Jle(e._id,t).flatMap(o=>Object.keys(o.roles||{})),i=[...Object.keys(e?.roles||{}),...n];return[...new Set(i)]}a(xft,"userAppAccessList");var q3={};oe(q3,{findInSettings:()=>Tft});function Tft(e,t){let r=[];function n(i,o=""){for(let[s,u]of Object.entries(i))u&&(typeof u=="string"&&u.includes(t)?r.push({setting:o?`${o}.${s}`:s,value:u}):typeof u=="object"&&n(u,s))}return a(n,"recurse"),n(e.props),r}a(Tft,"findInSettings");var LLr={string:!0,longform:!0,options:!0,number:!0,datetime:!0,formula:!0,ai:!0,auto:!0,internal:!0,barcodeqr:!0,bigint:!0,boolean:!1,array:!1,attachment:!1,attachment_single:!1,signature_single:!1,link:!1,json:!1,bb_reference:!1,bb_reference_single:!1},FLr={string:!0,longform:!0,options:!0,number:!0,datetime:!0,auto:!0,internal:!0,barcodeqr:!0,bigint:!0,boolean:!0,json:!0,formula:!1,ai:!1,attachment:!1,attachment_single:!1,signature_single:!1,array:!1,link:!1,bb_reference:!1,bb_reference_single:!1},ULr={number:!0,json:!0,datetime:!0,longform:!0,string:!0,options:!0,array:!0,bigint:!0,boolean:!0,auto:!1,internal:!1,barcodeqr:!1,formula:!1,ai:!1,attachment:!1,attachment_single:!1,signature_single:!1,link:!1,bb_reference:!0,bb_reference_single:!0};function Xle(e){let t=Object.keys(e.schema),r=t.map(o=>o.toLowerCase()),n=new Set(r),i=[];if(n.size!==r.length)for(let o of n.keys())r.filter(u=>u===o).length>1&&i.push(o);for(let o of ga)t.find(s=>s===o)&&i.push(o);return i}a(Xle,"findDuplicateInternalColumns");var Wt={};oe(Wt,{steps:()=>w4,triggers:()=>E4});var w4={};oe(w4,{apiRequest:()=>Y3,bash:()=>$3,branch:()=>z3,classifyText:()=>p4,collect:()=>W3,createRow:()=>G3,delay:()=>H3,deleteRow:()=>V3,discord:()=>K3,executeQuery:()=>Q3,executeScript:()=>J3,executeScriptV2:()=>X3,extract:()=>y4,extractState:()=>b4,filter:()=>Z3,generate:()=>g4,loop:()=>e4,loopV2:()=>v4,make:()=>t4,n8n:()=>r4,openai:()=>n4,outgoingWebhook:()=>i4,promptLLM:()=>d4,queryRows:()=>a4,sendSmtpEmail:()=>o4,serverLog:()=>s4,slack:()=>u4,summarise:()=>m4,translate:()=>h4,triggerAutomationRun:()=>c4,updateRow:()=>l4,zapier:()=>f4});var $3={};oe($3,{definition:()=>Aft});var Aft={name:"Bash Scripting",tagline:"Execute a bash command",icon:"git-branch",description:"Run a bash script",type:"ACTION",internal:!0,features:{LOOPING:!0},stepId:"EXECUTE_BASH",inputs:{},schema:{inputs:{properties:{code:{type:"string",customType:"code",title:"Code"}},required:["code"]},outputs:{properties:{stdout:{type:"string",description:"Standard output of your bash command or script"},success:{type:"boolean",description:"Whether the command was successful"}},required:["stdout"]}}};var z3={};oe(z3,{definition:()=>Rft});var Rft={name:"Branch",icon:"git-branch",tagline:"Branch from this step",description:"Branching",stepId:"BRANCH",internal:!0,features:{},inputs:{},schema:{inputs:{properties:{branches:{properties:{name:{type:"string"},condition:{customType:"filters"}}},children:{type:"array"}},required:["conditions"]},outputs:{properties:{branchName:{type:"string"},status:{type:"string",description:"Branch result"},branchId:{type:"string",description:"Branch ID"},success:{type:"boolean",description:"Branch success"}},required:["output"]}},type:"LOGIC"};var W3={};oe(W3,{definition:()=>Oft});var Oft={name:"Collect Data",tagline:"Collect data to be sent to design",icon:"stack",description:"Collects specified data so it can be provided to the design section",type:"ACTION",internal:!0,features:{},stepId:"COLLECT",inputs:{},schema:{inputs:{properties:{collection:{type:"string",title:"What to Collect"}},required:["collection"]},outputs:{properties:{success:{type:"boolean",description:"Whether the action was successful"},value:{type:"string",description:"Collected data"}},required:["success","value"]}}};var G3={};oe(G3,{definition:()=>Ift});var Ift={name:"Create Row",tagline:"Create a {{inputs.enriched.table.name}} row",icon:"rows-plus-bottom",description:"Add a row to your database",type:"ACTION",internal:!0,features:{LOOPING:!0},stepId:"CREATE_ROW",inputs:{},schema:{inputs:{properties:{row:{type:"object",properties:{tableId:{type:"string",customType:"table"}},customType:"row",title:"Table",required:["tableId"]}},required:["row"]},outputs:{properties:{row:{type:"object",customType:"row",description:"The new row"},response:{type:"object",description:"The response from the table"},success:{type:"boolean",description:"Whether the row creation was successful"},id:{type:"string",description:"The identifier of the new row"},revision:{type:"string",description:"The revision of the new row"}},required:["success","id","revision"]}}};var H3={};oe(H3,{definition:()=>kft});var kft={name:"Delay",icon:"clock",tagline:"Delay for {{inputs.time}} milliseconds",description:"Delay the automation until an amount of time has passed",stepId:"DELAY",internal:!0,features:{},inputs:{},schema:{inputs:{properties:{time:{type:"number",title:"Delay in milliseconds"}},required:["time"]},outputs:{properties:{success:{type:"boolean",description:"Whether the delay was successful"}},required:["success"]}},type:"LOGIC"};var V3={};oe(V3,{definition:()=>Cft});var Cft={description:"Delete a row from your database",icon:"trash-simple",name:"Delete Row",tagline:"Delete a {{inputs.enriched.table.name}} row",type:"ACTION",stepId:"DELETE_ROW",internal:!0,features:{LOOPING:!0},inputs:{},schema:{inputs:{properties:{tableId:{type:"string",customType:"table",title:"Table"},id:{type:"string",title:"Row ID"}},required:["tableId","id"]},outputs:{properties:{row:{type:"object",customType:"row",description:"The deleted row"},response:{type:"object",description:"The response from the table"},success:{type:"boolean",description:"Whether the deletion was successful"}},required:["row","success"]}}};var K3={};oe(K3,{definition:()=>Dft});var Dft={name:"Discord Message",tagline:"Send a message to a Discord server",description:"Send a message to a Discord server",icon:"ri-discord-line",stepId:"discord",type:"ACTION",internal:!1,features:{LOOPING:!0},inputs:{},schema:{inputs:{properties:{url:{type:"string",title:"Discord Webhook URL"},username:{type:"string",title:"Bot Name"},avatar_url:{type:"string",title:"Bot Avatar URL"},content:{type:"string",title:"Message"}},required:["url","content"]},outputs:{properties:{httpStatus:{type:"number",description:"The HTTP status code of the request"},response:{type:"string",description:"The response from the Discord Webhook"},success:{type:"boolean",description:"Whether the message sent successfully"}}}}};var Q3={};oe(Q3,{definition:()=>Pft});var Pft={name:"External Data Connector",tagline:"Execute Data Connector",icon:"database",description:"Execute a query in an external data connector",type:"ACTION",stepId:"EXECUTE_QUERY",internal:!0,features:{LOOPING:!0},inputs:{},schema:{inputs:{properties:{query:{type:"object",properties:{queryId:{type:"string",customType:"query"}},customType:"queryParams",title:"Parameters",required:["queryId"]}},required:["query"]},outputs:{properties:{response:{type:"object",description:"The response from the datasource execution"},info:{type:"object",description:"Some query types may return extra data, like headers from a REST query"},success:{type:"boolean",description:"Whether the action was successful"}},required:["response","success"]}}};var Y3={};oe(Y3,{definition:()=>Nft});var Nft={name:"API Request",tagline:"Execute a REST request",icon:"globe",description:"Execute a HTTP query from a REST datasource",type:"ACTION",stepId:"API_REQUEST",internal:!0,new:!0,features:{LOOPING:!0},inputs:{},schema:{inputs:{properties:{query:{type:"object",properties:{queryId:{type:"string"}},customType:"queryParams",title:"Parameters",required:["queryId"]}},required:["query"]},outputs:{properties:{response:{type:"object",description:"The response from the datasource execution"},info:{type:"object",description:"Some query types may return extra data, like headers from a REST query"},success:{type:"boolean",description:"Whether the action was successful"}},required:["response","success"]}}};var J3={};oe(J3,{definition:()=>Lft});var Lft={name:"JS Scripting",tagline:"Execute JavaScript Code",deprecated:!0,icon:"code",description:"Run a piece of JavaScript code in your automation",type:"ACTION",internal:!0,stepId:"EXECUTE_SCRIPT",inputs:{},features:{LOOPING:!0},schema:{inputs:{properties:{code:{type:"string",customType:"code",title:"Code"}},required:["code"]},outputs:{properties:{value:{type:"string",description:"The result of the return statement"},success:{type:"boolean",description:"Whether the action was successful"}},required:["success"]}}};var X3={};oe(X3,{definition:()=>Fft});var Fft={name:"JavaScript",tagline:"Execute JavaScript Code",icon:"brackets-angle",description:"Run a piece of JavaScript code in your automation",type:"ACTION",internal:!0,new:!1,stepId:"EXECUTE_SCRIPT_V2",inputs:{},features:{LOOPING:!0},schema:{inputs:{properties:{code:{type:"string",customType:"code",title:"Code"}},required:["code"]},outputs:{properties:{value:{type:"string",description:"The result of the return statement"},success:{type:"boolean",description:"Whether the action was successful"}},required:["success"]}}};var Z3={};oe(Z3,{PrettyFilterConditions:()=>Zle,definition:()=>Uft});var Zle={EQUAL:"Equals",NOT_EQUAL:"Not equals",GREATER_THAN:"Greater than",LESS_THAN:"Less than"},Uft={name:"Condition",tagline:"{{inputs.field}} {{inputs.condition}} {{inputs.value}}",icon:"git-branch",description:"Conditionally halt automations which do not meet certain conditions",type:"LOGIC",internal:!0,features:{},stepId:"FILTER",inputs:{condition:"EQUAL"},schema:{inputs:{properties:{field:{type:"string",title:"Reference Value"},condition:{type:"string",title:"Condition",enum:Object.values(sk),pretty:Object.values(Zle)},value:{type:"string",title:"Comparison Value"}},required:["field","condition","value"]},outputs:{properties:{success:{type:"boolean",description:"Whether the action was successful"},result:{type:"boolean",description:"Whether the logic block passed"}},required:["success","result"]}}};var e4={};oe(e4,{definition:()=>jft});var jft={name:"Looping",icon:"recycle",tagline:"Loop the block",description:"Loop",stepId:"LOOP",internal:!0,features:{},inputs:{},schema:{inputs:{properties:{option:{customType:"loopOption",title:"Input type"},binding:{type:"string",title:"Binding / Value"},iterations:{type:"number",title:"Max loop iterations"},failure:{type:"string",title:"Failure Condition"}},required:["type","value","iterations","failure"]},outputs:{properties:{items:{customType:"item",description:"The item currently being executed"},success:{type:"boolean",description:"Whether the message loop was successfully"},iterations:{type:"number",description:"The amount of times the block ran"}},required:["success","items","iterations"]}},type:"LOGIC"};var t4={};oe(t4,{definition:()=>Mft});var Mft={name:"Make Integration",stepTitle:"Make",tagline:"Trigger a Make scenario",description:"Performs a webhook call to Make and gets the response (if configured)",icon:"ri-shut-down-line",stepId:"integromat",type:"ACTION",internal:!1,features:{LOOPING:!0},inputs:{},schema:{inputs:{properties:{url:{type:"string",title:"Webhook URL"},body:{type:"json",title:"Payload"}},required:["url","body"]},outputs:{properties:{success:{type:"boolean",description:"Whether call was successful"},httpStatus:{type:"number",description:"The HTTP status code returned"},response:{type:"object",description:"The webhook response - this can have properties"}},required:["success","response"]}}};var r4={};oe(r4,{definition:()=>Bft});var Bft={name:"n8n Integration",stepTitle:"n8n",tagline:"Trigger an n8n workflow",description:"Performs a webhook call to n8n and gets the response (if configured)",icon:"ri-shut-down-line",stepId:"n8n",type:"ACTION",internal:!1,features:{LOOPING:!0},inputs:{},schema:{inputs:{properties:{url:{type:"string",title:"Webhook URL"},method:{type:"string",title:"Method",enum:Object.values(gS)},authorization:{type:"string",title:"Authorization"},body:{type:"json",title:"Payload"}},required:["url","method"]},outputs:{properties:{success:{type:"boolean",description:"Whether call was successful"},httpStatus:{type:"number",description:"The HTTP status code returned"},response:{type:"object",description:"The webhook response - this can have properties"}},required:["success","response"]}}};var n4={};oe(n4,{definition:()=>qft});var efe=(u=>(u.GPT_4O_MINI="gpt-4o-mini",u.GPT_4O="gpt-4o",u.GPT_4="gpt-4",u.GPT_35_TURBO="gpt-3.5-turbo",u.GPT_5_MINI="gpt-5-mini",u.GPT_5="gpt-5",u.GPT_5_NANO="gpt-5-nano",u))(efe||{}),qft={name:"OpenAI",tagline:"Send prompts to ChatGPT",icon:"flow-arrow",description:"Interact with the OpenAI ChatGPT API.",type:"ACTION",internal:!0,features:{},deprecated:!1,stepId:"OPENAI",inputs:{prompt:""},schema:{inputs:{properties:{prompt:{type:"string",title:"Prompt"},model:{type:"string",title:"Model",enum:Object.values(efe)}},required:["prompt","model"]},outputs:{properties:{success:{type:"boolean",description:"Whether the action was successful"},response:{type:"string",description:"What was output"}},required:["success","response"]}}};var i4={};oe(i4,{definition:()=>$ft});var tfe=(o=>(o.POST="POST",o.GET="GET",o.PUT="PUT",o.DELETE="DELETE",o.PATCH="PATCH",o))(tfe||{}),$ft={deprecated:!0,name:"Outgoing webhook",tagline:"Send a {{inputs.requestMethod}} request",icon:"paper-plane-right",description:"Send a request of specified method to a URL",type:"ACTION",internal:!0,features:{LOOPING:!0},stepId:"OUTGOING_WEBHOOK",inputs:{requestMethod:"POST",url:"http://",requestBody:"{}",headers:"{}"},schema:{inputs:{properties:{requestMethod:{type:"string",enum:Object.values(tfe),title:"Request method"},url:{type:"string",title:"URL"},requestBody:{type:"string",title:"JSON Body",customType:"wide"},headers:{type:"string",title:"Headers",customType:"wide"}},required:["requestMethod","url"]},outputs:{properties:{response:{type:"object",description:"The response from the webhook"},httpStatus:{type:"number",description:"The HTTP status code returned"},success:{type:"boolean",description:"Whether the action was successful"}},required:["response","success"]}}};var a4={};oe(a4,{definition:()=>Wft});var zft={ascending:"Ascending",descending:"Descending"},Wft={description:"Query rows from the database",icon:"magnifying-glass",name:"Query rows",tagline:"Query rows from {{inputs.enriched.table.name}} table",type:"ACTION",stepId:"QUERY_ROWS",internal:!0,features:{LOOPING:!0},inputs:{},schema:{inputs:{properties:{tableId:{type:"string",customType:"table",title:"Table"},filters:{type:"object",customType:"filters",title:"Filtering"},sortColumn:{type:"string",title:"Sort Column",customType:"column"},sortOrder:{type:"string",title:"Sort Order",enum:Object.values(kf),pretty:Object.values(zft)},limit:{type:"number",title:"Limit",customType:"queryLimit"}},required:["tableId"]},outputs:{properties:{rows:{type:"array",customType:"rows",description:"The rows that were found"},success:{type:"boolean",description:"Whether the query was successful"}},required:["rows","success"]}}};var o4={};oe(o4,{definition:()=>Gft});var Gft={description:"Send an email using SMTP",tagline:"Send SMTP email to {{inputs.to}}",icon:"envelope",name:"Send Email (SMTP)",type:"ACTION",internal:!0,features:{LOOPING:!0},stepId:"SEND_EMAIL_SMTP",inputs:{},schema:{inputs:{properties:{to:{type:"string",title:"Send To"},from:{type:"string",title:"Send From"},cc:{type:"string",title:"CC"},bcc:{type:"string",title:"BCC"},subject:{type:"string",title:"Email Subject"},contents:{type:"longform",title:"Message",description:"Use markdown or HTML for rich text formatting: **bold**, _italics_, # Headings, * Bullets, <br> for line breaks, and more."},addInvite:{type:"boolean",title:"Add calendar invite"},startTime:{type:"date",title:"Start Time",dependsOn:"addInvite"},endTime:{type:"date",title:"End Time",dependsOn:"addInvite"},summary:{type:"string",title:"Meeting Summary",dependsOn:"addInvite"},location:{type:"string",title:"Location",dependsOn:"addInvite"},attachments:{type:"attachment",customType:"multi_attachments",title:"Attachments"}},required:["to","from","subject","contents"]},outputs:{properties:{success:{type:"boolean",description:"Whether the email was sent"},response:{type:"object",description:"A response from the email client, this may be an error"}},required:["success"]}}};var s4={};oe(s4,{definition:()=>Hft});var Hft={name:"Backend log",tagline:"Console log a value in the backend",icon:"activity",description:"Logs the given text to the server (using console.log)",type:"ACTION",internal:!0,features:{LOOPING:!0},stepId:"SERVER_LOG",inputs:{text:""},schema:{inputs:{properties:{text:{type:"string",title:"Log"}},required:["text"]},outputs:{properties:{success:{type:"boolean",description:"Whether the action was successful"},message:{type:"string",description:"What was output"}},required:["success","message"]}}};var u4={};oe(u4,{definition:()=>Vft});var Vft={name:"Slack Message",tagline:"Send a message to Slack",description:"Send a message to Slack",icon:"ri-slack-line",stepId:"slack",type:"ACTION",internal:!1,features:{LOOPING:!0},inputs:{},schema:{inputs:{properties:{url:{type:"string",title:"Incoming Webhook URL"},text:{type:"string",title:"Message"}},required:["url","text"]},outputs:{properties:{httpStatus:{type:"number",description:"The HTTP status code of the request"},success:{type:"boolean",description:"Whether the message sent successfully"},response:{type:"string",description:"The response from the Slack Webhook"}}}}};var c4={};oe(c4,{definition:()=>Kft});var Kft={name:"Trigger an automation",tagline:"Triggers an automation synchronously",icon:"arrows-clockwise",description:"Triggers an automation synchronously",type:"ACTION",internal:!0,features:{},stepId:"TRIGGER_AUTOMATION_RUN",inputs:{},schema:{inputs:{properties:{automation:{type:"object",properties:{automationId:{type:"string",customType:"automation"}},customType:"automationFields",title:"Automation Fields",required:["automationId"]},timeout:{type:"number",title:"Timeout (ms)"}},required:["automationId"]},outputs:{properties:{success:{type:"boolean",description:"Whether the automation was successful"},value:{type:"object",description:"Automation Result"}},required:["success","value"]}}};var l4={};oe(l4,{definition:()=>Qft});var Qft={name:"Update Row",tagline:"Update a {{inputs.enriched.table.name}} row",icon:"arrow-clockwise",description:"Update a row in your database",type:"ACTION",internal:!0,features:{LOOPING:!0},stepId:"UPDATE_ROW",inputs:{},schema:{inputs:{properties:{meta:{type:"object",title:"Field settings"},row:{type:"object",customType:"row",title:"Table"},rowId:{type:"string",title:"Row ID"}},required:["row","rowId"]},outputs:{properties:{row:{type:"object",customType:"row",description:"The updated row"},response:{type:"object",description:"The response from the table"},success:{type:"boolean",description:"Whether the action was successful"},id:{type:"string",description:"The identifier of the updated row"},revision:{type:"string",description:"The revision of the updated row"}},required:["success","id","revision"]}}};var f4={};oe(f4,{definition:()=>Yft});var Yft={name:"Zapier Webhook",stepId:"zapier",type:"ACTION",internal:!1,features:{LOOPING:!0},description:"Trigger a Zapier Zap via webhooks",tagline:"Trigger a Zapier Zap",icon:"ri-flashlight-line",inputs:{},schema:{inputs:{properties:{url:{type:"string",title:"Webhook URL"},body:{type:"json",title:"Payload"}},required:["url"]},outputs:{properties:{httpStatus:{type:"number",description:"The HTTP status code of the request"},response:{type:"string",description:"The response from Zapier"}}}}};var p4={};oe(p4,{definition:()=>Jft});var Jft={name:"Classify Text",icon:"PageTag",tagline:"Classify text into predefined categories using AI",description:"Analyzes text and assigns it to one of the categories you provide.",stepId:"CLASSIFY_CONTENT",internal:!0,inputs:{},features:{LOOPING:!0},schema:{inputs:{properties:{textInput:{type:"longform",title:"Text",description:"The text content you want the AI to classify."},categoryItems:{type:"array",customType:"categories",title:"Categories",description:"Add categories for the AI to use when classifying text."}},required:["textInput","categoryItems"]},outputs:{properties:{category:{type:"string",description:"The category assigned by the AI."},success:{type:"boolean",description:"Whether the classification was successful."}},required:["category","success"]}},type:"ACTION"};var d4={};oe(d4,{definition:()=>Xft});var Xft={name:"LLM Prompt",tagline:"Send prompts to LLM",icon:"Algorithm",description:"Interact with an LLM.",type:"ACTION",internal:!0,features:{},stepId:"PROMPT_LLM",inputs:{prompt:""},schema:{inputs:{properties:{prompt:{type:"longform",title:"Prompt"}},required:["prompt","model"]},outputs:{properties:{success:{type:"boolean",description:"Whether the action was successful"},response:{type:"string",description:"What was output"}},required:["success","response"]}}};var h4={};oe(h4,{definition:()=>Zft});var Zft={name:"Translate",tagline:"Translate text to a different language",icon:"globe",description:"Translate text to a different language.",type:"ACTION",internal:!0,features:{},stepId:"TRANSLATE",inputs:{prompt:""},schema:{inputs:{properties:{text:{type:"string",title:"Text"},language:{type:"string",title:"Language"}},required:["text","language"]},outputs:{properties:{success:{type:"boolean",description:"Whether the action was successful"},response:{type:"string",description:"What was the translated text"}},required:["success","response"]}}};var m4={};oe(m4,{definition:()=>ept});var rfe=(n=>(n.SHORT="Short",n.MEDIUM="Medium",n.LONG="Long",n))(rfe||{}),ept={name:"Summarise",tagline:"Summarise text",icon:"Summarize",description:"Summarise text.",type:"ACTION",internal:!0,features:{},stepId:"SUMMARISE",inputs:{prompt:""},schema:{inputs:{properties:{text:{type:"longform",title:"Text"},length:{type:"string",title:"Length",enum:Object.values(rfe)}},required:["text","length"]},outputs:{properties:{success:{type:"boolean",description:"Whether the action was successful"},response:{type:"string",description:"What was the summarised text"}},required:["success","response"]}}};var g4={};oe(g4,{definition:()=>tpt});var tpt={name:"Generate Text",icon:"Edit",tagline:"Generate contentusing AI",description:"Uses AI to generate text content based on your instructions and chosen format",stepId:"GENERATE_TEXT",internal:!0,inputs:{contentType:"document"},features:{LOOPING:!0},schema:{inputs:{properties:{contentType:{type:"string",title:"Content type",enum:Object.values(nk),pretty:Object.values(lse)},instructions:{type:"longform",title:"Instructions",description:"Provide guidance to help the AI produce content in the format that you want"}},required:["contentType","instructions"]},outputs:{properties:{generatedText:{type:"string",description:"The text content generated by the AI"},success:{type:"boolean",description:"Whether the text generation was successful"}},required:["generatedText","success"]}},type:"ACTION"};var y4={};oe(y4,{definition:()=>rpt});var rpt={name:"Extract Document Data",icon:"Document",tagline:"Extract structured data from documents using AI",description:"Extracts structured data from PDF or image according to provided schema.",stepId:"EXTRACT_FILE_DATA",internal:!0,inputs:{},features:{LOOPING:!0},schema:{inputs:{properties:{file:{type:"string",title:"Document",description:"Attachment or Link to the document to extract data from."},source:{type:"string",enum:Object.values(ik),title:"Source",description:"The source of the document to extract data from."},fileType:{dependsOn:{field:"source",value:"URL"},type:"string",enum:Object.values(ak),title:"File Type",description:"The type of file at the URL."},schema:{customType:"triggerSchema",title:"Data schema",description:'Schema defining the structure of data to extract. Example: {"name": "string", "price": "number"}.'}},required:["file","schema"]},outputs:{properties:{data:{type:"json",description:"The structured data extracted from the document."},success:{type:"boolean",description:"Whether the extraction was successful."}},required:["data","success"]}},type:"ACTION"};var b4={};oe(b4,{definition:()=>npt});var npt={name:"State",tagline:"Extract automation state",icon:"brackets-curly",description:"Extract automation state into a named variable",type:"ACTION",internal:!0,new:!1,stepId:"EXTRACT_STATE",inputs:{},features:{LOOPING:!0},schema:{inputs:{properties:{key:{type:"string",title:"Key"},value:{type:"longform",title:"Value"}},required:["value","key"]},outputs:{properties:{value:{type:"string",description:"The result of the return statement"},success:{type:"boolean",description:"Whether the action was successful"}},required:["success"]}}};var v4={};oe(v4,{definition:()=>ipt});var ipt={name:"Loop",icon:"recycle",tagline:"Loop the block",description:"Loop",stepId:"LOOP_V2",internal:!0,features:{},inputs:{},schema:{inputs:{properties:{children:{type:"array"},binding:{type:"string",title:"Binding / Value"},iterations:{type:"number",title:"Max loop iterations"},failure:{type:"string",title:"Failure Condition"}}},outputs:{properties:{success:{type:"boolean",description:"Loop success"}},required:["success"]}},type:"LOGIC"};var E4={};oe(E4,{definitions:()=>ppt});var nfe={name:"User action",event:"app:trigger",icon:"cursor-click",tagline:"Automation fired from the frontend",description:"Trigger an automation from an action inside your app",stepId:"APP",inputs:{},schema:{inputs:{properties:{fields:{type:"object",customType:"triggerSchema",title:"Fields"}},required:[]},outputs:{properties:{fields:{type:"object",description:"Fields submitted from the app frontend",customType:"triggerSchema"}},required:["fields"]}},type:"TRIGGER"};var ife={name:"CRON / Schedule",event:"cron:trigger",icon:"clock",tagline:"Cron Trigger (<b>{{inputs.cron}}</b>)",description:"Triggers automation on a cron schedule.",stepId:"CRON",inputs:{},schema:{inputs:{properties:{cron:{type:"string",customType:"cron",title:"Expression"}},required:["cron"]},outputs:{properties:{timestamp:{type:"number",description:"Timestamp the cron was executed"}},required:["timestamp"]}},type:"TRIGGER"};var afe={name:"Row Deleted",event:"row:delete",icon:"trash-simple",tagline:"Row is deleted from {{inputs.enriched.table.name}}",description:"Fired when a row is deleted from your database",stepId:"ROW_DELETED",inputs:{},schema:{inputs:{properties:{tableId:{type:"string",customType:"table",title:"Table"}},required:["tableId"]},outputs:{properties:{row:{type:"object",customType:"row",description:"The row that was deleted"}},required:["row"]}},type:"TRIGGER"};var ofe={name:"Row Created",event:"row:save",icon:"rows-plus-bottom",tagline:"Row is added to {{inputs.enriched.table.name}}",description:"Fired when a row is added to your database",stepId:"ROW_SAVED",inputs:{},schema:{inputs:{properties:{tableId:{type:"string",customType:"table",title:"Table"},filters:{type:"object",customType:"trigger_filter",title:"Filtering"}},required:["tableId"]},outputs:{properties:{row:{type:"object",customType:"row",description:"The new row that was created"},id:{type:"string",description:"Row ID - can be used for updating"},revision:{type:"string",description:"Revision of row"}},required:["row","id"]}},type:"TRIGGER"};var sfe={name:"Row Updated",event:"row:update",icon:"arrow-clockwise",tagline:"Row is updated in {{inputs.enriched.table.name}}",description:"Fired when a row is updated in your database",stepId:"ROW_UPDATED",inputs:{},schema:{inputs:{properties:{tableId:{type:"string",customType:"table",title:"Table"},filters:{type:"object",customType:"trigger_filter",title:"Filtering"}},required:["tableId"]},outputs:{properties:{oldRow:{type:"object",customType:"row",description:"The row that was updated",title:"Old Row"},row:{type:"object",customType:"row",description:"The row before it was updated",title:"Row"},id:{type:"string",description:"Row ID - can be used for updating"},revision:{type:"string",description:"Revision of row"}},required:["row","id"]}},type:"TRIGGER"};var ufe={name:"Webhook",event:"web:trigger",icon:"paper-plane-right",tagline:"Webhook endpoint is hit",description:"Trigger an automation when a HTTP POST webhook is hit",stepId:"WEBHOOK",inputs:{},schema:{inputs:{properties:{schemaUrl:{type:"string",customType:"webhookUrl",title:"Schema URL"},triggerUrl:{type:"string",customType:"webhookUrl",title:"Trigger URL"}},required:["schemaUrl","triggerUrl"]},outputs:{properties:{body:{type:"object",description:"Body of the request which hit the webhook"}},required:["body"]}},type:"TRIGGER"};var cfe={type:"TRIGGER",name:"Row Action",event:"row:action",icon:"tree-structure",tagline:"Row action triggered in {{inputs.enriched.table.name}} by {{inputs.enriched.row._id}}",description:"row action workflow",stepId:"ROW_ACTION",inputs:{},schema:{inputs:{properties:{tableId:{type:"string",customType:"table",title:"Table",readonly:!0}},required:["tableId"]},outputs:{properties:{id:{type:"string",description:"Row ID - can be used for updating"},revision:{type:"string",description:"Revision of row"},table:{type:"object",customType:"table",title:"The table linked to the row action"},row:{type:"object",customType:"row",description:"The row linked to the row action"}}}}};var ppt={ROW_SAVED:ofe,ROW_UPDATED:sfe,ROW_DELETED:afe,WEBHOOK:ufe,APP:nfe,CRON:ife,ROW_ACTION:cfe};var dpt=Object.values(Mt).sort((e,t)=>t.length-e.length);function lfe(e){return dpt.find(t=>e.startsWith(`${t}${Me}`))}a(lfe,"getDocumentType");var hpt=Object.values(fd).sort((e,t)=>t.length-e.length);function ffe(e){return hpt.find(t=>e.startsWith(`${t}${Me}`))}a(ffe,"getVirtualDocumentType");var mpt=new RegExp("^datasource_plus_(.+)__(.+)$"),rC=a(e=>t=>!!t&&t.startsWith(`${e}${Me}`),"idCheckFor"),gpt=a(e=>{let t=e.match(mpt);return!!e&&t!==null},"isExternalTableId"),dc=a(e=>ypt(e)||gpt(e),"isTableIdOrExternalTableId"),ypt=rC("ta"),Ji=rC("view"),ov=rC("datasource"),pfe=rC("query");function Fi(e){if(!Ji(e))throw new Error("Unable to extract table ID, is not a view ID");let t=e.split(Me);return t.shift(),e=t.join(Me),new RegExp(`^(?<tableId>.+)${Me}([^${Me}]+)$`).exec(e).groups.tableId}a(Fi,"getTableIdFromViewId");var _4=(n=>(n.ALL="all",n.AUTOMATION="automation",n.STATUS="status",n))(_4||{}),wd=(f=>(f.USER_BY_WORKSPACE="by_app",f.USER_BY_EMAIL="by_email2",f.BY_API_KEY="by_api_key",f.LINK="by_link",f.ROUTING="screen_routes_2",f.AUTOMATION_LOGS="automation_logs",f.ACCOUNT_BY_EMAIL="account_by_email",f.PLATFORM_USERS_LOWERCASE="platform_users_lowercase_2",f.USER_BY_GROUP="user_by_group",f.WORKSPACE_BACKUP_BY_TRIGGER="by_trigger",f))(wd||{}),l0={by_email2:["by_email"]},bn={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"}},hc=ld("app"),S4=ld("app_dev"),mc=S4,Ed="internal",dfe="budibase",Pa="_design/sqlite",hfe="ta_bb_jobs",mfe="ta_bb_inventory",gfe="ta_bb_expenses",yfe="ta_bb_employee",nC=`ro${Me}ta_users${Me}`,Gm=(r=>(r[r.SQLITE=Pa]="SQLITE",r.MIGRATIONS="_design/migrations",r))(Gm||{});var x4=(r=>(r.ACTIVE="active",r.INACTIVE="inactive",r))(x4||{}),sv=(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))(sv||{}),bfe=(i=>(i.OWNER="owner",i.ADMIN="admin",i.BUILDER="builder",i.WORKSPACE_MANAGER="workspace_manager",i))(bfe||{}),vfe=(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))(vfe||{}),bpt=new Date(-2147483647e3),T4=new Date(2147483647e3),pi="default";var Ht={};oe(Ht,{CacheKey:()=>aa,TTL:()=>ly,bustCache:()=>eE,destroy:()=>aA,docWritethrough:()=>i7,generic:()=>oA,get:()=>fy,invite:()=>o7,keys:()=>lL,passwordReset:()=>s7,store:()=>mp,user:()=>Rh,withCache:()=>Sh,withCacheWithDynamicTTL:()=>KPe,workspace:()=>Tx,writethrough:()=>dK});var i7={};oe(i7,{DocWritethrough:()=>n7,DocWritethroughProcessor:()=>iA,getProcessor:()=>iVt,init:()=>VPe});var co={};oe(co,{BudibaseQueue:()=>Sc,InMemoryQueue:()=>T1,JobQueue:()=>Jv,QueuedProcessor:()=>r7,UnretriableError:()=>uL,shutdown:()=>P0t});var A4=require("crypto"),aC=require("fs"),wpt=require("lodash"),f0=require("path");var Ept=process.env.TOP_LEVEL_PATH||process.env.SERVER_TOP_LEVEL_PATH||(0,f0.resolve)((0,f0.join)(__dirname,"..","..","..")),wfe=!1;!wfe&&iC()&&!R4()&&(require("dotenv").config({path:(0,f0.join)(Ept,".env")}),wfe=!0);function R4(){return _fe()}a(R4,"isTest");function _fe(){return process.env.NODE_ENV==="jest"||process.env.JEST_WORKER_ID!=null&&process.env.JEST_WORKER_ID!=="null"}a(_fe,"isJest");function iC(){return process.env.NODE_ENV!=="production"}a(iC,"isDev");function _pt(e){if(e)return parseInt(e)}a(_pt,"parseIntSafe");var uv={BACKUPS:"backups",APPS:"prod-budi-app-assets",TEMPLATES:"templates",GLOBAL:"global",PLUGINS:"plugins",TEMP:"tmp-file-attachments"},Efe=!!parseInt(process.env.SELF_HOSTED||"");function Spt(){return process.env.API_ENCRYPTION_KEY?process.env.API_ENCRYPTION_KEY:process.env.JWT_SECRET}a(Spt,"getAPIEncryptionKey");function xpt(){return process.env.HTTP_LOGGING===void 0?!0:process.env.HTTP_LOGGING}a(xpt,"httpLogging");function Tpt(){function e(r){function n(u,c){let l=`${c}/${u}`;if((0,aC.existsSync)(l))return l;let f=`${c}/..`;return f===c?null:n(u,f)}a(n,"findFileInAncestors");let i=n(r,process.cwd()),o=(0,aC.readFileSync)(i,"utf-8");return JSON.parse(o)}a(e,"getParentFile");let t;if(iC()&&!R4())try{t=`${e("lerna.json").version}+local`}catch{}try{let r=e("package.json");return{VERSION:t||process.env.BUDIBASE_VERSION||r.version,SERVICE_NAME:r.name}}catch{return{VERSION:process.env.BUDIBASE_VERSION||"",SERVICE_NAME:""}}}a(Tpt,"getPackageJsonFields");function Apt(){return _d.SERVICE_TYPE==="worker"}a(Apt,"isWorker");function Rpt(){return _d.SERVICE_TYPE==="apps"}a(Rpt,"isApps");function Opt(){return _d.BUDIBASE_ENVIRONMENT==="QA"}a(Opt,"isQA");function Ipt(){return process.env.SERVICE?process.env.SERVICE:process.env.APPS_SERVICE?process.env.APPS_SERVICE:process.env.WORKER_SERVICE?process.env.WORKER_SERVICE:"budibase"}a(Ipt,"getServiceName");var _d={isTest:R4,isJest:_fe,isDev:iC,isWorker:Apt,isApps:Rpt,isQA:Opt,isProd:()=>!iC(),BUDIBASE_ENVIRONMENT:process.env.BUDIBASE_ENVIRONMENT,JS_BCRYPT:process.env.JS_BCRYPT,JWT_SECRET:process.env.JWT_SECRET?(0,A4.createSecretKey)(process.env.JWT_SECRET,"utf8"):void 0,JWT_SECRET_FALLBACK:process.env.JWT_SECRET_FALLBACK?(0,A4.createSecretKey)(process.env.JWT_SECRET_FALLBACK,"utf8"):void 0,ENCRYPTION_KEY:process.env.ENCRYPTION_KEY,API_ENCRYPTION_KEY:Spt(),COUCH_DB_URL:process.env.COUCH_DB_URL||"http://localhost:4005",COUCH_DB_SQL_URL:process.env.COUCH_DB_SQL_URL,COUCH_DB_USERNAME:process.env.COUCH_DB_USER,COUCH_DB_PASSWORD:process.env.COUCH_DB_PASSWORD,GOOGLE_CLIENT_ID:process.env.GOOGLE_CLIENT_ID,GOOGLE_CLIENT_SECRET:process.env.GOOGLE_CLIENT_SECRET,SALT_ROUNDS:process.env.SALT_ROUNDS,REDIS_URL:process.env.REDIS_URL||"localhost:6379",REDIS_PASSWORD:process.env.REDIS_PASSWORD,REDIS_CLUSTERED:process.env.REDIS_CLUSTERED,MINIO_ACCESS_KEY:process.env.MINIO_ACCESS_KEY,MINIO_SECRET_KEY:process.env.MINIO_SECRET_KEY,AWS_SESSION_TOKEN:process.env.AWS_SESSION_TOKEN,AWS_REGION:process.env.AWS_REGION||"eu-west-1",MINIO_URL:process.env.MINIO_URL,MINIO_ENABLED:process.env.MINIO_ENABLED||1,INTERNAL_API_KEY:process.env.INTERNAL_API_KEY,INTERNAL_API_KEY_FALLBACK:process.env.INTERNAL_API_KEY_FALLBACK,MULTI_TENANCY:process.env.MULTI_TENANCY,ACCOUNT_PORTAL_URL:process.env.ACCOUNT_PORTAL_URL||"https://account.budibase.app",INTERNAL_ACCOUNT_PORTAL_URL:process.env.INTERNAL_ACCOUNT_PORTAL_URL||process.env.ACCOUNT_PORTAL_URL||"https://account.budibase.app",ACCOUNT_PORTAL_API_KEY:process.env.ACCOUNT_PORTAL_API_KEY||"",BUDICLOUD_URL:process.env.BUDICLOUD_URL||"https://budibase.app",DISABLE_ACCOUNT_PORTAL:process.env.DISABLE_ACCOUNT_PORTAL,SELF_HOSTED:Efe,COOKIE_DOMAIN:process.env.COOKIE_DOMAIN,PLATFORM_URL:process.env.PLATFORM_URL||"",POSTHOG_TOKEN:process.env.POSTHOG_TOKEN,POSTHOG_PERSONAL_TOKEN:process.env.POSTHOG_PERSONAL_TOKEN,POSTHOG_API_HOST:process.env.POSTHOG_API_HOST||"https://us.i.posthog.com",POSTHOG_FEATURE_FLAGS_ENABLED:process.env.POSTHOG_FEATURE_FLAGS_ENABLED,ENABLE_ANALYTICS:process.env.ENABLE_ANALYTICS,TENANT_FEATURE_FLAGS:process.env.TENANT_FEATURE_FLAGS,CLOUDFRONT_CDN:process.env.CLOUDFRONT_CDN,CLOUDFRONT_PRIVATE_KEY_64:process.env.CLOUDFRONT_PRIVATE_KEY_64,CLOUDFRONT_PUBLIC_KEY_ID:process.env.CLOUDFRONT_PUBLIC_KEY_ID,BACKUPS_BUCKET_NAME:process.env.BACKUPS_BUCKET_NAME||uv.BACKUPS,APPS_BUCKET_NAME:process.env.APPS_BUCKET_NAME||uv.APPS,TEMPLATES_BUCKET_NAME:process.env.TEMPLATES_BUCKET_NAME||uv.TEMPLATES,GLOBAL_BUCKET_NAME:process.env.GLOBAL_BUCKET_NAME||uv.GLOBAL,PLUGIN_BUCKET_NAME:process.env.PLUGIN_BUCKET_NAME||uv.PLUGINS,TEMP_BUCKET_NAME:process.env.TEMP_BUCKET_NAME||uv.TEMP,USE_COUCH:process.env.USE_COUCH||!0,MOCK_REDIS:process.env.MOCK_REDIS,DEFAULT_LICENSE:process.env.DEFAULT_LICENSE,SERVICE:Ipt(),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:xpt(),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:Efe?process.env.ENABLE_SSO_MAINTENANCE_MODE:!1,...Tpt(),DISABLE_PINO_LOGGER:process.env.DISABLE_PINO_LOGGER,OFFLINE_MODE:process.env.OFFLINE_MODE,SESSION_EXPIRY_SECONDS:process.env.SESSION_EXPIRY_SECONDS,_set(e,t){process.env[e]=t,_d[e]=t},ROLLING_LOG_MAX_SIZE:process.env.ROLLING_LOG_MAX_SIZE||"10M",DISABLE_SCIM_CALLS:process.env.DISABLE_SCIM_CALLS,BB_ADMIN_USER_EMAIL:process.env.BB_ADMIN_USER_EMAIL,BB_ADMIN_USER_PASSWORD:process.env.BB_ADMIN_USER_PASSWORD,OPENAI_API_KEY:process.env.OPENAI_API_KEY,MIN_VERSION_WITHOUT_POWER_ROLE:process.env.MIN_VERSION_WITHOUT_POWER_ROLE||"3.0.0",DISABLE_CONTENT_SECURITY_POLICY:process.env.DISABLE_CONTENT_SECURITY_POLICY,BSON_BUFFER_SIZE:_pt(process.env.BSON_BUFFER_SIZE)};var Sfe=["API_ENCRYPTION_KEY","BB_ADMIN_USER_PASSWORD","COUCH_DB_PASSWORD","COUCH_DB_SQL_URL","COUCH_DB_URL","GOOGLE_CLIENT_SECRET","INTERNAL_API_KEY_FALLBACK","INTERNAL_API_KEY","JWT_SECRET","MINIO_ACCESS_KEY","MINIO_SECRET_KEY","OPENAI_API_KEY","REDIS_PASSWORD"];for(let[e,t]of Object.entries(_d))t==="0"&&(_d[e]=0),t==="false"&&(_d[e]=0);var V=_d;var uC={};oe(uC,{Databases:()=>O4,SEPARATOR:()=>cv,SelectableDatabase:()=>oC,getRedisClusterOptions:()=>I4,getRedisConnectionDetails:()=>sC,getRedisOptions:()=>Hm,removeDbPrefix:()=>k4});var cv="-",O4=(v=>(v.PW_RESETS="pwReset",v.VERIFICATIONS="verification",v.INVITATIONS="invitation",v.DEV_LOCKS="devLocks",v.DEBOUNCE="debounce",v.SESSIONS="session",v.USER_CACHE="users",v.FLAGS="flags",v.WORKSPACE_METADATA="appMetadata",v.QUERY_VARS="queryVars",v.LICENSES="license",v.GENERIC_CACHE="data_cache",v.WRITE_THROUGH="writeThrough",v.LOCKS="locks",v.SOCKET_IO="socket_io",v.BPM_EVENTS="bpmEvents",v.DOC_WRITE_THROUGH="docWriteThrough",v.RECAPTCHA_SESSION="recaptchaSession",v))(O4||{}),oC=(y=>(y[y.DEFAULT=0]="DEFAULT",y[y.SOCKET_IO=1]="SOCKET_IO",y[y.RATE_LIMITING=2]="RATE_LIMITING",y[y.UNUSED_2=3]="UNUSED_2",y[y.UNUSED_3=4]="UNUSED_3",y[y.UNUSED_4=5]="UNUSED_4",y[y.UNUSED_5=6]="UNUSED_5",y[y.UNUSED_6=7]="UNUSED_6",y[y.UNUSED_7=8]="UNUSED_7",y[y.UNUSED_8=9]="UNUSED_8",y[y.UNUSED_9=10]="UNUSED_9",y[y.UNUSED_10=11]="UNUSED_10",y[y.UNUSED_11=12]="UNUSED_11",y[y.UNUSED_12=13]="UNUSED_12",y[y.UNUSED_13=14]="UNUSED_13",y[y.UNUSED_14=15]="UNUSED_14",y))(oC||{});function sC(){let e=V.REDIS_PASSWORD,t=V.REDIS_URL.split("//");t=t.length>1?t[1]:t[0],t=t.split("@"),t.length>1?(e=t[0].split(":")[1],t=t[1]):t=t[0];let[r,n]=t.split(":"),i=parseInt(n);return{host:r,password:e,port:isNaN(i)?6379:i}}a(sC,"getRedisConnectionDetails");function I4(){return{slotsRefreshTimeout:2e3,dnsLookup:(e,t)=>t(null,e),redisOptions:{...Hm(),tls:{}}}}a(I4,"getRedisClusterOptions");function Hm(){let{host:e,password:t,port:r}=sC();return{connectTimeout:3e4,port:r,host:e,password:t}}a(Hm,"getRedisOptions");function k4(e){let t=e.split(cv);return t.length>=2?(t.shift(),t.join(cv)):t[0]}a(k4,"removeDbPrefix");var Wbe=te(require("events"));var Cr={};oe(Cr,{Duration:()=>mi,DurationType:()=>zbe,clearCookie:()=>Hd,compare:()=>P4,getAppIdFromCtx:()=>bg,getCookie:()=>Zf,hasCircularStructure:()=>_0t,hash:()=>D4,isAudited:()=>oz,isClient:()=>E0t,isPublicApiRequest:()=>v0t,isServingApp:()=>g0t,isServingBuilder:()=>y0t,isServingBuilderPreview:()=>b0t,isValidInternalAPIKey:()=>Px,newid:()=>kn,openJwt:()=>S1,setCookie:()=>$be,time:()=>x0t,timeout:()=>az,urlHasProtocol:()=>S0t,validEmail:()=>sz});var xfe=require("uuid");function kn(){return(0,xfe.v4)().replace(/-/g,"")}a(kn,"newid");var C4=V.JS_BCRYPT?require("bcryptjs"):require("bcrypt"),kpt=V.SALT_ROUNDS||10;async function D4(e){let t=await C4.genSalt(kpt);return C4.hash(e,t)}a(D4,"hash");async function P4(e,t){return C4.compare(e,t)}a(P4,"compare");var _1=te(require("jsonwebtoken"));var W={};oe(W,{DEFAULT_TENANT_ID:()=>pi,baseGlobalDBName:()=>hx,doInAutomationContext:()=>SSt,doInContext:()=>P$,doInEnvironmentContext:()=>PSt,doInFeatureFlagOverrideContext:()=>B$,doInIPContext:()=>F$,doInIdentityContext:()=>h0,doInLicenseContext:()=>TSt,doInScimContext:()=>NSt,doInSelfHostTenantUsingCloud:()=>xSt,doInTenant:()=>Xo,doInWorkspaceContext:()=>OSt,doInWorkspaceMigrationContext:()=>kSt,ensureSnippetContext:()=>rbe,getAuditLogDBName:()=>ebe,getAuditLogsDB:()=>FSt,getAutomationId:()=>N$,getCurrentContext:()=>dg,getDevWorkspaceDB:()=>jSt,getDevWorkspaceId:()=>CSt,getEnvironmentVariables:()=>LSt,getFeatureFlagOverrides:()=>M$,getFeatureFlags:()=>U$,getGlobalDB:()=>Ar,getGlobalDBName:()=>pg,getIP:()=>L$,getIdentity:()=>Mf,getLicense:()=>ASt,getPlatformURL:()=>D$,getProdWorkspaceDB:()=>USt,getProdWorkspaceId:()=>DSt,getScimDBName:()=>vSt,getSelfHostCloudDB:()=>RSt,getTableForView:()=>MSt,getTenantIDFromWorkspaceID:()=>Hv,getTenantId:()=>Pt,getWorkspaceDB:()=>Vv,getWorkspaceId:()=>Zo,identity:()=>d0,isMultiTenant:()=>Wd,isScim:()=>Ec,isSelfHostUsingCloud:()=>h1,isTenancyEnabled:()=>ESt,isTenantIdSet:()=>wSt,setFeatureFlags:()=>j$,setTableForView:()=>BSt});var d0={};oe(d0,{doInAccountContext:()=>Cpt,doInIdentityContext:()=>L4,doInUserContext:()=>F4,getAccountUserId:()=>Tfe,getIdentity:()=>N4});function N4(){return Mf()}a(N4,"getIdentity");function L4(e,t){return h0(e,t)}a(L4,"doInIdentityContext");function F4(e,t,r){let n={...e,_id:e._id,type:"user",hostInfo:{ipAddress:t.request.ip,userAgent:t.userAgent.source}};return L4(n,r)}a(F4,"doInUserContext");function Cpt(e,t){let r=Tfe(e),n=e.tenantId,i={_id:r,type:"user",tenantId:n,account:e};return L4(i,t)}a(Cpt,"doInAccountContext");function Tfe(e){let t;return tk(e)?t=e.budibaseUserId:t=e.accountId,t}a(Tfe,"getAccountUserId");var gc=a(e=>{let t=U4(e),r,n;if(t.auth?.username)r=t.auth.username;else if(V.COUCH_DB_USERNAME)r=V.COUCH_DB_USERNAME;else if(!V.isTest())throw new Error("CouchDB username not set");if(t.auth?.password)n=t.auth.password;else if(V.COUCH_DB_PASSWORD)n=V.COUCH_DB_PASSWORD;else if(!V.isTest())throw new Error("CouchDB password not set");let i=Buffer.from(`${r}:${n}`).toString("base64"),o=V.COUCH_DB_SQL_URL;if(V.isDev()&&!o)o="http://localhost:4006";else if(!o&&t.url){let s=new URL(t.url);o=t.url.replace(s.port,"4984")}return{url:t.url,sqlUrl:U4(o).url,auth:{username:r,password:n},cookie:`Basic ${i}`}},"getCouchInfo"),U4=a((e=V.COUCH_DB_URL)=>{let t,r,n,i;if(e){/^https?:\/\//i.test(e)||(e=`http://${e}`);let s=e.split("://"),u=s[0],c=s.slice(1).join("://");if(e.includes("@")){let l=c.split("@");i=l[l.length-1];let f=l.slice(0,-1).join("@");if(f.includes(":")){let p=f.split(":");r=p[0],n=p.slice(1).join(":")}else r=f}else i=c;t=`${u}://${i}`}return{url:t,auth:{username:r,password:n}}},"getUrlInfo");var Jye=te(require("@budibase/nano"));var Afe=te(require("node-fetch"));function cC(e){return e.replace(/(https?:\/\/)|(\/)+/g,"$1$2")}a(cC,"checkSlashesInUrl");async function Rfe(e,t="GET",r){let{url:n,cookie:i}=gc(),o=`${n}/${e}`;return await m0({url:o,cookie:i,method:t,body:r})}a(Rfe,"directCouchCall");async function m0({url:e,cookie:t,method:r,body:n}){let i={method:r,headers:{Authorization:t}};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,Afe.default)(cC(encodeURI(e)),i)}a(m0,"directCouchUrlCall");async function j4(e,t="GET",r){let n=await Rfe(e,t,r);if(n.status<300)return await n.json();throw"Cannot connect to CouchDB instance"}a(j4,"directCouchQuery");var fg=te(require("pouchdb"));var Hye,Vye=!1,E$=a((e={})=>{let{url:t,cookie:r}=gc(),n={prefix:t,fetch:(i,o)=>(o.headers.set("Authorization",r),fg.default.fetch(i,o))};if(e.inMemory){let i=Bme();fg.default.plugin(i),n={adapter:"memory"}}if(e.onDisk&&(n={adapter:"leveldb"}),e.replication){let i=Gye();fg.default.plugin(i.plugin),fg.default.adapter("writableStream",i.adapters.writableStream)}if(e.find){let i=require("pouchdb-find");fg.default.plugin(i)}return fg.default.defaults(n)},"getPouch");function c1(e){Hye=E$(e),Vye=!0}a(c1,"init");var tSt=a(()=>{if(!Vye)throw new Error("init has not been called")},"checkInitialised");function yu(e,t){tSt();let r=new Hye(e,t),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}a(yu,"getPouchDB");async function fx(e){if(!(!e||V.isTest()))try{return await e.close()}catch{}}a(fx,"closePouchDB");var hi=te(require("dd-trace"));var zv=class{constructor(t){this.db=t}static{a(this,"DDInstrumentedDatabase")}get name(){return this.db.name}exists(t){return hi.default.trace("db.exists",r=>(r.addTags({db_name:this.name,doc_id:t}),t?this.db.exists(t):this.db.exists()))}get(t){return hi.default.trace("db.get",r=>(r.addTags({db_name:this.name,doc_id:t}),this.db.get(t)))}tryGet(t){return hi.default.trace("db.tryGet",async r=>{r.addTags({db_name:this.name,doc_id:t});let n=await this.db.tryGet(t);return r.addTags({doc_found:n!==void 0}),n})}getMultiple(t,r){return hi.default.trace("db.getMultiple",async n=>{n.addTags({db_name:this.name,num_docs:t?.length||0,allow_missing:r?.allowMissing});let i=await this.db.getMultiple(t,r);return n.addTags({num_docs_found:i.length}),i})}remove(t,r){return hi.default.trace("db.remove",async n=>{n.addTags({db_name:this.name,doc_id:t,rev:r});let i=typeof t=="object",o=i?t._id:t;r=i?t._rev:r;let s=await this.db.remove(o,r);return n.addTags({ok:s.ok}),s})}bulkRemove(t,r){return hi.default.trace("db.bulkRemove",n=>(n.addTags({db_name:this.name,num_docs:t.length,silence_errors:r?.silenceErrors}),this.db.bulkRemove(t,r)))}put(t,r){return hi.default.trace("db.put",async n=>{n.addTags({db_name:this.name,doc_id:t._id,force:r?.force,return_doc:r?.returnDoc});let i=await this.db.put(t,r);return n.addTags({ok:i.ok}),i})}bulkDocs(t){return hi.default.trace("db.bulkDocs",r=>(r.addTags({db_name:this.name,num_docs:t.length}),this.db.bulkDocs(t)))}async find(t){return hi.default.trace("db.find",async r=>{r.addTags({db_name:this.name,...t});let n=await this.db.find(t);return r.addTags({rows_length:n.docs.length}),n})}allDocs(t){return hi.default.trace("db.allDocs",async r=>{r.addTags({db_name:this.name,...t});let n=await this.db.allDocs(t);return r.addTags({total_rows:n.total_rows,rows_length:n.rows.length,offset:n.offset}),n})}query(t,r){return hi.default.trace("db.query",async n=>{n.addTags({db_name:this.name,view_name:t,...r});let i=await this.db.query(t,r);return n.addTags({total_rows:i.total_rows,rows_length:i.rows.length,offset:i.offset}),i})}destroy(){return hi.default.trace("db.destroy",async t=>{t.addTags({db_name:this.name});let r=await this.db.destroy();return t.addTags({ok:r.ok}),r})}compact(){return hi.default.trace("db.compact",async t=>{t.addTags({db_name:this.name});let r=await this.db.compact();return t.addTags({ok:r.ok}),r})}dump(t,r){return hi.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(t,r)))}load(...t){return hi.default.trace("db.load",r=>(r.addTags({db_name:this.name,num_args:t.length}),this.db.load(...t)))}createIndex(...t){return hi.default.trace("db.createIndex",r=>(r.addTags({db_name:this.name,num_args:t.length}),this.db.createIndex(...t)))}deleteIndex(...t){return hi.default.trace("db.deleteIndex",r=>(r.addTags({db_name:this.name,num_args:t.length}),this.db.deleteIndex(...t)))}getIndexes(...t){return hi.default.trace("db.getIndexes",r=>(r.addTags({db_name:this.name,num_args:t.length}),this.db.getIndexes(...t)))}sql(t,r){return hi.default.trace("db.sql",async n=>{n.addTags({db_name:this.name,num_bindings:r?.length});let i=await this.db.sql(t,r);return n.addTags({num_rows:i.length}),i})}sqlPurgeDocument(t){return hi.default.trace("db.sqlPurgeDocument",r=>(r.addTags({db_name:this.name,num_docs:Array.isArray(t)?t.length:1}),this.db.sqlPurgeDocument(t)))}sqlDiskCleanup(){return hi.default.trace("db.sqlDiskCleanup",t=>(t.addTags({db_name:this.name}),this.db.sqlDiskCleanup()))}};var I$={};oe(I$,{breakExternalTableId:()=>x$,breakRowIdField:()=>hSt,buildExternalTableId:()=>uSt,convertRowId:()=>dSt,encodeTableId:()=>cSt,encodeViewId:()=>lSt,extractDate:()=>A$,generateRowIdField:()=>fSt,getNativeSql:()=>Wv,isExternalTable:()=>S$,isExternalTableID:()=>l1,isInternalTableID:()=>sSt,isRowId:()=>pSt,isValidFilter:()=>p1,isValidISODateString:()=>f1,isValidISODateStringWithoutTimezone:()=>T$,isValidTime:()=>R$,sqlLog:()=>px,validateManyToMany:()=>O$});var _$=`${Me}${Me}`,Kye=/^\[.*]$/g,rSt=encodeURIComponent(" "),nSt=/^\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}:\d{2}(?:.\d{3})?Z)?$/,iSt=/^\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}:\d{2}(?:.\d{3})?)?$/,aSt=/(\d{4}-\d{2}-\d{2})/,oSt=/^(?:\d{2}:)?(?:\d{2}:)(?:\d{2})$/;function l1(e){return e.startsWith("datasource"+Me)}a(l1,"isExternalTableID");function sSt(e){return!l1(e)}a(sSt,"isInternalTableID");function Wv(e){let t=e.toSQL();if(Array.isArray(t))return t;let r;return t.toNative&&(r=t.toNative()),{sql:r?.sql||t.sql,bindings:r?.bindings||t.bindings}}a(Wv,"getNativeSql");function S$(e){return e?.sourceId&&e.sourceId.includes("datasource"+Me)&&e?.sourceId!==yS||e?.sourceType==="external"?!0:!!(e?._id&&l1(e._id))}a(S$,"isExternalTable");function uSt(e,t){return`${e}${_$}${encodeURIComponent(t)}`}a(uSt,"buildExternalTableId");function cSt(e){return l1(e)?encodeURIComponent(e):e}a(cSt,"encodeTableId");function lSt(e){return encodeURIComponent(e)}a(lSt,"encodeViewId");function x$(e){let t=e.split(_$),r=t.shift(),n=t.join(_$);if(n.includes(rSt)&&(n=decodeURIComponent(n)),!r||!n)throw new Error("Unable to get datasource/table name from table ID");return{datasourceId:r,tableName:n}}a(x$,"breakExternalTableId");function fSt(e=[]){Array.isArray(e)||(e=[e]);for(let t in e)e[t]instanceof Buffer&&(e[t]=e[t].toString());return encodeURIComponent(JSON.stringify(e).replace(/"/g,"'"))}a(fSt,"generateRowIdField");function pSt(e){return Array.isArray(e)||typeof e=="string"&&e.match(Kye)!=null}a(pSt,"isRowId");function dSt(e){return Array.isArray(e)?e[0]:typeof e=="string"&&e.match(Kye)!=null?e.substring(1,e.length-1):e}a(dSt,"convertRowId");function hSt(e){if(!e)return[];let t=typeof e=="string"?e:e._id,r=decodeURIComponent(t).replace(/'/g,'"');try{let n=JSON.parse(r);return Array.isArray(n)?n:[n]}catch{return[e]}}a(hSt,"breakRowIdField");function f1(e){let t=e.trim();if(!nSt.test(t))return!1;let r=new Date(t);return!isNaN(r.getTime())}a(f1,"isValidISODateString");function T$(e){let t=e.trim();if(!iSt.test(t))return!1;let r=new Date(t);return!isNaN(r.getTime())}a(T$,"isValidISODateStringWithoutTimezone");function A$(e){let t=e.match(aSt);if(t)return t[0]}a(A$,"extractDate");function p1(e){return e!=null&&e!==""}a(p1,"isValidFilter");function R$(e){return oSt.test(e)}a(R$,"isValidTime");function px(e,t,r){if(!V.SQL_LOGGING_ENABLE)return;let n=`[SQL] [${e.toUpperCase()}] query="${t}"`;r&&(n+=` values="${r.join(", ")}"`),console.log(n)}a(px,"sqlLog");function mSt(e){return!!e.through&&!!e.fromPrimary&&!!e.from&&!!e.toPrimary&&!!e.to}a(mSt,"isValidManyToManyRelationship");function O$(e){if(mSt(e))return e}a(O$,"validateManyToMany");var Qye="Database does not exist.";function Yye(e){return(0,Jye.default)({url:e.url,requestDefaults:{headers:{Authorization:e.cookie}},parseUrl:!1})}a(Yye,"buildNano");var $d=class extends Error{constructor(r,n){super(r);let i=n.status||n.statusCode||500;this.status=i,this.statusCode=i,this.reason=n.reason||"Unknown",this.name=n.name,this.errid=n.errid||"Unknown",this.description=n.description||"Unknown",this.error=n.error||"Not found"}static{a(this,"CouchDBError")}};function gSt(e,t,r){if(!e||!t)throw new Error("Unable to create database without database name or connection");let n=new Gv(e,r,t);return new zv(n)}a(gSt,"DatabaseWithConnection");var Gv=class e{constructor(t,r,n){this.couchInfo=gc();this.name=t,this.pouchOpts=r||{},n&&(this.couchInfo=gc(n),this.instanceNano=Yye(this.couchInfo)),e.nano||e.init()}static{a(this,"DatabaseImpl")}static init(){let t=gc();e.nano=Yye(t)}exists(t){return t===void 0?this.dbExists():this.docExists(t)}async dbExists(){return(await m0({url:`${this.couchInfo.url}/${this.name}`,method:"HEAD",cookie:this.couchInfo.cookie})).status===200}async docExists(t){try{return await this.performCall(r=>()=>r.head(t)),!0}catch{return!1}}nano(){return this.instanceNano||e.nano}getDb(){return this.nano().db.use(this.name)}async checkAndCreateDb(){let t=!this.pouchOpts?.skip_setup,r=await this.exists();if(!t&&!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 $d(n.message,n)}return this.getDb()}async performCallWithDBCreation(t){let r=this.getDb(),n=await t(r);try{return await n()}catch(i){if(i.statusCode===404&&i.reason===Qye)return await this.checkAndCreateDb(),await this.performCallWithDBCreation(t);throw new $d(`CouchDB error: ${i.message}`,i)}}async performCall(t){let r=this.getDb(),n=await t(r);try{return await n()}catch(i){throw new $d(`CouchDB error: ${i.message}`,i)}}async get(t){return this.performCall(r=>{if(!t)throw new Error("Unable to get doc without a valid _id.");return()=>r.get(t)})}async tryGet(t){try{return await this.get(t)}catch(r){if(r.statusCode===404)return;throw r}}async getMultiple(t,r){if(!t||t.length===0)return[];t=[...new Set(t)];let n=!r?.excludeDocs,i=await this.allDocs({keys:t,include_docs:n}),o=a(c=>n&&c.doc==null||c.value&&"deleted"in c.value&&c.value.deleted?!0:c.error==="not_found","rowUnavailable"),s=i.rows.filter(c=>!o(c)),u=s.length!==i.rows.length;if(!r?.allowMissing&&u){let l=i.rows.filter(f=>o(f)).map(f=>f.key).join(", ");throw new Error(`Unable to get bulk documents: ${l}`)}return s.map(c=>n?c.doc:c.value)}async remove(t,r){return this.performCall(n=>{let i,o;if(ase(t)?(i=t._id,o=t._rev):(i=t,o=r),!i||!o)throw new Error("Unable to remove doc without a valid _id and _rev.");return()=>n.destroy(i,o)})}async bulkRemove(t,r){let n=await this.performCall(s=>()=>s.bulk({docs:t.map(u=>({...u,_deleted:!0}))}));if(r?.silenceErrors)return;let i=!1,o="Unable to bulk remove documents: ";for(let s of n)s.error&&(i=!0,o+=s.error);if(i)throw new $d(o,{name:this.name,status:400})}async post(t,r){return t._id||(t._id=kn()),this.put(t,r)}async put(t,r){if(!t._id)throw new Error("Cannot store document without _id field.");return this.performCallWithDBCreation(async n=>{if(t.createdAt||(t.createdAt=new Date().toISOString()),t.updatedAt=new Date().toISOString(),r?.force&&t._id)try{let i=await this.get(t._id);i&&(t._rev=i._rev)}catch(i){if(i.status!==404)throw i}return async()=>{let i=await n.insert(t);return r?.returnDoc?{...i,doc:{...t,_rev:i.rev}}:i}})}async bulkDocs(t){let r=new Date().toISOString();return this.performCallWithDBCreation(n=>()=>n.bulk({docs:t.map(i=>({createdAt:r,...i,updatedAt:r}))}))}async find(t){return this.performCall(r=>async()=>r.find(t))}async allDocs(t){return this.performCall(r=>async()=>{try{return await r.list(t)}catch(n){if(n.reason===Qye)return{offset:0,total_rows:0,rows:[]};throw n}})}async _sqlQuery(t,r,n){t=cC(`${this.couchInfo.sqlUrl}/${t}`);let i={url:t,method:r,cookie:this.couchInfo.cookie};return n&&(i.body=n),this.performCall(()=>async()=>{let o=await m0(i),s=await o.text();if(o.status>300){let u;try{u=JSON.parse(s)}catch{throw console.error(`SQS error: ${s}`),new $d("error while running SQS query, please try again later",{name:"sqs_error",status:o.status})}throw u}return JSON.parse(s)})}async sql(t,r){let i=`/${this.name}/${Pa}`;return px("sqlite3",t,r),await this._sqlQuery(i,"POST",{query:t,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(t){Array.isArray(t)||(t=[t]);let n=`/${this.name}/_purge`;return await this._sqlQuery(n,"POST",{docs:t})}async query(t,r){return this.performCall(n=>{let[i,o]=t.split("/");return()=>n.view(i,o,r)})}async destroy(){if(await this.exists(Pa)){let t=await this.get(Pa);t.sql.tables={},await this.put(t),await this.sqlDiskCleanup()}try{return await this.nano().db.destroy(this.name)}catch(t){if(t.statusCode===404)return{ok:!0};throw new $d(t.message,t)}}async compact(){return this.performCall(t=>()=>t.compact())}async dump(t,r){return yu(this.name).dump(t,r)}async load(t){return yu(this.name).load(t)}async createIndex(t){return yu(this.name).createIndex(t)}async deleteIndex(t){return yu(this.name).deleteIndex(t)}async getIndexes(){return yu(this.name).getIndexes()}};function Io(e,t){return new zv(new Gv(e,t))}a(Io,"getDB");async function Fs(e,t,r){let n=Io(e,r);return await t(n)}a(Fs,"doWithDB");async function k$(e){let t="/_all_dbs";return e&&(t+=`?${e}`),await j4(t)}a(k$,"directCouchAllDbs");var C$="No app provided";function zd(e){if(!e)throw C$;return e.startsWith(mc)}a(zd,"isDevWorkspaceID");function ySt(e){if(!e)throw C$;return e.startsWith(hc)&&!zd(e)}a(ySt,"isProdWorkspaceID");function dx(e){if(!e)throw C$;return zd(e.appId)}a(dx,"isDevWorkspace");function d1(e){if(!e||e.startsWith(mc))return e;let t=e.split(hc);t.shift();let r=t.join(hc);return`${mc}${r}`}a(d1,"getDevWorkspaceID");function Us(e){if(!e||!e.startsWith(mc))return e;let t=e.split(mc);t.shift();let r=t.join(mc);return`${hc}${r}`}a(Us,"getProdWorkspaceID");var Xye=require("async_hooks");var ji=class e{static{a(this,"Context")}static{this.storage=new Xye.AsyncLocalStorage}static run(t,r){return e.storage.run(t,()=>r())}static get(){return e.storage.getStore()}};var Zye=null;function pg(e){return e||(e=Pt()),hx(e)}a(pg,"getGlobalDBName");function ebe(e){return e||(e=Pt()),e===pi?bn.AUDIT_LOGS.name:`${e}${Me}${bn.AUDIT_LOGS.name}`}a(ebe,"getAuditLogDBName");function vSt(e){return e||(e=Pt()),e===pi?bn.SCIM_LOGS.name:`${e}${Me}${bn.SCIM_LOGS.name}`}a(vSt,"getScimDBName");function hx(e){return!e||e===pi?bn.GLOBAL.name:`${e}${Me}${bn.GLOBAL.name}`}a(hx,"baseGlobalDBName");function D$(){return V.PLATFORM_URL}a(D$,"getPlatformURL");function Wd(){return!!V.MULTI_TENANCY}a(Wd,"isMultiTenant");function wSt(){return!!ji.get()?.tenantId}a(wSt,"isTenantIdSet");function ESt(){return V.MULTI_TENANCY}a(ESt,"isTenancyEnabled");function Hv(e){if(!e)return;if(!Wd())return pi;let t=e.split(Me),r=t[1]==="dev";if(!(r&&t.length===3||!r&&t.length===2))return r?t[2]:t[1]}a(Hv,"getTenantIDFromWorkspaceID");function _St(e){let t;try{t=ji.get()}catch{t={}}return t={...t,...e},t}a(_St,"updateContext");async function wc(e,t){ISt();let r=_St(e);return ji.run(r,t)}a(wc,"newContext");async function SSt(e){return await rbe(),await wc({tenantId:Hv(e.workspaceId),appId:e.workspaceId,automationId:e.automationId},e.task)}a(SSt,"doInAutomationContext");async function P$(e,t){let r=Hv(e);return wc({tenantId:r,appId:e},t)}a(P$,"doInContext");async function Xo(e,t){return V.MULTI_TENANCY||(e=e||pi),wc(e?{tenantId:e}:{},t)}a(Xo,"doInTenant");async function xSt(e,t){return wc({tenantId:e,isSelfHostUsingCloud:!0},t)}a(xSt,"doInSelfHostTenantUsingCloud");async function TSt(e,t){return wc({license:e},t)}a(TSt,"doInLicenseContext");function ASt(){return ji.get()?.license}a(ASt,"getLicense");function h1(){return!!ji.get()?.isSelfHostUsingCloud}a(h1,"isSelfHostUsingCloud");function RSt(){let e=ji.get();if(!e||!e.isSelfHostUsingCloud)throw new Error("Self-host cloud DB not found");return Io(bn.SELF_HOST_CLOUD.name)}a(RSt,"getSelfHostCloudDB");async function OSt(e,t){return tbe(e,t)}a(OSt,"doInWorkspaceContext");async function tbe(e,t,r){if(!e)throw new Error("workspaceId is required");let n=Hv(e),i={appId:e,...r};return n&&(i.tenantId=n),wc(i,t)}a(tbe,"_doInWorkspaceContext");async function h0(e,t){if(!e)throw new Error("identity is required");let r={identity:e};return e.tenantId&&(r.tenantId=e.tenantId),wc(r,t)}a(h0,"doInIdentityContext");function ISt(){if(ji.get()?.isMigrating)throw new Error("The context cannot be changed, a migration is currently running")}a(ISt,"guardMigration");async function kSt(e,t){return tbe(e,t,{isMigrating:!0})}a(kSt,"doInWorkspaceMigrationContext");function Mf(){try{return ji.get()?.identity}catch{}}a(Mf,"getIdentity");function Pt(){if(!Wd())return pi;let t=ji.get()?.tenantId;if(!t)throw new Error("Tenant id not found");return t}a(Pt,"getTenantId");function N$(){return ji.get()?.automationId}a(N$,"getAutomationId");function Zo(){let t=ji.get()?.appId;return!t&&V.isTest()&&Zye?Zye:t}a(Zo,"getWorkspaceId");function L$(){return ji.get()?.ip}a(L$,"getIP");var CSt=a(()=>{let e=Zo();if(!e)throw new Error("Could not get workspaceId");return d1(e)},"getDevWorkspaceId"),DSt=a(()=>{let e=Zo();if(!e)throw new Error("Could not get workspaceId");return Us(e)},"getProdWorkspaceId");function PSt(e,t){if(!e)throw new Error("Must supply environment variables.");return wc({environmentVariables:e},t)}a(PSt,"doInEnvironmentContext");function NSt(e){return wc({isScim:!0},e)}a(NSt,"doInScimContext");function F$(e,t){return wc({ip:e},t)}a(F$,"doInIPContext");async function rbe(){let e=dg();if(!e||e.snippets)return;let t,r=Vv();r&&(t=(await r.tryGet("app_metadata"))?.snippets),e.snippets=t||[]}a(rbe,"ensureSnippetContext");function LSt(){let e=ji.get();return e.environmentVariables?e.environmentVariables:null}a(LSt,"getEnvironmentVariables");function Ar(){let e=ji.get();if(!e||V.MULTI_TENANCY&&!e.tenantId)throw new Error("Global DB not found");if(e.isSelfHostUsingCloud)throw new Error("Global DB not found - self-host users using cloud don't have a global DB");return Io(hx(e?.tenantId))}a(Ar,"getGlobalDB");function FSt(){if(!Pt())throw new Error("No tenant ID found - cannot open audit log DB");return Io(ebe())}a(FSt,"getAuditLogsDB");function Vv(e){let t=Zo();if(!t)throw new Error("Unable to retrieve workspace DB - no workspace ID.");if(h1())throw new Error("Workspace DB not found - self-host users using cloud don't have workspace DBs");return Io(t,e)}a(Vv,"getWorkspaceDB");function USt(e){let t=Zo();if(!t)throw new Error("Unable to retrieve prod DB - no workspace ID.");return Io(Us(t),e)}a(USt,"getProdWorkspaceDB");function jSt(e){let t=Zo();if(!t)throw new Error("Unable to retrieve dev DB - no workspace ID.");return Io(d1(t),e)}a(jSt,"getDevWorkspaceDB");function Ec(){return!!ji.get()?.isScim}a(Ec,"isScim");function dg(){try{return ji.get()}catch{return}}a(dg,"getCurrentContext");function U$(e){let t=dg();if(t)return t.featureFlagCache?.[e]}a(U$,"getFeatureFlags");function j$(e,t){let r=dg();r&&(r.featureFlagCache??={},r.featureFlagCache[e]=t)}a(j$,"setFeatureFlags");function M$(){return dg()?.featureFlagOverrides||{}}a(M$,"getFeatureFlagOverrides");async function B$(e,t){return await wc({featureFlagOverrides:e},t)}a(B$,"doInFeatureFlagOverrideContext");function MSt(e){let t=dg();if(t)return t.viewToTableCache?.[e]}a(MSt,"getTableForView");function BSt(e,t){let r=dg();r&&(r.viewToTableCache??={},r.viewToTableCache[e]=t)}a(BSt,"setTableForView");var ne={};oe(ne,{AutomationViewMode:()=>_4,BUDIBASE_DATASOURCE_TYPE:()=>dfe,DEFAULT_BB_DATASOURCE_ID:()=>yS,DEFAULT_EMPLOYEE_TABLE_ID:()=>yfe,DEFAULT_EXPENSES_TABLE_ID:()=>gfe,DEFAULT_INVENTORY_TABLE_ID:()=>mfe,DEFAULT_JOBS_TABLE_ID:()=>hfe,DatabaseImpl:()=>Gv,DatabaseWithConnection:()=>gSt,DeprecatedViews:()=>l0,DesignDocuments:()=>Gm,DocumentType:()=>Mt,InternalTable:()=>Cf,QueryBuilder:()=>Xf,Replication:()=>Lbe,SEPARATOR:()=>Me,SQLITE_DESIGN_DOC_ID:()=>Pa,SQS_DATASOURCE_INTERNAL:()=>Ed,StaticDatabases:()=>bn,UNICODE_MAX:()=>Da,USER_METADATA_PREFIX:()=>nC,ViewName:()=>wd,WORKSPACE_DEV:()=>S4,WORKSPACE_DEV_PREFIX:()=>mc,WORKSPACE_PREFIX:()=>hc,baseGlobalDBName:()=>hx,checkErrorCode:()=>Mbe,closePouchDB:()=>fx,createApiKeyView:()=>kbe,createNewUserEmailView:()=>Obe,createPlatformAccountEmailView:()=>Dbe,createPlatformUserView:()=>Pbe,createUserAppView:()=>Ibe,createView:()=>Yv,dbExists:()=>t0t,directCouchAllDbs:()=>k$,directCouchCall:()=>Rfe,directCouchQuery:()=>j4,directCouchUrlCall:()=>m0,doWithDB:()=>Fs,fullSearch:()=>o0t,generateAgentChatID:()=>gbe,generateAgentToolSourceID:()=>ybe,generateAppUserID:()=>v1,generateDevInfoID:()=>dbe,generateGlobalUserID:()=>Qv,generateOAuth2LogID:()=>mbe,generatePluginID:()=>hbe,generateRoleID:()=>K$,generateRowID:()=>V$,generateTableID:()=>ube,generateTemplateID:()=>pbe,generateUserMetadataID:()=>lbe,generateWorkspaceAppID:()=>bbe,generateWorkspaceFavouriteID:()=>vbe,generateWorkspaceID:()=>sbe,getAllDbs:()=>Rbe,getAllWorkspaces:()=>Rx,getCouchInfo:()=>gc,getDB:()=>Io,getDevWorkspaceID:()=>d1,getDevWorkspaceIDs:()=>ZSt,getDocParams:()=>Yf,getGlobalDBName:()=>pg,getGlobalIDFromUserMetadataID:()=>fbe,getGlobalUserParams:()=>gg,getOAuth2ConfigParams:()=>xbe,getPluginParams:()=>Sbe,getPouch:()=>E$,getPouchDB:()=>yu,getProdWorkpaceIDs:()=>XSt,getProdWorkspaceID:()=>Us,getQueryIndex:()=>wbe,getRoleParams:()=>E1,getRowParams:()=>Q$,getStartEndKeyURL:()=>Ax,getTemplateParams:()=>_be,getUrlInfo:()=>U4,getUserMetadataParams:()=>Ebe,getUsersByWorkspaceParams:()=>w1,getWorkspaceAppParams:()=>Tbe,getWorkspaceFavouriteParams:()=>Abe,getWorkspacesByIDs:()=>JSt,init:()=>c1,isDevWorkspace:()=>dx,isDevWorkspaceID:()=>zd,isDocumentConflictError:()=>u0t,isGlobalUserID:()=>cbe,isProdWorkspaceID:()=>ySt,isSameWorkspaceID:()=>e0t,paginatedSearch:()=>a0t,pagination:()=>Y$,prefixRoleID:()=>Qf,queryGlobalView:()=>Jf,queryGlobalViewRaw:()=>Z$,queryPlatformView:()=>Ix,queryView:()=>X$,queryViewRaw:()=>Ox,removeKeyNumbering:()=>kx,searchIndexes:()=>rz});var Tx={};oe(Tx,{WorkspaceState:()=>H$,getWorkspaceMetadata:()=>b1,invalidateWorkspaceMetadata:()=>QSt});var Gd={};oe(Gd,{getCacheClient:()=>z$,getDocWritethroughClient:()=>GSt,getInviteClient:()=>mg,getLockClient:()=>G$,getPasswordResetClient:()=>xx,getSessionClient:()=>Kv,getSocketClient:()=>WSt,getUserClient:()=>Sx,getWorkspaceClient:()=>y1,getWritethroughClient:()=>W$,init:()=>_c,shutdown:()=>abe});var g1=te(require("ioredis"));var m1=require("dd-trace"),ibe=require("lodash");var nbe;if(V.MOCK_REDIS)try{nbe=require("ioredis-mock")}catch{console.log("Mock redis unavailable")}async function qSt(e=0){return await m1.tracer.trace("Redis.init",async t=>{if(V.MOCK_REDIS)return t.addTags({mock:!0}),new nbe(Hm());let r;if(V.REDIS_CLUSTERED){t.addTags({clustered:!0});let{host:n,port:i}=sC();r=new g1.Cluster([{host:n,port:i}],I4())}else r=new g1.default(Hm());return new Promise((n,i)=>{r.on("error",o=>{t.addTags({error:!0}),console.error(`failed to connect to redis (db: ${e})`,o),i(o)}),r.on("reconnecting",()=>{console.log(`Redis reconnecting... (db: ${e})`)}),r.on("ready",()=>{t.addTags({connected:!0}),console.log(`Redis ready to receive commands (db: ${e})`),n(r)})})})}a(qSt,"init");function $St(e,t){return new Promise((r,n)=>{let i=new Set;e.on("data",o=>o.forEach(s=>i.add(s))),e.on("error",o=>n(o)),e.on("end",async()=>{try{let o=Array.from(i).map(async s=>{let u=await t.get(s);return u&&(u=JSON.parse(u)),{key:k4(s),value:u}});r(await Promise.all(o))}catch(o){n(o)}})})}a($St,"promisifyStream");function zSt(e){return e.isCluster}a(zSt,"isCluster");var q$=class e{static{a(this,"RedisWrapper")}constructor(t,r){this.client=t,this.db=r}static async init(t,r=0){return await m1.tracer.trace("RedisWrapper.init",async n=>{let i=await qSt(r);return r&&!V.isTest()&&(n.addTags({db:t}),i.select(r)),new e(i,t)})}trace(t,r){return m1.tracer.trace(t,async n=>(n.addTags({db:this.db}),await r(n)))}prefixed(t){return t.includes(this.db)?t:`${this.db}${cv}${t}`}async finish(){return await this.trace("RedisWrapper.finish",async()=>{await this.client.quit()})}async scan(t=""){return await this.trace("RedisWrapper.scan",async r=>{r.addTags({key:t}),t=`${this.db}${cv}${t}`;let n;zSt(this.client)?n=this.client.nodes("master")[0].scanStream({match:t+"*",count:100}):n=this.client.scanStream({match:t+"*",count:100});let i=await $St(n,this.client);return r.addTags({numKeysFound:i.length}),i})}async keys(t){return await this.trace("RedisWrapper.keys",async r=>(r.addTags({pattern:t}),this.client.keys(this.prefixed(t))))}async exists(t){return await this.trace("RedisWrapper.exists",async r=>(r.addTags({key:t}),await this.client.exists(this.prefixed(t))))}async get(t){return await this.trace("RedisWrapper.get",async r=>{r.addTags({key:t});let n=await this.client.get(this.prefixed(t));n!=null&&n.key&&(n.key=t);try{return JSON.parse(n)}catch{return n}})}async bulkGet(t){return await this.trace("RedisWrapper.bulkGet",async r=>{if(r.addTags({numKeys:t.length}),t.length===0)return{};let n=await this.client.mget(t.map(i=>this.prefixed(i)));return r.addTags({numKeysFound:n.length}),(0,ibe.zip)(t,n).reduce((i,[o,s])=>{if(o===void 0||s===void 0)throw new Error(`Keys and response length mismatch: ${t.length} vs ${n.length}`);try{i[o]=s?JSON.parse(s):null}catch{i[o]=s}return i},{})})}async store(t,r,n=null){return await this.trace("RedisWrapper.store",async i=>{i.addTags({key:t,expirySeconds:n}),typeof r=="object"&&(r=JSON.stringify(r)),await this.client.set(this.prefixed(t),r),n&&await this.client.expire(this.prefixed(t),n)})}async bulkStore(t,r=null){return await this.trace("RedisWrapper.bulkStore",async n=>{n.addTags({numKeys:Object.keys(t).length,expirySeconds:r});let i=Object.entries(t).reduce((s,[u,c])=>(s[this.prefixed(u)]=typeof c=="object"?JSON.stringify(c):c,s),{}),o=this.client.pipeline();if(o.mset(i),r!==null)for(let s of Object.keys(i))o.expire(s,r);await o.exec()})}async getTTL(t){return await this.trace("RedisWrapper.getTTL",async r=>(r.addTags({key:t}),await this.client.ttl(this.prefixed(t))))}async setExpiry(t,r){return await this.trace("RedisWrapper.setExpiry",async n=>(n.addTags({key:t,expirySeconds:r}),await this.client.expire(this.prefixed(t),r)))}async delete(t){return await this.trace("RedisWrapper.delete",async r=>{r.addTags({key:t}),await this.client.del(this.prefixed(t))})}async bulkDelete(t){return await this.trace("RedisWrapper.bulkDelete",async r=>{r.addTags({numKeys:t.length}),await this.client.del(t.map(n=>this.prefixed(n)))})}async clear(){return await this.trace("RedisWrapper.clear",async t=>{let r=await this.scan();t.addTags({numKeys:r.length}),await Promise.all(r.map(n=>this.delete(n.key)))})}async increment(t){return await this.trace("RedisWrapper.increment",async r=>{r.addTags({key:t});let n=await this.client.incr(this.prefixed(t));if(isNaN(n))throw new Error(`Redis ${t} does not contain a number`);return n})}async deleteIfValue(t,r){return await this.trace("RedisWrapper.deleteIfValue",async n=>{n.addTags({key:t});let i=`
503
+ Curabitur aliquet quam id dui posuere blandit. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Pellentesque in ipsum id orci porta dapibus. Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Nulla quis lorem ut libero malesuada feugiat. Proin eget tortor risus. Cras ultricies ligula sed magna dictum porta. Donec sollicitudin molestie malesuada. Pellentesque in ipsum id orci porta dapibus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Nulla quis lorem ut libero malesuada feugiat. Proin eget tortor risus. Curabitur aliquet quam id dui posuere blandit. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui.`;UYe.exports=SSr});var Hte=S((MYe,BYe)=>{"use strict";var Ia=Va(),cb=BO(),nr=BYe.exports,xSr=jYe();nr.append=function(e,t){return typeof e=="string"&&typeof t=="string"?e+t:e};nr.camelcase=function(e){return typeof e!="string"?"":cb.changecase(e,function(t){return t.toUpperCase()})};nr.capitalize=function(e){return typeof e!="string"?"":e.charAt(0).toUpperCase()+e.slice(1)};nr.capitalizeAll=function(e){if(typeof e!="string")return"";if(Ia.isString(e))return e.replace(/\w\S*/g,function(t){return nr.capitalize(t)})};nr.center=function(e,t){if(typeof e!="string")return"";for(var r="",n=0;n<t;)r+="&nbsp;",n++;return r+e+r};nr.chop=function(e){return typeof e!="string"?"":cb.chop(e)};nr.dashcase=function(e){return typeof e!="string"?"":cb.changecase(e,function(t){return"-"+t})};nr.dotcase=function(e){return typeof e!="string"?"":cb.changecase(e,function(t){return"."+t})};nr.downcase=function(){return nr.lowercase.apply(this,arguments)};nr.ellipsis=function(e,t){if(Ia.isString(e))return e.length<=t?e:nr.truncate(e,t)+"\u2026"};nr.hyphenate=function(e){return typeof e!="string"?"":e.split(" ").join("-")};nr.isString=function(e){return typeof e=="string"};nr.lowercase=function(e){return Ia.isObject(e)&&e.fn?e.fn(this).toLowerCase():typeof e!="string"?"":e.toLowerCase()};nr.occurrences=function(e,t){if(typeof e!="string")return"";for(var r=t.length,n=0,i=0;(n=e.indexOf(t,n))>-1;)i++,n+=r;return i};nr.pascalcase=function(e){return typeof e!="string"?"":(e=cb.changecase(e,function(t){return t.toUpperCase()}),e.charAt(0).toUpperCase()+e.slice(1))};nr.pathcase=function(e){return typeof e!="string"?"":cb.changecase(e,function(t){return"/"+t})};nr.plusify=function(e,t){return typeof e!="string"?"":(Ia.isString(t)||(t=" "),e.split(t).join("+"))};nr.prepend=function(e,t){return typeof e=="string"&&typeof t=="string"?t+e:e};nr.raw=function(e){var t=e.fn(),r=Ia.options(this,e);if(r.escape!==!1)for(var n=0;(n=t.indexOf("{{",n))!==-1;)t[n-1]!=="\\"&&(t=t.slice(0,n)+"\\"+t.slice(n)),n+=3;return t};nr.remove=function(e,t){return typeof e!="string"?"":Ia.isString(t)?e.split(t).join(""):e};nr.removeFirst=function(e,t){return typeof e!="string"?"":Ia.isString(t)?e.replace(t,""):e};nr.replace=function(e,t,r){return typeof e!="string"?"":Ia.isString(t)?(Ia.isString(r)||(r=""),e.split(t).join(r)):e};nr.replaceFirst=function(e,t,r){return typeof e!="string"?"":Ia.isString(t)?(Ia.isString(r)||(r=""),e.replace(t,r)):e};nr.reverse=S_().reverse;nr.sentence=function(e){return typeof e!="string"?"":e.replace(/((?:\S[^\.\?\!]*)[\.\?\!]*)/g,function(t){return t.charAt(0).toUpperCase()+t.substr(1).toLowerCase()})};nr.snakecase=function(e){return typeof e!="string"?"":cb.changecase(e,function(t){return"_"+t})};nr.split=function(e,t){return typeof e!="string"?"":(Ia.isString(t)||(t=","),e.split(t))};nr.startsWith=function(e,t,r){var n=[].slice.call(arguments);return r=n.pop(),Ia.isString(t)&&t.indexOf(e)===0?r.fn(this):typeof r.inverse=="function"?r.inverse(this):""};nr.titleize=function(e){if(typeof e!="string")return"";for(var t=e.replace(/[- _]+/g," "),r=t.split(" "),n=r.length,i=[],o=0;n--;){var s=r[o++];i.push(MYe.capitalize(s))}return i.join(" ")};nr.trim=function(e){return typeof e=="string"?e.trim():""};nr.trimLeft=function(e){if(Ia.isString(e))return e.replace(/^\s+/,"")};nr.trimRight=function(e){if(Ia.isString(e))return e.replace(/\s+$/,"")};nr.truncate=function(e,t,r){if(Ia.isString(e))return typeof r!="string"&&(r=""),e.length>t?e.slice(0,t-r.length)+r:e};nr.truncateWords=function(e,t,r){if(Ia.isString(e)&&!isNaN(t)){typeof r!="string"&&(r="\u2026");var n=Number(t),i=e.split(/[ \t]/);if(n>=i.length)return e;i=i.slice(0,n);var o=i.join(" ").trim();return o+r}};nr.upcase=function(){return nr.uppercase.apply(this,arguments)};nr.uppercase=function(e){return Ia.isObject(e)&&e.fn?e.fn(this).toUpperCase():typeof e!="string"?"":e.toUpperCase()};nr.lorem=function(e){return(isNaN(e)||e<1||!e)&&(e=11),xSr.substring(0,e)}});var Kte=S((XAn,qYe)=>{"use strict";var Vte=require("url"),VO=Va(),TSr=require("querystring"),lb=qYe.exports;lb.encodeURI=function(e){if(VO.isString(e))return encodeURIComponent(e)};lb.escape=function(e){if(VO.isString(e))return TSr.escape(e)};lb.decodeURI=function(e){if(VO.isString(e))return decodeURIComponent(e)};lb.urlResolve=function(e,t){return Vte.resolve(e,t)};lb.urlParse=function(e){return Vte.parse(e)};lb.stripQuerystring=function(e){if(VO.isString(e))return e.split("?")[0]};lb.stripProtocol=function(e){if(VO.isString(e)){var t=Vte.parse(e);return t.protocol="",t.format()}}});var Qte=S((ZAn,$Ye)=>{"use strict";var ASr=require("uuid"),RSr=$Ye.exports;RSr.uuid=function(){return ASr.v4()}});var WYe=S((eRn,zYe)=>{"use strict";zYe.exports={array:S_(),code:EKe(),collection:FKe(),comparison:Ste(),html:tQe(),i18n:nQe(),inflection:oQe(),match:bYe(),math:zte(),misc:EYe(),number:Wte(),object:Jj(),path:NYe(),regex:Gte(),string:Hte(),url:Kte(),uuid:Qte()}});var GYe=S((tRn,R_)=>{"use strict";var KO=WYe();R_.exports=a(function(t,r){typeof t=="string"?t=[t]:Array.isArray(t)||(r=t,t=null),r=r||{};var n=r.handlebars||r.hbs||FO();if(R_.exports.handlebars=n,t)t.forEach(function(i){n.registerHelper(KO[i])});else for(let i in KO){let o=KO[i];n.registerHelper(o)}return n.helpers},"helpers");for(let e in KO){let t=KO[e];R_.exports[e]=function(r){r=r||{};var n=r.handlebars||r.hbs||FO();return R_.exports.handlebars=n,n.registerHelper(t),t}}R_.exports.utils=BO()});var TXe=S(Tn=>{"use strict";Object.defineProperty(Tn,"__esModule",{value:!0});Tn.InvalidRemoveOpPath=Tn.NoTarget=Tn.InvalidScimPatchRequest=Tn.NoPathInScimPatchOp=Tn.FilterArrayTargetNotFound=Tn.FilterOnEmptyArray=Tn.InvalidScimPatchOp=Tn.RemoveValueNotArray=Tn.RemoveValueNestedArrayNotSupported=Tn.InvalidScimRemoveValue=Tn.InvalidScimPatch=Tn.ScimError=void 0;var nI=class extends Error{static{a(this,"ScimError")}constructor(t){super(),this.scimCode=t}};Tn.ScimError=nI;var cm=class extends nI{static{a(this,"InvalidScimPatch")}constructor(t,r="invalidSyntax"){super(r),this.message=`Invalid SCIM Patch: ${t}`}};Tn.InvalidScimPatch=cm;var iI=class extends nI{static{a(this,"InvalidScimRemoveValue")}constructor(t,r="invalidSyntax"){super(r),this.message=`Invalid SCIM Remove Operation: ${t}`}};Tn.InvalidScimRemoveValue=iI;var Rre=class extends iI{static{a(this,"RemoveValueNestedArrayNotSupported")}constructor(){super("Invalid patch value, remove does not support arrays inside arrays.")}};Tn.RemoveValueNestedArrayNotSupported=Rre;var Ore=class extends iI{static{a(this,"RemoveValueNotArray")}constructor(){super("Remove with patch value is supported only for array properties.")}};Tn.RemoveValueNotArray=Ore;var aI=class extends cm{static{a(this,"InvalidScimPatchOp")}constructor(t){super(`${t}`,"invalidSyntax")}};Tn.InvalidScimPatchOp=aI;var Ire=class extends aI{static{a(this,"FilterOnEmptyArray")}constructor(t,r,n){super(`${t}`),this.attrName=r,this.valuePath=n}};Tn.FilterOnEmptyArray=Ire;var kre=class extends aI{static{a(this,"FilterArrayTargetNotFound")}constructor(t,r,n,i){super(`${t}`),this.attrName=r,this.valuePath=n,this.schema=i}};Tn.FilterArrayTargetNotFound=kre;var Cre=class extends cm{static{a(this,"NoPathInScimPatchOp")}constructor(){super('Missing path in "remove" patch operation',"noTarget")}};Tn.NoPathInScimPatchOp=Cre;var Dre=class extends cm{static{a(this,"InvalidScimPatchRequest")}constructor(t){super(`The SCIM patch request is invalid: ${t}`)}};Tn.InvalidScimPatchRequest=Dre;var Pre=class extends cm{static{a(this,"NoTarget")}constructor(t){super(`Target location is a multi-valued attribute for which a value selection filter (${t}) has been supplied and no record match was made.`,"noTarget")}};Tn.NoTarget=Pre;var Nre=class extends cm{static{a(this,"InvalidRemoveOpPath")}constructor(){super("Path specified in 'remove' operation doesn't exist")}};Tn.InvalidRemoveOpPath=Nre});var IXe=S(hf=>{"use strict";Object.defineProperty(hf,"__esModule",{value:!0});hf.parseExpression=hf.parseFilter=hf.Tokens=hf.tokenizer=void 0;var RXe={type:"EOT",literal:""};function V0r(e){let t=[],r=e,n=/^(?:(\s+)|(-?\d+(?:\.\d+)?(?:[eE][-+]?\d+)?(?![-\w._:\/\)\s]))|("(?:[^"\\]|\\.|\n)*")|([[()]|]\.?)|(\w[-\w._:\/%]*))/,i;for(;i=n.exec(r);){if(!(i[1]||i[0].length===0))if(i[2])t.push({literal:i[2],type:"Number"});else if(i[3]){let o=i[3].replace(/\\(?!")/g,"\\\\");t.push({literal:o,type:"Quoted"})}else i[4]?t.push({literal:i[4],type:"Bracket"}):i[5]&&t.push({literal:i[5],type:"Word"});r=r.substring(i.index+i[0].length)}if(r.length!==0)throw new Error(`unexpected token ${r}`);return t.push(RXe),t}a(V0r,"tokenizer");hf.tokenizer=V0r;var Lre=class{static{a(this,"Tokens")}getList(){return this.list.map((t,r)=>r==this.i?`[${t.literal}]`:t.literal)}peek(){return this.current||RXe}constructor(t){this.list=t,this.i=0,this.current=this.list[this.i]}forward(){return this.current=this.list[++this.i],this}shift(){let t=this.peek();return this.forward(),t}};hf.Tokens=Lre;var K0r=new Set(["eq","ne","co","sw","ew","gt","lt","ge","le"]),Q0r=new Set(["pr"]);function Fre(e){return EM(_M(e),e,wb.LOWEST)}a(Fre,"parseFilter");hf.parseFilter=Fre;function _M(e){let t=e.shift();if(t.literal=="("){let r=Fre(e),n=e.shift();if(n.literal!==")")throw new Error(`Unexpected token [${n.literal}(${n.type})] expected ')'`);return r}else if(t.literal.toLowerCase()=="not"){let r={op:"not",filter:_M(e)};return EM(r,e,wb.NOT)}else{if(t.type=="Word")return OXe(t,e);throw new Error(`Unexpected token ${t.literal} (${t.type})`)}}a(_M,"parseExpression");hf.parseExpression=_M;var wb;(function(e){e[e.LOWEST=1]="LOWEST",e[e.OR=2]="OR",e[e.AND=3]="AND",e[e.NOT=4]="NOT"})(wb||(wb={}));var AXe={or:wb.OR,and:wb.AND,not:wb.NOT};function EM(e,t,r){let n=t.peek().literal.toLowerCase(),i=AXe[n];if(!i||r>=i)return e;let o=[e];for(;t.peek().literal.toLowerCase()===n;){let s=_M(t.forward()),u=t.peek().literal.toLowerCase();AXe[u]>i&&(s=EM(s,t,i)),o.push(s)}return EM({op:n,filters:o},t,r)}a(EM,"parseInxif");function OXe(e,t){if(e.type!=="Word")throw new Error(`Unexpected token ${e.literal} expected Word`);let r=e.literal,n=t.shift(),i=n.literal.toLowerCase();if(K0r.has(i)){let o=Y0r(t);return{op:i,attrPath:r,compValue:o}}else{if(Q0r.has(i))return{op:i,attrPath:r};if(i==="["){let o=Fre(t),s=t.shift();if(s.literal[0]!=="]")throw new Error(`Unexpected token ${s.literal} expected ']'`);let u={op:"[]",attrPath:r,valFilter:o};if(s.literal[1]!=="."||t.peek().type!=="Word")return u;let c=t.shift();return c.literal=`${r}.${c.literal}`,{op:"and",filters:[u,OXe(c,t)]}}else throw new Error(`Unexpected token ${r} ${n.literal} as valFilter operator`)}}a(OXe,"readValFilter");function Y0r(e){let t=e.shift();try{let r=JSON.parse(t.literal);if(r===null||typeof r=="string"||typeof r=="number"||typeof r=="boolean")return r;throw new Error(`${t.literal} is ${typeof r} (un supported value)`)}catch{throw new Error(`[${t.literal}(${t.type})] is not json`)}}a(Y0r,"parseCompValue")});var kXe=S(xM=>{"use strict";Object.defineProperty(xM,"__esModule",{value:!0});xM.Tester=void 0;var SM=class{static{a(this,"Tester")}constructor(){}test(t,r){switch(r.op){case"or":return r.filters.some(n=>this.test(t,n));case"and":return r.filters.every(n=>this.test(t,n));case"not":return!this.test(t,r.filter);case"[]":return this.attrTest(this.attrPath(r.attrPath),t,n=>this.test(n,r.valFilter));case"pr":return this.attrTest(this.attrPath(r.attrPath),t,n=>this[r.op](n));case"eq":case"ne":case"co":case"sw":case"ew":case"gt":case"lt":case"ge":case"le":return this.attrTest(this.attrPath(r.attrPath),t,n=>this[r.op](n,r.compValue))}}attrPath(t){let r=t.lastIndexOf(":");return r===-1?t.split("."):[t.substring(0,r),...t.substring(r+1).split(".")]}attrTest(t,r,n){if(t.length===0)return n(r);if(typeof r!="object"||r===null)return!1;if(Array.isArray(r))return r.some(s=>this.attrTest(t,s,n));let i=t[0].toLowerCase(),o=Object.keys(r).find(s=>s.toLowerCase()===i);return o===void 0?!1:this.attrTest(t.slice(1),r[o],n)}pr(t,r){return t!==void 0}eq(t,r){return t===r}ne(t,r){return t!==r}gt(t,r){return r!==null&&t>r}lt(t,r){return r!==null&&t<r}le(t,r){return r!==null&&t<=r}ge(t,r){return r!==null&&t>=r}sw(t,r){return r!==null&&t!==null&&t.toString().startsWith(r.toString())}ew(t,r){return r!==null&&t!==null&&t.toString().endsWith(r.toString())}co(t,r){return typeof t=="object"||r===null?t==r:(typeof t!="string"&&(t=t.toString()),t.indexOf(r.toString())!==-1)}};xM.Tester=SM;SM.UNDEF=Symbol("undefined")});var CXe=S(mf=>{"use strict";Object.defineProperty(mf,"__esModule",{value:!0});mf.log=mf.valfilter=void 0;var J0r=a((e,t)=>{switch(t&&"attrPath"in e&&(e=Object.assign(Object.assign({},e),{attrPath:`${t}.${e.attrPath}`})),e.op){case"and":case"or":return Object.assign(Object.assign({},e),{filters:e.filters.map(r=>(0,mf.valfilter)(r,t))});case"not":return Object.assign(Object.assign({},e),{filter:(0,mf.valfilter)(e,t)});case"[]":return(0,mf.valfilter)(e.valFilter,e.attrPath)}return e},"valfilter");mf.valfilter=J0r;var X0r=a(e=>{switch(e.op){case"and":case"or":let t=e.filters.map(mf.log),r=[];return t.forEach(n=>{n.op==e.op?n.filters.forEach(i=>r.push(i)):r.push(n)}),Object.assign(Object.assign({},e),{filters:r})}return e},"log");mf.log=X0r});var DXe=S(TM=>{"use strict";Object.defineProperty(TM,"__esModule",{value:!0});TM.stringify=void 0;function oI(e,t=!1){let r="";switch(e.op){case"eq":case"ne":case"co":case"sw":case"ew":case"gt":case"lt":case"ge":case"le":r=`${e.attrPath} ${e.op} ${JSON.stringify(e.compValue)}`;break;case"pr":r=`${e.attrPath} ${e.op}`;break;case"or":let n=e.filters.map(i=>oI(i)).join(` ${e.op} `);r=t?`(${n})`:n;break;case"and":r=e.filters.map(i=>oI(i,!0)).join(` ${e.op} `);break;case"not":r=`${e.op} (${oI(e.filter)})`;break;case"[]":r=`${e.attrPath}[${oI(e.valFilter)}]`;break}return r}a(oI,"stringify");TM.stringify=oI});var AM=S(tu=>{"use strict";Object.defineProperty(tu,"__esModule",{value:!0});tu.flatten=tu.parse=tu.filter=tu.Tester=tu.stringify=void 0;var Ure=IXe(),Z0r=kXe(),PXe=CXe(),exr=DXe();Object.defineProperty(tu,"stringify",{enumerable:!0,get:function(){return exr.stringify}});tu.Tester=Z0r.Tester;function txr(e){let t=new tu.Tester;return r=>t.test(r,e)}a(txr,"filter");tu.filter=txr;function rxr(e){let t=new Ure.Tokens(Ure.tokenizer(e)),r=Ure.parseFilter(t);if(t.peek().type!=="EOT")throw new Error(`unexpected EOT ${t.getList()}`);return r}a(rxr,"parse");tu.parse=rxr;function nxr(e){return PXe.log(PXe.valfilter(e))}a(nxr,"flatten");tu.flatten=nxr});var Vre=S(zn=>{"use strict";Object.defineProperty(zn,"__esModule",{value:!0});zn.PATCH_OPERATION_SCHEMA=zn.InvalidScimRemoveValue=zn.RemoveValueNotArray=zn.RemoveValueNestedArrayNotSupported=zn.NoTarget=zn.InvalidScimPatchRequest=zn.NoPathInScimPatchOp=zn.InvalidScimPatchOp=zn.InvalidScimPatch=zn.ScimError=void 0;zn.patchBodyValidation=uxr;zn.scimPatch=cxr;var Hr=TXe();Object.defineProperty(zn,"ScimError",{enumerable:!0,get:function(){return Hr.ScimError}});Object.defineProperty(zn,"InvalidScimPatch",{enumerable:!0,get:function(){return Hr.InvalidScimPatch}});Object.defineProperty(zn,"InvalidScimPatchOp",{enumerable:!0,get:function(){return Hr.InvalidScimPatchOp}});Object.defineProperty(zn,"NoPathInScimPatchOp",{enumerable:!0,get:function(){return Hr.NoPathInScimPatchOp}});Object.defineProperty(zn,"InvalidScimPatchRequest",{enumerable:!0,get:function(){return Hr.InvalidScimPatchRequest}});Object.defineProperty(zn,"NoTarget",{enumerable:!0,get:function(){return Hr.NoTarget}});Object.defineProperty(zn,"RemoveValueNestedArrayNotSupported",{enumerable:!0,get:function(){return Hr.RemoveValueNestedArrayNotSupported}});Object.defineProperty(zn,"RemoveValueNotArray",{enumerable:!0,get:function(){return Hr.RemoveValueNotArray}});Object.defineProperty(zn,"InvalidScimRemoveValue",{enumerable:!0,get:function(){return Hr.InvalidScimRemoveValue}});var jre=AM(),Mre=kR(),$re=/(\[|\])/,ixr=/^(.+)\[(.+)\]$/,NXe=/(?!\B"[^[]*)\.(?![^\]]*"\B)/g,axr=["remove","add","replace"],oxr="urn:ietf:params:scim:schemas:core:2.0:User",sxr="urn:ietf:params:scim:schemas:core:2.0:Group";zn.PATCH_OPERATION_SCHEMA="urn:ietf:params:scim:api:messages:2.0:PatchOp";function uxr(e){if(!e.schemas||!e.schemas.includes(zn.PATCH_OPERATION_SCHEMA))throw new Hr.InvalidScimPatchRequest("Missing schemas.");if(!Array.isArray(e.Operations))throw new Hr.InvalidScimPatchRequest("Operations should be an array.");if(!e.Operations||e.Operations.length<=0)throw new Hr.InvalidScimPatchRequest("Missing operations.");e.Operations.forEach(zre)}a(uxr,"patchBodyValidation");function cxr(e,t,r={mutateDocument:!0,treatMissingAsAdd:!0}){return r.mutateDocument||(e=JSON.parse(JSON.stringify(e))),t.reduce((n,i)=>{switch(i.op){case"remove":case"Remove":return lxr(n,i);case"add":case"Add":case"replace":case"Replace":return FXe(n,i,!!r.treatMissingAsAdd);default:throw new Hr.InvalidScimPatchRequest(`Operator is invalid for SCIM patch request. ${i}`)}},e)}a(cxr,"scimPatch");function zre(e){if(typeof e.op!="string"||!hxr(e.op))throw new Hr.InvalidScimPatchRequest(`Invalid op "${e.op}" in the request.`);if(e.op==="remove"&&!e.path)throw new Hr.NoPathInScimPatchOp;if(uI(e.op)&&!("value"in e))throw new Hr.InvalidScimPatchRequest(`The operation ${e.op} MUST contain a "value" member whose content specifies the value to be added`);if(e.path&&typeof e.path!="string")throw new Hr.InvalidScimPatchRequest("Path is supposed to be a string")}a(zre,"validatePatchOperation");function Wre(e){let t=e.lastIndexOf(":");if(t<0)return e.split(NXe);let r=e.substring(0,t),n=e.substring(t+1).split(NXe);switch(r){case sxr:case oxr:break;default:n.unshift(r);break}return n}a(Wre,"resolvePaths");function lxr(e,t){let r;zre(t);let n=Wre(t.path);try{r=UXe(e,n,{isRemoveOp:!0})}catch(o){if(o instanceof Hr.InvalidRemoveOpPath)return e;throw o}let i=n[n.length-1];if(!$re.test(i)){for(let o of r)t.value?o[i]=dxr(o[i],t.value):delete o[i];return e}for(let o of r){let{attrName:s,valuePath:u,array:c}=Gre(i,o);o[s]=Hre(c,u,{excludeIfMatchFilter:!0}),o[s].length===0&&delete o[s]}return e}a(lxr,"applyRemoveOperation");function FXe(e,t,r){var n;let i;if(zre(t),!t.path)return sI(e,t);let o=Wre(t.path),s=o[o.length-1];try{i=UXe(e,o)}catch(u){if(u instanceof Hr.FilterOnEmptyArray||u instanceof Hr.FilterArrayTargetNotFound){let c=u.schema,l=(0,jre.parse)(u.valuePath);if(uI(t.op)&&"compValue"in l&&l.compValue!==void 0&&l.op==="eq"){let f={};return f[l.attrPath]=l.compValue,f[s]=sI(void 0,t,!0),c[u.attrName]=[...(n=c[u.attrName])!==null&&n!==void 0?n:[],f],e}else if(r&&Bre(t.op)&&"compValue"in l&&l.compValue!==void 0&&l.op==="eq")return FXe(e,Object.assign(Object.assign({},t),{op:"add"}),!1);throw new Hr.NoTarget(t.path)}throw u}if(!$re.test(s)){for(let u of i)u[s]=sI(u[s],t);return e}for(let u of i){let{valuePath:c,array:l}=Gre(s,u),f=Hre(l,c);if(Bre(t.op)&&f.length===0)throw new Hr.NoTarget(t.path);for(let p=0;p<l.length;p++)f.includes(l[p])&&(l[p]=sI(l[p],t))}return e}a(FXe,"applyAddOrReplaceOperation");function Gre(e,t){let r=e.match(ixr);if(!r)throw new Hr.InvalidScimPatchOp(`This part of the path ${e} is invalid for SCIM patch request.`);let[,n,i]=r,o=t[n];if(!Array.isArray(o))throw new Hr.FilterOnEmptyArray("Impossible to search on a mono valued attribute.",n,i);return new qre(n,i,o)}a(Gre,"extractArray");function UXe(e,t,r={}){let n=[e];for(let i=0;i<t.length-1;i++){let o=t[i];$re.test(o)?n=n.flatMap(s=>{try{let{attrName:u,valuePath:c,array:l}=Gre(o,s),f=Hre(l,c);if(f.length===0)throw new Hr.FilterArrayTargetNotFound("A matching array entry was not found using the supplied filter.",u,c,s);return f}catch(u){throw u instanceof Hr.FilterOnEmptyArray&&(u.schema=s),u}}):n=n.flatMap(s=>{if(!s[o]&&r.isRemoveOp)throw new Hr.InvalidRemoveOpPath;return s[o]||(s[o]={})})}return n}a(UXe,"navigate");function sI(e,t,r){if(Array.isArray(e)){if(Array.isArray(t.value)){if(uI(t.op)){let i=t.value.filter(o=>!LXe(e,o));return e.concat(i)}return t.value}if(Bre(t.op))return e.map(i=>sI(i,t,r));let n=e;return LXe(n,t.value)||n.push(t.value),n}return e!==null&&typeof e=="object"?fxr(e,t,r):t.value}a(sI,"addOrReplaceAttribute");function fxr(e,t,r){if(typeof t.value!="object"){if(uI(t.op)&&!r)throw new Hr.InvalidScimPatchOp("Invalid patch query.");return t.value}for(let[n,i]of Object.entries(t.value))pxr(e,Wre(n),i,t.op);return e}a(fxr,"addOrReplaceObjectAttribute");function pxr(e,t,r,n){let i=t.length-1;for(let s=0;s<i;++s){let u=t[s];u in e||(e[u]={}),e=e[u]}let o=e[t[i]];if(uI(n)&&Array.isArray(o)){if(Array.isArray(r)){e[t[i]]=[...o,...r];return}e[t[i]]=[...o,r];return}e[t[i]]=r}a(pxr,"assign");function Hre(e,t,r={}){try{let n=(0,jre.filter)((0,jre.parse)(t));return e.filter(i=>r.excludeIfMatchFilter?!n(i):n(i))}catch(n){throw new Hr.InvalidScimPatchOp(`${n}`)}}a(Hre,"filterWithQuery");function dxr(e,t){if(!Array.isArray(e))throw new Hr.RemoveValueNotArray;return Array.isArray(t)?(t.forEach(r=>{if(Array.isArray(r))throw new Hr.RemoveValueNestedArrayNotSupported;e=e.filter(n=>!Mre(r,n))}),e):e.filter(r=>!Mre(t,r))}a(dxr,"removeWithPatchValue");function LXe(e,t){return e.some(r=>Mre(t,r))}a(LXe,"deepIncludes");function hxr(e){return axr.includes(e.toLowerCase())}a(hxr,"isValidOperation");function uI(e){return e!==void 0&&e.toLowerCase()==="add"}a(uI,"isAddOperation");function Bre(e){return e!==void 0&&e.toLowerCase()==="replace"}a(Bre,"isReplaceOperation");var qre=class{static{a(this,"ScimSearchQuery")}constructor(t,r,n){this.attrName=t,this.valuePath=r,this.array=n}}});var Qrt={};oe(Qrt,{execute:()=>w1r,executeInThread:()=>Mae,removeStalled:()=>Lae});module.exports=QB(Qrt);var ja={};oe(ja,{analyticsEnabled:()=>yL,generateConfigID:()=>QL,getAIConfig:()=>gXt,getConfig:()=>Du,getDefaultGoogleConfig:()=>hK,getGoogleConfig:()=>YL,getGoogleDatasourceConfig:()=>gK,getOIDCConfig:()=>dXt,getOIDCConfigById:()=>yK,getOIDCLogosDoc:()=>fXt,getPlatformUrl:()=>jA,getRecaptchaConfig:()=>yXt,getSCIMConfig:()=>mXt,getSMTPConfig:()=>hXt,getSMTPConfigDoc:()=>OUe,getSettingsConfig:()=>mK,getSettingsConfigDoc:()=>Jw,save:()=>cXt});var kf=(r=>(r.ASCENDING="ascending",r.DESCENDING="descending",r))(kf||{});var Er=(D=>(D.USER_CREATED="user:created",D.USER_UPDATED="user:updated",D.USER_DELETED="user:deleted",D.USER_ONBOARDING_COMPLETE="user:onboarding:complete",D.USER_PERMISSION_ADMIN_ASSIGNED="user:admin:assigned",D.USER_PERMISSION_ADMIN_REMOVED="user:admin:removed",D.USER_PERMISSION_BUILDER_ASSIGNED="user:builder:assigned",D.USER_PERMISSION_BUILDER_REMOVED="user:builder:removed",D.USER_INVITED="user:invited",D.USER_INVITED_ACCEPTED="user:invite:accepted",D.USER_PASSWORD_FORCE_RESET="user:password:force:reset",D.USER_PASSWORD_UPDATED="user:password:updated",D.USER_PASSWORD_RESET_REQUESTED="user:password:reset:requested",D.USER_PASSWORD_RESET="user:password:reset",D.USER_DATA_COLLABORATION="user:data:collaboration",D.EMAIL_SMTP_CREATED="email:smtp:created",D.EMAIL_SMTP_UPDATED="email:smtp:updated",D.AI_CONFIG_CREATED="ai:config:created",D.AI_CONFIG_UPDATED="ai:config:updated",D.AUTH_SSO_CREATED="auth:sso:created",D.AUTH_SSO_UPDATED="auth:sso:updated",D.AUTH_SSO_ACTIVATED="auth:sso:activated",D.AUTH_SSO_DEACTIVATED="auth:sso:deactivated",D.AUTH_LOGIN="auth:login",D.AUTH_LOGOUT="auth:logout",D.ORG_NAME_UPDATED="org:info:name:updated",D.ORG_LOGO_UPDATED="org:info:logo:updated",D.ORG_PLATFORM_URL_UPDATED="org:platformurl:updated",D.INSTALLATION_VERSION_CHECKED="installation:version:checked",D.INSTALLATION_VERSION_UPGRADED="installation:version:upgraded",D.INSTALLATION_VERSION_DOWNGRADED="installation:version:downgraded",D.INSTALLATION_FIRST_STARTUP="installation:firstStartup",D.ANALYTICS_OPT_OUT="analytics:opt:out",D.ANALYTICS_OPT_IN="analytics:opt:in",D.WORKSPACE_CREATED="app:created",D.WORKSPACE_UPDATED="app:updated",D.WORKSPACE_DELETED="app:deleted",D.WORKSPACE_DUPLICATED="app:duplicated",D.WORKSPACE_PUBLISHED="app:published",D.WORKSPACE_UNPUBLISHED="app:unpublished",D.WORKSPACE_TEMPLATE_IMPORTED="app:template:imported",D.WORKSPACE_FILE_IMPORTED="app:file:imported",D.WORKSPACE_APP_VERSION_UPDATED="app:version:updated",D.WORKSPACE_APP_VERSION_REVERTED="app:version:reverted",D.WORKSPACE_REVERTED="app:reverted",D.WORKSPACE_EXPORTED="app:exported",D.ROLE_CREATED="role:created",D.ROLE_UPDATED="role:updated",D.ROLE_DELETED="role:deleted",D.ROLE_ASSIGNED="role:assigned",D.ROLE_UNASSIGNED="role:unassigned",D.SERVED_BUILDER="served:builder",D.SERVED_APP="served:app",D.SERVED_APP_PREVIEW="served:app:preview",D.DATASOURCE_CREATED="datasource:created",D.DATASOURCE_UPDATED="datasource:updated",D.DATASOURCE_DELETED="datasource:deleted",D.QUERY_CREATED="query:created",D.QUERY_UPDATED="query:updated",D.QUERY_DELETED="query:deleted",D.QUERY_IMPORT="query:import",D.QUERIES_RUN="queries:run",D.QUERY_PREVIEWED="query:previewed",D.TABLE_CREATED="table:created",D.TABLE_UPDATED="table:updated",D.TABLE_DELETED="table:deleted",D.TABLE_EXPORTED="table:exported",D.TABLE_IMPORTED="table:imported",D.TABLE_DATA_IMPORTED="table:data:imported",D.VIEW_CREATED="view:created",D.VIEW_UPDATED="view:updated",D.VIEW_DELETED="view:deleted",D.VIEW_EXPORTED="view:exported",D.VIEW_FILTER_CREATED="view:filter:created",D.VIEW_FILTER_UPDATED="view:filter:updated",D.VIEW_FILTER_DELETED="view:filter:deleted",D.VIEW_CALCULATION_CREATED="view:calculation:created",D.VIEW_CALCULATION_UPDATED="view:calculation:updated",D.VIEW_CALCULATION_DELETED="view:calculation:deleted",D.VIEW_JOIN_CREATED="view:join:created",D.ROWS_CREATED="rows:created",D.ROWS_IMPORTED="rows:imported",D.COMPONENT_CREATED="component:created",D.COMPONENT_DELETED="component:deleted",D.SCREEN_CREATED="screen:created",D.SCREEN_DELETED="screen:deleted",D.LAYOUT_CREATED="layout:created",D.LAYOUT_DELETED="layout:deleted",D.AUTOMATION_CREATED="automation:created",D.AUTOMATION_DELETED="automation:deleted",D.AUTOMATION_TESTED="automation:tested",D.AUTOMATIONS_RUN="automations:run",D.AUTOMATION_STEP_CREATED="automation:step:created",D.AUTOMATION_STEP_DELETED="automation:step:deleted",D.AUTOMATION_TRIGGER_UPDATED="automation:trigger:updated",D.LICENSE_PLAN_CHANGED="license:plan:changed",D.LICENSE_ACTIVATED="license:activated",D.LICENSE_PAYMENT_FAILED="license:payment:failed",D.LICENSE_PAYMENT_RECOVERED="license:payment:recovered",D.LICENSE_CHECKOUT_OPENED="license:checkout:opened",D.LICENSE_CHECKOUT_SUCCESS="license:checkout:success",D.LICENSE_PORTAL_OPENED="license:portal:opened",D.ACCOUNT_CREATED="account:created",D.ACCOUNT_DELETED="account:deleted",D.ACCOUNT_VERIFIED="account:verified",D.APP_BACKFILL_SUCCEEDED="app:backfill:succeeded",D.APP_BACKFILL_FAILED="app:backfill:failed",D.TENANT_BACKFILL_SUCCEEDED="tenant:backfill:succeeded",D.TENANT_BACKFILL_FAILED="tenant:backfill:failed",D.INSTALLATION_BACKFILL_SUCCEEDED="installation:backfill:succeeded",D.INSTALLATION_BACKFILL_FAILED="installation:backfill:failed",D.USER_GROUP_CREATED="user_group:created",D.USER_GROUP_UPDATED="user_group:updated",D.USER_GROUP_DELETED="user_group:deleted",D.USER_GROUP_USERS_ADDED="user_group:user_added",D.USER_GROUP_USERS_REMOVED="user_group:users_deleted",D.USER_GROUP_PERMISSIONS_EDITED="user_group:permissions_edited",D.USER_GROUP_ONBOARDING="user_group:onboarding_added",D.PLUGIN_INIT="plugin:init",D.PLUGIN_IMPORTED="plugin:imported",D.PLUGIN_DELETED="plugin:deleted",D.APP_BACKUP_RESTORED="app:backup:restored",D.APP_BACKUP_TRIGGERED="app:backup:triggered",D.ENVIRONMENT_VARIABLE_CREATED="environment_variable:created",D.ENVIRONMENT_VARIABLE_DELETED="environment_variable:deleted",D.ENVIRONMENT_VARIABLE_UPGRADE_PANEL_OPENED="environment_variable:upgrade_panel_opened",D.AUDIT_LOGS_FILTERED="audit_log:filtered",D.AUDIT_LOGS_DOWNLOADED="audit_log:downloaded",D.ROW_ACTION_CREATED="row_action:created",D.ACTION_AUTOMATION_STEP_EXECUTED="action:automation_step:executed",D.ACTION_CRUD_EXECUTED="action:crud:executed",D.ACTION_AI_AGENT_EXECUTED="action:ai_agent:executed",D.WORKSPACE_APP_CREATED="workspace_app:created",D.WORKSPACE_APP_UPDATED="workspace_app:updated",D.WORKSPACE_APP_DELETED="workspace_app:deleted",D))(Er||{}),Qoe=["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"],Yoe=["automation:deleted","workspace_app:deleted","datasource:deleted","table:deleted","query:deleted","view:deleted"],Joe=[...Qoe,...Yoe],jb={"user:created":'User "{{ email }}" created{{#if viaScim}} via SCIM{{/if}}',"user:updated":'User "{{ email }}" updated{{#if viaScim}} via SCIM{{/if}}',"user:deleted":'User "{{ email }}" deleted{{#if viaScim}} via SCIM{{/if}}',"user:admin:assigned":'User "{{ email }}" admin role assigned',"user:admin:removed":'User "{{ email }}" admin role removed',"user:builder:assigned":'User "{{ email }}" builder role assigned',"user:builder:removed":'User "{{ email }}" builder role removed',"user:invited":'User "{{ email }}" invited',"user:invite:accepted":'User "{{ email }}" accepted invite',"user:password:updated":'User "{{ email }}" password updated',"user:password:reset:requested":'User "{{ email }}" password reset requested',"user:password:reset":'User "{{ email }}" password reset',"user_group:created":'User group "{{ name }}" created{{#if viaScim}} via SCIM{{/if}}',"user_group:updated":'User group "{{ name }}" updated{{#if viaScim}} via SCIM{{/if}}',"user_group:deleted":'User group "{{ name }}" deleted{{#if viaScim}} via SCIM{{/if}}',"user_group:user_added":'User group "{{ name }}" {{ count }} users added{{#if viaScim}} via SCIM{{/if}}',"user_group:users_deleted":'User group "{{ name }}" {{ count }} users removed{{#if viaScim}} via SCIM{{/if}}',"user_group:permissions_edited":'User group "{{ name }}" permissions edited',"user:password:force:reset":void 0,"user_group:onboarding_added":void 0,"user:onboarding:complete":void 0,"user:data:collaboration":void 0,"email:smtp:created":"Email configuration created","email:smtp:updated":"Email configuration updated","ai:config:created":"AI configuration created","ai:config:updated":"AI configuration updated","auth:sso:created":"SSO configuration created","auth:sso:updated":"SSO configuration updated","auth:sso:activated":"SSO configuration activated","auth:sso:deactivated":"SSO configuration deactivated","auth:login":'User "{{ email }}" logged in',"auth:logout":'User "{{ email }}" logged out',"org:info:name:updated":"Organisation name updated","org:info:logo:updated":"Organisation logo updated","org:platformurl:updated":"Organisation platform URL updated","app:created":'App "{{ name }}" created',"app:updated":'App "{{ name }}" updated',"app:deleted":'App "{{ name }}" deleted',"app:duplicated":'App "{{ name }}" duplicated',"app:published":'App "{{ name }}" published',"app:unpublished":'App "{{ name }}" unpublished',"app:template:imported":'App "{{ name }}" template imported',"app:file:imported":'App "{{ name }}" file imported',"app:version:updated":'App "{{ name }}" version updated',"app:version:reverted":'App "{{ name }}" version reverted',"app:reverted":'App "{{ name }}" reverted',"app:exported":'App "{{ name }}" exported',"app:backup:restored":'App backup "{{ name }}" restored',"app:backup:triggered":'App backup "{{ name }}" triggered',"datasource:created":"Datasource created","datasource:updated":"Datasource updated","datasource:deleted":"Datasource deleted","query:created":"Query created","query:updated":"Query updated","query:deleted":"Query deleted","query:import":"Query import","queries:run":void 0,"query:previewed":void 0,"table:created":'Table "{{ name }}" created',"table:updated":'Table "{{ name }}" updated',"table:deleted":'Table "{{ name }}" deleted',"table:exported":'Table "{{ name }}" exported',"table:imported":'Table "{{ name }}" imported',"table:data:imported":"Data imported to table","rows:created":"Rows created","rows:imported":"Rows imported","automation:created":'Automation "{{ name }}" created',"automation:deleted":'Automation "{{ name }}" deleted',"automation:step:created":'Automation "{{ name }}" step added',"automation:step:deleted":'Automation "{{ name }}" step removed',"automation:tested":void 0,"automations:run":void 0,"automation:trigger:updated":void 0,"screen:created":'Screen "{{ name }}" created',"screen:deleted":'Screen "{{ name }}" deleted',"component:created":"Component created","component:deleted":"Component deleted","environment_variable:created":"Environment variable created","environment_variable:deleted":"Environment variable deleted","environment_variable:upgrade_panel_opened":void 0,"plugin:imported":"Plugin imported","plugin:deleted":"Plugin deleted","plugin:init":void 0,"action:automation_step:executed":void 0,"action:crud:executed":void 0,"action:ai_agent:executed":void 0,"role:created":void 0,"role:updated":void 0,"role:deleted":void 0,"role:assigned":void 0,"role:unassigned":void 0,"license:plan:changed":void 0,"license:activated":void 0,"license:payment:failed":void 0,"license:payment:recovered":void 0,"license:checkout:opened":void 0,"license:checkout:success":void 0,"license:portal:opened":void 0,"account:created":void 0,"account:deleted":void 0,"account:verified":void 0,"app:backfill:succeeded":void 0,"app:backfill:failed":void 0,"tenant:backfill:succeeded":void 0,"tenant:backfill:failed":void 0,"installation:backfill:succeeded":void 0,"installation:backfill:failed":void 0,"layout:created":void 0,"layout:deleted":void 0,"view:created":void 0,"view:updated":void 0,"view:deleted":void 0,"view:exported":void 0,"view:filter:created":void 0,"view:filter:updated":void 0,"view:filter:deleted":void 0,"view:calculation:created":void 0,"view:calculation:updated":void 0,"view:calculation:deleted":void 0,"view:join:created":void 0,"served:builder":void 0,"served:app":void 0,"served:app:preview":void 0,"analytics:opt:out":void 0,"analytics:opt:in":void 0,"installation:version:checked":void 0,"installation:version:upgraded":void 0,"installation:version:downgraded":void 0,"installation:firstStartup":void 0,"audit_log:filtered":void 0,"audit_log:downloaded":void 0,"row_action:created":void 0,"workspace_app:created":void 0,"workspace_app:deleted":void 0,"workspace_app:updated":void 0};var Xoe=a((e,t,r)=>e==="usage"&&t==="static","isStaticQuota"),Zoe=a((e,t,r)=>e==="usage"&&t==="monthly","isMonthlyQuota"),ese=a((e,t)=>e==="constant","isConstantQuota");var _m="--secret-value--";var Ki=(n=>(n.SQL="sql",n.JSON="json",n.FIELDS="fields",n))(Ki||{}),Pi=(d=>(d.STRING="string",d.CODE="code",d.LONGFORM="longForm",d.BOOLEAN="boolean",d.NUMBER="number",d.PASSWORD="password",d.LIST="list",d.OBJECT="object",d.JSON="json",d.FILE="file",d.FIELD_GROUP="fieldGroup",d.SELECT="select",d))(Pi||{}),Ya=(b=>(b.AIRTABLE="AIRTABLE",b.ARANGODB="ARANGODB",b.BUDIBASE="BUDIBASE",b.COUCHDB="COUCHDB",b.DYNAMODB="DYNAMODB",b.ELASTICSEARCH="ELASTICSEARCH",b.FIRESTORE="FIRESTORE",b.GOOGLE_SHEETS="GOOGLE_SHEETS",b.MONGODB="MONGODB",b.MYSQL="MYSQL",b.ORACLE="ORACLE",b.POSTGRES="POSTGRES",b.REDIS="REDIS",b.REST="REST",b.S3="S3",b.SNOWFLAKE="SNOWFLAKE",b.SQL_SERVER="SQL_SERVER",b))(Ya||{});var ma=(n=>(n.CONNECTION_CHECKING="connection",n.FETCH_TABLE_NAMES="fetch_table_names",n.EXPORT_SCHEMA="export_schema",n))(ma||{});var tse=te(require("lodash/isPlainObject"));var Sm=(s=>(s.EQUAL="equal",s.NOT_EQUAL="notEqual",s.EMPTY="empty",s.NOT_EMPTY="notEmpty",s.FUZZY="fuzzy",s.STRING="string",s))(Sm||{}),ll=(i=>(i.CONTAINS="contains",i.NOT_CONTAINS="notContains",i.CONTAINS_ANY="containsAny",i.ONE_OF="oneOf",i))(ll||{}),Mb=(t=>(t.RANGE="range",t))(Mb||{}),pS=(r=>(r.AND="$and",r.OR="$or",r))(pS||{});function ud(e){return Object.values(pS).includes(e)}a(ud,"isLogicalSearchOperator");function rse(e){return Object.values(Sm).includes(e)}a(rse,"isBasicSearchOperator");function nse(e){return Object.values(ll).includes(e)}a(nse,"isArraySearchOperator");function ek(e){return Object.values(Mb).includes(e)}a(ek,"isRangeSearchOperator");function ise(e){return(0,tse.default)(e)&&"conditions"in e}a(ise,"isLogicalFilter");var ase=a(e=>typeof e=="object"&&e._id&&e._rev,"isDocument");var dS=(o=>(o.USER="user",o.HEADER="header",o.QUERY="query",o.SUBDOMAIN="subdomain",o.PATH="path",o))(dS||{});var ose={USE_ZOD_VALIDATOR:!1,AI_AGENTS:!1,USE_DYNAMIC_LOADING:!0,DIRECT_LOGIN_TO_ACCOUNT_PORTAL:!1,DEBUG_UI:!1};var cd=(i=>(i.READ="read",i.WRITE="write",i.EXECUTE="execute",i.ADMIN="admin",i))(cd||{});var hS=(p=>(p.WORKSPACE="app",p.TABLE="table",p.USER="user",p.AUTOMATION="automation",p.WEBHOOK="webhook",p.BUILDER="builder",p.CREATOR="creator",p.GLOBAL_BUILDER="globalBuilder",p.QUERY="query",p.VIEW="view",p.LEGACY_VIEW="legacy_view",p))(hS||{});var tk=a(e=>e.hosting==="cloud","isCloudAccount");var rk=a(e=>e.authType==="sso","isSSOAccount");var Me="_",Da="\uFFF0",ld=a(e=>`${e}${Me}`,"prefixed"),Mt=(G=>(G.USER="us",G.GROUP="gr",G.CONFIG="config",G.TEMPLATE="template",G.WORKSPACE="app",G.DEV="dev",G.WORKSPACE_DEV="app_dev",G.WORKSPACE_METADATA="app_metadata",G.ROLE="role",G.DEV_INFO="devinfo",G.AUTOMATION_LOG="log_au",G.ACCOUNT_METADATA="acc_metadata",G.PLUGIN="plg",G.DATASOURCE="datasource",G.DATASOURCE_PLUS="datasource_plus",G.APP_BACKUP="backup",G.TABLE="ta",G.ROW="ro",G.AUTOMATION="au",G.LINK="li",G.WEBHOOK="wh",G.INSTANCE="inst",G.LAYOUT="layout",G.SCREEN="screen",G.QUERY="query",G.DEPLOYMENTS="deployments",G.METADATA="metadata",G.MEM_VIEW="view",G.USER_FLAG="flag",G.AUTOMATION_METADATA="meta_au",G.AUDIT_LOG="al",G.SCIM_LOG="scimlog",G.ROW_ACTIONS="ra",G.OAUTH2_CONFIG="oauth2",G.OAUTH2_CONFIG_LOG="oauth2log",G.AGENT_CHAT="agentchat",G.AGENT_TOOL_SOURCE="agenttoolsource",G.WORKSPACE_APP="workspace_app",G.WORKSPACE_FAVOURITE="workspace_favourite",G))(Mt||{}),YB=["role","datasource","datasource_plus","ta","au","wh","screen","query","metadata","view","workspace_app","workspace_favourite","inst","layout"],Cf=(t=>(t.USER_METADATA="ta_users",t))(Cf||{}),fd=(r=>(r.VIEW="view",r.ROW_ACTION="row_action",r))(fd||{});function Bb(e){return!!e.providerType}a(Bb,"isSSOUser");var qb=["rows","queries","automations"],sse=["queries","automations"];var use="SYSTEM",xm="auditLog";var Zt=(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))(Zt||{}),yn=(x=>(x.TABLE="table",x.ROW="row",x.ROWS="rows",x.WIDE="wide",x.QUERY="query",x.QUERY_PARAMS="queryParams",x.QUERY_LIMIT="queryLimit",x.LOOP_OPTION="loopOption",x.ITEM="item",x.CODE="code",x.FILTERS="filters",x.COLUMN="column",x.TRIGGER_SCHEMA="triggerSchema",x.CRON="cron",x.WEBHOOK_URL="webhookUrl",x.AUTOMATION="automation",x.AUTOMATION_FIELDS="automationFields",x.MULTI_ATTACHMENTS="multi_attachments",x.TRIGGER_FILTER="trigger_filter",x.CATEGORIES="categories",x))(yn||{}),ou=(u=>(u.ROW_SAVED="ROW_SAVED",u.ROW_UPDATED="ROW_UPDATED",u.ROW_DELETED="ROW_DELETED",u.WEBHOOK="WEBHOOK",u.APP="APP",u.CRON="CRON",u.ROW_ACTION="ROW_ACTION",u))(ou||{});var hr=($=>($.SEND_EMAIL_SMTP="SEND_EMAIL_SMTP",$.CREATE_ROW="CREATE_ROW",$.UPDATE_ROW="UPDATE_ROW",$.DELETE_ROW="DELETE_ROW",$.EXECUTE_BASH="EXECUTE_BASH",$.OUTGOING_WEBHOOK="OUTGOING_WEBHOOK",$.EXECUTE_SCRIPT="EXECUTE_SCRIPT",$.EXECUTE_SCRIPT_V2="EXECUTE_SCRIPT_V2",$.EXECUTE_QUERY="EXECUTE_QUERY",$.SERVER_LOG="SERVER_LOG",$.DELAY="DELAY",$.FILTER="FILTER",$.API_REQUEST="API_REQUEST",$.QUERY_ROWS="QUERY_ROWS",$.LOOP="LOOP",$.COLLECT="COLLECT",$.OPENAI="OPENAI",$.TRIGGER_AUTOMATION_RUN="TRIGGER_AUTOMATION_RUN",$.BRANCH="BRANCH",$.CLASSIFY_CONTENT="CLASSIFY_CONTENT",$.PROMPT_LLM="PROMPT_LLM",$.TRANSLATE="TRANSLATE",$.SUMMARISE="SUMMARISE",$.GENERATE_TEXT="GENERATE_TEXT",$.EXTRACT_FILE_DATA="EXTRACT_FILE_DATA",$.EXTRACT_STATE="EXTRACT_STATE",$.LOOP_V2="LOOP_V2",$.discord="discord",$.slack="slack",$.zapier="zapier",$.integromat="integromat",$.n8n="n8n",$))(hr||{}),cse=[...Object.values(hr),...Object.values(ou)];var nk=(u=>(u.EMAIL="email",u.DOCUMENT="document",u.BLOG_POST="blog_post",u.CHAT_MESSAGE="chat_message",u.LETTER="letter",u.PROPOSAL="proposal",u.OTHER="other",u))(nk||{}),lse={email:"Email",document:"Document",blog_post:"Blog post",chat_message:"Chat message",letter:"Letter",proposal:"Proposal",other:"Other"},ik=(r=>(r.URL="URL",r.ATTACHMENT="Attachment",r))(ik||{}),ak=(i=>(i.PDF="pdf",i.JPG="jpg",i.PNG="png",i.JPEG="jpeg",i))(ak||{}),ok=["png","jpg","jpeg","image/png","image/jpeg","image/jpg","image/jpeg"];function fse(e){return e.stepId==="BRANCH"}a(fse,"isBranchStep");var sk=(i=>(i.EQUAL="EQUAL",i.NOT_EQUAL="NOT_EQUAL",i.GREATER_THAN="GREATER_THAN",i.LESS_THAN="LESS_THAN",i))(sk||{});var mS=(r=>(r.BACKUP="backup",r.RESTORE="restore",r))(mS||{});var Tm=(i=>(i.PUBLISH="publish",i.MANUAL="manual",i.SCHEDULED="scheduled",i.RESTORING="restoring",i))(Tm||{});var JB=(s=>(s.NONE="none",s.FORM_DATA="form",s.XML="xml",s.ENCODED="encoded",s.JSON="json",s.TEXT="text",s))(JB||{}),gS=(s=>(s.GET="GET",s.POST="POST",s.PATCH="PATCH",s.PUT="PUT",s.HEAD="HEAD",s.DELETE="DELETE",s))(gS||{});var Ko="bb_internal";var pd=(o=>(o.CREATED_BY="createdBy",o.CREATED_AT="createdAt",o.UPDATED_BY="updatedBy",o.UPDATED_AT="updatedAt",o.AUTO_ID="autoID",o))(pd||{});function uk(e){return e.type==="link"}a(uk,"isRelationshipField");function ck(e){return e.relationshipType==="one-to-many"}a(ck,"isOneToMany");function lk(e){return e.relationshipType==="many-to-one"}a(lk,"isManyToOne");var pse="rev",Ot=(x=>(x.STRING="string",x.LONGFORM="longform",x.OPTIONS="options",x.NUMBER="number",x.BOOLEAN="boolean",x.ARRAY="array",x.DATETIME="datetime",x.ATTACHMENTS="attachment",x.ATTACHMENT_SINGLE="attachment_single",x.LINK="link",x.FORMULA="formula",x.AUTO="auto",x.AI="ai",x.JSON="json",x.INTERNAL="internal",x.BARCODEQR="barcodeqr",x.SIGNATURE_SINGLE="signature_single",x.BIGINT="bigint",x.BB_REFERENCE="bb_reference",x.BB_REFERENCE_SINGLE="bb_reference_single",x))(Ot||{}),fk=["attachment_single","attachment","signature_single","bb_reference","json","array"],Pat=["number","bigint"];function XB(e){return Pat.includes(e)}a(XB,"isNumeric");function dse(e){return e.type==="formula"&&e.formulaType==="static"&&e.responseType&&XB(e.responseType)}a(dse,"isNumericStaticFormula");var Nat=["string","longform","options","number","boolean","datetime","bigint","ai"];function hse(e){return Nat.includes(e)}a(hse,"canGroupBy");var gr={};oe(gr,{AutomationViewMode:()=>_4,BUDIBASE_DATASOURCE_TYPE:()=>dfe,Config:()=>vfe,Cookie:()=>sv,DEFAULT_BB_DATASOURCE_ID:()=>yS,DEFAULT_EMPLOYEE_TABLE_ID:()=>yfe,DEFAULT_EXPENSES_TABLE_ID:()=>gfe,DEFAULT_INVENTORY_TABLE_ID:()=>mfe,DEFAULT_JOBS_TABLE_ID:()=>hfe,DEFAULT_TENANT_ID:()=>pi,DeprecatedViews:()=>l0,DesignDocuments:()=>Gm,DocumentType:()=>Mt,GlobalRole:()=>bfe,Header:()=>To,InternalTable:()=>Cf,MAX_VALID_DATE:()=>T4,MIN_VALID_DATE:()=>bpt,SEPARATOR:()=>Me,SQLITE_DESIGN_DOC_ID:()=>Pa,SQS_DATASOURCE_INTERNAL:()=>Ed,StaticDatabases:()=>bn,UNICODE_MAX:()=>Da,USER_METADATA_PREFIX:()=>nC,UserStatus:()=>x4,ViewName:()=>wd,WORKSPACE_DEV:()=>S4,WORKSPACE_DEV_PREFIX:()=>mc,WORKSPACE_PREFIX:()=>hc});var gse={SUMMARISE_TEXT:{columns:"columns"},CLEAN_DATA:{column:"column"},TRANSLATE:{column:"column",language:"prompt"},CATEGORISE_TEXT:{columns:"columns",categories:"prompt"},SENTIMENT_ANALYSIS:{column:"column"},PROMPT:{prompt:"prompt"},SEARCH_WEB:{columns:"columns"}};var To=(w=>(w.API_KEY="x-budibase-api-key",w.LICENSE_KEY="x-budibase-license-key",w.API_VER="x-budibase-api-version",w.APP_ID="x-budibase-app-id",w.SESSION_ID="x-budibase-session-id",w.CLIENT="x-budibase-client",w.TYPE="x-budibase-type",w.PREVIEW_ROLE="x-budibase-role",w.TENANT_ID="x-budibase-tenant-id",w.VERIFICATION_CODE="x-budibase-verification-code",w.RETURN_VERIFICATION_CODE="x-budibase-return-verification-code",w.RESET_PASSWORD_CODE="x-budibase-reset-password-code",w.RETURN_RESET_PASSWORD_CODE="x-budibase-return-reset-password-code",w.TOKEN="x-budibase-token",w.CSRF_TOKEN="x-csrf-token",w.CORRELATION_ID="x-budibase-correlation-id",w.AUTHORIZATION="authorization",w.MIGRATING_APP="x-budibase-migrating-app",w.COOKIE="cookie",w))(To||{});var ga=["_id","_rev","type","createdAt","updatedAt","tableId"],oc=["_id","_rev","tableId"];function Am(e){return ga.includes(e)}a(Am,"isInternalColumnName");function yse(e){return oc.includes(e)}a(yse,"isExternalColumnName");var ws={Equals:{value:"equal",label:"Equals"},NotEquals:{value:"notEqual",label:"Not equals"},Empty:{value:"empty",label:"Is empty"},NotEmpty:{value:"notEmpty",label:"Is not empty"},StartsWith:{value:"string",label:"Starts with"},Like:{value:"fuzzy",label:"Like"},MoreThan:{value:"rangeLow",label:"More than or equal to"},LessThan:{value:"rangeHigh",label:"Less than or equal to"},Contains:{value:"contains",label:"Contains"},NotContains:{value:"notContains",label:"Does not contain"},In:{value:"oneOf",label:"Is in"},ContainsAny:{value:"containsAny",label:"Has any"}},bse={integer:{max:2147483647,min:-2147483648},int:{max:2147483647,min:-2147483648},smallint:{max:32767,min:-32768},mediumint:{max:8388607,min:-8388608}};var yS="datasource_internal_bb_default";var Lr={};oe(Lr,{ColumnSplitter:()=>A3,NoEmptyFilterStrings:()=>Hle,buildQuery:()=>Vle,cleanupQuery:()=>C3,fixupFilterArrays:()=>P3,getKeyNumbering:()=>D3,getValidOperatorsForType:()=>oft,hasFilters:()=>R3,limit:()=>Qle,recurseLogicalOperators:()=>k3,removeKeyNumbering:()=>dk,runQuery:()=>Xk,search:()=>cft,sort:()=>Kle,splitFiltersArray:()=>hk});var av=te(require("dayjs"));var $t={};oe($t,{filterValueToLabel:()=>qat,hasSchema:()=>$at,isSupportedUserSearch:()=>wse,parallelForeach:()=>Bat,processSearchFilters:()=>ZB,toMap:()=>Wat,trimOtherProps:()=>zat,unreachable:()=>Mat});var vse=te(require("lodash/pick"));var jat=["field","operator","value","type","externalType","valueType","noValue","formulaType"];function Mat(e,t){let r=t?.message||`No such case in exhaustive switch: ${e}`;if(!!!t?.doNotThrow)throw new Error(r)}a(Mat,"unreachable");async function Bat(e,t,r){let n=[],i=Symbol.asyncIterator in e,o=i?e[Symbol.asyncIterator]():e[Symbol.iterator](),s=a(async()=>{let u=await(i?o.next():Promise.resolve(o.next()));for(;!u.done;)await t(u.value),u=await(i?o.next():Promise.resolve(o.next()))},"executeNext");for(let u=0;u<r;u++)n.push(s());await Promise.all(n)}a(Bat,"parallelForeach");function qat(){return Object.keys(ws).reduce((e,t)=>{let n=ws[t];return e[n.value]=n.label,e},{})}a(qat,"filterValueToLabel");function $at(e){return typeof e=="object"&&!Array.isArray(e)&&e!==null&&!(e instanceof Date)&&Object.keys(e).length>0}a($at,"hasSchema");function zat(e,t){return Object.keys(e).filter(n=>t.includes(n)).reduce((n,i)=>({...n,[i]:e[i]}),{})}a(zat,"trimOtherProps");function wse(e){let t=[{op:"string",key:"email"},{op:"equal",key:"_id"},{op:"oneOf",key:"_id"}],{allOr:r,onEmptyFilter:n,...i}=e;for(let[o,s]of Object.entries(i)){if(typeof s!="object")return!1;if(ud(o)){for(let l of e[o].conditions)if(!wse(l))return!1;return!0}let u=Object.keys(s||{});if(u.length===0)continue;if(!t.find(l=>l.op===o&&u.length===1&&u[0]===l.key))return!1}return!0}a(wse,"isSupportedUserSearch");function ZB(e){if(!e||e.length===0)return;let{allOr:t,onEmptyFilter:r,filters:n}=hk(e);return{logicalOperator:"all",onEmptyFilter:r||"all",groups:[{logicalOperator:t?"any":"all",filters:n.map(i=>{let o=(0,vse.default)(i,jat);return o.field=dk(o.field),o})}]}}a(ZB,"processSearchFilters");function Wat(e,t){return t.reduce((r,n)=>(r[n[e]]=n,r),{})}a(Wat,"toMap");var Ye={};oe(Ye,{cancelableTimeout:()=>Ese,cron:()=>rft,deepGet:()=>eq,duplicateName:()=>eft,getSequentialName:()=>tft,getUserColor:()=>Hat,getUserInitials:()=>Gat,getUserLabel:()=>Vat,isGoogleSheets:()=>Qat,isSQL:()=>Yat,lists:()=>x3,retry:()=>Jat,roles:()=>S3,schema:()=>a0,views:()=>_3,wait:()=>tq,withTimeout:()=>Kat});var eq=a((e,t)=>{if(!e||!t)return null;if(Object.prototype.hasOwnProperty.call(e,t))return e[t];let r=t.split(".");for(let n=0;n<r.length;n++)e=e?.[r[n]];return e},"deepGet"),Gat=a(e=>{if(!e)return"?";let t="";return t+=e.firstName?e.firstName[0]:"",t+=e.lastName?e.lastName[0]:"",t!==""?t:e.email?.[0]||"U"},"getUserInitials"),Hat=a(e=>{let t=e?._id;if(!t)return"var(--spectrum-global-color-blue-400)";t=t.replace("ro_ta_users_","");let r=1;for(let n=0;n<t.length;n++)r+=t.charCodeAt(n),r=r%36;return`hsl(${r*10}, 50%, 40%)`},"getUserColor"),Vat=a(e=>{if(!e)return"";let{firstName:t,lastName:r,email:n}=e;return t&&r?`${t} ${r}`:t||r||n},"getUserLabel");function Ese(e){let t;return[new Promise((r,n)=>{t=setTimeout(()=>{n({status:301,errno:"ETIME"})},e)}),()=>{clearTimeout(t)}]}a(Ese,"cancelableTimeout");async function Kat(e,t){let[r,n]=Ese(e),i=await Promise.race([t(),r]);return n(),i}a(Kat,"withTimeout");function Qat(e){return e==="GOOGLE_SHEETS"}a(Qat,"isGoogleSheets");function Yat(e){return!e||!e.source?!1:["POSTGRES","SQL_SERVER","MYSQL","ORACLE"].indexOf(e.source)!==-1||e.isSQL===!0}a(Yat,"isSQL");async function tq(e){return new Promise(t=>setTimeout(t,e))}a(tq,"wait");async function Jat(e,t){let{times:r=3}=t||{};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 tq(o);try{return await e()}catch(s){n=s}}throw n}a(Jat,"retry");var Mle=te(fl()),Ble=te(Ule());var jle="(Input cron: ",Mlt={"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 Blt(e){let t=[];for(let r of e){r.includes(jle)&&(r=r.split(jle)[0].trim());for(let[n,i]of Object.entries(Mlt))r.includes(n)&&(r=r.replace(new RegExp(n,"g"),i));t.push(r)}return t}a(Blt,"improveErrors");function qle(e,t=4){let r=Ble.default.parseExpression(e),n=[];for(let i=0;i<t;i++)n.push(r.next().toString());return n}a(qle,"getNextExecutionDates");function $le(e){let t=(0,Mle.default)(e,{preset:"npm-cron-schedule",override:{useSeconds:!1}});return t.isValid()?{valid:!0}:{valid:!1,err:Blt(t.getError())}}a($le,"validate");var a0={};oe(a0,{decodeNonAscii:()=>w3,encodeNonAscii:()=>zlt,isDeprecatedSingleUserColumn:()=>qlt,isNumeric:()=>Wlt,isRequired:()=>$lt});function qlt(e){return e.type==="bb_reference"&&e.subtype==="user"&&e.constraints?.type!=="array"}a(qlt,"isDeprecatedSingleUserColumn");function $lt(e){return!!e&&(typeof e.presence!="boolean"&&e.presence?.allowEmpty===!1||e.presence===!0)}a($lt,"isRequired");function zlt(e){return e.split("").map(t=>t.charCodeAt(0)>127?"\\u"+t.charCodeAt(0).toString(16).padStart(4,"0"):t).join("")}a(zlt,"encodeNonAscii");function w3(e){return e.replace(/\\u([0-9a-fA-F]{4})/g,(t,r)=>String.fromCharCode(parseInt(r,16)))}a(w3,"decodeNonAscii");function Wlt(e){return e.type==="number"||e.type==="bigint"}a(Wlt,"isNumeric");var _3={};oe(_3,{basicFields:()=>Qlt,calculationFields:()=>Klt,hasCalculationFields:()=>Vlt,isBasicViewField:()=>Glt,isCalculationField:()=>o0,isCalculationView:()=>Hlt,isV2:()=>Ylt,isVisible:()=>zle});var E3=te(require("lodash/pickBy"));function o0(e){return"calculationType"in e}a(o0,"isCalculationField");function Glt(e){return!o0(e)}a(Glt,"isBasicViewField");function Hlt(e){return e.type==="calculation"}a(Hlt,"isCalculationView");function Vlt(e){return Object.values(e.schema||{}).some(o0)}a(Vlt,"hasCalculationFields");function Klt(e){return(0,E3.default)(e.schema||{},o0)}a(Klt,"calculationFields");function zle(e){return e.visible!==!1}a(zle,"isVisible");function Qlt(e,t){let{visible:r=!0}=t||{};return(0,E3.default)(e.schema||{},n=>!o0(n)&&(!r||zle(n)))}a(Qlt,"basicFields");function Ylt(e){return e.version===2}a(Ylt,"isV2");var S3={};oe(S3,{checkForRoleInheritanceLoops:()=>Xlt});function Jlt(e){return`role${Me}${e}`}a(Jlt,"prefixForCheck");function Xlt(e){let t=new Map;e.forEach(o=>{t.set(o._id,o)});let r=new Set,n=new Set;function i(o){let s=Jlt(o);if(n.has(o)||n.has(s))return!0;if(r.has(o)||r.has(s))return!1;n.add(o);let u=t.get(s)||t.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 a(i,"hasLoop"),!!e.find(o=>i(o._id))}a(Xlt,"checkForRoleInheritanceLoops");var x3={};oe(x3,{punctuateList:()=>Zlt});function Zlt(e){return e.length===0?"":e.length===1?e[0]:e.length===2?e.join(" and "):e.slice(0,-1).join(", ")+" and "+e[e.length-1]}a(Zlt,"punctuateList");var eft=a((e,t)=>{let r=new RegExp("\\s(\\d+)$"),n=e.split(r)[0],i=new RegExp(`${n}\\s(\\d+)$`),o=[];t.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 s;if(o.length===0)s=1;else{for(let u=0;u<o.length;u++)if(o[u]!==u+1){s=u+1;break}s||(s=o.length+1)}return`${n} ${s}`},"duplicateName"),tft=a((e,t,{getName:r,numberFirstItem:n,separator:i=""}={})=>{if(!t?.length)return"";let o=t.trim(),s=n?`${t}1`:o;if(!e?.length)return s;let u=0;return e.forEach(c=>{let l=r?.(c)??c;if(typeof l!="string"||!l.startsWith(o))return;let f=l.split(o);if(f.length!==2)return;f[1].trim()===""&&(f[1]="1");let p=parseInt(f[1]);p>u&&(u=p)}),u===0?s:`${t}${i}${u+1}`},"getSequentialName");var rft={getNextExecutionDates:qle,validate:$le};var Jk=te(require("lodash/isPlainObject")),T3=te(require("lodash/isEmpty"));var ift=/{{([^{].*?)}}/g,Gle=Object.values(pS),aft=[...Object.values(Sm),...Object.values(ll),...Object.values(Mb)],oft=a((e,t,r)=>{let n=ws,i=[n.Equals,n.NotEquals,n.StartsWith,n.Like,n.Empty,n.NotEmpty,n.In],o=[n.Equals,n.NotEquals,n.MoreThan,n.LessThan,n.Empty,n.NotEmpty,n.In],s=[n.Contains,n.NotContains,n.ContainsAny,n.Empty,n.NotEmpty],u=[],{type:c,formulaType:l,subtype:f}=e;c==="string"?f==="array"?u=s:u=i:c==="number"||c==="bigint"?u=o:c==="options"?u=[n.Equals,n.NotEquals,n.Empty,n.NotEmpty,n.In]:c==="array"?u=s: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"||a0.isDeprecatedSingleUserColumn(e)?u=[n.Equals,n.NotEquals,n.Empty,n.NotEmpty,n.In]:c==="bb_reference"?u=s:c==="barcodeqr"&&(u=i);let p=r?.tableId?.includes("datasource_plus");return t==="_id"&&p&&(u=[n.Equals,n.NotEquals,n.In]),u},"getValidOperatorsForType"),Hle=[ws.StartsWith.value,ws.Like.value,ws.Equals.value,ws.NotEquals.value,ws.Contains.value,ws.NotContains.value,ws.ContainsAny.value,ws.In.value];function k3(e,t){for(let r of Gle)e[r]&&(e[r].conditions=e[r].conditions.map(n=>t(n)));return e}a(k3,"recurseLogicalOperators");var C3=a(e=>{for(let t of Hle)if(e[t])for(let r of Object.keys(e)){if(r!==t)continue;if(typeof e[r]=="object")for(let[i,o]of Object.entries(e[r]))(o==null||o===""||sft(o))&&delete e[t][i]}return e=k3(e,C3),e},"cleanupQuery");function sft(e){return Array.isArray(e)&&e.length===0}a(sft,"isEmptyArray");var dk=a(e=>D3(e).key,"removeKeyNumbering"),D3=a(e=>{if(typeof e=="string"&&e.match(/\d[0-9]*:/g)!=null){let t=e.split(":");return{prefix:`${t.shift()}:`,key:t.join(":")}}else return{key:e}},"getKeyNumbering"),A3=class{static{a(this,"ColumnSplitter")}constructor(t,r){if(this.tableNames=t.map(n=>n.name),this.tableIds=t.map(n=>n._id),this.relationshipColumnNames=t.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(t){let{prefix:r,key:n}=D3(t),i;if(this.aliases)for(let s of Object.keys(this.aliases||{})){let u=`${s}.`;n.startsWith(u)&&(i=this.aliases[s],n=n.slice(u.length))}let o;for(let s of this.relationships){let u=`${s}.`;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=w3(n.slice(this.columnPrefix.length))),{tableName:i,numberPrefix:r,relationshipPrefix:o,column:n}}};function uft(e){if(!e||!e?.operator||!e?.field)return;let t={},{operator:r,field:n,type:i,externalType:o}=e,{value:s}=e;(r==="empty"||r==="notEmpty")&&(s=null);let u=typeof s=="string"&&(s.match(ift)||[]).length>0;switch(i){case"datetime":if(!u&&r!=="empty"&&r!=="notEmpty"){if(!s)return;if(typeof s=="string")s=new Date(s).toISOString();else if(ek(r))return t[r]??={},t[r][n]=s,t}break;case"number":typeof s=="string"&&!u&&(r==="oneOf"?s=s.split(",").map(parseFloat):s=parseFloat(s));break;case"boolean":s=`${s}`.toLowerCase()==="true";break;case"array":["contains","notContains","containsAny"].includes(r.toLocaleString())&&typeof s=="string"&&(s=s.split(","));break}if(ek(r)){let l=bse[o]||{min:Number.MIN_SAFE_INTEGER,max:Number.MAX_SAFE_INTEGER};t[r]??={},t[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"&&s!=null&&s!=="")t.range??={},t.range[n]={...t.range[n],high:s};else if(r==="rangeLow"&&s!=null&&s!=="")t.range??={},t.range[n]={...t.range[n],low:s};else if(rse(r)||nse(r)||ek(r))i==="boolean"?r==="equal"&&s===!1?(t.notEqual=t.notEqual||{},t.notEqual[n]=!0):r==="notEqual"&&s===!1?(t.equal=t.equal||{},t.equal[n]=!0):(t[r]??={},t[r][n]=s):(t[r]??={},t[r][n]=s);else throw new Error(`Unsupported operator: ${r}`);return t}a(uft,"buildCondition");function hk(e){let t={filters:[]};for(let r of e)"operator"in r&&r.operator==="allOr"?t.allOr=!0:"onEmptyFilter"in r?t.onEmptyFilter=r.onEmptyFilter:t.filters.push(r);return t}a(hk,"splitFiltersArray");function Vle(e){if(!e)return{};if(Array.isArray(e)&&(e=ZB(e),!e))return{};let t={};e.onEmptyFilter?t.onEmptyFilter=e.onEmptyFilter:t.onEmptyFilter="all";let r=Wle(e.logicalOperator||"all");return t[r]={conditions:(e.groups||[]).map(n=>{if(n.groups){let c=Vle(n);return delete c.onEmptyFilter,c}let{allOr:i,onEmptyFilter:o,filters:s}=hk(n.filters||[]);o&&(t.onEmptyFilter=o);let u=i?"$or":"$and";return n.logicalOperator&&(u=Wle(n.logicalOperator)),{[u]:{conditions:s.map(uft).filter(c=>c)}}})},t}a(Vle,"buildQuery");function Wle(e){return e==="all"?"$and":"$or"}a(Wle,"logicalOperatorFromUI");function P3(e){if(!e)return e;for(let t of Object.values(ll)){let r=e[t];if(!(r==null||!(0,Jk.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 k3(e,P3),e}a(P3,"fixupFilterArrays");function cft(e,t){let r=Xk(e,t.query);t.sort&&(r=Kle(r,t.sort,t.sortOrder||"ascending",t.sortType));let n=r.length;t.limit&&(r=Qle(r,t.limit.toString()));let i={rows:r};return t.countRows&&(i.totalRows=n),i}a(cft,"search");function Xk(e,t){if(!e||!Array.isArray(e))return[];if(!t)return e;if(t=C3(t),t=P3(t),!R3(t)&&t.onEmptyFilter==="none")return[];let r=a((T,I)=>R=>{for(let[C,k]of Object.entries(t[T]||{})){let U=ud(T)?R:eq(R,dk(C)),M=I(U,k);if(t.allOr&&M)return!0;if(!t.allOr&&!M)return!1}return!t.allOr},"match"),n=r("string",(T,I)=>typeof T!="string"||typeof I!="string"?!1:T.toLowerCase().startsWith(I.toLowerCase())),i=r("fuzzy",(T,I)=>typeof T!="string"||typeof I!="string"?!1:T.toLowerCase().includes(I.toLowerCase())),o=r("range",(T,I)=>{if(T==null||T===""||((0,Jk.default)(I.low)&&(0,T3.default)(I.low)&&(I.low=void 0),(0,Jk.default)(I.high)&&(0,T3.default)(I.high)&&(I.high=void 0),I.low==null&&I.high==null))return!1;let R=+T;if(!isNaN(R)){let k=+I.low,U=+I.high;if(!isNaN(k)&&!isNaN(U))return R>=k&&R<=U;if(isNaN(k)){if(!isNaN(U))return R<=U}else return R>=k}let C=(0,av.default)(T);if(C.isValid()){let k=(0,av.default)(I.low||"0000-00-00T00:00:00.000Z"),U=(0,av.default)(I.high||"9999-00-00T00:00:00.000Z");if(k.isValid()&&U.isValid())return C.isAfter(k)&&C.isBefore(U)||C.isSame(k)||C.isSame(U);if(k.isValid())return C.isAfter(k)||C.isSame(k);if(U.isValid())return C.isBefore(U)||C.isSame(U)}return I.low!=null&&I.high!=null?T>=I.low&&T<=I.high:I.low!=null?T>=I.low:I.high!=null?T<=I.high:!1}),s=a((T,I)=>{if(Array.isArray(T)){for(let C of T)if(s(C,I))return!0;return!1}if(T&&typeof T=="object"&&typeof I=="string")return T._id===I;if(T===I)return!0;if(T==null&&I!=null||T!=null&&I==null)return!1;let R=(0,av.default)(T);if(R.isValid()){let C=(0,av.default)(I);if(C.isValid())return R.isSame(C)}return!1},"_valueMatches"),u=a(T=>(...I)=>!T(...I),"not"),c=r("equal",s),l=r("notEqual",u(s)),f=a(T=>typeof T=="string"?T==="":Array.isArray(T)?T.length===0:T&&typeof T=="object"?Object.keys(T).length===0:T==null,"_empty"),p=r("empty",f),d=r("notEmpty",u(f)),h=r("oneOf",(T,I)=>(typeof I=="string"&&(I=I.split(",")),typeof T=="number"&&(I=I.map(R=>parseFloat(R))),Array.isArray(I)?I.some(R=>s(T,R)):!1)),m=a(T=>(I,R)=>!Array.isArray(I)||(typeof R=="string"&&(R=R.split(","),typeof I[0]=="number"&&(R=R.map(C=>parseFloat(C)))),!Array.isArray(R))?!1:R.length===0?!0:R[T](C=>s(I,C)),"_contains"),g=r("contains",(T,I)=>Array.isArray(I)&&I.length===0?!0:m("every")(T,I)),y=r("notContains",(T,I)=>Array.isArray(I)&&I.length===0?!0:u(m("every"))(T,I)),b=r("containsAny",m("some")),v=r("$and",(T,I)=>{if(!I.length)return!1;for(let R of I)if(!Xk([T],R).length)return!1;return!0}),w=r("$or",(T,I)=>{if(!I.length)return!1;for(let R of I)if(Xk([T],{...R,allOr:!0}).length)return!0;return!1}),x=a(T=>{let I={string:n,fuzzy:i,range:o,equal:c,notEqual:l,empty:p,notEmpty:d,oneOf:h,contains:g,containsAny:b,notContains:y,$and:v,$or:w},R=Object.entries(t||{}).filter(([C,k])=>!["allOr","onEmptyFilter"].includes(C)&&k&&Object.keys(k).length>0).map(([C])=>I[C]?.(T)??!1);return R3(t)?t.allOr?R.some(C=>C===!0):R.every(C=>C===!0):!0},"docMatch");return e.filter(x)}a(Xk,"runQuery");function Kle(e,t,r,n="string"){if(!t||!r||!n)return e;let i=a(o=>o==null?o:n==="string"?`${o}`:parseFloat(o),"parse");return e.slice().sort((o,s)=>{let u=i(o[t]),c=i(s[t]),l=c==null||u>c?1:-1;return r.toLowerCase()==="descending"?l*-1:l})}a(Kle,"sort");function Qle(e,t){let r=typeof t=="number"?t:parseFloat(t);return isNaN(r)?e:e.slice(0,r)}a(Qle,"limit");var R3=a(e=>{if(!e)return!1;let t=a(r=>{for(let n of Gle)if(r[n])for(let i of r[n]?.conditions||[]){let o=t(i);if(o)return o}for(let n of aft){let i=r[n];if(!i||typeof i!="object")continue;if(Object.entries(i).filter(s=>{let u=s[1]!==void 0||s[1]!==null||s[1]!=="";return n==="notEmpty"||u}).length!==0)return!0}return!1},"check");return t(e)},"hasFilters");var Yi={};oe(Yi,{applications:()=>L3,automations:()=>U3,screens:()=>q3,users:()=>B3});var L3={};oe(L3,{getDevAppID:()=>lft,getProdAppID:()=>u0});var N3=ld("app"),s0=ld("app_dev");function lft(e){if(!e)throw new Error("No app ID provided");if(e.startsWith(s0))return e;let t=e.split(N3);t.shift();let r=t.join(N3);return`${s0}${r}`}a(lft,"getDevAppID");function u0(e){if(!e)throw new Error("No app ID provided");if(!e.startsWith(s0))return e;let t=e.split(s0);t.shift();let r=t.join(s0);return`${N3}${r}`}a(u0,"getProdAppID");var U3={};oe(U3,{checkForCollectStep:()=>F3,isAppAction:()=>dft,isRowAction:()=>fft,isWebhookAction:()=>pft});function fft(e){return e.definition.trigger?.stepId==="ROW_ACTION"}a(fft,"isRowAction");function pft(e){return e.definition.trigger?.stepId==="WEBHOOK"}a(pft,"isWebhookAction");function dft(e){return e.definition.trigger?.stepId==="APP"}a(dft,"isAppAction");function Yle(e){if(!e||!Array.isArray(e))return!1;for(let t of e){if(t.stepId==="COLLECT")return!0;if(fse(t)&&t.inputs.children){for(let r of Object.values(t.inputs.children))if(Yle(r))return!0}}return!1}a(Yle,"hasCollectBlockRecursive");function F3(e){return Yle(e.definition.steps)}a(F3,"checkForCollectStep");var B3={};oe(B3,{canCreateApps:()=>hft,containsUserID:()=>_ft,getGlobalUserID:()=>Eft,getUserAppGroups:()=>Sft,hasAdminPermissions:()=>M3,hasAppBuilderPermissions:()=>eC,hasBuilderPermissions:()=>vft,hasCreatorPermissions:()=>tC,isAdmin:()=>c0,isAdminOrBuilder:()=>gft,isAdminOrGlobalBuilder:()=>yft,isAdminOrWorkspaceBuilder:()=>mft,isBuilder:()=>j3,isCreator:()=>wft,isGlobalBuilder:()=>Zk,userAppAccessList:()=>xft});function j3(e,t){return e?e.builder?.global?!0:!!(t&&e.builder?.apps?.includes(u0(t))):!1}a(j3,"isBuilder");function Zk(e){return j3(e)&&!eC(e)||c0(e)}a(Zk,"isGlobalBuilder");function hft(e){return Zk(e)||tC(e)}a(hft,"canCreateApps");function c0(e){return e?M3(e):!1}a(c0,"isAdmin");function mft(e,t){return e?!!(c0(e)||t&&e.builder?.apps?.includes(u0(t))):!1}a(mft,"isAdminOrWorkspaceBuilder");function gft(e,t){return j3(e,t)||c0(e)}a(gft,"isAdminOrBuilder");function yft(e){return Zk(e)||c0(e)}a(yft,"isAdminOrGlobalBuilder");function eC(e){if(!e)return!1;let t=e.builder?.apps?.length;return!!!e.builder?.global&&t!=null&&t>0}a(eC,"hasAppBuilderPermissions");function bft(e){return e?!!Object.values(e.roles??{}).find(t=>t==="CREATOR"):!1}a(bft,"hasAppCreatorPermissions");function vft(e){return e?e.builder?.global||eC(e)||tC(e):!1}a(vft,"hasBuilderPermissions");function M3(e){return e?!!e.admin?.global:!1}a(M3,"hasAdminPermissions");function tC(e){return e?!!e.builder?.creator:!1}a(tC,"hasCreatorPermissions");function wft(e){return e?Zk(e)||M3(e)||tC(e)||eC(e)||bft(e):!1}a(wft,"isCreator");function Eft(e){if(typeof e!="string")return e;let t=`ro${Me}ta_users${Me}`;return e.startsWith(t)?e.split(t)[1]:e}a(Eft,"getGlobalUserID");function _ft(e){return typeof e!="string"?!1:e.includes(`us${Me}`)}a(_ft,"containsUserID");function Jle(e,t){return t?.filter(r=>r.users?.find(n=>n._id===e))||[]}a(Jle,"getUserGroups");function Sft(e,t,r){let n=u0(e);return Jle(t,r).filter(o=>Object.keys(o.roles||{}).find(s=>s===n))}a(Sft,"getUserAppGroups");function xft(e,t){let n=Jle(e._id,t).flatMap(o=>Object.keys(o.roles||{})),i=[...Object.keys(e?.roles||{}),...n];return[...new Set(i)]}a(xft,"userAppAccessList");var q3={};oe(q3,{findInSettings:()=>Tft});function Tft(e,t){let r=[];function n(i,o=""){for(let[s,u]of Object.entries(i))u&&(typeof u=="string"&&u.includes(t)?r.push({setting:o?`${o}.${s}`:s,value:u}):typeof u=="object"&&n(u,s))}return a(n,"recurse"),n(e.props),r}a(Tft,"findInSettings");var LLr={string:!0,longform:!0,options:!0,number:!0,datetime:!0,formula:!0,ai:!0,auto:!0,internal:!0,barcodeqr:!0,bigint:!0,boolean:!1,array:!1,attachment:!1,attachment_single:!1,signature_single:!1,link:!1,json:!1,bb_reference:!1,bb_reference_single:!1},FLr={string:!0,longform:!0,options:!0,number:!0,datetime:!0,auto:!0,internal:!0,barcodeqr:!0,bigint:!0,boolean:!0,json:!0,formula:!1,ai:!1,attachment:!1,attachment_single:!1,signature_single:!1,array:!1,link:!1,bb_reference:!1,bb_reference_single:!1},ULr={number:!0,json:!0,datetime:!0,longform:!0,string:!0,options:!0,array:!0,bigint:!0,boolean:!0,auto:!1,internal:!1,barcodeqr:!1,formula:!1,ai:!1,attachment:!1,attachment_single:!1,signature_single:!1,link:!1,bb_reference:!0,bb_reference_single:!0};function Xle(e){let t=Object.keys(e.schema),r=t.map(o=>o.toLowerCase()),n=new Set(r),i=[];if(n.size!==r.length)for(let o of n.keys())r.filter(u=>u===o).length>1&&i.push(o);for(let o of ga)t.find(s=>s===o)&&i.push(o);return i}a(Xle,"findDuplicateInternalColumns");var Wt={};oe(Wt,{steps:()=>w4,triggers:()=>E4});var w4={};oe(w4,{apiRequest:()=>Y3,bash:()=>$3,branch:()=>z3,classifyText:()=>p4,collect:()=>W3,createRow:()=>G3,delay:()=>H3,deleteRow:()=>V3,discord:()=>K3,executeQuery:()=>Q3,executeScript:()=>J3,executeScriptV2:()=>X3,extract:()=>y4,extractState:()=>b4,filter:()=>Z3,generate:()=>g4,loop:()=>e4,loopV2:()=>v4,make:()=>t4,n8n:()=>r4,openai:()=>n4,outgoingWebhook:()=>i4,promptLLM:()=>d4,queryRows:()=>a4,sendSmtpEmail:()=>o4,serverLog:()=>s4,slack:()=>u4,summarise:()=>m4,translate:()=>h4,triggerAutomationRun:()=>c4,updateRow:()=>l4,zapier:()=>f4});var $3={};oe($3,{definition:()=>Aft});var Aft={name:"Bash Scripting",tagline:"Execute a bash command",icon:"git-branch",description:"Run a bash script",type:"ACTION",internal:!0,features:{LOOPING:!0},stepId:"EXECUTE_BASH",inputs:{},schema:{inputs:{properties:{code:{type:"string",customType:"code",title:"Code"}},required:["code"]},outputs:{properties:{stdout:{type:"string",description:"Standard output of your bash command or script"},success:{type:"boolean",description:"Whether the command was successful"}},required:["stdout"]}}};var z3={};oe(z3,{definition:()=>Rft});var Rft={name:"Branch",icon:"git-branch",tagline:"Branch from this step",description:"Branching",stepId:"BRANCH",internal:!0,features:{},inputs:{},schema:{inputs:{properties:{branches:{properties:{name:{type:"string"},condition:{customType:"filters"}}},children:{type:"array"}},required:["conditions"]},outputs:{properties:{branchName:{type:"string"},status:{type:"string",description:"Branch result"},branchId:{type:"string",description:"Branch ID"},success:{type:"boolean",description:"Branch success"}},required:["output"]}},type:"LOGIC"};var W3={};oe(W3,{definition:()=>Oft});var Oft={name:"Collect Data",tagline:"Collect data to be sent to design",icon:"stack",description:"Collects specified data so it can be provided to the design section",type:"ACTION",internal:!0,features:{},stepId:"COLLECT",inputs:{},schema:{inputs:{properties:{collection:{type:"string",title:"What to Collect"}},required:["collection"]},outputs:{properties:{success:{type:"boolean",description:"Whether the action was successful"},value:{type:"string",description:"Collected data"}},required:["success","value"]}}};var G3={};oe(G3,{definition:()=>Ift});var Ift={name:"Create Row",tagline:"Create a {{inputs.enriched.table.name}} row",icon:"rows-plus-bottom",description:"Add a row to your database",type:"ACTION",internal:!0,features:{LOOPING:!0},stepId:"CREATE_ROW",inputs:{},schema:{inputs:{properties:{row:{type:"object",properties:{tableId:{type:"string",customType:"table"}},customType:"row",title:"Table",required:["tableId"]}},required:["row"]},outputs:{properties:{row:{type:"object",customType:"row",description:"The new row"},response:{type:"object",description:"The response from the table"},success:{type:"boolean",description:"Whether the row creation was successful"},id:{type:"string",description:"The identifier of the new row"},revision:{type:"string",description:"The revision of the new row"}},required:["success","id","revision"]}}};var H3={};oe(H3,{definition:()=>kft});var kft={name:"Delay",icon:"clock",tagline:"Delay for {{inputs.time}} milliseconds",description:"Delay the automation until an amount of time has passed",stepId:"DELAY",internal:!0,features:{},inputs:{},schema:{inputs:{properties:{time:{type:"number",title:"Delay in milliseconds"}},required:["time"]},outputs:{properties:{success:{type:"boolean",description:"Whether the delay was successful"}},required:["success"]}},type:"LOGIC"};var V3={};oe(V3,{definition:()=>Cft});var Cft={description:"Delete a row from your database",icon:"trash-simple",name:"Delete Row",tagline:"Delete a {{inputs.enriched.table.name}} row",type:"ACTION",stepId:"DELETE_ROW",internal:!0,features:{LOOPING:!0},inputs:{},schema:{inputs:{properties:{tableId:{type:"string",customType:"table",title:"Table"},id:{type:"string",title:"Row ID"}},required:["tableId","id"]},outputs:{properties:{row:{type:"object",customType:"row",description:"The deleted row"},response:{type:"object",description:"The response from the table"},success:{type:"boolean",description:"Whether the deletion was successful"}},required:["row","success"]}}};var K3={};oe(K3,{definition:()=>Dft});var Dft={name:"Discord Message",tagline:"Send a message to a Discord server",description:"Send a message to a Discord server",icon:"ri-discord-line",stepId:"discord",type:"ACTION",internal:!1,features:{LOOPING:!0},inputs:{},schema:{inputs:{properties:{url:{type:"string",title:"Discord Webhook URL"},username:{type:"string",title:"Bot Name"},avatar_url:{type:"string",title:"Bot Avatar URL"},content:{type:"string",title:"Message"}},required:["url","content"]},outputs:{properties:{httpStatus:{type:"number",description:"The HTTP status code of the request"},response:{type:"string",description:"The response from the Discord Webhook"},success:{type:"boolean",description:"Whether the message sent successfully"}}}}};var Q3={};oe(Q3,{definition:()=>Pft});var Pft={name:"External Data Connector",tagline:"Execute Data Connector",icon:"database",description:"Execute a query in an external data connector",type:"ACTION",stepId:"EXECUTE_QUERY",internal:!0,features:{LOOPING:!0},inputs:{},schema:{inputs:{properties:{query:{type:"object",properties:{queryId:{type:"string",customType:"query"}},customType:"queryParams",title:"Parameters",required:["queryId"]}},required:["query"]},outputs:{properties:{response:{type:"object",description:"The response from the datasource execution"},info:{type:"object",description:"Some query types may return extra data, like headers from a REST query"},success:{type:"boolean",description:"Whether the action was successful"}},required:["response","success"]}}};var Y3={};oe(Y3,{definition:()=>Nft});var Nft={name:"API Request",tagline:"Execute a REST request",icon:"globe",description:"Execute a HTTP query from a REST datasource",type:"ACTION",stepId:"API_REQUEST",internal:!0,new:!0,features:{LOOPING:!0},inputs:{},schema:{inputs:{properties:{query:{type:"object",properties:{queryId:{type:"string"}},customType:"queryParams",title:"Parameters",required:["queryId"]}},required:["query"]},outputs:{properties:{response:{type:"object",description:"The response from the datasource execution"},info:{type:"object",description:"Some query types may return extra data, like headers from a REST query"},success:{type:"boolean",description:"Whether the action was successful"}},required:["response","success"]}}};var J3={};oe(J3,{definition:()=>Lft});var Lft={name:"JS Scripting",tagline:"Execute JavaScript Code",deprecated:!0,icon:"code",description:"Run a piece of JavaScript code in your automation",type:"ACTION",internal:!0,stepId:"EXECUTE_SCRIPT",inputs:{},features:{LOOPING:!0},schema:{inputs:{properties:{code:{type:"string",customType:"code",title:"Code"}},required:["code"]},outputs:{properties:{value:{type:"string",description:"The result of the return statement"},success:{type:"boolean",description:"Whether the action was successful"}},required:["success"]}}};var X3={};oe(X3,{definition:()=>Fft});var Fft={name:"JavaScript",tagline:"Execute JavaScript Code",icon:"brackets-angle",description:"Run a piece of JavaScript code in your automation",type:"ACTION",internal:!0,new:!1,stepId:"EXECUTE_SCRIPT_V2",inputs:{},features:{LOOPING:!0},schema:{inputs:{properties:{code:{type:"string",customType:"code",title:"Code"}},required:["code"]},outputs:{properties:{value:{type:"string",description:"The result of the return statement"},success:{type:"boolean",description:"Whether the action was successful"}},required:["success"]}}};var Z3={};oe(Z3,{PrettyFilterConditions:()=>Zle,definition:()=>Uft});var Zle={EQUAL:"Equals",NOT_EQUAL:"Not equals",GREATER_THAN:"Greater than",LESS_THAN:"Less than"},Uft={name:"Condition",tagline:"{{inputs.field}} {{inputs.condition}} {{inputs.value}}",icon:"git-branch",description:"Conditionally halt automations which do not meet certain conditions",type:"LOGIC",internal:!0,features:{},stepId:"FILTER",inputs:{condition:"EQUAL"},schema:{inputs:{properties:{field:{type:"string",title:"Reference Value"},condition:{type:"string",title:"Condition",enum:Object.values(sk),pretty:Object.values(Zle)},value:{type:"string",title:"Comparison Value"}},required:["field","condition","value"]},outputs:{properties:{success:{type:"boolean",description:"Whether the action was successful"},result:{type:"boolean",description:"Whether the logic block passed"}},required:["success","result"]}}};var e4={};oe(e4,{definition:()=>jft});var jft={name:"Looping",icon:"recycle",tagline:"Loop the block",description:"Loop",stepId:"LOOP",internal:!0,features:{},inputs:{},schema:{inputs:{properties:{option:{customType:"loopOption",title:"Input type"},binding:{type:"string",title:"Binding / Value"},iterations:{type:"number",title:"Max loop iterations"},failure:{type:"string",title:"Failure Condition"}},required:["type","value","iterations","failure"]},outputs:{properties:{items:{customType:"item",description:"The item currently being executed"},success:{type:"boolean",description:"Whether the message loop was successfully"},iterations:{type:"number",description:"The amount of times the block ran"}},required:["success","items","iterations"]}},type:"LOGIC"};var t4={};oe(t4,{definition:()=>Mft});var Mft={name:"Make Integration",stepTitle:"Make",tagline:"Trigger a Make scenario",description:"Performs a webhook call to Make and gets the response (if configured)",icon:"ri-shut-down-line",stepId:"integromat",type:"ACTION",internal:!1,features:{LOOPING:!0},inputs:{},schema:{inputs:{properties:{url:{type:"string",title:"Webhook URL"},body:{type:"json",title:"Payload"}},required:["url","body"]},outputs:{properties:{success:{type:"boolean",description:"Whether call was successful"},httpStatus:{type:"number",description:"The HTTP status code returned"},response:{type:"object",description:"The webhook response - this can have properties"}},required:["success","response"]}}};var r4={};oe(r4,{definition:()=>Bft});var Bft={name:"n8n Integration",stepTitle:"n8n",tagline:"Trigger an n8n workflow",description:"Performs a webhook call to n8n and gets the response (if configured)",icon:"ri-shut-down-line",stepId:"n8n",type:"ACTION",internal:!1,features:{LOOPING:!0},inputs:{},schema:{inputs:{properties:{url:{type:"string",title:"Webhook URL"},method:{type:"string",title:"Method",enum:Object.values(gS)},authorization:{type:"string",title:"Authorization"},body:{type:"json",title:"Payload"}},required:["url","method"]},outputs:{properties:{success:{type:"boolean",description:"Whether call was successful"},httpStatus:{type:"number",description:"The HTTP status code returned"},response:{type:"object",description:"The webhook response - this can have properties"}},required:["success","response"]}}};var n4={};oe(n4,{definition:()=>qft});var efe=(u=>(u.GPT_4O_MINI="gpt-4o-mini",u.GPT_4O="gpt-4o",u.GPT_4="gpt-4",u.GPT_35_TURBO="gpt-3.5-turbo",u.GPT_5_MINI="gpt-5-mini",u.GPT_5="gpt-5",u.GPT_5_NANO="gpt-5-nano",u))(efe||{}),qft={name:"OpenAI",tagline:"Send prompts to ChatGPT",icon:"flow-arrow",description:"Interact with the OpenAI ChatGPT API.",type:"ACTION",internal:!0,features:{},deprecated:!1,stepId:"OPENAI",inputs:{prompt:""},schema:{inputs:{properties:{prompt:{type:"string",title:"Prompt"},model:{type:"string",title:"Model",enum:Object.values(efe)}},required:["prompt","model"]},outputs:{properties:{success:{type:"boolean",description:"Whether the action was successful"},response:{type:"string",description:"What was output"}},required:["success","response"]}}};var i4={};oe(i4,{definition:()=>$ft});var tfe=(o=>(o.POST="POST",o.GET="GET",o.PUT="PUT",o.DELETE="DELETE",o.PATCH="PATCH",o))(tfe||{}),$ft={deprecated:!0,name:"Outgoing webhook",tagline:"Send a {{inputs.requestMethod}} request",icon:"paper-plane-right",description:"Send a request of specified method to a URL",type:"ACTION",internal:!0,features:{LOOPING:!0},stepId:"OUTGOING_WEBHOOK",inputs:{requestMethod:"POST",url:"http://",requestBody:"{}",headers:"{}"},schema:{inputs:{properties:{requestMethod:{type:"string",enum:Object.values(tfe),title:"Request method"},url:{type:"string",title:"URL"},requestBody:{type:"string",title:"JSON Body",customType:"wide"},headers:{type:"string",title:"Headers",customType:"wide"}},required:["requestMethod","url"]},outputs:{properties:{response:{type:"object",description:"The response from the webhook"},httpStatus:{type:"number",description:"The HTTP status code returned"},success:{type:"boolean",description:"Whether the action was successful"}},required:["response","success"]}}};var a4={};oe(a4,{definition:()=>Wft});var zft={ascending:"Ascending",descending:"Descending"},Wft={description:"Query rows from the database",icon:"magnifying-glass",name:"Query rows",tagline:"Query rows from {{inputs.enriched.table.name}} table",type:"ACTION",stepId:"QUERY_ROWS",internal:!0,features:{LOOPING:!0},inputs:{},schema:{inputs:{properties:{tableId:{type:"string",customType:"table",title:"Table"},filters:{type:"object",customType:"filters",title:"Filtering"},sortColumn:{type:"string",title:"Sort Column",customType:"column"},sortOrder:{type:"string",title:"Sort Order",enum:Object.values(kf),pretty:Object.values(zft)},limit:{type:"number",title:"Limit",customType:"queryLimit"}},required:["tableId"]},outputs:{properties:{rows:{type:"array",customType:"rows",description:"The rows that were found"},success:{type:"boolean",description:"Whether the query was successful"}},required:["rows","success"]}}};var o4={};oe(o4,{definition:()=>Gft});var Gft={description:"Send an email using SMTP",tagline:"Send SMTP email to {{inputs.to}}",icon:"envelope",name:"Send Email (SMTP)",type:"ACTION",internal:!0,features:{LOOPING:!0},stepId:"SEND_EMAIL_SMTP",inputs:{},schema:{inputs:{properties:{to:{type:"string",title:"Send To"},from:{type:"string",title:"Send From"},cc:{type:"string",title:"CC"},bcc:{type:"string",title:"BCC"},subject:{type:"string",title:"Email Subject"},contents:{type:"longform",title:"Message",description:"Use markdown or HTML for rich text formatting: **bold**, _italics_, # Headings, * Bullets, <br> for line breaks, and more."},addInvite:{type:"boolean",title:"Add calendar invite"},startTime:{type:"date",title:"Start Time",dependsOn:"addInvite"},endTime:{type:"date",title:"End Time",dependsOn:"addInvite"},summary:{type:"string",title:"Meeting Summary",dependsOn:"addInvite"},location:{type:"string",title:"Location",dependsOn:"addInvite"},attachments:{type:"attachment",customType:"multi_attachments",title:"Attachments"}},required:["to","from","subject","contents"]},outputs:{properties:{success:{type:"boolean",description:"Whether the email was sent"},response:{type:"object",description:"A response from the email client, this may be an error"}},required:["success"]}}};var s4={};oe(s4,{definition:()=>Hft});var Hft={name:"Backend log",tagline:"Console log a value in the backend",icon:"activity",description:"Logs the given text to the server (using console.log)",type:"ACTION",internal:!0,features:{LOOPING:!0},stepId:"SERVER_LOG",inputs:{text:""},schema:{inputs:{properties:{text:{type:"string",title:"Log"}},required:["text"]},outputs:{properties:{success:{type:"boolean",description:"Whether the action was successful"},message:{type:"string",description:"What was output"}},required:["success","message"]}}};var u4={};oe(u4,{definition:()=>Vft});var Vft={name:"Slack Message",tagline:"Send a message to Slack",description:"Send a message to Slack",icon:"ri-slack-line",stepId:"slack",type:"ACTION",internal:!1,features:{LOOPING:!0},inputs:{},schema:{inputs:{properties:{url:{type:"string",title:"Incoming Webhook URL"},text:{type:"string",title:"Message"}},required:["url","text"]},outputs:{properties:{httpStatus:{type:"number",description:"The HTTP status code of the request"},success:{type:"boolean",description:"Whether the message sent successfully"},response:{type:"string",description:"The response from the Slack Webhook"}}}}};var c4={};oe(c4,{definition:()=>Kft});var Kft={name:"Trigger an automation",tagline:"Triggers an automation synchronously",icon:"arrows-clockwise",description:"Triggers an automation synchronously",type:"ACTION",internal:!0,features:{},stepId:"TRIGGER_AUTOMATION_RUN",inputs:{},schema:{inputs:{properties:{automation:{type:"object",properties:{automationId:{type:"string",customType:"automation"}},customType:"automationFields",title:"Automation Fields",required:["automationId"]},timeout:{type:"number",title:"Timeout (ms)"}},required:["automationId"]},outputs:{properties:{success:{type:"boolean",description:"Whether the automation was successful"},value:{type:"object",description:"Automation Result"}},required:["success","value"]}}};var l4={};oe(l4,{definition:()=>Qft});var Qft={name:"Update Row",tagline:"Update a {{inputs.enriched.table.name}} row",icon:"arrow-clockwise",description:"Update a row in your database",type:"ACTION",internal:!0,features:{LOOPING:!0},stepId:"UPDATE_ROW",inputs:{},schema:{inputs:{properties:{meta:{type:"object",title:"Field settings"},row:{type:"object",customType:"row",title:"Table"},rowId:{type:"string",title:"Row ID"}},required:["row","rowId"]},outputs:{properties:{row:{type:"object",customType:"row",description:"The updated row"},response:{type:"object",description:"The response from the table"},success:{type:"boolean",description:"Whether the action was successful"},id:{type:"string",description:"The identifier of the updated row"},revision:{type:"string",description:"The revision of the updated row"}},required:["success","id","revision"]}}};var f4={};oe(f4,{definition:()=>Yft});var Yft={name:"Zapier Webhook",stepId:"zapier",type:"ACTION",internal:!1,features:{LOOPING:!0},description:"Trigger a Zapier Zap via webhooks",tagline:"Trigger a Zapier Zap",icon:"ri-flashlight-line",inputs:{},schema:{inputs:{properties:{url:{type:"string",title:"Webhook URL"},body:{type:"json",title:"Payload"}},required:["url"]},outputs:{properties:{httpStatus:{type:"number",description:"The HTTP status code of the request"},response:{type:"string",description:"The response from Zapier"}}}}};var p4={};oe(p4,{definition:()=>Jft});var Jft={name:"Classify Text",icon:"PageTag",tagline:"Classify text into predefined categories using AI",description:"Analyzes text and assigns it to one of the categories you provide.",stepId:"CLASSIFY_CONTENT",internal:!0,inputs:{},features:{LOOPING:!0},schema:{inputs:{properties:{textInput:{type:"longform",title:"Text",description:"The text content you want the AI to classify."},categoryItems:{type:"array",customType:"categories",title:"Categories",description:"Add categories for the AI to use when classifying text."}},required:["textInput","categoryItems"]},outputs:{properties:{category:{type:"string",description:"The category assigned by the AI."},success:{type:"boolean",description:"Whether the classification was successful."}},required:["category","success"]}},type:"ACTION"};var d4={};oe(d4,{definition:()=>Xft});var Xft={name:"LLM Prompt",tagline:"Send prompts to LLM",icon:"Algorithm",description:"Interact with an LLM.",type:"ACTION",internal:!0,features:{},stepId:"PROMPT_LLM",inputs:{prompt:""},schema:{inputs:{properties:{prompt:{type:"longform",title:"Prompt"}},required:["prompt","model"]},outputs:{properties:{success:{type:"boolean",description:"Whether the action was successful"},response:{type:"string",description:"What was output"}},required:["success","response"]}}};var h4={};oe(h4,{definition:()=>Zft});var Zft={name:"Translate",tagline:"Translate text to a different language",icon:"globe",description:"Translate text to a different language.",type:"ACTION",internal:!0,features:{},stepId:"TRANSLATE",inputs:{prompt:""},schema:{inputs:{properties:{text:{type:"string",title:"Text"},language:{type:"string",title:"Language"}},required:["text","language"]},outputs:{properties:{success:{type:"boolean",description:"Whether the action was successful"},response:{type:"string",description:"What was the translated text"}},required:["success","response"]}}};var m4={};oe(m4,{definition:()=>ept});var rfe=(n=>(n.SHORT="Short",n.MEDIUM="Medium",n.LONG="Long",n))(rfe||{}),ept={name:"Summarise",tagline:"Summarise text",icon:"Summarize",description:"Summarise text.",type:"ACTION",internal:!0,features:{},stepId:"SUMMARISE",inputs:{prompt:""},schema:{inputs:{properties:{text:{type:"longform",title:"Text"},length:{type:"string",title:"Length",enum:Object.values(rfe)}},required:["text","length"]},outputs:{properties:{success:{type:"boolean",description:"Whether the action was successful"},response:{type:"string",description:"What was the summarised text"}},required:["success","response"]}}};var g4={};oe(g4,{definition:()=>tpt});var tpt={name:"Generate Text",icon:"Edit",tagline:"Generate contentusing AI",description:"Uses AI to generate text content based on your instructions and chosen format",stepId:"GENERATE_TEXT",internal:!0,inputs:{contentType:"document"},features:{LOOPING:!0},schema:{inputs:{properties:{contentType:{type:"string",title:"Content type",enum:Object.values(nk),pretty:Object.values(lse)},instructions:{type:"longform",title:"Instructions",description:"Provide guidance to help the AI produce content in the format that you want"}},required:["contentType","instructions"]},outputs:{properties:{generatedText:{type:"string",description:"The text content generated by the AI"},success:{type:"boolean",description:"Whether the text generation was successful"}},required:["generatedText","success"]}},type:"ACTION"};var y4={};oe(y4,{definition:()=>rpt});var rpt={name:"Extract Document Data",icon:"Document",tagline:"Extract structured data from documents using AI",description:"Extracts structured data from PDF or image according to provided schema.",stepId:"EXTRACT_FILE_DATA",internal:!0,inputs:{},features:{LOOPING:!0},schema:{inputs:{properties:{file:{type:"string",title:"Document",description:"Attachment or Link to the document to extract data from."},source:{type:"string",enum:Object.values(ik),title:"Source",description:"The source of the document to extract data from."},fileType:{dependsOn:{field:"source",value:"URL"},type:"string",enum:Object.values(ak),title:"File Type",description:"The type of file at the URL."},schema:{customType:"triggerSchema",title:"Data schema",description:'Schema defining the structure of data to extract. Example: {"name": "string", "price": "number"}.'}},required:["file","schema"]},outputs:{properties:{data:{type:"json",description:"The structured data extracted from the document."},success:{type:"boolean",description:"Whether the extraction was successful."}},required:["data","success"]}},type:"ACTION"};var b4={};oe(b4,{definition:()=>npt});var npt={name:"State",tagline:"Extract automation state",icon:"brackets-curly",description:"Extract automation state into a named variable",type:"ACTION",internal:!0,new:!1,stepId:"EXTRACT_STATE",inputs:{},features:{LOOPING:!0},schema:{inputs:{properties:{key:{type:"string",title:"Key"},value:{type:"longform",title:"Value"}},required:["value","key"]},outputs:{properties:{value:{type:"string",description:"The result of the return statement"},success:{type:"boolean",description:"Whether the action was successful"}},required:["success"]}}};var v4={};oe(v4,{definition:()=>ipt});var ipt={name:"Loop",icon:"recycle",tagline:"Loop the block",description:"Loop",stepId:"LOOP_V2",internal:!0,features:{},inputs:{},schema:{inputs:{properties:{children:{type:"array"},binding:{type:"string",title:"Binding / Value"},iterations:{type:"number",title:"Max loop iterations"},failure:{type:"string",title:"Failure Condition"}}},outputs:{properties:{success:{type:"boolean",description:"Loop success"}},required:["success"]}},type:"LOGIC"};var E4={};oe(E4,{definitions:()=>ppt});var nfe={name:"User action",event:"app:trigger",icon:"cursor-click",tagline:"Automation fired from the frontend",description:"Trigger an automation from an action inside your app",stepId:"APP",inputs:{},schema:{inputs:{properties:{fields:{type:"object",customType:"triggerSchema",title:"Fields"}},required:[]},outputs:{properties:{fields:{type:"object",description:"Fields submitted from the app frontend",customType:"triggerSchema"}},required:["fields"]}},type:"TRIGGER"};var ife={name:"CRON / Schedule",event:"cron:trigger",icon:"clock",tagline:"Cron Trigger (<b>{{inputs.cron}}</b>)",description:"Triggers automation on a cron schedule.",stepId:"CRON",inputs:{},schema:{inputs:{properties:{cron:{type:"string",customType:"cron",title:"Expression"}},required:["cron"]},outputs:{properties:{timestamp:{type:"number",description:"Timestamp the cron was executed"}},required:["timestamp"]}},type:"TRIGGER"};var afe={name:"Row Deleted",event:"row:delete",icon:"trash-simple",tagline:"Row is deleted from {{inputs.enriched.table.name}}",description:"Fired when a row is deleted from your database",stepId:"ROW_DELETED",inputs:{},schema:{inputs:{properties:{tableId:{type:"string",customType:"table",title:"Table"}},required:["tableId"]},outputs:{properties:{row:{type:"object",customType:"row",description:"The row that was deleted"}},required:["row"]}},type:"TRIGGER"};var ofe={name:"Row Created",event:"row:save",icon:"rows-plus-bottom",tagline:"Row is added to {{inputs.enriched.table.name}}",description:"Fired when a row is added to your database",stepId:"ROW_SAVED",inputs:{},schema:{inputs:{properties:{tableId:{type:"string",customType:"table",title:"Table"},filters:{type:"object",customType:"trigger_filter",title:"Filtering"}},required:["tableId"]},outputs:{properties:{row:{type:"object",customType:"row",description:"The new row that was created"},id:{type:"string",description:"Row ID - can be used for updating"},revision:{type:"string",description:"Revision of row"}},required:["row","id"]}},type:"TRIGGER"};var sfe={name:"Row Updated",event:"row:update",icon:"arrow-clockwise",tagline:"Row is updated in {{inputs.enriched.table.name}}",description:"Fired when a row is updated in your database",stepId:"ROW_UPDATED",inputs:{},schema:{inputs:{properties:{tableId:{type:"string",customType:"table",title:"Table"},filters:{type:"object",customType:"trigger_filter",title:"Filtering"}},required:["tableId"]},outputs:{properties:{oldRow:{type:"object",customType:"row",description:"The row that was updated",title:"Old Row"},row:{type:"object",customType:"row",description:"The row before it was updated",title:"Row"},id:{type:"string",description:"Row ID - can be used for updating"},revision:{type:"string",description:"Revision of row"}},required:["row","id"]}},type:"TRIGGER"};var ufe={name:"Webhook",event:"web:trigger",icon:"paper-plane-right",tagline:"Webhook endpoint is hit",description:"Trigger an automation when a HTTP POST webhook is hit",stepId:"WEBHOOK",inputs:{},schema:{inputs:{properties:{schemaUrl:{type:"string",customType:"webhookUrl",title:"Schema URL"},triggerUrl:{type:"string",customType:"webhookUrl",title:"Trigger URL"}},required:["schemaUrl","triggerUrl"]},outputs:{properties:{body:{type:"object",description:"Body of the request which hit the webhook"}},required:["body"]}},type:"TRIGGER"};var cfe={type:"TRIGGER",name:"Row Action",event:"row:action",icon:"tree-structure",tagline:"Row action triggered in {{inputs.enriched.table.name}} by {{inputs.enriched.row._id}}",description:"row action workflow",stepId:"ROW_ACTION",inputs:{},schema:{inputs:{properties:{tableId:{type:"string",customType:"table",title:"Table",readonly:!0}},required:["tableId"]},outputs:{properties:{id:{type:"string",description:"Row ID - can be used for updating"},revision:{type:"string",description:"Revision of row"},table:{type:"object",customType:"table",title:"The table linked to the row action"},row:{type:"object",customType:"row",description:"The row linked to the row action"}}}}};var ppt={ROW_SAVED:ofe,ROW_UPDATED:sfe,ROW_DELETED:afe,WEBHOOK:ufe,APP:nfe,CRON:ife,ROW_ACTION:cfe};var dpt=Object.values(Mt).sort((e,t)=>t.length-e.length);function lfe(e){return dpt.find(t=>e.startsWith(`${t}${Me}`))}a(lfe,"getDocumentType");var hpt=Object.values(fd).sort((e,t)=>t.length-e.length);function ffe(e){return hpt.find(t=>e.startsWith(`${t}${Me}`))}a(ffe,"getVirtualDocumentType");var mpt=new RegExp("^datasource_plus_(.+)__(.+)$"),rC=a(e=>t=>!!t&&t.startsWith(`${e}${Me}`),"idCheckFor"),gpt=a(e=>{let t=e.match(mpt);return!!e&&t!==null},"isExternalTableId"),dc=a(e=>ypt(e)||gpt(e),"isTableIdOrExternalTableId"),ypt=rC("ta"),Ji=rC("view"),ov=rC("datasource"),pfe=rC("query");function Fi(e){if(!Ji(e))throw new Error("Unable to extract table ID, is not a view ID");let t=e.split(Me);return t.shift(),e=t.join(Me),new RegExp(`^(?<tableId>.+)${Me}([^${Me}]+)$`).exec(e).groups.tableId}a(Fi,"getTableIdFromViewId");var _4=(n=>(n.ALL="all",n.AUTOMATION="automation",n.STATUS="status",n))(_4||{}),wd=(f=>(f.USER_BY_WORKSPACE="by_app",f.USER_BY_EMAIL="by_email2",f.BY_API_KEY="by_api_key",f.LINK="by_link",f.ROUTING="screen_routes_2",f.AUTOMATION_LOGS="automation_logs",f.ACCOUNT_BY_EMAIL="account_by_email",f.PLATFORM_USERS_LOWERCASE="platform_users_lowercase_2",f.USER_BY_GROUP="user_by_group",f.WORKSPACE_BACKUP_BY_TRIGGER="by_trigger",f))(wd||{}),l0={by_email2:["by_email"]},bn={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"}},hc=ld("app"),S4=ld("app_dev"),mc=S4,Ed="internal",dfe="budibase",Pa="_design/sqlite",hfe="ta_bb_jobs",mfe="ta_bb_inventory",gfe="ta_bb_expenses",yfe="ta_bb_employee",nC=`ro${Me}ta_users${Me}`,Gm=(r=>(r[r.SQLITE=Pa]="SQLITE",r.MIGRATIONS="_design/migrations",r))(Gm||{});var x4=(r=>(r.ACTIVE="active",r.INACTIVE="inactive",r))(x4||{}),sv=(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))(sv||{}),bfe=(i=>(i.OWNER="owner",i.ADMIN="admin",i.BUILDER="builder",i.WORKSPACE_MANAGER="workspace_manager",i))(bfe||{}),vfe=(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))(vfe||{}),bpt=new Date(-2147483647e3),T4=new Date(2147483647e3),pi="default";var Ht={};oe(Ht,{CacheKey:()=>aa,TTL:()=>ly,bustCache:()=>eE,destroy:()=>aA,docWritethrough:()=>i7,generic:()=>oA,get:()=>fy,invite:()=>o7,keys:()=>lL,passwordReset:()=>s7,store:()=>mp,user:()=>Rh,withCache:()=>Sh,withCacheWithDynamicTTL:()=>KPe,workspace:()=>Tx,writethrough:()=>dK});var i7={};oe(i7,{DocWritethrough:()=>n7,DocWritethroughProcessor:()=>iA,getProcessor:()=>iVt,init:()=>VPe});var co={};oe(co,{BudibaseQueue:()=>Sc,InMemoryQueue:()=>T1,JobQueue:()=>Jv,QueuedProcessor:()=>r7,UnretriableError:()=>uL,shutdown:()=>P0t});var A4=require("crypto"),aC=require("fs"),wpt=require("lodash"),f0=require("path");var Ept=process.env.TOP_LEVEL_PATH||process.env.SERVER_TOP_LEVEL_PATH||(0,f0.resolve)((0,f0.join)(__dirname,"..","..","..")),wfe=!1;!wfe&&iC()&&!R4()&&(require("dotenv").config({path:(0,f0.join)(Ept,".env")}),wfe=!0);function R4(){return _fe()}a(R4,"isTest");function _fe(){return process.env.NODE_ENV==="jest"||process.env.JEST_WORKER_ID!=null&&process.env.JEST_WORKER_ID!=="null"}a(_fe,"isJest");function iC(){return process.env.NODE_ENV!=="production"}a(iC,"isDev");function _pt(e){if(e)return parseInt(e)}a(_pt,"parseIntSafe");var uv={BACKUPS:"backups",APPS:"prod-budi-app-assets",TEMPLATES:"templates",GLOBAL:"global",PLUGINS:"plugins",TEMP:"tmp-file-attachments"},Efe=!!parseInt(process.env.SELF_HOSTED||"");function Spt(){return process.env.API_ENCRYPTION_KEY?process.env.API_ENCRYPTION_KEY:process.env.JWT_SECRET}a(Spt,"getAPIEncryptionKey");function xpt(){return process.env.HTTP_LOGGING===void 0?!0:process.env.HTTP_LOGGING}a(xpt,"httpLogging");function Tpt(){function e(r){function n(u,c){let l=`${c}/${u}`;if((0,aC.existsSync)(l))return l;let f=`${c}/..`;return f===c?null:n(u,f)}a(n,"findFileInAncestors");let i=n(r,process.cwd()),o=(0,aC.readFileSync)(i,"utf-8");return JSON.parse(o)}a(e,"getParentFile");let t;if(iC()&&!R4())try{t=`${e("lerna.json").version}+local`}catch{}try{let r=e("package.json");return{VERSION:t||process.env.BUDIBASE_VERSION||r.version,SERVICE_NAME:r.name}}catch{return{VERSION:process.env.BUDIBASE_VERSION||"",SERVICE_NAME:""}}}a(Tpt,"getPackageJsonFields");function Apt(){return _d.SERVICE_TYPE==="worker"}a(Apt,"isWorker");function Rpt(){return _d.SERVICE_TYPE==="apps"}a(Rpt,"isApps");function Opt(){return _d.BUDIBASE_ENVIRONMENT==="QA"}a(Opt,"isQA");function Ipt(){return process.env.SERVICE?process.env.SERVICE:process.env.APPS_SERVICE?process.env.APPS_SERVICE:process.env.WORKER_SERVICE?process.env.WORKER_SERVICE:"budibase"}a(Ipt,"getServiceName");var _d={isTest:R4,isJest:_fe,isDev:iC,isWorker:Apt,isApps:Rpt,isQA:Opt,isProd:()=>!iC(),BUDIBASE_ENVIRONMENT:process.env.BUDIBASE_ENVIRONMENT,JS_BCRYPT:process.env.JS_BCRYPT,JWT_SECRET:process.env.JWT_SECRET?(0,A4.createSecretKey)(process.env.JWT_SECRET,"utf8"):void 0,JWT_SECRET_FALLBACK:process.env.JWT_SECRET_FALLBACK?(0,A4.createSecretKey)(process.env.JWT_SECRET_FALLBACK,"utf8"):void 0,ENCRYPTION_KEY:process.env.ENCRYPTION_KEY,API_ENCRYPTION_KEY:Spt(),COUCH_DB_URL:process.env.COUCH_DB_URL||"http://localhost:4005",COUCH_DB_SQL_URL:process.env.COUCH_DB_SQL_URL,COUCH_DB_USERNAME:process.env.COUCH_DB_USER,COUCH_DB_PASSWORD:process.env.COUCH_DB_PASSWORD,GOOGLE_CLIENT_ID:process.env.GOOGLE_CLIENT_ID,GOOGLE_CLIENT_SECRET:process.env.GOOGLE_CLIENT_SECRET,SALT_ROUNDS:process.env.SALT_ROUNDS,REDIS_URL:process.env.REDIS_URL||"localhost:6379",REDIS_PASSWORD:process.env.REDIS_PASSWORD,REDIS_CLUSTERED:process.env.REDIS_CLUSTERED,MINIO_ACCESS_KEY:process.env.MINIO_ACCESS_KEY,MINIO_SECRET_KEY:process.env.MINIO_SECRET_KEY,AWS_SESSION_TOKEN:process.env.AWS_SESSION_TOKEN,AWS_REGION:process.env.AWS_REGION||"eu-west-1",MINIO_URL:process.env.MINIO_URL,MINIO_ENABLED:process.env.MINIO_ENABLED||1,INTERNAL_API_KEY:process.env.INTERNAL_API_KEY,INTERNAL_API_KEY_FALLBACK:process.env.INTERNAL_API_KEY_FALLBACK,MULTI_TENANCY:process.env.MULTI_TENANCY,ACCOUNT_PORTAL_URL:process.env.ACCOUNT_PORTAL_URL||"https://account.budibase.app",INTERNAL_ACCOUNT_PORTAL_URL:process.env.INTERNAL_ACCOUNT_PORTAL_URL||process.env.ACCOUNT_PORTAL_URL||"https://account.budibase.app",ACCOUNT_PORTAL_API_KEY:process.env.ACCOUNT_PORTAL_API_KEY||"",BUDICLOUD_URL:process.env.BUDICLOUD_URL||"https://budibase.app",DISABLE_ACCOUNT_PORTAL:process.env.DISABLE_ACCOUNT_PORTAL,SELF_HOSTED:Efe,COOKIE_DOMAIN:process.env.COOKIE_DOMAIN,PLATFORM_URL:process.env.PLATFORM_URL||"",POSTHOG_TOKEN:process.env.POSTHOG_TOKEN,POSTHOG_PERSONAL_TOKEN:process.env.POSTHOG_PERSONAL_TOKEN,POSTHOG_API_HOST:process.env.POSTHOG_API_HOST||"https://us.i.posthog.com",POSTHOG_FEATURE_FLAGS_ENABLED:process.env.POSTHOG_FEATURE_FLAGS_ENABLED,ENABLE_ANALYTICS:process.env.ENABLE_ANALYTICS,TENANT_FEATURE_FLAGS:process.env.TENANT_FEATURE_FLAGS,CLOUDFRONT_CDN:process.env.CLOUDFRONT_CDN,CLOUDFRONT_PRIVATE_KEY_64:process.env.CLOUDFRONT_PRIVATE_KEY_64,CLOUDFRONT_PUBLIC_KEY_ID:process.env.CLOUDFRONT_PUBLIC_KEY_ID,BACKUPS_BUCKET_NAME:process.env.BACKUPS_BUCKET_NAME||uv.BACKUPS,APPS_BUCKET_NAME:process.env.APPS_BUCKET_NAME||uv.APPS,TEMPLATES_BUCKET_NAME:process.env.TEMPLATES_BUCKET_NAME||uv.TEMPLATES,GLOBAL_BUCKET_NAME:process.env.GLOBAL_BUCKET_NAME||uv.GLOBAL,PLUGIN_BUCKET_NAME:process.env.PLUGIN_BUCKET_NAME||uv.PLUGINS,TEMP_BUCKET_NAME:process.env.TEMP_BUCKET_NAME||uv.TEMP,USE_COUCH:process.env.USE_COUCH||!0,MOCK_REDIS:process.env.MOCK_REDIS,DEFAULT_LICENSE:process.env.DEFAULT_LICENSE,SERVICE:Ipt(),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:xpt(),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:Efe?process.env.ENABLE_SSO_MAINTENANCE_MODE:!1,...Tpt(),DISABLE_PINO_LOGGER:process.env.DISABLE_PINO_LOGGER,OFFLINE_MODE:process.env.OFFLINE_MODE,SESSION_EXPIRY_SECONDS:process.env.SESSION_EXPIRY_SECONDS,_set(e,t){process.env[e]=t,_d[e]=t},ROLLING_LOG_MAX_SIZE:process.env.ROLLING_LOG_MAX_SIZE||"10M",DISABLE_SCIM_CALLS:process.env.DISABLE_SCIM_CALLS,BB_ADMIN_USER_EMAIL:process.env.BB_ADMIN_USER_EMAIL,BB_ADMIN_USER_PASSWORD:process.env.BB_ADMIN_USER_PASSWORD,OPENAI_API_KEY:process.env.OPENAI_API_KEY,MIN_VERSION_WITHOUT_POWER_ROLE:process.env.MIN_VERSION_WITHOUT_POWER_ROLE||"3.0.0",DISABLE_CONTENT_SECURITY_POLICY:process.env.DISABLE_CONTENT_SECURITY_POLICY,BSON_BUFFER_SIZE:_pt(process.env.BSON_BUFFER_SIZE)};var Sfe=["API_ENCRYPTION_KEY","BB_ADMIN_USER_PASSWORD","COUCH_DB_PASSWORD","COUCH_DB_SQL_URL","COUCH_DB_URL","GOOGLE_CLIENT_SECRET","INTERNAL_API_KEY_FALLBACK","INTERNAL_API_KEY","JWT_SECRET","MINIO_ACCESS_KEY","MINIO_SECRET_KEY","OPENAI_API_KEY","REDIS_PASSWORD"];for(let[e,t]of Object.entries(_d))t==="0"&&(_d[e]=0),t==="false"&&(_d[e]=0);var V=_d;var uC={};oe(uC,{Databases:()=>O4,SEPARATOR:()=>cv,SelectableDatabase:()=>oC,getRedisClusterOptions:()=>I4,getRedisConnectionDetails:()=>sC,getRedisOptions:()=>Hm,removeDbPrefix:()=>k4});var cv="-",O4=(v=>(v.PW_RESETS="pwReset",v.VERIFICATIONS="verification",v.INVITATIONS="invitation",v.DEV_LOCKS="devLocks",v.DEBOUNCE="debounce",v.SESSIONS="session",v.USER_CACHE="users",v.FLAGS="flags",v.WORKSPACE_METADATA="appMetadata",v.QUERY_VARS="queryVars",v.LICENSES="license",v.GENERIC_CACHE="data_cache",v.WRITE_THROUGH="writeThrough",v.LOCKS="locks",v.SOCKET_IO="socket_io",v.BPM_EVENTS="bpmEvents",v.DOC_WRITE_THROUGH="docWriteThrough",v.RECAPTCHA_SESSION="recaptchaSession",v))(O4||{}),oC=(y=>(y[y.DEFAULT=0]="DEFAULT",y[y.SOCKET_IO=1]="SOCKET_IO",y[y.RATE_LIMITING=2]="RATE_LIMITING",y[y.UNUSED_2=3]="UNUSED_2",y[y.UNUSED_3=4]="UNUSED_3",y[y.UNUSED_4=5]="UNUSED_4",y[y.UNUSED_5=6]="UNUSED_5",y[y.UNUSED_6=7]="UNUSED_6",y[y.UNUSED_7=8]="UNUSED_7",y[y.UNUSED_8=9]="UNUSED_8",y[y.UNUSED_9=10]="UNUSED_9",y[y.UNUSED_10=11]="UNUSED_10",y[y.UNUSED_11=12]="UNUSED_11",y[y.UNUSED_12=13]="UNUSED_12",y[y.UNUSED_13=14]="UNUSED_13",y[y.UNUSED_14=15]="UNUSED_14",y))(oC||{});function sC(){let e=V.REDIS_PASSWORD,t=V.REDIS_URL.split("//");t=t.length>1?t[1]:t[0],t=t.split("@"),t.length>1?(e=t[0].split(":")[1],t=t[1]):t=t[0];let[r,n]=t.split(":"),i=parseInt(n);return{host:r,password:e,port:isNaN(i)?6379:i}}a(sC,"getRedisConnectionDetails");function I4(){return{slotsRefreshTimeout:2e3,dnsLookup:(e,t)=>t(null,e),redisOptions:{...Hm(),tls:{}}}}a(I4,"getRedisClusterOptions");function Hm(){let{host:e,password:t,port:r}=sC();return{connectTimeout:3e4,port:r,host:e,password:t}}a(Hm,"getRedisOptions");function k4(e){let t=e.split(cv);return t.length>=2?(t.shift(),t.join(cv)):t[0]}a(k4,"removeDbPrefix");var Wbe=te(require("events"));var Cr={};oe(Cr,{Duration:()=>mi,DurationType:()=>zbe,clearCookie:()=>Hd,compare:()=>P4,getAppIdFromCtx:()=>bg,getCookie:()=>Zf,hasCircularStructure:()=>_0t,hash:()=>D4,isAudited:()=>oz,isClient:()=>E0t,isPublicApiRequest:()=>v0t,isServingApp:()=>g0t,isServingBuilder:()=>y0t,isServingBuilderPreview:()=>b0t,isValidInternalAPIKey:()=>Px,newid:()=>kn,openJwt:()=>S1,setCookie:()=>$be,time:()=>x0t,timeout:()=>az,urlHasProtocol:()=>S0t,validEmail:()=>sz});var xfe=require("uuid");function kn(){return(0,xfe.v4)().replace(/-/g,"")}a(kn,"newid");var C4=V.JS_BCRYPT?require("bcryptjs"):require("bcrypt"),kpt=V.SALT_ROUNDS||10;async function D4(e){let t=await C4.genSalt(kpt);return C4.hash(e,t)}a(D4,"hash");async function P4(e,t){return C4.compare(e,t)}a(P4,"compare");var _1=te(require("jsonwebtoken"));var W={};oe(W,{DEFAULT_TENANT_ID:()=>pi,baseGlobalDBName:()=>hx,doInAutomationContext:()=>SSt,doInContext:()=>P$,doInEnvironmentContext:()=>PSt,doInFeatureFlagOverrideContext:()=>B$,doInIPContext:()=>F$,doInIdentityContext:()=>h0,doInLicenseContext:()=>TSt,doInScimContext:()=>NSt,doInSelfHostTenantUsingCloud:()=>xSt,doInTenant:()=>Xo,doInWorkspaceContext:()=>OSt,doInWorkspaceMigrationContext:()=>kSt,ensureSnippetContext:()=>rbe,getAuditLogDBName:()=>ebe,getAuditLogsDB:()=>FSt,getAutomationId:()=>N$,getCurrentContext:()=>dg,getDevWorkspaceDB:()=>jSt,getDevWorkspaceId:()=>CSt,getEnvironmentVariables:()=>LSt,getFeatureFlagOverrides:()=>M$,getFeatureFlags:()=>U$,getGlobalDB:()=>Ar,getGlobalDBName:()=>pg,getIP:()=>L$,getIdentity:()=>Mf,getLicense:()=>ASt,getPlatformURL:()=>D$,getProdWorkspaceDB:()=>USt,getProdWorkspaceId:()=>DSt,getScimDBName:()=>vSt,getSelfHostCloudDB:()=>RSt,getTableForView:()=>MSt,getTenantIDFromWorkspaceID:()=>Hv,getTenantId:()=>Pt,getWorkspaceDB:()=>Vv,getWorkspaceId:()=>Zo,identity:()=>d0,isMultiTenant:()=>Wd,isScim:()=>Ec,isSelfHostUsingCloud:()=>h1,isTenancyEnabled:()=>ESt,isTenantIdSet:()=>wSt,setFeatureFlags:()=>j$,setTableForView:()=>BSt});var d0={};oe(d0,{doInAccountContext:()=>Cpt,doInIdentityContext:()=>L4,doInUserContext:()=>F4,getAccountUserId:()=>Tfe,getIdentity:()=>N4});function N4(){return Mf()}a(N4,"getIdentity");function L4(e,t){return h0(e,t)}a(L4,"doInIdentityContext");function F4(e,t,r){let n={...e,_id:e._id,type:"user",hostInfo:{ipAddress:t.request.ip,userAgent:t.userAgent.source}};return L4(n,r)}a(F4,"doInUserContext");function Cpt(e,t){let r=Tfe(e),n=e.tenantId,i={_id:r,type:"user",tenantId:n,account:e};return L4(i,t)}a(Cpt,"doInAccountContext");function Tfe(e){let t;return tk(e)?t=e.budibaseUserId:t=e.accountId,t}a(Tfe,"getAccountUserId");var gc=a(e=>{let t=U4(e),r,n;if(t.auth?.username)r=t.auth.username;else if(V.COUCH_DB_USERNAME)r=V.COUCH_DB_USERNAME;else if(!V.isTest())throw new Error("CouchDB username not set");if(t.auth?.password)n=t.auth.password;else if(V.COUCH_DB_PASSWORD)n=V.COUCH_DB_PASSWORD;else if(!V.isTest())throw new Error("CouchDB password not set");let i=Buffer.from(`${r}:${n}`).toString("base64"),o=V.COUCH_DB_SQL_URL;if(V.isDev()&&!o)o="http://localhost:4006";else if(!o&&t.url){let s=new URL(t.url);o=t.url.replace(s.port,"4984")}return{url:t.url,sqlUrl:U4(o).url,auth:{username:r,password:n},cookie:`Basic ${i}`}},"getCouchInfo"),U4=a((e=V.COUCH_DB_URL)=>{let t,r,n,i;if(e){/^https?:\/\//i.test(e)||(e=`http://${e}`);let s=e.split("://"),u=s[0],c=s.slice(1).join("://");if(e.includes("@")){let l=c.split("@");i=l[l.length-1];let f=l.slice(0,-1).join("@");if(f.includes(":")){let p=f.split(":");r=p[0],n=p.slice(1).join(":")}else r=f}else i=c;t=`${u}://${i}`}return{url:t,auth:{username:r,password:n}}},"getUrlInfo");var Jye=te(require("@budibase/nano"));var Afe=te(require("node-fetch"));function cC(e){return e.replace(/(https?:\/\/)|(\/)+/g,"$1$2")}a(cC,"checkSlashesInUrl");async function Rfe(e,t="GET",r){let{url:n,cookie:i}=gc(),o=`${n}/${e}`;return await m0({url:o,cookie:i,method:t,body:r})}a(Rfe,"directCouchCall");async function m0({url:e,cookie:t,method:r,body:n}){let i={method:r,headers:{Authorization:t}};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,Afe.default)(cC(encodeURI(e)),i)}a(m0,"directCouchUrlCall");async function j4(e,t="GET",r){let n=await Rfe(e,t,r);if(n.status<300)return await n.json();throw"Cannot connect to CouchDB instance"}a(j4,"directCouchQuery");var fg=te(require("pouchdb"));var Hye,Vye=!1,E$=a((e={})=>{let{url:t,cookie:r}=gc(),n={prefix:t,fetch:(i,o)=>(o.headers.set("Authorization",r),fg.default.fetch(i,o))};if(e.inMemory){let i=Bme();fg.default.plugin(i),n={adapter:"memory"}}if(e.onDisk&&(n={adapter:"leveldb"}),e.replication){let i=Gye();fg.default.plugin(i.plugin),fg.default.adapter("writableStream",i.adapters.writableStream)}if(e.find){let i=require("pouchdb-find");fg.default.plugin(i)}return fg.default.defaults(n)},"getPouch");function c1(e){Hye=E$(e),Vye=!0}a(c1,"init");var tSt=a(()=>{if(!Vye)throw new Error("init has not been called")},"checkInitialised");function yu(e,t){tSt();let r=new Hye(e,t),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}a(yu,"getPouchDB");async function fx(e){if(!(!e||V.isTest()))try{return await e.close()}catch{}}a(fx,"closePouchDB");var hi=te(require("dd-trace"));var zv=class{constructor(t){this.db=t}static{a(this,"DDInstrumentedDatabase")}get name(){return this.db.name}exists(t){return hi.default.trace("db.exists",r=>(r.addTags({db_name:this.name,doc_id:t}),t?this.db.exists(t):this.db.exists()))}get(t){return hi.default.trace("db.get",r=>(r.addTags({db_name:this.name,doc_id:t}),this.db.get(t)))}tryGet(t){return hi.default.trace("db.tryGet",async r=>{r.addTags({db_name:this.name,doc_id:t});let n=await this.db.tryGet(t);return r.addTags({doc_found:n!==void 0}),n})}getMultiple(t,r){return hi.default.trace("db.getMultiple",async n=>{n.addTags({db_name:this.name,num_docs:t?.length||0,allow_missing:r?.allowMissing});let i=await this.db.getMultiple(t,r);return n.addTags({num_docs_found:i.length}),i})}remove(t,r){return hi.default.trace("db.remove",async n=>{n.addTags({db_name:this.name,doc_id:t,rev:r});let i=typeof t=="object",o=i?t._id:t;r=i?t._rev:r;let s=await this.db.remove(o,r);return n.addTags({ok:s.ok}),s})}bulkRemove(t,r){return hi.default.trace("db.bulkRemove",n=>(n.addTags({db_name:this.name,num_docs:t.length,silence_errors:r?.silenceErrors}),this.db.bulkRemove(t,r)))}put(t,r){return hi.default.trace("db.put",async n=>{n.addTags({db_name:this.name,doc_id:t._id,force:r?.force,return_doc:r?.returnDoc});let i=await this.db.put(t,r);return n.addTags({ok:i.ok}),i})}bulkDocs(t){return hi.default.trace("db.bulkDocs",r=>(r.addTags({db_name:this.name,num_docs:t.length}),this.db.bulkDocs(t)))}async find(t){return hi.default.trace("db.find",async r=>{r.addTags({db_name:this.name,...t});let n=await this.db.find(t);return r.addTags({rows_length:n.docs.length}),n})}allDocs(t){return hi.default.trace("db.allDocs",async r=>{r.addTags({db_name:this.name,...t});let n=await this.db.allDocs(t);return r.addTags({total_rows:n.total_rows,rows_length:n.rows.length,offset:n.offset}),n})}query(t,r){return hi.default.trace("db.query",async n=>{n.addTags({db_name:this.name,view_name:t,...r});let i=await this.db.query(t,r);return n.addTags({total_rows:i.total_rows,rows_length:i.rows.length,offset:i.offset}),i})}destroy(){return hi.default.trace("db.destroy",async t=>{t.addTags({db_name:this.name});let r=await this.db.destroy();return t.addTags({ok:r.ok}),r})}compact(){return hi.default.trace("db.compact",async t=>{t.addTags({db_name:this.name});let r=await this.db.compact();return t.addTags({ok:r.ok}),r})}dump(t,r){return hi.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(t,r)))}load(...t){return hi.default.trace("db.load",r=>(r.addTags({db_name:this.name,num_args:t.length}),this.db.load(...t)))}createIndex(...t){return hi.default.trace("db.createIndex",r=>(r.addTags({db_name:this.name,num_args:t.length}),this.db.createIndex(...t)))}deleteIndex(...t){return hi.default.trace("db.deleteIndex",r=>(r.addTags({db_name:this.name,num_args:t.length}),this.db.deleteIndex(...t)))}getIndexes(...t){return hi.default.trace("db.getIndexes",r=>(r.addTags({db_name:this.name,num_args:t.length}),this.db.getIndexes(...t)))}sql(t,r){return hi.default.trace("db.sql",async n=>{n.addTags({db_name:this.name,num_bindings:r?.length});let i=await this.db.sql(t,r);return n.addTags({num_rows:i.length}),i})}sqlPurgeDocument(t){return hi.default.trace("db.sqlPurgeDocument",r=>(r.addTags({db_name:this.name,num_docs:Array.isArray(t)?t.length:1}),this.db.sqlPurgeDocument(t)))}sqlDiskCleanup(){return hi.default.trace("db.sqlDiskCleanup",t=>(t.addTags({db_name:this.name}),this.db.sqlDiskCleanup()))}};var I$={};oe(I$,{breakExternalTableId:()=>x$,breakRowIdField:()=>hSt,buildExternalTableId:()=>uSt,convertRowId:()=>dSt,encodeTableId:()=>cSt,encodeViewId:()=>lSt,extractDate:()=>A$,generateRowIdField:()=>fSt,getNativeSql:()=>Wv,isExternalTable:()=>S$,isExternalTableID:()=>l1,isInternalTableID:()=>sSt,isRowId:()=>pSt,isValidFilter:()=>p1,isValidISODateString:()=>f1,isValidISODateStringWithoutTimezone:()=>T$,isValidTime:()=>R$,sqlLog:()=>px,validateManyToMany:()=>O$});var _$=`${Me}${Me}`,Kye=/^\[.*]$/g,rSt=encodeURIComponent(" "),nSt=/^\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}:\d{2}(?:.\d{3})?Z)?$/,iSt=/^\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}:\d{2}(?:.\d{3})?)?$/,aSt=/(\d{4}-\d{2}-\d{2})/,oSt=/^(?:\d{2}:)?(?:\d{2}:)(?:\d{2})$/;function l1(e){return e.startsWith("datasource"+Me)}a(l1,"isExternalTableID");function sSt(e){return!l1(e)}a(sSt,"isInternalTableID");function Wv(e){let t=e.toSQL();if(Array.isArray(t))return t;let r;return t.toNative&&(r=t.toNative()),{sql:r?.sql||t.sql,bindings:r?.bindings||t.bindings}}a(Wv,"getNativeSql");function S$(e){return e?.sourceId&&e.sourceId.includes("datasource"+Me)&&e?.sourceId!==yS||e?.sourceType==="external"?!0:!!(e?._id&&l1(e._id))}a(S$,"isExternalTable");function uSt(e,t){return`${e}${_$}${encodeURIComponent(t)}`}a(uSt,"buildExternalTableId");function cSt(e){return l1(e)?encodeURIComponent(e):e}a(cSt,"encodeTableId");function lSt(e){return encodeURIComponent(e)}a(lSt,"encodeViewId");function x$(e){let t=e.split(_$),r=t.shift(),n=t.join(_$);if(n.includes(rSt)&&(n=decodeURIComponent(n)),!r||!n)throw new Error("Unable to get datasource/table name from table ID");return{datasourceId:r,tableName:n}}a(x$,"breakExternalTableId");function fSt(e=[]){Array.isArray(e)||(e=[e]);for(let t in e)e[t]instanceof Buffer&&(e[t]=e[t].toString());return encodeURIComponent(JSON.stringify(e).replace(/"/g,"'"))}a(fSt,"generateRowIdField");function pSt(e){return Array.isArray(e)||typeof e=="string"&&e.match(Kye)!=null}a(pSt,"isRowId");function dSt(e){return Array.isArray(e)?e[0]:typeof e=="string"&&e.match(Kye)!=null?e.substring(1,e.length-1):e}a(dSt,"convertRowId");function hSt(e){if(!e)return[];let t=typeof e=="string"?e:e._id,r=decodeURIComponent(t).replace(/'/g,'"');try{let n=JSON.parse(r);return Array.isArray(n)?n:[n]}catch{return[e]}}a(hSt,"breakRowIdField");function f1(e){let t=e.trim();if(!nSt.test(t))return!1;let r=new Date(t);return!isNaN(r.getTime())}a(f1,"isValidISODateString");function T$(e){let t=e.trim();if(!iSt.test(t))return!1;let r=new Date(t);return!isNaN(r.getTime())}a(T$,"isValidISODateStringWithoutTimezone");function A$(e){let t=e.match(aSt);if(t)return t[0]}a(A$,"extractDate");function p1(e){return e!=null&&e!==""}a(p1,"isValidFilter");function R$(e){return oSt.test(e)}a(R$,"isValidTime");function px(e,t,r){if(!V.SQL_LOGGING_ENABLE)return;let n=`[SQL] [${e.toUpperCase()}] query="${t}"`;r&&(n+=` values="${r.join(", ")}"`),console.log(n)}a(px,"sqlLog");function mSt(e){return!!e.through&&!!e.fromPrimary&&!!e.from&&!!e.toPrimary&&!!e.to}a(mSt,"isValidManyToManyRelationship");function O$(e){if(mSt(e))return e}a(O$,"validateManyToMany");var Qye="Database does not exist.";function Yye(e){return(0,Jye.default)({url:e.url,requestDefaults:{headers:{Authorization:e.cookie}},parseUrl:!1})}a(Yye,"buildNano");var $d=class extends Error{constructor(r,n){super(r);let i=n.status||n.statusCode||500;this.status=i,this.statusCode=i,this.reason=n.reason||"Unknown",this.name=n.name,this.errid=n.errid||"Unknown",this.description=n.description||"Unknown",this.error=n.error||"Not found"}static{a(this,"CouchDBError")}};function gSt(e,t,r){if(!e||!t)throw new Error("Unable to create database without database name or connection");let n=new Gv(e,r,t);return new zv(n)}a(gSt,"DatabaseWithConnection");var Gv=class e{constructor(t,r,n){this.couchInfo=gc();this.name=t,this.pouchOpts=r||{},n&&(this.couchInfo=gc(n),this.instanceNano=Yye(this.couchInfo)),e.nano||e.init()}static{a(this,"DatabaseImpl")}static init(){let t=gc();e.nano=Yye(t)}exists(t){return t===void 0?this.dbExists():this.docExists(t)}async dbExists(){return(await m0({url:`${this.couchInfo.url}/${this.name}`,method:"HEAD",cookie:this.couchInfo.cookie})).status===200}async docExists(t){try{return await this.performCall(r=>()=>r.head(t)),!0}catch{return!1}}nano(){return this.instanceNano||e.nano}getDb(){return this.nano().db.use(this.name)}async checkAndCreateDb(){let t=!this.pouchOpts?.skip_setup,r=await this.exists();if(!t&&!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 $d(n.message,n)}return this.getDb()}async performCallWithDBCreation(t){let r=this.getDb(),n=await t(r);try{return await n()}catch(i){if(i.statusCode===404&&i.reason===Qye)return await this.checkAndCreateDb(),await this.performCallWithDBCreation(t);throw new $d(`CouchDB error: ${i.message}`,i)}}async performCall(t){let r=this.getDb(),n=await t(r);try{return await n()}catch(i){throw new $d(`CouchDB error: ${i.message}`,i)}}async get(t){return this.performCall(r=>{if(!t)throw new Error("Unable to get doc without a valid _id.");return()=>r.get(t)})}async tryGet(t){try{return await this.get(t)}catch(r){if(r.statusCode===404)return;throw r}}async getMultiple(t,r){if(!t||t.length===0)return[];t=[...new Set(t)];let n=!r?.excludeDocs,i=await this.allDocs({keys:t,include_docs:n}),o=a(c=>n&&c.doc==null||c.value&&"deleted"in c.value&&c.value.deleted?!0:c.error==="not_found","rowUnavailable"),s=i.rows.filter(c=>!o(c)),u=s.length!==i.rows.length;if(!r?.allowMissing&&u){let l=i.rows.filter(f=>o(f)).map(f=>f.key).join(", ");throw new Error(`Unable to get bulk documents: ${l}`)}return s.map(c=>n?c.doc:c.value)}async remove(t,r){return this.performCall(n=>{let i,o;if(ase(t)?(i=t._id,o=t._rev):(i=t,o=r),!i||!o)throw new Error("Unable to remove doc without a valid _id and _rev.");return()=>n.destroy(i,o)})}async bulkRemove(t,r){let n=await this.performCall(s=>()=>s.bulk({docs:t.map(u=>({...u,_deleted:!0}))}));if(r?.silenceErrors)return;let i=!1,o="Unable to bulk remove documents: ";for(let s of n)s.error&&(i=!0,o+=s.error);if(i)throw new $d(o,{name:this.name,status:400})}async post(t,r){return t._id||(t._id=kn()),this.put(t,r)}async put(t,r){if(!t._id)throw new Error("Cannot store document without _id field.");return this.performCallWithDBCreation(async n=>{if(t.createdAt||(t.createdAt=new Date().toISOString()),t.updatedAt=new Date().toISOString(),r?.force&&t._id)try{let i=await this.get(t._id);i&&(t._rev=i._rev)}catch(i){if(i.status!==404)throw i}return async()=>{let i=await n.insert(t);return r?.returnDoc?{...i,doc:{...t,_rev:i.rev}}:i}})}async bulkDocs(t){let r=new Date().toISOString();return this.performCallWithDBCreation(n=>()=>n.bulk({docs:t.map(i=>({createdAt:r,...i,updatedAt:r}))}))}async find(t){return this.performCall(r=>async()=>r.find(t))}async allDocs(t){return this.performCall(r=>async()=>{try{return await r.list(t)}catch(n){if(n.reason===Qye)return{offset:0,total_rows:0,rows:[]};throw n}})}async _sqlQuery(t,r,n){t=cC(`${this.couchInfo.sqlUrl}/${t}`);let i={url:t,method:r,cookie:this.couchInfo.cookie};return n&&(i.body=n),this.performCall(()=>async()=>{let o=await m0(i),s=await o.text();if(o.status>300){let u;try{u=JSON.parse(s)}catch{throw console.error(`SQS error: ${s}`),new $d("error while running SQS query, please try again later",{name:"sqs_error",status:o.status})}throw u}return JSON.parse(s)})}async sql(t,r){let i=`/${this.name}/${Pa}`;return px("sqlite3",t,r),await this._sqlQuery(i,"POST",{query:t,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(t){Array.isArray(t)||(t=[t]);let n=`/${this.name}/_purge`;return await this._sqlQuery(n,"POST",{docs:t})}async query(t,r){return this.performCall(n=>{let[i,o]=t.split("/");return()=>n.view(i,o,r)})}async destroy(){if(await this.exists(Pa)){let t=await this.get(Pa);t.sql.tables={},await this.put(t),await this.sqlDiskCleanup()}try{return await this.nano().db.destroy(this.name)}catch(t){if(t.statusCode===404)return{ok:!0};throw new $d(t.message,t)}}async compact(){return this.performCall(t=>()=>t.compact())}async dump(t,r){return yu(this.name).dump(t,r)}async load(t){return yu(this.name).load(t)}async createIndex(t){return yu(this.name).createIndex(t)}async deleteIndex(t){return yu(this.name).deleteIndex(t)}async getIndexes(){return yu(this.name).getIndexes()}};function Io(e,t){return new zv(new Gv(e,t))}a(Io,"getDB");async function Fs(e,t,r){let n=Io(e,r);return await t(n)}a(Fs,"doWithDB");async function k$(e){let t="/_all_dbs";return e&&(t+=`?${e}`),await j4(t)}a(k$,"directCouchAllDbs");var C$="No app provided";function zd(e){if(!e)throw C$;return e.startsWith(mc)}a(zd,"isDevWorkspaceID");function ySt(e){if(!e)throw C$;return e.startsWith(hc)&&!zd(e)}a(ySt,"isProdWorkspaceID");function dx(e){if(!e)throw C$;return zd(e.appId)}a(dx,"isDevWorkspace");function d1(e){if(!e||e.startsWith(mc))return e;let t=e.split(hc);t.shift();let r=t.join(hc);return`${mc}${r}`}a(d1,"getDevWorkspaceID");function Us(e){if(!e||!e.startsWith(mc))return e;let t=e.split(mc);t.shift();let r=t.join(mc);return`${hc}${r}`}a(Us,"getProdWorkspaceID");var Xye=require("async_hooks");var ji=class e{static{a(this,"Context")}static{this.storage=new Xye.AsyncLocalStorage}static run(t,r){return e.storage.run(t,()=>r())}static get(){return e.storage.getStore()}};var Zye=null;function pg(e){return e||(e=Pt()),hx(e)}a(pg,"getGlobalDBName");function ebe(e){return e||(e=Pt()),e===pi?bn.AUDIT_LOGS.name:`${e}${Me}${bn.AUDIT_LOGS.name}`}a(ebe,"getAuditLogDBName");function vSt(e){return e||(e=Pt()),e===pi?bn.SCIM_LOGS.name:`${e}${Me}${bn.SCIM_LOGS.name}`}a(vSt,"getScimDBName");function hx(e){return!e||e===pi?bn.GLOBAL.name:`${e}${Me}${bn.GLOBAL.name}`}a(hx,"baseGlobalDBName");function D$(){return V.PLATFORM_URL}a(D$,"getPlatformURL");function Wd(){return!!V.MULTI_TENANCY}a(Wd,"isMultiTenant");function wSt(){return!!ji.get()?.tenantId}a(wSt,"isTenantIdSet");function ESt(){return V.MULTI_TENANCY}a(ESt,"isTenancyEnabled");function Hv(e){if(!e)return;if(!Wd())return pi;let t=e.split(Me),r=t[1]==="dev";if(!(r&&t.length===3||!r&&t.length===2))return r?t[2]:t[1]}a(Hv,"getTenantIDFromWorkspaceID");function _St(e){let t;try{t=ji.get()}catch{t={}}return t={...t,...e},t}a(_St,"updateContext");async function wc(e,t){ISt();let r=_St(e);return ji.run(r,t)}a(wc,"newContext");async function SSt(e){return await rbe(),await wc({tenantId:Hv(e.workspaceId),appId:e.workspaceId,automationId:e.automationId},e.task)}a(SSt,"doInAutomationContext");async function P$(e,t){let r=Hv(e);return wc({tenantId:r,appId:e},t)}a(P$,"doInContext");async function Xo(e,t){return V.MULTI_TENANCY||(e=e||pi),wc(e?{tenantId:e}:{},t)}a(Xo,"doInTenant");async function xSt(e,t){return wc({tenantId:e,isSelfHostUsingCloud:!0},t)}a(xSt,"doInSelfHostTenantUsingCloud");async function TSt(e,t){return wc({license:e},t)}a(TSt,"doInLicenseContext");function ASt(){return ji.get()?.license}a(ASt,"getLicense");function h1(){return!!ji.get()?.isSelfHostUsingCloud}a(h1,"isSelfHostUsingCloud");function RSt(){let e=ji.get();if(!e||!e.isSelfHostUsingCloud)throw new Error("Self-host cloud DB not found");return Io(bn.SELF_HOST_CLOUD.name)}a(RSt,"getSelfHostCloudDB");async function OSt(e,t){return tbe(e,t)}a(OSt,"doInWorkspaceContext");async function tbe(e,t,r){if(!e)throw new Error("workspaceId is required");let n=Hv(e),i={appId:e,...r};return n&&(i.tenantId=n),wc(i,t)}a(tbe,"_doInWorkspaceContext");async function h0(e,t){if(!e)throw new Error("identity is required");let r={identity:e};return e.tenantId&&(r.tenantId=e.tenantId),wc(r,t)}a(h0,"doInIdentityContext");function ISt(){if(ji.get()?.isMigrating)throw new Error("The context cannot be changed, a migration is currently running")}a(ISt,"guardMigration");async function kSt(e,t){return tbe(e,t,{isMigrating:!0})}a(kSt,"doInWorkspaceMigrationContext");function Mf(){try{return ji.get()?.identity}catch{}}a(Mf,"getIdentity");function Pt(){if(!Wd())return pi;let t=ji.get()?.tenantId;if(!t)throw new Error("Tenant id not found");return t}a(Pt,"getTenantId");function N$(){return ji.get()?.automationId}a(N$,"getAutomationId");function Zo(){let t=ji.get()?.appId;return!t&&V.isTest()&&Zye?Zye:t}a(Zo,"getWorkspaceId");function L$(){return ji.get()?.ip}a(L$,"getIP");var CSt=a(()=>{let e=Zo();if(!e)throw new Error("Could not get workspaceId");return d1(e)},"getDevWorkspaceId"),DSt=a(()=>{let e=Zo();if(!e)throw new Error("Could not get workspaceId");return Us(e)},"getProdWorkspaceId");function PSt(e,t){if(!e)throw new Error("Must supply environment variables.");return wc({environmentVariables:e},t)}a(PSt,"doInEnvironmentContext");function NSt(e){return wc({isScim:!0},e)}a(NSt,"doInScimContext");function F$(e,t){return wc({ip:e},t)}a(F$,"doInIPContext");async function rbe(){let e=dg();if(!e||e.snippets)return;let t,r=Vv();r&&(t=(await r.tryGet("app_metadata"))?.snippets),e.snippets=t||[]}a(rbe,"ensureSnippetContext");function LSt(){let e=ji.get();return e.environmentVariables?e.environmentVariables:null}a(LSt,"getEnvironmentVariables");function Ar(){let e=ji.get();if(!e||V.MULTI_TENANCY&&!e.tenantId)throw new Error("Global DB not found");if(e.isSelfHostUsingCloud)throw new Error("Global DB not found - self-host users using cloud don't have a global DB");return Io(hx(e?.tenantId))}a(Ar,"getGlobalDB");function FSt(){if(!Pt())throw new Error("No tenant ID found - cannot open audit log DB");return Io(ebe())}a(FSt,"getAuditLogsDB");function Vv(e){let t=Zo();if(!t)throw new Error("Unable to retrieve workspace DB - no workspace ID.");if(h1())throw new Error("Workspace DB not found - self-host users using cloud don't have workspace DBs");return Io(t,e)}a(Vv,"getWorkspaceDB");function USt(e){let t=Zo();if(!t)throw new Error("Unable to retrieve prod DB - no workspace ID.");return Io(Us(t),e)}a(USt,"getProdWorkspaceDB");function jSt(e){let t=Zo();if(!t)throw new Error("Unable to retrieve dev DB - no workspace ID.");return Io(d1(t),e)}a(jSt,"getDevWorkspaceDB");function Ec(){return!!ji.get()?.isScim}a(Ec,"isScim");function dg(){try{return ji.get()}catch{return}}a(dg,"getCurrentContext");function U$(e){let t=dg();if(t)return t.featureFlagCache?.[e]}a(U$,"getFeatureFlags");function j$(e,t){let r=dg();r&&(r.featureFlagCache??={},r.featureFlagCache[e]=t)}a(j$,"setFeatureFlags");function M$(){return dg()?.featureFlagOverrides||{}}a(M$,"getFeatureFlagOverrides");async function B$(e,t){return await wc({featureFlagOverrides:e},t)}a(B$,"doInFeatureFlagOverrideContext");function MSt(e){let t=dg();if(t)return t.viewToTableCache?.[e]}a(MSt,"getTableForView");function BSt(e,t){let r=dg();r&&(r.viewToTableCache??={},r.viewToTableCache[e]=t)}a(BSt,"setTableForView");var ne={};oe(ne,{AutomationViewMode:()=>_4,BUDIBASE_DATASOURCE_TYPE:()=>dfe,DEFAULT_BB_DATASOURCE_ID:()=>yS,DEFAULT_EMPLOYEE_TABLE_ID:()=>yfe,DEFAULT_EXPENSES_TABLE_ID:()=>gfe,DEFAULT_INVENTORY_TABLE_ID:()=>mfe,DEFAULT_JOBS_TABLE_ID:()=>hfe,DatabaseImpl:()=>Gv,DatabaseWithConnection:()=>gSt,DeprecatedViews:()=>l0,DesignDocuments:()=>Gm,DocumentType:()=>Mt,InternalTable:()=>Cf,QueryBuilder:()=>Xf,Replication:()=>Lbe,SEPARATOR:()=>Me,SQLITE_DESIGN_DOC_ID:()=>Pa,SQS_DATASOURCE_INTERNAL:()=>Ed,StaticDatabases:()=>bn,UNICODE_MAX:()=>Da,USER_METADATA_PREFIX:()=>nC,ViewName:()=>wd,WORKSPACE_DEV:()=>S4,WORKSPACE_DEV_PREFIX:()=>mc,WORKSPACE_PREFIX:()=>hc,baseGlobalDBName:()=>hx,checkErrorCode:()=>Mbe,closePouchDB:()=>fx,createApiKeyView:()=>kbe,createNewUserEmailView:()=>Obe,createPlatformAccountEmailView:()=>Dbe,createPlatformUserView:()=>Pbe,createUserAppView:()=>Ibe,createView:()=>Yv,dbExists:()=>t0t,directCouchAllDbs:()=>k$,directCouchCall:()=>Rfe,directCouchQuery:()=>j4,directCouchUrlCall:()=>m0,doWithDB:()=>Fs,fullSearch:()=>o0t,generateAgentChatID:()=>gbe,generateAgentToolSourceID:()=>ybe,generateAppUserID:()=>v1,generateDevInfoID:()=>dbe,generateGlobalUserID:()=>Qv,generateOAuth2LogID:()=>mbe,generatePluginID:()=>hbe,generateRoleID:()=>K$,generateRowID:()=>V$,generateTableID:()=>ube,generateTemplateID:()=>pbe,generateUserMetadataID:()=>lbe,generateWorkspaceAppID:()=>bbe,generateWorkspaceFavouriteID:()=>vbe,generateWorkspaceID:()=>sbe,getAllDbs:()=>Rbe,getAllWorkspaces:()=>Rx,getCouchInfo:()=>gc,getDB:()=>Io,getDevWorkspaceID:()=>d1,getDevWorkspaceIDs:()=>ZSt,getDocParams:()=>Yf,getGlobalDBName:()=>pg,getGlobalIDFromUserMetadataID:()=>fbe,getGlobalUserParams:()=>gg,getOAuth2ConfigParams:()=>xbe,getPluginParams:()=>Sbe,getPouch:()=>E$,getPouchDB:()=>yu,getProdWorkpaceIDs:()=>XSt,getProdWorkspaceID:()=>Us,getQueryIndex:()=>wbe,getRoleParams:()=>E1,getRowParams:()=>Q$,getStartEndKeyURL:()=>Ax,getTemplateParams:()=>_be,getUrlInfo:()=>U4,getUserMetadataParams:()=>Ebe,getUsersByWorkspaceParams:()=>w1,getWorkspaceAppParams:()=>Tbe,getWorkspaceFavouriteParams:()=>Abe,getWorkspacesByIDs:()=>JSt,init:()=>c1,isDevWorkspace:()=>dx,isDevWorkspaceID:()=>zd,isDocumentConflictError:()=>u0t,isGlobalUserID:()=>cbe,isProdWorkspaceID:()=>ySt,isSameWorkspaceID:()=>e0t,paginatedSearch:()=>a0t,pagination:()=>Y$,prefixRoleID:()=>Qf,queryGlobalView:()=>Jf,queryGlobalViewRaw:()=>Z$,queryPlatformView:()=>Ix,queryView:()=>X$,queryViewRaw:()=>Ox,removeKeyNumbering:()=>kx,searchIndexes:()=>rz});var Tx={};oe(Tx,{WorkspaceState:()=>H$,getWorkspaceMetadata:()=>b1,invalidateWorkspaceMetadata:()=>QSt});var Gd={};oe(Gd,{getCacheClient:()=>z$,getDocWritethroughClient:()=>GSt,getInviteClient:()=>mg,getLockClient:()=>G$,getPasswordResetClient:()=>xx,getSessionClient:()=>Kv,getSocketClient:()=>WSt,getUserClient:()=>Sx,getWorkspaceClient:()=>y1,getWritethroughClient:()=>W$,init:()=>_c,shutdown:()=>abe});var g1=te(require("ioredis"));var m1=require("dd-trace"),ibe=require("lodash");var nbe;if(V.MOCK_REDIS)try{nbe=require("ioredis-mock")}catch{console.log("Mock redis unavailable")}async function qSt(e=0){return await m1.tracer.trace("Redis.init",async t=>{if(V.MOCK_REDIS)return t.addTags({mock:!0}),new nbe(Hm());let r;if(V.REDIS_CLUSTERED){t.addTags({clustered:!0});let{host:n,port:i}=sC();r=new g1.Cluster([{host:n,port:i}],I4())}else r=new g1.default(Hm());return new Promise((n,i)=>{r.on("error",o=>{t.addTags({error:!0}),console.error(`failed to connect to redis (db: ${e})`,o),i(o)}),r.on("reconnecting",()=>{console.log(`Redis reconnecting... (db: ${e})`)}),r.on("ready",()=>{t.addTags({connected:!0}),console.log(`Redis ready to receive commands (db: ${e})`),n(r)})})})}a(qSt,"init");function $St(e,t){return new Promise((r,n)=>{let i=new Set;e.on("data",o=>o.forEach(s=>i.add(s))),e.on("error",o=>n(o)),e.on("end",async()=>{try{let o=Array.from(i).map(async s=>{let u=await t.get(s);return u&&(u=JSON.parse(u)),{key:k4(s),value:u}});r(await Promise.all(o))}catch(o){n(o)}})})}a($St,"promisifyStream");function zSt(e){return e.isCluster}a(zSt,"isCluster");var q$=class e{static{a(this,"RedisWrapper")}constructor(t,r){this.client=t,this.db=r}static async init(t,r=0){return await m1.tracer.trace("RedisWrapper.init",async n=>{let i=await qSt(r);return r&&!V.isTest()&&(n.addTags({db:t}),i.select(r)),new e(i,t)})}trace(t,r){return m1.tracer.trace(t,async n=>(n.addTags({db:this.db}),await r(n)))}prefixed(t){return t.includes(this.db)?t:`${this.db}${cv}${t}`}async finish(){return await this.trace("RedisWrapper.finish",async()=>{await this.client.quit()})}async scan(t=""){return await this.trace("RedisWrapper.scan",async r=>{r.addTags({key:t}),t=`${this.db}${cv}${t}`;let n;zSt(this.client)?n=this.client.nodes("master")[0].scanStream({match:t+"*",count:100}):n=this.client.scanStream({match:t+"*",count:100});let i=await $St(n,this.client);return r.addTags({numKeysFound:i.length}),i})}async keys(t){return await this.trace("RedisWrapper.keys",async r=>(r.addTags({pattern:t}),this.client.keys(this.prefixed(t))))}async exists(t){return await this.trace("RedisWrapper.exists",async r=>(r.addTags({key:t}),await this.client.exists(this.prefixed(t))))}async get(t){return await this.trace("RedisWrapper.get",async r=>{r.addTags({key:t});let n=await this.client.get(this.prefixed(t));n!=null&&n.key&&(n.key=t);try{return JSON.parse(n)}catch{return n}})}async bulkGet(t){return await this.trace("RedisWrapper.bulkGet",async r=>{if(r.addTags({numKeys:t.length}),t.length===0)return{};let n=await this.client.mget(t.map(i=>this.prefixed(i)));return r.addTags({numKeysFound:n.length}),(0,ibe.zip)(t,n).reduce((i,[o,s])=>{if(o===void 0||s===void 0)throw new Error(`Keys and response length mismatch: ${t.length} vs ${n.length}`);try{i[o]=s?JSON.parse(s):null}catch{i[o]=s}return i},{})})}async store(t,r,n=null){return await this.trace("RedisWrapper.store",async i=>{i.addTags({key:t,expirySeconds:n}),typeof r=="object"&&(r=JSON.stringify(r)),await this.client.set(this.prefixed(t),r),n&&await this.client.expire(this.prefixed(t),n)})}async bulkStore(t,r=null){return await this.trace("RedisWrapper.bulkStore",async n=>{n.addTags({numKeys:Object.keys(t).length,expirySeconds:r});let i=Object.entries(t).reduce((s,[u,c])=>(s[this.prefixed(u)]=typeof c=="object"?JSON.stringify(c):c,s),{}),o=this.client.pipeline();if(o.mset(i),r!==null)for(let s of Object.keys(i))o.expire(s,r);await o.exec()})}async getTTL(t){return await this.trace("RedisWrapper.getTTL",async r=>(r.addTags({key:t}),await this.client.ttl(this.prefixed(t))))}async setExpiry(t,r){return await this.trace("RedisWrapper.setExpiry",async n=>(n.addTags({key:t,expirySeconds:r}),await this.client.expire(this.prefixed(t),r)))}async delete(t){return await this.trace("RedisWrapper.delete",async r=>{r.addTags({key:t}),await this.client.del(this.prefixed(t))})}async bulkDelete(t){return await this.trace("RedisWrapper.bulkDelete",async r=>{r.addTags({numKeys:t.length}),await this.client.del(t.map(n=>this.prefixed(n)))})}async clear(){return await this.trace("RedisWrapper.clear",async t=>{let r=await this.scan();t.addTags({numKeys:r.length}),await Promise.all(r.map(n=>this.delete(n.key)))})}async increment(t){return await this.trace("RedisWrapper.increment",async r=>{r.addTags({key:t});let n=await this.client.incr(this.prefixed(t));if(isNaN(n))throw new Error(`Redis ${t} does not contain a number`);return n})}async deleteIfValue(t,r){return await this.trace("RedisWrapper.deleteIfValue",async n=>{n.addTags({key:t});let i=`
504
504
  if redis.call('GET', KEYS[1]) == ARGV[1] then
505
505
  redis.call('DEL', KEYS[1])
506
506
  end
@@ -532,8 +532,8 @@ $1`)};qO.parseAttributes=a(function(t){return Object.keys(t).map(function(r){var
532
532
  emit(doc.ssoId, doc._id)
533
533
  }
534
534
  }`,"platform_users_lowercase_2")},"createPlatformUserView"),Ix=a(async(e,t)=>{let r={account_by_email:Dbe,platform_users_lowercase_2:Pbe};return Fs(bn.PLATFORM_INFO.name,async n=>{let i=r[e];return X$(e,t,n,i,{arrayResponse:!0})})},"queryPlatformView"),Nbe={by_email2:Obe,by_api_key:kbe,by_app:Ibe},Jf=a(async(e,t,r,n)=>{r||(r=Ar());let i=Nbe[e];return X$(e,t,r,i,n)},"queryGlobalView");async function Z$(e,t,r){let n=Ar(),i=Nbe[e];return Ox(e,t,n,i,r)}a(Z$,"queryGlobalViewRaw");var i0t=te(require("pouchdb"));var ez=class{static{a(this,"Replication")}constructor({source:t,target:r}){this.source=yu(t),this.target=yu(r),t.startsWith("app_dev")&&r.startsWith("app")?this.direction="toProduction":t.startsWith("app")&&r.startsWith("app_dev")&&(this.direction="toDev")}async close(){await Promise.all([fx(this.source),fx(this.target)])}replicate(t={}){return new Promise(r=>{this.source.replicate.to(this.target,t).on("denied",function(n){throw new Error(`Denied: Document failed to replicate ${n}`)}).on("complete",function(n){return r(n)}).on("error",function(n){throw n})})}appReplicateOpts(t={}){if(typeof t.filter=="string")return t;let r=t.filter,i=this.direction==="toDev";delete t.filter;let o=t.isCreation,s=t.tablesToSync;delete t.isCreation,delete t.tablesToSync;let u=!1,c;typeof s=="string"&&s==="all"?u=!0:s&&(c=s);let l=a((p,d)=>p?.startsWith(d+Me),"startsWithID"),f=a(p=>l(p,"ro")||l(p,"li"),"isData");return{...t,filter:(p,d)=>!o&&p._id==="_design/migrations"||i&&p._id.startsWith("_design")?!1:p._deleted||l(p._id,nC)?!0:f(p._id)?!!c?.find(h=>p._id.includes(h))||u:l(p._id,"log_au")||p._id==="app_metadata"?!1:r?r(p,d):!0}}async rollback(){await this.target.destroy(),this.target=yu(this.target.name),await this.replicate()}},Lbe=ez;var Ube=te(require("node-fetch"));var kx=Lr.removeKeyNumbering;function yg(e){return e==null||e===""}a(yg,"isEmpty");var Xf=class e{static{a(this,"QueryBuilder")}#l;#f;#e;#r;#n;#i;#a;#o;#t;#p;#s;#u=!1;#c;static{this.maxLimit=200}constructor(t,r,n){this.#l=t,this.#f=r,this.#e={allOr:!1,onEmptyFilter:"all",string:{},fuzzy:{},range:{},equal:{},notEqual:{},empty:{},notEmpty:{},oneOf:{},contains:{},notContains:{},containsAny:{},...n},this.#r=50,this.#a="ascending",this.#o="string",this.#t=!0}disableEscaping(){return this.#u=!0,this}setIndexBuilder(t){return this.#s=t,this}setVersion(t){return t!=null&&(this.#p=t),this}setTable(t){return this.#e.equal.tableId=t,this}setLimit(t){return t!=null&&(this.#r=t),this}setSort(t){return t!=null&&(this.#n=t),this}setSortOrder(t){return t!=null&&(this.#a=t),this}setSortType(t){return t!=null&&(this.#o=t),this}setBookmark(t){return t!=null&&(this.#i=t),this}setSkip(t){return this.#c=t,this}excludeDocs(){return this.#t=!1,this}includeDocs(){return this.#t=!0,this}addString(t,r){return this.#e.string[t]=r,this}addFuzzy(t,r){return this.#e.fuzzy[t]=r,this}addRange(t,r,n){return this.#e.range[t]={low:r,high:n},this}addEqual(t,r){return this.#e.equal[t]=r,this}addNotEqual(t,r){return this.#e.notEqual[t]=r,this}addEmpty(t,r){return this.#e.empty[t]=r,this}addNotEmpty(t,r){return this.#e.notEmpty[t]=r,this}addOneOf(t,r){return this.#e.oneOf[t]=r,this}addContains(t,r){return this.#e.contains[t]=r,this}addNotContains(t,r){return this.#e.notContains[t]=r,this}addContainsAny(t,r){return this.#e.containsAny[t]=r,this}setAllOr(){this.#e.allOr=!0}setOnEmptyFilter(t){this.#e.onEmptyFilter=t}handleSpaces(t){return this.#u?t:t.replace(/ /g,"_")}preprocess(t,{escape:r,lowercase:n,wrap:i,type:o}={}){let s=!!this.#p,u=typeof t;return t&&n&&(t=t.toLowerCase?t.toLowerCase():t),!this.#u&&r&&u==="string"&&(t=`${t}`.replace(/[ /#+\-&|!(){}\]^"~*?:\\]/g,"\\$&")),u==="string"&&!isNaN(t)&&!o?t=`"${t}"`:s&&i&&(t=u==="number"?t:`"${t}"`),t}isMultiCondition(){let t=0;for(let r of Object.values(this.#e))typeof r=="object"&&(t+=Object.keys(r).length);return t>1}compressFilters(t){let r={};for(let o of Object.keys(t)){let s=kx(o);r[s]?r[s]=r[s].concat(t[o]):r[s]=t[o]}let n={},i=1;for(let[o,s]of Object.entries(r))n[`${i++}:${o}`]=s;return n}buildSearchQuery(){let t=this,r=this.#e&&this.#e.allOr,n=r?"":"*:*",i=!0,o={escape:!0,lowercase:!0,wrap:!0},s="";this.#e.equal.tableId&&(s=this.#e.equal.tableId,delete this.#e.equal.tableId);let u=a((m,g)=>yg(g)?null:`${m}:${t.preprocess(g,o)}`,"equal"),c=a((m,g,y="AND")=>{if(yg(g))return null;if(!Array.isArray(g))return`${m}:${g}`;let b=`${t.preprocess(g[0],{escape:!0})}`;for(let v=1;v<g.length;v++)b+=` ${y} ${t.preprocess(g[v],{escape:!0})}`;return`${m}:(${b})`},"contains"),l=a((m,g)=>yg(g)?null:(g=t.preprocess(g,{escape:!0,lowercase:!0,type:"fuzzy"}),`${m}:/.*${g}.*/`),"fuzzy"),f=a((m,g)=>{let y=r?"*:* AND ":"",b=r?"AND":void 0;return y+"NOT "+c(m,g,b)},"notContains"),p=a((m,g)=>c(m,g,"OR"),"containsAny"),d=a((m,g)=>{if(yg(g))return"*:*";if(!Array.isArray(g))if(typeof g=="string")g=g.split(",");else return"";let y=`${t.preprocess(g[0],o)}`;for(let b=1;b<g.length;b++)y+=` OR ${t.preprocess(g[b],o)}`;return`${m}:(${y})`},"oneOf");function h(m,g,y){let b="";for(let[v,w]of Object.entries(m)){v=kx(v),v=t.preprocess(t.handleSpaces(v),{escape:!0});let x=g(v,w);if(x!=null){if(b.length>0||n.length>0){let T=y?.mode?y.mode:r?"OR":"AND";b+=` ${T} `}b+=x,(typeof w!="string"&&w!=null||typeof w=="string"&&w!==s&&w!=="")&&(i=!1)}}if(y?.returnBuilt)return b;n+=b}if(a(h,"build"),this.#e.string&&h(this.#e.string,(m,g)=>yg(g)?null:(g=t.preprocess(g,{escape:!0,lowercase:!0,type:"string"}),`${m}:${g}*`)),this.#e.range&&h(this.#e.range,(m,g)=>{if(yg(g)||g.low==null||g.low===""||g.high==null||g.high==="")return null;let y=t.preprocess(g.low,o),b=t.preprocess(g.high,o);return`${m}:[${y} TO ${b}]`}),this.#e.fuzzy&&h(this.#e.fuzzy,l),this.#e.equal&&h(this.#e.equal,u),this.#e.notEqual&&h(this.#e.notEqual,(m,g)=>yg(g)?null:typeof g=="boolean"?`(*:* AND !${m}:${g})`:`!${m}:${t.preprocess(g,o)}`),this.#e.empty&&h(this.#e.empty,m=>(i=!1,`(*:* -${m}:["" TO *])`)),this.#e.notEmpty&&h(this.#e.notEmpty,m=>(i=!1,`${m}:["" TO *]`)),this.#e.oneOf&&h(this.#e.oneOf,d),this.#e.contains&&h(this.#e.contains,c),this.#e.notContains&&h(this.compressFilters(this.#e.notContains),f),this.#e.containsAny&&h(this.#e.containsAny,p),s&&(n=this.isMultiCondition()?`(${n})`:n,r=!1,h({tableId:s},u)),i){if(this.#e.onEmptyFilter==="none")return"";if(this.#e?.allOr)return n.replace("()","(*:*)")}return n}buildSearchBody(){let t={q:this.buildSearchQuery(),limit:Math.min(this.#r,e.maxLimit),include_docs:this.#t};if(this.#i&&(t.bookmark=this.#i),this.#n){let r=this.#a==="descending"?"-":"",n=`<${this.#o}>`;t.sort=`${r}${this.handleSpaces(this.#n)}${n}`}return t}async run(){return this.#c&&await this.#h(this.#c),await this.#d()}async#h(t){let r=this.#t,n=this.#r;this.excludeDocs();let i=t,o=0;do{let s=Math.min(e.maxLimit,i);this.setLimit(s);let{bookmark:u,rows:c}=await this.#d();this.setBookmark(u),o=c.length,i-=c.length}while(i>0&&o>0);this.#t=r,this.#r=n}async#d(){let{url:t,cookie:r}=gc(),n=`${t}/${this.#l}/_design/database/_search/${this.#f}`,i=this.buildSearchBody();try{return await Fbe(n,i,r)}catch(o){if(o.status===404&&this.#s)return await this.#s(),await Fbe(n,i,r);throw o}}};async function Fbe(e,t,r){let n=await(0,Ube.default)(e,{body:JSON.stringify(t),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(s=>s.doc)),i.bookmark&&(o.bookmark=i.bookmark),i.total_rows&&(o.totalRows=i.total_rows),o}a(Fbe,"runQuery");async function jbe(e,t,r,n){let i=n.bookmark,o=n.rows||[];if(n.limit&&o.length>=n.limit)return o;let s=Xf.maxLimit;n.limit&&o.length>n.limit-Xf.maxLimit&&(s=n.limit-o.length);let u=new Xf(e,t,r);u.setVersion(n.version).setBookmark(i).setLimit(s).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<Xf.maxLimit)return[...o,...c.rows];let l={...n,bookmark:c.bookmark,rows:[...o,...c.rows]};return await jbe(e,t,r,l)}a(jbe,"recursiveSearch");async function a0t(e,t,r,n){let i=n.limit;(i==null||isNaN(i)||i<0)&&(i=50),i=Math.min(i,Xf.maxLimit);let o=new Xf(e,t,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 s=await o.setBookmark(n.bookmark).setLimit(i).run();o.setBookmark(s.bookmark).setLimit(1),n.tableId&&o.setTable(n.tableId);let u=await o.run();return{...s,hasNextPage:u.rows&&u.rows.length>0}}a(a0t,"paginatedSearch");async function o0t(e,t,r,n){let i=n.limit;return(i==null||isNaN(i)||i<0)&&(i=1e3),n.limit=Math.min(i,1e3),{rows:await jbe(e,t,r,n)}}a(o0t,"fullSearch");var rz={};oe(rz,{createUserIndex:()=>s0t});async function s0t(){let e=Ar(),t;try{t=await e.get("_design/database")}catch(n){n.status===404&&(t={_id:"_design/database"})}let r=a(function(n){if(n._id&&!n._id.startsWith("us_"))return;let i=["_id","_rev","password","account","license","budibaseAccess","accountPortalAccess","csrfToken"];function o(s,u){for(let c of Object.keys(s)){if(i.includes(c))continue;let l=u!=null?`${u}.${c}`:c;typeof s[c]=="string"?index(l,s[c].toLowerCase(),{facet:!0}):typeof s[c]!="object"?index(l,s[c],{facet:!0}):o(s[c],l)}}a(o,"idx"),o(n)},"fn");t.indexes={user:{index:r.toString(),analyzer:{default:"keyword",name:"perfield"}}},await e.put(t)}a(s0t,"createUserIndex");function Mbe(e,t){let r=t.toString();if(typeof e=="object")return e.status===t||e.message?.includes(r);if(typeof e=="number")return e===t;if(typeof e=="string")return e.includes(r)}a(Mbe,"checkErrorCode");function u0t(e){return Mbe(e,409)}a(u0t,"isDocumentConflictError");var Dx={};oe(Dx,{addTenantToUrl:()=>c0t,getTenantDB:()=>nz,getTenantIDFromCtx:()=>Cx,isUserInAppTenant:()=>l0t});function nz(e){return Io(pg(e))}a(nz,"getTenantDB");function c0t(e){let t=Pt();if(Wd()){let r=e.indexOf("?")===-1?"?":"&";e+=`${r}tenantId=${t}`}return e}a(c0t,"addTenantToUrl");var l0t=a((e,t)=>{let r;return t?r=t.tenantId||pi:r=Pt(),(Hv(e)||pi)===r},"isUserInAppTenant"),f0t=Object.values(dS),Cx=a((e,t)=>{if(!Wd())return pi;t.allowNoTenant===void 0&&(t.allowNoTenant=!1),t.includeStrategies||(t.includeStrategies=f0t),t.excludeStrategies||(t.excludeStrategies=[]);let r=a(n=>{if(t.excludeStrategies?.includes(n))return!1;if(t.includeStrategies?.includes(n))return!0},"isAllowed");if(r("user")){let n=e.user?.tenantId;if(n)return n}if(r("header")){let n=e.request.headers["x-budibase-tenant-id"];if(n)return n}if(r("query")){let n=e.request.query.tenantId;if(n)return n}if(r("subdomain")){let n;try{n=new URL(D$()).host.split(":")[0]}catch(o){if(o.code!=="ERR_INVALID_URL")throw o}let i=e.host;if(n&&i.includes(n)){let o=i.substring(0,i.indexOf(`.${n}`));if(o)return o}}if(r("path")){let n=e.matched.find(s=>!!s.paramNames.find(u=>u.name==="tenantId")),i=e.originalUrl,o;if(i.includes("?")?o=i.split("?")[0]:o=i,n){let s=n.params(o,n.captures(o),{});if(s.tenantId)return s.tenantId}}t.allowNoTenant||e.throw(403,"Tenant id not set")},"getTenantIDFromCtx");var iz="app"+Me,Bbe="/app/",p0t="/builder",d0t=`${p0t}/workspace/`,h0t="/api/public/v";async function m0t(e){let r=`/${e.path.split("/")[2].toLowerCase()}`,n=Pt();!V.isDev()&&V.MULTI_TENANCY&&(n=Cx(e,{includeStrategies:["subdomain"]}));let o=(await Xo(n,()=>Rx({dev:!1}))).filter(s=>s.url&&s.url.toLowerCase()===r)[0];return o&&o.appId?o.appId:void 0}a(m0t,"resolveAppUrl");function g0t(e){return e.path.startsWith(`/${iz}`)?!0:e.path.startsWith(Bbe)}a(g0t,"isServingApp");function y0t(e){return e.path.startsWith(d0t)}a(y0t,"isServingBuilder");function b0t(e){return qbe(e.path)}a(b0t,"isServingBuilderPreview");function qbe(e){return new RegExp(/^\/app\/app_\w+\/preview$/).test(e)}a(qbe,"isBuilderPreviewUrl");function v0t(e){return e.path.startsWith(h0t)}a(v0t,"isPublicApiRequest");async function bg(e){let t;function r(u){return!u||!u.startsWith(iz)?t:(t&&t!==u&&e.throw("App id conflict",403),t??u)}a(r,"confirmAppId");let n=e.request.headers["x-budibase-app-id"]||[];typeof n=="string"&&(n=[n]);for(let u of n)t=r(u);e.request.body&&e.request.body.appId&&(t=r(e.request.body.appId));let i=w0t(e.path);i&&(t=r(i)),e.query?.appId&&(t=r(e.query?.appId));let o=qbe(e.path);return e.path.startsWith(Bbe)&&!o&&(t=r(await m0t(e))),t}a(bg,"getAppIdFromCtx");function w0t(e){if(e)return e.split("?")[0].split("/").find(t=>t.startsWith(iz))}a(w0t,"parseAppIdFromUrlPath");function S1(e){if(e)try{return _1.default.verify(e,V.JWT_SECRET)}catch(t){if(V.JWT_SECRET_FALLBACK)return _1.default.verify(e,V.JWT_SECRET_FALLBACK);throw t}}a(S1,"openJwt");function Px(e){return V.INTERNAL_API_KEY&&V.INTERNAL_API_KEY===e?!0:!!(V.INTERNAL_API_KEY_FALLBACK&&V.INTERNAL_API_KEY_FALLBACK===e)}a(Px,"isValidInternalAPIKey");function Zf(e,t){let r=e.cookies.get(t);if(r)return S1(r)}a(Zf,"getCookie");function $be(e,t,r="builder",n={sign:!0}){t&&n&&n.sign&&(t=_1.default.sign(t,V.JWT_SECRET));let i={expires:T4,path:"/",httpOnly:!1,overwrite:!0};V.COOKIE_DOMAIN&&(i.domain=V.COOKIE_DOMAIN),e.cookies.set(r,t,i)}a($be,"setCookie");function Hd(e,t){$be(e,null,t)}a(Hd,"clearCookie");function E0t(e){return e.headers["x-budibase-type"]==="client"}a(E0t,"isClient");function az(e){return new Promise(t=>setTimeout(t,e))}a(az,"timeout");function oz(e){return!!jb[e]}a(oz,"isAudited");function _0t(e){if(typeof e!="object")return!1;try{JSON.stringify(e)}catch(t){if(t instanceof Error&&t?.message.includes("circular structure"))return!0}return!1}a(_0t,"hasCircularStructure");function S0t(e){return!!e.match(/^.+:\/\/.+$/)}a(S0t,"urlHasProtocol");function sz(e){return e&&!!e.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,}))$/)}a(sz,"validEmail");var zbe=(o=>(o.MILLISECONDS="milliseconds",o.SECONDS="seconds",o.MINUTES="minutes",o.HOURS="hours",o.DAYS="days",o))(zbe||{}),x1={milliseconds:1,seconds:1e3,minutes:6e4,hours:36e5,days:864e5},mi=class e{constructor(t){this.ms=t}static{a(this,"Duration")}to(t){return this.ms/x1[t]}toMs(){return this.ms}toSeconds(){return this.to("seconds")}static convert(t,r,n){return n*x1[t]/x1[r]}static from(t,r){return new e(r*x1[t])}static fromSeconds(t){return e.from("seconds",t)}static fromMinutes(t){return e.from("minutes",t)}static fromHours(t){return e.from("hours",t)}static fromDays(t){return e.from("days",t)}static fromMilliseconds(t){return e.from("milliseconds",t)}};async function x0t(e){let t=performance.now();return[await e(),mi.fromMilliseconds(performance.now()-t)]}a(x0t,"time");function T0t(e){let t="",r=-1,n,i,o=e.opts?.repeat;return o&&(i=o.endDate?new Date(o.endDate).getTime():Date.now(),n=o.tz,"cron"in o?t=o.cron:r=o.every),{id:e.id.toString(),name:"",key:e.id.toString(),tz:n,endDate:i,cron:t,every:r,next:0}}a(T0t,"jobToJobInformation");var T1=class{static{a(this,"InMemoryQueue")}constructor(t,r){this._name=t,this._opts=r,this._messages=[],this._emitter=new Wbe.default.EventEmitter,this._runCount=0,this._addCount=0,this._queuedJobIds=new Set,this._attempts=r?.defaultJobOptions?.attempts||1}async process(t,r){r=typeof t=="number"?r:t,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,a((p,d)=>{p?l(p):c(d)},"done"))})}a(i,"execute");let o=this._attempts;async function s(c,l=0){try{return await c}catch(f){if(l++,l<o&&!n._isDiscarded)return await Ye.wait(100*l),await s(i(),l);throw f}}a(s,"retryFunc");try{let c=await s(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(t,r){if(typeof t=="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 t!="object")throw"Queue only supports carrying JSON.";i&&this._queuedJobIds.add(i);let o=kn(),s=a(()=>{let c={id:o,timestamp:Date.now(),queue:this,data:t,opts:n,discard:async()=>{c._isDiscarded=!0}};this._messages.push(c),this._messages.length>1e3&&this._messages.shift(),this._addCount++,this._emitter.emit("message",c)},"pushMessage"),u=n?.delay;return u?setTimeout(s,u):s(),{id:i,finished:()=>new Promise((c,l)=>{let f=a((d,h)=>{d.id===o&&(this._emitter.off("error",f),this._emitter.off("completed",p),l(h))},"errorHandler"),p=a((d,h)=>{d.id===o&&(this._emitter.off("error",f),this._emitter.off("completed",p),c(h))},"completedHandler");this._emitter.on("error",f),this._emitter.on("completed",p)})}}async close(){}async removeRepeatableByKey(t){for(let[r,n]of this._messages.entries())if(n.id===t){this._messages.splice(r,1),this._emitter.emit("removed",n);return}}async removeJobs(t){}async clean(){return[]}async getJob(t){for(let r of this._messages)if(r.id===t)return r;return null}manualTrigger(t){for(let r of this._messages)if(r.id===t){this._emitter.emit("message",{...r,manualTrigger:!0});return}throw new Error(`Job with id ${t} not found`)}on(t,r){return this._emitter.on(t,r),this}off(t,r){return this._emitter.off(t,r),this}async count(){return this._messages.length}async getCompletedCount(){return this._runCount}async getRepeatableJobs(){return this._messages.filter(t=>t.opts?.repeat!=null).map(t=>T0t(t))}async whenCurrentJobsFinished(){do await az(50);while(this.hasRunningJobs())}hasRunningJobs(){return this._addCount>this._runCount}},Gbe=T1;var cz=te(require("bull"));var Jv=(u=>(u.AUTOMATION="automationQueue",u.APP_BACKUP="appBackupQueue",u.AUDIT_LOG="auditLogQueue",u.SYSTEM_EVENT_QUEUE="systemEventQueue",u.APP_MIGRATION="appMigration",u.DOC_WRITETHROUGH_QUEUE="docWritethroughQueue",u.DEV_REVERT_PROCESSOR="devRevertProcessorQueue",u))(Jv||{});function Hbe(e,t,r){O0t(e,t),r&&A0t(e,r)}a(Hbe,"addListeners");function A0t(e,t){e.on("stalled",async r=>{if(t)await t(r);else if(r.opts.repeat){let n=r.id,i=await e.getRepeatableJobs();for(let o of i)o.id===n&&await e.removeRepeatableByKey(o.key);console.log(`jobId=${n} disabled`)}})}a(A0t,"handleStalled");function bu(e,t,r={},n={}){let i=`[BULL] ${e}=${t}`,o=r.error,s={_logKey:"bull",eventType:e,event:t,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,s,u]}a(bu,"getLogParams");var R0t={automationQueue:"automation-event",appBackupQueue:"app-backup-event",auditLogQueue:"audit-log-event",systemEventQueue:"system-event",appMigration:"app-migration",docWritethroughQueue:"doc-writethrough",devRevertProcessorQueue:"dev-revert-event"};function O0t(e,t){let r=R0t[t];function n(i,o){let s=i.data.event?.appId;if(s)return P$(s,o);o()}a(n,"doInJobContext"),e.on("stalled",async i=>{await n(i,()=>{console.error(...bu(r,"stalled",{job:i}))})}).on("error",i=>{console.error(...bu(r,"error",{error:i}))}),process.env.NODE_DEBUG?.includes("bull")&&e.on("waiting",i=>{console.info(...bu(r,"waiting",{jobId:i}))}).on("active",async i=>{await n(i,()=>{console.info(...bu(r,"active",{job:i}))})}).on("progress",async(i,o)=>{await n(i,()=>{console.info(...bu(r,"progress",{job:i},{progress:o}))})}).on("completed",async(i,o)=>{await n(i,()=>{console.info(...bu(r,"completed",{job:i},{result:o}))})}).on("failed",async(i,o)=>{await n(i,()=>{console.error(...bu(r,"failed",{job:i,error:o}))})}).on("paused",()=>{console.info(...bu(r,"paused"))}).on("resumed",()=>{console.info(...bu(r,"resumed"))}).on("cleaned",(i,o)=>{console.info(...bu(r,"cleaned",{},{length:i.length,type:o}))}).on("drained",()=>{console.info(...bu(r,"drained"))}).on("removed",i=>{console.info(...bu(r,"removed",{job:i}))})}a(O0t,"logging");var uz=[];function Vbe(e,t){let r=setInterval(e,t);return uz.push(r),r}a(Vbe,"set");function Kbe(e){let t=uz.indexOf(e);t!==-1&&uz.splice(t,1),clearInterval(e)}a(Kbe,"clear");var ep=te(require("dd-trace")),Nx=te(require("object-sizeof"));var I0t=mi.fromMinutes(5).toMs(),k0t=mi.fromSeconds(30).toMs(),lz=mi.fromSeconds(60).toMs(),Lx=[],A1;async function Ybe(){for(let e of Lx)await e.clean(lz,"completed"),await e.clean(lz,"failed")}a(Ybe,"cleanup");async function C0t(e,t,r){let n=performance.now();try{let i=await t();return ep.default.dogstatsd.increment(`${e}.success`,1,r),i}catch(i){throw ep.default.dogstatsd.increment(`${e}.error`,1,r),i}finally{let i=performance.now()-n;ep.default.dogstatsd.distribution(`${e}.duration.ms`,i,r),ep.default.dogstatsd.increment(e,1,r)}}a(C0t,"withMetrics");function Jbe(e){return{"job.opts.attempts":e.attempts,"job.opts.backoff":e.backoff,"job.opts.delay":e.delay,"job.opts.jobId":e.jobId,"job.opts.lifo":e.lifo,"job.opts.preventParsingData":e.preventParsingData,"job.opts.priority":e.priority,"job.opts.removeOnComplete":e.removeOnComplete,"job.opts.removeOnFail":e.removeOnFail,"job.opts.repeat":e.repeat,"job.opts.stackTraceLimit":e.stackTraceLimit,"job.opts.timeout":e.timeout}}a(Jbe,"jobOptsTags");function D0t(e){return{"job.id":e.id,"job.attemptsMade":e.attemptsMade,"job.timestamp":e.timestamp,"job.data.sizeBytes":(0,Nx.default)(e.data),...Jbe(e.opts||{})}}a(D0t,"jobTags");var Sc=class{static{a(this,"BudibaseQueue")}constructor(t,r={}){this.opts=r,this.jobQueue=t,this.queue=this.initQueue()}get name(){return this.queue.name}initQueue(){let r={redis:Hm(),settings:{maxStalledCount:this.opts.maxStalledCount?this.opts.maxStalledCount:0,lockDuration:I0t,lockRenewTime:k0t}};this.opts.jobOptions&&(r.defaultJobOptions=this.opts.jobOptions);let n;return V.isTest()?process.env.BULL_TEST_REDIS_PORT&&!isNaN(+process.env.BULL_TEST_REDIS_PORT)?n=new cz.default(this.jobQueue,{...r,redis:{host:"localhost",port:+process.env.BULL_TEST_REDIS_PORT}}):n=new Gbe(this.jobQueue,r):n=new cz.default(this.jobQueue,r),Hbe(n,this.jobQueue,this.opts.removeStalledCb),Lx.push(n),!A1&&!V.isTest()&&(A1=Vbe(Ybe,lz),Ybe().catch(i=>{console.error(`Unable to cleanup ${this.jobQueue} initially - ${i}`)})),n}getBullQueue(){return this.queue}process(...t){let r,n;t.length===2?(r=t[0],n=t[1]):n=t[0];let i=a(async(s,u)=>{await ep.default.trace("queue.process",async c=>{if(s.data._parentSpanContext){let l=s.data._parentSpanContext,f={traceId:l.traceId,spanId:l.spanId,toTraceId:()=>l.traceId,toSpanId:()=>l.spanId,toTraceparent:()=>""};c.addLink(f)}c.addTags({"queue.name":this.jobQueue,...D0t(s)}),this.opts.jobTags&&c.addTags(this.opts.jobTags(s.data)),ep.default.dogstatsd.distribution("queue.process.sizeBytes",(0,Nx.default)(s.data),this.metricTags()),await this.withMetrics("queue.process",()=>u?n(s,u):n(s))})},"processCallback"),o;return n.length===1?o=a(s=>i(s),"wrappedCb"):o=i,r?this.queue.process(r,o):this.queue.process(o)}async add(t,r){return await ep.default.trace("queue.add",async n=>(n.addTags({"queue.name":this.jobQueue,"job.data.sizeBytes":(0,Nx.default)(t),...Jbe(r||{})}),this.opts.jobTags&&n.addTags(this.opts.jobTags(t)),t._parentSpanContext={traceId:n.context().toTraceId(),spanId:n.context().toSpanId()},ep.default.dogstatsd.distribution("queue.add.sizeBytes",(0,Nx.default)(t),this.metricTags()),await this.withMetrics("queue.add",()=>this.queue.add(t,r))))}withMetrics(t,r){return C0t(t,r,this.metricTags())}metricTags(){return{queueName:this.jobQueue}}close(t){return this.queue.close(t)}whenCurrentJobsFinished(){return this.queue.whenCurrentJobsFinished()}};async function P0t(){A1&&Kbe(A1),console.log("Waiting for current queue jobs to finish...");for(let e of Lx)await e.whenCurrentJobsFinished();console.log("Closing queue Redis connections...");for(let e of Lx)await e.close();Lx=[],console.log("Queues shutdown")}a(P0t,"shutdown");var kt={};oe(kt,{correlation:()=>Fx,logAlert:()=>sy,logAlertWithInfo:()=>rVt,logWarn:()=>Zw,logger:()=>sL,system:()=>e7});var Fx={};oe(Fx,{getId:()=>pz,setHeader:()=>B0t});var eve=R1(),B0t=a(e=>{let t=eve.getId();t&&(e["x-budibase-correlation-id"]=t)},"setHeader");function pz(){return eve.getId()}a(pz,"getId");var oL=te(aEe()),GPe=te(sH()),t7=te(require("dd-trace")),HPe=require("dd-trace/ext");var e7={};oe(e7,{getLogReadStream:()=>YHt,getSingleFileMaxSizeInfo:()=>WPe,localFileDestination:()=>Z9});var nA=te(require("fs")),X9=te(require("path")),BPe=te(_Re());var gt={};oe(gt,{ObjectStore:()=>Ru,ObjectStoreBuckets:()=>Gzt,SIGNED_FILE_PREFIX:()=>zV,bucketTTLConfig:()=>IN,budibaseTempDir:()=>ty,client3rdPartyLibrary:()=>$Ht,clientLibraryCDNUrl:()=>zHt,clientLibraryPath:()=>kPe,clientLibraryUrl:()=>WHt,createBucketIfNotExists:()=>zT,deleteFile:()=>s8t,deleteFiles:()=>u8t,deleteFolder:()=>G1e,downloadTarball:()=>l8t,downloadTarballDirect:()=>c8t,enrichPWAImages:()=>GHt,enrichPluginURLs:()=>VHt,extractBucketAndPath:()=>UV,getAllFiles:()=>i8t,getAppFileUrl:()=>DPe,getClientCacheKey:()=>CPe,getGlobalFileS3Key:()=>PPe,getGlobalFileUrl:()=>HHt,getObjectMetadata:()=>f8t,getPluginIconKey:()=>FPe,getPluginJSKey:()=>LPe,getPluginS3Dir:()=>jPe,getPresignedUrl:()=>dh,getReadStream:()=>kN,listAllObjects:()=>WV,objectExists:()=>HV,processAutomationAttachment:()=>Vzt,processObjectStoreAttachment:()=>L1e,retrieve:()=>W1e,retrieveDirectory:()=>o8t,retrieveToTmp:()=>a8t,sanitizeBucket:()=>Po,sanitizeKey:()=>Mi,streamUpload:()=>z1e,upload:()=>n8t,uploadDirectory:()=>GV});var DN=require("@aws-sdk/client-s3"),jV=te($Ce()),$1e=require("@aws-sdk/s3-request-presigner");var ph=te(require("dd-trace")),qw=te(require("fs")),qT=te(require("fs/promises")),MV=te(require("node-fetch")),fh=require("path"),PN=te(require("stream")),$T=require("stream/promises"),BV=te(k1e()),qV=require("uuid"),$V=te(require("zlib"));var C1e=te(require("fs")),D1e=require("os"),BT=te(require("path")),P1e=te(require("stream"));var Gzt={BACKUPS:V.BACKUPS_BUCKET_NAME,APPS:V.APPS_BUCKET_NAME,TEMPLATES:V.TEMPLATES_BUCKET_NAME,GLOBAL:V.GLOBAL_BUCKET_NAME,PLUGINS:V.PLUGIN_BUCKET_NAME,TEMP:V.TEMP_BUCKET_NAME},N1e=(0,BT.join)((0,D1e.tmpdir)(),".budibase");try{C1e.default.mkdirSync(N1e)}catch(e){if(e.code!=="EEXIST")throw e}function ty(){return N1e}a(ty,"budibaseTempDir");var IN=a((e,t)=>{let n={Rules:[{ID:`${e}-ExpireAfter${t}days`,Prefix:"",Status:"Enabled",Expiration:{Days:t}}]};return{Bucket:e,LifecycleConfiguration:n}},"bucketTTLConfig");async function Hzt(e){let t=await fetch(e.url);if(!t.ok||!t.body)throw new Error(`Unexpected response ${t.statusText}`);let r=BT.default.basename(new URL(e.url).pathname);if(!t.body)throw new Error("No response received for attachment");return{filename:e.filename||r,content:P1e.default.Readable.fromWeb(t.body)}}a(Hzt,"processUrlAttachment");async function L1e(e){let t=UV(e.url);if(t===null)throw new Error("Invalid signed URL");let{bucket:r,path:n}=t,{stream:i}=await kN(r,n),o=BT.default.basename(n);return{bucket:r,path:n,filename:e.filename||o,content:i}}a(L1e,"processObjectStoreAttachment");async function Vzt(e){return e.url?.startsWith("http://")||e.url?.startsWith("https://")?await Hzt(e):await L1e(e)}a(Vzt,"processAutomationAttachment");var e8t=q1e(),t8t={bucketCreationPromises:{}},zV="/files/signed",lh={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"},r8t=[lh.html,lh.css,lh.js,lh.json];function Mi(e){return e8t(Po(e)).replace(/\\/g,"/")}a(Mi,"sanitizeKey");function Po(e){return e.replace(new RegExp(mc,"g"),hc)}a(Po,"sanitizeBucket");function Ru(e={presigning:!1}){let t={forcePathStyle:!0,credentials:{accessKeyId:V.MINIO_ACCESS_KEY,secretAccessKey:V.MINIO_SECRET_KEY},region:V.AWS_REGION};return!V.MINIO_ENABLED&&V.AWS_SESSION_TOKEN&&(t.credentials={accessKeyId:V.MINIO_ACCESS_KEY,secretAccessKey:V.MINIO_SECRET_KEY,sessionToken:V.AWS_SESSION_TOKEN}),V.MINIO_URL&&(e.presigning&&V.MINIO_ENABLED?t.endpoint="http://minio-service":t.endpoint=V.MINIO_URL),new DN.S3(t)}a(Ru,"ObjectStore");async function zT(e,t){t=Po(t);try{return await e.headBucket({Bucket:t}),{created:!1,exists:!0}}catch(r){let n=r.statusCode||r.$response?.statusCode,i=t8t.bucketCreationPromises,o=n===404,s=n===403;if(i[t])return await i[t],{created:!1,exists:!0};if(o||s){if(o)return i[t]=e.createBucket({Bucket:t}).catch(u=>{if(u.Code!=="BucketAlreadyOwnedByYou")throw u}),await i[t],delete i[t],{created:!0,exists:!1};throw new Error("Access denied to object store bucket."+r)}else throw new Error("Unable to write to object store bucket.")}}a(zT,"createBucketIfNotExists");async function n8t({bucket:e,filename:t,path:r,type:n,metadata:i,body:o,ttl:s}){let u=t.split(".").pop(),c=r?(await qT.default.open(r)).createReadStream():o,l=Ru(),f=await zT(l,e);if(s&&f.created){let g=IN(e,s);await l.putBucketLifecycleConfiguration(g)}let p=n,d=p||(u?lh[u.toLowerCase()]:lh.txt),h={Bucket:Po(e),Key:Mi(t),Body:c,ContentType:d};if(i&&typeof i=="object"){for(let g of Object.keys(i))(!i[g]||typeof i[g]!="string")&&delete i[g];h.Metadata=i}return new jV.Upload({client:l,params:h}).done()}a(n8t,"upload");async function z1e({bucket:e,stream:t,filename:r,type:n,extra:i,ttl:o}){return await ph.default.trace("streamUpload",async s=>{if(s.addTags({bucketName:e,filename:r,type:n,ttl:o}),!t)throw new Error("Stream to upload is invalid/undefined");let u=r.split(".").pop(),c=Ru(),l=await zT(c,e);if(s.addTags({bucketCreated:l.created,bucketExists:l.exists,extension:u}),o&&l.created){let b=IN(e,o);await c.putBucketLifecycleConfiguration(b)}let f=n;f||(f=u?lh[u.toLowerCase()]:lh.txt),s.addTags({contentType:f});let p=Po(e),d=Mi(r),h={Bucket:p,Key:d,Body:t,ContentType:f,...i},g=await new jV.Upload({client:c,params:h}).done(),y=await c.headObject({Bucket:p,Key:d});return s.addTags({contentLength:y.ContentLength}),{...g,ContentLength:y.ContentLength}})}a(z1e,"streamUpload");async function W1e(e,t){return await ph.default.trace("retrieve",async r=>{r.addTags({bucketName:e,filepath:t});let n=Ru(),i={Bucket:Po(e),Key:Mi(t)},o=await n.getObject(i);if(!o.Body)throw new Error("Unable to retrieve object");if(r.addTags({contentLength:o.ContentLength,contentType:o.ContentType}),r8t.includes(o.ContentType))return r.addTags({string:!0}),o.Body.transformToString();{r.addTags({string:!1});let s=o.Body.transformToWebStream();return PN.default.Readable.fromWeb(s)}})}a(W1e,"retrieve");async function*WV(e,t){let r=Ru(),n=a((s={})=>r.listObjectsV2({...s,Bucket:Po(e),Prefix:Mi(t)}),"list"),i=!1,o;do{let s={};o&&(s.ContinuationToken=o);let u=await n(s);if(u.Contents)for(let c of u.Contents)yield c;i=!!u.IsTruncated,o=u.NextContinuationToken}while(i&&o)}a(WV,"listAllObjects");async function i8t(e,t){let r={};return await $t.parallelForeach(WV(e,t),async n=>{if(!n.Key)throw new Error("file.Key must be defined");r[n.Key]=n},5),r}a(i8t,"getAllFiles");async function dh(e,t,r=3600){let n=Ru({presigning:!0}),i={Bucket:Po(e),Key:Mi(t)},o=await(0,$1e.getSignedUrl)(n,new DN.GetObjectCommand(i),{expiresIn:r});if(V.MINIO_ENABLED){let s=new URL(o),u=s.pathname,c=s.search;return`${zV}${u}${c}`}else return o}a(dh,"getPresignedUrl");async function a8t(e,t){return await ph.default.trace("retrieveToTmp",async r=>{r.addTags({bucketName:e,filepath:t}),e=Po(e),t=Mi(t);let n=await W1e(e,t),i=(0,fh.join)(ty(),(0,qV.v4)());return r.addTags({outputPath:i}),n instanceof PN.default.Readable?(r.addTags({stream:!0}),await(0,$T.pipeline)(n,qw.default.createWriteStream(i))):(r.addTags({stream:!1}),qw.default.writeFileSync(i,n)),i})}a(a8t,"retrieveToTmp");async function o8t(e,t,r){return await ph.default.trace("retrieveDirectory",async n=>{n.addTags({bucketName:e,path:t});let i=(0,fh.join)(ty(),(0,qV.v4)());await qT.default.mkdir(i,{recursive:!0});let o=0;return await $t.parallelForeach(WV(e,t),async s=>{let{Key:u}=s;!u||r?.some(c=>c.test(u))||(o++,await ph.default.trace("retrieveDirectory.object",async c=>{let l=s.Key;c.addTags({filename:l});let{stream:f}=await kN(e,l),p=l.split("/"),d=p.slice(0,p.length-1),h=(0,fh.join)(i,...d);p.length>1&&!qw.default.existsSync(h)&&await qT.default.mkdir(h,{recursive:!0}),await(0,$T.pipeline)(f,qw.default.createWriteStream((0,fh.join)(i,...p),{mode:420}))}))},5),n.addTags({numObjects:o}),i})}a(o8t,"retrieveDirectory");async function s8t(e,t){let r=Ru();await zT(r,e);let n={Bucket:e,Key:Mi(t)};return r.deleteObject(n)}a(s8t,"deleteFile");async function u8t(e,t){let r=Ru();await zT(r,e);let n={Bucket:e,Delete:{Objects:t.map(i=>({Key:Mi(i)}))}};return r.deleteObjects(n)}a(u8t,"deleteFiles");async function G1e(e,t){e=Po(e),t=Mi(t);let r=Ru(),n={Bucket:e,Prefix:t},i=await r.listObjects(n);if(i.Contents?.length===0)return;let o={Bucket:e,Delete:{Objects:[]}};if(i.Contents?.forEach(s=>{o.Delete.Objects.push({Key:s.Key})}),o.Delete.Objects.length&&(await r.deleteObjects(o)).Deleted?.length===1e3)return G1e(e,t)}a(G1e,"deleteFolder");async function GV(e,t,r){return await ph.default.trace("uploadDirectory",async n=>{n.addTags({bucketName:e,localPath:t,bucketPath:r}),e=Po(e);let i=await qT.default.readdir(t,{withFileTypes:!0});n.addTags({numFiles:i.length});for(let o of i){let s=Mi((0,fh.join)(r,o.name)),u=(0,fh.join)(t,o.name);o.isDirectory()?await GV(e,u,s):await z1e({bucket:e,filename:s,stream:qw.default.createReadStream(u)})}return i})}a(GV,"uploadDirectory");async function c8t(e,t,r={}){t=Mi(t);let n=await(0,MV.default)(e,{headers:r});if(!n.ok)throw new Error(`unexpected response ${n.statusText}`);await(0,$T.pipeline)(n.body,$V.default.createUnzip(),BV.default.extract(t))}a(c8t,"downloadTarballDirect");async function l8t(e,t,r){t=Po(t),r=Mi(r);let n=await(0,MV.default)(e);if(!n.ok)throw new Error(`unexpected response ${n.statusText}`);let i=(0,fh.join)(ty(),r);return await(0,$T.pipeline)(n.body,$V.default.createUnzip(),BV.default.extract(i)),!V.isTest()&&V.SELF_HOSTED&&await GV(t,i,r),i}a(l8t,"downloadTarball");async function kN(e,t){return await ph.default.trace("getReadStream",async r=>{e=Po(e),t=Mi(t),r.addTags({bucketName:e,path:t});let n=Ru(),i={Bucket:e,Key:t},o=await n.getObject(i);if(!o.Body||!(o.Body instanceof PN.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}})}a(kN,"getReadStream");async function f8t(e,t){e=Po(e),t=Mi(t);let r=Ru(),n={Bucket:e,Key:t};try{return await r.headObject(n)}catch{throw new Error("Unable to retrieve metadata from object")}}a(f8t,"getObjectMetadata");async function HV(e,t){e=Po(e),t=Mi(t);let r=Ru(),n={Bucket:e,Key:t};try{return await r.headObject(n),!0}catch(i){if((i.statusCode||i.$response?.statusCode)===404)return!1;throw i}}a(HV,"objectExists");function UV(e){let t=e.split("?")[0],r=new RegExp(`^${zV}/(?<bucket>[^/]+)/(?<path>.+)$`),n=t.match(r);if(n&&n.groups){let{bucket:i,path:o}=n.groups;return{bucket:i,path:o}}return null}a(UV,"extractBucketAndPath");var IPe=te(require("querystring"));var nL=te(require("crypto"));var gHt=te($9()),EPe=te(require("dd-trace"));var _Pe=require("lodash");var wPe;function SPe(e){let t=e.split(",").map(n=>n.split(":")),r=[];for(let[n,...i]of t)for(let o of i){let s=!0;o.startsWith("!")&&(o=o.slice(1),s=!1),r.push({tenantId:n,key:o,value:s})}return r}a(SPe,"parseEnvFlags");function yHt(){return SPe(V.TENANT_FEATURE_FLAGS||"")}a(yHt,"getEnvFlags");var z9=class{constructor(t){this.flagSchema=t;this.setId=nL.randomUUID()}static{a(this,"FlagSet")}defaults(){return(0,_Pe.cloneDeep)(this.flagSchema)}isFlagName(t){return this.flagSchema[t]!==void 0}async isEnabled(t){return(await this.fetch())[t]}async fetch(){return await EPe.default.trace("features.fetch",async t=>{let r=U$(this.setId);if(r)return t?.addTags({fromCache:!0}),r;let n={},i=this.defaults(),o=Pt(),s=new Set;if(h1())return i;for(let{tenantId:p,key:d,value:h}of yHt())if(!(!p||p!=="*"&&p!==o)&&(n.readFromEnvironmentVars=!0,h===!1&&s.add(d),!!this.isFlagName(d))){if(typeof i[d]!="boolean")throw new Error(`Feature: ${d} is not a boolean`);i[d]=h,n[`flags.${d}.source`]="environment"}let u=Mf(),c=u?._id;if(!c){let p=L$();p&&(c=nL.createHash("sha512").update(p).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,wPe&&c){n.readFromPostHog=!0;let p=await Jw(),d={tenantId:l},h={tenant:{id:l}};p.config.createdVersion&&(h.tenant.createdVersion=p.config.createdVersion),p.createdAt&&(h.tenant.createdAt=`${p.createdAt}`);let m=await wPe.getAllFlags(c,{personProperties:d,onlyEvaluateLocally:!0,groups:{tenant:l},groupProperties:h});for(let[g,y]of Object.entries(m))if(this.isFlagName(g)){if(typeof y!="boolean"){console.warn(`Invalid value for posthog flag "${g}": ${y}`);continue}if(!(i[g]===!0||s.has(g)))try{i[g]=y,n[`flags.${g}.source`]="posthog"}catch(b){console.warn(`Error parsing posthog flag "${g}": ${y}`,b)}}}let f=M$();for(let[p,d]of Object.entries(f))this.isFlagName(p)&&typeof d=="boolean"&&(i[p]=d,n[`flags.${p}.source`]="override");j$(this.setId,i);for(let[p,d]of Object.entries(i))n[`flags.${p}.value`]=d;return t?.addTags(n),i})}},bHt=new z9(ose);async function W9(e){return await bHt.isEnabled(e)}a(W9,"isEnabled");var OPe=te(RPe());var aL;function BHt(){if(!V.CLOUDFRONT_PRIVATE_KEY_64)throw new Error("CLOUDFRONT_PRIVATE_KEY_64 is not set");return aL||(aL=Buffer.from(V.CLOUDFRONT_PRIVATE_KEY_64,"base64").toString("utf-8"),aL)}a(BHt,"getPrivateKey");var qHt=a(()=>({keypairId:V.CLOUDFRONT_PUBLIC_KEY_ID,privateKeyString:BHt(),expireTime:new Date().getTime()+1e3*60*60*24}),"getCloudfrontSignParams"),Xw=a(e=>{let t=Y9(e);return OPe.getSignedUrl(t,qHt())},"getPresignedUrl"),Y9=a(e=>{let t="/";return e.startsWith("/")&&(t=""),`${V.CLOUDFRONT_CDN}${t}${e}`},"getUrl");async function kPe(e){let t=`${Mi(e)}/budibase-client.js`,r=`${Mi(e)}/budibase-client.new.js`;return await W9("USE_DYNAMIC_LOADING")&&await HV(V.APPS_BUCKET_NAME,r)?r:t}a(kPe,"clientLibraryPath");function $Ht(e,t){return`${Mi(e)}/_dependencies/${t}`}a($Ht,"client3rdPartyLibrary");async function zHt(e,t){let r=await kPe(e);return V.CLOUDFRONT_CDN?(t&&(r+=`?v=${t}`),Y9(r)):await dh(V.APPS_BUCKET_NAME,r)}a(zHt,"clientLibraryCDNUrl");async function WHt(e,t){return`/api/assets/client?${await CPe(e,t)}`}a(WHt,"clientLibraryUrl");async function CPe(e,t){let r,n;try{r=Pt()}finally{n={appId:e,version:t}}return r&&r!==pi&&(n.tenantId=r),n.dynamic=await W9("USE_DYNAMIC_LOADING"),IPe.default.encode(n)}a(CPe,"getClientCacheKey");async function DPe(e){return V.CLOUDFRONT_CDN?Xw(e):await dh(V.APPS_BUCKET_NAME,e)}a(DPe,"getAppFileUrl");async function GHt(e){if(e.length===0)return[];try{return await Promise.all(e.map(async t=>({...t,src:await DPe(t.src),type:t.type||"image/png"})))}catch(t){return console.error("Error enriching PWA images:",t),e}}a(GHt,"enrichPWAImages");var HHt=a(async(e,t,r)=>{let n=PPe(e,t);return V.CLOUDFRONT_CDN?(r&&(n=`${n}?etag=${r}`),Xw(n)):await dh(V.GLOBAL_BUCKET_NAME,n)},"getGlobalFileUrl"),PPe=a((e,t)=>{let r=`${e}/${t}`;return V.MULTI_TENANCY&&(r=`${Pt()}/${r}`),r},"getGlobalFileS3Key");async function VHt(e){return!e||!e.length?[]:await Promise.all(e.map(async t=>{let r=await KHt(t),n=await QHt(t);return{...t,jsUrl:r,iconUrl:n}}))}a(VHt,"enrichPluginURLs");async function KHt(e){let t=LPe(e);return NPe(t)}a(KHt,"getPluginJSUrl");async function QHt(e){let t=FPe(e);if(t)return NPe(t)}a(QHt,"getPluginIconUrl");async function NPe(e){return V.CLOUDFRONT_CDN?Xw(e):await dh(V.PLUGIN_BUCKET_NAME,e)}a(NPe,"getPluginUrl");function LPe(e){return UPe(e,"plugin.min.js")}a(LPe,"getPluginJSKey");function FPe(e){let t=e.iconUrl?"icon.svg":e.iconFileName;if(t)return UPe(e,t)}a(FPe,"getPluginIconKey");function UPe(e,t){return`${jPe(e.name)}/${t}`}a(UPe,"getPluginS3Key");function jPe(e){let t=`${e}`;return V.MULTI_TENANCY&&(t=`${Pt()}/${t}`),V.CLOUDFRONT_CDN&&(t=`plugins/${t}`),t}a(jPe,"getPluginS3Dir");var qPe="budibase.log",$Pe="budibase-logs-history.txt",zPe=X9.default.join(ty(),"systemlogs");function MPe(e){return X9.default.join(zPe,e)}a(MPe,"getFullPath");function WPe(e){let t=/(\d+)([A-Za-z])/,r=e?.match(t);if(!r){console.warn("totalMaxSize does not have a valid value",{totalMaxSize:e});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}}a(WPe,"getSingleFileMaxSizeInfo");function Z9(){let e=WPe(V.ROLLING_LOG_MAX_SIZE);return BPe.createStream(qPe,{size:e?.size,path:zPe,maxFiles:e?.totalHistoryFiles||1,immutable:!0,history:$Pe,initialRotation:!1})}a(Z9,"localFileDestination");function YHt(){let e=[],t=MPe($Pe);if(nA.default.existsSync(t)){let i=nA.default.readFileSync(t,"utf-8").split(`
535
- `);for(let o of i.filter(s=>s))e.push(nA.default.readFileSync(o))}return e.push(nA.default.readFileSync(MPe(qPe))),Buffer.concat(e.map(n=>new Uint8Array(n)))}a(YHt,"getLogReadStream");function JHt(e){return typeof e=="object"&&e!==null&&!(e instanceof Error)}a(JHt,"isPlainObject");function XHt(e){return e instanceof Error}a(XHt,"isError");function ZHt(e){return typeof e=="string"}a(ZHt,"isMessage");var _h;if(!V.DISABLE_PINO_LOGGER){let e=V.LOG_LEVEL,t={level:e,formatters:{level:c=>({level:c.toUpperCase()}),bindings:()=>V.SELF_HOSTED?{service:V.SERVICE_NAME}:{}},timestamp:()=>`,"timestamp":"${new Date(Date.now()).toISOString()}"`},r=[];r.push(V.isDev()?{stream:(0,GPe.default)({singleLine:!0}),level:e}:{stream:process.stdout,level:e}),V.SELF_HOSTED&&r.push({stream:Z9(),level:e}),_h=r.length?(0,oL.default)(t,oL.default.multistream(r)):(0,oL.default)(t);let n=a(c=>{let l,f=[],p="";c.forEach(y=>{ZHt(y)&&(p=`${p} ${y}`.trimStart()),JHt(y)&&f.push(y),XHt(y)&&(l=y)});let d=u(),h={};h={tenantId:i(),appId:o(),automationId:s(),identityId:d?._id,identityType:d?.type,correlationId:pz()};let m=t7.default.scope().active();m&&t7.default.inject(m.context(),HPe.formats.LOG,h);let g={err:l,pid:process.pid,...h};if(f.length){let y={},b=0;for(let v=0;v<f.length;v++){let w=f[v],x=w._logKey;x?(delete w._logKey,g[x]=w):(y[b]=w,b++)}Object.keys(y).length&&(g.data=y)}return[g,p]},"getLogParams");console.log=(...c)=>{let[l,f]=n(c);_h?.info(l,f)},console.info=(...c)=>{let[l,f]=n(c);_h?.info(l,f)},console.warn=(...c)=>{let[l,f]=n(c);_h?.warn(l,f)},console.error=(...c)=>{let[l,f]=n(c);_h?.error(l,f)},console.trace=(...c)=>{let[l,f]=n(c);l.err||(l.err=new Error),_h?.trace(l,f)},console.debug=(...c)=>{let[l,f]=n(c);_h?.debug(l,f)};let i=a(()=>{let c;try{c=Pt()}catch{}return c},"getTenantId"),o=a(()=>{let c;try{c=Zo()}catch{}return c},"getAppId"),s=a(()=>{let c;try{c=N$()}catch{}return c},"getAutomationId"),u=a(()=>{let c;try{c=Mf()}catch{}return c},"getIdentity")}var sL=_h;var eVt=["AccountError"];function tVt(e){return e&&e.suppressAlert}a(tVt,"isSuppressed");function sy(e,t){t&&eVt.includes(t.name)&&tVt(t)||console.error(`bb-alert: ${e}`,t)}a(sy,"logAlert");function rVt(e,t,r,n){e=`${e} - db: ${t} - doc: ${r} - error: `,sy(e,n)}a(rVt,"logAlertWithInfo");function Zw(e,t){console.warn(`bb-warn: ${e}`,t)}a(Zw,"logWarn");var uL=class extends Error{static{a(this,"UnretriableError")}constructor(t){super(t),this.name="PermanentError"}},r7=class{static{a(this,"QueuedProcessor")}constructor(t,r={}){let{maxAttempts:n=3,removeOnFail:i=!0,removeOnComplete:o=!0,maxStalledCount:s=3}=r;this.waitForCompletionMs=r.waitForCompletionMs||1e4,this._queue=new Sc(t,{maxStalledCount:s,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 uL&&await u.discard(),sy(`Failed to process job in ${this._queue.name}`,l),c?.(l)}})}async close(t){await this._queue.close(t)}async execute(t){try{let r=await this._queue.add(t);return{success:!0,result:await Ye.withTimeout(this.waitForCompletionMs,()=>r.finished())}}catch(r){if(r.errno!=="ETIME")throw r;return{success:!1,reason:"timeout"}}}};var nVt=100,cL,iA=class e{static{a(this,"DocWritethroughProcessor")}static get queue(){return e._queue||(e._queue=new Sc("docWritethroughQueue",{jobOptions:{attempts:nVt}})),e._queue}init(){return e.queue.process(async t=>{try{await this.persistToDb(t.data)}catch(r){throw r.status===409?new Error(`Conflict persisting message ${t.id}. Attempt ${t.attemptsMade}`):r}}),this}async persistToDb({dbName:t,docId:r,data:n}){if(r.startsWith("scimlog"))return;let i=Io(t),o;try{o=await i.get(r)}catch{o={_id:r}}o={...o,...n},await i.put(o)}},n7=class{static{a(this,"DocWritethrough")}constructor(t,r){this.db=t,this._docId=r}get docId(){return this._docId}async patch(t){await iA.queue.add({dbName:this.db.name,docId:this.docId,data:t})}};function VPe(){return cL=new iA().init(),cL}a(VPe,"init");function iVt(){return cL||VPe()}a(iVt,"getProcessor");var oA={};oe(oA,{CacheKey:()=>aa,TTL:()=>ly,bustCache:()=>eE,destroy:()=>aA,get:()=>fy,keys:()=>lL,store:()=>mp,withCache:()=>Sh,withCacheWithDynamicTTL:()=>KPe});function jl(e){let t=Pt();return`${e}:${t}`}a(jl,"generateTenantKey");var uy=class{static{a(this,"BaseCache")}constructor(t=void 0){this.client=t}async getClient(){return this.client?this.client:await z$()}async keys(t){return(await this.getClient()).keys(t)}async exists(t,r={useTenancy:!0}){return t=r.useTenancy?jl(t):t,(await this.getClient()).exists(t)}async scan(t,r={useTenancy:!0}){return t=r.useTenancy?jl(t):t,(await this.getClient()).scan(t)}async get(t,r={useTenancy:!0}){return t=r.useTenancy?jl(t):t,(await this.getClient()).get(t)}async bulkGet(t,r={useTenancy:!0}){return t=r.useTenancy?t.map(i=>jl(i)):t,(await this.getClient()).bulkGet(t)}async store(t,r,n=null,i={useTenancy:!0}){t=i.useTenancy?jl(t):t,await(await this.getClient()).store(t,r,n)}async bulkStore(t,r=null,n={useTenancy:!0}){n.useTenancy&&(t=Object.entries(t).reduce((o,[s,u])=>(o[jl(s)]=u,o),{})),await(await this.getClient()).bulkStore(t,r)}async delete(t,r={useTenancy:!0}){return t=r.useTenancy?jl(t):t,(await this.getClient()).delete(t)}async bulkDelete(t,r={useTenancy:!0}){return t=r.useTenancy?t.map(i=>jl(i)):t,(await this.getClient()).bulkDelete(t)}async withCache(t,r=null,n,i={useTenancy:!0}){let o=await this.get(t,i);if(o)return o;try{let s=await n();return await this.store(t,s,r,i),s}catch(s){throw console.error("Error fetching before cache - ",s),s}}async withCacheWithDynamicTTL(t,r,n={useTenancy:!0}){let i=await this.get(t,n);if(i)return i;try{let o=await r(),{value:s,ttl:u}=o;return await this.store(t,s,u,{useTenancy:n.useTenancy}),s}catch(o){throw console.error("Error fetching before cache - ",o),o}}async bustCache(t){let r=await this.getClient();try{await r.delete(jl(t))}catch(n){throw console.error("Error busting cache - ",n),n}}async deleteIfValue(t,r,n={useTenancy:!0}){t=n.useTenancy?jl(t):t,await(await this.getClient()).deleteIfValue(t,r)}};var cy=new uy,aa={CHECKLIST:"checklist",INSTALLATION:"installation",ANALYTICS_ENABLED:"analyticsEnabled",UNIQUE_TENANT_ID:"uniqueTenantId",EVENTS:"events",BACKFILL_METADATA:"backfillMetadata",EVENTS_RATE_LIMIT:"eventsRateLimit",OAUTH2_TOKEN:e=>`oauth2Token_${e}`},ly=(n=>(n[n.ONE_MINUTE=600]="ONE_MINUTE",n[n.ONE_HOUR=3600]="ONE_HOUR",n[n.ONE_DAY=86400]="ONE_DAY",n))(ly||{}),lL=a((...e)=>cy.keys(...e),"keys"),fy=a((...e)=>cy.get(...e),"get"),mp=a((...e)=>cy.store(...e),"store"),aA=a((...e)=>cy.delete(...e),"destroy"),Sh=a((...e)=>cy.withCache(...e),"withCache"),KPe=a((...e)=>cy.withCacheWithDynamicTTL(...e),"withCacheWithDynamicTTL"),eE=a((...e)=>cy.bustCache(...e),"bustCache");var o7={};oe(o7,{createCode:()=>oVt,deleteCode:()=>uVt,getCode:()=>sVt,getExistingInvites:()=>a7,getInviteCodes:()=>YPe,updateCode:()=>aVt});var QPe=mi.fromDays(7).toSeconds();async function aVt(e,t){await(await mg()).store(e,t,QPe)}a(aVt,"updateCode");async function oVt(e,t){let r=kn();return await(await mg()).store(r,{email:e,info:t},QPe),r}a(oVt,"createCode");async function sVt(e){let r=await(await mg()).get(e);if(!r)throw"Invitation is not valid or has expired, please request a new one.";return r}a(sVt,"getCode");async function uVt(e){await(await mg()).delete(e)}a(uVt,"deleteCode");async function YPe(){let r=(await(await mg()).scan()).map(i=>({...i.value,code:i.key}));if(!V.MULTI_TENANCY)return r;let n=Pt();return r.filter(i=>n===i.info.tenantId)}a(YPe,"getInviteCodes");async function a7(e){return(await YPe()).filter(t=>e.includes(t.email))}a(a7,"getExistingInvites");var s7={};oe(s7,{createCode:()=>lVt,getCode:()=>fVt,invalidateCode:()=>pVt});var cVt=mi.fromHours(1).toSeconds();async function lVt(e,t){let r=kn();return await(await xx()).store(r,{userId:e,info:t},cVt),r}a(lVt,"createCode");async function fVt(e){let r=await(await xx()).get(e);if(!r)throw new Error("Provided information is not valid, cannot reset password - please try again.");return r}a(fVt,"getCode");async function pVt(e){await(await xx()).delete(e)}a(pVt,"invalidateCode");var Rh={};oe(Rh,{getUser:()=>PA,getUsers:()=>FJt,invalidateUser:()=>NA});var Ml={};oe(Ml,{addSsoUser:()=>XPe,addUser:()=>bVt,getUserDoc:()=>JPe,lookupTenantId:()=>dVt,removeUser:()=>vVt,updateUserDoc:()=>hVt});function py(){return Io(bn.PLATFORM_INFO.name)}a(py,"getPlatformDB");async function dVt(e){return V.MULTI_TENANCY?(await JPe(e)).tenantId:pi}a(dVt,"lookupTenantId");async function JPe(e){return py().get(e)}a(JPe,"getUserDoc");async function hVt(e){await py().put(e)}a(hVt,"updateUserDoc");function mVt(e,t){return{_id:e,tenantId:t}}a(mVt,"newUserIdDoc");function gVt(e,t,r){return{_id:t,userId:e,tenantId:r}}a(gVt,"newUserEmailDoc");function yVt(e,t,r,n){return{_id:e,userId:r,email:t,tenantId:n}}a(yVt,"newUserSsoIdDoc");async function u7(e,t){let r=py(),n;try{await r.get(e)}catch(i){if(i.status===404)n=t(),await r.put(n);else throw i}}a(u7,"addUserDoc");async function XPe(e,t,r,n){return u7(e,()=>yVt(e,t,r,n))}a(XPe,"addSsoUser");async function bVt(e,t,r,n){let i=[u7(t,()=>mVt(t,e)),u7(r,()=>gVt(t,r,e))];n&&i.push(XPe(n,r,t,e)),await Promise.all(i)}a(bVt,"addUser");async function vVt(e){let t=py(),r=[e._id,e.email],n=await t.allDocs({keys:r,include_docs:!0});await t.bulkRemove(n.rows.map(i=>i.doc),{silenceErrors:!0})}a(vVt,"removeUser");var ZPe=te(require("node-fetch"));var sA=class{static{a(this,"API")}constructor(t){this.host=t}async apiCall(t,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";Fx.setHeader(n.headers);let o={method:t,body:i?JSON.stringify(n.body):n.body,headers:n.headers,credentials:"include"};return await(0,ZPe.default)(`${this.host}${r}`,o)}async post(t,r){return this.apiCall("POST",t,r)}async get(t,r){return this.apiCall("GET",t,r)}async patch(t,r){return this.apiCall("PATCH",t,r)}async del(t,r){return this.apiCall("DELETE",t,r)}async put(t,r){return this.apiCall("PUT",t,r)}};var eNe=new sA(V.INTERNAL_ACCOUNT_PORTAL_URL),tNe=V.SELF_HOSTED||V.DISABLE_ACCOUNT_PORTAL,dy=a(async e=>{if(tNe)return;let t={email:e},r=await eNe.post("/api/accounts/search",{body:t,headers:{"x-budibase-api-key":V.ACCOUNT_PORTAL_API_KEY}});if(r.status!==200)throw new Error(`Error getting account by email ${e}`);return(await r.json())[0]},"getAccount"),uA=a(async e=>{if(tNe)return;let t={tenantId:e},r=await eNe.post("/api/accounts/search",{body:t,headers:{"x-budibase-api-key":V.ACCOUNT_PORTAL_API_KEY}});if(r.status!==200)throw new Error(`Error getting account by tenantId ${e}`);return(await r.json())[0]},"getAccountByTenantId");var rr={};oe(rr,{UserDB:()=>$l,addAppBuilder:()=>DJt,bulkGetGlobalUsersById:()=>jL,bulkUpdateGlobalUsers:()=>CA,cleanseUserObject:()=>H7,creatorsInList:()=>gy,doesUserExist:()=>RJt,getAccountHolderFromUsers:()=>FL,getAllUserIds:()=>TJt,getAllUsers:()=>AJt,getById:()=>yy,getCreatorCount:()=>kJt,getExistingAccounts:()=>iE,getExistingPlatformUsers:()=>O2e,getExistingTenantUsers:()=>R2e,getFirstPlatformUser:()=>OA,getGlobalUserByAppPage:()=>B2e,getGlobalUserByEmail:()=>jc,getPlatformUsers:()=>DL,getUserCount:()=>IJt,hasAdminPermissions:()=>Th,hasAppBuilderPermissions:()=>C2e,hasBuilderPermissions:()=>ss,isAdmin:()=>ql,isAdminOrBuilder:()=>k2e,isAdminOrWorkspaceBuilder:()=>PL,isBuilder:()=>sE,isCreatorAsync:()=>IA,isCreatorSync:()=>NL,isGlobalBuilder:()=>I2e,paginatedUsers:()=>$2e,removeAppBuilder:()=>PJt,removePortalUserPermissions:()=>CJt,searchExistingEmails:()=>q7,searchGlobalUsersByApp:()=>ML,searchGlobalUsersByAppAccess:()=>G7,searchGlobalUsersByEmail:()=>q2e,validateUniqueUser:()=>LL});var Tt={};oe(Tt,{account:()=>e2e,action:()=>t2e,ai:()=>o2e,analytics:()=>pL,app:()=>r2e,auditLog:()=>E2e,auth:()=>OL,automation:()=>n2e,backfill:()=>g2e,backfillCache:()=>RL,backup:()=>v2e,datasource:()=>i2e,email:()=>a2e,environmentVariable:()=>w2e,group:()=>y2e,identification:()=>Uc,initAsyncEvents:()=>uJt,installation:()=>EA,layout:()=>u2e,license:()=>s2e,org:()=>c2e,plugin:()=>b2e,processors:()=>f7,publishEvent:()=>fe,query:()=>l2e,role:()=>RA,rowAction:()=>_2e,rows:()=>p2e,screen:()=>f2e,serve:()=>h2e,shutdown:()=>cJt,table:()=>d2e,user:()=>us,view:()=>m2e,workspace:()=>S2e});var f7={};oe(f7,{analyticsProcessor:()=>uNe,init:()=>IVt,processors:()=>gp});var pL={};oe(pL,{enabled:()=>fL});var fL=a(async()=>dL(),"enabled");var oNe=te($9());var wVt=a(e=>e==="served:builder"||e==="served:app:preview"||e==="served:app","isRateLimited"),EVt=a(e=>e==="served:app:preview"||e==="served:app","isPerApp");var nNe={"served:app":"calendarDay","served:app:preview":"calendarDay","served:builder":"calendarDay"},iNe=a(async e=>{if(!wVt(e))return!1;let t=await _Vt(e);if(t){let r=new Date(t.timestamp);switch(nNe[e]){case"calendarDay":return r.setDate(r.getDate()+1),r.setHours(0,0,0,0),Date.now()>r.getTime()?(await rNe(e,{timestamp:Date.now()}),!1):!0}}else return await rNe(e,{timestamp:Date.now()}),!1},"limited"),aNe=a(e=>{let t=`${aa.EVENTS_RATE_LIMIT}:${e}`;return EVt(e)&&(t=t+":"+Zo()),t},"eventKey"),_Vt=a(async e=>{let t=aNe(e);return await fy(t)},"readEvent"),rNe=a(async(e,t)=>{let r=aNe(e),n=nNe[e],i;switch(n){case"calendarDay":i=86400}await mp(r,t,i)},"recordEvent");var xVt=["user:updated","email:smtp:updated","auth:sso:updated","app:updated","role:updated","datasource:updated","query:updated","view:updated","view:calculation:updated","automation:trigger:updated","user_group:updated"],lA=class{static{a(this,"PosthogProcessor")}constructor(t){if(!t)throw new Error("Posthog token is not defined");this.posthog=new oNe.PostHog(t)}async processEvent(t,r,n,i){if(xVt.includes(t)||await iNe(t))return;n=this.clearPIIProperties(n),n.version=V.VERSION,n.service=V.SERVICE,n.environment=r.environment,n.hosting=r.hosting;let o=Zo();o&&(n.appId=o);let s={distinctId:r.id,event:t,properties:n};i&&(s.timestamp=new Date(i)),(r.installationId||r.tenantId)&&(s.groups={},r.installationId&&(s.groups.installation=r.installationId,s.properties.installationId=r.installationId),r.tenantId&&(s.groups.tenant=r.tenantId,s.properties.tenantId=r.tenantId)),this.posthog.capture(s)}clearPIIProperties(t){return t.email&&delete t.email,t.audited&&delete t.audited,t}async identify(t,r){let n={distinctId:t.id,properties:t};r&&(n.timestamp=new Date(r)),this.posthog.identify(n)}async identifyGroup(t,r){let n={distinctId:t.id,groupType:t.type,groupKey:t.id,properties:t};r&&(n.timestamp=new Date(r)),this.posthog.groupIdentify(n)}async shutdown(){await this.posthog.shutdown()}};var sNe=lA;var TVt=["installation:version:upgraded","installation:version:downgraded"],AVt=["installation","tenant"],fA=class{static{a(this,"AnalyticsProcessor")}constructor(){V.POSTHOG_TOKEN&&!V.isTest()&&(this.posthog=new sNe(V.POSTHOG_TOKEN))}async processEvent(t,r,n,i){!TVt.includes(t)&&!await fL()||this.posthog&&await this.posthog.processEvent(t,r,n,i)}async identify(t,r){!AVt.includes(t.type)&&!await fL()||this.posthog&&await this.posthog.identify(t,r)}async identifyGroup(t,r){this.posthog&&await this.posthog.identifyGroup(t,r)}async shutdown(){this.posthog&&await this.posthog.shutdown()}};var l7=V.SELF_HOSTED&&!V.isDev(),pA=class{static{a(this,"LoggingProcessor")}async processEvent(t,r,n){l7||console.log(`[audit] [identityType=${r.type}] ${t}`,n)}async identify(t){l7||console.log("[audit] identified",t)}async identifyGroup(t){l7||console.log("[audit] group identified",t)}async shutdown(){}};var tE=class e{static{a(this,"AuditLogsProcessor")}static{this.auditLogsEnabled=!1}static init(t){e.auditLogsEnabled=!0;let r=t;return e.auditLogQueue=new Sc("auditLogQueue",{jobTags:n=>({"event.name":n.event})}),e.auditLogQueue.process(async n=>{await Xo(n.data.tenantId,async()=>{let i=n.data.properties;i.audited&&(i={...i,...i.audited},delete i.audited);let o={};V.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(t,r,n,i){if(e.auditLogsEnabled&&oz(t)){let o=r.type==="user"?r.id:void 0;await e.auditLogQueue.add({event:t,properties:n,opts:{userId:o,timestamp:i,appId:Zo(),hostInfo:r.hostInfo},tenantId:Pt()})}}async identify(){}async identifyGroup(){}async shutdown(){await e.auditLogQueue?.close()}};var dA=class{constructor(t){this.initialised=!1;this.processors=[];this.processors=t}static{a(this,"Processor")}async processEvent(t,r,n,i){for(let o of this.processors)await o.processEvent(t,r,n,i)}async identify(t,r){for(let n of this.processors)n.identify&&await n.identify(t,r)}async identifyGroup(t,r){for(let n of this.processors)n.identifyGroup&&await n.identifyGroup(t,r)}async shutdown(){for(let t of this.processors)t.shutdown&&await t.shutdown()}};var uNe=new fA,RVt=new pA,OVt=new tE;function IVt(e){return tE.init(e)}a(IVt,"init");var gp=new dA([uNe,RVt,OVt]);var xh={};oe(xh,{checkInstallVersion:()=>RKt,getInstall:()=>_A,getInstallFromDB:()=>D7});var C7=te(k7());var _A=a(async()=>Sh(aa.INSTALLATION,86400,D7,{useTenancy:!1}),"getInstall");async function TKt(e){let t={_id:bn.PLATFORM_INFO.docs.install,installId:kn(),version:V.VERSION};try{let r=await e.put(t);return t._rev=r.rev,t}catch(r){if(r.status===409)return D7();throw r}}a(TKt,"createInstallDoc");var D7=a(async()=>Fs(bn.PLATFORM_INFO.name,async e=>{let t;try{t=await e.get(bn.PLATFORM_INFO.docs.install)}catch(r){if(r.status===404)t=await TKt(e);else throw r}return t}),"getInstallFromDB"),AKt=a(async e=>{try{await Fs(bn.PLATFORM_INFO.name,async t=>{let r=await _A();r.version=e,await t.put(r),await eE(aa.INSTALLATION)})}catch(t){if(t.status===409)return!1;throw t}return!0},"updateVersion"),RKt=a(async()=>{let e=await _A(),t=e.version,r=V.VERSION;try{if(t!==r){let n=C7.default.gt(r,t),i=C7.default.lt(r,t);await AKt(r)&&(await h0({_id:e.installId,type:"installation"},async()=>{n?await EA.upgraded(t,r):i&&await EA.downgraded(t,r)}),await Uc.identifyInstallationGroup(e.installId))}}catch(n){n?.message?.includes("Invalid Version")?sy(`Invalid version "${r}" - is it semver?`):sy("Failed to retrieve version",n)}},"checkInstallVersion");var OKt=a(async()=>{let e=N4(),t=TA(),r;if(e?r=e.type:r="tenant",r==="installation"){let n=await my(),i=SA();return{id:JLe(n,r),hosting:i,type:r,installationId:n,environment:t}}else if(r==="tenant"){let n=await my(),i=await AL(Pt()),o=SA();return{id:JLe(i,r),type:r,hosting:o,installationId:n,tenantId:i,realTenantId:Pt(),environment:t}}else if(r==="user"){let n=e,i=await AL(Pt()),o=await my(),s=n.account,u;return s?u=s.hosting:u=SA(),{id:n._id,type:r,hosting:u,installationId:o,tenantId:i,environment:t,realTenantId:Pt(),hostInfo:n.hostInfo}}else throw new Error("Unknown identity type")},"getCurrentIdentity"),IKt=a(async(e,t)=>{let r=e,n="installation",i=SA(),o=V.VERSION,s=TA(),u={id:r,type:n,hosting:i,version:o,environment:s};await N7(u,t),await xA({...u,id:`$${n}_${r}`},t)},"identifyInstallationGroup"),kKt=a(async(e,t,r,n=V.VERSION)=>{let i=await AL(e),o="tenant",s=await my(),u=TA(),c={id:i,type:o,hosting:t,environment:u,installationId:s,createdAt:r,createdVersion:n};await N7(c,r),await xA({...c,id:`$${o}_${i}`},r)},"identifyTenantGroup"),CKt=a(async(e,t,r)=>{let n=e._id,i=await AL(e.tenantId),o="user",s=ss(e),u=Th(e),c;Bb(e)&&(c=e.providerType);let f=(await iE([e.email])).length>0,p=!!t&&f&&t.verified,d=await my(),h=t?t.hosting:SA(),m=TA();await xA({id:n,type:o,hosting:h,installationId:d,tenantId:i,verified:p,accountHolder:f,providerType:c,builder:s,admin:u,environment:m},r)},"identifyUser"),DKt=a(async e=>{let t=e.accountId,r=e.tenantId,n="user",i=rk(e)?e.providerType:void 0,o=e.verified,s=!0,u=e.hosting,c=await my(),l=TA();if(tk(e)){let p=await jc(e.email);p?._id&&(t=p._id)}await xA({id:t,type:n,hosting:u,installationId:c,tenantId:r,providerType:i,verified:o,accountHolder:s,environment:l})},"identifyAccount"),xA=a(async(e,t)=>{await gp.identify(e,t)},"identify"),N7=a(async(e,t)=>{await gp.identifyGroup(e,t)},"identifyGroup"),TA=a(()=>V.isDev()?"development":V.DEPLOYMENT_ENVIRONMENT,"getDeploymentEnvironment"),SA=a(()=>V.SELF_HOSTED?"self":"cloud","getHostingFromEnv"),my=a(async()=>PKt()?"account-portal":(await _A()).installId,"getInstallationId"),AL=a(async e=>V.SELF_HOSTED?XLe(e):e,"getEventTenantId"),XLe=a(async e=>Xo(e,()=>Sh(aa.UNIQUE_TENANT_ID,86400,async()=>{let t=Ar(),r=await Jw(),n;return r.config.uniqueTenantId?r.config.uniqueTenantId:(n=`${kn()}_${e}`,r.config.uniqueTenantId=n,r.config.createdVersion=V.VERSION,await t.put(r),n)})),"getUniqueTenantId"),PKt=a(()=>V.SERVICE==="account-portal","isAccountPortal"),JLe=a((e,t)=>t==="installation"||t==="tenant"?`$${t}_${e}`:e,"formatDistinctId"),Uc={getCurrentIdentity:OKt,identifyInstallationGroup:IKt,identifyTenantGroup:kKt,identifyUser:CKt,identifyAccount:DKt,identify:xA,identifyGroup:N7,getInstallationId:my,getUniqueTenantId:XLe};var RL={};oe(RL,{end:()=>LKt,isAlreadySent:()=>U7,isBackfillingEvent:()=>F7,recordEvent:()=>L7,start:()=>NKt});var NKt=a(async e=>UKt({eventWhitelist:e}),"start"),L7=a(async(e,t)=>{let r=j7(e,t);await mp(r,t,void 0,{useTenancy:!1})},"recordEvent"),LKt=a(async()=>{await jKt(),await MKt()},"end"),FKt=a(async()=>fy(aa.BACKFILL_METADATA),"getBackfillMetadata"),UKt=a(async e=>mp(aa.BACKFILL_METADATA,e),"saveBackfillMetadata"),jKt=a(async()=>{await aA(aa.BACKFILL_METADATA)},"deleteBackfillMetadata"),MKt=a(async()=>{let e=j7(),t=await lL(e);for(let r of t)await aA(r,{useTenancy:!1})},"clearEvents"),F7=a(async e=>{let r=(await FKt())?.eventWhitelist;return!!(r&&r.includes(e))},"isBackfillingEvent"),U7=a(async(e,t)=>{let r=j7(e,t);return!!await fy(r,{useTenancy:!1})},"isAlreadySent"),BKt={"automation:created":e=>e.automationId,"automation:step:created":e=>e.stepId,"datasource:created":e=>e.datasourceId,"layout:created":e=>e.layoutId,"query:created":e=>e.queryId,"role:created":e=>e.roleId,"screen:created":e=>e.screenId,"table:created":e=>e.tableId,"view:created":e=>e.tableId,"view:calculation:created":e=>e.tableId,"view:filter:created":e=>e.tableId,"app:created":e=>e.appId,"app:published":e=>e.appId,"auth:sso:created":e=>e.type,"auth:sso:activated":e=>e.type,"user:created":e=>e.userId,"user:admin:assigned":e=>e.userId,"user:builder:assigned":e=>e.userId,"role:assigned":e=>`${e.roleId}-${e.userId}`},j7=a((e,t)=>{let r,n=Pt();if(e){r=`${aa.EVENTS}:${n}:${e}`;let i=BKt[e],o=i?i(t):void 0;o&&(r=`${r}:${o}`)}else r=`${aa.EVENTS}:${n}:*`;return r},"getEventKey");var AA;function M7(){AA=new Sc("systemEventQueue",{jobTags:e=>({"event.name":e.event})})}a(M7,"init");async function ZLe(e){AA||M7();let{event:t,identity:r}=e;Joe.indexOf(t)!==-1&&r.tenantId&&await AA.add(e)}a(ZLe,"publishAsyncEvent");var fe=a(async(e,t,r,n)=>{let i=n||await Uc.getCurrentIdentity();if(!(n?!1:await F7(e))){await ZLe({event:e,identity:i,properties:t,timestamp:r}),await gp.processEvent(e,i,t,r);return}await U7(e,t)||(await gp.processEvent(e,i,t,r),await L7(e,t))},"publishEvent");async function qKt(e,t){let r={tenantId:e.tenantId};await fe("account:created",r,void 0,t)}a(qKt,"created");async function $Kt(e){let t={tenantId:e.tenantId};await fe("account:deleted",t)}a($Kt,"deleted");async function zKt(e){let t={tenantId:e.tenantId};await fe("account:verified",t)}a(zKt,"verified");var e2e={created:qKt,deleted:$Kt,verified:zKt};async function WKt(e,t){await fe("action:automation_step:executed",e,t)}a(WKt,"automationStepExecuted");async function GKt(e,t){await fe("action:crud:executed",e,t)}a(GKt,"crudExecuted");async function HKt(e,t){await fe("action:ai_agent:executed",e,t)}a(HKt,"aiAgentExecuted");var t2e={aiAgentExecuted:HKt,automationStepExecuted:WKt,crudExecuted:GKt};var VKt=a(async(e,t)=>{let r={appId:e.appId,version:e.version,audited:{name:e.name}};await fe("app:created",r,t)},"created");async function KKt(e){let t={appId:e.appId,version:e.version,audited:{name:e.name}};await fe("app:updated",t)}a(KKt,"updated");async function QKt(e){let t={appId:e.appId,audited:{name:e.name}};await fe("app:deleted",t)}a(QKt,"deleted");async function YKt(e,t){let r={appId:e.appId,audited:{name:e.name}};await fe("app:published",r,t)}a(YKt,"published");async function JKt(e){let t={appId:e.appId,audited:{name:e.name}};await fe("app:unpublished",t)}a(JKt,"unpublished");async function XKt(e){let t={appId:e.appId,audited:{name:e.name}};await fe("app:file:imported",t)}a(XKt,"fileImported");async function ZKt(e,t){let r={duplicateAppId:t,appId:e.appId,audited:{name:e.name}};await fe("app:duplicated",r)}a(ZKt,"duplicated");async function eQt(e,t){let r={appId:e.appId,templateKey:t,audited:{name:e.name}};await fe("app:template:imported",r)}a(eQt,"templateImported");async function tQt(e,t,r){let n={appId:e.appId,currentVersion:t,updatedToVersion:r,audited:{name:e.name}};await fe("app:version:updated",n)}a(tQt,"versionUpdated");async function rQt(e,t,r){let n={appId:e.appId,currentVersion:t,revertedToVersion:r,audited:{name:e.name}};await fe("app:version:reverted",n)}a(rQt,"versionReverted");async function nQt(e){let t={appId:e.appId,audited:{name:e.name}};await fe("app:reverted",t)}a(nQt,"reverted");async function iQt(e){let t={appId:e.appId,audited:{name:e.name}};await fe("app:exported",t)}a(iQt,"exported");var r2e={created:VKt,updated:KKt,deleted:QKt,published:YKt,unpublished:JKt,fileImported:XKt,duplicated:ZKt,templateImported:eQt,versionUpdated:tQt,versionReverted:rQt,reverted:nQt,exported:iQt};async function aQt(e,t){let n={userId:(await Uc.getCurrentIdentity()).id,source:e,audited:{email:t}};await fe("auth:login",n)}a(aQt,"login");async function oQt(e){let r={userId:(await Uc.getCurrentIdentity()).id,audited:{email:e}};await fe("auth:logout",r)}a(oQt,"logout");async function sQt(e,t){let r={type:e};await fe("auth:sso:created",r,t)}a(sQt,"SSOCreated");async function uQt(e){let t={type:e};await fe("auth:sso:updated",t)}a(uQt,"SSOUpdated");async function cQt(e,t){let r={type:e};await fe("auth:sso:activated",r,t)}a(cQt,"SSOActivated");async function lQt(e){let t={type:e};await fe("auth:sso:deactivated",t)}a(lQt,"SSODeactivated");var OL={login:aQt,logout:oQt,SSOCreated:sQt,SSOUpdated:uQt,SSOActivated:cQt,SSODeactivated:lQt};async function fQt(e,t){let r={appId:e.appId,automationId:e._id,triggerId:e.definition?.trigger?.id,triggerType:e.definition?.trigger?.stepId,audited:{name:e.name}};await fe("automation:created",r,t)}a(fQt,"created");async function pQt(e){let t={appId:e.appId,automationId:e._id,triggerId:e.definition?.trigger?.id,triggerType:e.definition?.trigger?.stepId};await fe("automation:trigger:updated",t)}a(pQt,"triggerUpdated");async function dQt(e){let t={appId:e.appId,automationId:e._id,triggerId:e.definition?.trigger?.id,triggerType:e.definition?.trigger?.stepId,audited:{name:e.name}};await fe("automation:deleted",t)}a(dQt,"deleted");async function hQt(e){let t={appId:e.appId,automationId:e._id,triggerId:e.definition?.trigger?.id,triggerType:e.definition?.trigger?.stepId};await fe("automation:tested",t)}a(hQt,"tested");var mQt=a(async(e,t)=>{let r={count:e};await fe("automations:run",r,t)},"run");async function gQt(e,t,r){let n={appId:e.appId,automationId:e._id,triggerId:e.definition?.trigger?.id,triggerType:e.definition?.trigger?.stepId,stepId:t.id,stepType:t.stepId,audited:{name:e.name}};await fe("automation:step:created",n,r)}a(gQt,"stepCreated");async function yQt(e,t){let r={appId:e.appId,automationId:e._id,triggerId:e.definition?.trigger?.id,triggerType:e.definition?.trigger?.stepId,stepId:t.id,stepType:t.stepId,audited:{name:e.name}};await fe("automation:step:deleted",r)}a(yQt,"stepDeleted");var n2e={created:fQt,triggerUpdated:pQt,deleted:dQt,tested:hQt,run:mQt,stepCreated:gQt,stepDeleted:yQt};function B7(e){return!Object.values(Ya).includes(e.source)}a(B7,"isCustom");async function bQt(e,t){let r={datasourceId:e._id,source:e.source,custom:B7(e)};await fe("datasource:created",r,t)}a(bQt,"created");async function vQt(e){let t={datasourceId:e._id,source:e.source,custom:B7(e)};await fe("datasource:updated",t)}a(vQt,"updated");async function wQt(e){let t={datasourceId:e._id,source:e.source,custom:B7(e)};await fe("datasource:deleted",t)}a(wQt,"deleted");var i2e={created:bQt,updated:vQt,deleted:wQt};async function EQt(e){let t={};await fe("email:smtp:created",t,e)}a(EQt,"SMTPCreated");async function _Qt(){let e={};await fe("email:smtp:updated",e)}a(_Qt,"SMTPUpdated");var a2e={SMTPCreated:EQt,SMTPUpdated:_Qt};async function SQt(e){let t={};await fe("ai:config:created",t,e)}a(SQt,"AIConfigCreated");async function xQt(){let e={};await fe("ai:config:updated",e)}a(xQt,"AIConfigUpdated");var o2e={AIConfigCreated:SQt,AIConfigUpdated:xQt};async function TQt(e,t){let r={accountId:e.accountId,...t};await fe("license:plan:changed",r)}a(TQt,"planChanged");async function AQt(e){let t={accountId:e.accountId};await fe("license:activated",t)}a(AQt,"activated");async function RQt(e){let t={accountId:e.accountId};await fe("license:checkout:opened",t)}a(RQt,"checkoutOpened");async function OQt(e){let t={accountId:e.accountId};await fe("license:checkout:success",t)}a(OQt,"checkoutSuccess");async function IQt(e){let t={accountId:e.accountId};await fe("license:portal:opened",t)}a(IQt,"portalOpened");async function kQt(e){let t={accountId:e.accountId};await fe("license:payment:failed",t)}a(kQt,"paymentFailed");async function CQt(e){let t={accountId:e.accountId};await fe("license:payment:recovered",t)}a(CQt,"paymentRecovered");var s2e={planChanged:TQt,activated:AQt,checkoutOpened:RQt,checkoutSuccess:OQt,portalOpened:IQt,paymentFailed:kQt,paymentRecovered:CQt};async function DQt(e,t){let r={layoutId:e._id};await fe("layout:created",r,t)}a(DQt,"created");async function PQt(e){let t={layoutId:e};await fe("layout:deleted",t)}a(PQt,"deleted");var u2e={created:DQt,deleted:PQt};async function NQt(e){let t={};await fe("org:info:name:updated",t,e)}a(NQt,"nameUpdated");async function LQt(e){let t={};await fe("org:info:logo:updated",t,e)}a(LQt,"logoUpdated");async function FQt(e){let t={};await fe("org:platformurl:updated",t,e)}a(FQt,"platformURLUpdated");async function UQt(){let e={};await fe("analytics:opt:out",e)}a(UQt,"analyticsOptOut");async function jQt(){let e={};await fe("analytics:opt:out",e)}a(jQt,"analyticsOptIn");var c2e={nameUpdated:NQt,logoUpdated:LQt,platformURLUpdated:FQt,analyticsOptOut:UQt,analyticsOptIn:jQt};var MQt=a(async(e,t,r)=>{let n={queryId:t._id,datasourceId:e._id,source:e.source,queryVerb:t.queryVerb};await fe("query:created",n,r)},"created"),BQt=a(async(e,t)=>{let r={queryId:t._id,datasourceId:e._id,source:e.source,queryVerb:t.queryVerb};await fe("query:updated",r)},"updated"),qQt=a(async(e,t,r)=>{let n={queryId:t._id,datasourceId:e._id,source:e.source,queryVerb:t.queryVerb,appId:r};await fe("query:deleted",n)},"deleted"),$Qt=a(async(e,t,r)=>{let n={datasourceId:e._id,source:e.source,count:r,importSource:t};await fe("query:import",n)},"imported"),zQt=a(async(e,t)=>{let r={count:e};await fe("queries:run",r,t)},"run"),WQt=a(async(e,t)=>{let r={queryId:t.queryId,datasourceId:e._id,source:e.source,queryVerb:t.queryVerb};await fe("query:previewed",r)},"previewed"),l2e={created:MQt,updated:BQt,deleted:qQt,imported:$Qt,run:zQt,previewed:WQt};async function GQt(e,t){let r={roleId:e._id,permissionId:e.permissionId,inherits:e.inherits};await fe("role:created",r,t)}a(GQt,"created");async function HQt(e){let t={roleId:e._id,permissionId:e.permissionId,inherits:e.inherits};await fe("role:updated",t)}a(HQt,"updated");async function VQt(e){let t={roleId:e._id,permissionId:e.permissionId,inherits:e.inherits};await fe("role:deleted",t)}a(VQt,"deleted");async function KQt(e,t,r){let n={userId:e._id,roleId:t};await fe("role:assigned",n,r)}a(KQt,"assigned");async function QQt(e,t){let r={userId:e._id,roleId:t};await fe("role:unassigned",r)}a(QQt,"unassigned");var RA={created:GQt,updated:HQt,deleted:VQt,assigned:KQt,unassigned:QQt};async function YQt(e,t){let r={layoutId:e.layoutId,screenId:e._id,roleId:e.routing.roleId,audited:{name:e.routing?.route}};await fe("screen:created",r,t)}a(YQt,"created");async function JQt(e){let t={layoutId:e.layoutId,screenId:e._id,roleId:e.routing.roleId,audited:{name:e.routing?.route}};await fe("screen:deleted",t)}a(JQt,"deleted");var f2e={created:YQt,deleted:JQt};var XQt=a(async(e,t)=>{let r={count:e};await fe("rows:created",r,t)},"created"),ZQt=a(async(e,t)=>{let r={tableId:e._id,count:t};await fe("rows:imported",r)},"imported"),p2e={created:XQt,imported:ZQt};async function eYt(e,t){let r={tableId:e._id,audited:{name:e.name}};await fe("table:created",r,t)}a(eYt,"created");async function tYt(e,t){let r,n;for(let o in t.schema)if(!e.schema[o]){let s=t.schema[o];"default"in s&&s.default!=null&&(r=!0),s.type==="ai"&&(n=s.operation)}let i={tableId:t._id,defaultValues:r,aiColumn:n,audited:{name:t.name}};(r||n)&&await fe("table:updated",i)}a(tYt,"updated");async function rYt(e,t){let r={tableId:e._id,audited:{name:e.name},appId:t};await fe("table:deleted",r)}a(rYt,"deleted");async function nYt(e,t){let r={tableId:e._id,format:t,audited:{name:e.name}};await fe("table:exported",r)}a(nYt,"exported");async function iYt(e){let t={tableId:e._id,audited:{name:e.name}};await fe("table:imported",t)}a(iYt,"imported");var d2e={created:eYt,updated:tYt,deleted:rYt,exported:nYt,imported:iYt};async function aYt(e){let t={timezone:e};await fe("served:builder",t)}a(aYt,"servedBuilder");async function oYt(e,t,r){let n={appVersion:e.version,timezone:t,embed:r===!0};await fe("served:app",n)}a(oYt,"servedApp");async function sYt(e,t){let r={appId:e.appId,appVersion:e.version,timezone:t};await fe("served:app:preview",r)}a(sYt,"servedAppPreview");var h2e={servedBuilder:aYt,servedApp:oYt,servedAppPreview:sYt};async function uYt(e,t){let r={userId:e._id,viaScim:Ec(),audited:{email:e.email}};await fe("user:created",r,t)}a(uYt,"created");async function cYt(e){let t={userId:e._id,viaScim:Ec(),audited:{email:e.email}};await fe("user:updated",t)}a(cYt,"updated");async function lYt(e){let t={userId:e._id,viaScim:Ec(),audited:{email:e.email}};await fe("user:deleted",t)}a(lYt,"deleted");async function fYt(e,t){let r={userId:e._id,audited:{email:e.email}};await fe("user:admin:assigned",r,t)}a(fYt,"permissionAdminAssigned");async function pYt(e){let t={userId:e._id,audited:{email:e.email}};await fe("user:admin:removed",t)}a(pYt,"permissionAdminRemoved");async function dYt(e,t){let r={userId:e._id,audited:{email:e.email}};await fe("user:builder:assigned",r,t)}a(dYt,"permissionBuilderAssigned");async function hYt(e){let t={userId:e._id,audited:{email:e.email}};await fe("user:builder:removed",t)}a(hYt,"permissionBuilderRemoved");async function mYt(e){let t={audited:{email:e}};await fe("user:invited",t)}a(mYt,"invited");async function gYt(e){let t={userId:e._id,audited:{email:e.email}};await fe("user:invite:accepted",t)}a(gYt,"inviteAccepted");async function yYt(e){let t={userId:e._id,audited:{email:e.email}};await fe("user:password:force:reset",t)}a(yYt,"passwordForceReset");async function bYt(e){let t={userId:e._id,audited:{email:e.email}};await fe("user:password:updated",t)}a(bYt,"passwordUpdated");async function vYt(e){let t={userId:e._id,audited:{email:e.email}};await fe("user:password:reset:requested",t)}a(vYt,"passwordResetRequested");async function wYt(e){let t={userId:e._id,audited:{email:e.email}};await fe("user:password:reset",t)}a(wYt,"passwordReset");async function EYt(e){let t={users:e};await fe("user:data:collaboration",t)}a(EYt,"dataCollaboration");var us={created:uYt,updated:cYt,deleted:lYt,permissionAdminAssigned:fYt,permissionAdminRemoved:pYt,permissionBuilderAssigned:dYt,permissionBuilderRemoved:hYt,invited:mYt,inviteAccepted:gYt,passwordForceReset:yYt,passwordUpdated:bYt,passwordResetRequested:vYt,passwordReset:wYt,dataCollaboration:EYt};async function _Yt(e,t){let r={name:e.name,type:e.type,tableId:e.tableId};await fe("view:created",r,t)}a(_Yt,"created");async function SYt(e){let t={tableId:e.tableId};await fe("view:updated",t)}a(SYt,"updated");async function xYt(e,t){let r={...Ye.views.isV2(e)?{id:e.id,tableId:e.tableId,appId:t}:{}};await fe("view:deleted",r)}a(xYt,"deleted");async function TYt(e,t){let r={tableId:e._id,format:t};await fe("view:exported",r)}a(TYt,"exported");async function AYt({tableId:e,filterGroups:t},r){let n={tableId:e,filterGroups:t};await fe("view:filter:created",n,r)}a(AYt,"filterCreated");async function RYt({tableId:e,filterGroups:t}){let r={tableId:e,filterGroups:t};await fe("view:filter:updated",r)}a(RYt,"filterUpdated");async function OYt(e){let t={tableId:e.tableId};await fe("view:filter:deleted",t)}a(OYt,"filterDeleted");async function IYt({tableId:e,calculationType:t},r){let n={tableId:e,calculation:t};await fe("view:calculation:created",n,r)}a(IYt,"calculationCreated");async function kYt(e){let t={tableId:e.tableId,calculation:e.calculation};await fe("view:calculation:updated",t)}a(kYt,"calculationUpdated");async function CYt(e){let t={tableId:e.tableId,calculation:e.calculation};await fe("view:calculation:deleted",t)}a(CYt,"calculationDeleted");async function DYt(e,t){let r={tableId:e};await fe("view:join:created",r,t)}a(DYt,"viewJoinCreated");var m2e={created:_Yt,updated:SYt,deleted:xYt,exported:TYt,filterCreated:AYt,filterUpdated:RYt,filterDeleted:OYt,calculationCreated:IYt,calculationUpdated:kYt,calculationDeleted:CYt,viewJoinCreated:DYt};async function PYt(e){let t={currentVersion:e};await fe("installation:version:checked",t)}a(PYt,"versionChecked");async function NYt(e,t){let r={from:e,to:t};await fe("installation:version:upgraded",r)}a(NYt,"upgraded");async function LYt(e,t){let r={from:e,to:t};await fe("installation:version:downgraded",r)}a(LYt,"downgraded");async function FYt(){let e={};await fe("installation:firstStartup",e)}a(FYt,"firstStartup");var EA={versionChecked:PYt,upgraded:NYt,downgraded:LYt,firstStartup:FYt};var aE=!V.SELF_HOSTED&&!V.isDev();async function UYt(e){aE||await fe("app:backfill:succeeded",e)}a(UYt,"appSucceeded");async function jYt(e){if(aE)return;let t={error:JSON.stringify(e,Object.getOwnPropertyNames(e))};await fe("app:backfill:failed",t)}a(jYt,"appFailed");async function MYt(e){aE||await fe("tenant:backfill:succeeded",e)}a(MYt,"tenantSucceeded");async function BYt(e){if(aE)return;let t={error:JSON.stringify(e,Object.getOwnPropertyNames(e))};await fe("tenant:backfill:failed",t)}a(BYt,"tenantFailed");async function qYt(){if(aE)return;let e={};await fe("installation:backfill:succeeded",e)}a(qYt,"installationSucceeded");async function $Yt(e){if(aE)return;let t={error:JSON.stringify(e,Object.getOwnPropertyNames(e))};await fe("installation:backfill:failed",t)}a($Yt,"installationFailed");var g2e={appSucceeded:UYt,appFailed:jYt,tenantSucceeded:MYt,tenantFailed:BYt,installationSucceeded:qYt,installationFailed:$Yt};async function zYt(e,t){let r={groupId:e._id,viaScim:Ec(),audited:{name:e.name}};await fe("user_group:created",r,t)}a(zYt,"created");async function WYt(e){let t={groupId:e._id,viaScim:Ec(),audited:{name:e.name}};await fe("user_group:updated",t)}a(WYt,"updated");async function GYt(e){let t={groupId:e._id,viaScim:Ec(),audited:{name:e.name}};await fe("user_group:deleted",t)}a(GYt,"deleted");async function HYt(e,t){let r={count:e,groupId:t._id,viaScim:Ec(),audited:{name:t.name}};await fe("user_group:user_added",r)}a(HYt,"usersAdded");async function VYt(e,t){let r={count:e,groupId:t._id,viaScim:Ec(),audited:{name:t.name}};await fe("user_group:users_deleted",r)}a(VYt,"usersDeleted");async function KYt(e){let t={groupId:e,onboarding:!0};await fe("user_group:onboarding_added",t)}a(KYt,"createdOnboarding");async function QYt(e){let t={permissions:e.roles,groupId:e._id,audited:{name:e.name}};await fe("user_group:permissions_edited",t)}a(QYt,"permissionsEdited");var y2e={created:zYt,updated:WYt,deleted:GYt,usersAdded:HYt,usersDeleted:VYt,createdOnboarding:KYt,permissionsEdited:QYt};async function YYt(e){let t={type:e.schema.type,name:e.name,description:e.description,version:e.version};await fe("plugin:init",t)}a(YYt,"init");async function JYt(e){let t={pluginId:e._id,type:e.schema.type,source:e.source,name:e.name,description:e.description,version:e.version};await fe("plugin:imported",t)}a(JYt,"imported");async function XYt(e){let t={pluginId:e._id,type:e.schema.type,name:e.name,description:e.description,version:e.version};await fe("plugin:deleted",t)}a(XYt,"deleted");var b2e={init:YYt,imported:JYt,deleted:XYt};async function ZYt(e){let t={appId:e.appId,restoreId:e._id,backupCreatedAt:e.timestamp,name:e.name};await fe("app:backup:restored",t)}a(ZYt,"appBackupRestored");async function eJt(e,t,r,n,i){let o={appId:e,backupId:t,type:r,trigger:n,name:i};await fe("app:backup:triggered",o)}a(eJt,"appBackupTriggered");var v2e={appBackupRestored:ZYt,appBackupTriggered:eJt};async function tJt(e,t){let r={name:e,environments:t};await fe("environment_variable:created",r)}a(tJt,"created");async function rJt(e){let t={name:e};await fe("environment_variable:deleted",t)}a(rJt,"deleted");async function nJt(e){let t={userId:e};await fe("environment_variable:upgrade_panel_opened",t)}a(nJt,"upgradePanelOpened");var w2e={created:tJt,deleted:rJt,upgradePanelOpened:nJt};async function iJt(e){let t={filters:e};await fe("audit_log:filtered",t)}a(iJt,"filtered");async function aJt(e){let t={filters:e};await fe("audit_log:downloaded",t)}a(aJt,"downloaded");var E2e={filtered:iJt,downloaded:aJt};async function oJt(e,t){await fe("row_action:created",e,t)}a(oJt,"created");var _2e={created:oJt};async function sJt(e,t){let r={workspaceAppId:e._id,audited:{name:e.name},appId:t};await fe("workspace_app:deleted",r)}a(sJt,"deleted");var S2e={deleted:sJt};function uJt(){}a(uJt,"initAsyncEvents");var cJt=a(async()=>{await gp.shutdown(),console.log("Events shutdown")},"shutdown");var Ah={};oe(Ah,{creatorsInList:()=>gy,getAccountHolderFromUsers:()=>FL,hasAdminPermissions:()=>Th,hasAppBuilderPermissions:()=>C2e,hasBuilderPermissions:()=>ss,isAdmin:()=>ql,isAdminOrBuilder:()=>k2e,isAdminOrWorkspaceBuilder:()=>PL,isBuilder:()=>sE,isCreatorAsync:()=>IA,isCreatorSync:()=>NL,isGlobalBuilder:()=>I2e,validateUniqueUser:()=>LL});var IL=class extends Error{constructor(r,n){super(r);this.code=n}static{a(this,"BudibaseError")}},T2e=a(e=>{let t;return e.code&&(t={code:e.code},e.getPublicError&&(t={...t,...e.getPublicError()})),t},"getPublicError"),Re=class e extends IL{constructor(r,n,i="http"){super(r,i);this.status=n}static{a(this,"HTTPError")}static async fromResponse(r){let n=await r.text(),i=n,o=r.status,s="http";try{let u=JSON.parse(n);i=u.message,o=u.status,s=u.error?.code}catch{}return new e(i,o,s)}};var Ma=class extends Re{static{a(this,"BadRequestError")}constructor(t){super(t,400)}};var kL=class extends Re{constructor(r,n){super(r,400,"usage_limit_exceeded");this.limitName=n}static{a(this,"UsageLimitError")}getPublicError(){return{limitName:this.limitName}}},oE=class extends Re{constructor(r,n){super(r,400,"feature_disabled");this.featureName=n}static{a(this,"FeatureDisabledError")}getPublicError(){return{featureName:this.featureName}}},CL=class extends IL{static{a(this,"InvalidAPIKeyError")}constructor(){super("Invalid API key - may need re-generated, or user doesn't exist","invalid_api_key")}},yp=class extends Error{static{a(this,"EmailUnavailableError")}constructor(t){super(`Email already in use: '${t}'`)}};async function q7(e){let t=[],r=await R2e(e);t.push(...r.map(s=>s.email));let n=await O2e(e);t.push(...n.map(s=>s._id));let i=await iE(e);t.push(...i.map(s=>s.email));let o=await a7(e);return t.push(...o.map(s=>s.email)),[...new Set(t.map(s=>s.toLowerCase()))]}a(q7,"searchExistingEmails");async function DL(e){return await Ix("platform_users_lowercase_2",{keys:[e.toLowerCase()],include_docs:!0})}a(DL,"getPlatformUsers");async function OA(e){return(await DL(e))[0]??null}a(OA,"getFirstPlatformUser");async function R2e(e){let r={keys:e.map(i=>i.toLowerCase()),include_docs:!0},n={arrayResponse:!0};return await Jf("by_email2",r,void 0,n)}a(R2e,"getExistingTenantUsers");async function O2e(e){let r={keys:e.map(n=>n.toLowerCase()),include_docs:!0};return await Ix("platform_users_lowercase_2",r)}a(O2e,"getExistingPlatformUsers");async function iE(e){let r={keys:e.map(n=>n.toLowerCase()),include_docs:!0};return await Ix("account_by_email",r)}a(iE,"getExistingAccounts");var sE=Yi.users.isBuilder,ql=Yi.users.isAdmin,I2e=Yi.users.isGlobalBuilder,k2e=Yi.users.isAdminOrBuilder,Th=Yi.users.hasAdminPermissions,ss=Yi.users.hasBuilderPermissions,C2e=Yi.users.hasAppBuilderPermissions,PL=Yi.users.isAdminOrWorkspaceBuilder;async function gy(e,t){let r=[...new Set(e.filter(i=>i.userGroups).flatMap(i=>i.userGroups))];return t=await Ar().getMultiple(r,{allowMissing:!0}),e.map(i=>NL(i,t))}a(gy,"creatorsInList");async function IA(e){let t=[];return e.userGroups&&(t=await Ar().getMultiple(e.userGroups)),NL(e,t)}a(IA,"isCreatorAsync");function NL(e,t){let r=Yi.users.isCreator(e);return!r&&e?lJt(e,t):r}a(NL,"isCreatorSync");function lJt(e,t){let r=t?.filter(n=>e.userGroups?.indexOf(n._id)!==-1);return r&&r.length>0?r.some(n=>Object.values(n.roles||{}).includes("CREATOR")):!1}a(lJt,"isCreatorByGroupMembership");async function LL(e,t){if(V.MULTI_TENANCY){let r=await OA(e);if(r!=null&&r.tenantId!==t)throw new yp(e)}if(!V.SELF_HOSTED&&!V.DISABLE_ACCOUNT_PORTAL){let r=await dy(e);if(r&&r.verified&&r.tenantId!==t)throw new yp(e)}}a(LL,"validateUniqueUser");async function FL(e){if(!V.SELF_HOSTED&&!V.DISABLE_ACCOUNT_PORTAL){let t=await iE(e.map(r=>r.email));return e.find(r=>t.map(n=>n.email).includes(r.email))}}a(FL,"getAccountHolderFromUsers");var $7=a(async e=>{await us.deleted(e),ss(e)&&await us.permissionBuilderRemoved(e),Th(e)&&await us.permissionAdminRemoved(e)},"handleDeleteEvents"),fJt=a(async(e,t,r)=>{for(let[n,i]of Object.entries(t))(!r||r[n]!==i)&&await RA.assigned(e,i)},"assignAppRoleEvents"),pJt=a(async(e,t,r)=>{if(r)for(let[n,i]of Object.entries(r))(!t||t[n]!==i)&&await RA.unassigned(e,i)},"unassignAppRoleEvents"),dJt=a(async(e,t)=>{let r=e.roles,n=t?.roles;await fJt(e,r,n),await pJt(e,r,n)},"handleAppRoleEvents"),z7=a(async(e,t)=>{let r=Pt(),n;!V.SELF_HOSTED&&!V.DISABLE_ACCOUNT_PORTAL&&(n=await uA(r)),await Uc.identifyUser(e,n),t?(await us.updated(e),mJt(e,t)&&await us.permissionBuilderRemoved(e),yJt(e,t)&&await us.permissionAdminRemoved(e),!t.forceResetPassword&&e.forceResetPassword&&e.password&&await us.passwordForceReset(e),e.password!==t.password&&await us.passwordUpdated(e)):await us.created(e),hJt(e,t)&&await us.permissionBuilderAssigned(e),gJt(e,t)&&await us.permissionAdminAssigned(e),await dJt(e,t)},"handleSaveEvents"),hJt=a((e,t)=>D2e(e,t,ss),"isAddingBuilder"),mJt=a((e,t)=>P2e(e,t,ss),"isRemovingBuilder"),gJt=a((e,t)=>D2e(e,t,Th),"isAddingAdmin"),yJt=a((e,t)=>P2e(e,t,Th),"isRemovingAdmin"),D2e=a((e,t,r)=>!(!r(e)||t&&r(t)),"isAddingPermission"),P2e=a((e,t,r)=>!(r(e)||!t||!r(t)),"isRemovingPermission");var vJt=require("uuid");var wJt=V.SESSION_EXPIRY_SECONDS?parseInt(V.SESSION_EXPIRY_SECONDS):mi.fromDays(7).toSeconds();function UL(e,t){return`${e}/${t}`}a(UL,"makeSessionID");async function W7(e){return e?(await(await Kv()).scan(e)).map(n=>n.value):(console.trace("Cannot get sessions for undefined userId"),[])}a(W7,"getSessionsForUser");async function kA(e,t={}){try{let r=t?.reason||"unknown",n=t.sessionIds||[],i;if(n.length===0?i=(await W7(e)).map(s=>({key:UL(s.userId,s.sessionId)})):(n=Array.isArray(n)?n:[n],i=n.map(o=>({key:UL(e,o)}))),i&&i.length>0){let o=await Kv(),s=[];for(let u of i)s.push(o.delete(u.key));V.isTest()||Zw(`Invalidating sessions for ${e} (reason: ${r}) - ${i.map(u=>u.key).join(", ")}`),await Promise.all(s)}}catch(r){console.error(`Error invalidating sessions: ${r}`)}}a(kA,"invalidateSessions");async function N2e(e){let t=await Kv(),r=UL(e.userId,e.sessionId);e.lastAccessedAt=new Date().toISOString(),await t.store(r,e,wJt)}a(N2e,"updateSessionTTL");async function L2e(e,t){if(!e||!t)throw new Error(`Invalid session details - ${e} - ${t}`);let n=await(await Kv()).get(UL(e,t));if(!n)throw new Error(`Session not found - ${e} - ${t}`);return n}a(L2e,"getSession");var U2e=+(V.PASSWORD_MIN_LENGTH||12),j2e=+(V.PASSWORD_MAX_LENGTH||512);function M2e(e){return!e||e.length<U2e?{valid:!1,error:`Password invalid. Minimum ${U2e} characters.`}:e.length>j2e?{valid:!1,error:`Password invalid. Maximum ${j2e} characters.`}:{valid:!0}}a(M2e,"validatePassword");var SJt=a(async e=>{let t=e._id;await Ml.removeUser(e),await $7(e),await Rh.invalidateUser(t),await kA(t,{reason:"bulk-deletion"})},"bulkDeleteProcessing"),$l=class e{static{a(this,"UserDB")}static init(t,r,n){e.quotas=t,e.groups=r,e.features=n}static async isPreventPasswordActions(t,r){return V.ENABLE_SSO_MAINTENANCE_MODE&&ql(t)?!1:await e.features.isSSOEnforced()||Bb(t)?!0:(r||(r=await uA(Pt())),!!(r&&r.email===t.email&&rk(r)))}static async buildUser(t,r={hashPassword:!0,requirePassword:!0},n,i,o){let{password:s,_id:u}=t;i&&!i.password&&(r.requirePassword=!1);let c;if(s){if(await e.isPreventPasswordActions(t,o))throw new Re("Password change is disabled for this user",400);if(!r.skipPasswordValidation){let p=M2e(s);if(!p.valid)throw new Re(p.error,400)}c=r.hashPassword?await D4(s):s}else i&&(c=i.password);let l=r.requirePassword&&!await e.features.isSSOEnforced();if(!c&&l)throw"Password must be specified.";u=u||Qv();let f={createdAt:Date.now(),...i,...t,_id:u,password:c,tenantId:n};return f.roles||(f.roles={}),f.status==null&&(f.status="active"),f}static async allUsers(){return(await Ar().allDocs(gg(null,{include_docs:!0}))).rows.map(n=>n.doc)}static async countUsersByApp(t){return{userCount:(await ML(t,{})).length}}static async getUsersByAppAccess(t){return await G7(t.appId,{limit:t.limit||50})}static async getUserByEmail(t){return jc(t)}static async getUser(t){let r=await yy(t);return r&&delete r.password,r}static async bulkGet(t){return await jL(t)}static async bulkUpdate(t){return await CA(t)}static async save(t,r={}){r.hashPassword==null&&(r.hashPassword=!0),r.requirePassword==null&&(r.requirePassword=!0);let n=Pt(),i=Ar(),{email:o,_id:s,userGroups:u=[],roles:c}=t;if(!o&&!s)throw new Error("_id or email is required");let l;if(s)try{if(l=await yy(s),o&&l.email!==o&&!r.allowChangingEmail)throw new Error("Email address cannot be changed")}catch(d){if(d.status!==404)throw d}if(!l&&o&&(l=await jc(o),l&&l._id!==s))throw new yp(o);let f=1,p=0;if((r.isAccountHolder||l)&&(f=0,p=1),l){let[d,h]=await gy([l,t]);p=d!==h?1:0}return e.quotas.addUsers(f,p,async()=>{r.isAccountHolder||await LL(o,n);let d=await e.buildUser(t,r,n,l);r.currentUserId&&r.currentUserId===l?._id&&(d=H7(d,l)),!l&&c?.length&&(d.roles={...c});let h=[];if(!s&&u.length>0)for(let m of u)h.push(e.groups.addUsers(m,[d._id]));try{let m=await i.put(d);return d._rev=m.rev,await z7(d,l),l&&d.email!==l.email&&await Ml.removeUser({email:l.email}),await Ml.addUser(n,d._id,d.email,d.ssoId),await Rh.invalidateUser(m.id),await Promise.all(h),i.get(d._id)}catch(m){throw m.status===409?"User exists already":m}})}static async bulkCreate(t,r){let n=Pt(),i=[],o=[],s=[],u=t.map(d=>d.email),c=await q7(u),l=[];for(let d of t){let h=o.find(g=>g.email.toLowerCase()===d.email.toLowerCase()),m=c.includes(d.email.toLowerCase());if(h||m){l.push({email:d.email,reason:"Unavailable"});continue}d.userGroups=r||[],o.push(d),await IA(d)&&s.push(d)}let f=await uA(n),p=await e.features.isSSOEnforced();return e.quotas.addUsers(o.length,s.length,async()=>{for(let m of o)p&&delete m.password,i.push(e.buildUser(m,{hashPassword:!0,requirePassword:!p},n,void 0,f));let d=await Promise.all(i);await CA(d);for(let m of d)await Ml.addUser(n,m._id,m.email),await z7(m,void 0);let h=d.map(m=>({_id:m._id,email:m.email}));if(Array.isArray(h)&&r){let m=[],g=h.map(y=>y._id);for(let y of r)m.push(e.groups.addUsers(y,g));await Promise.all(m)}return{successful:h,unsuccessful:l}})}static async bulkDelete(t){let r=Ar(),n={successful:[],unsuccessful:[]},i=await FL(t);i&&(t=t.filter(h=>h.userId!==i.userId),n.unsuccessful.push({_id:i.userId,email:i.email,reason:"Account holder cannot be deleted"}));let s=(await r.allDocs({include_docs:!0,keys:t.map(h=>h.userId)})).rows.map(h=>h.doc),u=s.map(h=>({...h,_deleted:!0})),c=await CA(u),f=(await gy(s)).filter(h=>h).length,p=[];for(let h of s){let g=(await OA(h._id)).ssoId;g&&(await DL(g)).filter(b=>b.ssoId==null).forEach(b=>{p.push({...b,_deleted:!0})}),await SJt(h)}await py().bulkDocs(p),await e.quotas.removeUsers(u.length,f);let d={};return s.reduce((h,m)=>(h[m._id]=m,h),d),c.forEach(h=>{let m=d[h.id].email;h.ok?n.successful.push({_id:h.id,email:m}):n.unsuccessful.push({_id:h.id,email:m,reason:"Database error"})}),n}static async destroy(t){let r=Ar(),n=await r.get(t),i=n._id;if(!V.SELF_HOSTED&&!V.DISABLE_ACCOUNT_PORTAL){let s=n.email;if(await dy(s))throw n.userId===Mf()._id?new Re('Please visit "Account" to delete this user',400):new Re("Account holder cannot be deleted",400)}await Ml.removeUser(n),await r.remove(i,n._rev);let o=await IA(n)?1:0;await e.quotas.removeUsers(1,o),await $7(n),await Rh.invalidateUser(i),await kA(i,{reason:"deletion"})}static async createAdminUser(t,r,n){let i=n?.password,o={email:t,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 eE(aa.CHECKLIST),await e.save(o,{hashPassword:n?.hashPassword,requirePassword:n?.requirePassword,skipPasswordValidation:n?.skipPasswordValidation,isAccountHolder:!0})}static async getGroups(t){return await this.groups.getBulk(t)}static async getGroupBuilderAppIds(t){return await this.groups.getGroupBuilderAppIds(t)}};function DA(e){return Array.isArray(e)?e.map(t=>{if(t)return delete t.password,t}):e&&(delete e.password,e)}a(DA,"removeUserPassword");async function jL(e,t){let n=(await Ar().allDocs({keys:e,include_docs:!0})).rows.map(i=>i.doc);return t?.cleanup&&(n=DA(n)),n}a(jL,"bulkGetGlobalUsersById");async function TJt(){let e=Ar(),t=`us${Me}`;return(await e.allDocs({startkey:t,endkey:`${t}${Da}`})).rows.map(n=>n.id)}a(TJt,"getAllUserIds");async function AJt(){let e=Ar(),t=`us${Me}`;return(await e.allDocs({startkey:t,endkey:`${t}${Da}`,include_docs:!0})).rows.map(n=>n.doc)}a(AJt,"getAllUsers");async function CA(e){return await Ar().bulkDocs(e)}a(CA,"bulkUpdateGlobalUsers");async function yy(e,t){let n=await Ar().get(e);return t?.cleanup&&(n=DA(n)),n}a(yy,"getById");async function jc(e,t){if(e==null)throw"Must supply an email address to view";let r=await Jf("by_email2",{key:e.toLowerCase(),include_docs:!0});if(Array.isArray(r))throw new Error(`Multiple users found with email address: ${e}`);let n=r;return t?.cleanup&&(n=DA(n)),n}a(jc,"getGlobalUserByEmail");async function RJt(e){try{let t=await jc(e);if(Array.isArray(t)||t!=null)return!0}catch{return!1}return!1}a(RJt,"doesUserExist");async function ML(e,t,r){if(typeof e!="string")throw new Error("Must provide a string based workspace ID");let n=w1(e,{include_docs:!0});n.startkey=t&&t.startkey?t.startkey:n.startkey;let i=await Jf("by_app",n);i||(i=[]);let o=Array.isArray(i)?i:[i];return r?.cleanup&&(o=DA(o)),o}a(ML,"searchGlobalUsersByApp");async function G7(e,t){let r=`roles.${e}`,n=[{"builder.global":!0},{"admin.global":!0}];if(e){let s={[r]:{$exists:!0}};n.push(s)}return(await Ar().find({selector:{$or:n,_id:{$regex:"^us_"}},limit:t?.limit||50})).docs}a(G7,"searchGlobalUsersByAppAccess");function B2e(e,t){if(t)return v1(Us(e),t._id)}a(B2e,"getGlobalUserByAppPage");async function q2e(e,t,r){if(typeof e!="string")throw new Error("Must provide a string to search by");let n=e.toLowerCase(),i=t&&t.startkey?t.startkey:n,o=await Jf("by_email2",{...t,startkey:i,endkey:`${n}${Da}`});o||(o=[]);let s=Array.isArray(o)?o:[o];return r?.cleanup&&(s=DA(s)),s}a(q2e,"searchGlobalUsersByEmail");var OJt=8;async function $2e({bookmark:e,query:t,appId:r,limit:n}={}){let i=Ar(),o=n??OJt,u={include_docs:!0,limit:o+1};e&&(u.startkey=e);let c,l="_id",f;return t?.equal?._id?c=[await yy(t.equal._id)]:r?(c=await ML(r,u),f=a(p=>B2e(r,p),"getKey")):t?.string?.email?(c=await q2e(t?.string?.email,u),l="email"):t?.oneOf?._id?c=await jL(t?.oneOf?._id,{cleanup:!0}):t?(c=(await i.allDocs(gg(null,{...u,limit:void 0}))).rows.map(d=>d.doc),c=Lr.search(c,{query:t,limit:u.limit}).rows):c=(await i.allDocs(gg(null,u))).rows.map(d=>d.doc),Y$(c,o,{paginate:!0,property:l,getKey:f})}a($2e,"paginatedUsers");async function IJt(){return(await Z$("by_email2",{limit:0,include_docs:!1})).total_rows}a(IJt,"getUserCount");async function kJt(){let e=0;async function t(r){let n=await $2e({bookmark:r}),i=await gy(n.data);e+=i.filter(o=>o).length,n.hasNextPage&&await t(n.nextPage)}return a(t,"iterate"),await t(),e}a(kJt,"getCreatorCount");function CJt(e){return delete e.admin,delete e.builder,e}a(CJt,"removePortalUserPermissions");function H7(e,t){return delete e.admin,delete e.builder,delete e.roles,t&&(e.admin=t.admin,e.builder=t.builder,e.roles=t.roles),e}a(H7,"cleanseUserObject");async function DJt(e,t){let r=Us(t);e.builder??={},e.builder.creator=!0,e.builder.apps??=[],e.builder.apps.push(r),await $l.save(e,{hashPassword:!1})}a(DJt,"addAppBuilder");async function PJt(e,t){let r=Us(t);e.builder&&e.builder.apps?.includes(r)&&(e.builder.apps=e.builder.apps.filter(n=>n!==r)),await $l.save(e,{hashPassword:!1})}a(PJt,"removeAppBuilder");var z2e=3600;async function NJt(e,t){let n=await nz(t).get(e);if(n.budibaseAccess=!0,!V.SELF_HOSTED&&!V.DISABLE_ACCOUNT_PORTAL){let i=await dy(n.email);i&&(n.account=i,n.accountPortalAccess=!0)}return n}a(NJt,"populateFromDB");async function LJt(e){let t=await $l.bulkGet(e),r=e.filter((i,o)=>!t[o]),n=t.filter(i=>i);return await Promise.all(n.map(async i=>{if(i.budibaseAccess=!0,!V.SELF_HOSTED&&!V.DISABLE_ACCOUNT_PORTAL){let o=await dy(i.email);o&&(i.account=o,i.accountPortalAccess=!0)}})),r.length?{users:n,notFoundIds:r}:{users:n}}a(LJt,"populateUsersFromDB");async function PA({userId:e,tenantId:t,email:r,populateUser:n}){if(n||(n=NJt),!t)try{t=Pt()}catch{t=await Ml.lookupTenantId(e)}let i=await Sx(),o=await i.get(e);return o||(o=await n(e,t,r),await i.store(e,o,z2e)),o&&!o.tenantId&&t&&(o.tenantId=t),o.userGroups&&!Yi.users.isGlobalBuilder(o)&&await Xo(t,async()=>{let s=await $l.getGroupBuilderAppIds(o);if(s.length){let u=o.builder?.apps||[];o.builder={apps:[...new Set(u.concat(s))]}}}),o}a(PA,"getUser");async function FJt(e){let t=await Sx(),r=await t.bulkGet(e),n=e.filter(s=>!r[s]),i=Object.values(r).filter(s=>!!s),o;if(n.length){let s=await LJt(n);o=s.notFoundIds;for(let u of s.users)await t.store(u._id,u,z2e);i.push(...s.users)}return{users:i,notFoundIds:o}}a(FJt,"getUsers");async function NA(e){await(await Sx()).delete(e)}a(NA,"invalidateUser");var dK={};oe(dK,{Writethrough:()=>lK});var Mc={};oe(Mc,{AUTO_EXTEND_POLLING_MS:()=>AUe,doWithLock:()=>uK,newRedlock:()=>wy});var TUe=te(xUe());async function nXt(e,t){if(e==="custom")return wy(t);switch(e){case"try_once":return wy(pE.TRY_ONCE);case"try_twice":return wy(pE.TRY_TWICE);case"default":return wy(pE.DEFAULT);case"delay_500":return wy(pE.DELAY_500);case"auto_extend":return wy(pE.AUTO_EXTEND);default:throw $t.unreachable(e)}}a(nXt,"getClient");var pE={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 wy(e={}){let t={...pE.DEFAULT,...e},n=(await G$()).client;return new TUe.default([n],t)}a(wy,"newRedlock");function iXt(e){let r=`lock:${e.systemLock?"system":Pt()}_${e.name}`;return e.resource&&(r=r+`_${e.resource}`),r}a(iXt,"getLockName");var AUe=mi.fromSeconds(10).toMs();async function uK(e,t){let r=await nXt(e.type,e.customOptions),n,i;try{let o=iXt(e),s=e.type==="auto_extend"?AUe:e.ttl;if(n=await r.lock(o,s),e.type==="auto_extend"){let c=a(()=>{i=setTimeout(async()=>{n=await n.extend(s,()=>e.onExtend&&e.onExtend()),c()},s/2)},"extendInIntervals");c()}return{executed:!0,result:await t()}}catch(o){if(o.name==="LockError"){if(e.type==="try_once")return{executed:!1};throw o}else throw o}finally{clearTimeout(i),await n?.unlock()}}a(uK,"doWithLock");var RUe=1e4,cK=null;async function VL(){if(!cK){let e=await W$();cK=new uy(e)}return cK}a(VL,"getCache");function UA(e,t){return e.name+t}a(UA,"makeCacheKey");function pK(e,t=null){return{doc:e,lastWrite:t||Date.now()}}a(pK,"makeCacheItem");async function aXt(e,t,r=RUe){let n=await VL(),i=t._id,o;i&&(o=await n.get(UA(e,i)));let s=!o||o.lastWrite<Date.now()-r,u=t;return s&&((await uK({type:"try_once",name:"persist_writethrough",resource:i,ttl:15e3},async()=>{let l=a(async f=>{let p=await e.put(f,{force:!0});u._id=p.id,u._rev=p.rev},"writeDb");try{await l(t)}catch(f){if(f.status!==409)throw f;Zw("Ignoring conflict in write-through cache")}})).executed||Zw("Ignoring redlock conflict in write-through cache")),o=pK(u,s?null:o?.lastWrite),u._id&&await n.store(UA(e,u._id),o),{ok:!0,id:u._id,rev:u._rev}}a(aXt,"put");async function oXt(e,t){let r=await VL(),n=UA(e,t),i=await r.get(n);if(!i){let o=await e.get(t);i=pK(o),await r.store(n,i)}return i.doc}a(oXt,"get");async function sXt(e,t){let r=await VL(),n=UA(e,t),i=await r.get(n);if(!i){let o=await e.tryGet(t);if(!o)return null;i=pK(o),await r.store(n,i)}return i.doc}a(sXt,"tryGet");async function uXt(e,t,r){let n=await VL();if(!t)throw new Error("No ID/Rev provided.");let i=typeof t=="string"?t:t._id;r=typeof t=="string"?r:t._rev;try{await n.delete(UA(e,i))}finally{await e.remove(i,r)}}a(uXt,"remove");var lK=class{static{a(this,"Writethrough")}constructor(t,r=RUe){this.db=t,this.writeRateMs=r}async put(t,r=this.writeRateMs){return aXt(this.db,t,r)}async get(t){return oXt(this.db,t)}async tryGet(t){return sXt(this.db,t)}async remove(t,r){return uXt(this.db,t,r)}};function QL(e){return`config${Me}${e}`}a(QL,"generateConfigID");async function Du(e){let t=Ar();try{return await t.get(QL(e))}catch(r){if(r.status===404)return;throw r}}a(Du,"getConfig");async function cXt(e){return e._id||(e._id=QL(e.type)),Ar().put(e)}a(cXt,"save");async function Jw(){let e=await Du("settings");return e||(e={_id:QL("settings"),type:"settings",config:{}}),e.config.platformUrl=await jA({tenantAware:!0,config:e.config}),e.config.analyticsEnabled=await dL({config:e.config}),e}a(Jw,"getSettingsConfigDoc");async function mK(){return(await Jw()).config}a(mK,"getSettingsConfig");async function jA(e={tenantAware:!0}){let t=V.PLATFORM_URL||"http://localhost:10000";if(!V.SELF_HOSTED&&V.MULTI_TENANCY&&e.tenantAware){let r=Pt();t.includes("localhost:")||(t=t.replace("://",`://${r}.`))}else if(V.SELF_HOSTED){let r=e?.config?e.config:(await Du("settings"))?.config;r?.platformUrl&&(t=r.platformUrl)}return t}a(jA,"getPlatformUrl");var dL=a(async e=>{if(!V.SELF_HOSTED)return!!V.ENABLE_ANALYTICS;let t=await Sh(aa.ANALYTICS_ENABLED,86400,async()=>{let n=e?.config?e.config:(await Du("settings"))?.config;if(n?.analyticsEnabled===!1)return!1;if(n?.analyticsEnabled===!0)return!0});if(t!==void 0)return t;let r=V.ENABLE_ANALYTICS;return!(r===0||r===!1)},"analyticsEnabled");async function lXt(){return await Du("google")}a(lXt,"getGoogleConfigDoc");async function YL(){return(await lXt())?.config}a(YL,"getGoogleConfig");async function gK(){if(!V.SELF_HOSTED)return hK();let e=await YL();return(!e||!e.activated)&&(e=hK()),e}a(gK,"getGoogleDatasourceConfig");function hK(){if(V.GOOGLE_CLIENT_ID&&V.GOOGLE_CLIENT_SECRET)return{clientID:V.GOOGLE_CLIENT_ID,clientSecret:V.GOOGLE_CLIENT_SECRET,activated:!0}}a(hK,"getDefaultGoogleConfig");async function fXt(){return Du("logos_oidc")}a(fXt,"getOIDCLogosDoc");async function pXt(){return Du("oidc")}a(pXt,"getOIDCConfigDoc");async function dXt(){let e=(await pXt())?.config;return e?.configs&&e.configs[0]}a(dXt,"getOIDCConfig");async function yK(e){let t=(await Du("oidc"))?.config;return t&&t.configs.filter(r=>r.uuid===e)[0]}a(yK,"getOIDCConfigById");async function OUe(){return Du("smtp")}a(OUe,"getSMTPConfigDoc");async function hXt(e){let t=await OUe();if(t)return t.config;let r=V.SELF_HOSTED||!e;if(V.SMTP_FALLBACK_ENABLED&&r)return{port:V.SMTP_PORT,host:V.SMTP_HOST,secure:!1,from:V.SMTP_FROM_ADDRESS,auth:{user:V.SMTP_USER,pass:V.SMTP_PASSWORD},fallback:!0}}a(hXt,"getSMTPConfig");async function mXt(){return(await Du("scim"))?.config}a(mXt,"getSCIMConfig");async function gXt(){return Du("ai")}a(gXt,"getAIConfig");async function yXt(){return Du("recaptcha")}a(yXt,"getRecaptchaConfig");var Dr={};oe(Dr,{AccessController:()=>wK,BUILTIN_ROLE_IDS:()=>EK,Role:()=>kh,RoleHierarchyTraversal:()=>JL,RoleIDVersion:()=>_K,builtinRoleToNumber:()=>MA,checkForRoleResourceArray:()=>DUe,externalRole:()=>SXt,findRole:()=>BA,getAllRoleIds:()=>RXt,getAllRoles:()=>AK,getBuiltinRole:()=>kUe,getBuiltinRoles:()=>xK,getDBRoleID:()=>PUe,getExternalRoleID:()=>Ch,getExternalRoleIDs:()=>NUe,getRole:()=>xXt,getUserRoleHierarchy:()=>TK,getUserRoleIdHierarchy:()=>CUe,isBuiltin:()=>Ey,lowerBuiltinRoleID:()=>_Xt,prefixRoleIDNoBuiltin:()=>vK,roleIDsAreEqual:()=>Pu,roleToNumber:()=>EXt,saveRoles:()=>TXt,validInherits:()=>wXt});var IUe=require("lodash"),XL=te(require("lodash/fp/cloneDeep")),bK=te(k7());var EK={ADMIN:"ADMIN",POWER:"POWER",BASIC:"BASIC",PUBLIC:"PUBLIC"},Fn={...EK,BUILDER:"BUILDER"},_K={UUID:void 0,NAME:"name"};function vXt(e,t){return Array.isArray(t)?t.filter(r=>e.includes(r)).length===t.length:e.includes(t)}a(vXt,"rolesInList");var kh=class{constructor(t,r,n,i){this.permissions={};this._id=t,this.name=r,this.uiMetadata=i,this.permissionId=n,this.version=_K.NAME}static{a(this,"Role")}addInheritance(t){return t&&typeof t=="string"?t=vK(t):t&&Array.isArray(t)&&(t=t.map(vK)),this.inherits=t,this}},JL=class{static{a(this,"RoleHierarchyTraversal")}constructor(t,r){this.allRoles=t,this.opts=r}walk(t){let r=this.opts,n=this.allRoles,i=[];if(!t||!t._id)return i;if(i.push(t),Array.isArray(t.inherits))for(let o of t.inherits){let s=BA(o,n,r);s&&(i=i.concat(this.walk(s)))}else{let o=[],s=t;for(;s&&s.inherits&&!vXt(o,s.inherits);){if(Array.isArray(s.inherits))return i.concat(this.walk(s));if(o.push(s.inherits),s=BA(s.inherits,n,r),s&&i.push(s),Ye.roles.checkForRoleInheritanceLoops(i))break}}return(0,IUe.uniqBy)(i,o=>o._id)}},SK={ADMIN:new kh(Fn.ADMIN,Fn.ADMIN,"admin",{displayName:"App admin",description:"Can do everything",color:"var(--spectrum-global-color-static-red-400)"}).addInheritance(Fn.POWER),POWER:new kh(Fn.POWER,Fn.POWER,"power",{displayName:"App power user",description:"An app user with more access",color:"var(--spectrum-global-color-static-orange-400)"}).addInheritance(Fn.BASIC),BASIC:new kh(Fn.BASIC,Fn.BASIC,"write",{displayName:"App user",description:"Any logged in user",color:"var(--spectrum-global-color-static-green-400)"}).addInheritance(Fn.PUBLIC),PUBLIC:new kh(Fn.PUBLIC,Fn.PUBLIC,"public",{displayName:"Public user",description:"Accessible to anyone",color:"var(--spectrum-global-color-static-blue-400)"}),BUILDER:new kh(Fn.BUILDER,Fn.BUILDER,"admin",{displayName:"Builder user",description:"Users that can edit this app",color:"var(--spectrum-global-color-static-magenta-600)"})};function xK(){return(0,XL.default)(SK)}a(xK,"getBuiltinRoles");function Ey(e){return Object.values(EK).includes(e)}a(Ey,"isBuiltin");function vK(e){return Ey(e)?e:Qf(e)}a(vK,"prefixRoleIDNoBuiltin");function kUe(e){let t=Object.values(SK).find(r=>e.includes(r._id));if(t)return(0,XL.default)(t)}a(kUe,"getBuiltinRole");function wXt(e,t){if(!t)return!1;let r=a(n=>e.find(i=>Pu(i._id,n)),"find");if(Array.isArray(t)){let n=t.filter(i=>r(i));return t.length!==0&&n.length===t.length}else return!!r(t)}a(wXt,"validInherits");function MA(e){let t=xK(),r=Object.values(t).length+1;if(Pu(e,Fn.ADMIN)||Pu(e,Fn.BUILDER))return r;let n=t[e],i=0;do{if(!n)break;if(Array.isArray(n.inherits))throw new Error("Built-in roles don't support multi-inheritance");n=t[n.inherits],i++}while(n!==null);return i}a(MA,"builtinRoleToNumber");async function EXt(e){if(Ey(e))return MA(e);let t=await TK(e,{defaultPublic:!0}),r=a(n=>{if(!n.inherits)return 0;if(Array.isArray(n.inherits)){let i=n.inherits.map(o=>{let s=t.find(u=>Pu(u._id,o));if(s)return r(s)+1}).filter(o=>o).sort().pop();if(i!=null)return i}else if(Ey(n.inherits))return MA(n.inherits)+1;return 0},"findNumber");return Math.max(...t.map(r))}a(EXt,"roleToNumber");function _Xt(e,t){return e?t&&MA(e)>MA(t)?t:e:t}a(_Xt,"lowerBuiltinRoleID");function Pu(e,t){return Qf(e)===Qf(t)}a(Pu,"roleIDsAreEqual");function SXt(e){let t;return e._id&&(t=Ch(e._id)),{...e,_id:t,inherits:NUe(e.inherits,e.version)}}a(SXt,"externalRole");function BA(e,t,r){let n=kUe(e);n||(e=Qf(e));let i=t.find(o=>o._id&&Pu(o._id,e));return!i&&!Ey(e)&&r?.defaultPublic?(0,XL.default)(SK.PUBLIC):(n=Object.assign(n||{},i),n?._id&&(n._id=Ch(n._id,n.version)),Object.keys(n).length===0?void 0:n)}a(BA,"findRole");async function xXt(e,t){let r=Vv(),n=[];if(!Ey(e)){let i=await r.tryGet(PUe(e));i&&n.push(i)}return BA(e,n,t)}a(xXt,"getRole");async function TXt(e){await Vv().bulkDocs(e.filter(r=>r._id).map(r=>({...r,_id:Qf(r._id)})))}a(TXt,"saveRoles");async function AXt(e,t){let r=await AK();if(Pu(e,Fn.ADMIN))return r;let n=BA(e,r,t),i=[];return n&&(i=new JL(r,t).walk(n)),i}a(AXt,"getAllUserRoles");async function CUe(e){return(await TK(e)).map(r=>r._id)}a(CUe,"getUserRoleIdHierarchy");async function TK(e,t){return AXt(e,t)}a(TK,"getUserRoleHierarchy");function DUe(e,t){if(e&&!Array.isArray(e[t])){let r=e[t];e[t]=[r],r==="write"&&e[t].push("read")}return e}a(DUe,"checkForRoleResourceArray");async function RXt(e){return(await AK(e)).map(r=>r._id)}a(RXt,"getAllRoleIds");async function AK(e){if(e)return Fs(e,t);{let r;try{r=Vv()}catch{}return t(r)}async function t(r){let n=[];r&&(n=(await r.allDocs(E1(null,{include_docs:!0}))).rows.map(u=>u.doc),n.forEach(u=>u._id=Ch(u._id,u.version)));let i=xK(),o=[];!r||await OXt(r)?o=[Fn.ADMIN,Fn.POWER,Fn.BASIC,Fn.PUBLIC]:o=[Fn.ADMIN,Fn.BASIC,Fn.PUBLIC];for(let s of o){let u=i[s],c=n.filter(l=>Pu(l._id,s))[0];c==null?n.push(u||i.BASIC):(n=n.filter(l=>l._id!==c._id),c._id=Ch(u._id,c.version),n.push({...u,...c,name:u.name,_id:Ch(u._id,u.version)}))}for(let s of n)if(s.permissions)for(let u of Object.keys(s.permissions))s.permissions=DUe(s.permissions,u);return n}a(t,"internal")}a(AK,"getAllRoles");async function OXt(e){let r=(await e.tryGet("app_metadata"))?.creationVersion;return!r||!bK.default.valid(r)?!0:!bK.default.gte(r,V.MIN_VERSION_WITHOUT_POWER_ROLE)}a(OXt,"shouldIncludePowerRole");var wK=class{static{a(this,"AccessController")}constructor(){this.userHierarchies={}}async hasAccess(t,r){if(t==null||t===""||Pu(t,Fn.BUILDER)||Pu(r,t)||Pu(r,Fn.BUILDER))return!0;let n=r?this.userHierarchies[r]:null;return!n&&r&&(n=await CUe(r),this.userHierarchies[r]=n),n?.find(i=>Pu(i,t))!==void 0}async checkScreensAccess(t,r){let n=[];for(let i of t){let o=await this.checkScreenAccess(i,r);o&&n.push(o)}return n}async checkScreenAccess(t,r){let n=t&&t.routing?t.routing.roleId:void 0;return await this.hasAccess(n,r)?t:null}};function PUe(e){return e?.startsWith("role")?e:Qf(e)}a(PUe,"getDBRoleID");function Ch(e,t){if(e.startsWith(`role${Me}`)&&(Ey(e)||t===_K.NAME)){let r=e.split(Me);return r.shift(),r.join(Me)}return e}a(Ch,"getExternalRoleID");function NUe(e,t){return e&&(typeof e=="string"?Ch(e,t):e.map(r=>Ch(r,t)))}a(NUe,"getExternalRoleIDs");var xi={};oe(xi,{BUILDER:()=>PXt,BUILTIN_PERMISSIONS:()=>ZL,CREATOR:()=>NXt,GLOBAL_BUILDER:()=>LXt,PermissionImpl:()=>Un,PermissionLevel:()=>cd,PermissionType:()=>hS,doesHaveBasePermission:()=>CXt,getAllowedLevels:()=>jUe,getBuiltinPermissionByID:()=>kXt,getBuiltinPermissions:()=>IXt,isPermissionLevelHigherThanRead:()=>DXt,levelToNumber:()=>UUe});var LUe=te(require("lodash/flatten")),FUe=te(require("lodash/fp/cloneDeep"));var Un=class{static{a(this,"PermissionImpl")}constructor(t,r){this.type=t,this.level=r}};function UUe(e){switch(e){case"execute":return 0;case"read":return 1;case"write":return 2;case"admin":return 3;default:return-1}}a(UUe,"levelToNumber");function jUe(e){switch(e){case"execute":return["execute"];case"read":return["execute","read"];case"write":case"admin":return["execute","read","write"];default:return[]}}a(jUe,"getAllowedLevels");var ZL={PUBLIC:{_id:"public",name:"Public",permissions:[new Un("webhook","execute")]},READ_ONLY:{_id:"read_only",name:"Read only",permissions:[new Un("query","read"),new Un("table","read"),new Un("app","read")]},WRITE:{_id:"write",name:"Read/Write",permissions:[new Un("query","write"),new Un("table","write"),new Un("automation","execute"),new Un("legacy_view","read"),new Un("app","read")]},POWER:{_id:"power",name:"Power",permissions:[new Un("table","write"),new Un("user","read"),new Un("automation","execute"),new Un("webhook","read"),new Un("legacy_view","read"),new Un("app","read")]},ADMIN:{_id:"admin",name:"Admin",permissions:[new Un("table","admin"),new Un("user","admin"),new Un("automation","admin"),new Un("webhook","read"),new Un("query","admin"),new Un("legacy_view","read"),new Un("app","read")]}};function IXt(){return(0,FUe.default)(ZL)}a(IXt,"getBuiltinPermissions");function kXt(e){return Object.values(ZL).find(r=>r._id===e)}a(kXt,"getBuiltinPermissionByID");function CXt(e,t,r){let n=[...new Set(r.map(s=>s.permissionId))],i=Object.values(ZL),o=(0,LUe.default)(i.filter(s=>n.indexOf(s._id)!==-1).map(s=>s.permissions));for(let s of o)if(s.type===e&&jUe(s.level).indexOf(t)!==-1)return!0;return!1}a(CXt,"doesHaveBasePermission");function DXt(e){return UUe(e)>1}a(DXt,"isPermissionLevelHigherThanRead");var PXt="builder",NXt="creator",LXt="globalBuilder";var fr={};oe(fr,{adminOnly:()=>y2,auditLog:()=>b2,authError:()=>qa,buildAuthMiddleware:()=>mmr,buildCsrfMiddleware:()=>ymr,buildTenancyMiddleware:()=>gmr,builderOnly:()=>x2,builderOrAdmin:()=>T2,google:()=>Ap,internalApi:()=>R2,joiValidator:()=>GA,oidc:()=>jp,passport:()=>bmr,platformLogout:()=>Smr,refreshOAuthToken:()=>Emr,ssoCallbackUrl:()=>Ph,updateUserOAuth:()=>_mr,workspaceBuilderOrAdmin:()=>TU});var AU={};oe(AU,{adminOnly:()=>y2,auditLog:()=>b2,authError:()=>qa,authenticated:()=>S2,builderOnly:()=>x2,builderOrAdmin:()=>T2,correlation:()=>BUe,csp:()=>nBe,csrf:()=>A2,datasource:()=>Xhr,errorHandling:()=>aBe,featureFlagCookie:()=>oBe,google:()=>Ap,internalApi:()=>R2,ip:()=>sBe,joiValidator:()=>GA,local:()=>bE,oidc:()=>jp,pino:()=>QMe,querystringToBody:()=>bGe,ssoCallbackUrl:()=>Ph,tenancy:()=>xU,workspaceBuilderOrAdmin:()=>TU});var MUe=require("uuid");var FXt=R1(),BUe=a((e,t)=>{let r=e.headers["x-budibase-correlation-id"];return r||(r=(0,MUe.v4)()),FXt.withId(r,()=>t())},"correlationMiddleware");var _rr=KMe(),Srr=R1();function xrr(){return{logger:sL,genReqId:Srr.getId,autoLogging:{ignore:e=>!!e.url?.includes("/health")},serializers:{req:e=>({method:e.method,url:e.url,correlationId:e.id}),res:e=>({status:e.statusCode})}}}a(xrr,"pinoSettings");function Trr(){return V.HTTP_LOGGING?_rr(xrr()):(e,t)=>t()}a(Trr,"getMiddleware");var QMe=Trr();var y2=a(async(e,t)=>(!e.internal&&!ql(e.user)&&e.throw(403,"Admin user only endpoint."),t()),"adminOnly");var b2=a(async(e,t)=>t(),"auditLog");var Arr=/\/:(.*?)(\/.*)?$/g,Ty=a(e=>e?e.map(t=>{let r=t.route,n=t.method,i=r.match(Arr);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"),Ay=a((e,t)=>t.find(({regex:r,method:n})=>{let i=r.test(e.request.url),o=n==="ALL"?!0:e.request.method.toLowerCase()===n.toLowerCase();return i&&o}),"matches");var qc={};oe(qc,{SecretOption:()=>XMe,decrypt:()=>xQ,decryptFile:()=>Drr,encrypt:()=>Irr,encryptFile:()=>krr,getSecret:()=>SQ});var Ep=te(require("crypto")),Dh=te(require("fs")),wQ=require("path"),EQ=te(require("zlib"));var v2="aes-256-ctr",JMe="-",Rrr=1e4,Orr=32,w2=16,_Q=16,XMe=(r=>(r.API="api",r.ENCRYPTION="encryption",r))(XMe||{});function SQ(e){let t,r;switch(e){case"encryption":t=V.ENCRYPTION_KEY,r="ENCRYPTION_KEY";break;case"api":default:t=V.API_ENCRYPTION_KEY,r="API_ENCRYPTION_KEY";break}if(!t)throw new Error(`Secret "${r}" has not been set in environment.`);return t}a(SQ,"getSecret");function E2(e,t){return Ep.default.pbkdf2Sync(e,new Uint8Array(t),Rrr,Orr,"sha512")}a(E2,"stretchString");function Irr(e,t="api"){let r=Ep.default.randomBytes(w2),n=E2(SQ(t),r),i=Ep.default.createCipheriv(v2,new Uint8Array(n),new Uint8Array(r)),o=i.update(e,"utf8"),s=i.final(),u=Buffer.concat([new Uint8Array(o),new Uint8Array(s)]).toString("hex");return`${r.toString("hex")}${JMe}${u}`}a(Irr,"encrypt");function xQ(e,t="api"){let[r,n]=e.split(JMe),i=Buffer.from(r,"hex"),o=E2(SQ(t),i),s=Ep.default.createDecipheriv(v2,new Uint8Array(o),new Uint8Array(i)),u=s.update(n,"hex"),c=s.final();return Buffer.concat([new Uint8Array(u),new Uint8Array(c)]).toString()}a(xQ,"decrypt");async function krr({dir:e,filename:t},r){let n=`${t}.enc`,i=(0,wQ.join)(e,t);if(Dh.default.lstatSync(i).isDirectory())throw new Error("Unable to encrypt directory");let o=Dh.default.createReadStream(i),s=Dh.default.createWriteStream((0,wQ.join)(e,n)),u=Ep.default.randomBytes(w2),c=Ep.default.randomBytes(_Q),l=E2(r,u),f=Ep.default.createCipheriv(v2,new Uint8Array(l),new Uint8Array(c));return s.write(u),s.write(c),o.pipe(EQ.default.createGzip()).pipe(f).pipe(s),new Promise(p=>{s.on("finish",()=>{p({filename:n,dir:e})})})}a(krr,"encryptFile");async function Crr(e){let t=Dh.default.createReadStream(e),r=await YMe(t,w2),n=await YMe(t,_Q);return t.close(),{salt:r,iv:n}}a(Crr,"getSaltAndIV");async function Drr(e,t,r){if(Dh.default.lstatSync(e).isDirectory())throw new Error("Unable to decrypt directory");let{salt:n,iv:i}=await Crr(e),o=Dh.default.createReadStream(e,{start:w2+_Q}),s=Dh.default.createWriteStream(t),u=E2(r,n),c=Ep.default.createDecipheriv(v2,new Uint8Array(u),new Uint8Array(i)),l=EQ.default.createGunzip();return o.pipe(c).pipe(l).pipe(s),new Promise((f,p)=>{s.on("finish",()=>{s.close(),f()}),o.on("error",d=>{s.close(),p(d)}),c.on("error",d=>{s.close(),p(d)}),l.on("error",d=>{s.close(),p(d)}),s.on("error",d=>{s.close(),p(d)})})}a(Drr,"decryptFile");function YMe(e,t){return new Promise((r,n)=>{let i=0,o=[];e.on("readable",()=>{let s;for(;(s=e.read(t-i))!==null;)o.push(s),i+=s.length;r(Buffer.concat(o.map(u=>new Uint8Array(u))))}),e.on("end",()=>{n(new Error("Insufficient data in the stream."))}),e.on("error",s=>{n(s)})})}a(YMe,"readBytes");var eBe=te(require("dd-trace"));var Nrr=V.SESSION_UPDATE_PERIOD?parseInt(V.SESSION_UPDATE_PERIOD):60*1e3;function Lrr(){return new Date(Date.now()-Nrr).toISOString()}a(Lrr,"timeMinusOneMinute");function ZMe(e,t={}){e.publicEndpoint=t.publicEndpoint||!1,e.isAuthenticated=t.authenticated||!1,e.loginMethod=t.loginMethod,e.user=t.user,e.internal=t.internal||!1,e.version=t.version}a(ZMe,"finalise");async function Frr(e,t){if(Px(e))return{valid:!0,user:void 0};let n=xQ(e).split(Me)[0];return Xo(n,async()=>{let i;try{let o=Ar();i=await Jf("by_api_key",{key:e},o)}catch{i=void 0}if(i)return{valid:!0,user:await PA({userId:i,tenantId:n,populateUser:t})};throw new CL})}a(Frr,"checkApiKey");function _2(e,t){let r=e.request.headers[t];if(Array.isArray(r))throw new Error("Unexpected header format");return r}a(_2,"getHeader");function S2(e=[],t={publicAllowed:!1}){let r=e?Ty(e):[];return async(n,i)=>{let o=!1,s=_2(n,"x-budibase-api-version");Ay(n,r)&&(o=!0);try{let c=_2(n,"x-budibase-token"),l=Zf(n,"budibase:auth")||S1(c),f=_2(n,"x-budibase-api-key");!f&&n.request.headers.authorization&&(f=n.request.headers.authorization.split(" ")[1]);let p=_2(n,"x-budibase-tenant-id"),d=!1,h,m=!1,g;if(l&&!f){let b=l.sessionId,v=l.userId,w;try{w=await L2e(v,b),t&&t.populateUser?h=await PA({userId:v,tenantId:w.tenantId,email:w.email,populateUser:t.populateUser(n)}):h=await PA({userId:v,tenantId:w.tenantId,email:w.email}),h.csrfToken=w.csrfToken,g="cookie",w?.lastAccessedAt<Lrr()&&await N2e(w),d=!0}catch(x){d=!1,console.error(`Auth Error: ${x.message}`),Hd(n,"budibase:auth")}}if(!d&&f){let b=t.populateUser?t.populateUser(n):null,{valid:v,user:w}=await Frr(f,b);v&&(d=!0,g="api_key",h=w,m=!w)}!h&&p?h={tenantId:p}:h&&"password"in h&&delete h.password,d||(d=!1);let y=a(b=>b&&b.email,"isUser");return y(h)&&eBe.default.setUser({id:h._id,tenantId:h.tenantId,budibaseAccess:h.budibaseAccess,status:h.status}),ZMe(n,{authenticated:d,user:h,internal:m,version:s,publicEndpoint:o,loginMethod:g}),y(h)?F4(h,n,i):i()}catch(c){if(console.error(`Auth Error: ${c.message}`),c?.name==="JsonWebTokenError"?Hd(n,"budibase:auth"):c?.code==="invalid_api_key"&&n.throw(403,c.message),t&&t.publicAllowed||o)return ZMe(n,{authenticated:!1,version:s,publicEndpoint:o}),i();n.throw(c.status||403,c)}}}a(S2,"authenticated");async function x2(e,t){if(e.internal)return t();let r=await bg(e);return!r&&!V.isWorker()?e.throw(403,"This request required a workspace id."):!r&&!ss(e.user)?e.throw(403,"Builder user only endpoint."):r&&!sE(e.user,r)&&e.throw(403,"Workspace builder user only endpoint."),t()}a(x2,"builderOnly");async function T2(e,t){if(e.internal||ql(e.user))return t();let r=await bg(e);return!r&&!V.isWorker()?e.throw(403,"This request required a workspace id."):!r&&!ss(e.user)?e.throw(403,"Admin/Builder user only endpoint."):r&&!sE(e.user,r)&&e.throw(403,"Workspace Admin/Builder user only endpoint."),t()}a(T2,"builderOrAdmin");var rBe=te(require("crypto"));var tBe={"default-src":["'self'"],"script-src":["'self'","'unsafe-eval'","https://*.budibase.net","https://cdn.budi.live","https://js.intercomcdn.com","https://widget.intercom.io","https://d2l5prqdbvm3op.cloudfront.net","https://us-assets.i.posthog.com","https://www.google.com/recaptcha/api.js"],"style-src":["'self'","'unsafe-inline'","https://cdn.jsdelivr.net","https://fonts.googleapis.com","https://rsms.me","https://maxcdn.bootstrapcdn.com"],"object-src":["'none'"],"base-uri":["'self'"],"connect-src":["'self'","https://*.budibase.app","https://*.budibaseqa.app","https://*.budibase.net","https://api-iam.intercom.io","https://api-ping.intercom.io","https://app.posthog.com","https://us.i.posthog.com","wss://nexus-websocket-a.intercom.io","wss://nexus-websocket-b.intercom.io","https://nexus-websocket-a.intercom.io","https://nexus-websocket-b.intercom.io","https://uploads.intercomcdn.com","https://uploads.intercomusercontent.com","https://*.amazonaws.com","https://*.s3.amazonaws.com","https://*.s3.us-east-2.amazonaws.com","https://*.s3.us-east-1.amazonaws.com","https://*.s3.us-west-1.amazonaws.com","https://*.s3.us-west-2.amazonaws.com","https://*.s3.af-south-1.amazonaws.com","https://*.s3.ap-east-1.amazonaws.com","https://*.s3.ap-south-1.amazonaws.com","https://*.s3.ap-northeast-2.amazonaws.com","https://*.s3.ap-southeast-1.amazonaws.com","https://*.s3.ap-southeast-2.amazonaws.com","https://*.s3.ap-northeast-1.amazonaws.com","https://*.s3.ca-central-1.amazonaws.com","https://*.s3.cn-north-1.amazonaws.com","https://*.s3.cn-northwest-1.amazonaws.com","https://*.s3.eu-central-1.amazonaws.com","https://*.s3.eu-west-1.amazonaws.com","https://*.s3.eu-west-2.amazonaws.com","https://*.s3.eu-south-1.amazonaws.com","https://*.s3.eu-west-3.amazonaws.com","https://*.s3.eu-north-1.amazonaws.com","https://*.s3.sa-east-1.amazonaws.com","https://*.s3.me-south-1.amazonaws.com","https://*.s3.us-gov-east-1.amazonaws.com","https://*.s3.us-gov-west-1.amazonaws.com","https://api.github.com"],"font-src":["'self'","data:","https://cdn.jsdelivr.net","https://fonts.gstatic.com","https://rsms.me","https://maxcdn.bootstrapcdn.com","https://js.intercomcdn.com","https://fonts.intercomcdn.com"],"frame-src":["'self'","https:"],"img-src":["http:","https:","data:","blob:"],"manifest-src":["'self'"],"media-src":["'self'","https://js.intercomcdn.com","https://cdn.budi.live"],"worker-src":["blob:","'self'"]},Urr=/^[A-Za-z0-9-*:/.]+$/,nBe=a(async(e,t)=>{let r=rBe.default.randomBytes(16).toString("base64");e.state.nonce=r;let n={...tBe};if(n["script-src"]=[...tBe["script-src"],`'nonce-${r}'`],e.user?.license?.features.includes("customAppScripts")&&e.appId)try{let s=await Tx.getWorkspaceMetadata(e.appId);if("name"in s)for(let u of s.scripts||[]){let c=(u.cspWhitelist||"").split(`
536
- `).filter(l=>Urr.test(l));n["default-src"]=[...n["default-src"],...c]}}catch(s){console.error(`Error occurred in Content-Security-Policy middleware: ${s}`)}let o=Object.entries(n).map(([s,u])=>`${s} ${u.join(" ")}`).join("; ");e.set("Content-Security-Policy",o),await t()},"contentSecurityPolicy");var jrr=["GET","HEAD","OPTIONS"],Mrr=["application/x-www-form-urlencoded","multipart/form-data","text/plain"];function A2(e={noCsrfPatterns:[]}){let t=Ty(e.noCsrfPatterns);return async(r,n)=>{if(Ay(r,t)||jrr.indexOf(r.method)!==-1)return n();let o=r.get("content-type")?r.get("content-type").toLowerCase():"";if(!Mrr.filter(c=>o.includes(c)).length||r.internal)return n();let s=r.user?.csrfToken;if(!s)return n();let u=r.get("x-csrf-token");return(!u||u!==s)&&r.throw(403,"Invalid CSRF token"),n()}}a(A2,"csrf");function iBe(e){if(e.includes("-----BEGIN PRIVATE KEY-----"))return!0;for(let t of Sfe){let r=V[t];if(!(typeof r!="string"||r==="")&&e.includes(r))return!0}return!1}a(iBe,"stringContainsSecret");async function aBe(e,t){try{await t()}catch(r){let n=r.status||r.statusCode||500;e.status=n,n>=400&&n<500?console.warn(r):console.error("Got 400 response code",r);let i={message:r.message,status:n,validationErrors:r.validation,error:T2e(r)};if(iBe(JSON.stringify(i))&&(i={message:"Unexpected error",status:n,error:"Unexpected error"}),V.isTest()&&e.headers["x-budibase-include-stacktrace"]){let o=r;for(;o.cause;)o=o.cause;i.stack=o.stack}e.body=i}}a(aBe,"errorHandling");var oBe=a(async(e,t)=>{let n=Zf(e,"budibase:featureflags")?.flags||{};await B$(n,async()=>{await t()})},"featureFlagCookie");async function R2(e,t){let r=e.request.headers["x-budibase-api-key"];return r||e.throw(403,"Unauthorized"),Array.isArray(r)&&e.throw(403,"Unauthorized"),Px(r)||e.throw(403,"Unauthorized"),t()}a(R2,"internalApi");async function sBe(e,t){return e.ip?await F$(e.ip,()=>t()):t()}a(sBe,"ip");var GA={};oe(GA,{body:()=>Brr,params:()=>qrr});var TQ=te(require("joi"));function uBe(e,t,r){let n=r?.errorPrefix??`Invalid ${t}`;return(i,o)=>{if(!e)return o();let s=null,u=i.request?.[t];i[t]!=null?s=i[t]:u!=null&&(s=u),e.append&&(e=e.append({createdAt:TQ.default.any().optional(),updatedAt:TQ.default.any().optional()}));let{error:c}=e.validate(s,{allowUnknown:r?.allowUnknown});if(c){let l=c.message;n&&(l=`Invalid ${t} - ${l}`),i.throw(400,l)}return o()}}a(uBe,"validate");function Brr(e,t){return uBe(e,"body",t)}a(Brr,"body");function qrr(e,t){return uBe(e,"params",t)}a(qrr,"params");var bE={};oe(bE,{authenticate:()=>Wrr,options:()=>zrr});function qa(e,t,r){return e(r,null,{message:t})}a(qa,"authError");async function Ph(e,t){if(t&&t.callbackURL)return t.callbackURL;let r=await mK(),n="/api/global/auth";return Wd()&&(n+=`/${Pt()}`),n+=`/${e}/callback`,`${r.platformUrl}${n}`}a(Ph,"ssoCallbackUrl");var AQ="Invalid credentials",$rr="This account has expired. Please reset your password",zrr={passReqToCallback:!0};async function Wrr(e,t,r,n){if(!t)return qa(n,"Email Required");if(!r)return qa(n,"Password Required");let i=await jc(t);return i==null?(console.info(`user=${t} could not be found`),qa(n,AQ)):i.status==="inactive"?(console.info(`user=${t} is inactive`,i),qa(n,AQ)):i.password?await P4(r,i.password)?(delete i.password,n(null,i)):qa(n,AQ):(console.info(`user=${t} has no password set`,i),qa(n,$rr))}a(Wrr,"authenticate");var Ap={};oe(Ap,{buildVerifyFn:()=>qqe,getCallbackUrl:()=>iir,strategyFactory:()=>lY});var HA=a(e=>Promise.resolve(e),"ssoSaveUserNoOp");async function O2(e,t=!0,r,n){if(!n)throw new Error("Save user function must be provided");if(!e.userId)return qa(r,"sso user id required");if(!e.email)return qa(r,"sso user email required");let i=Qv(e.userId),o;try{o=await yy(i)}catch(u){if(!u.status||u.status!==404)return qa(r,"Unexpected error when retrieving existing user",u)}if(o||(o=await jc(e.email)),!o&&t)return qa(r,"Email does not yet exist. You must set up your local budibase account first.");o||(o={_id:i,email:e.email,roles:{},tenantId:Pt()});let s=await Grr(o,e);s.forceResetPassword=!1;try{delete s.password,s=await n(s,{hashPassword:!1,requirePassword:!1})}catch(u){return qa(r,"Error saving user",u)}return r(null,s)}a(O2,"authenticate");async function Grr(e,t){let r,n,i;if(t.profile){let o=t.profile;if(o.name){let s=o.name;s.givenName&&(r=s.givenName),s.familyName&&(n=s.familyName)}}return t.oauth2&&(i={...t.oauth2}),{...e,provider:t.provider,providerType:t.providerType,firstName:r,lastName:n,oauth2:i}}a(Grr,"syncUser");var nir=uY().OAuth2Strategy;function qqe(e){return(t,r,n,i)=>{let o={provider:"google",providerType:"google",userId:n.id,profile:n,email:n._json.email,oauth2:{accessToken:t,refreshToken:r}};return O2(o,!0,i,e)}}a(qqe,"buildVerifyFn");async function lY(e,t,r){try{let{clientID:n,clientSecret:i}=e;if(!n||!i)throw new Error("Configuration invalid. Must contain google clientID and clientSecret");let o=qqe(r);return new nir({clientID:e.clientID,clientSecret:e.clientSecret,callbackURL:t},o)}catch(n){throw new Error(`Error constructing google authentication strategy: ${n}`)}}a(lY,"strategyFactory");async function iir(e){return Ph("google",e)}a(iir,"getCallbackUrl");var jp={};oe(jp,{buildVerifyFn:()=>yGe,fetchStrategyConfig:()=>Vhr,getCallbackUrl:()=>Khr,strategyFactory:()=>Hhr});var gGe=te(require("node-fetch"));var Whr=mGe().Strategy;function yGe(e){return async(t,r,n,i,o,s,u,c,l)=>{let f={provider:t,providerType:"oidc",userId:n.id,profile:n,email:Ghr(n,i),oauth2:{accessToken:o,refreshToken:s}};return O2(f,!1,l,e)}}a(yGe,"buildVerifyFn");function Ghr(e,t){if(e._json.email)return e._json.email;if(t.email)return t.email;let r=t.preferred_username;if(r&&sz(r))return r;throw new Error(`Could not determine user email from profile ${JSON.stringify(e)} and claims ${JSON.stringify(t)}`)}a(Ghr,"getEmail");async function Hhr(e,t){try{let r=yGe(t),n=new Whr(e,r);return n.name="oidc",n}catch(r){throw new Error(`Error constructing OIDC authentication strategy - ${r}`)}}a(Hhr,"strategyFactory");async function Vhr(e,t){try{let{clientID:r,clientSecret:n,configUrl:i,pkce:o}=e;if(!r||!n||!t||!i)throw new Error("Configuration invalid. Must contain clientID, clientSecret, callbackUrl and configUrl");let s=await(0,gGe.default)(i);if(!s.ok)throw new Error(`Unexpected response when fetching openid-configuration: ${s.statusText}`);let u=await s.json();return{issuer:u.issuer,authorizationURL:u.authorization_endpoint,tokenURL:u.token_endpoint,userInfoURL:u.userinfo_endpoint,clientID:r,clientSecret:n,callbackURL:t,pkce:o}}catch(r){throw new Error(`Error constructing OIDC authentication configuration - ${r}`)}}a(Vhr,"fetchStrategyConfig");async function Khr(){return Ph("oidc")}a(Khr,"getCallbackUrl");function bGe(e,t){let r=e.request.query?.query;if(e.request.method.toLowerCase()!=="get"&&e.throw(500,"Query to download middleware can only be used for get requests."),!r)return t();let n=decodeURIComponent(r),i;try{i=JSON.parse(n)}catch{return t()}return e.request.body=i,t()}a(bGe,"querystringToBody");function xU(e,t,r={noTenancyRequired:!1}){let n=Ty(e),i=Ty(t);return async function(o,s){let c={allowNoTenant:r.noTenancyRequired||!!Ay(o,i)};!!Ay(o,n)||(c.excludeStrategies=["query"]);let f=Cx(o,c);return o.set("x-budibase-tenant-id",f),Xo(f,s)}}a(xU,"tenancy");async function TU(e,t){if(e.internal||ql(e.user))return t();let r=await bg(e);return r&&!PL(e.user,r)?e.throw(403,"Workspace Admin/Builder user only endpoint."):!r&&!V.isWorker()?e.throw(403,"This request required a workspace id."):!r&&!ss(e.user)&&e.throw(403,"Admin/Builder user only endpoint."),t()}a(TU,"workspaceBuilderOrAdmin");var YX={};oe(YX,{postAuth:()=>Jhr,preAuth:()=>Yhr});var Qhr=uY().OAuth2Strategy;async function vGe(){let e=await gK();if(!e)throw new Error("No google configuration found");return e}a(vGe,"fetchGoogleCreds");async function Yhr(e,t,r){let n=await vGe(),o=`${await jA({tenantAware:!1})}/api/global/auth/datasource/google/callback`,s=await lY(n,o,HA);return t.query.appId||t.throw(400,"appId query param not present."),e.authenticate(s,{scope:["profile","email","https://www.googleapis.com/auth/spreadsheets"],accessType:"offline",prompt:"consent"})(t,r)}a(Yhr,"preAuth");async function Jhr(e,t,r){let n=await vGe(),o=`${await jA({tenantAware:!1})}/api/global/auth/datasource/google/callback`,s=Zf(t,"budibase:datasourceauth");if(!s)throw new Error("Unable to fetch datasource auth cookie");return e.authenticate(new Qhr({clientID:n.clientID,clientSecret:n.clientSecret,callbackURL:o},(u,c,l,f)=>{Hd(t,"budibase:datasourceauth"),f(null,{accessToken:u,refreshToken:c})}),{successRedirect:"/",failureRedirect:"/error"},async(u,c)=>{let l=`/builder/workspace/${s.appId}/data`,f=kn();await mp(`datasource:creation:${s.appId}:google:${f}`,{tokens:c}),t.redirect(`${l}/new?continue_google_setup=${f}`)})(t,r)}a(Jhr,"postAuth");var Xhr={google:YX};var uHe=XGe(),hmr=oHe().Strategy,PU=sHe(),mmr=S2,gmr=xU,ymr=A2,bmr=uHe;uHe.use(new hmr(bE.options,bE.authenticate));async function vmr(e,t){let r=await jp.getCallbackUrl(),n,i;try{if(n=await jp.fetchStrategyConfig(e,r),!n)throw new Error("OIDC Config contents invalid");i=await jp.strategyFactory(n,HA)}catch{throw new Error("Could not refresh OAuth Token")}return PU.use(i,{setRefreshOAuth2(){return i._getOAuth2Client(n)}}),new Promise(o=>{PU.requestNewAccessToken("oidc",t,(s,u,c,l)=>{o({err:s,accessToken:u,refreshToken:c,params:l})})})}a(vmr,"refreshOIDCAccessToken");async function wmr(e,t){let r=await Ap.getCallbackUrl(e),n;try{n=await Ap.strategyFactory(e,r,HA)}catch(i){throw new Error(`Error constructing OIDC refresh strategy: message=${i.message}`)}return PU.use(n),new Promise(i=>{PU.requestNewAccessToken("google",t,(o,s,u,c)=>{i({err:o,accessToken:s,refreshToken:u,params:c})})})}a(wmr,"refreshGoogleAccessToken");async function Emr(e,t,r){switch(t){case"oidc":{if(!r)return{err:{data:"OIDC config id not provided"}};let n=await yK(r);return n?vmr(n,e):{err:{data:"OIDC configuration not found"}}}case"google":{let n=await YL();return n?wmr(n,e):{err:{data:"Google configuration not found"}}}}}a(Emr,"refreshOAuthToken");async function _mr(e,t){let r={accessToken:t.accessToken,refreshToken:t.refreshToken};try{let n=Ar(),i=await n.get(e);typeof r.refreshToken!="string"&&delete r.refreshToken,i.oauth2={...i.oauth2,...r},await n.put(i),await NA(e)}catch(n){console.error("Could not update OAuth details for current user",n)}}a(_mr,"updateUserOAuth");async function Smr(e){let t=e.ctx,r=e.userId,n=e.keepActiveSession;if(!t)throw new Error("Koa context must be supplied to logout.");let i=Zf(t,"budibase:auth"),o=await W7(r);i&&n?o=o.filter(u=>u.sessionId!==i.sessionId):Hd(t,"budibase:auth");let s=o.map(({sessionId:u})=>u);await kA(r,{sessionIds:s,reason:"logout"}),await OL.logout(t.user?.email),await NA(r)}a(Smr,"platformLogout");var LU={};oe(LU,{validate:()=>Omr});var nt=te(require("joi"));var xmr=["Relational","Non-relational","Spreadsheet","Object store","Graph","API"];function cZ(e,t){let{error:r}=e.validate(t);if(r)throw r}a(cZ,"runJoi");function Tmr(e){let t=nt.default.object({type:nt.default.string().allow("component").required(),metadata:nt.default.object().unknown(!0).required(),hash:nt.default.string().optional(),version:nt.default.string().optional(),schema:nt.default.object({name:nt.default.string().required(),settings:nt.default.array().items(nt.default.object().unknown(!0)).required()}).unknown(!0)});cZ(t,e)}a(Tmr,"validateComponent");function Amr(e){let t=nt.default.object({type:nt.default.string().allow(...Object.values(Pi)).required(),required:nt.default.boolean().required(),default:nt.default.any(),display:nt.default.string()}),r=nt.default.object({type:nt.default.string().allow(...Object.values(Ki)),readable:nt.default.boolean(),displayName:nt.default.string(),fields:nt.default.object().pattern(nt.default.string(),t)}).required(),n=nt.default.object({type:nt.default.string().allow("datasource").required(),metadata:nt.default.object().unknown(!0).required(),hash:nt.default.string().optional(),version:nt.default.string().optional(),schema:nt.default.object({docs:nt.default.string(),plus:nt.default.boolean().optional(),isSQL:nt.default.boolean().optional(),auth:nt.default.object({type:nt.default.string().required()}).optional(),features:nt.default.object(Object.fromEntries(Object.values(ma).map(i=>[i,nt.default.boolean().optional()]))).optional(),relationships:nt.default.boolean().optional(),description:nt.default.string().required(),friendlyName:nt.default.string().required(),type:nt.default.string().allow(...xmr),datasource:nt.default.object().pattern(nt.default.string(),t).required(),query:nt.default.object().pattern(nt.default.string(),r).unknown(!0).required(),extra:nt.default.object().pattern(nt.default.string(),nt.default.object({type:nt.default.string().required(),displayName:nt.default.string().required(),required:nt.default.boolean(),data:nt.default.object()}))})});cZ(n,e)}a(Amr,"validateDatasource");function Rmr(e){let t=nt.default.object().pattern(nt.default.string(),{type:nt.default.string().allow(...Object.values(Zt)).required(),customType:nt.default.string().allow(...Object.values(yn)),title:nt.default.string(),description:nt.default.string(),enum:nt.default.array().items(nt.default.string()),pretty:nt.default.array().items(nt.default.string())}),r=nt.default.object({properties:t,required:nt.default.array().items(nt.default.string())}).concat(t).required(),n=nt.default.object({type:nt.default.string().allow("automation").required(),metadata:nt.default.object().unknown(!0).required(),hash:nt.default.string().optional(),version:nt.default.string().optional(),schema:nt.default.object({name:nt.default.string().required(),tagline:nt.default.string().required(),icon:nt.default.string().required(),description:nt.default.string().required(),type:nt.default.string().allow("ACTION","LOGIC").required(),stepId:nt.default.string().disallow(...cse).required(),inputs:nt.default.object().optional(),schema:nt.default.object({inputs:r,outputs:r}).required()})});cZ(n,e)}a(Rmr,"validateAutomation");function Omr(e){switch(e?.type){case"component":Tmr(e);break;case"datasource":Amr(e);break;case"automation":Rmr(e);break;default:throw new Error(`Unknown plugin type - check schema.json: ${e.type}`)}}a(Omr,"validate");var Mp={};oe(Mp,{Client:()=>to,clients:()=>Gd,locks:()=>Mc,utils:()=>uC});var jU={};oe(jU,{isBlacklisted:()=>kmr,refreshBlacklist:()=>pHe});var cHe=te(require("dns")),UU=te(require("net"));var lHe=require("util");var FU,Imr=(0,lHe.promisify)(cHe.default.lookup);async function fHe(e){return UU.default.isIP(e)||(e.startsWith("http")||(e=`https://${e}`),e=new URL(e).hostname),(await Imr(e,{all:!0})).map(r=>r.address)}a(fHe,"lookup");async function pHe(){let t=V.BLACKLIST_IPS?.split(",")||[],r=[];for(let n of t){let i=n.trim();if(UU.default.isIP(i))r.push(i);else{let o=await fHe(i);r=r.concat(o)}}FU=r}a(pHe,"refreshBlacklist");async function kmr(e){if(FU||await pHe(),FU?.length===0)return!1;let t;return UU.default.isIP(e)?t=[e]:t=await fHe(e),!!FU?.find(r=>t.includes(r))}a(kmr,"isBlacklisted");var Ibn={"user:created":e=>e.userId,"user:updated":e=>e.userId,"user:deleted":e=>e.userId,"user:admin:assigned":e=>e.userId,"user:admin:removed":e=>e.userId,"user:builder:assigned":e=>e.userId,"user:builder:removed":e=>e.userId,"user_group:created":e=>e.groupId,"user_group:updated":e=>e.groupId,"user_group:deleted":e=>e.groupId,"user_group:user_added":e=>e.groupId,"user_group:users_deleted":e=>e.groupId,"user_group:permissions_edited":e=>e.groupId,"automation:deleted":e=>e.automationId,"datasource:deleted":e=>e.datasourceId,"table:deleted":e=>e.tableId,"query:deleted":e=>e.queryId,"workspace_app:deleted":e=>e.workspaceAppId,"view:deleted":e=>e.id};var Vt={};oe(Vt,{COUNT_FIELD_NAME:()=>gZ,Sql:()=>SHe,SqlTable:()=>MU,designDoc:()=>yZ,utils:()=>I$});var bHe=require("knex");var Cmr=require("knex");function lZ(e){return["link","formula","ai"].indexOf(e)!==-1}a(lZ,"isIgnoredType");function hHe(e,t,r,n,i){let o=t&&t.primary?t.primary:[],s=Object.values(t.schema),u=s.filter(d=>d.meta),c=u.length===s.length,l=[];n||(c?e.primary(u.map(d=>d.name)):o.length===1?(e.increments(o[0]).primary(),l.push(o[0])):e.primary(o));let f=Object.values(t.schema).map(d=>d.foreignKey);for(let[d,h]of Object.entries(t.schema)){let m=n?.schema[d];if(m&&m.type||l.includes(d)||i?.updated===d)continue;let g=h.type;switch(g){case"string":case"options":case"longform":case"barcodeqr":case"bb_reference_single":o.includes(d)?e.string(d,255):e.text(d);break;case"number":if(h.meta&&h.meta.toKey&&h.meta.toTable){let{toKey:y,toTable:b}=h.meta;e.integer(d).unsigned(),e.foreign(d).references(`${b}.${y}`)}else f.indexOf(d)===-1&&e.float(d);break;case"bigint":e.bigint(d);break;case"boolean":e.boolean(d);break;case"datetime":h.timeOnly?e.time(d):e.datetime(d,{useTz:!h.ignoreTimezones});break;case"array":case"bb_reference":Ye.schema.isDeprecatedSingleUserColumn(h)?e.text(d):e.json(d);break;case"link":if(h.relationshipType!=="many-to-one"&&h.relationshipType!=="many-to-many"){if(!h.foreignKey||!h.tableId)throw new Error("Invalid relationship schema");let{tableName:y}=x$(h.tableId),b=r[y];if(!b||!b.primary)throw new Error("Referenced table doesn't exist or has no primary keys");let v=b.primary[0],w=b.schema[v].externalType;w?e.specificType(h.foreignKey,w):e.integer(h.foreignKey).unsigned(),e.foreign(h.foreignKey).references(`${y}.${v}`)}break;case"signature_single":case"attachment":case"attachment_single":e.json(d);break;case"formula":break;case"ai":break;case"auto":case"json":case"internal":throw new Error(`${h.type} is not a valid SQL type`);default:$t.unreachable(g)}}let p=i?n?.schema[i.old].type:void 0;return i&&p&&!lZ(p)&&e.renameColumn(i.old,i.updated),n&&Object.entries(n.schema).filter(([h,m])=>!lZ(m.type)&&t.schema[h]==null).forEach(([h,m])=>{i?.old===h||lZ(m.type)||(n.constrained&&n.constrained.indexOf(h)!==-1&&e.dropForeign(h),e.dropColumn(h))}),e}a(hHe,"generateSchema");function Dmr(e,t,r){return e.createTable(t.name,n=>{hHe(n,t,r)})}a(Dmr,"buildCreateTable");function Pmr(e,t,r,n,i){return e.alterTable(t.name,o=>{hHe(o,t,r,n,i)})}a(Pmr,"buildUpdateTable");function Nmr(e,t){return e.dropTable(t.name)}a(Nmr,"buildDeleteTable");var fZ=class{static{a(this,"SqlTableQueryBuilder")}constructor(t){this.sqlClient=t}getBaseSqlClient(){return this.sqlClient}getSqlClient(){return this.extendedSqlClient||this.sqlClient}setExtendedSqlClient(t){this.extendedSqlClient=t}_operation(t){return t.operation}_tableQuery(t){let r=(0,Cmr.knex)({client:this.sqlClient}).schema;t?.schema&&(r=r.withSchema(t.schema));let n;if(!t.table||!t.tables)throw new Error("Cannot execute without table being specified");if(t.table.sourceType==="internal")throw new Error("Cannot perform table actions for SQS.");switch(this._operation(t)){case"CREATE_TABLE":n=Dmr(r,t.table,t.tables);break;case"UPDATE_TABLE":if(!t.table)throw new Error("Must specify old table for update");if(this.sqlClient==="mysql2"&&t.meta?.renamed){let i=t.meta.renamed.updated;return{sql:`alter table ${t?.schema?`\`${t.schema}\`.\`${t.table.name}\``:`\`${t.table.name}\``} rename column \`${t.meta.renamed.old}\` to \`${i}\`;`,bindings:[]}}if(n=Pmr(r,t.table,t.tables,t.meta?.oldTable,t.meta?.renamed),this.sqlClient==="mssql"&&t.meta?.renamed){let i=t.meta.renamed.old,o=t.meta.renamed.updated,s=t?.schema?`${t.schema}.${t.table.name}`:`${t.table.name}`,u=Wv(n);if(Array.isArray(u))for(let c of u)c.sql.startsWith("exec sp_rename")&&(c.sql=`exec sp_rename '${s}.${i}', '${o}', 'COLUMN'`,c.bindings=[]);return u}break;case"DELETE_TABLE":n=Nmr(r,t.table);break;default:throw new Error("Table operation is of unknown type")}return Wv(n)}},MU=fZ;var vHe=require("lodash");var gZ="__bb_total";function mHe(){return(V.SQL_MAX_ROWS?parseInt(V.SQL_MAX_ROWS):null)||5e3}a(mHe,"getBaseLimit");function pZ(){return(V.SQL_MAX_RELATED_ROWS?parseInt(V.SQL_MAX_RELATED_ROWS):null)||500}a(pZ,"getRelationshipLimit");function Fmr(e,t){return e.sort((r,n)=>{let i=t.find(s=>s&&r.endsWith(s)),o=t.find(s=>s&&n.endsWith(s));return i&&!o?-1:!i&&o?1:r.localeCompare(n)})}a(Fmr,"prioritisedArraySort");function wHe(e){return Array.isArray(e)?e.map(t=>wHe(t)):(e.bindings&&(e.bindings=e.bindings.map(t=>typeof t=="boolean"?t?1:0:t)),e)}a(wHe,"convertBooleans");function gHe(e){return e.sourceType==="internal"||e.sourceId===Ko}a(gHe,"isSqs");function Umr(e,t='"'){return e.replace(new RegExp(t,"g"),`${t}${t}`)}a(Umr,"escapeQuotes");function EHe(e,t='"'){return`${t}${Umr(e,t)}${t}`}a(EHe,"wrap");function dZ(e,t='"'){for(let r in e)typeof e[r]=="string"&&(e[r]=EHe(e[r],t));return`[${e.join(",")}]`}a(dZ,"stringifyArray");function _He(e){return fk.includes(e.type)&&!Ye.schema.isDeprecatedSingleUserColumn(e)}a(_He,"isJsonColumn");var jmr={equal:!1,notEqual:!0,empty:!1,notEmpty:!0,fuzzy:!1,string:!1,range:!1,contains:!1,notContains:!0,containsAny:!1,oneOf:!1,$and:!1,$or:!1},hZ=class{constructor(t,r,n){this.SPECIAL_SELECT_CASES={POSTGRES_ARRAY:t=>this.client==="pg"&&t?.externalType?.toLowerCase()==="array",POSTGRES_MONEY:t=>this.client==="pg"&&t?.externalType?.includes("money"),POSTGRES_ENUM:t=>this.client==="pg"&&t?.externalType?.toLowerCase()==="user-defined"&&t?.type==="options",MSSQL_DATES:t=>this.client==="mssql"&&t?.type==="datetime"&&t.timeOnly};this.client=t,this.query=n,this.knex=r,this.splitter=new Lr.ColumnSplitter([this.table],{aliases:this.query.tableAliases,columnPrefix:this.query.meta?.columnPrefix})}static{a(this,"InternalBuilder")}get table(){return this.query.table}get knexClient(){return this.knex.client}getFieldSchema(t){let{column:r}=this.splitter.run(t);return this.table.schema[r]}requiresJsonAsStringClient(){return["mssql","mysql2","mariadb","oracledb"].includes(this.client)}quoteChars(){let t=this.knexClient.wrapIdentifier("foo",{});return[t[0],t[t.length-1]]}quote(t){return this.knexClient.wrapIdentifier(t,{})}isQuoted(t){let[r,n]=this.quoteChars();return t.startsWith(r)&&t.endsWith(n)}quotedIdentifier(t){return Array.isArray(t)||(t=this.splitIdentifier(t)),t.map(r=>this.quote(r)).join(".")}castIntToString(t){switch(this.client){case"oracledb":return this.knex.raw("to_char(??)",[t]);case"pg":return this.knex.raw("??::TEXT",[t]);case"mysql2":case"mariadb":return this.knex.raw("CAST(?? AS CHAR)",[t]);case"sqlite3":return this.knex.raw("printf('%d', ??)",[t]);case"mssql":return this.knex.raw("CONVERT(NVARCHAR, ??)",[t])}}rawQuotedIdentifier(t){return this.knex.raw(this.quotedIdentifier(t))}splitIdentifier(t){let[r,n]=this.quoteChars();return this.isQuoted(t)?t.slice(1,-1).split(`${n}.${r}`):t.split(".")}qualifyIdentifier(t){let r=this.getTableName(),n=this.splitIdentifier(t);return n[0]!==r&&n.unshift(r),this.isQuoted(t)?this.quotedIdentifier(n):n.join(".")}generateSelectStatement(){let{table:t,resource:r}=this.query;if(!r||!r.fields||r.fields.length===0)return"*";let n=this.getTableName(t),i=this.table.schema;return r.fields.map(s=>{let u=s.split(/\./g),c,l=u[0];return u.length>1&&(c=u[0],l=u.slice(1).join(".")),{table:c,column:l,field:s}}).filter(({table:s})=>!s||s===n).map(({table:s,column:u,field:c})=>{let l=i[u];return this.SPECIAL_SELECT_CASES.POSTGRES_MONEY(l)?this.knex.raw("??::money::numeric as ??",[this.rawQuotedIdentifier([s,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))]):s?this.rawQuotedIdentifier(`${s}.${u}`):this.rawQuotedIdentifier(c)})}convertClobs(t,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(t).pop(),o=this.table.schema[i],s=this.rawQuotedIdentifier(t);return(o.type==="string"||o.type==="longform"||o.type==="bb_reference_single"||o.type==="bb_reference"||o.type==="options"||o.type==="barcodeqr")&&(r?.forSelect?s=this.knex.raw("to_char(??) as ??",[s,this.rawQuotedIdentifier(i)]):s=this.knex.raw("to_char(??)",[s])),s}parse(t,r){if(Array.isArray(t))return JSON.stringify(t);if(t==null)return null;if(this.requiresJsonAsStringClient()&&_He(r)&&typeof t=="object")return JSON.stringify(t);if(this.SPECIAL_SELECT_CASES.POSTGRES_ARRAY(r))return`{${t}}`;if(this.client==="oracledb"&&r.type==="datetime"&&r.timeOnly){if(t instanceof Date){let n=t.getHours().toString().padStart(2,"0"),i=t.getMinutes().toString().padStart(2,"0"),o=t.getSeconds().toString().padStart(2,"0");return`${n}:${i}:${o}`}if(typeof t=="string")return new Date(`1970-01-01T${t}Z`)}if(typeof t=="string"&&r.type==="datetime")if(r.timeOnly){if(!R$(t))return null}else if(r.dateOnly){let n=A$(t);return n?new Date(n):null}else return r.ignoreTimezones?f1(t)?new Date(t):T$(t)?new Date(t+"Z"):null:f1(t)?new Date(t.trim()):null;return t}parseBody(t){for(let[r,n]of Object.entries(t)){let{column:i}=this.splitter.run(r),o=this.table.schema[i];o&&(t[r]=this.parse(n,o))}return t}parseFilters(t){t=(0,vHe.cloneDeep)(t);for(let r of Object.values(Sm)){let n=t[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),s=this.table.schema[o];s&&(n[i]=this.parse(n[i],s))}}for(let r of Object.values(ll)){let n=t[r];if(n)for(let i of Object.keys(n)){let{column:o}=this.splitter.run(i),s=this.table.schema[o];s&&(n[i]=n[i].map(u=>this.parse(u,s)))}}for(let r of Object.values(Mb)){let n=t[r];if(n)for(let i of Object.keys(n)){let{column:o}=this.splitter.run(i),s=this.table.schema[o];if(!s)continue;let u=n[i];"low"in u&&(u.low=this.parse(u.low,s)),"high"in u&&(u.high=this.parse(u.high,s))}}return t}addJoinFieldCheck(t,r){let n=r.from?.split(".")[0]||"";return t.andWhere(`${n}.fieldName`,"=",r.column)}addRelationshipForFilter(t,r,n,i){let{relationships:o,schema:s,tableAliases:u,table:c}=this.query,l=u?.[c.name]||c.name,f=a(p=>n.match(new RegExp(`^${p}\\.`)),"matches");if(!o)return t;for(let p of o){let d=p.tableName,h=u?.[d]||d,m=f(d)||f(h),g=f(p.column);if((m||g)&&p.to&&p.tableName){let y=this.knex.select(this.knex.raw(1)).from({[h]:d}),b=y.clone(),v=O$(p),w;if(m?w=n:w=n.replace(new RegExp(`^${p.column}.`),`${u?.[p.tableName]||p.tableName}.`),v){let x=u?.[v.through]||p.through,T=this.tableNameWithSchema(v.through,{alias:x,schema:s});b=b.innerJoin(T,function(){this.on(`${h}.${v.toPrimary}`,"=",`${x}.${v.to}`)}).where(`${x}.${v.from}`,"=",this.rawQuotedIdentifier(`${l}.${v.fromPrimary}`)),this.client==="sqlite3"&&(b=this.addJoinFieldCheck(b,v)),t=t.where(I=>{I.whereExists(i(w,b)),r&&I.orWhereNotExists(y.clone().innerJoin(T,function(){this.on(`${l}.${v.fromPrimary}`,"=",`${x}.${v.from}`)}))})}else{let x=`${h}.${p.to}`,T=`${l}.${p.from}`;b=b.where(x,"=",this.rawQuotedIdentifier(T)),t=t.where(I=>{I.whereExists(i(w,b.clone())),r&&I.orWhereNotExists(b)})}}}return t}addFilters(t,r,n){if(!r)return t;let i=this;r=this.parseFilters({...r});let o=this.query.tableAliases,s=r.allOr,c=this.client==="sqlite3"?this.table._id:this.table.name;function l(m){return o?.[m]||m}a(l,"getTableAlias");function f(m,g,y,b){let v=a((w,x,T)=>{let[I,...R]=x.split("."),C=R.join("."),k=l(I);return w.andWhere(U=>y(U,k?`${k}.${C}`:C,T))},"handleRelationship");for(let w in m){let x=m[w],T=kx(w),I=T.includes("."),R=n?.relationship&&I,C;if(w==="_complexIdOperator"&&(C=m[w])&&b){let k=l(c);t=b(t,C.id.map(U=>k?`${k}.${U}`:U),C.values)}else if(I)R&&(s&&(t=t.or),t=i.addRelationshipForFilter(t,jmr[g],T,(k,U)=>v(U,k,x)));else{let k=l(c);t=y(t,k?`${k}.${T}`:T,x)}}}a(f,"iterate");let p=a((m,g,y)=>((r?.fuzzyOr||s)&&(m=m.or),this.client==="oracledb"||this.client==="sqlite3"?m.whereRaw("LOWER(??) LIKE ?",[this.rawQuotedIdentifier(g),`%${y.toLowerCase()}%`]):m.whereILike(this.rawQuotedIdentifier(g),this.knex.raw("?",[`%${y}%`]))),"like"),d=a((m,g=!1)=>{function y(b){return(s||m===r?.containsAny)&&(b=b.or),m===r?.notContains&&(b=b.not),b}a(y,"addModifiers"),this.client==="pg"?f(m,"contains",(b,v,w)=>{b=y(b);let x=this.getFieldSchema(v),T="::jsonb";return this.SPECIAL_SELECT_CASES.POSTGRES_ARRAY(x)&&(T="",w=`{${w.map(R=>R.substring(1,R.length-1))}}`),g?b.whereRaw(T?"COALESCE(??::jsonb \\?| array??, FALSE)":"COALESCE(?? && '??', FALSE)",[this.rawQuotedIdentifier(v),T?this.knex.raw(dZ(w,"'")):this.knex.raw(w)]):b.whereRaw(`COALESCE(??${T} @> '??', FALSE)`,[this.rawQuotedIdentifier(v),T?this.knex.raw(dZ(w)):this.knex.raw(w)])}):this.client==="mysql2"||this.client==="mariadb"?f(m,"contains",(b,v,w)=>y(b).whereRaw("COALESCE(?(??, ?), FALSE)",[this.knex.raw(g?"JSON_OVERLAPS":"JSON_CONTAINS"),this.rawQuotedIdentifier(v),this.knex.raw(EHe(dZ(w)))])):f(m,"contains",(b,v,w)=>(w.length===0||(b=b.where(x=>(m===r?.notContains&&(x=x.not),x=x.where(T=>{for(let I of w){m===r?.containsAny?T=T.or:T=T.and;let R=typeof I=="string"?`"${I.toLowerCase()}"`:I;T=T.whereLike(this.knex.raw("COALESCE(LOWER(??), '')",[this.rawQuotedIdentifier(v)]),`%${R}%`)}}),m===r?.notContains&&(x=x.or.whereNull(this.rawQuotedIdentifier(v))),x))),b))},"contains");if(r.$and){let{$and:m}=r;for(let g of m.conditions)t=t.where(y=>{this.addFilters(y,g,n)})}if(r.$or){let{$or:m}=r;t=t.where(g=>{for(let y of m.conditions)g.orWhere(b=>this.addFilters(b,{...y,allOr:!0},n))})}r.oneOf&&f(r.oneOf,"oneOf",(m,g,y)=>{let b=this.getFieldSchema(g),v=Array.isArray(y)?y:[y];if(s&&(m=m.or),this.client==="oracledb")g=this.convertClobs(g);else if(this.client==="sqlite3"&&b?.type==="datetime"&&b.dateOnly){for(let w of v)w!=null?m=m.or.whereLike(g,`${w.toISOString().slice(0,10)}%`):m=m.or.whereNull(g);return m}return m.whereIn(g,v)},(m,g,y)=>(s&&(m=m.or),this.client==="oracledb"&&(g=g.map(b=>this.convertClobs(b))),m.whereIn(g,Array.isArray(y)?y:[y]))),r.string&&f(r.string,"string",(m,g,y)=>{if(s&&(m=m.or),this.client==="oracledb"||this.client==="sqlite3")return m.whereRaw("LOWER(??) LIKE ?",[this.rawQuotedIdentifier(g),`${y.toLowerCase()}%`]);{let b=this.getFieldSchema(g);return this.SPECIAL_SELECT_CASES.POSTGRES_ENUM(b)?m.whereRaw(`??::text ilike '${y}%'`,[this.knex.raw(this.quote(b.name))]):m.whereILike(g,`${y}%`)}}),r.fuzzy&&f(r.fuzzy,"fuzzy",p),r.range&&f(r.range,"range",(m,g,y)=>{let b=a(C=>C&&Object.keys(C).length===0&&Object.getPrototypeOf(C)===Object.prototype,"isEmptyObject");b(y.low)&&(y.low=""),b(y.high)&&(y.high="");let v=p1(y.low),w=p1(y.high),x=this.getFieldSchema(g),T=g,I=y.high,R=y.low;return this.client==="sqlite3"&&x?.type==="datetime"&&x.dateOnly&&(I!=null&&(I=`${I.toISOString().slice(0,10)}T23:59:59.999Z`),R!=null&&(R=R.toISOString().slice(0,10))),this.client==="oracledb"?T=this.convertClobs(g):this.client==="sqlite3"&&x?.type==="bigint"&&(T=this.knex.raw("CAST(?? AS INTEGER)",[this.rawQuotedIdentifier(g)]),I=this.knex.raw("CAST(? AS INTEGER)",[y.high]),R=this.knex.raw("CAST(? AS INTEGER)",[y.low])),s&&(m=m.or),v&&w?m.whereBetween(T,[R,I]):v?m.where(T,">=",R):w?m.where(T,"<=",I):m}),r.equal&&f(r.equal,"equal",(m,g,y)=>{let b=this.getFieldSchema(g);if(s&&(m=m.or),this.client==="mssql")return m.whereRaw("CASE WHEN ?? = ? THEN 1 ELSE 0 END = 1",[this.rawQuotedIdentifier(g),y]);if(this.client==="oracledb"){let v=this.convertClobs(g);return m.where(w=>w.whereNotNull(v).andWhere(v,y))}else return this.client==="sqlite3"&&b?.type==="datetime"&&b.dateOnly?y!=null?m.whereLike(g,`${y.toISOString().slice(0,10)}%`):m.whereNull(g):m.whereRaw("COALESCE(?? = ?, FALSE)",[this.rawQuotedIdentifier(g),y])}),r.notEqual&&f(r.notEqual,"notEqual",(m,g,y)=>{let b=this.getFieldSchema(g);if(s&&(m=m.or),this.client==="mssql")return m.whereRaw("CASE WHEN ?? = ? THEN 1 ELSE 0 END = 0",[this.rawQuotedIdentifier(g),y]);if(this.client==="oracledb"){let v=this.convertClobs(g);return m.where(w=>w.not.whereNull(v).and.where(v,"!=",y)).or.whereNull(v)}else return this.client==="sqlite3"&&b?.type==="datetime"&&b.dateOnly?y!=null?m.not.whereLike(g,`${y.toISOString().slice(0,10)}%`).or.whereNull(g):m.not.whereNull(g):m.whereRaw("COALESCE(?? != ?, TRUE)",[this.rawQuotedIdentifier(g),y])}),r.empty&&f(r.empty,"empty",(m,g)=>(s&&(m=m.or),m.whereNull(g))),r.notEmpty&&f(r.notEmpty,"notEmpty",(m,g)=>(s&&(m=m.or),m.whereNotNull(g))),r.contains&&d(r.contains),r.notContains&&d(r.notContains),r.containsAny&&d(r.containsAny,!0);let h=o?.[this.table._id]||this.table._id;return r.documentType&&!S$(this.table)&&h&&t.andWhereLike(`${h}._id`,`${ld(r.documentType)}%`),t}isSqs(){return gHe(this.table)}getTableName(t){t||(t=this.table);let r=t.name;gHe(t)&&t._id&&(r=t._id);let n=this.query.tableAliases||{};return n[r]?n[r]:r}addDistinctCount(t){if(!this.table.primary)throw new Error("SQL counting requires primary key to be supplied");return t.countDistinct(`${this.getTableName()}.${this.table.primary[0]} as ${gZ}`)}addAggregations(t,r){let n=this.query.resource?.fields||[],i=this.getTableName();if(n.length>0){let o=n.map(s=>this.qualifyIdentifier(s));if(this.client==="oracledb"){let s=o.map(c=>this.convertClobs(c)),u=o.map(c=>this.convertClobs(c,{forSelect:!0}));t=t.groupBy(s).select(u)}else t=t.groupBy(o).select(o)}for(let o of r){let s=o.calculationType;if(s==="count")if("distinct"in o&&o.distinct)if(this.client==="oracledb"){let u=this.convertClobs(`${i}.${o.field}`);t=t.select(this.knex.raw("COUNT(DISTINCT ??) as ??",[u,o.name]))}else t=t.countDistinct(`${i}.${o.field} as ${o.name}`);else if(this.client==="oracledb"){let u=this.convertClobs(`${i}.${o.field}`);t=t.select(this.knex.raw("COUNT(??) as ??",[u,o.name]))}else t=t.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(s),this.rawQuotedIdentifier(`${i}.${o.field}`)]);u.type==="bigint"&&(c=this.castIntToString(c)),t=t.select(this.knex.raw("?? as ??",[c,o.name]))}}return t}isAggregateField(t){return!!this.query.resource?.aggregations?.find(n=>n.name===t)}addSorting(t){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=c.direction==="ascending"?"asc":"desc",f;(this.client==="pg"||this.client==="oracledb")&&(f=c.direction==="ascending"?"first":"last");let p=`${o}.${u}`,d;this.isAggregateField(u)?d=this.rawQuotedIdentifier(u):this.client==="oracledb"?d=this.convertClobs(p):d=this.rawQuotedIdentifier(p),t=t.orderByRaw(`?? ?? ${f?"nulls ??":""}`,[d,this.knex.raw(l),...f?[this.knex.raw(f)]:[]])}if(!((n?.aggregations?.length??0)>0)&&(!r||r[i[0]]===void 0)){if(i[0]===void 0)throw new Error(`Primary key not found for table ${this.table.name}`);t=t.orderBy(`${o}.${i[0]}`)}return t}tableNameWithSchema(t,r){let n=r?.schema?`${r.schema}.${t}`:t;return r?.alias&&(n+=` as ${r.alias}`),n}buildJsonField(t,r){let n=r.split("."),i=n[n.length-1],o,s;if(n.length>1){let l=n.shift();o=n.join("."),s=`${l}.${o}`}else o=n.join("."),s=o;this.query.meta?.columnPrefix&&(i=i.replace(this.query.meta.columnPrefix,""));let u=this.rawQuotedIdentifier(s),c=t.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(t,r,n){let i=this.client,o=this.knex,{resource:s,tableAliases:u,schema:c,tables:l}=this.query,f=s?.fields||[];for(let p of n){let{tableName:d,through:h,to:m,from:g,fromPrimary:y,toPrimary:b}=p;if(!d||!r)continue;let v=l[d];if(!v)throw new Error(`related table "${d}" not found in datasource`);let w=u?.[d]||d,x=u?.[r]||r,T=h&&u?.[h]||h,I=this.tableNameWithSchema(d,{alias:w,schema:c}),R=[...v?.primary||[],v?.primaryDisplay].filter(ie=>ie),C=Fmr(f.filter(ie=>ie.split(".")[0]===w),R);C=C.slice(0,Math.floor(this.maxFunctionParameters()/2));let k=C.map(ie=>this.buildJsonField(v,ie));if(!k.length)continue;let U=k.map(ie=>{let Q=this.client==="oracledb"?" VALUE ":",";return this.knex.raw(`?${Q}??`,[ie[0],ie[1]]).toString()}).join(","),M=`${w}.${b||m}`,H=o.from(I).orderBy(M),F=h&&b&&y,Y=F?`${T}.${g}`:`${w}.${m}`,B=F?`${x}.${y}`:`${x}.${g}`;if(F){let ie=this.tableNameWithSchema(h,{alias:T,schema:c});H=H.join(ie,function(){this.on(`${w}.${b}`,"=",`${T}.${m}`)})}H=H.where(this.rawQuotedIdentifier(Y),"=",this.rawQuotedIdentifier(B));let $=a(ie=>(H=H.select(C.map(Q=>this.rawQuotedIdentifier(Q))).limit(pZ()),o.select(ie).from({[w]:H})),"standardWrap"),ae;switch(i){case"sqlite3":H=this.addJoinFieldCheck(H,p),ae=$(this.knex.raw(`json_group_array(json_object(${U}))`));break;case"pg":ae=$(this.knex.raw(`json_agg(json_build_object(${U}))`));break;case"mariadb":ae=H.select(o.raw(`json_arrayagg(json_object(${U}) LIMIT ${pZ()})`));break;case"mysql2":case"oracledb":ae=$(this.knex.raw(`json_arrayagg(json_object(${U}))`));break;case"mssql":{let ie=o.select("*").from({[x]:H.select(k.map(Q=>o.ref(Q[1]).as(Q[0]))).limit(pZ())});ae=o.raw(`(SELECT ?? = (${ie} FOR JSON PATH))`,[this.rawQuotedIdentifier(w)]);break}default:throw new Error(`JSON relationships not implement for ${i}`)}t=t.select({[p.column]:ae})}return t}addJoin(t,r,n){let{tableAliases:i,schema:o}=this.query,s=r.to,u=r.from,c=r.through,l=i?.[s]||s,f=c&&i?.[c]||c,p=i?.[u]||u,d=this.tableNameWithSchema(s,{alias:l,schema:o}),h=c?this.tableNameWithSchema(c,{alias:f,schema:o}):void 0;return c?t=t.leftJoin(h,function(){for(let m of n){let g=m.fromPrimary,y=m.from;this.orOn(`${p}.${g}`,"=",`${f}.${y}`)}}).leftJoin(d,function(){for(let m of n){let g=m.toPrimary,y=m.to;this.orOn(`${l}.${g}`,`${f}.${y}`)}}):t=t.leftJoin(d,function(){for(let m of n){let g=m.from,y=m.to;this.orOn(`${p}.${g}`,"=",`${l}.${y}`)}}),t}qualifiedKnex(t){let r=this.query.tableAliases?.[this.query.table.name];return t?.alias===!1?r=void 0:typeof t?.alias=="string"&&(r=t.alias),this.knex(this.tableNameWithSchema(this.query.table.name,{alias:r,schema:this.query.schema}))}create(t){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,s]of Object.entries(this.query.table.schema)){if(s.constraints?.presence===!0||s.type==="formula"||s.type==="auto"||s.type==="link"||s.type==="ai")continue;i[o]==null&&(i[o]=null)}else for(let[o,s]of Object.entries(i))s==null&&delete i[o];return t.disableReturning?n.insert(i):n.insert(i).returning("*")}bulkCreate(){let{body:t}=this.query,r=this.qualifiedKnex({alias:!1});if(!Array.isArray(t))return r;let n=t.map(i=>this.parseBody(i));return r.insert(n)}bulkUpsert(){let{body:t}=this.query,r=this.qualifiedKnex({alias:!1});if(!Array.isArray(t))return r;let n=t.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(t={}){let{operation:r,filters:n,paginate:i,relationships:o,table:s}=this.query,{limits:u}=t,c=this.qualifiedKnex(),l=null,f=u?.query||u?.base;if(i&&i.page&&i.limit){let h=(i.page<=1?0:i.page-1)*i.limit;f=i.limit,l=h}else i&&i.offset&&i.limit?(f=i.limit,l=i.offset):i&&i.limit&&(f=i.limit);r!=="COUNT"&&(f!=null&&(c=c.limit(f)),l!=null&&(c=c.offset(l)));let p=this.query.resource?.aggregations||[];if(r==="COUNT"?c=this.addDistinctCount(c):p.length>0?c=this.addAggregations(c,p):c=c.select(this.generateSelectStatement()),r!=="COUNT"&&(c=this.addSorting(c)),c=this.addFilters(c,n,{relationship:!0}),o?.length&&p.length===0){let d=this.query.tableAliases?.[s.name]||s.name,h=this.addSorting(this.knex.with("paginated",c.clone().clearSelect().select("*")).select(this.generateSelectStatement()).from({[d]:"paginated"}));return this.addJsonRelationships(h,s.name,o)}return c}update(t){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),t.disableReturning?i.update(o):i.update(o).returning("*")}delete(t){let{filters:r}=this.query,n=this.qualifiedKnex();return n=this.addFilters(n,r),t.disableReturning?n.delete():n.delete().returning(this.generateSelectStatement())}},mZ=class extends MU{constructor(r,n=mHe()){super(r);this.limit=n}static{a(this,"SqlQueryBuilder")}convertToNative(r,n={}){let i=this.getSqlClient();if(n?.disableBindings)return{sql:r.toString()};{let o=Wv(r);return i==="sqlite3"&&(o=wHe(o)),o}}_query(r,n={}){let i=this.getSqlClient(),o={client:this.getBaseSqlClient()};(i==="sqlite3"||i==="oracledb")&&(o.useNullAsDefault=!0);let s=(0,bHe.knex)(o),u,c=new hZ(i,s,r);switch(this._operation(r)){case"CREATE":u=c.create(n);break;case"READ":u=c.read({limits:{query:this.limit,base:mHe()}});break;case"COUNT":u=c.read();break;case"UPDATE":u=c.update(n);break;case"DELETE":u=c.delete(n);break;case"BULK_CREATE":u=c.bulkCreate();break;case"BULK_UPSERT":u=c.bulkUpsert();break;case"CREATE_TABLE":case"UPDATE_TABLE":case"DELETE_TABLE":return this._tableQuery(r);default:throw"Operation type is not supported by SQL query builder"}return this.convertToNative(u,n)}async getReturningRow(r,n){if(!n.extra||!n.extra.idFilter)return{};let i=this._query({operation:"READ",datasource:n.datasource,schema:n.schema,table:n.table,tables:n.tables,resource:{fields:[]},filters:n.extra?.idFilter,paginate:{limit:1}});return r(i,"READ")}checkLookupKeys(r,n){if(!r||!n.table.primary)return n;let i=n.table.primary[0];return n.extra={idFilter:{equal:{[i]:r}}},n}async queryWithReturning(r,n,i=o=>o){let o=this.getSqlClient(),s=this._operation(r),u=this._query(r,{disableReturning:!0});if(Array.isArray(u)){let p=[];for(let d of u)p.push(await n(d,s));return p}let c;s==="DELETE"&&(c=i(await this.getReturningRow(n,r)));let l=await n(u,s),f=i(l);if(s==="CREATE"||s==="UPDATE"){let p;o==="mssql"?p=f?.[0].id:(o==="mysql2"||o==="mariadb")&&(p=f?.insertId),c=i(await this.getReturningRow(n,this.checkLookupKeys(p,r)))}return s==="COUNT"?f:s!=="READ"?c:f.length?f:[{[s.toLowerCase()]:!0}]}getTableName(r,n){let i=r.name;if(r.sourceType==="internal"||r.sourceId===Ko){if(!r._id)return;i=r._id}return n?.[i]||i}convertJsonStringColumns(r,n,i){let o=this.getTableName(r,i);for(let[s,u]of Object.entries(r.schema)){if(!_He(u))continue;let c=`${o}.${s}`;for(let l of n)typeof l[c]=="string"&&(l[c]=JSON.parse(l[c])),typeof l[s]=="string"&&(l[s]=JSON.parse(l[s]))}return n}log(r,n){px(this.getSqlClient(),r,n)}},SHe=mZ;var yZ={};oe(yZ,{base:()=>Mmr});function Mmr(e){return{_id:Pa,language:"sqlite",sql:{tables:{},options:{table_name:e}}}}a(Mmr,"base");var GR={};oe(GR,{jsonFromCsvString:()=>Bmr});var xHe=te(require("csvtojson"));async function Bmr(e,t){let{ignoreEmpty:r=!1,allowSingleColumn:n=!1,possibleDelimiters:i=[",",";",":","|","~"," "," "]}=t||{};for(let o of i){let s,u=!1;try{let c=await(0,xHe.default)({ignoreEmpty:r,delimiter:o}).fromString(e);for(let[,l]of c.entries()){let f=Object.keys(l);if(s==null&&(s=f),!n&&f.length===1){u=!0;break}if(s.length!==f.length){u=!0;break}for(let p of s)(l[p]===void 0||l[p]==="")&&(l[p]=null)}if(u)continue;return c}catch{continue}}throw new Error("Unable to determine delimiter")}a(Bmr,"jsonFromCsvString");var $mr=te(require("@koa/router"));var vt={...Dx,...W},THe=a((e={})=>{c1(e.db)},"init");var yb={};oe(yb,{ai:()=>aee,auditLogs:()=>mb,automations:()=>p_,backups:()=>Zs,branding:()=>nee,environmentVariables:()=>rl,features:()=>ms,groups:()=>on,init:()=>x0r,licensing:()=>em,logger:()=>C_,plugins:()=>See,publicApi:()=>_re,quotas:()=>Mn,scimGroups:()=>tI,scimUsers:()=>eu,users:()=>mee,utils:()=>bO});var nee={};oe(nee,{getBrandingConfig:()=>hyr});var ms={};oe(ms,{checkBackups:()=>qo,checkFeature:()=>aj,checkFeatures:()=>JZ,checkSCIM:()=>ree,isAppBuildersEnabled:()=>eee,isAuditLogsEnabled:()=>oj,isBackupsEnabled:()=>XZ,isBrandingEnabled:()=>ZZ,isEnforceableSSO:()=>xVe,isExpandedPublicApiEnabled:()=>qp,isPWAEnabled:()=>syr,isPkceOidcEnabled:()=>cyr,isRecaptchaEnabled:()=>uyr,isSSOEnforced:()=>lyr,isSyncAutomationsEnabled:()=>ayr,isTriggerAutomationRunEnabled:()=>oyr,isUserGroupsEnabled:()=>tee,isViewPermissionEnabled:()=>fyr,isViewReadonlyColumnsEnabled:()=>pyr});var em={};oe(em,{cache:()=>tl,client:()=>rm,features:()=>ej,getFreeLicense:()=>KZ,getLicense:()=>VZ,getLicenseFromKey:()=>vVe,keys:()=>YZ,offline:()=>rj,quotas:()=>tj});var tl={};oe(tl,{getCachedLicense:()=>_Ve,invalidate:()=>SVe,refresh:()=>Ky});var HR,Gmr=a(async()=>{HR=await to.init(Mp.utils.Databases.LICENSES)},"init"),Hmr=a(async()=>{HR&&await HR.finish()},"shutdown");process.on("exit",async()=>{await Hmr()});var bZ=a(async()=>(HR||await Gmr(),HR),"getClient");var rm={};oe(rm,{activateLicenseKey:()=>MZ,getLicense:()=>s_,getLicenseFromKey:()=>jZ,triggerQuota:()=>Ugr});var AHe=te(require("node-fetch"));var vZ=require("dd-trace"),RHe=require("dd-trace/ext/formats");var wZ=class{constructor(t){this.apiCall=t=>async(r="",n={})=>await vZ.tracer.trace(`api.${t}`,async i=>{i.setTag("url",r);let o={...n.headers};o["Content-Type"]||(o["Content-Type"]="application/json",o.Accept="application/json");let s=o["Content-Type"]==="application/json";kt.correlation.setHeader(o),vZ.tracer.inject(i,RHe.HTTP_HEADERS,o);let u={method:t,body:s?JSON.stringify(n.body):n.body,headers:o,credentials:"include"};return(0,AHe.default)(`${this.host}${r}`,u)});this.post=this.apiCall("POST");this.get=this.apiCall("GET");this.patch=this.apiCall("PATCH");this.del=this.apiCall("DELETE");this.put=this.apiCall("PUT");this.host=t}static{a(this,"API")}},EZ=wZ;var uf={};oe(uf,{bustCache:()=>xZ,getCurrentUsageValues:()=>LHe,getQuotaUsage:()=>Hy,setAllUsage:()=>AZ,setAppUsageValue:()=>TZ,setUsage:()=>DHe,setUsagePerApp:()=>PHe,utils:()=>QR});var QR={};oe(QR,{generateBaseQuotaUsage:()=>qU,generateNewMonthlyQuotas:()=>KR,generateNewQuotaUsage:()=>SZ,getBreakdownName:()=>zU,getCurrentMonthString:()=>Xh,getQuotaDocId:()=>VR,setCurrentMonth:()=>$U,setQuotaReset:()=>_Z});var VR=a(()=>W.isSelfHostUsingCloud()?`quota_usage_${W.getTenantId()}`:ne.StaticDatabases.GLOBAL.docs.usageQuota,"getQuotaDocId"),OHe=a(()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},"getNextQuotaReset"),_Z=a(e=>{e.quotaReset=OHe()},"setQuotaReset"),Xh=a(()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},"getCurrentMonthString"),qU=a(()=>({usageQuota:{apps:0,rows:0,plugins:0,users:0,creators:0,userGroups:0,aiCustomConfigs:0,triggers:{}},monthly:{[Xh()]:KR()}}),"generateBaseQuotaUsage"),SZ=a(()=>{let e={_id:VR(),quotaReset:OHe(),...qU(),apps:{}};return $U(e),e},"generateNewQuotaUsage"),KR=a(()=>({queries:0,automations:0,budibaseAICredits:0,actions:0,triggers:{}}),"generateNewMonthlyQuotas"),$U=a(e=>{let t=Xh();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=KR()),e.monthly.current=e.monthly[t]},"setCurrentMonth"),zU=a((e,t)=>{if(!(!t||!e))switch(e){case"automations":return"automations";case"queries":return dc(t)?"rowQueries":ov(t)?"datasourceQueries":void 0}},"getBreakdownName");var IHe=mi.fromSeconds(60).toMs(),{Writethrough:kHe}=Ht.writethrough;function Kmr(e){return delete e.usageLimits,delete e.usageQuota.automationRuns,delete e.usageQuota.emails,delete e.usageQuota.storage,delete e.usageQuota.views,delete e.usageQuota.publishedApps,delete e.usageQuota.developers,e}a(Kmr,"clearDeprecated");var WU=a(()=>vt.isSelfHostUsingCloud()?new kHe(vt.getSelfHostCloudDB(),IHe):new kHe(vt.getGlobalDB(),IHe),"getDB");async function xZ(e=0){let r=WU(),n=VR(),i=await r.tryGet(n);i&&i._rev&&await r.remove(n,i._rev).catch(async o=>{if(e<1)return await xZ(e+1);throw o})}a(xZ,"bustCache");var Hy=a(async()=>{let e=WU(),t=await e.tryGet(VR());if(!t){t=SZ();let{rev:r}=await e.put(t);t._rev=r}return $U(t),_Z(t),Kmr(t)},"getQuotaUsage"),DHe=a(async(e,t,r)=>AZ({name:t,type:r,values:{total:e}}),"setUsage"),PHe=a(async(e,t,r)=>{let n=WU(),i=await Hy(),o=Object.values(e).reduce((u,c)=>u+c,0);for(let[u,c]of Object.entries(e))i=NHe(i,t,r,{total:o,app:c},{appId:u});let s=await n.put(i);return i._rev=s.rev,i},"setUsagePerApp"),Qmr=a((e,t,r,n)=>{let i=zU(t,r);if(!i||!n?.breakdown)return e;e.breakdown||(e.breakdown={}),e.breakdown[i]||(e.breakdown[i]={parent:t,values:{}});let o=e.breakdown[i];return o.values[r]=n.breakdown,e},"setBreakdown"),TZ=a((e,t,r,n={},i)=>{let o;try{o=ne.getProdWorkspaceID(n?.appId||W.getWorkspaceId())}catch{}if(!o||!i.app||!qb.includes(t))return e;e.apps?.[o]||(e.apps={...e.apps,[o]:qU()});let s=e.apps[o];switch(r){case"static":s.usageQuota[t]=i.app;break;case"monthly":{let u=Xh(),c=t,l=s.monthly[u];l||(s.monthly[u]=KR(),l=s.monthly[u]),l[c]=i.app,sse.includes(c)&&n?.id&&(l=Qmr(l,c,n.id,i));break}}return e},"setAppUsageValue"),CHe=a((e,t,r,n)=>{if(!qb.includes(r))return{};let i;try{i=ne.getProdWorkspaceID(W.getWorkspaceId())}catch{}if(!i||!e.apps||!e.apps[i])return{app:0};let o=e.apps[i];switch(t){case"static":if(o.usageQuota?.[r])return{app:o.usageQuota[r]};break;case"monthly":{let s=Xh(),u=r;if(!o.monthly?.[s]?.[u])break;let c=o.monthly[s],l=c[u],f,p=zU(u,n);return p&&n&&c.breakdown?.[p]&&(f=c.breakdown[p]?.values[n]),{app:l,breakdown:f||0}}}return{app:0}},"getAppUsageValue"),Ymr=a((e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},"setStaticTriggers"),Jmr=a((e,t,r,n)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),n&&(r.monthly[t].triggers[e]=n)},"setMonthlyTriggers"),NHe=a((e,t,r,n,i={})=>{if(r==="static")t=t,e.usageQuota[t]=n.total,Ymr(t,e,n.triggers);else if(r==="monthly"){t=t;let o=Xh();e.monthly[o][t]=n.total,Jmr(t,o,e,n.triggers)}else throw new Error(`Invalid usage type: ${r}`);return TZ(e,t,r,i,n)},"coreUsageUpdate"),AZ=a(async e=>{let t=Array.isArray(e)?e:[e],r=WU(),n=await Hy();for(let o of t)n=NHe(n,o.name,o.type,o.values,o.opts);let i=await r.put(n,0);return n._rev=i.rev,n},"setAllUsage"),LHe=a(async(e,t,r)=>{let n=await Hy(),i=0,o={};switch(e){case"static":if(n.usageQuota[t]){let s=t;i=n.usageQuota[s],o=CHe(n,e,t,r)}break;case"monthly":{let s=Xh(),u=t;n.monthly[s][u]&&(i=n.monthly[s][u],o=CHe(n,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return qb.includes(t)&&!(o.app||o.breakdown)&&(o.app=o.app||0,o.breakdown=o.breakdown||0),{total:i,app:o.app,breakdown:o.breakdown}},"getCurrentUsageValues");var $u={};oe($u,{destroy:()=>egr,get:()=>RZ,save:()=>Zmr});var Xmr=a(()=>({_id:bn.GLOBAL.docs.licenseInfo}),"newLicenseInfo"),Zmr=a(async e=>{let t=await RZ();t={...t,...e};let n=await vt.getGlobalDB().put(t);return t._rev=n.rev,t},"save"),RZ=a(async()=>{let e=vt.getGlobalDB();try{return await e.get(bn.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return Xmr();throw t}},"get"),egr=a(async()=>{let e=vt.getGlobalDB(),t=await RZ();t&&t._rev&&await e.remove(bn.GLOBAL.docs.licenseInfo,t._rev)},"destroy");var Xn={};oe(Xn,{bulkSave:()=>dgr,destroy:()=>hgr,fetch:()=>cgr,generateUserGroupID:()=>sgr,get:()=>lgr,getBulk:()=>fgr,getByName:()=>OZ,getGroupUsers:()=>GU,getGroupUsersParams:()=>BHe,getUserGroupsParams:()=>MHe,save:()=>pgr});async function FHe(){let e=Vt.designDoc.base("type");e.sql.tables={[xm]:{fields:{appId:"VARCHAR",event:"VARCHAR",userId:"VARCHAR",timestamp:"VARCHAR",metadata:"VARCHAR",name:"VARCHAR",type:"VARCHAR",fallback:"VARCHAR"}}};let t=W.getAuditLogsDB(),r;try{r=await t.get(Pa),r={...r,...e}}catch(n){if(n.status===404)r=e;else throw n}await t.put(r)}a(FHe,"createAuditLogDesignDocSQL");var{ViewName:rgr,SEPARATOR:ngr,DocumentType:igr,createView:agr}=ne,ogr=igr.USER+ngr;async function UHe(){let e=vt.getGlobalDB(),t=`function(doc) {
535
+ `);for(let o of i.filter(s=>s))e.push(nA.default.readFileSync(o))}return e.push(nA.default.readFileSync(MPe(qPe))),Buffer.concat(e.map(n=>new Uint8Array(n)))}a(YHt,"getLogReadStream");function JHt(e){return typeof e=="object"&&e!==null&&!(e instanceof Error)}a(JHt,"isPlainObject");function XHt(e){return e instanceof Error}a(XHt,"isError");function ZHt(e){return typeof e=="string"}a(ZHt,"isMessage");var _h;if(!V.DISABLE_PINO_LOGGER){let e=V.LOG_LEVEL,t={level:e,formatters:{level:c=>({level:c.toUpperCase()}),bindings:()=>V.SELF_HOSTED?{service:V.SERVICE_NAME}:{}},timestamp:()=>`,"timestamp":"${new Date(Date.now()).toISOString()}"`},r=[];r.push(V.isDev()?{stream:(0,GPe.default)({singleLine:!0}),level:e}:{stream:process.stdout,level:e}),V.SELF_HOSTED&&r.push({stream:Z9(),level:e}),_h=r.length?(0,oL.default)(t,oL.default.multistream(r)):(0,oL.default)(t);let n=a(c=>{let l,f=[],p="";c.forEach(y=>{ZHt(y)&&(p=`${p} ${y}`.trimStart()),JHt(y)&&f.push(y),XHt(y)&&(l=y)});let d=u(),h={};h={tenantId:i(),appId:o(),automationId:s(),identityId:d?._id,identityType:d?.type,correlationId:pz()};let m=t7.default.scope().active();m&&t7.default.inject(m.context(),HPe.formats.LOG,h);let g={err:l,pid:process.pid,...h};if(f.length){let y={},b=0;for(let v=0;v<f.length;v++){let w=f[v],x=w._logKey;x?(delete w._logKey,g[x]=w):(y[b]=w,b++)}Object.keys(y).length&&(g.data=y)}return[g,p]},"getLogParams");console.log=(...c)=>{let[l,f]=n(c);_h?.info(l,f)},console.info=(...c)=>{let[l,f]=n(c);_h?.info(l,f)},console.warn=(...c)=>{let[l,f]=n(c);_h?.warn(l,f)},console.error=(...c)=>{let[l,f]=n(c);_h?.error(l,f)},console.trace=(...c)=>{let[l,f]=n(c);l.err||(l.err=new Error),_h?.trace(l,f)},console.debug=(...c)=>{let[l,f]=n(c);_h?.debug(l,f)};let i=a(()=>{let c;try{c=Pt()}catch{}return c},"getTenantId"),o=a(()=>{let c;try{c=Zo()}catch{}return c},"getAppId"),s=a(()=>{let c;try{c=N$()}catch{}return c},"getAutomationId"),u=a(()=>{let c;try{c=Mf()}catch{}return c},"getIdentity")}var sL=_h;var eVt=["AccountError"];function tVt(e){return e&&e.suppressAlert}a(tVt,"isSuppressed");function sy(e,t){t&&eVt.includes(t.name)&&tVt(t)||console.error(`bb-alert: ${e}`,t)}a(sy,"logAlert");function rVt(e,t,r,n){e=`${e} - db: ${t} - doc: ${r} - error: `,sy(e,n)}a(rVt,"logAlertWithInfo");function Zw(e,t){console.warn(`bb-warn: ${e}`,t)}a(Zw,"logWarn");var uL=class extends Error{static{a(this,"UnretriableError")}constructor(t){super(t),this.name="PermanentError"}},r7=class{static{a(this,"QueuedProcessor")}constructor(t,r={}){let{maxAttempts:n=3,removeOnFail:i=!0,removeOnComplete:o=!0,maxStalledCount:s=3}=r;this.waitForCompletionMs=r.waitForCompletionMs||1e4,this._queue=new Sc(t,{maxStalledCount:s,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 uL&&await u.discard(),sy(`Failed to process job in ${this._queue.name}`,l),c?.(l)}})}async close(t){await this._queue.close(t)}async execute(t){try{let r=await this._queue.add(t);return{success:!0,result:await Ye.withTimeout(this.waitForCompletionMs,()=>r.finished())}}catch(r){if(r.errno!=="ETIME")throw r;return{success:!1,reason:"timeout"}}}};var nVt=100,cL,iA=class e{static{a(this,"DocWritethroughProcessor")}static get queue(){return e._queue||(e._queue=new Sc("docWritethroughQueue",{jobOptions:{attempts:nVt}})),e._queue}init(){return e.queue.process(async t=>{try{await this.persistToDb(t.data)}catch(r){throw r.status===409?new Error(`Conflict persisting message ${t.id}. Attempt ${t.attemptsMade}`):r}}),this}async persistToDb({dbName:t,docId:r,data:n}){if(r.startsWith("scimlog"))return;let i=Io(t),o;try{o=await i.get(r)}catch{o={_id:r}}o={...o,...n},await i.put(o)}},n7=class{static{a(this,"DocWritethrough")}constructor(t,r){this.db=t,this._docId=r}get docId(){return this._docId}async patch(t){await iA.queue.add({dbName:this.db.name,docId:this.docId,data:t})}};function VPe(){return cL=new iA().init(),cL}a(VPe,"init");function iVt(){return cL||VPe()}a(iVt,"getProcessor");var oA={};oe(oA,{CacheKey:()=>aa,TTL:()=>ly,bustCache:()=>eE,destroy:()=>aA,get:()=>fy,keys:()=>lL,store:()=>mp,withCache:()=>Sh,withCacheWithDynamicTTL:()=>KPe});function jl(e){let t=Pt();return`${e}:${t}`}a(jl,"generateTenantKey");var uy=class{static{a(this,"BaseCache")}constructor(t=void 0){this.client=t}async getClient(){return this.client?this.client:await z$()}async keys(t){return(await this.getClient()).keys(t)}async exists(t,r={useTenancy:!0}){return t=r.useTenancy?jl(t):t,(await this.getClient()).exists(t)}async scan(t,r={useTenancy:!0}){return t=r.useTenancy?jl(t):t,(await this.getClient()).scan(t)}async get(t,r={useTenancy:!0}){return t=r.useTenancy?jl(t):t,(await this.getClient()).get(t)}async bulkGet(t,r={useTenancy:!0}){return t=r.useTenancy?t.map(i=>jl(i)):t,(await this.getClient()).bulkGet(t)}async store(t,r,n=null,i={useTenancy:!0}){t=i.useTenancy?jl(t):t,await(await this.getClient()).store(t,r,n)}async bulkStore(t,r=null,n={useTenancy:!0}){n.useTenancy&&(t=Object.entries(t).reduce((o,[s,u])=>(o[jl(s)]=u,o),{})),await(await this.getClient()).bulkStore(t,r)}async delete(t,r={useTenancy:!0}){return t=r.useTenancy?jl(t):t,(await this.getClient()).delete(t)}async bulkDelete(t,r={useTenancy:!0}){return t=r.useTenancy?t.map(i=>jl(i)):t,(await this.getClient()).bulkDelete(t)}async withCache(t,r=null,n,i={useTenancy:!0}){let o=await this.get(t,i);if(o)return o;try{let s=await n();return await this.store(t,s,r,i),s}catch(s){throw console.error("Error fetching before cache - ",s),s}}async withCacheWithDynamicTTL(t,r,n={useTenancy:!0}){let i=await this.get(t,n);if(i)return i;try{let o=await r(),{value:s,ttl:u}=o;return await this.store(t,s,u,{useTenancy:n.useTenancy}),s}catch(o){throw console.error("Error fetching before cache - ",o),o}}async bustCache(t){let r=await this.getClient();try{await r.delete(jl(t))}catch(n){throw console.error("Error busting cache - ",n),n}}async deleteIfValue(t,r,n={useTenancy:!0}){t=n.useTenancy?jl(t):t,await(await this.getClient()).deleteIfValue(t,r)}};var cy=new uy,aa={CHECKLIST:"checklist",INSTALLATION:"installation",ANALYTICS_ENABLED:"analyticsEnabled",UNIQUE_TENANT_ID:"uniqueTenantId",EVENTS:"events",BACKFILL_METADATA:"backfillMetadata",EVENTS_RATE_LIMIT:"eventsRateLimit",OAUTH2_TOKEN:e=>`oauth2Token_${e}`},ly=(n=>(n[n.ONE_MINUTE=600]="ONE_MINUTE",n[n.ONE_HOUR=3600]="ONE_HOUR",n[n.ONE_DAY=86400]="ONE_DAY",n))(ly||{}),lL=a((...e)=>cy.keys(...e),"keys"),fy=a((...e)=>cy.get(...e),"get"),mp=a((...e)=>cy.store(...e),"store"),aA=a((...e)=>cy.delete(...e),"destroy"),Sh=a((...e)=>cy.withCache(...e),"withCache"),KPe=a((...e)=>cy.withCacheWithDynamicTTL(...e),"withCacheWithDynamicTTL"),eE=a((...e)=>cy.bustCache(...e),"bustCache");var o7={};oe(o7,{createCode:()=>oVt,deleteCode:()=>uVt,getCode:()=>sVt,getExistingInvites:()=>a7,getInviteCodes:()=>YPe,updateCode:()=>aVt});var QPe=mi.fromDays(7).toSeconds();async function aVt(e,t){await(await mg()).store(e,t,QPe)}a(aVt,"updateCode");async function oVt(e,t){let r=kn();return await(await mg()).store(r,{email:e,info:t},QPe),r}a(oVt,"createCode");async function sVt(e){let r=await(await mg()).get(e);if(!r)throw"Invitation is not valid or has expired, please request a new one.";return r}a(sVt,"getCode");async function uVt(e){await(await mg()).delete(e)}a(uVt,"deleteCode");async function YPe(){let r=(await(await mg()).scan()).map(i=>({...i.value,code:i.key}));if(!V.MULTI_TENANCY)return r;let n=Pt();return r.filter(i=>n===i.info.tenantId)}a(YPe,"getInviteCodes");async function a7(e){return(await YPe()).filter(t=>e.includes(t.email))}a(a7,"getExistingInvites");var s7={};oe(s7,{createCode:()=>lVt,getCode:()=>fVt,invalidateCode:()=>pVt});var cVt=mi.fromHours(1).toSeconds();async function lVt(e,t){let r=kn();return await(await xx()).store(r,{userId:e,info:t},cVt),r}a(lVt,"createCode");async function fVt(e){let r=await(await xx()).get(e);if(!r)throw new Error("Provided information is not valid, cannot reset password - please try again.");return r}a(fVt,"getCode");async function pVt(e){await(await xx()).delete(e)}a(pVt,"invalidateCode");var Rh={};oe(Rh,{getUser:()=>PA,getUsers:()=>FJt,invalidateUser:()=>NA});var Ml={};oe(Ml,{addSsoUser:()=>XPe,addUser:()=>bVt,getUserDoc:()=>JPe,lookupTenantId:()=>dVt,removeUser:()=>vVt,updateUserDoc:()=>hVt});function py(){return Io(bn.PLATFORM_INFO.name)}a(py,"getPlatformDB");async function dVt(e){return V.MULTI_TENANCY?(await JPe(e)).tenantId:pi}a(dVt,"lookupTenantId");async function JPe(e){return py().get(e)}a(JPe,"getUserDoc");async function hVt(e){await py().put(e)}a(hVt,"updateUserDoc");function mVt(e,t){return{_id:e,tenantId:t}}a(mVt,"newUserIdDoc");function gVt(e,t,r){return{_id:t,userId:e,tenantId:r}}a(gVt,"newUserEmailDoc");function yVt(e,t,r,n){return{_id:e,userId:r,email:t,tenantId:n}}a(yVt,"newUserSsoIdDoc");async function u7(e,t){let r=py(),n;try{await r.get(e)}catch(i){if(i.status===404)n=t(),await r.put(n);else throw i}}a(u7,"addUserDoc");async function XPe(e,t,r,n){return u7(e,()=>yVt(e,t,r,n))}a(XPe,"addSsoUser");async function bVt(e,t,r,n){let i=[u7(t,()=>mVt(t,e)),u7(r,()=>gVt(t,r,e))];n&&i.push(XPe(n,r,t,e)),await Promise.all(i)}a(bVt,"addUser");async function vVt(e){let t=py(),r=[e._id,e.email],n=await t.allDocs({keys:r,include_docs:!0});await t.bulkRemove(n.rows.map(i=>i.doc),{silenceErrors:!0})}a(vVt,"removeUser");var ZPe=te(require("node-fetch"));var sA=class{static{a(this,"API")}constructor(t){this.host=t}async apiCall(t,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";Fx.setHeader(n.headers);let o={method:t,body:i?JSON.stringify(n.body):n.body,headers:n.headers,credentials:"include"};return await(0,ZPe.default)(`${this.host}${r}`,o)}async post(t,r){return this.apiCall("POST",t,r)}async get(t,r){return this.apiCall("GET",t,r)}async patch(t,r){return this.apiCall("PATCH",t,r)}async del(t,r){return this.apiCall("DELETE",t,r)}async put(t,r){return this.apiCall("PUT",t,r)}};var eNe=new sA(V.INTERNAL_ACCOUNT_PORTAL_URL),tNe=V.SELF_HOSTED||V.DISABLE_ACCOUNT_PORTAL,dy=a(async e=>{if(tNe)return;let t={email:e},r=await eNe.post("/api/accounts/search",{body:t,headers:{"x-budibase-api-key":V.ACCOUNT_PORTAL_API_KEY}});if(r.status!==200)throw new Error(`Error getting account by email ${e}`);return(await r.json())[0]},"getAccount"),uA=a(async e=>{if(tNe)return;let t={tenantId:e},r=await eNe.post("/api/accounts/search",{body:t,headers:{"x-budibase-api-key":V.ACCOUNT_PORTAL_API_KEY}});if(r.status!==200)throw new Error(`Error getting account by tenantId ${e}`);return(await r.json())[0]},"getAccountByTenantId");var rr={};oe(rr,{UserDB:()=>$l,addAppBuilder:()=>DJt,bulkGetGlobalUsersById:()=>jL,bulkUpdateGlobalUsers:()=>CA,cleanseUserObject:()=>H7,creatorsInList:()=>gy,doesUserExist:()=>RJt,getAccountHolderFromUsers:()=>UL,getAllUserIds:()=>TJt,getAllUsers:()=>AJt,getById:()=>yy,getCreatorCount:()=>kJt,getExistingAccounts:()=>aE,getExistingPlatformUsers:()=>N2e,getExistingTenantUsers:()=>P2e,getFirstPlatformUser:()=>IA,getGlobalUserByAppPage:()=>B2e,getGlobalUserByEmail:()=>jc,getPlatformUsers:()=>PL,getUserCount:()=>IJt,hasAdminPermissions:()=>Th,hasAppBuilderPermissions:()=>U2e,hasBuilderPermissions:()=>ss,isAdmin:()=>ql,isAdminOrBuilder:()=>F2e,isAdminOrWorkspaceBuilder:()=>NL,isBuilder:()=>sE,isCreatorAsync:()=>kA,isCreatorSync:()=>LL,isGlobalBuilder:()=>L2e,paginatedUsers:()=>$2e,removeAppBuilder:()=>PJt,removePortalUserPermissions:()=>CJt,searchExistingEmails:()=>$7,searchGlobalUsersByApp:()=>ML,searchGlobalUsersByAppAccess:()=>G7,searchGlobalUsersByEmail:()=>q2e,validateUniqueUser:()=>FL});var fL=class extends Error{constructor(r,n){super(r);this.code=n}static{a(this,"BudibaseError")}},nNe=a(e=>{let t;return e.code&&(t={code:e.code},e.getPublicError&&(t={...t,...e.getPublicError()})),t},"getPublicError"),Re=class e extends fL{constructor(r,n,i="http"){super(r,i);this.status=n}static{a(this,"HTTPError")}static async fromResponse(r){let n=await r.text(),i=n,o=r.status,s="http";try{let u=JSON.parse(n);i=u.message,o=u.status,s=u.error?.code}catch{}return new e(i,o,s)}};var Ma=class extends Re{static{a(this,"BadRequestError")}constructor(t){super(t,400)}};var pL=class extends Re{constructor(r,n){super(r,400,"usage_limit_exceeded");this.limitName=n}static{a(this,"UsageLimitError")}getPublicError(){return{limitName:this.limitName}}},tE=class extends Re{constructor(r,n){super(r,400,"feature_disabled");this.featureName=n}static{a(this,"FeatureDisabledError")}getPublicError(){return{featureName:this.featureName}}},dL=class extends fL{static{a(this,"InvalidAPIKeyError")}constructor(){super("Invalid API key - may need re-generated, or user doesn't exist","invalid_api_key")}},gp=class extends Error{static{a(this,"EmailUnavailableError")}constructor(t){super(`Email already in use: '${t}'`)}};var aNe=+(V.PASSWORD_MIN_LENGTH||12),oNe=+(V.PASSWORD_MAX_LENGTH||512);function sNe(e){return!e||e.length<aNe?{valid:!1,error:`Password invalid. Minimum ${aNe} characters.`}:e.length>oNe?{valid:!1,error:`Password invalid. Maximum ${oNe} characters.`}:{valid:!0}}a(sNe,"validatePassword");var EVt=require("uuid");var _Vt=V.SESSION_EXPIRY_SECONDS?parseInt(V.SESSION_EXPIRY_SECONDS):mi.fromDays(7).toSeconds();function hL(e,t){return`${e}/${t}`}a(hL,"makeSessionID");async function l7(e){return e?(await(await Kv()).scan(e)).map(n=>n.value):(console.trace("Cannot get sessions for undefined userId"),[])}a(l7,"getSessionsForUser");async function lA(e,t={}){try{let r=t?.reason||"unknown",n=t.sessionIds||[],i;if(n.length===0?i=(await l7(e)).map(s=>({key:hL(s.userId,s.sessionId)})):(n=Array.isArray(n)?n:[n],i=n.map(o=>({key:hL(e,o)}))),i&&i.length>0){let o=await Kv(),s=[];for(let u of i)s.push(o.delete(u.key));V.isTest()||Zw(`Invalidating sessions for ${e} (reason: ${r}) - ${i.map(u=>u.key).join(", ")}`),await Promise.all(s)}}catch(r){console.error(`Error invalidating sessions: ${r}`)}}a(lA,"invalidateSessions");async function uNe(e){let t=await Kv(),r=hL(e.userId,e.sessionId);e.lastAccessedAt=new Date().toISOString(),await t.store(r,e,_Vt)}a(uNe,"updateSessionTTL");async function cNe(e,t){if(!e||!t)throw new Error(`Invalid session details - ${e} - ${t}`);let n=await(await Kv()).get(hL(e,t));if(!n)throw new Error(`Session not found - ${e} - ${t}`);return n}a(cNe,"getSession");var Tt={};oe(Tt,{account:()=>c2e,action:()=>l2e,ai:()=>m2e,analytics:()=>gL,app:()=>f2e,auditLog:()=>k2e,auth:()=>DL,automation:()=>p2e,backfill:()=>T2e,backfillCache:()=>CL,backup:()=>O2e,datasource:()=>d2e,email:()=>h2e,environmentVariable:()=>I2e,group:()=>A2e,identification:()=>Uc,initAsyncEvents:()=>fJt,installation:()=>_A,layout:()=>y2e,license:()=>g2e,org:()=>b2e,plugin:()=>R2e,processors:()=>p7,publishEvent:()=>fe,query:()=>v2e,role:()=>OA,rowAction:()=>C2e,rows:()=>E2e,screen:()=>w2e,serve:()=>S2e,shutdown:()=>pJt,table:()=>_2e,user:()=>us,view:()=>x2e,workspace:()=>D2e});var p7={};oe(p7,{analyticsProcessor:()=>yNe,init:()=>DVt,processors:()=>yp});var gL={};oe(gL,{enabled:()=>mL});var mL=a(async()=>yL(),"enabled");var mNe=te($9());var SVt=a(e=>e==="served:builder"||e==="served:app:preview"||e==="served:app","isRateLimited"),xVt=a(e=>e==="served:app:preview"||e==="served:app","isPerApp");var pNe={"served:app":"calendarDay","served:app:preview":"calendarDay","served:builder":"calendarDay"},dNe=a(async e=>{if(!SVt(e))return!1;let t=await TVt(e);if(t){let r=new Date(t.timestamp);switch(pNe[e]){case"calendarDay":return r.setDate(r.getDate()+1),r.setHours(0,0,0,0),Date.now()>r.getTime()?(await fNe(e,{timestamp:Date.now()}),!1):!0}}else return await fNe(e,{timestamp:Date.now()}),!1},"limited"),hNe=a(e=>{let t=`${aa.EVENTS_RATE_LIMIT}:${e}`;return xVt(e)&&(t=t+":"+Zo()),t},"eventKey"),TVt=a(async e=>{let t=hNe(e);return await fy(t)},"readEvent"),fNe=a(async(e,t)=>{let r=hNe(e),n=pNe[e],i;switch(n){case"calendarDay":i=86400}await mp(r,t,i)},"recordEvent");var RVt=["user:updated","email:smtp:updated","auth:sso:updated","app:updated","role:updated","datasource:updated","query:updated","view:updated","view:calculation:updated","automation:trigger:updated","user_group:updated"],fA=class{static{a(this,"PosthogProcessor")}constructor(t){if(!t)throw new Error("Posthog token is not defined");this.posthog=new mNe.PostHog(t)}async processEvent(t,r,n,i){if(RVt.includes(t)||await dNe(t))return;n=this.clearPIIProperties(n),n.version=V.VERSION,n.service=V.SERVICE,n.environment=r.environment,n.hosting=r.hosting;let o=Zo();o&&(n.appId=o);let s={distinctId:r.id,event:t,properties:n};i&&(s.timestamp=new Date(i)),(r.installationId||r.tenantId)&&(s.groups={},r.installationId&&(s.groups.installation=r.installationId,s.properties.installationId=r.installationId),r.tenantId&&(s.groups.tenant=r.tenantId,s.properties.tenantId=r.tenantId)),this.posthog.capture(s)}clearPIIProperties(t){return t.email&&delete t.email,t.audited&&delete t.audited,t}async identify(t,r){let n={distinctId:t.id,properties:t};r&&(n.timestamp=new Date(r)),this.posthog.identify(n)}async identifyGroup(t,r){let n={distinctId:t.id,groupType:t.type,groupKey:t.id,properties:t};r&&(n.timestamp=new Date(r)),this.posthog.groupIdentify(n)}async shutdown(){await this.posthog.shutdown()}};var gNe=fA;var OVt=["installation:version:upgraded","installation:version:downgraded"],IVt=["installation","tenant"],pA=class{static{a(this,"AnalyticsProcessor")}constructor(){V.POSTHOG_TOKEN&&!V.isTest()&&(this.posthog=new gNe(V.POSTHOG_TOKEN))}async processEvent(t,r,n,i){!OVt.includes(t)&&!await mL()||this.posthog&&await this.posthog.processEvent(t,r,n,i)}async identify(t,r){!IVt.includes(t.type)&&!await mL()||this.posthog&&await this.posthog.identify(t,r)}async identifyGroup(t,r){this.posthog&&await this.posthog.identifyGroup(t,r)}async shutdown(){this.posthog&&await this.posthog.shutdown()}};var f7=V.SELF_HOSTED&&!V.isDev(),dA=class{static{a(this,"LoggingProcessor")}async processEvent(t,r,n){f7||console.log(`[audit] [identityType=${r.type}] ${t}`,n)}async identify(t){f7||console.log("[audit] identified",t)}async identifyGroup(t){f7||console.log("[audit] group identified",t)}async shutdown(){}};var rE=class e{static{a(this,"AuditLogsProcessor")}static{this.auditLogsEnabled=!1}static init(t){e.auditLogsEnabled=!0;let r=t;return e.auditLogQueue=new Sc("auditLogQueue",{jobTags:n=>({"event.name":n.event})}),e.auditLogQueue.process(async n=>{await Xo(n.data.tenantId,async()=>{let i=n.data.properties;i.audited&&(i={...i,...i.audited},delete i.audited);let o={};V.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(t,r,n,i){if(e.auditLogsEnabled&&oz(t)){let o=r.type==="user"?r.id:void 0;await e.auditLogQueue.add({event:t,properties:n,opts:{userId:o,timestamp:i,appId:Zo(),hostInfo:r.hostInfo},tenantId:Pt()})}}async identify(){}async identifyGroup(){}async shutdown(){await e.auditLogQueue?.close()}};var hA=class{constructor(t){this.initialised=!1;this.processors=[];this.processors=t}static{a(this,"Processor")}async processEvent(t,r,n,i){for(let o of this.processors)await o.processEvent(t,r,n,i)}async identify(t,r){for(let n of this.processors)n.identify&&await n.identify(t,r)}async identifyGroup(t,r){for(let n of this.processors)n.identifyGroup&&await n.identifyGroup(t,r)}async shutdown(){for(let t of this.processors)t.shutdown&&await t.shutdown()}};var yNe=new pA,kVt=new dA,CVt=new rE;function DVt(e){return rE.init(e)}a(DVt,"init");var yp=new hA([yNe,kVt,CVt]);var xh={};oe(xh,{checkInstallVersion:()=>kKt,getInstall:()=>SA,getInstallFromDB:()=>P7});var D7=te(C7());var SA=a(async()=>Sh(aa.INSTALLATION,86400,P7,{useTenancy:!1}),"getInstall");async function OKt(e){let t={_id:bn.PLATFORM_INFO.docs.install,installId:kn(),version:V.VERSION};try{let r=await e.put(t);return t._rev=r.rev,t}catch(r){if(r.status===409)return P7();throw r}}a(OKt,"createInstallDoc");var P7=a(async()=>Fs(bn.PLATFORM_INFO.name,async e=>{let t;try{t=await e.get(bn.PLATFORM_INFO.docs.install)}catch(r){if(r.status===404)t=await OKt(e);else throw r}return t}),"getInstallFromDB"),IKt=a(async e=>{try{await Fs(bn.PLATFORM_INFO.name,async t=>{let r=await SA();r.version=e,await t.put(r),await eE(aa.INSTALLATION)})}catch(t){if(t.status===409)return!1;throw t}return!0},"updateVersion"),kKt=a(async()=>{let e=await SA(),t=e.version,r=V.VERSION;try{if(t!==r){let n=D7.default.gt(r,t),i=D7.default.lt(r,t);await IKt(r)&&(await h0({_id:e.installId,type:"installation"},async()=>{n?await _A.upgraded(t,r):i&&await _A.downgraded(t,r)}),await Uc.identifyInstallationGroup(e.installId))}}catch(n){n?.message?.includes("Invalid Version")?sy(`Invalid version "${r}" - is it semver?`):sy("Failed to retrieve version",n)}},"checkInstallVersion");var CKt=a(async()=>{let e=N4(),t=AA(),r;if(e?r=e.type:r="tenant",r==="installation"){let n=await my(),i=xA();return{id:o2e(n,r),hosting:i,type:r,installationId:n,environment:t}}else if(r==="tenant"){let n=await my(),i=await kL(Pt()),o=xA();return{id:o2e(i,r),type:r,hosting:o,installationId:n,tenantId:i,realTenantId:Pt(),environment:t}}else if(r==="user"){let n=e,i=await kL(Pt()),o=await my(),s=n.account,u;return s?u=s.hosting:u=xA(),{id:n._id,type:r,hosting:u,installationId:o,tenantId:i,environment:t,realTenantId:Pt(),hostInfo:n.hostInfo}}else throw new Error("Unknown identity type")},"getCurrentIdentity"),DKt=a(async(e,t)=>{let r=e,n="installation",i=xA(),o=V.VERSION,s=AA(),u={id:r,type:n,hosting:i,version:o,environment:s};await L7(u,t),await TA({...u,id:`$${n}_${r}`},t)},"identifyInstallationGroup"),PKt=a(async(e,t,r,n=V.VERSION)=>{let i=await kL(e),o="tenant",s=await my(),u=AA(),c={id:i,type:o,hosting:t,environment:u,installationId:s,createdAt:r,createdVersion:n};await L7(c,r),await TA({...c,id:`$${o}_${i}`},r)},"identifyTenantGroup"),NKt=a(async(e,t,r)=>{let n=e._id,i=await kL(e.tenantId),o="user",s=ss(e),u=Th(e),c;Bb(e)&&(c=e.providerType);let f=(await aE([e.email])).length>0,p=!!t&&f&&t.verified,d=await my(),h=t?t.hosting:xA(),m=AA();await TA({id:n,type:o,hosting:h,installationId:d,tenantId:i,verified:p,accountHolder:f,providerType:c,builder:s,admin:u,environment:m},r)},"identifyUser"),LKt=a(async e=>{let t=e.accountId,r=e.tenantId,n="user",i=rk(e)?e.providerType:void 0,o=e.verified,s=!0,u=e.hosting,c=await my(),l=AA();if(tk(e)){let p=await jc(e.email);p?._id&&(t=p._id)}await TA({id:t,type:n,hosting:u,installationId:c,tenantId:r,providerType:i,verified:o,accountHolder:s,environment:l})},"identifyAccount"),TA=a(async(e,t)=>{await yp.identify(e,t)},"identify"),L7=a(async(e,t)=>{await yp.identifyGroup(e,t)},"identifyGroup"),AA=a(()=>V.isDev()?"development":V.DEPLOYMENT_ENVIRONMENT,"getDeploymentEnvironment"),xA=a(()=>V.SELF_HOSTED?"self":"cloud","getHostingFromEnv"),my=a(async()=>FKt()?"account-portal":(await SA()).installId,"getInstallationId"),kL=a(async e=>V.SELF_HOSTED?s2e(e):e,"getEventTenantId"),s2e=a(async e=>Xo(e,()=>Sh(aa.UNIQUE_TENANT_ID,86400,async()=>{let t=Ar(),r=await Jw(),n;return r.config.uniqueTenantId?r.config.uniqueTenantId:(n=`${kn()}_${e}`,r.config.uniqueTenantId=n,r.config.createdVersion=V.VERSION,await t.put(r),n)})),"getUniqueTenantId"),FKt=a(()=>V.SERVICE==="account-portal","isAccountPortal"),o2e=a((e,t)=>t==="installation"||t==="tenant"?`$${t}_${e}`:e,"formatDistinctId"),Uc={getCurrentIdentity:CKt,identifyInstallationGroup:DKt,identifyTenantGroup:PKt,identifyUser:NKt,identifyAccount:LKt,identify:TA,identifyGroup:L7,getInstallationId:my,getUniqueTenantId:s2e};var CL={};oe(CL,{end:()=>jKt,isAlreadySent:()=>j7,isBackfillingEvent:()=>U7,recordEvent:()=>F7,start:()=>UKt});var UKt=a(async e=>BKt({eventWhitelist:e}),"start"),F7=a(async(e,t)=>{let r=M7(e,t);await mp(r,t,void 0,{useTenancy:!1})},"recordEvent"),jKt=a(async()=>{await qKt(),await $Kt()},"end"),MKt=a(async()=>fy(aa.BACKFILL_METADATA),"getBackfillMetadata"),BKt=a(async e=>mp(aa.BACKFILL_METADATA,e),"saveBackfillMetadata"),qKt=a(async()=>{await aA(aa.BACKFILL_METADATA)},"deleteBackfillMetadata"),$Kt=a(async()=>{let e=M7(),t=await lL(e);for(let r of t)await aA(r,{useTenancy:!1})},"clearEvents"),U7=a(async e=>{let r=(await MKt())?.eventWhitelist;return!!(r&&r.includes(e))},"isBackfillingEvent"),j7=a(async(e,t)=>{let r=M7(e,t);return!!await fy(r,{useTenancy:!1})},"isAlreadySent"),zKt={"automation:created":e=>e.automationId,"automation:step:created":e=>e.stepId,"datasource:created":e=>e.datasourceId,"layout:created":e=>e.layoutId,"query:created":e=>e.queryId,"role:created":e=>e.roleId,"screen:created":e=>e.screenId,"table:created":e=>e.tableId,"view:created":e=>e.tableId,"view:calculation:created":e=>e.tableId,"view:filter:created":e=>e.tableId,"app:created":e=>e.appId,"app:published":e=>e.appId,"auth:sso:created":e=>e.type,"auth:sso:activated":e=>e.type,"user:created":e=>e.userId,"user:admin:assigned":e=>e.userId,"user:builder:assigned":e=>e.userId,"role:assigned":e=>`${e.roleId}-${e.userId}`},M7=a((e,t)=>{let r,n=Pt();if(e){r=`${aa.EVENTS}:${n}:${e}`;let i=zKt[e],o=i?i(t):void 0;o&&(r=`${r}:${o}`)}else r=`${aa.EVENTS}:${n}:*`;return r},"getEventKey");var RA;function B7(){RA=new Sc("systemEventQueue",{jobTags:e=>({"event.name":e.event})})}a(B7,"init");async function u2e(e){RA||B7();let{event:t,identity:r}=e;Joe.indexOf(t)!==-1&&r.tenantId&&await RA.add(e)}a(u2e,"publishAsyncEvent");var fe=a(async(e,t,r,n)=>{let i=n||await Uc.getCurrentIdentity();if(!(n?!1:await U7(e))){await u2e({event:e,identity:i,properties:t,timestamp:r}),await yp.processEvent(e,i,t,r);return}await j7(e,t)||(await yp.processEvent(e,i,t,r),await F7(e,t))},"publishEvent");async function WKt(e,t){let r={tenantId:e.tenantId};await fe("account:created",r,void 0,t)}a(WKt,"created");async function GKt(e){let t={tenantId:e.tenantId};await fe("account:deleted",t)}a(GKt,"deleted");async function HKt(e){let t={tenantId:e.tenantId};await fe("account:verified",t)}a(HKt,"verified");var c2e={created:WKt,deleted:GKt,verified:HKt};async function VKt(e,t){await fe("action:automation_step:executed",e,t)}a(VKt,"automationStepExecuted");async function KKt(e,t){await fe("action:crud:executed",e,t)}a(KKt,"crudExecuted");async function QKt(e,t){await fe("action:ai_agent:executed",e,t)}a(QKt,"aiAgentExecuted");var l2e={aiAgentExecuted:QKt,automationStepExecuted:VKt,crudExecuted:KKt};var YKt=a(async(e,t)=>{let r={appId:e.appId,version:e.version,audited:{name:e.name}};await fe("app:created",r,t)},"created");async function JKt(e){let t={appId:e.appId,version:e.version,audited:{name:e.name}};await fe("app:updated",t)}a(JKt,"updated");async function XKt(e){let t={appId:e.appId,audited:{name:e.name}};await fe("app:deleted",t)}a(XKt,"deleted");async function ZKt(e,t){let r={appId:e.appId,audited:{name:e.name}};await fe("app:published",r,t)}a(ZKt,"published");async function eQt(e){let t={appId:e.appId,audited:{name:e.name}};await fe("app:unpublished",t)}a(eQt,"unpublished");async function tQt(e){let t={appId:e.appId,audited:{name:e.name}};await fe("app:file:imported",t)}a(tQt,"fileImported");async function rQt(e,t){let r={duplicateAppId:t,appId:e.appId,audited:{name:e.name}};await fe("app:duplicated",r)}a(rQt,"duplicated");async function nQt(e,t){let r={appId:e.appId,templateKey:t,audited:{name:e.name}};await fe("app:template:imported",r)}a(nQt,"templateImported");async function iQt(e,t,r){let n={appId:e.appId,currentVersion:t,updatedToVersion:r,audited:{name:e.name}};await fe("app:version:updated",n)}a(iQt,"versionUpdated");async function aQt(e,t,r){let n={appId:e.appId,currentVersion:t,revertedToVersion:r,audited:{name:e.name}};await fe("app:version:reverted",n)}a(aQt,"versionReverted");async function oQt(e){let t={appId:e.appId,audited:{name:e.name}};await fe("app:reverted",t)}a(oQt,"reverted");async function sQt(e){let t={appId:e.appId,audited:{name:e.name}};await fe("app:exported",t)}a(sQt,"exported");var f2e={created:YKt,updated:JKt,deleted:XKt,published:ZKt,unpublished:eQt,fileImported:tQt,duplicated:rQt,templateImported:nQt,versionUpdated:iQt,versionReverted:aQt,reverted:oQt,exported:sQt};async function uQt(e,t){let n={userId:(await Uc.getCurrentIdentity()).id,source:e,audited:{email:t}};await fe("auth:login",n)}a(uQt,"login");async function cQt(e){let r={userId:(await Uc.getCurrentIdentity()).id,audited:{email:e}};await fe("auth:logout",r)}a(cQt,"logout");async function lQt(e,t){let r={type:e};await fe("auth:sso:created",r,t)}a(lQt,"SSOCreated");async function fQt(e){let t={type:e};await fe("auth:sso:updated",t)}a(fQt,"SSOUpdated");async function pQt(e,t){let r={type:e};await fe("auth:sso:activated",r,t)}a(pQt,"SSOActivated");async function dQt(e){let t={type:e};await fe("auth:sso:deactivated",t)}a(dQt,"SSODeactivated");var DL={login:uQt,logout:cQt,SSOCreated:lQt,SSOUpdated:fQt,SSOActivated:pQt,SSODeactivated:dQt};async function hQt(e,t){let r={appId:e.appId,automationId:e._id,triggerId:e.definition?.trigger?.id,triggerType:e.definition?.trigger?.stepId,audited:{name:e.name}};await fe("automation:created",r,t)}a(hQt,"created");async function mQt(e){let t={appId:e.appId,automationId:e._id,triggerId:e.definition?.trigger?.id,triggerType:e.definition?.trigger?.stepId};await fe("automation:trigger:updated",t)}a(mQt,"triggerUpdated");async function gQt(e){let t={appId:e.appId,automationId:e._id,triggerId:e.definition?.trigger?.id,triggerType:e.definition?.trigger?.stepId,audited:{name:e.name}};await fe("automation:deleted",t)}a(gQt,"deleted");async function yQt(e){let t={appId:e.appId,automationId:e._id,triggerId:e.definition?.trigger?.id,triggerType:e.definition?.trigger?.stepId};await fe("automation:tested",t)}a(yQt,"tested");var bQt=a(async(e,t)=>{let r={count:e};await fe("automations:run",r,t)},"run");async function vQt(e,t,r){let n={appId:e.appId,automationId:e._id,triggerId:e.definition?.trigger?.id,triggerType:e.definition?.trigger?.stepId,stepId:t.id,stepType:t.stepId,audited:{name:e.name}};await fe("automation:step:created",n,r)}a(vQt,"stepCreated");async function wQt(e,t){let r={appId:e.appId,automationId:e._id,triggerId:e.definition?.trigger?.id,triggerType:e.definition?.trigger?.stepId,stepId:t.id,stepType:t.stepId,audited:{name:e.name}};await fe("automation:step:deleted",r)}a(wQt,"stepDeleted");var p2e={created:hQt,triggerUpdated:mQt,deleted:gQt,tested:yQt,run:bQt,stepCreated:vQt,stepDeleted:wQt};function q7(e){return!Object.values(Ya).includes(e.source)}a(q7,"isCustom");async function EQt(e,t){let r={datasourceId:e._id,source:e.source,custom:q7(e)};await fe("datasource:created",r,t)}a(EQt,"created");async function _Qt(e){let t={datasourceId:e._id,source:e.source,custom:q7(e)};await fe("datasource:updated",t)}a(_Qt,"updated");async function SQt(e){let t={datasourceId:e._id,source:e.source,custom:q7(e)};await fe("datasource:deleted",t)}a(SQt,"deleted");var d2e={created:EQt,updated:_Qt,deleted:SQt};async function xQt(e){let t={};await fe("email:smtp:created",t,e)}a(xQt,"SMTPCreated");async function TQt(){let e={};await fe("email:smtp:updated",e)}a(TQt,"SMTPUpdated");var h2e={SMTPCreated:xQt,SMTPUpdated:TQt};async function AQt(e){let t={};await fe("ai:config:created",t,e)}a(AQt,"AIConfigCreated");async function RQt(){let e={};await fe("ai:config:updated",e)}a(RQt,"AIConfigUpdated");var m2e={AIConfigCreated:AQt,AIConfigUpdated:RQt};async function OQt(e,t){let r={accountId:e.accountId,...t};await fe("license:plan:changed",r)}a(OQt,"planChanged");async function IQt(e){let t={accountId:e.accountId};await fe("license:activated",t)}a(IQt,"activated");async function kQt(e){let t={accountId:e.accountId};await fe("license:checkout:opened",t)}a(kQt,"checkoutOpened");async function CQt(e){let t={accountId:e.accountId};await fe("license:checkout:success",t)}a(CQt,"checkoutSuccess");async function DQt(e){let t={accountId:e.accountId};await fe("license:portal:opened",t)}a(DQt,"portalOpened");async function PQt(e){let t={accountId:e.accountId};await fe("license:payment:failed",t)}a(PQt,"paymentFailed");async function NQt(e){let t={accountId:e.accountId};await fe("license:payment:recovered",t)}a(NQt,"paymentRecovered");var g2e={planChanged:OQt,activated:IQt,checkoutOpened:kQt,checkoutSuccess:CQt,portalOpened:DQt,paymentFailed:PQt,paymentRecovered:NQt};async function LQt(e,t){let r={layoutId:e._id};await fe("layout:created",r,t)}a(LQt,"created");async function FQt(e){let t={layoutId:e};await fe("layout:deleted",t)}a(FQt,"deleted");var y2e={created:LQt,deleted:FQt};async function UQt(e){let t={};await fe("org:info:name:updated",t,e)}a(UQt,"nameUpdated");async function jQt(e){let t={};await fe("org:info:logo:updated",t,e)}a(jQt,"logoUpdated");async function MQt(e){let t={};await fe("org:platformurl:updated",t,e)}a(MQt,"platformURLUpdated");async function BQt(){let e={};await fe("analytics:opt:out",e)}a(BQt,"analyticsOptOut");async function qQt(){let e={};await fe("analytics:opt:out",e)}a(qQt,"analyticsOptIn");var b2e={nameUpdated:UQt,logoUpdated:jQt,platformURLUpdated:MQt,analyticsOptOut:BQt,analyticsOptIn:qQt};var $Qt=a(async(e,t,r)=>{let n={queryId:t._id,datasourceId:e._id,source:e.source,queryVerb:t.queryVerb};await fe("query:created",n,r)},"created"),zQt=a(async(e,t)=>{let r={queryId:t._id,datasourceId:e._id,source:e.source,queryVerb:t.queryVerb};await fe("query:updated",r)},"updated"),WQt=a(async(e,t,r)=>{let n={queryId:t._id,datasourceId:e._id,source:e.source,queryVerb:t.queryVerb,appId:r};await fe("query:deleted",n)},"deleted"),GQt=a(async(e,t,r)=>{let n={datasourceId:e._id,source:e.source,count:r,importSource:t};await fe("query:import",n)},"imported"),HQt=a(async(e,t)=>{let r={count:e};await fe("queries:run",r,t)},"run"),VQt=a(async(e,t)=>{let r={queryId:t.queryId,datasourceId:e._id,source:e.source,queryVerb:t.queryVerb};await fe("query:previewed",r)},"previewed"),v2e={created:$Qt,updated:zQt,deleted:WQt,imported:GQt,run:HQt,previewed:VQt};async function KQt(e,t){let r={roleId:e._id,permissionId:e.permissionId,inherits:e.inherits};await fe("role:created",r,t)}a(KQt,"created");async function QQt(e){let t={roleId:e._id,permissionId:e.permissionId,inherits:e.inherits};await fe("role:updated",t)}a(QQt,"updated");async function YQt(e){let t={roleId:e._id,permissionId:e.permissionId,inherits:e.inherits};await fe("role:deleted",t)}a(YQt,"deleted");async function JQt(e,t,r){let n={userId:e._id,roleId:t};await fe("role:assigned",n,r)}a(JQt,"assigned");async function XQt(e,t){let r={userId:e._id,roleId:t};await fe("role:unassigned",r)}a(XQt,"unassigned");var OA={created:KQt,updated:QQt,deleted:YQt,assigned:JQt,unassigned:XQt};async function ZQt(e,t){let r={layoutId:e.layoutId,screenId:e._id,roleId:e.routing.roleId,audited:{name:e.routing?.route}};await fe("screen:created",r,t)}a(ZQt,"created");async function eYt(e){let t={layoutId:e.layoutId,screenId:e._id,roleId:e.routing.roleId,audited:{name:e.routing?.route}};await fe("screen:deleted",t)}a(eYt,"deleted");var w2e={created:ZQt,deleted:eYt};var tYt=a(async(e,t)=>{let r={count:e};await fe("rows:created",r,t)},"created"),rYt=a(async(e,t)=>{let r={tableId:e._id,count:t};await fe("rows:imported",r)},"imported"),E2e={created:tYt,imported:rYt};async function nYt(e,t){let r={tableId:e._id,audited:{name:e.name}};await fe("table:created",r,t)}a(nYt,"created");async function iYt(e,t){let r,n;for(let o in t.schema)if(!e.schema[o]){let s=t.schema[o];"default"in s&&s.default!=null&&(r=!0),s.type==="ai"&&(n=s.operation)}let i={tableId:t._id,defaultValues:r,aiColumn:n,audited:{name:t.name}};(r||n)&&await fe("table:updated",i)}a(iYt,"updated");async function aYt(e,t){let r={tableId:e._id,audited:{name:e.name},appId:t};await fe("table:deleted",r)}a(aYt,"deleted");async function oYt(e,t){let r={tableId:e._id,format:t,audited:{name:e.name}};await fe("table:exported",r)}a(oYt,"exported");async function sYt(e){let t={tableId:e._id,audited:{name:e.name}};await fe("table:imported",t)}a(sYt,"imported");var _2e={created:nYt,updated:iYt,deleted:aYt,exported:oYt,imported:sYt};async function uYt(e){let t={timezone:e};await fe("served:builder",t)}a(uYt,"servedBuilder");async function cYt(e,t,r){let n={appVersion:e.version,timezone:t,embed:r===!0};await fe("served:app",n)}a(cYt,"servedApp");async function lYt(e,t){let r={appId:e.appId,appVersion:e.version,timezone:t};await fe("served:app:preview",r)}a(lYt,"servedAppPreview");var S2e={servedBuilder:uYt,servedApp:cYt,servedAppPreview:lYt};async function fYt(e,t){let r={userId:e._id,viaScim:Ec(),audited:{email:e.email}};await fe("user:created",r,t)}a(fYt,"created");async function pYt(e){let t={userId:e._id,viaScim:Ec(),audited:{email:e.email}};await fe("user:updated",t)}a(pYt,"updated");async function dYt(e){let t={userId:e._id,viaScim:Ec(),audited:{email:e.email}};await fe("user:deleted",t)}a(dYt,"deleted");async function hYt(e,t){let r={userId:e._id,audited:{email:e.email}};await fe("user:admin:assigned",r,t)}a(hYt,"permissionAdminAssigned");async function mYt(e){let t={userId:e._id,audited:{email:e.email}};await fe("user:admin:removed",t)}a(mYt,"permissionAdminRemoved");async function gYt(e,t){let r={userId:e._id,audited:{email:e.email}};await fe("user:builder:assigned",r,t)}a(gYt,"permissionBuilderAssigned");async function yYt(e){let t={userId:e._id,audited:{email:e.email}};await fe("user:builder:removed",t)}a(yYt,"permissionBuilderRemoved");async function bYt(e){let t={audited:{email:e}};await fe("user:invited",t)}a(bYt,"invited");async function vYt(e){let t={userId:e._id,audited:{email:e.email}};await fe("user:invite:accepted",t)}a(vYt,"inviteAccepted");async function wYt(e){let t={userId:e._id,audited:{email:e.email}};await fe("user:password:force:reset",t)}a(wYt,"passwordForceReset");async function EYt(e){let t={userId:e._id,audited:{email:e.email}};await fe("user:password:updated",t)}a(EYt,"passwordUpdated");async function _Yt(e){let t={userId:e._id,audited:{email:e.email}};await fe("user:password:reset:requested",t)}a(_Yt,"passwordResetRequested");async function SYt(e){let t={userId:e._id,audited:{email:e.email}};await fe("user:password:reset",t)}a(SYt,"passwordReset");async function xYt(e){let t={users:e};await fe("user:data:collaboration",t)}a(xYt,"dataCollaboration");var us={created:fYt,updated:pYt,deleted:dYt,permissionAdminAssigned:hYt,permissionAdminRemoved:mYt,permissionBuilderAssigned:gYt,permissionBuilderRemoved:yYt,invited:bYt,inviteAccepted:vYt,passwordForceReset:wYt,passwordUpdated:EYt,passwordResetRequested:_Yt,passwordReset:SYt,dataCollaboration:xYt};async function TYt(e,t){let r={name:e.name,type:e.type,tableId:e.tableId};await fe("view:created",r,t)}a(TYt,"created");async function AYt(e){let t={tableId:e.tableId};await fe("view:updated",t)}a(AYt,"updated");async function RYt(e,t){let r={...Ye.views.isV2(e)?{id:e.id,tableId:e.tableId,appId:t}:{}};await fe("view:deleted",r)}a(RYt,"deleted");async function OYt(e,t){let r={tableId:e._id,format:t};await fe("view:exported",r)}a(OYt,"exported");async function IYt({tableId:e,filterGroups:t},r){let n={tableId:e,filterGroups:t};await fe("view:filter:created",n,r)}a(IYt,"filterCreated");async function kYt({tableId:e,filterGroups:t}){let r={tableId:e,filterGroups:t};await fe("view:filter:updated",r)}a(kYt,"filterUpdated");async function CYt(e){let t={tableId:e.tableId};await fe("view:filter:deleted",t)}a(CYt,"filterDeleted");async function DYt({tableId:e,calculationType:t},r){let n={tableId:e,calculation:t};await fe("view:calculation:created",n,r)}a(DYt,"calculationCreated");async function PYt(e){let t={tableId:e.tableId,calculation:e.calculation};await fe("view:calculation:updated",t)}a(PYt,"calculationUpdated");async function NYt(e){let t={tableId:e.tableId,calculation:e.calculation};await fe("view:calculation:deleted",t)}a(NYt,"calculationDeleted");async function LYt(e,t){let r={tableId:e};await fe("view:join:created",r,t)}a(LYt,"viewJoinCreated");var x2e={created:TYt,updated:AYt,deleted:RYt,exported:OYt,filterCreated:IYt,filterUpdated:kYt,filterDeleted:CYt,calculationCreated:DYt,calculationUpdated:PYt,calculationDeleted:NYt,viewJoinCreated:LYt};async function FYt(e){let t={currentVersion:e};await fe("installation:version:checked",t)}a(FYt,"versionChecked");async function UYt(e,t){let r={from:e,to:t};await fe("installation:version:upgraded",r)}a(UYt,"upgraded");async function jYt(e,t){let r={from:e,to:t};await fe("installation:version:downgraded",r)}a(jYt,"downgraded");async function MYt(){let e={};await fe("installation:firstStartup",e)}a(MYt,"firstStartup");var _A={versionChecked:FYt,upgraded:UYt,downgraded:jYt,firstStartup:MYt};var oE=!V.SELF_HOSTED&&!V.isDev();async function BYt(e){oE||await fe("app:backfill:succeeded",e)}a(BYt,"appSucceeded");async function qYt(e){if(oE)return;let t={error:JSON.stringify(e,Object.getOwnPropertyNames(e))};await fe("app:backfill:failed",t)}a(qYt,"appFailed");async function $Yt(e){oE||await fe("tenant:backfill:succeeded",e)}a($Yt,"tenantSucceeded");async function zYt(e){if(oE)return;let t={error:JSON.stringify(e,Object.getOwnPropertyNames(e))};await fe("tenant:backfill:failed",t)}a(zYt,"tenantFailed");async function WYt(){if(oE)return;let e={};await fe("installation:backfill:succeeded",e)}a(WYt,"installationSucceeded");async function GYt(e){if(oE)return;let t={error:JSON.stringify(e,Object.getOwnPropertyNames(e))};await fe("installation:backfill:failed",t)}a(GYt,"installationFailed");var T2e={appSucceeded:BYt,appFailed:qYt,tenantSucceeded:$Yt,tenantFailed:zYt,installationSucceeded:WYt,installationFailed:GYt};async function HYt(e,t){let r={groupId:e._id,viaScim:Ec(),audited:{name:e.name}};await fe("user_group:created",r,t)}a(HYt,"created");async function VYt(e){let t={groupId:e._id,viaScim:Ec(),audited:{name:e.name}};await fe("user_group:updated",t)}a(VYt,"updated");async function KYt(e){let t={groupId:e._id,viaScim:Ec(),audited:{name:e.name}};await fe("user_group:deleted",t)}a(KYt,"deleted");async function QYt(e,t){let r={count:e,groupId:t._id,viaScim:Ec(),audited:{name:t.name}};await fe("user_group:user_added",r)}a(QYt,"usersAdded");async function YYt(e,t){let r={count:e,groupId:t._id,viaScim:Ec(),audited:{name:t.name}};await fe("user_group:users_deleted",r)}a(YYt,"usersDeleted");async function JYt(e){let t={groupId:e,onboarding:!0};await fe("user_group:onboarding_added",t)}a(JYt,"createdOnboarding");async function XYt(e){let t={permissions:e.roles,groupId:e._id,audited:{name:e.name}};await fe("user_group:permissions_edited",t)}a(XYt,"permissionsEdited");var A2e={created:HYt,updated:VYt,deleted:KYt,usersAdded:QYt,usersDeleted:YYt,createdOnboarding:JYt,permissionsEdited:XYt};async function ZYt(e){let t={type:e.schema.type,name:e.name,description:e.description,version:e.version};await fe("plugin:init",t)}a(ZYt,"init");async function eJt(e){let t={pluginId:e._id,type:e.schema.type,source:e.source,name:e.name,description:e.description,version:e.version};await fe("plugin:imported",t)}a(eJt,"imported");async function tJt(e){let t={pluginId:e._id,type:e.schema.type,name:e.name,description:e.description,version:e.version};await fe("plugin:deleted",t)}a(tJt,"deleted");var R2e={init:ZYt,imported:eJt,deleted:tJt};async function rJt(e){let t={appId:e.appId,restoreId:e._id,backupCreatedAt:e.timestamp,name:e.name};await fe("app:backup:restored",t)}a(rJt,"appBackupRestored");async function nJt(e,t,r,n,i){let o={appId:e,backupId:t,type:r,trigger:n,name:i};await fe("app:backup:triggered",o)}a(nJt,"appBackupTriggered");var O2e={appBackupRestored:rJt,appBackupTriggered:nJt};async function iJt(e,t){let r={name:e,environments:t};await fe("environment_variable:created",r)}a(iJt,"created");async function aJt(e){let t={name:e};await fe("environment_variable:deleted",t)}a(aJt,"deleted");async function oJt(e){let t={userId:e};await fe("environment_variable:upgrade_panel_opened",t)}a(oJt,"upgradePanelOpened");var I2e={created:iJt,deleted:aJt,upgradePanelOpened:oJt};async function sJt(e){let t={filters:e};await fe("audit_log:filtered",t)}a(sJt,"filtered");async function uJt(e){let t={filters:e};await fe("audit_log:downloaded",t)}a(uJt,"downloaded");var k2e={filtered:sJt,downloaded:uJt};async function cJt(e,t){await fe("row_action:created",e,t)}a(cJt,"created");var C2e={created:cJt};async function lJt(e,t){let r={workspaceAppId:e._id,audited:{name:e.name},appId:t};await fe("workspace_app:deleted",r)}a(lJt,"deleted");var D2e={deleted:lJt};function fJt(){}a(fJt,"initAsyncEvents");var pJt=a(async()=>{await yp.shutdown(),console.log("Events shutdown")},"shutdown");var Ah={};oe(Ah,{creatorsInList:()=>gy,getAccountHolderFromUsers:()=>UL,hasAdminPermissions:()=>Th,hasAppBuilderPermissions:()=>U2e,hasBuilderPermissions:()=>ss,isAdmin:()=>ql,isAdminOrBuilder:()=>F2e,isAdminOrWorkspaceBuilder:()=>NL,isBuilder:()=>sE,isCreatorAsync:()=>kA,isCreatorSync:()=>LL,isGlobalBuilder:()=>L2e,validateUniqueUser:()=>FL});async function $7(e){let t=[],r=await P2e(e);t.push(...r.map(s=>s.email));let n=await N2e(e);t.push(...n.map(s=>s._id));let i=await aE(e);t.push(...i.map(s=>s.email));let o=await a7(e);return t.push(...o.map(s=>s.email)),[...new Set(t.map(s=>s.toLowerCase()))]}a($7,"searchExistingEmails");async function PL(e){return await Ix("platform_users_lowercase_2",{keys:[e.toLowerCase()],include_docs:!0})}a(PL,"getPlatformUsers");async function IA(e){return(await PL(e))[0]??null}a(IA,"getFirstPlatformUser");async function P2e(e){let r={keys:e.map(i=>i.toLowerCase()),include_docs:!0},n={arrayResponse:!0};return await Jf("by_email2",r,void 0,n)}a(P2e,"getExistingTenantUsers");async function N2e(e){let r={keys:e.map(n=>n.toLowerCase()),include_docs:!0};return await Ix("platform_users_lowercase_2",r)}a(N2e,"getExistingPlatformUsers");async function aE(e){let r={keys:e.map(n=>n.toLowerCase()),include_docs:!0};return await Ix("account_by_email",r)}a(aE,"getExistingAccounts");var sE=Yi.users.isBuilder,ql=Yi.users.isAdmin,L2e=Yi.users.isGlobalBuilder,F2e=Yi.users.isAdminOrBuilder,Th=Yi.users.hasAdminPermissions,ss=Yi.users.hasBuilderPermissions,U2e=Yi.users.hasAppBuilderPermissions,NL=Yi.users.isAdminOrWorkspaceBuilder;async function gy(e,t){let r=[...new Set(e.filter(i=>i.userGroups).flatMap(i=>i.userGroups))];return t=await Ar().getMultiple(r,{allowMissing:!0}),e.map(i=>LL(i,t))}a(gy,"creatorsInList");async function kA(e){let t=[];return e.userGroups&&(t=await Ar().getMultiple(e.userGroups)),LL(e,t)}a(kA,"isCreatorAsync");function LL(e,t){let r=Yi.users.isCreator(e);return!r&&e?dJt(e,t):r}a(LL,"isCreatorSync");function dJt(e,t){let r=t?.filter(n=>e.userGroups?.indexOf(n._id)!==-1);return r&&r.length>0?r.some(n=>Object.values(n.roles||{}).includes("CREATOR")):!1}a(dJt,"isCreatorByGroupMembership");async function FL(e,t){if(V.MULTI_TENANCY){let r=await IA(e);if(r!=null&&r.tenantId!==t)throw new gp(e)}if(!V.SELF_HOSTED&&!V.DISABLE_ACCOUNT_PORTAL){let r=await dy(e);if(r&&r.verified&&r.tenantId!==t)throw new gp(e)}}a(FL,"validateUniqueUser");async function UL(e){if(!V.SELF_HOSTED&&!V.DISABLE_ACCOUNT_PORTAL){let t=await aE(e.map(r=>r.email));return e.find(r=>t.map(n=>n.email).includes(r.email))}}a(UL,"getAccountHolderFromUsers");var z7=a(async e=>{await us.deleted(e),ss(e)&&await us.permissionBuilderRemoved(e),Th(e)&&await us.permissionAdminRemoved(e)},"handleDeleteEvents"),hJt=a(async(e,t,r)=>{for(let[n,i]of Object.entries(t))(!r||r[n]!==i)&&await OA.assigned(e,i)},"assignAppRoleEvents"),mJt=a(async(e,t,r)=>{if(r)for(let[n,i]of Object.entries(r))(!t||t[n]!==i)&&await OA.unassigned(e,i)},"unassignAppRoleEvents"),gJt=a(async(e,t)=>{let r=e.roles,n=t?.roles;await hJt(e,r,n),await mJt(e,r,n)},"handleAppRoleEvents"),W7=a(async(e,t)=>{let r=Pt(),n;!V.SELF_HOSTED&&!V.DISABLE_ACCOUNT_PORTAL&&(n=await uA(r)),await Uc.identifyUser(e,n),t?(await us.updated(e),bJt(e,t)&&await us.permissionBuilderRemoved(e),wJt(e,t)&&await us.permissionAdminRemoved(e),!t.forceResetPassword&&e.forceResetPassword&&e.password&&await us.passwordForceReset(e),e.password!==t.password&&await us.passwordUpdated(e)):await us.created(e),yJt(e,t)&&await us.permissionBuilderAssigned(e),vJt(e,t)&&await us.permissionAdminAssigned(e),await gJt(e,t)},"handleSaveEvents"),yJt=a((e,t)=>j2e(e,t,ss),"isAddingBuilder"),bJt=a((e,t)=>M2e(e,t,ss),"isRemovingBuilder"),vJt=a((e,t)=>j2e(e,t,Th),"isAddingAdmin"),wJt=a((e,t)=>M2e(e,t,Th),"isRemovingAdmin"),j2e=a((e,t,r)=>!(!r(e)||t&&r(t)),"isAddingPermission"),M2e=a((e,t,r)=>!(r(e)||!t||!r(t)),"isRemovingPermission");var SJt=a(async e=>{let t=e._id;await Ml.removeUser(e),await z7(e),await Rh.invalidateUser(t),await lA(t,{reason:"bulk-deletion"})},"bulkDeleteProcessing"),$l=class e{static{a(this,"UserDB")}static init(t,r,n){e.quotas=t,e.groups=r,e.features=n}static async isPreventPasswordActions(t,r){return V.ENABLE_SSO_MAINTENANCE_MODE&&ql(t)?!1:await e.features.isSSOEnforced()||Bb(t)?!0:(r||(r=await uA(Pt())),!!(r&&r.email===t.email&&rk(r)))}static async buildUser(t,r={hashPassword:!0,requirePassword:!0},n,i,o){let{password:s,_id:u}=t;i&&!i.password&&(r.requirePassword=!1);let c;if(s&&s!==i?.password){if(await e.isPreventPasswordActions(t,o))throw new Re("Password change is disabled for this user",400);if(!r.skipPasswordValidation){let p=sNe(s);if(!p.valid)throw new Re(p.error,400)}c=r.hashPassword?await D4(s):s}else i&&(c=i.password);let l=r.requirePassword&&!await e.features.isSSOEnforced();if(!c&&l)throw"Password must be specified.";u=u||Qv();let f={createdAt:Date.now(),...i,...t,_id:u,password:c,tenantId:n};return f.roles||(f.roles={}),f.status==null&&(f.status="active"),f}static async allUsers(){return(await Ar().allDocs(gg(null,{include_docs:!0}))).rows.map(n=>n.doc)}static async countUsersByApp(t){return{userCount:(await ML(t,{})).length}}static async getUsersByAppAccess(t){return await G7(t.appId,{limit:t.limit||50})}static async getUserByEmail(t){return jc(t)}static async getUser(t){let r=await yy(t);return r&&delete r.password,r}static async bulkGet(t){return await jL(t)}static async bulkUpdate(t){return await CA(t)}static async save(t,r={}){r.hashPassword==null&&(r.hashPassword=!0),r.requirePassword==null&&(r.requirePassword=!0);let n=Pt(),i=Ar(),{email:o,_id:s,userGroups:u=[],roles:c}=t;if(!o&&!s)throw new Error("_id or email is required");let l;if(s)try{if(l=await yy(s),o&&l.email!==o&&!r.allowChangingEmail)throw new Error("Email address cannot be changed")}catch(d){if(d.status!==404)throw d}if(!l&&o&&(l=await jc(o),l&&l._id!==s))throw new gp(o);let f=1,p=0;if((r.isAccountHolder||l)&&(f=0,p=1),l){let[d,h]=await gy([l,t]);p=d!==h?1:0}return e.quotas.addUsers(f,p,async()=>{r.isAccountHolder||await FL(o,n);let d=await e.buildUser(t,r,n,l);r.currentUserId&&r.currentUserId===l?._id&&(d=H7(d,l)),!l&&c?.length&&(d.roles={...c});let h=[];if(!s&&u.length>0)for(let m of u)h.push(e.groups.addUsers(m,[d._id]));try{let m=await i.put(d);return d._rev=m.rev,await W7(d,l),l&&d.email!==l.email&&await Ml.removeUser({email:l.email}),await Ml.addUser(n,d._id,d.email,d.ssoId),await Rh.invalidateUser(m.id),await Promise.all(h),i.get(d._id)}catch(m){throw m.status===409?"User exists already":m}})}static async bulkCreate(t,r){let n=Pt(),i=[],o=[],s=[],u=t.map(d=>d.email),c=await $7(u),l=[];for(let d of t){let h=o.find(g=>g.email.toLowerCase()===d.email.toLowerCase()),m=c.includes(d.email.toLowerCase());if(h||m){l.push({email:d.email,reason:"Unavailable"});continue}d.userGroups=r||[],o.push(d),await kA(d)&&s.push(d)}let f=await uA(n),p=await e.features.isSSOEnforced();return e.quotas.addUsers(o.length,s.length,async()=>{for(let m of o)p&&delete m.password,i.push(e.buildUser(m,{hashPassword:!0,requirePassword:!p},n,void 0,f));let d=await Promise.all(i);await CA(d);for(let m of d)await Ml.addUser(n,m._id,m.email),await W7(m,void 0);let h=d.map(m=>({_id:m._id,email:m.email}));if(Array.isArray(h)&&r){let m=[],g=h.map(y=>y._id);for(let y of r)m.push(e.groups.addUsers(y,g));await Promise.all(m)}return{successful:h,unsuccessful:l}})}static async bulkDelete(t){let r=Ar(),n={successful:[],unsuccessful:[]},i=await UL(t);i&&(t=t.filter(h=>h.userId!==i.userId),n.unsuccessful.push({_id:i.userId,email:i.email,reason:"Account holder cannot be deleted"}));let s=(await r.allDocs({include_docs:!0,keys:t.map(h=>h.userId)})).rows.map(h=>h.doc),u=s.map(h=>({...h,_deleted:!0})),c=await CA(u),f=(await gy(s)).filter(h=>h).length,p=[];for(let h of s){let g=(await IA(h._id)).ssoId;g&&(await PL(g)).filter(b=>b.ssoId==null).forEach(b=>{p.push({...b,_deleted:!0})}),await SJt(h)}await py().bulkDocs(p),await e.quotas.removeUsers(u.length,f);let d={};return s.reduce((h,m)=>(h[m._id]=m,h),d),c.forEach(h=>{let m=d[h.id].email;h.ok?n.successful.push({_id:h.id,email:m}):n.unsuccessful.push({_id:h.id,email:m,reason:"Database error"})}),n}static async destroy(t){let r=Ar(),n=await r.get(t),i=n._id;if(!V.SELF_HOSTED&&!V.DISABLE_ACCOUNT_PORTAL){let s=n.email;if(await dy(s))throw n.userId===Mf()._id?new Re('Please visit "Account" to delete this user',400):new Re("Account holder cannot be deleted",400)}await Ml.removeUser(n),await r.remove(i,n._rev);let o=await kA(n)?1:0;await e.quotas.removeUsers(1,o),await z7(n),await Rh.invalidateUser(i),await lA(i,{reason:"deletion"})}static async createAdminUser(t,r,n){let i=n?.password,o={email:t,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 eE(aa.CHECKLIST),await e.save(o,{hashPassword:n?.hashPassword,requirePassword:n?.requirePassword,skipPasswordValidation:n?.skipPasswordValidation,isAccountHolder:!0})}static async getGroups(t){return await this.groups.getBulk(t)}static async getGroupBuilderAppIds(t){return await this.groups.getGroupBuilderAppIds(t)}};function DA(e){return Array.isArray(e)?e.map(t=>{if(t)return delete t.password,t}):e&&(delete e.password,e)}a(DA,"removeUserPassword");async function jL(e,t){let n=(await Ar().allDocs({keys:e,include_docs:!0})).rows.map(i=>i.doc);return t?.cleanup&&(n=DA(n)),n}a(jL,"bulkGetGlobalUsersById");async function TJt(){let e=Ar(),t=`us${Me}`;return(await e.allDocs({startkey:t,endkey:`${t}${Da}`})).rows.map(n=>n.id)}a(TJt,"getAllUserIds");async function AJt(){let e=Ar(),t=`us${Me}`;return(await e.allDocs({startkey:t,endkey:`${t}${Da}`,include_docs:!0})).rows.map(n=>n.doc)}a(AJt,"getAllUsers");async function CA(e){return await Ar().bulkDocs(e)}a(CA,"bulkUpdateGlobalUsers");async function yy(e,t){let n=await Ar().get(e);return t?.cleanup&&(n=DA(n)),n}a(yy,"getById");async function jc(e,t){if(e==null)throw"Must supply an email address to view";let r=await Jf("by_email2",{key:e.toLowerCase(),include_docs:!0});if(Array.isArray(r))throw new Error(`Multiple users found with email address: ${e}`);let n=r;return t?.cleanup&&(n=DA(n)),n}a(jc,"getGlobalUserByEmail");async function RJt(e){try{let t=await jc(e);if(Array.isArray(t)||t!=null)return!0}catch{return!1}return!1}a(RJt,"doesUserExist");async function ML(e,t,r){if(typeof e!="string")throw new Error("Must provide a string based workspace ID");let n=w1(e,{include_docs:!0});n.startkey=t&&t.startkey?t.startkey:n.startkey;let i=await Jf("by_app",n);i||(i=[]);let o=Array.isArray(i)?i:[i];return r?.cleanup&&(o=DA(o)),o}a(ML,"searchGlobalUsersByApp");async function G7(e,t){let r=`roles.${e}`,n=[{"builder.global":!0},{"admin.global":!0}];if(e){let s={[r]:{$exists:!0}};n.push(s)}return(await Ar().find({selector:{$or:n,_id:{$regex:"^us_"}},limit:t?.limit||50})).docs}a(G7,"searchGlobalUsersByAppAccess");function B2e(e,t){if(t)return v1(Us(e),t._id)}a(B2e,"getGlobalUserByAppPage");async function q2e(e,t,r){if(typeof e!="string")throw new Error("Must provide a string to search by");let n=e.toLowerCase(),i=t&&t.startkey?t.startkey:n,o=await Jf("by_email2",{...t,startkey:i,endkey:`${n}${Da}`});o||(o=[]);let s=Array.isArray(o)?o:[o];return r?.cleanup&&(s=DA(s)),s}a(q2e,"searchGlobalUsersByEmail");var OJt=8;async function $2e({bookmark:e,query:t,appId:r,limit:n}={}){let i=Ar(),o=n??OJt,u={include_docs:!0,limit:o+1};e&&(u.startkey=e);let c,l="_id",f;return t?.equal?._id?c=[await yy(t.equal._id)]:r?(c=await ML(r,u),f=a(p=>B2e(r,p),"getKey")):t?.string?.email?(c=await q2e(t?.string?.email,u),l="email"):t?.oneOf?._id?c=await jL(t?.oneOf?._id,{cleanup:!0}):t?(c=(await i.allDocs(gg(null,{...u,limit:void 0}))).rows.map(d=>d.doc),c=Lr.search(c,{query:t,limit:u.limit}).rows):c=(await i.allDocs(gg(null,u))).rows.map(d=>d.doc),Y$(c,o,{paginate:!0,property:l,getKey:f})}a($2e,"paginatedUsers");async function IJt(){return(await Z$("by_email2",{limit:0,include_docs:!1})).total_rows}a(IJt,"getUserCount");async function kJt(){let e=0;async function t(r){let n=await $2e({bookmark:r}),i=await gy(n.data);e+=i.filter(o=>o).length,n.hasNextPage&&await t(n.nextPage)}return a(t,"iterate"),await t(),e}a(kJt,"getCreatorCount");function CJt(e){return delete e.admin,delete e.builder,e}a(CJt,"removePortalUserPermissions");function H7(e,t){return delete e.admin,delete e.builder,delete e.roles,t&&(e.admin=t.admin,e.builder=t.builder,e.roles=t.roles),e}a(H7,"cleanseUserObject");async function DJt(e,t){let r=Us(t);e.builder??={},e.builder.creator=!0,e.builder.apps??=[],e.builder.apps.push(r),await $l.save(e,{hashPassword:!1})}a(DJt,"addAppBuilder");async function PJt(e,t){let r=Us(t);e.builder&&e.builder.apps?.includes(r)&&(e.builder.apps=e.builder.apps.filter(n=>n!==r)),await $l.save(e,{hashPassword:!1})}a(PJt,"removeAppBuilder");var z2e=3600;async function NJt(e,t){let n=await nz(t).get(e);if(n.budibaseAccess=!0,!V.SELF_HOSTED&&!V.DISABLE_ACCOUNT_PORTAL){let i=await dy(n.email);i&&(n.account=i,n.accountPortalAccess=!0)}return n}a(NJt,"populateFromDB");async function LJt(e){let t=await $l.bulkGet(e),r=e.filter((i,o)=>!t[o]),n=t.filter(i=>i);return await Promise.all(n.map(async i=>{if(i.budibaseAccess=!0,!V.SELF_HOSTED&&!V.DISABLE_ACCOUNT_PORTAL){let o=await dy(i.email);o&&(i.account=o,i.accountPortalAccess=!0)}})),r.length?{users:n,notFoundIds:r}:{users:n}}a(LJt,"populateUsersFromDB");async function PA({userId:e,tenantId:t,email:r,populateUser:n}){if(n||(n=NJt),!t)try{t=Pt()}catch{t=await Ml.lookupTenantId(e)}let i=await Sx(),o=await i.get(e);return o||(o=await n(e,t,r),await i.store(e,o,z2e)),o&&!o.tenantId&&t&&(o.tenantId=t),o.userGroups&&!Yi.users.isGlobalBuilder(o)&&await Xo(t,async()=>{let s=await $l.getGroupBuilderAppIds(o);if(s.length){let u=o.builder?.apps||[];o.builder={apps:[...new Set(u.concat(s))]}}}),o}a(PA,"getUser");async function FJt(e){let t=await Sx(),r=await t.bulkGet(e),n=e.filter(s=>!r[s]),i=Object.values(r).filter(s=>!!s),o;if(n.length){let s=await LJt(n);o=s.notFoundIds;for(let u of s.users)await t.store(u._id,u,z2e);i.push(...s.users)}return{users:i,notFoundIds:o}}a(FJt,"getUsers");async function NA(e){await(await Sx()).delete(e)}a(NA,"invalidateUser");var dK={};oe(dK,{Writethrough:()=>lK});var Mc={};oe(Mc,{AUTO_EXTEND_POLLING_MS:()=>AUe,doWithLock:()=>uK,newRedlock:()=>wy});var TUe=te(xUe());async function nXt(e,t){if(e==="custom")return wy(t);switch(e){case"try_once":return wy(pE.TRY_ONCE);case"try_twice":return wy(pE.TRY_TWICE);case"default":return wy(pE.DEFAULT);case"delay_500":return wy(pE.DELAY_500);case"auto_extend":return wy(pE.AUTO_EXTEND);default:throw $t.unreachable(e)}}a(nXt,"getClient");var pE={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 wy(e={}){let t={...pE.DEFAULT,...e},n=(await G$()).client;return new TUe.default([n],t)}a(wy,"newRedlock");function iXt(e){let r=`lock:${e.systemLock?"system":Pt()}_${e.name}`;return e.resource&&(r=r+`_${e.resource}`),r}a(iXt,"getLockName");var AUe=mi.fromSeconds(10).toMs();async function uK(e,t){let r=await nXt(e.type,e.customOptions),n,i;try{let o=iXt(e),s=e.type==="auto_extend"?AUe:e.ttl;if(n=await r.lock(o,s),e.type==="auto_extend"){let c=a(()=>{i=setTimeout(async()=>{n=await n.extend(s,()=>e.onExtend&&e.onExtend()),c()},s/2)},"extendInIntervals");c()}return{executed:!0,result:await t()}}catch(o){if(o.name==="LockError"){if(e.type==="try_once")return{executed:!1};throw o}else throw o}finally{clearTimeout(i),await n?.unlock()}}a(uK,"doWithLock");var RUe=1e4,cK=null;async function VL(){if(!cK){let e=await W$();cK=new uy(e)}return cK}a(VL,"getCache");function UA(e,t){return e.name+t}a(UA,"makeCacheKey");function pK(e,t=null){return{doc:e,lastWrite:t||Date.now()}}a(pK,"makeCacheItem");async function aXt(e,t,r=RUe){let n=await VL(),i=t._id,o;i&&(o=await n.get(UA(e,i)));let s=!o||o.lastWrite<Date.now()-r,u=t;return s&&((await uK({type:"try_once",name:"persist_writethrough",resource:i,ttl:15e3},async()=>{let l=a(async f=>{let p=await e.put(f,{force:!0});u._id=p.id,u._rev=p.rev},"writeDb");try{await l(t)}catch(f){if(f.status!==409)throw f;Zw("Ignoring conflict in write-through cache")}})).executed||Zw("Ignoring redlock conflict in write-through cache")),o=pK(u,s?null:o?.lastWrite),u._id&&await n.store(UA(e,u._id),o),{ok:!0,id:u._id,rev:u._rev}}a(aXt,"put");async function oXt(e,t){let r=await VL(),n=UA(e,t),i=await r.get(n);if(!i){let o=await e.get(t);i=pK(o),await r.store(n,i)}return i.doc}a(oXt,"get");async function sXt(e,t){let r=await VL(),n=UA(e,t),i=await r.get(n);if(!i){let o=await e.tryGet(t);if(!o)return null;i=pK(o),await r.store(n,i)}return i.doc}a(sXt,"tryGet");async function uXt(e,t,r){let n=await VL();if(!t)throw new Error("No ID/Rev provided.");let i=typeof t=="string"?t:t._id;r=typeof t=="string"?r:t._rev;try{await n.delete(UA(e,i))}finally{await e.remove(i,r)}}a(uXt,"remove");var lK=class{static{a(this,"Writethrough")}constructor(t,r=RUe){this.db=t,this.writeRateMs=r}async put(t,r=this.writeRateMs){return aXt(this.db,t,r)}async get(t){return oXt(this.db,t)}async tryGet(t){return sXt(this.db,t)}async remove(t,r){return uXt(this.db,t,r)}};function QL(e){return`config${Me}${e}`}a(QL,"generateConfigID");async function Du(e){let t=Ar();try{return await t.get(QL(e))}catch(r){if(r.status===404)return;throw r}}a(Du,"getConfig");async function cXt(e){return e._id||(e._id=QL(e.type)),Ar().put(e)}a(cXt,"save");async function Jw(){let e=await Du("settings");return e||(e={_id:QL("settings"),type:"settings",config:{}}),e.config.platformUrl=await jA({tenantAware:!0,config:e.config}),e.config.analyticsEnabled=await yL({config:e.config}),e}a(Jw,"getSettingsConfigDoc");async function mK(){return(await Jw()).config}a(mK,"getSettingsConfig");async function jA(e={tenantAware:!0}){let t=V.PLATFORM_URL||"http://localhost:10000";if(!V.SELF_HOSTED&&V.MULTI_TENANCY&&e.tenantAware){let r=Pt();t.includes("localhost:")||(t=t.replace("://",`://${r}.`))}else if(V.SELF_HOSTED){let r=e?.config?e.config:(await Du("settings"))?.config;r?.platformUrl&&(t=r.platformUrl)}return t}a(jA,"getPlatformUrl");var yL=a(async e=>{if(!V.SELF_HOSTED)return!!V.ENABLE_ANALYTICS;let t=await Sh(aa.ANALYTICS_ENABLED,86400,async()=>{let n=e?.config?e.config:(await Du("settings"))?.config;if(n?.analyticsEnabled===!1)return!1;if(n?.analyticsEnabled===!0)return!0});if(t!==void 0)return t;let r=V.ENABLE_ANALYTICS;return!(r===0||r===!1)},"analyticsEnabled");async function lXt(){return await Du("google")}a(lXt,"getGoogleConfigDoc");async function YL(){return(await lXt())?.config}a(YL,"getGoogleConfig");async function gK(){if(!V.SELF_HOSTED)return hK();let e=await YL();return(!e||!e.activated)&&(e=hK()),e}a(gK,"getGoogleDatasourceConfig");function hK(){if(V.GOOGLE_CLIENT_ID&&V.GOOGLE_CLIENT_SECRET)return{clientID:V.GOOGLE_CLIENT_ID,clientSecret:V.GOOGLE_CLIENT_SECRET,activated:!0}}a(hK,"getDefaultGoogleConfig");async function fXt(){return Du("logos_oidc")}a(fXt,"getOIDCLogosDoc");async function pXt(){return Du("oidc")}a(pXt,"getOIDCConfigDoc");async function dXt(){let e=(await pXt())?.config;return e?.configs&&e.configs[0]}a(dXt,"getOIDCConfig");async function yK(e){let t=(await Du("oidc"))?.config;return t&&t.configs.filter(r=>r.uuid===e)[0]}a(yK,"getOIDCConfigById");async function OUe(){return Du("smtp")}a(OUe,"getSMTPConfigDoc");async function hXt(e){let t=await OUe();if(t)return t.config;let r=V.SELF_HOSTED||!e;if(V.SMTP_FALLBACK_ENABLED&&r)return{port:V.SMTP_PORT,host:V.SMTP_HOST,secure:!1,from:V.SMTP_FROM_ADDRESS,auth:{user:V.SMTP_USER,pass:V.SMTP_PASSWORD},fallback:!0}}a(hXt,"getSMTPConfig");async function mXt(){return(await Du("scim"))?.config}a(mXt,"getSCIMConfig");async function gXt(){return Du("ai")}a(gXt,"getAIConfig");async function yXt(){return Du("recaptcha")}a(yXt,"getRecaptchaConfig");var Dr={};oe(Dr,{AccessController:()=>wK,BUILTIN_ROLE_IDS:()=>EK,Role:()=>kh,RoleHierarchyTraversal:()=>JL,RoleIDVersion:()=>_K,builtinRoleToNumber:()=>MA,checkForRoleResourceArray:()=>DUe,externalRole:()=>SXt,findRole:()=>BA,getAllRoleIds:()=>RXt,getAllRoles:()=>AK,getBuiltinRole:()=>kUe,getBuiltinRoles:()=>xK,getDBRoleID:()=>PUe,getExternalRoleID:()=>Ch,getExternalRoleIDs:()=>NUe,getRole:()=>xXt,getUserRoleHierarchy:()=>TK,getUserRoleIdHierarchy:()=>CUe,isBuiltin:()=>Ey,lowerBuiltinRoleID:()=>_Xt,prefixRoleIDNoBuiltin:()=>vK,roleIDsAreEqual:()=>Pu,roleToNumber:()=>EXt,saveRoles:()=>TXt,validInherits:()=>wXt});var IUe=require("lodash"),XL=te(require("lodash/fp/cloneDeep")),bK=te(C7());var EK={ADMIN:"ADMIN",POWER:"POWER",BASIC:"BASIC",PUBLIC:"PUBLIC"},Fn={...EK,BUILDER:"BUILDER"},_K={UUID:void 0,NAME:"name"};function vXt(e,t){return Array.isArray(t)?t.filter(r=>e.includes(r)).length===t.length:e.includes(t)}a(vXt,"rolesInList");var kh=class{constructor(t,r,n,i){this.permissions={};this._id=t,this.name=r,this.uiMetadata=i,this.permissionId=n,this.version=_K.NAME}static{a(this,"Role")}addInheritance(t){return t&&typeof t=="string"?t=vK(t):t&&Array.isArray(t)&&(t=t.map(vK)),this.inherits=t,this}},JL=class{static{a(this,"RoleHierarchyTraversal")}constructor(t,r){this.allRoles=t,this.opts=r}walk(t){let r=this.opts,n=this.allRoles,i=[];if(!t||!t._id)return i;if(i.push(t),Array.isArray(t.inherits))for(let o of t.inherits){let s=BA(o,n,r);s&&(i=i.concat(this.walk(s)))}else{let o=[],s=t;for(;s&&s.inherits&&!vXt(o,s.inherits);){if(Array.isArray(s.inherits))return i.concat(this.walk(s));if(o.push(s.inherits),s=BA(s.inherits,n,r),s&&i.push(s),Ye.roles.checkForRoleInheritanceLoops(i))break}}return(0,IUe.uniqBy)(i,o=>o._id)}},SK={ADMIN:new kh(Fn.ADMIN,Fn.ADMIN,"admin",{displayName:"App admin",description:"Can do everything",color:"var(--spectrum-global-color-static-red-400)"}).addInheritance(Fn.POWER),POWER:new kh(Fn.POWER,Fn.POWER,"power",{displayName:"App power user",description:"An app user with more access",color:"var(--spectrum-global-color-static-orange-400)"}).addInheritance(Fn.BASIC),BASIC:new kh(Fn.BASIC,Fn.BASIC,"write",{displayName:"App user",description:"Any logged in user",color:"var(--spectrum-global-color-static-green-400)"}).addInheritance(Fn.PUBLIC),PUBLIC:new kh(Fn.PUBLIC,Fn.PUBLIC,"public",{displayName:"Public user",description:"Accessible to anyone",color:"var(--spectrum-global-color-static-blue-400)"}),BUILDER:new kh(Fn.BUILDER,Fn.BUILDER,"admin",{displayName:"Builder user",description:"Users that can edit this app",color:"var(--spectrum-global-color-static-magenta-600)"})};function xK(){return(0,XL.default)(SK)}a(xK,"getBuiltinRoles");function Ey(e){return Object.values(EK).includes(e)}a(Ey,"isBuiltin");function vK(e){return Ey(e)?e:Qf(e)}a(vK,"prefixRoleIDNoBuiltin");function kUe(e){let t=Object.values(SK).find(r=>e.includes(r._id));if(t)return(0,XL.default)(t)}a(kUe,"getBuiltinRole");function wXt(e,t){if(!t)return!1;let r=a(n=>e.find(i=>Pu(i._id,n)),"find");if(Array.isArray(t)){let n=t.filter(i=>r(i));return t.length!==0&&n.length===t.length}else return!!r(t)}a(wXt,"validInherits");function MA(e){let t=xK(),r=Object.values(t).length+1;if(Pu(e,Fn.ADMIN)||Pu(e,Fn.BUILDER))return r;let n=t[e],i=0;do{if(!n)break;if(Array.isArray(n.inherits))throw new Error("Built-in roles don't support multi-inheritance");n=t[n.inherits],i++}while(n!==null);return i}a(MA,"builtinRoleToNumber");async function EXt(e){if(Ey(e))return MA(e);let t=await TK(e,{defaultPublic:!0}),r=a(n=>{if(!n.inherits)return 0;if(Array.isArray(n.inherits)){let i=n.inherits.map(o=>{let s=t.find(u=>Pu(u._id,o));if(s)return r(s)+1}).filter(o=>o).sort().pop();if(i!=null)return i}else if(Ey(n.inherits))return MA(n.inherits)+1;return 0},"findNumber");return Math.max(...t.map(r))}a(EXt,"roleToNumber");function _Xt(e,t){return e?t&&MA(e)>MA(t)?t:e:t}a(_Xt,"lowerBuiltinRoleID");function Pu(e,t){return Qf(e)===Qf(t)}a(Pu,"roleIDsAreEqual");function SXt(e){let t;return e._id&&(t=Ch(e._id)),{...e,_id:t,inherits:NUe(e.inherits,e.version)}}a(SXt,"externalRole");function BA(e,t,r){let n=kUe(e);n||(e=Qf(e));let i=t.find(o=>o._id&&Pu(o._id,e));return!i&&!Ey(e)&&r?.defaultPublic?(0,XL.default)(SK.PUBLIC):(n=Object.assign(n||{},i),n?._id&&(n._id=Ch(n._id,n.version)),Object.keys(n).length===0?void 0:n)}a(BA,"findRole");async function xXt(e,t){let r=Vv(),n=[];if(!Ey(e)){let i=await r.tryGet(PUe(e));i&&n.push(i)}return BA(e,n,t)}a(xXt,"getRole");async function TXt(e){await Vv().bulkDocs(e.filter(r=>r._id).map(r=>({...r,_id:Qf(r._id)})))}a(TXt,"saveRoles");async function AXt(e,t){let r=await AK();if(Pu(e,Fn.ADMIN))return r;let n=BA(e,r,t),i=[];return n&&(i=new JL(r,t).walk(n)),i}a(AXt,"getAllUserRoles");async function CUe(e){return(await TK(e)).map(r=>r._id)}a(CUe,"getUserRoleIdHierarchy");async function TK(e,t){return AXt(e,t)}a(TK,"getUserRoleHierarchy");function DUe(e,t){if(e&&!Array.isArray(e[t])){let r=e[t];e[t]=[r],r==="write"&&e[t].push("read")}return e}a(DUe,"checkForRoleResourceArray");async function RXt(e){return(await AK(e)).map(r=>r._id)}a(RXt,"getAllRoleIds");async function AK(e){if(e)return Fs(e,t);{let r;try{r=Vv()}catch{}return t(r)}async function t(r){let n=[];r&&(n=(await r.allDocs(E1(null,{include_docs:!0}))).rows.map(u=>u.doc),n.forEach(u=>u._id=Ch(u._id,u.version)));let i=xK(),o=[];!r||await OXt(r)?o=[Fn.ADMIN,Fn.POWER,Fn.BASIC,Fn.PUBLIC]:o=[Fn.ADMIN,Fn.BASIC,Fn.PUBLIC];for(let s of o){let u=i[s],c=n.filter(l=>Pu(l._id,s))[0];c==null?n.push(u||i.BASIC):(n=n.filter(l=>l._id!==c._id),c._id=Ch(u._id,c.version),n.push({...u,...c,name:u.name,_id:Ch(u._id,u.version)}))}for(let s of n)if(s.permissions)for(let u of Object.keys(s.permissions))s.permissions=DUe(s.permissions,u);return n}a(t,"internal")}a(AK,"getAllRoles");async function OXt(e){let r=(await e.tryGet("app_metadata"))?.creationVersion;return!r||!bK.default.valid(r)?!0:!bK.default.gte(r,V.MIN_VERSION_WITHOUT_POWER_ROLE)}a(OXt,"shouldIncludePowerRole");var wK=class{static{a(this,"AccessController")}constructor(){this.userHierarchies={}}async hasAccess(t,r){if(t==null||t===""||Pu(t,Fn.BUILDER)||Pu(r,t)||Pu(r,Fn.BUILDER))return!0;let n=r?this.userHierarchies[r]:null;return!n&&r&&(n=await CUe(r),this.userHierarchies[r]=n),n?.find(i=>Pu(i,t))!==void 0}async checkScreensAccess(t,r){let n=[];for(let i of t){let o=await this.checkScreenAccess(i,r);o&&n.push(o)}return n}async checkScreenAccess(t,r){let n=t&&t.routing?t.routing.roleId:void 0;return await this.hasAccess(n,r)?t:null}};function PUe(e){return e?.startsWith("role")?e:Qf(e)}a(PUe,"getDBRoleID");function Ch(e,t){if(e.startsWith(`role${Me}`)&&(Ey(e)||t===_K.NAME)){let r=e.split(Me);return r.shift(),r.join(Me)}return e}a(Ch,"getExternalRoleID");function NUe(e,t){return e&&(typeof e=="string"?Ch(e,t):e.map(r=>Ch(r,t)))}a(NUe,"getExternalRoleIDs");var xi={};oe(xi,{BUILDER:()=>PXt,BUILTIN_PERMISSIONS:()=>ZL,CREATOR:()=>NXt,GLOBAL_BUILDER:()=>LXt,PermissionImpl:()=>Un,PermissionLevel:()=>cd,PermissionType:()=>hS,doesHaveBasePermission:()=>CXt,getAllowedLevels:()=>jUe,getBuiltinPermissionByID:()=>kXt,getBuiltinPermissions:()=>IXt,isPermissionLevelHigherThanRead:()=>DXt,levelToNumber:()=>UUe});var LUe=te(require("lodash/flatten")),FUe=te(require("lodash/fp/cloneDeep"));var Un=class{static{a(this,"PermissionImpl")}constructor(t,r){this.type=t,this.level=r}};function UUe(e){switch(e){case"execute":return 0;case"read":return 1;case"write":return 2;case"admin":return 3;default:return-1}}a(UUe,"levelToNumber");function jUe(e){switch(e){case"execute":return["execute"];case"read":return["execute","read"];case"write":case"admin":return["execute","read","write"];default:return[]}}a(jUe,"getAllowedLevels");var ZL={PUBLIC:{_id:"public",name:"Public",permissions:[new Un("webhook","execute")]},READ_ONLY:{_id:"read_only",name:"Read only",permissions:[new Un("query","read"),new Un("table","read"),new Un("app","read")]},WRITE:{_id:"write",name:"Read/Write",permissions:[new Un("query","write"),new Un("table","write"),new Un("automation","execute"),new Un("legacy_view","read"),new Un("app","read")]},POWER:{_id:"power",name:"Power",permissions:[new Un("table","write"),new Un("user","read"),new Un("automation","execute"),new Un("webhook","read"),new Un("legacy_view","read"),new Un("app","read")]},ADMIN:{_id:"admin",name:"Admin",permissions:[new Un("table","admin"),new Un("user","admin"),new Un("automation","admin"),new Un("webhook","read"),new Un("query","admin"),new Un("legacy_view","read"),new Un("app","read")]}};function IXt(){return(0,FUe.default)(ZL)}a(IXt,"getBuiltinPermissions");function kXt(e){return Object.values(ZL).find(r=>r._id===e)}a(kXt,"getBuiltinPermissionByID");function CXt(e,t,r){let n=[...new Set(r.map(s=>s.permissionId))],i=Object.values(ZL),o=(0,LUe.default)(i.filter(s=>n.indexOf(s._id)!==-1).map(s=>s.permissions));for(let s of o)if(s.type===e&&jUe(s.level).indexOf(t)!==-1)return!0;return!1}a(CXt,"doesHaveBasePermission");function DXt(e){return UUe(e)>1}a(DXt,"isPermissionLevelHigherThanRead");var PXt="builder",NXt="creator",LXt="globalBuilder";var fr={};oe(fr,{adminOnly:()=>y2,auditLog:()=>b2,authError:()=>qa,buildAuthMiddleware:()=>mmr,buildCsrfMiddleware:()=>ymr,buildTenancyMiddleware:()=>gmr,builderOnly:()=>x2,builderOrAdmin:()=>T2,google:()=>Ap,internalApi:()=>R2,joiValidator:()=>GA,oidc:()=>jp,passport:()=>bmr,platformLogout:()=>Smr,refreshOAuthToken:()=>Emr,ssoCallbackUrl:()=>Ph,updateUserOAuth:()=>_mr,workspaceBuilderOrAdmin:()=>TU});var AU={};oe(AU,{adminOnly:()=>y2,auditLog:()=>b2,authError:()=>qa,authenticated:()=>S2,builderOnly:()=>x2,builderOrAdmin:()=>T2,correlation:()=>BUe,csp:()=>nBe,csrf:()=>A2,datasource:()=>Xhr,errorHandling:()=>aBe,featureFlagCookie:()=>oBe,google:()=>Ap,internalApi:()=>R2,ip:()=>sBe,joiValidator:()=>GA,local:()=>bE,oidc:()=>jp,pino:()=>QMe,querystringToBody:()=>bGe,ssoCallbackUrl:()=>Ph,tenancy:()=>xU,workspaceBuilderOrAdmin:()=>TU});var MUe=require("uuid");var FXt=R1(),BUe=a((e,t)=>{let r=e.headers["x-budibase-correlation-id"];return r||(r=(0,MUe.v4)()),FXt.withId(r,()=>t())},"correlationMiddleware");var _rr=KMe(),Srr=R1();function xrr(){return{logger:sL,genReqId:Srr.getId,autoLogging:{ignore:e=>!!e.url?.includes("/health")},serializers:{req:e=>({method:e.method,url:e.url,correlationId:e.id}),res:e=>({status:e.statusCode})}}}a(xrr,"pinoSettings");function Trr(){return V.HTTP_LOGGING?_rr(xrr()):(e,t)=>t()}a(Trr,"getMiddleware");var QMe=Trr();var y2=a(async(e,t)=>(!e.internal&&!ql(e.user)&&e.throw(403,"Admin user only endpoint."),t()),"adminOnly");var b2=a(async(e,t)=>t(),"auditLog");var Arr=/\/:(.*?)(\/.*)?$/g,Ty=a(e=>e?e.map(t=>{let r=t.route,n=t.method,i=r.match(Arr);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"),Ay=a((e,t)=>t.find(({regex:r,method:n})=>{let i=r.test(e.request.url),o=n==="ALL"?!0:e.request.method.toLowerCase()===n.toLowerCase();return i&&o}),"matches");var qc={};oe(qc,{SecretOption:()=>XMe,decrypt:()=>xQ,decryptFile:()=>Drr,encrypt:()=>Irr,encryptFile:()=>krr,getSecret:()=>SQ});var Ep=te(require("crypto")),Dh=te(require("fs")),wQ=require("path"),EQ=te(require("zlib"));var v2="aes-256-ctr",JMe="-",Rrr=1e4,Orr=32,w2=16,_Q=16,XMe=(r=>(r.API="api",r.ENCRYPTION="encryption",r))(XMe||{});function SQ(e){let t,r;switch(e){case"encryption":t=V.ENCRYPTION_KEY,r="ENCRYPTION_KEY";break;case"api":default:t=V.API_ENCRYPTION_KEY,r="API_ENCRYPTION_KEY";break}if(!t)throw new Error(`Secret "${r}" has not been set in environment.`);return t}a(SQ,"getSecret");function E2(e,t){return Ep.default.pbkdf2Sync(e,new Uint8Array(t),Rrr,Orr,"sha512")}a(E2,"stretchString");function Irr(e,t="api"){let r=Ep.default.randomBytes(w2),n=E2(SQ(t),r),i=Ep.default.createCipheriv(v2,new Uint8Array(n),new Uint8Array(r)),o=i.update(e,"utf8"),s=i.final(),u=Buffer.concat([new Uint8Array(o),new Uint8Array(s)]).toString("hex");return`${r.toString("hex")}${JMe}${u}`}a(Irr,"encrypt");function xQ(e,t="api"){let[r,n]=e.split(JMe),i=Buffer.from(r,"hex"),o=E2(SQ(t),i),s=Ep.default.createDecipheriv(v2,new Uint8Array(o),new Uint8Array(i)),u=s.update(n,"hex"),c=s.final();return Buffer.concat([new Uint8Array(u),new Uint8Array(c)]).toString()}a(xQ,"decrypt");async function krr({dir:e,filename:t},r){let n=`${t}.enc`,i=(0,wQ.join)(e,t);if(Dh.default.lstatSync(i).isDirectory())throw new Error("Unable to encrypt directory");let o=Dh.default.createReadStream(i),s=Dh.default.createWriteStream((0,wQ.join)(e,n)),u=Ep.default.randomBytes(w2),c=Ep.default.randomBytes(_Q),l=E2(r,u),f=Ep.default.createCipheriv(v2,new Uint8Array(l),new Uint8Array(c));return s.write(u),s.write(c),o.pipe(EQ.default.createGzip()).pipe(f).pipe(s),new Promise(p=>{s.on("finish",()=>{p({filename:n,dir:e})})})}a(krr,"encryptFile");async function Crr(e){let t=Dh.default.createReadStream(e),r=await YMe(t,w2),n=await YMe(t,_Q);return t.close(),{salt:r,iv:n}}a(Crr,"getSaltAndIV");async function Drr(e,t,r){if(Dh.default.lstatSync(e).isDirectory())throw new Error("Unable to decrypt directory");let{salt:n,iv:i}=await Crr(e),o=Dh.default.createReadStream(e,{start:w2+_Q}),s=Dh.default.createWriteStream(t),u=E2(r,n),c=Ep.default.createDecipheriv(v2,new Uint8Array(u),new Uint8Array(i)),l=EQ.default.createGunzip();return o.pipe(c).pipe(l).pipe(s),new Promise((f,p)=>{s.on("finish",()=>{s.close(),f()}),o.on("error",d=>{s.close(),p(d)}),c.on("error",d=>{s.close(),p(d)}),l.on("error",d=>{s.close(),p(d)}),s.on("error",d=>{s.close(),p(d)})})}a(Drr,"decryptFile");function YMe(e,t){return new Promise((r,n)=>{let i=0,o=[];e.on("readable",()=>{let s;for(;(s=e.read(t-i))!==null;)o.push(s),i+=s.length;r(Buffer.concat(o.map(u=>new Uint8Array(u))))}),e.on("end",()=>{n(new Error("Insufficient data in the stream."))}),e.on("error",s=>{n(s)})})}a(YMe,"readBytes");var eBe=te(require("dd-trace"));var Nrr=V.SESSION_UPDATE_PERIOD?parseInt(V.SESSION_UPDATE_PERIOD):60*1e3;function Lrr(){return new Date(Date.now()-Nrr).toISOString()}a(Lrr,"timeMinusOneMinute");function ZMe(e,t={}){e.publicEndpoint=t.publicEndpoint||!1,e.isAuthenticated=t.authenticated||!1,e.loginMethod=t.loginMethod,e.user=t.user,e.internal=t.internal||!1,e.version=t.version}a(ZMe,"finalise");async function Frr(e,t){if(Px(e))return{valid:!0,user:void 0};let n=xQ(e).split(Me)[0];return Xo(n,async()=>{let i;try{let o=Ar();i=await Jf("by_api_key",{key:e},o)}catch{i=void 0}if(i)return{valid:!0,user:await PA({userId:i,tenantId:n,populateUser:t})};throw new dL})}a(Frr,"checkApiKey");function _2(e,t){let r=e.request.headers[t];if(Array.isArray(r))throw new Error("Unexpected header format");return r}a(_2,"getHeader");function S2(e=[],t={publicAllowed:!1}){let r=e?Ty(e):[];return async(n,i)=>{let o=!1,s=_2(n,"x-budibase-api-version");Ay(n,r)&&(o=!0);try{let c=_2(n,"x-budibase-token"),l=Zf(n,"budibase:auth")||S1(c),f=_2(n,"x-budibase-api-key");!f&&n.request.headers.authorization&&(f=n.request.headers.authorization.split(" ")[1]);let p=_2(n,"x-budibase-tenant-id"),d=!1,h,m=!1,g;if(l&&!f){let b=l.sessionId,v=l.userId,w;try{w=await cNe(v,b),t&&t.populateUser?h=await PA({userId:v,tenantId:w.tenantId,email:w.email,populateUser:t.populateUser(n)}):h=await PA({userId:v,tenantId:w.tenantId,email:w.email}),h.csrfToken=w.csrfToken,g="cookie",w?.lastAccessedAt<Lrr()&&await uNe(w),d=!0}catch(x){d=!1,console.error(`Auth Error: ${x.message}`),Hd(n,"budibase:auth")}}if(!d&&f){let b=t.populateUser?t.populateUser(n):null,{valid:v,user:w}=await Frr(f,b);v&&(d=!0,g="api_key",h=w,m=!w)}!h&&p?h={tenantId:p}:h&&"password"in h&&delete h.password,d||(d=!1);let y=a(b=>b&&b.email,"isUser");return y(h)&&eBe.default.setUser({id:h._id,tenantId:h.tenantId,budibaseAccess:h.budibaseAccess,status:h.status}),ZMe(n,{authenticated:d,user:h,internal:m,version:s,publicEndpoint:o,loginMethod:g}),y(h)?F4(h,n,i):i()}catch(c){if(console.error(`Auth Error: ${c.message}`),c?.name==="JsonWebTokenError"?Hd(n,"budibase:auth"):c?.code==="invalid_api_key"&&n.throw(403,c.message),t&&t.publicAllowed||o)return ZMe(n,{authenticated:!1,version:s,publicEndpoint:o}),i();n.throw(c.status||403,c)}}}a(S2,"authenticated");async function x2(e,t){if(e.internal)return t();let r=await bg(e);return!r&&!V.isWorker()?e.throw(403,"This request required a workspace id."):!r&&!ss(e.user)?e.throw(403,"Builder user only endpoint."):r&&!sE(e.user,r)&&e.throw(403,"Workspace builder user only endpoint."),t()}a(x2,"builderOnly");async function T2(e,t){if(e.internal||ql(e.user))return t();let r=await bg(e);return!r&&!V.isWorker()?e.throw(403,"This request required a workspace id."):!r&&!ss(e.user)?e.throw(403,"Admin/Builder user only endpoint."):r&&!sE(e.user,r)&&e.throw(403,"Workspace Admin/Builder user only endpoint."),t()}a(T2,"builderOrAdmin");var rBe=te(require("crypto"));var tBe={"default-src":["'self'"],"script-src":["'self'","'unsafe-eval'","https://*.budibase.net","https://cdn.budi.live","https://js.intercomcdn.com","https://widget.intercom.io","https://d2l5prqdbvm3op.cloudfront.net","https://us-assets.i.posthog.com","https://www.google.com/recaptcha/api.js"],"style-src":["'self'","'unsafe-inline'","https://cdn.jsdelivr.net","https://fonts.googleapis.com","https://rsms.me","https://maxcdn.bootstrapcdn.com"],"object-src":["'none'"],"base-uri":["'self'"],"connect-src":["'self'","https://*.budibase.app","https://*.budibaseqa.app","https://*.budibase.net","https://api-iam.intercom.io","https://api-ping.intercom.io","https://app.posthog.com","https://us.i.posthog.com","wss://nexus-websocket-a.intercom.io","wss://nexus-websocket-b.intercom.io","https://nexus-websocket-a.intercom.io","https://nexus-websocket-b.intercom.io","https://uploads.intercomcdn.com","https://uploads.intercomusercontent.com","https://*.amazonaws.com","https://*.s3.amazonaws.com","https://*.s3.us-east-2.amazonaws.com","https://*.s3.us-east-1.amazonaws.com","https://*.s3.us-west-1.amazonaws.com","https://*.s3.us-west-2.amazonaws.com","https://*.s3.af-south-1.amazonaws.com","https://*.s3.ap-east-1.amazonaws.com","https://*.s3.ap-south-1.amazonaws.com","https://*.s3.ap-northeast-2.amazonaws.com","https://*.s3.ap-southeast-1.amazonaws.com","https://*.s3.ap-southeast-2.amazonaws.com","https://*.s3.ap-northeast-1.amazonaws.com","https://*.s3.ca-central-1.amazonaws.com","https://*.s3.cn-north-1.amazonaws.com","https://*.s3.cn-northwest-1.amazonaws.com","https://*.s3.eu-central-1.amazonaws.com","https://*.s3.eu-west-1.amazonaws.com","https://*.s3.eu-west-2.amazonaws.com","https://*.s3.eu-south-1.amazonaws.com","https://*.s3.eu-west-3.amazonaws.com","https://*.s3.eu-north-1.amazonaws.com","https://*.s3.sa-east-1.amazonaws.com","https://*.s3.me-south-1.amazonaws.com","https://*.s3.us-gov-east-1.amazonaws.com","https://*.s3.us-gov-west-1.amazonaws.com","https://api.github.com"],"font-src":["'self'","data:","https://cdn.jsdelivr.net","https://fonts.gstatic.com","https://rsms.me","https://maxcdn.bootstrapcdn.com","https://js.intercomcdn.com","https://fonts.intercomcdn.com"],"frame-src":["'self'","https:"],"img-src":["http:","https:","data:","blob:"],"manifest-src":["'self'"],"media-src":["'self'","https://js.intercomcdn.com","https://cdn.budi.live"],"worker-src":["blob:","'self'"]},Urr=/^[A-Za-z0-9-*:/.]+$/,nBe=a(async(e,t)=>{let r=rBe.default.randomBytes(16).toString("base64");e.state.nonce=r;let n={...tBe};if(n["script-src"]=[...tBe["script-src"],`'nonce-${r}'`],e.user?.license?.features.includes("customAppScripts")&&e.appId)try{let s=await Tx.getWorkspaceMetadata(e.appId);if("name"in s)for(let u of s.scripts||[]){let c=(u.cspWhitelist||"").split(`
536
+ `).filter(l=>Urr.test(l));n["default-src"]=[...n["default-src"],...c]}}catch(s){console.error(`Error occurred in Content-Security-Policy middleware: ${s}`)}let o=Object.entries(n).map(([s,u])=>`${s} ${u.join(" ")}`).join("; ");e.set("Content-Security-Policy",o),await t()},"contentSecurityPolicy");var jrr=["GET","HEAD","OPTIONS"],Mrr=["application/x-www-form-urlencoded","multipart/form-data","text/plain"];function A2(e={noCsrfPatterns:[]}){let t=Ty(e.noCsrfPatterns);return async(r,n)=>{if(Ay(r,t)||jrr.indexOf(r.method)!==-1)return n();let o=r.get("content-type")?r.get("content-type").toLowerCase():"";if(!Mrr.filter(c=>o.includes(c)).length||r.internal)return n();let s=r.user?.csrfToken;if(!s)return n();let u=r.get("x-csrf-token");return(!u||u!==s)&&r.throw(403,"Invalid CSRF token"),n()}}a(A2,"csrf");function iBe(e){if(e.includes("-----BEGIN PRIVATE KEY-----"))return!0;for(let t of Sfe){let r=V[t];if(!(typeof r!="string"||r==="")&&e.includes(r))return!0}return!1}a(iBe,"stringContainsSecret");async function aBe(e,t){try{await t()}catch(r){let n=r.status||r.statusCode||500;e.status=n,n>=400&&n<500?console.warn(r):console.error("Got 400 response code",r);let i={message:r.message,status:n,validationErrors:r.validation,error:nNe(r)};if(iBe(JSON.stringify(i))&&(i={message:"Unexpected error",status:n,error:"Unexpected error"}),V.isTest()&&e.headers["x-budibase-include-stacktrace"]){let o=r;for(;o.cause;)o=o.cause;i.stack=o.stack}e.body=i}}a(aBe,"errorHandling");var oBe=a(async(e,t)=>{let n=Zf(e,"budibase:featureflags")?.flags||{};await B$(n,async()=>{await t()})},"featureFlagCookie");async function R2(e,t){let r=e.request.headers["x-budibase-api-key"];return r||e.throw(403,"Unauthorized"),Array.isArray(r)&&e.throw(403,"Unauthorized"),Px(r)||e.throw(403,"Unauthorized"),t()}a(R2,"internalApi");async function sBe(e,t){return e.ip?await F$(e.ip,()=>t()):t()}a(sBe,"ip");var GA={};oe(GA,{body:()=>Brr,params:()=>qrr});var TQ=te(require("joi"));function uBe(e,t,r){let n=r?.errorPrefix??`Invalid ${t}`;return(i,o)=>{if(!e)return o();let s=null,u=i.request?.[t];i[t]!=null?s=i[t]:u!=null&&(s=u),e.append&&(e=e.append({createdAt:TQ.default.any().optional(),updatedAt:TQ.default.any().optional()}));let{error:c}=e.validate(s,{allowUnknown:r?.allowUnknown});if(c){let l=c.message;n&&(l=`Invalid ${t} - ${l}`),i.throw(400,l)}return o()}}a(uBe,"validate");function Brr(e,t){return uBe(e,"body",t)}a(Brr,"body");function qrr(e,t){return uBe(e,"params",t)}a(qrr,"params");var bE={};oe(bE,{authenticate:()=>Wrr,options:()=>zrr});function qa(e,t,r){return e(r,null,{message:t})}a(qa,"authError");async function Ph(e,t){if(t&&t.callbackURL)return t.callbackURL;let r=await mK(),n="/api/global/auth";return Wd()&&(n+=`/${Pt()}`),n+=`/${e}/callback`,`${r.platformUrl}${n}`}a(Ph,"ssoCallbackUrl");var AQ="Invalid credentials",$rr="This account has expired. Please reset your password",zrr={passReqToCallback:!0};async function Wrr(e,t,r,n){if(!t)return qa(n,"Email Required");if(!r)return qa(n,"Password Required");let i=await jc(t);return i==null?(console.info(`user=${t} could not be found`),qa(n,AQ)):i.status==="inactive"?(console.info(`user=${t} is inactive`,i),qa(n,AQ)):i.password?await P4(r,i.password)?(delete i.password,n(null,i)):qa(n,AQ):(console.info(`user=${t} has no password set`,i),qa(n,$rr))}a(Wrr,"authenticate");var Ap={};oe(Ap,{buildVerifyFn:()=>qqe,getCallbackUrl:()=>iir,strategyFactory:()=>lY});var HA=a(e=>Promise.resolve(e),"ssoSaveUserNoOp");async function O2(e,t=!0,r,n){if(!n)throw new Error("Save user function must be provided");if(!e.userId)return qa(r,"sso user id required");if(!e.email)return qa(r,"sso user email required");let i=Qv(e.userId),o;try{o=await yy(i)}catch(u){if(!u.status||u.status!==404)return qa(r,"Unexpected error when retrieving existing user",u)}if(o||(o=await jc(e.email)),!o&&t)return qa(r,"Email does not yet exist. You must set up your local budibase account first.");o||(o={_id:i,email:e.email,roles:{},tenantId:Pt()});let s=await Grr(o,e);s.forceResetPassword=!1;try{delete s.password,s=await n(s,{hashPassword:!1,requirePassword:!1})}catch(u){return qa(r,"Error saving user",u)}return r(null,s)}a(O2,"authenticate");async function Grr(e,t){let r,n,i;if(t.profile){let o=t.profile;if(o.name){let s=o.name;s.givenName&&(r=s.givenName),s.familyName&&(n=s.familyName)}}return t.oauth2&&(i={...t.oauth2}),{...e,provider:t.provider,providerType:t.providerType,firstName:r,lastName:n,oauth2:i}}a(Grr,"syncUser");var nir=uY().OAuth2Strategy;function qqe(e){return(t,r,n,i)=>{let o={provider:"google",providerType:"google",userId:n.id,profile:n,email:n._json.email,oauth2:{accessToken:t,refreshToken:r}};return O2(o,!0,i,e)}}a(qqe,"buildVerifyFn");async function lY(e,t,r){try{let{clientID:n,clientSecret:i}=e;if(!n||!i)throw new Error("Configuration invalid. Must contain google clientID and clientSecret");let o=qqe(r);return new nir({clientID:e.clientID,clientSecret:e.clientSecret,callbackURL:t},o)}catch(n){throw new Error(`Error constructing google authentication strategy: ${n}`)}}a(lY,"strategyFactory");async function iir(e){return Ph("google",e)}a(iir,"getCallbackUrl");var jp={};oe(jp,{buildVerifyFn:()=>yGe,fetchStrategyConfig:()=>Vhr,getCallbackUrl:()=>Khr,strategyFactory:()=>Hhr});var gGe=te(require("node-fetch"));var Whr=mGe().Strategy;function yGe(e){return async(t,r,n,i,o,s,u,c,l)=>{let f={provider:t,providerType:"oidc",userId:n.id,profile:n,email:Ghr(n,i),oauth2:{accessToken:o,refreshToken:s}};return O2(f,!1,l,e)}}a(yGe,"buildVerifyFn");function Ghr(e,t){if(e._json.email)return e._json.email;if(t.email)return t.email;let r=t.preferred_username;if(r&&sz(r))return r;throw new Error(`Could not determine user email from profile ${JSON.stringify(e)} and claims ${JSON.stringify(t)}`)}a(Ghr,"getEmail");async function Hhr(e,t){try{let r=yGe(t),n=new Whr(e,r);return n.name="oidc",n}catch(r){throw new Error(`Error constructing OIDC authentication strategy - ${r}`)}}a(Hhr,"strategyFactory");async function Vhr(e,t){try{let{clientID:r,clientSecret:n,configUrl:i,pkce:o}=e;if(!r||!n||!t||!i)throw new Error("Configuration invalid. Must contain clientID, clientSecret, callbackUrl and configUrl");let s=await(0,gGe.default)(i);if(!s.ok)throw new Error(`Unexpected response when fetching openid-configuration: ${s.statusText}`);let u=await s.json();return{issuer:u.issuer,authorizationURL:u.authorization_endpoint,tokenURL:u.token_endpoint,userInfoURL:u.userinfo_endpoint,clientID:r,clientSecret:n,callbackURL:t,pkce:o}}catch(r){throw new Error(`Error constructing OIDC authentication configuration - ${r}`)}}a(Vhr,"fetchStrategyConfig");async function Khr(){return Ph("oidc")}a(Khr,"getCallbackUrl");function bGe(e,t){let r=e.request.query?.query;if(e.request.method.toLowerCase()!=="get"&&e.throw(500,"Query to download middleware can only be used for get requests."),!r)return t();let n=decodeURIComponent(r),i;try{i=JSON.parse(n)}catch{return t()}return e.request.body=i,t()}a(bGe,"querystringToBody");function xU(e,t,r={noTenancyRequired:!1}){let n=Ty(e),i=Ty(t);return async function(o,s){let c={allowNoTenant:r.noTenancyRequired||!!Ay(o,i)};!!Ay(o,n)||(c.excludeStrategies=["query"]);let f=Cx(o,c);return o.set("x-budibase-tenant-id",f),Xo(f,s)}}a(xU,"tenancy");async function TU(e,t){if(e.internal||ql(e.user))return t();let r=await bg(e);return r&&!NL(e.user,r)?e.throw(403,"Workspace Admin/Builder user only endpoint."):!r&&!V.isWorker()?e.throw(403,"This request required a workspace id."):!r&&!ss(e.user)&&e.throw(403,"Admin/Builder user only endpoint."),t()}a(TU,"workspaceBuilderOrAdmin");var YX={};oe(YX,{postAuth:()=>Jhr,preAuth:()=>Yhr});var Qhr=uY().OAuth2Strategy;async function vGe(){let e=await gK();if(!e)throw new Error("No google configuration found");return e}a(vGe,"fetchGoogleCreds");async function Yhr(e,t,r){let n=await vGe(),o=`${await jA({tenantAware:!1})}/api/global/auth/datasource/google/callback`,s=await lY(n,o,HA);return t.query.appId||t.throw(400,"appId query param not present."),e.authenticate(s,{scope:["profile","email","https://www.googleapis.com/auth/spreadsheets"],accessType:"offline",prompt:"consent"})(t,r)}a(Yhr,"preAuth");async function Jhr(e,t,r){let n=await vGe(),o=`${await jA({tenantAware:!1})}/api/global/auth/datasource/google/callback`,s=Zf(t,"budibase:datasourceauth");if(!s)throw new Error("Unable to fetch datasource auth cookie");return e.authenticate(new Qhr({clientID:n.clientID,clientSecret:n.clientSecret,callbackURL:o},(u,c,l,f)=>{Hd(t,"budibase:datasourceauth"),f(null,{accessToken:u,refreshToken:c})}),{successRedirect:"/",failureRedirect:"/error"},async(u,c)=>{let l=`/builder/workspace/${s.appId}/data`,f=kn();await mp(`datasource:creation:${s.appId}:google:${f}`,{tokens:c}),t.redirect(`${l}/new?continue_google_setup=${f}`)})(t,r)}a(Jhr,"postAuth");var Xhr={google:YX};var uHe=XGe(),hmr=oHe().Strategy,PU=sHe(),mmr=S2,gmr=xU,ymr=A2,bmr=uHe;uHe.use(new hmr(bE.options,bE.authenticate));async function vmr(e,t){let r=await jp.getCallbackUrl(),n,i;try{if(n=await jp.fetchStrategyConfig(e,r),!n)throw new Error("OIDC Config contents invalid");i=await jp.strategyFactory(n,HA)}catch{throw new Error("Could not refresh OAuth Token")}return PU.use(i,{setRefreshOAuth2(){return i._getOAuth2Client(n)}}),new Promise(o=>{PU.requestNewAccessToken("oidc",t,(s,u,c,l)=>{o({err:s,accessToken:u,refreshToken:c,params:l})})})}a(vmr,"refreshOIDCAccessToken");async function wmr(e,t){let r=await Ap.getCallbackUrl(e),n;try{n=await Ap.strategyFactory(e,r,HA)}catch(i){throw new Error(`Error constructing OIDC refresh strategy: message=${i.message}`)}return PU.use(n),new Promise(i=>{PU.requestNewAccessToken("google",t,(o,s,u,c)=>{i({err:o,accessToken:s,refreshToken:u,params:c})})})}a(wmr,"refreshGoogleAccessToken");async function Emr(e,t,r){switch(t){case"oidc":{if(!r)return{err:{data:"OIDC config id not provided"}};let n=await yK(r);return n?vmr(n,e):{err:{data:"OIDC configuration not found"}}}case"google":{let n=await YL();return n?wmr(n,e):{err:{data:"Google configuration not found"}}}}}a(Emr,"refreshOAuthToken");async function _mr(e,t){let r={accessToken:t.accessToken,refreshToken:t.refreshToken};try{let n=Ar(),i=await n.get(e);typeof r.refreshToken!="string"&&delete r.refreshToken,i.oauth2={...i.oauth2,...r},await n.put(i),await NA(e)}catch(n){console.error("Could not update OAuth details for current user",n)}}a(_mr,"updateUserOAuth");async function Smr(e){let t=e.ctx,r=e.userId,n=e.keepActiveSession;if(!t)throw new Error("Koa context must be supplied to logout.");let i=Zf(t,"budibase:auth"),o=await l7(r);i&&n?o=o.filter(u=>u.sessionId!==i.sessionId):Hd(t,"budibase:auth");let s=o.map(({sessionId:u})=>u);await lA(r,{sessionIds:s,reason:"logout"}),await DL.logout(t.user?.email),await NA(r)}a(Smr,"platformLogout");var LU={};oe(LU,{validate:()=>Omr});var nt=te(require("joi"));var xmr=["Relational","Non-relational","Spreadsheet","Object store","Graph","API"];function cZ(e,t){let{error:r}=e.validate(t);if(r)throw r}a(cZ,"runJoi");function Tmr(e){let t=nt.default.object({type:nt.default.string().allow("component").required(),metadata:nt.default.object().unknown(!0).required(),hash:nt.default.string().optional(),version:nt.default.string().optional(),schema:nt.default.object({name:nt.default.string().required(),settings:nt.default.array().items(nt.default.object().unknown(!0)).required()}).unknown(!0)});cZ(t,e)}a(Tmr,"validateComponent");function Amr(e){let t=nt.default.object({type:nt.default.string().allow(...Object.values(Pi)).required(),required:nt.default.boolean().required(),default:nt.default.any(),display:nt.default.string()}),r=nt.default.object({type:nt.default.string().allow(...Object.values(Ki)),readable:nt.default.boolean(),displayName:nt.default.string(),fields:nt.default.object().pattern(nt.default.string(),t)}).required(),n=nt.default.object({type:nt.default.string().allow("datasource").required(),metadata:nt.default.object().unknown(!0).required(),hash:nt.default.string().optional(),version:nt.default.string().optional(),schema:nt.default.object({docs:nt.default.string(),plus:nt.default.boolean().optional(),isSQL:nt.default.boolean().optional(),auth:nt.default.object({type:nt.default.string().required()}).optional(),features:nt.default.object(Object.fromEntries(Object.values(ma).map(i=>[i,nt.default.boolean().optional()]))).optional(),relationships:nt.default.boolean().optional(),description:nt.default.string().required(),friendlyName:nt.default.string().required(),type:nt.default.string().allow(...xmr),datasource:nt.default.object().pattern(nt.default.string(),t).required(),query:nt.default.object().pattern(nt.default.string(),r).unknown(!0).required(),extra:nt.default.object().pattern(nt.default.string(),nt.default.object({type:nt.default.string().required(),displayName:nt.default.string().required(),required:nt.default.boolean(),data:nt.default.object()}))})});cZ(n,e)}a(Amr,"validateDatasource");function Rmr(e){let t=nt.default.object().pattern(nt.default.string(),{type:nt.default.string().allow(...Object.values(Zt)).required(),customType:nt.default.string().allow(...Object.values(yn)),title:nt.default.string(),description:nt.default.string(),enum:nt.default.array().items(nt.default.string()),pretty:nt.default.array().items(nt.default.string())}),r=nt.default.object({properties:t,required:nt.default.array().items(nt.default.string())}).concat(t).required(),n=nt.default.object({type:nt.default.string().allow("automation").required(),metadata:nt.default.object().unknown(!0).required(),hash:nt.default.string().optional(),version:nt.default.string().optional(),schema:nt.default.object({name:nt.default.string().required(),tagline:nt.default.string().required(),icon:nt.default.string().required(),description:nt.default.string().required(),type:nt.default.string().allow("ACTION","LOGIC").required(),stepId:nt.default.string().disallow(...cse).required(),inputs:nt.default.object().optional(),schema:nt.default.object({inputs:r,outputs:r}).required()})});cZ(n,e)}a(Rmr,"validateAutomation");function Omr(e){switch(e?.type){case"component":Tmr(e);break;case"datasource":Amr(e);break;case"automation":Rmr(e);break;default:throw new Error(`Unknown plugin type - check schema.json: ${e.type}`)}}a(Omr,"validate");var Mp={};oe(Mp,{Client:()=>to,clients:()=>Gd,locks:()=>Mc,utils:()=>uC});var jU={};oe(jU,{isBlacklisted:()=>kmr,refreshBlacklist:()=>pHe});var cHe=te(require("dns")),UU=te(require("net"));var lHe=require("util");var FU,Imr=(0,lHe.promisify)(cHe.default.lookup);async function fHe(e){return UU.default.isIP(e)||(e.startsWith("http")||(e=`https://${e}`),e=new URL(e).hostname),(await Imr(e,{all:!0})).map(r=>r.address)}a(fHe,"lookup");async function pHe(){let t=V.BLACKLIST_IPS?.split(",")||[],r=[];for(let n of t){let i=n.trim();if(UU.default.isIP(i))r.push(i);else{let o=await fHe(i);r=r.concat(o)}}FU=r}a(pHe,"refreshBlacklist");async function kmr(e){if(FU||await pHe(),FU?.length===0)return!1;let t;return UU.default.isIP(e)?t=[e]:t=await fHe(e),!!FU?.find(r=>t.includes(r))}a(kmr,"isBlacklisted");var Ibn={"user:created":e=>e.userId,"user:updated":e=>e.userId,"user:deleted":e=>e.userId,"user:admin:assigned":e=>e.userId,"user:admin:removed":e=>e.userId,"user:builder:assigned":e=>e.userId,"user:builder:removed":e=>e.userId,"user_group:created":e=>e.groupId,"user_group:updated":e=>e.groupId,"user_group:deleted":e=>e.groupId,"user_group:user_added":e=>e.groupId,"user_group:users_deleted":e=>e.groupId,"user_group:permissions_edited":e=>e.groupId,"automation:deleted":e=>e.automationId,"datasource:deleted":e=>e.datasourceId,"table:deleted":e=>e.tableId,"query:deleted":e=>e.queryId,"workspace_app:deleted":e=>e.workspaceAppId,"view:deleted":e=>e.id};var Vt={};oe(Vt,{COUNT_FIELD_NAME:()=>gZ,Sql:()=>SHe,SqlTable:()=>MU,designDoc:()=>yZ,utils:()=>I$});var bHe=require("knex");var Cmr=require("knex");function lZ(e){return["link","formula","ai"].indexOf(e)!==-1}a(lZ,"isIgnoredType");function hHe(e,t,r,n,i){let o=t&&t.primary?t.primary:[],s=Object.values(t.schema),u=s.filter(d=>d.meta),c=u.length===s.length,l=[];n||(c?e.primary(u.map(d=>d.name)):o.length===1?(e.increments(o[0]).primary(),l.push(o[0])):e.primary(o));let f=Object.values(t.schema).map(d=>d.foreignKey);for(let[d,h]of Object.entries(t.schema)){let m=n?.schema[d];if(m&&m.type||l.includes(d)||i?.updated===d)continue;let g=h.type;switch(g){case"string":case"options":case"longform":case"barcodeqr":case"bb_reference_single":o.includes(d)?e.string(d,255):e.text(d);break;case"number":if(h.meta&&h.meta.toKey&&h.meta.toTable){let{toKey:y,toTable:b}=h.meta;e.integer(d).unsigned(),e.foreign(d).references(`${b}.${y}`)}else f.indexOf(d)===-1&&e.float(d);break;case"bigint":e.bigint(d);break;case"boolean":e.boolean(d);break;case"datetime":h.timeOnly?e.time(d):e.datetime(d,{useTz:!h.ignoreTimezones});break;case"array":case"bb_reference":Ye.schema.isDeprecatedSingleUserColumn(h)?e.text(d):e.json(d);break;case"link":if(h.relationshipType!=="many-to-one"&&h.relationshipType!=="many-to-many"){if(!h.foreignKey||!h.tableId)throw new Error("Invalid relationship schema");let{tableName:y}=x$(h.tableId),b=r[y];if(!b||!b.primary)throw new Error("Referenced table doesn't exist or has no primary keys");let v=b.primary[0],w=b.schema[v].externalType;w?e.specificType(h.foreignKey,w):e.integer(h.foreignKey).unsigned(),e.foreign(h.foreignKey).references(`${y}.${v}`)}break;case"signature_single":case"attachment":case"attachment_single":e.json(d);break;case"formula":break;case"ai":break;case"auto":case"json":case"internal":throw new Error(`${h.type} is not a valid SQL type`);default:$t.unreachable(g)}}let p=i?n?.schema[i.old].type:void 0;return i&&p&&!lZ(p)&&e.renameColumn(i.old,i.updated),n&&Object.entries(n.schema).filter(([h,m])=>!lZ(m.type)&&t.schema[h]==null).forEach(([h,m])=>{i?.old===h||lZ(m.type)||(n.constrained&&n.constrained.indexOf(h)!==-1&&e.dropForeign(h),e.dropColumn(h))}),e}a(hHe,"generateSchema");function Dmr(e,t,r){return e.createTable(t.name,n=>{hHe(n,t,r)})}a(Dmr,"buildCreateTable");function Pmr(e,t,r,n,i){return e.alterTable(t.name,o=>{hHe(o,t,r,n,i)})}a(Pmr,"buildUpdateTable");function Nmr(e,t){return e.dropTable(t.name)}a(Nmr,"buildDeleteTable");var fZ=class{static{a(this,"SqlTableQueryBuilder")}constructor(t){this.sqlClient=t}getBaseSqlClient(){return this.sqlClient}getSqlClient(){return this.extendedSqlClient||this.sqlClient}setExtendedSqlClient(t){this.extendedSqlClient=t}_operation(t){return t.operation}_tableQuery(t){let r=(0,Cmr.knex)({client:this.sqlClient}).schema;t?.schema&&(r=r.withSchema(t.schema));let n;if(!t.table||!t.tables)throw new Error("Cannot execute without table being specified");if(t.table.sourceType==="internal")throw new Error("Cannot perform table actions for SQS.");switch(this._operation(t)){case"CREATE_TABLE":n=Dmr(r,t.table,t.tables);break;case"UPDATE_TABLE":if(!t.table)throw new Error("Must specify old table for update");if(this.sqlClient==="mysql2"&&t.meta?.renamed){let i=t.meta.renamed.updated;return{sql:`alter table ${t?.schema?`\`${t.schema}\`.\`${t.table.name}\``:`\`${t.table.name}\``} rename column \`${t.meta.renamed.old}\` to \`${i}\`;`,bindings:[]}}if(n=Pmr(r,t.table,t.tables,t.meta?.oldTable,t.meta?.renamed),this.sqlClient==="mssql"&&t.meta?.renamed){let i=t.meta.renamed.old,o=t.meta.renamed.updated,s=t?.schema?`${t.schema}.${t.table.name}`:`${t.table.name}`,u=Wv(n);if(Array.isArray(u))for(let c of u)c.sql.startsWith("exec sp_rename")&&(c.sql=`exec sp_rename '${s}.${i}', '${o}', 'COLUMN'`,c.bindings=[]);return u}break;case"DELETE_TABLE":n=Nmr(r,t.table);break;default:throw new Error("Table operation is of unknown type")}return Wv(n)}},MU=fZ;var vHe=require("lodash");var gZ="__bb_total";function mHe(){return(V.SQL_MAX_ROWS?parseInt(V.SQL_MAX_ROWS):null)||5e3}a(mHe,"getBaseLimit");function pZ(){return(V.SQL_MAX_RELATED_ROWS?parseInt(V.SQL_MAX_RELATED_ROWS):null)||500}a(pZ,"getRelationshipLimit");function Fmr(e,t){return e.sort((r,n)=>{let i=t.find(s=>s&&r.endsWith(s)),o=t.find(s=>s&&n.endsWith(s));return i&&!o?-1:!i&&o?1:r.localeCompare(n)})}a(Fmr,"prioritisedArraySort");function wHe(e){return Array.isArray(e)?e.map(t=>wHe(t)):(e.bindings&&(e.bindings=e.bindings.map(t=>typeof t=="boolean"?t?1:0:t)),e)}a(wHe,"convertBooleans");function gHe(e){return e.sourceType==="internal"||e.sourceId===Ko}a(gHe,"isSqs");function Umr(e,t='"'){return e.replace(new RegExp(t,"g"),`${t}${t}`)}a(Umr,"escapeQuotes");function EHe(e,t='"'){return`${t}${Umr(e,t)}${t}`}a(EHe,"wrap");function dZ(e,t='"'){for(let r in e)typeof e[r]=="string"&&(e[r]=EHe(e[r],t));return`[${e.join(",")}]`}a(dZ,"stringifyArray");function _He(e){return fk.includes(e.type)&&!Ye.schema.isDeprecatedSingleUserColumn(e)}a(_He,"isJsonColumn");var jmr={equal:!1,notEqual:!0,empty:!1,notEmpty:!0,fuzzy:!1,string:!1,range:!1,contains:!1,notContains:!0,containsAny:!1,oneOf:!1,$and:!1,$or:!1},hZ=class{constructor(t,r,n){this.SPECIAL_SELECT_CASES={POSTGRES_ARRAY:t=>this.client==="pg"&&t?.externalType?.toLowerCase()==="array",POSTGRES_MONEY:t=>this.client==="pg"&&t?.externalType?.includes("money"),POSTGRES_ENUM:t=>this.client==="pg"&&t?.externalType?.toLowerCase()==="user-defined"&&t?.type==="options",MSSQL_DATES:t=>this.client==="mssql"&&t?.type==="datetime"&&t.timeOnly};this.client=t,this.query=n,this.knex=r,this.splitter=new Lr.ColumnSplitter([this.table],{aliases:this.query.tableAliases,columnPrefix:this.query.meta?.columnPrefix})}static{a(this,"InternalBuilder")}get table(){return this.query.table}get knexClient(){return this.knex.client}getFieldSchema(t){let{column:r}=this.splitter.run(t);return this.table.schema[r]}requiresJsonAsStringClient(){return["mssql","mysql2","mariadb","oracledb"].includes(this.client)}quoteChars(){let t=this.knexClient.wrapIdentifier("foo",{});return[t[0],t[t.length-1]]}quote(t){return this.knexClient.wrapIdentifier(t,{})}isQuoted(t){let[r,n]=this.quoteChars();return t.startsWith(r)&&t.endsWith(n)}quotedIdentifier(t){return Array.isArray(t)||(t=this.splitIdentifier(t)),t.map(r=>this.quote(r)).join(".")}castIntToString(t){switch(this.client){case"oracledb":return this.knex.raw("to_char(??)",[t]);case"pg":return this.knex.raw("??::TEXT",[t]);case"mysql2":case"mariadb":return this.knex.raw("CAST(?? AS CHAR)",[t]);case"sqlite3":return this.knex.raw("printf('%d', ??)",[t]);case"mssql":return this.knex.raw("CONVERT(NVARCHAR, ??)",[t])}}rawQuotedIdentifier(t){return this.knex.raw(this.quotedIdentifier(t))}splitIdentifier(t){let[r,n]=this.quoteChars();return this.isQuoted(t)?t.slice(1,-1).split(`${n}.${r}`):t.split(".")}qualifyIdentifier(t){let r=this.getTableName(),n=this.splitIdentifier(t);return n[0]!==r&&n.unshift(r),this.isQuoted(t)?this.quotedIdentifier(n):n.join(".")}generateSelectStatement(){let{table:t,resource:r}=this.query;if(!r||!r.fields||r.fields.length===0)return"*";let n=this.getTableName(t),i=this.table.schema;return r.fields.map(s=>{let u=s.split(/\./g),c,l=u[0];return u.length>1&&(c=u[0],l=u.slice(1).join(".")),{table:c,column:l,field:s}}).filter(({table:s})=>!s||s===n).map(({table:s,column:u,field:c})=>{let l=i[u];return this.SPECIAL_SELECT_CASES.POSTGRES_MONEY(l)?this.knex.raw("??::money::numeric as ??",[this.rawQuotedIdentifier([s,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))]):s?this.rawQuotedIdentifier(`${s}.${u}`):this.rawQuotedIdentifier(c)})}convertClobs(t,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(t).pop(),o=this.table.schema[i],s=this.rawQuotedIdentifier(t);return(o.type==="string"||o.type==="longform"||o.type==="bb_reference_single"||o.type==="bb_reference"||o.type==="options"||o.type==="barcodeqr")&&(r?.forSelect?s=this.knex.raw("to_char(??) as ??",[s,this.rawQuotedIdentifier(i)]):s=this.knex.raw("to_char(??)",[s])),s}parse(t,r){if(Array.isArray(t))return JSON.stringify(t);if(t==null)return null;if(this.requiresJsonAsStringClient()&&_He(r)&&typeof t=="object")return JSON.stringify(t);if(this.SPECIAL_SELECT_CASES.POSTGRES_ARRAY(r))return`{${t}}`;if(this.client==="oracledb"&&r.type==="datetime"&&r.timeOnly){if(t instanceof Date){let n=t.getHours().toString().padStart(2,"0"),i=t.getMinutes().toString().padStart(2,"0"),o=t.getSeconds().toString().padStart(2,"0");return`${n}:${i}:${o}`}if(typeof t=="string")return new Date(`1970-01-01T${t}Z`)}if(typeof t=="string"&&r.type==="datetime")if(r.timeOnly){if(!R$(t))return null}else if(r.dateOnly){let n=A$(t);return n?new Date(n):null}else return r.ignoreTimezones?f1(t)?new Date(t):T$(t)?new Date(t+"Z"):null:f1(t)?new Date(t.trim()):null;return t}parseBody(t){for(let[r,n]of Object.entries(t)){let{column:i}=this.splitter.run(r),o=this.table.schema[i];o&&(t[r]=this.parse(n,o))}return t}parseFilters(t){t=(0,vHe.cloneDeep)(t);for(let r of Object.values(Sm)){let n=t[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),s=this.table.schema[o];s&&(n[i]=this.parse(n[i],s))}}for(let r of Object.values(ll)){let n=t[r];if(n)for(let i of Object.keys(n)){let{column:o}=this.splitter.run(i),s=this.table.schema[o];s&&(n[i]=n[i].map(u=>this.parse(u,s)))}}for(let r of Object.values(Mb)){let n=t[r];if(n)for(let i of Object.keys(n)){let{column:o}=this.splitter.run(i),s=this.table.schema[o];if(!s)continue;let u=n[i];"low"in u&&(u.low=this.parse(u.low,s)),"high"in u&&(u.high=this.parse(u.high,s))}}return t}addJoinFieldCheck(t,r){let n=r.from?.split(".")[0]||"";return t.andWhere(`${n}.fieldName`,"=",r.column)}addRelationshipForFilter(t,r,n,i){let{relationships:o,schema:s,tableAliases:u,table:c}=this.query,l=u?.[c.name]||c.name,f=a(p=>n.match(new RegExp(`^${p}\\.`)),"matches");if(!o)return t;for(let p of o){let d=p.tableName,h=u?.[d]||d,m=f(d)||f(h),g=f(p.column);if((m||g)&&p.to&&p.tableName){let y=this.knex.select(this.knex.raw(1)).from({[h]:d}),b=y.clone(),v=O$(p),w;if(m?w=n:w=n.replace(new RegExp(`^${p.column}.`),`${u?.[p.tableName]||p.tableName}.`),v){let x=u?.[v.through]||p.through,T=this.tableNameWithSchema(v.through,{alias:x,schema:s});b=b.innerJoin(T,function(){this.on(`${h}.${v.toPrimary}`,"=",`${x}.${v.to}`)}).where(`${x}.${v.from}`,"=",this.rawQuotedIdentifier(`${l}.${v.fromPrimary}`)),this.client==="sqlite3"&&(b=this.addJoinFieldCheck(b,v)),t=t.where(I=>{I.whereExists(i(w,b)),r&&I.orWhereNotExists(y.clone().innerJoin(T,function(){this.on(`${l}.${v.fromPrimary}`,"=",`${x}.${v.from}`)}))})}else{let x=`${h}.${p.to}`,T=`${l}.${p.from}`;b=b.where(x,"=",this.rawQuotedIdentifier(T)),t=t.where(I=>{I.whereExists(i(w,b.clone())),r&&I.orWhereNotExists(b)})}}}return t}addFilters(t,r,n){if(!r)return t;let i=this;r=this.parseFilters({...r});let o=this.query.tableAliases,s=r.allOr,c=this.client==="sqlite3"?this.table._id:this.table.name;function l(m){return o?.[m]||m}a(l,"getTableAlias");function f(m,g,y,b){let v=a((w,x,T)=>{let[I,...R]=x.split("."),C=R.join("."),k=l(I);return w.andWhere(U=>y(U,k?`${k}.${C}`:C,T))},"handleRelationship");for(let w in m){let x=m[w],T=kx(w),I=T.includes("."),R=n?.relationship&&I,C;if(w==="_complexIdOperator"&&(C=m[w])&&b){let k=l(c);t=b(t,C.id.map(U=>k?`${k}.${U}`:U),C.values)}else if(I)R&&(s&&(t=t.or),t=i.addRelationshipForFilter(t,jmr[g],T,(k,U)=>v(U,k,x)));else{let k=l(c);t=y(t,k?`${k}.${T}`:T,x)}}}a(f,"iterate");let p=a((m,g,y)=>((r?.fuzzyOr||s)&&(m=m.or),this.client==="oracledb"||this.client==="sqlite3"?m.whereRaw("LOWER(??) LIKE ?",[this.rawQuotedIdentifier(g),`%${y.toLowerCase()}%`]):m.whereILike(this.rawQuotedIdentifier(g),this.knex.raw("?",[`%${y}%`]))),"like"),d=a((m,g=!1)=>{function y(b){return(s||m===r?.containsAny)&&(b=b.or),m===r?.notContains&&(b=b.not),b}a(y,"addModifiers"),this.client==="pg"?f(m,"contains",(b,v,w)=>{b=y(b);let x=this.getFieldSchema(v),T="::jsonb";return this.SPECIAL_SELECT_CASES.POSTGRES_ARRAY(x)&&(T="",w=`{${w.map(R=>R.substring(1,R.length-1))}}`),g?b.whereRaw(T?"COALESCE(??::jsonb \\?| array??, FALSE)":"COALESCE(?? && '??', FALSE)",[this.rawQuotedIdentifier(v),T?this.knex.raw(dZ(w,"'")):this.knex.raw(w)]):b.whereRaw(`COALESCE(??${T} @> '??', FALSE)`,[this.rawQuotedIdentifier(v),T?this.knex.raw(dZ(w)):this.knex.raw(w)])}):this.client==="mysql2"||this.client==="mariadb"?f(m,"contains",(b,v,w)=>y(b).whereRaw("COALESCE(?(??, ?), FALSE)",[this.knex.raw(g?"JSON_OVERLAPS":"JSON_CONTAINS"),this.rawQuotedIdentifier(v),this.knex.raw(EHe(dZ(w)))])):f(m,"contains",(b,v,w)=>(w.length===0||(b=b.where(x=>(m===r?.notContains&&(x=x.not),x=x.where(T=>{for(let I of w){m===r?.containsAny?T=T.or:T=T.and;let R=typeof I=="string"?`"${I.toLowerCase()}"`:I;T=T.whereLike(this.knex.raw("COALESCE(LOWER(??), '')",[this.rawQuotedIdentifier(v)]),`%${R}%`)}}),m===r?.notContains&&(x=x.or.whereNull(this.rawQuotedIdentifier(v))),x))),b))},"contains");if(r.$and){let{$and:m}=r;for(let g of m.conditions)t=t.where(y=>{this.addFilters(y,g,n)})}if(r.$or){let{$or:m}=r;t=t.where(g=>{for(let y of m.conditions)g.orWhere(b=>this.addFilters(b,{...y,allOr:!0},n))})}r.oneOf&&f(r.oneOf,"oneOf",(m,g,y)=>{let b=this.getFieldSchema(g),v=Array.isArray(y)?y:[y];if(s&&(m=m.or),this.client==="oracledb")g=this.convertClobs(g);else if(this.client==="sqlite3"&&b?.type==="datetime"&&b.dateOnly){for(let w of v)w!=null?m=m.or.whereLike(g,`${w.toISOString().slice(0,10)}%`):m=m.or.whereNull(g);return m}return m.whereIn(g,v)},(m,g,y)=>(s&&(m=m.or),this.client==="oracledb"&&(g=g.map(b=>this.convertClobs(b))),m.whereIn(g,Array.isArray(y)?y:[y]))),r.string&&f(r.string,"string",(m,g,y)=>{if(s&&(m=m.or),this.client==="oracledb"||this.client==="sqlite3")return m.whereRaw("LOWER(??) LIKE ?",[this.rawQuotedIdentifier(g),`${y.toLowerCase()}%`]);{let b=this.getFieldSchema(g);return this.SPECIAL_SELECT_CASES.POSTGRES_ENUM(b)?m.whereRaw(`??::text ilike '${y}%'`,[this.knex.raw(this.quote(b.name))]):m.whereILike(g,`${y}%`)}}),r.fuzzy&&f(r.fuzzy,"fuzzy",p),r.range&&f(r.range,"range",(m,g,y)=>{let b=a(C=>C&&Object.keys(C).length===0&&Object.getPrototypeOf(C)===Object.prototype,"isEmptyObject");b(y.low)&&(y.low=""),b(y.high)&&(y.high="");let v=p1(y.low),w=p1(y.high),x=this.getFieldSchema(g),T=g,I=y.high,R=y.low;return this.client==="sqlite3"&&x?.type==="datetime"&&x.dateOnly&&(I!=null&&(I=`${I.toISOString().slice(0,10)}T23:59:59.999Z`),R!=null&&(R=R.toISOString().slice(0,10))),this.client==="oracledb"?T=this.convertClobs(g):this.client==="sqlite3"&&x?.type==="bigint"&&(T=this.knex.raw("CAST(?? AS INTEGER)",[this.rawQuotedIdentifier(g)]),I=this.knex.raw("CAST(? AS INTEGER)",[y.high]),R=this.knex.raw("CAST(? AS INTEGER)",[y.low])),s&&(m=m.or),v&&w?m.whereBetween(T,[R,I]):v?m.where(T,">=",R):w?m.where(T,"<=",I):m}),r.equal&&f(r.equal,"equal",(m,g,y)=>{let b=this.getFieldSchema(g);if(s&&(m=m.or),this.client==="mssql")return m.whereRaw("CASE WHEN ?? = ? THEN 1 ELSE 0 END = 1",[this.rawQuotedIdentifier(g),y]);if(this.client==="oracledb"){let v=this.convertClobs(g);return m.where(w=>w.whereNotNull(v).andWhere(v,y))}else return this.client==="sqlite3"&&b?.type==="datetime"&&b.dateOnly?y!=null?m.whereLike(g,`${y.toISOString().slice(0,10)}%`):m.whereNull(g):m.whereRaw("COALESCE(?? = ?, FALSE)",[this.rawQuotedIdentifier(g),y])}),r.notEqual&&f(r.notEqual,"notEqual",(m,g,y)=>{let b=this.getFieldSchema(g);if(s&&(m=m.or),this.client==="mssql")return m.whereRaw("CASE WHEN ?? = ? THEN 1 ELSE 0 END = 0",[this.rawQuotedIdentifier(g),y]);if(this.client==="oracledb"){let v=this.convertClobs(g);return m.where(w=>w.not.whereNull(v).and.where(v,"!=",y)).or.whereNull(v)}else return this.client==="sqlite3"&&b?.type==="datetime"&&b.dateOnly?y!=null?m.not.whereLike(g,`${y.toISOString().slice(0,10)}%`).or.whereNull(g):m.not.whereNull(g):m.whereRaw("COALESCE(?? != ?, TRUE)",[this.rawQuotedIdentifier(g),y])}),r.empty&&f(r.empty,"empty",(m,g)=>(s&&(m=m.or),m.whereNull(g))),r.notEmpty&&f(r.notEmpty,"notEmpty",(m,g)=>(s&&(m=m.or),m.whereNotNull(g))),r.contains&&d(r.contains),r.notContains&&d(r.notContains),r.containsAny&&d(r.containsAny,!0);let h=o?.[this.table._id]||this.table._id;return r.documentType&&!S$(this.table)&&h&&t.andWhereLike(`${h}._id`,`${ld(r.documentType)}%`),t}isSqs(){return gHe(this.table)}getTableName(t){t||(t=this.table);let r=t.name;gHe(t)&&t._id&&(r=t._id);let n=this.query.tableAliases||{};return n[r]?n[r]:r}addDistinctCount(t){if(!this.table.primary)throw new Error("SQL counting requires primary key to be supplied");return t.countDistinct(`${this.getTableName()}.${this.table.primary[0]} as ${gZ}`)}addAggregations(t,r){let n=this.query.resource?.fields||[],i=this.getTableName();if(n.length>0){let o=n.map(s=>this.qualifyIdentifier(s));if(this.client==="oracledb"){let s=o.map(c=>this.convertClobs(c)),u=o.map(c=>this.convertClobs(c,{forSelect:!0}));t=t.groupBy(s).select(u)}else t=t.groupBy(o).select(o)}for(let o of r){let s=o.calculationType;if(s==="count")if("distinct"in o&&o.distinct)if(this.client==="oracledb"){let u=this.convertClobs(`${i}.${o.field}`);t=t.select(this.knex.raw("COUNT(DISTINCT ??) as ??",[u,o.name]))}else t=t.countDistinct(`${i}.${o.field} as ${o.name}`);else if(this.client==="oracledb"){let u=this.convertClobs(`${i}.${o.field}`);t=t.select(this.knex.raw("COUNT(??) as ??",[u,o.name]))}else t=t.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(s),this.rawQuotedIdentifier(`${i}.${o.field}`)]);u.type==="bigint"&&(c=this.castIntToString(c)),t=t.select(this.knex.raw("?? as ??",[c,o.name]))}}return t}isAggregateField(t){return!!this.query.resource?.aggregations?.find(n=>n.name===t)}addSorting(t){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=c.direction==="ascending"?"asc":"desc",f;(this.client==="pg"||this.client==="oracledb")&&(f=c.direction==="ascending"?"first":"last");let p=`${o}.${u}`,d;this.isAggregateField(u)?d=this.rawQuotedIdentifier(u):this.client==="oracledb"?d=this.convertClobs(p):d=this.rawQuotedIdentifier(p),t=t.orderByRaw(`?? ?? ${f?"nulls ??":""}`,[d,this.knex.raw(l),...f?[this.knex.raw(f)]:[]])}if(!((n?.aggregations?.length??0)>0)&&(!r||r[i[0]]===void 0)){if(i[0]===void 0)throw new Error(`Primary key not found for table ${this.table.name}`);t=t.orderBy(`${o}.${i[0]}`)}return t}tableNameWithSchema(t,r){let n=r?.schema?`${r.schema}.${t}`:t;return r?.alias&&(n+=` as ${r.alias}`),n}buildJsonField(t,r){let n=r.split("."),i=n[n.length-1],o,s;if(n.length>1){let l=n.shift();o=n.join("."),s=`${l}.${o}`}else o=n.join("."),s=o;this.query.meta?.columnPrefix&&(i=i.replace(this.query.meta.columnPrefix,""));let u=this.rawQuotedIdentifier(s),c=t.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(t,r,n){let i=this.client,o=this.knex,{resource:s,tableAliases:u,schema:c,tables:l}=this.query,f=s?.fields||[];for(let p of n){let{tableName:d,through:h,to:m,from:g,fromPrimary:y,toPrimary:b}=p;if(!d||!r)continue;let v=l[d];if(!v)throw new Error(`related table "${d}" not found in datasource`);let w=u?.[d]||d,x=u?.[r]||r,T=h&&u?.[h]||h,I=this.tableNameWithSchema(d,{alias:w,schema:c}),R=[...v?.primary||[],v?.primaryDisplay].filter(ie=>ie),C=Fmr(f.filter(ie=>ie.split(".")[0]===w),R);C=C.slice(0,Math.floor(this.maxFunctionParameters()/2));let k=C.map(ie=>this.buildJsonField(v,ie));if(!k.length)continue;let U=k.map(ie=>{let Q=this.client==="oracledb"?" VALUE ":",";return this.knex.raw(`?${Q}??`,[ie[0],ie[1]]).toString()}).join(","),M=`${w}.${b||m}`,H=o.from(I).orderBy(M),F=h&&b&&y,Y=F?`${T}.${g}`:`${w}.${m}`,B=F?`${x}.${y}`:`${x}.${g}`;if(F){let ie=this.tableNameWithSchema(h,{alias:T,schema:c});H=H.join(ie,function(){this.on(`${w}.${b}`,"=",`${T}.${m}`)})}H=H.where(this.rawQuotedIdentifier(Y),"=",this.rawQuotedIdentifier(B));let $=a(ie=>(H=H.select(C.map(Q=>this.rawQuotedIdentifier(Q))).limit(pZ()),o.select(ie).from({[w]:H})),"standardWrap"),ae;switch(i){case"sqlite3":H=this.addJoinFieldCheck(H,p),ae=$(this.knex.raw(`json_group_array(json_object(${U}))`));break;case"pg":ae=$(this.knex.raw(`json_agg(json_build_object(${U}))`));break;case"mariadb":ae=H.select(o.raw(`json_arrayagg(json_object(${U}) LIMIT ${pZ()})`));break;case"mysql2":case"oracledb":ae=$(this.knex.raw(`json_arrayagg(json_object(${U}))`));break;case"mssql":{let ie=o.select("*").from({[x]:H.select(k.map(Q=>o.ref(Q[1]).as(Q[0]))).limit(pZ())});ae=o.raw(`(SELECT ?? = (${ie} FOR JSON PATH))`,[this.rawQuotedIdentifier(w)]);break}default:throw new Error(`JSON relationships not implement for ${i}`)}t=t.select({[p.column]:ae})}return t}addJoin(t,r,n){let{tableAliases:i,schema:o}=this.query,s=r.to,u=r.from,c=r.through,l=i?.[s]||s,f=c&&i?.[c]||c,p=i?.[u]||u,d=this.tableNameWithSchema(s,{alias:l,schema:o}),h=c?this.tableNameWithSchema(c,{alias:f,schema:o}):void 0;return c?t=t.leftJoin(h,function(){for(let m of n){let g=m.fromPrimary,y=m.from;this.orOn(`${p}.${g}`,"=",`${f}.${y}`)}}).leftJoin(d,function(){for(let m of n){let g=m.toPrimary,y=m.to;this.orOn(`${l}.${g}`,`${f}.${y}`)}}):t=t.leftJoin(d,function(){for(let m of n){let g=m.from,y=m.to;this.orOn(`${p}.${g}`,"=",`${l}.${y}`)}}),t}qualifiedKnex(t){let r=this.query.tableAliases?.[this.query.table.name];return t?.alias===!1?r=void 0:typeof t?.alias=="string"&&(r=t.alias),this.knex(this.tableNameWithSchema(this.query.table.name,{alias:r,schema:this.query.schema}))}create(t){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,s]of Object.entries(this.query.table.schema)){if(s.constraints?.presence===!0||s.type==="formula"||s.type==="auto"||s.type==="link"||s.type==="ai")continue;i[o]==null&&(i[o]=null)}else for(let[o,s]of Object.entries(i))s==null&&delete i[o];return t.disableReturning?n.insert(i):n.insert(i).returning("*")}bulkCreate(){let{body:t}=this.query,r=this.qualifiedKnex({alias:!1});if(!Array.isArray(t))return r;let n=t.map(i=>this.parseBody(i));return r.insert(n)}bulkUpsert(){let{body:t}=this.query,r=this.qualifiedKnex({alias:!1});if(!Array.isArray(t))return r;let n=t.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(t={}){let{operation:r,filters:n,paginate:i,relationships:o,table:s}=this.query,{limits:u}=t,c=this.qualifiedKnex(),l=null,f=u?.query||u?.base;if(i&&i.page&&i.limit){let h=(i.page<=1?0:i.page-1)*i.limit;f=i.limit,l=h}else i&&i.offset&&i.limit?(f=i.limit,l=i.offset):i&&i.limit&&(f=i.limit);r!=="COUNT"&&(f!=null&&(c=c.limit(f)),l!=null&&(c=c.offset(l)));let p=this.query.resource?.aggregations||[];if(r==="COUNT"?c=this.addDistinctCount(c):p.length>0?c=this.addAggregations(c,p):c=c.select(this.generateSelectStatement()),r!=="COUNT"&&(c=this.addSorting(c)),c=this.addFilters(c,n,{relationship:!0}),o?.length&&p.length===0){let d=this.query.tableAliases?.[s.name]||s.name,h=this.addSorting(this.knex.with("paginated",c.clone().clearSelect().select("*")).select(this.generateSelectStatement()).from({[d]:"paginated"}));return this.addJsonRelationships(h,s.name,o)}return c}update(t){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),t.disableReturning?i.update(o):i.update(o).returning("*")}delete(t){let{filters:r}=this.query,n=this.qualifiedKnex();return n=this.addFilters(n,r),t.disableReturning?n.delete():n.delete().returning(this.generateSelectStatement())}},mZ=class extends MU{constructor(r,n=mHe()){super(r);this.limit=n}static{a(this,"SqlQueryBuilder")}convertToNative(r,n={}){let i=this.getSqlClient();if(n?.disableBindings)return{sql:r.toString()};{let o=Wv(r);return i==="sqlite3"&&(o=wHe(o)),o}}_query(r,n={}){let i=this.getSqlClient(),o={client:this.getBaseSqlClient()};(i==="sqlite3"||i==="oracledb")&&(o.useNullAsDefault=!0);let s=(0,bHe.knex)(o),u,c=new hZ(i,s,r);switch(this._operation(r)){case"CREATE":u=c.create(n);break;case"READ":u=c.read({limits:{query:this.limit,base:mHe()}});break;case"COUNT":u=c.read();break;case"UPDATE":u=c.update(n);break;case"DELETE":u=c.delete(n);break;case"BULK_CREATE":u=c.bulkCreate();break;case"BULK_UPSERT":u=c.bulkUpsert();break;case"CREATE_TABLE":case"UPDATE_TABLE":case"DELETE_TABLE":return this._tableQuery(r);default:throw"Operation type is not supported by SQL query builder"}return this.convertToNative(u,n)}async getReturningRow(r,n){if(!n.extra||!n.extra.idFilter)return{};let i=this._query({operation:"READ",datasource:n.datasource,schema:n.schema,table:n.table,tables:n.tables,resource:{fields:[]},filters:n.extra?.idFilter,paginate:{limit:1}});return r(i,"READ")}checkLookupKeys(r,n){if(!r||!n.table.primary)return n;let i=n.table.primary[0];return n.extra={idFilter:{equal:{[i]:r}}},n}async queryWithReturning(r,n,i=o=>o){let o=this.getSqlClient(),s=this._operation(r),u=this._query(r,{disableReturning:!0});if(Array.isArray(u)){let p=[];for(let d of u)p.push(await n(d,s));return p}let c;s==="DELETE"&&(c=i(await this.getReturningRow(n,r)));let l=await n(u,s),f=i(l);if(s==="CREATE"||s==="UPDATE"){let p;o==="mssql"?p=f?.[0].id:(o==="mysql2"||o==="mariadb")&&(p=f?.insertId),c=i(await this.getReturningRow(n,this.checkLookupKeys(p,r)))}return s==="COUNT"?f:s!=="READ"?c:f.length?f:[{[s.toLowerCase()]:!0}]}getTableName(r,n){let i=r.name;if(r.sourceType==="internal"||r.sourceId===Ko){if(!r._id)return;i=r._id}return n?.[i]||i}convertJsonStringColumns(r,n,i){let o=this.getTableName(r,i);for(let[s,u]of Object.entries(r.schema)){if(!_He(u))continue;let c=`${o}.${s}`;for(let l of n)typeof l[c]=="string"&&(l[c]=JSON.parse(l[c])),typeof l[s]=="string"&&(l[s]=JSON.parse(l[s]))}return n}log(r,n){px(this.getSqlClient(),r,n)}},SHe=mZ;var yZ={};oe(yZ,{base:()=>Mmr});function Mmr(e){return{_id:Pa,language:"sqlite",sql:{tables:{},options:{table_name:e}}}}a(Mmr,"base");var GR={};oe(GR,{jsonFromCsvString:()=>Bmr});var xHe=te(require("csvtojson"));async function Bmr(e,t){let{ignoreEmpty:r=!1,allowSingleColumn:n=!1,possibleDelimiters:i=[",",";",":","|","~"," "," "]}=t||{};for(let o of i){let s,u=!1;try{let c=await(0,xHe.default)({ignoreEmpty:r,delimiter:o}).fromString(e);for(let[,l]of c.entries()){let f=Object.keys(l);if(s==null&&(s=f),!n&&f.length===1){u=!0;break}if(s.length!==f.length){u=!0;break}for(let p of s)(l[p]===void 0||l[p]==="")&&(l[p]=null)}if(u)continue;return c}catch{continue}}throw new Error("Unable to determine delimiter")}a(Bmr,"jsonFromCsvString");var $mr=te(require("@koa/router"));var vt={...Dx,...W},THe=a((e={})=>{c1(e.db)},"init");var yb={};oe(yb,{ai:()=>aee,auditLogs:()=>mb,automations:()=>p_,backups:()=>Zs,branding:()=>nee,environmentVariables:()=>rl,features:()=>ms,groups:()=>on,init:()=>x0r,licensing:()=>em,logger:()=>C_,plugins:()=>See,publicApi:()=>_re,quotas:()=>Mn,scimGroups:()=>tI,scimUsers:()=>eu,users:()=>mee,utils:()=>bO});var nee={};oe(nee,{getBrandingConfig:()=>hyr});var ms={};oe(ms,{checkBackups:()=>qo,checkFeature:()=>aj,checkFeatures:()=>JZ,checkSCIM:()=>ree,isAppBuildersEnabled:()=>eee,isAuditLogsEnabled:()=>oj,isBackupsEnabled:()=>XZ,isBrandingEnabled:()=>ZZ,isEnforceableSSO:()=>xVe,isExpandedPublicApiEnabled:()=>qp,isPWAEnabled:()=>syr,isPkceOidcEnabled:()=>cyr,isRecaptchaEnabled:()=>uyr,isSSOEnforced:()=>lyr,isSyncAutomationsEnabled:()=>ayr,isTriggerAutomationRunEnabled:()=>oyr,isUserGroupsEnabled:()=>tee,isViewPermissionEnabled:()=>fyr,isViewReadonlyColumnsEnabled:()=>pyr});var em={};oe(em,{cache:()=>tl,client:()=>rm,features:()=>ej,getFreeLicense:()=>KZ,getLicense:()=>VZ,getLicenseFromKey:()=>vVe,keys:()=>YZ,offline:()=>rj,quotas:()=>tj});var tl={};oe(tl,{getCachedLicense:()=>_Ve,invalidate:()=>SVe,refresh:()=>Ky});var HR,Gmr=a(async()=>{HR=await to.init(Mp.utils.Databases.LICENSES)},"init"),Hmr=a(async()=>{HR&&await HR.finish()},"shutdown");process.on("exit",async()=>{await Hmr()});var bZ=a(async()=>(HR||await Gmr(),HR),"getClient");var rm={};oe(rm,{activateLicenseKey:()=>MZ,getLicense:()=>s_,getLicenseFromKey:()=>jZ,triggerQuota:()=>Ugr});var AHe=te(require("node-fetch"));var vZ=require("dd-trace"),RHe=require("dd-trace/ext/formats");var wZ=class{constructor(t){this.apiCall=t=>async(r="",n={})=>await vZ.tracer.trace(`api.${t}`,async i=>{i.setTag("url",r);let o={...n.headers};o["Content-Type"]||(o["Content-Type"]="application/json",o.Accept="application/json");let s=o["Content-Type"]==="application/json";kt.correlation.setHeader(o),vZ.tracer.inject(i,RHe.HTTP_HEADERS,o);let u={method:t,body:s?JSON.stringify(n.body):n.body,headers:o,credentials:"include"};return(0,AHe.default)(`${this.host}${r}`,u)});this.post=this.apiCall("POST");this.get=this.apiCall("GET");this.patch=this.apiCall("PATCH");this.del=this.apiCall("DELETE");this.put=this.apiCall("PUT");this.host=t}static{a(this,"API")}},EZ=wZ;var uf={};oe(uf,{bustCache:()=>xZ,getCurrentUsageValues:()=>LHe,getQuotaUsage:()=>Hy,setAllUsage:()=>AZ,setAppUsageValue:()=>TZ,setUsage:()=>DHe,setUsagePerApp:()=>PHe,utils:()=>QR});var QR={};oe(QR,{generateBaseQuotaUsage:()=>qU,generateNewMonthlyQuotas:()=>KR,generateNewQuotaUsage:()=>SZ,getBreakdownName:()=>zU,getCurrentMonthString:()=>Xh,getQuotaDocId:()=>VR,setCurrentMonth:()=>$U,setQuotaReset:()=>_Z});var VR=a(()=>W.isSelfHostUsingCloud()?`quota_usage_${W.getTenantId()}`:ne.StaticDatabases.GLOBAL.docs.usageQuota,"getQuotaDocId"),OHe=a(()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},"getNextQuotaReset"),_Z=a(e=>{e.quotaReset=OHe()},"setQuotaReset"),Xh=a(()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},"getCurrentMonthString"),qU=a(()=>({usageQuota:{apps:0,rows:0,plugins:0,users:0,creators:0,userGroups:0,aiCustomConfigs:0,triggers:{}},monthly:{[Xh()]:KR()}}),"generateBaseQuotaUsage"),SZ=a(()=>{let e={_id:VR(),quotaReset:OHe(),...qU(),apps:{}};return $U(e),e},"generateNewQuotaUsage"),KR=a(()=>({queries:0,automations:0,budibaseAICredits:0,actions:0,triggers:{}}),"generateNewMonthlyQuotas"),$U=a(e=>{let t=Xh();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=KR()),e.monthly.current=e.monthly[t]},"setCurrentMonth"),zU=a((e,t)=>{if(!(!t||!e))switch(e){case"automations":return"automations";case"queries":return dc(t)?"rowQueries":ov(t)?"datasourceQueries":void 0}},"getBreakdownName");var IHe=mi.fromSeconds(60).toMs(),{Writethrough:kHe}=Ht.writethrough;function Kmr(e){return delete e.usageLimits,delete e.usageQuota.automationRuns,delete e.usageQuota.emails,delete e.usageQuota.storage,delete e.usageQuota.views,delete e.usageQuota.publishedApps,delete e.usageQuota.developers,e}a(Kmr,"clearDeprecated");var WU=a(()=>vt.isSelfHostUsingCloud()?new kHe(vt.getSelfHostCloudDB(),IHe):new kHe(vt.getGlobalDB(),IHe),"getDB");async function xZ(e=0){let r=WU(),n=VR(),i=await r.tryGet(n);i&&i._rev&&await r.remove(n,i._rev).catch(async o=>{if(e<1)return await xZ(e+1);throw o})}a(xZ,"bustCache");var Hy=a(async()=>{let e=WU(),t=await e.tryGet(VR());if(!t){t=SZ();let{rev:r}=await e.put(t);t._rev=r}return $U(t),_Z(t),Kmr(t)},"getQuotaUsage"),DHe=a(async(e,t,r)=>AZ({name:t,type:r,values:{total:e}}),"setUsage"),PHe=a(async(e,t,r)=>{let n=WU(),i=await Hy(),o=Object.values(e).reduce((u,c)=>u+c,0);for(let[u,c]of Object.entries(e))i=NHe(i,t,r,{total:o,app:c},{appId:u});let s=await n.put(i);return i._rev=s.rev,i},"setUsagePerApp"),Qmr=a((e,t,r,n)=>{let i=zU(t,r);if(!i||!n?.breakdown)return e;e.breakdown||(e.breakdown={}),e.breakdown[i]||(e.breakdown[i]={parent:t,values:{}});let o=e.breakdown[i];return o.values[r]=n.breakdown,e},"setBreakdown"),TZ=a((e,t,r,n={},i)=>{let o;try{o=ne.getProdWorkspaceID(n?.appId||W.getWorkspaceId())}catch{}if(!o||!i.app||!qb.includes(t))return e;e.apps?.[o]||(e.apps={...e.apps,[o]:qU()});let s=e.apps[o];switch(r){case"static":s.usageQuota[t]=i.app;break;case"monthly":{let u=Xh(),c=t,l=s.monthly[u];l||(s.monthly[u]=KR(),l=s.monthly[u]),l[c]=i.app,sse.includes(c)&&n?.id&&(l=Qmr(l,c,n.id,i));break}}return e},"setAppUsageValue"),CHe=a((e,t,r,n)=>{if(!qb.includes(r))return{};let i;try{i=ne.getProdWorkspaceID(W.getWorkspaceId())}catch{}if(!i||!e.apps||!e.apps[i])return{app:0};let o=e.apps[i];switch(t){case"static":if(o.usageQuota?.[r])return{app:o.usageQuota[r]};break;case"monthly":{let s=Xh(),u=r;if(!o.monthly?.[s]?.[u])break;let c=o.monthly[s],l=c[u],f,p=zU(u,n);return p&&n&&c.breakdown?.[p]&&(f=c.breakdown[p]?.values[n]),{app:l,breakdown:f||0}}}return{app:0}},"getAppUsageValue"),Ymr=a((e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},"setStaticTriggers"),Jmr=a((e,t,r,n)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),n&&(r.monthly[t].triggers[e]=n)},"setMonthlyTriggers"),NHe=a((e,t,r,n,i={})=>{if(r==="static")t=t,e.usageQuota[t]=n.total,Ymr(t,e,n.triggers);else if(r==="monthly"){t=t;let o=Xh();e.monthly[o][t]=n.total,Jmr(t,o,e,n.triggers)}else throw new Error(`Invalid usage type: ${r}`);return TZ(e,t,r,i,n)},"coreUsageUpdate"),AZ=a(async e=>{let t=Array.isArray(e)?e:[e],r=WU(),n=await Hy();for(let o of t)n=NHe(n,o.name,o.type,o.values,o.opts);let i=await r.put(n,0);return n._rev=i.rev,n},"setAllUsage"),LHe=a(async(e,t,r)=>{let n=await Hy(),i=0,o={};switch(e){case"static":if(n.usageQuota[t]){let s=t;i=n.usageQuota[s],o=CHe(n,e,t,r)}break;case"monthly":{let s=Xh(),u=t;n.monthly[s][u]&&(i=n.monthly[s][u],o=CHe(n,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return qb.includes(t)&&!(o.app||o.breakdown)&&(o.app=o.app||0,o.breakdown=o.breakdown||0),{total:i,app:o.app,breakdown:o.breakdown}},"getCurrentUsageValues");var $u={};oe($u,{destroy:()=>egr,get:()=>RZ,save:()=>Zmr});var Xmr=a(()=>({_id:bn.GLOBAL.docs.licenseInfo}),"newLicenseInfo"),Zmr=a(async e=>{let t=await RZ();t={...t,...e};let n=await vt.getGlobalDB().put(t);return t._rev=n.rev,t},"save"),RZ=a(async()=>{let e=vt.getGlobalDB();try{return await e.get(bn.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return Xmr();throw t}},"get"),egr=a(async()=>{let e=vt.getGlobalDB(),t=await RZ();t&&t._rev&&await e.remove(bn.GLOBAL.docs.licenseInfo,t._rev)},"destroy");var Xn={};oe(Xn,{bulkSave:()=>dgr,destroy:()=>hgr,fetch:()=>cgr,generateUserGroupID:()=>sgr,get:()=>lgr,getBulk:()=>fgr,getByName:()=>OZ,getGroupUsers:()=>GU,getGroupUsersParams:()=>BHe,getUserGroupsParams:()=>MHe,save:()=>pgr});async function FHe(){let e=Vt.designDoc.base("type");e.sql.tables={[xm]:{fields:{appId:"VARCHAR",event:"VARCHAR",userId:"VARCHAR",timestamp:"VARCHAR",metadata:"VARCHAR",name:"VARCHAR",type:"VARCHAR",fallback:"VARCHAR"}}};let t=W.getAuditLogsDB(),r;try{r=await t.get(Pa),r={...r,...e}}catch(n){if(n.status===404)r=e;else throw n}await t.put(r)}a(FHe,"createAuditLogDesignDocSQL");var{ViewName:rgr,SEPARATOR:ngr,DocumentType:igr,createView:agr}=ne,ogr=igr.USER+ngr;async function UHe(){let e=vt.getGlobalDB(),t=`function(doc) {
537
537
  if (doc._id.startsWith("${ogr}") && Array.isArray(doc.userGroups)) {
538
538
  for (let groupId of doc.userGroups) {
539
539
  emit("g_" + groupId, { email: doc.email, userId: doc._id })
@@ -567,7 +567,7 @@ l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
567
567
  d/o3ZWE1TTj1zYwlCLN5qRKr3hU8nC3xEYNEbkB9SfTRaOq9Q7P8WmfLkoCPm3pR
568
568
  mwIDAQAB
569
569
  -----END PUBLIC KEY-----
570
- `;function mO(e){return BZ.default.verify(e,jgr,{algorithms:["RS256"]})}a(mO,"verifyLicenseToken");function Mgr(e,t){return BZ.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}a(Mgr,"sign");var ej={};oe(ej,{getFeatures:()=>qZ});var Bgr={free:[...zu.SELF_FREE_LICENSE.features],premium:void 0,premium_plus:["appBackups","branding","syncAutomations","appBuilders","viewPermissions","triggerAutomationRun","viewReadonlyColumns","aiCustomConfigs","pdf","budibaseAI"],premium_plus_trial:["appBackups","branding","syncAutomations","appBuilders","viewPermissions","triggerAutomationRun","viewReadonlyColumns","aiCustomConfigs","pdf","budibaseAI"],pro:["userGroups","appBackups"],team:["userGroups","appBackups"],business:["userGroups","appBackups","environmentVariables","auditLogs","branding","syncAutomations","appBuilders","expandedPublicApi","viewPermissions","pdf","budibaseAI"],enterprise_basic:["userGroups","appBackups","environmentVariables","enforceableSSO","auditLogs","branding","syncAutomations","offline","appBuilders","expandedPublicApi","viewPermissions","triggerAutomationRun","scim","viewReadonlyColumns","aiCustomConfigs","pwa","customAppScripts","pdf","budibaseAI","recaptcha","pkceOidc"],enterprise_basic_trial:["userGroups","appBackups","environmentVariables","enforceableSSO","branding","syncAutomations","appBuilders","expandedPublicApi","viewPermissions","triggerAutomationRun","scim","viewReadonlyColumns","aiCustomConfigs","pwa","customAppScripts","pdf","budibaseAI","recaptcha","pkceOidc"],enterprise:["userGroups","appBackups","environmentVariables","enforceableSSO","auditLogs","branding","syncAutomations","offline","appBuilders","expandedPublicApi","viewPermissions","triggerAutomationRun","scim","viewReadonlyColumns","aiCustomConfigs","pwa","customAppScripts","pdf","budibaseAI","recaptcha","pkceOidc"]},qgr={free:[...zu.CLOUD_FREE_LICENSE.features],premium:["appBackups","branding","appBuilders","viewPermissions","pdf"],premium_plus:["appBackups","branding","syncAutomations","appBuilders","viewPermissions","triggerAutomationRun","viewReadonlyColumns","budibaseAI","pdf"],premium_plus_trial:["appBackups","branding","syncAutomations","appBuilders","viewPermissions","triggerAutomationRun","viewReadonlyColumns","budibaseAI","pdf"],pro:["userGroups","appBackups","branding"],team:["userGroups","appBackups","branding"],business:["userGroups","appBackups","environmentVariables","auditLogs","branding","syncAutomations","appBuilders","expandedPublicApi","viewPermissions","budibaseAI","pdf"],enterprise_basic:["userGroups","appBackups","environmentVariables","enforceableSSO","auditLogs","branding","syncAutomations","offline","appBuilders","expandedPublicApi","viewPermissions","triggerAutomationRun","scim","viewReadonlyColumns","aiCustomConfigs","budibaseAI","pwa","customAppScripts","pdf","recaptcha","pkceOidc"],enterprise_basic_trial:["userGroups","appBackups","environmentVariables","enforceableSSO","branding","syncAutomations","appBuilders","expandedPublicApi","viewPermissions","triggerAutomationRun","scim","viewReadonlyColumns","aiCustomConfigs","budibaseAI","pwa","customAppScripts","pdf","recaptcha","pkceOidc"],enterprise:["userGroups","appBackups","environmentVariables","enforceableSSO","auditLogs","branding","syncAutomations","appBuilders","expandedPublicApi","viewPermissions","triggerAutomationRun","scim","viewReadonlyColumns","aiCustomConfigs","budibaseAI","pwa","customAppScripts","pdf","recaptcha","pkceOidc"]};function qZ(e,t){let r=[];function n(i){let o=i[t];if(!o)throw new Error(`Features do not exist for planType=${t} and hosting=${e}`);return o}switch(a(n,"readFeatures"),e){case"self":r=n(Bgr);break;case"cloud":r=n(qgr);break}return r}a(qZ,"getFeatures");var tj={};oe(tj,{UNLIMITED:()=>ye,getQuotas:()=>$Z});var ee=Zh,lVe=zu,ye=-1,yO=a(e=>e*1e6,"millions"),$gr={free:{...lVe.CLOUD_FREE_LICENSE.quotas},premium:{usage:{monthly:{...ee.queries(ye),...ee.automations(1e3),...ee.budibaseAICredits(0),...ee.actions(ye)},static:{...ee.rows(1e4),...ee.apps(ye),...ee.users(ye),...ee.creators(ye),...ee.userGroups(0),...ee.plugins(ye),...ee.customAIConfigurations(0)}},constant:{...ee.automationLogRetentionDays(7),...ee.appBackupRetentionDays(7)}},premium_plus:{usage:{monthly:{...ee.queries(ye),...ee.automations(5e3),...ee.budibaseAICredits(yO(2)),...ee.actions(ye)},static:{...ee.rows(25e3),...ee.apps(ye),...ee.users(ye),...ee.creators(ye),...ee.userGroups(0),...ee.plugins(ye),...ee.customAIConfigurations(1)}},constant:{...ee.automationLogRetentionDays(30),...ee.appBackupRetentionDays(30)}},premium_plus_trial:{usage:{monthly:{...ee.queries(ye),...ee.automations(5e3),...ee.budibaseAICredits(yO(2)),...ee.actions(ye)},static:{...ee.rows(25e3),...ee.apps(ye),...ee.users(ye),...ee.creators(ye),...ee.userGroups(0),...ee.plugins(ye),...ee.customAIConfigurations(1)}},constant:{...ee.automationLogRetentionDays(30),...ee.appBackupRetentionDays(30)}},pro:{usage:{monthly:{...ee.queries(ye),...ee.automations(1e3),...ee.budibaseAICredits(0),...ee.actions(ye)},static:{...ee.rows(ye),...ee.apps(ye),...ee.users(ye),...ee.creators(ye),...ee.userGroups(5),...ee.plugins(ye),...ee.customAIConfigurations(0)}},constant:{...ee.automationLogRetentionDays(7),...ee.appBackupRetentionDays(7)}},team:{usage:{monthly:{...ee.queries(ye),...ee.automations(5e3),...ee.budibaseAICredits(0),...ee.actions(ye)},static:{...ee.rows(ye),...ee.apps(ye),...ee.users(ye),...ee.creators(ye),...ee.userGroups(10),...ee.plugins(ye),...ee.customAIConfigurations(0)}},constant:{...ee.automationLogRetentionDays(30),...ee.appBackupRetentionDays(90)}},business:{usage:{monthly:{...ee.queries(ye),...ee.automations(1e4),...ee.budibaseAICredits(0),...ee.actions(ye)},static:{...ee.rows(5e4),...ee.apps(ye),...ee.users(ye),...ee.creators(ye),...ee.userGroups(50),...ee.plugins(ye),...ee.customAIConfigurations(0)}},constant:{...ee.automationLogRetentionDays(365),...ee.appBackupRetentionDays(365)}},enterprise_basic:{usage:{monthly:{...ee.queries(ye),...ee.automations(ye),...ee.budibaseAICredits(yO(4)),...ee.actions(ye)},static:{...ee.rows(ye),...ee.apps(ye),...ee.users(ye),...ee.creators(ye),...ee.userGroups(ye),...ee.plugins(ye),...ee.customAIConfigurations(ye)}},constant:{...ee.automationLogRetentionDays(ye),...ee.appBackupRetentionDays(ye)}},enterprise_basic_trial:{usage:{monthly:{...ee.queries(ye),...ee.automations(ye),...ee.budibaseAICredits(yO(4)),...ee.actions(ye)},static:{...ee.rows(ye),...ee.apps(ye),...ee.users(ye),...ee.creators(ye),...ee.userGroups(ye),...ee.plugins(ye),...ee.customAIConfigurations(ye)}},constant:{...ee.automationLogRetentionDays(15),...ee.appBackupRetentionDays(15)}},enterprise:{usage:{monthly:{...ee.queries(ye),...ee.automations(ye),...ee.budibaseAICredits(yO(4)),...ee.actions(ye)},static:{...ee.rows(ye),...ee.apps(ye),...ee.users(ye),...ee.creators(ye),...ee.userGroups(ye),...ee.plugins(ye),...ee.customAIConfigurations(ye)}},constant:{...ee.automationLogRetentionDays(ye),...ee.appBackupRetentionDays(ye)}}},zgr={free:{...lVe.SELF_FREE_LICENSE.quotas},premium:void 0,premium_plus:{usage:{monthly:{...ee.queries(ye),...ee.automations(ye),...ee.budibaseAICredits(0),...ee.actions(ye)},static:{...ee.rows(ye),...ee.apps(ye),...ee.users(ye),...ee.creators(ye),...ee.userGroups(0),...ee.plugins(ye),...ee.customAIConfigurations(1)}},constant:{...ee.automationLogRetentionDays(30),...ee.appBackupRetentionDays(30)}},premium_plus_trial:{usage:{monthly:{...ee.queries(ye),...ee.automations(ye),...ee.budibaseAICredits(0),...ee.actions(ye)},static:{...ee.rows(ye),...ee.apps(ye),...ee.users(ye),...ee.creators(ye),...ee.userGroups(0),...ee.plugins(ye),...ee.customAIConfigurations(1)}},constant:{...ee.automationLogRetentionDays(30),...ee.appBackupRetentionDays(30)}},pro:{usage:{monthly:{...ee.queries(ye),...ee.automations(ye),...ee.budibaseAICredits(0),...ee.actions(ye)},static:{...ee.rows(ye),...ee.apps(ye),...ee.users(ye),...ee.creators(ye),...ee.userGroups(5),...ee.plugins(ye),...ee.customAIConfigurations(0)}},constant:{...ee.automationLogRetentionDays(7),...ee.appBackupRetentionDays(7)}},team:{usage:{monthly:{...ee.queries(ye),...ee.automations(ye),...ee.budibaseAICredits(0),...ee.actions(ye)},static:{...ee.rows(ye),...ee.apps(ye),...ee.users(ye),...ee.creators(ye),...ee.userGroups(10),...ee.plugins(ye),...ee.customAIConfigurations(0)}},constant:{...ee.automationLogRetentionDays(30),...ee.appBackupRetentionDays(90)}},business:{usage:{monthly:{...ee.queries(ye),...ee.automations(ye),...ee.budibaseAICredits(0),...ee.actions(ye)},static:{...ee.rows(ye),...ee.apps(ye),...ee.users(ye),...ee.creators(ye),...ee.userGroups(50),...ee.plugins(ye),...ee.customAIConfigurations(0)}},constant:{...ee.automationLogRetentionDays(90),...ee.appBackupRetentionDays(365)}},enterprise_basic:{usage:{monthly:{...ee.queries(ye),...ee.automations(ye),...ee.budibaseAICredits(0),...ee.actions(ye)},static:{...ee.rows(ye),...ee.apps(ye),...ee.users(ye),...ee.creators(ye),...ee.userGroups(ye),...ee.plugins(ye),...ee.customAIConfigurations(ye)}},constant:{...ee.automationLogRetentionDays(ye),...ee.appBackupRetentionDays(ye)}},enterprise_basic_trial:{usage:{monthly:{...ee.queries(ye),...ee.automations(ye),...ee.budibaseAICredits(0),...ee.actions(ye)},static:{...ee.rows(ye),...ee.apps(ye),...ee.users(ye),...ee.creators(ye),...ee.userGroups(ye),...ee.plugins(ye),...ee.customAIConfigurations(ye)}},constant:{...ee.automationLogRetentionDays(15),...ee.appBackupRetentionDays(15)}},enterprise:{usage:{monthly:{...ee.queries(ye),...ee.automations(ye),...ee.budibaseAICredits(0),...ee.actions(ye)},static:{...ee.rows(ye),...ee.apps(ye),...ee.users(ye),...ee.creators(ye),...ee.userGroups(ye),...ee.plugins(ye),...ee.customAIConfigurations(ye)}},constant:{...ee.automationLogRetentionDays(ye),...ee.appBackupRetentionDays(ye)}}};function $Z(e,t){let r;function n(i){let o=i[t];if(!o)throw new Error(`Quotas do not exist for planType=${t} and hosting=${e}`);return o}switch(a(n,"readQuotas"),e){case"self":r=n(zgr);break;case"cloud":r=n($gr);break}return JSON.parse(JSON.stringify(r))}a($Z,"getQuotas");var bO={};oe(bO,{encoding:()=>u_,workspaceExists:()=>Wgr});async function Wgr(e){return(await ne.getAllWorkspaces({all:!0,idsOnly:!0})).includes(e)}a(Wgr,"workspaceExists");var u_={};oe(u_,{base64ToObject:()=>Hgr,objectToBase64:()=>Ggr});function Ggr(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}a(Ggr,"objectToBase64");function Hgr(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}a(Hgr,"base64ToObject");var fVe=te(require("lodash/union")),pVe=te(require("lodash/merge"));async function Vgr(e){await $u.save({offlineLicenseToken:e}),await Ky()}a(Vgr,"activateOfflineLicenseToken");async function Kgr(){await $u.save({offlineLicenseToken:void 0}),await Ky()}a(Kgr,"deleteOfflineLicenseToken");async function dVe(){return(await $u.get()).offlineLicenseToken}a(dVe,"getOfflineLicenseToken");async function zZ(){let t=(await xh.getInstall()).installId,r=W.getTenantId(),n=await Tt.identification.getUniqueTenantId(r);return{installId:t,tenantId:n}}a(zZ,"getIdentifier");async function Qgr(){let e=await zZ();return u_.objectToBase64(e)}a(Qgr,"getIdentifierBase64");function Ygr(e){return u_.base64ToObject(e)}a(Ygr,"getIdentifierFromBase64");function hVe(e){let t=Date.now(),r=new Date(e.expireAt).getTime();if(t>r)throw new Error(`Offline license has expired. expireAt=${e.expireAt}`)}a(hVe,"verifyExpiry");async function mVe(e){let t=await zZ();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}a(mVe,"verifyInstallation");function gVe(e){let t=e.plan.type,r="self",n=qZ(r,t),i=$Z(r,t);return e.features=(0,fVe.default)(e.features,n),e.quotas=(0,pVe.default)(e.quotas,i),e}a(gVe,"enrichLicense");async function WZ(){try{let e=await dVe();if(e){let t=await mO(e);return hVe(t),await mVe(t),gVe(t)}}catch(e){console.error("Error retrieving offline license",e)}}a(WZ,"getOfflineLicense");var wO={};oe(wO,{deleteDevLicense:()=>tyr,getOfflineLicense:()=>Zgr,writeDevLicenseToDisk:()=>eyr});var HZ=require("path"),yVe=require("os"),Qy=te(require("fs"));var Jgr=V.isTest()?".budibase-test":".budibase",GZ=(0,HZ.join)((0,yVe.tmpdir)(),Jgr),Xgr="dev_license.txt",vO=(0,HZ.join)(GZ,Xgr);if(!Qy.default.existsSync(GZ))try{Qy.default.mkdirSync(GZ)}catch{}function Zgr(){try{if(Qy.default.existsSync(vO)){let e=Qy.default.readFileSync(vO,{encoding:"utf-8"});return mO(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}a(Zgr,"getOfflineLicense");function eyr(e){console.log(`Writing license to: ${vO}`),Qy.default.writeFileSync(vO,e,{encoding:"utf-8"})}a(eyr,"writeDevLicenseToDisk");function tyr(){Qy.default.rmSync(vO,{force:!0})}a(tyr,"deleteDevLicense");var bVe=require("dd-trace");var VZ=a(async()=>await bVe.tracer.trace("getLicense",async e=>{if(V.OFFLINE_MODE)return e.addTags({offline:!0}),WZ();let t=await s_();return t||(e.addTags({offlineFallback:!0}),t=wO.getOfflineLicense()),t}),"getLicense"),vVe=a(e=>jZ(e),"getLicenseFromKey"),KZ=a(()=>V.SELF_HOSTED?zu.SELF_FREE_LICENSE:zu.CLOUD_FREE_LICENSE,"getFreeLicense");var YZ={};oe(YZ,{activateLicenseKey:()=>ryr,deleteLicenseKey:()=>nyr,getLicenseKey:()=>nj});var QZ=te(require("dd-trace"));async function ryr(e){await MZ(e),await $u.save({licenseKey:e}),await Ky()}a(ryr,"activateLicenseKey");async function nj(){return await QZ.default.trace("getLicenseKey",async e=>{let t=await $u.get();return e.addTags({licenseKey:t.licenseKey}),t.licenseKey})}a(nj,"getLicenseKey");async function nyr(){return await QZ.default.trace("deleteLicenseKey",async()=>{await $u.save({licenseKey:void 0}),await Ky()})}a(nyr,"deleteLicenseKey");var ij=te(require("dd-trace"));var wVe=3600,Ky=a(async()=>{await SVe(),await _Ve()},"refresh"),EVe=a(async(e,t)=>{let{populateLicense:r=VZ,populateFreeLicense:n=KZ}=t||{};return await ij.default.trace("getCachedLicense",async i=>{let o=W.getLicense();if(o)return i.addTags({foundInContext:!0,features:o.features,plan:o.plan,quotas:o.quotas}),o;let s=vt.getTenantId(),u=await bZ(),c=await u.get(s);return i.addTags({tenantId:s,foundInCache:!!c}),c?(i.addTags({foundInCache:!0,refreshedAt:c.refreshedAt,features:c.features,plan:c.plan,quotas:c.quotas}),c):(c=await ij.default.trace("populateLicense",async()=>await r(s)),i.addTags({populatedLicense:!!c}),c||(c=ij.default.trace("populateFreeLicense",()=>n(e,s)),i.addTags({populatedFreeLicense:!!c})),c.refreshedAt=new Date().toISOString(),i.addTags({refreshedAt:c.refreshedAt,features:c.features,plan:c.plan,quotas:c.quotas,expirySeconds:wVe}),await u.store(s,c,wVe),c)})},"_getCachedLicense");V.isJest()&&(EVe=jest.fn());var _Ve=EVe,SVe=a(async()=>{let e=vt.getTenantId();await(await bZ()).delete(e)},"invalidate");async function Ga(e,t){Array.isArray(e)||(e=[e]),t||(t=await tl.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}a(Ga,"areFeaturesEnabled");async function aj(e,t){if(!await Ga(e,t))throw new oE(`${e} is not currently enabled`,e)}a(aj,"checkFeature");async function JZ(e,t){if(!await Ga(e,t)){let r=e.join(", ");throw new oE(`${r} are not currently enabled`,r)}}a(JZ,"checkFeatures");function qo(e){return async(...t)=>(await aj("appBackups"),e(...t))}a(qo,"checkBackups");async function XZ(){return Ga("appBackups")}a(XZ,"isBackupsEnabled");async function ZZ(){return Ga("branding")}a(ZZ,"isBrandingEnabled");async function xVe(){return Ga("enforceableSSO")}a(xVe,"isEnforceableSSO");async function ayr(){return Ga("syncAutomations")}a(ayr,"isSyncAutomationsEnabled");async function oyr(){return Ga("triggerAutomationRun")}a(oyr,"isTriggerAutomationRunEnabled");async function eee(){return Ga("appBuilders")}a(eee,"isAppBuildersEnabled");async function oj(){return Ga("auditLogs")}a(oj,"isAuditLogsEnabled");async function tee(){return Ga("userGroups")}a(tee,"isUserGroupsEnabled");function syr(){return Ga("pwa")}a(syr,"isPWAEnabled");function uyr(){return Ga("recaptcha")}a(uyr,"isRecaptchaEnabled");var cyr=a(()=>Ga("pkceOidc"),"isPkceOidcEnabled");async function qp(){return Ga("expandedPublicApi")}a(qp,"isExpandedPublicApiEnabled");async function lyr(e){if(V.ENABLE_SSO_MAINTENANCE_MODE||!await xVe())return!1;let r;return e?.config?r=e.config:r=await ja.getSettingsConfig(),!!r.isSSOEnforced}a(lyr,"isSSOEnforced");var ree=a(async()=>{let e="scim",t=await Ga(e),r=await ja.getSCIMConfig();if(!t||!r?.enabled)throw new oE(`${e} is not currently enabled`,e);return!0},"checkSCIM");async function fyr(){return Ga("viewPermissions")}a(fyr,"isViewPermissionEnabled");async function pyr(){return Ga("viewReadonlyColumns")}a(pyr,"isViewReadonlyColumnsEnabled");var dyr={faviconUrl:void 0,faviconUrlEtag:void 0,emailBrandingEnabled:!0,platformTitle:void 0,loginHeading:void 0,loginButton:void 0,metaDescription:void 0,metaImageUrl:void 0,metaTitle:void 0};async function hyr(e){return await ZZ()?{faviconUrl:e.faviconUrl,faviconUrlEtag:e.faviconUrlEtag,emailBrandingEnabled:e.emailBrandingEnabled,platformTitle:e.platformTitle,loginHeading:e.loginHeading,loginButton:e.loginButton,metaDescription:e.metaDescription,metaImageUrl:e.metaImageUrl,metaTitle:e.metaTitle}:dyr}a(hyr,"getBrandingConfig");var aee={};oe(aee,{enrichAIConfig:()=>iee});var myr="budibase_ai";async function iee(e){if(V.SELF_HOSTED)return e;for(let t of Object.values(e.config))if(t.provider==="BudibaseAI")return e;return e.config[myr]={provider:"BudibaseAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-5-mini",name:"Budibase AI"},e}a(iee,"enrichAIConfig");var Mn={};oe(Mn,{addAction:()=>wyr,addApp:()=>Eyr,addAutomation:()=>Ryr,addGroup:()=>see,addPlugin:()=>cee,addRow:()=>Syr,addRows:()=>Tyr,addUsers:()=>sj,bustCache:()=>xZ,decrement:()=>$p,decrementMany:()=>EO,getCurrentUsageValues:()=>LHe,getLicensedQuota:()=>AVe,getQuotaUsage:()=>Hy,increment:()=>Ks,incrementBudibaseAICredits:()=>uj,incrementMany:()=>Jy,removeApp:()=>_yr,removeGroup:()=>uee,removePlugin:()=>lee,removeRow:()=>xyr,removeRows:()=>Ayr,removeUsers:()=>l_,set:()=>oee,setAllUsage:()=>AZ,setAppUsageValue:()=>TZ,setUsage:()=>DHe,setUsagePerApp:()=>PHe,updatePluginCount:()=>fee,updateUsage:()=>c_,usageLimitIsExceeded:()=>vyr,utils:()=>QR});var Yy=require("dd-trace");var Ks=a(async(e,t,r)=>await Yy.tracer.trace("quotas.increment",async n=>(n.addTags({name:e,type:t}),await TVe({change:1,name:e,type:t,opts:r}))),"increment"),Jy=a(e=>Yy.tracer.trace("quotas.incrementMany",async()=>TVe(e)),"incrementMany"),TVe=a(async e=>await Yy.tracer.trace("quotas.tryIncrement",async t=>{let r=Array.isArray(e)?e:[e];t.addTags({numActions:r.length}),await c_(r.map(i=>({usageChange:i.change,name:i.name,type:i.type,opts:{dryRun:!0,suppressErrorLog:i.opts?.suppressErrorLog,id:i.opts?.id}})));let n=[];for(let i of r)await Yy.tracer.trace("quotas.incrementMany.fn",async o=>{o.addTags({actionName:i.name,actionType:i.type,actionChange:i.change});let s=i.opts?.fn;s&&n.push(await s())});return await c_(r.map(i=>({usageChange:i.change,name:i.name,type:i.type,opts:{dryRun:!1,valueFn:i.opts?.valueFn,suppressErrorLog:i.opts?.suppressErrorLog,id:i.opts?.id}}))),n[0]}),"tryIncrement"),$p=a((e,t,r={})=>c_({usageChange:-1,name:e,type:t,opts:r}),"decrement"),EO=a(e=>{let t=Array.isArray(e)?e:[e];return c_(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},"decrementMany"),oee=a(async(e,t,r)=>uf.setUsage(r,e,t),"set"),gyr=a((e,t,r)=>{if(e=="static"){let n=r.usageQuota.triggers;return n?n[t]||{}:{}}else{let n=uf.utils.getCurrentMonthString(),i=r.monthly[n].triggers;return i?i[t]||{}:{}}},"getExistingTriggers"),yyr=a(async(e,t,r,n)=>{try{await Mc.doWithLock({type:"try_once",name:"trigger_quota",resource:e,ttl:1e4},async()=>{let i={percentage:r,name:t.name};n&&(i.resetDate=n),await rm.triggerQuota(i)})}catch(i){kt.logAlert("Error triggering quota",i)}},"triggerQuota"),byr=a(async(e,t,r,n)=>{let i=await Hy(),o=e==="monthly"?i.quotaReset:void 0,s=await gyr(e,t,i),u=n.triggers,c=r/n.value*100;c>100&&(c=100);for(let[l,f]of u.entries())if(c>=f&&n.value!==Zh.UNLIMITED){if(!s[f]){s[f]=new Date().toISOString();let d=u[l+1]||100;(!(c>=d)||c===f)&&await yyr(t,n,c,o)}}else s[f]=void 0;return s},"checkTriggers"),c_=a(async e=>{await Yy.tracer.trace("quotas.updateUsage",async t=>{let r=vt.getTenantId(),n=Array.isArray(e)?e:[e];t.addTags({numActions:n.length,tenantId:r});let i,o,s=[],u={},c={},l={},f={};for(let d of n)await Yy.tracer.trace("quotas.updateUsage.action",async h=>{h.addTags({actionName:d.name,actionType:d.type,actionUsageChange:d.usageChange});try{i=W.getWorkspaceId()}catch{}if(qb.includes(d.name)&&!i)throw new Error("App context required for quota update");try{o=await AVe("usage",d.name,d.type),s.push(o);let{total:g,app:y,breakdown:b}=await uf.getCurrentUsageValues(d.type,d.name,d.opts?.id);g+=d.usageChange,y!=null&&(y+=d.usageChange),b!=null&&(b+=d.usageChange);let v={};if(d.opts?.dryRun||(v=await byr(d.type,d.name,g,o),f={...f,[d.name]:v}),o.value!==Zh.UNLIMITED&&g>o.value&&d.usageChange>0)throw new kL(`Licensed ${o.name} of ${o.value} has been exceeded`,o.name);if(g=Math.max(0,g),y&&(y=Math.max(0,y)),b&&(b=Math.max(0,b),l={...l,[d.name]:b}),!d.opts?.dryRun){let w=d.opts?.valueFn;w&&(g=await w(),y=g),u={...u,[d.name]:g},c={...c,[d.name]:y}}}catch(g){throw d.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${d.name}`,g),g}});let p=n.filter(d=>!d.opts?.dryRun).map(d=>({name:d.name,type:d.type,values:{total:u[d.name],app:c[d.name],breakdown:l[d.name],triggers:f[d.name]},opts:{...d.opts,tenantId:r}}));p.length>0&&await uf.setAllUsage(p)})},"updateUsage"),AVe=a(async(e,t,r)=>{let n=await tl.getCachedLicense();if(!n){let i=vt.getTenantId();throw new Error("License not found for tenant id "+i)}if(r&&Xoe(e,r,t))return n.quotas[e][r][t];if(r&&Zoe(e,r,t))return n.quotas[e][r][t];if(ese(e,t))return n.quotas[e][t];throw new Error("Invalid quota type")},"getLicensedQuota"),vyr=a(async({name:e,type:t,usageChange:r})=>{try{return await c_({usageChange:r,name:e,type:t,opts:{dryRun:!0}}),!1}catch(n){if(n.code==="usage_limit_exceeded")return!0;throw n}},"usageLimitIsExceeded");var wyr=a(async e=>Ks("actions","monthly",{fn:e}),"addAction");var RVe=a(async()=>{let e=await ne.getAllWorkspaces({dev:!0});return e?e.length:0},"getDevAppsCount"),Eyr=a(async(e,{appId:t}={})=>Ks("apps","static",{fn:e,valueFn:RVe,id:t}),"addApp"),_yr=a(async({appId:e}={})=>$p("apps","static",{valueFn:RVe,id:e}),"removeApp");var Syr=a(async(e,{tableId:t}={})=>Ks("rows","static",{fn:e,id:t}),"addRow"),xyr=a(async({tableId:e}={})=>$p("rows","static",{id:e}),"removeRow"),Tyr=a(async(e,t,{tableId:r}={})=>Jy({change:e,name:"rows",type:"static",opts:{fn:t,id:r}}),"addRows"),Ayr=a(async(e,{tableId:t}={})=>EO({change:e,name:"rows",type:"static",opts:{id:t}}),"removeRows");var Ryr=a(async(e,{automationId:t}={})=>Ks("automations","monthly",{fn:e,id:t}),"addAutomation");var see=a(async e=>Ks("userGroups","static",{fn:e}),"addGroup"),uee=a(async()=>$p("userGroups","static"),"removeGroup");var cee=a(async e=>Ks("plugins","static",{fn:e}),"addPlugin"),lee=a(async()=>$p("plugins","static"),"removePlugin"),fee=a(async e=>oee("plugins","static",e),"updatePluginCount");var sj=a(async(e,t,r)=>{let n=[{change:e,name:"users",type:"static",opts:{fn:r,valueFn:rr.getUserCount}}];t>0&&n.push({change:t,name:"creators",type:"static",opts:{valueFn:rr.getCreatorCount}});let i=await Jy(n);return await s_(),i},"addUsers"),l_=a(async(e,t)=>{let r=[{change:e,name:"users",type:"static",opts:{valueFn:rr.getUserCount}}];t>0&&r.push({change:t,name:"creators",type:"static",opts:{valueFn:rr.getCreatorCount}}),await EO(r),await s_()},"removeUsers");var uj=a(async e=>Jy({change:e,name:"budibaseAICredits",type:"monthly"}),"incrementBudibaseAICredits");var mee={};oe(mee,{db:()=>Gu});var on={};oe(on,{addUsers:()=>fj,adjustGroupCreatorsQuotas:()=>Cyr,cleanupApp:()=>kyr,enrichUserRolesFromGroups:()=>Iyr,fetch:()=>_O,get:()=>f_,getBulk:()=>PVe,getGroupBuilderAppIds:()=>DVe,getGroupRoleId:()=>Oyr,remove:()=>pee,removeUsers:()=>dee,save:()=>lj,updateGroupApps:()=>hee});var cj=class extends Re{static{a(this,"GroupNameUnavailableError")}constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function kVe(e,t){try{let r=[];for(let u of e)if(u.roles){let c=u.roles[ne.getProdWorkspaceID(t)];c&&r.push(c)}let n=await Promise.all(r.map(async u=>({[u]:await Dr.roleToNumber(u)}))),i,o,s={};n.forEach(u=>{let[c,l]=Object.entries(u)[0];s[c]={roleId:c,roleNum:l}});for(let{roleId:u,roleNum:c}of Object.values(s))(o===void 0||c>o)&&(o=c,i=u);return i}catch(r){throw kt.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}a(kVe,"findHighestRole");async function CVe(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await Xn.getBulk(e,{enriched:!1}),t}a(CVe,"groupList");async function DVe(e,t){if(!e.userGroups)return[];let r=await CVe(e.userGroups,t?.groups),n=t?.appId?ne.getProdWorkspaceID(t?.appId):null,i=[];for(let o of r){let s=o.builder?.apps;n&&s?.includes(n)?i.push(n):n||(i=i.concat(s||[]))}return[...new Set(i)]}a(DVe,"getGroupBuilderAppIds");async function Oyr(e,t,r){if(!e.userGroups)return null;let n=await CVe(e.userGroups,r?.groups),i=ne.getProdWorkspaceID(t);return e.roles?.[i]?e.roles[i]:(n=n.filter(o=>o?.roles?Object.keys(o.roles).includes(i):!1),await kVe(n,t))}a(Oyr,"getGroupRoleId");async function Iyr(e){if(!e||!e.userGroups)return e;let t=await PVe(e.userGroups,{enriched:!1}),r=[];for(let i of t)i?.roles&&(r=r.concat(Object.keys(i.roles)));r=[...new Set(r)];for(let i of r)await W.doInWorkspaceContext(i,async()=>{if(e.roles[i])return;let o=await kVe(t,i);o&&(e.roles[i]=o)});let n=await DVe(e,{groups:t});if(n.length&&!e.builder?.global){let i=e.builder?.apps||[];e.builder={apps:i.concat(n)}}return e}a(Iyr,"enrichUserRolesFromGroups");async function _O(){return await Xn.fetch()}a(_O,"fetch");async function f_(e){return await Xn.get(e)}a(f_,"get");async function PVe(e,t={enriched:!0}){return await Xn.getBulk(e,t)}a(PVe,"getBulk");async function OVe(e){if(await Xn.getByName(e))throw new cj(e)}a(OVe,"guardNameAvailability");async function IVe(e){let t=await Xn.getGroupUsers(e._id);if(!t.length)return 0;let n=await vt.getGlobalDB().getMultiple(t.map(o=>o._id));return(await Ah.creatorsInList(n)).filter(o=>o).length}a(IVe,"getCreatorsCountInGroup");async function lj(e){let t=[],r=!e._id,n=0;if(delete e.users,!e._id)e._id=Xn.generateUserGroupID(),await OVe(e.name),t.push(Tt.group.created(e));else{let o=await Xn.get(e._id);if(o.name!==e.name&&await OVe(e.name),t.push(Tt.group.updated(e)),JSON.stringify(o.roles)!==JSON.stringify(e.roles)){let s=o.users?.length||0,u=0;s>0&&(u=await IVe(o)),Object.values(e.roles).includes("CREATOR")?n=s-u:n=-s,t.push(Tt.group.permissionsEdited(e))}}await Promise.all(t);let i=a(()=>Xn.save(e),"saveGroup");if(r)return await see(i);{let o=await i();if(n>0)await sj(0,n);else if(n<0){let s=await IVe(e),u=Math.abs(n)-s;u>0&&await l_(0,u)}return o}}a(lj,"save");async function pee(e,t){let r;try{r=await Xn.get(e)}catch{throw new Error("Group not found")}let n=Object.values(r.roles||{}).includes("CREATOR"),i=a(()=>{},"recalculateCreatorsQuotasFn");if(n){let s=vt.getGlobalDB(),u=await Xn.getGroupUsers(e),l=(await Promise.all(u.map(h=>s.get(h._id)))).map(h=>({...h,userGroups:h.userGroups.filter(m=>m!==e)})),p=(await Ah.creatorsInList(l)).filter(h=>h).length,d=u.length-p;d&&(i=a(()=>l_(0,d),"recalculateCreatorsQuotasFn"))}let o=await Xn.destroy(e,t);return await Tt.group.deleted(r),await uee(),await i(),o}a(pee,"remove");async function fj(e,t){let r=await Xn.get(e),n=await rr.bulkGetGlobalUsersById(t),i=[];for(let c of n)c.userGroups||(c.userGroups=[]),c.userGroups.includes(e)||i.push(c);if(!i.length)return i;let o=i.map(c=>({...c,userGroups:[...c?.userGroups||[],e]}));if(await rr.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes("CREATOR")){let l=(await Ah.creatorsInList(i)).filter(p=>p).length,f=i.length-l;f&&await sj(0,f)}let u=[];for(let c of t)u.push(Ht.user.invalidateUser(c));return await Promise.all(u),await Tt.group.usersAdded(o.length,r),o}a(fj,"addUsers");async function dee(e,t){let r=await Xn.get(e),n=await rr.bulkGetGlobalUsersById(t),i=[];for(let u of n){if(!u.userGroups||!u.userGroups.includes(e))continue;let c=u.userGroups.indexOf(e);u.userGroups.splice(c,1),i.push(u)}if(await rr.bulkUpdateGlobalUsers(i),Object.values(r.roles||{}).includes("CREATOR")){let c=(await Ah.creatorsInList(i)).filter(f=>f).length,l=i.length-c;l&&await l_(0,l)}let s=[];for(let u of t)s.push(Ht.user.invalidateUser(u));return await Promise.all(s),i.length&&await Tt.group.usersDeleted(i.length,r),i}a(dee,"removeUsers");async function hee(e,t){let r=await f_(e);if(r.roles||(r.roles={}),t.appsToAdd)for(let n of t.appsToAdd)r.roles[n.appId]=n.roleId;if(t.appsToRemove)for(let n of t.appsToRemove)delete r.roles[n.appId];if(r.builder={apps:Object.entries(r.roles).filter(([n,i])=>i==="CREATOR").map(([n])=>n)},r.builder.apps.length&&!eee())throw new Re("Feature not enabled, please check license",400);return await lj(r)}a(hee,"updateGroupApps");async function kyr(e){let t=await _O(),r=[];for(let n of t)!n.roles||!n.roles[e]||(delete n.roles[e],r.push(n));return await Xn.bulkSave(r)}a(kyr,"cleanupApp");async function Cyr(){if(!await tee()){let e=vt.getGlobalDB(),r=(await _O()||[]).filter(n=>Object.values(n?.roles||{}).includes("CREATOR"));for(let n of r){let i=await Xn.getGroupUsers(n._id),s=(await Promise.all(i.map(f=>e.get(f._id)))).map(f=>({...f,userGroups:f.userGroups.filter(p=>p!==n._id)})),c=(await Ah.creatorsInList(s)).filter(f=>f).length,l=i.length-c;await Xn.save({...n,roles:{}}),l&&await l_(0,l)}}}a(Cyr,"adjustGroupCreatorsQuotas");rr.UserDB.init(Mn,on,ms);var Gu=rr.UserDB;var p_={};oe(p_,{logs:()=>_ee});var _ee={};oe(_ee,{logSearch:()=>Byr,oldestLogDate:()=>jVe,storeLog:()=>qyr});async function NVe(e,t){let r,n=5,i=!1,o,s=!0;for(;n>0;n--)try{s?o=await e():o=await exports.randomDelay(e),i=!0;break}catch(u){r=u}return i||kt.logWarn(`Failed to backoff: ${t}`,r),o}a(NVe,"backOff");var{SEPARATOR:zp,UNICODE_MAX:Dyr,DocumentType:LVe,AutomationViewMode:gee,ViewName:Pyr,getQueryIndex:Nyr}=ne,Lyr=new Date(0).toISOString(),Fyr=100,yee=a(async()=>KU("automationLogRetentionDays"),"oldestLogDate");function FVe(e,t,{status:r,automationId:n}={},i={}){let o=n?`${n}${zp}`:"",s=r?`${r}${zp}`:"",u;return r&&n?u=`${gee.ALL}${zp}${s}${o}`:r?u=`${gee.STATUS}${zp}${s}`:n?u=`${gee.AUTOMATION}${zp}${o}`:u=`${LVe.AUTOMATION_LOG}${zp}`,{...i,descending:!0,startkey:`${u}${t}${Dyr}`,endkey:`${u}${e}`}}a(FVe,"getAutomationLogParams");function Uyr(e,t,r){return`${LVe.AUTOMATION_LOG}${zp}${e}${zp}${r}${zp}${t}`}a(Uyr,"generateAutomationLogID");async function bee(e,t,r={docs:!0}){let n=W.getProdWorkspaceDB();await n.exists()||(n=W.getDevWorkspaceDB());let i={status:r.status},o=r?.limit?r.limit:r?.paginate?9+1:void 0,s=FVe(e,t,i,{include_docs:r.docs,limit:o});r?.page&&(s.startkey=r.page);let u=await n.allDocs(s);return pO(u,{paginate:r?.paginate,pageSize:9})}a(bee,"getAllLogs");async function vee(e,t,r={}){let n=W.getProdWorkspaceDB();await n.exists()||(n=W.getDevWorkspaceDB());let i;try{let o={automationId:r?.automationId,status:r?.status},s=FVe(e,t,o,{include_docs:!0,limit:9+1});r?.page&&(s.startkey=r.page),i=await n.query(Nyr(Pyr.AUTOMATION_LOGS),s)}catch(o){if(o!=null&&(o.name==="not_found"||o.error==="not_found"))return await JHe(),vee(e,t,r);throw o}return pO(i,{paginate:!0,pageSize:9})}a(vee,"getLogsByView");async function UVe(e,t){let r=W.getProdWorkspaceDB(),n=e._id,i=e.name,o=new Date().toISOString(),s=Uyr(o,t.status,n),u={...t,automationId:n,status:t.status,automationName:i,createdAt:o,_id:s};return await r.put(u),s}a(UVe,"writeLog");async function wee(e,{clearing:t}={clearing:!1}){let r=W.getProdWorkspaceDB();await NVe(async()=>{let n=await r.get(ne.DocumentType.WORKSPACE_METADATA);for(let i of e){let o=i.split(ne.SEPARATOR),s=`${o[o.length-3]}${ne.SEPARATOR}${o[o.length-2]}`,u={};n.automationErrors&&(u=n.automationErrors),Array.isArray(u[s])||(u[s]=[]);let c=u[s].indexOf(i);t&&c!==-1?u[s].splice(c,1):u[s].push(i),u[s].length===0&&delete u[s],n.automationErrors=u}await r.put(n),await Ht.workspace.invalidateWorkspaceMetadata(n.appId,n)},"Failed to update app metadata with automation log error")}a(wee,"updateAppMetadataWithErrors");async function jyr(){let e=await yee();try{return await bee(Lyr,e,{docs:!1,paginate:!1,limit:Fyr})}catch{return{data:[],hasNextPage:!1}}}a(jyr,"getExpiredLogs");async function Eee(){let e=W.getProdWorkspaceDB();try{let t=await jyr();if(!t.data||t.data.length===0)return;let r=t.data.map(i=>({_id:i.id,_rev:i.value.rev,_deleted:!0})),n=t.data.filter(i=>{let o=i.id.split(ne.SEPARATOR);return o[o.length-1]==="error"}).map(i=>i.id);await e.bulkDocs(r),n.length&&await wee(n,{clearing:!0})}catch(t){kt.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}a(Eee,"clearOldHistory");var jVe=yee;async function Myr(e,t,r,n){let i,o=new Date().toISOString(),s=await jVe();return(!e||e<s)&&(e=s),r||t?i=await vee(e,o,{automationId:r,status:t,page:n}):i=await bee(e,o,{status:t,page:n,docs:!0,paginate:!0}),i}a(Myr,"getLogs");async function Byr(e){return await Eee(),await Myr(e.startDate,e.status,e.automationId,e.page)}a(Byr,"logSearch");async function qyr(e,t){if(!ne.isProdWorkspaceID(W.getWorkspaceId()))return;let r=await UVe(e,t);t.status==="error"&&await wee([r]),await Eee()}a(qyr,"storeLog");var See={};oe(See,{checkPluginQuotas:()=>Wyr,deletePlugin:()=>zyr,storePlugin:()=>$yr});var MVe=te(require("fs")),BVe=require("path");function qVe(e,t){return MVe.default.readFileSync((0,BVe.join)(e,t),"utf8")}a(qVe,"loadJSFile");async function $yr(metadata,directory,source){let db=vt.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=gt.getPluginS3Dir(name),files=await gt.uploadDirectory(gt.ObjectStoreBuckets.PLUGINS,directory,bucketPath),jsFile=files.find(e=>e.name.endsWith(".js")),iconFile=files.find(e=>e.name.endsWith(".svg"));if(!jsFile)throw new Error("Plugin missing .js file.");if(metadata.schema.type==="datasource"){let js=qVe(directory,jsFile.name);try{eval(js)}catch(e){let t=e?.message?e.message:JSON.stringify(e);throw new Error(`JS invalid: ${t}`)}}let iconFileName=iconFile?iconFile.name:null,pluginId=ne.generatePluginID(name),rev;try{rev=(await db.get(pluginId))._rev}catch(e){rev=void 0}let doc={_id:pluginId,_rev:rev,...metadata,name,version,hash,description,source};iconFileName&&(doc.iconFileName=iconFileName),source&&(doc={...doc,source});let write=a(async()=>{let e=await db.put(doc);return await Tt.plugin.imported(doc),{...doc,_rev:e.rev}},"write");return rev?await write():await cee(write)}a($yr,"storePlugin");async function zyr(e){let t=vt.getGlobalDB();try{let r=await t.get(e),n=gt.getPluginS3Dir(r.name);await gt.deleteFolder(gt.ObjectStoreBuckets.PLUGINS,n),await t.remove(e,r._rev),await Tt.plugin.deleted(r),await lee()}catch(r){let n=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${n}`)}}a(zyr,"deletePlugin");async function Wyr(){let e=vt.getGlobalDB();try{let r=(await e.allDocs(ne.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await fee(r)}catch(t){kt.logAlert("Unable to retrieve plugins for quota check",t)}}a(Wyr,"checkPluginQuotas");var rl={};oe(rl,{fetch:()=>Hyr,fetchValues:()=>Vyr,isEncryptionKeyAvailable:()=>Gyr,isValid:()=>WVe,remove:()=>Qyr,update:()=>Kyr});function Gyr(){return!!V.ENCRYPTION_KEY}a(Gyr,"isEncryptionKeyAvailable");async function Hyr(){let e=await Vy.get();return Object.keys(e.variables)}a(Hyr,"fetch");async function Vyr(e){let r=(await Vy.get()).variables,n={};for(let[i,o]of Object.entries(r))switch(e){case"development":n[i]=o.development;break;case"production":default:n[i]=o.production;break}return n}a(Vyr,"fetchValues");async function zVe(e){if(!(await em.cache.getCachedLicense()).features.includes("environmentVariables"))throw new Error("User does not have access to environment variables feature.");let r=await Vy.get();r.variables=e(r.variables),await Vy.update(r)}a(zVe,"changeValues");async function Kyr(e,t){if(WVe(e))await zVe(n=>(n[e]=t,n));else throw new Error("Variable name has characters that are not allowed")}a(Kyr,"update");async function Qyr(e){await zVe(t=>(delete t[e],t))}a(Qyr,"remove");function WVe(e){return/^[a-zA-Z0-9-_]+$/.test(e)}a(WVe,"isValid");var mb={};oe(mb,{definitions:()=>r0r,download:()=>t0r,fetch:()=>e0r,write:()=>XSr});var GVe=require("memorystream"),HVe=new Vt.Sql("sqlite3");async function Yyr(e,t,r){let n={operation:"READ",table:fO.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:"descending",type:"string"}}},i=HVe._query(n);if(Array.isArray(i))throw new Error("Cannot execute multiple queries for audit log search");return{sql:i.sql,bindings:i.bindings}}a(Yyr,"getAuditLogSqlQuery");function Jyr(e){return`al${Me}${e}${Me}${Cr.newid()}`}a(Jyr,"generateAuditLogID");async function VVe(e){e._id||(e._id=Jyr(e.timestamp)),e.type||(e.type=xm);try{let r=await W.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){kt.logAlert("Failed to write audit log",t)}}a(VVe,"save");async function xee(e,t,r){t||(t=1);let n=W.getAuditLogsDB();try{let i=9+1,o=await Yyr(e,t,i),s=fO.searchTable(),u=HVe.convertJsonStringColumns(s,await n.sql(o.sql,o.bindings)),c;u.length>i&&(c=u.pop());let l={rows:u,hasNextPage:!!c};return l.hasNextPage&&(l.bookmark=t+1),l}catch(i){if(i.status===404&&!r?.isRetry)return await Xyr(),await FHe(),await xee(e,t,{isRetry:!0});throw i}}a(xee,"searchSQL");async function Xyr(){let e=W.getAuditLogsDB(),r=(await e.allDocs(ne.getDocParams("al",null,{include_docs:!0}))).rows.map(n=>n.doc).filter(n=>n&&!n.type).map(n=>({...n,type:xm}));await e.bulkDocs(r)}a(Xyr,"migrate");function KVe(e){let t=W.getAuditLogsDB(),r=new GVe,n=t.dump(r,{filter:o=>{let s=o;if(!s._id?.startsWith("al"))return!1;let u=!0,c=a((l,f)=>{!l||l.length===0||(u=!!(u&&f&&l.includes(f)))},"matcher");if(c(e.userIds,s.userId),c(e.appIds,s.appId),c(e.events,s.event),(e.startDate||e.endDate)&&(u=u&&s.timestamp>=e.startDate&&s.timestamp<=e.endDate),e.fullSearch){let l=JSON.stringify(o);u=u&&l.includes(e.fullSearch)}return u}}),i=new GVe;return r.on("data",o=>{let s=JSON.parse(Buffer.from(o).toString());if(Array.isArray(s.docs)){let u="";for(let c of s.docs)u+=JSON.stringify(c)+`
570
+ `;function mO(e){return BZ.default.verify(e,jgr,{algorithms:["RS256"]})}a(mO,"verifyLicenseToken");function Mgr(e,t){return BZ.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}a(Mgr,"sign");var ej={};oe(ej,{getFeatures:()=>qZ});var Bgr={free:[...zu.SELF_FREE_LICENSE.features],premium:void 0,premium_plus:["appBackups","branding","syncAutomations","appBuilders","viewPermissions","triggerAutomationRun","viewReadonlyColumns","aiCustomConfigs","pdf","budibaseAI"],premium_plus_trial:["appBackups","branding","syncAutomations","appBuilders","viewPermissions","triggerAutomationRun","viewReadonlyColumns","aiCustomConfigs","pdf","budibaseAI"],pro:["userGroups","appBackups"],team:["userGroups","appBackups"],business:["userGroups","appBackups","environmentVariables","auditLogs","branding","syncAutomations","appBuilders","expandedPublicApi","viewPermissions","pdf","budibaseAI"],enterprise_basic:["userGroups","appBackups","environmentVariables","enforceableSSO","auditLogs","branding","syncAutomations","offline","appBuilders","expandedPublicApi","viewPermissions","triggerAutomationRun","scim","viewReadonlyColumns","aiCustomConfigs","pwa","customAppScripts","pdf","budibaseAI","recaptcha","pkceOidc"],enterprise_basic_trial:["userGroups","appBackups","environmentVariables","enforceableSSO","branding","syncAutomations","appBuilders","expandedPublicApi","viewPermissions","triggerAutomationRun","scim","viewReadonlyColumns","aiCustomConfigs","pwa","customAppScripts","pdf","budibaseAI","recaptcha","pkceOidc"],enterprise:["userGroups","appBackups","environmentVariables","enforceableSSO","auditLogs","branding","syncAutomations","offline","appBuilders","expandedPublicApi","viewPermissions","triggerAutomationRun","scim","viewReadonlyColumns","aiCustomConfigs","pwa","customAppScripts","pdf","budibaseAI","recaptcha","pkceOidc"]},qgr={free:[...zu.CLOUD_FREE_LICENSE.features],premium:["appBackups","branding","appBuilders","viewPermissions","pdf"],premium_plus:["appBackups","branding","syncAutomations","appBuilders","viewPermissions","triggerAutomationRun","viewReadonlyColumns","budibaseAI","pdf"],premium_plus_trial:["appBackups","branding","syncAutomations","appBuilders","viewPermissions","triggerAutomationRun","viewReadonlyColumns","budibaseAI","pdf"],pro:["userGroups","appBackups","branding"],team:["userGroups","appBackups","branding"],business:["userGroups","appBackups","environmentVariables","auditLogs","branding","syncAutomations","appBuilders","expandedPublicApi","viewPermissions","budibaseAI","pdf"],enterprise_basic:["userGroups","appBackups","environmentVariables","enforceableSSO","auditLogs","branding","syncAutomations","offline","appBuilders","expandedPublicApi","viewPermissions","triggerAutomationRun","scim","viewReadonlyColumns","aiCustomConfigs","budibaseAI","pwa","customAppScripts","pdf","recaptcha","pkceOidc"],enterprise_basic_trial:["userGroups","appBackups","environmentVariables","enforceableSSO","branding","syncAutomations","appBuilders","expandedPublicApi","viewPermissions","triggerAutomationRun","scim","viewReadonlyColumns","aiCustomConfigs","budibaseAI","pwa","customAppScripts","pdf","recaptcha","pkceOidc"],enterprise:["userGroups","appBackups","environmentVariables","enforceableSSO","auditLogs","branding","syncAutomations","appBuilders","expandedPublicApi","viewPermissions","triggerAutomationRun","scim","viewReadonlyColumns","aiCustomConfigs","budibaseAI","pwa","customAppScripts","pdf","recaptcha","pkceOidc"]};function qZ(e,t){let r=[];function n(i){let o=i[t];if(!o)throw new Error(`Features do not exist for planType=${t} and hosting=${e}`);return o}switch(a(n,"readFeatures"),e){case"self":r=n(Bgr);break;case"cloud":r=n(qgr);break}return r}a(qZ,"getFeatures");var tj={};oe(tj,{UNLIMITED:()=>ye,getQuotas:()=>$Z});var ee=Zh,lVe=zu,ye=-1,yO=a(e=>e*1e6,"millions"),$gr={free:{...lVe.CLOUD_FREE_LICENSE.quotas},premium:{usage:{monthly:{...ee.queries(ye),...ee.automations(1e3),...ee.budibaseAICredits(0),...ee.actions(ye)},static:{...ee.rows(1e4),...ee.apps(ye),...ee.users(ye),...ee.creators(ye),...ee.userGroups(0),...ee.plugins(ye),...ee.customAIConfigurations(0)}},constant:{...ee.automationLogRetentionDays(7),...ee.appBackupRetentionDays(7)}},premium_plus:{usage:{monthly:{...ee.queries(ye),...ee.automations(5e3),...ee.budibaseAICredits(yO(2)),...ee.actions(ye)},static:{...ee.rows(25e3),...ee.apps(ye),...ee.users(ye),...ee.creators(ye),...ee.userGroups(0),...ee.plugins(ye),...ee.customAIConfigurations(1)}},constant:{...ee.automationLogRetentionDays(30),...ee.appBackupRetentionDays(30)}},premium_plus_trial:{usage:{monthly:{...ee.queries(ye),...ee.automations(5e3),...ee.budibaseAICredits(yO(2)),...ee.actions(ye)},static:{...ee.rows(25e3),...ee.apps(ye),...ee.users(ye),...ee.creators(ye),...ee.userGroups(0),...ee.plugins(ye),...ee.customAIConfigurations(1)}},constant:{...ee.automationLogRetentionDays(30),...ee.appBackupRetentionDays(30)}},pro:{usage:{monthly:{...ee.queries(ye),...ee.automations(1e3),...ee.budibaseAICredits(0),...ee.actions(ye)},static:{...ee.rows(ye),...ee.apps(ye),...ee.users(ye),...ee.creators(ye),...ee.userGroups(5),...ee.plugins(ye),...ee.customAIConfigurations(0)}},constant:{...ee.automationLogRetentionDays(7),...ee.appBackupRetentionDays(7)}},team:{usage:{monthly:{...ee.queries(ye),...ee.automations(5e3),...ee.budibaseAICredits(0),...ee.actions(ye)},static:{...ee.rows(ye),...ee.apps(ye),...ee.users(ye),...ee.creators(ye),...ee.userGroups(10),...ee.plugins(ye),...ee.customAIConfigurations(0)}},constant:{...ee.automationLogRetentionDays(30),...ee.appBackupRetentionDays(90)}},business:{usage:{monthly:{...ee.queries(ye),...ee.automations(1e4),...ee.budibaseAICredits(0),...ee.actions(ye)},static:{...ee.rows(5e4),...ee.apps(ye),...ee.users(ye),...ee.creators(ye),...ee.userGroups(50),...ee.plugins(ye),...ee.customAIConfigurations(0)}},constant:{...ee.automationLogRetentionDays(365),...ee.appBackupRetentionDays(365)}},enterprise_basic:{usage:{monthly:{...ee.queries(ye),...ee.automations(ye),...ee.budibaseAICredits(yO(4)),...ee.actions(ye)},static:{...ee.rows(ye),...ee.apps(ye),...ee.users(ye),...ee.creators(ye),...ee.userGroups(ye),...ee.plugins(ye),...ee.customAIConfigurations(ye)}},constant:{...ee.automationLogRetentionDays(ye),...ee.appBackupRetentionDays(ye)}},enterprise_basic_trial:{usage:{monthly:{...ee.queries(ye),...ee.automations(ye),...ee.budibaseAICredits(yO(4)),...ee.actions(ye)},static:{...ee.rows(ye),...ee.apps(ye),...ee.users(ye),...ee.creators(ye),...ee.userGroups(ye),...ee.plugins(ye),...ee.customAIConfigurations(ye)}},constant:{...ee.automationLogRetentionDays(15),...ee.appBackupRetentionDays(15)}},enterprise:{usage:{monthly:{...ee.queries(ye),...ee.automations(ye),...ee.budibaseAICredits(yO(4)),...ee.actions(ye)},static:{...ee.rows(ye),...ee.apps(ye),...ee.users(ye),...ee.creators(ye),...ee.userGroups(ye),...ee.plugins(ye),...ee.customAIConfigurations(ye)}},constant:{...ee.automationLogRetentionDays(ye),...ee.appBackupRetentionDays(ye)}}},zgr={free:{...lVe.SELF_FREE_LICENSE.quotas},premium:void 0,premium_plus:{usage:{monthly:{...ee.queries(ye),...ee.automations(ye),...ee.budibaseAICredits(0),...ee.actions(ye)},static:{...ee.rows(ye),...ee.apps(ye),...ee.users(ye),...ee.creators(ye),...ee.userGroups(0),...ee.plugins(ye),...ee.customAIConfigurations(1)}},constant:{...ee.automationLogRetentionDays(30),...ee.appBackupRetentionDays(30)}},premium_plus_trial:{usage:{monthly:{...ee.queries(ye),...ee.automations(ye),...ee.budibaseAICredits(0),...ee.actions(ye)},static:{...ee.rows(ye),...ee.apps(ye),...ee.users(ye),...ee.creators(ye),...ee.userGroups(0),...ee.plugins(ye),...ee.customAIConfigurations(1)}},constant:{...ee.automationLogRetentionDays(30),...ee.appBackupRetentionDays(30)}},pro:{usage:{monthly:{...ee.queries(ye),...ee.automations(ye),...ee.budibaseAICredits(0),...ee.actions(ye)},static:{...ee.rows(ye),...ee.apps(ye),...ee.users(ye),...ee.creators(ye),...ee.userGroups(5),...ee.plugins(ye),...ee.customAIConfigurations(0)}},constant:{...ee.automationLogRetentionDays(7),...ee.appBackupRetentionDays(7)}},team:{usage:{monthly:{...ee.queries(ye),...ee.automations(ye),...ee.budibaseAICredits(0),...ee.actions(ye)},static:{...ee.rows(ye),...ee.apps(ye),...ee.users(ye),...ee.creators(ye),...ee.userGroups(10),...ee.plugins(ye),...ee.customAIConfigurations(0)}},constant:{...ee.automationLogRetentionDays(30),...ee.appBackupRetentionDays(90)}},business:{usage:{monthly:{...ee.queries(ye),...ee.automations(ye),...ee.budibaseAICredits(0),...ee.actions(ye)},static:{...ee.rows(ye),...ee.apps(ye),...ee.users(ye),...ee.creators(ye),...ee.userGroups(50),...ee.plugins(ye),...ee.customAIConfigurations(0)}},constant:{...ee.automationLogRetentionDays(90),...ee.appBackupRetentionDays(365)}},enterprise_basic:{usage:{monthly:{...ee.queries(ye),...ee.automations(ye),...ee.budibaseAICredits(0),...ee.actions(ye)},static:{...ee.rows(ye),...ee.apps(ye),...ee.users(ye),...ee.creators(ye),...ee.userGroups(ye),...ee.plugins(ye),...ee.customAIConfigurations(ye)}},constant:{...ee.automationLogRetentionDays(ye),...ee.appBackupRetentionDays(ye)}},enterprise_basic_trial:{usage:{monthly:{...ee.queries(ye),...ee.automations(ye),...ee.budibaseAICredits(0),...ee.actions(ye)},static:{...ee.rows(ye),...ee.apps(ye),...ee.users(ye),...ee.creators(ye),...ee.userGroups(ye),...ee.plugins(ye),...ee.customAIConfigurations(ye)}},constant:{...ee.automationLogRetentionDays(15),...ee.appBackupRetentionDays(15)}},enterprise:{usage:{monthly:{...ee.queries(ye),...ee.automations(ye),...ee.budibaseAICredits(0),...ee.actions(ye)},static:{...ee.rows(ye),...ee.apps(ye),...ee.users(ye),...ee.creators(ye),...ee.userGroups(ye),...ee.plugins(ye),...ee.customAIConfigurations(ye)}},constant:{...ee.automationLogRetentionDays(ye),...ee.appBackupRetentionDays(ye)}}};function $Z(e,t){let r;function n(i){let o=i[t];if(!o)throw new Error(`Quotas do not exist for planType=${t} and hosting=${e}`);return o}switch(a(n,"readQuotas"),e){case"self":r=n(zgr);break;case"cloud":r=n($gr);break}return JSON.parse(JSON.stringify(r))}a($Z,"getQuotas");var bO={};oe(bO,{encoding:()=>u_,workspaceExists:()=>Wgr});async function Wgr(e){return(await ne.getAllWorkspaces({all:!0,idsOnly:!0})).includes(e)}a(Wgr,"workspaceExists");var u_={};oe(u_,{base64ToObject:()=>Hgr,objectToBase64:()=>Ggr});function Ggr(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}a(Ggr,"objectToBase64");function Hgr(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}a(Hgr,"base64ToObject");var fVe=te(require("lodash/union")),pVe=te(require("lodash/merge"));async function Vgr(e){await $u.save({offlineLicenseToken:e}),await Ky()}a(Vgr,"activateOfflineLicenseToken");async function Kgr(){await $u.save({offlineLicenseToken:void 0}),await Ky()}a(Kgr,"deleteOfflineLicenseToken");async function dVe(){return(await $u.get()).offlineLicenseToken}a(dVe,"getOfflineLicenseToken");async function zZ(){let t=(await xh.getInstall()).installId,r=W.getTenantId(),n=await Tt.identification.getUniqueTenantId(r);return{installId:t,tenantId:n}}a(zZ,"getIdentifier");async function Qgr(){let e=await zZ();return u_.objectToBase64(e)}a(Qgr,"getIdentifierBase64");function Ygr(e){return u_.base64ToObject(e)}a(Ygr,"getIdentifierFromBase64");function hVe(e){let t=Date.now(),r=new Date(e.expireAt).getTime();if(t>r)throw new Error(`Offline license has expired. expireAt=${e.expireAt}`)}a(hVe,"verifyExpiry");async function mVe(e){let t=await zZ();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}a(mVe,"verifyInstallation");function gVe(e){let t=e.plan.type,r="self",n=qZ(r,t),i=$Z(r,t);return e.features=(0,fVe.default)(e.features,n),e.quotas=(0,pVe.default)(e.quotas,i),e}a(gVe,"enrichLicense");async function WZ(){try{let e=await dVe();if(e){let t=await mO(e);return hVe(t),await mVe(t),gVe(t)}}catch(e){console.error("Error retrieving offline license",e)}}a(WZ,"getOfflineLicense");var wO={};oe(wO,{deleteDevLicense:()=>tyr,getOfflineLicense:()=>Zgr,writeDevLicenseToDisk:()=>eyr});var HZ=require("path"),yVe=require("os"),Qy=te(require("fs"));var Jgr=V.isTest()?".budibase-test":".budibase",GZ=(0,HZ.join)((0,yVe.tmpdir)(),Jgr),Xgr="dev_license.txt",vO=(0,HZ.join)(GZ,Xgr);if(!Qy.default.existsSync(GZ))try{Qy.default.mkdirSync(GZ)}catch{}function Zgr(){try{if(Qy.default.existsSync(vO)){let e=Qy.default.readFileSync(vO,{encoding:"utf-8"});return mO(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}a(Zgr,"getOfflineLicense");function eyr(e){console.log(`Writing license to: ${vO}`),Qy.default.writeFileSync(vO,e,{encoding:"utf-8"})}a(eyr,"writeDevLicenseToDisk");function tyr(){Qy.default.rmSync(vO,{force:!0})}a(tyr,"deleteDevLicense");var bVe=require("dd-trace");var VZ=a(async()=>await bVe.tracer.trace("getLicense",async e=>{if(V.OFFLINE_MODE)return e.addTags({offline:!0}),WZ();let t=await s_();return t||(e.addTags({offlineFallback:!0}),t=wO.getOfflineLicense()),t}),"getLicense"),vVe=a(e=>jZ(e),"getLicenseFromKey"),KZ=a(()=>V.SELF_HOSTED?zu.SELF_FREE_LICENSE:zu.CLOUD_FREE_LICENSE,"getFreeLicense");var YZ={};oe(YZ,{activateLicenseKey:()=>ryr,deleteLicenseKey:()=>nyr,getLicenseKey:()=>nj});var QZ=te(require("dd-trace"));async function ryr(e){await MZ(e),await $u.save({licenseKey:e}),await Ky()}a(ryr,"activateLicenseKey");async function nj(){return await QZ.default.trace("getLicenseKey",async e=>{let t=await $u.get();return e.addTags({licenseKey:t.licenseKey}),t.licenseKey})}a(nj,"getLicenseKey");async function nyr(){return await QZ.default.trace("deleteLicenseKey",async()=>{await $u.save({licenseKey:void 0}),await Ky()})}a(nyr,"deleteLicenseKey");var ij=te(require("dd-trace"));var wVe=3600,Ky=a(async()=>{await SVe(),await _Ve()},"refresh"),EVe=a(async(e,t)=>{let{populateLicense:r=VZ,populateFreeLicense:n=KZ}=t||{};return await ij.default.trace("getCachedLicense",async i=>{let o=W.getLicense();if(o)return i.addTags({foundInContext:!0,features:o.features,plan:o.plan,quotas:o.quotas}),o;let s=vt.getTenantId(),u=await bZ(),c=await u.get(s);return i.addTags({tenantId:s,foundInCache:!!c}),c?(i.addTags({foundInCache:!0,refreshedAt:c.refreshedAt,features:c.features,plan:c.plan,quotas:c.quotas}),c):(c=await ij.default.trace("populateLicense",async()=>await r(s)),i.addTags({populatedLicense:!!c}),c||(c=ij.default.trace("populateFreeLicense",()=>n(e,s)),i.addTags({populatedFreeLicense:!!c})),c.refreshedAt=new Date().toISOString(),i.addTags({refreshedAt:c.refreshedAt,features:c.features,plan:c.plan,quotas:c.quotas,expirySeconds:wVe}),await u.store(s,c,wVe),c)})},"_getCachedLicense");V.isJest()&&(EVe=jest.fn());var _Ve=EVe,SVe=a(async()=>{let e=vt.getTenantId();await(await bZ()).delete(e)},"invalidate");async function Ga(e,t){Array.isArray(e)||(e=[e]),t||(t=await tl.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}a(Ga,"areFeaturesEnabled");async function aj(e,t){if(!await Ga(e,t))throw new tE(`${e} is not currently enabled`,e)}a(aj,"checkFeature");async function JZ(e,t){if(!await Ga(e,t)){let r=e.join(", ");throw new tE(`${r} are not currently enabled`,r)}}a(JZ,"checkFeatures");function qo(e){return async(...t)=>(await aj("appBackups"),e(...t))}a(qo,"checkBackups");async function XZ(){return Ga("appBackups")}a(XZ,"isBackupsEnabled");async function ZZ(){return Ga("branding")}a(ZZ,"isBrandingEnabled");async function xVe(){return Ga("enforceableSSO")}a(xVe,"isEnforceableSSO");async function ayr(){return Ga("syncAutomations")}a(ayr,"isSyncAutomationsEnabled");async function oyr(){return Ga("triggerAutomationRun")}a(oyr,"isTriggerAutomationRunEnabled");async function eee(){return Ga("appBuilders")}a(eee,"isAppBuildersEnabled");async function oj(){return Ga("auditLogs")}a(oj,"isAuditLogsEnabled");async function tee(){return Ga("userGroups")}a(tee,"isUserGroupsEnabled");function syr(){return Ga("pwa")}a(syr,"isPWAEnabled");function uyr(){return Ga("recaptcha")}a(uyr,"isRecaptchaEnabled");var cyr=a(()=>Ga("pkceOidc"),"isPkceOidcEnabled");async function qp(){return Ga("expandedPublicApi")}a(qp,"isExpandedPublicApiEnabled");async function lyr(e){if(V.ENABLE_SSO_MAINTENANCE_MODE||!await xVe())return!1;let r;return e?.config?r=e.config:r=await ja.getSettingsConfig(),!!r.isSSOEnforced}a(lyr,"isSSOEnforced");var ree=a(async()=>{let e="scim",t=await Ga(e),r=await ja.getSCIMConfig();if(!t||!r?.enabled)throw new tE(`${e} is not currently enabled`,e);return!0},"checkSCIM");async function fyr(){return Ga("viewPermissions")}a(fyr,"isViewPermissionEnabled");async function pyr(){return Ga("viewReadonlyColumns")}a(pyr,"isViewReadonlyColumnsEnabled");var dyr={faviconUrl:void 0,faviconUrlEtag:void 0,emailBrandingEnabled:!0,platformTitle:void 0,loginHeading:void 0,loginButton:void 0,metaDescription:void 0,metaImageUrl:void 0,metaTitle:void 0};async function hyr(e){return await ZZ()?{faviconUrl:e.faviconUrl,faviconUrlEtag:e.faviconUrlEtag,emailBrandingEnabled:e.emailBrandingEnabled,platformTitle:e.platformTitle,loginHeading:e.loginHeading,loginButton:e.loginButton,metaDescription:e.metaDescription,metaImageUrl:e.metaImageUrl,metaTitle:e.metaTitle}:dyr}a(hyr,"getBrandingConfig");var aee={};oe(aee,{enrichAIConfig:()=>iee});var myr="budibase_ai";async function iee(e){if(V.SELF_HOSTED)return e;for(let t of Object.values(e.config))if(t.provider==="BudibaseAI")return e;return e.config[myr]={provider:"BudibaseAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-5-mini",name:"Budibase AI"},e}a(iee,"enrichAIConfig");var Mn={};oe(Mn,{addAction:()=>wyr,addApp:()=>Eyr,addAutomation:()=>Ryr,addGroup:()=>see,addPlugin:()=>cee,addRow:()=>Syr,addRows:()=>Tyr,addUsers:()=>sj,bustCache:()=>xZ,decrement:()=>$p,decrementMany:()=>EO,getCurrentUsageValues:()=>LHe,getLicensedQuota:()=>AVe,getQuotaUsage:()=>Hy,increment:()=>Ks,incrementBudibaseAICredits:()=>uj,incrementMany:()=>Jy,removeApp:()=>_yr,removeGroup:()=>uee,removePlugin:()=>lee,removeRow:()=>xyr,removeRows:()=>Ayr,removeUsers:()=>l_,set:()=>oee,setAllUsage:()=>AZ,setAppUsageValue:()=>TZ,setUsage:()=>DHe,setUsagePerApp:()=>PHe,updatePluginCount:()=>fee,updateUsage:()=>c_,usageLimitIsExceeded:()=>vyr,utils:()=>QR});var Yy=require("dd-trace");var Ks=a(async(e,t,r)=>await Yy.tracer.trace("quotas.increment",async n=>(n.addTags({name:e,type:t}),await TVe({change:1,name:e,type:t,opts:r}))),"increment"),Jy=a(e=>Yy.tracer.trace("quotas.incrementMany",async()=>TVe(e)),"incrementMany"),TVe=a(async e=>await Yy.tracer.trace("quotas.tryIncrement",async t=>{let r=Array.isArray(e)?e:[e];t.addTags({numActions:r.length}),await c_(r.map(i=>({usageChange:i.change,name:i.name,type:i.type,opts:{dryRun:!0,suppressErrorLog:i.opts?.suppressErrorLog,id:i.opts?.id}})));let n=[];for(let i of r)await Yy.tracer.trace("quotas.incrementMany.fn",async o=>{o.addTags({actionName:i.name,actionType:i.type,actionChange:i.change});let s=i.opts?.fn;s&&n.push(await s())});return await c_(r.map(i=>({usageChange:i.change,name:i.name,type:i.type,opts:{dryRun:!1,valueFn:i.opts?.valueFn,suppressErrorLog:i.opts?.suppressErrorLog,id:i.opts?.id}}))),n[0]}),"tryIncrement"),$p=a((e,t,r={})=>c_({usageChange:-1,name:e,type:t,opts:r}),"decrement"),EO=a(e=>{let t=Array.isArray(e)?e:[e];return c_(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},"decrementMany"),oee=a(async(e,t,r)=>uf.setUsage(r,e,t),"set"),gyr=a((e,t,r)=>{if(e=="static"){let n=r.usageQuota.triggers;return n?n[t]||{}:{}}else{let n=uf.utils.getCurrentMonthString(),i=r.monthly[n].triggers;return i?i[t]||{}:{}}},"getExistingTriggers"),yyr=a(async(e,t,r,n)=>{try{await Mc.doWithLock({type:"try_once",name:"trigger_quota",resource:e,ttl:1e4},async()=>{let i={percentage:r,name:t.name};n&&(i.resetDate=n),await rm.triggerQuota(i)})}catch(i){kt.logAlert("Error triggering quota",i)}},"triggerQuota"),byr=a(async(e,t,r,n)=>{let i=await Hy(),o=e==="monthly"?i.quotaReset:void 0,s=await gyr(e,t,i),u=n.triggers,c=r/n.value*100;c>100&&(c=100);for(let[l,f]of u.entries())if(c>=f&&n.value!==Zh.UNLIMITED){if(!s[f]){s[f]=new Date().toISOString();let d=u[l+1]||100;(!(c>=d)||c===f)&&await yyr(t,n,c,o)}}else s[f]=void 0;return s},"checkTriggers"),c_=a(async e=>{await Yy.tracer.trace("quotas.updateUsage",async t=>{let r=vt.getTenantId(),n=Array.isArray(e)?e:[e];t.addTags({numActions:n.length,tenantId:r});let i,o,s=[],u={},c={},l={},f={};for(let d of n)await Yy.tracer.trace("quotas.updateUsage.action",async h=>{h.addTags({actionName:d.name,actionType:d.type,actionUsageChange:d.usageChange});try{i=W.getWorkspaceId()}catch{}if(qb.includes(d.name)&&!i)throw new Error("App context required for quota update");try{o=await AVe("usage",d.name,d.type),s.push(o);let{total:g,app:y,breakdown:b}=await uf.getCurrentUsageValues(d.type,d.name,d.opts?.id);g+=d.usageChange,y!=null&&(y+=d.usageChange),b!=null&&(b+=d.usageChange);let v={};if(d.opts?.dryRun||(v=await byr(d.type,d.name,g,o),f={...f,[d.name]:v}),o.value!==Zh.UNLIMITED&&g>o.value&&d.usageChange>0)throw new pL(`Licensed ${o.name} of ${o.value} has been exceeded`,o.name);if(g=Math.max(0,g),y&&(y=Math.max(0,y)),b&&(b=Math.max(0,b),l={...l,[d.name]:b}),!d.opts?.dryRun){let w=d.opts?.valueFn;w&&(g=await w(),y=g),u={...u,[d.name]:g},c={...c,[d.name]:y}}}catch(g){throw d.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${d.name}`,g),g}});let p=n.filter(d=>!d.opts?.dryRun).map(d=>({name:d.name,type:d.type,values:{total:u[d.name],app:c[d.name],breakdown:l[d.name],triggers:f[d.name]},opts:{...d.opts,tenantId:r}}));p.length>0&&await uf.setAllUsage(p)})},"updateUsage"),AVe=a(async(e,t,r)=>{let n=await tl.getCachedLicense();if(!n){let i=vt.getTenantId();throw new Error("License not found for tenant id "+i)}if(r&&Xoe(e,r,t))return n.quotas[e][r][t];if(r&&Zoe(e,r,t))return n.quotas[e][r][t];if(ese(e,t))return n.quotas[e][t];throw new Error("Invalid quota type")},"getLicensedQuota"),vyr=a(async({name:e,type:t,usageChange:r})=>{try{return await c_({usageChange:r,name:e,type:t,opts:{dryRun:!0}}),!1}catch(n){if(n.code==="usage_limit_exceeded")return!0;throw n}},"usageLimitIsExceeded");var wyr=a(async e=>Ks("actions","monthly",{fn:e}),"addAction");var RVe=a(async()=>{let e=await ne.getAllWorkspaces({dev:!0});return e?e.length:0},"getDevAppsCount"),Eyr=a(async(e,{appId:t}={})=>Ks("apps","static",{fn:e,valueFn:RVe,id:t}),"addApp"),_yr=a(async({appId:e}={})=>$p("apps","static",{valueFn:RVe,id:e}),"removeApp");var Syr=a(async(e,{tableId:t}={})=>Ks("rows","static",{fn:e,id:t}),"addRow"),xyr=a(async({tableId:e}={})=>$p("rows","static",{id:e}),"removeRow"),Tyr=a(async(e,t,{tableId:r}={})=>Jy({change:e,name:"rows",type:"static",opts:{fn:t,id:r}}),"addRows"),Ayr=a(async(e,{tableId:t}={})=>EO({change:e,name:"rows",type:"static",opts:{id:t}}),"removeRows");var Ryr=a(async(e,{automationId:t}={})=>Ks("automations","monthly",{fn:e,id:t}),"addAutomation");var see=a(async e=>Ks("userGroups","static",{fn:e}),"addGroup"),uee=a(async()=>$p("userGroups","static"),"removeGroup");var cee=a(async e=>Ks("plugins","static",{fn:e}),"addPlugin"),lee=a(async()=>$p("plugins","static"),"removePlugin"),fee=a(async e=>oee("plugins","static",e),"updatePluginCount");var sj=a(async(e,t,r)=>{let n=[{change:e,name:"users",type:"static",opts:{fn:r,valueFn:rr.getUserCount}}];t>0&&n.push({change:t,name:"creators",type:"static",opts:{valueFn:rr.getCreatorCount}});let i=await Jy(n);return await s_(),i},"addUsers"),l_=a(async(e,t)=>{let r=[{change:e,name:"users",type:"static",opts:{valueFn:rr.getUserCount}}];t>0&&r.push({change:t,name:"creators",type:"static",opts:{valueFn:rr.getCreatorCount}}),await EO(r),await s_()},"removeUsers");var uj=a(async e=>Jy({change:e,name:"budibaseAICredits",type:"monthly"}),"incrementBudibaseAICredits");var mee={};oe(mee,{db:()=>Gu});var on={};oe(on,{addUsers:()=>fj,adjustGroupCreatorsQuotas:()=>Cyr,cleanupApp:()=>kyr,enrichUserRolesFromGroups:()=>Iyr,fetch:()=>_O,get:()=>f_,getBulk:()=>PVe,getGroupBuilderAppIds:()=>DVe,getGroupRoleId:()=>Oyr,remove:()=>pee,removeUsers:()=>dee,save:()=>lj,updateGroupApps:()=>hee});var cj=class extends Re{static{a(this,"GroupNameUnavailableError")}constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function kVe(e,t){try{let r=[];for(let u of e)if(u.roles){let c=u.roles[ne.getProdWorkspaceID(t)];c&&r.push(c)}let n=await Promise.all(r.map(async u=>({[u]:await Dr.roleToNumber(u)}))),i,o,s={};n.forEach(u=>{let[c,l]=Object.entries(u)[0];s[c]={roleId:c,roleNum:l}});for(let{roleId:u,roleNum:c}of Object.values(s))(o===void 0||c>o)&&(o=c,i=u);return i}catch(r){throw kt.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}a(kVe,"findHighestRole");async function CVe(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await Xn.getBulk(e,{enriched:!1}),t}a(CVe,"groupList");async function DVe(e,t){if(!e.userGroups)return[];let r=await CVe(e.userGroups,t?.groups),n=t?.appId?ne.getProdWorkspaceID(t?.appId):null,i=[];for(let o of r){let s=o.builder?.apps;n&&s?.includes(n)?i.push(n):n||(i=i.concat(s||[]))}return[...new Set(i)]}a(DVe,"getGroupBuilderAppIds");async function Oyr(e,t,r){if(!e.userGroups)return null;let n=await CVe(e.userGroups,r?.groups),i=ne.getProdWorkspaceID(t);return e.roles?.[i]?e.roles[i]:(n=n.filter(o=>o?.roles?Object.keys(o.roles).includes(i):!1),await kVe(n,t))}a(Oyr,"getGroupRoleId");async function Iyr(e){if(!e||!e.userGroups)return e;let t=await PVe(e.userGroups,{enriched:!1}),r=[];for(let i of t)i?.roles&&(r=r.concat(Object.keys(i.roles)));r=[...new Set(r)];for(let i of r)await W.doInWorkspaceContext(i,async()=>{if(e.roles[i])return;let o=await kVe(t,i);o&&(e.roles[i]=o)});let n=await DVe(e,{groups:t});if(n.length&&!e.builder?.global){let i=e.builder?.apps||[];e.builder={apps:i.concat(n)}}return e}a(Iyr,"enrichUserRolesFromGroups");async function _O(){return await Xn.fetch()}a(_O,"fetch");async function f_(e){return await Xn.get(e)}a(f_,"get");async function PVe(e,t={enriched:!0}){return await Xn.getBulk(e,t)}a(PVe,"getBulk");async function OVe(e){if(await Xn.getByName(e))throw new cj(e)}a(OVe,"guardNameAvailability");async function IVe(e){let t=await Xn.getGroupUsers(e._id);if(!t.length)return 0;let n=await vt.getGlobalDB().getMultiple(t.map(o=>o._id));return(await Ah.creatorsInList(n)).filter(o=>o).length}a(IVe,"getCreatorsCountInGroup");async function lj(e){let t=[],r=!e._id,n=0;if(delete e.users,!e._id)e._id=Xn.generateUserGroupID(),await OVe(e.name),t.push(Tt.group.created(e));else{let o=await Xn.get(e._id);if(o.name!==e.name&&await OVe(e.name),t.push(Tt.group.updated(e)),JSON.stringify(o.roles)!==JSON.stringify(e.roles)){let s=o.users?.length||0,u=0;s>0&&(u=await IVe(o)),Object.values(e.roles).includes("CREATOR")?n=s-u:n=-s,t.push(Tt.group.permissionsEdited(e))}}await Promise.all(t);let i=a(()=>Xn.save(e),"saveGroup");if(r)return await see(i);{let o=await i();if(n>0)await sj(0,n);else if(n<0){let s=await IVe(e),u=Math.abs(n)-s;u>0&&await l_(0,u)}return o}}a(lj,"save");async function pee(e,t){let r;try{r=await Xn.get(e)}catch{throw new Error("Group not found")}let n=Object.values(r.roles||{}).includes("CREATOR"),i=a(()=>{},"recalculateCreatorsQuotasFn");if(n){let s=vt.getGlobalDB(),u=await Xn.getGroupUsers(e),l=(await Promise.all(u.map(h=>s.get(h._id)))).map(h=>({...h,userGroups:h.userGroups.filter(m=>m!==e)})),p=(await Ah.creatorsInList(l)).filter(h=>h).length,d=u.length-p;d&&(i=a(()=>l_(0,d),"recalculateCreatorsQuotasFn"))}let o=await Xn.destroy(e,t);return await Tt.group.deleted(r),await uee(),await i(),o}a(pee,"remove");async function fj(e,t){let r=await Xn.get(e),n=await rr.bulkGetGlobalUsersById(t),i=[];for(let c of n)c.userGroups||(c.userGroups=[]),c.userGroups.includes(e)||i.push(c);if(!i.length)return i;let o=i.map(c=>({...c,userGroups:[...c?.userGroups||[],e]}));if(await rr.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes("CREATOR")){let l=(await Ah.creatorsInList(i)).filter(p=>p).length,f=i.length-l;f&&await sj(0,f)}let u=[];for(let c of t)u.push(Ht.user.invalidateUser(c));return await Promise.all(u),await Tt.group.usersAdded(o.length,r),o}a(fj,"addUsers");async function dee(e,t){let r=await Xn.get(e),n=await rr.bulkGetGlobalUsersById(t),i=[];for(let u of n){if(!u.userGroups||!u.userGroups.includes(e))continue;let c=u.userGroups.indexOf(e);u.userGroups.splice(c,1),i.push(u)}if(await rr.bulkUpdateGlobalUsers(i),Object.values(r.roles||{}).includes("CREATOR")){let c=(await Ah.creatorsInList(i)).filter(f=>f).length,l=i.length-c;l&&await l_(0,l)}let s=[];for(let u of t)s.push(Ht.user.invalidateUser(u));return await Promise.all(s),i.length&&await Tt.group.usersDeleted(i.length,r),i}a(dee,"removeUsers");async function hee(e,t){let r=await f_(e);if(r.roles||(r.roles={}),t.appsToAdd)for(let n of t.appsToAdd)r.roles[n.appId]=n.roleId;if(t.appsToRemove)for(let n of t.appsToRemove)delete r.roles[n.appId];if(r.builder={apps:Object.entries(r.roles).filter(([n,i])=>i==="CREATOR").map(([n])=>n)},r.builder.apps.length&&!eee())throw new Re("Feature not enabled, please check license",400);return await lj(r)}a(hee,"updateGroupApps");async function kyr(e){let t=await _O(),r=[];for(let n of t)!n.roles||!n.roles[e]||(delete n.roles[e],r.push(n));return await Xn.bulkSave(r)}a(kyr,"cleanupApp");async function Cyr(){if(!await tee()){let e=vt.getGlobalDB(),r=(await _O()||[]).filter(n=>Object.values(n?.roles||{}).includes("CREATOR"));for(let n of r){let i=await Xn.getGroupUsers(n._id),s=(await Promise.all(i.map(f=>e.get(f._id)))).map(f=>({...f,userGroups:f.userGroups.filter(p=>p!==n._id)})),c=(await Ah.creatorsInList(s)).filter(f=>f).length,l=i.length-c;await Xn.save({...n,roles:{}}),l&&await l_(0,l)}}}a(Cyr,"adjustGroupCreatorsQuotas");rr.UserDB.init(Mn,on,ms);var Gu=rr.UserDB;var p_={};oe(p_,{logs:()=>_ee});var _ee={};oe(_ee,{logSearch:()=>Byr,oldestLogDate:()=>jVe,storeLog:()=>qyr});async function NVe(e,t){let r,n=5,i=!1,o,s=!0;for(;n>0;n--)try{s?o=await e():o=await exports.randomDelay(e),i=!0;break}catch(u){r=u}return i||kt.logWarn(`Failed to backoff: ${t}`,r),o}a(NVe,"backOff");var{SEPARATOR:zp,UNICODE_MAX:Dyr,DocumentType:LVe,AutomationViewMode:gee,ViewName:Pyr,getQueryIndex:Nyr}=ne,Lyr=new Date(0).toISOString(),Fyr=100,yee=a(async()=>KU("automationLogRetentionDays"),"oldestLogDate");function FVe(e,t,{status:r,automationId:n}={},i={}){let o=n?`${n}${zp}`:"",s=r?`${r}${zp}`:"",u;return r&&n?u=`${gee.ALL}${zp}${s}${o}`:r?u=`${gee.STATUS}${zp}${s}`:n?u=`${gee.AUTOMATION}${zp}${o}`:u=`${LVe.AUTOMATION_LOG}${zp}`,{...i,descending:!0,startkey:`${u}${t}${Dyr}`,endkey:`${u}${e}`}}a(FVe,"getAutomationLogParams");function Uyr(e,t,r){return`${LVe.AUTOMATION_LOG}${zp}${e}${zp}${r}${zp}${t}`}a(Uyr,"generateAutomationLogID");async function bee(e,t,r={docs:!0}){let n=W.getProdWorkspaceDB();await n.exists()||(n=W.getDevWorkspaceDB());let i={status:r.status},o=r?.limit?r.limit:r?.paginate?9+1:void 0,s=FVe(e,t,i,{include_docs:r.docs,limit:o});r?.page&&(s.startkey=r.page);let u=await n.allDocs(s);return pO(u,{paginate:r?.paginate,pageSize:9})}a(bee,"getAllLogs");async function vee(e,t,r={}){let n=W.getProdWorkspaceDB();await n.exists()||(n=W.getDevWorkspaceDB());let i;try{let o={automationId:r?.automationId,status:r?.status},s=FVe(e,t,o,{include_docs:!0,limit:9+1});r?.page&&(s.startkey=r.page),i=await n.query(Nyr(Pyr.AUTOMATION_LOGS),s)}catch(o){if(o!=null&&(o.name==="not_found"||o.error==="not_found"))return await JHe(),vee(e,t,r);throw o}return pO(i,{paginate:!0,pageSize:9})}a(vee,"getLogsByView");async function UVe(e,t){let r=W.getProdWorkspaceDB(),n=e._id,i=e.name,o=new Date().toISOString(),s=Uyr(o,t.status,n),u={...t,automationId:n,status:t.status,automationName:i,createdAt:o,_id:s};return await r.put(u),s}a(UVe,"writeLog");async function wee(e,{clearing:t}={clearing:!1}){let r=W.getProdWorkspaceDB();await NVe(async()=>{let n=await r.get(ne.DocumentType.WORKSPACE_METADATA);for(let i of e){let o=i.split(ne.SEPARATOR),s=`${o[o.length-3]}${ne.SEPARATOR}${o[o.length-2]}`,u={};n.automationErrors&&(u=n.automationErrors),Array.isArray(u[s])||(u[s]=[]);let c=u[s].indexOf(i);t&&c!==-1?u[s].splice(c,1):u[s].push(i),u[s].length===0&&delete u[s],n.automationErrors=u}await r.put(n),await Ht.workspace.invalidateWorkspaceMetadata(n.appId,n)},"Failed to update app metadata with automation log error")}a(wee,"updateAppMetadataWithErrors");async function jyr(){let e=await yee();try{return await bee(Lyr,e,{docs:!1,paginate:!1,limit:Fyr})}catch{return{data:[],hasNextPage:!1}}}a(jyr,"getExpiredLogs");async function Eee(){let e=W.getProdWorkspaceDB();try{let t=await jyr();if(!t.data||t.data.length===0)return;let r=t.data.map(i=>({_id:i.id,_rev:i.value.rev,_deleted:!0})),n=t.data.filter(i=>{let o=i.id.split(ne.SEPARATOR);return o[o.length-1]==="error"}).map(i=>i.id);await e.bulkDocs(r),n.length&&await wee(n,{clearing:!0})}catch(t){kt.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}a(Eee,"clearOldHistory");var jVe=yee;async function Myr(e,t,r,n){let i,o=new Date().toISOString(),s=await jVe();return(!e||e<s)&&(e=s),r||t?i=await vee(e,o,{automationId:r,status:t,page:n}):i=await bee(e,o,{status:t,page:n,docs:!0,paginate:!0}),i}a(Myr,"getLogs");async function Byr(e){return await Eee(),await Myr(e.startDate,e.status,e.automationId,e.page)}a(Byr,"logSearch");async function qyr(e,t){if(!ne.isProdWorkspaceID(W.getWorkspaceId()))return;let r=await UVe(e,t);t.status==="error"&&await wee([r]),await Eee()}a(qyr,"storeLog");var See={};oe(See,{checkPluginQuotas:()=>Wyr,deletePlugin:()=>zyr,storePlugin:()=>$yr});var MVe=te(require("fs")),BVe=require("path");function qVe(e,t){return MVe.default.readFileSync((0,BVe.join)(e,t),"utf8")}a(qVe,"loadJSFile");async function $yr(metadata,directory,source){let db=vt.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=gt.getPluginS3Dir(name),files=await gt.uploadDirectory(gt.ObjectStoreBuckets.PLUGINS,directory,bucketPath),jsFile=files.find(e=>e.name.endsWith(".js")),iconFile=files.find(e=>e.name.endsWith(".svg"));if(!jsFile)throw new Error("Plugin missing .js file.");if(metadata.schema.type==="datasource"){let js=qVe(directory,jsFile.name);try{eval(js)}catch(e){let t=e?.message?e.message:JSON.stringify(e);throw new Error(`JS invalid: ${t}`)}}let iconFileName=iconFile?iconFile.name:null,pluginId=ne.generatePluginID(name),rev;try{rev=(await db.get(pluginId))._rev}catch(e){rev=void 0}let doc={_id:pluginId,_rev:rev,...metadata,name,version,hash,description,source};iconFileName&&(doc.iconFileName=iconFileName),source&&(doc={...doc,source});let write=a(async()=>{let e=await db.put(doc);return await Tt.plugin.imported(doc),{...doc,_rev:e.rev}},"write");return rev?await write():await cee(write)}a($yr,"storePlugin");async function zyr(e){let t=vt.getGlobalDB();try{let r=await t.get(e),n=gt.getPluginS3Dir(r.name);await gt.deleteFolder(gt.ObjectStoreBuckets.PLUGINS,n),await t.remove(e,r._rev),await Tt.plugin.deleted(r),await lee()}catch(r){let n=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${n}`)}}a(zyr,"deletePlugin");async function Wyr(){let e=vt.getGlobalDB();try{let r=(await e.allDocs(ne.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await fee(r)}catch(t){kt.logAlert("Unable to retrieve plugins for quota check",t)}}a(Wyr,"checkPluginQuotas");var rl={};oe(rl,{fetch:()=>Hyr,fetchValues:()=>Vyr,isEncryptionKeyAvailable:()=>Gyr,isValid:()=>WVe,remove:()=>Qyr,update:()=>Kyr});function Gyr(){return!!V.ENCRYPTION_KEY}a(Gyr,"isEncryptionKeyAvailable");async function Hyr(){let e=await Vy.get();return Object.keys(e.variables)}a(Hyr,"fetch");async function Vyr(e){let r=(await Vy.get()).variables,n={};for(let[i,o]of Object.entries(r))switch(e){case"development":n[i]=o.development;break;case"production":default:n[i]=o.production;break}return n}a(Vyr,"fetchValues");async function zVe(e){if(!(await em.cache.getCachedLicense()).features.includes("environmentVariables"))throw new Error("User does not have access to environment variables feature.");let r=await Vy.get();r.variables=e(r.variables),await Vy.update(r)}a(zVe,"changeValues");async function Kyr(e,t){if(WVe(e))await zVe(n=>(n[e]=t,n));else throw new Error("Variable name has characters that are not allowed")}a(Kyr,"update");async function Qyr(e){await zVe(t=>(delete t[e],t))}a(Qyr,"remove");function WVe(e){return/^[a-zA-Z0-9-_]+$/.test(e)}a(WVe,"isValid");var mb={};oe(mb,{definitions:()=>r0r,download:()=>t0r,fetch:()=>e0r,write:()=>XSr});var GVe=require("memorystream"),HVe=new Vt.Sql("sqlite3");async function Yyr(e,t,r){let n={operation:"READ",table:fO.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:"descending",type:"string"}}},i=HVe._query(n);if(Array.isArray(i))throw new Error("Cannot execute multiple queries for audit log search");return{sql:i.sql,bindings:i.bindings}}a(Yyr,"getAuditLogSqlQuery");function Jyr(e){return`al${Me}${e}${Me}${Cr.newid()}`}a(Jyr,"generateAuditLogID");async function VVe(e){e._id||(e._id=Jyr(e.timestamp)),e.type||(e.type=xm);try{let r=await W.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){kt.logAlert("Failed to write audit log",t)}}a(VVe,"save");async function xee(e,t,r){t||(t=1);let n=W.getAuditLogsDB();try{let i=9+1,o=await Yyr(e,t,i),s=fO.searchTable(),u=HVe.convertJsonStringColumns(s,await n.sql(o.sql,o.bindings)),c;u.length>i&&(c=u.pop());let l={rows:u,hasNextPage:!!c};return l.hasNextPage&&(l.bookmark=t+1),l}catch(i){if(i.status===404&&!r?.isRetry)return await Xyr(),await FHe(),await xee(e,t,{isRetry:!0});throw i}}a(xee,"searchSQL");async function Xyr(){let e=W.getAuditLogsDB(),r=(await e.allDocs(ne.getDocParams("al",null,{include_docs:!0}))).rows.map(n=>n.doc).filter(n=>n&&!n.type).map(n=>({...n,type:xm}));await e.bulkDocs(r)}a(Xyr,"migrate");function KVe(e){let t=W.getAuditLogsDB(),r=new GVe,n=t.dump(r,{filter:o=>{let s=o;if(!s._id?.startsWith("al"))return!1;let u=!0,c=a((l,f)=>{!l||l.length===0||(u=!!(u&&f&&l.includes(f)))},"matcher");if(c(e.userIds,s.userId),c(e.appIds,s.appId),c(e.events,s.event),(e.startDate||e.endDate)&&(u=u&&s.timestamp>=e.startDate&&s.timestamp<=e.endDate),e.fullSearch){let l=JSON.stringify(o);u=u&&l.includes(e.fullSearch)}return u}}),i=new GVe;return r.on("data",o=>{let s=JSON.parse(Buffer.from(o).toString());if(Array.isArray(s.docs)){let u="";for(let c of s.docs)u+=JSON.stringify(c)+`
571
571
  `;i.write(u)}}),r.on("end",()=>{i.end()}),{promise:n,stream:i}}a(KVe,"dump");var CJe=te(JVe()),DJe=te(require("vm")),pre=te(FO());var Kp=class{static{a(this,"Helper")}constructor(t,r,n=!0){this.name=t,this.fn=r,this.useValueFallback=n}register(t){t.registerHelper(this.name,(r,n)=>{let i={};n&&n.data&&n.data.root&&(i=n.data.root);let o=this.fn(r,i);return o??(this.useValueFallback?r:null)})}unregister(t){t.unregisterHelper(this.name)}};var hM=te(FO());var ere=te(GYe());var Qa=te(require("dayjs")),HYe=te(require("dayjs/plugin/duration")),VYe=te(require("dayjs/plugin/advancedFormat")),KYe=te(require("dayjs/plugin/isoWeek")),QYe=te(require("dayjs/plugin/weekYear")),YYe=te(require("dayjs/plugin/weekOfYear")),JYe=te(require("dayjs/plugin/relativeTime")),XYe=te(require("dayjs/plugin/utc")),ZYe=te(require("dayjs/plugin/timezone"));Qa.default.extend(HYe.default);Qa.default.extend(VYe.default);Qa.default.extend(KYe.default);Qa.default.extend(QYe.default);Qa.default.extend(YYe.default);Qa.default.extend(JYe.default);Qa.default.extend(XYe.default);Qa.default.extend(ZYe.default);function fb(e){return typeof e=="object"&&typeof e.hash=="object"}a(fb,"isOptions");function Yte(e){return typeof e=="object"&&typeof e.options=="object"&&typeof e.app=="object"}a(Yte,"isApp");function Jte(e,t,r){if(fb(e))return Jte({},t,e);if(fb(t))return Jte(e,r,t);let n=Yte(e)?e.context:{};r=r||{},fb(r)||(t=Object.assign({},t,r)),fb(r)&&r.hash.root===!0&&(t=Object.assign({},r.data.root,t));let i=Object.assign({},n,t,r.hash);return Yte(e)||(i=Object.assign({},e,i)),Yte(e)&&e.view&&e.view.data&&(i=Object.assign({},i,e.view.data)),i}a(Jte,"getContext");function Xte(e,t,r){return fb(t)&&(r=t,t=tJe),fb(e)&&(r=e,t=null,e=null),{str:e,pattern:t,options:r}}a(Xte,"initialConfig");function eJe(e,t,r){let n=Xte(e,t,r),i={lang:"en",date:new Date(n.str)},o=Jte(this,i,{});Qa.default.locale(o.lang||o.language)}a(eJe,"setLocale");var tJe="MMMM DD, YYYY",cM=a((e,t,r)=>{let n=Xte(e,t,r);if(n.str==null&&n.pattern==null)return Qa.default.locale("en"),(0,Qa.default)().format(tJe);eJe(n.str,n.pattern,n.options);let i=(0,Qa.default)(new Date(n.str));return typeof n.options=="string"?i=n.options.toLowerCase()==="utc"?i.utc():i.tz(n.options):i=i.tz(Qa.default.tz.guess()),n.pattern===""?i.toISOString():i.format(n.pattern)},"date"),QO=a((e,t,r)=>{let n=Xte(e,t);eJe(n.str,n.pattern);let i=Qa.default.duration(n.str,n.pattern);return r&&!fb(r)?i.format(r):i.humanize()},"duration"),Zte=a((e,t,r)=>(0,Qa.default)(new Date(e)).diff((0,Qa.default)(new Date(t)),r),"difference"),rJe=a(e=>{let t=Zte(e,new Date().toISOString(),"ms");return QO(t,"ms")},"durationFromNow");var lM=["#if","#unless","#each","#with","lookup","log","blockHelperMissing","each","helperMissing","if","unless","log","lookup","with"],nJe=["math","array","number","url","string","comparison","object","regex","uuid"],pb={OBJECT:"object",ALL:"all",LITERAL:"literal",JS:"js",DECODE_ID:"decodeId"},O_="%LITERAL%";var iJe={date:cM,duration:QO,difference:Zte,durationFromNow:rJe};function aJe(e){for(let[r,n]of Object.entries(iJe))e.registerHelper(r,n);let t=[];for(let r of nJe){let n=ere.default[r]();for(let i of Object.entries(n)){let o=i[0];lM.indexOf(o)!==-1||t.indexOf(o)!==-1||t.push(o)}ere.default[r]({handlebars:e})}tre=t.concat(Object.keys(iJe))}a(aJe,"registerAll");var tre=[];function ISr(){return process.env.NODE_ENV==="jest"||process.env.JEST_WORKER_ID!=null&&process.env.JEST_WORKER_ID!=="null"}a(ISr,"isJest");function hb(){return ISr()}a(hb,"isTest");var oJe=a(()=>process&&process.env.BACKEND_JS,"isTestingBackendJS"),rre=a(()=>{process.env.BACKEND_JS="1"},"setTestingBackendJS");var kSr=/^[A-Za-z0-9]+$/g,YO=/{{([^{].*?)}}/g,nre=/{?{{([^{].*?)}}}?/g,CSr=/{{{([^{].*?)}}}/g,JO=a(()=>hb()&&oJe()?!0:hb()?!1:typeof window>"u","isBackendService"),sJe=a(()=>process&&!process.env.NO_JS,"isJSAllowed"),uJe=a(e=>{let t=e,r=new RegExp(YO),n=new RegExp(CSr),i=t.match(n);i&&i.forEach(s=>{t=t.replace(s,"")});let o=t.match(r);return o||[]},"findDoubleHbsInstances"),cJe=a(e=>e.match(kSr),"isAlphaNumeric"),ire=a((e,t,r,n)=>e.slice(0,t)+n+e.slice(t+r),"swapStrings");var fM=a(e=>Buffer.from(e,"base64").toString("utf-8"),"atob"),lJe=a((e,t,r)=>{let n=t.map(o=>o.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")),i=new RegExp(`\\b(${n.join("|")})\\b`,"g");return e.replace(i,`${r}$1`)},"prefixStrings");function pM(e){return`
572
572
  result = {
573
573
  result: null,
@@ -584,7 +584,7 @@ mwIDAQAB
584
584
  `}a(pM,"frontendWrapJS");var fJe=te(zte()),pJe=te(S_()),dJe=te(Wte()),hJe=te(Kte()),mJe=te(Hte()),gJe=te(Ste()),yJe=te(Jj()),bJe=te(Gte()),vJe=te(Qte());var DSr={math:fJe.default,array:pJe.default,number:dJe.default,url:hJe.default,string:mJe.default,comparison:gJe.default,object:yJe.default,regex:bJe.default,uuid:vJe.default},wJe=["sortBy"],PSr={date:cM,duration:QO},Zp;function XO(){if(Zp)return Zp;Zp={};for(let e of Object.values(DSr))for(let[t,r]of Object.entries(e))Zp[t]=(...n)=>r(...n,{});Zp={...Zp,...PSr};for(let e of wJe)delete Zp[e];return Object.freeze(Zp),Zp}a(XO,"getJsHelperList");var sm=a(e=>`(function(){
585
585
  ${e}
586
586
  })();`,"iifeWrapper");var um=class e extends Error{constructor(){super(e.message);this.code=e.code}static{a(this,"JsTimeoutError")}static{this.message="Timed out while executing JS"}static{this.code="JS_TIMEOUT_ERROR"}},il=class e extends Error{constructor(r){super(`error while running user-supplied JavaScript: ${r.toString()}`);this.userScriptError=r;this.code=e.code}static{a(this,"UserScriptError")}static{this.code="USER_SCRIPT_ERROR"}};var EJe=te(require("lodash/fp/cloneDeep"));var dM,ZO=a(e=>dM=e,"setJSRunner"),_Je=a(()=>{dM=void 0},"removeJSRunner"),are,ore=a(e=>are=e,"setOnErrorLog"),NSr=a(e=>{if(!e||typeof e!="string")return e;let t=/\[+(.+)]+/,r=e.match(t);return r&&r[1]?r[1]:e},"removeSquareBrackets"),LSr=a(e=>e==="snippets"||e==="helpers"||e.startsWith("snippets.")||e.startsWith("helpers."),"isReservedKey"),FSr=a((e,t)=>{if(LSr(e))return;let r=/^(["'`]).*\1$/,n=t;return r.test(e)?e.substring(1,e.length-1):(e.split(".").forEach(i=>{if(n==null||typeof n!="object")return null;n=n[NSr(i)]}),n)},"getContextValue");function SJe(handlebars,context){if(!sJe()||!dM)throw new Error("JS disabled in environment.");try{let js=sm(fM(handlebars)),snippetMap={},snippetCache={};for(let e of context.snippets||[])snippetMap[e.name]=e.code;let clonedContext;JO()?clonedContext=context:clonedContext=(0,EJe.default)(context);let sandboxContext={$:e=>FSr(e,clonedContext),helpers:XO(),snippets:new Proxy({},{get:function(_,name){return name in snippetCache||(snippetCache[name]=eval(sm(snippetMap[name]))),snippetCache[name]}})},logs=[];if(!JO()){let e=pM(js).split(js)[0].split(`
587
- `).length,t=a(r=>(...n)=>{hb()||console[r](...n),n.forEach((o,s)=>{typeof o=="object"&&(n[s]=JSON.stringify(o))});let i=new Error().stack?.match(/<anonymous>:(\d+):\d+/)?.[1];logs.push({log:n,line:i?parseInt(i)-e:void 0,type:r})},"buildLogResponse");sandboxContext.console={log:t("log"),info:t("info"),debug:t("debug"),warn:t("warn"),error:t("error"),table:t("table")}}let res={data:dM(js,sandboxContext),logs};return`{{${O_} js_result-${JSON.stringify(res)}}}`}catch(e){are&&are(e);let{noThrow:t=!0}=context.__opts||{};if(e.code==="ERR_SCRIPT_EXECUTION_TIMEOUT")return"Timed out while executing JS";if(e.code==="JS_REQUEST_TIMEOUT_ERROR")return e.message;if(e.code===um.code)return um.message;if(e.code===il.code){if(t)return e.userScriptError.toString();throw e}if(e.name==="SyntaxError"){if(t)return e.toString();throw e}return"Error while executing JS"}}a(SJe,"processJS");var USr={"<":"&lt;",">":"&gt;"};function jSr(e){return e==null||typeof e!="object"?!1:e.toString()==="[object Object]"||e.length>0&&typeof e[0]=="object"}a(jSr,"isObject");var MSr=[new Kp(pb.OBJECT,e=>new hM.default.SafeString(JSON.stringify(e))),new Kp(pb.JS,SJe,!1),new Kp(pb.DECODE_ID,e=>{if(!e)return[];let t=typeof e=="string"?e:e._id,r=decodeURIComponent(t).replace(/'/g,'"');try{let n=JSON.parse(r);return Array.isArray(n)?n:[n]}catch{return[e]}}),new Kp(pb.ALL,(e,t)=>{let{__opts:r}=t;if(jSr(e))return new hM.default.SafeString(JSON.stringify(e));if(r&&r.onlyFound&&e==null)return r.input;if(e==null||typeof e!="string")return e??"";e&&e.string&&(e=e.string);let n=e;return r&&r.escapeNewlines&&(n=e.replace(/\n/g,"\\n")),n=new hM.default.SafeString(n.replace(/&amp;/g,"&")),n==null||typeof n!="string"?n:n.replace(/[<>]/g,i=>USr[i]||i)}),new Kp(pb.LITERAL,e=>{if(e===void 0)return"";let t=typeof e,r=t==="object"?JSON.stringify(e):e;return`{{${O_} ${t}-${r}}}`})];function xJe(){return Object.values(pb).concat(lM,tre)}a(xJe,"HelperNames");function sre(e){for(let t of MSr)t.register(e)}a(sre,"registerMinimum");function TJe(e){sre(e),aJe(e)}a(TJe,"registerAll");var AJe=["#","else","/"];var I_=class{static{a(this,"Preprocessor")}constructor(t,r){this.name=t,this.fn=r}process(t,r,n){let i=this.fn(r,n),o=t.indexOf(r);return ire(t,o,r.length,i)}},RJe=[new I_("swap-to-dot-notation",e=>{let t=e.indexOf("["),r=0;for(;t!==-1;){cJe(e.charAt(t-1))&&(e=ire(e,t+r,1,".[")),r=t+1;let n=e.substring(r+1).indexOf("[");t=n>0?r+1+n:-1}return e}),new I_("fix-functions",e=>{for(let t of AJe){let r=`{ ${t}`,n=`{${t}`;e=e.replace(new RegExp(r,"g"),n)}return e}),new I_("normalize-spaces",e=>e.replace(/{{(\s{2,})/g,"{{ ")),new I_("finalise",(e,t)=>{let n=!t?.noHelpers,i=e.slice(2,e.length-2);i.charAt(0)===" "&&(i=i.slice(1)),i.charAt(i.length-1)===" "&&(i=i.slice(0,i.length-1));let o=i.split(" ")[0];for(let u of AJe)if(o.includes(u))return e;let s=o.trim().toLowerCase();return n&&!t?.disabledHelpers?.includes(s)&&xJe().some(u=>s===u.toLowerCase())&&(i=`(${i})`),`{{ all ${i} }}`})];var ure=class{static{a(this,"Postprocessor")}constructor(t,r){this.name=t,this.fn=r}process(t){return this.fn(t)}},cre=[new ure("convert-literals",e=>{if(typeof e!="string"||!e.includes(O_))return{result:e};let t=e.indexOf("-"),r=e.substring(12,t),n=e.substring(t+1,e.length-2);switch(r){case"string":return{result:n};case"number":return{result:parseFloat(n)};case"boolean":return{result:n==="true"};case"object":return{result:JSON.parse(n)};case"js_result":{let i=JSON.parse(n);return{result:i.data,logs:i.logs}}}return{result:n}})];function lre(e,t,r){let n=[];for(let i of t){if(typeof e!="string")break;let o=new RegExp(YO),s=e.match(o);if(s!=null)for(let u of s){let c=i.process(e,u,r||{});typeof c=="object"?("logs"in c&&c.logs&&(n=n.concat(c.logs)),e=c.result):e=c}}return{result:e,logs:n}}a(lre,"process");function OJe(e,t){let r=RJe;return t.noFinalise&&(r=r.filter(n=>n.name!=="finalise")),lre(e,r,t).result}a(OJe,"preprocess");function IJe(e){return lre(e,cre).result}a(IJe,"postprocess");function kJe(e){return lre(e,cre)}a(kJe,"postprocessWithLogs");var dre=(0,pre.create)();TJe(dre);var $Sr=Object.keys(dre.helpers),PJe=(0,pre.create)();sre(PJe);var zSr={noHelpers:!1,cacheTemplates:!1,noEscaping:!1,escapeNewlines:!1,noFinalise:!1};function NJe(e){try{JSON.stringify(e)}catch{throw"Unable to process inputs to JSON, cannot recurse"}}a(NJe,"testObject");function WSr(e){return e?Object.keys(e).filter(r=>$Sr.includes(r)):[]}a(WSr,"findOverlappingHelpers");var fre={};function GSr(e,t,r){t={...zSr,...t};let n=!t?.noHelpers,i=`${e}-${JSON.stringify(t)}`;if(t.cacheTemplates&&fre[i])return fre[i];let o=n?WSr(r):[];if(e=OJe(e,{...t,disabledHelpers:o}),r&&n&&o.length>0)for(let c of al(e))e=e.replace(c,lJe(c,o,"./"));t.noEscaping&&(e=VSr(e));let u=(t.noHelpers?PJe:dre).compile(e,{strict:!1});return fre[i]=u,u}a(GSr,"createTemplate");async function mM(e,t,r){NJe(e);for(let n of Object.keys(e||{}))if(e[n]!=null){let i=e[n],o=i;typeof i=="string"?o=await hre(e[n],t,r):typeof i=="object"&&(o=await mM(e[n],t,r)),e[n]=o}return e}a(mM,"processObject");async function hre(e,t,r){return Zn(e,t,r)}a(hre,"processString");function eI(e,t,r){NJe(e);for(let n of Object.keys(e||{})){let i=e[n];typeof i=="string"?e[n]=Zn(e[n],t,r):typeof i=="object"&&(e[n]=eI(e[n],t,r))}return e}a(eI,"processObjectSync");function HSr(e,t,r){let n=e;if(typeof e!="string")throw new Error("Cannot process non-string types.");function i(o){let s=GSr(o,r,t),u=Math.floor(Date.now()/1e3)*1e3,c=s({now:new Date(u).toISOString(),__opts:{...r,input:o},...t});return r?.logging?kJe(c):IJe(c)}a(i,"process");try{if(r&&r.onlyFound){let o=[],s=al(e);for(let u of s){let c=i(u);typeof c=="object"&&"result"in c?(o=o.concat(c.logs||[]),e=e.replace(u,c.result)):e=e.replace(u,c)}return r?.logging?{result:e,logs:o}:e}else return i(e)}catch(o){let{noThrow:s=!0}=r||{};if(s)return n;throw o}}a(HSr,"processStringSyncInternal");function Zn(e,t,r){return HSr(e,t,{...r,logging:!1})}a(Zn,"processStringSync");function VSr(e){let t=uJe(e);if(t==null)return e;let r=[...new Set(t)];for(let n of r){let i=new RegExp(`${n}(?!})`,"g");e=e.replace(i,`{${n}}`)}return e}a(VSr,"disableEscaping");function mre(e){return gM(e)!=null}a(mre,"isJSBinding");function gM(e){if(!e||typeof e!="string"||!e.trim().startsWith("{{ js "))return null;let t=new RegExp(/{{ js "(.*)" }}/),r=e.match(t);return!r||r.length<2?null:fM(r[1])}a(gM,"decodeJSBinding");function LJe(e,t){let r=new RegExp(YO),n=e.match(r);if(n==null)return!1;for(let i of n){let o=i;mre(i)&&(o=gM(i));let s=!0;for(let u of t)o.includes(u)||(s=!1);if(s)return!0}return!1}a(LJe,"doesContainStrings");function al(e){if(!e||typeof e!="string")return[];let t=new RegExp(nre),r=e.match(t);return r??[]}a(al,"findHBSBlocks");function KSr(){let e=hb()?DJe.default:CJe.default;ZO((t,r)=>{e.createContext(r);let n=pM(t),i=e.runInNewContext(n,r);if(i.error)throw new il(i.error);return i.result})}a(KSr,"browserJSSetup");function QSr(){JO()?_Je():KSr()}a(QSr,"defaultJSSetup");QSr();var YSr=gr.MIN_VALID_DATE.toISOString(),JSr=gr.MAX_VALID_DATE.toISOString();function gre(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||YSr,e.endDate=e.endDate||JSr),e}a(gre,"fillDates");async function FJe(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(n=>ne.getProdWorkspaceID(n)));let t={};function r(n,i){i?.length&&(t.oneOf={...t.oneOf,[n]:i})}return a(r,"addStringParams"),r("userId",e.userIds),r("appId",e.appIds),r("event",e.events),e.fullSearch&&(t.fuzzyOr=!0,t.fuzzy={name:e.fullSearch,fallback:e.fullSearch}),(e.startDate||e.endDate)&&(e=gre(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}a(FJe,"getSearchFilters");function yre(e,t,r){let n={_id:e,status:"deleted"};switch(t){case"app":n.name=r?.appName;break;case"user":n.email=r?.email;break}return n}a(yre,"deleted");function bre(e){let t=al(e);for(let r of t){let n=` "${r}"`;e=e.replace(e.includes(n)?n:` ${r}`,""),e=Zn(e,{})}return e}a(bre,"removeTemplateStrings");function UJe(e,t){let r=jb[e];if(!r)throw new Error("No friendly name found.");let n=Zn(r,t);return n.includes('""')&&(n=bre(r)),n}a(UJe,"getEventFriendlyName");async function XSr(e,t,r){if(!await oj()||!Cr.isAudited(e))return;let n=UJe(e,t),i=new Date;r?.timestamp&&(i=new Date(r.timestamp));let o={timestamp:i.toISOString(),event:e,name:n,userId:r?.userId||use,metadata:{...t,...r?.hostInfo}},s={};try{if(r?.appId){o.appId=ne.getProdWorkspaceID(r.appId);let u=await Ht.workspace.getWorkspaceMetadata(r.appId);"name"in u&&(s.appName=u.name)}if(r?.userId){let u=await rr.getById(r?.userId);s.email=u.email}}catch(u){kt.logAlert("Failed to retrieve fallback information for audit log",u)}return o.fallback=s,await VVe(o)}a(XSr,"write");async function ZSr(e){let t=e.map(u=>u.userId),n=e.filter(u=>u.appId).map(u=>ne.getDevWorkspaceID(u.appId)),i=await rr.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),o=await ne.getWorkspacesByIDs([...new Set(n)]),s=[];for(let u of e){let c=i.find(p=>p?._id===u.userId),l=o.find(p=>ne.isSameWorkspaceID(p?.appId,u.appId)),f={event:u.event,timestamp:u.timestamp,name:u.name,metadata:u.metadata,user:c||yre(u.userId,"user",u.fallback)};u.appId&&(f.app=l||yre(u.appId,"app",u.fallback)),s.push(f)}return s}a(ZSr,"enrich");async function e0r(e){if(!await oj())throw new Error("Audit logs not available - license required.");let t=await FJe(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await xee(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await ZSr(r.rows)}}a(e0r,"fetch");function t0r(e){return e=gre(e),KVe(e)}a(t0r,"download");function r0r(){let e=Object.entries(jb).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=bre(r[1]);return t}a(r0r,"definitions");var _re={};oe(_re,{applications:()=>Ere,roles:()=>wre,users:()=>vre});var vre={};oe(vre,{roleCheck:()=>i0r});function n0r(e,t){let r=e.request.body;return r.builder&&(r.builder=t?.builder||void 0),r.admin&&(r.admin=t?.admin||void 0),r.roles&&(r.roles=t?.roles||{}),e.request.body=r,e}a(n0r,"removeRoles");async function i0r(e,t){return await qp()||n0r(e,t),e}a(i0r,"roleCheck");var wre={};oe(wre,{assign:()=>a0r,unAssign:()=>o0r});async function a0r(e,t){if(!await qp())throw new Error("Unable to assign roles - license required.");let r=await Gu.bulkGet(e);for(let n of r){if(t.role&&t.role.roleId){let i=ne.getProdWorkspaceID(t.role.appId);n.roles[i]=t.role.roleId}if(t.appBuilder){let i=ne.getProdWorkspaceID(t.appBuilder.appId),o=n.builder?.apps||[];n.builder={apps:o.concat([i])}}t.builder&&(n.builder={global:!0}),t.admin&&(n.admin={global:!0}),n.roles}await Gu.bulkUpdate(r)}a(a0r,"assign");async function o0r(e,t){if(!await qp())throw new Error("Unable to un-assign roles - license required.");let r=await Gu.bulkGet(e);for(let n of r){if(t.role){let i=ne.getProdWorkspaceID(t.role?.appId);n.roles[i]===t.role.roleId&&delete n.roles[i]}if(t.appBuilder&&n.builder?.apps){let i=ne.getProdWorkspaceID(t.appBuilder.appId);n.builder.apps=n.builder.apps.filter(o=>o!==i)}t.builder&&n.builder&&delete n.builder,t.admin&&n.admin&&delete n.admin}}a(o0r,"unAssign");var Ere={};oe(Ere,{buildExportFn:()=>u0r,buildImportFn:()=>s0r});function s0r(e){return async(t,r)=>{await qp()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await W.doInWorkspaceContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}a(s0r,"buildImportFn");function u0r(e){return async(t,r)=>{await qp()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:n,excludeRows:i}=t.request.body;await W.doInWorkspaceContext(t.params.appId,async()=>{t.request.body={encryptPassword:n,excludeRows:i},t.query.appId=t.params.appId,await e(t),await r()})}}a(u0r,"buildExportFn");var BJe=te(require("fs")),qJe=require("path");var jJe;function MJe(){jJe=new co.BudibaseQueue(co.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}a(MJe,"init");function gb(){return jJe}a(gb,"getBackupQueue");async function Sre(e,t={}){return Wu.storeAppBackupMetadata(e,t)}a(Sre,"storeAppBackupMetadata");function $Je(e){let t=new Date().toISOString();switch(e){case"complete":case"failed":return{timestamp:t,finishedAt:t};case"started":return{timestamp:t,startedAt:t};case"pending":return{timestamp:t,createdAt:t}}}a($Je,"getTimestamps");async function l0r(e,t,r,n){let i=await yM(e);return await Wu.storeAppBackupMetadata({...i,...$Je(t),contents:r,status:t,type:"backup"},{filename:n,docId:e})}a(l0r,"updateBackupStatus");async function f0r(e,t,r){let n=await yM(e);return await Wu.storeAppBackupMetadata({...n,...$Je(r),status:r,type:"restore",trigger:"manual"},{docId:e,docRev:t})}a(f0r,"updateRestoreStatus");async function yM(e){return Wu.getAppBackupMetadata(e)}a(yM,"getAppBackup");async function p0r(e,t){return Wu.updateAppBackupMetadata(e,t)}a(p0r,"updateAppBackup");async function zJe(e){let t=await Wu.getAppBackupMetadata(e);return t.filename&&await gt.deleteFile(gt.ObjectStoreBuckets.BACKUPS,t.filename),Wu.deleteAppBackupMetadata(e)}a(zJe,"deleteAppBackup");async function d0r(e){let t=[];for(let r of e)try{await zJe(r),t.push({backupId:r,success:!0})}catch(n){t.push({backupId:r,success:!1,error:n instanceof Error?n.message:"Unknown error"})}return t}a(d0r,"deleteAppBackups");async function h0r(e,t){return Wu.fetchAppBackups(e,t)}a(h0r,"fetchAppBackups");async function WJe(e){let t=await Wu.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let{stream:r}=await gt.getReadStream(gt.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}a(WJe,"getBackupDownloadStream");async function m0r(e){let{stream:t}=await WJe(e),r=(0,qJe.join)(gt.budibaseTempDir(),Cr.newid()),n=BJe.default.createWriteStream(r);return new Promise((i,o)=>{t.on("error",o),n.on("error",o),t.pipe(n).on("close",()=>i(r))})}a(m0r,"downloadAppBackup");async function g0r(e,t,r={}){let n;try{n=await Sre({appId:e,trigger:t,timestamp:new Date().toISOString(),status:"pending",type:"backup",...r})}catch(i){if(i.status===409)return;throw i}return await gb().add({docId:n.id,docRev:n.rev,appId:e,export:{trigger:t,...r}}),await Tt.backup.appBackupTriggered(e,n.id,"backup",t,r?.name),n.id}a(g0r,"triggerAppBackup");async function y0r(e,t,r,n){let i=await yM(t),o;try{o=await Sre({appId:e,timestamp:new Date().toISOString(),status:"pending",type:"restore",createdBy:n})}catch(s){if(s?.status===409)return;throw s}return await gb().add({appId:e,docId:o.id,docRev:o.rev,import:{nameForBackup:r,backupId:t,createdBy:n}}),{restoreId:o.id,metadata:i}}a(y0r,"triggerAppRestore");async function b0r(e,t,r){let n=ne.getProdWorkspaceID(e);await W.doInWorkspaceContext(n,async()=>{let i=W.getProdWorkspaceDB();if(!await i.exists())return;let s=await i.tryGet("app_metadata");s&&(s.backupErrors||(s.backupErrors={}),s.backupErrors[t]||(s.backupErrors[t]=[]),s.backupErrors[t].push(r),await i.put(s),await Ht.workspace.invalidateWorkspaceMetadata(s.appId,s))})}a(b0r,"trackBackupError");var v0r={isEnabled:XZ,triggerAppRestore:qo(y0r),triggerAppBackup:qo(g0r),getBackupDownloadStream:qo(WJe),downloadAppBackup:qo(m0r),fetchAppBackups:qo(h0r),storeAppBackupMetadata:qo(Sre),updateBackupStatus:qo(l0r),updateRestoreStatus:qo(f0r),getAppBackup:qo(yM),updateAppBackup:qo(p0r),deleteAppBackup:qo(zJe),deleteAppBackups:qo(d0r),trackBackupError:qo(b0r)},Yu=v0r;var Tre={};oe(Tre,{init:()=>xre});var k_=te(require("fs"));async function xre(e){gb().process(async t=>{let r=t.data;try{if(r.export)return console.log("Exporting app backup:",r.appId,r.export.trigger),_0r(t,e);if(r.import)return console.log("Importing app backup:",r.appId,r.import.backupId),E0r(t,e)}catch(n){kt.logAlert(`Failed to perform backup for app ID: ${r.appId}`,n)}})}a(xre,"init");async function w0r(e){await ne.getDB(e,{skip_setup:!0}).destroy()}a(w0r,"removeExistingApp");async function GJe(e,t,r,n){let i=ne.getDevWorkspaceID(r),o=ne.getProdWorkspaceID(r),s=new Date().toISOString(),u=a(async(c,l)=>{n?.doc?await Yu.updateBackupStatus(n.doc.id,c,l?.contents,l?.filename):await Yu.storeAppBackupMetadata({appId:o,timestamp:s,trigger:e,status:c,name:n?.name,type:"backup",contents:l?.contents,createdBy:n?.createdBy},{filename:l?.filename})},"updateMetadata");try{let c=await n.processing.exportAppFn(i,{tar:!0}),l=await n.processing.statsFn(i),f=`${o}/backup-${s}.tar.gz`,p=gt.ObjectStoreBuckets.BACKUPS,d=k_.default.createReadStream(c);await gt.streamUpload({bucket:p,filename:f,stream:d,extra:{type:"application/gzip",metadata:{name:n?.name,trigger:e,timestamp:s,appId:o}}}),await u("complete",{filename:f,contents:l}),k_.default.existsSync(c)&&k_.default.rmSync(c)}catch(c){kt.logAlert("App backup error",c),await u("failed");let l=n?.doc?.id||`backup-${s}`,f=c instanceof Error?c.message:String(c);await Yu.trackBackupError(o,l,`Backup export failed: ${f}`)}}a(GJe,"runBackup");async function E0r(e,t){let r=e.data,n=r.appId,i=r.import.backupId,o=r.import.nameForBackup,s=r.import.createdBy,u=vt.getTenantIDFromWorkspaceID(n);return vt.doInTenant(u,async()=>{let c=ne.getDevWorkspaceID(n),l=`${c}_temp_${Date.now()}`,{rev:f}=await Yu.updateRestoreStatus(r.docId,r.docRev,"started");await GJe("restoring",u,n,{processing:t,createdBy:s,name:o});let p=await Yu.downloadAppBackup(i),d="complete";try{await t.importAppFn(l,ne.getDB(l),{file:{type:"application/gzip",path:p},key:p}),await w0r(c),await new ne.Replication({source:l,target:c}).replicate()}catch(h){kt.logAlert("App restore error",h),d="failed";let m=h instanceof Error?h.message:String(h);await Yu.trackBackupError(n,i,`Backup restore failed: ${m}`)}finally{try{await ne.getDB(l,{skip_setup:!0}).destroy()}catch{}}await Yu.updateRestoreStatus(r.docId,f,d),k_.default.existsSync(p)&&k_.default.rmSync(p,{force:!0})})}a(E0r,"importProcessor");async function _0r(e,t){let r=e.data,n=r.appId,i=r.export.trigger,o=r.export.name,s=vt.getTenantIDFromWorkspaceID(n);await vt.doInTenant(s,async()=>{try{let{rev:u}=await Yu.updateBackupStatus(r.docId,"started");return GJe(i,s,n,{processing:t,doc:{id:r.docId,rev:u},name:o})}catch(u){kt.logAlert("App backup error",u);let c=u instanceof Error?u.message:String(u);await Yu.trackBackupError(n,r.docId,`Backup export failed: ${c}`)}})}a(_0r,"exportProcessor");var S0r=a(async e=>{MJe(),await xre(e.processing)},"init"),Zs={...Yu,processing:Tre,init:S0r,getBackupQueue:gb};var x0r=a(async e=>{e.backups&&await Zs.init(e.backups)},"init");var eu={};oe(eu,{create:()=>R0r,find:()=>A0r,get:()=>T0r,remove:()=>I0r,update:()=>O0r});var HJe=te(require("lodash/fp/merge"));async function T0r(e){let t=vt.getGlobalDB(),r=new ne.QueryBuilder(t.name,"user");r.setIndexBuilder(ne.searchIndexes.createUserIndex),r.setLimit(e.pageSize),r.addEqual("scimInfo.isSync",!0);for(let[i,o]of Object.entries(e.filters?.equal??{}))r.addEqual(i,o);r.setSort("_id"),r.setSkip(e.skip);let n=await r.run();return{users:n.rows,total:n.totalRows}}a(T0r,"get");async function A0r(e){return await rr.getById(e)}a(A0r,"find");async function R0r(e){let t=await Gu.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new Re("User is already synched",409);e={...t,scimInfo:(0,HJe.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await Gu.save(e,{requirePassword:!1})}a(R0r,"create");async function O0r(e,t){return await Gu.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}a(O0r,"update");async function I0r(e){return await Gu.destroy(e)}a(I0r,"remove");var tI={};oe(tI,{create:()=>k0r});var VJe=te(require("lodash/fp/merge"));async function k0r(e){let t=await OZ(e.name),r;if(!t)r=(await on.save(e)).id;else{if(t.scimInfo?.isSync)throw new Re("Group is already synched",409);r=t._id,t.users&&(await on.removeUsers(r,t.users.map(i=>i._id)),delete t.users),t.scimInfo=(0,VJe.default)(t.scimInfo,e.scimInfo),await on.save(t)}return await on.get(r)}a(k0r,"create");var C_={};oe(C_,{logRequest:()=>C0r,logResponse:()=>D0r});async function C0r(e){kt.logWarn("SCIM request log",e)}a(C0r,"logRequest");async function D0r(e){kt.logWarn("SCIM response error",e)}a(D0r,"logResponse");var wo={};oe(wo,{requireFeature:()=>P0r,requireFeatures:()=>N0r});var P0r=a(e=>async(t,r)=>{await aj(e),await r()},"requireFeature"),N0r=a((...e)=>async(t,r)=>{await JZ(e),await r()},"requireFeatures");var KJe=a(async(e,t)=>(V.DISABLE_SCIM_CALLS||await C_.logRequest({...e.request.toJSON(),body:e.request.body}),await W.doInScimContext(async()=>{let r=await t();return await C_.logResponse({...e.response.toJSON(),body:e.response.body}),r})),"doInScimContext");var QJe=a(async(e,t)=>{await ree(),await t()},"requireSCIM");var bM=a(e=>Are(rr.getById,e,!0),"scimUserOnly"),vM=a(e=>Are(Xn.get,e,!0),"scimGroupOnly"),wM=a(e=>Are(Xn.get,e,!1),"internalGroupOnly");function Are(e,t,r){return async(n,i)=>{let o=n.params[t];return typeof o!="string"&&n.throw(404),!!(await e(o)).scimInfo?.isSync!==r&&n.throw(404),i()}}a(Are,"scimSyncChecks");var L0r=require("dd-trace");var nXe=te(require("@koa/router")),vb=te(require("joi"));async function bb(e,t){t||e.throw(400,"App ID missing"),await bO.workspaceExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}a(bb,"checkAppID");async function YJe(e){let t=e.params.appId;await bb(e,t);let{body:r}=e.request,n=e.user?._id,i=await Zs.triggerAppBackup(t,"manual",{name:r.name,createdBy:n});i||e.throw(500,"Unable to start backup."),e.body={backupId:i,message:"Backup triggered - process starting."}}a(YJe,"manualBackup");async function JJe(e){let t=e.params.appId;await bb(e,t);let r=e.params.backupId,n=e.request.body.name,i=await Zs.triggerAppRestore(t,r,n,e.user?._id);i||e.throw(500,"Unable to start restore."),await Tt.backup.appBackupRestored(i.metadata),e.body={restoreId:i?.restoreId,message:"Restore triggered - process starting."}}a(JJe,"importBackup");async function XJe(e){let t=e.params.appId;await bb(e,t);let r=e.params.backupId;await Zs.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}a(XJe,"deleteBackup");async function ZJe(e){let t=W.getWorkspaceId();await bb(e,t);let{backupIds:r}=e.request.body;(!Array.isArray(r)||r.length===0)&&e.throw(400,"backupIds must be a non-empty array");let n=await Zs.deleteAppBackups(r),i=n.filter(s=>s.success).length,o=n.length-i;e.body={message:`${i} backups deleted successfully${o>0?`, ${o} failed`:""}.`,results:n,successCount:i,failureCount:o}}a(ZJe,"deleteBackups");async function eXe(e){let t=e.params.appId;await bb(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(Tm).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await Zs.fetchAppBackups(t,{paginate:!0,...r})}a(eXe,"fetchBackups");async function tXe(e){let t=e.params.appId;await bb(e,t);let r=e.params.backupId,n=e.request.body;e.body=await Zs.updateAppBackup(r,n.name)}a(tXe,"updateBackup");async function rXe(e){let t=e.params.appId;await bb(e,t);let r=e.params.backupId,{metadata:n,stream:i}=await Zs.getBackupDownloadStream(r);e.attachment(`backup-${n.timestamp}.tar.gz`),e.body=i}a(rXe,"downloadBackup");var j0r=new nXe.default;function M0r(){return fr.joiValidator.body(vb.default.object({trigger:vb.default.string().valid(...Object.values(Tm)),type:vb.default.string().valid(...Object.values(mS)),startDate:vb.default.date(),endDate:vb.default.date(),page:vb.default.string()}))}a(M0r,"validateBackupSearch");j0r.post("/api/apps/:appId/backups",fr.builderOrAdmin,YJe).post("/api/apps/:appId/backups/search",fr.builderOrAdmin,M0r(),eXe).get("/api/apps/:appId/backups/:backupId/file",fr.builderOrAdmin,rXe).patch("/api/apps/:appId/backups/:backupId",fr.builderOrAdmin,tXe).delete("/api/apps/:appId/backups/:backupId",fr.builderOrAdmin,XJe).delete("/api/apps/:appId/backups",fr.builderOrAdmin,ZJe).post("/api/apps/:appId/backups/:backupId/import",fr.builderOrAdmin,JJe);async function iXe(e){let t=e.request.body,r=await mb.fetch(t);await Tt.auditLog.filtered(t),e.body=r}a(iXe,"search");async function aXe(e){let t=e.request.body,{stream:r}=mb.download(t);await Tt.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}a(aXe,"download");async function oXe(e){e.body={events:mb.definitions()}}a(oXe,"definitions");var uXe=te(require("@koa/router")),Ju=te(require("joi"));function sXe(){return fr.joiValidator.body(Ju.default.object({userIds:Ju.default.array().items(Ju.default.string()).optional(),appIds:Ju.default.array().items(Ju.default.string()).optional(),events:Ju.default.array().items(Ju.default.string().valid(...Object.values(Er))).optional(),startDate:Ju.default.string().optional().allow(""),endDate:Ju.default.string().optional().allow(""),fullSearch:Ju.default.string().optional().allow(""),bookmark:Ju.default.number()}))}a(sXe,"buildAuditLogSearchValidator");var q0r=new uXe.default;q0r.post("/api/global/auditlogs/search",fr.adminOnly,sXe(),iXe).get("/api/global/auditlogs/download",fr.adminOnly,AU.querystringToBody,sXe(),aXe).get("/api/global/auditlogs/definitions",fr.adminOnly,oXe);async function cXe(e){e.body={encryptionKeyAvailable:rl.isEncryptionKeyAvailable()}}a(cXe,"status");async function lXe(e){e.body={variables:await rl.fetch()}}a(lXe,"fetch");async function fXe(e){let{name:t,production:r,development:n}=e.request.body;await rl.update(t,{production:r,development:n});let i=["production"];r!==n&&i.push("development"),await Tt.environmentVariable.created(t,i),e.body={message:`Environment variable "${t}" created.`}}a(fXe,"create");async function pXe(e){let{production:t,development:r}=e.request.body,n=e.params.varName;await rl.update(n,{production:t,development:r}),e.body={message:`Environment variable "${n}" updated.`}}a(pXe,"update");async function dXe(e){let t=e.params.varName;await rl.remove(t),await Tt.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}a(dXe,"destroy");var mXe=te(require("@koa/router")),rI=te(require("joi"));var z0r=new mXe.default;function hXe(){return fr.joiValidator.body(rI.default.object({name:rI.default.string().optional(),production:rI.default.string().required(),development:rI.default.string().required()}))}a(hXe,"buildEnvVarUpdateValidator");z0r.get("/api/env/variables/status",fr.builderOrAdmin,cXe).get("/api/env/variables",fr.builderOrAdmin,lXe).post("/api/env/variables",fr.builderOrAdmin,hXe(),fXe).patch("/api/env/variables/:varName",fr.builderOrAdmin,hXe(),pXe).delete("/api/env/variables/:varName",fr.builderOrAdmin,dXe);var xXe=te(require("@koa/router")),zo=te(require("joi"));async function gXe(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let n=await f_(t._id);t.roles=n.roles,t.scimInfo=n.scimInfo}let r=await lj(t);e.body={_id:r.id,_rev:r.rev}}a(gXe,"save");async function yXe(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of users to add or to remove");let i,o;r&&(i=await fj(t,r)),n&&(o=await dee(t,n)),e.body={added:i,removed:o}}a(yXe,"updateGroupUsers");async function bXe(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of objects, with appId and roleId to add or remove"),e.body=await hee(t,{appsToAdd:r,appsToRemove:n})}a(bXe,"updateGroupApps");async function vXe(e){e.body={data:await _O()}}a(vXe,"fetch");async function wXe(e){let{groupId:t,rev:r}=e.params;try{await pee(t,r),e.body={message:"Group deleted successfully"}}catch(n){e.throw(n.status,n)}}a(wXe,"destroy");async function EXe(e){try{e.body=await f_(e.params.groupId)}catch(t){e.throw(t.status,t)}}a(EXe,"find");async function _Xe(e){let{pageSize:t=10,bookmark:r,emailSearch:n}=e.request.query,i=e.params.groupId,o={limit:t+1},s=await GU(i,{...o,emailSearch:n,bookmark:r}),u=n?s[t]?.email:s[t]?._id,c=!!u;e.body={users:s.slice(0,t),bookmark:u,hasNextPage:c}}a(_Xe,"searchUsers");async function SXe(e){let{groupId:t}=e.params,{csvContent:r}=e.request.body;(r===void 0||r.trim().length===0)&&e.throw(400,"CSV is empty");let n=await GR.jsonFromCsvString(r,{allowSingleColumn:!0});(!n||n.length===0)&&e.throw(400,"CSV file is invalid");let o=Object.keys(n[0]).find(p=>/^(email|e-mail|email address|mail|e_mail)$/i.test(p.trim()));o||e.throw(400,"CSV file must contain an email column");let s=Array.from(new Set(n.map(p=>p[o]).filter(p=>p&&typeof p=="string"&&p.trim().length>0).map(p=>p.trim())));s.length===0&&e.throw(400,"No valid email addresses found in CSV");try{await f_(t)}catch(p){if(p.status===404)e.throw(404,"Group not found");else throw p}let u=[],c=[],l=[],f=await Promise.all(s.map(p=>Gu.getUserByEmail(p)));for(let p of s){let d=f.find(h=>h?.email===p);d?(u.push({_id:d._id,email:d.email}),l.push(d._id)):c.push({email:p,reason:"User not found"})}l.length>0&&await fj(t,l),e.body={added:u,skipped:c}}a(SXe,"bulkAddUsersFromCsv");var G0r=new xXe.default;function H0r(){return fr.joiValidator.body(zo.default.object({_id:zo.default.string().optional(),_rev:zo.default.string().optional(),color:zo.default.string().required(),icon:zo.default.string().required(),name:zo.default.string().trim().required().max(50),role:zo.default.string().optional(),users:zo.default.array().optional(),apps:zo.default.array().optional(),roles:zo.default.object().optional(),createdAt:zo.default.string().optional(),updatedAt:zo.default.string().optional()}).required())}a(H0r,"buildGroupSaveValidation");G0r.post("/api/global/groups",fr.adminOnly,wo.requireFeature("userGroups"),H0r(),gXe).get("/api/global/groups",wo.requireFeature("userGroups"),vXe).delete("/api/global/groups/:groupId/:rev",wo.requireFeature("userGroups"),fr.adminOnly,wM("groupId"),wXe).get("/api/global/groups/:groupId",wo.requireFeature("userGroups"),fr.builderOrAdmin,EXe).get("/api/global/groups/:groupId/users",wo.requireFeature("userGroups"),fr.builderOrAdmin,_Xe).post("/api/global/groups/:groupId/users",fr.adminOnly,wo.requireFeature("userGroups"),wM("groupId"),yXe).post("/api/global/groups/:groupId/users/bulk",fr.adminOnly,wo.requireFeature("userGroups"),wM("groupId"),fr.joiValidator.body(zo.default.object({csvContent:zo.default.string().required()}).required()),SXe).post("/api/global/groups/:groupId/apps",fr.builderOrAdmin,wo.requireFeature("userGroups"),bXe);var YXe=te(require("@koa/router"));var RM=te(Vre());function jXe(e,t){let r=e.request.query[t];if(r!==void 0)return+r}a(jXe,"tryGetQueryAsNumber");var MXe=a(async e=>{let t=jXe(e,"pageSize")??20,r=jXe(e,"startIndex"),n;e.request.query.filter&&(n=fa.user.userFilters(e.request.query.filter));let i=await eu.get({pageSize:t,skip:r,filters:n});e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:i.total,Resources:i.users.map(fa.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},"get"),BXe=a(async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await eu.find(t);e.body=fa.user.toScimUserResponse(r)},"find"),qXe=a(async e=>{let t=fa.user.fromScimUser(e.request.body);try{let r=await eu.create(t);e.body=fa.user.toScimUserResponse(r)}catch(r){throw r instanceof yp&&e.throw(409,"Email already in use"),r}},"create");function mxr(e){let t=e.Operations.find(r=>(r.op==="Replace"||r.op==="replace")&&r.path==="active");return t?t.value===!1||t.value?.toLowerCase?.()==="false":!1}a(mxr,"isDeactivation");var $Xe=a(async e=>{let t=await eu.find(e.params.id);t||e.throw(404);let r=fa.user.toScimUserResponse(t),n=e.request.body;try{(0,RM.patchBodyValidation)(n)}catch{}if(mxr(n))return Kre(e);let i;try{i=(0,RM.scimPatch)(r,n.Operations)}catch{}i||e.throw(500);let o=fa.user.fromScimUser(i);await eu.update(o,{allowChangingEmail:!0}),e.body=fa.user.toScimUserResponse(o)},"update"),Kre=a(async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await eu.remove(t),e.status=204},"remove");var zXe=te(require("lodash/groupBy"));var OM=te(Vre());var IM=te(AM());function WXe(e,t){for(let r of t.split(","))delete e[r]}a(WXe,"cleanResponse");var GXe=a(async e=>{let r=(await on.fetch()).filter(o=>o.scimInfo?.isSync).map(fa.group.toScimGroupResponse),{filter:n,excludedAttributes:i}=e.request.query;if(n){let o=(0,IM.filter)((0,IM.parse)(n));r=r.filter(o)}i&&r.forEach(o=>{WXe(o,i)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},"get"),HXe=a(async e=>{let t=fa.group.fromScimGroup(e.request.body),r=await tI.create(t);e.body=fa.group.toScimGroupResponse(r)},"create"),VXe=a(async e=>{let{id:t}=e.params,r=await on.get(t),n=fa.group.toScimGroupResponse(r),{excludedAttributes:i}=e.request.query;i&&WXe(n,i),e.body=n},"find"),KXe=a(async e=>{let{id:t}=e.params,r=await on.get(t);await on.remove(t,r._rev),e.status=204},"remove"),QXe=a(async e=>{let{id:t}=e.params,r=await on.get(t),n=fa.group.toScimGroupResponse(r),i=e.request.body;try{(0,OM.patchBodyValidation)(i)}catch{e.throw(400)}let{true:o,false:s}=(0,zXe.default)(i.Operations,u=>u.path==="members");if(s?.length){let u=(0,OM.scimPatch)(n,s);u||e.throw(500);let c={...fa.group.fromScimGroup(u),_rev:r._rev};await on.save(c)}if(o?.length){let u=[],c=[];for(let{op:l,value:f}of o)switch(l){case"add":case"Add":for(let p of f)u.push(await eu.find(p.value));break;case"remove":case"Remove":for(let p of f)c.push(await eu.find(p.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:$t.unreachable(l)}u.length&&await on.addUsers(t,u.map(l=>l._id)),c.length&&await on.removeUsers(t,c.map(l=>l._id))}e.body=fa.group.toScimGroupResponse(await on.get(t))},"update");var Xu=new YXe.default({prefix:"/api/global/scim/v2"});Xu.use(QJe);Xu.use(KJe);Xu.get("/users",MXe);Xu.get("/users/:id",bM("id"),BXe);Xu.post("/users",qXe);Xu.patch("/users/:id",bM("id"),$Xe);Xu.delete("/users/:id",bM("id"),Kre);Xu.get("/groups",GXe);Xu.post("/groups",wo.requireFeature("userGroups"),HXe);Xu.get("/groups/:id",wo.requireFeature("userGroups"),vM("id"),VXe);Xu.delete("/groups/:id",wo.requireFeature("userGroups"),vM("id"),KXe);Xu.patch("/groups/:id",wo.requireFeature("userGroups"),vM("id"),QXe);var fa={};oe(fa,{group:()=>Yre,user:()=>Qre});var Qre={};oe(Qre,{fromScimUser:()=>Sxr,toScimUserResponse:()=>wxr,userFilters:()=>xxr});var JXe=te(AM());var{unreachable:vxr}=$t,wxr=a(e=>{let{isSync:t,roles:r,...n}=e.scimInfo||{},i={...n,schemas:["urn:ietf:params:scim:schemas:core:2.0:User"],id:e._id,meta:{resourceType:"User",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},active:e.status==="active"};return(e.firstName||e.lastName)&&(i.name={formatted:[e.firstName,e.lastName].filter(o=>o).join(" "),familyName:e.lastName,givenName:e.firstName}),i},"toScimUserResponse"),Exr=a(e=>!!e?.id,"isScimUserResponse");function _xr(e){if(Cr.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}a(_xr,"tryGetEmail");var Sxr=a(e=>{let t=Exr(e)?e:void 0,r=_xr(e);if(!r)throw new Error("Email is required");let n;switch(e.active){case"True":case"true":case!0:n=!0;break;case"False":case"false":case!1:n=!1;break;default:vxr(e.active)}let i,o;return e.name?.givenName?(i=e.name?.givenName,o=e.name?.familyName):i=e.displayName,{tenantId:"",_id:t?.id,userId:t?.id,email:r,firstName:i,lastName:o,scimInfo:{...e,isSync:!0},roles:{},status:n?"active":"inactive",createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},"fromScimUser"),xxr=a(e=>{let t={equal:{}},r=(0,JXe.parse)(e);function n(i){switch(i.op){case"eq":{let o=i.attrPath,s;switch(o){case"emails.value":s="email";break;default:s=`scimInfo.${o}`}t.equal[s]=i.compValue;break}case"and":for(let o of i.filters)n(o);break;default:console.warn("Filter not handled",{filter:i})}}return a(n,"parseFilters"),n(r),t},"userFilters");var Yre={};oe(Yre,{fromScimGroup:()=>Rxr,toScimGroupResponse:()=>Txr});var Txr=a(e=>({schemas:["urn:ietf:params:scim:schemas:core:2.0:Group"],id:e._id,externalId:e.scimInfo.externalId,meta:{resourceType:"Group",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},displayName:e.name,members:e.users?.map(t=>({value:t._id}))}),"toScimGroupResponse"),Axr=a(e=>!!e?.id,"isScimGroup"),Rxr=a(e=>{let t=Axr(e)?e:void 0;return{_id:t?.id,name:e.displayName,scimInfo:{externalId:e.externalId,isSync:!0},icon:"UserGroup",color:"var(--spectrum-global-color-blue-600)",createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},"fromScimGroup");var ci={};oe(ci,{LLM:()=>gf,LLMRequest:()=>ki,TableGeneration:()=>vne,agentHistoryTitleSystemPrompt:()=>jxr,agentSystemPrompt:()=>Uxr,aiColumnSchemas:()=>yne,aiTableResponseToTableSchema:()=>dne,appendAIColumns:()=>hne,classifyText:()=>Zre,cleanData:()=>ene,extractFileData:()=>Pxr,generateAIColumns:()=>fne,generateCode:()=>Fxr,generateCronExpression:()=>tne,generateData:()=>pne,generateJs:()=>ane,generateSQL:()=>Lxr,generateTables:()=>lne,generationStructure:()=>gne,getLLM:()=>lI,getLLMConfig:()=>cne,getLLMOrThrow:()=>iZe,normalizeContentType:()=>Jre,parseResponseFormat:()=>CM,sanitiseToolName:()=>Oxr,searchWeb:()=>ine,sentimentAnalysis:()=>nne,summarizeText:()=>kM,tableDataStructuredOutput:()=>bne,translate:()=>rne});function Oxr(e){if(e.length>64)throw new Error("Tool name must be under 64 characters long");return e.replace(/[^a-zA-Z0-9_-]/g,"_")}a(Oxr,"sanitiseToolName");function Jre(e){return e?e.includes("/")?e:{pdf:"application/pdf",jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png"}[e.toLowerCase()]||"application/octet-stream":"application/octet-stream"}a(Jre,"normalizeContentType");var DM=te(require("openai"));var lm=te(require("dd-trace"));function Xre(e,t){return t.map(r=>e[r]).join(" ")}a(Xre,"extractTextFromColumns");var gf=class{static{a(this,"LLM")}constructor({model:t,apiKey:r,maxTokens:n}){this._model=t,this._apiKey=r,this._maxTokens=n??parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"1000")}get model(){return this._model}get apiKey(){return this._apiKey}get maxTokens(){return this._maxTokens}async prompt(t){return await lm.default.trace("prompt",async()=>{let r=typeof t=="string"?new ki().addUserMessage(t):t,{messages:n,tokensUsed:i}=await lm.default.trace("chatCompletion",()=>this.chatCompletion(r));return!n||n.length===0?{message:"",tokensUsed:i}:{message:n[n.length-1].content||"",tokensUsed:i}})}async chat(t){return await lm.default.trace("chat",async()=>await this.chatCompletion(t))}async*chatStream(t){yield*this.chatCompletionStream(t)}async summarizeText(t){return lm.default.trace("summarizeText",()=>this.prompt(kM(t)))}async generateCronExpression(t){return lm.default.trace("generateCronExpression",()=>this.prompt(tne(t)))}async operation(t,r){return lm.default.trace("operation",n=>{n.addTags({operation:t.operation,rowId:r.id});let i=this.promptForOperation(t,r);return this.prompt(i)})}promptForOperation(t,r){let{operation:n,column:i,columns:o,language:s,categories:u,prompt:c}=t;switch(n){case"SUMMARISE_TEXT":return kM(Xre(r,o));case"CLEAN_DATA":return ene(r[i]);case"TRANSLATE":return rne(r[i],s);case"CATEGORISE_TEXT":if(!u)throw Error("No categories provided for categorise text operation. Please provide categories.");return Zre(Xre(r,o),u.split(","));case"SENTIMENT_ANALYSIS":return nne(r[i]);case"PROMPT":return c;case"SEARCH_WEB":return ine(Xre(r,o));default:throw $t.unreachable(n)}}async generateJs(t,r){return await lm.default.trace("generateJs",async()=>{let{bindings:n=[],snippets:i=[]}=r||{};return await this.prompt(ane(n,i).addUserMessage(t))})}};var one=require("openai/helpers/zod");var ZXe=(n=>(n.GPT_5_MINI="gpt-5-mini",n.GPT_5="gpt-5",n.GPT_5_NANO="gpt-5-nano",n))(ZXe||{});function CM(e){if(e)return e==="text"?{type:"text"}:e==="json"?{type:"json_object"}:e}a(CM,"parseResponseFormat");function XXe(e){if(!e)return 0;let t=e.prompt_tokens;return e.completion_tokens*3+t}a(XXe,"calculateBudibaseAICredits");var Zu=class extends gf{constructor(r){super(r);this.client=this.getClient(r)}static{a(this,"OpenAI")}getClient(r){if(!r.apiKey)throw new Error("No OpenAI API key found");return new DM.default({apiKey:r.apiKey})}async uploadFile(r,n,i){let o=Jre(i);if(ok.includes(o.toLowerCase())){let c;if(Buffer.isBuffer(r))c=r;else{let f=[];for await(let p of r)f.push(new Uint8Array(p));c=Buffer.concat(f)}let l=c.toString("base64");return`data:${o};base64,${l}`}let s=await(0,DM.toFile)(r,n);return(await this.client.files.create({file:s,purpose:"assistants"})).id}async chatCompletion(r){let n={model:this.model,messages:r.messages,max_completion_tokens:this._maxTokens,response_format:CM(r.format)};Object.values(ZXe).includes(this.model)&&(n.verbosity="low",n.reasoning_effort="minimal"),r.tools&&r.tools.length>0&&(n.tool_choice="auto",n.tools=r.tools.map(one.zodFunction));let i=await this.client.chat.completions.create(n),o=i?.choices?.[0]?.message;if(o?.tool_calls){r.addMessage(o);let s=[];for(let u of o.tool_calls){if(u.type!=="function"||!u.function){console.warn(`[OPENAI TOOL WARN] Unsupported tool call type: ${u.type}`);continue}let c=u.function.name,l=r.findTool(c);if(!l)throw new Error(`Tool ${c} not found in prompt tools`);let f=JSON.parse(u.function.arguments);s.push(l.handler(f).then(p=>({role:"tool",tool_call_id:u.id,content:p})).catch(p=>(console.error(`[OPENAI TOOL ERROR] Tool ${c} failed in OpenAI handler:`,p),{role:"tool",tool_call_id:u.id,content:`Error: ${p.message}`})))}return r.addMessages(await Promise.all(s)),this.chatCompletion(r)}else{if(o?.content)return{messages:[...r.messages,{role:o.role,content:o.content}],tokensUsed:XXe(i.usage)};throw new Error("No response found")}}async*chatCompletionStream(r){let n={model:this.model,messages:r.messages,max_tokens:this.maxTokens,response_format:CM(r.format),stream:!0};r.tools&&r.tools.length>0&&(n.tool_choice="auto",n.tools=r.tools.map(one.zodFunction));try{let i=await this.client.chat.completions.create(n),o=null,s="",u=null;for await(let l of i){let f=l?.choices?.[0]?.delta;if(f){if(f.content&&(s+=f.content,yield{type:"content",content:f.content}),f.tool_calls&&f.tool_calls.length>0){let p=f.tool_calls[0];p.id?(o={id:p.id,name:p.function?.name||"",arguments:p.function?.arguments||""},yield{type:"tool_call_start",toolCall:{id:o.id,name:o.name,arguments:o.arguments}}):o&&p.function?.arguments&&(o.arguments+=p.function.arguments,yield{type:"tool_call_start",toolCall:{id:o.id,name:o.name,arguments:o.arguments}})}l.usage&&(u=l.usage)}}let c=u?XXe(u):0;if(o){r.addMessage({role:"assistant",content:"",tool_calls:[{id:o.id,type:"function",function:{name:o.name,arguments:o.arguments}}]});let l=r.findTool(o.name);if(l)try{let f=JSON.parse(o.arguments),p=await l.handler(f);yield{type:"tool_call_result",toolResult:{id:o.id,result:p}},r.addMessage({role:"tool",tool_call_id:o.id,content:p}),yield*this.chatCompletionStream(r);return}catch(f){yield{type:"tool_call_result",toolResult:{id:o.id,result:`Error: ${f.message}`,error:f.message}},r.addMessage({role:"tool",tool_call_id:o.id,content:`Error: ${f.message}`}),yield*this.chatCompletionStream(r);return}else{let f=`Tool '${o.name}' not found`;yield{type:"tool_call_result",toolResult:{id:o.id,result:f,error:f}},r.addMessage({role:"tool",tool_call_id:o.id,content:f}),yield*this.chatCompletionStream(r);return}}s&&r.addMessage({role:"assistant",content:s}),yield{type:"done",messages:r.messages,tokensUsed:c}}catch(i){yield{type:"error",content:i.message}}}};var sne=require("dd-trace");var PM=class extends gf{static{a(this,"BudibaseAI")}async prompt(t){let r=await super.prompt(t);return r.tokensUsed&&await uj(r.tokensUsed),r}async chat(t){let r=await super.chat(t);return r.tokensUsed&&await uj(r.tokensUsed),r}async uploadFile(t,r,n){return V.SELF_HOSTED?this.uploadFileSelfHost(t,r,n):this.uploadFileCloud(t,r,n)}async uploadFileCloud(t,r,n){return new Zu({apiKey:V.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).uploadFile(t,r,n)}async uploadFileSelfHost(t,r,n){let i;if(Buffer.isBuffer(t))i=t;else{let f=[];for await(let p of t)f.push(new Uint8Array(p));i=Buffer.concat(f)}let o=i.toString("base64");if(n&&ok.includes(n.toLowerCase()))return`data:image/jpeg;base64,${o}`;if(!V.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(!this._apiKey){let f=await nj();if(!f)throw new Error("No license key found");this._apiKey=f}let s=`${V.BUDICLOUD_URL}/api/ai/upload-file`,u={method:"POST",headers:{"Content-Type":"application/json",[gr.Header.LICENSE_KEY]:this._apiKey},body:JSON.stringify({data:o,filename:r,contentType:n})};console.debug("[BudibaseAI] uploadFileSelfHost - Making network call",{url:s,method:u.method,headers:u.headers,bodyKeys:["data","filename","contentType"],filename:r,contentType:n});let c=await fetch(s,u);if(console.debug("[BudibaseAI] uploadFileSelfHost - Network response",{url:s,status:c.status,statusText:c.statusText,ok:c.ok}),!c.ok)throw await Re.fromResponse(c);return(await c.json()).fileId}async chatCompletion(t){return V.SELF_HOSTED?this.chatCompletionSelfHost(t):this.chatCompletionCloud(t)}async chatCompletionCloud(t){return await sne.tracer.trace("chatCompletionCloud",async()=>await new Zu({apiKey:V.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).chatCompletion(t))}async chatCompletionSelfHost(t){return await sne.tracer.trace("chatCompletionSelfHost",async r=>{if(!V.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(r.addTags({budicloudUrl:V.BUDICLOUD_URL}),!this._apiKey){let c=await nj();if(!c)throw new Error("No license key found");this._apiKey=c,r.addTags({licenseKey:this._apiKey})}let n={messages:t.messages,format:t.format,useTools:t.tools.length>0},i=`${V.BUDICLOUD_URL}/api/ai/chat`,o={method:"POST",headers:{"Content-Type":"application/json",[gr.Header.LICENSE_KEY]:this._apiKey},body:JSON.stringify(n)};console.debug("[BudibaseAI] chatCompletionSelfHost - Making network call",{url:i,method:o.method,headers:o.headers,bodyKeys:Object.keys(n),messagesCount:t.messages.length,useTools:n.useTools,format:n.format});let s=await fetch(i,o);if(console.debug("[BudibaseAI] chatCompletionSelfHost - Network response",{url:i,status:s.status,statusText:s.statusText,ok:s.ok}),!s.ok)throw await Re.fromResponse(s);let u=await s.json();return console.debug("[BudibaseAI] chatCompletionSelfHost - Response data",{url:i,tokensUsed:u.tokensUsed,messagesCount:u.messages?.length}),u})}async*chatCompletionStream(t){V.SELF_HOSTED?yield*this.chatCompletionStreamSelfHost(t):yield*this.chatCompletionStreamCloud(t)}async*chatCompletionStreamCloud(t){yield*new Zu({apiKey:V.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).chatCompletionStream(t)}async*chatCompletionStreamSelfHost(t){console.debug("[BudibaseAI] chatCompletionStreamSelfHost - Starting streaming (fallback to non-streaming)",{messagesCount:t.messages.length,toolsCount:t.tools.length});try{let r=await this.chatCompletionSelfHost(t);if(console.debug("[BudibaseAI] chatCompletionStreamSelfHost - Yielding response chunks",{responseMessagesCount:r.messages.length,tokensUsed:r.tokensUsed}),r.messages.length>0){let n=r.messages[r.messages.length-1];n.content&&(yield{type:"content",content:n.content})}yield{type:"done",messages:r.messages,tokensUsed:r.tokensUsed}}catch(r){console.debug("[BudibaseAI] chatCompletionStreamSelfHost - Error occurred",{error:r.message}),yield{type:"error",content:r.message}}}};var cI=require("dd-trace");var une=te(require("@anthropic-ai/sdk"));function Ixr(e){if(!e)return 0;let t=e.input_tokens;return e.output_tokens*3+t}a(Ixr,"calculateBudibaseAICredits");var NM=class extends gf{constructor(r){super(r);this.client=new une.default({apiKey:r.apiKey})}static{a(this,"Anthropic")}firstTextBlock(r){for(let n of r.content)if(n.type==="text")return n.text}async uploadFile(r,n,i){throw new Error("File upload not supported for this LLM provider")}async chatCompletion(r){try{let n=await this.client.messages.create({model:this.model,messages:r.messages.map(({content:o})=>{if(o==null)return{role:"user",content:""};if(typeof o=="string")return{role:"user",content:o};let s="";for(let u of o)u.type==="text"?s+=u.text:["image_url","input_audio","file"].includes(u.type);return{role:"user",content:s}}),max_tokens:this.maxTokens}),i=this.firstTextBlock(n)||"";return{messages:[...r.messages,{role:"assistant",content:i}],tokensUsed:Ixr(n.usage)}}catch(n){throw n instanceof une.default.APIError&&console.error(`Anthropic Prompt failed with error ${n.name} and status: ${n.status}`),n}}async*chatCompletionStream(r){try{let n=await this.chatCompletion(r);if(n.messages.length>0){let i=n.messages[n.messages.length-1];i.content&&(yield{type:"content",content:i.content})}yield{type:"done",messages:n.messages,tokensUsed:n.tokensUsed}}catch(n){yield{type:"error",content:n.message}}}};var tZe=require("zod"),rZe=require("openai/helpers/zod");var eZe=require("openai");var LM=class extends Zu{static{a(this,"AzureOpenAI")}getClient(t){if(!t.apiKey)throw new Error("No Azure OpenAI API key found");if(!t.model)throw new Error("No Azure OpenAI model specified");return new eZe.AzureOpenAI({apiKey:t.apiKey,apiVersion:"2024-10-01-preview",baseURL:t.baseUrl})}};var nZe="gpt-5-mini",kxr={OpenAI:Zu,TogetherAI:Zu,AzureOpenAI:LM,Custom:Zu,Anthropic:NM,BudibaseAI:PM};async function Cxr(){return await cI.tracer.trace("getAIConfig",async e=>{let t={type:"ai",config:{}};if(!W.isSelfHostUsingCloud()){let n=await ja.getAIConfig();n&&(t=n)}await iee(t);let r=Object.values(t.config).find(n=>n.active&&n.isDefault);if(!r){e.addTags({enabled:!1,reason:"no provider found"});return}return e.addTags({enabled:!0}),{provider:r.provider,model:r.defaultModel||nZe,apiKey:r.apiKey,baseUrl:r.baseUrl}})}a(Cxr,"getAIConfig");async function Dxr(){return cI.tracer.trace("getSelfHostOpenAIKeyConfig",e=>{if(!V.SELF_HOSTED){e.addTags({enabled:!1,reason:"not self host"});return}if(!V.OPENAI_API_KEY){e.addTags({enabled:!1,reason:"no OPENAI_API_KEY"});return}return e.addTags({enabled:!0}),{provider:"OpenAI",model:nZe,apiKey:V.OPENAI_API_KEY}})}a(Dxr,"getSelfHostOpenAIKeyConfig");async function cne(){return cI.tracer.trace("getLLMConfig",async()=>await Cxr()||await Dxr())}a(cne,"getLLMConfig");async function lI(e){return await cI.tracer.trace("getLLM",async t=>{let{model:r,maxTokens:n}=e||{},i=await cne();if(!i){t.addTags({enabled:!1,reason:"no config found"});return}r&&(i.model=r),n&&(i.maxTokens=n);let o=kxr[i.provider];if(!o){t.addTags({enabled:!1,reason:"no provider found",provider:i.provider});return}return new o(i)})}a(lI,"getLLM");async function iZe(){let e=await lI();if(!e)throw new Re("No available LLM configurations",500);return e}a(iZe,"getLLMOrThrow");var ki=class e{constructor(){this.messages=[];this.tools=[]}static{a(this,"LLMRequest")}addTool(t){return this.tools.push(t),this}addTools(t){return this.tools.push(...t),this}findTool(t){return this.tools.find(r=>r.name===t)}withFormat(t){return t instanceof tZe.z.ZodType?this.format=(0,rZe.zodResponseFormat)(t,"key"):this.format=t,this}addMessage(t){return this.messages.push(t),this}addMessages(t){return this.messages.push(...t),this}addUserMessage(t){return this.messages.push({role:"user",content:t}),this}addSystemMessage(t){return this.messages.push({role:"system",content:t}),this}static fromRequest(t){let r=new e;return t.messages&&r.addMessages(t.messages),t.format&&r.withFormat(t.format),r}};var ed=require("zod");function kM(e,t){let r=`Summarize this text:
587
+ `).length,t=a(r=>(...n)=>{hb()||console[r](...n),n.forEach((o,s)=>{typeof o=="object"&&(n[s]=JSON.stringify(o))});let i=new Error().stack?.match(/<anonymous>:(\d+):\d+/)?.[1];logs.push({log:n,line:i?parseInt(i)-e:void 0,type:r})},"buildLogResponse");sandboxContext.console={log:t("log"),info:t("info"),debug:t("debug"),warn:t("warn"),error:t("error"),table:t("table")}}let res={data:dM(js,sandboxContext),logs};return`{{${O_} js_result-${JSON.stringify(res)}}}`}catch(e){are&&are(e);let{noThrow:t=!0}=context.__opts||{};if(e.code==="ERR_SCRIPT_EXECUTION_TIMEOUT")return"Timed out while executing JS";if(e.code==="JS_REQUEST_TIMEOUT_ERROR")return e.message;if(e.code===um.code)return um.message;if(e.code===il.code){if(t)return e.userScriptError.toString();throw e}if(e.name==="SyntaxError"){if(t)return e.toString();throw e}return"Error while executing JS"}}a(SJe,"processJS");var USr={"<":"&lt;",">":"&gt;"};function jSr(e){return e==null||typeof e!="object"?!1:e.toString()==="[object Object]"||e.length>0&&typeof e[0]=="object"}a(jSr,"isObject");var MSr=[new Kp(pb.OBJECT,e=>new hM.default.SafeString(JSON.stringify(e))),new Kp(pb.JS,SJe,!1),new Kp(pb.DECODE_ID,e=>{if(!e)return[];let t=typeof e=="string"?e:e._id,r=decodeURIComponent(t).replace(/'/g,'"');try{let n=JSON.parse(r);return Array.isArray(n)?n:[n]}catch{return[e]}}),new Kp(pb.ALL,(e,t)=>{let{__opts:r}=t;if(jSr(e))return new hM.default.SafeString(JSON.stringify(e));if(r&&r.onlyFound&&e==null)return r.input;if(e==null||typeof e!="string")return e??"";e&&e.string&&(e=e.string);let n=e;return r&&r.escapeNewlines&&(n=e.replace(/\n/g,"\\n")),n=new hM.default.SafeString(n.replace(/&amp;/g,"&")),n==null||typeof n!="string"?n:n.replace(/[<>]/g,i=>USr[i]||i)}),new Kp(pb.LITERAL,e=>{if(e===void 0)return"";let t=typeof e,r=t==="object"?JSON.stringify(e):e;return`{{${O_} ${t}-${r}}}`})];function xJe(){return Object.values(pb).concat(lM,tre)}a(xJe,"HelperNames");function sre(e){for(let t of MSr)t.register(e)}a(sre,"registerMinimum");function TJe(e){sre(e),aJe(e)}a(TJe,"registerAll");var AJe=["#","else","/"];var I_=class{static{a(this,"Preprocessor")}constructor(t,r){this.name=t,this.fn=r}process(t,r,n){let i=this.fn(r,n),o=t.indexOf(r);return ire(t,o,r.length,i)}},RJe=[new I_("swap-to-dot-notation",e=>{let t=e.indexOf("["),r=0;for(;t!==-1;){cJe(e.charAt(t-1))&&(e=ire(e,t+r,1,".[")),r=t+1;let n=e.substring(r+1).indexOf("[");t=n>0?r+1+n:-1}return e}),new I_("fix-functions",e=>{for(let t of AJe){let r=`{ ${t}`,n=`{${t}`;e=e.replace(new RegExp(r,"g"),n)}return e}),new I_("normalize-spaces",e=>e.replace(/{{(\s{2,})/g,"{{ ")),new I_("finalise",(e,t)=>{let n=!t?.noHelpers,i=e.slice(2,e.length-2);i.charAt(0)===" "&&(i=i.slice(1)),i.charAt(i.length-1)===" "&&(i=i.slice(0,i.length-1));let o=i.split(" ")[0];for(let u of AJe)if(o.includes(u))return e;let s=o.trim().toLowerCase();return n&&!t?.disabledHelpers?.includes(s)&&xJe().some(u=>s===u.toLowerCase())&&(i=`(${i})`),`{{ all ${i} }}`})];var ure=class{static{a(this,"Postprocessor")}constructor(t,r){this.name=t,this.fn=r}process(t){return this.fn(t)}},cre=[new ure("convert-literals",e=>{if(typeof e!="string"||!e.includes(O_))return{result:e};let t=e.indexOf("-"),r=e.substring(12,t),n=e.substring(t+1,e.length-2);switch(r){case"string":return{result:n};case"number":return{result:parseFloat(n)};case"boolean":return{result:n==="true"};case"object":return{result:JSON.parse(n)};case"js_result":{let i=JSON.parse(n);return{result:i.data,logs:i.logs}}}return{result:n}})];function lre(e,t,r){let n=[];for(let i of t){if(typeof e!="string")break;let o=new RegExp(YO),s=e.match(o);if(s!=null)for(let u of s){let c=i.process(e,u,r||{});typeof c=="object"?("logs"in c&&c.logs&&(n=n.concat(c.logs)),e=c.result):e=c}}return{result:e,logs:n}}a(lre,"process");function OJe(e,t){let r=RJe;return t.noFinalise&&(r=r.filter(n=>n.name!=="finalise")),lre(e,r,t).result}a(OJe,"preprocess");function IJe(e){return lre(e,cre).result}a(IJe,"postprocess");function kJe(e){return lre(e,cre)}a(kJe,"postprocessWithLogs");var dre=(0,pre.create)();TJe(dre);var $Sr=Object.keys(dre.helpers),PJe=(0,pre.create)();sre(PJe);var zSr={noHelpers:!1,cacheTemplates:!1,noEscaping:!1,escapeNewlines:!1,noFinalise:!1};function NJe(e){try{JSON.stringify(e)}catch{throw"Unable to process inputs to JSON, cannot recurse"}}a(NJe,"testObject");function WSr(e){return e?Object.keys(e).filter(r=>$Sr.includes(r)):[]}a(WSr,"findOverlappingHelpers");var fre={};function GSr(e,t,r){t={...zSr,...t};let n=!t?.noHelpers,i=`${e}-${JSON.stringify(t)}`;if(t.cacheTemplates&&fre[i])return fre[i];let o=n?WSr(r):[];if(e=OJe(e,{...t,disabledHelpers:o}),r&&n&&o.length>0)for(let c of al(e))e=e.replace(c,lJe(c,o,"./"));t.noEscaping&&(e=VSr(e));let u=(t.noHelpers?PJe:dre).compile(e,{strict:!1});return fre[i]=u,u}a(GSr,"createTemplate");async function mM(e,t,r){NJe(e);for(let n of Object.keys(e||{}))if(e[n]!=null){let i=e[n],o=i;typeof i=="string"?o=await hre(e[n],t,r):typeof i=="object"&&(o=await mM(e[n],t,r)),e[n]=o}return e}a(mM,"processObject");async function hre(e,t,r){return Zn(e,t,r)}a(hre,"processString");function eI(e,t,r){NJe(e);for(let n of Object.keys(e||{})){let i=e[n];typeof i=="string"?e[n]=Zn(e[n],t,r):typeof i=="object"&&(e[n]=eI(e[n],t,r))}return e}a(eI,"processObjectSync");function HSr(e,t,r){let n=e;if(typeof e!="string")throw new Error("Cannot process non-string types.");function i(o){let s=GSr(o,r,t),u=Math.floor(Date.now()/1e3)*1e3,c=s({now:new Date(u).toISOString(),__opts:{...r,input:o},...t});return r?.logging?kJe(c):IJe(c)}a(i,"process");try{if(r&&r.onlyFound){let o=[],s=al(e);for(let u of s){let c=i(u);typeof c=="object"&&"result"in c?(o=o.concat(c.logs||[]),e=e.replace(u,c.result)):e=e.replace(u,c)}return r?.logging?{result:e,logs:o}:e}else return i(e)}catch(o){let{noThrow:s=!0}=r||{};if(s)return n;throw o}}a(HSr,"processStringSyncInternal");function Zn(e,t,r){return HSr(e,t,{...r,logging:!1})}a(Zn,"processStringSync");function VSr(e){let t=uJe(e);if(t==null)return e;let r=[...new Set(t)];for(let n of r){let i=new RegExp(`${n}(?!})`,"g");e=e.replace(i,`{${n}}`)}return e}a(VSr,"disableEscaping");function mre(e){return gM(e)!=null}a(mre,"isJSBinding");function gM(e){if(!e||typeof e!="string"||!e.trim().startsWith("{{ js "))return null;let t=new RegExp(/{{ js "(.*)" }}/),r=e.match(t);return!r||r.length<2?null:fM(r[1])}a(gM,"decodeJSBinding");function LJe(e,t){let r=new RegExp(YO),n=e.match(r);if(n==null)return!1;for(let i of n){let o=i;mre(i)&&(o=gM(i));let s=!0;for(let u of t)o.includes(u)||(s=!1);if(s)return!0}return!1}a(LJe,"doesContainStrings");function al(e){if(!e||typeof e!="string")return[];let t=new RegExp(nre),r=e.match(t);return r??[]}a(al,"findHBSBlocks");function KSr(){let e=hb()?DJe.default:CJe.default;ZO((t,r)=>{e.createContext(r);let n=pM(t),i=e.runInNewContext(n,r);if(i.error)throw new il(i.error);return i.result})}a(KSr,"browserJSSetup");function QSr(){JO()?_Je():KSr()}a(QSr,"defaultJSSetup");QSr();var YSr=gr.MIN_VALID_DATE.toISOString(),JSr=gr.MAX_VALID_DATE.toISOString();function gre(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||YSr,e.endDate=e.endDate||JSr),e}a(gre,"fillDates");async function FJe(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(n=>ne.getProdWorkspaceID(n)));let t={};function r(n,i){i?.length&&(t.oneOf={...t.oneOf,[n]:i})}return a(r,"addStringParams"),r("userId",e.userIds),r("appId",e.appIds),r("event",e.events),e.fullSearch&&(t.fuzzyOr=!0,t.fuzzy={name:e.fullSearch,fallback:e.fullSearch}),(e.startDate||e.endDate)&&(e=gre(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}a(FJe,"getSearchFilters");function yre(e,t,r){let n={_id:e,status:"deleted"};switch(t){case"app":n.name=r?.appName;break;case"user":n.email=r?.email;break}return n}a(yre,"deleted");function bre(e){let t=al(e);for(let r of t){let n=` "${r}"`;e=e.replace(e.includes(n)?n:` ${r}`,""),e=Zn(e,{})}return e}a(bre,"removeTemplateStrings");function UJe(e,t){let r=jb[e];if(!r)throw new Error("No friendly name found.");let n=Zn(r,t);return n.includes('""')&&(n=bre(r)),n}a(UJe,"getEventFriendlyName");async function XSr(e,t,r){if(!await oj()||!Cr.isAudited(e))return;let n=UJe(e,t),i=new Date;r?.timestamp&&(i=new Date(r.timestamp));let o={timestamp:i.toISOString(),event:e,name:n,userId:r?.userId||use,metadata:{...t,...r?.hostInfo}},s={};try{if(r?.appId){o.appId=ne.getProdWorkspaceID(r.appId);let u=await Ht.workspace.getWorkspaceMetadata(r.appId);"name"in u&&(s.appName=u.name)}if(r?.userId){let u=await rr.getById(r?.userId);s.email=u.email}}catch(u){kt.logAlert("Failed to retrieve fallback information for audit log",u)}return o.fallback=s,await VVe(o)}a(XSr,"write");async function ZSr(e){let t=e.map(u=>u.userId),n=e.filter(u=>u.appId).map(u=>ne.getDevWorkspaceID(u.appId)),i=await rr.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),o=await ne.getWorkspacesByIDs([...new Set(n)]),s=[];for(let u of e){let c=i.find(p=>p?._id===u.userId),l=o.find(p=>ne.isSameWorkspaceID(p?.appId,u.appId)),f={event:u.event,timestamp:u.timestamp,name:u.name,metadata:u.metadata,user:c||yre(u.userId,"user",u.fallback)};u.appId&&(f.app=l||yre(u.appId,"app",u.fallback)),s.push(f)}return s}a(ZSr,"enrich");async function e0r(e){if(!await oj())throw new Error("Audit logs not available - license required.");let t=await FJe(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await xee(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await ZSr(r.rows)}}a(e0r,"fetch");function t0r(e){return e=gre(e),KVe(e)}a(t0r,"download");function r0r(){let e=Object.entries(jb).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=bre(r[1]);return t}a(r0r,"definitions");var _re={};oe(_re,{applications:()=>Ere,roles:()=>wre,users:()=>vre});var vre={};oe(vre,{roleCheck:()=>i0r});function n0r(e,t){let r=e.request.body;return r.builder&&(r.builder=t?.builder||void 0),r.admin&&(r.admin=t?.admin||void 0),r.roles&&(r.roles=t?.roles||{}),e.request.body=r,e}a(n0r,"removeRoles");async function i0r(e,t){return await qp()||n0r(e,t),e}a(i0r,"roleCheck");var wre={};oe(wre,{assign:()=>a0r,unAssign:()=>o0r});async function a0r(e,t){if(!await qp())throw new Error("Unable to assign roles - license required.");let r=await Gu.bulkGet(e);for(let n of r){if(t.role&&t.role.roleId){let i=ne.getProdWorkspaceID(t.role.appId);n.roles[i]=t.role.roleId}if(t.appBuilder){let i=ne.getProdWorkspaceID(t.appBuilder.appId),o=n.builder?.apps||[];n.builder={apps:o.concat([i])}}t.builder&&(n.builder={global:!0}),t.admin&&(n.admin={global:!0}),n.roles}await Gu.bulkUpdate(r)}a(a0r,"assign");async function o0r(e,t){if(!await qp())throw new Error("Unable to un-assign roles - license required.");let r=await Gu.bulkGet(e);for(let n of r){if(t.role){let i=ne.getProdWorkspaceID(t.role?.appId);n.roles[i]===t.role.roleId&&delete n.roles[i]}if(t.appBuilder&&n.builder?.apps){let i=ne.getProdWorkspaceID(t.appBuilder.appId);n.builder.apps=n.builder.apps.filter(o=>o!==i)}t.builder&&n.builder&&delete n.builder,t.admin&&n.admin&&delete n.admin}}a(o0r,"unAssign");var Ere={};oe(Ere,{buildExportFn:()=>u0r,buildImportFn:()=>s0r});function s0r(e){return async(t,r)=>{await qp()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await W.doInWorkspaceContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}a(s0r,"buildImportFn");function u0r(e){return async(t,r)=>{await qp()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:n,excludeRows:i}=t.request.body;await W.doInWorkspaceContext(t.params.appId,async()=>{t.request.body={encryptPassword:n,excludeRows:i},t.query.appId=t.params.appId,await e(t),await r()})}}a(u0r,"buildExportFn");var BJe=te(require("fs")),qJe=require("path");var jJe;function MJe(){jJe=new co.BudibaseQueue(co.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}a(MJe,"init");function gb(){return jJe}a(gb,"getBackupQueue");async function Sre(e,t={}){return Wu.storeAppBackupMetadata(e,t)}a(Sre,"storeAppBackupMetadata");function $Je(e){let t=new Date().toISOString();switch(e){case"complete":case"failed":return{timestamp:t,finishedAt:t};case"started":return{timestamp:t,startedAt:t};case"pending":return{timestamp:t,createdAt:t}}}a($Je,"getTimestamps");async function l0r(e,t,r,n){let i=await yM(e);return await Wu.storeAppBackupMetadata({...i,...$Je(t),contents:r,status:t,type:"backup"},{filename:n,docId:e})}a(l0r,"updateBackupStatus");async function f0r(e,t,r){let n=await yM(e);return await Wu.storeAppBackupMetadata({...n,...$Je(r),status:r,type:"restore",trigger:"manual"},{docId:e,docRev:t})}a(f0r,"updateRestoreStatus");async function yM(e){return Wu.getAppBackupMetadata(e)}a(yM,"getAppBackup");async function p0r(e,t){return Wu.updateAppBackupMetadata(e,t)}a(p0r,"updateAppBackup");async function zJe(e){let t=await Wu.getAppBackupMetadata(e);return t.filename&&await gt.deleteFile(gt.ObjectStoreBuckets.BACKUPS,t.filename),Wu.deleteAppBackupMetadata(e)}a(zJe,"deleteAppBackup");async function d0r(e){let t=[];for(let r of e)try{await zJe(r),t.push({backupId:r,success:!0})}catch(n){t.push({backupId:r,success:!1,error:n instanceof Error?n.message:"Unknown error"})}return t}a(d0r,"deleteAppBackups");async function h0r(e,t){return Wu.fetchAppBackups(e,t)}a(h0r,"fetchAppBackups");async function WJe(e){let t=await Wu.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let{stream:r}=await gt.getReadStream(gt.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}a(WJe,"getBackupDownloadStream");async function m0r(e){let{stream:t}=await WJe(e),r=(0,qJe.join)(gt.budibaseTempDir(),Cr.newid()),n=BJe.default.createWriteStream(r);return new Promise((i,o)=>{t.on("error",o),n.on("error",o),t.pipe(n).on("close",()=>i(r))})}a(m0r,"downloadAppBackup");async function g0r(e,t,r={}){let n;try{n=await Sre({appId:e,trigger:t,timestamp:new Date().toISOString(),status:"pending",type:"backup",...r})}catch(i){if(i.status===409)return;throw i}return await gb().add({docId:n.id,docRev:n.rev,appId:e,export:{trigger:t,...r}}),await Tt.backup.appBackupTriggered(e,n.id,"backup",t,r?.name),n.id}a(g0r,"triggerAppBackup");async function y0r(e,t,r,n){let i=await yM(t),o;try{o=await Sre({appId:e,timestamp:new Date().toISOString(),status:"pending",type:"restore",createdBy:n})}catch(s){if(s?.status===409)return;throw s}return await gb().add({appId:e,docId:o.id,docRev:o.rev,import:{nameForBackup:r,backupId:t,createdBy:n}}),{restoreId:o.id,metadata:i}}a(y0r,"triggerAppRestore");async function b0r(e,t,r){let n=ne.getProdWorkspaceID(e);await W.doInWorkspaceContext(n,async()=>{let i=W.getProdWorkspaceDB();if(!await i.exists())return;let s=await i.tryGet("app_metadata");s&&(s.backupErrors||(s.backupErrors={}),s.backupErrors[t]||(s.backupErrors[t]=[]),s.backupErrors[t].push(r),await i.put(s),await Ht.workspace.invalidateWorkspaceMetadata(s.appId,s))})}a(b0r,"trackBackupError");var v0r={isEnabled:XZ,triggerAppRestore:qo(y0r),triggerAppBackup:qo(g0r),getBackupDownloadStream:qo(WJe),downloadAppBackup:qo(m0r),fetchAppBackups:qo(h0r),storeAppBackupMetadata:qo(Sre),updateBackupStatus:qo(l0r),updateRestoreStatus:qo(f0r),getAppBackup:qo(yM),updateAppBackup:qo(p0r),deleteAppBackup:qo(zJe),deleteAppBackups:qo(d0r),trackBackupError:qo(b0r)},Yu=v0r;var Tre={};oe(Tre,{init:()=>xre});var k_=te(require("fs"));async function xre(e){gb().process(async t=>{let r=t.data;try{if(r.export)return console.log("Exporting app backup:",r.appId,r.export.trigger),_0r(t,e);if(r.import)return console.log("Importing app backup:",r.appId,r.import.backupId),E0r(t,e)}catch(n){kt.logAlert(`Failed to perform backup for app ID: ${r.appId}`,n)}})}a(xre,"init");async function w0r(e){await ne.getDB(e,{skip_setup:!0}).destroy()}a(w0r,"removeExistingApp");async function GJe(e,t,r,n){let i=ne.getDevWorkspaceID(r),o=ne.getProdWorkspaceID(r),s=new Date().toISOString(),u=a(async(c,l)=>{n?.doc?await Yu.updateBackupStatus(n.doc.id,c,l?.contents,l?.filename):await Yu.storeAppBackupMetadata({appId:o,timestamp:s,trigger:e,status:c,name:n?.name,type:"backup",contents:l?.contents,createdBy:n?.createdBy},{filename:l?.filename})},"updateMetadata");try{let c=await n.processing.exportAppFn(i,{tar:!0}),l=await n.processing.statsFn(i),f=`${o}/backup-${s}.tar.gz`,p=gt.ObjectStoreBuckets.BACKUPS,d=k_.default.createReadStream(c);await gt.streamUpload({bucket:p,filename:f,stream:d,extra:{type:"application/gzip",metadata:{name:n?.name,trigger:e,timestamp:s,appId:o}}}),await u("complete",{filename:f,contents:l}),k_.default.existsSync(c)&&k_.default.rmSync(c)}catch(c){kt.logAlert("App backup error",c),await u("failed");let l=n?.doc?.id||`backup-${s}`,f=c instanceof Error?c.message:String(c);await Yu.trackBackupError(o,l,`Backup export failed: ${f}`)}}a(GJe,"runBackup");async function E0r(e,t){let r=e.data,n=r.appId,i=r.import.backupId,o=r.import.nameForBackup,s=r.import.createdBy,u=vt.getTenantIDFromWorkspaceID(n);return vt.doInTenant(u,async()=>{let c=ne.getDevWorkspaceID(n),l=`${c}_temp_${Date.now()}`,{rev:f}=await Yu.updateRestoreStatus(r.docId,r.docRev,"started");await GJe("restoring",u,n,{processing:t,createdBy:s,name:o});let p=await Yu.downloadAppBackup(i),d="complete";try{await t.importAppFn(l,ne.getDB(l),{file:{type:"application/gzip",path:p},key:p}),await w0r(c),await new ne.Replication({source:l,target:c}).replicate()}catch(h){kt.logAlert("App restore error",h),d="failed";let m=h instanceof Error?h.message:String(h);await Yu.trackBackupError(n,i,`Backup restore failed: ${m}`)}finally{try{await ne.getDB(l,{skip_setup:!0}).destroy()}catch{}}await Yu.updateRestoreStatus(r.docId,f,d),k_.default.existsSync(p)&&k_.default.rmSync(p,{force:!0})})}a(E0r,"importProcessor");async function _0r(e,t){let r=e.data,n=r.appId,i=r.export.trigger,o=r.export.name,s=vt.getTenantIDFromWorkspaceID(n);await vt.doInTenant(s,async()=>{try{let{rev:u}=await Yu.updateBackupStatus(r.docId,"started");return GJe(i,s,n,{processing:t,doc:{id:r.docId,rev:u},name:o})}catch(u){kt.logAlert("App backup error",u);let c=u instanceof Error?u.message:String(u);await Yu.trackBackupError(n,r.docId,`Backup export failed: ${c}`)}})}a(_0r,"exportProcessor");var S0r=a(async e=>{MJe(),await xre(e.processing)},"init"),Zs={...Yu,processing:Tre,init:S0r,getBackupQueue:gb};var x0r=a(async e=>{e.backups&&await Zs.init(e.backups)},"init");var eu={};oe(eu,{create:()=>R0r,find:()=>A0r,get:()=>T0r,remove:()=>I0r,update:()=>O0r});var HJe=te(require("lodash/fp/merge"));async function T0r(e){let t=vt.getGlobalDB(),r=new ne.QueryBuilder(t.name,"user");r.setIndexBuilder(ne.searchIndexes.createUserIndex),r.setLimit(e.pageSize),r.addEqual("scimInfo.isSync",!0);for(let[i,o]of Object.entries(e.filters?.equal??{}))r.addEqual(i,o);r.setSort("_id"),r.setSkip(e.skip);let n=await r.run();return{users:n.rows,total:n.totalRows}}a(T0r,"get");async function A0r(e){return await rr.getById(e)}a(A0r,"find");async function R0r(e){let t=await Gu.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new Re("User is already synched",409);e={...t,scimInfo:(0,HJe.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await Gu.save(e,{requirePassword:!1})}a(R0r,"create");async function O0r(e,t){return await Gu.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}a(O0r,"update");async function I0r(e){return await Gu.destroy(e)}a(I0r,"remove");var tI={};oe(tI,{create:()=>k0r});var VJe=te(require("lodash/fp/merge"));async function k0r(e){let t=await OZ(e.name),r;if(!t)r=(await on.save(e)).id;else{if(t.scimInfo?.isSync)throw new Re("Group is already synched",409);r=t._id,t.users&&(await on.removeUsers(r,t.users.map(i=>i._id)),delete t.users),t.scimInfo=(0,VJe.default)(t.scimInfo,e.scimInfo),await on.save(t)}return await on.get(r)}a(k0r,"create");var C_={};oe(C_,{logRequest:()=>C0r,logResponse:()=>D0r});async function C0r(e){kt.logWarn("SCIM request log",e)}a(C0r,"logRequest");async function D0r(e){kt.logWarn("SCIM response error",e)}a(D0r,"logResponse");var wo={};oe(wo,{requireFeature:()=>P0r,requireFeatures:()=>N0r});var P0r=a(e=>async(t,r)=>{await aj(e),await r()},"requireFeature"),N0r=a((...e)=>async(t,r)=>{await JZ(e),await r()},"requireFeatures");var KJe=a(async(e,t)=>(V.DISABLE_SCIM_CALLS||await C_.logRequest({...e.request.toJSON(),body:e.request.body}),await W.doInScimContext(async()=>{let r=await t();return await C_.logResponse({...e.response.toJSON(),body:e.response.body}),r})),"doInScimContext");var QJe=a(async(e,t)=>{await ree(),await t()},"requireSCIM");var bM=a(e=>Are(rr.getById,e,!0),"scimUserOnly"),vM=a(e=>Are(Xn.get,e,!0),"scimGroupOnly"),wM=a(e=>Are(Xn.get,e,!1),"internalGroupOnly");function Are(e,t,r){return async(n,i)=>{let o=n.params[t];return typeof o!="string"&&n.throw(404),!!(await e(o)).scimInfo?.isSync!==r&&n.throw(404),i()}}a(Are,"scimSyncChecks");var L0r=require("dd-trace");var nXe=te(require("@koa/router")),vb=te(require("joi"));async function bb(e,t){t||e.throw(400,"App ID missing"),await bO.workspaceExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}a(bb,"checkAppID");async function YJe(e){let t=e.params.appId;await bb(e,t);let{body:r}=e.request,n=e.user?._id,i=await Zs.triggerAppBackup(t,"manual",{name:r.name,createdBy:n});i||e.throw(500,"Unable to start backup."),e.body={backupId:i,message:"Backup triggered - process starting."}}a(YJe,"manualBackup");async function JJe(e){let t=e.params.appId;await bb(e,t);let r=e.params.backupId,n=e.request.body.name,i=await Zs.triggerAppRestore(t,r,n,e.user?._id);i||e.throw(500,"Unable to start restore."),await Tt.backup.appBackupRestored(i.metadata),e.body={restoreId:i?.restoreId,message:"Restore triggered - process starting."}}a(JJe,"importBackup");async function XJe(e){let t=e.params.appId;await bb(e,t);let r=e.params.backupId;await Zs.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}a(XJe,"deleteBackup");async function ZJe(e){let t=W.getWorkspaceId();await bb(e,t);let{backupIds:r}=e.request.body;(!Array.isArray(r)||r.length===0)&&e.throw(400,"backupIds must be a non-empty array");let n=await Zs.deleteAppBackups(r),i=n.filter(s=>s.success).length,o=n.length-i;e.body={message:`${i} backups deleted successfully${o>0?`, ${o} failed`:""}.`,results:n,successCount:i,failureCount:o}}a(ZJe,"deleteBackups");async function eXe(e){let t=e.params.appId;await bb(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(Tm).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await Zs.fetchAppBackups(t,{paginate:!0,...r})}a(eXe,"fetchBackups");async function tXe(e){let t=e.params.appId;await bb(e,t);let r=e.params.backupId,n=e.request.body;e.body=await Zs.updateAppBackup(r,n.name)}a(tXe,"updateBackup");async function rXe(e){let t=e.params.appId;await bb(e,t);let r=e.params.backupId,{metadata:n,stream:i}=await Zs.getBackupDownloadStream(r);e.attachment(`backup-${n.timestamp}.tar.gz`),e.body=i}a(rXe,"downloadBackup");var j0r=new nXe.default;function M0r(){return fr.joiValidator.body(vb.default.object({trigger:vb.default.string().valid(...Object.values(Tm)),type:vb.default.string().valid(...Object.values(mS)),startDate:vb.default.date(),endDate:vb.default.date(),page:vb.default.string()}))}a(M0r,"validateBackupSearch");j0r.post("/api/apps/:appId/backups",fr.builderOrAdmin,YJe).post("/api/apps/:appId/backups/search",fr.builderOrAdmin,M0r(),eXe).get("/api/apps/:appId/backups/:backupId/file",fr.builderOrAdmin,rXe).patch("/api/apps/:appId/backups/:backupId",fr.builderOrAdmin,tXe).delete("/api/apps/:appId/backups/:backupId",fr.builderOrAdmin,XJe).delete("/api/apps/:appId/backups",fr.builderOrAdmin,ZJe).post("/api/apps/:appId/backups/:backupId/import",fr.builderOrAdmin,JJe);async function iXe(e){let t=e.request.body,r=await mb.fetch(t);await Tt.auditLog.filtered(t),e.body=r}a(iXe,"search");async function aXe(e){let t=e.request.body,{stream:r}=mb.download(t);await Tt.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}a(aXe,"download");async function oXe(e){e.body={events:mb.definitions()}}a(oXe,"definitions");var uXe=te(require("@koa/router")),Ju=te(require("joi"));function sXe(){return fr.joiValidator.body(Ju.default.object({userIds:Ju.default.array().items(Ju.default.string()).optional(),appIds:Ju.default.array().items(Ju.default.string()).optional(),events:Ju.default.array().items(Ju.default.string().valid(...Object.values(Er))).optional(),startDate:Ju.default.string().optional().allow(""),endDate:Ju.default.string().optional().allow(""),fullSearch:Ju.default.string().optional().allow(""),bookmark:Ju.default.number()}))}a(sXe,"buildAuditLogSearchValidator");var q0r=new uXe.default;q0r.post("/api/global/auditlogs/search",fr.adminOnly,sXe(),iXe).get("/api/global/auditlogs/download",fr.adminOnly,AU.querystringToBody,sXe(),aXe).get("/api/global/auditlogs/definitions",fr.adminOnly,oXe);async function cXe(e){e.body={encryptionKeyAvailable:rl.isEncryptionKeyAvailable()}}a(cXe,"status");async function lXe(e){e.body={variables:await rl.fetch()}}a(lXe,"fetch");async function fXe(e){let{name:t,production:r,development:n}=e.request.body;await rl.update(t,{production:r,development:n});let i=["production"];r!==n&&i.push("development"),await Tt.environmentVariable.created(t,i),e.body={message:`Environment variable "${t}" created.`}}a(fXe,"create");async function pXe(e){let{production:t,development:r}=e.request.body,n=e.params.varName;await rl.update(n,{production:t,development:r}),e.body={message:`Environment variable "${n}" updated.`}}a(pXe,"update");async function dXe(e){let t=e.params.varName;await rl.remove(t),await Tt.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}a(dXe,"destroy");var mXe=te(require("@koa/router")),rI=te(require("joi"));var z0r=new mXe.default;function hXe(){return fr.joiValidator.body(rI.default.object({name:rI.default.string().optional(),production:rI.default.string().required(),development:rI.default.string().required()}))}a(hXe,"buildEnvVarUpdateValidator");z0r.get("/api/env/variables/status",fr.builderOrAdmin,cXe).get("/api/env/variables",fr.builderOrAdmin,lXe).post("/api/env/variables",fr.builderOrAdmin,hXe(),fXe).patch("/api/env/variables/:varName",fr.builderOrAdmin,hXe(),pXe).delete("/api/env/variables/:varName",fr.builderOrAdmin,dXe);var xXe=te(require("@koa/router")),zo=te(require("joi"));async function gXe(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let n=await f_(t._id);t.roles=n.roles,t.scimInfo=n.scimInfo}let r=await lj(t);e.body={_id:r.id,_rev:r.rev}}a(gXe,"save");async function yXe(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of users to add or to remove");let i,o;r&&(i=await fj(t,r)),n&&(o=await dee(t,n)),e.body={added:i,removed:o}}a(yXe,"updateGroupUsers");async function bXe(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of objects, with appId and roleId to add or remove"),e.body=await hee(t,{appsToAdd:r,appsToRemove:n})}a(bXe,"updateGroupApps");async function vXe(e){e.body={data:await _O()}}a(vXe,"fetch");async function wXe(e){let{groupId:t,rev:r}=e.params;try{await pee(t,r),e.body={message:"Group deleted successfully"}}catch(n){e.throw(n.status,n)}}a(wXe,"destroy");async function EXe(e){try{e.body=await f_(e.params.groupId)}catch(t){e.throw(t.status,t)}}a(EXe,"find");async function _Xe(e){let{pageSize:t=10,bookmark:r,emailSearch:n}=e.request.query,i=e.params.groupId,o={limit:t+1},s=await GU(i,{...o,emailSearch:n,bookmark:r}),u=n?s[t]?.email:s[t]?._id,c=!!u;e.body={users:s.slice(0,t),bookmark:u,hasNextPage:c}}a(_Xe,"searchUsers");async function SXe(e){let{groupId:t}=e.params,{csvContent:r}=e.request.body;(r===void 0||r.trim().length===0)&&e.throw(400,"CSV is empty");let n=await GR.jsonFromCsvString(r,{allowSingleColumn:!0});(!n||n.length===0)&&e.throw(400,"CSV file is invalid");let o=Object.keys(n[0]).find(p=>/^(email|e-mail|email address|mail|e_mail)$/i.test(p.trim()));o||e.throw(400,"CSV file must contain an email column");let s=Array.from(new Set(n.map(p=>p[o]).filter(p=>p&&typeof p=="string"&&p.trim().length>0).map(p=>p.trim())));s.length===0&&e.throw(400,"No valid email addresses found in CSV");try{await f_(t)}catch(p){if(p.status===404)e.throw(404,"Group not found");else throw p}let u=[],c=[],l=[],f=await Promise.all(s.map(p=>Gu.getUserByEmail(p)));for(let p of s){let d=f.find(h=>h?.email===p);d?(u.push({_id:d._id,email:d.email}),l.push(d._id)):c.push({email:p,reason:"User not found"})}l.length>0&&await fj(t,l),e.body={added:u,skipped:c}}a(SXe,"bulkAddUsersFromCsv");var G0r=new xXe.default;function H0r(){return fr.joiValidator.body(zo.default.object({_id:zo.default.string().optional(),_rev:zo.default.string().optional(),color:zo.default.string().required(),icon:zo.default.string().required(),name:zo.default.string().trim().required().max(50),role:zo.default.string().optional(),users:zo.default.array().optional(),apps:zo.default.array().optional(),roles:zo.default.object().optional(),createdAt:zo.default.string().optional(),updatedAt:zo.default.string().optional()}).required())}a(H0r,"buildGroupSaveValidation");G0r.post("/api/global/groups",fr.adminOnly,wo.requireFeature("userGroups"),H0r(),gXe).get("/api/global/groups",wo.requireFeature("userGroups"),vXe).delete("/api/global/groups/:groupId/:rev",wo.requireFeature("userGroups"),fr.adminOnly,wM("groupId"),wXe).get("/api/global/groups/:groupId",wo.requireFeature("userGroups"),fr.builderOrAdmin,EXe).get("/api/global/groups/:groupId/users",wo.requireFeature("userGroups"),fr.builderOrAdmin,_Xe).post("/api/global/groups/:groupId/users",fr.adminOnly,wo.requireFeature("userGroups"),wM("groupId"),yXe).post("/api/global/groups/:groupId/users/bulk",fr.adminOnly,wo.requireFeature("userGroups"),wM("groupId"),fr.joiValidator.body(zo.default.object({csvContent:zo.default.string().required()}).required()),SXe).post("/api/global/groups/:groupId/apps",fr.builderOrAdmin,wo.requireFeature("userGroups"),bXe);var YXe=te(require("@koa/router"));var RM=te(Vre());function jXe(e,t){let r=e.request.query[t];if(r!==void 0)return+r}a(jXe,"tryGetQueryAsNumber");var MXe=a(async e=>{let t=jXe(e,"pageSize")??20,r=jXe(e,"startIndex"),n;e.request.query.filter&&(n=fa.user.userFilters(e.request.query.filter));let i=await eu.get({pageSize:t,skip:r,filters:n});e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:i.total,Resources:i.users.map(fa.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},"get"),BXe=a(async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await eu.find(t);e.body=fa.user.toScimUserResponse(r)},"find"),qXe=a(async e=>{let t=fa.user.fromScimUser(e.request.body);try{let r=await eu.create(t);e.body=fa.user.toScimUserResponse(r)}catch(r){throw r instanceof gp&&e.throw(409,"Email already in use"),r}},"create");function mxr(e){let t=e.Operations.find(r=>(r.op==="Replace"||r.op==="replace")&&r.path==="active");return t?t.value===!1||t.value?.toLowerCase?.()==="false":!1}a(mxr,"isDeactivation");var $Xe=a(async e=>{let t=await eu.find(e.params.id);t||e.throw(404);let r=fa.user.toScimUserResponse(t),n=e.request.body;try{(0,RM.patchBodyValidation)(n)}catch{}if(mxr(n))return Kre(e);let i;try{i=(0,RM.scimPatch)(r,n.Operations)}catch{}i||e.throw(500);let o=fa.user.fromScimUser(i);await eu.update(o,{allowChangingEmail:!0}),e.body=fa.user.toScimUserResponse(o)},"update"),Kre=a(async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await eu.remove(t),e.status=204},"remove");var zXe=te(require("lodash/groupBy"));var OM=te(Vre());var IM=te(AM());function WXe(e,t){for(let r of t.split(","))delete e[r]}a(WXe,"cleanResponse");var GXe=a(async e=>{let r=(await on.fetch()).filter(o=>o.scimInfo?.isSync).map(fa.group.toScimGroupResponse),{filter:n,excludedAttributes:i}=e.request.query;if(n){let o=(0,IM.filter)((0,IM.parse)(n));r=r.filter(o)}i&&r.forEach(o=>{WXe(o,i)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},"get"),HXe=a(async e=>{let t=fa.group.fromScimGroup(e.request.body),r=await tI.create(t);e.body=fa.group.toScimGroupResponse(r)},"create"),VXe=a(async e=>{let{id:t}=e.params,r=await on.get(t),n=fa.group.toScimGroupResponse(r),{excludedAttributes:i}=e.request.query;i&&WXe(n,i),e.body=n},"find"),KXe=a(async e=>{let{id:t}=e.params,r=await on.get(t);await on.remove(t,r._rev),e.status=204},"remove"),QXe=a(async e=>{let{id:t}=e.params,r=await on.get(t),n=fa.group.toScimGroupResponse(r),i=e.request.body;try{(0,OM.patchBodyValidation)(i)}catch{e.throw(400)}let{true:o,false:s}=(0,zXe.default)(i.Operations,u=>u.path==="members");if(s?.length){let u=(0,OM.scimPatch)(n,s);u||e.throw(500);let c={...fa.group.fromScimGroup(u),_rev:r._rev};await on.save(c)}if(o?.length){let u=[],c=[];for(let{op:l,value:f}of o)switch(l){case"add":case"Add":for(let p of f)u.push(await eu.find(p.value));break;case"remove":case"Remove":for(let p of f)c.push(await eu.find(p.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:$t.unreachable(l)}u.length&&await on.addUsers(t,u.map(l=>l._id)),c.length&&await on.removeUsers(t,c.map(l=>l._id))}e.body=fa.group.toScimGroupResponse(await on.get(t))},"update");var Xu=new YXe.default({prefix:"/api/global/scim/v2"});Xu.use(QJe);Xu.use(KJe);Xu.get("/users",MXe);Xu.get("/users/:id",bM("id"),BXe);Xu.post("/users",qXe);Xu.patch("/users/:id",bM("id"),$Xe);Xu.delete("/users/:id",bM("id"),Kre);Xu.get("/groups",GXe);Xu.post("/groups",wo.requireFeature("userGroups"),HXe);Xu.get("/groups/:id",wo.requireFeature("userGroups"),vM("id"),VXe);Xu.delete("/groups/:id",wo.requireFeature("userGroups"),vM("id"),KXe);Xu.patch("/groups/:id",wo.requireFeature("userGroups"),vM("id"),QXe);var fa={};oe(fa,{group:()=>Yre,user:()=>Qre});var Qre={};oe(Qre,{fromScimUser:()=>Sxr,toScimUserResponse:()=>wxr,userFilters:()=>xxr});var JXe=te(AM());var{unreachable:vxr}=$t,wxr=a(e=>{let{isSync:t,roles:r,...n}=e.scimInfo||{},i={...n,schemas:["urn:ietf:params:scim:schemas:core:2.0:User"],id:e._id,meta:{resourceType:"User",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},active:e.status==="active"};return(e.firstName||e.lastName)&&(i.name={formatted:[e.firstName,e.lastName].filter(o=>o).join(" "),familyName:e.lastName,givenName:e.firstName}),i},"toScimUserResponse"),Exr=a(e=>!!e?.id,"isScimUserResponse");function _xr(e){if(Cr.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}a(_xr,"tryGetEmail");var Sxr=a(e=>{let t=Exr(e)?e:void 0,r=_xr(e);if(!r)throw new Error("Email is required");let n;switch(e.active){case"True":case"true":case!0:n=!0;break;case"False":case"false":case!1:n=!1;break;default:vxr(e.active)}let i,o;return e.name?.givenName?(i=e.name?.givenName,o=e.name?.familyName):i=e.displayName,{tenantId:"",_id:t?.id,userId:t?.id,email:r,firstName:i,lastName:o,scimInfo:{...e,isSync:!0},roles:{},status:n?"active":"inactive",createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},"fromScimUser"),xxr=a(e=>{let t={equal:{}},r=(0,JXe.parse)(e);function n(i){switch(i.op){case"eq":{let o=i.attrPath,s;switch(o){case"emails.value":s="email";break;default:s=`scimInfo.${o}`}t.equal[s]=i.compValue;break}case"and":for(let o of i.filters)n(o);break;default:console.warn("Filter not handled",{filter:i})}}return a(n,"parseFilters"),n(r),t},"userFilters");var Yre={};oe(Yre,{fromScimGroup:()=>Rxr,toScimGroupResponse:()=>Txr});var Txr=a(e=>({schemas:["urn:ietf:params:scim:schemas:core:2.0:Group"],id:e._id,externalId:e.scimInfo.externalId,meta:{resourceType:"Group",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},displayName:e.name,members:e.users?.map(t=>({value:t._id}))}),"toScimGroupResponse"),Axr=a(e=>!!e?.id,"isScimGroup"),Rxr=a(e=>{let t=Axr(e)?e:void 0;return{_id:t?.id,name:e.displayName,scimInfo:{externalId:e.externalId,isSync:!0},icon:"UserGroup",color:"var(--spectrum-global-color-blue-600)",createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},"fromScimGroup");var ci={};oe(ci,{LLM:()=>gf,LLMRequest:()=>ki,TableGeneration:()=>vne,agentHistoryTitleSystemPrompt:()=>jxr,agentSystemPrompt:()=>Uxr,aiColumnSchemas:()=>yne,aiTableResponseToTableSchema:()=>dne,appendAIColumns:()=>hne,classifyText:()=>Zre,cleanData:()=>ene,extractFileData:()=>Pxr,generateAIColumns:()=>fne,generateCode:()=>Fxr,generateCronExpression:()=>tne,generateData:()=>pne,generateJs:()=>ane,generateSQL:()=>Lxr,generateTables:()=>lne,generationStructure:()=>gne,getLLM:()=>lI,getLLMConfig:()=>cne,getLLMOrThrow:()=>iZe,normalizeContentType:()=>Jre,parseResponseFormat:()=>CM,sanitiseToolName:()=>Oxr,searchWeb:()=>ine,sentimentAnalysis:()=>nne,summarizeText:()=>kM,tableDataStructuredOutput:()=>bne,translate:()=>rne});function Oxr(e){if(e.length>64)throw new Error("Tool name must be under 64 characters long");return e.replace(/[^a-zA-Z0-9_-]/g,"_")}a(Oxr,"sanitiseToolName");function Jre(e){return e?e.includes("/")?e:{pdf:"application/pdf",jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png"}[e.toLowerCase()]||"application/octet-stream":"application/octet-stream"}a(Jre,"normalizeContentType");var DM=te(require("openai"));var lm=te(require("dd-trace"));function Xre(e,t){return t.map(r=>e[r]).join(" ")}a(Xre,"extractTextFromColumns");var gf=class{static{a(this,"LLM")}constructor({model:t,apiKey:r,maxTokens:n}){this._model=t,this._apiKey=r,this._maxTokens=n??parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"1000")}get model(){return this._model}get apiKey(){return this._apiKey}get maxTokens(){return this._maxTokens}async prompt(t){return await lm.default.trace("prompt",async()=>{let r=typeof t=="string"?new ki().addUserMessage(t):t,{messages:n,tokensUsed:i}=await lm.default.trace("chatCompletion",()=>this.chatCompletion(r));return!n||n.length===0?{message:"",tokensUsed:i}:{message:n[n.length-1].content||"",tokensUsed:i}})}async chat(t){return await lm.default.trace("chat",async()=>await this.chatCompletion(t))}async*chatStream(t){yield*this.chatCompletionStream(t)}async summarizeText(t){return lm.default.trace("summarizeText",()=>this.prompt(kM(t)))}async generateCronExpression(t){return lm.default.trace("generateCronExpression",()=>this.prompt(tne(t)))}async operation(t,r){return lm.default.trace("operation",n=>{n.addTags({operation:t.operation,rowId:r.id});let i=this.promptForOperation(t,r);return this.prompt(i)})}promptForOperation(t,r){let{operation:n,column:i,columns:o,language:s,categories:u,prompt:c}=t;switch(n){case"SUMMARISE_TEXT":return kM(Xre(r,o));case"CLEAN_DATA":return ene(r[i]);case"TRANSLATE":return rne(r[i],s);case"CATEGORISE_TEXT":if(!u)throw Error("No categories provided for categorise text operation. Please provide categories.");return Zre(Xre(r,o),u.split(","));case"SENTIMENT_ANALYSIS":return nne(r[i]);case"PROMPT":return c;case"SEARCH_WEB":return ine(Xre(r,o));default:throw $t.unreachable(n)}}async generateJs(t,r){return await lm.default.trace("generateJs",async()=>{let{bindings:n=[],snippets:i=[]}=r||{};return await this.prompt(ane(n,i).addUserMessage(t))})}};var one=require("openai/helpers/zod");var ZXe=(n=>(n.GPT_5_MINI="gpt-5-mini",n.GPT_5="gpt-5",n.GPT_5_NANO="gpt-5-nano",n))(ZXe||{});function CM(e){if(e)return e==="text"?{type:"text"}:e==="json"?{type:"json_object"}:e}a(CM,"parseResponseFormat");function XXe(e){if(!e)return 0;let t=e.prompt_tokens;return e.completion_tokens*3+t}a(XXe,"calculateBudibaseAICredits");var Zu=class extends gf{constructor(r){super(r);this.client=this.getClient(r)}static{a(this,"OpenAI")}getClient(r){if(!r.apiKey)throw new Error("No OpenAI API key found");return new DM.default({apiKey:r.apiKey})}async uploadFile(r,n,i){let o=Jre(i);if(ok.includes(o.toLowerCase())){let c;if(Buffer.isBuffer(r))c=r;else{let f=[];for await(let p of r)f.push(new Uint8Array(p));c=Buffer.concat(f)}let l=c.toString("base64");return`data:${o};base64,${l}`}let s=await(0,DM.toFile)(r,n);return(await this.client.files.create({file:s,purpose:"assistants"})).id}async chatCompletion(r){let n={model:this.model,messages:r.messages,max_completion_tokens:this._maxTokens,response_format:CM(r.format)};Object.values(ZXe).includes(this.model)&&(n.verbosity="low",n.reasoning_effort="minimal"),r.tools&&r.tools.length>0&&(n.tool_choice="auto",n.tools=r.tools.map(one.zodFunction));let i=await this.client.chat.completions.create(n),o=i?.choices?.[0]?.message;if(o?.tool_calls){r.addMessage(o);let s=[];for(let u of o.tool_calls){if(u.type!=="function"||!u.function){console.warn(`[OPENAI TOOL WARN] Unsupported tool call type: ${u.type}`);continue}let c=u.function.name,l=r.findTool(c);if(!l)throw new Error(`Tool ${c} not found in prompt tools`);let f=JSON.parse(u.function.arguments);s.push(l.handler(f).then(p=>({role:"tool",tool_call_id:u.id,content:p})).catch(p=>(console.error(`[OPENAI TOOL ERROR] Tool ${c} failed in OpenAI handler:`,p),{role:"tool",tool_call_id:u.id,content:`Error: ${p.message}`})))}return r.addMessages(await Promise.all(s)),this.chatCompletion(r)}else{if(o?.content)return{messages:[...r.messages,{role:o.role,content:o.content}],tokensUsed:XXe(i.usage)};throw new Error("No response found")}}async*chatCompletionStream(r){let n={model:this.model,messages:r.messages,max_tokens:this.maxTokens,response_format:CM(r.format),stream:!0};r.tools&&r.tools.length>0&&(n.tool_choice="auto",n.tools=r.tools.map(one.zodFunction));try{let i=await this.client.chat.completions.create(n),o=null,s="",u=null;for await(let l of i){let f=l?.choices?.[0]?.delta;if(f){if(f.content&&(s+=f.content,yield{type:"content",content:f.content}),f.tool_calls&&f.tool_calls.length>0){let p=f.tool_calls[0];p.id?(o={id:p.id,name:p.function?.name||"",arguments:p.function?.arguments||""},yield{type:"tool_call_start",toolCall:{id:o.id,name:o.name,arguments:o.arguments}}):o&&p.function?.arguments&&(o.arguments+=p.function.arguments,yield{type:"tool_call_start",toolCall:{id:o.id,name:o.name,arguments:o.arguments}})}l.usage&&(u=l.usage)}}let c=u?XXe(u):0;if(o){r.addMessage({role:"assistant",content:"",tool_calls:[{id:o.id,type:"function",function:{name:o.name,arguments:o.arguments}}]});let l=r.findTool(o.name);if(l)try{let f=JSON.parse(o.arguments),p=await l.handler(f);yield{type:"tool_call_result",toolResult:{id:o.id,result:p}},r.addMessage({role:"tool",tool_call_id:o.id,content:p}),yield*this.chatCompletionStream(r);return}catch(f){yield{type:"tool_call_result",toolResult:{id:o.id,result:`Error: ${f.message}`,error:f.message}},r.addMessage({role:"tool",tool_call_id:o.id,content:`Error: ${f.message}`}),yield*this.chatCompletionStream(r);return}else{let f=`Tool '${o.name}' not found`;yield{type:"tool_call_result",toolResult:{id:o.id,result:f,error:f}},r.addMessage({role:"tool",tool_call_id:o.id,content:f}),yield*this.chatCompletionStream(r);return}}s&&r.addMessage({role:"assistant",content:s}),yield{type:"done",messages:r.messages,tokensUsed:c}}catch(i){yield{type:"error",content:i.message}}}};var sne=require("dd-trace");var PM=class extends gf{static{a(this,"BudibaseAI")}async prompt(t){let r=await super.prompt(t);return r.tokensUsed&&await uj(r.tokensUsed),r}async chat(t){let r=await super.chat(t);return r.tokensUsed&&await uj(r.tokensUsed),r}async uploadFile(t,r,n){return V.SELF_HOSTED?this.uploadFileSelfHost(t,r,n):this.uploadFileCloud(t,r,n)}async uploadFileCloud(t,r,n){return new Zu({apiKey:V.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).uploadFile(t,r,n)}async uploadFileSelfHost(t,r,n){let i;if(Buffer.isBuffer(t))i=t;else{let f=[];for await(let p of t)f.push(new Uint8Array(p));i=Buffer.concat(f)}let o=i.toString("base64");if(n&&ok.includes(n.toLowerCase()))return`data:image/jpeg;base64,${o}`;if(!V.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(!this._apiKey){let f=await nj();if(!f)throw new Error("No license key found");this._apiKey=f}let s=`${V.BUDICLOUD_URL}/api/ai/upload-file`,u={method:"POST",headers:{"Content-Type":"application/json",[gr.Header.LICENSE_KEY]:this._apiKey},body:JSON.stringify({data:o,filename:r,contentType:n})};console.debug("[BudibaseAI] uploadFileSelfHost - Making network call",{url:s,method:u.method,headers:u.headers,bodyKeys:["data","filename","contentType"],filename:r,contentType:n});let c=await fetch(s,u);if(console.debug("[BudibaseAI] uploadFileSelfHost - Network response",{url:s,status:c.status,statusText:c.statusText,ok:c.ok}),!c.ok)throw await Re.fromResponse(c);return(await c.json()).fileId}async chatCompletion(t){return V.SELF_HOSTED?this.chatCompletionSelfHost(t):this.chatCompletionCloud(t)}async chatCompletionCloud(t){return await sne.tracer.trace("chatCompletionCloud",async()=>await new Zu({apiKey:V.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).chatCompletion(t))}async chatCompletionSelfHost(t){return await sne.tracer.trace("chatCompletionSelfHost",async r=>{if(!V.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(r.addTags({budicloudUrl:V.BUDICLOUD_URL}),!this._apiKey){let c=await nj();if(!c)throw new Error("No license key found");this._apiKey=c,r.addTags({licenseKey:this._apiKey})}let n={messages:t.messages,format:t.format,useTools:t.tools.length>0},i=`${V.BUDICLOUD_URL}/api/ai/chat`,o={method:"POST",headers:{"Content-Type":"application/json",[gr.Header.LICENSE_KEY]:this._apiKey},body:JSON.stringify(n)};console.debug("[BudibaseAI] chatCompletionSelfHost - Making network call",{url:i,method:o.method,headers:o.headers,bodyKeys:Object.keys(n),messagesCount:t.messages.length,useTools:n.useTools,format:n.format});let s=await fetch(i,o);if(console.debug("[BudibaseAI] chatCompletionSelfHost - Network response",{url:i,status:s.status,statusText:s.statusText,ok:s.ok}),!s.ok)throw await Re.fromResponse(s);let u=await s.json();return console.debug("[BudibaseAI] chatCompletionSelfHost - Response data",{url:i,tokensUsed:u.tokensUsed,messagesCount:u.messages?.length}),u})}async*chatCompletionStream(t){V.SELF_HOSTED?yield*this.chatCompletionStreamSelfHost(t):yield*this.chatCompletionStreamCloud(t)}async*chatCompletionStreamCloud(t){yield*new Zu({apiKey:V.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).chatCompletionStream(t)}async*chatCompletionStreamSelfHost(t){console.debug("[BudibaseAI] chatCompletionStreamSelfHost - Starting streaming (fallback to non-streaming)",{messagesCount:t.messages.length,toolsCount:t.tools.length});try{let r=await this.chatCompletionSelfHost(t);if(console.debug("[BudibaseAI] chatCompletionStreamSelfHost - Yielding response chunks",{responseMessagesCount:r.messages.length,tokensUsed:r.tokensUsed}),r.messages.length>0){let n=r.messages[r.messages.length-1];n.content&&(yield{type:"content",content:n.content})}yield{type:"done",messages:r.messages,tokensUsed:r.tokensUsed}}catch(r){console.debug("[BudibaseAI] chatCompletionStreamSelfHost - Error occurred",{error:r.message}),yield{type:"error",content:r.message}}}};var cI=require("dd-trace");var une=te(require("@anthropic-ai/sdk"));function Ixr(e){if(!e)return 0;let t=e.input_tokens;return e.output_tokens*3+t}a(Ixr,"calculateBudibaseAICredits");var NM=class extends gf{constructor(r){super(r);this.client=new une.default({apiKey:r.apiKey})}static{a(this,"Anthropic")}firstTextBlock(r){for(let n of r.content)if(n.type==="text")return n.text}async uploadFile(r,n,i){throw new Error("File upload not supported for this LLM provider")}async chatCompletion(r){try{let n=await this.client.messages.create({model:this.model,messages:r.messages.map(({content:o})=>{if(o==null)return{role:"user",content:""};if(typeof o=="string")return{role:"user",content:o};let s="";for(let u of o)u.type==="text"?s+=u.text:["image_url","input_audio","file"].includes(u.type);return{role:"user",content:s}}),max_tokens:this.maxTokens}),i=this.firstTextBlock(n)||"";return{messages:[...r.messages,{role:"assistant",content:i}],tokensUsed:Ixr(n.usage)}}catch(n){throw n instanceof une.default.APIError&&console.error(`Anthropic Prompt failed with error ${n.name} and status: ${n.status}`),n}}async*chatCompletionStream(r){try{let n=await this.chatCompletion(r);if(n.messages.length>0){let i=n.messages[n.messages.length-1];i.content&&(yield{type:"content",content:i.content})}yield{type:"done",messages:n.messages,tokensUsed:n.tokensUsed}}catch(n){yield{type:"error",content:n.message}}}};var tZe=require("zod"),rZe=require("openai/helpers/zod");var eZe=require("openai");var LM=class extends Zu{static{a(this,"AzureOpenAI")}getClient(t){if(!t.apiKey)throw new Error("No Azure OpenAI API key found");if(!t.model)throw new Error("No Azure OpenAI model specified");return new eZe.AzureOpenAI({apiKey:t.apiKey,apiVersion:"2024-10-01-preview",baseURL:t.baseUrl})}};var nZe="gpt-5-mini",kxr={OpenAI:Zu,TogetherAI:Zu,AzureOpenAI:LM,Custom:Zu,Anthropic:NM,BudibaseAI:PM};async function Cxr(){return await cI.tracer.trace("getAIConfig",async e=>{let t={type:"ai",config:{}};if(!W.isSelfHostUsingCloud()){let n=await ja.getAIConfig();n&&(t=n)}await iee(t);let r=Object.values(t.config).find(n=>n.active&&n.isDefault);if(!r){e.addTags({enabled:!1,reason:"no provider found"});return}return e.addTags({enabled:!0}),{provider:r.provider,model:r.defaultModel||nZe,apiKey:r.apiKey,baseUrl:r.baseUrl}})}a(Cxr,"getAIConfig");async function Dxr(){return cI.tracer.trace("getSelfHostOpenAIKeyConfig",e=>{if(!V.SELF_HOSTED){e.addTags({enabled:!1,reason:"not self host"});return}if(!V.OPENAI_API_KEY){e.addTags({enabled:!1,reason:"no OPENAI_API_KEY"});return}return e.addTags({enabled:!0}),{provider:"OpenAI",model:nZe,apiKey:V.OPENAI_API_KEY}})}a(Dxr,"getSelfHostOpenAIKeyConfig");async function cne(){return cI.tracer.trace("getLLMConfig",async()=>await Cxr()||await Dxr())}a(cne,"getLLMConfig");async function lI(e){return await cI.tracer.trace("getLLM",async t=>{let{model:r,maxTokens:n}=e||{},i=await cne();if(!i){t.addTags({enabled:!1,reason:"no config found"});return}r&&(i.model=r),n&&(i.maxTokens=n);let o=kxr[i.provider];if(!o){t.addTags({enabled:!1,reason:"no provider found",provider:i.provider});return}return new o(i)})}a(lI,"getLLM");async function iZe(){let e=await lI();if(!e)throw new Re("No available LLM configurations",500);return e}a(iZe,"getLLMOrThrow");var ki=class e{constructor(){this.messages=[];this.tools=[]}static{a(this,"LLMRequest")}addTool(t){return this.tools.push(t),this}addTools(t){return this.tools.push(...t),this}findTool(t){return this.tools.find(r=>r.name===t)}withFormat(t){return t instanceof tZe.z.ZodType?this.format=(0,rZe.zodResponseFormat)(t,"key"):this.format=t,this}addMessage(t){return this.messages.push(t),this}addMessages(t){return this.messages.push(...t),this}addUserMessage(t){return this.messages.push({role:"user",content:t}),this}addSystemMessage(t){return this.messages.push({role:"system",content:t}),this}static fromRequest(t){let r=new e;return t.messages&&r.addMessages(t.messages),t.format&&r.withFormat(t.format),r}};var ed=require("zod");function kM(e,t){let r=`Summarize this text:
588
588
  ${e}`,n="";if(t)switch(t){case"short":n="In 1-2 concise sentences, ";break;case"medium":n="In 2-3 paragraphs, ";break;case"long":n="In multiple detailed paragraphs, ";break}return new ki().addUserMessage(`${n}${r}.
589
589
  Only return the summary.`)}a(kM,"summarizeText");function Pxr(e,t){let r=["You are a data extraction assistant.","Extract data from the attached document/image that matches the provided schema.","The schema defines the structure where values like 'string', 'number', 'boolean' indicate the expected data types.","Extract all items that match the schema from the document.","Return the data in json format","If no matching data is found, return an empty data array."].join(`
590
590